[comp.binaries.mac] Macintosh Technical Notes - 261 Cache As Cache Can

bytebug@dhw68k.cts.com (Roger L. Long) (10/24/89)

[10/89 Macintosh Technical Notes - 261 Cache As Cache Can]

Written by:	Andrew Shebanow				    October 1989

This Technical Note documents some new traps for manipulating  the  data
and instruction caches on 68030-based Macintosh models and describes the
MMU mapping set up by the ROMs for NuBus cards.

---
(This file must be converted with BinHex 4.0)

:#941-MBa,R0TG!"6593K8dP8)3#3"#2Y!*!%J,j6593K!!%!!#2YFNaKG3%!N!J
#'941,M)f-5j$B@0SC5""Fb"$B@0SC5"$B@k!!I5'!%4PIN#!C83!4'9q!$lh#!"
%rrm!2bhBJ!2'i#!8!$i!2PG28N40380"!3#K4!Q!S9@0B`#3"MIB!*!')fF!!2V
i!*!'C5i!$!$3"#!!!!)!%[jEq)pI`B3h%!#!0M%CJ"TL!#$6Q,#'-!#B!!a)#!"
*5C)!"'J6J1*IZ(rL"136B'6!N3)S"MJ830+N5C)U@6j-5)DN`3")MIC*H"4!Q59
FR#j""fJ%538!-J5!K")!N!#Z+!f#(8YbC%+c4K1@`1!eB3L+&!"J#,$VRc`!p1`
'%0C3)F1&3`-$!!aJK$m!%*JL5QNAJ)R'HHAYlHZA)B$&@$'R"G!#63*3#9A`'-#
LmH1lNIHLr$IBFNS1!iif-#J3!)1%F98ND2,%5T%J,TJN5)!Lb)d8+eJ%L6&m"iJ
jBHb8!5'R$*dkFYb!#%1'628jFaS%6*JJSB@#XmF$+!rJI)!'2'[I"K$h+Qi!(dS
PQ&,Na3`B)""4KR4X[!&('A+!i-3EG*3a"`M&38&%%#Q)"i!%#FdA9`!-m"3A"KS
#N!#$2PmN3-mNKd6b3"0Xc&(#)[)!8dmCVp4K6c32@"%M2Ij3)-BFpX"4c`pj#2*
"'`p8FF)T*f!!$d8BfRDI!"h5Gf')lb8Nhhh[aCIKIA%&3Nmj)FccLSNK9"2%!hP
m83F$DS!baMf3!(3K3#b"%1$Q#6%m`X)$EEba"J52e"'%!,D!X!)%pIb$4$er3((
%2@$)m`J*p(`3`cbIi#!2*#5iF3!JIl5KcT%6K2!*#`8!F8mPpe$K3"(fd2%'NRI
S!3SaD2cL`T-*X@@E3A%4%#)3mjeh"*E`UFHXPPpDqGjY@dVEE,9a*4"!0fLY*i!
*hiCV!PRN$QB0!#)-i!X!$634a"&*$!&&["%%m)m4k(NTTCADFSY5!Z++@bkjf"U
9AX&C1RYI#`(NdLh!"`J3-EMM$Ya9[`m(6,(&&fqEFF36ImYa@!h%96"BlifK-,m
HrkZab#-Ra,$$,S-XF-`",$"Q#)L#B-`b3-,443*LJ'%-$2D%`-!8*'J4#L6f[*!
!"`*G[(!('4rXd$-H-4CbS`'C")%)!ZB%!mM455I!J5P"3&,$$bhmE)%p+RcJ!Pi
6d'P-%PX2)!8$EV`K4LJ&3&1S1e5Fm--C"M4`MaDJc21$$2*m)iBF"&J!p6Ge#,,
!'hC!)!FJa4#"36Nj"%h*(hC33,A9C%!3#!MhH(%R!fcFX[M564[J6K(Nf"(#+hR
)mmid`$VV)AV3lKXA%Lhh*2(d'mG-A`"(8)('G%d`q)BFEl!4"JK0$'%$$M$m"i+
m9B"3aaaPN!!"JKKjJ%$(pZ5(-8BDEYJk"aSJ5%)5m-##!#CK$!3di2i+'!Bhb)m
rrJ%3rmE!KMU3!-&"f`%"'F*!Kr'03ArEBk"fq$F(1XLK$Q1J3aVHS*d2ML'%fh&
J"T[3K2DKS!PP#*3FkYH%"SEK$$NX3rp!8!8hT)%1+A!"#%#J[63mD%%0dU#$aL#
(0)J"JrHE$Kc!*`Bfj2""pq1J"MRS34$bl``Jq'!,`r#q-K3`#(#!JaHVmD!jK+m
1+Q5KrGjJ2c3i%34E&*`Afb"#qA'($%GFS4[#`!B3m-m-hfX$"a@j(6'm!BrNUb%
)*"R(-i*!Mq8lArTJd))ba+%1DBKMr$CT4MFib!8@3PJXSl@K@6S22e2SS"F$4%B
)#5%-DeLP%Ei$3#+%)3eXb%1&QZF!BM&[CA("Ji$QN!#'-aM4$@JF3KMN3)B(09"
q4+LLG16`)%JQ+)[jferrh[!r!mE`J88Si"hmq%)3h#%-$lT$&HR3)1eFdCc6b5,
m@2P#rQ(`$JLD6R@mL-ri&E#%((53!!l%-jmUaH8')HUA@-Mc-STe9'2jJLB!EL%
0)q!41p1C3aj+q%9@eLm0EC!!Ba#(Z-%1TV'9D%5"'"SU[cV!3BrS$#AkrP0!Fi+
J$(J)3dbpQ-3P8S'2Fr$T6q9!KcikXB"5#%)6@X#'0!6cTYbX)aSZb3C$XZ'H+hf
19*1j(6BdFJBbQ0m4je$!kTaKQf6`)RJqDBBq6XF*G4$#qkKMbMSiL!iZ5-E"-V5
mK-PRH4MEU,D%F62V!B!&ZqP0%B)c(#,!3$N`'%i#R2-&*&`"#Z+dC`2Tm+"!AG#
4fJN#$-46'rDF4cHmmBd,K0$CcaER1+*e$R5N3pLSXU'UHS6S'0C!@r+BKjB!5%%
p6"J#T%R06#DD!#8qF)F(6#%@pM""$Hla"a2aS`4*!m)m2T!!JhNm)JI*+pJ2SXG
4QhRd[KmG9`ESF3Clr-&3$j!!36mH)!A0dB--Ad$5%0J3LrKQb*P4m*KN!m#)kB(
-XSk&lRYS!pfii-+B0R@K(l&j8hp1Chb"l')1(GRA2&ab1p@ajrI@i%NpMNqP,'f
$2Bm)`$E8iELTh+8B"LY*PT,cS41FMS[V8')3!,'U%0eP6F1J4"!B)A`&ZS-RrpM
!SbCeUG0j3ep[I-3k6&+2mdbSA`(*a8&qFJaM`-iFB#R5$$X[!&GJJRAU')EkKE'
U5`B"'U*cBR[k83pkU"mLjl#'0,,3K&K'%&MPpfHea[&lV!f3!,ZUV,hT@"+[K1A
1JmC`+dR+F-KQ-!1#bJNq(D06N[aE(a5U3-G0j["lpGYQ'FEh6A[Z%i-3[Fk$(KR
*-rY6IiffeCT*h3C6b`r9UNj3QV9$"KD@SFT#+!0!PehUA[m4SP4ek*T&U6liCGU
Rh'jfVk%Yk9lV!8&[`#,qJMeB8Vm@"HL%T&[IS'85Qk'D+29QM!0A9@A2iB0-TE0
)R8Z&E3@!*`F!3-5h%)"de!XdJJ!0)d)"!%X%T!"!J3((#B+!Ip#$*"T)#'J`B4#
X4(cL&4m*"F3$!a3!`!B"N!"&!1!"QNb!jK)DjlM($3$bK!K!j!-"J%4U!i!SU"`
NiX'!c6N!!!FSS)IUp"mD'Y$cN5[p(qiJLG-"X()9B1!"9#M$#if)F!8ab%%prlR
32ajbVjIF)3PK`p-a)4i*V#!H(pL!J!KN)%QRIHeTD2X8T)VTZ!2J%K(RL3"!!!!
IV+Ib!FJ'D"UaHG!-JM8CN!$(j1EaKNfGL4if@!B%k((f"FIL!8-B!l"U)`&RBXa
Pq+eBc$V!Arm#1!B$[X)43S"f@VM*(RZ!2B0Rrf!Vi9Dc`"%1FBb$(18`Cl62)64
KVj1GlA6R1q&4Mfd"m(cI4(mi[khqFTU6IH*@Kr[D156iQh[jpMa6PXd,%9RXr+`
k,rD@r(FI#5%40$!!m-!ZlJ)[mN)[pZ*a'kBH@'%YqK)Ld0-0'e85&PCC)r-HV#&
,%hJI#j!!!%V3"&#!IXZa61,hA,G(%J#6HjBe-pfb!4PB26'cJZ34!11!JaV)-GV
#$l("JJ&J$TB&&X04@UFP6VBdIRBfIU&"$qp3"r6`!R8!#(KJ!$34#ICJ$8q`"S9
6$d&`$iB!##FL#%pJ)p%J!ipJ5rVA&4bR!b4L)N&`#2B!(N'#HNNJKK-!#I4!"+a
$!B"3$8#`+24J$FFJ!eJ!#r6`#8PJ!$RJAI6`"43&A95b2!Q"%%`"!&Ka"J!J"2F
(AF04"%j!"&!J"8m`"%RiA#%iJL8iI6'!JV@PJJPJK+L9"RC`L[Bh#)24LEH%!r$
`#8f3!"G@m)K4d)X*)(SN)$NX3!p2!!2%f)XlJ!!5S!"Id&eh3!@3!&!#$c!$$i!
#4A!28M!(XK-+`N!&m[!*YQJ"D#!(j*GCZX9E#H"C,*!!IX(9IJVP)$q'A0UKA-b
9J[DhK-p&!3(J!d&3F(ld)$r&2`3j(5*fBM,dDVHf3r2$)!"%D[ec60U"6RE!5)B
&!Tre(%NfEN-&!l@fN!#1P%qreJ,h!cjeF!B!K'q$9P9Aj8K9a8KSCC*(K%&6YNH
fTN-[e@caN`B4P8a0jACh!*+Mp"`G4&9JK$r-jQc883GZF%eSe'[h0&FJB&4GKT!
!#(*#F&"9CY"UDlCSM8D4N!$Q9T,f3Ga8C8Q3!*!!fP%GSMBrb,CQp-CUYj*Z6XP
ZFN"R*h0jb4!!@6!!Y2!A'K%!6`!!%5!!rh!EId%BK%'B*,%4B)&a$k%!JSN-MXN
HBa%$$f%3PPQB#E#BPS%$C!F!M&"rQ3N!9)F9Ak%bR`QDV#'DQ!N@Q[N$9N)%!(!
hV3QD!##DQ`F!FmF!'m86Bf&hP#&aDB%9*A#E!$#E)Q%PNEJ#,q!#!p!#-M!$ShN
*[YPa``)8C%'Fr8!5ZYGbQ$LHji%&!'"c%`!!#c!VH!!($840HU40h24df0PbPAQ
Cj++C8M#HV3!!NV!HV[QDf9N89bH+6("j"X%6'JF!F3!!(J!!AJ!!eYN'!+!$!%#
K0`#K%UUK'4UK&SUKk!)!'CUK*c#DM6#J5YF%"MUH#I'E`TN5hCPdGdF5$hU*@&%
,PaF-!"!*!,!#)l!+#p!p@53(RcDI2cHCpqQCq3N!qbN1!0!+!B![ZEQBZfQDXJN
!@`!!k`!!J"!!23#JVPQP[aQF-8Tbrr#G4RHF!a%!k@N+!C!!FMBh#J%!N!!`F*d
S@U"3F+$Pd43,DTq@dCN-kU!!S!KX#K*[DUMR3DMT5DL*HUJXGaiL-+J"F"lcB+)
SLJ!UQUFXQTdH9b9T1T`b@T`ES+BUXk9[%!#dDA0kP`m+!',MSdd[9!EdbDREqDP
JiCdNBBQ6#3"`%!!4!!"m%!"8Y`)C-"YeHU4MbTfJDUCi"`!AS+BiqTh"%!![F*i
!X#lqF!"#08TfQUbfbSDKfU`4Ck-AUTaj!!#T#J"f!!![-*h9DDHHPiXEB!39p$q
Z#U[i-iUP#!*&J!93m!453!ARq(LMLBZX%B$@dMcMpiQKU+qQU,#S+))ND)+Y1,$
PpaZF0Ah(N4cVKhh$9Br`jhhHi5$KpiVfPiS6biUZk&cY%3#Fm!3'-JFKX%6CpN&
Y**FG*'b1GN'ePT%90"hhj%eXi*CNm&*V&+X&K%lN"L$hFdNX5C!!BS41FkPD$p+
4!b*%IH5d!)41qR-GM!3#2VZ4XGB'$eNr33X#e$N$R&D3!2D6"`I#9eC&BQTd8cG
V4f3,YJK52i2'65Mj"Lh`EkHfNX1Q(8Z@)0j"L`K5C9G'99!CP(R`4R'd5i&N"fP
`3A9d+`%P"f%!"rP%6`$N4B$fBQC3VeZ,2cRTE@j33LH83T5dN!$ja'1A9&A[idP
E4)[)9!C!*$mNC%)SP%HT#b(cP(J!&*2i"!+"pMpNC9D0Y!D"8j6d!`,0bd#XT!E
I!leq'cK*4(mKSJ$eB!H2B!4U%!KQ-V!P`)j&%!A$-3)a`!+H0BrQ9PchU*1m@`B
0d)%XD`%"`!8lJeheX!5Vp`e08!p3S!DPF!pii!"aB$CG!#K(3J9dJSeL!!&CZ)8
C-!"6)!rF`'##%`Vb!!i2%!5Um!!fi&i`)$N`X#)YmL)B)!#a!J0G!!f@B!+iScY
Rd!"8B!#U!$CLB`""J!B2F!HhX!`ml$F*J!&rF!Bf%!+3!1$$8T!!+8h3+[A`!Np
!$p$J#'`!!A0`*`cF"Ji-0GE`$RG6$hXJ"J*`#i"`)f-!#(2J!%BJ$(`!!AM3-kp
b$e!3!rF3"N!3!aNJ!&"`$h9!"(3L1'kL+"!J#'S!!6%m+h4c*!F!!emB"NM`!4B
UL$m!"3,Xacp3$6kMHM'-!#A30P2`!%j`$emJ"2H!"3a!"TKJ2"C58Fj8!#'b!lh
iLrm3M&m`M*p3M$m!!r,`$%3`$`q3!!$%1!q`S!`@!!6+H-*Ld!&8!!(h%!F)8!Y
hr!"#8!@K-!B()!1SaAceC`'a1NEVN3#J+)UNq,$mH"lFklhJ+lk[-,!)Qbhdj5h
f"6-a!i-Sd3)c5-mM-`(dF%P#%!Y!8!mK%!e"`!15l'$E@8X3DhmqB!49i!4$3!9
*m!41!!*6F%p`N!!%UFZlV-Y#q&S'+,#3!%@`5#UQ!b!J"%r`"%c`'dk3!!)QMG)
UcG)l3(rMT`2ZHA"I+`4[%$klTKdA[ENDVEUpUdJIM3)kcG0G*Y)Nc93cIFkkZ,!
19c28Smmm'-m3-p@k0c)D*G8KNp99l5mXQ-pHE6%B%i'A4`)RSAGF33X!J!d!`!m
"!!)"3!3"J!B@&XkbL)3,E3%$'`)1@`4%8!958!4@4VT"cG'qqp&0lG3TF00YC`G
[8,Q&r6jSF0LVQpJJ"0+3!&fj+E$B*RXH8d!2CD!+daJdXE-S-XXL''$$Ga))F))
+-3+)p2!0PL`N"X!)DX#)X,H03H!)((!#Gd`mjDJ$#"dLR0#rH!!RS+!0Ta`,J,!
Scr$(%`!#a5!$%i!#KB2DC&J(`P!(-2!cGJ-!b,d!D'!!-*!!"RH-""$3!G%J$!8
!!r43b3)F$Ne!"9PSd#b!!&!`"F5Mh(,``l%!!i*6#$8b2(N`!"b!!BE`"-Ac$YS
,*ZKK[lGd!`i0d4*0d4D0dIHDf5'Gf5-G"L9pdLQpdN(3dLmpiM)pX$2Jf$Qpd`c
PdaT14N9pe#pq8l(ki5V@f30V#XLYh"1``B"!"3Q!"d#Zh@ABhGqYHQa3$%N30#9
`*`KJ!L(J!'J3#*!!-!Hi%`[d-!8Ec)J%)!'aJJ0hiJ"IH!CZ!JL#%-&f%JX(J!-
NF!pFF!*6N!$P"J!)B"!%K5)+V*`384)L9C!!,!!!"KRP-@CG(QKY%QS0!'cYeR!
Yeh4YeaG@eL`)!)F1!)Qqk'mGeh0GeaC@[b+P!AmGf)-pfIBUijRGe*q0,LcH5*X
Y2r4+f4XHUbM3kMVZe"`S8TA34+2'5)ddZT3YE`U*(G8a4'3T4*NQCQ(C5`ZjYRm
dD0i8If3`6J1PEDU@3TqN(H`$5!KL6UBf"Qld((c%3Qb&F)ed4)D'Y5"Z4aA8)'c
P5Yi1(YZ8"`TA--ci#8)JM-Bc"F6B[GmE[X--#hh`!(T!!9r!!JTJ!AG-!"M`1#"
J$DM`!64Y(MU3!!$C"NQhfBY8-#6Nq!jA3)c*h)bIX!-(!!e[d`,h%!T&%#-rima
f!!Jr2MMQZ0HPYCbc$)b2k!+3!#,-Ra!%`*b-b`Mb1`!SAa!k@J!*D3i"AC!!jAc
mm46afIL%ekBeLl@ie`#J!6m0"l'HVqA-Vri+X!,Ve!a,cU8iX*M3ih(bmU%3j%0
Hj)LX0!aQ!-a!"CH`1(bm+%G[$SL3!!'0$0j&B!0d!`&M!!P"))9$m0`33!iIB!G
eF-T4(J,CMFJbr2CfMZGeS1F1IL(3j35!RJ@$cLf&6ZPT$3"VhGDClZLFIQ%+N!!
!3a!%r!%#6f!%4K$apLITcPATPdlkMElTN!!Z-ICA!AP0Lki2"9F!X%53!!!NX"`
jJ!1HRZVqD(mKF2@@2G3HRGNJi,"Frkm"1l!NB,klCB)EblkKKAfH"3)md!,3@`C
&k9Vdkp6G$!!lB,lSQ`!Mm&RYbhi8Y'X*-[lrp$e!Qe*M49`dVUI"&Q9c4,3Iph0
(k5Fje$rR-2l+hrP,IfrJJXLqmi"CFXYQN6l`5,E-SppR"e4,rfJY%A!ka"VC-J%
"!!e3I8a!#VL!+p"Eh*Ge!!&C4XC`%jd%)&#!5P)KVZ3jP!%[NN+qac**G8b"!G`
'$M%%K@"QiRiX-!()&[!hM`)&F3NImL2BK*Qq3T+8M@FC@#iJ!9#"+8!&9Q!,C$p
TS+m%$MI3!Yi0q#JJ*1PX#4%3jdA)3!N-,8,JI,Q!+6!FVJ!q-3+-"(k!`EjL"Yp
!!@%SlXFH(CHVP!IAAkSVAaB`rUN[*XKqhYGhL&r+CRi0V!mJHQ3!kGN8S%$j[*i
J))C5cqUa!6mJ!451HI!9)0"pZ!%eVjB*)f)NHQ*!,rYP`HcIcBi#"JIm'0q!![-
!!XJ$3V!RBJ!#d!!FS!3mJ46!c@b,2d!(9X%"`))3eIjiN5qbH9m!jj@AAM3#jX%
,m(Re6ZFpSfJdMAkB0F*'-Q!EGD0[&)l'86Nk4rAL(hJF%I$UrNIdkfKZi+09[kh
AVl$IedYe6q!,k-0pb!rlS6rmK`!a)!V%J8J3eC!!!#)*CD!)d)*NZ!`M&3#3!!-
VUrhP3i*)%5ZL4Eb)rp!JdSF(Z%P#B!N-"XJ0lA#!@F!(e)!SN`)3S"*%YaXK!`#
"eiJ'!i#ld!4dB--!a4M`!irM4`5*44($'&'EHh0aEXia'%!3bNEB)bKKZkabL!%
dN!!"8*L,@!5!)JYS!%!3q#)")cJ#5F2`cEB!"J@bN!!l#"UcShBm!$&!*aC&&*Y
Lf+!QMV*5GXVd!5MB'irJ9c3pk))5bN"%X!S)i'iia(hK&)J!$k!m+B!D!!!d)!S
-`Qfi$@@!#0!!bY-!R"3$+)a5JLdN4!D`!Y$&4c!"KA%%cKEfajImdJ"!"dR+-#%
Qa85P@J06+%`*!6*e"FRNT`!$S)T0A8%c0BAA'+#U&'a%#IS*!$JT+#@PDL0X@P*
CDNYeU5meT366Eb3,Z4%Vp+Ir9"a$%kd#6XVU9S8U018Be"4@`!VPU6R&KHHd!#B
!Hh*2UBZ5b+HLd+fd%h6m9LL"1$@VCd@ZSK8!Q&E9DJA-Je@JVFa(5#U2RBT-,DZ
[3aeIP(M5")A+6F%T!##Rk"5m)Ne)kNrK*q5)QXE6DJ*6ZZNiRLED&"GX%flbMCD
+ia#S6+@R(S+#3T!!$HT"T3%QaDX#AERD6b-5$*3V&3N(6#5&fNq8Kd+G(!UP)RZ
6KNa4+mUXh8Jme5%6e'JU65%5!25"3V8)$Y@3!$`246,P&%NN@DL1C)Kk9!#J8YP
)!&!8-&@1*!NlNN-L+"LeS)+ND,*0q')*9+NM!!$#C*N%!'35ApJQd83Q)j@X)T2
K)%0554bTUA5NHAa4,`TF-5XD"Debe)kb9Z[#"33TLB3JLP443&Ch-MVUbDr6V%B
9Z5T9!1"8TDY9eDTkb8HE9Gi+4Zh(NN-GGC9ikP@r+PJ0Uf)9!)i9`FU8H6)pKUY
FTDBd%5HD!`#J#9LV&MN%5L9qV&@D8MVZb8UNTLSM*mT3XY,Qd!!!8#Y0*AD+9ka
"%[3[$!!"M)%U!!5aJa`-[6b3!!(UR$N3!Sp[YY8fbH%#FZ%TX!FNJ!cFJdp`0d4
E)-)#5)p0Z)NI*JHNQ44B%IAJ!9b"E'3mA#%`Q'03i'LF-JL`++S"DEX$380EeJ-
i81AXJH83EYTJ$2LH0h!'**JHZ!G4B(cPRr[J"6#LaEbB'20LdTm)9"q-JK&N#K-
J24&"MeN%jd0+B!#iD'516#T"#!U#%95C$q!"Z-cE3#8%!FNmQ5R6#,,-QeNcCqE
*E*NM-bbmc)rT-i-Jc@3!3*0S'XfLb64A*J-S"$jcCaUGTqNcJfE9A!!,S#"JcDU
T-aY!bEbD@60RC-fPf61ATYM8QQ-cDRV0QhNfcbECC!!fNfbZcEGT-eAQbpbDE40
[kXf`Z6I4TYr-Qh`cF2l0[JNi"kIJ,*b)Nh!UcX1j1!fRidbFM$0b2Xl'D6G0CZA
NQPrcFQT1T6Q%1UIRr*bJ-h5+cY&*1NXRk%b)X#!%5"`C`!cr!5Y!L$3!#kM)"9!
BcGTYS!*1B3LN6T&!$'b$R#)*+M)aJJ2+J`$ZJJJS!c`K23A2)X!0+L-$H*dLS"6
`K0X!+a-M2E!+IX0hET3rd"I*J&9)!$D!'8S*lPN'E!!mU)`)!"J!!"R`1fr$)ZL
,#e%NR!X'm$X6!RBURrc!+M!!Cb!qdGVpI!,)S$+5!%2JRpSR!0J&I4%)8"i5N!"
bY)!"23C1S3C3J@4SFqLR3DK6db##)J#V8!!83!#3!!,Y-`#-K$*!!c#"96!!8F'
#$JZC58,j`!P&!pS6!$b!!$#U%L-,1+&dJ2b3!),T'3"8J&0i!X$JK(U#'$SA`QF
Cq!(A-b#SJXX`#Sb#%h!+0)!H8*i-m*p%3!KpSL38%9J&!8!+BLJ*#!"D!)SL3iQ
M)SA"+%!)`-N24&!QJ"FM&Ie%#$!J!#J#Te!%8%"P*!$MJKDF8DDJ#jb#%F!!8l4
&@P($'!$kU&dN!&[d2+M3Z@!-R))3d+,V34fC88,U$Cc#$b!(9N%"$%X9'NI939p
N"TN8#!3!-G!q"8$+5BKMP!"SJaLD%XC&'D"AM&%IY-i-94$+!"5!!#Ub"*J"!d3
5EN0I)U&J)!c)82@T3Qp$03J!#C%'I%rcT%)63MK!TM5JUP3pG53#aX$d"!$20$'
LJK4J'`i3#4J&,kSG)0-Lm"HV(L9!&`C8R*D"'J!%YLJ[L+&e+KmJ8b,!$D`#")!
#!3!*K0!8J%b0`!eP&kL!P3D!'Y"2T5N"%%)1m4rFJ)(D6r'!LS`!Q'!![0-(i`q
3!1N6F%m!S!,Bc')U!$aSBU3$9U%"F!*@+J$`9aP!&T4(!pJ#G'&0E80*$3#UM"C
`d`33&kbSF")!)Q#F%S'8kYB'U8[0U5GeJiU%`rJlHB!!F!(3Y*ffKfCL#NUT'TL
RX##N%P-jp3q!J3#`!mJ8#(K2GX%-fX-BZ%!#)$(Ze)1!%(`U$c!k4a3D9-B,J!m
!J$pSSP,#U**3('!9-N"4++BB+#(#J-Ui!3J#%DLI!)!+K&8L3!P5ULceUEFcV"S
"%S!pmB8+cCTJ)+`@JF+3!"9@+4,)!3BKDkk"X2S%S)&9d!#4LJKJ9T*J"a3V&k!
m!m"*992$U+l#kK"J"eEK!1"1&CS"!)!J#+Xd!!j84JlJe[$!$dS)Qb#X3J%'3(N
k!$8eS-'9K&+#N!$+"f*SeM`&Z*84@)80B+&B`'M0QV*!XS*5!,!"c)!*(+d*S4H
%95!!)%3#)'#TV&@m[P)HX%8h`L)&!-P!!+JbBX"A+bNE!+cK3,)16`$3!D!!1Q@
Yq68K8S$[H9GrCpCX"lL9&&J&$Q#HK-"e"3$i3,&Z93j!%(`!H"@KBI8)3!$8bKC
@kl!B!+k9!B68X%0E!m!$`+eSS$*qJ(2U"RjV!%!"mK86X!,+!`*i!Q*pX@'e"SK
BGV%B(QX!S!%a&KYBK3i`4%R!G899LRA!mYH2B&h&3J"3!VJ9$e!H!5!B25a`JV+
U6-'QK'@i5!1!&F#Yq'$)bP*38$m$J"X)Ucq!(D$@#(9McfaLa+3T!5Z8@$fJ@,&
!C43!D!d3S)8!-!R'kf)8#D,J[`k,2NY#fB"9#!$0YFYqJ[(+!bTM#V!#!-!2P0P
E-&ja!)d966H@dUSbC""5fCU2(3DF&3YB"4#!eLM!NA8'R$A-9KdKa!#1E$EJV%N
8"%3&%("Nb8'1CDb)J41efX`D!0l"B18%ShBa0&Re&!$dJA"9XK@JGp+!kbS!#J"
Z"3@M&Kf85@B,!@+XC`8!)H"ZZ!"Q+i0)D2l%YP(""M"EF*%3[fd)q%m@0V-+J"J
39S8!Tq@Z9-I8UPZj@J3-,EBP"`#!"c$E)c"BiB"9%!'8"`F`@bN39Qh!'"8"jNN
(-&Xlm8V4`,rp6c#!fGUeK%J1+Q-'m+rb9Md*J#b@'#%T"(!!heAGqS("HQdV3&Z
e!-`f%F6BHTS9cUUmr3IH3!"3!Y`+#kDX2@J2$eBNU$*UF'KEj+j96qTT!*5")r"
24`!HZ#`2eJ))A5,!FpQ&59LfQ4AE,PeX8"P&J,40Yd#A"5aG,HX!T!&pH,!h31M
5!&b3!!b(*FU0ZN*JkF)!Ur!"cQ['cCT031bLJVV+2hpZeX3#3VF)3!'f'a@-E03
G!d*h#2KEGK%AS#l3EE&Pi!R3JXU)!@iZ%(L`"qk9FS"4bpDfEG3P"%+h"Qa9rAC
c(Z`M%,Sr!"e8aK%`,"p[e08%5cH)iJH6m(B"3#N3Zmm02p`'K4YeBB(3I3+mS$*
k!-%SEU2Z,K#lc%$h%J6$Qc@03HBP!PEK!Qb%L"YeB@*#c,h1LUfeAQk3!(I*VY)
KS-3A!*b$c)Y)-kSV`,P49ai)A5-!!Da#"5!)VEFIj0f5k`KX`j&&!'+A'*KIh'N
#MZ`%%,Y00`#F9H)E!$a!hJe%-V5VQPjLQ`)b,`U`#JmJS,lG(jYh9Hm$q%pRPpM
qJ,`VDQ@S'Xfi9cE[6P!CUSk+UCI0Zr+hkP#GCMT+KDi08,094`Q`9"iU"M+[SXJ
+E%d$J00KJAKT!"@J2#1JLcT3*kX(-Lm!U6TkamS'J"kF'$&"C3`!MI5[2KK$)(5
"3)U9S6D("m"9i#3*PLiH1,4F`3E!eB,J#B3Z&2Lc$U$p#Z%Zr%U&UUhd`+SJmd+
"bZJ!6Ji,#+'f)20L!1aTS44!QI@Kc811NS6DJ&19e3#J#-fM!%L%6i8!qUM#DT'
IUJ'Fd`'8%"c!AIK8$f#L(S5%!!'Hk+HU!(U!*!aL$H"GSm8'U&-*)3*a!"AFL"0
#"eM%,+S$K*eS!3,#k+F#!Ff9&6ZTjM%#m$#,'J(VkP14!*!!'be)3!lPFfV"2*9
L%B80"!!k-!$@!!UE!!!:
---