From: Hugh Fisher Subject: source/C - RegionToRectangles To: macgifts@mac.archive.umich.edu Date: Mon, 21 Feb 1994 13:29:32 +1100 (EST) This is C source code for breaking down a region into rectangles, plus notes and a sample program to demonstrate it in action. Comments welcome: send to Hugh.Fisher@anu.edu.au ------------Cut here----------------- (This file must be converted with BinHex 4.0) :&P*PCfP[EP4[8Q9MG'&ZCfaPFbjcDA3!8dP84&0*9#%!!!!!'r-!!!&%RSp6593 K!!3!!"[cFNaKG3)d!!!!&J"a!!834@&MD&*PCfP[EP*PBh3ZB`!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&%!!!!!!!!!!!9%9B9%Y"5%`"!+I 9&5+T#`,%!!!!!!!!#@F!!!!!!!!%LJ!!"m%!!!!!!!#e)-cLl[ECAUk`$p[r`2R qrVqVbi!AGcq!0Y9V[IBY3ArA92k8kGTCEAG88bcSpdB&UY6I4dA[aLIbrq%2#N2 RiFEiGG0LfNj*MG@)Xm3FS#EYjf*AlYCGGc)CI`3i'4+&'eB5&cRPI-AFj[m+,ZE (pfceQ%U6ZqaZ$ATi[M0)-DBH2P,ZS-LS$T!!e9aMf-1c,41r`h[&qHrr@X61!ND he$,mhf!(k&p5mK+Jq!KlSLmqKQJ[d8*!Q-5p[I`3$Y'Ndr-)N!"pGZ[,Vdq',Iq HM+,eC(AQB-il)Q$erRZ$`%035Fk5,!"I[qZr3d6i,fJRHVa"-DF)j*rmdNGb,GB ae`&Q"92Zhm3FA[BMFSB!1c`bQ)f`0q-fp1UZpLLYp6T4CNq4NTd2646p8E[K#)C ePKmH$r$l4"fBA-hcX1UPr@9j*e3bFGr+@UZLdENa,&XYE),"E&Pp[TjY!*rJ&8% LSBE6J4bbaIP!cGHM8KF,Hb(`DA4`M@rRE&dQmrqMdmJfZCp&'hYAB!B!KU+TeJI pA'$cDVZ%T+c+QEElZ3KEB(3B2h*j#F1-f,aQHXjE8#ULXQKm4H&0FX(JV)*6"J1 I-"Q,(4@YLPEL4`MH&jXblDfdk'2+29%ZAaaY6-9+59T1q@A58X@q&Z['')NH"L1 YYeD-P*l)4LDESZK8CZZ'mp%e[QcfFfc'&3CFdJ(8441QX*Fq$a)pP5#bpirh@m) )&('cUBbb8F+4*-D!8[CK56B6KJr4ZE&(DM&)fVp%!UPDKJ5PP"6f$$#40'@'*S4 I)5NjMjbNSrIk+0+Nk'V[J3p6QdZ%r@SbK@-6M)j&FLC(bArA&3*#&l0Afk+B'V@ XaV`6d1[+fMU!mP*GKBk'NkFq9ZZY+B-%GM6McKLQQi38BaL2,@YKXX3$b)d0Ie* 8ra2qT&d+XULEFphiRIMYXhaaA&ICl-rNd&+T"SMXS*YrGP-r*+i1DldrJp-5la@ 4&V*q(`DY-9Lj0qbXN!$99L4N%Pa`Z(4@NA$4dj-PP&f$G5[F,JH!RVlbZEp8E4q ,E"PP,@**M5pN0**cJ1ZDlG%YBpkF[&aUa"m4kZKj*$2FF1kj8CaJDXmk@8ZAifp ,D5[X@L@Eh&eA55B$Rh`ehqN*D4[UT$pYY32EP00rQh*rB!G4QT-!bE&hla@[Qfa Pcbk2VKM+028BJAXph[#V0Rh4KqlrRS2,'(3F*$hGl0)@*%jT1I+MF!HXmfi[Vf' 3!1mC-H#lDSbi@-b6(k[X,0L4ak2!8a8l*MIhrQ&`23PkE#q)RqX)T3bD@Vh`3F4 Z4-FF9X`TR3V8*d%HTQ@qdpMT)EmidLlp0,k%TFX,Qb%9[@F5$8iA1-(@898P-mN CCR!1VcI5Dd&)GH"iSUbFU83YF5%Z-kCkQLD*!rZL!3S,l8"Y1&r28#bUaBpA"!" SU#R[YR6Vil1*dRZA@@e!9I0LU153!,Z%p5RciI&3*8"d8(eEL$"&ITYSUcjHYXf [C`XVc86%eq(AB%@q!efMSVY!1YU[DI9K8S+X1c4*5ARLrq,,,T!!GCD1i&r5&qi IkN!&"3C548&%689RD@pZ8Q9MG#jM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!"B!!!qe!!!!!!!!!!"849K8484*9!%!UB[f4DQ,pd!!!!&F!!!4M!! !!4-!!!NL2m`Xq!!!!!!!!0`EaQ,MF-B!p&JJ50!I5fq*qXpihlZ@XJh,"&maUh% ilrefNI)IrI(YHr1aD9k*mINZpdHEd1c2-db5,2"+mNI0c[2LAj!!-h!($S2!&F' !$8A`8V#l5hk@@Y%pRl&ljCS,Q*!!D3FUMZd1E3AccLTIeGDa5q@6d,V&TqXqXNm lCRe5I,fr#G`$'q$kLrXDYbX,#@FYIAGpBfM%I$49TIZRIQ884GeFNYerd(%8rTX b&!RlArC*kIZ$lK&GIU&akjA1FbBU%Y5NQe46r*CL"Fha#'pi%A1-8Q@*PIX3jlb fd``&89DN(DbKc8VTbf-B(b`d5#!DJX`I!TZj$2X(dN!H3QdFX8h#b6eS5DVL"!K R!Z%e[@-S!-cLq$kIArkb-!AY`1IGq3$q[H!BAlZ,eYKheDR"rRiX@Sd-Ilir1Z# PLK0Cdb`MEbUXUD5HjV)U*YE$M[Ma3pI1T5h91&,C4fTVEMMNN!"h#hcKp8(X%cm a)EUSCM+U*klmJrJm`E)&TP6jmMjlXLfVS@fkAe8k`91%YaGZ'#T)Z5"+(S8&(QJ SFS&3T@Ue8"LK2X&F!-5!(QJJm@"(@-6bLp0Y'ITJFq`-`6pPB4dmrYT(qQ,bp2) hj9IaAU+Q&lm@R`GqN!#b"aj'"+i!L&XK[PC0+8,+*#5R!$0@Bc-#+aPQBlFLiRm 8KHbla8RQk6eX*m1i)'Ldb(qaqLb``%)4%DCZ!5M98B2&FA8$9E(d8eld(aPrM3+ ,$d@+XKMS@9*I)J-F@R4eajPDZe9h9481Xpq+'prbS+IMBdcbb6jUEefNAlZPJ6[ 2"cBIGHhcTIlAKXPSiG@F,VMIdl&YD',RDaC9hB4bkcR#*q4U&h1@F+jkZ[fS6+V 9DkmmGZ,K4DcU1$ENH+ZdBG3A0NemY[p4@@6C@0Hed8GGYLKZj0qXi+ea@(HhBLm %4bdYN!#CA@PpA"cG`HZ'NTJClA4UA5Z@9#c$(GmX&T*,$A"AaVj3`8GEPN8hH#- lVUe'3aPXcb$ZAfCf+TYhfXk0PS-k0QbleJPM&pPB)9S`0T!!aQRa(AGrMVXeF%N NmDZ`X6&rV*@ll'N9DMABc)1FpS+!Hih!5BjjX98lY&1h#ZN5GYCSYj*Yd*!!&Vq m"389f'K(ZE,)DMY66DSFCPKT*95SYh(1Vi$JG(ANHRSa'h8L0#iQ[M3r3a1SLE0 eEM4m#RF*MFqj*9RMQG5#k"`4i%&#Nbd!AB(@K'r3E#aEe*k+YBk5G!L*++R`mii 3)JjkR-JEb*Z"c26S'aUi%DS3A%NBR-eFFfYqJqX#I5!*XZd6pGh`"pLIRrkhrS0 qKiY@rX!$TlAphY#DjU4AB*[&55DVXFlR4ZS$RFXY%B3-!c-&'5'P$#V&FkGJYd2 GqJh#2BR5+Z#6rCIp9"d+T&!RTX!#"!lj[SMekpAV54AB!`!Ac9LQ`HS%bB$`+63 Dp$RXaC)9"q(REVMr()Z%km3+pGXDb8X,irDNl0dJ!,dLqJ%XEGhB0rKr+hE&%Q! Xmr(jlCJYNhk!1ML"!Vrh3FjNrVEkmkaEhcKVA`5X15m03VU3!2cR4C&aB[jmp*1 @$q"%N!!RX+"L[Ef"[p'J[&Uf[rUG99a#lcG$GAbq8K`V$T5H20!Vq!I)ka#&*9j D3E"Id"Aj+hU%'0rY60Xm4hI2"(Af'e8j$#FTFKii*d4fD(5eNe&'XfF*mZ@S,S6 8D+cTj0)DNi(GK*'%frN$KH(DYcTC#B,q2')9N!!6$1H[Fl"6LUkYPVR-)j+S`&p 5hmrdmY1Fr*E)jPVap-MRCEVTIZ6SDR8eY9#4ZBL&*hD6!db0EA*6D%hG2mLH9Y" ihV6HH-+-F@@@R3TH&@@rfCc!,UiHAMRdICr4F[Xb3DXb"+-GlqlipE['9cl-Vr3 BSV[JGJj-NQmZEH2@HZ[@ellS'PNJ-YMkGEkB$pcaV)Zfipl*RA,jl*4-+Gp%PbY lfVBY&40D$pc6*H1GjQEi`8F*DL82LmRTJlV[QQ*VlL`YD5[KQV&EbCjY$mXJ!*( %Zm[(#2)SDmVmdD'GkaR1rSZ8SXqjC',[6dkNEbVXrT+9hL[br-f*r35+RU'@BrG 9dHGeR2"YUHqPG+#[!M#G"F@Krl`C['I[8c[,e$c*c'leDbTBpqQH5V-A@aUhM9k I@iUYE%H#lFlb'HifSU1,!!cHVj4a0BT2I&9Hl*@#P%3bF3@)C%fTUk`(*rGB0-@ XVGr[(mJ"h4G9J4[1rXPKZ22GfH9Eb$1eIZ0h0jB,BT'E,RbP(A9['Va`F*%cPhJ RH8RT&PVjh+1Q*&##CCZhaMZ-$deXm-C+%UQYjmmkMdZijdBNVY`lDEHMQRH53b@ Lp5Qfb9fcK1GLXT!!`4ElU4`KIiNG*%YCMUQ5Li0cN6FZaBAm5pKX,NrHDV)%HHR 1P!E36#4beH0'[I!ccrjC1#ikjUQ`(ijYIR6Q5K*851VGB8FLrklc"mI0*ecdPqC 4"*Y*NdYkriYTU%0`Zb[(VHU(&LU"I9`XPfKmk[A8GZa[qqHelPE9eDNp-J()IND e&3!H6H3@08deC9PT&j3Uc6()"M+[H"1b#i@Gq"'`mXf'V*%ckZ*[C*M3iFZ&fRF )aT1BLAS6&$1$YC@RI-LJXl8TQBM4,b4d5!Ap##m4Ee3hi$mDJLm*iAN[D)TCKQ[ 0)T@6Ga5F(jmdj[`Q%j)mEkXhM-l5Hmhc,PXl+E-D*jaNANM)T`PpmFRbdVZU8(P 9`1jG+(HjrNDA'X5rI@,RYKq#(BXZ(3E3Zj+dV#*EF985R$d"d1fTBKXN[)haGk9 AjD6HI4i8HmUpqTmYUHREVY(0ri@2A#i$M"Tl9rlTVMlJI0VZXUEf2FiL-A,LFh+ QII&RYM95lYSr[*Hh*ZIVrFBX@*el*@,d[B`0pH(p%f"hEcTI#4PYQ5A)`m`jIeX p2ibFI8A"VGPAjMli"1qfcr"(qki-F+5T@iT%1rMhAHdUPfki9Z1jqD@MC`IL&Z9 IpGd2[E-pSPbal2PQ"I(bE)e(iNqDRC+iMr`p!f[0dE`H"l#U2Y%qdZU6#Q5l*,R %UlEIXG0VHPk0MD"LIh%XMk+eqi@pmUHrcVmX#@MM`bjS@LeJ$!%hd+0lled#Jr` `PDQ!,Rm@2L,E$laK4D"%+XA@,jIb6DE!K"Z&0T!!f#X(b4&N,6N3R$Z6HUA1ZBr "2kK"[hdaTr2hP$N+fE%hEY[hUR&2HF!AfF5T@pYCRV",VmSrIM5a[ddiA+lqV6E FrDclGlK+DY,K(,Cd4'rrH5e&lpl#TZ%hj6GJ%b`cHAL(bcSSC3@fqE@fHPITZjY U#1YmaV[@TShQ6ceL!PphGfriLVU1TDLCp+#&(e5%q2*iXrpf,QNrXAhpEG)l(1e FJEE(dh`4`qcVr1XjR@3c[Mrm1m-[QS9*S8d,lZfbD#jldmhKiHHUGq0%pHcHHTm D5cp4HPr9Ap[BrBQ9IKHcYq*E,lZiil&qE$LdfXcH'GDHU"4eeAU[lCGM`p@kpQ, XSM3l"3!58Q9RD@pZ9'p5C@0dB@jRE'9c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!83!!!@&J!!!!!!!!!!39"36$mr2cmK!+Q,p)'TLr5%!!!+#J!!!!! !!!Aa!!!!!!6m!!!!!!!!!!!(KmCLih$K[b[`[[bNB!lc+,LXaqYRQlL)qIXl5-9 H,VFbamR1-qAZU9PAR12fhS'l#VchHq-hkrZem%[162[!2E'QrL(riZ1ZKacHj%G LQIJ#[JQ'63!!$8AU`E,`6PPrEbD9JAFmPKUh9S([UeRVlG09E*8K-"8U+U!%3(Q kLJGL-%4)LPY,9bq!J!pJh0kJ+YDUUI'()'2'SE"a0GaJf"Q'j`(9FK)I`b#J%3I A$8mH%Ih"Dcflj#fk*0cm($R-`*b!'V#*PJ(B'N34FQLD#Qi+!2Y`'r!Ah[jp9Aj !Dmj#T!$M)C*1Jf3!rL-HIj%Ief#G`i"MpSMqb"m##BhL!i3Rp"6Vb`9d'2N3qiK &#dB)p8XmiYc%Rahh-""P-iJ&JI5T&4aa"@Ym`lkZ$V$!T#E32Ni*"CZ9i'$AL[Y bqNCSTpEXEdQTfcGaeER6q(,1Xe#f0BT2MheGYG,-P&NeEZLjFjc3Y2FZ5EKh*3( RU2Z`r8GFTJdIHY&[[2RIqZrA&4*q+NGkrKriZS+1bk!JQ2Tmdf29('k6C,#r[pT 0c!IG,S#U#CKeXI3NDj!!phYK)VQ`$'e`FF56Pc*Z9C,lh1MjmMM$HXpaML$A1[5 %iK'+UiJ@+ej3A5-p@GKdiX"p-`RHQ`RDMSHFeMX2@KQbG'BTP(CSi)+1cf`J8-# &DfM2MqXCl3[CRZV'IZ@QHVHR'jk9KTAaKqbjBpL$DX++M1"LCFFa)$1%ZaYQ!S@ 2fb!Spif1+[[4XQ1KZkZT2`E!@Z*FUXqk)#4mG8Fp1lk2#Bi9Q[Tfpp2LLYMZXel l(CjTjPXKA#Cll&SSeUYdJPCP1)T+5Y)lh5'C+kjpR)MHaqGm3NSjdD4ml-TGrBl @I2%[CbmXqVfRfYFBqB%dp4f%T1FBTK5Hcq#cQ1fjHBahadaEGC!!%ei2BB3N8$b #HhJ#qX([cY(QSYB!Z3h2IkGH5RC*Q%qMU'0!)0kCEq!T`q'rVe4H)p&-pj(qcaA NU"Fb`10A0Df&Mm&mS[J[#Z3,b0qKI3+3!,fJS,Q9(J[9rJ[N(!Adj`ZmE`[IIB, M(`,c3mViFQ$j+`4ibd$fh88)"5!465m+kI)d38V2rP+rjU9)HZ065-Z@YI$#iTF Zak5A0JQbbDpqS,CbHZ@L3XCHl@',T#dCVfdk!@(X))8h)QT5j)'MK"jK&8HA3f[ #HkSZHMh+ba+Np"kIl4BKKCG$e(1!c%KfXrmRT-C1U#r3LQ`DqcKQrJebR"V*p1d 5&Z)XQ-&l4R0iZ)'IKm"#*[m5Q@5GX1!0SM!4*[K%[c$EdUcGk+$"pUDB16mijjq T1GX2MY,V%`rCrp@2jDqDP(faeMDki1PVUilhUI%hr-f0jI"VUJpV"69aJIj46rY Ab-ddAE"5kH,bak-0e-abrY+6h@h'YIh@9"J&"6'H`#XjJ&hr2D@Z0Cc$0G6`a'` #2FNee3cA0Ta%iq,QTq4Zj3%`,EBMKY#fK9R*D81S1@15S'iLXm6B)8KJTBNkGII &4B"!VXH1*pYB1M5r4S8)[CFf%`B-B6VcBRhFjNBBmQ0pj8kljjSA0$IF'4Re99@ IUlEcYBrZkLq2h[b#Bb8[ZbCEiD%H@[*HH'ac#hH(-j@-1dAfRL$m2+2iA)p'S"j -qBTk(a@-`I`fP0&"$$8#(aVD3-2h[`Kp1rG`#&!dXTZ3!'G#!ZI%QL"2fMK(C)0 b4`br)+M*eA#MQXci34K0KXGpZq2UCkI)3HV!5b)$)&qmbU5G9PX!Y39MF&JC)cj )hL@,mM*FiRbP)f[dE$[BL9b0E&['YN#i%kf`HrDZ%$!$[1Mbh[81&h&j4CrR1dG pCT,%SJ"+1N[AXR1qq'PZlCmBq8S"iaF$kGX$lD#"lZ6S(3H!jp@"hF#"eB#`(qf 3!$hmJI8R!Hf'V-XUq@RAQf-RC8,%rD@LAFb"GjHSdmhXJAUM66$pf[TE'cEaUC5 LPY'QEcH&HKrYCdDlM5fLJ5K-AL`"D"H#8N`!(R3!CC!!ACZ"H"A3(N#CUMYfIGK IS"$!*1G$961L*!!&&&*PCfP[EP4[8Q9MG'&ZCfaPFbjM!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!2Y3!!!!!!!!!!!!!!!&4&@&4,38K-!3#TLrGNUB[dF`! !!!!!!!lc!!!!!!!!"@d!!(EC!!!!!!!!alR-l[ECAU!2cqQXkAerppmIpHlhLff raDf&d,RmrZYr,L`[k2YXDi"3QZU03$QNq8I4dDVhdqp%LAFRkR*Xl5d3*IJpZV8 "b2dhj'+XrHa2Q3f3!&5m#j!!)PH0FZ`TI3QcN!"X*G6YL%'$Ue)QbNm"V"Z!V!3 QA--0ITNT*ja+4VHIq#bIZbPNi'"&D0C!&2JY"J[d48+UIJ$$a&9GHF!eICZ6qj! !SRq4%L+jAhh65q'%$ELESb!S#@ZX*LcGq[cGB[()N96rN@-e"`i*D[5C6B'##er `$b(p@i25m8P2d-pph,[2I[&dACb68%4pYhaMZN(YRRN3@iKdp4*AIcA`2#!4VpF Q"L(A2r0bC+$hlcJe5"A4B[Aij))j'Bpmkra,Cpri$(EAT!Y3i0C1YK2H2+CS3f) ,2N$0Hf6rdTXa@h4JQ!Km`8CX[!UVa"fQCFVpaR-$8TbB`YF+PHq8Zl)RMV5LZqF !0`FjfKrN"+ACfC[RGd'a'0#cQPeFklAAYiBlYXEq0abpc0F"9D!Kd&k1Ji3`m4p B,H,m0@K%bBp!pekcfL@-r1Xj,dS!TJA*43FbN!!5$$S@2%-A5@V`-LjP`IilPdN D%e0'c'Fd`c*5dX3C9-&XE3,8aeCkkhARCi[+5UDNQD$0C-c@3-h*NNBmU6rc*e[ 2qJ$09DalSM2pZ@EUKric!XETI"NLh5)RqLTL#rkJ,9JaPcdK93AX2P&r+i5fdQ2 ,2V@`&64L3KCTAG)j+6D9C"p[N!$(8'UPIFDRAE$6RNR*ld#Q1G5HNAM!f&@h!Jq *BZ2'$VI4J#e8-3B`2R4T$GLhRB)8%21c+fKfB[e2mM-Sk)HD5M!iJZDS%c[%8(2 Vd-pE8dNA@2CK133TH[MN@V4+V3kN8JLE#FiTi[l$B(k,3K$'(3!UAD3hD8,P[i, P3`&5M9!T(k@Y-#d2q6JJcN92*c5pC-4`N!#jQjpD"1,-f6'`I8C0hMJr6K`$64' (-'d4mX(Z%NHEh"DNcP'iXdT[JMq!K!c&AIipEkY-9i,%Cii&)!*26)Q@Xb`,4RB -5B@q!Zddf6-bc-Q`$b%9'$Ar(aXe$3'e4[SU906"qp8LQj)VFG6+5,@EbN$EA"' +2EG@JA@FP@S$,3"FUiQ5!X68l%cLpiF@1LQA'XTE[8FU6-PAIm$PFVR+Pk,re,5 kFkZ@ch$AhNkGZ%E6AmGhljIETcY61&0ejlpJHrlGJ@kHBe-$kplRJV[(ZPA2)-P fhdIZ+fIh&YVjlf1'*B)r5aBmSEK1ZHrP&$ae%&,k"bjIkXff"3YT#iUqN!"hG1A q!B(E6[Z$BPm[L!bJF#@qRI)m5kJZUkflcfeU6h$GJ1DQ`Y1V32pbA*UVIJ@ND$T 8e*2rdMr"3R1X@&193!U&0'[09mbP-K!H+r[EUkd`2jH[QCfCZhrA3Dh&eciE@FY U"&#fff')0CSS$+P#T&4CD6ZkCU+j"4KfadaM([8$E6GL&%NUpc&+fPR9J9i3RGe JbRc1RGGY6JmiPGPjq4HGkP+p&f%V'r@$%#Eddfr%df,GM5XB,QCMphVE2,*M*hl HYKPpm![GQ@i$lS46fF6@bEbQcL'HZ,S-6'R+h+E&T+,kQk5RVkBTU#`f*Th0,8r !beJp-LJ,3I[)1JGd&i$IcBG&1D8cEGq(BmUC&)Xk9`l*f2Np8JAPIkXRIlICm[f !6F2*VkNN`AljF5rTJ9fdGEPkq(em,[NMKX3NPhS50b&qH9@CQABXp!45P4LcC1j qidf"0e841kH,[dh*[2UMVH3(B4pi1HARUkJrFqGC!rjaV4qJ2q-HTb9H"qJ4qb3 2(L8c),d%Q()0AHG$)08*IM-G2,*TLrG%NAd!SJX*i,JT!!!"!!!!!4)!!!!5!!! !-J!!!!$J#3!"#")!!Be5!!"T@`!!+9)!!F65!!!!!!!!&P*PCfP[EP4[8Q9MG'& ZCfaPFbjcDA4R!J!!!&0*9%3!!&0*9%46593K!3$rrrrr!!!!!!!!!!!!!!!!!!! !!"1KUB[he`!!'r-!!!&%r!!#Ir`!"(rm!!"rr!!!!!!!!!!!!1!*!!%)%J!"M9) !!'PE!!!T8J!"a0)!!!!!!!!!!!!!!!%!!!!!!!!!!!!!"r!!!!J)!!"rr`!!J!# !!2rrJ!!J!J!!**)!!#55!!!NNJ!!**)!!#55!!!NNJ!!**)!!#55!!!NNJ!!**) !!!!!!!i!,J!&!4S"J3!!!!!!!!!!!3!!!!%5!!!!%J!!!$)!CpYm"lJ!!!!F!$) !!&0PG'F!!!!+!!$rr`!!!!!!D"Z!h$8: