From 612250567762764996cd0d916cd52ac78aeeda9e Mon Sep 17 00:00:00 2001 From: paspo Date: Fri, 20 Oct 2017 10:47:41 +0200 Subject: [PATCH] Initial rebranding from bglug-artwork --- debian/changelog | 5 + debian/compat | 1 + debian/control | 21 + debian/copyright | 24 + debian/files | 2 + debian/libreschool-artwork.install | 1 + debian/libreschool-artwork.postinst | 24 + debian/libreschool-artwork.prerm | 25 + ...lymouth-theme-edubuntu-libreschool.install | 3 + ...ymouth-theme-edubuntu-libreschool.postinst | 26 + .../plymouth-theme-edubuntu-libreschool.prerm | 29 + debian/rules | 4 + debian/source/format | 1 + default-background/libreschool.jpg | Bin 0 -> 108868 bytes .../edubuntu-logo-libreschool.plymouth | 8 + .../edubuntu-logo-libreschool.script | 1058 +++++++++++++++++ plymouth-theme/edubuntu_logo.png | Bin 0 -> 34589 bytes plymouth-theme/password_field.png | Bin 0 -> 788 bytes plymouth-theme/password_field16.png | Bin 0 -> 177 bytes plymouth-theme/progress_dot_off.png | Bin 0 -> 387 bytes plymouth-theme/progress_dot_off16.png | Bin 0 -> 133 bytes plymouth-theme/progress_dot_on.png | Bin 0 -> 379 bytes plymouth-theme/progress_dot_on16.png | Bin 0 -> 122 bytes 23 files changed, 1232 insertions(+) create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/files create mode 100644 debian/libreschool-artwork.install create mode 100644 debian/libreschool-artwork.postinst create mode 100644 debian/libreschool-artwork.prerm create mode 100644 debian/plymouth-theme-edubuntu-libreschool.install create mode 100644 debian/plymouth-theme-edubuntu-libreschool.postinst create mode 100644 debian/plymouth-theme-edubuntu-libreschool.prerm create mode 100755 debian/rules create mode 100644 debian/source/format create mode 100644 default-background/libreschool.jpg create mode 100644 plymouth-theme/edubuntu-logo-libreschool.plymouth create mode 100644 plymouth-theme/edubuntu-logo-libreschool.script create mode 100644 plymouth-theme/edubuntu_logo.png create mode 100644 plymouth-theme/password_field.png create mode 100644 plymouth-theme/password_field16.png create mode 100644 plymouth-theme/progress_dot_off.png create mode 100644 plymouth-theme/progress_dot_off16.png create mode 100644 plymouth-theme/progress_dot_on.png create mode 100644 plymouth-theme/progress_dot_on16.png diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..1c10d99 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +libreschool-artwork (14.04.0) UNRELEASED; urgency=medium + + * Initial release (forked from bglug-artwork). + + -- paolo Fri, 20 Oct 2017 08:08:00 +0200 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..109c576 --- /dev/null +++ b/debian/control @@ -0,0 +1,21 @@ +Source: libreschool-artwork +Section: x11 +Priority: optional +Maintainer: LibreSchool +Build-Depends: debhelper (>= 9), intltool, libplymouth-dev, pkg-config +Standards-Version: 3.9.7 +Homepage: https://www.libreschool.org + +Package: libreschool-artwork +Architecture: all +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Default LibreSchool artwork + At the moment, this package contains only the default background. + +Package: plymouth-theme-edubuntu-libreschool +Architecture: all +Depends: plymouth (>= 0.8.1-1), plymouth-label, ${shlibs:Depends}, ${misc:Depends} +Provides: plymouth-theme +Description: plymouth theme for Edubuntu - LibreSchool edition + This package contains a clone of base Edubuntu theme for plymouth, + customized with the LibreSchool logo. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..2ed4a34 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,24 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: libreschool-artwork +Source: + +Files: * +Copyright: 2017 LibreSchool +License: GPL-3.0+ + +License: GPL-3.0+ + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see . + . + On Debian systems, the complete text of the GNU General + Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". diff --git a/debian/files b/debian/files new file mode 100644 index 0000000..2c029f4 --- /dev/null +++ b/debian/files @@ -0,0 +1,2 @@ +libreschool-artwork_14.04.0_all.deb x11 optional +plymouth-theme-edubuntu-libreschool_14.04.0_all.deb x11 optional diff --git a/debian/libreschool-artwork.install b/debian/libreschool-artwork.install new file mode 100644 index 0000000..61212d7 --- /dev/null +++ b/debian/libreschool-artwork.install @@ -0,0 +1 @@ +default-background/*.jpg usr/share/backgrounds/ diff --git a/debian/libreschool-artwork.postinst b/debian/libreschool-artwork.postinst new file mode 100644 index 0000000..c7fa0f0 --- /dev/null +++ b/debian/libreschool-artwork.postinst @@ -0,0 +1,24 @@ +#!/bin/sh +set -e + +case "$1" in + configure) + update-alternatives \ + --install /usr/share/backgrounds/edubuntu_default.jpg edubuntu_default.jpg \ + /usr/share/backgrounds/libreschool.jpg 250 + update-alternatives \ + --install /usr/share/backgrounds/edubuntu_default.png edubuntu_default.png \ + /usr/share/backgrounds/libreschool.jpg 250 + ;; + + abort-upgrade|abort-deconfigure|abort-remove) + ;; + + *) + echo "$0 called with unknown argument \`$1'" 1>&2 + exit 1 + ;; +esac + +#DEBHELPER# +exit 0 diff --git a/debian/libreschool-artwork.prerm b/debian/libreschool-artwork.prerm new file mode 100644 index 0000000..ebec717 --- /dev/null +++ b/debian/libreschool-artwork.prerm @@ -0,0 +1,25 @@ +#!/bin/sh +set -e + +case "$1" in + remove|deconfigure) + update-alternatives \ + --remove edubuntu_default.jpg \ + /usr/share/backgrounds/libreschool.jpg + update-alternatives \ + --remove edubuntu_default.png \ + /usr/share/backgrounds/libreschool.jpg + ;; + + upgrade|failed-upgrade) + ;; + + *) + echo "$0 called with unknown argument \`$1'" 1>&2 + exit 1 + ;; +esac + +#DEBHELPER# + +exit 0 diff --git a/debian/plymouth-theme-edubuntu-libreschool.install b/debian/plymouth-theme-edubuntu-libreschool.install new file mode 100644 index 0000000..cea0fc3 --- /dev/null +++ b/debian/plymouth-theme-edubuntu-libreschool.install @@ -0,0 +1,3 @@ +plymouth-theme/*.png lib/plymouth/themes/edubuntu-logo-libreschool/ +plymouth-theme/edubuntu-logo-libreschool.plymouth lib/plymouth/themes/edubuntu-logo-libreschool/ +plymouth-theme/*.script lib/plymouth/themes/edubuntu-logo-libreschool/ diff --git a/debian/plymouth-theme-edubuntu-libreschool.postinst b/debian/plymouth-theme-edubuntu-libreschool.postinst new file mode 100644 index 0000000..e7b54d8 --- /dev/null +++ b/debian/plymouth-theme-edubuntu-libreschool.postinst @@ -0,0 +1,26 @@ +#!/bin/sh +set -e + +case "$1" in + configure) + update-alternatives \ + --install /lib/plymouth/themes/default.plymouth default.plymouth \ + /lib/plymouth/themes/edubuntu-logo-libreschool/edubuntu-logo-libreschool.plymouth 250 + + if which update-initramfs >/dev/null 2>&1 + then + update-initramfs -u + fi + ;; + + abort-upgrade|abort-deconfigure|abort-remove) + ;; + + *) + echo "$0 called with unknown argument \`$1'" 1>&2 + exit 1 + ;; +esac + +#DEBHELPER# +exit 0 diff --git a/debian/plymouth-theme-edubuntu-libreschool.prerm b/debian/plymouth-theme-edubuntu-libreschool.prerm new file mode 100644 index 0000000..c48ebc8 --- /dev/null +++ b/debian/plymouth-theme-edubuntu-libreschool.prerm @@ -0,0 +1,29 @@ +#!/bin/sh +set -e + +case "$1" in + remove|deconfigure) + update-alternatives \ + --remove default.plymouth /lib/plymouth/themes/edubuntu-logo-libreschool/edubuntu-logo-libreschool.plymouth + + rmdir /lib/plymouth/themes || : + rmdir /lib/plymouth || : + + if which update-initramfs >/dev/null 2>&1 + then + update-initramfs -u + fi + ;; + + upgrade|failed-upgrade) + ;; + + *) + echo "$0 called with unknown argument \`$1'" 1>&2 + exit 1 + ;; +esac + +#DEBHELPER# + +exit 0 diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..2d33f6a --- /dev/null +++ b/debian/rules @@ -0,0 +1,4 @@ +#!/usr/bin/make -f + +%: + dh $@ diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/default-background/libreschool.jpg b/default-background/libreschool.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2345953f44b78570f91eb936b316d63b64934e91 GIT binary patch literal 108868 zcmb5Wc_7s57eD?shQ=ff4I#>i+t{vzF51SRCY1(bNrkwTbh{z#B{H_LM4_%*VeCt! zv@aByN{Xa?Lz}dhl%ntJ8Ta%3egFN{7&Bw${XEY(uk$+RInO!s>+Y|o6w7t?+}V_Z z0*%^$|J1J`YK&9F@@0|B|1{XRDl)`i&fEpUUk@lJil#vRk$W2XM^_~GN_4s+U0F$4 zS^hIZg`qq`WrVUaVPV(4c|tBS{85^cqM{OWgz^aaTmFCD{kll0GZgEU zC`AQzil(lhsIKs%&|NRla6qJ+|=_6>2 zU-v0hMf{Pa$ij=??#cARWqM(aslv9aWfIL)VgAj8xf=PZ{5ae*_$+azYn)c5X^o4w zW>(1VLnf}G3fKL$B`#Iw>%%X(`KML6`Ez7?PD%Rih95P|1xGk4fBI^$j8qJ6G59<& z$54|)@mUw7R2(zWMrgvI(Wgkb>^zT*P2FjB!?#Y=AU)F{UE`p*`TW^s8Z`{QcD@Ij zbKHzzSjJDwvIS*hq^ zwR)yx*=-C#c9KS$OQC3~-LqgY}Eelde9W{BvMxjRQuG0bSX!hcKdmRPBVl_dsi zSea=U2Wg9~92Jd1SBcTQWnSvbyqvv?)FJIluC*B1_3ZxIXWd2J6?^t3hO5~n zu*CL;m$M8tE*?(wW|^?XF%UFgGd)Di;c0RhJeKk(mJ%(!-YJA~RK8%6$FOl59-13( zCFm)KuoHrGOC#es6SJ5(#(Z6lYZ*fjXIhvPBIedg3?&wZSsHhbc^oovbFF=K%*`$P zUb9Toewj>fze{&wxQ4l%7=xsXjWpZ^g+`3IoZ1Ug7M6VBa2c-<3a9cs*i0T~5M3{& zE6^I`s_s+`j+-BpAP9CbDo8gvd*lPkh%^M%?ripuqc3N)4p z!G7obJxh=`AE9l&-Pr_nItA}iyTfbU$OkvCU4Pk1#HL#9s-sh4Wo2um4( ztqlH7Paez3k->)8DFZ6dmv$B?b59KGNep(j4br|eO7oCLjhZH~mb65&J0Ej57K%Aq zyN&01F{BvW#MS6XpGRiNT%Y8X7Ixjct62bf!W<20#N{kTq%KU!-C!=T9iu{Hb3Enn z7M8}&R$|p3E~9uv+&pRYlw?{uPa4BxU~H>Vx;2TxtR@rv(y$(KYEUuZmK0%+s#Atv{>|COf~?C~9z^ugn=A>3J=aSM%Erh==IgVz zSVSIJW7l1f=5~CN-r-kSZKg*4Dh%fg3o8v1DNh`us%zwABGqQ|<6M=vA|+;Yv;pH! zt>`>q9FIm(leq>SJB3V2LA^rH!D;p(-TV|7cQH4z%}l;-V&ZM4tWLt_EU{rCpPSFF zm1LGn?==T?n7El-+EbBTGS9TJ3OEUWKKDRbmE7Pyc`%;CTUx}7OdAQ7SZgWSYUAI)kX*6;b8}V*|Lse+34AtU9ejE=s zC%Tr73){dWh9@+kgj~8VpoLY_lqg;y%e~#(E;8OOlBk=7I{?j2)Cjvy^AZHbksF@{ zkhw5RC5D&EjVfF{iuRUgzB(q;6Fu+J3vYCoyW}uLE6Aep8cSJX;xd?;xEWyG(FXiH zgIFG-1IoaI!4`6Pc?=Q7U{iGG%3$rL)Flp1+D%DIQkP;_JqJODD(F0j)n*F6sVBJw zGB+yE_uxv5%B4leFTt$m>5D)n#;|C62jjEhjBpiwXR)Bhz*`B9S`g=|IXNT_)~v)~ z(8LNt7F{8l*b;Qhq8L7QQz!rRvrccu#Z$zB_%J4za8Db$TWULONj8@>S0+ z<+I}5v-PutVt4jjZ;6GwvH3Ysk%L8qSNER1Z~}=K*xm4xi@z_Os_CJlXAE%2zik&ZqG?9)L8gDNZ1~8Uj1w zu{eM;FGj#p;!$i$NLb8(mS~ViDbO;~^zAm-V&otUo-jWo3mCIs3L;Gvc6w^q3VZna zMtqSCUnAepkK&uP%pyn1~kd z>5PEHfI(?%>F~JG&@SsQCW}k)cDnNzYz3%cNo$U4kJQ^LB^WF!e*i%TYuJXwA7XVl z)s#C|!guQC^9!e>&0C!uBr;4aO|~dE%q&V?B0AECDCIf)H5eSGrD4ohS3QzMi$!LU@RRtDs)K(Xp;K_C>ki@~NVFTBw|Oof#m<$^3mX?7C3)(Zf2-&*$Bjk6h#8^4q-t0Y+Jr|MmdXwYt9@C4dcU=<=_pH_S$_s_~HS$;kNBC8l9Lqjd90@C0@V$ubmi3^k+|3*FgL6OTg( z$)$HRIm^MPPP;7uIYV~?4--KlhcVZn_CkSjv=e0m@)o*sqZJ&vQtUaP>iWFjmSF}I zgUX}mE1g+T`YN@i%8(AZwP`nTLwYI_U~JDKvkF9MUh|=Zj3i-Wl5d779LdGP#BxcN zJGAbZoo&}^`cXD#QKLVJ#`!EGRoBULXOD`TAAge-M=dvy!op!x?&*F)F2#!Bu}tv8 z1=wgxF+2(wz!cOQv}N=qtC0KKOK>*Tdv9iD+Up>=42kbCFNIcm4L2+}VWG55g{!kSC-7dvAc zWa1iu_%sqRn$i9v`4XTf)svIjbU0Wws6Gx(5mdKCC_3}MjOQq^T9nQ5~MShX%J=5&5 z6VMPGx$di-&36r@$G~-_i#b$atEw(Tq=1bc!IvsfMusORYLB06xJ)G6bw#G<{jpy3x)JHn3c9{ zV#)8BZ4Jk;WIQ9I+l0!P#HV{3MVt=FA_1F?E2PaA`|;(Gx$oA*N}kJAZ!-zsI9^LTa*HR@K14aQ>1~AcUm<>W~QGS309k3xgx#7 z5&UYu)F!koF;u43Wb34tmXn_Xe`bZ9_k2)>;l&!Q#dA%(vrIp_N!EwUG#v696J5ng z%Y5Vh)a5R>`E%+%8yYKm%18l?a?GPRATRI=7S7^gtuX0yKcnkAqbZ8cyvE`RERc6o*WX*MFfnUH5IKf4t52R$2hmBo@z^Z1rw92z?zqb z*DIe2X-chOZ$g_w05u!+JP<5FU@FHuR=a7UKm@jxF>|m{YP1@qQDf-Mf&LkDz2>gL z#>k_{->#5&aWyCNGIe9@K{9B&DGtM+4e>!NkIUvs3BF^O%lP~%LP0Umd z1m9h|C9t4u^rq?7w)tW7MR`qWKA2AGlC(Q&IdHQ%qjYO7_n2uDp9AN^AxPjP3d=yU z3~Z7*%-8!OfIDF6<6LFvlEHew(6%+WD~e-gG6VB!vBTD+VgrRLN=gPmAZShg&zcB; zrWD=6SGopaPHke+EsN2*3`ME*@g z(R!wWd_OVQ%h}f}sKeB&J9*M#HM=f=)5R$LK0iZ1B4tFU3Y8|w41C22yk?5ZxX+EG7><9MiR4f1c%`DZzqOg z3xO!U(F*3qv`7jyuK5djC$deF`T&APixm|e!oLN>_I&#=h!o<;4e*WGEHD~z*jiNM(u5f#a4A)JZc*`^##+{v(0p=%`5 zqIvV*!qZs8GSv?-*hX3}2^vDEJVotpS5SUa2qqD7$1zp62OA1N;gK>#Q5)K{if~a% zNK@r-ut|2VVgz~M{bX;4)5adGE_Eh0EDRpol*ghoL^KB0%mC%WjZ<{xP(*P|mf2)L zL1(8@41Yx)MZ=FZMg3E11JAx{;<1$0V7*oI<(f}vTY@-i)%>uYRNbSF1>RN-#rC?V z!!FGa*0nN2%mbg#ieq?T3su6dk@@I3KNlwnNm>ta1;2soz2=YsZxEB7gv^PKlTX61olJ&oR?;2x8t+sqFHa>$tWkUOw$181KtE+gtgh`UX$`Twlr}vCT5Uw{ z3pCT_gaVyb2t@H0!CRyc=7h!ti8%Zst;)sb$4{2bz1@(A;FE1Ch~u-$=uD0y_pqyC zpu0gW(LXGo!PeR77(yxN?2I~2E&IZh-hm}6EV2gWpwniMDOFKb?4pVh}N+?oT`OMwM zMQp#W{reAhIU`p9KL|H4nG5;Tv1pw(cwW|+X?!I)@ac*UEbeUh;FMPc6*~2Kij#rK zQiXjAw4*k94y_?grzd*DGf%VewiW~zhgcOXRkmA^Nk9^8qia=>Y64WYaJPNIe2~U4VIu)c2Nw$|Ud%eOub_6iuLxx+IIrX}*s~)kyr`g) zR|_*#oJ=W)KoQgm${+w8B^~7K5g;5Ee7lLoo|%3w-CAV8>z58nXn3=d0ILV6U9v*RbgH?NL-}oKT z@H#T!UvcW6z89ZP229&~Vc>k-(Qof^qge4j_s`t=NA-??jd=?v++>zT7k8o*>qcz;^sc4p&4RfLcmGXuOS;EFu ztZQc@;+TI60gtB*K+|rcO(dF!p!c6)#&6R->Kt)Kr?9FPp`Z=1FzxoaORZAARb8nV zP@6YaHo>Ri#rZ4IcWVo+k@0Yud0xG%F7FqWaOh!w%Zb?oB?aI4aiWhWA6CD-q2GUg z=B1wTbKgB!k@fw3(=6Vm^Vv?wcPuiNjokuh_=Wp2es_!?} z-uyXs)`)F`o7XsP8gNT}6}58I!S2f&24)6W#e7|p?DZtKvZtZ?Y18tdG2M?p%kG?; zbY({S>YM4}EwhWx{M>qd#>!o7Gi6Vcd%HiEq;BmW-+Q#@@j_0DEFrhGPrrLYTEJg- z*RQP}$W7U{_uBT@_G1Scu57G1f2X#m@S|_a%gWv#b0+xr)u|1gAF}KkvKY{q_jcU) zlELqKBF>=xwH?`yY``BAClhkIP8;c%1Ga=Kp~X(-RbHSSjTy%23Xqv{pu#@Y7G=ay zE$TT=$8zN4;m``-QLuEx#1oFVSF6>Q>3Wj5!bUFy-mNL~+IPFU-{1Mo`5L%kR^-PC zt+`KP?rlPb|G}PwM^oR9d-d=8e|noQ<@cP9@B38k(D(N&$E}lMHk-#=l&gQT{G%_| z@mBwii4R^4rG4FXwhsSAGKb;>fF+aN%=$9AHfo2HcHz(d?(_Yf;rG^Vz6XP@9oV?*=dSC63tu`!{V2I3 zJG(~ruj+Aamj{lI{PXj@C6n$AF1+-i>*cr6XJt5i#TK3 z6YJP72S&7?`}f+69lPGX{Svje=lqP9Q@$Gp_-^aJyM5uM!Q^Ef zce^_e+P^3zZpC(N0!^>&Y4?2zQvt01;{k!JQnTwu1e$@MIK{CkT z`if)kxA#@EuCdG!vZ>@G!X3$-qE0I~Tc>r{U#ZrwfZfAU5-7wt?zeU&%XPvcb5z5N zh?5Gjg3iHig${`7;IwUY3LRF&!eOnF9_>2w+o9Z~q1aES55AQh{mZYUZE#-Geuotq zU5Ec2`)^BcRqf=S{__e1sX>D)TYpwRIiWwQAgiQo^}lNyrq|uG8&vN-sPkfqUG=q@ zlLoYJR2TofWyFcUbdRs=eR(?VbI+E?51ya-cB5{qWz4pc>)RK%uGjDV@nidh%@1oQ zD8$^Gu~?yY$BxxSUl#^`NS(HH`pNH6#$5sVpT0fo*FWR@`N#ND{@O>fw^8tSk*6Gp_yKUxiJ`rq$Q@XnLJUV7CPOoaq4k1sy*6P!)J?eEX7(W)AGH?E zhC}M$!FEU7b-RZ3&ecEdH0SU19)gP5rv-0UzFbf@@AE;;0qf?_X)@-|AIE!M4t1V< z6>#sd%qnN1?$O(}sde2$%im1j{`t;Xv+K(bukpQ+wfPrS^7F>LFB5v6KOJ;@n|pA( zr{a;HBbsLv>}oq$*Ew^gS)BUk857&0Jo5(v`oC`3k$Wo@BULXL z)Xv^O{T{-e9f%O+x_IZqR)uvSKgL*M3Nh!_F3}UH@=(x*h#ChJIc-S{J_h&pJT2Jp1B?NV8n@+$8zfi zPDp+hIDN^@3>n%bJF&7atZcW~^c&$-v5Oa`1o8H-5}4yZK{I*496ceBV)he&*ls&u`xJ%`EAOa(c5^ zxhAi@>#@tbgNo`0;3d9pyM3;Ihu6n|YeSO;#=+H9uARBIFZF#(-K_5mj}1hPSb;YU z9sIklb;H}SJ!jtMY$>j*-L|m#+}>TM2l~a|=N}(y_ibTvRP2yi^~QV0M+Ln0FY9{p z`==)>`cgNp#%G@m$c}DezUy9BYk&;K?DhLtTr9hlYn|>#?&V_OokHkr$40zk4K_gN zs@g7(Rx1g_D_g_!dZ1!#>q8Fdo%SRwkl2Jh2JS}bz9O5h5bKvZ`^R3kKB;EcKY#p= z-t#Maqs~>neLO;?MyF3Up}pnKk6lN;jqdxprE0pjrS-~oR@07+!4=Q8F11uoZ7#UB zv8L|PjoTmgJv<+v7i}=%$%NhSyQl3*wEVDsYm{|K`iOm3m#rI!{;2)%xZbvkJ;^^l z`Q~b-G%x#jm5Sqe{`hoqNiX8wz&#F3;=;5T*LTJep2x1Bg&Iq?MBaf2>oSGbh(xLR z^-}9fgm0-M+dp;f8#{}* zf4-aqqy;x@}SOcI_RQ8P&LH=HIHTuYLIZLh;V`fydT+cHQXvG3{rB;$)qY>aSbs zTB5c+38+0E^?AzChEE?>eeN6FzpWmClm{!=>R~a%*j24(T#q3-RX|8bNDO%y`1z+g zJC7pf28->P=i5S}780?>VA>X2j*C+5}vG5S1Ny=ofWu)xYmc zw_3(-e?M}6|JlFYD@J&p`Dm#%I6^jI$(LW0-q+MU9$!-8|M-0T(xFY~{ePcT-QD}; z;JKsQt;g;8QuTh$=M|R@ZFxT{VAq>(KL+Pk{q?x${_Ci1*8_KWtzJB*-Rd4M%H*NV z?x@!G{H0oA+{MDb)hNnR+qntzzKox6NA_^=-}+f6PPP8bIMK7?Qvb(+ z#f$It?R}|ZzVhCOdv!gz0cpqITFo1npm=!m(0JLkPj)v>b*{^0UF)1Vao@$EvmM8u zZ0gzgd11ri;?y@YqGY{~7KZ=KuYK*m>*1@Ro%MhD-?{Z}+cf)_FXM-1eaSvnyY>34 ziQlKKZJ(9!zWaU7*DHfRmpmDDqxayMd#{J~-Rhsv^{o46ckSzdg^eqs&P3m>2hYvF zg>4M|x;u~X9>M^)LiGdmYZ?;d4ps&(sgJ>S5{VR?U3dpt&t7F#Qy~w3PPRt2s8_`% zkcf9Sw$mXt*hwNh%9)t3+6MVX&|X_}@AjV?o3{KjVbh1)wy*wnodJ6+E%mnE?#>$= z+xqiZ$+L5H^FEw?IBOYZla+dP>)wT@?>w{LX8Cge(3ydeN{6?f7`5NUdYBU0wC`XSUu*|qa8i)S z39+~Fwz>_eIN^8;p5ZF88aMT~^;+-zK7OOZ^V-3e52hzPoONbI%|{fa%{>1*e9{i@ zC)01-cQ|*#zxqMXwh6PUwj``AUj1Opxw>0hn(ll&+cc(Y^ZrS%53LLx(3)i=@%(iB zM)|hxy0j-RKAMf2S(0*f``R)8{49W0mqU&pqwnrS{1{yEeeB=uQM*#F{CGKs^Zj$+ zoteGWZ*~Y9U+}m5<}~hm_ll15b>i#a-Nx^T|I6XY{bPg4uk7}>@=oov&Wk}VeFcR) zCiZ?tBM%^L0olYX$^&02>?51OeXMy05F=Al5bBeV80i!2{gx^ttXYc6kX7@;i&B@Y znlH~bA*IoT1Z0ltO4-x}i(8NQUZ3{j`;36FPXkf?gC`fn^!>2kaC*mu!@c9jZ2nyL z?Ap_)2eCH>cZ@u6bM&3-pL-iWuOHGsaAzoZ&!wT5`Ztq*{-O@vspAD6A6?sdH1X=s z_cQAZ-)`Aa`t@|~$;fjrcM0EqsWV#RxA&fvPVSLqp950A4q87M&>7u+y6Nu3=ZpTD z_3~W8;vXAE&v-NF_VUG{T(5!K6Rp2iDmRTzetGQ4o)wep@<1TsPGps1->j0+;&emUVE1B+UrtfkXy*G|`&` z&mni5gR^e$p0*^%Q}-3JUYvHl)X3u09W&Pq1jN4VC3qmW9*dQs{rjWlHGK|?^1BaS z-SX<$jM&)RwrP(>&wm$L=hi!I;mP&W>e9bH`eSr;Zdve@x|Y6=ua}`vwP zrKmLwZkw@l1s$h+Albve106e+6emMWfDHCa%AtS>q6a1UTNu~tPa)@xq)v&hF9{CF zPAWK6{XTKGNVUP$w33uOB8Ms)eXE4`$)9IFFLXtaLTgMk0dOm1z z=h8npPusU`Tlh!J_peUlfT@6)_inu#tWe7RJR|CI_1NZy zkNaOJwx2ntHlv{+ec;9D8G}ot7`Fqq%l^E7Qq<{*Le;`~t{w;Ug-;u$&P+Z_V8Jy;&EsS` zW`I+mMPx*zgSFw;$QBmRBmn`!9c*o82j=Zu@5*s!_>_XtV;7(fFr8 zi`h?+OcI@(36PvGIS9mD@{nM_q*jc98y@z}^cG*71!T1Eb;V#gDmLCBR+sO%;-E}w zOXh+c84{teA*+;|b5@h%@!{%}0xz{p2Pc#}p*}b?;!Ai3gHK1Di-9MPA)c&o4Evvdh*39@v<{-!khjCzTN|8@U`_>K zGFUPuQ{Wwf(=sHaA)o@J#$~FaXB%py-bubV4t7Ds?(^=%{Vo~Y3&yCKGl&gD6#zLF zz&`_I-YLqFTlrK-sa~M8R&oy`$R_6juoV2Mg_fv^guOL2(G>PzPL4|DnUqu=DUK*~ zYst9<=o7dJ)+w}VN4Asbfm99%IvQ9#3@3GG6aqOoRJwNWcCJm2Velz2O1Vf`Pa+vV z;Yi7+~h)qrA8w9$&SVZu78iIb6#uCG}B_Y)tcU)i=>N&5sjEO-SAs~{()eCJZAz(b~WvU|6BkRbc=RL$L*?7%i2=77oz zoRT3oPjb=G^7BxnzVm)b;ZblV;e;h3S_zDJi;cld!AlpWD^caa9r91 zLrjdX(nkrw)iNAjs|Lj_V3#+Ry02opn0QLg!hN6+Q1MR>?Ws7dqs8%9SGmgagJ~LM zPEk5y00BoNuz!|0n45qCTY`EB9}Wx(03VPuF%kst$6+D-I8iCum!!No|GgR2|POFFjP)rE}zzN+yWn|$PoKo2@-O11r zYe-s1LC^}+<^<9xVhs+|6r?pDKan zn3<-6ESDM!b=R!WMQb7tEIE6?l7-soxf<;niGgjZh7eKvwg#Q}IcE@LwO(9afZ$be-IRXp3Q(OVdcr=fc zYiF2Y@QdXf!^K*=y~>s!yW*2((q@*1dIeJ)(lO?uWSu2gGg*;mu#>5f&dpcG;2?&W zMfFk@+DniFC}L3z&W(_FqVix3*siLi!{}0p(W7((E}$UmE^v3s=2#+9PHFl^VQ<4^ zs8z#B?L?8)L~qVSQIZhFug+*9KyBD1lnbDD;LAJ|avRM>9rIKaoW`Si+KHBe5h>ya>_fj6!_`=Ae$cG$>!reJMDTn_E~u zT(yF#P;r{qTz2_xV?I~xaj6j1ke-ro*(5YeI2iNkiOVyEVu_r4=k4_z5x%##nnLDSo%mrI^PQLOZC_D3%nshIABUk@7r5NH`p>N%f7# zX+2r||2k;oRnJnE#4yXWZH`x3dAJ+rO0$|_#BS8FE23S3Z5nu2(IgLrr>GC3c+r$6 zO}x?>3yQAaC-iAQrNDOy5R`JO`wsMXLg=HbL1b=4T2M#bZhlt$6foiU0?oMMBI z5kM1bBvSwz@bYz9tqHxs<&opg7WGs=yA3tN_J)^(;vG;G>x8bEi>xxK7ef@s5J?O# zmV0EDE$>C$FQUW*QU%F3@^Cg|#m!YvPW;o96x_!lEc+f009b3Vw_R64>v@3$iQ7*mq*TDeS&T~)cvZG+YGKyx9_MNL+uqXT@Ck5gBoPn6Vqsk@^3*534E za0TLHsSnCS4C^xtyy=N(9AKcEX6>S(G%JS#OX|pk$8y43GvQWRINm#Ad~jzArzOR z{0mhNaegR0BQUp;Xv3)`EMOnfNAt+V61DVvNn>dc#El3Cty%2FrZ+Q->`IIs{Hq-7 zUMDzL$;;I=SR4bwz&lyWDY^>iyo#n#JC#UX8X2AxTDx+2`Pel=&%Bi(ygcQwH}m9W z7Q=OD{M42KTZyXHCrSfUw-$I3m`cRZZtd2H?po-L7Hi5lJ zQ9r9KB{TynClN%aCoA4W-~B3Cut&KRM4DLUon$Xs4=N?~KLp>evKl!wRQjs0&}~!OMj(p8ay4i2=u9CN3Tl@_jKsUC${-K$mb?ZMg&eG=6ju^9rg^#P z8wH817*4D>1gu<_8dFol@?fP-(zTrG9e9U`_D$q-E4eLBVWTD_*WF7-Oq$g%1;$y zmw7_n-rlB$&W zQ68!vb(HcLYychg{Eh@^bf&VCJVvmID3`k}R+F8m30+}wB}>vTsbOc3=wT)lb45}~ zhO@}yzSOn0DA~(l@e<-S^+=PWb5-IzbU89Kj64K30&odwFl1^PFaq7dEmX7t>YRCb zXbB>?q9bUaP~(g8TjSa3Js05~0kA^U%AgS~#p8@dO(JQdh?_6SN)*0v6-#_Xh>u+> zJ?>-2U}E9r9=abQkIdR~nnVq#Hr;zobKdIN=^|;I_nyw-&ds7 z7g9_Lf$LS2+Y+6FVOd;*Dc;brjVt0ZQY-{iqlzuXNjt&tm^4eR@eqj*Aa@jMyTDJQ zZ^PBsJK`o<4pGp3Kz~WZM;WV&1n#%zE&#+01aWgw=$W61&O1&lk5F3lWNx%Uj0?q% zR-mXj)Osalgj-G zMJdsxI~6&oqxMb&c@b}sgn)!J=b+nDTWsfT%h%)hW-)@eC>)gDbgo6?9U9PTLa(eT zVWX_tj5#>R{0{4s)5N`!Nm$8MFQomt=!?Ii>Q9c$C@d@&t zYte3PInjD zGpmWDJdKkAD{iYGjGfA^N=HN1CFVYquxDX>;t-5QM)REA`Q;voMXuth3jI<$Y`N3e}WmryGd zPG^h-g}|_rw4X;NsHHa&up2c2ejU0=;6x=#+6k z0bx?(Z@MwRF~c#r@b+->BF0>Q3!EISV7CEKJ;S4TXldF$nmY(A-#o7AUka zBjW8qyf9G&<05SmkTvey*~0QHjhl&xPDtM=#PZ0eB<56As4C z$!dlg^GsRkq4Y#=Isv*7Gun`4fuQ>4Ae3ZcE*|B=@)XR#*V|Z%re1OOeGha@WLt!z`SDeE`IXzB zz%rjAk6b4WN{#Z}a4FyM2+Pa>g|o)245SSRc2sxXWJPmDj(MnMWhhcM6l=ETt4T>S z_V;z)yYXhmpZ)8|JV^N8nHUKm7H)t7tW>nK_=R?$NRe3LC2(KGAkk@@sAd%#`13s; zxp>tjyPA%+j!X6qiuBklZ5E|bwF^&5E08TH|4t;OHEv~u9jPPT&mDIS>$>)YZG=3C}qZH5lvQc zu8iHS{^#y{tSs7Y80@KqRykc4GPa@%H*Zwkma7NJAd zFj1=R!j@Wq#nHU%irE|cgU=$-orCsef1~wI(nSn}Y1sLVa*kP~EY*xrVU_V~NCzS` z9CM|~e$&FSR?oVpZ%f!K{Z8|3v+ZWyR*NZL$gbXZ-8lAyl{Eqi zNg_!HGsBs~c3~xJHP(_2nnd_oP3+1|WRoo1{7Ea*9HSE;g;!Z>s^R8lU@jwrx%A8+ zcl1+b5T7+=-28E>#TQ7I57!vq+<{Pwu3)wBVD-TFju+o1y$tY_Exr1-cG+OS7oV)5 z$3LmB#8(6?8ZiS}{WKO$+i~CL>qulaUDUn(Jj~DorfH-Yt2#>CG!^j(EMs zE^3lXl|O+1I^ZW+V&|?lSK}V~ggFf7DOY2R*x8w8G=Yr}-q=WiM&)P5NAtC{G!X?& zc66ac^byH3rBTwZfuR{It$McpKJioCA5C%c%ca>BB+S(oqit1Hkfkb*1JFv5@0)$G z#?-kMNt!HoSECANQH^(pNzgsF>>~g2{m1OLSRiL(sTTq2gGRBBC*AnYrOsyX6yjKC zE3O#RAY>otPM9OmovE^b%2O?lX2os#xboxpz@a^9v+xxxQ&<#@ra&iO8KZ#iG<@X> zrNB}*P^2p<(enT?u2KfW>lzdEd+t&7dWyK%K7Y6C(Y)h9drmJ<$bia5<{&(dCc;B+&&&uyb z@(XFkX=k1;|MG!I zZ_NX^>hLoD?>&Yg%OgL-Vsvp?9C69*} zD9ORnphv8!>iM%li6}oXjw>v3?emTld9&R;p*>uftYCO#@_@X6_4q<_?!F>#%`dq% z4e@rH%(cuk-&HT)5>g34{ckJ`B^e%0{$h?q(sYjPb1Up)RI$CV#+U0`>T9_^*k6*9 z!>z1f%HJ*jD3*^;VsgdOb0VLco6kO8s61U{KDNd+?zMl8S=%C!2y2!D`+p0U3qf?N zE#S-hNx$&bA`IcVV_#l}kO>THaro-wDfB4GG1KK@)n0$flCLx;>`BPUGW8jp;o`Dv zc!lz7|A$LrFSj*q`wxzu6gz%?#3imrzN?n2PkZ$O&A9&*GK_l2g~&-nMCa}q;C5t( zlqy&24p>gL50m|y$>FoPz8u&7 zO3|I-BhuoUVWE3rEBzSdL(L#4*{Ntz&Ohd%+kyJza>k zkQ>A$f8;4Q$9Lh2&g#_#>rL1G5X{aGJTJ-m8UnPFF-(W&^B+FQJSC=PZT>GUZ#7MS ztmdz}xl|~&^oTPRRTn@LOuP?s82${VBavJr$}Fv{cwN(+JzdW(_(GbtY$r=>&NlZp z)f(9v_oae)ad-j$spWr9U~{F_10#BZ_r_|=%!4nuA~4J}XC3t)$jP~W!!VGk(nCVDi0Lihv-5)vFS2y~;!_MF zA)*Ep$@-;10tW3_+yLEi0|| zl(Y;yv}#CD#U|E1SkEr3Gf`N?@DQ7)7cqQGg>kztxPnDBvxbr2+lGf&B{6N6Kkwu} zZJMrEld{PUb8OJF$0aySG|gh7BiWpwxREyx`wy5g|A*86eit8sUvUd4>iQJCHyMLQ ze83SJ*8~2{H=p6l<%>-`^7&sZm;NUj;7;y?iU9z2QbD`LTA1496 zSVjCevsZ2IE-Qz%K;W(kQug(>?FsuBAybWb-X&8Flc`~=j|-&m@tq}5B4muk^4UN& zXUm-`kggoerKJEEF)!&k+jme&*YgIV#LhI_Z>IbQ9|zUsyRzbX{Re=3Q^G65 za;o-PF*tf`te$Wa&S~~U zbT;VO;cl;a#PbI2rs-tb*zK_5OxYY)HYczM5(^S@`B%2SDjO!;Vgd@{p(HK4ezV^M zm^W+7h33iZ>sauvwHTtA%508?al^VBuI-XhXom3zSuYk7N2F- z;d`qML}o)!fqS1CDCa3gMuw88mMl4pOaxN^CW)RgUFaEt2f~0+^VY+qzPChe^5Jn6 zPydq9%F{7uf*c+&1fpkh8Guu}GY!TFd0`c}5=6id9ubPoZ!_7JUId~fYQaRlXm>V) zQ6cUNU#z!OFFj{@6NrHTK?P|b_zMKFL?Hk_`6Rnk zeih#`U$P#498su85mQw8AGP3@RC;7HA#cJ6atJ{huvTBJ4HCk;EY{41>hOD4`f~h5V6pI8U-t4j)bgFZ2I+SU09I_vHGC z{o@OxUfyz>b@;>dsv~i)o_wvEmi8#>bL0Mvq21qSJQVFX;=lcU!iUd;KN9Tz-m$VJ zGvYvXYS+dc=RdrBf7brTOSP!}M%@|h;*PCuPRr{)ra5gdXnMP2L)WfHn+p18nh!Q7 z&kFC>Iq`B+>b0X8FOKj3`^4Mnn}5t1A9dsKtQB{2kNmap?$&Qc!EU*$z=(ez~sryiFoh;N&@mH82+7IZ9Qx38qbG;`3ryQ9enxeyJG&^x`SU$ z?GN4P40msvTG!F&-tzY^YFf5z-eRA%Ww$rqX?}bC<0=1fdM9UY^jub^_u@qVr@L>z z_;&|1et5-!aV-2X)_9Fws9(JyMw7`>@? zK72d4c-^-pe})bI;gi+6n@&O;rr&$aNU6?yNaIuqV{Gqtv^W<%iC&vjm z0Lak$A6j4y!)qh3Cvugeh2Vb}D{L${j`8r_tTCaF&Sf_&-dX(=L zN6#8t^1QpOME}XU!6i$=r}-S|4wB5|J=(F-D16+)8_(6gpBhSI|DyIJ-yfPVPJd6p z!gVeBV}hSQKUt9VC~B=yDxH+NwtH0S|uT8z-5A?5`c|ASq$TNrc6J@d`U3YY37wsR( zo=3=B0IQ9rCQo_~70a5heE&W{|F2(E{Kd38r+=Q`pFvpLN2g7F`N{sTEngG*BVdh9R?T|E*-1T9b)zFv( zo2k?E^Zv)V!!%1oKfEgW(t;6e4cjvzmSH^*rwFs=vytn+*S~P{UAu*|p3CMWyFq9 zR=J$_wRPHEwc~sDtX%$Z$j2^nd)?QFzux$b4v0%DsvbN$&;G5fJKVi7WN4Na!8zO& zxe@b}6QZ0Hi6Vd}`7FsDmnealEukSUUNGUSpL`fK{@xioi>|g?4YC`}4b3a>om!fI zzXdEL)r-LfO=9*>`Obc5p8zw6hW84>jG@9AUwXEdz;zCHTYgIUdQ z=3M!=Z0XCIq8~ScZMWtIb$saP=(uz1|1kCzP*rqo*f0hltw>0Vba$5`f^>I@NJ=+I z7<6}sbc1vX0@B^x(%lW;p5yaA@4LSBe{21$IcLt9Gkf2C?|WZ+X5eK)Tf3?2ZJsjM zbeCG6w%l5ds~tWVn=ZdrAFA+nWbjz73?ZKGIWL}ejyRqBa8nk`Nl@5!_8tsW&>ZGJ zz7OIWR*isah!7g}JVET{2t)5M6a4jmkmKcN&V+)-mV;MEoi5HV3LHM&jJ2qKTeGWi zV<#m_vA*D+6A=1%p>HCd4!N;Dv(ymsi2JvrI&Z#{yNWw$sV^WusgIMo|O&*Zjvb+h;D*M1AABE%sGU zR(@GcB}*1r8Eqv#xtxFKUhylXV4o6%HTR9QG=qSf(CFpGWt9%6CQ%B=?I%Tux~eBK zweI=jVxzSOmsPs#muE=dui4AXUDbMbTZ|eHZY;kFX)Ub8UvuGBgY0#$1z$@DuWH1w z>Pg$yrr=XQp=N8ba~*0|E*uY^WsCztQ-W%kbpPa4SPk^o#r_c*%;Wx6FugCZHEc->GmzQNxK#G8pUtHduT;#LbJZH2MJ_w_lT7oLl+ABD6OqQ>gcO@ss2Xj# zBunXY%_bCE-|7%;<(giYS6va^!F_wyCUnZBonEwqMm#%KC8(h>#g|0Mrr6&i+YYWN ze`st|ud^rL4UKA`IETtRU^^gP$bal;pP z7|S&rb`|XWxBOGLLK<>G?I*YVCk#wmi}Ev9$v)}>D?CMtabrQrcW|HDO|Pvdd5T&} z#jJO)7<1G69ExmzY>Kvr&0ELc!Qr3kd@MOg;rhtbE=WFjTa-eSqI>uWS7Y!xxVi6B z@`U}4&xbwNdA*~c$}QWnu}vWg(~He1>&Yw5?n1MRhW_rOsj!kijx&Z;ihIQT?Gb#q zS5{PQbHv12%TNIQ$2CD-{?|vLPhge{d=j!1%s;(gY2okOgcMo6xTvzu0|QOEt!UVM zxqN_&KpSm51gX!AQ**W&OB` zvZAZn+?Z5lOI%;oPd7BStXmO^^}57#q!5_g!Kq5{*T?t--@$cX?A0=coSm+^ewjGo zxwUO+=~wM9bk%J)Kb;Qt8#%e=tCASm;>~X7-%DX>w%|CfoZ`QOV=L}EOmuIt?cC!| z3E^h&_CCt6Pnt_H-in{K^vKR#%gi0S@Hlc6vKzY%E_XFby{=M#lmyLXVABwwMra}f zJ`%H@x#iMYtT>$_Nc4yabFvpCxN!E}p0Oy#?%Ock zG&bG8gJZB@uXk!V8*_f$niUeugTcT^eQxVJyg&IS+O?(d`ikb)b@A{0Yo^P=mV}hp z^Fr;$h+7@qXXiqKYm<(9K?@jxPV;DYaEAJPS;Ot0#$^2+F=SINa9vNewa)W{4-QAI z4^^gHR6h$cjvpOPp50h(Zc(*qxJ!z|iX*7dhl%yKR01;;m`LrQP=#Cp@_i^(QG-ee z?15W=slA}+tOrq8$x6kk;dtoO?wE8&^{!Fjh6OkAV9QZ$*c5MaOWDqayWd3hx9;}t zmX0mA{@AVfYaxcRRd9=KT;uIGaBulit=Z&ZQPr8l(Sak?(ymz5j8pm&5yjf%?OV&^ zmc{wyi@_<5Xdhic#vzxam=(*F%f$n24?lgu*N3+PAI>X0cCMqZJ${i8+`(0$0#p1o z2h1jmA&9^#Ae8@3_k5vr3t0m;(g9%MuSifZQ;T(I#^iUmUlX|Nx>d2);eJ`}+s3>7 z7{Xt(6XI7m5m!BLQ6+yMI#$`mesXNjAJ%bliyM8gr~UMG(K-o+>87)_2h%ojF`=ta z&xZ51B=Oqoc8&hf`a8I?>U9$VH~aKV-O)71s?4fQqZSvgP6zF8E8I_)-8E$cw!aC= zt+Agb${z?lyJi;@nfQ68Cdja2cU;ltn$Tlnx=Hll-KqAc6$~LJqTB(yYggWdzty%D z3xG^o{)R8`KJUL_-26Bd*avz+(g8FBwo8QonJ1H6BvE~rxBS!YTqV3fNxj3B2NTuW%GOe4vX;j)n?#lNxT(WNEDL_u zDgm+zbJs?d?U=H4x8hGLWA3a|2k|8nwe7f*mDi1}Nj~~(Ya>^JaTOax#m;Nvw`7Mp zF7Cwmyjm%eJ9R~pd3HtZmD_Jp$gO8m7@FMurey=q!5xq&zY}`1#yzUm8mPx~J_RRC zIn24ZX_lHMinS509`%3Qx;E08Zl`J8b`C0LItZbtIvm;j86v)MV$q&=o)W}0)u74X z-5oex*09fCOxJmvG>I`>M|$a@FC@Ed2oj!T@ZYo!VG>XP_&{m?zx62)9k>KYOrX&I zrvQ-y0g;K!Mc^hdH-BtV@9sAqGH`itiK{L2a?9t^V;tl7sxW0^Pg7{Pq1+=|+ZZh2 zx^!kA%xesf0Ca~{s;tooTi!FfkU-Cfppd91c!R=0MK=5YetK-2;3^-r>fB?Kr?ASfS}#vtGgFd*mU4^kR9 zN-yU{H)(4PdN62>*3Iqi1XGv4LV&q009pV)kf5-Gzd_T~M?jlUoc-NHEWtL_RFqL` zAdZ&0E$GX=lAo|1!uiV$23N(k+N*%^RNfDfC${P;qA0B9Pj-eDOVAT{q&AE~DbpTU~9#&|_*>EM2Y z!O9SL7z4&I07I3)gn^+)EB>G{AP@Nl#0iKPfa?M7u;_76#%*E7ff#}DGG7A&B7IO{ zh!X%@fFOUR`?RtTAbA?Y_!#`K%oS2bculXF!$SusDF|foYT+Bzz=*;0lz$*8&{JsNNVZ zPSEf_^6PMIxMu;#90tDuEV2`(Qg7f6z^8KoMIbH;JorXxSgKP8_}z!Xt#k=`>t-T2 z6@qw%7zR5ZbP$0{D_#E>4=gpqd?u zk$wHv7Vz9`n6@GA0SE%sFOpbH=4%kUkSBwPfW4_Z>2U4Y>^lK`3j+}YF#`B7xV-PN z*H_R`qUk;0pw(>}(r`1xX8@$;n$p{rn1m*fmiV6?SS@w~>j1bV6=mQDh&T8xUEv!X zSfKp%iN90~VvbY51Kjs*4gi-Rt#@Gowg9jW09CnE;U+iDHb|CkMl;ZVHB2$xZHJBe zo!uuTV7&!+G|Y=2vwel~48RtIn}l)4>UWt?5+I&{E*Jr0-HePDmSbQ!0Rw?sA1v>- zGa&+fEP|yLxgT<=!2WU#QH$;g^flo8fB?pSS_U+CpUf979Xi#kwSNP7HX7)$4Hm$j z5G@=Oc>l|oAeeu){u49m)&{M;%RoXc-2t$=;|-`WLNoJrCLC@MXphuE{HB5&c1$hT z5Y!6({?iW9KT!Q7aC1&|5BY8%R40Bd7}6U9mR?ZUA*E-!jL>hZ={RmcLIGvK_=JS4 zt^r0rYRp>v16Dm){_F!zfg(YsQAkC`&2_=8J*YSP>s64kzy{eXplj*&sA;K<+qoJ9 z!ZVPg0gj#eu2jeC*pi@m^#EuMQaz+XhytK#0a`I}?E%w1+jj!v0ZVfvwK|P(>-*FX zr8-xPz)0Y9;CX);1KtSxwt6$Bn+j3~KxjjN_Q8@Kh&Iv>knia_bTcyX!9+0w3_)$=Fk-F22mb!=e)x-@tgd#rv`EhH`(F>Te_kXRa1?4^1)*A!TfsW&z$15;a zg5=ly*o%&w8fbZM&>7eqlNXE|$eW?I*4DO=i|ROTI&(YMKf6KK&6T+1+OB6J z2nb+8fm!cws6pmqq_2lOCje%grQ7ARl0au_;a-mc9j+*#D8T=}3Ih81AJ$@mATD)h zEfJxmzxJPoWm_S?LsJg+5vkvaA)lCQjP#UUx>xQm1 zE>IHmBVZa(fMqu@Kms{HCs4GhJI~+n5ef-=#h;|QjMsu}3tVxvI{}u`AR!>;A@_&m zsII3kJ*qcr)Px3-OD&c^UhCijjQJ_xi?9=b24J#6U;b_hP}WMIuP;V9*1Z9j)k-wE z5wzXlf`kDX9jb!B%jv(OL-vHs2=r|2tUKgBj(TXqFmJNJ=`LAkKTlP@!oB;-?ajKb z4CMK+NP}_L2FUIIWfYbsp;4oGAB+floAu5`A5EHf%FmOHN(quRv-f2s>#Xq`B)@DW zt_FuNbe`O_hs1=W1WVqAgLrCNg-MbCB~F;=fC`8*pa2m0kQ!>L8kovtq8C&li|$w#h{=0I^NWpP?wIa61cD!fx9Wo2**tc2wwjl^ zyH@w1*j?=oNcbnv0bLj^h=>_P3XIkS$8$ncKk4t_Hg#emnah9n&>MblR7(q(^Cpuwy9tv2PPXT){5dfE}si`lh zXJp#o*D`f-+B~-}%C7qJ>Gmq`fS{r7=cHwI(qhTP9#7%ft<1ICuY;e6h2~s*z5S!Q zqDM9LkhlCD1)vcC+Cca~4g@|xWPrCan$=q{5nSf&J*9k{lRrQ9~KL`SYAZG zD4jRGW~kx`xsEw6&NQnN5||N`Sru9y`#HV?u?2E=00>mbabUgv?fEYu*gN!ly;%)N zK#i9~{Yby}NJ5miZZRy&r*`;_z;%IQPrz-55APu$qCY@{2iN<7%L4B|fO`o46u18wHY?6p^`nJtsK1y4QFiwat8lh_q*ROPTjVL(A^lK$ z_gb#}4S(;qBPON(vG&G4CZzA+u8&^Qa(e!u&=yA&AQ(Mvf4+HRXQ?`j?V6I1mPv6! zzGl|=8cXJb( zk&9efu`JnX8l<5b$e!`#lL^%VsttPaxaf%+O9yYG_Wy8C_$~ir@TacS|Mm0lnbJS2 z(apXTlv5ne<0?9Kqm{PQId%TJyPs>y-%1{cQ%+7G;Mub^4TtutUDcHHSn#MA6wNy% z+N>IRrZ2BZ#u=J7-~s{-G2BK7IT z?XQul`$;b-ONsOPqJ4FLT)A7bQE-vhw+|?M665?r*G`98HSHlcyx-1f=%f*^K}>yi zWP_>dm0P&HL^b6;-d4rdw%N}!y*r5IY{8{uP?+~@jI}0S=^%RHsL&#*oa|buHzkiJC9mF)AFjVx2c6*E@~iJ_SLfwQdJK`7kU4rcw?LT(WgRh_Fx!A$RR?K4-!I4XRujhPWtPRBm19b*MdjmQ0;h& zNLp1WtSNmu$d@|kiYPXxB23ZiH07h#snd&5?6i=^Y|#k15$0&+)btyk($5P!Yhg09 zrNDpZ)OOX_$HU$oGLH9Xo$CbECg^}g)A_Y|m2qHD^x_t&SSxN@9Y;GY%mQm}^3LHt zmDJ_gTgv1T9ECbfL+_&`Bhx#wRJ7E|rW}&zXU0waGKNR?f^uB+J}L&#s+0x4?zU1Y z-BY{zk=JWY`?1(ee133eO>U(+lOpSix!WWeA*AV~gP?pd)MheVMre$4_M7h_0nIcb zX|7nCk_}G8nCjW4AAMxHI5*CdL@`YnY?tjI()?--U#Q-^S~$+x;#SFfo2fWIc2TDD4J!+uXvUgUz zu%vTqTTUY{-L(Jtlp2{R9;1tdgU(|-Hgm8F}K(8af)AM4xZ z>ZYG-PF@Ll?)!p;H(z+$i{qqX*z6JFrbOW2D)F4zQn;rdwBpY9cGOr9mt&7SycXnM zq3_2pf^O7$G$5`js-$*!50_sC1(X*Ca=R(PXi%I<*3xe zmAorzn#9L4b34+2td*AJlxo>OJSv+*BdsuW-TqA{h317!vAkcGwCKyp(~dLu{O~*ult(*@{?i)XB#aH zt4{cDEsNaGKjhD#*{4^D9t3Mi?%T_)sp*B6&KOqCA8yPBEA|}ZP3Ns6OqV;)9iDS4 z6~?;bub|jGH4Sy0WHbfW!OX{JWD2)Y*}M-C$dq19${oZ;^-B2I5UJxdVMh{EOKCv) zVW!6!o~kM#RADkaxWQH5e0~jE-h`Hmp32S<{RT0S4KL!?=ZA?lveY!svcraTlBk-G&HV86d3dLZ-amwc`vIl3HH~*pX;*h} zZJ6l$PYY{)_#!Nw8yw;4#Z+Q4ci?@j-MV6bUmuxTU7E?2ahj57Bl_jf&+IkAuA3S?$(iqr3xIZze~;FPA|rlbUvi+{KAZ|#-ln9^sJ1N$Q{k~Q0;eRVgB8% z*A|I|@pet-ZC8IqQ$vDp7k#2b@Tv=Yxr>7Xv7t1GEjsZjrbZB1{2IO+)9J2~<+^SR z!4bv=KZeC$u0Jz4?%y|PHvvzG#-m_p%?Y}L<4m?aQW)y!v)3c5q~kFg!qf;Ia+xJA z{IONUzo^mM85jsMv$(F@)BSepET>tMmD6d5zl zomE`+`|?lrpY&)YT8Eq?6bkwzb7MrmJsrvqOVmUji!f7+c({mp!5ZPW81+`NwtN@wT8xr(U#~1r^5s!5 z+V~cI^ifTUGFX$= z`~WBZFwT;a>^e4NsczjXfxy1oJ#bqL!>MsW^$JW#sUQ_sDBe5+v6PfqJ%_rnx^HB$Vd`$JHKLkkwhcUuc90`}D zEz@P$$+MxkH~hPsyMr{7XPiQv{{9wKUADqAe9wEfE6Equ!`KFs=+OnbJpo?2~Pbi!Op6f3%r_5z>xyu}I6NxcIu5_pqqU zRj#7aBEmSUr;!;v&(CxFkm5~69!b2*yR$Vc?#kXFbF9gjECQaJCmOtunKJ?;Tn=J+ z`g2ZySNFM*RU!F#uO##-N%ae{+9jYWWRlN_M9Hi6fCu45_(qB*SzQkgBQ|nZE(g)B zbNb=OpxP3Sdv28H-8@r(U%k<>uWvxhqVj%dPe_uP)H`a-{Q{9J9F&|ViXq;8ikCUu=Nh3pghV+y=IWQ0?X;5UM%YWCA zdJ8{P30ck1lg0^`c{m|_T=3hseoBB_iBhU%?cJ9w3KIs;*&Rx3nFzT`GugLs%34m` z3Rx&UhDq;nzI#SJi*;5+kBT*~;QbM~#oS7(U4C{c#h5@{vM@!tqDs4J^4aXY_$><~ z_AoY?35T92Nn-lsnl`A#j4FjN^4R^&^#yHTz33Epa5W9*g%WIGDl4L9%i2~OtV1{;O*5k0>%e@QZnY`9C>>oK&>ROhmB^MNN}VY)#j0r0bYt^2)nu zL`?>Xri}9Rl)e4m_Hrx2uPNRfiwq}X)kaNvF?|0sK$VVn4BthEEL_N8o<>__C_y|! z-Fv@+CrBHv+sLfhzYs-AIVe-WNnXs`jo5xHCY8E{vUD@^RT-nZJ|B9?9o*CXQ7p5( zwDHH>hlo3v))-Sej$j9fDG>0;AZThENVY~c1mv8hhFha{z z`2_s5_cE>Q`r)Njx(B>YqG{Vuth{JciinErA99C9QIhcV={0S2=V6sef29n9j8-Nl z*6^4QKDNUpE^f6qB~<4>ns5@L$!;lcTP$7K&Z8pG(Jv%qGpQCy%K4)X=TC&FJr1}i z56$YedUN2o=UN_Z;aV4QFSq<0l2xUPb$$;#H9IeJMnzM%5pirG z(IetSn)^cyjl8Qd%~CYljrEyioKi&9Qv4K?bj-wdJjv*>7R9U~C{m7QCjuoL{M&Qi z@{u*+b3Y}=x8V1AN&g*{M>S5Z)b2GKipVdk*oRM?;<@5< zv!3C)k(KK!b4GAOwtuE%fP%h;CWb&;T$(s);zP&yWR7y6BDd9uPK&i`-inmDg+}lD z7v#4JX74T375Y|VA7;$FR`v;{FL84Dao8Hl@G$(njIyH4bb1zMXyn8j<6BcPLsTV7 zis>GioZa&I4~`m^r4(9(o71dl7qdw2PZG@ z(fsfs&l)MUeW4;@z=lLC6KHDAyLFEmcbHJvHWw?4&>+(&;9cdwlC2WENGs9H*@#Uq z@m?|wR3wvcxs-SrJ=LFX?o+I2L`#PS^l&i;j{3TX9%8I)JkC{*+3!|AP>WJJ4{v+YgZbQMRUxS%cGUF#R@xLeBkD%qegWG=pMm$PwH55a- z+Z$Eh1%sEE;Rw^lO|9MoDlViIK98|@^?V|j2dsGmUzlWe z?@xI;zWV8$S2=Bb>n%~j#zGmXW%$Xy8PC*w4W(Uv=EbJc7v;U!LgFv*Lq4eE!e!oz z>9ZK{W%S*z<;Sz;@_(0Eva!+!j-;&Ci?c>{`kdrEurwpB(*DR#*05#N{Frj}k?ZFD zsZZ>&SsrLEmh&W@vJ|v&AE+lxJiDt}Y8X=<2DLr#Pk0o=du^%Oj}Y%zvuNP9r#fCq z)SD0|thx|6H~V8sA(<7^GJWB_>P?=&gITPVOibZ5<-G>D3YLN$)#3FTzcpg>BJ6B> zPPI=5SzTEU_VhUu&vO231#%Ka)wcD8Vb*X6UJz0_6Nbh-x+SF=eab_{?zzTXu-o#z zg@=LOyO6ozb{60BiN57Jfi!8PA(;{%75!ydbP`JwSJS@3AcC?NJ3iUZ$IHg{Jo&hf zM-t1B`-JUU%wea}3d>9MQTtF(Bvsnjzc%OWAiY06jQ(TzH+I1E@*};P55!0;v|U4) zybGmKpR+n2xc0lsuxj1!U31yN49}$2eZ-J7IEj=kp8Dz)ub7EfM^|?=rg2V>1!Ck6Lc6>&HM5 zmK=v#8KrfGQ7n>x(p=sU8>LBGk2p)XpXGqNAh@2TVvv_7XF{&&){u>KLl&0Z6HSOr zZc#PHvnaLA^viAVpPqu96!}p0N$hN!<0f=JU#0$J$fV!u5lCN`k{BV+7F#GFG+K+x zmW)Z7{I}~hFSZ|z_s+!lX_CCoF>3#(Lj#C4H?oW#0;7_>(JNskEJl_b6Vxb9{V!J3 z$y;tB|4>O!#_DUn{x7rtj~?kS4Ks%}-+ZmuIw^_{EFGU8$S>}Y@Q9T5TC(0{;jH3H zWPcTSl;>C~=!Rc+tr5SKG%ujG9zaO=#kSmCP05gZU4v&wY;E%lO=uBOG$&F zZY_J+JGL=eyRs_b+-|+1D!2Gy!E9MoUHwZ^;br9C?RdGhYaZRI;?W~Vx#oQ0<(yL* zW~6+Gg*F`vD?`cKSQ)82k!CN_v$1HNM$s-}oNgaXE;{9!EDu{~XBF`E&`Hwz7}P&E zF_1H_^5n>3BfAXxhIy$e?@*jLMaSa>2bj>mOgtJ#&$!B4l{_0 z=;f7K)M_QqjB6v~YhP|5qS1MH<$c%=nMbzs&tuc`Owi$pUCTOmKj>)};A%PZPY&)K z)>yQR<6ghYa|j(2?0=N>DWHp?_g51aS94r?h*DFj)D3)mG6T^~So7B~lO z^_%z^waQ}*%Ry-2trQta;|JsTa(8eKBx!a`+rpSya|^3xx7;}JvV826^Q4A8;Igi% z{%(~>XH!a4YFYhr&F6Dyf_0)~q%g0lTZ$R#x$ayH0+443cXKehV%OZnN@L@Pcr&J0vDF;)q%)*P zW)9&a8puDyg~p&({dl8(%OGRlw{2`csiBl>{+2w#X)Q1%o%ttgbXEAIf989`oYWKr zF%_&_c)-lSD!F{)6SQt8F72Hh_9|>tw%~T ze*biQOPiEfA&TU;%h!Nj@t|*ALRqY=7P7q*k>)I9FS9zcdwL4jw5;f-CdE7j#It%Z z7*ZE4Bc<0p)8i-PWvkTuHi?8^YYf}%Ju}{6^A$JLO)fM#CPL1?HcVSiIyX*iL{V7e zBTMJqkBQJs`0^D@HSr1C)E$ZD%on|^Z&{S>wNLj)hfMmAe$_oNzk1=L{yuFU0YMqP zI1673*i;tnG(<);jz>;AUbZohhCSLu%0Q-qC>xE`BT#u}cXaXUxZGVgP&t91;@thV zQeiM!<7!!YhHgmAdprFOuA}|U>}zHDgn}nS9%38)(iGQ~WDYF@DINjh+^Y-kwpw0K zbkkNjro@Oz=q{MN5lBPa3W5)2k}$IzUw+Dj;G$|Z9_>vT{^SCofnhT5{tZziN z&Y34Q-wK_4LyJj~)GwHN{CVoWn34(KH5$e13cVmq-2jDnG5c%#<*cX13~6fSKl{5+ zn#I$um(7DqnF|`*OoNLX=J0@jKf<8X zb$$N$Gpfmh>-PnVv-vG(_%Vx{>$kHWdyQzU9$n@s?quTmNH{3O_jv}@cdj4uWGMT* z2}p)}q%pQsMm@8b7THR(%UP0RcKUnyT0`05^cAx><+-sfo&nD8ktN1evvmW$yzv|= zk(%+xG3U0rVlXBcP8-epv-=l$dS<%#SOwdRxl#RcBTKAE5#J|yyT)KN1~^=4j7J@Bb2w6#6yf|4DRWVCB4mCc{y;U57wKrs`K8 zchK*}bPOwHJM_^uC_ef0UR5rV(QLR9dg#I2s-&S1Wit@`I>Y4&q0ign z7d+@;>moKpWCOl`c*RnmFiD3->Nse^wFIS(V9{$mgB|R!3lV;yp`s&?hbQfglCChT zt`Yw*_TQh#LN|y##Yl$)9(l^=8uP|K_D(QXzdzB_+0{pm7!f}RHHV!8!Th);SnY{) znlB?@)bZ1Y@vIoo;6%|CXhOJED!)+vU;O;rR_uj>*d5%XlTug(@$d`WR}MW@?a;_& z4pJ&^`onwvb0M_J$wW!U7k2FO&9!d{{78zoeBni#A4U!}lH<{oT#$+@phfZ$=&?r7 zO?*QTHFH-}!1-o?^3Hq4wih>;fo($YaXCYo0m^%ddAVxw{a^-WA=3Tz7b<$ae#{>z z+gH3Qm))(Z#LOsVOf(*x*XMive=OZ9!2@MvjR;M*dy!5@@d@=rfu86XVbR_o6N zI_==$%sJIr5Z*9V?n}vDXK7c(E0K&p1y}br?7hf${qv5brX7V{pLg=57%CpF8>b=D z!0l0OT8yP?xPWiwtOepLL@1 zy(WhD)Db<^i#K0L!qGEYM>p)$H)dF*p{_Tp-RV-~r$!PhzmHhgy@#egS(%xwGipzC zhA3AxSP!Sshy4{YbI8qEWTP={q|2&3<}laMenk4(yAl{^rgjAm^`#rX5jGc!f0mc3 zkvRGk19y(j8=r~yF=;tP`NJ$iYX&mb)Xn@ZLD3v+ydSRX@AJG&ZIuK!oQKM=zMPwK zE1|7ne;(7r4}D=brR?;!+Z%6>rIgatf=1<|+!rCvh&7SO^*9_pt6XOMPs|f~G<0(J zpBd1zKPLSsX-ummr08bUF+z%sltEPGryki;75fVJ33of(g_L6J>adsAEvA@9q1}jK zJkem*5C_ktj=J_cf*kwU=NS{nwsh%f$6ma91a{73M$T>OzqXL%zTU%OKA}L=G#uFW z?ADeqLl$OSitN#q&^>SM{~k(Ew0)012bxH}&}Y1+LmG>EL$C7@x# zxNDRhU$YJEnQ`|>a4;u*a%}0P@j=GM@?cR@x`SIu4r13((u-q>W3l#9no^y|+Pm-r z{}$y({vDh+cNa=eHgaltfr3y$u_3m{7S&`BjH8h+z#xCl^i+lX!)CX%8So5>8)5Dz zH!y|$THW$RRkmu2Q8Q(ucku&fqb4wkXEDqKkM*xw>#$b{?;j_3#aO?EqS?MWtgWX?x!F4ij@(=<`1oDrPJFD0NFu-}1C~2`Fs_Z+hNp^->|%T$2Z%N9!UoN9oBM*D>Vh z<7>jp?EAcHF4~KqZ=eb2Warz@XI1)KG8#nlH8KW62V2axN6r2X;YamTJ!P)AlOlCI ziXovmMIDngE$+cw02>)hZ zA{PD793GX`g>Vdveb7rEn9TsbItkRKJx* zoa%B2B*|jkEJ~8|fBo)4qMj7VoJSFZ*IPbL?kLZ>xeSSdw%SkKvxg)06P3vlqB(o$LKbtg>}qN_9y_D8H--uR3s$#>e6fQ{9&@-jTRSba*y@xDj= z<+)g7(KVj4851jMUMa@OLrMqbPuPTd!2@3X66r@Gz49`sg_~_UCX)uv%%d{e?hZLm zS=WvpDg7zs%p=JQP)~grMG!0UCr=K+I4&_p5gAE^eVoALP{o|kLA3&#E5W%bbp9cO zbUv$|f2mBi2&IMkC#>f^KR9zw8jtn3zJ4l3KV`8LXDhsr6Mu{3S*ao~d|?vr%|1Sg znWTLH2~i{Whtx?QEdfmq-NmQq?AtZ9M^A1l{o4H!7CdMwZXZ|So6mT;)bZ#^u$C^A zjmhp{lL+7!{_%~Vl`6|X+5UQYjwMCchxq%IIcuh6P)f}FaZ@|Nax1Bz${n1;x+Qx- z?MMhWfpAw;YbUs|+BfbFF1*pi@0do>d)A@K^QlWf^t8Fov`9FfX8lv&@rE`0lQ&(` zG@V()vDqh_{y2$coQIj4aO|lC1Q%2{=dEJ0#zTIp56(R;Mug_=NS5q2lSZ0_-7z^&0vIv#vEah8{c!0*s+U(2rXh|{X5= z)3=+uLW`Y~JT9JTD=D}VUV$d)LH%-+5?Z*Hx!PjW)r;x)92~j{_yq$;QJ3iFCRr24 zoL}B?VC-)dlwTR3Q!bo5)A3yInp@4UA^xAd}q9%hFibpH;n*im*x>U%WPJ`-n|uF|tRxW`=E;6fr1 z4_|_7zQ*+slB#n@k3j@Y$`z6N1?jESYy={j>#0m)^HCaJ3v!3{!BqkIX`~1}pXR7S zajf%Q(|74C%*J+}!4sG4{W-}Kx-R9Lwl21QICxak&XR8*&b-|TNte3x`}e&E_8EHj zXOQ9Os=T7Z&7_oT&^JklEgZQhId%?Fa%g|TvKc(FL~$|MAC(h1H;4A*_fO~~9q1%k7jROxi;tPL%nAC$Qqm^Tj~E)sPGszr<3h|%RjiJj z2^k?|3(B=1#~g{L!+z%&y-F>^9EEFWJOvKM!S|_o9hrK@Vl>&;MonCAK1NGP>*OeU zZ~Pe$nEt-Sh?QeZ!>r*EY;2jkf>y~zi|s$Iz=N>O!kpiekLnt%sUw$#TuamGy@C2b za`S!`SMK)_gkp)+`92-IrO13!#m{Fb)DM-?7On;i9uH~PudF=v&Y9!%JQlq`OZLUv zxF_w1i{)}8wuc;IXQXCNC!6S{YIEK9V$0Ced_dqdrh~)2-(iI{SA~hkcM3rWUz3Sp zwVbXWqgN#cpPj$9P~;BI-4lMyuTI-81TTBCRV_t0YBh2QoAHvd5Wyb@E`_EP?W<09 z6DKpDj6gIJJNHvL>1ASO;tZ!>E}@2x*XhG?BGgghC!xeJ_$fgq6WOdHtG~>k<}O%s#6h<+9P{%vFTg zT_Zh%Q#Q=HgN=J~1*kBRN_VK&jfv~strm*t=7z@NzBk=3KW=z8>?2~Ue=qXm=kC|{ zE+R{d?mPC`z8PTGn5mkqIwe zn3sj4D&B&D{Yq{`$vO0E;S;>J;+atTNigxX6A_ zj*ZBW#4w~DQfrw|rj}IxE|Xqp?K3W5qs6WeQNxu+;Eoi-^j(riGC(DdqWvs-CR!}9 zvci%#rrh_C@x#vd3f97SRq=@zzA+LZ$>k$pLQ_qo%&CIzE?uE2UK65)Es-ltCs!z< zL)}N#|K{uYevxJ3_Ke`({Pz;Yht|?peJhhu&S(+vrb9BE0^EvijGqrtD3!G^>%OI< z4e9ozc4vQH$YF_p{i=#Uh9M;COV~-UqN6DO+?M*_z34Z}C&5JI6F;Ix89skGIvcl( z3N;>}V;?P>mz8|N7(4{9vfzxTg zP6%%H6jLR?R*G@M1Z`BL1kzA`m(bIV57Xmc_FJC^>2YItlADoh;CRV>`|`w=hK!{A z<+<-q`b*Ugj8&|V3N`R>8nZf$BYOevU4sm<@bC(|1wn+iO!>_A`yvPf)R@$yBU^T! zC?3{h(zg^~&?o8Q^-;pxLS47G^`=MO}0`K`b|X%8V3+9AbUrkAoDL&Sr7s^%K> zhzs#e5VgOzf|gJ}500cbx^jXshy+IeXI(tx;$ZmC+j-JcP|=~QS4}Y>8sz$mEY2@%R*FQYs*6&o>WT>Bd3MyJ!M$e zc!d*HOjRk)9eeQ6da3O)y)~%ae|j?nyJ8e?l82l#jYg@-U}TgQ>jl5kxRMjNBDtqi zGP8WFT-x7xJ9;WIUHNGdzuezn4kWeZm$GWpj?`IFuUPD(!^28mM0?6e`oImKI+au( ze00*La!mu$-{8J2c+TwMBNRs6M9BnAwbzgjW6;rcqmYGH>%Cx*ds1WwD$jUm;?zxNm4VAL%XV=82fi zcGWh|r$t=N?xE$AamVF*8%6_5=w77C1pX0N9!y>1@3oNy*Q^M=N0G9k;s;x$X!72{C9xI}Q^=|1R@>q%&=&c5NLbjL!@rEvOJ4>@K>iJ7;(_ytC)yjs&|DgL zl~WYk2!qse2grvyjh*JXO2>FD^>1eN0fDusBH!dQPW&U z6Hs-Td=T|`-ec50$@4WeF?N*J^Zbo-*O=aR)~$EM=P8HRHKO*-*+j}pQe;#e9B%FC z_c05KGNtNPP{tMEkvj1j>wThhodfUSZ1>i}bZGh>?|9p2lBgsdOxeeVn>H$>@0GqG zH<9Sy%WF>0Bi0#LKJa^J<_?l1!z10#F%)PRexHX;XcdAm5vrxy?H={>rv|82fZ5;NXF>Wu$HIsgE6rLmkbCMTlF!jmYO7{-EayCuIOZ!Z$T*_QBB@X`d#!R9c zy{EKOp~+>Elv(_3L&=RBAg{&Oh>!;>PO8=4mi*-7(ju$5&Sg$S#Ns@hW}#f**Q23Q z<6UGbEsgp)Gyjsa3ine$1%II;r|a?Zvqe1 z|NW1@?#wl27+gadQr%&QqK1e{H8WH*mWURrcMZ{^Li=8K#-vfIF(kA}v@g=WkEpjw zrL@aZZ}o1^TSaMk|IZ!t?(_Zs9=*)m89C>5&Uv2aIj_6+wtCIqvdtua^QO_IEqhmA zC_DE$K4)I1Pp?nR+UR^Np=t5u^+zIxJFU0R+whkKp4&OouKSRre!+30cP7_Yt{Bp5 zY5ls7Bi5c65!5L$?3uN(E9+vDX7R;i%)nKbDE~lRX+{SxUuu^ zxXX#Ri(YSFy%;>b=5F@+jm|dGc>?yq=Qgoz>GdV z&1rviw$ZWgm?eAtGkeX4=l2g-^eazvl^xoXG~-Tx#~wd-ZtvxE=b?jO4r- za>==Ym%H~$r=;cYCVnGUKL`l!;WO^dy=hm?`ahjw{>4mQJk`y2y{*}?#jKuR=ld5r z6s}q=eo^(_`Ol`HLlONi&YU&i-3-T~GnrjJM2x)a7PNLmYjoVrb{Om8~!B)>(wg;iyGEqKI13-_^^1^XCN zogQV|UF|&j{o4(Vj}HHA`Jr{Hon=i zWabu&GmOf3bCttlxR}rS$ld8YnPYJE{LiZnuYEj5`R#t3@qCvP0}d~ExcBS4l?$>* z*H14Qb0j8i>hp|#Y7^ncnn@ETq?f;pTd}0};`_W+BSu`9Fnh_UJpt;B`QgX5d(BE| zTDB*@OGy8xA-=hVQZ;|nnaa6=-qBO95t|++6;AgK)Xf`~=+e+oL5RjpIJG3nBll_( zXOl4Ic<-+-^^)0_d4+a5g?FH5+QdoD6_eWh*&pX#$rKj~pSD&*I zcWw{p?CI7zYWvZZ%==!K?=_4aJ*l|vyTgYDSGdmQB|m?TwEFQxAJ+$*t=D_+ioV-8 zURKNec+z`t?N`6?d!IUUuC_Q=-wjXLzvs#~GUOZ6_C#@)zc$`|((McIV}#r>bZPOt zkK4+F+?`Vcr)j;}*}1lzsc&jGKmAJeN&2V zJD?Fmv;Q2oIgfe~wcKs@_*t8;y;b&d?A=9t*Ddb*R^bF$)|q^3ui8@)Afhc0kj-nhp0 zviX9I-Jks3Wo~-UKR@-~p6xxdDTj}&r-UpSLm{$la%u?MyvaReqrVlZw}G<}PbIAmfjtpG>#E zAMV;Yc*>`3vZuSw_KB)}w`EFKv!`a)e0Che%=>S$yBYh{q~d1YkLl;nCl-9uMKA6* zv^g=5+Qgr>!6=21yVE_+x$sW6?8VwQxp$ea1#t-t-Lj{DtFYPCB~Td==&<+2fO>gF z((@1mGnT%$Q9lSXHrUH{N&zzkXZ&I!G? ziR|V{^;HYmH+=68oG~S|XMM}V10Lk=qtW*&4{gjVTrqOUV9&LO8s6@^!^k?}^LD_h zUJTa3rZWM(es+1k;@d~xvz~vAW$ew{AC;Q=qU)v$t*W(x10potud?Av*!%eh{>nde zC>RxXKYzlx)5fOT0TtDUDyCE?F1hzC^h~FvBW4fbCp2$P{$wQidcbj+LKuH^m3>^T zrn80dgs{Ukou$u?uPwZ8dZV%MzCE%2rR|c}m!!Flw|*8KIJ;@!c28YZ=)Y)QPN+?* zzOKgj@TTQQXZL?nP~=|7EpWY&VCLkg6Bb)7`D01zSKg3}d#$$a2fgty&DE_}T83{_ zp9owrcirq!ofnLqe!GhEKH(4b_3OtTNA$`GwOpu*xMAEQZp_?7bB=vy*4>AmBZ4kh zUFj3y`Y|nVVN}NU_;E`etaofYwa+%wYEA!;*>6@4EVw4yxxvJ9gZGdfJKg(jxEFRO zgI#|9-qpkI4Z9lSqkA^K-Tk6}Ykkm-mZ5Gn?>xWCZHu>MtRA`k>)7TUZYjr4+>er; z*_&p+;m6k4zvmn)sdTD#m5jOP9+^F2;``>L32@ub`Bx9l4*oRM_~o2WH$$fnzj-!o zRP5b(8J(TtDjz;nSIvg~l&%C^F3W)DXENKan}ze@5Ij*s;31NXr1wwKm&!hE6#vul zAPqQB%3zbK-v=qd33?Eu#*)ES61ghVu%+YfT6$B_ds2oK$KSX6hr$lzmQG+5O(`hP zj=#6p*=esZTPGK03w6PAp-%1$KQK6LZ^D1d1+Usf{`V?2sC0lYSQxG_jl}sgDCdLY z>b?I$%nANu&LO)kY7m*M6z1$ro6L&|mggE|wu@}vmVuf@mkg6ne*AxIuw;+{hOaa> zdB@}L<03rP*6x|z3)aDL%~ubJ?}tS1U2n|f-+&o6mz3Wv(@ohW%;3@Uh9MCCridpW z+~yO(fAcqZ=+{SrRB_=pF>3ZRvqfUFamV8y5D(TMPTz@}P(SfaFc51vc#++u3Ik+ef zHR2`u`pLH7|1vrPWjeT1J-zXN27LBw*FYp6_}|I5>mrkp>aH~2le2%!DYIcrjdwjY zBipVKd6ewU1>bl$d!)6+z%X;6wnKvejA+*fP*TCHe}hv8mT<9(3=lv>OvmJ@?z4vF z$6Fv)(fyFQ%n7XG85Sva$1}zhY~jqnkEiT%27v}|{gNxx@!B=O?=sAz*%I*6|Jw)+ z{WbV(29tF#;I6`ACfDwGnRl6Y%DFH!rMSP{@%R{dd`vL?Po66Lf4Qm+w*uim1~UjX zA;H=#YPZDzD);vA*c3S*gs>>2-Ty(z?jOVix1{Ih9NEB514Mjpt$Ij3LiZZWZ_Hus)|#6su6Q^@yycJ}zsdY1Tqb7+ z>!dQNT(6*Q0Fi7-dt`pemk=A=5(Ttb?XFX?X*My8 z_7D+DqdjW21L0VP%;wNG-47X8lIlUDnby(9Qo+B}v?&m(;oZ4S7on3G#7l4~K+cj@ z2j;2T2bkMVF!1g`D2-(xjtR!wW56t&;}x^-W}E)H+V@7C^Q7gQ!czpe`Bys;LMQ8Js>8uU9={)gp2($ zrQLaLI>%|Ggp!2|yp`z(a<3ln{uhoLLU~9j(9yBVz5?=S72r#G$7llvN2oS9QwL@V zKm!Cv3Q#x1#UPqSx{9t3@NPh%+H|BhPAEc#S**qm0O0|9vwZnF#f@=WxU?64DKKo% zDCZd9*H(ct@NBv8l86Wp(4bS(Qt82V0Mr@u(S~;9mslkLR!zyfx_<&zk7i_>8#Cm| zwtL&?w8ybFRa!&-1{=h8*e0V!3}69uj<%+4 zwA(}|K^vh^aJ^?-h6t74h~De2C_C;!$EXbS{2%{0GXNHJfWU{~MJZ3p7fL9#h{ifd zR>S1!mo^>rHyvY8p31=K@uVWwo_g?Iff&K}_NLJY7}sIWFS{VaAc^EUFht-fe@Cf> z*}xLC5quVS3KUSZT+rGf-l4r|kU+g;;vBW*u3I}$81eX|R5(?lZKp=z#`nC2TwX+{ME_zR{J{Ov*FLUS+ z-OY{<3J-4QS6UMkDuZwi4LfHBp(AoYX$nWE%@Oed3@R?pClnGwVF~2}5Yd72c0IIK zdVnH{74#4H4tQ6XMIRCzVn!%Ep(}BwJBI%(f^7;us-ZDagF?mCzU*LuD!3F^5wVa+ zA}$l7^9dqFXh0Wif^=!S6P5HQa2{mseSgO>2WOkb-a91No0il!d|X?L1)_h`#*+fc z!Dk>LLdOfvhAuE$0VG7Ip~^uzu>%M_=xD=2o2qtL7zinzoqODBOp!UXK}GlWM|t~+ zv*V`}fQpRAzxfa3d;Vu1*VZ{0&k#0pgaR(B+n!+zk;qaH1Wu|Qkp@g@vxWwufUPv% z(q<1B3Z?~!;_vOz`?JmwX3+<7k0%@IQyHj(p*Hj?zZw*wUd|E8q=a5Ng;3XL`}$$* zWKtv0g3Ca%0%(EGELt0gmcSOg!BEpLN@EqUEBFpN;rn)5xG{9HCK*s5P|~{Seva-N zd2)ETD^x$db3l1^U-oQ_3Ly0g0VQE8hyVq6jo%&~+Gn(3?SoENhI5f0GQfLG5p6&! zU6SYx1Ip-4_<`gEO~Om?y)91bgB%dBV+BO4JqjTFVXgw0x&Y_nG`{J%87z>i=RJrLPjpip_*Z%n|3?KUm4U{Ip1=gIu>3|6dO;mL&yVD$Esh*UdR(ls3_ zl1AM@2W=W)bz;y#LdTaeL3xM?O}8S4pV2+mQ16KBU!5bZLnl)J(Qs{rInaZZ2z9YK zE8)#yvT{Bipzy>Ay$B)$5161qEoBG%kE_ z(T3g;incztbj-nV4Q5GjS4i3+kRd$UFNRHeEuyZ_HmkEe71|uND9Nh7ZHhTpr^xW- zCZlAAFVX;DQ^b0`1HDQ!lvByClr-q1`9CE3fOiIPrGI$vWGmdDCDq`4;9pTTo#?=m zNpf{YdJk5#Gn1N~RfT<2&(TM@%%sC{6{xHJI z5!yBAsXrNJZ@{Q17D`vPus%bmEy*BD)FPsM3sW1cQNaR)YZ&V<^M z7E1$4@GB#5DK0+F_pY#5i0zNEVi~4wkZv%81D^%LY&N7@uu7&7ZecN5b2vGWYUx|d zk$xD1%Px1M97&BoMyUCKA~mr7e{-j!t+DjRZHgYKumikcZ&*YbG|isidS}W73k(??xcKL~m)SC-iz!Qw}@}vO8FU zu1%zb$W5m1!LEu(x=M6ZAt-;rcs96%C+FI;m{|I1HHsGHfWP(qSyI{!Nh~R!JxshF zB@5UNw%}ufE9hA(*<>@k0v=b3>`Eh)?z9JB7;*>zF5o~twNgp>98Zq=CX;2a=Zm(H zrH)#CIiGLKepA6@l6r|TA+QAhiugGF26L7|Y8kij(Q}}+v^3C0*J?w4b?!^)`Y-r9Mh3ZJ$8WK z*31~P2H;FV!O}^mSW&tpD`#d2n$tJgkJ+EMDA^BFK0^%R1*RRw@@LqxNqs$TNjvv9 zNN5&`nYOTJfVSU&U<2`%Iwao@n!%f7w=^3;-fuZ$jb zo4O5C;t=m~#W!CLakOY*b)BB;^B|Dz5Wisaj@s8(jr~`6NK@~dQ3F5SsXwNV?Ba81 z=NiIm(VO=zLl^W}vUP65d$}-T5G&>0iYexotG|UlzBBRNvHcT+4&U=`o+>|*{YT+& z^UWaxN1PubKjMy!GkG#`a_nn0|9$17FVSUIj=sW%5maui?R#-e+vEt77x9k3T zxqAPbgFhBy^Lozf_xkmKpTa>sj2)BHx2zAH=NE<+8E0Fl&~U;Ns;4ir6meG*B9Q}8 zZZEkwAZ^Hzb(&re$(Bp-ruP^!tR?+B*JoPTK zo!%cS|A;jrU@tbNea2)$R@ib^qa+r4{GH)3ySArVE=G+2@<)J=Hb8c^tEcRXT zsA+L^<&uVBf4;-VGA0J{%?CvzbhW z$U!6$^`{(smHLJLRcGHX__6tn=j+yPC-x0V|J)dH*Ya&sYuP+yo_?HQ{&AnG<&$bRN8=igcJb$^dq{vfo9yF}C6b>O+=_d{~#wsfyJXK|=# z`=E$d)bt*C-v^B!!~Ayc{s+xFKTYM2ssT^gD-<*S8SSMzN*p09q(z1UpW5Yu^b;=VJzFYe!ewn~p0Ey%$HwoSb9 z6|Bo0vyIiLKhpau%eWReS`!#5p7D7ycJJrJ(D<53j{9nc)I}`2@-G_tc}G{t%s*cK zl)m=Ab$jZ>-8CnNTP)mt`pMZ(eS|}o4;q}@bc8r_=*{vCidQPrfCneVKkC)Q_@7lv zntSYwAA4b7hQ$Gk=cVC?-Y#8u(eZl4=jD(6o?jZC^privim4fX`sb7f61#cv z%bHg_Y-(72{%7UY`3LX4SyOD* zlr3_3ZuWBitfw~1M_0o=rE2N|jFznb_C5G{Pq$S~lf>(m%oi;SLrE)P4=3Cy3!(np z)!*|Fnv3)s5T?{V!}YEYf98KjH<2=>t>x@Y5ey<_7aD$ z^QYFb$G@^;-qkE`){8&b4YZr}E&2uj^U0qXD<{laaqH05+B9$S^@WR1b>;{6eE%%E zyFsz-eD_@+&uu-wBDd<{_cxc2uOBnH9?kJ%Rv2pryP$4tUa@Y-*1sk=jD2_;o!#HCoU6XKI`sSD zk9Eh+PW*bl#q4I6g(oI>=U3nSd-uavpB18z^bfl}4|*7~|L=9T>cT>MT&!7Mv@})I zt%~=0!0ZR#FSm65R615L_T}p4hTiIFbw+w-@}`6Hj1#s%T1=(w@uM0o&@I%kjKuVo zN^N-(WQoX+#I$Kx*I5HA-nFufx~5I8p7%5IlvVNR&g>=I_bk3{-h2Dhx<~pM-kh^t zy{|_v81Yx-*@UCjF9WMjE`0x2Si=6+#TWNBuT2_Yb$G|g&kfTPi?iQ%{zLcu+yzsy zWq0wX?3%=Cg7od1p54GKgSwuF6pDahc&r~{2RBVg_HUWU{5wUtbJx!^X9||g zTiJYKP_H*<_g}AQZA0;@nRDV8y#Ik$Z+Sdyk zqJE~VJR4f@^lUhGFZ2_yi~Hui$zJC-?_U|Z{ngY~)AApCe->9)?oP;X>UaMBGLl)3 z7GrdkDE}Af5z?^d?y!>nFyejX98=JpB8tCP| zaKq};J@1>x#Lws#j=6VnR*&w^ zt?Tn!hCjjkoRLflx2@Q=s&2=T(}lf!>hiXYmtQD2=RDf?s6MjC5V50FyHvp z>v2ENzVH47*GJtEtr$xv9^V!mtn)U$dSPc;_ZcmB&pIRxX2dcMpBHsI%6izjUwopn zWE<8fwk;_s{{ls0$}$Dyw7J;R5;{w!pp2U$g}Uy`3N5mTU-)r^+K(?= z8~gU%&8J6)H|e8Kh7G^>^39j0_b0d9XXz!~|6a`NF=$e8bVmM)g^61iYPw!MdeiFU zkkBeSFOLdZo6HuS}|nM)-y|Vet*97@7nw4KAZ7-2iDZx zu#$OwUIA7wshHz{nC5A`0<{Z3o_}s`=<4+Uw zT^&CjE?fIV)OFdmThHn~D$GB;U*V`(u;BZo`KQ+Y^|o6{UUQGS0t?3*%NdoM=Y@T< zd;Q~Gszt$tr!#M?e`vI9Tb+8i-Jq%8Y*SwGV{#?KU$1^P{sg~zzW=H3htd*A_FVTeTkjkGS9tX zf$-_Khm#bqzfU~3Pq}>crkn2=W5a&ze)j3wp=PVA1yNTyOVJm6W82dhPXpNA_h9vF9daNGx@6Mbhc&-=M| zW2qR3=E3z{Bd+i99sTvmtK#k_pL>jc*?P8n*yQ-KZR?iQi=NNC z{o(eXcmBFzJwM`03VK{~%YBu;o5I&mQc}{02D6#TgImz*}Hteg&9xIu3Py|GvjpVrp9>wtf%+-JU#jCuf&KCAAWp#%RF=5 zqjg)W`0I`3rv}_=jxDZ9S?O}0J))&0xoXhLTmCIq&L2AS(>A(_^Jr5YYsk_Etrw4B zPhz{B4}F(>H-6ueilNZ+QOJDQRAVhH>6Rryn*p3u&SK%q3}u?nUp7SJ8sTs-cX^Q5 z>l{?}IqSOAEqr6ql2cV%H@|j!_m5fAyFaho{`!2klz}Zv!@6|O&aW&<+28W1WbW#a zV?&sGjqde7ZZiGjfar0qUm2T!aP|%yn+LaT_Zk(km0~{i8IEjY%#+U^FpgDTNU!Bi z+P{DFg$Ma?O8cKl69#-ezJ9~vx(8?6Bkr=`A~uHsLCX?r^1NQRermnmYnRUDb)W6m ztGdlNxKjUf`kU15g5{Q!qWrL9-q-sVD(c;rR6=X8@`Q2ay$2I3zuaAT^a6N{jZp9@2tmiCe)JPD5#i9U^Z^>*v_`hP5DR!`0NZj^b& z?#IBvAMwYNXRxN%M7+7ptUCJP(Z$qzTM8F8MAW=_x53l2{K2^|Z$6(HRxsmY(91;6 zH|vwjm#n)}`CK?UV*H@n@0Y7S?pyus`XtS&jQ#U^96r5<-Ml{a&BFWNS2z1#G&4RK z{^ZEK{Dl{X4Vl}+#O>uh(;XK-3x-c#5J`;P9dvQ;>6lyFjQ^bPv#+{G-p#sDkEMSM z+*LRK#l=36JNxwrSa$G{Z}08b7Er8DM%@;USn}?}3T12jxbt>ZZ!M0_ypZy^_|d=} z@4lr4YOL})hxr|SF*}qPS`&IK!fw=br%PSCe1yev-}^~(`u4YlHOzI5A2YqAME}ef zR%#+oOT8PHo5J$f*kh_RON)czJ|#2LHivG0hNAadkVCR(oqw?8;n+P{FI`9EE-^Y> zL^-~F^(HeEsg1p`rawo_X`&4Le$0(M@H*XTn{KxmEUcdPOmp9M-`UmGm z@AG}D>gGItw02tGf|`(#?;fqVl@ktE)9ul{?-a=?%y!<%J4Uv;nh>ziMXroXg5 z9X&xG^DZw~FFe`=UU!Ylq~+c;NeVAXGBZ^1SYllN9OJ*~o1J*?YLw zy5i<=V`FNOnI|m5Nj~3RqEPr@e76=UET!+|%gW*}=#mt)~QAy!2-7U6?LSNV5`eN5mVv(_?uU4-w zS19Iy55)aZxv1Wck?QXf177rO4-7wn#@8~ifv#Rje%c-Nal*JFsVf6ubBSC^LEjNwAApd z2shXWGE$Y4EK+42g%74i>Ceo$*FCq`n=81AfSnXyugT1JQl%>T8yj(VlmuZN4(>>S zC;i@4uQvNab}3!(qVHUrm~YoV{O9c)n0i*EYZA;qh!qv5%9@Bx2`}Fj>3Q8xq9{yH zVk%wY>>2g!XD0j@CrHu!aD5y%5S-KIZ_oj89ZG^LPW6RduWqdH%zPM5 zN=w(ka81le%Z}7*b3gbVC?{GY(TM8%HJNvL*5%kqy)VDGqMb1SKG&kaJF06@%b#Z! z=LAl$iLxm;r7u5+SSBNRdVPwm!TYpt3jd2P9fveHM%~{>pGeiA zqxRe=8b2QZ_q3M`!;nwm*F85G(I|D>&6-NP$&XP{%(t};2-31d;PL>`b%&IZzZ~<6 zf~F1^8SqbQ13N%+F`c;KnZ;SAbV_6;MFsClT9mAGnapqy zMRGleGKGgZ%Y>iQ7GZy|qMZY1D^_DC%}&iKRVF6^nx1iMhxLYd{ANW|TxNS-0EfB8 zK{|l8oTR8AN4H|noGiR(Bskv#sLD1V--)Qtw+*zVDTWUAZ^IA|DY5yaKA}zo>}YRp zl+{*PeyO671qt1egyGkK+%g-&>+1{4Iy1so3oKm&^24t2Av6|gNy zc>+nD^hEUZ>H|0g8^=w1GfxScY1P6aee2Mcfz=^9*|6PFdqEBAE`6r>0;i^8Ca0$p`P zKJ41B+DE&v-oqG6J!kO+As>B0tvSp6^jbGVwT}B=G=nZc9I%S2zOW=Ivajm8(I%rb zYY(o!xk*?lRcg+pfebh^xC<20?+z(^a9pX`sbp@yrzaEmY7t}%c9Dyo+<1CADQa!9 zAv9~jhW|#P0R|AG@cP0Wh)`CX>y&VPOn6EpH=oAaj?5kU4kfe!?X*HGPKF@WoSIc8 zGMDmwo>E;J%<7A;Crs!Jc>B$oj_nddcuu(nLEc17iEy)t=%t4Vr7H%VnR7ZeF~1kGg?QAtT2vnry}+Dbo-vyR~gHW?!1R$NgC-{!<6 zyKz~zia>r0jcG_3Cr|@X0()q`{f34z=Vu8|ViWAmv9pW7cOsh!o6G-XT=)15)^S;r z4Q`Bs47vtXaJ{z)z^>4s{Xac&g=Hpp26=L8wKU5m@2nJlc#12lxwB5ecP4C%;J zng&wHGLlZxBT!gy;_N^-rSngn{!TsCK_+<^hVsK+Kvzb0$?*7st;Y} zK(lL7wE*ZwA-YD#rY$nyJ~}-A4S<3qg{<%Q41TX<)sgeZ*F!&1%S}pjgu3Q-xnxQQ zIe@ZXql4!vz=5C)?9B-r$t{B3r_7)U@bJ45pdtEepdaW1&FV$({|GMUTDoD>1HQp&P$8~`=fq{v(~pB(^~^G{^`{K7JHkT$iYC)8 zvq1rPujU-*l)k^uheYRhU&LnBC5y2nXz-zLqT2v)SvF1InZ@6Jsk#mX2kuU~a#NDt-jc97PMbLd3XzN(GTsF)e zB!g9k8UZot=sVr6@o8ZKLnr)SnkKhLijE6xQe}KK&`&M?WDaw|my||YO+(GuMSU0f zc6PMqPVQ`UvLiPCd9K}Sw1qi=bey96UH!o%$khLXxDIn@d;{(P;F2_E#-coCaT9DwIm) zR2VGiFzF2d{&&M@pK7FLr=VGMe#Y(ZlW10b@){ z1&X7i6d2wXH5wF)tPN5D=5$L!m!CE*|GfehV5Ov2*e9Ev^Z6Hv0N>!b`g(v|TFvQM zbpPJgH5k>GukU=&~olYJ=z$|Skv?Tn^C#@DGI6pm^@{I3O4$P2H zw;l+*VUEpYC79#UmaFZmXeS!%p#wyZ@N0LpUGHTM9{BDD>#Jhk#h^v6wn}zao$ljc zz&n(}_PY1K^am$0M{7b#%b5wjtS{ifL@lT#6Ez8S6qYvLuy~EBrYj&c_3dqCyJ~s@ z0K)Mz>QuhxBUKx|eEc4|WGZj?j|C?@{XVS>P)@(ud~5F2FInc7-ij6G#Z?INRO)|0`&~BUZy6 zHCSDouoAA@AAGcO(C~Y8-_FL2Tv=v|+%2?lD6xoXp;=vBh^x&Lb z1nbX~nhS!91fp}a-be3;m7L?Bf?j^I4K(!zK*8LPbSt~F;a1`KmPB}b>EUzdSvFxS z)n^iV7mTRQ*r`TG1%sma-C?<$Qi+$`_2W3tR_z{|wFuNG|DF0)3Cw zqHY9s4iX3!L|+kTA_?I6NHawlxSokB<_2-gu z1?!*6%$ctT&z^UF$xXdx>}PD@hlLH;Aj!oOwQR#gVXpr(lIfY!luVX6H`W4i*;6$a zaT-MQo;Nz@pB!yC>3(_<%k5M`6unO-`|?S*%l`{?_%`#%#HfjryA_=O@Ory*^2#1F zq$9Nt=WRVZa6!n1p{YKvZNA@1_9NIsZyveHKhgxc7pJOt{*7qh1q5v!>;EG)ryS72YBVXp<N67~J6tj9is90uAa75rQgzQt?t|TP&UGV&*ugw!6 zgpOU7G%Ni+dXGESa;MMU`?b?sjGv#^P5)s(1TK+;Q^gSjF%d!p{HRh#nWUz$WQ;60 z93upLw~TuTWvFef`c-pQX!!e1g>YlMrYIb~r& zlc9x1GjYBIsjdns7kr#jxJE`2@E`W0uy7aKaxz!$h2+Fq37)^oI*k5X#4n*wL8QX) zbfn}-ovh>m4%4~1Ro28yJ!3{D5(^#r&-6?y5}8ssj(F-kYgyhU6P!o?sW4rFcA4Tl zj!-HWW)e<(`6>r7#?$BJ>k}%KLKP-p3u8S^gj(fHF`7xSof)>BdE6vE{kLQ{jp9lg z*=bsUy58uNB^f67VyInEq?fU!fG1TTTSQ=_sfm!`q0W%+@x;g!CQg*+9itH9kl|dR zubfmx3mB1NIKNvY4&Y%FzZXu(5X!;%GQ3!UOYPuF8XULuQU^PWB*DZqGK`Io(H_FZ znvifkIo9ftyY5U<-&I)Kk+Y6sq*@$%2P0J@;dJg4m5X_@oM95;lEJ|)&2%O7q-7U4 z0YF69;h0Fwmbxtv<2!|!dF3b!6NHNgU%^~>G6(58VYp14(I2PAd+8Lz)(lms_~e~? ziZCT&a1;dF*orGikqD?>q?n0Q`ZP;U9-|_F;IKI|Yd%Lsa&QJ(m5z!K$E6cH%`+rl z8STKcATdi!%ZHP^JydMmPHY6IU`o`MwiNvTOsP|TvU9mORh(m-Z-%sJl&T^)&J}}kJk%P5Pqafz?x(uzKqmfWw5SN!l2DxyM#$6zOvaS7TO1~l;VLm=g^_Ao zq*EX*Ti8jm(Yb5d5i`p>0oqD2Hw@LANU)+(JPbGXpXnwQ_pp@Y<8d(WqijcpRU66yyb|^Z9 zQ_)W9lA(mki{&Wf#Q1#)Ln~pam9a%T z8gLo%MJ8HV017J9<&j!RY*?f_!#{wsomq}tuwXH1Dirhajcji#$*?ZWSRoa#MuJl$ zeyJA^vGXVyio`mVa~xC?j0m>y-ZUp(jGNZlNq2qd9$TRO>@;}Ve(IoC4Sev@oRnL}(-VjPqw&Zb4>&Y-#c^HZR>xEO5(+65cVRIPSuX zP+_qgk)~`O$2yFloB#U zEEgJ)v|`;1q~olrk4FCD0-dZ6feEPyGF)<3bsZ<<0-YYg`OL|1695^-l*j6Vd;{3d zedQQ4+NoF$j4`q@hpm#Z!Z0nIETx?;&NM@~Y;fL;QG_M%p8Aq<7(*fyON8ls%t0p7 zBAn-dbb-hTfsys95JX8Zk<3kNzB8FC-g}9M*%MqmPfm(WMP(@2 z{Hl;0;-|DANjQz16lP5)5!HxEM10xEriM}5##v{u1MtwsEA4GI6K0{xF*$2Z0dDK7M)(s?`O;6v5}~k%YA=qWq@$UIIsJu z*6IKuQ!K+N3}-v#*^-Qx>~m(P!q%EF#f2J99wnC}JdtFr4N?>{ z7;v30HS`4|#7P$-+(T`tv=y36yOM1x=0yt`)<#q$WwQubM>#;@$OG{lC!IJ?7fgh) zF&!IavB~_{JS|hkM!~tHIvw+7iMdF^)l4g+f{}8ql&277iN$PlRk$qp5?g^{Ns7Zm zVFb@sm|q%@A~Vvt&(xwootTr!aWM&-$&kfrpoQjQONrWjey(xJnvihhRoA-l1PJMk2Bz^9|c3~Mg=;hD4cm{8V{%-6<3x6x2I_3Bu^a1 zdnL5NTp557WX=&E`` zLF!yI47r1NCVt(TM1(6Z4j+R%-O;$%$t)i#J$be$gF{km^(C>}KxHTuJ5=W%Z-+S$ zSWg?wE8W&f7s#+Kb!4zvTA52WTWBI<>mFgl##yUfU9^3;l-P(R5zNJqCcw#4DaZ~^ z!2)_a2!u#npxx^v1Y)su%Wx&7!SN1UZ_>pBalD|P)I_SOY0eBLsR1utBF(WKmNFx0 zCz61VY&T_~we~dmVY3TXKDd$3+u?pRFZRU8ye4@s(n=c3^zXqFNYf*6rTAGEKLt7y zhLTKY<30TaWA+f*a+!w{aj{%)XJU#*!bxtpZZQ$bNvV%?W++A3(}Ym7 zC}6e{!2zk89cO5=UJ=GgQOP`QqRHY-I72JP7Fnb-#4My_8>ytup6ifSCggFj z6GQWOW=7VhafU>Y8XV9UgZ_{tlqgR&Pyy_Kl@b=ETZH5wEOZCuw^J?- z$4rMU>PBmJyRan(9hA|@#lBg!A9Z z{1o5TO3p+q24-0)77=V~p3>-2bc{CbSYwzk;etz@#Fb%Wmsu<+6BdU3zNd=K{ERz^ z`{tJ?Rk8x#GAPSoB#)!c#};X2PJ|`S7|ozYkc7<3#*CF5jkHT}J5zpgw4lg@k_CyK z-;FEplOR>QZ#~u7p`y_Q+mSAt$KxQ>90tkW=(b>+}yfgYHE>!Fo7kso`Ip15|J(Y1VeJCa++G| zUtr0CTd1?+6Ut7pk+P9*e$4|+>xDODvY#7)+SiqLw0a_piqjTJgE>d zIk#`h90H6l=^+ykFTq__5j~=~ecQ&_}isy@+9RwoYRW2os=B26g#d~a=GRsN= z7+AJOAyk!kF|0fpz3IPA;wywrX1OSH^fYaT`{iqH)|5=BnI^OdbqGT^1+D2`J)|&Z z%c2^JBFsphGL?`xGvCOC)d_;3*2Sr$lq=9#m{1&~3sY0_GARdXIqTPmy~d3Wqaq!` z7vp78Hya?ykfGYESSClnfLcmA+m=wgtxp|-70}L6z(P1nFUP_#QLccr4n`_Aior0Z zB*FfKi?xWSSK{1z-WN5R!#B zKoCQ_BLNvzTQss2Q3a+s3YbwBxdy7Nfqam6o`WI)_0C}i=&&d#?P*FI8^gf4at7}7 z#dRoT0E$WoTBOvf6I9U?wIn*j96;QT)tdsB&4ty{U^ST410X9QtWZD-giLb{u|fst zF<^H{D;zZh5LEC`0U(LS-@iJe6K-JvPbl1wv{;4CF~uS#Q9VR=V3JN5&yvForpS|0 zpb4!oaa#g74W8dl1n@*8n7|c=m4XUD=4DY#%v|t!KCrc14y_hG3P1w1U72{W2_zT{ zL64*kK&dbi;BQ4cT?trY0VHIa*4SbS*BNA?-Ps~}?_PJ+;&|FoKh*&(@0`in8~{bd zqDZN92pexGR+mI$?lWNO^;%>L3WRkvFB6Ih@J$&M2S8gxEVa?@ zT+|U&R$?s(<~?CS!doE`Se6`mZ-6_fgA4~T?+${{TsSNj91W(8z|#rT;uHW+dg0I2 zj;;mcuH?`N5&;02(Ru`AL*T*_67%C}qDl1B0B zO~o+)V2(zdA(%GpBCEj6Qg8@BB?zcPl0aA>#{dk#P%kDsfz$-1%b+wCNUIer2g^pG z1)NGr$iqQEL_i$MO#y*QX@4>v01@S=BoGx@OS3Ep(Hq4>vv-=|sDsG>Lb6(r*a~+C z63^3k91E3$MIBdrOrzCMAP2gE1yF_lQV@RB8c+|Uqey^p;iT%KB@?H!P)*`_xO-wJ zNR}H6h+DDHMqo}xiU44RIWNWpu;kDNAAb@O0-+E+0C*>@Puf#x*p+69$U6iG7(@@| z2S9)noB)7R5~ye-1ZECjKqW(IeoF{-53&M43TJ$CSgaB!v1BP4Euyi8&K#hgw91mi z;vP@%E;f~N4uHUkc#=N~LOXYRovCm@JpUOD6w$D*cMdj(>%Y4TSR>M7K|=ru)jrQc z($44PgIMv)Ao#qka46COih7+)B?!^(RwxWY0X;~-BIyWVAyCk*>yj8Q5X8*8$OuHG zjg7&;Md2|HLk4>+913ON;Gnr#B1>RZ0t8xr0Tfg#O?)T^Tg!uG$b(zqz#!JAC}SiV z&I|y6HvkhuK)K;KnPOOND;Z(~q&R{A;3JLNFtBpa$T%>M1#+<%1PE0vE=MKGeSNLl zMMP=A1@ww|F8*8N|&AB!FyCU{F2@%U~;pg2EY02N^j0Fh zAwd8zoW|BkU@#0QTyTd&k!dhSH2{YvLMRiS6sTbiTAXHO2m?Tw04O)J(9X&un41wp zR>MRTt!i4{TSVFqMj~v{fD5J;hXVXjrh`HFQB@{ED2<}Rhf&HF0F_^kLO`aJA^8N1 zs6Z`+fkbQP9t~~*syRqCya$rQ8e#{fr;4kRhBJ@>B$@}T(4g1Gp^5+os%ce_VQHrH z2pLEYY~LM9s}~RlA!$8DwN&50AqQ+BbQn1j1hR>P46t(K0}v_{H86>>667KgS)k^L z@TvqFW_G^_1sg&ETou&=pf^(h6KZSz>j>lk5%@}^%;T&Q0P+wN00`o#a1tUVL5iqG zC5so}APA^x8Wu|hV=E>&IOv0NAgHPd*cgt5f@Y!PP(TnbTj8YJK&qhXS}GO|hmhup zb;^dcF%5DXG++#41=~RYG1|;1pJT|92cT#WYYGIgai^di04x#-$076hX|f78+d&Y7 zxm^xcj00{Z4nfigHHDRxf|X>Lz#@pvg+y_Hh|8gc0<(pvVv(HYhPP;j;6c07IO5MV z0;Wh>caWH>RmGaA1fbdqgh+>gQK|@h0+kDfq-PT=@VAF2h1;L}qcrb4UOhno0Z3 zAOOXOWvO9=z+16U198#>u$}-}B2>Zskd1gGTnx$N0tLTDB8)tkQa}Shl@&oD1%v`7 z3^_nZ2&meC84Eeb1s(th(@L$_dsJp5Cq0njDKSDro&h8TjY-3h;3X*pA%Tks!OPI8 zo1t=K47mm*sYDiv0nJFknG)G|$}+I0V5mm!aCx8=@a9ad2Tx1ES*Kil z0Ge0X8h}$ln07;n9D)%B3zQYmTfy#7^W4XV(X{hX;4m3$EQHIaDu+OyLKH(FX_IL! zXNo+P32DQO!cW2(XhS@s5NR?J z4EcOga6WVr6NKUop%PI54$egYNE~R|>cA~5G9EWJL4zEb02K?px}^YxazTNOHX>w# z00CeeGz-mDMf2c*GFBuuN3J*w1!oxqVDtciCSwknCjfFVNIXAd6$=IeqqPN@#HR^| zN*MrXzygFZ#lSBya1rRm4M8u(usKGUd?*xbE@KtU2Xe~iV?{$@f^;(6B$yl(>rErl z@lXX0A$bG?0N^-CG}p(dkpw5HRtq&m1m`ee=V7Qkpo&7qP_Y<_m^Z^dn8F9a6RHv> z(K#%JaHa&n5e2uR!6z(bT8xw?MiQ&HwX&iiMm`dVKSec13{2-g%Ej%TgOhtkj6_Suq*s0+<4z3eJKN06{>a5Dr$PtR;klfbAe~ z*DzNr18N9!k}?RwxFOBKIFbW{0DugcW|dwLaWM>FQJVu`7*ZhiNI2e9jzU{mz^YR& z61?0MDST)+EDR}z%6l;$OZfcf0Fnj? z#IQpWo;3fE6xu!KDU^ve80?3yCE$Y}K=MJfyZ{9R$%oRgoI8|RljdilvKoSkG)7|x zXNE!vWgLdciAkE}whp)$Qi)sWJ%G^w0>{x)NE@`g=}`0#jD_S6AROudI+l8XfpW=v zvk~CUMNv)B@QIiqB2p9D-D)Vehy#i|koIUPt9c+k8A;2_$rRLu_0A!q5+KH{sSpNQ zIlah{U2>8;h_>K01O*|8Bn%XZcSq3%WDo&L#)c(r$^cM+roF1b0s1dU6azhk4g{i= zMZ16l5QEdAL;a8PD$<>%y=p}Z1cePFVRHUQfR%QgKK#VK-zNL#b6Tvgo9u4lJAV#E z+?G#h$CeiyZYmw_{0)dD>tXwk3VMIGe9hk1iSwvjDLNQ0W3PL2${Hu(^Ed9{vCuyt z{?wfIQgnR5?R)Jnw%F8$!_e*JKMs}iDt~FI#LA)N4|Bf*X@z#3bh#bdHoTDkuJh}i z{%`#y#b+vCU%0*E|FyMl)}Q&;wa>c}r56x$_1g%*dq%M?wA_um?@EmQuj7!r>AsU^ z&BOlzi5pxXPcQ73<58tTfy zuW#?BOFkE^Tx+ZeB|wC6BHfPeg#G(~?`?iH)`YM>B;Wo%Z1>cQbDDQ5Um zEB9gcT%}&juSl$U3I9;M?=rjE!Ljz6R|g>kw&ve)lhc<1#h@97=|9UPlD_paKHV&b zA$k?A3VGO%KezC+y$%y0e%2G0_D+>B$O;m^&*oI@0wE;>`7H%Gn>v6OzoG zHXnyU6V4o}xbgT@ZEznojM;TJKRHc}yZz<52}{-r$mSyW{0jXV6YOqEhzhPFPmWIR z{yo7s+@5{Ll^fQJg$L(+(@j2#jOK6iP@=S?zMf;rB62_fk)(2G{Q0@sD+dE-u$SFG zj>dXl3~O7t)uv3?Q2rqx=ONo%2fC~T-z&d#w1zNTB7{?_ibpI=SdMKj7auu`<;D^m zUPW)RMKaf%CzUSm=l@ZTH{*2Ak%YWZggVKYqv?uyuLR(wRE9#={71Z<81W!04sGYi zsLjN z(THbH9W`L_t?o>N2CopeYuB~iNBtNL?)<2-ak%B6r8Z{Y3 zzZ>OryKiml!qoN>E^IThxLoBX%|C0uKV|*IH6!OqKz-XgSlee^m5RQ>O7uAVCm zKjMFE$Mxar*M+w)&MV5^r2G^VOkIZCGof`7qaNN2OOPMgiRg`rWP80gYlV9Xz1*R2 zW@G50nA!HB*wfL1?}&kQjilO5o@<4p4`aJc>niVL3nFi^F4Mh!z^ag~{@DHri&%h% z^Vg`9CQ|aH-Jv)0!l8zgPyOogJcG)hHi<>QqJ;C3<_~H)BQhp=7`zDe7dWL#^WRis z8H_n=7Q0*Ghvlge&gDB#`Sx>75-U0!ioRpd$?Yi(zy&kFV|T-vdHF~cQTSY$M?XMc zaG13sp!JS8)vN+sJEZ}>fDG?~-#RE`eEO2*H&{w?{??zNCI+K)asFWjC-`7jPzA@E z$3X^dGM)k@&}SAqA^$9ac~N`4;o z@aWi9Up*fDcsUG_VuGs5c-bE&#IKR41M8A*e0VCy{b-vO|1HCRk}-KgkB=k&0P)?# zT!qL8IL@8Dz+Kn?9xsJo^D9)c72^f-ZFA1?wnn59G!5>vu(0mkz8fSR&UasEffAwC3A`W06nv7=3cvoQ5;u{-hB`1>v&8(!jyjCdCP1f*`1uo zm$J9s@K$GhcskHdl=P^d<6MR+>{)0Mm$M0--rf2$uk7u49sh{*UucYSlE(W_k?q*j zbaDy~ZTA`AK1@Q-RtBLCx8H9)O7vOl7UPnACCrUhqC+CJ++`z!RC#&6C%y`;;cZ7N ziaSE!e5TB@TN|HV$CuyvYz3bj5>jDvugF4_0iK^}-FJzij1jdE)5y zu;_ro+3qE5QT5m8myP=zOWp_O^9#Q;N(xG~x02={39q(jr~D-23u2FtTi%Fr|K8r} zkBPbPB|Ghjb#Zw41Eo4~U!6-o$46=DRkH}mS#@^#yq>_b`= zN}=k1msHeyZ~0QnOg9Lr?&H>{hxRjP5EE7&ka`7z3o`##$DhMP+V^MvSMjw>($^2o z^v>#UwiL;~27SST?Q=#J>!Le+zM|jeJ%x_FwT^o zxZHDijFXld?6-}vyP-CAuHW)n$Hr=W_n0n2xmocE1AnJW zW=osRoqlDd{GCT>nabW*H`!lJtUhUyt)J2M(s+7BTA2LOC45uh)4A$TS$~S|g|0+z zkdFoK59JFc{Ct_BVYt-Dllye%n*mKNP~p1B=l7K>s}1Hp93hP_qg_P%5WzHQ49>k9 zznXvS9m#5D2)=e1yHq9bDywUvl3qB(ib<)R43?^nSXjE`G1YbCu*=mf(`nG0^*~7M z4eq6m;Rkp`b){%+!`;aX1^z{&K)ztV$ z^~-Ft7w19RjC0ydblMCy0oBj6+c*;{jvRKp--m=*ee=sJ8udQlTzo)$dbt{Bw}PhJ zR4~$qsb_CGWC&(G+s)xrZum2v`b+nH+`#+dbL|FqfBXZgcaDjTI&;;g5f1O}z4IYyOtEuim|MbFg+E|rb^H@SKk*Z>M4#H6$;ncV7WMVR!J=qwG-d9x+Y*C5dUU= z5LV5oyEpKn_S)b&$9GYDgT?K4FQLEK-L~cms<$hH*mFC3>YbfA%CUSM?T^Lg@{eb# zT8tPT8zJ8WK`*R{-gGC^N+J- zq87JP(^WbTS1Iqau6y6;{m@cT>~gh5OrQ9s{Zr^kD6(&TC1BbqE5FIp*HjiX?)Pxi z;i-ORei%}bv5zB`SGV(?-)vSU0+Y`#rgmRTa(w%N5na-kxHP9Jjq+PRstlxROV=Ot zw^%i|CIp{z)|csL*lrHF>h2B>?pXe0b?9V&GcC6LK~2(yu9FG#(_4o2gaAF`ti=qJ zBtP5f@aLLj zvGC)Ty*5K$mV5Ta#xoY#*S7ERp_#emmoGd~n^*4ckYpAVySEk3ukcucA-n)p9PIG+ z?YA^fZP;hq!v$4b(#aQtby-E1ndhT#;~xzb%B^~z>KE4ip)(!FE+oG8Jrymy-NrtB z5J`fRU3fDD0J3=4Ht(0C5451RCvqEO{B;J&;AhgS3S<@>H9CgX=*sGbEl#$&szRG*58xsZx8*TMS<=ipn_nWZ=ElZ-R zPN!`}6)J~s{@BbN>BSQJkM!JLK0JXo-k~ok^!x{m`#o4KPJe4S>+(TeATM7U-Fv9Z zhG^wAJy{k>ZkHQZ^gcu>*K$EPeA_a zG@?|c7Sjx=<(C%dH%r>BW;t+V)M9ul{Qh=zIQ^K^u1yQyT~9*-!=jjq`eJbVkvEqH z#+x+tb1s-Qy2aBkC}6NJ&mmtEX@*QXc&}vD!Ep7Z%WUnQk*^A~<>{kE&Ig{ppKiZs zcQ~scwv~pgMVPk(9*!)pQEvimuXCdF-;Q{@Hfusvv>eM^dft;$O@FN&^K95 znf6SQEaOLfR^;4k>R0-%z%8H8w&u-}+&NOFX0LSAAWo(~bQO|S1GQP3T&ZnSX$dUp zk2>ysYmBP!nD=_%{b4F#!rj=aRwCOEWT#41U!Yl>fb~Rd3j_KFXEgtpakd zyhsbe^uVPMT?SM4R!+GZtZ7sAwz?GxQ%lU>E;pQktnsSV?_8j%RkA8#+QsDsC47wR zzTJ?!I(FIIVWc@ZyHQd6KsjA2+>r?&s zeKrN=@&_xzN406z7Xn}Z10ID|1?+AIvg9V!sDHt|uVZ$8UU1^;HW$^?-Yn^zZ5h1xRlR@X@lDrFM@W&pmJMi>s`0ph*%D{{awv7QLKv%lBf# zA1-`~4UCnKt4wo<*P*dQ>n~0XCQoARe%|#IGFd*37}ndb7QCVuBnE!<(*s%J@uU~^ zK|IGSNuCXAf7yYc*p3mSc|@IyABDf(Ol0Chi>)U&Hu-+yyPhF!j;(_la=TEI<5Zyyx6vXCdSvb@aKV1*WLMS zw=F40+nIN|^{-ot(s48H+boz2&6Ur^Q#;SZFO4A%DfYZNG+pD1E~?zyDITop4f&DGFLXF8NsQM27$R*#VQs(qTNFVF7xpaxR$%jJBrm)7yZdu_IX@8y0zWOZ}&lIv=Xy7jQ5N7qNd zG3{*Az0n}elCw?c^ElRYFDE!n9f<5dExo1CUA0zQOf;SisdRO^Y75hXRk-=nZz~s|u{2lKbT% z5^f|K<)L%Y{e?p`jEwdB%yk#aLO!CZC z9Uk_R{?Jd-9Oi6cO38b* zlKHr_a|jV4%zQkmrDiYmhpAW?*S*4h&(e5WH|JNc?PWi`?a6O`e3gN|>S9aZoGo7& zUJkjE@@^9+RwY+emlLc!`_=G+8sJIz@M!e$qRpetvqdQzXWy{6zsdLgXrk-WzU8uR z?GO|R_A1v3aO&2y0P%psEnJ^JiM{b2$;<8#kk=4ZgC}q>8psKkk-nI-r6+jgf8qWy zD4sg2kZ}p$VNHsk?7Fw>645cPr6aF>m@X*P8FB z)5C6k(Our?obhoEDgpY93~udHu%I z7V#CgbI!t$EFaVE&|Jau?|0fO8^3|2rAKZic1Wk@S%pc?Fm6hf>2gFMhZ8Gg=5x*Wd=#cRJEVs2~DHmnY|%J?yATX?Q| zE$A%Wi+3|yB_s-G_Og2GR=g6vq)3Vi)>0phct150)bYOx9Q^9vNoL~Ky9$WXbWvTBwEwOfd=Zm$C252X>ftT*~ z|IW@2Wofe;m3{wTp@yU4=Go3dN~RrWUi^RRVWZBzTd&ct)|Wqo`O{xSgKNXy2t3h` zYFUT&+Z^qlSp{n*u<-Iec_>V%Z|-}&cp$@>UKl1#4MWM&2Oq6 z6eDD4Z`7$&56k!xJw=w_f3IixKy#I@IAl#dpnhr@NV~4XX`OJN znNj_314+>TApe+4`&-lQz}JZ{-HnaxGnW$+-Z;ob1`T<)EzdWCvR+4T!&3WFd9GO$ zJTper4_xp5?0)7N^HZQp@ zetU?%8k+1B32m6x`Uh|ZW3B|oLCVMP<^--aOX{eL;3{4?qdsYsd`8UG7hG4-t+-nr zXff2>qqJ6QYU+wwOAgvkFLh83($Ib^pW1;2JqWL2$T^&eI6rIwRL4v_kzrHzlkq5yseV{45qc>l*$0#bq<@TDBW&F;y~rz3(g9f-Wh- zO4`YcQdO@yG}U;vSHhBmzKX`(di$Gse|O~p zuJa zoxxbuTaiB3cYS7ceYi?MX9m!$k%A(mFGDHw%%EC-zLlcu74;{~k}GQoL`)3dyvpwv zF^tj4s^15DzQzefK6${VFa&}CzBZH@ZXq~=G1F*|*wka?pQ?~J5{Se|g{z)ycJ0f)@k z5vkVR_X%&x*8{G@Lxz^ux6n|n(81F2BIBhlxRiNi5Y&00`hrcg2XAxEq4MeLl!-#M zXVA}I?CXEX7(I6SQT_Bj$EON|FUBwM=NM+0Z_BSAcd;h@{6sn%pMN&kjvqQSF~h_7JZkzu@RftX$?~UwM8V^JtA} zeRQlmKnc*9>6Y_(tPuHoX(nkP+n$m@f98_#2c^P9N3;32ef49xkW3BNkHp>U3rn9z zMEWA3NSV7cxqap9PD@VVSM`o%3SGYUM8DYo;2?w6uT;#?2i|-Yb_9@rExsz`1xYTc zhG~9Mh@6|v%6%8A-Enp+DZf{7$DD!feq7+pP*`n*&@Elm&z+_3X*`x~Mue|^Qw=TZ zeaZc%;YAURO|8O>cVw}i91yKf)Q8dS?yB45qlB6iwr2_@N4LbI8^2Y(yMtaSeeHF3 zUkw>tU7b>!+%c94z7cVD?&*T@BjZF77f4N{0D4?^wY&!%x(ROnLm9Xy8WtugSAhk zav=Mo&%yTTPFzFi(b37J%3r>*(v^pzTXMAXk2emS|8iC?|Ne8afBNCcrMQYuhhC== zMU&d6^P5FWv@7Z=CwPCQ{tb>BWn4NN`@|&KtwQCPCTBY6M;f`EN);XMa`ZNw>4^T( z+~{u{p0T?yH!z=0OW^b4BJGa)apk@p#o&kK?z4UB94OHWmA?2)8@HG7H{yg(6&o@Q zds#r+0NJYC!7p^zYeN-2DTL284jw&Asyz{!rg(akfrbLV7aLpkijSD^^}V$9ruZOs z3ua&J6B2k7MuN(tc6zc{Zq>G8_~oTC-(Torc-pmNo5cw&D?EIxXBQE!!r}S%dGW-1 zt*;h-Mj@Kw&4k{29?4hsM$Jn(K}|Z2eTSxoe&HJLX8R={)DJ!JNo-{L>?ihdp{^+$ z4jB=gJx(FR)lrZh$ih~my4GsAM;@*~T77X-nDTmu^$3+4*tjEn_nYDGi`VKe^PD?7 zfl8d0lsbB!Q#Cf1;r907xijix_KS6Jb%%Wkp*sN)zSr{K|14$9H!el@bS0jnYxA0r zD%Wj($MBlDuf>jojYMahu1 zodn`OW7sV(C(j>3yB3c{ROMEwGv?Dld9uYhDK90a>hgs|(kwvW=i0NYO~0~C!piX1 zbFPTGWMxjlv>I8B4U|!>SpJ72UkVIqu>cx*CR83Dg-6PX5Zm}n3Xpu&5A~_a`IHoJH_MH;!?d!i7Lkj@?!_4=(pwx zJ?=Y(6l-kA@_Y|;-e2A=UiQUYh|#17nXAF`j4_{}M~N9%y4{V!`4b*Da<~oV?P2?> zJo)p&K#)e7x|j3F30u55cGy8MEIcUshx)iY+iYr3Sftwgc7mQCVV#ZRyI@-k%dqr9 zun^h}Y@eJj`dCpuDODcc43m&pcp*X9zyz%j%zI;WQCM{y4Ju#f4M zz2}yA8+e7LYA#teVY;(NLve!>sXwkvicAM9yM63kPdYG;NWYdYc7EG@qg+rxB2BdJ zBQf8Wq9dRWiB=qB9z@?O-(5K4W+)(^tMNlF8LxzgP4rJxeTuo|o^QKcl}{Ko!~0a1 znmb!PB->l%I9111mBooCC7>Mz@kE&fd5J;x%P-#^vFCJ`@OfIsbDRi0zsc^=AadKV zo^R7U27W|dx!jfH!cN-AY*p5mdKIy0zH%ZIFJOJChLznnNdW14VUk{)XMX&4173N7 zzMSs$ZBz54@$^NV5%`{?)`e;{RbxMa*X#o6;cgUdaxd#Sh9O1IUY?~Np^^is`4Q!D zM%ha=kJsKsR{)p8G|}VTGcfK_Lmh$(Wc4@7(|eaW zCN)xC0=#D?w^~k=hbp+y=L<1Q=no=PPP1`F#4^W8Q)zl0M%=K(&&<}`f&0nxfw;k{ zfK+}>VW`@Hzj>~W&=IDKV|Y_DT8M5wGDYai#D1#wS!0LXZyP;q?ZV}DCL2zTVpp@V zOMx;ngZEimuX1lxBw{D?G92_$j@-Q04j=h&n&Kl<%7i=({sH@#KcyMr7Euc0Y341= z>oGT~DtTtTGCA5FaUDsd9)1)FBA8G9ZeiDuhJGgs`~yU|H~&Q0vYKUtE_n zzGPo3%Te?_qbzyqL|`AjD5`3zv{{JJpt7SQX=G)vKrGo@->Ya~SHPmBh9gNxS-ZqN z*E}%QmEq3#UWlKF|V}+OwMIg4w5I6rj#f7?r1qnZOxlzXhow7D_E>o~98O z(0;W&qL*Jz9ax2vC&CBT0uZ7oz4*=?|Jdq@n92pFftP_qxtnZ;I_7TiIU5Ey%cLB& zVG3-yEWa(ezpAt4c?(ObZBVP)ksDsF*3*9z%tHHYt6cc%-t~5F4gau!+$zLYVibT^>CO%%V5WeP zg&`eZqmUpWt;(uR zUOgF2?cka~Rwz%mj)gZh^?b`Y zp;=~R`rnd9d$Unb^L=skXHrwYv=fs50mI#4cYW5kl^{bhf+NAg4%`EuBvPRxLc>|= z@|vRU&l=wyzD8U*-gMQIC}7SI-ce#)zmliv|3W$=9G4JAwM%g@2HmHgXv1zY1atj0 za^id1n!9)3qE(BMU$sPZ`!8A>@iPMi}V;4rM;G}*5Z}l)?V(8mk_hpfu-Zm z9E@cpMEe$A5jK2#qV+ecI$9X< zXSODEiS%X`CKEUkw9N#(FMD09?%miEMA#}C>^gW7l&#FdE=q`dQy1lPZ}Eoc z%4$U&*n}EiPIql^%f7tkM&bUGB{7#c`l9um+V=HzJt?-1M%Nh2jV-k^CUi3Qb)%`1 z+;x7R^w_**{{d6Pv|ejjp09@JwMlz6NT4>`<&OxqIZ3;lBb3+uT+_S8!wqAnIG36p zrSz7)IEG!RunXBtuZ6ZeV@E#3!U)de3v_kcoraUWJL+ke(TNVQwegxNwxC*BK|B{c zkcvcA$hkmHZ^F7zYx7-rvJu)YMW#AcIF~WsR0_G5I2iTy()^|8|BFE{bHbSDmoU>j%uM4=iHNGRi5{yBix9dzE)8EyR>nKwX4Nw9U{j>5Mn4 z+x*ue*}8wr|DC)- zw=YP4HBGp9EY)DR;>pqNQI$G=fYKKf;OJOKE<8PutxS`=H1_D5JrNhvmL_Q8pls*n z`y;DO;7~vQZ}R$?ILNytTOsBtSIzJ#leh2XMZy$$5)!?=CPSbJmJG&hTvB#r6Ag^o z$c4{2%bpHDIO4&LJv?49Fz>g9TtO+^jd@*CX>jvVaa+%uihREG)$%R)hxDCJ%+h>X zgN3@{mcgthm-xcw7sD`QPFDC{f!E#*?9e3NO_Lf!O`}fJ+8vbS)nww_X9qoo-d}bZ zCR8nP@2PzDIX&)Gnu@&z*Q9!k;8AMpgulJfBTgG$->V$1_;MsFgR!G=d*yF_oO>t@A zCa%mMi_h_BEXc7p#P8`47W{*2#aONz%qD%yWaT!Q|5d$aY#Up~e)m8{qEFehxnO0P z+#GMhV0sGUb3BD(ub3I{z0V;Yk`?-g(OaX;PhPD$I#J# zfNk*=VUtdE|EtXTwT1`L>uM>f5*mWb*>Mx=mhsIN64&Xk+xMNS?Cl!WppyD22xs?A zH8&~`pBk+l z7XFvvq3;;JiMI@6P|0>Yv7&u;+!FHHWE0y5TTU)lve@WzzY94LpZdY|YVc`|w4=CG zr@8$?NgO@ng{Ia$u1vGNJ5V8g5BKTRJEP~eM_(9f?X^HkObGkq#U*a>q?nJpCKr>r zEKKa_k5`6bWVB%)Q@U*~WOK{HzHg>(@3mV^*vSU)-ZD823gW=&CDlngJh>s%;BbZA z&d)|eM#$d}A{lj}HCxGUlI_i#nt|}(`D^MUPOu6}ou96~(ZD{*bVg*zm0q_T{9bM_e=>Lg+&RT zK~4!oo<`~1WX(}7Q#%T)RuQqk;Hqcs%e%hA>7DHq3U-gCc0p&F|9w3 zON>+0M07#QNE%~dWt6YnbXtz@KJ>KF62Hk7E58`YacN+`Xd_Q@I*2&tLO$itW0cNA z$PBvNC^h!0=0^El{09iP{sU0QHl|7`@j*iMi)UlXy?YKOAzBAbceoGKY&g#{M{x$3 zjd!<(N#DX345YQTa)m2UJm9{az}(E(g#~f`v*^BxtfV}@Qr5-S7%WAkQS6&=H%EViVa7xWVeV#+vKq8?JnQM z7UA06+qT+M<6doJz3hV{4`We#%WdneaaD~{3m(ru%ffbJ&KqcFb*!r?|KfVneIM2w zQ7;=}R=~l5=T4GK+c=-s7(sIf7Q&n28<#Hme>l|AqTo{AqwLi#{>o+hJNhur_-*D* zzJ(>P#H}KFC1F@J4=r550V;F8r-kX|p#S1(3SyS&GL>WTa;fzLF|_T(gnX{tU;5j4 zb8L~E3An1-Io-cHk~2kS&!XBETrD$@*s13xxpG{1@dVZBZS%5v*xr78Ak2tQ`0ieN z-FuzP+;cxNB`U0biPIlzGjhl0x9bWz^0a5QHPL1+o^!w9{y#J2lF=V{TOdI%=~cG> z&^8pFA6z=?e{18)V59w{Z+g<6<*EI&&~wk{Q8bQBXS9)G9l*hpWq1v$ljo%MjC-Hc zN$x?7S5E1fmG=@>Po`SU&%+%imoCXmEZl)K#_CM4QF`B`5`~RXSE5cvgS}J5ybS&K z725?pbH_Xmo3meKqwKSo55Hw@tiK4qwD-=yS66l8oS@jkR2JEjAd_&$9JVMH9)4Rq zj>Q%(UP{g-OS!wy%R{5Nj-)qSnAX~48+F7TU3oM!izZ)YGfoP_u&X`4FvY^kT8(^K z7OWc)8*xe%!skXi{&PDZAcSN`=3#}pxnMA*isUxK0&od@B!!lR`>fWQ0H z*>0ESmEE5SU>dlG;NP2-iH5tC_O9Y9o|rrYALu|#UyQkkt#NnQMYC2OZ2Uenx*c`j zvWDI>m{Xfuy%+WmpbzFXWVxlz{8Wl#7nwp{Rfj$oL*_>Hf7(uoIhHNqAIQ>O`YzsO z5g#L*u%dWI`#=#MT8UVvKd{_cn3h@fWv+Ti-v;(%$U@wbS{Q5>^|)7aIm*D2v-62=h z$xb|pxgN`{%e#g7Eev~ydmp#N4`tXUrP!o5HjHd@IVL;s$Fhor7KCe3)uX$65{Ku# zx{ve&XnUo;rp$JpF}x_|pl|Hto1dw4gmQgvfr+IClcT3H>6kFqFxKrMs;n*o?r+WM zzaT39HnFw*8EqStUjlLOQ9=GOPtD$$MFq98z;Tf2B4&I3?feP5zfjJGj(eTR){C)h zx_2{dt;yWk)~#>i8(wW9|LO`gFdaOwQO8b{$mS>QH85&9bnhFt^?ODQiq~x>uKYSY zKl%LK`juO?;q`hj{kE%@#qC`_hY;RtP0fmRpO%_ud_XD|5BgBi-o`BqwVB470^KPe zFQhq#tpBUk6f#>yN*; zPm!h-x=f2B6K8A?7Ju1sH#`&b&<12j_sxk0E3^1{$J-lkvnJ}3Cz38MO9(^aA-C3)(ZL?4TUr7{k*dxy9e89&2o8>b`G<>BJaH;zAbG&=M^$1UY*bVOAR_4J42 z+2jsUH^M@>e{PiiIhf0}%@(;rKQ5+zdch@ys?U89O& z+HeeVW1Eys@~TSCQMM)&RN+3N9b6wtR(0NvnyC*vn%9pHagYTXOA5`MDH^zMLX16^ zk+|A+J2Of;@|^E2L=oRd#&*+32c-#80W-sMjxaiSxS9als!E45{+0@v*(mdb_RWh zG6b`9_y@41s8Lt=$)Sc`IUbprz+03y zm#%nG)!-`hKTOqQtb23)U)YkLB?WR9>OHOI&*$;;!#3c9Uh7GkQPVkg{z40GO_hl$ z3Mk8^1S(W(Y(&O+J1UsMf=1*y-HW^J6MKBcn_P!_#l==Bcen>%&CCo)22}P1UPuu%X=7i@ zasii)yTa)qW@XQ{PVW)Pi?huQ%CbTYA()C4_PK58+AO%HM9hY31SP#p_B222T}`q! zFcLBWMo1I~xv^m-&^SM{HL`G8&}(CrVYp%G<>aEZ ze+_G0tJFpZcrP-&>QS5ShP~tR1YRgyFJ68l zBI-mySk#sGS4IkFt+XM11>~L}o3)dAiGM$%wZOoy+Zp~xqcgV~{pekX*LyFw{pJS$ z1Kx1H4IwsF4>^ESr5br0vMYHxAVXTZF=KwblH~#^7+Fs?L+hYi;*v!+Ly`-H(U;67 z&%E*_SJP3Opo%oP&6TA<3ng=RGFB1M%Pt;%h9zQR@Ht^aYVcatE4cq_`gM8VziyHT zW|871qxX1MnmJx7h{qKwQo0XcPjEl72>d;)jk$*;w4mZ9hW>^Y4;sZt1ZVWuWxZ5Hfpw5V8bKYIsL*F+HN zJz|FJbW1k|)&D|-8edJCT7*d(G;?nhF)X07vXm~3w+t)5!qhSHgd!`Maz6(ty^QZ4 zWy5qb3aqD%b)Xi5OGYj6Db}{cbZzaa+B|8-v?hw7T+xRS;zY(Eax}rboaw;Y59j@V zFm#=9Nv?gk1(^v!j7|I$su-l8A*GwI_y zrYVMSJAPsIX%(HDs&%JmP#sp$6Wp4a(cfMxz8!;|mo@`u3H)bhXgD`#B$x6!jjk5C=H~H8|aRliuwZ-4!Tve(MHg z6wLL1zU9E%Aj$3#lGuwvP!k}}C4*&M!Q6Csj)SBIpDd3#gmZ1a!|C?+bZcPFl}v(< z;340$oDGHWB+oY@(E|33IFBEZ^x)D!nOWPB!kJqfU+RL$dri+_>Fmi|c)Kpz0;Z{z zvtrGU(0ZV;^p_Ol|bG*9n^ejRpO zp=Gm`vZ)FC%GJknR|<6fC*RJ#yd4;NKFQ78;1D^!ixeUg)0h*4H8(wt2Hx*}<0CpSb%8f}DqcGfH+t zw39HeXEyB_igbJ3MBiI{RtKOjV8b-bMg-ZZEZ*NGU#f*%8Jjix-4lyB*Wq-WQ3N=XTC@L z)S1woz2%-NaR4Q}-A!w_2ki(uzjcR2y5xOQpYzd_j&09lpH&-p8aAP8+nw9$B9j*@ zEdYaUbKIsyK2IT!_~zNcLR$3qPT3--y-kI?-6G1zUry(P3*& ztT1d1uyvs|;AU;At`>OfC0_>q6!L=w-&pENS)gS12WD-;V|{@xq{Tv+P{n&U%&@-8 z)VPzzh4I{q9?!=nj1*#0W2*yrHK%ab4naK6cIFOL6d7(E$1v{F@Y#9&c>&z#JmRyG zH!Tt4_j4l;)Y5IW(bGwZ4(+-Ub?7o$+0=4|U8OfhsE_%MlI$SvB zw0PEK_xzQn;+K#9kQ-3d-l(P{`3%4G;(z%F#yl7M#_!hYVBY6R1HwZ@QQ9~FD$fbb zK#-;-^~UVq@LSPc_(ST-u{}UiftVPDt7J5UB{&eaZ8WSwV@YD{b-fS;+zm{KV$d#r zCup!eagnE7Y((dnK}!3lp8Z+>o-E_wDm*Q58>%yuZlo)$S1Ou?xbRgQd9O;bZnQZp zBGj|lakTPpp8ZpDpz9Uph}DPirGLRF*cm{3TIRhg0@k2#_osX?j*FsND5;k~7cHjo zgOed=Xt)MU2$@$S;`z@f^-JwWb zl&qplZj4{!4>*8=RtlXm^>D^~H3iilcz>0)sce`3LWjqiH7cLurdJZsg1l{$OSX1Y zhnP_J7O~X0*w5(cUgbzFhQsNi7y~@A@RnLf;qBZDOJBC6sx1j;i?^F*+& z@vnB#?aL`r<2l9JFkcsltS~^xps16Fc6w%7T?5j|v!JPzqAp?o0(P3WV=;-$z9$bJ z>6Z^igwNTK@?U>Re6k-IE>$}X+Gb=-N}ri@Hy9h9>ErQA?TDw}*L5Pro9bOu218ZuIq2yP#9>>Qs-w6z1MGD^~WH!)}DpqfHHxFeJ^ z2ZK?T&<^1)N_F=l+yH4g>PCnubtRXpbknYtABb1KW$GBY6lFPZDkK0*GpCf1u7AQU z$;c7|!1g==GY^>nOT#i#MY&?H_tgwvfU~oO+-4Ddj$7{{oxpbbi5A*C*3v+~zFlRx z?%Z=wXnh!7Y45}5F<>pl6m4IeK>%i+E8uqZMK>#(MJlnl1NBAbQ`!iTq4QW>x0$Dm z-x>LX?F2%A4O1gTqP4>x^EC{lDV4Pl=h(?nde)D1h?9ge&$Y5F#XFLw7^hHiN~b$u z$he&ET3E9bXFf7ZRmF@ma2SF^l{baHWw^|&kX3%O7wDKbiuJVeye4Iv<$UzXa~VH!xcME3oT+W`OeR8Y0^%-19s%Xm#f2d zwT{6G;@j%D>m3S@lUmb(u{Bn~^OIu->L$f;R>tiCIxuvq2m3W~&`*Qg zAHzSC4vNo<$K>6HxbyS&w`Sn|?8zqEh|NrMw5s|pYn5eT_Ke0uTmGqJ@Irucad$*= zLFV91vbI(_{-)%>y2_9a;)SgT6|NDml&nyuc`_QZj|kAh?#m4foWGS=be@g8O^=rldLg+2zvJ1>i`eJgSc`6Z?bECVa#{FpK?% zCliz|)|8oL--bz?5^0boHC-05yUfqRk7#+K0u9Hv&U``@2wf4l86HQm78{Yv#k%w6 zPF$AuRvj2UIGvj(bByUD7w+)BrUxq%M)cLwqa99{sW14XZIuhq9Dfw^*(q+ImYVO4dl!pXi5t=ySHzd>IvDPztQv3u;RT3?2Xe4@PXluy8NMmg z;0EJ~Lo)?}2V;t;p)sj%2#_>B) zeza_a_%`!yG%aa7cSQ2KW2x{Gn2Xb_*$}=7VCX5p`t9N`$pnuV8`41IJGSKTToLvF za|MJlgvsi$zqCGr)q4;6Vj|-nHcz%z@)o~!%C8rv82saDJzIB$m?l-+urI+ z*RVs4G!3tS?s|$sO+hCy3q9&_y!!p-)yqMJg+mrbla=iEeNttx*MfrNZ@4$GV39{= zXxOl}d>t6K4u-_z}~?Ajy&lH%zW5 z3568T!e*FE*@&nKhkYFxzAoU9K4gdJ0xard`1wD)mKSg`66#>krx{oW&MEi-d&ta; zl7eJdY;QC?#9cmCawK7aCN(+&9|gW(SbT&L?%tL(j+%1e_ZRQ0x;l{0l^mA61^Vpj zq(UJ6G9rS}{3%4l5=aI4NrsP1(%n{+aTn0m0-QcDH-bL`3L!l>{;V!+q=>s@IWdr8 z36kt45Vc7h$2nOdAFB+6HO<=z0f$CkaD7WU~S5 ztV(wE_DVWa^}D+6giPVdrM1}gVPi=jF|l2*BXXwHkd{yABd&|8fWOQaC3g+|lqLK> zx%8(}rr3`qHA*)g6H4C>|fc|lb66*DT`DO&Jvm`DFczZgOH#MZ3YN?sMng3s^=xi` zqYO&7m?zojO5VEOW3r;R)~P|3&bl=%ns2iNjIkDiy%TZ|;8%~RD<>xKoVCVnD)D?2 z@dv%<8}H%E6NG4v-!|OJ73u->I&h)HlaVRov+|~Sr-W9E3JVffv?8Ln{@yRt27N_fTD-C(xale<<1F}t-}&Zf+~N@@6Hi}-EKYqj?|m=# zrD!k}%&o-93Um}2cp93cNwKbd;{`2J@)#RqcG|J0Eyt|}uqbf|vJaH?RHMx8YR}2= zgMchZBK`qchbF%oDBE_Y$fAYs2Id7{oMyJ*f$;lq|6NxYQ{=vEHz?LsNGcQzG*l8% zka7j+&7gEOSvi=MfS=MkhdgGXuxrb*Om!mH?XV`?%=a-?*<& z>6_;PtiFRh?dWGxHWu+VkKYw9nY%H6VpL}so@L%j>bh5P$Htq!@w$#YbhJPGaW_{H zdQW*%Ni$(Y)voJITG;kSndimj;|_BFZyLDgkIB$5OkuZhk%_QDYM0b$bC~As ztu%fk=CIEmZME> zB+7ZuXqnhmU#DBBQUQCXNG-x;67qMJ70jpK{gKEy7m=tQ-C-6PC>w9&W%+MkEB7MGqYKJ22c-(R>a4F zzHzQBC1EwFL-Q72DS5nBC;%v2*~x>T(W5ZI%{exrMsWW|aC6Z!Coj#g6}5h@%diII z)Df;2cs;^o5BjcV4tRP`kHp5QV?3$52!5&1iebn?;R~jVDlv?&&{5if9@Z4=T%l#4QrD4Y$bxAV8WvLcQ&qhI;*l4ROmI{AAUP(WQ z96{OkU6s90Q$SyPsr>_408N^ifB3{Q$`8UB`*U@B-&O)u2vy3kc(6jCzOwd zmULPz?P{?z;Ymd*=Nyk>hOu_qW02;Krx=UzLSGnpwyOB$c+;`M<$QzdGy)1%PyZ>) z2wnp7q{5Q*C{i$`_68}Tb()NSqXSBiRWgpd9zQA+5q; zgqr^(3fkp+r|o}E-+{5V@6Qs~C9f`N8(cku>9<&NaMEruQ6b+RNTgkVNBb82Rz_7& z8;z42GS(9I)UqJ*$L6Sh$gSHk-;flqQ!slJ7Ai=)Z~t&>085uJlX{k~;h+W5lctC% z9aD)x78N&}dEf^WYNCuc?d*X${|BxU&B;iDCr*i{8t`_!oEOYEx94OMaaWqmdO}9& z2O>e96h}LdH6|Vx>2CkuiGo$+jfiw4XPD`!?Qeu6OToHi87g%(NVdZ#?PKN%H)2Vm zor5?_IpqHDj;1SV)3H*P$9cR2e;>#`-45{(@}C4Bk$KF))q7flBR=D0I1V1p_Vb7KA!nV((+qXideR^qFrl&Ih8 zL3p|~fMnKS5h!1HfEFh?Q=@WvMOkBs-osh=Mvd{wd|Wp>b+|gDCOgGiX3keA!;&gLxg=Vm2X&vCxAibXsoG|-tjw`h*H-qIA-w| z&yEIjJ*&vIG@H}2EAhwFDz0zhBOoTGi0Hgo{BqW)P-@sX;^ws$yup1Sl4|r>ddJ01F5B9dqqcue&gPymLy=dIYH{)lrFjl_^b=y)wm-rfb%F*Xr8 z->=;S3jbs#n{hU`D|0_hR$Ee?>s_?_;u@aptkyX(o;TweKuO|*1lI}sV^))f%wy?` zQ4-xOi{hLR$#sNl@PyoToal;Xqk}9vTOeASdwPOp{uL=L3Ou>*?lxmT-Y10H*C_$` z&WM-;#o0I{s}MiMb?KX_WSrZ@^K;xE@HNpcM%;QtHWqXkZ=$JW=rls0N3_7_09FIA z8KVwLf$W=%iFetdrs6oRcYfd;SLtX*I&2aMzzAzrhiZ<1z5rz40Ekf$a|6(!Fa1d$ zGhZitGZWbx9yp%!1G%ZpD*aM80O2@A%)`utT7Dr>tEG`4ChUMY&30F)nmHfWAB_1? z;#vtxl_1K?8Gp9XGTOKAv%}|%N>Gu)*B%HX0GEYa!}hfaRz)i$rivF=Ax@(3ha$RM z*pT;qG{!OI`+p}&-c59k$>`_Sh2qX>hUUfAhhx4a8%41l+b~l2$oqVbGp&vcVbVLY z1@7l>B!jQO4@TH==fmjnd8UJQ&k)UJA^Y%19E*HII*BsNh1NLjU|oxLN_Ilr6Hi^e9bnyr~G9x5=C^%^ReVoWz7;B3{!pLyt)882($h zSKu(blm?`jiwq{?Dk^?kI5yF=VJ`KnMaP;=r5B}Mul-DH(8K~ly{K^#beabq1eT?s zDZcZ1kc`7qUR}gu9KLIf(JLLa z4B`W*9)IRkxPL|S??OmD5H~}2E7XttdhG0T;+a_H2mg{OMuV8#&~!Lx7(y{Ej>M)d zWm)qBt&8@NYkJP%c2b4yPK}`dPIS2BRum;E_$?sc7kt3;I5t7vvNBsWvMf30MSz88X7qX9`~o;$9EXN{5>XbP(Sk(UD`DCILGndDYYkylS$ z3=z`NGFW&GPz3e_fqL1eV_;4IUp&r2Xiu|+!EP3Tcz>6FR<5p6LypFIWb=p&)X8>S zkjErcB&UW)Z;; z#&|ZV>j@?De;lE2I-F3ic!na&QAIydrX-eSj32i15!%`R$u;LT@%8U2Zvg64E!h+{PtaLlz1dY+Ff4hmKd4tTW#DI&+ZEj1 zk^{dh>cP>RNe@Nrd2bo5WUrb%9S=9s>+|pFNTj zVM<3;Fa`KcrkzudxUSTCf2Sr7982wzyWY%fzEb4Q2@yWNc{6lk-yxPvB#R?VqbdO< z2cFl9r~}|*G(?3L)-qT%WOosNasakhMBZb9zsuYhS+_>2%hd9Sc*;l9i^RiOrN01j z*|;)01tQP|nCwPW1k>ZV4#p~vuymY;#+h?`2OuN8sS+9rxgmG?fHm2vaRid->C?RC z6Um>6Sd+FLaLP$i1U|*P)B#c^?!SC8)48)7&(ol}2JjdW+kUFEAgOB8PA`5fk&P^H z>F}o9YCaU}$+s1cnE&s@enDki+*jG{2;N;uhUO-^Kyl!VqlA0A@qZ`!r>`S)J?Ha` z7A<^)!+lrU<2Kg}-*yGp`mmn?ks?__X$m$$q$*%U6K^9Q^V zTI8Dr$dr1+cV9BZP#=QK1j^;y1>$T=17b9tQ}dTVnogdiM)WnJsRuCL!{RkGN?at!9bj*`gHq1&y=mQiAdXWmegGt}Pw%W@}-xk!QI>5J@ z3!z{dtm-!?Q=03}cVDK94adsvLW_QZWg=lB7T|~n$Ctqj!{NkKqQ?tZfax{+tVj^> z@h%*AP<>mN&n@o2Hj@TO`X%!t>aSY*QTXZHug<7}uF;a&K!@^q&^qZ$LzrlQ2`={o z>LDNq`MNvH8UJAj<2z7kH&AbQU9|Tm&9}<-e$JVmf2bp0K3*BqapJ9ZWd2*uSkhfG zcm!8ovh?8Y!d~Sub}ElG$a9N-U4p8usTw>f`EvhT;z6+%HVzWx8==BH(f9lO<~JMb zY4&tdSWC!(Lz;)XaG2(K$_8eUn$Yq0CN-eKb^W?a3Ly2_7l6|twe@dU!&dZ0Tby%R z8c;XWeZkLw^tE^ghxqqQyZg03myM_7bABJDPh*r?Wc{Ge3GR;ZhJ1rMHWQdlIKL&P zN)NZ==*fHqN^gdo2dOvb1-1oIa+pRB?Z+>5lyZ<%XGp{cutgDPK*|Fyo zlhzkT-Ygm92`_z6{UHC#@cRtY0xz<2wu*@Uv1Abxp*9rZ7?yJPYHw!y$U8Fl)d_C> zVdv)mu18n=IsgT75;l@X@Ima=yEg=|`@TPR??8k$7_U;P8jEW@d&eh^ob>2gU}}G5 zrrXaDIihqEWoXTMPNo*!sV=VIe7U`;+^(s4`0d>jjR#3HlADS4tt?@aOMbWmYFlSRd=D0l&%ZQ<)kJ=us0&-A`8;keW&Xq;R1b zL6GA((o9=!Kcx!EjeRa3s4+&+$_3fI1wI2;-;c%G zCHcqb-7}IlmxlB8$eWuV6KrkRZ>Hc9G}ucE%-?r9UxCq@l4L? zh?y#wp-ej#Kv4?R^10`?r+yV2^dLu~@7$%vn*UB5bUWfooPNZHZk>R+0FVGBNkcBg zv&@IOEqEt?LFMYg)tFPbQ>*VcHCVHoJb^tA+L%+%8lq$6_AB4x-GQxLCqQcb-xbD)hJME0+p4!;0MYN2CD_KiNq5h_ zCHWbv+iN6O{RvVSyZ^feRc6q1dd*^$*eSFP7#gZfsacbOxG}|?o2^s^J51~l(@UT? z)b@M!d)lP~PDiCD%L}?P%<7aTxpYy+iH8fFQ-AXRJ$YlpDZ$%G@<9-8z9`fktVm4d zxG~fi>Pp+ok4*jTYf5{)U356N8Pcr!n-%uVl6tT44p()+UCpu_93$B7G*Peqwh)Kv zX2;cL7TD{y(O4Z!pz-GBj04o;muaCKU`<4A7vo}%(MxuAgID-1L@wM`;#)Qttf&h4 z?}R;~KXl|5|@bR^Ge^3hPD%rq-1OPIo`4m?*LL z+^>`VrhA85ycL_O8(y1Jn+im`t#>2Xi{|aHHAv7Sd(Z2gHh*gOK$s3~0>VO$!T8wz za;YVsa`9FER>TjNua-R0wm?amAQ{LUV*ekbheL= zyE}AS95YyhcAibDJ@TI3t+?vqHG!gD@)|!)BaA0m-(I&*%1kP>Ej$SSFQ{5#>+z;O zlDWTdGD!pVjRkj+!nz4G49$lLbi70PB)}9eCV2&uS&S;3SJj(Q%v;IUH==7^&F_A^ zurgutQC$P>M0XWtH`RPN&P2!m{)sU(@|jmV!njlx!D~Wq3Ajt@l9PVj*_1t4_atae zrFs_v@8-mrx~~*-J*v<#)y~dhVbZnv_IQpH@D4N>b*-=(5(WvJXmv*|oof-RX-H8_ ze#7_t5;J4j$k2xZ`{Z*03>vlEBVGO!)aJQhlroV94jjlsR3jKWFmM!@sR&K3y!tq{ z-ZW4NW>Ls~Z%&Uteb3jJB)aj4$8GX_JC+z*g(725dV8Tks|~QG1Mlq} zw|W3qABRF}Wta0UG?SX@ouh^VDSAe>Uua0D)y2GRp>}=V3{puUHfP0IwO|~xu6taF zChA@sJGttRYNlCrT!CJBBqq$Qs&g$`YExG&XuUo0i_#&)*{=Xcq}p=qy!dVk-QLt9 zh1+LCY^j?*$|LL^{vy3DjnXuq?2 z?dO0az`N{^N=|cey@uvMFLN#Y-bJO<$ejVZG{n+HR}D|Zk~IcOg=>>s`2SI1 zB2S^b^kD1c+aIhMd%tSqAU|X=+C+^|K`m!nhRW8ilzn9q>abS)e4S_QBdJ%ykqS*qoT3H%=Zw!t(!Ct1E$|~P%%!phC!40Lf!##6`m@iI%qq8Onoc8XiKAWs z(E`|T7IT!saT~w($aC}{>vEPlj3Q#;*nog==7gW+2{cP|Al_B4**ow&g7s&4oF?%V zC6-LoD_2Oak7i2F#?jR46S(f(mR#MdAcQn?x38-6#$Q$ZN6_|__YU5 z{*IP6=gjkjj7qh}FT49f(-h@j=daehg`{`I9d{^PJ-N3dsJF;ntS{w3d0vNS+U5C# zSZV`8U`x7W^(K)v({h?17kUv{pf!8O#m;BnC-l~30?)Kta0Lzih2!D%gzdBht+i{>pdyI?>qA4~h>V1x#|%sLEbiSiZkNXZlkSEy`7mmP;~h>>9i!-vvLGfMJeWT(^RL%BPpFCWkSwi^5>W3#F0{W|}UTnh;r_$#%h%5xUtA-)c3$?HF_ zOa=C~ktEeqFUasEadv|ASK6OcXBs6(HCLczo+0Fn;4PfteE7hVXS~x#k7K%8A6Xv> z6%N!0%TVG=y5{T|0T;mo&sHY|K}rBq%eh~0bC9x3dzMg1^EG+_905567$^NyZ+kvy z)bM8d?pVYvzH}_%4|Pkz^MzmeN^|}4ZZbucchMz6(;j76pN*iRU84r%!^&lfjdsrl z2*yaLdg-<;*@#4yPHMdJe4-o2ys!!2ELSa0%HKqF8jT$NcfzXZZz`qp+j0Mh-lcio zNiB3FYi2p&>lpU-8)tK(Fb1ZiUIhs~e%|v}GikXY%;2PbIp4C%l>&Dwg^==}yEV>) z1#nm!sMiRslmOc(nAbn|CsLOFFgZV$nalm5}(Bdhyj$KVVn z6+w+P_>MKjJ>rUEEdob}xBRn}#TnA{f3Q7Yx3-#A#U|=`v>h{i&Z%p#`!XV4TCh~^ zKxzHVP=pKLu`8N;y9J<{t4n%IW`^PseuZg38xO_BXfKMDG9J+8m!)&9snn! zjRJF7=MOAA7^_X?tEF@2u!znH(|S1yvi`~9V4YUXRsIs`hjVscEmeqlB~WCOKy%3< zEJ!pzKu;iukZQ%){+&}7jSq+{VQklHv`n;B=Hf;`0Sb!LXsNR6u8I48^)ROuU(ZX>4>`(d5y=+ET80`~& z_-Lc?zZ2c7pT|~ru4VHyI88mw|JzS`f0?**^nvj6kNe|0&I|PeQ`v1V1OCxUx?B-; zwIJee!H+Z7_;kuwc3g3HJ$~CY5E>^JLGt18aTs>c-w90G$6!rWmJ6;}Eg@g;h z1sW$~8(fIlZO{djK`Xh3v!QLjOClbNbWR58d+WKjduqpQ3v|v)4c? zE{M)O%Ns__;h)OLOjKbf?}g18#EjJ-#X;in4r*ry!X%528mTlAhx0i*$%=XJxkan< z-(?nG?)vC&xaT(-RcfD$Z7{$6ljYdkOc6N>v!m zmf3eljs+Zw_}EhoJDiX4*|PjxRJ{_g$|nW{ZZ4+}X%_{aQY}RM3reKujyQ>##^yJn z4&95*KTUN4b#$|8Zy}MN9w`nE5ZvLMBhd2hq#XV5NngpJuBr<_QDt{`69ffee#?@D(Vw7yArs<4fni}&m& zW`ap%r#p`nvARY0H!?wrK4QDP=iXqj`7#9z%gP(y&8G%)Qv}K;1zjf34%6L!+iHrAa7AK;;OWF)IIz zQ_FvQb4sQ1FP@u?btN zo&wiV!JS%_&YcU_c`BV1ljmsVHjiS$$j(a<>kUDX+hW~sXNz3oG_YDJ8t3$?illJw z)wUU0yIy*Ad_AYSQKq}Ctp-2FUVJOLwk@9hrifb~Ab&Q)Sv|_Q&^3m_Y?&Kvbf}ft zt!Df$Zr7|w=|{`pycF`6FyrLTDN@(n_G(Q2_rgY;LaYm@;ho`p98)vkCn0L75p)#z zmwV6G`zk5#WNlw{+t2x5qtHU66+F*A3H05%m45&_^>24oYUshgyQLpL$LMsYTv$Cb zW+S6dO-!s92n$t`=WkmvYINYKdS<(Hd_GI)c+MyCP7)0De!5hQ0*kv&h@%{l<3P&( zRsXrW{^OZc{p}8ULHIEtI5wOLX82wr0rbOu3ZN zV;lK!HnX?tS-vNN6O}(bLBV_$K$U26T|b_*5i8L6Bv6j6V6qEeVe#@Y<+P1%f;Fu$ z)!-RSu`11ex-r7pUbB7OFQ~xEzf5g*XxK98&oFlW-Z6lj-7?CE5_@Mw*EwV4iCXqn z%p8VYM^}lhNR%)|ScVI+nHlISE2j`UbIDuAG`YI~#&d;p_}91_ExM)ESjpOXDLqkv zsy)uzL_b#P@V8kFYt#mD36KSF)Wa0xx03Z3A-AJ&rwp!Nj9}%741YBJ*}v$N`W^)t zSq|W6@tK>(q%XQn=!*HSfBYEQTiagJlkcEVO_F?s@h!Z%sU;l9s(C|I3erh+)53N& zy>eo|{NHcr4?x9G&JW=@OnsWB+rIe~U%nqtqgsXlCk`;{S_h%PPg2OvKB}dBlm16I zMB3OTD0My2{C~UgMgX|(18|Vxt(>AH`AuC3{P{qtT~N{xHGuM0n&Ell#0Jy%=*YDX z?Io`Cu-+22k<;?GW#W9jQ<4vzE$~T$39rh|o`VVNOs1Lsk)#c)_(E;j zuQjtNVD+qUa49c#;+V%8S&xi?`Ni%FRn}{oh}ImcWhy3vC1clM;ULn=z)D*@2M%sK1j?D|$4nshg@ zyah(@i`!jO@ea%RD?`4UW_q6@G38Xmh*3YQ7D_)hAT~68&{lp+#)n$DUcOz^M_E_( zHlFkqPP>#j%*fbnTMH8~@=R0hdzn|=rZ*#Q;dF%e;MH)QlUp*w#-5w_-;>eOI)uSL zS`w*GUGpU_I4s1>PNSR&KlQ1HVm0{+bYUH|3T>mgy??nykPu0)SLjC%RANhKX3y~} z0mKDVsliPap!e>s1Q!04KFQ(e8oeSSOVEeEZXtG7)aX>?ermbba!w1cukD+Mq8Zi> z0s+t1aT(JFlxZ)?Ap19f(Ngwmsu6Jnt3tajI&hK@{#`U(l~C#|p8NbrAV`6N6>URY z^s~~Z7BDRnmQ_fMyrjHe=U)AHB7S;l0rtQ?{&9Q2a$bw;5Js&-+b1Bt41&B2JQ^&I zyLifRb8@(5&eKM+*TNO?JY*8fPiZbw$Y?3-{2Zr2na?LgIy=Mvnvz!tF%#{)+3jYe ziwlZ=Te^GYOtyrsi#!MrbTT1-7Y3GkZt^GQ^VoPRK}X9n>2$t9B_*lnlEHFS&GyP4 z4^pF_>gnT@@P{GO8P^Th>^9~<(#QYuRLP!a*-L#Qugsgmf9a)~W)q)Xw}p51ys<(K z#VoqPUcB>|A$z%WYh{`IvwQul)FLx|`KKZ=P%hzUy2-G{VVz*2@mJF;#e5@Q3_NpJ zj_|)Hs~ZT^&g|Qnb;=$74Ly9Z0a>FmQ?EZD@?!R;lS6CFzwGI&_Hx;DD6>vkH5VRB zJJS&vZ88VkHD%v%Xg#|yvtW2jV>QB=Q#KnR{zgo=Zr3{Uf8QvhK^S|-WvNrHq6N-N z@MmRb>Yf3V@-@@tuBg+Wg3O>c0x6ntLy@L(lgT#7*wua04oAlbhve$&Fq_i>czH3v z&>X@#&IXqs(o?<;+?x`3RdAA7dXoNI1YUmZrud67=rbnBNqKPU+`!Rg-5=Ne{C}1h z_;W*QtbxvsO?SE$qGz-}-%o$N9*Y@K1c+&`1y*}+99*7zxmW!M>)T`Etnkx$myvlY z!{)&sdF}C>;|Q)=)zDpOWZdI-pG3lp+`pfy_r8kro6j5Ls{S2DJh3DcN3VWcKKU^G zXkWe2FS+jZC%i_byF&c3MjMaVuV6@b4=c)$1Hsg+-ITIi zC&OVg#4(LtumnQssKJ0FEFC$8JkMHl|L#zFeca))#iJg?C&sP&lQS=%@8~P zScu*=ROR(m&rcydFUwXRawklz*gnGyFPU7XRC1g;zDtXLuRm^2^U0g;IRDIMe-u=W z_|bcP-UnGw)!bG(^!52|@!05Rw7_oYUSu9~d1YSN)JFtE$ zj!6XgnC(w@%z_bzuroPliv@ZtMBnGPy)a!}9#~U$N*w%av1H%;X)3zuQWN#t;4Gb> zT)2c5dsrq~@=BH18!w+4STI5yS^cFT@U9H4FndwVhxISW*!gX-RjEGjF=t!uZI=7c zy$v>fF3K4D!(fT#xQAA({ir)v(Fb>w0p(WcgC^)1Uar z`0`JZrr-d-)=1%v6}+kh^_^zyoU!fQ9-oz?e(SCpDx)pG^-td7%95e=vwuaipq>_= z6y2cQF3MdY$8@Tr``oF>bMLWwk+;Prtw7%izLvOBb3r?mnlr+J#+iJ1exQDMxH36*U}t3ZnIH>D48}3?YpR2~J<9pWM_OwW#?S zbDeT-AUBD=I-E58N^!?WGI z$2{-zV(w195}wZ5uxaQsYK6zL}5qgpCXi0?Bo)-NizqPh4gx|grR~$Dr%#2UirgM zc|MsG!&##Y1(U6dGo6fi+-i*aok{(yY<$syOx+2=(P8qope{qxr!w6r%$j0aVg zTpnYW+Qn^Hp|hkr?3|h=o6Ch=XO(k7yJuCgu?tpCa7KOumbG|SVc5*!BQ)7q?(%H6 z;q|BD^DA8&6_FQ=ObdD?CKXX;1WN_I>15P`n2e>biT~a-YmNB6U?;cV$cc1jtUag7n@N6H@iCGP63Gx*CAupr3| z(+nljEBVMI!~DYr$=}MmX4tn6#89VP&%H2sKJ&A!KcV0U-bq_7X{tG&bGuZz%w$R4 z@H;POsM(XITh zVz4l?$!!(5(G=C|Q-l zso67wu84lgh9(yfGExZ$vzg^Xh;ZF{Hl^e7CDtrxRuHR^_+9k1olupR9zH?yywgCC zLK`$0<)u`bsn#vpl|Egbqg2v$o8&Vti8 zPC5TiozR?guNGnYK5`d+t4I@MTa+)qSUyS}ZO*Nkw*0x92pbbIpZ#Yy*ka@7+MORM z19LEKa^x#1s17HMb!cQ4#{OZ!;VAsWDCHdmdMmaOOS!fvt3L3_7pam_rBKtyy(Rf) zU#aY(oD<{!-_f}^GTHzC|Gtw%$T`f&Hgi4=W9E?Kj5(`F2W*bbX?z?ya620|t_?XR zheWr#Y}}%hGg~>vU0YNRE9#y?C33ib`~Loe>+rs=_v`(9y`GOJD%Sy7@vF|R{yDJgmna#hLRd=kjh8%?;{i+V=fHlspq!6|lwHP-ciWVgX>!0F|kNr*Woz78VOL}I8 z1HC2gyQ|gCR|UQ*XZ1?}A(5BblO|qb0!R$0)xUht`Zneu?VKh#Fz;pb5*9U?Tjt3! z{W=}|zJ<*XexpWAb?^|muAQ%Sx2PRSj9(%|C7CkHitgmWUl}taQdlg4(LXXai{Ub7 zf~%Cmp=S7nlR^%Sj62D!uSOO__ZW8)^R1*fZ|QjVll4!OC`e=zui%(k{ha?sF6E|p zC2%KgELSI}B%w!nPs#;dr|_+E=OOErhGat^@$tyo|3$d~JP@&CXt=xv_`53qoO+#$6ZM#GVWZ~ZUnoB6p*v3~ z7dA*mJ%rmlS-ok?RiS_RVOtY4chXrQgX1bHLi|6*r(dSH5y$0_44+?gO%&a>% zPu}aFbkhgvfN1U@5j8IpP=VA!^TQ7IeTkLyK9hd=hB@_tuV=}Ib^S6y2r%xgp5QM7B?Zg6cTL&6Jn}h4=03dF93MtTUTH z#T(`HjJ)&}#VBR%6eUyBCjW<=h)yd`8>S!@|7kIj^BQ5I#9PE0evjzdvaWrjL>U5i z1-SeXjxZUZ*c@v5DnkJIwI68dD~B7hy*6LiiK zwA+@SMqDgV94Zp2kA&RulIzlkW%B%BUz|vomg(vFLuyvaqf9Z?mo_6@)8e|k6%9_A z{Z>?nNx719@5%JyO zK?^EbXAX*bPUnYKn4To7xkNEagJv|P_DMzw!HJU9=8!CJ#|?erC~Ere=o*4w@~xev zr2UJl$$5Q4-EKpAY=&{vqPM)!Y2d{9hU*$rclLGyuY>fc0r(h1_9sx2IVH)_Cn~8IQ~FK{xeidondX{zXt}Yx=!Y_zBN|;1 zYCnq4q3eKIfACXTEmfoyEkM{w%4;n6J|RCt{Nd4^q$n^OEQ!uDC8D^p9kuii^aYjo zJDUNxWav{X#n_=pMm>@XWi@RXD9bv8Q8BQ zmpdY%&L%&w1NAg6IsZ~=HSGQB{boDjBAy1^g1+;>|8ZV3o_47c#xhfe#WL(X(N-`?f9`8#`W&GJcomW*8k(OKE$$493RsSH*;VG32CYHqKaohKl zSkrCouc0sc7djGD(`W9UQmY&2-?q#iT@23gz<8P9`#0k^EF-cqs=>S)T2fo4BQmB| zeCFtqWYNAvk1{x=ZF;DJ6NS6V7P`9_b52;AUnLRk{WC>wZ0rA?1$G{?9DdZ#)vbe4 zd$$KY+ADe{X%CP$r%4AvGS`x1rD9Pa*;bG2svHPlVTTc)_R`0U=s3{XQJ-idtlg+w>B zuK_r{&kfmNc8>~S2Ti)_@GcKj23+BM>Zo|D5gt_3Wi23Biiw?m4CCSGTIrXEqePt6 z5|rE-UFN*hP!1^F;mTs#sqO(mQ&-nQBw?Aj@>s1LH}+g@8_P5kcd^y`P@6hJ=zzca$X$B~~ijv{3agW)b!KXeFM`TC}?& z0F60HJW7tq_-kuH(lzf8|{T>M8w0Zz=w)2}W1m#eGWu3;i9XEu**lMc+r`%*GEW zC!mxeJv4@wRHGnaWC`RI0-Q{BIxcJOYG%u(uITFUUkaBXeSF^}L%z3!%&(de+B${yh7g zjv~J|$$fvP3$gS@!-8sl?4GJ5+{xv-Oxk#~ad{!)Olws;TdcO28MgMvO$ke|m7b)< z3@+YHXxrv2wW9dg#p3$MAfzQJy=33khou;!xCb;;Y>mED>u68;tGES>a8Wiw%qovw zEJA4mZ79EB$HhzqEf8)ig8obj6tJm5iQUeez&_~zjzlFabFkMjw%8Qx@? zrX|EDLae0!Z~Wq)l@FjvtLwa)bx?Uy;prbr&02o7*#?3T$v5&_8nWuAeY~MDP7Z zOdG$ZY=Zco}PS~WJ5G{)3IGJsJ-0qIL(?A zZyS#dP;gx*e~@DjvbK_c6}JBZJZ)9w7dkJxFXteHfoRA-G6lzd?4ym3hjKqV_$A?~ zm?rAEF&&@~VYAYV(L7F|^nU^<1eTq^uM)s`jGhT(egX~(>o#)ra57%C{Fc{p=P~IN zZwxDnZY>|+*U;Eqs5??qb#bSMtlcZ_uQgQ|^vgu@AMx)|XtI^-d*1()BkW7|9TZ$BfSZo-bql%}rvDP34k5R%S#sS2eDEZ8`eHD#Rzlk|>8jgu*D{~a% zy4#jxaUQTpTo<<7ZC_M_Ek?F>Xty7N)yo)eYw&!$IF(ue)EClyTU_stCbE8o)c8(c z4OLO))&DQ4PDZj>mfkv4ws#q>#x{(tFO$Si^R?CHL<8~q!jS2XtE~6ucnC_sy2Sw0dEP$ z<)Wn7a@cXNwCQ*WF3TiZWjxXTG;80aiF9w*91g`@b@)prDC{+B*_Kzp`qYCec=&bn zrw^tN#3XYK0(QpMV!39FYnq%UYM33P8+assY4W{q-uuZwz%AsaX&m|LfgE_}0VF&_ z(kC#4e}UJ~d^UVBPH?d&+joo~tA((ECvoVi+#(DVIk^B*B`2A_wNyhHBI7f3nwAjS z$|d_4ihyi}yad$jG~cqZ79QI6GtroVw^~#hO+Ypk!xPYXj|j48&V(CAR+?=$vz07= z?UdwO8RJ~of4?!sN$&XR*Dlvom}5#8@EfC5dL0YO@)TW2Zf?mw#UDI+%zb*yXa`gy z66m0r@vn2I<+d_X2j)mc_=bt9`6M7*)QBSoJK)?ix;53XRS5T;ZMgi&g1uAcQ2yQh z>r7*UM`c?nCaUIrq35lDn4^ndFb?N5sy zc$lr^cR>7lGWSAJo8RiCHD1Qj{uh$)b9vm;WJibQs?$g=^WTlZ_RRu2yTx4KBF#@_ z{EH4a*VtA_btHbdbt+>!LJeES8kV$@)HybDq&)68Bo%ekL8)`DXf#%-a?CahZUMU zt>fzwM?IV(>EU6msLAL!U6EHF^$Y}tk)ZYUG}n{&M>8ysV5D)qv4h_wFi+b^o?3SQ zHGGX+QrQwhbq>#lN)&+5qE+$;_#mNNEjM7}X5pK3d^QDs>r)ELBEXfUK4tnbn%i_tJl3;FGEdT zg*eHq(sLRru_F&|7H-9N6zz_#j=e*Ace!uffOF-TBemHLFFj`4FAa0FnhgezYZEU> z@mxyb*YblISiSAFV*o8@*e&7lyDd?T6*nca5-@RJhc{n`v=?_r z4jH9@8xL}a=_*6_6<@m)rVIPAm}4ZO4muZIaOd1ifndX*xo~RvEu4px7&6^IS)r{t zWX@~_Txi+SUI0)BHXY-=teoA}ysmg9TwDBjXCSL#^86w%tKBX>1jC5TEZ|-P9FAnw z+eu!9K`IHsH5K7_)u+?*6-K#Z)7K@_L>{XJzt+5}jNb~x*+r`l(empudTH~_=lC1w zzASHxE)VCnlElG{!35dXtfB+nN0_QMkzDPblzh=D9VI69phTTJn$`>`fZ(rJ`+K(6xXOFtmjg`Uq^Qy{H&yVN0 zGliApWhw?G3j8Xjj#m=`b&QSQS?9O(U>%#C65yXSyPOm>_h1dKrmCA~K_v&av|jpJ z_rEBQZ-raVhPVP=j09{YuwmF>`Af9RxrcOb?iZbNSVt~kBK5`D`ZmLZYR?;9;JW~& zSdB;;FIN_2zW7gck?Hr04X{2nA`O_gQF4pqr~h0bnXzV;O6GQaCX2!0o;`1@a_2W5 z0a3gh#HF2o6h`RY-ONKbCXRU(+(5Jie`k%lkuC`jyH=EcOhS(gk5S;Rf;g(|0B?D= z=6CJ$0)gJCQk9|?Q6In@%>x%F+B&3w0#&bebO(KE7|NgsIs`Rlrc8p$MwBAC@&c;YduQ=&i52zSjeSY` z%4Nen*&y=ule(NQ8=c+Y*aen}CvQf*T_t_1k zt65{t&Z;)Mo*|{d%iz@8e-U7~@(tyU`-e{#b!j{gxoPY*1tG!>#(qy$!vp1Mu71=? zYx`7GnsdRuxnM4%Kg<=ks5+D?^TnN(w4;#9Q0XtN zs!AU6Z}9w5ev$dB;gPf3k>--L-}yYP>_8cH5OvL<%iW#wLL<>Epu2j(n}bmNLCnJI zpJWy)cG;fjUx(oHACtjP;3%8XHyb9xvM8k&5W;1x4#tiWn?ap5KfD3XlZB-MK90<& z4ZZsyP5H_naIS3q;Jsg}1|H7wl>GV|2Y}eDE_>P_f6>`nd2@`Q(UeN)*#@yP+w$E= z0V2n1Df2!Wb5%|YNfmc-fwn^DMw)nj{ZCHB`_;iZb)`bSTqA<(56u+s?z*n$uyh>n;L{&!9%DTrWc5))VDOVxPvYOhM4K7ii~?E?Qku`(+$o z=nIuV+#DAyD=Rr9dvGew7Z-O>9Cz7HAK{8VbU%clV~0ocMZ4S|%KlJolpM>T^O4gT zZbBPz#w*7@36w@7n^ir5y(c&TEiU|OOg>|lEe{aia+B><*?RwMxI4Y)A_-r1HrtoN z5vtvrTasAq(_>`IJq!Q0;6WN=UWf6)^f|jN%qk`yFcJUb9%L7dH8KzNNia5sTn?08 z@@hWJj*vh4A|#a2=7gmFZYgz%ENbmBbV#9;sCP74+5(3&x3Q#a#a`>;YcDKtk%+|` zV-v+Ui@K`u63yH*ft+WUtx1KaRNqpJjjHTZT8l*hnA=oZhmWT7A8?z~gmq}4bqvom z{f~{$a+VO`fD%5xOkuoiR;8@tsoFPbR%@jNb@|U7FfbdIQHap~p3X{K{BbglmWQqj zG=(Cv?8BCJz+sa75)^S!=_-6m24Q`{rU7PGeu?(!7fPXk87GY%FuN6?;W9y$8qpmo z#VX5@^Q0XMUl(?N(RfcDY#@AavICPWi&^dOuF28DHp9vEIoNoioxhzhe$F?o!Cg$GCFzNtMNl+rsQjR* zWTo6jJX}*3%uF!;lkqth4gB0NDSZYjqqvmR!Q*cf4`@~N|C1haMQDQLOOyR%aX6Uz z6XFwBP!+cI$#AN;k5hQ8RSvfc;T#mKF8pIl7+kSA7Ue`j$HM$3m*(-JT`|r{$yYM= zcLcg7{UEoOa%Un~!l)^2;*CMRVh5c3Q%PF#f5$S|5LRo!pBBA0SL4SI+#0Z5LiLt1ADXguJHa``dU z&SUx$6l2Prvw(hV!qUsaAe<{+@(QDK%CWH;Df=9_ZQlRIHNB(lD?HK6a$CBx7_>3< zwgApqVDGRtlD!u^vo6*)d8%rwAPosq3vXAJP0R=47tHAi^{-&#j;+6xT0*#Rr`3^R z!?2Lnx<59HT7B5{3ULE z+(v|xrT3h(@2rEor-7n+I3|JbebUr6dFJs_A*p1si*U6?Pn&Hl-b%N0zH0u^x^LnO zt%JOSS7TdoYu?(1ufqcOlnTnVsYXkPiaf#wM`a=QVy9Fj%JXji=GgiocoDCDh?+H>3u^& ze9t4{i&)?S!H@MsOw36h5EDp>%4GN_W_IOg$UAE>ul3r>KsESd@ZIA04MMvO)aiY_ z8RHe<%%_l4HIf){UF+T&sg(UDPbc34Z5R;e!S6DI!s@~Ul^EpY2tM=$rNX!A4i@vBLfi1CDCleMToi$3VNo0ONv zivl;#eJgJ~=d(j+3|#*1^1Y+t8IFsi_;914JJC~&JNH@U%aL57Cz)8u9*;c*ZOFrH zE}!#A(;4F@o?IQ9WQl!SS|wpfk=ndWHup{3R0ia{?>3SCLFQk^pJ^hUXBO8%tS1FM zGFFIj^5tPeI|qleqD}5cKBD^=q_hUU!Qt}t7H!6Sv3R~H^=Q`!u9owfJ*3%^#Nt~J z=b;gcF-WxoasRMlAvyr{pK8_q^-xL2HDM|6vgum^Du9h-eVkNqUZ>0)o19HvjJHJG zI$kl;TT&Z7_ZYWj2>3$3pLdCbk3Ji_COH*4230I;Xb8`$1iyi!M$%u3LRw%DX`u#L z1ZFJLbCEP;jD2Sd>CByOgOc!T&13vuA_A-8@>ic$+R~)n?GM*$##7-VA0@(5e^+`J z1*|2QV-+T4m{-2n61oWKh%3+rjE69PI_cKxk=>2;8xqgaH?(nXkCq9uC?$RHy`ai; zyfB9;ta-Fr?)_pQ12$a92q)tHUBj*URU#fO_JHd+T^p;6jdX`DkD>64Cmdcgrir2n zgaY&6y%VAsNUUa zF7pl{UQavxcK-WK@h5iY2c6bKe~sRE!;yhoDUF;jF6ACG4q@CmbjJ5f*H3rFL+SjA zf8gg1^4}$$RdeL%)yc|SDeU#*B@(V>w(2}&Pf`d!G*ac4t6=eSsP6_=AXp-Am=~!2 z-*1@v4kkxIs&9=8!`tB$$L5}GT^-%>(Jh;VmAh%jiR)>|EsZC7y0T`A-9$qB#o?`J z+5)8oAL8{yimVB#cqC&R50!GKxA%L!&$uAWX;y5PyYK1^AH%B2#Aj@zhcX<(%h7=< zT^5Upi!psOC-BpW%4ZjEh#}D9v;aFHb#4q6KJ4uLfuS5KEUg)o*VplbmK+|-;eg0n zRZTBv^qW14LCd|7FP;zbiV%kf~d^kk=?BQw*P*U_RqAIEF$v= z;iJ7TRCF{<5&>cXOPhJKI2A3HcP)&^>WcDwJ(5PUIq8qlN^8Fefy7|f*@nwX%a46<@9`H~DwNXD7HjATN(D-@k zX!1e+Fxg(S|E;klyV?27-y!9MM#$|^$1@dJ^If?bV`1#6cua~+8iOQfyLLOMhOPcn z{qEv?ERSh<(tGd?=k0uW%ZtQ!iBYXcj<~*wmR-KkSn^m|>hsNBG2V6da2!G>V`CU$C^t2i zmnALpu(9{8h!l&phT?kLu#RshFxP0iVa>_FEkU29r9g5^rj;&H)8_2_*aA~B!{rAO zWAl1nLuBqP`9=-vm$F$KX8t*hIGG%dpR_xoqV!_L9eeBSn(0jXt!;zxtV7A1+t_qM zeNQ7OEdIn?+$fuLZH)Cmae3Lf5@`P?YEqxIl zGQvJk)Fx$TgAAup2RG_5+gP$uSeO z`|(Q2C+{gpUGa*<*E97p7t##u2H&yerEx09vSwB8W0(@f&r#Vp(4EgZ+_zg0iI=V~ z?kw`&LR6<_b|w}8+sDao=#esxbL*tCNICLL_$=E9Hl|fh8O~$Mb$K4)2a1nDbJgzjsJ7^BU4a&q@zL*D+aTi2XD4i@RAtay4y{!g&r4*n zXE#t%l3G7RaJ6{?8h&XZpc$zea1Pg7cwL{-7y3QNdjAw<(5!^1Urb(nAo9MjhWd4I zhdt?WKC3&hiT(5A-;Ga3R0GCeJ~Xst;Trj*YV>;ZAh_Hu^^98o z%5I!LkZLCR>Rm7oabei^WqRtdq7_C4Y87`V%Oad>a`;F#XP7A|%eOfm4eL>og?1=+ znev>uETrUsrCPj=CX9sOpe{TA9ct>{cTyx*$-%@@-7h{M91kfB#9gHF9$>zEcJy%` zLO;T(=RaGo*{5!P5OmPMbtVH#UtmC-Zr!P2nI?nDoQaO>p>YQVUynfT zuV!@DeP6f`C&+T8nY1-U`RyCGRfpr3#aabfloQ9fZ7!aOw`_ z2)=z{Iw8I6wGH``lSS zYdZLtlCs_*#=5xY^A3nW4-<-HN5Z-NrW4A?NDd@O(ClJqX?R}yn~Hys_U5<%Jo5QZ zknxTJ#&Zm1*fY=LrNuH!b`6#=JgFEdR9P z26jK-WT@)VU-$%whtss3FGP-aY0^J?_*9)-W)s%n=#TIg_i|P* z6HUOGEb_2l#*U`(uc_#ju5wcS-x3o#jkbXoP@>E9H8}csKc)N-)BR6JPPs~7W^GkC z9zJr<;RmBPpBF580@N$12*0l0Rd^xPc%|lXgbrliq_ zMw=n6aW$9Q{0FzX3r-+y3U}Sxwxn#n9g}OWdVcl4-!9}^ss=MAwvvloG1gW4F%@3P zvLD9o6`0iisum>~(yR-I%f_pDtL7yM8Syfar<%{xDlsT)KM*!~>41=a1a@`cj;qB{ zXO9_!ro02$ZG$l_IEO+slr&m5c0(U=j73pSx-t6WBe+zw$z)t(#~XhAIBPn z;(n+$MAu@3)nNC>uBGXjU*Cx99Fw5V*{nD{=J#JULJ?!j1elJzcX_1>lAV)|0qcwO z5V__<$KH-orx*HNXrXid)eMdBu+jQi6u)UniLCaJ_T=nJB9nAOd2;guPj%P=j%I(x z-gY}N0(K(QEpB@ni1%e}QdLt21G?TbVKq55!?W+Vui0lv5C5&9>yI_vHCHC>yjKg= zwS2CktbMOJI=H@N?5l2ZL&Kb9`WHjH zJvf*>?%8`XtEKcS_b-+4uN#{M*WtE_ekgu{(xl^S?nPE7*$*4$F`Kv}m=S0^^qjP% zQwzj3y5i+Zo`j!(ff`(;MtUTN;{p*$3cSF3Yp}CBvLTL7X~yy?fREErZGOYkwTn6Z z=e2T<84TZpIO-G1VRbe#8!MVEq<9;#;1Un-*k9I7!5jE5=bjVdIde?Td@Mg!!DvX2 z;2L(0ZGyvdC9z31;X${9W;LTvkecxNlf%75xSYk?^NmrdnyLE0jK~W5#g_S@*wK2i zjG(6~t0~>2$#0%pNs6K4t;)A&y({He+nzoUea{VC;xOeVyeU>@STcHi_Dwxd;uiI{ zEo-tt85{J$gFSJ%>}uoN=tP{Pgy`UEJ)scFiZUuIK5W6jyD05CM<(yhX#RN@ttY{ShGGICbT-<^;ot!XGa3J$0op#=Ww>E#?O+B3@!T+~xTUuovN2kVNI4If zz-M6=Uc_&dPOv3^jFMuXnCqMvRdir+G2gqQjUWMv!${0&^-P57pc*UR;r z#Z^iqw~%1W9CgCxx(PM&(pMp-#DNR>ZImnPNSRmJ<;-8=S7q*uXbffjT`K8|KF zSIU>mdeCYS2CI=~o*uk2$Z1O+Om_`;-GzBn|C`c(zs=jhktiM0F0{M6_kx|zRhl_5 zT~(PGQ)m9)Z}Wy8xgvhqI>Iz_cJ%w=$%xRnqQ~K23{;J zr43b03qFoCK?jHOOIws?)vGYFc>XPg)huTTV@2gsGg50`LF`~+*MdVe- zvlm?D4XOuzyI=4n6?o=XKMX(kr_3w=F3O>655+f4R6QQ@QM$R-6lkt?$lhyJ4Vtqq z%63~F4|NZDRYJ?2KyuBr;khPO-==}Ne449FcKa;>FF}2$G*Y1yt_chw{-xIzRHOH= zO+?mcg3MBWraXS}spO5>$#{`TB&Jsiz43`@#Z0DY(iUnP@8t02HG>Ys6O(BEWQE7; zh3(x1Vz7=aZvdQ~$u}4j?0A1XsZ)0ow@Y*OI-O(SBu0x3k3Cfn`>Xhm9mW_mhqc(? zM&w<~TevPUj(iQW{9VLRoj)2Y46R?>DZVI=b@eP=Yr&*H}w7JY-ia`2)RV z8PTQEY}13v#Pg?#Wv#3ZFJx!Ukvte+pVNVD`^b{Is42Seef4^V>Hg^_kfea9p}gC) zvjqL1540RaqE>}{T={1oO}SR=vMB7EXy4&weEjH`rZqW?_o66t5VoS(W8vPhxNg{N zdt~*O>c5je4{H04Tw*c7wTGEkvfMWR9IhZx4P1jdBxjN`pi0OqpxE8!L zwwYv`k*u&SP^$e#gh~r4Pe~uQQot3SoASEb7gE60PjUNEVIOw>iv#@@zSW%~8gawL z5_m^w%pO(At)vu^aA|{v;+PTk-aAIHWE_y`ty>@LTeVMpOno@bxRUZx1*+Tbhy*8hHU7aVXLl5C-I!C7Lq z%gBfGqqiM-9Q79igOh`oen|w%J>557#iusNJ)C}{&I!PI_-B@|G|*ABf{j*b0U#+djti5#dq>7Hp~qYUww0i~Hf zt!?;t{@Ay0>Vn{VftNZv>+@sU5`EE=2UOg(?Zxgi&EcOP8Y>+AIE +# +# Based on the example provided with the "script plugin" written by: +# Charlie Brej +# + +# Set the text colour in (rgb / 256) +text_colour.red = 0.0; +text_colour.green = 0.0; +text_colour.blue = 0.0; + +# Tinted text #988592 +tinted_text_colour.red = 0.0; +tinted_text_colour.green = 0.0; +tinted_text_colour.blue = 0.0; + +# Action Text - #ffffff - RGB 255 255 255 +action_text_colour.red = 0.0; +action_text_colour.green = 0.0; +action_text_colour.blue = 0.0; + +# Orange - #ff4012 - RGB 255 64 18 +debugsprite = Sprite(); +debugsprite_bottom = Sprite(); +debugsprite_medium = Sprite(); + +# are we currently prompting for a password? +prompt_active = 0; + +# General purpose function to create text +fun WriteText (text, colour) { + image = Image.Text (text, colour.red, colour.green, colour.blue); + return image; +} + +fun ImageToText (text) { + image = WriteText (text, text_colour); + return image; +} + +fun ImageToTintedText (text) { + image = WriteText (text, tinted_text_colour); + return image; +} + +fun ImageToActionText (text) { + image = WriteText (text, action_text_colour); + return image; +} + +fun Debug(text) { + debugsprite.SetImage(ImageToText (text)); +} + +fun DebugBottom(text) { + debugsprite_bottom.SetImage(ImageToText (text)); + debugsprite_bottom.SetPosition(0, (Window.GetHeight (0) - 20), 1); +} + +fun DebugMedium(text) { + debugsprite_medium.SetImage(ImageToText (text)); + debugsprite_medium.SetPosition(0, (Window.GetHeight (0) - 60), 1); +} + +fun TextYOffset() { + local.y; + local.text_height; + local.min_height; + + # Put the 1st line below the logo + some spacing + y = logo.y + logo.height + (progress_indicator.bullet_height * 7 ); # + logo_spacing; + + text_height = first_line_height * 7.5; + + min_height = Window.GetHeight(); + if (y + text_height > min_height) + y = min_height - text_height; + + if (y < progress_indicator.y + progress_indicator.height) + return progress_indicator.y + progress_indicator.height; + return y; +} + +#------------------------------String functions------------------------------- + +# This is the equivalent for strstr() +fun StringString(string, substring) { + start = 0; + while (String(string).CharAt (start)) { + walk = 0; + while (String(substring).CharAt (walk) == String(string).CharAt (start + walk) ) { + walk++; + if (!String(substring).CharAt (walk)) return start; + } + start++; + } + + return NULL; +} + +fun StringLength (string) { + index = 0; + while (String(string).CharAt(index)) index++; + return index; +} + +fun StringCopy (source, beginning, end) { + local.destination = ""; + for (index = beginning; ( ( (end == NULL) || (index <= end) ) && (String(source).CharAt(index)) ); index++) { + local.destination += String(source).CharAt(index); + } + + return local.destination; +} + +fun StringReplace (source, pattern, replacement) { + local.found = StringString(source, pattern); + if (local.found == NULL) + return source; + + local.new_string = StringCopy (source, 0, local.found - 1) + + replacement + + StringCopy (source, local.found + StringLength(pattern), NULL); + + return local.new_string; +} + +# it makes sense to use it only for +# numbers up to 100 +fun StringToInteger (str) { + int = -1; + for (i=0; i<=100; i++) { + if (i+"" == str) { + int = i; + break; + } + } + return int; +} + +#----------------------------------------------------------------------------- +# Previous background colour +# #300a24 --> 0.19, 0.04, 0.14 +# New background colour +# #2c001e --> 0.16, 0.00, 0.12 +# +Window.SetBackgroundTopColor (0.86, 0.84, 0.83); # Nice colour on top of the screen fading to +Window.SetBackgroundBottomColor (0.93, 0.93, 0.92); # an equally nice colour on the bottom + +bits_per_pixel = Window.GetBitsPerPixel (); +if (bits_per_pixel == 4) { + logo_filename = "edubuntu_logo16.png"; + progress_dot_off_filename = "progress_dot_off16.png"; + progress_dot_on_filename = "progress_dot_on16.png"; + password_field_filename = "password_field16.png"; +} else { + logo_filename = "edubuntu_logo.png"; + progress_dot_off_filename = "progress_dot_off.png"; + progress_dot_on_filename = "progress_dot_on.png"; + password_field_filename = "password_field.png"; +} + +logo.image = Image (logo_filename); +logo.sprite = Sprite (); +logo.sprite.SetImage (logo.image); +logo.width = logo.image.GetWidth (); +logo.height = logo.image.GetHeight (); +logo.x = Window.GetX () + Window.GetWidth () / 2 - logo.width / 2; +logo.y = Window.GetY () + Window.GetHeight () / 2 - logo.height; +logo.z = 1000; +logo.sprite.SetX (logo.x); +logo.sprite.SetY (logo.y); +logo.sprite.SetZ (logo.z); +logo.sprite.SetOpacity (1); + +# Spacing below the logo - in pixels +logo_spacing = logo.height * 4; + +message_notification[0].image = ImageToTintedText (""); +message_notification[1].image = ImageToTintedText (""); +fsck_notification.image = ImageToActionText (""); + +status = "normal"; + +progress_indicator.bullet_off = Image (progress_dot_off_filename); +progress_indicator.bullet_on = Image (progress_dot_on_filename); +progress_indicator.bullet_width = progress_indicator.bullet_off.GetWidth (); +progress_indicator.bullet_height = progress_indicator.bullet_off.GetHeight (); +progress_indicator.bullet_hspacing = progress_indicator.bullet_width * 1.1; +progress_indicator.width = progress_indicator.bullet_width * 5; +progress_indicator.height = progress_indicator.bullet_height; +progress_indicator.y = logo.y + logo.height + (logo.height / 4); +progress_indicator.x = Window.GetX () + Window.GetWidth () / 2 - progress_indicator.width / 2; # logo.x + 26; + +# use a fixed string with ascending and descending stems to calibrate the +# bounding box for the first message, so the messages below don't move up +# and down according to *their* height. +first_line_height = ImageToTintedText ("AfpqtM").GetHeight(); + +# if the user has a 640x480 or 800x600 display, we can't quite fit everything +# (including passphrase prompts) with the target spacing, so scoot the text up +# a bit if needed. +top_of_the_text = TextYOffset(); + +#-----------------------------------------Logo functions------------------------------ + +# Call this when updating the screen +fun draw_logo () { + logo.sprite.SetX (logo.x); + logo.sprite.SetY (logo.y); + logo.sprite.SetZ (logo.z); + logo.sprite.SetOpacity (1); +} + + +#-----------------------------------------Progress Indicator-------------------------- +fun set_progress_indicator () { + + + # Here we assume that we can store half bullets on each half of the screen + # together with some spacing + local.x = progress_indicator.x; + + for (index = 0; index <= 4; index++) { + # Set the "off" bullets + progress_indicator.bullets_off[index].sprite = Sprite (progress_indicator.bullet_off); + progress_indicator.bullets_off[index].sprite.SetPosition (local.x, progress_indicator.y, 1000); + progress_indicator.bullets_off[index].x = local.x; + progress_indicator.bullets_off[index].y = progress_indicator.y; + progress_indicator.bullets_off[index].sprite.SetOpacity (1); + + #local.debug_medium_string = "Progress indicator " + index + ": x = " + progress_indicator.bullets_off[index].x + + # ", y = " + progress_indicator.bullets_off[index].y + ", logo width = " + logo.width + + # ", logo height = " + logo.height + " " + screen_width + " " + screen_height; + # + #(index % 2) && DebugMedium (local.debug_medium_string) || DebugBottom (local.debug_medium_string); + + # Set the "on" bullets on top of the "off" bullets and make them transparent + progress_indicator.bullets_on[index].sprite = Sprite (progress_indicator.bullet_on); + progress_indicator.bullets_on[index].x = progress_indicator.bullets_off[index].x; + progress_indicator.bullets_on[index].y = progress_indicator.bullets_off[index].y; + progress_indicator.bullets_on[index].sprite.SetPosition (progress_indicator.bullets_on[index].x, progress_indicator.bullets_on[index].y, 10000); + + progress_indicator.bullets_on[index].sprite.SetOpacity (0); + + local.x += progress_indicator.bullet_hspacing; + } + #local.debug_string = "Progress indicator: x1 = " + progress_indicator.x + ", x2 = " + local.x + ", y = " + progress_indicator.y + + # ", x logo = " + logo.x + ", y logo = " + logo.y + ", indicator width = " + progress_indicator.width; + #Debug(progress_indicator.bullets_off[0].x); +} + + +# We have 2 bullets, one on top of the other: +# The white one is on top of the red one and the former should +# slowly fade so as to get a nice transition effect. +fun switch_on_bullet (bullets_off, bullets_on, bullet_number, opacity) { + local.x = bullets_on[bullet_number].x; + local.y = bullets_on[bullet_number].y; + local.z = bullets_on[bullet_number].z; + + # Hide the bullets which are off + bullets_off[bullet_number].sprite.SetOpacity (0); + + # Show the bullets which are on + bullets_on[bullet_number].sprite.SetPosition (local.x, local.y, local.z); + bullets_on[bullet_number].sprite.SetOpacity (opacity); + + # Bump the number of times we have switched on bullets + global.times_bullets_switched++; +} + +fun switch_off_bullets () { + # Debug("Switching off progress indicator"); + + set_progress_indicator (); + global.times_bullets_switched = 0; + global.on_off = 1; +} + +# This is something that we can call when we exit +fun switch_on_bullets () { + # Debug("Switching off progress indicator"); + if (!global.progress_indicator.bullets_on) set_progress_indicator (); + local = global.progress_indicator; + + for (index = 0; bullets_on[index]; index++) { + switch_on_bullet (bullets_off, bullets_on, index, 1.0); + } +} + + +# Implement in boot progress callback +fun animate_progress_indicator (progress, time) { + if (global.progress_time == NULL) { + global.progress_time = progress; #time; + switch_off_bullets (); + } + +# Debug ("progress = " + progress + ", time = " + time + " times switched = " + global.times_bullets_switched + " on_off " + global.on_off); + +# if (global.times_bullets_switched == NULL) +# global.times_bullets_switched = 5; + +# if (global.on_off == NULL) +# global.on_off = 0; + + if ((progress - global.progress_time) >= 1.0) { + global.progress_time = progress; + + if (global.times_bullets_switched == 5) { + # Change which bullets are switched on + # and which ones are switched off + global.on_off = !global.on_off; + global.times_bullets_switched = 0; + } + + if (global.on_off) { + switch_on_bullet (progress_indicator.bullets_off, progress_indicator.bullets_on, + global.times_bullets_switched, 1.0); + } + else { + switch_on_bullet (progress_indicator.bullets_on, progress_indicator.bullets_off, + global.times_bullets_switched, 1.0); + } + } + + + # Start setting bullets to "on" with translucency +# for (index = 0; index <= 5; index++) { +# opacity = 0.0; +# while (opacity <= 1.0) { +# switch_on_bullet (progress_indicator.bullets_off, progress_indicator.bullets_on, +# index, opacity); +# opacity += 0.1; +# } +# } +} + + +#-----------------------------------------Label utility functions--------------------- + +# label should be either a string or NULL +# Images for n lines will be created and returned as items of the +# message_label array +# +fun get_message_label (label, is_fake, is_action_line) { + # Debug("Get Label position"); + local.message_label; + + if (is_fake) + # Create a fake label so as to get the y coordinate of + # a standard-length label. + local.message_image = ImageToTintedText ("This is a fake message"); + else + local.message_image = (is_action_line) && ImageToActionText (label) || ImageToTintedText (label); + + message_label.width = message_image.GetWidth (); + message_label.height = message_image.GetHeight (); + + # Center the line horizontally + message_label.x = Window.GetX () + Window.GetWidth () / 2 - message_label.width / 2; + + message_label.y = top_of_the_text; + + # Put the 2nd line below the fsck line + if (is_action_line) { + local.fsck_label.y = message_label.y + (first_line_height + first_line_height / 2); + message_label.y = local.fsck_label.y + (first_line_height * 2); + } + + # Debug("action label x = " + message_label.x + " y = " + message_label.y ); + +# message_debug = "msg_x = " + message_label.x + " msg_y = " + message_label.y + +# "msg_width = " + message_label.width + " msg_height = " + +# message_label.height + " message = " + label; +# Debug(message_debug); + + return message_label; + +} + +# Create an fsck label and/or get its position +fun get_fsck_label (label, is_fake) { + # Debug("Get Label position"); + local.fsck_label = global.progress_label; + + if (is_fake) + fsck_label.image = ImageToTintedText ("This is a fake message"); + else + fsck_label.image = ImageToTintedText (label); + + fsck_label.width = fsck_label.image.GetWidth (); + fsck_label.height = fsck_label.image.GetHeight (); + + # Centre the label horizontally + fsck_label.x = Window.GetX () + Window.GetWidth () / 2 - fsck_label.width / 2; + + local.first_label = get_message_label (label, 1, 0); + + # Place the label below the 1st message line + fsck_label.y = local.first_label.y + local.first_label.height + (local.first_label.height / 2); + +# message_debug = "msg_x = " + fsck_label.x + " msg_y = " + fsck_label.y + +# "msg_width = " + fsck_label.width + " msg_height = " + +# fsck_label.height + " message = " + label; +# Debug(message_debug); + + return fsck_label; +} + +#-----------------------------------------Message stuff -------------------------------- +# + +# Set up a message label +# +# NOTE: this is called when doing something like 'plymouth message "hello world"' +# +fun setup_message (message_text, x, y, z, index) { + # Debug("Message setup"); + global.message_notification[index].image = (index) && ImageToActionText (message_text) || ImageToTintedText (message_text); + + # Set up the text message, if any + message_notification[index].x = x; + message_notification[index].y = y; + message_notification[index].z = z; + + message_notification[index].sprite = Sprite (); + message_notification[index].sprite.SetImage (message_notification[index].image); + message_notification[index].sprite.SetX (message_notification[index].x); + message_notification[index].sprite.SetY (message_notification[index].y); + message_notification[index].sprite.SetZ (message_notification[index].z); + +} + +fun show_message (index) { + if (global.message_notification[index].sprite) global.message_notification[index].sprite.SetOpacity(1); +} + +fun hide_message (index) { + if (global.message_notification[index].sprite) global.message_notification[index].sprite.SetOpacity(0); +} + + + + +# the callback function is called when new message should be displayed. +# First arg is message to display. +fun message_callback (message) +{ + # Debug("Message callback"); + is_fake = 0; + if (!message || (message == "")) is_fake = 1; + + local.substring = "keys:"; + + # Look for the "keys:" prefix + local.keys = StringString(message, local.substring); + + local.is_action_line = (keys != NULL); + #Debug("keys " + local.keys + " substring length = " + StringLength(local.substring)); + + # Get the message without the "keys:" prefix + if (keys != NULL) + message = StringCopy (message, keys + StringLength(local.substring), NULL); + + local.label.is_fake = is_fake; + label = get_message_label(message, is_fake, is_action_line); + label.z = 10000; + + setup_message (message, label.x, label.y, label.z, is_action_line); + if (prompt_active && local.is_action_line) + hide_message (is_action_line); + else + show_message (is_action_line); + +} + + +#-----------------------------------------Display Password stuff ----------------------- +# + +fun password_dialogue_setup (message_label) { + # Debug("Password dialog setup"); + + local.entry; + local.bullet_image; + + bullet_image = Image (progress_dot_off_filename); + entry.image = Image (password_field_filename); + + # Hide the normal labels + prompt_active = 1; + if (message_notification[1].sprite) hide_message (1); + + # Set the prompt label + label = get_message_label(message_label, 0, 1); + label.z = 10000; + + setup_message (message_label, label.x, label.y, label.z, 2); + show_message (2); + + # Set up the text entry which contains the bullets + entry.sprite = Sprite (); + entry.sprite.SetImage (entry.image); + + # Centre the box horizontally + entry.x = Window.GetX () + Window.GetWidth () / 2 - entry.image.GetWidth () / 2; + + # Put the entry below the second label. + entry.y = message_notification[2].y + label.height; + + #Debug ("entry x = " + entry.x + ", y = " + entry.y); + entry.z = 10000; + entry.sprite.SetX (entry.x); + entry.sprite.SetY (entry.y); + entry.sprite.SetZ (entry.z); + + global.password_dialogue = local; +} + +fun password_dialogue_opacity (opacity) { + # Debug("Password dialog opacity"); + global.password_dialogue.opacity = opacity; + local = global.password_dialogue; + + # You can make the box translucent with a float + # entry.sprite.SetOpacity (0.3); + entry.sprite.SetOpacity (opacity); + label.sprite.SetOpacity (opacity); + + if (bullets) { + for (index = 0; bullets[index]; index++) { + bullets[index].sprite.SetOpacity (opacity); + } + } +} + + +# The callback function is called when the display should display a password dialogue. +# First arg is prompt string, the second is the number of bullets. +fun display_password_callback (prompt, bullets) { + # Debug("Password dialog setup"); + + global.status = "password"; + if (!global.password_dialogue) password_dialogue_setup(prompt); + password_dialogue_opacity (1); + bullet_width = password_dialogue.bullet_image.GetWidth(); + bullet_y = password_dialogue.entry.y + + password_dialogue.entry.image.GetHeight () / 2 - + password_dialogue.bullet_image.GetHeight () / 2; + margin = bullet_width; + spaces = Math.Int( (password_dialogue.entry.image.GetWidth () - (margin * 2)) / (bullet_width / 2 ) ); + #Debug ("spaces = " + spaces + ", bullets = " + bullets); + bullets_area.width = margin + spaces * (bullet_width / 2); + bullets_area.x = Window.GetX () + Window.GetWidth () / 2 - bullets_area.width / 2; + #DebugBottom ("pwd_entry x = " + password_dialogue.entry.x + ", bullets_area.x = " + bullets_area.x + ", bullets_area.width = " + bullets_area.width); + if (bullets > spaces) + bullets = spaces; + for (index = 0; password_dialogue.bullets[index] || index < bullets; index++){ + if (!password_dialogue.bullets[index]) { + password_dialogue.bullets[index].sprite = Sprite (); + password_dialogue.bullets[index].sprite.SetImage (password_dialogue.bullet_image); + password_dialogue.bullets[index].x = bullets_area.x + # password_dialogue.entry.x + margin + + index * bullet_width / 2; + password_dialogue.bullets[index].sprite.SetX (password_dialogue.bullets[index].x); + password_dialogue.bullets[index].y = bullet_y; + password_dialogue.bullets[index].sprite.SetY (password_dialogue.bullets[index].y); + password_dialogue.bullets[index].z = password_dialogue.entry.z + 1; + password_dialogue.bullets[index].sprite.SetZ (password_dialogue.bullets[index].z); + } + + password_dialogue.bullets[index].sprite.SetOpacity (0); + + if (index < bullets) { + password_dialogue.bullets[index].sprite.SetOpacity (1); + } + } +} + +Plymouth.SetDisplayPasswordFunction (display_password_callback); + +Plymouth.SetMessageFunction (message_callback); + +Plymouth.SetBootProgressFunction (animate_progress_indicator); + +# Plymouth.SetBootProgressFunction: the callback function is called with two numbers, the progress (between 0 and 1) and the time spent booting so far +# Plymouth.SetRootMountedFunction: the callback function is called when a new root is mounted +# Plymouth.SetKeyboardInputFunction: the callback function is called with a string containing a new character entered on the keyboard + +#----------------------------------------- FSCK Counter -------------------------------- + +# Initialise the counter +fun init_fsck_count () { + # The number of fsck checks in this cycle + global.counter.total = 0; + # The number of fsck checks already performed + the current one + global.counter.current = 1; + # The previous fsck + global.counter.last = 0; +} + +# Increase the total counter +fun increase_fsck_count () { + global.counter.total++; +} + +fun increase_current_fsck_count () { + global.counter.last = global.counter.current++; +} + +# Clear the counter +fun clear_fsck_count () { + global.counter = NULL; + init_fsck_count (); +} + +#----------------------------------------- Progress Label ------------------------------ + + +# Change the opacity level of a progress label +# +# opacity = 1 -> show +# opacity = 0 -> hide +# opacity = 0.3 (or any other float) -> translucent +# +fun set_progress_label_opacity (opacity) { + # the label + progress_label.sprite.SetOpacity (opacity); + + # Make the slot available again when hiding the bar + # So that another bar can take its place + if (opacity == 0) { + progress_label.is_available = 1; + progress_label.device = ""; + } +} + +# Set up a new Progress Bar +# +# TODO: Make it possible to reuse (rather than recreate) a bar +# if .is_available = 1. Ideally this would just reset the +# label, the associated +# device and the image size of the sprite. + +fun init_progress_label (device, status_string) { + # Make the slot unavailable + global.progress_label.is_available = 0; + progress_label.progress = 0; + progress_label.device = device; + progress_label.status_string = status_string; +} + +# See if the progress label is keeping track of the fsck +# of "device" +# +fun device_has_progress_label (device) { + #DebugBottom ("label device = " + progress_label.device + " checking device " + device); + return (progress_label.device == device); +} + +# Update the Progress bar which corresponds to index +# +fun update_progress_label (progress) { + # If progress is NULL then we just refresh the label. + # This happens when only counter.total has changed. + if (progress != NULL) { + progress_label.progress = progress; + + #Debug("device " + progress_label.device + " progress " + progress); + + # If progress >= 100% hide the label and make it available again + if (progress >= 100) { + set_progress_label_opacity (0); + + # See if we any other fsck check is complete + # and, if so, hide the progress bars and the labels + on_fsck_completed (); + + return 0; + } + } + # Update progress label here + # + # FIXME: the queue logic from this theme should really be moved into mountall + # instead of using string replacement to deal with localised strings. + label = StringReplace (progress_label.status_string[0], "%1$d", global.counter.current); + label = StringReplace (label, "%2$d", global.counter.total); + label = StringReplace (label, "%3$d", progress_label.progress); + label = StringReplace (label, "%%", "%"); + + progress_label = get_fsck_label (label, 0); + #progress_label.progress = progress; + + progress_label.sprite = Sprite (progress_label.image); + + # Set up the bar + progress_label.sprite.SetPosition(progress_label.x, progress_label.y, 1); + + set_progress_label_opacity (1); + +} + +# Refresh the label so as to update counters +fun refresh_progress_label () { + update_progress_label (NULL); +} + +#----------------------------------------- FSCK Queue ---------------------------------- + +# Initialise the fsck queue +fun init_queue () { + global.fsck_queue[0].device; + global.fsck_queue[0].progress; + global.fsck_queue.counter = 0; + global.fsck_queue.biggest_item = 0; +} + +fun clear_queue () { + global.fsck_queue = NULL; + init_queue (); +} + +# Return either the device index in the queue or -1 +fun queue_look_up_by_device (device) { + for (i=0; i <= fsck_queue.biggest_item; i++) { + if ((fsck_queue[i]) && (fsck_queue[i].device == device)) + return i; + } + return -1; +} + +# Keep track of an fsck process in the queue +fun add_fsck_to_queue (device, progress) { + # Look for an empty slot in the queue + for (i=0; global.fsck_queue[i].device; i++) { + continue; + } + local.index = i; + + # Set device and progress + global.fsck_queue[local.index].device = device; + global.fsck_queue[local.index].progress = progress; + + # Increase the queue counter + global.fsck_queue.counter++; + + # Update the max index of the array for iterations + if (local.index > global.fsck_queue.biggest_item) + global.fsck_queue.biggest_item = local.index; + + #DebugMedium ("Adding " + device + " at " + local.index); +} + +fun is_queue_empty () { + return (fsck_queue.counter == 0); +} + +fun is_progress_label_available () { + return (progress_label.is_available == 1); +} + + +# This should cover the case in which the fsck checks in +# the queue are completed before the ones showed in the +# progress label +fun on_queued_fsck_completed () { + if (!is_queue_empty ()) + return; + + # Hide the extra label, if any + #if (progress_bar.extra_label.sprite) + # progress_bar.extra_label.sprite.SetOpacity(0); +} + +fun remove_fsck_from_queue (index) { + # Free memory which was previously allocated for + # device and progress + global.fsck_queue[index].device = NULL; + global.fsck_queue[index].progress = NULL; + + # Decrease the queue counter + global.fsck_queue.counter--; + + # See if there are other processes in the queue + # if not, clear the extra_label + on_queued_fsck_completed (); +} + +fun on_fsck_completed () { + # We have moved on to tracking the next fsck + increase_current_fsck_count (); + + if (!is_progress_label_available ()) + return; + + if (!is_queue_empty ()) + return; + + # Hide the progress label + if (progress_label.sprite) + progress_label.sprite.SetOpacity (0); + + # Clear the queue + clear_queue (); + + # Clear the fsck counter + clear_fsck_count (); +} + +# Update an fsck process that we keep track of in the queue +fun update_progress_in_queue (index, device, progress) { + # If the fsck is complete, remove it from the queue + if (progress >= 100) { + remove_fsck_from_queue (index); + on_queued_fsck_completed (); + return; + } + + global.fsck_queue[index].device = device; + global.fsck_queue[index].progress = progress; + +} + +# TODO: Move it to some function +# Create an empty queue +#init_queue (); + + +#----------------------------------------- FSCK Functions ------------------------------ + + +# Either add a new bar for fsck checks or update an existing bar +# +# NOTE: no more than "progress_bar.max_number" bars are allowed +# +fun fsck_check (device, progress, status_string) { + + # The 1st time this will take place + if (!global.progress_label) { + # Increase the fsck counter + increase_fsck_count (); + + # Set up a new label for the check + init_progress_label (device, status_string); + update_progress_label (progress); + + return; + } + + + if (device_has_progress_label (device)) { + # Update the progress of the existing label + update_progress_label (progress); + } + else { + # See if there's already a slot in the queue for the device + local.queue_device_index = queue_look_up_by_device(device); + + # See if the progress_label is available + if (progress_label.is_available) { + +# local.my_string = "available index " + local.available_index + " progress_bar counter is " + progress_bar.counter; +# Debug(local.my_string); + + + # If the fsck check for the device was in the queue, then + # remove it from the queue + if (local.queue_device_index >= 0) { + remove_fsck_from_queue (index); + } + else { + # Increase the fsck counter + increase_fsck_count (); + } + +# local.my_string += local.message; + #Debug("setting new label for device " + device + " progress " + progress); + + # Set up a new label for the check + init_progress_label (device, status_string); + update_progress_label (progress); + + } + # If the progress_label is not available + else { + + # If the fsck check for the device is already in the queue + # just update its progress in the queue + if (local.queue_device_index >= 0) { + #DebugMedium("Updating queue at " + local.queue_device_index + " for device " + device); + update_progress_in_queue (local.queue_device_index, device, progress); + } + # Otherwise add the check to the queue + else { + #DebugMedium("Adding device " + device + " to queue at " + local.queue_device_index); + add_fsck_to_queue (device, progress); + + # Increase the fsck counter + increase_fsck_count (); + + refresh_progress_label (); + } + + } + } + +# if (!is_queue_empty ()) { +# DebugBottom("Extra label for "+ device); + #} +# else { +# DebugBottom("No extra label for " + device + ". 1st Device in the queue "+ fsck_queue[0].device + " counter = " + global.fsck_queue.counter); +# } +} + + +#-----------------------------------------Update Status stuff -------------------------- +# +# The update_status_callback is what we can use to pass plymouth whatever we want so +# as to make use of features which are available only in this program (as opposed to +# being available for any theme for the script plugin). +# +# Example: +# +# Thanks to the current implementation, some scripts can call "plymouth --update=fsck:sda1:40" +# and this program will know that 1) we're performing and fsck check, 2) we're checking sda1, +# 3) the program should set the label progress to 40% +# +# Other features can be easily added by parsing the string that we pass plymouth with "--update" +# +fun update_status_callback (status) { +# Debug(status); + if (!status) return; + + string_it = 0; + update_strings[string_it] = ""; + + for (i=0; (String(status).CharAt(i) != ""); i++) { + local.temp_char = String(status).CharAt(i); + if (temp_char != ":") + update_strings[string_it] += temp_char; + else + update_strings[++string_it] = ""; + } + +# my_string = update_strings[0] + " " + update_strings[1] + " " + update_strings[2]; +# Debug(my_string); + # Let's assume that we're dealing with these strings fsck:sda1:40 + if ((string_it >= 2) && (update_strings[0] == "fsck")) { + + device = update_strings[1]; + progress = update_strings[2]; + status_string[0] = update_strings[3]; # "Checking disk %1$d of %2$d (%3$d %% complete)" + if (!status_string[0]) + status_string[0] = "Checking disk %1$d of %2$d (%3$d %% complete)"; + + if ((device != "") && (progress != "")) { + progress = StringToInteger (progress); + + # Make sure that the fsck_queue is initialised + if (!global.fsck_queue) + init_queue (); + + # Make sure that the fsck counter is initialised + if (!global.counter) + init_fsck_count (); + +# if (!global.progress_bar.extra_label.sprite) +# create_extra_fsck_label (); + + # Keep track of the fsck check + fsck_check (device, progress, status_string); + } + + } + +} +Plymouth.SetUpdateStatusFunction (update_status_callback); + +#-----------------------------------------Display Question stuff ----------------------- +# +# TODO: Implement this if needed +# +# The callback function is called when the display should display a question dialogue. +# First arg is prompt string, the second is the entry contents. +#fun display_question_callback (prompt_string, entry_contents) +#{ +# time++; +#} +# +#Plymouth.SetDisplayQuestionFunction (display_question_callback); + +#-----------------------------------------Refresh stuff -------------------------------- +# +# Calling Plymouth.SetRefreshFunction with a function will set that function to be +# called up to 50 times every second, e.g. +# +# NOTE: if a refresh function is not set, Plymouth doesn't seem to be able to update +# the screen correctly +# +fun refresh_callback () +{ + draw_logo (); +} +Plymouth.SetRefreshFunction (refresh_callback); + + +#-----------------------------------------Display Normal stuff ----------------------- +# +# The callback function is called when the display should return to normal +fun display_normal_callback () +{ + global.status = "normal"; + if (global.password_dialogue) { + password_dialogue_opacity (0); + global.password_dialogue = NULL; + if (message_notification[2].sprite) hide_message(2); + prompt_active = 0; + } + + if (message_notification[1].sprite) show_message (1); + + +} + +Plymouth.SetDisplayNormalFunction (display_normal_callback); + + +#----------------------------------------- Quit -------------------------------- + +# TODO: Maybe we should also hide any other dialog +# Show the logo and make the progress indicator look full when on exit +fun quit_callback () +{ + logo.sprite.SetOpacity (1); + switch_on_bullets (); +} + +Plymouth.SetQuitFunction(quit_callback); diff --git a/plymouth-theme/edubuntu_logo.png b/plymouth-theme/edubuntu_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c742ebf78a4a7e4b0edfbb3113bcff6b3ce783a6 GIT binary patch literal 34589 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
    v4BrhIX5T# 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 literal 0 HcmV?d00001 diff --git a/plymouth-theme/password_field16.png b/plymouth-theme/password_field16.png new file mode 100644 index 0000000000000000000000000000000000000000..ff7f6b5b8693dedd36bde19506826d1bd4696907 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0y~yVB`g|^*ES;Bx~~?F(Abm;1lAyghPOziAzOV=7q=6 zWS}5pNswPKgTu2MX+Tbxr;B4q#jUru778*bFfbdw_~)FQ9Z(?gN!jK91eMr~y4Zx0 z#)}tUI5o5JN||I_Sm210Q88)u(L0+DPf(e=onf!5O5?MyZ|s0JFnGH9xvX!+#frlZ1C911~Dem@}n*YaRKAu?=U2iJC}-N&bRb=f6EKx6bNqeUNJ;C7V>gTe~DWM4fxNf{! literal 0 HcmV?d00001 diff --git a/plymouth-theme/progress_dot_off16.png b/plymouth-theme/progress_dot_off16.png new file mode 100644 index 0000000000000000000000000000000000000000..abbbab6801746d59a1364b35457c7ddb15d6d2df GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{3?%2B3|#`GcmjMvT!Hih7xza2LI3{$+37Ve z6Ub*Q3GxeOaCmkj4aiaVba4!+xOMf+MqUO64kpLOzvb7?F$rhy+asW5Ccy4h^i1Rb c+keZhY0PHOIUFOl2dIU?)78&qol`;+09ey0(*OVf literal 0 HcmV?d00001 diff --git a/plymouth-theme/progress_dot_on.png b/plymouth-theme/progress_dot_on.png new file mode 100644 index 0000000000000000000000000000000000000000..6dd07b76166fae7652d0b0c9f0f098649be60254 GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{3?%2B3|#`GVgr0aT>m==S@f)+1^WO0|EUc? zYZw@0OM?7@85o(ESy?LTz<%dcHr(yl;-8$4YcLn>~S zUVO{ftiZ#1fl-&$Met+x>^=Xp*SRc?obs=6&V*%m_MH=Qn(~;xMJH5mx#v;_0YL}N zN(ydovTZ zNvW)6Day6?Ilaxt`M#BwmP(LtQq}W0_L^;N0bPrZwOiChZZ~AhkC=adUhQ+!^`9?p tw>n&V@6`QQmUoO-KdWB*DC*efdv!P7@^Gq(uZ;%z($m$?Wt~$(6954{nmhmi literal 0 HcmV?d00001 diff --git a/plymouth-theme/progress_dot_on16.png b/plymouth-theme/progress_dot_on16.png new file mode 100644 index 0000000000000000000000000000000000000000..7d5826315714d094000154de9763af618286edd8 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{3?%2B3|#`G*aCb)Tp1Re@oDh5d_QOvP=v80 z$S;_|;n|HeAV