.\"
.\" Changes by Gunnar Ritter, Freiburg i. Br., Germany, October 2005.
.\"
.\" Derived from Plan 9 source code published at the 9fans list by Rob Pike,
.\" <http://lists.cse.psu.edu/archives/9fans/2002-February/015773.html>
.\"
.\" Copyright (C) 2003, Lucent Technologies Inc. and others.
.\" All Rights Reserved.
.\"
.\" Distributed under the terms of the Lucent Public License Version 1.02.
.\"
.\"
.\"	Sccsid @(#)pm.in	1.5 (gritter) 10/30/05
.\"
.\" 10/22/92 activate next line before installing
.pi /opt/local/libexec/heirloom-doctools/pm
.
.		\" IZ - initialization
.de IZ
.fp 1 R			\" force a font out into prefix
.nr PS 10		\" point size
.nr VS 12		\" line spacing
.ps \\n(PS
.ie \\n(VS>=41 .vs \\n(VSu
.el .vs \\n(VSp
.nr LL 6i		\" line length
.ll \\n(LLu
.nr LT \\n(.l		\" title length
.lt \\n(LTu
.if !\\n(HM .nr HM 1i   \" top of page
.if !\\n(FM .nr FM 1i	\" footer margin
.if !\\n(FO .nr FO \\n(.p-\\n(FM	\" bottom of page
.			\" to set text ht to N, set FO to N + \n(HM.  default is 10i
.pl 32767u		\" safety first: big pages for pm
.if !\\n(PO .nr PO \\n(.ou	\" page offset
.nr PI 5n		\" .PP paragraph indent
.nr QI 5n		\" .QS indent
.nr DI 5n		\" .DS indent
.nr PD 0.3v		\" paragraph vertical separation
.nr TS 0.5v		\" space around tables
.nr Kf 0.5v		\" space around .KF/.KE
.nr Ks 0.5v		\" space around .KS/.KE
.
.nr P1 .4i		\" indent for .P1/.P2
.nr dP 1		\" delta point size for programs in .P1/.P2
.nr dV 2p		\" delta vertical for programs
.nr dT 8		\" delta tab stop for programs
.nr DV .5v		\" space before start of program
.nr IP 0		\" ?
.nr IR 0		\" ?
.nr I1 \\n(PIu
.ev 1
.if !\\n(FL .nr FL \\n(LLu	\" footnote length
.ll \\n(FLu
.ps 8			\" text size & leading in footnote
.vs 10p
.ev
.if \\*(CH .ds CH "\(hy \\\\n(PN \(hy
.ds # #\\\\n(.c \\\\n(.F
.
.
.ME	\" initialize date strings
.rm ME
.	\"  accents:  \*'e \*`e \*:u \*^e \*~n \*va \*,c
.ds ' \h'\w'e'u*4/10'\z\(aa\h'-\w'e'u*4/10'
.ds ` \h'\w'e'u*4/10'\z\(ga\h'-\w'e'u*4/10'
.ds : \\v'-0.6m'\\h'(1u-(\\\\n(.fu%2u))*0.13m+0.00m'\\z.\\h'0.2m'\\z.\\h'-((1u-(\\\\n(.fu%2u))*0.13m+0.20m)'\\v'0.6m'
.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'
.ds v \\\\k:\\\\h'+\\\\w'e'u/4u'\\\\v'-0.6m'\\\\s6v\\\\s0\\\\v'0.6m'\\\\h'|\\\\n:u'
.ds , \\\\k:\\\\h'\\\\w'c'u*0.4u'\\\\z,\\\\h'|\\\\n:u'
..
.
.
.		\" SP - generate paddable space
.de SP
.br
.nr X 1v
.if \\n(.$ .nr X \\$1v
.ie '\\$2'exactly' \{\
\v'\\nXu'\ \h'-\w'\ 'u'\c
.sp \\$1\}
.el .X "SP \\nX \\$2"
..
.		\" NE - need space on this page
.de NE
.nr X 1v
.if \\n(.$ .nr X \\$1v
.X "NE \\nX \\$2"
..
.		\" BP, FL, FC - begin page, flush figures, flush column
.de BP
.br
.X CMD BP
..
.de FL
.br
.X CMD FL
..
.de FC
.br
.X CMD FC
..
.		\" X - generate an x X ... command in the output
.de X
....ie '\\n(.z'' \\!x X \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
....el \\!.X "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
...
.if !'\\n(.z'' .if \\n(.$=1 \\!.X "\\$1
.if !'\\n(.z'' .if \\n(.$=2 \\!.X "\\$1 \\$2
.if !'\\n(.z'' .if \\n(.$=3 \\!.X "\\$1 \\$2 \\$3
.if !'\\n(.z'' .if \\n(.$>3 \\!.X "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
.if '\\n(.z'' .if \\n(.$=1 \\!x X \\$1 \\*#
.if '\\n(.z'' .if \\n(.$=2 \\!x X \\$1 \\$2 \\*#
.if '\\n(.z'' .if \\n(.$=3 \\!x X \\$1 \\$2 \\$3 \\*#
.if '\\n(.z'' .if \\n(.$=4 \\!x X \\$1 \\$2 \\$3 \\$4 \\*#
.if '\\n(.z'' .if \\n(.$>4 \\!x X \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 \\*#
..
.		\" DA - force date
.de DA
.if \\n(.$ .ds DY \\$1 \\$2 \\$3 \\$4
.ds CF \\*(DY
..
.		\" ND - set new or no date
.de ND
.ds DY \\$1 \\$2 \\$3 \\$4
.rm CF
..
.de ME		\" ME - set month strings
.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
.if \\n(dw-0 .ds DW Sunday
.if \\n(dw-1 .ds DW Monday
.if \\n(dw-2 .ds DW Tuesday
.if \\n(dw-3 .ds DW Wednesday
.if \\n(dw-4 .ds DW Thursday
.if \\n(dw-5 .ds DW Friday
.if \\n(dw-6 .ds DW Saturday
.if "\\*(DY"" .ds DY \\*(MO \\n(dy, 19\\n(yr
..
.		\" FP - font position for a family
.de FP
.if '\\$1'palatino'\{\
.	fp 1 PA
.	fp 2 PI
.	fp 3 PB
.	fp 4 PX\}
.if '\\$1'century'\{\
.	ie '\\*(.T'202'\{\
.		fp 1 NR Centsb
.		fp 2 NI CentI
.		fp 3 NB CentB
.		fp 4 NX CentBI\}
.	el \{\
.		fp 1 NR
.		fp 2 NI
.		fp 3 NB
.		fp 4 NX\}\}
.if '\\$1'helvetica'\{\
.	fp 1 H
.	fp 2 HI
.	fp 3 HB
.	fp 4 HX\}
.if '\\$1'bembo'\{\
.	ie '\\*(.T'202'\{\
.		fp 1 B1 Bembo
.		fp 2 B2 BemboI
.		fp 3 B3 BemboB
.		fp 4 B4 BemboBI\}
.	el \{\
.		fp 1 B1
.		fp 2 B2
.		fp 3 B3
.		fp 4 B4\}\}
.if '\\$1'optima'\{\
.	fp 1 R Optima
.	fp 2 I OptimaI
.	fp 3 B OptimaB
.	fp 4 BI OptimaBI\}
.if '\\$1'souvenir'\{\
.	fp 1 R Souvenir
.	fp 2 I SouvenirI
.	fp 3 B SouvenirB
.	fp 4 BI SouvenirBI\}
.if '\\$1'melior'\{\
.	fp 1 R Melior
.	fp 2 I MeliorI
.	fp 3 B MeliorB
.	fp 4 BI MeliorBI\}
.if '\\$1'times'\{\
.	fp 1 R
.	fp 2 I
.	fp 3 B
.	fp 4 BI\}
..
.		\" TL - title
.de TL
.br
.if !\\n(1T .BG
....hy 0
.ft 3
.ps \\n(PS+2p
.vs \\n(VS+2p
.ll \\n(LLu
.ce 100		\" turned off in .RT
.sp .5i
..
.		\" AU - remember author(s)
.de AU
.ft 1
.ps \\n(PS
.ie \\n(VS>=41 .vs \\n(VSu
.el .vs \\n(VSp
.SP .5
..
.		\" AI - author's institution
.de AI
.SP .25
.ft 2
..
.		\" AB - begin abstract
.de AB
.nr AB 1	  \" we're in abstract
.if !\\n(1T .BG
.ft 1
.ps \\n(PS
.vs \\n(VSp
.ce
.in +\\n(.lu/12u
.ll -\\n(.lu/12u
.SP 1
.ie \\n(.$ \\$1
.el ABSTRACT
.SP .75 
.RT
..
.		\" AE - end of abstract
.de AE
.br
.nr AB 0
.in 0
.ll \\n(LLu
.ps \\n(PS
.ie \\n(VS>=41 .vs \\n(VSu
.el .vs \\n(VSp
.SP
..
.		\" 2C - 2 columns
.de 2C
.MC 2
..
.		\" 1C - 1 column
.de 1C
.MC 1
..
.		\" MC - multiple columns
.de MC
.br
.if \\n(1T .RT
.if \\n(1T .NP
.if !\\n(OL .nr OL \\n(LL
.if \\n(CW=0 .nr CW \\n(LL*7/15
.if \\n(GW=0 .nr GW \\n(LL-(2*\\n(CW)
.nr x \\n(CW+\\n(GW
.if "\\$1"" .MC 2
.if \\$1=1 \{\
.	X MC 1 0
.	nr LL \\n(OLu\}
.if \\$1=2 \{\
.	X MC 2 \\nx
.	nr LL \\n(CWu\}
.ll \\n(LLu
.if \\$1>2 .tm -mpm can't handle more than two columns
.if \\n(1T .RT
..
.		\" TS - table start, TE - table end;  also TC, TQ, TH
.de TS
.br
.if !\\n(1T .RT
.SP \\n(TSu TS
.X "US TS
.if \\$1H .TQ
.nr IX 1
..
.de TC
.nr TZ \\n(.lu
.if \\n(.$ .nr TZ \\$1n
.ta \\n(TZuR
..
.de TD
.LP
.nr TZ 0
..
.de TQ
.di TT
.nr IT 1
..
.de TH
.if \\n(.d>0.5v \{\
.	nr T. 0
.	T# 0\}
.di
.nr TQ \\n(.i
.nr HT 1
.in 0
.mk #a
.mk #b
.mk #c
.mk #d
.mk #e
.mk #f
.TT
.in \\n(TQu
.mk #T
..
.		\" TE - table end
.de TE
.nr IX 0
.if \\n(IT .if !\\n(HT \{\
.	di
.	nr EF \\n(.u
.	nf
.	TT
.	if \\n(EF .fi\}
.nr IT 0
.nr HT 0
.rm a+ b+ c+ d+ e+ f+ g+ h+ i+ j+ k+ l+ n+ m+
.rr 32 33 34 35 36 37 38 40 79 80 81 82
.rr a| b| c| d| e| f| g| h| i| j| k| l| m|
.rr a- b- c- d- e- f- g- h- i- j- k- l- m-
.X "END US TE
.SP \\n(TSu TE
.bp
..
.		\" EQ - equation, breakout and display
.de EQ
.nr EF \\n(.u
.rm EE
.nr LE 1	\" 1 is center
.ds EL \\$1
.if "\\$1"L" \{\
.	ds EL \\$2
.	nr LE 0\}
.if "\\$1"C" .ds EL \\$2
.if "\\$1"R" \{\
.	ds EL \\$2 \" 2 is right adjust
.	nr LE 2\}
.if "\\$1"I" \{\
.	nr LE 0
.	if "\\$3"" .ds EE \\h'|10n'
.	el .ds EE \\h'\\$3'
.	ds EL \\$2\}
.if \\n(YE .nf
.di EZ
..
.		\" EN - end of equation
.de EN 
.br
.di
.rm EZ
.nr ZN \\n(dn
.if \\n(ZN .if !\\n(YE .LP
.if !\\n(ZN .if !"\\*(EL"" .nr ZN 1
.if \\n(ZN \{\
.	SP .5v EQ
.	X "US EQ"\}
'pc
.if \\n(BD .nr LE 0 \" don't center if block display or mark/lineup
.if \\n(MK \{\
.	if \\n(LE=1 .ds EE \\h'|10n'
.	nr LE 0\}
'lt \\n(.lu
.if !\\n(EP .if \\n(ZN \{\
.	if \\n(LE=1 .tl \(ts\(ts\\*(10\(ts\\*(EL\(ts
.	if \\n(LE=2 .tl \(ts\(ts\(ts\\*(10\\*(EL\(ts
.	if !\\n(LE \{\
.		if !\\n(BD .tl \(ts\\*(EE\\*(10\(ts\(ts\\*(EL\(ts
.		if \\n(BD .if \\n(BD<\\w\(ts\\*(10\(ts .nr BD \\w\(ts\\*(10\(ts
.		if \\n(BD \!\\*(10\\t\\*(EL\}\}
.if \\n(EP .if \\n(ZN \{\
.	if \\n(LE=1 .tl \(ts\\*(EL\(ts\\*(10\(ts\(ts
.	if \\n(LE=2 .tl \(ts\\*(EL\(ts\(ts\\*(10\(ts
.	if !\\n(LE \{\
.		if !\\n(BD .tl \(ts\\*(EL\\*(EE\\*(10\(ts\(ts\(ts
.		if \\n(BD .if \\n(BD<\\w\(ts\\*(10\(ts .nr BD \\w\(ts\\*(10\(ts
.		if \\n(BD \!\\h'-\\\\n(.iu'\\*(EL\\h'|0'\\*(10\}\}
'lt \\n(LLu
'pc %
.if \\n(YE .if \\n(EF .fi
.if \\n(ZN .X "END US EQ"
.if \\n(ZN .SP .5v EN
.if \\n(ZN .bp
..
.		\" PS - start picture
.de PS			\" $1 is height, $2 is width, in inches
.br
.nr X 0.35v
.if \\$1>0 .X "SP \\nX PS"
.ie \\$1>0 .nr $1 \\$1
.el .nr $1 0
.X "US PS \\$1
.in (\\n(.lu-\\$2)/2u
..
.		\" PE - end of picture
.de PE
.in
.X "END US PE
.nr X .65v
.if \\n($1>0 .X "SP \\nX PE"
.bp
..
.de IS	\" for -mpm only
.KS
..
.de IE
.KE
.bp
..
.		\" NP - new page
.de NP
.ev 2
.bp
.if \\n(KF=0 \{\
.	nr PX \\n(.s
.	nr PF \\n(.f
.	nr PV \\n(.v
.	lt \\n(LTu
.	ps \\n(PS
.	vs \\n(PS+2
.	ft 1
.	if \\n(PO .po \\n(POu	\" why isn't this reset???
.	PT \\$1
.	bp
.	rs
.	BT
.	bp
.	nr %# +1
.	ps \\n(PX
.	vs \\n(PVu
.	ft \\n(PF \}
.ev
..
.
.ds %e .tl '\\*(LH'\\*(CH'\\*(RH'
.ds %o .tl '\\*(LH'\\*(CH'\\*(RH'
.ds %E .tl '\\*(LF'\\*(CF'\\*(RF'
.ds %O .tl '\\*(LF'\\*(CF'\\*(RF'
.
.		\" PT - page title
.de PT
.nr PN \\n(%#
.X "PT \\n(%#
.sp \\n(HMu/2u
.if \\n(OL .lt \\n(OLu		\" why isn't this reset???
.if \\n(BT>0 .if \\n(%#%2 \\*(%o
.if \\n(BT>0 .if !\\n(%#%2 \\*(%e
.if \\n(BT=0 .tl '\0'''		\" put out something or spacing is curdled
.X "END PT \\n(%#
..
.		\" BT - bottom title
.de BT
.X "BT \\n(%#
.sp |\\n(FMu/2u+\\n(FOu-1v
.if \\n(%#%2 \\*(%O
.if !\\n(%#%2 \\*(%E
.nr BT \\n(BT+1
.X "END BT \\n(%#
..
.		\" KS - non-floating keep
.de KS
.br
.if "\\n(.z"" .NP  \" defends poorly against including ht of page stuff in diversion for .B1
.X "US KS 0
.nr KS +1
.SP \\n(Ksu
..
.		\" KF - floating keep
.de KF
.ev 1
.br
.if \\n(KS>0 .tm KF won't work inside KS, line \\n(.c, file \\n(.F
.if \\n(KF>0 .tm KF won't work inside KF, line \\n(.c, file \\n(.F
.nr KF 1
.nr 10 0
.	if !'\\$1'' .nr 10 \\$1u
.	if '\\$1'bottom' .nr 10 \\n(FOu-1u
.	if '\\$1'top' .nr 10 \\n(HM
.	if \\n(10 .X "UF \\n(10 KF"
.	if !\\n(10 .X "UF \\n(HM KF"
.	nr X \\n(FOu-2u
.	if \\n(10 .X "UF \\n(10 KF"
.	if !\\n(10 .X "UF \\nX KF"
.nr SJ \\n(.u
.ps \\n(PS
.if \\n(VS>40 .vs \\n(VSu
.if \\n(VS<=39 .vs \\n(VSp
.ll \\n(LLu
.lt \\n(LTu
.SP \\n(Kfu
..
.		\" KE - end of KS/KF
.de KE
.bp
.ie \\n(KS>0 \{\
.	SP \\n(Ksu
.	X "END US KS
.	nr KS -1 \}
.el .ie \\n(KF>0 \{\
.	SP \\n(Kfu
.	nr KF 0
.	X "END UF KF"
.	if \\n(SJ .fi
.	ev \}
.el .tm .KE without preceding .KS or .KF, line \\n(.c, file \\n(.F
..
.
.		\" DS - display. .DS C center; L left-adjust; I indent (default)
.de DS		\"  $2 = amount of indent
.KS
.nf
.\\$1D \\$2 \\$1
.ft 1
.if !\\n(IF \{\
.	ps \\n(PS
.	if \\n(VS>40 .vs \\n(VSu
.	if \\n(VS<=39 .vs \\n(VSp\}
..
.de D
.ID \\$1
..
.de CD
.XD
.ce 1000
..
.de ID
.XD
.if \\n(.$=0 .in +\\n(DIu
.if \\n(.$=1 .if "\\$1"I" .in +\\n(DIu
.if \\n(.$=1 .if !"\\$1"I" .in +\\$1n
.if \\n(.$>1 .in +\\$2n
.....in +0.5i
.....if \\n(.$ .if !"\\$1"I" .if !"\\$1"" .in \\n(DIu
.....if \\n(.$ .if !"\\$1"I" .if !"\\$1"" .in +\\$1n
..
.de LD
.XD
..
.de XD
.nf
.nr OI \\n(.i
.SP \\n(DVu
..
.		\" BD - block display: save everything, then center it.
.de BD
.XD
.nr BD 1
.nf
.in \\n(OIu
.di DD
..
.		\" DE - display end
.de DE
.ce 0
.if \\n(BD>0 .XF
.nr BD 0
.in \\n(OIu
.SP \\n(DVu
.KE
.fi
..
.		\" XF - finish a block display to be recentered.
.de XF
.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
.nf
.DD
.in \\n(OIu
..
.
.
.		\" SH - (unnumbered) section heading
.de SH
.RT
.nr X 1v
.nr Y 3v
.if \\n(1T .NP
.if \\n(1T .X "NE \\nY SH"	\" should these be reversed, change Y to 4v
.if \\n(1T .X "SP \\nX SH
.ft 3
..
.		\" NH - numbered heading
.de NH
.RT
.nr X 1v
.nr Y 3v
.if \\n(1T .NP
.if \\n(1T .X "NE \\nY NH"	\" should these be reversed, change Y to 4v
.if \\n(1T .X "SP \\nX NH
.ft 3
.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
.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
..
.		\" RT - reset at beginning of each PP, LP, etc.
.de RT
.if !\\n(AB .if !\\n(1T .BG
.ce 0
.if !\\n(AB .if !\\n(KF .if !\\n(IF .if !\\n(IX .if !\\n(BE .di
.if \\n(QP \{\
.	ll +\\n(QIu
.	in -\\n(QIu
.	nr QP -1\}
.if !\\n(AB \{\
.	ll \\n(LLu\}
.if !\\n(IF .if !\\n(AB \{\
.	ps \\n(PS
.	ie \\n(VS>=41 .vs \\n(VSu
.	el .vs \\n(VSp\}
.ie \\n(IP \{\
.	in \\n(I\\n(IRu
.	nr IP -1\}
.el .if !\\n(IR \{\
.	nr I1 \\n(PIu
.	nr I2 0
.	nr I3 0
.	nr I4 0
.	nr I5 0\}
.if !\\n(AB .ft 1
.ta 5n 10n 15n 20n 25n 30n 35n 40n 45n 50n 55n 60n 65n 70n 75n 80n
.fi
..
.		\" BG - begin, execute at first TL, AB, NH, SH, PP, etc.
.de BG		\"	IZ has been called, so registers have some value
.br
.if \\n(CW>0 .if \\n(LL=0 .nr LL \\n(CW+\\n(CW+\\n(GW
.ll \\n(LLu
.lt \\n(LLu
.po \\n(POu
.nr YE 1		\" ok to cause break in .EQ (earlier ones won't)
.ev 0
.hy 14
.ev
.ev 1
.hy 14
.ev
.ev 2
.hy 14
.ev
.nr 1T 1
.X "PARM NP \\n(HM
.X "PARM FO \\n(FO
.if !\\n(%# .nr %# 1
..
.		\" PP - paragraph
.de PP
.RT
.if \\n(1T .NP
.if \\n(1T .X "SP \\n(PD PP"
.if \\n(1T .X "BS 2 PP"
.ti +\\n(PIu
..
.		\" LP - left aligned paragraph
.de LP
.RT
.if \\n(1T .NP
.if \\n(1T .X "SP \\n(PD LP"
.if \\n(1T .X "BS 2 LP"
..
.		\" IP - indented paragraph
.de IP
.RT
.if !\\n(IP .nr IP +1
.if \\n(1T .NP
.if \\n(1T .X "SP \\n(PD PP"
.if \\n(1T .X "BS 2 IP"
.nr IU \\n(IR+1
.if \\n(.$>1 .nr I\\n(IU \\$2n+\\n(I\\n(IRu
.if \\n(I\\n(IU=0 .nr I\\n(IU \\n(PIu+\\n(I\\n(IRu
.in \\n(I\\n(IUu
.nr TY \\n(TZ-\\n(.i
.nr JQ \\n(I\\n(IU-\\n(I\\n(IR
.ta \\n(JQu \\n(TYuR
.if \\n(.$ \{\
.ti \\n(I\\n(IRu
\&\\$1\t\c\}
..
.		\" QP - quoted paragraph (within IP)
.de QP
.RT
.if \\n(1T .NP
.if \\n(1T .X "SP \\n(PD QP"
.if \\n(1T .X "BS 2 QP"
.nr QP 1
.in +\\n(QIu
.ll -\\n(QIu
.ti \\n(.iu
..
.		\" RS - prepare for double indenting
.de RS
.nr IS \\n(IP
.RT
.nr IP \\n(IS
.nr IU \\n(IR
.nr IR +1
.if !\\n(I\\n(IR .nr I\\n(IR \\n(I\\n(IU+\\n(PIu
.in \\n(I\\n(IRu
.nr TY \\n(TZ-\\n(.i
.ta \\n(TYuR
..
.		\" RE - retreat to the left
.de RE
.nr IS \\n(IP
.RT
.nr IP \\n(IS
.if \\n(IR>0 .nr IR -1
.in \\n(I\\n(IRu
..
.		\" B - bold font
.de B
.nr PQ \\n(.f
.ft 3
.if \\n(.$ \&\\$1\\f\\n(PQ\\$2
..
.		\" BI - bold italic
.de BI
.nr PQ \\n(.f
.ft 4
.if \\n(.$ \&\\$1\\f\\n(PQ\\$2
..
.		\" R - Roman font
.de R
.nr PQ \\n(.f
.ft 1
.if \\n(.$ \&\\$1\f\\n(PQ\\$2
..
.		\" I - italic font
.de I
.nr PQ \\n(.f
.ft 2
.if \\n(.$ \&\\$1\^\f\\n(PQ\\$2
..
.		\" CW - constant width font from -ms
.de CW
.nr PQ \\n(.f
.if \\n(.$=0 .ft CW
.if \\n(.$>0 \%\&\\$3\f(CW\\$1\\f\\n(PQ\\$2
..
.de IT		\" ditto to italicize argument
.nr Sf \\n(.f
\%\&\\$3\f2\\$1\f\\n(Sf\&\\$2
..
.		\" TA - tabs set in ens or chars
.de TA
.ta \\$1n \\$2n \\$3n \\$4n \\$5n \\$6n \\$7n \\$8n \\$9n
..
.		\" SM - make smaller size
.de SM
.ie \\n(.$ \&\\$3\s-2\\$1\s0\\$2
.el .ps -2
..
.		\" LG - make larger size
.de LG
.ie \\n(.$ \&\\$3\s+2\\$1\s0\\$2
.el .ps +2
..
.		\" NL - return to normal size
.de NL
.ps \\n(PS
..
.		\" FS - begin footnote
.de FS
.if \\n(IF>0 .tm .FS within .FS/.FE, line \\n(.c, file \\n(.F
.if \\n(KF>0 .tm .FS won't work inside .KF, line \\n(.c, file \\n(.F
.if \\n(KS>0 .tm .FS won't work inside .KS, line \\n(.c, file \\n(.F
.nr IF 1
.ev 1
.ps \\n(PS-2
.ie \\n(VS>=41 .vs \\n(VSu-2p
.el .vs \\n(VSp-2p
.ll \\n(LLu
.br
.nr X \\n(FOu
.X "BF \\nX FS
.SP .3v
....FA	\" deleted by authority of cvw, 10/17/88
..
.		\" FE - end footnote
.de FE
.if !\\n(IF .tm .FE without .FS, line \\n(.c, file \\n(.F
.br
.X "END BF FE
.bp
.ev
.nr IF 0
..
.		\" FA - the line for a footnote
.de FA
\l'1i'
.br
..
.		\" Tm - message to be passed on
.de Tm
.ev 2
.if \\n(.$=1 .X "TM \\$1
.if \\n(.$=2 .X "TM \\$1 \\$2
.if \\n(.$=3 .X "TM \\$1 \\$2 \\$3
.if \\n(.$=4 .X "TM \\$1 \\$2 \\$3 \\$4
.if \\n(.$=5 .X "TM \\$1 \\$2 \\$3 \\$4 \\$5
.if \\n(.$=6 .X "TM \\$1 \\$2 \\$3 \\$4 \\$5 \\$6
.if \\n(.$=7 .X "TM \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7
.if \\n(.$=8 .X "TM \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
.if \\n(.$=9 .X "TM \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
.br
.ev
..
.de MH
AT&T Bell Laboratories
Murray Hill, New Jersey 07974
..
.de HO
AT&T Bell Laboratories
Holmdel, New Jersey 07733
..
.de WH
AT&T Bell Laboratories
Whippany, New Jersey 07981
..
.de IH
AT&T Bell Laboratories
Naperville, Illinois 60540
..
.		\" UL - underline argument, don't italicize
.de UL
\\$1\l'|0\(ul'\\$2
..
.		\" UX - print $2 UNIX $1
.de UX
.ie \\n(UX \\$2\s-1UNIX\s0\\$1
.el \{\
\\$2\s-1UNIX\\s0\\$1\(rg
.nr UX 1\}
..
.		\" QS - start quote
.de QS
.br
.LP
.in +\\n(QIu
.ll -\\n(QIu
..
.		\" QE - end quote
.de QE
.br
.ll +\\n(QIu
.in -\\n(QIu
.LP
..
.		\"  B1 - begin boxed stuff
.de B1
.br
.di BB
.nr BC 0
.if "\\$1"C" .nr BC 1
.nr BE 1
..
.		\" B2 - end boxed stuff
.de B2 
.br
.nr BI 1n
.if \\n(.$>0 .nr BI \\$1n
.di
.nr BE 0
.nr BW \\n(dl
.nr BH \\n(dn
.ne \\n(BHu+\\n(.Vu
.nr BQ \\n(.j
.nf
.ti 0
.if \\n(BC>0 .in +(\\n(.lu-\\n(BWu)/2u
.in +\\n(BIu
.ls 1
.BB
.ls
.in -\\n(BIu
.nr BW +2*\\n(BI
.sp -1
\l'\\n(BWu\(ul'\L'-\\n(BHu'\l'|0\(ul'\h'|0'\L'\\n(BHu'
.if \\n(BC>0 .in -(\\n(.lu-\\n(BWu)/2u
.if \\n(BQ .fi
.br
..
.		\" BX - boxed stuff
.de BX
\(br\|\\$1\|\(br\l'|0\(rn'\l'|0\(ul'
..
.
.	\" macros for programs, etc.
.
.ig
	programs are displayed between .P1/.P2 pairs
	default is to indent by 1/2 inch, nofill, dP smaller
	.P1 x causes an indent of x instead.

	.P3 can be used to specify optional page-break points
	inside .P1/.P2
..
.
.		\" P1 - start of program
.de P1
.nr $1 \\n(P1
.if \\n(.$ .nr $1 \\$1n
.br
.X "SP \\n(DV P1"
.X "US P1"
.in \\n($1u
.nf
.nr v \\n(.v
.ps -\\n(dP
.vs -\\n(dVu
.ft CW
.nr t \\n(dT*\\w'x'u
.ta 1u*\\ntu 2u*\\ntu 3u*\\ntu 4u*\\ntu 5u*\\ntu 6u*\\ntu 7u*\\ntu 8u*\\ntu 9u*\\ntu 10u*\\ntu 11u*\\ntu 12u*\\ntu 13u*\\ntu 14u*\\ntu
..
.		\" P2 - end of program
.de P2
.br
.ps \\n(PS
.vs \\nvu
.ft 1
.in
.X "END US P1
.X "SP \\n(DV P2"
.fi
..
.		\" P3 - provides optional unpadded break in P1/P2
.de P3
.nr x \\n(DV
.nr DV 0
.P2
.P1 \\n($1u
.nr DV \\nx
..
.de [
[
..
.de ]
]
..
.IZ
.rm IZ
.so /opt/local/share/heirloom-doctools/tmac/srefs
