From fca261c4e375b9f9137599de602efcb85c855241 Mon Sep 17 00:00:00 2001
From: stephena
- function gameReset ' !(*SWCHB & 1 ) ' + function gameReset { !(*SWCHB & 1 ) } breakif gameReset@@ -426,7 +443,7 @@ if the Game Select switch is pressed. We want to break when the user presses both Select and Reset:
- breakif ' gameReset && gameSelect ' + breakif { gameReset && gameSelect }
User-defined functions appear in "listfunctions", which shows the label @@ -534,7 +551,7 @@ beginning of the 64th scanline.
(non-bankswitched) ROMs, it will always contain 0. One useful use is:- breakif ' pc==myLabel && _bank==1 ' + breakif { pc==myLabel && _bank==1 }
This is similar to setting a regular breakpoint, but it will only trigger @@ -605,11 +622,14 @@ can also get rid of all traps at once with the "cleartraps" command.
c - Carry Flag: set (0 or 1), or toggle (no arg) cheat - Use a cheat code (see manual for cheat types) clearbreaks - Clear all breakpoints + clearconfig - Clear Distella config directives [bank xx] cleartraps - Clear all traps clearwatches - Clear all watches cls - Clear prompt area of text and erase history + code - Mark 'CODE' range in disassembly colortest - Show value xx as TIA color d - Decimal Flag: set (0 or 1), or toggle (no arg) + data - Mark 'DATA' range in disassembly define - Define label xx for address yy delbreakif - Delete conditional breakif xx delfunction - Delete function with label xx @@ -619,25 +639,32 @@ can also get rid of all traps at once with the "cleartraps" command. exec - Execute script file xx frame - Advance emulation by xx frames (default=1) function - Define function name xx for expression yy + gfx - Mark 'CFX' range in disassembly help - This cruft + jump - Scroll disassembly to address xx listbreaks - List breakpoints + listconfig - List Distella config directives [bank xx] listfunctions - List user-defined functions listtraps - List traps + loadconfig - Load Distella config file [from file xx] loadstate - Load emulator state xx (0-9) loadsym - Load symbol file named xx n - Negative Flag: set (0 or 1), or toggle (no arg) pc - Set Program Counter to address xx + pgfx - Mark 'PGFX' range in disassembly print - Evaluate/print expression xx in hex/dec/binary ram - Show ZP RAM, or set address xx to yy1 [yy2 ...] reset - Reset 6507 to init vector (excluding TIA/RIOT) rewind - Rewind state to last step/trace/scanline/frame riot - Show RIOT timer/input status rom - Set ROM address xx to yy1 [yy2 ...] + row - Mark 'ROW' range in disassembly run - Exit debugger, return to emulator runto - Run until string xx in disassembly runtopc - Run until PC is set to value xx s - Set Stack Pointer to value xx save - Save breaks, watches, traps to file xx + saveconfig - Save Distella config file [to file xx] saverom - Save (possibly patched) ROM to file xx saveses - Save console session to file xx savestate - Save emulator state xx (valid args 0-9) @@ -645,9 +672,10 @@ listfunctions - List user-defined functions step - Single step CPU [with count xx] tia - Show TIA state (NOT FINISHED YET) trace - Single step CPU over subroutines [with count xx] - trap - Trap read and write accesses to address xx - trapread - Trap read accesses to address xx - trapwrite - Trap write accesses to address xx + trap - Trap read/write access to address(es) xx [to yy] + trapread - Trap read access to address(es) xx [to yy] + trapwrite - Trap write access to address(es) xx [to yy] + type - Show disassembly type for address xx [to yy] undef - Undefine label xx (if defined) v - Overflow Flag: set (0 or 1), or toggle (no arg) watch - Print contents of address xx before every prompt @@ -827,6 +855,11 @@ Selected registers here can also be changed by using the "Data Operations" butto further described in (J). All items are shown in hex. Any label defined for the current PC value is shown to the right. Decimal and binary equivalents are shown for SP/A/X/Y to the right (first decimal, then binary). +The column to the far right shows the 'source' of contents of the respective +registers. For example, consider the command 'LDA ($80),Y'. The operand of +the command resolves to some address, which isn't always easy to determine at +first glance. The 'Src Addr' area shows the actual resulting operand/address +being used with the given opcode.
There's not much else to say about the CPU widget: if you know 6502 assembly, it's pretty self-explanatory. If you don't, well, you should learn :)
@@ -929,6 +962,22 @@ decreased by 1:The ROM Widget is a disassembly of the current bank of ROM. If a symbol file is loaded, the disassembly will have labels. Even without a symbol file, the standard TIA/RIOT labels will still be present.
+The disassembly is often quite extensive, and whenever possible tries to automatically +differentiate between code, graphics, data and unused bytes. There are actually two +levels of disassembly in Stella. First, the emulation core tracks accesses as a game +is running, making for very accurate results. This is known as a dynamic analysis. +Second, the built-in Distella code does a static analysis, which tentatively fills +in sections that the dynamic disassembler missed (usually because the addresses haven't +been accessed at runtime yet).
+As such, code can be marked in two ways (absolute, when done by the emulation core), +and tentative (when done by Distella, and the emulation core hasn't accessed it yet). +Such 'tentative' code is marked with the '*' symbol, indicating that it has the potential +to be accessed as code sometime during the program run. This gives very useful information, +since it can indicate areas toggled by an option in the game (ie, when a player dies, +when difficulty level changes, etc). It can also indicate whether blocks of code after +a relative jump are in fact code, or simply data.
+ +The top area contains two items: @@ -947,7 +996,9 @@ If set to 'Never', the entire address space is treated as code. If set to The 'Automatic' setting is a combination of the previous two. First, an attempt is made to resolve data sections. If this results in the current program counter not being present in the disassembly, then a second disassembly is -done, without resolving data sections. +done, without resolving data sections. Note that this option applies only to +addresses determined by Distella; addresses marked as code or graphics by the +emulation core will stay as such, no matter what this setting says.
Each line of disassembly has four fields:
@@ -962,16 +1013,37 @@ by the "break" command, not the conditional "breakif" breakpoints Counter isn't necessarily involved).The 6502 mnemonic will be UPPERCASE for all standard instructions, +
At this point, we should explain the various 'types' that the disassembler +can use. These are known as 'directives', and partly correspond to configuration +options from the standalone Distella program. They are listed in order of +decreasing hierarchy:
+CODE | Addresses which have appeared in the program counter, or +which tentatively can appear in the program counter. These can be edited in hex. |
GFX | Addresses which contain data stored in the player graphics registers +(GRP0/GRP1). These addresses are shown with a bitmap of the graphics, which +can be edited in either hex or binary. The bitmap is shown as large blocks. |
PGFX | Addresses which contain data stored in the playfield graphics registers +(PF0/PF1/PF2). These addresses are shown with a bitmap of the graphics, which +can be edited in either hex or binary. The bitmap is shown as small dashes. |
DATA | Addresses used as an operand for some opcode.. These can be edited +in hex. |
ROW | Addresses not used as any of the above. These are shown up +to 16 per line, and cannot be edited. |
For code sections, the 6502 mnemonic will be UPPERCASE for all standard instructions, or lowercase for "illegal" 6502 instructions (like "dcp"). If resolving of data sections has been disabled for any reason, you'll likely see a lot of illegal opcodes if you scroll to a data table in ROM. This can also @@ -999,7 +1071,7 @@ bytes in the ROM Widget are editable. Double-click on them to edit them. When you're done, press Enter to accept the changes (in which case the cart will be re-disasembled) or Escape to cancel them. Note that only instructions that have been fully disassembled -can be edited. In particular, blank lines or lines with '.byte' directives +can be edited. In particular, blank lines or 'ROW' directives cannot be edited. If you wish to edit the latter, then the 'Resolve data' item should be set to 'Never' first. Also note that certain ROMs can have sections of address space swapped in and out dynamically. As such, changing @@ -1023,6 +1095,15 @@ disassembly line where the mouse was clicked.
As mentioned in ROM Listing (M), Stella supports the following directives: +CODE/GFX/PGFX/DATA/ROW. While the debugger will try to automatically mark address +space with the appropriate directive, there are times when it will fail. There are +several options in this case:
+The location of 'configdir' will depend on the version of Stella, as follows:
+ +Linux/Unix | +~/.stella/cfg/ | +
Macintosh | +~/Library/Application Support/Stella/cfg/ | +
Windows | +%APPDATA%\Stella\cfg\
+ OR + _BASEDIR_\cfg\ + (if a file named 'basedir.txt' exists in the application + directory containing the full pathname for _BASEDIR_) + |
+
EEi+q6u0p$O-p_G$ z9|iG?&rM~C4oh+%WC@{(BJl#hAnDI!EAePo6V>Qta?~^I*uOFy`ijp)26s^g}RzGPXWiD6NuBNE5*%u9&<(- zC^iR5#1?ig%C~splW`D!dl^9s-orYg5R4MYbl}>Qo9I~-lCWVu(OO1`gUZn$5h?lZ za=LotpCzQ%mF_+FUXV6P<7o*C$9&|p4ul5}ldKYt$c81l{Q}{y3DG`yAZ+Fx?WQOs z+jAsn#;(C^b*I)p>C1Gm#a;yN6Bz>*9D%X0s)r+Ye8QMxB}_#noth1W>S2ryD3ROd z!UB@-s-kLG;VFGLEEucxlvyn(4E?obdI_}p&($-{Kin^6i-TtLBmD#bOyq!aS!oSe zG=Hi+>Da%er;Ulec~s3Rb>kG7~XvJU_2VcAX-Ry4?XQX#o^s06`^>pfNiG*)9Z| zbE8;E- GI|T)4Osb030C Ta44@SRM{D^T+k6&43=VOjSt?=`A_hFcYTQfzwhz>;}-O*n?d>o4$ z!PS0ZwjO-_vZH6c?D_gRS*u@0qJD_?>p10omJT>7Ej8EQ6kY#Rw01IHx V;s=;N0{5XDJEjsaUsSj=5jHHz$(DGgU3>$w1akXVWIj#r@b~-=2%KNJQ(&*g z=|aozqi5}!0u!@JzOJ~Sb?i!K=dEL4 $NfBU&0(X=Mf{G`=%6c-2| zUyx|qa9kA)ra?(&*qw1HXgGVLW&GO-lqkqB2B&rCqwB6+y(SmEs7Mcb(_f;?H0o{D z{{|%2v`AS8_GGZYQ(*S%y25SfOvtKe6O7`@s515BOl*SVT4{IX(TQMrb;SIYNV5a` z0t9F!4l~bh5F ?l@1`^{E=xL>l*QO~NQ3st4Qcl-3y(aC1`j z#VNMxJ;%}7K$AaWvaJ*2o@MmSade{CkQL1&javy>Ga;h&k>TZjRq*%Rn9M#Ae8x;^ z;-x}QVe7BJ6Rw% !7i+8!~CKp_tF*pvJ3eNZu zG)?S>3&W#?PG%Uh4&)@g#uLrj_f93-3kMoV?YkP#Ee^R0GP7XSvK)i%f(v0LmT5&j z>OABG&(T{=USauMv`2z OaC*OqL@SPbLJcAxw z!h^KiM}8jLAL(-YF2p6BN2#_hpZn)h+DlZn``bOQY p2Kgo94q{SV&is{yg^kaT42`)~C3OiNC~cSb*g+&w(jvP+w}q-qlyA z^9gvAJnR&WBU}L=)zR^vjT;?E5Jb9y@K+UvJo0@c6gu-o7csU5ou9ord5bBGe}8u+ zN&x6cmX42ow3bi1q#)RC9$xb_EM|2F9JJXtzRPtgLWqdt-O>q8`{SP=@H$Z5;J>L~ zKLJx{bo`!_L;yxcfY%@QuPzI<$mH&Ba%S{1v`T~;2lv&T!Vd%^yZe{^S#kWSKSS{P zDusEIA^IdJK%fu(y2)%9`W9s4_Xu0VUrA=&1p9~=nU^3BNNT3apE@50#K=vin8_Z8 z@IT1}!3St_9}Hu|S<deq70Fk&HYq{xDZkw)K?Pg`S74T7h6TV0#B7)aVxTU3J-b zirPhnb++Om!%Pp^S&lp5reA|vD;n)$K@-<3zpV;#;*e_;afT`;VPeSDZ8QdvAgN=F zYomI>=Yp6VU#&g~`VSS#*Ai}Pxj0TnRSVVqdQua&R}F$GGJ{~qIukVNZkHIjuh>T3 z%yRP4nCe`* bj}D# z#sZIW_o7)uTKI0ew?R`n{B(YnJE_fO)L&S+D*Zx%U(w#`g_=~x%2L5_MLK0<<;CJW zoYFSk^zkBuPHFd>TZq2W dXw`5EU(&V9wUgV!v8(EH@ zy?aDaIIHy8fpp%2EanfB9q^*Anb(Amz4QBpbU0@_fcXxQ0}SFSC8Gu;qw!%WP?Xl9 zt#YJXA0NzlsoX1UZ4ncJemyp@M7kQ!k*pbtsq132`z&nr$O!dguSg?d58-ifdw=zL zd&97dbL0t6c(&OzJ;qd0NJM=n#g0+K+m{~ xg3yKUyvy68fu%-;KVG?Tg|P%rRm;MsA=^oge)9~n5b9E>7Z{a< zSX?_n69y67w#2Ep=5RR#%a?MGFP6rH5~0;skN1l}8r4cZKQL3=o5@C^614FT*yb6*Ub|9)~` ze8$zE?G2+6KQzHM{2?ij-58jh7Rev8m=5355#s*V6T5~*NJe|si&KLqoA&%o sGdvN #Z*>uzU!YWNdhn}X{RHO6*3 z0pyA@dr8>t5 vlAUpD|e=8(t z#}Shxg^6R*gzsW#^$qVKnxx;@v|Jdz@k&rXN67Hni^Z+a-cne@{xcX^-hxmA)BK2! z!7|;vrmyZ#J={_Ww`D@l$f#=|1}DAh?qxr&IkSnyr;XDqN!ec5dh%)V!d|ZPu!?Y+ zTibs&Ayz$T6x(W+pFZckH!hl%O-sfsFhX$wKl2wFy~EJcb>Z35?-|*PQ*c^Ee*hgZ zpRMv&Uw Ag| xB)PY#+>DNWD_xl@->?68pH7fJp zj9{{pCCQ1OLWV}omV}SReSwlRj?P%z|Mln?0PI;`h>zu$G3$}hx|+d*8}E@>!d_g` z`p09Gh^Bi(vXs$OGw0vkbqoAF%sp}8WMNWoXRcL*XBg#fK}NVtv)Aeq@&`t}B!vF0 zop1pilHNv#?|YK6p0WRrCqeDuU}VBu(hk$H7vMF-;5HP*-fuYcL4=~}C4MUn`vQ{j z{k;7NaOLA+tkk0SrwH_^>s6A`aoq_usG9{1feGOeWVz<88hp=UcIk;c0jvD(S8$|F z#LkIvNvxq#{)Zc06O2B>pGnZgVd jvzXPZe^;$0mz}fb4nCg-pyixHwxK_Uu9!U35Lo(1o0}u=RT_JS|?;c27G`Hvj1@ z>%&1ps_nvmlk=Blv*`=>Rn(Qwic&|G7Mlj-`m9hPwahtE@}814Yh8%<`;nR57kJl7 z3JqtjX0y{;R!pbWwss5S)Wroqha0P2%-yfTd30Mb+|^VoYAP4DE=BkQ2{W`vM22`c z)@HR&1%T^!v|pgRG6+@3PaQ_i?-z-A{wjOG95LV*_kMB6|M nYx0AiJNIESdFW+G@;F+#=8+Dl*$p$dt6X!Hw<-#wLScfh!Qn z!Mt%KJGeYe&uW7^4>Lfhb)D1I5#_SXwqGn-=8^(l`S0Ha01QUJEL(`hWo5WJqNtx` z>eRG_Em+mSY$BLs<3I>I5L)l9<8+UDka;M?(Ghb?*ZOOBabgSVOl*8?jf`MDRALfr z7upkEkO`V`=PW!^Tw-hyDC#e2tJ#?cw~i%qW|LvV-~M=x?5w{xP;_eH%c XfT0p0Lhv`dm}FDz+uVA5sHtd?8fc-qEq+4f}KuQlXRscL&O%PRZ7svaI1 z%gMJVN%6E2GgjcIo&@VTsWai*R{bnc;Z`C01H1JoLz%Ukf9fxwC9)4xtU;!zAPsZ2 zTb?QfhMo2IOKUWH%DYo}Iwnp2M-1H5?#(;{;r&9`OQnqhPSaNzn^b?eZ+!SKEJ~?H zSI1`QRmI(=J8(o5gg9Ah_}Usj;E{Ikd=r$Ll-cY7K}E6@LITFsEtC6LpQ*z1>%po+ zjb#gSyQR~=PnVlM{(~v+-%;^=)l^+}Xch7_BR|IyQd|mYQdn~w4sHI};Ya4|A9vaM z$_>yyb|@R_jzD4QPMm}9{JY l^nqb^=*(T5u1@}M6-1;GBX2d^ z)t*c)(yD`Bx9^kwrdj{hib??QGsBY-Fn)P25oifHvMkNPJy}p^=TGt^=u1EI5FawX zcG_W-jN?wVXs_wNd@Gio;^g|kW#)i$I>w;|wZ;!@uY2dOW6{zu`R1A%*)^PjwekPx zdMFHjr_U_9Z sPL<;@zpoGda{Or8O&CN=>I~~XN62T %7mj*pwFMcYc7Q TV(a-W!kyF|g)+=qP~68uzCW%FPH z_SnZ~b5o{C!#y`nUCFqV4cxpVa4Z$v4PL?nXtVyQamkSbExp%|3wJ9bpT_swZW= z58OQOvVInn=tvSVPGB;-@&JBd-hOO{29jnM>Qm!D1Gc~5uV_3_vzPr_Avxr`qsUfH zm->;vPyc+=vC9YLnUB|)_SC&y y?W%59B)G$v z-f`&&*o?Rpo76Mu4QxOFd-@(l!A?XEn){nF$6qqU*TbZSA`7dJ-4EBfGh@3_h;&~P zTcw;^auowT1`ysY9e=TX*(r%bTeMrhO|@@NnB*4; wp3i=u^0xma;!VzgzV2 zPq_qIzjTtIf!o%HM&8wUG~RslW8=YVZVTVJ$D9sGC$N2y@q206@A@EFcIi2GK1=_r zweOB<@@u*cRq2RQ1f(cMr6ZtpP!y0N(u))+g7jXbgkr%$mm<9g(jiDu5JC|UkSaY? zkzN%cgplN(1byH4_kG{JYu&ppf3Zl&^E~Iw?Af!=%mlX{2x0O<*)8S=O?hL46N3>U z4;JCZLLjl)vqWsxzdpDf4Ex=-(Ya9od$4ja{A2fdj%0~8L1%jF{*zq>vU(dbFbeZ* z#O2IZP$}uHBp~`D1 e6Kc9t^8S%|GFk|7JOs3Q#^Q>EZrNF4F(bI?M zgN>4Q7X7^sEdI G|r8w^#PM>!8kutJp#-6QmoLonkSoE|Bn-N*$rCBddnK&J$anP9J>W7in zuL~MMCT-p8hQBMuz4 LxfW3E+-pu;EcdRp;l77^T`zfxDOk4L;p<>oK8MZe}(wJ3YpWQW`6)eY2 zXdOBv404O@+hkq%rDc>-i8?AqGP|{@0cQXP^*WzjNg@C`9oQIr!oP?USJ1YrxB0%k zi&HP 0=Zd28)ToA=rSCx3L9#dchWsejEgRxK&_p#|9=}fJU#^0=HQ{*#i$29~Zj>QnO*& zp<>}V1LgtHH90(C!I+&gwJ_@~{-r*_fC&lTRR5K#>1b3(C-LU%U;)N^ui_ij8?69N z=f6(*f4Nh&@HGag+P!d(3cwF`dB^W+^ 2Kg v|gc`G~km*$V4A;|Tk zPx)vdXbXze6pJT zG*u zym%Md;Y|_#egC_cT^HrZI*L(5xV<@-Me|42H(ufE{HMCtESXAI_s4$h!A^ii&l@tG zmHr#fF>YgMco`U1VEi7e(dX=EV?2Bp&i+Cy(|&b0efngw_ZQrYB1)MTaL)pUx1eQy zR9Uwaoi!w;{2t481E;Zh)ZgG^t?QamcojNiTF(WR>e?%9r4>k^voqS{0<$Iwe_FFh ztyJZ-qW413iXIO6oUj*i4C#5wwtHoC?VrOONr}72K69a;)Hpi?V3~~*xQf fcT`=9iZ18Z`#{)l={yp-{!0__pz)! zkTtQ(Kn|akr`OBA9Uit@QGv0P6p2_Z#Lr9uKcxBHn4-zLdNkWEJB^+4C3W(?S)GbI z=kU-F>dzyidV_JAod)GH0e{oR-KV6_7+VlR=R2Vrgz7XP(lwfVw~Eb?UG_^@m|Wa` zR&2nhc}w!xCdA{cc3G#<1_*VP$21BqweK=txlbsFk-jnT;mH|j+^rLQ!}J}Uv!0R% zp80bGSUpl|6{1p6bMxG #lU(7+3nx? pv`~dg3j9QMt+`5enT*$3oX*Dn&H^uF>s(VPci`7(K2Jivdi>v_1i^h zDGpaCbdb#V<4;Y?K+W0jn4eWpys(e`khFCISW76^nNWehHw!B7y9hS|UT}ZFJJ^he zZZ7hB2@puE+_B?;W+X$yjFe2qvzrBy03M9Ly+1F@mr(5KvD&3M!I0GMf*N}*Um?I5 zvSP?9YF=O7H5BWzmFLLWz2A5cWWZL~{Y5c(awx~gs7UEv@F&NIJq4JGzF%)@v+h@Y zveU$P$(sXe+^lUdP;r~ 7^_B>I#To!PfZjLm$Iok?=aoRw-5eS&)+Hrxg*`7$45-jf(o{6@`R2>Q(-;nukWt z%l0p3IqmrYL_+96Wg*u+r7SX6J0f;!*8-ypqwu~d?(H} 0UbZyhh{- zzSu9+4ln)HBNMz&vPCw`aF{8X8DxF0tw-kt2Cvi>qF;)3MgH!$9K%$&;`~r&VaU!z zGyY>l3w2_E5Ru%4xc<8<0uR+18sJlR{VCP}<}Bk78bkTZ7Bb(y>pw8CMmWF!k#* zDtSao{jfCv@u5$?4<){-;uU;}xaaKF))B?_WBwUu99{4VQ^2YQKL->$sLGj07qWA@ zDqxpSI^b7}_Bpcz0}61m`7&TtdPG4~+PZP!rE7ZsZ)nzYJR2Q!H3d)lSW;e~%0~R7 zqY)Vv97J`4w)FJP{aWXVDwA3_Xl>BZg6iVu=LuDIJr95y*#kc^LoHo}U#JM#(?%^Q zHq{`*G=54?@2Bi@*VgB|2gUWl-s0+B;*kVm^+U2^f|vh}!bMK>_+V#NAP%j_mnM~Q z;oCQn{4ky}%bN!3aaEzEG0GR~y@Gmfi4Wi~_y1+XE4TO_f6&VPDqsP-(I@Yxsqj1J zPGsblp9_kwW1vUA0jM6Ra-Xal6^2=zJO_na{<-dZHCm)ojCzSs 1NDK)UR%;2K7y-he$8WfVR7`G`Ab4pP~4Pz+lj@Q!0m+f zirEW5DO=!jB%Ux%07Fk$NOO-a&*ZCwciEP?<6|U5N$!!qR=jS!vWo5IWX-Q)qs`ZW z+n^srWq$*8Gn}O@G?R<3&n5+<8lPiEXfY^apxSvxs5apMj8|vM0*q1&L|E*mn*Tz> zah!|N{isVHe|6jM3%`k_GhO@ILXUPi6HIq|odXJ~{~P6auBk?-H(P?ijD{Is gWQlW3s3iBD*jSMB6AL-Fs zOR5_daw)n@vh_yLya;3tiy}8REDeJ7HDsBPEe~*7-FI^6xTbfn;_3@JYu7NrTZ#k# zu`0T}!nu)V#K%;%?2Rz6OXlUAvk((4e{?TMyH36ab5&h`cp8_2$ffFx*&W*oD*L9o z7NY3=hYh)F<>uek%x=ui-!St3*8GM`vhOkRp&zz5-oocFd=uReO?X1$;sgn b0CL!WM1yYl0{B&<9(;W@fOgfjo@|SBI|;qMury&nYeaP8tU)yQr9) ziF+0L2X(0T_3hdRnCfN5wV5Kl`z>dKOVEED{n2^A^qm05@3h_aP5Z1Yqf7;N97}i< z=OqK0Ds-!2KE*;7|z~vi5CAMSgySRPUn&57jzf?CPFXsh* zK7sA^kboW;FS+Jm_jo$NV&bUpPP!?1Ee{w}5-{HqIeU0s*=2R{#7)aXUj~2Z@)&7U z{LRiYfBY2bYLx*|o9Mxi9g}5Au@lU~YZiN{ V|_XRxlD1o#V*<0(1Sf4f`e+9}GoEOkUSeiB`0mWk20}6%r&U z%n4-?++ddekaDl4BpeGGN9?S*1GVci-d>;j)e> 6SE$65;(r7MycZhekihg jJ Lg*jCLgNw|A*{VIX=7{HzIIz*nFl6beh^V$5bt@>-ShNS?UR180|XI zV`zC1(OHENHEHKww5dQq&C|Tgf^`)D{hV#e;(S0@ItfF@-*o%E0;j1az!0tCs-Aed z9nMhuent|egt_w_N*Ab-y5qTPm5sXBcr1&%BjpE&J9q0`apm7s4?ROx{spn7#h*!A z$+HT=v=vrf3DFDi-Ek(VA12o2L`zH61{+MYcdk5Zinb+`L@6ox#FO)!Ria;P!t$X9 zZ53bEO^D`lZz;?zu ziT-|#P)fFSsE2 NWxYSh~e78#^&7?*?F}SWMuxZoymc)jb#A=&Q^c~Jac<>)x z#sZjbYicIrgxDJZK*Tsa0D) 22Y# zr)dbNZ9UM2w;W0XldqkzAv+A{$fs3S0+xOw3I~(}2yLm9YQ2Qui?zJ1zkf $_`M_i=}wMkf4_Bd;tpkNIDg2Ouv_i2td(YkLPkDyG4bple6#QXzkF; zHt}k2y+Ycg{t`n95XKn}j2a2{bRaQdQ7g1(t1=z@JXqpJf=#41x~xa~itaY9sVtug zFVu0-lg&{cvjKN4Vu;c&f^mZv(oNLC5ycP#c#GVB326c)+W#r7sT-KoNaU-be!XsY z0n_)8t%@TI{^!@aNOuL!es1#4bR8l4hUv3-XLeq WzXP{ zR%^c!Tw&Hf=x}LLsnSiI{M+Y<7!}=bSeHQTlh1@and4pp3$JANt-D;#I}A3J8-cjp zFfD~bsfihh4^9_ON={fNfZ |531s7Z`Rf<&@f@4R gd>EdsM=EoxHdCVf2;|$HSlv z<%by`DXcGcN+wu_stbCf@A-mG-o0((em1>-(Vo!IFn-9@{|BBFN?HGAwP)14AFf*W z*mT4<;n%69@vG9lVjOj6lCr3$rPBST<+E0C3a9@8*q$S!yyx|wKiQC;_7x8OMtRS> zvyUg>lq08gi5X=l^D4W>A++K6cHDXLm2M`UxkUBlkmYf%Y-gP_4+& TKlRIL7QM%DRoLMU%=s2F!!M|IC)V^ z#5irL(=v$W^hkTa#(E$8)Nv+do`qJ*I_@1*ee5N%5>A CnPlw9>Yd` Lt#Q6hU(n zzty1>KCa=i`fSrl*ateF{X2UBVs&>Y_aZQ`9*eQx<4GB+!P~OytKs1Je2f1{c#Ye$ z>(@N+DgW^Ptb~UZgLnRbg88+Obhz)b)3oia>Hcl; Sulk$g- @H50E&YYTS>bXUh%WljHia~#5 zb&&pQ@)dTU|41)IUqd1B2DpCk*Ap*!&Vn4S0E+?{$v+8*S)#vEIw3{UWB(azipFP2 zD6GTN<1FudSFGWH^Wl2k ?S#z`knCq)fpC6nvl$c8%{D^-s(o@A3Y{t+3M= zXf8QibTw)upASz6veKn~Te5Uf4G0}+>hvy1k%Ik8=zDz6H?~k_8xc|(W=V-Hgj~Ua zkRgFlOYE&;6x6yFeM2{=*ZG*N9XY2(zVe)@hhit$?USm?YCYGFlS>v5PPnR+&L{;F zE)DkX{}56BVO{^3Br)Bs`IO&2?@mfXK~gav6f+aQj=vs;=x> zkjl|F?*m_X$V@zzs_eQqN_%zVs;G?DJ(ITQHqVk}8nkFrXfk|c&@5>NADGX0^S|ef zXUJ!`6wFzfvZ r9t226|U9dH*Hq)Vo_G5T%=~pC2bu`;cYihuv^de~NunK9+nF zzQn=pKXaKS2)#d+)prittKfBDv4GqVFdhama?Rt{Hjj-unL4@Y$w^bj@|8$l>Losk z)*rp`wzNyCCHVIkb1RD`viM_vv6KzcXSPv3l_D7diQYVAR8i-3(?T&=hkWEn;YAeV zy{M-Pee+ko#{5!=U cY33=iRGoE*mKcTR zV*(3MFuB2Oa50?-awmx&q?jV)=V*<~!;C?FG`CGp3R;hS_-#z(Y3QLQn9^qUHRFm7 zUVx{6OkDD@%mM# m{NBeby zV{S3pa`&e0Lad-o2@s`S{5nD)hI#m_$AGJA%J<9E+_YOWKFCbpeIGSE>IW+mLN7=% zvum2q8lyWVSsGMfP|H4)6DNt+mdED8{FmKp_UR& w?SBXHW`8W2t>hF*a~Wf7#u*dN}grEw2P_jpWgiL3i!>BZr4K^##LXd+-;% z&MV2<(Fgl+4M9c)Q`%h#TQHSmO-hG9mD+bPeN;9-6x4^FjY%r4%blMe@)?V{MGUE| zc&0Jdh?`T;aT%C1S`BEmbT It{*64UB?yo$>Dqs&jE$0ad zMe*b9&gNnDts9!fw{EO@>{F>Mhcx|=Lpsb(t!s=pIILndF|tnEioZHWhZjV65iv{Y z&}~*84HIxEr=xs6=eK-*=SR1lkE1_F5m)P?YDVhRFs*_)?i(nx$$qE)n7n{*J{j^Q zM4>VV+Qj-yk;J==9{5Rip*2$sG oZVyPRLvz_Gme48j8aNjM`&&k?+dU>uwbmb@&HV`mkr~_CZg@Ik0 Xx#bf2ykJLW$vdV!(b$AZF zT#i1>``8mrhPji~)F`76
wITDITGHaMV`gR%O9o5bcQOJCgW{h zfahdEJOtR)dyXe7vk8xet=Hs5$99-Ui|iIZ`dl=HpOCJ(mc+w0>`(~C&_B9&(H_h0 z6Y`p$6>pi2?yameHp^-w?%8EZ1&K EqpZ zsJwMUdm!u4omG!5=Aa~w3bFA>bG^R3T2`gSqgFwfdnrmb>E!q?_$hmi8*bFfAh+S7 zEWH^;4$0;q;7jQ-zIbU!6ateRZuVn8a%@uFexNwYW)xQ z^{yHBcah`!uZ#MZ)3aP&xwuUDd_$NOL_g^?tEYplYrD)Qzi+r9U}NPf`_#n^rNC~d z@C*r!+SG`V!-5+J!w;FL4zm=31AT%HCdcicbv+sOs7<7->?BT}cPd(tB(sDmIbTlc z#vH{Ff0M@eH8$~(+}-+?Z1#IQt`mB^=?B{4sVOO5?6oJWE5?#b-*$^uIxZ$pm4&y| zxj}<{6#LlyM@6IS w*^)j z4#@1Em1JGJE&f=5z7=kA0W4v&H35F&&}X+!gZUV-(--L3uve0t3qPJSLwcx3Juz;i zoy?lm{EMXQ5-CMLlZQZ taOaPh$~lgIwS7hBtn YQ=BwnfV*quCdYYmi^>m7rc7r)Gnv6xSDQiOoHSDk_rzbkgrgu9(ri1 I zG=*I--VKOSaP>KI)B0;UvgDb~GWd&v-~@~Zge;1`A?uGx5keN-tU4q+z!x~dMS54Q z3AU{>rw~n5zjvLT9MRn{7rHj& %-&X%@SA`&<5s`b8FfCZhzj;iF;)xCM3c{9obER>Pz^iL zN}#zM1X*6x;HbmA1s&48qTiFJO7_q4sz2dfR`kkM2hS1uLhXDtbI=m``L^u$wMv4T znd~{iUXw71O3g;7|JIIM^ybCgJi)=a05wQ9IX_N2KEXES(J-+w6E!XF4V%Q$$%LyK z@zPWF)M~_Kckmy`$UxdCdUxk&QLLonIxbUmf<7c mbzAMZMogPj z$0TEes A<~cbY%~;bbZ?%m}cf`|dFqeKNPDodJ|KITDca!cy zUA1DLxMDZH@~U}BxpZ-&`7FVK7aq^5FDa1c82`Yq%U===5)OVy6J9xf-wD3dk=dVo zMjWoeem~@OC4haa8%3-%(vs}fl3X7wvj^b5Z};1Yv(xuE?a&?hoA0JU2>NeOGj|L% zY@tg{_Lu!#ilTToE6n>uzA{jCX2Jng`hmK;7BvrQ2u@xPt0CM_+dmNH`O{}FWr-jg z{r~uDgSI~h!(W!9s+Y|EFH;fULk*86 *1|CAW~!cI%dZGaTp3V%!szmXH}Z6S<&X%ME-iqSoTQvE&+jR-?K4 zLDar^g~$khYTq^J80BHVoT4tlndW8H#pA$UdU!IDqDiwphV_ZAlnT*PCGb0u`IeEs zHLKp jm5pVk?nC@imuL{}a!{lm_d)M7=-k7$r>QRtcu(^Vd z*L!%x<~%~S@-&ZAJ|16S(2Ftstk5IXVaUaP$(W^9 zsV@d`q-6|QVG?z%v*PNKNap`&Jv`*x`HmN~8D7j7~dZ+kS z8!N`+DGK%)PpRdD_| bqoAE8r(Yf4^B;nvO>;t$b>HJDD~&zfQ)|ql-&jTT(Fhy~Itn0_*Wz>z zGlzYXh8h1DM}8Eqi<`1`_|3ThKxc;Fs#%=*e^!=4N1dKh@R+q!rkdp{<6(vTKLgVL zj2=t?J^pPH4gbX?(j7YoYrE1B*kO5Cl!N@PUldjzee^{`;y R-+ zQw;GAwno&di$d6uTH?^^;pMZstll-w+P`>xqbE;m*{8$3I+5vOo=K> C?MOPFzr+$EY7Q!2GOhh;<^9P14bq;I}dz=ZJ3_;krofGe^d zw?~Kj_&~PphnBkdGndY0L-p({io*EEZKk9Mw@A6jVirapc<*{u4u_2Zee@X#YDBW$ zJMJ3l#>GH-C)G8MMe VuR%2jjVz{u(2_iIY@_CFbWh^tk=eG0U!U7ws>7--Uuz4 zj6&7fvde}jxHs(nX4q(W;rK3!@@ncVZ?vf5ZDSDVDs#Z6rL)q)Sm~YFF0wb?Y8&Ed zJB2=U#z6N`CD84- UHSvIR={F)ie=ljtYYR_aUM3EMy;b$U=Xqbzi!;#yb}PcR zO=DEvbf^Mk#IJDgKm3D-w*_ZUa{YD)>l#GV-Qv2eY!z}P3r~V&Qzx6^rNVV4x7&)& zN5xaSXfQ%;&Hmxyt~4js=xh(iTCIFGyoSe;ZGO*sEER?{h=ALMP@bm9-+q2B*}G8S zfZFmUnMlnEDd|nws$r2S;%^ImHVe?eI#qtWy*tjyQdD|DC|~1g&hZBBxO?zJLNTcS z*w&~&$V3#nG~q*x&qE~b+&-9nPTv#&9?B*^lhr1C2FZ-z5UFjnb2N%z0^7HMNL~tR z!f6UD%xmtB9n8x7O?Lim1Y1?he6+e yY;iLF qA6=g-DTt*B3xHmnyQMa4Nz~yLS(2*j>|Jy~$u4a_5I&j~5C?G8+?L%~ zyfkr`@%b{@xCqNRtXHALL+{3>Pn5P8>pl~Fw5z cUWSaO|il4AU#-S|xA(DM~mwvT #AZSz0| zj zDG-(h-)(tyir2btKM7=rQ5;#1GB(?5J72oEy_p=zezL!cKG@Hf&e~S|*6n}o+mR%; zP8%Oq#-~0j3%(Kcq1~s_Eg)`(HN$GGbh*;~+>-XU_YTj;miY&<;ShK6?7j0jJi)k2 z2bwKS&1w_27>Dp14w+f|)aLaJ`hFX@E`TI(5?jx6W6UR>y3#{b=4e^x;n2#X-~h%i zhwbU_2~rIq1yE_xx1K}w*i_$&V5Hh){jWZ0h_{ ^<;&_@8-`_SlAddxVNgqw>liaYA05Ta=Q1c=OQ%1^gQN+SWvHy$(i;GI_7f z`aX$iU+G8d64DVMf`CwC9QE||ygeExa_X+p|FoBOH$hCgfBt?HQnS%WH>Z5=N{|rK zr(urqAJyAmbm8t)nlZ95QMk?N+B&(PnIj;6f$uT&rBw>^By23iN~rFS?gsuIx`fvz zAdu2q_<(SnByNED!a7`p{S*4Le~mI0Rq}j`1+|?TE-r7-nM{+M4O`>;VP$pj--pkT z!akf6O?1g$=ksyF*Se2H{%Z_w ~*x)cJI(S+`=+9>>_fzO%jd#vH-`^83<#nT%n@cS@Ni&Z1Md}CIl4Zh!F+p z`(u-RWqq=8fRmwl&+Z>=w@n omt<0^88d6E}S8-r;zGs`|V6QR!q#2y62V?f|)jCiU= zv2}Njv*)=VAlAj7ji*MFT~c*1`|t@W$dYzCwv%|5HDYsk?=^7qZC)hj0<4|_8C0D+ z`V;PgXRFhX1vpw&9ve{ak>;r0mV0X`F_+2ig7s9aQ)vV8O*!W@4aCZlF1b7qH?Oay zUFI8Wd(BX1a j?&0c#`(L+_yaww_bS&*Z{3K7xrp#`uF>h672Tz8 z!0JO75lygs`(Yb1uBE2r!$S#4to5$n7Cdk9C*1rG0izjp_(E~8%tO}kLS6UHjx-Xr zb%B(rNa}O+*c5hHWPpKkx~OxD6&HOaCgO5?HZe2Mz!z;H|`xYb?&E|{Re`$m%b%kP){zhypQ|@)f>}Kwe|m_folaW zyl?;6NH}6wC%<;TQu=5)l@QtsRfaJi#{Rf1UPVv=D#FQQ6#;Zf%Eqe8M@(O*2~SrF z0u+6Xd3gBQ$C}H-4h}{yk?=(nL59z%ag-Q%P{qyk^#^H{P>tIb5Cv0qr-HXW0$ZjT zHPd=rBZG7OlP3n@rhF`+>E#piFP@2>ij&dCw1iu}M{LSY+RbbdLcqCvLs?^*yKb@K z{E^Z&Rou>A+UV`z7*pu)h(()+T?fuCLEBk>NZMbZAz!0={f>Arot37BpRMBsS9w4% zZ1ddm47?02GlB!-kNDWEgU#zP4gw2-aKe(Grf~Yik8F%TgFcb%#Xx07{xh)FMcZs? zCNGdY$G%Yc{+4gr{!hb&hCNsSVn+8b(N84HZ4UZ3{InelWy`V@5Q%;ezknG_5_kzg z-n7SygT(WriH-AH^j@`fL5IJE4kyyRD$B>20$`i#wKFoFQNHcv_8W&bF8v=*6ruGH z@{|=`TQxM>9xi5SnI2ow)42Fep*r?ir>}4f=x|RiZwQfKAPNnZ2S|;1wj>;={oQJ< zrs(bUE%bQbf0_<&ryi1@>G#N)!X($b#tdJoTxZ*tcBYz|IuBd}UTWZZ(Ph!ZAmc-Y zHR`Vu!i6Fzq^pO#+bs6*+s8I|k<%xdgzKuTvw_D3rVdX~6L(K)E+6G-V h^~&%Uzhc?a5VhMox}nCaVl8CcN4 R(G5O`x&gCRot&pGbdva?x3on*M%L`Fl ) iK$zS3jjRcs@Hy=v2V$D{VUUS{$Rgp2F4h0@@Lh61XRvZ30M*O~&@uvPHpMTwRN|wV-FJ4W002`QXDiK*ZOrAjKa^Hh zXX=ilQTX`iGrg=bm%yHytu}qL&gx<8(5BEcWI;PPla-6!Gw<3@Qsu-g;+KFaE$x~b z?`iAhltV%E7j@z4col$Q3dX6F9R=Y<7f22CkT%+B05!fVCAoC^sh?l@vVhx$x7Vd& zF{(ky7x4+gboh=@r}j|>&tGopYv8_>?9D=+c%OdA^t`oy JYIe7BQhgXmhS0F=DRBeH-$imY}Hki^)*dTmg|lg>)LRCO5R{z8M{{Nh(yOI zT8ub;G3njG0U1bR%v_Q6Ii$Iu#ou%JG2!^dy*}_XA4A8QxSCw$P5K|qNbl^m%xd|L zHtY`tyr?*Sch&I(X}($Q@(Pik^FwfpF!k!iv*nIo%zFoX@S877K2jlJn#Vn|RC;(u zpA$%+Z_5-T&Y4YSQ8u@#eAchzK>LmQbDDk%0bfF>ak!_p0HwlblV|uCM*aJT13MK2 z?!w%5q_0{z$XBM+V{5khEp*{l8W-8!uuDz8{WyhctG?S$XMi1?-Zr6u=zsQOu oP>=NhchuinKK#fk>=^LjOUG YNG6(5$9*_-3x84do7yVn*R8_;7jT+4n*aa+ literal 30241 zcmZU*2|QHc`#wBq&lbwQm9=CiON=Z QLe>#QcCrkH znPi{A*k* hecksniI%r+u$>Y(1p mD3IzD}Zn@3bS`gbO9Mhs+Pc+L9B^xAA>wFk pbM zL9`e;Ml|NKbA3}_V6)IWf3Nh{#_e|bu5!k%0;Tb{e-t*p?GfvAXJ#|-GITY1WMiiN z{koY@AX+}{fqu?8alLuYd+OgCuei1U;jMR*nEKU}?rXZ!O?+)Zzz~-2MZzF9S;2$4 zp1F0Xd(;^k75LpI6Sw&UWdAV-NqCR~Jef|@d|g a}4H!}S+*XgO{ZRZTG#ABd~>$8z!Yil1a&5G#%f)042Z;tr%_Il2= zRgOZ8(D)Wepl&7N=K$hP_WBVwCBY=6cO#%`&~f!w%et_Qv5F*)t9|K5rsA$SGm8_{ zprr9h=vT^tW^zgs&F0P3;vKr?OHB>z)zII(T6(UwSvKVm=hs(QT%9n!FA!u?Rgjr` zqRI1u_8J-fG`910RTYBvwr?TQzlKOwm>`4HjDjCy)*%8aXP7{$8RpFH+)QQbMm@3W zS soUD*MT?<@Gqd;Fqu)d>?nL33aB0EP z^y40g#FwSp-BKfZmjdWFz&X@|6vkSD8hg^IP1LijrdV^5j*%6ijJa@}^bU4;D5pX( z^pACe@J>Byb-4)+C%4JZdnG@z ?Oa=Ge!cjeQmckaT9}iZ1NIUWlGWd)yH0$L@Ia(96mXfY( z YG)_ZK=db`Hc|M&x8I>NS(AK=B gUUBfr5Uk{wbzNHklR_ zR%yxS!%Lt3{6bR=7PNZ{CTSGkJYsXSzvLD<^ en5wCsXEN?z|`> zCU8jb)x$I<>xvP}w=%%m$flp>V*6TO2P2boAzMvDx?5A-C=5)0UeBl+t-6(_&n4cx z=jMIwfhbM&t5Wwh6g>yQXs-M|yxgB=!}W26D??Xa_TJxF9neyy@5*-eWI%%Kh@Ss> z@f;0%9qcYt5B42zje76N01Nh)A2;_vZ!>?=TD; 03G>V$bo? z?OSEbx;3?u$;(DtZPt0&_N`H3VvCVzS$)_nvaS1CE}ahnE`hrjXZ&GudGGpeU2Fto z$@wP)YK~z}x9NHQWwE=B&z%)IUJrkXaj0wcnN5E7$V|z=>(>t!&W4O4(RT|$sUlNF zTak#m*0c2_YTH|{kGTfY1}A=I>G3$}&!wMyq4KLsLoAP9|B{n}Y;PM@_@Z8VzKkMf zhJEhG<>MjxH*Tb^oz6i|i(8EBrF(t6-QiL m#qebm`4O}Cwu$QS=4l@la!nk|r^R^u6*cCrYw_>J^~?r^T4duCqn|QUfEl{L zbt~``h#>@vvaT~cjB>_qgs#9Bknlwi{z-T?~c^Rze0tmh-6u$U@uASGok$5G~4vv zSP__8|HK@^RAGXTUml_fnaVW>;0gpfAs)9$=fLs;FUnFYfAi@~0;tsCcZgPKTBa9B z42S{$Kxw94p4wEp?$jrpvX$Z4-*&b7(LqZ$zM-_=zt3N^(COu?B%Utll+wL%vO#JJ zf{-cc>zRj00>7%`T$oP UeGYz%L?wvSB_vYUKM#<)+TWSJls6x(@pF~L6g)}eF3OenYac;X;znE(= z_jG=rXp^wpYSGvaPSu9hLUC$nsY}#`Tlq?}#|HZDEyR5@-shZ^(~)=ga0;*odu@ch z_{|TVIyTbD?rNj=Y061!{RwN5e9(X_FHqX#%H=?Bff-fWQU8~JyjLXJd1w+niY?>) zXA?h#cCSokB?i;{O`zJWb7a`!4b=`qTa$Q1pWHUr@v`M@`5rHXQvs8UIPM_bS?x12 zwOy8)bZ@jfh~p0MeDBg(t#;=dtr{l$mkZX*lqoCEh@rnu3zgM(W4c4+vu )`hCDx7-l7LGUx{!;mrz||w5=V9MpT>j%Fkk)@WCh;>o^V|#4TStVh0i(M` z;;3F&_-Ug|9cLZ8ux21s#KkUhhH3nA=1L1o)XQzM9uJ@iY!#G@IGqdkxfeaP9Q=?m zMwJZ>_X+w@f88KA`mJv CThLs zURCoWd~sKSP5YF(VhK0j+qYBhTg?c{xaOnv$84lwQ~-ILy@qUcu_s>EhG;O`wh@#Y z{|;R?6rJk|nGInU^XFodJOADCjj?^JKM`{Bco(Z#FUGEDMhl&_iC-ID{|FZ%gJKL> z#%}59mB*Su!mKzoR;587wHsvoq)H7t3prp~EgLXeMaMd1b4L0(atBv6?(?-iyGCrT zJ^h*6E;nr&h`()KZZaX;yDS+|8zUE}>E(95Us{YFuD#qScD>G$bpAW2+5cO#)dd%! z-H`MUbYRwOim(euqk Dh zG(3^L9rQ|MinrqoOfH3G9^_({Foe GI`cCqcA#f2U_E)+?@6J{piZ_tKwV%a-}PAkPLsf7k?S(aYKHD?yOv`bRkQ zedBb|t%F&!Ya< wB$%WDsnjL$7z_fZ7N-5HTP9y6K2W+1^`$|HHAG%p7+=vH^yCow+# zxz2!>%bD_@?UvaOzF9Q~sK#wJ9$iID6g~2UsE~LF -Vak$p*CQ*kU#BOH zZJ5eB-F;Je*Q6lUs8O*7G&|lp*qVwTEpq%LZyPf0_DlVqd5 Clqy+!VAMe~{Zbp~q5mcuBRC3GpdOvs;$5L~wKfIQ=l=;H7hdVCL zF|&h|#WOZ4Lax5gWYgJ<{A}u=uX^I!$p37iH8CMngiWD&)w3g`3M04?-l+uRIe#*$ zmVs5}%yZ5ES<26D?y1+W)?>-DkR^G(w|-fYnPTS7`kF_nFxKd`i%TNYA| pQCZr4B_MKknNn#-YD5f`H^(f@q_c+CGHr7m1tKdY$Oc^|f--+xPKT}V z^WK&ekZ=B*9=L<&pf254oT?L$5HU8#sM5Z~T1}NF@+b@xd#55y1rgspbNMBq4L9!6 z@KUdOady(}8y6-`#Kn}U$6fZ0+%!`W==wk$2~LSGz%5N z>b$rI7hC^mYAdBB;YxHjWKBw_)IVr{3iaL5J{&e}*#3@)e@srgXwF;UFx?T7(|v22 z*N^r2p?j-06z#7SXgmFMtm4UF^LudWO{-_IMCZHH);Co_5}6t@rzLhKAS>Cv@2F0k zrSe8E8g(Y{$_tAM;Xd*U6?2wf{WfrzaH;2@$Y0P^M3vRVrO 32Tm`W7yn(Wpbx+y!|z(;DtO~jctwl1bor|VLzu 4_Io~Z+NcM i>&5u@49LU0Z@)7_ua YtJ}pZgWn6)=8}CkRr;`~uxG%3(%!g1fYS z*!gTxz!Y;Edhk8>^u+5ugeO?1Wwo9#uJP4Ytx)`kj}2(_-NkpN#V{y%_2={Wta8(<6tMlKAj#eWe(FW$|x@o5HciQ#^JIY%o zXYoUxgbB-CO8(PQKHjOaQK=9Ncs$x>99bS+vwH(WoUfEUUhE0|(t%^3Sf)$Y-Nr5{ z3|CI;h6$1}aOyz`o;2hSMz3W6MtLKoDu{rm>=N4%zTz#CD{kMBvgoo~w5&0B$^Qgf zFTb-N;F?dY{69L^L02N`X4{SgnO I2yzIXWxyI9{B zTve|F%>3@Ytb`_|>1#nMNx%(~B;U%1sG6|r9*ShuQ&Tyy#NS?Z95)rCEBK?T-V<9J z;Yg-ISMFs3L$Rm?M=rJe=&&@2ue|0rZcS^dy?Dn&Ik@p_0gmSPAV0aW$|ywW;uNQ; zXt$zn*|~1B`&<3K&>fup8_SE+*fw&l_vN(Gp_KcPSrnF0Y3`TIJ2p>UX!~pPEkC~F z8i}6_#u>bCAq^WwiLAiW|4L^oV+3Rzv1hz(kqKPmGP7|aKx{B$Nzz^ZYoR5hq7-k+ z$0%Ck*tsFOoZLIo`<8VCgR!!QITm%TrnJ~qHMah;2NJ<1!CxyP(LY7X)|9S-ezSY$ z$nku;X;#kg*?E6XCfSGe$AqZcF{5y*vwC0beX25*vNqo)Usj^R{c$bG4UPFq*Q3}n z(J4svo~M-_tUm!e5=nWqYM2{S+CyzV_CyJ@p}Yv$L{A{g!ChV%YXWR;r7GNB$#oZT zH&?S( ecR%dT@F~Bu|yAN$8#U`-Lvgk6(iMcmjiA> zF&)okr3JTfkPx3=YoDdfr!Q3vB$UH!Xt>>OdnVFYtkt-^P*C|2jWV-r8C$-M21_5A%2FTf5!fKHF8%-7rz%X4yd;gBgG zL~O_uzO3HjtV{hY=1VID!;mMIjf%?7GKb)5etQl(d9uZ8Uf#6}Z9Kvm;Bxs7AyWoO zL|cwZl%=0GkUTfN1~+6GnT%Mzl1JW~=B347XL@H6V-9`#2()Adq)X2L@)X!f%n@Mb z;_T~xr76i@O7aNd@0kp 5$*Nzywcq}>Aw9x#qi}L zX<^4>`B-|^a=8%1^4cnV760FfOd}6F=*Al~wHU1U*wJmyEb-WH6S;41o{pIarIr56 zZQY&c8&>t-8%PUI`zD#^Hj#+gZFrmI5Gy}I8NK}pOr_|ahRS%*{lsHh;l#67@)$o% zNg;AuUDvDVi3!+pZcy>hduKtr!j>5p1+kxu {AIMUk@r^ z^@XpQUQ7dNGs#HMAo%;i;Udq-( $GB1dYMr!oyfn2VAp%|q-F^*G=Q#l@R(Hvy$2R9Xt!WL15W&UO7 ziRf4L(FEXT82BFbekBtf$j~#RZO21R;`c8#v;Gqf#h7ab&Zqf)3xw@|K=ir%gJ|JN zjp*+|Qx10@KvWhg hi~=qP%Gt1GTgMB=pZ ;0s;BFt z6T2o&P6FzL$*~vuQ@HUE?xUCRJx_y*{3{#_?-R3i6^d5UeOI)HMO1F5Wy$bo^ogYT zrnwtSzPEgHL?dLDzQc7oJTYP1XWJbMKAISxkCbaeMhPsvM}5;B+Y^%vYay|xfDEA0 zB3d()R-2PgwR}`rYaVp+WC`z{u_kL4y7rnXNbnzC^M#EKmy6Epw7=(HPXO}i3z Ff}bO40|JV-Bd4DTE8vrIfuA=S2}{5B zo0-pH{4=*xuOPr>K#D#g6J9HkO1~<<+{211XbyW^zmA!gg11r_QX%$mw)6_S97@AO zmR~?%J>@{ xKCPJ_2Pv!`L*wQG z_N-hW7gzZlQ06&%1)V>h8eD9ND)aZJNk>7TKT!a IndSm@Q}vO+?lAbn-H6l0fUYekJ!!tK zvLx}|&|vh3{y0@q1Q38e!bYS7nxxKUXDVy~hoD)b9Iw3q2ZrC+Q1kp6SoKgO`dAn& zpZiOK* efa}<4^vARrvm4OYfV*|K#Io! GVX`#kT$z{zlWe`rcPo?Umj1!msB0(zJyk*6Jk50AYwPAb9k z25|})z~ozVyDA&Rl0K`@set!@s=fRk=>6bHW^+o_Jksd4ixT?cJS5(uXvp;_*;FN7 z2<+zEq#TSkK4PqzT!}9~l4Qi(u3Yhek4N%cX}!WgT2G94ujr*7#oaNyH8+2_$`eXC zto}g!fgD?|m(b&bWa#QmtRMI~%}V#*fVfV^Z{Jcbt5=ZxuDC!iib&bzBMM!5tu*1A z-UjyRpSoD`D!)cI;DzB(+B)1^;=)K^>>6v_7Zss?7Z8Z=$_e3Gx-218Os291yd ay#*+n) zpr(dja-6pTDkNh2?gq{-ck5aox)uyrqs0|ke_`&stqjSW`a@l5ZtD|?Tw}WpTOaj} zA~})lee_uCI7+HszozU#5J~zcQp05bETMAv(-10EcS*4kdsK6%1EP@1J`ueRP~tdF z{ck`O$LyXbwy}R-n~_ax#`YZ6Rcb+E*MO1>n|NIH4XZ=zfxZU(9R!NF0AS?*sokVB z1E%%$>phusAe>f&I|Ko<*v94E03Q3}Gwudq;qtWsH|e)kQHz%#`>!*xO9AaTsH_w} zkb-qAg|;>un5Y65YyZIxZ&krj{MNyi)H=Yy+T{*`95W9f+~p{9OnoJ3V^&8TJ*A2A zj?6{aAv~=8s;K eB@SOpsHb(9=WQ>60)}4^M;o(;i{)R4q;UQ=j_k8&3A)qn)!d*0rt$ zpfV_JI5^v_?5lYQ*s?8SjY{PMTTLLVwiDh&P|bvQE#6wc%h^bb$0BVnrOVHUO}+AB zPJ1yK0#tzN(z*Sf{>aS@dK-%xM*7#6z-C>F{bqBb2h(B=vLw3rXgPOiIc-QEu7_(B zvJKsGUYAIE|Cf6IgdZvZ;7cHTJ>>#F#QmF2+~=G;?O6A9mpl^ZKMvAKk5-3gx{b0- z6L4PxP^KAOh$hy*{oix)p2!pKBo+8gts7MxF4YNmPJSA+(wx6Wl7BmT@sjqLSC`+F zm0FC_E}i0h$^5)@UFoYuFR_R*?`CrHeUnLieHQ!pLu_T1R0Y_{g<$GDtm*E4ZWjd$2baQW6a=A9`R9 z^H20qTYDtK0y52L{aWBvZ$R2kYP!}zNqju=*UKQ+F!j+L%%Tbq&~wQOb?x3bdP*xj z1cMDZFuTi;r8M-gCXAtraMb%RrbMPFgH!gk{Q8G-XmyNX2d=RI^#;f?93R(2BXYyi zo$6Y95~H2@!=?MoEAJ1|8Si2rqtpbtD&4R&?F0%(E5izfG~Ku9wiBHPFOv8v)O;Mx zsdp%6pt`MMpgg|CRJh6U;%(x$hx>>2dOm~A$$2zH>6dPR$>c(-+e}Eo(4Tx6Oa8~A zlwyW8Ek~c0AX516l5WC~lKLUXHc^W8xxHn-K3&xABgi3)YDruIxg_Eh-_!tz2Ox9K z|9I~}5vKesHwg!83K*d>xWS~DYt=484+Bw&8AV~;y~0(kZojp#2N7X6^IKJ_5~-+t z9}=N5G4PNce_h2jGsSp#Yh~Qund}J!BHn3wrmtVX=h`7jSkaXLY->fnsWb?5{c4YI zgnsEiH| d4QQ{SFb zy_AnCXjPIQ(erFA2%p+K(}hUQSo-`HDN??0RNf#9Qm6BLJHZ!T2_O9gy;BAAotGxm zO@;DNNGS%`Xl2rTmeYn76G%??%p<@ JtCM{JR>x!K z51#JkGn=?A9*`=6R&S1~mqjp!7fqGTJb{9`uRqG++Z_N*-(|;HZ2q?wzz-oFuZ(a- z>PBoVa^K*Td(CrQ`_%-xAvIL~lG_TAe`#ZLO1rQUJ3*&py*35_mX*`^?NM7(1-M5l zHorT4tIzRJNIp9BGy6j|p9H8dJa~C@j$?yTyLkz`1?j;1(j>LjF`odPy}Ay>F8r@#Rm3# z<^|WRZ(kzEDLmQ8=-|CdHW7F!k#QEJm?@PQSFqd#)Pvgp(06AThlRuRl;zwkcYq(Z zjW@9x^*pnm@C7W-C6EkV$q DT9Xna zLBGG9TSAGl1CKoi-hXmvV#D?zkeWvZTX;irzZ8Ghy8%vpj>LHFHgqZNp+hLc58801 z+Wm$FkXB?CU7au8d<~`)`#C|841$cJcOTXjm)7k-VG&;OZXx&>7v@!F9prsIK9L zqMTBCuYxGdQ~^0iZ5Bc*y@7X-chVA{moDQZIJ@4>4FmZ0x1M|OPK@Df)yeDIYrHyY zQ41E}GxR?wx}4*VfdVV9Q}FBS;x8pSFMc2H_LHlXE-B+4BQmO*b(XfvbgO*!L%0N; z(4H&wbxOEZy~Wz1T?+DZ7DSCs(TFaR13xEthBn%tdn^PUf4@U#nvELI_l& 0%)y_F9`sy!o 09tI(rhBgRRX^MeA%sI-6euXBh`S=U$e{k6WtVQg)2m%G*?c?P_ kpq&lmwuAb2N->F<5&>oE0?a(>d2GBnD!o9_N?_qS;Wl2SuB0onH$ z`u0c7Pd@UOsk)_baVoza$tJYdPvv^x*~opHBw~p9?x%av | ;V$Ng7EgL5Y($SBMBtH~`@C&%)Emups;ST(OwtLQAfa&sD04(apzd^{YHt(bCVicPM29HRd~)kvN*E0xX$eAtCUG z*(gb`G7ob3+{t#;%C_y7o6lej!A?eachz$OZRAQkjAnsUxw 2AQ(`_LrY@EhY3j yLZ7VAV9DuLS9`jJ)JT9sVe6
YARiP;zRAp7d0&S@ns8Q zV+i_a%)^6WEaS`OA8FB(0pV2bPI3z+WiA9vcbYq$r{#~B1G?6ZA4CS<+5d;Aq7V0Z zf&dnq_SJ!rh3~{ZnX-%Hh+2r<)B#hvHs?~I`h}qOxPC9OQ&t0xATc((jn?wO`&~Mb z@~6NdYm0M5uUZchmvNZO1#6^CC!1N33jF$L{6*v{biNtm8C^^rOC6^>^{(7wRIWSQ zGAgN8Z1-(w+QIuJDewY^#`;#H<+S L+gzuYZ_QGEti`Y4oAQc*a JX`B3@7h5CBAGFUDx2XUZFktS`abnQVNZx^h7mf+IiVq^6xe}B{l zo&g2m`v!W5HYfVH=Ll#_=XO9)F8PDS!cj@iW%3Ybl3h9=?B45YqZ-b>XYX8x15E#p zUFehn3Gt!;Ro@tVo|@z_^7o;if)QWSK`A+yR#!DZ&57#bTOXBD#Ff!auLM)&?jP)G zx_PW^Y5s^%GFDYI@bkR+&6+vp;*_?DJNGd>Iw_si2?*QLT_N?|*3oF?rehHv-+zv+ zt9a0AFCC=Lf|Vo% |8z38jhS9g5XIkN2mLlz z=8@#wcDBnb_G-RmaI=B6KN6Awv7};Bb#JXD_%iaT_2tQv=m$8GQuG%;xYCB!2yq8N zD2ce53Fy|we+hV?HXtFeB3}<`BT$SjLBr}mizL)ovZwm6Hr8OE@u=^6FY2ahU|#-& zo^h2hV(7zf89;w<`LF&^h5Yi iubLJ-gA=eD`V;PzvBZ$aSDy?lD#Mor$FH <@UGC~GJ%h2dDYj_$_H?`Qn^_E^qJWC1s&dD4uaCa;2T!4(>t+6z zQQb5=z6DuDlf@U-H(+xLV0eE*A;3l%eDf+xl&loOyKV~{Ho$EhCRaAahR?EF7>Fsp zY5k@ZQV=V{b!rOKCi77t0y=v{KeYJ=6UZ-}wd{yN7TVr6_v-|kTz1|X$7{!5m#S`w zjiGv?(J11XNwtT_5^94F1GS26>xFwqbvZH+Te%&3CN!$w3WY42WB5yo*%pn0JHQ;5 ze G4u>pCr@dffyZ9l#^vBa>e<=> zwcj4ny>8|-k&7`a+V4j^sTQ-y5DGFCREbwRFt4m31Vwc@Gqh?I5b#-vDaEdT6Z4Bg z_IsgimK=ftctgZ(wF@7swsYDlt0=6kFc52%dB?|r$kJOkn~z;|GdpYHbk}9#2GwHf z@VY+fUrhIbdhJ5hZV3vB-_qXw?@U*Cr^M%D6-M-Sr=25)cZq)7Od(k5IS^=G`cxC$ z)i*cc+o!w}_ *45`kf$=%6)Bc)WW1 <)p|~4_ z%86PkhuXSWEJ*h(&}}G!s%Ym@+yA`1uzFnog!s(Xw6;{m&OlWIr|f!excLln5K_x{ z@>trTi~!Vs4m0(c5OU&mLgO4|U`q1rgdZkaJ (s3uIeP9(mrU`S^A3%#!rkf>V_cPe4I^wm3z0@TE1 z7;bBHnLN!$REP*bqjO%_Fx2lf@>Fefygk&Q{&I8p1-RY4vbl2UTWQeW9P(XrFod@3 z#2{|tqHJ#xt1>i{qJNjbY{LCWfHMwh{tqhRD?SJJ3}C~83j2?M+CQYTimwfN$z*R0 z-(Yqvr6N+#*cZd@5r Fiqru%Q)Y*f7T`acaQ$IRYB z;wuz}trecIC~iK&Y+#;Z%kUTj$HzQgp>UjyA>Ag+QWcg=RfNFfhaJ0#3vvGuVml)q zyXdT1+KtF1G)Y%`NF$tz)U#S)#M2P8o<40E!cYbbybAPnLx9^{q3>P90W0+3brdCa zyt`zA0jQty#&Qcf(!hi&KDGJ%aez8~%-ch{$my0NTFwk5k!HyVM Bqnl6(v-$1$;$uCasG-RQxJ8a!2|m}E;E;cX!rU(GU=v>E zuwaq&pPXA 9x*D%#@~G#NXUmk-{;8b`^c})sXl!%%-U3Syv@oJD6JJOb1w@ zY?nElDeB^3nR-f!dqT~euN;FV`zGkJ I%!B3Z8vkXQ+>YQlvRSdpse=Pyec3*kCdJ{!2WDx3=GR{C9 zDgWGR$KAkANs7Pp))VTfuP>dkAs4?=EF2h0UCU!cg7RhOkNnF|N^f3godQ#w0gDpD zNiYpN+5C}J{Ls)yA^_DPiQ7W}Mvh0!iWr;)**_)nvzPUqpJ-T=l$!2;`HRkM_f_NG z2 r}Mwq Mtxf_F_bz}$JXf>yf-!z>o*>X!8iAZXOmW~F D!Du@n_nX?^_UjTbN{0W(@ z9u7I%MfZeTQ_;wAKX^U0_#kxAlUna5>ci0JRk&D~N`TAu5q7l8S4f}DyJ6$33G%g< zO4Hf!C!eqRd}%U$eu&9viOvXS0AUXKo+QxC$?TMI#7Mf+O_IN9!y<$9aMZRp01|C8 zTud9ih#Z)o>?2UMeQA$G=V3D8J@IQEoWNeH;8|ysNRc?Go$HOH@L+Bev1N(_Uxkn0 zYOW31XyG2$O=ne_U52iZdi?F^)r(=m0n@PQ?Hy|(1VzXw=_8buA4tt3eY^A_K1St` zi#7BoG;BorNAF0C4<(yPX(~CM3a0mLUTGt%&1nurc|RE)f(9U9a-x80*0S~mu1RR@ zlW*0yN=V8(*M@h1aM70_jNYl-Vx8@kqE2-5eD2)3XG3QseXVfrdx8jiWYsshs2&wv zaLdB;p_2;W?SjqZB7$i>qq5~MV)KnOgx`6y#i!#6a(6m#1)nD>-)4V{-Q^*$hoH?< zn>GASOZ4NJMZ?w}s@r~D>Rg6CXWuuW3un%B?kO}|7p$q7*Q223%8Bui)@5Y81&mU& znFnTg?G=)v6r;wobb{2MF-9z)Qogj+gwE818HdiFyo8fCoFmqKN$UopP_ct{3p#aE znm`p@)?xfHNR10)Y$bFwGxiMTFcstkI3tm8GgMSGVsB(~xHC2WpGrW&&Yn_;`d-`N z$Jj%6(xshNbA-jdOMJgM>JBJpoj`wEe&w}|h=&H_)LLXUX)Ec{*0G>;wpEe?hHN@c zn(P~joY|#T+@ejtVgLo*R+ox+aYEFY+8!=8K)h(RIAD~F63lc*HW$js@sXH7IUrU* zpxbksLC8(PxrzXo=U!bTJy1O{K0$Qf`rD#3h6h89O?|Eq-euK6j-vK;Bq1qNbFvm~ z7q0?~(m~Y?hU~S5wO%>cPoOKW(j)g?TRi80t#QwV4bmQI>|a81W9oo%zy&aQVsn}? z|CS!XBvDW$@jVR~N!2xxZ5s2?zTo31Wnbi5qTS&D2o#!aLv$CcATb{NgiP!&ce? z_kh)-ucU%`=$!#bZQnMW@wdkWk6JIF(E|5!(+|7Xu{qHIXj!|Pg|+;00h-W&Cxqj= z=h}9Y;OFS;7PMzO6nuJXR)P;a%={ZE93_E-+c`!*d_qzIgRfHG!$sTXenLc?8^e`b z=A8&^glW3o6F}Zsba2ZD0;=AH_7jICa3FTdUwn~N6D2*am;Ca9<4<>}twF{V>;I^w z4-(ANy);51!UChvS6XENGlrjYCifwQ=~!%Z*rdkeSvdh>mF|Av-gqQk5t#VHsRSOk z2o`n;IJ%4t_fj{>zc@tcpv^7baOT16)rZAl8_9r_ch0}W3hQD9L~706Wp~f3JOj~Q zDwhC3;4UjNo~;q&F^VXgF7lzuA|3Xfx?hsu^#_ttBCeE5U;KXr)Ym(6+2CWzd0u-z zo@vir8T3yW!iL#s>=i7>E6~!50AqZMWiPsg%?U1;o9Ed05GK506RB_-#y~rBITN?D z2AA}rhu|>PLvx{KFU#RhuNf)q6>N4jv|eaoC~WNbv2%xSeoyEa%_9M>S9Db~YV#S{ zv6?1K*z4Q`(<~Tb2SjAF*a4-A(Q>R1=(Hs=!hvSZo_L_K($4`_Igl8F@eIC<1XTY@ zh1(OlA@!GF-?p1yiLQg8`$6iv0!q+i2In+QL#<&ds!&>BgEGJn5TT8Eb`Y_fHgkWI zfU-*zE~CS=D$;o`HweZ>N0Or@qV|K@T+Xpkdvb4d2GFv=> mQT)Zy;bh&!LOo@3#ri&w~zNoi_A>TGA=2QQ<%i=GJ&l5 z)J8Td8T43b|D?Tj@LpACY|8vxd)HRr8iVqdQ~yL5qZ@pR1H4_bAV~aes=yA}|2%Y} zAqtiMZx