From ef4bed6a020f3b53604d0e0d12b09adef3f7547c Mon Sep 17 00:00:00 2001 From: swajid Date: Thu, 23 Apr 2026 13:13:57 -0400 Subject: [PATCH] brb in an hr --- README.md | 57 +++++++++++++++++++++++++++++++++ block-letter-fx.js | 78 +++++++++++++++++++++++++++++++++++++++++++++ preview.png | Bin 0 -> 28216 bytes 3 files changed, 135 insertions(+) create mode 100644 block-letter-fx.js create mode 100644 preview.png diff --git a/README.md b/README.md index 5191432..fdd4b7c 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,59 @@ # this-must-be-the-place--mural--colorblock-fx + + A canvas-based sign-painted block letter effect — white face, red mid-layer, black depth — inspired by the ["This Must Be The Place"](https://www.thebanner.com/community/local-news/this-must-be-the-place-mural-painted-espo-DMKP5D3IJNCWZEDL6NW6JOGKCE/) mural. + +![preview](preview.png) + + +## Quick start + +No build step. Open either file directly in a browser. + + +## How the effect works + +Three canvas draw passes, back to front: + +``` +1. Deep layer — drawn at offset (i, i) for i = depth…1 → black +2. Mid layer — drawn at offset (i, i) for i = depth×0.55…1 → red +3. Face layer — drawn at (0, 0) → white +``` + +This simulates physically mounted block letters casting a red then black shadow, the same technique used in hand-painted signs and murals. + +## Embedding in your own page + +Copy `embed.html` or paste the snippet below. The only dependency is the [Bebas Neue](https://fonts.google.com/specimen/Bebas+Neue) Google Font (falls back to Impact). + +```html + + +
+ +
+ + + + +``` + +## Options + +```js +blockLetterFX(canvas, text, { + faceColor: '#f0f0f0', // letter face + midColor: '#cc2200', // red mid-layer + deepColor: '#111111', // black depth + depthPct: 0.09, // extrusion as fraction of font size (0–0.25) + spacing: 2, // letter-spacing in px + padding: 28, // horizontal padding in px +}) +``` + +## License + +MIT diff --git a/block-letter-fx.js b/block-letter-fx.js new file mode 100644 index 0000000..fef9c06 --- /dev/null +++ b/block-letter-fx.js @@ -0,0 +1,78 @@ +(function (root, factory) { + if (typeof module !== 'undefined' && module.exports) module.exports = factory(); + else root.blockLetterFX = factory(); +})(typeof self !== 'undefined' ? self : this, function () { + + var DEFAULT_OPTS = { + faceColor: '#f0f0f0', + midColor: '#cc2200', + deepColor: '#111111', + depthPct: 0.09, + spacing: 2, + padding: 28, + }; + + function draw(canvas, text, opts) { + opts = Object.assign({}, DEFAULT_OPTS, opts || {}); + text = (text || '').trim() || 'BLOCK LETTER FX'; + + var ctx = canvas.getContext('2d'); + var DPR = window.devicePixelRatio || 1; + var LETTER_SPACING = opts.spacing; + var maxW = canvas.parentElement + ? canvas.parentElement.clientWidth - opts.padding * 2 + : 600; + + var fontSize = Math.round(maxW * 0.11); + ctx.font = 'normal ' + fontSize + 'px "Bebas Neue", Impact, sans-serif'; + var textW = ctx.measureText(text).width + LETTER_SPACING * text.length; + while (textW > maxW && fontSize > 8) { + fontSize--; + ctx.font = 'normal ' + fontSize + 'px "Bebas Neue", Impact, sans-serif'; + textW = ctx.measureText(text).width + LETTER_SPACING * text.length; + } + + var depth = Math.round(fontSize * opts.depthPct); + var padY = Math.round(fontSize * 0.2); + var cssW = textW + opts.padding * 2; + var cssH = fontSize + padY * 2 + depth; + + canvas.width = Math.round(cssW * DPR); + canvas.height = Math.round(cssH * DPR); + canvas.style.width = cssW + 'px'; + canvas.style.height = cssH + 'px'; + + ctx.scale(DPR, DPR); + ctx.clearRect(0, 0, cssW, cssH); + ctx.font = 'normal ' + fontSize + 'px "Bebas Neue", Impact, sans-serif'; + ctx.textBaseline = 'top'; + ctx.letterSpacing = LETTER_SPACING + 'px'; + + var x = opts.padding; + var y = padY; + + for (var i = depth; i >= 1; i--) { + ctx.fillStyle = opts.deepColor; + ctx.fillText(text, x + i, y + i); + } + for (var i = Math.round(depth * 0.55); i >= 1; i--) { + ctx.fillStyle = opts.midColor; + ctx.fillText(text, x + i, y + i); + } + ctx.fillStyle = opts.faceColor; + ctx.fillText(text, x, y); + } + + function blockLetterFX(canvas, text, opts) { + function render() { draw(canvas, text, opts); } + if (document.fonts && document.fonts.load) { + document.fonts.load('1em "Bebas Neue"').then(render); + } else { + setTimeout(render, 400); + } + window.addEventListener('resize', render); + return { redraw: render }; + } + + return blockLetterFX; +}); diff --git a/preview.png b/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..e58021947af035d7747b5c2a4d94aa0e22bf7faf GIT binary patch literal 28216 zcmeEt1y@|bvMv&WySuwXaCesg!EFfc?(R-Pf_rcu+-(MTNpSbz65QV8oO91T@7=ZD zFSvWHp6=b<)$(=i>aOaV7<7;`%@GY6jHs7 zl$5%HloW-!tCOXTy#*AMd`wCjywFo?8+ z;lWf)OmWPuKcb_9>+|ENkZRz*G(q9n$C;fIOKbh~s56z?d+DWYeVX(;?|hhgIS~5R z=4N%)#%C1>H7rO{$B(TIN1^ncH3sRTgr0_O#$^gRTv*x^A)DW@JRKJk69yw=HYn|m z57R`tMlWIL@owX-vh4C+gAGdk9f(nwkq>zbJnTJ%t5gpyekye$+qSgr(jCh2DU>Gq zV#h@_Yd2{po2$=yHe5~lJ37c6>VgJMF8Mu_4W3!)f%DuK{-R4FduibUgf0JYk@|YP zOAOISAmKK(thcZz_g)9TO;B9MkLZ!DB1Z4}RK&g~q~dMm$=NqIq1P63i_wyKQ;IN} zFYjb2^+}f+h6v+Aaaj}*k@L(boj^gMaP_^5jQffK$tAj(gcG@DWJ7$qnDpE%=CPU) zuSnzoULnia2aTRX##EMAjjAlBOMnWe99K>l3$-=?|6(cj-X}Euo^cX$FoMx_EE+BM z_VVK*Z9RhwtN+K~yFcx(u>r%$fjS*us?)PrqY<@EV66m$x}$kWH8b;v6Nc_?vTkEO z-N!X_;o8M;Q{%iok3&TmWnx2WCy-43Zo`ZfQ9gJlqs)l_4IPXI6T%)X*$69MF}2S= zLdM>2_0_vvI-PE~q~XiTU}=Ml;jx~(5U~(F)ZqEq?u@rmR_iy6Q&6MBfCrS}t9ZWK zGTst=?~Ejr)}6|VvcuQUO{Bp!Y&FWs+%{54JsiVgp-A~KtoiWq!Gu5<&tAkGz2tY|eOw?{s=mozaK; zD7>K~`}{bNBrwpZq;TYsXQPxUl!npFB+0&z?rI^{AC*B&-+J|LQ^c|2oHd!H}813o-+pt>{Qg;=72MqA%asd^OmnS z`6`lEAO03GkR%W~DIZD^QAUa|ze*j#LQEtn;fgW}>dfi`Wk^~g6@aH+qW`n~#9&He7Cl>G-i^C?} zP#LoXW-eGDR3NM^gs{JJ$gJ)I3+!<`YCoOXT-_M(xNfD6by3xx+!IPD6ui~woXYQI z$e$QCHi)~`ymh;!x?QvV-i7>9(L11%be%je9Dhq^hxx+qlKw*HQth(v-KS8*z7!1A zP0Um*MZ^vS((tix2@u1_gkg$y?9b7^`#<$7nsHyET#8;+CnqNtB*$qKC99WDqScr^`{vQQ(pAjpR+vQRz>328LM7fhbUMRl&)R>;e>xI<5C9Dk`O^ z>UWxcZ;aeR*|`ve)sI+@jW# zKmW|`+TqzXTdz+)SII0~&5cek7yT-^5ht#8C?GA*sqB(^ioYGp_?h9z-NqefMV9TO z13zCk9W$#}(x7>eJQ-b+>lj?4>y>rJxR&PoL4>`_z00)=+gIulCjdR5Ah7LK;pM;` zRWL4Bp|&Wm1fBSh;2qI0$`Oh$sw^sDWL;z>ssRc)0cJwFY`N^7?3yfi@NuwU@L^D8 z&`Sk@P8mC7MEe`rH}n#eIq$iq5{Hs0f=m=%>ZFkkI@+D@KpBzBV@rZ_en z0|#K5of|Q9wG0fK!&!4!B2rgapDY2EZR1!I6?q7Cn^nomO%|JjU$aq7H(78YrMmrO%73~#6rkIHAYQq9)9&*Juiw+o=*#Csc8OD zq-ZUqjEMz_cBCDoJ%R#43fY-Ck=Y43-*W7-ojA+K5%zue1@PnJTE-O9KC|T+<`^~@ zp|`*8S?;B7H7}elkqnZ&W*fP^UqxLLIP*AjMQ@j@ADSX_RfAPawCXybW~XM))d^eB zOch|xX-c{oT^Tgk4(NXhORAi5%~Lh`?iB1)=Tw{5Zc=5EvLO{D_4eV7?rjTdDA)oz zCnUXhvsWdgWwG6!t>dc*$u3Ew@S!^gBfnrP)BVS2nP{3KY8*6Fq%{&>v2hw@oOwJn z(9%{Gm|U8J3Qz7CFD4;Ax+>8h%YrzC{1>)Lj4?qM-(x_$m$J=xmu`cup1oJL;%aB> zU@Q7%_oc<$GvP9&ta3 z{m>ocPk63)WQv0{L-gk=uOP&OpKh`mi;O&sU_P^Pt(wiZ8j>3lV}HsJ{+NsVgU71( zlfD@TKV~n^2;WIhm<2KQgFNMLe;YquT$^OJk#Tde;YT-N*9te${lPsl{U6QJjk~iN zamB}}q7&CsPZor}gkE}H-4d@A&#!w`dmhaBxQxv0Iz-hhh61`6>Od=8mrsKg8#*gh zYz8lmD$kjTl53z)PzX6ppf!^QTQbg?{&92jt=yj^5V_yNQte9fnE_|*y=07vg3L(T z&FT$)VEs$^RcRe+IkB%&j-r=+zax%AXWNL|TrO8reP?~hL_wCp*zdi8z4K<4Ro8A% z!4FSnmrDD}POhT*fUL{rgq3bB#0p0(Kb@AJhd-+-AAmV6FGpy#q!Uf;O|(sUL3pqJ z9c=kEP3w)_X7rv`laurv+nzVipy%Q`iH?Gztz*X-$A{c9ky7FuV&c1_6IO@NEOQm9 zr~T88`VFrjzlKk4M#$C0yHNZTLKn{qyCzO#D58r2(LQAlz>%#?>hIJ8)#}Hy^IN*RJ>P;q$~E^4}gu4qYey zZ7;E7DT&NQoAjdyz@m)So^PL7)E1fG-XXfiZ0elB%hh3ph z=}!abTI5>7KYeuHq8`XuUFjb#12xjWl&`=4{yfPmU33pgO#^VQ{ zp5lJ4K+io~8j?YOupCB(pYG#Mil#^I6*I5Tdt*Bfvdxcvww+frP&_ z|BPXiBcb3SZ&;Avoe%S0wP9KEVgD-);zLoFN&A z&hmP0P*8ZZe*?6F2F(Se{dpTLU3Xm-Wx>x*4r~B(Co>B+Z->9Np`e7l1tCcX3wHp8 zw}ZW-o1nJ{)jw(oLehV;*{LZ0QN`U(gi2RMokGgV)q;YTjf0JYN)(BLf4x``?-W2NM5;`5(CuoJEm@+5f#}qDV8)K6a30 zB(afJ(}KhhCi}-D0QqHrgugK)Fv}Lvvc5oKECp!^EpO-(BY1z@fq5~;S@PIZ#!c*Z zmyD*+G9T5yp2r{{Fuljw{fL81RknCYVb%u|tsxzY#1xHF9Gx#JuJuk5^_?VQ$d@mQ z2nuIiZ6kbE-@zyN&L?=XA6}Bza+okFTfc8i_-tiYyV%? zxW2=v@;qHuZ?IGu9v+5jS$Vm`$Sgu(e)prWa4T7fEhID)W_WZIiFrw$Kr$GE;vE9C zWH5E_Q|0rs|M2AG{<=FVGz_k)u70yUBEGRV03lZY7Pqdh?n`d2@w}!t2>NFN-#Wwn z;RcylAj$3NN+~(RJ+Iw73R};!YoFX3FD)&c=lOaydD*3hzO2fv1)1H?GH7(+3#e7U z^DgH#j|FJa9dsS{fq{X|OK%Du9^AmEQ@;DNj&swgToJSHNL^09DsZ!dULOL-fF8%% zJ@027R+=Mhe^orZbbuM)rh7k@+GxcAWC=-KiHV;zmbDGkmK70@W$mU0hs%mJ>v}b!Kq8dwVG{)K3^S zr*T!!+Lsr6-Um5eF!P8)XhLhNtA@p>Zf%C1^&Bd5tuCLf7l8#fB&9Gx4}18%?bs|) zJxLws-7CEFA;V39FTM;+OkCrVcn6T7FrGF5WQ(Ee9SCj%7U4(v^$0Dl>SM7_+9|rl zzPRRy1`q+KhQvzgpUwA@tFg^8ayp$hy1Ohk3IoWoB6?mQm5xvE-LCg1w))`7!{@6F zm|uSR9ORU)m;m0wdm{1z9}!bo4Jbl%JxTnylw5On*kwR@l|QB+SvjZsI%lq{c8 z8e0S=wJZT#)+6<6p~M`!d&ZKf(J(Ict|Rj?;^v%+2DQc_7GIoj9Cwp;RV^i#7`jq|AagezPv;E2dN>C5fG*dw zoVsnYTKSi13`UZ^-F5li)W_oCZQ&~FI+x%Ig~U4Nb&5czvfYz##TFKbTWud5?X{~}T-3lkGX+5$Kw^4=*vpiBrr=X+waJX^M_ji6OZO_$+BS!vrt zC*aLT->q+VUoK*MkkX|~@W!35(Y0lID$NT-@>+F?Dlil_otSmndYJ)Jju9jJm>Mql z_;*r;WQhfdZU!@}A6OCvcfUOLC6Wpi)gv9;%2YsMeO(W@Gdf&tYmiocE8M*5>UNzeC36Gvt9jt*_Gse2W98SALj5;6) zGrax0H=YD|ZDjm1vRv=~tywu0_zb+aOXmvwaQyT`m)v@tcXYH&Q@E!q)CgZXB=i$o z_KhqT!^(OL*H%}RVZDcBRuA?RguBCHu<4gaD-4daD2|nLXIqv=#py9^KOT%{z_t=m zt49?bm6zs*ioHG0omYh})!0QW5qFSA-u|``i2PMj8GYcE3ZzjbL?o>23Av<)M)Mw> zq8UjJX@K{Xc)mslqw5*pKgM5jQRsm*zPJ-?=bk|I3KZ%?w`*1ejteG=E`MasEz z8NiOAYGC$DKHq^{mMydMk|t!^aYzZnPHkF}0lwOQFDMy617r-o$5Dv*+Ft*pq>INX z*;Gw2sxf!9lOzVh)iDGhBR5FP>-&10zN?GEn)tyu=EbBKHij7Y@yU#-l{}>2XmPTB z&+Ifk6)P>_VaFU^<#pEvCko^+P2zPZJR$L`mA_zt${`tToy27xQ@0`f>0y63Nqwb_;g0S}VI zn0Rc4)_yiRS83!DqiLFecTXytu{eg%n9<;oCOVbOcgYce<%6d`p&kaGQNc~n1-1*9 zUD?2@saw!;!%XC7-RgMUOaDo1JhXQ0xovjB%?ARTzi&~ zd}x|fXAKb#fw5jaTCBSz(tx+>I=rNAEV2m3%7fr15^j~TPM>T0%5MUIEq1Qi#zjgN zVKtGzQ;ImSD6v5dZ@qk;sHut9oUS$^mj5tK1Xy;S23~Mkui&4NAM$)BU5N>MDv(-$ ze|cORMazU4fS$XSV451UQBmT@z%%BpE|I~r66N3f&mmUD3)hO*K*abD`vRtg`iwc# zdz`ke?+khW5DqL2ns==_XWMb?%_&B=CU0Tj!d&%Px{g?w*+${F=j)3(^Ss&OAcFo6i*Ca4w5WO@!V`)eI9V*B~{k z$}$g`eua6A(DcZSG-{UL#=4mXuOcBBsb7aOWWSH{o+ZBskN< zIu>Iu{I>A9VLdd2d?MnreY4(F1U6u%nceql`4ZV;DDui7AP5H~{hHOACe3gJE%W5N zQI@Qb{HfOmEJJ$@>8j)953j;e*Z?14PNYudxc)J^xCT#WLB=)$v$dH~r%%sa%d{+W z8nLEs5;3&2oMQcY+Ok32F&|e=7vL_tD4FpMj6W25S)~*CN&9#GQ|^K;WT4;WM{rd) zeOx**WE=uGZFt)L5k0vxw%)l*RO)-Z-$B1=DY87gPj`x8em`wb z1+rK$E8rb`KVKk?1Z#Ur>nZ|>J$|CP)X0lZz<9!Vj`YU5^NmkMYXydHTY7YaTLh%S ziwfX=WD~<#u_3&SiX-lCBu%K!wD@{BY%m3`I1dW`z4YlNv#x1)o`YWZqqO(dR*Z(A5MZAIm6{Ng50#OD&m;1dIVvDA(1weHzd| z`y@1PN;(C+1x6POM76go>C*Y- zE8g{sae@6pQ@DjfCNZ9+EYo1>N%Dv(Kt8+}M^7|gJUJwMZ^0xer54 zsQtbGT}ppd)%%ivyvfg_33UTI43$iDl$Dwr@i<4cX`1a;Av~;(PP?k6UexipVdo7weY3mrS#bR&(GwX zA_fpkH&+_=UrPQZ7_jfW{lQP?J>=@zty;t}Q0-oX53k?8I=yCndFgUmX`ZN4K&=GP zOk^V1Y)nKHC_w!l7|cvnZ$6d{hkJ5AO`ogq??a;pX~c5SvyeCoA4u-!%Ta?s*L~=T z310c(GFjxJ@QS*PKHFR7To(JkJAJGuyf)A-ib} z&~Q?*2um5KWm7-|ZFWMYh+p$}z0Z!c@uho2c(3vN6q9qMY6r&iI@;)0Xy;MS{jeB% z#Y8`?S8*zgwKoKfY~ufr<2Rghk-Uyy_Tn`6tDh8sz5*{oT~yeDn*C5Mh6XK^4H^)V z>5_tf=|uoH;~&noJ*WGx(ROX6b-i;#Z1w+EuittQ2*JS1MRywe2l5wfT)*IqyVcW> zH-=U^y}oq;E2q8nnpoCl!z0qZE+D?1{PeiL*qVk|Sc2kVBnc|Ee7YiWdb+L|7-^*eJ=ExxW9py_dlSGaK5;(ZZ4`C z**(wKe~DZj`_rD6fi(G<$?^FTO^r>@%p#K_xEHcuXWhE|7n1Qz(0Ned47|qjw+k@3l7#y1XcR1%?9)+j`sR-(KTt~85G-*>%zFFXDhmI5RsO+L54=x0 z$IcKfsDO@zAKAzHMAL$!O23x!r~NV(TWb@kv^EbtnVDn_sZ0-NjH7%oQDm6Kl7!}d zMKB8o7 z2st(mq26(!txSi{sP$%?W{pYLdPp(1`hpCj`PJTpqQAPlolQFOF&J|%B_Ej>{TgFs z9un6B{aC1pJO9?^m81M_A?CBKRyR$&-^C?rP|dI%M9($8kUhW!wT|5+f|+7Io|+_V zw(Hq>yU*D@e}Uh!esGat34Z?)0S+>9u_` zQHlC?EvEisYdw~For#ICLGjqhJ3oBjn-7ww*uIeA<zp0zy%+8vp(U$8DF7~nyIWuC8Eh-)_oHXzpik}3ZCxnJQMAYty~J% z&%_#gjJJ4__N8_yt*v=i*C$NvQ9>&zap!j1pm$2((6KXEkwWIW&!MkQeqnW?n=#M-S+&yFBu|MBJ%y_H*D2%P&d3@nza@I8*7n z&xQ{a8R1`FALJs$!RddZirq??HP}gN^#S!E9<)uP~=-W-{h2q|kzR|Td z9^I}u={%o2SE7VljHR+Vzdjro;B9qZz+Y7!?2UVqn>9jawd#S*PZErYUnO#d|)M6~vFfYzev) zZ#M46U%mwG=3fbioOZ-mJUKS*#v;Ta>11R9r-9Bf@s^S?z;}5-6hf|dxqfE?uZ+sI z{*mIujA!%2&X2xX2sBCxsmJ4~#7b(d+RSz-)7xxnEo6pgjVFH&CAy|0h zN~@buN2^T`iA0_UoNL|1 zi&J@>1pbrVe0{j9&RteM@Q*l{@TB9pzZ;qUtJ$`*tx0ypj;g1x{BvOys>m z`XqT;7Eb4fTVG6P}oSgeTdh%uRxCWgbYf>sf zIlDQZ9rv2^_$QRYv=^8(9($Vizt`#GPtXMn_?Q5z^4N)#7f+Xndjv9I-A3{cqS{>W*;muUf z0EA+Jo!K^Gt1KIJh*1h%fu6H)m2N+9KrRbLUeFc#)rRW@0l=VXSlbWX~ayc`M7Ix%&L*x+d7H=)%}B_b@# zApxxmaHU7yJC(%Xla%8JdY&#ap98qz$6|A3nzJ}Uva(BW z@1p9P_FavN`A(OE^5+m$5@tp+!MBTNTpBfP)fK+a{`OKEW)2L^+=t!w+sM{)vO(pY zSOtGJX3&jw?vA%!*L1!q298kmxz-!uZ?L)rWtNxKE2VXO_W#J1@ux2yTbl^ac$#Yd zONS!*Z>gUBi7ap|F0(iA_a`OYdy2&mUsX5TWOb)IH(}B5hr`flDi&@N?bmo3&IZ=b zOGPe>W1XBs^xtQ<0bSunhA3)+{CJlA#v|X($0NlAPkZGO%&%ojLK;T}U5@03b#D@| z9FQ9nZ_rlQ`$$Kb?exEw&KNf(P>DrF4DE0)ZrRh?zrDU3v0$bdoL3Myct1sONw9MX zJ;oF#h`rCZ=(3#1Oo=JHb2img8(wQrK?GqZ!IQI=XUURk^Ea}q{&MOdH82aoH&(`p z>V$$AO(Qrz4<1SwPCA_j-yX@TaF6E@eMrIXjf|QLkBCzr9*!N_p(e5>>oyU4Lmabl z!u+Fl(NrlMlwoH<$FdCFh(f0Al3j(Y`pd<>77GijN?Hfh=40qTe1X%~3#Pq^yu&;^ z|8A&1fx1sxM$BtZ@aKGE<3rYXg54&l`7UFyulHrjBcd}rdFP#|noHl+9PMWWLM1>w zUBV1T|4fY3=r9!<@=$QOW~pQvo6%_hjNkNGgwJ=@-);>ft}Z|3M?8(x-UmHL1LgB0 z!eY&Mv(7CuAzyxXNF6_dn+7jhhj{X}( z&4!5Wz5o1T6@!C)f22+VMsEUkxXg!RX0%y#mR0M-4QdP>LWD7h&AJ$ceiPdIa$J$b zYh`i&H0A_KeumYc8O5=6>pf)0C1Xw4J6o!V6d9lAbhDC1VQLTHOpY64_4BCz4Bi;F z$_t>ovHc1(g`xfnumYk5=E#Ud#XZwW=>_^R4i-KY3oWc{zdXr__I&%Md7F8R)zyI} zg~ir~CZb!R!;tJB$+zF^^sv$*m7)z0f~EA$(G8&jTYA_ z-jIDjq$=>*6ESW*JPD%PeL3wIXZU4(5!g54xrQYkhaj!X0=3=ePxl=m&WQq_1vFbI zhn~(MF*zDhmN@7%V1;n+)u5!?t>V_FlX2BR{T#rhLyr(QZ`{_}hps}TmMg3$iv#9Q z2?6HEl1?BRw1Ki&7IEhk6PnWlo@$kPMD7}ubjiRfWyNDc6M`$T_9os#{bROwN9IHG z%?<|l&(~AM(lc0ikdwCA+0T3hMTR(e?J)ef-PAtAImz${gg9f188(l(Ig%w>7O9Kx zcN(W3-d+T5R(2kKr;OA<^Nz_npdT%08{U<_%zC+zkwvdwnknU1GRO1fWrB(&;dXM#UxPSH zEEe8T7Fk;UL=Pqj=PR)A8$LoIQBG$8Im>;5VSyQG5`x;bK z19=s0j3<;oOscZ$p~vR>m&pH^ex-|?vD7Cl{YeHT6)Hh4}%{$jViUPp;Tl{2(}^wKMpEcBzC>U+H%6riS>0W zY5(@Z3}QE1fA0RVjIZ@3w3U6dsGbYC1v1bF*LPSkUzl5!%ZMwyIS^G8t-}4#Hg)Se720Rkvmt^5k)D_d={rb%*-nqcm)7HDYb=f5 zBJzSK)^M7uyrh2D8~@pP*b1 z+kT<$6r~>^M8j=~wo6)X19nA^)ApueiNj}~_dOOhz{F!7oZ$9wZNt?jC{=AgNWdKZ zT@>GxuBT})ZN3IktKrnNOR&0x3_^FZ<}MsOD@VpZO?84=gol{U-|E8hN|4~i1eVkl zG4YzK!1laycFWFxKJuM-q@W1@walL`H_fsCkm(lwXhFde4JP$k?Ta(_73p%oCLx+p ziwTn@*5)ik{jt;YOYU_mw8mo>{yq%7jj|0$Bg)$-?>}KE)5valb&tIdVeGoka_PJi zE#v*lXfsuugT%e^R2yZCW@M9LbPZQMzf zeo#%}5m`e6t`{45-(0s^!HiKJzE8KOB};8;wBTG(uRagAd8wxMH?D-^iLrZJkI;FB74diZuf;53g-#&jTtZUKqMJ8&>Mx zSQ_}3&J)@ecd+cue)Fb`$A|Z}@X_^|sm>HEGVzVlzsibJKl)K;PUD`Y?8Fy+_301& z90fInRqqOcWRuQksW>7U-VB@XLUgfDwLFM=De4QEUdpdV48Y~q@VU8QGrH(Klrwv3 ziWE%ubszDVG&N{DEDQm1f;DltSR26zbA#CH$%F}Vef9~-IRw2*yG@{m#K@3u-gl$D z`Iq&m#@8D!Mwyy~s{RbrMP1CHVv&z8QO=-}(M3z}d$0P|t;!lK51hv4p=vFHXiG?6 zeWk)>B7U4qw8`sUz=u}I>**LC0{jG*dy~T$IePvmW7Q~Hf8__}248D9FWZPZqG`lss+GcmEH&+Z!F%gwbbt>K3Q|HElYFwgB$Pi+*kehc6D zH+Zf0pwP^(sKmUzkZa)aI13+@w@U;5+pS}ZRNNTu24UD58%8s_rnsebM(R5$&v1yK z+leL;>-taxV4ML~8FkF7D=}=BcttPo*rO}uIw#@|t&S{N(Wezh@3}nY{)MPZaE}3y z@kUwXe-raaR2>Ni-=%tPr(uG(IT26Dy*Vj#{$XP8FbYh0Jv5+RYGh@7e-u^X!pY%s z#NfHxyPzm6JnUkb>4aG43G-=uTmdwjF9CbM(DMqnAcreHr2pvW)%DPJ#CT_jM#Vyc zcno1i*!W2qP^h}DL*yK2Z$ucb!>=hq^b)dPReyvH$4H7+Jq!{t2K* zBX0X?alJ@4$CqMS6WDbDLWU+5rH(pIIKCw`!>M}I!2?lohn3*9|9Q_krSkSDq?>It zJ9B8G>rM25G!8GroRnOccz_-RGR0_3!};Fe4T5kW&d!KO52z4A#GT6FdzE0Qn317ovftWobD`38@+8@3V0wbd&Lw z!+ZlwaN>0Kjg^?DH+$b+4#YU@=Bv0a`=h`+c_EduYWQ95=S@C#tY4jlK@Xeq*>FQ> zX2}*&jRbskH7gM7d9=hqbhV(4DuMx=jL~J%c zw>uzTP;XXVsc#(of{R*Wn`T&>GjY+C>yeQHSds{@%NHQi@7VodX|p2Z$%@ zQb@~k@AuWn*pfDFu193mIq5VkLsP9bDLNdla%bWP6Tm0xw(nJ{1i@(9v z1g#F$F$Ch-p-;9+w_Vagaw49KZ>+}DA)WM@O-Wbv1&A@LGp=dE!zY4to04fGqh^oX zs04C#b=~Zb!M4qGZbP&JQN>;JZTM4L1k(~&CRkYD^mxh4!z~Fq%Aiai4k)pA(cq0; zy!OU%ej&!MjC?afKz>b}X-&$I+Tp7+%B=Y4XxNQRRjI9$cjMUECID>kQ{p*Pm}j?2 zC4#|fBDW2n%`(NndqvYz85=u6$pIHz9h&O*+ybqaZ_K^kDXX#*jscAM6Qw}q9`NX7 z-!nhVmsB2FQL(%?5!VKreOYbxlEKEq@&D^P0k80QYZI z^qd4son!C>A;yvVIB)1ebej_zR0xW6EUNgz1mOdT@wj^U*;Fi+kp_+FCy8x@!UCnA z&Ra54fIaV+0b3OSo0%VQ{ttU;6|25{qg>ZR{w0@LlTUCE%eo1B#Z;1tr^ET8bO0GR zkz`TRcQ<&c---hfd7;s}D?AtGZ%BoOl{=IGW$Or@ltIV^7=w>>)FV=k)zzHe7z)5+CJ7P zdH*#ANB~uMDav^sAphbUIfyUbF$6_@VNp;Y*5;a_=uKh~zE@Y1(+lQ(x|U+5O@Vj@}ERke6BuS&Y^+-ACCB(zcuGNa(GCT@)4}UP*w%X~?B| zKWs62Cr06*jj#*ZPsc544%^^;OQ#;sBWO^=;#XL)R5AfmOGcJ-h{_u^mgd3}T!jn= z_`Ojmbh6PAMJk60JrGz^@|9JNV;d8|DSl%}$AX{$Yk9f-gv(43JE8h?jC4KO8*t|p zxvOdON{6cNAB3QET^ks6eMDf;w*0iw(VL=g7KVS9(b*grMcF3QW{sD<)^VB*IRkNu zSvLP(X>xKp?x@KX!ZyzQFrcj;goO#HlV!FTv6p}SL%J57#DxrS?2}BlW>oj&D9x&i zuzH<=1)l#_z0hpN-#XSlVZ}XfgmJ1$V z>g{dR7pV#gipTMP7N8e+FP+erQ3%BxN<=dey@7V83~M{d5hE`}&DiNa$wi zZE`~Njd7|UVhA5c#$9c4TqEj!xiz3L*lhoGhbTz5g=ZQ|zIZr{D zZ16nQx1KFR#3y=KnU#7ny_@r5#;qQ4>-%%Uzb8sb30xt4KJO zD6}<(&Gi0Lg;q#^zcg*G?^)ZEV>*WmRacYy4L`}nH0&CMk4a>)|5ru-6^E8Sh|d>l z++BM%@TPm-`LgIde|{kCcgY%Gh1hPb$zGgE+Ic8+P!Vi5K5NVQ+Ci`8ehBi$gEX@s zMV0dy`4`^C7OY#9W^BA&xSmqqo1?x+RO0XMvbh0;@ZzuS<6+~B;FLofITB#AJS*}FZ4&J3{Cv$L=A_^g32h$k)W#UT)Va<^ zWAcFOvhE-D)QF!W9G)k-hY;OC)&9QEf*zUjbb=n{QLFi<$yE*qkCHR#9lJlfDPV))Wwld3ghr%q^yxt$9iyc5Do%C0?& z`z7#)TBcl^-0H<0<2F@H!^amrrS5Prd6Gu5@~C@nyXJC$B#lM9g+cVL8)Gk5F4#ml zxaxsB9U~Zj*3h|1+2LsszqF_b;pO)JYLLXecOUE2i$L85fp090J?eT&Y=h&VfRLKf z>bH(!=Dk6C?_Ob?}Dk)$zE{%RyR zUz&Fk)WsYgd-1UP6+k}{QW*%RCrN#+WvE#0abR;#;iphZNM>Pu*4PeT7O8=Zi~>c^ zo|g5Jx|!&K=tOICMlFwp$d;fPy;n5%o)#i^gJLXm(YZ;v+7KdE_S(j9xXUulQnadv zOZc)+wW8=r(*dL8J(4Y@dH9ONic|`^DC*a~TlZ?nlx{}|7Z{RLLV@B4J4?`C= zYT?^^QyX9KT$l2GA^~g`FERO@Hsy^duijp9Z&8Dm@$>G3bR<>~ubbwQCvB9XQq>PK zSD1JJ63&zMix~4?GE)09n;Pr55Z7L=k-VKZnd!>tDx{0=BHJ2nzJIAQTTlwG>h%%ZT0Oz5!DMo zc5=9GJaT7Vfs8bA0xj4@_{ACvPlf|ptr1b_O__!zu%3p(csyAi^aHkwh9#s|Ilzx# zb^fKUSG-TCb`DzPtP8%GbP{VE5X8kCUOX7Y7OKsyeT4KeGXuIKuYC-Eqip5dbmxZp zL}P2Vw{Vr=%oXG)=?B7^XvP@foov>t zZTQZxt0SdXUNQdp8J#}+V(GHiA_Etqh5u>b4{N+x*FO0SrZ@k6xvNq>$~6}(e;a9F zCg9!!d&~dq@HOYgqCpU7SdVL=f*;B|aAmc|;!)O5^Mu)V%9h#GZZ89<*aK~X#$^&Ri?0-1omaqEJ7Qvc=E z*7^Mwacu}|M2M1xwV*L)bP<=8wCJV>JsL8)j(l4gbf#c0dp{EOU{`K%@H z@WH`dwyCKM4NH>PD}U$fT`uZu>_yHbms`QlGBn z3y~#%y(WpmUWBhgp)aBI=V2{x>-5R`3<)$Wk{paNXhCB5f@owFEG_C((eSvm^JNM& zDFPxO$-S)+Y}BMbkngf7DCyUgxFA?^!-MAU+*{QGXAe&EE(CXLjHSut+H#$JHkSg( z)Kz%y3!PInwQ8(c5sAeDh20OQCB7PsX=XPQYdm_PMS}udH4oUsAx{2q;dX20@q`FI zJujPaW(mjzFf|svl2~|RvEPB}%FIW~aWpJ{P+fFBg0_Wo;p7ffw_M>ja-UY6qm}*` z+#w}?l44pe@%zN}>uw!PT5#-K|6BN7B^Dv~P%kxhPw)@^o5GS*5`nx=pxMVblYD*b zfHCdXjP;Z>WQPOCU}@3;q3gLjO24hQU6i;%JCRCX+`A92GkUhl2*ZOmNv#|x2e;cbp{N`F;GU1vnJQKe$G(58@g`ZnZ&jr)|$dwjl z#JLaPm2W|{u9#gms|EBS-F4#F&>b7y=T9f&*d|e-O-Tv6(=i88#a{csei}1*zOK9b z3dEvgqGpz3SqZf!w%WtJ@gt$_&Pdt*X_Tqg&A%UfjttXN{8KTn%y5Q^MJbi#ucBou z3XfV8=KqJR7X91>+)*e8E=&>~eQ)=;blX}zj7ptUHq!Y0VlD@G@zVa-IN1H%qy(Fa zrwB5OPb*&3Wx)9n9?_%>_@iDeN;j&9yhF~sFZS2W_i+2tB5}tVUZzLGdJp@w6XMBX z?S%MU+*B@ZPj*y~mIc4_PT*(P(R(A8Sy^G&2;v10?wFU9VT$Ru>2#NKrL};p?|Ue5 zyz!`&biEbDaRqcAGphv~4SB9^(f}Sd)=z-NN3)q8;7!yHz7baB@kYz~hIUIuNq})k z2|A_}R%p+`cW9$cYga6k#e>@nEK9lBB}K_knTuS~FUi2N-H+(p#sa^TtbW$k`RKx7 zf=@Z@SRl~BpC?%wU^wh_#>?JW6c3nFxD%NNJrM?{<%wM$^iSN@lK#0L_i3=0S)%#a z=H2-~Yw6qL(5#C2W)k$W*Fa$No%fsW#yFiee>s@2DA4?Uxz$uIhwH99QI#JnRVBZM z$t^bVx-!4mQ(Q#$EyQ`iWC1QV?n`(CEKT+b1k7Y$dQV;2c{|#p>OIad5yo}Da%^bO zJoqS$EDBTaQ=c6tyJkFXErb~x*_oVQ+>iOW{J6{muIrM3hqTM|G+&W0Ruj8r5f#;09`TE>I7B=#@o>O$`t8Rp zKH5K@6MA~PF<+qMIEP4Uk#?cTc=a!%Dn2m6>0U@{D)3-cQcVFbM$6aTAlpimvU967 zF+HyX;se4e`1j5CkSN{F>+d*WaRdzvtB*pv)p{tjgyns>E|jpdInMp0&!@%jq_o(& zRitBq(Zk;a{~$6f*Gu?l2rA7&u4Hs&Z$&c&bR5x6{7-rm>xW|6tbBQ~2V`Ps$P{#+ zt>rmORpk2H97FXyBfIK?M{3_xq&if{j?y{ig~D(u!GIZ{$Xhja{$ zG}7HYAc8|9Al;=fbR#VxDH1Y-0su`RfkwopM-ZkEgd0osZRp03OsFOx05@YC}vPV0R9=OGGH$m~sadU`2* z&(D|3YG1a`b2EB~3lvL_uL_+pA}W;zKT#}$Z;U)9zfB?+jR{SZw%VYw5B_;Io-tvg zN^zrh(#GW@FYG+mj_4Y?O$Es!P2S9q} zM`2b!Z%I$G#@Hu8Hnr-cJBxG{3Rlt+paH8yDXdq`Z(icr?BxJ$JCzn~dH7FG=BBE# z$tp<@zbVNP^*WAiiCWWTSOc0Uao0#SD0G0-X{^Gy8jHq;&*L)_tlch~-=e((7_{v9IO-~cLs11ql4NACrnnh`W9AwkR2>(#p1I-I9j&W(Jxp-=gnQk z41ow--?PS3wU0%$p;>(nLt+#p@<^vd zrw7(XpG%vu4c{mH)yq~`V)>{=3&XUrs-!hJ%2vslZW5>yICm=vE5h3_5o0? z{u$0pU8@yQzbXKAoyULKD_hmxQE+e8B1czlCb?*;{^e|a5|>`k7SHp5#{Mo=TYZGv zs$;gp0jLJo{+E|hSM7YhQRjEpO(6L>e9rsP$}Znt2{58EeGmq%gm3ipn-)dfhnl7W8(3S?i? z)_8_Wr>HdP;Hb|X3d^rjif@G{jeROy=hkWd_WetjlR!YK$=fv5f7-17-jGN~J>|9f z@nwpuw88a9?dx<^$q$=Y#+J{QPS9TDjs*cxjLEOEbM_8KE$PdLM2v?JdW*57!I1*q-Pg;u_cQvMY@ipvE}Cl#_1#E)k--ch1)VyUIn!i#i#17cThmJc zb@T72yFJXzRd`rKO5A?R-wiUaqz&q9tj@t{;WjJC@X>O^<@ZUqr^~OMPdsuTheq!E z$d(Rhi~hXYq;9-D89-nC_BJ6{f+XQS5z5c<)*~6Wn?^T7?S!H$6j7Nige4q!$5F{! z^+fsk1w+BSH);=BO4hSx&Emp5(N77c^<;sKp>;Df0=eJO0B;*bF;1NL*)e;s$w^7I zM=<9Q`mr_Wv6h1}GF%SIlT-6}_x5wiSJ4AxV42?MJlos*<7y7?Q{WnK6_KNg5j)vt z$H5F17@EDNT|mY_pv@3N9Yp#=7_!p)JFpE_Kh6+Z#`zRAcXc$i%-M@#S&&IbCP;4@ z<1yAi6cy-R0LV^~u{|Ihu+}E9O)dG5zdNmoXAP_=PF3;V@~!$tU$X zBlU=uSCfADIVo~{{akf)AAHJT&fVmF-bzaoNqAid_@SJNG@kORtAbW9|6ZPc%)-&; zGaRZ75iVt7@Pq9u1C4{0Q>{#au3IyXPN6T@Vush9ZuBjr0WGkM(wPz=7=3^K@oL4) zGCimJ{)tdn@pq-%VL=G#R<4B46MVWZOI3=rv3~Vf>z9a%_?Lck+29bz%jT&!Ti$&( z*f3Q!wI_@QXO#OtS7&`yrCfAk{>nna)BNwkIBx4YQxLZ%P^?*N>Vj#F*jI4OIm{Pz zhU6gH!E!v)9pJgig~MkRp$LyIqMpOHho5pJ>8c-CWdSADYg8xf=4{8xzDgcWF*<(q z4siwx3TkLu|1jZHw;Dvtn~*g3S7F_fI{)Ts|~@YJN_r!iT?urM}K za;m&LW$RlM(6hxgJ&Vox^(2>|ocBLRy zl0}KQ`O=)ao`PW4xs<%RnSjYAHunvW_gV`YjYPJ_VPf5I2s%NpGoA5cX>T0Ykvk$2*VBvctj0 zE{LYJ{WM)M7TnH~VOFRgO11Bmo`TLi$BCv-D6yRJ;XWb!?wAvVJc7$X6GSClM|P!t zCKGZQPU!z~0N@`x@x5c;dm)wJQuN9`-mnqeZy68KbV3mM%%5$bBW-DqWz=k6uzjyF|qxUbXGJ5BI$#1MD6W1eQ9Gv95rrW zb?#ajzCeb(Xkhb_I6{3|L8UuS_SMQ{9`lUJJ{mTEd)f1elbz4`$n)PfgqoA@f0GYB z%mAzQu-Bc=)0-C;Hw|G{x6Es=FpOQZnh+?3pD=W<(q}0G6I+WDTn5&@QNPHEbzBhT z$uy6C3WDvyl40072&nvZ{rhdxsHrw%=>6c%A-j!cN1b+*A@a$X`A`;kzr}5>I?4)!TY9LK&YE1hZCQ2Hc1@98cy7-Z-|kPPbetNJHYpgJ!BO?^n@&aUux=Jl zcsaV?_n`SszihH<1Fgb0uxF(G8MqmjWz_LHSrCmVLhQgnns3BP6JwNM|HKnO$^r1p z6C95;csN?vxsfms_)DsP>~ex1Yd+k&Rm&ZW#HNW>Wu*g+luu^WdAT^>{U!Xem08*E zg&d^u%A%AYE;OJhWHUgz4|j&kjUZ#vE{rVL=j*jVoDMz`X41P>8|EYWjT?k2)PG(^ z-?Pqva8C>*p~MXV4KsSry^BG((~J;+xg{6Caa*rYb#*#0P<)Yx$nlysLAb3cv6zp9 zZGQ6cY%`6X&UR?84Zb@!W{FR>dw`2Dpgtd_GT-%f-;ivu$<}3ZfJ76SA)GME=Wj?o z_on0JRc_LsL*8>hk)f!|n<{oSl713yHaqB~ES`7PMB6uRgUPLOcK5$CH616M;jSSS z307H%3RIOEe`3;I4G+FL%$LFjXyQ%t^v^4#rG9okm8W)ASwsNUE&J}l4Dr|;BoZ*| zBxF=W7XEs(3&alW!hR*_i>q}KnUcl9nn(el#Zj<-*|*7%m4-+G1u)a{b+$u+!9^j% zIaW!NdrB;Q((6f|#|EEi@2fp~5G7zpJZ@$4+T7Z^1dxFI3N#LAac30T=sY17G0*3p_J_ zb{-rBj%T3Q@?L1%Y9; zic93&`vB&G(FY#AAMND~(Hg9?7Ltg33Vzc~n!$B<{@dckhCa3_OJ)OccXgY!1eirX zDo+PA&`nJjmdvCa^Sht>^jDm!^C7%PI_Irv1R1gx7|tLgXSbQd7NvPjSFY)Al-1Ls z`B6Ar`u#mjUL&>W zvlOKEN-1xBOI%J>sXWE{OcwiAf7Li!A$3@Lf{dk*ID~G+(J`dVVN)Sg|m^wfLPTr7Ivn2t1 z%tmQQJuosjo3vV?8TYi;{qse?lz*^G5E~wq3onc)w+ne~Qpo=w7S|x$a=OyQb+2l7 zQmpj1$8BCXN2dz1dP9krkI;L%u|df?CYR;sKBc56Q|Oh5^B-n~z(A%u+UWP#)jyQ7 zSRm}=EEC(m-BS>c>K!JqY)A6A1F5`rlF<>(BeZC)wMIxjIpXw3zM(FS?f5`kBh;-Y zyICf;;x1-26QNq{-YJve{x`4A51aziPyW@!qImQ6G6+pY3+??0$MT=wUv zU-a-mmgolvEQ4;3dt4_pMY5)2LABta&h_0K{rp*I*2(2 z89=d5oqj5$Ahur{&f=)Ab;rZ*uFu8oF|gLy<-2Dx7(x~jWyoF|2)P;D0uwLrG@M); zT-I@u9wPle8H{s?#Pu2o{=*R43^M*d9^wcM1%j5oOujziMv!;xFLGl zHxJE%$y)lN7JLMo&RZ7+L})TaCmT>v2|_D3a*jIoOctHTSj2oI*w&M~hbOvREy~Ey zJ>Tk|rVII@EB*)8Cq^nEcWyK8tIRC{Gx<-d`T~!;$dNI1Tq4-sFD{neaYhj7r4J?v zs6ufh6~u;3ggKtK`;f8-PyuuO+c z48FP^@vyVMOMIb+KX~N6%n;SP2o08|u^FqnHFSa$j<0ey4hdhQCytnheSjzVD%3b-4nzm}p? z1@=^29}m7=pU1Np+Uvf^LL3UY3)&98+uwI8VkTn+cCB1v-B}!5p0+==HnG}$qwks7 z8!OjI0lh}vM9%P+<~THhtfAF|n%zS*71DAg>%D8FN?OP^NeQm!38f7g%6=aH=0%My zi01Mr?OnY^Lko4c_V*0Le8|Jy(f!RK_N0|}*x??=PNtb*Wn1-X{X)`sn}-Y;(}l#d zz5?%vvK%}LzDL)nL;9rQqX_o#5X55m86X~o1P=b40T8e58DdZ9CIxuyR4KAeHY(*8nm;FZ*acG;g_^X_(w^cByn z)=z&j5)geT4MSCIjJe2#Vd2BE-+Y0H`Wnle&8Xj|Uaie zySt#y2{>r-SHy;&vf{dB^%Sa$BU3r_ACEgM9OY&ur|~gke-v>^$UaX){}7psk6OZr zl7f5IQ)(#33KW30mqH$1+1GP?LOgYu*@&*k`493bY7xQ@sKQf6&TQfT9(n24apF5s zKmm3}3S3TKB)KsX>McxTY3UeAvcz1*0zNIa8`Uf<8Q+TfSq({zZ2`mwFC)!L!#zu$k$~YiaKo!t~C@y zhY8duv^B0CraZV09!>kGnI49jhYBllZ|zlS6HjLa#V$0`=ZHT};LWGjfhdfNb zm`^EC#_;4ZR*0g+L&T)9|E~r%NyM1}-wqzJXapKymUsUgMDD$v`@hjh;$<@=mCxm3 zS=!W;_9wE4ZenVg@k9t#-}^HX44vz#GiC;Nf!M4q0zwpUa7{0fLntN38%1kj^$*`J zJw$K&w%=K|yvK+uE;4G2-1rv`ROq8W-mO`L%}>QXj#<>uuu6n!SXnU#KZ=_^?x#$D zgoE$mTj3#e?CBo0O||({7cY?vmX-B4yy&1YbLgL*=Z2#$^e2=Va_@lvZ~4CqM5bk> z&$+a{+HUr7TCsCopCGh1UTr?PS(#C}1+R&ibUL@9h>y~*GRkYaq0oiLZTPp<4#KYUuC zA;3)nc&eRL?@_jZ)~*+N<4G7Q8c~!175&!9R6ZEa{4^svp?qQ)`p+tb_xCd|R)Ex5 zA%Ab_2XovoVswc%*P-16H>Z`)gVG91ZqY@Wz3(C|wVexlR?Izwls41x_g7j76d|MP zvfdt)(fB~TVBAB4sQLBkw}0|O|Ff3t z4ik}#9n^l7%gf?x!dFTI#z^L` z!uW`!g-m8{6MBijm1{R8>MNnKJaW~o2~JVkyFr4Yb%~g15;;zdOI=QlJs1%FUp@_a zG!#ak&09aUtYD?4f#t_Lem@PvF9FhL!8s?4h1Y!%HNj#X$ijlZ%C)tqH0889j~RnG z?H^=ZE-yL)nAn4^iA#Lv@oDLz!%Pv;w)PqZ%l=BpFt1EH4LoV z|7{*nHC(NLujPN+{muo?Weiupb_vYfKKI>OAD8clHd~C!9UOF^-o8h1>(d^yp&7;* zRye9=r#G_Ko|ZvP+LIp}0kYJDg7aNFLXqV^J;p*Y65QS~L&SMM36Ox{*2^9v$U1ba z-A^Q@N6BLP%QHEB*;y9PJo;`jH(qB(y|OFM>XUmdDhPq%XA29P8o?c&G(2EBRG-UL zuj;)2`9t119X_UpK(`Qoa1=dEnHFN-=Nbn8_50E+Al?Oz0vnq%gN-lw`4&x|Sg*1Igd`r?a9$Yfuw52m^djA#@PNjAwKLzkokGn(JB?9)s2X2j(;tqgQ3JbV-f zeQo}$Rc9H#HdYAj|AZ}MoLWrUyfP%;uGp20fDF1J=jVO%W$7!@EyD7<7oP$Iz)|Hs z94OP9+u`xuX|0hH9`Sm8hPk%w)Q!D9pMG8;^uZy1)KbpdKvA$L{Ff^THxFVlV*Q=L zv5(yKat-yk*xx>pT0G^;tL7>=rh#5?-Ev3rXsMNmSz-|xH_fKL4z~B0*>zZWVCv4h zCG9V2pokqxl`^f1#L8?bT&i!NMW?8%N>MYc^ouvzM@bjO8;i_a)x~^U)vu|NZNdR2 zrU3Nr#*iRH9P1?bRYC4M_*-UXH;6JZKmV&I%;keSMz5dAB_cjSRLq93XdnhQnFfGN z@AB#IBea`_@0ep-(gSAQeP&QJipcQP|;Jc}LGXb!vJ3|_t ztCvB4&mq5*Wv25-wa2TJ(%Y2VM`w?2%WB%w?|vR`zZ(V^=HG(@`Bo9p+o(7DGd27# ziIqUO{c;aN^bA<+K6ti?;e6Jn;7e zwoF+3XWiHW{p6gtJ&TD5I~;+zaVc6O`l~+@Zjn;^eDW%B{KYNC$j&dBV?w4(3_`=ZhSp4? z#1&PjFLk7qUyM3`7*-fXOxdf)_K-!Ta*Q^m`4)Q6C_HWsQ7jz>1qj) zuDFSP67rBHbuz`iYUAOT@}ml&ucl=Wv&4@zJ8NjR>PaZeTAXHrkkXj%6s&k#96uGi z74&GVcLPL#RO^)-Pu>`hZfst;Mc&;8Pdu?(FF~J6u3#%+=RX+0P%1s^iBp97TfQOY zLZ`1*shUO{q-nawFyJo*%2SJf@&a0{w{|}k+&kwM zY+_b16ew{=Rm(1Be8yYtYfq-DeLz=kpy^4JLlb+=!nM z8mCN-eR!sn$KD8qR~DeoRu*EVTsD1Xrc&mI#hj!WLDxXNil8NGn*Xd7y5@>C8`bpq zNpI@UX>&4867z|ef!@g<xjh>Ai{H`(2Lr@S&aN5;>{Y(b? zLc8^za;QihdOgVj%h67ObYi?7{kh~a1Yw4$JBQcfc_HXZhb>y zX=d>)+U2%*vqtpg*(_Bu_Du!KM)UDF6*^Y7mpuidUlks=cU{lwdU1{vmlD`#vM(Nv1+JJC6%bc?BW%Edc%F!{-d7MfD=7LQDCad7UU@= zn4DM}m^kojGsWih`+SjanL4U2fL|N#9t9@TBzN3##`djPei3hbnK~cGtmIKILZw#T zJ4c-BP!opG@l$XE8)hronJVDK8d5r3yM6`2m$w!Dut%Mr;)dlZe02+i`!{mQW%Zp$ zIn{@yR_pJ#_yRA7#gh+Xw>1W|o3t*OmD6Ocr@uMNaY)WF6YR2&5`Ps6PWv9Cr(^>zRaVp(7$5Vdi zu58Ds02R1b_T20> zs(pGH#5+IsOWe&w@r8J7bht{@ES;$~J9MlCa7p`x74yFo$sM}Gk{RSD3v?>H$1-Zs z!auv&9qZec2S}R8yRr_8&Qj%p+w$(i z@Bd;<*B#v-<Q57+{#Lpt{vpw4pl{LRyeI8IzFWm1uWvH;Eq$FL9$l+EAQ#@CTol9D5 zik&uIP(R0vhrF@xI!KqTkOA;TUg{Up(_^CT=v8lg3vA*=%Pd$3c9YtC8Q@`f3OSso zazs}H9s$ovGHJjjRG-E0`!k%+-mgvkadRobci?zR5Q#3i-a<^&(`z?k<6n0v#SAje;7GuS;_GaLC$(QBFwbX zjp`_g7Xgd~U&#&6<)|5r^#!gYoXhC0Q8*p< zG;$N(3#mHuVGlF$%j_H!BUsrdBSiVzMLFUedX=EmY@sa10)s6XQQQNi zXhtDVZPhk+fac6Jle^29mQ8!FnM#O}N?7`1*v8$lbRd^k(V(q!bP&&?i=x(x>gm=r zEh8>z{JQIa!mG2d-pOPTY4Ba_qK657V&|d0HdbELUWrvl6(_gTqR!ozj$XWV-L+Qz zHFeR+x7Es3r)g|J76`BP&Rm#r{B0>US#CD%h%?y!;W5|w%R7AN-SF|!x=df#;XW&# zQJb;RP0}(Og3gkRY43T|mS~mm!k$z*Sy$-8@phU6n5W!6nlr0VT8OLv{er+r<|kyl z7hFQ`O~%Q9}hp{;U@S0Fb_g1P!}he&pxPs79exywB%&PD1W zV-@Vf{z0S`i7FwHehLE}^@ReKe_US)&4q4zn6z`wZ}r>)4BN{L^L%za=?m`6rSjO~ z1FJ0`(j`B3o|HRrUO-clWP~lg)Mc;K;H8RYxej|8G+U_lk*s9uE#>(U&N+4*y>%xx zSw2*PX#91tOjL_>Yr@Oox1GxM+?25BHnRQwqg)df9&h$C|Jnjb)U$q@DaDvF9WkI< za`Z<>D`VaaA$*M;t&@xM=?uZBc1H)tO9cne=Rjc>p)`Z<=8L@7T5^Wdm)A$;q;{<@ zVtDma5mD)Oic03`ItN9w;Qj6wsasS1Oq>};=3Fp;XPM$)u4@9W54|Xg2`dXQfx|Bs z2guK&!XTVj)v{oTvjm;J&C@$BTj*tE3aUo-QAp#ZJd*3qilsn}AUNuHgdjYU+v2+F z**gW$5=m(8OPT$Ahc{qhfG8ctx&m-QQ#Hc7$J?-XPh8Hkc_5KEl5 z=3_442ii1$?Mr7x;`Af_R2CHs=EuZn|MR1NABp5-h|_V