From 98ccd377f12ab52bcb6e9af01442ddb0b84cbb73 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Tue, 26 Sep 2000 13:48:17 +0000 Subject: [PATCH] Doc regenerated for 2.7.2. --- doc/gperf.1 | 2 +- doc/gperf.dvi | Bin 67424 -> 84964 bytes doc/gperf.html | 9 +- doc/gperf.info | 44 +- doc/gperf.ps | 5507 +++++++++++++++++++++++++------------------- doc/gperf.texi | 5 +- doc/gperf_1.html | 2 +- doc/gperf_10.html | 2 +- doc/gperf_11.html | 2 +- doc/gperf_2.html | 5 +- doc/gperf_3.html | 2 +- doc/gperf_4.html | 2 +- doc/gperf_5.html | 2 +- doc/gperf_6.html | 2 +- doc/gperf_7.html | 2 +- doc/gperf_8.html | 2 +- doc/gperf_9.html | 2 +- doc/gperf_toc.html | 6 +- 18 files changed, 3128 insertions(+), 2470 deletions(-) diff --git a/doc/gperf.1 b/doc/gperf.1 index 7a4117a..dd425e0 100644 --- a/doc/gperf.1 +++ b/doc/gperf.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.022. -.TH GPERF "1" "August 2000" "GNU gperf 2.7.2" FSF +.TH GPERF "1" "September 2000" "GNU gperf 2.7.2" FSF .SH NAME gperf \- generate a perfect hash function from a key set .SH SYNOPSIS diff --git a/doc/gperf.dvi b/doc/gperf.dvi index cc1f0206a32021b94306c4521985af53ffc712e6..82beb8d875fb951d7b49f505165d88412be94d77 100644 GIT binary patch literal 84964 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 literal 67424 zcmce<2Yg&tnfLE#MkyqL4WUBk*lybc`Q?EUx@7#0G>0NPF?~0Y@ z^{whV=Vd%`m>&B}fBwXu-Ftt&Xwjb6b-ifSeY;=x$CE$w?cKL5y5nZn$@%T+xqf zQ~5ow-`%)jrt6|jTbp`r^Wc_s(big_Sg1Ar^sFb%?%8{Zz4L+W@Ixyv`Po&oiyrpS zszncDmhQ3XO5ck1+H!ren5#B3w@(c8Mk8Z4zw@N2>B4wz&)y5{#kaoYcz#{e@9Q%+ zZ`?PYtL4X|zB8l#nM$D;i5h$Mp6J%~-5;?oJ-L%n@|9|#T#8oqp1o(!-p4Ik^m0+E z>n~Bs|Nit2O8u#C-%ob82g){n|3u_sA^-)uHU}6P>m)lxl&6MsgTa0%9X~W z@j|s$DQvIT^3l##zOtR6rlYa)Od(&5$`es-iZ`cuv7ReNGnH~{C#TC0Q+YkqvMsi1 zd+vM$la|W0!kDc}1KXQAhIk#3dq7KPs5~5F#2=5KeXdyav-ZL!oy*T``^|#o+tdq} zKV8%})dwCbBbxZs-f`POQEEA~y!)VTkv1kKyD^>H0qk%|(|h}d@lx{OD=TII?PW=b9XII|jM#8Nuj8i!`Y%S8t~ zLYSb0;Bek-0)Dc?E|>EAA71udKR%ShtHGSrqVe(mhgN{PWsbYd(kf9gSDLKnCi6Y< zqOmi{`o`A zzW3ek_?R~wU^6rM^@V3Ron!pjXuDXSLvv@T)5}GvT}HVXV=A4<_SUQ&ZLVIMVxfgn zwU*Bz78Cx=nJ}EXRL5XxvRJ52^`?~7A*pq=|EMXe-K-xa%up8%ZW`RuzaiSZbi>ZoY2$%MVu>ewe+EPF zj{kjs`%)<}CzzVMuP0j9%5SgKbCp??^Ev14+56=4w(V{_>4B|>pg$LAO4EgZg_1nx z`HO6()n}ijS2yOW)u`XZzb6{VO}DmJ3gfU?w6Q;0v9fQ~xjoU=k^VhT0ta`( zW_i{P&+C0yJjhASt5|fD@xfnEvNDPcSf0=@CPpX(DT8QS`fRK|oi8y?ttUc9M`Nui zxL@L2s7Zto38~I70SC3-4(j0(6X}C`aQ)^=J~w^y%RjTdnBTMK&Xe8` ztx?2kFeRk1rvBGo-so}S5-WFKk}0KvqR z5t`0d#vqRDN4W|bka>vT>uqG;{_Hig&CGG%L`1c@3TC^fkvStO*DKM1b)$AGJ&;F% zn+Zb)ID?jtW-)@5Xo7W*m#4L&>J$rwve3SnJ@wOL%ptnv?U~eGuIE{23afQ?CMA;E zC^KqIQy#KUg<93^vbS;gwxc22f~7K{SLDsEZ@&-uE*g=f9rMwFEjZ7uODy=3s!bo; zca0)TD&2>+g`kX7k;2E8Pe;2%+sG-6Dw9Lt>4L!@-l$g{mq6@x`-%pVSFT56xsrAu z=8;C6Wl&Mh4_NJCDtNBki^36WTsD<2H8bZNu?zY^8RPKW4jrq}B_S1Ox9JJ6pqchc zej;C~Xm*z252a_02gIx(v9UaBdf)LQHr!a@7)(fURtxNDiBSId*^g7K&1}zco~&lH z^3}p*$*}-O=T_zp58e|eL{qsIhR&#-;)zLFzbGdrM%}XeYCgssY>D~w@Lcxt$7)~U z3@{LX_aa#ay;E;h@?-e|=A~7IZe#h@m|>1Q7PSR!Ta)=(tHA$FxTisB*ld2XU=%$% z#xmhZZJDXlQ%VuAJe?CLY|P;>iF+w3<###KhZ8&BK#*CkSxCX=ca%^Djt)BQapOLQ zLba48tKnovjUk$uXMBc{YJix?y!E_pHI}c`a!`haiJw4oh3)bvBzeZ-Fa+}!Ouc#%r64a#ItIFF+3yj96eipzJg}UY zMQ#EC*BJrX%}Z|uqD{{f^HA*OQ}v2FhXYQMW2dNakbplxpb2ce zPTl8Jx0A$X=I-Y>UC^UB;Q5x#$-3Ywtt0Og4Qp_sfLVb4lQ`dI=KRm+bLPW(6^{1zyO&3yg`;DtJuRnwQCpmH zB8h?VO$hTGPsPcf!T4&8*Q@MKzinnO`x@)PzQJ6ja<|+tLgw*So;x?m7tkr|| z!_fVF_0WVLq0>0=BIBi;uI*-`s^#gt^gzCd;Ij%AF_WuS@n*6gp1?_MbRT|y$BtxG z(`<}7a5~I(w#$R^*`U>J56<}tnApY)UYQh;=B$)~Inx#_C^(E^{8=CKc-u^A6~2No zWtb}YW2FY6yksa09jxmTeosWj`6p@MeTY$l!w(CaBw{0M9=pmzFpv@a8P5m2Q-YKMj&JVi(9*QKe&E$aLdLK z7PPT{)7ofYc+=XU(V^i@BLMit7yWNS7TrJjZo98{Pvg<=7#}4j(9FEy*kG0WQ;1P+ zO@KW*ilFGE)f{?p?x(~KMaT|X(%)#W5FMB)<~Sn<88zE>^c`%v_=`Fhwisd#(Nwu8 zi&4d#JE(&?V?yV5CBiu#B|d-b)*8Ea0!^4k)A>!o`K2>Pr@#YG{pz;O4sb2*X=XRB zvhj;$n0=RYBUq;@#gHo@G_x)Ado3|1Ao0je5l&UH8!JJO3=sXisB)Rc%Y%ZHnXkwc*>*C%$cOD;jWu;>kZ*H2|Z@<{P z#dd&s zZmBSd4FLVBGlj8wxn5P21)(y(9GFV*ke|#bKvSKPUO-zL$HIYrx*YRde`D$e@u%28 z2qr@DUVkI11)_!hjumqST%!mC-JylgZ)Cssk{uCl)Ew_9&_mRxg+Vt%;>Li>(1m_x z-WZ#pM3$|egZSHQ`+7I3JA zsWOtxOhvO*1)o|XRC%IhkrnTE@GPrwW?H7#l-H_GhV0&Wzh}tUXd6d?Z=_-*XZ$6F z4by^UdQE6E$QHm5BlO;nI;E`l`J3NL!sgA)iZ1j6G@Od-S&z0 zSPmznnTby3;dn(z^f5&__hq171rMLOrVAw(h44xmKUKC+E}rbOlOzjG$XQ@88^P0n znfQ^Ejso&2{zIJP0+|nU;H7n+a=k{w(JiK5bS5O3Iw7&n&5JAt@^_2u8RW^2px9b8 zldG5*u`Z-v94!OX%zpC%&9&b-^R%{9$(JX3=DL?Z*K1B=Vy`kux5VW02Z}FScBV+@ z!Bk#%0)vjf9Fl><4Eu?qiP)EqA&A$?GkSNK6S)+d z0U*1+{{s;>m=?H%$z&oSL}i-I&tgh*<5h%inrs7qDaf883&^)nd2v=_;3?ti)j^S& zN4%!P!7x_#L@M&@MSg2K)Mn;MuQY}{AfD%!OId;7H&i-jN!6m!ouUfuO?#lWQ|G_T_G)Yc zA&BLPYy7+wjA+OcH8byeuMRVuV9cm676RpyDop;~qeVQqer|dra0T23Q|=Or?JN+_ z@TS90l!}8M*oN%KT`|OX;e7#OpjRYT=0V$W+j6H`&SXTel(bOVWQ0}tlYQT>v~p8x zCOTfnRl*{T(WTMMt?V%6`e{m#&^L%A3fRXVIT~9Q!27W`Jz$7)Bf6#86@4%_367q0 z@Z5~F!^;IMgSnyn*Lch$zlByb(y_~#vP4hgPvdJD3VVU?tJK5JR=G$lSvvp)Lgwty zk%S{^Wo(Sed3?Z&Lrbh4cWrQ){&KEj)xunb+?6vsEq>w$3$GK7_l!zR>3&htCBA}%N2HZL zOQY>3aAPOu;`V5ftF8mH5eamLz0M!2ZEc9xP8LwM-K~>sW7f*pWgZ7JkQ&6=W%bk z7=)Bk*SRqlsYgnQ(VzNTLXR=8={LnZR(z~X#LkD@#>E)ZLdU>_<Qvvc4eRxk(j*f#$KN}O*NsG_9c!FQ8=^4G&|P<@pGxf%|K&=3yV)6R9r zTO^t(6M@VZ^W-Jq3?%_(TlpN(7(FNJ>4M1uf*56QwPS6mI7+kY5C7t=u^SE{0!Cp% zTsA@qO4Eq%#*|@!p<;HF88wyUsl6X@y&^*3APc9o<2h1jHk6%<5}{~f&LuvD*0>D9 zuBWp4?MP`n7nU&*;e#=rpAYtveiH`@NnoKd&4)z!uJ7y#l-Du~C2_pdbsdhJxsxmr z4|m>wdAl$j8L`F@xqFw6s)iv~WN#&>5@k5S94>2yV1Pb! z6s2-W@PpJ>%IhF@GD(POAJ5dO(D-Z#m zHO!6I`KDV)YvQzDdlrQ~+2OBYl6+o>BXD4rHTRH1ahV8NBA-)FSlg|}b{wXYrePXF z?Uo4CZY?O9tH8nk`Q>6^dnH#9%r?A}R(U2y$dw9LAecmGmXI^#l^bDEE787_Oahn6 znSAcYWdjLJ$8y9cVb*90y@=T~&xo@b&mU8Am-eg$2JQ>L z@di#rGB>uVtlC`W>#s?i+#W(ysyR`Lxrc&?1l4`vH&RDRuE11Ah0PwL`vM7qF8OOz zxI?JKa}eAPSDN){cD?+*phylH0l?LNezsp~Gl%Y-rs~4L#4d|#;u6U+yG3_>Y}r8; z?WayJy_h@L(piaOT;;;Jl;7`VKP}`-*0e1BW64JgsiK>)Yf?sWdO{c#DC{TX)N$UP z7l@MDYZ5a&b=i7p#a&Sz#VD)N`=8#Q)2n!)L^GV$oa5h4b3_CJ**MH-&lBNr;Ufzx zCew#UGQWA@1Ri-a^T4;gg-@;Iz?j)>SzM8%MoGeWEQX(UOvK+G)aq zxRR_uU_)VI6{pZFVk#j_J+sWt%dZ%q%yHHXOoYrf0!3+$*541rPg)xw@R7Tg&N}(eBmZk!O)T&FQ zYB9;o>oJbc4<`kU!U}~_d`#!KV;WV^X?)9p3orBwMBSH8h6RUcZzaEz`IOaGUeD6* z%CMzM3gbEjU&812;59)r^UI&QBN2ayZu}Pteg66pAOBM(KN-?gl7lV;9ty>r1*!;4 z15xdDXY2{!5<&>C_4qk4pd#FK&aB3GL77fub3BiYwceaAy|mj_q1v*nXo;Yz7zd%P6A$Mh>*vC(5{tu%nDB8^Y@D}mhfdoG!U~Em8=P-+i$IlKhe+WLp zI~4W#=@`D5dDz1a!ifALVMOfXogW%OK@m-im+6M`>oO<;4KIw4Gn-EDa*!)wD+9q_+E6EJCsL zo$I7eS>sbydJBbpCm&K4aw}I%9{{buuLS0NwP&LCU9qQ&F<3$xmQ|#XT&>kR#p(<8 z^aM^+b+h{!Z&i(&Nr5k%YjnTmJo$P~5IJgJX32U~g(BGK(4H@shKJvNhsVU&hq&&| zgFi}ilOpl#p~W&z{HGAhIP?fz^b4vN~x$f!b{n=v?eu|F;dHCj9+r5&M zc9iH|caDr|V^YeuHP;?c8b604i*fiXG*RzMgPvgo| zb3P7uIK_tEP~~2zb#=8IlV!pa;#t8;>cJ7nw9st7z?CGBY^d8~GSeNA7zu&>MzAfe zU+|TR(h@dyd73mFa6^J#B{-z9>0_=-pToI3146onHeU6r=0P9tKsgepdJoE}`i zX_yB#Ue@^Is#X14w)Afry#lUKb?EM!cW!9+t?&S7aG;+RZXFqHX1{;&==#BE^On}| zMO*qeMnfZ^+IDTUZp+|cG`ubvSl_>;bS>GHtqM z*WJghW9;EAQF>ge!tWj)9k!nhUOqawX*A-V#m1r0(ZRLRnk%CI&6_Fm?O(HDFxt?s zVJ}n3w%nt^%hAmPgPTX2-LJpvvh{4~9D(Pdkx5!iH* z%{4H*`HC$=7p)(S)(>x3JGf=Uk4iPc8N*weU6m7Uv}m&p!kUK$N9OqH<}DC>IJ$Ib z?O==PTAQ~-MxWNU{*l(u$l}&zL!;}5w~n?v4IHW6iig)xe*K94O;<#h3~gGApELR7 zL7pDm5)EFydCTC)2wR3cLmS!h;M$(n(58V6Ti3GUp4OVJqY!qKBY-r6YyDzJhY^=o zWErB_ee2)*_X71bGmF+aZ5-SJxo z0r=_z>sgV8*sMjx%q6--R}61uh7a5{0tq*)?O+t+#MY&Q(b~blSL+4`Mu#pP#2fEF zk2jmy{^R>cMz(Go^d~$rs?GOr*br?R9AK0ETZAdEh(;WjTskyhwB0heSwHU|;wZOx z3JeTy*`m>hHz7uk^kUN2=S{_?W@gdx@cH1S;@7R4Hi&{-2A{bVk{pC+~h|J*|<=g9AhT8;qk79M6RtL=!4^0trSSpxCN^!(4Xew`-9zhK?Az z)eoCNpqAunc%8`|DhiH8L_9OMMu%Ja8H^Q}IA*VA_EmQ+O_sJmmUI{!hB-iZh22Qr zN27kd!}5|JH2A@qK~~|1-!ixfwISWIW;?5pE*jXnrC%leke63ACgL};b!4>FKeWj) z2E^0vM%NE*SsQI;V=c+39}>NjslTH?T4(BWXv0+6wa z0ZNHUo7op1Ikb+o46OJ1POI3Dk9cZ5oUmpPW!k@%EnSKtMJIWAWkW;Zu$&4Jj_0>F zZtB30nbne+2hqxFd1j+VP`#F^oOH2Pf=s#(4Vj!V8<5Fg&a#}fFw64b`u>@jo2#oR z-7Q>mUZZ>Vw)JK17wpm!L09~e$m*!MjH7dZr07VOiulD97G&9k3*<2_km}AQr+vuX zM*uly{%gP^$8nW57OCbS5z6x(3nEM3`mGGOA$?yO>0BktC&=o{){{^JXA)eWX_YDA zRHj7+pCwEo4s|lkyfkZ`u|qq&)XZ$V-4F|}S!RzSNq!`>Xzo!#7}- zlG>5?O_&GOOU0s#W)D|Y7$p?<-bK*R!S%nqs0#Ba9 zdsDb=v~Qq1V?e&v?7ru%O9z&5?`eK^wsB0ksL?bh?>qlw&z<42(LNSCs2|E0&y{7Cod=pT$~Dg_detIQW?cvRkm1!F-+blR`f(` z&>p(B?C#k0^)2sPwc>2MXotwe=0HXB5)7hP95U4KX+ylrq>@B>M>UhqAjrqe7tuC@yi00#|z8FRE zWUv3z6qae$LQ0&YyN}Gwu7*r&rvQ7`5@P}XFGl3YvNrCwI{tJaRyrt!+4WM{?0VUC zn>#LRV@RKO)9?f)k6Rk#NxMG!HySFQJS1nZ;iN4y>WgX6SS2HMYZr6w zT4D?j+iJ~ha91?81hPzFSecHc3r>`Lsrz&pOtXB9h+k_5p%An^Vd6Uc$MuKnWs3}Z zki{twY;*aofCY$Igmwpq9~xdf=lFmZSO0a9EW|BbLu_X97yBcy;uP)@#n;cIEXrIZ z!;UXiiXEir^FNrM_}UaXddiyIg&vCeLS-X&;xm=ayr#&kp*sB=9@Le=J$qTg?wn$v zooGUFZC{wZI4Ll8K}QnL6Rnai;Z?b%tRXq}c6&Vu2cp?kyZCiJh1y8A1=l2uRpj}^ z=ev8t`>rU@md9sH`IJsnwqpCN>I-aED@EW~JupB|Fqm+evuFu;@P{U~a8*jMmtag| z{l#9#3#5pY|DB#G6fvQaLG+iRt(5CmgUUA>sGm%OiYwJ+aXAc2yI8x3*5}4{5YbOA zJy``D%!=yK&@i8>+rmTz6CoY}@M@rIFoM4NGxmYC=ail_P3CLG7rO|NP}2nO_;CmJJ@u(cB)9Ev(=>nJo2f(t>ZH=LJ}Okp+;#PkxdwKL z)P$3qja9vol#=@-TNX`my`ea}+_Wy&FZJ_nT*g^mG)6MML zpPZt|fU{9))W|88^0i*))i6Ruz*Wr%&V(30If^w$V|F(cPS@pSSF=nCz(pW)&20C_ zDePcvI}4EC=dx)*!d0OY_U22dbuKg6ym~Z$jlaKc)x}m3Y&AKO2HOm~AkPhE5qXFM zpRjk#Tv#Ao&CdzF=CZ&1*w#|P^&qGMG*FWht$|#z06|NI9Fll(dq~lA)YXxn``w!Q zBzL=Kay852Q)eK1NFB)JBzgve~)Wo28mHDp~X5cNJf_u}Kb1ggp+f3z)Mw3v%33pU{ah+B! z33)EX=Y^WdyaozdK|f>y*vIJ)2%ebqBM(hcuKiI^l;<3pNslqZQHM6c#g7RS3{2%_ zux`q&^l^i?-5xThy<#OGb<=aV9JX!ro9FJQg8Ldr{p&M_N)1!P<;J3yUO4Wa_nK7} z#F2p5+<9%-$%O^zw)5vyX<9p=DBDQ=^PhzZbY)QZ8alUVz7)0bCy-ZD1Mpd8xznkk zSPhAv%e?5M9YmG#v%2Ajc+m@B{xVWILv2}dZV39@#99y)>eZ=MIK|fdx^^%B!!5x* z?Ru&3+&Zz8)^u*B+QRQ}<5gQY5Pm!r!B{d6>BK3WByceQ;T65T^E=uw=uew2{4u{H z+V`~i3!_rIcdq-U2gxe)6aE>sVJJ4mbZ=kcC^b*{Pl0O~jqK(}whv~3dRxIpc~b;N z$gu*OxRL$hsuYcy*(GNXKmw0PT$KbK?5NK~&QgedIhz~>NU$xYV#&h;9Y`P^e$_cB zT`+U}Gr1#HpQL+0?xMVAMU+MCQhY}Y?+*~BayDuc=BthD;~!|3DM}bafqUY$d$>if zU(?P(cRJLtK=%T-)6l_%k6enhSdO${JW5PkZvs&~gJu5s^0u=I$fKGwCG?P}x=g0} z`p_6ez7G>(-gONDEJwbDby{594&DMvly>g8qh>80*I_WIt=CYHIS>xaz6Q8C5WY$r$ELqX^y#E9CiGSn3Wb0Vz98g;qyZ{|4ito}y! zsCyg)GT?%#6rW(N7r!TPEeMtn#B=NZ%0STycP=@N)ZbC}3|JkBPT0Ks?5Eeq>N_%V zthhKcVPiG&v+NF+Yrky z`q)w(eF($z$mV;(4Bk@7{H`=hHR7~cB7oDF>ThKJ@c4PBR-2hWoM8iST&edP+1pkd50#?+ z?To6B825m3(P+zpBPwJ|=SdaaqiFS>q0XS5DKpBW z9&o8;U}piKHj?RwB1VC+hDs=Ec7w|(T<0}$cVT-wQNFoopCb+$f?%x_36i7Dv3Pjj z=tY(T%bciYcX|fX@P>^;b@f|-+xdIuGNhecYbhBDy7rz;s}=gX~Z)NXyq8c2W=s@Q1eg|SZ@jB6j~aV@uJbz#eMirEp6 zy3B%I3)2ogbEJ1#6{flT=V|tJB*1T!IAX{Y$OCe)RMuH2F>N(f2-D15c!IBhCrn0^ z$&`a?ecu1EQPG&|^Kg%+e2T_0YS#QNM&v2eXl7ByX-kg-xrz zD1Bm$YAK{=yU#(=THEV|Vr@BSs0wZtKY;@<{ZK*x099$hKh}5Kdq!k2>Bk@}Hce{F z)yTP_TqLdqCJG3vEzTl(+3ecA)}04z;BkQ+QbK&YGa~lxnd|!4jdnE@+Ktz(vIs?I zS6gF|F^cuT-EbAGLCDxc1{i}W6R%O~CPy!lx?>T%r<30H6BGVT+}*=DC3tbig=tcE zihr!c;dyu01E4``HQsus2{ZFoxYdaVNcs$T0&2bELK+;<@F~JR5aWVY9%Zny8WG+q zw&rg?I8KNGCDH6Y{O$1rk))IcHQJZOD$EYT8Atx{uC*#d_4gGmx~lvls?sh@qL;?= z%gaaO?81Va4UMKiq}3Tx1k7sjjcaWK&FoF*-zfs0oyTptnlm0o?9U2{~8#4N@R!sJ)uiCZq0;`2gWD zEh3g_f6*x^;Py^1(vC2d)%{S(-imIvm<hs zr6r~{#U@b*(qMF|lE``QC#-LOhmq6LeI13JL>=FV${(PtnS#E$c$f64H&#?pKNeu9{NWB$tazBrl1ysXx!{ zXmw{DC4a8=5=#EXspIK7%ou0^(~%tG6AY+@9UocY+BF}%9`?oVBNlIbur z$ttP@B`u#BrTkx3@Ub@=m#Y?3wE>(6cOLWHhNn47uzRUDI2OC6m3JL#B=+-IO?$0^ zIB;6Z0ZVdiFaFfrMx;kNwsPua`%H0$%WYk+`Jj<9ZNrqKW3&lag`1uQS33~!L^Pie ztI>7e2ir#I0PwX2DVUgbprjo8_(^sXKa1P&zh1o&BKe?>E(YE39(d%k2kc z{a~JTjF8cx2pr^G6?^BF;fG;P7===SCoO@m0$!q?`RPwF%FW>Sla(t`rJ(bZV;rHJ z$jiq1RjNvN@VM)mPqD05G$lpHNFwL}m`vQ5vvzxuie^`%jI0ITa3gIa6;&)Q=Gdip zTu!Fz6JO?ik|0E`2;~wi6gb0}@E@sG>T`*sNj_ijve;ii04H*^GIl0I#r=h{07Ez~ z{KXv~nJ;0y0#O^;`yO@BV1_GNPI2EHuRE=9#PXl6r-XzY8)}!6dd=h9B3hC@yJ=k| zHbdFG$ZeefTuMPj2ksE*!l_`STF4kQtCT_4rYc1^c7j`Fw^{tTSqxA7p6~$rEa=A( z(+~c*%edR&PO!07_MKv&H$`-TQOuGc-SDOOhRp{ zMP(F;0}H^~zS%z`%P*FDqW0IfpOZhDN9lZ9D7qMLO6v=zz;-F;Cqhk*;hr?QzE&p* z$RTihshU7rcXg@-`(m+LJ7;x95qHt)kBvEJUaN6OSoc2Go%me#f>YXT+l#F_Fy&k0 zl{%e)0ZQ1G#9e5~uL67q_)3sTqb(OW;sy-BX1N0z*bY0!Xe#9ZtCjvC{CVa{!9DGx zjohI)z`I{(y_?%Haz#x3;T~ti&|kVBedG5yD|DOefw)Bm$$K2elFsWw`@4RSMLTks zy8s&1JA%6K@udD9u8OJVN!iw6`wl@fQ~Ea-#qr(G(YYP*Go};JhN}f9n2MoLP(A== z(85Q*a9yM!EU}40FuSiKvc(Y&Ah7@XRDwD*0Keabx8}0He>FddlHisOWzIbo#nG+S zDuC5E5iCHffChON@r|tHv#u+HN?E)jN||R(#epY@ zawGfEo48(O{2GRHdAw_3N5^f%WvRsLxR)A~+X95Zl&J&7(qoHi9>_9@ru2};X%2b5NS%KK87-dI9=Ga5vMjpBH!+{}F@sd>*FIi8bWBCRb4k$)zEdpiA zQg}?q;WmBCqOa$k-R@hpU$A7Af+b-PMM?6ci*Da|fPs=o$$34+kV+=DmpdU*r_MhK z1~~+5!Ha?P>RLf4K#Elh+?KKo)x{di7&u1=9W$JtrDm~_{o^TZ-BHzV9J`ATvX|a0 zsH~lYt5;!A@6tQ*^L(I1`{FTk zfohuF(NlTSlizT?F|RI7PY!x^LC00^4?LP?nS`3=zj@;#h=_u8tv;&v+hNmuf!yl! z4CG_yxJk|q*`sEd*lfz#Nu7B&rwgGv-)8>)S)FO`G%MAi|=r(|LfW#a=qFL@qIfP-&*ec=`0%!8`-RneO_%zCOvxU4v7amdD8?OLaP`XQlikk+YS*Hh{ zc~To_RoBbbW4i$F)nZk`sXBVf?H*`!{dRa?m6I5oiZH|YOg@dsGOA_}_(3ys?gK_h z1BC1a7PV-ffCEc+O`5bxR`kAi8H#fksd2-}JYsKoO~Lc=!2vb9}b{-ZEnNzBfVmvjSUu0 z@c=?JUXLe3>C|1yusWA{!!eYe6BmqQe&k$SnUXxnuy|{0J@Se{zZkIC} znWf)Ka!Zq1{S`4E5q4klmM<`^r2DX@zevxJLlYKeX-3vESQJj z6@-9B&e2Y&olpg=ZNHS}hKkI}{{l{*@>Y1WnSJDx^QTm)Ao(&=Q~owsz1LN*8m$nL6rD&=i2!JX{+F7>^Z81R-yilmIKV&CF+yPYs? z;MVzD%&7$+MjFFqTs;9Vi4{};lJda}Mj{%!f{m2=FcC5}MQ{QzYKa-D#yHnSqDOSPmdvdWDs)Tr>FxQ7 z`}=rqw(9=IwXB&d-9K+Q{{U+0>Rd@5bn0mw_q0FuSxN9JuKcX(gHlpk6aIrwJq@nG zthC>+Jf|mG8H$CciRw)CG@kUKEvxo_Ij8UV*)Pv@zvL3hsuh0Z=^T?Tz3}$4_J8l{ zItAE`#W(zZ_5QD2T`%$;zdL*X_j2_~IHsrZm_Oce&i=oxlG~)jk6tGx z@Uj)PQ~JT&Q^EmTnM`^|` zQ8mCuvC!W?f8VL6sumzvSyt65=INbrH5Al0`GQnSK9P5Nk(PMe3bR;xOQyAvz5HFy zwjv9PuFAFoQrz9gtzvv)g7@IH&RQW}?wSQge6H*E8)M@f?PtU-GWabAzfv+RgyS4S zAhJ`r`Dnm@;fGb!C`@f;ZeA&PCSc+q7cdn7<~|jeBx3@6i#+O?13^}qT=#EMSSau)hO$QeWzZhE&cR4`%b+fYRjXR z!*WYj+CvBj^x%tUX!AR?vC&G6zI61Xxktfb*6I`XG z+U2}d*pd+6q5LWSd$8L7mr0a?W`A+UKgA1hhREcj0@3Mb_>oYL8j7rMy;8c;G^pvsXlXDuPN|;mlxq)z z%V)XLl;Y%UWD5dq41}%}2*vIC=o`)L65teOz68{NTXSAD zq=UdB6u6#N!f*)&8(VtoOzAxb@|L#}j=!8SEk}HcqUA6CIV2{Buz6@a10H*&Xbuuq# zIo;^crB!Ly7J&vv9F%^Yg%PYJP-n|77rF4`BD#}wk=Hc~6&VvlhZHe%HqJ}=EOZgj zGJ{nam9O&dXC#q#j!bS3rHR;5PZp=_;e>-t`955jfO85oRy2V2>|F5 zwCO{EobFzRqiqk>S9a&s6WD*V&&ao(I^-Sl1I&A8hl(JmYlG1{c*RCTPmF+Saej<- zDdAADuiytY6{J!EWEt2mH`yV`Cp*1PPQ$~O30g&jci=4Zn|ts(U6sOEuggPCkVZmwco#f^UvweCkBi>Oh8 z{XW8uL}qyezsd%uFU7Jg(UQ z+|BHo#g+p_+Tx-?$E)tziIi^a>hWY{xi3eG5x@84-5y*T!YkaA)nzts5qjs2Sl6u< zebrCuKsrKaS~i6@xbJs=GPw60dy|V`+6=htG;eQ9*_MDNgIGIQsS;p^Dv>9geXyr0 z=v>^AHOA+Y@>vN?p1bv3!8ERtX&kazQdFWWW5Nwcr5R11Xu>!;Z^3R?X8wI`U=B7= zz=j5cXjcO|df21&z~QP>GMmK$NdXY{2a6~m*JP{-yBx@p_xCKM3m`$W>&K+^t^w>B6XNitIGG#Yr|*@zZywTkIJETlU(tk-7?4)c z0Drv;pUYJHxK*rfR1>xRPaUC zcux{(5w_|oAi5pPg9~ELBk>K5X7-2l{;;zWcL9|MJlpkuQ81>55`jN_RQL!3?y9x* z5B?BG)WIDp^IpM?S@cmGy9Q^5`uVCR7;;49Z>|sk9`PfpV9$7h+HUL zDI;_xX$f4m?xQY>LrT6)fF)`=vWCnjq|ogCn^Q#+Djnh>BA>=Jz{HAOoZRi6YOg0g zehnUdoP5>i6}gGR!hAtPgCTuTJ<^w6yRW`gmv0>6AX0HlGl`AOb+0&Wp5M4Se~=GX zSthA;k;bGcBmoYsjGJ!!oM_=u*PRF%3KcStR;`s>aYI4X%BI;Zen6-bmdZ&*7&ue( zOBd&#y!j1rgo@b4n2fTVC!^(37ouW0&ZA;Z9I3q_RPMd9G@%as#-6=T{lZ=cpvks& zPaP3wTf6_8U|8y4BY%kDIXU&mrQDI7HM(z}XdA9{Zj|p4ubWoa@Q4dFU|Z(#ZWVK+<2ty5XQLhm4jqn(N}@B#B|!ey-U)#0@>o&w8|YG~hs^d#FcCk<|~fGq3aB-B@(T z882D1=$dye%B=tOo<`97&?jOLWFq z8%KS-LIWPw6Ne*y_PVp9XAcRV`{)i!ESH``@HbnU(f4syo(sOe=cOVLuBuOuqGZf^ zS*DH{j#ECG*R|=@k#eui00S0wM;!ZQYPE=w#ta{&@~Ibv#8|aDH@kxqH_i_`y=GS$ zg9S4OfFcb=jfJh%QpoQoIx~8?tVrdA`AMrQ8uk8aw?lV#hm}@U#qkc&3)uCv*1Ryu` z35XSxjt$-5ZzxrlK?F6_FuIv4mrp3Tr9Dft9Z*EYa#E5hkbK;sf#mCc{{JXGwXk!< zzM%8xGEaCyI~2BXTz5TwL50QY(}RX-r4@Y(EX`rKYx&a(Q!0|GoPW#kLe(`Ui>>+U z)6owy;uti(TVR0N-gYE}OE(F~!gZw46A8}l#%O2PalbHb%A zB$cFpZ?3-3SW1%wgwV{q`c-{gH6SB`+>so6bu%u02(L;_M*w_^QMEtXmCI3dh2=QZ zuf1uhc*oQ&1-1Ud7Obmzsu;Rzepxf~i>6mxom#W|)6@MSJEUzAMiuFFOGJb6x(YZ{ zt<0TAM+;OaxT8|mjTk>m$bmPzA9Ic(#1&WQQcfx=a7OOKFR{u;5=%)5u?}>);BLzx z%9S2-?lH~Q;agq`d-Buxq7Bg*q*m2;_aKSZ=}TWcvJ1LG{jqM`t8KaSwMTVQu_j|H zkX;cztO2p;_kCPXdvmG}t)WI`Gr+U~EJ67MUL5$Q9?NBzX693)E~2Hd$Cv5jL!%&_ zp{b(KkpX7067vY=G#Ycb?gLIU-u`Mu?%I3<=o*X{I6}pCByHFtqq8TMYX8vCL=`T*w8oMNr8!}SOj}pA>YHA;9qG81+T)XE(8D$wnSjeez1gT~x%g&F(xs)`; z1M+25NjNWrxJ?p55Xh9)Rv59Fx%Nti@5qJs&SgKpVw5?9hJxDr7Pou$ZEKhKZ*OZ< znJz~yodl(mK7hl?5xny4$lSF#>y5)?EQgA+vs1hG)nQZgIH0pcxOXZBQl-N*SxsLBjAHpY%rVpi7A{FavImyD_za{rno7Fu;ZK4^u!#`G(Dq7{r4 z&x4V}w`Hwh4lDbp2Y-A3L#>k_$g!(Bm;J=J3K}(|k1pWp#g!WL7t)PBu0EtHGGOjj zQ0dwhBt>KfzS8fma4QPpS8fW9$C13>-yNrx&5dx0Wu!145jce4@-37O0JU=O!$XIF z44ERXkYcWHy`SWWpTm6{jbh}?13!{NPFaT#E5tkTX#j+`Ad~W&n-q$g1ebxACVb$| zSp^^2>wa^U#Kr^PaMgrZ-jyd*Pz|$2QE%StrHxuK=L<8&CJJ)0I2fsDt2Lxnw$X1 zB1{@j&g|j``V;lR&2TD zDsn7yJmRws@oU^V69HPs=Jb&a8`8R>(eev$sg3G7g6_~z^NA^Y^_9Kw!y${mbtC;Rl(>FtDtvfXC)=G7K= zb=Qy56l!!2^DXZ9UQhS??+nHOMK8l-ig(}1sBJ=xVNBZsorbQ{#Tn%dbY8}^@mRDB zvM=_HmrF}<)?HgWb0bM(nRqDFA_j8ggua09G*Psv6l3V0bJ?Sg8tA2!%i_Pp3_OyM zrZr%7ZgzJ`VjL#bEhW{V@u3$_f%Nswg zsBXUQ^;tWwddYqt_RiLSlBPENvlUO15AIvo37dEbzTozpgGAM)NDO?=)}42I$OU?q6|7}UlxjJlT}H|G=phMvPbY$DB5J& z&z-CdcqkXBKMnvQBv!mPedbo$y4L-J*6$UUL?QVH;vtf z!tH7i7^-MfNr3_8Ed*o4+tys%LoEU#STYw4S#PJKFlZ7dOW9O6QG(zyUwUsqa3P{R z;Xd7^m*Tdz!Pt&>HlQQ8x&4c4eaPNkARX(bxXL2n7z!6Da%#t)yn{Oy1=Jql4TEgL zl#x}%+VVXJ@@Ac$xlluG)#9!4`4=!ma^Wn5!uDs%)PBExezISIQ+*Z9DuWNQ-_X-7 z49=Es-Im_6->)_}`m(FifiK(qM{Z3ql)sx{I~Q}v-;%=?E^h`+|3llpJfzx z?J@RaDwF)|qaJfelD|Qdn2pl9(h2~Hl>#{Yv>%~*b9Oz>wV%dy3yU-c(#dH(Vj(R? z6pQ&Z^43e8Jd6eXk+~<4&3&6)wZVTU1JzNN$Ai8tMe|W z|AG5(0B*kZOa?eQpb5Z4tr7DEZ)mlwa=G6Mo);0YW~TD~j^i=7?jLoJxc&&%4>7PJ zU|kC+7sW&70Vzv95uLr9qJKYr|H!})s&J^0J?;0_9*+E*-G-XWE;(T-cbUS!L!E5} z_?&Oio3U@@*}8OkRc5KmIg%`{Lu;q~e!%!J?89;x&Flx;`wG=ukrMEbz^oGLm?52s zxpc(=ziqei5|~D+*(z(mY1Gc3S=`d(&zaEkUt5h}jr9GnKB1kx@k6L!qHsh*P@?vg zme52WbSj2;+J(`Q{w2|Ar$uAY1^oS4OWI5Ho|~3#`o1)^cUj|ziTh1Ft?yqV1>Wv7 zGp{;~@jQ zUZY9AvXdy_R|>(kF)WL)I-4M^UmBa9iP|wIz*wd%r~&jG>F|#4h~Wu1>Mq!XHFktq zrGzyw<914ep?i^^_`C?f>W=%cwhG5VO9j})bdrTc`Vyt=wYXt!#XoRP&$!N2ux(So zO6XuQ68iRMZd5IyU#XO%0p4cUzmygG3`4tky}ODk24WSkH{PE!?68cyC@L2$G^=GM zW+Y7K=WtzVT)j{NZAmN~%Ae*r0owk5j83lHug_nw;Ddo5)~a<-v+HX;o_Mz3Bw>r) z6m*j`=tG`KX4GpLGPj-TBAv<*_;t}n9W4$LQ=urk|7qORc;-P4v`WyDB&pYJKA0>; zb^u)j*kK_Au@#6*nQU2WCUE8KN*SqZvuW+JZx=tn-F1&s-Al83(?@ABZ6SUNx>b!(3on|B zOI5G|U^tk;{AxowqjC5JWfJ|_C-!@h0mGehO-%ri|HBW!H7MozEYa4xv=T&!d=dnz zqld#P?CIni?({&PR@tYY$tBrj<#>&+H5l7>#7@InVA|L~T@*+WG)A-QTd&aye5%P< zUP76UE$SKBqwvsVktRGvpQ*1DTr1Mdkxxx?$&|Io_G{()KPXp&Lb;E6?DGN>0fM=QMbca|k)3BDfcd`n;_DTH|#BglXA4eWD*S|BtacF?Q zh~qRU;Q&O5Su8Ycs83dx5@$*j4CcV9YaN^g&Dm8h?cyp+$SNT1Al=<&GY$>Rj=D;a zL<=QsCak5si%|)`NV)RmQvo=gr5_$IiR0EPTv2d}a3e;zLri=Q= zWptCGP?4q3P!5$5+O?oHwzn)z-;o9Nqx)JUAFD%!9CM~rzFpduGY1g`^xnE_6xzjC ze;wk2c%GVZPiT7i=o2sGa@^;ZIe5S4X6D{c#TV|iZ3mTOilHP6M-kn<_d~HNmNfLm zCaTKcWBQqq^r;BMJczvv@srL^6=?$H&)ye$8*>j_L#|8>xiZ)>i(2%Z!N1w38$cG= zU<$_*X11P`(!BZF7-V^;Whk1NQ<~6%BUZorDk@6fn6bdSvW}*J z6ZYR>a8ccpL21V1d)F^J$p^s>-;ItB6jU@&3P$ zb2;@f8kFH?E+yeYN_=3Cx6>E_;}3wW(n>h!tE7+&wG<}>0xtJiT4$_&HntT}F!k-3 z$CX~Q3`Umdr3QnlxuWoeViwl$kG}piKOh6xvDlfgSkdEuIAG;Sc93Y*-c_IC{^G$Dj0fq(Y zq`?uYUDamSfBy_a=x!~C<4HLIl4)045elSW+u*FGGIvWl{o0_#(E@Xssq1A~Evz67 zZ=Ww$a@;jpa9=*>Yi|)vL|c4CY~^aCu!aY3SF%aLAvm8rkCChae<;+l0>qF)R4`VI zX%W-8%p+cp1d*o$%3DZ@v561%?BDt0vY$ylsQ1V%Pf>lz z=}QoO*5N#jAoO9IvX;$E^YdxHL*NudP>CKo^Gip+_O$q$h}~n;+xu30lM{&A={_8t zhZ^fGowu+!NARj2ncx6cmYkydKfpJt21Ab4gm2ebCT}#2;#GbQz&gnU~hjAO-k0Inl_ccv#CG{P9>^O?ZU>x>D1;*s=!sosob12TyqD8Nd zi#JyObsgtKwYIq$&Fp!0ttQ;6N*E-2<@?LqN%@!SRgt@K_-%KP(e)pwb9Kf547wND z32C!b!K(i>`Xf;*{!1L1&{M3L{o1cxLU@NF%`QqAYUH|4Ygf%+I;GVyRG_#%ZEs!b zjlwpSUk({W&s**SgcwZrwUYOJ?qki?anuxEJdu8+G4L-2^D%&kMbbyX)DXIi>PDCuM@J(b=|c>w;Av)t&*^! zuLU_@$}&>E-zGY2oE*RPur^HXL#9OSzx8^fSuk;tKXA3MacH8EedQ?8}M;5;#?gBOIIwNHGuE%m5#C~i2-RW-c*2~ ztW$Mx3?c^bZ7`Oh7M4BAF_=lGou>DP0)|8rP_~>xtSS5`hT^xptC}PJUx69j`h@qL zyvsV6r{=w#ls~yPu+@5OOcBG`Gne)p>A1-a7i)TyHb6Ajs8wA)fclT|x~osh`|o~% zVTH%vvvzI#3$eDRPz;>`L0tD^X|AC>h(264;O9CytP2VEM?X~!hA*FeKp#OP>D(TX zEH<-8zB*I{jH?QO?TV<|?TgDh0Dn}(=pmwS&^!5|*_kPC##aM< zc^L|AzL(FMDji@g0%*IXLQ7RCPPgpq)P`bXI^)x{L^NU&zk4s|W~V%zvsRh_X9K73 zc-RJWpd&?Xmv;(xJ5agqU z+$?1yAD%=-_xxqL0qP7C@IqIytm=bgXG}(;@7?L`2@1Co7=jEi~-#>W2;Gk_2g{%1P~QCIS#o%gqpj8 z+Omv?@3etq!LWQ&U(2quCVou$?zIal#n;^I2&ebj>P$vb1)iX^ zRNQQ(CzVNVL|n_*emaI1ig#X-H$^g+!-ia%nW6j8W#|sc7G+yByj3Cs7$xsgauC{b zIc>=g{MT>f^K)Oy_&(XG*r}>}z?#EAaHIR(|4axyFT#W0E6wgp$^i~qiY)oc15);x zUvr06O-(K#h`^FOzl4u0q(Yf&%uf?jubJ8Ui4N226f^-Y(jkG!l*WVK0hukBBAEte*-cUu0A7q8>ek$n@vv#fuL&#sk!}01<>mC+JZ01c~8rgyAc4{dSMM+4C6AF$K z+!uC|J69d$bDL?2?7n?~hj7*XXheTgIGW!%=UWywvVZttTQloC5jeBQx*vuiQd2@y zqYueiwq)*zW3TX0Qc1~*-qw&qSzdJ@z6{jN-gQTqDmM34t1L`%Y*2LOtvPfhHo=^I&@&?t-U|0-%$7(&fag=!NXbXgz(YHcq2+_xt^8RO&=0OW|L-@Pf7zN9+V9ir-F zkuGb-?7D^0PtBd9v6MeEcPb(?8`aUm5A?DmHPWLKD>&sB+VfZB1?pkr1QC;GDm;@g zj*XG>ryhG~{?t2G{@+T|$qmBZPMJpgxVjiRH#&AVnD$G8P??gquUg*Rh$WdEM%^pyMYfHuSQr z)YRbG`HMT(na$s?k5*Y@Bcv{L@cwyuT(a#KV9enh?q>E2mkNT49Qq`q zFR}oL>vFc0PEqdt?0@3JdtZ1M_aD{jhHq&oC?<`f8Vz8I&%M#xLB$#FbGgve-yov6 zY|y~pwj{ob<-yp=F?C-WLqRS!pKFFXS$>Q+L{OaXn- ztl4oAgQ57S6A4QYANQ_N_T`*2e=5w{%zXC*!(9lA;Tdf{MQ(>VXTTDU$*Y`^#h*;2 z8v-?`qoaYkJNaxBn9q-&C<5&8tt!Z{j}d8#WE^%PM-t~kR(s6>Kw8(2U*`RK=T#Z3 z(9y(rEZ`4LC42OH=UvIiEH2jP+YZIX!3Ox=c|7wW#?Z*#@gax%1e&;Zt@d}yH*${H zwNsC-%4vmNgHp2s9=}8L@Cdj!vnQ<&1t&TqxK+&;NJj%-Oq@Xt8TC=?6_oH# zQ>a)9A8`xZ+}|45Xh`2(JvM9-2dglAt_s%fWzn0u+4Y4DPGM4O0F&(3v?L8Z($eK% zB!}93o+&i1Ca@rJW-7!&ffdNpl8=UuJ0aoVTgU@T>H?>@Ddvu3O?+Sdo&AID58LHtwi7dx5vKFVz)7}l!v|&xjL0j^ z%zu0*9kFscxY51((xK2;Khjr*aH${82dqRBQ&|*Mai<;jNULHS45g{hdD)^o|2d>0 zG=Ku(A3)O-(xhiAK8F^uJmm#<08Nh)GE1JIU8dI?)K>ayZxHHTrBNP~6R2<0aS}<^ z)?rZ;i6f6+Vu<2$z>79-n{o~GP1l)-`KTO{PziTb7n>fP&RtW0doj}~Xq)0MS7qiW zaUFh|*;5yrL?X9qzX$~>54W-mJ|$qi!nDT}!qD>)KsG~^1!;TMBRLyALbH_&?DpNdLj{E#LpC=bcZe)M{`!;T5DvV>d zqEpJwPgll?tbH+FZuYa6`cwsK%QcK`WN!So1^MVzz8nZsNLX~&q0!cT3Lc$fA!Ob6 zpVjf`}&<@MEV3UE<^2R{z=k zhSi}t6j8x@zpq{WB?0xsz-t5?V$qt}!``F!(9qK0!8vti!c-4p`?!}F#Brf|^uN$V z=-;&;%RZ#_(7NT@J*ejyG)~3by)Ph%1_zYY3j(Z#oWDKTi}@ zv{buve)L#KzrH|X_!rMaE6@3!hJkwObERVD(l5O$=Hk8J7jo1Zn+qJwQ zRg3gDGk-_8Hi9D*uX0uQWN5=T9@yNMUOW`OHK6Ydu=bbrfxG4Sa3H*!9KZWEmc>P* zs+6klW~W)nXh1mp;FZr!P$lr$^d^H2y}=O#g>RQg91medu0zX$xkW;bF%!y6o z`2lP$+JB?@##Mt13O_vTbTST8`mP(j zX6O}2eFNB9tm-@YNC4FwBU}^m=mBed)UtlNyeB+2;XZ)kHx5SDU3{%O2JE_JmhMop zbN|KgI7Y!{cV8sK!^4Cd#V?aC}#u>EU_iX9o*J}Oa`R(;dp#NmN;3NAV zZ$LNk&0rez4vnK*q~ZX2IU48*z8Z|)h9b27V@XA?-Q!%$CDF4iV&E9aJ`?Y^DW4$w z{?8797UGI9qmep*p%mm+2w?Lc$G7qAD@80l^>|QjUks?(0@JZ4b;G1yk(0xlmygcb zI4nnu0mZTK%QBimIs-w!3_*OPIN}3 z$Gi0!8Yha`HMBo$tFiPu;KyQlSdP>2OVltvFPrX+@%Tg0Gm92|>OX>}NmYiQWqm6y zDOrH56s@UGLIf7JLCp>vuymN+9n>w0KJ)i`+AGgm5VPC;gR|7Yf??F6LaO2RjRzkp z`M%k5HOrytcDPb$K@TYxkzKgMswfR>q}L*n#oX=hM~akQ8_{*`B#BA-e8m)3Ka=Lt5Jw4 zgq9;)i*ym_8Y;A$Wp?2(E6iZRY0PPzi#yHCX;*l~o|;!b6)B>nK`-kkeP{I?h#c?g zz0BH)opuG1fzbG1fv;{j(5ToNGXj3|zRE%p#NmXGehNwQ!BckKI)~)TBr*4i)|UQ_ zfOopf7}YwHliiR1otd&`_VaHGtn+8``JaCqM01yUq@gIeiM4~ziDQ+>{5p+EkhV@P z=*TPHHXKMOq0gT8V#~Jq^j-GKo7fwC5fC!yX;v;kdAoVgi2~xTn)un-P*-9jLGg|} znP-3)0S7sOw>@JhOsR~t|0>yBcJCQ@-_7i_^$bMyBq;*_v3Fg)kb~~(vywW@01RVK z+0?(LXOt=m%&TUXD7>0$Pno;l?Da0}|NGlUmB8U9R+@T^?8djZll{?i^j&8O0{CHl zj!HA6`ZuxAbo(mH;(TFgG_|@EIw7)`>a*fG)UlHoRG0l@H${6pm~=<;3K?-# z#DXaMeFl#{K2n=-i;t8F?s4J`OGS+9lR$o}3Rynv8dC`hf%rgYY9{-=)IEBa+@AlC6@2=zM;Y4SGM8f3 zG{|u^y1pb#v~pU`jDt6(K?8)2t9+sC9TZUg`c=Mw3J>hqXGovVdnM7xKJcGym-u56 zNzC@}*;j_ALx^d0ROY?!vCs*!NSL332+Qt?5E zIL7|BIAuj^c-{jND|VvoJ{Nz=f4nuCUp~^v-ha67QRPE|R0gYu93R9HfLCBhp*Nhc zSf%(GiO1M|AE>QK>5A)4Efq@=C-`L=U;B1@v6Q)f82iD4kNit2%C%rP5#KqDF2w^6 zSdBO;UZgQlsWv6{oI;*>=*e|_LoiwuRk=dmIxBH@Gkd~Ll#@Cn*&~ zN)-B#zalqnpG!6o(3nIF6t7Do%_kfh()|4LfHYSgVw3i`jQ5F$HpACm8D>af+0}++ zp{qI*j#v|e4SZ`x?6f#~E=` zRN+_iC%7((o9B!(bt6i-Ia>M#JqOq8xp0fY%Yp-svNE87!}%UMh3|fnq|+j|`(E@F zGZ(U3Rs!TQVjSam-F3FLSb(62zCEC945p3$HUG(dn!rH~?|;A`u46N=D^*27LENQY z*l8DRhfGi5r+_S52)Vu=Pp2A(7*R0F6dwqF`zyL6`c#2Ie8ykfaG5>$l?|d{AAfg0 z>LQff;I!W}VmtJG>83F4zM2~GGEXw)amui8z1*YU9Q|>cneSb1-=X9wbSD0}_ti`y zyjm8F@E8f{ksb^#R-^m%PvJh*_lmwB9^1_WOMQ=0R`;uqTGUeQ=7`HtaQ3XCLguR@RH-v{aj+IGO7fDhzeyp>VOfs(A#?&efI}E}#LM2Tp#g z(hHfz$I#oZ;yyCa$o}&^Lp3serqroZp%lysyCAY$Q&SZ9GfeH24cO{}zbBjE(>*I@p2m0t|IXK|(z~$aU22F^Z z@{gs_c1F}n5x>$C>54*=BF~}{<`^t(^FU{DXHM9!D|U*S*`;SJwXRli-f65*8LLk# zI)Q6}c3uB^aYOPA_atVbOM$Ki)n6>MP^zybrY;eFW#7E*XAO%(SD*QhNdQr|0se7K zzrJO{*GVq_8#@8`O%w)xx;Ov=5AjS?&3}+-2uA@*0ICc9TD&;!f{G=9G^hY2$|2o5 zUgYzNzCgUn(cb+sSpb1kH&1}f@nt~I|JtjOR1r@RBta)F7qsx3gr}u+2rgst-zaMf z?3mJ;*^94C4D&}zId=``!yc1kV;;2;jPd-&TWkWg#TKGTu7|gTJk*@cNwWo8_%x{* z_0(sF4R!Q5EG3AfHJ9Xe$tK5As}Gv`8=^Sd3qi3y-+TFz&|gpdWqOUFRkvqD#_9^; zo%}2a$BT|@{-vN!i20d1oJii|z@QlC1sx&4o&f`Pk0d5h)qmV`yc;e1~ zT3N!RupQrn;V~)_2$m-IV4ie{2J|<87iLJA=(Ej4hsNY$7}J$; zn@bKTPHq(0@3p>Plpp8-p{D*u_ajaXWd+Ud zN4(JYR1b%(QsCtTl3857NC;G4M|b6wUU-~PgwD|}To!YPE5_rjoDGMStOdJv+RWbc z(hx-O4N?#yl%FN@c*1$^t~DwdxmOJVOQ`6~$sctQ0E;V1t6Mp~|F%$w4Phyyvk`T; zEQ#evMjBo3xz##eR_LUyn~j8oxuJ6ZhbVn-^1FnQU1vS`O!q};nI{w|m&`7;pqa*? zjF#gSij0ZZ%qR}kXQwj~x^DQf|MJ%chcIAv*nHpX<(uNG154OG0*{pvV0QQGrL#Wv zU*qMvGGi(pV`%*PXj?Tmk*A^wW#$4o%Wu9Pq9k{45^V$3pvAyh3OImTeBvPr*sFtptvbXeb}`C+@}bS}oj-&bya+2BagK@b8l236 zG88jX`}8&5dVQO3qArxwb0n#$XF~_$vrf6k1%991_nc&G4m#MAtix;X69Sl)`s(8ku+O zXj_`c->*})hnA4+Xk?5Y$Fe-D&Rt4T(Q5kj_nmY0^1gG=0>&(U-9xt0XRmzDT()&B z1xg?laMb^4?`mV4Dx>i2#`qWxMq*+NXh2LLW@~!yZRrLkrgXLKKDya<5+MWz+hkDa z(m}Ere<|t@74veFQh}%hLt-#XlmHSiK@$EDA$}kjlLm>=C^MjGV#Fx=ob%q>-FAZ% zC_|!4mSwlM?K$V3^StLh=e*}6`rtO4y%t597uBNOnPz9^qHhZ{F|}YI6U~pEL4TrT z1|5+zcq2t9sjewwQk?044@(qhh~i8ExlpV&ORteFL6nFpok*9)t#!h{Sshes3!7-p zsywxu;tDA+p4jkbuBZSIv zRTu!6@PTB18*pG>FH^X%pnQuYO@hvo=U$1%DBt+WpGj^&8vdi-{7xh4Wb;7_(;oCj zz>bbzh&pi{N>UZs*oqt`FsU8K$~Y!as#1WyY%Cn?X!S*iz(|r@*8!rb&S+d1<8ipq zZg&4zni{J{z2?mm>;b{^bw4E!DgVBqZdcU{y+Nn(w4^zNo}~o52-ha+GEpbp9B~>k z`D#lSPE@3591qH&*41U&z)*+uph=(kx?Q7*UZ?>ejNIsbz0FCCZb4gJgC-8EBwD=1 zs*Ur2R*$>h(~zfi(aK$wyZ1JCVM!w$M(rvr?yVg`Xl@j3N`T{_6z(UhBPe5&xc-F@l9VRZ!WtB?yz=?ZYHCDk)gVtEz zpzC>dykMt(RslQd%0MUB0oZ2Rskm;)LU1G}kjaxyWr3DXFm4sj~FHHD9b zh!&%9k*^5$CM}p(D&C6;~%p3c<$s8ZJ(uCqq9Njix zuNQ+If#{Qq4U{*ZK3agv1+<%*_ z#K)Oot3Dc`4Ww&y`x#3b_>QG^BhP!@p&lhqkJD^i^pxy);g z7oCe9?2|K@$mWrfi^Y(*G6|eb4zn* zzF%cIH2O`R{--4M3RO4x!o~}Z@s|ENW9j;?6zaw=#^LU9XGZ`y7jA4M7Oke;982S1 z+5oyEEK9>L=^04C$HoKR*GoQ!Q|7FBjaIP=;&QyN2f~B&+Dz$TJJQ6`>w%A91h?Q& z4{Zurbg&hpRLNnvH6`~qeoB+vWtSzkx_BARH%NeO)+oEf;>W#-CPZ^!6&% zAa5!fb_{OrQ(Yrr=eG2emmcJsoZE~E`YUD(J4Qk(lElZ6Bt|_@79D-M%(I_DIX4?~ zy?)B%Jbx(*7U#Q+OkTT@Nd6WSS2@q}9ZWIq{QobW+&wJ^F>QZKRyAuppb+suv@J$9 z>x(oQ{`N>yI38|~#DwzQCFb;hEw~-67t@Z+&T3eu$o72woE}G$gF)VihUC#c$R1FL z7qN2(79-Tj!$oi)iWA4rAl98SA~;`W!t;Qr@P1pyXCtQ9)Mh;x#?CMY@I#|2EWC)X zUGSmmI^9#q9R0r%~k|9QQ?{(VwwtLn|2bEHy$bn3D!WmPvV118lP>CC9A5aG17 zLCY<3dXf=9dX9Px3FYds2_*GapUthlPfR=Wb5`}(M59Y{qI^8|Atag6Og>K-w?{@D zE&cbPa76XoJy~@TF%1Zz0o>3AS+!pTA*2*$-~_w&QBCGDItyG5m(v@#*#{}AU!O(1 znC^p{;JRIQ<49Mr??CB5*hEhTQp(I7sst2{Gp8niZM>6xCCGO=d{W&9OmC4GZx#cI$Mcz^FKek@E4=*Crx@J(-a`6ihys5Pyd4ZvKp={28-?!v&x51mA1B%J(jr_ekANdvJJQNOk2F^$)w6 w3$7+`b=*MmxJ|5c`h`o6586KfY`Ah-%de}4@>kLCI;Fa + from gperf.texi on 26 September 2000 --> Perfect Hash Function Generator

User's Guide to gperf 2.7.2

The GNU Perfect Hash Function Generator

-

Edition 2.7.2, 20 August 2000

+

Edition 2.7.2, 26 September 2000

Douglas C. Schmidt


@@ -511,7 +511,8 @@ Bostic's algorithm written in C, and distributed to net.sources around 1984. The current program is a heavily modified, enhanced, and extended implementation of Keith's basic idea, created at the University of California, Irvine. Bugs, patches, and suggestions should be reported -to <bug-gnu-utils@gnu.org>. +to both <bug-gnu-utils@gnu.org> and +<gperf-bugs@lists.sourceforge.net>.

  • diff --git a/doc/gperf_3.html b/doc/gperf_3.html index abce6b0..529b1c7 100644 --- a/doc/gperf_3.html +++ b/doc/gperf_3.html @@ -1,7 +1,7 @@ + from gperf.texi on 26 September 2000 --> Perfect Hash Function Generator - 1 Introduction diff --git a/doc/gperf_4.html b/doc/gperf_4.html index 9df3bf5..1658d3b 100644 --- a/doc/gperf_4.html +++ b/doc/gperf_4.html @@ -1,7 +1,7 @@ + from gperf.texi on 26 September 2000 --> Perfect Hash Function Generator - 2 Static search structures and GNU gperf diff --git a/doc/gperf_5.html b/doc/gperf_5.html index 740df65..010ad4e 100644 --- a/doc/gperf_5.html +++ b/doc/gperf_5.html @@ -1,7 +1,7 @@ + from gperf.texi on 26 September 2000 --> Perfect Hash Function Generator - 3 High-Level Description of GNU gperf diff --git a/doc/gperf_6.html b/doc/gperf_6.html index ed47fe3..a9cbacc 100644 --- a/doc/gperf_6.html +++ b/doc/gperf_6.html @@ -1,7 +1,7 @@ + from gperf.texi on 26 September 2000 --> Perfect Hash Function Generator - 4 Invoking gperf diff --git a/doc/gperf_7.html b/doc/gperf_7.html index fa36cd4..263bff2 100644 --- a/doc/gperf_7.html +++ b/doc/gperf_7.html @@ -1,7 +1,7 @@ + from gperf.texi on 26 September 2000 --> Perfect Hash Function Generator - 5 Known Bugs and Limitations with gperf diff --git a/doc/gperf_8.html b/doc/gperf_8.html index 977e2cb..a016c5d 100644 --- a/doc/gperf_8.html +++ b/doc/gperf_8.html @@ -1,7 +1,7 @@ + from gperf.texi on 26 September 2000 --> Perfect Hash Function Generator - 6 Things Still Left to Do diff --git a/doc/gperf_9.html b/doc/gperf_9.html index f094377..e9c933d 100644 --- a/doc/gperf_9.html +++ b/doc/gperf_9.html @@ -1,7 +1,7 @@ + from gperf.texi on 26 September 2000 --> Perfect Hash Function Generator - 7 Implementation Details of GNU gperf diff --git a/doc/gperf_toc.html b/doc/gperf_toc.html index 4dfe7c0..0ece534 100644 --- a/doc/gperf_toc.html +++ b/doc/gperf_toc.html @@ -1,14 +1,14 @@ + from gperf.texi on 26 September 2000 --> Perfect Hash Function Generator - Table of Contents

    User's Guide to gperf 2.7.2

    The GNU Perfect Hash Function Generator

    -

    Edition 2.7.2, 20 August 2000

    +

    Edition 2.7.2, 26 September 2000

    Douglas C. Schmidt


    @@ -47,7 +47,7 @@

  • Concept Index


    -This document was generated on 20 August 2000 using the +This document was generated on 26 September 2000 using the texi2html translator version 1.51.

  • @@ -1656,7 +1657,7 @@ Foundation, 1989.


    -This document was generated on 20 August 2000 using the +This document was generated on 26 September 2000 using the texi2html translator version 1.51.

    diff --git a/doc/gperf.info b/doc/gperf.info index 31bb1c6..526cacc 100644 --- a/doc/gperf.info +++ b/doc/gperf.info @@ -452,8 +452,8 @@ Contributors to GNU `gperf' Utility net.sources around 1984. The current program is a heavily modified, enhanced, and extended implementation of Keith's basic idea, created at the University of California, Irvine. Bugs, - patches, and suggestions should be reported to - `'. + patches, and suggestions should be reported to both + `' and `'. * Special thanks is extended to Michael Tiemann and Doug Lea, for providing a useful compiler, and for giving me a forum to exhibit @@ -1365,25 +1365,25 @@ Tag Table: Node: Top1236 Node: Copying3130 Node: Contributors22321 -Node: Motivation23534 -Node: Search Structures24610 -Node: Description28155 -Node: Input Format30056 -Node: Declarations30898 -Node: Keywords33222 -Node: Functions34977 -Node: Output Format35471 -Node: Binary Strings38067 -Node: Options39073 -Node: Input Details39779 -Node: Output Language40844 -Node: Output Details42148 -Node: Algorithmic Details46796 -Node: Verbosity54238 -Node: Bugs54941 -Node: Projects57169 -Node: Implementation58746 -Node: Bibliography59463 -Node: Concept Index61406 +Node: Motivation23580 +Node: Search Structures24656 +Node: Description28201 +Node: Input Format30102 +Node: Declarations30944 +Node: Keywords33268 +Node: Functions35023 +Node: Output Format35517 +Node: Binary Strings38113 +Node: Options39119 +Node: Input Details39825 +Node: Output Language40890 +Node: Output Details42194 +Node: Algorithmic Details46842 +Node: Verbosity54284 +Node: Bugs54987 +Node: Projects57215 +Node: Implementation58792 +Node: Bibliography59509 +Node: Concept Index61452  End Tag Table diff --git a/doc/gperf.ps b/doc/gperf.ps index 57fac47..aa7f31e 100644 --- a/doc/gperf.ps +++ b/doc/gperf.ps @@ -1,7 +1,7 @@ %!PS-Adobe-2.0 %%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software %%Title: ../../doc/gperf.dvi -%%Pages: 36 +%%Pages: 28 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentPaperSizes: a4 @@ -9,7 +9,7 @@ %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D600 -o ../../doc/gperf.ps ../../doc/gperf.dvi %DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 1998.05.02:1318 +%DVIPSSource: TeX output 2000.09.26:1257 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -70,23 +70,264 @@ rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet TeXDict begin 39158280 55380996 1000 600 600 (../../doc/gperf.dvi) @start -%DVIPSBitmapFont: Fa cmti10 10.95 1 -/Fa 1 47 df<120FEA3FC0127FA212FFA31380EA7F00123C0A0A77891C>46 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fb cmbxti10 14.4 1 -/Fb 1 47 df<13FCEA03FF000F13804813C05AA25AA2B5FCA31480A214006C5A6C5A6C5A +%DVIPSBitmapFont: Fa cmbxti10 14.4 1 +/Fa 1 47 df<13FCEA03FF000F13804813C05AA25AA2B5FCA31480A214006C5A6C5A6C5A EA0FE0121271912B>46 D E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fc cmb10 10.95 2 -/Fc 2 109 df46 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fc cmtt9 9 16 +/Fc 16 126 df<000F1470486C13F8383FC001EA7FE0140315F038FFF00700F914E0A214 +0F15C0A2141F00FF1480387FE03F1500A26C485A381F807E380F00FEC75AA213015CA213 +035C13075CA2130F5C131F5CA2133F91C7FCA24913F090387E01F89038FE03FC9038FC07 +FEA212019038F80FFF0003149F13F0A2120713E0A2000F14FF9038C007FE121F1380EC03 +FC000FEB01F86CC712F0203A7DB327>37 D<007FB512F8B612FCA46C14F81E067C7E27> +95 D<3803FFC0000F13F04813FC4813FF811380EC1FC0381F000F000480C71207A2EB0F +FF137F0003B5FC120F5A383FFC07EA7FC0130012FE5AA46C130F007F131FEBC0FF6CB612 +806C15C07E000313F1C69038807F8022207C9F27>97 D99 DII104 D<130F497E497EA46D5A6DC7FC90C8FCA7383FFF +80487FA37EEA000FB3A4007FB512F0B6FC15F815F07E1D2F7BAE27>I<387FE07F39FFF1 +FFC001F713F090B5FC6C80000313C1EC01FCEBFE005B5BA25BB03A7FFF83FFE0B500C713 +F0A36C018313E024207F9F27>110 DI<397FFC03FC39FFFE0FFF023F13804A13C0007F90B5FC39007FFE1F14F89138 +F00F809138E002004AC7FC5CA291C8FCA2137EAD007FB57EB67EA36C5C22207E9F27> +114 D<9038FFF3800007EBFFC0121F5A5AEB803F38FC000F5AA2EC07806C90C7FCEA7F80 +13FC383FFFF06C13FC000713FF00011480D8000F13C09038003FE014070078EB03F000FC +1301A27E14036CEB07E0EBE01F90B512C01580150000FB13FC38707FF01C207B9F27>I< +133C137EA8007FB512F0B612F8A36C14F0D8007EC7FCAE1518157EA415FE6D13FC1483EC +FFF86D13F06D13E0010313C0010013001F297EA827>I<3A7FFE07FFE000FF15F06D5A49 +7E007F15E03A0F80001F00A36D5B0007143EA414F0EBC1F83903E3FC7CA4EBE79EA20001 +1478A301F713F8A2EBFF0F6C5CA3EBFE0790387C03E024207F9F27>119 +D123 D125 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fd cmr9 9 48 +/Fd 48 123 df<123C127EB4FCA21380A2127F123D1201A412031300A25A1206120E120C +121C5A5A126009177AB315>39 D<123C127EB4FCA21380A2127F123D1201A412031300A2 +5A1206120E120C121C5A5A126009177A8715>44 D48 D<13075B5B137FEA07FFB5FC13BFEAF83F1200B3B3A2497E00 +7FB51280A319327AB126>IIII<000C14C0380FC00F90B5128015005C5C14F0 +14C0D80C18C7FC90C8FCA9EB0FC0EB7FF8EBF07C380FC03F9038001F80EC0FC0120E000C +EB07E0A2C713F01403A215F8A41218127E12FEA315F0140712F8006014E01270EC0FC06C +131F003C14806CEB7F00380F80FE3807FFF8000113E038003F801D347CB126>I<14FE90 +3807FF80011F13E090383F00F0017C13703901F801F8EBF003EA03E01207EA0FC0EC01F0 +4848C7FCA248C8FCA35A127EEB07F0EB1FFC38FE381F9038700F809038E007C039FFC003 +E0018013F0EC01F8130015FC1400A24814FEA5127EA4127F6C14FCA26C1301018013F800 +0F14F0EBC0030007EB07E03903E00FC03901F81F806CB51200EB3FFCEB0FE01F347DB126 +>I<1230123C003FB6FCA34814FEA215FC0070C7123800601430157015E04814C01401EC +0380C7EA07001406140E5C141814385CA25CA2495A1303A3495AA2130FA3131F91C7FCA2 +5BA55BA9131C20347CB126>III<15E0A34A7EA24A7EA34A7EA3EC0DFE140CA2EC187FA34A +6C7EA202707FEC601FA202E07FECC00FA2D901807F1507A249486C7EA301066D7EA2010E +80010FB5FCA249800118C77EA24981163FA2496E7EA3496E7EA20001821607487ED81FF0 +4A7ED8FFFE49B512E0A333367DB53A>65 DIII70 +D73 +D<017FB5FCA39038003FE0EC1FC0B3B1127EB4FCA4EC3F805A0060140000705B6C13FE6C +485A380F03F03803FFC0C690C7FC20357DB227>IIIII<90381FE00390387FFC0748B5FC3907F01FCF390F80 +03FF48C7FC003E80814880A200788000F880A46C80A27E92C7FC127F13C0EA3FF013FF6C +13F06C13FF6C14C06C14F0C680013F7F01037F9038003FFF140302001380157F153FED1F +C0150F12C0A21507A37EA26CEC0F80A26C15006C5C6C143E6C147E01C05B39F1FC03F800 +E0B512E0011F138026C003FEC7FC22377CB42B>83 D85 +D<12035A120E5A12181238123012701260A212E05AA412DEB4FC1380A2127FA2EA3F0012 +1E09177BB315>96 DIII<153FEC0FFFA3EC007F81AEEB07F0EB3FFCEBFC0F3901F003BF +3907E001FF48487E48487F8148C7FCA25A127E12FEAA127E127FA27E6C6C5BA26C6C5B6C +6C4813803A03F007BFFC3900F81E3FEB3FFCD90FE0130026357DB32B>III<151F90391FC07F809039FFF8E3C03901F07FC73907E03F033A0FC01F83 +809039800F8000001F80EB00074880A66C5CEB800F000F5CEBC01F6C6C48C7FCEBF07C38 +0EFFF8380C1FC0001CC9FCA3121EA2121F380FFFFEECFFC06C14F06C14FC4880381F0001 +003EEB007F4880ED1F8048140FA56C141F007C15006C143E6C5C390FC001F83903F007E0 +C6B51280D91FFCC7FC22337EA126>III +108 D<2703F01FE013FF00FF90267FF80313C0903BF1E07C0F03E0903BF3803E1C01F028 +07F7003F387FD803FE1470496D486C7EA2495CA2495CB3486C496C487EB53BC7FFFE3FFF +F0A33C217EA041>I<3903F01FC000FFEB7FF09038F1E0FC9038F3807C3907F7007EEA03 +FE497FA25BA25BB3486CEB7F80B538C7FFFCA326217EA02B>II<3903F03F8000FFEBFFE09038F3C0F89038F7007ED8 +07FE7F6C48EB1F804914C049130F16E0ED07F0A3ED03F8A9150716F0A216E0150F16C06D +131F6DEB3F80160001FF13FC9038F381F89038F1FFE0D9F07FC7FC91C8FCAA487EB512C0 +A325307EA02B>I<3803E07C38FFE1FF9038E38F809038E71FC0EA07EEEA03ECA29038FC +0F8049C7FCA35BB2487EB512E0A31A217FA01E>114 DI<1330A51370A313F0A21201A212031207381FFFFEB5FCA23803 +F000AF1403A814073801F806A23800FC0EEB7E1CEB1FF8EB07E0182F7FAD1E>IIII<3A7FFF807FF8A33A07F8001FC00003EC0F800001EC070015066C6C5BA26D131C +017E1318A26D5BA2EC8070011F1360ECC0E0010F5BA2903807E180A214F3010390C7FC14 +FBEB01FEA26D5AA31478A21430A25CA214E05CA2495A1278D8FC03C8FCA21306130EEA70 +1CEA7838EA1FF0EA0FC025307F9F29>121 D<003FB512F0A2EB000F003C14E00038EB1F +C00030EB3F800070137F1500006013FE495A13035CC6485A495AA2495A495A49C7FC1530 +13FE485A12035B48481370485A001F14604913E0485A387F000348130F90B5FCA21C207E +9F22>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fe cmb10 10.95 2 +/Fe 2 109 df97 D<13FFB5FCA512077EB3B3AFB512FCA516 3F7EBE19>108 D E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fd cmtt12 13.14 5 -/Fd 5 118 df40 D<12FC127E7E6C7E6C7E7F12076C7E7F12016C7E7F137E137FA2EB +3F80A2131F14C0A2130F14E0A2130714F0A4EB03F8A7EB01FCB3A2EB03F8A7EB07F0A414 +E0130FA214C0131FA21480133FA2EB7F00A2137E13FE5B485A12035B485A120F5B485A48 +C7FC127E5A165A7BC323>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fg cmbx10 12 11 +/Fg 11 120 df<903801FFF8011FEBFF80017F14E090B612F8489038807FFC3A03FE001F +FE486CEB07FF486E7F0280806F7FA36F7F6C90C7FCA26C5AEA00F890C8FCA2150F021FB5 +FC0103B6FC131F017F13C03901FFFC004813E0000F13804890C7FC485A5B485AA2485AA4 +5DA26C6C5BED07BF6C6C010F13FC6CB490391F3FFFE06C9026C0FE1F13F06CEBFFFC6CEC +F007C66CD9E00113E0010790C9FC342F7DAD38>97 D100 DI104 D<13FCEA03FF4813804813C0A24813E0A66C13C0A26C13806C +1300EA00FC90C7FCA9EB7FC0EA7FFFA512037EB3AFB6FCA518467CC520>I<903A7FC003 +FF80B5011F13F0037F7F92B57E9139C1FC1FFE9139C3E00FFF00039026C7C0077F6CEBCF +0002DE7F02FC81A25C5CA35CB3A7B600C1B61280A5392D7CAC40>110 +DI<90397F803FC0 +B5EBFFF0028313F8028713FC91388FE7FE91389F8FFF0003EB9E0F6C13BCA214F8A29138 +F007FEED03FC9138E001F892C7FCA35CB3A5B612C0A5282D7DAC2F>114 +D<90391FFE078090B512DF000314FF5A380FF803381FE000D83F80133F127F90C7121FA2 +48140FA27FA201E090C7FC13F8EBFFC06C13FEECFFC06C14F015FC6C806C806C15800001 +15C07E011F14E01301D9000713F014000078147F00F8143F151F6C140FA37E6C15E0151F +6D14C06D133F01F0EB7F809039FC03FF0090B55A00FC5CD8F83F13F0D8F00790C7FC242F +7CAD2D>II119 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fh cmtt10 12 8 +/Fh 8 118 df100 +DI<49B4 +EB1FE001079038C0FFF8011F01F313FC017F90B512FE90B7FC5A48018313F1903AFC007F +80FC484890383FC07849011F130048486D7EA2001F81491307A66D130F000F5DA26C6C49 +5A6D133F6C6C495A9038FF83FF91B5C7FC485C5D4814F001C713C001C190C8FC01C0C9FC +A47F6C7E90B512FE6CECFFE06C15F8000715FE48814816809026F0000313C0D83FC09038 +003FE090C8120F48ED07F0007E150300FE16F8481501A56C1503007E16F0007F15076C6C +EC0FE001E0143FD81FF8ECFFC0270FFF800F13806C90B612006C5DC615F8013F14E0010F +1480010001F8C7FC2F447DAB34>103 D<14F0497E497E497EA46D5A6D5A6D5A91C8FCA9 +383FFFFC487FA47EC7FCB3AD003FB612F04815F8B7FCA27E6C15F0253E79BD34>105 +D<15FF267FFC0713E026FFFE1F7F027F7F91B57E90B67E6C1481C69038FC00FF02F07F4A +804A133F5CA291C7FCA35BB3A4277FFFFC0FB5FCB56C481480A46C496C1400312C7FAB34 +>110 D<90390FFF078090B5EACFC0000314FF5A5A5A383FF803397F80007F90C7123F12 +FE48141FA47E007FEC0F8001C090C7FCEA3FF8381FFFE06C13FF6C14E06C14F8C614FE01 +1F7FD9007F1380020313C09138003FE0ED0FF0003C1407007EEC03F800FE1401A27EA36D +13036D14F06D13076DEB1FE001FE13FF90B612C016801600D8FC7F13FC6D13F0D8780713 +80252E79AC34>115 DII E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fi cmtt12 13.14 5 +/Fi 5 118 df99 DI E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fe cmbx12 13.14 28 -/Fe 28 122 df46 D<15F014011407141F147FEB03FF137FB6FCA313FC1380C7FCB3B3B200 7FB712E0A52B4777C63D>49 D121 D E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Ff cmtt12 14.4 5 -/Ff 5 115 df114 D E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fg cmtt12 17.28 5 -/Fg 5 115 df34 +D39 D<387FFFFCA3B5FCA21605799521> +45 D<120FEA3FC0127FA212FFA31380EA7F00123C0A0A77891C>I<131EEB3F80137FEBFF +C05AA214806C13005B133C90C7FCB3120FEA3FC0127FA212FFA35B6CC7FC123C122777A6 +1C>58 D<171C173C177CA217FCA216011603A21607A24C7EA2161DA216391679167116E1 +A2ED01C1A2ED038115071601150EA2031C7FA24B7EA25D15F05D4A5AA24A5AA24AC7FC5C +140E5C021FB6FC4A81A20270C7127FA25C13015C495AA249C8FCA2130E131E131C133C5B +01F882487ED807FEEC01FFB500E0017FEBFF80A25C39417BC044>65 +D<9339FF8001C0030F13E0033F9038F803809239FF807E07913A03FC001F0FDA0FF0EB07 +1FDA1FC0ECBF00DA7F806DB4FC4AC77E495AD903F86E5A495A130F4948157E4948157C49 +5A13FF91C9FC4848167812035B1207491670120FA2485A95C7FC485AA3127F5BA312FF5B +A490CCFCA2170FA2170EA2171E171C173C173817786C16706D15F04C5A003F5E6D140300 +1F4B5A6D4AC8FC000F151E6C6C5C6C6C14F86C6C495A6C6CEB07C090397FC03F8090261F +FFFEC9FC010713F0010013803A4272BF41>67 D<49B812F8A390260003FEC7121F18074B +14031801F000F014075DA3140F5D19E0A2141F4B1338A2EF7801023F027013C04B91C7FC +A217F0027F5CED80011603160F91B65AA3ED001F49EC07805CA3010392C8FC5CF003804C +13070107020E14005C93C75A180E010F161E4A151C183CA2011F5E5C60A2013F15014A4A +5A1707017F150F4D5A4A147F01FF913807FF80B9FCA295C7FC3D3E7BBD3E>69 +D<49B812F0A390260003FEC7123F180F4B1403A2F001E014075DA3140F5D19C0A2141F5D +1770EFF003023F02E013804B91C7FCA21601027F5CED8003A2160702FFEB1F8092B5FCA3 +49D9003FC8FC4A7F82A20103140E5CA2161E0107141C5CA293C9FC130F5CA3131F5CA313 +3F5CA2137FA25C497EB612E0A33C3E7BBD3B>I<9339FF8001C0030F13E0033F9038F803 +809239FF807E07913A03FC001F0FDA0FF0EB071FDA1FC0ECBF00DA7F806DB4FC4AC77E49 +5AD903F86E5A495A130F4948157E4948157C495A13FF91C9FC4848167812035B12074916 +70120FA2485A95C7FC485AA3127F5BA312FF5BA30303B512FC90C7FCA2DB000190C7FCA2 +5FA216035FA316076C5E7FA2003F150F6D5D121F6D141F000F153F6C6C4A5A6C6C14F76C +6CEB01E36CB4EB07C1903A7FC03F81C090391FFFFE00010701F890C8FC010013803A4272 +BF46>I<49B648B6FC495DA2D9000390C7000313004B5D4B5DA2180714074B5DA2180F14 +0F4B5DA2181F141F4B5DA2183F143F4B5DA2187F147F4B5DA218FF91B8FC96C7FCA292C7 +12015B4A5DA2170313034A5DA2170713074A5DA2170F130F4A5DA2171F131F4A5DA2173F +133F4A5DA2017F157FA24A5D496C4A7EB66CB67EA3483E7BBD44>I<49B612C0A25FD900 +0390C8FC5D5DA314075DA3140F5DA3141F5DA3143F5DA3147F5DA314FF92C9FCA35B5CA3 +13035C18C0EF01E0010716C05C17031880130F4A140718005F131F4A141EA2173E013F5D +4A14FC1601017F4A5A16074A131F01FFECFFF0B8FCA25F333E7BBD39>76 +D<49B5933807FFFC496062D90003F0FC00505ADBBF805E1A771AEF1407033F923801CFE0 +A2F1039F020FEE071F020E606F6C140E1A3F021E161C021C04385BA2F1707F143C023804 +E090C7FCF001C0629126780FE0495A02705FF00700F00E0114F002E0031C5BA2F0380301 +0116704A6C6C5D18E019070103ED01C00280DA03805BA2943807000F13070200020E5C5F +DB03F8141F495D010E4B5CA24D133F131E011CDAF9C05CEEFB80197F013C6DB4C7FC0138 +95C8FC5E01784A5C13F8486C4A5CD807FE4C7EB500F04948B512FE16E01500563E7BBD52 +>I<902601FFFE020FB5FC496D5CA2D900016D010013C04AEE3F00193E70141C193CEC07 +BFDB3FE01438151F1978020F7FDA0E0F15708219F0EC1E07021C6D5CA203031401023C7F +DA38015DA2701303EC7800027002805BA2047F130702F014C04A013F91C7FCA2715A0101 +141F4AECF00EA2040F131E010315F84A151C1607EFFC3C0107140391C7143817FE040113 +784915FF010E16708218F0131E011C6F5AA2173F133C01385E171F137813F8486C6F5AEA +07FEB500F01407A295C8FC483E7BBD44>II<49B77E18F018FC903B0003FE0003FE +EF00FF4BEC7F80F03FC00207151F19E05DA2020F16F0A25DA2141FF03FE05DA2023F16C0 +187F4B1580A2027FEDFF00604B495A4D5A02FF4A5A4D5A92C7EA3FC04CB4C7FC4990B512 +FC17E04ACAFCA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA25CA2137FA25C +497EB67EA33C3E7BBD3E>I<49B612FCEFFF8018F0903B0003FE000FF8EF03FE4BEB00FF +8419800207ED3FC05DA219E0140F5DA3021FED7FC05DA2F0FF80143F4B15004D5A60027F +4A5A4B495A4D5AEF3F8002FF02FEC7FC92380007F892B512E01780499038000FE04A6D7E +707E707E0103814A130083A213075CA25E130F5C5F1603131F5CA3013F020714404A16E0 +5F017F160119C04A01031303496C1680B6D8800113079438FE0F009338007E1ECAEA3FFC +EF07F03B407BBD42>82 D<92391FE00380ED7FFC913A01FFFE0700913907F01F8F91390F +C007DF4AC66CB4FC023E6D5A4A130014FC495A4948147CA2495AA2010F15785CA3011F15 +70A46E91C7FCA2808014FE90380FFFE015FC6DEBFF8016E06D806D806D6C7F141F02037F +EC003FED07FF1501A281A282A212075A167E120EA2001E15FE5EA25E003E14015E003F14 +034B5A486C5C150F6D495A6D49C8FCD8F9F0137C39F8FE01F839F03FFFF0D8E00F13C026 +C001FEC9FC314279BF33>I<48B9FCA25A903AFE001FF00101F89138E0007FD807E0163E +49013F141E5B48C75BA2001E147FA2001C4B131C123C003814FFA2007892C7FC12704A15 +3C00F01738485CC716001403A25DA21407A25DA2140FA25DA2141FA25DA2143FA25DA214 +7FA25DA214FFA292C9FCA25BA25CA21303A25CEB0FFE003FB67E5AA2383D71BC41>I<00 +1FB500F090B512F0485DA226003FF0C7380FFC004AEC03F04A5D715A017F1503A24A5DA2 +01FF150795C7FC91C8FCA2485E170E5BA20003161E171C5BA20007163C17385BA2000F16 +7817705BA2001F16F05F5BA2003F1501A2495DA2007F1503A2495DA2160794C8FC48C8FC +5E160E161E6C151C163C5E5E5E6C6C13014B5A001F4A5A6C6C011FC9FC6D133E6C6C13F8 +3903FC07F0C6B512C0013F90CAFCEB07F83C406FBD44>I<277FFFFE01B500FC90B512E0 +B5FCA20003902680000790C7380FFC006C90C701FCEC07F049725A04035EA26350C7FCA2 +0407150EA2040F5D1A3C041F153862163B6216734F5A6D14E303014B5A6C15C303034BC8 +FC1683DB0703140E191E030E151C61031C7F61ED380161157003F04A5A15E002014B5A15 +C0DA03804AC9FC60DA0700140E60140E605C029C5D14B8D97FF85D5C715A5C4A5DA24A92 +CAFC5F91C7FC705A137E5F137C5F137801705D53406EBD5B>87 D<010C1306011C130E01 +78133C01E01370484813E04913C0000313013907000380000EEB0700000C1306001C130E +0018130C0038131C003013180070133800601330A200E0137000CFEB678039FFC07FE0A6 +018013C0397F003F80003CEB1E001F1C69BE2F>92 D<147E49B47E903907C1C38090391F +80EFC090383F00FF017E137F4914804848133F485AA248481400120F5B001F5C157E485A +A215FE007F5C90C7FCA21401485C5AA21403EDF0385AA21407EDE078020F1370127C021F +13F0007E013F13E0003E137FECF3E1261F01E313C03A0F8781E3803A03FF00FF00D800FC +133E252977A72E>97 DIIII<167C4BB4FC923807C78092380F83C0ED1F87161FED3F3FA2 +157EA21780EE0E004BC7FCA414015DA414035DA30103B512F8A390260007E0C7FCA3140F +5DA5141F5DA4143F92C8FCA45C147EA414FE5CA413015CA4495AA4495AA4495A121E127F +5C12FF49C9FCA2EAFE1EEAF83C1270EA7878EA3FE0EA0F802A5383BF1C>III<1478EB01FCA21303A314F8 +EB00E01400AD137C48B4FC38038F80EA0707000E13C0121E121CEA3C0F1238A2EA781F00 +701380A2EAF03F140012005B137E13FE5BA212015BA212035B1438120713E0000F1378EB +C070A214F0EB80E0A2EB81C01383148038078700EA03FEEA00F8163E79BC1C>I107 +DIIII<903903E001F890390FF807FE903A1E7C1E0F80903A1C3E3C07 +C0013C137801389038E003E0EB783F017001C013F0ED80019038F07F0001E015F8147E16 +03000113FEA2C75AA20101140717F05CA20103140F17E05CA20107EC1FC0A24A1480163F +010F15005E167E5E131F4B5A6E485A4B5A90393FB80F80DA9C1FC7FCEC0FFCEC03E049C9 +FCA2137EA213FEA25BA21201A25BA21203A2387FFFE0B5FCA22D3A80A72E>I114 DII<137C48B4141C26038F80137EEA0707000E7F001E +15FE121CD83C0F5C12381501EA781F007001805BA2D8F03F1303140000005D5B017E1307 +A201FE5C5B150F1201495CA2151F0003EDC1C0491481A2153F1683EE0380A2ED7F070001 +02FF13005C01F8EBDF0F00009038079F0E90397C0F0F1C90391FFC07F8903907F001F02A +2979A731>I<017CEB01C048B4EB07F038038F80EA0707000E01C013F8121E001C1403EA +3C0F0038EC01F0A2D8781F130000705BA2EAF03F91C712E012005B017E130116C013FE5B +1503000115805BA2ED07001203495B150EA25DA25D1578000114706D5B0000495A6D485A +D97E0FC7FCEB1FFEEB03F0252979A72A>I<903903F001F890390FFC07FE90393C1E0E0F +9026780F1C138001F0EBB83FD801E013F89039C007F07FEA0380000714E0D9000F140048 +151C000E4AC7FCA2001E131FA2C75BA2143F92C8FCA35C147EA314FE4A131CA30101143C +001E1538003F491378D87F811470018314F000FF5D9039077801C039FE0F7C033A7C0E3C +078027783C1E1EC7FC391FF80FFC3907E003F029297CA72A>120 +D<137C48B4143826038F8013FCEA0707000E7F001E1401001C15F8EA3C0F12381503D878 +1F14F000701380A2D8F03F1307020013E012005B017E130F16C013FE5B151F1201491480 +A2153F000315005BA25D157EA315FE5D00011301EBF8030000130790387C1FF8EB3FF9EB +07E1EB00035DA21407000E5CEA3F80007F495AA24A5AD8FF0090C7FC143E007C137E0070 +5B387801F0383803E0381E0FC06CB4C8FCEA03F8263B79A72C>II E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fm cmtt12 17.28 5 +/Fm 5 115 df114 D E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fh cmsl10 10.95 50 -/Fh 50 123 df34 D<903907C007C0A2496C487EA8011F131FA202C05B +A3007FB7FCA2B81280A36C16006C5D3A007F807F80A2020090C7FCA9495BA2003F90B512 +FE4881B81280A36C1600A22701FC01FCC7FCA300031303A201F85BA76C486C5AA229387D +B730>I<1438147C14FCA4EB03FF011F13E090B512FC4880000780481580261FFEFD13C0 +9039F0FC3FE0D83FC0131FD87F80EB0FF001001307007E15F800FE14035A1507A36CEC03 +F0A2007F91C7FC138013C0EA3FF0EA1FFE13FF6C13FF6C14E0000114F86C6C7F011F7F01 +037F0100148002FD13C09138FC7FE0151FED0FF015070018EC03F8127E1501B4FCA35AA2 +6CEC03F07E01801307ED0FE0D83FC0131F01F0EB7FC0D81FFEB512806CB612006C5C6C5C +C614F0013F13C0D907FEC7FCEB00FCA5147C143825477BBE30>IIII<141E147F14FF5BEB03FEEB07 +FCEB0FF0EB1FE0EB3FC0EB7F80EBFF00485A5B12035B485A120F5BA2485AA2123F5BA212 +7F90C7FCA412FEAD127FA47F123FA27F121FA26C7EA27F12076C7E7F12017F6C7EEB7F80 +EB3FC0EB1FE0EB0FF0EB07FCEB03FEEB01FF7F147F141E184771BE30>I<127812FE7E7F +6C7E6C7EEA0FF06C7E6C7E6C7E6C7EEB7F80133F14C0131FEB0FE014F01307A2EB03F8A2 +14FC1301A214FE1300A4147FAD14FEA4130114FCA2130314F8A2EB07F0A2130F14E0EB1F +C0133F1480137FEBFF00485A485A485A485AEA3FE0485A485A90C7FC5A1278184778BE30 +>I<14E0497E497EA60038EC0380007EEC0FC0D8FF83EB3FE001C3137F9038F3F9FF267F +FBFB13C06CB61280000FECFE00000314F86C5C6C6C13C0011F90C7FC017F13C048B512F0 +4880000F14FE003FECFF80267FFBFB13C026FFF3F913E09038C3F87F0183133FD87E03EB +0FC00038EC0380000091C7FCA66D5A6D5A23277AAE30>I<143EA2147FAF007FB7FCA2B8 +1280A36C1600A2C76CC8FCAF143EA229297DAF30>II<007FB612F0A2B712F8A36C15F0A225077B9E30>I<120FEA3FC0 +EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C0C6E8B30>I<16F01501ED03F8A21507A2 +ED0FF0A2ED1FE0A2ED3FC0A2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA24A5AA2 +4A5AA24A5AA24AC7FCA2495AA25C1303A2495AA2495AA2495AA2495AA2495AA249C8FCA2 +485AA25B1203A2485AA2485AA2485AA2485AA2485AA248C9FCA25AA2127CA225477BBE30 +>I<14FE903807FFC0497F013F13F8497F90B57E48EB83FF4848C6138049137F4848EB3F +C04848EB1FE049130F001F15F0491307A24848EB03F8A290C712014815FCA400FEEC00FE +AD6C14016C15FCA36D1303003F15F8A26D1307001F15F0A26D130F6C6CEB1FE0A26C6CEB +3FC06C6CEB7F806D13FF2601FF8313006CEBFFFE6D5B6D5B010F13E06D5BD900FEC7FC27 +3A7CB830>IIIII<000FB612804815C05A +A316800180C8FCAEEB83FF019F13C090B512F015FC8181D9FE0313809039F0007FC04913 +3F0180EB1FE06CC7120F000E15F0C81207A216F81503A31218127EA2B4FC150716F04814 +0F6C15E06C141F6DEB3FC06D137F3A3FE001FF80261FFC0F13006CB55A6C5C6C5C6C14E0 +6C6C1380D90FFCC7FC25397BB730>II<127CB712FC16FEA416FC48C7EA0FF816 +F0ED1FE0007CEC3FC0C8EA7F80EDFF00A24A5A4A5A5D14075D140F5D4A5AA24A5AA24AC7 +FCA25C5C13015CA213035CA213075CA4495AA6131F5CA96D5A6DC8FC273A7CB830>I<49 +B4FC011F13F0017F13FC90B57E0003ECFF804815C048010113E03A1FF8003FF049131FD8 +3FC0EB07F8A24848EB03FC90C71201A56D1303003F15F86D13076C6CEB0FF06C6CEB1FE0 +D807FCEB7FC03A03FF83FF806C90B512006C6C13FC011F13F0497F90B512FE48802607FE +0013C0D80FF8EB3FE0D81FE0EB0FF04848EB07F8491303007F15FC90C712014815FE4814 +00A66C14016C15FC6D1303003F15F86D1307D81FF0EB1FF06D133F3A0FFF01FFE06C90B5 +12C06C1580C6ECFE006D5B011F13F0010190C7FC273A7CB830>I<49B4FC010F13E0013F +13F890B57E4880488048010113803A0FFC007FC0D81FF0EB3FE04848131F49EB0FF04848 +1307A290C7EA03F85A4815FC1501A416FEA37E7E6D1303A26C6C13076C6C130F6D133FD8 +0FFC13FF6CB6FC7E6C14FE6C14F9013FEBE1FC010F138190380060011400ED03F8A21507 +16F0150F000F15E0486C131F486CEB3FC0157FEDFF804A1300EC07FE391FF01FFC90B55A +6C5C6C5C6C1480C649C7FCEB3FF0273A7CB830>I<120FEA3FC0EA7FE0A2EAFFF0A4EA7F +E0A2EA3FC0EA0F00C7FCAF120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C27 +6EA630>II<16F01503ED07F8151F157FEDFFF014034A +13C0021F138091383FFE00ECFFF8495B010713C0495BD93FFEC7FC495A3801FFF0485B00 +0F13804890C8FCEA7FFC5BEAFFE05B7FEA7FF87FEA1FFF6C7F000313E06C7F38007FFC6D +7E90380FFF806D7F010113F06D7FEC3FFE91381FFF80020713C06E13F01400ED7FF8151F +1507ED03F01500252F7BB230>I<007FB7FCA2B81280A36C16006C5DCBFCA7003FB612FE +4881B81280A36C1600A229157DA530>I<1278127EB4FC13C07FEA7FF813FEEA1FFF6C13 +C000037F6C13F86C6C7EEB1FFF6D7F010313E06D7F9038007FFC6E7E91380FFF806E13C0 +020113F080ED3FF8151F153FEDFFF05C020713C04A138091383FFE004A5A903801FFF049 +5B010F13804990C7FCEB7FFC48485A4813E0000F5B4890C8FCEA7FFE13F8EAFFE05B90C9 +FC127E1278252F7BB230>I64 D<147F4A7EA2497FA4497F14F7A401077F14E3A3010F7FA314C1A2011F +7FA490383F80FEA590387F007FA4498049133F90B6FCA34881A39038FC001F0003814913 +0FA4000781491307A2D87FFFEB7FFFB56CB51280A46C496C130029397DB830>I<007FB5 +12F0B612FE6F7E82826C813A03F8001FF815076F7E1501A26F7EA615015EA24B5A1507ED +1FF0ED7FE090B65A5E4BC7FC6F7E16E0829039F8000FF8ED03FC6F7E1500167FA3EE3F80 +A6167F1700A25E4B5A1503ED1FFC007FB6FCB75A5E16C05E6C02FCC7FC29387EB730>I< +91387F803C903903FFF03E49EBFC7E011F13FE49EBFFFE5B9038FFE07F48EB801F3903FE +000F484813075B48481303A2484813015B123F491300A2127F90C8FC167C16005A5AAC7E +7EA2167C6D14FE123FA27F121F6D13016C6C14FCA26C6CEB03F86D13076C6CEB0FF03901 +FF801F6C9038E07FE06DB512C06D14806D1400010713FC6D13F09038007FC0273A7CB830 +>I<003FB512E04814FCB67E6F7E6C816C813A03F8007FF0ED1FF8150F6F7E6F7E15016F +7EA2EE7F80A2163F17C0161FA4EE0FE0AC161F17C0A3163F1780A2167F17005E4B5A1503 +4B5A150F4B5AED7FF0003FB65A485DB75A93C7FC6C14FC6C14E02B387FB730>I<007FB7 +FCB81280A47ED803F8C7123FA8EE1F0093C7FCA4157C15FEA490B5FCA6EBF800A4157C92 +C8FCA5EE07C0EE0FE0A9007FB7FCB8FCA46C16C02B387EB730>I<003FB712804816C0B8 +FCA27E7ED801FCC7121FA8EE0F8093C7FCA5153E157FA490B6FCA69038FC007FA4153E92 +C8FCAE383FFFF8487FB5FCA27E6C5B2A387EB730>I<02FF13F00103EBC0F8010F13F101 +3F13FD4913FF90B6FC4813C1EC007F4848133F4848131F49130F485A491307121F5B123F +491303A2127F90C7FC6F5A92C8FC5A5AA892B5FC4A14805CA26C7F6C6D1400ED03F8A27F +003F1407A27F121F6D130F120F7F6C6C131FA2D803FE133F6C6C137FECC1FF6C90B5FC7F +6D13FB010F13F30103EBC1F0010090C8FC293A7DB830>I<3B3FFF800FFFE0486D4813F0 +B56C4813F8A26C496C13F06C496C13E0D803F8C7EAFE00B290B6FCA601F8C7FCB3A23B3F +FF800FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E02D387FB730>I<007FB6 +FCB71280A46C1500260007F0C7FCB3B3A8007FB6FCB71280A46C1500213879B730>I<49 +B512F04914F85BA27F6D14F090C7EAFE00B3B3123C127EB4FCA24A5A1403EB8007397FF0 +1FF86CB55A5D6C5C00075C000149C7FC38003FF025397AB730>II<383FFFF848 +7FB57EA26C5B6C5BD801FCC9FCB3B0EE0F80EE1FC0A9003FB7FC5AB8FCA27E6C16802A38 +7EB730>III<90383FFFE048B512FC000714FF4815804815C04815E0EBF80001E0133F +D87F80EB0FF0A290C71207A44815F8481403B3A96C1407A26C15F0A36D130FA26D131F6C +6CEB3FE001F813FF90B6FC6C15C06C15806C1500000114FCD8003F13E0253A7BB830>I< +007FB512F0B612FE6F7E16E0826C813903F8003FED0FFCED03FE15016F7EA2821780163F +A6167F17005EA24B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15F001F8C9FCB0387F +FFC0B57EA46C5B29387EB730>I<003FB57E4814F0B612FC15FF6C816C812603F8017F91 +38003FF0151F6F7E15071503821501A515035E1507150F4B5A153F4AB45A90B65A5E93C7 +FC5D8182D9F8007FED3FE0151F150F821507A817F8EEF1FCA53A3FFF8003FB4801C0EBFF +F8B56C7E17F06C496C13E06C49EB7FC0C9EA1F002E397FB730>82 +D<90390FF803C0D97FFF13E048B512C74814F74814FF5A381FF80F383FE001497E484813 +7F90C7123F5A48141FA2150FA37EED07C06C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C +14E0000114F86C80011F13FF01031480D9003F13C014019138007FE0151FED0FF0A2ED07 +F8A2007C140312FEA56C140716F07F6DEB0FE06D131F01F8EB3FC001FF13FF91B5128016 +0000FD5CD8FC7F13F8D8F81F5BD878011380253A7BB830>I<003FB712C04816E0B8FCA4 +3AFE003F800FA8007CED07C0C791C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730>I< +3B7FFFC007FFFCB56C4813FEA46C496C13FCD803F8C7EA3F80B3B16D147F00011600A36C +6C14FE6D13016D5CEC800390393FE00FF890391FF83FF06DB55A6D5C6D5C6D91C7FC9038 +007FFCEC1FF02F3980B730>III89 D<001FB612FC4815FE5AA490C7EA03FCED07F816F0150FED1FE016C015 +3FED7F80003E1500C85A4A5A5D14034A5A5D140F4A5A5D143F4A5A92C7FC5C495A5C1303 +495A5C130F495A5C133F495A91C8FC5B4848147C4914FE1203485A5B120F485A5B123F48 +5A90B6FCB7FCA46C15FC27387CB730>I<127CA212FEA27EA26C7EA26C7EA26C7EA26C7E +A26C7EA26C7EA212017FA26C7EA26D7EA26D7EA26D7EA26D7EA26D7EA26D7EA2130180A2 +6D7EA26E7EA26E7EA26E7EA26E7EA26E7EA26E7EA2140181A26E7EA2ED7F80A2ED3FC0A2 +ED1FE0A2ED0FF0A2ED07F8A21503A2ED01F0150025477BBE30>92 +D<007FB612F0A2B712F8A36C15F0A225077B7D30>95 D<1338137CEA01FE12031207EA0F +FC13F0EA1FE013C0EA3F8013005A127EA212FE5AA5EAFFC013E013F0127FA2123FA2EA1F +E0EA07C00F1D70BE30>IIII<913801FFE04A7F5CA28080EC0007AAEB03FE90381FFF87 +4913E790B6FC5A5A481303380FFC00D81FF0133F49131F485A150F4848130790C7FCA25A +A25AA87E6C140FA27F003F141F6D133F6C7E6D137F390FF801FF2607FE07EBFFC06CB712 +E06C16F06C14F76D01C713E0011F010313C0D907FCC8FC2C397DB730>I<49B4FC010713 +E0011F13F8017F7F90B57E488048018113803A07FC007FC04848133FD81FE0EB1FE0150F +484814F0491307127F90C7FCED03F85A5AB7FCA516F048C9FC7E7EA27F003FEC01F06DEB +03F86C7E6C7E6D1307D807FEEB1FF03A03FFC07FE06C90B5FC6C15C0013F14806DEBFE00 +010713F8010013C0252A7CA830>IIII<14E0EB03F8A2497EA36D5AA2EB00E0 +91C8FCA9381FFFF8487F5AA27E7EEA0001B3A9003FB612C04815E0B7FCA27E6C15C02339 +7AB830>III<387FFFF8B57EA47EEA +0001B3B3A8007FB612F0B712F8A46C15F025387BB730>I<02FC137E3B7FC3FF01FF80D8 +FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE07EB03F801FC13FE9039F803FC +01A201F013F8A301E013F0B3A23C7FFE0FFF07FF80B548018F13C0A46C486C0107138032 +2881A730>II<49B4FC010F13E0013F13F8497F90B5 +7E0003ECFF8014013A07FC007FC04848EB3FE0D81FE0EB0FF0A24848EB07F8491303007F +15FC90C71201A300FEEC00FEA86C14016C15FCA26D1303003F15F86D13076D130F6C6CEB +1FF06C6CEB3FE06D137F3A07FF01FFC06C90B512806C15006C6C13FC6D5B010F13E00101 +90C7FC272A7CA830>II114 D<90381FFC1E48B5129F000714FF5A5A5A387FF007EB800100FEC7FC4880 +A46C143E007F91C7FC13E06CB4FC6C13FC6CEBFF806C14E0000114F86C6C7F01037F9038 +000FFF02001380007C147F00FEEC1FC0A2150F7EA27F151F6DEB3F806D137F9039FC03FF +0090B6FC5D5D00FC14F0D8F83F13C026780FFEC7FC222A79A830>III<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01F80003F000A26D13 +0700005DA26D130F017E5CA2017F131F6D5CA2EC803F011F91C7FCA26E5A010F137EA2EC +E0FE01075BA214F101035BA3903801FBF0A314FF6D5BA36E5A6E5A2B277EA630>I<3B3F +FFC01FFFE0486D4813F0B515F8A26C16F06C496C13E0D807E0C7EA3F00A26D5C0003157E +A56D14FE00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147DA2ECFDF9017C5C14F8A3 +017E13FBA290393FF07FE0A3ECE03FA2011F5C90390F800F802D277FA630>I<3A3FFF81 +FFFC4801C37FB580A26C5D6C01815BC648C66CC7FC137FEC80FE90383F81FC90381FC3F8 +EB0FE3ECE7F06DB45A6D5B7F6D5B92C8FC147E147F5C497F81903803F7E0EB07E790380F +E3F0ECC1F890381F81FC90383F80FE90387F007E017E137F01FE6D7E48486D7E267FFF80 +B5FCB500C1148014E3A214C16C0180140029277DA630>I<3B3FFFC07FFF80486DB512C0 +B515E0A26C16C06C496C13803B01FC0003F000A2000014076D5C137E150F017F5C7F151F +D91F805BA214C0010F49C7FCA214E00107137EA2EB03F0157C15FCEB01F85DA2EB00F9EC +FDF0147D147FA26E5AA36E5AA35DA2143F92C8FCA25C147EA2000F13FE486C5AEA3FC1EB +C3F81387EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA630>I<001FB612FC4815 +FE5AA316FC90C7EA0FF8ED1FF0ED3FE0ED7FC0EDFF80003E491300C7485A4A5A4A5A4A5A +4A5A4A5A4A5A4990C7FC495A495A495A495A495A495A4948133E4890C7127F485A485A48 +5A485A485A48B7FCB8FCA46C15FE28277DA630>II125 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fo cmsl10 10.95 35 +/Fo 35 123 df12 -D<39078003C0391FE00FF0003F131F01F013F8A6390F3007980000EB0018017013380160 -1330A201E01370491360A2000114E039038001C001001380481303000EEB0700000C1306 -001C130E485B485B485B4813601D1C75BE2D>34 D39 -D<007FB5FCA2B512FEA418067C961E>45 D<121EEA3F80EA7FC012FFA41380EA7F00123C -0A0A788919>I<13F0EA01FC1203EA07FEA313FCA2EA03F8EA01E0C7FCB3121EEA3F80EA -7FC012FFA41380EA7F00123C0F2778A619>58 D<000FB912FE5AA27ECDFCAE007FB912F0 -BAFCA27E3F1679A147>61 D<17E016011603831607A2160FA2161F83163FA2167F167716 -F7EEE7FCED01E316C3150316831507EE03FEED0F01150E151E151C153C03387FED780015 -7015F05D4A4880177F4A5AA24AC7FCA2020E81173F5C021FB6FC5CA20270C7EA3FE0171F -5CA2495AA2494881170F49C8FCA2130EA24982013C1507A2137CD801FE4B7E2607FF80EC -3FFEB500F00107B512FC19F85E3E417DC044>65 D67 D<013FB812F8A39026007FF0C7127F6E48140F18034B14011800A31978 -147F4B1570A502FF147092C7FCA3190017F0495D4A1301A21607161F91B6FC495DA29138 -FC003F160F1607160301075D5CA219E0180119C0010FEC07004A90C712031980A2180719 -00011F5E5C181EA2183E183C013F167C4A15FC4D5A1707017F151F01FF4AB45AB9FCA260 -3D3E7DBD3E>69 D<013FB812E0A3903A007FF000016E48EB003F180F4B14071803A31801 -147F4B15C0A514FF92C71270A395C7FC17F0495D5C160116031607161F49B65AA39138FC -003F160F160701075D4A1303A5010F4AC8FC5C93C9FCA4131F5CA5133F5CA3137FEBFFF0 -B612F8A33B3E7DBD3B>I<4BB46C1370031F01F013F0037F9038FC01E0913A03FF807E03 -913A0FF8000F83DA1FE0EB07C7DA7F80EB01EF4AC812FFD903FE16C04948157F4948153F -495A4948151F495A4948168091C9120F5A485AA2485A000F18004982121FA248485EA295 -C7FC485AA412FF5BA6043FB512E05BA29339001FFC00715AA2607F127FA2171F123F6D5E -A2121F7F000F163F6C7E6C6C4B5A7F6C6C15FF6C6DEB01EFD93FC0EB07C7D91FF0EB1F87 -D907FE9038FE03800101B5EAF8016D6C01E0C8FCDA07FEC9FC3C4276BF47>I<013FB5D8 -F807B6FC04F015FEA29026007FF0C7380FFE006E486E5AA24B5DA4180F147F4B5DA4181F -14FF92C85BA4183F5B4A5EA491B8FC5B6102FCC8127FA318FF13074A93C7FCA45F130F4A -5DA41703131F4A5DA41707133F4A5DA3017F150F496C4A7EB6D8E01FB512FC6115C0483E -7DBD44>I<021FB512FCA3DA000713006F5AA25EA41507A25EA4150FA25EA4151FA25EA4 -153FA25EA4157FA25EA415FFA293C7FCA45C121FD87F805BEAFFC0A214035D13804A5AEA -FE0000F8495A48495A00705C6C495A6C01FEC8FC380F81FC3803FFE0C690C9FC2E407ABD -2F>74 D<013FB512FEA25E9026007FF8C8FCEC3FE0A25DA5147F5DA514FF92C9FCA55B5C -A513035CA513075CA21838A21870130F5CA218E0A3011F15014A15C01703A21707EF0F80 -013F151F4A143F177FEFFF00017F140301FF143FB9FC5FA2353E7DBD39>76 -D<90263FFFF093381FFFF85013F0629026007FF8EFF000023F4D5AA2023B933801DFC0A2 -DA39FCED039FA2F1073F14790271040E5BEC70FE191C19381A7F02F01670DAE07F94C7FC -19E0A2F001C06201016D6C495A02C05FF00700A2180E6F6C14010103161C028003385BA2 -18706F7EF0E00313070200DA01C05BA2923907F00380A294380700075B010E902603F80E -5C5FA25F190F011E6D6C5A011C605FA2EEFDC0DB00FF141F013C5D013860013C92C7FC01 -7C5C01FE027E143F2607FF80017C4A7EB500FC037FB512E004785E4A1338553E7CBD53> -I<90263FFFE0023FB5FC6F16FEA29026003FF8020313C0021F030013004A6C157C023B16 -3C6F15381439810238167802787FDA707F157082153F82031F15F002F07FDAE00F5D8215 -078203031401010180DAC0015D82811780047F1303010315C04A013F5C17E0161F17F004 -0F1307010715F891C7000791C7FC17FC160317FE04015B4915FF010E6E130E188E177F18 -CEEF3FDE011E16FE011C6F5AA2170FA21707133C01386F5A133C017C150113FE2607FF80 -1400B512FC18705C483E7DBD44>I<923803FF80031F13F09238FE01FE913903F0003FDA -0FC0EB1FC0DA3F80EB07E0027EC76C7E49486E7E49488149486E7E4948157F495A013F17 -804948ED3FC049C9FCA24848EE1FE012035B000718F05B120FA2485A19F8123F5BA2127F -A219F04848163FA5F07FE0A35BF0FFC0A219805F19007F4D5A127F4D5A60003F160F6D5E -001F4C5A4D5A6C6C4B5A95C7FC6C6C15FE00034B5A6C6C4A5A6C6C4A5A017FEC1FC06D6C -495AD90FE001FEC8FC903903F807F80100B512C0DA0FFCC9FC3D4276BF47>I<013FB612 -FEEFFFE018F8903B007FF0000FFC6E48EB01FF7113804BEC7FC0183F19E0F01FF0A2147F -5D19F8A402FFED3FF092C8FCA219E0A2F07FC05B4AEDFF8019004D5A4D5AEF0FF80103ED -3FE04A903801FF8091B648C7FC17F002FCCAFCA213075CA5130F5CA5131F5CA5133F5CA3 -137F497EB612E0A25D3D3E7DBD3E>I<013FB612F017FF18E0903B007FF0003FF86E48EB -07FCEF01FE4B6D7EF07F8019C0183F19E0147F4B15F0A502FFED7FE092C8FCA219C0F0FF -80A2494B13004A5D4D5AEF0FF04D5AEF7F800103DA07FEC7FC91B612F017809139FC0007 -E0EE03F8EE00FC0107814A147F717EA284A2130F5CA484011F157F5CA41902013F17075C -A2F0F00F017F170E496C143FB600E0011F131C94380FF83C4B01071378CA3801FFE09438 -003F8040407DBD43>82 D<9238FF80070207EBE00F021FEBF81E91387F00FE02FCEB1F3E -D903F0EB0FFE49481307494813034AEB01FC49C7FC491400133E137E177C491578A57F17 -70A26D1500808080EB7FFEECFFE06D13FEEDFFC06D14F06D14FC010380010080143F0203 -1480DA003F13C015031500EE7FE0163F161FA2160F121CA31607160F003C16C0A3178000 -3E151F1700007E5D007F153E6D5C16FC01E0495AD87DF0495AD8FCFCEB0FC03AF87F803F -8027F01FFFFEC7FCD8E00713F839C0007FC030427BBF33>I<0007B912F0A33C0FFE000F -F8003F01F0160F01C04A13034848160190C7FC121EF000E048141F5E1238A21278127015 -3F5E5AA3C81600157F5EA515FF93C9FCA55C5DA514035DA514075DA5140F5DA3141FEC7F -FC0003B7FCA33C3D76BC42>II87 D<0118130C0138131C491338491370484813E039038001C0390700038000 -061400000E5B48130E0018130C0038131C00301318A20070133800601330A300EFEB7780 -39FFC07FE001E013F0A4397FC03FE0A2393F801FC0391E000F001E1C6CBE2D>92 +D39 D<007FB5FCA2B512FEA418067C961E>45 +D<121EEA3F80EA7FC012FFA41380EA7F00123C0A0A788919>I<157015F014011407143F +903803FFE0137FEBFFCFEBF80F1300141F15C0A5143F1580A5147F1500A55C5CA513015C +A513035CA513075CA5130F5CA3131F497EB612F8A31D3D78BC2D>49 +D67 D<013FB812E0A3903A007FF000 +016E48EB003F180F4B14071803A31801147F4B15C0A514FF92C71270A395C7FC17F0495D +5C160116031607161F49B65AA39138FC003F160F160701075D4A1303A5010F4AC8FC5C93 +C9FCA4131F5CA5133F5CA3137FEBFFF0B612F8A33B3E7DBD3B>70 +D<021FB512FCA3DA000713006F5AA25EA41507A25EA4150FA25EA4151FA25EA4153FA25E +A4157FA25EA415FFA293C7FCA45C121FD87F805BEAFFC0A214035D13804A5AEAFE0000F8 +495A48495A00705C6C495A6C01FEC8FC380F81FC3803FFE0C690C9FC2E407ABD2F>74 +D<9238FF80070207EBE00F021FEBF81E91387F00FE02FCEB1F3ED903F0EB0FFE49481307 +494813034AEB01FC49C7FC491400133E137E177C491578A57F1770A26D1500808080EB7F +FEECFFE06D13FEEDFFC06D14F06D14FC010380010080143F02031480DA003F13C0150315 +00EE7FE0163F161FA2160F121CA31607160F003C16C0A31780003E151F1700007E5D007F +153E6D5C16FC01E0495AD87DF0495AD8FCFCEB0FC03AF87F803F8027F01FFFFEC7FCD8E0 +0713F839C0007FC030427BBF33>83 D<0007B912F0A33C0FFE000FF8003F01F0160F01C0 +4A13034848160190C7FC121EF000E048141F5E1238A212781270153F5E5AA3C81600157F +5EA515FF93C9FCA55C5DA514035DA514075DA5140F5DA3141FEC7FFC0003B7FCA33C3D76 +BC42>I87 DI<48B539C07FFFC0A33C00 -0FFE003FF8006D48EB1FE0010315800101023EC7FC6E133C01005C027F5B6F5A91383F81 -C0EDC380DA1FC7C8FC15EFEC0FFE6E5A5D140381A24A7E140FEC1E7F023C7FEC383F0270 -7FECE01F010180903803C00F49486C7ED90F007F491303017E80D801FE80D807FF497EB5 -D8803F13F8A332277FA630>I<90B539E007FFF05E18E0902707FE000313006D48EB01FC -705A5F01014A5A5F16036E5C0100140794C7FC160E805E805E1678ED8070023F13F05EED -81C015C191381FC38015C793C8FC15EF15EEEC0FFCA25DA26E5AA25DA26E5A5DA24AC9FC -5C140E141E141C5C121C003F5B5A485B495A130300FE5B4848CAFCEA701EEA783CEA3FF0 -EA0FC0343A80A630>I<017FB512FEA2ECC00190397E0003FC49EB07F849EB0FF049EB1F -E049EB3FC0ED7F8000011500495B4A5A4A5A4848485A4A5AC7485A4A5A5D147F4AC7FC49 -5A495A49481370494813E0495A5C133F90387F8001D9FF0013C0485A48481303485A4848 -EB078049130F4848131F003F143F397F8001FFB71200A227277EA628>I -E +5A94C8FC5C4A137E167C6DC7FC1678010E14383E2878A642>I<90B539E007FFF05E18E0 +902707FE000313006D48EB01FC705A5F01014A5A5F16036E5C0100140794C7FC160E805E +805E1678ED8070023F13F05EED81C015C191381FC38015C793C8FC15EF15EEEC0FFCA25D +A26E5AA25DA26E5A5DA24AC9FC5C140E141E141C5C121C003F5B5A485B495A130300FE5B +4848CAFCEA701EEA783CEA3FF0EA0FC0343A80A630>121 D<017FB512FEA2ECC0019039 +7E0003FC49EB07F849EB0FF049EB1FE049EB3FC0ED7F8000011500495B4A5A4A5A484848 +5A4A5AC7485A4A5A5D147F4AC7FC495A495A49481370494813E0495A5C133F90387F8001 +D9FF0013C0485A48481303485A4848EB078049130F4848131F003F143F397F8001FFB712 +00A227277EA628>I E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fi cmbx12 14.4 57 -/Fi 57 122 df<922601FFFC903801FFE0033F9026FF801F13F84AB6D8E07F13FE020F03 -F9B6FC023FD9C00FB500C0138091277FFC0003D9FE0113C0902601FFE049495A49494949 -4813E04990C714F049484A13E0495A19C0495A7413C0017F17804A6E6E1380719138007E -007192C7FCAEBCFCA526007FF8C7000301C0C8FCB3B3A7007FB5D8F803B612F0A553547D -D34E>11 DI45 DI<157815FC14031407141F14FF130F0007B5FC -B6FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43>49 -DI<91380FFFC091B512FC0107ECFF80011F15E09026 -3FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D807FC8048B416C080486D15 -E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C04B -5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113F89238007FFE707E701380 -7013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318FC -A25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A1380D80FF84A13006CB44A5A -6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F1380374F7ACD43>I<177C -17FEA2160116031607160FA2161F163F167FA216FF5D5DA25D5DED1FBFED3F3F153E157C -15FCEC01F815F0EC03E01407EC0FC01580EC1F005C147E147C5C1301495A495A5C495A13 -1F49C7FC133E5B13FC485A5B485A1207485A485A90C8FC123E127E5ABA12C0A5C96C48C7 -FCAF020FB712C0A53A4F7CCE43>III<121F7F7FEB -FF8091B81280A45A1900606060A2606060485F0180C86CC7FC007EC95A4C5A007C4B5A5F -4C5A160F4C5A484B5A4C5A94C8FC16FEC812014B5A5E4B5A150F4B5AA24B5AA24B5A15FF -A24A90C9FCA25C5D1407A2140FA25D141FA2143FA4147F5DA314FFA55BAC6D5BA2EC3FC0 -6E5A395279D043>I<913807FFC0027F13FC0103B67E010F15E090261FFC0113F8903A3F -E0003FFCD97F80EB0FFE49C76C7E48488048486E1380000717C04980120F18E0177FA212 -1F7FA27F7F6E14FF02E015C014F802FE4913806C7FDBC00313009238F007FE6C02F85B92 -38FE1FF86C9138FFBFF06CEDFFE017806C4BC7FC6D806D81010F15E06D81010115FC0107 -81011F81491680EBFFE748018115C048D9007F14E04848011F14F048487F484813030300 -14F8484880161F4848020713FC1601824848157F173FA2171FA2170FA218F8A27F007F17 -F06D151FA26C6CED3FE0001F17C06D157F6C6CEDFF806C6C6C010313006C01E0EB0FFE6C -01FCEBFFFC6C6CB612F06D5D010F1580010102FCC7FCD9000F13C0364F7ACD43>I<9138 -0FFF8091B512F8010314FE010F6E7E4901037F90267FF8007F4948EB3FF048496D7E4849 -80486F7E484980824817805A91C714C05A7013E0A218F0B5FCA318F8A618FCA46C5DA37E -A25E6C7F6C5DA26C5D6C7F6C6D137B6C6D13F390387FF803011FB512E36D14C301030283 -13F89039007FFE03EC00401500A218F05EA3D801F816E0487E486C16C0487E486D491380 -A218005E5F4C5A91C7FC6C484A5A494A5A49495B6C48495BD803FC010F5B9027FF807FFE -C7FC6C90B55A6C6C14F06D14C0010F49C8FC010013F0364F7ACD43>II<171F4D7E4D7EA24D7EA34C7FA24C7FA34C -7FA34C7FA24C7FA34C8083047F80167E8304FE804C7E03018116F8830303814C7E030781 -16E083030F814C7E031F81168083033F8293C77E4B82157E8403FE824B800201835D8402 -03834B800207835D844AB87EA24A83A3DA3F80C88092C97E4A84A2027E8202FE844A8201 -0185A24A820103854A82010785A24A82010F855C011F717FEBFFFCB600F8020FB712E0A5 -5B547BD366>65 DI<932601 -FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003EB -C07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F8824949 -824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA24849181FA3 -485B1B0FA25AA298C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C1A -1F6C7F1C006C6D606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C -5A6D6DEE7F806D6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF002 -0091B612C0033F93C8FC030715FCDB007F14E0040101FCC9FC525479D261>IIII<932601FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA -803F0203DAE003EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848 -C9FC4901F8824949824949824949824949824990CA7E494883A2484983485B1B7F485B48 -1A3FA24849181FA3485B1B0FA25AA298C8FC5CA2B5FCAE6C057FB712E0A280A36C94C700 -3FEBC000A36C7FA36C7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D6D5E6D7F6D01FC93B5 -FC6D13FF6D6C6D5C6E01F0EC07FB020F01FEEC1FF10203903AFFF001FFE0020091B6EAC0 -7F033FEE001F030703FC1307DB007F02E01301040149CAFC5B5479D26A>III75 D -III<93380FFFC00303B6FC031F15E092B712FC02 -03D9FC0013FF020F01C0010F13C0023F90C7000313F0DA7FFC02007F494848ED7FFE4901 -E0ED1FFF49496F7F49496F7F4990C96C7F49854948707F4948707FA24849717E48864A83 -481B804A83481BC0A2481BE04A83A2481BF0A348497113F8A5B51AFCAF6C1BF86E5FA46C -1BF0A26E5F6C1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A6E5E6C626D6C4C5B -6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01FF02035B023F01E0 -011F13F0020F01FC90B512C0020390B7C8FC020016FC031F15E0030392C9FCDB001F13E0 -565479D265>II82 -D<91260FFF80130791B500F85B010702FF5B011FEDC03F49EDF07F9026FFFC006D5A4801 -E0EB0FFD4801800101B5FC4848C87E48488149150F001F824981123F4981007F82A28412 -FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF15F86CECFF8016FC6CEDFFC017F06C -16FC6C16FF6C17C06C836C836D826D82010F821303010082021F16801400030F15C0ED00 -7F040714E01600173F050F13F08383A200788200F882A3187FA27EA219E07EA26CEFFFC0 -A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C04A5A02F8EC7FF0903B1FFFC003FFE0 -486C90B65AD8FC0393C7FC48C66C14FC48010F14F048D9007F90C8FC3C5479D24B>I<00 -3FBC1280A59126C0003F9038C0007F49C71607D87FF8060113C001E08449197F49193F90 -C8171FA2007E1A0FA3007C1A07A500FC1BE0481A03A6C994C7FCB3B3AC91B912F0A55351 -7BD05E>II87 D89 D97 DI<913801FFF8021FEBFF8091B612F0010315FC010F90 -38C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F1380 -91C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E -6E140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B5 -5A01001580023F49C7FC020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A4 -913801FFE0021F13FC91B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC -49487F4849143F484980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C -7F5F6C6D5C7E6C6D5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D -90B5128F0101ECFE0FD9003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13 -FC49B6FC010715C04901817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48 -178048497F18C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA612 -7FA27F7EA218E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D -6CECFF00D91FFEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034 -387CB63D>IIII<137F497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB -3FF0B5FCA512017EB3B3A6B612E0A51B547BD325>I108 DII< -913801FFE0021F13FE91B612C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C -7E49486D7F48496D7F48496D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880 -A400FF18C0AC007F1880A3003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B -6C6D495B6D6C495BD93FFE011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC -020113E03A387CB643>I<903A3FF001FFE0B5010F13FE033FEBFFC092B612F002F30101 -7F913AF7F8007FFE0003D9FFE0EB1FFFC602806D7F92C76C7F4A824A6E7F4A6E7FA2717F -A285187F85A4721380AC1A0060A36118FFA2615F616E4A5BA26E4A5B6E4A5B6F495B6F49 -90C7FC03F0EBFFFC9126FBFE075B02F8B612E06F1480031F01FCC8FC030313C092CBFCB1 -B612F8A5414D7BB54B>I<90397FE003FEB590380FFF80033F13E04B13F09238FE1FF891 -39E1F83FFC0003D9E3E013FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0F -F04A90C7FCA55CB3AAB612FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC -120348EB003FD80FF81307D81FE0130148487F4980127F90C87EA24881A27FA27F01F091 -C7FC13FCEBFFC06C13FF15F86C14FF16C06C15F06C816C816C81C681013F1580010F15C0 -1300020714E0EC003F030713F015010078EC007F00F8153F161F7E160FA27E17E07E6D14 -1F17C07F6DEC3F8001F8EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F80714 -8048C601F8C7FC2C387CB635>I<143EA6147EA414FEA21301A313031307A2130F131F13 -3F13FF5A000F90B6FCB8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015 -806DEBC03E6DEBF0FC6DEBFFF86D6C5B021F5B020313802A4D7ECB34>IIII<007FB500F090387FFFFEA5C66C48C7000F90C7 -FC6D6CEC07F86D6D5C6D6D495A6D4B5A6F495A6D6D91C8FC6D6D137E6D6D5B91387FFE01 -4C5A6E6C485A6EEB8FE06EEBCFC06EEBFF806E91C9FCA26E5B6E5B6F7E6F7EA26F7F834B -7F4B7F92B5FCDA01FD7F03F87F4A486C7E4A486C7E020F7FDA1FC0804A486C7F4A486C7F -02FE6D7F4A6D7F495A49486D7F01076F7E49486E7E49486E7FEBFFF0B500FE49B612C0A5 -42357EB447>II E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fj cmbx12 17.28 47 -/Fj 47 122 df45 D<16F04B7E1507151F153FEC01FF1407147F +%DVIPSBitmapFont: Fp cmbx12 17.28 48 +/Fp 48 122 df45 D<16F04B7E1507151F153FEC01FF1407147F 010FB5FCB7FCA41487EBF007C7FCB3B3B3B3007FB91280A6395E74DD51>49 D<913801FFF8021FEBFFC091B612F8010315FF010F16C0013F8290267FFC0114F89027FF E0003F7F4890C7000F7F48486E7FD807F86E148048486E14C048486E14E048486F13F001 @@ -764,383 +1144,133 @@ A262A262625013006262624FB5FC1907191F4EB6FCBDFC63A553627AE161>I78 D<94381FFFE00407B67E043F15F04BB712FE030FEEFFC0033FD9FC0014F092B500 -C0010F13FC020349C7000113FF4A01F86E6C7F021F496F13E04A01C0030F7F4A496F7F91 -B5C96C7F0103497013FF494970804B834949717F49874949717F49874B8390B586484A71 -7FA24891CB6C7FA2481D804A84481DC0A348497214E0A3481DF0A34A85481DF8A5B51CFC -B06C1DF8A36E96B5FCA36C1DF0A46C6D4E14E0A36C1DC06E606C1D80A26C6E4D1400A26C -6E4D5BA26C6E4D5BA26D6D4D5B6D636D6D4D5B6F94B5FC6D636D6D4C5C6D6D4C91C7FC6D -6E4B5B6D02E0031F5B023F6D4B13F06E01FC92B55A6E01FF02035C020302C0010F91C8FC -020002FC90B512FC033F90B712F0030F17C0030394C9FCDB007F15F804071580DC001F01 -E0CAFC666677E379>II82 DI<001FBEFCA64849C79126E0000F -148002E0180091C8171F498601F81A0349864986A2491B7FA2491B3F007F1DC090C9181F -A4007E1C0FA600FE1DE0481C07A5CA95C7FCB3B3B3A3021FBAFCA663617AE070>II<913803FFFE027FEBFF -F00103B612FE010F6F7E4916E090273FFE001F7FD97FE001077FD9FFF801017F486D6D7F -717E486D6E7F85717FA2717FA36C496E7FA26C5B6D5AEB1FC090C9FCA74BB6FC157F0207 -B7FC147F49B61207010F14C0013FEBFE004913F048B512C04891C7FC485B4813F85A5C48 -5B5A5CA2B55AA45FA25F806C5E806C047D7F6EEB01F96C6DD903F1EBFF806C01FED90FE1 -14FF6C9027FFC07FC01580000191B5487E6C6C4B7E011F02FC130F010302F001011400D9 -001F90CBFC49437CC14E>97 D<903807FF80B6FCA6C6FC7F7FB3A8EFFFF8040FEBFF8004 -7F14F00381B612FC038715FF038F010014C0DBBFF0011F7FDBFFC001077F93C76C7F4B02 -007F03F8824B6F7E4B6F13804B17C0851BE0A27313F0A21BF8A37313FCA41BFEAE1BFCA4 -4F13F8A31BF0A24F13E0A24F13C06F17804F1300816F4B5A6F4A5B4AB402075B4A6C6C49 -5B9126F83FE0013F13C09127F00FFC03B55A4A6CB648C7FCDAC00115F84A6C15E091C700 -1F91C8FC90C8000313E04F657BE35A>I<92380FFFF04AB67E020F15F0023F15FC91B77E -01039039FE001FFF4901F8010113804901E0010713C04901804913E0017F90C7FC49484A -13F0A2485B485B5A5C5A7113E0485B7113C048701380943800FE0095C7FC485BA4B5FCAE -7EA280A27EA2806C18FCA26C6D150119F87E6C6D15036EED07F06C18E06C6D150F6D6DEC -1FC06D01E0EC7F806D6DECFF00010701FCEB03FE6D9039FFC03FFC010091B512F0023F5D -020F1580020102FCC7FCDA000F13C03E437BC148>II<92380FFFC04AB512FC020FECFF8002 -3F15E091B712F80103D9FE037F499039F0007FFF011F01C0011F7F49496D7F4990C76C7F -49486E7F48498048844A804884485B727E5A5C48717EA35A5C721380A2B5FCA391B9FCA4 -1A0002C0CBFCA67EA380A27EA27E6E160FF11F806C183F6C7FF17F006C7F6C6D16FE6C17 -016D6C4B5A6D6D4A5A6D01E04A5A6D6DEC3FE0010301FC49B45A6D9026FFC01F90C7FC6D -6C90B55A021F15F8020715E0020092C8FC030713F041437CC14A>III<903807FF80B6FCA6C6FC7F7FB3A8EF1FFF94B512F0040714FC041F14FF4C8193267F -E07F7F922781FE001F7FDB83F86D7FDB87F07FDB8FC0814C7F039FC78015BE03BC8003FC -825DA25DA25DA45DB3B2B7D8F007B71280A651647BE35A>II<903807FF80B6FCA6C6FC7F7FB3B3B3B3 -ADB712E0A623647BE32C>108 D<902607FF80D91FFFEEFFF8B691B500F00207EBFF8004 -0702FC023F14E0041F02FF91B612F84C6F488193267FE07F6D4801037F922781FE001F90 -27E00FF0007FC6DA83F86D9026F01FC06D7F6DD987F06D4A487F6DD98FC0DBF87EC7804C -6D027C80039FC76E488203BEEEFDF003BC6E4A8003FC04FF834B5FA24B5FA24B94C8FCA4 -4B5EB3B2B7D8F007B7D8803FB612FCA67E417BC087>I<902607FF80EB1FFFB691B512F0 -040714FC041F14FF4C8193267FE07F7F922781FE001F7FC6DA83F86D7F6DD987F07F6DD9 -8FC0814C7F039FC78015BE03BC8003FC825DA25DA25DA45DB3B2B7D8F007B71280A65141 -7BC05A>I<923807FFE092B6FC020715E0021F15F8027F15FE494848C66C6C7E010701F0 -010F13E04901C001037F49496D7F4990C87F49486F7E49486F7E48496F13804819C04A81 -4819E048496F13F0A24819F8A348496F13FCA34819FEA4B518FFAD6C19FEA46C6D4B13FC -A36C19F8A26C6D4B13F0A26C19E06C6D4B13C0A26C6D4B13806C6D4B13006D6C4B5A6D6D -495B6D6D495B010701F0010F13E06D01FE017F5B010090B7C7FC023F15FC020715E00200 -92C8FC030713E048437CC151>I<902607FF80EBFFF8B6010FEBFF80047F14F00381B612 -FC038715FF038F010114C09227BFF0003F7FC6DAFFC0010F7F6D91C76C7F6D496E7F03F8 -6E7F4B6E7F4B17804B6F13C0A27313E0A27313F0A21BF885A21BFCA3851BFEAE4F13FCA4 -1BF861A21BF0611BE0611BC06F92B512801B006F5C6F4A5B6F4A5B03FF4A5B70495B04E0 -017F13C09226CFFC03B55A03C7B648C7FC03C115F803C015E0041F91C8FC040313E093CB -FCB3A3B712F0A64F5D7BC05A>I114 -D<913A3FFF8007800107B5EAF81F011FECFE7F017F91B5FC48B8FC48EBE0014890C7121F -D80FFC1407D81FF0801600485A007F167F49153FA212FF171FA27F7F7F6D92C7FC13FF14 -E014FF6C14F8EDFFC06C15FC16FF6C16C06C16F06C826C826C826C82013F1680010F16C0 -1303D9007F15E0020315F0EC001F1500041F13F81607007C150100FC81177F6C163FA217 -1F7EA26D16F0A27F173F6D16E06D157F6D16C001FEEDFF806D0203130002C0EB0FFE02FC -EB7FFC01DFB65A010F5DD8FE0315C026F8007F49C7FC48010F13E035437BC140>II<902607FFC0ED3F -FEB60207B5FCA6C6EE00076D826D82B3B3A260A360A2607F60183E6D6D147E4E7F6D6D49 -48806D6DD907F0ECFF806D01FFEB3FE06D91B55A6E1500021F5C020314F8DA003F018002 -F0C7FC51427BC05A>III121 -D E +7E>78 D80 D82 +DI<001FBEFCA64849C79126E0000F1480 +02E0180091C8171F498601F81A0349864986A2491B7FA2491B3F007F1DC090C9181FA400 +7E1C0FA600FE1DE0481C07A5CA95C7FCB3B3B3A3021FBAFCA663617AE070>II<913803FFFE027FEBFFF001 +03B612FE010F6F7E4916E090273FFE001F7FD97FE001077FD9FFF801017F486D6D7F717E +486D6E7F85717FA2717FA36C496E7FA26C5B6D5AEB1FC090C9FCA74BB6FC157F0207B7FC +147F49B61207010F14C0013FEBFE004913F048B512C04891C7FC485B4813F85A5C485B5A +5CA2B55AA45FA25F806C5E806C047D7F6EEB01F96C6DD903F1EBFF806C01FED90FE114FF +6C9027FFC07FC01580000191B5487E6C6C4B7E011F02FC130F010302F001011400D9001F +90CBFC49437CC14E>97 D<903807FF80B6FCA6C6FC7F7FB3A8EFFFF8040FEBFF80047F14 +F00381B612FC038715FF038F010014C0DBBFF0011F7FDBFFC001077F93C76C7F4B02007F +03F8824B6F7E4B6F13804B17C0851BE0A27313F0A21BF8A37313FCA41BFEAE1BFCA44F13 +F8A31BF0A24F13E0A24F13C06F17804F1300816F4B5A6F4A5B4AB402075B4A6C6C495B91 +26F83FE0013F13C09127F00FFC03B55A4A6CB648C7FCDAC00115F84A6C15E091C7001F91 +C8FC90C8000313E04F657BE35A>I<92380FFFF04AB67E020F15F0023F15FC91B77E0103 +9039FE001FFF4901F8010113804901E0010713C04901804913E0017F90C7FC49484A13F0 +A2485B485B5A5C5A7113E0485B7113C048701380943800FE0095C7FC485BA4B5FCAE7EA2 +80A27EA2806C18FCA26C6D150119F87E6C6D15036EED07F06C18E06C6D150F6D6DEC1FC0 +6D01E0EC7F806D6DECFF00010701FCEB03FE6D9039FFC03FFC010091B512F0023F5D020F +1580020102FCC7FCDA000F13C03E437BC148>II<92380FFFC04AB512FC020FECFF80023F15 +E091B712F80103D9FE037F499039F0007FFF011F01C0011F7F49496D7F4990C76C7F4948 +6E7F48498048844A804884485B727E5A5C48717EA35A5C721380A2B5FCA391B9FCA41A00 +02C0CBFCA67EA380A27EA27E6E160FF11F806C183F6C7FF17F006C7F6C6D16FE6C17016D +6C4B5A6D6D4A5A6D01E04A5A6D6DEC3FE0010301FC49B45A6D9026FFC01F90C7FC6D6C90 +B55A021F15F8020715E0020092C8FC030713F041437CC14A>III< +903807FF80B6FCA6C6FC7F7FB3A8EF1FFF94B512F0040714FC041F14FF4C8193267FE07F +7F922781FE001F7FDB83F86D7FDB87F07FDB8FC0814C7F039FC78015BE03BC8003FC825D +A25DA25DA45DB3B2B7D8F007B71280A651647BE35A>II<903807FF80B6FCA6C6FC7F7FB3A90503B612 +80A6DD003FEB8000DE0FFCC7FCF01FF04E5AF0FFC04D5B4D90C8FCEF07FC4D5AEF3FF04D +5A4D5A4C90C9FC4C5AEE0FFC4C5A4C5AEE7FC04C7E03837F03877F158F039F7F03BF7F92 +B5FC838403FC804B7E03F0804B6C7F4B6C7F1580707F707F707FA270807080717FA2717F +717F717FA2717F717F83867180727F95B57EB7D8E00FECFFF0A64C647BE355>107 +D<903807FF80B6FCA6C6FC7F7FB3B3B3B3ADB712E0A623647BE32C>I<902607FF80D91F +FFEEFFF8B691B500F00207EBFF80040702FC023F14E0041F02FF91B612F84C6F48819326 +7FE07F6D4801037F922781FE001F9027E00FF0007FC6DA83F86D9026F01FC06D7F6DD987 +F06D4A487F6DD98FC0DBF87EC7804C6D027C80039FC76E488203BEEEFDF003BC6E4A8003 +FC04FF834B5FA24B5FA24B94C8FCA44B5EB3B2B7D8F007B7D8803FB612FCA67E417BC087 +>I<902607FF80EB1FFFB691B512F0040714FC041F14FF4C8193267FE07F7F922781FE00 +1F7FC6DA83F86D7F6DD987F07F6DD98FC0814C7F039FC78015BE03BC8003FC825DA25DA2 +5DA45DB3B2B7D8F007B71280A651417BC05A>I<923807FFE092B6FC020715E0021F15F8 +027F15FE494848C66C6C7E010701F0010F13E04901C001037F49496D7F4990C87F49486F +7E49486F7E48496F13804819C04A814819E048496F13F0A24819F8A348496F13FCA34819 +FEA4B518FFAD6C19FEA46C6D4B13FCA36C19F8A26C6D4B13F0A26C19E06C6D4B13C0A26C +6D4B13806C6D4B13006D6C4B5A6D6D495B6D6D495B010701F0010F13E06D01FE017F5B01 +0090B7C7FC023F15FC020715E0020092C8FC030713E048437CC151>I<902607FF80EBFF +F8B6010FEBFF80047F14F00381B612FC038715FF038F010114C09227BFF0003F7FC6DAFF +C0010F7F6D91C76C7F6D496E7F03F86E7F4B6E7F4B17804B6F13C0A27313E0A27313F0A2 +1BF885A21BFCA3851BFEAE4F13FCA41BF861A21BF0611BE0611BC06F92B512801B006F5C +6F4A5B6F4A5B03FF4A5B70495B04E0017F13C09226CFFC03B55A03C7B648C7FC03C115F8 +03C015E0041F91C8FC040313E093CBFCB3A3B712F0A64F5D7BC05A>I114 D<913A3FFF8007800107B5EAF81F011FECFE7F017F91B5FC48 +B8FC48EBE0014890C7121FD80FFC1407D81FF0801600485A007F167F49153FA212FF171F +A27F7F7F6D92C7FC13FF14E014FF6C14F8EDFFC06C15FC16FF6C16C06C16F06C826C826C +826C82013F1680010F16C01303D9007F15E0020315F0EC001F1500041F13F81607007C15 +0100FC81177F6C163FA2171F7EA26D16F0A27F173F6D16E06D157F6D16C001FEEDFF806D +0203130002C0EB0FFE02FCEB7FFC01DFB65A010F5DD8FE0315C026F8007F49C7FC48010F +13E035437BC140>II<902607FFC0ED3FFEB60207B5FCA6C6EE00076D826D82B3B3A260A360A2607F60 +183E6D6D147E4E7F6D6D4948806D6DD907F0ECFF806D01FFEB3FE06D91B55A6E1500021F +5C020314F8DA003F018002F0C7FC51427BC05A>III< +007FB600C0017FB512F8A6D8001F01F8C70007EBF0006D040190C7FC6D6D5D6D6D4A5A6D +6D4A5A70495A6D4C5A6E7F6E6D495A6E6D495A7049C8FC6E4A5A6E6D485A6E6D485A6E13 +FFEF8FF06EEC9FE06FEBFFC06F5C6F91C9FC5F6F5B816F7F6F7F8481707F8493B57E4B80 +5D4B80DB0FF37FDB1FE17F04C080153F4B486C7F4B486C7F4A486D7F4A486D7F4A5A4B6D +7F020F6E7F4A486D7F4A486D804A5A4AC86C7F49486F7F4A6F7F0107707FEB3FFFB600F0 +49B7FCA650407EBF55>II E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fk cmtt10 10.95 83 -/Fk 83 126 df<00101304007C131F00FEEB3F80A26C137FA248133FB2007E1400007C7F -003C131E00101304191C75B830>34 D<903907C007C0A2496C487EA8011F131FA202C05B -A3007FB7FCA2B81280A36C16006C5D3A007F807F80A2020090C7FCA9495BA2003F90B512 -FE4881B81280A36C1600A22701FC01FCC7FCA300031303A201F85BA76C486C5AA229387D -B730>I<1438147C14FCA4EB03FF011F13E090B512FC4880000780481580261FFEFD13C0 -9039F0FC3FE0D83FC0131FD87F80EB0FF001001307007E15F800FE14035A1507A36CEC03 -F0A2007F91C7FC138013C0EA3FF0EA1FFE13FF6C13FF6C14E0000114F86C6C7F011F7F01 -037F0100148002FD13C09138FC7FE0151FED0FF015070018EC03F8127E1501B4FCA35AA2 -6CEC03F07E01801307ED0FE0D83FC0131F01F0EB7FC0D81FFEB512806CB612006C5C6C5C -C614F0013F13C0D907FEC7FCEB00FCA5147C143825477BBE30>IIII<141E147F14FF5BEB03FEEB07 -FCEB0FF0EB1FE0EB3FC0EB7F80EBFF00485A5B12035B485A120F5BA2485AA2123F5BA212 -7F90C7FCA412FEAD127FA47F123FA27F121FA26C7EA27F12076C7E7F12017F6C7EEB7F80 -EB3FC0EB1FE0EB0FF0EB07FCEB03FEEB01FF7F147F141E184771BE30>I<127812FE7E7F -6C7E6C7EEA0FF06C7E6C7E6C7E6C7EEB7F80133F14C0131FEB0FE014F01307A2EB03F8A2 -14FC1301A214FE1300A4147FAD14FEA4130114FCA2130314F8A2EB07F0A2130F14E0EB1F -C0133F1480137FEBFF00485A485A485A485AEA3FE0485A485A90C7FC5A1278184778BE30 ->I<14E0497E497EA60038EC0380007EEC0FC0D8FF83EB3FE001C3137F9038F3F9FF267F -FBFB13C06CB61280000FECFE00000314F86C5C6C6C13C0011F90C7FC017F13C048B512F0 -4880000F14FE003FECFF80267FFBFB13C026FFF3F913E09038C3F87F0183133FD87E03EB -0FC00038EC0380000091C7FCA66D5A6D5A23277AAE30>I<143EA2147FAF007FB7FCA2B8 -1280A36C1600A2C76CC8FCAF143EA229297DAF30>II<007FB612F0A2B712F8A36C15F0A225077B9E30>I<120FEA3FC0 -EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C0C6E8B30>I<16F01501ED03F8A21507A2 -ED0FF0A2ED1FE0A2ED3FC0A2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA24A5AA2 -4A5AA24A5AA24AC7FCA2495AA25C1303A2495AA2495AA2495AA2495AA2495AA249C8FCA2 -485AA25B1203A2485AA2485AA2485AA2485AA2485AA248C9FCA25AA2127CA225477BBE30 ->I<14FE903807FFC0497F013F13F8497F90B57E48EB83FF4848C6138049137F4848EB3F -C04848EB1FE049130F001F15F0491307A24848EB03F8A290C712014815FCA400FEEC00FE -AD6C14016C15FCA36D1303003F15F8A26D1307001F15F0A26D130F6C6CEB1FE0A26C6CEB -3FC06C6CEB7F806D13FF2601FF8313006CEBFFFE6D5B6D5B010F13E06D5BD900FEC7FC27 -3A7CB830>IIIII<000FB612804815C05A -A316800180C8FCAEEB83FF019F13C090B512F015FC8181D9FE0313809039F0007FC04913 -3F0180EB1FE06CC7120F000E15F0C81207A216F81503A31218127EA2B4FC150716F04814 -0F6C15E06C141F6DEB3FC06D137F3A3FE001FF80261FFC0F13006CB55A6C5C6C5C6C14E0 -6C6C1380D90FFCC7FC25397BB730>II<127CB712FC16FEA416FC48C7EA0FF816 -F0ED1FE0007CEC3FC0C8EA7F80EDFF00A24A5A4A5A5D14075D140F5D4A5AA24A5AA24AC7 -FCA25C5C13015CA213035CA213075CA4495AA6131F5CA96D5A6DC8FC273A7CB830>I<49 -B4FC011F13F0017F13FC90B57E0003ECFF804815C048010113E03A1FF8003FF049131FD8 -3FC0EB07F8A24848EB03FC90C71201A56D1303003F15F86D13076C6CEB0FF06C6CEB1FE0 -D807FCEB7FC03A03FF83FF806C90B512006C6C13FC011F13F0497F90B512FE48802607FE -0013C0D80FF8EB3FE0D81FE0EB0FF04848EB07F8491303007F15FC90C712014815FE4814 -00A66C14016C15FC6D1303003F15F86D1307D81FF0EB1FF06D133F3A0FFF01FFE06C90B5 -12C06C1580C6ECFE006D5B011F13F0010190C7FC273A7CB830>I<49B4FC010F13E0013F -13F890B57E4880488048010113803A0FFC007FC0D81FF0EB3FE04848131F49EB0FF04848 -1307A290C7EA03F85A4815FC1501A416FEA37E7E6D1303A26C6C13076C6C130F6D133FD8 -0FFC13FF6CB6FC7E6C14FE6C14F9013FEBE1FC010F138190380060011400ED03F8A21507 -16F0150F000F15E0486C131F486CEB3FC0157FEDFF804A1300EC07FE391FF01FFC90B55A -6C5C6C5C6C1480C649C7FCEB3FF0273A7CB830>I59 -D<16F01503ED07F8151F157FEDFFF014034A13C0021F138091383FFE00ECFFF8495B0107 -13C0495BD93FFEC7FC495A3801FFF0485B000F13804890C8FCEA7FFC5BEAFFE05B7FEA7F -F87FEA1FFF6C7F000313E06C7F38007FFC6D7E90380FFF806D7F010113F06D7FEC3FFE91 -381FFF80020713C06E13F01400ED7FF8151F1507ED03F01500252F7BB230>I<007FB7FC -A2B81280A36C16006C5DCBFCA7003FB612FE4881B81280A36C1600A229157DA530>I<12 -78127EB4FC13C07FEA7FF813FEEA1FFF6C13C000037F6C13F86C6C7EEB1FFF6D7F010313 -E06D7F9038007FFC6E7E91380FFF806E13C0020113F080ED3FF8151F153FEDFFF05C0207 -13C04A138091383FFE004A5A903801FFF0495B010F13804990C7FCEB7FFC48485A4813E0 -000F5B4890C8FCEA7FFE13F8EAFFE05B90C9FC127E1278252F7BB230>I64 D<147F4A7EA2497FA4497F -14F7A401077F14E3A3010F7FA314C1A2011F7FA490383F80FEA590387F007FA449804913 -3F90B6FCA34881A39038FC001F00038149130FA4000781491307A2D87FFFEB7FFFB56CB5 -1280A46C496C130029397DB830>I<007FB512F0B612FE6F7E82826C813A03F8001FF815 -076F7E1501A26F7EA615015EA24B5A1507ED1FF0ED7FE090B65A5E4BC7FC6F7E16E08290 -39F8000FF8ED03FC6F7E1500167FA3EE3F80A6167F1700A25E4B5A1503ED1FFC007FB6FC -B75A5E16C05E6C02FCC7FC29387EB730>I<91387F803C903903FFF03E49EBFC7E011F13 -FE49EBFFFE5B9038FFE07F48EB801F3903FE000F484813075B48481303A2484813015B12 -3F491300A2127F90C8FC167C16005A5AAC7E7EA2167C6D14FE123FA27F121F6D13016C6C -14FCA26C6CEB03F86D13076C6CEB0FF03901FF801F6C9038E07FE06DB512C06D14806D14 -00010713FC6D13F09038007FC0273A7CB830>I<003FB512E04814FCB67E6F7E6C816C81 -3A03F8007FF0ED1FF8150F6F7E6F7E15016F7EA2EE7F80A2163F17C0161FA4EE0FE0AC16 -1F17C0A3163F1780A2167F17005E4B5A15034B5A150F4B5AED7FF0003FB65A485DB75A93 -C7FC6C14FC6C14E02B387FB730>I<007FB7FCB81280A47ED803F8C7123FA8EE1F0093C7 -FCA4157C15FEA490B5FCA6EBF800A4157C92C8FCA5EE07C0EE0FE0A9007FB7FCB8FCA46C -16C02B387EB730>I<003FB712804816C0B8FCA27E7ED801FCC7121FA8EE0F8093C7FCA5 -153E157FA490B6FCA69038FC007FA4153E92C8FCAE383FFFF8487FB5FCA27E6C5B2A387E -B730>I<02FF13F00103EBC0F8010F13F1013F13FD4913FF90B6FC4813C1EC007F484813 -3F4848131F49130F485A491307121F5B123F491303A2127F90C7FC6F5A92C8FC5A5AA892 -B5FC4A14805CA26C7F6C6D1400ED03F8A27F003F1407A27F121F6D130F120F7F6C6C131F -A2D803FE133F6C6C137FECC1FF6C90B5FC7F6D13FB010F13F30103EBC1F0010090C8FC29 -3A7DB830>I<3B3FFF800FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E0D803 -F8C7EAFE00B290B6FCA601F8C7FCB3A23B3FFF800FFFE0486D4813F0B56C4813F8A26C49 -6C13F06C496C13E02D387FB730>I<007FB6FCB71280A46C1500260007F0C7FCB3B3A800 -7FB6FCB71280A46C1500213879B730>I<49B512F04914F85BA27F6D14F090C7EAFE00B3 -B3123C127EB4FCA24A5A1403EB8007397FF01FF86CB55A5D6C5C00075C000149C7FC3800 -3FF025397AB730>II<383FFFF8487FB57EA26C5B6C5BD801FCC9FCB3B0EE0F80 -EE1FC0A9003FB7FC5AB8FCA27E6C16802A387EB730>III<90383FFFE048B512FC0007 -14FF4815804815C04815E0EBF80001E0133FD87F80EB0FF0A290C71207A44815F8481403 -B3A96C1407A26C15F0A36D130FA26D131F6C6CEB3FE001F813FF90B6FC6C15C06C15806C -1500000114FCD8003F13E0253A7BB830>I<007FB512F0B612FE6F7E16E0826C813903F8 -003FED0FFCED03FE15016F7EA2821780163FA6167F17005EA24B5A1503ED0FFCED3FF890 -B6FC5E5E16804BC7FC15F001F8C9FCB0387FFFC0B57EA46C5B29387EB730>I<003FB57E -4814F0B612FC15FF6C816C812603F8017F9138003FF0151F6F7E15071503821501A51503 -5E1507150F4B5A153F4AB45A90B65A5E93C7FC5D8182D9F8007FED3FE0151F150F821507 -A817F8EEF1FCA53A3FFF8003FB4801C0EBFFF8B56C7E17F06C496C13E06C49EB7FC0C9EA -1F002E397FB730>82 D<90390FF803C0D97FFF13E048B512C74814F74814FF5A381FF80F -383FE001497E4848137F90C7123F5A48141FA2150FA37EED07C06C91C7FC7F7FEA3FF0EA -1FFEEBFFF06C13FF6C14E0000114F86C80011F13FF01031480D9003F13C014019138007F -E0151FED0FF0A2ED07F8A2007C140312FEA56C140716F07F6DEB0FE06D131F01F8EB3FC0 -01FF13FF91B51280160000FD5CD8FC7F13F8D8F81F5BD878011380253A7BB830>I<003F -B712C04816E0B8FCA43AFE003F800FA8007CED07C0C791C7FCB3B1011FB5FC4980A46D91 -C7FC2B387EB730>I<3B7FFFC007FFFCB56C4813FEA46C496C13FCD803F8C7EA3F80B3B1 -6D147F00011600A36C6C14FE6D13016D5CEC800390393FE00FF890391FF83FF06DB55A6D -5C6D5C6D91C7FC9038007FFCEC1FF02F3980B730>III89 D<001FB612FC4815FE5AA490C7EA03FCED07F816 -F0150FED1FE016C0153FED7F80003E1500C85A4A5A5D14034A5A5D140F4A5A5D143F4A5A -92C7FC5C495A5C1303495A5C130F495A5C133F495A91C8FC5B4848147C4914FE1203485A -5B120F485A5B123F485A90B6FCB7FCA46C15FC27387CB730>I<127CA212FEA27EA26C7E -A26C7EA26C7EA26C7EA26C7EA26C7EA212017FA26C7EA26D7EA26D7EA26D7EA26D7EA26D -7EA26D7EA2130180A26D7EA26E7EA26E7EA26E7EA26E7EA26E7EA26E7EA2140181A26E7E -A2ED7F80A2ED3FC0A2ED1FE0A2ED0FF0A2ED07F8A21503A2ED01F0150025477BBE30>92 -D<007FB612F0A2B712F8A36C15F0A225077B7D30>95 D<1338137CEA01FE12031207EA0F -FC13F0EA1FE013C0EA3F8013005A127EA212FE5AA5EAFFC013E013F0127FA2123FA2EA1F -E0EA07C00F1D70BE30>IIII<913801FFE04A7F5CA28080EC0007AAEB03FE90381FFF87 -4913E790B6FC5A5A481303380FFC00D81FF0133F49131F485A150F4848130790C7FCA25A -A25AA87E6C140FA27F003F141F6D133F6C7E6D137F390FF801FF2607FE07EBFFC06CB712 -E06C16F06C14F76D01C713E0011F010313C0D907FCC8FC2C397DB730>I<49B4FC010713 -E0011F13F8017F7F90B57E488048018113803A07FC007FC04848133FD81FE0EB1FE0150F -484814F0491307127F90C7FCED03F85A5AB7FCA516F048C9FC7E7EA27F003FEC01F06DEB -03F86C7E6C7E6D1307D807FEEB1FF03A03FFC07FE06C90B5FC6C15C0013F14806DEBFE00 -010713F8010013C0252A7CA830>IIII<14E0EB03F8A2497EA36D5AA2EB00E0 -91C8FCA9381FFFF8487F5AA27E7EEA0001B3A9003FB612C04815E0B7FCA27E6C15C02339 -7AB830>III<387FFFF8B57EA47EEA -0001B3B3A8007FB612F0B712F8A46C15F025387BB730>I<02FC137E3B7FC3FF01FF80D8 -FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE07EB03F801FC13FE9039F803FC -01A201F013F8A301E013F0B3A23C7FFE0FFF07FF80B548018F13C0A46C486C0107138032 -2881A730>II<49B4FC010F13E0013F13F8497F90B5 -7E0003ECFF8014013A07FC007FC04848EB3FE0D81FE0EB0FF0A24848EB07F8491303007F -15FC90C71201A300FEEC00FEA86C14016C15FCA26D1303003F15F86D13076D130F6C6CEB -1FF06C6CEB3FE06D137F3A07FF01FFC06C90B512806C15006C6C13FC6D5B010F13E00101 -90C7FC272A7CA830>II114 D<90381FFC1E48B5129F000714FF5A5A5A387FF007EB800100FEC7FC4880 -A46C143E007F91C7FC13E06CB4FC6C13FC6CEBFF806C14E0000114F86C6C7F01037F9038 -000FFF02001380007C147F00FEEC1FC0A2150F7EA27F151F6DEB3F806D137F9039FC03FF -0090B6FC5D5D00FC14F0D8F83F13C026780FFEC7FC222A79A830>III<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01F80003F000A26D13 -0700005DA26D130F017E5CA2017F131F6D5CA2EC803F011F91C7FCA26E5A010F137EA2EC -E0FE01075BA214F101035BA3903801FBF0A314FF6D5BA36E5A6E5A2B277EA630>I<3B3F -FFC01FFFE0486D4813F0B515F8A26C16F06C496C13E0D807E0C7EA3F00A26D5C0003157E -A56D14FE00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147DA2ECFDF9017C5C14F8A3 -017E13FBA290393FF07FE0A3ECE03FA2011F5C90390F800F802D277FA630>I<3A3FFF81 -FFFC4801C37FB580A26C5D6C01815BC648C66CC7FC137FEC80FE90383F81FC90381FC3F8 -EB0FE3ECE7F06DB45A6D5B7F6D5B92C8FC147E147F5C497F81903803F7E0EB07E790380F -E3F0ECC1F890381F81FC90383F80FE90387F007E017E137F01FE6D7E48486D7E267FFF80 -B5FCB500C1148014E3A214C16C0180140029277DA630>I<3B3FFFC07FFF80486DB512C0 -B515E0A26C16C06C496C13803B01FC0003F000A2000014076D5C137E150F017F5C7F151F -D91F805BA214C0010F49C7FCA214E00107137EA2EB03F0157C15FCEB01F85DA2EB00F9EC -FDF0147D147FA26E5AA36E5AA35DA2143F92C8FCA25C147EA2000F13FE486C5AEA3FC1EB -C3F81387EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA630>I<001FB612FC4815 -FE5AA316FC90C7EA0FF8ED1FF0ED3FE0ED7FC0EDFF80003E491300C7485A4A5A4A5A4A5A -4A5A4A5A4A5A4990C7FC495A495A495A495A495A495A4948133E4890C7127F485A485A48 -5A485A485A48B7FCB8FCA46C15FE28277DA630>II125 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fl cmsy10 10.95 2 -/Fl 2 16 df13 D15 D E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fm cmr10 10.95 86 -/Fm 86 125 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907 +%DVIPSBitmapFont: Fr cmbx12 14.4 61 +/Fr 61 122 df<922601FFFC903801FFE0033F9026FF801F13F84AB6D8E07F13FE020F03 +F9B6FC023FD9C00FB500C0138091277FFC0003D9FE0113C0902601FFE049495A49494949 +4813E04990C714F049484A13E0495A19C0495A7413C0017F17804A6E6E1380719138007E +007192C7FCAEBCFCA526007FF8C7000301C0C8FCB3B3A7007FB5D8F803B612F0A553547D +D34E>11 DI<49B419F0010F01E01701013F6D4D7E4901FC17079026FFC1FE170F +48D9007F4D5A4848D93FC0163F0007DA1FF04C5A48486D6C4B485A6FB403075B484803C0 +141F003F6E01F891B5C8FC9327EFFFC00F5B04F190B6FC4848902601F07FECF7FC0507EC +8FF8943A003FF00FF07090C7121F00FF02004C5A505A631AFF4F90C9FC624F5A19074F5A +62191F4F5A4F5A007F02015E4C14FF4E90CAFC4E5A6C6C01035D4C13074E5A001F02075D +6C6C4A495A030F143F6C6C4948495A00034AC75B6C6C017E14FF6CD9C1FC4990CBFC6DB4 +48495A6D495C010F491307010190C74848EC1FF090C94848ECFFFE4E01037F053F4A804D +4890390FFC1FC04E90391FF007E04DC748486C7E4C037F6D7E4C484A486C7E4D177C0407 +4A49137E4C4849153E4C5A4D173F043F4A90C77E4C5A4C5A94C717804B4B150F4B5A5E4B +5A150F4B5A5E153F4B5A4B5A93C8FC5C4A5A4A486F151F4B1A00140F4A5A4B6F6D5B4A48 +193E147F4A486F157E92CA6D137C491BFC4948716C485A4948053F495A4A716C485A010F +95390FFC1FC04A71B55A4A7191C7FC6D4805005B0103F11FF0616179D970>37 +D44 DII<913803FFC0023F13FC91B6FC010315C0010F018113F0903A1F +FC003FF849486D7E49486D7E49486D7E48496D138048496D13C0A24817E04890C813F0A3 +4817F8A24817FC49157FA3007F17FEA600FF17FFB3A5007F17FEA6003F17FCA26D15FFA2 +6C17F8A36C17F0A26C6D4913E0A26C6D4913C06C17806E5B6C6D4913006D6C495AD91FFC +EB3FF8903A0FFF81FFF06D90B55A01011580D9003F01FCC7FC020313C0384F7BCD43>48 +D<157815FC14031407141F14FF130F0007B5FCB6FCA2147F13F0EAF800C7FCB3B3B3A600 +7FB712FEA52F4E76CD43>II<91380FFFC091B512FC +0107ECFF80011F15E090263FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D8 +07FC8048B416C080486D15E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005F +A24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113 +F89238007FFE707E7013807013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8 +487E487E487EB57EA318FCA25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A13 +80D80FF84A13006CB44A5A6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F +1380374F7ACD43>I<177C17FEA2160116031607160FA2161F163F167FA216FF5D5DA25D +5DED1FBFED3F3F153E157C15FCEC01F815F0EC03E01407EC0FC01580EC1F005C147E147C +5C1301495A495A5C495A131F49C7FC133E5B13FC485A5B485A1207485A485A90C8FC123E +127E5ABA12C0A5C96C48C7FCAF020FB712C0A53A4F7CCE43>III<121F7F7FEBFF8091B81280A45A1900606060A2606060485F0180C86CC7FC +007EC95A4C5A007C4B5A5F4C5A160F4C5A484B5A4C5A94C8FC16FEC812014B5A5E4B5A15 +0F4B5AA24B5AA24B5A15FFA24A90C9FCA25C5D1407A2140FA25D141FA2143FA4147F5DA3 +14FFA55BAC6D5BA2EC3FC06E5A395279D043>I<913807FFC0027F13FC0103B67E010F15 +E090261FFC0113F8903A3FE0003FFCD97F80EB0FFE49C76C7E48488048486E1380000717 +C04980120F18E0177FA2121F7FA27F7F6E14FF02E015C014F802FE4913806C7FDBC00313 +009238F007FE6C02F85B9238FE1FF86C9138FFBFF06CEDFFE017806C4BC7FC6D806D8101 +0F15E06D81010115FC010781011F81491680EBFFE748018115C048D9007F14E04848011F +14F048487F48481303030014F8484880161F4848020713FC1601824848157F173FA2171F +A2170FA218F8A27F007F17F06D151FA26C6CED3FE0001F17C06D157F6C6CEDFF806C6C6C +010313006C01E0EB0FFE6C01FCEBFFFC6C6CB612F06D5D010F1580010102FCC7FCD9000F +13C0364F7ACD43>I<91380FFF8091B512F8010314FE010F6E7E4901037F90267FF8007F +4948EB3FF048496D7E484980486F7E484980824817805A91C714C05A7013E0A218F0B5FC +A318F8A618FCA46C5DA37EA25E6C7F6C5DA26C5D6C7F6C6D137B6C6D13F390387FF80301 +1FB512E36D14C30103028313F89039007FFE03EC00401500A218F05EA3D801F816E0487E +486C16C0487E486D491380A218005E5F4C5A91C7FC6C484A5A494A5A49495B6C48495BD8 +03FC010F5B9027FF807FFEC7FC6C90B55A6C6C14F06D14C0010F49C8FC010013F0364F7A +CD43>I<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C7FA24C7FA34C8083047F8016 +7E8304FE804C7E03018116F8830303814C7E03078116E083030F814C7E031F8116808303 +3F8293C77E4B82157E8403FE824B800201835D840203834B800207835D844AB87EA24A83 +A3DA3F80C88092C97E4A84A2027E8202FE844A82010185A24A820103854A82010785A24A +82010F855C011F717FEBFFFCB600F8020FB712E0A55B547BD366>65 +DI<932601FFFCEC01C0047F +D9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7 +383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F882494982494982494982 +4949824990CA7E494883A2484983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA2 +98C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D +606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D +6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0020091B612C0033F +93C8FC030715FCDB007F14E0040101FCC9FC525479D261>IIII<9326 +01FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003 +EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F88249 +49824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA24849181F +A3485B1B0FA25AA298C8FC5CA2B5FCAE6C057FB712E0A280A36C94C7003FEBC000A36C7F +A36C7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D6D5E6D7F6D01FC93B5FC6D13FF6D6C6D +5C6E01F0EC07FB020F01FEEC1FF10203903AFFF001FFE0020091B6EAC07F033FEE001F03 +0703FC1307DB007F02E01301040149CAFC5B5479D26A>III<027FB71280A591C76C90C7FCB3 +B3B3EA07F0EA1FFC487E487EA2B57EA44C5AA34A485B7E49495BD83FF8495BD81FE05DD8 +0FFC011F5B2707FF807F90C8FC000190B512FC6C6C14F0011F14C0010101F8C9FC39537D +D145>IIII< +B600FC93B7FC8181A282D800076E9239003FFC0070EE07E08282A28202EF7F02E77F02E3 +80A202E18002E0806F7F6F7F6F7FA26F7F6F7F6F806F80A26F80707F707F707F707FA270 +7F7080708070808583717F717F717F717FA27114807114C07114E07213F07213F8A27213 +FC7213FE7213FF721487A27214C77214E77313F77313FF85A285858585A28586868686A2 +86868686A2D93FFC187FB7173F1B1F1B0F1B07755A60527CD169>I<93380FFFC00303B6 +FC031F15E092B712FC0203D9FC0013FF020F01C0010F13C0023F90C7000313F0DA7FFC02 +007F494848ED7FFE4901E0ED1FFF49496F7F49496F7F4990C96C7F49854948707F494870 +7FA24849717E48864A83481B804A83481BC0A2481BE04A83A2481BF0A348497113F8A5B5 +1AFCAF6C1BF86E5FA46C1BF0A26E5F6C1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D +4D5A6E5E6C626D6C4C5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A +6D01FF02035B023F01E0011F13F0020F01FC90B512C0020390B7C8FC020016FC031F15E0 +030392C9FCDB001F13E0565479D265>II82 D<91260FFF80130791B500F85B010702FF5B011FEDC03F49EDF07F9026FFFC00 +6D5A4801E0EB0FFD4801800101B5FC4848C87E48488149150F001F824981123F4981007F +82A28412FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF15F86CECFF8016FC6CEDFF +C017F06C16FC6C16FF6C17C06C836C836D826D82010F821303010082021F16801400030F +15C0ED007F040714E01600173F050F13F08383A200788200F882A3187FA27EA219E07EA2 +6CEFFFC0A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C04A5A02F8EC7FF0903B1FFF +C003FFE0486C90B65AD8FC0393C7FC48C66C14FC48010F14F048D9007F90C8FC3C5479D2 +4B>I<003FBC1280A59126C0003F9038C0007F49C71607D87FF8060113C001E08449197F +49193F90C8171FA2007E1A0FA3007C1A07A500FC1BE0481A03A6C994C7FCB3B3AC91B912 +F0A553517BD05E>II87 D89 D97 DI<913801FFF8021FEBFF8091B612F0010315 +FC010F9038C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2 +486F138091C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C +6D15C07E6E140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0 +010390B55A01001580023F49C7FC020113E033387CB63C>I<4DB47E0407B5FCA5EE001F +1707B3A4913801FFE0021F13FC91B6FC010315C7010F9038E03FE74990380007F7D97FFC +0101B5FC49487F4849143F484980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7E +A37EA26C7F5F6C6D5C7E6C6D5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFF +C07FCF6D90B5128F0101ECFE0FD9003F13F8020301C049C7FC41547CD24B>I<913803FF +C0023F13FC49B6FC010715C04901817F903A3FFC007FF849486D7E49486D7E4849130F48 +496D7E48178048497F18C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049 +CAFCA6127FA27F7EA218E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6D +EC3F806D6CECFF00D91FFEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC02 +0113F034387CB63D>III< +EB3FF0B5FCA51203C6FCB3A4EE1FFC93B512C0030314F0030F8092391FE07FFC92393F00 +1FFE037C8003F07FDAF1E081ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B6 +12C0A542537BD24B>I<137F497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC90 +C8FCADEB3FF0B5FCA512017EB3B3A6B612E0A51B547BD325>I107 DIII<913801FFE0021F +13FE91B612C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F4849 +6D7F48496D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880A400FF18C0AC00 +7F1880A3003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C49 +5BD93FFE011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC020113E03A387C +B643>I<903A3FF001FFE0B5010F13FE033FEBFFC092B612F002F301017F913AF7F8007F +FE0003D9FFE0EB1FFFC602806D7F92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A472 +1380AC1A0060A36118FFA2615F616E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFF +FC9126FBFE075B02F8B612E06F1480031F01FCC8FC030313C092CBFCB1B612F8A5414D7B +B54B>I<90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003 +D9E3E013FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55C +B3AAB612FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD8 +0FF81307D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC0 +6C13FF15F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0EC +003F030713F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F +8001F8EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC +2C387CB635>I<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F90 +B6FCB8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEB +F0FC6DEBFFF86D6C5B021F5B020313802A4D7ECB34>I +III<007FB500F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D +6D5C6D6D495A6D4B5A6F495A6D6D91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6E +EB8FE06EEBCFC06EEBFF806E91C9FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA +01FD7F03F87F4A486C7E4A486C7E020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F +495A49486D7F01076F7E49486E7E49486E7FEBFFF0B500FE49B612C0A542357EB447>I< +B600F00107B5FCA5C601F8C8EA7FE06EED3F00A26D6C153E187E013F167C6E15FC6D5E6F +13016D5E6F13036D5E8117076D6D5C170F6D6D5C171F6D93C7FC6F5B027F143E6F137E02 +3F147C6F13FCA26E6D5A16816EEBC1F016C36E5C16E76E5C16FF6E5CA26E91C8FCA36F5A +A26F5AA26F5AA26F5AA26F5AA35E150F5E151F93C9FC5DD81FC0133E486C137E486C137C +486C13FC5D14015D14034A5A6C48485A49485A263FC07FCAFCEB81FE6CB45A6C13F00003 +5BC690CBFC404D7DB447>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fs cmr10 10.95 86 +/Fs 86 125 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907 F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91C7 FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>11 DI<013F1603D9FFC04B7E2601E0E0150F2607 -C070151F48486C4BC7FC023E157E48486C15FE48D90FC0EB03FC003ED90EF0EB0FF8DA0F -3F13FD007E903A070FFFF1F0007C0200EB03E0160000FC6D6C495A170F604DC8FC5F173E -5F17FC5F4C5A1603007CD907005B4C5A007E150F003E495C020E49C9FC003F5D6C49133E -260F803C5B023813FC6C6C485B3A01E0E001F03800FFC090273F0003E0133F90C70007EC -FFC09339C001E0E0923A0F8007C070031F49487E0400143C033E90381F001C037E497F03 -7C133E4B150F0201027E7F4B137C4A5A020702FCEB03805D4A5A141F92C7FC143E147E14 -7C5CA2495A0103037CEB07005C4948147E010F033E5B4A160E49C8123F496F5B013E9238 -0F803C49173801FC6F6C5A49923801E0E0496FB45A0160043FC7FC41497BC34C>II<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312 -011380120313005A120E5A1218123812300B1C79BE19>I<1430147014E0EB01C0EB0380 -1307EB0F00131E133E133C5B13F85B12015B1203A2485AA2120F5BA2121F90C7FCA25AA3 -123E127EA6127C12FCB2127C127EA6123E123FA37EA27F120FA27F1207A26C7EA212017F -12007F13787F133E131E7FEB07801303EB01C0EB00E014701430145A77C323>I<12C07E -12707E7E121E7E6C7E7F12036C7E7F12007F1378137CA27FA2133F7FA21480130FA214C0 -A3130714E0A6130314F0B214E01307A614C0130FA31480A2131F1400A25B133EA25BA213 -7813F85B12015B485A12075B48C7FC121E121C5A5A5A5A145A7BC323>II<121EEA7F8012 -FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A120E5A12181238 -12300B1C798919>44 DI<121EEA7F80A2EAFFC0A4EA7F80A2EA -1E000A0A798919>IIIIII<150E151E153EA2157EA215FE14 -01A21403EC077E1406140E141CA214381470A214E0EB01C0A2EB0380EB0700A2130E5BA2 -5B5BA25B5B1201485A90C7FC5A120E120C121C5AA25A5AB8FCA3C8EAFE00AC4A7E49B6FC -A3283E7EBD2D>I<00061403D80780131F01F813FE90B5FC5D5D5D15C092C7FC14FCEB3F -E090C9FCACEB01FE90380FFF8090383E03E090387001F8496C7E49137E497F90C7138000 -06141FC813C0A216E0150FA316F0A3120C127F7F12FFA416E090C7121F12FC007015C012 -780038EC3F80123C6CEC7F00001F14FE6C6C485A6C6C485A3903F80FE0C6B55A013F90C7 -FCEB07F8243F7CBC2D>II<123812 -3C123F90B612FCA316F85A16F016E00078C712010070EC03C0ED078016005D48141E151C -153C5DC8127015F04A5A5D14034A5A92C7FC5C141EA25CA2147C147814F8A213015C1303 -A31307A3130F5CA2131FA6133FAA6D5A0107C8FC26407BBD2D>III<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121EEA7F80A2EAFFC0A4EA7F -80A2EA1E000A2779A619>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121E127F -EAFF80A213C0A4127F121E1200A412011380A3120313005A1206120E120C121C5A1230A2 -0A3979A619>I<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A2913801C7FC15C3A29138 -0381FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D7EA349486D7E91B6FC -A249819138800001A249C87EA24982010E157FA2011E82011C153FA2013C820138151FA2 -017882170F13FC00034C7ED80FFF4B7EB500F0010FB512F8A33D417DC044>65 -DII -IIIIII<011FB512FCA3D9000713006E5A1401B3B3A6123FEA7F -80EAFFC0A44A5A1380D87F005B007C130700385C003C495A6C495A6C495A2603E07EC7FC -3800FFF8EB3FC026407CBD2F>IIIIIIIIII<003FB91280A3903AF0007FE001018090393FC0003F48 -C7ED1FC0007E1707127C00781703A300701701A548EF00E0A5C81600B3B14B7E4B7E0107 -B612FEA33B3D7DBC42>IIII<007FB5D8C003B512E0A3C649C7EBFC -00D93FF8EC3FE06D48EC1F806D6C92C7FC171E6D6C141C6D6C143C5F6D6C14706D6D13F0 -4C5ADA7FC05B023F13036F485ADA1FF090C8FC020F5BEDF81E913807FC1C163C6E6C5A91 -3801FF7016F06E5B6F5AA26F7E6F7EA28282153FED3BFEED71FF15F103E07F913801C07F -0203804B6C7EEC07004A6D7E020E6D7E5C023C6D7E02386D7E14784A6D7E4A6D7F130149 -486E7E4A6E7E130749C86C7E496F7E497ED9FFC04A7E00076DEC7FFFB500FC0103B512FE -A33F3E7EBD44>II91 D<486C13C00003130101001380481303000EEB -070048130E0018130C0038131C003013180070133800601330A300E01370481360A400CF -EB678039FFC07FE001E013F0A3007F133FA2003F131F01C013E0390F0007801C1C73BE2D ->II96 DII<49B4FC010F13E090383F00F8017C131E4848131F4848137F0007ECFF80485A5B12 -1FA24848EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC01C07F001F140316806C -6C13076C6C14000003140E6C6C131E6C6C137890383F01F090380FFFC0D901FEC7FC222A -7DA828>IIII<167C903903F801FF903A1FFF078F8090397E0FDE -1F9038F803F83803F001A23B07E000FC0600000F6EC7FC49137E001F147FA8000F147E6D -13FE00075C6C6C485AA23901F803E03903FE0FC026071FFFC8FCEB03F80006CAFC120EA3 -120FA27F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC0001FFC48C7EA01FE003E14 -0048157E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C495AD803F0EB0FC0D800 -FE017FC7FC90383FFFFC010313C0293D7EA82D>III<1478EB01 -FEA2EB03FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F147FB3B3A5123E127F38FF -807E14FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF803801FC00185185BD1C>I< -EA01FC12FFA3120712031201B292B51280A392383FFC0016E0168093C7FC153C5D5D4A5A -EC07C04A5A4AC8FC143E147F4A7E13FD9038FFDFC0EC9FE0140F496C7E01FC7F496C7E14 -01816E7E81826F7E151F826F7EA282486C14FEB539F07FFFE0A32B3F7EBE30>II<2701F801FE14FF00FF9027 -07FFC00313E0913B1E07E00F03F0913B7803F03C01F80007903BE001F87000FC2603F9C0 -6D487F000101805C01FBD900FF147F91C75B13FF4992C7FCA2495CB3A6486C496CECFF80 -B5D8F87FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807FFC091381E07E09138 -7803F000079038E001F82603F9C07F0001138001FB6D7E91C7FC13FF5BA25BB3A6486C49 -7EB5D8F87F13FCA32E287DA733>I<14FF010713E090381F81F890387E007E01F8131F48 -48EB0F804848EB07C04848EB03E0000F15F04848EB01F8A2003F15FCA248C812FEA44815 -FFA96C15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB1F -80D8007EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D>I<3901FC03FC00FF -90381FFF8091387C0FE09039FDE003F03A07FFC001FC6C496C7E6C90C7127F49EC3F805B -EE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F6E13FE91 -38C001F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512F8A32D3A -7EA733>I<02FF131C0107EBC03C90381F80F090397F00387C01FC131CD803F8130E4848 -EB0FFC150748481303121F485A1501485AA448C7FCAA6C7EA36C7EA2001F14036C7E1507 -6C6C130F6C7E6C6C133DD8007E137990383F81F190380FFFC1903801FE0190C7FCAD4B7E -92B512F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1FE3807F9C100031381 -EA01FB1401EC00FC01FF1330491300A35BB3A5487EB512FEA31F287EA724>I<90383FC0 -603901FFF8E03807C03F381F000F003E1307003C1303127C0078130112F81400A27E7E7E -6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F13E0010313F0EB001F -EC0FF800E01303A214017E1400A27E15F07E14016C14E06CEB03C0903880078039F3E01F -0038E0FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FCA2120112031207001F -B512C0B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03013F138090381F8700 -EB07FEEB01F81B397EB723>IIII -II<001F -B61280A2EBE0000180140049485A001E495A121C4A5A003C495A141F00385C4A5A147F5D -4AC7FCC6485AA2495A495A130F5C495A90393FC00380A2EB7F80EBFF005A5B4848130712 -07491400485A48485BA248485B4848137F00FF495A90B6FCA221277EA628>I124 D E +D93FFEC7FCEB0FF8EB00E0A422497BC32D>I38 +D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A +120E5A1218123812300B1C79BE19>I<1430147014E0EB01C0EB03801307EB0F00131E13 +3E133C5B13F85B12015B1203A2485AA2120F5BA2121F90C7FCA25AA3123E127EA6127C12 +FCB2127C127EA6123E123FA37EA27F120FA27F1207A26C7EA212017F12007F13787F133E +131E7FEB07801303EB01C0EB00E014701430145A77C323>I<12C07E12707E7E121E7E6C +7E7F12036C7E7F12007F1378137CA27FA2133F7FA21480130FA214C0A3130714E0A61303 +14F0B214E01307A614C0130FA31480A2131F1400A25B133EA25BA2137813F85B12015B48 +5A12075B48C7FC121E121C5A5A5A5A145A7BC323>II<121EEA7F8012FF13C0A213E0A312 +7FEA1E601200A413E013C0A312011380120313005A120E5A1218123812300B1C798919> +44 DI<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A798919> +IIIIII<150E151E153EA2157EA215FE1401A21403EC077E14 +06140E141CA214381470A214E0EB01C0A2EB0380EB0700A2130E5BA25B5BA25B5B120148 +5A90C7FC5A120E120C121C5AA25A5AB8FCA3C8EAFE00AC4A7E49B6FCA3283E7EBD2D>I< +00061403D80780131F01F813FE90B5FC5D5D5D15C092C7FC14FCEB3FE090C9FCACEB01FE +90380FFF8090383E03E090387001F8496C7E49137E497F90C713800006141FC813C0A216 +E0150FA316F0A3120C127F7F12FFA416E090C7121F12FC007015C012780038EC3F80123C +6CEC7F00001F14FE6C6C485A6C6C485A3903F80FE0C6B55A013F90C7FCEB07F8243F7CBC +2D>II<1238123C123F90B612FCA3 +16F85A16F016E00078C712010070EC03C0ED078016005D48141E151C153C5DC8127015F0 +4A5A5D14034A5A92C7FC5C141EA25CA2147C147814F8A213015C1303A31307A3130F5CA2 +131FA6133FAA6D5A0107C8FC26407BBD2D>III<121EEA7F +80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A2779 +A619>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121E127FEAFF80A213C0A412 +7F121E1200A412011380A3120313005A1206120E120C121C5A1230A20A3979A619>I<00 +7FB912E0BA12F0A26C18E0CDFCAE007FB912E0BA12F0A26C18E03C167BA147>61 +D<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A2913801C7FC15C3A291380381FEA34AC6 +7EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D7EA349486D7E91B6FCA24981913880 +0001A249C87EA24982010E157FA2011E82011C153FA2013C820138151FA2017882170F13 +FC00034C7ED80FFF4B7EB500F0010FB512F8A33D417DC044>65 DIIIIIIII<011FB512FCA3D9000713006E5A1401B3B3A6123FEA7F80EAFFC0A44A5A1380D8 +7F005B007C130700385C003C495A6C495A6C495A2603E07EC7FC3800FFF8EB3FC026407C +BD2F>II +IIIIIIII<003FB91280A3903AF0007FE001018090393FC0003F48C7ED1FC0007E1707127C +00781703A300701701A548EF00E0A5C81600B3B14B7E4B7E0107B612FEA33B3D7DBC42> +IIII<007FB5D8C003B512E0A3C649C7EBFC00D93FF8EC3FE06D48EC +1F806D6C92C7FC171E6D6C141C6D6C143C5F6D6C14706D6D13F04C5ADA7FC05B023F1303 +6F485ADA1FF090C8FC020F5BEDF81E913807FC1C163C6E6C5A913801FF7016F06E5B6F5A +A26F7E6F7EA28282153FED3BFEED71FF15F103E07F913801C07F0203804B6C7EEC07004A +6D7E020E6D7E5C023C6D7E02386D7E14784A6D7E4A6D7F130149486E7E4A6E7E130749C8 +6C7E496F7E497ED9FFC04A7E00076DEC7FFFB500FC0103B512FEA33F3E7EBD44>II91 D<486C13C00003130101001380481303000EEB070048130E0018130C00 +38131C003013180070133800601330A300E01370481360A400CFEB678039FFC07FE001E0 +13F0A3007F133FA2003F131F01C013E0390F0007801C1C73BE2D>II96 +DII< +49B4FC010F13E090383F00F8017C131E4848131F4848137F0007ECFF80485A5B121FA248 +48EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC01C07F001F140316806C6C1307 +6C6C14000003140E6C6C131E6C6C137890383F01F090380FFFC0D901FEC7FC222A7DA828 +>IIII<167C903903F801FF903A1FFF078F8090397E0FDE1F9038 +F803F83803F001A23B07E000FC0600000F6EC7FC49137E001F147FA8000F147E6D13FE00 +075C6C6C485AA23901F803E03903FE0FC026071FFFC8FCEB03F80006CAFC120EA3120FA2 +7F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC0001FFC48C7EA01FE003E14004815 +7E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C495AD803F0EB0FC0D800FE017F +C7FC90383FFFFC010313C0293D7EA82D>III<1478EB01FEA2EB +03FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F147FB3B3A5123E127F38FF807E14 +FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF803801FC00185185BD1C>III<2701F801FE14FF00FF902707FFC0 +0313E0913B1E07E00F03F0913B7803F03C01F80007903BE001F87000FC2603F9C06D487F +000101805C01FBD900FF147F91C75B13FF4992C7FCA2495CB3A6486C496CECFF80B5D8F8 +7FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807FFC091381E07E091387803F0 +00079038E001F82603F9C07F0001138001FB6D7E91C7FC13FF5BA25BB3A6486C497EB5D8 +F87F13FCA32E287DA733>I<14FF010713E090381F81F890387E007E01F8131F4848EB0F +804848EB07C04848EB03E0000F15F04848EB01F8A2003F15FCA248C812FEA44815FFA96C +15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB1F80D800 +7EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D>I<3901FC03FC00FF90381F +FF8091387C0FE09039FDE003F03A07FFC001FC6C496C7E6C90C7127F49EC3F805BEE1FC0 +17E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F6E13FE9138C001 +F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512F8A32D3A7EA733 +>I<02FF131C0107EBC03C90381F80F090397F00387C01FC131CD803F8130E4848EB0FFC +150748481303121F485A1501485AA448C7FCAA6C7EA36C7EA2001F14036C7E15076C6C13 +0F6C7E6C6C133DD8007E137990383F81F190380FFFC1903801FE0190C7FCAD4B7E92B512 +F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1FE3807F9C100031381EA01FB +1401EC00FC01FF1330491300A35BB3A5487EB512FEA31F287EA724>I<90383FC0603901 +FFF8E03807C03F381F000F003E1307003C1303127C0078130112F81400A27E7E7E6D1300 +EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F13E0010313F0EB001FEC0FF8 +00E01303A214017E1400A27E15F07E14016C14E06CEB03C0903880078039F3E01F0038E0 +FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FCA2120112031207001FB512C0 +B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03013F138090381F8700EB07FE +EB01F81B397EB723>IIIIII<001FB61280 +A2EBE0000180140049485A001E495A121C4A5A003C495A141F00385C4A5A147F5D4AC7FC +C6485AA2495A495A130F5C495A90393FC00380A2EB7F80EBFF005A5B4848130712074914 +00485A48485BA248485B4848137F00FF495A90B6FCA221277EA628>I124 D E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fn cmbx12 20.736 20 -/Fn 20 122 df<13FF000313E0487F001F13FC487F805A1580B612C0A315E0A315F0A37E +%DVIPSBitmapFont: Ft cmtt12 20.736 5 +/Ft 5 115 df<923807FFC0033F13FC4AB67E020715E0021F15F8027F8191B8FC010383 +498349834949C6804901F0130F49018001037F90B5C87F02FC157F48496F7E4849151F4A +6F7E485B4A6F1380488391C914C0485A84484818E0A24982127FA24918F0A200FF187FA2 +90BAFCA71AE0A21A8001F0CCFCA2127FA37F123F7FA2121F6DEF0F806DEF3FE07E6EEE7F +F06C7F6C6D16FF806C6D4B13E06C6D5D6E4B13C06D6C6C141F6D01E04A13806D01FC49B5 +FC6D9026FFC01F14006D91B65A6D5F6D5F6D6C5E6E16C0020F5E02034BC7FC020015F003 +1F14C0030101F8C8FC444D76CB59>101 D<943803FFF0053F13FE4CB61280040715E05E +043F15F05E4BB712F85D5D4DC6FC4B13E04B49EB7FF094C7FC4CEC3FE04B48EC0F8096C7 +FC4B5A5EAE001FB912FC4818FF5ABB1280A46C1900A2001F18FCC8D87FF0C9FCB3B3B200 +07B9FC001F18C04884A66C60000795C7FC456A7AE959>II< +EF3FF8261FFFFC0103B5FC4801FF011F14E048037F14F8B60081B612FE038381038F16C0 +039F826C02BF826C91B87E6CDCC01F7FD800039126FC00037F04F001007F4C800480021F +138093C86C13C04B814B6F13E05D7313F04B814BEE7FF8A24B163F1BFC4B161FA21BFE1A +0FA31BFF86AC621BFEA2811A1F1BFC1A3F81F27FF8811AFF6F17F0616F4B13E06F5D6F4B +13C0704A13806104E091B5120070495B04FC01075B9326FF807F5B94B65A03BF5E039F5E +038F5E03874BC7FC03815D038015F0043F14C0040749C8FC040013E094CAFCB3A9001FB6 +12F048814881B77EA46C5D6C5D6C5D50717ECA59>112 D<953803FFC0001FB500F0023F +13F84802FC49B512FE480407ECFF80B66C011F15C0057F15E094B7FC16036C4B16F06C5D +6C4BEBFE03C7000F4913E04C13804C48486C13E092B512F84D6D13C005C0EC7F804DEC0C +0094CAFC5EA25E5E5EA25EA25EA25EA293CBFCA55DB3AB001FB812F848834883BAFCA46C +5F6C5F6C5F4C4B7ACA59>114 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fu cmbx12 20.736 14 +/Fu 14 118 df<13FF000313E0487F001F13FC487F805A1580B612C0A315E0A315F0A37E A27EA27E000713F36C13E3C61383EB00031407A215E0A3140FA215C0141FA2EC3F80A214 7F15005C5C1301495A5C1307495A495A133F495A495A4890C7FC485A485A485A5B6C5AEA -01801C3A72F736>39 D69 -DI<96267FFFE01670063FB6ED01F80503B700F01403053F04FC14 -074CB96C130F040706E0131F043F72133F93BA00FC137F0303DC00076D13FF030F03C090 -39003FFF814B02FCC8000713C3037F02E0030113F792B600806F6CB5FC02034ACA121F4A -02F8834A02E0834A4A1701027F4A8391B548CC7E494A85495C4C854988494A85494A8549 -5C8A4991CDFC90B54886A2484A1B7FA2481E3F5D481E1F5D5A1F0FA2485CA3481E075DA2 -795A489BC9FCA45DA2B6FCB27EA26F0403BA12C0A47EA3816C96C8000302F8C7FCA36C80 -A36C80A27E817E817E817F6D80827F6D806D806D80826D6E606D806E80021F6E5F6E02F0 -5F6E806E02FE5F0200DAFFC05E6F02F04BB6FC031F02FE030713CF6FDAFFE0021F138703 -039226FF8003B51201030093B6EAFC00043F4E133F040706E0131F04014E1307DC003F4C -C71201050304F8EC0070DD003F038092C8FCDE007F01F0CCFC827A75F798>I78 D80 -D82 D85 D<97380FFFE00607B6FCA8F00003190086B3AD93383FFF800307B512F8 -033F14FF4AB712C0020716F0021F16FC027F9039FE007FFE91B500F0EB0FFF0103028001 -0190B5FC4949C87E49498149498149498149498190B548814884484A8192CAFC5AA2485B -A25A5C5AA35A5CA4B5FCAF7EA4807EA37EA2807EA26C7F616C6E5D6C606C80616D6D5D6D -6D5D6D6D92B67E6D6D4A15FC010301FF0207EDFFFE6D02C0EB3FFE6D6C9039FC01FFF86E -90B65A020F16C002031600DA007F14FC030F14E09226007FFEC749C7FC5F797AF76C> -100 D<93387FFF80030FB512FC037FECFF804AB712E0020716F8021F16FE027FD9F8077F -49B5D8C000804991C7003F13E04901FC020F7F49496E7F49498049496E7F49496E7F90B5 -5A48727E92C914804884485B1BC048841BE0485BA27313F05AA25C5AA21BF885A2B5FCA3 -91BAFCA41BF002F8CCFCA67EA3807EA47E806CF103F0F207F86C7F1A0F6C6E17F06C191F -6F17E06C6E163F6D6DEE7FC06D6D16FF6D6D4B13806D6D4B13006D6D6CEC0FFE6D02E0EC -3FFC6D02F8ECFFF86D9126FFC00F5B023F91B65A020F178002034CC7FC020016F8031F15 -E0030392C8FCDB000F13E04D507BCE58>II<903801FFFCB6FCA8 -C67E131F7FB3AD95380FFFE095B512FE05036E7E050F15E0053F15F84D81932701FFF01F -7F4CD900077FDC07FC6D80DC0FF06D80DC1FC07F4C48824CC8FC047E6F7F5EEDFDF85E03 -FF707F5EA25EA25EA293C9FCA45DB3B3A6B8D8E003B81280A8617879F76C>104 -DI<903801FFFCB6FCA8C67E131F7FB3B3B3B3B3ABB812C0A82A7879F735> -108 D<93381FFFE00303B6FC031F15E092B712FC020316FF020F17C0023FD9FC0014F091 -B500C0010F13FC4991C700037F4901FC02007F010F496F13C049496F7F49496F7F4B8149 -496F7F90B5C96C7F4886A24849707F481B80A248497014C0A2481BE0A348497113F0A348 -1BF8A5B51AFCAE6C1BF8A46C1BF06E94B5FCA36C1BE0A26C6D4C14C0A26C1B806E5E6C1B -006C6E4B5BA26C6E4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D92B55A6D01FF02035C6D02C0 -010F91C7FC010002FC90B512FC6E90B75A021F17E00207178002014CC8FCDA003F15F003 -0392C9FCDB001F13E056507BCE61>111 D<902601FFF8EB07FEB691383FFFC094B512F0 -0403804C14FE4C8093261FFC3F138093263FE07F13C0DC7F80B5FCC66C5D011FDAFE0114 -E06DEBF9FC16F815FB16F016E015FF16C07114C05E72138095381FFE0093C76C5AF001E0 -95C8FCA25DA65DB3B3A2B812F8A8434E7ACD4F>114 D<912603FFFCEB0780027F9039FF -E00FC00103B6EAF83F010FEDFEFF013F92B5FC49EB000F2601FFF01300480180143F4890 -C8120F4848814848814981123F83485A187FA212FF6D163FA37F7F6DEE1F8002C092C7FC -14F014FEECFFF06CECFF8016FEEEFFE06C16FC6C16FF18C06C836C17F86C836C836C8301 -3F17806D17C0010717E0010117F0EB003F020716F8EC001F030015FC1607EE007F051F13 -FE1707007E82B482836D167FA2183F7F181FA27F19FC7FA26D163F6D17F86D167F19F06D -16FF6E4A13E002E04A13C06E4A138002FE023F1300913AFFC003FFFE01E790B65A01C316 -F0018016C026FE003F92C7FC48010714F80070D9007F90C8FC3F507ACE4C>I<15FFA75C -A55CA45CA25CA25CA25CA25C91B5FCA25B5B5B131F5B90B9FC120FBAFCA6D8000791C9FC -B3B3A3F01FE0AE183F7014C07F187F7014806D16FF826D4B13006E6D485AEEFE0F6E90B5 -5A020F5D6E5D020115C06E6C5C031F49C7FC030113F03B6E7CEC4B>II121 D E +01801C3A72F736>39 D<137F3801FFC0000713F0487F487F487F487FA2B61280A96C1400 +A26C5B6C5B6C5B6C5B000113C06C6CC7FC1919729836>46 D<92380FFFE04AB67E020F15 +F0027F15FE49B87E4917E0010F17F8013F8349D9C01F14FF9027FFFC0001814801E06D6C +80480180021F804890C86C8048486F8048486F8001FF6F804801C06E8002F081486D1880 +6E816E18C0B5821BE06E81A37214F0A56C5BA36C5B6C5B6C5B000313C0C690C9FC90CA15 +E060A34E14C0A21B80601B0060626295B55A5F624D5C624D5C4D91C7FC614D5B4D13F04D +5B6194B55A4C49C8FC4C5B4C5B4C13E04C5B604C90C9FCEE7FFC4C5A4B5B4B5B4B0180EC +0FF04B90C8FC4B5A4B5A4B48ED1FE0EDFFE04A5B4A5B4A90C9FC4A48163F4A5ADA3FF017 +C05D4A48167F4A5A4990CA12FFD903FC160749BAFC5B4919805B5B90BBFC5A5A5A5A481A +005A5ABCFCA462A44C7176F061>50 D55 D<96267FFFE01670063FB6ED01F80503B700F01403053F04 +FC14074CB96C130F040706E0131F043F72133F93BA00FC137F0303DC00076D13FF030F03 +C09039003FFF814B02FCC8000713C3037F02E0030113F792B600806F6CB5FC02034ACA12 +1F4A02F8834A02E0834A4A1701027F4A8391B548CC7E494A85495C4C854988494A85494A +85495C8A4991CDFC90B54886A2484A1B7FA2481E3F5D481E1F5D5A1F0FA2485CA3481E07 +5DA2795A489BC9FCA45DA2B6FCB27EA26F0403BA12C0A47EA3816C96C8000302F8C7FCA3 +6C80A36C80A27E817E817E817F6D80827F6D806D806D80826D6E606D806E80021F6E5F6E +02F05F6E806E02FE5F0200DAFFC05E6F02F04BB6FC031F02FE030713CF6FDAFFE0021F13 +8703039226FF8003B51201030093B6EAFC00043F4E133F040706E0131F04014E1307DC00 +3F4CC71201050304F8EC0070DD003F038092C8FCDE007F01F0CCFC827A75F798>71 +D85 D<97380FFFE00607B6FCA8F0 +0003190086B3AD93383FFF800307B512F8033F14FF4AB712C0020716F0021F16FC027F90 +39FE007FFE91B500F0EB0FFF01030280010190B5FC4949C87E4949814949814949814949 +8190B548814884484A8192CAFC5AA2485BA25A5C5AA35A5CA4B5FCAF7EA4807EA37EA280 +7EA26C7F616C6E5D6C606C80616D6D5D6D6D5D6D6D92B67E6D6D4A15FC010301FF0207ED +FFFE6D02C0EB3FFE6D6C9039FC01FFF86E90B65A020F16C002031600DA007F14FC030F14 +E09226007FFEC749C7FC5F797AF76C>100 D<93387FFF80030FB512FC037FECFF804AB7 +12E0020716F8021F16FE027FD9F8077F49B5D8C000804991C7003F13E04901FC020F7F49 +496E7F49498049496E7F49496E7F90B55A48727E92C914804884485B1BC048841BE0485B +A27313F05AA25C5AA21BF885A2B5FCA391BAFCA41BF002F8CCFCA67EA3807EA47E806CF1 +03F0F207F86C7F1A0F6C6E17F06C191F6F17E06C6E163F6D6DEE7FC06D6D16FF6D6D4B13 +806D6D4B13006D6D6CEC0FFE6D02E0EC3FFC6D02F8ECFFF86D9126FFC00F5B023F91B65A +020F178002034CC7FC020016F8031F15E0030392C8FCDB000F13E04D507BCE58>I105 D<93381FFFE00303B6FC031F15E092B712FC020316FF020F17C0023FD9FC00 +14F091B500C0010F13FC4991C700037F4901FC02007F010F496F13C049496F7F49496F7F +4B8149496F7F90B5C96C7F4886A24849707F481B80A248497014C0A2481BE0A348497113 +F0A3481BF8A5B51AFCAE6C1BF8A46C1BF06E94B5FCA36C1BE0A26C6D4C14C0A26C1B806E +5E6C1B006C6E4B5BA26C6E4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D92B55A6D01FF02035C +6D02C0010F91C7FC010002FC90B512FC6E90B75A021F17E00207178002014CC8FCDA003F +15F0030392C9FCDB001F13E056507BCE61>111 D<902601FFF8EB07FEB691383FFFC094 +B512F00403804C14FE4C8093261FFC3F138093263FE07F13C0DC7F80B5FCC66C5D011FDA +FE0114E06DEBF9FC16F815FB16F016E015FF16C07114C05E72138095381FFE0093C76C5A +F001E095C8FCA25DA65DB3B3A2B812F8A8434E7ACD4F>114 D<912603FFFCEB0780027F +9039FFE00FC00103B6EAF83F010FEDFEFF013F92B5FC49EB000F2601FFF0130048018014 +3F4890C8120F4848814848814981123F83485A187FA212FF6D163FA37F7F6DEE1F8002C0 +92C7FC14F014FEECFFF06CECFF8016FEEEFFE06C16FC6C16FF18C06C836C17F86C836C83 +6C83013F17806D17C0010717E0010117F0EB003F020716F8EC001F030015FC1607EE007F +051F13FE1707007E82B482836D167FA2183F7F181FA27F19FC7FA26D163F6D17F86D167F +19F06D16FF6E4A13E002E04A13C06E4A138002FE023F1300913AFFC003FFFE01E790B65A +01C316F0018016C026FE003F92C7FC48010714F80070D9007F90C8FC3F507ACE4C>I<15 +FFA75CA55CA45CA25CA25CA25CA25C91B5FCA25B5B5B131F5B90B9FC120FBAFCA6D80007 +91C9FCB3B3A3F01FE0AE183F7014C07F187F7014806D16FF826D4B13006E6D485AEEFE0F +6E90B55A020F5D6E5D020115C06E6C5C031F49C7FC030113F03B6E7CEC4B>I +I E %EndDVIPSBitmapFont end %%EndProlog @@ -1537,1382 +1922,1652 @@ a4 %%EndSetup %%Page: 1 1 -1 0 bop 1401 1386 a Fn(User's)66 b(Guide)1665 1760 y(for)e(the)1041 -2133 y(GNU)h(GPERF)h(Utilit)-5 b(y)1553 2756 y Fm(Douglas)30 -b(C.)h(Sc)m(hmidt)1417 3254 y(last)f(up)s(dated)f(14)i(April)d(1998) -1668 3503 y(for)i(v)m(ersion)g(2.7)p eop +1 0 bop 150 1318 a Fu(User's)65 b(Guide)h(to)e Ft(gperf)f +Fu(2.7.2)p 150 1423 3600 34 v 2005 1519 a Fs(The)30 b(GNU)h(P)m(erfect) +h(Hash)e(F)-8 b(unction)30 b(Generator)2430 1627 y(Edition)f(2.7.2,)j +(26)f(Septem)m(b)s(er)f(2000)150 5068 y Fr(Douglas)46 +b(C.)f(Sc)l(hmidt)p 150 5141 3600 17 v eop %%Page: 2 2 -2 1 bop 0 3629 a Fm(Cop)m(yrigh)m(t)452 3626 y(c)427 -3629 y Fl(\015)30 b Fm(1989-1998)k(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F) --8 b(oundation,)31 b(Inc.)0 3903 y(P)m(ermission)23 b(is)h(gran)m(ted)h -(to)h(mak)m(e)g(and)e(distribute)e(v)m(erbatim)j(copies)f(of)h(this)f -(man)m(ual)g(pro)m(vided)g(the)h(cop)m(yrigh)m(t)0 4027 -y(notice)31 b(and)e(this)h(p)s(ermission)d(notice)k(are)f(preserv)m(ed) -g(on)h(all)e(copies.)0 4301 y(P)m(ermission)d(is)h(gran)m(ted)i(to)g -(cop)m(y)f(and)g(distribute)d(mo)s(di\014ed)h(v)m(ersions)h(of)i(this)d -(man)m(ual)i(under)e(the)i(conditions)0 4426 y(for)21 -b(v)m(erbatim)g(cop)m(ying,)i(pro)m(vided)c(also)j(that)f(the)g -(section)h(en)m(titled)e(\\GNU)i Fk(gperf)e Fm(General)h(Public)e -(License")i(is)0 4550 y(included)f(exactly)k(as)g(in)e(the)h(original,) -g(and)g(pro)m(vided)f(that)h(the)h(en)m(tire)f(resulting)e(deriv)m(ed)h -(w)m(ork)i(is)e(distributed)0 4675 y(under)29 b(the)h(terms)h(of)f(a)h -(p)s(ermission)c(notice)k(iden)m(tical)e(to)i(this)e(one.)0 -4949 y(P)m(ermission)37 b(is)h(gran)m(ted)i(to)g(cop)m(y)g(and)f -(distribute)d(translations)i(of)h(this)f(man)m(ual)h(in)m(to)g(another) -g(language,)0 5073 y(under)f(the)h(ab)s(o)m(v)m(e)i(conditions)c(for)i -(mo)s(di\014ed)e(v)m(ersions,)k(except)g(that)f(the)f(section)g(en)m -(titled)g(\\GNU)h Fk(gperf)0 5198 y Fm(General)28 b(Public)e(License")j -(ma)m(y)g(b)s(e)e(included)f(in)h(a)i(translation)e(appro)m(v)m(ed)i(b) -m(y)f(the)g(author)h(instead)e(of)i(in)e(the)0 5322 y(original)i -(English.)p eop +2 1 bop 150 4152 a Fs(Cop)m(yrigh)m(t)602 4149 y(c)577 +4152 y Fq(\015)30 b Fs(1989-2000)k(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F) +-8 b(oundation,)31 b(Inc.)150 4286 y(P)m(ermission)f(is)i(gran)m(ted)h +(to)f(mak)m(e)i(and)d(distribute)f(v)m(erbatim)i(copies)g(of)g(this)f +(man)m(ual)h(pro)m(vided)f(the)150 4396 y(cop)m(yrigh)m(t)g(notice)f +(and)g(this)f(p)s(ermission)f(notice)i(are)h(preserv)m(ed)f(on)h(all)e +(copies.)150 4530 y(P)m(ermission)36 b(is)i(gran)m(ted)g(to)h(cop)m(y)g +(and)f(distribute)e(mo)s(di\014ed)g(v)m(ersions)h(of)i(this)e(man)m +(ual)g(under)g(the)150 4640 y(conditions)42 b(for)h(v)m(erbatim)g(cop)m +(ying,)k(pro)m(vided)42 b(also)h(that)i(the)e(section)h(en)m(titled)f +(\\GNU)h(General)150 4749 y(Public)25 b(License")h(is)g(included)e +(exactly)k(as)f(in)e(the)i(original,)f(and)g(pro)m(vided)g(that)h(the)g +(en)m(tire)g(resulting)150 4859 y(deriv)m(ed)i(w)m(ork)i(is)e +(distributed)f(under)h(the)h(terms)g(of)h(a)g(p)s(ermission)c(notice)k +(iden)m(tical)e(to)i(this)e(one.)150 4994 y(P)m(ermission)i(is)i(gran)m +(ted)g(to)h(cop)m(y)g(and)f(distribute)d(translations)i(of)i(this)e +(man)m(ual)g(in)m(to)h(another)g(lan-)150 5103 y(guage,)41 +b(under)35 b(the)j(ab)s(o)m(v)m(e)g(conditions)e(for)h(mo)s(di\014ed)f +(v)m(ersions,)i(except)h(that)e(the)h(section)f(en)m(titled)150 +5213 y(\\GNU)f(General)g(Public)d(License")i(ma)m(y)h(b)s(e)e(included) +f(in)h(a)i(translation)e(appro)m(v)m(ed)h(b)m(y)h(the)f(author)150 +5322 y(instead)30 b(of)g(in)f(the)i(original)d(English.)p +eop %%Page: 1 3 -1 2 bop 0 -116 a Fm(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2352 -b(1)0 366 y Fj(GNU)30 b(GENERAL)h(PUBLIC)f(LICENSE)1453 -615 y Fm(V)-8 b(ersion)30 b(1,)h(F)-8 b(ebruary)30 b(1989)240 -874 y(Cop)m(yrigh)m(t)692 871 y(c)667 874 y Fl(\015)g -Fm(1989)i(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8 b(oundation,)31 -b(Inc.)240 978 y(675)h(Mass)e(Av)m(e,)i(Cam)m(bridge,)e(MA)h(02139,)h -(USA)240 1185 y(Ev)m(ery)m(one)f(is)f(p)s(ermitted)f(to)i(cop)m(y)g -(and)f(distribute)e(v)m(erbatim)i(copies)240 1289 y(of)h(this)e -(license)g(do)s(cumen)m(t,)i(but)e(c)m(hanging)i(it)f(is)f(not)i(allo)m -(w)m(ed.)0 1792 y Fi(Pream)l(ble)125 2072 y Fm(The)40 -b(license)g(agreemen)m(ts)j(of)e(most)g(soft)m(w)m(are)h(companies)f -(try)g(to)h(k)m(eep)f(users)f(at)i(the)f(mercy)g(of)g(those)0 -2196 y(companies.)e(By)26 b(con)m(trast,)i(our)d(General)g(Public)e -(License)j(is)e(in)m(tended)h(to)h(guaran)m(tee)h(y)m(our)e(freedom)h -(to)g(share)0 2321 y(and)34 b(c)m(hange)i(free)e(soft)m(w)m(are|to)j -(mak)m(e)e(sure)f(the)h(soft)m(w)m(are)h(is)d(free)i(for)f(all)g(its)g -(users.)52 b(The)34 b(General)g(Public)0 2446 y(License)24 -b(applies)e(to)j(the)f(F)-8 b(ree)25 b(Soft)m(w)m(are)g(F)-8 -b(oundation's)24 b(soft)m(w)m(are)i(and)d(to)i(an)m(y)f(other)h -(program)e(whose)h(authors)0 2570 y(commit)30 b(to)h(using)e(it.)41 -b(Y)-8 b(ou)30 b(can)h(use)f(it)g(for)g(y)m(our)h(programs,)f(to)s(o.) -125 2850 y(When)c(w)m(e)h(sp)s(eak)g(of)g(free)g(soft)m(w)m(are,)i(w)m -(e)e(are)g(referring)f(to)h(freedom,)h(not)f(price.)38 -b(Sp)s(eci\014cally)-8 b(,)26 b(the)h(General)0 2975 -y(Public)32 b(License)j(is)e(designed)h(to)h(mak)m(e)h(sure)e(that)h(y) -m(ou)h(ha)m(v)m(e)f(the)g(freedom)g(to)g(giv)m(e)h(a)m(w)m(a)m(y)g(or)f -(sell)e(copies)i(of)0 3099 y(free)h(soft)m(w)m(are,)k(that)c(y)m(ou)h -(receiv)m(e)g(source)f(co)s(de)g(or)h(can)f(get)h(it)f(if)f(y)m(ou)h(w) -m(an)m(t)h(it,)h(that)f(y)m(ou)f(can)g(c)m(hange)i(the)0 -3224 y(soft)m(w)m(are)32 b(or)e(use)g(pieces)g(of)h(it)f(in)f(new)h -(free)g(programs;)h(and)e(that)i(y)m(ou)g(kno)m(w)f(y)m(ou)h(can)g(do)f -(these)h(things.)125 3504 y(T)-8 b(o)27 b(protect)h(y)m(our)f(righ)m -(ts,)h(w)m(e)f(need)g(to)h(mak)m(e)g(restrictions)e(that)h(forbid)f(an) -m(y)m(one)i(to)g(den)m(y)f(y)m(ou)g(these)g(righ)m(ts)0 -3628 y(or)g(to)i(ask)e(y)m(ou)h(to)g(surrender)e(the)h(righ)m(ts.)39 -b(These)28 b(restrictions)e(translate)h(to)i(certain)e(resp)s -(onsibilities)22 b(for)28 b(y)m(ou)0 3753 y(if)h(y)m(ou)i(distribute)d -(copies)i(of)h(the)f(soft)m(w)m(are,)i(or)f(if)e(y)m(ou)i(mo)s(dify)d -(it.)125 4033 y(F)-8 b(or)30 b(example,)f(if)g(y)m(ou)h(distribute)d -(copies)i(of)h(a)f(suc)m(h)h(a)f(program,)h(whether)f(gratis)g(or)h -(for)f(a)h(fee,)g(y)m(ou)g(m)m(ust)0 4157 y(giv)m(e)h(the)g(recipien)m -(ts)f(all)f(the)i(righ)m(ts)f(that)h(y)m(ou)g(ha)m(v)m(e.)43 -b(Y)-8 b(ou)31 b(m)m(ust)g(mak)m(e)g(sure)f(that)h(they)-8 -b(,)32 b(to)s(o,)g(receiv)m(e)f(or)g(can)0 4282 y(get)h(the)e(source)h -(co)s(de.)41 b(And)29 b(y)m(ou)i(m)m(ust)f(tell)g(them)g(their)f(righ)m -(ts.)125 4562 y(W)-8 b(e)30 b(protect)g(y)m(our)e(righ)m(ts)h(with)e(t) -m(w)m(o)k(steps:)40 b(\(1\))30 b(cop)m(yrigh)m(t)f(the)g(soft)m(w)m -(are,)i(and)d(\(2\))i(o\013er)g(y)m(ou)f(this)f(license)0 -4686 y(whic)m(h)h(giv)m(es)i(y)m(ou)g(legal)f(p)s(ermission)d(to)k(cop) -m(y)-8 b(,)32 b(distribute)c(and/or)i(mo)s(dify)f(the)h(soft)m(w)m -(are.)125 4966 y(Also,)d(for)g(eac)m(h)h(author's)f(protection)g(and)f -(ours,)h(w)m(e)h(w)m(an)m(t)f(to)h(mak)m(e)g(certain)f(that)g(ev)m(ery) -m(one)i(understands)0 5091 y(that)37 b(there)f(is)f(no)h(w)m(arran)m(t) -m(y)h(for)f(this)f(free)i(soft)m(w)m(are.)59 b(If)36 -b(the)g(soft)m(w)m(are)i(is)d(mo)s(di\014ed)f(b)m(y)i(someone)h(else)f -(and)0 5215 y(passed)j(on,)j(w)m(e)e(w)m(an)m(t)g(its)f(recipien)m(ts)g -(to)h(kno)m(w)f(that)i(what)e(they)h(ha)m(v)m(e)g(is)f(not)h(the)f -(original,)i(so)e(that)i(an)m(y)0 5340 y(problems)29 -b(in)m(tro)s(duced)f(b)m(y)j(others)f(will)e(not)j(re\015ect)g(on)f -(the)g(original)f(authors')h(reputations.)p eop +1 2 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052 +b(1)150 299 y Fp(GNU)54 b(GENERAL)g(PUBLIC)f(LICENSE)1537 +564 y Fs(V)-8 b(ersion)30 b(2,)h(June)f(1991)390 720 +y(Cop)m(yrigh)m(t)842 717 y(c)817 720 y Fq(\015)g Fs(1989,)j(1991)f(F) +-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)30 b(Inc.,)390 +824 y(59)h(T)-8 b(emple)30 b(Place,)h(Suite)e(330,)j(Boston,)g(MA)e +(02111-1307,)35 b(USA.)390 1032 y(Ev)m(ery)m(one)c(is)f(p)s(ermitted)f +(to)i(cop)m(y)g(and)f(distribute)e(v)m(erbatim)i(copies)390 +1135 y(of)h(this)e(license)g(do)s(cumen)m(t,)i(but)e(c)m(hanging)i(it)f +(is)f(not)i(allo)m(w)m(ed.)150 1462 y Fr(Pream)l(ble)275 +1683 y Fs(The)39 b(licenses)h(for)g(most)h(soft)m(w)m(are)g(are)g +(designed)e(to)i(tak)m(e)h(a)m(w)m(a)m(y)h(y)m(our)d(freedom)g(to)h +(share)g(and)150 1793 y(c)m(hange)g(it.)70 b(By)40 b(con)m(trast,)k +(the)c(GNU)h(General)f(Public)e(License)i(is)f(in)m(tended)g(to)h +(guaran)m(tee)i(y)m(our)150 1902 y(freedom)24 b(to)h(share)f(and)f(c)m +(hange)i(free)f(soft)m(w)m(are|to)j(mak)m(e)e(sure)e(the)h(soft)m(w)m +(are)i(is)d(free)h(for)g(all)f(its)h(users.)150 2012 +y(This)38 b(General)i(Public)d(License)j(applies)e(to)i(most)g(of)g +(the)g(F)-8 b(ree)41 b(Soft)m(w)m(are)g(F)-8 b(oundation's)39 +b(soft)m(w)m(are)150 2121 y(and)c(to)h(an)m(y)g(other)g(program)f +(whose)h(authors)f(commit)g(to)i(using)d(it.)55 b(\(Some)36 +b(other)g(F)-8 b(ree)37 b(Soft)m(w)m(are)150 2231 y(F)-8 +b(oundation)31 b(soft)m(w)m(are)i(is)d(co)m(v)m(ered)j(b)m(y)e(the)g +(GNU)h(Library)e(General)h(Public)e(License)h(instead.\))43 +b(Y)-8 b(ou)150 2340 y(can)31 b(apply)e(it)h(to)h(y)m(our)f(programs,)g +(to)s(o.)275 2503 y(When)37 b(w)m(e)g(sp)s(eak)g(of)g(free)h(soft)m(w)m +(are,)i(w)m(e)e(are)g(referring)d(to)j(freedom,)h(not)f(price.)60 +b(Our)36 b(General)150 2612 y(Public)c(Licenses)h(are)i(designed)e(to)i +(mak)m(e)g(sure)f(that)g(y)m(ou)h(ha)m(v)m(e)g(the)g(freedom)f(to)g +(distribute)e(copies)150 2722 y(of)k(free)h(soft)m(w)m(are)g(\(and)f(c) +m(harge)i(for)e(this)f(service)h(if)f(y)m(ou)i(wish\),)g(that)f(y)m(ou) +h(receiv)m(e)g(source)f(co)s(de)h(or)150 2832 y(can)e(get)h(it)e(if)f +(y)m(ou)i(w)m(an)m(t)h(it,)f(that)g(y)m(ou)g(can)g(c)m(hange)h(the)e +(soft)m(w)m(are)i(or)f(use)f(pieces)h(of)f(it)g(in)g(new)g(free)150 +2941 y(programs;)c(and)g(that)h(y)m(ou)g(kno)m(w)f(y)m(ou)h(can)f(do)h +(these)g(things.)275 3104 y(T)-8 b(o)40 b(protect)h(y)m(our)f(righ)m +(ts,)i(w)m(e)e(need)g(to)h(mak)m(e)g(restrictions)d(that)j(forbid)d(an) +m(y)m(one)j(to)g(den)m(y)f(y)m(ou)150 3213 y(these)d(righ)m(ts)f(or)g +(to)h(ask)g(y)m(ou)f(to)h(surrender)e(the)h(righ)m(ts.)58 +b(These)36 b(restrictions)f(translate)i(to)g(certain)150 +3323 y(resp)s(onsibilities)25 b(for)31 b(y)m(ou)f(if)g(y)m(ou)g +(distribute)e(copies)i(of)h(the)f(soft)m(w)m(are,)j(or)d(if)f(y)m(ou)i +(mo)s(dify)e(it.)275 3485 y(F)-8 b(or)30 b(example,)f(if)g(y)m(ou)g +(distribute)e(copies)j(of)f(suc)m(h)g(a)h(program,)g(whether)e(gratis)i +(or)f(for)g(a)h(fee,)h(y)m(ou)150 3595 y(m)m(ust)i(giv)m(e)h(the)g +(recipien)m(ts)e(all)h(the)g(righ)m(ts)g(that)h(y)m(ou)g(ha)m(v)m(e.)51 +b(Y)-8 b(ou)34 b(m)m(ust)g(mak)m(e)g(sure)f(that)h(they)-8 +b(,)35 b(to)s(o,)150 3704 y(receiv)m(e)j(or)g(can)g(get)g(the)g(source) +g(co)s(de.)62 b(And)37 b(y)m(ou)h(m)m(ust)f(sho)m(w)h(them)f(these)h +(terms)f(so)h(they)g(kno)m(w)150 3814 y(their)29 b(righ)m(ts.)275 +3976 y(W)-8 b(e)29 b(protect)g(y)m(our)f(righ)m(ts)f(with)g(t)m(w)m(o)i +(steps:)40 b(\(1\))29 b(cop)m(yrigh)m(t)f(the)g(soft)m(w)m(are,)j(and)c +(\(2\))i(o\013er)g(y)m(ou)f(this)150 4086 y(license)h(whic)m(h)g(giv)m +(es)i(y)m(ou)g(legal)f(p)s(ermission)d(to)k(cop)m(y)-8 +b(,)32 b(distribute)c(and/or)i(mo)s(dify)f(the)i(soft)m(w)m(are.)275 +4248 y(Also,)45 b(for)d(eac)m(h)i(author's)f(protection)f(and)g(ours,)j +(w)m(e)e(w)m(an)m(t)h(to)f(mak)m(e)h(certain)e(that)h(ev)m(ery)m(one) +150 4358 y(understands)29 b(that)j(there)f(is)f(no)h(w)m(arran)m(t)m(y) +h(for)f(this)f(free)h(soft)m(w)m(are.)44 b(If)30 b(the)i(soft)m(w)m +(are)g(is)e(mo)s(di\014ed)f(b)m(y)150 4467 y(someone)i(else)e(and)g +(passed)h(on,)g(w)m(e)g(w)m(an)m(t)h(its)e(recipien)m(ts)g(to)h(kno)m +(w)g(that)g(what)g(they)g(ha)m(v)m(e)h(is)e(not)h(the)150 +4577 y(original,)e(so)h(that)g(an)m(y)h(problems)d(in)m(tro)s(duced)g +(b)m(y)i(others)g(will)d(not)j(re\015ect)h(on)f(the)g(original)e +(authors')150 4686 y(reputations.)275 4849 y(Finally)-8 +b(,)24 b(an)m(y)h(free)f(program)g(is)g(threatened)g(constan)m(tly)h(b) +m(y)g(soft)m(w)m(are)h(paten)m(ts.)39 b(W)-8 b(e)26 b(wish)c(to)j(a)m +(v)m(oid)150 4958 y(the)30 b(danger)g(that)h(redistributors)c(of)k(a)f +(free)h(program)f(will)d(individually)e(obtain)30 b(paten)m(t)h +(licenses,)e(in)150 5068 y(e\013ect)39 b(making)e(the)h(program)f +(proprietary)-8 b(.)62 b(T)-8 b(o)38 b(prev)m(en)m(t)g(this,)h(w)m(e)f +(ha)m(v)m(e)h(made)f(it)f(clear)g(that)i(an)m(y)150 5178 +y(paten)m(t)31 b(m)m(ust)g(b)s(e)e(licensed)g(for)h(ev)m(ery)m(one's)i +(free)f(use)f(or)g(not)h(licensed)e(at)i(all.)275 5340 +y(The)e(precise)h(terms)g(and)g(conditions)f(for)h(cop)m(ying,)h +(distribution)26 b(and)k(mo)s(di\014cation)f(follo)m(w.)p +eop %%Page: 2 4 -2 3 bop 0 -116 a Fm(2)2965 b(User's)31 b(Guide)e(to)i -Fk(gperf)125 366 y Fm(The)e(precise)h(terms)g(and)g(conditions)f(for)h -(cop)m(ying,)h(distribution)26 b(and)k(mo)s(di\014cation)f(follo)m(w.)0 -911 y Fi(TERMS)h(AND)g(CONDITIONS)49 1195 y Fm(1.)61 -b(This)28 b(License)i(Agreemen)m(t)i(applies)c(to)j(an)m(y)g(program)f -(or)g(other)h(w)m(ork)f(whic)m(h)f(con)m(tains)h(a)h(notice)f(placed) -180 1320 y(b)m(y)k(the)h(cop)m(yrigh)m(t)g(holder)e(sa)m(ying)h(it)g -(ma)m(y)h(b)s(e)f(distributed)d(under)i(the)i(terms)f(of)h(this)e -(General)h(Public)180 1444 y(License.)53 b(The)34 b(\\Program",)k(b)s -(elo)m(w,)d(refers)f(to)i(an)m(y)f(suc)m(h)f(program)g(or)h(w)m(ork,)h -(and)e(a)h(\\w)m(ork)h(based)e(on)180 1569 y(the)d(Program")h(means)f -(either)g(the)h(Program)f(or)g(an)m(y)h(w)m(ork)f(con)m(taining)g(the)h -(Program)f(or)g(a)h(p)s(ortion)e(of)180 1693 y(it,)g(either)g(v)m -(erbatim)g(or)g(with)g(mo)s(di\014cations.)38 b(Eac)m(h)31 -b(licensee)f(is)g(addressed)f(as)i(\\y)m(ou".)49 1853 -y(2.)61 b(Y)-8 b(ou)41 b(ma)m(y)g(cop)m(y)h(and)e(distribute)e(v)m -(erbatim)i(copies)h(of)g(the)g(Program's)f(source)h(co)s(de)g(as)g(y)m -(ou)g(receiv)m(e)180 1978 y(it,)36 b(in)e(an)m(y)h(medium,)g(pro)m -(vided)f(that)h(y)m(ou)h(conspicuously)d(and)h(appropriately)g(publish) -d(on)k(eac)m(h)h(cop)m(y)180 2102 y(an)h(appropriate)g(cop)m(yrigh)m(t) -g(notice)h(and)f(disclaimer)e(of)i(w)m(arran)m(t)m(y;)42 -b(k)m(eep)c(in)m(tact)g(all)e(the)i(notices)f(that)180 -2227 y(refer)d(to)i(this)e(General)g(Public)f(License)h(and)g(to)i(the) -f(absence)g(of)g(an)m(y)g(w)m(arran)m(t)m(y;)j(and)c(giv)m(e)i(an)m(y)f -(other)180 2351 y(recipien)m(ts)29 b(of)h(the)g(Program)g(a)g(cop)m(y)g -(of)g(this)f(General)h(Public)d(License)i(along)h(with)f(the)h -(Program.)40 b(Y)-8 b(ou)180 2476 y(ma)m(y)31 b(c)m(harge)h(a)e(fee)h -(for)f(the)h(ph)m(ysical)e(act)i(of)g(transferring)e(a)h(cop)m(y)-8 -b(.)49 2636 y(3.)61 b(Y)-8 b(ou)45 b(ma)m(y)f(mo)s(dify)f(y)m(our)h -(cop)m(y)h(or)f(copies)g(of)g(the)g(Program)g(or)g(an)m(y)h(p)s(ortion) -e(of)h(it,)j(and)d(cop)m(y)h(and)180 2761 y(distribute)24 -b(suc)m(h)i(mo)s(di\014cations)f(under)g(the)i(terms)f(of)h(P)m -(aragraph)g(1)g(ab)s(o)m(v)m(e,)h(pro)m(vided)e(that)h(y)m(ou)g(also)f -(do)180 2885 y(the)31 b(follo)m(wing:)255 3045 y Fl(\017)60 -b Fm(cause)30 b(the)g(mo)s(di\014ed)e(\014les)h(to)h(carry)g(prominen)m -(t)e(notices)i(stating)g(that)g(y)m(ou)h(c)m(hanged)f(the)g(\014les)f -(and)360 3170 y(the)i(date)g(of)f(an)m(y)h(c)m(hange;)h(and)255 -3330 y Fl(\017)60 b Fm(cause)43 b(the)g(whole)f(of)h(an)m(y)g(w)m(ork)g -(that)h(y)m(ou)f(distribute)d(or)j(publish,)f(that)h(in)f(whole)g(or)h -(in)e(part)360 3454 y(con)m(tains)g(the)f(Program)h(or)g(an)m(y)f(part) -h(thereof,)j(either)c(with)f(or)h(without)g(mo)s(di\014cations,)h(to)h -(b)s(e)360 3579 y(licensed)32 b(at)j(no)f(c)m(harge)h(to)g(all)d(third) -h(parties)g(under)f(the)i(terms)g(of)g(this)f(General)h(Public)d -(License)360 3703 y(\(except)g(that)f(y)m(ou)g(ma)m(y)g(c)m(ho)s(ose)g -(to)g(gran)m(t)g(w)m(arran)m(t)m(y)h(protection)f(to)g(some)g(or)f(all) -f(third)g(parties,)h(at)360 3828 y(y)m(our)h(option\).)255 -3988 y Fl(\017)60 b Fm(If)24 b(the)g(mo)s(di\014ed)e(program)i -(normally)f(reads)h(commands)g(in)m(teractiv)m(ely)g(when)f(run,)i(y)m -(ou)f(m)m(ust)g(cause)360 4113 y(it,)34 b(when)f(started)i(running)c -(for)i(suc)m(h)h(in)m(teractiv)m(e)g(use)g(in)e(the)i(simplest)e(and)h -(most)i(usual)d(w)m(a)m(y)-8 b(,)36 b(to)360 4237 y(prin)m(t)29 -b(or)h(displa)m(y)e(an)i(announcemen)m(t)g(including)c(an)k -(appropriate)f(cop)m(yrigh)m(t)i(notice)f(and)f(a)i(notice)360 -4362 y(that)c(there)f(is)f(no)g(w)m(arran)m(t)m(y)i(\(or)f(else,)h(sa)m -(ying)f(that)h(y)m(ou)f(pro)m(vide)f(a)h(w)m(arran)m(t)m(y\))h(and)f -(that)g(users)f(ma)m(y)360 4486 y(redistribute)j(the)j(program)g(under) -e(these)i(conditions,)f(and)g(telling)f(the)i(user)g(ho)m(w)f(to)i -(view)e(a)h(cop)m(y)360 4611 y(of)g(this)e(General)h(Public)e(License.) -255 4771 y Fl(\017)60 b Fm(Y)-8 b(ou)38 b(ma)m(y)g(c)m(harge)h(a)f(fee) -g(for)f(the)h(ph)m(ysical)e(act)j(of)e(transferring)f(a)i(cop)m(y)-8 -b(,)41 b(and)c(y)m(ou)h(ma)m(y)g(at)g(y)m(our)360 4895 -y(option)30 b(o\013er)h(w)m(arran)m(t)m(y)g(protection)g(in)e(exc)m -(hange)j(for)e(a)g(fee.)180 5091 y(Mere)22 b(aggregation)h(of)f -(another)g(indep)s(enden)m(t)d(w)m(ork)j(with)e(the)h(Program)h(\(or)g -(its)f(deriv)-5 b(ativ)m(e\))21 b(on)g(a)h(v)m(olume)180 -5215 y(of)36 b(a)g(storage)h(or)f(distribution)c(medium)h(do)s(es)j -(not)g(bring)e(the)h(other)h(w)m(ork)g(under)e(the)i(scop)s(e)g(of)f -(these)180 5340 y(terms.)p eop +2 3 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052 +b(2)150 166 y Fr(TERMS)44 b(AND)h(CONDITIONS)g(F)l(OR)g(COPYING,)150 +299 y(DISTRIBUTION)f(AND)h(MODIFICA)-11 b(TION)199 515 +y Fs(0.)61 b(This)41 b(License)h(applies)e(to)k(an)m(y)f(program)f(or)g +(other)h(w)m(ork)g(whic)m(h)e(con)m(tains)i(a)g(notice)f(placed)330 +625 y(b)m(y)33 b(the)h(cop)m(yrigh)m(t)g(holder)e(sa)m(ying)i(it)f(ma)m +(y)h(b)s(e)f(distributed)e(under)h(the)h(terms)h(of)g(this)e(General) +330 735 y(Public)37 b(License.)67 b(The)39 b(\\Program",)j(b)s(elo)m +(w,)f(refers)e(to)h(an)m(y)g(suc)m(h)f(program)g(or)g(w)m(ork,)j(and)d +(a)330 844 y(\\w)m(ork)29 b(based)f(on)h(the)g(Program")g(means)f +(either)h(the)f(Program)h(or)g(an)m(y)g(deriv)-5 b(ativ)m(e)28 +b(w)m(ork)g(under)330 954 y(cop)m(yrigh)m(t)k(la)m(w:)42 +b(that)32 b(is)e(to)j(sa)m(y)-8 b(,)33 b(a)e(w)m(ork)h(con)m(taining)f +(the)g(Program)h(or)f(a)h(p)s(ortion)e(of)h(it,)g(either)330 +1063 y(v)m(erbatim)e(or)g(with)e(mo)s(di\014cations)g(and/or)i +(translated)g(in)m(to)g(another)g(language.)40 b(\(Hereinafter,)330 +1173 y(translation)26 b(is)g(included)f(without)h(limitation)f(in)h +(the)h(term)g(\\mo)s(di\014cation".\))40 b(Eac)m(h)27 +b(licensee)g(is)330 1282 y(addressed)i(as)i(\\y)m(ou".)330 +1429 y(Activities)38 b(other)h(than)f(cop)m(ying,)k(distribution)35 +b(and)j(mo)s(di\014cation)f(are)i(not)g(co)m(v)m(ered)h(b)m(y)f(this) +330 1538 y(License;)33 b(they)g(are)f(outside)g(its)f(scop)s(e.)47 +b(The)32 b(act)h(of)g(running)c(the)k(Program)f(is)f(not)i(restricted,) +330 1648 y(and)24 b(the)g(output)g(from)g(the)h(Program)f(is)g(co)m(v)m +(ered)i(only)d(if)g(its)h(con)m(ten)m(ts)i(constitute)f(a)g(w)m(ork)f +(based)330 1758 y(on)h(the)h(Program)f(\(indep)s(enden)m(t)f(of)i(ha)m +(ving)f(b)s(een)f(made)i(b)m(y)f(running)e(the)i(Program\).)40 +b(Whether)330 1867 y(that)31 b(is)e(true)i(dep)s(ends)d(on)i(what)h +(the)f(Program)h(do)s(es.)199 2014 y(1.)61 b(Y)-8 b(ou)42 +b(ma)m(y)g(cop)m(y)g(and)e(distribute)f(v)m(erbatim)i(copies)g(of)h +(the)f(Program's)h(source)f(co)s(de)h(as)g(y)m(ou)330 +2123 y(receiv)m(e)32 b(it,)f(in)f(an)m(y)h(medium,)f(pro)m(vided)g +(that)h(y)m(ou)h(conspicuously)d(and)h(appropriately)g(publish)330 +2233 y(on)j(eac)m(h)h(cop)m(y)g(an)f(appropriate)f(cop)m(yrigh)m(t)i +(notice)f(and)g(disclaimer)d(of)k(w)m(arran)m(t)m(y;)h(k)m(eep)f(in)m +(tact)330 2342 y(all)d(the)g(notices)h(that)h(refer)e(to)h(this)f +(License)g(and)g(to)i(the)f(absence)g(of)g(an)m(y)g(w)m(arran)m(t)m(y;) +h(and)e(giv)m(e)330 2452 y(an)m(y)g(other)f(recipien)m(ts)g(of)g(the)h +(Program)f(a)h(cop)m(y)g(of)g(this)e(License)h(along)g(with)f(the)i +(Program.)330 2598 y(Y)-8 b(ou)31 b(ma)m(y)g(c)m(harge)h(a)f(fee)g(for) +f(the)h(ph)m(ysical)e(act)j(of)f(transferring)e(a)i(cop)m(y)-8 +b(,)32 b(and)e(y)m(ou)h(ma)m(y)g(at)g(y)m(our)330 2708 +y(option)f(o\013er)h(w)m(arran)m(t)m(y)g(protection)g(in)e(exc)m(hange) +j(for)e(a)g(fee.)199 2854 y(2.)61 b(Y)-8 b(ou)24 b(ma)m(y)h(mo)s(dify)d +(y)m(our)i(cop)m(y)g(or)g(copies)g(of)g(the)g(Program)g(or)g(an)m(y)g +(p)s(ortion)e(of)i(it,)h(th)m(us)f(forming)f(a)330 2964 +y(w)m(ork)k(based)g(on)f(the)h(Program,)h(and)f(cop)m(y)g(and)g +(distribute)d(suc)m(h)j(mo)s(di\014cations)e(or)h(w)m(ork)h(under)330 +3074 y(the)k(terms)f(of)g(Section)h(1)f(ab)s(o)m(v)m(e,)i(pro)m(vided)d +(that)i(y)m(ou)g(also)f(meet)h(all)f(of)g(these)h(conditions:)379 +3220 y(a.)61 b(Y)-8 b(ou)43 b(m)m(ust)f(cause)i(the)e(mo)s(di\014ed)f +(\014les)g(to)i(carry)g(prominen)m(t)e(notices)i(stating)f(that)i(y)m +(ou)510 3330 y(c)m(hanged)31 b(the)g(\014les)e(and)h(the)g(date)h(of)g +(an)m(y)g(c)m(hange.)374 3476 y(b.)60 b(Y)-8 b(ou)31 +b(m)m(ust)g(cause)g(an)m(y)h(w)m(ork)f(that)g(y)m(ou)g(distribute)d(or) +j(publish,)d(that)j(in)f(whole)g(or)h(in)e(part)510 3586 +y(con)m(tains)35 b(or)h(is)e(deriv)m(ed)g(from)h(the)g(Program)g(or)g +(an)m(y)h(part)f(thereof,)i(to)f(b)s(e)e(licensed)g(as)i(a)510 +3695 y(whole)30 b(at)h(no)f(c)m(harge)i(to)f(all)e(third)f(parties)i +(under)f(the)i(terms)f(of)g(this)g(License.)384 3842 +y(c.)61 b(If)39 b(the)h(mo)s(di\014ed)e(program)h(normally)f(reads)i +(commands)f(in)m(teractiv)m(ely)h(when)f(run,)i(y)m(ou)510 +3951 y(m)m(ust)30 b(cause)h(it,)f(when)g(started)h(running)c(for)k(suc) +m(h)f(in)m(teractiv)m(e)h(use)f(in)f(the)i(most)g(ordinary)510 +4061 y(w)m(a)m(y)-8 b(,)25 b(to)d(prin)m(t)e(or)h(displa)m(y)f(an)h +(announcemen)m(t)g(including)d(an)k(appropriate)e(cop)m(yrigh)m(t)i +(notice)510 4170 y(and)i(a)g(notice)h(that)f(there)h(is)e(no)h(w)m +(arran)m(t)m(y)h(\(or)g(else,)g(sa)m(ying)f(that)h(y)m(ou)g(pro)m(vide) +e(a)i(w)m(arran)m(t)m(y\))510 4280 y(and)35 b(that)g(users)g(ma)m(y)g +(redistribute)e(the)j(program)f(under)e(these)j(conditions,)f(and)g +(telling)510 4390 y(the)f(user)f(ho)m(w)h(to)g(view)f(a)i(cop)m(y)f(of) +g(this)f(License.)50 b(\(Exception:)e(if)32 b(the)i(Program)g(itself)f +(is)510 4499 y(in)m(teractiv)m(e)i(but)e(do)s(es)h(not)g(normally)e +(prin)m(t)h(suc)m(h)g(an)h(announcemen)m(t,)h(y)m(our)f(w)m(ork)g +(based)510 4609 y(on)c(the)h(Program)f(is)g(not)g(required)f(to)i(prin) +m(t)e(an)h(announcemen)m(t.\))330 4792 y(These)41 b(requiremen)m(ts)g +(apply)f(to)i(the)g(mo)s(di\014ed)e(w)m(ork)h(as)h(a)g(whole.)73 +b(If)42 b(iden)m(ti\014able)d(sections)330 4902 y(of)j(that)h(w)m(ork)g +(are)f(not)h(deriv)m(ed)e(from)h(the)h(Program,)i(and)d(can)h(b)s(e)e +(reasonably)h(considered)330 5011 y(indep)s(enden)m(t)24 +b(and)j(separate)g(w)m(orks)g(in)e(themselv)m(es,)j(then)e(this)g +(License,)h(and)f(its)h(terms,)g(do)g(not)330 5121 y(apply)36 +b(to)i(those)f(sections)g(when)g(y)m(ou)g(distribute)e(them)i(as)g +(separate)h(w)m(orks.)61 b(But)37 b(when)g(y)m(ou)330 +5230 y(distribute)27 b(the)i(same)g(sections)h(as)f(part)g(of)g(a)h +(whole)e(whic)m(h)g(is)g(a)h(w)m(ork)h(based)e(on)h(the)h(Program,)330 +5340 y(the)h(distribution)d(of)j(the)h(whole)e(m)m(ust)h(b)s(e)g(on)g +(the)g(terms)g(of)h(this)e(License,)h(whose)g(p)s(ermissions)p +eop %%Page: 3 5 -3 4 bop 0 -116 a Fm(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2352 -b(3)49 366 y(4.)61 b(Y)-8 b(ou)33 b(ma)m(y)h(cop)m(y)f(and)g -(distribute)d(the)j(Program)g(\(or)g(a)g(p)s(ortion)f(or)h(deriv)-5 -b(ativ)m(e)32 b(of)h(it,)g(under)f(P)m(aragraph)180 491 -y(2\))j(in)e(ob)5 b(ject)36 b(co)s(de)e(or)h(executable)g(form)e(under) -g(the)i(terms)f(of)h(P)m(aragraphs)f(1)h(and)f(2)h(ab)s(o)m(v)m(e)g -(pro)m(vided)180 616 y(that)c(y)m(ou)g(also)f(do)g(one)h(of)f(the)h -(follo)m(wing:)255 762 y Fl(\017)60 b Fm(accompan)m(y)28 -b(it)d(with)g(the)i(complete)f(corresp)s(onding)e(mac)m(hine-readable)i -(source)h(co)s(de,)g(whic)m(h)e(m)m(ust)360 887 y(b)s(e)30 -b(distributed)d(under)i(the)i(terms)f(of)g(P)m(aragraphs)h(1)g(and)e(2) -i(ab)s(o)m(v)m(e;)h(or,)255 1033 y Fl(\017)60 b Fm(accompan)m(y)36 -b(it)d(with)g(a)i(written)f(o\013er,)i(v)-5 b(alid)32 -b(for)i(at)h(least)g(three)f(y)m(ears,)j(to)e(giv)m(e)g(an)m(y)f(third) -f(part)m(y)360 1158 y(free)25 b(\(except)h(for)f(a)g(nominal)e(c)m -(harge)j(for)f(the)g(cost)h(of)f(distribution\))d(a)j(complete)g(mac)m -(hine-readable)360 1282 y(cop)m(y)k(of)g(the)f(corresp)s(onding)f -(source)i(co)s(de,)g(to)g(b)s(e)f(distributed)d(under)i(the)i(terms)f -(of)h(P)m(aragraphs)g(1)360 1407 y(and)h(2)h(ab)s(o)m(v)m(e;)g(or,)255 -1553 y Fl(\017)60 b Fm(accompan)m(y)25 b(it)f(with)f(the)h(information) -e(y)m(ou)j(receiv)m(ed)f(as)h(to)g(where)e(the)h(corresp)s(onding)e -(source)j(co)s(de)360 1678 y(ma)m(y)38 b(b)s(e)f(obtained.)61 -b(\(This)36 b(alternativ)m(e)h(is)g(allo)m(w)m(ed)g(only)f(for)h -(noncommercial)g(distribution)d(and)360 1802 y(only)29 -b(if)h(y)m(ou)h(receiv)m(ed)f(the)h(program)f(in)f(ob)5 -b(ject)31 b(co)s(de)g(or)f(executable)h(form)f(alone.\))180 -1971 y(Source)41 b(co)s(de)g(for)g(a)h(w)m(ork)f(means)g(the)g -(preferred)f(form)h(of)g(the)g(w)m(ork)h(for)e(making)h(mo)s -(di\014cations)e(to)180 2095 y(it.)54 b(F)-8 b(or)35 -b(an)g(executable)h(\014le,)f(complete)g(source)g(co)s(de)g(means)g -(all)f(the)h(source)g(co)s(de)g(for)g(all)e(mo)s(dules)g(it)180 -2220 y(con)m(tains;)39 b(but,)e(as)f(a)g(sp)s(ecial)f(exception,)i(it)f -(need)f(not)h(include)e(source)i(co)s(de)g(for)g(mo)s(dules)e(whic)m(h) -h(are)180 2344 y(standard)c(libraries)d(that)k(accompan)m(y)h(the)f(op) -s(erating)e(system)i(on)f(whic)m(h)f(the)i(executable)g(\014le)f(runs,) -f(or)180 2469 y(for)g(standard)g(header)g(\014les)f(or)i(de\014nitions) -c(\014les)j(that)h(accompan)m(y)g(that)g(op)s(erating)f(system.)49 -2615 y(5.)61 b(Y)-8 b(ou)32 b(ma)m(y)h(not)f(cop)m(y)-8 -b(,)33 b(mo)s(dify)-8 b(,)31 b(sublicense,)f(distribute)g(or)h -(transfer)h(the)g(Program)f(except)i(as)f(expressly)180 -2740 y(pro)m(vided)20 b(under)g(this)g(General)h(Public)e(License.)37 -b(An)m(y)21 b(attempt)i(otherwise)d(to)i(cop)m(y)-8 b(,)25 -b(mo)s(dify)-8 b(,)22 b(sublicense,)180 2864 y(distribute)k(or)j -(transfer)e(the)i(Program)g(is)e(v)m(oid,)i(and)f(will)e(automatically) -i(terminate)h(y)m(our)f(righ)m(ts)g(to)h(use)180 2989 -y(the)34 b(Program)g(under)f(this)f(License.)51 b(Ho)m(w)m(ev)m(er,)37 -b(parties)d(who)f(ha)m(v)m(e)i(receiv)m(ed)f(copies,)h(or)f(righ)m(ts)g -(to)g(use)180 3113 y(copies,)f(from)f(y)m(ou)h(under)e(this)g(General)i -(Public)d(License)i(will)e(not)j(ha)m(v)m(e)h(their)d(licenses)h -(terminated)g(so)180 3238 y(long)e(as)h(suc)m(h)f(parties)f(remain)h -(in)f(full)f(compliance.)49 3384 y(6.)61 b(By)32 b(cop)m(ying,)h -(distributing)28 b(or)k(mo)s(difying)e(the)i(Program)g(\(or)h(an)m(y)f -(w)m(ork)g(based)g(on)g(the)g(Program\))h(y)m(ou)180 -3509 y(indicate)c(y)m(our)i(acceptance)h(of)f(this)e(license)h(to)h(do) -f(so,)h(and)f(all)f(its)h(terms)g(and)g(conditions.)49 -3655 y(7.)61 b(Eac)m(h)37 b(time)f(y)m(ou)g(redistribute)e(the)i -(Program)g(\(or)h(an)m(y)f(w)m(ork)g(based)g(on)g(the)g(Program\),)j -(the)d(recipien)m(t)180 3780 y(automatically)j(receiv)m(es)i(a)e -(license)g(from)g(the)g(original)f(licensor)g(to)i(cop)m(y)-8 -b(,)44 b(distribute)37 b(or)i(mo)s(dify)f(the)180 3904 -y(Program)31 b(sub)5 b(ject)32 b(to)g(these)f(terms)h(and)e -(conditions.)42 b(Y)-8 b(ou)32 b(ma)m(y)g(not)f(imp)s(ose)f(an)m(y)i -(further)e(restrictions)180 4029 y(on)g(the)h(recipien)m(ts')e -(exercise)i(of)g(the)f(righ)m(ts)g(gran)m(ted)h(herein.)49 -4175 y(8.)61 b(The)28 b(F)-8 b(ree)29 b(Soft)m(w)m(are)g(F)-8 -b(oundation)28 b(ma)m(y)h(publish)c(revised)i(and/or)h(new)g(v)m -(ersions)f(of)i(the)f(General)g(Public)180 4300 y(License)33 -b(from)f(time)h(to)g(time.)49 b(Suc)m(h)32 b(new)h(v)m(ersions)f(will)e -(b)s(e)j(similar)d(in)i(spirit)e(to)k(the)f(presen)m(t)g(v)m(ersion,) -180 4424 y(but)d(ma)m(y)h(di\013er)e(in)g(detail)g(to)i(address)f(new)g -(problems)e(or)j(concerns.)180 4571 y(Eac)m(h)44 b(v)m(ersion)f(is)f -(giv)m(en)h(a)h(distinguishing)39 b(v)m(ersion)k(n)m(um)m(b)s(er.)78 -b(If)43 b(the)g(Program)h(sp)s(eci\014es)e(a)h(v)m(ersion)180 -4695 y(n)m(um)m(b)s(er)e(of)i(the)f(license)g(whic)m(h)f(applies)f(to)j -(it)f(and)g(\\an)m(y)h(later)g(v)m(ersion",)i(y)m(ou)e(ha)m(v)m(e)g -(the)g(option)f(of)180 4820 y(follo)m(wing)31 b(the)i(terms)g(and)f -(conditions)f(either)h(of)h(that)g(v)m(ersion)f(or)h(of)f(an)m(y)h -(later)g(v)m(ersion)f(published)d(b)m(y)180 4944 y(the)c(F)-8 -b(ree)27 b(Soft)m(w)m(are)f(F)-8 b(oundation.)39 b(If)25 -b(the)g(Program)h(do)s(es)f(not)g(sp)s(ecify)f(a)i(v)m(ersion)f(n)m(um) -m(b)s(er)f(of)h(the)h(license,)180 5069 y(y)m(ou)31 b(ma)m(y)g(c)m(ho)s -(ose)g(an)m(y)g(v)m(ersion)f(ev)m(er)h(published)26 b(b)m(y)31 -b(the)f(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8 b(oundation.)49 -5215 y(9.)61 b(If)34 b(y)m(ou)h(wish)d(to)k(incorp)s(orate)e(parts)g -(of)g(the)h(Program)g(in)m(to)f(other)h(free)f(programs)g(whose)h -(distribution)180 5340 y(conditions)42 b(are)i(di\013eren)m(t,)j(write) -c(to)h(the)g(author)g(to)g(ask)g(for)f(p)s(ermission.)78 -b(F)-8 b(or)44 b(soft)m(w)m(are)h(whic)m(h)e(is)p eop +3 4 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052 +b(3)330 299 y(for)22 b(other)h(licensees)e(extend)i(to)g(the)f(en)m +(tire)g(whole,)i(and)d(th)m(us)h(to)h(eac)m(h)h(and)d(ev)m(ery)i(part)g +(regardless)330 408 y(of)31 b(who)e(wrote)i(it.)330 538 +y(Th)m(us,)48 b(it)d(is)f(not)i(the)f(in)m(ten)m(t)g(of)h(this)e +(section)h(to)h(claim)f(righ)m(ts)f(or)h(con)m(test)i(y)m(our)f(righ)m +(ts)e(to)330 648 y(w)m(ork)34 b(written)e(en)m(tirely)h(b)m(y)h(y)m +(ou;)h(rather,)g(the)f(in)m(ten)m(t)g(is)e(to)j(exercise)e(the)h(righ)m +(t)f(to)i(con)m(trol)f(the)330 757 y(distribution)27 +b(of)j(deriv)-5 b(ativ)m(e)30 b(or)h(collectiv)m(e)f(w)m(orks)h(based)f +(on)g(the)h(Program.)330 887 y(In)41 b(addition,)h(mere)f(aggregation)i +(of)f(another)f(w)m(ork)g(not)h(based)f(on)g(the)g(Program)h(with)e +(the)330 996 y(Program)22 b(\(or)g(with)e(a)i(w)m(ork)g(based)f(on)h +(the)g(Program\))g(on)f(a)h(v)m(olume)g(of)g(a)g(storage)h(or)f +(distribution)330 1106 y(medium)28 b(do)s(es)j(not)f(bring)f(the)h +(other)h(w)m(ork)f(under)f(the)i(scop)s(e)f(of)h(this)e(License.)199 +1235 y(3.)61 b(Y)-8 b(ou)38 b(ma)m(y)f(cop)m(y)h(and)f(distribute)d +(the)k(Program)f(\(or)g(a)h(w)m(ork)f(based)g(on)g(it,)i(under)c +(Section)i(2\))330 1345 y(in)29 b(ob)5 b(ject)31 b(co)s(de)g(or)g +(executable)g(form)f(under)e(the)j(terms)f(of)h(Sections)f(1)h(and)f(2) +h(ab)s(o)m(v)m(e)g(pro)m(vided)330 1455 y(that)g(y)m(ou)g(also)f(do)g +(one)h(of)f(the)h(follo)m(wing:)379 1584 y(a.)61 b(Accompan)m(y)47 +b(it)e(with)f(the)i(complete)g(corresp)s(onding)e(mac)m(hine-readable)h +(source)g(co)s(de,)510 1694 y(whic)m(h)25 b(m)m(ust)h(b)s(e)f +(distributed)e(under)h(the)j(terms)e(of)i(Sections)e(1)i(and)e(2)h(ab)s +(o)m(v)m(e)i(on)d(a)i(medium)510 1803 y(customarily)i(used)h(for)g +(soft)m(w)m(are)i(in)m(terc)m(hange;)f(or,)374 1933 y(b.)60 +b(Accompan)m(y)30 b(it)f(with)f(a)i(written)e(o\013er,)j(v)-5 +b(alid)27 b(for)i(at)i(least)e(three)h(y)m(ears,)g(to)g(giv)m(e)g(an)m +(y)g(third)510 2042 y(part)m(y)-8 b(,)32 b(for)f(a)h(c)m(harge)g(no)f +(more)h(than)f(y)m(our)g(cost)h(of)f(ph)m(ysically)f(p)s(erforming)f +(source)i(distri-)510 2152 y(bution,)c(a)h(complete)h(mac)m +(hine-readable)e(cop)m(y)h(of)g(the)g(corresp)s(onding)e(source)i(co)s +(de,)h(to)g(b)s(e)510 2262 y(distributed)i(under)i(the)h(terms)g(of)h +(Sections)f(1)g(and)g(2)h(ab)s(o)m(v)m(e)g(on)f(a)h(medium)d +(customarily)510 2371 y(used)e(for)g(soft)m(w)m(are)i(in)m(terc)m +(hange;)f(or,)384 2501 y(c.)61 b(Accompan)m(y)33 b(it)e(with)g(the)h +(information)e(y)m(ou)i(receiv)m(ed)g(as)g(to)g(the)g(o\013er)g(to)h +(distribute)c(cor-)510 2610 y(resp)s(onding)i(source)i(co)s(de.)50 +b(\(This)31 b(alternativ)m(e)j(is)e(allo)m(w)m(ed)h(only)g(for)g +(noncommercial)f(dis-)510 2720 y(tribution)e(and)h(only)g(if)g(y)m(ou)i +(receiv)m(ed)f(the)g(program)g(in)f(ob)5 b(ject)33 b(co)s(de)f(or)g +(executable)g(form)510 2829 y(with)d(suc)m(h)h(an)g(o\013er,)h(in)e +(accord)j(with)d(Subsection)g(b)h(ab)s(o)m(v)m(e.\))330 +2979 y(The)j(source)h(co)s(de)g(for)f(a)h(w)m(ork)g(means)f(the)h +(preferred)e(form)h(of)h(the)g(w)m(ork)f(for)h(making)f(mo)s(di\014-) +330 3088 y(cations)e(to)g(it.)40 b(F)-8 b(or)31 b(an)f(executable)h(w)m +(ork,)g(complete)f(source)h(co)s(de)f(means)h(all)e(the)h(source)h(co)s +(de)330 3198 y(for)25 b(all)g(mo)s(dules)f(it)h(con)m(tains,)i(plus)c +(an)m(y)j(asso)s(ciated)g(in)m(terface)h(de\014nition)c(\014les,)j +(plus)d(the)j(scripts)330 3308 y(used)41 b(to)i(con)m(trol)g +(compilation)d(and)i(installation)e(of)i(the)h(executable.)76 +b(Ho)m(w)m(ev)m(er,)48 b(as)42 b(a)g(sp)s(e-)330 3417 +y(cial)30 b(exception,)i(the)f(source)g(co)s(de)g(distributed)d(need)i +(not)h(include)e(an)m(ything)h(that)i(is)e(normally)330 +3527 y(distributed)37 b(\(in)h(either)h(source)h(or)f(binary)f(form\))i +(with)e(the)i(ma)5 b(jor)39 b(comp)s(onen)m(ts)h(\(compiler,)330 +3636 y(k)m(ernel,)35 b(and)f(so)g(on\))g(of)h(the)f(op)s(erating)g +(system)g(on)g(whic)m(h)f(the)h(executable)h(runs,)f(unless)e(that)330 +3746 y(comp)s(onen)m(t)f(itself)e(accompanies)i(the)f(executable.)330 +3875 y(If)39 b(distribution)c(of)40 b(executable)g(or)f(ob)5 +b(ject)40 b(co)s(de)f(is)g(made)g(b)m(y)g(o\013ering)g(access)h(to)g +(cop)m(y)g(from)330 3985 y(a)e(designated)f(place,)i(then)f(o\013ering) +f(equiv)-5 b(alen)m(t)37 b(access)h(to)h(cop)m(y)f(the)f(source)h(co)s +(de)g(from)f(the)330 4095 y(same)29 b(place)f(coun)m(ts)g(as)h +(distribution)24 b(of)k(the)h(source)f(co)s(de,)h(ev)m(en)g(though)e +(third)g(parties)g(are)i(not)330 4204 y(comp)s(elled)g(to)i(cop)m(y)g +(the)g(source)f(along)h(with)e(the)h(ob)5 b(ject)31 b(co)s(de.)199 +4334 y(4.)61 b(Y)-8 b(ou)35 b(ma)m(y)h(not)f(cop)m(y)-8 +b(,)37 b(mo)s(dify)-8 b(,)35 b(sublicense,)f(or)g(distribute)f(the)i +(Program)f(except)i(as)f(expressly)330 4443 y(pro)m(vided)k(under)g +(this)h(License.)70 b(An)m(y)41 b(attempt)h(otherwise)e(to)h(cop)m(y)-8 +b(,)45 b(mo)s(dify)-8 b(,)42 b(sublicense)c(or)330 4553 +y(distribute)24 b(the)j(Program)g(is)e(v)m(oid,)i(and)f(will)e +(automatically)j(terminate)f(y)m(our)h(righ)m(ts)f(under)f(this)330 +4663 y(License.)70 b(Ho)m(w)m(ev)m(er,)45 b(parties)40 +b(who)g(ha)m(v)m(e)h(receiv)m(ed)g(copies,)i(or)d(righ)m(ts,)j(from)d +(y)m(ou)g(under)f(this)330 4772 y(License)d(will)e(not)j(ha)m(v)m(e)h +(their)e(licenses)f(terminated)i(so)g(long)f(as)h(suc)m(h)f(parties)g +(remain)g(in)f(full)330 4882 y(compliance.)199 5011 y(5.)61 +b(Y)-8 b(ou)38 b(are)g(not)g(required)d(to)j(accept)h(this)e(License,)i +(since)e(y)m(ou)g(ha)m(v)m(e)i(not)f(signed)e(it.)62 +b(Ho)m(w)m(ev)m(er,)330 5121 y(nothing)23 b(else)g(gran)m(ts)i(y)m(ou)f +(p)s(ermission)c(to)25 b(mo)s(dify)d(or)h(distribute)f(the)i(Program)g +(or)f(its)g(deriv)-5 b(ativ)m(e)330 5230 y(w)m(orks.)38 +b(These)23 b(actions)g(are)h(prohibited)c(b)m(y)j(la)m(w)g(if)f(y)m(ou) +h(do)g(not)h(accept)g(this)e(License.)38 b(Therefore,)330 +5340 y(b)m(y)e(mo)s(difying)d(or)j(distributing)c(the)k(Program)g(\(or) +h(an)m(y)f(w)m(ork)g(based)g(on)f(the)i(Program\),)h(y)m(ou)p +eop %%Page: 4 6 -4 5 bop 0 -116 a Fm(4)2965 b(User's)31 b(Guide)e(to)i -Fk(gperf)180 366 y Fm(cop)m(yrigh)m(ted)45 b(b)m(y)g(the)h(F)-8 -b(ree)46 b(Soft)m(w)m(are)g(F)-8 b(oundation,)49 b(write)44 -b(to)i(the)g(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8 b(oundation;)52 -b(w)m(e)180 491 y(sometimes)26 b(mak)m(e)h(exceptions)f(for)f(this.)38 -b(Our)25 b(decision)f(will)g(b)s(e)h(guided)f(b)m(y)i(the)g(t)m(w)m(o)h -(goals)f(of)g(preserving)180 616 y(the)i(free)h(status)f(of)g(all)f -(deriv)-5 b(ativ)m(es)28 b(of)g(our)g(free)g(soft)m(w)m(are)i(and)d(of) -i(promoting)e(the)i(sharing)d(and)i(reuse)g(of)180 740 -y(soft)m(w)m(are)k(generally)-8 b(.)180 1064 y Fi(NO)30 -b(W)-15 b(ARRANTY)4 1271 y Fm(10.)61 b(BECA)m(USE)41 -b(THE)f(PR)m(OGRAM)i(IS)e(LICENSED)g(FREE)h(OF)g(CHAR)m(GE,)g(THERE)f -(IS)h(NO)f(W)-10 b(AR-)180 1396 y(RANTY)22 b(F)m(OR)h(THE)f(PR)m -(OGRAM,)i(TO)d(THE)h(EXTENT)g(PERMITTED)g(BY)h(APPLICABLE)e(LA)-10 -b(W.)180 1520 y(EX)m(CEPT)46 b(WHEN)i(OTHER)-10 b(WISE)45 -b(ST)-8 b(A)g(TED)47 b(IN)g(WRITING)g(THE)f(COPYRIGHT)h(HOLDERS)180 -1645 y(AND/OR)21 b(OTHER)f(P)-8 b(AR)g(TIES)20 b(PR)m(O)m(VIDE)h(THE)f -(PR)m(OGRAM)h(\\AS)f(IS")g(WITHOUT)g(W)-10 b(ARRANTY)180 -1770 y(OF)28 b(ANY)h(KIND,)g(EITHER)e(EXPRESSED)h(OR)f(IMPLIED,)i -(INCLUDING,)g(BUT)f(NOT)g(LIMITED)180 1894 y(TO,)46 b(THE)g(IMPLIED)g -(W)-10 b(ARRANTIES)46 b(OF)h(MER)m(CHANT)-8 b(ABILITY)47 -b(AND)g(FITNESS)e(F)m(OR)i(A)180 2019 y(P)-8 b(AR)g(TICULAR)37 -b(PURPOSE.)f(THE)h(ENTIRE)f(RISK)g(AS)h(TO)f(THE)h(QUALITY)g(AND)h -(PERF)m(OR-)180 2143 y(MANCE)i(OF)f(THE)g(PR)m(OGRAM)h(IS)e(WITH)i -(YOU.)f(SHOULD)h(THE)f(PR)m(OGRAM)h(PR)m(O)m(VE)f(DE-)180 -2268 y(FECTIVE,)c(YOU)g(ASSUME)g(THE)g(COST)f(OF)i(ALL)f(NECESSAR)-8 -b(Y)34 b(SER)-10 b(VICING,)35 b(REP)-8 b(AIR)35 b(OR)180 -2392 y(CORRECTION.)4 2542 y(11.)61 b(IN)25 b(NO)g(EVENT)f(UNLESS)g -(REQUIRED)h(BY)g(APPLICABLE)g(LA)-10 b(W)25 b(OR)g(A)m(GREED)h(TO)e(IN) -h(WRIT-)180 2666 y(ING)i(WILL)g(ANY)g(COPYRIGHT)f(HOLDER,)h(OR)f(ANY)h -(OTHER)f(P)-8 b(AR)g(TY)27 b(WHO)g(MA)-8 b(Y)28 b(MODIFY)180 -2791 y(AND/OR)34 b(REDISTRIBUTE)d(THE)i(PR)m(OGRAM)g(AS)f(PERMITTED)g -(ABO)m(VE,)i(BE)f(LIABLE)g(TO)180 2915 y(YOU)26 b(F)m(OR)g(D)m(AMA)m -(GES,)h(INCLUDING)f(ANY)g(GENERAL,)g(SPECIAL,)e(INCIDENT)-8 -b(AL)26 b(OR)f(CON-)180 3040 y(SEQUENTIAL)36 b(D)m(AMA)m(GES)i(ARISING) -f(OUT)f(OF)h(THE)g(USE)f(OR)h(INABILITY)g(TO)f(USE)g(THE)180 -3164 y(PR)m(OGRAM)j(\(INCLUDING)g(BUT)f(NOT)g(LIMITED)g(TO)g(LOSS)e(OF) -j(D)m(A)-8 b(T)g(A)40 b(OR)d(D)m(A)-8 b(T)g(A)40 b(BEING)180 -3289 y(RENDERED)k(INA)m(CCURA)-8 b(TE)44 b(OR)f(LOSSES)f(SUST)-8 -b(AINED)43 b(BY)i(YOU)e(OR)h(THIRD)f(P)-8 b(AR)g(TIES)180 -3413 y(OR)28 b(A)h(F)-10 b(AILURE)29 b(OF)g(THE)f(PR)m(OGRAM)i(TO)e -(OPERA)-8 b(TE)28 b(WITH)h(ANY)g(OTHER)f(PR)m(OGRAMS\),)180 -3538 y(EVEN)38 b(IF)f(SUCH)h(HOLDER)f(OR)g(OTHER)g(P)-8 -b(AR)g(TY)38 b(HAS)g(BEEN)g(AD)m(VISED)g(OF)g(THE)f(POSSI-)180 -3662 y(BILITY)30 b(OF)g(SUCH)g(D)m(AMA)m(GES.)0 4111 -y Fi(END)h(OF)f(TERMS)f(AND)i(CONDITIONS)p eop +4 5 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052 +b(4)330 299 y(indicate)31 b(y)m(our)i(acceptance)h(of)f(this)e(License) +h(to)i(do)e(so,)h(and)f(all)f(its)h(terms)g(and)g(conditions)f(for)330 +408 y(cop)m(ying,)g(distributing)26 b(or)31 b(mo)s(difying)c(the)k +(Program)f(or)h(w)m(orks)f(based)g(on)g(it.)199 545 y(6.)61 +b(Eac)m(h)43 b(time)e(y)m(ou)h(redistribute)e(the)i(Program)g(\(or)g +(an)m(y)h(w)m(ork)f(based)f(on)h(the)g(Program\),)k(the)330 +655 y(recipien)m(t)31 b(automatically)i(receiv)m(es)g(a)g(license)e +(from)h(the)g(original)f(licensor)g(to)i(cop)m(y)-8 b(,)34 +b(distribute)330 765 y(or)i(mo)s(dify)f(the)h(Program)h(sub)5 +b(ject)36 b(to)h(these)g(terms)f(and)g(conditions.)57 +b(Y)-8 b(ou)37 b(ma)m(y)g(not)f(imp)s(ose)330 874 y(an)m(y)27 +b(further)f(restrictions)f(on)i(the)g(recipien)m(ts')f(exercise)h(of)g +(the)g(righ)m(ts)f(gran)m(ted)h(herein.)38 b(Y)-8 b(ou)28 +b(are)330 984 y(not)j(resp)s(onsible)c(for)j(enforcing)g(compliance)g +(b)m(y)g(third)e(parties)i(to)h(this)e(License.)199 1121 +y(7.)61 b(If,)27 b(as)g(a)g(consequence)h(of)f(a)g(court)g(judgmen)m(t) +f(or)h(allegation)f(of)h(paten)m(t)h(infringemen)m(t)c(or)j(for)g(an)m +(y)330 1230 y(other)h(reason)f(\(not)h(limited)d(to)j(paten)m(t)h +(issues\),)e(conditions)f(are)h(imp)s(osed)f(on)h(y)m(ou)h(\(whether)f +(b)m(y)330 1340 y(court)c(order,)h(agreemen)m(t)g(or)f(otherwise\))f +(that)h(con)m(tradict)h(the)e(conditions)f(of)i(this)f(License,)i(they) +330 1450 y(do)34 b(not)g(excuse)h(y)m(ou)f(from)g(the)g(conditions)f +(of)h(this)f(License.)52 b(If)33 b(y)m(ou)i(cannot)g(distribute)c(so)k +(as)330 1559 y(to)f(satisfy)f(sim)m(ultaneously)f(y)m(our)h +(obligations)g(under)f(this)g(License)h(and)g(an)m(y)h(other)g(p)s +(ertinen)m(t)330 1669 y(obligations,)41 b(then)f(as)g(a)g(consequence)h +(y)m(ou)f(ma)m(y)g(not)g(distribute)e(the)i(Program)g(at)g(all.)68 +b(F)-8 b(or)330 1778 y(example,)25 b(if)e(a)i(paten)m(t)g(license)e(w)m +(ould)g(not)h(p)s(ermit)f(ro)m(y)m(alt)m(y-free)j(redistribution)20 +b(of)k(the)h(Program)330 1888 y(b)m(y)35 b(all)f(those)h(who)f(receiv)m +(e)i(copies)f(directly)e(or)i(indirectly)e(through)h(y)m(ou,)i(then)f +(the)g(only)f(w)m(a)m(y)330 1998 y(y)m(ou)27 b(could)e(satisfy)h(b)s +(oth)f(it)h(and)g(this)f(License)h(w)m(ould)f(b)s(e)h(to)h(refrain)d +(en)m(tirely)i(from)g(distribution)330 2107 y(of)31 b(the)f(Program.) +330 2244 y(If)43 b(an)m(y)g(p)s(ortion)f(of)h(this)g(section)g(is)f +(held)g(in)m(v)-5 b(alid)41 b(or)i(unenforceable)f(under)g(an)m(y)i +(particular)330 2354 y(circumstance,)i(the)e(balance)f(of)g(the)h +(section)f(is)f(in)m(tended)g(to)i(apply)e(and)g(the)i(section)f(as)h +(a)330 2463 y(whole)30 b(is)f(in)m(tended)g(to)i(apply)e(in)g(other)i +(circumstances.)330 2600 y(It)41 b(is)e(not)i(the)f(purp)s(ose)f(of)i +(this)e(section)i(to)g(induce)e(y)m(ou)i(to)g(infringe)d(an)m(y)j +(paten)m(ts)g(or)g(other)330 2710 y(prop)s(ert)m(y)e(righ)m(t)h(claims) +e(or)i(to)h(con)m(test)h(v)-5 b(alidit)m(y)38 b(of)i(an)m(y)g(suc)m(h)g +(claims;)j(this)c(section)h(has)g(the)330 2819 y(sole)30 +b(purp)s(ose)e(of)j(protecting)f(the)g(in)m(tegrit)m(y)g(of)g(the)h +(free)f(soft)m(w)m(are)h(distribution)c(system,)j(whic)m(h)330 +2929 y(is)k(implemen)m(ted)g(b)m(y)h(public)d(license)i(practices.)55 +b(Man)m(y)36 b(p)s(eople)e(ha)m(v)m(e)i(made)f(generous)h(con)m(tri-) +330 3039 y(butions)e(to)i(the)f(wide)g(range)g(of)h(soft)m(w)m(are)h +(distributed)32 b(through)j(that)h(system)f(in)f(reliance)h(on)330 +3148 y(consisten)m(t)h(application)e(of)h(that)h(system;)i(it)d(is)g +(up)f(to)i(the)g(author/donor)f(to)h(decide)f(if)g(he)g(or)330 +3258 y(she)i(is)g(willing)d(to)k(distribute)d(soft)m(w)m(are)k(through) +e(an)m(y)g(other)h(system)g(and)f(a)g(licensee)g(cannot)330 +3367 y(imp)s(ose)29 b(that)i(c)m(hoice.)330 3504 y(This)25 +b(section)j(is)e(in)m(tended)g(to)i(mak)m(e)g(thoroughly)e(clear)h +(what)g(is)f(b)s(eliev)m(ed)g(to)i(b)s(e)f(a)g(consequence)330 +3614 y(of)k(the)f(rest)h(of)f(this)f(License.)199 3751 +y(8.)61 b(If)35 b(the)g(distribution)c(and/or)k(use)g(of)g(the)g +(Program)g(is)f(restricted)h(in)f(certain)h(coun)m(tries)f(either)330 +3861 y(b)m(y)h(paten)m(ts)h(or)g(b)m(y)f(cop)m(yrigh)m(ted)h(in)m +(terfaces,)h(the)e(original)f(cop)m(yrigh)m(t)i(holder)e(who)h(places)g +(the)330 3970 y(Program)h(under)f(this)g(License)h(ma)m(y)h(add)e(an)i +(explicit)d(geographical)j(distribution)32 b(limitation)330 +4080 y(excluding)27 b(those)i(coun)m(tries,)g(so)g(that)g(distribution) +c(is)i(p)s(ermitted)h(only)f(in)g(or)i(among)g(coun)m(tries)330 +4189 y(not)k(th)m(us)f(excluded.)47 b(In)32 b(suc)m(h)g(case,)j(this)c +(License)i(incorp)s(orates)f(the)h(limitation)d(as)j(if)f(written)330 +4299 y(in)d(the)i(b)s(o)s(dy)d(of)j(this)e(License.)199 +4436 y(9.)61 b(The)26 b(F)-8 b(ree)28 b(Soft)m(w)m(are)g(F)-8 +b(oundation)26 b(ma)m(y)i(publish)23 b(revised)i(and/or)i(new)f(v)m +(ersions)g(of)h(the)g(General)330 4545 y(Public)35 b(License)h(from)h +(time)g(to)g(time.)61 b(Suc)m(h)36 b(new)h(v)m(ersions)f(will)f(b)s(e)h +(similar)e(in)i(spirit)f(to)j(the)330 4655 y(presen)m(t)30 +b(v)m(ersion,)h(but)e(ma)m(y)i(di\013er)e(in)g(detail)h(to)h(address)e +(new)h(problems)f(or)h(concerns.)330 4792 y(Eac)m(h)46 +b(v)m(ersion)e(is)g(giv)m(en)h(a)g(distinguishing)40 +b(v)m(ersion)45 b(n)m(um)m(b)s(er.)83 b(If)44 b(the)h(Program)g(sp)s +(eci\014es)f(a)330 4902 y(v)m(ersion)35 b(n)m(um)m(b)s(er)g(of)h(this)e +(License)i(whic)m(h)e(applies)g(to)j(it)e(and)g(\\an)m(y)i(later)e(v)m +(ersion",)j(y)m(ou)e(ha)m(v)m(e)330 5011 y(the)d(option)f(of)h(follo)m +(wing)e(the)i(terms)g(and)f(conditions)f(either)i(of)g(that)g(v)m +(ersion)f(or)h(of)g(an)m(y)g(later)330 5121 y(v)m(ersion)d(published)c +(b)m(y)k(the)g(F)-8 b(ree)31 b(Soft)m(w)m(are)g(F)-8 +b(oundation.)41 b(If)29 b(the)i(Program)f(do)s(es)g(not)g(sp)s(ecify)f +(a)330 5230 y(v)m(ersion)e(n)m(um)m(b)s(er)g(of)h(this)e(License,)i(y)m +(ou)g(ma)m(y)h(c)m(ho)s(ose)f(an)m(y)h(v)m(ersion)e(ev)m(er)h +(published)c(b)m(y)k(the)g(F)-8 b(ree)330 5340 y(Soft)m(w)m(are)31 +b(F)-8 b(oundation.)p eop %%Page: 5 7 -5 6 bop 0 -116 a Fm(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2352 -b(5)0 366 y Fi(App)t(endix:)45 b(Ho)l(w)31 b(to)g(Apply)e(These)i(T)-11 -b(erms)30 b(to)h(Y)-11 b(our)29 b(New)i(Programs)125 -692 y Fm(If)g(y)m(ou)h(dev)m(elop)g(a)g(new)g(program,)g(and)f(y)m(ou)h -(w)m(an)m(t)h(it)f(to)g(b)s(e)g(of)g(the)g(greatest)h(p)s(ossible)d -(use)h(to)i(h)m(umanit)m(y)-8 b(,)0 816 y(the)28 b(b)s(est)g(w)m(a)m(y) -h(to)f(ac)m(hiev)m(e)i(this)d(is)g(to)h(mak)m(e)h(it)f(free)g(soft)m(w) -m(are)h(whic)m(h)e(ev)m(ery)m(one)j(can)e(redistribute)d(and)j(c)m -(hange)0 941 y(under)h(these)i(terms.)125 1266 y(T)-8 -b(o)28 b(do)h(so,)g(attac)m(h)h(the)f(follo)m(wing)e(notices)h(to)h -(the)g(program.)40 b(It)28 b(is)f(safest)i(to)h(attac)m(h)g(them)e(to)h -(the)g(start)g(of)0 1390 y(eac)m(h)34 b(source)g(\014le)e(to)i(most)f -(e\013ectiv)m(ely)h(con)m(v)m(ey)h(the)f(exclusion)d(of)j(w)m(arran)m -(t)m(y;)h(and)e(eac)m(h)h(\014le)f(should)e(ha)m(v)m(e)j(at)0 -1515 y(least)d(the)f(\\cop)m(yrigh)m(t")i(line)d(and)g(a)i(p)s(oin)m -(ter)e(to)j(where)d(the)i(full)d(notice)j(is)e(found.)240 -1819 y Fh(one)i(line)d(to)j(giv)m(e)g(the)g(program's)f(name)h(and)e(a) -i(brief)e(idea)h(of)g(what)h(it)f(do)s(es.)240 1923 y -Fk(Copyright)45 b(\(C\))i(19)p Fh(yy)103 b(name)30 b(of)h(author)240 -2130 y Fk(This)47 b(program)e(is)j(free)e(software;)g(you)g(can)h -(redistribute)e(it)i(and/or)f(modify)240 2234 y(it)h(under)g(the)f -(terms)h(of)g(the)g(GNU)g(General)f(Public)g(License)g(as)h(published)e -(by)240 2338 y(the)i(Free)g(Software)e(Foundation;)g(either)h(version)g -(1,)h(or)g(\(at)g(your)g(option\))240 2442 y(any)g(later)f(version.)240 -2649 y(This)h(program)e(is)j(distributed)c(in)k(the)e(hope)h(that)g(it) -g(will)g(be)g(useful,)240 2753 y(but)g(WITHOUT)f(ANY)h(WARRANTY;)e -(without)h(even)g(the)h(implied)f(warranty)g(of)240 2857 -y(MERCHANTABILITY)e(or)j(FITNESS)f(FOR)h(A)g(PARTICULAR)e(PURPOSE.)93 -b(See)47 b(the)240 2961 y(GNU)g(General)f(Public)g(License)g(for)h -(more)f(details.)240 3168 y(You)h(should)f(have)h(received)e(a)j(copy)e -(of)h(the)g(GNU)g(General)f(Public)g(License)240 3272 -y(along)g(with)h(this)g(program;)e(if)i(not,)g(write)f(to)i(the)e(Free) -h(Software)240 3376 y(Foundation,)e(Inc.,)h(59)h(Temple)f(Place)h(-)g -(Suite)g(330,)f(Boston,)g(MA)h(02111-1307,)e(USA.)125 -3701 y Fm(Also)30 b(add)f(information)g(on)h(ho)m(w)h(to)g(con)m(tact)i -(y)m(ou)d(b)m(y)g(electronic)h(and)f(pap)s(er)f(mail.)125 -4026 y(If)19 b(the)i(program)f(is)g(in)m(teractiv)m(e,)j(mak)m(e)e(it)f -(output)g(a)h(short)f(notice)h(lik)m(e)e(this)h(when)f(it)h(starts)h -(in)e(an)h(in)m(teractiv)m(e)0 4150 y(mo)s(de:)240 4455 -y Fk(Gnomovision)45 b(version)h(69,)g(Copyright)g(\(C\))h(19)p -Fh(yy)55 b(name)30 b(of)g(author)240 4558 y Fk(Gnomovision)45 -b(comes)h(with)h(ABSOLUTELY)e(NO)i(WARRANTY;)e(for)i(details)f(type)h -(`show)f(w'.)240 4662 y(This)h(is)g(free)f(software,)g(and)h(you)g(are) -f(welcome)g(to)h(redistribute)e(it)240 4766 y(under)h(certain)g -(conditions;)f(type)i(`show)f(c')h(for)g(details.)125 -5091 y Fm(The)36 b(h)m(yp)s(othetical)h(commands)g(`sho)m(w)g(w')h(and) -e(`sho)m(w)i(c')g(should)d(sho)m(w)i(the)h(appropriate)e(parts)h(of)h -(the)0 5215 y(General)21 b(Public)e(License.)37 b(Of)21 -b(course,)i(the)f(commands)f(y)m(ou)g(use)g(ma)m(y)h(b)s(e)e(called)h -(something)f(other)i(than)f(`sho)m(w)0 5340 y(w')30 b(and)g(`sho)m(w)g -(c';)i(they)e(could)g(ev)m(en)h(b)s(e)e(mouse-clic)m(ks)i(or)f(men)m(u) -g(items|whatev)m(er)h(suits)e(y)m(our)h(program.)p eop +5 6 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052 +b(5)154 299 y(10.)61 b(If)29 b(y)m(ou)g(wish)f(to)i(incorp)s(orate)f +(parts)g(of)g(the)g(Program)h(in)m(to)f(other)h(free)f(programs)g +(whose)g(distri-)330 408 y(bution)e(conditions)g(are)j(di\013eren)m(t,) +e(write)g(to)i(the)f(author)f(to)i(ask)e(for)h(p)s(ermission.)37 +b(F)-8 b(or)29 b(soft)m(w)m(are)330 518 y(whic)m(h)23 +b(is)g(cop)m(yrigh)m(ted)h(b)m(y)g(the)g(F)-8 b(ree)25 +b(Soft)m(w)m(are)g(F)-8 b(oundation,)25 b(write)e(to)i(the)f(F)-8 +b(ree)25 b(Soft)m(w)m(are)g(F)-8 b(oun-)330 628 y(dation;)28 +b(w)m(e)g(sometimes)g(mak)m(e)g(exceptions)g(for)f(this.)39 +b(Our)26 b(decision)g(will)f(b)s(e)h(guided)h(b)m(y)g(the)h(t)m(w)m(o) +330 737 y(goals)23 b(of)g(preserving)e(the)h(free)h(status)g(of)f(all)g +(deriv)-5 b(ativ)m(es)22 b(of)g(our)g(free)h(soft)m(w)m(are)h(and)e(of) +h(promoting)330 847 y(the)31 b(sharing)e(and)g(reuse)h(of)h(soft)m(w)m +(are)h(generally)-8 b(.)330 995 y Fr(NO)45 b(W)-15 b(ARRANTY)154 +1187 y Fs(11.)61 b(BECA)m(USE)40 b(THE)f(PR)m(OGRAM)i(IS)e(LICENSED)g +(FREE)g(OF)h(CHAR)m(GE,)h(THERE)e(IS)g(NO)330 1297 y(W)-10 +b(ARRANTY)26 b(F)m(OR)f(THE)g(PR)m(OGRAM,)h(TO)e(THE)h(EXTENT)f +(PERMITTED)h(BY)g(APPLI-)330 1406 y(CABLE)i(LA)-10 b(W.)27 +b(EX)m(CEPT)g(WHEN)h(OTHER)-10 b(WISE)25 b(ST)-8 b(A)g(TED)28 +b(IN)e(WRITING)i(THE)e(COPY-)330 1516 y(RIGHT)35 b(HOLDERS)g(AND/OR)h +(OTHER)f(P)-8 b(AR)g(TIES)35 b(PR)m(O)m(VIDE)h(THE)f(PR)m(OGRAM)h(\\AS) +330 1626 y(IS")22 b(WITHOUT)f(W)-10 b(ARRANTY)23 b(OF)f(ANY)g(KIND,)h +(EITHER)e(EXPRESSED)g(OR)h(IMPLIED,)330 1735 y(INCLUDING,)33 +b(BUT)g(NOT)g(LIMITED)f(TO,)g(THE)h(IMPLIED)g(W)-10 b(ARRANTIES)32 +b(OF)h(MER-)330 1845 y(CHANT)-8 b(ABILITY)28 b(AND)g(FITNESS)e(F)m(OR)i +(A)g(P)-8 b(AR)g(TICULAR)27 b(PURPOSE.)g(THE)g(ENTIRE)330 +1954 y(RISK)19 b(AS)h(TO)g(THE)g(QUALITY)g(AND)h(PERF)m(ORMANCE)g(OF)f +(THE)g(PR)m(OGRAM)h(IS)f(WITH)330 2064 y(YOU.)h(SHOULD)g(THE)f(PR)m +(OGRAM)i(PR)m(O)m(VE)f(DEFECTIVE,)g(YOU)g(ASSUME)f(THE)g(COST)330 +2174 y(OF)30 b(ALL)g(NECESSAR)-8 b(Y)30 b(SER)-10 b(VICING,)30 +b(REP)-8 b(AIR)30 b(OR)g(CORRECTION.)154 2308 y(12.)61 +b(IN)26 b(NO)g(EVENT)g(UNLESS)f(REQUIRED)h(BY)h(APPLICABLE)f(LA)-10 +b(W)26 b(OR)g(A)m(GREED)h(TO)f(IN)330 2418 y(WRITING)37 +b(WILL)f(ANY)i(COPYRIGHT)e(HOLDER,)h(OR)f(ANY)h(OTHER)f(P)-8 +b(AR)g(TY)38 b(WHO)330 2527 y(MA)-8 b(Y)52 b(MODIFY)g(AND/OR)g +(REDISTRIBUTE)e(THE)h(PR)m(OGRAM)h(AS)f(PERMITTED)330 +2637 y(ABO)m(VE,)40 b(BE)f(LIABLE)f(TO)g(YOU)h(F)m(OR)g(D)m(AMA)m(GES,) +h(INCLUDING)f(ANY)h(GENERAL,)330 2746 y(SPECIAL,)e(INCIDENT)-8 +b(AL)40 b(OR)e(CONSEQUENTIAL)g(D)m(AMA)m(GES)j(ARISING)e(OUT)g(OF)330 +2856 y(THE)44 b(USE)g(OR)g(INABILITY)h(TO)f(USE)g(THE)g(PR)m(OGRAM)h +(\(INCLUDING)h(BUT)e(NOT)330 2966 y(LIMITED)29 b(TO)g(LOSS)f(OF)h(D)m +(A)-8 b(T)g(A)31 b(OR)e(D)m(A)-8 b(T)g(A)31 b(BEING)f(RENDERED)g(INA)m +(CCURA)-8 b(TE)29 b(OR)330 3075 y(LOSSES)38 b(SUST)-8 +b(AINED)40 b(BY)h(YOU)f(OR)g(THIRD)g(P)-8 b(AR)g(TIES)40 +b(OR)g(A)h(F)-10 b(AILURE)40 b(OF)g(THE)330 3185 y(PR)m(OGRAM)f(TO)f +(OPERA)-8 b(TE)38 b(WITH)h(ANY)g(OTHER)f(PR)m(OGRAMS\),)h(EVEN)g(IF)f +(SUCH)330 3294 y(HOLDER)33 b(OR)h(OTHER)f(P)-8 b(AR)g(TY)34 +b(HAS)f(BEEN)h(AD)m(VISED)g(OF)g(THE)f(POSSIBILITY)f(OF)330 +3404 y(SUCH)e(D)m(AMA)m(GES.)150 3661 y Fr(END)45 b(OF)g(TERMS)f(AND)h +(CONDITIONS)p eop %%Page: 6 8 -6 7 bop 0 -116 a Fm(6)2965 b(User's)31 b(Guide)e(to)i -Fk(gperf)125 366 y Fm(Y)-8 b(ou)28 b(should)f(also)h(get)h(y)m(our)f -(emplo)m(y)m(er)h(\(if)e(y)m(ou)i(w)m(ork)f(as)h(a)g(programmer\))f(or) -g(y)m(our)g(sc)m(ho)s(ol,)h(if)e(an)m(y)-8 b(,)30 b(to)f(sign)0 -491 y(a)i(\\cop)m(yrigh)m(t)g(disclaimer")d(for)j(the)f(program,)h(if)e -(necessary)-8 b(.)41 b(Here)31 b(a)g(sample;)f(alter)g(the)h(names:)240 -744 y Fk(Yoyodyne,)45 b(Inc.,)i(hereby)f(disclaims)f(all)i(copyright)e -(interest)h(in)h(the)240 848 y(program)f(`Gnomovision')e(\(a)j(program) -f(to)h(direct)f(compilers)g(to)h(make)f(passes)240 952 -y(at)h(assemblers\))e(written)h(by)h(James)f(Hacker.)240 -1159 y Fh(signature)30 b(of)g(T)m(y)h(Co)s(on)p Fk(,)47 -b(1)g(April)g(1989)240 1263 y(Ty)g(Coon,)g(President)e(of)i(Vice)125 -1537 y Fm(That's)30 b(all)f(there)i(is)e(to)i(it!)p eop +6 7 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052 +b(6)150 299 y Fr(Ho)l(w)46 b(to)f(Apply)f(These)h(T)-11 +b(erms)45 b(to)g(Y)-11 b(our)44 b(New)i(Programs)275 +503 y Fs(If)38 b(y)m(ou)i(dev)m(elop)f(a)g(new)g(program,)j(and)c(y)m +(ou)i(w)m(an)m(t)g(it)e(to)i(b)s(e)f(of)g(the)h(greatest)h(p)s(ossible) +36 b(use)j(to)150 612 y(the)i(public,)g(the)h(b)s(est)e(w)m(a)m(y)i(to) +g(ac)m(hiev)m(e)g(this)e(is)g(to)i(mak)m(e)g(it)f(free)g(soft)m(w)m +(are)h(whic)m(h)e(ev)m(ery)m(one)j(can)150 722 y(redistribute)28 +b(and)i(c)m(hange)h(under)e(these)i(terms.)275 868 y(T)-8 +b(o)29 b(do)h(so,)g(attac)m(h)h(the)f(follo)m(wing)e(notices)h(to)i +(the)e(program.)40 b(It)30 b(is)f(safest)h(to)g(attac)m(h)h(them)f(to)g +(the)150 978 y(start)j(of)g(eac)m(h)h(source)e(\014le)g(to)h(most)g +(e\013ectiv)m(ely)h(con)m(v)m(ey)g(the)e(exclusion)g(of)g(w)m(arran)m +(t)m(y;)j(and)d(eac)m(h)i(\014le)150 1087 y(should)28 +b(ha)m(v)m(e)k(at)f(least)g(the)f(\\cop)m(yrigh)m(t")i(line)d(and)g(a)i +(p)s(oin)m(ter)f(to)h(where)f(the)g(full)e(notice)j(is)e(found.)390 +1227 y Fo(one)i(line)d(to)j(giv)m(e)g(the)g(program's)f(name)h(and)e +(an)i(idea)f(of)g(what)g(it)g(do)s(es.)390 1331 y Fn(Copyright)45 +b(\(C\))i Fo(y)m(ear)103 b(name)30 b(of)h(author)390 +1539 y Fn(This)47 b(program)e(is)j(free)e(software;)g(you)g(can)h +(redistribute)e(it)i(and/or)390 1642 y(modify)f(it)h(under)g(the)g +(terms)f(of)h(the)g(GNU)g(General)f(Public)g(License)390 +1746 y(as)h(published)e(by)j(the)f(Free)f(Software)g(Foundation;)e +(either)j(version)e(2)390 1850 y(of)i(the)g(License,)f(or)h(\(at)g +(your)f(option\))g(any)h(later)f(version.)390 2057 y(This)h(program)e +(is)j(distributed)c(in)k(the)e(hope)h(that)g(it)g(will)g(be)g(useful,) +390 2161 y(but)g(WITHOUT)f(ANY)h(WARRANTY;)e(without)h(even)g(the)h +(implied)f(warranty)g(of)390 2265 y(MERCHANTABILITY)e(or)j(FITNESS)f +(FOR)h(A)g(PARTICULAR)e(PURPOSE.)93 b(See)47 b(the)390 +2369 y(GNU)g(General)f(Public)g(License)g(for)h(more)f(details.)390 +2576 y(You)h(should)f(have)h(received)e(a)j(copy)e(of)h(the)g(GNU)g +(General)f(Public)g(License)390 2680 y(along)g(with)h(this)g(program;)e +(if)i(not,)g(write)f(to)i(the)e(Free)h(Software)390 2784 +y(Foundation,)e(Inc.,)h(59)h(Temple)f(Place,)g(Suite)h(330,)f(Boston,)g +(MA)h(02111-1307,)e(USA.)275 2930 y Fs(Also)30 b(add)f(information)g +(on)h(ho)m(w)h(to)g(con)m(tact)i(y)m(ou)d(b)m(y)g(electronic)h(and)f +(pap)s(er)f(mail.)275 3076 y(If)f(the)g(program)h(is)e(in)m(teractiv)m +(e,)j(mak)m(e)g(it)e(output)g(a)h(short)f(notice)h(lik)m(e)f(this)f +(when)h(it)g(starts)h(in)e(an)150 3185 y(in)m(teractiv)m(e)k(mo)s(de:) +390 3325 y Fn(Gnomovision)45 b(version)h(69,)g(Copyright)g(\(C\))h +Fo(y)m(ear)103 b(name)30 b(of)g(author)390 3429 y Fn(Gnomovision)45 +b(comes)h(with)h(ABSOLUTELY)e(NO)i(WARRANTY;)e(for)i(details)390 +3533 y(type)g(`show)f(w'.)95 b(This)46 b(is)h(free)g(software,)e(and)i +(you)g(are)g(welcome)390 3637 y(to)g(redistribute)e(it)i(under)f +(certain)g(conditions;)f(type)h(`show)h(c')390 3740 y(for)g(details.) +275 3886 y Fs(The)27 b(h)m(yp)s(othetical)g(commands)h(`)p +Fn(show)h(w)p Fs(')f(and)f(`)p Fn(show)j(c)p Fs(')d(should)f(sho)m(w)i +(the)g(appropriate)f(parts)h(of)150 3996 y(the)38 b(General)g(Public)d +(License.)63 b(Of)37 b(course,)j(the)f(commands)e(y)m(ou)h(use)g(ma)m +(y)g(b)s(e)f(called)g(something)150 4106 y(other)25 b(than)f(`)p +Fn(show)29 b(w)p Fs(')c(and)f(`)p Fn(show)29 b(c)p Fs(';)e(they)d +(could)g(ev)m(en)h(b)s(e)f(mouse-clic)m(ks)g(or)h(men)m(u)f +(items|whatev)m(er)150 4215 y(suits)29 b(y)m(our)h(program.)275 +4361 y(Y)-8 b(ou)28 b(should)e(also)i(get)h(y)m(our)f(emplo)m(y)m(er)g +(\(if)f(y)m(ou)h(w)m(ork)g(as)h(a)f(programmer\))g(or)g(y)m(our)f(sc)m +(ho)s(ol,)i(if)e(an)m(y)-8 b(,)150 4471 y(to)34 b(sign)f(a)g(\\cop)m +(yrigh)m(t)i(disclaimer")c(for)j(the)f(program,)h(if)f(necessary)-8 +b(.)51 b(Here)34 b(is)e(a)i(sample;)g(alter)g(the)150 +4580 y(names:)390 4720 y Fn(Yoyodyne,)45 b(Inc.,)i(hereby)f(disclaims)f +(all)i(copyright)390 4824 y(interest)f(in)h(the)g(program)e +(`Gnomovision')390 4928 y(\(which)h(makes)g(passes)h(at)g(compilers\))e +(written)390 5032 y(by)i(James)g(Hacker.)390 5239 y Fo(signature)30 +b(of)g(T)m(y)h(Co)s(on)p Fn(,)47 b(1)g(April)g(1989)390 +5343 y(Ty)g(Coon,)g(President)e(of)i(Vice)p eop %%Page: 7 9 -7 8 bop 0 -116 a Fm(Con)m(tributors)29 b(to)i(GNU)g Fk(gperf)e -Fm(Utilit)m(y)2437 b(7)0 366 y Fj(Con)l(tributors)28 -b(to)h(GNU)i Fg(gperf)e Fj(Utilit)l(y)75 740 y Fl(\017)60 -b Fm(The)36 b(GNU)h Fk(gperf)e Fm(p)s(erfect)h(hash)f(function)g -(generator)j(utilit)m(y)c(w)m(as)j(originally)d(written)h(in)g(GNU)i(C) -p Fk(++)180 865 y Fm(b)m(y)h(Douglas)h(C.)f(Sc)m(hmidt.)62 -b(It)39 b(is)e(no)m(w)h(also)g(a)m(v)-5 b(ailable)38 -b(in)f(a)h(highly-p)s(ortable)e(\\old-st)m(yle")i(C)g(v)m(ersion.)180 -989 y(The)g(general)h(idea)g(for)f(the)h(p)s(erfect)g(hash)f(function)g -(generator)i(w)m(as)f(inspired)d(b)m(y)i(Keith)g(Bostic's)i(al-)180 -1114 y(gorithm)e(written)g(in)g(C,)g(and)h(distributed)c(to)40 -b(net.sources)f(around)f(1984.)68 b(The)39 b(curren)m(t)f(program)h(is) -180 1238 y(a)34 b(hea)m(vily)f(mo)s(di\014ed,)f(enhanced,)i(and)f -(extended)g(implemen)m(tation)f(of)i(Keith's)f(basic)g(idea,)h(created) -g(at)180 1363 y(the)41 b(Univ)m(ersit)m(y)g(of)g(California,)h(Irvine.) -72 b(Bugs,)45 b(patc)m(hes,)g(and)c(suggestions)g(should)e(b)s(e)i(rep) -s(orted)f(to)180 1487 y Fk()24 -b Fm(and)30 b Fk()p Fm(.)75 1637 -y Fl(\017)60 b Fm(Sp)s(ecial)24 b(thanks)i(is)f(extended)i(to)g(Mic)m -(hael)f(Tiemann)e(and)i(Doug)h(Lea,)h(for)e(pro)m(viding)e(a)j(useful)d -(compiler,)180 1761 y(and)30 b(for)g(giving)f(me)i(a)f(forum)g(to)h -(exhibit)d(m)m(y)j(creation.)180 1911 y(In)23 b(addition,)h(Adam)f(de)h -(Bo)s(or)g(and)f(Nels)h(Olson)e(pro)m(vided)g(man)m(y)i(tips)f(and)g -(insigh)m(ts)f(that)j(greatly)f(help)s(ed)180 2035 y(impro)m(v)m(e)30 -b(the)h(qualit)m(y)e(and)h(functionalit)m(y)f(of)h Fk(gperf)p -Fm(.)p eop +7 8 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052 +b(7)275 299 y(This)19 b(General)h(Public)f(License)h(do)s(es)h(not)g(p) +s(ermit)e(incorp)s(orating)g(y)m(our)i(program)f(in)m(to)h(proprietary) +150 408 y(programs.)38 b(If)22 b(y)m(our)h(program)f(is)g(a)h +(subroutine)e(library)-8 b(,)23 b(y)m(ou)g(ma)m(y)g(consider)f(it)g +(more)h(useful)e(to)j(p)s(ermit)150 518 y(linking)33 +b(proprietary)i(applications)g(with)g(the)h(library)-8 +b(.)57 b(If)35 b(this)h(is)f(what)h(y)m(ou)h(w)m(an)m(t)g(to)g(do,)h +(use)e(the)150 628 y(GNU)31 b(Library)e(General)h(Public)e(License)i +(instead)f(of)i(this)e(License.)p eop %%Page: 8 10 -8 9 bop 0 -116 a Fm(8)2965 b(User's)31 b(Guide)e(to)i -Fk(gperf)p eop +8 9 bop 150 -116 a Fs(Con)m(tributors)29 b(to)i(GNU)g +Fn(gperf)e Fs(Utilit)m(y)2137 b(8)150 299 y Fp(Con)l(tributors)51 +b(to)i(GNU)h Fm(gperf)f Fp(Utilit)l(y)225 533 y Fq(\017)60 +b Fs(The)27 b(GNU)i Fn(gperf)d Fs(p)s(erfect)i(hash)e(function)h +(generator)i(utilit)m(y)d(w)m(as)i(originally)d(written)i(in)f(GNU)330 +643 y(C)p Fn(++)34 b Fs(b)m(y)g(Douglas)h(C.)g(Sc)m(hmidt.)52 +b(It)34 b(is)g(no)m(w)h(also)f(a)m(v)-5 b(ailable)34 +b(in)f(a)i(highly-p)s(ortable)d(\\old-st)m(yle")330 752 +y(C)37 b(v)m(ersion.)60 b(The)37 b(general)g(idea)f(for)h(the)g(p)s +(erfect)g(hash)g(function)e(generator)k(w)m(as)e(inspired)d(b)m(y)330 +862 y(Keith)42 b(Bostic's)h(algorithm)f(written)f(in)h(C,)g(and)g +(distributed)e(to)j(net.sources)g(around)f(1984.)330 +971 y(The)37 b(curren)m(t)g(program)g(is)f(a)i(hea)m(vily)e(mo)s +(di\014ed,)h(enhanced,)i(and)e(extended)g(implemen)m(tation)330 +1081 y(of)h(Keith's)f(basic)h(idea,)h(created)g(at)g(the)f(Univ)m +(ersit)m(y)g(of)g(California,)f(Irvine.)63 b(Bugs,)40 +b(patc)m(hes,)330 1191 y(and)32 b(suggestions)h(should)e(b)s(e)i(rep)s +(orted)f(to)i(b)s(oth)e Fn()27 +b Fs(and)32 b Fn()p +Fs(.)225 1435 y Fq(\017)60 b Fs(Sp)s(ecial)31 b(thanks)i(is)f(extended) +h(to)h(Mic)m(hael)f(Tiemann)f(and)h(Doug)h(Lea,)g(for)f(pro)m(viding)e +(a)j(useful)330 1544 y(compiler,)29 b(and)h(for)g(giving)f(me)i(a)g +(forum)e(to)i(exhibit)e(m)m(y)h(creation.)330 1679 y(In)22 +b(addition,)g(Adam)h(de)f(Bo)s(or)h(and)f(Nels)h(Olson)e(pro)m(vided)g +(man)m(y)i(tips)e(and)h(insigh)m(ts)f(that)i(greatly)330 +1788 y(help)s(ed)28 b(impro)m(v)m(e)j(the)f(qualit)m(y)g(and)g +(functionalit)m(y)e(of)j Fn(gperf)p Fs(.)225 1923 y Fq(\017)60 +b Fs(A)27 b(testsuite)h(w)m(as)f(added)g(b)m(y)g(Bruno)g(Haible.)38 +b(He)28 b(also)f(rewrote)h(the)f(output)g(routines)f(for)h(b)s(etter) +330 2032 y(reliabilit)m(y)-8 b(.)p eop %%Page: 9 11 -9 10 bop 0 -116 a Fm(Chapter)30 b(1:)41 b(In)m(tro)s(duction)2891 -b(9)0 366 y Fj(1)80 b(In)l(tro)t(duction)125 740 y Fk(gperf)36 -b Fm(is)g(a)j(p)s(erfect)e(hash)g(function)f(generator)j(written)e(in)f -(C)p Fk(++)p Fm(.)62 b(It)38 b(transforms)f(an)g Fh(n)g -Fm(elemen)m(t)h(user-)0 865 y(sp)s(eci\014ed)28 b(k)m(eyw)m(ord)h(set)h -Fh(W)41 b Fm(in)m(to)29 b(a)h(p)s(erfect)f(hash)g(function)f -Fh(F)p Fm(.)h Fh(F)36 b Fm(uniquely)27 b(maps)i(k)m(eyw)m(ords)g(in)f -Fh(W)41 b Fm(on)m(to)31 b(the)0 989 y(range)i(0..)p Fh(k)p -Fm(,)h(where)d Fh(k)i Fk(>)p Fh(=)e(n)p Fm(.)46 b(If)32 -b Fh(k)g(=)g(n)g Fm(then)g Fh(F)39 b Fm(is)31 b(a)i Fh(minimal)g -Fm(p)s(erfect)f(hash)g(function.)45 b Fk(gperf)31 b Fm(generates)j(a)0 -1114 y(0..)p Fh(k)41 b Fm(elemen)m(t)35 b(static)g(lo)s(okup)e(table)i -(and)f(a)h(pair)e(of)i(C)f(functions.)52 b(These)34 b(functions)f -(determine)h(whether)g(a)0 1238 y(giv)m(en)c(c)m(haracter)i(string)e -Fh(s)k Fm(o)s(ccurs)c(in)f Fh(W)p Fm(,)i(using)e(at)i(most)f(one)h -(prob)s(e)e(in)m(to)i(the)f(lo)s(okup)f(table.)125 1512 -y Fk(gperf)i Fm(curren)m(tly)i(generates)h(the)g(reserv)m(ed)f(k)m(eyw) -m(ord)h(recognizer)f(for)g(lexical)g(analyzers)g(in)f(sev)m(eral)h -(pro-)0 1637 y(duction)28 b(and)g(researc)m(h)i(compilers)e(and)g -(language)i(pro)s(cessing)d(to)s(ols,)j(including)25 -b(GNU)30 b(C,)f(GNU)h(C)p Fk(++)p Fm(,)e(GNU)0 1761 y(P)m(ascal,)39 -b(GNU)e(Mo)s(dula)f(3,)j(and)d(GNU)h(inden)m(t.)58 b(Complete)37 -b(C)p Fk(++)e Fm(source)i(co)s(de)g(for)f Fk(gperf)g -Fm(is)f(a)m(v)-5 b(ailable)36 b(via)0 1886 y(anon)m(ymous)d(ftp)h(from) -f Fk(ics.uci.edu)d Fm(and)j Fk(ftp.santafe.edu)p Fm(.)46 -b Fk(gperf)33 b Fm(w)m(as)g(also)h(distributed)d(along)i(with)0 -2010 y(the)h(GNU)g(libg)p Fk(++)d Fm(library)h(for)h(sev)m(eral)h(y)m -(ears.)51 b(A)34 b(highly)d(p)s(ortable,)j(functionally)d(equiv)-5 -b(alen)m(t)33 b(K&R)g(C)g(v)m(er-)0 2135 y(sion)39 b(of)h -Fk(gperf)e Fm(is)h(arc)m(hiv)m(ed)h(in)f(comp.sources.unix,)i(v)m -(olume)f(20.)70 b(Finally)-8 b(,)41 b(a)f(pap)s(er)f(describing)e -Fk(gperf)p Fm('s)0 2259 y(design)f(and)g(implemen)m(tation)g(in)f -(greater)j(detail)e(is)g(a)m(v)-5 b(ailable)36 b(in)g(the)h(Second)f -(USENIX)h(C)p Fk(++)f Fm(Conference)0 2384 y(pro)s(ceedings.)p -eop +9 10 bop 150 -116 a Fs(Chapter)30 b(1:)41 b(In)m(tro)s(duction)2591 +b(9)150 299 y Fp(1)80 b(In)l(tro)t(duction)275 533 y +Fn(gperf)31 b Fs(is)i(a)g(p)s(erfect)h(hash)e(function)g(generator)j +(written)d(in)g(C)p Fn(++)p Fs(.)49 b(It)33 b(transforms)g(an)g +Fo(n)f Fs(elemen)m(t)150 643 y(user-sp)s(eci\014ed)j(k)m(eyw)m(ord)j +(set)g Fo(W)49 b Fs(in)m(to)38 b(a)f(p)s(erfect)h(hash)e(function)g +Fo(F)p Fs(.)i Fo(F)44 b Fs(uniquely)35 b(maps)i(k)m(eyw)m(ords)150 +752 y(in)k Fo(W)54 b Fs(on)m(to)43 b(the)f(range)h(0..)p +Fo(k)p Fs(,)j(where)c Fo(k)47 b Fn(>)p Fs(=)42 b Fo(n)p +Fs(.)75 b(If)42 b Fo(k)47 b Fs(=)42 b Fo(n)g Fs(then)f +Fo(F)49 b Fs(is)41 b(a)i Fl(minimal)53 b Fs(p)s(erfect)42 +b(hash)150 862 y(function.)67 b Fn(gperf)39 b Fs(generates)i(a)f(0..)p +Fo(k)46 b Fs(elemen)m(t)40 b(static)g(lo)s(okup)f(table)g(and)g(a)i +(pair)d(of)i(C)f(functions.)150 971 y(These)34 b(functions)f(determine) +h(whether)f(a)i(giv)m(en)f(c)m(haracter)i(string)e Fo(s)k +Fs(o)s(ccurs)c(in)f Fo(W)p Fs(,)i(using)d(at)k(most)150 +1081 y(one)31 b(prob)s(e)e(in)m(to)h(the)h(lo)s(okup)e(table.)275 +1215 y Fn(gperf)22 b Fs(curren)m(tly)g(generates)k(the)d(reserv)m(ed)h +(k)m(eyw)m(ord)g(recognizer)h(for)e(lexical)g(analyzers)g(in)g(sev)m +(eral)150 1325 y(pro)s(duction)29 b(and)h(researc)m(h)h(compilers)e +(and)i(language)g(pro)s(cessing)e(to)s(ols,)i(including)c(GNU)32 +b(C,)e(GNU)150 1435 y(C)p Fn(++)p Fs(,)49 b(GNU)d(P)m(ascal,)k(GNU)c +(Mo)s(dula)e(3,)50 b(and)45 b(GNU)h(inden)m(t.)85 b(Complete)45 +b(C)p Fn(++)g Fs(source)g(co)s(de)h(for)150 1544 y Fn(gperf)25 +b Fs(is)g(a)m(v)-5 b(ailable)26 b(via)g(anon)m(ymous)g(ftp)g(from)g +Fn(ftp://ftp.gnu.org/pub/gn)o(u/gp)o(erf/)o Fs(.)34 b(A)26 +b(pap)s(er)150 1654 y(describing)33 b Fn(gperf)p Fs('s)i(design)f(and)h +(implemen)m(tation)f(in)h(greater)i(detail)d(is)h(a)m(v)-5 +b(ailable)35 b(in)f(the)i(Second)150 1763 y(USENIX)30 +b(C)p Fn(++)f Fs(Conference)i(pro)s(ceedings.)p eop %%Page: 10 12 -10 11 bop 0 -116 a Fm(10)2920 b(User's)31 b(Guide)e(to)i -Fk(gperf)p eop +10 11 bop 150 -116 a Fs(Chapter)30 b(2:)41 b(Static)31 +b(searc)m(h)g(structures)e(and)h(GNU)h Fn(gperf)1425 +b Fs(10)150 299 y Fp(2)80 b(Static)54 b(searc)l(h)f(structures)e(and)j +(GNU)f Fm(gperf)275 533 y Fs(A)24 b Fo(static)h(searc)m(h)g(structure)k +Fs(is)24 b(an)g(Abstract)h(Data)i(T)m(yp)s(e)c(with)h(certain)g +(fundamen)m(tal)f(op)s(erations,)150 643 y(e.g.,)32 b +Fl(initialize)p Fs(,)g Fl(insert)p Fs(,)f(and)f Fl(r)-5 +b(etrieve)p Fs(.)42 b(Conceptually)-8 b(,)30 b(all)g(insertions)f(o)s +(ccur)h(b)s(efore)h(an)m(y)g(retriev)-5 b(als.)150 752 +y(In)37 b(practice,)k Fn(gperf)c Fs(generates)j(a)e Fn(static)f +Fs(arra)m(y)h(con)m(taining)g(searc)m(h)h(set)g(k)m(eyw)m(ords)f(and)g +(an)m(y)g(as-)150 862 y(so)s(ciated)33 b(attributes)g(sp)s(eci\014ed)e +(b)m(y)i(the)h(user.)48 b(Th)m(us,)33 b(there)g(is)f(essen)m(tially)h +(no)g(execution-time)g(cost)150 971 y(for)k(the)g(insertions.)58 +b(It)37 b(is)f(a)h(useful)f(data)h(structure)g(for)f(represen)m(ting)g +Fl(static)k(se)-5 b(ar)g(ch)40 b(sets)p Fs(.)61 b(Static)150 +1081 y(searc)m(h)33 b(sets)g(o)s(ccur)f(frequen)m(tly)g(in)f(soft)m(w)m +(are)j(system)f(applications.)45 b(T)m(ypical)32 b(static)h(searc)m(h)g +(sets)g(in-)150 1191 y(clude)27 b(compiler)g(reserv)m(ed)i(w)m(ords,)f +(assem)m(bler)g(instruction)e(op)s(co)s(des,)j(and)f(built-in)d(shell)i +(in)m(terpreter)150 1300 y(commands.)39 b(Searc)m(h)28 +b(set)g(mem)m(b)s(ers,)f(called)g Fo(k)m(eyw)m(ords)p +Fs(,)h(are)g(inserted)e(in)m(to)h(the)h(structure)f(only)f(once,)150 +1410 y(usually)i(during)g(program)i(initialization,)e(and)i(are)g(not)h +(generally)f(mo)s(di\014ed)e(at)j(run-time.)275 1544 +y(Numerous)c(static)h(searc)m(h)h(structure)e(implemen)m(tations)f +(exist,)j(e.g.,)g(arra)m(ys,)g(link)m(ed)e(lists,)g(binary)150 +1654 y(searc)m(h)45 b(trees,)j(digital)42 b(searc)m(h)j(tries,)i(and)c +(hash)g(tables.)82 b(Di\013eren)m(t)44 b(approac)m(hes)h(o\013er)f +(trade-o\013s)150 1763 y(b)s(et)m(w)m(een)e(space)h(utilization)c(and)j +(searc)m(h)g(time)f(e\016ciency)-8 b(.)76 b(F)-8 b(or)42 +b(example,)j(an)c Fo(n)h Fs(elemen)m(t)g(sorted)150 1873 +y(arra)m(y)e(is)f(space)i(e\016cien)m(t,)h(though)e(the)g(a)m(v)m +(erage-case)k(time)39 b(complexit)m(y)h(for)g(retriev)-5 +b(al)39 b(op)s(erations)150 1983 y(using)30 b(binary)f(searc)m(h)j(is)e +(prop)s(ortional)f(to)i(log)h Fo(n)p Fs(.)42 b(Con)m(v)m(ersely)-8 +b(,)32 b(hash)e(table)h(implemen)m(tations)f(often)150 +2092 y(lo)s(cate)c(a)g(table)f(en)m(try)h(in)e(constan)m(t)j(time,)f +(but)f(t)m(ypically)f(imp)s(ose)g(additional)g(memory)h(o)m(v)m(erhead) +i(and)150 2202 y(exhibit)i(p)s(o)s(or)g(w)m(orst)i(case)g(p)s +(erformance.)275 2336 y Fl(Minimal)26 b(p)-5 b(erfe)g(ct)28 +b(hash)f(functions)32 b Fs(pro)m(vide)23 b(an)g(optimal)g(solution)f +(for)h(a)h(particular)e(class)i(of)f(static)150 2446 +y(searc)m(h)31 b(sets.)41 b(A)31 b(minimal)c(p)s(erfect)j(hash)g +(function)f(is)h(de\014ned)f(b)m(y)h(t)m(w)m(o)i(prop)s(erties:)225 +2580 y Fq(\017)60 b Fs(It)34 b(allo)m(ws)g(k)m(eyw)m(ord)h(recognition) +f(in)f(a)i(static)g(searc)m(h)g(set)g(using)e(at)i(most)g +Fl(one)41 b Fs(prob)s(e)33 b(in)m(to)i(the)330 2690 y(hash)30 +b(table.)40 b(This)29 b(represen)m(ts)h(the)h(\\p)s(erfect")g(prop)s +(ert)m(y)-8 b(.)225 2824 y Fq(\017)60 b Fs(The)35 b(actual)i(memory)f +(allo)s(cated)g(to)g(store)h(the)f(k)m(eyw)m(ords)h(is)e(precisely)f +(large)i(enough)g(for)g(the)330 2934 y(k)m(eyw)m(ord)31 +b(set,)g(and)f Fl(no)j(lar)-5 b(ger)p Fs(.)42 b(This)28 +b(is)i(the)g(\\minimal")f(prop)s(ert)m(y)-8 b(.)275 3093 +y(F)g(or)38 b(most)g(applications)e(it)h(is)g(far)g(easier)h(to)g +(generate)h Fl(p)-5 b(erfe)g(ct)47 b Fs(hash)37 b(functions)f(than)i +Fl(minimal)150 3203 y(p)-5 b(erfe)g(ct)47 b Fs(hash)36 +b(functions.)59 b(Moreo)m(v)m(er,)41 b(non-minimal)34 +b(p)s(erfect)j(hash)f(functions)f(frequen)m(tly)i(execute)150 +3313 y(faster)44 b(than)g(minimal)d(ones)j(in)e(practice.)82 +b(This)42 b(phenomena)h(o)s(ccurs)g(since)g(searc)m(hing)h(a)g(sparse) +150 3422 y(k)m(eyw)m(ord)34 b(table)f(increases)g(the)h(probabilit)m(y) +c(of)k(lo)s(cating)f(a)g(\\n)m(ull")g(en)m(try)-8 b(,)35 +b(thereb)m(y)e(reducing)f(string)150 3532 y(comparisons.)55 +b Fn(gperf)p Fs('s)34 b(default)g(b)s(eha)m(vior)g(generates)j +Fl(ne)-5 b(ar-minimal)47 b Fs(p)s(erfect)35 b(hash)f(functions)g(for) +150 3641 y(k)m(eyw)m(ord)40 b(sets.)68 b(Ho)m(w)m(ev)m(er,)44 +b Fn(gperf)39 b Fs(pro)m(vides)f(man)m(y)i(options)e(that)i(p)s(ermit)e +(user)h(con)m(trol)h(o)m(v)m(er)h(the)150 3751 y(degree)31 +b(of)g(minimalit)m(y)c(and)j(p)s(erfection.)275 3885 +y(Static)36 b(searc)m(h)g(sets)g(often)g(exhibit)e(relativ)m(e)i +(stabilit)m(y)e(o)m(v)m(er)j(time.)57 b(F)-8 b(or)36 +b(example,)h(Ada's)f(63)h(re-)150 3995 y(serv)m(ed)31 +b(w)m(ords)f(ha)m(v)m(e)i(remained)d(constan)m(t)j(for)f(nearly)f(a)h +(decade.)42 b(It)31 b(is)f(therefore)h(frequen)m(tly)f(w)m(orth-)150 +4105 y(while)20 b(to)j(exp)s(end)e(concerted)i(e\013ort)g(building)18 +b(an)k(optimal)g(searc)m(h)g(structure)g Fl(onc)-5 b(e)p +Fs(,)25 b(if)c(it)g(subsequen)m(tly)150 4214 y(receiv)m(es)j(hea)m(vy)g +(use)e(m)m(ultiple)f(times.)38 b Fn(gperf)22 b Fs(remo)m(v)m(es)i(the)f +(drudgery)f(asso)s(ciated)i(with)d(constructing)150 4324 +y(time-)37 b(and)g(space-e\016cien)m(t)i(searc)m(h)e(structures)g(b)m +(y)g(hand.)61 b(It)37 b(has)g(pro)m(v)m(en)h(a)f(useful)f(and)g +(practical)150 4433 y(to)s(ol)42 b(for)g(serious)f(programming)g(pro)5 +b(jects.)76 b(Output)41 b(from)h Fn(gperf)e Fs(is)h(curren)m(tly)g +(used)h(in)f(sev)m(eral)150 4543 y(pro)s(duction)32 b(and)h(researc)m +(h)h(compilers,)f(including)d(GNU)k(C,)g(GNU)g(C)p Fn(++)p +Fs(,)g(GNU)g(P)m(ascal,)h(and)e(GNU)150 4653 y(Mo)s(dula)27 +b(3.)40 b(The)28 b(latter)h(t)m(w)m(o)g(compilers)e(are)h(not)h(y)m(et) +g(part)f(of)g(the)h(o\016cial)e(GNU)i(distribution.)36 +b(Eac)m(h)150 4762 y(compiler)h(utilizes)f Fn(gperf)h +Fs(to)i(automatically)g(generate)h(static)f(searc)m(h)g(structures)e +(that)i(e\016cien)m(tly)150 4872 y(iden)m(tify)29 b(their)g(resp)s +(ectiv)m(e)i(reserv)m(ed)f(k)m(eyw)m(ords.)p eop %%Page: 11 13 -11 12 bop 0 -116 a Fm(Chapter)30 b(2:)41 b(Static)31 -b(searc)m(h)g(structures)e(and)h(GNU)h Fk(gperf)1725 -b Fm(11)0 366 y Fj(2)80 b(Static)31 b(searc)l(h)e(structures)e(and)k -(GNU)f Fg(gperf)125 768 y Fm(A)j Fh(static)h(searc)m(h)f(structure)38 -b Fm(is)32 b(an)i(Abstract)f(Data)i(T)m(yp)s(e)e(with)f(certain)h -(fundamen)m(tal)f(op)s(erations,)h(e.g.,)0 892 y Fh(initialize)p -Fm(,)c Fh(insert)p Fm(,)h(and)g Fh(retriev)m(e)p Fm(.)43 -b(Conceptually)-8 b(,)30 b(all)g(insertions)f(o)s(ccur)i(b)s(efore)f -(an)m(y)i(retriev)-5 b(als.)41 b(In)30 b(practice,)0 -1017 y Fk(gperf)44 b Fm(generates)i(a)f Fk(static)f Fm(arra)m(y)h(con)m -(taining)g(searc)m(h)g(set)h(k)m(eyw)m(ords)f(and)g(an)m(y)g(asso)s -(ciated)g(attributes)0 1142 y(sp)s(eci\014ed)38 b(b)m(y)i(the)f(user.) -68 b(Th)m(us,)42 b(there)d(is)g(essen)m(tially)g(no)g(execution-time)h -(cost)h(for)f(the)f(insertions.)67 b(It)40 b(is)0 1266 -y(a)e(useful)d(data)j(structure)f(for)g(represen)m(ting)f -Fh(static)i(searc)m(h)g(sets)p Fm(.)62 b(Static)37 b(searc)m(h)h(sets)g -(o)s(ccur)f(frequen)m(tly)f(in)0 1391 y(soft)m(w)m(are)28 -b(system)g(applications.)37 b(T)m(ypical)26 b(static)i(searc)m(h)f -(sets)h(include)c(compiler)i(reserv)m(ed)h(w)m(ords,)g(assem)m(bler)0 -1515 y(instruction)22 b(op)s(co)s(des,)j(and)e(built-in)e(shell)h(in)m -(terpreter)h(commands.)38 b(Searc)m(h)24 b(set)h(mem)m(b)s(ers,)f -(called)f Fh(k)m(eyw)m(ords)p Fm(,)0 1640 y(are)f(inserted)e(in)m(to)h -(the)g(structure)g(only)g(once,)j(usually)19 b(during)g(program)i -(initialization,)f(and)h(are)g(not)h(generally)0 1764 -y(mo)s(di\014ed)28 b(at)j(run-time.)125 2044 y(Numerous)e(static)i -(searc)m(h)g(structure)f(implemen)m(tations)f(exist,)i(e.g.,)h(arra)m -(ys,)f(link)m(ed)d(lists,)i(binary)e(searc)m(h)0 2168 -y(trees,)45 b(digital)c(searc)m(h)h(tries,)i(and)e(hash)f(tables.)74 -b(Di\013eren)m(t)43 b(approac)m(hes)f(o\013er)g(trade-o\013s)h(b)s(et)m -(w)m(een)f(space)0 2293 y(utilization)36 b(and)h(searc)m(h)i(time)e -(e\016ciency)-8 b(.)64 b(F)-8 b(or)39 b(example,)h(an)e -Fh(n)f Fm(elemen)m(t)h(sorted)g(arra)m(y)h(is)e(space)h(e\016cien)m(t,) -0 2417 y(though)24 b(the)g(a)m(v)m(erage-case)k(time)c(complexit)m(y)g -(for)g(retriev)-5 b(al)24 b(op)s(erations)f(using)g(binary)f(searc)m(h) -j(is)e(prop)s(ortional)0 2542 y(to)34 b(log)f Fh(n)p -Fm(.)48 b(Con)m(v)m(ersely)-8 b(,)34 b(hash)f(table)g(implemen)m -(tations)e(often)j(lo)s(cate)f(a)h(table)f(en)m(try)g(in)f(constan)m(t) -i(time,)g(but)0 2666 y(t)m(ypically)29 b(imp)s(ose)g(additional)g -(memory)h(o)m(v)m(erhead)h(and)f(exhibit)f(p)s(o)s(or)g(w)m(orst)i -(case)g(p)s(erformance.)125 2946 y Fh(Minimal)23 b(p)s(erfect)i(hash)g -(functions)i Fm(pro)m(vide)e(an)g(optimal)g(solution)f(for)h(a)h -(particular)d(class)j(of)f(static)h(searc)m(h)0 3071 -y(sets.)41 b(A)31 b(minimal)c(p)s(erfect)j(hash)g(function)f(is)h -(de\014ned)f(b)m(y)h(t)m(w)m(o)i(prop)s(erties:)75 3350 -y Fl(\017)60 b Fm(It)25 b(allo)m(ws)e(k)m(eyw)m(ord)i(recognition)f(in) -g(a)g(static)i(searc)m(h)f(set)g(using)e(at)i(most)g -Fh(one)30 b Fm(prob)s(e)23 b(in)m(to)h(the)h(hash)f(table.)180 -3475 y(This)29 b(represen)m(ts)h(the)g(\\p)s(erfect")i(prop)s(ert)m(y) --8 b(.)75 3630 y Fl(\017)60 b Fm(The)31 b(actual)h(memory)f(allo)s -(cated)g(to)h(store)g(the)g(k)m(eyw)m(ords)g(is)e(precisely)g(large)i -(enough)f(for)g(the)g(k)m(eyw)m(ord)180 3754 y(set,)g(and)f -Fh(no)g(larger)p Fm(.)41 b(This)28 b(is)i(the)g(\\minimal")f(prop)s -(ert)m(y)-8 b(.)125 4064 y(F)g(or)22 b(most)g(applications)e(it)i(is)e -(far)i(easier)g(to)g(generate)h Fh(p)s(erfect)h Fm(hash)d(functions)g -(than)g Fh(minimal)e(p)s(erfect)24 b Fm(hash)0 4189 y(functions.)56 -b(Moreo)m(v)m(er,)40 b(non-minimal)33 b(p)s(erfect)j(hash)f(functions)f -(frequen)m(tly)h(execute)j(faster)e(than)g(minimal)0 -4313 y(ones)43 b(in)e(practice.)77 b(This)41 b(phenomena)h(o)s(ccurs)g -(since)g(searc)m(hing)g(a)h(sparse)f(k)m(eyw)m(ord)h(table)g(increases) -f(the)0 4438 y(probabilit)m(y)19 b(of)i(lo)s(cating)g(a)h(\\n)m(ull")e -(en)m(try)-8 b(,)25 b(thereb)m(y)c(reducing)f(string)g(comparisons.)37 -b Fk(gperf)p Fm('s)20 b(default)h(b)s(eha)m(vior)0 4562 -y(generates)38 b Fh(near-minimal)g Fm(p)s(erfect)f(hash)f(functions)f -(for)i(k)m(eyw)m(ord)g(sets.)60 b(Ho)m(w)m(ev)m(er,)41 -b Fk(gperf)35 b Fm(pro)m(vides)h(man)m(y)0 4687 y(options)30 -b(that)h(p)s(ermit)d(user)i(con)m(trol)h(o)m(v)m(er)h(the)e(degree)h -(of)g(minimalit)m(y)c(and)j(p)s(erfection.)125 4966 y(Static)23 -b(searc)m(h)g(sets)h(often)f(exhibit)e(relativ)m(e)i(stabilit)m(y)f(o)m -(v)m(er)i(time.)38 b(F)-8 b(or)24 b(example,)g(Ada's)f(63)h(reserv)m -(ed)f(w)m(ords)0 5091 y(ha)m(v)m(e)35 b(remained)d(constan)m(t)j(for)e -(nearly)f(a)i(decade.)51 b(It)33 b(is)g(therefore)g(frequen)m(tly)g(w)m -(orth)m(while)f(to)i(exp)s(end)e(con-)0 5215 y(certed)23 -b(e\013ort)g(building)18 b(an)k(optimal)f(searc)m(h)h(structure)g -Fh(once)p Fm(,)j(if)c(it)g(subsequen)m(tly)g(receiv)m(es)i(hea)m(vy)f -(use)g(m)m(ultiple)0 5340 y(times.)55 b Fk(gperf)34 b -Fm(remo)m(v)m(es)i(the)g(drudgery)d(asso)s(ciated)j(with)e -(constructing)h(time-)g(and)g(space-e\016cien)m(t)h(searc)m(h)p -eop +11 12 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 +b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(11)150 +299 y Fp(3)80 b(High-Lev)l(el)54 b(Description)f(of)h(GNU)g +Fm(gperf)275 604 y Fs(The)42 b(p)s(erfect)g(hash)g(function)f +(generator)j Fn(gperf)d Fs(reads)h(a)h(set)g(of)f(\\k)m(eyw)m(ords")i +(from)e(a)h Fo(k)m(ey\014le)150 714 y Fs(\(or)34 b(from)g(the)g +(standard)f(input)f(b)m(y)i(default\).)51 b(It)34 b(attempts)h(to)f +(deriv)m(e)g(a)g(p)s(erfect)g(hashing)e(function)150 +824 y(that)37 b(recognizes)h(a)f(mem)m(b)s(er)f(of)h(the)g +Fo(static)g(k)m(eyw)m(ord)g(set)j Fs(with)35 b(at)j(most)f(a)g(single)e +(prob)s(e)h(in)m(to)h(the)150 933 y(lo)s(okup)25 b(table.)40 +b(If)26 b Fn(gperf)f Fs(succeeds)i(in)f(generating)h(suc)m(h)f(a)h +(function)e(it)i(pro)s(duces)e(a)i(pair)f(of)g(C)h(source)150 +1043 y(co)s(de)39 b(routines)f(that)i(p)s(erform)d(hashing)h(and)g +(table)h(lo)s(okup)e(recognition.)67 b(All)37 b(generated)j(C)f(co)s +(de)150 1152 y(is)e(directed)g(to)h(the)g(standard)f(output.)62 +b(Command-line)36 b(options)h(describ)s(ed)e(b)s(elo)m(w)i(allo)m(w)g +(y)m(ou)h(to)150 1262 y(mo)s(dify)29 b(the)h(input)f(and)g(output)h +(format)h(to)g Fn(gperf)p Fs(.)275 1420 y(By)23 b(default,)h +Fn(gperf)e Fs(attempts)i(to)g(pro)s(duce)e(time-e\016cien)m(t)i(co)s +(de,)h(with)d(less)h(emphasis)e(on)i(e\016cien)m(t)150 +1530 y(space)31 b(utilization.)39 b(Ho)m(w)m(ev)m(er,)33 +b(sev)m(eral)d(options)g(exist)g(that)h(p)s(ermit)e(trading-o\013)h +(execution)h(time)f(for)150 1639 y(storage)j(space)f(and)g(vice)f(v)m +(ersa.)46 b(In)31 b(particular,)f(expanding)g(the)i(generated)h(table)f +(size)f(pro)s(duces)g(a)150 1749 y(sparse)26 b(searc)m(h)g(structure,)h +(generally)e(yielding)e(faster)k(searc)m(hes.)40 b(Con)m(v)m(ersely)-8 +b(,)27 b(y)m(ou)g(can)f(direct)f Fn(gperf)150 1859 y +Fs(to)c(utilize)e(a)i(C)f Fn(switch)f Fs(statemen)m(t)k(sc)m(heme)e +(that)g(minimizes)d(data)j(space)g(storage)h(size.)38 +b(F)-8 b(urthermore,)150 1968 y(using)39 b(a)h(C)g Fn(switch)e +Fs(ma)m(y)i(actually)g(sp)s(eed)f(up)g(the)h(k)m(eyw)m(ord)h(retriev)-5 +b(al)39 b(time)h(somewhat.)70 b(Actual)150 2078 y(results)29 +b(dep)s(end)g(on)h(y)m(our)g(C)g(compiler,)g(of)g(course.)275 +2236 y(In)h(general,)i Fn(gperf)e Fs(assigns)h(v)-5 b(alues)32 +b(to)h(the)g(c)m(haracters)g(it)f(is)g(using)f(for)h(hashing)f(un)m +(til)g(some)h(set)150 2346 y(of)42 b(v)-5 b(alues)42 +b(giv)m(es)g(eac)m(h)i(k)m(eyw)m(ord)e(a)h(unique)d(v)-5 +b(alue.)76 b(A)42 b(helpful)d(heuristic)i(is)g(that)i(the)f(larger)g +(the)150 2455 y(hash)36 b(v)-5 b(alue)36 b(range,)j(the)e(easier)g(it)f +(is)g(for)g Fn(gperf)f Fs(to)j(\014nd)d(and)h(generate)i(a)f(p)s +(erfect)g(hash)f(function.)150 2565 y(Exp)s(erimen)m(tation)29 +b(is)g(the)i(k)m(ey)g(to)g(getting)g(the)g(most)g(from)e +Fn(gperf)p Fs(.)150 2882 y Fr(3.1)68 b(Input)44 b(F)-11 +b(ormat)46 b(to)f Fk(gperf)275 3098 y Fs(Y)-8 b(ou)36 +b(can)h(con)m(trol)f(the)h(input)d(k)m(ey\014le)i(format)h(b)m(y)f(v)-5 +b(arying)35 b(certain)i(command-line)d(argumen)m(ts,)150 +3208 y(in)c(particular)g(the)i(`)p Fn(-t)p Fs(')f(option.)44 +b(The)31 b(input's)f(app)s(earance)i(is)f(similar)e(to)j(GNU)g +(utilities)d Fn(flex)i Fs(and)150 3317 y Fn(bison)e Fs(\(or)i(UNIX)f +(utilities)e Fn(lex)i Fs(and)f Fn(yacc)p Fs(\).)40 b(Here's)31 +b(an)g(outline)e(of)h(the)h(general)f(format:)390 3470 +y Fn(declarations)390 3573 y(\045\045)390 3677 y(keywords)390 +3781 y(\045\045)390 3885 y(functions)275 4036 y Fl(Unlike)36 +b Fn(flex)29 b Fs(or)h Fn(bison)p Fs(,)f(all)g(sections)h(of)g +Fn(gperf)p Fs('s)f(input)f(are)i(optional.)40 b(The)29 +b(follo)m(wing)g(sections)150 4146 y(describ)s(e)g(the)h(input)f +(format)h(for)h(eac)m(h)g(section.)150 4417 y Fj(3.1.1)63 +b Fi(struct)41 b Fj(Declarations)g(and)g(C)g(Co)s(de)g(Inclusion)275 +4634 y Fs(The)20 b(k)m(eyw)m(ord)h(input)e(\014le)h(optionally)g(con)m +(tains)h(a)g(section)g(for)g(including)c(arbitrary)j(C)g(declarations) +150 4743 y(and)k(de\014nitions,)g(as)h(w)m(ell)e(as)i(pro)m(visions)e +(for)i(pro)m(viding)d(a)j(user-supplied)d Fn(struct)p +Fs(.)37 b(If)24 b(the)h(`)p Fn(-t)p Fs(')f(option)150 +4853 y Fl(is)39 b Fs(enabled,)31 b(y)m(ou)g Fl(must)41 +b Fs(pro)m(vide)30 b(a)i(C)f Fn(struct)e Fs(as)j(the)f(last)h(comp)s +(onen)m(t)f(in)f(the)i(declaration)f(section)150 4963 +y(from)23 b(the)h(k)m(ey\014le)f(\014le.)37 b(The)23 +b(\014rst)g(\014eld)f(in)g(this)g(struct)i(m)m(ust)f(b)s(e)g(a)h +Fn(char)29 b(*)23 b Fs(or)h Fn(const)k(char)i(*)23 b +Fs(iden)m(ti\014er)150 5072 y(called)d(`)p Fn(name)p +Fs(',)i(although)e(it)g(is)f(p)s(ossible)f(to)j(mo)s(dify)e(this)g +(\014eld's)g(name)i(with)e(the)i(`)p Fn(-K)p Fs(')f(option)g(describ)s +(ed)150 5182 y(b)s(elo)m(w.)275 5340 y(Here)30 b(is)g(a)h(simple)d +(example,)i(using)f(mon)m(ths)h(of)h(the)f(y)m(ear)i(and)d(their)h +(attributes)g(as)g(input:)p eop %%Page: 12 14 -12 13 bop 0 -116 a Fm(12)2920 b(User's)31 b(Guide)e(to)i -Fk(gperf)0 366 y Fm(structures)37 b(b)m(y)h(hand.)61 -b(It)38 b(has)f(pro)m(v)m(en)h(a)g(useful)e(and)h(practical)g(to)s(ol)h -(for)f(serious)g(programming)f(pro)5 b(jects.)0 491 y(Output)27 -b(from)i Fk(gperf)e Fm(is)g(curren)m(tly)h(used)g(in)f(sev)m(eral)i -(pro)s(duction)d(and)i(researc)m(h)i(compilers,)d(including)e(GNU)0 -616 y(C,)39 b(GNU)h(C)p Fk(++)p Fm(,)h(GNU)f(P)m(ascal,)i(and)d(GNU)h -(Mo)s(dula)e(3.)68 b(The)38 b(latter)i(t)m(w)m(o)g(compilers)e(are)i -(not)f(y)m(et)i(part)e(of)0 740 y(the)28 b(o\016cial)g(GNU)g -(distribution.)36 b(Eac)m(h)29 b(compiler)d(utilizes)g -Fk(gperf)h Fm(to)i(automatically)e(generate)j(static)e(searc)m(h)0 -865 y(structures)i(that)h(e\016cien)m(tly)f(iden)m(tify)f(their)g(resp) -s(ectiv)m(e)i(reserv)m(ed)f(k)m(eyw)m(ords.)p eop +12 13 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 +b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(12)390 +299 y Fn(struct)46 b(months)g({)i(char)e(*name;)g(int)h(number;)f(int)h +(days;)f(int)h(leap_days;)e(};)390 403 y(\045\045)390 +506 y(january,)141 b(1,)47 b(31,)g(31)390 610 y(february,)93 +b(2,)47 b(28,)g(29)390 714 y(march,)237 b(3,)47 b(31,)g(31)390 +818 y(april,)237 b(4,)47 b(30,)g(30)390 922 y(may,)333 +b(5,)47 b(31,)g(31)390 1025 y(june,)285 b(6,)47 b(30,)g(30)390 +1129 y(july,)285 b(7,)47 b(31,)g(31)390 1233 y(august,)189 +b(8,)47 b(31,)g(31)390 1337 y(september,)e(9,)i(30,)g(30)390 +1440 y(october,)93 b(10,)47 b(31,)g(31)390 1544 y(november,)e(11,)i +(30,)g(30)390 1648 y(december,)e(12,)i(31,)g(31)275 1782 +y Fs(Separating)24 b(the)h Fn(struct)f Fs(declaration)g(from)h(the)g +(list)f(of)h(k)m(eyw)m(ords)h(and)e(other)h(\014elds)f(are)h(a)h(pair)e +(of)150 1892 y(consecutiv)m(e)32 b(p)s(ercen)m(t)g(signs,)e(`)p +Fn(\045\045)p Fs(',)i(app)s(earing)e(left)h(justi\014ed)e(in)h(the)i +(\014rst)e(column,)h(as)g(in)f(the)i(UNIX)150 2002 y(utilit)m(y)d +Fn(lex)p Fs(.)275 2143 y(Using)c(a)h(syn)m(tax)h(similar)c(to)k(GNU)f +(utilities)e Fn(flex)h Fs(and)g Fn(bison)p Fs(,)h(it)f(is)g(p)s +(ossible)f(to)i(directly)f(include)150 2253 y(C)k(source)h(text)g(and)f +(commen)m(ts)h(v)m(erbatim)f(in)m(to)h(the)f(generated)i(output)e +(\014le.)39 b(This)28 b(is)g(accomplished)150 2362 y(b)m(y)37 +b(enclosing)f(the)i(region)f(inside)d(left-justi\014ed)i(surrounding)e +(`)p Fn(\045{)p Fs(',)39 b(`)p Fn(\045})p Fs(')e(pairs.)60 +b(Here)38 b(is)e(an)h(input)150 2472 y(fragmen)m(t)31 +b(based)f(on)g(the)h(previous)e(example)h(that)h(illustrates)d(this)i +(feature:)390 2608 y Fn(\045{)390 2711 y(#include)46 +b()390 2815 y(/*)h(This)g(section)f(of)h(code)f(is)i +(inserted)d(directly)h(into)g(the)h(output.)f(*/)390 +2919 y(int)h(return_month_days)c(\(struct)j(months)g(*months,)f(int)i +(is_leap_year\);)390 3023 y(\045})390 3126 y(struct)f(months)g({)i +(char)e(*name;)g(int)h(number;)f(int)h(days;)f(int)h(leap_days;)e(};) +390 3230 y(\045\045)390 3334 y(january,)141 b(1,)47 b(31,)g(31)390 +3438 y(february,)93 b(2,)47 b(28,)g(29)390 3542 y(march,)237 +b(3,)47 b(31,)g(31)390 3645 y(...)275 3780 y Fs(It)40 +b(is)g(p)s(ossible)e(to)j(omit)g(the)f(declaration)h(section)f(en)m +(tirely)-8 b(.)71 b(In)40 b(this)g(case)h(the)g(k)m(ey\014le)f(b)s +(egins)150 3889 y(directly)29 b(with)g(the)i(\014rst)e(k)m(eyw)m(ord)i +(line,)e(e.g.:)390 4025 y Fn(january,)141 b(1,)47 b(31,)g(31)390 +4129 y(february,)93 b(2,)47 b(28,)g(29)390 4233 y(march,)237 +b(3,)47 b(31,)g(31)390 4336 y(april,)237 b(4,)47 b(30,)g(30)390 +4440 y(...)150 4670 y Fj(3.1.2)63 b(F)-10 b(ormat)40 +b(for)h(Keyw)m(ord)f(En)m(tries)275 4870 y Fs(The)20 +b(second)g(k)m(ey\014le)h(format)g(section)f(con)m(tains)h(lines)e(of)i +(k)m(eyw)m(ords)f(and)g(an)m(y)h(asso)s(ciated)g(attributes)150 +4979 y(y)m(ou)34 b(migh)m(t)g(supply)-8 b(.)49 b(A)34 +b(line)e(b)s(eginning)g(with)g(`)p Fn(#)p Fs(')i(in)f(the)h(\014rst)f +(column)g(is)g(considered)f(a)j(commen)m(t.)150 5089 +y(Ev)m(erything)30 b(follo)m(wing)f(the)h(`)p Fn(#)p +Fs(')h(is)e(ignored,)h(up)f(to)i(and)f(including)d(the)j(follo)m(wing)f +(newline.)275 5230 y(The)i(\014rst)g(\014eld)f(of)i(eac)m(h)g +(non-commen)m(t)h(line)d(is)g(alw)m(a)m(ys)j(the)e(k)m(ey)i(itself.)43 +b(It)32 b(can)g(b)s(e)f(giv)m(en)g(in)g(t)m(w)m(o)150 +5340 y(w)m(a)m(ys:)54 b(as)37 b(a)g(simple)d(name,)k(i.e.,)h(without)c +(surrounding)f(string)h(quotation)i(marks,)h(or)e(as)h(a)g(string)p +eop %%Page: 13 15 -13 14 bop 0 -116 a Fm(Chapter)30 b(3:)41 b(High-Lev)m(el)30 -b(Description)g(of)g(GNU)h Fk(gperf)1820 b Fm(13)0 366 -y Fj(3)80 b(High-Lev)l(el)31 b(Description)e(of)h(GNU)h -Fg(gperf)125 849 y Fm(The)k(p)s(erfect)i(hash)e(function)h(generator)h -Fk(gperf)e Fm(reads)h(a)h(set)g(of)g(\\k)m(eyw)m(ords")g(from)f(a)h -Fh(k)m(ey\014le)42 b Fm(\(or)36 b(from)0 974 y(the)g(standard)g(input)e -(b)m(y)i(default\).)57 b(It)36 b(attempts)h(to)g(deriv)m(e)f(a)g(p)s -(erfect)g(hashing)f(function)g(that)h(recognizes)0 1099 -y(a)g(mem)m(b)s(er)f(of)h(the)g Fh(static)h(k)m(eyw)m(ord)f(set)i -Fm(with)d(at)h(most)h(a)f(single)e(prob)s(e)h(in)m(to)h(the)g(lo)s -(okup)e(table.)57 b(If)35 b Fk(gperf)0 1223 y Fm(succeeds)g(in)e -(generating)h(suc)m(h)h(a)f(function)f(it)h(pro)s(duces)f(a)i(pair)e -(of)i(C)f(source)g(co)s(de)h(routines)e(that)i(p)s(erform)0 -1348 y(hashing)h(and)g(table)h(lo)s(okup)f(recognition.)61 -b(All)36 b(generated)i(C)f(co)s(de)g(is)g(directed)f(to)i(the)g -(standard)e(output.)0 1472 y(Command-line)24 b(options)i(describ)s(ed)e -(b)s(elo)m(w)h(allo)m(w)h(y)m(ou)h(to)g(mo)s(dify)d(the)j(input)d(and)i -(output)f(format)i(to)g Fk(gperf)p Fm(.)125 1768 y(By)h(default,)g -Fk(gperf)f Fm(attempts)j(to)f(pro)s(duce)e(time-e\016cien)m(t)i(co)s -(de,)g(with)e(less)g(emphasis)g(on)i(e\016cien)m(t)f(space)0 -1892 y(utilization.)38 b(Ho)m(w)m(ev)m(er,)32 b(sev)m(eral)e(options)e -(exist)h(that)h(p)s(ermit)d(trading-o\013)i(execution)h(time)f(for)g -(storage)h(space)0 2017 y(and)23 b(vice)h(v)m(ersa.)39 -b(In)23 b(particular,)g(expanding)g(the)g(generated)i(table)f(size)f -(pro)s(duces)g(a)h(sparse)f(searc)m(h)h(structure,)0 -2142 y(generally)g(yielding)e(faster)k(searc)m(hes.)39 -b(Con)m(v)m(ersely)-8 b(,)27 b(y)m(ou)e(can)g(direct)f -Fk(gperf)g Fm(to)h(utilize)e(a)j(C)e Fk(switch)f Fm(statemen)m(t)0 -2266 y(sc)m(heme)28 b(that)f(minimizes)d(data)k(space)f(storage)i -(size.)39 b(F)-8 b(urthermore,)28 b(using)d(a)i(C)g Fk(switch)e -Fm(ma)m(y)i(actually)g(sp)s(eed)0 2391 y(up)i(the)i(k)m(eyw)m(ord)g -(retriev)-5 b(al)29 b(time)h(somewhat.)41 b(Actual)31 -b(results)e(dep)s(end)g(on)h(y)m(our)g(C)g(compiler,)f(of)i(course.)125 -2686 y(In)c(general,)h Fk(gperf)f Fm(assigns)g(v)-5 b(alues)27 -b(to)h(the)g(c)m(haracters)i(it)d(is)g(using)f(for)i(hashing)e(un)m -(til)g(some)i(set)h(of)f(v)-5 b(alues)0 2811 y(giv)m(es)31 -b(eac)m(h)g(k)m(eyw)m(ord)g(a)f(unique)f(v)-5 b(alue.)40 -b(A)30 b(helpful)d(heuristic)i(is)g(that)i(the)f(larger)g(the)h(hash)e -(v)-5 b(alue)30 b(range,)h(the)0 2936 y(easier)i(it)g(is)f(for)g -Fk(gperf)g Fm(to)i(\014nd)d(and)i(generate)h(a)g(p)s(erfect)f(hash)f -(function.)47 b(Exp)s(erimen)m(tation)32 b(is)g(the)h(k)m(ey)h(to)0 -3060 y(getting)d(the)g(most)f(from)g Fk(gperf)p Fm(.)0 -3705 y Fi(3.1)68 b(Input)30 b(F)-11 b(ormat)31 b(to)f -Ff(gperf)125 4001 y Fm(Y)-8 b(ou)28 b(can)g(con)m(trol)g(the)g(input)d -(k)m(ey\014le)j(format)g(b)m(y)f(v)-5 b(arying)27 b(certain)h -(command-line)e(argumen)m(ts,)j(in)d(partic-)0 4126 y(ular)h(the)i(`)p -Fk(-t)p Fm(')g(option.)40 b(The)28 b(input's)f(app)s(earance)i(is)e -(similar)g(to)i(GNU)g(utilities)e Fk(flex)g Fm(and)h -Fk(bison)g Fm(\(or)h(UNIX)0 4250 y(utilities)f Fk(lex)h -Fm(and)h Fk(yacc)p Fm(\).)40 b(Here's)31 b(an)f(outline)f(of)i(the)f -(general)h(format:)240 4525 y Fk(declarations)240 4629 -y(\045\045)240 4733 y(keywords)240 4837 y(\045\045)240 -4940 y(functions)125 5215 y Fh(Unlik)m(e)f Fk(flex)25 -b Fm(or)h Fk(bison)p Fm(,)g(all)f(sections)h(of)g Fk(gperf)p -Fm('s)f(input)f(are)j(optional.)38 b(The)26 b(follo)m(wing)e(sections)j -(describ)s(e)0 5340 y(the)k(input)d(format)j(for)f(eac)m(h)h(section.)p -eop +13 14 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 +b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(13)150 +299 y(enclosed)40 b(in)f(double-quotes,)k(in)c(C)h(syn)m(tax,)j(p)s +(ossibly)38 b(with)h(bac)m(kslash)h(escap)s(es)g(lik)m(e)g +Fn(\\")g Fs(or)g Fn(\\234)150 408 y Fs(or)d Fn(\\xa8)p +Fs(.)60 b(In)37 b(either)f(case,)41 b(it)36 b(m)m(ust)h(start)h(righ)m +(t)f(at)h(the)f(b)s(eginning)e(of)i(the)g(line,)h(without)e(leading)150 +518 y(whitespace.)57 b(In)35 b(this)g(con)m(text,)k(a)e(\\\014eld")e +(is)g(considered)g(to)h(extend)g(up)f(to,)j(but)d(not)h(include,)g(the) +150 628 y(\014rst)i(blank,)h(comma,)j(or)c(newline.)63 +b(Here)39 b(is)e(a)i(simple)e(example)h(tak)m(en)h(from)f(a)h(partial)f +(list)f(of)h(C)150 737 y(reserv)m(ed)31 b(w)m(ords:)390 +865 y Fn(#)47 b(These)g(are)g(a)g(few)g(C)h(reserved)d(words,)h(see)h +(the)g(c.gperf)f(file)390 969 y(#)h(for)g(a)h(complete)d(list)i(of)g +(ANSI)g(C)g(reserved)f(words.)390 1073 y(unsigned)390 +1177 y(sizeof)390 1280 y(switch)390 1384 y(signed)390 +1488 y(if)390 1592 y(default)390 1696 y(for)390 1799 +y(while)390 1903 y(return)275 2030 y Fs(Note)38 b(that)f(unlik)m(e)e +Fn(flex)h Fs(or)h Fn(bison)e Fs(the)j(\014rst)e(`)p Fn(\045\045)p +Fs(')g(mark)m(er)i(ma)m(y)f(b)s(e)f(elided)f(if)h(the)h(declaration)150 +2140 y(section)31 b(is)e(empt)m(y)-8 b(.)275 2274 y(Additional)26 +b(\014elds)h(ma)m(y)i(optionally)e(follo)m(w)h(the)h(leading)e(k)m(eyw) +m(ord.)41 b(Fields)27 b(should)f(b)s(e)i(separated)150 +2383 y(b)m(y)g(commas,)i(and)d(terminate)i(at)g(the)f(end)g(of)g(line.) +39 b(What)29 b(these)f(\014elds)f(mean)h(is)g(en)m(tirely)f(up)g(to)i +(y)m(ou;)150 2493 y(they)k(are)h(used)e(to)i(initialize)c(the)k(elemen) +m(ts)f(of)g(the)h(user-de\014ned)d Fn(struct)h Fs(pro)m(vided)f(b)m(y)i +(y)m(ou)h(in)e(the)150 2602 y(declaration)k(section.)59 +b(If)36 b(the)g(`)p Fn(-t)p Fs(')g(option)g(is)f Fl(not)46 +b Fs(enabled)35 b(these)i(\014elds)e(are)i(simply)d(ignored.)57 +b(All)150 2712 y(previous)29 b(examples)h(except)h(the)g(last)f(one)h +(con)m(tain)f(k)m(eyw)m(ord)h(attributes.)150 2934 y +Fj(3.1.3)63 b(Including)41 b(Additional)g(C)g(F)-10 b(unctions)275 +3127 y Fs(The)30 b(optional)g(third)f(section)i(also)g(corresp)s(onds)e +(closely)h(with)g(con)m(v)m(en)m(tions)i(found)d(in)h +Fn(flex)g Fs(and)150 3236 y Fn(bison)p Fs(.)36 b(All)21 +b(text)i(in)e(this)f(section,)k(starting)e(at)h(the)f(\014nal)e(`)p +Fn(\045\045)p Fs(')i(and)f(extending)h(to)g(the)g(end)g(of)g(the)g +(input)150 3346 y(\014le,)30 b(is)g(included)f(v)m(erbatim)h(in)m(to)h +(the)g(generated)h(output)f(\014le.)41 b(Naturally)-8 +b(,)31 b(it)f(is)g(y)m(our)h(resp)s(onsibilit)m(y)150 +3455 y(to)g(ensure)f(that)h(the)f(co)s(de)h(con)m(tained)f(in)g(this)f +(section)h(is)g(v)-5 b(alid)28 b(C.)150 3711 y Fr(3.2)68 +b(Output)45 b(F)-11 b(ormat)45 b(for)g(Generated)h(C)f(Co)t(de)g(with)g +Fk(gperf)275 3903 y Fs(Sev)m(eral)27 b(options)g(con)m(trol)h(ho)m(w)f +(the)h(generated)h(C)e(co)s(de)h(app)s(ears)e(on)i(the)g(standard)e +(output.)40 b(Tw)m(o)150 4013 y(C)22 b(function)f(are)h(generated.)39 +b(They)22 b(are)h(called)e Fn(hash)g Fs(and)h Fn(in_word_set)p +Fs(,)f(although)g(y)m(ou)i(ma)m(y)g(mo)s(dify)150 4122 +y(their)31 b(names)h(with)f(a)h(command-line)f(option.)45 +b(Both)33 b(functions)e(require)g(t)m(w)m(o)i(argumen)m(ts,)g(a)g +(string,)150 4232 y Fn(char)c(*)43 b Fo(str)p Fs(,)j(and)d(a)g(length)g +(parameter,)k Fn(int)42 b Fo(len)p Fs(.)78 b(Their)42 +b(default)g(function)g(protot)m(yp)s(es)h(are)h(as)150 +4341 y(follo)m(ws:)3525 4573 y(F)-8 b(unction)-3725 b +Fh(unsigned)41 b(int)e Fg(hash)44 b Ff(\()p Fn(const)30 +b(char)f(*)h Fo(str)p Fn(,)g(unsigned)e(int)h Fo(len)p +Ff(\))390 4682 y Fs(By)35 b(default,)g(the)f(generated)i +Fn(hash)d Fs(function)g(returns)g(an)i(in)m(teger)g(v)-5 +b(alue)33 b(created)j(b)m(y)e(adding)390 4792 y Fo(len)c +Fs(to)h(sev)m(eral)g(user-sp)s(eci\014ed)e Fo(str)37 +b Fs(k)m(ey)31 b(p)s(ositions)e(indexed)g(in)m(to)i(an)f +Fo(asso)s(ciated)h(v)-5 b(alues)34 b Fs(table)390 4902 +y(stored)j(in)f(a)i(lo)s(cal)f(static)h(arra)m(y)-8 b(.)62 +b(The)37 b(asso)s(ciated)h(v)-5 b(alues)37 b(table)g(is)f(constructed)i +(in)m(ternally)390 5011 y(b)m(y)30 b Fn(gperf)e Fs(and)h(later)h +(output)g(as)g(a)g(static)g(lo)s(cal)g(C)f(arra)m(y)h(called)f(`)p +Fn(hash_table)p Fs(';)f(its)i(meaning)390 5121 y(and)j(prop)s(erties)e +(are)j(describ)s(ed)d(b)s(elo)m(w)i(\(see)h(Chapter)f(7)h([Implemen)m +(tation],)g(page)g(23\).)50 b(The)390 5230 y(relev)-5 +b(an)m(t)22 b(k)m(ey)h(p)s(ositions)d(are)i(sp)s(eci\014ed)e(via)i(the) +g(`)p Fn(-k)p Fs(')g(option)f(when)g(running)e Fn(gperf)p +Fs(,)k(as)f(detailed)390 5340 y(in)29 b(the)i Fl(Options)38 +b Fs(section)31 b(b)s(elo)m(w\(see)g(Chapter)e(4)i([Options],)f(page)h +(15\).)p eop %%Page: 14 16 -14 15 bop 0 -116 a Fm(14)2920 b(User's)31 b(Guide)e(to)i -Fk(gperf)0 366 y Fe(3.1.1)63 b Fd(struct)31 b Fe(Declarations)f(and)g -(C)g(Co)s(de)h(Inclusion)125 876 y Fm(The)f(k)m(eyw)m(ord)i(input)d -(\014le)h(optionally)g(con)m(tains)h(a)h(section)f(for)g(including)c -(arbitrary)j(C)h(declarations)g(and)0 1000 y(de\014nitions,)25 -b(as)i(w)m(ell)f(as)h(pro)m(visions)e(for)h(pro)m(viding)f(a)i -(user-supplied)c Fk(struct)p Fm(.)38 b(If)26 b(the)h(`)p -Fk(-t)p Fm(')g(option)f Fh(is)k Fm(enabled,)0 1125 y(y)m(ou)39 -b Fh(m)m(ust)h Fm(pro)m(vide)d(a)i(C)f Fk(struct)e Fm(as)j(the)f(last)g -(comp)s(onen)m(t)h(in)e(the)h(declaration)g(section)h(from)f(the)g(k)m -(ey\014le)0 1249 y(\014le.)50 b(The)34 b(\014rst)f(\014eld)f(in)h(this) -g(struct)g(m)m(ust)h(b)s(e)f(a)i Fk(char)29 b(*)k Fm(iden)m(ti\014er)f -(called)h(`)p Fk(name)p Fm(',)i(although)e(it)g(is)g(p)s(ossible)0 -1374 y(to)e(mo)s(dify)e(this)g(\014eld's)g(name)h(with)g(the)g(`)p -Fk(-K)p Fm(')g(option)g(describ)s(ed)e(b)s(elo)m(w.)125 -1883 y(Here)i(is)g(simple)e(example,)i(using)f(mon)m(ths)i(of)f(the)h -(y)m(ear)g(and)f(their)f(attributes)h(as)h(input:)240 -2371 y Fk(struct)46 b(months)g({)i(char)e(*name;)g(int)h(number;)f(int) -h(days;)f(int)h(leap_days;)e(};)240 2475 y(\045\045)240 -2578 y(january,)141 b(1,)47 b(31,)g(31)240 2682 y(february,)93 -b(2,)47 b(28,)g(29)240 2786 y(march,)237 b(3,)47 b(31,)g(31)240 -2890 y(april,)237 b(4,)47 b(30,)g(30)240 2994 y(may,)333 -b(5,)47 b(31,)g(31)240 3097 y(june,)285 b(6,)47 b(30,)g(30)240 -3201 y(july,)285 b(7,)47 b(31,)g(31)240 3305 y(august,)189 -b(8,)47 b(31,)g(31)240 3409 y(september,)e(9,)i(30,)g(30)240 -3512 y(october,)93 b(10,)47 b(31,)g(31)240 3616 y(november,)e(11,)i -(30,)g(30)240 3720 y(december,)e(12,)i(31,)g(31)125 4208 -y Fm(Separating)41 b(the)i Fk(struct)d Fm(declaration)i(from)g(the)g -(list)f(of)i(k)m(ey)g(w)m(ords)f(and)f(other)i(\014elds)d(are)j(a)g -(pair)e(of)0 4333 y(consecutiv)m(e)c(p)s(ercen)m(t)f(signs,)h -Fk(\045\045)p Fm(,)g(app)s(earing)e(left)h(justi\014ed)e(in)h(the)h -(\014rst)g(column,)h(as)f(in)f(the)h(UNIX)h(utilit)m(y)0 -4457 y Fk(lex)p Fm(.)125 4966 y(Using)21 b(a)h(syn)m(tax)h(similar)c -(to)k(GNU)g(utilities)c Fk(flex)i Fm(and)h Fk(bison)p -Fm(,)g(it)g(is)f(p)s(ossible)f(to)i(directly)f(include)f(C)i(source)0 -5091 y(text)31 b(and)e(commen)m(ts)h(v)m(erbatim)g(in)m(to)f(the)h -(generated)h(output)e(\014le.)40 b(This)27 b(is)i(accomplished)g(b)m(y) -g(enclosing)g(the)0 5215 y(region)23 b(inside)d(left-justi\014ed)h -(surrounding)f Fk(\045{)p Fm(,)k Fk(\045})f Fm(pairs.)37 -b(Here)23 b(is)f(an)h(input)e(fragmen)m(t)j(based)e(on)h(the)g -(previous)0 5340 y(example)30 b(that)h(illustrates)d(this)i(feature:)p -eop +14 15 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 +b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(14)3525 +299 y(F)-8 b(unction)-3725 b Fg(in)p 253 299 35 5 v 41 +w(w)m(ord)p 542 299 V 41 w(set)44 b Ff(\()p Fn(const)30 +b(char)f(*)h Fo(str)p Fn(,)g(unsigned)e(int)h Fo(len)p +Ff(\))390 408 y Fs(If)43 b Fo(str)49 b Fs(is)42 b(in)g(the)h(k)m(eyw)m +(ord)g(set,)k(returns)42 b(a)h(p)s(oin)m(ter)f(to)i(that)g(k)m(eyw)m +(ord.)79 b(More)43 b(exactly)-8 b(,)48 b(if)390 518 y(the)34 +b(option)f(`)p Fn(-t)p Fs(')h(w)m(as)g(giv)m(en,)g(it)g(returns)e(a)i +(p)s(oin)m(ter)f(to)h(the)g(matc)m(hing)g(k)m(eyw)m(ord's)g(structure.) +390 628 y(Otherwise)29 b(it)h(returns)f Fn(NULL)p Fs(.)275 +812 y(If)c(the)i(option)f(`)p Fn(-c)p Fs(')g(is)f(not)i(used,)f +Fo(str)33 b Fs(m)m(ust)26 b(b)s(e)g(a)h(NUL)f(terminated)g(string)f(of) +i(exactly)g(length)f Fo(len)p Fs(.)150 922 y(If)k(`)p +Fn(-c)p Fs(')g(is)f(used,)g Fo(str)37 b Fs(m)m(ust)30 +b(simply)d(b)s(e)j(an)g(arra)m(y)g(of)g Fo(len)g Fs(c)m(haracters)h +(and)f(do)s(es)f(not)i(need)f(to)g(b)s(e)g(NUL)150 1031 +y(terminated.)275 1166 y(The)f(co)s(de)i(generated)g(for)g(these)f(t)m +(w)m(o)i(functions)d(is)g(a\013ected)j(b)m(y)f(the)f(follo)m(wing)f +(options:)150 1325 y(`)p Fn(-t)p Fs(')150 1435 y(`)p +Fn(--struct-type)p Fs(')630 1544 y(Mak)m(e)j(use)e(of)h(the)f +(user-de\014ned)f Fn(struct)p Fs(.)150 1704 y(`)p Fn(-S)h +Fo(total-switc)m(h-statemen)m(ts)t Fs(')150 1813 y(`)p +Fn(--switch=)p Fo(total-switc)m(h-statemen)m(ts)t Fs(')630 +1923 y(Generate)22 b(1)f(or)g(more)g(C)f Fn(switch)f +Fs(statemen)m(t)j(rather)f(than)f(use)h(a)g(large,)i(\(and)d(p)s(oten)m +(tially)630 2032 y(sparse\))j(static)g(arra)m(y)-8 b(.)40 +b(Although)22 b(the)h(exact)h(time)f(and)f(space)i(sa)m(vings)f(of)g +(this)f(approac)m(h)630 2142 y(v)-5 b(ary)32 b(according)f(to)i(y)m +(our)e(C)g(compiler's)g(degree)h(of)g(optimization,)f(this)f(metho)s(d) +i(often)630 2252 y(results)d(in)g(smaller)g(and)h(faster)h(co)s(de.)275 +2411 y(If)d(the)i(`)p Fn(-t)p Fs(')f(and)f(`)p Fn(-S)p +Fs(')h(options)g(are)g(omitted,)h(the)f(default)g(action)g(is)f(to)i +(generate)h(a)e Fn(char)h(*)e Fs(arra)m(y)150 2521 y(con)m(taining)35 +b(the)h(k)m(eys,)h(together)g(with)d(additional)g(n)m(ull)f(strings)i +(used)f(for)h(padding)f(the)i(arra)m(y)-8 b(.)57 b(By)150 +2630 y(exp)s(erimen)m(ting)27 b(with)g(the)h(v)-5 b(arious)28 +b(input)e(and)i(output)g(options,)g(and)g(timing)f(the)h(resulting)f(C) +g(co)s(de,)150 2740 y(y)m(ou)k(can)f(determine)g(the)g(b)s(est)g +(option)g(c)m(hoices)h(for)f(di\013eren)m(t)g(k)m(eyw)m(ord)h(set)g(c)m +(haracteristics.)150 2997 y Fr(3.3)68 b(Use)46 b(of)f(NUL)g(c)l +(haracters)275 3190 y Fs(By)30 b(default,)g(the)g(co)s(de)g(generated)i +(b)m(y)e Fn(gperf)e Fs(op)s(erates)j(on)f(zero)h(terminated)f(strings,) +f(the)h(usual)150 3299 y(represen)m(tation)40 b(of)f(strings)g(in)f(C.) +i(This)d(means)j(that)g(the)g(k)m(eyw)m(ords)g(in)e(the)i(input)e +(\014le)g(m)m(ust)i(not)150 3409 y(con)m(tain)f(NUL)f(c)m(haracters,)43 +b(and)37 b(the)i Fo(str)45 b Fs(argumen)m(t)39 b(passed)f(to)h +Fn(hash)e Fs(or)i Fn(in_word_set)c Fs(m)m(ust)k(b)s(e)150 +3518 y(NUL)30 b(terminated)g(and)g(ha)m(v)m(e)i(exactly)f(length)f +Fo(len)p Fs(.)275 3653 y(If)f(option)g(`)p Fn(-c)p Fs(')h(is)f(used,)h +(then)f(the)h Fo(str)37 b Fs(argumen)m(t)30 b(do)s(es)g(not)g(need)f +(to)i(b)s(e)e(NUL)h(terminated.)40 b(The)150 3763 y(co)s(de)i +(generated)h(b)m(y)f Fn(gperf)e Fs(will)f(only)i(access)j(the)e +(\014rst)f Fo(len)p Fs(,)j(not)e Fo(len)p Fn(+)p Fo(1)p +Fs(,)i(b)m(ytes)f(starting)e(at)i Fo(str)p Fs(.)150 3872 +y(Ho)m(w)m(ev)m(er,)33 b(the)d(k)m(eyw)m(ords)h(in)e(the)i(input)d +(\014le)h(still)g(m)m(ust)h(not)h(con)m(tain)f(NUL)h(c)m(haracters.)275 +4007 y(If)26 b(option)h(`)p Fn(-l)p Fs(')g(is)f(used,)i(then)f(the)g +(hash)g(table)g(p)s(erforms)f(binary)f(comparison.)39 +b(The)27 b(k)m(eyw)m(ords)g(in)150 4116 y(the)33 b(input)f(\014le)g(ma) +m(y)i(con)m(tain)f(NUL)h(c)m(haracters,)h(written)e(in)f(string)g(syn)m +(tax)i(as)f Fn(\\000)f Fs(or)h Fn(\\x00)p Fs(,)h(and)150 +4226 y(the)28 b(co)s(de)h(generated)g(b)m(y)f Fn(gperf)e +Fs(will)g(treat)j(NUL)f(lik)m(e)g(an)m(y)g(other)h(c)m(haracter.)41 +b(Also,)29 b(in)e(this)g(case)i(the)150 4335 y(`)p Fn(-c)p +Fs(')h(option)g(is)g(ignored.)p eop %%Page: 15 17 -15 16 bop 0 -116 a Fm(Chapter)30 b(3:)41 b(High-Lev)m(el)30 -b(Description)g(of)g(GNU)h Fk(gperf)1820 b Fm(15)240 -366 y Fk(\045{)240 470 y(#include)46 b()240 -574 y(/*)h(This)g(section)f(of)h(code)f(is)i(inserted)d(directly)h -(into)g(the)h(output.)f(*/)240 678 y(int)h(return_month_days)c -(\(struct)j(months)g(*months,)f(int)i(is_leap_year\);)240 -782 y(\045})240 885 y(struct)f(months)g({)i(char)e(*name;)g(int)h -(number;)f(int)h(days;)f(int)h(leap_days;)e(};)240 989 -y(\045\045)240 1093 y(january,)141 b(1,)47 b(31,)g(31)240 -1197 y(february,)93 b(2,)47 b(28,)g(29)240 1300 y(march,)237 -b(3,)47 b(31,)g(31)240 1404 y(...)125 1659 y Fm(It)25 -b(is)g(p)s(ossible)e(to)j(omit)f(the)h(declaration)f(section)h(en)m -(tirely)-8 b(.)38 b(In)25 b(this)f(case)j(the)f(k)m(ey\014le)f(b)s -(egins)f(directly)g(with)0 1784 y(the)31 b(\014rst)e(k)m(eyw)m(ord)i -(line,)e(e.g.:)240 2039 y Fk(january,)141 b(1,)47 b(31,)g(31)240 -2142 y(february,)93 b(2,)47 b(28,)g(29)240 2246 y(march,)237 -b(3,)47 b(31,)g(31)240 2350 y(april,)237 b(4,)47 b(30,)g(30)240 -2454 y(...)0 2876 y Fe(3.1.2)63 b(F)-10 b(ormat)29 b(for)h(Keyw)m(ord)g -(En)m(tries)125 3152 y Fm(The)g(second)h(k)m(ey\014le)h(format)f -(section)g(con)m(tains)h(lines)d(of)j(k)m(eyw)m(ords)f(and)g(an)m(y)g -(asso)s(ciated)h(attributes)f(y)m(ou)0 3276 y(migh)m(t)i(supply)-8 -b(.)47 b(A)33 b(line)f(b)s(eginning)e(with)i(`)p Fk(#)p -Fm(')h(in)f(the)h(\014rst)g(column)f(is)g(considered)g(a)i(commen)m(t.) -50 b(Ev)m(erything)0 3401 y(follo)m(wing)29 b(the)h(`)p -Fk(#)p Fm(')h(is)e(ignored,)h(up)f(to)j(and)d(including)e(the)k(follo)m -(wing)e(newline.)125 3677 y(The)h(\014rst)g(\014eld)f(of)i(eac)m(h)h -(non-commen)m(t)g(line)d(is)h(alw)m(a)m(ys)h(the)g(k)m(ey)h(itself.)41 -b(It)31 b(should)e(b)s(e)h(giv)m(en)h(as)g(a)g(simple)0 -3801 y(name,)g(i.e.,)f(without)g(surrounding)c(string)k(quotation)g -(marks,)g(and)g(b)s(e)g(left-justi\014ed)e(\015ush)h(against)h(the)h -(\014rst)0 3926 y(column.)51 b(In)34 b(this)f(con)m(text,)k(a)e -(\\\014eld")f(is)f(considered)g(to)i(extend)f(up)g(to,)i(but)d(not)i -(include,)e(the)i(\014rst)e(blank,)0 4050 y(comma,)e(or)g(newline.)38 -b(Here)31 b(is)f(a)g(simple)f(example)h(tak)m(en)h(from)f(a)h(partial)e -(list)g(of)i(C)f(reserv)m(ed)g(w)m(ords:)240 4305 y Fk(#)47 -b(These)g(are)g(a)g(few)g(C)h(reserved)d(words,)h(see)h(the)g(c.gperf)f -(file)240 4409 y(#)h(for)g(a)h(complete)d(list)i(of)g(ANSI)g(C)g -(reserved)f(words.)240 4513 y(unsigned)240 4616 y(sizeof)240 -4720 y(switch)240 4824 y(signed)240 4928 y(if)240 5032 -y(default)240 5135 y(for)240 5239 y(while)240 5343 y(return)p -eop +15 16 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 +b Fn(gperf)2433 b Fs(15)150 299 y Fp(4)80 b(In)l(v)l(oking)53 +b Fm(gperf)275 522 y Fs(There)30 b(are)i Fl(many)40 b +Fs(options)31 b(to)h Fn(gperf)p Fs(.)41 b(They)31 b(w)m(ere)h(added)e +(to)i(mak)m(e)g(the)g(program)f(more)g(con)m(v)m(e-)150 +632 y(nien)m(t)g(for)f(use)h(with)f(real)h(applications.)41 +b(\\On-line")30 b(help)g(is)g(readily)g(a)m(v)-5 b(ailable)30 +b(via)h(the)g(`)p Fn(-h)p Fs(')g(option.)150 742 y(Here)g(is)e(the)i +(complete)g(list)e(of)h(options.)150 993 y Fr(4.1)68 +b(Options)45 b(that)h(a\013ect)g(In)l(terpretation)h(of)e(the)g(Input)g +(File)150 1206 y Fs(`)p Fn(-e)30 b Fo(k)m(eyw)m(ord-delimiter-list)r +Fs(')150 1315 y(`)p Fn(--delimiters=)p Fo(k)m(eyw)m(ord-delimiter-list) +r Fs(')630 1425 y(Allo)m(ws)g(the)h(user)f(to)h(pro)m(vide)f(a)h +(string)f(con)m(taining)g(delimiters)f(used)h(to)h(separate)h(k)m(ey-) +630 1535 y(w)m(ords)k(from)h(their)f(attributes.)60 b(The)37 +b(default)f(is)g Fn(")p Fs(,)p Fn(\\)p Fs(n)p Fn(")p +Fs(.)60 b(This)35 b(option)h(is)g(essen)m(tial)h(if)630 +1644 y(y)m(ou)26 b(w)m(an)m(t)g(to)h(use)e(k)m(eyw)m(ords)h(that)g(ha)m +(v)m(e)h(em)m(b)s(edded)d(commas)i(or)g(newlines.)37 +b(One)25 b(useful)630 1754 y(tric)m(k)30 b(is)g(to)h(use)f(-e'T)-8 +b(AB',)32 b(where)e(T)-8 b(AB)31 b(is)f(the)g(literal)f(tab)i(c)m +(haracter.)150 1909 y(`)p Fn(-t)p Fs(')150 2019 y(`)p +Fn(--struct-type)p Fs(')630 2128 y(Allo)m(ws)f(y)m(ou)i(to)g(include)d +(a)i Fn(struct)f Fs(t)m(yp)s(e)h(declaration)g(for)g(generated)h(co)s +(de.)44 b(An)m(y)31 b(text)630 2238 y(b)s(efore)43 b(a)i(pair)d(of)i +(consecutiv)m(e)h(`)p Fn(\045\045)p Fs(')e(is)g(considered)g(part)g(of) +h(the)g(t)m(yp)s(e)g(declaration.)630 2347 y(Keyw)m(ords)39 +b(and)g(additional)e(\014elds)h(ma)m(y)j(follo)m(w)d(this,)j(one)f +(group)f(of)h(\014elds)e(p)s(er)g(line.)630 2457 y(A)31 +b(set)g(of)g(examples)f(for)g(generating)h(p)s(erfect)f(hash)g(tables)h +(and)f(functions)f(for)h(Ada,)h(C,)630 2566 y(C)p Fn(++)p +Fs(,)24 b(P)m(ascal,)i(Mo)s(dula)c(2,)k(Mo)s(dula)c(3)i(and)f(Ja)m(v)-5 +b(aScript)23 b(reserv)m(ed)g(w)m(ords)g(are)h(distributed)630 +2676 y(with)29 b(this)g(release.)150 2927 y Fr(4.2)68 +b(Options)45 b(to)h(sp)t(ecify)f(the)g(Language)h(for)f(the)g(Output)f +(Co)t(de)150 3140 y Fs(`)p Fn(-L)30 b Fo(generated-language-name)5 +b Fs(')150 3250 y(`)p Fn(--language=)p Fo(generated-language-name)g +Fs(')630 3359 y(Instructs)33 b Fn(gperf)f Fs(to)i(generate)h(co)s(de)f +(in)e(the)i(language)g(sp)s(eci\014ed)d(b)m(y)j(the)g(option's)f(ar-) +630 3469 y(gumen)m(t.)41 b(Languages)31 b(handled)e(are)i(curren)m +(tly:)630 3624 y(`)p Fn(KR-C)p Fs(')238 b(Old-st)m(yle)25 +b(K&R)h(C.)g(This)e(language)j(is)f(understo)s(o)s(d)e(b)m(y)i(old-st)m +(yle)g(C)g(com-)1110 3734 y(pilers)c(and)i(ANSI)f(C)h(compilers,)g(but) +g(ANSI)f(C)h(compilers)f(ma)m(y)h(\015ag)h(w)m(arn-)1110 +3843 y(ings)k(\(or)i(ev)m(en)g(errors\))f(b)s(ecause)h(of)f(lac)m(king) +g(`)p Fn(const)p Fs('.)630 3999 y(`)p Fn(C)p Fs(')382 +b(Common)23 b(C.)f(This)g(language)h(is)f(understo)s(o)s(d)f(b)m(y)i +(ANSI)g(C)f(compilers,)i(and)1110 4108 y(also)29 b(b)m(y)f(old-st)m +(yle)g(C)h(compilers,)e(pro)m(vided)g(that)j(y)m(ou)f +Fn(#define)f(const)f Fs(to)1110 4218 y(empt)m(y)k(for)f(compilers)f +(whic)m(h)g(don't)h(kno)m(w)h(ab)s(out)f(this)f(k)m(eyw)m(ord.)630 +4373 y(`)p Fn(ANSI-C)p Fs(')142 b(ANSI)39 b(C.)h(This)d(language)j(is)f +(understo)s(o)s(d)f(b)m(y)h(ANSI)g(C)h(compilers)e(and)1110 +4482 y(C)p Fn(++)29 b Fs(compilers.)630 4638 y(`)p Fn(C++)p +Fs(')286 b(C)p Fn(++)p Fs(.)40 b(This)28 b(language)j(is)f(understo)s +(o)s(d)e(b)m(y)i(C)p Fn(++)g Fs(compilers.)630 4793 y(The)g(default)f +(is)h(C.)150 4948 y(`)p Fn(-a)p Fs(')334 b(This)32 b(option)h(is)f +(supp)s(orted)g(for)h(compatibilit)m(y)f(with)g(previous)g(releases)i +(of)g Fn(gperf)p Fs(.)49 b(It)630 5058 y(do)s(es)30 b(not)h(do)f(an)m +(ything.)150 5213 y(`)p Fn(-g)p Fs(')334 b(This)32 b(option)h(is)f +(supp)s(orted)g(for)h(compatibilit)m(y)f(with)g(previous)g(releases)i +(of)g Fn(gperf)p Fs(.)49 b(It)630 5322 y(do)s(es)30 b(not)h(do)f(an)m +(ything.)p eop %%Page: 16 18 -16 17 bop 0 -116 a Fm(16)2920 b(User's)31 b(Guide)e(to)i -Fk(gperf)125 366 y Fm(Note)j(that)g(unlik)m(e)e Fk(flex)h -Fm(or)g Fk(bison)f Fm(the)i(\014rst)f Fk(\045\045)g Fm(mark)m(er)g(ma)m -(y)h(b)s(e)f(elided)f(if)g(the)i(declaration)f(section)h(is)0 -491 y(empt)m(y)-8 b(.)125 772 y(Additional)39 b(\014elds)h(ma)m(y)i -(optionally)e(follo)m(w)g(the)i(leading)e(k)m(eyw)m(ord.)75 -b(Fields)40 b(should)f(b)s(e)i(separated)h(b)m(y)0 896 -y(commas,)h(and)c(terminate)h(at)h(the)f(end)f(of)h(line.)68 -b(What)40 b(these)h(\014elds)d(mean)i(is)f(en)m(tirely)g(up)g(to)i(y)m -(ou;)k(they)0 1021 y(are)36 b(used)e(to)j(initialize)32 -b(the)k(elemen)m(ts)g(of)f(the)h(user-de\014ned)e Fk(struct)g -Fm(pro)m(vided)g(b)m(y)h(y)m(ou)h(in)e(the)h(declaration)0 -1145 y(section.)61 b(If)36 b(the)i(`)p Fk(-t)p Fm(')f(option)f(is)g -Fh(not)j Fm(enabled)d(these)i(\014elds)d(are)j(simply)c(ignored.)60 -b(All)36 b(previous)f(examples)0 1270 y(except)c(the)g(last)f(one)h -(con)m(tain)g(k)m(eyw)m(ord)f(attributes.)0 1746 y Fe(3.1.3)63 -b(Including)30 b(Additional)h(C)f(F)-10 b(unctions)125 -2027 y Fm(The)30 b(optional)h(third)e(section)i(also)h(corresp)s(onds)e -(closely)g(with)g(con)m(v)m(en)m(tions)j(found)c(in)h -Fk(flex)g Fm(and)h Fk(bison)p Fm(.)0 2151 y(All)23 b(text)i(in)f(this)f -(section,)j(starting)e(at)h(the)g(\014nal)e Fk(\045\045)h -Fm(and)f(extending)h(to)h(the)g(end)f(of)g(the)h(input)d(\014le,)j(is)f -(included)0 2276 y(v)m(erbatim)k(in)m(to)h(the)g(generated)h(output)e -(\014le.)40 b(Naturally)-8 b(,)28 b(it)h(is)e(y)m(our)i(resp)s -(onsibilit)m(y)c(to)k(ensure)f(that)i(the)f(co)s(de)0 -2400 y(con)m(tained)i(in)e(this)g(section)h(is)g(v)-5 -b(alid)29 b(C.)0 2909 y Fi(3.2)68 b(Output)30 b(F)-11 -b(ormat)31 b(for)f(Generated)i(C)e(Co)t(de)g(with)h Ff(gperf)125 -3190 y Fm(Sev)m(eral)40 b(options)h(con)m(trol)g(ho)m(w)g(the)g -(generated)h(C)f(co)s(de)g(app)s(ears)f(on)h(the)g(standard)f(output.) -72 b(Tw)m(o)41 b(C)0 3315 y(function)d(are)i(generated.)70 -b(They)39 b(are)h(called)e Fk(hash)h Fm(and)g Fk(in_word_set)p -Fm(,)g(although)g(y)m(ou)h(ma)m(y)g(mo)s(dify)e(the)0 -3439 y(name)k(for)g Fk(in_word_set)d Fm(with)i(a)h(command-line)f -(option.)75 b(Both)43 b(functions)e(require)g(t)m(w)m(o)i(argumen)m -(ts,)j(a)0 3564 y(string,)g Fk(char)29 b(*)43 b Fh(str)p -Fm(,)j(and)c(a)i(length)f(parameter,)k Fk(int)42 b Fh(len)p -Fm(.)78 b(Their)41 b(default)i(function)f(protot)m(yp)s(es)h(are)h(as)0 -3688 y(follo)m(ws:)240 3948 y Fk(static)i(int)h(hash)g(\(char)f(*str,)g -(int)h(len\);)240 4052 y(int)g(in_word_set)e(\(char)h(*str,)g(int)h -(len\);)125 4312 y Fm(By)e(default,)j(the)d(generated)h -Fk(hash)e Fm(function)f(returns)h(an)h(in)m(teger)g(v)-5 -b(alue)45 b(created)h(b)m(y)f(adding)e Fh(len)h Fm(to)0 -4437 y(sev)m(eral)c(user-sp)s(eci\014ed)e Fh(str)46 b -Fm(k)m(ey)40 b(p)s(ositions)e(indexed)g(in)m(to)i(an)g -Fh(asso)s(ciated)g(v)-5 b(alues)43 b Fm(table)c(stored)h(in)f(a)h(lo)s -(cal)0 4561 y(static)e(arra)m(y)-8 b(.)63 b(The)37 b(asso)s(ciated)h(v) --5 b(alues)37 b(table)g(is)g(constructed)g(in)m(ternally)f(b)m(y)h -Fk(gperf)f Fm(and)h(later)h(output)f(as)0 4686 y(a)44 -b(static)h(lo)s(cal)e(C)h(arra)m(y)g(called)f Fh(hash)p -1399 4686 28 4 v 32 w(table)5 b Fm(;)51 b(its)44 b(meaning)f(and)g -(prop)s(erties)g(are)h(describ)s(ed)e(b)s(elo)m(w.)81 -b(See)0 4810 y(Chapter)32 b(7)h([Implemen)m(tation],)h(page)f(29.)49 -b(The)33 b(relev)-5 b(an)m(t)33 b(k)m(ey)g(p)s(ositions)e(are)i(sp)s -(eci\014ed)e(via)i(the)g(`)p Fk(-k)p Fm(')f(option)0 -4935 y(when)d(running)f Fk(gperf)p Fm(,)h(as)i(detailed)e(in)g(the)i -Fh(Options)i Fm(section)d(b)s(elo)m(w.)40 b(See)31 b(Chapter)e(4)i -([Options],)f(page)h(19.)125 5215 y(Tw)m(o)39 b(options,)i(`)p -Fk(-g)p Fm(')f(\(assume)f(y)m(ou)h(are)g(compiling)d(with)h(GNU)i(C)g -(and)e(its)h Fk(inline)f Fm(feature\))i(and)f(`)p Fk(-a)p -Fm(')0 5340 y(\(assume)30 b(ANSI)g(C-st)m(yle)h(function)e(protot)m(yp) -s(es\),)j(alter)e(the)g(con)m(ten)m(t)j(of)d(b)s(oth)g(the)g(generated) -i Fk(hash)d Fm(and)h Fk(in_)p eop +16 17 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 +b Fn(gperf)2433 b Fs(16)150 299 y Fr(4.3)68 b(Options)45 +b(for)g(\014ne)g(tuning)g(Details)i(in)e(the)g(Output)f(Co)t(de)150 +588 y Fs(`)p Fn(-K)30 b Fo(k)m(ey-name)5 b Fs(')150 698 +y(`)p Fn(--slot-name=)p Fo(k)m(ey-name)g Fs(')630 808 +y(This)37 b(option)i(is)f(only)g(useful)f(when)h(option)h(`)p +Fn(-t)p Fs(')g(has)g(b)s(een)f(giv)m(en.)67 b(By)39 b(default,)i(the) +630 917 y(program)30 b(assumes)g(the)h(structure)f(comp)s(onen)m(t)h +(iden)m(ti\014er)d(for)i(the)h(k)m(eyw)m(ord)g(is)e(`)p +Fn(name)p Fs('.)630 1027 y(This)23 b(option)g(allo)m(ws)h(an)g +(arbitrary)g(c)m(hoice)h(of)f(iden)m(ti\014er)f(for)h(this)f(comp)s +(onen)m(t,)k(although)630 1136 y(it)j(still)e(m)m(ust)i(o)s(ccur)h(as)f +(the)h(\014rst)e(\014eld)g(in)g(y)m(our)i(supplied)c +Fn(struct)p Fs(.)150 1344 y(`)p Fn(-F)j Fo(initializers)t +Fs(')150 1453 y(`)p Fn(--initializer-suffix=)p Fo(in)o(iti)o(ali)o +(zers)t Fs(')630 1563 y(This)23 b(option)g(is)h(only)f(useful)g(when)g +(option)h(`)p Fn(-t)p Fs(')h(has)f(b)s(een)f(giv)m(en.)39 +b(It)25 b(p)s(ermits)d(to)j(sp)s(ecify)630 1673 y(initializers)k(for)j +(the)h(structure)e(mem)m(b)s(ers)h(follo)m(wing)e Fo(k)m(ey)k(name)j +Fs(in)31 b(empt)m(y)i(hash)e(table)630 1782 y(en)m(tries.)73 +b(The)40 b(list)g(of)h(initializers)d(should)h(start)j(with)d(a)j +(comma.)73 b(By)42 b(default,)h(the)630 1892 y(emitted)30 +b(co)s(de)h(will)d(zero-initialize)h(structure)g(mem)m(b)s(ers)h(follo) +m(wing)f Fo(k)m(ey)i(name)p Fs(.)150 2099 y(`)p Fn(-H)f +Fo(hash-function-name)5 b Fs(')150 2209 y(`)p Fn(--hash-fn-name=)p +Fo(hash-function-name)g Fs(')630 2318 y(Allo)m(ws)29 +b(y)m(ou)h(to)g(sp)s(ecify)f(the)h(name)g(for)f(the)h(generated)h(hash) +e(function.)39 b(Default)30 b(name)630 2428 y(is)f(`)p +Fn(hash)p Fs('.)40 b(This)29 b(option)h(p)s(ermits)e(the)j(use)f(of)h +(t)m(w)m(o)g(hash)f(tables)g(in)f(the)i(same)g(\014le.)150 +2635 y(`)p Fn(-N)f Fo(lo)s(okup-function-name)5 b Fs(')150 +2745 y(`)p Fn(--lookup-fn-name=)p Fo(lo)s(okup-fun)o(ction-name)g +Fs(')630 2855 y(Allo)m(ws)41 b(y)m(ou)h(to)h(sp)s(ecify)d(the)j(name)f +(for)f(the)h(generated)h(lo)s(okup)e(function.)74 b(Default)630 +2964 y(name)33 b(is)e(`)p Fn(in_word_set)p Fs('.)45 b(This)31 +b(option)h(p)s(ermits)f(completely)h(automatic)i(generation)630 +3074 y(of)24 b(p)s(erfect)h(hash)e(functions,)h(esp)s(ecially)f(when)g +(m)m(ultiple)f(generated)j(hash)f(functions)f(are)630 +3183 y(used)30 b(in)f(the)h(same)h(application.)150 3391 +y(`)p Fn(-Z)f Fo(class-name)5 b Fs(')150 3500 y(`)p Fn(--class-name=)p +Fo(class-name)g Fs(')630 3610 y(This)32 b(option)h(is)f(only)h(useful)f +(when)h(option)g(`)p Fn(-L)d(C++)p Fs(')i(has)i(b)s(een)f(giv)m(en.)50 +b(It)34 b(allo)m(ws)f(y)m(ou)630 3720 y(to)e(sp)s(ecify)e(the)i(name)f +(of)h(generated)g(C)p Fn(++)e Fs(class.)41 b(Default)30 +b(name)h(is)e Fn(Perfect_Hash)p Fs(.)150 3927 y(`)p Fn(-7)p +Fs(')150 4037 y(`)p Fn(--seven-bit)p Fs(')630 4146 y(This)35 +b(option)i(sp)s(eci\014es)f(that)h(all)f(strings)g(that)i(will)c(b)s(e) +j(passed)f(as)i(argumen)m(ts)f(to)h(the)630 4256 y(generated)e(hash)e +(function)f(and)i(the)g(generated)g(lo)s(okup)f(function)f(will)f +(solely)i(consist)630 4365 y(of)26 b(7-bit)f(ASCI)s(I)f(c)m(haracters)i +(\(c)m(haracters)i(in)c(the)h(range)h(0..127\).)42 b(\(Note)27 +b(that)f(the)f(ANSI)630 4475 y(C)30 b(functions)f Fn(isalnum)g +Fs(and)h Fn(isgraph)e Fs(do)j Fl(not)40 b Fs(guaran)m(tee)32 +b(that)f(a)g(c)m(haracter)h(is)e(in)f(this)630 4585 y(range.)44 +b(Only)30 b(an)h(explicit)f(test)i(lik)m(e)e(`)p Fn(c)h(>=)e('A')h(&&)g +(c)g(<=)f('Z')p Fs(')i(guaran)m(tees)i(this.\))43 b(This)630 +4694 y(w)m(as)g(the)f(default)g(in)f(v)m(ersions)h(of)g +Fn(gperf)f Fs(earlier)g(than)i(2.7;)49 b(no)m(w)43 b(the)f(default)g +(is)f(to)630 4804 y(assume)30 b(8-bit)g(c)m(haracters.)150 +5011 y(`)p Fn(-c)p Fs(')150 5121 y(`)p Fn(--compare-strncmp)p +Fs(')630 5230 y(Generates)22 b(C)f(co)s(de)g(that)h(uses)e(the)i +Fn(strncmp)d Fs(function)g(to)j(p)s(erform)e(string)g(comparisons.)630 +5340 y(The)30 b(default)f(action)i(is)f(to)h(use)f Fn(strcmp)p +Fs(.)p eop %%Page: 17 19 -17 18 bop 0 -116 a Fm(Chapter)30 b(3:)41 b(High-Lev)m(el)30 -b(Description)g(of)g(GNU)h Fk(gperf)1820 b Fm(17)0 366 -y Fk(word_set)24 b Fm(routines.)38 b(Ho)m(w)m(ev)m(er,)29 -b(function)24 b Fk(in_word_set)f Fm(ma)m(y)j(b)s(e)g(mo)s(di\014ed)d -(more)j(extensiv)m(ely)-8 b(,)27 b(in)e(resp)s(onse)0 -491 y(to)31 b(y)m(our)f(option)g(settings.)41 b(The)30 -b(options)g(that)g(a\013ect)i(the)f Fk(in_word_set)c -Fm(structure)j(are:)180 790 y(`)p Fk(-t)p Fm(')334 b(Mak)m(e)32 -b(use)e(of)h(the)f(user-de\014ned)f Fk(struct)p Fm(.)180 -964 y(`)p Fk(-S)h Fh(total)h(switc)m(h)f(statemen)m(ts)t -Fm(')660 1089 y(Generate)h(1)g(or)f(more)g(C)g Fk(switch)e -Fm(statemen)m(t)k(rather)e(than)g(use)g(a)g(large,)g(\(and)g(p)s(oten)m -(tially)660 1213 y(sparse\))j(static)g(arra)m(y)-8 b(.)50 -b(Although)32 b(the)h(exact)i(time)d(and)g(space)i(sa)m(vings)f(of)g -(this)f(approac)m(h)660 1338 y(v)-5 b(ary)42 b(according)g(to)i(y)m -(our)e(C)g(compiler's)f(degree)i(of)f(optimization,)j(this)c(metho)s(d) -h(often)660 1462 y(results)29 b(in)g(smaller)g(and)h(faster)h(co)s(de.) -125 1761 y(If)20 b(the)h(`)p Fk(-t)p Fm(')f(and)h(`)p -Fk(-S)p Fm(')f(options)g(are)i(omitted,)h(the)e(default)f(action)h(is)e -(to)j(generate)g(a)f Fk(char)30 b(*)20 b Fm(arra)m(y)h(con)m(taining)0 -1886 y(the)32 b(k)m(eys,)g(together)h(with)e(additional)e(n)m(ull)h -(strings)g(used)h(for)g(padding)f(the)h(arra)m(y)-8 b(.)46 -b(By)31 b(exp)s(erimen)m(ting)f(with)0 2010 y(the)e(v)-5 -b(arious)27 b(input)f(and)h(output)g(options,)h(and)g(timing)e(the)i -(resulting)e(C)h(co)s(de,)i(y)m(ou)f(can)g(determine)f(the)h(b)s(est)0 -2135 y(option)i(c)m(hoices)h(for)f(di\013eren)m(t)g(k)m(eyw)m(ord)h -(set)g(c)m(haracteristics.)p eop -%%Page: 18 20 -18 19 bop 0 -116 a Fm(18)2920 b(User's)31 b(Guide)e(to)i -Fk(gperf)p eop -%%Page: 19 21 -19 20 bop 0 -116 a Fm(Chapter)30 b(4:)41 b(Options)29 -b(to)i(the)g Fk(gperf)d Fm(Utilit)m(y)2203 b(19)0 366 -y Fj(4)80 b(Options)30 b(to)g(the)f Fg(gperf)h Fj(Utilit)l(y)125 -739 y Fm(There)38 b(are)i Fh(man)m(y)47 b Fm(options)39 -b(to)h Fk(gperf)p Fm(.)66 b(They)39 b(w)m(ere)h(added)e(to)i(mak)m(e)h -(the)e(program)g(more)h(con)m(v)m(enien)m(t)0 863 y(for)34 -b(use)f(with)g(real)g(applications.)49 b(\\On-line")33 -b(help)f(is)h(readily)g(a)m(v)-5 b(ailable)33 b(via)g(the)h(`)p -Fk(-h)p Fm(')g(option.)51 b(Here)34 b(is)f(the)0 988 -y(complete)e(list)e(of)h(options.)0 1435 y Fi(4.1)68 -b(Options)31 b(that)g(a\013ect)g(In)l(terpretation)i(of)d(the)h(Input)f -(File)180 1733 y Fm(`)p Fk(-e)g Fh(k)m(eyw)m(ord)h(delimiter)d(list)r -Fm(')660 1858 y(Allo)m(ws)23 b(the)h(user)g(to)h(pro)m(vide)e(a)h -(string)f(con)m(taining)h(delimiters)d(used)j(to)h(separate)g(k)m(eyw)m -(ords)660 1982 y(from)j(their)g(attributes.)40 b(The)29 -b(default)f(is)g Fk(")p Fm(,)p Fk(\\)p Fm(n)p Fk(")p -Fm(.)39 b(This)27 b(option)i(is)f(essen)m(tial)g(if)g(y)m(ou)h(w)m(an)m -(t)h(to)660 2107 y(use)g(k)m(eyw)m(ords)h(that)f(ha)m(v)m(e)i(em)m(b)s -(edded)d(commas)i(or)f(newlines.)38 b(One)30 b(useful)f(tric)m(k)h(is)f -(to)i(use)660 2232 y(-e'T)-8 b(AB',)32 b(where)e(T)-8 -b(AB)31 b(is)f(the)g(literal)f(tab)i(c)m(haracter.)180 -2405 y(`)p Fk(-t)p Fm(')334 b(Allo)m(ws)39 b(y)m(ou)h(to)g(include)e(a) -i Fk(struct)e Fm(t)m(yp)s(e)i(declaration)g(for)f(generated)i(co)s(de.) -69 b(An)m(y)40 b(text)660 2530 y(b)s(efore)h(a)h(pair)e(of)i -(consecutiv)m(e)g(\045\045)f(is)g(consider)f(part)h(of)h(the)g(t)m(yp)s -(e)f(declaration.)74 b(Key)660 2654 y(w)m(ords)32 b(and)g(additional)e -(\014elds)h(ma)m(y)j(follo)m(w)d(this,)i(one)f(group)g(of)h(\014elds)e -(p)s(er)h(line.)45 b(A)33 b(set)g(of)660 2779 y(examples)i(for)h -(generating)g(p)s(erfect)g(hash)f(tables)h(and)f(functions)g(for)g -(Ada,)j(C,)e(and)f(G)p Fk(++)p Fm(,)660 2903 y(P)m(ascal,)c(and)f(Mo)s -(dula)f(2)i(and)f(3)h(reserv)m(ed)f(w)m(ords)g(are)h(distributed)c -(with)i(this)h(release.)0 3350 y Fi(4.2)68 b(Options)31 -b(to)g(sp)t(ecify)f(the)h(Language)g(for)f(the)h(Output)f(Co)t(de)180 -3649 y Fm(`)p Fk(-L)g Fh(generated)h(language)g(name)5 -b Fm(')660 3773 y(Instructs)35 b Fk(gperf)f Fm(to)i(generate)h(co)s(de) -f(in)e(the)i(language)g(sp)s(eci\014ed)d(b)m(y)j(the)g(option's)f -(argu-)660 3898 y(men)m(t.)41 b(Languages)31 b(handled)e(are)i(curren)m -(tly:)840 4072 y(`)p Fk(KR-C)p Fm(')238 b(Old-st)m(yle)43 -b(K&R)g(C.)h(This)e(language)i(is)f(understo)s(o)s(d)f(b)m(y)i(old-st)m -(yle)f(C)1320 4196 y(compilers)25 b(and)i(ANSI)f(C)h(compilers,)f(but)g -(ANSI)h(C)g(compilers)e(ma)m(y)j(\015ag)1320 4321 y(w)m(arnings)h(\(or) -i(ev)m(en)g(errors\))f(b)s(ecause)g(of)h(lac)m(king)f(`)p -Fk(const)p Fm('.)840 4494 y(`)p Fk(C)p Fm(')382 b(Common)35 -b(C.)g(This)f(language)h(is)g(understo)s(o)s(d)e(b)m(y)i(ANSI)g(C)g -(compilers,)1320 4619 y(and)44 b(also)g(b)m(y)g(old-st)m(yle)g(C)f -(compilers,)k(pro)m(vided)c(that)h(y)m(ou)h Fk(#define)1320 -4744 y(const)33 b Fm(to)i(empt)m(y)g(for)g(compilers)e(whic)m(h)g -(don't)i(kno)m(w)f(ab)s(out)g(this)g(k)m(ey-)1320 4868 -y(w)m(ord.)840 5042 y(`)p Fk(ANSI-C)p Fm(')142 b(ANSI)33 -b(C.)h(This)d(language)j(is)f(understo)s(o)s(d)f(b)m(y)h(ANSI)g(C)h -(compilers)e(and)1320 5166 y(C)p Fk(++)d Fm(compilers.)840 -5340 y(`)p Fk(C++)p Fm(')286 b(C)p Fk(++)p Fm(.)40 b(This)28 -b(language)j(is)f(understo)s(o)s(d)e(b)m(y)i(C)p Fk(++)g -Fm(compilers.)p eop -%%Page: 20 22 -20 21 bop 0 -116 a Fm(20)2920 b(User's)31 b(Guide)e(to)i -Fk(gperf)660 366 y Fm(The)f(default)f(is)h(C.)180 548 -y(`)p Fk(-a)p Fm(')334 b(This)25 b(option)h(is)f(supp)s(orted)g(for)h +17 18 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 +b Fn(gperf)2433 b Fs(17)150 299 y(`)p Fn(-C)p Fs(')150 +408 y(`)p Fn(--readonly-tables)p Fs(')630 518 y(Mak)m(es)41 +b(the)f(con)m(ten)m(ts)h(of)f(all)f(generated)h(lo)s(okup)e(tables)i +(constan)m(t,)j(i.e.,)g(\\readonly".)630 628 y(Man)m(y)31 +b(compilers)e(can)i(generate)h(more)e(e\016cien)m(t)h(co)s(de)g(for)f +(this)g(b)m(y)g(putting)f(the)i(tables)630 737 y(in)e(readonly)h +(memory)-8 b(.)150 916 y(`)p Fn(-E)p Fs(')150 1026 y(`)p +Fn(--enum)p Fs(')142 b(De\014ne)31 b(constan)m(t)g(v)-5 +b(alues)30 b(using)f(an)h(en)m(um)g(lo)s(cal)g(to)h(the)g(lo)s(okup)e +(function)g(rather)h(than)630 1135 y(with)36 b(#de\014nes.)60 +b(This)35 b(also)i(means)h(that)f(di\013eren)m(t)g(lo)s(okup)f +(functions)g(can)h(reside)f(in)630 1245 y(the)31 b(same)f(\014le.)40 +b(Thanks)29 b(to)j(James)e(Clark)f Fn()p +Fs(.)150 1424 y(`)p Fn(-I)p Fs(')150 1534 y(`)p Fn(--includes)p +Fs(')630 1643 y(Include)g(the)i(necessary)h(system)f(include)e(\014le,) +h Fn()p Fs(,)f(at)i(the)g(b)s(eginning)e(of)i(the)630 +1753 y(co)s(de.)39 b(By)27 b(default,)f(this)f(is)g(not)h(done;)i(the)e +(user)f(m)m(ust)h(include)e(this)g(header)i(\014le)f(himself)630 +1862 y(to)31 b(allo)m(w)f(compilation)f(of)h(the)h(co)s(de.)150 +2041 y(`)p Fn(-G)p Fs(')150 2151 y(`)p Fn(--global)p +Fs(')630 2260 y(Generate)38 b(the)f(static)g(table)f(of)h(k)m(eyw)m +(ords)g(as)g(a)g(static)g(global)f(v)-5 b(ariable,)37 +b(rather)f(than)630 2370 y(hiding)28 b(it)i(inside)e(of)i(the)h(lo)s +(okup)e(function)g(\(whic)m(h)g(is)h(the)g(default)g(b)s(eha)m(vior\).) +150 2549 y(`)p Fn(-W)g Fo(hash-table-arra)m(y-name)5 +b Fs(')150 2659 y(`)p Fn(--word-array-name=)p Fo(hash-table-arra)m +(y-name)g Fs(')630 2768 y(Allo)m(ws)39 b(y)m(ou)h(to)h(sp)s(ecify)e +(the)h(name)g(for)f(the)i(generated)g(arra)m(y)f(con)m(taining)g(the)g +(hash)630 2878 y(table.)61 b(Default)37 b(name)g(is)f(`)p +Fn(wordlist)p Fs('.)60 b(This)35 b(option)i(p)s(ermits)e(the)i(use)g +(of)g(t)m(w)m(o)i(hash)630 2987 y(tables)30 b(in)f(the)i(same)g +(\014le,)e(ev)m(en)i(when)f(the)g(option)g(`)p Fn(-G)p +Fs(')g(is)g(giv)m(en.)150 3166 y(`)p Fn(-S)g Fo(total-switc)m +(h-statemen)m(ts)t Fs(')150 3276 y(`)p Fn(--switch=)p +Fo(total-switc)m(h-statemen)m(ts)t Fs(')630 3386 y(Causes)35 +b(the)h(generated)h(C)e(co)s(de)h(to)h(use)e(a)h Fn(switch)e +Fs(statemen)m(t)k(sc)m(heme,)g(rather)d(than)630 3495 +y(an)j(arra)m(y)g(lo)s(okup)f(table.)63 b(This)36 b(can)i(lead)g(to)g +(a)h(reduction)e(in)f(b)s(oth)h(time)h(and)f(space)630 +3605 y(requiremen)m(ts)f(for)g(some)h(k)m(ey\014les.)60 +b(The)36 b(argumen)m(t)h(to)h(this)d(option)h(determines)g(ho)m(w)630 +3714 y(man)m(y)c Fn(switch)f Fs(statemen)m(ts)j(are)e(generated.)47 +b(A)32 b(v)-5 b(alue)32 b(of)g(1)h(generates)g(1)g Fn(switch)d +Fs(con-)630 3824 y(taining)h(all)h(the)h(elemen)m(ts,)g(a)g(v)-5 +b(alue)32 b(of)h(2)g(generates)h(2)f(tables)g(with)e(1/2)j(the)f +(elemen)m(ts)630 3933 y(in)k(eac)m(h)i Fn(switch)p Fs(,)g(etc.)65 +b(This)36 b(is)h(useful)g(since)g(man)m(y)i(C)e(compilers)g(cannot)i +(correctly)630 4043 y(generate)29 b(co)s(de)f(for)f(large)g +Fn(switch)f Fs(statemen)m(ts.)41 b(This)26 b(option)h(w)m(as)h +(inspired)c(in)i(part)h(b)m(y)630 4153 y(Keith)j(Bostic's)h(original)d +(C)i(program.)150 4332 y(`)p Fn(-T)p Fs(')150 4441 y(`)p +Fn(--omit-struct-type)p Fs(')630 4551 y(Prev)m(en)m(ts)f(the)e +(transfer)h(of)f(the)h(t)m(yp)s(e)g(declaration)f(to)i(the)f(output)f +(\014le.)39 b(Use)28 b(this)e(option)630 4660 y(if)j(the)i(t)m(yp)s(e)f +(is)g(already)g(de\014ned)f(elsewhere.)150 4839 y(`)p +Fn(-p)p Fs(')334 b(This)32 b(option)h(is)f(supp)s(orted)g(for)h (compatibilit)m(y)f(with)g(previous)g(releases)i(of)g -Fk(gperf)p Fm(.)38 b(It)26 b(do)s(es)660 672 y(not)31 -b(do)f(an)m(ything.)180 853 y(`)p Fk(-g)p Fm(')334 b(This)25 -b(option)h(is)f(supp)s(orted)g(for)h(compatibilit)m(y)f(with)g -(previous)g(releases)i(of)g Fk(gperf)p Fm(.)38 b(It)26 -b(do)s(es)660 978 y(not)31 b(do)f(an)m(ything.)0 1457 -y Fi(4.3)68 b(Options)31 b(for)f(\014ne)g(tuning)h(Details)h(in)e(the)h -(Output)f(Co)t(de)180 1762 y Fm(`)p Fk(-K)g Fh(k)m(ey)h(name)5 -b Fm(')660 1887 y(This)20 b(option)h(is)g(only)g(useful)f(when)h -(option)h(`)p Fk(-t)p Fm(')f(has)h(b)s(een)f(giv)m(en.)38 -b(By)22 b(default,)h(the)f(program)660 2012 y(assumes)28 -b(the)i(structure)e(comp)s(onen)m(t)h(iden)m(ti\014er)e(for)i(the)g(k)m -(eyw)m(ord)g(is)f(`)p Fk(name)p Fm('.)39 b(This)27 b(option)660 -2136 y(allo)m(ws)34 b(an)h(arbitrary)e(c)m(hoice)i(of)g(iden)m -(ti\014er)e(for)h(this)g(comp)s(onen)m(t,)i(although)e(it)h(still)d(m)m -(ust)660 2261 y(o)s(ccur)e(as)h(the)f(\014rst)g(\014eld)f(in)g(y)m(our) -h(supplied)d Fk(struct)p Fm(.)180 2442 y(`)p Fk(-H)j -Fh(hash)g(function)f(name)5 b Fm(')660 2566 y(Allo)m(ws)31 -b(y)m(ou)h(to)h(sp)s(ecify)d(the)i(name)g(for)f(the)h(generated)h(hash) -e(function.)44 b(Default)32 b(name)g(is)660 2691 y(`)p -Fk(hash)p Fm('.)40 b(This)29 b(option)g(p)s(ermits)g(the)i(use)f(of)g -(t)m(w)m(o)i(hash)e(tables)g(in)f(the)h(same)h(\014le.)180 -2872 y(`)p Fk(-N)f Fh(lo)s(okup)f(function)g(name)5 b -Fm(')660 2996 y(Allo)m(ws)31 b(y)m(ou)i(to)g(sp)s(ecify)e(the)i(name)f -(for)g(the)h(generated)g(lo)s(okup)e(function.)45 b(Default)33 -b(name)660 3121 y(is)27 b(`)p Fk(in_word_set)p Fm('.)37 -b(This)26 b(option)h(p)s(ermits)f(completely)h(automatic)i(generation)f -(of)g(p)s(erfect)660 3246 y(hash)h(functions,)g(esp)s(ecially)g(when)g -(m)m(ultiple)e(generated)k(hash)f(functions)e(are)j(used)e(in)g(the)660 -3370 y(same)i(application.)180 3551 y(`)p Fk(-Z)f Fh(class)g(name)5 -b Fm(')660 3676 y(This)32 b(option)i(is)e(only)i(useful)e(when)h -(option)g(`)p Fk(-L)d(C++)p Fm(')j(has)h(b)s(een)f(giv)m(en.)52 -b(It)34 b(allo)m(ws)f(y)m(ou)h(to)660 3800 y(sp)s(ecify)29 -b(the)i(name)f(of)h(generated)g(C)p Fk(++)e Fm(class.)41 -b(Default)30 b(name)h(is)e Fk(Perfect_Hash)p Fm(.)180 -3981 y(`)p Fk(-7)p Fm(')334 b(This)29 b(option)i(sp)s(eci\014es)f(that) -h(all)f(strings)g(that)i(will)c(b)s(e)j(passed)f(as)i(argumen)m(ts)f -(to)h(the)f(gen-)660 4106 y(erated)e(hash)f(function)g(and)g(the)h -(generated)g(lo)s(okup)f(function)f(will)f(solely)i(consist)g(of)h -(7-bit)660 4231 y(ASCI)s(I)k(c)m(haracters)j(\(c)m(haracters)g(in)e -(the)g(range)h(0..127\).)56 b(\(Note)36 b(that)f(the)g(ANSI)f(C)h -(func-)660 4355 y(tions)k Fk(isalnum)e Fm(and)i Fk(isgraph)f -Fm(do)h Fh(not)j Fm(guaran)m(tee)e(that)h(a)e(c)m(haracter)i(is)e(in)f -(this)g(range.)660 4480 y(Only)e(an)h(explicit)f(test)i(lik)m(e)f(`)p -Fk(c)30 b(>=)g('A')f(&&)h(c)g(<=)g('Z')p Fm(')37 b(guaran)m(tees)h -(this.\))61 b(This)36 b(w)m(as)i(the)660 4604 y(default)29 -b(in)g(earlier)g(v)m(ersions)g(of)h Fk(gperf)p Fm(;)f(no)m(w)h(the)g -(default)f(is)g(to)i(assume)e(8-bit)h(c)m(haracters.)180 -4785 y(`)p Fk(-c)p Fm(')334 b(Generates)33 b(C)f(co)s(de)g(that)g(uses) -g(the)g Fk(strncmp)e Fm(function)h(to)h(p)s(erform)f(string)g -(comparisons.)660 4910 y(The)f(default)f(action)i(is)f(to)h(use)f -Fk(strcmp)p Fm(.)180 5091 y(`)p Fk(-C)p Fm(')334 b(Mak)m(es)27 -b(the)f(con)m(ten)m(ts)h(of)f(all)e(generated)j(lo)s(okup)d(tables)h -(constan)m(t,)j(i.e.,)f(\\readonly".)39 b(Man)m(y)660 -5215 y(compilers)21 b(can)i(generate)h(more)f(e\016cien)m(t)g(co)s(de)g -(for)f(this)f(b)m(y)i(putting)e(the)i(tables)g(in)e(readonly)660 -5340 y(memory)-8 b(.)p eop +Fn(gperf)p Fs(.)49 b(It)630 4949 y(do)s(es)30 b(not)h(do)f(an)m +(ything.)150 5255 y Fr(4.4)68 b(Options)45 b(for)g(c)l(hanging)h(the)f +(Algorithms)h(emplo)l(y)l(ed)g(b)l(y)f Fk(gperf)p eop +%%Page: 18 20 +18 19 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 +b Fn(gperf)2433 b Fs(18)150 299 y(`)p Fn(-k)30 b Fo(k)m(eys)t +Fs(')150 408 y(`)p Fn(--key-positions=)p Fo(k)m(eys)t +Fs(')630 518 y(Allo)m(ws)25 b(selection)i(of)f(the)h(c)m(haracter)h(k)m +(ey)f(p)s(ositions)d(used)h(in)g(the)i(k)m(eyw)m(ords')g(hash)f(func-) +630 628 y(tion.)51 b(The)33 b(allo)m(w)m(able)g(c)m(hoices)i(range)f(b) +s(et)m(w)m(een)h(1-126,)i(inclusiv)m(e.)48 b(The)34 b(p)s(ositions)e +(are)630 737 y(separated)d(b)m(y)f(commas,)i(e.g.,)g(`)p +Fn(-k)g(9,4,13,14)p Fs(';)d(ranges)i(ma)m(y)g(b)s(e)f(used,)g(e.g.,)i +(`)p Fn(-k)g(2-7)p Fs(';)630 847 y(and)41 b(p)s(ositions)f(ma)m(y)i(o)s +(ccur)f(in)g(an)m(y)h(order.)74 b(F)-8 b(urthermore,)45 +b(the)c(meta-c)m(haracter)k('*')630 956 y(causes)35 b(the)h(generated)g +(hash)e(function)g(to)i(consider)e Fe(all)h Fs(c)m(haracter)i(p)s +(ositions)c(in)h(eac)m(h)630 1066 y(k)m(ey)-8 b(,)28 +b(whereas)e('$')h(instructs)e(the)h(hash)f(function)g(to)i(use)e(the)h +(\\\014nal)g(c)m(haracter")i(of)e(a)g(k)m(ey)630 1176 +y(\(this)g(is)g(the)h(only)f(w)m(a)m(y)i(to)g(use)e(a)h(c)m(haracter)i +(p)s(osition)c(greater)j(than)f(126,)i(inciden)m(tally\).)630 +1346 y(F)-8 b(or)37 b(instance,)g(the)f(option)g(`)p +Fn(-k)30 b(1,2,4,6-10,'$')p Fs(')i(generates)38 b(a)e(hash)g(function)e +(that)630 1456 y(considers)g(p)s(ositions)f(1,2,4,6,7,8,9,10,)42 +b(plus)33 b(the)i(last)g(c)m(haracter)i(in)d(eac)m(h)i(k)m(ey)g(\(whic) +m(h)630 1565 y(ma)m(y)24 b(di\013er)e(for)h(eac)m(h)i(k)m(ey)-8 +b(,)26 b(ob)m(viously\).)38 b(Keys)23 b(with)f(length)h(less)f(than)i +(the)f(indicated)f(k)m(ey)630 1675 y(p)s(ositions)33 +b(w)m(ork)i(prop)s(erly)-8 b(,)34 b(since)g(selected)i(k)m(ey)f(p)s +(ositions)e(exceeding)i(the)g(k)m(ey)h(length)630 1784 +y(are)31 b(simply)d(not)i(referenced)h(in)e(the)h(hash)g(function.)150 +2016 y(`)p Fn(-l)p Fs(')150 2125 y(`)p Fn(--compare-strlen)p +Fs(')630 2235 y(Compare)i(k)m(ey)h(lengths)f(b)s(efore)g(trying)f(a)i +(string)e(comparison.)46 b(This)31 b(migh)m(t)h(cut)g(do)m(wn)630 +2345 y(on)g(the)g(n)m(um)m(b)s(er)e(of)i(string)f(comparisons)g(made)h +(during)d(the)k(lo)s(okup,)e(since)g(k)m(eys)h(with)630 +2454 y(di\013eren)m(t)38 b(lengths)g(are)h(nev)m(er)g(compared)g(via)f +Fn(strcmp)p Fs(.)64 b(Ho)m(w)m(ev)m(er,)43 b(using)38 +b(`)p Fn(-l)p Fs(')g(migh)m(t)630 2564 y(greatly)f(increase)f(the)h +(size)g(of)f(the)h(generated)h(C)e(co)s(de)h(if)e(the)i(lo)s(okup)e +(table)i(range)g(is)630 2673 y(large)25 b(\(whic)m(h)e(implies)f(that)j +(the)g(switc)m(h)f(option)g(`)p Fn(-S)p Fs(')h(is)f(not)g(enabled\),)i +(since)e(the)h(length)630 2783 y(table)31 b(con)m(tains)h(as)g(man)m(y) +g(elemen)m(ts)g(as)f(there)h(are)g(en)m(tries)f(in)g(the)g(lo)s(okup)g +(table.)44 b(This)630 2892 y(option)34 b(is)g(mandatory)g(for)g(binary) +f(comparisons)h(\(see)h(Section)f(3.3)i([Binary)e(Strings],)630 +3002 y(page)d(14\).)150 3233 y(`)p Fn(-D)p Fs(')150 3343 +y(`)p Fn(--duplicates)p Fs(')630 3453 y(Handle)j(k)m(eyw)m(ords)h +(whose)f(k)m(ey)i(p)s(osition)d(sets)i(hash)f(to)h(duplicate)e(v)-5 +b(alues.)53 b(Duplicate)630 3562 y(hash)30 b(v)-5 b(alues)29 +b(o)s(ccur)i(for)f(t)m(w)m(o)h(reasons:)705 3733 y Fq(\017)60 +b Fs(Since)42 b Fn(gperf)g Fs(do)s(es)h(not)g(bac)m(ktrac)m(k)j(it)c +(is)h(p)s(ossible)d(for)j(it)g(to)h(pro)s(cess)f(all)f(y)m(our)810 +3842 y(input)23 b(k)m(eyw)m(ords)j(without)e(\014nding)f(a)i(unique)e +(mapping)h(for)h(eac)m(h)h(w)m(ord.)39 b(Ho)m(w)m(ev)m(er,)810 +3952 y(frequen)m(tly)28 b(only)h(a)h(v)m(ery)f(small)f(n)m(um)m(b)s(er) +g(of)h(duplicates)f(o)s(ccur,)i(and)e(the)i(ma)5 b(jorit)m(y)810 +4061 y(of)31 b(k)m(eys)g(still)d(require)h(one)i(prob)s(e)e(in)m(to)h +(the)h(table.)705 4232 y Fq(\017)60 b Fs(Sometimes)35 +b(a)h(set)g(of)f(k)m(eys)h(ma)m(y)g(ha)m(v)m(e)h(the)f(same)f(names,)i +(but)e(p)s(ossess)f(di\013eren)m(t)810 4341 y(attributes.)86 +b(With)45 b(the)g(-D)i(option)e Fn(gperf)f Fs(treats)i(all)f(these)h(k) +m(eys)g(as)f(part)h(of)810 4451 y(an)37 b(equiv)-5 b(alence)36 +b(class)g(and)g(generates)j(a)e(p)s(erfect)f(hash)g(function)g(with)f +(m)m(ultiple)810 4561 y(comparisons)26 b(for)g(duplicate)f(k)m(eys.)40 +b(It)26 b(is)g(up)f(to)j(y)m(ou)e(to)i(completely)e(disam)m(biguate)810 +4670 y(the)36 b(k)m(eyw)m(ords)f(b)m(y)g(mo)s(difying)e(the)j +(generated)g(C)f(co)s(de.)56 b(Ho)m(w)m(ev)m(er,)39 b +Fn(gperf)33 b Fs(helps)810 4780 y(y)m(ou)e(out)f(b)m(y)h(organizing)e +(the)i(output.)630 5011 y(Option)i(`)p Fn(-D)p Fs(')i(is)f(extremely)g +(useful)f(for)i(certain)f(large)h(or)g(highly)d(redundan)m(t)h(k)m(eyw) +m(ord)630 5121 y(sets,)e(e.g.,)h(assem)m(bler)e(instruction)e(op)s(co)s +(des.)41 b(Using)30 b(this)f(option)h(usually)e(means)i(that)630 +5230 y(the)d(generated)h(hash)f(function)f(is)g(no)h(longer)g(p)s +(erfect.)39 b(On)26 b(the)i(other)f(hand,)g(it)g(p)s(ermits)630 +5340 y Fn(gperf)i Fs(to)i(w)m(ork)g(on)f(k)m(eyw)m(ord)h(sets)f(that)h +(it)f(otherwise)g(could)g(not)g(handle.)p eop +%%Page: 19 21 +19 20 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 +b Fn(gperf)2433 b Fs(19)150 299 y(`)p Fn(-f)30 b Fo(iteration-amoun)m +(t)r Fs(')150 408 y(`)p Fn(--fast=)p Fo(iteration-amoun)m(t)r +Fs(')630 518 y(Generate)d(the)e(p)s(erfect)g(hash)g(function)f +(\\fast".)40 b(This)24 b(decreases)i Fn(gperf)p Fs('s)e(running)e(time) +630 628 y(at)27 b(the)f(cost)h(of)f(minimizing)c(generated)27 +b(table-size.)39 b(The)25 b(iteration)h(amoun)m(t)g(represen)m(ts)630 +737 y(the)32 b(n)m(um)m(b)s(er)e(of)i(times)f(to)h(iterate)h(when)d +(resolving)h(a)h(collision.)42 b(`0')32 b(means)g(iterate)g(b)m(y)630 +847 y(the)40 b(n)m(um)m(b)s(er)e(of)i(k)m(eyw)m(ords.)70 +b(This)37 b(option)j(is)e(probably)g(most)j(useful)d(when)g(used)h(in) +630 956 y(conjunction)29 b(with)g(options)h(`)p Fn(-D)p +Fs(')g(and/or)h(`)p Fn(-S)p Fs(')f(for)g Fl(lar)-5 b(ge)38 +b Fs(k)m(eyw)m(ord)31 b(sets.)150 1154 y(`)p Fn(-i)f +Fo(initial-v)-5 b(alue)5 b Fs(')150 1263 y(`)p Fn(--initial-asso=)p +Fo(initial)o(-v)-5 b(alue)5 b Fs(')630 1373 y(Pro)m(vides)28 +b(an)g(initial)d Fo(v)-5 b(alue)33 b Fs(for)28 b(the)g(asso)s(ciate)h +(v)-5 b(alues)28 b(arra)m(y)-8 b(.)41 b(Default)28 b(is)f(0.)41 +b(Increasing)630 1482 y(the)30 b(initial)d(v)-5 b(alue)30 +b(helps)e(in\015ate)h(the)h(\014nal)f(table)h(size,)g(p)s(ossibly)d +(leading)i(to)h(more)g(time)630 1592 y(e\016cien)m(t)e(k)m(eyw)m(ord)f +(lo)s(okups.)38 b(Note)29 b(that)e(this)f(option)h(is)f(not)h +(particularly)e(useful)g(when)630 1702 y(`)p Fn(-S)p +Fs(')30 b(is)g(used.)40 b(Also,)30 b(`)p Fn(-i)p Fs(')g(is)g(o)m(v)m +(erridden)f(when)g(the)i(`)p Fn(-r)p Fs(')f(option)g(is)g(used.)150 +1899 y(`)p Fn(-j)g Fo(jump-v)-5 b(alue)5 b Fs(')150 2008 +y(`)p Fn(--jump=)p Fo(jump-v)-5 b(alue)5 b Fs(')630 2118 +y(A\013ects)25 b(the)f(\\jump)f(v)-5 b(alue",)26 b(i.e.,)f(ho)m(w)f +(far)g(to)h(adv)-5 b(ance)24 b(the)g(asso)s(ciated)h(c)m(haracter)g(v) +-5 b(alue)630 2228 y(up)s(on)29 b(collisions.)39 b Fo(Jump-v)-5 +b(alue)34 b Fs(is)29 b(rounded)g(up)h(to)h(an)f(o)s(dd)g(n)m(um)m(b)s +(er,)f(the)i(default)f(is)f(5.)630 2337 y(If)h(the)g +Fo(jump-v)-5 b(alue)34 b Fs(is)c(0)g Fn(gperf)f Fs(jumps)g(b)m(y)h +(random)g(amoun)m(ts.)150 2534 y(`)p Fn(-n)p Fs(')150 +2644 y(`)p Fn(--no-strlen)p Fs(')630 2754 y(Instructs)c(the)i +(generator)g(not)f(to)h(include)d(the)j(length)e(of)h(a)h(k)m(eyw)m +(ord)g(when)e(computing)630 2863 y(its)40 b(hash)g(v)-5 +b(alue.)71 b(This)39 b(ma)m(y)i(sa)m(v)m(e)h(a)f(few)f(assem)m(bly)g +(instructions)f(in)g(the)i(generated)630 2973 y(lo)s(okup)29 +b(table.)150 3170 y(`)p Fn(-o)p Fs(')150 3280 y(`)p Fn +(--occurrence-sort)p Fs(')630 3389 y(Reorders)43 b(the)h(k)m(eyw)m +(ords)g(b)m(y)f(sorting)g(the)h(k)m(eyw)m(ords)g(so)g(that)g(frequen)m +(tly)f(o)s(ccuring)630 3499 y(k)m(ey)34 b(p)s(osition)e(set)h(comp)s +(onen)m(ts)h(app)s(ear)f(\014rst.)48 b(A)34 b(second)f(reordering)f +(pass)h(follo)m(ws)g(so)630 3608 y(that)43 b(k)m(eys)g(with)e +(\\already)i(determined)e(v)-5 b(alues")42 b(are)h(placed)e(to)m(w)m +(ards)j(the)e(fron)m(t)h(of)630 3718 y(the)c(k)m(eylist.)67 +b(This)37 b(ma)m(y)j(decrease)g(the)f(time)g(required)e(to)j(generate)g +(a)g(p)s(erfect)f(hash)630 3828 y(function)33 b(for)h(man)m(y)g(k)m +(eyw)m(ord)h(sets,)h(and)d(also)i(pro)s(duce)e(more)h(minimal)e(p)s +(erfect)i(hash)630 3937 y(functions.)68 b(The)39 b(reason)h(for)g(this) +f(is)f(that)j(the)f(reordering)f(helps)f(prune)g(the)i(searc)m(h)630 +4047 y(time)28 b(b)m(y)h(handling)d(inevitable)h(collisions)f(early)i +(in)f(the)i(searc)m(h)g(pro)s(cess.)40 b(On)28 b(the)h(other)630 +4156 y(hand,)i(if)f(the)i(n)m(um)m(b)s(er)e(of)i(k)m(eyw)m(ords)g(is)e +Fl(very)40 b Fs(large)31 b(using)f(`)p Fn(-o)p Fs(')i(ma)m(y)g +Fl(incr)-5 b(e)g(ase)39 b Fn(gperf)p Fs('s)630 4266 y(execution)34 +b(time,)h(since)e(collisions)f(will)f(b)s(egin)i(earlier)g(and)g(con)m +(tin)m(ue)h(throughout)g(the)630 4376 y(remainder)f(of)h(k)m(eyw)m(ord) +h(pro)s(cessing.)51 b(See)35 b(Cic)m(helli's)d(pap)s(er)h(from)h(the)g +(Jan)m(uary)g(1980)630 4485 y(Comm)m(unications)29 b(of)h(the)h(A)m(CM) +g(for)f(details.)150 4682 y(`)p Fn(-r)p Fs(')150 4792 +y(`)p Fn(--random)p Fs(')630 4902 y(Utilizes)37 b(randomness)h(to)h +(initialize)c(the)k(asso)s(ciated)g(v)-5 b(alues)37 b(table.)65 +b(This)37 b(frequen)m(tly)630 5011 y(generates)23 b(solutions)c(faster) +j(than)f(using)f(deterministic)f(initialization)f(\(whic)m(h)i(starts)i +(all)630 5121 y(asso)s(ciated)27 b(v)-5 b(alues)27 b(at)g(0\).)40 +b(F)-8 b(urthermore,)28 b(using)e(the)h(randomization)e(option)i +(generally)630 5230 y(increases)33 b(the)h(size)f(of)g(the)h(table.)50 +b(If)33 b Fn(gperf)f Fs(has)h(di\016cultly)d(with)i(a)i(certain)f(k)m +(eyw)m(ord)630 5340 y(set)e(try)f(using)f(`)p Fn(-r)p +Fs(')h(or)h(`)p Fn(-D)p Fs('.)p eop +%%Page: 20 22 +20 21 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 +b Fn(gperf)2433 b Fs(20)150 299 y(`)p Fn(-s)30 b Fo(size-m)m(ultiple)5 +b Fs(')150 408 y(`)p Fn(--size-multiple=)p Fo(size-m)m(ultipl)o(e)g +Fs(')630 518 y(A\013ects)40 b(the)e(size)g(of)h(the)f(generated)i(hash) +d(table.)65 b(The)38 b(n)m(umeric)f(argumen)m(t)i(for)f(this)630 +628 y(option)32 b(indicates)f(\\ho)m(w)i(man)m(y)g(times)f(larger)g(or) +g(smaller")g(the)g(maxim)m(um)f(asso)s(ciated)630 737 +y(v)-5 b(alue)23 b(range)h(should)d(b)s(e,)j(in)e(relationship)f(to)j +(the)g(n)m(um)m(b)s(er)e(of)h(k)m(eys.)40 b(If)22 b(the)i +Fo(size-m)m(ultiple)630 847 y Fs(is)31 b(negativ)m(e)j(the)e(maxim)m +(um)g(asso)s(ciated)g(v)-5 b(alue)32 b(is)g(calculated)g(b)m(y)g +Fl(dividing)41 b Fs(it)31 b(in)m(to)i(the)630 956 y(total)k(n)m(um)m(b) +s(er)e(of)h(k)m(eys.)59 b(F)-8 b(or)37 b(example,)h(a)f(v)-5 +b(alue)35 b(of)i(3)f(means)g(\\allo)m(w)h(the)f(maxim)m(um)630 +1066 y(asso)s(ciated)31 b(v)-5 b(alue)30 b(to)h(b)s(e)f(ab)s(out)g(3)g +(times)g(larger)g(than)h(the)f(n)m(um)m(b)s(er)f(of)i(input)d(k)m +(eys".)630 1200 y(Con)m(v)m(ersely)-8 b(,)42 b(a)e(v)-5 +b(alue)39 b(of)g(-3)h(means)g(\\allo)m(w)f(the)h(maxim)m(um)e(asso)s +(ciated)i(v)-5 b(alue)38 b(to)j(b)s(e)630 1310 y(ab)s(out)f(3)g(times)f +(smaller)f(than)i(the)g(n)m(um)m(b)s(er)f(of)h(input)d(k)m(eys".)71 +b(Negativ)m(e)41 b(v)-5 b(alues)40 b(are)630 1420 y(useful)i(for)i +(limiting)d(the)j(o)m(v)m(erall)h(size)f(of)g(the)g(generated)h(hash)f +(table,)j(though)d(this)630 1529 y(usually)28 b(increases)i(the)h(n)m +(um)m(b)s(er)e(of)h(duplicate)f(hash)h(v)-5 b(alues.)630 +1664 y(If)33 b(`generate)j(switc)m(h')e(option)f(`)p +Fn(-S)p Fs(')h(is)f Fl(not)43 b Fs(enabled,)34 b(the)g(maxim)m(um)f +(asso)s(ciated)h(v)-5 b(alue)630 1773 y(in\015uences)22 +b(the)j(static)f(arra)m(y)h(table)f(size,)h(and)f(a)g(larger)g(table)g +(should)e(decrease)j(the)f(time)630 1883 y(required)29 +b(for)h(an)g(unsuccessful)e(searc)m(h,)j(at)g(the)g(exp)s(ense)f(of)g +(extra)i(table)e(space.)630 2017 y(The)35 b(default)f(v)-5 +b(alue)35 b(is)f(1,)j(th)m(us)e(the)h(default)e(maxim)m(um)g(asso)s +(ciated)i(v)-5 b(alue)35 b(ab)s(out)g(the)630 2127 y(same)25 +b(size)f(as)h(the)f(n)m(um)m(b)s(er)g(of)g(k)m(eys)h(\(for)g +(e\016ciency)-8 b(,)26 b(the)f(maxim)m(um)e(asso)s(ciated)i(v)-5 +b(alue)24 b(is)630 2237 y(alw)m(a)m(ys)k(rounded)e(up)h(to)h(a)g(p)s(o) +m(w)m(er)g(of)g(2\).)40 b(The)27 b(actual)h(table)g(size)g(ma)m(y)g(v) +-5 b(ary)27 b(somewhat,)630 2346 y(since)21 b(this)g(tec)m(hnique)h(is) +f(essen)m(tially)f(a)j(heuristic.)36 b(In)21 b(particular,)h(setting)g +(this)f(v)-5 b(alue)21 b(to)s(o)630 2456 y(high)32 b(slo)m(ws)i(do)m +(wn)f Fn(gperf)p Fs('s)f(run)m(time,)i(since)f(it)g(m)m(ust)h(searc)m +(h)g(through)f(a)h(m)m(uc)m(h)g(larger)630 2565 y(range)f(of)h(v)-5 +b(alues.)48 b(Judicious)30 b(use)j(of)g(the)h(`)p Fn(-f)p +Fs(')f(option)f(helps)g(alleviate)h(this)e(o)m(v)m(erhead,)630 +2675 y(ho)m(w)m(ev)m(er.)150 2932 y Fr(4.5)68 b(Informativ)l(e)47 +b(Output)150 3150 y Fs(`)p Fn(-h)p Fs(')150 3259 y(`)p +Fn(--help)p Fs(')142 b(Prin)m(ts)23 b(a)h(short)f(summary)g(on)h(the)g +(meaning)f(of)h(eac)m(h)h(program)e(option.)38 b(Ab)s(orts)23 +b(further)630 3369 y(program)30 b(execution.)150 3528 +y(`)p Fn(-v)p Fs(')150 3638 y(`)p Fn(--version)p Fs(')630 +3748 y(Prin)m(ts)f(out)i(the)f(curren)m(t)h(v)m(ersion)e(n)m(um)m(b)s +(er.)150 3907 y(`)p Fn(-d)p Fs(')150 4017 y(`)p Fn(--debug)p +Fs(')94 b(Enables)27 b(the)i(debugging)e(option.)39 b(This)27 +b(pro)s(duces)g(v)m(erb)s(ose)i(diagnostics)e(to)i(\\standard)630 +4126 y(error")i(when)g Fn(gperf)f Fs(is)g(executing.)44 +b(It)32 b(is)e(useful)g(b)s(oth)h(for)g(main)m(taining)f(the)h(program) +630 4236 y(and)f(for)h(determining)e(whether)h(a)h(giv)m(en)g(set)g(of) +g(options)f(is)g(actually)h(sp)s(eeding)e(up)h(the)630 +4345 y(searc)m(h)41 b(for)e(a)h(solution.)68 b(Some)40 +b(useful)e(information)g(is)h(dump)s(ed)f(at)i(the)g(end)g(of)g(the)630 +4455 y(program)30 b(when)g(the)g(`)p Fn(-d)p Fs(')g(option)g(is)g +(enabled.)p eop %%Page: 21 23 -21 22 bop 0 -116 a Fm(Chapter)30 b(4:)41 b(Options)29 -b(to)i(the)g Fk(gperf)d Fm(Utilit)m(y)2203 b(21)180 366 -y(`)p Fk(-E)p Fm(')334 b(De\014ne)24 b(constan)m(t)h(v)-5 -b(alues)23 b(using)f(an)i(en)m(um)f(lo)s(cal)g(to)i(the)e(lo)s(okup)g -(function)f(rather)i(than)f(with)660 491 y(#de\014nes.)46 -b(This)31 b(also)i(means)f(that)h(di\013eren)m(t)g(lo)s(okup)e -(functions)g(can)i(reside)e(in)h(the)h(same)660 616 y(\014le.)40 -b(Thanks)29 b(to)i(James)g(Clark)e Fk()p -Fm(.)180 781 y(`)p Fk(-I)p Fm(')334 b(Include)40 b(the)h(necessary)h -(system)g(include)d(\014le,)k Fk()p Fm(,)f(at)g(the)g(b)s -(eginning)c(of)k(the)660 905 y(co)s(de.)52 b(By)35 b(default,)f(this)f -(is)h(not)g(done;)i(the)e(user)g(m)m(ust)g(include)e(this)h(header)h -(\014le)f(himself)660 1030 y(to)e(allo)m(w)f(compilation)f(of)h(the)h -(co)s(de.)180 1195 y(`)p Fk(-G)p Fm(')334 b(Generate)25 -b(the)g(static)f(table)g(of)g(k)m(eyw)m(ords)g(as)h(a)f(static)g -(global)g(v)-5 b(ariable,)24 b(rather)g(than)g(hiding)660 -1320 y(it)30 b(inside)e(of)j(the)f(lo)s(okup)f(function)g(\(whic)m(h)h -(is)f(the)i(default)e(b)s(eha)m(vior\).)180 1485 y(`)p -Fk(-W)h Fh(hash)g(table)g(arra)m(y)h(name)5 b Fm(')660 -1609 y(Allo)m(ws)28 b(y)m(ou)h(to)h(sp)s(ecify)e(the)h(name)g(for)g -(the)g(generated)h(arra)m(y)g(con)m(taining)e(the)i(hash)e(table.)660 -1734 y(Default)g(name)g(is)e(`)p Fk(wordlist)p Fm('.)38 -b(This)26 b(option)i(p)s(ermits)e(the)h(use)h(of)g(t)m(w)m(o)h(hash)e -(tables)g(in)g(the)660 1858 y(same)k(\014le,)e(ev)m(en)j(when)d(the)i -(option)e(`)p Fk(-G)p Fm(')i(is)e(giv)m(en.)180 2023 -y(`)p Fk(-S)h Fh(total)h(switc)m(h)f(statemen)m(ts)t -Fm(')660 2148 y(Causes)45 b(the)h(generated)g(C)f(co)s(de)h(to)g(use)g -(a)f Fk(switch)f Fm(statemen)m(t)k(sc)m(heme,)i(rather)45 -b(than)660 2273 y(an)g(arra)m(y)h(lo)s(okup)e(table.)86 -b(This)44 b(can)h(lead)g(to)h(a)g(reduction)f(in)f(b)s(oth)g(time)i -(and)e(space)660 2397 y(requiremen)m(ts)24 b(for)i(some)f(k)m -(ey\014les.)39 b(The)25 b(argumen)m(t)h(to)g(this)e(option)h -(determines)f(ho)m(w)i(man)m(y)660 2522 y Fk(switch)k -Fm(statemen)m(ts)k(are)e(generated.)46 b(A)32 b(v)-5 -b(alue)32 b(of)g(1)g(generates)h(1)f Fk(switch)f Fm(con)m(taining)g -(all)660 2646 y(the)26 b(elemen)m(ts,)h(a)g(v)-5 b(alue)25 -b(of)h(2)g(generates)i(2)e(tables)g(with)e(1/2)j(the)g(elemen)m(ts)f -(in)e(eac)m(h)j Fk(switch)p Fm(,)660 2771 y(etc.)40 b(This)25 -b(is)g(useful)f(since)i(man)m(y)g(C)g(compilers)f(cannot)h(correctly)h -(generate)h(co)s(de)e(for)g(large)660 2895 y Fk(switch)j -Fm(statemen)m(ts.)44 b(This)29 b(option)h(w)m(as)h(inspired)d(in)h -(part)i(b)m(y)g(Keith)f(Bostic's)h(original)e(C)660 3020 -y(program.)180 3185 y(`)p Fk(-T)p Fm(')334 b(Prev)m(en)m(ts)31 -b(the)g(transfer)f(of)h(the)g(t)m(yp)s(e)g(declaration)f(to)h(the)g -(output)f(\014le.)40 b(Use)31 b(this)f(option)g(if)660 -3309 y(the)h(t)m(yp)s(e)f(is)g(already)f(de\014ned)h(elsewhere.)180 -3475 y(`)p Fk(-p)p Fm(')334 b(This)25 b(option)h(is)f(supp)s(orted)g -(for)h(compatibilit)m(y)f(with)g(previous)g(releases)i(of)g -Fk(gperf)p Fm(.)38 b(It)26 b(do)s(es)660 3599 y(not)31 -b(do)f(an)m(ything.)0 4029 y Fi(4.4)68 b(Options)31 b(for)f(c)l -(hanging)h(the)g(Algorithms)g(emplo)l(y)l(ed)h(b)l(y)e -Ff(gperf)180 4323 y Fm(`)p Fk(-k)g Fh(k)m(eys)t Fm(')131 -b(Allo)m(ws)23 b(selection)g(of)h(the)g(c)m(haracter)h(k)m(ey)g(p)s -(ositions)d(used)g(in)h(the)h(k)m(eyw)m(ords')g(hash)f(function.)660 -4448 y(The)28 b(allo)m(w)m(able)g(c)m(hoices)h(range)g(b)s(et)m(w)m -(een)g(1-126,)i(inclusiv)m(e.)38 b(The)27 b(p)s(ositions)g(are)h -(separated)660 4572 y(b)m(y)d(commas,)j(e.g.,)g(`)p Fk(-k)i(9,4,13,14)p -Fm(';)25 b(ranges)h(ma)m(y)g(b)s(e)e(used,)i(e.g.,)i(`)p -Fk(-k)i(2-7)p Fm(';)d(and)e(p)s(ositions)660 4697 y(ma)m(y)j(o)s(ccur)f -(in)f(an)m(y)h(order.)39 b(F)-8 b(urthermore,)28 b(the)g(meta-c)m -(haracter)i('*')e(causes)g(the)f(generated)660 4822 y(hash)i(function)g -(to)h(consider)f Fc(all)i Fm(c)m(haracter)g(p)s(ositions)d(in)g(eac)m -(h)j(k)m(ey)-8 b(,)32 b(whereas)e('$')g(instructs)660 -4946 y(the)f(hash)f(function)g(to)h(use)g(the)g(\\\014nal)f(c)m -(haracter")j(of)e(a)g(k)m(ey)h(\(this)e(is)g(the)h(only)f(w)m(a)m(y)i -(to)f(use)660 5071 y(a)i(c)m(haracter)h(p)s(osition)c(greater)k(than)e -(126,)i(inciden)m(tally\).)660 5215 y(F)-8 b(or)29 b(instance,)f(the)g -(option)f(`)p Fk(-k)j(1,2,4,6-10,'$')p Fm(')25 b(generates)k(a)f(hash)f -(function)g(that)h(con-)660 5340 y(siders)38 b(p)s(ositions)g -(1,2,4,6,7,8,9,10,)49 b(plus)38 b(the)i(last)f(c)m(haracter)j(in)d(eac) -m(h)i(k)m(ey)f(\(whic)m(h)f(ma)m(y)p eop +21 22 bop 150 -116 a Fs(Chapter)30 b(5:)41 b(Kno)m(wn)30 +b(Bugs)g(and)g(Limitations)e(with)h Fn(gperf)1397 b Fs(21)150 +299 y Fp(5)80 b(Kno)l(wn)53 b(Bugs)f(and)i(Limitations)h(with)e +Fm(gperf)275 533 y Fs(The)29 b(follo)m(wing)g(are)i(some)g(limitations) +d(with)h(the)h(curren)m(t)h(release)f(of)h Fn(gperf)p +Fs(:)225 667 y Fq(\017)60 b Fs(The)31 b Fn(gperf)g Fs(utilit)m(y)f(is)h +(tuned)g(to)h(execute)h(quic)m(kly)-8 b(,)32 b(and)f(w)m(orks)h(quic)m +(kly)e(for)i(small)e(to)j(medium)330 777 y(size)h(data)h(sets)g +(\(around)f(1000)i(k)m(eyw)m(ords\).)54 b(It)34 b(is)g(extremely)h +(useful)d(for)i(main)m(taining)f(p)s(erfect)330 887 y(hash)40 +b(functions)g(for)g(compiler)g(k)m(eyw)m(ord)h(sets.)72 +b(Sev)m(eral)41 b(recen)m(t)h(enhancemen)m(ts)g(no)m(w)e(enable)330 +996 y Fn(gperf)31 b Fs(to)j(w)m(ork)e(e\016cien)m(tly)h(on)f(m)m(uc)m +(h)h(larger)f(k)m(eyw)m(ord)h(sets)g(\(o)m(v)m(er)i(15,000)g(k)m(eyw)m +(ords\).)48 b(When)330 1106 y(pro)s(cessing)29 b(large)i(k)m(eyw)m(ord) +f(sets)h(it)f(helps)f(greatly)i(to)g(ha)m(v)m(e)g(o)m(v)m(er)h(8)f +(megs)g(of)f(RAM.)330 1240 y(Ho)m(w)m(ev)m(er,)k(since)c +Fn(gperf)g Fs(do)s(es)g(not)i(bac)m(ktrac)m(k)h(no)e(guaran)m(teed)h +(solution)e(o)s(ccurs)g(on)h(ev)m(ery)h(run.)330 1350 +y(On)26 b(the)h(other)g(hand,)f(it)h(is)e(usually)g(easy)i(to)h(obtain) +e(a)h(solution)e(b)m(y)i(v)-5 b(arying)26 b(the)h(option)f(param-)330 +1460 y(eters.)52 b(In)33 b(particular,)g(try)h(the)g(`)p +Fn(-r)p Fs(')g(option,)g(and)f(also)h(try)g(c)m(hanging)g(the)g +(default)f(argumen)m(ts)330 1569 y(to)38 b(the)f(`)p +Fn(-s)p Fs(')h(and)e(`)p Fn(-j)p Fs(')h(options.)61 b(T)-8 +b(o)38 b Fl(guar)-5 b(ante)g(e)45 b Fs(a)38 b(solution,)g(use)f(the)g +(`)p Fn(-D)p Fs(')h(and)e(`)p Fn(-S)p Fs(')h(options,)330 +1679 y(although)27 b(the)h(\014nal)e(results)g(are)i(not)g(lik)m(ely)e +(to)i(b)s(e)f(a)h Fl(p)-5 b(erfe)g(ct)37 b Fs(hash)27 +b(function)f(an)m(ymore!)40 b(Finally)-8 b(,)330 1788 +y(use)32 b(the)g(`)p Fn(-f)p Fs(')g(option)f(if)g(y)m(ou)h(w)m(an)m(t)h +Fn(gperf)d Fs(to)j(generate)g(the)f(p)s(erfect)g(hash)f(function)g +Fl(fast)p Fs(,)i(with)330 1898 y(less)d(emphasis)f(on)h(making)g(it)f +(minimal.)225 2032 y Fq(\017)60 b Fs(The)43 b(size)h(of)g(the)g +(generate)h(static)g(k)m(eyw)m(ord)f(arra)m(y)g(can)g(get)h +Fl(extr)-5 b(emely)53 b Fs(large)44 b(if)f(the)h(input)330 +2142 y(k)m(eyw)m(ord)d(\014le)e(is)g(large)i(or)f(if)f(the)i(k)m(eyw)m +(ords)f(are)h(quite)f(similar.)67 b(This)39 b(tends)h(to)h(slo)m(w)e +(do)m(wn)330 2252 y(the)c(compilation)e(of)i(the)f(generated)i(C)e(co)s +(de,)i(and)e Fl(gr)-5 b(e)g(atly)44 b Fs(in\015ates)34 +b(the)h(ob)5 b(ject)35 b(co)s(de)g(size.)53 b(If)330 +2361 y(this)39 b(situation)g(o)s(ccurs,)j(consider)d(using)f(the)i(`)p +Fn(-S)p Fs(')g(option)f(to)i(reduce)e(data)i(size,)h(p)s(oten)m(tially) +330 2471 y(increasing)g(k)m(eyw)m(ord)i(recognition)f(time)g(a)h +(negligible)e(amoun)m(t.)80 b(Since)43 b(man)m(y)g(C)h(compilers)330 +2580 y(cannot)33 b(correctly)g(generated)h(co)s(de)f(for)f(large)h +(switc)m(h)f(statemen)m(ts)j(it)d(is)g(imp)s(ortan)m(t)f(to)j(qualify) +330 2690 y(the)40 b Fo(-S)46 b Fs(option)39 b(with)g(an)h(appropriate)f +(n)m(umerical)g(argumen)m(t)h(that)h(con)m(trols)g(the)f(n)m(um)m(b)s +(er)f(of)330 2800 y(switc)m(h)30 b(statemen)m(ts)i(generated.)225 +2934 y Fq(\017)60 b Fs(The)31 b(maxim)m(um)f(n)m(um)m(b)s(er)f(of)j(k)m +(ey)f(p)s(ositions)f(selected)h(for)g(a)g(giv)m(en)h(k)m(ey)f(has)g(an) +g(arbitrary)f(limit)330 3044 y(of)40 b(126.)69 b(This)38 +b(restriction)h(should)e(b)s(e)i(remo)m(v)m(ed,)k(and)c(if)g(an)m(y)m +(one)i(considers)d(this)h(a)h(problem)330 3153 y(write)30 +b(me)g(and)g(let)g(me)h(kno)m(w)f(so)h(I)f(can)g(remo)m(v)m(e)i(the)f +(constrain)m(t.)p eop %%Page: 22 24 -22 23 bop 0 -116 a Fm(22)2920 b(User's)31 b(Guide)e(to)i -Fk(gperf)660 366 y Fm(di\013er)j(for)h(eac)m(h)h(k)m(ey)-8 -b(,)38 b(ob)m(viously\).)54 b(Keys)35 b(with)f(length)h(less)f(than)h -(the)h(indicated)d(k)m(ey)j(p)s(o-)660 491 y(sitions)j(w)m(ork)h(prop)s -(erly)-8 b(,)42 b(since)d(selected)i(k)m(ey)g(p)s(ositions)e(exceeding) -h(the)h(k)m(ey)g(length)f(are)660 616 y(simply)28 b(not)j(referenced)f -(in)f(the)h(hash)g(function.)180 843 y(`)p Fk(-l)p Fm(')334 -b(Compare)32 b(k)m(ey)g(lengths)f(b)s(efore)g(trying)g(a)h(string)f -(comparison.)44 b(This)30 b(migh)m(t)i(cut)g(do)m(wn)f(on)660 -967 y(the)23 b(n)m(um)m(b)s(er)e(of)h(string)f(comparisons)h(made)g -(during)e(the)j(lo)s(okup,)g(since)e(k)m(eys)i(with)e(di\013eren)m(t) -660 1092 y(lengths)i(are)h(nev)m(er)g(compared)f(via)g -Fk(strcmp)p Fm(.)37 b(Ho)m(w)m(ev)m(er,)27 b(using)22 -b(`)p Fk(-l)p Fm(')i(migh)m(t)f(greatly)h(increase)660 -1216 y(the)33 b(size)f(of)g(the)h(generated)h(C)e(co)s(de)g(if)g(the)g -(lo)s(okup)f(table)h(range)h(is)f(large)g(\(whic)m(h)g(implies)660 -1341 y(that)26 b(the)f(switc)m(h)g(option)g(`)p Fk(-S)p -Fm(')g(is)f(not)i(enabled\),)g(since)e(the)i(length)f(table)g(con)m -(tains)g(as)h(man)m(y)660 1465 y(elemen)m(ts)31 b(as)f(there)h(are)g -(en)m(tries)f(in)f(the)h(lo)s(okup)f(table.)180 1692 -y(`)p Fk(-D)p Fm(')334 b(Handle)26 b(k)m(eyw)m(ords)g(whose)h(k)m(ey)g -(p)s(osition)d(sets)j(hash)f(to)h(duplicate)e(v)-5 b(alues.)39 -b(Duplicate)26 b(hash)660 1817 y(v)-5 b(alues)30 b(o)s(ccur)g(for)g(t)m -(w)m(o)i(reasons:)735 1993 y Fl(\017)60 b Fm(Since)33 -b Fk(gperf)f Fm(do)s(es)h(not)h(bac)m(ktrac)m(k)h(it)e(is)g(p)s -(ossible)e(for)i(it)h(to)g(pro)s(cess)f(all)f(y)m(our)i(input)840 -2117 y(k)m(eyw)m(ords)43 b(without)e(\014nding)g(a)i(unique)d(mapping)h -(for)h(eac)m(h)i(w)m(ord.)77 b(Ho)m(w)m(ev)m(er,)48 b(fre-)840 -2242 y(quen)m(tly)39 b(only)f(a)i(v)m(ery)f(small)f(n)m(um)m(b)s(er)g -(of)h(duplicates)f(o)s(ccur,)j(and)e(the)g(ma)5 b(jorit)m(y)40 -b(of)840 2366 y(k)m(eys)31 b(still)d(require)h(one)i(prob)s(e)e(in)m -(to)i(the)f(table.)735 2542 y Fl(\017)60 b Fm(Sometimes)45 -b(a)g(set)h(of)g(k)m(eys)f(ma)m(y)h(ha)m(v)m(e)h(the)e(same)g(names,)50 -b(but)44 b(p)s(ossess)g(di\013eren)m(t)840 2666 y(attributes.)39 -b(With)24 b(the)i(-D)g(option)f Fk(gperf)f Fm(treats)i(all)e(these)i(k) -m(eys)g(as)g(part)f(of)g(an)h(equiv-)840 2791 y(alence)31 -b(class)f(and)g(generates)i(a)e(p)s(erfect)h(hash)f(function)f(with)g -(m)m(ultiple)f(comparisons)840 2916 y(for)c(duplicate)e(k)m(eys.)39 -b(It)24 b(is)f(up)f(to)j(y)m(ou)f(to)h(completely)e(disam)m(biguate)g -(the)h(k)m(eyw)m(ords)g(b)m(y)840 3040 y(mo)s(difying)g(the)i -(generated)i(C)e(co)s(de.)39 b(Ho)m(w)m(ev)m(er,)30 b -Fk(gperf)24 b Fm(helps)h(y)m(ou)i(out)f(b)m(y)h(organizing)840 -3165 y(the)k(output.)660 3392 y(Option)26 b(`)p Fk(-D)p -Fm(')h(is)g(extremely)g(useful)f(for)h(certain)g(large)h(or)f(highly)e -(redundan)m(t)h(k)m(eyw)m(ord)i(sets,)660 3516 y(e.g.,)49 -b(assem)m(bler)44 b(instruction)e(op)s(co)s(des.)81 b(Using)43 -b(this)g(option)g(usually)f(means)i(that)h(the)660 3641 -y(generated)29 b(hash)e(function)f(is)h(no)h(longer)f(p)s(erfect.)40 -b(On)27 b(the)h(other)g(hand,)f(it)g(p)s(ermits)f Fk(gperf)660 -3765 y Fm(to)31 b(w)m(ork)g(on)f(k)m(eyw)m(ord)h(sets)f(that)h(it)f -(otherwise)g(could)g(not)g(handle.)180 3992 y(`)p Fk(-f)g -Fh(iteration)g(amoun)m(t)r Fm(')660 4117 y(Generate)38 -b(the)e(p)s(erfect)h(hash)e(function)g(\\fast".)61 b(This)34 -b(decreases)j Fk(gperf)p Fm('s)f(running)d(time)660 4241 -y(at)38 b(the)f(cost)h(of)f(minimizing)c(generated)38 -b(table-size.)60 b(The)36 b(iteration)h(amoun)m(t)g(represen)m(ts)660 -4366 y(the)29 b(n)m(um)m(b)s(er)f(of)h(times)g(to)g(iterate)h(when)e -(resolving)g(a)h(collision.)38 b(`0')30 b(means)f(iterate)h(b)m(y)f -(the)660 4490 y(n)m(um)m(b)s(er)22 b(of)h(k)m(eyw)m(ords.)38 -b(This)21 b(option)i(is)f(probably)f(most)i(useful)e(when)h(used)g(in)g -(conjunction)660 4615 y(with)29 b(options)h(`)p Fk(-D)p -Fm(')g(and/or)g(`)p Fk(-S)p Fm(')h(for)f Fh(large)35 -b Fm(k)m(eyw)m(ord)c(sets.)180 4842 y(`)p Fk(-i)f Fh(initial)e(v)-5 -b(alue)5 b Fm(')660 4966 y(Pro)m(vides)36 b(an)g(initial)e -Fh(v)-5 b(alue)41 b Fm(for)36 b(the)h(asso)s(ciate)g(v)-5 -b(alues)36 b(arra)m(y)-8 b(.)59 b(Default)37 b(is)e(0.)60 -b(Increasing)660 5091 y(the)39 b(initial)d(v)-5 b(alue)39 -b(helps)e(in\015ate)i(the)g(\014nal)e(table)i(size,)j(p)s(ossibly)36 -b(leading)h(to)j(more)f(time)660 5215 y(e\016cien)m(t)e(k)m(eyw)m(ord)h -(lo)s(okups.)59 b(Note)38 b(that)g(this)e(option)g(is)g(not)h -(particularly)e(useful)g(when)660 5340 y(`)p Fk(-S)p -Fm(')30 b(is)g(used.)40 b(Also,)30 b(`)p Fk(-i)p Fm(')g(is)g(o)m(v)m -(erriden)g(when)f(the)h(`)p Fk(-r)p Fm(')h(option)f(is)f(used.)p -eop -%%Page: 23 25 -23 24 bop 0 -116 a Fm(Chapter)30 b(4:)41 b(Options)29 -b(to)i(the)g Fk(gperf)d Fm(Utilit)m(y)2203 b(23)180 366 -y(`)p Fk(-j)30 b Fh(jump)f(v)-5 b(alue)5 b Fm(')660 491 -y(A\013ects)35 b(the)f(\\jump)f(v)-5 b(alue",)36 b(i.e.,)f(ho)m(w)f -(far)g(to)g(adv)-5 b(ance)35 b(the)f(asso)s(ciated)h(c)m(haracter)g(v) --5 b(alue)660 616 y(up)s(on)30 b(collisions.)41 b Fh(Jump)30 -b(v)-5 b(alue)36 b Fm(is)31 b(rounded)f(up)g(to)j(an)e(o)s(dd)f(n)m(um) -m(b)s(er,)h(the)h(default)e(is)h(5.)44 b(If)660 740 y(the)31 -b Fh(jump)d(v)-5 b(alue)35 b Fm(is)30 b(0)h Fk(gperf)d -Fm(jumps)h(b)m(y)h(random)g(amoun)m(ts.)180 908 y(`)p -Fk(-n)p Fm(')334 b(Instructs)36 b(the)i(generator)g(not)f(to)h(include) -d(the)j(length)e(of)h(a)h(k)m(eyw)m(ord)g(when)e(computing)660 -1033 y(its)27 b(hash)g(v)-5 b(alue.)39 b(This)26 b(ma)m(y)i(sa)m(v)m(e) -h(a)f(few)f(assem)m(bly)g(instructions)f(in)g(the)i(generated)g(lo)s -(okup)660 1158 y(table.)180 1326 y(`)p Fk(-o)p Fm(')334 -b(Reorders)38 b(the)h(k)m(eyw)m(ords)f(b)m(y)h(sorting)e(the)i(k)m(eyw) -m(ords)g(so)f(that)h(frequen)m(tly)f(o)s(ccuring)f(k)m(ey)660 -1450 y(p)s(osition)h(set)j(comp)s(onen)m(ts)f(app)s(ear)f(\014rst.)69 -b(A)40 b(second)h(reordering)d(pass)i(follo)m(ws)f(so)h(that)660 -1575 y(k)m(eys)29 b(with)f(\\already)h(determined)e(v)-5 -b(alues")29 b(are)g(placed)g(to)m(w)m(ards)g(the)g(fron)m(t)g(of)g(the) -g(k)m(eylist.)660 1700 y(This)e(ma)m(y)i(decrease)h(the)e(time)h -(required)d(to)k(generate)g(a)f(p)s(erfect)f(hash)g(function)f(for)i -(man)m(y)660 1824 y(k)m(eyw)m(ord)i(sets,)h(and)f(also)g(pro)s(duce)f -(more)h(minimal)d(p)s(erfect)j(hash)f(functions.)41 b(The)31 -b(reason)660 1949 y(for)h(this)g(is)f(that)i(the)g(reordering)e(helps)g -(prune)g(the)h(searc)m(h)h(time)g(b)m(y)f(handling)e(inevitable)660 -2073 y(collisions)20 b(early)j(in)f(the)h(searc)m(h)g(pro)s(cess.)38 -b(On)22 b(the)h(other)g(hand,)h(if)e(the)h(n)m(um)m(b)s(er)f(of)h(k)m -(eyw)m(ords)660 2198 y(is)33 b Fh(v)m(ery)42 b Fm(large)33 -b(using)f(`)p Fk(-o)p Fm(')i(ma)m(y)g Fh(increase)39 -b Fk(gperf)p Fm('s)32 b(execution)i(time,)g(since)f(collisions)f(will) -660 2322 y(b)s(egin)h(earlier)g(and)h(con)m(tin)m(ue)h(throughout)f -(the)g(remainder)f(of)h(k)m(eyw)m(ord)h(pro)s(cessing.)52 -b(See)660 2447 y(Cic)m(helli's)28 b(pap)s(er)h(from)h(the)h(Jan)m(uary) -f(1980)i(Comm)m(unications)d(of)h(the)h(A)m(CM)g(for)f(details.)180 -2615 y(`)p Fk(-r)p Fm(')334 b(Utilizes)22 b(randomness)h(to)h -(initialize)d(the)i(asso)s(ciated)h(v)-5 b(alues)23 b(table.)38 -b(This)22 b(frequen)m(tly)g(gener-)660 2740 y(ates)27 -b(solutions)e(faster)i(than)f(using)e(deterministic)h(initialization)e -(\(whic)m(h)i(starts)i(all)e(asso)s(ci-)660 2864 y(ated)g(v)-5 -b(alues)23 b(at)i(0\).)39 b(F)-8 b(urthermore,)26 b(using)c(the)j -(randomization)d(option)i(generally)f(increases)660 2989 -y(the)32 b(size)f(of)g(the)h(table.)43 b(If)31 b Fk(gperf)f -Fm(has)h(di\016cultly)e(with)h(a)h(certain)h(k)m(eyw)m(ord)f(set)h(try) -f(using)660 3113 y(`)p Fk(-r)p Fm(')f(or)h(`)p Fk(-D)p -Fm('.)180 3282 y(`)p Fk(-s)f Fh(size-m)m(ultiple)5 b -Fm(')660 3406 y(A\013ects)27 b(the)g(size)f(of)g(the)h(generated)g -(hash)f(table.)39 b(The)26 b(n)m(umeric)f(argumen)m(t)h(for)g(this)f -(option)660 3531 y(indicates)f(\\ho)m(w)h(man)m(y)g(times)g(larger)g -(or)g(smaller")f(the)h(maxim)m(um)f(asso)s(ciated)h(v)-5 -b(alue)25 b(range)660 3655 y(should)32 b(b)s(e,)k(in)d(relationship)f -(to)j(the)g(n)m(um)m(b)s(er)e(of)h(k)m(eys.)54 b(If)34 -b(the)h Fh(size-m)m(ultiple)i Fm(is)d(negativ)m(e)660 -3780 y(the)g(maxim)m(um)e(asso)s(ciated)i(v)-5 b(alue)32 -b(is)h(calculated)g(b)m(y)g Fh(dividing)38 b Fm(it)33 -b(in)m(to)h(the)f(total)h(n)m(um)m(b)s(er)660 3904 y(of)29 -b(k)m(eys.)41 b(F)-8 b(or)29 b(example,)g(a)g(v)-5 b(alue)29 -b(of)g(3)g(means)f(\\allo)m(w)h(the)g(maxim)m(um)f(asso)s(ciated)h(v)-5 -b(alue)28 b(to)660 4029 y(b)s(e)i(ab)s(out)g(3)h(times)f(larger)g(than) -g(the)g(n)m(um)m(b)s(er)f(of)i(input)d(k)m(eys".)660 -4175 y(Con)m(v)m(ersely)-8 b(,)29 b(a)g(v)-5 b(alue)27 -b(of)h(-3)h(means)f(\\allo)m(w)g(the)g(maxim)m(um)f(asso)s(ciated)i(v) --5 b(alue)27 b(to)i(b)s(e)e(ab)s(out)660 4300 y(3)38 -b(times)g(smaller)e(than)i(the)g(n)m(um)m(b)s(er)e(of)i(input)e(k)m -(eys".)65 b(Negativ)m(e)40 b(v)-5 b(alues)37 b(are)h(useful)e(for)660 -4424 y(limiting)27 b(the)j(o)m(v)m(erall)h(size)f(of)g(the)g(generated) -h(hash)e(table,)i(though)e(this)g(usually)f(increases)660 -4549 y(the)j(n)m(um)m(b)s(er)e(of)h(duplicate)f(hash)h(v)-5 -b(alues.)660 4695 y(If)44 b(`generate)j(switc)m(h')e(option)f(`)p -Fk(-S)p Fm(')h(is)f Fh(not)j Fm(enabled,)g(the)e(maxim)m(um)f(asso)s -(ciated)h(v)-5 b(alue)660 4820 y(in\015uences)32 b(the)h(static)h(arra) -m(y)g(table)f(size,)h(and)f(a)h(larger)f(table)g(should)e(decrease)k -(the)e(time)660 4944 y(required)c(for)h(an)g(unsuccessful)e(searc)m(h,) -j(at)g(the)g(exp)s(ense)f(of)g(extra)i(table)e(space.)660 -5091 y(The)c(default)g(v)-5 b(alue)26 b(is)g(1,)i(th)m(us)e(the)h -(default)f(maxim)m(um)f(asso)s(ciated)i(v)-5 b(alue)26 -b(ab)s(out)h(the)g(same)660 5215 y(size)i(as)g(the)g(n)m(um)m(b)s(er)f -(of)h(k)m(eys)g(\(for)g(e\016ciency)-8 b(,)30 b(the)f(maxim)m(um)f -(asso)s(ciated)h(v)-5 b(alue)28 b(is)g(alw)m(a)m(ys)660 -5340 y(rounded)f(up)h(to)h(a)g(p)s(o)m(w)m(er)f(of)h(2\).)41 -b(The)28 b(actual)h(table)f(size)h(ma)m(y)g(v)-5 b(ary)29 -b(somewhat,)g(since)f(this)p eop -%%Page: 24 26 -24 25 bop 0 -116 a Fm(24)2920 b(User's)31 b(Guide)e(to)i -Fk(gperf)660 366 y Fm(tec)m(hnique)e(is)f(essen)m(tially)h(a)g -(heuristic.)39 b(In)28 b(particular,)g(setting)i(this)e(v)-5 -b(alue)29 b(to)s(o)h(high)d(slo)m(ws)660 491 y(do)m(wn)f -Fk(gperf)p Fm('s)f(run)m(time,)i(since)f(it)g(m)m(ust)g(searc)m(h)i -(through)e(a)h(m)m(uc)m(h)f(larger)h(range)g(of)f(v)-5 -b(alues.)660 616 y(Judicious)28 b(use)i(of)g(the)h(`)p -Fk(-f)p Fm(')f(option)g(helps)f(alleviate)h(this)f(o)m(v)m(erhead,)j -(ho)m(w)m(ev)m(er.)0 1064 y Fi(4.5)68 b(Informativ)l(e)32 -b(Output)180 1363 y Fm(`)p Fk(-h)p Fm(')334 b(Prin)m(ts)32 -b(a)i(short)g(summary)e(on)i(the)g(meaning)e(of)i(eac)m(h)h(program)e -(option.)50 b(Ab)s(orts)33 b(further)660 1487 y(program)d(execution.) -180 1662 y(`)p Fk(-v)p Fm(')334 b(Prin)m(ts)29 b(out)i(the)f(curren)m -(t)h(v)m(ersion)e(n)m(um)m(b)s(er.)180 1836 y(`)p Fk(-d)p -Fm(')334 b(Enables)39 b(the)g(debugging)g(option.)68 -b(This)38 b(pro)s(duces)h(v)m(erb)s(ose)h(diagnostics)f(to)h -(\\standard)660 1961 y(error")27 b(when)f Fk(gperf)g -Fm(is)g(executing.)39 b(It)27 b(is)f(useful)g(b)s(oth)g(for)h(main)m -(taining)e(the)i(program)g(and)660 2085 y(for)32 b(determining)f -(whether)g(a)i(giv)m(en)g(set)g(of)f(options)g(is)f(actually)h(sp)s -(eeding)f(up)h(the)g(searc)m(h)660 2210 y(for)25 b(a)h(solution.)38 -b(Some)26 b(useful)e(information)g(is)g(dump)s(ed)g(at)i(the)g(end)f -(of)h(the)g(program)f(when)660 2334 y(the)31 b(`)p Fk(-d)p -Fm(')f(option)g(is)f(enabled.)p eop -%%Page: 25 27 -25 26 bop 0 -116 a Fm(Chapter)30 b(5:)41 b(Kno)m(wn)30 -b(Bugs)g(and)g(Limitations)e(with)h Fk(gperf)1697 b Fm(25)0 -366 y Fj(5)80 b(Kno)l(wn)29 b(Bugs)g(and)h(Limitations)i(with)e -Fg(gperf)125 740 y Fm(The)f(follo)m(wing)g(are)i(some)g(limitations)d -(with)h(the)h(curren)m(t)h(release)f(of)h Fk(gperf)p -Fm(:)75 1014 y Fl(\017)60 b Fm(The)26 b Fk(gperf)f Fm(utilit)m(y)g(is)h -(tuned)g(to)h(execute)h(quic)m(kly)-8 b(,)27 b(and)f(w)m(orks)h(quic)m -(kly)e(for)h(small)g(to)h(medium)e(size)h(data)180 1139 -y(sets)k(\(around)f(1000)j(k)m(eyw)m(ords\).)41 b(It)30 -b(is)f(extremely)h(useful)e(for)h(main)m(taining)f(p)s(erfect)i(hash)f -(functions)f(for)180 1263 y(compiler)j(k)m(eyw)m(ord)i(sets.)48 -b(Sev)m(eral)33 b(recen)m(t)h(enhancemen)m(ts)f(no)m(w)f(enable)g -Fk(gperf)g Fm(to)h(w)m(ork)g(e\016cien)m(tly)f(on)180 -1388 y(m)m(uc)m(h)26 b(larger)g(k)m(eyw)m(ord)h(sets)g(\(o)m(v)m(er)g -(15,000)i(k)m(eyw)m(ords\).)40 b(When)26 b(pro)s(cessing)f(large)h(k)m -(eyw)m(ord)h(sets)g(it)e(helps)180 1512 y(greatly)31 -b(to)g(ha)m(v)m(e)h(o)m(v)m(er)f(8)g(megs)g(of)f(RAM.)180 -1662 y(Ho)m(w)m(ev)m(er,)45 b(since)39 b Fk(gperf)g Fm(do)s(es)g(not)i -(bac)m(ktrac)m(k)h(no)e(guaran)m(teed)h(solution)d(o)s(ccurs)i(on)g(ev) -m(ery)h(run.)68 b(On)180 1786 y(the)35 b(other)h(hand,)f(it)g(is)f -(usually)f(easy)j(to)g(obtain)f(a)g(solution)f(b)m(y)h(v)-5 -b(arying)34 b(the)i(option)e(parameters.)56 b(In)180 -1911 y(particular,)37 b(try)g(the)g(`)p Fk(-r)p Fm(')f(option,)j(and)d -(also)h(try)f(c)m(hanging)h(the)g(default)f(argumen)m(ts)h(to)h(the)f -(`)p Fk(-s)p Fm(')g(and)180 2035 y(`)p Fk(-j)p Fm(')31 -b(options.)41 b(T)-8 b(o)31 b Fh(guaran)m(tee)37 b Fm(a)31 -b(solution,)f(use)g(the)h(`)p Fk(-D)p Fm(')g(and)f(`)p -Fk(-S)p Fm(')g(options,)h(although)f(the)h(\014nal)e(results)180 -2160 y(are)j(not)h(lik)m(ely)d(to)j(b)s(e)e(a)i Fh(p)s(erfect)g -Fm(hash)f(function)e(an)m(ymore!)47 b(Finally)-8 b(,)31 -b(use)g(the)h(`)p Fk(-f)p Fm(')g(option)g(if)f(y)m(ou)h(w)m(an)m(t)180 -2284 y Fk(gperf)d Fm(to)i(generate)h(the)f(p)s(erfect)f(hash)f -(function)g Fh(fast)p Fm(,)i(with)f(less)f(emphasis)g(on)h(making)g(it) -g(minimal.)75 2434 y Fl(\017)60 b Fm(The)28 b(size)g(of)g(the)h -(generate)h(static)f(k)m(eyw)m(ord)f(arra)m(y)h(can)g(get)g -Fh(extremely)37 b Fm(large)28 b(if)f(the)i(input)d(k)m(eyw)m(ord)j -(\014le)180 2558 y(is)k(large)g(or)h(if)f(the)g(k)m(eyw)m(ords)h(are)g -(quite)f(similar.)48 b(This)32 b(tends)h(to)i(slo)m(w)e(do)m(wn)g(the)h -(compilation)e(of)i(the)180 2683 y(generated)g(C)f(co)s(de,)h(and)e -Fh(greatly)42 b Fm(in\015ates)32 b(the)h(ob)5 b(ject)34 -b(co)s(de)f(size.)49 b(If)32 b(this)g(situation)g(o)s(ccurs,)i -(consider)180 2807 y(using)i(the)i(`)p Fk(-S)p Fm(')g(option)g(to)g -(reduce)g(data)g(size,)i(p)s(oten)m(tially)d(increasing)f(k)m(eyw)m -(ord)j(recognition)e(time)h(a)180 2932 y(negligible)32 -b(amoun)m(t.)52 b(Since)34 b(man)m(y)g(C)g(compilers)e(cannot)j -(correctly)g(generated)g(co)s(de)f(for)g(large)g(switc)m(h)180 -3056 y(statemen)m(ts)j(it)e(is)g(imp)s(ortan)m(t)f(to)i(qualify)e(the)h -Fh(-S)41 b Fm(option)35 b(with)f(an)h(appropriate)g(n)m(umerical)e -(argumen)m(t)180 3181 y(that)e(con)m(trols)g(the)f(n)m(um)m(b)s(er)f -(of)i(switc)m(h)f(statemen)m(ts)i(generated.)75 3330 -y Fl(\017)60 b Fm(The)31 b(maxim)m(um)f(n)m(um)m(b)s(er)g(of)h(k)m(ey)h -(p)s(ositions)e(selected)h(for)h(a)f(giv)m(en)h(k)m(ey)g(has)f(an)g -(arbitrary)f(limit)f(of)i(126.)180 3455 y(This)h(restriction)i(should)e -(b)s(e)h(remo)m(v)m(ed,)k(and)d(if)f(an)m(y)m(one)i(considers)e(this)g -(a)i(problem)e(write)g(me)h(and)g(let)180 3579 y(me)c(kno)m(w)h(so)f(I) -h(can)f(remo)m(v)m(e)i(the)f(constrain)m(t.)p eop -%%Page: 26 28 -26 27 bop 0 -116 a Fm(26)2920 b(User's)31 b(Guide)e(to)i -Fk(gperf)p eop -%%Page: 27 29 -27 28 bop 0 -116 a Fm(Chapter)30 b(6:)41 b(Things)28 -b(Still)g(Left)j(to)g(Do)2433 b(27)0 366 y Fj(6)80 b(Things)30 -b(Still)j(Left)d(to)f(Do)125 740 y Fm(It)40 b(should)f(b)s(e)h -(\\relativ)m(ely")i(easy)f(to)h(replace)e(the)h(curren)m(t)g(p)s -(erfect)g(hash)f(function)f(algorithm)h(with)g(a)0 865 -y(more)35 b(exhaustiv)m(e)h(approac)m(h;)i(the)d(p)s(erfect)g(hash)g -(mo)s(dule)e(is)h(essen)m(tial)h(indep)s(enden)m(t)e(from)i(other)g -(program)0 989 y(mo)s(dules.)k(Additional)28 b(w)m(orth)m(while)h -(impro)m(v)m(emen)m(ts)h(include:)75 1263 y Fl(\017)60 -b Fm(Mak)m(e)33 b(the)e(algorithm)f(more)h(robust.)42 -b(A)m(t)32 b(presen)m(t,)f(the)h(program)e(halts)h(with)e(an)i(error)g -(diagnostic)f(if)g(it)180 1388 y(can't)j(\014nd)e(a)i(direct)f -(solution)f(and)h(the)h(`)p Fk(-D)p Fm(')f(option)g(is)g(not)g -(enabled.)46 b(A)33 b(more)g(comprehensiv)m(e,)f(alb)s(eit)180 -1512 y(computationally)26 b(exp)s(ensiv)m(e,)h(approac)m(h)g(w)m(ould)e -(emplo)m(y)i(bac)m(ktrac)m(king)h(or)e(enable)g(alternativ)m(e)i -(options)180 1637 y(and)d(retry)-8 b(.)40 b(It's)26 b(not)h(clear)f(ho) -m(w)g(helpful)d(this)i(w)m(ould)g(b)s(e,)i(in)d(general,)k(since)d -(most)h(searc)m(h)h(sets)g(are)f(rather)180 1761 y(small)j(in)g -(practice.)75 1911 y Fl(\017)60 b Fm(Another)31 b(useful)e(extension)i -(in)m(v)m(olv)m(es)g(mo)s(difying)d(the)k(program)e(to)i(generate)h -(\\minimal")c(p)s(erfect)i(hash)180 2035 y(functions)i(\(under)h -(certain)g(circumstances,)i(the)e(curren)m(t)h(v)m(ersion)f(can)h(b)s -(e)f(rather)g(extra)m(v)-5 b(agan)m(t)37 b(in)d(the)180 -2160 y(generated)i(table)f(size\).)55 b(Again,)36 b(this)e(is)g(mostly) -g(of)h(theoretical)h(in)m(terest,)g(since)f(a)g(sparse)g(table)g(often) -180 2284 y(pro)s(duces)29 b(faster)i(lo)s(okups,)f(and)g(use)g(of)h -(the)g(`)p Fk(-S)p Fm(')f Fk(switch)f Fm(option)h(can)h(minimize)d(the) -j(data)h(size,)e(at)i(the)180 2409 y(exp)s(ense)j(of)g(sligh)m(tly)f -(longer)h(lo)s(okups)f(\(note)j(that)f(the)f(gcc)i(compiler)d -(generally)g(pro)s(duces)g(go)s(o)s(d)i(co)s(de)180 2533 -y(for)30 b Fk(switch)f Fm(statemen)m(ts,)j(reducing)d(the)i(need)f(for) -g(more)g(complex)g(sc)m(hemes\).)75 2683 y Fl(\017)60 -b Fm(In)27 b(addition)f(to)j(impro)m(ving)d(the)i(algorithm,)f(it)h(w)m -(ould)e(also)i(b)s(e)f(useful)f(to)j(generate)g(a)g(C)p -Fk(++)d Fm(class)i(or)g(Ada)180 2807 y(pac)m(k)-5 b(age)32 -b(as)f(the)g(co)s(de)f(output,)g(in)f(addition)g(to)i(the)g(curren)m(t) +22 23 bop 150 -116 a Fs(Chapter)30 b(6:)41 b(Things)28 +b(Still)g(Left)j(to)g(Do)2133 b(22)150 299 y Fp(6)80 +b(Things)54 b(Still)i(Left)d(to)g(Do)275 533 y Fs(It)24 +b(should)e(b)s(e)i(\\relativ)m(ely")h(easy)g(to)g(replace)f(the)h +(curren)m(t)f(p)s(erfect)g(hash)g(function)f(algorithm)g(with)150 +643 y(a)35 b(more)f(exhaustiv)m(e)g(approac)m(h;)j(the)d(p)s(erfect)h +(hash)e(mo)s(dule)g(is)g(essen)m(tial)h(indep)s(enden)m(t)e(from)i +(other)150 752 y(program)c(mo)s(dules.)39 b(Additional)28 +b(w)m(orth)m(while)h(impro)m(v)m(emen)m(ts)i(include:)225 +887 y Fq(\017)60 b Fs(Mak)m(e)38 b(the)e(algorithm)f(more)h(robust.)58 +b(A)m(t)37 b(presen)m(t,)h(the)e(program)g(halts)f(with)g(an)h(error)g +(diag-)330 996 y(nostic)k(if)g(it)g(can't)i(\014nd)d(a)i(direct)f +(solution)g(and)g(the)h(`)p Fn(-D)p Fs(')f(option)h(is)e(not)i +(enabled.)71 b(A)41 b(more)330 1106 y(comprehensiv)m(e,)c(alb)s(eit)d +(computationally)g(exp)s(ensiv)m(e,)j(approac)m(h)f(w)m(ould)e(emplo)m +(y)i(bac)m(ktrac)m(k-)330 1215 y(ing)28 b(or)g(enable)g(alternativ)m(e) +i(options)d(and)h(retry)-8 b(.)41 b(It's)29 b(not)g(clear)f(ho)m(w)h +(helpful)d(this)h(w)m(ould)h(b)s(e,)g(in)330 1325 y(general,)j(since)e +(most)i(searc)m(h)g(sets)g(are)g(rather)f(small)f(in)g(practice.)225 +1460 y Fq(\017)60 b Fs(Another)34 b(useful)e(extension)h(in)m(v)m(olv)m +(es)h(mo)s(difying)d(the)j(program)f(to)i(generate)g(\\minimal")d(p)s +(er-)330 1569 y(fect)42 b(hash)f(functions)e(\(under)i(certain)g +(circumstances,)j(the)d(curren)m(t)g(v)m(ersion)g(can)g(b)s(e)g(rather) +330 1679 y(extra)m(v)-5 b(agan)m(t)37 b(in)32 b(the)i(generated)h +(table)e(size\).)51 b(Again,)35 b(this)d(is)h(mostly)h(of)f +(theoretical)i(in)m(terest,)330 1788 y(since)f(a)h(sparse)f(table)g +(often)h(pro)s(duces)f(faster)g(lo)s(okups,)h(and)f(use)g(of)h(the)f(`) +p Fn(-S)p Fs(')h Fn(switch)d Fs(option)330 1898 y(can)27 +b(minimize)e(the)i(data)h(size,)g(at)f(the)h(exp)s(ense)e(of)h(sligh)m +(tly)f(longer)g(lo)s(okups)g(\(note)i(that)g(the)f(gcc)330 +2007 y(compiler)35 b(generally)g(pro)s(duces)g(go)s(o)s(d)h(co)s(de)g +(for)g Fn(switch)f Fs(statemen)m(ts,)k(reducing)c(the)h(need)g(for)330 +2117 y(more)31 b(complex)f(sc)m(hemes\).)225 2252 y Fq(\017)60 +b Fs(In)27 b(addition)f(to)j(impro)m(ving)d(the)i(algorithm,)g(it)f(w)m +(ould)g(also)h(b)s(e)f(useful)f(to)j(generate)g(a)f(C)p +Fn(++)f Fs(class)330 2361 y(or)j(Ada)h(pac)m(k)-5 b(age)32 +b(as)f(the)f(co)s(de)h(output,)f(in)f(addition)g(to)i(the)g(curren)m(t) f(C)g(routines.)p eop -%%Page: 28 30 -28 29 bop 0 -116 a Fm(28)2920 b(User's)31 b(Guide)e(to)i -Fk(gperf)p eop -%%Page: 29 31 -29 30 bop 0 -116 a Fm(Chapter)30 b(7:)41 b(Implemen)m(tation)29 -b(Details)i(of)f(GNU)h Fk(gperf)1799 b Fm(29)0 366 y -Fj(7)80 b(Implemen)l(tation)29 b(Details)i(of)f(GNU)h -Fg(gperf)125 740 y Fm(A)42 b(pap)s(er)f(describing)e(the)k(high-lev)m -(el)e(description)f(of)i(the)g(data)h(structures)e(and)h(algorithms)f -(used)g(to)0 865 y(implemen)m(t)c Fk(gperf)f Fm(will)f(so)s(on)j(b)s(e) -f(a)m(v)-5 b(ailable.)63 b(This)36 b(pap)s(er)h(is)g(useful)f(not)i -(only)f(from)h(a)g(main)m(tenance)h(and)0 989 y(enhancemen)m(t)23 -b(p)s(ersp)s(ectiv)m(e,)h(but)e(also)g(b)s(ecause)h(they)f(demonstrate) -h(sev)m(eral)g(clev)m(er)g(and)f(useful)f(programming)0 -1114 y(tec)m(hniques,)31 b(e.g.,)i(`Iteration)f(Num)m(b)s(er')e(b)s(o)s -(olean)g(arra)m(ys,)i(double)e(hashing,)g(a)i(\\safe")g(and)f -(e\016cien)m(t)g(metho)s(d)0 1238 y(for)f(reading)g(arbitrarily)d(long) -j(input)f(from)h(a)g(\014le,)g(and)g(a)h(pro)m(v)-5 b(ably)29 -b(optimal)h(algorithm)f(for)h(sim)m(ultaneously)0 1363 -y(determining)e(b)s(oth)i(the)h(minim)m(um)c(and)j(maxim)m(um)f(elemen) -m(ts)i(in)e(a)i(list.)p eop -%%Page: 30 32 -30 31 bop 0 -116 a Fm(30)2920 b(User's)31 b(Guide)e(to)i -Fk(gperf)p eop -%%Page: 31 33 -31 32 bop 0 -116 a Fm(Chapter)30 b(8:)41 b(Bibliograph)m(y)2833 -b(31)0 366 y Fj(8)80 b(Bibliograph)l(y)125 808 y Fm([1])27 -b(Chang,)h(C.C.:)38 b Fh(A)27 b(Sc)m(heme)h(for)e(Constructing)g -(Ordered)g(Minimal)e(P)m(erfect)k(Hashing)e(F)-8 b(unctions)31 -b Fm(Infor-)0 932 y(mation)f(Sciences)g(39\(1986\),)k(187-195.)125 -1220 y([2])39 b(Cic)m(helli,)e(Ric)m(hard)h(J.)g Fh(Author's)g(Resp)s -(onse)f(to)i(\\On)f(Cic)m(helli's)e(Minimal)g(P)m(erfect)j(Hash)f(F)-8 -b(unctions)0 1344 y(Metho)s(d")31 b Fm(Comm)m(unications)e(of)h(the)h -(A)m(CM,)g(23,)h(12\(Decem)m(b)s(er)g(1980\),)h(729.)125 -1632 y([3])j(Cic)m(helli,)e(Ric)m(hard)g(J.)h Fh(Minimal)e(P)m(erfect)j -(Hash)f(F)-8 b(unctions)35 b(Made)h(Simple)i Fm(Comm)m(unications)33 -b(of)j(the)0 1756 y(A)m(CM,)31 b(23,)h(1\(Jan)m(uary)e(1980\),)j -(17-19.)125 2044 y([4])45 b(Co)s(ok,)i(C.)d(R.)h(and)e(Oldeho)s(eft,)k -(R.R.)d Fh(A)g(Letter)h(Orien)m(ted)f(Minimal)e(P)m(erfect)j(Hashing)e -(F)-8 b(unction)0 2168 y Fm(SIGPLAN)30 b(Notices,)h(17,)h(9\(Septem)m -(b)s(er)f(1982\),)h(18-27.)125 2456 y([5])43 b(Cormac)m(k,)k(G.)c(V.)g -(and)f(Horsp)s(o)s(ol,)j(R.)e(N.)g(S.)g(and)f(Kaiserw)m(erth,)j(M.)e -Fh(Practical)g(P)m(erfect)h(Hashing)0 2580 y Fm(Computer)30 -b(Journal,)f(28,)i(1\(Jan)m(uary)g(1985\),)i(54-58.)125 -2868 y([6])d(Jaesc)m(hk)m(e,)i(G.)f Fh(Recipro)s(cal)e(Hashing:)40 -b(A)30 b(Metho)s(d)g(for)g(Generating)g(Minimal)e(P)m(erfect)j(Hashing) -f(F)-8 b(unc-)0 2992 y(tions)33 b Fm(Comm)m(unications)c(of)i(the)g(A)m -(CM,)g(24,)g(12\(Decem)m(b)s(er)i(1981\),)f(829-833.)125 -3280 y([7])27 b(Jaesc)m(hk)m(e,)i(G.)e(and)f(Osterburg,)g(G.)h -Fh(On)f(Cic)m(helli's)e(Minimal)g(P)m(erfect)j(Hash)g(F)-8 -b(unctions)26 b(Metho)s(d)k Fm(Com-)0 3404 y(m)m(unications)f(of)i(the) -f(A)m(CM,)h(23,)h(12\(Decem)m(b)s(er)g(1980\),)h(728-729.)125 -3692 y([8])e(Sager,)h(Thomas)e(J.)h Fh(A)g(P)m(olynomial)e(Time)h -(Generator)i(for)e(Minimal)f(P)m(erfect)j(Hash)f(F)-8 -b(unctions)34 b Fm(Com-)0 3816 y(m)m(unications)29 b(of)i(the)f(A)m -(CM,)h(28,)h(5\(Decem)m(b)s(er)g(1985\),)h(523-532)125 -4104 y([9])40 b(Sc)m(hmidt,)i(Douglas)e(C.)g Fh(GPERF:)g(A)g(P)m -(erfect)i(Hash)d(F)-8 b(unction)40 b(Generator)48 b Fm(Second)39 -b(USENIX)h(C)p Fk(++)0 4228 y Fm(Conference)30 b(Pro)s(ceedings,)g -(April)e(1990.)125 4516 y([10])k(Seb)s(esta,)f(R.W.)h(and)e(T)-8 -b(a)m(ylor,)32 b(M.A.)f Fh(Minimal)e(P)m(erfect)j(Hash)f(F)-8 -b(unctions)31 b(for)f(Reserv)m(ed)i(W)-8 b(ord)31 b(Lists)0 -4640 y Fm(SIGPLAN)f(Notices,)h(20,)h(12\(Septem)m(b)s(er)f(1985\),)i -(47-53.)125 4928 y([11])28 b(Sprugnoli,)c(R.)j Fh(P)m(erfect)h(Hashing) -e(F)-8 b(unctions:)39 b(A)27 b(Single)e(Prob)s(e)h(Retrieving)g(Metho)s -(d)g(for)h(Static)g(Sets)0 5053 y Fm(Comm)m(unications)i(of)h(the)h(A)m -(CM,)g(20)g(11\(No)m(v)m(em)m(b)s(er)i(1977\),)g(841-850.)125 -5340 y([12])e(Stallman,)e(Ric)m(hard)h(M.)h Fh(Using)e(and)h(P)m -(orting)g(GNU)h(CC)38 b Fm(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 -b(oundation,)30 b(1988.)p eop -%%Page: 32 34 -32 33 bop 0 -116 a Fm(32)2920 b(User's)31 b(Guide)e(to)i -Fk(gperf)125 366 y Fm([13])g(Stroustrup,)e(Bjarne)i Fh(The)e(C)p -Fk(++)h Fh(Programming)f(Language.)42 b Fm(Addison-W)-8 -b(esley)g(,)30 b(1986.)125 640 y([14])h(Tiemann,)e(Mic)m(hael)i(D.)g -Fh(User's)f(Guide)f(to)j(GNU)f(C)p Fk(++)e Fm(F)-8 b(ree)32 -b(Soft)m(w)m(are)f(F)-8 b(oundation,)30 b(1989.)p eop -%%Page: -1 35 --1 34 bop 3875 -116 a Fm(i)0 366 y Fj(T)-13 b(able)31 -b(of)f(Con)l(ten)l(ts)0 715 y Fi(GNU)45 b(GENERAL)g(PUBLIC)g(LICENSE)25 -b Fb(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)69 -b Fi(1)299 871 y Fm(Pream)m(ble)15 b Fa(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)45 -b Fm(1)299 995 y(TERMS)29 b(AND)j(CONDITIONS)15 b Fa(.)f(.)h(.)g(.)g(.) +%%Page: 23 25 +23 24 bop 150 -116 a Fs(Chapter)30 b(7:)41 b(Implemen)m(tation)29 +b(Details)i(of)f(GNU)h Fn(gperf)1499 b Fs(23)150 299 +y Fp(7)80 b(Implemen)l(tation)52 b(Details)j(of)f(GNU)g +Fm(gperf)275 533 y Fs(A)27 b(pap)s(er)f(describing)f(the)j(high-lev)m +(el)e(description)f(of)j(the)f(data)h(structures)f(and)g(algorithms)f +(used)150 643 y(to)e(implemen)m(t)d Fn(gperf)h Fs(will)e(so)s(on)j(b)s +(e)f(a)m(v)-5 b(ailable.)38 b(This)21 b(pap)s(er)h(is)g(useful)f(not)j +(only)e(from)g(a)i(main)m(tenance)150 752 y(and)30 b(enhancemen)m(t)h +(p)s(ersp)s(ectiv)m(e,)f(but)f(also)h(b)s(ecause)h(they)f(demonstrate)h +(sev)m(eral)g(clev)m(er)g(and)f(useful)150 862 y(programming)e(tec)m +(hniques,)i(e.g.,)h(`Iteration)f(Num)m(b)s(er')f(b)s(o)s(olean)g(arra)m +(ys,)h(double)e(hashing,)h(a)h(\\safe")150 971 y(and)i(e\016cien)m(t)g +(metho)s(d)g(for)g(reading)g(arbitrarily)d(long)j(input)f(from)g(a)i +(\014le,)f(and)g(a)h(pro)m(v)-5 b(ably)31 b(optimal)150 +1081 y(algorithm)g(for)i(sim)m(ultaneously)d(determining)g(b)s(oth)i +(the)g(minim)m(um)e(and)i(maxim)m(um)f(elemen)m(ts)h(in)g(a)150 +1191 y(list.)p eop +%%Page: 24 26 +24 25 bop 150 -116 a Fs(Chapter)30 b(8:)41 b(Bibliograph)m(y)2533 +b(24)150 299 y Fp(8)80 b(Bibliograph)l(y)275 533 y Fs([1])22 +b(Chang,)h(C.C.:)36 b Fl(A)24 b(Scheme)h(for)g(Constructing)h(Or)-5 +b(der)g(e)g(d)26 b(Minimal)f(Perfe)-5 b(ct)24 b(Hashing)h(F)-7 +b(unctions)150 643 y Fs(Information)29 b(Sciences)h(39\(1986\),)k +(187-195.)275 777 y([2])26 b(Cic)m(helli,)e(Ric)m(hard)h(J.)g +Fl(A)n(uthor's)k(R)-5 b(esp)g(onse)30 b(to)f(\\On)f(Cichel)5 +b(li's)28 b(Minimal)h(Perfe)-5 b(ct)28 b(Hash)g(F)-7 +b(unc-)150 887 y(tions)33 b(Metho)-5 b(d")38 b Fs(Comm)m(unications)29 +b(of)i(the)f(A)m(CM,)h(23,)h(12\(Decem)m(b)s(er)g(1980\),)h(729.)275 +1021 y([3])f(Cic)m(helli,)e(Ric)m(hard)g(J.)i Fl(Minimal)i(Perfe)-5 +b(ct)33 b(Hash)i(F)-7 b(unctions)34 b(Made)g(Simple)39 +b Fs(Comm)m(unications)150 1131 y(of)31 b(the)f(A)m(CM,)h(23,)h(1\(Jan) +m(uary)f(1980\),)h(17-19.)275 1265 y([4])22 b(Co)s(ok,)h(C.)e(R.)g(and) +f(Oldeho)s(eft,)i(R.R.)g Fl(A)h(L)-5 b(etter)25 b(Oriente)-5 +b(d)25 b(Minimal)f(Perfe)-5 b(ct)24 b(Hashing)g(F)-7 +b(unction)150 1375 y Fs(SIGPLAN)30 b(Notices,)h(17,)h(9\(Septem)m(b)s +(er)f(1982\),)h(18-27.)275 1509 y([5])22 b(Cormac)m(k,)j(G.)d(V.)g(and) +g(Horsp)s(o)s(ol,)g(R.)g(N.)g(S.)g(and)f(Kaiserw)m(erth,)i(M.)g +Fl(Pr)-5 b(actic)g(al)26 b(Perfe)-5 b(ct)25 b(Hashing)150 +1619 y Fs(Computer)30 b(Journal,)f(28,)i(1\(Jan)m(uary)g(1985\),)i +(54-58.)275 1753 y([6])28 b(Jaesc)m(hk)m(e,)j(G.)d Fl(R)-5 +b(e)g(cipr)g(o)g(c)g(al)34 b(Hashing:)41 b(A)30 b(Metho)-5 +b(d)31 b(for)g(Gener)-5 b(ating)32 b(Minimal)e(Perfe)-5 +b(ct)31 b(Hashing)150 1863 y(F)-7 b(unctions)39 b Fs(Comm)m(unications) +29 b(of)h(the)h(A)m(CM,)g(24,)g(12\(Decem)m(b)s(er)i(1981\),)g +(829-833.)275 1998 y([7])22 b(Jaesc)m(hk)m(e,)i(G.)e(and)f(Osterburg,)h +(G.)g Fl(On)h(Cichel)5 b(li's)25 b(Minimal)f(Perfe)-5 +b(ct)24 b(Hash)h(F)-7 b(unctions)25 b(Metho)-5 b(d)150 +2107 y Fs(Comm)m(unications)29 b(of)h(the)h(A)m(CM,)g(23,)h(12\(Decem)m +(b)s(er)g(1980\),)h(728-729.)275 2242 y([8])25 b(Sager,)h(Thomas)e(J.)h +Fl(A)h(Polynomial)j(Time)f(Gener)-5 b(ator)29 b(for)f(Minimal)f(Perfe) +-5 b(ct)27 b(Hash)h(F)-7 b(unctions)150 2351 y Fs(Comm)m(unications)29 +b(of)h(the)h(A)m(CM,)g(28,)h(5\(Decem)m(b)s(er)g(1985\),)g(523-532)275 +2486 y([9])f(Sc)m(hmidt,)e(Douglas)h(C.)g Fl(GPERF:)i(A)g(Perfe)-5 +b(ct)32 b(Hash)h(F)-7 b(unction)33 b(Gener)-5 b(ator)42 +b Fs(Second)30 b(USENIX)150 2595 y(C)p Fn(++)f Fs(Conference)i(Pro)s +(ceedings,)f(April)e(1990.)275 2730 y([10])c(Seb)s(esta,)h(R.W.)e(and)g +(T)-8 b(a)m(ylor,)25 b(M.A.)f Fl(Minimal)i(Perfe)-5 b(ct)26 +b(Hash)g(F)-7 b(unctions)27 b(for)g(R)-5 b(eserve)g(d)27 +b(Wor)-5 b(d)150 2839 y(Lists)38 b Fs(SIGPLAN)30 b(Notices,)i(20,)f +(12\(Septem)m(b)s(er)g(1985\),)i(47-53.)275 2974 y([11])43 +b(Sprugnoli,)f(R.)g Fl(Perfe)-5 b(ct)43 b(Hashing)h(F)-7 +b(unctions:)64 b(A)43 b(Single)g(Pr)-5 b(ob)g(e)44 b(R)-5 +b(etrieving)44 b(Metho)-5 b(d)44 b(for)150 3083 y(Static)33 +b(Sets)38 b Fs(Comm)m(unications)29 b(of)i(the)f(A)m(CM,)i(20)f(11\(No) +m(v)m(em)m(b)s(er)i(1977\),)f(841-850.)275 3218 y([12])27 +b(Stallman,)f(Ric)m(hard)f(M.)i Fl(Using)h(and)i(Porting)f(GNU)g(CC)39 +b Fs(F)-8 b(ree)28 b(Soft)m(w)m(are)f(F)-8 b(oundation,)27 +b(1988.)275 3352 y([13])k(Stroustrup,)e(Bjarne)i Fl(The)h(C)p +Fn(++)g Fl(Pr)-5 b(o)g(gr)g(amming)36 b(L)-5 b(anguage.)40 +b Fs(Addison-W)-8 b(esley)g(,)31 b(1986.)275 3487 y([14])g(Tiemann,)e +(Mic)m(hael)i(D.)g Fl(User's)h(Guide)h(to)g(GNU)f(C)p +Fn(++)e Fs(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)30 +b(1989.)p eop +%%Page: 25 27 +25 26 bop 150 -116 a Fs(Concept)31 b(Index)2927 b(25)150 +299 y Fp(Concept)52 b(Index)150 642 y Fr(\045)150 777 +y Fd(`)p Fc(\045\045)p Fd(')12 b Fb(.)i(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 +b Fd(12)150 874 y(`)p Fc(\045{)p Fd(')12 b Fb(.)i(.)e(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 +b Fd(12)150 972 y(`)p Fc(\045})p Fd(')12 b Fb(.)i(.)e(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 +b Fd(12)150 1250 y Fr(A)150 1384 y Fd(Arra)n(y)25 b(name)18 +b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 +b Fd(17)150 1675 y Fr(B)150 1809 y Fd(Bugs)9 b Fb(.)k(.)g(.)f(.)g(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h +(.)35 b Fd(8)150 2100 y Fr(C)150 2235 y Fd(Class)27 b(name)10 +b Fb(.)i(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 +b Fd(16)150 2513 y Fr(D)150 2647 y Fd(Declaration)27 +b(section)d Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 +b Fd(11)150 2745 y(Delimiters)9 b Fb(.)k(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 b Fd(15)150 2842 +y(Duplicates)24 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)49 b Fd(18)150 3133 y Fr(F)150 3267 y +Fd(F)-6 b(ormat)23 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 b Fd(11)150 3365 y(F)-6 +b(unctions)25 b(section)18 b Fb(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)43 b Fd(11)2025 642 y Fr(H)2025 764 y Fc(hash)13 +b Fb(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)g(.)h(.)f(.)g(.)h(.)38 b Fd(13)2025 855 y(hash)25 +b(table)9 b Fb(.)k(.)f(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)34 b Fd(13)2025 1100 y Fr(I)2025 1222 y Fc(in_word_set)23 +b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)46 +b Fd(14)2025 1313 y(Initializers)25 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49 b Fd(16)2025 1557 +y Fr(J)2025 1679 y Fd(Jump)24 b(v)l(alue)6 b Fb(.)13 +b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32 +b Fd(19)2025 1936 y Fr(K)2025 2058 y Fd(Keyw)n(ords)25 +b(section)16 b Fb(.)e(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 +b Fd(11)2025 2315 y Fr(M)2025 2437 y Fd(Minimal)26 b(p)r(erfect)g(hash) +g(functions)c Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f +(.)g(.)48 b Fd(10)2025 2694 y Fr(N)2025 2816 y Fd(NUL)9 +b Fb(.)j(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +(.)h(.)f(.)g(.)h(.)f(.)35 b Fd(14)2025 3060 y Fr(S)2025 +3182 y Fd(Slot)26 b(name)13 b Fb(.)e(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fd(16)2025 3274 y(Static)26 +b(searc)n(h)g(structure)20 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 +b Fd(10)2025 3365 y Fc(switch)22 b Fb(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 b Fd(14,)27 b(17)p +eop +%%Page: -1 28 +-1 27 bop 3725 -116 a Fs(i)150 299 y Fp(T)-13 b(able)54 +b(of)g(Con)l(ten)l(ts)150 641 y Fr(GNU)45 b(GENERAL)g(PUBLIC)g(LICENSE) +31 b Fa(.)19 b(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)75 b +Fr(1)449 778 y Fs(Pream)m(ble)16 b Fl(.)e(.)h(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -45 b Fm(2)299 1120 y(App)s(endix:)38 b(Ho)m(w)31 b(to)g(Apply)e(These)h -(T)-8 b(erms)30 b(to)h(Y)-8 b(our)31 b(New)f(Programs)d -Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 b Fm(5)0 1369 -y Fi(Con)l(tributors)46 b(to)f(GNU)g Ff(gperf)e Fi(Utilit)l(y)g -Fb(.)19 b(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h -(.)85 b Fi(7)0 1649 y(1)135 b(In)l(tro)t(duction)40 b -Fb(.)20 b(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f -(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.) -f(.)85 b Fi(9)0 1929 y(2)135 b(Static)45 b(searc)l(h)h(structures)f -(and)f(GNU)h Ff(gperf)38 b Fb(.)20 b(.)f(.)g(.)h(.)f(.)h(.)f(.)85 -b Fi(11)0 2210 y(3)135 b(High-Lev)l(el)46 b(Description)g(of)f(GNU)g -Ff(gperf)15 b Fb(.)i(.)i(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)59 -b Fi(13)299 2365 y Fm(3.1)92 b(Input)29 b(F)-8 b(ormat)32 -b(to)f Fk(gperf)22 b Fa(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)53 b Fm(13)598 -2490 y(3.1.1)93 b Fk(struct)28 b Fm(Declarations)j(and)f(C)g(Co)s(de)g -(Inclusion)24 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g -(.)56 b Fm(14)598 2614 y(3.1.2)93 b(F)-8 b(ormat)31 b(for)f(Keyw)m(ord) -g(En)m(tries)16 b Fa(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)45 -b Fm(15)598 2739 y(3.1.3)93 b(Including)27 b(Additional)h(C)i(F)-8 -b(unctions)19 b Fa(.)14 b(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)48 b Fm(16)299 -2863 y(3.2)92 b(Output)29 b(F)-8 b(ormat)32 b(for)e(Generated)h(C)f(Co) -s(de)g(with)f Fk(gperf)22 b Fa(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)52 b Fm(16)0 3112 y Fi(4)135 b(Options)45 -b(to)g(the)h Ff(gperf)c Fi(Utilit)l(y)24 b Fb(.)e(.)d(.)g(.)h(.)f(.)h -(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)69 -b Fi(19)299 3268 y Fm(4.1)92 b(Options)29 b(that)i(a\013ect)h(In)m -(terpretation)e(of)h(the)f(Input)f(File)d Fa(.)15 b(.)h(.)f(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 b Fm(19)299 3393 y(4.2)92 -b(Options)29 b(to)i(sp)s(ecify)e(the)i(Language)g(for)f(the)h(Output)e -(Co)s(de)13 b Fa(.)h(.)h(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)42 -b Fm(19)299 3517 y(4.3)92 b(Options)29 b(for)h(\014ne)g(tuning)f -(Details)h(in)f(the)i(Output)e(Co)s(de)23 b Fa(.)14 b(.)h(.)g(.)g(.)h -(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)52 b Fm(20)299 3642 -y(4.4)92 b(Options)29 b(for)h(c)m(hanging)g(the)h(Algorithms)e(emplo)m -(y)m(ed)h(b)m(y)h Fk(gperf)21 b Fa(.)13 b(.)i(.)g(.)g(.)g(.)g(.)g(.)g -(.)50 b Fm(21)299 3766 y(4.5)92 b(Informativ)m(e)30 b(Output)d -Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)57 b Fm(24)0 4015 -y Fi(5)135 b(Kno)l(wn)45 b(Bugs)f(and)h(Limitations)i(with)e -Ff(gperf)28 b Fb(.)17 b(.)i(.)h(.)f(.)h(.)f(.)h(.)72 -b Fi(25)0 4296 y(6)135 b(Things)44 b(Still)i(Left)g(to)f(Do)17 -b Fb(.)j(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.) -g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)62 b Fi(27)0 4576 y(7)135 -b(Implemen)l(tation)47 b(Details)g(of)e(GNU)g Ff(gperf)30 -b Fb(.)20 b(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)78 b Fi(29)0 -4856 y(8)135 b(Bibliograph)l(y)32 b Fb(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h -(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) -h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)76 b Fi(31)p eop -%%Page: -2 36 --2 35 bop 0 -116 a Fm(ii)2958 b(User's)31 b(Guide)e(to)i -Fk(gperf)p eop +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)45 b Fs(1)449 888 +y(TERMS)29 b(AND)j(CONDITIONS)d(F)m(OR)h(COPYING,)h(DISTRIBUTION)631 +997 y(AND)g(MODIFICA)-8 b(TION)24 b Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) +g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Fs(2)449 1107 +y(Ho)m(w)31 b(to)g(Apply)e(These)h(T)-8 b(erms)30 b(to)h(Y)-8 +b(our)31 b(New)f(Programs)16 b Fl(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)46 b Fs(6)150 1349 y Fr(Con)l(tributors)g(to)f(GNU)g +Fk(gperf)e Fr(Utilit)l(y)16 b Fa(.)21 b(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)g(.)h(.)60 b Fr(8)150 1619 y(1)135 b(In)l(tro)t(duction)15 +b Fa(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f +(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)60 +b Fr(9)150 1889 y(2)135 b(Static)45 b(searc)l(h)h(structures)f(and)f +(GNU)h Fk(gperf)15 b Fa(.)i(.)j(.)f(.)60 b Fr(10)150 +2159 y(3)135 b(High-Lev)l(el)46 b(Description)g(of)f(GNU)g +Fk(gperf)21 b Fa(.)c(.)i(.)h(.)f(.)h(.)65 b Fr(11)449 +2296 y Fs(3.1)92 b(Input)29 b(F)-8 b(ormat)32 b(to)f +Fn(gperf)23 b Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) +g(.)g(.)54 b Fs(11)748 2405 y(3.1.1)93 b Fn(struct)28 +b Fs(Declarations)j(and)f(C)g(Co)s(de)g(Inclusion)25 +b Fl(.)15 b(.)g(.)g(.)g(.)g(.)57 b Fs(11)748 2515 y(3.1.2)93 +b(F)-8 b(ormat)31 b(for)f(Keyw)m(ord)g(En)m(tries)17 +b Fl(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) +g(.)g(.)g(.)46 b Fs(12)748 2624 y(3.1.3)93 b(Including)27 +b(Additional)h(C)i(F)-8 b(unctions)19 b Fl(.)c(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49 b Fs(13)449 2734 y(3.2)92 +b(Output)29 b(F)-8 b(ormat)32 b(for)e(Generated)h(C)f(Co)s(de)g(with)f +Fn(gperf)23 b Fl(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)52 +b Fs(13)449 2844 y(3.3)92 b(Use)31 b(of)f(NUL)h(c)m(haracters)11 +b Fl(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) +40 b Fs(14)150 3086 y Fr(4)135 b(In)l(v)l(oking)45 b +Fk(gperf)16 b Fa(.)i(.)h(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.) +f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)61 +b Fr(15)449 3223 y Fs(4.1)92 b(Options)29 b(that)i(a\013ect)h(In)m +(terpretation)e(of)h(the)f(Input)f(File)e Fl(.)15 b(.)g(.)g(.)g(.)g(.)g +(.)57 b Fs(15)449 3333 y(4.2)92 b(Options)29 b(to)i(sp)s(ecify)e(the)i +(Language)g(for)f(the)h(Output)e(Co)s(de)14 b Fl(.)g(.)h(.)g(.)g(.)43 +b Fs(15)449 3442 y(4.3)92 b(Options)29 b(for)h(\014ne)g(tuning)f +(Details)h(in)f(the)i(Output)e(Co)s(de)23 b Fl(.)15 b(.)g(.)g(.)g(.)g +(.)g(.)53 b Fs(16)449 3552 y(4.4)92 b(Options)29 b(for)h(c)m(hanging)g +(the)h(Algorithms)e(emplo)m(y)m(ed)h(b)m(y)h Fn(gperf)21 +b Fl(.)14 b(.)50 b Fs(17)449 3661 y(4.5)92 b(Informativ)m(e)30 +b(Output)d Fl(.)15 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) +g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)58 b Fs(20)150 3904 y Fr(5)135 b(Kno)l(wn)45 +b(Bugs)f(and)h(Limitations)i(with)e Fk(gperf)32 b Fa(.)19 +b(.)g(.)79 b Fr(21)150 4174 y(6)135 b(Things)44 b(Still)i(Left)g(to)f +(Do)23 b Fa(.)d(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h +(.)f(.)g(.)h(.)f(.)68 b Fr(22)150 4443 y(7)135 b(Implemen)l(tation)47 +b(Details)g(of)e(GNU)g Fk(gperf)37 b Fa(.)19 b(.)g(.)h(.)f(.)84 +b Fr(23)150 4713 y(8)135 b(Bibliograph)l(y)38 b Fa(.)19 +b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h +(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)82 b Fr(24)150 +4983 y(Concept)45 b(Index)21 b Fa(.)e(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.) +f(.)h(.)f(.)h(.)65 b Fr(25)p eop %%Trailer end userdict /end-hook known{end-hook}if diff --git a/doc/gperf.texi b/doc/gperf.texi index 938cda6..e510ac9 100644 --- a/doc/gperf.texi +++ b/doc/gperf.texi @@ -7,7 +7,7 @@ @c some day we should @include version.texi instead of defining @c these values at hand. -@set UPDATED 20 August 2000 +@set UPDATED 26 September 2000 @set EDITION 2.7.2 @set VERSION 2.7.2 @c --------------------- @@ -154,7 +154,8 @@ Bostic's algorithm written in C, and distributed to net.sources around 1984. The current program is a heavily modified, enhanced, and extended implementation of Keith's basic idea, created at the University of California, Irvine. Bugs, patches, and suggestions should be reported -to @code{}. +to both @code{} and +@code{}. @item Special thanks is extended to Michael Tiemann and Doug Lea, for diff --git a/doc/gperf_1.html b/doc/gperf_1.html index fd0c26b..b47dd53 100644 --- a/doc/gperf_1.html +++ b/doc/gperf_1.html @@ -1,7 +1,7 @@ + from gperf.texi on 26 September 2000 --> Perfect Hash Function Generator - GNU GENERAL PUBLIC LICENSE diff --git a/doc/gperf_10.html b/doc/gperf_10.html index cdde570..8f72c16 100644 --- a/doc/gperf_10.html +++ b/doc/gperf_10.html @@ -1,7 +1,7 @@ + from gperf.texi on 26 September 2000 --> Perfect Hash Function Generator - 8 Bibliography diff --git a/doc/gperf_11.html b/doc/gperf_11.html index de2c452..27762bd 100644 --- a/doc/gperf_11.html +++ b/doc/gperf_11.html @@ -1,7 +1,7 @@ + from gperf.texi on 26 September 2000 --> Perfect Hash Function Generator - Concept Index diff --git a/doc/gperf_2.html b/doc/gperf_2.html index 5bb72a2..b3c3c57 100644 --- a/doc/gperf_2.html +++ b/doc/gperf_2.html @@ -1,7 +1,7 @@ + from gperf.texi on 26 September 2000 --> Perfect Hash Function Generator - Contributors to GNU gperf Utility @@ -25,7 +25,8 @@ Bostic's algorithm written in C, and distributed to net.sources around 1984. The current program is a heavily modified, enhanced, and extended implementation of Keith's basic idea, created at the University of California, Irvine. Bugs, patches, and suggestions should be reported -to <bug-gnu-utils@gnu.org>. +to both <bug-gnu-utils@gnu.org> and +<gperf-bugs@lists.sourceforge.net>.