summaryrefslogtreecommitdiff
path: root/fonts/halftone
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/halftone
Initial commit
Diffstat (limited to 'fonts/halftone')
-rw-r--r--fonts/halftone/blurb.txt30
-rw-r--r--fonts/halftone/boat.tex873
-rw-r--r--fonts/halftone/halftone.mf45
-rw-r--r--fonts/halftone/halftone.tex264
-rw-r--r--fonts/halftone/mandy.tex574
-rw-r--r--fonts/halftone/picture.tex69
-rw-r--r--fonts/halftone/pix.tex326
-rw-r--r--fonts/halftone/pixkit.post1817
-rw-r--r--fonts/halftone/texpic.for1347
-rw-r--r--fonts/halftone/texpic.objbin0 -> 8738 bytes
10 files changed, 5345 insertions, 0 deletions
diff --git a/fonts/halftone/blurb.txt b/fonts/halftone/blurb.txt
new file mode 100644
index 0000000000..354e2926b0
--- /dev/null
+++ b/fonts/halftone/blurb.txt
@@ -0,0 +1,30 @@
+This DCL archive contains all the required bits and pieces for preparing
+pictures for plotting by TeX. When executed, the archive creates
+the following files:
+
+ o BLURB.TXT this file
+ o HALFTONE.TEX user-level documentation (for LaTeX)
+ o PICTURE.TEX picture from TeXPIC used by HALFTONE.TEX
+ o TEXPIC.FOR the software. Note that there are two versions
+ of TEXPIC in this file, one for VMS and another
+ which is a little more portable.
+ o HALFTONE.MF Don Knuth's halftone font
+
+If you intend to produce pictures of size >= 256 x 256, you'll need to
+expand TeX's memory (see my article in TUGboat vol 8 no 3 for more
+details). I can supply a TeX change file for VAX/VMS which effects this
+change (and provides an editor interface) either by e-MAIL or on tape.
+Contact me for more details.
+
+If you want to use this software, but you're not a TeX guru...find
+someone who is! He/she will be able to generate convert the Metafont
+source for the halftone font (HALFTONE.MF) to a form acceptible to
+TeX, and put it in the right directories for you to use. I can supply
+outline help, but the font generation process tends to be horribly
+site-dependent. Sorry.
+
+If you have any trouble with the software, please let me know (it's not
+quite the same as the version I use myself). I'm particularly keen
+to receive feedback from non-VMS sites.
+
+ `Alien' (ALIEN @UK.AC.ESSEX.ESE on JANET)
diff --git a/fonts/halftone/boat.tex b/fonts/halftone/boat.tex
new file mode 100644
index 0000000000..37b1bbe7f2
--- /dev/null
+++ b/fonts/halftone/boat.tex
@@ -0,0 +1,873 @@
+ \hbox{\vbox{\halftone\offinterlineskip % machine-generated by TEXPIC.
+ \hbox{eaec\char94{}`ecZW`\char94{}\char92{}VU\char94{}X]c\char95{}\char92{}`\char92{}`acdghc`hjjjjjkkjdbbbcdddaYTUWZ[ZbdVW]%
+ `bb``cbbUMLKPUYXPONMNQRQSVVVTVWXXTQQOOOOOOOOPOOPOOPOOOOOOPOOSXSSSPOOQUTTVWWVWVTWWTTVUSQQSRUUVVTUVUSRQQQUVVRPOOOONOOPSSTRONO%
+ QTVZ]ab\char95{}UTW\char95{}`\char94{}`aa\char95{}\char95{}\char94{}``[]\char95{}``aa`X\char95{}bchfhggiiijjhhfZ\char94{}\char95{}%
+ `\char95{}a`XQPPPQQQPPPPPPPPPS}
+ \hbox{]PWQKTX\char92{}KHOHHIMXPWaWPSUWX]\char92{}\char95{}aZT`ddebaehgfggghggigYCD\char94{}cfdde]CCQIT`\char92{}Z`cL?=::@SK%
+ D=>>>??@??@@??@@A@@@AAA@@@@@AAAB@@@@@@@@@@A@@@@@@@@@@?@@@@@@@A@@@@@@AA@@AA@AAAA@@AAA@AAAAAAA@@A@AAAA@@@ADDAGKOX\char94{}`ed%
+ XTTYVW`adaaa\char94{}\char94{}\char95{}\char92{}\char94{}\char95{}\char95{}cd\char94{}S]`\char95{}bbd`\char95{}cggehdcf\char92{}%
+ MFFDLX\char95{}XKAAAA@@????????F}
+ \hbox{\char95{}SQOLOTYSMOMNSTYNMRLSWTXW[[`a\char95{}\char95{}ccbd\char95{}`cbefhhhggfijdSWhheefffWMI=<L\char94{}aefaYKB;Ebc%
+ J>=>>>>????????@?@@@@@A@@@@@@@@@@@@@AA@@@@@@@@@@A@A@A@@@@@@AAA@A@A@AAA@A@A@@@@@@@@@@@@@@A@@AA@@@@>A@@@@CJTGEOKS\char95{}aee%
+ b\char92{}YVWR\char95{}b`\char95{}\char94{}`]\char92{}]Z]\char95{}]\char94{}cbbffdebeabbffgfec]B>????@CMYZNA@@??????>>@R}
+ \hbox{`TPFHNTTVTXQSV[c]TTTQVWaZ`abdabcbcc\char95{}]cecchghhhghfed`eeeeffge\char95{}HEEI[dgg\char94{}baZFH\char95{}[F==>>>>>%
+ ??@???@@??@@@@@@@@@@@@A@A@@?@A@@@@@@@@@@@?@AA@@?@?@@@A@@@@@@@A@@@@@@@@@@@AAA@@@AA@@A@A@@@@@?@@@AGYWRSPNW]\char95{}bc```[Ya\char94{}%
+ \char94{}]\char94{}\char94{}\char94{}]\char92{}\char92{}[\char95{}XKZZ]fgfdhghfbfggeeeY>>>>??@??@GY[MC?????A>?AW}
+ \hbox{]IKHMTORV]TMPRMY]\char92{}\char92{}Y`Z\char94{}bdecbcaa`\char95{}\char95{}b`V`egcdgehiifhhf]aefgdge\char95{}XZa\char92{}%
+ N\char92{}debODHa\char94{}PE@===>>>>???@???@??@?@@@@@@@@@@@?@@@@?@@@@?A@@@@@@@@@@AA@@@@@@@@AAAAAA@@@@AA@@@@@@AA@A@@@AAA?@@@%
+ A@@A?@???@DNZWWKGMR\char95{}a``a\char95{}`\char92{}VWUY\char94{}[[XX\char92{}[`ba``dgedc]TQTbgfhgeeY>>???@???@?@J\char92{}[%
+ PKONTRHEJW}
+ \hbox{\char92{}EGQJRTSZ\char95{}XVSQX\char94{}bda\char94{}\char92{}]acdeddbbbZV\char92{}`a\char94{}aefdcigfjeUWdggfffgYeef\char95{}%
+ eie[WXMQUXELIC=<<==>=>>????????@@@?@@@@@@@@AAAAA@@@@@@@@@?A@@@??@@@@@@???@@?@@@A@A@A@@@@@@@@@@@@@@@A@A@@@@@@@@@@@@@?@@??@DV%
+ \char92{}XQHFJZbbaaab\char92{}OKNWa\char94{}ZRX]`a[\char94{}]\char92{}edWGIHNBH`cfehecY>>>????>??@@?AO`badebd[[T}
+ \hbox{cJHUMPZW\char92{}b`SMNR\char95{}ee`XT``aceeda\char95{}YUR\char95{}cd``ehdfhhhgeUYfhjifgffghjihdaVQK?Veb\char92{}\char95{}%
+ L<:;<==>>??@?@?@??@@@@@?@@@@@@@@@@@@@?@@@@@?@?@????????@@@@???@@@@@@@@@AA@AA@@@@AA@@@AAA@@@AAA@A@@@AAA@@?????BS`VLIICQ\char94{}%
+ aaba\char95{}YIHFOY\char92{}XQ]\char94{}\char95{}\char95{}XNMIOWJ=@DCBJbdfeedd`H@?>>>?????@@AFUX]\char94{}ddefe[}
+ \hbox{eZTSGPYYT]ZSRNT\char95{}db`SZ\char95{}[ZcgfeaVHFM[`]afegfgehiigacdhhhefhiiiihhXIFKONeghb]ZC<<<==>=>>????????@?@@??@@@%
+ @@@A@@@A@?@@@@@@?@@@@@@@@@A@@@@@?@@@@@@@A@AAAA@@@@@@@@@@@@AA@@@@@@@@@?@@A@@@???>?BO]a\char95{}WWTY\char94{}bb`bc]QVUWVRUV]V%
+ ]WYUD@FHEEC>?>NeefgfedaWZTKB?>>?>?BDEK\char94{}`]\char92{}bebZW\char92{}}
+ \hbox{e[Y`UT[a\char94{}YOOY\char92{}Z][W]XabY\char92{}affd\char94{}PMHMLKM\char92{}cddegegghhfeefhgfehhhed\char94{}SG@CAJah%
+ hj\char95{}VaZC;===>=>>????@@?@@@@@@@@@@@@@@A@@A@?@@@?@@??@@@??@@@?@@@@@???@@?@@@@@A@@@@A@A@@@@@@@@@@@@@@@A@@@@@A@@??????BE%
+ O\char94{}d\char92{}\char95{}`aZW]RS\char92{}]YZ\char92{}VSOS\char92{}OFLSVIA@BFIOC>>=MegefeedW>?EPYYTLABCFPQS\char94{}[TY\char95{}%
+ `[ICV}
+ \hbox{g]VHCS\char94{}c\char95{}VJHNX\char95{}YTYbdec`b\char95{}ddd`HB>SREL]cgeeegfgggfedgggbU[hhb`RGAPYF<TgkjiihcJ<;===>>>?%
+ >??????@@?@?@@@@@?@A@@@@??@??@????@?@@?@@@@@AA@??@@@@@@@@AA@A@@@@@@AA@@@@@@@@@@@@@@@@@@@@@@@A?ACEDAHY\char95{}\char92{}W]`Z%
+ NPOT]c`YWXYXQVCBHIHCA>=>?DB>>=NdefgcdcX?=>?BCLWYVIFOLGNJVQY\char92{}LDDS}
+ \hbox{f\char92{}YTPS\char94{}\char94{}\char94{}[QJPXaaZbfdb``b\char95{}cffdTHESZWP]cdedceefdiifYYgc]WK`h`WACGXgXV]fi\char95{}%
+ Pc\char94{}\char95{}VA<<==>>??????@???@@@@@@@@@@A@@?@@?@@@?@?@@?@?@@??@@?@@@@????@@@A@@@@@@@@@@@@@@AA@@AA?@@@@@@@@@@@@@@BDJ%
+ FFGHKCCKSGPX`]WTSV]\char95{}`VUXQSTKAAFHJJE>==>?>===PdeeddcbV@=BFGCD?FY`UJHBCCIOVNOYPY}
+ \hbox{f\char95{}\char95{}UPQOMIMOXWQ]fabeccebadggffa`a`UVKST\char94{}bcefffgiih[K[RH`dgjhgYR\char95{}hegkhe\char95{}TJ`c`]F%
+ <=<==>=>>?????????????????@???@???@@???@?@@???@???@A@?@@???@@@@@@@@@@@@@@AAA@@@@@@A?@@?@@@@@@@?@@ACHSQHOFCJHF@=BHWXQGJOY]\char94{}%
+ ]ZXURNE@?DMNRFABCAB====OegfccbdUA=@JQNHBCEJNUWUC=CS]VV``\char95{}}
+ \hbox{e]\char95{}WUXTJPVUW\char92{}\char92{}[\char95{}bcegdeeacfefcYYW[WZ\char95{}YX`ceeefeghifaMV\char94{}dhihjiighmmhjiZO%
+ TUEHKKBAB<<==>>>>??????????@?@?@?@@?@@???@@??@???@@?@???@@@@@??@?>????>??@@@@@@@@@@@?@@@@@?@@@@@@@????@??AEJX\char92{}ROGFH%
+ EA>>?GSQHDGKP\char92{}\char95{}XNZ]QD=;@GZ\char92{}WHBCNI@>===McfffddeYBAFFU\char92{}QPK@;:::HSOT`dbaccb}
+ \hbox{cSUUSTPHNU[\char95{}b[TYaeehedcccfgfbUQRI@?QZ]Xddd\char94{}bfhhdW\char94{}\char92{}YcggghhgddgkgcceXQYbL==@=LM@==>>>>%
+ ???????@???@???@@@??@?????@???????@?????@????????>??>@???@@@@@@@A@@@A@@@A@@@A@@?@@?@@@@?AEKT]a\char95{}NJNH@??=?ENUMADIPLNW%
+ RR\char94{}L=<=CKP]YHEHQSHA<>@Pccedcdc[NRZ\char92{}`c`\char92{}TG?998?DHRbddaaac}
+ \hbox{`MQUQNKOPX[acaVQ[bdgecbabegfcZXJ?=9>LM\char94{}fdffefiabbf\char95{}QOTRSRW[PKQTGLO\char94{}][SHB:;;=IG>===>?>?>?>>???%
+ ??????????????????@?@?????@@@@???@?@@@?@@?@?@?@??@@A@@@@A?@?@@@???@?@?@??@??@@@?CGR]\char92{}dcWLUZHD>@EJIUODFNLLIUYT[J=<?G%
+ WRULDBJY\char95{}QB=BGU\char94{}abecdda]X\char94{}aadba[PH=9;;@Ucb\char95{}YU\char94{}]a}
+ \hbox{gWUTZRSSKSW\char92{}Yca[T\char92{}bfdc`\char94{}bbefd`]VGA:>?R]`aefdhfLN\char95{}bTLD@;:<>C??MF@K\char95{}]]E;;:;;<<=%
+ >===>>?>????????????@?@????????@?@@@@???@????@?????@@@?@??@?@?@@?@@?@@@@@@?@@@@@@@@@@?@?@@@@@@@@@FR`]Z\char95{}OKX]ZIAAFOFT%
+ PIKCGUJQWUIA==BFSYOLB>CW]NEACMVW[]bcddaa]]`cdedYZXG@@DL`ec\char94{}MM]Z\char92{}}
+ \hbox{\char92{}BIY[\char95{}\char92{}XTV\char94{}YXcc]]T\char95{}`aa]]bedge\char95{}[ZH?9;BCI\char92{}[\char94{}deiia`\char95{}%
+ `E<P]PEBIIEKc\char95{}Ybgi]D;;AB=;<<==>>>>>????>???>>??>?????????????@@?@???@??@?@@????@@@@@@?@?@@@@@@@>?@A@@@@@@A@@@@@@@?@%
+ @@@??@@?@@DIT[OKEDIPNHKGDGEKCFB>DNDBGEE?@EKKOZYHA@BNNDHJEP[\char94{}]\char95{}\char95{}cbc\char95{}\char92{}\char92{}\char92{}%
+ \char94{}addccc\char95{}OHFQZbdcaUS[a\char95{}}
+ \hbox{ZBZ\char95{}\char94{}c\char95{}[T\char94{}`X\char92{}fgffbca[XS`ceegfd`\char92{}[NIII@M\char92{}bddff`[chg[NDHPY`[TT\char94{}%
+ jjjfheUMQISTB<<<====>>>>>>??>???????????@????????@@@@@@???@@@@?????@@@??@@@??@@?????@@@@@@@?@@@@@?@@@@@@@@??@??A@?DGIC@?@@B%
+ CFOSSJIIEC>=@C>=>BFGKONQWPLIKKIIHBNRGHQ\char94{}``abba]VY\char92{}\char95{}bdddfeaRNSY\char92{}cccabaab`}
+ \hbox{\char94{}T`Y\char95{}e`THR`dddfgd`b`\char95{}`[`cfeegcacc\char95{}]S><O`fhdddXPcgegbNADT\char94{}]bMIb\char95{}\char95{}%
+ Vaj`\char94{}g\char95{}b`J=<<=>>>>???>>?????@????@?????????????@?@@??????@??@@@?@?@@?@?@@?@@@@@?@@@@@@@@@@@@@@A@@@A@A@?@A@@%
+ @@??ADD@????@@?F]`XKDEG>>BEBA>CGHT[RSYPCBRWSNFAMXUKR[\char94{}\char95{}`ba`\char95{}Z]\char94{}a`bccbb]NZ\char95{}]]Z`cccca%
+ a]}
+ \hbox{bY`VZec\char92{}W\char92{}`\char94{}acgb\char92{}YYY\char92{}\char95{}bcccfegccdcb`TIGTdfedcc]HKdfgh`RYcZ`ggV`W\char92{}%
+ XWfhgehVG>;<<<==>>>>>>>>?>?????????@??@@@?@??@?@@@???????@@?@?@@@@A????@@@@@@@??@@@@@?@?@@@@@@@@@@@@@@@AA@@@@@@@@@@@@@????B%
+ QXXJ@AA>@FOTICHLFTVNQ\char92{}SIJUYTKGBJR\char94{}ZTX\char94{}]\char95{}a\char92{}[\char92{}Y]\char94{}`bbba\char94{}\char92{}%
+ YZ`abYRVWVbcc`\char95{}}
+ \hbox{aS]VV`]\char95{}[\char95{}Z\char95{}ccbXX[b\char94{}\char94{}abbbfdfgc`a\char94{}`caaT\char92{}dddeefc\char95{}X\char95{}%
+ ffijga\char94{}cfifYdNIICMNJPSJ@<<<===>>??>?@?????????@@@?@@???@@???????????????A@???????@?????@@@??@@?@@@?@@?@@@@@@@?@@@@@%
+ @A@@AA@A@@@@@@A@@?@@?>BEHJD>??>AEQ`WFHE@INRYMOMNYYVSQILV]TRY\char94{}YTTVWTQZY]aaaaZ]\char95{}[\char95{}a\char94{}XUSSZdceb%
+ a}
+ \hbox{\char94{}FPRWTQZVVVSW\char94{}]QJS\char92{}\char95{}`dedbeeeeaa``\char95{}]U\char95{}cddeefhgihghfhgjjdZcjhbgiP>8899;%
+ :>=;<<====>>>>>>>>>??>???@@@??@???@?@@??@?@@??????>?@??@@?@@@@?@@@?@?@@@@@@@@@@@?@@@@@????@@@@?@@@@@A@@@@@@@@@@@@@@?>?@@@>>%
+ >?AEGM\char92{}YRLDDFDEIOROQZ[OPYVOX[ONY]\char92{}TQVWSNYYZaabb\char95{}\char95{}YQT[\char95{}\char94{}\char92{}YW\char95{}%
+ `cedc}
+ \hbox{\char95{}OJOTHNWMZZHOYVLPNO]`bcdbdgd`[aadec`bdefdcdfhfhiiiijghgdgkh\char95{}Zg\char95{}@888=I?<;<<=<===>>?>????>?????%
+ @@?>@@?????@?@@??@@?????????????@???@@????????@@@@@??@????@@@@?@@@@@@@@@A@@@A@@A@@@@@@A@@@@?@@?????>?BHUQSSYSJJCBEDKKZXV]XI%
+ N[TRWSNUVYYNRWZ]YQZ\char95{}`a`a\char94{}TQT]ba`\char92{}VW\char92{}\char94{}dda}
+ \hbox{\char92{}TTIKNRZJMWSJQULRXY[a`aabbcd`\char94{}bccdcddcefdddghgejkhhiggijiid\char92{}JZ[B@A>K\char94{}O?;;<<===>>>?>>>%
+ >>>>>>?????>???@?>???@???????????@??????@?@@@?@??@@??@@@@??@@@@??@@@@@?@?@?@@@@@A@@@@@@@@@@@@@?@@@@??????>?>?ADT\char94{}NP%
+ \char92{}\char95{}ZSNFJKMTRXXW[KQ]QNNMNVSSWVRX\char92{}\char95{}\char95{}\char92{}[`beca\char95{}W[\char94{}\char95{}`baa]V%
+ YX`cb}
+ \hbox{ZWa[[ZY\char95{}ZRSYMUTMWYX\char92{}\char95{}\char94{}]X\char95{}cbbdabcedceecdgfgghheijmiijjiilmkhf\char94{}fgTMWG]e%
+ S@;;<<==>>>>>>?>>?>>>????@@?@@?@@????@@@@?@??@??@@???@??@@?@@??@??????@???@?@?????@@@??@??@@@??@@@@@@@@@@AAA@AA@@@@@@@@@???%
+ ?@AFO`XHN\char94{}]VRRV]XYRTZ\char95{}]WY]YLNMLWYUTVZ[ZY\char92{}[\char92{}\char95{}abdc]Z\char94{}]]\char95{}aab\char95{}\char94{}%
+ ]\char92{}Zab}
+ \hbox{]Q][W]QR][YWSQNDKZ\char95{}\char95{}\char92{}XX\char92{}\char94{}ccab`accbcbdegedeggggjhlihkhjjljjiijjkgecegUA::;<<==%
+ >>>?????>>??>????????>???????????????????????????????@?????@????@???@@@????@@@?@?@?@@@?@@@A@AA@@@A@@@@@@@@?@@?????????AHONP%
+ PZ`VKIS`a\char94{}XUY\char92{}W[`baYPNRV[ZZZ\char92{}\char95{}TITWY[\char95{}bcbaa`aa\char94{}abcddc\char92{}T`a}
+ \hbox{\char95{}PUVSSRRWWUROOKMS\char95{}bZTOW`bbbbbabcddcbgeheddfhhiihiijjiikjhkijjkhgcgkjZHC;;;<<===>>>>>>?>>>>??????>????%
+ ?@??@@@????????@@@??@????@??@@@@???@?@@?@@????????????@??@@@???@?@@@@@@A@@@@@@@@@@@?@??????????@CHFHV`XIIS\char92{}a\char95{}%
+ YWX\char92{}WW[\char95{}`\char92{}WQWY\char94{}\char92{}\char92{}[W\char92{}YTRUX\char95{}a`abbbbdc\char92{}`bbbcb[R[\char94{}%
+ }
+ \hbox{\char92{}MNTVJPORTRTXQTV[]`]YT[\char95{}dbc`ba``c`\char94{}\char94{}faebdeghhihffiiihgkklljgjihhihkkhgO>;;<===>>>>>?>%
+ >>>>?>?@@?????????@???????????????????????????@?@????@?????@?@???@?????@@@@@@@@@@@AA@@@A@@@@A@@@@@?>??@????>???>@C>AR[PGNST%
+ ZUKQX]\char94{}[[aXNQXXSX\char92{}\char92{}Z\char92{}\char94{}WT[[\char94{}`a`a\char95{}\char95{}\char95{}bcdbcabbba\char94{}%
+ WU]}
+ \hbox{`TLSYPMTRRSPQS\char92{}c`]]\char95{}\char92{}]bcbb`bab`bbcacedcadefhgfegfhhhggjlljjimkhjkjijjiS=::;<===>>>>>>>>>>>>??%
+ ???>?>???????>????>?>?>???????????@@?@?@??@????@@@?@@@???????????@??@@@@@A@@@@@@@A@@@@@@@????????????=>>>><?ELEBDELRVNLTZWT%
+ PWUOV\char92{}[UZ]Z]\char94{}\char95{}WT[\char94{}\char95{}\char94{}YZaba`baadac\char95{}]YW\char92{}]\char92{}\char94{}}
+ \hbox{f\char95{}QLOWTZ]WRYYZ\char94{}a\char95{}b``eabcca\char95{}\char94{}ba\char95{}]`\char94{}\char95{}abcbdddge`dhgeihjh%
+ hklilikklkjkkdckfE:;;<=<=>>>>???>?????@@???????@@??@????@????????@?@??????????@????@?@????@???>??????????@??@A@@@A@@@AAA@@A%
+ @@@A@@@@??@?@@?????>>>><=>@A<;<AEPNDIV[\char94{}SLJOUZ\char94{}\char94{}]\char94{}\char92{}\char94{}\char95{}]UIPZ`\char95{}%
+ MQ\char94{}\char95{}\char94{}aaebd\char92{}ab\char94{}TOW[UX}
+ \hbox{gbVW]\char92{}\char92{}[[OOQ\char94{}\char95{}\char94{}bdffcdbbc`]WY`aa\char94{}\char94{}aabbbbcedfc\char95{}bhedhihi%
+ hjhhjkkljkijljfifI<;;<<==>>>>?????????@??????@?????????>??????????@@???????@?@???@@@??@@@@?@@@?@????@@@@?@?@A@@@AAAA@A@A@@A%
+ @@@A@@@???@@??@????>>==<=<=?=;<DPXUNMQ]\char94{}\char94{}KDEI[a\char95{}ZX]\char95{}\char94{}`XNQY\char94{}]PDL\char92{}ac\char92{}%
+ Z\char95{}da\char92{}VX[XX\char92{}WV}
+ \hbox{\char94{}[\char92{}\char95{}\char94{}\char94{}WWRXUY`\char95{}cddefcc`V][]\char95{}[\char95{}aaa\char95{}`bbcbccdefgh%
+ hgecfhfjge\char94{}eiiijhlkimkljaD;;;<<<===>>>??@???@?@@??>???????@@???????????@@@@????@?@@??@@??>??????@@@??????????@@???@%
+ @?@@@AAA@@@@@@@@?@@@AAA@@@?@@@@@??>>====<?AFE>AIXZQLNPZ\char94{}\char94{}RFHS[a\char92{}UW]]]\char95{}VNR[\char92{}]PLN[][O%
+ SP\char92{}dc\char95{}\char95{}\char92{}VWXYV}
+ \hbox{`\char92{}`\char92{}YXYXRXccb`edd``c`YZSMU]\char94{}`cbabaa`adecffdegjgefehegfc\char95{}eb]SafkjkmmlkS?;;<<===>>>???>%
+ @??@?????@??@@@??@???????????@????@?????@?????????>??@?@@???@@?@?@@@@@@@??@@@@@@AAAAAA@A@@A@@@@@@A@?@???????>>>====<?EOJFFO%
+ []XIFKV[XTPVTS\char94{}\char92{}X\char92{}\char94{}\char95{}\char95{}\char95{}\char92{}TWTXXOF?HNRHOQJV\char94{}\char95{}eb%
+ VUY\char92{}\char94{}}
+ \hbox{d``]\char92{}Z[`]\char94{}cccdge\char95{}ZXaaZNHMNW`bcaaabbb\char95{}bcdeffeikgghghffhbYNI@@BKdjknnmdJ;:;<<<===>>>>>>%
+ >==;9::=?@?@@?@@?????????@???@@@??@??>@@???????@@?>=?@???@?@??????@???????@@?>:888<;?@@@@@A@@@A@AAA@@@???????==<?DGAEHOPJKO%
+ ]`\char95{}VQZ]\char95{}QOZ`\char95{}WZWOX\char92{}`a\char95{}\char94{}WWVVUI?;@BBCLGCDP\char92{}baZMW]`}
+ \hbox{eba\char95{}]]\char95{}a``b`cfddVKS[\char92{}XOQQNZaa\char95{}a]\char94{}acZW`bdbefeghffegefh`M;:9<ADJV\char94{}\char95{}%
+ ilk`F;;<<<<=<>>>>>>955444446?>?@A@@???????>????????????????????????????????????@????????????@???=75443448=@AAAA?>?AA@?AA@??%
+ @???>>==>CJRKLHISTX\char92{}]\char94{}\char95{}a]][`ZZ`\char94{}UTXTW]\char92{}\char95{}\char94{}`ZJIMUZPC>=>>?CGHCM]]\char92{}%
+ [c`\char94{}\char95{}}
+ \hbox{c\char95{}\char94{}\char95{}\char92{}[X][\char95{}adcfdfe`XW[]Z[]Y\char92{}a`baabdb]Uaaccdcc`cfdfhecbNOFF?9<>@BMO\char95{}%
+ ZSM=;;;<<===>>=>>9433433334766>@@@????@>??????????@??@?@?????@??@@@@???????????????@????@@???@?;6444344458?@?<6569=;:;?@@??%
+ ???=>>@EKIUPYRNQU\char95{}]\char92{}Z\char92{}ab\char95{}Za``[ZHEYY\char94{}\char92{}``aaTBQ]]]\char92{}SDA@>@>@B@JPRYabda`%
+ }
+ \hbox{]W\char92{}]\char95{}]ZZ]\char94{}cddfdeaZZU\char92{}\char95{}`X]`aabb`\char94{}`c\char95{}cdbaadaaadcegfhed\char95{}%
+ R\char95{}]cWC:::;@@A?;>::;<<<===>>==843434333333338=?@@@@@????@??????>????@@????@@@?????>>>?>>?>???????@@????@?@?@?:777434%
+ 33336<:533335544;@?@????>?DHSXTW]\char94{}\char92{}LOZ\char94{}a\char95{}[Yada``baXSPJ\char92{}Z]]\char92{}Z`cQBPbaYY\char92{}%
+ G@>?=<<>>EPY\char95{}]ac\char92{}\char92{}}
+ \hbox{SE\char95{}\char94{}[TVO[]\char95{}cdefbWLUZZ\char94{}[[[\char95{}ab`a\char95{}`ba\char92{}bcb`acccaeggfgfcZced\char95{}%
+ dfWC:9:<?<;99:;<<<<====>;543343433333333347:>@@??@????????@@?????????????????@?????????????@??@@??@@???A@=;9:74344323343333%
+ 233335:>>??>>=?FR[\char94{}RX\char95{}`]ZZ\char92{}\char95{}``XW\char94{}c`\char92{}[aaYUX\char94{}a[X[ZZ\char95{}a]OYb\char92{}%
+ JCIDA?=;;:;=FXRY\char95{}b\char95{}\char92{}U}
+ \hbox{SE`d\char94{}[[YS[]aZbad]UYZ]\char94{}[\char95{}\char95{}abc``bcbabcba\char95{}bcdccedfebge\char92{}TcgfcbZD999:<:999%
+ 9:<<<<<<=>>944333443444434343448@@@?@@????????@???@@@@?@?????????>>?????>?@??????????@@?@@@@?>;9643333233333333333334449>??%
+ =@IU\char94{}b\char95{}\char92{}\char95{}`YZ\char94{}]\char94{}bb]W]ca\char95{}[baa\char94{}PX\char95{}XXZ\char92{}\char92{}%
+ `aba\char94{}\char94{}UBBBDC<?<;;;<@HNS[\char94{}YON}
+ \hbox{SFb`V`baT]\char94{}c`X\char94{}dcPNTQXY\char92{}\char95{}`cda\char95{}ccbacd\char95{}abadcdeedcefhdeeefeTYF88889<:889%
+ 9:<;;<=====833334444344444343335;@?@B??????????????@??????????????>??????????@??????@??@@@??;7544333332333433322223321235<=%
+ =>FU[\char95{}a[\char94{}\char95{}UY\char95{}\char94{}]bb\char94{}W[\char94{}\char94{}]Y`bbbX]YVVZ`\char94{}\char94{}\char95{}%
+ cc\char95{}YVLNPNTMD=::=A@@DJURUIF}
+ \hbox{SGc\char94{}U]`\char94{}U`a\char95{}PY]\char95{}d[LJR]S\char94{}a`aaa\char95{}\char94{}a``bcaccccabdc`\char94{}ceb\char95{}%
+ ]ac[[OW@87888888889:;;<<<<==<5343344444444445443447?@@??@@????????@???>???????@@@???????????????????????@?@@>84433333332233%
+ 3333322222221112598<FRZW\char95{}``\char92{}WVX]bcad\char95{}\char95{}abdcc\char95{}cdc`[YYZ[\char95{}``cca\char92{}YLQUGKW%
+ O@;>CPHCACLKEE@}
+ \hbox{SHegd`\char95{}\char94{}`\char94{}OHNS[adaTHWb[\char94{}ccbaa\char92{}T]abbcdcccdbdcdcadcXR\char94{}bcQR``\char94{}F<%
+ :98888:::9;;;;<<<=94343344444445555444457??@@?????????>???>:7668<>>>????>>>>>?????>>????>>????@@@@>743343343332233332222233%
+ 3952211215HTZXU\char92{}\char94{}Y[VR[a`\char94{}ac\char94{}VW\char94{}baa``bbYW]\char92{}\char95{}baabada\char94{}WQJDDNHD%
+ FINWSNA>AC@?>}
+ \hbox{SHehfZY\char92{}`[JCSZ]\char94{}`Z[X\char92{}a[Z`d`cc\char94{}YW\char95{}a`dfbcbecdcda``WQ[`bZIUK]b]TJ<888=HHE99:::;:%
+ :;63333344444445555554448@@??????>??????<:8754345666;?????>>>??????>????>????>=?@?>7433433333212333322122249B96234247N``YO]%
+ ]Z[YZY]]a\char94{}]]W[]c[G@E[e]a\char94{}\char92{}`adbabdbaaaWICDFX]\char92{}``\char94{}NCCBB@<=}
+ \hbox{UJdgbRWaa\char94{}RL\char92{}cda\char94{}WNS\char92{}\char95{}[[`a\char95{}a\char95{}\char94{}QY`ccafccadfddd`WTTW`dc%
+ R;=>KR[e[C==AP\char94{}cR@9765432543334334444445555665458<?@@@??????????;654444444445:<=???>>?>>?>?>??>>>>><<<<=>?>95434334%
+ 33311233322122237IP@:9C?GKXbc\char94{}OUZ[]\char94{}\char95{}W]`][US\char95{}b\char95{}\char94{}J?BTdedfd`abcc`acccdb\char95{}%
+ XXUYccbec`UFEQKD<=}
+ \hbox{UOdfbSR\char92{}bb[S[[\char92{}YPJGPZ\char94{}\char94{}ab`\char94{}b\char94{}[Y]bdaabccacefedeb][[bb]RG?<?=IQZNTKPhll%
+ gV;11112224<84333444454555566555558<?@@???>>>>==;854344434444556:>??>>>??>??>>>>?>><:9;<9;99743333433211233232222213G\char92{}%
+ RNGRRVRY``b]\char92{}SU\char94{}`\char94{}\char94{}X`[Yac\char94{}`\char92{}VCFXge`dfefdecdbaddedac`cadefbb\char92{}XIBEVYD%
+ <<}
+ \hbox{TPcdfZMOYb`\char94{}\char92{}OOIDOKMXaaabb``\char95{}\char92{}[Yaccdb\char95{}acddfeggcb\char95{}\char92{}Xb[Z[JBKPSR%
+ \char92{}ejfhkklleC1367ID56IL833344445565665555544448?@@?>>>>=<;:7544444444344344;??>>?>>>>?<;<>??>=:87:9765544433343335333%
+ 357922139GX[[YROX[Y[`\char94{}\char94{}ZZUX[][\char94{}\char92{}``X`\char95{}]JHITafeeffefedccdbcde`dfddcdbfid\char92{}SSKH%
+ KRF=<}
+ \hbox{TTddf\char95{}JL\char95{}ceb\char94{}QC?JXULVaa\char95{}`aa`\char95{}``\char95{}\char95{}dccb]\char95{}dddffgdddb\char95{}%
+ UU\char94{}`c]\char92{}\char92{}]E=NgijhjliibE<NZYi\char92{}<;TM8333344566777765655544449>?>>>>>>=::75556444444443346>@????%
+ ???>>>>>????=;887544444433333<A?53339HM53124BUWV\char94{}VNYXU[]\char95{}YV[ZZX[]\char94{}abYM]a\char92{}\char94{}Y\char94{}%
+ Ya[dfggdgfeecddccf\char94{}aeeeb\char95{}dehdb\char94{}`\char94{}ZURI?<}
+ \hbox{RMbdffPUcfeda\char94{}PEHTZY\char92{}\char95{}`\char95{}cac`ab`a\char95{}`b``\char95{}bccffgjfefebbV]\char94{}dfebbWJ%
+ JZa]affeWIBUighg]ED>33333344467888886765544445:=???=>;::::8666444444454345;@??@?????????>>>>=<:86555444433333:PVB7223;SN833%
+ 6CKPW\char95{}XNSUST\char92{}\char94{}b]VYROVUY\char92{}\char92{}NGRacb\char95{}QJ]Zdbfiecefefeccddecedd`Z\char94{}chedfdba%
+ bYA;<}
+ \hbox{TO]]dh\char95{}[dfe\char95{}ZXUSRU\char92{}b`[UX`acaba``\char92{}\char94{}a\char94{}]acbcdehhfefddfef\char95{}ghighcJ%
+ ??NRYJB\char95{}bZ`lkXXDNF>54343344446788998898864454455<??@><==>=;865445444444445:>>>????????????>>;9765578544333334@YbL93%
+ 3:JVT=AFHILITW\char92{}SNUPR`\char95{}]ZYYNJUPMPTIIZaaWTX[Vb`cgeeceefdbPUbcgeff\char92{}a`Y\char95{}dffeb`b`XA:<}
+ \hbox{XW[]dhf[cc[Z]YUVVW[adbY]`cc`\char95{}`\char95{}a[\char92{}aaa`bcdeegfeficbfegffgkggcP:99>WSCPgill`FEE[F5:H?5444445789%
+ 9999:::96555544469<?@><<>?=:764554444444557;>????>>???=<=<<:8875455754333335=K[\char94{}K:328MVYMSUPLSNJFTWUVZYa\char94{}WM%
+ SVTOSUMMX]`f``Z\char94{}ffedcdeeeddfgdec[aehgffeccegeffgfcabX@=B}
+ \hbox{][]acge\char95{}\char95{}RWbaYWROW]`de`cefeabca`a``aa`beddeffffibbeeee`djjhdRNMENhhSR\char94{}ebXG:=7=64DaP9444455778%
+ 999:;::965565554447>??===;:865555444544455779=>==;<>=<;::987576654544333234=LT[UB::;=DOPRX\char95{}VRTRJLVRLQVW\char94{}\char94{}%
+ `YJOVVWXSKKXdeffdd`a]LQ[eeceefggY\char92{}`cfghgffegfdbghghfecXEHR}
+ \hbox{bV[b`\char95{}]aaW\char92{}cb[\char94{}aYYb\char94{}adcdeffcedc\char95{}]`a\char95{}bcaacdefgadgdddee\char92{}Vbhiihi%
+ ifeklgSKGRL32@M>;B<NdN64545567777:9:::98776654444447<>><::97766554455445566667:;::;::99:9775444444444432234>R\char92{}\char95{}%
+ PB9CJHFVFEPb\char95{}SVPJPXULHKR]a`\char95{}UVXV\char94{}][W`cedc\char94{}XRKRE4>WcbffffgfYKTNehggedggfedggggggfbY]`}
+ \hbox{bWW\char92{}`XX\char94{}]R\char92{}ecb]]\char94{}``[Ydeeeggdfcd\char95{}\char94{}b`accbabccggdefhfhgc\char94{}`acghhk%
+ hhgig\char95{}L]WC78>[iaR\char95{}ZTF944445667889;99::8766654554444488<<::8767655544555556665578787567779864444434443332224%
+ :NY]P;59QPEVJHN[abaVTT\char92{}[UORZ\char95{}ba[\char92{}VW[\char94{}\char92{}a`dca[Z]XO><53:Vddeefefg[GZQ\char95{}gfeeeghf%
+ giigigcfeeadb}
+ \hbox{dbXVZYZ\char92{}X]cffc\char95{}X`bbabfffffhdfdcbbdbbbbccacefhhfgihhfaaeeehjhjhfieh\char92{}SgfZGS`gjjigS;644445676777%
+ 78888886665544554445569:::87786555555555666544555776555676433333444433332235<ANPIGJX\char92{}LLNJIR\char95{}c\char95{}RV[ZY%
+ \char92{}[Z\char92{}`ba``\char92{}[\char92{}`a]SZWXKINICDI<56Pceeedfefb[ceaeba\char94{}aegggghgfgggeeeca}
+ \hbox{d\char95{}YQUXLTQ\char92{}dedbbc`ccdgeefdffegfd`bdbccaccdcefgfggffeefiffffhjkigjmllhjhgfjhfghRF9444444556677665655676%
+ 765445555544446876787787766655666676544444554444434333334444444442248BVWHJTU]ULMWRMOYa\char95{}Z[YUX\char94{}`a]\char94{}ac%
+ cbd`Y`]TUOQWNG>HZ[JDEXdeeededb`]dfadca`c\char95{}dfihggedfheddcb}
+ \hbox{`Z\char95{}XUSQOL[gfefdc`effd`effhhgegddb`adcbabcfhfgfeggdgefhigZbjjjidkmmkkicO\char95{}jmjjfJ54445554555566655554555%
+ 55544555555445555567888777655666666654444444433333333343344445:?=333<P\char95{}[G<;P]ZPN\char94{}]SKS\char95{}b\char94{}]ZR%
+ U\char94{}`c\char94{}\char92{}\char95{}edabc\char94{}ceb`\char94{}\char94{}Y[QHH\char92{}a[TJ\char92{}ddeffgcb\char94{}]\char94{}%
+ dW\char92{}\char92{}]gd\char95{}]cgfjggefefdeca}
+ \hbox{[P]SNO]XKXbaefecddheebbegggegecebb`abbbbbggeeeffgggfghhUI\char94{}ikjjikmmkgd\char94{}]blmllkL54445555545565675655545%
+ 45445665655545455555676667655566767554444444443343333333344434:KGB54>R[]J8<KWWMK\char92{}a\char92{}TO\char95{}\char94{}SXYX%
+ X[\char92{}\char94{}`bbdeeeedcdeba`bcQNK`d`V\char94{}cefeefccccaZa\char95{}b\char92{}bgdbX\char94{}geedeffhhdfec}
+ \hbox{bZXINYb\char95{}W]bcaefegfffdacfgdfghgecda]a\char95{}\char95{}`bbeefgeggfhgihifR@TgikkmlmmkjjilklmnmkQ744445555566768%
+ 87776554555556666665564555555666565556566666544544444433444433334334346E`P88@U\char94{}b\char92{}WLV\char94{}YQOV\char94{}X%
+ QOWNE@IUNRV\char95{}badecadfacbcc\char94{}]a`VLL]b\char94{}JW``addedebegeegc`deee]aghd\char95{}cfhhgedff}
+ \hbox{c]VQQadaV]eaZcffeedgddbdefcabfdfdccaa\char95{}abcfegefadhhfijiigffh\char95{}jklgkklkjllmhcjkfX<6444454566667889887665%
+ 55555676655555555555555555555566667654454444334333433344433446?RV\char92{}HADS\char95{}fgeVL\char92{}V[\char92{}YW]TCJJGG@D%
+ ?CGQ[[Z\char94{}\char95{}ceca\char94{}b]c\char95{}[\char94{}RZNE\char94{}c\char92{}X[bfedeeddbbacegd\char95{}e[Zbeihfc`eehh%
+ feefc}
+ \hbox{aRSVQ\char94{}aaY\char94{}fdefehfededcbbc\char95{}]TY]Z``\char95{}Z\char95{}a`\char94{}dddfgdcebhghihhhh`Vcfefhgihlbk%
+ kkm\char94{}MZWOI;444445556667788888777877665666655555655545445555555555666654555433434433344444444345:CN]YE>KS`dgd]\char92{}%
+ R\char94{}c\char92{}VXOCOUWUKD@AGNBV[\char95{}`a\char95{}]\char92{}[YRZUV\char94{}\char94{}`]\char95{}b\char95{}TUXaefeddcd%
+ e\char94{}EXbeg`cdegehigfbachgdefdc}
+ \hbox{d[Y\char92{}\char95{}]\char94{}c`\char95{}]aedche\char95{}dedb\char92{}VW\char94{}bZZQAFYNQ`bc`cdbeecdefgfgihhgYLZ]\char95{}%
+ ZSQ`iikekjkgH6?:54444445455677778888888888887776766556665555545555555655556555445544444444444444444444448@HS>?@HP\char92{}f%
+ fc\char95{}``aZWYVKQRX]\char94{}KDVZSFW`ac`NCFNQRTKX`\char94{}aaZ\char94{}]\char95{}]\char94{}beeeededdXAZfde\char94{}\char94{}%
+ dgiffhee`ceggcdffc}
+ \hbox{a]W\char92{}\char95{}]]a[RS\char95{}edbcfccea\char92{}WPLW\char95{}a\char94{}P?>JOTbebbdcedffeehggihhhggcgeRLH@GXckjj%
+ jj`8345534454444555778888899888898999898887777765555454555555555555444445544443444344444444444446=?6657:HWdb\char92{}ddYWS]%
+ [URKYXXSXPMOMXZ\char94{}a\char95{}NRP@>B[a\char95{}dceb[\char94{}XXV]bdddeccddZZ\char95{}d\char95{}\char94{}`\char94{}U\char92{}%
+ ggihdd\char92{}\char95{}eddefedd}
+ \hbox{a\char94{}a\char92{}\char95{}ab\char95{}YOJU`d``c`bf\char95{}YWZS\char92{}\char94{}b`N>@PZYaeccadfeddgfgfggfgjjiikhYC%
+ FICBRgjljh`=B;@83444445555567988889988899999999998788876654555555555455554444445454444444444444444444444457:E@48=N`bY\char95{}%
+ bcUK[\char95{}]TUWKUQJMQOSULV`VTZ\char95{}MFBIY\char92{}[R]NABFJHRabbcecccca`\char95{}\char94{}\char92{}\char92{}bb\char95{}%
+ bdgecadbcdcZbeeec}
+ \hbox{a\char92{}`a``\char92{}ZTTLL]`VOX]bd`\char95{}\char95{}a\char94{}W[\char95{}`XPU]bcabdbcdeefefghjfgjjjjkjjg\char95{}X%
+ Z]eeVYhjkjbP`YU=53444455655568888899988999999999998888877655555555554555444444444444444443444444444444444447DD667Pd`\char94{}%
+ `a[\char95{}V[ab\char94{}b]XGGFJMKKNN\char92{}[RTYVD=<J]YJIMB@EHQRX`]\char94{}\char94{}]bbbccac[SW\char95{}a[\char94{}bWVVV%
+ bfhfddcbdcc}
+ \hbox{dXUYbb[T]]TNXZYYV\char92{}`\char94{}X[`[\char95{}]\char95{}abca\char95{}\char95{}b\char95{}\char95{}`deeefeeggeghhiji%
+ jikjjkggjkihfikmlaWce\char94{}G8333344455545678888888888:9::::::::988887766555555555444444455444444444444444334444344343344%
+ 6?KK95E\char92{}cbWXZZ\char94{}befefcQB:CV[SVSU[[YIBCECGORI>CK>>=ANVPXWTNS]`\char95{}`ace`SLW`cdf]QPP\char95{}gecba`TT\char94{}%
+ e}
+ \hbox{cROP[aZV\char94{}aXOYSW\char95{}YNGTOS]\char94{}VQ]d`cba\char95{}`\char94{}`aeffghffghhegiihhjiijkhe\char94{}ikmlllkk%
+ kgihgX<6B9334445555666788766678999::9::::::9997777765655545554444444454444544444444444443433443344447;>737AI]a\char94{}TL[e%
+ egdb[I88H[\char95{}]]\char92{}Y\char92{}YI<;@DDEID<:?D><:DXXNTRTMNUYZ]\char95{}ab`\char92{}Y\char92{}]bced]VY`a`bbaea`cd}
+ \hbox{\char95{}KYVXYNJT[XQKHS\char95{}\char94{}VLVYZ]]LGUbacdca`abbegfgdhhhgghfijikjihbbjijkjllmkkjlkjikdZNXA53445556666777%
+ 7666667899:::::;;::::98878776555555544544444445444444444444344434444444444444654457K]dg\char95{}HJ\char95{}b\char95{}\char92{}%
+ ]V=66<K[`\char92{}SNLIA:;FPLLHD<:BE@CHUYV[URUSPQSY]]\char95{}caSU[ddfeWUV\char95{}c\char95{}[b\char92{}\char95{}cdced}
+ \hbox{bT\char94{}[ZRGIQX\char92{}P@JOV\char95{}WKPXXWYIHQZ\char92{}bdcbcdddeecbhgfgjigighjjkiga[eeiihjilkjjjg`\char95{}kkkf%
+ L855545569778876666655678899;:::::::::988776544554444444444444444454544444443444443433344444344434:S`Xdh\char92{}JEJIS\char92{}%
+ PG;56:JRWPKDA<::APZZUG<;CLJNPNVU\char94{}YVVTSSRU\char94{}]X\char94{}]a\char95{}\char92{}adhf\char95{}OJRac```\char94{}cdeh%
+ b}
+ \hbox{f\char92{}\char94{}\char94{}UTKQYX[VCLRYZXSNTXYSMNPX\char95{}ccab`afdddadgefffgghggiihhcUHDU`daebhfijaVL]ikliS<>A8446%
+ 7:8778766666667667889:::::;::::988886555444444444444444455454444444444434444444444444444349PbghgeUOMIVc\char95{}VF==>@GKYVG%
+ =::=AGVYZPIHHTYVJIW[[[YXUTVYV\char92{}\char95{}][[bdaabfff]UVbbaXZ\char94{}cdffd}
+ \hbox{c\char94{}\char92{}UYWFT\char95{}\char94{}WYMU\char95{}\char94{}V\char92{}\char92{}VOZ]XQXVZ\char94{}bc]Y\char94{}R``%
+ [cgghghh[bhggehhhdLE<;<BE>AG]\char94{}XcgbZckmmh`VT\char95{}C7568976676666667766678899999:;::::9998876554444444444444444445%
+ 44444444444444444444444444444335;T\char95{}ddaQX[NObeePNOOUYHPM@<<?DGISabaZWSTWSKGS\char92{}YVUYTWUZWZ]]SW\char94{}bbb\char92{}%
+ adda\char94{}[bc`QU]Z`dfc}
+ \hbox{bVTMPXQQ\char92{}c[PY]YVMEZ\char94{}VY\char94{}]Y]\char94{}][\char92{}`TJ\char92{}PWWTeiiihhffdccdee\char92{}[UMZEA73%
+ 334<CPcacjgeimmmlje\char95{}OD8667778776666677777778899999;::::::9998776554444444445444445444444444444445444444544444443444%
+ 7=@O\char95{}`PDUW\char95{}]`e\char94{}a]Z\char95{}bTKKRWRQW]\char92{}Z`ccaVOUYWMJPUUWZ]\char92{}YRX\char92{}]\char92{}RPLM%
+ X`a\char95{}b`\char92{}]\char92{}[\char92{}\char94{}ab\char95{}\char95{}\char95{}][c[}
+ \hbox{\char94{}VXRPZSMV``]\char94{}WPJTJ\char92{}`ZV[[Z``ZUW`\char94{}\char95{}P@7@Udffhedb`a`\char94{}acX?75ANA:223456:LUV%
+ \char92{}hilknonnngbYWB4455799975566667767888989:::::;;:::9:9988766555454444555555555544445554455555555555555544544446@JC?<%
+ DYb]YYX\char95{}]\char94{}\char92{}[VWTIIA:DP]a\char94{}\char94{}\char95{}\char92{}SMU\char94{}\char92{}VSROORW[\char92{}YU%
+ W[\char92{}\char92{}UQHANX`\char94{}TYYXXZ[\char95{}bbe\char94{}I@EYL}
+ \hbox{\char94{}U[SV\char94{}\char92{}MQ\char92{}\char92{}]cVD?R\char92{}]b`\char94{}XWaa`VU\char94{}`edTP@:Wdehicc\char92{}%
+ @JOOSRC7<=KJD52=74567:=L[R`llnhajk\char95{}[ESL5445466755556666677788889999::::::::9:99887666555554555655655555554455555555%
+ 55556666666555545559:9BIAIXFGEDMZ`bb`JBPLFDJ\char92{}ccZTY\char92{}XNRZ\char95{}`]ZWMLQSZ\char95{}YUZ\char94{}UG@?@QQ[]FHMQ%
+ S`\char95{}begkaXNYNQ}
+ \hbox{bWXIS\char94{}\char95{}ULW[ZUODHY[adedYM\char92{}\char95{}cedddee`aK>[eggicd[@?:3696458IH=CQ[=99766;DTU\char95{}V`iY@%
+ ITG?<9<4444444445567787676677778899999999999:999887765555555566666666555544555444544556666666666665555556F[R@B=:88@DO``XC?S%
+ ZZW\char92{}dfd]]``\char94{}RNV\char94{}\char95{}\char95{}]\char92{}QMQV[\char94{}`]\char92{}\char95{}YF:AQ\char95{}]]XLNQW%
+ X\char95{}\char92{}XWchgfc`VW}
+ \hbox{cUUZW\char94{}\char95{}SRTWNNUU\char95{}a`becf\char94{}Pacfghfddef`RZ\char94{}effhghe\char92{}XTMA<6676?TNFQdVVOE768F%
+ JQD<=[ZA=<DRM>:55444444445668876766666666677888887888998887666666656667667766666665555544444455677788777766555567?WcRC848=E%
+ SX[ZLIR\char95{}\char95{}a\char92{}O`eca\char94{}\char95{}aZ\char95{}UW\char94{}[\char92{}\char92{}]UOV\char92{}\char95{}`]%
+ \char95{}\char94{}`\char94{}[Z\char92{}abbT=?DLHOSVQEN[eed\char95{}\char94{}\char95{}}
+ \hbox{\char95{}NOWY\char92{}]PJQOTVVZZ\char94{}bdefgfeeeihhge`dgecbafeeffh\char95{}\char95{}cafd]KBIO\char94{}hdbag\char94{}%
+ WVG:;9OA:DHDPC7BA9ANSHHC544454444568886766666666655667777777888887776666656667777777777777665555554456678998888876656669=JV%
+ \char94{}G56@NXY\char94{}]XNW]`QOMXT\char92{}bd\char95{}\char92{}TNVWU[\char92{}ZVWWSYZb\char95{}\char92{}[\char94{}`\char94{}%
+ \char92{}[\char92{}\char94{}`VSMH;CRB?A@<FNZabQWa}
+ \hbox{[KRVYU\char94{}VS``\char94{}QK[\char94{}T[ddfghffgffehgcfffdc`bcgefh[GFGchigadgiihiihYFB=AA6<:7<GG;99HE87DEESB5444454%
+ 4446899666556666656566666666677777766666666666778888999988876666766667789:;;::9:9888777668<FJD;@S[c]T\char92{}]VDKIFPVNKU\char94{}%
+ ``WJH]VQW]ZVPVZ\char95{}`a\char95{}`\char94{}`\char95{}[WZ\char94{}[]\char95{}a\char95{}U>@SSC>==;?EGP\char92{}]\char94{}}
+ \hbox{]RZYYQ[`dd`\char95{}\char92{}\char92{}\char95{}b\char94{}]bceghgggffdfe\char95{}dfgfccccgffig\char95{}]\char94{}fiihi%
+ jijiiijibNL<9956677974449A44568@6444445454455786654455544445555566666666776676655565557889::::::988888889999999;;<<<;;;::;:%
+ 9::87665899@V`Z`bZ\char94{}L@B??HD;GSNSY\char92{}PN@DKSTZ\char92{}QNW[[\char92{}\char94{}bbba\char92{}Z\char92{}XYZV\char95{}%
+ dd\char92{}NN\char92{}aYL=;;<=<=CIX}
+ \hbox{bY\char92{}\char94{}\char92{}ZY[c`\char92{}`\char95{}Ubecaabeeghhihfg\char95{}[agggfecabcegfhighijjkkkjjhikjkifL<@@9:%
+ ;;96443344444445444444444544444455444444434444444566666667667665554555579::;;;::::::999::::;;<;;;;<<;<;<<;;:;:87655556D\char92{}%
+ `fgghc\char92{}UDHH?66?YURSMH?>:BMPSZUR[`[Z[\char94{}d``\char92{}Z]\char92{}PNX\char95{}ca]X\char95{}aecWA;;;:99<?B}
+ \hbox{]Q[b\char95{}PSWW]]dcX\char92{}bbdedgigfihgid]Pafhgeddfcceehihhjjlljjlklhijigff\char92{}W\char94{}bWHSRF8434433344444%
+ 44444444454544444444444544344434445667767787776655555555678<<<;;<<<;;<<<;<;<<<<<<<<<<<<<<<;;;;:98878=<C[\char95{}\char92{}a%
+ a\char95{}\char95{}cYABB54:DGMNMNE<@JSTHSZTQU\char92{}[]\char94{}bb`a\char92{}XZYRTZ\char92{}\char94{}\char94{}\char95{}]cd%
+ ce\char95{}L<<<888::<}
+ \hbox{`T\char94{}b]VY\char92{}ddcg`OR``bddddW`fdgighgc[hfgdeeddegghiijijlijmlkhklkjjijjgfhO>KM=4444433444444444444445444444%
+ 4443344444344344444677775566566766666665456;<<<<;<<;;<;<;<<<<<<<<<<<;<<<<<<;<;;::99;ESY`cSVf\char94{}\char95{}eWE=6336?@;NR%
+ XNGFHM\char92{}TVXSLPTX\char95{}bddc``\char92{}WUY][\char95{}\char95{}`b`cbce`J;7877789;}
+ \hbox{aY\char95{}]UW]\char95{}ffbec]`cc\char92{}\char95{}acbVaeechhiih\char94{}fghfdefeecegjjjikjiklkjjkkhjikkidff]TOF63444%
+ 33344544454444444444444344444444444443444556778765554557777777655558;<=<<<<<<<<<<<<<<<<<<<<<;<<<<<<;;;;;;::?BJTYbdfhhd`VG44%
+ 334?EEWHB@NQBNSQSXRSUZ\char95{}`cebcc\char95{}a\char95{}ZUQSXVV`\char95{}]abaQ?97888899;}
+ \hbox{dZ\char94{}YVZ\char94{}\char92{}\char95{}a`ffeedd]`dfe]\char95{}ffffghghghgffeceeb\char95{}afjkjijiikkkihkigjikkiiebP%
+ B83112433334455555555444444444444444444554444444556678998656666888888876665588:<<<<<<<<<<<<<<<<<<<;:::;;;;<;;:;;;;?E@=@F`fg%
+ eg\char95{}KL732234:@RM:58CMJIRPHNW\char95{}\char95{}bbbab`ba``a\char94{}UJRVIP\char92{}ZM\char92{}`WH:9:=>;899:}
+ \hbox{g\char94{}`]WZ\char95{}`dc\char95{}dgfecaSVeffbbfgffgf\char95{}ahigfededa\char92{}dfhjjihkihkkjjijfhkimjfhgZ;;>612133%
+ 33334556665554544455444444444444655545556667899:97777778998999877766569<<<<<<<<<<<<;;;;;;:999999:;;;;;;;;?EPK<<JU\char94{}f%
+ hYLL<352123=OYC7:EJED>DGLRRZ\char94{}\char94{}\char94{}Z[WU\char95{}]aba]JNXYWQQLNVYMBFJNNLG?<9;}
+ \hbox{f\char95{}]]\char94{}\char94{}\char95{}ebXV\char95{}bc`\char94{}acbb`]bdggghgf\char95{}]cacedgdc\char95{}Z\char95{}df%
+ ei`chhjiikkihhhijkfOcibBRQ93:4222234445577776555544444444444444456655545667689::98888888999:::99898767:<<<=<<=<=<<<<;::9:::%
+ :98888:;;;;;;;=BUcJ@AF]ifSOO<652137IZ\char92{}O<FQULBDEBGMGNVVSTPLJ[a\char95{}aa][[W[[\char92{}QXVT\char92{}ZU\char92{}\char94{}%
+ a\char95{}YWLD@?}
+ \hbox{h`bdbdddTEV\char94{}\char92{}]YZbegfc\char92{}\char95{}aghheedWN\char92{}]Za\char95{}egd\char92{}\char94{}ccffhfehhjj%
+ jjkjihhjjkgagjgcfX;<UH62122344446765667665544444444445556776544577789:;;;:988999::::;;:9999988:<<=<<<<<<<<<<;<;;::;:::999;;%
+ ;::;;;;=NchbJS\char92{}h\char94{}I\char92{}V?;5339EDRSMMVOLFA?>>HMLKSVSTUOJS`bb`\char94{}\char95{}\char95{}]\char92{}[`]]\char92{}%
+ ]a\char95{}aa`a\char92{}X[URSQ}
+ \hbox{e\char95{}dfdefbD7EXU\char92{}[YbcgfdXY`gigggaKWe\char95{}\char92{}abfgdabegiiijkjjijiijkhhjjlkkiggghheZUT=2001234444%
+ 554455777655554554444456667765457679:;;;;:::99:::;;;<<;;;:::99:<<<<<<<<<<<<<<<<<;;<<;;<;;;;;;:;;;:<CUb\char94{}e\char92{}Pe%
+ cSIHDH787=FEB>NUULBGJLGKYYRMPVYWXXSV\char94{}baa``\char95{}\char92{}]]``]\char95{}ab`\char95{}``\char92{}[WW]ab\char95{}}
+ \hbox{V\char92{}egdfgd@:<FNR\char94{}a\char95{}\char95{}\char95{}b\char95{}Y\char92{}ehiggfddfaF;I\char94{}egddegghhifiiihj%
+ ijikiikkkjklkjjjijh\char92{}:1000013444444444566677666666555556677888767778:;;<;;;;;:;;;;<<<<<<<<;::989;<<<<=<<<<<<<<<<<<<;%
+ ;;;;<<<;;;;;;;;:;DQ\char95{}ghZX\char94{}\char92{}ICILBOI<HYJ>J]\char94{}E>BTVWY]\char92{}VKNPPRU[WY\char95{}a]\char95{}\char95{}%
+ ]\char94{}\char92{}]]\char92{}\char92{}\char95{}aab\char95{}\char92{}YY\char92{}]ZZ\char92{}\char95{}ba}
+ \hbox{T[defiheD?B:9<L\char92{}`bcb\char94{}O]ghgggg`UbcT<E[gjhhfigjiijiifijhjlljkkkkkjllklkmkcL6123122344444444455667877777%
+ 7676666777899888889::;<;;;;<;;;;;<<===<<<<<:9989;<<<<==<<<<<<<<<<<<<<<;;<<<<;;;;;;::;LbgegfeXFIMHQ`]OSb\char92{}QPZ]A9>OUWZ%
+ XUYSONOOU\char92{}YX[[LRWUTV[YUY\char94{}aac\char94{}ZVW\char92{}\char92{}ZX\char92{}\char94{}\char95{}\char95{}}
+ \hbox{T\char94{}dcehicGHW=59EV\char92{}abeaSTchgggg\char94{}AO`\char94{}UWchhhhgghhhhhhhgfihlljljlkljjkkmlllmcWQKMIKKG:4443%
+ 444444566777777777777777788889999::::;;;;;;<;;;<<<=<=====<<;9988:;<<<<<<<<<<<<<<<<<;;<;;<;;;;;;;;;::=G\char92{}hjllhZNY\char95{}%
+ VQbgd\char95{}\char92{}aXY`\char94{}M><JPY\char92{}[UYURWURW\char92{}\char92{}ZZXJFVTNSXURX]ab`XWVPQVVPNV]\char92{}}
+ \hbox{R\char94{}defggcCEG>8:EW`aZLD>E\char94{}ggjfg\char95{}?:S\char95{}ebbghgifgih`egghjgfhjkijjlkliijjmmjlljmkiklnnhL8444%
+ 444445556777777777777777778878999:9988889::::;;;;;;;<<<<;:::9999:;<<<<<<<=<<<<<<<<<<<<<<<<<<;;;;;;::@Wehjmkjhcgge\char92{}a%
+ ebb\char94{}`ULQOE:DEHU\char92{}\char92{}WZY\char92{}]ZPTXYZ[ZULQVQQQYXW]ab]TTTNKPWUOS[[}
+ \hbox{U`hgggfc>98768@O\char92{}bQAFLNVfgihg\char92{}86@Fbb\char94{}gfegghhgNVhhfiihilklijkkjihdjmfdjknmnmnoopmT;54444444556%
+ 77777877767676677788889999888888889999:::::::;:;::;;:;::;;;<<;<<<<<<<<<<<<<<<<;<;;;;;;;;;;::;L`d\char95{}fiiighigc`\char92{}%
+ \char92{}bNLRC>@IJRMKRW\char94{}VWY[\char94{}]STYXX][ZURXQOTZYY\char92{}\char95{}abYUUTLMOVUQWV}
+ \hbox{bfjfggga>66566<FY\char94{}HEN[UOcgjgfZ96E=Occefgigfhkegiedghjjllkljje\char95{}ijknlcbknmllonoppeB55444444555677777677%
+ 666666666778888999888887899999::9:::;::::;;;;::::::;<<<<<<<<<<;;<<<<;;;<;;;;;;;;;;;99=EGMTZcfahiihe\char95{}X[FAMFGKU]\char95{}%
+ VQTZ\char92{}YZ[]Z[\char92{}\char92{}YYY[\char92{}]ZS\char92{}VQTWXLV\char95{}`aUNKZSQQXWVTR}
+ \hbox{cdghhff`>68;?;CJT`XXada\char94{}dbhggZ65D?;Qbdfffghijidbehheiijkjjikhegjlmmnnnnnngnompoa<4555555556667666666666666688%
+ 9998889989988888:;:;:::;;;;;;;;;;<<<;;;;64558;<;:89;;;;<<<;;;;;;;;;;;;;;;;:989<:<EQ\char94{}bddfe\char94{}X[QNKA9CT]b\char95{}%
+ RRYWY\char92{}[\char92{}]]YU[\char94{}\char92{}]\char92{}Z\char92{}TVTXWQJSKHHYYYVNPZYSPXVWVT}
+ \hbox{X`eggggb>7;DLISPQ\char94{}\char94{}\char92{}acacedgff\char92{}848I::RbffhggicbYI\char92{}ee`\char95{}fkjjc]iiiijmnllm%
+ l\char94{}monooopkS8665566666777777777777789999;;;;;::::9999999:;;;<;;;;;;;;;;;;;::;;:984444467544468;<<<<<;;;;;;;;;<<;:997%
+ 7658@C?Ncef``RABKROOTPQXaeb\char95{}\char95{}[V[[\char92{}Y]\char94{}VSZ\char94{}\char94{}\char92{}a`]LMOWVSQJHNPTQWRIQ\char92{}%
+ \char92{}WRWWSTT}
+ \hbox{XbgggggcB9BO]UYZYccddccegfdff\char95{}@:;JD@ReghihghPHLDLP\char94{}PNhiife[biiklmmkmjmemonoopeO@8777777778888888899::%
+ :::;;;;;;;;;;;;;;::;::::;;;<<;;;;;;:;;;;:656854443333333333447<<<;<;;;;<<;;;;;:99766437GVKPcbf\char95{}X[VZ\char95{}TTMMPFI%
+ ZbaYIOSYZ]]\char92{}\char92{}Z[]][\char92{}\char95{}aa\char95{}SMYY[\char92{}UYXUQPQNJT[\char94{}[[ZVROT}
+ \hbox{dehgffhcD@IY`][VS\char95{}dfgbVVdfgfgcOPK>MY]fihihhfO;=GO\char95{}cdccdYHUb\char95{}hhhhjkihillonnoonX;778899999999::%
+ 99::;:;;;;;;<;;;;;;;;<;;;;;;;;;;;;;<<;;<;;;;;;;;84444444334433333334459;<<<<;;<;;;;;::9887:<?8KdihdbZNBWbY[dc\char92{}OOFJR%
+ ``XHJX\char92{}V\char94{}\char95{}[\char94{}\char94{}]]UWX\char92{}[\char94{}\char95{}a[W]\char95{}\char94{}]]\char92{}UTRS%
+ SOHNU\char94{}a`\char94{}XSOU}
+ \hbox{gdfhgggcGBQU[[VZY]cggc`\char95{}eghggcM\char92{}\char92{}@>]cgjjihfbT;8;N`fc\char95{}GDPCF[hifcde\char95{}XYgikmljllj%
+ M:;@:9899::::::::768::;;;;;;;;<;;<;;99;;;;;;;;;;;;;<<;;;;;;;:;;:64444334344434333334444689<<;;;;;;;9998879@NQCUjjjicTIF\char95{}%
+ ffcidOAC>OZ]b`QGSUYa\char94{}X\char95{}dcaTQUVZ[\char95{}a\char95{}]\char95{}ab`\char95{}ZXXWXXSMPY]\char95{}`\char94{}ZWW[%
+ }
+ \hbox{hegfhgjcNFKWZKHRUUdecdddeiefggd`SFTcggiigge`F:@B@ZefeV<Ja\char95{}\char95{}ghY]f\char92{}G<FQTW[SNY\char94{}\char94{}%
+ HDO\char92{}B9899::99:::976569;;;;;;;;;;:;;9778:;;;<;;:;:;:;;<;;;;;;:;;844444444444434343334444445:;;;;;:99777767;@WdYdkkje%
+ acdYhjg`bX<6?PTGKZ\char92{}QQB>R[[X\char95{}dedYPVV[\char92{}\char94{}a\char94{}][\char94{}`a`\char92{}UQTXWQHPX\char92{}[\char95{}%
+ a\char92{}[]Z}
+ \hbox{eehgghecTCJZYPMQSXacabbeghghif\char94{}N=;I]ehhhhge\char94{}=35<EJZef]AEaijihf`b`IBA;:8989?EDOYc`A9999::99:8676666789%
+ :;:889;;:9866568:;<;;<::9768899:;;;;:766444445444433344445444444446:;<;:9766766667?VhhijjhYNbgiecUKQF@?<KT;7F@?8:FFV\char92{}%
+ U[a\char94{}\char94{}\char92{}\char92{}]Z\char92{}[Z``cbb`\char95{}aaZTWWORNNX\char94{}]``\char95{}]\char95{}]}
+ \hbox{\char94{}dfhjhgbRDKXXVWWXU\char94{}`\char95{}ddefhfggg]PIJOZeghhfgfa<9:FOCJUITQVYejhf]c\char94{}da`LCF;6657:@NQ\char92{}%
+ Q;8999::::99755556668:986569:9975455668;;;;9876455446:;;:85444444444443333344444444454457:;:86555544556:JX\char95{}RU\char92{}%
+ ROJZ]`OA?FJ?F?6=I>54432:=ANSIR\char95{}\char94{}\char92{}\char95{}cd`\char92{}TQcdcdcc`\char95{}a\char92{}UXYXRLJW\char95{}%
+ `\char94{}\char95{}\char95{}]]]}
+ \hbox{ffegghf\char94{}SHKRU]\char94{}\char95{}`\char95{}]\char95{}]`afhhhhgedbbaaaeggfggceKK\char92{}bO>857<GRbfii\char94{}%
+ CNLUdi`SR<699679<?<>:99999:::::8556666667775569:9864444557::;::875444444569976554444345433333444455455555566898875544334444%
+ 9BC=C[E:C@BA857CL;642577211013;P[`[]`\char92{}]\char94{}ddb\char94{}TQ\char94{}bcbcc`bb\char92{}UXVVUSMQZ]\char95{}]`]ZW}
+ \hbox{ge\char94{}dff\char95{}ZTW\char92{}VV\char94{}bbcbd]\char92{}`deghiihfecdda\char95{}cgedeg`c]`daW:2117:>K\char95{}ijf%
+ [Y\char92{}fhjgQQE@FM?9?998899999:99:99866666655666556876444445555678765655555544457766654434444444445444564556666667888776%
+ 65454445679:?LA:IM@68=9=9432113213556;Vcfe`acc\char94{}`bb`\char94{}\char92{}]\char95{}[\char94{}dbcbcb`\char92{}Z[WSYVS[\char94{}%
+ \char94{}\char92{}\char94{}W]\char92{}}
+ \hbox{hfa\char95{}ce[NLT``\char92{}aedacb\char94{}``cgggifhedcccc`cefffedcXP]L:4129EJEGRdhjkjiiiiikgbNW]TOH;888899998889875%
+ 56767655556446764444445555555444445655544444566654434444455565555655456766766777777676665556656?KC<?=97:>854343311116FRQRbe%
+ fbbadfbbcc`]bb\char94{}YZbfffdbc\char92{}Y]YVY\char94{}W\char94{}aXUZ\char92{}`a}
+ \hbox{fdhcee\char94{}SPT`bcddacdbcb`edggiegfaa\char95{}\char94{}c`deeefedbOQSB347CXahicgaghliiijgijkeH?R[E<8888899;99778875%
+ 556766666664566644444456665544444444554333334455544554444455555556755556677765555655677676765559LWH67888987656<@8658FQV`cac%
+ dcbaeeecefecdd`UNWbbc\char94{}[bb\char94{}\char95{}\char95{}`ab[`b\char92{}YZWZ\char94{}}
+ \hbox{hfgecfcb\char94{}XZ\char95{}aabddaacdaeeffgffd\char95{}SMVcabfefeedddcc\char94{}QX\char95{}bb[`dkjkjjjgiijkjjjcK>DP@8%
+ 78888999:9966764555556567665556554444466775443444444555444434444556555444555655555665556666776544444555566655556:;;66788888%
+ 77@Q]ZNNUZ`\char92{}\char95{}ee`O[bbgfddfggfge[UEGRVHH\char92{}`ec`abdede\char95{}`]\char92{}\char92{}WQ}
+ \hbox{fcdedcbcaa`\char92{}\char92{}\char95{}aca\char94{}]bcfdbghgffec\char92{}NObbbedddeeddba\char95{}[]\char95{}d\char94{}%
+ MEXebfijkhegkjkikhQ??IG8788888889997765544444445665556665555567776544434444445555444454455455655445665544556666666676544444%
+ 44556766545455554667778778AZeddefeggcV\char92{}N?AP\char94{}fhhgggedfcJD=:BKIVTQ`daZ]`eb`]ecWTTU}
+ \hbox{febbab``ba\char95{}[WbbeaUScef``efgfgd\char95{}b\char95{}ZabbegdefeeV\char92{}ZXNCOcVLMBQP`giigfikkjiliYGV[K977889988%
+ 9999875544454555555566666655556677655555555455555444655544455555545555455556777877676554444445677776544555333455777669CVcfj%
+ ihigdYQLDDKWejgfhgggebA>:888?WIK]\char95{}]cccc\char94{}[eedc\char94{}VV}
+ \hbox{fd`Z\char92{}\char94{}Y\char92{}\char94{}\char92{}VLN\char95{}aa]RWef\char95{}\char92{}\char95{}eehffc`cecd`afffdeee]%
+ ZU`[MSb`NFLJDFQa[fgikkjkjkgSYSC97798999888999975555567675556777666655655556656665555554544555555444555555545654556676778876%
+ 87565454556789987544443222324335666;N`\char95{}`ihjfg`STSYOOeigegefggfMFA:667KNMY]`aefhgfgbedc``}
+ \hbox{fa\char94{}VSZWXUPNNS[\char92{}\char94{}\char95{}Zbabb\char95{}`gjighc`Y[ccb[cegffedd\char94{}Va\char94{}QT\char94{}d%
+ \char95{}IHR@A<KHOejkllllkijj\char94{}A::8998999889998866676777776778877777666654566676554445555556655554455554455555545677%
+ 77777887776765565557899986443221122332239<9:APG[eigfgbW[\char95{}c[SahgghhggggH=:54569=JT\char94{}ea\char95{}\char94{}adfac%
+ ddced}
+ \hbox{dYURRVXVGHNTXWPXXV\char94{}\char92{}U\char92{}bcgiighf]YX\char94{}d`]cefdeecc[Safca`cbYSJUP<8CIdjmlkknnmllW>;88988999%
+ 8899988766665565678999888988877767778876554445555555555554565444555655667888887899988777656666899::9765332112332224?KC?CC<F%
+ \char92{}ggghdTYbe`L\char92{}cfghggghcA?E<5547;A:BVF>EJW`IK\char94{}ddee}
+ \hbox{aVUSOJVOHFHU\char95{}YMV[]]ZV[`eggfegeb\char95{}UWdeeeegegfcc\char92{}Y\char95{}eddfedY\char94{}FNO?;MTdjlmlnmnlml`B9%
+ 98:888899899998877665556689999999989988988999998765444554444455555554444456666779999:9999::9999977767789:;:9875442122333124%
+ <OPJMPBK\char95{}giihd\char92{}\char95{}ce`Y\char94{}afhgheeebGKO@84322436=:8=TSLTQZ`\char95{}dg}
+ \hbox{]KNURNRIMNFR`\char94{}QW]\char94{}\char92{}\char92{}UX]\char94{}]bdegdccc`bed`bdefe`b[\char95{}baceffff`ANPGCJVfiiiek%
+ kmlllZ?9997788888888999888776566677789999:999999989999998865554444445556655555555667788999:::;;::;;;;;;;;;:8878899987665689%
+ 73443237F]aV[\char95{}RR\char95{}dfiggedcebZbdffegfeedURG<4432134569;CXH;=OV\char95{}\char92{}\char95{}e}
+ \hbox{ZCKRTYTQKPJJZaZWZZRV[]ZWOZbcdb\char95{}bbaXV`]`beef`[bd\char94{}beeegfe]>MC>?EG[\char94{}]XNWUhljj]?<8677788888888887%
+ 7876456666556677::99::99999899999986655554556666666655555666677788989:999:;<;;<<<;;;987999877765;CK@84445;FNXec`eedfafffihf%
+ fdeacccfehfffeaYN@:56533344489=<86;CFOY\char95{}}
+ \hbox{]GJQ]XOLPUTJP[XQTYXV\char92{}[VTNV`\char94{}\char94{}\char95{}\char95{}\char94{}\char94{}\char92{}IN\char95{}\char92{}%
+ b`ddfb\char94{}`deeeeefgeWFMC639=8ANC;PQXbVXP96566777777788988777665566665455557899999988878899:987777655566777776766666566%
+ 666677766777899::;;;<;;:9999999888767@[OB86>GIZfefghgb`hhhijkjiifhedcdhdefggfbb\char94{}UOEBE>53344577688:CDFHM}
+ \hbox{\char94{}NHQ\char92{}WIPY\char94{}\char92{}QPXULR[\char94{}\char92{}]TPWZVZVKS\char95{}YT[WOaacdeeeac`eeddbOKabb]\char95{}%
+ P<9<I76;?>VeRF:896555667777777788888877666666544565557788899765567899766777666777777777777776767667777767777778999:::9:9999%
+ 999888778@XcS@@R`bgkiijhhebfihhkiihggid\char95{}echhedgffbded]VV]N>455567988=@LTQCB}
+ \hbox{\char95{}SEQVUX]\char95{}a`ZTWZTVSSSMSPY\char94{}Z[ZPT\char95{}a\char95{}\char95{}J;[cdc`ddcdegeeffQHbeee]G:=GZVFB?99%
+ C>;::997556677777777888888878776676444555544556776445668998767887878889888898889887778778888677887899999:::99999989877669DW%
+ bW@Xceglkiiiggccgifhlljghgea`ceffdefggdeee`]\char95{}b`J<65687888=MHB?FM}
+ \hbox{]OKQNLU[Y`\char95{}[TYYQTNHG<IJRXY[\char94{}[Xadb`SVaecb]\char95{}c\char94{}eghgfgfMVehg`ZL;5HZd]<9646655668@F=666666%
+ 667777777767777878754444433355555444678898888889999999999999989988878888889989888888889997566889988765435:Ob]L\char94{}fgjl%
+ jikhhiedghabkjibbfa\char92{}bdgffeffhgdddgc\char94{}ceh`VA=;A><989==76@D}
+ \hbox{`MIQTSRZZ\char94{}a`\char95{}\char92{}VQWTNWNYVNV]\char95{}\char94{}\char94{}\char95{}caacb\char95{}cfb\char95{}]\char92{}%
+ \char95{}ZceefdacYbffhfecI:NO`Z>664446545?MVE856666556777777767777878765443333345666666788888898899988899999899889988888888%
+ 8998999988988999854333689876433;EGTb\char95{}\char94{}dgiijjghhghfgehd`ghhaefbbcceeffdefgfdefecdfehaUMPNK@:8875545=}
+ \hbox{bYURZUNW[]`\char94{}]`\char92{}XRPHU\char92{}aYV]accbca\char92{}\char95{}abaceeaY[\char95{}`dfgfffdgihhhggg\char95{}Y%
+ MU`[@4:632697;DNXP<55556656566766666776776697553343456677766687788887888887888888889888888778778888999988888767755533334453%
+ 2114EY\char95{}\char92{}eifijifkjhhhigffefebZbgaZNSZdddgghefghffefheffehf\char92{}`c\char95{}L=98765555;}
+ \hbox{c`PLYVGMQY\char95{}\char94{}\char92{}`\char94{}YZ\char92{}X[````feddcecbbcbccdec\char92{}`ddfefehdgghggiiif``W[`\char95{}%
+ H8L:226@??HWWP::4557A85568665577666766;QJ;688:6556677788677777666677876788778888778887667777788889877765443334432322222103D%
+ QVdghkkkkjiiiidhhfbcRW\char95{}eYIR\char94{}C;JWfccgfgefgfedcfifggfgfdffeZC98777776;}
+ \hbox{eaXPRTQJGX\char95{}\char94{}\char92{}a\char94{}b`\char95{}\char92{}[]`beefedab``baabeddec`cdefeeegegghggfgecb]Z[\char94{}%
+ RAP=35IIG8;Q[]SL955;JA=A9=6556GF755665@XVB=>=C9;76666>DH76:=776666669;6779;6677777777677666777788877754323332333332222112:S%
+ `SeghjjhiigcigeZP\char94{}aePNPcYUM\char92{}ZORXgffgfgfffgcUV\char94{}efcfegfefhfUD:9999::8<}
+ \hbox{d\char94{}SNMUSMQ\char92{}\char95{}Z\char95{}`\char94{}ba\char92{}XUWZaddfdbccd]acaddefgc`cdcfffffhfeffdehgd``\char94{}%
+ a`G<P=4?VUVFPcfafW;@?<WSPFBM<7=@SR:567@?M\char94{}[HBBBKFPA6557ENQ:8EK9>>6;;:>EMG;6>C76767:>7778;>>766667677766522333322222%
+ 322226>KAZgdghkkjigfa\char94{}ehgXXdgfYUghhghhe]\char95{}YghhhgffehgcRX[\char94{}XR`dd`]\char95{}f`L<889:::::>}
+ \hbox{d[VNKWYVW[\char94{}]`\char95{}`a\char92{}]WTTS\char94{}ceffcbe]\char95{}a`\char95{}bdegecbbbbbedefefeffffffeccd`d\char94{}%
+ QVN?PZa\char92{}WO`ifk\char95{}DTXL`\char92{}\char95{}XOVONZZ]\char94{}D7BESVV\char94{}]VINNXZUP><5=U\char94{}\char92{}LBPO%
+ FPQ>ICFKJPQF?FG=?A66CJ96<CPXUHF8:6666654565;>>332222111212@Zeagffchhkkkjid\char95{}ff\char94{}S\char95{}\char94{}egfhhighgh%
+ eecdiiggfgggff\char92{}T\char95{}ZKHMUadaZXZJ:64579999:?}
+ \hbox{cSPNJRT[YU]`Z`]]\char94{}\char94{}ZQYTW`ddfdde`abcdddedffbeeeccdfghgbffgdfff\char95{}bhd``XVOLUZdcd\char94{}bhjjeYad]%
+ a\char95{}`d\char94{}YVa`\char95{}]\char94{}SCLMWYWY[\char94{}U\char94{}\char95{}\char94{}\char95{}ZUK?9E[ddbMSRMU]QWRJSLVX%
+ PKKKNMM:7IU:7@S[][\char94{}\char92{}@?;555546=>;IRL54425:823<729WhhhgbcfgjjkjijighgUCbggjjjihihhiieggiggefggegedXDDTO[cb[F=%
+ <94333445678>}
+ \hbox{aMLQLLV]WRZ]\char94{}b]Y]\char95{}`Z\char92{}XW\char95{}dfefdee`eeedfefeffdbbdcadffda`deffcd\char95{}afe`a\char94{}WM%
+ UVZ`bc\char95{}cfjga`ce`\char94{}\char94{}`gf\char94{}W`a\char95{}Y]]XYMRY\char92{}W]\char95{}X\char94{}aab]YRDAR\char94{}e%
+ heTTTQYa[]XRZV[]MMPJSTXC8LWBDOZ`\char94{}ZbbKOH66557JOIEWNJ:ED=COOB>ID;=Xhjjja]iejljjjdfge\char95{}`fgggiigdggghihfghiigffe%
+ geebce]\char94{}`TOMKD53222323444334;}
+ \hbox{dSPRRPXTRY]]`a`[]`\char95{}aa\char92{}Zaceefdfeadeddfgfgeefgeefdeghgdcdefefeefd\char94{}ad`[RUW[]d\char95{}bejghbdcaR%
+ ]cbffYO\char94{}`[U[[\char94{}\char95{}URXYW\char95{}a\char94{}b\char95{}S]\char94{}\char92{}WMPY\char95{}gjg\char94{}UWX\char92{}%
+ \char94{}`b\char94{}Z[WY[PRUVZZXPHURGI\char92{}``\char95{}`b\char95{}`XN;I<9GT[ST\char92{}QSKXXOSTVSMSVTL\char94{}fijkjhkii%
+ kiijhhgi\char94{}dihihgd\char94{}LL`\char95{}fghffhhhggfdggdJMZbcb]J8633B822333543333:}
+ \hbox{fTPLPKSYY\char95{}a\char95{}\char94{}``\char95{}`c``ba\char95{}bceffffhfeeffefehghhhcfcfhggfdgcegefded\char95{}`ceb\char94{}%
+ WUWSY`\char95{}ceiijii\char95{}\char95{}V\char92{}bded\char94{}VZ\char92{}]bd\char95{}]\char95{}TSPQZaa\char94{}d[Q\char92{}%
+ URXUZ\char92{}`giheYUUW]bd`WXUXYSSYY]\char92{}[TQWPFT\char94{}dcdbbaf\char92{}ZRWOIR\char92{}]\char92{}\char92{}[\char94{}\char92{}%
+ [\char94{}bVYWWYVPYafhhikilgjhjjkjiijkjjijjigPMHDQZY\char92{}Z]beihjhhfeefdEJU[WN;;>:3<H@53323444444:}
+ \hbox{e`[OENWUQ`b`[Y`a\char95{}`a\char95{}]daac`fgeeifeedeeggefhgfddaeffhfegihggeceaaccgd\char95{}\char94{}WQTX\char94{}dgg%
+ kfhjd\char94{}\char92{}QZbijgdZYaaa`]]\char94{}\char92{}TPV]bb\char94{}a\char94{}Z]YX[Y[[\char92{}efi\char94{}WUTWZaedXVSSW%
+ WQT\char92{}`\char94{}[YUW[[V[\char95{}aefged`Z\char92{}XRSSZaba\char95{}a\char95{}]\char95{}\char94{}X[ZZ\char92{}]X]djjij%
+ jiljiihhjjihikjgcijg\char95{}D9=JWIFL>J[ckihhhfeffcIBPYD>226BGBSOLA3433444438}
+ \hbox{a\char95{}\char94{}XFRXIN\char95{}a[NR]b\char95{}`ccb`]abddeeeffdefedfhfefffffcdfffgeeghgghe\char94{}ZZafacb\char95{}%
+ WRZXagggjijjfa\char92{}XW`hjee]\char94{}b\char95{}`\char94{}\char94{}a\char95{}\char94{}YUU\char92{}`\char95{}cdZ\char92{}\char92{}%
+ Y]\char95{}[[\char92{}Yagi\char94{}]XRW]cie\char94{}TPRZVNT\char92{}a\char92{}YXX]\char94{}\char92{}Z[bbfdgdeaZ]\char94{}SR%
+ SX\char92{}ec[WZU]c`YZ]`dhiiljjkijlklhhhijjkjkgiijic\char92{}S<>RWHPYX\char92{}adhihfgfedecG;GWVB38E;FYaTNC8E9446655B}
+ \hbox{]WTPOYXLO]a]Y\char95{}[\char94{}`caab\char95{}\char95{}beeefeee`adddeeeecdffgcbbedeedfifhiggfb\char95{}a`X\char95{}c`%
+ WQTW`dheigiida\char92{}X[adh`\char95{}YYZ\char95{}ba\char95{}`]b`WU[[]aa]]\char92{}`ab\char92{}]\char92{}Xbid][XUY\char94{}%
+ ehg\char94{}TUU[[UTZ\char95{}\char92{}\char92{}[Z\char92{}Z[[`deeefcddX]]RSVZ\char94{}ca[SWR]da`\char95{}`ehkihjgijiijjkhgg%
+ hiijjhgjkgcWWYWUYSW[cfcbfhfgffeeddaD7OYWL8<GFKWbd\char95{}H<PM:6H;:?J}
+ \hbox{]PMPQSVZYW\char95{}\char95{}]]]]]bbbbb][egffdcecdcccegeffdddeeade`dgefgeiiififdcdTW\char95{}\char95{}XTUY\char95{}dgg%
+ hjkifaZZ`chh]\char92{}Z\char92{}]ccefaba`\char95{}YZ[X`bY]\char94{}\char94{}eb\char94{}\char94{}\char92{}Tbhhb]VV[\char92{}%
+ chiaSZ[YZVW[\char92{}ae\char95{}Y\char95{}\char92{}\char92{}\char95{}aedcbcffhZ][SQ[\char92{}`aaZVWRXddaegighhebehihhifdfeg%
+ ihiiiiijja\char95{}\char92{}[\char95{}\char94{}YWS[\char94{}effeegihfgeeeddSCU[[TA@QRTW]aaXIORECSACUW}
+ \hbox{dZOIMQ]\char94{}]]`aYV\char92{}`\char95{}addcb\char94{}\char94{}gggfeeedcdbbeedgebaedecedbeeeehhhghhgeefe[V]XTRTT]bec%
+ fighaX[\char92{}bfifZTU\char94{}`acfffg\char95{}`\char94{}VWY[ad\char92{}W[`aa\char95{}`aXahfe]SVZ]djldXXZ[Y\char92{}a`]`a\char94{}%
+ [\char94{}YZ\char92{}\char92{}\char94{}\char94{}`]\char92{}fed\char92{}[\char94{}VX\char92{}a`dc[OOIO[[]fhhffc\char94{}Z]dh%
+ hb\char95{}]Wbeegejihigg`\char95{}\char95{}]\char95{}\char92{}\char94{}XWWZZbggcghhfecedeb`YSYZ[ZNNTVVW\char94{}aa[SWWRNVNV%
+ [\char94{}}
+ \hbox{c\char94{}NFMM[\char92{}\char92{}\char95{}cbYTX`\char94{}ccedddcfffgfffbcbbceefdfbdedeeecegghghhgjhhigiffe\char95{}]Y%
+ WX[X[\char95{}a\char94{}eiibeaV[\char94{}fhbYW[`ddigfgd]\char94{}`ZY\char95{}chdbY]b`[Z`[Wbhg\char94{}WWWY\char94{}gllcZ\char92{}%
+ \char94{}a`a`\char94{}[eb]\char92{}[XWV[\char95{}WW\char92{}]hdc\char95{}Wd`[cfdec]NKGKQOT\char95{}higha\char94{}bacdfd\char95{}%
+ ]\char92{}]\char94{}fgegfghe`]\char94{}`[\char95{}\char94{}\char92{}\char92{}\char92{}YZZbaa]`chffdebc]TQRVZXXSVUWWV\char92{}%
+ ``\char94{}Y\char92{}ZXQQV[Z\char95{}}
+ \hbox{g[JNTOU]b\char95{}a\char92{}c`\char92{}c\char95{}`eceeedfdfgfggd\char94{}]]edfc\char94{}\char95{}ddfdddeefhfhgfighhii%
+ fhgfh\char95{}[XTW]\char92{}\char94{}[[\char92{}ejkiggd]`geaYZ\char95{}\char94{}dhkihjebbd\char92{}\char92{}]ciga[]aca`bZ]`%
+ kjd]]WYchjjea\char92{}]a`[[\char95{}bea\char92{}ZVU\char92{}`\char95{}]`b]\char95{}ffebahgfhjjecYUSJKPLMXdhhb]afda\char94{}%
+ d`U]d\char92{}[bgfggggdcaac\char92{}T[[\char92{}\char95{}\char95{}W[RQZ\char92{}\char95{}bfghgffc]WUSKMRYT[XWVTZ\char94{}\char92{}%
+ \char94{}\char92{}\char95{}\char92{}XMOTZVa}
+ \hbox{f]WU[\char94{}]a]`\char95{}ccbcebcfddeddfgdeefgda]\char92{}`dd\char92{}T[eefeddgfffegffhfhhhhgfhghgf`[afa`YY`cijhcgfa%
+ bb`\char94{}\char94{}]a`aajjehdd`c\char92{}[abhhf]\char94{}ac]]\char94{}SWajhd\char95{}\char94{}VW\char94{}ehlffbbe]ZY\char95{}%
+ chf]XUU]\char95{}\char92{}Z\char95{}`aafiigdijijkjifcceYNUMIObhib\char95{}dfe`][QNX]\char92{}\char92{}\char95{}fgiheffebcc[%
+ V\char92{}\char92{}bdYNSMHKW`ddfeefecb[XUOLPWVZSVWRU\char92{}]]]\char94{}\char92{}WKOTUX\char92{}}
+ \hbox{i\char95{}\char92{}V[bb\char95{}[\char95{}ccbbceedeffdccdddeegcb`[Za`c`]beedfedeeffegefghihehgghhiiighjjbbW\char92{}\char95{}%
+ hkh`\char92{}ecfga\char94{}[\char92{}UZ\char94{}aadjkigb`eeZZ`gijb\char92{}cfcb]WY\char95{}hegc]XY[ajklfdhicY[\char94{}egfb%
+ ZXU[]\char94{}\char92{}XX\char94{}afjmljgglklkkhfdgebZZZQ\char95{}ghfddhcbaa]VW`dc`figgedefefd\char95{}adedcYNRTNIQ]cceca\char95{}%
+ []\char95{}\char94{}XPNQTXX[VVXVRX\char94{}]Z\char94{}]XSMLU[\char92{}}
+ \hbox{j[UYaccca\char94{}\char95{}``bdcceedcccadededgdb\char95{}YY```bbdeeeegefffeiebfhiihghgggfgeghjif\char94{}b``\char95{}%
+ fidbeedcf\char95{}TUZVXZ]]gfhjiaagd\char92{}\char92{}cjlh`cbdacebSZaccb`XX\char95{}dijljjikgZ[aeihh\char94{}UWZ[]ZWZ`bhjlmm%
+ hillllkkddihigfcafigdecfegfcc[Yaeefghggfdefegfefdc`aSPOTSRQ\char92{}cdd`\char94{}VKUXXWPOU[ZX\char92{}YYZXNTUVY\char94{}\char94{}%
+ XUPNPW\char94{}}
+ \hbox{eVW\char95{}ce\char95{}aa`\char94{}cbcedddedbc`befdeffecaWV`a``bacedeedgeeffeefghihhjijgfhegilkiafddcgigdeceaha][[Z[]%
+ \char95{}]efigdacgie\char94{}cikigagecab`NTdbee\char95{}VVafjikjjjdf\char92{}Zagkig[SVZa`XW[acekmnmkbklkijiidegfgiiiiigggfh%
+ fefbceaccfehhfgedehdhggfda\char94{}]QIRXWTNT\char92{}\char95{}a\char94{}ZXQUWVLIOZ\char94{}]][W[\char94{}YTVX[Z\char94{}\char95{}%
+ XYTRRTY}
+ \hbox{e\char94{}\char95{}bac`[\char94{}`\char95{}ccffefedddeccedeffedeabbcc\char95{}`cccdeegghhggffffhhhihjihigiigihkjiifef%
+ gih\char94{}\char95{}ec\char95{}g\char95{}\char95{}\char94{}[\char92{}\char95{}affhjhieafjkkbdikihdiidYY[Z]eedfb\char92{}X\char95{}%
+ elklkjkjf]Zdfhfe\char95{}V[``]TVZ\char92{}bdinnlkdlmlikkjhfhfhihihihgighhdegcfbcfeeffffdgghfhhgfedddWGMX[YTSSOUVW[YXVVNLP]`%
+ c\char95{}ZX[\char95{}]YX]][\char92{}\char95{}[WXZ[Z]}
+ \hbox{g\char94{}`\char95{}\char95{}d`SY\char95{}]\char95{}affdce\char95{}\char94{}[bcdgeggfddccb\char94{}`edccbdeggfegegffg%
+ fghgghiiiigghiiiimlkiggegge\char94{}[aa`dc`aX]a`fkhdhikegjjliiijkgefj`U]\char92{}[\char94{}ihgf\char95{}X\char94{}dgijkijli%
+ e\char95{}[filh\char94{}]\char94{}]``YWY`cdcjmmkkfkklljmjkghefhjiiihiiiijgfhgf\char94{}bgihgghffiihihjhhegeaQMMX\char92{}\char94{}%
+ VUSSXVYXSUOWUTU\char92{}\char95{}``YU]\char95{}`a\char95{}`\char94{}\char94{}\char92{}\char95{}\char95{}XY\char95{}\char95{}%
+ ``}
+ \hbox{gbaabdc\char94{}cb``acbacb`c\char95{}eccfggfedcccb[\char95{}ccecddefffeefgfghhihfhhgihigigjihglllkjjgede\char95{}\char92{}%
+ X]ghif]Zdfbgjieggiiginmkdjkmebii\char94{}Xaa\char92{}\char95{}hlkcYX\char94{}cgjikjjjkd\char92{}\char94{}efijab[Z\char94{}a%
+ ]Z\char92{}`dehikllokklklllllkkihiiljkjjkkijhkjjhdehhjhihddhhiijifgfdffcaTY`\char95{}\char92{}XSRYTUONRRXTUZZX]\char95{}[WY%
+ ccca`ba\char95{}\char94{}\char95{}]\char94{}baaa}
+ \hbox{f\char95{}cba``affddedc\char92{}ceca`]``cefedeea\char95{}Zccdddegedehefefdeggefhhggghhigigilklknmjljhe`Z\char94{}\char95{}%
+ \char95{}ahjjgbda[\char92{}`cehihjhghjjkkmmngfhkdfed\char92{}[glld]W\char94{}bilmlmjjh\char94{}]cccegf\char95{}TZ`YTUX\char94{}%
+ `dimnnlmlkmnlkkhklijkjklijkijiijhjihhfhfhhjjihhkhhgikhffbehgd\char92{}Y\char94{}\char95{}]YURWROLPXXXVWZTOR[Z\char94{}bb`\char95{}%
+ Z\char94{}`aa`db\char95{}cbba}
+ \hbox{hbcebZT]dgffdddcaYYZ]W`bbfgfedda[[dddeceeeefffhfeeefgfgfehigghjhihijkijlljjlic\char95{}b`[[bejmkb[]\char95{}\char95{}%
+ dfijkjjigcgkjkimjkhigcfgc[\char92{}hljf\char95{}U]ekmmjlkgf\char95{}]bfffcc]VS]XY\char92{}afdegkmmlmmkkkkklkikkjkjjkjjhijji%
+ jiikheffiigjiiijjkhgegghgdfgfecZY\char94{}ZUUVUQQSQQVTVXYXOQ[YXaaa`[Y]bb`bbcddbb}
+ \hbox{jdfffb]aedba\char94{}\char92{}ZYZVOV\char95{}cddcffffeec`\char92{}\char95{}dcededffeeeggedcffefcggjhggjiiihgjjlkkklmh%
+ hghf\char94{}[cjkkj\char94{}VY\char92{}`ggilkklkijoklkkjgggehjie]T]bilaPK[cjllllkccd]`fhic`aVVZX\char92{}\char92{}\char95{}%
+ fdggijmmllmkkllkjkjijllkkjijkijkigigieghkihiggjifhggfciifggefgebY[\char92{}SSXSRPUSRUWYZ[XUXW]\char94{}bdc`\char94{}][\char92{}%
+ deeededbc}
+ \hbox{kefffhecaNQ\char92{}WSJADKPFI\char92{}bdadcfeed\char95{}\char92{}`acdeedehfhhffefdcbdeeghhhjhfgiighiiijjjlklikjkgd]dj%
+ llmf\char92{}cXciikjjkmmmmnmiidkgfhckii\char95{}[YZchki[IUbhjjjjjaZ\char94{}\char94{}bejkebf\char95{}YWW\char92{}\char92{}\char95{}%
+ ggffhllnlkmjjlnkjijkilkjjhijjikkhhhgifgihhgfcchh`egfedfifgecefc\char95{}WSWOKMSRQWYTTYYZZ\char92{}\char95{}`\char95{}a`cedb%
+ \char94{}`\char94{}\char95{}bdeeddeeb}
+ \hbox{hffgfgfgaUMXSHJDCDMOLVcdbbbeeecVT\char94{}ccbccfefddefffffdeeegfgihhiigfegggiijijjmkjgdifebgikjilb`bgjijkljjljknlkedb%
+ O\char92{}`\char95{}g]a\char95{}Za\char95{}`afe]JRdafkkkmbP[\char95{}ehkjihi\char95{}WXZ\char95{}`aeheejljjkikjikkjighihkij%
+ igfffjifghhghechghga`\char94{}gc`dgedfefdaaded\char94{}ZRLUYNMUNLPVSY`\char95{}\char92{}X[bc\char92{}\char95{}dccc\char95{}%
+ ````cdffhhhec}
+ \hbox{ieeffeddVHADFAFLGBBLOM\char92{}aacaeded`\char94{}acdceddcfeafffffgfcgefhfiggfhihgffebdkklmnkjf\char94{}fe\char95{}\char94{}%
+ gkjmlnja]ckkjilmlljmnkd[gh`Y[@OFW]Zada\char95{}ggKAI\char92{}dknnlmiZISeikllfc`ZXX]adefebhkkkhfjkijic`debagfghibghffhgehgah%
+ dhhjj`YdgabdffcU]dfb`bb]VVYQUX[UTMMPTTZ`aa]\char95{}cddbcbdcabbdcbdegghged}
+ \hbox{jfgfefecE@@@AABIHKDCJIW[cfefeddc\char95{}`ceddddceffbfefgfffggiifgfgfhihfgfbceejklnhjeU]\char95{}\char95{}acdhmnom\char92{}%
+ K\char92{}gfjljjmmlmndcV`kc]\char94{}Ye\char95{}]\char94{}\char94{}`ghhf`TTVWaemmmmbPRX\char95{}ihijjh\char95{}[\char92{}\char95{}%
+ \char94{}cfdfccdiedehhifgefcecaaa\char95{}\char94{}cffgdgghihijegcghjiWH``b\char94{}\char95{}bf`U]cdfdc\char94{}WNRXTPQ\char92{}%
+ \char94{}[VOTWZ\char95{}abcdccffdd\char94{}b\char92{}]adededdbfgfed}
+ \hbox{gdfgfeeaE?@AABFOMHEBGMS[ceeffdcbbcdebdedbdfffgffhfeggggifgfhfhgifeedab`dfllja\char94{}LRU`]\char95{}[fmmliZ\char92{}\char94{}%
+ Y\char92{}\char95{}ijlmommohZRY\char95{}]\char92{}VZea\char92{}dfeijki`\char92{}e[Y]`ilkljTPW\char95{}hklhhh`WYa\char95{}dh%
+ ggc]\char94{}e][afgge\char94{}\char92{}ccbdeaab\char95{}dfjifffhhigfgggggghZP```\char94{}a`eabeffffdWLLIKTOS]\char95{}\char95{}%
+ \char94{}YX\char92{}\char94{}`\char95{}`cdabgfegdea\char92{}`cebdeffeffec}
+ \hbox{icdeefdaKGHKLJJS[OBABDDSbghgfedb`ecdeefccfgedfeggghiggggggfhgghihgfdfaeigjkjg\char94{}LJN[[\char92{}cjhgdcbe[QVcijh[g%
+ jeiVHFHFIKOMUSQ[ZdihhicW`]\char95{}d\char95{}dlmmXY]`dbinjjg[YZbbfhjhh`ac\char92{}]bfiidbcdcaehfcebfigggcghbbdh\char95{}bee%
+ icc[Vca]\char95{}[X\char95{}c`eedgfcXIFFKWYY[]`a[[`ba\char95{}ddfdeeghhhed\char95{}\char94{}\char94{}cefeffffedb}
+ \hbox{kdcffdeaF@ENXX][XKAAAACMbghgefdbdfcceeecdeeedfdfffgggdhgffefghgihggehhijjlklgWLINRPT]Zb\char95{}]\char94{}\char95{}WY%
+ M[hkl[FXTK[HHJKLNMJGQQIHL]hhe\char92{}QFIU]cffkkma\char94{}ZY`gjmnkh]acffhiihgbba\char94{}Zc`fg`eef\char95{}\char92{}bedUOK%
+ OVVTTY[YSW\char92{}\char94{}]\char94{}\char92{}cceYV\char92{}`U`aaadcdfeegfe\char94{}OGIPX]WOQ]`\char92{}\char92{}adbaefdcf%
+ gfhfeeeba]bggfdeffedd}
+ \hbox{jceddfdbOFESaba`]TEBBBCJ`eggdfeddebbededdgeffgeffeeefdfhfgggfgghigfghhhjkkibYHFFEHHEHP\char95{}ZURNGJL\char94{}ghfSFL%
+ NFJJFEDFFFGGMQKM`bggiXJEFPZ`gfakkfKGFXafjjigd]cfg\char95{}bicS[bUSYaadb`a`baeff\char94{}IEDEEEEDFDEEGGGS\char92{}`U\char95{}%
+ e]LTY[\char95{}UV\char92{}\char92{}]cdeddfhaWWVWX][STXTZ[`cb`cgfcefhihffedecbehgfeec`bc}
+ \hbox{kddefefe\char92{}[PJ\char94{}b`aaXMFDBCKadfgffg`bebeecccedefefeeeeeffgfgfghgfghihhghhfjkjjeUGFEFEFFFHZhiWIEFEMc\char95{}%
+ fPGGEFGGGFGHIGHHIHKHGROZiljXGGQaggdWigeLEGUV\char95{}cSeVZ\char95{}cc]R\char92{}fPIXZIOY```a[P\char95{}db`ebPEEFGDEEFEEEFFE%
+ EI\char92{}b`ddfZQX\char94{}\char94{}SMKT[\char95{}abffdhfd\char95{}Y]\char94{}\char92{}\char94{}[\char92{}XQ[\char95{}\char95{}%
+ bccefeddefggfefcefeeeffdedccb}
+ \hbox{kddcedda`\char94{}[X\char95{}b\char95{}aba\char95{}ZHFFNbdegfgeZ\char95{}cbdeeeccdefggeefefggfggfhhggfgfggghihijkjhUK%
+ LLKJGIHLW\char94{}\char95{}NGGFGPZRcLHIFHGJIHHHGGHGGGEIIJM\char94{}ljhWGHL]a`[NaJIFFEFIN[M]MXX\char95{}KJQSaPGQWILZdddcZP]Z%
+ W\char92{}cYMGHJKGFFFEFGFFEHHUdb\char94{}U\char94{}QNRYXMEGO[\char94{}cedc\char95{}aec`\char94{}``]\char95{}]]Y\char92{}X\char95{}%
+ \char95{}\char95{}aacdefceegfefddecccdgggfggdc}
+ \hbox{kdedecca]\char95{}\char95{}\char95{}[\char92{}\char94{}b`bbbZQX`dddedffTS[aedbdcbeeffgffefefffhgfhhfgeifhghijihklkkbZ%
+ \char94{}[YTPOIIIXQHILLILMLdOJMKIKKIHHFEGEEGFFHGGYgj\char95{}ZQGGHQaXPJ`JFFIGEIR]P[\char92{}\char94{}X\char92{}UORLVPFFJGLW%
+ cae\char95{}\char92{}MQWUbfWIEIJJHKJGFEEEEFPIU[LXLQFMMIB77>HZ\char94{}\char95{}acedce]\char94{}aaeca\char94{}]\char92{}][[\char92{}%
+ ]\char95{}ba\char92{}aedadededeedfca\char94{}dgifhgca}
+ \hbox{jcbedbdd``bdba\char95{}aaabc\char92{}QUacfeedfcPIWbgdccddedchgfhfffeeffhgfhghgghhgjjhhhklkhUFGGJFJJKFISTRRTVWWWX]\char92{}%
+ ZXY\char94{}b`\char95{}ZVTTPMOLGFFFHVX`LGGGFGUZSMP\char95{}ZVTVTRLRPNLKLKTQIRLVYNOMLIJPN]U\char92{}MN[U\char94{}aPLJKLHGIII%
+ HIGGGFJGKNJYSOFCA>63:F[acaadeedfbcffeddacb\char94{}\char94{}]Z\char94{}`c\char94{}LGU[ceecehhcde]\char95{}affhhffc\char92{}%
+ }
+ \hbox{idcbddcebbde`\char95{}\char95{}cabbc\char94{}X\char94{}acddddcdVCJbefffedgeedeeffggdfffgffehifghghkjkiijjkicMGEEDFGHE%
+ EEEEEFHGEGFFHHGHJMJNOJIMRMIIFGIJHIP[UKIJNHNQFEFFGGIJJKOPPPOLIFHIINNNMJKMNOQWT]U]LKUPQ\char92{}PMKIGHGHGEC@BCDGIABMPSE><?==8%
+ ;AGXadedddhegfefdcbcfdbb\char95{}[Ydbd[HGJ[\char95{}deefhfehebbadcfjfec\char92{}}
+ \hbox{icdbcdecbbddcdaa`aaaba\char94{}\char95{}bccedddZRXdhfeeccdeeddcdeceefdfgeffghhggfijklkijkkklgPDABEGGGFFFEFFFGFGGGGGHI%
+ HIKQOOOLHJKJIHHIIJLM]JHGGGMMFGGFFFFFGHIHHJIHFFEEEDEFEFEEGFFKQ[Z`ZTVJDISVA9;;@B;4379;>?D@CIA<<:67;?DHNU\char94{}dfhfefgfigih%
+ e`cefcddb]`eeb\char94{}QYWadfffgfdfhfefabbageba\char94{}}
+ \hbox{idfeddeeddddbdcdccbaccaabfegeee\char94{}adihhfeeceefdecdeefegeedefgefggghjlmmmkjlllnl\char92{}OIFJLLMPOOMMLKLIIJKKJKH%
+ IIJIJINIJHHGGFFGJLJNbZUURKMPGHGGFGGGIJNOOTOQQPPCAEHHGHGGEGGGFHLLOWVHCJKH=9::85;;;;:>JLPONUT`a\char92{}ZT\char92{}\char95{}e%
+ fghhhgghhghhigiigfcefcdddcefee\char92{}R`adfbdffea`deffeccbbedaa}
+ \hbox{hffeeffdbbeda`bdbcacbcbacfdeddcbadfgheeedfedccbbbdefeedbbdfgghhhgjjkkjllkmmmmheSHIHIHEGFEHGCFEDHIMJIFCCEFDCDDFEFEEGHG%
+ GIGScgfikfed[ZUXYVNMRPKMMPMLNOL>@EEECEDCCAABCBBCCOVX\char92{}\char92{}N\char92{}\char94{}SOJSP]ZYYUQZWSONP\char94{}bgefcehh%
+ ifhgighhhhihhjiihgfggbbcdedebd]Vbceeedd\char95{}P`ea\char95{}fcd`[bbaceb}
+ \hbox{hfbffgffcbeddcddacccbccccgefdddbacegghdfeececbdbbdeegefdefffeggfhhjkkjjjijjjljl`MFJKIIHKNMPHMMLIIKGHIGHJGFEFGHGHHFIKI%
+ MKKPRZZ]]\char92{}a\char94{}SWZ[]\char94{}VQRGFHJMIFEEBNV[IFGGFFHHIJKKIKKKOQSSUUUSTQTSSQQQOOT[QSUQ]`ffhiiiijhhhigjhhjiijjjg%
+ ghfffddddbaa]\char95{}\char95{}`aeeeeeebV\char95{}fc\char95{}`ca\char94{}[][Xaab}
+ \hbox{ffcefgffeedcfce\char95{}abddb`\char95{}ccdeecde`\char95{}cdfghfifdcdcdcbfeddgedffeheffggigijjjjjhid\char95{}ZY[NMKJJI%
+ IIMMJKLMQNNNQOOLKLKKKJJIKJIMKLMJPLHIJLMOMKHJIIGLOPONRNPRTWRTTVTVTSWQKMRRRWUTRSTUVVbeUROQRPQRSQRNSTROTQLMQNVaeggfgjkkigiggjh%
+ ghigiiiihheehfeeca\char94{}[XY\char94{}bcdggfegfa`ee\char95{}Z\char95{}a]]\char95{}YY\char95{}ab}
+ \hbox{gffgfhfegbccfcd\char94{}]\char94{}dca]X\char94{}cebbdeea`\char94{}deegfhffdcecfdfdedfffdgfghgghhhgihihjffh`V\char95{}%
+ QJJIHGGHGFGGEGGHGGHGGHHJIIJHFGHHJHHIJIHHIIGGGHHGFGGDEGEFHHGIJJIIHLOKOJJNVccRIJIJIKJJJMOYR\char94{}jeNGLPPNLLMLMLKIIEGFEFECH%
+ \char92{}defhgjikiiihjgfegfhhikijffgheebb\char95{}\char94{}ZZZ\char92{}bceffeehfdceee`\char95{}[YXa]\char92{}\char94{}\char94{}%
+ a}
+ \hbox{hefeeegffdbefcec\char95{}\char95{}`X]\char95{}\char94{}L\char95{}a[\char92{}cfgdaWcfdefggefbecebbdfffddedfggcghhiggij%
+ jkdafe\char95{}\char94{}KGGEFEEDEGEFDEGFHGGGFGHGFGGGHGFGGHGGIIJHHGFFFFGGFFGHGFFFGIGHIHHGHHIJMMILWfaPLHGHGGHIHHFGIRjdKGEGGJF%
+ FFFGIFEEEFFFFEEFP\char94{}c`]bhijiihghhigggggijgiefghfeced`]Y[\char92{}`adffffgfcefec`][Y\char94{}\char95{}V\char92{}TNV}
+ \hbox{hfgffgfe\char92{}\char95{}`dcfdcZWVMV\char92{}[O]\char94{}\char92{}\char94{}cdfa\char95{}Zcfegeeffd\char94{}bbea`deff%
+ ecdebhgcchghhifjijhghf[NCEFEEEEDCDEEDFFGFFEFEFFGGFGFFGFGGHHIJIKIJHGGGHGIHFGGIGFFFGFFFGHHFGHHIGIHNe\char95{}JHHFGGHHIGKIHISh%
+ fUNGHFFFEFEFFFFEFFFFFGFFJRZ\char92{}\char95{}ehgegkhjhijghggfghhieehgdfadca`\char92{}``\char95{}`beeefffefdc[a`\char94{}\char92{}%
+ \char94{}\char95{}\char92{}NKVP}
+ \hbox{ifgefgffXcacbde\char95{}UTVSU\char95{}`ZYY``cdeVRWddghgife`]\char95{}`dbadeeefedefedefhghigfkkkjigZIEDFEEEGFFFFEFGFHG%
+ GGGGGFGGFIIHFGGIIGJIIHHJKHGHGGHIIGFEHFFHGHHGJIHHHJIJIHIKQebVQHGIIIIIGHLMJNPRPSNJHLLJIGGGGGGFGGFEEDHT]bccggffhjgfhjigfhhffgg%
+ fefhhefec``c`ac`cbeeegdfee`Wcda\char95{}`\char94{}]\char95{}RCIT}
+ \hbox{jfefgeefff`accc]RSWWXWYXTY`\char94{}\char95{}be`\char92{}affiigghf\char94{}S\char95{}a`\char95{}\char95{}bccddffffgef%
+ gigghghkkiii\char95{}FCCDDDEHEEFFFFFFEHFFDGHJHIGIIIJIHHHHFHHHIHHHHFGGGIGIHGGGFGHGGHIHGFHGHHHHHGGIMPROKHGHGHGHHHIHHGIGHHIGFH%
+ IIIGHFFGIHHGEGLT\char95{}geigggdgihhhiihifggfededgfhihfed]\char95{}bdcc\char95{}\char92{}\char94{}efeedceeb\char95{}\char92{}%
+ XY[]``\char94{}[RHO}
+ \hbox{heeddeehea[\char94{}dcaa\char95{}]\char94{}\char94{}RIOUU\char92{}]]]cdfbbgfhghfgg\char95{}V`c]W\char92{}adebccdfffee%
+ gjigiijjjjih`NDBEDEEMKFDFFFFGGHGHHHHHIIHHIJKKHHGGHHGIHHGFGGFFFHHGFIFEFEGGGHGGGGHFFGFGHIGHHGGHHGHFGGGGFHHGHHGHIHHFHHHGJIHIJI%
+ HHHIISafhgghhghihhhhijihgdegffffegfggfedeaadcefb\char94{}\char95{}ddfeecfdfdedbbcaabc\char94{}ZW}
+ \hbox{hfggfheh\char92{}WO\char92{}`YY\char94{}`\char94{}\char95{}\char95{}[PWRQ\char94{}]abbddabghghhfffd\char95{}`ca\char92{}%
+ R\char95{}]cdecdgggfghijihiilmikkfdTNONTKRUJEFGDEEDEFFFGHGFGHGFHHHGHHGHGIHGHFEFFEGGIIIIJHHHGHHHGIJHIHHIHIGIIJHHIIIIHHEGIHGG%
+ FHGIGFGGHGGHHGHHHHIIHJHHGKYfhgffjgdfhhhiiggfdgfgfgggffgffghedfdeeeggfecfge[QTW\char94{}c]]\char92{}cddabd\char95{}ba]}
+ \hbox{jggegggfSOX]WJUab\char95{}\char95{}`\char95{}[\char95{}VX\char95{}cccedccbeghhggggfa]ba\char94{}]a`cdcefefggffgjjjjgk%
+ ljjikkjgfdhZT\char92{}UGFFFEFFEGGFEEFEFHHJIGHIHGGHHGFFGGGFFEFGHHIGHFGHGEFEFHHHFGGIHGGHHHGFGEGEFFGEFGGFFEFHFEDGGGEHHHIJHIJII%
+ JJHHJXaeca`ffeegjhghhhbbgff\char94{}dahggfggegfdebeefhhhhfhhe\char92{}XY\char94{}a\char94{}eggeddbccbcd\char94{}}
+ \hbox{jggfegdi\char95{}OU\char94{}]TXabb\char95{}adc\char92{}X\char94{}`ceeedcbddgfhigifda\char94{}aba\char94{}`\char94{}bc%
+ dcffefegighiljgjkjkklkklmikhZ]dXIHFFGHGHJIGCDFHGGGGGGHHGJIJHGHGHGFFDGHGHKHGFHHIHIKHJJHHIIIHGHIHFHHGGGHEGFGGHGFGHGGFGFEFFFGH%
+ IJMKJJIHIGIIKKNYSRPYbdgfggiijgb\char95{}eddcbVcggehhghfc`bdeffihheffihghheegfgeeca`bbcc\char95{}}
+ \hbox{jfgffggidZZbcaabbbb`bb`]\char94{}\char95{}`eeddc`dfffgeghgfbbbeceeddbccdeeffghhjjkljllkkmlkknomkkcaji[VVWSUUVSSIEHHJJ%
+ NJJHMPQQTVXWWVWWTVWUWURTVRPSUWUYVOOQRSNTWWVSUTPQSUSTTTOPQSVUTQTUSTTRSRURRSRSTX\char94{}UPGGIMTSRSRSZdabegiiiijjie\char95{}d%
+ cdadfdfgefggeggfedfegehhgiggggiidefhefdddc`WWad\char95{}}
+ \hbox{jhhggghgdbdbba]bbcb\char95{}ac\char95{}\char95{}]\char92{}\char95{}bdddecdfgfefhgfc\char95{}\char92{}`cffdfddbcdcffgg%
+ jiihiilljkllmjikmklmlflic\char92{}[[XXWYVUOLMORQQPNMPTTRVZ\char92{}Z\char92{}\char92{}UUX][YZVQRPNOTVXXZYSSUVTUWYYWSVTRTV[\char92{}%
+ \char92{}Z\char92{}ZZ\char92{}[[[XZY\char92{}ZZ[ZWUWYVMSVV[[YRPMLQQSVVW]`fgffghkjijfg`cbd\char94{}aghfffgefggffdghffgghifgf%
+ gggihe``fdbdeda]MN]d`}
+ \hbox{igfgggfgfaabcb\char95{}acb`ab`[X[\char92{}adbbddbcffgfeggfc]\char92{}abcd`ddcdffeehhiiihhhkmllkkjihhgljmoomi\char95{}%
+ \char95{}\char92{}Z\char92{}ZWVXY[YXYYYVWUTTUTTRSWWURNNKNTXZZUKJJPYXXVXYZVPTYZXXY\char92{}\char92{}ZXZYXY\char94{}\char94{}%
+ ]YYXY[ZXWWZ[]Z\char92{}]\char95{}XXVVOMLNMLLHFIIKMIILZaddgihhhhkkjjiedgcd\char92{}]cdfgdffffggefhfgfeeggfgc\char95{}cgfcdfb%
+ fbcddb\char92{}NZacd\char95{}}
+ \hbox{hheeghgffa]bddbbbcdd`a][\char94{}`caccbdcdfefeegfgeba\char95{}\char94{}aedbadgeheghgijljiilmnmh\char95{}bcgfdhhkllha\char95{}%
+ a\char95{}\char95{}]]ZZ[Z\char94{}\char94{}\char94{}\char95{}]\char92{}]WSXYUTQOSTTVSPKIKW]]\char95{}WHCELXZWUZ]ZTMRYY[]]\char94{}%
+ `\char94{}][\char92{}[]db][\char92{}]]]\char92{}\char92{}[Y\char95{}\char94{}\char94{}\char94{}\char95{}a`[XWTMFCBCBBA@@AAC%
+ BBLacihjhjjfijihibaehgf`YcdffefgfffgfffgfffdfeefWCEOQGKY`ghgeeca\char94{}Zcb\char95{}]}
+ \hbox{ifdccgfhf`W]dffdbba[Saabaccbdcecaddeeefefgeddb`ca`\char95{}aegggggfiihljiiimmlj]]bdfkaejmd]\char92{}c```\char95{}\char95{}%
+ \char94{}\char92{}]\char95{}`acb`a\char94{}ZWTRSUUTVWVXXWSNNU\char92{}\char94{}aZKBBI[b\char95{}\char94{}`b\char94{}VNMQTY`%
+ ca]]Z[]]\char94{}ddb\char95{}\char95{}a\char95{}\char94{}\char92{}]]\char94{}\char95{}bb][\char92{}WTYQNGA??>>>=>>>?@@ASaik%
+ hhikjgdaadeeedebe`cefefdcdfgfeeffeffdee\char92{}\char95{}`LAKFECNUDVfgfdea`[a[U\char92{}}
+ \hbox{igffefhigga[cgeebbb\char95{}abbeaddcbdcbbccedffefgccdcedc\char95{}cccfefgfgjghihiihjjkjhijjlme`meXX[``aca\char95{}\char94{}%
+ ]`a`ceeb\char95{}[SVSQOPOOSSVXXTOMOU\char94{}dc[KABL]cdccdaUMJLTY[\char94{}[ZSQQU[\char95{}dbcbbb\char95{}`][[aab`[Z\char94{}%
+ YQQLIEA??>>>>==>>@@AOcikiggiifSCJ\char95{}ghfhgififfgeb\char92{}\char94{}\char92{}]ffdgefeeede]JY`UZWRWU\char95{}\char94{}K%
+ K\char94{}fafgaaYb`Y\char92{}}
+ \hbox{feffggghgegeffdeadd\char95{}cddc`dedcbdc\char95{}cddfdfffgdddfeeecdbaffhgheggfggiihhhjkijjiknnkn\char92{}HLWZ\char92{}%
+ \char95{}aaa\char95{}\char95{}\char95{}bbffec\char95{}XSPNKLMLJILPRPMNKNS\char94{}aaWF?BM`ddfef\char94{}RJGIOUWXUSQNMSX\char94{}%
+ cb\char94{}`\char95{}\char95{}]\char92{}WVY\char95{}\char95{}\char94{}`XYZXOMLJE@?>?=?===>>@@@I\char95{}ikiffhhhVEP\char95{}%
+ efhjkkgifbbgecccagehgfceffegfacdcZO[QW\char94{}[UIW\char95{}db]\char92{}bccgbc}
+ \hbox{iegefgjhg`cfffffgjXZabbc\char95{}cddcecc`bdddffdfgebdeffcdcefffhghghjhhhifacfidUY\char94{}ghieheNDIQUW[\char94{}\char94{}%
+ ]Z\char92{}`ccdfb\char95{}ZOGDDFCFJKKJNNMJHGILX\char94{}ZQB?AP\char95{}efgcbWJBBCFMPPNKJHILTY`\char94{}\char95{}\char92{}]\char92{}%
+ XTRTTVWXVPOKMIKIIEA?=>===<=>>??@BYejjjikjh`K?E\char94{}egjgihhgbYchcba[ffggeceffeeeYZ`dVBHDEKEEDN]`VGCQXadgf}
+ \hbox{ihgggghj\char94{}]cf\char94{}Z\char94{}ahi\char94{}R\char95{}\char95{}\char95{}Y`dddddecbdcedegeffacbacedcbgeegfgggjk%
+ hihb\char95{}\char92{}`gdVIIQSXZVWOFAAGOVYXWXW[\char92{}]cce`\char94{}XNGDCDFEDEEHHKJGDHKPZ`\char92{}PC?BOaffebZTLA?BELNLHJ%
+ GCGIPW\char94{}\char92{}[WXTULLMMPRPNKHHGDDCCA?==<;;;;;===>?BI\char92{}fhkjlnjgOEJ\char94{}fhibfgigfa\char95{}fhfbaeeeegdgh%
+ ffedR\char95{}cceOA??A=?GFJNKHEDE\char94{}efg}
+ \hbox{igighhjhURXURV\char94{}cff]KQ]VK[`eccdcbbbdccdcgdeaa\char92{}]bcecbhghehgghllkeccgiihhfVFGKRTPMDA?ABJPSOSUTVY`c\char94{}%
+ ]\char94{}YRFA@@@BDDECEEDEEDEGRS[TKA?CP\char94{}cd``[SFA@BKOMQJHCBFKOWY]`ZXUTSJNOQTUNOJGECBBCB>><;;;;;;<<=>>@DOahklmonldOX\char94{}%
+ iihefgggfifiheeccededfeedgeeZ]]`bPJB>CE@G?AGOJVYQPchf}
+ \hbox{gdffghii]X`eggd`PHYQ[ba\char95{}`ddeebdbacdcdedfffca\char94{}ZaebcaggffghggfjiebgkjjijidZRLLNLIC?>?AFINLHNQOTXW[XSOHA%
+ A?@@AACDCCCEFCBBFMVWPF@?BQX\char95{}a\char92{}USPD??@CGIFCB@@AFMVX\char92{}]YTRPOMMPRSSPNJIHEEEDA@>><<<<<<<=>>?ADHVaeikmmmj%
+ beijkhigiiijjkjjgdddeeedddddeefda\char94{}PIIFEKFQFQGFFQY`d[Wegf}
+ \hbox{hfedfgiijf\char95{}WPF@?>JVJSbcb\char94{}eedceddbaadeeeffgdba`cdedchghffhfhihhgfgkjjjikijeQLNJFB>==@BDHKLMGJQTTWYSLBA%
+ >>??@AAAABBECA@ACGLQJD?>@KTZ\char94{}\char95{}WPKB???AHLJDA@@@BDNWY[VWPNMKLMPPNNWHGECCDC@>><<;<;;<===>?BEEIPT[ffillhjigfhih%
+ ikijjjliifedfdecdcebefgdg]D<>===@?FZYIH\char92{}bc`V[feb}
+ \hbox{ggfffhhgVG?>=>>>?DLRVUOYYdddcded`bdbdffeggcbedcbdfaehgefefgifjgfkkllihjijfSIJGC@><=?@DEGIGIOLOSUXQKC@>>>?ABCCCCDCCCBA%
+ CGNMHC?=?GSRTUOMIA?>@BDGCAA?>@BELTSTVONLIEIMGI>BRHJFDDCC@@>==<<<<<=<=>@ACEHLJLNGNbjjghedgggghhjg`ejjhedeebcecedcfe]df]?;<;9%
+ >=@Q`RL\char92{}ddgceff`}
+ \hbox{hfffffffKA>==>==>@BGJDIN[bedcddcaaddeefgggc`cdZ\char95{}`beffhgdggghhijijiikhhhkkh\char94{}SMHEA><=>ACGGIIIKHMPQUMFC@%
+ >=>?@ABBBBCBB@@ACFONFA?>BGO[VTPJEA?=?@ADEBA??ACEJPMOQNMNHEGGD?:=MCCCCEBA??=<<<=;;<<=>>?ACDGJGCB>@Wfghjgbadddiig\char92{}ON\char95{}%
+ gifdgdcdcdeecbaEJYfT:;A@@?>K`\char94{}]]`dhifhig}
+ \hbox{hgfffefcG===>=<==>>?FKACTdeeceedaccfdgghhffee[MNO][difgcdghhhhiijllmjgjjjlhiTDC@=<<>>BDEEEEHKKKMQIFB@><>?@AAACBCCBA@@%
+ BEIMF@>>AGOXRQQJEA?>>@BCCA@>>?BGKKLQLJJKDFDC?5=;JDBBABA@?><;;;<;<;<<==>?ACEGFDB@>E\char95{}iijic]Y]c\char94{}dh`bXIV\char95{}%
+ Qbgfddedddcc\char95{}H;?\char95{}`@<DBIFM[`b\char94{}cdcfjgihg}
+ \hbox{igfggefeG?>===<<<<==AHEJZdfeefddacceddhiffffdUJIP[VdijhefehighhijijlihihijleLFB?=;<=@BCDEDDEFHJJKHCA@=<=>?ABBAACCB@??%
+ ADEGC>>=@CJMNIJFA@?==?ABA@?>>?BEGFLNMKGEDDB@64>9FEBAAAAA@=<;;;;;;;;<>=>?AFOGCCGKCANegigXNZegfigfgg`RHLadecdddecdcaI;;QcU>@K%
+ BYMBWc``abfihjjh}
+ \hbox{iggggecdG>=<<<<;<<<=@BCF[ceeefebZdddfffeggeeeZZWXcbehhhgfgghggiihgljlhigijhOEB@?<;;<>@CDDCDDBDEFKDA@=<;<=?@AABCBBA@??%
+ @BGHDA??AELPPLJJB?>>>@ABA@@>>@CEGILKJHHEDBA:45@8DAA@?@???=<;;<;::;<<<=>?DT`XLQZcZWWRQ]`bb`igabga\char94{}MOTYcddefedbeddcWA%
+ >>B\char92{}cUOGP`RHR\char95{}[]Z\char94{}bfiihh}
+ \hbox{jghgdacdF==<=<;;;<;;<><>Vcdeeedd\char95{}deefegdffdba``ecedghhhgehheffiigimlkkjhklkRAA@><;<=>@ACCCCDDDGEECA?><<=>?@AA%
+ BBCBA@???BFDB@>>?DHLMGGEA@>=>@BB@?>==@ABGIKGHGFEDB=546A8GDABAA@@?=<<<<;:::;<<==?BPchbggha\char95{}U@?BHV\char94{}\char95{}`%
+ XCEMEF@AH[cefdegdcdfedWGONEKdgeddfebdf\char95{}dUWcfhfce}
+ \hbox{gffgedacF===<<;;;<;<;<=<Odeddecccdfefffgf\char94{}T\char94{}Y`b\char95{}\char95{}[`fghgffff\char92{}ciijillmlklkkkmaI%
+ BA=;;;==?ABBABCCDFDDBA?=<;<>>@AAAABBA???@BBCB?>>AFGLNHCCB@>=>@AAA?>==@ACEHLHGFFEE@7547@7DBBA@A@@>=<;:;;::;<<<=>?@DQZ\char94{}%
+ iibIDD>==>GGEGFA?@@@>>AHXdcdffddcdeg\char95{}[d`RF\char95{}ege[P]dggd`SR]eifdd}
+ \hbox{jgfgfbeeG=<<==<;;;<<==<=Wdecedbaceeffeffeb\char92{}\char92{}\char92{}\char94{}ZWWP\char92{}eefc\char95{}`Ubbehjjmmlml%
+ lljjjljcZJ=;;;<=>@A@BBBDCECBBA?=<<<=>@@AABBAA@??@ABBA?=>@ABGEEDDA?><=?@AA??>=?ABEIIIGFGDB:4348C7CB?@@AAA?>=<;;;:;;;<<>>?AAC%
+ HJSRMA>=<=>>>??@B@@@@???>>B`ddfgfeeceecbgf`KX\char92{}ef\char95{}Y\char95{}dge\char95{}RVV\char92{}fhhhe}
+ \hbox{jggggdedH<><<;<<<;<<;;;<Xdcccdab\char95{}deeffeefaWWZV\char94{}\char92{}YQX\char94{}\char95{}\char94{}\char92{}Z[SQgi%
+ fhklmmlmlkljjmllmP<;:;<=>@@ABBCBBDCBAA>=;;<=??@@AACAA???@@BB@>>>>@CFDECBA>=<=>@AA@>=>@BCEGHFHFFD?5335<E7CCAAAA@@?=<<::;;:;<%
+ <==>?@ABCBCB@>=<<<==>>?@@@?@>????>@\char95{}defgeefefhcfhfZL\char95{}ccfgfgcfba]`acdfigg}
+ \hbox{jffeedecF<<<<<;<<=<;<<;<Scccbdc\char95{}YbfefeedgcUPJCDGLSX]]X[a`aagigiiklkmllkkjkjlgX?<;::;;=>@@ABCCCCDBA?><<;<<??@A%
+ ABBB@@?@@ABAB??>?ACDEEDBA>==>?@A@@?==?@CEDFGGEFB74365BD6BBA@A@@@?=;;;;;::;;;==>?ABCBBA@??>=<<==>??@@@??>??>?>Aabefggffedfaf%
+ g`TR\char95{}gh`\char92{}efeggeccdba\char95{}dgg}
+ \hbox{jefdfdheI==<<<<<<=<;;;;:Sdcdddc]Teffffede\char92{}B?AAGKSY\char92{}]YVYafefhifgigjkljkmkiijeJ?==<:<<<>@AAABBCDDCB@?>=%
+ ;;;=>??@@BA@@@??@@BBA>>>>@EECDCA@>=<=?AAA??>=?@CFEHHEFD>548B8IE6>DB@AA@??>=;;;;;:;;<==>?@BCCCA@?>>==;<=>??@?????>>?>>B`effg%
+ edefffcgha\char92{}b]cfdcbdfgfffhfffcefh}
+ \hbox{jffggggeG=<;;;;;<<<;;<;;Rbccddd]Pbefggeef\char94{}JJJOSSSUXYUWU`feedhhh\char95{}TYejkkjhigbVB==><::;=>?@A@ABCCCBA@>=<%
+ <;<<=?@@AAAA@@>?@@BAA?>>?ACEEEDBA?>=>?A@A??>>?@CEDFEDFB757I>>KD6<AF?@@@?>><;;::;::;<==>?@ACCCBA?>=<<<=>??@A@A@?>>????B\char94{}%
+ defgfeeegeaeecYRWcaa]bbbehgfiggddeeh}
+ \hbox{igigihffG<<<<<<<<<<<<<:;Rcdceef]SdfgeefegbNOPSNORUMMUTUbccegfhbJCEJZhhbgefLI?=>=<;;;<=>AA@BCCBCBB@?><;;<>>?ABAAA@AA??%
+ ?AABA?=>?@@CCDCB@>><>?@@@>>>=?@BCDGFHE=6:9C;CKD6<BL@A@@??>=<<;:;;;<<=>?@AACCCAA@>=<<<<>??@@@@@?=>>??>C\char94{}bdfffeeegf]R%
+ STGDN]WXY\char95{}]Z\char95{}djhghfceffg}
+ \hbox{kefeghgdF=<<<;<<;<<<;<;;Rbccefh\char94{}WddegdeeebVNRRTRTZRMRY\char95{}ceghighdTA@AK[KU\char94{}PXCLA?<<<:;;<>??A@BBB%
+ BBBA@?>=<:;=>@@ABAAAA@?>=@BA?@>>?@BCEDDB@?==>?@A@@?>>?@BDEGGFD:6:>G?LMD69ENB@@@??><<<;;;;<<<==>?@ABBCB@?>=<<<=>=>@?????>>?>%
+ >>E`ffffeeffgfX@AA>@RY\char95{}LQPS\char95{}Q`hehgfafggi}
+ \hbox{kghigggeG<;<;<<<<;;<<<<<Pbdbdfe\char94{}Ydfffbdef]VYTP[VQ\char92{}[UX]adfjigghe\char95{}VE??@=AC>>?P?==<;:::<=?@A>@AB%
+ BBBB@?>><;;=>@@AABBBBA??@AAAA?>>?@ACDDCAA><<>?@A??>==>@ACDEFE=6556<CLMB67HOF?@@?@>==;<;;;;<<==>?@BCCBBA@>>=;<=>>?@@@????>>>%
+ ?>DadefhggffggW?==CNZ[\char94{}KM\char92{}\char92{}\char92{}LS]\char95{}\char92{}febfffh}
+ \hbox{kggggggeI;<=<<<;<<;;<;;<Sbbfbff\char95{}Yfeefccfg[QWXV\char94{}a[\char95{}`\char94{}\char94{}\char94{}bffijiiedegUC>>%
+ ?=>ABJR@==<<:::<=????@BCCCBB@?>=;;;=?@@@BBBAB@@>?@AA@?>>>@BDDDDB@?==>?@@@@?>??@AEEEEC964456EMMB67KOKA@A@?===;;;;<<=<>==?@AB%
+ BCBA@>>=<<=>?>?@@@?@@>>>>=E`ecegddcfffV?CHDLZUSLYdbZLCMYRegdffgd}
+ \hbox{lghggfgeJ<==<;<<;<;<;;<<Rbbddefb]efffffff[NW\char92{}\char94{}\char95{}efabbbaeghjkjhdaf`JA@?@A@OKLPA?=<::;:<=??ACB@A%
+ BBA@@?><;;<=>@ABBBBA@?@@@AAAA@>>?BCCDEDB@?>=>@AA@?>>=?@ACEEE?65344:MNLB66MMPB?@@?==<;;;;==<<>=??@ABBCB@??>====>>?@@A@??@???%
+ >?Gaddfddddege\char94{}OOES[Z[RKVdeZNDKTUdfeifif}
+ \hbox{kifghhieI<<=<<<<<;;<<<<<RceecffcbhfggefegaY]adadfbaeddfhhhkjihhg\char95{}IB@DCMJTWTQD===::<>==?ALVEAAABBAA@><;;=>?@@B%
+ CCAA@@@@@ABA@@>>?@BBDBCA@>=<>??AA>>>=>@BCDDC964446DNNLA55HLQF?@@@>>=<;<<<=<===??ABBCBBA@>>==<==?>?>@??>>>>>>=Gbeffdcddeed\char94{}%
+ GGRb\char95{}XVTTafaTTGI\char92{}]fgefiih}
+ \hbox{khgfhigdI=<<<;<<<<<<<<<<Pdegefefggfegfgfg[YcacbdcdeefefdeghefighfWTIDOVXZ[[KA@=><=BQ?>?L]eH@AABBA@?>=;;=>>@ABBBBAA@@@%
+ @ABB@?>?A@CEFCCB@@>=>@@@@@>=>?@BCDE@76456<LNNK?45EKOK@@@?=><<;;;<<==>=>?@BBBBBA@?@=>===?>@@@?@?>>>==>HbegfcefeffeT@BUaaYOQ\char92{}%
+ dhaLIBB`dgiijjih}
+ \hbox{mihfghheK=<<<<<<;<<<<<;<VefgegffghfedggefW]``\char95{}ZVVWeghhfVUa\char94{}]dgfihcZGDR]V`d`PFRQE?<G`PMFSaiP@BBBAA@?>=%
+ <;=>?@AAAABCAAA@@@AB@?>>@ABCCDCA@?><=?A@@??=>>?ABCD<64558FNNML>44@INOA@@?>==<;;<<<<<>>>?@BCBBBAA@>====>?>@@@@??>=====Icdfee%
+ ehggfeRAEYZMFL`ddcYMEJO\char94{}dZcgjgih}
+ \hbox{khihiikfI<;<<<<<<<;<;<;=UehhgffgfgfefgffeFQWYMBCCJcgihiTLYZU\char95{}fb\char94{}a\char94{}OKNaf`bgh\char94{}\char95{}%
+ \char92{}TAE@?L]`QNdjW@AA@AA>>>=<<==>@A@ABBAAA@AAAAA@>>>?@CCDDCA@??>>?AAA?>>>>ABBCB85457>LLLJJ<55>IMNG@@?>=<<;;;;<=<==>?@AC%
+ BCCB@?>=<==>IN@@@???>==>==Ldfgfecggggf]KQZLAP\char92{}S[[TJGACTQb\char94{}Yfighg}
+ \hbox{kijhiiigJ<<<<==<;<;==<==WefggggfggfgfijgeE>CELCABMbfhfcVTT[b`edbbaRUdjjghigZa[XTQ[FPcdYR[[D@@AAA@?>?=;;<>?@AAAABAAAA@%
+ ABBA@@???ACDDDCC@@???@AAA??>??@ACD?7446:FMLKII:64:GLMMA???=<=<<<;<===>?@BBBDCBB@A?>>===GYGA@@@??>>>>>KegfggffghheQBDMHCGFEE%
+ IF@@@?NI]Z\char94{}fhghh}
+ \hbox{khjiihigH<==<<<;<<;<<;<=WddfghfffhghjhhfeC=>AEIABMdhhfVDMKVabeeffgbUbjhghhhdieWZ\char95{}[P[\char92{}cRBFB@BAA@@@?>==%
+ ;;<=??@ABCBBA@@@@AA@??>>>ADDDCCB@?>=>?@A@>????ACDC<7546=KLKKKE854:ELNOC@A?>>=<<<<====>?@@BBBBBAA?>====?KYSCA@@?A?>=>>Lehhfg%
+ fgiiihU@ADSYE@@?@A@@A@QYee\char95{}gigfe}
+ \hbox{jhihiiieI<<<<<<<<=<<<<<=WefefffhghihiihhbA?@@ALFAOdghgRCJBDOafcafhgbbhijiikijcTVaeWdeXC@@@?@@A??@?>=<;;==?@BAAAAAAAAA%
+ ABBB@???@@BCEDDCB?>>?@BB@@>?>?@ACA85449FLKJJI>6439BHKKG@@>===<<<<<===>?AABCBCCBA@?>===>AFQ\char94{}UWY]\char95{}\char92{}VH%
+ A@NdfhdfhgigggVBCNSP@>??@>@@@@RQYc`gcdbe}
+ \hbox{lhggkjifJ<===<==>=<==<<=Vfgffgggiijhhjhha@=?A@DLBLeghhVHIBBPee\char95{}bgijhiiijjjjjkgZ\char92{}ficba[K?@@?@AA@@?>?=<%
+ ;<=>?AAABCBBAAA@AABA@?>>?AABCCCC@?>>>@BBA?>?>@BBB>6446BKJLIHE85439?HJJHA?>>===<<=<>=>>?@@BCCBABA?>>===>??AP\char95{}`[TTWcg%
+ c[\char95{}ffffffgggggM?L\char94{}V@>>@??@@?@@QMP\char92{}\char94{}b[Z\char95{}b}
+ \hbox{liigjjifI><<=<<<=<<<<=<=Xehffghghjjikjhg`?=?FMFKDJgfhfOLQFDJ\char95{}ecffgiijiiiiijkjia`gkk]CCB=>>?A@?@A?====;<==>@AB%
+ BBAB@@@A@BCBA@?>?ABCECCC@?>>?ABAA?@?>?AA@:446CIHIIHF;54338<EGJIA>>>==<<<;<==>>?@@ACCCBA@@>>====>@@@BA@??KROQW\char94{}gggfe%
+ gghhgeN?AJI?>>?@@???@DQFAPSOZUZT}
+ \hbox{liigjifdG><<=<<;<=<<;<;<Teffffffghjfjhih\char95{}?=>ACEPKKcghfMOWQLOXbdhhgiiijkjkiikjkiffcfWC><==>?@@@KVH>=<====>?ABB%
+ CBBBAAAABABBA????@ABBDCB@@>?@@AAA????@@@>746CGGFIGC;643338;CGHGF>=?>=<<<<<=>>?@@ABCBBBBA@?>=>>>??@@@A@@??>=?>OehggffggfhgM>%
+ >@>>=>?EFCCDFQIHGJPFJS[W}
+ \hbox{lhkikiheG==<<<;<=<<<;;<<Sdffffhggghhighh\char95{}>>??BACRMefgeJOTHJS[bfiihhifijkiihkiiheYHGC;;<<=>>?CKYgPE?<<<<<>@AAB%
+ BAABAA@ABBAAA@>>?@BCECBB@@?>?@AAA@@>??A@<66CHFECB>75433237:@CEEF@>>=<=<<<<==>??@AABBBBB@@>>===>??@AA@@@@?>=>>PehhgefhfihfM?%
+ >?>>>>?@@@DFINCDDFLLJVWN}
+ \hbox{lgiijkigG==<<=<<<<====<<Wddeegfggffghgie[>=?@ACBMPdhheHMPLRN[cigigfhhigjhkjjjhidE;9:<;<<==>>F[`dTYC;:;<<>@@BABBBBBBAA%
+ BABBA?>>@ACBCCDBA@??A?AAA@@@?@A?:8?CAA@<64433222269>ADEE@>>>>==<====>?@?@BBDCBBA@?>==>??@AAAAA@@@?>==OdgihhfhggffL=>>=>==>=%
+ ?EFCJIAHGFOHHRQJ}
+ \hbox{jghhkiihH=====<<<=<=<<<=Xcddedehgghhghhg[=<>?ABBCXdgheIL[P[WT\char92{}dfgfghijghhhjkkhjbSIBF=;<;<>@AET[VV\char95{}C=;%
+ :;<=?@@ABBAAAAABAABAB??>?@ABCBBAA@??@@AAB@??@@@>AD>;864422322222269=@ABCC>>>>==<<==>=>??@@CCBBB@@?>?>>???ABAA@@?>>>=>Oeeggi%
+ fhgggfL>>>?>>=>=@DABGOBCBEDCCMVQ}
+ \hbox{igjihjffG<=<<<;;<<<;;;<=WdecedfgiggjhiigX=>>?ABAARbgfdGCXGR\char94{}PN\char95{}ghhhjiihhghjmjhihfcKG>:;:;=HUXS\char94{}%
+ \char92{}Z\char94{}OR?;;<=?A@AABA@A@AA@ACA@@>>?@ACDCBBB??@A@BAA@@@@@@AA<87643332222332259;===@B?>====<<<=>>>?@AABCCAAB??>>=%
+ ??@@BABA@@A?@@??RcgfgggihghfM>>>?>=??>B@@CFGBCCBABCJKR}
+ \hbox{ihjiihdfG=<<<<=<<;<<<;<<UdgfedfggffiiiieV=>>?ABABIcggdFJWOJVSUabfggihhihehkjiiijkhWD;:9:<?S`bSXf\char92{}HVU@;;==@ABB%
+ BBBA@@AAAAAA??>>?ABCBBBA@??@@@AA@@@@@@AFC??>??>ASA<=<=>:788;;::<??>>><=<==>>=>?@@@AABBAB@?>>>???@AABAAA???@>>QeffhhfhghhgS=%
+ >?=>==>>@??BEGAADFCADKNP}
+ \hbox{iiijjhhfG>====>==<<<;;<=VeedhegfcbfhiihfS=>>@ABBCOcfebEIUDFXaf]cfihghfhhhihghgjklkgO<::<BEYY\char94{}XXc\char94{}V`Y@%
+ <==>>@@BBBBBAAAAABAB@?>>@A@CCCCB@@B@@@AAA@@?>@AAAAAAA@?A`G==???>?AA;::9:<D?>>=<<<==>>??@@BABBBBA@@??>>?@AABAA@@@A@???Rehhgf%
+ ghgghfS>?>?>>>>>??BDAFBBCDBBEFLL}
+ \hbox{ijighhieG>==<;<==<<==<;>UddeeeeeeggiihhfT<=>@ACEIXghgdGLN@A[gffghiggffgghigggdgjkkgI<9>LY\char95{}\char92{}XXXXcaZ\char94{}%
+ dYLKIJA@BCBCBBBBBAABBB@B???@ACBDDCB?@@AAAAAA@@??@BBAAAA@@HUQ??>>?>=DJ;;:::;GC>==<<===>>???@BBCBBBA????>==?@ABAA@@@??>==Qfgg%
+ hhgfggigS>??>>??>???@DEGDCBCBCEIOP}
+ \hbox{jjjghihfF<=<<<<<<=<=<<<?ScecfffddfhhigggU=>>@CCBLVfgffV[LBKdegffhggfefhgghgghffgfgbKKNTceihcebbcVR]fdb][[C?ABBCBAABBB%
+ BDDCBC?AABCFEDEDBBABAABBBA@A@AABEC>>>=<;GI>:89767?A>GMNSW\char92{}F====<===>>>@@@ABBBBB@??>>>>??@AA@@@@@?@?>>RegghghhgihfN>%
+ >>>???????@ADLFCCCDDFYaX}
+ \hbox{ijjhhhhfE=>=<;<===<<<==<QdeeecfdddfghgggY?@ABCABCKdggf`bLUbehghhiggfgggfffefhhjg\char92{}fb\char94{}cefechljidcg`YXae%
+ he[M@@BABDCABABABCBAAA?@@ABDECCCCABABBBCBBBBBECACCCCDDGHJMPQSTRVYXX[\char94{}\char94{}[`cZA>==<=<<=>>?@@BAABCBBA@@>>=?@@@AA%
+ AAA@?>?@??SeggggfffghfO>@?>>?>>????@@ABACDCDHTYV}
+ \hbox{hhiihhfdF>>====>>>>><<==Rdeffegdeefghhii`C?@ABBCCHbghfacWcadfgghghhihfghfffhjijhjjjidhhd`gijifcefdU[bjZG@@BCAACCABBBA%
+ BBBBB@>??@ACCECAA@@?@AAAA??@@ACWcba`\char95{}\char94{}]\char92{}\char92{}\char92{}[[`\char94{}]``\char95{}]]]]`\char95{}\char94{}%
+ L>>===>==>??@@@AABBBBBA@@?>>??@?AAA?A@@>@@A@SefffgghgfgfO>@?>??A@@?@@AAACCCDCDDHJN}
+ \hbox{ghjghhidE>>==<<==>?>>???Qbddffeffdfggffh\char92{}?@@BABCBFaghfgggbdcdifghhihihfihgihggiiifigijjgdhjjghgeedcaaeYC>?ABB%
+ BBAA@AABBAAAA?>>@@ABCCA@A@@???@@@>>=@BBZhigfefgbbd`bcfeefeedcbfbJ=>>=>====>>>?@@AAABCCAA@@?????@@AAA@BB@AA?@@SeghghgggghfP>%
+ ??>>?@?@@@ABBBBCCCCCDCEG}
+ \hbox{ghhfgggeC<==>=<<>=<<>>><SdeddffffdedghfeT=??ABABBFbgiiiidcfdfihhgiihigehghiiccchhebjjjkkfc\char92{}a\char92{}\char95{}%
+ d\char92{}\char92{}bhffbPACBBB@@@?@AAA@BABAAAA@ABCDECCFEBCEDCDEEFCCEFCRabbdbfdedffegighhijhhfifUD??>>>>>>=>>@@AABBBBCCAAA?@%
+ @?>@AA@AAA@@??@@?VdhhhhffhghgN?@??>?@@??@AABABCCDCCDDEF}
+ \hbox{hghfhhhdB=>=>>=<=<===>=>SdefededdddchgefR=>>@BABBEaghhhe\char94{}`gfegghhjjhifhhgijddahkkklkklikbVI`g[\char94{}ebfihe%
+ FFWUGB@>??@@AAABAA@A@@@@AACBBBCCCB@BBCCCABBBAABEMPPQUVY\char92{}\char94{}\char94{}\char95{}`acbaeefeeffffVA>==>>>>>?@@@AABB%
+ AACC@A@?????@ABAA@A@@?@?@@WgfhhffefggeP@@@?>???>?@AAABABBDDCCDDC}
+ \hbox{ihgghfgcD>>?>>=>==>=>>>>QdfedeeffedfhgdfO>@@ABCBBC\char95{}hfhg]Z\char95{}ccdfgiiikkjhfcefhfjhkkkjljkkkji`Wbifaggggca%
+ K]kbQL??>?@@A@AAAA@@@@>?>@AACBBBBA@AAABBBBAAACBDDBAAAEFOWLKJKLLORWXQUVSZ\char94{}]D@??>>=>>>@@@AABBBBCCAA@@@>?@AA@AB@@B@?@@%
+ ??VgffgfeffgfeR>?@@??@?>?@A@@AAABCDDCDDD}
+ \hbox{jghggghbD>>===>>>=<<====PdfeedffgdefghefM>@?AABBBC\char95{}ggf]\char94{}c\char95{}bacfghihkllhhfhihiiijhjljikjkljkfhj%
+ deigebg\char92{}SfllaN????@@?@@BCBAA@@?>>@@@BBCBABAABBA@BBBBABCDDBBBABBHQC@@A@CCBJLJOOQUXXC??>=>>=>?@@AABBDCBDBA@@?@???@@@A%
+ AAAAAA@@@@XehegghehgfeQ?????>??>@@BBABABBDDDCDDF}
+ \hbox{jjiiegfbB==>=>>=???>>=>?PceedfeeeccdgihfK?@@@ABBCC\char94{}ffgSRU`cgfgehjijijihgfhjighkikijjjjkijjihcW`idfebHUP\char95{}%
+ igI>?@?@AA@ABABAA@?@???ABBBBBCBBAAA@@@AA@@A@DDDCDBCBHNEB@@CBBAJUNRUUXYKA>>?>==????@AABCCCBBAABAA@@?@AABABABAA@@@@@Yeheghffh%
+ hfeT?>??>????@@ABBAABBCCCDCDE}
+ \hbox{hijggefcD=>>?>==?>>>=>>>NdfefdfffeffgiheL>@?@ABBBFaghfUEIKXdffcbgeaYbjjghhjhghkijjjkilljkljgihfidbbg\char92{}NIMYQ@@A%
+ @ABAAAABB@A@@????@BCBDACCAA?ABCAAA@ABAABHHGGFFGKPFDDDCCBAHQOSVVXSFC?>>>>>>>??@@@ABCBCAAA@@@@?@@@ABAABBA@A?@@C\char92{}fffhg%
+ fegfgdS?@@@@??@@AB@BBBBCBDCCDEEE}
+ \hbox{fiihfghcC===>>==>>=>===?NdffedfdedffffifL=>ABABBBF`iifRACBFS]Y\char94{}caUEAQefffjigiiihiijjjkkkijgbccdifcW]N>>>?@BAA%
+ BCBCABABBABBA@@?@AABBDCBABAAAACBAA@BBBABHLLLOLLMTIEGEDBA@JQSUUVUJC@??==>?>>?@?@AAABBBCCBAA@@@@@@AABAAAAA@?@@AZfghjgffgfeeQ>%
+ @?@????@ABABBBBCBBCBCEFE}
+ \hbox{iiihfgfdD>=<<=<=>=<====?NcfhffgegffggiicJ??@ABBABGahhfQBABABDF\char92{}\char94{}MB>AAGVcfiiihhgihijhjimljjaRcc\char92{}%
+ aeVBD?;<=<?@BABCCCACBAABAA@@?>?@A@CDABBAAABBBAAA@@BBBCHMPPPQNPRNMJECDBAGRVXXYTHB??>>>>>>??@AAAAABABBBBAA@@@AA@@B@A@@A@@?@?@%
+ [fehhgffgegdQ>?>@??A@@ACACBBCBCBBEDEEE}
+ \hbox{iihgfgfcD>>><;>>><=>>>==NdeghgfghhgggiidG>??@BBBCGagggTAABABBJYTC>>>=>H`gihjdeeihjjgkjkmlkjfjgd\char94{}ccX]MF@<?>>@B%
+ BB@@AAAAAA@AA@?@A@ABCCCCBAABBBACCBBCBABCFPQRTTTSSQOLIGEBAHSW[[YLE@>??>>>>>>?@AABAABBCCBBBABABA@@ABBAAAA@??@@B\char92{}ggggg%
+ gfgeggO>???@@ABA@BCBCCCCCCDEDEEF}
+ \hbox{jggfgggbC=<==<====<<>=>=MdgfffegghgffjgeH>@AA@ABBE`gffXBABAACSVSKEG?==BWfhijgihilkjjkjlmmklkkkgfhddfhfOAFOAAAAA@ABABA%
+ BAAAA????@ABBCBABABAABAABBAAAAABEORRQSSTWTSPPJHFALTZ\char94{}\char92{}WLC?>>>>?>>??@?BAAABBCDCBBAAAAAAA@AAA@AABA@@AAC\char92{}%
+ fghhhgggghgQ@??>@A@AABBBBDDDCDEFFEEDF}
+ \hbox{hgffhggcE??>><=<==>=>=>=OcgddeedfffggghdG@?A?@BBAEafggWABDJJDFHY\char95{}bbTQA>Kcgeghggjkljjlkkjjijjhkhfa\char94{}Wci%
+ ifbbPGA@AAAAAABBA@@@?@@??ABBDDCBBCBBAAABBCBABABCEJQTQSSSWVTSTOMEBMWZ\char94{}YSFDA>>>>=>?????@ABBBBBCCBCCA@ABBBAB@ABABBA@@B%
+ BC\char92{}eihgggeffggT@@?@@?@AABBCCDDCDDEDEDFEE}
+ \hbox{igggghhaE??===>=>===>>>=NcgggddggegffhhdH??@A@BBBE`fhgVADRYWUYU\char95{}ghea\char92{}PMNfhchhghjkklklkjjiiihhijhi`Zej%
+ kjkkfeNA@AABBBAAABAA@@>>?ABBDCCBBCBCBAAABCCAA@BBEFNRRSSTVVXVVSMFALXZ]VLGB>====>=>>??AABBBCBBDCCCCABBCBABBBABBBABBA@@C]dgfgg%
+ hegfieU@@@?@ABBBCCCCCDBCDDEFEFFE}
+ \hbox{iggggegeF>>=<<<=>>=>>?@>KdgggegfggfghihcH????@AABHbggg\char94{}HCYaY\char95{}eb`afd]gfggjhehhigikkkjklkiijhhiijhhcfjl%
+ kllmlb[C@?@ABAAA@AA@@?????@AACBAABBB@A@@ABBABBBBCDLOQQSUWXXWVUOFDNX[ZUICA>>>>==>????@BBABBCBBCBBBBA@AAAAABCB@BA@AA?@C]ehgeh%
+ gffggfT@ABAA@ABCCCCCCCCEEEEEEEEE}
+ \hbox{igggfgheF?=<;<=>??>==;>=IbfeeegefeegfhgbF??@AAAACScfgd\char94{}OIWc[cffcXcc[dgfhhghighijjiikjlikijiihjiigddhhgeidfdTA%
+ AABA@@@B@AAA@@??>@ACBCCCCBABBBAAABAAACCBBDILNQRSWZ[YXTPIDRY]YKDB@?>==<<<=>>?@@ABBBBCCBBCCBAA@@AACDCCBBBA@@A@C\char95{}egggg%
+ ggdfffU@@ABAAABCCCBCCDCCEEFEEEFE}
+ \hbox{ihggcbheG??=<=>?>?@?>?@=KcgfegggddehhifcJAAAAAAAAOdgef`QJO\char94{}bbcehiafZSbfggiiiihjklikjlkijllkjhjijeggfb\char92{}%
+ \char92{}TJJGBAAAA@@ABCAAA@A??@@@AACBBBAA@AA@AABAABCBCCCEHLJPSTWWZYYTOKGTYZRIBA?@>>===>>??@@@ACCBBCBCBABAAAA@@AACCBBAAAA@?@%
+ C]efefeeeegggWA@@@ABCCCCCBCCDCCEDFDEDEF}
+ \hbox{jgggffhcD==><==>@>>?>===JdfhfeehdfeihfgdF@@AAABBAJcgeebWX\char92{}`\char94{}a`efcbff\char95{}bfgfiijiijjkjkikjkklkjjg%
+ iighgjga`cZWD@?@@@?@AAAA@@A?@?>??@@ABBCDABACBACBBBBCBAABBCHMLOPRUUVWXUQKIRWVQICCA?===<==>>>>?ABAABCCBBBBBABDBBAABBBCBAABA@@%
+ @C\char92{}ehggfeeegggVAABACBBBDBCECDEDCEEEEDEFG}
+ \hbox{iccghiieE??>>>>??>>>>>=<JdegfdgdhghiificD?@ECCHGCLbfgf`X[\char92{}Z[bedbe\char95{}`gghhiiijiiikkiilkijjjkkhkigihfchd`%
+ \char95{}`PH?A@AA@@@@BBAA@?>????>>@AACABAACBBA>ABBBBAAA@ACCGJOPQRSVZWUQLGOUUQFAA?====>==???@@BBAAABABDECEDDDBAAAAABCAAAAAA@%
+ ?A\char94{}efedfeedggfXABBBABBBBCCCDECCBDEEEFFEH}
+ \hbox{ggdhigidF><===>=<=>?>>?=IcggfehgggiijfhbA?CPIHPONWcgfg`RV\char92{}XT\char94{}eca\char94{}\char95{}[Q[fhgijhhhkijhjjjj%
+ knljmhllhhgfbe\char94{}VXZ[UAA?@@AA@BAABA?A??>>>>@BABAABBCDBA@@AACBAAABBABCFJOQRSUWYWWRLJQVSOLH@@?=>==>>>??@B@AAABCDCACBBBB%
+ AB@@ABBCBABBA@@A@B\char94{}dfdefbbefefV@BDBBABBCEDDDDEDEEEDEDEFG}
+ \hbox{igfhghgdE><<==>==>??==><Jcffcghhhehiegg`C?@FVUMOZXdcefa\char94{}SW\char94{}Wccb]S\char92{}[ZZbbhikkedjhijjkjkkllhkijj%
+ khijjhihb\char95{}h\char95{}E?@?@AA@AAABBAA@?>>?@AAABB@ACBBAAABAABBA@BBCABCILLNRSTVXYWSLLPRRGE@>=?>=<<>=>=????@?ABBCCDEBCB@%
+ ABB@AABCBBCBBAA@AD\char94{}bdffcebdffeXAAABBBBBCDCCCCEEDDEDEEFGG}
+ \hbox{iiggehgdE=>??@?@@@??>=><GcfdchghhhhihigcFEIHU]ZRYXdcefca\char92{}]de\char95{}[SYZSRRFXagikgefjkklhjllkjkjmhhdhiiedW\char95{}%
+ cfgcbOA@AAAAAAA@@@?AA?>>?>??@ABCDACCDBBCBBCBBABCDCDFHJLOPSUVXWVVLJNPOJDA?=>>><<==>?@AB@BAACDDCAABBBAA@?@@@@AAABBAAAA@D\char95{}%
+ ddefccbedegXBBBBBBBBFFCDDDDEEFFFFEEFG}
+ \hbox{hgggegidG??=??>?@====>>>Fbeeefggifijhhg`BCRYZY]UX[fgfgd`]bddZNKVTOPLNWfjikhghklmlijljllkiljkiggj\char92{}\char94{}[UG%
+ LLEK??A@?@A@@ABAB@CB?>?@?>?@CBAB@ABBAC@AB@@AACEDDDDBGJLPRSVXWUSMHMPLF@A@>><<<;===>???ACBCCDA@AAACBBAAA@@AABBACBBAA@AD\char95{}%
+ eeefedcdddeWBAAABCBCCCCCEDEEFFEEEEDED}
+ \hbox{iffgdiihI>?>??>@??>>??>>EbfdhfhgfefhfgfaB=BR[SSPFQchedc\char94{}ZZ\char94{}WNQNDI[\char95{}WX]fjhljgelmklkiiikkmkljkj%
+ hieYV`\char95{}VUD?@??AAAB@ABCBAAA@@?==>?@??@@@BA?@A@@?@A?>>@ACABA@ABEMQTSTXUWSNJKIME@A@><<;<<==>?@>?@BBADDABBBBB@BBBAAAAAA%
+ BBAAAAA@AC]egeefefddefV@ACCDCBDCDDDEEDEEEEEEFEFD}
+ \hbox{ififfhifF==<?>==?@>@??=<Gbdfigffggfgfeg\char95{}B?@DJCBCANdfdfc\char94{}]VSNZYOCG\char92{}XR\char92{}X]cfhgfgjkljjjeh%
+ ijljjlikkigb]\char95{}gjhP??>@@@?AB@@A@@?@@?????@?BA@>AAABBBBCA???>?@ACCB@BBCCGPSRSVWWUMLLGNGCA@><=>=<;<>???@@@CBBCCBABAA@A%
+ ABBBBAABCCABAAAAAC\char94{}dffeddddddeX@BDDDAABCDDEEDFEEFFEEFFEC}
+ \hbox{jggdgiifF>>=@?=>>>>??>?@Iafeghhijghffgf\char94{}B@@@AABFNYffgfcXXYFEJDC?BRMN\char94{}\char95{}]\char95{}djhgfilmlhdai%
+ jklmlimlkhkh`illjQ@??A@?@@?@?AAB?@@@>=??==??>??@?@A@BBAA???@@@@@@AABBCBIMPVWYYWQIJGHADA>==<<;;=>>??@BAABABCCBBCBABCDBABCBBB%
+ BCBAA@@BAEaeeeefefeecfXAABABCDCCDEDDEEEEDFEFEEEC}
+ \hbox{jhfegiidD>>???@@A???>==?Gdffeihgghfeehg\char92{}A@@@AABW]SdgggbKLMDBBBB@BONXZWWYejihfghjldceihjljjlmlkkmbS\char95{}dj%
+ [C>>?@@@@?AA@@BA@>?@>>====@@>>>@?AA@@@??A@AABAACCBABCBEHJMSTWUVPHHEC@@A?<<<<<;<=>?>?@@BBBABAAAA@BBAACBBCCBBCCAA@AACCFadegfe%
+ deddcd[A@BBCBDDDDDDDEFFFFFEFFGFC}
+ \hbox{ihfdgghbC>>>@>>>@?>>?==JVfgfhfgfhheffegZ@@ABBBCINE\char95{}egfdSRFDBBCCBAFPZZN[Zaigh\char92{}\char94{}\char95{}Q`iihg%
+ ikgadlmljejjge[[F==>@A>?@@BA@AAABA@???@@?@A@BC??>ADBAA@?CBBACBAB@ACBABEGGMQSUVTSIC@>A?=><<<=?IB?A@>?AACBAADEDCBBDCABCAABABB%
+ BBAABCBBAE`eddfgdedddd\char92{}AABCBCBDEFEFEDDEFGFEEFFFA}
+ \hbox{igggeiicD??==>>>>???>=>O\char92{}fgghggghhfffghZ@@AABBBCCG`gfig\char92{}OCCCCBFB@?AKWMX]\char94{}hhg\char94{}[PET`ehh%
+ ke\char94{}W`jjkmifd\char95{}adX@>>>>@@CB@??@AAB???@A==>=?@APQDB@@?@@BBOSMA=?BBD@@CDADEEGMPRUURMKCB?>=;<=<;=FVQC>>?BCCC>ABB%
+ CCBBBBAAACBABBBABBBCBABCCF\char95{}ddgeegedefd\char94{}B@BBBCCDDDDDDEGEEFFGFFFFA}
+ \hbox{jhgfhhggF=>==>???@@@>?KX]fgffffhhgefgigV?AAAAABGQUdgggdNDABBCAAA?AECNRVSUfifdaQUZ\char95{}aijj\char95{}\char94{}YUW\char95{}%
+ fjiZJAELD>??@CB@AAA@AABB@?@BA@@@>=?ES]\char95{}UOQE>>CIHZ[UNCACCCCABEAACDGKMTVVSNFFD@<>?><;<=L[TG?=>?AAA@ADAACCBACBBCCBBCCA%
+ BCCDCBCBBBG\char95{}eefededccefcEABCCDDCDDDDDDEFDEEFEEEFB}
+ \hbox{ighhigifE>??==>>???>?GUX\char94{}dgeffgghgegiigV?@AAAABBOZefggbDBAABCBA@?@LPL\char92{}\char92{}Y\char95{}hhfhg\char95{}%
+ \char92{}\char94{}X[a\char94{}]X]daWSORUSCD>>A@??@@???@AAA@@A@AA?@@>>=>?G[ad\char94{}[\char92{}SD?CST[`\char94{}WSGA@@A@@A?%
+ BABCFJNTURMGB@A>?===<=?P]\char95{}MAA@?@ACCBCBBCCCCEBBDCBBCCAABCBBBBCBAG`dededfdccdedIAACDCBCCDEEEEGFEFEEEEFFB}
+ \hbox{jihggggeE>????@>????>K\char94{}V[cfeefgeghefhhgV@@@A@AABDTdfgfaDBABBBABA@@DX]]b`]gghecQAN\char95{}dYWZY\char95{}jifdZ%
+ PTZ\char92{}cQ>=>>?@@?@?@A@?AA??A>>?>>>?=>?M`e`a`ZLFNXZ\char94{}bea[E?@?@@???AA?@?GLORNJJHB>>===>?GGEX[LGGA@AAA@@@BCBBBBBAB%
+ ABABCECBCDCCABCCAHaddeefdedccedHAABCBCDDEDCDDFFFFEEFGFEB}
+ \hbox{jihhhhheE=BCB@A@@???BR\char95{}\char92{}ZdfeeffghgghgggVB@ABABAABIbfhf\char95{}CDCABBBA???@S]\char94{}e]QadgbZI;D\char94{}%
+ fibaUVgjihfceihjdG=>>?A?@A?@BC@@A@@CA?>=>@AAJEI[aZ\char92{}bcYMOQXadd[KE??>=?@@ABDILBIMOQPJKD?<>?<;@BERLRRT\char95{}UDDA@BC%
+ BAABBBDDBBCBABAACBCBECCCCBBCK\char95{}cbceeeddceedLABBBDDCCDCCCDDEFEEEEEFEG}
+ \hbox{kiihijhdHCHKHCAB@>@ERV\char94{}\char94{}\char94{}dedeffggggihfh`IFAA@@BBBHcghgaDABBBCCB@@ABR[Q[QAVegaNHA@ENhhe]a\char94{}%
+ cdfiigaci`H@>????@@?AAA@@@@@@AA?=>>>@MSX[ZY[\char95{}ddZVN]\char94{}e[IJMB?@@FG??DIO[JDILMNLRE><>>;:?IEEUVMX]UKJEBCCBDDBBAB%
+ BBDCBBBBAABCCDDBCDCBBK`cdedeedbccecQAABDDCCDDDDEEHGEFEEEEEEJ}
+ \hbox{jjjjiiigUPTTNLABBAAJWVU]aegfehggggghighePH@@AAAAAIcefgbDACCBBCAA@>?FJFWN@Qdf\char94{}=<<=:@dibWadiice`bIJVJQH?@@???@A%
+ BAB@??@???>?BVD?@BS\char92{}[[S\char92{}efedXTSS\char95{}UQUE>>@FRTBFLXWbVDEGMQX\char92{}M<<>;99:GHBDNW]KHTECABBCBBACEEDDDC%
+ CCABBBBBBBDCCCCBBI\char95{}dddeeecedcccSABCCDCCCDFDDDDEDDEEEEEEI}
+ \hbox{jjijiihg]WWSVSBLGDBIUYZY`bgfgfgehghggfeaG@?A@BA@AJdffhcFCIDAABCA@?ABB@DA=Lcg\char95{}>>=;=E]ab\char92{}bdddbfbPCC><D@%
+ ??@@@?@AA@?AAAA@@@?=JeJ?IECLYZTVdgbcaWX\char92{}bSMUJCAFONYL[YWU\char94{}YLLILS\char92{}`UB=;:::;<<GLSZTG>B?@?@ABABCDDCCCDB%
+ CBABBAABCCBDCCBBAJbcddedebcdcccRABCDECCDEEEEDDDEEFEEEFFI}
+ }}%
diff --git a/fonts/halftone/halftone.mf b/fonts/halftone/halftone.mf
new file mode 100644
index 0000000000..d93a540e5e
--- /dev/null
+++ b/fonts/halftone/halftone.mf
@@ -0,0 +1,45 @@
+% halftone font with 65 levels of gray, characters "0" (white) to "p" (black)
+
+pair p[]; % the pixels in order (first p0 becomes black, then p1, etc)
+p0=(1,1);
+p8=(2,0);
+p16=(1,0);
+p24=(0,0);
+p32=(3,-1);
+p40=(2,-1);
+p48=(1,-1);
+p56=(2,-2);
+transform r; r=identity rotatedaround ((1.5,1.5),90);
+
+for i=0 step 8 until 56:
+ p[i+2]=p[i] transformed r;
+ p[i+6]=p[i+2] transformed r;
+ p[i+5]=p[i+6] transformed r;
+ p[i+1]=p[i] shifted (4,4);
+ p[i+3]=p[i+2] shifted (4,4);
+ p[i+7]=p[i+6] shifted (4,4);
+ p[i+4]=p[i+5] shifted (4,4);
+ endfor
+
+for i=32 step 1 until 63:
+ p[i] := (xpart p[i] mod 8, ypart p[i] mod 8);
+endfor
+
+mode_setup;
+designsize:=64/pt; % that's 64 pixels
+
+def makebox(text t)= enddef; % shut off boxes
+
+picture prevchar;
+
+prevchar=nullpicture;
+for i=0 upto 64:
+ beginchar(i+ASCII"0",designsize/8,designsize/8,0);
+ currentpicture:=prevchar;
+ if i>0: fill unitsquare shifted p[i-1]; fi
+ prevchar:=currentpicture;
+ endchar;
+ endfor
+
+font_quad=designsize/8;
+end
diff --git a/fonts/halftone/halftone.tex b/fonts/halftone/halftone.tex
new file mode 100644
index 0000000000..9e247fd128
--- /dev/null
+++ b/fonts/halftone/halftone.tex
@@ -0,0 +1,264 @@
+% --- ------------------------------------------------------------------
+% --- halftone.tex
+% --- Format me with LaTeX, print me with an inch of top and left margin
+% --- ------------------------------------------------------------------
+
+\font\halftone=halftone
+
+\def\|#1|{{\tt#1}}
+\def\mmax{M_{\hbox{\scriptsize max}}}
+\def\SYSDEP#1{\marginpar{\scriptsize site\\ specific}}
+\def\TL{{\tt\TeX lase}}
+\def\TV{{\tt\TeX view}}
+\def\VAX{\leavevmode\hbox{V\kern-.12em A\kern-.1em X}}
+\def\VMS{\leavevmode\hbox{V\kern-.06em MS}}
+
+\def\mc{\small}
+\def\FORTRAN{{\mc FORTRAN}}
+
+\nofiles
+\documentstyle[11pt]{article}
+\advance\textheight by 21mm
+
+\title{Halftone Output From \TeX\footnote{Taken from the {\sl \VAX/\VMS\ \TeX\
+ User's Guide}}}
+\author{Dr. Adrian F. Clark\\
+ Department of Electronic Systems Engineering\\
+ University of Essex}
+
+\begin{document}
+\maketitle
+
+\section{Introduction}
+
+This note describes how image data can be converted to a form suitable
+for \TeX\ and then typeset in documents. Pictures are prepared for \TeX\
+in a somewhat different way to normal text---the hard work is done outside
+the \TeX\ input file; incorporating the image into the \TeX\ document is
+then quite straightforward.
+
+The image data must be converted from the binary representation used in Image
+Processing and Pattern Recognition work to a series of characters which \TeX\
+can map into pseudo grey-levels via a special font. A user-callable \FORTRAN\
+\|SUBROUTINE| called \|TEXPIC| is available for this purpose. \|TEXPIC|
+converts a picture held in memory to a text file containing \TeX\ input. (You
+can look at this file if you like, but it is unlikely to make much sense.)
+There are a few additional routines which can be used with \|TEXPIC| to produce
+particular effects: for example, the picture may be plotted as a positive or
+negative image.
+
+The special font for setting pictures is
+defined to have some 65~grey levels. This does not necessarily imply that all
+the grey levels are distinguishable, nor even that they are strictly monotonic
+on laser printers. However, the quality of the output is certainly adequate for
+run-of-the-mill technical reports.
+
+An example of an image typeset with \|TEXPIC| and \TeX\ is shown in
+Figure~1. This is the ``girl'' picture from the image database
+distributed by the Signal and Image Processing Institute of the University of
+Southern California, which is widely used to demonstrate image processing
+techniques. This representation is some $64 \times 64$~pixels.
+
+\begin{figure}
+ \centering
+ \fbox{\input picture\relax}
+ \caption{Example of an Image Typeset using \|TEXPIC| and \TeX}
+\end{figure}
+
+\section{The \|TEXPIC| Routine}
+
+To generate a file containing the image data in a form suitable for input to
+\TeX, you simply invoke \|TEXPIC| from a program. \|TEXPIC| is called as
+follows:
+
+\begin{verbatim}
+ CALL TEXPIC( ARRAY, M, N, FILE )
+\end{verbatim}
+
+\noindent where \|ARRAY| is a \|M| $\times$ \|N| \|REAL| array containing the
+picture to be plotted and \|FILE| is a quoted string or \|CHARACTER| variable
+containing the name of the file to receive the data. If you omit a filetype
+(``extension'') from \|FILE|, \|TEXPIC| will use \|.TEX|. You can call
+\|TEXPIC| as many times as you want from a program; a separate output file will
+be generated for each picture.
+
+Due to problems with the controlling micro-processor in the standard \|LN03|
+printer, pictures with $\|N| > \approx 64$ will come out with white bands
+across them, rendering them effectively useless. However, this problem has been
+overcome on the \|LN03+| device, which can print images up to a full \|A4|
+page in size.
+
+
+\section{Associated Routines}
+
+\|TEXPIC| normally maximises the contrast of pictures by determining the range
+of grey levels in the image and scaling the output to make use of them. This
+behaviour can be overridden by invoking the routine \|ZRANGE| before \|TEXPIC|.
+\|ZRANGE| requires two \|REAL| arguments, the minimum and maximum grey level
+values to be output:
+
+\begin{verbatim}
+ CALL ZRANGE( ZMIN, ZMAX )
+ CALL TEXPIC( ARRAY, M, N, FILE )
+\end{verbatim}
+
+\noindent where \|ZMIN| $\le$ \|ZMAX|.
+\|TEXPIC| then uses the supplied extrema, rather than values
+determined from the image, for scaling the data. Values which lie {\em
+outside\/} these extrema are clipped. Hence, if \|ZRANGE| is used with values
+which are outside the values of the pixels in \|ARRAY|, the contrast of the
+data generated by \|TEXPIC| is {\em reduced.\/} The converse is also true. The
+extrema set up by \|ZRANGE| remain in effect until another call is made to
+\|ZRANGE|, superseding the previous limits, or \|ZAUTO| is invoked, which
+restores the default behaviour.
+
+\|TEXPIC| normally plots positive pictures---i.e.,\ pixels which contain
+low values come out darker than pixels with high values. It can also produce
+negatives, however; you do this by invoking the routine \|DONEG| before
+\|TEXPIC|. Normal, positive picture-plotting is restored by calling \|DOPOS|.
+As with \|ZRANGE| and \|ZAUTO|, \|DOPOS| and \|DONEG| remain in effect until
+explicitly cancelled.
+You can, of course, use the routines in conjunction to produce any
+required effect.
+
+There is a limit, $\mmax$, to the number of pixels that \|TEXPIC| can fit
+across a page of output. For
+pictures with $\|M| \le \mmax$, the data are written out exactly as supplied.
+However, when pictures have $\|M| > \mmax$, the image is interpolated so
+that the data written out form a $\mmax$-pixel image.
+The same interpolation factor is used in both dimensions so that the aspect
+ratio of the picture remains correct. The interpolation technique used is
+a context-sensitive three-point bilinear method due to {\sc
+Smith}.\footnote{There is also a version which uses standard four-point
+bilinear interpolation.} This produces marginally better results in the
+vicinity of edges in the picture.
+
+The default value of $\mmax$ is~256. You can alter this (for example, when
+producing pictures for a document with the text set in narrow columns) by
+invoking \|TEXMAX| before \|TEXPIC|, as follows:
+
+\begin{verbatim}
+ CALL TEXMAX( MV )
+\end{verbatim}
+
+\noindent This sets $\mmax$ to \|MV|. Obviously, $\|MV| \ge 2$.
+
+\|TEXPIC| and the support routines are all to be found in the algorithm
+library, \verb|ESE$LIB:ALG|. \SYSDEP{Location of \\TEXPIC| and utility.}
+There is also a stand-alone program which you can use for images stored in the
+standard formats on disc. This program is \verb"ESE$PROGRAMS:V159".
+
+
+\section{Inserting the Picture into Your \TeX\ Document}
+
+This is quite easy, although there are a few steps in the process.
+The procedure you follow depends on which macro package you are using with
+\TeX. Most people use ``plain \TeX,'' the default macro package, but \LaTeX\
+is also in widespread use. If you use a customised \TeX\ but don't know exactly
+what is different about it, try the plain \TeX\ procedure.
+
+Whichever version of \TeX\ you use, there are a few things you should know.
+\TeX\ must hold the whole image in memory, so the maximum image size is
+obviously limited to \TeX's memory capacity. Since \TeX\ was designed for
+typesetting rather than image hard-copy, its memory capacity isn't
+large enough to hold dozens of pictures, although it should be adequate
+for reasonable use.
+
+\|TEXPIC| tells \TeX\ to use a special font, a {\em halftone\/} font, for
+setting the picture. You have to tell \TeX\ to load this font. To do this,
+you type the following command at the top of your document:
+
+\begin{verbatim}
+ \font\halftone=halftone
+\end{verbatim}
+
+\noindent This works with both plain \TeX\ and \LaTeX.
+
+We shall now consider the procedure for telling \TeX\ to typeset your picture.
+In the examples that follow, it is assumed that the picture produced by
+\|TEXPIC| is in the file \|PICTURE.TEX|.
+
+\subsection{Procedure for Use with Plain \TeX}
+The first thing you must do is to create an input file for \TeX\ which contains
+the document to be typeset. At the point where you want the picture to
+appear, you type:
+
+\begin{verbatim}
+ \centerline{\input picture}
+\end{verbatim}
+
+\noindent For \TeX{}perts, the image is set as a single \verb|\hbox|.
+
+The picture can be put into a ``floating'' insert, which will cause the
+picture to be held in \TeX's memory until there is enough free space on
+the page to hold it. For example, to set the picture in a \verb"\midinsert",
+the relevant \TeX\ input would be:
+
+\begin{verbatim}
+ \midinsert
+ \centerline{\input picture}
+ \endinsert
+\end{verbatim}
+
+\noindent This command sequence should be typed between paragraphs,
+when \TeX\ is in `vertical mode.' Typing \verb"\goodbreak" immediately
+before the \verb"\midinsert" may help \TeX's page-breaking mechanism. (In
+practise, you'll probably want to add a title to the picture, too.)
+
+There is one other thing you might want to do and that is to draw a border
+around the picture. You would do this by defining a \TeX\ macro, \|border|,
+as follows:
+
+\begin{verbatim}
+ \def\border#1{\vbox{\hrule\hbox{\vrule\kern3pt
+ \vbox{\kern3pt#1\kern3pt}\kern3pt\vrule}\hrule}}
+\end{verbatim}
+
+\noindent You would then set the picture with
+
+\begin{verbatim}
+ \centerline{\border{\input picture}}
+\end{verbatim}
+
+\noindent instead of simply \verb"\centerline{\input picture}".
+
+\subsection{Procedure for Use with \LaTeX}
+The most sensible way to plot pictures with \LaTeX\ is in the \|figure|
+environment ({\em not\/} the \|picture| environment). This generates
+a ``floating'' figure, which usually surfaces at the top of the following
+page of output. The \verb|\centering| declaration causes the picture to
+be centred in the page.
+
+\begin{verbatim}
+ \begin{figure}
+ \centering
+ \mbox{\input picture\relax}
+ \caption{Figure Title}
+ \end{figure}
+\end{verbatim}
+
+\noindent The \verb|\relax| following the filename in the \verb|\mbox| command
+is required for \LaTeX\ to know where the filename ends. To draw a border
+around your picture, you simply replace the \verb|\mbox| command with
+\verb|\fbox|.
+
+\section{Producing the Output}
+
+Having inserted the appropriate commands into your document, you run \TeX\ in
+the normal way. If it exits with a ``memory capacity exceeded'' error message,
+you've either tried to set images which are too big or you're holding too
+many in memory at once. The only solution to this problem is to re-format your
+document. \LaTeX\ users may be able to cure the problem by strategically
+inserting \verb"\clearpage" commands into the manuscript.
+
+You run \TV\ or \TL\ on the \TeX\ output file as normal, although the \TV\
+display bears little relationship to the grey levels produced by \TL. Note that
+you must use \TL\ version~10 to send output to the \|LN03|, since earlier
+versions cannot read the halftone font file. (When you invoke \TL\, it outputs
+a short introductory message which includes its version number.)
+
+The current version of \TeX\ 2.0 has a larger-than-usual memory capacity,
+\SYSDEP{Size of \TeX's memory.}
+large enough for four $256 \times 256$ images to be held in memory.
+
+\end{document}
diff --git a/fonts/halftone/mandy.tex b/fonts/halftone/mandy.tex
new file mode 100644
index 0000000000..44979c90e8
--- /dev/null
+++ b/fonts/halftone/mandy.tex
@@ -0,0 +1,574 @@
+ \hbox{\vbox{\halftone\offinterlineskip % machine-generated by TEXPIC.
+ \hbox{GZW]QMEVY\char95{}Q\char94{}WQZI\char92{}T\char94{}ROGLIA@JKPUSJ\char92{}dXKXbUZQKIKPIVQSMNKOOZWMVOc\char95{}bc\char92{}%
+ FSfWSNHL\char94{}SaSVRFOKIWL][MEPacQRI\char92{}PQ[L]N\char94{}\char94{}UXT\char92{}IL[]PHPQSJbU]HYCSNIZIQXV\char92{}U`\char95{}%
+ MVNL[]TNTYRP[O`UAPIEQI\char94{}TDORTUUORY]EC<QJI=NPT;>RPDKDQINGH>DAF\char94{}\char95{}I\char94{}P}
+ \hbox{\char92{}ZTZ`a\char92{}Ua\char92{}ATMVHZVKJ\char95{}X[VFSRQGK[RQGV\char94{}ZG]ZGG[\char95{}KPBP`SNBUWWRUUUTHS`WWX\char92{}%
+ RY[R]XKXYVPPM[UZXYQXWQQa`]UYZW\char94{}NFW[[[X[Y\char95{}UKVLQXY[UPaV\char94{}VVZPWLSU][RKYSc]\char94{}\char94{}]YRa]SLNZPS%
+ \char95{}OJSWZKL[MUZGLOXRNOHITONYHTJSGGIFPCMORIKM[@HZ[WLYUU}
+ \hbox{XRT]WScUc\char94{}OH\char92{}DRHY@FFY]Q<FFLWJYKGHQ\char94{}DHWKDSCQGNCXBIQLXVO\char95{}Qa\char95{}a]ZR[KC\char95{}I]N%
+ [ONSPQaZaSW][YYe\char94{}UZ\char95{}c\char94{}]XZYScaZP\char94{}]XTXKQ[SVYWTaZ\char92{}OSP[[P]\char95{}ZW[`Wb\char94{}W]X[Y%
+ [[aRc[NXVFGIEVMQMc\char95{}PQUSG\char94{}OMN@IIBLHMCPL?Y@WSUHGMP]BJQUZU[MBFVURWS}
+ \hbox{bPM\char92{}GWYRWNOHWZPOQWZDDRKT?VOZ[WJPVMJMTCRY\char94{}MP[FNWLUQCA\char92{}\char92{}[W\char94{}VX\char95{}[DVILR]C]%
+ XIQ]WRYV`b\char95{}]VX[bOY[STS\char92{}\char94{}\char94{}\char95{}b`]TT`QVdZ]][WXVWaaTV``ZUSJZ`\char94{}]\char94{}VT[X\char95{}%
+ aY`]`\char92{}]V\char95{}TPWZUJTUUTZT\char92{}ULNLSZHEOJZVHRQFGHQGJ<INRXDI[RJGPSIWIHFIASI[TR}
+ \hbox{b\char95{}\char92{}X?GSXNNLJGOQ]MX>EWMG@CaTBRYPGMU]OaXV`KSXTRLETWOSKTWKU\char95{}YUG\char94{}\char92{}WSPIb`]ZRTV[\char92{}%
+ MS][V\char95{}a\char92{}\char94{}W\char95{}\char92{}X\char94{}]W`\char92{}ba\char92{}abaWb\char95{}X\char94{}\char94{}\char95{}%
+ \char92{}Q`V[\char94{}]\char95{}a[\char95{}a\char95{}\char92{}[TS\char92{}XL\char92{}[\char94{}\char95{}``\char95{}LU\char92{}%
+ [XOTPQWTMOMRNFaIHVT\char95{}MK@VMVZ\char92{}KSNXVMVHZL@RCRFAHHFMDHGPLHID?MSJ\char94{}U[[}
+ \hbox{cOKMQ[DUIFKBKL9XWTLCOQCNXUFICCOGU\char92{}[XHFOJb\char94{}WWGOUP\char92{}\char95{}YU[]N\char94{}NWMVQ[RYbZU]YUMQXVWP\char92{}%
+ bg]\char94{}\char92{}X[V]d```bc\char94{}\char95{}a]]\char95{}\char95{}ae`]\char92{}`XS[aYb\char94{}VV[V`XT\char92{}\char92{}%
+ ]aX][XcXKY\char92{}VU\char95{}S]\char94{}WVYLHUG[LWOHVP\char94{}ZYSJLSYSOURGH?SPJ[FPLXQUPFGF@IWODSZW\char94{}ZZINNRMF\char92{}%
+ N}
+ \hbox{TRWcU\char95{}V]C\char92{}KGKaGRTPIFNVHHP\char92{}XVERGKPUYFKSXLQOP`VR\char92{}PKUXVZXPNSST[]aaW\char95{}]WeddY\char95{}%
+ Y`X\char94{}\char95{}`aa`US\char92{}\char95{}ZZ\char95{}``\char92{}]cb`\char92{}]aade\char95{}b`]]]\char92{}[YYY]QUXYUMPY\char94{}%
+ QWWW\char92{}IRO[\char95{}UR\char94{}QSSSTTFIYNOVGOSWUP\char92{}XUQVXRYaPEJOJZQCNP<GTLNBD?SMDAI@JESNJAF@NWGRVT}
+ \hbox{\char95{}\char92{}VZW\char92{}WS`XXZPFC=CWOEL@XCJZZD<FbZLIYB=DZO\char92{}WMGOHaZKKMXYNUNYUZV\char95{}VS`UX\char94{}\char95{}%
+ [\char95{}NSY\char95{}[]`[WQM\char94{}\char92{}]b]W\char92{}d\char95{}\char94{}OXabab]f\char94{}d\char95{}]`Z]cRXZSQOKH[WNT%
+ WWUK\char92{}OX\char92{}\char92{}UZOIKSBMKVU?OORK\char95{}SSPQQSVTX]aVa[R\char95{}`OS\char92{}YL?TXLGKBL\char94{}GJQaRRKDFW%
+ EGFNWPCFVVNIFF}
+ \hbox{F\char94{}Z\char94{}NU]VUJQLJMEJDSTHITNQJbNKMKIWT\char92{}S@S`QUP[T\char94{}EP]\char92{}KZUTU][[Y\char95{}\char94{}YR%
+ VUQ\char94{}YY[]W\char94{}`\char92{}T[WTVZMXQY]\char95{}\char94{}TZa\char95{}\char94{}YX\char94{}YacYYSZ\char95{}\char94{}Y%
+ U[OSWNORPJPLGY\char94{}X`Yc[XKPTIRNMNVNMNV[QXMUWYY[YW\char92{}[RWQVLY\char92{}VSXOPWWX[QTBBJVJGMQTMQXSXTPFFO\char92{}YOVVSW%
+ U]W[Q}
+ \hbox{[\char94{}`\char94{}URY?LGAD@ATK@NOP;AEJKCTDQPOJMEFFa\char94{}U\char92{}L\char94{}UWY\char94{}\char94{}VP\char94{}Z\char92{}%
+ b\char92{}S\char92{}QMTLPOX\char92{}TZN`aab]\char94{}bZWTZJ[R\char95{}KZb]]VWZ\char92{}a[SS`a\char92{}PU`VVUTUIULNECPVJO[RN%
+ K[\char92{}SSY\char92{}[ORORQIWVUVNKDSZWYYYZQTP\char92{}\char92{}ZWS`\char94{}\char92{}OY]K]\char92{}\char94{}P]]KGV\char92{}%
+ VQ>IQJRELKZOBOVKIEUNH?QTTVDR}
+ \hbox{MT[MLX`\char94{}MHXNPiOGTJ>FQEKQKQJFFFCKROMMMZUKRZS`[`XRYU[OS\char92{}UTVPL]VQXW[RQ\char94{}]SM]ZZYX\char92{}S\char92{}%
+ YVSLPWVTLLMOMSRX`\char94{}aNLTROIXPJUEQMQVV[a\char95{}`\char92{}bdc[YVW\char94{}TXTZU]Z\char95{}XZ\char94{}\char94{}\char95{}%
+ TX`[X`a\char95{}]\char92{}[XZ[YWXKUa\char94{}INOM]\char95{}MRa\char94{}]WMDPJDDJINBHN@DEJG<@KOORXR[W}
+ \hbox{N\char92{}\char92{}PQWBDVRX[T[\char92{}FLKWXPFRMZMYMRI[WVR][X[L\char94{}FNXXYOQJ]\char94{}bQ]PZQYY\char94{}ZX]\char92{}%
+ caW\char92{}`]XSWba\char94{}a\char92{}a\char92{}]\char92{}RO[UURHKQBSD\char92{}[\char95{}[XRM\char92{}W]STLPXMPOIV[[\char94{}%
+ X\char92{}aaa]\char94{}[\char92{}[X```Z]\char95{}[b\char95{}YZ\char95{}\char94{}Vb`a\char94{}\char94{}]ZY]]]\char92{}XZ\char94{}%
+ \char95{}\char92{}]Z\char95{}Y]SYPL[]YP@MSXV[SFDBFGKRNLWKFMLLSR]VWXZ}
+ \hbox{[YaRXPZR\char92{}NIUNSaXODHIIVcWYYIHOVGUVVOX`TY\char95{}\char95{}ZTS]QX``\char92{}X][b`\char94{}NY\char92{}S`[WXa\char95{}%
+ `\char95{}`aX]\char94{}cZ\char95{}e\char95{}bZaXWVj\char95{}NZYNVOEX\char94{}T`]UVRUSSHMV\char95{}NQY`[[\char94{}\char94{}]%
+ `c\char94{}\char95{}\char95{}\char95{}X]]UX\char92{}VT`\char95{}`ca`[`\char94{}]d]\char92{}S\char95{}Z\char94{}]WdcUaY\char94{}%
+ \char95{}Zc\char95{}\char92{}aQNXZaZWVQPY\char92{}J]HSKFAAEDEES\char92{}EDBCDFLQUUXZ}
+ \hbox{]XG[UWROZXCUJGWJFAYCLBFYLCHMMTVPX]ababY\char94{}RV[``]`X[\char92{}\char95{}\char94{}\char92{}`\char95{}[\char95{}\char95{}%
+ \char95{}ZadaXaZZVXV\char92{}]`XZdb\char94{}b`\char94{}`a]XUXPW\char92{}ZXWGRUS\char92{}Z\char92{}`]\char94{}\char95{}XRSQY%
+ VYYa\char94{}\char94{}\char92{}`a[]\char95{}\char92{}Z\char92{}]]\char94{}\char94{}\char94{}a\char94{}\char92{}[\char94{}\char95{}%
+ \char92{}]\char92{}Z`[\char95{}\char94{}\char92{}`aa\char94{}\char95{}\char95{}aZ`a``TVSZ\char94{}[XRJUa\char94{}TNMGTGMMCC%
+ DE?KLFGKTONMWcNEIVWYPL}
+ \hbox{]TRNaPDGJ[H?]VKR@NNEATRXUV>ARUQ\char94{}e]acUN[YN]Z[Ob\char92{}\char95{}]cZ[\char95{}]b`[\char94{}\char95{}ca```dadfa%
+ \char94{}[Z\char95{}daa\char92{}\char95{}aba\char92{}a\char92{}]YSZ`\char92{}O[`XP]Xa\char95{}b`YM\char94{}\char95{}W][Z[V`%
+ \char94{}Z]]ab[Z\char95{}X\char94{}]\char92{}\char95{}`bfdc[]]Z\char94{}\char95{}[\char94{}\char94{}ac`a[`cRa\char94{}]Z]\char94{}%
+ \char94{}\char94{}ace\char95{}MSc``OTY]IOCNNREQ@FWHURUWPIEP\char92{}[YCJGHNMQQ}
+ \hbox{]\char94{}ZXWTULHGZGIMQYSCMQOJULXGKS\char92{}\char92{}XQKLXL`cb]V\char92{}Y\char94{}\char92{}\char92{}][\char95{}`[\char95{}%
+ b\char94{}X`\char94{}\char94{}````\char94{}]]`\char95{}``\char92{}]Z\char94{}\char92{}]]]`\char94{}\char95{}\char95{}ad\char94{}%
+ \char95{}\char94{}XNY`ZYa\char94{}a\char94{}\char94{}TccaYTWP[]\char94{}``\char94{}b\char95{}\char95{}``\char92{}\char94{}Z%
+ \char94{}[a\char92{}\char94{}\char92{}]\char94{}eb`aaaa\char94{}\char94{}\char95{}\char92{}`\char95{}\char92{}\char94{}`]\char94{}%
+ ``\char94{}XXe`\char92{}]\char92{}b`\char95{}\char94{}\char95{}\char95{}\char92{}b\char92{}\char92{}\char92{}Y\char95{}ZVWQ%
+ OJIJUHULQJCDC<FVVEWNPCY\char92{}ZZON}
+ \hbox{\char94{}DEM\char92{}WbQ?TJ\char92{}LFQG`K@LA>ZUBKGJ\char92{}LOIZ\char95{}S\char94{}K`aZSf[X\char94{}W``ce]c`cbd`db[\char95{}%
+ e\char94{}\char92{}Z\char94{}d\char92{}c\char95{}\char92{}\char94{}`\char94{}\char94{}\char94{}\char94{}bb\char95{}Z\char92{}%
+ [`bbX\char94{}\char94{}[ZYa`\char95{}b\char92{}b\char94{}`cVaaa\char92{}b[[`bW\char95{}Y\char94{}`\char92{}`\char94{}`b`X`f%
+ cbed\char95{}acefbbf\char95{}\char95{}Z]\char94{}bYa]\char95{}ZY\char94{}]\char95{}UU[\char94{}\char94{}UY\char94{}]YRNLLLG%
+ YNNHOLI>BVFJTGIPEJ?CU\char92{}NBRTYHRRGV}
+ \hbox{bJSDNL\char95{}KJZZYUOGHCJ@P\char92{}PIJDMV\char92{}UPYSOY\char95{}R\char94{}Xcb\char95{}c\char95{}\char95{}c``b]c\char94{}%
+ ]b[aa\char95{}\char94{}bdabc\char94{}\char94{}abc\char95{}\char95{}`\char95{}\char95{}\char95{}[\char92{}``a\char94{}a\char94{}%
+ ba\char92{}SY\char95{}\char94{}\char95{}WT\char92{}[\char95{}]]\char95{}`bb\char94{}``]\char95{}\char95{}]Z]ab`\char95{}\char94{}%
+ aafbb\char92{}``ca[V\char92{}TNHKISMOV\char94{}efcdeaX\char95{}Y``\char94{}b`a\char95{}`a\char95{}[]\char95{}b`[\char92{}\char92{}%
+ \char94{}`UUMPVWUWSQMGCTGEH@>EOJGOTMJRHNRbZ}
+ \hbox{\char92{}Q[V\char92{}VbRFBVIR\char94{}FO@>JCD[CDHEKYPP\char95{}]\char95{}\char95{}cb\char94{}IK`Q`aZXV\char92{}Wbb\char94{}%
+ Z``\char95{}dba`bdbd`\char95{}\char95{}cfedba`\char92{}bb\char95{}`a`b\char95{}\char95{}\char95{}b\char94{}\char94{}a\char94{}%
+ \char95{}ca`\char94{}\char92{}V]\char95{}baacdacd`YZbbcfe\char95{}aLWRYbcbWNLGRF<987;BF?KVcd`caabb\char92{}\char92{}W\char95{}%
+ a\char94{}\char95{}[\char94{}\char95{}ZY[\char95{}ZZXSUXUSSUXKKPJ@KG?JXVELSEHZTXTRLIVUUL\char94{}}
+ \hbox{eVVQZXNSSFKNMIEHPTCNK\char94{}\char94{}KEFKQNSMDOLWdVPadc[Sac\char92{}cc\char94{}]]]Y\char94{}][bb\char95{}affc`deceb%
+ ddedeb\char95{}degcdcbba`b`acba\char94{}\char94{}`[UPS]XYX\char92{}]\char94{}\char94{}``cfc]KVQ]U[\char95{}bg[SGBB?<FCF?;?@%
+ @EVNgfcb\char95{}UQ]\char95{}bca\char92{}\char92{}``\char94{}a[[X\char94{}[TXLMQPNEXYQSQPEFOTSJGFALD>=JZZ`\char92{}NCV[[}
+ \hbox{YZXNZWOWUCCH[GSNFRSKCIJQGTBILGHJSJU\char95{}\char95{}[Wcd`][]bcaca`ac\char95{}fcagfe`[SBGD79;AAGJAMRbbc\char92{}aggdf%
+ acbaeda`\char92{}`b\char94{}\char94{}\char94{}]GT][[]`b`aaYFP[PVQ\char95{}cegWJB<>>IY`cOA;?DBKNfce`VPS[[\char95{}\char94{}\char94{}%
+ ]]b\char95{}\char92{}`XW\char94{}SXQ]\char95{}\char95{}L@FJQXQGEEV[TRPBBBFOKOCCM\char94{}VRB]UTM}
+ \hbox{``EEINLOJTFEcWAESU\char94{}ZUMLIAIJBNM`TKM]FR\char92{}\char92{}T`]``LgaZVX\char94{}``\char94{}ee\char94{}cfhXRDBA;>HT%
+ PP@=IBDYgeZTSbagefba\char95{}\char95{}d\char95{}\char95{}\char92{}d`\char95{}\char94{}eb\char95{}[YZ`aag\char95{}QFPIYSX]ae%
+ \char95{}bVI@=A>MK@LaC:@EGFO[cVI[VOQXa\char95{}XX\char92{}`X[]@WXPXSSB>YQWWPYMIT[WDDFFH][QGHLWSDIMHGRLHF}
+ \hbox{PU[LLLMAL:LQMENC>FZRCD@DAPTNS[LMS]a`\char95{}\char95{}f[\char92{}Cda]``\char95{}d\char95{}\char92{}\char94{}\char94{}%
+ ]ZadffcWE=B<;FfcUaQ?D@BJ\char95{}da\char92{}U\char95{}YQeefedcaae`a`\char94{}\char92{}]ba]]``baYTYPLPOYQ\char94{}`\char95{}%
+ eePDA??<H\char92{}cedE=?>>HR[\char95{}b]RSMMRW\char95{}\char92{}[YY\char95{}\char94{}[]NPXJ]WWKHIUOSJGAEISNFECYZYRGJJBEELL[%
+ S\char95{}ZHD}
+ \hbox{LVMCJUU[ZFSRDJHR5;ALBSAQII=@AIOH\char94{}NQOQ\char92{}bb\char95{}\char92{}[VaY\char95{}gcSf`\char95{}]]eehciUL@C;?Tf`%
+ IgOCG==H[fbc[cQDHbfcfc\char94{}\char92{}Y\char95{}`Y\char92{}bddh]`cea[UWCMVLZedediccUFA@@=:>FIC=8;A@NLcbbMXMEEKWSYY[UW[\char92{}%
+ RM[S\char92{}XPFQOF?AAWHTPQPKRPPNODFKDFIQUTSJVJZa[}
+ \hbox{\char92{}V]LD?W[K\char92{}XKGGHELQDKGIGCGBPYEMNRUUUW\char92{}\char94{}QNVS]`a[\char95{}]`]\char95{}Y]ZZVLSidWE>A;5<Vc%
+ bVEDC>?J[hffdV[NN\char92{}\char94{}ggbb\char95{}`bc\char95{}`b]\char92{}Z\char94{}caeb\char94{}ROV\char92{}LL\char92{}`fefh%
+ fgdWEA;9:57979>EDCURhhc\char92{}PNDMSUS][\char92{}\char94{}W\char92{}][OPJVYT\char94{}VIFKWMFJHBGVUJSWUSYYUHRACHNSWP]XY\char95{}%
+ }
+ \hbox{NH\char95{}KEMH\char92{}QAK\char95{}\char95{}XUXMLLK?ADLVCKB?ELFS]TX]XI\char92{}P`\char95{}Z\char92{}``a`UUSVTVfaddcP%
+ L@<>96;@>>;=B?BPjgege`YNXQ\char94{}cdga`aa`ZZT\char95{}`\char92{}a\char94{}`a\char95{}VWU\char94{}QEN\char95{}ajfeefgeVNA?:%
+ 9:9;?C><DLPeec]\char94{}TSHKERTRYX[FXMWG[QQNRIPNENSRa[WA@DEFNRCCUVMIKHRYUU[NY]ZJ}
+ \hbox{W\char92{}UG\char94{}KPXU\char94{}UDJPMEDICCBKQKE?JJDQEOBHMUDUUSV\char92{}[\char95{}UZ`\char92{}`OSKSSPccbfeY]C:=:88;%
+ 67;D?CD\char92{}jgidhf\char92{}OLSW\char95{}fafahca\char95{}cZ\char95{}adabdb\char95{}UW]ZOQ\char95{}\char95{}Rcddddgfc[IA?%
+ ::>?D?=COU\char94{}fddWSMFUKPRPQVZZSWYUUJQSVZPDCOUUVQQROEFJDNTAHMJKID[RMHOVUXQWT}
+ \hbox{LIV`FHH\char95{}MHOWFFOZ\char95{}\char94{}NCFAGQOCIBAKRYKKLIUBJJ[PLXW\char95{}XXYTELKOMcb\char95{}fhdTTC>;=<=?>==?INf%
+ ccgcHheUPYZ`\char95{}`gdeac\char95{}]`c[T]`\char94{}a\char92{}KXUMN]adXe\char92{};cacgcdZSGD><<?>HVWbfcb]`UFFJKQXX\char94{}%
+ VS\char94{}][HXXY\char95{}OWRPVZ[[RNTSQLDLTAAHKXNC?IMYX[GBDKCPZU}
+ \hbox{BKSXPMMEYKKEGXMUPJ>GHIN@BOJUXNWKGNIWVFTTZU\char92{}\char95{}\char95{}U`ZXYSMKN\char94{}[bcgggfbXI<::<;:=<CQff`fb`\char94{}%
+ Caa\char92{}Vd\char95{}a\char95{}eddb]d][\char95{}RX`W\char94{}aXWCTLZ\char95{}eUUTTTabeeecfa\char92{}YMIJLX]afieT[aIJQKGT\char92{}%
+ SMS`V\char92{}RQVSJ]HSMUPL@CBGDCMOJVTICBEANITKDM[OHNPKMVIER}
+ \hbox{O\char92{}CXVZ]IS\char92{}WAE@?UJOLKOLEOWJ<COMFEZTSYQPOFLESVQ`Y\char92{}`TTLXW\char95{}VbXggghi`bSIB==DFR[jieddc``LV\char94{}%
+ S\char95{}Z\char92{}Z`d\char95{}facaQDU\char92{}\char95{}ae[PXMTXXTe\char95{}c7?W\char94{}\char95{}ddebcdhhggfde`gig`J[`UVH%
+ FGUR[U\char94{}VM[SPYHWb\char92{}VJHMRHFMP[ZJMRYRF?BRJNQLOSOT?@]UQWSX]`]}
+ \hbox{>JW[IT9JIPP<CCLRVPKDGKULRHWG>QDDQM[A\char95{}ODNW]CXNZZQUYVJS[PZ\char94{}\char94{}\char95{}ehedece`\char94{}[bVeghhee%
+ cjfcTTMbYS\char92{}YVafaSXa\char95{}c\char95{}dX[TBNY\char92{}VWSZXYXaZL[e`dhedfheghjihRTjhQBX[JTXSSNUV\char92{}WW\char94{}%
+ U[VUVR\char94{}VDKKM[WVJULEKOSGNCJRLJLHABHIVDDJS\char94{}\char95{}VSUSJY}
+ \hbox{GT]ZHUTVKNKRGEFO@@:CAEPEFKMGT[USIDPYJOYYWQTMV[TVS\char92{}PONPPLUW\char94{}Z[feehgdhdfddhihikhOKQMO`ZXSQRX\char94{}a`%
+ ecX]abb[WYTTCYVM]bhebb\char92{}RR]\char95{}W\char94{}eedegffghf`[XXaaQLWLPCQHUYU[cW\char92{}NX]R`TMS`[UFDVUTLHBBHIFEJOKAEMB%
+ BRTPNTUUGGKNIPPK}
+ \hbox{PQ\char94{}VI\char92{}`\char92{}KD[WRLNWUSHVI=ISIWMKNFAEN\char92{}cMR\char95{}MAEXDVRP\char95{}SgONO`]cKF]Y`X[Xfhijfh%
+ ggiekiifidbaRR\char95{}\char94{}SXeZPeiYDH[YNV\char95{}IWPMQfTbaNed`\char92{}JIWJRUn[TV[hXMX\char94{}MEL`d[PPRKRBDHGUQe\char94{}%
+ dOeQ\char95{}UW\char95{}VLaP\char94{}\char94{}LGBNONPQOA@DJKTGQXTDNZTNNMKLEVSSKUV\char94{}K}
+ \hbox{HV\char92{}\char92{}[JEGVUIRV@BEDJSBIAEAM?GGM@??KDGIRSJRIFP]YMN[aVR]RZUXSSY\char92{}Zb\char95{}W[\char95{}c`afiff``c\char92{}%
+ WTLOEIA?FPe\char92{}\char94{}e\char95{}TPY\char92{}VUQNWRMXWJLNdbega]]OSNZWQ\char95{}a]R\char94{}T\char92{}cbgfhcTIDNSUMWM\char95{}%
+ V\char92{}`ZVPWUILY[Y]VJGZYTJEFEKPUQIFAHMLRGUKKCCIJJOWRKJWKFMVTQ}
+ \hbox{[Z\char92{}UIKNSH@IPLH<?TXVKCKTEITRKLXEDNQKWVUNV\char95{}QOUNRGRYXWXSc\char92{}UO]]]TKchf\char95{}SUKVONOUXUZYHXLJONQ%
+ Wbcegf`ISPWEO]UTBULWSIWahZZb]\char94{}PWTTG\char95{}WTGY\char94{}ab\char92{}T\char92{}WKFDIRSZHLQS\char94{}a`Y`]RcN]\char92{}%
+ NUPC\char94{}\char95{}]SQOHDHP[MPAD<HUL@LRXSPTQZQEKBMMMGXXGS]X}
+ \hbox{Sc]WLHHLCMMQFFIEFNWNDKNJ?TQOOS?BJM]RIOIMWRO?OSSZNW\char94{}T[SU`TURTPWPQRaWZ`\char94{}\char95{}\char92{}deYZ\char92{}%
+ XZNFVXRc\char95{}ehcb[]OT[XVPEGUOOHBFLCX`QE\char95{}]bURQEUULRQW\char92{}[\char92{}\char92{}XYXLDDJD>CN\char92{}V`[VUURW`VU%
+ NZZYZP\char92{}VSYTKOELIOCDC>BKKKSPD@HGMJJJIOKOGEPVZTVZ[}
+ \hbox{\char95{}OVIULLDGCJTa]NHBAWRYQFDELNKNMGANORU[VMNR\char94{}GK\char92{}IRMHTVT]W\char92{}NY]NQYaa[\char92{}RJWYPOMLMP\char92{}%
+ [OLYaVMXRc`\char94{}bdW]NKZ\char95{}a\char95{}LKQRPRRUSQN\char92{}aaY[g\char95{}VY`VUJXQOCBECMKHFG@C=MKTW\char94{}\char94{}%
+ YWU\char95{}\char94{}[\char92{}TNX\char92{}SZ[OXQHPUNGXOOPEKGOSTKNC>D@PYL>ADHFOICCS[GMQSS}
+ \hbox{\char94{}UISU\char92{}RUWHWGHHLONGKIHHGJIE?CAJRN@=LIT][IWIXVSHZNZXGSXJM[\char92{}STXSTNWUOS]XVWZVMQZULPMUW]]\char92{}%
+ \char95{}[Rcg\char95{}NEJPOM\char92{}LNN>EFHIVUM\char92{}VUXVaZ\char92{}TR\char94{}\char95{}`X\char95{}XUPOFQMIJCLZ[Y]X\char94{}%
+ ]PYaY\char92{}IXSGOT\char94{}PJ?HJYU`OXXF?CFS[USMGTSGLOUSBW[SPLH\char92{}[\char94{}UQV?LZV\char92{}}
+ \hbox{RYFTTUUMPECR]HCHEKCBMVMDCFNFHGMVLCFV\char92{}NOREQTKEVV[OZXJRZWX[dab\char92{}P[QQIKKRVJLLKE>NZS]`\char95{}Zc`R\char92{}%
+ \char94{}`cVSUWQMMKCALMCIEJaMQ]T[ZdYTQ]`dWVPRXWU\char92{}Z\char95{}RV\char95{}YZ\char94{}`c`]][XWZ]Z[ZS`MLR\char95{}ES[V[YX%
+ XWHMXWVVJGM@AHKHFEFQUD?DRC?RFLSRSQZUKV}
+ \hbox{]]\char95{}Y\char94{}UVRXVFQKMTNLR`V?HGBDJCQbVJHMZRF?[QcTPVMZa\char94{}Y`HQR]BVT\char95{}`bh\char94{}[UQFVL`IFESR\char94{}%
+ VNUNYXGOb\char94{}VYZfcZ]]LHMUWU:<TSSE@OW\char92{}NRIPLbhdge`\char92{}[aZYYWZ\char94{}[U\char92{}X][Ycibd[]\char95{}Z[T[SYW%
+ X`Y\char95{}]HV[VVBWQTYUIBTSYRYLNF;?EMGCHPFJ@>;EWQDJLZRZQ\char95{}M}
+ \hbox{\char95{}\char94{}`NMFBLXQOSQIHLUGFKGSIJDDHRMLKJ?QHMGFKOOIHMXVWLESM\char95{}KUUTZWacdfe[\char95{}WGW\char94{}[\char92{}%
+ \char95{}VO[\char95{}[[XYccU]bc\char94{}bc`MDWEW\char94{}TV<>@CHN@BTbVMUT]feb[XVVWXUQRPTTYYWX\char94{}`hfdd\char95{}\char95{}%
+ Z[\char94{}[VRLR\char92{}TL[T\char94{}JKQRZ[SOKLDY]UJLQPJ>D@IFPLFHPQHGADLTMJMJQVMSQ\char95{}}
+ \hbox{PMG]ES8PSZIDM;HCMBQZFQ>=HDRGDSLLXYX\char94{}NTGMT\char94{}HIFMPPONZW`O]V\char94{}aZWaVd\char95{}faVcgdadTZ\char94{}]\char95{}%
+ ]W\char94{}dfidh`\char94{}`UYKQPPSU\char92{}]@>LAJC?ILNIY\char95{}Y`c[JSTSQTSRUMRTOQSUUUTRX\char95{}\char94{}]\char95{}\char94{}%
+ e\char95{}WRFPS\char92{}QBP[LYZKW\char94{}QGDGIPKPTBBLL[?AAKUOUJRLF@GOMJGTaY@DJPGEU}
+ \hbox{\char94{}Q\char94{}bOIGKILJCJ>NX[ME?GGMaOLHHBJNPMGHM>LY]MAVUMTUVeMRcO`QIM\char94{}W]\char95{}Z\char94{}adc\char92{}`a%
+ `da`[YZSXNKWTaejg`ZXSIKCCYZVHAB?FD@D@M]aX\char95{}\char94{}dc\char95{}USSRSPRSQMHNPORRVWVYVXVYZ`Y\char94{}OQbYW\char95{}X]\char94{}%
+ PUKXRVXPY[OAKKNTH@DGKHOECILDHG?ARLQLJ@<CEHJLQXUW}
+ \hbox{XIUXRAKFJVRNPXWUJP\char92{}H@DCD\char92{}UNI@@ABBISGRMOEX[Y[[WKP]HR]\char92{}[X\char92{}]g`b`d\char95{}dba]\char94{}]%
+ [Y[ZXXXYXYMMHHTchdeNKQA@M\char92{}\char95{}\char94{}ULB?JAFAKDJ`b\char92{}ec\char94{}\char95{}SUQJFFJFFEGMOPRWSXZ[]][Z[\char95{}%
+ a[[VY`YWaPO\char95{}``UYWZ\char92{}GCLWWKPKOK<BGABPJH??CGMRDP=GFPMUM\char94{}`[QM[U}
+ \hbox{cQbP]]RKNJVVJC=GJRVM>=@TWURKL??CI[JCDQJELaW`WZQZTWPR`gW\char95{}d``ee``]\char92{}\char92{}YWXUUUYWWTTWUPNOLHTbbaRAGGM%
+ E\char95{}\char95{}ZQLBCF@>BD9G[cZ]cb[WPOHJCAIKGISUVZYZWYZ[\char94{}af`Vcc\char94{}[ZTRSM[UQWW[ZHGTOLPELQIEAJNBADHKJRLKFCA?%
+ JRL@EUYN\char94{}VPPXNO\char95{}}
+ \hbox{XWLAHMQV]TNIB>HGK\char92{}WVNQTSJEB@NPY\char94{}LRXGNDEMFX\char92{}S\char92{}bWOU\char94{}HSXQUWRe`a\char95{}]db`[YXR%
+ XYXTUPPRXRRPSNMO[`\char95{}VKNC@NSUWSCDOE86C@8;Uc\char94{}fdbXOMJB?CEHMIQUVXWZWWXXXZ[Z]\char94{}]\char94{}Y\char95{}[aZ[YFW%
+ ]SMRHLJOMVPYLPQSY\char95{}QBGNMA>MNLKCHJ@DFKJLV\char92{}VKJJUIHT}
+ \hbox{`LZWHP\char94{}SOLRUH>@MCA?IH@?OFQBFJKEFIQOOT\char94{}VEHFZTVO\char92{}W]\char95{}TcSRc\char95{}ZVZheeaha]\char92{}Y\char92{}%
+ XSUQSSTNNOMRMUKJY`IQOE9CMOMSYHDC65?I>FDQbdbZXXLIC>FKKJRQQSQPPUVX]\char94{}ZXYX[\char92{}\char95{}Y\char95{}`VYa`[POc[NGZWVD%
+ PUWWAAIFEPKFLUFDFMHBDPQMGSULNVUWKKRVQS\char92{}T}
+ \hbox{VQHBRIJY\char92{}@IRTHRIPUUGIGINHDFGLABAJPOZPNLTEAYD]Pb\char94{}YNV\char94{}Z\char94{}WVY\char95{}bfb]\char95{}\char92{}%
+ \char92{}[XYZYTVROQTKOMLFLKPIK\char95{}YPJ<=DRSTPNB>923<B@??DPd`UYJJF@?HFNONMLORRSVWXY[WTWZYVZYWZXRKXXY[X[UR[W[WQZKOMELSNVQ%
+ BEHQINUKRQQTPKNRMKNHADUOYLPZN}
+ \hbox{MSP\char94{}MEOJAgRRFTQMIbKAI:>QM@IJQRJMHMHYbKCAEdD<FQTVb[[Kce\char95{}]eZU\char95{}`X\char92{}\char92{}]\char94{}[]Y%
+ YUWPQPTOHMMTIJFPV[\char95{}aO<>DHOLME:63258?D;=<C`\char94{}ZVKGL@CMRJHILOLNSTZSQVTYXWWX\char92{}W]ZYW[`[\char94{}S\char95{}%
+ \char95{}PASPHJ[P:LOTIKKXUXIJ?FLNGCIH>>MCBU[Y`O\char94{}YPTXVVKO}
+ \hbox{`\char95{}\char94{}ZOMOXXaJPOSODRQ[MNKX[QLSZOE?AFYCNSLOVOJWOQJ\char94{}a]ZUZXNW\char95{}]f\char94{}\char92{}\char92{}%
+ Z[\char92{}XYRUYZXSQPKKMNIQMGDI?L\char94{}ZTD=<:TPPNHF;224=ANFD?FSYWUNL@HOQKHHIKMQSSRTSWYVWWUWN]]\char92{}]\char95{}`]\char92{}%
+ XZQ\char95{}RL[\char94{}\char92{}ZURPWZSODFHT[SLMA@GIHFFEDHHO@KGEHHB>GLQOHNX}
+ \hbox{a`QBNPGLQE??GXBKDLAC?E@:JL]RBCCLAOFRDOQRSFSA:NK\char94{}dTW\char94{}\char95{}\char95{}b\char94{}`f[cZV[`X\char92{}]YN%
+ WWVTQQIGMJIARDE:EaP?<834<NP;9:5323:K><88>WXVSKILTGOMOHNGMNNRQTTZWURWYVYVYZZXbaTNTO`bTF`d\char95{}HNVLWABMWTTO?HJEJKUEEKH@AF%
+ H@R>[ME9D>@YWObT}
+ \hbox{KSZ]S[JWN@XZTNNWVMLDGNPIE@IQLKLILXVMOPLZQOLGKF]\char95{}`Za\char94{}b`d\char94{}da\char95{}c]XXYWVWUTUTXUOKIHGHMGKJHD%
+ DTV:8:58BOJGA;74446:7;9:7BXIIONPHNJIJILKPLROPRWYYRRTYYRWVYW[\char94{}[\char92{}\char92{}XKQVR]]\char94{}`WJJWRNTJ@OONDDGNRP%
+ CBPQOEIGJNJMGPVRYZQRSKHG}
+ \hbox{]\char94{}YT[\char92{}RVWXOGGFUS>IFMJQVNMMFISROIFXW?QSIDU`NbPUXZ\char94{}O\char94{}X][]c\char95{}\char94{}YX[XYXWVSTT%
+ VUQSOJICEGIINLF9<NM?C;79HIKD>H:43347A>;77=YTSLKHEFKFGHJLMKHMRXXTTSURURTQSUXYZ]XVZY\char92{}\char95{}cUQQ[[YLOVVYZUFNHHSKEPN%
+ QMINHUTA;CSaYWDBMWSKLKWZ}
+ \hbox{U]\char95{}RT\char92{}NLGXQWRJOPNILHDFJK\char95{}\char92{}XRNNUNXUCIKMANSOdXU\char95{}c\char95{}bbdca\char94{}S\char95{}%
+ \char94{}YURT\char95{}ZZY[QSQQPTTRPLIEMFGMOH88CK;;<8;ALB>8;96754657;=9@REMQPLEDJIFJKLUHQOYYVSXVRUQVXPUUX\char92{}ZWZTNNW\char94{}%
+ VYSUTW[YUHFNKXMJGMPIHNRWWRHQQLEFJDJWPYVHMSY]][Y}
+ \hbox{VYYVPWLENHXLNOUICSRF==XXRDCLLRSFIUQQHOLYSZ\char94{}S]WMEPWS[bZ]XZVYUTX\char92{}ZURTQORPQQRLIJBGEKILF<;H@8;54:CFJQ@<;8%
+ 5344557=<<HKQROIHHDIKKFKGLNZTTUWWSVUVWWWUVX[X\char95{}\char94{}ZQPSXSW\char92{}SQMWVKGRMKQHHJNUPCRIHFEIPRNMGBGIDHDOMGPISY\char92{}%
+ \char94{}}
+ \hbox{[QXJX[`]TVJLH[OFHPUTL]UKPF?JB@VZOTAOELD\char92{}YV[\char95{}\char95{}WQV]ULY[\char94{}bY[YXSRT[YTSOQOKRRPQRLECBFIEPF7%
+ =P8=<447;ECF;E87533459;6<7@DHQLMHGJEJHIEFL[TQQWYXUPTVYVTSYWZ\char92{}XXWRUZTYZSQT[]b\char95{}ZLOCALRIOMYWJUNMDAABJOJDUHSZQR%
+ \char92{}P>EKLT[}
+ \hbox{QJGNSSSV\char92{}\char92{}]XOJIOSH=PDK@HOUTIRSOWUPYWPVaaUQWRMQMU[ZRd]dbVYUVPQUV[XUUPRLOMKKOJHDABDGHD6:=66543:A;:9@?83%
+ 6433555657ALLKMHKHEKJFAGITTQOSPRUTXXTXYX\char92{}WRU\char92{}\char94{}TRXZ]TUNOV[Y]UOIXLBG@GPTQQVKMFBNINJIDAAIKTXTUSJBOW[MU%
+ }
+ \hbox{aRNNJQA<TTIC]\char92{}VL\char94{}\char94{}LHMVa]VQIEHMSDEYSYSSDAZPYOPB\char95{}SO\char94{}QXab`YYPPVTQPRZR\char92{}QS%
+ QNHGKMQNE@BDFED7?;>7658658?53373123354654<9GIXNLBFHHIC>KNPORXPTXVTTYYXVVPRXT\char95{}caWMM[WRQXNNSGIKGKS[SGEMHFKH?:IQWCIWRM%
+ ZEBLLMDAEQCY\char92{}ZPI}
+ \hbox{YPLR]c\char92{}XLMLRYWWWVUKOZMINLOJPMDUTZS\char92{}VKCOWTEHOTROZ\char92{}\char92{}`Yb\char94{}]YXRRRPPPRXUUOJQOPLLLHK%
+ FA@BFGB:FI764476;@A<75422482358698AKNUKJKIKIGDEMNQNSRTNTTXVTWXURRSWV[[[VZWSVLU\char92{}XMQTIKTORPIPNKKKJ?KNDBHIEHEKENENJTUR%
+ NDRNTPPY}
+ \hbox{V\char92{}YMSUZUTNFMaWHEBBTH@N\char95{}[SETYSJIFQUDIISQIMTDUWGMEXYY\char92{}da][ZSWTPNNPYXSPLOONIKLIHGC>@LKD8;854224<%
+ 9:G975633355544466:DNOMOIJCE@EKLMOSNQRSRNTVXXUUSPOTWZ\char92{}\char94{}XZTWIOW\char92{}XSQWSNMQC?ERYLCCLIHECDEGMPCQEA>E`\char94{}%
+ XQBDFWVUb\char94{}}
+ \hbox{WPVNDZPHR]VJ>MX\char94{}SHCFQTQSEDQRPEPNOPSFEHLFLRVJRVYORIYZZ\char92{}[VWVXSTMPPR]WVOOQMMKKELJBCACOC>?6775437896>5674%
+ 343222647<8:MKLKHBE@AGJPIMNMMTVOQSX\char92{}WSSPSPQY[YZZZVU[W]RUPLOZWQWLLOKEOLNECNGD@MWJDGJ@HOUVPEKRJLNVRUR}
+ \hbox{TWK[QK]]LAAMUOKPSQKDGHSKHQB@BQURNTVXWVDHSJYSWZPNSRTP\char92{}][]TVRNQNNNJUVPMNMJJHKJHKGDJFC>:?554336@=;94868773224643%
+ 579CKNLOJFCCCJFJILLLOQSSTVXVTVRQQTUTU\char92{}XUUUHWXV]UWTJSUYIHMFHGAJSOCM@FSPMIIHEEHH=?QVPVPWZVRQ\char94{}}
+ \hbox{R\char94{}\char95{}WNEDRY\char92{}]KAEFNPFOLHLQSVNFKFBIM[KUV]PPDJJLTXWTVWSMRRXV[WZRSVJPPOS[NLPONPLMKMNFADFK@:6854348@%
+ A9347;;656435239677;FMMIHGECDEMHDLONNRTPURWRSPNNSQUZ[ZYZVPFNTQOPVH\char94{}VZRFJPILPQVTNQCFJDQRQLGSURRL@CPWPBI[`WXU}
+ \hbox{NOc\char94{}YSRZPKUS[ZOUSTXTQMOU]Wa[SKHFLCENGGFNXVNVHSQWFQ\char92{}X[WV[YZWVUUNKMPNTSQOONPLNLIJHDFF@754435769=6344654%
+ 42333445678<MHKJHCIEFINMKJLMNPNOTZVXQRQRRTSXZZ[YWZYUSQLUIEKRHPSJRRRODBAGLGYRC>FRTTMKPNTOQRVI\char94{}[QFINN}
+ \hbox{Y\char94{}YRVbLMVbV[OBNTVOVWPE\char94{}PJKTNVK[ONX\char92{}LIQVJ=RIUZGKYa]Z`ZUS[USSTMSOHONRWQJLHTTOJQJIJCGFA633363488%
+ 7443459354344445676=OMLDBA?CKNJKEKHKPUOPXYOLTRTPRPSZZXXTNNTV[\char92{}RHNBWUXWNINHXWTPIHEDCRWWOUKIU\char94{}WKULPOKVLSKQV]W%
+ }
+ \hbox{X\char92{}XNVWaXRVWOUNBVWUUUUHFHQSSDNKJIGHERTNLQOMVZHIWbZ[R\char92{}WZUZVWXZUSPJHNOTRPHGKLLOKHIGAEFE74543225@54333334%
+ 43343455757?PNIID@CBGMKJKKMQMRPTUQNQNSRTOTZZUUWY[ZTWRSRUKTSMIDLKQKJSPGJGCFMPKBIIM?N@CILV\char92{}YPKGFNQTZ\char95{}}
+ \hbox{`UXXZ\char92{}R[TESV\char95{}aWH=AN\char92{}f[WUGONNabYKHT=FDSDLFNKMVRM`]\char95{}e[WYUV`UTYUQQJQMIPTPLHLMIKHPINGBC<4%
+ 344334656331235:5734455769@ERMGC@??BKJKHGLLIKLNXROMNQQ[RYWXXYUYU[STJSSQRSSMNUTUPPERPWGHMCGFUIENEWPEMIX]JQOLTSYZYXAF}
+ \hbox{Z\char92{}LOTV\char95{}ZQMGLIL\char92{}TRKREKMS\char92{}WWRLSXTSENH[WJJMXOJOSZ\char92{}d\char94{}df`TXU\char92{}[TSRO%
+ RLPILLOUMLLJOMTLOMHJGK<544342354:433345733355555668AOKFD>?@FLGHIKPOKJPTQNMLMQQPRSZWZRUWZZVXSS\char92{}XLTKILLFITNG@FCHNPPKO%
+ UPOLOOMJBDMJPNLPRTVOY\char92{}SW}
+ \hbox{KYQZ\char94{}MPRSZQTV\char95{}`HSTMJNCKTSFQNPQFDKPNGETHIPVTGOXZ`\char95{}\char92{}W]YWUW]YTWQPQMKLILMRMJKOJNMJMHGEH94%
+ 4345425763745:6433333436778BPJDB>@HOJHIGUNKLNPQOQLOORTPSWUUVVWYVZ\char94{}\char95{}SSYYX\char92{}TXO\char92{}TRD?@@MNMSTLD<%
+ E@IINOQOHNPTETNJQY\char92{}HHN\char92{}[}
+ \hbox{TVOX\char92{}SRSJISUUHTNAFFCLJMKH@IQFK@HPHHGS\char92{}YYMQR`YZ]a[]XY\char95{}TRR\char92{}XSUNNQNKIMKPPNMJJKLNGILJEG<4%
+ 233426345495755444435334445BMKGB=CJKDHFLKLIMMPOMSLNNRTUVQXZWUVWXW[W[[SFU\char92{}SMDGNIKAFKUJPRTERWJMOLMSJDWVPLPQUUR]XZUPZS%
+ }
+ \hbox{APKLRSMKJJUISSOUQPDFY[TVSZ\char92{}VEAFKHGPIKKHIKS]\char92{}]V]\char92{}\char94{}\char95{}\char95{}\char92{}YSQQYYWVV%
+ PPOMJJLSOOKJJMMKJKJKIG:4445443356555555434322323587CMDC@?CNIHIINJKILNOLNJLMLRTUXUYZQZYWWUUZZ\char94{}ZYXY\char92{}UTSJLRUSL%
+ IEEFLOEFLOTSJGTYUUTNRKNQUSSYWU]\char92{}}
+ \hbox{RR\char94{}VbXOV]RY[Y]PPUFOXPNGGJIOGKNPJJCCKKOR`RQQ]]]UQW`[ZWTOPX\char94{}YRURSRPMMKSLMGJCOLOOMLNLG833333357683466576%
+ 43233233347ANKFACNKIGKMMEJFKOOJKNJOPORNWZWQSQUZXX]ZP\char94{}MSM\char94{}UKXCFOKI??DKHPIWXL=BSNPTBFFMSRJEPPVW]e\char95{}WXX%
+ }
+ \hbox{QTHPMPSUYUWRMTFIKX[[XNBJAEOGCSWSTLALPYRK\char94{}`ZEROX[gc\char94{}ZVUTQO[VOTUPNPMPRMLLIHFLHRLMLKGG933222234753345544%
+ 64242224548BMFCBFMHILMJHEFIMRLKKJKNNRPVYUXNQUUX][[[\char95{}UNLNJRMPKOPSTOACCJWMAEDMPOQEFMTVKMYVOLIJQYTV\char92{}YP}
+ \hbox{GVUJFRaZZZYKHBUWKLPH[YFAED?@RIAJOQIJT\char95{}TZ\char94{}[bWRXL\char92{}\char94{}ga[RSPPPV\char95{}QWQMOLMJNMKJREFIFJ%
+ LMKJLF93223843466335556445222233387ALBADLKCDHNKDMJKKNNNMJJOVQPUUYYRWOUXYX[\char95{}[P]\char92{}QX@ITJTV\char92{}YRWNBPKRNIL%
+ GCNLLXMPNTBINSZYNQO]``\char94{}Z}
+ \hbox{NTS\char92{}XVNWZ[\char94{}\char95{}]WNL]YRBLQLPWUAPNRWUTRURO=FZOKJRRSWY\char95{}eYWXWSNRW\char95{}VUXQNMMLJLLGMHFFHP%
+ MLNLJD73323335854478667946334343456BHHDBMDIGIIFFDKMLKMLHIMOQUTVUYYTSXVTZUXWWYW[QORTX\char92{}NDOUVHQIJMSKE@LJOQSQJISYSQPTSK%
+ VY[U\char95{}\char92{}[\char94{}}
+ \hbox{MZQGP]\char95{}SY`LICLSUJLYWNOHXKIJM;LGLUQLFZ]XKGCKEXa\char95{}g\char95{}\char94{}\char92{}`UPWNSU\char92{}YXRURORLEJ%
+ JKLIIPLKNHJPPG5333323553435686566233345446<JJCBGOKFKP?IGGFKLJKJKONPPOJQY\char94{}TXTSUPZYU[TLVQ[VPQX\char94{}OXIRN@UIHIHQSD%
+ >=BSPXSNPWYRSUX[HHNXE\char92{}`Z}
+ \hbox{V[RY]YRKKRT\char92{}aRQSDRZ[NLRKLPSNKINQNNOWSVNX\char95{}PPT]e`]]\char94{}Z\char92{}WQNQRR]VUVSRMQSLINOHJMFEKRLILJA73%
+ 434224435445:8686343332436<MKDCQKHHJQHGEJKKLNIFAGHJRLOY]\char92{}TSQ[UXWX]\char95{}`]]WUNQLXMRXQRIJBGKKYSIQPRVSHNJKSTRQTOPZ%
+ SXY\char92{}YTUa}
+ \hbox{PWUIYSKKY\char92{}``Ra`[ZYVRO\char92{}TKRLCQ\char92{}ZILBOLLKKMX?JSYOQafd\char95{}[\char92{}TRUQOQYYXVSOMQKLHNKGICEHK%
+ ILMHL?5555432444344566653233353346;LLHEPIGGFFHFGJMMNNLIILLNQQRR[[URQVUX[\char94{}aaba\char95{}UGNXKVV\char92{}QROOIUNJQSXSE%
+ GFNQQWSKIFVZ[USVR[YW\char92{}]XY}
+ \hbox{TZYOKQSQSTXY[Z\char92{}]OMSRZULLJ]X]MIRDGMMKL\char94{}KFIOIGLe]\char94{}a\char95{}Z\char92{}YTWXQPS[VSQMJNLILMKGICBCJ%
+ JKONOA56444222643565:9:754335532378IFCFMLHNMJGCHHIKONNIGNKPOPRSXZSSTSSXZ]Z\char94{}Y]]VXQZ\char92{}MPOIJNSLLRM=MKQJQWRUSRG@%
+ NPUSMONYRSY\char92{}]U[Z}
+ \hbox{XISYZWWMN]]\char92{}\char94{}[Y\char95{}XRT[VURBE]TWQNGKCFCQUKOMXHWJ`[\char94{}\char94{}f\char95{}[\char92{}[WVVUTT[X%
+ VPINPMMJMJKHC@FINKMMLA54542233443457<:7744434443447HFDMKILOOLFDJJHLMLMDILHMQROTYTUSSSVYW\char92{}\char94{}\char92{}YYZYXZSR%
+ JIWUEBMRLMOONBCBMPRIOXLELRVXRIHQVNOXVWUX}
+ \hbox{f]P\char94{}ab\char92{}ZKBYiffbNFNXDGOOKPJZNJJCDGRIEKDFUX\char92{}\char92{}\char92{}db]a`Y[\char94{}\char94{}VSPNNLV[%
+ TOKLQKGIDJMHIEAEKHKIM<44434313542487896544444344348GHFOLNMLJKBDFFPQIJKINLJLNNRUWNUROSQYW\char92{}Z\char92{}\char95{}XQXOKJU%
+ VLKRKEARXXQCMYYYWYPJELOUUOYYa\char92{}Y[cQWQUWYR}
+ \hbox{\char95{}OU\char95{}``\char95{}[[USWRVZVQRKIRKOUGHURP\char94{}\char92{}KIMNMPWOGLWSX[`db\char92{}[W][TSTOQMO[VROLLJLF%
+ GEMGDCCDIMNLJ>533332234334687:7965444556357HGGQLIKLHB@FHKLLGGGMOMQNRTWRROOQSVTVX\char92{}\char94{}\char95{}YY[\char95{}\char94{}%
+ ]\char94{}QSQ[TS]XTJQWXMMLJTUOOV\char92{}Y]OSUZPWWOLNRTUT\char92{}U}
+ \hbox{OVUOT[[\char92{}XOILWN]YHeda\char94{}SKIPTDJO\char92{}ZNO@HIO\char92{}PcP]ISVadbdQYa]TVPOIKPUYOUMKJKJHJGLD@HCFILMG;53%
+ 232333333458;:5656444333657HGNQLKLHI?@JIKOKLIKLKKLNNRTSQJPTSXQOZYVVSW\char95{}PWNGVXIJIPRKFYUNEJQPLNORRPNMMNYXXWYRVY\char95{}%
+ ZYW[[Y}
+ \hbox{OQXRPOPOTO[\char95{}TTFEJUdXXQXMLWYRYXRILODJVYUR\char95{}d\char94{}Y\char95{}P\char95{}b]WX[[XPOJQJOU]SROLKKJJKKKA??D%
+ HKJPJ;5343333323359<<=9:44444433246EGINIILHD>DFGKPLKKNMLPKQTY\char92{}TSMJPRTNT\char92{}\char92{}\char94{}b[\char94{}\char92{}%
+ \char94{}\char92{}a[QPGOVUJD?JPNLLRNQTOMLLMQV[WU\char92{}ZVUX[\char92{}[VLV\char92{}X}
+ \hbox{KIOOVLN]YZYWaYXYVXX]\char95{}ZYW]SIHOSV\char94{}\char95{}WTFXV\char94{}bcWWFP\char94{}R]\char94{}XS[\char95{}WQRJPNQR%
+ TOQQLKGJJEJMB@AAILJLH<7343223343458?A@:655434433245FJPMLLKFABDAKNJKGJHMMRQQOXTSNRMRUWSSY\char95{}\char95{}d`JX\char95{}bZKD%
+ B?ETYZYXD=EJOXRRZZUQGKWWXHLWNHRZZ[\char92{}PWWTU}
+ \hbox{KMKLTVRTUXaWVRQ]LTRLaa[]\char95{}TGPRUNNT[][FHQcR\char94{}TZOT\char95{}f]ZXV\char95{}XVWOMLISWYPLIHHFJIHJG@??FMOMK:43%
+ 242233253879@@<655433444336FGONLOKFBACFGRMLHKIJOPKRRWSWNIHOSWSWWUa\char94{}TY\char94{}]\char95{}`ZSITONMPMVPOEHOVTUXNJGSZYX%
+ XRZOW\char94{}YTTUVUX[RW}
+ \hbox{HKNNQLMRYKIW\char94{}[Wb\char92{}QZ`ST\char92{}\char92{}SJJMSJZ\char95{}UWJMKUM\char94{}b\char94{}WWVTf`[WVR[YXTTNLNZ%
+ RXPLMEDDDGHMK@?>EMPNN;9543223333458A><<;74333444345EFSOMJKG=CFIHLKHFIJKNNNRVTRLKPROOYZY[\char95{}\char92{}Za\char95{}[S\char92{}%
+ VKHWZUOQSMHIQTYJMRWRUSKNRSVMTRQZTSTXV[\char92{}]ZXO}
+ \hbox{GDLVUVOGPSVOXac\char95{}`X]T\char92{}BEZSZY\char92{}`L`bdV\char95{}XPCSKccPMVSWfc]VS]YYTQNIEN[WUMNKHDBELHI?@>DIOPJ<85%
+ 4323331366:<<=<765433433446BFPOMKLD=DFCLIJLIDKLLROWVMPMJLPRUTTVZ\char94{}`\char95{}\char92{}X]VOV\char92{}``[[SOPVSSTPVSVOG%
+ HLQZPOPVVTX[XVVXRUUWWVVT}
+ \hbox{NVVSLSJRUT\char94{}cb[QXg`a\char95{}XZVW]\char95{}[Y]Y`SU][\char95{}XVN\char95{}UX]c`\char94{}\char95{}ei[NV[`\char92{}%
+ TROOLRLTYPPIFFCGJKNG=@@IHJI:5444332234466;@>=765433443346BDOOKKGA=FIKKIHFHFJNMMQWQMMGOONUWVW[Z\char95{}`c`\char95{}WXYLSRWR%
+ OVRBLUQMVULVWUYVUNTTWX\char92{}\char92{}]WNXSUYUWVXYYR}
+ \hbox{WY\char95{}\char92{}b\char92{}WOMa[\char94{}RFN\char95{}``\char92{}c\char92{}UOXc]b\char94{}UOQKKU\char95{}`b\char92{}%
+ \char94{}SZeXX\char95{}ffieYSWV`XXWVPKQPWSXLGECGGHLNHBB>EJNF:4563223323649?:<?775433434357IFRLLII?@FFNHDGGDEFKJMTVOIMHELMTS%
+ SX[XZ\char94{}dcYX\char95{}RSYHM\char92{}VTRSLQVLQYZYXNYZYJS[X[ZZUUVVUL]XPWW[QU}
+ \hbox{WWOPYQQT[[][\char95{}[WfXQ\char94{}`XXWXV``f\char92{}\char95{}PLU\char95{}]ZZb]U[`\char92{}MU\char95{}ddc\char92{}WUS%
+ \char94{}XXSJHPILMSWPGDDFGLKNMADCCJKG845432223434697;?:965433433446EHOLNMH=CJLIFFECBCKGIOPSPQIHHMNRRUY[]\char94{}\char95{}b%
+ SWWLQSLKYWU\char95{}\char95{}YSRVRRNNVTVRNLYPXWUPNMTYUX\char92{}YWVSNQRX}
+ \hbox{MQ[a\char94{}bZ]X\char94{}SLKYKGbWgcULXOWUPXSXGDEFV`adcZa\char94{}V\char94{}\char92{}]UeeVVPN\char95{}b\char95{}UQPMO%
+ JKMNPPHBHDLHKLCC?FHEG732331234354557<?;;83433333348JKNGFLG?DGNIEHC>DGGBNSOQWJPFIRQQLS][\char95{}`]\char95{}a\char94{}`\char94{}%
+ XLTZUNJIQQVGSRJHPWHPZQGN\char92{}\char94{}W\char92{}RVTY[\char95{}XNY\char92{}\char94{}V\char92{}SXZ}
+ \hbox{HLQRTOPZZNYaZ\char95{}ZZUYY\char95{}\char95{}`YZVO\char94{}ddb]VVSNRYVXXdc\char92{}Ucfedj`YTSZ\char95{}XZTUQKIQPRSQFG%
+ ECJLLOACAGIJJ833412133468:888;?666534333447DEMLOG@?IFKKHE@@@CFGNSQRPHIHJMPQTT[[ca\char95{}\char92{}\char92{}`\char94{}WYQQS%
+ TIMSSUOWTRRPTZWTU[W`YVUSU[W[ZWZ[XXSSZXUZ}
+ \hbox{HMNMMMSYVQ\char94{}edWPTZZ`b[`]UMZQL[ZabQW]V\char95{}]\char92{}[[\char92{}]`bdfdg\char95{}TPQVZ]XYVSLJLNNSQICGGIKKPK?%
+ @GJMI534322223334788;>=865533433346HJLLPEAACMJJE?@?BCEHPVPLLJHPNPSQSUXW\char95{}[]XZ`\char94{}\char92{}RXZ]]YWVQWZXWIRVZYTV%
+ ]WZX]TXSX\char92{}\char92{}[\char94{}]UQRUUZ[[ZV}
+ \hbox{STWS\char92{}SSRS[VYV`d`\char92{}\char92{}UWQKW]\char94{}efZc`[VOa`Za\char92{}YWc]LM]ejigbYUVRW\char95{}Z\char92{}VPG%
+ HMJHIVLDADFGKOH@?EHNL74322223344468:;?>754433443456EGOLLE?CHLJJCAABEEJNSRSPEINMMMNOUS[\char95{}\char95{}b\char95{}\char95{}%
+ VXPYT\char92{}\char95{}`VYOOT\char92{}MTROSPQYWIMUZX]\char94{}\char94{}\char94{}TV\char92{}\char92{}\char92{}WSWX\char94{}[%
+ ]YY]X}
+ \hbox{SVSLIKLPQQTWYW`[YIK\char92{}\char94{}b[aa\char95{}]aab][`\char94{}]YZabZc`bdcfdkhaWSSRP\char94{}\char94{}YWRIJKLLMLNG%
+ FAAJJOLC@FLMJ7322322333446;;<<::63333333357GKOLLDADJOKGAABDGEKPUPPNNEKNQRNQTVZ[\char92{}dd\char92{}W[`PU]\char92{}\char95{}%
+ YWUXORQPPW\char92{}SLPU[QWVV\char94{}]ZSMYXU[[YW[V[ZTZ][}
+ \hbox{WYUNJMRRNPJSOXQPWU[`aWX[\char92{}YZY\char94{}`\char92{}V`WX]U]QPe][Z\char94{}\char94{}fhjhUWSQQY\char95{}ZVVKJLLNGQMF%
+ EDCEKONGC?HJG9341133224659@;?AC;45333335448EHKIHB@FLKLG@?BEABJRPSRHKGEKTMKPZUSZ][\char92{}]NRWXYZVWNZORWPWQFJTWNDNXXZVYYOQV%
+ \char92{}ZT\char94{}\char94{}ZSUV]\char92{}[X]\char92{}[}
+ \hbox{STRQSMMJLVQOIS][[[TVY\char94{}\char92{}V\char92{}`d`]`c`Y\char92{}Sa\char92{}d\char94{}\char95{}baYbZbgidf\char92{}QT%
+ VMR]XTSQJNKLKKTKJFFAGNOGACFNK;422222334757>HG?9:95423444348IKNJEGCCJIGDACFAAALSMPOJHMPSUMSTYY[[\char92{}\char95{}\char95{}X%
+ \char94{}]]]Z\char95{}Z[URWUTZ]TZTSQQYVS]ZVVZXSRYY[ZY\char94{}RVZWXXYZ]\char94{}}
+ \hbox{HNKNICIFRRRNQSTR\char92{}ZTHWb]]\char94{}[S`acRRQLac\char92{}\char92{}bdfe`a\char92{}V`ili[XPQRUY\char92{}VRSILFJIMSK%
+ DBHDGKPKAAKME:32123333467::AD>>?9232224334:HHRMFCCIQGICCID@@IQILPJMGNQQOQQSUVZ\char94{}Z`c\char94{}V]\char94{}][bYM\char92{}%
+ WV\char92{}Y\char94{}YVZY[\char94{}UUV[XYQQRSYXW\char94{}]]Z[]\char95{}XZX[\char94{}XQY}
+ \hbox{KGIHHIKDEFGQQMOKSQQYW[VZ\char92{}Z]X\char95{}c\char95{}]X`\char95{}bdX]]ZT\char94{}afcgllka[PTNIR[TRRKFJIHNQPGIKICFRL%
+ D@DEJA32232222249;:DD=@>>933334334:KOMHHAEKNKGBKLA?DMNITJGFJLPVROQYXW\char92{}]X\char94{}\char94{}VWYWWV[VP\char92{}VOWXVKR%
+ VZ\char92{}[ZPT\char92{}[YRRW[SOUVZbWOVZ\char94{}\char94{}[ZZ]Z\char92{}}
+ \hbox{HLIMNLRXIFMSQKFLQSHOKGLQZRNTdYNO[Zde\char94{}Z\char92{}WVP]a\char95{}\char94{}\char92{}ag\char94{}a\char94{}YUSJQ[TKS%
+ GFDFKLROIINNEILOC@BDFE421222234348;;>==>:723332344<EJTHI@BRNJEBCF>@NSPEMEDCLMSSTMTXXW\char94{}`[c[\char94{}\char95{}N\char95{}%
+ WZ\char92{}`][c`bJZW[WSOXSU[YZ[SXWV]WYW[`[[UTQX\char94{}][\char92{}`[}
+ \hbox{GEEGGKIGCKINIVMHLGLMTUNWWU]a\char92{}[\char92{}\char95{}a[b[[]\char95{}O\char95{}`cccbbjnif]\char94{}YSLSVZPNKDGJHKMS%
+ MIONHMMOIDBBLI421224434568?A??A>?953222344CJSKKDDFOIIJIDD>BLQKKFHKIHMVTOQUYT[]`[\char92{}b\char94{}[VVRVXZYUUV\char94{}PQWZ%
+ XX\char92{}XTW[[WaYY[\char92{}YUWS[]ZY\char92{}\char95{}Y[a\char95{}\char92{}\char94{}][}
+ \hbox{CCDDKQKFIFDFNNHJPWXRa\char95{}TSX[]ZOX]b\char95{}PWcdcdZVTTP\char94{}\char95{}efdj[\char92{}]UQJPUXTOQHEKHIHNLIGMLKMK%
+ OADJIJ532124323357:=@>@><942333445CEMKKE>DMMK@FF@?IRMJMJDHGJORUSSXRTZb`\char95{}`a`\char94{}\char92{}[[ZWXTWWU[cVV[NT[a]VX\char94{}%
+ TUYVXWPVXYZXV\char92{}Z]\char94{}X]\char95{}[\char95{}\char95{}\char92{}}
+ \hbox{D?BCFAEIGIHNQQSOVQ]OVQVWUOVb\char94{}Z\char95{}\char95{}hgfaa[Z[`baT`cgjkfec\char92{}VQNMVZQTPHAHLFFLNGGGLHROQI>HFJ73%
+ 222444458<??B@<=>;63324637JKQOFBBMOKKCDF>@OSMGHDEHGPOSSUUXSVY`c\char95{}a[ZUb\char92{}YOZXZRSSPUZTZb]b`\char94{}VT\char94{}%
+ RWVYVVWXV]\char94{}WXXYX\char94{}`V[]\char94{}a]}
+ \hbox{DCHABFBCIDIHHEFINKGJKLPTMV\char94{}R]bdZefca`ba\char95{}ca]`ca`gikfc]ZVQGPXVPNJDEGLINPIGGFGMORKBCFI932123333456=>??;:%
+ ;:5342364;DFMIE?AMLKEDFB>FTQOMGE?HNQSQNRYVPV]b`bc\char95{}Y\char92{}b`VOQVZYUPTV\char92{}PY\char92{}TM\char92{}UYTW\char94{}%
+ \char95{}YTXYRZVZ[RT[\char92{}\char94{}\char94{}][\char92{}\char94{}\char92{}][}
+ \hbox{OD@BBEECOFLKICCDPKNMMGQOMUX\char94{}\char95{}gibaa[NRZ`\char94{}e`eacffabe[a\char94{}[ZTGMYZUTHDBGJKNKI@AFFJKNK@JLK>3%
+ 1114433466>@><>9:66343234AAELHB@FRGJBFK??KVOPNEC@FLQQLRTXRWYfb\char92{}jcce\char92{}c`\char94{}`]\char92{}Y[]XPQX\char94{}V%
+ Z\char94{}VUW[\char94{}\char95{}Z\char92{}T[[YUbVUWXY\char92{}XW\char92{}\char95{}Z[\char92{}`d\char94{}}
+ \hbox{>EBEIGDAIJFIGGKFLGHFGIJHNT\char92{}bada`a\char94{}[]Ya\char94{}aZU`]ddfbmlh\char95{}\char92{}Z[WGFV\char92{}UOHGGCGIN%
+ PDAGKCDKLPACCEB41224424568:>A<>=:54333537FHLMI@AIMJEBIH?>NPMNG?>@IMONQOU[OSVb`b[`bZ\char92{}\char94{}a\char94{}]\char95{}X\char92{}%
+ \char92{}ZZZVXXRWTWLTXUX`WUT[YWX\char92{}XZVZ]]]\char92{}[YZ\char92{}]\char92{}[}
+ \hbox{IDFE@?B>KGFEBAACDAHGGIMIMLWda`\char94{}Y`bccc\char95{}`g\char92{}`dfcabddkmc`\char95{}[UKEL\char94{}YSIDBDCIHMG@BKC@D%
+ NOH@HGF63324333566<;>@A9754323338JFNOFA@MPHGFFACLVLCIA<@ALKMNOSTMQW\char94{}fa]d`W[\char95{}`\char92{}\char92{}\char92{}]Z\char92{}%
+ b`RX\char94{}W\char95{}VV[YNO]Z\char94{}[XNWZ\char95{}VX[]VSZRX\char94{}`[\char95{}`b`\char94{}d}
+ \hbox{HGDEECCCB@A@CHHDBGEIDIS\char92{}a\char95{}bkdhfbbbb\char94{}YYheaa\char95{}\char95{}e`fgbgia\char94{}]XYTLJUXQODBCJII%
+ OL@?DG>CMMG?FGF5422423355797;B;786423334>EBMLG?DPLIECHB@JNQHB=<?DINOOLQWRUZbaYaX\char94{}V]`\char92{}XY\char95{}\char92{}Z]%
+ [dYUTZQZVXYYU\char92{}\char94{}ZTYZX]\char95{}YVZYZTWXXVYY\char94{}Y\char92{}ZX]}
+ \hbox{JQG>=>?A@DCD@@FEAGNLS[\char94{}\char95{}\char95{}ec\char92{}d\char92{}\char94{}\char92{}b\char92{}babheifb[ad`gfiikd\char95{}%
+ `YXVODRWSOG@?DDJTPD?AHADKOH@AGE:5322334569:<=>A;55333335DGDOIA?FUMIABDFCPNGOE>>EDILKLOVROTY\char94{}TYab`adb\char95{}`YU[c]%
+ U\char94{}\char92{}WUKSTVWSZ[Z]\char94{}UT[\char92{}\char95{}]\char92{}\char92{}TXYYYUYXW\char92{}\char92{}\char92{}]Z][}
+ \hbox{GDFCA?ABABGGGIGRSRSTV\char95{}aX\char94{}]]\char94{}X`\char95{}ffad\char95{}Z\char95{}Xd`b\char94{}``dhgbifa]`]XWVMPY%
+ XTLB@AGFPPF>AH@>HKLEBGE=43343435688:?=<843222349GCFLKACORGIBFBEGROHF@?@GHNKJQQ`XRU]gfZadae]Z\char94{}\char92{}[]\char94{}\char94{}%
+ WQUYV]\char94{}WXRWT\char95{}[W\char94{}\char95{}YZWW[[Y[aUYYYWYY[[]Z[Z\char95{}\char92{}}
+ \hbox{BE@AA>?ABGADJCIHRQTZZ\char95{}]]]Y\char94{}\char92{}\char95{}agdbc\char94{}cddeb`ac\char95{}\char95{}gebgehe]\char92{}%
+ `]XVMERVQKA=?FIJSR@BBGBFKLD@CHC5334543568::=<;963333349ABOHH@EOPJEAFBGEPNJJCDBKPLKPSWSRUWaaZ\char95{}abad\char94{}]aZ\char95{}%
+ `ZWZ[QYZW\char95{}\char94{}ZX]X]ZZX[WY]\char94{}`ZYXV[Y[[WX]YVZY]]Y[}
+ \hbox{F><<?AEMIGGBFCNIDMNSOMYPQW[\char95{}SdXcc\char95{}]d\char92{}\char95{}ccaddac\char95{}Tgiigk]\char94{}b\char95{}WSNMP%
+ ZUNH@=CHPOMHB@F@DPSHB@JI8443433569:9;::563323359DBMLHEFTNIEEHFAKQJQID?DQONPUTTONW[ZWdfb`Zc``]d`\char95{}\char95{}W\char94{}%
+ \char95{}ZXVZZ\char92{}\char94{}XWYUSR`XWU`W]XUVY[\char92{}\char92{}XW]Y[WYW[Z\char92{}\char92{}}
+ \hbox{GDBA@=>?A@?BECGKJPOMHPOQRQSZ\char95{}Tbhe`daaeegefbcdcahnhaa\char95{}YX\char92{}WUOGKXVSP><AGGTPFJHLBDKNCAFFH:4334434%
+ 79;<;:9642223358AENHH@ISJFBAFDBPZMOH>?KPOOMTWRTSX[cccdecb\char95{}a]\char94{}[]a\char95{}YXYWQ\char95{}\char94{}V\char92{}Y%
+ ZVUWQQV]]ZWXZYYZ\char94{}Z\char94{}YWUZZWXXWX\char92{}[]}
+ \hbox{==:?==<?>D@AFOJIF@EEMSXVQce\char92{}hbed``aceigi`eeddbgigijikYW\char92{}UVPHFTZUOF=EGPXOFGPQKJJIN>CIG?5443334868;;746%
+ 5423235>@IJHJENXJFHFEEERRMJDCCQRMNUVYMTTV\char92{}[aabaefa\char94{}a[`]]]]VXZYZ\char92{}RWT]XX\char92{}\char95{}YUX\char92{}%
+ [X\char92{}WW][V\char92{}\char92{}\char92{}XY\char95{}]]X\char92{}YUWZX}
+ \hbox{<<?@>=>?A?BDICNHDFEEQRQZYfjeZcabbefhdcdcfccdaaafih\char94{}\char95{}d\char94{}[\char94{}[XSKFN\char92{}TPI@CJISPJGFJP%
+ MLNKJGGDA7334435757:9<744333246>CNMJDKTMHILIHHNQSSD@BKQTPMPVWOOSY\char94{}eadbedca\char94{}\char92{}\char95{}]b\char95{}[VX%
+ WSSV]\char94{}[\char94{}Y\char95{}Y[VWYVZYZ\char92{}\char95{}XXUXY\char92{}ZZX[ZX\char92{}XXZ\char92{}[Y}
+ \hbox{@E=@><>>GKHBE>CAAILIC[YG]adYh`e]cghgfhbQRT\char94{}de`bjihgikbVV]XWKMKXZWKELFINXNC?BDJIJLCGGF?533643477:;99473333347@%
+ DKKCBNUNFMKBBDSVOL?CDOROMWXVTKYX]``ceg\char94{}P\char94{}U\char94{}\char95{}\char94{}\char95{}edZ\char95{}URb]QXXXUcXZ[\char92{}%
+ \char92{}RUZLYUYYWPXX\char94{}WZ[[VZXX[ZV\char94{}Y}
+ \hbox{@:<?AA@@?>D?=@>AGJLMNF@O\char94{}`\char94{}\char92{}`\char94{}[ebd`aefcfbX[c\char95{}\char92{}fdghfbdc\char94{}]\char95{}%
+ YWSMISWQNMGBIOSWG@@BBOHPGEHE=555544679:;>:743433447BJKHDJOXHJFHCFLVVOMDAGPQSUQ]TINUYb`\char92{}\char95{}ccdd`b\char95{}a]\char95{}%
+ S`XVXVW[]\char95{}[VWYY\char94{}\char95{}WXXVWZZY\char92{}\char92{}WVWYWW]]YZZZUZW[X\char92{}}
+ \hbox{=>?@>>B==A>><;AMMJKJR\char95{}VVGUX[\char94{}bc`addffd\char95{}`hheS\char94{}d\char95{}\char94{}\char95{}\char95{}Uci%
+ bc\char94{}Z\char94{}TRQGQ]SURHIJQQPHCADBIGNLEFF=544654467:=<8653323447@JGEAKQULJLIDENPUQK>ETPUWRYYBPTV]\char95{}ae`a\char95{}%
+ cccba`a]ca\char95{}\char94{}\char94{}]]Z\char92{}\char92{}Z\char92{}][[XYZLONX[XTSYWWXYVVZV[\char92{}[ZYXZ[YW}
+ \hbox{>?>ABA>ADC=?ADFDLDKXPTUMNVRP\char95{}d\char94{}`d\char95{}`ce\char92{}\char92{}jfcfh\char95{}N\char92{}h`bijibd\char95{}%
+ PXYTRHL]WOJIMORRPF@AFMHELNJFC65645553679;::964354548@JHA>OXTLGKF@JOYYRHBKSSVSRYNMUPYX\char94{}\char95{}eaa`cd\char94{}`cUQP%
+ OOKMRW\char92{}SX`T]\char94{}b\char94{}YY\char94{}YWXUUZSTTYYSY[YY\char92{}\char94{}\char94{}XYYZYX\char92{}Y}
+ \hbox{?@A?CEA??ADCCEDDDJJTPWPKOWQ]JX`hebefcagdcfgeefdZYdijig]\char94{}W[[VSSKW[URMHNOUSNB@DGLDINGF>5465663559::;9853244556@%
+ KDCBRZNKFIAFJTYWNEFNPSTVU\char92{}WRTUX\char95{}\char94{}]`fb`d\char95{}SIU\char95{}cab\char95{}X\char92{}\char95{}\char95{}%
+ UGLY\char94{}Y\char94{}\char94{}\char95{}]ZSVXYVWZWWXRUSUY\char94{}]W\char94{}]\char94{}\char92{}[[`ZYZ}
+ \hbox{A?><@?;>@>>?CBHKKLILSOOSNNSNcaXOgfji\char94{}bjd\char95{}Z`dc\char94{}ihidLVhmc`Z[\char94{}]TSQNZUQRGOSTRPFDLOQIOOKI@%
+ 7455543445:99:953344466>FCEHTVIHGNFHPVXWKILPUUOP\char92{}ULWPXa[``b]YQS\char94{}\char95{}\char95{}ca`\char94{}a]`[[S[dbVSR\char92{}%
+ ZWX[\char92{}\char92{}\char95{}XYYXVURUWWUSVUX]\char92{}T[YY`[XY}
+ \hbox{>==><>>=<;@EFDFJOMMMINOHKNTWbfebLXfhYiig`SUU]bbehjcc\char92{}gf\char92{}]\char92{}][XUWNY[QPOLOSUTPGNJJLJKMC<76543433%
+ 366898634445755=GECIYSHHKHLJRWYSDMRRVUXVXVVYWZYT\char94{}aa[T]a```\char95{}``b\char92{}\char94{}\char95{}\char94{}a\char94{}%
+ X\char94{}W\char94{}\char95{}`OOUXX[S[`\char92{}V[VZWRUVWUVSWZ\char92{}Z[]X\char92{}X[Z}
+ \hbox{;<<>=@=>CBA?=EESMFMJQJHBLW]]gdelfb]YWfdNWabkd\char94{}`dedcjfeZcb\char92{}R\char95{}YRUQU[WOXSNQXVNMKFHIJLE?:75433344%
+ 356::8743534565:AHJM[SMKLILMSVZZLJUVPUWWQPQY\char92{}aW[aT[dae\char95{}\char95{}]d\char95{}\char94{}[]V]\char94{}a[\char92{}%
+ Z\char95{}V][TTU[P[\char95{}]WTZXXSY\char94{}ZXYW[XUXZZ\char92{}S\char95{}a[[[[}
+ \hbox{=<;<<<<>?C@>DHOOIIFGHCKOTT`bfdgcgdded\char95{}UOW`aUWXUVTac`eehfb\char94{}S]]ZUSQ\char94{}]XTMJQRYPCLJJJHML;887642344%
+ 479995543435565<EHLLZTLMRKMPWZZMQSTPMYXYEMS[]\char92{}UZ\char95{}\char94{}][`\char92{}bb\char95{}\char94{}a\char95{}\char95{}%
+ b\char92{}\char95{}aZ]XVYS[S[\char95{}WVVR\char94{}\char92{}VYVX[YWXTUVWTZXZZXXYZ[[X\char92{}Z}
+ \hbox{>@B>>>@HCFBBGNTG;FFFEBGKW\char95{}\char92{}b\char92{}`\char92{}]e]UXYdgk\char95{}a``afdhc]jid`mkbdZY\char92{}[XROV[RV%
+ NJTSXOLEBHLLIL:77544343447<:77444424643:DKMW[RLPLILQVT\char94{}UTRUQTX\char92{}TKXY[bVQ]R\char92{}aYY\char94{}Y\char94{}bb\char95{}%
+ \char92{}\char95{}]b\char92{}`d]\char92{}LTW\char92{}\char95{}U]\char95{}[Z]\char94{}[[[ZURQSVONZU\char92{}XRUUY[SV]VZbV}
+ \hbox{<;9<;;<>==BHFC<@CDGKGJGPW]\char92{}`\char95{}eccfbeggefbc\char94{}]`ac\char94{}dhheZZ\char92{}gda[]WU\char92{}XRMWZZV%
+ UOTZYSKHHDOIHF97554223333658644434356458@FKTZOHADFQSYZVTUVVPNYZLQU]c]U\char92{}cT\char94{}W[\char94{}b[]Z\char92{}\char94{}%
+ aa\char95{}]b`[LN\char95{}Z]]]\char92{}Z[\char94{}YZ\char92{}[SWWUU[TTTTYU[XWXX\char94{}\char92{}XYY\char92{}X]X}
+ \hbox{::;<:9;=?ABE@;>ADCKJGKQTXZ]b`cgeb\char92{}`ecdfigjd\char95{}b`eddbed\char94{}cdefZ\char92{}Z[]YWUW\char92{}ZWWNPW[TMG%
+ FJLIG?74444333344678753343354455:BHUYPHBDKRWWZQVVWULS\char92{}XLOYZYVZZ]YXWZ]\char95{}Y[]Z[\char95{}bb\char95{}\char95{}[TS%
+ \char92{}`]Z[YZY[Y\char92{}Z\char94{}ZOUUURVYZXZUWYYWUWW\char92{}WYXTSTV}
+ \hbox{;<:::9@;=>F;;@H>AIE?EHKQd\char92{}ad\char94{}`\char92{}\char92{}a\char95{}\char94{}bba`d]][\char94{}c]`befcaeafd\char95{}%
+ \char94{}][]X]XZSXZWXIIUXYUGJNPG>9542533333335665434343643347DM\char92{}XOHBIMT\char94{}\char94{}UNNVSRQU[QQS\char95{}d\char94{}%
+ TZSS`V\char94{}YXZ]\char95{}\char95{}LRVWZ[MU\char92{}]`U]XY]]WWY\char94{}]\char94{}\char92{}]ZYYTR]Y[XZW[]TQVUVVWRXTTT}
+ \hbox{::;;;==?;>><<<;A@EAEDCHb\char95{}\char92{}\char94{}\char95{}]fhcbehbf\char95{}aRUTXSV\char94{}ab\char95{}igcddbed`\char92{}%
+ \char94{}QR`WZXU\char92{}RQMKVYSQONKHB;6434433432346765445543433336>QYPKEFLLX\char92{}[PPPURNQZYPU[aZQU\char92{}e\char92{}X%
+ W[\char95{}]cY\char94{}\char94{}\char92{}U\char92{}\char94{}ZSYXZ]\char92{}\char92{}\char92{}XXWZ\char94{}WX\char92{}Z[X\char92{}%
+ ZY\char92{}\char92{}YSXZVWUYWXYXRUSWVXWTS}
+ \hbox{<::;<;;:<<@=<B;=A>B;:ALXQ`\char94{}dcedd[Z]\char94{}ifiiehiXHQX[\char92{}Z\char92{}VPc`bee][Z\char92{}b\char94{}\char94{}%
+ YVaXPNKRRS]IKGD>85435432322353555436433432345<SLDJDLHM[[VJNUUMJX\char94{}RTYbaVPW`b\char94{}bW\char94{}S[\char94{}]\char94{}%
+ c[\char95{}YTad]bY\char92{}WYZZVZ[Z[X]`\char92{}\char94{}`\char92{}\char94{}\char92{}Y][Z]XTUUTQXVVYRTQTXWT}
+ \hbox{==;::;:;=D<<;==<?AA=CHPSYZ\char95{}kia]Y[VUOIFHLKHAEFEHK\char95{}hfig\char95{}bab\char92{}`[YNVc][V[\char92{}YTSR\char92{}%
+ WQKIC>864434334443445665445433323246;CD@HGKLMZZNIQVSPUZROW\char95{}c\char92{}O[]`]aa\char94{}]Y\char94{}[\char92{}]\char94{}%
+ [bb[RY`[\char95{}\char92{}XYZZ\char92{}YZYWZY\char92{}X\char92{}\char94{}V[XYXXUZ[YXXY[WVTUTUXURRV}
+ \hbox{<;<9;;;:<><==;99<A=BGFFIBH?MQ\char92{}]ca\char95{}UbnhfY\char94{}CQRWcdaedkg\char94{}a\char94{}]X]biYWWf\char92{}\char94{}%
+ N\char95{}\char94{}\char92{}]XW\char94{}UGJC=96444434344333646546565333233357>AEHGMNTZUMQXUTTVVUM\char95{}\char94{}cSVZ[WPV%
+ Z\char94{}\char92{}]d`[\char94{}`X`[]`ZOaUa]UXZRXZ]a[\char92{}[WYbRUR\char92{}URUZXWWZVW\char94{}VORRQTWWUS}
+ \hbox{;:;;:<;<;;:;:99:;>=BECPLPY\char94{}bf\char94{}fgee[cVPV\char95{}C\char92{}]YVPRPPVWVOKK][\char95{}[b\char94{}U[\char92{}%
+ a\char95{}Uc\char92{}\char94{}UNTRLGA<6433533433345445555545444433334469<AFHMJOZZPORWSU[YUX`\char95{}VPVZZ[\char92{}[Z\char95{}%
+ ]\char92{}`Z\char92{}`W\char95{}\char95{}\char94{}`a\char95{}]OQ\char92{}YYVW]WW\char92{}OU[[X\char92{}XXUV\char94{}a`Y\char92{}%
+ XVY\char92{}XUWVVUUXSVWRP}
+ \hbox{;<;;;:;::9:;:99::><@DKWUO\char92{}\char94{}``dbgRU[Z``RCWXRPFX[cihfcagg\char92{}\char95{}aY\char94{}]\char95{}RZbZZY\char92{}%
+ RKKKG?:7444433333344345565654444544433345547=BFIKO[VNRTSPY\char95{}WSY[\char94{}T[\char94{}cUU\char94{}SCM]``\char94{}``\char94{}%
+ bd[]\char95{}[]]]OWVVUW\char92{}\char92{}[\char92{}Z\char94{}[WX\char92{}XYZ]ZYSVX[SZZXTSUUSUXWXWT}
+ \hbox{8:;:9:9899:;:899:9<CPL[NUVTVSUSRNFFNMNFPOPMIHMNT[edfa\char94{}\char95{}[\char94{}[X\char92{}[]]]][TNJB@;9864343323232%
+ 344334445564444344344433334359BHJKTRMPRUSXXSW[]YX[Z[WYYe]b[PGO]\char94{}\char92{}\char95{}]\char95{}]]\char92{}\char92{}YYW%
+ VMRVXXX[[\char92{}\char94{}X\char92{}WSQ[ZY[\char92{}Z[WXXSRVWRSWQTUUVQR}
+ \hbox{::99::;999:;999:9;?DFKKTVQ\char94{}\char92{}RZc`[\char94{}TLMRKCIOJNLQ\char92{}]Xfc`]\char94{}`[\char92{}bbY\char94{}%
+ [[\char94{}]PAA;876654334433323345444555556455433434322333333359>GLOLQPSWYWOTWXSX\char92{}]Y\char95{}]a[\char94{}a]]]`JQXW\char92{}%
+ \char95{}\char94{}\char94{}\char94{}\char92{}XZ]YYXKX\char92{}YYYXXVZ][WVa\char94{}Z]W\char94{}[ZY\char94{}WWXUSTZZYQTSU}
+ \hbox{:<;9<;99;;99::7:89<FIFOQPIRVXdbbY\char92{}RGQLLJKHMTNJNPHY]c\char95{}\char95{}[YXZRY\char94{}\char92{}\char94{}VSD:88%
+ 6555532332222133534444455465554243332222333343337:=EGPURTXYXY\char92{}XWW\char95{}XSPVVTQTKXVabZOQ\char92{}\char94{}\char92{}%
+ \char95{}TLJZRSQVUWHTQIIO\char92{}Z\char92{}[WVURUZ[X\char94{}YYZ[ZZVXROW\char92{}QUTV}
+ \hbox{:;:99999:9:998998<<FFMPYKR[Z[c\char94{}\char95{}ZMDGFEHIGICBELR]caUZ\char94{}a`idfbZ\char92{}YYTI>8777864543333332343%
+ 445535754554544443232222333332322368=GORT[[U\char94{}ZRZTT\char92{}`]\char95{}\char94{}aa[]\char94{}`XY]\char95{}SEUMTXNUNP%
+ RWZX\char95{}\char92{}LTW[VSOQXZVX\char92{}X[ZX[]ZYYXYWRRTTRQSUT}
+ \hbox{;<;8889:899988898:9EIAUJGVUYZfYORSDL@DEHEUPXXCAHTXcbb]W`\char95{}\char94{}e`\char94{}aZJC;:66865666433434234455533455%
+ 365434322332221122133222223239CPQU\char95{}PYZVWYUYXY\char92{}TY[\char94{}UXVcZVOTJLUX[YYTSRIILOLQULRYVU[]XOaY\char94{}]ZYX%
+ ZZZVX\char94{}WSNSWSRRUT}
+ \hbox{;99988999:88888998=BGPTJGQTZZ\char92{}a\char92{}QJHNHGIOLNGDHOUW]ikfcaa[]Z]]XRNE=:97878766666444433445554454566433433%
+ 32333323323444454333348GNOVRRVYWWU\char92{}TWZ\char92{}YZ\char92{}[]UWXdbUX\char95{}QX]]Y\char94{}\char94{}Z[\char92{}aZNMQ%
+ QVQTYV[XYSY]\char95{}YZUX[YYXXWUTQUVUPTS}
+ \hbox{:97;9999:867889:78>BFPRJNRY\char92{}deZHGVMJHLIREEGKNMIO`agWdh\char92{}aa`XXXSRB9965588977576655753543554455764435533%
+ 24233344545467775364224:=IOP]SX[UPSRWR\char94{}YWW\char92{}X\char94{}ZRW\char94{}V]V[PMJMGMHFIPMZYY\char94{}XCDWZZZUX\char92{}%
+ ZY\char94{}UYU[UYYXZ\char92{}XLRXXRPQ}
+ \hbox{88::8;;8978767:9;<=ACKGGQSSXVQGNOQDIKAF?FCILRHNM\char94{}`cbc\char95{}c\char95{}X`WXVMF;75545789865677899666654544455%
+ 66545544333334677888876765465423=FLUWSQWUX[]]VR]ZWRWX\char92{}YW\char92{}Y]\char95{}\char94{}\char92{}[VWSTZUWYVRMMNY\char92{}%
+ YPJIPUTYY[VY[YVZZWWXXSPPVWPSS}
+ \hbox{89<:::99999777889>:;AKORTYVY]Ic\char92{}QIGJF@EBEIFBHNKLMOLENUWTX]\char94{}WRHD:5434569:;9::87779::895666556656544545%
+ 5435579:88766666654444223<CRSSXYZZUUWX[SZVXVYZY]\char95{}[X\char95{}]\char92{}OTUQXWUXTSVZYXUCV\char94{}]NUFQZ[Z[\char92{}[%
+ \char92{}VYVVWSRROOPTTQQ}
+ \hbox{:<;:9;9888877878:::<LSJNQTR`SRMMIVHM@GNTADDHFFJIG[i`YY\char95{}Wa\char94{}ZZNJ?64323469?GDBA>:88898:89887565566546667%
+ 857:9997776766565544343227?EKTUTTXUXWXXW]US\char95{}XNPb\char92{}WUTVZ[[\char92{}URTQRPSXUVSWTWSQUTVYU[ZXXWWQ\char92{}ZSWRQ%
+ URPRRQQR}
+ \hbox{:<:<;98998987877;9=?HGNOMTR`]ab]MJKFRSDBHKLLLFEUNJTbeaZY]\char95{}[VOF;532223469>GTTXUH9667987887788787758879:8787656%
+ 57::>=865543444424;>HTYTVWVXSZ[XQTXJZV\char92{}IN]`QYZ\char92{}VVUXXRUVTUVSTQWXYZQMWYYXX[YXTSSWVTQOUTQPTQQQ}
+ \hbox{<<;:98:99788997688??KCMPVLRXNW\char94{}R]FGNCHGIHKCDA>IO`b\char92{}Yhoh]a]Z\char94{}LF943322533444>HT][Q9656788888:7;%
+ ;:86989:76544548MWZXRVM<56542233228DBRSRUSYUWSZUWP\char92{}ZYTDNUQRRUXUWYTRTTTVZUQUSYOZ\char92{}XZURK[\char92{}]WNUUTWRUTSS%
+ SSPNPQOR}
+ \hbox{<;9999989887987798;CCGPYTRVKPYWVXCEEJMNKJFF@BMGHP[XZQS\char95{}a]XZVH@75332333473345;NV]K86678769889;;8:89977544348?W%
+ \char92{}\char92{}MD>=A;75422212125;BOWZWXOSWXU[[[b[W\char92{}\char92{}XFZUWXTOURORSYVUTUUTRRWUWZVXXTINV[VUTTSUWWVTSTTRNQQP%
+ }
+ \hbox{<;89:9;998887877:99?JEQMWZUOQLQU@IFFFE@IHBBJOQMTJCJT`\char95{}ZQS[dWM@8543233445465657CTZM:666658979<9798776563435GWQ%
+ HB:86754333123121118BLPTVYWWW`[\char92{}Z\char92{}Z\char92{}UZbc]WN[WZWVQT\char94{}WSPZUUSVOVLVVVW\char92{}ZUUWGZYXSVVSWVRP%
+ SSQSOPOO}
+ \hbox{:;;;;::887997988999@EJGEQPXMTOYOKKFFDCECBEDDJIJJESaRU\char92{}\char95{}`]\char94{}\char92{}[HD95332333344454356;P\char94{}%
+ D8666555689898665444555C[F<98554454343222210137ASMXZYPJSZ]\char95{}\char94{}XYW]RNUYW\char94{}MZc]URNKMOMSJLPSQNVVSUVSUY\char92{}%
+ ]WMWYYUUPTTSRRROKMLMO}
+ \hbox{9==::;;968879877;7;?=HDI\char92{}YTZO[cBH>JI=LQ?JMUA?K<ZSW\char92{}g]\char92{}hcjaY\char95{}FF944323334345445445:I[J7%
+ 8754555866674444446FPG7845553334331222321139KJSFSYY\char94{}ZGSSYZRZW\char95{}[PPc][WVK`bRFNTNXTWNHSPURUROUXWZW\char95{}SG[%
+ XYWPPUWNVORPNPQQ}
+ \hbox{<<<<<;998888:879:8;B<JEV[]GIORCRENULEICAGBJAEKINOSU]PUc`\char95{}]OLL>:6433344544444555336AL>774444555454445446<E:755%
+ 44323444232112212249BNZZUMTWa]ONS]\char92{}S[QWYWLOU\char92{}PWZTXWPTPRSRTRMMKNTXRVYYWYWWVXVVUUISTVRQONMOOQ}
+ \hbox{<<=>;:998888898889:E;BHIOMP\char95{}]ZHOGHCADHBA?@@@CIFQZFGFX\char92{}\char92{}aPOa[OB963334445445568733434=K:7643455%
+ 4444455568?644434333232221121231114;CQNV\char92{}UKIVdY]J\char94{}]][[ZY`V]NLKFPZSTRTYPQSTLJMPMQFLRWZYUZZVVTVUTQPTSTRPQNNPQ%
+ }
+ \hbox{<?<=;998999:979;89<J<FJFOLV`RPIGHHBHIWHDJ@EGKNPNRGPKYdSN\char92{}ff\char94{}OA:653434454645674344445;=:86556645445788%
+ 8844433223322222121222210359GQSXRZ\char92{}XSN`eZWNJOZO[\char92{}W\char94{}cbSFOQWRVTUQLQWWQMNJLMTHPFMUVUVTWQQUSOQSTSLROMMP%
+ }
+ \hbox{=;<;9;999::998:;;:?A<DDGSPPZSEIMNEFBMJFFE@DDGEGM@SVMTPTTdYWUQM>8433455467768446443434;@;876765545789:6432333322222112%
+ 11211111246<ELOTUU`Z[ZFU`]La\char95{}JJ\char92{}[TRYY]\char92{}JKOSSKSOMQQQQNPROPSVV[YLLSVVSLSTTRQSRPPOPPOL}
+ \hbox{>;:9<:899:::99:99<=;<DLOWOURFURDHJKCXZHKNDCBUBLLVKHSRTaOZT``PJD?5535544446554444444535=B;8766455689<75443343332222113%
+ 1221011146;@JNWVYTabRRbQ]YUVb][ML]\char94{}YGP\char92{}\char92{}QDKOHMOIOLQQSQMLNOPQVXTZ[SORQRUSRQRQONNPPNM}
+ \hbox{<<<=;:;;::99989;;:<:?ACKKYRS@OPNKFJEAFFHA@>E@GDNJOODKKHKUadbOLJD84444444435443333333235@?;86777689;755344433322222111%
+ 1100111246:DJSTWZWN[\char94{}K[]RPZTZ]]bUQWM]MNTSPULFHJLMNNMORJONNORQPSSTYVWVORSQPORQOOMONM}
+ \hbox{=@;<:;<9:;<;9;998<@:??CDM]\char95{}JBRKHOAGFALHOJ=CLKJEMS>LWVMBNUdagcLLE@5344433233323233322433;<98778998:63333435522%
+ 221121211111112376:CJRYZYU`Z\char92{}Tb][TF[M]ScUULIJQNCTWPQXMPGDDLHJKMIISQRRSTWUXYTSOXUHPNQSOPMMMO}
+ \hbox{>>=;=<<9;<;::;><;;::><?AIYX>DMLGERXN>KE@EBBBBCIHPMKMUHN[d`QJ\char92{}RG@;83332232133312233442346:78768767753343233333%
+ 33232223211101246:?DQSYSTVS\char95{}bVEUe\char94{}SDGHX\char94{}QOOMFZ[RIMPITOMLKJIKEFFJKJMPRQUTTXUSUXUTTMHPQOQJOON}
+ \hbox{==><<<<:=<<;9><>;:=:;;@DIMV?EPIAROMBAK@D=A?>EEHKAAVDOMTbSDXQOCPD>9753333322333333433434797655456753346344444333433212%
+ 11010125<BJDUYUZOZSE`\char95{}\char92{}NFb\char95{}\char95{}CLBEQIIMIAS\char95{}SDSPDDFPFIJFOMHLLLRONQTTUUVVUVPSTPNHPNQLMNN%
+ }
+ \hbox{=?=<==<:==:;;<<E=<=><:=CRLM?IFOJWDJIII;<>>BFFMGCAIHUGOUCJ\char94{}YINYNLD=6543432223332223322333654454444433322334533%
+ 4332334211111136:CGRCQ\char95{}PTVWWOXRaSI\char92{}Y[J\char94{}DFNJ>MNOZOLGLKDOHFIGJHIKLGHOTTTSSPVROSXQRQPORMKQOOPP}
+ \hbox{B==>>=;<<;=;<=C>>;;<:>DAOGHFMKHIEIIOEA=B=J@BBMVCAJPQCK?E[UGT[TNLC@;64333222222222312222355333333432223333433454332321%
+ 111223479DIVZCYVTYYW\char95{}PMIc\char92{}VTOAGBJJOUSLJJPQCNHOGOJBFAHGHGKLOSRPRSRSURQRNSRPMNQOMNLPO}
+ \hbox{<>?===:<<>=;=AA><;:;?@AHMC?GKKPCLLF?@@D<B?K@@I=AAKPAEDIIHHGUVPOKJ=<65546432222322212122246544344433334333333543322311%
+ 11111348=KUN\char92{}KDZ[\char92{}T\char95{}U]RKJTXKL@E@DKOc\char92{}\char94{}MGPI[FHIGKHMHCGGFIMJSRSQLPTUUSQWPQSQMNQMMOKKP%
+ }
+ \hbox{?>@=>=><><=><<><;;<;@C?MK>?LGRGJMHJHA@?CFMPG@CGCHRDHJGHDDGRTXKTPMB@:67:6321112322221221255545434322322334333332221111%
+ 21127449ANZQT\char94{}TKY]RTT`UGMBUPCHCAEUSX\char95{}\char95{}RDKGQFGFDIIKGCBEKFHMMMNOQTVWUUVSRRRPQOQOPPKLO}
+ \hbox{BD@>===D====<??<==<;<@@LL=CMLGNLGB?IPBIA=KDSENYDOJQE[GA@EELFQ[EP\char92{}FBI><953312223321221222487785442211212122322%
+ 222212101022379ERKH]HWWOL`]aY\char92{}VUKI?HMJLNDSLV\char92{}bWWJHSJCKJKIIFCJHKCILLNOTRRUWUURSRQOSNOTPNMMNN}
+ \hbox{B?>>=AA??=??@@;=>;<<==BGG@C@FGLLSGNL<FEKGDEC?LHCHEEV]DHSCHCIPGTUKOBN?8775442222222221112489:8642222100111222222121112%
+ 132448?CLUSEG[TVKHT\char95{}\char92{}TNM?HHOTIFKINRKW]WQJDGONAJICAIMGIFCDGKMPQOQURUTTQRSRQQORQQOMLO}
+ \hbox{???;@C?=@=@>>>>?B<;=D?BI>@DB@ITIIGALJTBCIUC>AIXF@DX\char92{}ZLMKJACCEEEN[IWL=;9656=632321311120259><:7422221112211110%
+ 12121112234459IOHKWOAMYUIABLRRSFODQD]VTKUAS@YYMMGJIJIG>KIH?@?HEHHIJQMNOPNRTYSTOSTQOOPRSXQJO}
+ \hbox{@?>?@?>@>>@??<;>=:?@A@@C=EE>FCJIRL?MIA?BAE@BNAFAKMFFNGGCJBCCCHKIBNWBIED;=@9567524222212238>;;742112111111221112235252%
+ 2256:FJRKHN[VCPVQeGLDGBBFD@IKXRPRIKEHOPMDLMEGIHAFKIFDCCGJGJKNSNNRPTURRRROPQOONPVQNO}
+ \hbox{=@E?>AAE>@??><<>:;@??=@;?EB?GCIOKBEEAMPBAC@GB@BENKADKDBX\char92{}CEIBCJ@OOIKJI?D;9<976334624224377<:98543222211111222%
+ 12213233369<=IMSTUJQJK@\char92{}TFGQ@BCEF@VHSLYUJGLRGBNKJHHMKIKEGEGMRLIGFHJKOQTORUSTTRURONQRPPQRSQM}
+ \hbox{BBA@A>>?AC?A>=>>>>BC<=@;AKCAEKOLIEHGIKMGQKCBBD>GNHGHB>QZHONJDE@EHHHNIE@@C>B?;7558534134569>87664422331311223522223557%
+ 8<BFCFNTSQTHQCOCXPFAA@NPHRIOKTUaVWGCJKGCMOLDHHDFGFEDCBCGDHIPNMPPPRRRRTQSOORRQMORRQN}
+ \hbox{@A@D@@@AFD>>>?=>?@<=>=<=BCF?IJJICIKLNQMKB>HGCB?IGKLDAUNDUUWD@BJBBGEIODDLFB@=;779548435786:>9::85632222112212332245556%
+ 9B>LNBBUPTGSGCDP>GAFB>IMSLREFZT\char94{}K\char92{}GPDOKFFHKEJJHHHDECBJNMNONGMMNPRQRRSRPOPNORPQOPNTQ}
+ \hbox{E@D??CCDA??@?@??=@A<;==>DCH?LIMJFKJWQLDBFJDBKDBHDIMFFEBVXJDGECLDDCMACHGRHAAJ?=<;69777697:;:;<995763223225531372248776%
+ 9?JRSO?FIUUIQ>G@F>ADEDCNQOPNFHJUGZQRHHROIIKMDIDDGHHDBCFOIDQLJHRTQPTQRRRSRMQRSQPMOUT}
+ \hbox{@@C@DBCCA@??AAB@>B@>=B=HDCGCDDHPEMZKHNKHBG@I?EEBKJBECCODCEKD@OGHM@>>FJBJNNH?C@@@??;?6=<>9<<;=;97:65485233533446568;;;%
+ A@QDTICCIFKGA?BAE<<@LC@AZ[T`QAYPIXOKQ@NLPIJFIIMQOMLMJHGMNLONKONRSRQQQRPQSPNRSRPMPTQ}
+ \hbox{B?>BCBDB>=AJDBJA@??=?IDFEDCEEHNMEGLJLK@MC?AN?=CEEE?NEMADKNOSFLDNKCEDHDG@KFAH@DLIA@C?DA;:>A==@;:9=8;6:7536947:9;98;FA@%
+ HLKEKTBJEFFDC>;A>HF@LUEFL\char95{}SUQDJYIKVOVLGTRNNHLPMKLILHFGKKTHPSOOUVNQORSRVQSNNQUUTOPTQ}
+ \hbox{DFDHDEB>CDDA?ECF@D?=>?AIBCDG@IMMGGLGJEOLIGFACCCHEBDJBIIKLOQDIRALADDDCBBCDFE@ETFL@GEBM@@@F@@=C@;=@;;;?<8<<;78?;<8;=JH>%
+ INGQBKFBB@@CAD?B>DEACVCRDO[a\char94{}SHHKRNKPOCLNKIGIHDGFJJLHFSFRRPPPQRUPSPQRQSSRSQNRTTQQRQ}
+ \hbox{IIEIGD>CCFECDDFFDD?A<C?DHKFAEHSKGIJFLKPJEMGGC?O>?GWECIRFQWPFAEIMANBE@C?FEB?DCHBFNIONJGLGICCJFEEFCDC?F@<;G>9?;>E=AAJJE%
+ AFDEBCB<FC>?>G=?<?O>ABKKMVI`\char92{}ZPPKUMQRLKANSKGGTOHFEIPIPF@MPOOLNQSQRPQSUUOVPPONVPNUQQ}
+ \hbox{IGGGCADGDHFAFHMEH@A?@?DMJL@GLHGKDHJFSHHDRJDBJIMDIHEEHHFHTRCE@CJDJHEAA?BBE@BAEGG@LCGOGMDOHGEIGALJEED?P?BII??C@EI@FFEJB%
+ @CL>D@?AA>=@>=CCATMS@KVESTVNOMUNIRJLHKOEIHFGGGEKEIIKNMOMFMORSRRTQSRRTWSSSQQTOSQRQRP}
+ \hbox{HGEDFFGDBEDGLIGIB?@>=CIFKEAIIDFJCFBIPDGMG@HIUDCFEAEILEDKBGIHACEJNFDNN>@AC@B>DFEDKA@GCIAECIJBH@FCBICFE@@LIF@NEPFDGBEDC%
+ BFED@=AA>??BABFB?GWSDGKB]\char92{}DUL\char95{}\char95{}GXOKSLPQOALJJMKGHHHIAGKMKFPTQSRPSRRSSQSSURQRSRQUTROP}
+ \hbox{FEEFJLFEFFBJGMCBDB@@ABCFEBCJFELDCGIGHHBFLLBSMIFCAALEBBHKLUEG@S>SCMHRJM@AB?A>@D?HADAG?DDDCIHBHBHGBI@EBBDGCTBSCPFME@FAB%
+ ?@??@@@@?D?AGHDGLBXR[I@G]ZDMQYZYOLNHKMJMCFHIGHKMHLNOMNPPHUQRPRQTQQURSQOVRRTSQPSVTQO}
+ \hbox{LDDIKJCEFBJKLKBBCBBC@EIJIHBHGKIAEFLHHLCGSSLTVAJ@OFBFBCHGFCBE@JHLLQPX?ECHC>@=>>?F@?>C?BDB?BCFFEEF@B@>BCF@?E?DCE?H@?A<>%
+ ?>=;@?=>AC>GBSCFR?U`QUHF\char92{}U\char95{}JPS\char92{}TJSJJLIJNOBJKNNLKMOLNIROQKPNTSSRUSUPSRQTUTTSTRPTUUSR}
+ \hbox{BEILNGDIGFGNJE=CACB=?DMFEEBGCMFCDKOGJEJIMCSPJDEE@OLDCJADGK?C@I\char92{}PROQG@KKSI?A>9=@DC@@B?B@F@BABJHDB>A@>CBB<B>A@?%
+ @<B<A>:<=>=<?B?>LEDEEIPDQLP\char92{}O\char92{}LTFX\char95{}VLONOJQDGLNERIIANOJNOLPNOLIMMNPPQUSRRTRTQSRSOWTTUTPTVVUU}
+ \hbox{EKMLIGGECEJPKFFDGDA?DJLKLCEDGFFHDMJINHNQZUDRDFOHHFHCABGDFJBE@LQGLKBBAGTKA?>?<<=@AA?><;=D@@BBBEAB>A@>??@=?;><=;==;><=:%
+ =;<>@BA@GETEALVOHPEV\char95{}K]HCR]RVSUMPHEIKKKGJJNJNJIHHMEOOPNPPTPTQUQRTTSTQRUSSRSRSPOSUUV}
+ \hbox{JLKKKECCLEIOCJHFEB@ADMPIIHCFEIFLGIIPFJOYSbOGNOJEHEV@HBAOGF?EADEFNLQ?BHUE?A?A@BA@CC??98;?<>@A@A@=<<=<=>@<=:=9;9<::?<=9%
+ ==<BALFEJGMOCNQTKXEDMYTTASSWIQNGGGGKJMGHGE@@ONHGGHHRJKRORPQRTQQQYSUOSPMQRWQQRTRVTUX}
+ \hbox{LKHIIIGHKHNHKHEEGBDAHNLKKKEHHLJKGHLKGKNQIA@ESKSCOOIE?CKDECCHBKABHOFCDGFBIDNSE=AB@?@=979<;<:?9;<;8;<<8;;;<;=9;9<9;:;;9%
+ =>C>?ON?BGUOTFYNOCSCFVOaTOMSKPMSHBGNKNMNKMFFGHHNOVRPOPOLSSQQSRPSTTSPRRSTRRRTTTSUUUV}
+ \hbox{OJFFKMFKMJPIHEEHHFBAJNKLICIJIGHNGIPIFLSNB?NRLKDJMPHI@AI?HBJ?CBDDBBCCCIGLICJI?D@?FCE?97699;;<8::968::7:688;=8:8<:<::;;%
+ >@E?DJWB?HLQRIHXNHNBKSUSONYPLKNQSDLMGLQPOLLHGMKMKLOPNNOSMVUURSTUTUSQRTSSSSRUVTTTUTS}
+ \hbox{LDINNHGNLILJFFIEDEDGKKHGGMMKKHLPCGFHRMOXNISPHODPHGGDAD?EDDCGFBEDDFGFCFEIGHHEFBDA>@C@;;:79=99797778<86:77<=<:<9=:<<;<;%
+ >DCJCDVHGGDSRUFNXNKJCXPS[FXQNHLGPDNOGHDKINPQRJNRPPTQOOPPOSWUUSOPVTSQRQQOTTRTTTTSTUS}
+ \hbox{GHOKLIJLKHKJEIFGGCFILIJJFKLLJFNIEEGMNIQKTMONLSLSHM@GAE@CCF@FA@EABEBBBGEFBILGCECCCF@B:89<?:;9;98779<87:799;;=;9==<=ACB%
+ CJLPABMGAQBSRYHIQVKGIK\char92{}UPKMNNEIPPPIMNGGKIFHPMOQPRRVWSPPTRTVSQSTOSVTSTRPPRSQTUUSRSSU}
+ \hbox{IJNNIOJIJHKMHFKACIGMLKFKIJKKJGOGEGKPWVLPQQWQSNUSKIF?@BEEFDF@BED@DCCDCDECKG?FCJEBBCDBBA;::<AB=::68;<9<:9:8<:?<<;@?E@H?%
+ JNOJFHELJNUERUKSLRKDGRWRQLGKMBXMJTLHIGKIILRMLLHIJNPSRPLRNUUVURRORSVUTSSNOTQTUXUTVWV}
+ \hbox{IOMLLOKMNKMKFFEGHHFHHJJMJHJJJHQFGHLOTRMOPJWKUJROFOGN?GAFLCG@CFDAAABBABABDBEIEFCBFIBD??=;>:;<;9;::=<;;;9;;A<@=<=BAHAJB%
+ EDOQLODHHHWLISGVPFTEDNMPHKKIOKIQJUMOQPJFMHKNOMSUSRRRQUSPPSUWQSTOPUURSTRQRRRSUYRSTUT}
+ \hbox{LRPLPJPJLJJPFHGEKKHEJGIJOJLMNMNLLGEPQMOLJTVNTSSLDUFOCHGCM@ID?AACDABG?@DBCGGKHBGB?GMGBBF>==;98=;:@??<=;=>@C;ABE?CEFFLI%
+ APMRPFIAHLTKRJRLSUGLKFFFIHLILIBFNSPLQQSQQNNPUPQRYTSPRPVQTOR[UUVSNSTRPYSPQTUUQUVVUUT}
+ \hbox{MQNKILRMMJKKHFJGJJJMLJIOJHKOHILHKKNOPSMJR\char92{}QKT\char92{}NGT\char95{}BKFDIBCEACBB@DAA>CAC@CEFDBBFCBAA>DHIEAE@?:<%
+ ;?=D??@D;===?<@CKDCMENHLCLGMPGTFGIRJOQLJOLNHICKIFKIGFGDEISNFMRNQTLMLNOORQNSPTWVQQTXYURTNRTVLUTVVTUVUSWY\char92{}YVU}
+ \hbox{IQPMMPRPQHLJJHHIEJIJOLMNLMGOHGMLMKNVMNMPPURPWTJ]X\char92{}BSIEBNFDE?AEAE>@EA@A@AECFAHDBA;@BA?HHDIA?DC=>:@ABDK?BFBB@BC%
+ KBHGAEBHC?GMMDFM@LRGJNNNINAFE?JJFBKGOFBHKQG@GPWSRRQKNVOUQURTTRVVQT\char92{}[YYUQSTSQRSTXXTYWSXZ\char95{}YVV}
+ \hbox{QLMTORTOLKMMKFJJGMMNLONKKLLILOOMNJROMPNSTVVGMWMZUTHQFFICD?ABCBB@BDGA@>JH@D@BCBDA>A>?>>@?CH>=C??A?FBIC=ACD?BD@@??BB@BC%
+ D?AFIHJPBEMHNJPK?CFD@FGCHIFKNNEDPFIMKURNRRLNRROQRPRVWWXWSV[YWWVSTPSNUUWWYXSWVUY\char92{}\char95{}ZY}
+ \hbox{POQMOSQRMMMKMLLJKLONORRMMOKKMPQNQKRPPNPVUSLPUQLYWT[SMIMKBJADAC@AC@AA?DCAAAA?@B@BGA?@@@@A>=@CCC=?@F@EB?@@@=;<>==?@??A?%
+ @AB?FHGNEFBIEFECC@EFE@>BGHADNOIGNLMJMOUTTQPQNURQRUSQTVVXRSTWYXXQRPNSTTVY\char92{}WUVUVW\char92{}]\char94{}[}
+ \hbox{RRONQQORMMNPSNMOLONLQPQLPILPPOPLPLPQOLPVWLUKJSKRTWZLNJPLFHCA??ABCDCA@AACAB?@C??@@BCCD@@AA?@BB?=@AAAC@@@>A><<=?@A????A%
+ ?@CADDBCBEEC?FC?B?@EBG@BCHHEINOLFILLHLTUUTUUVVWPRUVVYUZ\char92{}RUVTZWZRVROVYRX\char92{}XVUVYX[]XW[}
+ \hbox{ONROPPSQMHOTOONQLOROMNLOOMOMPPPORNONPQSVMSSPWULVQUYKPLEJIPK@CC@BB@?@DAA@AAA@AA?@ECA@@AAA?AA@@A>>@@?@?@?@??><>A??>>>>@%
+ ??BCGHFA@?A@A@A@AAA@ACD>FEEBHGMMMLRLIPYXTVWWTXXUVTVUVRYXVTYUYY[UUUQUZXWXUVXUSXZ\char92{}\char92{}\char92{}\char92{}}
+ \hbox{ORPSROUONJRRMMNPPRPNNNMNNPLNPPQMNQTPMPTORVWPW]I[NMZOPRIPFOECEEA@ABEDA@A>A?C?ABC>?@@@?AAA??B@A?C>@>?==?>>>?>>>>=>==>>B%
+ A?=E@BB@?@>>@@B>BC>A>FEAFCECPDLKPGMLJKXYX\char92{}VVTV]\char92{}VXYZVXYVZWWTYXQVUVRQ[ZW[VWZWVYZVX[Z}
+ \hbox{SRPRRTQORQSONNQONSPNLMKNNMNOSQLLOOSRORSSPSTORYRWNN[RBTVOJICABA>@B@@ABA?AAB@CAA>A@??@?AA@@>AF@?ABB@??@?>??>>=>>>=>>>?>%
+ ?>@??@@@@@?@?C@@??@>@EBCBJCKMBLQNMKLNSVWU[WYWYZ\char92{}][XVSXW\char92{}ZWUUYZQ[ZUTRW]XVX[Y\char92{}RUXZXVZ}
+ \hbox{YNTSTRQSONQPLOORNQPPHLQNOSOKPXOJOQOOTPPQPYVPUST[MKTPJO]TLCPCA@?>?BE@>@?@??A?A?@>C>>@B>A@B?@>A=@EKAC=@@?=>?==>>><@?=>=%
+ =@AC@>???>B>@B?<@?@A?EACCLHKJMMITNLPTVV\char92{}Z[YYWV[\char94{}\char94{}`ZTRTY\char95{}ZYSYYYS]YXRTTXV\char92{}\char92{}]b%
+ ZXX\char92{}Z\char92{}VY}
+ \hbox{RSUUUSPNPQPMROSTRSPPPLMNONSPRTSPNOTQWRPVSNTQTTZXROJOPFcKOHTGE@@@?D?@C@A?@?@B>A????>>@???@??>@>>>?@??>@@??>???>?>>=>?>%
+ >A??=?CB?>==D=<??=>>@B?CFLLQFKQPTQQQVV]\char92{}X\char92{}\char95{}\char92{}[W\char92{}X\char92{}Y\char92{}WRX[\char94{}XTV%
+ ZW[YZZVTXWZYY]\char92{}ZY[X[Z[Z[}
+ }}%
diff --git a/fonts/halftone/picture.tex b/fonts/halftone/picture.tex
new file mode 100644
index 0000000000..2cf4fee005
--- /dev/null
+++ b/fonts/halftone/picture.tex
@@ -0,0 +1,69 @@
+ \hbox{\vbox{\halftone\offinterlineskip % machine-generated by TEXPIC.
+ \def\BHT{\hbox\bgroup\ignorespaces}
+ \catcode`\^=12 \catcode`\_=12 \catcode`\.=\active \let.=\egroup
+ \catcode`\,=\active \let,=\BHT \catcode`\/=0 \catcode`\\=12
+ ,ccdggfcbabbcfeeddeccehhlmkkklljdejceggiagjfgbecbbadiiXNQLEHDGHJL.
+ ,dcdggfbbbaadeddcddbdfghkmkkkklljjicfhiiaiiggbddac`fkcQLQLEGGGHKL.
+ ,ecbfffcbbabdeedecddfgfglmkkkjkllmgc`ghgcjhfdbebaaahk\NLQLGGHGKMN.
+ ,cccfgfdaaaadddddceffdcekmkkkj_PI?GME;FNckfgfbbb`_djgVLLQMGIIGJNM.
+ ,dddggfbbbbbeedcdcedcccdjmkkk\GHEMHEJH><86Fcfdcc`_glaQOMPLHIHFJNL.
+ ,ddcggfcbaabdedddcdbbbbdjmkfHH?GQLQNLNNLB<@=NedbaaikZMLMQKGJHGJNM.
+ ,dbdffebaabbddeddddccabbjlgWSLLFKIRQLJMTKMHKDKda_dkhUILNQJIKJILPN.
+ ,dbeggfdbbbbdfddddcccbbchdJFGISKTMPWRQLWYVOKGDBaahlaTRQUWOKMRNQUT.
+ ,ebdggecbaabdddcedccbcbaUHAIKNPTUNROORQYXYUWVPIOdij[TWWYZTSSWWY\\.
+ ,edegfebabbadeedddccbbbRRVOJLHCJOOPSVT^WY]XTTTLDakbQKONNRMOST[\^\.
+ ,dcdfgeabcbaceddcdbccbZ[VWYJJMWMTRLS]]bZ_a`Z^QTQ9l^HHMNONJRYYYZ\\.
+ ,ecdgffcaaabdecdcdccb_d\YVQUWQ^a_Yf`^^lkha^_^SLWB\YHHLNONGPXXVWZ[.
+ ,ebdgfebaabbdeddccbcd^bYZQ[W]VZbjaijgdgonhhiiWJJEWOJJLNOLHQXVVTY\.
+ ,ebegffcbabbdecdbcbba^X`a\WC`hjdbekleknnopjkifXGRRMHIMLPNIQVVWUX\.
+ ,ecdgffbaaabdedcdbba^_ef_`iegcfglnneihlnonmlii\KQULGHKJOONUTVUTY[.
+ ,fcdggebbaacdddcddbb^_gbhllfiknhnoinlmlllmmlih`Q]SKILJLPQTXTUVTVZ.
+ ,ecdgfecbbabdedddddba\ehjljiklmlmnnmilkghcjgicb\YUJJJMRYTQYXUVWWZ.
+ ,dcdgfeab`bbedddcdcb\a]flmjijldecnommjf]jcTf\bdbbELLNSU^TPWYWWWWX.
+ ,fcfggeababbedddcdbc]^g`gm_fa]hgaemkgjhgj_UhIb^f^SMJQXY]TQYXZYVYZ.
+ ,fbeffebabbbdecdcdcbb`ZSbg]b\Ya_b^gjijgjibajWdY]ZLNJRXZ]SNY][YWW[.
+ ,fbeffdcbaabdddddcbabhgi_b`]^bbhdb`dgfdjaagjjbV[ZLMLWXV\QR[^^\XY[.
+ ,ebdffdcabbbededdccc`mlnmjecfihhijjikkdj^efije_]_NNPWXYZRU^]^[WUZ.
+ ,fcegfdbbbbcdddddccbbinonnjhgkinkmnlnmiidegfkggjZVWVYY\\UW]^\ZVU\.
+ ,ebdffecbacceeeddcccbginnijjjkkkjklnnnijjiihmjjfdRUV^^^aY\_^]]][^.
+ ,gdeggdbbbbcdededddbcggYNVWX\]ii_`b_cmljlkkhkibi\NKQYY\_SW_ZZ^[^].
+ ,fdegfebabbceeeeddddcdh]diZYZYYfjgacllihnkmjbifhSNKNTY_^RV^^^^]^].
+ ,fbfggeccdceeddddeddcceghggaZ\be_fefjljhjjmnkjegQKKIOY^_RT_^^^\\\.
+ ,fcegffdbcbdeddedeecbchnZm]dNVgggjmpohfeeiglljkZNJHFPW^^RT^\^YY[^.
+ ,fcfhfdbccbcfeeeddddcdcZgibUO[]RcWelifcegijigflLLJIIOU\_VT_]\ZY\^.
+ ,edfgfebccddeeeedeeedcbTYXRUP^\XTbdd\`a_ggekebPQLLJHMOX^VW][]\YY\.
+ ,edfgfedcdcdfeeffeededdTQOOVU_\WOQTW[_afkflhaSOQJLMKNRZ^UY[[_^YV].
+ ,fdfgfeddccdeefeeeeefbeTOKYSY`aWJQVY]afeklihbSNMJJKLMT\^UY]\_b\Z^.
+ ,fdgfgfdccddfeffdfffeedTTTaQZbd^TSUW]bg`_fgfQUPLLLJKOQX]UX]\\]Z[^.
+ ,fdgggedccdcfefeefededc\Zaa_jij^^XY\`de^[X\VPRORPLKJLNU\VX^[\[VY^.
+ ,fdfgffcdcbdfedefefeeee_bg\W^Z[[_ab_ciadXUNVVYWWUQLJMOW\TY\YZZYZ_.
+ ,fdfggfdcecdeeefeeefedfebaidVY\]abbdfidaZXNWTWVVTQJKNOXXTZ[Z\]ZY\.
+ ,fdfggedddddffeefeedeejj_[Y`KHYlok`degfa]`QYWYWVTSNORW\\T]]]a^WVZ.
+ ,fcgggfddddeffeeffeeeegie^YaYV]ecZ]bfgda_`PZ[ZZ[WUQNRV^[Z_bb`]ZZ^.
+ ,fdghgfededffffffeeedc[jh`\]]_acaa_fggcfhaXURTVYUMLKMR\_Y_cba]Z]a.
+ ,ffhhhgedddfggffffgfee_cil]UTQWX]^bfhhjhi`XRSRPURKHJKQ[\UZ]]_\[\\.
+ ,gfgjihfeffgiggfgggfegnlimo[VUY\abdhjkiiiaMQTUPTSJILPRVWRTVUWVSRR.
+ ,ggjjjiggfgfhhhggggffjljjmojbabdgjllljhjj_GRUVQURLJPURXWRQSRQQPPQ.
+ ,fikjjjhgfgfghghghhfhmnjgjnfgZlnnmlkjiiiiaRGPWQSRKKVWV[ZRTVSURSRQ.
+ ,chkjjjggggffghghhgfjnnmlmdliiY^lljjjjiiib`d[^_TQKNWWV][RWVVVUTSS.
+ ,]`gkkjihghhhjjjjjjijmnoldfijhkXY\gijid_]fjihffe`QMWUV[ZQUVTSTTRT.
+ ,\^]ejllkkjjjllmmlmlllnfcdfghijk\]][\\[gkmhjhhgfda]`^X_]TYWVYYUUW.
+ ,ab[\cegihgffhjjkkkkibecddfhfljjofgfhikiiiljigfiijkklg\[UZYY]]ZYZ.
+ ,d```a``cfeffijjjj`^edegdfgjfkijnogfhhhgiihijjjklmnoobnYQWYY\[ZYV.
+ ,hifiie__egggijj]cbfeecegfflgfnjinofggiiihhhfgiljjndhdhbRXZZ][XXX.
+ ,hklllic]ageeffNYcfgfgffggfkifijihmjhhhiiiijjjijlmmmiZQESY\^][[[[.
+ ,hghlmkib^cdeYY^dchhffgeggfhmhiiignjihihhijijjkllnoni`YXFDYZ\WWYZ.
+ ,a]bkmkigdjmc^`bbdigfggfhgggoiijjkhljjhijijjjklmnonheddaXRHK]YUXY.
+ ,c^`knihighl[__adgjhffghiiiiimjjikkjjiikikkkllmooihhgfgec[XOHc_ac.
+ ,gbbjnllmkjk[^_baiiggehiijiiholnomlklknmikklmmoohgghgfiifea_[W^^_.
+ ,kghllnooona^___gcliijkddfhiijommihnnmnhipomnoniggghhhhhijjced]ZZ.
+ ,nonmlmopppd``a`lgakifhghijjjjjllmjlklkkjanlkiggihiiiiiihlkiZha]Z.
+ ,pponlloppo`a`bdllkgfddgijgebblkmilimmkUACG8@iiihghiiihhnmiifWg\W.
+ ,pponllmopmabacdlllkkkkjie^bcbfajominXlk`=L=3BEbfgiihhgjnjijj`W[U.
+ ,ponmlllnolbbbadkmllkklkfdhbhdghimmkiaO?HO>G8?CELhjihghkoiklje[YY.
+ ,onnmlmmmocdcbacjlmmlmmlcgiijgefkjopooonNA>7=BBDC<jhghlooillki`QX.
+ ,nmnmnmmmobcbbbbjlmmmmjjkljlgiielilio\[IZWPRS?D4BDWghilokilllkg\[.
+ ,mmlkllklneddbbbjmmmllfhjkillkgjjb\TYpKTVO;JJ<7I;3FkRmoohlnnnlkcT.
+ ,lllllllnnc`dbcbblmmmmlgijiggfhhkR@TCYI[HghUWS?@DCFBBEA?mnoonmkf\.
+ ,pponmmnnjb\kjfdekklkkijkjijhiigiILAP<LIL^VNSHGKLBABJ>BGbooonnmia.
+ }}%
diff --git a/fonts/halftone/pix.tex b/fonts/halftone/pix.tex
new file mode 100644
index 0000000000..5e0a469535
--- /dev/null
+++ b/fonts/halftone/pix.tex
@@ -0,0 +1,326 @@
+% --- ------------------------------------------------------------------
+% --- Halftone Output from TeX.
+% --- ------------------------------------------------------------------
+
+% --- This file should be formatted by LaTeX and printed with an half an
+% --- inch of top and an inch of left margin. The page layout should be
+% --- compatible with TUGboat.
+
+
+% --- ------------------------------------------------------------------
+% --- Macros and mnemonics.
+% --- ------------------------------------------------------------------
+
+\def\|#1|{{\tt#1}} % teletype text
+\def\cmd#1{{\tt\char92#1}} % for `\command'
+\def\fig#1{Fig.~#1} % references to figures
+
+\def\mc{\small} % medium caps
+
+\def\ASCII{{\mc ASCII}}
+\def\bigTeX{{big \large\TeX}}
+\def\FTN{{\mc FORTRAN}}
+
+\def\VAX{\leavevmode\hbox{V\kern-.12em A\kern-.1em X}}
+\def\VMS{\leavevmode\hbox{V\kern-.06em MS}}
+
+% --- ------------------------------------------------------------------
+% --- Document style.
+% --- ------------------------------------------------------------------
+
+\nofiles
+\font\halftone=halftone % the halftone font
+
+\documentstyle[tugboat]{article}
+
+% --- ------------------------------------------------------------------
+% --- The title.
+% --- ------------------------------------------------------------------
+
+\title{Halftone Output from \TeX}
+\author{Adrian F. Clark}
+
+% --- ------------------------------------------------------------------
+% --- The article itself.
+% --- ------------------------------------------------------------------
+
+\begin{document}
+ \maketitle
+
+\noindent Don Knuth's article in \TUB\ volume~8 number~2 described the
+development of a number of fonts which allow halftone
+output---pictures---to be incorporated into \TeX\ documents. This
+article chronicles the author's experiments into halftone production on
+a particular computer/laser printer combination, \VAX/\VMS\ and the
+LN03. It is important to understand that the picture is actually {\em
+typeset,\/} not just inserted into the final output by some
+printer-specific \cmd{special} command; the following results can, in
+principle, be achieved on {\em any\/} output device using a perfectly
+normal implementation of \TeX.
+
+In the image processing field, where the author works, technical reports
+are invariably crammed with halftone output. The conventional method of
+reproducing pictures is photographically. This is slow and
+expensive, particularly for internal reports with small distributions.
+Moreover, unless great care is taken over the photographs---using a
+flat-screen {\mc CRT}, calibrating films, standardising the processing,
+and so on---much of the visual impact can be lost. Hence, the
+possibility of incorporating imagery into \TeX\ document without
+recourse to a dark room is very attractive.
+
+A great deal of work has been carried out into the properties of the human eye.
+One result is that the eye is only really capable of distinguishing about
+64~grey levels, although it is very good at detecting boundaries between
+regions of slightly differing grey level (see, for example, {\sl ``Digital
+Image Processing''\/} by R.~C.~Gonzalez and P.~Wintz, published by
+Addison-Wesley in 1977). Another result is that the eye is much more sensitive
+to boundaries in dark regions than in light regions.
+
+The halftone font used here is more or less the same as the `double-dot'
+font described by Knuth. It has some 65~different grey levels,
+represented by the \ASCII\ characters `{\tt 0}' (white) to `{\tt p}'
+(black). In principle, all one needs to do is to convert the grey
+levels of the individual pixels (``picture elements'') of an image
+to the appropriate characters of the halftone font and sprinkle in
+a few \TeX\ commands to ensure that the lines of the image are lined
+up in the output.
+
+The only minor complication is that this sequence of characters includes
+`\verb"\"', `\verb"^"' and `\verb"_"', which have special meanings to \TeX.
+These must be treated specially. Knuth's approach was to delimit the picture
+data between macros, \cmd{beginhalftone} and \cmd{endhalftone} which disable
+the special characters in a similar way to the `verbatim' macros in Appendix~E
+of {\sl ``The \TeX book''.\/} The approach developed by the author is much less
+elegant and builds larger disc files, but does not require special-purpose
+macros.
+
+Each line of the image is built up as a single \cmd{hbox}. These
+lines are stacked into a \cmd{vbox}, with the inter-line skip turned
+off. Finally, the \cmd{vbox} is enclosed in another \cmd{hbox}, which makes
+it easier to handle the picture in constructs such as
+\cmd{centerline}. The scheme can be summarised as:
+
+\begin{verbatim}
+\hbox{ \vbox{ \halftone
+ \offinterlineskip
+ \hbox{...}
+ ...
+ \hbox{...}
+}}
+\end{verbatim}
+
+\noindent The \cmd{halftone} command is used to select the halftone
+font, which would be loaded with a command such as
+
+\begin{verbatim}
+\font\halftone=hf300
+\end{verbatim}
+
+\noindent assuming the {\mc TFM} file is called {\tt HF300.TFM}.
+
+A \FTN\ \|SUBROUTINE|, \|TEXPIC|, was written to output images to files
+in this format. The image is represented as a \|REAL| array dimensioned
+as \|(M,N)|, where \|M| is the number of pixels per line and \|N| the
+number of lines. (The use of a \|REAL| array to hold data which are
+usually 8-bit may seem a little strange, but this representation has
+many advantages---for example, when Fourier transforming an image.)
+
+Since we would normally like our pictures to have the best contrast,
+\|TEXPIC| scans through the image to find its minimum and maximum, then
+scales the output to make full use of the grey levels in the halftone
+font. For most purposes, a single
+
+\begin{verbatim}
+ CALL TEXPIC( PIC, M, N, FN )
+\end{verbatim}
+
+\noindent is sufficient. (\|FN| is a \|CHARACTER| variable or quoted
+string holding the output filename.)
+
+Of course, there are occasions when we would like to compare pictures,
+so fixing the contrast is sometimes desirable; hence, \|TEXPIC| has
+associated routines to fix the range of intensities (\|ZRANGE|) and
+re-select automatic intensity scaling (\|ZAUTO|), which must be invoked
+before \|TEXPIC| to have an effect. Similarly, \|TEXPIC| can plot
+negative pictures as well as positive ones: \|DONEG| tells it to output
+subsequent pictures as negatives and \|DOPOS| returns it to the default
+state.
+
+Inserting the picture into a document prepared with plain \TeX\ is
+quite simple, using commands to generate a `float', such as
+
+\begin{verbatim}
+\midinsert
+ \centerline{\input picture}
+\endinsert
+\end{verbatim}
+
+\noindent assuming the picture is in the file {\tt PICTURE.TEX}.
+This command sequence should be typed between paragraphs, when \TeX\
+is in `vertical mode'. To draw a border around the picture, as for
+the examples presented here, one would define a macro \cmd{border}
+
+\begin{verbatim}
+\def\border#1{\vbox{\hrule\hbox{
+ \vrule\kern3pt\vbox{\kern3pt#1
+ \kern3pt}\kern3pt\vrule}\hrule}}
+\end{verbatim}
+
+\noindent The picture would then be set with
+
+\begin{verbatim}
+\centerline{\border{\input picture}}
+\end{verbatim}
+
+The procedure with \LaTeX\ is somewhat different. The most sensible
+approach is to use the {\tt figure} environment ({\em not\/} the {\tt
+picture} environment)
+
+\begin{verbatim}
+\begin{figure}
+ \centering
+ \mbox{\input picture\relax}
+ \caption{...}
+\end{figure}
+\end{verbatim}
+
+\noindent This generates a `floating' figure, which usually surfaces at
+the top of the next page of output. The \cmd{relax} following the
+filename in the \cmd{mbox} command ensures that \LaTeX\ knows where the
+filename ends. To draw a border around the picture, replace the
+\cmd{mbox} with a \cmd{fbox}.
+
+It is traditional to test out new image processing techniques on the
+`girl' picture from the image database of the University of Southern
+California's Signal and Image Processing Institute. She is shown
+in \fig{1} ($64 \times 64$ pixels). The output was plotted on a standard
+{\tt LN03} laser printer using version~10 of Flavio Rose's {\tt
+DVI2LN3}. For those unfamiliar with the {\tt LN03}, it is a 300~dpi,
+white-writing laser printer based a Ricoh mechanism, supporting the
+down-loading of fonts into on-board and plug-in RAM cartridges. The
+quality of the picture does not appear to be particularly good, but this
+is due to the comparatively low spatial resolution of the image data:
+$256 \times 256$ pixels are needed to give a visually satisfying
+result---as we shall see.
+
+\begin{figure}
+ \centering
+ \fbox{\input picture\relax}
+ \caption{The Ubiquitous `Girl' Image}
+\end{figure}
+
+Unfortunately, the standard \|LN03| will not output images much greater
+than 64~pixels wide: if one tries to do so, it generates ``band too
+complex'' errors and produced broad white bands in the output. The
+actual cause of this is not known; however, it seems to be because the
+\|LN03| buffers the plotting commands internally rather than writing
+dark pixels into a bitmap. When the print operation actually starts,
+the driving microprocessor cannot translate the commands sufficiently
+quickly.
+
+However, the \|LN03+| device (a field-installable hardware and firmware
+upgrade) has a full-page bitmap, and is quite capable of printing off
+large pictures. (However, a little care is needed in setting up the
+terminal line to which the printer is attached.)
+
+The is another problem in producing these large pictures, and it
+concerns \TeX\ itself. Since \TeX\ was designed for typesetting text
+rather than pictures, its memory capacity is too small. Increasing the
+size of the memory (i.e., \verb"mem_size") is obviously feasible, at
+least on \VAX en, but there is a snag: \TeX\ was written to use 16-bit
+integers for subscripts into the memory arrays. However, the change file
+mechanism of {\mc WEB} and the careful way in which \TeX\ was written,
+makes the conversion of 16-bit integers to 32-bit integers quite
+straightforward. (It is also necessary to disable some of \TeX's initial
+consistency checking.)
+
+When the author did this, producing a ``\bigTeX'', he found that the
+16-bit and 32-bit versions of \TeX\ were identical in almost every
+respect. The executable file was a few percent bigger, probably due to
+the increased memory space rather than the different integer
+representation. Likewise, the string pool and format files were slightly
+larger. However, there is {\em no\/} perceivable impact on execution
+times. (In fact, the author replaced the 16-bit version with \bigTeX\
+without telling users---and no-one noticed any difference!)
+
+This may seem a little surprising at first, but an examination of the
+(pseudo-) assembler generated by the {\mc PASCAL} compiler provides the
+answer. The machine code generated for variables declared as \|0..65535|
+(or, indeed, \|0..255|) is {\em identical\/} to that for, say
+\|0..262144|; 32-bit integers are used in all cases. (This does, of
+course, not apply to {\bf packed array}s.)
+\TeX\ is very frugal in the way it handles its memory arrays,
+always re-using the same region if possible; this keeps the page fault
+rate low. Since the \VAX\ initialises all memory to be `demand-zero'
+when a program is loaded, there is no increase in the system overhead
+due to unused regions of \TeX's memory.
+
+\begin{figure*}
+ \centering
+ \fbox{\input boat\relax}
+ \caption{A $256 \times 256$ Lake Scene}
+\end{figure*}
+
+The version of \TeX\ at the author's site has a large enough memory
+capacity for four $256 \times 256$ pictures (or one $512 \times 512$
+picture!) in addition to the usual text, fonts and macro definitions.
+This allows users to put a few images into floating figures, as
+described above, without overflowing \TeX's memory. A $256 \times 256$
+picture is shown in \fig{2}.
+
+Indeed, to a certain extent, the physical size of a picture on the
+printed page determines the maximum number of pixels which can be
+plotted. Images of $512 \times 512$ pixels are more or less standard in
+the image processing community, while satellite images used in remote
+sensing applications have several thousand pixels on a side! Hence, if
+the image size exceeds a proscribed maximum (256~pixels, say),
+\|TEXPIC| must {\em interpolate} between pixels to reduce the size of an
+image. Another associated \|SUBROUTINE|, \|TEXMAX|, is used to tell
+\|TEXPIC| the maximum number of pixels which can be output. If the \|M|
+dimension of an image exceeds this value, the image is interpolated down
+to this plottable maximum number of pixels.
+
+\begin{figure*}
+ \centering
+ \fbox{\input mandy\relax}
+ \caption{Mandrill Image, Reduced to $200 \times 200$
+ Pixels from $512 \times 512$ Pixels}
+\end{figure*}
+
+There are many ways to perform the interpolation. The theoretical
+optimum is to use a $\sin x / x$ interpolation function (usually
+achieved via Fourier transformation), but this is slow. Cubic or linear
+interpolators tend to be used in practise. Recognising that \TeX\ output
+of a reduced $4000 \times4000$~pixel image will inevitably be
+inaccurate, \|TEXPIC| uses a linear interpolation scheme. However, since
+linear interpolators usually blur edges (a particularly undesirable
+effect), it attempts to reduce the blur by using a {\em
+context-sensitive\/} interpolator. This interpolates between triplets of
+pixels at right angles and selects the value of the line with maximum
+gradient. For example, \fig{3} is a $200 \times 200$~pixel image, reduced
+from a $512 \times 512$ image in this way.
+
+All the software described here is available. \|TEXPIC| and supporting
+routines exist in both standard \FTN\ and \VAX\ \FTN; the \VAX\ version
+does clever things with filenames and channel numbers. The \bigTeX\
+change file is, of course, specific to \VMS, but may be useful for
+people making similar enhancements on other machines.
+
+
+\subsection*{Enhancements to the Software}
+
+Since this article was submitted to \TUB, a few improvements have been made
+to \|TEXPIC|. Firstly, the code used an \|ASSIGN|ed \|GO~TO|, which is no
+longer a part of the \FTN\ standard. The latest version of the routine has this
+section of code in both the places where it is needed. The second improvement
+is to output the picture in a more concise format, along the lines of Don
+Knuth's macros in \TUB\ volume~8 number~1. The files written in this new format
+are fully compatible with existing \TeX\ documents. There has been no
+perceivable change in execution time.
+
+Another support routine has been written, too: \|ZSAME| tells \|TEXPIC| that
+subsequent pictures should be scaled with the same factors as the last picture.
+(An error message is generated if no previous picture has been plotted.) Thanks
+to Guy Facius of SFEBP Paris for this suggestion.
+
+\end{document}
diff --git a/fonts/halftone/pixkit.post b/fonts/halftone/pixkit.post
new file mode 100644
index 0000000000..2e7ee5ea20
--- /dev/null
+++ b/fonts/halftone/pixkit.post
@@ -0,0 +1,1817 @@
+$! Archive name: DRA1:[TEX.PIX]PIXKIT.POST;
+$!
+$! This file is a ``DCL archive``, a VAX/VMS DCL command procedure, analogous
+$! to a ``shell archive`` on UNIX systems. It is intended primarily for
+$! sending a set of files across a network in a format which allows them
+$! to be restored. On VMS systems, the archive is restored simply by typing:
+$!
+$! $ @archive-name
+$!
+$! The format of the archive is as follows:
+$!
+$! 1. As you start reading the file, lines which start with a dollar ($)
+$! are DCL commands.
+$! 2. On DCL commands, an exclaimation mark (!) marks the beginning of
+$! a comment. In the DCL archive, this only occurs as the second character
+$! on a line.
+$! 3. Each file to be created is preceded by a ``CREATE`` command. The
+$! text following the word `CREATE' is the name of the file to be created.
+$! If your system allows it, you should create a new version of the file.
+$! 4. Filenames consist of two parts, the name itself and the extension.
+$! Either part may contain zero to 39 characters, which must be dollar,
+$! underscore (_), hyphen (-) or alphanumeric; a hyphen may not be the
+$! first character of a name.
+$! 5. The `CREATE' command is followed by a line containing `$DECK' only.
+$! Lines of text following the `$DECK' should be copied verbatim to
+$! the output file.
+$! 6. The end of the output file is delimited by a line containing only
+$! `$EOD'.
+$!
+$! Note that lines starting with a dollar may occur within `$DECK'..`$EOD'.
+$!
+$! The following two lines contain the ASCII character sequence from
+$! exclaination mark to the end of the upper case letters, followed by
+$! the remaining characters up to #126:
+$! !"#$%^&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ
+$! [\]^_`abcdefghijklmnopqrstuvwxyz{|}~
+$!
+$! This archive was created using DCLAR version 0.00--0
+$! on 15-JAN-1988 14:52:26.56.
+$! under VAX/VMS V4.5
+$! DCLAR was written by Dr. Adrian F. Clark (``Alien``), Essex University.
+$!
+$WRITE SYS$OUTPUT "creating BLURB.TXT"
+$CREATE BLURB.TXT
+$DECK
+This DCL archive contains all the required bits and pieces for preparing
+pictures for plotting by TeX. When executed, the archive creates
+the following files:
+
+ o BLURB.TXT this file
+ o HALFTONE.TEX user-level documentation (for LaTeX)
+ o PICTURE.TEX picture from TeXPIC used by HALFTONE.TEX
+ o TEXPIC.FOR the software. Note that there are two versions
+ of TEXPIC in this file, one for VMS and another
+ which is a little more portable.
+ o HALFTONE.MF Don Knuth's halftone font
+
+If you intend to produce pictures of size >= 256 x 256, you'll need to
+expand TeX's memory (see my article in TUGboat vol 8 no 3 for more
+details). I can supply a TeX change file for VAX/VMS which effects this
+change (and provides an editor interface) either by e-MAIL or on tape.
+Contact me for more details.
+
+If you want to use this software, but you're not a TeX guru...find
+someone who is! He/she will be able to generate convert the Metafont
+source for the halftone font (HALFTONE.MF) to a form acceptible to
+TeX, and put it in the right directories for you to use. I can supply
+outline help, but the font generation process tends to be horribly
+site-dependent. Sorry.
+
+If you have any trouble with the software, please let me know (it's not
+quite the same as the version I use myself). I'm particularly keen
+to receive feedback from non-VMS sites.
+
+ `Alien' (ALIEN @UK.AC.ESSEX.ESE on JANET)
+$EOD
+$WRITE SYS$OUTPUT "creating HALFTONE.TEX"
+$CREATE HALFTONE.TEX
+$DECK
+% --- ------------------------------------------------------------------
+% --- halftone.tex
+% --- Format me with LaTeX, print me with an inch of top and left margin
+% --- ------------------------------------------------------------------
+
+\font\halftone=halftone
+
+\def\|#1|{{\tt#1}}
+\def\mmax{M_{\hbox{\scriptsize max}}}
+\def\SYSDEP#1{\marginpar{\scriptsize site\\ specific}}
+\def\TL{{\tt\TeX lase}}
+\def\TV{{\tt\TeX view}}
+\def\VAX{\leavevmode\hbox{V\kern-.12em A\kern-.1em X}}
+\def\VMS{\leavevmode\hbox{V\kern-.06em MS}}
+
+\def\mc{\small}
+\def\FORTRAN{{\mc FORTRAN}}
+
+\nofiles
+\documentstyle[11pt]{article}
+\advance\textheight by 21mm
+
+\title{Halftone Output From \TeX\footnote{Taken from the {\sl \VAX/\VMS\ \TeX\
+ User's Guide}}}
+\author{Dr. Adrian F. Clark\\
+ Department of Electronic Systems Engineering\\
+ University of Essex}
+
+\begin{document}
+\maketitle
+
+\section{Introduction}
+
+This note describes how image data can be converted to a form suitable
+for \TeX\ and then typeset in documents. Pictures are prepared for \TeX\
+in a somewhat different way to normal text---the hard work is done outside
+the \TeX\ input file; incorporating the image into the \TeX\ document is
+then quite straightforward.
+
+The image data must be converted from the binary representation used in Image
+Processing and Pattern Recognition work to a series of characters which \TeX\
+can map into pseudo grey-levels via a special font. A user-callable \FORTRAN\
+\|SUBROUTINE| called \|TEXPIC| is available for this purpose. \|TEXPIC|
+converts a picture held in memory to a text file containing \TeX\ input. (You
+can look at this file if you like, but it is unlikely to make much sense.)
+There are a few additional routines which can be used with \|TEXPIC| to produce
+particular effects: for example, the picture may be plotted as a positive or
+negative image.
+
+The special font for setting pictures is
+defined to have some 65~grey levels. This does not necessarily imply that all
+the grey levels are distinguishable, nor even that they are strictly monotonic
+on laser printers. However, the quality of the output is certainly adequate for
+run-of-the-mill technical reports.
+
+An example of an image typeset with \|TEXPIC| and \TeX\ is shown in
+Figure~1. This is the ``girl'' picture from the image database
+distributed by the Signal and Image Processing Institute of the University of
+Southern California, which is widely used to demonstrate image processing
+techniques. This representation is some $64 \times 64$~pixels.
+
+\begin{figure}
+ \centering
+ \fbox{\input picture\relax}
+ \caption{Example of an Image Typeset using \|TEXPIC| and \TeX}
+\end{figure}
+
+\section{The \|TEXPIC| Routine}
+
+To generate a file containing the image data in a form suitable for input to
+\TeX, you simply invoke \|TEXPIC| from a program. \|TEXPIC| is called as
+follows:
+
+\begin{verbatim}
+ CALL TEXPIC( ARRAY, M, N, FILE )
+\end{verbatim}
+
+\noindent where \|ARRAY| is a \|M| $\times$ \|N| \|REAL| array containing the
+picture to be plotted and \|FILE| is a quoted string or \|CHARACTER| variable
+containing the name of the file to receive the data. If you omit a filetype
+(``extension'') from \|FILE|, \|TEXPIC| will use \|.TEX|. You can call
+\|TEXPIC| as many times as you want from a program; a separate output file will
+be generated for each picture.
+
+Due to problems with the controlling micro-processor in the standard \|LN03|
+printer, pictures with $\|N| > \approx 64$ will come out with white bands
+across them, rendering them effectively useless. However, this problem has been
+overcome on the \|LN03+| device, which can print images up to a full \|A4|
+page in size.
+
+
+\section{Associated Routines}
+
+\|TEXPIC| normally maximises the contrast of pictures by determining the range
+of grey levels in the image and scaling the output to make use of them. This
+behaviour can be overridden by invoking the routine \|ZRANGE| before \|TEXPIC|.
+\|ZRANGE| requires two \|REAL| arguments, the minimum and maximum grey level
+values to be output:
+
+\begin{verbatim}
+ CALL ZRANGE( ZMIN, ZMAX )
+ CALL TEXPIC( ARRAY, M, N, FILE )
+\end{verbatim}
+
+\noindent where \|ZMIN| $\le$ \|ZMAX|.
+\|TEXPIC| then uses the supplied extrema, rather than values
+determined from the image, for scaling the data. Values which lie {\em
+outside\/} these extrema are clipped. Hence, if \|ZRANGE| is used with values
+which are outside the values of the pixels in \|ARRAY|, the contrast of the
+data generated by \|TEXPIC| is {\em reduced.\/} The converse is also true. The
+extrema set up by \|ZRANGE| remain in effect until another call is made to
+\|ZRANGE|, superseding the previous limits, or \|ZAUTO| is invoked, which
+restores the default behaviour.
+
+\|TEXPIC| normally plots positive pictures---i.e.,\ pixels which contain
+low values come out darker than pixels with high values. It can also produce
+negatives, however; you do this by invoking the routine \|DONEG| before
+\|TEXPIC|. Normal, positive picture-plotting is restored by calling \|DOPOS|.
+As with \|ZRANGE| and \|ZAUTO|, \|DOPOS| and \|DONEG| remain in effect until
+explicitly cancelled.
+You can, of course, use the routines in conjunction to produce any
+required effect.
+
+There is a limit, $\mmax$, to the number of pixels that \|TEXPIC| can fit
+across a page of output. For
+pictures with $\|M| \le \mmax$, the data are written out exactly as supplied.
+However, when pictures have $\|M| > \mmax$, the image is interpolated so
+that the data written out form a $\mmax$-pixel image.
+The same interpolation factor is used in both dimensions so that the aspect
+ratio of the picture remains correct. The interpolation technique used is
+a context-sensitive three-point bilinear method due to {\sc
+Smith}.\footnote{There is also a version which uses standard four-point
+bilinear interpolation.} This produces marginally better results in the
+vicinity of edges in the picture.
+
+The default value of $\mmax$ is~256. You can alter this (for example, when
+producing pictures for a document with the text set in narrow columns) by
+invoking \|TEXMAX| before \|TEXPIC|, as follows:
+
+\begin{verbatim}
+ CALL TEXMAX( MV )
+\end{verbatim}
+
+\noindent This sets $\mmax$ to \|MV|. Obviously, $\|MV| \ge 2$.
+
+\|TEXPIC| and the support routines are all to be found in the algorithm
+library, \verb|ESE$LIB:ALG|. \SYSDEP{Location of \\TEXPIC| and utility.}
+There is also a stand-alone program which you can use for images stored in the
+standard formats on disc. This program is \verb"ESE$PROGRAMS:V159".
+
+
+\section{Inserting the Picture into Your \TeX\ Document}
+
+This is quite easy, although there are a few steps in the process.
+The procedure you follow depends on which macro package you are using with
+\TeX. Most people use ``plain \TeX,'' the default macro package, but \LaTeX\
+is also in widespread use. If you use a customised \TeX\ but don't know exactly
+what is different about it, try the plain \TeX\ procedure.
+
+Whichever version of \TeX\ you use, there are a few things you should know.
+\TeX\ must hold the whole image in memory, so the maximum image size is
+obviously limited to \TeX's memory capacity. Since \TeX\ was designed for
+typesetting rather than image hard-copy, its memory capacity isn't
+large enough to hold dozens of pictures, although it should be adequate
+for reasonable use.
+
+\|TEXPIC| tells \TeX\ to use a special font, a {\em halftone\/} font, for
+setting the picture. You have to tell \TeX\ to load this font. To do this,
+you type the following command at the top of your document:
+
+\begin{verbatim}
+ \font\halftone=halftone
+\end{verbatim}
+
+\noindent This works with both plain \TeX\ and \LaTeX.
+
+We shall now consider the procedure for telling \TeX\ to typeset your picture.
+In the examples that follow, it is assumed that the picture produced by
+\|TEXPIC| is in the file \|PICTURE.TEX|.
+
+\subsection{Procedure for Use with Plain \TeX}
+The first thing you must do is to create an input file for \TeX\ which contains
+the document to be typeset. At the point where you want the picture to
+appear, you type:
+
+\begin{verbatim}
+ \centerline{\input picture}
+\end{verbatim}
+
+\noindent For \TeX{}perts, the image is set as a single \verb|\hbox|.
+
+The picture can be put into a ``floating'' insert, which will cause the
+picture to be held in \TeX's memory until there is enough free space on
+the page to hold it. For example, to set the picture in a \verb"\midinsert",
+the relevant \TeX\ input would be:
+
+\begin{verbatim}
+ \midinsert
+ \centerline{\input picture}
+ \endinsert
+\end{verbatim}
+
+\noindent This command sequence should be typed between paragraphs,
+when \TeX\ is in `vertical mode.' Typing \verb"\goodbreak" immediately
+before the \verb"\midinsert" may help \TeX's page-breaking mechanism. (In
+practise, you'll probably want to add a title to the picture, too.)
+
+There is one other thing you might want to do and that is to draw a border
+around the picture. You would do this by defining a \TeX\ macro, \|border|,
+as follows:
+
+\begin{verbatim}
+ \def\border#1{\vbox{\hrule\hbox{\vrule\kern3pt
+ \vbox{\kern3pt#1\kern3pt}\kern3pt\vrule}\hrule}}
+\end{verbatim}
+
+\noindent You would then set the picture with
+
+\begin{verbatim}
+ \centerline{\border{\input picture}}
+\end{verbatim}
+
+\noindent instead of simply \verb"\centerline{\input picture}".
+
+\subsection{Procedure for Use with \LaTeX}
+The most sensible way to plot pictures with \LaTeX\ is in the \|figure|
+environment ({\em not\/} the \|picture| environment). This generates
+a ``floating'' figure, which usually surfaces at the top of the following
+page of output. The \verb|\centering| declaration causes the picture to
+be centred in the page.
+
+\begin{verbatim}
+ \begin{figure}
+ \centering
+ \mbox{\input picture\relax}
+ \caption{Figure Title}
+ \end{figure}
+\end{verbatim}
+
+\noindent The \verb|\relax| following the filename in the \verb|\mbox| command
+is required for \LaTeX\ to know where the filename ends. To draw a border
+around your picture, you simply replace the \verb|\mbox| command with
+\verb|\fbox|.
+
+\section{Producing the Output}
+
+Having inserted the appropriate commands into your document, you run \TeX\ in
+the normal way. If it exits with a ``memory capacity exceeded'' error message,
+you've either tried to set images which are too big or you're holding too
+many in memory at once. The only solution to this problem is to re-format your
+document. \LaTeX\ users may be able to cure the problem by strategically
+inserting \verb"\clearpage" commands into the manuscript.
+
+You run \TV\ or \TL\ on the \TeX\ output file as normal, although the \TV\
+display bears little relationship to the grey levels produced by \TL. Note that
+you must use \TL\ version~10 to send output to the \|LN03|, since earlier
+versions cannot read the halftone font file. (When you invoke \TL\, it outputs
+a short introductory message which includes its version number.)
+
+The current version of \TeX\ 2.0 has a larger-than-usual memory capacity,
+\SYSDEP{Size of \TeX's memory.}
+large enough for four $256 \times 256$ images to be held in memory.
+
+\end{document}
+$EOD
+$WRITE SYS$OUTPUT "creating PICTURE.TEX"
+$CREATE PICTURE.TEX
+$DECK
+ \hbox{\vbox{\halftone\offinterlineskip % machine-generated by TEXPIC.
+ \def\BHT{\hbox\bgroup\ignorespaces}
+ \catcode`\^=12 \catcode`\_=12 \catcode`\.=\active \let.=\egroup
+ \catcode`\,=\active \let,=\BHT \catcode`\/=0 \catcode`\\=12
+ ,ccdggfcbabbcfeeddeccehhlmkkklljdejceggiagjfgbecbbadiiXNQLEHDGHJL.
+ ,dcdggfbbbaadeddcddbdfghkmkkkklljjicfhiiaiiggbddac`fkcQLQLEGGGHKL.
+ ,ecbfffcbbabdeedecddfgfglmkkkjkllmgc`ghgcjhfdbebaaahk\NLQLGGHGKMN.
+ ,cccfgfdaaaadddddceffdcekmkkkj_PI?GME;FNckfgfbbb`_djgVLLQMGIIGJNM.
+ ,dddggfbbbbbeedcdcedcccdjmkkk\GHEMHEJH><86Fcfdcc`_glaQOMPLHIHFJNL.
+ ,ddcggfcbaabdedddcdbbbbdjmkfHH?GQLQNLNNLB<@=NedbaaikZMLMQKGJHGJNM.
+ ,dbdffebaabbddeddddccabbjlgWSLLFKIRQLJMTKMHKDKda_dkhUILNQJIKJILPN.
+ ,dbeggfdbbbbdfddddcccbbchdJFGISKTMPWRQLWYVOKGDBaahlaTRQUWOKMRNQUT.
+ ,ebdggecbaabdddcedccbcbaUHAIKNPTUNROORQYXYUWVPIOdij[TWWYZTSSWWY\\.
+ ,edegfebabbadeedddccbbbRRVOJLHCJOOPSVT^WY]XTTTLDakbQKONNRMOST[\^\.
+ ,dcdfgeabcbaceddcdbccbZ[VWYJJMWMTRLS]]bZ_a`Z^QTQ9l^HHMNONJRYYYZ\\.
+ ,ecdgffcaaabdecdcdccb_d\YVQUWQ^a_Yf`^^lkha^_^SLWB\YHHLNONGPXXVWZ[.
+ ,ebdgfebaabbdeddccbcd^bYZQ[W]VZbjaijgdgonhhiiWJJEWOJJLNOLHQXVVTY\.
+ ,ebegffcbabbdecdbcbba^X`a\WC`hjdbekleknnopjkifXGRRMHIMLPNIQVVWUX\.
+ ,ecdgffbaaabdedcdbba^_ef_`iegcfglnneihlnonmlii\KQULGHKJOONUTVUTY[.
+ ,fcdggebbaacdddcddbb^_gbhllfiknhnoinlmlllmmlih`Q]SKILJLPQTXTUVTVZ.
+ ,ecdgfecbbabdedddddba\ehjljiklmlmnnmilkghcjgicb\YUJJJMRYTQYXUVWWZ.
+ ,dcdgfeab`bbedddcdcb\a]flmjijldecnommjf]jcTf\bdbbELLNSU^TPWYWWWWX.
+ ,fcfggeababbedddcdbc]^g`gm_fa]hgaemkgjhgj_UhIb^f^SMJQXY]TQYXZYVYZ.
+ ,fbeffebabbbdecdcdcbb`ZSbg]b\Ya_b^gjijgjibajWdY]ZLNJRXZ]SNY][YWW[.
+ ,fbeffdcbaabdddddcbabhgi_b`]^bbhdb`dgfdjaagjjbV[ZLMLWXV\QR[^^\XY[.
+ ,ebdffdcabbbededdccc`mlnmjecfihhijjikkdj^efije_]_NNPWXYZRU^]^[WUZ.
+ ,fcegfdbbbbcdddddccbbinonnjhgkinkmnlnmiidegfkggjZVWVYY\\UW]^\ZVU\.
+ ,ebdffecbacceeeddcccbginnijjjkkkjklnnnijjiihmjjfdRUV^^^aY\_^]]][^.
+ ,gdeggdbbbbcdededddbcggYNVWX\]ii_`b_cmljlkkhkibi\NKQYY\_SW_ZZ^[^].
+ ,fdegfebabbceeeeddddcdh]diZYZYYfjgacllihnkmjbifhSNKNTY_^RV^^^^]^].
+ ,fbfggeccdceeddddeddcceghggaZ\be_fefjljhjjmnkjegQKKIOY^_RT_^^^\\\.
+ ,fcegffdbcbdeddedeecbchnZm]dNVgggjmpohfeeiglljkZNJHFPW^^RT^\^YY[^.
+ ,fcfhfdbccbcfeeeddddcdcZgibUO[]RcWelifcegijigflLLJIIOU\_VT_]\ZY\^.
+ ,edfgfebccddeeeedeeedcbTYXRUP^\XTbdd\`a_ggekebPQLLJHMOX^VW][]\YY\.
+ ,edfgfedcdcdfeeffeededdTQOOVU_\WOQTW[_afkflhaSOQJLMKNRZ^UY[[_^YV].
+ ,fdfgfeddccdeefeeeeefbeTOKYSY`aWJQVY]afeklihbSNMJJKLMT\^UY]\_b\Z^.
+ ,fdgfgfdccddfeffdfffeedTTTaQZbd^TSUW]bg`_fgfQUPLLLJKOQX]UX]\\]Z[^.
+ ,fdgggedccdcfefeefededc\Zaa_jij^^XY\`de^[X\VPRORPLKJLNU\VX^[\[VY^.
+ ,fdfgffcdcbdfedefefeeee_bg\W^Z[[_ab_ciadXUNVVYWWUQLJMOW\TY\YZZYZ_.
+ ,fdfggfdcecdeeefeeefedfebaidVY\]abbdfidaZXNWTWVVTQJKNOXXTZ[Z\]ZY\.
+ ,fdfggedddddffeefeedeejj_[Y`KHYlok`degfa]`QYWYWVTSNORW\\T]]]a^WVZ.
+ ,fcgggfddddeffeeffeeeegie^YaYV]ecZ]bfgda_`PZ[ZZ[WUQNRV^[Z_bb`]ZZ^.
+ ,fdghgfededffffffeeedc[jh`\]]_acaa_fggcfhaXURTVYUMLKMR\_Y_cba]Z]a.
+ ,ffhhhgedddfggffffgfee_cil]UTQWX]^bfhhjhi`XRSRPURKHJKQ[\UZ]]_\[\\.
+ ,gfgjihfeffgiggfgggfegnlimo[VUY\abdhjkiiiaMQTUPTSJILPRVWRTVUWVSRR.
+ ,ggjjjiggfgfhhhggggffjljjmojbabdgjllljhjj_GRUVQURLJPURXWRQSRQQPPQ.
+ ,fikjjjhgfgfghghghhfhmnjgjnfgZlnnmlkjiiiiaRGPWQSRKKVWV[ZRTVSURSRQ.
+ ,chkjjjggggffghghhgfjnnmlmdliiY^lljjjjiiib`d[^_TQKNWWV][RWVVVUTSS.
+ ,]`gkkjihghhhjjjjjjijmnoldfijhkXY\gijid_]fjihffe`QMWUV[ZQUVTSTTRT.
+ ,\^]ejllkkjjjllmmlmlllnfcdfghijk\]][\\[gkmhjhhgfda]`^X_]TYWVYYUUW.
+ ,ab[\cegihgffhjjkkkkibecddfhfljjofgfhikiiiljigfiijkklg\[UZYY]]ZYZ.
+ ,d```a``cfeffijjjj`^edegdfgjfkijnogfhhhgiihijjjklmnoobnYQWYY\[ZYV.
+ ,hifiie__egggijj]cbfeecegfflgfnjinofggiiihhhfgiljjndhdhbRXZZ][XXX.
+ ,hklllic]ageeffNYcfgfgffggfkifijihmjhhhiiiijjjijlmmmiZQESY\^][[[[.
+ ,hghlmkib^cdeYY^dchhffgeggfhmhiiignjihihhijijjkllnoni`YXFDYZ\WWYZ.
+ ,a]bkmkigdjmc^`bbdigfggfhgggoiijjkhljjhijijjjklmnonheddaXRHK]YUXY.
+ ,c^`knihighl[__adgjhffghiiiiimjjikkjjiikikkkllmooihhgfgec[XOHc_ac.
+ ,gbbjnllmkjk[^_baiiggehiijiiholnomlklknmikklmmoohgghgfiifea_[W^^_.
+ ,kghllnooona^___gcliijkddfhiijommihnnmnhipomnoniggghhhhhijjced]ZZ.
+ ,nonmlmopppd``a`lgakifhghijjjjjllmjlklkkjanlkiggihiiiiiihlkiZha]Z.
+ ,pponlloppo`a`bdllkgfddgijgebblkmilimmkUACG8@iiihghiiihhnmiifWg\W.
+ ,pponllmopmabacdlllkkkkjie^bcbfajominXlk`=L=3BEbfgiihhgjnjijj`W[U.
+ ,ponmlllnolbbbadkmllkklkfdhbhdghimmkiaO?HO>G8?CELhjihghkoiklje[YY.
+ ,onnmlmmmocdcbacjlmmlmmlcgiijgefkjopooonNA>7=BBDC<jhghlooillki`QX.
+ ,nmnmnmmmobcbbbbjlmmmmjjkljlgiielilio\[IZWPRS?D4BDWghilokilllkg\[.
+ ,mmlkllklneddbbbjmmmllfhjkillkgjjb\TYpKTVO;JJ<7I;3FkRmoohlnnnlkcT.
+ ,lllllllnnc`dbcbblmmmmlgijiggfhhkR@TCYI[HghUWS?@DCFBBEA?mnoonmkf\.
+ ,pponmmnnjb\kjfdekklkkijkjijhiigiILAP<LIL^VNSHGKLBABJ>BGbooonnmia.
+ }}%
+$EOD
+$WRITE SYS$OUTPUT "creating TEXPIC.FOR"
+$CREATE TEXPIC.FOR
+$DECK
+C --- -----------------------------------------------------------------
+C --- T e X P I C
+C --- -----------------------------------------------------------------
+C
+C --- These routines are used to generate an input file to TeX which,
+C --- when processed, gives a halftone representation of the grey-level
+C --- image. TEXPIC is the main picture-plotting routine: it requires a
+C --- M x N pixel array ARRAY. The TeX commands are written to the file
+C --- FN. These routines are taken from a general-purpose library of
+C --- image processing software developed by the author, which explains
+C --- why most of the variables in the COMMON blocks are not used. The
+C --- Fortran is also machine-generated, which may account for some odd
+C --- line breaks in the code. (No line, even in comments, has more
+C --- than 72 characters in it.)
+C
+C --- The image representation used here conforms to the one adopted by
+C --- the Numerical Algorithms Group (NAG) for their ``Image Processing
+C --- Algorithm Library'' IPAL, although the coding does not (it does
+C --- not allow a sub-region to be plotted).
+C
+C --- There are two versions of TEXPIC in this file: the first is VAX-
+C --- specific, while the second should be fairly portable. Note that
+C --- both routines declare the BLOCK DATA module ALGINI as EXTERNAL;
+C --- this usually forces the linker to build it into executable files.
+C
+C --- TEXPIC's support routines are:
+C
+C --- TEXMAX set the maximum pixel width across the page
+C --- ZRANGE fix the contrast for subsequent TEXPIC calls
+C --- ZAUTO subsequent pictures have their contrast determined
+C --- from the data
+C --- ZSAME subsequent pictures are plotted with the same
+C --- contrast as the previous one
+C --- DOPOS subsequent pix have low pixel values plotted black
+C --- DONEG subsequent pix have low pixel values plotted white
+C --- MINMAX determines the range of the data
+C --- ALGERR outputs error messages
+C --- ABANDN VAX-specific ^C trap routine
+C --- ALGINI block data module
+C
+C --- Details of the invocations are given in the comments associated
+C --- with each routine. There is also a separate document which gives
+C --- user-level documentation and examples. This is available as part
+C --- of the ``VAX/VMS TeX User's Guide'', written by the author, or as
+C --- a separate document.
+C
+C --- As supplied, TEXPIC uses a three-point contextual bilinear method
+C --- to interpolate between pixels. The results it produces should be
+C --- marginally better than using standard four-point interpolation;
+C --- however, the author can detect no difference. If you'd prefer to
+C --- use four-point interpolation, the line to change is marked in the
+C --- TEXPIC source code.
+C
+C --- Since you get TEXPIC free of charge, there is no formal guarantee
+C --- given by Essex University OR the author that the software works
+C --- or that the documentation agrees with the code. Nevertheless, the
+C --- author would be pleased to hear of any problems.
+C
+C --- TEXPIC and associated routines were written by:
+C
+C --- Dr. Adrian F. Clark (``Alien'')
+C --- of Department of Electronic Systems Engineering
+C --- University of Essex
+C --- Wivenhoe Park
+C --- Colchester
+C --- Essex C04 3SQ
+C --- United Kingdom
+C --- Tel: Colchester (0206) 872432 (direct)
+C --- JANET: user ALIEN @UK.AC.ESSEX.ESE
+C
+C --- If you write, please mark the envelope with ``TeX''.
+C
+C --- Acknowledgements in any published work that uses TEXPIC would be
+C --- appreciated.
+C
+C --- ENJOY!
+C
+C --- -----------------------------------------------------------------
+ SUBROUTINE TEXPIC( ARRAY, M, N, FN )
+C --- -----------------------------------------------------------------
+C
+C --- TEXPIC version 0.1 was written by Alien in Fortran-77.
+C
+C --- This routine writes out the M x N image ARRAY into the file FN
+C --- in a form which is suitable for insertion into a TeX document.
+C --- If FN has no filetype (``extension''), .TEX is used.
+C
+C --- By default, the range of the data is determined and used to
+C --- maximise the contrast of the output image. This can be
+C --- overridden by pre-setting the range of data values with a call
+C --- to ZRANGE. ZAUTO restores the default behaviour. Similarly,
+C --- TEXPIC will produce negated images on output if DONEG has
+C --- previously been invoked. DOPOS sets it to produce positive
+C --- pictures again.
+C
+C --- USAGE: CALL TEXPIC( ARRAY, M, N, FN )
+C
+C --- PARAMETERS
+C --- ARRAY REAL image to be output to the file
+C --- M INTEGER first dimension of ARRAY
+C --- N INTEGER second dimension of ARRAY
+C --- FN CHARACTER*(*) name of file to which ARRAY will
+C --- be written
+C
+C --- RESTRICTIONS
+C --- If N is greater than MMAX, the image will be sub-sampled in both
+C --- directions to make the result MMAX x MMAX. The interpolation
+C --- technique used is due to P.R. Smith (Ultramicroscopy vol 6, pp
+C --- 201--204, 1981).
+C
+C --- COMMONS
+C --- /ALG/, /ALGTEX/
+C
+C --- SUBPROGRAMS INVOKED
+C --- MINMAX, LIB$GET_LUN, LIB$FREE_LUN
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ INTEGER LEVELS, MINIDX, CMAX
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+ PARAMETER( LEVELS=65, MINIDX=48, CMAX=132 )
+C
+ CHARACTER*(*) FN
+ INTEGER M, N
+ REAL ARRAY(M,N)
+C
+ CHARACTER*(CMAX) C
+ CHARACTER*6 RUTNAM
+ INTEGER NMAX, I, J, IC, IV, LUN, IOS, ILO, JLO, IHI, JHI
+ INTEGER LIB$GET_LUN, LIB$FREE_LUN
+ LOGICAL POS
+ REAL RANGE, INC
+ REAL X, Y, DX, DY, DX1, DY1, VAL
+C
+ INTEGER*2 CHAN
+ LOGICAL ABFLAG
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+ INTEGER MMAX
+C
+ COMMON /ALG_ABANDN/ ABFLAG, CHAN
+ SAVE /ALG_ABANDN/
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+ COMMON/ALGTEX/ MMAX
+ SAVE /ALGTEX/
+ EXTERNAL ALGINI
+ DATA RUTNAM/'TEXPIC'/
+C
+C --- Find the range of the data if we're in auto mode; otherwise,
+C --- use the specified ranges.
+C
+ IF( .NOT. ZFIX ) THEN
+ CALL MINMAX( ARRAY, M, N, ZMIN, ZMAX )
+ IF( ZMIN .EQ. ZMAX ) ZMAX = ZMIN + 1
+ END IF
+C
+C --- We can't print more than MMAX columns across the TeX output.
+C --- If the user passes an array bigger than this, we'll interpolate
+C --- it down to MMAX.
+C
+ IF( M .GT. MMAX ) THEN
+ INC = FLOAT(M) / FLOAT(MMAX)
+ NMAX = NINT( FLOAT(N) / INC )
+ ELSE
+ INC = 0
+ END IF
+C
+C --- Get a free channel number and open the output file.
+C
+ IOS = LIB$GET_LUN( LUN )
+ IF( .NOT. IOS ) CALL EXIT( IOS )
+C
+ OPEN( UNIT=LUN, FILE=FN, STATUS='NEW', RECL=CMAX+1, IOSTAT=IOS,
+ & DEFAULTFILE='.TEX', CARRIAGECONTROL='LIST' )
+ IF( IOS .EQ. 0 ) THEN
+C
+C --- Calculate the scaling factor.
+C
+ POS = .NOT. NEG
+ RANGE = FLOAT(LEVELS-1) / (ZMAX-ZMIN)
+C
+C --- Output the introduction.
+C
+ WRITE( LUN, 100 )
+C
+C --- Output the image without interpolation if INC is zero.
+C
+ IF( ABS(INC) .LT. TOL ) THEN
+ DO 2 J = 1, N
+ IF( ABFLAG ) GO TO 5
+ IC = 1
+ C(1:1) = ','
+ DO 1 I = 1, M
+ VAL = ARRAY(I,J)
+ IF( VAL .LT. ZMIN ) VAL = ZMIN
+ IF( VAL .GT. ZMAX ) VAL = ZMAX
+ IV = NINT((VAL-ZMIN) * RANGE)
+ IF( POS ) IV = (LEVELS-1) - IV
+ IC = IC + 1
+ C(IC:IC) = CHAR( IV + MINIDX )
+ IF( IC .GE. CMAX-1 ) THEN
+ WRITE( LUN, 200 ) C(1:IC)
+ IC = 1
+ C(1:1) = ' '
+ END IF
+ 1 CONTINUE
+ IF( IC .GT. 0 ) WRITE(LUN, 300) C(1:IC)
+ 2 CONTINUE
+ ELSE
+C
+C --- Interpolate the output.
+C
+ Y = 1
+ DO 4 J = 1, NMAX
+ IF( ABFLAG ) GO TO 5
+ DY = Y - INT(Y)
+ DY1 = 1 - DY
+ JLO = MOD( INT(Y-1), N ) + 1
+ JHI = MOD( JLO, N ) + 1
+ X = 1
+ IC = 1
+ C(1:1) = ','
+ DO 3 I = 1, MMAX
+ DX = X - INT(X)
+ DX1 = 1 - DX
+ ILO = MOD( INT(X)-1, M ) + 1
+ IHI = MOD( ILO, M ) + 1
+C
+C --- Smith's three-point contextual bilinear interpolation.
+C
+ IF( ABS(ARRAY(ILO,JLO)-ARRAY(IHI,JHI)) .GT.
+ & ABS(ARRAY(IHI,JLO)-ARRAY(ILO,JHI)) ) THEN
+ VAL = (DX-DY)*ARRAY(IHI,JLO) + DX1*ARRAY(ILO,JLO) +
+ & DY*ARRAY(IHI,JHI)
+ ELSE
+ VAL = (DX1-DY)*ARRAY(ILO,JLO) + DX*ARRAY(IHI,JLO) +
+ & DY*ARRAY(ILO,JHI)
+ END IF
+ X = X + INC
+ IF( VAL .LT. ZMIN ) VAL = ZMIN
+ IF( VAL .GT. ZMAX ) VAL = ZMAX
+ IV = NINT((VAL-ZMIN) * RANGE)
+ IF( POS ) IV = (LEVELS-1) - IV
+ IC = IC + 1
+ C(IC:IC) = CHAR( IV + MINIDX )
+ IF( IC .GE. CMAX-1 ) THEN
+ WRITE( LUN, 200 ) C(1:IC)
+ IC = 1
+ C(1:1) = ' '
+ END IF
+ 3 CONTINUE
+ IF( IC .GT. 0 ) WRITE(LUN, 300) C(1:IC)
+C
+ Y = Y + INC
+ 4 CONTINUE
+ END IF
+C
+C --- Close off the file.
+C
+ 5 CONTINUE
+ WRITE( LUN, 400 )
+ CLOSE( UNIT=LUN )
+ ELSE
+ CALL ALGERR( RUTNAM, 'Cannot open specified output file:',
+ & FN )
+ END IF
+C
+C --- Release the channel.
+C
+ IOS = LIB$FREE_LUN( LUN )
+ IF( .NOT. IOS ) CALL EXIT( IOS )
+C
+ RETURN
+ 100 FORMAT(' \hbox{\vbox{\halftone\offinterlineskip ',
+ & '% machine-generated by TEXPIC.'/
+ & ' \def\BHT{\hbox\bgroup\ignorespaces}'/
+ & ' \catcode`\^=12 \catcode`\_=12 \catcode`\.=\active',
+ & ' \let.=\egroup'/ ' \catcode`\,=\active \let,=\BHT',
+ & ' \catcode`\/=0 \catcode`\\=12')
+ 200 FORMAT(1X,A,'%')
+ 300 FORMAT(1X,A,'.')
+ 400 FORMAT(' }}%')
+ END
+C --- -----------------------------------------------------------------
+ SUBROUTINE TEXPIC( ARRAY, M, N, FN )
+C --- -----------------------------------------------------------------
+C
+C --- TEXPIC version 0.1 was written by Alien in Fortran-77.
+C
+C --- This routine writes out the M x N image ARRAY into the file FN
+C --- in a form which is suitable for insertion into a TeX document.
+C
+C --- By default, the range of the data is determined and used to
+C --- maximise the contrast of the output image. This can be
+C --- overridden by pre-setting the range of data values with a call
+C --- to ZRANGE. ZAUTO restores the default behaviour. Similarly,
+C --- TEXPIC will produce negated images on output if DONEG has
+C --- previously been invoked. DOPOS sets it to produce positive
+C --- pictures again.
+C
+C --- USAGE: CALL TEXPIC( ARRAY, M, N, FN )
+C
+C --- PARAMETERS
+C --- ARRAY REAL image to be output to the file
+C --- M INTEGER first dimension of ARRAY
+C --- N INTEGER second dimension of ARRAY
+C --- FN CHARACTER*(*) name of file to which ARRAY will
+C --- be written
+C
+C --- RESTRICTIONS
+C --- If N is greater than MMAX, the image will be sub-sampled in both
+C --- directions to make the result MMAX x MMAX. The interpolation
+C --- technique used is due to P.R. Smith (Ultramicroscopy vol 6, pp
+C --- 201--204, 1981).
+C
+C --- COMMONS
+C --- /ALG/, /ALGTEX/
+C
+C --- SUBPROGRAMS INVOKED
+C --- MINMAX
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT CHARACTER*1 (A-Z)
+C
+ INTEGER LEVELS, MINIDX, CMAX
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+ PARAMETER( LEVELS=65, MINIDX=48, CMAX=132 )
+C
+ CHARACTER*(*) FN
+ INTEGER M, N
+ REAL ARRAY(M,N)
+C
+ CHARACTER*(CMAX) C
+ CHARACTER*6 RUTNAM
+ INTEGER NMAX, I, J, IC, IV, LUN, IOS, ILO, JLO, IHI, JHI
+ LOGICAL POS
+ REAL RANGE, INC
+ REAL X, Y, DX, DY, DX1, DY1, VAL
+C
+ LOGICAL ABANDN
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+ INTEGER MMAX
+C
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+ COMMON/ALGTEX/ MMAX
+ SAVE /ALGTEX/
+ EXTERNAL ALGINI
+ DATA RUTNAM/'TEXPIC'/
+C
+C --- Find the range of the data if we're in auto mode; otherwise,
+C --- use the specified ranges.
+C
+ IF( .NOT. ZFIX ) THEN
+ CALL MINMAX( ARRAY, M, N, ZMIN, ZMAX )
+ IF( ZMIN .EQ. ZMAX ) ZMAX = ZMIN + 1
+ END IF
+C
+C --- We can't print more than MMAX columns across the TeX output.
+C --- If the user passes an array bigger than this, we'll interpolate
+C --- it down to MMAX.
+C
+ IF( M .GT. MMAX ) THEN
+ INC = FLOAT(M) / FLOAT(MMAX)
+ NMAX = NINT( FLOAT(N) / INC )
+ ELSE
+ INC = 0
+ END IF
+C
+C --- We always open the output file on channel 7 (fix me!).
+C
+ LUN = 7
+ OPEN( UNIT=LUN, FILE=FN, STATUS='NEW', RECL=CMAX+1, IOSTAT=IOS )
+ IF( IOS .EQ. 0 ) THEN
+C
+C --- Calculate the scaling factor.
+C
+ POS = .NOT. NEG
+ RANGE = FLOAT(LEVELS-1) / (ZMAX-ZMIN)
+C
+C --- Output the introduction.
+C
+ WRITE( LUN, 100 )
+C
+C --- Output the image without interpolation if INC is zero.
+C
+ IF( ABS(INC) .LT. TOL ) THEN
+ DO 2 J = 1, N
+ IF( ABANDN(0) ) GO TO 5
+ IC = 1
+ C(1:1) = ','
+ DO 1 I = 1, M
+ VAL = ARRAY(I,J)
+ IF( VAL .LT. ZMIN ) VAL = ZMIN
+ IF( VAL .GT. ZMAX ) VAL = ZMAX
+ IV = NINT((VAL-ZMIN) * RANGE)
+ IF( POS ) IV = (LEVELS-1) - IV
+ IC = IC + 1
+ C(IC:IC) = CHAR( IV + MINIDX )
+ IF( IC .GE. CMAX-1 ) THEN
+ WRITE( LUN, 200 ) C(1:IC)
+ IC = 1
+ C(1:1) = ' '
+ END IF
+ 1 CONTINUE
+ IF( IC .GT. 0 ) WRITE(LUN, 300) C(1:IC)
+ 2 CONTINUE
+ ELSE
+C
+C --- Interpolate the output.
+C
+ Y = 1
+ DO 4 J = 1, NMAX
+ IF( ABANDN(0) ) GO TO 5
+ DY = Y - INT(Y)
+ DY1 = 1 - DY
+ JLO = MOD( INT(Y-1), N ) + 1
+ JHI = MOD( JLO, N ) + 1
+ X = 1
+ IC = 1
+ C(1:1) = ','
+ DO 3 I = 1, MMAX
+ DX = X - INT(X)
+ DX1 = 1 - DX
+ ILO = MOD( INT(X)-1, M ) + 1
+ IHI = MOD( ILO, M ) + 1
+C
+C --- Smith's three-point contextual bilinear interpolation.
+C
+ IF( ABS(ARRAY(ILO,JLO)-ARRAY(IHI,JHI)) .GT.
+ & ABS(ARRAY(IHI,JLO)-ARRAY(ILO,JHI)) ) THEN
+ VAL = (DX-DY)*ARRAY(IHI,JLO) + DX1*ARRAY(ILO,JLO) +
+ & DY*ARRAY(IHI,JHI)
+ ELSE
+ VAL = (DX1-DY)*ARRAY(ILO,JLO) + DX*ARRAY(IHI,JLO) +
+ & DY*ARRAY(ILO,JHI)
+ END IF
+ X = X + INC
+ IF( VAL .LT. ZMIN ) VAL = ZMIN
+ IF( VAL .GT. ZMAX ) VAL = ZMAX
+ IV = NINT((VAL-ZMIN) * RANGE)
+ IF( POS ) IV = (LEVELS-1) - IV
+ IC = IC + 1
+ C(IC:IC) = CHAR( IV + MINIDX )
+ IF( IC .GE. CMAX-1 ) THEN
+ WRITE( LUN, 200 ) C(1:IC)
+ IC = 1
+ C(1:1) = ' '
+ END IF
+ 3 CONTINUE
+ IF( IC .GT. 0 ) WRITE(LUN, 300) C(1:IC)
+C
+ Y = Y + INC
+ 4 CONTINUE
+ END IF
+C
+C --- Close off the file.
+C
+ 5 CONTINUE
+ WRITE( LUN, 400 )
+ CLOSE( UNIT=LUN )
+ ELSE
+ CALL ALGERR( RUTNAM, 'Cannot open specified output file:',
+ & FN )
+ END IF
+C
+C
+ RETURN
+ 100 FORMAT(' \hbox{\vbox{\halftone\offinterlineskip ',
+ & '% machine-generated by TEXPIC.'/
+ & ' \def\BHT{\hbox\bgroup\ignorespaces}'/
+ & ' \catcode`\^=12 \catcode`\_=12 \catcode`\.=\active',
+ & ' \let.=\egroup'/ ' \catcode`\,=\active \let,=\BHT',
+ & ' \catcode`\/=0 \catcode`\\=12')
+ 200 FORMAT(1X,A,'%')
+ 300 FORMAT(1X,A,'.')
+ 400 FORMAT(' }}%')
+ END
+C --- -----------------------------------------------------------------
+ SUBROUTINE TEXMAX( MV )
+C --- -----------------------------------------------------------------
+C
+C --- TEXMAX version 0.0 was written by Alien in Fortran-77.
+C
+C --- This routine sets the maximum number of pixels across a picture
+C --- which TEXPIC will output to a file. Pictures which have their
+C --- first dimension greater than MMAX are interpolated down to MMAX
+C --- pixels.
+C
+C --- USAGE: CALL TEXMAX( MMAX )
+C
+C --- PARAMETERS
+C --- MMAX INTEGER maximum number of pixels to be plotted by
+C --- TEXPIC
+C
+C --- RESTRICTIONS
+C --- none
+C
+C --- COMMONS
+C --- /ALGTEX/
+C
+C --- SUBPROGRAMS INVOKED
+C --- none
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+C
+ INTEGER MV
+C
+ CHARACTER*(MAXICH) BUF
+C
+ INTEGER MMAX
+C
+ COMMON/ALGTEX/ MMAX
+ SAVE /ALGTEX/
+C
+ IF( MV .GE. 2 ) THEN
+ MMAX = MV
+ ELSE
+ WRITE( BUF, 100 ) MV
+ CALL ALGERR( 'TEXMAX',
+ & 'Too few pixels selected across page:'//BUF,
+ & 'You must have two or more pixels across the page' )
+ END IF
+C
+ RETURN
+ 100 FORMAT(I11)
+ END
+C --- ------------------------------------------------------------------
+ SUBROUTINE ZRANGE( ZVMIN, ZVMAX )
+C --- ------------------------------------------------------------------
+C
+C --- ZRANGE version 0.0 was written by Alien in Fortran-77.
+C
+C --- This routine fixes the range of the Z-axis for subsequent
+C --- graphical plots.
+C
+C --- USAGE: CALL ZRANGE( ZMIN, ZMAX )
+C
+C --- PARAMETERS
+C --- ZMIN REAL minimum value to appear on the Z-axis
+C --- ZMAX REAL maximum value to appear on the Z-axis
+C
+C --- RESTRICTIONS
+C --- ZMIN must be smaller than ZMAX.
+C --- Note that the range of values actually produced on graphs may be
+C --- slightly greater than those specified.
+C
+C --- SUBPROGRAMS INVOKED
+C --- ALGERR
+C
+C --- COMMONS
+C --- ZFIX, ZMIN, ZMAX in /ALG/
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+C
+ REAL ZVMIN, ZVMAX
+C
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+C
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+C
+ IF( ZVMIN .LT. ZVMAX ) THEN
+ ZMIN = ZVMIN
+ ZMAX = ZVMAX
+ ZFIX = .TRUE.
+ ELSE
+ CALL ALGERR('ZRANGE','Zmin was not smaller than Zmax.',' ')
+ END IF
+C
+ RETURN
+ END
+C --- ------------------------------------------------------------------
+ SUBROUTINE ZAUTO
+C --- ------------------------------------------------------------------
+C
+C --- ZAUTO version 0.0 was written by Alien in Fortran-77.
+C
+C --- This routine causes the Z-axis of subsequent graphical plots
+C --- to be scaled according to the data being plotted.
+C
+C --- USAGE: CALL ZAUTO
+C
+C --- PARAMETERS
+C --- none
+C
+C --- RESTRICTIONS
+C --- none
+C
+C --- SUBPROGRAMS INVOKED
+C --- none
+C
+C --- COMMONS
+C --- ZFIX in /ALG/
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+C
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+C
+ ZFIX = .FALSE.
+C
+ RETURN
+ END
+C --- ------------------------------------------------------------------
+ SUBROUTINE ZSAME
+C --- ------------------------------------------------------------------
+C --- ZSAME version 0.0
+C
+C --- Written by Alien in Fortran-77.
+C
+C --- This routine causes the range of the Z-axis on subsequent
+C --- graphical plots to be the same as those used on the previous
+C --- invocation.
+C
+C --- USAGE: CALL ZSAME
+C
+C --- PARAMETERS
+C --- none
+C
+C --- RESTRICTIONS
+C --- none
+C
+C --- SUBPROGRAMS INVOKED
+C --- |ALGERR|
+C
+C --- COMMONS
+C --- |ZFIX|, |ZMIN|, |ZMAX| in |/ALG/|
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+C
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+C
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+C
+ IF( ZMIN .LT. ZMAX ) THEN
+ ZFIX = .TRUE.
+ ELSE
+ CALL ALGERR('ZSAME','Zmin was not smaller than Zmax.',
+ & 'Call ignored.' )
+ END IF
+C
+ RETURN
+ END
+C --- -----------------------------------------------------------------
+ SUBROUTINE DONEG
+C --- -----------------------------------------------------------------
+C
+C --- DONEG version 0.0 was written by Alien in Fortran-77.
+C
+C --- This routine causes subsequent grey-level pictures to be drawn
+C --- with negative contrast.
+C
+C --- USAGE: CALL DONEG
+C
+C --- PARAMETERS
+C --- none
+C
+C --- RESTRICTIONS
+C --- none
+C
+C --- SUBPROGRAMS INVOKED
+C --- none
+C
+C --- COMMONS
+C --- NEG in /ALG/
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+C
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+C
+C
+ NEG = .TRUE.
+C
+ RETURN
+ END
+C --- -----------------------------------------------------------------
+ SUBROUTINE DOPOS
+C --- -----------------------------------------------------------------
+C
+C --- DOPOS version 0.0 was written by Alien in Fortran-77.
+C
+C --- This routine causes subsequent grey-level pictures to be drawn
+C --- with negative contrast.
+C
+C --- USAGE: CALL DOPOS
+C
+C --- PARAMETERS
+C --- none
+C
+C --- RESTRICTIONS
+C --- none
+C
+C --- SUBPROGRAMS INVOKED
+C --- none
+C
+C --- COMMONS
+C --- NEG in /ALG/
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+C
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+C
+C
+ NEG = .FALSE.
+C
+ RETURN
+ END
+C --- ------------------------------------------------------------------
+ SUBROUTINE MINMAX( ARRAY, M, N, LOWEST, HIEST )
+C --- ------------------------------------------------------------------
+C
+C --- MINMAX version 0.0 was written by Alien in Fortran-77.
+C
+C --- This routine determines the smallest and largest values of an
+C --- array. If an interrupt is detected during the estimation of the
+C --- limits of the data, the currently-detected limits are returned.
+C
+C --- USAGE: CALL MINMAX( ARRAY, M, N, MIN, MAX )
+C
+C --- PARAMETERS
+C --- ARRAY REAL array of which the limits are to be
+C --- determined
+C --- M INTEGER first dimension of ARRAY
+C --- N INTEGER second dimension of ARRAY
+C --- MIN REAL minimum value found in ARRAY (returned)
+C --- MAX REAL maximum value found in ARRAY (returned)
+C
+C --- RESTRICTIONS
+C --- If interrupts are to be detected, interrupt detection must have
+C --- been enabled by the calling program---see ABANDN for more
+C --- details.
+C
+C --- SUBPROGRAMS INVOKED
+C --- ABANDN
+C
+C --- COMMONS
+C --- none
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+C
+ INTEGER M, N
+ REAL ARRAY(M*N), LOWEST, HIEST
+C
+ INTEGER I, J, JM
+ REAL VAL, LO, HI
+ INTEGER*2 CHAN
+ LOGICAL ABFLAG
+C
+ COMMON /ALG_ABANDN/ ABFLAG, CHAN
+ SAVE /ALG_ABANDN/
+ EXTERNAL ALGINI
+C
+C --- We have declared ARRAY as a 1-D array, but will still access
+C --- it via two DO-loops. This is so that ABANDN is only invoked once
+C --- per "row" of ARRAY.
+C
+ LO = ARRAY(1)
+ HI = LO
+C
+ DO 1 J = 1, N
+ JM = (J-1) * M
+ IF( ABFLAG ) GO TO 2
+ DO 1 I = 1, M
+ VAL = ARRAY(I+JM)
+ IF( VAL .LT. LO ) LO = VAL
+ IF( VAL .GT. HI ) HI = VAL
+ 1 CONTINUE
+C
+ 2 CONTINUE
+ LOWEST = LO
+ HIEST = HI
+C
+ RETURN
+ END
+C --- ------------------------------------------------------------------
+ SUBROUTINE ALGERR( NAME, MESS, EXTRA )
+C --- ------------------------------------------------------------------
+C
+C --- ALGERR version 0.0 was written by Alien in Fortran-77.
+C
+C --- This routine reports errors generated by other routines. NAME is
+C --- the name of the invoking routine while MESS and EXTRA form the
+C --- message to be reported to the user. MESS is the text of the
+C --- message. EXTRA, if non-blank, contains extra information about
+C --- the error; leading and trailing blanks are removed from EXTRA
+C --- before it is output. The current version of this routine simply
+C --- outputs the message text on the error output channel -- future
+C --- versions will be more sophisticated.
+C
+C --- USAGE: CALL ALGERR( NAME, MESS, EXTRA )
+C
+C --- PARAMETERS
+C --- NAME CHARACTER*(*) name of the invoking routine
+C --- MESS CHARACTER*(*) message to be output
+C --- EXTRA CHARACTER*(*) additional text for the message
+C
+C --- RESTRICTIONS
+C --- The total length of the message must be less than the output
+C --- line length (usually 132 characters) -- this means that the
+C --- lengths of NAME and MESS, when added together, must come to less
+C --- then 110 characters.
+C
+C --- SUBPROGRAMS INVOKED
+C --- none
+C
+C --- COMMONS
+C --- /ALG/
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ CHARACTER*1 BLANK
+ PARAMETER( BLANK=' ' )
+C
+ CHARACTER*(*) NAME, MESS, EXTRA
+C
+ INTEGER NEXTRA, FC, LC, NMESS, LM
+C
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+C
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+ EXTERNAL ALGINI
+C
+ NMESS = LEN( MESS )
+ DO 1 LM = NMESS, 1, -1
+ IF( MESS(LM:LM) .NE. BLANK ) GO TO 2
+ 1 CONTINUE
+ LM = 1
+ 2 CONTINUE
+C
+ IF( EXTRA .EQ. BLANK ) THEN
+ WRITE( ELUN, 100 ) NAME, MESS(1:LM)
+ ELSE
+ NEXTRA = LEN( EXTRA )
+ DO 3 FC = 1, NEXTRA
+ IF( EXTRA(FC:FC) .NE. BLANK ) GO TO 4
+ 3 CONTINUE
+ 4 CONTINUE
+ DO 5 LC = NEXTRA, FC, -1
+ IF( EXTRA(LC:LC) .NE. BLANK ) GO TO 6
+ 5 CONTINUE
+ 6 CONTINUE
+ WRITE( ELUN, 100 ) NAME, MESS(1:LM)
+ WRITE( ELUN, 101 ) EXTRA(FC:LC)
+ END IF
+C
+ RETURN
+ 100 FORMAT(1X,A,': error -- ',A)
+ 101 FORMAT(10X,A)
+ END
+C --- ------------------------------------------------------------------
+ LOGICAL FUNCTION ABANDN( OP )
+C --- ------------------------------------------------------------------
+C
+C --- ABANDN version 0.1 was written by Alien in Fortran-77.
+C
+C --- This LOGICAL function is used to detect whether the user has
+C --- tried to interrupt execution.
+C
+C --- The method of specifying an interrupt varies from system to
+C --- system, but is typically by typing a control character
+C --- (control-C on the VAX). ABANDN is used with OP = 0 to TEST
+C --- whether the user has signalled an interrupt -- the value TRUE is
+C --- returned as the value of the function if this is the case.
+C --- ABANDN is used with OP = 1 to SET or CLEAR the interrupt trap;
+C --- this must be done by the calling program. Note that ABANDN
+C --- returns the value TRUE if an error occurred while setting or
+C --- clearing the interrupt trap.
+C
+C --- USAGE: <logical variable> = ABANDN( OP )
+C
+C --- PARAMETERS
+C --- OP INTEGER operation 0 ==> test, 1 ==> set
+C
+C --- RESTRICTIONS
+C --- Interrupts will not be trapped before the first invocation of
+C --- ABANDN(1).
+C --- After the user has signalled an interrupt, subsequent
+C --- invocations of ABANDN(0) will return TRUE until ABANDN(1) is
+C --- used to clear it.
+C --- If the user generates interrupts very quickly (for example, by
+C --- letting the ^C auto-repeat), they may be delivered so quickly
+C --- that ABANDN does not manage to reset its trap in time; in this
+C --- case, it will actually interrupt program execution.
+C --- This version of ABANDN requires VAX/VMS 3.0 or later.
+C
+C --- SUBPROGRAMS INVOKED
+C --- ALG_ABANDN_AST (condition handler)
+C
+C --- COMMONS
+C --- /ALG_ABANDN/
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ INCLUDE '($IODEF)'
+C
+ INTEGER ABSET, ABTEST
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+ PARAMETER( ABSET=1, ABTEST=0 )
+C
+ INTEGER OP
+C
+ CHARACTER*(MAXICH) CODE
+ INTEGER F
+ INTEGER IOS, VAL, SYS$GETDVI, SYS$ASSIGN, SYS$QIOW, SYS$DASSGN
+ INTEGER DVIBLK(4)/ '40004'X, 0, 0, 0/
+ INTEGER*2 IOSB(4)
+ LOGICAL FIRST/.TRUE./
+ EXTERNAL ALG_ABANDN_AST
+ INTEGER*2 CHAN
+ LOGICAL ABFLAG
+C
+ COMMON /ALG_ABANDN/ ABFLAG, CHAN
+ SAVE /ALG_ABANDN/
+C
+C --- Branch according to the value of OP.
+C
+ IF( OP .EQ. ABTEST ) THEN
+ ABANDN = ABFLAG
+ ELSE IF( OP .EQ. ABSET ) THEN
+ ABANDN = .FALSE.
+ IF( FIRST ) THEN
+C
+C --- Check that we're using a terminal.
+C
+ DVIBLK(2) = %LOC( VAL )
+ IOS = SYS$GETDVI( ,, 'TT', DVIBLK, ,,, )
+ IF( .NOT. IOS ) CALL EXIT( IOS )
+ IF( VAL .EQ. '42'X ) THEN
+C
+C --- If we're using a terminal, assign a channel to the device and set
+C --- the trap; failure from any of the system services is taken as a
+C --- fatal error. We will only return a failure code to the user if
+C --- IOSB(1) indicates an error.
+C
+ IOS = SYS$ASSIGN( 'TT', CHAN,, )
+ IF( .NOT. IOS ) CALL EXIT( IOS )
+ IOS = SYS$QIOW(, %VAL(CHAN), %VAL(IO$_SETMODE.OR.IO$M_CTR
+ &LCAST),
+ & IOSB, ,, ALG_ABANDN_AST, ,,,, )
+ IF( .NOT. IOS ) CALL EXIT( IOS )
+ IF( IOSB(1) ) THEN
+ FIRST = .FALSE.
+ ELSE
+C
+C --- We didn't succeed in setting the interrupt trap, heaven knows why!
+C --- Set the function to return an error code, then close the channel
+C --- we
+C --- have so carefully opened.
+C
+ ABANDN = .TRUE.
+ IOS = SYS$DASSGN( %VAL(CHAN) )
+ IF( .NOT. IOS ) CALL EXIT( IOS )
+ END IF
+ END IF
+ END IF
+ ABFLAG = .FALSE.
+ ELSE
+ STOP 'ABANDN: Illegal argument value.'
+ END IF
+C
+ RETURN
+ 100 FORMAT(I11)
+ END
+C --- ------------------------------------------------------------------
+ SUBROUTINE ALG_ABANDN_AST
+C --- ------------------------------------------------------------------
+C
+C --- This routine is the condition handler which is used in the
+C --- implementation of ABANDN for VAX/VMS. It is called by the system
+C --- when the user types ^C at his terminal; its main purpose is to set
+C --- ABFLAG in common /ALG_ABANDN/, to be tested by ABANDN(ABTEST).
+C --- However, because VMS ^C condition handlers are one-shot affairs,
+C --- we must also re-impose the trap. This is done by invoking the
+C --- simple routine ALG_ABANDN_RESET_TRAP.
+C
+ INTEGER*2 CHAN
+ LOGICAL ABFLAG
+C
+ COMMON /ALG_ABANDN/ ABFLAG, CHAN
+ SAVE /ALG_ABANDN/
+C
+C --- Set ABFLAG.
+C
+ ABFLAG = .TRUE.
+C
+C --- And reset the trap.
+C
+ CALL ALG_ABANDN_RESET_TRAP
+C
+ RETURN
+ END
+C --- ------------------------------------------------------------------
+ SUBROUTINE ALG_ABANDN_RESET_TRAP
+C --- ------------------------------------------------------------------
+C
+C --- This routine resets the ^C trap for ALG_ABANDN_AST, because the
+C --- Fortran compiler will not allow ALG_ABANDN_AST to be used in the
+C --- $QIOW call inside its own code.
+C
+ INCLUDE '($IODEF)'
+ INTEGER*2 IOSB(4)
+ INTEGER IOS, SYS$QIOW
+ EXTERNAL ALG_ABANDN_AST
+C
+ INTEGER*2 CHAN
+ LOGICAL ABFLAG
+C
+ COMMON /ALG_ABANDN/ ABFLAG, CHAN
+ SAVE /ALG_ABANDN/
+C
+ IOS = SYS$QIOW(, %VAL(CHAN), %VAL(IO$_SETMODE.OR.IO$M_CTRLCAST),
+ & IOSB, ,, ALG_ABANDN_AST, ,,,, )
+ IF( .NOT. IOS ) CALL EXIT( IOS )
+C
+ RETURN
+ END
+C --- ------------------------------------------------------------------
+ B L O C K D A T A A L G I N I
+C --- ------------------------------------------------------------------
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+C --- The following definitions are used to allow expressions to be
+C --- typed for the initial values of variables.
+C
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+ INTEGER ORDRED, RNDOM, STRAIT
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+ PARAMETER( ORDRED=1, RNDOM=2, STRAIT=0 )
+ INTEGER MOUT1, MSTAT
+ PARAMETER (MOUT1=MAXOUT-1, MSTAT=MAXSTV+1)
+C
+C --- Include all the common variables and blocks.
+C
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+ INTEGER*2 CHAN
+ LOGICAL ABFLAG
+ CHARACTER*1 BLANK, VMARK, HMARK, TICK
+ CHARACTER*(MAXOUT) LPBUF
+ INTEGER LPHT, LPWID
+ LOGICAL FF
+ REAL ASPECT
+ LOGICAL USEM, EXACT, KNOWEM(0:MAXSTV)
+ REAL MINS(0:MAXSTV), MAXS(0:MAXSTV), MEANS(0:MAXSTV),
+ & SDS(0:MAXSTV)
+ INTEGER MMAX
+ INTEGER METHOD
+C
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+ COMMON /ALG_ABANDN/ ABFLAG, CHAN
+ SAVE /ALG_ABANDN/
+ COMMON /LPC/ LPBUF, BLANK, VMARK, HMARK, TICK
+ COMMON /LPN/ ASPECT, LPHT, LPWID, FF
+ SAVE /LPC/, /LPN/
+ COMMON /STAT/ MINS, MAXS, MEANS, SDS, USEM, KNOWEM, EXACT
+ SAVE /STAT/
+ COMMON/ALGTEX/ MMAX
+ SAVE /ALGTEX/
+ COMMON /V80/ METHOD
+C
+C --- / A L G /
+C
+ DATA LOGX/.FALSE./, LOGY/.FALSE./, LOGZ/.FALSE./, LOGR/.FALSE./
+ DATA XMIN/0.0/, XMAX/0.0/, YMIN/0.0/, YMAX/0.0/, ZMIN/0.0/,
+ & ZMAX/0.0/, RMIN/0.0/, RMAX/0.0/, TMIN/0.0/, TMAX/0.0/
+ DATA XFIX/.FALSE./, YFIX/.FALSE./, ZFIX/.FALSE./
+ DATA RFIX/.FALSE./, TFIX/.FALSE./
+ DATA VRBOSE/.FALSE./, NEG/.FALSE./
+ DATA MIDORG/.TRUE./, FTNRML/.FALSE./
+ DATA GLUN/6/, PLUN/6/, ELUN/6/, POLHIS/GRFGRF/
+ DATA TOL/1.0E-8/
+ DATA FTFWD/0.0/, FTREV/0.0/
+C
+C --- / A B A N D N /
+C
+ DATA ABFLAG/.FALSE./
+C
+C --- / A L G T E X /
+C
+ DATA MMAX/256/
+C
+C --- / L P C /
+C
+ DATA BLANK/' '/, VMARK/'|'/, HMARK/'-'/, TICK/'+'/
+C
+C --- / L P N /
+C
+ DATA FF/.TRUE./
+ DATA LPHT/62/, LPWID/MOUT1/
+ DATA ASPECT/ 0.604 /
+C
+C --- / S T A T /
+C
+ DATA USEM/NOUSEM/, KNOWEM/MSTAT*.FALSE./, EXACT/.FALSE./
+ DATA MEANS/MSTAT*0.0/, SDS/MSTAT*0.0/
+ DATA MINS/MSTAT*0.0/, MAXS/MSTAT*0.0/
+C
+C --- / V 8 0 /
+C
+ DATA METHOD/STRAIT/
+C
+ END
+$EOD
+$WRITE SYS$OUTPUT "creating HALFTONE.MF"
+$CREATE HALFTONE.MF
+$DECK
+% halftone font with 65 levels of gray, characters "0" (white) to "p" (black)
+
+pair p[]; % the pixels in order (first p0 becomes black, then p1, etc)
+p0=(1,1);
+p8=(2,0);
+p16=(1,0);
+p24=(0,0);
+p32=(3,-1);
+p40=(2,-1);
+p48=(1,-1);
+p56=(2,-2);
+transform r; r=identity rotatedaround ((1.5,1.5),90);
+
+for i=0 step 8 until 56:
+ p[i+2]=p[i] transformed r;
+ p[i+6]=p[i+2] transformed r;
+ p[i+5]=p[i+6] transformed r;
+ p[i+1]=p[i] shifted (4,4);
+ p[i+3]=p[i+2] shifted (4,4);
+ p[i+7]=p[i+6] shifted (4,4);
+ p[i+4]=p[i+5] shifted (4,4);
+ endfor
+
+for i=32 step 1 until 63:
+ p[i] := (xpart p[i] mod 8, ypart p[i] mod 8);
+endfor
+
+mode_setup;
+designsize:=64/pt; % that's 64 pixels
+
+def makebox(text t)= enddef; % shut off boxes
+
+picture prevchar;
+
+prevchar=nullpicture;
+for i=0 upto 64:
+ beginchar(i+ASCII"0",designsize/8,designsize/8,0);
+ currentpicture:=prevchar;
+ if i>0: fill unitsquare shifted p[i-1]; fi
+ prevchar:=currentpicture;
+ endchar;
+ endfor
+
+font_quad=designsize/8;
+end
+$EOD
diff --git a/fonts/halftone/texpic.for b/fonts/halftone/texpic.for
new file mode 100644
index 0000000000..2fa5f8b246
--- /dev/null
+++ b/fonts/halftone/texpic.for
@@ -0,0 +1,1347 @@
+C --- -----------------------------------------------------------------
+C --- T e X P I C
+C --- -----------------------------------------------------------------
+C
+C --- These routines are used to generate an input file to TeX which,
+C --- when processed, gives a halftone representation of the grey-level
+C --- image. TEXPIC is the main picture-plotting routine: it requires a
+C --- M x N pixel array ARRAY. The TeX commands are written to the file
+C --- FN. These routines are taken from a general-purpose library of
+C --- image processing software developed by the author, which explains
+C --- why most of the variables in the COMMON blocks are not used. The
+C --- Fortran is also machine-generated, which may account for some odd
+C --- line breaks in the code. (No line, even in comments, has more
+C --- than 72 characters in it.)
+C
+C --- The image representation used here conforms to the one adopted by
+C --- the Numerical Algorithms Group (NAG) for their ``Image Processing
+C --- Algorithm Library'' IPAL, although the coding does not (it does
+C --- not allow a sub-region to be plotted).
+C
+C --- There are two versions of TEXPIC in this file: the first is VAX-
+C --- specific, while the second should be fairly portable. Note that
+C --- both routines declare the BLOCK DATA module ALGINI as EXTERNAL;
+C --- this usually forces the linker to build it into executable files.
+C
+C --- TEXPIC's support routines are:
+C
+C --- TEXMAX set the maximum pixel width across the page
+C --- ZRANGE fix the contrast for subsequent TEXPIC calls
+C --- ZAUTO subsequent pictures have their contrast determined
+C --- from the data
+C --- ZSAME subsequent pictures are plotted with the same
+C --- contrast as the previous one
+C --- DOPOS subsequent pix have low pixel values plotted black
+C --- DONEG subsequent pix have low pixel values plotted white
+C --- MINMAX determines the range of the data
+C --- ALGERR outputs error messages
+C --- ABANDN VAX-specific ^C trap routine
+C --- ALGINI block data module
+C
+C --- Details of the invocations are given in the comments associated
+C --- with each routine. There is also a separate document which gives
+C --- user-level documentation and examples. This is available as part
+C --- of the ``VAX/VMS TeX User's Guide'', written by the author, or as
+C --- a separate document.
+C
+C --- As supplied, TEXPIC uses a three-point contextual bilinear method
+C --- to interpolate between pixels. The results it produces should be
+C --- marginally better than using standard four-point interpolation;
+C --- however, the author can detect no difference. If you'd prefer to
+C --- use four-point interpolation, the line to change is marked in the
+C --- TEXPIC source code.
+C
+C --- Since you get TEXPIC free of charge, there is no formal guarantee
+C --- given by Essex University OR the author that the software works
+C --- or that the documentation agrees with the code. Nevertheless, the
+C --- author would be pleased to hear of any problems.
+C
+C --- TEXPIC and associated routines were written by:
+C
+C --- Dr. Adrian F. Clark (``Alien'')
+C --- of Department of Electronic Systems Engineering
+C --- University of Essex
+C --- Wivenhoe Park
+C --- Colchester
+C --- Essex C04 3SQ
+C --- United Kingdom
+C --- Tel: Colchester (0206) 872432 (direct)
+C --- JANET: user ALIEN @UK.AC.ESSEX.ESE
+C
+C --- If you write, please mark the envelope with ``TeX''.
+C
+C --- Acknowledgements in any published work that uses TEXPIC would be
+C --- appreciated.
+C
+C --- ENJOY!
+C
+C --- -----------------------------------------------------------------
+ SUBROUTINE TEXPIC( ARRAY, M, N, FN )
+C --- -----------------------------------------------------------------
+C
+C --- TEXPIC version 0.1 was written by Alien in Fortran-77.
+C
+C --- This routine writes out the M x N image ARRAY into the file FN
+C --- in a form which is suitable for insertion into a TeX document.
+C --- If FN has no filetype (``extension''), .TEX is used.
+C
+C --- By default, the range of the data is determined and used to
+C --- maximise the contrast of the output image. This can be
+C --- overridden by pre-setting the range of data values with a call
+C --- to ZRANGE. ZAUTO restores the default behaviour. Similarly,
+C --- TEXPIC will produce negated images on output if DONEG has
+C --- previously been invoked. DOPOS sets it to produce positive
+C --- pictures again.
+C
+C --- USAGE: CALL TEXPIC( ARRAY, M, N, FN )
+C
+C --- PARAMETERS
+C --- ARRAY REAL image to be output to the file
+C --- M INTEGER first dimension of ARRAY
+C --- N INTEGER second dimension of ARRAY
+C --- FN CHARACTER*(*) name of file to which ARRAY will
+C --- be written
+C
+C --- RESTRICTIONS
+C --- If N is greater than MMAX, the image will be sub-sampled in both
+C --- directions to make the result MMAX x MMAX. The interpolation
+C --- technique used is due to P.R. Smith (Ultramicroscopy vol 6, pp
+C --- 201--204, 1981).
+C
+C --- COMMONS
+C --- /ALG/, /ALGTEX/
+C
+C --- SUBPROGRAMS INVOKED
+C --- MINMAX, LIB$GET_LUN, LIB$FREE_LUN
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ INTEGER LEVELS, MINIDX, CMAX
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+ PARAMETER( LEVELS=65, MINIDX=48, CMAX=132 )
+C
+ CHARACTER*(*) FN
+ INTEGER M, N
+ REAL ARRAY(M,N)
+C
+ CHARACTER*(CMAX) C
+ CHARACTER*6 RUTNAM
+ INTEGER NMAX, I, J, IC, IV, LUN, IOS, ILO, JLO, IHI, JHI
+ INTEGER LIB$GET_LUN, LIB$FREE_LUN
+ LOGICAL POS
+ REAL RANGE, INC
+ REAL X, Y, DX, DY, DX1, DY1, VAL
+C
+ INTEGER*2 CHAN
+ LOGICAL ABFLAG
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+ INTEGER MMAX
+C
+ COMMON /ALG_ABANDN/ ABFLAG, CHAN
+ SAVE /ALG_ABANDN/
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+ COMMON/ALGTEX/ MMAX
+ SAVE /ALGTEX/
+ EXTERNAL ALGINI
+ DATA RUTNAM/'TEXPIC'/
+C
+C --- Find the range of the data if we're in auto mode; otherwise,
+C --- use the specified ranges.
+C
+ IF( .NOT. ZFIX ) THEN
+ CALL MINMAX( ARRAY, M, N, ZMIN, ZMAX )
+ IF( ZMIN .EQ. ZMAX ) ZMAX = ZMIN + 1
+ END IF
+C
+C --- We can't print more than MMAX columns across the TeX output.
+C --- If the user passes an array bigger than this, we'll interpolate
+C --- it down to MMAX.
+C
+ IF( M .GT. MMAX ) THEN
+ INC = FLOAT(M) / FLOAT(MMAX)
+ NMAX = NINT( FLOAT(N) / INC )
+ ELSE
+ INC = 0
+ END IF
+C
+C --- Get a free channel number and open the output file.
+C
+ IOS = LIB$GET_LUN( LUN )
+ IF( .NOT. IOS ) CALL EXIT( IOS )
+C
+ OPEN( UNIT=LUN, FILE=FN, STATUS='NEW', RECL=CMAX+1, IOSTAT=IOS,
+ & DEFAULTFILE='.TEX', CARRIAGECONTROL='LIST' )
+ IF( IOS .EQ. 0 ) THEN
+C
+C --- Calculate the scaling factor.
+C
+ POS = .NOT. NEG
+ RANGE = FLOAT(LEVELS-1) / (ZMAX-ZMIN)
+C
+C --- Output the introduction.
+C
+ WRITE( LUN, 100 )
+C
+C --- Output the image without interpolation if INC is zero.
+C
+ IF( ABS(INC) .LT. TOL ) THEN
+ DO 2 J = 1, N
+ IF( ABFLAG ) GO TO 5
+ IC = 1
+ C(1:1) = ','
+ DO 1 I = 1, M
+ VAL = ARRAY(I,J)
+ IF( VAL .LT. ZMIN ) VAL = ZMIN
+ IF( VAL .GT. ZMAX ) VAL = ZMAX
+ IV = NINT((VAL-ZMIN) * RANGE)
+ IF( POS ) IV = (LEVELS-1) - IV
+ IC = IC + 1
+ C(IC:IC) = CHAR( IV + MINIDX )
+ IF( IC .GE. CMAX-1 ) THEN
+ WRITE( LUN, 200 ) C(1:IC)
+ IC = 1
+ C(1:1) = ' '
+ END IF
+ 1 CONTINUE
+ IF( IC .GT. 0 ) WRITE(LUN, 300) C(1:IC)
+ 2 CONTINUE
+ ELSE
+C
+C --- Interpolate the output.
+C
+ Y = 1
+ DO 4 J = 1, NMAX
+ IF( ABFLAG ) GO TO 5
+ DY = Y - INT(Y)
+ DY1 = 1 - DY
+ JLO = MOD( INT(Y-1), N ) + 1
+ JHI = MOD( JLO, N ) + 1
+ X = 1
+ IC = 1
+ C(1:1) = ','
+ DO 3 I = 1, MMAX
+ DX = X - INT(X)
+ DX1 = 1 - DX
+ ILO = MOD( INT(X)-1, M ) + 1
+ IHI = MOD( ILO, M ) + 1
+C
+C --- Smith's three-point contextual bilinear interpolation.
+C
+ IF( ABS(ARRAY(ILO,JLO)-ARRAY(IHI,JHI)) .GT.
+ & ABS(ARRAY(IHI,JLO)-ARRAY(ILO,JHI)) ) THEN
+ VAL = (DX-DY)*ARRAY(IHI,JLO) + DX1*ARRAY(ILO,JLO) +
+ & DY*ARRAY(IHI,JHI)
+ ELSE
+ VAL = (DX1-DY)*ARRAY(ILO,JLO) + DX*ARRAY(IHI,JLO) +
+ & DY*ARRAY(ILO,JHI)
+ END IF
+ X = X + INC
+ IF( VAL .LT. ZMIN ) VAL = ZMIN
+ IF( VAL .GT. ZMAX ) VAL = ZMAX
+ IV = NINT((VAL-ZMIN) * RANGE)
+ IF( POS ) IV = (LEVELS-1) - IV
+ IC = IC + 1
+ C(IC:IC) = CHAR( IV + MINIDX )
+ IF( IC .GE. CMAX-1 ) THEN
+ WRITE( LUN, 200 ) C(1:IC)
+ IC = 1
+ C(1:1) = ' '
+ END IF
+ 3 CONTINUE
+ IF( IC .GT. 0 ) WRITE(LUN, 300) C(1:IC)
+C
+ Y = Y + INC
+ 4 CONTINUE
+ END IF
+C
+C --- Close off the file.
+C
+ 5 CONTINUE
+ WRITE( LUN, 400 )
+ CLOSE( UNIT=LUN )
+ ELSE
+ CALL ALGERR( RUTNAM, 'Cannot open specified output file:',
+ & FN )
+ END IF
+C
+C --- Release the channel.
+C
+ IOS = LIB$FREE_LUN( LUN )
+ IF( .NOT. IOS ) CALL EXIT( IOS )
+C
+ RETURN
+ 100 FORMAT(' \hbox{\vbox{\halftone\offinterlineskip ',
+ & '% machine-generated by TEXPIC.'/
+ & ' \def\BHT{\hbox\bgroup\ignorespaces}'/
+ & ' \catcode`\^=12 \catcode`\_=12 \catcode`\.=\active',
+ & ' \let.=\egroup'/ ' \catcode`\,=\active \let,=\BHT',
+ & ' \catcode`\/=0 \catcode`\\=12')
+ 200 FORMAT(1X,A,'%')
+ 300 FORMAT(1X,A,'.')
+ 400 FORMAT(' }}%')
+ END
+C --- -----------------------------------------------------------------
+ SUBROUTINE TEXPIC( ARRAY, M, N, FN )
+C --- -----------------------------------------------------------------
+C
+C --- TEXPIC version 0.1 was written by Alien in Fortran-77.
+C
+C --- This routine writes out the M x N image ARRAY into the file FN
+C --- in a form which is suitable for insertion into a TeX document.
+C
+C --- By default, the range of the data is determined and used to
+C --- maximise the contrast of the output image. This can be
+C --- overridden by pre-setting the range of data values with a call
+C --- to ZRANGE. ZAUTO restores the default behaviour. Similarly,
+C --- TEXPIC will produce negated images on output if DONEG has
+C --- previously been invoked. DOPOS sets it to produce positive
+C --- pictures again.
+C
+C --- USAGE: CALL TEXPIC( ARRAY, M, N, FN )
+C
+C --- PARAMETERS
+C --- ARRAY REAL image to be output to the file
+C --- M INTEGER first dimension of ARRAY
+C --- N INTEGER second dimension of ARRAY
+C --- FN CHARACTER*(*) name of file to which ARRAY will
+C --- be written
+C
+C --- RESTRICTIONS
+C --- If N is greater than MMAX, the image will be sub-sampled in both
+C --- directions to make the result MMAX x MMAX. The interpolation
+C --- technique used is due to P.R. Smith (Ultramicroscopy vol 6, pp
+C --- 201--204, 1981).
+C
+C --- COMMONS
+C --- /ALG/, /ALGTEX/
+C
+C --- SUBPROGRAMS INVOKED
+C --- MINMAX
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT CHARACTER*1 (A-Z)
+C
+ INTEGER LEVELS, MINIDX, CMAX
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+ PARAMETER( LEVELS=65, MINIDX=48, CMAX=132 )
+C
+ CHARACTER*(*) FN
+ INTEGER M, N
+ REAL ARRAY(M,N)
+C
+ CHARACTER*(CMAX) C
+ CHARACTER*6 RUTNAM
+ INTEGER NMAX, I, J, IC, IV, LUN, IOS, ILO, JLO, IHI, JHI
+ LOGICAL POS
+ REAL RANGE, INC
+ REAL X, Y, DX, DY, DX1, DY1, VAL
+C
+ LOGICAL ABANDN
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+ INTEGER MMAX
+C
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+ COMMON/ALGTEX/ MMAX
+ SAVE /ALGTEX/
+ EXTERNAL ALGINI
+ DATA RUTNAM/'TEXPIC'/
+C
+C --- Find the range of the data if we're in auto mode; otherwise,
+C --- use the specified ranges.
+C
+ IF( .NOT. ZFIX ) THEN
+ CALL MINMAX( ARRAY, M, N, ZMIN, ZMAX )
+ IF( ZMIN .EQ. ZMAX ) ZMAX = ZMIN + 1
+ END IF
+C
+C --- We can't print more than MMAX columns across the TeX output.
+C --- If the user passes an array bigger than this, we'll interpolate
+C --- it down to MMAX.
+C
+ IF( M .GT. MMAX ) THEN
+ INC = FLOAT(M) / FLOAT(MMAX)
+ NMAX = NINT( FLOAT(N) / INC )
+ ELSE
+ INC = 0
+ END IF
+C
+C --- We always open the output file on channel 7 (fix me!).
+C
+ LUN = 7
+ OPEN( UNIT=LUN, FILE=FN, STATUS='NEW', RECL=CMAX+1, IOSTAT=IOS )
+ IF( IOS .EQ. 0 ) THEN
+C
+C --- Calculate the scaling factor.
+C
+ POS = .NOT. NEG
+ RANGE = FLOAT(LEVELS-1) / (ZMAX-ZMIN)
+C
+C --- Output the introduction.
+C
+ WRITE( LUN, 100 )
+C
+C --- Output the image without interpolation if INC is zero.
+C
+ IF( ABS(INC) .LT. TOL ) THEN
+ DO 2 J = 1, N
+ IF( ABANDN(0) ) GO TO 5
+ IC = 1
+ C(1:1) = ','
+ DO 1 I = 1, M
+ VAL = ARRAY(I,J)
+ IF( VAL .LT. ZMIN ) VAL = ZMIN
+ IF( VAL .GT. ZMAX ) VAL = ZMAX
+ IV = NINT((VAL-ZMIN) * RANGE)
+ IF( POS ) IV = (LEVELS-1) - IV
+ IC = IC + 1
+ C(IC:IC) = CHAR( IV + MINIDX )
+ IF( IC .GE. CMAX-1 ) THEN
+ WRITE( LUN, 200 ) C(1:IC)
+ IC = 1
+ C(1:1) = ' '
+ END IF
+ 1 CONTINUE
+ IF( IC .GT. 0 ) WRITE(LUN, 300) C(1:IC)
+ 2 CONTINUE
+ ELSE
+C
+C --- Interpolate the output.
+C
+ Y = 1
+ DO 4 J = 1, NMAX
+ IF( ABANDN(0) ) GO TO 5
+ DY = Y - INT(Y)
+ DY1 = 1 - DY
+ JLO = MOD( INT(Y-1), N ) + 1
+ JHI = MOD( JLO, N ) + 1
+ X = 1
+ IC = 1
+ C(1:1) = ','
+ DO 3 I = 1, MMAX
+ DX = X - INT(X)
+ DX1 = 1 - DX
+ ILO = MOD( INT(X)-1, M ) + 1
+ IHI = MOD( ILO, M ) + 1
+C
+C --- Smith's three-point contextual bilinear interpolation.
+C
+ IF( ABS(ARRAY(ILO,JLO)-ARRAY(IHI,JHI)) .GT.
+ & ABS(ARRAY(IHI,JLO)-ARRAY(ILO,JHI)) ) THEN
+ VAL = (DX-DY)*ARRAY(IHI,JLO) + DX1*ARRAY(ILO,JLO) +
+ & DY*ARRAY(IHI,JHI)
+ ELSE
+ VAL = (DX1-DY)*ARRAY(ILO,JLO) + DX*ARRAY(IHI,JLO) +
+ & DY*ARRAY(ILO,JHI)
+ END IF
+ X = X + INC
+ IF( VAL .LT. ZMIN ) VAL = ZMIN
+ IF( VAL .GT. ZMAX ) VAL = ZMAX
+ IV = NINT((VAL-ZMIN) * RANGE)
+ IF( POS ) IV = (LEVELS-1) - IV
+ IC = IC + 1
+ C(IC:IC) = CHAR( IV + MINIDX )
+ IF( IC .GE. CMAX-1 ) THEN
+ WRITE( LUN, 200 ) C(1:IC)
+ IC = 1
+ C(1:1) = ' '
+ END IF
+ 3 CONTINUE
+ IF( IC .GT. 0 ) WRITE(LUN, 300) C(1:IC)
+C
+ Y = Y + INC
+ 4 CONTINUE
+ END IF
+C
+C --- Close off the file.
+C
+ 5 CONTINUE
+ WRITE( LUN, 400 )
+ CLOSE( UNIT=LUN )
+ ELSE
+ CALL ALGERR( RUTNAM, 'Cannot open specified output file:',
+ & FN )
+ END IF
+C
+C
+ RETURN
+ 100 FORMAT(' \hbox{\vbox{\halftone\offinterlineskip ',
+ & '% machine-generated by TEXPIC.'/
+ & ' \def\BHT{\hbox\bgroup\ignorespaces}'/
+ & ' \catcode`\^=12 \catcode`\_=12 \catcode`\.=\active',
+ & ' \let.=\egroup'/ ' \catcode`\,=\active \let,=\BHT',
+ & ' \catcode`\/=0 \catcode`\\=12')
+ 200 FORMAT(1X,A,'%')
+ 300 FORMAT(1X,A,'.')
+ 400 FORMAT(' }}%')
+ END
+C --- -----------------------------------------------------------------
+ SUBROUTINE TEXMAX( MV )
+C --- -----------------------------------------------------------------
+C
+C --- TEXMAX version 0.0 was written by Alien in Fortran-77.
+C
+C --- This routine sets the maximum number of pixels across a picture
+C --- which TEXPIC will output to a file. Pictures which have their
+C --- first dimension greater than MMAX are interpolated down to MMAX
+C --- pixels.
+C
+C --- USAGE: CALL TEXMAX( MMAX )
+C
+C --- PARAMETERS
+C --- MMAX INTEGER maximum number of pixels to be plotted by
+C --- TEXPIC
+C
+C --- RESTRICTIONS
+C --- none
+C
+C --- COMMONS
+C --- /ALGTEX/
+C
+C --- SUBPROGRAMS INVOKED
+C --- none
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+C
+ INTEGER MV
+C
+ CHARACTER*(MAXICH) BUF
+C
+ INTEGER MMAX
+C
+ COMMON/ALGTEX/ MMAX
+ SAVE /ALGTEX/
+C
+ IF( MV .GE. 2 ) THEN
+ MMAX = MV
+ ELSE
+ WRITE( BUF, 100 ) MV
+ CALL ALGERR( 'TEXMAX',
+ & 'Too few pixels selected across page:'//BUF,
+ & 'You must have two or more pixels across the page' )
+ END IF
+C
+ RETURN
+ 100 FORMAT(I11)
+ END
+C --- ------------------------------------------------------------------
+ SUBROUTINE ZRANGE( ZVMIN, ZVMAX )
+C --- ------------------------------------------------------------------
+C
+C --- ZRANGE version 0.0 was written by Alien in Fortran-77.
+C
+C --- This routine fixes the range of the Z-axis for subsequent
+C --- graphical plots.
+C
+C --- USAGE: CALL ZRANGE( ZMIN, ZMAX )
+C
+C --- PARAMETERS
+C --- ZMIN REAL minimum value to appear on the Z-axis
+C --- ZMAX REAL maximum value to appear on the Z-axis
+C
+C --- RESTRICTIONS
+C --- ZMIN must be smaller than ZMAX.
+C --- Note that the range of values actually produced on graphs may be
+C --- slightly greater than those specified.
+C
+C --- SUBPROGRAMS INVOKED
+C --- ALGERR
+C
+C --- COMMONS
+C --- ZFIX, ZMIN, ZMAX in /ALG/
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+C
+ REAL ZVMIN, ZVMAX
+C
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+C
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+C
+ IF( ZVMIN .LT. ZVMAX ) THEN
+ ZMIN = ZVMIN
+ ZMAX = ZVMAX
+ ZFIX = .TRUE.
+ ELSE
+ CALL ALGERR('ZRANGE','Zmin was not smaller than Zmax.',' ')
+ END IF
+C
+ RETURN
+ END
+C --- ------------------------------------------------------------------
+ SUBROUTINE ZAUTO
+C --- ------------------------------------------------------------------
+C
+C --- ZAUTO version 0.0 was written by Alien in Fortran-77.
+C
+C --- This routine causes the Z-axis of subsequent graphical plots
+C --- to be scaled according to the data being plotted.
+C
+C --- USAGE: CALL ZAUTO
+C
+C --- PARAMETERS
+C --- none
+C
+C --- RESTRICTIONS
+C --- none
+C
+C --- SUBPROGRAMS INVOKED
+C --- none
+C
+C --- COMMONS
+C --- ZFIX in /ALG/
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+C
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+C
+ ZFIX = .FALSE.
+C
+ RETURN
+ END
+C --- ------------------------------------------------------------------
+ SUBROUTINE ZSAME
+C --- ------------------------------------------------------------------
+C --- ZSAME version 0.0
+C
+C --- Written by Alien in Fortran-77.
+C
+C --- This routine causes the range of the Z-axis on subsequent
+C --- graphical plots to be the same as those used on the previous
+C --- invocation.
+C
+C --- USAGE: CALL ZSAME
+C
+C --- PARAMETERS
+C --- none
+C
+C --- RESTRICTIONS
+C --- none
+C
+C --- SUBPROGRAMS INVOKED
+C --- |ALGERR|
+C
+C --- COMMONS
+C --- |ZFIX|, |ZMIN|, |ZMAX| in |/ALG/|
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+C
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+C
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+C
+ IF( ZMIN .LT. ZMAX ) THEN
+ ZFIX = .TRUE.
+ ELSE
+ CALL ALGERR('ZSAME','Zmin was not smaller than Zmax.',
+ & 'Call ignored.' )
+ END IF
+C
+ RETURN
+ END
+C --- -----------------------------------------------------------------
+ SUBROUTINE DONEG
+C --- -----------------------------------------------------------------
+C
+C --- DONEG version 0.0 was written by Alien in Fortran-77.
+C
+C --- This routine causes subsequent grey-level pictures to be drawn
+C --- with negative contrast.
+C
+C --- USAGE: CALL DONEG
+C
+C --- PARAMETERS
+C --- none
+C
+C --- RESTRICTIONS
+C --- none
+C
+C --- SUBPROGRAMS INVOKED
+C --- none
+C
+C --- COMMONS
+C --- NEG in /ALG/
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+C
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+C
+C
+ NEG = .TRUE.
+C
+ RETURN
+ END
+C --- -----------------------------------------------------------------
+ SUBROUTINE DOPOS
+C --- -----------------------------------------------------------------
+C
+C --- DOPOS version 0.0 was written by Alien in Fortran-77.
+C
+C --- This routine causes subsequent grey-level pictures to be drawn
+C --- with negative contrast.
+C
+C --- USAGE: CALL DOPOS
+C
+C --- PARAMETERS
+C --- none
+C
+C --- RESTRICTIONS
+C --- none
+C
+C --- SUBPROGRAMS INVOKED
+C --- none
+C
+C --- COMMONS
+C --- NEG in /ALG/
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+C
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+C
+C
+ NEG = .FALSE.
+C
+ RETURN
+ END
+C --- ------------------------------------------------------------------
+ SUBROUTINE MINMAX( ARRAY, M, N, LOWEST, HIEST )
+C --- ------------------------------------------------------------------
+C
+C --- MINMAX version 0.0 was written by Alien in Fortran-77.
+C
+C --- This routine determines the smallest and largest values of an
+C --- array. If an interrupt is detected during the estimation of the
+C --- limits of the data, the currently-detected limits are returned.
+C
+C --- USAGE: CALL MINMAX( ARRAY, M, N, MIN, MAX )
+C
+C --- PARAMETERS
+C --- ARRAY REAL array of which the limits are to be
+C --- determined
+C --- M INTEGER first dimension of ARRAY
+C --- N INTEGER second dimension of ARRAY
+C --- MIN REAL minimum value found in ARRAY (returned)
+C --- MAX REAL maximum value found in ARRAY (returned)
+C
+C --- RESTRICTIONS
+C --- If interrupts are to be detected, interrupt detection must have
+C --- been enabled by the calling program---see ABANDN for more
+C --- details.
+C
+C --- SUBPROGRAMS INVOKED
+C --- ABANDN
+C
+C --- COMMONS
+C --- none
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+C
+ INTEGER M, N
+ REAL ARRAY(M*N), LOWEST, HIEST
+C
+ INTEGER I, J, JM
+ REAL VAL, LO, HI
+ INTEGER*2 CHAN
+ LOGICAL ABFLAG
+C
+ COMMON /ALG_ABANDN/ ABFLAG, CHAN
+ SAVE /ALG_ABANDN/
+ EXTERNAL ALGINI
+C
+C --- We have declared ARRAY as a 1-D array, but will still access
+C --- it via two DO-loops. This is so that ABANDN is only invoked once
+C --- per "row" of ARRAY.
+C
+ LO = ARRAY(1)
+ HI = LO
+C
+ DO 1 J = 1, N
+ JM = (J-1) * M
+ IF( ABFLAG ) GO TO 2
+ DO 1 I = 1, M
+ VAL = ARRAY(I+JM)
+ IF( VAL .LT. LO ) LO = VAL
+ IF( VAL .GT. HI ) HI = VAL
+ 1 CONTINUE
+C
+ 2 CONTINUE
+ LOWEST = LO
+ HIEST = HI
+C
+ RETURN
+ END
+C --- ------------------------------------------------------------------
+ SUBROUTINE ALGERR( NAME, MESS, EXTRA )
+C --- ------------------------------------------------------------------
+C
+C --- ALGERR version 0.0 was written by Alien in Fortran-77.
+C
+C --- This routine reports errors generated by other routines. NAME is
+C --- the name of the invoking routine while MESS and EXTRA form the
+C --- message to be reported to the user. MESS is the text of the
+C --- message. EXTRA, if non-blank, contains extra information about
+C --- the error; leading and trailing blanks are removed from EXTRA
+C --- before it is output. The current version of this routine simply
+C --- outputs the message text on the error output channel -- future
+C --- versions will be more sophisticated.
+C
+C --- USAGE: CALL ALGERR( NAME, MESS, EXTRA )
+C
+C --- PARAMETERS
+C --- NAME CHARACTER*(*) name of the invoking routine
+C --- MESS CHARACTER*(*) message to be output
+C --- EXTRA CHARACTER*(*) additional text for the message
+C
+C --- RESTRICTIONS
+C --- The total length of the message must be less than the output
+C --- line length (usually 132 characters) -- this means that the
+C --- lengths of NAME and MESS, when added together, must come to less
+C --- then 110 characters.
+C
+C --- SUBPROGRAMS INVOKED
+C --- none
+C
+C --- COMMONS
+C --- /ALG/
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ CHARACTER*1 BLANK
+ PARAMETER( BLANK=' ' )
+C
+ CHARACTER*(*) NAME, MESS, EXTRA
+C
+ INTEGER NEXTRA, FC, LC, NMESS, LM
+C
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+C
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+ EXTERNAL ALGINI
+C
+ NMESS = LEN( MESS )
+ DO 1 LM = NMESS, 1, -1
+ IF( MESS(LM:LM) .NE. BLANK ) GO TO 2
+ 1 CONTINUE
+ LM = 1
+ 2 CONTINUE
+C
+ IF( EXTRA .EQ. BLANK ) THEN
+ WRITE( ELUN, 100 ) NAME, MESS(1:LM)
+ ELSE
+ NEXTRA = LEN( EXTRA )
+ DO 3 FC = 1, NEXTRA
+ IF( EXTRA(FC:FC) .NE. BLANK ) GO TO 4
+ 3 CONTINUE
+ 4 CONTINUE
+ DO 5 LC = NEXTRA, FC, -1
+ IF( EXTRA(LC:LC) .NE. BLANK ) GO TO 6
+ 5 CONTINUE
+ 6 CONTINUE
+ WRITE( ELUN, 100 ) NAME, MESS(1:LM)
+ WRITE( ELUN, 101 ) EXTRA(FC:LC)
+ END IF
+C
+ RETURN
+ 100 FORMAT(1X,A,': error -- ',A)
+ 101 FORMAT(10X,A)
+ END
+C --- ------------------------------------------------------------------
+ LOGICAL FUNCTION ABANDN( OP )
+C --- ------------------------------------------------------------------
+C
+C --- ABANDN version 0.1 was written by Alien in Fortran-77.
+C
+C --- This LOGICAL function is used to detect whether the user has
+C --- tried to interrupt execution.
+C
+C --- The method of specifying an interrupt varies from system to
+C --- system, but is typically by typing a control character
+C --- (control-C on the VAX). ABANDN is used with OP = 0 to TEST
+C --- whether the user has signalled an interrupt -- the value TRUE is
+C --- returned as the value of the function if this is the case.
+C --- ABANDN is used with OP = 1 to SET or CLEAR the interrupt trap;
+C --- this must be done by the calling program. Note that ABANDN
+C --- returns the value TRUE if an error occurred while setting or
+C --- clearing the interrupt trap.
+C
+C --- USAGE: <logical variable> = ABANDN( OP )
+C
+C --- PARAMETERS
+C --- OP INTEGER operation 0 ==> test, 1 ==> set
+C
+C --- RESTRICTIONS
+C --- Interrupts will not be trapped before the first invocation of
+C --- ABANDN(1).
+C --- After the user has signalled an interrupt, subsequent
+C --- invocations of ABANDN(0) will return TRUE until ABANDN(1) is
+C --- used to clear it.
+C --- If the user generates interrupts very quickly (for example, by
+C --- letting the ^C auto-repeat), they may be delivered so quickly
+C --- that ABANDN does not manage to reset its trap in time; in this
+C --- case, it will actually interrupt program execution.
+C --- This version of ABANDN requires VAX/VMS 3.0 or later.
+C
+C --- SUBPROGRAMS INVOKED
+C --- ALG_ABANDN_AST (condition handler)
+C
+C --- COMMONS
+C --- /ALG_ABANDN/
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+ INCLUDE '($IODEF)'
+C
+ INTEGER ABSET, ABTEST
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+ PARAMETER( ABSET=1, ABTEST=0 )
+C
+ INTEGER OP
+C
+ CHARACTER*(MAXICH) CODE
+ INTEGER F
+ INTEGER IOS, VAL, SYS$GETDVI, SYS$ASSIGN, SYS$QIOW, SYS$DASSGN
+ INTEGER DVIBLK(4)/ '40004'X, 0, 0, 0/
+ INTEGER*2 IOSB(4)
+ LOGICAL FIRST/.TRUE./
+ EXTERNAL ALG_ABANDN_AST
+ INTEGER*2 CHAN
+ LOGICAL ABFLAG
+C
+ COMMON /ALG_ABANDN/ ABFLAG, CHAN
+ SAVE /ALG_ABANDN/
+C
+C --- Branch according to the value of OP.
+C
+ IF( OP .EQ. ABTEST ) THEN
+ ABANDN = ABFLAG
+ ELSE IF( OP .EQ. ABSET ) THEN
+ ABANDN = .FALSE.
+ IF( FIRST ) THEN
+C
+C --- Check that we're using a terminal.
+C
+ DVIBLK(2) = %LOC( VAL )
+ IOS = SYS$GETDVI( ,, 'TT', DVIBLK, ,,, )
+ IF( .NOT. IOS ) CALL EXIT( IOS )
+ IF( VAL .EQ. '42'X ) THEN
+C
+C --- If we're using a terminal, assign a channel to the device and set
+C --- the trap; failure from any of the system services is taken as a
+C --- fatal error. We will only return a failure code to the user if
+C --- IOSB(1) indicates an error.
+C
+ IOS = SYS$ASSIGN( 'TT', CHAN,, )
+ IF( .NOT. IOS ) CALL EXIT( IOS )
+ IOS = SYS$QIOW(, %VAL(CHAN), %VAL(IO$_SETMODE.OR.IO$M_CTR
+ &LCAST),
+ & IOSB, ,, ALG_ABANDN_AST, ,,,, )
+ IF( .NOT. IOS ) CALL EXIT( IOS )
+ IF( IOSB(1) ) THEN
+ FIRST = .FALSE.
+ ELSE
+C
+C --- We didn't succeed in setting the interrupt trap, heaven knows why!
+C --- Set the function to return an error code, then close the channel
+C --- we
+C --- have so carefully opened.
+C
+ ABANDN = .TRUE.
+ IOS = SYS$DASSGN( %VAL(CHAN) )
+ IF( .NOT. IOS ) CALL EXIT( IOS )
+ END IF
+ END IF
+ END IF
+ ABFLAG = .FALSE.
+ ELSE
+ STOP 'ABANDN: Illegal argument value.'
+ END IF
+C
+ RETURN
+ 100 FORMAT(I11)
+ END
+C --- ------------------------------------------------------------------
+ SUBROUTINE ALG_ABANDN_AST
+C --- ------------------------------------------------------------------
+C
+C --- This routine is the condition handler which is used in the
+C --- implementation of ABANDN for VAX/VMS. It is called by the system
+C --- when the user types ^C at his terminal; its main purpose is to set
+C --- ABFLAG in common /ALG_ABANDN/, to be tested by ABANDN(ABTEST).
+C --- However, because VMS ^C condition handlers are one-shot affairs,
+C --- we must also re-impose the trap. This is done by invoking the
+C --- simple routine ALG_ABANDN_RESET_TRAP.
+C
+ INTEGER*2 CHAN
+ LOGICAL ABFLAG
+C
+ COMMON /ALG_ABANDN/ ABFLAG, CHAN
+ SAVE /ALG_ABANDN/
+C
+C --- Set ABFLAG.
+C
+ ABFLAG = .TRUE.
+C
+C --- And reset the trap.
+C
+ CALL ALG_ABANDN_RESET_TRAP
+C
+ RETURN
+ END
+C --- ------------------------------------------------------------------
+ SUBROUTINE ALG_ABANDN_RESET_TRAP
+C --- ------------------------------------------------------------------
+C
+C --- This routine resets the ^C trap for ALG_ABANDN_AST, because the
+C --- Fortran compiler will not allow ALG_ABANDN_AST to be used in the
+C --- $QIOW call inside its own code.
+C
+ INCLUDE '($IODEF)'
+ INTEGER*2 IOSB(4)
+ INTEGER IOS, SYS$QIOW
+ EXTERNAL ALG_ABANDN_AST
+C
+ INTEGER*2 CHAN
+ LOGICAL ABFLAG
+C
+ COMMON /ALG_ABANDN/ ABFLAG, CHAN
+ SAVE /ALG_ABANDN/
+C
+ IOS = SYS$QIOW(, %VAL(CHAN), %VAL(IO$_SETMODE.OR.IO$M_CTRLCAST),
+ & IOSB, ,, ALG_ABANDN_AST, ,,,, )
+ IF( .NOT. IOS ) CALL EXIT( IOS )
+C
+ RETURN
+ END
+C --- ------------------------------------------------------------------
+ B L O C K D A T A A L G I N I
+C --- ------------------------------------------------------------------
+C
+C --- Copyright (C) Alien 1987 -- All rights reserved.
+C
+ IMPLICIT NONE
+C
+C --- The following definitions are used to allow expressions to be
+C --- typed for the initial values of variables.
+C
+ INTEGER GRFGRF, GRFHIS, GRFPOL
+ INTEGER MAXICH, MAXRCH
+ INTEGER MINLUN, MAXLUN
+ INTEGER MAXOUT, MAXARR, MAXAFT, MAXCH
+ INTEGER MAXSTV, NOUSEM
+ REAL PI
+ INTEGER ORDRED, RNDOM, STRAIT
+C
+ PARAMETER( GRFGRF=0, GRFHIS=1, GRFPOL=2 )
+ PARAMETER( MAXICH=11, MAXRCH=11 )
+ PARAMETER( MINLUN=1, MAXLUN=99 )
+ PARAMETER( MAXOUT=133, MAXARR=512, MAXAFT=(9*MAXARR)/4+1 )
+ PARAMETER( MAXCH=16 )
+ PARAMETER( MAXSTV=3, NOUSEM=-1 )
+ PARAMETER( PI=3.1415926535897932384626433 )
+ PARAMETER( ORDRED=1, RNDOM=2, STRAIT=0 )
+ INTEGER MOUT1, MSTAT
+ PARAMETER (MOUT1=MAXOUT-1, MSTAT=MAXSTV+1)
+C
+C --- Include all the common variables and blocks.
+C
+ INTEGER GLUN, PLUN, ELUN, POLHIS
+ LOGICAL XFIX, YFIX, ZFIX, RFIX, TFIX, LOGX, LOGY, LOGZ, LOGR
+ LOGICAL VRBOSE, NEG, MIDORG, FTNRML
+ REAL XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX, TMIN, TMAX,
+ & FTFWD, FTREV
+ REAL TOL
+ INTEGER*2 CHAN
+ LOGICAL ABFLAG
+ CHARACTER*1 BLANK, VMARK, HMARK, TICK
+ CHARACTER*(MAXOUT) LPBUF
+ INTEGER LPHT, LPWID
+ LOGICAL FF
+ REAL ASPECT
+ LOGICAL USEM, EXACT, KNOWEM(0:MAXSTV)
+ REAL MINS(0:MAXSTV), MAXS(0:MAXSTV), MEANS(0:MAXSTV),
+ & SDS(0:MAXSTV)
+ INTEGER MMAX
+ INTEGER METHOD
+C
+ COMMON /ALG/ XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX, RMIN, RMAX,
+ & TMIN, TMAX, TOL, FTFWD, FTREV, XFIX, YFIX, ZFIX, RFIX, TFIX,
+ & LOGX, LOGY, LOGZ, LOGR, NEG, GLUN, PLUN, ELUN, POLHIS, MIDORG,
+ & FTNRML, VRBOSE
+ SAVE /ALG/
+ COMMON /ALG_ABANDN/ ABFLAG, CHAN
+ SAVE /ALG_ABANDN/
+ COMMON /LPC/ LPBUF, BLANK, VMARK, HMARK, TICK
+ COMMON /LPN/ ASPECT, LPHT, LPWID, FF
+ SAVE /LPC/, /LPN/
+ COMMON /STAT/ MINS, MAXS, MEANS, SDS, USEM, KNOWEM, EXACT
+ SAVE /STAT/
+ COMMON/ALGTEX/ MMAX
+ SAVE /ALGTEX/
+ COMMON /V80/ METHOD
+C
+C --- / A L G /
+C
+ DATA LOGX/.FALSE./, LOGY/.FALSE./, LOGZ/.FALSE./, LOGR/.FALSE./
+ DATA XMIN/0.0/, XMAX/0.0/, YMIN/0.0/, YMAX/0.0/, ZMIN/0.0/,
+ & ZMAX/0.0/, RMIN/0.0/, RMAX/0.0/, TMIN/0.0/, TMAX/0.0/
+ DATA XFIX/.FALSE./, YFIX/.FALSE./, ZFIX/.FALSE./
+ DATA RFIX/.FALSE./, TFIX/.FALSE./
+ DATA VRBOSE/.FALSE./, NEG/.FALSE./
+ DATA MIDORG/.TRUE./, FTNRML/.FALSE./
+ DATA GLUN/6/, PLUN/6/, ELUN/6/, POLHIS/GRFGRF/
+ DATA TOL/1.0E-8/
+ DATA FTFWD/0.0/, FTREV/0.0/
+C
+C --- / A B A N D N /
+C
+ DATA ABFLAG/.FALSE./
+C
+C --- / A L G T E X /
+C
+ DATA MMAX/256/
+C
+C --- / L P C /
+C
+ DATA BLANK/' '/, VMARK/'|'/, HMARK/'-'/, TICK/'+'/
+C
+C --- / L P N /
+C
+ DATA FF/.TRUE./
+ DATA LPHT/62/, LPWID/MOUT1/
+ DATA ASPECT/ 0.604 /
+C
+C --- / S T A T /
+C
+ DATA USEM/NOUSEM/, KNOWEM/MSTAT*.FALSE./, EXACT/.FALSE./
+ DATA MEANS/MSTAT*0.0/, SDS/MSTAT*0.0/
+ DATA MINS/MSTAT*0.0/, MAXS/MSTAT*0.0/
+C
+C --- / V 8 0 /
+C
+ DATA METHOD/STRAIT/
+C
+ END
diff --git a/fonts/halftone/texpic.obj b/fonts/halftone/texpic.obj
new file mode 100644
index 0000000000..ec1c7acb87
--- /dev/null
+++ b/fonts/halftone/texpic.obj
Binary files differ