Reply-To: Stuart Cheshire Subject: Thread Manager Utility source code Date: Sat, 19 Mar 1994 17:33:35 -0800 From: Stuart Cheshire Resent-To: macgifts@sumex-aim.stanford.edu // StuUsThreadUtils // // (C) 6th March 1994 Stuart Cheshire // StuUsThreadUtils is an ongoing development to make useful ThreadManager routines available to the public. I wrote it because Apple's Thread Manager is a great step forward to helping more developers create multi-threaded applications, with all the benefits that can bring to us end-users, so I'm very happy about it. However, the facilities provided by Apple's Thread Manager are very raw and minimal, and the supplimentary routines provided in Apple's ThreadUtils leave much to be desired, and are more likely to put people off thread programming than encourage them. Because of this, I wrote my own ThreadUtils. They are simple, elegant, and efficient, and should make people's lives much easier when they are trying to write threaded code. There are three files in this package (so far): // ThreadSynch.c/h // This file defines thread synchronization primitives: // Semaphores, Mutual exclusion locks, and Condition variables. // Pipeline.c/h // An example of a library using mutual exclusion locks, and condition // variables to implement a producers/consumers pipeline // test.c // Example code to use the above files. Stuart Cheshire * WWW * Stanford Distributed Systems Group Research Assistant * Escondido Village Resident Computer Coordinator * Macintosh Programmer (This file must be converted with BinHex 4.0) :%e0dGA08D(*PB@49G'PXFbjMF(3!8%&$9%033e3!!!!!2S!!!!!!*#F"!Cl$!!! mjRP(Ch#)KSKf!)!)!!#!L)!!3!#!!(#!F)F!J!!!!!F!!)F(KS"h#(8!B(Gi!)! !!!!&GQ4RC!#'4A"99SKh!!J!#)!!!!!!!!!!J!!!!!!!!!!!!!!(J!!!F!L!!!! !!!!!!!!!!)!!J)J!!)!!!!!!!!!!!!!!#!#!"`!"-`!d!!3$%c-`K$@3!#F3&3* kj8c4c9heajY@I2+h&Ke8ZRcdPQMPd9famhHimHpkUXIRTCI,"$"$PaqlPpQp`F8 2Rp1imGiH[XrArK$Br*([VK`lQj'QV6c5YMCRMPpmj8[ZMmEChcTcaR5qb0qLGcT Yb5dep'Lbf8G1UqA6YV2VYZ0h4APPGZiX2bMNRd5iTdPZiX8ZQq9Y)r#bHD,M($5 Gqd`f*R1#''UbPH@`VhMl80Jf2Ie[lJp,#1[XrRY$Hb[4IeBAIMbq,pJVb3p%)9C 16M"RGerm,ZhGppR`EpXUlcamh9(IUVZ+EpJ!!'X!!!!!!!!'!!!!!!!!!!!!3!! !!(J!H'F)!*!!N!!)J*!!N!#BP`N!Q!!(!*!!#*N!!!!!!!4P8fC8"d99B%9&CSD 3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#!i !!54&9J"J"h!!!!"`"`Jb-c499A"@L26dPpllrRErFV42(rVdVY`%SN*jH[`PqYm THdlBC5qAcqIk55XRDm[A+0XU@LAlB1)Vq-0Z1ejkFpEBmBahrGJ0`I4b90T6dPV TdeTTdPM(D+kpFid[+qXXjqm5hfMR[@69Vl6dRdLh#fZpkD3,hY1PCmU`PKI+*GG q9DBFH($l5lfe[%UAPbM#B$bq[AV@2cXi'%*B'XBNZJNlbf[(@3p1mlBJP`bL[90 R28MVMHLfdX%VSPR[@p2MGJI'-TK"6#GkDkEHFZp#fcVAJQ[bM51G,l$N#I!QR+b '4lEl5M6(iMKX,EE@Afr1FZd@m5b"(a+I)PT"b+IhVh'*EcC+ZFm+9THK4ZYYHe% `ZAKqNXb!X&E6lm*kBbcTT61GI-d!5X%0YdreRNdThFLH$P0(`FEakX6l+P(&#'m PCpMJ1,4P'l,l@R[&I#8I8Kh@03+PVcjKfJcJ%r5dmaV&9b,"'Q'ZpKq*ZjNprPc BfU@P#eZlLcm5elk2@Va%E"HJifTQ&AR++adRTIcC2)jmkB8*8eblCDle+NZhYE4 *+dl%qC')RY3`2[P'LCV"RKHhKcB2He"M21$BDi`1mB3ITKT0'Vk9"!`92fA@H(Z Sjj'm1FlI$kF&k&X$qrM6$,MKkC05BVN[$'1E0)Y+CE*6@edTrl1iQU+CR$Kkr4, MlaR2VNCd@Rfh2kHXSr'&GpNV+kiHiQ&22AA6%@iPHdl8Aa@`r3"rbR@+KLkbIUD 6r%eKUd&-X(+bj5#5p#rNH$T'JGi6+p-dicrZQZdBli(K23@'fqDqRkZ-4M4['eq 1#4Ap1-KC8hi*R*9kSr&XbRM`!!#!4QGhGRGiH)KiL)TkHBQ*L&KTL(PhL)PiHAU +N!#,LRQCGhGiKfH)H&KjH(LCLS#TU(HAKRH(LBKRDAGfQBL,QlPjLk#CLDUEQ)Q -N!#mQj!!V+PUZkURKj!![,ZDQUU3!+U-UTZ)QTbEUDZUR)U+QD#VR,ZDN!#XV+Q ES+bVM+ZE`*Q+R*BJ!!%c99ChGjGj!*S!UTLJQ)!+!!!!#JUJS!!!!+!!!!4!%d9 @CRH(H(H*KiF(L(QCL)S)#+U!#U#)!!!+N!#T#T8*QU#3!+!!!!!!!!!!!!!!!!! !#JS!S+!!!!!!!!!!!!!+K#3"0KF3KV`**l#%2NH"9lhHhH*Q4GPDGP*$PcJB&rF hp#KV)50T)dQPhQC3pM,`Z&P6F6Jlh-b1*PfRh-Z6#6$!`GhZ0cFc,pf&5)H&bIM jrdYIcJ48pMMS'dC$eMprNCNhXV6j+18MqiQlIENITiIhLDRq4jJ'd-Mf1mK)pZ( 1rapA4mlmr-rP#HPrLrN!fLkArQ'M"'RTZS"Xe!MJKk)C-SPpIf0X#kL45TDQ(Kq dP#dU3'P95&YT$D&`0r#&V83KHB2FB+'Uc05ZUQ4c)H0fIVS4,Lk#eZ16j(dEMNq Rc%)d@c@JiEGrj+-UMS!@ZmEe+e,#BZ6P6FA+Qm5%2SIGRjFk)5T-T8R%QppQ$54 N6XbE0R81+'DI&a*fAmSDpjNi[%c122QS8`,cGhI"a-c%`YjJA3jUUEf`0SjlFkU 2[)&hk'8RIA*&L#j6q*HNIpkeKAS%pkh3hKTPcf`A5Vd@J@&+eKk#4TE)dmAdkl` HTdL'GIN6XAL81$0LYpeLBX`dkQj@AX0KfUT0*krq([r-4Sr#98Fq3X1krJcFE)R 6BXc+S6BLJHbd,K,'a1*PS6UE9d6bT[)#08l*#(+6GdQ&-[Spc`-%,aGPS8NAQf+ @CL69A9dpTLCI&P+MLZj0TLZ#kDdaF@YhR(iZ)CJBX9hX0J%Clb4T`Lqa+SY*f6Q 6C8Aq%l*R6I`5E6*d-9TNaAH61lkEPCNh+NfQ99Y4iSbSY-V,bXA4i-h,bD'9Lc4 02b*TQa#X!LCX*6p9B3KRFQZKRH'J5eKRH*UBCh+YSChLqQ"1V$1qIfB%hd-lbkj ,-El-6+",4e&RlI5KcSG)&eGRlI3K$qIr1'YKTj'6$fT0dJL6GH$5KrT)bC%m%He )RS3"4GHe&[8KSBG'(A3r*$,qaI`NElP,YE828m',EGl3b(&AT`mS9Fj9A'IC99e 4V4@LeLFMCIXm$0di[k#Vj+3+B@SQ)N4@[69)@`P2(39eqMU3!)H2a1`de*0IqAp MpU#*@ka-V[$9R#dK9aArj1KA@A!VTQEQa&C`KJ$$KGKTh6#P5rre'hb1*0bqZM- diXR+LaJG%CcaFHEQ4BZ6aCi3i+@BR`VQiPZ,)KcHBrMm',N3Tic)hqqhMlL%'Nf E#'L%"CMb0m2+qClQVVV'G$6fPT!!VGMD,e,"rajKCCE85)8m)9IZR8$rB'%i8eC df,GqTNG9%9NdR6K6*1P[k!2ddQ&0#Q!R4#-+I`ch"cPQSUTL)di%)"6F%-pUY[% b!'%)9%+L&5RZbRId(@S6LTAI06K1TK8rBqT$kiEjVZEU%UHSP3P3bpGbS3j"Ubd AN`JZf63fIYHhTXA*iKd8EG!Z4Pm,JB&pGi@MZZjH5%Ulh@*PQbIiepGlZ1ah@fM hX@"P6FBh)6X@EPkDpQcTZ9LF4i+D2FcH2&FjHANBmlLcCfCPk#C0iNq+mb-6LC1 2mE!bMKh%L*hCD,Z$6V)bCd@fi14QC19THjb*h"bHrH%9AFphNd-b+kbH0SYiF+q $LCA"LhPpGajHMZH)8l1a-bDd3V@k4i'm`X(,V-,%bqmi%l%iXh,d+cR)RBkQG+l 4Z,HCJDam[5m%TrEj%hLF(G3iXe8fLhZm+TZm5IPU2VVk2#[pcT5rQN1JUUcr1pD HCUkT-dE$PB8c"f`1d,A`EhR(RB[#Y-8d$jh,r(IS%3))05DL)DAmHkZEXfbb+af l+cCa)cr-i@q3!#CrRIq[lL,2L0F)ekFlrYPI63)J3LfS50E$S0,T&@dZbd98he1 breZ%#)%0C+UY,kfkffkhBUUYe0iZ6PFGBQlfErkV9Ud$JAf!P!eQ"N6jYqFHNX` rZc)2cr-lrIS%)al"&(laJS1%PjZ,*I0aDCjZ+hCYqeaDGjZ,6[cF92("bi[TNcX 'k"ffm`JG8jNh,c#i-erZMAe[[rRpp!L"#)@#,00Plc#[,i@5X[-i14NYD+F,6H5 J4!MQLJS[YqP[DV,b140i'B+FYke@8cr09MG[ApDV+KqEc[@LY5q0&E4kd9P2e9b GK5jJmlqDYdUIN!"VFALA-Hm,f`Te%BUH%V@F[j0klG&@$YVQm"fJ34ZYX[IZRB$ aZ0$-c-b&#K3KhrIpqhq1Y96mA%b*d885Q12aq2$+bXU%qI2KhhIGmT!!3aPjH@V a"#"%5Glh[H`bFR*3)V"#$`B2'H%kG1KaH,aBF2Km1'2`XH',LiX-6%a)F$JF#(G Geh80p[Yp#r[lq(DGTfN1bYZbKUpAUiGCeR@3!0*T0*!!VDfYKS0"S&%D(3k&!N* 8U9#UUUT6'Kd@KKSp(Sd#+)d@Ld8+kZVRNSm$0(AD08#3!)UkZVK+UQSC9(J@K"" P48(Fh8e,U8)F83"%B1QMC4(#"+bXV%#3!+ZX##"("$f3!(dJI5"ZB1#(XJqN$*! !1V81#(XJkZ)hNJjNiiFH,q2!al)*Q!J402+q[ViDh@kf(BpMf-0KX0K$Bl(BS%8 3K4!LL,6XANim$("&PCf8,1cXd#3XpIC`eq[eka4!Mh((m`K&L2%K#45bXV+(B@A B+)FNMh(0IX0HdJ3)"(+)43J4!PMBf+"("$3MX,'(BGKf#"(Q3*-0GVYFYh%#)-4 KVV(A1M(ApIem*IAbi5jD"*DN&+!c@5pC$@Dc@36IiR6`J46!83)i)FF*%09UY8J 4`3k'13"pcQVGMMJKi'2E$8kR8ZSJJMVG6eX04U03TMVY9ebM%#DMVG4$VHYkf"q JD"("$f3I5"N!C!'3!!C!'3"N!C!!"N!C!'3"N!!!)I+)rA1UVMjpH[$12kkc[QS %LKRF#YKRBFZ'GLIC!Rl)ChGTiFjXKIhrDqIc-"-`%c!6-"-`%c!6-"-`%c!6-"- `%c!6-"2r`&(F-`%c!6-"-`%c!6-"-`%c!6-"-`%c!6-"-`%c!6rX"F3hA6XG##r 4(`Z6@5$r3N93`dibTa%LN59qPLGREb94SJ4j+Sl2m*GbXQQ6XqUAY5e$dlG$MiF fMZ3LlDh,SG5SrFd)UC,BL[E%@cBMK0L18f)meX4q&S49hM3KDIANbGT0@FhcR[i A*kf8Ra$ZZ0@EMrTkdI2K`J*aYMEhdGj[SqI+M[HV5p5amB$HRBr1$@E(ckEd)qI 99)-rH"24!PMGBmcM8U8c*K6c1jQ(J[,fY,cBqI8I0MqeB3LiX1*(c-rhJTjH29" DBKD1Kfr[eRcCm)qI6qTMe1ijQ2*ShdG#,D9R'aY&XEIIlZ2E4mqTkF9EKe0MF4E #%43%bacBk'aYlbj`VN1HK&Ibq09e8924Y#TZ'),@aqGXEFiRl`2H8%06Bq-,X(E Ai3j89r&6ipE(cj2pY1GjX+h'pk2UbYR(h&,fERhkZZPlZI&4Y*mMTD6Ik6Tp#jk X0,2U+0T[H@@5Njrr12jXG"Il!KHp@9rqXIYeRJ4FDXiherK5qf29"6pGMcS9qbf PCQidRIFZ1K[ZA-pbPlrDl+'d5dQ(@I,jHbUXrkX@VSh&V+,rIQaq*HpAi[$XH9& ABrkTGaZ2)aV5MCdElBfpfY@9(YBpqMabXSHbkV,Re2*,"H"&b2LQ8FJrjL9M8p( JdE-+IVPj-0RhALl+qKfGrqM9dX,PlMD51aaj1I5MS6p(RqV[ZA%CZ9Z"(m'0SV@ )S6"arGSkmFCYTjNG!b!"N!$4*IK4fT-bYV+VXBkp)Z0*qY2VHPc21qh*mh'PPZ2 fdGG&J5jNZ``kbjpf&9Q52R@(5p,Yr9THpc19d[&aT-G#A#MD)SLN8GE,`0hrY5k %@lZZG$5pPN'[b[Sr'ZXkCN3VBYhRr[YV!S,pfYhhXG(Cf%Z`RGVMbm'jap+",(Z ,Nh"IfJU%#NVDbT&[*2`rP`A3cm6Z-kIjI0TI%PF5HEE@F+hFC%+c'L`VVKef$GB h'RiZIkS)pp'!LmRTjm0%f-rX3C@h9,iFIZq,`K*6SBZrq,#6k2EihiUh%lDha[8 #e6@F1(akAa@fXhec,j(`p,Tq4cG`lccKG2qGUI0N0Qi3"PNNJF)1#'j"e&N(l#1 8e,iEE@I-51CR6mMTL6QlMj0c5q,CrGMldLaH+4lHfriX)HaqICf'2E&jYEMk,"Z FE6Y6#4lZ(B0LZIKk*X9k@'ER*(k5CFdc15"IQ5XSZ4r$iSYVr$iYacS3al+f2Ya MbpEC3X2Ph9hrmKAIPpf&2l(blEiHfYlVV0,lX1dY[KcqTfpcMIY0*,KHJ#ia[8@ #FmJR2bU@C"B4U24XSGTMDIXb(62[ipEkrmhRmk&20TjGNF6hCekiirSL`*pGcFh pILf[4rAmq&eQ`YI5)KJC8,D`YE#6FH$5pca5lN@cdQ(TCGR#Rj[+YZLP(@hT,4A i+AlF2XiUkM[BVKlC9Z4(m%*12BE-E&a0*-Red%E4r",r311T&YB9N9aM5F5T29B hC@Y[4qprAYjG9Dfr1mc1frRmV(U6IKXF1+YfN!#RNE+DJkAKk8(5@aeKKdi'e9h eDAT5q9(3SrHMSHpljT&b)5DVS3TSrii'cBhb@phZlcEGY$2SaF$!0r%99(3XZ4e HE,[rqAVrqr#rbk2jIA8Kb25q'&a,fGKB!cNp2b9+BcC5Uj[2k[$8PK0NUlTmrUi 5NVTXP6e2K'5PFQZ+Pr8kfB'Q9,lH(6JEmbDpM*VJ@eKXl$cYph2UdZVZ,V(q+2U 4I#f8mTh+G9XTG6UcQA2&UHPFA28K*YDj$KhIl+&2XVQ&2,f8+VCF!j1HjERl+f- LCGHRpqbKVj%cEIJrlq[H6,UkZZKdHPbErp%,HAUbG2Zfl)j63qL)2'I#$`)T$j4 E&mS+efJ@icH(UGaiA$VEc0[2#$83'SAKckKAU5S"bX8e8KDKD@jrmG,cmh&UCCm I)k(RH*hGEQp'CF@d,UiQA%G$cr%l[8@LM%,6,hYB6,haqMDbTPlE5Sk#A5r6b[d q+*[IcHMd2%YUEdZKD8dbppES6,hTq*0UZEbHlTdQQmZ-2pAmX%l8M9C8pY+09'V 6K0Bh!3d'Ip@aeF@JXUE"[IpVh"[GV+`kpj6FV"[DRjd)H$m@pjHbKRr@YG@F[UM 'rc6A4rifhPhZ0UBUDMF%'rULd`Zhi+jYP[)Yc4XjmJ[K6r6e898',UbQ1NRCaEQ +Q`l"jNd["[BVL)ZGi2aE+U18errPd+0TRrep[q1Pl2p2Tf0qX-h1ifahEGHE5$+ LfYmrUAI9q#Z-L[1"Rl`Cpd'I8"Rrd'I2"RP!crF'I8GrKTA4@8+r(V!0UFI6ap@ 'B+*iSpi8CJ3i)3`fb'8%-)Sl*0,1%HCP8Ed1q1E9ZmmfYL-XC+1"&dNq"'e5NJ4 E*33)ek4)%5iZ"(3YC(dp[VCNqYqRUV@44[EAiBrZ4HU"[JLr#dFPm+&94eGV)L[ U0k[m1Qmk,Dd[HakH+iZZBT+@RS(X$dGei%NpK$,qeTp4TdpF*(liD5CFla2jYjU H43)qPZ6c2"(QpcIlZl"(S*j[!MdYjIVlIHXR9iHJ2XTj2*l6*j%!L[6b!"%[HI, h5%,5lMfpkGG'eDpHT(IAPdN!NFQmZZj4"ikIJ*!!N52,[,VHhS)mrEpcI4KMm+r QA+brXd8f9RMe@3brXmaSC6kS'()e"P4i!-qSd-eHL"Kp995D8'CM3b,""RM3NU- p!qqr+2H+Jcd3Cp'%LP5dm)[8%KD&$'[L"KpT9'Dd'(DUSbb"KX98CX3Ci'$jalA `U18$*qjrK!b0U2("R%l6p80B$22"R#klD3X`CqB'F''J4j8lJ'H8#[N!ch`Cp'' DYT+N'BE3bQpi'I-DV6AfT9(c'Udeqc"QBfBfJ-m"XaEJcQ02+FZ4pLC8FA[-6KF 63a@Q6&Gj-l[TZ8ICfYhR(iZ*1c*Z,&Gl$B5X+CI4lQ+lUfK'$0j%Mj3!!!#!4fG RL)L'D)#!#'#(!)L!#'!!J!"`"`KQ8'!!!!#)H!ChGfL!B!KhD)"hF!"`!)!!KSC f#(!!"NGJGh!!"`#!!!L!!)!!!!J!!)#!!)!!!(!!!!!!"R!!F("iJ!!!B!!(J)! !!!!!J)"`!!!!!!!!!)!'J)J!!)H)!!#!!!"iGS8*!!%N"%!!"3"3!a*%-)3a%%c `+JRJ`lYH-[k!Rp[HbRfm("GReB9D3@Z6Z4&ZMTkfaEXkZPYaYDe+e-K-KTpr8dr $Q9mmL+%(b(Tp9#pZC2cK$T5P0lF1pGR8i+BXAq6lC1AJpfE@mAmK3m[9ScH,,c2 hKi**)3hiiGlcmk5ESeVpD2ileDAPcBbrqlLGQ&1P,bMlheFU(N[IPSVTJUG4ZFI dlQ4#T*M9rP6K*5`lb%@,rqqq9$ZqL%c"Z&42Vh$j+m1ISDmE0VA1Hkr-K0KMc2A LfC[#i4HhrVG$FpQCHcX0RipVVF3+l%+N)D(MdY%'G$&iaGcGRiC(8cM0l9[9SqE ESjfKCfGUhXES!!"#!!!*!!B!"J!!!!!!!!!!!$Kj!)TQD'CjQ!#JN!!)GjKJPiG jUJB!HBQ!KjQ)!!#J!!9eC(G9TeC8D&9&GjF*#!!)N!!J!!)c4&499AG@H'#)J!N !N!!!L3#3!!!!!)J*!!!!!!N!"4NM4%8eKQGhCRH'J)!)C@G`QBF)J!!!L!N*r$m )rLc#9@rXmlkl1@[1"%J6TRamm,HqbND1R6(j8XMpUX+l)pIXpRqiMXTP9K51Qb@ 0PZ%Sr1Y)9qPH2,M5UrZRK[jCEmYS4K)rXP*T8@3#+-XDZq8@hid`bVTE1r(Pcjr [Y[VZbhbMND-H61JQ#,i9FE*i5qG9Y*B4rES5eAbrUR1PBEZU0h9capHGC!G-lpp T+e5!E%NS"5AM'A!d%8PD[YrR3L8NMh,(lmCB9((r0'kqfQZ2KK2YPI'LNXDDGFI +@&NqmK%5jK,K+qQR2RmCfled14cSA@HV(A&dlqm8m)EUZmDVXTDFqEqmqE(CY-1 MfY$[1BeB*c!clrjkqY!M5Ufi#2T51!9qVDlq$5i3T89llTGpYr6J&,A9GSdJpYl Sd+J(E(ikFfB8EZlS`PM2,#Z89H)@9AEG,A&BT2,J"1rH3C5fr+@I-5I9)ZcB%UP AIVI[D9JLV0+l'@ElIjp`8T!!A(dbN!"FjF65Q0dTF8T&[d&i&51EK,P+jUp*C[q bTdjBB"KS@ZMdJNhG4V$88YP@1NUb3JQ,"T4T#hC**rf8UT*Q1I"T2EZVA(Kf8Ra ibhX')&II0BL@QYdf2Nr'ak%hN!!e%Y@qFH4dH-MPCGVZZZH9p(PSqVe2YSq9AJE 3RI+*pd8X)60C[KXk[)@-Ac1Bce5&E0UeTQT9)IHZ4Vp-VbfE6Yrm31qEq@pCeHr E+N[kkjeq$[9lSVqQ3fXeamCA5UaNPm+0$e,8(4Ui)IEaVAkH'cD1c'Z2@8"J0Z" CC1lH+MpV-4-DC+5LB#HbP9YV@cQ1%)pFZ'L*E)4jJRf[#)#NcG8Zh,[l+BD16rh (pF-*iFdG3'b0ZD1LP*F10)T-C69(%Sf(%39A%J21,*AEq3PDafq64EZL'j'G88P KZ88qU+p$qd8JG%q&#eSprcRhI1@)d-T")f,D(3,phcBkLX8qmjc+hjq9@$[1NZQ @Z1bh[[UZealX*eEkkXD*X)bI(QQb)aUVeVfQM889SXa@L1"'4!iK8#,amE!4@dT 51-2TP5P%$Df3!+9[`QIZBjG,3Q1RrZ`@c4A@RH@%%4&(M9KD@-(QmpF`ParF#9T Aa&mQpc@qU8Z8qUAiP'1SS[H0c',-,lPZZC5CQGG*$6T#cVX-`C1h-M)"lZKaTZ0 -QRLF2A%eRqDDd"Sie4K8FE$!JpGlFBaR`N@'%hhE`L0'dRUG)5llI-Z%!JZ!i9" D[cG89Qq5+qJH3ai6RiT-Hl#I!qi0eSdP6MpD(b3$ed@CrR$,K9VBiph(Ziphbpr +bd%VEkri2qP,aPKjTq34jb@X8iphfp`dhcl"!qpmk5jSqC6)LBUL4!qk"-TF2M, UVYRP5,jH5hd9(rjMr9#Ub8dVpj)K2eBMm3452N$X(r(#GFX6q2VD4fbVUb(h3#h cLZUrr9$4dCAh!P*&'0(DNNLcDf0Q`rfKJm@4i9KaeE6PcJ!!!(j)Ch#)#)#(!!! )J!#!L)F!3!#!!)J)!)J!F!!!!!!!!(J'#(KS#(D!F(9`!)!!!!!&G@5)C3"Q4@" &93L'J!!!"i!!!!!!J!!!J!!!!!!!J!!!!!!(J!!)J)#!!!!!!!!!!!!!!!!!!)! )!!!!!!!!!!J!!!!!#!!!!!!!!)!*!!%M!%!!"3"3!a)d3)3kL#FB&36LX`McbpY e*4UbeHRd5`m81+h9+-lX)hE*6hZE659HLVE1c6j015'5(0jrCcHVcCZ-L2$"mKd I,Yp2emImK$Ia+Ek4deddHqXRTI#b@c#fkFC8TG5(V+#8lXIGTMVPVZTYMjBeDJV 59pf0,*4`Vjc%BcYREKEAUYq-Y!N#'[CUPVP2!)C9ZDABi@cP$NP6AEIHU64+GV, kMT-d1[RZRACFCl[G@'l$ZC2RZF'lrh#1RmIhlK[XYl,hZ`[rAJl[l"AIK`3KRj+ Z8'GMFr`ZkerjiHeP2E@(jpXFZHZr#92X!!"#!!!!#JF!"J!!!!!!!!!!!%Ti!)K RH@GT#J#JS!Q(QTURGjJ!Q!UjL(#(LBN*!!!)"'98CQ5h9P4C989fGSQC!!Q3!#! !!L0%9&CRKQGiL)U!U*QJ!!UJ!!!+!!!!!+!!!!!!#M8c4%99C9CPCfCfGhChH(H )L(Ki#)L(HCLCLSQCL)LBLBLCJ!J*QU#U#U!+QTN!S*!!#U!+!+$krVKmGq-Sfq( +qcIVhk!%5"02Gd3reAI$mBifEiIiqcl2m`Ki9cMM@(G[PP[RM+(ff,"ArE-YH9B hlDBfkj@jrFd4[M[RP$H#p,''fGdS@bfc[PP#S1NSC%kBd[Rp)eR5q''-q%kcmTC HXMl`P`MK[TM,,9$mF`IES5ml,XmL,,U@H)$%ElBGe,l30`&I+1-il,TCDe(kA+& NEi4ZZKXN325b0C@`RI!*K@GJ!p-BlTDS@mVim(!4*"TM!&@Zm*9@0RLShCEkCh@ NS6["fMG2k!TDGK0Gedlpd22cmrD!hd%Kl*!!C@8-mTDiDIEI$ZqVkJ4i@8[bVMR B$E$LK3YS$5'ZMR@R!Sf#EbeNL%MqhE$P61%FCAqUX0S5UkF31jKmEqfR*$I`e@U '%l2''H!4EG5PX2IK,%)!&)m1@9CF!qfAR@'bP2%Z@@L2EM1@d'M#k0kRqk3Y)81 Q8SFGp)FC"GmVT5`*,$XET@9c#5`pI8dUck5iV-@aYK@JS6Pj5[V#[%Y!C8J3@@5 bb*A$fb5-Sm*3Xa#Y"YJU%V*3TY$TE3##LS3Tp#1f0B`M8N9JQV2J(fpqG5N%[2r i)Tf@IVQDFSK#98(#SJ$mJeSUSK)@3U3A@-([`PG+)CCBpPIEV-%)V9#&3iX1PS+ !dI3p(IM[0ANEk!J&6d'iSX$PR+"0(p)AcU+(K6aaL!9RI@Gb#ai)Hq13!+eljjE `keFUJ,X-D@5PDUB[YU68*Lbaa,M+*61p+p08SK51%RK[S+8bF$"*NI`A(4-VMb) (4*6%#+$%VL,GPdj#[JTGb*'*B-13!"[(+9ff'RR!,jiF*4["DKJ(XcXcZ&6LPNk 0CX(#3)FmN3S&1f93eJABS[M,#Q*"[P-1pMCPfjlSE!2[(#NlkSa"(,hUqEPCahb [BQ49!T1T8fd9*''$YC'#ml*@8-FmFa(-*6$RXS(fKPYQ-lGdZF91aiB#(aKC,+Z Za)1h#V'SVR6'A2*3m$b"%S3iLMP3'Er&94$bR#%9)kR#9-j)#qlE3BSq*6UAP5l 0"S##&$aTZaM`14F!2QjP55drhYTI)i$ZEQj[f8"hF[G2T-%ZMV8(K40Tl)HRd`l BI[qm1iJVlb"IC$AVep%2f%32RPA2EYdp(@!CI+(qiI(iIPl1Z(m1LqZ2$f,j%Ul qQNcKiM#(N!#%R8@r6#CA*`bDUQe5Db&a@@f*b,FQ5e6)YE31U)j4(9jRJ'!qj@8 `'$L+akLJ8c94a#1JPF0a3BSa#8)Udm'(19Gjf13IYYQR@[aZQRL20E$4*Kha%Tb jCpQYESR$`AXM6dl%X0lUFG5m-#B5f1B$1qlhr&l1634Y2Ba88%N@bbS9@"*bi%e Fm"8jI9@RF#1m$5bk-cR6@-5k*F'fL3a!e9+rVQBESL1S@Im30a3)[H&4%#FK!2r Kb+c3MK22+3V%!Qa"r3pN9U@LkP-)F"15AR+`-p!ETY`-@5C8KPp9T`ia9'rZlrb 3!#bYreFhlDF4L'*P0F`RIF%%A`@#a,!&I&9ipid1*GQ3!0U&YGkmaEK%!QELh9- d,&GCJYSLqPq#e4EIHV#5"+-*5Rd,bb&D8iE'R3F*ffJl*BZMM&1"AI!XAV$D,`h QCiam93`2"F"KcM,A-EaR1T8hY@b%bprrKQ0iQ""h,3X3cq1%e*+Eb&+aNQlFeRC @CbIr0ja0jZr[j4ar-1SdqNS-XK2qUc5(LQJFe+TE4'pG#b-XUf1cI'rFS@"mG8p 0$@S&MCkCJ(%8Y8BH8EXdIAfDSGZU(GU#V#E5mGbADNNib4PdiXFTlVa`&TGXDq' R*[@BAA$meb*H0$UfL9[cUaF*L*AJ`EVl0!3TTF4Y5-B3-mQ`P-idLSKl50d'Q6% HUBS#+53E&"!B)9SDZAL4`DMEL0l2)4LHpNMbRQ0"ZHAS5`58CeaESh5L#TRL-(, 65"FaAa$*3220')YN,,9Tk0-Kk!48%[NDUH1lpS,SiANeki,PZV*'11BA+AUf!+S mPj6TRNe[eYDVhDYH#Qr@VMKR@NT,X5RkmGlZ#hEM50YJZ@Hj$%+e)G`5hXkb2%9 pT5%c)bUN-KcI(b&T)kPhU,aK4Q12e+I1chISb"JabUpL-%dJJFm!IcaHNpQJ8a3 9cGVbD+hPUH+YD(riejSQB6*+[la%*H+KUElpSGNEBPZeA*eZ0Z6,ZhmSmK")R1f 250qKA1#5+qq2MS8T4EAmIbm2LK4I,e8SD+IUV6j)p6G)(P&G&&j9dSSFMP"2p8q VjF9@6Xf6pUUAbFclr8`%1jFkS,LF+h')(U3DF!kGEk@[6FhZh&(KSC'Z6+PNdlc %l4#)RVd2TT(A!NMD`1T)cdS0(++*hB*J02U`2Ad((R"T()EV**!!bdBpD"l+-pb (INak-EKYjb+F8f,QLc*+RNQ[mSdPkhQi49#Fe4%6aG20bZA#60&[+"PA+SRY%A+ -ZG9fS+kK&G`,CHEmEK5f[Sdf*dPM@qq2Iq''r3['9)dI!$!M-mp)aef8a[PL0** F!IB)554X[[N58)J@FCH`$#GI9NM1F4V*hJ(kabIh9Re+9d&P1k4@BEI('dA#+Fc 4)qBchEc6hb$QKHL$X,1JDI*9l3m@-BJ(LhBHI!fq*4cRH-5`K5NbGQHilh"kMeG 4I#J`$6iB8(J%ZG3l3lA(aEEmN!"9"3&T*)kAE$T0'18kY@I1X@#*C1edr11RTH( VJf0dD%0GDQX$BID)0%IU"X$ME*HTD9Ulh$cp&hZ@H'!mc(dMjFpRN!#"&h*A@6D ,kV+J(GA8[!5"-DS#S5E@RkmZhejbMY`b(K0X2EMXS0(6IcAL(4lGSkJ$i'LJ,"- ji6ii*@V"'rcU1@jT35eDZ4FpBiD*@jXK#e`pN6Li2$#50aL3!2d5i!%-L4VirU3 "0Pb@fGqPKLk'Z9G2NAE)@!Re*,b5Jj0hJSJ#T%Vm-)I5@0%84Rba3MLTFIY,KJ' 0EmQ&N!![0XDqK9'U3L`MZM-EpLF&l,!fHA6*R2k9Mj19B$&SEAXTkP[$rcr%lI2 3e&pI15G,-I+-lNUL0c*NZEG%pBkdY8c*e8'KGcjm)L@H)rF`aRDiT`QdBGk*AUB l-0CaTiKGK[5YCRNih!%PHYPN-edpQ)krNXa*(%Ef0m-klVkEYIVQeLDF4TFIc8Z 1"@j2kE%rcQ3I@)dI9H9LG$r[phXFITbIX9aB6'[F3TiiZ30k+5lk(5GF4$&aYPf idi1El$c00A[2a2dLQT2GmaQN9RBdXIFXAKlRZpkcAUF5V8%MpkR'bX[hbHBaUAa XDUVU$faMd+m6'GJElB@I4k*lEaq(SI2jr(m2Kl1clr$p2GhIKmrRSp#[aQmKJ$& 1aZA0pU[m"belrZd&%ZRqIkl(LkR@epe"ZPqZ"hDp81r'Q`3PdR3hdDSI+@1qQiK &P5h4Sd9j#Z8)SVqkfbLG33T1G"$VG$$32SRc*f$T``GHMQGN(T2qY[J-G04,S"R q'c*ek0!chba'0DNl@``92dX"d1ND1N1Li#SHalZhb21pi(,l%hbGLCMe'"KVl8Y PTk%MAeTE,$`qjRCUq(h,-'TVSDG[E4eED6#3!+'p93[lI[5XSmKCI'(*X06TbE! `MNf!k(6`G-dmr!prJXDlc(3XFX'jj8A``cRCb1j"RSkGbSB5&a2G""mbSE4IqIk rYdPXJeMXNY5`H3`h,"bSMTd$[EKTFK'(6BRrr0-i[ij2XJ*j#1L!r"HTY(qM&MR AZ00(S(r"cfk!!!!!J%GAB'F(H("`J)L!!("iB)")!)#!!!B(D!#!!!!!"hJ)GhF )J&"hCQKJKf#!J!F!J(H(K@L(#!GRF(Gi!!J!J!!)J!!!J!KJF!#!!!!!!!!)!!# !!'H!#!#!J)!!!)!!J!!!!!!!!!#!GJB!!)!!!)!!"`!!!!!(#!!!!(#!D)"e#J! "*!"!!!3!"9!$%N3`K$#3!%UJ9"1lahEA2TkI(GMc[,eikQKGNTDh8MCMjT+8E(9 dj-R'XE1j09fEFe6BK*!!NKClRKXkHI,9)E0KkrC3H*G,Kq'VlB3aBP0lkFYqaT@ iBpUPf+N1J"-L@h2bp[,[IL[prr`D@Gh[j$)Y4I1IkiM@Y4c,Fr0Hi-ce3`VebRE R`Al%DNr,Am9Id9r"2Jd0UpFbpUrBR`Cr*arVFKSi)8CH,prhYCdr0DbN8TbRb5` aDfhEepME1HkG'&#'6*lX2cd2Ld4`r6mr-0il-bl1`h[YeXVL"9+(CK#YBe1q$-E $j"GLEhecHMSlXf[[cH52Mp-G'YVlfr0Zr)!!!%)!!*N*"J!'!!!!!!!!!!!!-)N !Q'D(ChH(!*!!N!!)PiH*Q!DB#*F!QSL!Gi#)!!!!#!9e9'CP#&G88%99GhL)#J! )J#!!!M0%9%9PCAL!"SKR!(#!!!#!!!!)!)!)!!!!!!!!#!mM0%4R9(GQCQK@D(G i!)$PjBpeZ%VVEjFPHRPj3"aYRKp+@lq'8DYZZ2ibi4rkUPI#1EcHEpiMVbcUTP' hK,(KE58HHY)9rGH2*MP9IZR5cNPCRk%SrVP)e*ra+6K!(icaUhbLfr(+QGH9Xlm H66Tr@fqZl1b8H*CGiJ,f5h!-LqAKPUm0FDY3"Z,QMcaKaqLbV+Vj5[Xear8)&rj B&pDMUh(GRGGUeapraq@Sd1#1fr$+QZ1MS)`RRN3FbC5lF-[S$1)8@YPK3hl*dlD VV[T&I#UQ-9cc[baM,J(GRfpNU42FBh9AP)%&YjMQ#Daf%JkVl)a`UVNq6p!jb4r XqqAG+Qb1rK)d1+lUT)f0lBp1hhp2`p8I(UkIIkZVVf*D&Z-BbbM+F6%+lk5U$(" j9I&Z8Bm*jh@4f5j#3[a5PeD9qZ@Aq#KibTD'i%)$q`%35Z!3@8qeF0R"35G*9ch hLILJDS,TKcaI11fB#1qPT5AX11+5bcTIM((c"3'Jll,D`j8+IF%jb4lb#`"pr$k &3,$IkElFQBSY!IE9GEpC@%L84RX%1eeCiU@lC842pC8Q,plTff0*c8`'aj-0NCh ifll`C%XBmRCRZh&SBSAZRI[M%*6ATdIE6SAM0H-N"KH@J&)321C8ak%8,aa'Ld$ c$kk)mS%HZAE9K`&%Qirf""fjj5m0NFfYd2(-$b2)YcBDZic*2rYb9lF*AZ*+4$k N9lPX-MkhFHYbARaF4DjHA@13!&S[0U00(i181m-AEG2'6pBh(aZ*lFXC#ZIc'pf CkS2@'2"df890Vjp'M3@e&3eS(&&YdGmSi9G`eJ4a+lK*"akk9GKl`A6VqHR4j'E Mm1I4praqCI#XcfcAZ`29VANecek%d$AdfGe9pBbY1fmqAjSb%#Z-ETj1jL3eqU9 dUKY#YY2LU%&h5[L!F[+N#qCFdVHjek-[MqREbFpm$"kL3AY2M5hG9SbVRjA"@kV kpV6A(6Z-L6[m2b3b$CTdD2X#,p#bJele,Xi,Zd-KAD'-`AZkUG95me8cJValU[R ,aXi4l+M1dI[@VfHhj*qjVm)%-SpT'JLqE&-Jd6dH!X-Vj4dLaH`dEE[B%"hZVVP Lq%rrR1rliIGm1GYReI+G[dbURMi!!!!!!!%!!!!"6!!!!%`!!!"'-JG1G53!*J( LL1+*XSGLq)$"`)Fb!m,!,J0)4ml!5%F+8'P`C8aTEQ8ZD!!#!!)!9%9B9%Y"5%` "!!"3!)'#"!)!9%9B9%Y"5%`"!!"3!)'#&+QI@f`!!!A`!!!"NURr6R9J[$)krr` d0"!')#m!"'F+)%!-8%ljCb*1G5m',$33#%+d%!KJ#Mm#6VS!($3I8N,LMQAbC[J X(djee'!J0"!)"B!TJ"!)6VS!S+!U6VS!YNKkrf`N(j5-5%)d%@!1)LN!"*+)-X% br%kX)X*4b2r`B"Jd+3!'B!ib%8K`%!#"JJ4)!!P0EfjKBfm!JB)E"J!%!"F#K3( e",3!&`+&!I8%Y+Q`cY8!JB)-!3!!!!%!!!!"6!!!!%`!!!"'!(1d*"V3!!!!(!! b!!"08&05!!!!#J2Y!)'#"h1bM"0$FQ9KG'9N)'*j)%00BA0dCA+U3J!!#3!'!!8 !!!!!!!!!!!"!G`!!L("SH!F!N!#3!!J(N!#3!*N(Q!N(!)Q)F)H!#3!!!!B%G@4 R9!G@4&"94AD'L3N!#U!6!!%c98CQCSF)!(#!J!"i!!!!J!`L0%49C@ChG`F)!)$ hqq(K2+@-k5km,J13!"2ChHf(k@`KrFFlm)GR`q(j`KifeMRD(GK,6#HFSIVHf&I [ITek@M6KA2IebhkrXa'rLR1&X-j4h`[M5#K2$1['%9FrNMQT3`QYK'd18p"CKDX 1@Fl5KTKAA%1Cjk@K[PIM%ICfdK1PT8Y1Y)HA0%Hq1*3hQiA2TP+Qf%DEf)D%,JH lXDk5Kb`P36BB4d'+L2HpZ+C0fY$dP,)L'FEr5&H%-+mSFBP0V(mb%+IY08q"3XL 3!+5@P85R42R+fZG0)5ccVR#qZq82Gf*95*lZa,CcDX0cHNlE86J8R6I1q*E64@V I23ESFDJA[MD+d(hm)FkkVL#'q%I@5U#3!0mXDP(*-Z85-QZc5[$8MjDLc&$1q[% SV'Y20&"#l,1[V-Qk-ZdK@PNN*DhR+eNcdh3kTlb,dfT)c*H2'@qC0mHF)m"K46- bY11-r`Kf%lR0H8cRl0@Gi6lAeVp0ZpF2YJ9cbQ$('2T*EJGSYX*dp(UjiimSm`( Y$'86L93SMIDCEV9FlBD'5*f4MLLP5AU@FeVY9rS-UEfVd-dDGMGGeh62K6I,K$G Zm1r`q2blrRmGfklT"*)Dm&3VTIMUA(dICGmH21Pq(AKd!dfBI2kE[mq[Ip[MpI' (XphClEVVFmT)[D@ce[YGXrflCV65IR54ihK(1(8QPZhCXf%fbURTpGM*0%'SH@[ $JC`pQfk90iG"b",q,TdbXA*e9eX"2DkE'[QLj3U#CEjJejPb,ei'9f`+QAlfl2r Irr*-Keiq4+MJYq-ckNE5#&Sj@IL5b'q-Z-FX%mRikfPpcT8LTlmdbMI,6YZfImi kLlEVTIFD+3pDch`HF0pM!f(9PYJp9%df1KG23-0*rLAYlAiTTfDl8hk8,qdIj6i DfrN`0mNrhFRKr2Rqb`XrU6l2!VZk6E-q&`!!!!!!!3!!!!&-!!!!6!!!!%B55-F ["e!"&@*@%5mY!Ib-8!%HFK*2l`!-4",f+NkY!3CdCA0d,Q1d!J!#!&4&@&4,38K -!3!!C!#"JJBBe`)!9%9B9%Y"5%`"!!"N!)'#&+QID58!!"8b!!!"NZa4INdT!4` +E8T3!32UE5GJ6!%$'-aY!@!HIeA,JPBT!32U8")#'NU!EE"9!@!d9d"3!3)+C`& J*Rm"#1K[!3!P-8`"!YE-E3&J$P*4@"-LD!"X6T&RPR2%&2qm6Pj1G8j@5f#-6Bd "CK#'!3##8"3"ZLK!)!aBM`&R5(d6)JaQ&Lm!!!")!!P0EfjKBfm!JB)E"J!%!"X #LJ0S"0X!'`++!fJ%fkQ`cX3!!!H@!!!(T!#"JJ3"!!!!!3!!!!&-!!!!6!!!!%B !Fl3N'Y!!!!!F!$)!!%e38e)!!!!+!qd!JB)(Fl03%d0bC@&dC@3JBRNJ3deKFh4 PFUTV!!#JS!F!PJ!!!!!!!!!!!%Tj#)"QH(GSD(QBH3N)L)USPjH+Q!"iGhU'H)Q +UCN("B98Cf5(9P4T49@(PjQC!!Q3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!+(`!#)d999@9hGhD!Gi#)#3N*#3!*!!#!!*N*#D!!!!S Q-c4899C@9fGRGhF'D(CQH(GTLBLD#T!!Q)L!L3US!*!!!!!!!*N)U[$iBB4[`ce j2$i3!iFFp[G5AAV`KPimd1,$A$ee8Ve`mAerAp-)DF-DUB3ipFEpFU4KjDeJ9rU Zr2IK9GUR5c2'c(cV%rTeaKYT2VT9XKA1l#U9em-0G)a3lh`RU!2L5crp3CUXKMK +fr2NKNqH9eGZ0J0&q&NTjpIRC#HldS,G2GGAVckpeS-p%YXH@9d5&LK0lqIkp5) `(%R$D""D""#N`DVShX+b33C%ZZUq&8,XGR`M4"P5GQ0FDAPK+mD8MGKEh3lD5"! ki5Z`Q"KH!CE%NTFaEm+VV)E-EF*EEBNHhil(FMPKb4`MP32U`F%9#*YS$+JP*X- -L6CJUpXVV*pZI*NqHb1SLrl2EkI6bHcUdqVrh*!!qPJ,FhYpI9dHcRqhfmI*l0- 2UE$((cmfRfqXKMLb#3Z%Ud,f%+pG9)E)hheGFI`r+(QKZrG'ffF1fG,E0hbC&aG MGI,VZMBSBr$(9UM6m'N4qANA&5mA%CjJ,DBl+YZZBX49-,YUPKj0`dE"X!-J,&i 9@fV"m4QR!,k9qYK"lDVkkVBI+FV)EbmF-UJIMGMI'c0Nh2fbEM6-lfh#JC4CS2* Nh1hA)1MP)Bc-+VSa`qfV#V,hbXYp"Vi2"Q!ZA%2(E1q+Jq3[51'0,X[0lHAP)2r Kj85mbh+L%UB9XSl,@&)ZE2paD4ZE0$r(QKcFr9prXpA5)rCSIY$EMJ@Fbej[*$9 UYa[ej4AX@0!)IaNh'(TpfA[X[AQ4l0)N'&!E2elL68K6d4XI,0)`K54VkM*-X9* U&AUZPJZj#TbliVVqXCkXUJIQ*BB8LKHbTpq'JL$)9EaJ+i#VB*!!,`&A54MXfi5 q5pJYlTG!Dk%pj0`f'jCHE4j)5mVG9`%4*[*Z&H-,ARfaZCNpZ5e3bmdHe@lh,fG $"f8%Yq(IAXphaXFjH8,8!0F'*$`afZRb8S6AZFRk5`kCkGBf-j8-3GKjD+ZFpXD "mQQMA[me8RXI,4XEBQ'MG@)if5i`a+p*(r-5M#rHkAHMPQ#fH)*LM'Qb9`D4q&H cI"d1P0dS+j`LjCepJ`#((MMRGB*LcZKlUU5Uq&VR#lC1b0T`aVRMGK6ZKm+5Xka 53A""qJ*jh(#k3lRBh6akpCApG9+Ga*)"0iXM!PM#`CPeSEaX&UKK,BYL)K#[`T- 4XG5)V-pJP-$R2$KmD`6T3bd58NDJNfM1#jVU-d9Z03B+9T*Uf-LQq*%M#qV8#-( X!F%lJJ+6[1Qd9Qcc`p3Zb-#l6e$Y4S-+!`@fM"kQ0"I#["kqBBS%kXd!$0bV`Kq H-FBN)&-DUT8'M`JlH*cTNTG'XmVUGfFEVpQff9FX1j!!@aYMeeA9aAkSeL+T(1` iV!9cS1cf$@8k6Sp!jkF2MBhNq[(#2k'AX,3"@1jpLBSQ)N&'!dR+`2(q(#1FEI! rd)qRf)eQ@m@HB+ICA"T34Q&66UCLEjSH+(!S6LME#0p&IjiJ+CHq8UDDVB0)H8& hj3mrQKp%2hrG50G5`!m1(6E$(BaP0d0K+$4*m(J!31ea5Y9eieCGf(mremhPi2I lrIq0fk-5aEJI&K3F!@i21JBD@[X%8DMN`ZYIqbMECdcp&hFYIS-GMYM3-*6%e`1 U)U1P-%eV91jhaZicCdphHH@!rZpf!)FF-)qP9K6'k`!ZIb(P8p+`m'AZUhpJYUe -'Pm6MF`$I,Ir-iEpUCh"`!)1*mIC5G9PG3k6-6pI%XRVA[RZMlSMLeE&EAeU"lG GP3Zc+$j4,8Y(B102)l"YrqZMd`QbVXMe'&,``DDklra"jGqD`hA,k!"pIl!@N!! lmk&-`che6pIcUX65L3q*5(am[M!&1E6QJ#KD2+eeY(-XAVaKBQ)VkjVc"F6k8'L 4!b$LNclYf`p@r"$c[CP0dqQpIicq*r$1pTBEh#rHSDU$HZUiHUP)AlBM2N[ZYfh qkID1EScLXR%CY#QiA81kH0!0+dk+MMa(p-)ApXKjQ+lpMfF@YJ2a@0$KM&rNP$e pd2qBe@8UKp@M4!G+U!m$[#q"q$[&SdBh`bl*([TLBqhjQISX2[PJ02ZZFl#5Sr+ 0`2ZcD1YD'GIqT0Y9IBK9'8HXG@1#)kB$r3qa,(KfGDk,DHMNj2YkZRNdp1Q(MdD 0'4Rr'dJ@)V)#1&R5pZjP!kSm[AZfDB1)e0(*D0Il-aY&qDMZ11VL35N)Vh8GDcU 3!%meS52*`9$$N!!lalA,Y+RY8pJj`U$MpAmY32Dr!hCkHMfmdm1B"b,!BH,BADf "&b0CHQ9B0Sqe,[EXqcQ,`hEFaGi9R-6,&Xa$`43m!e,mmHmQmaUf3@0i6Rf3!1p ECRlfMk"RbY5dC*EiBPT,l`F!P$`m3J4P)+lh%2"cHKiZ*iZ-f$jZ6qdckr#8P"m i#[%46!K[+U6Tr0K%+Nq-I+$d8&[jh*`[a&1[4cDI8%Rel"qm)GF34V4S1HjpGNe YZejridHFN[e5V+[rM9dAC&Kq'8rM"$hih,G0Q2eqf,#(dFNHNkXhh3E-B+14XhZ 'ChN-$aQfP81J!!$m2cZ0!!F!#e*&384045jZEh4P!3!!!!K849K85d&)6+Q`c[# TX0&9!3$h)B*&!!B!!!'5!!!%bJ!!!@S!!!,b%P0dGG9c9'KbC@&N9A4TE(-ZZ3% !!!4N8&*25NY"5%bTRLUSUE$Pl3%!Sa88"J!#!!!YC`!!!!!!!"(r!!!!!!e8D(* PB@46H@jMD#jM!3!!&Q0849K85d&)6+QH+m+TX-j`!3$ZP4bm!!B!!!'5!!!1r`! !!Bm!!!6#$94SFQ9KC&0jEQ0S,QJ"!!!FY&4&@&4,38K-UCiVdkQ`ikm"!(RVU#i !"J!!!C)!!"ee!!!"G3!!#i3+8'P`C8aTEQ8ZB`%!!#QY9%9B9%Y"5%bTReZ)UE$ 1V3%!C1a-+!!'!!!"NJ!!#5!!!!'1!!!$Z!T3DA"P6'PZC5jS!3!!,[0849K85d& )6+QI@fbTX-l9!3$e[fiP!!3!!!'5!!!&m!!!!@!!!!-H"R4PFh3ZB`%!!$0a9%9 B9%Y"5%bTRfNPUE$1a!%!M--B`!!%!!!"NJ!!&6)!!!&Q!!!)$rKj!!!: