From d2b412e860ec6a74dadc70bc4c7986814d40f7b7 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Tue, 23 Aug 2022 17:55:26 +0200 Subject: [PATCH] Funky bomb bounces off the walls! And optimizations. --- MANUAL_EN.md | 4 ++-- MANUAL_PL.md | 4 ++-- display.asm | 8 ++++---- grafproc.asm | 7 +------ scorch.asm | 16 +++++++-------- scorch.xex | Bin 50936 -> 50917 bytes textproc.asm | 6 +++--- variables.asm | 1 + weapons.asm | 56 +++++++++++++++++++++++++++++++------------------- 9 files changed, 56 insertions(+), 46 deletions(-) diff --git a/MANUAL_EN.md b/MANUAL_EN.md index 0388b04..bf4c73a 100644 --- a/MANUAL_EN.md +++ b/MANUAL_EN.md @@ -178,9 +178,9 @@ Only these points determine the order in the summary * **Nuclear Winter** - adds nothing, takes nothing away :) - in fact, it is not so much a defensive weapon as a double-edged one. It floods the area with "radioactive" fallout, which is ordinary soil. If you do not have at hand any weapon that digs up the terrain, and for that a shield (preferably disposable), then after such "fallout" you will have to shoot yourself - because being underground is otherwise impossible. Alternatively, **White Flag** always remains. * **Long Schlong** - a special weapon :) - Costs a lot, doesn't really help with anything (except possibly digging yourself out but only when slightly buried but it has a cool name and looks cool :) - It can be activated independently of other defensive weapons and remains active until the end of the round (it cannot be deactivated). -Due to the different operations of **MIRV** weapons, **Bouncy Castle** and **Mag Deflector** only use the shielding function when hit by these weapons. +Due to the different operations of **MIRV**, defensive weapons **Bouncy Castle** and **Mag Deflector** only use the shielding function when hit by these weapons. In addition, **MIRV** heads do not bounce or fly through sidewalls during descent! -In addition, none of the shields protect against **Napalm**. **Bouncy Castle** or **Mag Deflector** on a direct hit will deflect it or carry it past, but just hit very close to a tank and its shield will not work. +None of the shields protect against **Napalm**. **Bouncy Castle** or **Mag Deflector** on a direct hit will deflect it or carry it past, but just hit very close to a tank and its shield will not work. **White Flag**, **Hovercraft** and **Nuclear Winter** weapons, when selected, require activation, this is accomplished by "firing a shot" after the selection of that weapon. Of course, the shot of the offensive weapon is then not fired, but only the selected defensive weapon is activated. diff --git a/MANUAL_PL.md b/MANUAL_PL.md index f8ec89c..2f40136 100644 --- a/MANUAL_PL.md +++ b/MANUAL_PL.md @@ -173,9 +173,9 @@ Tylko te punkty decydują o kolejności w podsumowaniu * **Nuclear Winter** - nic nie dodaje, nic nie zabiera :) - w zasadzie to broń nie tyle defensywna co obosieczna. Zasypuje teren opadem "radioaktywnym", który jest zwyczajną glebą. Jeśli nie mamy pod ręką żadnej broni odkopującej teren i do tego osłony (najlepiej jednorazowej), to po takim "opadzie" będzie trzeba strzelić do siebie - bo będąc pod ziemią inaczej się nie da. Ewentualnie pozostaje zawsze White Flag. * **Long Schlong** - broń specjalna :) - kosztuje dużo, nie bardzo w czymkolwiek pomaga (poza ewentualnym odkopaniem się ale tylko przy niewielkim przysypaniu ale fanie się nazywa i wygląda :) - Można ją aktywować niezależnie od innych broni defensywnych i pozostaje aktywna do końca rundy (nie da się jej deaktywować). -W związku z odmiennym działaniem broni **MIRV**, **Bouncy Castle** i **Mag Deflector** wykorzystują tylko funkcję osłony przy trafieniu tą bronią. +W związku z odmiennym działaniem broni **MIRV**, bronie defensywne **Bouncy Castle** i **Mag Deflector** wykorzystują tylko funkcję osłony przy trafieniu tą bronią. Dodatkowo głowice **MIRV** w czasie opadania nie odbijają się i nie przelatują przez ściany boczne! -Dodatkowo, żadna z osłon nie chroni przed Napalmem. Auto Defense czy Mag Deflector przy bezpośrednim trafieniu odbije je lub przeniesie obok, ale wystarczy trafić bardzo blisko czołgu i nie zadziała jego osłona. +Żadna z osłon nie chroni przed **Napalm**. **Auto Defense** czy **Mag Deflector** przy bezpośrednim trafieniu odbije je lub przeniesie obok, ale wystarczy trafić bardzo blisko czołgu i nie zadziała jego osłona. Bronie **White Flag**, **Hovercraft** i **Nuclear Winter** po aktywacji wymagają uruchomienia, jest to realizowanie przez "oddanie strzału" po aktywacji tej broni. Oczywiście strzał bronią ofensywną nie jest wtedy oddawany, a jedynie uruchamiana jest wybrana broń defensywna. diff --git a/display.asm b/display.asm index 735cf65..af1cced 100644 --- a/display.asm +++ b/display.asm @@ -104,18 +104,18 @@ OptionsScreen dta d" Please select option with cursor keys " dta d" and press (Return) to proceed " MoreUp - dta d" " + dta d" " dta 92,92,92 dta d" more " dta 92,92,92 - dta d" " + dta d" " .ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!! MoreDown - dta d" " + dta d" " dta 93,93,93 dta d" more " dta 93,93,93 - dta d" " + dta d" " WeaponsDescription ; 0123456789012345678901234567890123456789 dta d"Tab"* diff --git a/grafproc.asm b/grafproc.asm index 7b6c239..bfe8a78 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -1899,7 +1899,7 @@ EndPutChar ; puts 4x4 pixels char on the graphics screen ; in: dx, dy (LOWER left corner of the char) ; in: CharCode4x4 (.sbyte) -; in: plot4x4color (0/1) +; in: plot4x4color (0/255) ; all pixels are being drawn ; (empty and not empty) ;-------------------------------------------------- @@ -1911,11 +1911,6 @@ EndPutChar cpw dx #(screenwidth-4) jcs TypeChar.EndPutChar ;nearest RTS ; checks ommited. - lda plot4x4color - beq FontColor0 - lda #$ff ; better option to check (plot4x4color = $00 or $ff) - sta plot4x4color -FontColor0 ; char to the table lda CharCode4x4 and #%00000001 diff --git a/scorch.asm b/scorch.asm index 637a53b..1b00f7b 100644 --- a/scorch.asm +++ b/scorch.asm @@ -36,7 +36,7 @@ ;we decided it must go in 'English' to let other people work on it .macro build - dta d"1.11" ; number of this build (3 bytes) + dta d"1.12" ; number of this build (3 bytes) .endm icl 'definitions.asm' @@ -128,7 +128,7 @@ .zpvar escFlag .byte .zpvar LineYdraw .byte .zpvar LineXdraw .word - .zpvar plot4x4color .byte + .zpvar plot4x4color .byte ; $00 / $ff .zpvar Multiplier .word .zpvar Multiplier_ .byte ; 3 bytes .zpvar HowToDraw .byte @@ -552,7 +552,7 @@ DoNotFinishTheRound - mva #1 plot4x4color + mva #$ff plot4x4color jsr DisplayTankNameAbove mva #1 color ;to display flying point @@ -592,7 +592,7 @@ ManualShooting seq:rts ; keys Esc or O AfterManualShooting - mva #0 plot4x4color + mva #$00 plot4x4color jsr DisplayTankNameAbove ; defensive weapons without flight handling ldx TankNr @@ -631,7 +631,7 @@ ShootNow jsr Shoot ;here we clear offensive text (after a shoot) ldy TankNr - mva #0 plot4x4color + mva #$00 plot4x4color jsr DisplayOffensiveTextNr lda HitFlag ;0 if missed @@ -685,7 +685,7 @@ missed ;here we clear offensive text (after a shoot) ;shit -- it's second time, but it must be like this ldy TankNr - mva #0 plot4x4color + mva #$00 plot4x4color jsr DisplayOffensiveTextNr NextPlayerShoots @@ -773,7 +773,7 @@ NoPlayerNoDeath randomize talk.NumberOfOffensiveTexts (talk.NumberOfDeffensiveTexts+talk.NumberOfOffensiveTexts-1) sta TextNumberOff ldy TankTempY - mva #1 plot4x4color + mva #$ff plot4x4color jsr DisplayOffensiveTextNr ; tank flash ldy TankTempY @@ -785,7 +785,7 @@ NoPlayerNoDeath ;Deffensive text cleanup ;here we clear Deffensive text (after a shoot) ldy TankTempY - mva #0 plot4x4color + mva #$00 plot4x4color jsr DisplayOffensiveTextNr ; calculate position of the explosion (the post-death one) diff --git a/scorch.xex b/scorch.xex index 277fae972b1bc409e681f6ae49f16b291432164c..01939d1861fada07e6614d375ce2b1f7c210229d 100644 GIT binary patch delta 14828 zcmbt*3w#q*_J1CIQ63HNfKUc3ND-m&TAM=I0RhETM1^jvF2>)=BI^pj@13NjAp6V-gD36_GeCefzx`mQ`O53MNHk?yT{R#jQ35+rbkP7`|Qy}OHxuEWl~g+rld?Q zNj|qM$c$3{Xr|8N|1x`sx*y*$JC~oAuGgld3jDfs=FlI~W7TRme;~u4A3JsRjCWI3 zuYR=sp(Kr0qtj?KNgB=6EdFxFsoo_iQ#VXqoigM5l=O_-_`Y+7@t5XI9Iu*M@~Da_ z(RBV*`;#RVH&MeBrAaF1Bb7R#O!qJ61mBkO%5*;Ci4>bF&ACdLDMd3&&NG8jB@N?B zV0`{tkD=S^8Cv6m zk4Y-l!mzU>HS1B|?d3U)@0LE9Gx1p6QZUVc3wI25E`U!_RK@25#B0Pw2!pI1nn z7yM@x5@+d4CyDc65;kB_8VVMraaJ%+1ls`MwIxYw+%wHnCItI*$!J+)95LXb@~t zyW^jNq;>pTke+sYD@bZbP+)>H9h2NGx)#u7F05yk*qDeyrnQ8b%reJkFl%ffU9Og5 zF^b8l+VXf6)cCd#R5!QiE;nergG1kP1m?%&NpkCpn*>LbVDi|6)`fyS4jkG9X($-C zZCP!cJfmv0f0MvksxcL^)~K2;U1L9EToz2*fhvpNR}OiYY57dU^ZuDaa5(d1X_W;Z z%*M~LH|b6MVr9k^^SZfgv2k!;X!(40~Q=istHHmdW zEpyf;TG)*cxzs|Hpk+QNZqfatYGbLTW&n|+sw{gQF{F!@5D6)vd}i;A7Tr%aX%OqA z+G-Gjk+gR|bZuKLu5PT6BQW}E;3=&iMZC%6)?W zfS_OHqbtq-s$f=Oxk27mpJ0#tyHC(*(8VLTEPCI50a%r@_Y1x~K&#v%n9$j&@*ld6 z9Bc6SgkKK{VBT>^z&t6eu{l+k7fcyo%tBUDgDngVPFn}^r=OY|{cl118x}P`Y5s8A zp>nQ4<9VZ;dr#x}Q#tp(#`9)5_kqUq=W^~NjY*gysm>+I8f=I$E=RV@QRQ;9xg29e zN4D4!)at%6Nz3K)P|Rt!^a5*@1U7%~PHUT0*0kk|`2n{aAzA~=B?pHr84Qk8B!AWlSYV;bdLQ5KVBl>T_n;qhZEMTLyF;|PfA*DxJ)viRriCMIbKQ;Wld@MnFM3a}`R3BkovUrcfb``DwdPI4RP&N{37 z1fmVRcJVE!{4gO$h4%9`@+G>}@Cf&ZxRMXL}TX&=E_{jIcJv^rV^YD}#D%>o3( z_hzB3p#6Nld_pXcTj(MhOg!_2Kt!;|th~X5{x?xIGyrab_3*@<2wV&H4_xMLi-z@k zg_ol}TQu?ssh6NHbpnC+ESlUGW~e7@n=_5smu4(XV=nWT7LBq&q@uJkC^--%M~~Mj zt6jKO`l_IEdKpy>l<=yFIhzTC6hmUG{U4{L`cI^#ng$pXjQ1KJGtM;zjej?i$IY{g zXZJVuH||Q`pYBRuJ7@D8Pr5I?G5w45OX9$YMPERYZr=#ZNVp`I1pTrNk{*GB!ZK!cNYx^Vrr{Xq!XLD z8X^Wb4^f8YYKeHXL&Y5=;Ci6aff;`bwz~f-@F)9p3eRc zdMLBhN0~K90vO->>2c~R-thE1bu3@;bb{@b*==>yLgOr%sTW^2_hU1~LuM751$*C^ zB}c;gH)eV#7{u2*l%@_e>7p<|=8Y)!p3bpiZBXOPVE#J2MR$<;8B}B}G2_}NLs}2L zKnbB2y4q}5ehX>yaD_>{O9P-o6}N=WRBvuFfla%g82e=W2Cn@N@aPb{_I@H}It)b2 za-tmA%xPwAU4bRFQq1Jy zU1AnD!X;*Nj7!YnM!LjYZj?(jbGN(16VO(ssXQYeG@r-g|+}m9kHo?W(R(M9c*p-wZ zXf>6~jdaJ~svr0}%zVBa+dR^li8W5oDhbDSOEI3+nuBVWI4vKySLx+3mAf&&Zxe$&Ec zZ^;QxYrT&IHTH)M!0S*06jGObC*$R(E>9il-6+0JjSHJ4zQJaTe`0f}!Gp!5X4|Qf zs`%>V<3`^{#0>!v>$)gV6&xrQ$(p7OO+|G@ATF!C5fI=*U|v~1tan>*cpIAAHqb_X zRAz$uBtIiFKCURu)krsrIvBmBi7Dit&z$zV1uz5LLgHC~-R4<{-3A$dBL(>W4UEkW zNp&}*;{TmF2exx|))3pSO`b(W)*f3-jx8dd#U!AD=d%cppw{^4Ja`SP8>{?gPe<`_ zLjDeoM-ZaGzbQ)djF8=l5y40HCTg%g)-F(73cL-TAGoYM5Vj=N2V&%2p}^%Yk}ZWj zZMq)G)SD2e^rfqyGirS>$0$A(=q=yZ4G1sq8z!SG`c=X|FnXG@f=CTB>nVgoV~l+& zP=R6B%n$6qqi%kn29K8(Bu)wR2|gK!!v|}d50^!2WEKRX@o1eN7>UR61%dH+tX&Wo zjfZzZ;1N7NSYR|fAyh&A-tKSN; z_G(Z7#Cf9z?OO1rIEurBkQVU`HGeDU&9U$y?XBo$H15h7V1q;Xtq`~-_dXjGbTQZy zLF!}zol>o`7|`0GbfF}Hlk~Ylsv9Q^G)K3K8*V3jOjs}?uLP81C9$I zMNlqn-LU=xO?a=A<{KfJ>RZ!G{9itsbJ&OtiU2n0bK6mpZ2Z53jQF448bf;at%+f02ksxSjCfxLpLU zT?KXRb`U8ArXQ5vX5V4oWe-!Agw1AiqJ%M|N~{>}I=9%~3yfVbZ0lH5ZIl-R^@2fK zbV024H*y?LM1lRQNZ8K-|3Zk#B=)+H+u2)Dkbc;+_suw>3t&ha!tasUFF_7hF1LL>x53d+L zzk(X09WX|oojCeEyKwZ2&1|k1V9nwYc7=G9U5PVkJVwznbGTmm(HolvRM8XZe85`8G|RhIVihl4#@u6{~4?g^o~ zg(gsvfgmiwkwx*sIfMo!hrqr^xf&mPLO0wXHo&WFfb;ua!h1TtVP$W10e@`e#6ID3 z3?Vx`%J`no-Daa<1dS)?p1k3(qeyfe1+bpF&OHd)3_$}1NJ^s)$cm{sip~d&n-(hb z0~-)tr2l1s9&lz#Y8(4CItmfuM~*BkLB|R#L5GEi?>L?(;=7LZMD#mepuzfPxOSiE z#dpk^oE0r*6<3HhJZuO>-s#BX@&WBoaYcaQQGzq)9dk2R5W?LM!riFgHgoGjxWz;q zL6J8R#Dl`MiZXJsjCjgOAd+r>u8h={@v~Qr8>7$iZzjYD0k8fQqYMT{Ik&a)Om~MDbcv@Bv&nmyzfjNP#0;0$dMJ`Xf%= zPLg`*?!iMh0n8LSHIJLw}<$q3PA9YENI=nU7^LJ!;5HyYnudi@)#+m?;xjk8Gc zscOpz7Sv=tFsL0sA8H7kD#a8qH}q4wfgZX*&Nr9h-;E4}+MFs%jHM0?CC5@9Ccn;V z=%9W{4l~*~4g_x15ed!BM2Mhjj6}qqgfaLp^O#4<2ngT2Il7W`G@(b=B~DOrBZ5Yn zI6iBm%iJ`6Fwq(LWXlBgv(mF`)SF&Cu>BK=|F3(bK;xQb^FHPrV1^ zy^z#FG7tV7O{^lcrXdw|^N~Vr6xO*K8MmpWMRx^9H~o_4u}zGdzh;S#MUTH^f&<3G zC#@b}E87@|w?}mJLguO;!dfW?C)=;cPyLb2mzJ@gV!Sg3gsC09*iRT42~Ysm!zXRc zB=&p4Jc;WAk@jdb9ANqvQwGl_khb;kUzCPe#otoej2Ef*qhNIoVY_JzNyVJNC9?QF``952g9pkcXl)Q4gD9Io0sGyUh^z zRJMp7$zpHMt9rPDSL2Cs+%icE_4dQLO}#t#Rz_ z4IMq)$}Aw@*L;}iP1~zC51~d{mWW( zd*F@Gc%mBtjG1`Vp(hfyr-YrU7p=u$&MM{?#}nlf(YY0g4;Xc^zNyHxOnMBy*9^2i7Jt3ZKy_Yt8+25vFocj zNbZ}IlajfT$qgVT>R|Rj+!+Zox^th2MmUKayU#z7WB1qXGa-z@#_ChMQSkIU+1m4D z@Rt_(k_iPNn>3b7(nwReNgC-9THHhGT0?6z$7e__COBd6l+pF zy*X}?;OWP4i{YrUH8&TQ*4Qvron@!XFb=sa(xqI9z%0pTF3(bmJBU>JT`UniC4w!` zL;f35BPD`ye^#K6-1}IGpgXPLQ$Up5x3)w$n=bg%1zr8sbOkF~?hhb70K_TlMl;3j z1yi8S##>Fg(A>PGrY1uWRK9cNsNwl8l%tGC6V5->%n^Lwma|{hJR$ggDCh1RNNS!G zd_R?Q3xt}vf=|nF8-<#Af-i>S778^_2|h(!9~GBBZha&wU5Je>PUi>ak5ZTLhWsa% zA%7gjjN5LUL{Cf_#3>Ro4~Cv?7SV$G&nG6SovTQe9^iH)UL@m5d+0Wa%ik ziN0-4uCn@2BDGY=Q9cw%4_0`!HsCw;Qrym5XS}4_nX4Cb&4bwWqS>rs3qg>rW^(eX ztQ0(?3w#h@zomkG4Qx1vND(`8joWf1Q`dN(cN>qcRv%rhE^FOBg+1p$NwqV#xq*?d zh*ldGI9pB0t2@an1Nx`zaDpyWpYPO0S;yp;>8`+Hnb))X#C-D(cE2;KZXcyGNWMJ2 zze~xE)&~cF-`^$o^9*pwF`m9Iw%+(-uBRWK+s-9pdujYm%`JYaj1KP53 zOFeUVWoX%JjfONO3ZJ*dz90TTM?ikJGVkU0@i{(o9cCg;ZD>W z-!kJhg1&Z+4-iG^*9M5KwVz8K3s%b%R0?VZ^HGok5V1{fj%%#LFqWfTuG1Y2UFuJ)xCy&BhAMNMzUfEI~GRaCS76Mww(uHueFF&y;K|O$ zh3PQC5QDjy0(-u_v>J)u_0q#I06BTgFRKKaW*PP{s*oYm0Z(KI|MZ5T4-9m5nq*oyFv4Ri(7ElM-U4}aJZ z|8NMU?Ywv%cAX}U&SP|RY61j_q?pcc@jT740?8gNo`;Kb9d76VTnDJ$+y$+&i02(M zQBmGT?H(<&JK^pQ;b#^18!<#sEa3l`{8K6%;g6q8LX3Yfhwy^oi;5qJSM9DG<;M1&Wzo1@h*^Ry~`~hGu2LT`v?D#yVLF8_D62K zyB!ZU9}pBNMC;!{xj@YSJ7}-NRRETGCC{YHrye%f3SZoeqPA#7Z?HGs?ToIo%Gxsd zO7j-hWueG8c|LQh$``n67JxJ4%B`xHLjnTreD#xoWZ zYF}Q_ix6by8qtf)7weVw!#(8SgJCU1s`E1j6*=}MM9jS?7Ti!}AO zpl5yq!u*G?A*DUfOnF|KN3GqXo!+OEKyOWmsqj80VKX&q*iE>Y)TD8Kb%PfgQi)R) zQbu(tb&M+e^C_E#+D@*?O?9fP{p#I2txj#1qqNfsE723z4J^2O5K zS^g<}5kxs08q&=aQzo}qsf zEyEiH)EK)Ky%A;sLDnMHYO(2j%=|R@btq4{s0S4*IpWyRdFx1^bOf`j2-1OOq=7G}1M#-MQN@||&Y*2?r`SY^M5PNp7YsIQxYIpl^WbGIdP z!;-n-$sh{F4WrThV4%gI4fW12F8{ABPt3^4!+uB8lul?K`XKdKP4nZgN%w@oqbV4< z{zbtAZy%uBxJ2r&k4X;38>BaWoy7C(DC&(`P%7(Ma+NIBrT!_8SE^)u$JY4Umy+^u zlKGG8fY-JeeYc2P8n}2Ys~1^w49kk!gT0bs4Hwvs2zI-1 zB5yAn9P#ryW;*{`*%;e1MEn!>N)BftAZHNYxKK_@g&hDX->+X-3uX`DI}6{QXJ{7N zge*2baCsrCoHn9ADvVic*=+8&aoYJF#uFt?5r;1?&HDJmi4ht`o-{p16B6|Pg*-TvfY9L{LjsYaxsx<` z`9AwWi|$Jt <8)7ozvvTF3g6Y9RyOMF|9$N1~{Y1>8(`?l!a#&Wv67JD^_Tc5*) z$b~EuyBS#Z{KjqfMfo_?qwD#1x6Q>)=(~N`q}w(aKQCf#+rX4}z8t47@NA!haWHhm zu-WMEREzGQx@^k=b(C}Rtw+n!Sg<|sOwhvMl@|U+Ww(EpKNXk0N?C2f7Q-ejR z5Nit+ybCueoZ#*Uy>Vj@vpagS*?7%CnnB?J$W2*InUpD$q)~(o=`t2GYn%+Z?ISck9eo*{n%}0H8z6Mh<%5u!!j_Aj!6lC$!DRsfYz>8 zc1#$tgB~JCCje1WB3p>`DBZwpN%I6PJkXE7u^Yt`0BwTSP#mG!?+Htuy>sJEt1*$^u_L(;lA%E9 z#OFWT5kIVclT34-2bf)(XeN}+uCrnScUrOGcJTx3kJ&z^2I&Nm_H!Ro+ZB7_uEhfT zK7B3{*bk_cQgf%2i%N0T?d|OqCkazlsMv3~6|^c+C}ulVJJ)+oksxF6oFEt82RYBj zC^6xRhI;47 zp>1;8HeAcB*hBpL3Hy8hON3qH7m3^N$JlBT(07V4e3iP4-)rkk^Kv%~*g zxwU)9Ufg}H%J%2=U~|!Zax80R*VM{HJRtY3%jK%caHawYpNBRnAIW3!fli)kg4?p< z?{R}xT!S05LPX6T^8FqXj0YEI_7iy!7&-G2i9@AYBxgi|%cxFL>EyrPncRaCG}YxM zkLB;)H7b#*p!v}pso8KLn>$W04aO@NOc{wLipH|Jc1@f4*m1si*RVlec9ocCcCvX0 zi&o9NR@s31Yh^QkaMvKc7xPs47Ae#Hc%#Vt7rPjnOoExSy(I4~GP{oC`N-_oN#5IJ z_92q@4w?N1$$OW~{u9abli6>Qyu)PnpGjUlG2}Inyk?U39?1)ky!T073(5O{ceMIv9LR#cMz*fge*Mw+C193FtP`fOs>T-vB`;g=Yg8UWU z-y+G){5Jl9-+7*OV*_a5!JFK8pT(|%9`f|!DsxhokSal2w`#n}t&13kKRx0=7Wb5! zi4=5DaUE~*y4}OnGJn@@W-dg$_dkjFA4O@AkA^rT37_e--I!E9oB3CF51Q_~!E2W` zbY(V_Omk7131;bLyNkmS$DdzASb8S1B2&Wuy8F?7jU4;7C>x(F1Oz`5$zfoRQ&}9aW3z`Po+bU$j<^!$h~4V%=qBzLlk^ zz7?gZG|gkBneu#-z0^}WeQUq6hss_q`$yUOQfyM(8o3haL;YiSX9p9~+w3VRgL{&O z{BtwhaB=6k5mr6rW`3S&@;~GrKGi+^ad+@8yapC|dl)(*1F_y7_ThSSWT4tRh&^TS zPjz=h;@*q@aW@Pl?#A4)6^1mRREPMymlA9t+BcGB#?KN@;hsKxR9w}ElZxB=PNuBR z8vKR+VuFcj*vg#W%B*}b7$+9Ynl%fzAI&k`e7D>y{5dlkUsNa>0`%}+s+sTBulH_+ zFypB(YHqGudY8(gNrEt#il1j**G~75R;(%9v~AZuq2JI^ci#QrqqF=Te(KBpZ65j? z0)a?xq?80ht%M#l)fa(OpIROPBaWjgrL196us?XdtVgZFx)+F{beqEdurlN0TmNr} z%(xfJlL+(1i(M?*@|_V~+AxR$D*8{lMU)~(z}ufKn6qVF+eW!(=sNSM1gTz3)mn1kWmfguZ{3L*6bGcHP;4eTjj& zVJpRr^7BmOcHGNMOp0+GE<2h;f@5lu2wd{U_hh<18yma>_2MaP3#Ydid&)R`n?XE< zOChJ=tE~@pooMUod&fN<7+@mct=+W+jHl2basr)uhGxo7rh3hS_Ziu7kb*iJ{DOj?#xZ7fit!`=Y z8@8wVCvQ(RP2b+I{fF)G!5mbLCh0OMmST-FCB?+DtK84I@mwq@du z;7nJ(4@DNM4@H)ITKy@Y)t`0Zy2gC?ZUv22`yB?c0C$^r;P*Q&(wcGv&j z8dz?}ugvVUQh&Or%0f*8O~Mx)&5=YAeGdF~3^AF59O z?aGJ=siypWuedzE!|yd6ZI2r`Y~)>IGoQqIOx!ZgGP-uT_`?u Mr0&jvns*-kUo;aQBme*a delta 14966 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 R{POU9&9%SWse5