[comp.sys.mac.programmer] Optimizing with Apple's MPW Pascal

jmatthews@desire.wright.edu (05/10/91)

Greetings: At the risk of presumption, I've written a short article on
optimizing code using Apple's MPW Pascal compiler. It discusses the
with/do construct, inline code, and compiler switches. To preserve the
styled text of the original, I've incorporated the article in a reusable
"self- displaying" application. See the "About..." entry in the Apple
menu for details on recycling the container.

John B. Matthews, jmatthews@desire.wright.edu

(This file must be converted with BinHex 4.0)
:#&4TF(-ZFfPd!&0*9#&6593K!!!!!$9p!!!!!#Vj8dP8)3!"!!!eIA*-BA8"D!!
!!"B!3`)!$8e39e"KFf0KE&4TF(-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%&38%`r2cmr)3'N5ir#T%Z2b!!!9%N!!!!
!!!!dp`!!!!"pp`!!!!!!!!!!LZB!!!3)#%#+VS"4$JTm"!++1#!N'S!a)!0$Y9S
3!%4"pJpIUP&1kL$4!`$#$ai#8kdl-)91(MC[dT!!%8!`#"3S6(lSr!%L3)!U!SJ
3"*!!!8K!QcKhm[3*91M3Te!$NPVb5"K8+NP558J&)a@cN3!iT0S$iSQ)0[hB4BS
'US@6Jf,N*!"P)dUbIra#TU+(j"`JF$"HK#Aa"J!'%B8T[#LF8B-%B'!%50#f%5q
6E`F#2(N(3%(),)pHm'!b"3U)(`"5J3,a"35#N!!K4E6q!)U*#d"`!,a)%!1B!"!
KFi1aT`52!%GU9)$!3j!!CP3!!J)N#$M""m%"J3%3'-+C)S"b5D3&!a&&a+@q!-$
*+BJ%M!B5BHJ!S+""QJ!b$#J&Q#)JYjarN8&!Q6*i98E1C3H8&)J,58J4"!KA1!%
0##hd!mmC")!!K"13!1ce9J"b[!@!%L`d-88ErhLc!ar3rF10%#KD)d3V&XlB$cd
fiQ-M2c$k`d+2,N$4MMm`#1P2$&%-+815rX`!!`m(32-K"`fYJ%4DRiA'JaC&52'
%%'HS"X)&CK#!a5-KN3!%D+)4%3393B!TjK80LB"(!JL3!#!&'!l)J)dC#XLJ3@4
#C'%AAVXNBiBl(hh%*Jp%5&%%%h+ZGJ8S*66d8%369A444T9j"**)**Q%8J!UK35
@!@$)3e!$,bJ!3Q%)j!B""ZXK"J!$mP'3!!%X-&T!!K)16J%M",-SB!@"r*b"J"4
)6!%%'0kX4d*VAd$aK!q"5)J%LXUJiJBUrQM&P9GJL8@@@@LTaCCEF-P&ek&jeE&
AAhpPa`&KKZQU''-!1!DCC*4aa!q#QR(Q@4f2NQBDDQ+fpPSGXFe@fffjlGEEEm%
"-&aaab@hA!!`$)&2!"5i"NNNG$!!Lb"P@#"#&#%JJl))J!J4JCd#U#)#)L!)%Nd
UZiB%bKJ9X`B+'8j%!c*bmZK+3&mIq!"#!X$J-S!'Cc!J!K!J4*!!pGBDQQ%!(*1
!)C!!'#JNS33&DK!!ab+YXT!!"!JSi$@f"Td!Bi)985!L!J6#D+f"#`&%F8KZd33
6bc*N#%5$%K#F!B%D!V%!!KVD4H--j@X)")))$a41YR'U5!)*#5KT"`!)!N"cL#b
!Y#'!#!$!mBmXJV34%$m%#%)3)*))mNN`R[!$J!8U2,&#%!!JX!)H!@!!J!3K1&-
p#&4%JB3+N!#!3-(H+aM&`!C8P"4'30)S)B%C+SJJ38p4!1),)'+!!-NKCaM3mXX
aiji)P$#0m4aJ%X#)K#Yf"3SAJ)!*S&J"'0$!S[8"!"[V#i!%,'J*q9&)1d&Sar)
'@%!%FJ-3#Q5J#j6!2kXP!"++1)2-0"))54bL$!cSAmYS%BJbC)J+B'!&#3$"K'J
!!!BMF)*f4'!)#I!#!%$BM38*B8&IK%%)XN'#%@%!"P0%)4&4@#!$VJE$-`KJL#4
)!JQUmF")1)-%b%#")M$3LT+%3)35U&jZ[L&#"(K$H4Di$"r`iB*2E!`iG4$I'45
`0`ej$``%#))l!%#$`CP1!j6VQKSS)!,1%@!DRi[!'K3`V-BpVJcLQ%JX4-L!-F!
M*"p%!#`1B6X3('!))V3!pk*aM%J!`a1!+0m5!G$!"pUb6"'%*45m4`%)3!%3)!!
%")3'$"!%BKTLK#9+!"'3!0SNl3ZJ5+)qqU%*f5JY"8iB*b6-#8i9T,-IKK$""d$
`!ABf8!4"H+FGC#1"$m$J!lY43J!`G!SM4'B84RJ"%V36NKIFDC)%#-R6eL##*`%
!%JJ9!4)XqSQ#cJ)CPQ2R2hF$#NMm`#J46@4K#'$4!'Kd)J1B`!+LFd5831!KdK)
#&LV$$aNm-3$,%B!VCX#(IrJ$1Ja!!3$q!B!%R%%)5P!U!Y`!!U,qJkN#Q#J-L#S
3k"4R!5*3!`Qi5K-"J)%$3NJ$8T9+NkP@$J&F*3"d*X,9!8!RVGTK!!kJ%i!AZ%%
"%-""Ak8!K!NBj3!6G3!#pNS!X2C[!L`D#!)BJ)FIr1-iBM!!C,ZDJ-!+`!0"d-F
rYL!$P"!!&K#k#cmF0!2S+8!*1""!*0D!!3N)GKmdI3!$"K)!3!@9'a2JA))D-!2
MC-3"a4Q!2GT!",cf#58m!"1pbK)$2#J!#iD"!`*%!3BcN!!J"TbM`I*%F3!cD#!
%R02#%82!KbiPB3PKJ8-!Z'Zf'A$1!J"``"m"S!F3*%%fA0J@,p4"L+Bj`3Vr)%G
I"S!!&,LK-b(mKa@'i)i%L`!E&iD"#a*X!+0!S-2ck3%3%[`#"QMi(qD!""ZJJjS
6N`-59%!0+P$"J`fVJa-V0J!5M0%)j3R!"aY'KbG@2,9M2'+5##Ma$`c`J`2-q$)
3!)B6[-#D!%YS#%9`!K@k*+N$ri-G*Fl#%d36"#C))FBZL*jU82#&%VpP(k,JhJX
3F")!$1!Yrb"$&Cl`Jc3M3!LR5%8KH[#&cV"jbUbK`K1ZR18Y1iJ*AJC(Aal3i!F
[YJAri!)Q8)3&(@"D#jT!N48-8)4r`)28A`i#1dT#iAqJim)A4S)EA)d+1-MkblA
Hm`Z#$'K8"%)*(cJ$'QVm$hG`BYEU!2+A26&VG#M"#'EM!3%-B)4rU%%*4c#$!ha
3!#3B@AN1J%%")(%%kbLCb3F3`JP5d3&9XlV#VmB`0Qk0MPVIQKhfERDG"I!@Ii"
#b6EZXk[9RBS032Q9ALKN5,#Xj5jG)3Q4hR1G!h"VF,bP(`43`KI-B!-Pc&SFA!#
'%J"`"K+)q55S!--(6[8@IL$Mj$a!a5G@,T!!PZZ#RV$iK"9%$J#KG-!S#)#N%2`
mC98&B3TA#%)5U1#%!r[$(5#`0)Ap!3mir1$#2*8eeF(#!V#B!#`J5-8L*-k$!Cb
MhfSJp01RV2!kF2N*Mbl#mUjh25qli`8(d(8,r+'19)$""ar`44[mSBmhr1J-BSB
"5i#!"'!)"JCledIM"I1#[EZMcJP!43rS534!S+Eb6dp&0m$!!X%6RJdQ!&2L)bq
Yb4ra!+i(rH94N[NH+&VfSYr"%3M[JJm8[3j")))5UM!&+QcCbqcSb`%3S!-r+k%
)C`L)MSiJEV8"`"J-m&d!#&mB!&$$$`!+L$2dc[G8L1'IX"Kmi32##cm%`2Uf!-(
JS3k&*+!MHYNA#2F$)JSHX%!lR%!&IZ!2N6%&4l"kK0GkMRG%N3F04a"lPSGjQJF
$1JB-1HF'eL!&4f"pD#"r6pF3pKFpj0GhjrF"kFGp61"r!#L!lbF!'SL!NVH!N!"
(H!i)J8mRJ6e!JBehJGJ!"KM3B9m@IIpJ!p)LK%"3K%XP"8@S#D#R$M1S$`i)-8L
M#rkJ"e"QF96f"9B'$9-`"&l#"%a`I!L@I1F`!"M3K"1A#Q6JJHk!!P#JJJb!Bp'
6H2rR"Di(D,+(JcTSJCr`"J6JIQ$J!Mj3K`CBJ!Ii"$"3KkkRH$BiHddeJ49iJGb
JJ3a`"!*K"Jb!KLMa$kR3"@#3!'4lT`jbdJ9SH!#T8!CS'(QT-!DAJ3&5jJ8K%Ac
$9haGH'!"35&2"`ZYi!rfB!BX!(SmN!#'13"k0$"aB%%'UA!%1k"qrZ!2+c"im["
dbqJ2r%"iB+!#`*L'1N#-aNJ5AD'-c-J2cmL,dMKicDJ2r3CeJkF%5-!j%*!!#LM
`HiTf"%I!"%83*`B3"',`"R9!"mPJ!3FJ"@9J"f8J"rlSCHD!Gbh`B!c`$qT`DqU
!#R'JDcDfDp&cDqD3!!TX!(JJX'(QS)YmC`BZ8)N!%!KQB!%MZ'X1#@LTJ!D!eh,
N!!B5N!#50[BY!#!$,3Pi[BGSfE*Sd%!%6c!%LhCmYRK%IMC"QTJ58mJ2TQ"pGY#
%)fKqUpKbN!"JI@$3Ep"JI9L3!*3@d(,i!!C)N!#8&p"bkJ!'faL+G8B",FF0T*H
8&G"bcJ!'(P#%P(!&3(!'SP#%Y0!&GiN,45J-31J1Ck!-48J02+PS%J+85e!%@3#
8%B*Jk&"L(4Np)+N%CJ!&S+F%U5!#QBN+Fm#'$G'1dB-+Sj!!QDQ3!!BHU!iJH(p
dpRm#m!-8J!U6m!1Z5C[DJ3U4!*T3)*UJ'(V6B*SMF'J*p`NK!C49!!9Z)SDZ9Q*
+i'GRB!8@U3#HfB5T3#H@"j,bJ)RCH#UTN!!$B+!!fjN5CqN2`BJ5!j!!#Z0CRYV
4RH&C!1JCRJD!RQ"!"G5*"DQjQY&MQkmCQl0CQrp(!,JCRUJbM(ZRRZG*S14CC`6
!RJ9DCqk*S1SCRcNJR&AQNd!C"%1!&9D3!%p@`(H6"J!Ui'FXd'e'`'h2eRfB3)(
@*`JNf9Z[S3[p`#S"33MF#(YZi!rXN!!+4V"R@THMYS!$(f"pDU"ihlN"NH82da)
3A&#%mM#IHkCidJ)a`J!"(c!&*%F%4'S#,FF,CSQ(VI-(ri"ldB"le3"SH'KjU4!
0lP'%eQ#ACp#$(cCLR##%HP#%R&#%V#!R1(!C!)"`E3H86C!!C98!!X#"B20@KL1
bGd%J3f4h9EIQ$AcJ!5pJ!,ef9N(kMV63U2r`U+N!"ac`!8TJ!0%A!$T`BYkJ0LK
$NDjfDpU3!!SXm%pJS!CLTT,SN!!+2G"[i)#U%[#S+YQUXi#U"0#VY2SYrL!%U9!
#eLF2UUS0Y*S+(V!"Ai#NeZF0BTB+*)"cV[!2fV")[CS+34S3b%#V[GTb53S!IRQ
ANP#%RP#%cP#%T&!&GbN,eYG!'`B1!R!)"2%2ZA&Ll#!!h049$2#[!k&Y*fH+2Y"
[3Q"pG0"N,3F'3UU5&UF,r%!2B1!&%,Z['mB1FK!!`2"VJ,"c3[%"!("al5%%(IN
2kS%"iS!+8`!)(&HY*#"I`*!!VH#J""m,$#%lXM"+!R+*K(`(Vd*S"d#l9("3K+!
!Y+E`"AIT#dU`GhF*!2i!#AckLL(4"%VR"%9J"9RQCGMJJ8S3"2F(!Dd'$V#'$5G
Q$N!)$b+'BK@RS!U+#UNJ55MED[&fB6h!"f$kC@*'Ea@(#Mk`!Y%U$h[EE(hlYp&
U$ei,YZrf$r)@Dl1'$5Ga9C(l$h"VUQQlYYS`Uh[(MSm,&Nj!F`%!*U*l"R8'!5a
*"B$,GdU`Lr*`"5+hLrC`"F%!#!1P!'#KPVT`$iVJ)E"B"a#hG-@A"8cJ!%r3Ml0
L"[*A"Qh`"R+3!!FZJ&m5F'$p)!jp86e!0SGMPQB+d'4VpJ@cbJ0ci"*X`,fJB!+
Y`3!l*`),B!A"!!`$j3*ZTJ[cB!S[X!"[-3rr4J'cbJ#T8!VeDj%18'G1eJ2a1`q
3!&#rpkX)9kPek!!@9QGDXYBC@LF1E`%2YM$"B'%%XMDpM,L!p-3DFR*h#)!&6l$
"iU#JEm%C*-c!Ef%2[V!AV3J)2,NCR5%K4e!%9"#mB3J",a#q,`%#FP!'Fm#2FM!
'C3!#)b!"#c!%BH!'*d!()'!'DH!'DqKdm0!",2)(9"GedG-3Q`-!2[!#%#"*@r`
XJ#!BF2!(J[%@mS!12%S50U"eVk3,lq!+'JFSB0'9ZQ!24X#lE6F%5&!%3l!%FI)
%a'ZmEi#mED#mc1Zm&R!"U4!$1C!!!c%!!NHJ[#!`"'RJ%L!`"BP-"hF3"N&XGhL
(#P!!FqZC#k`KaUJ3"C-,*[3%#M,J"f43X+R`#iTA$N$3BIa!#L[`#3&"LCCS"Qq
3!*!!HdF$E5)&9L!&UG!%Y*c,Z``%[I`#04!3FP)$`J`!a&bV0l"REe%25!#YrK!
R6LYQE'`%V0%3LLX!Z&5XC3Yc!p$!JqF%ZL-BUG!,UDX%R6N(QIN@p%!%&bF"S#F
2E4)IBA!5CRGajV!LqXF2!pe[ZJ"kpL!D@iB&-9Cfk("aaX$3fqH-JfF2dRLNk,M
($VfjU9!"hr)2AY$+1pQl[dX&K%USEp%1K[!@lX!$0Sd)4GP[h["Q$L"lEa%2B@R
5,8"k--XD5X!jE-!'$R$8Ar!$5X8'UA!,-ZR853d!E0!'"J#cUG!#-+X%Rf!'c&"
dZY!1(2"l9JYa-3d#"+&8!E&Ad%%""'%pYbJ"c*!!K["JehL0!#E&RI"!%")3%%B
"(33K9`N`!BJ!&3IJ#Lha%M'aKM(J!M$3!*%mbC9mb@f3!-QER!HGr-QK(-3l!!*
Mm!CYX-K&R!CK`!C!R!E#4JHI'F4c8*!!"%N',Y!!$G$B-#%6)*!!"TpT"N&ma-3
X"e(h"Ql3!U0GfJ8j"ULYfQ6!fh3J"fNJ"[fB"X30!Q,!f@j!h#d!"h+3!-LE$!*
e%0[#I3EGA3G`-!HD)pe,A3Cd--A@r3DL[)CcN!!(iDZmk!d#65cIXTd'4[bCFe!
(Bp#"BI#C3d$DF&!(8b$ECD!j4&!'E!!(D*!!"TTcb@k3!!B,$J,X23B1P!43h!C
K`0PLF-6,fpa5A!CV11!J3!C#2!E3(H*V'1)`F3IirCN`i3CR-1-J3!GSF-5M$3G
j!0fYMGp8R1-4rTRChGj'$-6+'`EZA3GZN!$DG&#3!#Dqi4hqiF-0a5%1!N2-"Q[
)[,[Y"Q2!"R@JiQ[ShXGYfXUGfL!!"f%`"QX3"QFJa#"`"jZ-"[`)a6Tqa'(3MhB
Z"bI`QA"3N!"Y`0Yc30eZ80X03!8l[ZEG6GjKN!$C[2hP88l&*SlMBC!![%hmQBQ
FiXlGiY0YieSZ[T8HjAJ!a@6`"Q03"i[X"UkYj@p!j2&"j%FFa%DF"R"JiD`HG@9
3k8Hq1@&!N!$i[HDLM14e`!DLc1K[i1LC6HFk2ZF4(Z!jrZT"(!CP6JF1K0Z2[GZ
IQGT$l1Y8c0R"$3*a8!Im[3Ei23EprCPdm1TXi0bDMVa6(0`HhYl%l8"23&A'(ZA
#2H)1$J*V8!CjX)raIGpjMYpbd0dbRYmBhYcY$HVr6Ym'Im4Pm14L`!C6cMf,EYj
#[SDRIJG8*FS)lqm!lpmXrJC,$Gj`-#[#hI%I$`,YlJCk$X@AhYk,(0S&[q-2,[+
F$H8&qH44rTNK$XUl6P8k(ZQN,[0$A[!HlYl023G`B1aj%0S+Ir1NIH%66`DD`qC
aM[)E,qaEcr)krjPh`,cQMZ*PJ!H"2JC4[SEVVZ8PIr)&Ir31T1K(A!3-RlaZ8!G
rRXP[i11L6GSH2Z3pEZ(U[ZJ6hpj"R10R$m8SN!$Da(hMc0k"QqcIS[lPmKiIKTi
#d5lVSYhZF#$`FN$EYShYZZhK)#lLEd$L&XlfVpld6frP6FcC4frGR"hH8hcM33!
(6em'Hbq3!(-JGp"appbGl(,`k(K$N!"b81M9,3-Z8-PHRZm&UIPYcr2#I3)9638
RS14$A!G&I-3M%!-`%2jGrqILQrf`6F4*r[hKVf%Ji2Yfrph)Vra8aIb9r0aP%"q
IHIr3E[e&B0(CVr$Nlb@B2b''rSiBQdX$`Jh&%EFM0[h3(@P,II(KL*%i-b$PFKd
aBhAhVG$T!6QRm(bBaCX$$Z3%2"`R3!3'i2EVINJ-r)Qr-G$%V"Z23`00,-ka2[a
Q"LLJfZ0mG)k+[B%lX2ID'af`H*T$a8Qa#NI[h)$Qd)"kEXLp2L1fkUbGId&HU8f
e%62Z"`*%)-3TJAq["6#[jZEc1'$LFhTP3,Q91+`AkKbEEU0c*krA"6%im!B+A4(
%J91Xifdij"AhqTl,+`0Q!)U00MN!mi4ET)YeL3J'b$ULYqL!("T!HLrZ$G#"GCI
C4TX@$(e6,!*ZZm4Rrb,JL40l-U(C+E`GapS1SC*,Hqf0),%"jr8%-9bG+dM(5pE
&0Qd(!MCJGp-FHBi3(V%Ff2(QA"SiH9PZcc&#c-F#PaTR3i)c8)VKZ88h"eMFd2Y
bX-l8TB&9*rm3h44)HmX0eVQ"0D$ZAPeD1ANYS3a-X4!R"b#IR9Z&+UlGY6Bc81a
!!"(JEDm[$lL*,qId%1#S+h)BVJBb,fXhqUkHZ+X$3U`)hVFcGrJdRA$MKkG0c8f
aFBF!#9qdd`%03!Qm!64!9BB1#'J#m5(2hB%jd!!`QfEMC*iX$hkf-Y!!E!!0L!%
eJ(Xd-6V`k2K4VQ-#6B`M%S%2Yqk-B&Q)F+q1"Y3!'N!$FN!$5!+XVZHa0ad!!Y6
![*1)F`!)U,K#&m4F`"d`K0E1a0@""[!Q6!!9i)NSS!E%J"QJq@M!$+J",3!(D-8
E%"!@J!B!!)lJ+9`!!"!"S%-"#!L"l6NdJ*+`+rK+3'!!c`%!K!!!F"EPLR0`(Fm
"Gf3%Z%K6fZ*c5$0lNE#paHFJ!2i!AA3GGe'Z4!9ra4EjiN$`Le""!%L#aLJB)H0
6'!$5i$$DaF,f(!E!0+#-Ga%Z4S8#-()#Sf+dM%1K!%3"d%J34#08+!!,a$5faZG
3!'S"Dab-8F%!j!(+H"TGie-`!(lJ0U*'JQ!!"J&[R)fj-E%&aY$i(!b!+G#-PI%
drXC6!!!@3&2"LpFa+Kb!$!!G6k0d(!S(i#YDaqP`'UH$GNaXG6%k2SF$N!!)K+0
[")qCi$ML4X8'#YcMFd!!(%!q$XH!J!$QiR*%MP!"!Da'f6JIR`)#Z!,f-5SJ!'+
J(pmM38!!b5""3S8%%!bJBf*m$JR!+[c(!MN8%J!hU)lAX6`q"`9`90,MKB`+#S#
TE-Mp@"fjihM%MZB4+M#!('!K1@08B!!k!$3q4JIj&ZA1LZ54!+!"M)!'U4D9bSp
8Lpk!5%D&"N!1*146F!#[3%P#"3F3#jcN8(J!"N"+2J9+Bb8*`J2S!M8b)(a(,qN
&3#4j*!JaFNY5Jc#*(EGN0HL5!H%"*%N#b5)I3*-mNP%K!Y!%1JNN)`!#J*2ASdc
bbHFJ!5)(RS3+%m"kQ%JEL5Ljik&m#K1!4Jl+U$!"K-+M(!S6)!jS58c*)LiP3CJ
!(h*5)XTb!#JTJ'%8P8q"!LJ#3&N"9!#E(*-"S3+X!$-*)jp$"9J%Vp*@-J*@#3j
bC95S!1'!9IB$@LNLSm)&H!+q%LTF!#J!+#m!*YL8"1%#M)*Q@3U5T9KmMLqb@%)
&$"!+V193`!#L!&"L!&X!,3-#"[!&J$)$#-Uff"ZI3`B`P'f418B&$D"@&U@BI!i
D!(0N5c6j($B!A,5AEA)SE)#ek#N$3JG!N!!!%eB#J!k!ACEMMR`1(F"h&%`!i!(
q*+SF#KjJ1Na-$q!!bLA&I!#!dJ0BMiY*%$a!"`LCJ*&G!XLRi!&k3-MFM53c)(J
!5!!S2m"!L*N!i!0maBRj!9`Pc[`!NM*HVXbKm!&QJEFN#"q!&J"+f1%a4mI5j)S
i%`4BKiNC!K!NcJ`"kS9ULJ'2'3,J*9mFQJ3K""#0K2NF3S!U!*3LS*VK6"'3!#-
RTTh`Q#)J1,V0DVNfcqE%(!%@8f9b5))`!LB!S"`"DP0[XXJ4i''%jYi-##2!#(M
-%F!%rZC")*Y4B36X!N"*!N3)j)3+*'#56-`5N!!12'B*F"86d`6XbX[j&%a!)fL
,#U!bTXkSB!+b!D!F!#2(93k&X4MB"J$`5iY4`6S'4VYb1)m#G15G!A-S#!(+1!!
HjR0)!X36E!D%d%8mM5G8#!!qXLd#6b!C!#CMHJ5H#M-!6),Nf6X&3!YSRYe6[1a
1j3NGM1EZ9)a!8J$Ba[(C23r#qHbHk**pXNJ"m!Z)*rSNM!a5IUC2d#NplqGLY!I
FNd81!"YJ2h[R!'LEdT0m$J#EdMm0+'V3Rjd4HVa2!4SpiH,dl)b+Fi)#b3'`8#"
S9"J!6D#!#Y!"Q8!0U"33S4[8#J63$DS1ILHM[)cV!(`+82jT3FPR!E!%-K4)&S"
1X%+EBhfmRLpd+"L!EZP"SB)"q)bldhRqaP"C3PQN!CJ(,[4HjNCkd%0CTcDJ!Qr
!j!Q"0i!(Z)HYSiMA$33S4)B)!K`L4&b%1fiLfMDFq0a5(i!VJJhJhKda1i!!k3!
q6)@A,RcPYrLQ15+FX'N"&Nm8)MYP0qK!RE'cFA8!cKdaSrIUlYmU,(M5,I40[&6
ih$)G'c4)Ymr9D844"Ybk@fCEJ2+Rc88iQ,IjQTJLh(&b`)&FJ3KRm8,T'XLNPfl
i+6YE'!jhRKeJFXDZiKfaf,E8a*k$B`0(X2@p!6N("NfFe"0m"Zi@SX+MZ-N+dQG
5!q&0$cDa*lBj(&c+ShCFm-D*!!SB(lLI%"-"T668lG(3jr*LB#+0Fh12'(Sf6SV
KE0`8fhA*cpQpZ[$'!(IF)mfLE!!6RV`ie`HMi#rmG8HXlp'm0+!(-&pe#hI3c`r
+`K3hN!!FA0pVJU)Y$i5j#bIGS0JP*BPLi"CZ0PCBm+4BmKZ'QE6YCENjd1DJQa3
cBV30ire"6$T4EH(*1hZ2lTfkZN9'54GGP!Y`&@lFFF#N9ra8R"DXJCr*[3R8C8K
3-kRY!h@jErIY2BLSh&KG'qa!8+$4&6rNjZFqda8JHh2!cU8m&0!%S-!9d(a3B-$
e`VrA"QkGa8ZPYNdJR3(RKJT[+A3,!lU8)KB"j-ICM"LV+hkUEILP1k0+"2('%)!
#98$c`F"Ypr(Q`"!c5""edddaIIIN90XL@el0bq@K1S2U"Mj6,l4iDbL)VGAkP[c
5U4#EG@9JXqSl30IGk+L+Lf)$6ZDK1b&@$3IT9!8"EK@eaGAdCVcbA1+$HFK2bqf
k0Y"DXpc%idI#TUCLXVCh"PkG+$1*+I8*`)'"UJG#kU+,JT2e$@kk[cUS0#YEMDF
ZiGD9Z-*R!,ZE,[fNb%X-T,BQeP4[A$&G3r&2cPe8Z+T4A3+L5`)UcTpU$Z[+@I(
E8SZZKNl,fEPLpq)N(UYcKk-`aa@rbXVQJPLZDhX&6jC19G2Q3*T!'i4Lbh$h08(
+qZiiha"`VBqZN!$HZ%0k"XjTGhd$TK@iHEQcpr6ifhHMVrV1[X)%&PJ%DHX`2',
NlIiT`rLh8DFVB&9bSK89LV)!edc9RMIp6"lZh`'kHFKHfadRZh66,Upk9i[A"P3
T$+3$HfqSHMM99Ye!UBIMXD68p,P!,9F(a)!@A+l,8-e90e0U@cFF94PYGc@e`X*
&&eD,SCT6X"NfNh*B$`[HBKYhYB8k,KQFZVpA@CrE'pemB&!-lVc9DPJhAiRMFK@
@eQh"ch48Eaaa#l#(YXbTZ2pDiMTV'DepK3l8&Ec)TfGI(CS0Ah,JMDlC$dY)85%
,*(UrP2-G0l1UBrH4m9Ue&Uq,aPDifNVEA,TcGXSde0e#e3CGFq#0+hLV9TN+YlB
RC3NUD-fa#I#qXYMm+P4YUrB$K5#3!1q99ABDpmDHPRYdZ`r$mPE&&liUfG6,Kc,
!"FBi3,[V10m%V)"'$0("fFcfmqK!$0J"$F#YjMLHb%C$Dd'#Yb&ZVEU""T!!!1L
!$YJmH3i+c-1%3dIRJ"3i!fl!#b5FEZJ'K-!@a3-ZB0h"!AMEErqYV"1i"SRJmVD
$Qh!A,X*eZ&c8"9Lm20J!VTkkPDV'Vph+!(JVErfYImQ*F8i1i0[31X8D315lZ!2
A"44FMUY`A3$$"EPGp06afhaEFa0!a3@iIBrL(Ydl5()6`08VZ93-d@&4h6S,Gpa
#jE4l9Sp'1BL+"P9EPYYd)3lQ#820mGdL(Fk$!q43YE8pQ&T)kbQ25hd`GZ)9*%X
Ba8DX+"@ZelDXYY*e'feaSUU&Zh9hf1E$'+!jp*q!)l5Y&C)L9e('f6CGh&Yd&hA
[l9b%qqAXJ-NM5)4eYdeD*+IQBTY1"A-"&Glef9#VpJaGDr@T3B`#'YJN9r"L+cm
DXS[9QIE4r2B"ZekNlEZS0Rc*J&'EGd'VkTei55l5pF*8"rfkR"X)X-3YbAA!G4I
%eP#i)iGf02'PAR5l5$qHp59ZH@"jK6F3F!CJJRMPY9#X"GJ!&"!%DN!+F#"$`1+
*XJ"Ep),UYL-$Yj69+G,Akf*RaI(PE(I!kR+qkEYk&kPP0A#a9ZA*(qC96eXJ+(Y
eYpHPHPdpKhJVAH4cE`@2T0*8[DS8Lk*Y+h#RPCr1hE8AH,QYZkeY-J!'f!!L!!,
@Rb"FD`ra#@LY)1!#Q!$108JX)!K-YK"X!h"!#BB"-F!'Sq!QS),[83X'!53Jr19
JmJX$8N!-RX%`S!DFB"5meRM`#[l"40J)bf$L)J4Um!f'!H(@#'MK)T!!JV@@#k!
63(MpbB!Sc!*D3"!1If1ir+D!"N#$5E!*CX*1f!Hli)!l$im`'aE"0PJ)kq!Qh)0
CX!Xq`d0B"NYK*+b%QI!1lX03@"$Ei4P3KI0`q+-")%!,'`%Z()Hr-+%k`c#!"T!
!B6-XKXQ[qEh!J&F$&cm1(1j8,JJ@`@jirF&K4$b(Gac'T30fQ!BliKbmLTr`(pE
$C(J+Kq"#E)KM@Kcf`hK$%8rKQDJ9Hh&-#cj%)!VmB#4'!RD[,KB#0-!'5q)(FBL
pX!X'!6+i$'2LmDZ'UA!KPX4FZ"SA!8XFM)Z`0Zl%hEJ04f)Y6)hjX#fQ%0[B%`p
L+Qb&aI!kRX4GH"b$B8bFKXda*dE$mRL0(PqC1YT8A+*EG&2Xj8P!GeKkJGh`#l'
CYk&5&FKU!(GJ38UlDaDiGU!21'30%UfpF)XXdkA#BPY3Lk"RI@pNS2&#3DU5N!"
P+J8Q!pk8caDkm&9KVq`S2@*c9T'b3cpEHSQEIi1'Ba$(l6Jm31h#B*K9ECq@*',
!Nd`1`G`EV!*APCc#Z"h)#[0SK'fPE$IEjPrqeS&)ST!!$ACMMj`L3B2AB5'U`JY
LdEHblVC@Gd[&R*l,[%kZd#&FAUIUZ'%kMA4Q0lq"1bphkQ!TG00aL`c*f9m9UqA
53+NlKKQee@fkr`EYaYe)h'3'%F9*JIa'fJ5`%I2)lLd"ElT,ChR&(%e&Xfh8kkl
B0A#5pb"XBi08$*BD9Z99m6KE6Yjk8`c8[P(6'r(dk`iXV'5e#3E9KGU8Hc+qFfk
hMbNM`2#eNdR['jbSSQcE`Ed)Cj!!mN!,1-$@EI+P3K5,#V'8c51'BC!!Z+dK0RM
HF1!@,-`Em-4e3e9hq)iA(55'*0(05ETA9r$'ED%lc*-d-9GBkmcjLTjBCVjb$NX
0jMUBmK`[HQjcjLlr5MR1ej[I)'`VGK!frk'p-,Mf%&f"cUp3H3ZL!#HA"Za!e0%
"p6EQTJ!G`!3H(aZPZ#dCj[&E%N!$C!!15%3JB!m-!62cJl&8(aM46L)''!(0X3F
U-CdJ[cFJ"D`!&Z#L4l3-+!)R1V69k"lFSK-4MNi",lS")!'UI1VNA)KqZkIel2+
%+[$Ij+YSLi+`&0QKe*M-!ZRTR3ffChAcLH))q2G1DlM6SfiZNajS0Y$U8%!D@-P
j`!J,1m2UPmYb2qakPp@jIYJYRIK3A"lYXZ@YiC@""NZ!3@a"iVd[15C22JHRb+`
F$!4frdd-k0(rUZB+XSJ9EL59MS)kkKa2&GkBERJh,SqQCh2RfalGS)B3G8l)I6Q
&V+8Vm)8$YS!A,eI@JX5"QaZYqi'F$3)[ZM`0kM`[2J5pb2$5QB%""a1TbK"EC2N
heM8aaeGFYqrd+kbaV3fdjR++5(AbPAf&A5rbh6R1CkMP`)kMGRL8bmD&1dH3!+1
J!"E9!$U+6G966II@h-5$FRYjf-,$3#F(,Kq`RQ,'%+*'1Q2A$8dYi"h,Q6E*'Gi
V$IIB-q6YERbDaqdj1lZ@rqpT&DQJYF5bf%VhT0'[qT8$l"FK$f451Ub9Qj(0eCp
T+,)fQ1Gm[9a@RBG!M&c$[0dF5V%X6MDRLV6"HY@')&E9R*GHbq@dAd0D,qFPQJ$
"cUGi)l3k%&!DPYPHm6Y[QNrKLB$ZL`r"DD"qTjm*"3MYRkfQD@jp&Dqac@L(!D5
0k))!B6fPU$!VYp*2+a03BF%,#@d!LlB%k!EU%RAL%i,[Y-a4&CaBk%iV8efX6a9
[*)%QF(i45GTq!fXlNrj"((YGVGZ!'h9('aQb16HRNf-E3ITi$4LpSMEGD[(8RTG
cK@q!bV&#Z%fbC9fIhRDY'LBR[TX,5Y[b(5f`TMV&SS##PrHNYGPqG9N1c5+rY5H
R&9lT&Q@bGHq+XY50#PGh)44L#$U6JYVEelHRJ(PMJkX`h"AN6#Ul*akZ5h*hB"D
1a-eh@IfffRjZUMRB2HKkC`l$),m@hJ"1`%8a*qHEN@'E(DYMMlmU1B,i"CQ[RYC
q#$V8XHdEjpiZhBT9Fl0@Pq,T[TF("$H@5pF)GPG(`B,N3)c!L#A+HVF-)-3'X,f
T#YUqhR,!`A"S$mhU0[6DPJ%eS!D`h'-h"hML"FrJ-eIImYX($VLaYiec-#aJ$U3
!LN[#elE&TBKA$piHj,`X"pS!4jDXEq#9'Y*0pJ1"'rPqJjqD!`+aq)"+ZD`Fi'k
m$CCUhebhk5`eSX2!PhTm1qAmfX+I@ffM!8@J"YL!G5cqQ!$%@3*V,3MB!"B`!NL
!&JjrE0J)r1JVE)-Vm6A'a$L!r0S!)p`#MR3$L-BfJ!ZIF8%)"Hi4#ZE%+P#1Vf%
X,J3Ha"Y@!P0!#U"J*e!&QS#L+6j5!1)FJ6ZFakr`KIh&2aJ6$`&"ESHYBK(3idD
JLr[aY3E)`amR$`)aS!(FJ+f#cX4a&)KTCA`'c'JXGBH*3!kSaH2i'T2I'+#M@8!
8AJ%03#S1!@QXK5pXFfRP-3e,X3!9m)qam"h2iZ&iV98"*m!%`2JaYJ&XZ!MN!'6
ZLiQd,Jm#1AT(fh%XIJ0#)JSq-e-!"3YNr%B''*kK'l@*cqJYZQlpV8Yf![cCQkm
p4lIL&eNMpG-QTBcFN6m"5#l*%4d04QIV$a*MmP[mL)rd%Hl&GeJ')26`emDpq59
HIh%FR"YKr@b)llJ-X!%hJ!Q[D#P!MLR%N6E'6*JTjS"2cS5c"B#q!AHi"R"c3VA
3Jh%iIqJS(33%md`mdl%a%8M'j,L-ii!B(0*c1U&kjKapV5Q"VSU#Sl"4AfZfV9d
rD5PH[UZiF*[+-Uj*heNem!Eb4aX)h`-imH("NiVVF29*&Q9f1YG0[8AA`1%hQkl
0h$R3bHd!$PS*SKXmYYH9i1eUjR@V+6H$pR)S!(0V[NKhi,+ULG-F,Yh0KA4CEAR
r(4PFkk$e[l&Ti@h#Ea`EM,eq%0#&YahhiY*eGB[!SlSd*p-`hA9cA"MiGeFkm@e
QCB[jH[ALMZ+JIAjMZ-Hpfmkc$jrLe8hi$[!e4*'PSId0[YBA`k%pf0B-a@Jd6A(
%MCU5@!DYj&*GmXZ[E5mX"qJkYkh4YASZeBXX"0LfYQl9*AL(YR&Xe))r0`bZ`IR
YNrE41(K'TfJhEY0lHBp1!-di#D[h)@f0frZ1PX%['VkAD*!!6U0(ZL@ZiaSp[j1
!),$5L`#06ZaVi!B)H)N1!h#!N!"QlpNB`1IS*2d%a!!GIEfMX)pf`J!VQheXmp8
F)klB(6Y,M@Fl81$lK90@bD)k9deBRHm2Tmf4cT&DZ'(lkNJb469H%YNf'k58rHQ
m)!-dFG60@A[D@,fafI@LkkTd`QY(DefDf9Aef60Lkqh!iY-1h(lVEm&$mZC3eF'
"#Um'FV2#'pc6ESK4[&V,TRXHjL0)*eN#lli+5q)rGAl&kR0Z3"Y$ZYYqjpb(Fb"
&!)&2XIF0TJY5P1e("`k+K6Zk@TJ61)mAe1lAbH-"+'raFPdSNhhXl[la`CR+hNC
TU(De8+`'Uq)"Yq3$l'Xqe9FJ9@Y$Cl[Z6&l@Xh*KVJh'[%Rh"ZQk1&A2#Jpe"fC
8b1ES0+KVh[r9*mq+IU53!18fjq2dV0R6`qbY&q#fGSVGG(XEd6d"CdZf9G`S0Vd
0`)$r3eV0j)JH2Ye(AG4Y1fNmGpVPA)f,ZD88mHjIP6e(*hIF5pbZ,cj!Zd9@l#[
F('#h-0$D#rF`f)rFlU'AUBZD$BLN5(c!X@dVADZdrG)T[2cKH20!S'X)-B(9DBj
,9ldCXi$l6%A!-E-"JEYB'am,%!1Dlp4Zf69Sl&"ULHGm[AfXQpMb[%90h[fM+L5
@Z1IAlhi'f'MMdhbEKq@lI)a[laBUf"CZmAi009V1GrD!XkC0h&U@Zhe@13$X'RK
UfkK[Q[-j1@Fr#M-T'6"Sm[Z0rPM4&Zr4D4RGC!Q1$U#!0T!!"j!!!1fpF+-jVG#
"`GlE8U[CM[FJ!!PdD$HhpE[qejI6&CAcjEX8ZkpCUmY,!rq1rF,ZD@IZNRj5EDA
,#r2+I94RlK,cjJZbXbk,CVC`0`0N3!X`r0L8Z!ZaD%"5Fc99Q3,dEHZ#J"XJf4"
Gb9Hr+(qiXeEDV2%r@AcHT9Ij6Dqq$MbXkq[CSrFQ'H2pH1+Fp-0!$mJIXA$H!Ya
3+r(b+31dZ-2DpepTUM*5qpbN'hAXfH,DIM%`"qh[MkrK`CV23P2F6P8QG+B0e95
-l+0@hcpU&qVKFiI#AHM6kHT@fV0Fm&q&f5f8,X*PqQ3jRqN1[GbDe!ZkD$X&L#U
rc[#ehINV2ZKI[cRG(*MqjC[ePdNa,pUIRq9fHArrP9JRqSer9%Aja`$aIUT8UPE
`L!!RfikRh"3aj!iG!%le24XBma+eQ3!G@(kM1I!"(4J"@(JYJ2*2i42VJ'DH6T4
cj9KkqGc[*YP*8m6I,[9+k6j6cZK6pA"IhTHB"@B01L8CXm9S86Vb@[9P"VKP`&S
60pUK3VBDJeDK#6%&R-Q'8BeYF"ICPD$9@BQ8,l6QY%'&M[k'B(%r9%8LJl`-@-6
HMT1QJ6TlJ*l3![3"$S33X%[&C(N!2q,V2'l89#3%Ip&UKiqRK`G"-GhD%8L9"6K
KN!!1jfK4&@QJ#VB#p!'DJjH6PVe$"Y#Z!q'BI,2#$fKX#6GLB)T'!P`"Df$c&rH
JGHa0bhD6q6Th&Xb6lM"H[NlSXa%YI2H9M!1VP9A#PTJQGieL4ibQ&i+9D8G-'YJ
%$!'b)!a`#(Bp0CK@9-RiJDfGCCI`mB&`J+AfQGL#Z+"@K!2%!)IJ5CB'GL'lB"2
BN!!TE$FEQJ8![N%+6p0c$8*hX0X$+'091LM1"&J"kN%)8+Ucb@b!p&Tmi!%b9-9
3L`-1lL0SRQhM"RCTUa"*4PN0IeY@UZ1k*6p9Ma@ipd4["CY-9VEp3ja8fK9J#@L
8N!$K)`rYH!kJ#d5FJ8'XMVf$lJ`iKSk99ZJBHV%C+*4Iq@G3QX*'9G`kEX"PGf!
Y1Y(EDDIPX%'Z645ila"JC0AZdd9CDV`APJF&A'6-5q#6j'"4*SpPe3)"I(V1QX2
I4&r`(d*BIIeG$pZL3efa3K"K0JAb29JjcM)dU0Nf4N!Nj!YT$ShH'D$MF$D[AkV
6kMQ&SG6Tmq@J8Z@CV[CKI9F#@-'6fK4AIaNDd!Kp3j08fl2P!$ZEM#CiX"%raSq
@PH@)!'(!S`G1K6ZAcPE@5Tdk6SbJalc%1AM1Ua2SF6fEPVVAJ6KhKj8$334`2h,
@im-%1MJIMPkh5i'%&3kS)`+%1(IApm8'J&1-)@!h"3djBQ%Q`rdF9N2!$`6H%%(
DA`[N51&I9NlEBr'm@(8@+V3'C$F*$kER@V&@6PCED1Qp0[H2&MJ(M&[6$rI&YMe
fR!kcp[%aI149[e04Y84h8+Y6m0"6`XeY5*A&JBN%#a6%D(F0`"D`"V&YT*JRaIR
mI@9!#l!5j3(3S8)%"UBfQJ-8i!)m!@dJ&e99b!!d!)Tf(VC%QX-6!"1"!$*4I4J
$G!&Vd@#d9l!eU%!!3!LB(6mG3B!l2%B%34)3!&3!!)!Bm"-3!!,!%`"I$!@"$FK
N!r`%#)!!i!A!!!SL!"!j4!9Aa9@"-Z3MQ&k%4"!%!0p69(!bP3%M!PZ8Vj5)"%"
8D2%3!&&!"UJ43!8,K4N3&`8%H`!"m2l3!34!&D!$!3$UK8$3)JB%!m!3d)m!!0L
&GP$Jq$J!`"!3%"3!E9D8!`#S8(44qLAT!3$$de0JZba2R)0!8#B'")L$ah!G4$C
)"1N$f8JfBBFN3mPB-TL-*S-4V90"$%&`-Md&!F!GJ"FaL!'"!L!6eQ`V4PF4c#J
%#F(bp!J!!#0!,`!&(!#i!%(!!I3@39*b!Md%"(*!T$!T%!4q!*IJ*4!%LS"33J6
)(31"*H!`X$8"J5Z`%T&%")%Zi!&e&FE!p8-3H!0PaTP"%+J$4-$5d6J&"2C!S-,
)m48#`"53!!4`#FZ6#4$r,%mb`!MN&!3!eX&5m3rm533"#G!#,"61)V5B*8Q,'8'
e'#J#!0*LI[3BY3iC!3R!!M!$!F&9S94-!#F834!PA"9bc333(*%!,`!"B(E34@c
0"%!*F)XZ!$m3ce`9E-d'S$L*Lq5!fF%[!J!Q`)M)*0iI$`"EN`,)![JL+$![BJ"
X$44!-dQ,T)$!q!p%M2@4Y-J+L)KAK9`""4J$q+*F83CdM!!!&,"U$!9Q!-NB"35
)j@+*b0C%!9N!YpJ#b$8"`-!B"83IdL*')aHpM2%4#H!#3!-%!%3da53!F0@G3`8
X2JM!dZ-'()fP$J*3N!$)!8(!@88(X!6Lbf-$R3!!!!: