+
+1. Core + Cache (V) + VM
+
+ synonym & alias problem: page table per process
+
+2. Core + VM + Cache (P)
+
+ performance problem: TLB (translation lookaside buffer)
\ No newline at end of file
diff --git a/W6D2.md b/W6D2.md
new file mode 100644
index 0000000..7caf81b
--- /dev/null
+++ b/W6D2.md
@@ -0,0 +1,29 @@
+2:1规则:提高关联度,至于要一半的大小,可以实现相近的miss rate(小范围成立)
+
+
+
+
+
+Miss Rate先减小(能够更好地利用 spatial locality )后增大(more conflicts and capacity misses)
+
+
+
+命中逻辑复杂,可能会增加时钟周期,导致最终的AMAT增加
+
+
+
+对替换掉的Cache lines做一个回收的处理
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pic/image-20240101150700234.png b/pic/image-20240101150700234.png
new file mode 100644
index 0000000000000000000000000000000000000000..04b99ac147cd83b625d8f20a77b1f3124c3af82c
GIT binary patch
literal 105475
zcmeFYhf`DU6FwTi2qMKoQ6YdL0zrr3=j7jfbljcn#=Q9)MTvF0Z=rDik z!@j()Iu9iOcR=#@{#X@Cd`t%y=?-_jU zsm%|VtPCUv;*# SdV-z44wm@dDvL1nMk2`OlcBQ2a$~|ru|Ax~^fw!Wq4j%4pZ#glvio3Ke_S4Gi zC$pb(e0DSaBmJyByC4FrFISV6%!x3!i)3~z^-AG(fr~DQB_)5ktFtirbzvlat(w90 zDw>{s^Y0DU9}m_WAS4Ncl7oBTAZseo?ekb_1KlZ*lJrR-ny#UIx<#XKB3XKI zM;`*+L7w7z-gEcpnDh&=v^}(EDWqFp%F1Wr<1L-&rMvH~3*SrYUGoq7dn86?0)f6U z0NI6f%W;IWWxa5M`waSj#oCVdUfiwc(~Z-s{A! TP%~&rFo*lD3Uk8o!C&a_ge5T!g;Z z;V;<0rqp%)lB~cAjC7zOP#1lMFb_xJl-Q<*T`8|oiQC%`<8K3eMMC{#Axbt_G|zCS zTMvEf8Rqqv2Dc1Tm-degi$KQxezb+VA@Ihed;9IA@31neuv%68KA~UFH3_4<6>|pj zlA=g{38o0fgptWX#tP&)nhWEf9DF75@W;P-$}d_sH(CEK<-u?B_4?V(9CdFNpVZ*s z37~@MKRihsawZd#_1SBm!cPiM!gM#I#p B=r$YDvi7H<4cvRE@C{z!1|fUYC`ijK0IPDI z${tZWXuQYVdy0_5?V7)(=}(Z}G|ZM4gbaJOTvVNsllp~arl?`-((bo9@>7t w5Bf&Zm!m+UEUz)VA9l>^CM0fQ1BGh6S9sfeYH)mmFTtC z%Tq |`xIUEsBUO&gj+69aX$T{w#0Ur zwx&ZE5 G#< ~ER~2*h&ngolsJjN&7Mt5ZkuK&fF$o-S$1nG=$=q+tS9^aa4`9L6i&%pBBp zE3$@%Bf9Q($db`@rNh7LaEh43KDQi)E*%G0OC{s9{w*P9crm97{G6(CuTe~mAoijQ zP1v;?w&2K=k<@iZEctF$=99N!$^Mk^(PmxddD)>3BMdozIC!buprW4iUW|WgrD#@7 zo!Du1iR3n`1FrodQLTp=-2`VmAADa)68dB@3IPfe>_fn}ks7hD@zPUu8jeX}w;aK~ z2fksjI8Y`g_Ur4@4U^(aoeeLZ3NSzVsR$$87dyI;U8^=38fZ{L#7IXQtC^#UA!oR2 z)mq4r;Z1_$_EgfwQr)(2Stq`hYNoAc$I*MophCgj)aQY|)`-YUQz@m H&kPnTN%+b;6!BWXQ6IswwdRl8j)t@~I(InRH%266(DEwMl Ot|DaX zD1NxqLL$}i57xsRhiGXFEBc>Y8$x0%JB(-YwTeLfYgUyEBX5yeTrBR7dMv-qE@3$m zeSK>8(F=Vj0kZ-4Z^2&=u1eqM1EXh?@MD~A=Nkuw)xBoRC2$U&UG-;<-~zHiQ3+;~ zyBTT1#aiv+=(NR|9JkCO@z!`SNa?@QCsj4nO5wveOMvo~7E)mkgDlBi)m5J~uqDwD zvU-Al9J=ED-KRn*R>$FxV%-6*!hx!>od*AsLYwIW;feUsXnF)V1`IAvr!(EzIPN`r znjUV0^L4jZ&+Pf89OzZM9GlKI5KQ}q6453i@PFhpA5G=(Qdqa9kryBPtlf%OGU8PM zl# e3X(*D_LmQw9tQOEov 9i?bGs)Cuvc zBfi_A W9*vh`-*$k9xYQQv3=!N+nhR!%zYI$niogJmr8kQF&pz z>V_rhwQk*C#uX*IWm<1Fuo?K-8k7iSP*OZV&wKA&|C(JobL}5p?{5`Vu)!%d2x&4q zDkM==v4+#AA3 01H2pD@c|C2Z?sFvvT;d=%f@&uY(JJL8-`w-PDFcAb;STs`!?1p5n7k+Ba+JwleC zPpYxGdzrx|dDuYfrPdVJU}&z_iXN=+0ZGnLQ0`nl4Y0i$$!9?4qpfAwC+oTY$90T# zV#R|Np351AAoEE!cWQRQllemwNr_>9*9AR7wnXg!1v2E>xH;McR<*Dqsr|t;)@Wk~ z32SQTA4}lpvIs=pI&1Wa+U9RGa6G%*U*9KnXC~CCF@+7JbV5D~pU`UGM`vKfzdVqc zEUjDLEL$zP V-B=T&$6)9TNstr4hQ>&(4DhI?i &AL5t&x;DAIK8LiUVsJ^h=0(ZZ?s!>cSF6hBWcL$?RRDJ+@P5 zvr>;TLt52 qYJ)MsmHU$+-dSEWaFiW5j1d{7u>Sww`g{@l;w$ds#gEl zRo639dm}Klsj%UzIL$@?bux1(_js%$={a6z3wVl M%J??S{F`gtGy15BD$`tUX0 z%fpKMfYLuQZEi^I0g6bH@=0=h3^v=^PWK1ETK84h6!U12;tTH@Ozcv5!yl-eu|npub*P(Sf_C~tl!(TOLQOI_8W*=tfH$_dYHcf`A%J6wi3DhPyG9_;pA!&(4qN5+ zM0UJ-K32aE-S5~eG-L6uduuixs>GaRJhch8kmsemFEnwpmxhYry*zAtHXqWFxy6_; zTud4}v|UrVfBM%$2A{0{4GP@RDJ_fr`!IGr0Jt{_9vA6Kih(}Hf31g_)9^7(lU*2f zw`q=2%zpq>NCFGCa9AO*C}rxwpaRfT%R3=RP);UZQGr`4#^;}?U@7^l_K{yz#ofe~ z0ubV>7zsZ5ri-SU;yv6`*6N1Lr))4~%&Fvz7vI>&LqRaRdMSx3N=2nRTki3`*4YzW zd7P(9hijwg +E-Q+O?`3T {xi zgAS`d9?lMR0UsVJ3t08cUyJ= 8eG}QY-oL%j`03jnky_+wqNAuM# &ed~W-sW?B;Hf aR*AplQO&lm8TE^58T zM3=rjoUFW6f_*v2W&&fT6t9h4pbLNae*kzI{cLE>@~y;YEw@fm{9aN1TD2U@sYf&9 z+%HM4x`pioqdxXilF;7>L07zdb;+q(OYz&~q?e6Ha;Tf;#%#R7@JflNF*5c7Pf6#% zo$R!H$k_s=$HYp;NMA@c+RMdyf^(nk397|e3tcuZio7xJ5~;7c=Vj@~p|Ht6zTiDP zv-fS8eLF>A6J6r^4tw{uFTXvHDot_So+DSxpW#twGO`JE5j>B{GS9O8b$MXuZb4wM zdr4o_l{w^as+?UgS4&%Aneqv5lr#%|?p`sRlz3r|wbl@kRrT~ZE>7OCr?PnKM~Bgh zMo5QWt)6(@PHRTS8#m1RNfEg?Ublk!X@?c3fTIY$YB=W{P^YEGoaB()q43uDD`82F z*<8FNM|1gQojsp7^sSDfW7noGd5b<2|2%S~#cY39eb`eE`{b<11rS`Ii596SE+6|t zZCPEMvzmj|o(-cEMc?K~{mhJc)V61(c;}pe*p)Zz_miTN-U><_)Gf-Dj`!x)6goxG z(^WO|oW@ERbqnnC+`zrXpeI&(Z|H#2nyZ)q#U~x)YkPC)D{CZ$Fs<#3I~k0rv~R zX>ilEVb4WVro !@B0+HVj6bP&k%AP5=$2iV~Jwt zGW>^SnLk0FVmhNoAU|9qlh{3*_Z>Oxe-8d9;$Ij>t{;_PW-YPXAE!Rqr{uU^yI>)A z$|;bTOv~YlRxOnoWRuFaw<@O{S3xd8{kNNo@zw)yTv1lgr?j8}M?qrwC$HBK4}n&e zLG3+OK)I6z(#6wHZ^M#`l;C&N0(~+o&RT*=j<|E?9_>E8^(1IEZI_u(X!WTee($c_ za2w#5?;6OF)5k(Pw+jtJFN1CMTJAF^urYt0JjUg4y#w>#L3J(Lz5Fi8sNShpAj+DjGUT^Cs*CXtNG;yKZ&nXxSWuo}pt{sk<{!Gjsw#vsz zp6NwEAU}-aWR}}i-dmRzjkez1IIUwzA)*A{@#(q22a*pDVxHArGI_9UY!F;2@<{J4 zDRB7bM^ R|nvD~bseGW}l< )U(hWT>$x*Td({ 1 z&A-Ad#iZ!KVKtP1cJLS0&*$wj`{Uch<|1tmHTcRfUP-RJiR9DQW?x$m57vhFe5&hb zeXgK77z(h%R^sDs2nZzmUjxE0c{_e`Z{tdm5% UCL{VU?_J80y;ac{l27y_$mNK*LaijB);eny)t>3Au?OndLbUQndW%Y9&Rfyl zsn-q>;$>cSez}zy1JSqT7GEOPr-u4``u3;9P+8Aq?TUDqz@X@E8Meb1sAP+TQB6q% zN%X>0>2hurV&Q`2_G!?i8~<^j)Swh?F%kP)F6wfFJj{wq7V-E#RNHZx27%#AcYP=C z3wXdx{yZ{X?9Y&c@|%cbKk139k)+en1<{FI`Uru dWLA}XP-g}_m z=drRphl;X%0Xz9fq%~nolkN* kisM2 zGAe!dXx_TSwGgVe{5CA^_EqSi!j#J+y=L$3p$k{V*Uyfg>CSLVbVD@lE!9nnAf8%E zpAW$D0fHmnN!}L%Gs@=KM2AbL^*oRuE^ccC_DG2AG!*i+@xR6-3yEqBhRK(K!t1=Y z?NRMm-W-8q3P$4ccc#H{HG_&~rL24ZJeEX42DO9pgzPN`cA@>9&cq`1NX8*(bG+fU zW(X#>LS0;yr&9^*Cyb3x9+ov}TX1DZiqc-6Ry&MQ7-t)SK`+WLtTkvepP#z99078F zY6|(BX_9gGBcq9)W5OaXemH7N Vuzwf*c{t15oAvSukM7Ngj+Z8i2I+3(7Mm}5Nrzg`ok@MjCN zi3`{s1I9$QUrR5|D~Xj8Jq13avtyi$QYTX1AF2#c*Ju&V-*g}FxJFZ)%3g)x)ge#N z(mdpRYoOeiAn0I!wn~;LEMsltXx$xt|3(x2?0-mFC{1-1>Uj?#lwD$v52V!(zY9B3 ztxPN)5-3s2+O$~L!qOuhr#cn}purA!6$mtUS7Q3Gyk(-aVbcmRO%l idblDCwukJdI8t^qk}lW8g#9Eojzdm4-e9`ISOR7Fj<|B` zZL%KW?k_=HJZAL!613nowPhxa`_r)z4`EUzHUu$n;TC>zI9SUXlE(Vnr6x#_og9~z z?B5>ur*YK6Z>^zx8=l!=0+u1O{s45xG)~&KPjE_!01mmr=-N~G&M-?>#a^J11>AMG zwr}Ho^R7jVP~A|)A`cHJgcnEyASEG6^3mictDBeiY3+z9@p8`J2kR7u*u$W}i$i-| zmFZ*GwCKpHdo0`F!!NS~>MEnEZI&%hfF`sW`qS&vi#0Bo5Crd^!rM%a3>$e2;~xDR z6;%IgPcdAbepqY?^HIL)0WDs5YfDf2Ft|6Kf#xRL{i!umsiL@3RhoG GgAMxTW6 z?554X!_%7`-?5mimsRiHAV>K9AER!WhFbY37_6UuSQDstw3sE}%n?WH?5kf{%(kCy z4YFMyGP;cYo dqAXDs;VoTy>kM8(W%77UnfV}g+V>|2oE--}m-=V~QGXL?v e%l+)hc*_peM^*Gtm-yz{oo%`R13m%2uYb|?|ZggMPv#a_{Zge!wIJ%j=e{N`d^|H1>REbsvrP0uQOa_3zn}c>xb-g3l{pX8Zixe$ z!CxcJ%&&iAmv(E}NuqK%aGSe_Lg+!;P>Wl!5V_IMs7Z(2i+~Py2Tk#=CI%f&R5~;A z2fBOTsS=^i_gDe6v Z`T>8zaA|vF7Kz zO&YM>U70|!C=~#Gyev^>Tiwt1 K|%H-7(P0M&fQEtfgz zDpI}Wl61x#RdK=ncc+gIw#ZNF#LAm*BTs|U-~WMy7!FVRcD%c6&~sx-N9}=2xeA+1 z1pFy*`)6EZb>%l6b^C#ow0b|w3~8s!j>OoUB_C&N__BYzp;KiIlD!O=Ef3(*oXWo8 zlIJ+|m+f)i0aBTp1+$R{Wm!nzNSJQmy1t}UI+FN_bff0~!g2FoS53^x*sp%HL5>>O zmzMQf)O7gnBMsjm|IoWr3ZSX*KWn!Jh{Vh^kg?c=_~}>>gVF (+y%s9&mMu%# a9UIx|4EzJTKYOu_FeeRsY|- zF4A`OcOyz94JSHy_VLj0RQQ^Ms*kwG-&fp|lAx)ulj=*!x0`bta>w?a%+dNc2l5Ff zX64oW_SEv4PqCYv@9_K;j(?%haGpy5clhvEE3Pi>+Nrc9@N#w>D Wji zan+E-P`-|r>oR7waUrAZM@hPF+snDMrZv1=w@R0%O#ZBvUof_IG>T#~?b<}1OpTP) zEa^U<9Eaxa3;5mOVH*iSy|FBOGV)5JX(2P;zYV=NWtSvjA^XA H{2psIXOrLI9TE5Vh z8_Ys+MEt?AYx73O)lRf ?=)T0?BRagGg$cae!<5?DYUqqT!eE#A{~CV8PY>6+?PpK)eJtHC=JQe_dB#8 z+=}gfL99$jez+MIV>aeCYy2WjNVKmhpIexSLu9XdUXKkzpok6xl6fiB3J%-?jxlj5 zi?O4s51W>7g`Asnd;Jv6&o#d(7V+f2a-AG9!EffRybs$omzN1Kcu#@r4p$^>>R!27 zM33@V O@gCJ3V2{xJFnkYB^@0tYp z>lxW({kj;&EGpBn?GHKSjzk}mQ_+^^M2j}#ISj}1KQa@qar%u(eGq+=GUqL1!q;Pr zpH!e#J=`=T;cUoWCb!Lru+)U|D(KB@&Ns~*$iId{Lpz84x#Wp%^i97*Q_%;uXrfam zILs{|(s;Y3#iCUwzu(7;dQW$8^NuE=UIVNE6J@s<*mbAgNa;3?K_6aqODXP;^1L36 zw`#{n$5vy2>s_A z37O*Zw?sWbTyb*~b3C6DIR5ikpU<(=PqM4tMa3|MOf2?7^34TXwX`SKu&Mq!Q|55} zW5U!uiq6Ds9M5vTq3W>-)Sqfxr(J$xvh0Nm;=y-1Gv|j^{2G`|$iYGo1`v+BjmYB1 z2}w^##m2S2vWu4+UCcd*%rG`@)w_{tn>3Ud1s4ETZM(nu0cq55oTQ5bc@{yRe$+ v0prI zL36Z?RZr$^&KFi8xhr6&H}FJ336s7iQaie7f#1l_WUf)S$DmGr;9k+vOXev)8wRlE z EbO>()E zxJtEj$Olnxeq2zRcCRZBwa%VeVYZx4ZVrN) *i|@y% z)bWJ;Qd^f+v9!?>9)v<)*zoad74(OV?+{*e53QuHmU7@$$Qi-a#obzEkDH(zWq^~K zb6TI6;h@fMgcDyHy({~IYzJBBa!E<%Pv}1Fl$wZ;WNCcL+W3V@WJ+>$!BQiyx=$~yT7Y;Y))QZY`eg xh$hkY{hX?$XzcE ~5yvj|bjViIn0e zWpVyGr6(K50~?PqX=xeisy{NxWKj7P?Bj$=mwg5SNyYwgdo2qM^vR2piz*`u871MM z!5*8n^!9s4CHf|op5z7DEeC&svBBl;5_c1ei72DdcAt^K!-of>KJl{zyGb^39Jluf zZa>1Zkn&GQJ(MX~7RIqDaSm-`q%py}Ws#fcpvhaDIH!S3-(qWQaN9ewzACNPePeE@ zzxm0641ypVyT;qUvX-V
rT^)?wO{ze$=4vAg2g6GO5Rx zey7&f>BI)tVKzczo)oAF($^(?yKZ1D5G$5A$jxM898wKcEOwp)Qxj?)ETXa2*IyjI zHeOHTgsC@ARZF-A_N3j^LTYxtbMl)>xS2LsgSKe($ZOu&(osKD6wk$ENSLY47XQ3w zq_z(oyei)O9AAYmlmETsdA+N?wU%5PJ9wzuYGk>dc=@p(0Xwx7Tf__CO?r*^$IjSI ze3D>pM%LPkL`}`BKHQ1Vkn=D7DT*~Wf5{!A{S1csX48V3e`{{wStedDqKjs~?zCLf z9CCNCHQVp5i3=3yJ}e`4cA4;X2DX|QT58QRx>&iy#%(sc%FbJC>E<^$YbUW^VKa?v zrWQ~yR @A15zSqljKm%_|M$_oChq%j;?H56sQo`I&?ME4FYq za~nm9z!fER-R-;Ya4^^-p6z!ZfPV2#so=4_lE;3B3jcTu=d}3ut{yxn|LOcHuBtuJ zJLptD4*=avG7e&Moc~nmznBi4DSB!D;K6@B+3drV;`U>+K&(O&h(XSWTZWdN7AyPE zEBKvFlhtadjil8aFiA9*mIQPEOW-OaBkuO9EXUV>p6Oxliv9%ek%MpU7OY(pOxetz z?fF>dvYb}GHly45cG @H-)3U^XWcqEydU() zQpw!!_VRxJ0v@C?eOrW|5@co9uN~M~Tc Hd4!HD I>Kx8CZhlTEmACQ+jJ4w@N+Q-y7_+CSpa9C5&wjQ zOrXXdZ^S;}D*9!Yw!EE$Jahzgvk5oKG5<<(?fJ@x?V{e7ua}1v*|0SBZ@DZqGy97j zB;8qip6}|%4fXRqMswfq%H8Sv;9L1&r>U8oB3*u+_$tWqxaVw~$SdPiv`wI8R<3E; zL3 -|ZOvyUyAc$EH!N;KUs=99p#OsW)$CbOtn>=@G|or4?O;GE|4#y?7sY~xb9gWp`(2e$x}*OZhSK6_!;HujrscjdJjR h+gE84cdhE_XmwX07 Pm=nUH}!@t zC4h;jYD@AC?9`lor6zVz*EpJE5hzYywTXd^f7CTKC%!kbbP{&CBi^(b1znr$kj;O% z*9e0xkS|(&5xK6BUDdT?CWMV#;~jX1N)q%VwEXaQ;t^wal#wc3gevaG ~z=|#9h#gGqQY|{lg=%UO{E4#m2-SzjHH2lqw#*8{7mK`Ab}q zSVXyN!NCg;v|>s^tIB>%PBXfn>@(Cn+ldIe?qDXiD2=oe!Wvm#KDUJph@bm0+f)5` zat!YYTYJfB0Z(-E8#<%FKcd+~Le_bA%RK;j3x~B{-qcNfoc*dECh`Gs@OJUV9L44K zK||0-ZPP%4@^V3xr+r*jA*!#H8SkU-h U{Z!dJEB^0^6PS3f zuSvw|RrBK#vCP*AdW-*%>K6JqJWqjatcMlfPl7Q1aScr4FCi%1J^PPQ9q)#V@0=wY}tdEzp1|EE>cd47` zV6)-5>zDv>R3J9IZP|0!Z1BE9W*vtX?!8t~QbTq4iU! zGzhaVjk-t3HgUx*-jI_ro}H;o^3=C!Kd;XF?AQHSmP1XC<+7$S2jgw>xIQ#TD)T0u zT;ItTFrNL(P*r9#J~r?>TVu;c2hV)XknSBbms%5VXD2I%3_!j3-}2T7dy{qDR;ncF z_t9E%_Y%65#|{R3v~TES$WO2x6#aA^hV^1pqcLQkuV;imrQESg)% 7M)!y?`IWOj+BmD_Ss3Eg6I)SHpKo^K#mmZk&NYE@jX`b>|j@wmK*{GAcF zsVQfSZQj%-)M)U*kAr~{7GwRliAZ(zzNwx0KtYxZxRF;=6$%b^iDgZz!07JLqF(TA zt)!c8N3E92a(xhv9kyvMwvkIiKur8~r{>NnY<#~6=psNhct>`1bN^SU>ZZBnJ0%+@ z6Q4J?z42!!Y%5{G2R# m!=H=ujgr$*lU=|r>2uD`P5Bb1O6#Zn z6OC^GC=UN5>*FZSO($t`+nWyKlI? YS{0Q=%unC8L8woHAi=c>3)vjnC_(4>IW`%ef9JAyR2`H4Wa3M! zTZ_4JHMix P3ueV@Qi&-mLpu0EfKECV-G<^I91zqBgQ3!J%#Dts_y zDNWv47KW5CYg1P0i9rK8jG2-ALE~(9-2hFaUd0vGdQ=5*Y{Bd}BnqkX`Q<_w`gcxW z0SWf*HN0Dk&wFAr %kT5E+j>K=tgKa3$RV|C z?R(LW*~H2Yu!(o`@ =VgDHZ^e8}suUr!E7TQRYaaf%JJtVBuE4~!4pAu{I9I$G zlv;k|OTE#RyjQGkvl$-i)>I S0%~}VV_ KAX^lB^-Vd)T=n#1+n@opZMQ5jc+Dd2E8 zY~y??s!)C^1+mPIO+!j98c1N>s>QD?Cyi_}k#o4L-$&sgJkSG;(p@V!AK_Uf#M4ai zIzNm$QXXUz`P$KV`mCaD30#bl9^+dZR$OAEGYFhx8~J+hp5fV4DWWwEK$UWc<9k$s zU_pkz b9fi>Nb`y5oF=d$?N1$WmeH!_@*jZuh?c~5_t;K>AAnno%=#>xa1nf{2 z6O42>k``pkY1;*gtU*;(-AU8w8sd4;z;gp?d+bVX0{drS3jWe=)ADko@+L@=xB52s z{yiF8Js9g9Tg#1wK4-p9%AGDd8&);#w*Zlg(5)J?44BBy{$O$MAJ|1$_wyx4lWAz} z3!06)5andT#Vxi%+C+SM@mIH3NGOA8Op#TzJ?$EK5Ue3GcwG6r5t=HINvy zu@j_5;wtw#IYY5H&kM&FO7!T2eI-!f>(X%&pR6gO6$jTGzX)V2(6^>B(V<^KL%`Gt;HIrxRf zGQxtTFwarWEr>J+^_w%o)xJYM`)ARQ80hmTL?sL2lmd1q?7XZ#BN9ec{jOaH5mpa! zu1t kJFXe_WZ(pmm967TfRim5kGh~SiGQ6CJi|W%9 zPEQ~#_%$6+#>*!GwH4XrXCQ5ihP^t~Kf!c-?UO{@PRDe>YGXlF^a~T`oqgRmK==+7 zw(I_wT9YyX^~rDj>=p~3%8KFszI_dRdy9`d=uapkhE{Dkn8dQLdy+#~xe$+L9U3FN z53&RtQ@B`>iWUMlpHv9Q@)f(Uw=n|1#KEFnSGDDHkd>t)=KWX(lLmGy%DHWNm{*+C zV0APDJQsmS{j@r0GTXO|7&+tpEtkZ~LS`5d9+uU$Q7$*Y|2i9Xy=UF2yk!)?#A0pc zk(e*`Vqy2vy>+!_Px~t@m8I=|-T6r0dv(DJ!bqg9`jVg6InEszZ&4^?t*)I_i=s`< z{=wQizfsbu^!j{lRvh`AZ@lA=CY{PvxwVTmq`b0Azo^7td J_KbXRRY UJIs-4*aneHnw(yo^s9FQdZmC0cace%O7{rT(PT@!5CUZ}+3~ zB;!IxKpBAlE= + `oGwFuehexuH74TVF48j#Rdo#BnT){qzDQk(rbv+s1zvzQUXRP zHbg-}4M>Uf76>Q=kQT%iNa$5ShytM`1SHgiw(sD2p6~t6-h+L(=gG?Y5tGb0?=r?U z{@0j0m4-C9?6BT*d|@}Z_1of{a={uz488>aA5q15YxNvX$fswW_7HOny<=6n{(F;C zqgtG9m!B)pmJY~zS@N{((2YD?=4 A0RFKI}4Ke4j zn#JO4PM97o_89!w_=Xu-5sBh6G)@cc46vIwJez3rww_+&-RbjU=K0&%TU{#EE~+01 zq7u}86Km%_`H}3vi4mKZMe}$s3=|dmhoM7J#*s?vrYjmVgGN-1%FHIKY!jqy##3*A zj3>)~jzJVh9HJ;&Ae9OZx4IV3N|?vUNzU5lWv`8lus!7jezSw*oTiql3zj~_qTpw! z^vhnAG){tJz&e%v6Pr0~(Syu3Um;!0DN=dqRsXGEuwu`X@5&t;QT*_XB$&4z)=j0D zayBlCuGBO(VzVSJ^p6vS3&=rGENKS_!%mxn96Q-e#3KY;H~#7ni>LnU>P8u>H@Zx< zZ%|-P(D}Y^wH015;hsaZMn1$Gcb;ui`I;C~8lx#wgdIpAoOJ03I&^4nvmWl}W-&{` z{8cISRms}!D>Dv2TQ|1`8udK2uH8p|JjGt+NBme#V=GU0HcKY6Or{&XY)6SQ?^T~; zklQ^bd6!ml&7Jz~{cXnPaBxeWq1lV@PqKchE-HE; yeuf1L?U84p zhzk`s2%mzl(LDDmlN5cLQgw~|_S@pRBjoeqsw1hh1z`?X=aD|FO`b}=k;<&lx>VnD zaYjl%UUT_*)c8blaBAuH9M?HNysh3quik(ll4yt4q^Gm(6WZss3w!rmRS3si3p*(A zqgYeMC?nMF{~Mxbg(yv@7OtNoL|lVuXAjMn=s}Sun-nmPJbO}EkQF^7zQwlwwfUrC zkNN_)Fn0Gpf>pN*&4pPRMuZ@sTLcPaP4WBOU#)PuS@ z(xTUXsphdrS>n{2{T?wyB|{kGQW|7Qr?FIUpI#VKxJ^%NwG%e$=dlYe;`U9srSfM6 z!V8X!t(4&myMx6P3G)Qc;uL? BOzJf_VNcaf zOGufq=CjNxi?O!_nl ? zF##F*2#$_KDv=>jB&SZqXxA?@cI4Ea3|m3vi7&nZf;my>t#Mv0BjL>HhslXieg-S3 zmQuPX2^PFc+PU76m}fg!VGgt#r#4lkn>R7%WgpJ6ga1xS>KytWVZEam%*;r4`=+tM zutPrQ$I +CY%e)#}qKVDs zu_-mnJzQ5|9urZoMu^z!vHTEdbkMh@08Fj%(vWnmi(9q&A~u*g!~0E~Gi7;jYm$=2 zj*@biS`xx+lKUA!2tGC$61lphC5P^p(C$?-5<|~H%4<&S>Ax`$qQaNG{1g?$AVyOg z2a3T$(F{xYuDdE#b;8?z$u3oDN>xl#=7a)n?Bbb$1TkWKaH2Myqu-R0yglH3%U!w? zX=8+TxvEyqR{t*cF%x8?_LsC}X*ZVd`(Q@?u=!40XL!lkV9R$UiX=?Enc W3J=Qz{fR%QNj%=Mxx+7Q=*b z`Q`q5@p*6$E&s>G&y2IUsa>0tt>>P=QOuy!r>DV%$HrIQcS;bG<;n<;qbotPjj-|E zF`_g 11<|}M zr-e^7aT&f-iIRkiEK_wnvd$ws>n~GV;H1 52#OVoqk|-xhJ-^8ziN2)LWQA)ud8Vy9!-f`&qGeXo9eIn{Y;# zhmNq|Rd1kjosV_}Sb~Da`joL@*00Jmi$c@aN|&6Q-#ciPKi!FScv(fppC1^6wXVy^=UnWd$40svKdhqct PhmbG z9M`0*0-@5Gm>d^yzV^>&USOw1%Vvx>Cpm;!=N%@+fT;4qIe2`>$3F@nMa2sHf+CTF z2CK=~&1yd*MRm5e>&-C*QgEy>vAZo~!&lW(Sep2=%9n9#kuVqO1;mXpDis8yAgb^H zEQ$ZQpPf1S3=?;k&DLZEGK#uNgVno*g%?VRP95pEILL$O(Z#Rl8K-#?cha+clS!xH z{r2BMTE}lIf_UbMOM%FGuUn+jwC}w`<_Z_0P^&=x8u&mHMvld7F+UFd;l(M;j;TEG z38ho)nWC~*4p)<~Z~Lhn@63Q j{Zk&Rj*bZ%D;L!#70p8GS?ye?EsiL zm%tY5+TwY5-Lk9E{pc_EJ6V<<#T06e+JNYQY%v9`+k&^n>f3>B!ENZbb+03nDzFE+ z_k#=h6@>YwS5{V*eoImdmtx!Hn`0TTEd$1rMbJ;FZ)AZ?uqU`G2LhM1h4az7V#Gif z9=rYU2q}*gHK$gcrfkY;?_i~fw#|SO&b(|;Jj!c84
lW?$ yf#kqDH@UvacFsG9IHFe z({Jw->c5=sVUy6?pwQyyhB&$}{q5iR)EK(c1)GebS2m4}vJK@zO`h6AsX78_nG&DD zd@8~+pXm4NVJaNfeqdxzCRSqPBQxju3XZ(^XU}|Wg5-jDRu8S24`C|uK-yg{^dFBP zq3wDZQF#)sEK>YFlEmE767*e}NY~n0e6BA9c XfqLCh)f3tA@-|FhWjo8-cg^QE=P&ehW-DZ2cSUsX)5 znu+7%DvNUI(sMr;$;D=kDuPf&Q7F p_D#&NYKrY;z+%`evn#c5$d{2dVmOR=Bfb) zXOmY2gwK{1CCZ6Kv3$lMcZ-G0U?u>%N?eZTZ|17l`nD*He?RW^W=Sin)KNqD?dIEy z4$bkB=9$4=;Y;2Xfh-^2L61u9bxXJEsr4d6m)cq5cR%M>j|7usIbUocqqg$vxzy^_ z2=a5V8qG_$Nbm~D$O8 =NdCVhJXZWm$beCwF#u5P8I#mDP~Uk z@BG^|bdi$)A&gkkl{3~aqq-kNk`Ic)N54m2Qk{OU<(!s_%T#$v+Qz6~P}UvPC0ET7 zR(mVzMp%>wU-oHL^gPhGhcH+7aYbOVyINhFsw>$IMj|$uqx$61E+f_QG20FqT vGCpw3&cqW?hcQ*iGsn&iIBVQ9I!pK?fJ z1rz##@|{h-ZC94BdnIzPKd$usr=~Z-e>5jjeNnYRbAO zX>nJzFc>fB$I~B(%`f&GZvGu6>N)&~F1 {pxHzW&gekFqr$rl(@YSo;?b2#Tfj36{4GP*FsfsgP(M+yPRFh z!GFF#09W~{lb?7GrVm#!KvG+1*IMfOtt HibhEA@4UT;pa70I`QbjOcBCb#2UQF6mOY%it1ADa zV$jna1V2@Xk*}{is-S%a+LOr!ea<}F=kaG=9tVyYNXFrOqpxBCp^q^$=L&m#J3uqO z?UQj5#%DpdLA&chBo)4CFvde=4Zx^#0CANmSMLPCk9{%{N;pc|vTX%eq*6Ev8!FWI z%E2tb=Byi$r4G*v=r19yxau3`5qAvvj>v!!=n@X$12NhwqjcM`{c6L7swAi>_4>Bk z2r wfh?te`gZ9T=RuGq{Sje?a IhXxj}AJw+e+%d#)%2{N$1`99V;*UDZnLUk}SMT3k=F<^I zSa`OZ8((4%|IW1h?o_i@GvBJpXuk~>U5v1`c4Q>&(Ps;#`^L&te$|}|GSBM2ykc*o z&Ca$NL e*MCz7iu^YySuEu@)F*-&|p-8x2k{A>HDQ;POC% zW&M_%{K?Q?BSYqbeDO}tGUt}kv}#u?+re# 7q-p%|Vi6I iGopEugW zHC2o;Isn@5mVVa_>8f_GajfepD+2L}3`wGC(R4$ynxa(^soqC1R%eZ!YeV?lTecRJ z&Pz~2-v35FIO`z%obij!yaR~;3a$Qbg@}?x+3?q7M=Bo`<4AZNhmu`4B)&z}`BO8D zx?6otJ5s*Q_sUrY+23DY>%x1Kkv?7Kb62LRwYgGgM>;-?44lPTqcS_mnBibO(Cvs` z!PZm?Uk av?5Anlbka>mr)j~V3~aYialtU5n8{!i;* zWR}&RFc|a%PJmWQPFw<`Lr1i{eqo*=WGEY-py8+7 $S_6LnZO z$rEfN5P~k$o#z!if3D6WUI|??pF2y|5i7W9-?bJvcp7s|VtM0+_IIO Oi;<%Wb(_-;8n)GdTMUa$Y26e@-!bSSG2mN(}Ga- zKk#Jc!~UQ=C&E~){&YMEXsL1deds7AiW_E@lmu-%r$x?i$ei?XdCYIOpDNskAF;?L z2+3ButBC2cKEcKn&0D`px{GL6hR)h%ufq~b)OIURBs8@-F- 7 zC0N%oyEK2qzNhJO-G&&Dnw)`xX5>vhIrbt2ahD$l5_au4rmrOdJF>FB#l58{s=^$7 z?X8-%rH2rDkDf|GIZDqO6}=eAVg{tbXwk3_(098tc(pib& K(e3-SR*u?aa h2*Ch?ZT~ zD|441V`ND`6&1(S7KA4W$Ci>7 FX;#%tB#WDTV~uT z%4hToTV0XXbsGegCkfgl&y-Rpd~laEqAMG+1WygO*FZ~m6 F7v$-KIHZPh>*sU?Z3e*sAmdTM{|Pv5E8uUSaN$KD5F zT* ?+S+TI;qcvzG4!!!3 zhcf^%LiL1*{Ags@m;+Tzl;T$k>4e&ymN2(}{}r|&ggfaD?(6Hgaai8}4_5B-!rBTl zo<}>ho>{2nkJYTy5fHiu-5ETZ?eTj=s!YqQcSEvFI?(C%&2+_ Ee ?H9-1l50#lD7IKEfajNVEpvtf?wBlWZwt6+ QX*jQUzX!OzS7$<{L$p$hcPc1n6}MtG@MN$;SYFDV1$vd~1agJM+4 zU2E94k3H0zW<&E!c0U2>r%OoL({dW;;IdILpE@|r9Z**9b+(H13qrya&71do{3h#I zIps&p0!>MSrcx0&5e?}<*mwAMEH!nZe66i(dh2H%g`{eFVf&!P-F8a2$Eq)F!3-eM znm6^3PB6PcX|H#<&gPa5EG^xNY$8D^*LJbu@+&(S*^CO8hYaR=mzp#Q oacN=9Rfo2E1&@hb--%{|E*TDi`+Yl5 MLg zg $+-3HOOljm^PhokK8kLp4LH`ZAG_s_NH%ol2@ zl4Af{Bpomu$@|G=cq%AwK6|NP$wP$V-2*t>cw-sD%3WYMo4`BTos!uRwD=D$3*|)_ zoLO9sX3Eu_7*H2;nmc+g)pT%hQ^C$qBPv1FifGokawgGsWGIm!_ujl2c+K`#wO~~H z_OpfnHs{~yv9;N2aYVB!V#4GRy&1lJt27S?y`*aVn5v~{T@NLI5KjK?$U0!Q-0g2# zm6BsOfzS3Y4mmhiaV|OPIvH1e?;WT(_^ihpPWUHA`=&E(RVePN&W4wA1MwhBSM3#n z*&}m=AvdUc0tgdaeT7Z3*B~(H!T7ea(1rIm?m(-)@A-n%$!YDrJT+JaD>OZzJdtP= zdHBitHxojFZBx7g=DTkH<2 %Q}majEl4dScQykD)J2c#URHO>l~ezmmN= z#z>+_mS%|gaMLI`jo_dk60j~~q>VD9%=PBK8t~emv)Jrjj*SmUtw<5s^p*BaWun?3 z3J}Lu7EzaaQ;;Fr=VdGDrGiA7t^W9?{4Npti+kLcDaz6wNy6(eP|7(R2c>eO0#L%*vpCphVyq_#FYCiy31nMr8uZ zaBax!G5}|r0xlk##~45_+yk_$5$ fbBeR5J6(enQMn(r#mIiQq=eLD-zbG3bR)# z3T5HMz-u}lLZTjNwc(zP@&jVorN@%n3ZsSOO+qh5$o_~nK(fTWM4i`L7l$r~jyKe@ z#<`Eh&vMFajo)HcwmAB+Cuhp~f)xw3abm!c3+|&4jF&(~}BsP~gPOiW37)OxVd2 z1F6X2xonRaP_bYx=?)VXdSdRjhyYIn5awF$^TIJ5i4xzGB5P}Z@jiLcT@^@&->Yj0 zFko-LdXeJaIPkJ~_PeB4y#)G7o^DMa1(pkOUDs@l0JOB(@X|CW)4B(H^C(y9mk~2& zmor%XIunhxj1v+RgyFFAd#sv}&vdu${4$0f2cYQ}jgZ6GR2{RMgnS6!cF<&|B&_6* z<()&H7YF^AnB9Q_VsP!&<<(l=Q+>;${MNVK))#_WbcA4RjLdnwZHuiz`P~iZP1#B* zDwGRQ)CqR $40922k8 zLpEd;sbLv3cCaOh1S9xBq_}cNwd#A8EJWHb79%H>GFH_#z~4rBkFaD=BTPvt7V3+0 zdD)4k!5Qsd8**Vb#YH$CZ$wCU1=pI5ao_On#E1VeG+yo3CWB8+l^-$zE;jcX7dud= zjPtT_Ndevbm;GW2)-$TDEu$q{ltRE#11i%N*DryPDEGyQK_sgYw%JniWB-+6{C;HD z9JhCJ$NeOcd13S9DE-Q`uDecsaQX}=!iDxm1` j#UGXX1K|sXmxR1BO>$?Pzwr5;?ICjjs=!@TQc$99M3tSt?OUx4zM+2%JTp8S!nl z^Np%I$vk`3XtUZ&lI@J}9?dW@c*BuLpZ|gg=I@*#8iZd6Iad|yv|2qoQxIth*pibC zaD@5%!&Q)! kq; X1`jr;Gq?$k6jyA-TmvQMzi*$coC|E-Hf1J1>`L>dTqh^ zc3q1fQ8+*z2!zhSI6n?V% lX)!McwuyBsH z4_H&68@q;CA^|Wy9c@!X%EG$BUDFCY(^a0)cn0!>;DH~uRNKmGO15rXrh|M0>GSyk zK`Wrfq@@Un1h3pt?XG21QicH!zs4l{=c~vPRx*Ws1_4bzZL-?qZA5>$2oou?kp=AP zI$M|ev9(E^Bg$BausK4%e?HPY*WiPe7PSXKhfrED0Gxg_;hV43$`cpPwdttQpoS zlricL9P-1ytXkxJGf-5gk6bYLaq>Zq=1i|81~k0lpC8(`w@%f%$Io_a(O8cSfEi0m z+15)Y`w1BZRBH7p_0F(h4drT0*)43QF?=kK7HSb~633H{|hNLFhN-Gls<6rHIx| zkZi)&8vu6z$qe`S?f#oeDnU}~V`Zb1Z0z}U|8mhaD2ydY>T!pADX_dbjCm}{sIdPL zw8J9I=wmQ8^Mr55hXX!)9YHE@TVEoD?oWW8vr%`qk s!~q|@ Lug=rIHbxNTi5~$locvSWClA3bN zj8Z)-Qkdp3pfn(XJcdrFs91?K1bzZ*K_OwCCWi@FJsT~2%ngXPNjT9?