From 35847de52cc462ec1492e9d4e850b0dedb0fd512 Mon Sep 17 00:00:00 2001 From: ZeroChaos <71016736+zerolabnet@users.noreply.github.com> Date: Fri, 16 Aug 2024 00:59:36 +0300 Subject: [PATCH] Wrote a simple interface to control Clash from the LUCI interface luci-app-ssclash --- README.md | 33 +++--- rootfs/etc/init.d/clash | 90 +++++++++----- .../share/luci/menu.d/luci-app-ssclash.json | 28 +++++ .../share/rpcd/acl.d/luci-app-ssclash.json | 26 ++++ .../resources/view/ssclash/config.js | 112 ++++++++++++++++++ .../luci-static/resources/view/ssclash/log.js | 63 ++++++++++ scr-00.png | Bin 0 -> 151474 bytes 7 files changed, 303 insertions(+), 49 deletions(-) create mode 100644 rootfs/usr/share/luci/menu.d/luci-app-ssclash.json create mode 100644 rootfs/usr/share/rpcd/acl.d/luci-app-ssclash.json create mode 100644 rootfs/www/luci-static/resources/view/ssclash/config.js create mode 100644 rootfs/www/luci-static/resources/view/ssclash/log.js create mode 100644 scr-00.png diff --git a/README.md b/README.md index 7bd658b..2a861f9 100644 --- a/README.md +++ b/README.md @@ -75,30 +75,22 @@ gunzip clash.gz chmod +x clash ``` -## Step 8: Edit Configuration File -Edit the `config.yaml` example file. +## Step 8: Enable Clash +Enable the Clash service. ```bash -vi /opt/clash/config.yaml -``` - -## Step 9: Set Up an SFTP Server (Optional) -For easier editing of files, set up an SFTP server. - -```bash -opkg install openssh-sftp-server +/etc/init.d/clash enable ``` -## Step 10: Enable and Start Clash -Enable and start the Clash service. +## Step 9: Managing Clash from LUCI interface +I've written a simple interface for managing Clash from LUCI interface `luci-app-ssclash`. Edit Clash config and Apply. -```bash -/etc/init.d/clash enable -/etc/init.d/clash start -``` +
+ +
-## Step 11: Access Web UI -You can access the Clash Web UI at: +## Step 10: You can access to Dashboard from LUCI interface or manual +You can access the Dashboard at: ``` http://ROUTER_IP:9090/ui/ @@ -113,8 +105,11 @@ To remove Clash, stop the service, delete the related files and kernel module `k ```bash /etc/init.d/clash stop -rm -rf /etc/init.d/clash +rm -f /etc/init.d/clash rm -rf /opt/clash +rm -f /usr/share/luci/menu.d/luci-app-ssclash.json +rm -f /usr/share/rpcd/acl.d/luci-app-ssclash.json +rm -rf /www/luci-static/resources/view/ssclash ``` --- diff --git a/rootfs/etc/init.d/clash b/rootfs/etc/init.d/clash index 1588a77..0025c04 100755 --- a/rootfs/etc/init.d/clash +++ b/rootfs/etc/init.d/clash @@ -5,41 +5,71 @@ STOP=89 USE_PROCD=1 +FLAG_FILE="/tmp/dnsmasq_once" + +msg() { + logger -p daemon.info -st "clash[$$]" "$*" +} + start_service() { - # The ruleset folder is used from tmpfs - if [ ! -d /tmp/clash/ruleset ]; then - mkdir -p /tmp/clash/ruleset - fi - if [ ! -L /opt/clash/ruleset ] || [ "$(readlink /opt/clash/ruleset)" != "/tmp/clash/ruleset" ]; then - rm -rf /opt/clash/ruleset - ln -s /tmp/clash/ruleset /opt/clash/ruleset - fi - - procd_open_instance - procd_set_param command /opt/clash/bin/clash -d /opt/clash - procd_set_param respawn - procd_close_instance - - uci add_list dhcp.@dnsmasq[0].server='127.0.0.1#7874' - uci set dhcp.@dnsmasq[0].cachesize='0' - uci set dhcp.@dnsmasq[0].noresolv='1' - uci commit - - /opt/clash/bin/clash-rules start - /etc/init.d/dnsmasq restart + # The ruleset folder is used from tmpfs + if [ ! -d /tmp/clash/ruleset ]; then + mkdir -p /tmp/clash/ruleset + msg "The folder '/tmp/clash/ruleset' was created" + fi + if [ ! -L /opt/clash/ruleset ] || [ "$(readlink /opt/clash/ruleset)" != "/tmp/clash/ruleset" ]; then + rm -rf /opt/clash/ruleset + ln -s /tmp/clash/ruleset /opt/clash/ruleset + msg "Created a symlink from '/tmp/clash/ruleset' to '/opt/clash/ruleset'" + fi + + procd_open_instance + procd_set_param command /opt/clash/bin/clash -d /opt/clash + procd_set_param stdout 1 + procd_set_param stderr 1 + procd_set_param respawn + procd_close_instance + msg "Clash instance is started" + + uci add_list dhcp.@dnsmasq[0].server='127.0.0.1#7874' + uci set dhcp.@dnsmasq[0].cachesize='0' + uci set dhcp.@dnsmasq[0].noresolv='1' + uci commit dhcp + msg "DNS settings have been changed" + + /opt/clash/bin/clash-rules start + msg "Firewall rules applied" + + /etc/init.d/dnsmasq restart > /dev/null 2>&1 + msg "dnsmasq restarted" } stop_service() { - uci del dhcp.@dnsmasq[0].server - uci del dhcp.@dnsmasq[0].cachesize - uci del dhcp.@dnsmasq[0].noresolv - uci commit + msg "Clash instance has been stopped" + uci del dhcp.@dnsmasq[0].server + uci del dhcp.@dnsmasq[0].cachesize + uci del dhcp.@dnsmasq[0].noresolv + uci commit dhcp + msg "DNS settings have been restored" + + /opt/clash/bin/clash-rules stop + msg "Firewall rules have been restored" + + if [ ! -f "$FLAG_FILE" ]; then + /etc/init.d/dnsmasq restart > /dev/null 2>&1 + msg "dnsmasq restarted" + fi - /opt/clash/bin/clash-rules stop - /etc/init.d/dnsmasq restart + rm -f "$FLAG_FILE" +} + +reload_service() { + touch "$FLAG_FILE" + stop + start } boot() { - sleep 10 - start -} \ No newline at end of file + sleep 10 + start +} diff --git a/rootfs/usr/share/luci/menu.d/luci-app-ssclash.json b/rootfs/usr/share/luci/menu.d/luci-app-ssclash.json new file mode 100644 index 0000000..ef62b67 --- /dev/null +++ b/rootfs/usr/share/luci/menu.d/luci-app-ssclash.json @@ -0,0 +1,28 @@ +{ + "admin/services/ssclash": { + "title": "ssclash", + "action": { + "type": "alias", + "path": "admin/services/ssclash/config" + }, + "depends": { + "acl": [ "luci-app-ssclash" ] + } + }, + "admin/services/ssclash/config": { + "title": "Config", + "order": 10, + "action": { + "type": "view", + "path": "ssclash/config" + } + }, + "admin/services/ssclash/log": { + "title": "Log", + "order": 20, + "action": { + "type": "view", + "path": "ssclash/log" + } + } +} diff --git a/rootfs/usr/share/rpcd/acl.d/luci-app-ssclash.json b/rootfs/usr/share/rpcd/acl.d/luci-app-ssclash.json new file mode 100644 index 0000000..a69e30a --- /dev/null +++ b/rootfs/usr/share/rpcd/acl.d/luci-app-ssclash.json @@ -0,0 +1,26 @@ +{ + "luci-app-ssclash": { + "description": "Grant access to Clash procedures", + "read": { + "file": { + "/opt/clash/config.yaml": [ "read" ], + "/sbin/logread": [ "exec" ] + }, + "ubus": { + "file": [ "read" ], + "service": [ "list" ] + } + }, + "write": { + "file": { + "/opt/clash/config.yaml": [ "write" ], + "/etc/init.d/clash start": [ "exec" ], + "/etc/init.d/clash stop": [ "exec" ], + "/etc/init.d/clash reload": [ "exec" ] + }, + "ubus": { + "file": [ "write" ] + } + } + } +} diff --git a/rootfs/www/luci-static/resources/view/ssclash/config.js b/rootfs/www/luci-static/resources/view/ssclash/config.js new file mode 100644 index 0000000..01aa035 --- /dev/null +++ b/rootfs/www/luci-static/resources/view/ssclash/config.js @@ -0,0 +1,112 @@ +'use strict'; +'require view'; +'require fs'; +'require ui'; +'require rpc'; + +var isReadonlyView = !L.hasViewPermission() || null; +let startStopButton = null; + +const callServiceList = rpc.declare({ + object: 'service', + method: 'list', + params: ['name'], + expect: { '': {} } +}); + +async function getServiceStatus() { + try { + return Object.values((await callServiceList('clash'))['clash']['instances'])[0]?.running; + } catch (ignored) { + return false; + } +} + +async function startService() { + if (startStopButton) startStopButton.disabled = true; + return fs.exec('/etc/init.d/clash', ['start']) + .catch(function(e) { + ui.addNotification(null, E('p', _('Unable to start service: %s').format(e.message)), 'error'); + }) + .finally(() => { + if (startStopButton) startStopButton.disabled = false; + }); +} + +async function stopService() { + if (startStopButton) startStopButton.disabled = true; + return fs.exec('/etc/init.d/clash', ['stop']) + .catch(function(e) { + ui.addNotification(null, E('p', _('Unable to stop service: %s').format(e.message)), 'error'); + }) + .finally(() => { + if (startStopButton) startStopButton.disabled = false; + }); +} + +async function toggleService() { + const running = await getServiceStatus(); + if (running) { + await stopService(); + } else { + await startService(); + } + window.location.reload(); +} + +async function openDashboard() { + let newWindow = window.open('', '_blank'); + const running = await getServiceStatus(); + if (running) { + let url = `http://${window.location.hostname}:9090/ui/?hostname=${window.location.hostname}&port=9090`; + newWindow.location.href = url; + } else { + newWindow.close(); + alert(_('Service is not running.')); + } +} + +return view.extend({ + load: function() { + return L.resolveDefault(fs.read('/opt/clash/config.yaml'), ''); + }, + handleSaveApply: function(ev) { + var value = (document.querySelector('textarea').value || '').trim().replace(/\r\n/g, '\n') + '\n'; + return fs.write('/opt/clash/config.yaml', value).then(function(rc) { + document.querySelector('textarea').value = value; + ui.addNotification(null, E('p', _('Contents have been saved.')), 'info'); + return fs.exec('/etc/init.d/clash', ['reload']); + }).then(function() { + window.location.reload(); + }).catch(function(e) { + ui.addNotification(null, E('p', _('Unable to save contents: %s').format(e.message)), 'error'); + }); + }, + render: async function(config) { + const running = await getServiceStatus(); + + return E([ + E('button', { + 'class': 'btn', + 'click': openDashboard + }, _('Open Dashboard')), + (startStopButton = E('button', { + 'class': 'btn', + 'click': toggleService, + 'style': 'margin-left: 10px;' + }, running ? _('Stop service') : _('Start service'))), + E('span', { + 'style': running ? 'color: green; margin-left: 10px;' : 'color: red; margin-left: 10px;' + }, running ? _('Clash is running') : _('Clash stopped')), + E('h2', _('Clash config')), + E('p', { 'class': 'cbi-section-descr' }, _('Your current Clash config. When applied, the changes will be saved and the service will be restarted.')), + E('textarea', { + 'style': 'width: 100% !important; padding: 5px; font-family: monospace', + 'rows': 35, + 'disabled': isReadonlyView + }, [config != null ? config : '']) + ]); + }, + handleSave: null, + handleReset: null +}); diff --git a/rootfs/www/luci-static/resources/view/ssclash/log.js b/rootfs/www/luci-static/resources/view/ssclash/log.js new file mode 100644 index 0000000..605bde1 --- /dev/null +++ b/rootfs/www/luci-static/resources/view/ssclash/log.js @@ -0,0 +1,63 @@ +'use strict'; +'require view'; +'require poll'; +'require fs'; + +return view.extend({ + load: function () { + return fs.stat('/sbin/logread'); + }, + + render: function (stat) { + const loggerPath = stat && stat.path ? stat.path : null; + + poll.add(() => { + if (loggerPath) { + return fs.exec_direct(loggerPath, ['-e', 'clash']) + .then(res => { + const log = document.getElementById('logfile'); + // Without log processing + // log.value = res ? res.trim() : _(''); + // Without log processing + // With log processing + if (res) { + const processedLog = res.trim().split('\n').map(line => { + const msgMatch = line.match(/msg="(.*?)"/); + if (msgMatch) { + return line.split(']: ')[0] + ']: ' + msgMatch[1]; + } + return line; + }).join('\n'); + + log.value = processedLog; + } else { + log.value = _(''); + } + // With log processing + log.scrollTop = log.scrollHeight; + }) + .catch(err => { + console.error('Error executing logread:', err); + }); + } + }); + + return E( + 'div', + { class: 'cbi-map' }, + E('div', { class: 'cbi-section' }, [ + E('textarea', { + id: 'logfile', + style: 'width: 100% !important; padding: 5px; font-family: monospace', + readonly: 'readonly', + wrap: 'off', + rows: 35, + }), + ]) + ); + }, + + handleSaveApply: null, + handleSave: null, + handleReset: null, +}); diff --git a/scr-00.png b/scr-00.png new file mode 100644 index 0000000000000000000000000000000000000000..7652526c76b06b0bf78de10f7ba2cdc5c0a6d05c GIT binary patch literal 151474 zcmagG1zcP`*Dp$OcXxM&;toZM6!!vyyE_yw#od|WMT)z-OJR`WUR(>sirbyi=Xvk@ z-E;0a`$wB(@5stZ)=F0LUlXCCB!h-bj0^<@g(fE}r3M9s;0F1Zj0g>RLq%Eh3*ezey))5EE~I@YB&nFVn=@hZ0-DQ@_nJ;nhETb}R^VIYJxBx74=@SO0x@D^m~ zufxIkK_G?0iRimdnsQ_B#iHJ*XjF8~QzgIbrjCHGnv>3F?IQojOKrzCp=b=3$zuJx ztvIm)j-E2fNmMemU#|rvn-y}yz^*=wb;Yo{d`ko$U>%)tbnEt&MQ^uFDjzpEkp@)U zkiJ2&;Dj# Af`+&OIjutdOWn0WxK!}BoE{1rocqQ&Dq+7JX%caXXvzx3pI4PsOv){yn5jKu= zoNF%m|BOOU&u9ONeW`|I%@Bd}5`8BDK2lw_2~}1`fiwFY?x0WE*hc&Kc*vwdRu6MB z&8US|edfdVu3R&;Q%cYvjN-felg85W=ypHT6=V<(lvC;Zl#THaJ^k!0vK+p Ch^J4!SqFeNnoRq88bh2v}W8~4x7;d zd9So?eT2+>*}AFop7CQly63yiITh%lmC;JQ1~oSrzxLynVrg!$cAJ-3MQ`aI1UjWv zxn-8SfBi3m#u;L3sC!(n*xdeVJDJma_8De9%W&+BxOY7Y1k-QWw#VJNOVmtdc%^>j zB?*SZi8B%3RD$X+tg0bJ2jz=BKTPXnM~LRji>|eKItoa>RUO7 aJQ3Mv%S2L0Ep9IrLT<9m@M^(NYHe6HlC}< zZJWy@AP29Zw_uXYodBprz`~E{tKpD9mnSisK2$*T+9GW5lmN{=80;K`77F%;DTJAZ z1yHD5GECVY$7xGXmYHUD?;y&cpT4tIl}VBb^*LRLOsd`8zWk(%{Y@m^GB7lKD4v5V zkX^WIlPu@$h?_^MzCuh;-5#8fjt}9+xxhRRbsDEKhN7Q{baa0A&hQBEBa_I*DA$m| zy6t+cXWbOLFnG5nlv)YK^v{s6h&*kTVsgxFpof8V>`rsAeg0k4pG{93v +n{*UK#Wq;R0g~dRju@@dk`lRFjDY<6= (mA$y z;(PM(K#r@eJNuAha3nc%IeLR~0;_o7 ztjV=l!y#P%bJpIyv$FvFMb;pH(hZ4Z9y9fKLhR|d^;n#s=x3x)`EQ7{ej{Qzay=AY zFvk?aq-Qm-Hpo+TlBsN^}jNsk4 zSKA-`b< #=P#HXYl1WP*9dzsL37oBz2SXEfX}rZ_%&*47Xy$mNU|AUq`@CA4va+ z!AdTL{;3M(svJ}9RxDualjT_V*pw7_&F1!PiQV~Vzxmez+I CT? zyPT$O)+(3ZU9(40h=*7rGmr0N(T{1CY3b8sYxvjsnos&L$34>xh8;pq Eh|&T#woPb4m_uzNVA2m12^LMTu@K+DDRrQU`tE? zP6u1HY!|I*6-b4M^znQr$`%KE$u=tBYt;p03o~L(Y5xIOBoCCRahX|zK}kj%yzpW8 zgiMD;^ H^_J9Nmm*0hz%TcO`Hu%KHNn+I{NuwG^PF64ZEuNa(!t!VQA zgs;5uy;ef@wl#r{H@Ccw6;AkA(HjfKXf^l>YvPO?-3)Xr>Bjn5GRTw`NzfBzLT4$v zuD@(e@9ZIaYrw+rT`I4FH6xIo8zoD)5teO4?~_tT1F;`#n$3Yc-Rp46nS-N7f2IN& z#a@^I*4LZog}jaJ6`yKUItLL^OMZldFH^I454l8QC1f@d0UzIdh1@45VS|1)%~6$R z#>L}I&X^&NkMQN$g7KXff2!Yy$BrY4^_V`buwTIHiH>49w>YSOCwH;GoNNQ%v1@;; zM^Lbg#n6QQ^?4e0`Mp4XvvAodEX9Pm6mUGigo=!csZR2nO&qC ?ek5Fg;#X! zO)e>(xWqVQd$x@!b`CkOrTx+Arw9L(Rg4`t8No0fe*n2~aj}SYtKa0zPt9+3-jY68 ztyH`d{L1uvHbeordstI>D@G5{c0=!zsO(rtUma+5nc5%}oc<99zi>(&%75AiP;MeH zCz}l(bnC46CdX>@j>d+T*%lwGZoLB3SdhmuDt*w?_#|Ls&>uEMU1iwS8TSpu0GA{} zcRu(ejd|v$DR0;Ny_8EaB@4 -oiYH+6wGfM7(#yRel$@VLrWS-lF H2 za#n*a(n%YN=PaNOz5aOJBCyR6 3KZbPo-6Q6<8=o$XAr?q^nP!RoyjT~xD%Tqh>z#iBPNVPVAZ H19eUPi?3jCtbWa`nYUV2ksiMad~O+l~9`tfrV zb~G6*P}G|L{g@7&UQz@S_dCEzUG8p~c9rz9%j@#Q_peyCgI{6b)JLg8H|Yw%f)yV& z`Vg3%#ziEYiP#O=8Lw-)l(U5w3l(g%nI_jd{VsZ)91?bh`ppF!GNtcJhHKf60a9sp z-n=w}?+qjbK!gmIHOJ+n(S4S*(l*IGDO0J4_0*E7SMo?-!>|>u`QGgQ5YpK{mx_NJ zvnu8w0IAS%c(0UaucoKHE{fCM#Aen!Xs3zLs`-uB=c`~=8y`g#V{ZfRygiA-GEly( zFugJpiUi1i0$B2ktn$t_45z0febx~iGKcl1;z=}cjZ_V^jFK(bvw$-JE}0!A`M 8DVX|KdLQY-fHFVh< zOGqE-dblm{&=bZAV4rnq(dDqGvEB(OjU1^!7sw*b)gN09OZ-)q)7(PcRQ)@;kp`Pg z??X$d+?E5_jiflUaaH&$x4#;E3 kr+SU&{q=nT3vu$so6|14f0GuvN0 zAT3d1N8{7Qu#t0wHYY`#G}hlRuS&}O5_)7m1OWoLYO!S*sBL6Fid1tyy%QLF_1bl| zLM}}xX1TQHt!$)rf>v8?{G6Mt90{0bQfq9el$4#YLQK99XWA%Zs&^oY00+ugot!V^ z(W9`Y_WU?YY9=LRsr6XRakH1@LiY=6^MI*uL_8rP J3|w3(f=hAGrq*%hGDS1C4ky`e;wT91dx>?E7@KPKpzc6O*kSt}=9b@=;Q zdO!w~!kYyhjjxP4U?QQg)Xtj#I=2(2;zH69D++F2-rF=}dN*m#=%$5~y `hKMd;Bpax566G;m+QLvs z_xMAyiAjE`H4Ggf$>?)jXTUT0VtSNLbU1|9GGP3fUfoM;7;_fDk9Myu&VrRT&k6M4 zlw#8H?~6L2%IHYG!uH~Ced$q@NQ}luc&ghKmyNgaxo+xT8MBz5dI} qpGdJ zmRPUJnw`^t`rO?0$!B|$XSGCNN~T`jt^N>K{oe_ySVxnYhK@F|8iauH4HRI%4uQV- zGM39tGh=}|@V}kR8wSMmlk$Jb5%n9v 8|6LW1f6if;L#M zrLEd7f%?9^YHeEyY}v#;ZB-({EYgGzC}LCD(|Cfc0?#3d1sSFmjkg&s_$G@p++!R@ z$ZYpr1AC%8|0*uX_JU>8<;wyxr)>iJGAGvbuJ%#KT!kKksQnNlfFL?1PavvCX0Typ zcFBurdQOEDwrxGggQ%DIR7Y9Sb=0Z`#BQjRiI!zzlfL_*8W5bWpo1^cV#0n}q5S_g zF@5y8+4qCAbBnb{>f@_VpmkITGlnGLTF@ `&)>4gHk zM`U~sO^jA2GylvZNS$NP@m!YAj*QNWoO^YOb#)8IqoMv{kH2xUe%e859d2>m8_yAQ z+~Ozc$+Cy6!B5~=GLlz_(669Oi5|1X`3G~29dzxFayMq=2N9v5>=^!{@@`xJaU8#Z zl?^Y5Jt+0<^Ca-s -Y 3+L;m zD0spAK|wNojDlR=Ly87MnGqc4Orl=9qMQ6F@joGdPAX_G)dc_Vs{1GFdXUXa9>o9A za(AsM!doclSE&6q@Xzo9Z~FYxq@@2r8Gidq;*$} M1Hj6` _1)khlu~bj+qRh!~Urn z_Ex=1*7#5K|5D&j=Ko*R L9n|z;&SK38AUm_#{@76gKa5bmy}q`nT@)3g5Nt+}LT1 z%Xl0XqV+PTi*6M!omHV6;=m1a{VX+!a?kTye>wx@5DnhqFSJN6bk}dPU-pXRF-dw) z&r>s7MbGwCm^|+0cGNJO&UE7a<-PMu{-*w&t!~~uQY801%Npf!H_}mqG&jP~Z(q1_ zu$BjVf4$7<_3Y+$R(YG`ohUy6o| 9Py<&L z1b7==Oq+|CYe(K26iiJ%rNV;AL#HqznTGrBi+CWCgfTWrK}Wb1Y{oBii(?a|##X_U z+sd}-xHOOVi$LUe2zUM;(A(}&>n4C*!oq(>_+zsIkRE{ZSH7X3FhLRE{=eb?1=Vl9 z$r=6^hzkYfoYsuG`B#Xc-T-5f$18u3d_Te1r^x~JVws{0zf0Ak`BUJ9^-xfIgF9i_ zRWg;)N6oM6D}GmqG(v96oF6+*rt@kd3=noPW=pS#XCemf7<#hy!pvX`L0P0A2vRmK z!^On~qR6&z@$q#D_Pf+nRgK3i%*<{c{r^*U(a=ua@m8WUPV|Tj&Y(rjNUezQ7787P zKR}sRT}S|c03G=Ix7)zBOA9>%!{sHdAPc>SlD>YH$-8&&4i65D_iA5s6l5-LIN!d1 z4A*ywn~Tf*`Mou)OGMMsmO}Zc Mogd~NrX?d)M@L%3_A2_#^@R{vxWr(Ol?p8dZuds+RoS@G& zuL~|c6H{V}7YC{{Q>Y{*>MkaLSKb{ZB_)w1U%nVwSkOBI9qjEj^IBV5e?OD|BU?~T z-arEs84p9!Mw4Gbe62NseW2O?3{W4Ise^#s18>C4R20sTd6VG13}3RPvn&vwJdS~m z?kz`3YASs=n2e0 5R__@>i#2+`=nZ$CINi4vlYK>1jx)0LI81~CuJs)pvR0{V`Q3&Ys-BW4c1(yQ zmwL4Z%sKe^KWAo^e=aR63m^hP5YQ>bS63b)p{1pZh3DrkBI64SpLv$Qf2TCGwXxZD z_4n^Av^F<4PfJUSloL%(PQLLK6_GYHG;AzsYU1-Bo6`sg2(T-1u(bt`j3f@#D2JpX z)DV!eK%iqjFmK&E~?Baq= zrbVO{xY``uXq$6 k!)wHfKYc)*5YFlC<3o4w?t%>f&?1-Gn4DD2;^gGai|*+W z&vNkf1rmKOnv>>CLk*E&j*5*%&l(@My{~2tc24^jpUkMdS!-tau+yqQB-z8eyD8Zl zR90bF)#b%%;b=m;_>7+>139&TV+S}GND+H9*&A(f?WRwD+1dR`F|l>t{YKanIG7OB zTwhgw&l$*M=fk-HIZFCiYKy`dSseo=L~FcO&g9SKf*_eyrS gwvAX#jk@yvz_FB^d $w5A<0r%+nCN~?c)Lp0bn0DlPR8j3Bp@tEz8xZE=RHn4lUo0jG7;H%ybVvjPL=5A$<2&sO5~=k|D@jP!I3kN1Ls zvp9lL5G)dlskgUokx{%3(L#1R6~I(?QEU-IQ=5oCmVLfCIy~BaxS^pzkgT YWo@lWt(vTNHHejLj_l1 Z9fa=b+T)2q` zewdZ-svJBtlg16DOs=eq{x^S|7b}&>A1*E8^*47#ycREJLC&{7-T(n{iWafp_aLgW zObDZZvpX_)pf!Pxb~)f+VBj(pz_8U#PN@l|O{+J%x+tczQ#9q%P=@2|=k)YmI?j5| z>I5%IAb^>9D(&~x6*ElAVhs4kOK6%(dAa%MSpunlAu;fB41yNE*y7wxPnld@9s3_N z3AowF39^n4q168T-2AIjRa!k&USqf0^|?pV>uLZaFOCV& bt8wqH4wKq5H0|7MbOaDM!IR;m4rYL zUyu~4ps8Qa!KtbEVgO|Yg#~sKApO7EYh bPBsp-ye3Z;~fg8Y(B)7;(<}K;SOemPO ij()^YD;Ef~AS{}kZ1 zp9-5Lh|mzE4|^6rIV>;b{Yynnprl 4+BnzrjnR%<)~S^hCE zH8rxF!0+_uTo~IZMH2f2!dl Y+aQ1EU-aW4yY-`=Tlt2TFbxO8yo+Yx`Pht7xVzKv6l zEf+>yPDhA9A;80H)Tbo=+3Q582Y7gRG&VKOXPD1PTl~9~SbuJ2eK)+so=co@Fm)KM zN5(bmwnw38ap!N~^d9fS$)?K{0;BioVtaUh>a_r1erD!9N;21=d0Vmf-a$%ovQ_3H zPx x~X{_@F>sNlD57Y_po27YzcO&*WAL zesophGz}?EHFOZVU3{_*$fMeKy~MHb3EjIHQ}uJRLvX%5zhDvqfcu(U1$n>g)s{#4 zRWYc}3Yh*FT%CQ42J7qV2P#6I%J&*E9nE$mq@*+Lby-1l_)%UN96$)ikb5AmS_1 E8|9sV1O?(t4*TVN0hq$D8<^m%MUeeQ@BTJp@DVN}GPOgLlm3Za7-+uI9l3*!z^_ zmywZC*KdBIwRceB#zLL(2o~ZK6kJ+et+15Ur>a=Ac|@7DtN?${wmOEIB;#ZGcPyON zw`$j{Wp&giipuik q-6~AEo z>9@;@;|cGI&7+{^%$yvGg@PJ$5%_-@0Ojl@)7uv%GnVOc=icZbk&&OYncrMqyD~YM zEA;PpLiO+HV@9y8oyY-g?saDcrhl>e-*;wn`(lCa@9uPUbtQ6DgvmX*ri)^?qGMvP z{$I1j(}?}QjTNGQOp((JG9SKIgz$NP%-gV@z@9)Kr&nRv0pt>+Gu4yOP@loOwJmmk zo&9#teO+&<-}e2nV2l7&Tp(pN?iVX?_gv8Rmh$h1(=A}-E7M xIyIqZms`g^8ato4_pL1 zj^6yC0qWax0~RO5dqPu_2UJ!Hd29gM|CLGy|4C?$?fm&vy6f`4Nx8PXd}{$hzJ-tp z(L-Y*8d2`Ak!Zq7Nudg(Tcri+qsh5KCe2HGr2h=@KZE#x3NZh&=YIw_%D^9Uyu)y7 zDFw%k7vCa21mr>S`FPsVaG*-6RzLsv%;akJhHaswAy}=V4(&rx8nI{+!Yc^#Z*ZIi z^rX9$TrRe Hx9A z|9;7;SKV-p<0SPEANYsdO-@G7Si~0wVuH+38W{jIFOxAGd}=)Zq`!o?1r;ryRS=?P z1%VQ#7^vWqN*%^W1_hM_Ma3c`TT|w87gHiN7tBzovz53 ^TQuWjT4o@RJ2^VqZ>{Xc?qD`AmO8xHpP&5d zC@(W4^Ou0`m>4i* g@jU+zc1MK!`e`n|Q1;;(U8E zUt>9P;q;~S=(d8>G0lC&&zb#!sh~h0r}m!4Z^)2p$jG<5TIM?JS1;!IKs3vlf=JRb zOArR?o>AdTzc fH;X!tdFe5?G#PDueKu_mcXy^D zq_DnprljFyJK(RAlljObitD&%F13;woau*$_Fkr1IArB=v#oP)3;n5rf^CzbM^MUr z%gNj&$vsKP#J%Vh(Uq0Ynie7TGnXSU;^(DlOUH_~13v=S%P>A@JL@z-d}AVpwkCs1 zIy(G5e0VRNnUR44ALP)qEJ*iC*Yi_N4aXQQyUBfUNl{TzOG`^(;b6Lwy}i9))|@?! z<0sp~g9GbFYAxVg7CkPqbzw(`$SV0f9?0ECK|#T)cl**C1OhcRHk$D-%G3^Wt3#Gy z0I1Gkab;yj0kUKZDjgghvG$v bqJ*N8l|rk1W~XUZfR=9e z+!;xcc2R|R-jM=?fB-cNk>BxIuS`bjJQ9qQ$fJ(+>#Y*{cG?AfZ%!c&p&Z_Z5HL|Y z3UD~oxr*dIX=1`JTeJFNVcZe@Arw!z^LG^p3s@i=;WcWD9s z37iDFoYY4~^&p2+1eBt8`}xE4`;eQCqUXckkHUU;zaf`lQNdvBP;=I=!`q;$EqQea z5D2*Y8A9HsBPVd~Hn;XBiO4WNG&J Vd%!?!E`YU;%&Bn96_v`qgc^bgJa+9lsNe zYYB1U$b=g8+dQs5eC%Rn xer%xY>>C!r!#NfK*b9H2W*>0>-q1V*d zq0yTlN1R(W$Cu4*x6*uu90rcoy$BwAZ#j{@!_66%<9*1)%figeKU~1}Q{9e};t2aE zJ|)>FS~Pto2ORoPWQEKCQSe&@0n37Vu9njbPyjkHI#d=v@qN=9kky_+Y@FQQVo0;h z0xJv4mdIM7W~0RzF-iWo9>h61oFW3_TNO*I$FWVysHThmjaYX;^;8&`71k2fb0<3m z$$Tu-(AJzV4QJhDAQq0V(_?EM!Iury_E+cj*=QFa)O )#285$)C5^22x%R?MI>UnXyks+%dlSu^!9GYi}kl z$dAYQPPT(4G)0H*u}(0$tb51$RqC@R)5lKY?q0QJSNZ;6{)%H6H$7hFdyz5MTfBJG z+RRdX9q0PoucJvUw=7`a_Z4ML?6lJlU;8{WptCRj*lp6aGd3#awVL}u1)Jk6dCB8r zJ^tF=vgXxWZH$i4@u7Sn-(A@-II{G(+nTI2i@uDSRvPUX{8%pMz5@CG5+oNMXn>&| zaSt-uoZV7AQ;QlmzJocN3Q3R-wR)m4nO1$ig2^k98(m<8bPVxVPR2x@SPC)GN+}kt za@k)th#=Qlqp5Ui{8vVlGWn?z0TEshuWm+L%Id~;m<=}_%X00+ zQxiWw5%VdCyEX(Y*x5YwCi{}A)1wB;gZbxlQCy7MT)7T26re6@;LfhJKab=Sm>@$M zX}c2Ffm$Szkk^h7ldFY)zTCotj^H(i#pq{o@vU8j^50wnk7Fp5jned8?i2kqm_Bv( z%e-aD$*p}s$h;{nq;scuS~yXA%EojUvR2V>;bNY@Na5&&-ip_cs4G |@S;f~ub1ng2YT4>a$pJqmReOY+fmx(&+@z}0qvEw;U*HF>oO6am(|s-90) z61(u2dn$IJXq71w0UNI|Iv)|rl11(L%lWZ540$(B-Yhp`c;E#eRGb~)DF>K`S !3<&x+_6ttkN$I`gM`hGwVKXX%siW!?5 zoSXbw7BdlDho~M$5jYH5nwkl^ly0(oM?vfEwz=|kmJ@}2T$ba>1b9N0xiDCaxZgqx zH;{JN;T5vD+xxUodkUmQr=7P3ojIL3TzO_W$cQW$R+K5Ah9JNaa#7#ra9S!VDqta* zHIblJu_=L*%4ovIG#@IM_#6)%l;gEalm%Nk5Ba@@xk`OoB)l3MTiY`@Q&j?Ya~yHU zMO#}K8|twvArR6aS&=k$9|@nO$=96W14n}%^Hm-<`06reG$PJ^W;%4M$EGntfGdX0 zXUI<(?5HeUczw!y7KV67)sH}apTWA+m3*I8f9FQGv_5&G7LgvX^huPkZ)f&i3+2A? z^PI`{5>`3Ff|s$SSMb0mxTqRb k2+$ALF8m1IP{<~kYAYLi&ctTDB^bqhw~ zPDH+T6x(h4yr!0`y?XRNs85`Tn@L+M&d9c)9bkct1j0=dk)o)P(_iZ}I$MO>xxG~{ z4)3&26)(Ql1~c@Tclh6pxChOn(m%r%R}3mE1(>81fQ;7ghfWM{SAqi+KAavSR19p? z{?~}VLkINLnTd|+q57oIa0Y|%zhM$%Z|JP^VrklL51q_OxcxtreFab)UAJw5M6eLt zgL?+o;K4Px4ek=$-66OS9wb0;cMqPyHMmZ2cYmEv?!Eu3Td(SMQ83g@Pj{blwy(X; zM{}|s;@22;fw5ey(l;xKuLUNOHF zGS!G07I{f7FX8c`q%(L~31;C(U^1F0#lwef>>7pwl(Sa|{QYLC4Z2@&8ksiOt^Gg; z?XkYb*&AXOq8LxZuu}+yR{AU<=QQE~n1bK?MXXsW;NWAQsg38I<{C^)Jl_)+zK!u< zGCau2`<@|zkQo+^$j#(RqA~dl{qFs-4A)xHUV1wr9%H$Ldv2vxDV!cQm+VcIs7a zR@&Q)3u&d$#NWJBLuJGOxoS@JYSCY*g(Sf*6Y3wtf+O&vb(-s~v+Gs_E?l}y#&_+C zn%nxX!pm_GAcO9eZvtw%t5=erM&|KVbQ>8ZDo-N_UqakJvWjPTc^{Q}8a2u`BfiH_ z(efvAUpwtS;u|vEUwW~pEwhsJP#UabDx?0A2-Nc57Ptg!jrB{up}2blV$C%}BV!0* zg1G@}jj Ia@zSiM BFvuU#AoITDdqH$ud#Oh z41YikW>Zf#j+piHPdjt%rg<87U#tsyYvhgtRs#jqNhZ^E*&_u&e+3=*y*H~xf`At9 zcTC$MxKd*ltEWr0bydlRtEacO7Y0-Ylcu`VKY1b!47uuYUJEuJ%)6O?WCi!dTeHke zR4+lTajCb_RnHDi48LeViT`7$X&W;v;Dld@WuM}7M~IP> Xp8WAoyR)fa_5G zrGI8W6q)=)#;e4bil4sM_~yiOhGlCwod(lJL>(aWF|m-P#YE~kCOqPIKQ(rCzDT4~ z#;aJZKBz{ESo^VRSC~bG!0{;u-oGF UO5i4nnK*z;;ZF-!HpQmXgIII>UnCp<&gbV5hguPbM=38OA9o>zs5jUk4=sT*zW^ za*9%xL;8SyhKSa`mp*9wcQ2D|dTBkx8U2uYAvj$-3P-N{WSYFuI$hd$x!OdAS`lbA zs8*H#D!_kOm|3D$rj@jhbx>6rI{xv#x3?3f@eQPp-ZxS@fC$rBJn18@?t#m*SMYT^ z?!JB%06ozSh=~d<2!-y}h%oDSaR+ERGQnaIAy+=_6?lyq$Po)^p0gbu-Z OHwS$dvK)`bRgHjTjf( Uudi$C_yE$f)fkgKe zYd1EyMB#EWFlXF>4ETj7%xY%u=I5iP9lq=56FW_~=mbCegRmnLZzk)j<5UXwHP*eI z{7`5pfdHWU*Y?lt+_i?!&+VE%E$h_z%E5tk)jLN1)9$?my}@Jd3_}rRZNj+xR<~2F zp%FP9o5Cnqt6mGYR+B3FFuGd(L)YZK=SPw1Y3FAG72WVqVr*BJlm=u&D y!c$J- z5yj0EM*yq^su$JzcV617@|r`yIJE k#PiFaH^uTP{yCT*GPS zkhQ%r$?~+8^Wp;BsvLG aut& z#h_4( %-Q#Km8-!O0Xkf8j`)^T=?q@p;e^)f&R zHJ&SmH@*Ei97(kDnN|rd#>2Q>{-+r~`v}St^R6>-^&M@xlqHH3=$E?^4nmo@bLk@3 z_>cEto+{xgUH*25bXa}`AnA#-Xl6wR_gZ+MHrNNN(5fp|MA562q>_-KhhX>JnN#Mw zvVYvge_Ghh7_{)AZa6;<0nexm3I|J6{0a9>R0&9%h|&SRvG=HnV; hNU1#8L_}uTG?;=-7m!rN{EljNVWiL}>K)7#HP% zlO>UI6289DAZ37C9f+f70-LIq$HRKqEs~gvhE&w^Nk5we^S*~{Tq}N5Yv+E2FF_Zn z#1~N`#yroE -%mb8uAyR(oyDPfS&=+g7}3ze^3-JiWcx! sGXj&X=mZLIksROk3#i6nRCOby?cP_z#LXS=~=rx zltswd-*r5>Z `i@|fsM3 AHr-D5$wvRUdo8W4%FXZa!ceT2VaxGZrCpKb4(JCX%>m~L-aERHftDQE zkqn!x=oP}-dwUy|D$}tp9baLru}|scw_)mHfjDCRhu@T%b_c(qL8_EcaSoBGm~y>u zPGRu__h7$PeY785XrGaOwtaRU*<|NQNcVM1kAup}=pe^($r({JmEt@k2pc$BiYpAR zidwD%*{#Ur>+rBF#{)?(5-(J&==Ko@eBFh+G c09*m})80aLkK_?wC`o4GjRkQeFeui~z z*yn|MDIM&nIe^NKWm>=P`>+<}z!&7XlG+8)Kly8Qn7*6sa_ih~@U~x6-^ 8&Q`5`vS@?Lq_iN@qq5ajWmHq7qsZZWeI+9t5mi&pw1{Nk5|B_#}zj v0iOscpp$cgb0x~g}x;W8YVk<|V^=Z&>`{; uK4WLQ9 zE!C_kehQp+2@mJ!p9wOsJ|};kO0*^JfS(1v61Bih1-E^@za0It=wzte`$cz|qv0d+ ztvylM2Bd>T<2Iq9+ A7y#xFr=v3!OKvi@db%iSu|KCMk7Y_~4D^>0l z`KeUkaJfIHB-R8j*aUr5ir`s_upTD<;DUvJ%`p}4l}v=QlN` ckUyoNp`saA K5xbuFz}g!o+`l>#E}0gz|uU$5JTGFcT59-hk#RAq#@w zz5^4z|F-vNx?x+VKCps+G)gLbJ?HBC^{2`9L#sNB^_+Z~OWF)!lSAUe&B#U^bn0Bv z%5UgipZY`c?Vy8;Sw*I*MliS!_e{V{<_YHoJwJ6`&IN{v15F1%4=~>_2l`UM+x2d0 zn1e_D+v6WAdgkIFi5FK>Sw&M 9z*}E nunKPhi z7f8*J)`!0iFnNLhj$TLdShch0bpffA7|J0=oE)As?`H{N!)-|&b(w_155A9HarS~x z6Mn?0#$V0Odwo%a E2rhnU4mOhO?m#}Wyr?Zs(nV-HQQ0o*g zEvAf{?(nNs5lV_J|L^BgJjFpZ+*z>dD)3{D{v1El1Zv{QBz&?*Gt2KU4QeYW^%*k# zFTK=84bfb((bxAwTo;c7&RA};TZ4PEdVG8wcJt2DHFlmECCK1>dq;C3@Em3OCqp_> zCp8{arx;$B09Tsx !JeXlx0r4#+H0GfnyB1SIwEWATYCM2x*lQMV zIzEiISpit00$kR^1~~pI>r&d^+#gmavW_|i3-rtzo%y!Db`~{G`EK^7hAp()NEBia z7G$pyNlUO$uj(dIb)a!Q9`KQ|L&r|kIQ36K_ZVoAP=1aACyaG|6m^JF8n*ZPg(Nal z>UiaXmrXQOCjPl^yzwE=TXk71;M1#*jjc|u@x=tkI;u(ETDBNy*6;r+BcuIO9{ IzAY@P*yIUQ4*75@9Ys>4CrG=R{g*^4EJ~aTs-qy4sc> zX_bPw^CSoTF$KdlzN8#(S!P);c#iI~#bjQ1oIMa7&hXc;)zGZ8wcr4w^vrK; - zhY};M<84H*yn=$9?z-5OX!=vkmoKlY%ze48wW2p<<>hZ5P8F4vjlc>D3hO5J_Tzuf z1&&uNppN$Tz76}EQUH>y ytt^-wfh&ObF8!OAR`kIM3W@_7NUqUAKa@aB_(A8 zo)J99WZH3>|NADM(ei;thlizf^Yin8dbhH&a@r+(<*v0!!#WH=L(7B3x5dT9d!T>> z1CUe~+M1in>gv-NvAmkU<_AD1=!4rkIz|P}0C;(yJy8Obn46iMo$?VdmS3Q+bQ~RP zH0bH+|E}3T^J9vJZftC<+d4Z>UoR{zVZTcQa|nf!K=gE|DUSdzfr+U%3~Fm@J32ag zh%;Z27dpw`wBjze5CKJ)`Spty$9r7khnL7dx4vGzWa-=)tVg`Ou)tva;&6UmYt3Hs z&KaOYW+x~sEuB*SnK_kHvHgAf=H{lQ d zh;mWlH69@$TbFqVCR3VyV84l{M(Cx)=XMO)j~}}a4$4j-@`W72($9drhsSRh $vHR^gkgnYZ^6LQPv+*(~2cnwgndpPsUEf(8x_&Ux`4e^3{I z^FPfq5*_!=y-7OE#AUjTknFS#0?-ie69&)E&%>zVB>zTpJX;OzF+p`-@3yRKFDNYR zm9etg+gd*z9*)Acgcn=O%cIyZadA y{6oZ=$HfmcUY*%CbRbD#4M|?SCg6wDeB(+G5?K)m$!I2?7Fe^sIIv7 zOLmKc4%d?%cn05%)~h9S!lU9Jq{*}IyN#u6(_`)hQ3Z0#dIA*{75M9?4-akBuVmE@ z*}Ent;s?J0@<&r^19st=Bp24wy51D%>+cVxW|H-|@e(-CzbK#^PCvJ_v^ Zy*CEWeAp=Gq4^td1Mty%Y@BXv $FEMosktM-&jK hia*4D z3x_r<%!;|6%7*%E{cU%F#c6*d_~FBcoGkNv40|5->uiXnm~=okNt~IN^cHtodV18y zoKNsAaYrEn+Qy*(A$?nG>lCu` 46aosW;AidK$<)j7iL6c=Tnr zFXdPy0?~yI?^6pwj?v|(vDwD($LSM$cVI
tx&R`BQ$o7u=EDjYm~x?ooXw;%H0ne zFwPNg4^WDb1uy^lRjIW8@St;5*`=P6C13XO^VQDIAn{wYI(_epYL1S)ypNi5#IrLN zl_&T_M3G;hy92!K^-AmK=j^o#5AgPyC8Rln`@_R>d%u>KssD!lJ rd7f JXJ$ks=75U<4E$_E(N^I> z|6suUcB7yY5)#xxuGQEvP^5_PN??U~yvVc{?K6S(*81u!*#Sz~pF;p-WkBI%lkpzZ zukg^!!KbUP4r!>-mXNKQ_K *HT&pwWpvda~) z3^r4rj?`(-c5kL<*G=}CAKU|zJ~?4z-c{oewcuAmy*Qw&W_e{rZ|avb2% o%7e*>DezBiU~^uLy& zuO)P~u#l42!Y;l78jhMXNwj9{Jv@pN7TYlZ9h2Vi5v=y64*h`B-o9C#M?v7L>pP%J zN!e-In$wDm*QyF*;}lq5!2oW! P!f8f|TDv0jr0 zUt~oE6q1UDrlwSK&|QwZuWtu1iaAzRY7P4UuJ8Jn2%tc8z;@2gfB@cQw`P$8HC`s| zfsqk;sy 7)$@}5M``qGU>AOUo#igap2}|p$kmk>d_U_i! zj43wGraIQd5)NPiKE8X{I72f!e@T7)j7WJ!1(XD`vb-!CK8IFXWrD1j==u%>0x^nW z4ui^zis)Qw^{M(yyhDuy=`%7i5MsKf1pfst3xQpBU2zJd3sN<4tDBp5iT8g;_2Xbd z0GjEc$+59j^4dur9?%{!PTi%jawksi>qFLln45ai!NF(TT&e+_+->l$ETVgai)`_E zov>svjWD%5?xNbpeczM#yXug=r}zKW&4~`lq(#ssHvxa1QZ-TA2Ru7fBh`_bMgVU$ zT!ljj!G0IGzyl6j4v_*T{#RYFc~u}XJ|12rdXzpy5Y*44X)9zugG~wgrY7n9H8Liq zU!ZGYL7V35_u9URUBIn_^_l3XpF*0-%H%@d;k;P*7bZ>$dfEbvb$k2rV^&QK8;w{W z3|Jq?`1tttr-OZcA-y`fx;W(woZ4-bmB;-vX#9p`fGY;$9UCp|!QX? D92;%PVYb8|Pgx0j2d^GYlFvZ*Bl%OX?79DG^0y7BLfl7e1xqInW? z<_``^(e(D4$aQFmIy={`7tlK@D2zV2*p+FybfCU@LzAKL9eap3Lrzo8cZIx`VdJg` z1|TGr1gPIve3HA|iYr5C_9}Z{e%@FrZ2Pb49tNeO+bn9(vS5E+EZ4rX{>OEAKqaVm z?f}eZB5PvVmSso()fXtMprCEhwp*Vy=bi}G;d{g*EqVsfU7SwCb_BnUZQwsz^4WSd zgPWThEmd#v3Cw|qrf9vI5d_j2EGQ^gqyZf59T0uOAQouruE%72@*=m$HR<~F#>@K1 zg>?!2A^B5|{aoQ&>!*_S3aRm;khE+Xz^eKA{%ZM}q_WN&xzTWGMTKOeg!j$6*1A$v zSBO$_U1TZ>_Y)}CoI>)`MDe|2Ck|4;D)FYsG6^?2jSpLD*V j7n}^>NyYQxps)-HT jy&8V &BB?C9x9h~OVl*yhr`HZ~OAn|nr! z-#{A^69ZTuZ8M)YZ{7g9@4?1!e4@h_4|G?X$&@MI;&yj;XPLchQMUnv8vO_8w|xyA z2 65|>LXvJQPqK0E4#lz2 ze`*8nP-52J$ox)WIQ)CEDWgjd{)(B6mt%D1zgoedy-(+)1lwvYVM>a_RtxHM@~Uv< z*_v0SY9$_GyIx}q6Fs#Lu2|$xr>( Am0P1JxAo$lgYN)tk3Hxz1_o=dd?oR*4wm(crd3G A_>!f7K#{&$EDSbi)GGTY(j*1HV9o?Was@$i1His(trW)KAO9R7 z28bg9h0xDz5#h6gP;vJ^&w5DqLF~H!bgPF!J8uqbT-8-Yjeoavq@;3@{JF$G*^~bz zUjn3d{&q3{^Ur^h6s%TT9Wf3gC=&H`%!kE`QIV5dR>t`SyfS=?j&P!+VP2da6&zfE zPRL-J6pVoUK^R?GLzM8fG^0ol)cuVFdGy TAu%>}YNk~X20n%zsjOIaCS650!-#W_v`L3WpkvPzn z Q>M=Cw!!JyMcy=sNS5FUc$pCMimzQ^u>%`5=*Y`<+{`UGBF9pDLf9d=E+f@Jj z$G4=+tgOq63!cfz$vld)v$NYaAd^6zDaQ}V0)of^+gc3xyaWagKmy=v8XK=2L95!D zn&W!nA97UkCoOEh2|E?Qot>XkMq#GNQd6uc-pP%2kUgA!&CEod9z_lo(FfvH1ZRz} z4IB!Sx_B`B C8+r8_=xTYpCdxx1r~r|Kf8%SXp^F z8VU-Knfdu{E=!n;WMpGJ4^V_k&c41!k;~7 RA zA@> (T!2vzu>0e^#{?7m&NDMSJtclTI}XfYY0u2a yfISBaHC_Th6J0%E^qeJWw73$2pgGpIwjUCt^BtOi#>yLCWXRU<-x)jt0ytj} zQ8G`CFa^Dt0asq+*DTK3>BvYlTSG%b5LBd5wpO$e9Mg{a0G?OO3W6RiKEK~Ga sZ!w7kr=f!;T(^qIkMIh#WD~#UdPfkzU{8m))6AkYt#l^rt^-l=FH75ZO z)E_T0-MVsk?P^Cp!oAsH+Sx48Ezdh2{9xYx=;5rURP?jhLp`6B^M0i7!JO?@Z*7UEjdjdbv)_PaBRK8jO}6{grWa(X{JmJ=tVErX$jGv re<2k7`La8pZ-v- z&vG>{fEy3Bt1~!QLK%4j#whQ2yuDx_Lv8PPxLkk)nPs_~zV8%{mVwKBGu(SwHD z=AbRV=B@1bU_fI;bohv5-S0vQx$-3H`HFVZ@;!Og)?Q!>sdBC8ZNfMD+F-EwgEbj@ zhtXHQLp)grcf-Gqbwl7bU9hmUF-U-Y1Uh_A2WcQd3pOofk&cpnR8pL5;QLlsvUZl| zAy4;<(Tp54_;a OuNEC+68UL*lXL~T*H|O&vnX4Se;{|`!E^Uf(~31v#@a5Rh+!c+ zW}2x9+!hsP@#;JOVYL4}8)P0dYO?)|yqH2`(OjPJqd>BKwiB^x;OyIdjI6e&5x2Lb z#2R8OOX$I2Q(1plq!V9i3VVT4ltIc^G_P+0B;I)^j?xZ!5FE9hjp(>8iK(A4E9L+j zF$DOo8JfC8b!RvsX!nP{^SLH#8uaRXHVY@)6K@BUr5#5RlT_J3hXIr~rie-QaVi(% z67R;Nlf#1U=J8Z{5Ip1k#`z!4Cu_ed*WkaJJl`q&TAo`;L11vHO7a*y`IhG#!{Bnz zWZ-rtG3xyiEYU6w!VgY3l2QKZ`*_o2Gyq&O<&hbgp1vcu`Q;`nTL5K~PT8pQ6*{82 zsYL?86AYqPj{O7KcJXovsnev^XzML8=GC;iUNB>W4URHwlOb)G$s)x&WR$D6d&JLA zgIq=rmGOjfExQM`7z)u;e RIq|SvKL$DrFlPMq1q0>cbh6`&uwNdLQHy*=OsGvvNqy*H22~IHuo}1uTOmT zud@nZ3%R)+`>~uex2NH rIS&=# oY_Pd1&Co_{@RIT9#gbNzvyQIe$~K+^k*C1vxp=kFt!9OBH&)()&w zuzc6RCct1_)dxp*I{~-MX&{9!aYB`Gq4k`L<-_OZB^kKoLILnsFm*ZeXJxm|c?H1- zr%#g`ZCA_M3W1{gRL^fK_ykcoi7KXM?4<6NJWqOYAvnhb&}_-|W#$$H#o@G1^?H{E z{P3^95ZCL+)lr0iwi=N*v#;JRMW1Fj#QFEl_$@KD!}L`n^WokPymfkJQJ3-j)i8A) z{gm# Jgd|xhp DV9}d0Xv1}43PNPQg%wK-d%c^@D5~E(H zHE;DCTT#-xn99G-Dki+dEc5Ya)R1Y?y`^+I-DDVjP!EUh%b_F3NDh|IONHOFx}V60 z3X*dLiP2mI5to;%00ceg{p!&EG57X!0ec?!?`lr|!LTWiG;xThjvtOauR^ls*qXH# zl5uYTR`^UvWtHwQc6JXi=;@)CyCoIL3gsIYNbd>`ixF7R?6z)bty)z+{cb#YVE(p| z@Uqls^M5G1fLQ2yRX>TgkYP{`=}9jH;dE+9vyX7HrYDCcFV+riRyn{3xyhPVY+n@E zeRQnIk2+6y9`1c?P6$`gikFQ;(@>Qm_ok~;^A*s7u ofW+*=En!2t~=z|MDm~if=~{7w;=dFw+0d zH p1&Un#{Lw@JjS2ybwZw*bv=nGYlI&H7=z#cp_=@G}bv+x8o39trv{y*(ct z{f%Sko4*A;monpMV&qvbWl`FeziD?&fYPT}Jo*W2Wpfn{P5JX)O`MB3lI4AN3lYfk z+1F?8Q8Jj~m$7R-=_9 1uJA-Ketut_%`TXM?^KMz&M*z)kCZR zdS|pV5)DOk_}w0Bc!>O^FSeLV+JuC>dR^U`?Axdx*#ag=DCE2UmN;DXcQs(4pzaV_ z?ZkIdz{_>3ROt;bBGisaYGw@k=hIO~lo$Vshd!@DNN(pG>IWkWF|gOc-7vncwD9~S zgJA|9)zA6B!TUnDz4hEv3AYI&`?wFlk#GFM^>K?Rb)_NDdA87>AENr {sD%$Kw9CVH(#CU4==XRmc@@G4y=O~Ac}w=cR2@FxI=4>&+*O{EEC zTnf|36lV@G>3SIViRr(c;u(jDs2~?xi%fGTF>QDrRr?*UMgLfwn*kHY2=lTP{?iYQ zI%u|bT~Hh5+G@gV>!#G%4b#C-!!U@hhlP}1=#nI81CtA$lIVoWzmhqo9Dgl+3vGp_ z%eYa4MD(MF(N`~(*29*k%>)IspT)m!GWZO?y9@PTKJMHmv=FC6*bJKtnwVt_{-hYz zeDbly!=ZxY bn>A_^3)GJ zlF<^|?VR)-{S(iiiF!%_SxxZ(E~FKOoPIL w$`Y*L?_-~0VikR=E%05|8LEsHvGkSj>+oJNP z2}8Li|Hk8mcXPZHsue)bd!1lSP)1Bd6i%C#yg)bS6xo=&=l5GJjqFTj)O!VI!m%O! z6I!n9r{Hg =BS#l`y4l8@E2j8e z%n)RNr*yZOqliKr2)L6#iW4}%LJo68xfm ~CF0)Lh4G=$os zJ&ae(BXS_+h+!!262+H1G*c(g8$R_CR4pr|mDyNQQ4nD{ZFtls>xiq4*^EJ&c}RtI z7k824M-LH0D+z)w>GfAiQ6XLo{xfh&JiX0l2-riczNbHH28hLtgV#I3q5~#p1yYhl zR(dvMkYVdw_@0J*X-p(7Iqeol$EqauTt@?v ?-F8aT#X}F!j-y)7V!_c`%@zETJ=zNJ(dkl)QDBn28W|#}?eI&Uqy6Qj#^aE4 zRK??O-=(wXwaXYel}fB s6I0nhC$0kcd8TetkcC;=!Tr zmj=GXmXWMrbSFCl*=>QSm~n@<@-PIXB+a5;VN3Pm1(DruZV~*4@kgYDz!=zmHK>|y zH)cA1eomr!#U%@B@dq5c-{Q?lavAC18RdP~H`L>~ZV-mCwqj6moDgh7i;-0lr0oNt ztccolAZEkt!9YwMGTcTB)t>oC>8X`lgWq*Ki)OU&=*r;dDm-ChrcAGFOG^ATf~Bc+ z@S3{7G_)ZWYV-MbBc~75E)-w)WdN&OifqH8fk^*0xG^D9&nhVd#bKee&*a%6OF4mJ z(gu#RJLdDkeJsc(YrLMepPGyK?WV)PM5YznQcy?@VH4ksnVJj(-%K8}{O_}nVAqm^ zyxMzYTPrV`pd>K~q`WCcTl%H!`k)?G@NKm5Ejq>5I+LtIJ~L=suBpJ6%k1RcA FWO8GD>@OY2mtl8`yI_I^hFN&SDd~=DP6asMtUDni`THlIM}+%i$OtPuKdT z>*wug|A-oMG=V8uz -Pq<_rrZUZij(pEYdD3!7#S&qY3n{#O`rwZe&5JdD7Gg&>HMo|+{KNIE z)INAsZ(!v5ce?HFE1<1N8pMF$CsMA%{WkH*3T<(-=r3XVAoOj1U)K+O$XeL`gKVm_ zW|{k5XRk6++zCYK#H%k#0J%bqgDNH^fJf#TR3zb>;=$r%vpBI?FG(&3Vc+v1)8$s^ zct;;WF&A@)Ua#U&8$hl03la*icJ|onYOBX2m-TDg!u&v1}1Td?s&-N*Zxs+dHDo z0|%#tc%eIx_fPjXmV<2a!Nby =4aeYEvYq^qt>>Bs%)oSd&Y02MA3S%9bZV1^LGUjZBv4( fM{|}!jHx3FnJDe?ve(csN z^`v1J9UC1F#Q|}*d)9UYgH7R0 zc zS<2khDVIijz=Yh6L8MY{dbJ63E450WaF`Xi4IUfKQOo<9!^H*YGMXmFJe5LT-rndR zja4sJ2nVnJ%*0tvD$7ApOiLWp$U6jX^~{dcIMPPTZKIxP&9F@dCA A_#Ll&v`+d>Wnw_iCs#|~G=4pFOAcz!)PEWteQ}_wr&D F37^V$pNU@@I7mMYb*iZRATSjolkPh_j^Szt6^tXBeqr zv;&$U$Gu~e5G%nB1yH{Piwg?%zln>JClSzIep6A6FS}O R8n`^%$En$j1!2;6{#O#1(+lo_xSwYX@uG?oZRLD);zNhWg{2^Y|JXO$ z&;=CdIIei8Q=W22`f }Lu`WAUJi zRm|M+pw0SOk>Y@#*T4FL>Z(6YM80Lg$e$C=XeOTi4e#35-@~Dp{=kl#=!6(e`Nm+t zpP24L#Clicho7^GG9!u2=O64#->ttdLS^rn*7eZ0U3wvo-xo>f*u;_D%)Tp?If99H z#fzwGt3d^sg# VKbs`Fkg$ko12&3QYY*zat z3E)S2%8?MQRR3f?w0L-%xr*&D$A@e5;^gtcGYdZatu~APX5dubNyH{=2hX4rsr~DI z0;PR&hbD)`1O#%Mw^im#d_Cka%c~agYwp9wAAW+nnmV@gnluoTr!V-H)QQe~sPu=3 z83T)II-($oZco(gPp9j_K0;FDYXn2T{BqjbOQ6&mkGA(TniCx5AM>BHY>_uDD)9`$ zv=aJ%CgHfS+puf3xcZ`DO&biu4rL2h>*{lp_k+;fNShen8MJA!$inczc%5S13lm&{ zzP4MqO!D^#x>V|fe&exVn=i1^9ft3lxS6?1tr6M3qmyGdc33^|>uMFkvX=$bh+zm5 zfEzF6uaOahP18GF2@h-kq{Y3dA7ZOMs%admzs7HMw{`Vfr?7JmwPf?O4(d;fjEVHg z86$1fbD7|Ui!^9 !9Cc1 z5JIlk;gi(bV(%p}Uy9Jy_4@hla0G3yJ}k=FVGdUqPUO{$+j8J^qBI`HsvZ*YB9?CK zLVo9=*d{A#C1|t3cEv|_iZyek((XGI+{^D{E(i$~i0bzTW2hqZIfK-a+juq8lG;f6 zabTOGjLlQ?!l8mR#sqT_E`^M@&TQf=B=OLtRQVf=N0L-M5`<*4qMNe&`7s1evXKO+ zbau(;uLB*l!~zi&%|@^B 1-9Y9cH#3( z&{^}t5Y?(VKz2GOc#Ct-Ms%}}jVjr#%IUaTlKxCuHN4AA&$5GQe&JT4pqhfs^2po` zPpD@m91~}0Jk$%e3lo|Oj@O$kPU*DD@r(B7r-r=W?`&k&%Xo|F;69-2Dq?5+)1)n5 zz3LgJLsN;mlY0YBf=eKxceTK& *Z zjR S53?2+=sy%<(9t*kK7*!2v#lgvrFLg4ivEJQ;-wY?9_xl~8{ z-ozJ_pS;hgV9w^jEl en#k385$_5T_OJb5+H_qC6VHx z#A*(xE55+I)H|Ja3vHPS!{^kS4(b(rpzfte_M}ih1q`);KtQ_+{2p4zrqDmB-WJwA zJ7z{H5^&E07D?xhej*m2VG)Fnx8k6O(|h>HZ3-4lerG)iOVCMsS@i*v&WQVy`AGY` z)n^6=%3ZJE)do!N2IM>x5Sw$DDA@BS&XY#b6|VZkV$?XxLdbO^)D5r 3uo$=h;)PC?b`;1NH>WVVh?YGp( zDF{!6NUjWK+&Jo^Xj5q_%lkBG@Vrl(8QpCv{ Em?0@kY!o!J7(p*^CqRD&II+Cao#CL_x*L`%D z(|X6eG5t1lh7zkH(0u*NcxGWFu^QUedW*8(5%rI!<2Cq?noZAiRV=)Ha%4cr?J`Q0 znXJnc{KgD^? 6YjNExTnawZq$pI^;aTjAex6LgObl2Siu}w@oGa zca!ykIOuik+Es)DifuV+4U}Z%GQfmIkBz)@(jM4BQUAeSiW3Qn?X!_@D0&dh;jr0q z-Ay=@4$1?pZ5rlKqL%)GQeMBJX*7bIGXbZtC@Gc2>$eCW7Vib}3=r&%?TuKMFJ3 z#cawKlresOdWMRX`UMBW yJksQ;F;N_vDrSVS_s zViXxeql29nzCEM(Y$yHqn+Yji%Q8KduXJu$yd|6%j>1}d?rq_S+?0T&G$9i1F4jig z`wUOLNAcLPbdHUJb2BTzbADE$u)Hk>Wr+o=ef*<#Nner3g7i=_t @ui9#RZ7Z#$@ z>jddnsP-HOozouC_Cf@*pG(dJwE*$CyoPmxNZ(yf#J+$p4kI~~o_104M^Fe1(q!Li z)$N4?m#ODPBf#~y 9K?-5?PVuIvD8g=AALM(eBg@tIIH yaMF4J=K>dwaR-J0=~W+33(HoQx0bVP_o%)%<=C3-)FBKFXJ6) z=4M@g|FJ`CsEzL6e&n_fq~U)ss+Z1oWnVYei5C5mS$q3<{QCcp_7+f4wr$&}`j~Vh zErJ-xh#*}mT_T9&00I)ypn$YNOQ^)qAc!>546URv(%lZ-DP8}G;PZa({=dD}UTe>C zEf8+*yzc8dW*;pd>% {_)(2Z`t;B+;}yYPMp~o zZnOx0{jqH@kSyNp?s7)S$vC(BfQtH+zdl6#AsqN2QKZDUhnS34@5HM4jMx#9Vqa5I z|5${)0ufHP&1hdt_?G737AL-m7vD0PkU}m@TZI0>gdiS0cF`0hLG8R9{(~0zX1iT6 zEQQoIJ;u *46h1)AAm3ke(k9 z8{FoaMpS7X@_guU$0uym5yRfM8~$jX-bG->y=1QcQ8oRA85%6B?5a5ltb$PQ%U7QM zFkR6gNp!zFcH7}PF&D`PRtY8>4>9KJHjJ00ncfDMe)-|(n(=JWurP8miZeR5`T6o5 zQqGX)%QG$4oi$Cs|NIY&i4l%NPl`Xs2OA4oQ%A>QfPj+WoH_LxaFzoD10OyRJCuWD zEqFD2_@Jnx1HJ%XwE_YI0bo7GIXyk?;o$-J55UIr2UzhA0Gd%*nQX5Tlo1aCFaSFJ z{v<0g@ye}R3gs1`p=xXl6czP49(MMn!13K( F*mzEyZebSSn>aI{QHBICA%w%L} zc;l)=JR7ivR>Y`_?IOa$9@YX=snU9@?&>k}=oNa-1sQtxy8e$F5(Wl|bRM@5h& ew6kzlEE}vAU0tNDwioTwK0Y6GqVrE}6-12+_(5<8bk@=yz@g8AUTiZl7 zfb_YzxX@RR#|r(|y(=}*2c#1ffcjd4)BUC{8)oO{C*t*PrA0Ga+|akNX+yNO4&8`} ziOFkJHnT^Tmy|s6G$ReDwdkLmOcE+&b#tOc&08QwtNLo*qIYrs$K6s#0(!Tr_UBJO zj;Ds|G&xjE#d7L2Bmp6eJSR<(1_!kar2IRZm^HMuGo!n@y9ccu%*`8z3bLQ|W(9|Y zTo+xaYe(2f|4JVRC4PnKaiE{E3Ho7tqK=0uU_Fhj)w$1`>btsXQ(>*tXj)TxfaWxh zY`Vnsvu}ERU4`#aj-Lo?)o#h#o7Q%9<99E`x!z~L*g>BILq YuwNox&ev^&ude!1a$=9UZ(Hw!%2J{OJXOJGE z2ZB;W|0p`@NBz-j1p2QBgrhb kT>td*_S*^jJz$$LZ~XrKH1pxL&jYo!5`Gwd{AhV|dQaEMSo%SVO(tt~jNdzQ zw#h1Vl%;ZtGLDYt|JcuCWK(lbDi-kbNil$11#H*zbLY;bNY=e<1VY1_h#(gi`Do4; z?h3a|%!x-!06?F9@$qz*k(1Mo %3YEd|B8E=}e0nj&im!3a=&ccYmEG%TMrGNdZqpe*I zu uR& zX-U*`X(6pAk9SiE2+FuFF zIsY;NUZHngK$qRM(M(sD5is9u&rPE1Q<&-+dgtxdZr%QrDv)&doEa)KG`)Fj>@$IY zQQ^V(ovrU)W=~)6+5^Pa$mptcoTYpY=4^#$m&F3Gfm|fE&=th9ixo`+`}_M9{dr1G zZs_iE{6fy-6ZXao6QR7wzkX^Le_lMI5JYw7)JVG*xr8mp_RP!;{0S`fo@~obh -E0%sRWG}tS+@%jF$ zztR2gmcs%F1_p+MX+dG(zFQkBD &{v(cq51d78?%jJ`{+Gc8Q ~dl>vrBVsvXUTi>To8^F 3To+84T6P$ ztgP%}<0Dwl;5D4J53X4Y{q3<(&?KIB{9L>-J~|q+A@bjx1W^8uU>zxcHUh>ro2*Iv zU#tOvYxWHYf~v}8wewna`z)im#l csqH!sVGC20F% zMiZBKc_@Hb#KjJ#ra!!AIFL2pcUjZ3MF@%2EQVTxz`n!>#ir)wol;+|LA=u3&oI`% z+A`?;m!7>nms$5J-BCOO0+Sx~gqDU9M+;HWw-TR2Vk&qKDSLa~w*wwf?_x(|izxQy zE$awPa@1x&amfu149t!HT3=rm8v%Qj&NQcUG&3W>TLQUmh@l+CR$ITjogjUrtlZJt zn^HLDf(Gw||D4>itka!;b{Ix;x^5cFzC}rrN4!-~w!{~{2BSHnIMu%|3@Cb|*CGuK z4I^GUipgGuCw*?ZQ^YLCWCZZgfbs8=lq7akRLkFMw|0QQf|p;TrM7+g9koe;u!b|1 z?P9A2p4+GO+H8Q)-aNkXBP-o?2Ki5B!I*}WwpB}A{q}=HeqL*Xp`{ex%QKeWt@ZU2 zx=uUwYJ{k`aMxIGZLF=YQ%hn{B6KJ~u>WI!^O9A+?S@$?M0;+RxeoXG%W{2Tl6;@- zkQ`>WFjJEAY1g>L{ G_jRZYqIGu+=#GZ0&g>R57}Ze$LA>`3K);Ret9#(- zMrQ*%srQtvPS~j$wChcc+;1A~ys7qCBrUWHv1eej150!|e%c6AWaIug9w8x(WVmH7 zb_HmH#2d`3TcvC=3iU?YJ7;>|OqER8|D7z(qgW{sSG%vVS`$2fx<)`Vxw6v651c6x zPot`O1N QpJ%r&G8yhPt=*#|l zbJO@ZG9*HP#+${nXW1v$RNa}fVePI3_D^ +zIvBh#;`Qm; z`41p=v5p_XU4(dnx3RI2`=P3;5iQ*ZRS#^=42$!ZbRu<^O9hvrAE4+EUdjUy_0!bU z#WbXt`$<C;&ge@ OsqA_+Vx=HyyDS8&IfnA?z)tSwv0-v zqNJoc-Xdg^E4XrK=%LfU;A(PkdHr5n3qKX&@6Orb7 @;(*SKxtsSARtI>ZDP`J$j*V!C0J*y)c+~s{!&uX&kJ{sJC1t%8g*tyhQDKY zNHRsy4iN0t^tc*Rlv6h|pTa<2!R9c4PY^QicAwvecx=v8Jy|S9<-7Ri$7CWVTBWAR z)$)WYg*$aA=35gJwf`Ol;q *5y~7R0vl54G%_ER@Mlet_dz)v(N5Uy_Co)iS3RU z(q=aRVFmw~1smZy$PyqrIZPln_Vl|KFV_BUeFLT{eR3TY*=1#e;2JUuE5+aW1Z&eP z%liG!f!Jtm!8fu*WT)f3*qo%X4wjZ*xff2?bv@Ps^46R&zrg2OKXxR6qz{*YSveTC z_ FQ F-6vg|AEk{p{9w?%baKgLN+k)M0?XYwJAD`WUa5}lFsi`U1mOuV2k@ w%x(qric}Ofx}Vw4JCNr+f0m zw_#8N!#{E9#6Ro@^mae%KflJi-_`( r? Rt=@-V^$QQMk5mA^)P9fSDujjiCUly(Y4C`Ye=pRE&_yG~B z=1-O31PLYTs;RKB@O_ffvNCxU`K0#uM8G8qdYs#PG}|*@Mu-Rtf9b;Ws(ODKCZ-fF zP_JOT&^G bOKNv4i)o&Ou!N9+08}JK zYJg2{n9Fw&Z{G!=8jj%Wb|Zu%TrOM9Zx)_fR_dUIYFej60`dOSJJgTe&_zWT(tyq* z5dB~`91a2H3hUO{wNT8sea$#;+4imO?rz S*sDZsLJrQy%AwjOd>HUH!NYm`dBjJqbIk*8#(m`8MF>Ku~DMv=_p-X-z(#2xoL z&c|PFZ9A__ba}-|BnrzX=rt 9k(4ZIuUp_hGkJc`8v^6&VffI3Y?IVMTYqei8v2sm27K_~sTCX$k z*Qhg04IjzQ&Tdaq(A2fCXu_q&DY#45`-oap_~lYu`1J_WZw1a1DlOmAA4nX0bxb~! znm9;?nvInkdJcV9`U7upq)%~EsWzaCKHEcM`2y5S!Hkhk5xBiCX>Pq2^&*HCanrUW zbBl*$ce9+{^KZ;MVsmxWhJHV9{yVO3;BEQP{#X^GYHwPBx!LZoYdLUkF3G%g#W^`6 z9#DMZy|}Zpv4{@6N0&=1x|Sj|NT>UHoh?{FLYDq!i-zBdSk`vRnT>_P*$6c9;OR;X z>-L<6>xc)?k(?8x9OBe=5Dfx|7-1KFA))!{LdrhRPq(g)+`i# z5!1%v_0m|2^zaV33U5CGUb@AeRvvS8WczjXxC%4v_!&Aclve7I zL++s~js0V!3U9$Lu-u4oT$>3=tXb_Zw4^Y8!4ufwfGl@dolwJlk*(>EPG^X4mwsBd zv-%{H$o?+MZ3{MILtA0rP~Q30A7 ZY3f_d*F|fGO)8;er0Bv+v8q-nLOpxrz|}{#Jk1XAaBtd7vNJT|K^iHE3gikU=<) z9`$&ptOy38h85@_2j-9u!3^~HKkq>ah%VSxZQVaRIBN7gTfa_l(B*@DJ-jvCi^#63 zF#$yUOcxc;^;w>@Z=wG 2<95t)4AH>a3e9vp&eATHSIc8Pf zMJ~jn(_Qi@j1OKd8i0$gVT+;to_|0 %DE;=DCH1nR-?Vt|(sX$~RCTY Kn*-BUM{8Bj}kXvi#+8{27R=v~3Rd_g27L6e87qgT(;#kGNIr0dDzDnc3_KmryHA z=we= g R(3vNtd zbCN$)*@R*ela$HnlsYn;gS5XIQ8n-v=4%?`N1JC0AiI#c7R^ex14QnjOPd>`IFJ cbYv_@JT7v>h+F(@)bow-v)XQN?sMA;f%V%lxGP~P11fnJ{0Q7BK$&aKSM$neG0 zDzddyXEKD?k(f;IPki2rzcBxmHAE&ffwVw_ZTM-nn%d0PR RY& z!bb<5@#|(*IvFZLlhf1JQNj%0Px2%bYO=>RZ|L|ZyPX)WdcyAAeKAsvKRQ5CfZ*@S zg^1-q3O~V*)-&!zCcjr*PP3$>%&B42Bfq7#w7oqu8P|7CyzIu;mWXl)d0IX?%gHo@ zjG6KTJAGj1Q@T_>f*1Rdd<>7DCJ%{SRTTAJXn_%M_=(~|3X2#tP&hj~^B(==#49WH z9AJq@T+SIJi|~3pS?lN!T^mbx{M) 8wao`SO!{y)`x^&Sg;>-8? zD~O7NBZZU0Fl#N*m(A}`T1M*qLoz)@9|y)8zL)%%e0|?Y7!s>d+@pLir}U5*hwKXZ zJ;n2Q%l_v-wBa)m-TM8-IGVwf^Ici*1L=8+r1p(f878AZ&efUOD$dRRQJVsgt}64Y z1kBNR^|*)(5WsavP_e=;CNU(dRbGTT<<3QDG`h4D`OWCxaO2Sa{eVaHt2URVv-5xf z<58S@ Y0D0hrO6tU}Z^-UfM8fdgpT5s%~)kVBdK@Vr2RMc@hn zEiWurDNtX6GNYE|!^jP6)ww;2LW@Cuhn3H+V)nWau_d; qBfftU;ix9V6sa@cFY?UAKN*b6W&~khlfUHqzYA!q}MCZZ6FA%w8P*Cn#T^ zI~spPD7QyQV5k?6L4OOJPCtz1Y^Q587&$1LRn`A&Yz(*GSkOW}VC*S{#?pCfb*=%W zWL~$u?M{Ot`^6XsXjFllFXrF?;bGx>1r&0$PPzw4Ckl|PhPS4Xkq4Xe)CDrwJCIF* zGx<#gYwK(~iKE;K`j@)`1TF{rE~{WV^oa@!i_sk}u9SxGq+V>8^%jHzp)EgBJ#}ws z6_fR))#^tl1#&6~btleFO|dKJ7Z8uEOt&XBrY9#$(IJg8SyO_#3;7s%6DQ&E%t$If zU|WV>zp=H0q2WZV797N_$EZxc-BZwYCC^SbBxe)pW ?hty%+oD5%{sb=)ZGZfhf930?)sxw=5D%&cow^M=sB=7ByQ5hFs<)v&URg00(b zIFS$^Wy*g$q-B`=rzR5l;(t5|*X0q92_rTS3a)A&40g{+qv+Sl6uxD+-JIZ+C##vr zB9c%puanq0+Vo*W)Qonr^#Ky8;!j6S4c>KGi5KbVn*uRVNJXH!jNN& Ww&NDS>#ku+63XwS@Z&DP4kmJ)K@Y6xY zBuEBEP=->QlD-KCr}k-6|7DH)i_dXqBdcUiAI!&G)7uCAMhhKGyaaO2BN_vd;?`s3 zkaa?DjCCv(TdK;#0zt>f*e*}>P3jL#MSa)ra4sAkcNa56SJJjocc@D!Tv2~1@urND z(*DUvG78)v@w36-^|FY3J@lB~Hj3R=JbPtjOGuz_XJMeJY-&T`LF?*msf}${{^94% zzl#^OEu}v`MI%RBvjy?z5}cf!e;R*nHRVMb&hdzU5Eqv_Ejd;1k^iwVFp#h~Y|F*a z&@&dQyrr0C725FS)o4sGyI6y?_wM#~L_dV9`*+a;yPTp8A|fKqE>c(UvQUd`q6^o* zR9=z($PE9g#%n9be>|t8ps-1TyS#YL<8;6<;b9TkiHnVyjLJIGn9WF^yMVe+$x5zz zKx3g>#&B_ALC?2n$jZUqp2wb(iz@_Ypm4y)X@{qBd?Gfyr>|}U-?@63SeZu%$_R!> z$Emj}%C>R2N_U+|6M|b6w-QB2JtLM*2>o+GoFavGK$}sc$F4&c+DPxlaYxHZYBCL^T z7cM{Q`I-E_PR8+#4f~kznP@!0XHdaWKRP@IGIPTi=ZfA{8q?olbcRdoAlP}ozxi#Y zaqPFTu`%c#E-&9EO{uOfioAI3%ix aI>?&H@)9R&Bzk;qq@4z10EDoO;c0$Oc$OK?RWFf2}~qo!!!t }#{U0wRj$HoB))?Z=vO>2Do{4(UqqGHpM ztS*@&Zog%#4#&WGR9gJ0L??X-OHa(-o3a1FD*R#KOP&z+IcaxFrf=z~J2t&^Ri%nP zL>ZJ?tuOC7_jY%q`V66cY{XX!tMp9uFsF9}tFfTenXc+_?pjq@U5jYr%_}K4Cr6<; zUo^kIUJ&K?wgM0|%tVTpK7!B?EnEvD>gnb6oCnITA;@xWMGbsm?}=C{_OzxR zn^JN#8=2m3-_rUiDrJReUiXAeznsJO;P9Q>6_sqqTEX-NzN9WLT8)blbzE81mPSTi z4p`$~d*sOmmm0?!>LXTlT6a0CUjMdi3A {*Tv#awR%V`LAMn$Q24v$iU@?|VYy_J6fJe(rE&i`+Q=$LIL}YV!WE zPL9AFwR24n&42xpdrC@B$z9h1Mi2U=ZpZ6+OEdf4lOnr+N#bMN$c1_Fx7rV7m`jOp zb?y?CJroPL_2hhA#5>>1${j>_#l|@IX8ADo(ffKF(%dym7>a?-2m;iR8jADS|5OUehOG!!j^yyPciIbfjcQwW^mz0zgvU~sp zxUG!UkBp1}{%6y2sKU(>wLH_A_UA@G-4r1!760|C!u6rXNS=T8FBN|(&L}Rzh5=sW zbAXbjCXG#cMuryJim`ZZt~WPajztX0_DSv2|GZO(<|o&pUE5kU%E&7W4h}wjv`0t` z?vqeVLh 8VvclkchluoJ|=NC8v5#p(txjD3|-F%ymzrED_2 4e^uR`c%n~X-Q>DztPDuG#s=rX;K pq^vu{f-(+ zySB=UIMTZ#P065_oK}zL%au dlg6b$NDJ`8F z&D~pfpv+SJoS)A{I{`tuxzmeYti94dE1wv13MyyzgGDTr)^#bhI|!?M0j;820am~Q z9T0)oSD4+&UHAW+?z&^@AGkn)utO2LuJ;L80a3%cC6uL977tPR1rpL#d;)^5&d$Wk z!9m+2AU)dH>7S{npU?JOMx< wd=>f~!Bm;XXJur@i5(nt#|0ws&JZ=a) W{NcuB=7!w$ELGSkzzu?dKq4_;q^>;{auNe|;CNMp$ zXw)@4(6I(CDXu%ad@r?$T?UptF?~im!4SfqCVeKMGP@0)dS$M&U2JKZ_C*JaQb_ci z{+$kz1@U3$HOJZa`!mCTJDQh}`yz%2Q-32ndK^nLvrT1u+=K*dPEu4C&O9kQ$Y^%f zncO1((U${QU&pNEB3f6QH7 ?mZT<`SIx)Nr4R@7VmZ>2lZ&0 zF^lWf+e_qLa?a-dp5)M@MdV-Vjf>h-w1xg{Q3hH@gY+j-xXY?nvw$;P?#|ZZ^?Ak; zSCR ;|2Kn<16?N>OJ jar$X^RKbfkPU z-0$f5-g#4f-#cE4%<__lNBl)MT`|%&19CCO3m4BbpY+iDoW*%h^hu4x&7mDDLV6ab z^}$AVG$U#;iOAlN%4oQEW_hU;3Q_~@R_biEDNg`g7kQ22wvLpS=;Jr28I4yLImP^M zOs;!8TC>XS?YNUy*0F0dS8gnDGNa9iq4&WRWeuu9BQv^etAXd8@Q`FX3SN%|o=0 z8dy^RKk}|qdrsd(^4*$CET*oqnKKu#M6h Rjs{^_!w}dqIg1?=-EM84y*p}0$%0* zwlHUFYvQW$EH|x0E56$DS%6 =VG&RUN-s&!=Z3jGhy}|x;%h`G>WH}wVin+cNKL(8;B)YV)P?Zt6AN|`{kavH1 zR1$~G#3}etU{fjB5=<-|*JK(y?3`g;A*ZFKC2Kb_Xk7pB?wmfu#>`BrHpy`{;FVQT zHx_h_b#O|HcqtLL*w_*UulTHU%j4S{Pd}!OGSy&D 0njGj#oCyupooc@M4I)D^lA ziLpZ^@ru^CAGikP{xdfZ6Ct{1*O2b1VYes|&}K`z6hNM~#dD^wzOl)1+WisL8`X=N zR 9k+;aygq)HB`p$_gu{?nPDB33=T{B1&+6NDuo*&xF{C| zaUuCx$$;U0f`5L2g}U83OzYQgEwo>(92XqMCpkLMC1e19H-+X5>QTuuEP%>Ouo2N* zC@zXTYy$dncV9|do0+VutJ+erisz$X8N5CUZ4!zEryE)(O8MIjFFo>{5BAFpaQgLL zv@Uj588l)&Z7~{1 )o79dD&gfahEc$i5eV9pC@y~ktymHiZK%j!`pf2}7%TdSr#EHsr8I;}Z z?5y@&+_rvW|Nbh2$H&|E*W{PTeqL{mj)+(({>MB*l^Yq*nyOa~L^;!Q-0~;;ovjDz z=eM`}4Bs0#IP?ZqIIPw_(jU~ud7-X# 7VCleLvqmYt~TVOjIf2fH%wiD@t?OZy}huI2qOH(2KCbq2)F`P2;!G2e Gfn$S9991OOx_wV(*8} zi&+z^<5v}8I$XcxEkoF1UBXSHV8I=k{raA0W42%Aw933$nYIGCGBO-M(3ZYSOTVFy zrIjWNNV@i0k9?{jiNi3+%>Qg^>Kdc?s3OEvkyCD{)jlK{NT1(00L}S!KvFaXzuj>v zedT0n`L()iOA0Vlo2W7Y?hi!Xr`QMj*7VPCKQZ~|Y(#iunA)pw7QK^i9^*YHe5xD7 zrLka#-N8}o_G)cjf_q4W5_Mf!cX#9(cqzj?TB!3XRLPe#C41ya#Fu2Rt-;jPV(rh1 zJ8rRZ=|3*kSzq+z4Wcm@TJ6!!G1v6FBK+1?YgFvH>pXA3wasi*<}RP=8kavc|LXB( ze~b?6h<+4HdBBA_iDyUn_G$y`EgSpl{A<3mY P?+8yO1R9V1u}3YcNTn90pat!_5VM lbFq!xscssZ8ajgmzAZFm4*A}au1dG&5ja| zEDxHnFglW;wW#f;Z*==JtbYdGzxD6Gg>Q