From 33275f9046c9269fb05577bcb2305a988bfc636a Mon Sep 17 00:00:00 2001
From: = <=>
Date: Sat, 21 Oct 2017 14:51:03 +0200
Subject: [PATCH] Fixed flickering bug of ramp (all animations where sprites
touch edge of their field)
---
.../assets/debug/levelpacks/Grasslands.xml | 68 ------------------
.../debug/shader/entityFragmentShader.glsl | 14 ++--
.../intermediates/res/resources-debug.ap_ | Bin 3664708 -> 3664764 bytes
app/src/main/assets/levelpacks/Grasslands.xml | 68 ------------------
.../assets/shader/entityFragmentShader.glsl | 14 ++--
app/src/main/res/drawable/tools_ramp.png | Bin 13073 -> 13072 bytes
6 files changed, 16 insertions(+), 148 deletions(-)
diff --git a/app/build/intermediates/assets/debug/levelpacks/Grasslands.xml b/app/build/intermediates/assets/debug/levelpacks/Grasslands.xml
index b87a75b..b055fe3 100644
--- a/app/build/intermediates/assets/debug/levelpacks/Grasslands.xml
+++ b/app/build/intermediates/assets/debug/levelpacks/Grasslands.xml
@@ -1002,73 +1002,5 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build/intermediates/assets/debug/shader/entityFragmentShader.glsl b/app/build/intermediates/assets/debug/shader/entityFragmentShader.glsl
index b678759..52b67c0 100644
--- a/app/build/intermediates/assets/debug/shader/entityFragmentShader.glsl
+++ b/app/build/intermediates/assets/debug/shader/entityFragmentShader.glsl
@@ -9,24 +9,26 @@ const float clampBorder = 0.005;
varying vec2 pass_TexCoords;
-vec2 getTexCoordsInAtlas(in float atlasIndex);
+vec2 getTexCoordsInAtlas(in vec2 clampedTexCoords, in float atlasIndex);
void main() {
- vec2 texAtlasCoords = getTexCoordsInAtlas(texAtlasIndex);
+ vec2 clampedTexCoords = pass_TexCoords;
if(texAtlasSize.x > 1.0 || texAtlasSize.y > 1.0)
- texAtlasCoords = clamp(texAtlasCoords, clampBorder, 1.0 - clampBorder);
+ clampedTexCoords = clamp(pass_TexCoords, clampBorder, 1.0 - clampBorder);
+
+ vec2 texAtlasCoords = getTexCoordsInAtlas(clampedTexCoords, texAtlasIndex);
gl_FragColor = texture2D(texture, texAtlasCoords);
gl_FragColor.a = min(gl_FragColor.a, alpha);
}
-vec2 getTexCoordsInAtlas(in float atlasIndex){
+vec2 getTexCoordsInAtlas(in vec2 clampedTexCoords, in float atlasIndex){
vec2 texAtlasCoords = vec2(0.0, 0.0);
- texAtlasCoords.x = mod(pass_TexCoords.x, 1.0) / texAtlasSize.x;
+ texAtlasCoords.x = mod(clampedTexCoords.x, 1.0) / texAtlasSize.x;
texAtlasCoords.x += mod(atlasIndex, texAtlasSize.x) / texAtlasSize.x;
- texAtlasCoords.y = mod(pass_TexCoords.y, 1.0) / texAtlasSize.y;
+ texAtlasCoords.y = mod(clampedTexCoords.y, 1.0) / texAtlasSize.y;
texAtlasCoords.y += floor(atlasIndex / texAtlasSize.y) / texAtlasSize.y;
return texAtlasCoords;
diff --git a/app/build/intermediates/res/resources-debug.ap_ b/app/build/intermediates/res/resources-debug.ap_
index 5db4c716888f1704c33667ad3a40e6d468d64cbb..3dd865f2042040a911db3676b19887b155779922 100644
GIT binary patch
delta 5713
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
diff --git a/app/src/main/assets/levelpacks/Grasslands.xml b/app/src/main/assets/levelpacks/Grasslands.xml
index b87a75b..b055fe3 100644
--- a/app/src/main/assets/levelpacks/Grasslands.xml
+++ b/app/src/main/assets/levelpacks/Grasslands.xml
@@ -1002,73 +1002,5 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/assets/shader/entityFragmentShader.glsl b/app/src/main/assets/shader/entityFragmentShader.glsl
index b678759..52b67c0 100644
--- a/app/src/main/assets/shader/entityFragmentShader.glsl
+++ b/app/src/main/assets/shader/entityFragmentShader.glsl
@@ -9,24 +9,26 @@ const float clampBorder = 0.005;
varying vec2 pass_TexCoords;
-vec2 getTexCoordsInAtlas(in float atlasIndex);
+vec2 getTexCoordsInAtlas(in vec2 clampedTexCoords, in float atlasIndex);
void main() {
- vec2 texAtlasCoords = getTexCoordsInAtlas(texAtlasIndex);
+ vec2 clampedTexCoords = pass_TexCoords;
if(texAtlasSize.x > 1.0 || texAtlasSize.y > 1.0)
- texAtlasCoords = clamp(texAtlasCoords, clampBorder, 1.0 - clampBorder);
+ clampedTexCoords = clamp(pass_TexCoords, clampBorder, 1.0 - clampBorder);
+
+ vec2 texAtlasCoords = getTexCoordsInAtlas(clampedTexCoords, texAtlasIndex);
gl_FragColor = texture2D(texture, texAtlasCoords);
gl_FragColor.a = min(gl_FragColor.a, alpha);
}
-vec2 getTexCoordsInAtlas(in float atlasIndex){
+vec2 getTexCoordsInAtlas(in vec2 clampedTexCoords, in float atlasIndex){
vec2 texAtlasCoords = vec2(0.0, 0.0);
- texAtlasCoords.x = mod(pass_TexCoords.x, 1.0) / texAtlasSize.x;
+ texAtlasCoords.x = mod(clampedTexCoords.x, 1.0) / texAtlasSize.x;
texAtlasCoords.x += mod(atlasIndex, texAtlasSize.x) / texAtlasSize.x;
- texAtlasCoords.y = mod(pass_TexCoords.y, 1.0) / texAtlasSize.y;
+ texAtlasCoords.y = mod(clampedTexCoords.y, 1.0) / texAtlasSize.y;
texAtlasCoords.y += floor(atlasIndex / texAtlasSize.y) / texAtlasSize.y;
return texAtlasCoords;
diff --git a/app/src/main/res/drawable/tools_ramp.png b/app/src/main/res/drawable/tools_ramp.png
index 65d44ed0d7d93f18b090ba9bc9cbfb332ace3be9..86b23a84bc99ba50e237ed84a27996b6554905ce 100644
GIT binary patch
literal 13072
zcmeHtXIN8NyLJL1iZZAJB1Mo_YfKllASFwoQF
z<`U#WAQ0SI=g$}-5NzO|Y=|wJ!Czl|I%x>RK7`hp)5bo1bA!4V;ht3T0vSriPrDkn
zaH{w!d%BQB{M==B*gS7N-j86{+3m|=egJu=I_UcICc8-fV@bU_JI47oZF#=sPH0l)
zGusPsI@-Jk@x9l)y}Y{=y`JZ0pZV1HJoWIisv1$Xilk?6#Mb5@;!Bas@G`)k5<6x+
zhN-$>g;45cZeyIPIf$qet)=l`wPe1uu_1n>BX3-%mLd?_v539G%p(Z!ts3V&)HX!z
zJZJkaBVT{w_P_d*{K;3p&0T`sjlhlYq~B$HUBhe|2f~KRK4k-aUCX*X60wJgQ2O<^
zH8IT*h+q`%yOpnN`@bQ+84Dcq)Yq_05$~EI)acu>I5>QxoN91*7ueI`@KcfPAhv3B
z#1x4AzCZ-LH#<-W8VLM-Q3Sj(Z+QOUWAMN>NY=n58w10${=bxE9O~
zFTFs6E^$x+&zl%DZTD2`*Pe=+d|Bal<7Khrs8Y+JTOMyuAz3dawHK?cb*#lC$8hPS
zp}=?YTY2R3R>9{DLvoiMGk$tKUpw#7HUADI9EeNDm^b@*LRu`n67eC266+h3xYtSZ
ztKheOD_C?+!hz^g%T|w?1=h&;mOS&*%2uuRSj8fOo7m
z>mgC=nF_H-hwp=B=*bU||Dx#fuS>xk<6u2BMpmw3QeYP=xQ`<16A8*6u{QwuqrxfhLfwn>kkw>{Z;L?q8L
zwO?v%q%D=~SBMUrk@95sooNj7MzGF>>Mgp2LP(zBc{vmJ0(0dL2WA}&DfwadF2A{&
z5}Y>liG0F0Avufyv0|rcO}95)I-Yl_D>--jy~MZdu_KSNM{YOGpC6-r_FEV1D?~|C
z*f+D*%oz^NG6&mZ@QFrXA*EEaL(3{D-6%(qw3?+CkY{q=A>6^wh>a!BFEq%b&(*A6
z@4&Pz?RDCtq1(t#NSPA>AM9a`w=!B<7enm|+yhKCLs1TvQ100D3g_A_Fp97H
zwtZ@l)tguPREGr=itE0UVd2Y!JXdkiS!dZLZEfuk|KlgsplWu6|2wL#b!C6&xtm57
zYm?esiO-_SUnP=P8I?$xbG}YNekNI<2RIP$@tfZ{hGqU>(UP1d{Jd`V}d*gVuw=MH-39@423-qX^w6!lJYh+u6W|%4E30<`T58`
zZj>;x3rKK3afG#nnh}t)eF9h259k5IHjMLdah{uoZC6zazr12&vJdaZJ|7H)lrce@
znJ@i|8C%+#H#c3^h~S4NrO{>~D@=4N#Jb6rt<*G^xsN6l(sR7zcNR}l$?t2?9pFB@
z2TX>e4U#9cL+CqLN9?FGy$!udr_#ltimI(b%nzUaemQ>zTw$d`tf7GDtB*Tz@q~f^
zUI%UEtvgs}8ibat``#eJKvA;5Tl6kree{PQ=;&AHYTIk1&4GHM+3XN6Ypykxar*C
zGpCdoK|FlNJU!wX-FaD2EV;FS>Yr*MtZtc9S*8~SuT3fy)wD;~Qxx)6u^$K0wVtos
z+{enm1=jRQ0v5>6412PS5^6i5hEbVR?g*U@ph*RJj{T;Bd2&kRG@I
zg7cEs56AP7Ebh5Fy-#)+E_NC&CQW7^!hzc6yF{xDys&iG>q^l?F8t-x$P@@%u542_|oQmn}dZTzp%03=kHKL^au-n
zcy=QSyg&}mdgHuJ4Km|X=6Xyeo9o10DK#*RA*9Nl7#8}j9c6|nDO$*h;Wf-N_W>!$
zP$!lasF~E8(==$%O3hTkF@IshmEQ+gaV}Q9)L>9Ye(SnmkGDxMdqVPyMGKEOl7)Wj
z$z6ykFsa!ms*!exW06uUNYzbl=~_PNTCZ}zr{u$~)vB*RKnHgVywf*;Kt5uBP_}W#
zVG1our`1D|v?hl50>6hLcn<(ZNqJ2^xw66zBAWQbXW1ia9rFfDKAHFgZKqZS3k^6~
zFZ6HFfGf{dS4l%T-P
ziBJ6Aq$TeP-a3To&$MpkQY2k#dZVbuipvE-Y_wBQnSn#LWZe_6GGBkZx&KqGSH+G#
zxsi5GhQ@~e6PGB>BnvV7pz4{FQ@g-fvq9EsMxe6Jg+IM=*HMjgb*Qv6a;<0H?-8y#Z(S;yk?gM8N6m7es33o&VS=)3k
z1PYUru}|u2LK(HWY+tvZ9wAs8Lt^4*7)$K-Pctlsl^
zHWfq?0{v23J#=U8U6wzDS^L55#aPaSRqfg$<#T904hi2I)hnzFov>Mun&ffmaOrK?
zo|+vx)0~&(_2bjNEQ^0gqYDjjO}J|44RCIUFT?y_@TTgy@(CYJTV>0dE!A@2QGq1)89XvId?AgUq}CfI;amvjL&7RW=?>4lp}^YvMEJ<9K0Y
zDgBk|RpE3j{IUz^Uqf*c1a238bl#+Q`J;fRfnHW))AuG0-3#xW>f+y$keux6OX}0S
zy|~AKb;w9Uknhl~zWEaXSh)yUHAH+3xyya|mH5b$D~ZI#gK8eKV?A5bu_Xu_+fi(w
z{BUf4cJP{g(_l8uRWqpH@KQiNNLly<`m9RboM-K;YOVz3eiZ8k@Nb~e_i9gW6Q4A1
zCS}}q7F_EGiBNvqJyOGc@lUf6fjjOuY;4oW=|
zSPYWGS-DF(p(`Bw${UcERlncPI-F8_poG$U_sUGSVDc&6#ud8ZbeELQRpVgI%kozb
zDonnfoI|l*Fg6^T;Abmdars4vv2s6s@}~TAiu_hT(*9r_!(BNL>-Kl=V=g7z0unUG
zize`MR^ASA0_kW@QG?L9b0Y&O)kAcL+We9ymY0rT_P)$J>-qFH5r3O_bnLDgYlwwn
zQ@RX&v?8_W*BmfVm!l*`Wx_Q&6!-PpbtuBlI*0{UfZdrLD{zKun{Q*%##skd5c?4p
zdLehS&#Jb=qu)ia)m&R>FqSyJ?ciD883|8zxF7&e&Ip2n
zKrA*fs3Ea_f4y-Y#k(va06)Mz5vJeEHYI9(q_#7h}8ww8ZTzlPBmu;uI)Q
zCQbW;w3ZREmu`5|Jdphe0
zHjwV8C^dd0TH^aj#O>uNEYmc0H#9SYX86IVF2(!*3UVbO3>0Im=u6jRF=G{ei=)1v
z%yHu7>rfAcOGJfGP09Gll~(Ib>T*UIG;XFH;Jvo4`!FgA?wb$=SD?8y2Fh=V-wxz}
z+KDg#md8xE9J3`Kf(H|SR?(dfh+QxU^(nw7aqSfs4
z&&E#pPPiHg_3FAzq)ADD0zp>!(s?hRhP-O;Wu~w@>y}?C-q9Ot|H05kSa)&8<-MLZJxTsVpLqUB4Jp
zyY8pCFU!t1<@D&0eQu333Zu>{dwoW+S@dv9$np2tO%_ecISY&TZT~6xa~cg
z2KlUxuBtfX6y)oGC_tx$?`e1O?2zE?)cIfunIoc+<~Ga#oQGcvLZ+0aRi2}j$VT73@J>X
zjr~#tIQg31
z=vB4bu`{TdfK|O74%XT9rBC`w$2YJ0lQZ6!vYGs^T&x7Pv%CYKpA)Z
zxqfGHk+UVEgg##KNbnVn?R0dsoD9Z%{cwAXpZsuNkYHE|4vC(7A>k24%B6Dtchp
z?^}59!4a9`Q
zgMFqG3t8-CjKzI1q415R!K;40K=hF}a2UoMF8yWEVK@;Kly8^!w!9u$JoZ{kY5nS)
z%ehur#fPA7n!(QN_c8UcBN{<)Ds|ogm4*+|7ez)=Zv~px(LMK?qNf^1R}(we0nFEz
zIq>5;Yk1NpBC=10Z>$H+0=mW39ubjRC!8RiYh1I&A)L8mhuk1gw^k>Fr9!Ecnk17
ztbYFrKMa)k2AFQZ>h}xqJgmq+1B?R+)bEGVfR6l!hcM$2SYW5dt{i;8ynVEW9ZbKm
z5-{z?3V@otvG}^Li~i?7p?!zIeO@c}!`7WZ!Zro?gX>zA30zvWTw=emt}tv4S+XN;
zI8Z~kF@f5@VMnz5XY7b?_#OpEgF(pu2N4{+f9U^N7dQUDJs34;?^nm?3;8rG{{(}g
z(~p^iw5V%c9Jw8`7(j>h#6qo$#SZZar7+}?cCR{D*UUKh&+;2%X5%}(!
zM_&^L=mZ!Q#j%tP(f3VieB2FS{PP@~loEG{|2r{GK!drc4xpnVWgjpk#bO)YA@7q=e
z_77GDE_RkkTP%M_{RCnl1!53>1<(6I$3)n9cLbx;A
zjPlmc8}nQQWISFYkkXq?PMti}d0^J+*PhYBoaW;`-yz)0*NcgdZp6ax?z(Wn(C`mp
z)pW&6#_5_=FsSta+ZM~GOn%~{vR7aw{4|x}o?W6+zZa~=?*{1FS!-!&J!;zw6mVc_
zL@p#%dl2%%XR}`{ww1?XpA^zVw?T==>4!X;`t*@TZ(VS;wx5U%eNU2le~%U=h~|<2Dy(VBIuw3?TPOi^@jbiP~j~M8p?D;Z-isau4wQa9&|h
zJ^vlc0HPEos9NZ-cT&?pu*Zq^T-xVXfdN1imX%ZB(jHX=2HG5PgFcg)OVFVisH1fi
zJbqy(Bp~-EF>9|hlLE}Cem~s$VmH4xn6MgR@+c*eGvR&T@EiW3W=W3S9%>+t6as^0
z9Jnz!z?FyBUqJH~H2du`Z*&ldT_m^{037PKSmybCr8UV`rk{&)-83e;nZ?D6tMk{?
zqK&efX|iK>du(iJZA7%HKqS1cHy6?-j~M-AIv#2*Y|-L$2^1G+2P$E>5U^2{D6
zRLEanh#3rab>v0oswvRdfdK+M+I1xvB#^j7&GMO{6on$!_g^Q{WVfz#ae9o+9&o`^
zZW>oe+qxP7FOROxw6+e?NzK68q|hkX{ERhjI9C8K;*VMvRS3MtjmzZqAby@h_6fq8
z$XePm(YI=jNDG1ETEwzrWGFj7|5@&Wi10(9_GSNL}4n;f*kJ&>_6Xo{d
zJ03#{nJCmaQSP88KX0lq-(%~)W5XuCRS&(Ec{%ebBmkew^BO_BajZYj?HtXz@!vd2^%&)bvK}xw8^U4e`3_Ys0swnZY6+dhNI;i>DU4;5e^+X
zFX%Ur4
zBdb2T23#TYRvx6;5_8f$vpvR%cfu+SJ|)w@Xo~5~b)8w&&$Wonbon-b+-5Jmyl`+-;e+QioU@4zOy|ao{v2(<>|F(F5`lVl|5hQOE
z{WNM+Dq=dt7aqd)?>rxC0iO8DRcN*aoABR`56)y3E0QKDFQl`@oUu#&H_uwMDF6C&XC)D2e|x4ZNCMrOGGZx(s~bhZN`znEUV_(
zQ)^2h?xh(ic%
zTpw}461m-S8s2i?6)Dc6MIiC$43Ok4gMmjx&`|yA5Zz1cB%gnIOAH+kJV@9b8je~a
z-f!S?d{LcCVVsXjwuRF}#9!Q^X`cllt$q@Uf4o(_l}4f}a&EDVW0Kr*9|Nb&;KSK!
zm9#hl^5Ylcl?v0V;XvHy-O-hK*-Or7P)GG$Pxrbhs_}RF7fRl!-q@;r9>b5YS7a=G
zhfuvq7cU-gaoS&%S4j6f$g%c2wToQCJr(0Fv;*jE1a(`Vf=IiUxre@#_poeVpk5jJ
z9Sr;&4D-%@wY#&yK%|wVp{B-*bMVa1OWW22>xk7qtYh>Nmd6W+?`;O$AtGNCI4WiL
z8=QEL4y)h}vk01I=wJP&TacUS7~M~Ix)>;Cx_RcQ_BzQNn~s`8V@?)hG|iT=M^`Q%
z(cgLiJ|!=KL9y+0Q4KkkpgzPMQ>AO`s^Lp1Iu}axDMmXpSF;K*V7htB{b~@U57G)S
z?U+CBC1-MrhqC$c^9cpmEr$`j^kj>Kx9N@gWLc^4LUL-(43s`b1kN?B&u{J428;)a
zpTu1lAWkH9^MIr|%-4T;ynY8UxJ?KudtZjF^fOkAw
z{s*Yy<%TMD2F^)2)Hct!yb`I!dg*2Qi_OeLfQ#MhpHqsq!G4ub*`|_PjEH}^SeMyY
zr&^i0RLv(yomqUfvR_$F=TZKHBJZ3FS7mb{eL(-$vtQodh
z(|9&G(jjl4BhJ9xiMtts880+wqd3g}PTJzDVh;06@twM!nQ7*Fx`
zvh*)@_nPs#gh*JJ*;HTxb*(1;3`|yL6Cd1wQ1X=3q0r=FR7VF+s8IkRtR
zvcH2g>tOP`K%mL!@$NacNO*&szlYW`{?fT|YgL{$R&Jlek$P`K^g@%31VkL)hsAcX
zNRr3HTa$2^#`3S
zEgr6;-vT(d6c*v|Zyb%tGrYcAI|MM5kDL9+fMsk3^URnibxDP75x_qI&1PhZgWS4t
zrBIVV+H)WS*TV8*4uEAthu!$32jV}W$7n@OZu_D;E(Km_^#I*!0-(7Kw%@+h>1SO3
z3^Y^)U`-?xqQXQssX>TsFy^|hpMI8*uV-Yka0WD><@|&dV5Wjbf(<@^jsi8hy&`Hm
z%a1b&0e)QOIgpJ6ctC3jpd%)7-SWZ?f}l)g5rLM<4Qc>b5-`OM{?De^eY9+XVsB}c
zeC5F{u)#QN*zorxz{K+@UeQFS>%#lAHZsXv%sxRU;Uwo4I4*8lz&k69+|31SyOYKO
zJPHx|3ZeR-y-Tr4*-1seGecID*wI*@RZ-qEiF3X(gJ?Kg7@JW|d{vfYxARr>0
zk%rfb6;z;QdHNIMYGUFnu$PB8H-gL~2=y|mo=BJ|t#}n9%DZ#JolR$GqaX`LIX7A$D)Ybi39&zQO
zo3044`V4B>=EcS^SHpme4cMmAW%_A=PGD)rS~@e+Gedp+j!I+Lo8lKdzXRkM?8aSS
zKp)U-x38vHD^P7iU#
zjyzLO{PZ-ny(^XdI(hSrru(3C3=FAJFQa9bJ-}TK8dM3lH}`S_F~!T00X)|9v&uD*
z8MiYJ%jGoRTD&xG!3FQ`{F71CSTm^?F33Sw*L0N?NTlxNh3<@uk3esdj+r`Qpsqs9IPIkiXA+;>mx}8pkzbky$<2*`CbO^+
z4vx*-Zd}A(Xo(+bEyk5cuuU9G
zXJw)I69BiD%SJGu+y`BRAngFler(!L_q9g7Ja*y&Zv0x@LjP7)Vw3zkyvzR=vZao!
zC=Rpg-#OM9`b+mA=)wTqhlxRT6Iahf-&kqr>kmt|^$_M@IT4_<5ZIP{u7}fBJC~|J
zXCv@F)j^kPPv%h1Qvs>$v+Hb;ePamew5^+25#kGjntSUs`u^02C|S2(I`LUlqUXrc
z*W2Cn=Uzm?Uhl-8Urp@P5SMt+fdx@WK_h_p`R|%M)Cl}IFJMQ4uFLJt{rhtR&0pSs_NCkHL$Qawy^YYOqw#9j%}qjkpFNXb0=^FZ
ztIpsN(etHGCnQYa1g0FJM%8ql?*l=~BIwvJXi2DVQmXZdXe|U?K@(Qb(jjP%0QGY*
zelb+tFMl&yxEq4x@X+>mL=<#}E9v_+ybMBySUUedL;Rn)7sApHhu4Z61NExw+o$9oE6DHUqiA=InPn42$Aj4NF
z+gB-Zl|z0Z^M&{9Pk~)&yXm++$eNC?AF$ELcgnY=V;Gy_pHy9DWN+y=-I7-z$jus_
z>b$l)dx>~Hl=A`&wOU<=)GZmcQQ(a`leTxpqQ2_CWlb`EKZMUMq)}2%nb+YA#e*sg
z;yNR3DL$k&7cZk1x+X9De!>15HdSYo(%}iRZtBUv>rJlDaYo{oQ^5?t6flW;F;_DF
zE!i?)>Sf%qN7+|dn-NPn$u9;cs1OhlO|W
zRzA^LUOHX_dXV^KwRoC!>VXWcjuTc-Zf#-PmT-@@a~;#-uv9xi(on(Gk^{X#&pnnv
z$Vp5-9<<4KD!BLKn~Zv}8@BBscN+$JdpD~@jtC#Aa?+R;jqWzRhB||5A>{n3r4rFO
z$9AR4_>pwv^y1BwqLJBWJU!Sl_>*;wkT}E2q#m`dYlp=XkynIYl0#XJ`4k)7C0CT{
zC9R&Eh_5*a{>qXc1<&r*C8M|ZN-Yx)d@&w=C#<}ceUDTQ
z7roV
z;ljNAJjOmDProG5%bTQ-^7O;PO^yhBnzI6f&C{ASz%f^}L>M*&>B9JlcRt_tO7^6d
z7KSK7$X)G|tb+&kSEuCXWz%-}MC-6L&b3HBz87}S+^DsZt4CF6e0@2KtNh{6<6%Ln
zskg`8N>Y!9eLugkfQQAtndnP?eAGH!ht>E)aE*8$OhN=Bdz&18QR5Bd8b-Pq;}1u(
zw6yTABK9XIH^(GC5y#&)SHVcAR>!pS@V*x35bsV0?{#51Fb&76w%472hec>{DD54@
zSG{T>pK*Jo5xD~wZ5U|=MyokxQ!_Tc4t;Y^Q|c<-!9_?UZSxmst1LQN9^hM9mXp9_
zd^LNmVi*%7^t$0Rrx%lmA5tKsl~Q(I~F?73bcx)1iY
ze)xte??%71w}1lz)CVG@#=x}
zkq9c*WYfa+Z10T}X_WL1oa&1W6J=axc-)Ajr^WubcW={Bnao1o@f6S%AMxH8KM6Hk
zPa{W09;_eE3p0cteZ>$3_pH-3@1(Am7KaTZ4i=E;l**9k$%hq@X3^ap)yz(FPQl{g
zw2`Uc5fy0&N!~6ETx`UK$y3>@sht6Z(uSwa(mB~QTv_Otc1-s|{ONrU8~LPztF^Co
zBu-I^<5*U8AVYs{+3PLfa*LCyhDgy_(leSfeE%DE=Pg!7m--m5X^cnKsgjl!FV2%q
zn^AlnbiTpF30zf+6QL}y8C2=z;)jK7+IhXcdCiUy`L#FU&cP|E0t8Dgp+3M&X
zA$KzHRU@v^bq8+!-a!kH{dPjdZS1_1RqaPH8NREfK*o-Laxk7Gr4)TdbI{gbkv^6uT`zQRm2H@R)}iKeo$Dp!ct-gl{pHbUZqt<(`y1-VbBw{)@VK}3*
zHE4KwpI4wxwn)4K;bmO9XNy~&g;&IF^F1AVRD4&c_$!00Q_;SyO1929#o$+63`eI_
zrL6uHHNZvqYt+bfRlaADT)Ire5Lj(d&wI17dPNbm7}+)|%sr9ex0?7?*C?cFCUZW#
z#UWy&m7?}os6o`sS2$r2m
z4J^%%e^>EvYMq75l#}m@?5%h6cZ{v9$hb&oX(w2(WlM^ObQUC?^ltRPy78<+S@~%m
z?S4Tv^}}6CSFU8#4=ycNIufgMu930{_XXZpe7tiC@LC_w=lTy)@wXGYox0wW&P2#I
z1;~Xr5bVm_Ms4mxy7U
z$O%59cf4`+9Ax!i$5`}Nkgy%h|0z5;sGHa0(WVBzeYN!TIpXucc(NHt9ys2HGY{GA
z10L190orSYA_?(^hgWm4M$$j(a5|>DhAFn*#$JV?8`fat^@@nwtKPD#?xOi004GFs
zClYFXm+J5$iwz}(Sss}29rhA;S?#Z4A&VV_}dn0!d1HfT6_d!)0ij*Ay9uL6fY
z*HO4&UR9Q#z;vQx?fUsjDOf*cm3)dBjN=G+(_C90aDWj(b9{{cMdHr9;Qr?pGQnI8WuFFwMqa
zvC0|LK_H<9#fky>>xgoS3pHr8;teMzOmsg?MEXHn0)-sy0JeyW<;M*gR-9BN4?e`?
z{6q~(skHK3v
zcI~ULv7p9DKC>aY-6_)Hd0;5(*;;1_NGQ3CkeUGS?KtIV+`84s
zaqX2cz6YpxavUvnL>ma#XV9XqDn7h37vNi`n#lXTRBc$UW;~`2VCBjimxYJ9@&JsY
z!)_n5>kU#%&l(QAK79p635C^%x0@TNnKPK^9Pm>oV}PJZr!X9svSUDJ9
z6IIuL&6|D1%lNt@aenUh=Cc#>F4H2LM*8O0VZ+Qj$PaZyZ?+p*aW`7Yx7KB0wFc
zD>I)_>q8p*=|ILkl6tJ)Y+Ju}dUMu0UZrlR`awLOQJJ%Khp_`7@xR?bv40u4}>o0JO)*{)huZ
zLsO&b0%PCwl+!cUjT43=g^M7{H!!{Gm(
zjxmE1;VW%vZQpS6Y5`Jhy9k$HqicmiGMYDX8yvy)4Wg2{iOXTP@0&1;}?Z261wOe+!j_1*mLlgV_R~
zq=$;I`_;;Gds%Jh9a)=1sueQdlN@qL*(8z~IJRA>is!io^820#riZGjsU5Cbr|gm>
zVqSU9?8(DVE~~zhz#K}gvsZxX%!b2
zTuUZIsZG%4A0*%h72w&%eY_x$Gzn^PaP1|6hJ%eU-s8E9SEs|945{zzIJVRLmjjui
z-b4I5*c!K6Jps>R=1`KBOc>q!VsxUab+cgLhCm5fMN;i2P|bctsLXg;Q!5?Pty(jb
zqES-V%-yo{IEFvRyHTqyDY}b|LM~YymwxVgezE0LtyPfVVVEdZrmO3wzycJaUdCbM
zfBlNuPK7XKnqd>>fuKO~5SutsU`xlQPUvF$(_L-S14eawx{Tzop&kTb-_|ou;vQ19
zI71kW^PjZY9gP=pw_pAO`RNKa8r}I(OZjLj7Ga6lwwQ=nul;WybTgY9K;g^VCrm(r
z4L6>HGb@!uP1%=+^KeF6k?m3dT_M=6QrQ5-QUH>#o|)K}Qb}L)I0KnAi%A^5qI5=9
zR%mEbMxumOjE#h(QyF}^=q-LlBySTDh13*InxZtt@V`WRb;8ie>+I5%E_tH3eM;92
z@Xd?FzuNV;z%OVfytxQbsWRzCELHH+O6=Gut@N(jjV@&b#Ht%X$ICFil}*cS4vQm4
zX(@5Lm7Ie0WUs^}{>!@UCAyQ^^2~KhJq9YiAe<9X-@-E&s~o>a&gc@Cs2w&PHz)lU
zCBa%KKUBpuj=pG7ajtMKLj-dlAeBn>v8VV*hEJyl^+1T52kp+2fKz=q)?L0+@}$dj
z*uA@acdn68iV^|e!0B-Z8mGIF0=inM79Nv~a-ROV@4@MFhg;9?Q~Jdj5KM7emyg=7
zD1`|ZW{AQmEm^!UK>ATd>vp~W%mpbsaXBj
z!Et0%(Gz~4>rWx9)}R*FN{+ybBfzZ1E|O?Pw|1h6K`%RVrSH?)K@QKCdbJmNwH&r|
zmJ}BcPGGX`d(1vt68ufI@arSMuV0r14Kl*7e+xYCx;6AGY{Ea~HPapk(d^*0MaUkFPXBr1#7%8w*LX1$Ov`0FkQ?~-x
z^^TgI=hO}Z%IlnQWHJg-F<44Ks@Q0yD{G@0ZwBa%t_k1W^DgDArt}d5Wiclv_aDl6
z`XcdsoD4yE{Y^%`#Y&(OB%iry7jn;zgJ==zjO+_jXooJWlf{G0g9ht;&EY}(donCP
z*f~dss$V^2QiL~M=#Du*HHO^w3%}i7Op}HI_k$zCOlLpMhM{d~C0WdnI?%Wd*ZP9Krgy@T$n~QuQ&{Y
zcJSaomME$#IB1ycK8!=(0fZ=MIt**yh&+v*j_ht3G=)dr!fo)VFj~bLo=X(z-B{qG
zx*&+$4Vxo$MgV9lylI+xFrEIEh%|bCC11Sg*Ea8!*{e0=G18L?5il&g<9pUi#mcsV
zb%4#Ru6X)6lFHmj@O*wAJ*G_yN-fW(2A!gbDH_#{95g>M
zF-0`B8{7n-HlZ)-;cjTAa$MW-{O4JkPAn=PfFJx(^}@kJI?>J`>D5WIMNte)NtzD0)1d
z!|WN^*Rj>8te9BqW|kf>xfiOwKZ_N*w|OBmdOeVK_wGj(_-Gkb=oy&}xG!qR(hbFj
zgmnBCzl&`87v=lXN=~!pM;_U5kF#lIzn9(|pQpEi5cz!wvSd-WKh{pCgJw7elIs
zpAkafkA;w?HvHLOcDhip9(LB~$^kP6@=6P)Od~iVVAx=|AkXuHRUX4w;k2902#r=u
z^k1Rc1VoAis)ArYs;L7%=YK;GMwu!#*fBIBgO4zuoj`U>D(-KzlJ(Hc96``ttrSq3`m0EP#W-j+5Y<~-)L&pbu0Mq6G?tk|7HJT)q8af5{Gp=$
z4rE4`dM+Kij+1JR}+^VL4wrd^NI^g
z;;6Nbx`~XW%VW_#tnhBv7l>qF35c>@8Bq4{tfv*S(>WRP-o>cJST?9SJr$;f7Pak1{Q
zA;S;zBSkTQPc7`W>wlP1ZneGzo|NQW3{}txEfhrsjnU?F5=0j*D;OV6DXnNR*aSVV
zPB(X1cRM<^y|{whKEbo!xLe&PUD+8`&F8=)rI{kyh-EaAA%Kj+yKO)VNj&qZa6{Fv
z-t0PkVFSc^iO0QwRUhdi0Ou0Nr5Ev=E8_mljoC(q?!X6+M?uxc=9oOEOWK7-wC#xC
zMX?hUnJf>{vsvoN(sy38zVuFW7#(eJb3x59wdBLY&Y=5b--d}VklVc)p*(|n9$tv0
zD{9NV1N#-N8!*1M!YUgDz3PA`#`T3GNc_A4GT*6ca&eWr)3#p2^B&XuL&kVlV?3r#
z5rqOTK%H8mG|}zKgdH#I$I1dQe%o;ChfgOfE(n|8{L=~-hhwApf{l_h%rJM+O@%*-
z`_(wq_do=TR9wJW`Nd){!3X{4BMAQO5#hlC&VCCxJMwpl5?e&XZMpV8Wov0Pf}F-;
zuLII6U@p734i++gxBURd8QCAr0Ww(T%X&bBKj-Eei`mCxAlcg&*x$+~lYj~xAxk#4
zdJ=Wi8W81sn}!QE`M56;>kxm5vkRbl;#cAf0>l}%?p8%)8ghJT+{_26t61qIU8l7G
z>21y{%_{bzTg^i)+pNs(Ide9@@@5d=&3+Sr#6RVLiCd5Wb#66q3%CowLsxk{IVq(p
zW`-K*3)ZvGatv9;knd$JhqAe!nO3ek50AUjS-AKeqb?z=8wt
z5-cF={B!v7Z|YBH0ep1}X)NZOj7R6WmR}+F=bO)SX1c!B;sw50qg}qq*ZP1w^aOB$RYlPTAz%%JRt6e&DIv4XVoQ&CPKA_C|84ToCA!c
z(@!uEvaaTm931V#-(w!_MuymS5okUn1%-BZU{Tntd`c-%*R`iR6EFcnAv$!LcC-`o
zCJZ<+);dGgnzQIQ`l_+~QyAQ&!y04@DC|5(tz3H`Le(Mq(w#|Dph^MmG1RDY6m4S9
zZ=(0|eRhSWXZ?@|6H-~UUzs%ImfP3iXHWGSVl-JRfjU*kHU)j=;G`}1`#Uk_=Y&5-
zm0weRe~$SPkCqUrfkaf(a`@$Z@IhlcSK=uZsf;>x!~80SUl10UC-N90h8JN`Tc
zgv)?Jb+!E*I!+SfH+5Y~M6Rbb3?WIv>w9#r>$ztiI5S{M7#m62fqh0FF1XYDfiI&E
z0s?f0XUE*>&F0T_K)&lcSjT+2=3|?}A0c{NtSte;Y_qavZvNP+l=J_xq36|hL+AL|
zT~y~2@dNm?3d=Eh78qj;Cb74P-pR|H{|Hw&+XQGRS(YADD=^=-?;XQMvh&HhM_
ziFGHOq{Q_cyq4|~n^kR&iku}8E&hml4frlv2XzJdPgwrCC}@iHQzNst>?(1WfTQ-3
zwr|1cpnE)qkKRE;cuPQfI+YPdpxez0<9y1S1x1$TeI03bXKZ>Y&(-0BHWj7D!n>UI
zcZs+I5{89i*uyB*)?r~Jx_xr$k_+++O`6M7Oeu){q1
zcNuH)TY`og6$lp~x?{P-dOz#(%Da|tQd~FUUcWK%nDbu`*J+8~rv^_=>rbG@8{MXF
z^g-9l@J)J!Dt?|s>ag@4f1~XtUx)`FeWGV+!HL1T{7P-zCA1KA+U3#%<=t0TPDn1k
zUWI4*IvRISBOh{eX$IHCHzn~?HwBUD8m`l4!&mr#^1&L#nnL-e1sd%La>Wg6@!2Iu
zqdk(ePm=~q8Pm={%)kHK8T~d0wM9LBrRsJR#S^|Xr4?VZDU~x?0Hit)Q-5a5T<0Dx
zhIJjdBZ}7-`EsVampYJRqJ{8Va+u6?D!4A^ofZsJUQC<_!8b
z_Dr094-4o;qb=Gdn{M7oU}Dg;TZ2;$#_xrmcTU0kJl7p>8`%9AqWHnnxp1hlKlCY^KNK_sn0aV2997H!K(=PQ)BHa%+Uf
z_61xQ@A90|UxGLS85)(XhH%%j%UE$Rd{PZV%tR6`*!yI!{)D1?3?li_a-=6D%-
zd@)QB!`wYB8o_Dj8?tn?h6=iS
z@=DwX$F9BMG`N{aX9Wm;4pBVwL4pE~lQod)&d)c>Ei9in96xO3+r&s&Ty$XRMs;8g
z6<>y%Y$9#NGm4gvb84lfraQLW<5`fn@JyEd68FN$UZBQ}JAy6h3K*t!pA$1}9VJzni@zFY`S1jgZy@1B(&}FdqTE
zL?0lLUmmxdsxZb~&uP>G4pU%%#c*DxMc?f@jo+<~i_RLJnAu$i_YC5-*s%0&a2!^1moUhqb+MaiMP?&fn!VLsxl+$yd7OKCsKQ{w8r3
zEDk7OMf?HebI$N|0&uek1(y?=Y&hpd7lE$d!n*ZMhJiekUoO{*pc`^fE|0nNtcZ{!
z(;wm4m>Y2Xg4dJA&LMy%&YoU_curI`IrP}%vC{G{N6XgBzSD|-a;a9~;1-RTZanyS
zfhxpW{(G03sVG&R9ecm%YHo}1!O{i=;7c>Dl&Y?%{mcF~3ZTl*K@bHPM1>p6K51~H
zYKWq!3vvYgr*IpCFhRB@(o(@^6`zY;A-}ske${P0V*vU1(f=1h&L@f#5Os>*h|t15
W$;v3U5AZBQkojTjLxl&9fA?SZaA$h}