\" these are only for typesetting manuals for Usenix distribution
\" differences: page numbers even on page 1, MH = Bell Labs
\" default line length (and title length) 6.5i instead of 6i.
ds // /usr/lib/ms/
       \" IZ - initialize (before text begins)
de IZ
nr FM 1i
nr YY -\\n(FMu
nr XX 0 1
nr IP 0
nr PI 5n
nr QI 5n
nr FI 2n
nr I0 \\n(PIu
if n .nr PD 1v
if t .nr PD .3v
if n .nr DD 1v
if t .nr DD .5v
nr PS 10
nr VS 12
ps \\n(PS
vs \\n(VSp
nr ML 3v
nr IR 0
nr TB 0
nr SJ \\n(.j
nr PO \\n(.o
nr LL 6.5i
ll \\n(LLu
lt 6.5i
ev 1
nr FL 5.5i
ll \\n(FLu
ps 8
vs 10p
ev
ds CH - \\\\n(PN -
if n .ds CF \\*(DY
wh 0 NP
wh -\\n(FMu FO
ch FO 16i
wh -\\n(FMu FX
ch FO -\\n(FMu
wh -\\n(FMu/2u BT
.
       \" RT - reset (at new paragraph)
de RT
if !\\n(1T .BG
if !\\n(IK .if !\\n(IF .if !\\n(IX .if !\\n(BE .di
if \\n(TM .ls 2
ce 0
ul 0
if \\n(QP \{\
       ll +\\n(QIu
       in -\\n(QIu
       nr QP -1
\}
if \\n(NX<=1 .if !\\n(AJ .ll \\n(LLu
if !\\n(IF \{\
       ps \\n(PS
       if \\n(VS>=40 .vs \\n(VSu
       if \\n(VS<=39 .vs \\n(VSp
\}
if !\\n(IP .nr I0 \\n(PIu
if \\n(IP \{\
       in -\\n(I\\n(IRu
       nr IP -1
\}
ft 1
TA
fi
.
       \" TA - set default tabs
de TA
if n .ta 8n 16n 24n 32n 40n 48n 56n 64n 72n 80n
if t .ta 5n 10n 15n 20n 25n 30n 35n 40n 45n 50n 55n 60n 65n 70n 75n
.
       \" BG - begin (at first paragraph)
de BG
br
nr YE 1
di
ce 0
nr KI 0
hy 14
nr 1T 1
S\\n(ST
rm S0 S1 S2 SY TX AX WT RP
\"redefs
de TL
ft 3
ce 99
sp
LG
\\..
de AU
ft 2
if n .ul 0
ce 99
sp
NL
\\..
de AI
ft 1
if n .ul 0
ce 99
if n .sp
if t .sp .5
NL
\\..
RA
rn FJ FS
rn FK FE
nf
ev 1
ps \\n(PS-2
vs \\n(.s+2p
ev
if !\\n(KG .nr FP 0
nr KG 0
if \\n(FP \{\
       FS
       FG
       FE
\}
br
if \\n(TV .if n .sp 2
if \\n(TV .if t .sp 1
fi
ll \\n(LLu
.
       \" RA - redefine abstract
de RA
de AB
br
if !\\n(1T .BG
ce
sp
if !\\n(.$ ABSTRACT
if \\n(.$ .if !\\$1no \\$1
if !\\n(.$ .sp
if \\n(.$ .if !\\$1no .sp
sp
nr AJ 1
in +\\n(.lu/12u
ll -\\n(.lu/12u
RT
if \\n(TM .ls 1
\\..
de AE
nr AJ 0
br
in 0
ll \\n(LLu
if \\n(VS>=40 .vs \\n(VSu
if \\n(VS<=39 .vs \\n(VSp
if \\n(TM .ls 2
\\..
.
       \" RP - released paper format
de RP
nr ST 2
if \\$1no .nr ST 1
pn 0
br
.
       \" TL - source file for cover sheet
de TL
rn TL @T
so \*(//s.cov
TL
rm @T
.
       \" PP - regular paragraph
de PP
RT
if \\n(1T .sp \\n(PDu
ne 1.1
ti +\\n(PIu
.
       \" LP - left paragraph
de LP
RT
if \\n(1T .sp \\n(PDu
ne 1.1
ti \\n(.iu
.
       \" IP - indented paragraph
de IP
RT
if \\n(1T .sp \\n(PDu
ne 1.1
if !\\n(IP .nr IP +1
if \\n(.$-1 .nr I\\n(IR \\$2n
in +\\n(I\\n(IRu
ta \\n(I\\n(IRu
if \\n(.$ \{\
ds HT \&\\$1
ti -\\n(I\\n(IRu
\\*(HT\t\c
if \w'\\*(HT'u>(\\n(I\\n(IRu+1n) .br
\}
.
       \" XP - exdented paragraph
de XP
RT
if \\n(1T .sp \\n(PDu
ne 1.1
if !\\n(IP .nr IP +1
in +\\n(I\\n(IRu
ti -\\n(I\\n(IRu
.
       \" QP - quote paragraph
de QP
ti \\n(.iu
RT
if \\n(1T .sp \\n(PDu
ne 1.1
nr QP 1
in +\\n(QIu
ll -\\n(QIu
ti \\n(.iu
if \\n(TM .ls 1
.
       \" SH - section header
de SH
ti \\n(.iu
RT
if \\n(1T .sp
RT
ne 3.1
B
.
       \" NH - numbered header
de NH
SH
nr NS \\$1
if !\\n(.$ .nr NS 1
if !\\n(NS .nr NS 1
nr H\\n(NS +1
if !\\n(NS-4 .nr H5 0
if !\\n(NS-3 .nr H4 0
if !\\n(NS-2 .nr H3 0
if !\\n(NS-1 .nr H2 0
if !\\$1 .if \\n(.$ .nr H1 1
if \\$1S \{\
       nr NS \\n(.$-1
       nr H1 \\$2
       nr H2 \\$3
       nr H3 \\$4
       nr H4 \\$5
       nr H5 \\$6
\}
ds SN \\n(H1.
if \\n(NS-1 .as SN \\n(H2.
if \\n(NS-2 .as SN \\n(H3.
if \\n(NS-3 .as SN \\n(H4.
if \\n(NS-4 .as SN \\n(H5.
\\*(SN
.
       \" DS - display with keep (L=left I=indent C=center B=block)
de DS
KS
nf
\\$1D \\$2 \\$1
ft 1
ps \\n(PS
if \\n(VS>=40 .vs \\n(VSu
if \\n(VS<=39 .vs \\n(VSp
.
de D
ID \\$1
.
       \" ID - indented display with no keep
de ID
XD
if t .in +.5i
if n .in +8
if \\n(.$ .if !\\$1I .if !\\$1 \{\
       in \\n(OIu
       in +\\$1n
\}
.
       \" LD - left display with no keep
de LD
XD
.
       \" CD - centered display with no keep
de CD
XD
ce 999
.
       \" XD - real display macro
de XD
nf
nr OI \\n(.i
sp \\n(DDu
if \\n(TM .ls 1
.
       \" DE - end display of any kind
de DE
ce 0
if \\n(BD .DF
nr BD 0
in \\n(OIu
KE
if \\n(TM .ls 2
sp \\n(DDu
fi
.
       \" BD - block display: center entire block
de BD
XD
nr BD 1
nf
in \\n(OIu
di DD
.
       \" DF - finish block display
de DF
di
if \\n(dl>\\n(BD .nr BD \\n(dl
if \\n(BD<\\n(.l .in (\\n(.lu-\\n(BDu)/2u
nr EI \\n(.l-\\n(.i
ta \\n(EIuR
DD
in \\n(OIu
.
       \" KS - begin regular keep
de KS
nr KN \\n(.u
if !\\n(IK .if !\\n(IF .KQ
nr IK +1
.
       \" KQ - real keep processor
de KQ
br
nr KI \\n(.i
ev 2
TA
br
in \\n(KIu
ps \\n(PS
if \\n(VS>=40 .vs \\n(VSu
if \\n(VS<=39 .vs \\n(VSp
ll \\n(LLu
lt \\n(LTu
if \\n(NX>1 .ll \\n(CWu
if \\n(NX>1 .lt \\n(CWu
di KK
nr TB 0
.
       \" KF - begin floating keep
de KF
nr KN \\n(.u
if !\\n(IK .FQ
nr IK +1
.
       \" FQ - real floating keep processor
de FQ
nr KI \\n(.i
ev 2
TA
br
in \\n(KIu
ps \\n(PS
if \\n(VS>=40 .vs \\n(VSu
if \\n(VS<=39 .vs \\n(VSp
ll \\n(LLu
lt \\n(LTu
if \\n(NX>1 .ll \\n(CWu
if \\n(NX>1 .lt \\n(CWu
di KK
nr TB 1
.
       \" KE - end keep
de KE
if \\n(IK .if !\\n(IK-1 .if !\\n(IF .RQ
if \\n(IK .nr IK -1
.
       \" RQ - real keep release
de RQ
br
di
nr NF 0
if \\n(dn-\\n(.t .nr NF 1
if \\n(TC .nr NF 1
if \\n(NF .if !\\n(TB .sp 200
if !\\n(NF .if \\n(TB .nr TB 0
nf
rs
nr TC 5
in 0
ls 1
if !\\n(TB \{\
       ev
       br
       ev 2
       KK
\}
ls
ce 0
if !\\n(TB .rm KK
if \\n(TB .da KJ
if \\n(TB \!.KD \\n(dn
if \\n(TB .KK
if \\n(TB .di
nr TC \\n(TB
if \\n(KN .fi
in
ev
.
       \" KD - keep redivert
de KD
nr KM 0
if \\n(.zKJ .nr KM 1
if \\n(KM \!.KD \\$1
if !\\n(KM .if \\n(.t<\\$1 .di KJ
.
       \" EM - end macro (process leftover keep)
de EM
br
if !\\n(TB .if t .wh -1p CM
if \\n(TB \{\
\&\c
'       bp
       NP
       ch CM 160
\}
.
de XK
nr TD 1
nf
ls 1
in 0
rn KJ KL
KL
rm KL
if \\n(.zKJ .di
nr TB 0
if \\n(.zKJ .nr TB 1
br
in
ls
fi
nr TD 0
.
       \" NP - new page
de NP
if !\\n(LT .nr LT \\n(LLu
if \\n(FM+\\n(HM>=\\n(.p \{\
       tm HM + FM longer than page
       ab
\}
if t .CM
if !\\n(HM .nr HM 1i
po \\n(POu
nr PF \\n(.f
nr PX \\n(.s
ft 1
ps \\n(PS
'sp \\n(HMu/2u
PT
'sp |\\n(HMu
HD      \"undefined
ps \\n(PX
ft \\n(PF
nr XX 0 1
nr YY 0-\\n(FMu
ch FO 16i
ch FX 17i
ch FO -\\n(FMu
ch FX \\n(.pu-\\n(FMu
if \\n(MF .FV
nr MF 0
mk
os
ev 1
if !\\n(TD .if \\n(TC<5 .XK
nr TC 0
ev
nr TQ \\n(.i
nr TK \\n(.u
if \\n(IT \{\
       in 0
       nf
       TT
       in \\n(TQu
       if \\n(TK .fi
\}
ns
mk #T
if t .if \\n(.o+\\n(LL>7.54i .tm PO + LL wider than 7.54i
.
       \" PT - page titles
de PT
lt \\n(LTu
pc %
nr PN \\n%
nr PT \\n%
if \\n(P1 .nr PT 2
if \\n(PT>1 .if !\\n(EH .if !\\n(OH .tl \\*(LH\\*(CH\\*(RH
if \\n(PT>0 .if \\n(OH .if o .tl \\*(O1
if \\n(PT>0 .if \\n(EH .if e .tl \\*(E2
lt \\n(.lu
.
       \" OH - odd page header
de OH
nr OH 1
if !\\n(.$ .nr OH 0
ds O1 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
.
       \" EH - even page header
de EH
nr EH 1
if !\\n(.$ .nr EH 0
ds E2 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
.
       \" P1 - PT on 1st page
de P1
nr P1 1
.
       \" FO - footer
de FO
rn FO FZ
if \\n(IT .nr T. 1
if \\n(IT .if !\\n(FC .T# 1
if \\n(IT .br
nr FC +1
if \\n(NX<2 .nr WF 0
nr dn 0
if \\n(FC<=1 .if \\n(XX .XF
rn FZ FO
nr MF 0
if \\n(dn .nr MF 1
if !\\n(WF .nr YY 0-\\n(FMu
if !\\n(WF .ch FO \\n(YYu
if !\\n(dn .nr WF 0
if \\n(FC<=1 .if !\\n(XX \{\
       if \\n(NX>1 .RC
       if \\n(NX<2 'bp
\}
nr FC -1
if \\n(ML .ne \\n(MLu
.
       \" BT - bottom title
de BT
nr PF \\n(.f
nr PX \\n(.s
ft 1
ps \\n(PS
lt \\n(LTu
po \\n(POu
if \\n(TM .if \\n(CT \{\
       tl ''\\n(PN''
       nr CT 0
\}
if \\n% .if !\\n(EF .if !\\n(OF .tl \\*(LF\\*(CF\\*(RF
if \\n% .if \\n(OF .if o .tl \\*(O3
if \\n% .if \\n(EF .if e .tl \\*(E4
ft \\n(PF
ps \\n(PX
.
       \" OF - odd page footer
de OF
nr OF 1
if !\\n(.$ .nr OF 0
ds O3 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
.
       \" EF - even page footer
de EF
nr EF 1
if !\\n(.$ .nr EF 0
ds E4 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
.
       \" 2C - double column
de 2C
MC
.
       \" 1C - single column
de 1C
MC \\n(LLu
hy 14
.
       \" MC - multiple columns, arg is col width
de MC
nr L1 \\n(LL*7/15
if \\n(.$ .nr L1 \\$1n
nr NQ \\n(LL/\\n(L1
if \\n(NQ<1 .nr NQ 1
if \\n(NQ>2 .if (\\n(LL%\\n(L1)=0 .nr NQ -1
if !\\n(1T \{\
       BG
       if n .sp 4
       if t .sp 2
\}
if !\\n(NX .nr NX 1
if !\\n(NX=\\n(NQ \{\
       RT
       if \\n(NX>1 .bp
       mk
       nr NC 1
       po \\n(POu
\}
if \\n(NQ>1 .hy 12
nr NX \\n(NQ
nr CW \\n(L1
ll \\n(CWu
nr FL \\n(CWu*11u/12u
if \\n(NX>1 .nr GW (\\n(LL-(\\n(NX*\\n(CW))/(\\n(NX-1)
nr RO \\n(CW+\\n(GW
ns
.
de RC
if \\n(NC>=\\n(NX .C2
if \\n(NC<\\n(NX .C1
nr NC \\n(ND
.
de C1
rt
po +\\n(ROu
nr ND \\n(NC+1
nr XX 0 1
if \\n(MF .FV
ch FX \\n(.pu-\\n(FMu
ev 1
if \\n(TB .XK
nr TC 0
ev
nr TQ \\n(.i
if \\n(IT .in 0
if \\n(IT .TT
if \\n(IT .in \\n(TQu
mk #T
ns
.
de C2
po \\n(POu
'bp
nr ND 1
.
       \" RS - right shift
de RS
nr IS \\n(IP
RT
nr IP \\n(IS
if \\n(IP .in +\\n(I\\n(IRu
nr IR +1
nr I\\n(IR \\n(PIu
in +\\n(I\\n(IRu
.
       \" RE - retreat left
de RE
nr IS \\n(IP
RT
nr IP \\n(IS
if \\n(IR .nr IR -1
if \\n(IP<=0 .in -\\n(I\\n(IRu
.
       \" CM - cut mark
de CM
po 0
lt 7.6i
ft 1
ps 10
vs 4p
tl '--''--'
po
vs
lt
ps
ft
.
       \" I - italic font
de I
nr PQ \\n(.f
if t .ft 2
ie \\$1 .if n .ul 999
el .if n .ul 1
if t .if !\\$1 \&\\$1\|\f\\n(PQ\\$2
if n .if \\n(.$=1 \&\\$1
if n .if \\n(.$>1 \&\\$1\c
if n .if \\n(.$>1 \&\\$2
.
       \" B - bold font
de B
nr PQ \\n(.f
if t .ft 3
ie \\$1 .if n .ul 999
el .if n .ul 1
if t .if !\\$1 \&\\$1\f\\n(PQ\\$2
if n .if \\n(.$=1 \&\\$1
if n .if \\n(.$>1 \&\\$1\c
if n .if \\n(.$>1 \&\\$2
.
       \" R - Roman font
de R
if n .ul 0
ft 1
.
       \" UL - underline in troff
de UL
if t \\$1\l'|0\(ul'\\$2
if n .I "\\$1" "\\$2"
.
       \" SM - smaller
de SM
ps -2
.
       \" LG - larger
de LG
ps +2
.
       \" NL - normal
de NL
ps \\n(PS
.
       \" DA - force date
de DA
if \\n(.$ .ds DY \\$1 \\$2 \\$3 \\$4
ds CF \\*(DY
.
       \" ND - no date or new date
de ND
if \\n(.$ .ds DY \\$1 \\$2 \\$3 \\$4
rm CF
.
       \" \** - numbered footnote
ds * \\*([.\\n+*\\*(.]
       \" FJ - replaces FS after cover
de FJ
'ce 0
di
ev 1
ll \\n(FLu
da FF
br
if \\n(IF .tm Nested footnote
nr IF 1
if !\\n+(XX-1 .FA
if !\\n(MF .if !\\n(.$ .if \\n* .FP \\n*
if !\\n(MF .if \\n(.$ .FP \\$1 no
.
       \" FK - replaces FE after cover
de FK
br
in 0
nr IF 0
di
ev
if !\\n(XX-1 .nr dn +\\n(.v
nr YY -\\n(dn
if !\\n(NX .nr WF 1
if \\n(dl>\\n(CW .nr WF 1
if (\\n(nl+\\n(.v)<=(\\n(.p+\\n(YY) .ch FO \\n(YYu
if (\\n(nl+\\n(.v)>(\\n(.p+\\n(YY) \{\
       if \\n(nl>(\\n(HM+1.5v) .ch FO \\n(nlu+\\n(.vu
       if \\n(nl+\\n(FM+1v>\\n(.p .ch FX \\n(.pu-\\n(FMu+2v
       if \\n(nl<=(\\n(HM+1.5v) .ch FO \\n(HMu+(4u*\\n(.vu)
\}
.
       \" FS - begin footnote on cover
de FS
ev 1
br
ll \\n(FLu
da FG
if !\\n(.$ .if \\n* .FP \\n*
if \\n(.$ .FP \\$1 no
.
       \" FE - end footnote on cover
de FE
br
di
nr FP \\n(dn
if !\\n(1T .nr KG 1
ev
.
       \" FA - print line before footnotes
de FA
in 0
if n _________________________
if t \l'1i'
br
.
       \" FP - footnote paragraph
de FP
sp \\n(PDu/2u
if \\n(FF<2 .ti \\n(FIu
if \\n(FF=3 \{\
       in \\n(FIu*2u
       ta \\n(FIu*2u
       ti 0
\}
if !\\n(FF \{\
       ie "\\$2"no" \\$1\0\c
       el \\*([.\\$1\\*(.]\0\c
\}
if \\n(FF .if \\n(FF<3 \{\
       ie "\\$2"no" \\$1\0\c
       el \\$1.\0\c
\}
if \\n(FF=3 \{\
       ie "\\$2"no" \\$1\t\c
       el \\$1.\t\c
\}
.
       \" FV - get leftover footnote from previous page
de FV
FS
nf
ls 1
FY
ls
fi
FE
.
       \" FX - divert leftover footnote for next page
de FX
if \\n(XX .di FY
if \\n(XX .ns
.
       \" XF - actually print footnote
de XF
if \\n(nlu+1v>(\\n(.pu-\\n(FMu) .ch FX \\n(nlu+1.9v
ev 1
nf
ls 1
FF
rm FF
nr XX 0 1
br
ls
di
fi
ev
.
       \" TS - source file for tbl
de TS
rn TS @T
so \*(//s.tbl
TS \\$1 \\$2
rm @T
.
       \" EQ - source file for eqn
de EQ
rn EQ @T
so \*(//s.eqn
EQ \\$1 \\$2
rm @T
.
       \" ]- - source file for refer
de ]-
rn ]- @T
so \*(//s.ref
]-
rm @T
.
       \" [< - for refer -s or -e
de ]<
rn ]< @T
so \*(//s.ref
]<
rm @T
.
if \n(.V>19 .ds [. \f1[
if \n(.V>19 .ds .] ]\fP
if \n(.V<20 .ds [. \f1\s-2\v'-.4m'
if \n(.V<20 .ds .] \v'.4m'\s+2\fP
ds <. .
ds <, ,
if n .ds Q \&"
if n .ds U \&"
if n .ds - \%--
if t .ds Q ``
if t .ds U ''
if t .ds - \(em
ds ' \h'\w'e'u/5'\z\'\h'-\w'e'u/5'
ds ` \h'\w'e'u/5'\z\`\h'-\w'e'u/5'
ds ^ \h'\w'o'u/10'\z^\h'-\w'e'u/10'
ds , \h'\w'c'u/5'\z,\h'-\w'e'u/5'
ds : \h'\w'u'u/5'\z"\h'-\w'e'u/5'
ds ~ \h'\w'n'u/10'\z~\h'-\w'e'u/10'
ds C \h'\w'c'u/5'\v'-.6m'\s-4\zv\s+4\v'.6m'\h'-\w'c'u/5'
       \" AM - better accent marks
de AM
so \*(//s.acc
.
       \" TM - thesis mode
de TM
so \*(//s.ths
.
       \" BX - word in a box
de BX
if t \(br\|\\$1\|\(br\l'|0\(rn'\l'|0\(ul'
if n \(br\\kA\|\\$1\|\\kB\(br\v'-1v'\h'|\\nBu'\l'|\\nAu'\v'1v'\l'|\\nAu'
.
       \" B1 - source file for boxed text
de B1
rn B1 @T
so \*(//s.tbl
B1 \\$1
rm @T
.
       \" XS - table of contents
de XS
rn XS @T
so \*(//s.toc
XS \\$1 \\$2
rm @T
.
       \" IX - index words to stderr
de IX
tm \\$1\t\\$2\t\\$3\t\\$4 ... \\n(PN
.
       \" UX - UNIX macro
de UX
ie \\n(UX \s-1UNIX\s0\\$1
el \{\
\s-1UNIX\s0\\$1\(dg
FS
\(dg \s-1UNIX\s0 is a trademark of AT&T Bell Laboratories.
FE
nr UX 1
\}
.
co
if \n(mo-0 .ds MO January
if \n(mo-1 .ds MO February
if \n(mo-2 .ds MO March
if \n(mo-3 .ds MO April
if \n(mo-4 .ds MO May
if \n(mo-5 .ds MO June
if \n(mo-6 .ds MO July
if \n(mo-7 .ds MO August
if \n(mo-8 .ds MO September
if \n(mo-9 .ds MO October
if \n(mo-10 .ds MO November
if \n(mo-11 .ds MO December
ds DY \*(MO \n(dy, 19\n(yr
nr * 0 1
IZ
em EM
rm IZ RA //
de MH
AT&T Bell Laboratories
Murray Hill, New Jersey 07974
.