%!PS-Adobe-2.0 %%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software %%Title: gperf.dvi %%Pages: 32 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentPaperSizes: a4 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D600 -o gperf.ps gperf.dvi %DVIPSParameters: dpi=600, compressed %DVIPSSource: TeX output 2003.05.07:1528 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S 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 (gperf.dvi) @start %DVIPSBitmapFont: Fa cmbxti10 14.4 1 /Fa 1 47 df<13FCEA03FF000F13804813C05AA25AA2B5FCA31480A214006C5A6C5A6C5A EA0FE0121271912B>46 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fb cmti9 9 1 /Fb 1 47 df<121C127F12FFA412FE12380808778718>46 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fc cmtt9 9 29 /Fc 29 126 df<000F1470486C13F8383FC001EA7FE0140315F038FFF00700F914E0A214 0F15C0A2141F00FF1480387FE03F1500A26C485A381F807E380F00FEC75AA213015CA213 035C13075CA2130F5C131F5CA2133F91C7FCA24913F090387E01F89038FE03FC9038FC07 FEA212019038F80FFF0003149F13F0A2120713E0A2000F14FF9038C007FE121F1380EC03 FC000FEB01F86CC712F0203A7DB327>37 D<007FB512F8B612FCA46C14F81E067C9927> 45 D<1278B612FE15FFA315FE39FC0001FCEC03F8EC07F0007814E0C7120FEC1FC01580 143FEC7F00147E14FE5C13015C13035C13075CA2495AA3495AA3133F91C7FCA55B137EA9 133C20307DAE27>55 D<007FB512F8B612FCA46C14F81E067C7E27>95 D<3803FFC0000F13F04813FC4813FF811380EC1FC0381F000F000480C71207A2EB0FFF13 7F0003B5FC120F5A383FFC07EA7FC0130012FE5AA46C130F007F131FEBC0FF6CB612806C 15C07E000313F1C69038807F8022207C9F27>97 DIIIII<153F9039 1FC0FF80D97FF313C048B612E05A4814EF390FF07F873A1FC01FC3C0EDC000EB800F4848 6C7EA66C6C485AEBC01FA2390FF07F8090B5C7FC5C485BEB7FF0EB1FC090C9FCA27F6CB5 FC15E015F84814FE4880EB8001007EC7EA3F80007C140F00FC15C0481407A46C140F007C 1580007F143F6C6CEB7F009038F807FF6CB55A000714F86C5CC614C0D90FFCC7FC23337E A027>II<130F497E49 7EA46D5A6DC7FC90C8FCA7383FFF80487FA37EEA000FB3A4007FB512F0B6FC15F815F07E 1D2F7BAE27>I107 D<387FFF80B57EA37EEA000FB3B2007FB512F8B612FCA36C14F81E2E7CAD27>I<39 7F07C01F3AFF9FF07FC09039FFF9FFE091B57E7E3A0FFC7FF1F89038F03FC001E0138001 C01300A3EB803EB03A7FF0FFC3FF486C01E3138001F913E701F813E36C4801C313002920 819F27>I<387FE07F39FFF1FFC001F713F090B5FC6C80000313C1EC01FCEBFE005B5BA2 5BB03A7FFF83FFE0B500C713F0A36C018313E024207F9F27>II<387FE0FFD8FFF313C090B512F0816C800003EB81FE 49C67E49EB3F8049131F16C049130FA216E01507A6150F16C07F151F6DEB3F80157F6DEB FF009038FF83FEECFFFC5D5D01F313C0D9F0FEC7FC91C8FCAC387FFF80B57EA36C5B2331 7F9F27>I<397FFC03FC39FFFE0FFF023F13804A13C0007F90B5FC39007FFE1F14F89138 F00F809138E002004AC7FC5CA291C8FCA2137EAD007FB57EB67EA36C5C22207E9F27> 114 D<9038FFF3800007EBFFC0121F5A5AEB803F38FC000F5AA2EC07806C90C7FCEA7F80 13FC383FFFF06C13FC000713FF00011480D8000F13C09038003FE014070078EB03F000FC 1301A27E14036CEB07E0EBE01F90B512C01580150000FB13FC38707FF01C207B9F27>I< 133C137EA8007FB512F0B612F8A36C14F0D8007EC7FCAE1518157EA415FE6D13FC1483EC FFF86D13F06D13E0010313C0010013001F297EA827>I<397FE01FF8486C487EA3007F13 1F00031300B21401A21403EBFC0F6CB612E016F07EEB3FFE90390FF87FE024207F9F27> I<3A7FFE07FFE000FF15F06D5A497E007F15E03A0F80001F00A36D5B0007143EA414F0EB C1F83903E3FC7CA4EBE79EA200011478A301F713F8A2EBFF0F6C5CA3EBFE0790387C03E0 24207F9F27>119 D<393FFC1FFF486C5A168016006C487E3901F807E06C6C485A4A5A01 7E90C7FC6D5AEB1F7E5C6D5A13076D5A5C80497E130F497E143EEB3E3FEB7E1F90387C0F 8001F87F00016D7E3803F0033A7FFE1FFF80A2B54813C06C486C1380A222207E9F27>I< 3A7FFC0FFF80486C4813C0A36C486C13803A07E000F800000313015D13F00001130301F8 5B1200A26D485A137CA290387E0F80133EA2011F90C7FC5CA2130F149E14BE130714FC13 03A25C1301A25CA213035CA213075C1208EA3E0F007F5B131FD87E7FC8FCEA7FFE6C5A5B 6C5AEA07C022317E9F27>I<001FB512FE4814FFA490380001FEEC03FCEC07F8EC0FF000 1EEB1FE0C7EA3FC0EC7F80ECFF00495A495A495AEB1FE0495A495A49C7FC485A4848131E 4848133F485A485A485A485AB7FCA46C14FE20207E9F27>II125 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fd cmr9 9 47 /Fd 47 123 df<123C127EB4FCA21380A2127F123D1201A412031300A25A1206120E120C 121C5A5A126009177AB315>39 D<123C127EB4FCA21380A2127F123D1201A412031300A2 5A1206120E120C121C5A5A126009177A8715>44 D48 D<13075B5B137FEA07FFB5FC13BFEAF83F1200B3B3A2497E00 7FB51280A319327AB126>IIII<000C14C0380FC00F90B5128015005C5C14F0 14C0D80C18C7FC90C8FCA9EB0FC0EB7FF8EBF07C380FC03F9038001F80EC0FC0120E000C EB07E0A2C713F01403A215F8A41218127E12FEA315F0140712F8006014E01270EC0FC06C 131F003C14806CEB7F00380F80FE3807FFF8000113E038003F801D347CB126>I<123012 3C003FB6FCA34814FEA215FC0070C7123800601430157015E04814C01401EC0380C7EA07 001406140E5C141814385CA25CA2495A1303A3495AA2130FA3131F91C7FCA25BA55BA913 1C20347CB126>55 DII<15E0A34A7EA24A7EA34A7EA3EC0DFE140CA2EC187FA34A6C7EA202 707FEC601FA202E07FECC00FA2D901807F1507A249486C7EA301066D7EA2010E80010FB5 FCA249800118C77EA24981163FA2496E7EA3496E7EA20001821607487ED81FF04A7ED8FF FE49B512E0A333367DB53A>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: Ff cmss10 10.95 2 /Ff 2 42 df<14FCEB01F8EB03F0EB07E0EB0FC0131F1480EB3F005B137E5B12015B1203 A2485AA25B120FA25B121FA25B123FA448C7FCA712FEB3A2127FA76C7EA4121F7FA2120F 7FA212077FA26C7EA212017F1200137E137F7FEB1F8014C0130FEB07E0EB03F0EB01F8EB 00FC165A79C323>40 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 9 /Fi 9 118 df99 DII<14F0497E497E497EA46D5A6D5A 6D5A91C8FCAB383FFFFC487FB5FCA37E7EC7FCB3AF007FB612F0B712F816FCA316F86C15 F0264476C338>105 D110 D114 D<903907FF80F0017FEBF1F848B512FD000714FF5A5A 5AEBFC00D87FE0131F0180130F48C71207481403A5007FEC01F001C090C7FCEA3FF013FE 381FFFF86CEBFFC0000314F8C614FF013F1480010714E0D9003F13F0020013F8ED0FFC15 03003CEC01FE007E140000FE15FF167F7EA37F6D14FF16FE01F013036DEB07FC01FF137F 91B512F816F016E04815C0D8FC3F1400010F13FCD8780113E0283278B038>III E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fj cmbx12 13.14 37 /Fj 37 122 df45 DI<15F014011407141F147FEB03FF137FB6FCA3 13FC1380C7FCB3B3B2007FB712E0A52B4777C63D>49 DIII65 D<93261FFF80EB01C00307B500F81303033F02FE13074AB7EA800F0207EEE01F021F903A FE007FF83F027F01E0903807FC7F91B5C73801FEFF010301FCEC007F4901F0814901C015 0F4949814990C97E494882495A48498248197F5C48193F5C48191F5C48190FA2485BA21A 075AA391CDFCA2B5FCAD7EA280F207C0A27EA36C7F1A0F6C1A80806C191F6E18006C6180 6C197E6C6D177C6D6C17FC6D6C4C5A6D6D4B5A6D6D4B5A6D01F0ED1FC06D01FC4B5A0100 01FF03FFC7FC6E01E0EB07FE021F01FEEB3FFC020790B612F0020116C0DA003F92C8FC03 0714F8DB001F13804A4D79CB59>67 DIII<93261FFF80EB01C00307B500F81303 033F02FE13074AB7EA800F0207EEE01F021F903AFE007FF83F027F01E0903807FC7F91B5 C73801FEFF010301FCEC007F4901F0814901C0150F4949814990C97E494882495A484982 48197F5C48193F5C48191F5C48190FA2485BA21A075AA391CEFCA2B5FCAD7E050FB712C0 80A37E94C7001FEBC000807EA27E807E807E806C7F7E6D7E6D7E6D7F6D01E05D6D6D5D6D 13FC010001FF4AB5FC6E01E0EB07F9021F01FFEB3FF0020791B5EAE07F0201EEC01FDA00 3FED0007030702F81301DB001F018090C8FC524D79CB60>I73 D75 D78 D85 D87 D97 D<91380FFF8091B512F8010314FF010F158090263FFE0013C0D97FF8EB1F E0D9FFE0EB3FF04849EB7FF8484913FF4890C7FC5A5B121F5B003FED7FF0EE3FE0007FED 1FC093C7FC5BA212FFAC127F7FA2123FA26D153E121F6D157E6C167C6C6D14FC6C16F86C 6D13036C01F0EB07F0D97FFCEB1FE06DB4EBFFC0010F90B5120001035C010014F0020F13 802F337CB137>99 DI< EC0FFF91B512F0010314FC010F14FF90263FFE077F90267FF0007F4948EB3FE04801806D 7E48824890C76C7E4848140783485A003F6F7EA3485A701380A312FFA290B8FCA401F8CA FCA5127FA27FA2123FA26C6CED0F80A2000F161F6C6C16006E5C6C6D147E6C6D5C6C6D49 5AD97FFCEB07F0903A1FFF803FE06D90B55A010392C7FCD9007F13FC020713C031337DB1 38>IIII<13FCEA03FF487F487FA2487FA66C5BA26C5B 6C90C7FCEA00FC90C8FCACEB7FC0B5FCA512037EB3B3B61280A5194D7BCC22>I108 D<90287FC001FFE0EC7FF8B5010F 01FC0103B5FC033F6D010F804B6D6C4814E0DBFE079026C03F817F9126C3F0019138FC00 7F0003D9C7E0DAE1F8806CDA8000D9F1E06D7E02CFC7EBF3C002DE91267FF780131F02FC 03FFC77FA24A5DA24A5DA34A5DB3A9B6D8C03FB5D8F00FB512FCA55E317BB067>I<903A 7FC001FFC0B5010F13F8033F13FE4B7F9126C1FE077F9126C3F0037F00039038C7C0016C D9CF8080150002DE7F02FC81A25CA25CA35CB3A9B6D8C07FEBFFE0A53B317BB044>I<91 3807FF80027F13F80103B6FC010F15C090261FFE017F903A7FF0003FF8D9FFC0EB0FFC48 496D7E4890C76C7E4817804980000F17C048486E13E0A2003F17F049157FA2007F17F8A4 00FF17FCAB007F17F8A36C6CEDFFF0A3001F17E06D5C000F17C06C6C4A13806C17006C6D 495A6C01E0EB1FFC6D6C495A903A3FFE01FFF0010FB612C0010392C7FCD9007F13F80207 138036337DB13D>I<90397FC00FFFB5017F13F002C1B512FC02C714FF9126CFF80F7F91 26FFC00313E0000391C77F6C01FC6E7E4A6E7E5C4A6E7E848319808319C0A47113E0AC4D 13C0A319805FA219004D5A804D5A6E4A5A6E4A5A02FF495BDB80075B9126EFF01F5B02E7 B548C7FC02E314F802E014E0DB0FFEC8FC92CAFCAFB612C0A53B467CB044>I<9039FF80 3FE0B5EBFFF8028113FE02837FDA87E11380EC8F830003D99F0713C06C139E14BCA214F8 A24A6C13806F13004A6C5A93C7FCA45CB3A7B612E0A52A317CB032>114 D<90390FFF8070017FEBF1F048B6FC1207380FFC01391FE0003F4848130F491307127F90 C712035A1501A27FA213E06D90C7FC13FE387FFFF0ECFFC015F06C14FC6C14FF6C15806C 15C06C15E0C615F0013F14F8010714FCEB007F14019138003FFE150F0078140700F81403 A26C1401A37E16FC6C14036D14F87F6DEB07F001F8EB1FE001FFEBFFC091B51280D8FC7F 1400D8F81F13FCD8E00313C027337CB130>I<14F8A61301A41303A21307A2130FA2131F 133F137F13FF1203000F90B512F0B7FCA426007FF8C7FCB3A6167CAA013F14F880A29039 1FFE01F0010F1303903907FF87E06DEBFFC06D14806D6C1300EC0FFC26467EC430>I III<007FB500C090387FFFE0A5C601F0C73803F8006E5D 017F5E6E1407013F5E6E140F011F5E6E141FA26D6D91C7FC5F6D153E6F137E6D157C6F13 FC6D5DEDF0016D5DEDF803027F5C15FC1607DA3FFE5B160F021F5CEDFF1F6E91C8FC16BF 6E13BE16FE6E5BA36E5BA26E5BA26F5AA26F5AA26F5AA393C9FC5D153E157E157CD81F80 13FC486C5B387FE001D8FFF05B14035D14074A5A49485A007F49CAFCEBC07E383F81FC6C B45A6C5B6C13C0C648CBFC3B467EAF41>121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fk cmtt12 14.4 5 /Fk 5 115 df101 D<923801FFC0030F13F0033F13FC92B512FE5C4A14FF5C4A1303EC1FF89238F001FEEC3F E09238C000FC027F14005DAA003FB712F05AB812F8A36C16F0A2C7D87F80C7FCB3B3003F B7FCA2481680A36C1600A2304A7CC93E>II112 D114 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fl cmti10 10.95 45 /Fl 45 123 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 df101 D<4CB47E041F13F093B512FC0303 80030F805D4B15805D92B7FC4AEBFC074A13F0DCC00313004A13804C6C5A4A48EB007895 C7FC5DAB003FB812F04883B97EA56C5F6C5FC7D80FFCC9FCB3B3A8001FB712FE48824883 A56C94C7FC6C5E39597BD84A>II112 D114 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fn cmtt10 10.95 86 /Fn 86 127 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>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<90383FFFE048B512FC000714FF4815804815C04815E0 EBF80001E0133F4848EB1FF049130F90C71207A44815F8481403B3A8147E14FE6CEBFF07 6C15F0EC7F87A2EC3FC7018013CF9038C01FFFD83FE014E0EBF80F90B6FC6C15C06C1580 6C1500000114FCD8003F7FEB00016E7EA21680157F16C0153F16E0151F16F0150FED07E0 25467BB830>I<003FB57E4814F0B612FC15FF6C816C812603F8017F9138003FF0151F6F 7E15071503821501A515035E1507150F4B5A153F4AB45A90B65A5E93C7FC5D8182D9F800 7FED3FE0151F150F821507A817F8EEF1FCA53A3FFF8003FB4801C0EBFFF8B56C7E17F06C 496C13E06C49EB7FC0C9EA1F002E397FB730>I<90390FF803C0D97FFF13E048B512C748 14F74814FF5A381FF80F383FE001497E4848137F90C7123F5A48141FA2150FA37EED07C0 6C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C14E0000114F86C80011F13FF01031480D9 003F13C014019138007FE0151FED0FF0A2ED07F8A2007C140312FEA56C140716F07F6DEB 0FE06D131F01F8EB3FC001FF13FF91B51280160000FD5CD8FC7F13F8D8F81F5BD8780113 80253A7BB830>I<003FB712C04816E0B8FCA43AFE003F800FA8007CED07C0C791C7FCB3 B1011FB5FC4980A46D91C7FC2B387EB730>I<3B7FFFC007FFFCB56C4813FEA46C496C13 FCD803F8C7EA3F80B3B16D147F00011600A36C6C14FE6D13016D5CEC800390393FE00FF8 90391FF83FF06DB55A6D5C6D5C6D91C7FC9038007FFCEC1FF02F3980B730>III89 D<001FB612FC4815FE5A A490C7EA03FCED07F816F0150FED1FE016C0153FED7F80003E1500C85A4A5A5D14034A5A 5D140F4A5A5D143F4A5A92C7FC5C495A5C1303495A5C130F495A5C133F495A91C8FC5B48 48147C4914FE1203485A5B120F485A5B123F485A90B6FCB7FCA46C15FC27387CB730>I< 127CA212FEA27EA26C7EA26C7EA26C7EA26C7EA26C7EA26C7EA212017FA26C7EA26D7EA2 6D7EA26D7EA26D7EA26D7EA26D7EA2130180A26D7EA26E7EA26E7EA26E7EA26E7EA26E7E A26E7EA2140181A26E7EA2ED7F80A2ED3FC0A2ED1FE0A2ED0FF0A2ED07F8A21503A2ED01 F0150025477BBE30>92 D<007FB612F0A2B712F8A36C15F0A225077B7D30>95 D<1338137CEA01FE12031207EA0FFC13F0EA1FE013C0EA3F8013005A127EA212FE5AA5EA FFC013E013F0127FA2123FA2EA1FE0EA07C00F1D70BE30>II< EA3FFC487E12FFA2127F123F1200AAEC03FE91381FFF80027F13E091B57E90B612FC82EC FE079138F001FF4A6C13804A137F4AEB3FC091C7121F17E049140FA217F01607A8160FA2 17E07F161F6EEB3FC0A26EEB7F806E13FFDAF00313009138FC0FFE91B55A5E495CD97E7F 13C0D93C1F90C7FC90380003FC2C3980B730>II<913801FFE04A7F5CA2 8080EC0007AAEB03FE90381FFF874913E790B6FC5A5A481303380FFC00D81FF0133F4913 1F485A150F4848130790C7FCA25AA25AA87E6C140FA27F003F141F6D133F6C7E6D137F39 0FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01C713E0011F010313C0D907FCC8 FC2C397DB730>I<49B4FC010713E0011F13F8017F7F90B57E488048018113803A07FC00 7FC04848133FD81FE0EB1FE0150F484814F0491307127F90C7FCED03F85A5AB7FCA516F0 48C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307D807FEEB1FF03A03FFC07FE06C 90B5FC6C15C0013F14806DEBFE00010713F8010013C0252A7CA830>IIII<14 E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8487F5AA27E7EEA0001B3A9003FB6 12C04815E0B7FCA27E6C15C023397AB830>III<387FFFF8B57EA47EEA0001B3B3A8007FB612F0B712F8A46C15F025387BB730> I<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE 07EB03F801FC13FE9039F803FC01A201F013F8A301E013F0B3A23C7FFE0FFF07FF80B548 018F13C0A46C486C01071380322881A730>II<49B4 FC010F13E0013F13F8497F90B57E0003ECFF8014013A07FC007FC04848EB3FE0D81FE0EB 0FF0A24848EB07F8491303007F15FC90C71201A300FEEC00FEA86C14016C15FCA26D1303 003F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90B512806C15 006C6C13FC6D5B010F13E0010190C7FC272A7CA830>II114 D<90381FFC1E48B5129F000714FF5A5A5A 387FF007EB800100FEC7FC4880A46C143E007F91C7FC13E06CB4FC6C13FC6CEBFF806C14 E0000114F86C6C7F01037F9038000FFF02001380007C147F00FEEC1FC0A2150F7EA27F15 1F6DEB3F806D137F9039FC03FF0090B6FC5D5D00FC14F0D8F83F13C026780FFEC7FC222A 79A830>III<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C49 6C13803B01F80003F000A26D130700005DA26D130F017E5CA2017F131F6D5CA2EC803F01 1F91C7FCA26E5A010F137EA2ECE0FE01075BA214F101035BA3903801FBF0A314FF6D5BA3 6E5A6E5A2B277EA630>I<3B3FFFC01FFFE0486D4813F0B515F8A26C16F06C496C13E0D8 07E0C7EA3F00A26D5C0003157EA56D14FE00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8 A2147DA2ECFDF9017C5C14F8A3017E13FBA290393FF07FE0A3ECE03FA2011F5C90390F80 0F802D277FA630>I<3A3FFF81FFFC4801C37FB580A26C5D6C01815BC648C66CC7FC137F EC80FE90383F81FC90381FC3F8EB0FE3ECE7F06DB45A6D5B7F6D5B92C8FC147E147F5C49 7F81903803F7E0EB07E790380FE3F0ECC1F890381F81FC90383F80FE90387F007E017E13 7F01FE6D7E48486D7E267FFF80B5FCB500C1148014E3A214C16C0180140029277DA630> I<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01FC0003F000A2000014 076D5C137E150F017F5C7F151FD91F805BA214C0010F49C7FCA214E00107137EA2EB03F0 157C15FCEB01F85DA2EB00F9ECFDF0147D147FA26E5AA36E5AA35DA2143F92C8FCA25C14 7EA2000F13FE486C5AEA3FC1EBC3F81387EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B 3C7EA630>I<001FB612FC4815FE5AA316FC90C7EA0FF8ED1FF0ED3FE0ED7FC0EDFF8000 3E491300C7485A4A5A4A5A4A5A4A5A4A5A4A5A4990C7FC495A495A495A495A495A495A49 48133E4890C7127F485A485A485A485A485A48B7FCB8FCA46C15FE28277DA630>II125 D<017C133848B4137C48EB80FE4813C14813C348EBEFFC397FEFFFF0D8FF8713E0010713 C0486C1380D87C0113003838007C1F0C78B730>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fo cmsl10 10.95 35 /Fo 35 123 df12 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 D97 DI IIII<177C913907F803FE91393FFE0F8F9139FC0F9C3F903901F007F89039 07E003E0D90FC013F0011F903801F80C02801400133FD97F007FA315035B495CA3017E49 5A5E150F6D5C6D495A90263F803EC7FCECC0FC903871FFF09038E07F8091C9FC485AA47F A27F90B512F8EDFF806C15E016F86D8048B6FC3A07E0000FFED80F801300003FC8127F00 3E815A00FC815AA25E163EA25E6C15FC007C4A5A6C4A5A6CEC0FC0D80FC0013FC7FC3903 F801FCC6B512F0010F90C8FC303D7FA82D>I<147FEB3FFFA313017FA25CA513015CA513 035CA4ED07F80107EB1FFF9139F0781FC09138F1E00F9139F38007E0ECF70002FE14F049 5A5CA25CA24A130F131F4A14E0A4161F133F4A14C0A4163F137F91C71380A4167F5B4915 00A300015D486C491380B5D8F87F13FCA32E3F7DBE33>I<1478EB01FE130314FFA25B14 FE130314FCEB00F01400ACEB03F8EA01FF14F0A2EA001F130FA314E0A5131F14C0A5133F 1480A5137F1400A55B5BA4EA03FF007F13F0A2B5FC183E7DBD1A>II<147F EB3FFFA313017FA25CA513015CA513035CA501070103B5FC02F014FEA26F13F06F1380EE FE00010F14F84A485AED03C04B5A031FC7FC153E011F13784A5AECC3E0ECC7F0ECCFF814 FF497F14F9ECE1FE14C04A7E4A7E4980017E133F82151F82150F01FE8049130782A20001 81486C49B4FCB5D8F03F13F04B13E0A2303F7EBE30>I<143FEB1FFF5BA213017FA214FE A5130114FCA5130314F8A5130714F0A5130F14E0A5131F14C0A5133F1480A5137F1400A5 5B5BA4EA03FF007F13F8A2B5FC183F7DBE1A>I<902707F007F8EB03FCD803FFD91FFF90 380FFF80913CE0781FC03C0FE09126E1E00FEBF0073E001FE38007E1C003F090260FE700 EBE38002EEDAF70013F802FC14FE02D85C14F84A5CA24A5C011F020F14074A4A14F0A501 3F021F140F4A4A14E0A5017F023F141F91C74914C0A549027F143F4992C71380A300014B 147F486C496DEBFFC0B5D8F87FD9FC3F13FEA347287DA74C>I<903907F007F8D803FFEB 1FFF9139E0781FC09138E1E00F3B001FE38007E090380FE70002EE14F014FC14D814F85C A24A130F131F4A14E0A4161F133F4A14C0A4163F137F91C71380A4167F5B491500A30001 5D486C491380B5D8F87F13FCA32E287DA733>II<91387F01FE 903A7FFF0FFFC09139FE3E03F09238F801F8903A03FFE000FE6D49137F4B7F92C713804A 15C04A141FA218E0A20103150F5C18F0A3171F010716E05CA3173F18C0130F4A147F1880 A2EFFF004C5A011F5D16034C5A6E495AEE1FC06E495AD93FDC017EC7FC91388F01F89138 83FFE0028090C8FC92C9FC137FA291CAFCA45BA25BA31201487EB512F8A3343A81A733> I<903907F01F80D803FFEB7FE09138E1E1F09138E387F839001FE707EB0FE614EE02FC13 F002D813E09138F801804AC7FCA25C131FA25CA4133F5CA5137F91C8FCA55B5BA3120148 7EB512FEA325287EA724>114 D<9138FF81C0010713E390381F807F90397C003F804913 1F4848130F5B00031407A248481400A27FA27F6D90C7FCEBFF8014FC6C13FF6C14C015F0 6C6C7F011F7F13079038007FFE1403140100381300157EA2123C153E157E007C147CA200 7E147815F8007F495A4A5A486C485A26F9E01FC7FC38E0FFFC38C01FE0222A7DA824>I< EB0380A4130791C7FCA25BA25BA2133EA2137E13FE12011207001FB512C0B6FCA2D801FC C7FCA312035BA512075BA5120F5BA41407001F130E13C0A4141E141C1380A26D5AA2000F 5B14F03807E1E03801FF80D8007EC7FC1A3978B723>I<01FE147F00FFEC7FFF4914FEA2 0007140300031401A34914FCA4150312074914F8A41507120F4914F0A4150F121F4914E0 A2151FA3153F4914C0157F15FFEC01DF3A0FC003BFE09138073FFF3803F01E3801FFF826 003FE01380282977A733>III<90B539E007FFF05E18E0 902707FE000313006D48EB01FC705A5F01014A5A5F16036E5C0100140794C7FC160E805E 805E1678ED8070023F13F05EED81C015C191381FC38015C793C8FC15EF15EEEC0FFCA25D A26E5AA25DA26E5A5DA24AC9FC5C140E141E141C5C121C003F5B5A485B495A130300FE5B 4848CAFCEA701EEA783CEA3FF0EA0FC0343A80A630>121 D<017FB512FEA2ECC0019039 7E0003FC49EB07F849EB0FF049EB1FE049EB3FC0ED7F8000011500495B4A5A4A5A484848 5A4A5AC7485A4A5A5D147F4AC7FC495A495A49481370494813E0495A5C133F90387F8001 D9FF0013C0485A48481303485A4848EB078049130F4848131F003F143F397F8001FFB712 00A227277EA628>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fp cmbx12 17.28 47 /Fp 47 122 df45 D<16F04B7E1507151F153FEC01FF1407147F 010FB5FCB7FCA41487EBF007C7FCB3B3B3B3007FB91280A6395E74DD51>49 D<913801FFF8021FEBFFC091B612F8010315FF010F16C0013F8290267FFC0114F89027FF E0003F7F4890C7000F7F48486E7FD807F86E148048486E14C048486E14E048486F13F001 FC17F8486C816D17FC6E80B56C16FE8380A219FFA283A36C5BA26C5B6C90C8FCD807FC5D EA01F0CA14FEA34D13FCA219F85F19F04D13E0A294B512C019804C14004C5B604C5B4C5B 604C13804C90C7FC4C5A4C5A4B13F05F4B13804B90C8FC4B5AED1FF84B5A4B5A4B48143F 4A5B4A48C8FC4A5A4A48157E4A5A4A5AEC7F8092C9FC02FE16FE495A495A4948ED01FCD9 0FC0150749B8FC5B5B90B9FC5A4818F85A5A5A5A5ABAFCA219F0A4405E78DD51>I<92B5 FC020F14F8023F14FF49B712C04916F0010FD9C01F13FC90271FFC00077FD93FE001017F 49486D8049C86C7F484883486C6F7F14C0486D826E806E82487FA4805CA36C5E4A5E6C5B 6C5B6C495E011FC85A90C95CA294B55A614C91C7FC604C5B4C5B4C5B4C5B047F13809226 0FFFFEC8FC020FB512F817E094C9FC17F817FF91C7003F13E0040713F8040113FE707F71 7F7113E085717FA2717F85A285831A80A31AC0EA03FCEA0FFF487F487F487FA2B57EA31A 80A34D14005C7E4A5E5F6C495E49C8485BD81FF85F000F5ED807FE92B55A6C6C6C491480 6C01F0010791C7FC6C9026FF803F5B6D90B65A011F16F0010716C001014BC8FCD9001F14 F0020149C9FC426079DD51>II<01C0EE01C0D801F8160F01FF167F02F0EC07FFDAFF8090B5FC92B712 8019006060606060606095C7FC17FC5F17E0178004FCC8FC16E09026FC3FFCC9FC91CBFC ADED3FFE0203B512F0020F14FE023F6E7E91B712E001FDD9E00F7F9027FFFE00037F02F8 01007F02E06EB4FC02806E138091C8FC496F13C04917E07113F0EA00F090C914F8A219FC 83A219FEA419FFA3EA03F0EA0FFC487E487E487FA2B57EA319FEA35C4D13FC6C90C8FC5B 4917F8EA3FF001804B13F06D17E0001F5E6C6C17C06D4B1380D807FC92B512006C6C4A5B 6C6C6C01075B6C01E0011F5BD97FFE90B55A6DB712C0010F93C7FC6D15FC010115F0D900 3F1480020301F0C8FC406078DD51>III65 DI<4DB5ED03C0057F02F014070407 B600FE140F047FDBFFC0131F4BB800F0133F030F05FC137F033F9127F8007FFE13FF92B6 C73807FF814A02F0020113C3020702C09138007FE74A91C9001FB5FC023F01FC16074A01 F08291B54882490280824991CB7E49498449498449498449865D49498490B5FC484A84A2 484A84A24891CD127FA25A4A1A3F5AA348491A1FA44899C7FCA25CA3B5FCB07EA380A27E A2F50FC0A26C7FA37E6E1A1F6C1D80A26C801D3F6C6E1A00A26C6E616D1BFE6D7F6F4E5A 7F6D6D4E5A6D6D4E5A6D6D4E5A6D6E171F6D02E04D5A6E6DEFFF806E01FC4C90C7FC020F 01FFEE07FE6E02C0ED1FF8020102F8ED7FF06E02FF913803FFE0033F02F8013F1380030F 91B648C8FC030117F86F6C16E004071680DC007F02F8C9FC050191CAFC626677E375>I< BB12E0F2FF801BF01BFE757E1CF0D800010280C7000780DF007F13FE080F6D7E08018074 80093F7F090F13FC757F757F877580767F8A88767F8A888AA2767FA28A881F80A37614C0 A41FE0A5881FF0B05214E0A51FC0A4521480A31F006466A2525BA2525BA2525B666499B5 5A515C5191C7FC515B515B515B097F5B50B512C008075C083F91C8FC0707B512FCBD12F0 1CC051C9FC1BF81B8008E0CAFC6C627AE17C>II<4DB5ED03C0057F02F014 070407B600FE140F047FDBFFC0131F4BB800F0133F030F05FC137F033F9127F8007FFE13 FF92B6C73807FF814A02F0020113C3020702C09138007FE74A91C9001FB5FC023F01FC16 074A01F08291B54882490280824991CB7E49498449498449498449865D49498490B5FC48 4A84A2484A84A24891CD127FA25A4A1A3F5AA348491A1FA44899C8FCA25CA3B5FCB07E07 1FB812F880A37EA296C70001ECC000A26C7FA37E807EA26C80A26C80A26C807F6D7F816D 7F7F6D7F6D6D5F6D14C06D6E5E6E7F6E01FC5E020F01FF5E6E02C0ED7FEF020102F8EDFF C76E02FF02071383033F02FC013F1301030F91B638FC007F03014D131F6F6C04E0130704 0704801301DC007F02F8CAFC050191CBFC6D6677E37F>71 D II75 D I78 D80 D82 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<903807FF80B6FCA6C6FC7F7FB3A90503 B61280A6DD003FEB8000DE0FFCC7FCF01FF04E5AF0FFC04D5B4D90C8FCEF07FC4D5AEF3F F04D5A4D5A4C90C9FC4C5AEE0FFC4C5A4C5AEE7FC04C7E03837F03877F158F039F7F03BF 7F92B5FC838403FC804B7E03F0804B6C7F4B6C7F1580707F707F707FA270807080717FA2 717F717F717FA2717F717F83867180727F95B57EB7D8E00FECFFF0A64C647BE355>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: Fq cmsy10 10.95 2 /Fq 2 16 df13 D15 D E %EndDVIPSBitmapFont %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 85 /Fs 85 125 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907 F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91C7 FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>11 DIII<001E130F397F803FC000FF137F01C013E0 A201E013F0A3007F133F391E600F3000001300A401E01370491360A3000114E04913C000 03130101001380481303000EEB070048130E0018130C0038131C003013181C1C7DBE2D> 34 D<4B6C130C4B6C131EA20307143EA24C133CA2030F147CA293C71278A24B14F8A203 1E5CA2033E1301A2033C5CA3037C1303A203785CA203F81307A24B5CA20201140F007FBA FCBB1280A26C1900C72707C0003EC8FC4B133CA3020F147CA292C71278A24A14F8A2021E 5CA3023E1301007FBAFCBB1280A26C1900C727F80007C0C8FC4A5CA20101140FA24A91C9 FCA301035CA24A131EA20107143EA24A133CA2010F147CA291C71278A34914F8A2011E5C A2013E1301A2013C5CA201186D5A41517BBE4C>I<14E0A4EB07FC90383FFF8090B512E0 3901F8E3F03903E0E0FCD807C0133CD80F807FD81F007F003E80003C1580007C140316C0 0078141F00F8143F157FA47EED3F806CEC0E0092C7FC127F138013C0EA3FF013FEEA1FFF 6C13FC6C13FF6C14C06C806C6C13F8011F7F130301007FECE7FF14E102E01380157F153F ED1FC0A2003E140F127FD8FF801307A5130000FC158000F0140F1270007815005D6C141E 153E6C5C6C5C3907C0E1F03903F8EFE0C6B51280D93FFEC7FCEB0FF8EB00E0A422497BC3 2D>I38 D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A4 13E013C0A312011380120313005A120E5A1218123812300B1C79BE19>I<1430147014E0 EB01C0EB03801307EB0F00131E133E133C5B13F85B12015B1203A2485AA2120F5BA2121F 90C7FCA25AA3123E127EA6127C12FCB2127C127EA6123E123FA37EA27F120FA27F1207A2 6C7EA212017F12007F13787F133E131E7FEB07801303EB01C0EB00E014701430145A77C3 23>I<12C07E12707E7E121E7E6C7E7F12036C7E7F12007F1378137CA27FA2133F7FA214 80130FA214C0A3130714E0A6130314F0B214E01307A614C0130FA31480A2131F1400A25B 133EA25BA2137813F85B12015B485A12075B48C7FC121E121C5A5A5A5A145A7BC323>I< EB03C0A2805CA600F0140F00FC143F00FE147F00FF14FF393FC3C3FC390FE187F03903F1 8FC03900FDBF00EB3FFCEB0FF0EB03C0EB0FF0EB3FFCEBFDBF3903F18FC0390FE187F039 3FC3C3FC39FF03C0FF00FE147F00FC143F00F0140F00001400A6805CA220277AC32D>I< 121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A12 0E5A1218123812300B1C798919>44 DI<121EEA7F80A2EAFFC0 A4EA7F80A2EA1E000A0A798919>III III<150E151E153EA2 157EA215FE1401A21403EC077E1406140E141CA214381470A214E0EB01C0A2EB0380EB07 00A2130E5BA25B5BA25B5B1201485A90C7FC5A120E120C121C5AA25A5AB8FCA3C8EAFE00 AC4A7E49B6FCA3283E7EBD2D>I<00061403D80780131F01F813FE90B5FC5D5D5D15C092 C7FC14FCEB3FE090C9FCACEB01FE90380FFF8090383E03E090387001F8496C7E49137E49 7F90C713800006141FC813C0A216E0150FA316F0A3120C127F7F12FFA416E090C7121F12 FC007015C012780038EC3F80123C6CEC7F00001F14FE6C6C485A6C6C485A3903F80FE0C6 B55A013F90C7FCEB07F8243F7CBC2D>II<1238123C123F90B612FCA316F85A16F016E00078C712010070EC03C0ED07801600 5D48141E151C153C5DC8127015F04A5A5D14034A5A92C7FC5C141EA25CA2147C147814F8 A213015C1303A31307A3130F5CA2131FA6133FAA6D5A0107C8FC26407BBD2D>III<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121EEA7F80A2 EAFFC0A4EA7F80A2EA1E000A2779A619>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7 FCB3121E127FEAFF80A213C0A4127F121E1200A412011380A3120313005A1206120E120C 121C5A1230A20A3979A619>I<007FB912E0BA12F0A26C18E0CDFCAE007FB912E0BA12F0 A26C18E03C167BA147>61 D<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A2913801C7FC 15C3A291380381FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D7EA34948 6D7E91B6FCA249819138800001A249C87EA24982010E157FA2011E82011C153FA2013C82 0138151FA2017882170F13FC00034C7ED80FFF4B7EB500F0010FB512F8A33D417DC044> 65 DIIIII III<011FB512FCA3D9000713006E5A1401B3B3A6123F EA7F80EAFFC0A44A5A1380D87F005B007C130700385C003C495A6C495A6C495A2603E07E C7FC3800FFF8EB3FC026407CBD2F>IIIIIIIIII<003FB91280A3903AF0007FE001018090393FC000 3F48C7ED1FC0007E1707127C00781703A300701701A548EF00E0A5C81600B3B14B7E4B7E 0107B612FEA33B3D7DBC42>IIII<007FB5D8C003B512E0A3C649C7 EBFC00D93FF8EC3FE06D48EC1F806D6C92C7FC171E6D6C141C6D6C143C5F6D6C14706D6D 13F04C5ADA7FC05B023F13036F485ADA1FF090C8FC020F5BEDF81E913807FC1C163C6E6C 5A913801FF7016F06E5B6F5AA26F7E6F7EA28282153FED3BFEED71FF15F103E07F913801 C07F0203804B6C7EEC07004A6D7E020E6D7E5C023C6D7E02386D7E14784A6D7E4A6D7F13 0149486E7E4A6E7E130749C86C7E496F7E497ED9FFC04A7E00076DEC7FFFB500FC0103B5 12FEA33F3E7EBD44>II91 D<486C13C0000313010100138048130300 0EEB070048130E0018130C0038131C003013180070133800601330A300E01370481360A4 00CFEB678039FFC07FE001E013F0A3007F133FA2003F131F01C013E0390F0007801C1C73 BE2D>II96 DII<49B4FC010F13E090383F00F8017C131E4848131F4848137F0007ECFF80485A 5B121FA24848EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC01C07F001F140316 806C6C13076C6C14000003140E6C6C131E6C6C137890383F01F090380FFFC0D901FEC7FC 222A7DA828>IIII<167C903903F801FF903A1FFF078F8090397E 0FDE1F9038F803F83803F001A23B07E000FC0600000F6EC7FC49137E001F147FA8000F14 7E6D13FE00075C6C6C485AA23901F803E03903FE0FC026071FFFC8FCEB03F80006CAFC12 0EA3120FA27F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC0001FFC48C7EA01FE00 3E140048157E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C495AD803F0EB0FC0 D800FE017FC7FC90383FFFFC010313C0293D7EA82D>III<1478 EB01FEA2EB03FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F147FB3B3A5123E127F 38FF807E14FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF803801FC00185185BD1C >III<2701F801FE14FF00FF 902707FFC00313E0913B1E07E00F03F0913B7803F03C01F80007903BE001F87000FC2603 F9C06D487F000101805C01FBD900FF147F91C75B13FF4992C7FCA2495CB3A6486C496CEC FF80B5D8F87FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807FFC091381E07E0 91387803F000079038E001F82603F9C07F0001138001FB6D7E91C7FC13FF5BA25BB3A648 6C497EB5D8F87F13FCA32E287DA733>I<14FF010713E090381F81F890387E007E01F813 1F4848EB0F804848EB07C04848EB03E0000F15F04848EB01F8A2003F15FCA248C812FEA4 4815FFA96C15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6C EB1F80D8007EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D>I<3901FC03FC 00FF90381FFF8091387C0FE09039FDE003F03A07FFC001FC6C496C7E6C90C7127F49EC3F 805BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F6E13 FE9138C001F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512F8A3 2D3A7EA733>I<02FF131C0107EBC03C90381F80F090397F00387C01FC131CD803F8130E 4848EB0FFC150748481303121F485A1501485AA448C7FCAA6C7EA36C7EA2001F14036C7E 15076C6C130F6C7E6C6C133DD8007E137990383F81F190380FFFC1903801FE0190C7FCAD 4B7E92B512F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1FE3807F9C10003 1381EA01FB1401EC00FC01FF1330491300A35BB3A5487EB512FEA31F287EA724>I<9038 3FC0603901FFF8E03807C03F381F000F003E1307003C1303127C0078130112F81400A27E 7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F13E0010313F0EB 001FEC0FF800E01303A214017E1400A27E15F07E14016C14E06CEB03C0903880078039F3 E01F0038E0FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FCA2120112031207 001FB512C0B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03013F138090381F 8700EB07FEEB01F81B397EB723>IIIIII< 001FB61280A2EBE0000180140049485A001E495A121C4A5A003C495A141F00385C4A5A14 7F5D4AC7FCC6485AA2495A495A130F5C495A90393FC00380A2EB7F80EBFF005A5B484813 071207491400485A48485BA248485B4848137F00FF495A90B6FCA221277EA628>I124 D E %EndDVIPSBitmapFont %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 D<137F3801FFC0000713F0487F487F487F487FA2B61280A96C1400 A26C5B6C5B6C5B6C5B000113C06C6CC7FC1919729836>46 D48 D<923801FFFE033FEBFFF84AB7FC020F16E0023F16F84A16FE49B97E49DA003F80010F01 F0010714F04901800101804948C880D97FF86F7F02E081496C834801FC6F148014FF486E 6E14C08181481AE081A96C5C1BC06C4A5C6C5C6D90C815806D5AD90FF85D90CA15006260 6295B55A4D5C624D5C4D5C4D91C7FC4D13FC4D5B4CB512E0047F1480037FB548C8FC92B6 12F818C018F8F0FF806F15F092C7003F13FC050713FF050114C071807213F8727F727F86 7214801BC07214E01BF0A27214F81BFCA37214FEA31BFFEBFF80000313E0487F001F13FC 487FA2487FA2B67EA31BFEA3601BFCA292C8FC6C1AF84A5D4A18F06C494B14E05C6C01C0 4B14C06C90C915804E14006C6D4B5B6C01F092B55A6C01FC4A5C27007FFFC001075C6D01 FE013F14C0010F90B85A6D4DC7FC010117F8D9003F16E0020F93C8FC020015F0030749C9 FC507378F061>51 D<96267FFFE01670063FB6ED01F80503B700F01403053F04FC14074C B96C130F040706E0131F043F72133F93BA00FC137F0303DC00076D13FF030F03C0903900 3FFF814B02FCC8000713C3037F02E0030113F792B600806F6CB5FC02034ACA121F4A02F8 834A02E0834A4A1701027F4A8391B548CC7E494A85495C4C854988494A85494A85495C8A 4991CDFC90B54886A2484A1B7FA2481E3F5D481E1F5D5A1F0FA2485CA3481E075DA2795A 489BC9FCA45DA2B6FCB27EA26F0403BA12C0A47EA3816C96C8000302F8C7FCA36C80A36C 80A27E817E817E817F6D80827F6D806D806D80826D6E606D806E80021F6E5F6E02F05F6E 806E02FE5F0200DAFFC05E6F02F04BB6FC031F02FE030713CF6FDAFFE0021F1387030392 26FF8003B51201030093B6EAFC00043F4E133F040706E0131F04014E1307DC003F4CC712 01050304F8EC0070DD003F038092C8FCDE007F01F0CCFC827A75F798>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 %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%BeginPaperSize: a4 a4 %%EndPaperSize %%EndSetup %%Page: 1 1 1 0 bop 150 1318 a Fu(User's)65 b(Guide)h(to)e Ft(gperf)f Fu(3.0)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)2792 1627 y(Edition)e(3.0,)k(7)f (Ma)m(y)g(2003)150 4958 y Fr(Douglas)46 b(C.)f(Sc)l(hmidt)150 5091 y(Bruno)f(Haible)p 150 5141 3600 17 v eop %%Page: 2 2 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-2003)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 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 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 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 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 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 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 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 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)45 b(GNU)h Fn(gperf)d Fs(p)s(erfect)j(hash)e(function)g (generator)j(utilit)m(y)c(w)m(as)j(written)e(in)g(GNU)i(C)p Fn(++)330 643 y Fs(b)m(y)e(Douglas)h(C.)g(Sc)m(hmidt.)82 b(The)44 b(general)h(idea)f(for)g(the)h(p)s(erfect)g(hash)e(function)h (generator)330 752 y(w)m(as)34 b(inspired)c(b)m(y)j(Keith)f(Bostic's)j (algorithm)d(written)g(in)g(C,)h(and)g(distributed)d(to)k(net.sources) 330 862 y(around)42 b(1984.)79 b(The)42 b(curren)m(t)g(program)h(is)f (a)h(hea)m(vily)f(mo)s(di\014ed,)h(enhanced,)j(and)c(extended)330 971 y(implemen)m(tation)36 b(of)h(Keith's)f(basic)h(idea,)h(created)g (at)g(the)f(Univ)m(ersit)m(y)f(of)i(California,)e(Irvine.)330 1081 y(Bugs,)31 b(patc)m(hes,)g(and)f(suggestions)g(should)f(b)s(e)g (rep)s(orted)h(to)h Fn()p Fs(.)225 1215 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 1325 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 1460 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 1569 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 1704 y Fq(\017)60 b Fs(Bruno)26 b(Haible)g (enhanced)h(and)f(optimized)g(the)h(searc)m(h)h(algorithm.)39 b(He)27 b(also)g(rewrote)h(the)f(input)330 1813 y(routines)i(and)h(the) h(output)f(routines)f(for)h(b)s(etter)g(reliabilit)m(y)-8 b(,)28 b(and)i(added)g(a)h(testsuite.)p eop %%Page: 9 11 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)d Fo(W)47 b Fs(on)m(to)36 b(the)f(range)g(0..)p Fo(k)p Fs(,)j(where)c Fo(k)40 b Fn(>)p Fs(=)35 b Fo(n-1)p Fs(.)54 b(If)35 b Fo(k)40 b Fs(=)35 b Fo(n-1)42 b Fs(then)35 b Fo(F)42 b Fs(is)34 b(a)h Fl(minimal)46 b Fs(p)s(erfect)35 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(,)24 b(GNU)f(Ja)m(v)-5 b(a,)26 b(GNU)d(P)m(ascal,)i(GNU)f(Mo)s(dula)e(3,)j(and)d(GNU)h(inden)m (t.)37 b(Complete)23 b(C)p Fn(++)f Fs(source)h(co)s(de)150 1544 y(for)42 b Fn(gperf)f Fs(is)g(a)m(v)-5 b(ailable)41 b(from)h Fn(http://ftp.gnu.org/pub/g)o(nu/g)o(perf)o(/)p Fs(.)70 b(A)42 b(pap)s(er)f(describing)150 1654 y Fn(gperf)p Fs('s)d(design)h(and)g(implemen)m(tation)g(in)f(greater)j(detail)e(is)g (a)m(v)-5 b(ailable)39 b(in)g(the)h(Second)f(USENIX)150 1763 y(C)p Fn(++)29 b Fs(Conference)g(pro)s(ceedings)g(or)h(from)f Fn(http://www.cs.wustl.edu)o(/~sc)o(hmid)o(t/r)o(esum)o(e.ht)o(ml)p Fs(.)p eop %%Page: 10 12 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)20 b(practice,)k Fn(gperf)19 b Fs(generates)k(a)e Fl(static)27 b Fs(arra)m(y)22 b(con)m(taining)e(searc)m(h)i(set)f(k)m (eyw)m(ords)h(and)e(an)m(y)h(asso)s(ciated)150 862 y(attributes)36 b(sp)s(eci\014ed)f(b)m(y)i(the)f(user.)59 b(Th)m(us,)37 b(there)g(is)f(essen)m(tially)f(no)i(execution-time)g(cost)g(for)g(the) 150 971 y(insertions.)h(It)27 b(is)f(a)h(useful)f(data)h(structure)g (for)g(represen)m(ting)f Fl(static)k(se)-5 b(ar)g(ch)32 b(sets)p Fs(.)40 b(Static)27 b(searc)m(h)h(sets)150 1081 y(o)s(ccur)c(frequen)m(tly)g(in)f(soft)m(w)m(are)j(system)e (applications.)37 b(T)m(ypical)23 b(static)i(searc)m(h)g(sets)g (include)d(compiler)150 1191 y(reserv)m(ed)42 b(w)m(ords,)j(assem)m (bler)d(instruction)e(op)s(co)s(des,)45 b(and)c(built-in)e(shell)i(in)m (terpreter)g(commands.)150 1300 y(Searc)m(h)h(set)g(mem)m(b)s(ers,)h (called)e Fo(k)m(eyw)m(ords)p Fs(,)k(are)c(inserted)g(in)m(to)g(the)h (structure)f(only)f(once,)45 b(usually)150 1410 y(during)28 b(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)28 b(for)g(serious)f(programming)g(pro)5 b(jects.)40 b(Output)27 b(from)h Fn(gperf)e Fs(is)h(curren)m(tly)h (used)f(in)g(sev)m(eral)h(pro-)150 4543 y(duction)d(and)f(researc)m(h)j (compilers,)e(including)d(GNU)k(C,)g(GNU)g(C)p Fn(++)p Fs(,)g(GNU)g(Ja)m(v)-5 b(a,)28 b(GNU)e(P)m(ascal,)i(and)150 4653 y(GNU)38 b(Mo)s(dula)e(3.)63 b(The)36 b(latter)i(t)m(w)m(o)h (compilers)d(are)h(not)h(y)m(et)h(part)e(of)g(the)h(o\016cial)f(GNU)h (distribu-)150 4762 y(tion.)50 b(Eac)m(h)34 b(compiler)e(utilizes)g Fn(gperf)g Fs(to)i(automatically)f(generate)i(static)f(searc)m(h)g (structures)f(that)150 4872 y(e\016cien)m(tly)d(iden)m(tify)f(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 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 539 y Fs(The)29 b(p)s(erfect)h(hash)g(function)f (generator)i Fn(gperf)e Fs(reads)h(a)h(set)g(of)f(\\k)m(eyw)m(ords")i (from)d(an)i(input)d(\014le)150 648 y(\(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 758 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 867 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 977 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 1086 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 1196 y(mo)s(dify)29 b(the)h(input)f(and)g(output)h(format)h(to)g Fn(gperf)p Fs(.)275 1332 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 1442 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 1552 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 1661 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 1771 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 1880 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 1990 y(results)29 b(dep)s(end)g(on)h(y)m(our)g(C)g(compiler,)g(of)g(course.)275 2126 y(In)44 b(general,)49 b Fn(gperf)44 b Fs(assigns)g(v)-5 b(alues)45 b(to)h(the)f(b)m(ytes)h(it)f(is)f(using)g(for)h(hashing)e (un)m(til)h(some)h(set)150 2236 y(of)d(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 2345 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 2455 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 2717 y Fr(3.1)68 b(Input)44 b(F)-11 b(ormat)46 b(to)f Fk(gperf)275 2911 y Fs(Y)-8 b(ou)38 b(can)g(con)m(trol)h(the)f(input)e(\014le)h(format)h(b)m(y)g(v)-5 b(arying)37 b(certain)g(command-line)g(argumen)m(ts,)j(in)150 3021 y(particular)d(the)i(`)p Fn(-t)p Fs(')g(option.)65 b(The)38 b(input's)f(app)s(earance)i(is)f(similar)e(to)j(GNU)h (utilities)c Fn(flex)i Fs(and)150 3131 y Fn(bison)29 b 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 3261 y Fn(declarations)390 3365 y(\045\045)390 3469 y(keywords)390 3572 y(\045\045)390 3676 y(functions)275 3806 y Fl(Unlike)41 b Fn(flex)35 b Fs(or)g Fn(bison)p Fs(,)h(the)g(declarations)e(section)i (and)f(the)h(functions)e(section)i(are)g(optional.)150 3915 y(The)30 b(follo)m(wing)f(sections)h(describ)s(e)f(the)h(input)f (format)i(for)f(eac)m(h)h(section.)275 4051 y(It)h(is)f(p)s(ossible)f (to)j(omit)f(the)h(declaration)f(section)g(en)m(tirely)-8 b(,)33 b(if)e(the)i(`)p Fn(-t)p Fs(')f(option)g(is)f(not)i(giv)m(en.)47 b(In)150 4161 y(this)29 b(case)j(the)e(input)f(\014le)g(b)s(egins)g (directly)g(with)g(the)i(\014rst)e(k)m(eyw)m(ord)i(line,)e(e.g.:)390 4292 y Fn(january)390 4395 y(february)390 4499 y(march)390 4603 y(april)390 4707 y(...)150 4926 y Fj(3.1.1)63 b(Declarations)275 5121 y Fs(The)33 b(k)m(eyw)m(ord)i(input)e(\014le)g(optionally)g(con)m (tains)i(a)g(section)f(for)g(including)d(arbitrary)j(C)g(declara-)150 5230 y(tions)c(and)f(de\014nitions,)f Fn(gperf)h Fs(declarations)h (that)h(act)g(lik)m(e)f(command-line)f(options,)h(as)g(w)m(ell)g(as)g (for)150 5340 y(pro)m(viding)e(a)j(user-supplied)c Fn(struct)p Fs(.)p eop %%Page: 12 14 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)150 299 y Fj(3.1.1.1)63 b(User-supplied)43 b Fi(struct)275 487 y Fs(If)24 b(the)h(`)p Fn(-t)p Fs(')f(option)g(\(or,)j(equiv)-5 b(alen)m(tly)d(,)25 b(the)g(`)p Fn(\045struct-type)p Fs(')d(declaration\))i Fl(is)32 b Fs(enabled,)25 b(y)m(ou)g Fl(must)150 597 y Fs(pro)m(vide)36 b(a)g(C)h Fn(struct)d Fs(as)j(the)g(last)f(comp)s(onen)m(t)h(in)e(the)i(declaration)f (section)g(from)g(the)h(input)e(\014le.)150 706 y(The)26 b(\014rst)f(\014eld)g(in)g(this)g(struct)h(m)m(ust)g(b)s(e)g(of)g(t)m (yp)s(e)g Fn(char)j(*)d Fs(or)g Fn(const)j(char)h(*)25 b Fs(if)g(the)i(`)p Fn(-P)p Fs(')f(option)f(is)h(not)150 816 y(giv)m(en,)k(or)h(of)f(t)m(yp)s(e)g Fn(int)g Fs(if)f(the)h(option) g(`)p Fn(-P)p Fs(')g(\(or,)h(equiv)-5 b(alen)m(tly)d(,)29 b(the)i(`)p Fn(\045pic)p Fs(')e(declaration\))h(is)g(enabled.)150 926 y(This)k(\014rst)g(\014eld)g(m)m(ust)i(b)s(e)e(called)h(`)p Fn(name)p Fs(',)h(although)f(it)g(is)g(p)s(ossible)e(to)j(mo)s(dify)d (its)i(name)h(with)e(the)150 1035 y(`)p Fn(-K)p Fs(')c(option)g(\(or,)h (equiv)-5 b(alen)m(tly)d(,)30 b(the)g(`)p Fn(\045define)f(slot-name)p Fs(')f(declaration\))i(describ)s(ed)f(b)s(elo)m(w.)275 1165 y(Here)h(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:)390 1290 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 1393 y(\045\045)390 1497 y(january,)141 b(1,)47 b(31,)g(31)390 1601 y(february,)93 b(2,)47 b(28,)g(29)390 1705 y(march,)237 b(3,)47 b(31,)g(31)390 1809 y(april,)237 b(4,)47 b(30,)g(30)390 1912 y(may,)333 b(5,)47 b(31,)g(31)390 2016 y(june,)285 b(6,)47 b(30,)g(30)390 2120 y(july,)285 b(7,)47 b(31,)g(31)390 2224 y(august,)189 b(8,)47 b(31,)g(31)390 2327 y(september,)e(9,)i(30,)g(30)390 2431 y(october,)93 b(10,)47 b(31,)g(31)390 2535 y(november,)e(11,)i (30,)g(30)390 2639 y(december,)e(12,)i(31,)g(31)275 2762 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 2871 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 2981 y(utilit)m(y)d Fn(lex)p Fs(.)150 3192 y Fj(3.1.1.2)63 b(Gp)s(erf)42 b(Declarations)275 3381 y Fs(The)31 b(declaration)h(section)h(can)f (con)m(tain)h Fn(gperf)d Fs(declarations.)46 b(They)32 b(in\015uence)f(the)h(w)m(a)m(y)h Fn(gperf)150 3490 y Fs(w)m(orks,)43 b(lik)m(e)d(command)h(line)e(options)h(do.)72 b(In)40 b(fact,)k(ev)m(ery)e(suc)m(h)e(declaration)g(is)g(equiv)-5 b(alen)m(t)40 b(to)i(a)150 3600 y(command)30 b(line)f(option.)40 b(There)30 b(are)h(three)f(forms)g(of)h(declarations:)199 3730 y(1.)61 b(Declarations)31 b(without)e(argumen)m(t,)i(lik)m(e)f(`)p Fn(\045compare-lengths)p Fs('.)199 3860 y(2.)61 b(Declarations)31 b(with)e(an)h(argumen)m(t,)h(lik)m(e)f(`)p Fn(\045switch=)p Fo(coun)m(t)r Fs('.)199 3990 y(3.)61 b(Declarations)112 b(of)g(names)g(of)g(en)m(tities)g(in)e(the)i(output)g(\014le,)131 b(lik)m(e)112 b(`)p Fn(\045define)330 4100 y(lookup-function-name)25 b Fo(name)5 b Fs('.)275 4251 y(When)35 b(a)h(declaration)f(is)g(giv)m (en)g(b)s(oth)g(in)g(the)g(input)f(\014le)h(and)g(as)h(a)g(command)f (line)f(option,)j(the)150 4360 y(command-line)29 b(option's)h(v)-5 b(alue)30 b(prev)-5 b(ails.)275 4490 y(The)29 b(follo)m(wing)g Fn(gperf)g Fs(declarations)h(are)h(a)m(v)-5 b(ailable.)150 4641 y(`)p Fn(\045delimiters=)p Fo(delimiter-lis)o(t)r Fs(')630 4751 y(Allo)m(ws)28 b(y)m(ou)h(to)g(pro)m(vide)f(a)h(string)f (con)m(taining)g(delimiters)f(used)g(to)j(separate)g(k)m(eyw)m(ords)630 4860 y(from)k(their)g(attributes.)53 b(The)34 b(default)f(is)h Fn(")p Fs(,)p Fn(")p Fs(.)53 b(This)33 b(option)h(is)f(essen)m(tial)i (if)e(y)m(ou)i(w)m(an)m(t)630 4970 y(to)c(use)f(k)m(eyw)m(ords)h(that)g (ha)m(v)m(e)g(em)m(b)s(edded)f(commas)h(or)f(newlines.)150 5121 y(`)p Fn(\045struct-type)p Fs(')630 5230 y(Allo)m(ws)g(y)m(ou)g (to)i(include)c(a)j Fn(struct)d Fs(t)m(yp)s(e)j(declaration)f(for)g (generated)i(co)s(de;)f(see)g(ab)s(o)m(v)m(e)630 5340 y(for)f(an)g(example.)p eop %%Page: 13 15 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(`)p Fn(\045ignore-case)p Fs(')630 408 y(Consider)42 b(upp)s(er)g(and)i(lo)m(w)m(er)g(case)h(ASCI)s(I)e(c)m(haracters)i(as)f (equiv)-5 b(alen)m(t.)81 b(The)44 b(string)630 518 y(comparison)27 b(will)f(use)i(a)h(case)g(insigni\014can)m(t)d(c)m(haracter)k (comparison.)39 b(Note)29 b(that)g(lo)s(cale)630 628 y(dep)s(enden)m(t)g(case)j(mappings)c(are)j(ignored.)150 783 y(`)p Fn(\045language=)p Fo(language-name)5 b Fs(')630 892 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 1002 y(gumen)m(t.)41 b(Languages)31 b(handled)e(are)i(curren)m(tly:)630 1157 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 1267 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 1377 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 1532 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 1641 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 1751 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 1906 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 2016 y(C)p Fn(++)29 b Fs(compilers.)630 2171 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 2326 y(The)g(default)f(is)h(C.)150 2482 y(`)p Fn(\045define)f(slot-name)e Fo(name)5 b Fs(')630 2591 y(This)64 b(declaration)i(is)f(only)g(useful)f(when)h(option)g(`)p Fn(-t)p Fs(')h(\(or,)76 b(equiv)-5 b(alen)m(tly)d(,)74 b(the)630 2701 y(`)p Fn(\045struct-type)p Fs(')27 b(declaration\))j (has)g(b)s(een)g(giv)m(en.)40 b(By)31 b(default,)e(the)h(program)g (assumes)630 2810 y(the)48 b(structure)g(comp)s(onen)m(t)h(iden)m (ti\014er)d(for)i(the)g(k)m(eyw)m(ord)h(is)e(`)p Fn(name)p Fs('.)94 b(This)46 b(option)630 2920 y(allo)m(ws)e(an)g(arbitrary)f(c)m (hoice)i(of)g(iden)m(ti\014er)d(for)j(this)e(comp)s(onen)m(t,)48 b(although)c(it)g(still)630 3029 y(m)m(ust)30 b(o)s(ccur)g(as)h(the)g (\014rst)e(\014eld)g(in)g(y)m(our)i(supplied)c Fn(struct)p Fs(.)150 3185 y(`)p Fn(\045define)i(initializer-suffix)c Fo(initializers)t Fs(')630 3294 y(This)64 b(declaration)i(is)f(only)g (useful)f(when)h(option)g(`)p Fn(-t)p Fs(')h(\(or,)76 b(equiv)-5 b(alen)m(tly)d(,)74 b(the)630 3404 y(`)p Fn(\045struct-type) p Fs(')33 b(declaration\))j(has)f(b)s(een)g(giv)m(en.)57 b(It)36 b(p)s(ermits)e(to)j(sp)s(ecify)d(initializers)630 3513 y(for)44 b(the)g(structure)g(mem)m(b)s(ers)f(follo)m(wing)f Fo(slot-name)50 b Fs(in)42 b(empt)m(y)j(hash)e(table)h(en)m(tries.)630 3623 y(The)e(list)e(of)j(initializers)38 b(should)i(start)j(with)e(a)h (comma.)77 b(By)42 b(default,)j(the)d(emitted)630 3733 y(co)s(de)31 b(will)c(zero-initialize)i(structure)h(mem)m(b)s(ers)g (follo)m(wing)f Fo(slot-name)p Fs(.)150 3888 y(`)p Fn(\045define)g (hash-function-name)c Fo(name)5 b Fs(')630 3998 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 4107 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 4262 y(`)p Fn(\045define)e(lookup-function-name)24 b Fo(name)5 b Fs(')630 4372 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 4482 y(name)28 b(is)f(`)p Fn(in_word_set)p Fs('.)37 b(This)26 b(option)h(p)s(ermits)f(m)m(ultiple)g(generated)i (hash)f(functions)630 4591 y(to)k(b)s(e)f(used)f(in)g(the)i(same)g (application.)150 4746 y(`)p Fn(\045define)e(class-name)e Fo(name)5 b Fs(')630 4856 y(This)65 b(option)i(is)f(only)h(useful)e (when)i(option)f(`)p Fn(-L)30 b(C++)p Fs(')67 b(\(or,)77 b(equiv)-5 b(alen)m(tly)d(,)76 b(the)630 4966 y(`)p Fn (\045language=C++)p Fs(')43 b(declaration\))i(has)h(b)s(een)f(giv)m (en.)87 b(It)46 b(allo)m(ws)f(y)m(ou)h(to)g(sp)s(ecify)f(the)630 5075 y(name)30 b(of)h(generated)g(C)p Fn(++)f Fs(class.)40 b(Default)31 b(name)f(is)g Fn(Perfect_Hash)p Fs(.)150 5230 y(`)p Fn(\0457bit)p Fs(')190 b(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 5340 y(generated)e(hash)e(function)f(and)i(the)g (generated)g(lo)s(okup)f(function)f(will)f(solely)i(consist)p eop %%Page: 14 16 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)630 299 y(of)33 b(7-bit)g(ASCI)s(I)f(c)m(haracters)j(\(b)m(ytes)f(in)e(the) h(range)h(0..127\).)51 b(\(Note)35 b(that)f(the)g(ANSI)e(C)630 408 y(functions)e Fn(isalnum)g Fs(and)i Fn(isgraph)e Fs(do)i Fl(not)41 b Fs(guaran)m(tee)33 b(that)g(a)f(b)m(yte)h(is)e(in)f (this)h(range.)630 518 y(Only)e(an)h(explicit)f(test)i(lik)m(e)f(`)p Fn(c)g(>=)g('A')f(&&)h(c)g(<=)g('Z')p Fs(')f(guaran)m(tees)j(this.\)) 150 682 y(`)p Fn(\045compare-lengths)p Fs(')630 792 y(Compare)40 b(k)m(eyw)m(ord)g(lengths)f(b)s(efore)g(trying)g(a)i(string)d (comparison.)69 b(This)38 b(option)h(is)630 902 y(mandatory)32 b(for)h(binary)d(comparisons)i(\(see)h(Section)g(3.3)g([Binary)f (Strings],)g(page)h(18\).)630 1011 y(It)g(also)g(migh)m(t)g(cut)g(do)m (wn)f(on)h(the)g(n)m(um)m(b)s(er)f(of)h(string)f(comparisons)g(made)h (during)e(the)630 1121 y(lo)s(okup,)i(since)g(k)m(eyw)m(ords)g(with)f (di\013eren)m(t)h(lengths)g(are)g(nev)m(er)h(compared)f(via)g Fn(strcmp)p Fs(.)630 1230 y(Ho)m(w)m(ev)m(er,)e(using)c(`)p Fn(\045compare-lengths)p Fs(')d(migh)m(t)k(greatly)h(increase)f(the)h (size)f(of)h(the)f(gen-)630 1340 y(erated)j(C)f(co)s(de)h(if)e(the)i (lo)s(okup)e(table)i(range)f(is)g(large)g(\(whic)m(h)g(implies)e(that)j (the)f(switc)m(h)630 1450 y(option)23 b(`)p Fn(-S)p Fs(')h(or)g(`)p Fn(\045switch)p Fs(')f(is)g(not)h(enabled\),)h(since)e(the)h(length)g (table)f(con)m(tains)i(as)f(man)m(y)630 1559 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.)150 1724 y(`)p Fn(\045compare-strncmp)p Fs(')630 1833 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 1943 y(The)30 b(default)f(action)i (is)f(to)h(use)f Fn(strcmp)p Fs(.)150 2107 y(`)p Fn (\045readonly-tables)p Fs(')630 2217 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 2326 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 2436 y(in)e(readonly)h(memory)-8 b(.)150 2600 y(`)p Fn(\045enum)p Fs(')190 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 2710 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 2819 y(the)31 b(same)f(\014le.)40 b(Thanks)29 b(to)j(James)e(Clark)f Fn()p Fs(.)150 2984 y(`)p Fn(\045includes)p Fs(')630 3093 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 3203 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 3313 y(to)31 b(allo)m(w)f(compilation)f(of)h(the)h(co)s(de.)150 3477 y(`)p Fn(\045global-table)p Fs(')630 3587 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 3696 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 3861 y(`)p Fn(\045pic)p Fs(')238 b(Optimize)40 b(the)h(generated)h(table)f (for)g(inclusion)d(in)i(shared)g(libraries.)70 b(This)39 b(reduces)630 3970 y(the)c(startup)g(time)g(of)g(programs)g(using)f(a)i (shared)e(library)f(con)m(taining)i(the)g(generated)630 4080 y(co)s(de.)j(If)21 b(the)h(`)p Fn(\045struct-type)p Fs(')d(declaration)j(\(or,)i(equiv)-5 b(alen)m(tly)d(,)23 b(the)f(option)f(`)p Fn(-t)p Fs('\))h(is)f(also)630 4189 y(giv)m(en,)31 b(the)g(\014rst)e(\014eld)h(of)g(the)h(user-de\014ned)e (struct)i(m)m(ust)f(b)s(e)g(of)h(t)m(yp)s(e)g(`)p Fn(int)p Fs(',)f(not)h(`)p Fn(char)630 4299 y(*)p Fs(',)h(b)s(ecause)f(it)h (will)c(con)m(tain)k(o\013sets)h(in)m(to)e(the)h(string)e(p)s(o)s(ol)h (instead)f(of)i(actual)g(strings.)630 4408 y(T)-8 b(o)33 b(con)m(v)m(ert)h(suc)m(h)f(an)f(o\013set)i(to)f(a)g(string,)g(y)m(ou)g (can)g(use)f(the)h(expression)e(`)p Fn(stringpool)630 4518 y(+)f Fo(o)5 b Fs(',)34 b(where)f Fo(o)38 b Fs(is)32 b(the)h(o\013set.)50 b(The)32 b(string)g(p)s(o)s(ol)g(name)h(can)g(b)s (e)g(c)m(hanged)g(through)g(the)630 4628 y(`)p Fn(\045define)c (string-pool-name)p Fs(')d(declaration.)150 4792 y(`)p Fn(\045define)j(string-pool-name)d Fo(name)5 b Fs(')630 4902 y(Allo)m(ws)40 b(y)m(ou)h(to)h(sp)s(ecify)e(the)h(name)g(of)g(the) g(generated)h(string)e(p)s(o)s(ol)g(created)i(b)m(y)f(the)630 5011 y(declaration)46 b(`)p Fn(\045pic)p Fs(')g(\(or,)51 b(equiv)-5 b(alen)m(tly)d(,)50 b(the)d(option)e(`)p Fn(-P)p Fs('\).)90 b(The)46 b(default)f(name)i(is)630 5121 y(`)p Fn(stringpool)p Fs('.)38 b(This)28 b(declaration)h(p)s(ermits)f(the)i (use)g(of)g(t)m(w)m(o)h(hash)e(tables)g(in)g(the)h(same)630 5230 y(\014le,)38 b(with)d(`)p Fn(\045pic)p Fs(')h(and)g(ev)m(en)h (when)f(the)h(`)p Fn(\045global-table)p Fs(')c(declaration)j(\(or,)j (equiv)-5 b(a-)630 5340 y(len)m(tly)d(,)30 b(the)h(option)f(`)p Fn(-G)p Fs('\))g(is)g(giv)m(en.)p eop %%Page: 15 17 15 16 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(15)150 299 y(`)p Fn(\045null-strings)p Fs(')630 408 y(Use)39 b(NULL)g(strings)e(instead)i(of)f(empt)m(y)i(strings)d(for)i(empt)m(y)g (k)m(eyw)m(ord)g(table)g(en)m(tries.)630 518 y(This)e(reduces)h(the)h (startup)g(time)f(of)h(programs)g(using)e(a)i(shared)f(library)e(con)m (taining)630 628 y(the)29 b(generated)g(co)s(de)g(\(but)f(not)g(as)h(m) m(uc)m(h)g(as)f(the)h(declaration)f(`)p Fn(\045pic)p Fs('\),)h(at)g(the)f(exp)s(ense)630 737 y(of)j(one)f(more)h (test-and-branc)m(h)g(instruction)d(at)j(run)e(time.)150 913 y(`)p Fn(\045define)g(word-array-name)d Fo(name)5 b Fs(')630 1022 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 1132 y(table.)105 b(Default)52 b(name)f(is)g(`)p Fn(wordlist)p Fs('.)103 b(This)50 b(option)h(p)s(ermits)f(the)i(use)g(of)g(t)m(w)m(o) 630 1241 y(hash)37 b(tables)g(in)g(the)h(same)g(\014le,)h(ev)m(en)f (when)f(the)h(option)f(`)p Fn(-G)p Fs(')h(\(or,)i(equiv)-5 b(alen)m(tly)d(,)39 b(the)630 1351 y(`)p Fn(\045global-table)p Fs(')27 b(declaration\))k(is)e(giv)m(en.)150 1526 y(`)p Fn(\045switch=)p Fo(coun)m(t)r Fs(')630 1636 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 1746 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 1855 y(requiremen)m(ts)42 b(for)i(some)f(input)f(\014les.)79 b(The)43 b(argumen)m(t)h(to)g(this)e(option)h(determines)630 1965 y(ho)m(w)33 b(man)m(y)f Fn(switch)f Fs(statemen)m(ts)k(are)e (generated.)49 b(A)32 b(v)-5 b(alue)33 b(of)f(1)i(generates)g(1)f Fn(switch)630 2074 y Fs(con)m(taining)23 b(all)e(the)j(elemen)m(ts,)h (a)e(v)-5 b(alue)22 b(of)i(2)f(generates)h(2)g(tables)e(with)g(1/2)i (the)g(elemen)m(ts)630 2184 y(in)37 b(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 2294 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 2403 y(Keith)j(Bostic's)h(original)d(C)i(program.)150 2579 y(`)p Fn(\045omit-struct-type)p Fs(')630 2688 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 2798 y(if)j(the)i(t)m(yp)s(e)f(is)g(already)g(de\014ned)f(elsewhere.)150 3054 y Fj(3.1.1.3)63 b(C)41 b(Co)s(de)g(Inclusion)275 3262 y Fs(Using)25 b(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 3372 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 3482 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 3591 y(fragmen)m(t)31 b(based)f(on)g(the)h(previous)e(example)h(that)h(illustrates)d(this)i (feature:)390 3736 y Fn(\045{)390 3840 y(#include)46 b()390 3944 y(/*)h(This)g(section)f(of)h(code)f(is)i (inserted)d(directly)h(into)g(the)h(output.)f(*/)390 4047 y(int)h(return_month_days)c(\(struct)j(months)g(*months,)f(int)i (is_leap_year\);)390 4151 y(\045})390 4255 y(struct)f(months)g({)i (char)e(*name;)g(int)h(number;)f(int)h(days;)f(int)h(leap_days;)e(};) 390 4359 y(\045\045)390 4462 y(january,)141 b(1,)47 b(31,)g(31)390 4566 y(february,)93 b(2,)47 b(28,)g(29)390 4670 y(march,)237 b(3,)47 b(31,)g(31)390 4774 y(...)150 5022 y Fj(3.1.2)63 b(F)-10 b(ormat)40 b(for)h(Keyw)m(ord)f(En)m(tries)275 5230 y Fs(The)33 b(second)i(input)d(\014le)i(format)h(section)f(con)m (tains)h(lines)d(of)j(k)m(eyw)m(ords)g(and)e(an)m(y)i(asso)s(ciated)g (at-)150 5340 y(tributes)i(y)m(ou)i(migh)m(t)f(supply)-8 b(.)63 b(A)39 b(line)d(b)s(eginning)g(with)h(`)p Fn(#)p Fs(')i(in)e(the)i(\014rst)f(column)f(is)g(considered)h(a)p eop %%Page: 16 18 16 17 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(16)150 299 y(commen)m(t.)53 b(Ev)m(erything)33 b(follo)m(wing)f(the)j(`)p Fn(#)p Fs(')f(is)f(ignored,)h(up)f(to)i(and)e(including)e(the)j(follo)m (wing)e(new-)150 408 y(line.)55 b(A)36 b(line)f(b)s(eginning)e(with)h (`)p Fn(\045)p Fs(')i(in)f(the)h(\014rst)f(column)f(is)h(an)h(option)f (declaration)h(and)f(m)m(ust)h(not)150 518 y(o)s(ccur)30 b(within)e(the)j(k)m(eyw)m(ords)f(section.)275 698 y(The)36 b(\014rst)g(\014eld)f(of)i(eac)m(h)g(non-commen)m(t)h(line)d(is)h(alw)m (a)m(ys)h(the)g(k)m(eyw)m(ord)g(itself.)58 b(It)37 b(can)g(b)s(e)f(giv) m(en)150 807 y(in)e(t)m(w)m(o)i(w)m(a)m(ys:)51 b(as)35 b(a)g(simple)e(name,)k(i.e.,)f(without)e(surrounding)e(string)i (quotation)h(marks,)h(or)f(as)h(a)150 917 y(string)h(enclosed)g(in)f (double-quotes,)j(in)d(C)i(syn)m(tax,)i(p)s(ossibly)35 b(with)h(bac)m(kslash)h(escap)s(es)h(lik)m(e)f Fn(\\")g Fs(or)150 1027 y Fn(\\234)23 b Fs(or)i Fn(\\xa8)p Fs(.)37 b(In)24 b(either)g(case,)j(it)d(m)m(ust)g(start)h(righ)m(t)f(at)h(the)g (b)s(eginning)c(of)k(the)g(line,)f(without)f(leading)150 1136 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 1246 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 1355 y(reserv)m(ed)31 b(w)m(ords:)390 1529 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 1633 y(#)h(for)g(a)h(complete)d(list)i(of)g (ANSI)g(C)g(reserved)f(words.)390 1737 y(unsigned)390 1841 y(sizeof)390 1944 y(switch)390 2048 y(signed)390 2152 y(if)390 2256 y(default)390 2360 y(for)390 2463 y(while)390 2567 y(return)275 2740 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 2849 y(section)31 b(is)e(empt)m(y)-8 b(.)275 3029 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 3139 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 3248 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 3358 y(declaration)38 b(section.)66 b(If)39 b(the)g(`)p Fn(-t)p Fs(')f(option)g(\(or,)k(equiv)-5 b(alen)m(tly)d(,)40 b(the)f(`)p Fn(\045struct-type)p Fs(')d(declaration\))150 3468 y(is)f Fl(not)45 b Fs(enabled)35 b(these)h(\014elds)f(are)h(simply)d(ignored.)57 b(All)34 b(previous)h(examples)g(except)i(the)f(last)g(one)150 3577 y(con)m(tain)31 b(k)m(eyw)m(ord)g(attributes.)150 3892 y Fj(3.1.3)63 b(Including)41 b(Additional)g(C)g(F)-10 b(unctions)275 4130 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 4239 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 4349 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 4459 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 4773 y Fj(3.1.4)63 b(Where)41 b(to)g(place)f(directiv)m(es)g(for)h(GNU)h Fi(indent)p Fj(.)275 5011 y Fs(If)26 b(y)m(ou)i(w)m(an)m(t)g(to)g(in)m (v)m(ok)m(e)g(GNU)g Fn(indent)e Fs(on)h(a)g Fn(gperf)f Fs(input)g(\014le,)h(y)m(ou)g(will)e(see)j(that)g(GNU)g Fn(indent)150 5121 y Fs(do)s(esn't)33 b(understand)e(the)i(`)p Fn(\045\045)p Fs(',)h(`)p Fn(\045{)p Fs(')e(and)h(`)p Fn(\045})p Fs(')g(directiv)m(es)f(that)h(con)m(trol)h Fn(gperf)p Fs('s)d(in)m(terpretation)i(of)150 5230 y(the)23 b(input)e(\014le.)37 b(Therefore)23 b(y)m(ou)g(ha)m(v)m(e)h(to)g (insert)e(some)h(directiv)m(es)f(for)h(GNU)h Fn(indent)p Fs(.)36 b(More)24 b(precisely)-8 b(,)150 5340 y(assuming)29 b(the)i(most)f(general)h(input)d(\014le)i(structure)p eop %%Page: 17 19 17 18 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(17)390 299 y Fn(declarations)44 b(part)j(1)390 403 y(\045{)390 506 y(verbatim)f(code)390 610 y(\045})390 714 y(declarations)e(part)j (2)390 818 y(\045\045)390 922 y(keywords)390 1025 y(\045\045)390 1129 y(functions)150 1263 y Fs(y)m(ou)31 b(w)m(ould)e(insert)g(`)p Fn(*INDENT-OFF*)p Fs(')f(and)h(`)p Fn(*INDENT-ON*)p Fs(')f(commen)m(ts) k(as)e(follo)m(ws:)390 1397 y Fn(/*)47 b(*INDENT-OFF*)e(*/)390 1501 y(declarations)f(part)j(1)390 1605 y(\045{)390 1709 y(/*)g(*INDENT-ON*)e(*/)390 1812 y(verbatim)h(code)390 1916 y(/*)h(*INDENT-OFF*)e(*/)390 2020 y(\045})390 2124 y(declarations)f(part)j(2)390 2227 y(\045\045)390 2331 y(keywords)390 2435 y(\045\045)390 2539 y(/*)g(*INDENT-ON*)e(*/)390 2643 y(functions)150 2906 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 3105 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 3215 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 3324 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 3434 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 3543 y(follo)m(ws:)3525 3796 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 3905 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 4015 y Fo(len)27 b Fs(to)h(sev)m(eral)g(user-sp)s(eci\014ed)d Fo(str)34 b Fs(b)m(yte)28 b(p)s(ositions)e(indexed)g(in)m(to)h(an)g Fo(asso)s(ciated)h(v)-5 b(alues)31 b Fs(table)390 4124 y(stored)d(in)f(a)h(lo)s(cal)g(static)g(arra)m(y)-8 b(.)41 b(The)28 b(asso)s(ciated)g(v)-5 b(alues)28 b(table)g(is)f(constructed)h (in)m(ternally)e(b)m(y)390 4234 y Fn(gperf)34 b Fs(and)g(later)h (output)f(as)i(a)f(static)h(lo)s(cal)e(C)g(arra)m(y)i(called)e(`)p Fn(hash_table)p Fs('.)52 b(The)35 b(relev)-5 b(an)m(t)390 4344 y(selected)27 b(p)s(ositions)e(\(i.e.)40 b(indices)25 b(in)m(to)i Fo(str)7 b Fs(\))26 b(are)h(sp)s(eci\014ed)e(via)i(the)g(`) p Fn(-k)p Fs(')g(option)f(when)g(running)390 4453 y Fn(gperf)p Fs(,)j(as)i(detailed)e(in)g(the)i Fl(Options)39 b Fs(section)30 b(b)s(elo)m(w)g(\(see)h(Chapter)f(4)h([Options],)e(page)i(19\).)3525 4705 y(F)-8 b(unction)-3725 b Fg(in)p 253 4705 35 5 v 41 w(w)m(ord)p 542 4705 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 4815 y Fs(If)k Fo(str)41 b Fs(is)32 b(in)h(the)h(k)m(eyw)m (ord)g(set,)i(returns)c(a)j(p)s(oin)m(ter)e(to)h(that)h(k)m(eyw)m(ord.) 51 b(More)35 b(exactly)-8 b(,)36 b(if)d(the)390 4924 y(option)d(`)p Fn(-t)p Fs(')h(\(or,)g(equiv)-5 b(alen)m(tly)d(,)30 b(the)h(`)p Fn(\045struct-type)p Fs(')d(declaration\))i(w)m(as)h(giv)m (en,)g(it)f(returns)g(a)390 5034 y(p)s(oin)m(ter)f(to)i(the)g(matc)m (hing)g(k)m(eyw)m(ord's)f(structure.)41 b(Otherwise)29 b(it)h(returns)f Fn(NULL)p Fs(.)275 5230 y(If)39 b(the)i(option)e(`)p Fn(-c)p Fs(')h(\(or,)j(equiv)-5 b(alen)m(tly)d(,)42 b(the)f(`)p Fn(\045compare-strncmp)p Fs(')36 b(declaration\))k(is)f(not)h(used,)150 5340 y Fo(str)k Fs(m)m(ust)37 b(b)s(e)f(a)i(NUL)f(terminated)g(string)f (of)i(exactly)g(length)e Fo(len)p Fs(.)61 b(If)37 b(`)p Fn(-c)p Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)39 b(the)p eop %%Page: 18 20 18 19 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(18)150 299 y(`)p Fn(\045compare-strncmp)p Fs(')22 b(declaration\))k(is)f (used,)h Fo(str)32 b Fs(m)m(ust)26 b(simply)e(b)s(e)h(an)h(arra)m(y)g (of)g Fo(len)f Fs(b)m(ytes)i(and)e(do)s(es)150 408 y(not)31 b(need)f(to)h(b)s(e)f(NUL)g(terminated.)275 543 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 702 y(`)p Fn(-t)p Fs(')150 812 y(`)p Fn(--struct-type)p Fs(')630 922 y(Mak)m(e)j(use)e (of)h(the)f(user-de\014ned)f Fn(struct)p Fs(.)150 1081 y(`)p Fn(-S)h Fo(total-switc)m(h-statemen)m(ts)t Fs(')150 1191 y(`)p Fn(--switch=)p Fo(total-switc)m(h-statemen)m(ts)t Fs(')630 1300 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 1410 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 1519 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 1629 y(results)d(in)g(smaller)g(and)h(faster)h(co)s(de.)275 1788 y(If)c(the)h(`)p Fn(-t)p Fs(')g(and)f(`)p Fn(-S)p Fs(')g(options)h(\(or,)g(equiv)-5 b(alen)m(tly)d(,)28 b(the)g(`)p Fn(\045struct-type)p Fs(')d(and)i(`)p Fn(\045switch)p Fs(')g(declara-)150 1898 y(tions\))e(are)g(omitted,)h(the)f(default)f (action)h(is)f(to)i(generate)g(a)g Fn(char)j(*)24 b Fs(arra)m(y)i(con)m (taining)e(the)h(k)m(eyw)m(ords,)150 2007 y(together)32 b(with)d(additional)g(empt)m(y)i(strings)e(used)h(for)g(padding)f(the)h (arra)m(y)-8 b(.)43 b(By)30 b(exp)s(erimen)m(ting)f(with)150 2117 y(the)i(v)-5 b(arious)31 b(input)e(and)h(output)h(options,)g(and)g (timing)e(the)j(resulting)d(C)i(co)s(de,)h(y)m(ou)f(can)h(determine)150 2227 y(the)f(b)s(est)f(option)f(c)m(hoices)i(for)g(di\013eren)m(t)e(k)m (eyw)m(ord)i(set)g(c)m(haracteristics.)150 2484 y Fr(3.3)68 b(Use)46 b(of)f(NUL)g(b)l(ytes)275 2677 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 2786 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 2896 y(con)m(tain)c(NUL) g(b)m(ytes,)i(and)e(the)g Fo(str)42 b Fs(argumen)m(t)36 b(passed)g(to)g Fn(hash)f Fs(or)h Fn(in_word_set)d Fs(m)m(ust)j(b)s(e)f (NUL)150 3005 y(terminated)30 b(and)g(ha)m(v)m(e)h(exactly)g(length)f Fo(len)p Fs(.)275 3140 y(If)35 b(option)h(`)p Fn(-c)p Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)37 b(the)f(`)p Fn(\045compare-strncmp)p Fs(')c(declaration\))k(is)f(used,)i(then)f (the)150 3249 y Fo(str)e Fs(argumen)m(t)29 b(do)s(es)e(not)h(need)g(to) h(b)s(e)e(NUL)h(terminated.)40 b(The)27 b(co)s(de)h(generated)h(b)m(y)f Fn(gperf)f Fs(will)e(only)150 3359 y(access)k(the)f(\014rst)g Fo(len)p Fs(,)f(not)i Fo(len)p Fn(+)p Fo(1)p Fs(,)e(b)m(ytes)i (starting)f(at)g Fo(str)p Fs(.)40 b(Ho)m(w)m(ev)m(er,)31 b(the)d(k)m(eyw)m(ords)g(in)f(the)h(input)e(\014le)150 3469 y(still)i(m)m(ust)j(not)f(con)m(tain)h(NUL)f(b)m(ytes.)275 3603 y(If)35 b(option)h(`)p Fn(-l)p Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)37 b(the)f(`)p Fn(\045compare-lengths)p Fs(')c(declaration\))k(is)f(used,)i(then)f(the)150 3713 y(hash)c(table)h(p)s(erforms)e(binary)g(comparison.)46 b(The)33 b(k)m(eyw)m(ords)g(in)e(the)i(input)e(\014le)g(ma)m(y)j(con)m (tain)f(NUL)150 3822 y(b)m(ytes,)46 b(written)40 b(in)h(string)g(syn)m (tax)h(as)g Fn(\\000)f Fs(or)h Fn(\\x00)p Fs(,)i(and)d(the)h(co)s(de)g (generated)h(b)m(y)f Fn(gperf)f Fs(will)150 3932 y(treat)i(NUL)e(lik)m (e)g(an)m(y)h(other)g(b)m(yte.)75 b(Also,)44 b(in)c(this)g(case)j(the)f (`)p Fn(-c)p Fs(')f(option)g(\(or,)k(equiv)-5 b(alen)m(tly)d(,)44 b(the)150 4042 y(`)p Fn(\045compare-strncmp)p Fs(')26 b(declaration\))31 b(is)e(ignored.)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 Fp(4)80 b(In)l(v)l(oking)53 b Fm(gperf)275 542 y Fs(There)35 b(are)i Fl(many)46 b Fs(options)35 b(to)j Fn(gperf)p Fs(.)57 b(They)36 b(w)m(ere)h(added)e (to)j(mak)m(e)f(the)g(program)f(more)g(con-)150 651 y(v)m(enien)m(t)e (for)f(use)g(with)f(real)h(applications.)47 b(\\On-line")32 b(help)g(is)g(readily)g(a)m(v)-5 b(ailable)33 b(via)g(the)g(`)p Fn(--help)p Fs(')150 761 y(option.)40 b(Here)31 b(is)e(the)i(complete)g (list)e(of)h(options.)150 1025 y Fr(4.1)68 b(Sp)t(ecifying)45 b(the)g(Lo)t(cation)h(of)f(the)g(Output)g(File)150 1247 y Fs(`)p Fn(--output-file=)p Fo(\014le)5 b Fs(')630 1357 y(Allo)m(ws)29 b(y)m(ou)i(to)g(sp)s(ecify)e(the)i(name)f(of)h(the)f (\014le)g(to)h(whic)m(h)e(the)i(output)f(is)f(written)g(to.)275 1521 y(The)g(results)h(are)g(written)g(to)h(standard)e(output)h(if)g (no)g(output)g(\014le)f(is)h(sp)s(eci\014ed)f(or)h(if)f(it)h(is)g(`)p Fn(-)p Fs('.)150 1785 y Fr(4.2)68 b(Options)45 b(that)h(a\013ect)g(In)l (terpretation)h(of)e(the)g(Input)g(File)275 1981 y Fs(These)d(options)g (are)h(also)f(a)m(v)-5 b(ailable)42 b(as)h(declarations)f(in)f(the)i (input)e(\014le)g(\(see)j(Section)e(3.1.1.2)150 2090 y([Gp)s(erf)30 b(Declarations],)h(page)g(12\).)150 2254 y(`)p Fn(-e)f Fo(k)m(eyw)m(ord-delimiter-list)r Fs(')150 2364 y(`)p Fn(--delimiters=)p Fo(k)m(eyw)m(ord-delimiter-list)r Fs(')630 2473 y(Allo)m(ws)e(y)m(ou)h(to)g(pro)m(vide)f(a)h(string)f (con)m(taining)g(delimiters)f(used)g(to)j(separate)g(k)m(eyw)m(ords)630 2583 y(from)k(their)g(attributes.)53 b(The)34 b(default)f(is)h Fn(")p Fs(,)p Fn(")p Fs(.)53 b(This)33 b(option)h(is)f(essen)m(tial)i (if)e(y)m(ou)i(w)m(an)m(t)630 2692 y(to)f(use)e(k)m(eyw)m(ords)h(that)h (ha)m(v)m(e)g(em)m(b)s(edded)e(commas)h(or)g(newlines.)46 b(One)33 b(useful)e(tric)m(k)i(is)630 2802 y(to)e(use)f(-e'T)-8 b(AB',)33 b(where)c(T)-8 b(AB)31 b(is)f(the)g(literal)f(tab)i(c)m (haracter.)150 2964 y(`)p Fn(-t)p Fs(')150 3074 y(`)p Fn(--struct-type)p Fs(')630 3183 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 3293 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 3403 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 3512 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 3622 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 3731 y(with)29 b(this)g(release.)150 3894 y(`)p Fn(--ignore-case)p Fs(')630 4003 y(Consider)42 b(upp)s(er)g(and)i(lo)m(w)m(er)g(case)h (ASCI)s(I)e(c)m(haracters)i(as)f(equiv)-5 b(alen)m(t.)81 b(The)44 b(string)630 4113 y(comparison)27 b(will)f(use)i(a)h(case)g (insigni\014can)m(t)d(c)m(haracter)k(comparison.)39 b(Note)29 b(that)g(lo)s(cale)630 4222 y(dep)s(enden)m(t)e(case)i(mappings)e(are)h (ignored.)39 b(This)27 b(option)g(is)h(therefore)g(not)h(suitable)d(if) i(a)630 4332 y(prop)s(erly)k(in)m(ternationalized)h(or)h(lo)s(cale)g(a) m(w)m(are)i(case)f(mapping)e(should)f(b)s(e)i(used.)52 b(\(F)-8 b(or)630 4442 y(example,)30 b(in)e(a)h(T)-8 b(urkish)28 b(lo)s(cale,)h(the)h(upp)s(er)d(case)k(equiv)-5 b(alen)m(t)28 b(of)i(the)g(lo)m(w)m(ercase)g(ASCI)s(I)630 4551 y(letter)41 b(`)p Fn(i)p Fs(')h(is)e(the)h(non-ASCI)s(I)e(c)m (haracter)k(`)p Fn(capital)29 b(i)h(with)f(dot)g(above)p Fs('.\))72 b(F)-8 b(or)42 b(this)630 4661 y(case,)d(it)c(is)g(b)s (etter)i(to)f(apply)f(an)h(upp)s(ercase)f(or)h(lo)m(w)m(ercase)h(con)m (v)m(ersion)g(on)f(the)g(string)630 4770 y(b)s(efore)30 b(passing)f(it)h(to)h(the)g Fn(gperf)e Fs(generated)i(function.)150 5035 y Fr(4.3)68 b(Options)45 b(to)h(sp)t(ecify)f(the)g(Language)h(for) f(the)g(Output)f(Co)t(de)275 5230 y Fs(These)e(options)g(are)h(also)f (a)m(v)-5 b(ailable)42 b(as)h(declarations)f(in)f(the)i(input)e(\014le) g(\(see)j(Section)e(3.1.1.2)150 5340 y([Gp)s(erf)30 b(Declarations],)h (page)g(12\).)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(-L)30 b Fo (generated-language-name)5 b Fs(')150 408 y(`)p Fn(--language=)p Fo(generated-language-name)g Fs(')630 518 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 628 y(gumen)m(t.)41 b(Languages)31 b(handled)e(are)i(curren)m(tly:)630 798 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 907 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 1017 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 1187 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 1296 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 1406 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 1576 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 1685 y(C)p Fn(++)29 b Fs(compilers.)630 1855 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 2025 y(The)g(default)f(is)h(C.)150 2195 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 2305 y(do)s(es)30 b(not)h(do)f(an)m (ything.)150 2475 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 2584 y(do)s(es)30 b(not)h(do)f(an)m (ything.)150 2868 y Fr(4.4)68 b(Options)45 b(for)g(\014ne)g(tuning)g (Details)i(in)e(the)g(Output)f(Co)t(de)275 3071 y Fs(Most)21 b(of)g(these)g(options)f(are)h(also)g(a)m(v)-5 b(ailable)20 b(as)h(declarations)f(in)g(the)h(input)d(\014le)i(\(see)i(Section)e (3.1.1.2)150 3181 y([Gp)s(erf)30 b(Declarations],)h(page)g(12\).)150 3356 y(`)p Fn(-K)f Fo(slot-name)5 b Fs(')150 3466 y(`)p Fn(--slot-name=)p Fo(slot-name)g Fs(')630 3575 y(This)20 b(option)h(is)g(only)f(useful)g(when)h(option)g(`)p Fn(-t)p Fs(')g(\(or,)j(equiv)-5 b(alen)m(tly)d(,)23 b(the)f(`)p Fn(\045struct-type)p Fs(')630 3685 y(declaration\))39 b(has)g(b)s(een)f(giv)m(en.)66 b(By)39 b(default,)i(the)e(program)g (assumes)f(the)h(structure)630 3795 y(comp)s(onen)m(t)28 b(iden)m(ti\014er)f(for)h(the)g(k)m(eyw)m(ord)g(is)g(`)p Fn(name)p Fs('.)39 b(This)26 b(option)i(allo)m(ws)f(an)h(arbitrary)630 3904 y(c)m(hoice)k(of)g(iden)m(ti\014er)e(for)h(this)g(comp)s(onen)m (t,)h(although)f(it)g(still)e(m)m(ust)j(o)s(ccur)f(as)h(the)g(\014rst) 630 4014 y(\014eld)d(in)g(y)m(our)h(supplied)d Fn(struct)p Fs(.)150 4184 y(`)p Fn(-F)j Fo(initializers)t Fs(')150 4293 y(`)p Fn(--initializer-suffix=)p Fo(in)o(iti)o(ali)o(zers)t Fs(')630 4403 y(This)20 b(option)h(is)g(only)f(useful)g(when)h(option)g (`)p Fn(-t)p Fs(')g(\(or,)j(equiv)-5 b(alen)m(tly)d(,)23 b(the)f(`)p Fn(\045struct-type)p Fs(')630 4512 y(declaration\))32 b(has)h(b)s(een)e(giv)m(en.)48 b(It)32 b(p)s(ermits)f(to)i(sp)s(ecify)e (initializers)e(for)k(the)f(structure)630 4622 y(mem)m(b)s(ers)23 b(follo)m(wing)f Fo(slot-name)29 b Fs(in)22 b(empt)m(y)i(hash)f(table)g (en)m(tries.)38 b(The)23 b(list)f(of)i(initializers)630 4732 y(should)36 b(start)j(with)f(a)g(comma.)66 b(By)39 b(default,)h(the)f(emitted)f(co)s(de)h(will)c(zero-initialize)630 4841 y(structure)30 b(mem)m(b)s(ers)f(follo)m(wing)g Fo(slot-name)p Fs(.)150 5011 y(`)p Fn(-H)h Fo(hash-function-name)5 b Fs(')150 5121 y(`)p Fn(--hash-function-name=)p Fo(hash-fu)o (nction-name)g Fs(')630 5230 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 5340 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.)p eop %%Page: 21 23 21 22 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 b Fn(gperf)2433 b Fs(21)150 299 y(`)p Fn(-N)30 b Fo(lo)s (okup-function-name)5 b Fs(')150 408 y(`)p Fn(--lookup-function-name=)p Fo(l)o(o)s(okup-fu)o(nction-name)g Fs(')630 518 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 628 y(name)28 b(is)f(`)p Fn(in_word_set)p Fs('.)37 b(This)26 b(option)h(p)s(ermits)f(m)m (ultiple)g(generated)i(hash)f(functions)630 737 y(to)k(b)s(e)f(used)f (in)g(the)i(same)g(application.)150 938 y(`)p Fn(-Z)f Fo(class-name)5 b Fs(')150 1048 y(`)p Fn(--class-name=)p Fo(class-name)g Fs(')630 1157 y(This)65 b(option)i(is)f(only)h(useful)e (when)i(option)f(`)p Fn(-L)30 b(C++)p Fs(')67 b(\(or,)77 b(equiv)-5 b(alen)m(tly)d(,)76 b(the)630 1267 y(`)p Fn (\045language=C++)p Fs(')43 b(declaration\))i(has)h(b)s(een)f(giv)m (en.)87 b(It)46 b(allo)m(ws)f(y)m(ou)h(to)g(sp)s(ecify)f(the)630 1377 y(name)30 b(of)h(generated)g(C)p Fn(++)f Fs(class.)40 b(Default)31 b(name)f(is)g Fn(Perfect_Hash)p Fs(.)150 1577 y(`)p Fn(-7)p Fs(')150 1687 y(`)p Fn(--seven-bit)p Fs(')630 1797 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 1906 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 2016 y(of)f(7-bit)g (ASCI)s(I)f(c)m(haracters)j(\(b)m(ytes)f(in)e(the)h(range)h(0..127\).) 51 b(\(Note)35 b(that)f(the)g(ANSI)e(C)630 2125 y(functions)e Fn(isalnum)g Fs(and)i Fn(isgraph)e Fs(do)i Fl(not)41 b Fs(guaran)m(tee)33 b(that)g(a)f(b)m(yte)h(is)e(in)f(this)h(range.)630 2235 y(Only)25 b(an)h(explicit)f(test)j(lik)m(e)d(`)p Fn(c)31 b(>=)f('A')f(&&)h(c)g(<=)g('Z')p Fs(')25 b(guaran)m(tees)j (this.\))39 b(This)25 b(w)m(as)i(the)630 2345 y(default)f(in)g(v)m (ersions)g(of)h Fn(gperf)e Fs(earlier)h(than)g(2.7;)k(no)m(w)d(the)g (default)f(is)f(to)j(supp)s(ort)d(8-bit)630 2454 y(and)30 b(m)m(ultib)m(yte)f(c)m(haracters.)150 2655 y(`)p Fn(-l)p Fs(')150 2765 y(`)p Fn(--compare-lengths)p Fs(')630 2874 y(Compare)40 b(k)m(eyw)m(ord)g(lengths)f(b)s(efore)g(trying)g(a)i (string)d(comparison.)69 b(This)38 b(option)h(is)630 2984 y(mandatory)32 b(for)h(binary)d(comparisons)i(\(see)h(Section)g (3.3)g([Binary)f(Strings],)g(page)h(18\).)630 3093 y(It)g(also)g(migh)m (t)g(cut)g(do)m(wn)f(on)h(the)g(n)m(um)m(b)s(er)f(of)h(string)f (comparisons)g(made)h(during)e(the)630 3203 y(lo)s(okup,)i(since)g(k)m (eyw)m(ords)g(with)f(di\013eren)m(t)h(lengths)g(are)g(nev)m(er)h (compared)f(via)g Fn(strcmp)p Fs(.)630 3313 y(Ho)m(w)m(ev)m(er,)k (using)32 b(`)p Fn(-l)p Fs(')h(migh)m(t)g(greatly)h(increase)g(the)g (size)f(of)h(the)f(generated)i(C)e(co)s(de)h(if)630 3422 y(the)k(lo)s(okup)f(table)g(range)i(is)e(large)h(\(whic)m(h)f(implies)e (that)j(the)g(switc)m(h)g(option)f(`)p Fn(-S)p Fs(')h(or)630 3532 y(`)p Fn(\045switch)p Fs(')29 b(is)h(not)h(enabled\),)g(since)f (the)h(length)f(table)h(con)m(tains)g(as)g(man)m(y)g(elemen)m(ts)g(as) 630 3641 y(there)g(are)f(en)m(tries)h(in)e(the)h(lo)s(okup)f(table.)150 3842 y(`)p Fn(-c)p Fs(')150 3952 y(`)p Fn(--compare-strncmp)p Fs(')630 4061 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 4171 y(The)30 b(default)f(action)i(is)f(to)h(use)f Fn(strcmp)p Fs(.)150 4372 y(`)p Fn(-C)p Fs(')150 4482 y(`)p Fn(--readonly-tables)p Fs(')630 4591 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 4701 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 4810 y(in)e(readonly)h(memory)-8 b(.)150 5011 y(`)p Fn(-E)p Fs(')150 5121 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 5230 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 5340 y(the)31 b(same)f(\014le.)40 b(Thanks)29 b(to)j(James)e(Clark)f Fn()p Fs(.)p eop %%Page: 22 24 22 23 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 b Fn(gperf)2433 b Fs(22)150 299 y(`)p Fn(-I)p Fs(')150 408 y(`)p Fn(--includes)p Fs(')630 518 y(Include)29 b(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 628 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 737 y(to)31 b(allo)m(w)f(compilation)f(of)h(the)h (co)s(de.)150 883 y(`)p Fn(-G)p Fs(')150 993 y(`)p Fn(--global-table)p Fs(')630 1103 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 1212 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 1358 y(`)p Fn(-P)p Fs(')150 1468 y(`)p Fn(--pic)p Fs(')190 b(Optimize)40 b(the)h(generated)h(table)f(for)g(inclusion)d (in)i(shared)g(libraries.)70 b(This)39 b(reduces)630 1577 y(the)c(startup)g(time)g(of)g(programs)g(using)f(a)i(shared)e (library)f(con)m(taining)i(the)g(generated)630 1687 y(co)s(de.)j(If)21 b(the)h(option)g(`)p Fn(-t)p Fs(')f(\(or,)k(equiv)-5 b(alen)m(tly)d(,)22 b(the)g(`)p Fn(\045struct-type)p Fs(')d(declaration\))j(is)f(also)630 1797 y(giv)m(en,)31 b(the)g(\014rst)e(\014eld)h(of)g(the)h(user-de\014ned)e(struct)i(m)m (ust)f(b)s(e)g(of)h(t)m(yp)s(e)g(`)p Fn(int)p Fs(',)f(not)h(`)p Fn(char)630 1906 y(*)p Fs(',)h(b)s(ecause)f(it)h(will)c(con)m(tain)k (o\013sets)h(in)m(to)e(the)h(string)e(p)s(o)s(ol)h(instead)f(of)i (actual)g(strings.)630 2016 y(T)-8 b(o)33 b(con)m(v)m(ert)h(suc)m(h)f (an)f(o\013set)i(to)f(a)g(string,)g(y)m(ou)g(can)g(use)f(the)h (expression)e(`)p Fn(stringpool)630 2125 y(+)f Fo(o)5 b Fs(',)34 b(where)f Fo(o)38 b Fs(is)32 b(the)h(o\013set.)50 b(The)32 b(string)g(p)s(o)s(ol)g(name)h(can)g(b)s(e)g(c)m(hanged)g (through)g(the)630 2235 y(option)d(`)p Fn(--string-pool-name)p Fs('.)150 2381 y(`)p Fn(-Q)g Fo(string-p)s(o)s(ol-name)5 b Fs(')150 2491 y(`)p Fn(--string-pool-name=)p Fo(string-p)r(o)s (ol-name)g Fs(')630 2600 y(Allo)m(ws)30 b(y)m(ou)i(to)g(sp)s(ecify)e (the)h(name)h(of)f(the)h(generated)g(string)e(p)s(o)s(ol)g(created)i(b) m(y)f(option)630 2710 y(`)p Fn(-P)p Fs('.)38 b(The)21 b(default)f(name)i(is)e(`)p Fn(stringpool)p Fs('.)36 b(This)19 b(option)i(p)s(ermits)f(the)h(use)g(of)h(t)m(w)m(o)h(hash)630 2819 y(tables)h(in)e(the)i(same)g(\014le,)h(with)d(`)p Fn(-P)p Fs(')i(and)f(ev)m(en)h(when)f(the)h(option)f(`)p Fn(-G)p Fs(')h(\(or,)i(equiv)-5 b(alen)m(tly)d(,)630 2929 y(the)31 b(`)p Fn(\045global-table)p Fs(')c(declaration\))j(is)g (giv)m(en.)150 3075 y(`)p Fn(--null-strings)p Fs(')630 3185 y(Use)39 b(NULL)g(strings)e(instead)i(of)f(empt)m(y)i(strings)d (for)i(empt)m(y)g(k)m(eyw)m(ord)g(table)g(en)m(tries.)630 3294 y(This)e(reduces)h(the)h(startup)g(time)f(of)h(programs)g(using)e (a)i(shared)f(library)e(con)m(taining)630 3404 y(the)41 b(generated)g(co)s(de)g(\(but)f(not)h(as)f(m)m(uc)m(h)h(as)g(option)f (`)p Fn(-P)p Fs('\),)j(at)e(the)g(exp)s(ense)f(of)h(one)630 3513 y(more)31 b(test-and-branc)m(h)f(instruction)f(at)i(run)e(time.) 150 3660 y(`)p Fn(-W)h Fo(hash-table-arra)m(y-name)5 b Fs(')150 3769 y(`)p Fn(--word-array-name=)p Fo(hash-table-arra)m (y-name)g Fs(')630 3879 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 3988 y(table.)105 b(Default)52 b(name)f(is)g(`)p Fn(wordlist)p Fs('.)103 b(This)50 b(option)h(p)s(ermits)f(the)i(use)g (of)g(t)m(w)m(o)630 4098 y(hash)37 b(tables)g(in)g(the)h(same)g (\014le,)h(ev)m(en)f(when)f(the)h(option)f(`)p Fn(-G)p Fs(')h(\(or,)i(equiv)-5 b(alen)m(tly)d(,)39 b(the)630 4208 y(`)p Fn(\045global-table)p Fs(')27 b(declaration\))k(is)e(giv)m (en.)150 4354 y(`)p Fn(-S)h Fo(total-switc)m(h-statemen)m(ts)t Fs(')150 4463 y(`)p Fn(--switch=)p Fo(total-switc)m(h-statemen)m(ts)t Fs(')630 4573 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 4682 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 4792 y(requiremen)m(ts)42 b(for)i(some)f(input)f(\014les.)79 b(The)43 b(argumen)m(t)h(to)g(this)e(option)h(determines)630 4902 y(ho)m(w)33 b(man)m(y)f Fn(switch)f Fs(statemen)m(ts)k(are)e (generated.)49 b(A)32 b(v)-5 b(alue)33 b(of)f(1)i(generates)g(1)f Fn(switch)630 5011 y Fs(con)m(taining)23 b(all)e(the)j(elemen)m(ts,)h (a)e(v)-5 b(alue)22 b(of)i(2)f(generates)h(2)g(tables)e(with)g(1/2)i (the)g(elemen)m(ts)630 5121 y(in)37 b(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 5230 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 5340 y(Keith)j(Bostic's)h(original)d(C)i(program.)p eop %%Page: 23 25 23 24 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 b Fn(gperf)2433 b Fs(23)150 299 y(`)p Fn(-T)p Fs(')150 408 y(`)p Fn(--omit-struct-type)p Fs(')630 518 y(Prev)m(en)m(ts)29 b(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 628 y(if)j(the)i(t)m(yp)s(e)f(is)g(already)g(de\014ned)f(elsewhere.)150 795 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 Fn(gperf)p Fs(.)49 b(It)630 905 y(do)s(es)30 b(not)h(do)f(an)m(ything.) 150 1182 y Fr(4.5)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)150 1412 y Fs(`)p Fn(-k)30 b Fo(selected-b)m(yte-p)s(ositions)t Fs(')150 1521 y(`)p Fn(--key-positions=)p Fo(selected-b)m(yte-p)s (ositions)t Fs(')630 1631 y(Allo)m(ws)c(selection)h(of)g(the)g(b)m(yte) h(p)s(ositions)d(used)h(in)g(the)h(k)m(eyw)m(ords')h(hash)e(function.) 38 b(The)630 1740 y(allo)m(w)m(able)21 b(c)m(hoices)i(range)f(b)s(et)m (w)m(een)h(1-255,)j(inclusiv)m(e.)35 b(The)22 b(p)s(ositions)d(are)k (separated)f(b)m(y)630 1850 y(commas,)27 b(e.g.,)i(`)p Fn(-k)h(9,4,13,14)p Fs(';)25 b(ranges)h(ma)m(y)g(b)s(e)f(used,)h(e.g.,) i(`)p Fn(-k)i(2-7)p Fs(';)d(and)e(p)s(ositions)630 1960 y(ma)m(y)c(o)s(ccur)f(in)g(an)m(y)h(order.)37 b(F)-8 b(urthermore,)22 b(the)f(wildcard)d('*')j(causes)g(the)g(generated)h (hash)630 2069 y(function)36 b(to)i(consider)f Fe(all)h Fs(b)m(yte)g(p)s(ositions)d(in)h(eac)m(h)j(k)m(eyw)m(ord,)h(whereas)d ('$')h(instructs)630 2179 y(the)31 b(hash)g(function)e(to)j(use)f(the)g (\\\014nal)g(b)m(yte")h(of)f(a)h(k)m(eyw)m(ord)f(\(this)f(is)h(the)g (only)f(w)m(a)m(y)i(to)630 2288 y(use)e(a)h(b)m(yte)g(p)s(osition)d (greater)k(than)e(255,)i(inciden)m(tally\).)630 2427 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 2536 y(considers)g(p)s(ositions)f(1,2,4,6,7,8,9,10,)42 b(plus)33 b(the)j(last)f(b)m(yte)g(in)f(eac)m(h)i(k)m(eyw)m(ord)g (\(whic)m(h)630 2646 y(ma)m(y)j(b)s(e)f(at)i(a)f(di\013eren)m(t)f(p)s (osition)f(for)h(eac)m(h)i(k)m(eyw)m(ord,)h(ob)m(viously\).)65 b(Keyw)m(ords)38 b(with)630 2756 y(length)29 b(less)g(than)g(the)g (indicated)f(b)m(yte)j(p)s(ositions)c(w)m(ork)i(prop)s(erly)-8 b(,)29 b(since)f(selected)i(b)m(yte)630 2865 y(p)s(ositions)j (exceeding)i(the)h(k)m(eyw)m(ord)f(length)f(are)i(simply)c(not)k (referenced)f(in)e(the)j(hash)630 2975 y(function.)630 3113 y(This)27 b(option)i(is)f(not)h(normally)e(needed)i(since)f(v)m (ersion)g(2.8)j(of)e Fn(gperf)p Fs(;)f(the)h(default)f(b)m(yte)630 3223 y(p)s(ositions)34 b(are)i(computed)f(dep)s(ending)e(on)j(the)f(k)m (eyw)m(ord)h(set,)i(through)d(a)h(searc)m(h)g(that)630 3332 y(minimizes)28 b(the)i(n)m(um)m(b)s(er)f(of)i(b)m(yte)g(p)s (ositions.)150 3500 y(`)p Fn(-D)p Fs(')150 3609 y(`)p Fn(--duplicates)p Fs(')630 3719 y(Handle)g(k)m(eyw)m(ords)i(whose)f (selected)h(b)m(yte)f(sets)h(hash)e(to)i(duplicate)e(v)-5 b(alues.)45 b(Duplicate)630 3829 y(hash)33 b(v)-5 b(alues)33 b(can)i(o)s(ccur)e(if)g(a)h(set)h(of)f(k)m(eyw)m(ords)g(has)g(the)g (same)g(names,)h(but)e(p)s(ossesses)630 3938 y(di\013eren)m(t)e (attributes,)g(or)g(if)g(the)g(selected)h(b)m(yte)g(p)s(ositions)d(are) j(not)f(w)m(ell)f(c)m(hosen.)44 b(With)630 4048 y(the)36 b(-D)g(option)f Fn(gperf)f Fs(treats)j(all)d(these)j(k)m(eyw)m(ords)e (as)h(part)g(of)g(an)f(equiv)-5 b(alence)35 b(class)630 4157 y(and)c(generates)i(a)f(p)s(erfect)g(hash)f(function)f(with)h(m)m (ultiple)e(comparisons)i(for)g(duplicate)630 4267 y(k)m(eyw)m(ords.)38 b(It)21 b(is)e(up)h(to)h(y)m(ou)g(to)h(completely)e(disam)m(biguate)g (the)h(k)m(eyw)m(ords)g(b)m(y)g(mo)s(difying)630 4377 y(the)28 b(generated)g(C)f(co)s(de.)40 b(Ho)m(w)m(ev)m(er,)30 b Fn(gperf)c Fs(helps)g(y)m(ou)h(out)h(b)m(y)f(organizing)g(the)g (output.)630 4515 y(Using)k(this)g(option)g(usually)f(means)i(that)g (the)g(generated)h(hash)e(function)g(is)g(no)g(longer)630 4625 y(p)s(erfect.)48 b(On)31 b(the)i(other)g(hand,)g(it)f(p)s(ermits)f Fn(gperf)g Fs(to)i(w)m(ork)g(on)g(k)m(eyw)m(ord)g(sets)g(that)g(it)630 4734 y(otherwise)d(could)f(not)i(handle.)150 4902 y(`)p Fn(-m)f Fo(iterations)t Fs(')150 5011 y(`)p Fn(--multiple-iterations=)p Fo(i)o(terations)t Fs(')630 5121 y(P)m(erform)24 b(m)m(ultiple)e(c)m (hoices)j(of)f(the)h(`)p Fn(-i)p Fs(')f(and)g(`)p Fn(-j)p Fs(')g(v)-5 b(alues,)25 b(and)e(c)m(ho)s(ose)j(the)e(b)s(est)g (results.)630 5230 y(This)33 b(increases)i(the)g(running)d(time)i(b)m (y)h(a)g(factor)h(of)f Fo(iterations)j Fs(but)c(do)s(es)g(a)i(go)s(o)s (d)e(job)630 5340 y(minimizing)27 b(the)j(generated)i(table)e(size.)p eop %%Page: 24 26 24 25 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 b Fn(gperf)2433 b Fs(24)150 299 y(`)p Fn(-i)30 b Fo(initial-v)-5 b(alue)5 b Fs(')150 408 y(`)p Fn(--initial-asso=)p Fo(initial)o(-v)-5 b(alue)5 b Fs(')630 518 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 628 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 737 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 847 y(`)p Fn(-S)p Fs(')j(\(or,)i (equiv)-5 b(alen)m(tly)d(,)28 b(`)p Fn(\045switch)p Fs('\))f(is)h (used.)39 b(Also,)29 b(`)p Fn(-i)p Fs(')f(is)f(o)m(v)m(erridden)h(when) f(the)i(`)p Fn(-r)p Fs(')630 956 y(option)h(is)f(used.)150 1150 y(`)p Fn(-j)h Fo(jump-v)-5 b(alue)5 b Fs(')150 1260 y(`)p Fn(--jump=)p Fo(jump-v)-5 b(alue)5 b Fs(')630 1369 y(A\013ects)41 b(the)f(\\jump)f(v)-5 b(alue",)43 b(i.e.,)g(ho)m(w)d (far)g(to)g(adv)-5 b(ance)41 b(the)f(asso)s(ciated)h(b)m(yte)f(v)-5 b(alue)630 1479 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 1588 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 1782 y(`)p Fn(-n)p Fs(')150 1892 y(`)p Fn(--no-strlen)p Fs(')630 2001 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 2111 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 2221 y(lo)s(okup)29 b(table.)150 2414 y(`)p Fn(-r)p Fs(')150 2524 y(`)p Fn(--random)p Fs(')630 2633 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 2743 y(generates)23 b(solutions)c(faster)j(than)f (using)f(deterministic)f(initialization)f(\(whic)m(h)i(starts)i(all)630 2853 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 2962 y(increases)j(the)h(size)f(of)g(the)h(table.)150 3156 y(`)p Fn(-s)f Fo(size-m)m(ultiple)5 b Fs(')150 3266 y(`)p Fn(--size-multiple=)p Fo(size-m)m(ultipl)o(e)g Fs(')630 3375 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 3485 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 3594 y(v)-5 b(alue)37 b(range)h(should)d(b)s(e,)k(in)d(relationship)f (to)j(the)f(n)m(um)m(b)s(er)g(of)g(k)m(eyw)m(ords.)62 b(It)38 b(can)g(b)s(e)630 3704 y(written)f(as)i(an)f(in)m(teger,)k(a)c (\015oating-p)s(oin)m(t)g(n)m(um)m(b)s(er)f(or)i(a)f(fraction.)65 b(F)-8 b(or)39 b(example,)i(a)630 3814 y(v)-5 b(alue)39 b(of)g(3)h(means)f(\\allo)m(w)g(the)h(maxim)m(um)e(asso)s(ciated)h(v)-5 b(alue)39 b(to)h(b)s(e)f(ab)s(out)g(3)g(times)630 3923 y(larger)32 b(than)h(the)g(n)m(um)m(b)s(er)e(of)i(input)e(k)m(eyw)m (ords".)49 b(Con)m(v)m(ersely)-8 b(,)34 b(a)f(v)-5 b(alue)32 b(of)h(1/3)h(means)630 4033 y(\\allo)m(w)41 b(the)g(maxim)m(um)e(asso)s (ciated)j(v)-5 b(alue)40 b(to)i(b)s(e)e(ab)s(out)g(3)h(times)g(smaller) e(than)i(the)630 4142 y(n)m(um)m(b)s(er)33 b(of)i(input)e(k)m(eyw)m (ords".)55 b(V)-8 b(alues)34 b(smaller)g(than)g(1)h(are)g(useful)e(for) i(limiting)d(the)630 4252 y(o)m(v)m(erall)d(size)f(of)h(the)f (generated)i(hash)e(table,)h(though)f(the)g(option)g(`)p Fn(-m)p Fs(')h(is)e(b)s(etter)i(at)g(this)630 4361 y(purp)s(ose.)630 4513 y(If)44 b(`generate)h(switc)m(h')f(option)g(`)p Fn(-S)p Fs(')g(\(or,)k(equiv)-5 b(alen)m(tly)d(,)46 b(`)p Fn(\045switch)p Fs('\))d(is)g Fl(not)54 b Fs(enabled,)630 4623 y(the)45 b(maxim)m(um)g(asso)s(ciated)g(v)-5 b(alue)45 b(in\015uences)f(the)h(static)h(arra)m(y)g(table)f(size,)k(and)c(a)630 4732 y(larger)26 b(table)g(should)e(decrease)j(the)f(time)g(required)e (for)i(an)f(unsuccessful)f(searc)m(h,)k(at)f(the)630 4842 y(exp)s(ense)j(of)g(extra)i(table)e(space.)630 4994 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 5103 y(same)h(size)f(as)g(the)h(n)m(um)m(b)s(er)e (of)h(k)m(eyw)m(ords)h(\(for)g(e\016ciency)-8 b(,)37 b(the)e(maxim)m(um)f(asso)s(ciated)630 5213 y(v)-5 b(alue)35 b(is)g(alw)m(a)m(ys)h(rounded)e(up)g(to)i(a)g(p)s(o)m(w)m(er)g(of)f (2\).)57 b(The)35 b(actual)h(table)g(size)f(ma)m(y)h(v)-5 b(ary)630 5322 y(somewhat,)31 b(since)f(this)f(tec)m(hnique)h(is)g (essen)m(tially)f(a)i(heuristic.)p eop %%Page: 25 27 25 26 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 b Fn(gperf)2433 b Fs(25)150 299 y Fr(4.6)68 b(Informativ)l(e)47 b(Output)150 516 y Fs(`)p Fn(-h)p Fs(')150 626 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 736 y(program)30 b(execution.)150 895 y(`)p Fn(-v)p Fs(')150 1005 y(`)p Fn(--version)p Fs(')630 1114 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 1274 y(`)p Fn(-d)p Fs(')150 1383 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 1493 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 1602 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 1712 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 1822 y(program)30 b(when)g(the)g(`)p Fn(-d)p Fs(')g(option)g(is)g (enabled.)p eop %%Page: 26 28 26 27 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(26)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.)225 1240 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 1350 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 1460 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 1569 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 1679 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 1788 y(cannot)37 b(correctly)h(generate)g(co)s(de)f(for)g(large)g (switc)m(h)f(statemen)m(ts)j(it)d(is)g(imp)s(ortan)m(t)g(to)i(qualify) 330 1898 y(the)i 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 2007 y(switc)m(h)30 b(statemen)m(ts)i(generated.)225 2142 y Fq(\017)60 b Fs(The)35 b(maxim)m(um)f(n)m(um)m(b)s(er)g(of)i (selected)g(b)m(yte)g(p)s(ositions)d(has)i(an)h(arbitrary)e(limit)f(of) j(255.)57 b(This)330 2252 y(restriction)27 b(should)f(b)s(e)h(remo)m(v) m(ed,)j(and)d(if)g(an)m(y)m(one)i(considers)e(this)g(a)h(problem)e (write)i(me)g(and)f(let)330 2361 y(me)j(kno)m(w)h(so)f(I)h(can)f(remo)m (v)m(e)i(the)f(constrain)m(t.)p eop %%Page: 27 29 27 28 bop 150 -116 a Fs(Chapter)30 b(6:)41 b(Things)28 b(Still)g(Left)j(to)g(Do)2133 b(27)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(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 996 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 1106 y(extra)m(v)-5 b(agan)m(t)39 b(in)c(the)i(generated)g(table)f (size\).)59 b(This)35 b(is)g(mostly)h(of)h(theoretical)f(in)m(terest,)j (since)330 1215 y(a)g(sparse)f(table)g(often)h(pro)s(duces)e(faster)i (lo)s(okups,)g(and)f(use)g(of)h(the)g(`)p Fn(-S)p Fs(')f Fn(switch)f Fs(option)h(can)330 1325 y(minimize)e(the)j(data)g(size,)i (at)e(the)g(exp)s(ense)f(of)h(sligh)m(tly)e(longer)h(lo)s(okups)f (\(note)j(that)f(the)g(gcc)330 1435 y(compiler)c(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 1544 y(more)31 b(complex)f(sc)m (hemes\).)225 1679 y Fq(\017)60 b Fs(In)38 b(addition)f(to)j(impro)m (ving)d(the)j(algorithm,)g(it)e(w)m(ould)g(also)h(b)s(e)g(useful)e(to)i (generate)i(an)e(Ada)330 1788 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)f(C)g(and)g(C)p Fn(++)f Fs(routines.)p eop %%Page: 28 30 28 29 bop 150 -116 a Fs(Chapter)30 b(7:)41 b(Bibliograph)m(y)2533 b(28)150 299 y Fp(7)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])42 b(Sc)m(hmidt,)h(Douglas)e (C.)g Fl(GPERF:)i(A)e(Perfe)-5 b(ct)43 b(Hash)g(F)-7 b(unction)43 b(Gener)-5 b(ator)53 b Fs(C)p Fn(++)40 b Fs(Rep)s(ort,)150 2839 y(SIGS)29 b(10)j(10)f(\(No)m(v)m(em)m(b)s (er/Decem)m(b)s(er)i(1998\).)275 2974 y([11])24 b(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 3083 y(Lists)38 b Fs(SIGPLAN)30 b(Notices,)i(20,)f (12\(Septem)m(b)s(er)g(1985\),)i(47-53.)275 3218 y([12])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 3328 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 3462 y([13])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 3597 y([14])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 3731 y([15])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: 29 31 29 30 bop 150 -116 a Fs(Concept)31 b(Index)2927 b(29)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(15)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(15)150 1069 y(`)p Fc(\0457bit)p Fd(')8 b Fb(.)14 b(.)e(.)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(.)g(.)h(.)f(.) g(.)h(.)33 b Fd(13)150 1167 y(`)p Fc(\045compare-lengths)p Fd(')10 b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)36 b Fd(14)150 1264 y(`)p Fc(\045compare-strncmp)p Fd(')10 b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)36 b Fd(14)150 1361 y(`)p Fc(\045define)28 b(class-name)p Fd(')14 b Fb(.)g(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fd(13)150 1459 y(`)p Fc(\045define)28 b(hash-function-name)p Fd(')c Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 b Fd(13)150 1556 y(`)p Fc(\045define)28 b(initializer-suffix)p Fd(')c Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) 46 b Fd(13)150 1654 y(`)p Fc(\045define)28 b(lookup-function-name)p Fd(')18 b Fb(.)e(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 b Fd(13)150 1751 y(`)p Fc(\045define)28 b(slot-name)p Fd(')15 b Fb(.)g(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)41 b Fd(13)150 1849 y(`)p Fc(\045define)28 b(string-pool-name)p Fd(')f Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)49 b Fd(14)150 1946 y(`)p Fc(\045define)28 b(word-array-name)p Fd(')7 b Fb(.)15 b(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)32 b Fd(15)150 2044 y(`)p Fc(\045delimiters)p Fd(')17 b Fb(.)f(.)c(.)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(.)43 b Fd(12)150 2141 y(`)p Fc(\045enum)p Fd(')8 b Fb(.)14 b(.)e(.)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(.)g(.)h(.)f(.) g(.)h(.)33 b Fd(14)150 2239 y(`)p Fc(\045global-table)p Fd(')14 b Fb(.)i(.)d(.)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(.)40 b Fd(14)150 2336 y(`)p Fc(\045ignore-case)p Fd(')16 b Fb(.)g(.)c(.)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(.)41 b Fd(13)150 2434 y(`)p Fc(\045includes)p Fd(')23 b Fb(.)12 b(.)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(.)46 b Fd(14)150 2531 y(`)p Fc(\045language)p Fd(')23 b Fb(.)12 b(.)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(.)46 b Fd(13)150 2629 y(`)p Fc(\045null-strings)p Fd(')14 b Fb(.)i(.)d(.)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(.)40 b Fd(15)150 2726 y(`)p Fc(\045omit-struct-type)p Fd(')9 b Fb(.)16 b(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 b Fd(15)150 2824 y(`)p Fc(\045pic)p Fd(')9 b Fb(.)14 b(.)f(.)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(.)g(.)h(.)f(.)g(.)35 b Fd(14)150 2921 y(`)p Fc(\045readonly-tables)p Fd(')10 b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)36 b Fd(14)150 3019 y(`)p Fc(\045struct-type)p Fd(')16 b Fb(.)g(.)c(.)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(.)41 b Fd(12)150 3116 y(`)p Fc(\045switch)p Fd(')25 b Fb(.)13 b(.)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(.)f(.)g(.) h(.)f(.)g(.)49 b Fd(15)150 3394 y Fr(A)150 3528 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(22)150 3819 y Fr(B)150 3953 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 4243 y Fr(C)150 4378 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(21)2025 642 y Fr(D)2025 764 y Fd(Declaration)27 b(section)d Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)49 b Fd(11)2025 855 y(Delimiters)9 b Fb(.)j(.)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(.)f(.)35 b Fd(19)2025 946 y(Duplicates)23 b Fb(.)13 b(.)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(.)f(.)49 b Fd(23)2025 1203 y Fr(F)2025 1325 y Fd(F)-6 b(ormat)22 b Fb(.)13 b(.)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(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fd(11)2025 1416 y(F)-6 b(unctions)25 b(section)18 b Fb(.)13 b(.)f(.)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(.)44 b Fd(11)2025 1660 y Fr(H)2025 1781 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(17)2025 1873 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(17)2025 2117 y Fr(I)2025 2238 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(17)2025 2330 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(20)2025 2573 y Fr(J)2025 2695 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(24)2025 2952 y Fr(K)2025 3073 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 3330 y Fr(M)2025 3452 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 3708 y Fr(N)2025 3830 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(18)2025 4074 y Fr(S)2025 4195 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(20)2025 4287 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 4378 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(18,)27 b(22)p eop %%Page: -1 32 -1 31 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(.)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(Declarations)9 b 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(.)39 b Fs(11)1047 2515 y(3.1.1.1)93 b(User-supplied)28 b Fn(struct)10 b Fl(.)j(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)39 b Fs(12)1047 2624 y(3.1.1.2)93 b(Gp)s(erf)30 b(Declarations)18 b Fl(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)47 b Fs(12)1047 2734 y(3.1.1.3)93 b(C)30 b(Co)s(de)g(Inclusion)d Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)59 b Fs(15)748 2844 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(15)748 2953 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(16)748 3063 y(3.1.4)93 b(Where)30 b(to)h(place)g (directiv)m(es)e(for)i(GNU)g Fn(indent)p Fs(.)17 b Fl(.)c(.)i(.)g(.)g (.)g(.)46 b Fs(16)449 3172 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(17)449 3282 y(3.3)92 b(Use)31 b(of)f(NUL)h(b)m(ytes)22 b Fl(.)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(.)g(.)h(.) f(.)g(.)51 b Fs(18)150 3524 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(19)449 3661 y Fs(4.1)92 b(Sp)s(ecifying)28 b(the)i(Lo)s(cation)h (of)f(the)h(Output)e(File)19 b Fl(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)49 b Fs(19)449 3771 y(4.2)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(19)449 3880 y(4.3)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(19)449 3990 y(4.4)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(20)449 4100 y(4.5)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(23)449 4209 y(4.6)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(25)150 4452 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(26)150 4721 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(27)150 4991 y(7)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(28)150 5261 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(29)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF