[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re- Need Regular Expression



                      Re: Need Regular Expression Parser
Here is one written in C by Henry Spencer.  I have been using it from MCL.  
Please send me a copy if you port it to LISP.

Sheldon Shen
------------------------------------------------------------------------------------



(This file must be converted with BinHex 4.0)

:#h*PCh*PH(!ZFfPd!&0*9%46593K!*!%-Z3!!!&''e*6593K!!%!!$,NFNaKG3+

d!*!$&J*G)#!(FQ9RFQ9iF!#3'+9Z!*!$M`"e!K-#'!#3!`3!N!q'!!!"!2q3"!%

!U'Q,h+KTM!X!N!D%!3#3"M*H!*!+rLd!$3KbC@GPH(!ZD!#3&m5E!*!4&J!!!Km

!N!-@!*!%9%9B9$q3"!%!TTfXaUDGV-B!N!B#@!#3"J%T!!!%UJ#3"MdN83UT%%L

"`CIK$rQa(iE#`)Fpb5!$)S"mQEjqV&JP!3Kbf"rbKC-*Lh#'1q*cBbd!Q2'(!IP

lU&j#HmrY`C`l'-b@!6H*q9PXd*IP#f%hliG)&rPJ4JmC,a*#c!FJ,6Z-I9QJ)i!

K(bpC&YEbmT@i`*E@SC@aX`1!e"3KcQCp*!CKM$J2MKR$!''5Kh%M)!eM0m*XYaM

aQdhL16INACe#Z1$9NT)88Q!1B4m+ZB1!#rY)"d&f-Yp"6V*#(QBhD*@3!!CFH,Z

5(mSTEK$dKABE$4(-41kXEUNpQ[#S"k'S'b%h!6V!`h"C@I`Q1BMk-3-m-)[e"hd

SKck0ED-Q&2VkmAVC9UJL)UQ5*[&N@SMEcqGCQaTQZE'(@C)F3lmhCcfMp$8T&b'

)q0`5!!d0#h*PCf9iF#jXDA0`!*!8Y*)!N"''!!!&X3#3!aB!(!"G9%9B9%0$6$)

"!+I+c$'S(prk!!!#UJ!!!hS!!!'*!!!"Q95T')X!N!BIIa%!#!!m24h1%,S#9"Z

9Uj@)b%KQQRDLIF&faj)plcZ@A"J%b#YS+Kd5pD9(-U-HakiPp3beEYfTYK2c1j!

!SJ26$ZZprlSEiJ&LKMQYlpMcrQ2llA'EXE9#HEJEVRC5jjR5(i%bfAP$(e4J,m2

""D0bY"j'8qEXG,@c8mqaj-4$CcDD1l04%da%S+CpfNKb82"c4P*iVYBm5d5SF"`

Uj*XM[[)%b!d*RTUHQf-hQXh0YfFQ'YF&,d&-i`[c!-4k!BVRbliiJ0`1pm3i8c*

YKU2P1pSX4r-j[0lKUaeqNF-l((k$`prMm$XFrR'(2q$`hhIiTacq1BIrKF1ri[#

[1[aCKrq$"e#K'%#&(6lGi381AqE`XaeHjI"9$Vr)iCXFc[U46)HrhH'riI"h1Ib

3!-2[F2Lp$[q8`apdq*mkr(Q([aJ$RK)Hm*4b10Z,Uqc`q3jIi2"&$PrXm)Vjra9

bblD3!1Xm4k(12iDdkCU8k!4)rN$3qH0!9I!SjI$0jRCiSjR5XdE,3lHQ9V!!!&&

LAcm@)Jb%pF6)PdQ1T5`hpM!Y*%!S%3V&B4r1!1)Jc24lh%%jkmC-b*hPNf2N$S@

$EZb(S6!3jB),%L()HEiY&SZNb9)4!$*Tc-Ra)jm(3j3YP8KiVGMAPb-4d'CN5)4

LVcr-`V"2RT(K#d9![9`QBE`-H4#k[F6TYMKQZ8YHcc)JkK8N80f6$"2Dp+!2+T6

iMM)2YM3Hq014'rPpB5)dcbfH3XLERU90`ekpaCp1p(k!kA!Kl-rblF6i)Ha$'@i

2$i)0T-XDBamE*$M!5d)i#*b+Qj(KbH"#),C@-GCXJH*B)-X&)"D(-I+(-S(@%cr

dXZ9ZVaIj`Z%F!Z`K*2aL1#Y([Ja*6N'l34M+j*H*2@!*Pem-%*22!f"I'2-N0HM

$T!AFYFpr*8#Fj3lij'k%h0P!Z@%#HIeZd*IP#f%jcQE*MMer[a#AYC2TKiJSIU0

50U6`AaT+URlb"EX(8TG2*ZX+iJfP0150h8'1I#'`2SX8R`23k,S$09@qNP%KeJ#

D!"IM$`2b&f9NJ24XN!!D)iIqB+i%fLi"!!d6FQ9RCAK`AfC[FPpXDA0`,Q4[B`#

3$,1E!*!3!Km!!!Qk!*!$&J#3!lT849K82j!%!3#QRDc2TTfXd!#3"JJK!*!'!jN

!!"1V!*!'i``,SJ#!)!1B--,*VFpGRp$)M&0bR&#b%NSSYj8FjC3IS4iMab+F&K9

JpB$a&`!rJ,`i`-GA[R,##IT4#`6`GARPFFS[`L8$6LDES)P63P8JViXX@MB&Zi%

Rah@RT52qVAAX[E+'@KN#1d10$-@'hCJDqbZAT%b`T*9[Tq+@IqN8iQ,kI@AGIAT

@%!,@6)9Y@U@4Z&9K3j1hG$BPHZHC[VS('N+%-SAZ5Slai+C5"VQ@#2!XAE&4TKk

6GI46j`2*XL4*CGFd1`K4CLV%['QY#k6`,bUCDFfeXh4jRB($KUQb@YXY3-k&S2J

hG&NCR8-AUpU-qRIDbT*H2AUdVrD2UqUmj+T2T%(@P@T"jp,9AF-QH"S-IA"JTIa

c00Sc)lXc[H4*LVfJBDS!qp!c)ZC,HK2p2,!G)NBM%Q+jB82$fkZh9qqrQh`c@ej

qI4%6*Med$1UrMF!D1QFm,8P9U3KpPd8K6DaQC6X6QjcH(T2(G$1r*SYAEUXmSf6

JIAFpZb9!heiY&[0[EfMarFebpPk)fGqMS6cpcQJKHYZJ,l4fdQ!pr"LPEU@6!AZ

`hY(UM`('B"j%(KG2dZa#E$b-`2VqP69-0K[FJm$*V2ri*fbVZ)LSK68&5%fN6CJ

()*QrS!"1T)&3cSGa[a0Cc6%LJAX'6MNQ$N9L6j!!%4e9NX%fe&USAq[G)mAUmm'

B9Ura!aLVLfKlP[2%8mc4MFFia8'1cXm19JpPb%@)$&24`haNI[d*jXdr-#,"(04

mT,NidH41("8NX4("G&VhNaIldC2%I[a[(q*GiE#A`!,B-((&hMmhmb9l0)j)dY4

-3mpB")BV2&T0"eM2"a#c%aiI0#k3!!d@Tm$`aC3I"mH3!%Ki&!GRH@5i9XE%"lC

+&T4TZl!IG%"mpRm)aV6fpAU1[lXE2'h0XkP(2"R%55%+peGJ1RB-4M#Z0TlA4P8

+1irQ(eMJ%R)H@0+3!18UTD+HYZ+3!1*KXY$@TjZ29Mpmb*-09YG)VAHRlAl48MQ

X30l2c"E$mhcXAiK80jm0STrMH-[p#f9XH!$$,)4p6jmJYrDNXEpc$T+a2irAL&M

G63#2q`0CR[`'Cq9'SXAl%k#+*FG0'(&TYVLFcdpiD`jECK-p0$6ND6e&@FiQAh`

ilLGNPP`Sp)C+9DX`JULPKCPm!%[3J89UX8,UNbmFh[*R&$@[5lTB6RYaZ(&"dCm

L,0#Q6iKBS@MlK3QbY6baB5Aq!`#3!`d0$R*PCepQEh*IE'PcF#jMF#jNEf-!N!`

ZL`#3%!@a!!!bG!#3!aB!(!%A9%9B9$q3"!%!TTfXZkDG[N8!!!'X!!"aZ!#3!qN

!!#GKUSAlZ3#3"Xb6%3!)(1af#')9`-BT*560P*K)+5,pXL6&D53c$BH**2dmN!"

Id03qrERSNal*M2T5K-F*eC*kKPSiMc9THdpGiGM(hrX11qN#J#h2FeSIcAEFfXD

-%(qC$Xj+b@9@D(FkQjhU@RI#Fc*Q6G&XpNL!#NER@J)8KQ-fIZ19Bq)I+2j"Dk2

R+Y"P6%fGh9N&VjmcNX)KVA)960)cH4bZLM%@9'B*PSPP'S@F%1YX14Fpk'NfLlr

[X02U!C5q)KYRM6*eI206d*RBB2cD2T@kI@lT+&4IAN-Jf08*%'1Q+$8VMjpUY#"

FeEq#"3!!$NjAmS`J!mrAIDVA@hlELA+Id-cb#+F0#,0EH%Hieh*ikYQ&hf`pV`9

r(A[jf8,3MeDJklX'AHI9T-[&*iZCC'GNNeq1$"Bb@3JR#b98J5G1!#jF@Jf#i'l

DLrYae!Z16S)(d56+JLr$E"bN5I#V5apGqQ`cb00JFKa1JL`D4#r(Sh$52@keJh#

BTaF#$T!!4C0TPZ4S%JAM0)mR-AV(LAc2*eQF$,3r[f1!,-TcGT!!3D,HKJkaGa`

QJ`K$K)1"lU,ji1DA69CVJcY*X$XF4S-X$IE5d3J$(-6j1(L"'G2TX"Gd`q(`G%9

jd%q(`r4&IX@2%35YI[p+,qVhdbb+"dQ`8[B-VS6CB$U+NNNHV,4dGfMEi*rdYRh

1DPTj2"S2SdkBCH&*d)pI*Y04Zphf)pq+XjcA`b["DTq(`fN8(%GCK#2TaGe`JVA

(ICi(5PjJDD(H4T!!CN'56RCdLMcUTSRV(V2*--CBFPR&(280TM+8$P-F%KD'p8m

61jD1P&m2@Q1HD*42Z$KGE0!D4T1JeI)$Y8EK-lIRE6X#Y,N5$5-H6@Gb-Sk#&Ef

!XMa1d$iFGUa0X+RAd3KD@([VDV!9Y+SMG)[`Ll4ZXK(C2rD-hA$pV6#,qXA'0k@

6(HDmGXY0cEmN(ZT(UEPd3D(`F"J2MLI$Nf$N-"%S%8acALV2E8aF1X$q6i,Ed`4

3Z4lF1lK,U0bqp"QKdU!Uk'B4cV'()kd@Lk2VbLTH(-IiI*41MUd6cKQh(Ef-ZP0

me#PFlf#FTB-X(%N,Kl8KMJDVfH4CBh[F(lZLBcFGMDd9ZNIGS02KThakj+Zb$+e

a(%%dc+-AK"d&KmCH1Ml*H!*"UpX1YMllp'-Zr(%52imbA0%*%H94QUA**1AJMDq

bH$+*%MDj(5@iLX0aP(5ME#-)lU@6S"GPk)`MbY)4cUFE*6QqjQPrmJ,6'b)e(N6

C+&C+!&M$TR&B[@#5BPdRD4,a#bp`FSaUee[Z%[AX2jjQZ2')9iL+J2[(%@9"IT*

2SY'kE"dcC&%2J*(&4bJ1iJQ@%NA$Nh91J0[iEG3&k*!!k(!fFJE5&P!9G*5EG45

LXE842%+6F$SjaJk`%d!d'ih4)ciDkQSi"Z!kMrjjbS2)H6KFBYSAI+ThZBi*L0(

FfA(k)JKIp+I$p5"kMX05@R##Biec(QQM)EF%r-Dq`"V3BH,ZD&XANq+!85IBAeh

-D!Uij+k1m#h1XiK%$'JFp6"V62)Kmq'8J6Ni9Ta)GaM')m)-LP+l86IYj3h3-Db

-K)EJJ'AVL"K[M,i*866-RK%%XB9TpeJ[dDe"KceG"AXG4FSBh5V$i5PN"$FL@DP

`Rc`GmDjdfpfd*q3)&ddB$k@0dD!A)#hT1-V#5FT9!eDMEY6MH8V(56EY!PZa!e`

28()k$,15VZE!Y%2J@6V&P-C9im3`Pldk*EA06j**q"+l*C4Q!)%BD`L",a-X%a"

q(#I2&,Pr%5IGi44,qcbIp1*dirKD8G*8r0miEXjU4Z%JlV,+3*pAhia*4hJV!M1

i[LDBD$6X#8Li336dlGL)GZ-`Chdr&BMQ,%62'##'BQ-MHQ@iQe%-a&%1ViAMij!

!Z!aS"CNFTUMZKi$F$10c&'A&i19ja12"PSKMND2Lj#56-*XdF%d%6!aTq%(i-JU

m%k`mf9`K$#DN!ZR4FakJY3q6lR%$TqXj,J#Q#e$'#EF`M3b5!%XkDEmcM0NHCp'

qEYdjE-2N#6"FZ4rF!Up#q9EEPL+6b@VX#0F*LIFH(abi5BC4dX$r!HJFX-CQ+k3

#YRPSfhBFM*ZbSb*q3ME!k3$AZl&#+8&N'Np#%JTTc$A*PQ6l3Rpd0HX"MP(+HqN

,&9eHT0NcP1-NFAHBA0EK,PJ'c5)5(Nc+BE!cRJF2#I[ZKJPC!LJ9k3a"R1U"h+p

I,GNj1#M!T*[Q"0SS5DH$B`lMP#)##55BI$S'Q5#rpFejK8CXJQ`MfL"4QS!`N!#

VM!3EH64B!*JPC311pa+m-JHAP--f!&YAMX"T5#p)!(J%8,#kC")!"U`f#pBiM+P

2HS,'"cMlZP&a,"hAr6`GBN3j($Bj#V[2TZ1fh4!1($-*X1P1)9*&h9#T+Ij6X("

3'h@aqL5+L,lqj1dLK+@3!+,DRUA"#FL*8AR&p%0(4q6863KS'M)ej4`a#2k"FIJ

cS5584+3Y#BL3!-f(4BC%6ai'%#!"#Bkli!E3C+)1$J*!2JUlZ"dHel23F4HL-Qj

FU9)c#q0KPSBp$*+03$+`P&'6kak(i(kNDe(h1%Q(kH#%pl+2JG"+Z4K1+af6Q-P

9$m'I`U#C4#mR638dULJHEE5H(8(8NKjQDGkV@T&*bd&$l11!1)#Ah@Jm#@imh,f

hGcX3cL%L%e#&NPJ5%ZCfcQB1AS$cbL5Z05"A&*NS`GRLDR#BFUY*3UMNMPp!Nb$

Rj8c2KG5dESYQ*kXp$J%H`P)8Ai5$iUIH8bm#K*&Y!Jb[30`Kh[6Ljh&[LR1b$E4

#`CGd6$e$*4$-$p&6951G#lb%SJ2NJDcF-GTaSB35Mk!1RY$AmGk5p'kd&G2YdYK

&U$3e20QrhDrHb""SNC'*#kRC%96#XH!Jeqe3#$*S1)a#)Smb+D$*p+Kckr!Z6Z@

1F!hJ"H#(I0RJZjMH(k)$$YEh46Z9#MZV)r46160ShEZKY*pB$p,#48dJka4N(TF

Qi!ciQ[9hGbhV0Ge(#85KrXJ43`"&Bpd-6YiI$3&0+"$jV1U(8'9%k8b6"[62SbK

VT11NGldaLN,58+(ldL0Ul0qlfGKXS'H50[CerBEY'e@E'rF2'P[@jUl`d'D6A-C

6@mIGkUllk,Upl!VmHGe[ppj['TIVIY64L'3N!5(B&!5p@ErlYaUrBNFF@YR5Ye2

eAe89E1Qdqih(MaSIrDip#HL2)qJe0Ml@RI8LQd(DP3!Y2*e(61$If*L0X,[hCH1

6qC'XHii`!9)+f4B5#"8*6+5kX&r[lMdkq%hMdpN5hqhVh[e(YqrFqk,a@6e[0"T

$89ff1hbdql#aCI!`fkjC$5K0m2ShZH%4&)pJ%Sp)5-ST(K`m2QaX'AVm0)8Sb@q

RZ2pJrejMfd(9A3Kk1S*FKqL2#DLX5(b1@rmLN3QJ`PpDPIjV@m*B""+$,DL0Nfi

pipl"rF2paQ8hj#j8V(4!R3fic2l56'RaIF&GiJ0BP"-$&3d)biE@#['!CdU`NhJ

LA*YN"$qT5"fRd+*&[MK18bL8UXQQ!iJ24J`*'h%fTibJ1TJ!R8[P%*qJd`U0D$3

Fq6)*XfCRUQGAT-q)M"!+D6mRU-CAKY4V(,ZP-'EV-ha5lZ*8j62qmZ)ip4X[931

DGe",mZUkia5aP-81)R,jXlACq$Y5,[fY6Q!JpdIN#CkMF$A,mhSZdEKa6l@&qG%

*e5GH8C+Q3L$)!rj*90k4eM*rp",+KY`$65V3F0*a`3-*@+)`q*%*XZZ#N5[A9e5

DTL`cM&i'+kXVmRePMB@dk6K433AUET`*Jj@aEC[PT&-44,JA5XDP#"UdDNiPlA%

GUV$"V65I9%k)Dj*PF&A#Z[-aG#@$'i%9DMUMq&ZUFpdTe"LS%&"4+&#lA40%ea9

P3B-iTi)aedQKa#4IJ(qY3Hek*ZlfTP+#3,$#M$Ue+)b`A'5$fIN+6cq9F,L"('U

%RK1lIpSjJSS`MS'V30PMk1EJ*,#2+2rh'&QjRp6A3mQPhbIZLc&#%8F@C2!T+c5

&8A3*m8X%ZejLJRi"9%T1#1ki2LLaDKRch5Rc`-eL3[L)8U21TRSjaKY%#H89DM6

2%VB1Me+3!#+9*JbjF*e$DC%Iaq-0C`jlV1)C,Z$SK#iJjafC`c$QH%iDN!"#p(N

@!`rCC`6T94PF6KG,!'-,XC,c`d&&&LaS#&B6(-8$J40Z"5iB8HN&(5ULeaUh'ke

9r'SAa(AreiqNV)9#I&MEDPrF[2c**qh22rqd(D`&@V4Y449T"#VHe-jM0VVFpX)

Qj*R#`k!k%Y#P2mf%I%'P0+h'ZCimXMUVNmlaH"*$NcST44Hhd,J2RDdIl0hHIAM

McU0$[jA(V0LeIH+ZfUZY+86P!6ej!QkVE9dqA9'rkcTZAh6$X4ZS8Iq#lhGVpmj

"Dp4ZI1HG9[LkBlkY&Pd$q2UpEhIRm1lMJdG`@f%k@+kZAKAfmHU9',$iGDhqHRf

PZ,+lqipf'me[IVRaGD[pk[VDkT-RhK&bDaJ1j2KTaS((!aZHULQ-(S(CiGrH2Ic

UcXe(YaZESK9m#3",6&i8,NA9)*N#Fmk9LMYh(acX0aUE)MFCee%[J%e2rR**Z)Y

AG+[q$eMr#!1)QR4BFNI9lZYZAperH-KHE2995Pf3!,4+@YMH[aLQ4f#3!1*rH!l

2&1d6#UTHIpIP8rH'#UjRMeV+f0%1&3[SP"!d1MNG!Bl$P"h*2G%[380Y"d@rQm)

,@$@4XG#P0af06RE1KL9Rd1Clq0+*k!'a8AH#Lkj[F"A(QUc8J`e6-D80FY#pBJ)

3PfrV-lLPj*Kf%Y"8C4fc+eM"pbbQdMd$6CcMScYlP4+&ch$*F(S(G9T8V,29hMQ

V86(J[&)ihRNKj1R4H4dTf1Xk-+5blRNDUmYL@30[5C5G0b2A@*DPBeH)Zp#cH,K

hq1#Hkd-3!"Tfmh%L6B`#L!KFqMf[#&qMI%&[XQJccJ#URNh-FD(Xem)(X&#"@E&

%U2ReJUiFa6[f59[XX(rJqhbprA5(cYB,hehJ6kRPRicfMrdKq['ccSX2Z+%Gl%"

V!$B1'e#0R8UGEkhPiQZKAe(RGehm!MDI5Tr10G'!a[cHX9ikZqqdj6VKFU428(D

59R4RYVJB0k84U()RV2cH@9r&imVpiBX60-4b0,IaU5r"QqA-PN,3r)SU$I"@1$4

e1bJY)A3fB$X)+@cQT2CLd#5E9S1Rc#NQi4&B#`lp+2*8("ee(VF1S(a,**YM5*[

e-'+JD2Y*9b"U$+#!KfUBi4,S5K0&J91,*(%)r3iIMq%HKXQ"RiSa*bqJpN(pTN!

TC-UjEdUK`XcS%%q%&j*#+*%43F++%aA'C*!!TK+)F#LHI&8548DN[F'mBeL$F*E

h0b6+$ee0,K"!,@2UY482Njb4fb9mA4#%F[KKiG599@!'jDELYL&""FE@BS`r-IL

j`Q(FiaDmmU6A6d'TP(4`-A!b'Q&96bFP#@%UhN3MJ06f&PFajU%MbcJ!GZG&RFU

GUS)8T,Ai@lQl$S!)h&&[82B&69Gdf%SjSK(([&X@SQ"Q-#[`b'2'6Z&`KZbVr1#

4[#)2heeSN!!-L8A60FYfbL*M&i#Y44@T*baZ95%T"Paa+1'A2M8(I!-Y!lCD9qL

j!!+5*$5"ejmc3mF3'331!4&,Q[`+C0$JKDEd!T(5e!5U&eI%e%I[QP,GG8`p`'P

26Y4Si2Jl1)AXQ38Nk2LqT9m&hDi'Q`Ik@HlZDN'eVDTeGrH,1hZBAeC&CVZj(Pb

8[BVkiVC@DcQkV%-ZfLNI"%T$("MXdL`FL!**R`#ZrVVXc#D8a9bl'PcHrZ6M6`l

D3ZNIC"!ak)8$(#2A!Q$cm8FIAIlS`&`9HM0f[j-8S"82r0%J)D2%A6X2V0Vb&5"

af89bm,4[C96S["E@YVAi1eJF,#'+GM(1k%Fre(`+29M40*5Tr2P#l55ccMA6rAi

1i#C[JPPa8r3h`eJJL#YbB`R(DRCTB'aR4mB5D$RHm5*6Kb)6CFC`1Tc8rF6[!&6

KUU4!b)(ZT+LKEe5EL+C8lAKY#b*1JA9U*G!*Z@e)XNlRB1Zf,"c1XAE`RA5p6qZ

V*L5-1d1`)K!R-hS)8YLm6Sf9'AJEAQUM0pSCHIUTGEA*TCX-V&iR(YRm6PERNm'

$!H@8FRSp!%aXCA-HcGUDV3%r`(,Z@2B*4#R[!#iY[jBNShCGb&+NGj&f0P)bGbH

@C[*`2+BI9S)(k!SK1AE0l@$&hTZ,mhG#Sc,'lBI2L41`bJ&+iEL3!+QFqdHEbdE

F+B#&Gjq*kPJDAfU2RPZJ0ZFk-')X4XRHP!B"K5G-+MCbE&k(%X&9XM4#EBd1UJ'

'1GNjKBCmfZr$B8$2Uje+H!42-,JV"PH2TXlYVP[3mk*TV`!6(UHl*)pH+2(!"A-

3lU'e%`LLI'!pp+XS3b9'XGXl$!NZAZ3#-4LU5qKSN`+KbRC4EH--B[aLAJqL(Ei

[i-BJZ@#[[P#R82l+MT!!NKb,b$!(2RYG5Ar0P56i4QKH(m&A!Yp`$dJ-eJIHRq$

Lb*m)8iArI`qdLeBI!D@M2-f1+)J,2"40[@%(!8G(DPFTLb&5*$f4%3Z-)694j0I

JJIQ11)ZBCB"JIBdQJA&0B810NHT-!r"jRkbBH!UM,'-"D"8,QGMK[6%%8r'fJqA

,"!*R5ffGBJ55KE"%B$G`"iS%qBC8'2Pj8"f0X'0f@*9Z-p(#DEqe#U&&4dXKJhl

VZX`Q6p+CC('KSF-#$T`C3ZMI)ka&M+4$&4U%9GiPM3$Zd9-PpL$a$p@(Ac!i+90

8-rSUV"GSGqr`mBhpAcm3Z&4565SrSN@`e5DRKM@-Qc*ma6H@f#Ib*k'm9Nf&R2Y

BNjCXrVe%qrJQLZQb[`FaU!V-)0@&3e""))PC"Q'L-LHNl['),,f3!250HaXKCr%

l%QiVRcM#S"e8FdFC8!Ji+cb@Tp5jjVaH(,VHRY`fKrR!U)Zl8Q%EGVXAV`EriUr

AAr5VUhVNMZfJ%S%23-+@Ghf)VqE9LPkT+p),HlrkjHj2PrpQeHB@a,)VX[r$FYp

ZpmIeNXCiQ%+#$b4hh,8#&ANR(Dm%ENV!c()a4dj$`,,%%iGGe`-a$LUd"&G%IpK

T#+J@kjAQ6RHjc3PrBK2mAQe'0b!FddjZXS1'"G0dKbJm%lGN8')qM50N#G3Ef"-

qcRNJY0"KUHUKF1`j1*15HLKB@q2)+fd$!mAPD@*"G3kB&9Y&j[KJ-B0-!!'T32d

CdVMKhNeA3,Geq1ddHFCVaBE4J1YYlSQ[i*ML4S)X%)%3e-&QrR"rGqrfrNdTU3K

Y0*P6@R2VGN3r+MhcBY&0JPG98K+*haeR6&9IC"fZiAZpjAm'RbApqcZj`kriA*,

'"S66[q&bBKG6Pp5#bFh)Ni)acdp',953!$1bB0Hp12PAbaThklSSR9Ip6h-Ui4V

m5#G1%EpL!ac"&QF6P!)kjh@'r"pSJf0F(YGP(K"$fBaX`*f'2cZ)*QmQ2k$h'NF

II"XKVE%)&@Jd@T3*f[lZ,"K"F2Xp9+N2!riJV`e@hQ2Rk`kqAPflrY63U["f&04

$(IPdbrP30[Jk01([ZVP'R*@AMLdBYXf#SB,GQTTAX!5+)8j&MRSD-A*L'AAS%#*

%a4DVlQ00GC&X'D0F%S`'Fl1kI4%dB(!XNBCZ&5SUP5%!CI,*(HLE%Lk@4b6XZQR

*SK1hXrN'B2@PL1Umj23I`)8-*ihT2jbNf%E'T!#ICpHE*MdNmEf&G%@ardAde$`

!94pbZe-XpbJYjX#Cp##e2aJ!J%"3U,fe8hYqB(EE&$jI3@C2&QaN2iI#N!"`U0I

NR'#2%BRbp13kXVDkjJ-2r"9+cSG`1cmY&L#Yed!3N!#m+8cPP4GNVlJ+2kfcch#

TkK$'q%l(&3qZSm4QGH3Nkq64(0[69GpHP`qNhUG2ib8!$Z%%,bqqDM-2LfDNLqE

UDZE4X1mSCM'HmL8E8&@mIBN3$&lk9NE144r`2!ZK#""TT5&[4%)DhM6dJc'!aIG

BMU68cBB#S2l3bV%0kd96XfkfC24f)R"Grrl#k'PqIf'mkrV#3"lbi'AV$aG'$&c

5d[V#&[YPelRN9*kE2bD-)2Hf1#J1m2-(&`@8R*d%1"G"jeAlIm$P,cJ`2bM20qI

VqZ'H+P"bGH#pY8l),4Zam)4$d%)j!C,e'1HaHRe0[9,[L5j*$Vi)h`1pTDq&dVi

,m5KY5q#FJr4)c1eJfFVV2+m9fdF'EdQ)@%'I0N*[M4"&bjbMGi0l8-RATA9T3)k

UKCU-ad3MHXBd$N"51`MGR-,5(M8!%MD9'`#@(%b9DPBjY`605NJE$9H3!1SB+!0

E*4*&QFV$5A,e41VN1plQ+X0,U)!&4$,#Nl`KRX!V4*i+c`f),3+(-FTEULV8m6q

CkRq,56RS0ACDA2rDQS#G1-G@[PQjFUE@da1P#R-82X-(lI6,C5H%H5dlE5`l)9K

VVK3jr[K+'FaLM+pAVUJB@9XN%"U3!!XAATC",K$[eP,Cr)B)VjN%2S52VK4QT6S

"DV%bC)'CDfHQ[CFkk+,Tr9[DFl'%Ta+A-D[T#%'A!E[eMFS-IjAiRMVTGMNhCV6

DdchqC8[8M,@I,SSMf3$#T@bkKT`KcX%&NlJK1YZ)Cl''fS4jEiXqELM9lQ5BDrk

f%I"Le8CHc%3GI2e8$eNeD[kC*8`Rq2aU!3rk"HIP*T&e5T&[IRBMBYQUE[lYY8S

I[3mHc")&l&*PL&10rHZRYVrjr$p"*NHH`@CVKViYC*V0"Gfj129(0EG9c'dUd!+

XX@q-VGpH&CrDXJahV5i%1"ZE@H!3BD8Z64*L&-cXP!eKLN5#U6PmjR0H,fCE+ck

YPQ-LE-Bl`F$#++hUAFdApN4k,Z$23Ce1-f'i++NJ!Qb-GYF%b2bR4XJAQ$"$Jhp

R2qEQ25FrCJLFFd1cNPA3dHQ8,NQA"Z++e`1Qma6`a#l!5-669p"UaqS5Q3bER"0

Re8qcK[Dc@DiKY!rma&3(k@M@5e4M-d*8bFFPi+',8%laXr*`UabHep"A$iTc08T

30#VZkFG6GEa+YlATf0%E9,HY[3Ai#S"r-V@)qYe4mlR'N5iN!4@8$ZL5GfiJYck

S`KUA3(Rk2k`T5)UXK@V*pUN&DTmbi"eQB[TIJqRrMGk-NF`$"Id"(q&+ZUU+ZIq

U$RAar$#CD4kj*TFpke9jl)Z9[ENL["K!6iL[-i$(#"BU*#P0%"FC5NSCJF3#4Ia

YdGBKZ41Y)lZK)cNKFch+j#"Qa5d3UDe3YS4fKHP2,S68V&U,US2iCKpF5$"6EHR

CjUX%Z*T`#+MSR8LX%R8h`cY6dHk+k!SAK!#!bjNh5$cIU)Q5+C*jQ1CD)S3#!)[

1d5,2ZJZdk-d#0!a#Q2$L&(jrT[m"()BCQ,E'(cH'0F2FGEPK-lYHXlAL(MXGlB-

2XMe!%9FMk)-PDqE!f+Z$9,'Gf8'F0-)`(IU`Fi9FrV[Kd9P&GHZ5!3I($a$8jEG

U8!'1aMdN`i8'Uq@&(U6cmq8N,G`Z9!bAKH*2&c@[,rGerJQHNP#E9XJ90AR3RDl

Sh$A#Z41e2"-D(ZMM+5b2jU$RB#URl1LYFpK6Clf6&V5fe"BF0A,6f+DFGD@1BU!

K!*edFH5YE0RKG46ikiY4a528FeL9+D!2LAe&@PblpUNQraAPfbcADUZXcPV&p2,

%RAG3EeQcRPd3c!lZC%`(JA@!f%dIeGQ&ke"rZ((D*ZmAJb!2'6-heBDMeJ'88%3

r396kbBMTXd`hTiEY!cAmN8YJ$35mfF@c3P)8LjNU%2!HJb)G89IQEm6#`r"N#bl

(mYQU3-kIiZddGIj0[*f%p#U!)eLHX4p5F4j`jhXHT82YH+-+XT!![V$bBqC[0+*

LdCcG03*-&+J("YaL(f!9$Jd2#(R6&bY(9ie[QD!M"fA0-Yl1SZ[+6$CH@(C5"VT

CNEd(jE3-58a)cf+GbhQlZArMm4IL%L$dFNfJZj+"iD,KF1Q)ce['fS%P9eP`([2

NRM[ZI3SZGbNFm-%$9#Rm+a%NpN"$R($)Q!FCF&VF&KjDacDaI+FSQmA#,5R0D5i

6@R@2-eQpRMJ6$-)%5lDFE!8l6&RKR3lSbBHMTCTbU6&1(!-f65GQQFL`kE30Emi

@9GPH&&)PRm[F2R-6K6iX4f"9di$QJhI6,*Z1bI@YeI[CAG+-KQ)dbiLBTXrGJdG

+[H1-#DXZSFJ6FB%'XJGUmHlb[1V9XLSH'5`[GA[NhF&p@-mJ-k*GdJ@kR2DV2NY

)#Zl2K%5PIX)Z%Ge'Aib6pD#r1qP-CU[pZFb6X8FdZ(l,Bj'`ll1NHB0qRqX%QP!

HJ$6@(&#,jj5h$YLV,#a-P+%MN!#Ld9)bjL6%U1CBEYeXA(Sl$GjVD(3)GKHN$Qi

R$-cA&8b6fFc'YUY,V3I9'"rRh&HA'[)!*D42h,k#QT!!a1aK&qa'5keGcqq2A[U

p2[RC4Nh"Y@e[U64D(,,4Fef0aZcKD5q9BGR@d8[r0Z(h0(U*!`DMqKY`SJ8)+k0

hlGSp4Y4L$@aQF+hKPj%FA-JB$pP!+*%5c)U5iV-UX*Z`MmPXkj!!XLhRcm6BXb2

hdAC+HhjJ1a*PYG"Z9[1PhhJe3T&@#4FZXF(c9a6T&4ZGP9,589mSI"9Mi'NiClf

LdcBUmX5SX[LAR5#Q1)kIRBiCN[1aD')ZK3PEUVkEjGjcfTSK`D+10ql)'08Q0*H

cS#M&4PaLTqN$"G)+-P3C-ZGhVpG1DJZP4$j+M#-Led!6I*!!%C!!I6a"EMa3hU)

-`DN(#-*heMl!YHCR84p!Q#+%46&lXK[bc*QV`dP%jT-TQ9FMMcfLFlB)2HH!L`R

iJK[IPR1BZaj"qRM`6GJ&Gf3+&kemI''5%hbB-bQ"BI)N#RNXNMbB4@+19+Q4X58

'5Pl"BDqDB#6"!+"(B4QRJ$6!T[0L0Zh"'Lfa-JU!bf)YJmR)aRaee411"$%4d-F

Cq8J4bQ-3%D"ffk-i81Ih8JY"Id,G!P#mL#CSqeBJ&5U[jeN+QU@9AqCPm(YCrPk

$F%+S6&b,-8TIbp`aqPi+GBD%TJpr3M,TJd$$"S-XQ1D(HHY*JYFm1&h'CB1C112

Plh)U`ZCXETrB9!ak2LRdNTpQV5c)TCD,3ZFDG3+Y)VGBTf!2TA2+V8!*#MDPI,X

QFF,B5a&BqX-dk[YlrDrLYrrD(Jl,CI[DT$KVlhUBR@kq$(8&QGRUMG[U&',895'

9r23Q#%l#ZN@6+&i+iRh(UP(+B`Qmq96f+I2J&2aLcDFifqJXC)ipV@lZ`(+L$6X

)#*K!+N)0TM5KjR3kIe3`D,JE%1I6f5(H[rA$+CSQ4a5Ycf1pA'jY&IMEfDShprq

',k1rrQYi-qV,p,0+@KL@CIV1$"B@RlGRRbr22[pUp[QMfHH2CjmrQAhqG2EjXpI

B*M&c#fM,%9aXd#EaEYkIdC&KY#HEe06FBipRDT*'i%h(NU@*2l$!Qb)0dF*K)JE

D#Sf90%[IKXrGXGK*&c2-j"UIC)Ii'pI+,&9-5@D5T"3TSVU9Q0+3!+33&+U69pY

5@B`KZIi+%dhSQTYr+kKB)U1'NK8(Vpq,LpI[aFRVpq,QpAYap2UpZ(VpATbpILr

ZAVrrI-$Kbc3r,h$jSP(p,-,GLiVdjZU,dTm2Z(Ree*bGh0PeQHY*cU6diUJJ`CG

UP"Qj2%BPk$1#b9klC[T`LSVV@0RaRGCkIVQ&cGkIEMfNUE',UbMjBAdm2N(ie"F

QPl480FK3DrqAccPEFY*PK*bl`q8adUAZdC!!B6K[lT*l`M1ZrJk5Cpd3&@,(EA!

(G%,+f,-3qIG&rLKYL(4hH5'D9MLmcF8D3Pc$dpY1CAepF3l55#$0F9Z+G'lpZVr

#YRJ+,r1!j,+K6dIfF6+0"YD)bYU5acYL#03QBTmX[Z%eN!#i+&!c,Ch(hKS!S"-

#4M&U54(SI*&%EQC5d6q'eaG"X#rm)VT@Ylb#iGHdAmXGDLdjb6XmNe!3M%jk!P@

Q&mXAZ"FNLfLUlLipRp4mi'FB#(AEBBD'4Ib4,b#U8T5#BKXDL##Uj`FfXQrT-J'

dSr-@M5)mM)G4l')a!J[`!4+[j60DCaa+@k#CZQNZ%)$Jfq"V603j@lb#5j+[NHX

mCB`GMN,I@)AbTPXMRPS&&,2BD4pQk9i%"X4bETb&)mTH2L"VHb[N+k6)0hk)HZl

9AfANRQVe9,M'P-,jFJ@'eFj&CZV)"P$qk3&c,ldNbI#G#5ijr8rQ@bF(&[c()H0

F(H66*5TKeA,H+PA6$@r5RZG3-K[N1+Nr#l0`)QEKpP%K%DJS1c1XPHDQD,'XF'(

9dhKGcmhL5*X,RM&K699&'h"Q(rVVT+ELr@h8fZ(hEk-kl&5,q$(5mN1q!9"#VrQ

HZM*&`%+6+Sce34KpF)3TJd[+-ph8h&baNb&A#)qm`8[ijVNP'XMPbB*!L%Fl'H3

d+)+8[`-HS[lrddF2kI-'hL9)5&i%k6FJlY6+[m#k2h[%bpa#jlkfYpHB9Ff9QD*

mfY8i+Ec(TF[EQScarMNfGd&eCH@DVm4ee2D(p`EAiSL`3Vkf3hjkBbZIKJK)kHR

$#f$c(%cTc*(6MCKVljj)b0IQA4*E,Bq)3b"fh4ZpN!"3mFE&HTSML8-aD&E**X-

lJM)'Rm('h3&c3JY[99bQ6EicT+KCX(LT!De94@k#fXEY*3DBqLXTXi5bR05@Ni[

AAaj9C*CDcD3NqGGmEr@50$rFlRfB`d'5GiTj5cm*)qeN4["%aLk%MV1I'NYm3S!

@1VqRYq%Jpm2aE$FkU+#LV8KDGH@([6CfdUU@dPk6d6TFL4KIA44&%I-Ra)DkJIm

-pP&mGe+*mJSXjU"qZ)&,PCKl8cecQ@8VBeP6m,``3k8*$@D@9$'JY-#k4LY2%SQ

8-BIVEBK(mXBNH5HKZ0Za$P#0`SYD[ALKp-qi-p(#IrU`Za,3!e3dmbQPYC(9YIA

Z9,QqSNrY,Lll5CfmH13*,%G2q&+aSL&(F)eJ46T0c`@)i)XdN!"(LrMA0RS0f,r

1lMcSP4MNJh(!HFq"'8Af4K`Y1*Vf[rjSmbQ*L3Aq%PV(*bd8`M4e4A-35jVZmPJ

Vma1aXSP[c38A,a[Jfk+"-AeTJ'q['bMrGLhZhhVGa+Lcki,2LcDQ5[Z0bHIPdJS

"34HRhaH05ZZ,0,,[bm(0#D0Miq0bD&A!G'$)5'F0['eQjTUCQ@CQRTQCC@EQQ*N

CCQCqQFSZ3rCJN!!&5&Jc+3DIi"jUXXH(28#F!N1(hj8`PElBHSZ&'@6Z"CPE3HC

1N!#j%@6Z!jRE31BZN!$D"2,61U9*Y8mTq0H&1R&G$TFI&jFVNVYV`BpeLe,-2&F

&&I&RQ@eQ,4CUkrK(LGk3!23%[8@4-2f!'bEEU%)[p$QDa528q&Di,-AEd5aU'ir

3`[E'8FUR3Z&eDM$#5T+RX"[rU#*lKSf'BqmKH!$CeiJ,m1r)c2'8,5MC9&-CF+C

pN!"Uc9G*bLZRCQq*e&I9a-L8!89('*Um3K*EJ1)DGcZp9#c-rZePT6Q'ZfVa1@*

$5Thd&q!Y1R)3TGHC,l2JXdAK,T!!L53!&4-m"XZ+,%&lrT!!*,d8@cISQ6aVT(K

#TMfB&PDHJB[4c,IN0A0m[5-QGe(HPP"HTUhbPZ3TC$NID)[-P&+GGHH9)l!`hhD

F,SHbB9qfhpPplC8ZTfASYe4f5HiUL9GFlc)&#M#YMH6iY$iNC-Xb8iYZfqbfEGf

fI6G*X)!RRJrrXIGXQ8iJ0N@Edf6CE4G$14F$+e&6e-1j91J3cHP6LU#j2aRHLCh

drX1(Zrq!3$q)53UcUQ&G#968%5Z`U'jRjQ&Ye,VF,R[a'A-6-8lB#KDZR1m[r$m

K)3GbC@GbCAK`!*!GM`"e!K-#'!#3!`%!!!Qk!*!(&J#3!iB!!!%!rj!%!3#SDB[

FU'Q-#`#3"S3"!*!'-Hi!N!Vf*3`0!!!"!*!$!43!N!-8!*!$-R-JCA4M,L"QEh)

JFQ9RCAK`+$-T)(*[GA4TEQ9c,JdJ#h*PCh*PH(!ZFfPd!J#3!e0*9%46593K!*!

+8dP84&0*9#%!N"LSDBdD!!!bj!!!!8CZEh3JG'KP)&0jFh4PE5"@)'pZC5i0)#S

[$50NC@CTEQ8J6P093N9B8#!J-6!0G(P`C@4PCL"cG(*eBh3JFQ9RCAK`)(X0#@0

SBA)J+R0dBA*dF&Y18e9#49K3A6X0#@0SBA)J+Q9ZC("E6P093N9B8&dl$3PMD'&

b)(*PCh0dBA*d!*!$%!!V!!8"'!(k!*!'!`#3!`%!N!-"&!#3!a3!N!-b!NhTl!D

H!*!$(!!b!!"6CA4R!*!$#J!!rrm!N!3#6M#)%V):