From 357c0753f8b911202ea2cdd6d92a4d73cdfd58e4 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Sat, 8 Apr 2023 14:38:45 +0100 Subject: [PATCH 01/17] Support dataset when creating elements Allow dialog to show element and override buttons --- web/scripts/ui.js | 47 +++++++++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/web/scripts/ui.js b/web/scripts/ui.js index 6999c0a73..09861c440 100644 --- a/web/scripts/ui.js +++ b/web/scripts/ui.js @@ -8,14 +8,18 @@ export function $el(tag, propsOrChildren, children) { if (Array.isArray(propsOrChildren)) { element.append(...propsOrChildren); } else { - const parent = propsOrChildren.parent; + const { parent, $: cb, dataset, style } = propsOrChildren; delete propsOrChildren.parent; - const cb = propsOrChildren.$; delete propsOrChildren.$; + delete propsOrChildren.dataset; + delete propsOrChildren.style; - if (propsOrChildren.style) { - Object.assign(element.style, propsOrChildren.style); - delete propsOrChildren.style; + if (style) { + Object.assign(element.style, style); + } + + if (dataset) { + Object.assign(element.dataset, dataset); } Object.assign(element, propsOrChildren); @@ -76,7 +80,7 @@ function dragElement(dragEl, settings) { dragEl.style.left = newPosX + "px"; dragEl.style.right = "unset"; } - + dragEl.style.top = newPosY + "px"; dragEl.style.bottom = "unset"; @@ -145,7 +149,7 @@ function dragElement(dragEl, settings) { } window.addEventListener("resize", () => { - ensureInBounds(); + ensureInBounds(); }); function closeDragElement() { @@ -155,26 +159,33 @@ function dragElement(dragEl, settings) { } } -class ComfyDialog { +export class ComfyDialog { constructor() { this.element = $el("div.comfy-modal", { parent: document.body }, [ - $el("div.comfy-modal-content", [ - $el("p", { $: (p) => (this.textElement = p) }), - $el("button", { - type: "button", - textContent: "Close", - onclick: () => this.close(), - }), - ]), + $el("div.comfy-modal-content", [$el("p", { $: (p) => (this.textElement = p) }), ...this.createButtons()]), ]); } + createButtons() { + return [ + $el("button", { + type: "button", + textContent: "Close", + onclick: () => this.close(), + }), + ]; + } + close() { this.element.style.display = "none"; } show(html) { - this.textElement.innerHTML = html; + if (typeof html === "string") { + this.textElement.innerHTML = html; + } else { + this.textElement.replaceChildren(html); + } this.element.style.display = "flex"; } } @@ -419,7 +430,7 @@ export class ComfyUI { type: "boolean", defaultValue: true, }); - + const fileInput = $el("input", { type: "file", accept: ".json,image/png", From 1acd2ef5d2695fcb1ae065e9aa1f1a1b2a0c6098 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Sat, 8 Apr 2023 14:39:10 +0100 Subject: [PATCH 02/17] Adds menu for adding + managing node templates --- web/extensions/core/nodeTemplates.js | 184 +++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 web/extensions/core/nodeTemplates.js diff --git a/web/extensions/core/nodeTemplates.js b/web/extensions/core/nodeTemplates.js new file mode 100644 index 000000000..69d09cde8 --- /dev/null +++ b/web/extensions/core/nodeTemplates.js @@ -0,0 +1,184 @@ +import { app } from "/scripts/app.js"; +import { ComfyDialog, $el } from "/scripts/ui.js"; + +// Adds the ability to save and add multiple nodes as a template +// To save: +// Select multiple nodes (ctrl + drag to select a region or ctrl+click individual nodes) +// Right click the canvas +// Save Node Template -> give it a name +// +// To add: +// Right click the canvas +// Node templates -> click the one to add +// +// To delete/rename: +// Right click the canvas +// Node templates -> Manage + +const id = "Comfy.NodeTemplates"; + +class ManageTemplates extends ComfyDialog { + constructor() { + super(); + this.element.classList.add("comfy-manage-templates"); + this.templates = this.load(); + } + + createButtons() { + const btns = super.createButtons(); + btns[0].textContent = "Cancel"; + btns.unshift( + $el("button", { + type: "button", + textContent: "Save", + onclick: () => this.save(), + }) + ); + return btns; + } + + load() { + const templates = localStorage.getItem(id); + if (templates) { + return JSON.parse(templates); + } else { + return []; + } + } + + save() { + // Find all visible inputs and save them as our new list + const inputs = this.element.querySelectorAll("input"); + const updated = []; + + for (let i = 0; i < inputs.length; i++) { + const input = inputs[i]; + if (input.parentElement.style.display !== "none") { + const t = this.templates[i]; + t.name = input.value.trim() || input.getAttribute("data-name"); + updated.push(t); + } + } + + this.templates = updated; + this.store(); + this.close(); + } + + store() { + localStorage.setItem(id, JSON.stringify(this.templates)); + } + + show() { + // Show list of template names + delete button + super.show( + $el( + "div", + { + style: { + display: "grid", + gridTemplateColumns: "1fr auto", + gap: "5px", + }, + }, + this.templates.flatMap((t) => { + let nameInput; + return [ + $el( + "label", + { + textContent: "Name: ", + }, + [ + $el("input", { + value: t.name, + dataset: { name: t.name }, + $: (el) => (nameInput = el), + }), + ] + ), + $el("button", { + textContent: "Delete", + style: { + fontSize: "12px", + color: "red", + fontWeight: "normal", + }, + onclick: (e) => { + nameInput.value = ""; + e.target.style.display = "none"; + e.target.previousElementSibling.style.display = "none"; + }, + }), + ]; + }) + ) + ); + } +} + +app.registerExtension({ + name: id, + setup() { + const manage = new ManageTemplates(); + + const clipboardAction = (cb) => { + // We use the clipboard functions but dont want to overwrite the current user clipboard + // Restore it after we've run our callback + const old = localStorage.getItem("litegrapheditor_clipboard"); + cb(); + localStorage.setItem("litegrapheditor_clipboard", old); + }; + + const orig = LGraphCanvas.prototype.getCanvasMenuOptions; + LGraphCanvas.prototype.getCanvasMenuOptions = function () { + const options = orig.apply(this, arguments); + + options.push(null); + options.push({ + content: `Save Selected as Template`, + disabled: !Object.keys(app.canvas.selected_nodes || {}).length, + callback: () => { + const name = prompt("Enter name"); + if (!name || !name.trim()) return; + + clipboardAction(() => { + app.canvas.copyToClipboard(); + manage.templates.push({ + name, + data: localStorage.getItem("litegrapheditor_clipboard"), + }); + manage.store(); + }); + }, + }); + + // Map each template to a menu item + const subItems = manage.templates.map((t) => ({ + content: t.name, + callback: () => { + clipboardAction(() => { + localStorage.setItem("litegrapheditor_clipboard", t.data); + app.canvas.pasteFromClipboard(); + }); + }, + })); + + if (subItems.length) { + subItems.push(null, { + content: "Manage", + callback: () => manage.show(), + }); + + options.push({ + content: "Node Templates", + submenu: { + options: subItems, + }, + }); + } + + return options; + }; + }, +}); From fe93261456784c498b1a3def7d062ad9b5767da6 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Sat, 8 Apr 2023 14:48:15 +0100 Subject: [PATCH 03/17] Add style update --- web/style.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/web/style.css b/web/style.css index 27bb83bb3..afea3a8b8 100644 --- a/web/style.css +++ b/web/style.css @@ -202,7 +202,8 @@ button.comfy-queue-btn { margin: 6px 0 !important; } -.comfy-modal.comfy-settings { +.comfy-modal.comfy-settings, +.comfy-modal.comfy-manage-templates { text-align: center; font-family: sans-serif; color: #999; From cceb530395741f0eac67b367acd831fea0dbc925 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Sat, 8 Apr 2023 14:50:57 +0100 Subject: [PATCH 04/17] Adds warning when loading graph with nodes you dont have --- web/scripts/app.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/web/scripts/app.js b/web/scripts/app.js index a687eb5c2..695d4a5d0 100644 --- a/web/scripts/app.js +++ b/web/scripts/app.js @@ -864,9 +864,15 @@ class ComfyApp { graphData = structuredClone(defaultGraph); } - // Patch T2IAdapterLoader to ControlNetLoader since they are the same node now + let missingNodeTypes = []; for (let n of graphData.nodes) { + // Patch T2IAdapterLoader to ControlNetLoader since they are the same node now if (n.type == "T2IAdapterLoader") n.type = "ControlNetLoader"; + + // Find missing node types + if (!(n.type in LiteGraph.registered_node_types)) { + missingNodeTypes.push(n.type); + } } this.graph.configure(graphData); @@ -893,6 +899,14 @@ class ComfyApp { this.#invokeExtensions("loadedGraphNode", node); } + + if (missingNodeTypes.length) { + this.ui.dialog.show( + `When loading the graph, the following node types were not found:
2nQ)|e{>GHwDCnM8( z^oZN2iJ(GP9PrMwXR_!MDEZdAyTnPwb{|wiljQ^7#hqffD@5mwT`Y2Pm`MCuC~Mt~ zMH5@0c)OQjre93Ofiz#rpOAr`9+TW)#`-AH?*U>$zV8i4J<}p)WvJ$HbIbja7Q(Z0(}0@^kKE zZMakvWlsnhEFZtL#iohW%Dg;u<@YU)x8IIc8T}HK(r!tq%q*bgQ^ht<-mcBi8{I-? zh?t+A^yF~zMY4#1dV1efB@S#PqLOi%=$#~@=;_uL7KhUBxnJaUD&3x?b+c$;JZ~|r zO@>EhW!zLTbl>8zQ6i43+fJf@A5nuA(5&WaW?^GvzkmO}v$NACmy4a<0w7XEM1*4{ zB?&pX8ypThVIAl*fGq=1x&bd {$A^i=;C6y&j5G6zhJ-SNIP z3LX3TbCJi1ONFlI&f*hfLq|skkRxQIq;6vIHtk#iJxsK;lO=O;prZ*}PkOf+$MC)E z`f!8HDUOTnF`+uW?B+AAt2PQ&Zmt=_#XD!_=@mLuA}sF~oVX-awp}U;4(a?7>!&81 zbqQ+s_noBLYxA!O=D5j@D)_}n3sOnmA) }-gh)0IDe{uDpm2reKV z>gy|lQ>LNooC5cllM{?*1J8$Ux2LZUY;(JpK$to_IszDf+``+=u30b-w0#pLomQzG zOKgk0AoLUV!XvO(IXY$1SYWWUF42Zo0A5R#fneQ3cSsbPnwm ou;2a! zlnxy@5NY-f4qg4ezP^J$UpxSss($LO$FUQ{9YxjU@oL^E1(0NbhIm^1I-yn{+Bo&y zj&W$5fG{4(Hwot9js_eeWWcUf$Kbtu&{ihzk(Y?dQC2yN#t)OT^PUolr!Ot%M76KH z76ElSe&aUp=X@jWK~KFC4F>)c6H5;{84Z^NdCt==vD1EgEE?rjPSz$5QC`k>c&hzc zRXMZ2M$M1HV=0rX4l}C`N7g*%#C=HB8c;DEM^ZRcVhTBOsyXGGel-&V6|RCKd{GMU zl^mo#YwO(M`sds~AoI<(L;*u%oDX#6dG1_s=zg|x+T8^UKR}55*uV5@fnxTzzCQ09 zKJw7&$qfe_1>b9;t;0aXPkovas^zmiWU?3 3e@Q^YAr|;k+le_S_&ka*luAVAtw-sUUsK;%2|Ry z0`ixK$0>loX|Yr2+4J-BBeF7}bkFFs*@KqEp;gpDdbQpfXbrCN_21CS%dl<)^q4^M zk9XfC=?)oK!KkA}e)Qe5h(0^$SBn~KV32&>suY|!GPMDwnnT_b(&ep#a@`zJkbfFH zsFVU?L|I;Fsvh@v7l()cDfqZ<8rEsS7kxH0vexX*{MWsz5ZuDY526rp0KF+o3ze;f zT8(uarSW!Ka~*>$N#4E%$lhr#))6A+oP2TKn$; C d;4P`2Uq{66j}sa32e2=vTdEDJMWR1Q{-C+EG(!>-znEgajn_!Fn(!)1!Tp7}<< z)4X`m-Qcs8iZ$GU%UMd9y+#b)4Lf5YqWop^GHjJUu9?&sb+lS@&i;OS{l<-%>FI`u z;Xi*Q-&Ow_%?CEn78nlbY9;XIpGe0l?LmzeiEX>*x_kZlbxA3yEZqthbkQp+w{?t> zT2IZ=s?VbnAHSCbpN>$?e4aWxc9Y-g-KL-6vvm;zr%h0lG3PBQ>)BKd6R{nXMbapF z)K1S>$=7T$pRs8`q}I>gO3x6HEC@swmorTgzPcvgM(r&myy(g%ws>Mum3NB<77Q*| zBP@ e%MI!^0N* z1}fj7RskdrKNP)R;)o^gwQET+;JJw8(&J=i-rt`J9<==7Q=aJal=0frOQ9U*8Y#>a8j$D!^~3fq0eQ-z3AQ%lxuJlRE6ah!?r@kw60 z2fpIaWH6He8Mm*8@6kb9LrYgf%Os<$P9i<45NCV1(;m5za(U$)PH@eF{g4h$40^X> zlIo`l@}bJ^lpo>Hyk6ssvj;E*;AtSQ2O^H*uFapNoi@;WL8lOH*UIVxE(hQi2bgE> z+zFXGfch-_ob%~VYDUIcNWZ|Ug0LtrCx?$o10J!ZozsJMPvhqIpp9@bGmkrafTaPt zNnlA?S !hhbq4s{gx#+l~Q3w?g*Z)OxvG*sLv(?}$dR+5cF~*j% z(RJ7^y4z(V3V1?mNpvBHM+o0Y7O3$GnlfOM;HIJM!eZ$^Wy1+g>D;;u^@)D1C}+5bl;M*Yi-t z =7GwQ_E|rzl6vnh{mB(^BC8dP< zXV-^IKO^=SV_J=!$G4oq^G6MBfMamin9D sZ8%V0ZEl9hc?# EkwS| zrd?{+XdxgDyrRvOsK-52l@=$bvzSGls|00PV($BM-Bv9AvP8GCmnb$D?S$joiHv#L zzupmNb3bj_b|&ebeOg(3wmoXMD{#>MYi0SBYQdw;pDeQYN4%|ZZoREbJ1(M>`GXLT zUzM0%!K;LtXCZLy?fPP7PM0*ej&Yh1Q`F#tVPSa*4hp;O=iKxR42_wd`>p^^rK3NA zI?@I7h|`9?3)vg#x76B}S*k_&HYJ5kXX@LZPt|?#!bVMd$b9K*pIy-Qz)_%`ZnMp1 zwpAnWrQO~ln=i%DQIn82fVKvrNGHb)gdT`Ka4CWYd I~8lbV_uz&NF@ zd#fNpm6w+TlLC_8+{_F=$X>wKnethJmCTe+e|{ZQtHq@ylh$ad_=0m0 eR7ME1f&lqWGO_7a6#%tgS`ghW2HkVQW c6!4-hI5RA<|5(fTsmDa*n3?yZ+#$Y*}1e?603`PY$sA-=`-(88Y{3i zgL~VxmSZT@G$HWxueu@3q;YZ;lg1F_IT8{Q;n?hwl9J-$rv$aI6wm|tCO&=k?4W@z zco{^<*RSz3=ooQgmFlgbeu}m?M`-U@)i0{p uNE-&FXv>&;6oc !NhSN=H zynouRDlm3Gv}!cu>2xl$Ai028eN#WRFh37gy8|d}Gj%{}>s5JFfcpwamwV7`90%Tk zG;#NCl+LecJez~f8IY3G($ew+e}HgUS}JUmnE`G;kiHKYJ~y?rkW*5wE-i&E{iF<@ z1Lp
AIXV*QuWxRIYQhC5-p> z_N1^mP7b#?Hjo27#p%-zav&?nH=G>G6M@o!!H z@e*g<>%8v~bJxsHU ^rwmqOK5CJ|Bjr7q92snImA72;~&2*X^^fIRwkUIF3 zekOEaE*pv|(QyZrDB~j~^Il3Sn$}}y$1|Sy?q1tHF%x@Dtt&%`ziH_LZic)tC>@<@ zH_it#NHJav7PbV`Y=P57jjBXCU7#&3SLfC;va$mEv_L&tn4Wp_2IBy!3AVzDdy~M> zn)iE@7&}4};p*zDtc**O3{vm6Z}-!>!DI#WD};oDogKN*>-($MuLAIe#uNl|=yfQ; zQ)zX-v9%RMKrprx6+z5|D2?!gd`2n(jS6_a62+@PtKG(z`t@=F_n}wmB|3KDJM1pr zRYalmhvgc_tR;3TmpB4>WOuIq0k5Db1hW @TaE&YAr|;UKtAA!o&+BY102M|u|Bs+Df)$|gBB zQXEJu_q=DF(U!uzsO;MEHA&>J`dGL%$PfZxZwBE8FfaI)Fs%HN_0D}-07TXNgb?3q zK@$OI4LQ!0tgoD~fj~I}{(S}*Q&(3P)L&WI#_{pzNF?&biwS5O3GyAKRM?>wv$GqL zvG~^_tN71*f0D;gF?T2Zxw172GZGVjuQ({f@_-4gKA0^H2ONg%P><>8&gBumPYRuB z<>kk Ju<%&PSKS r;_R5;n~XZ_vFb}aot-}E?+ z*-Ew>js0! >i;z7rFqn$wH`mwKKS$avQQe@IIh3J?hK$?3IxloFBz1lX z2>}sJ7_=8|?oY9?I*%V42*d!EaNV9)nK8!@ u*)FBMHq)}Z6( z_iuwr4tN{nuLL8RKp %;FmXa|hfHzJv&VAo<<$fjjIu&sFKo10DgrjHRr- z_%~YpWY2Gp_x1Gw$daLSHiXjzrUWh)7GQhMwFym4Qkp-8JdJE~PG1_2wi7906(q@K z{AV~L<#jcD@bm>@Aky_*SNKa8Hk?|FZ9(m)mxV6moA}h50y@ZR+@ygZlH?n=g6%H^ zy-;n%O$@Ri7VwXTCMJ=Qk@ efQX{@K34*5B;<@Vg&DArV_8rgj;x+MJC>t& zM`a6L5sr0VNlll0clT{S*q-rIOzLhNS@tT?!AZnxGCpKV?&TktQuF-*B>WfkLb zTExO}KjIw_j@O@-J^|M})N!yS@ep5ER8$031Ear@f|Al>Atf?EdJ5Y5wcYGjh)1Rt z7RT!~xKKT>UA m7293%qV0~3j=&~dakGGM@^vHHeK;WIQ05M& z>C&Z3kSAe@w;B6FSaARk(bJkgfBiGLno;(TMUa1xx)}KfyvbYQXNyhNT^S@gOZi8; zPwFb{yELo|w^!WH7I(qN^vS$19NbcCn^Qsn*WXE$*ku1W9%9;i1Pee)%F4; %`jq8DsTY3H3uP zKm`Hl6=R|Y#N^~qo0LG7cHT-IZqRpR@&*%>bZ+)4u(H!E>7>|i@gnd?(ET!0){Izh z&n&e4+RVV9vaH6XX-6oPo0qvbCg-tHQ`mId%F|`pWG;qtU6e}}e`Wc#2>Bn0r7AVB zibaZmY&oc5>-D#Sn~)8)6fC$&o%^6Pf)NJlfRVBB>SzUe#s>OKQw1#77=j};PEf3R zdXk;g7-^ s2x7rl zUw;ykaZ_`1OiT>QVo;x(c-RuvK9@9Cu^s(J8rbc3u@~#l4xDRmwYvpX575uN8FAWF z-WIcSh%RX%5Oh8fr{eYYEcuz!Vn8K)Vl}osm?f+`z9X$`MG(Lk`y4;uMS1m~g+O7> z`-(N4Dr@2w`#W!rx8IYWx#~S=p<8Hn`{WRhgai^#%FmzN2hl)JCPn`3v`cuY;3A$M zpBumHPS6_Uo?Dxdg5*y|#;Z;YwgMS- u+tcV^L=?1R93OIAK$+(=$-B84SxEO0guJzml7u@C*ntg z?O%iv+JzD!G48EtaE8eokDAHI_#7`y_iHRXz=9*=dAb!p)2afbLvC==hKcPppNufU zwxU!feB{SBMDcpVk3Y>GbjAzg7T~_pGClC$$+b-*^&y`gdbL(XW!pDgnUo=qwc#Xs zs`q709cD<%Sud2Se>mnAteuzp>-*h7aPhP4H1S-HO`+?rJ$)1RyW>yQI-O3Bou#hD zdOtkA9OzZ{cv)t2#o_F*zsmS+Q$LCCr0k=i&S2h?Grg~eRWq-MJRhwS-IX2m{ &fyEoz#MiH1L!HdZ%Cd0 9C&lGs5D2jI}B}IU2Z!`{nzxn&M7y`C%!?|EY=vQQO%Cuy7f6 @)JZpY^&EQau0CTG#q0;BSiibazu*C;xW+&~!WH0hC9n>rsLq&WyTEsV zO|vYFgl<=~{g!qh!pr&%P{wXM+MGlcsV5^VoFxHEuS3sHK5z7|`S{XK2n8uExOA-V zfI{Sho?^}Z!Fd|M-pY5@p6Jb=&jBL>*oWdLMrN*6OboMIDS3%Cjp0r&rpUYX)^gn+ zSv!V>V~kJOCzLD?>Toe@ois3TM`#WJUwPrP zPByHILs>;a!o&({tZ2|;`_V@H=T* 4jFu{b5 sstPLl=vNO(3 zN~%On(w)`Ez65i9-{>f(tSV%qbKGxkespwXFRTO0V{X0#=W-ze|F4ZY*D&2`MJaJB zA{NTfI^qYXbB+VCnbUeF_3N`}?>YMyFBlze@FTpiA531-4NdlwZhu_0JY3qb%Y~jw ztGnj?(1s*(r#r1C6P?A6x~N=s5kXAnQ$sVxBmu%D5RQ#8X9w|TjhNUpl5xIZg7Mh! z*XxMa;p~UGqN-)d1}@J7`9t8S;Bk>`aem(EXazM$_-z`kIB+C2tqo?=4p(gt$P(Rz z&tx0ta8aP3FoC@cW-4N>3tui^jBN4QzW?0iSeg+elicR_FqXeZQ=~_8Y0-R6C}>J( z$K)1E3>J;|wnvdCdy3Y3&;ZUee-!T=m{OUPz77<;d+5I}@ZD_Z>js^>8!Yl%8BPcibu5Q*+lfr@TTz zL17n5wM&wAszD7#wSgHg2;zBMyUPViX>9E5$(hmPW|#<3)21U*7~TkkQW9L^ sXnjGiSelt7D*H}2$4v>jVEi}>v@`1G zQbUz~J~3dU`SY9`-rd4^lI-v5HO0}O#s`@s8&1DYL?ym~XmYRn6PX?GU|+j-El@gX z#FC4Xb9Hf1b=T|D?)~6JFSR;{M_A_r%O?~|Kb-$Q$i0p8@!#D9(tf}Z%7)Ii5R4uB zz~b=V7!DKv=~OP9KS)4GC@noogn0h;Tf0*T)y<^-B}K;W5|{qGfcE&vtWP07JYT)q z)=E)_0k5rt>zCgRTBti*@cNdvzsy#X6ifF#-v5Fd!~6#M`X_bqIGI4!m^yhlH=uR7 z8nG!57X&PMss+3J8MRe&x6n8@xr6zl=?($nIeEuRBXXvb{@|5um4d)m!v>x&Nyz(1 zu3y%ygTX*A4^M|bR#}%N_B`VPMNX<1=M)9yLZ@E~{ZP+Duc+_-H4F=5fWQHBkIvib zVAF^XOfL{c_W^e-;Gs@Z;uok+!N&T)b-sz5UE=V6s@-=^uH9$dl^C8 zD}FNQTv>gzdDUQ--lKz4_oem8mdpwNN}R@3+OztpP8DO_wC-10#Fa*s2Q^pGFcQGL zcLmNCmp2Syy?>AG)U}B@zT* AO$reUtM==0(t>i}QoZoZkG1wt4Mp9 j{UA-Y1|LGG oz-rY@Jc7dlULqLX`D>0~ZE 0Jp=yNmWB|!aBOG+i zEoAxofqthb3$FyNcaQzj?vuq`-OBbQ%aidd;san#hT#ND%T=h=gM>yJun5)!Fy#TG z5~ru9@{yb`ND_VPEChfb0LKzcCE{Km?_+Rk0IAC!fw&EqUD{FdBRV@Ri`UyYZ9O{l z=f6-7;k?iWmeJRanCHgj>({P<9l3C2m1t~P^Kh!~gy@xIXt)lxvsvYSl07ZQ6h4yY zRx(xAt@voJ(LwVcqi$P@E*A|XB;F)Kz>jC*Q&EW %KF}G_GJTFYgX8o#2Cjc_$#2q?0xVat$~*IDiTU>l~03 z^xh!2f>g?6i4x)B0^_4I$V0~Y?#CPT7cXASsXSZ+{*lUkTP1(+xJ#aEWu$B`LPK{D z7WtO4s5Q(BfJF@t$-~PV$^I-4ZUzuI5dp!vD7YnFPdD6jE4*B+C#e#CCjKogG|WFV zl&94g`7m~*GAG~GO2#Me*8Ox)`<0ZGIN8|p(JM{F3iLphLXQHTT(EFKyWPZn|0fcL zOY5*>KgEzUiB*g~(5gIAHcpdg!usv*Tz=ot5p{0NnFoUfb4*>pl+a)FFVKD9ISj;6 zHula77A14+k(LeBH!uLL03JL%JOUO2>*o*|fE4gOR#hiO^;3fYKcMP>Obkx$bA=xo zKNwKl-rj~&)2YGC$q8iG;hM*u$N|3<5Jn*(G#WNg%m2@mZ1V}muXtuZ8{f~NmE#*u zSTtZ-+KdT}|N8ZZsWa={1DS<|P28yJ{k z3FEnr7mj&o5;rpjZ%g#om>2D>f1d)wFI9 HgjR0bNQvL@ekh%!V&oWs z2VSnN12@rj*9u+PP$ACs#HXxNhG4m2_RBttuMi2gN^GO5KZ|apZ|!|I8eX(bu#9nO zNE2_dn!)CCO|KLoE ^P@*{2^<^+?~(Fr zUA&6XE%dxq;-d^?j0*+ZUR~vJp4%bidTUXJqp?v6y3XxKuXubfqCOf8g0=d>eHE2X zpv}}+pEx<~LsQovKQ}we$ix&cWc@Y~=JL{ykKK6av%SGO1Xv(6k=ZX1m~PNl3Gwk& zb#>4CMnpqXlbn)LDsz(<_WMs^KPiul^P|F_+7|XLuP9y{4j>nq&hdM}cReYhng4py z3*sYP6BZATNm?%gaq%OCRqz!qyLQXS$S{EbV3-FqEx@A?m7mZ+0*8k2t+-f-pa1q2 z9TuXYZMd&K>W>LY0Z|152>qZ`!9?2ReKJOcFL*G31IHewZ9GnP`dK4b!37Sa|D=l} zHWgJo^w)gwM+gX RU^?vd z @gm|qf4DpD@Nd%kiz82Mt3}&^=uA=luAZ5t_Z2$u9y1tcK0Q5JgB1m#n2n7M z#*>+>lk^`vc&C&`#{C?j*bVCl5Ftw)rs_Dgi$AH23&9sth-(cmt;y^2ekd>|F*i-* z;vziE3ghKwGF1;)BPv-V;x$*&)LhsiR %R?t$YCQsIYx QW3wVwmLHv8H5q` (36Jjhx{pc+&`5`x`d)H+oDj z^q6g;&H^#BoucAQ#$rG|_5iB_d-H`~aPom>MNoqT0@f%ue;87M8J0f^oQn(vnjFn} z6jT~7peF{Fj@P(F$ZdZeOwLuOhvw*cP-Xw({~)J|x$Xa~)puSg><^;6Cv4h54K73w zPk^Pra33sT@J!jN9X-#JLKsaJ6B~ueQ^qh5f+4PA@4240h0s_-ci!IGYF})O?q@hY zImt>IV2fzFcm)UM;ppk ;{W;sAs5N(ID0Ta$Q5D*b@E{oq$qb|+6 zQf0rNbAM?y&QeGFYV#sdRK_+pk@wp4bAPgD+TGN3`cbISFS8Vm_@>5coyhBrS4vkD zmxMuWlz!i3may-UNFKAQsWN9IE-4?gxVUG>Hwhq#;Vn8MIpICQJl j`nGs^1%Qha`ZA^@JP> zXVjI);$s%fdq9-J7R{gKd=yVX0TU6{c>ZkgjlCK!wuZqPVA9rH zNHvl=0cfACSb64i&_C1B(;EY#rwRyS$n9{Fb@L1x*>cK%Z^1ahF--88a}xsq;Wq0@ zcN}$Q0+k9(G*@sbk6~C5Oa>Kmajuro2?Axo-8cAi06D>Mb&ac^HU@ z^Gp0-0NN8UT}Z7yjF{^!*SBo$?dg@+q-18ALs^CwO6xbevW!k++SVp>aI?xCQ$>fi zRn)X`7%gQ2B;2byiwz5-!`W8RvC1vl9*%Y`$(ozbn)~w}2beKTOw0hvd!&fn)sbrm zAi<$vdLDKI5@O}xI04E9ga}}IU=i4`khZp4uvb6)V-!+>_W>ASi7sl@e5$9XtfFRX z%X`oVMzOu+L0 |G%A8q}At^; @o9?dzkib%&+B^c!C8U(SEgqw|f2O~(vV^m&a49I&h-a~}a`E-bY3(si^oy`| zCMP7MX!FU@0eyuH@LB2TK3-m+*8iC0;JgeLyD?g!1B1K&T4Iml{fe3z?zKPI#B9Hk zgu^44;7{$R!k?{(N=r%kIW?7K2*2fQYI012nFy+PND8_=-d`4Bnhc9QMEBw3e)*Iu zzocr(^YZOnLh!>Sw@`l$jg7bC20vXM*$)%Uwt-1n7O`i|7S^g23G1!9w;F(ChyJL% zyd0lp%u=}6o_p%l&}M71lEfVDXgA+z{m&7z2L7{Mk&7XuTc}BU^t2ouDQ_EVI~c|H zU4nRNKcF&o9-T$pHsT!g*s})-dIkokDi>v+g%FjZ;%Bd3WhD;iIXK*YukpO~>`t0y z#f$gU_u8>4OqB7gwO&i?+7g@299vO+8AVyb6`R=iFY&NE3J%FPMHwY(f!~Zg$&;wH zYy0+NiZunWtE6bgqar>RhSxO(HgXrn<31A-7TFR&S=wHj5VDPL4$GYk$+5l2DBu@2 zQ8-zQF7V|rc-58(0dJ0=^8OVDGq;*KWtUwqca^abY4L3?H>4q@hOn9)wp=&6XQwNU zz?If{%I*i0Th q?MB)=pVDX0<_rTZz{?iaL;OG!z!WExKn4#IZ10#bObEDC=3 z(XYjjHef)TGz6sHJ=ll<0AUA57()ld)@Zaso;tU}Ns0T7&>JYp@lK8R6fqM?>d~JM zR6`hY%iFu5v2k@Oyo8X&{sJNvdx@0C(r Y7CY_sAiX!mT;kD@46@fuog`atFURs;8V||_`A^+ zK{>pRk}~+@=cud2x&{VIFq`!(8NI{SDtN@EOH6YSXYbt{kovkaBX}orSB=};Q0@XQ zG%z%@J`yGKr+>SzHScwquPK|yRma*V1(Cw?_|O$v!U}yT80I 1W|zA!$71omkGBjU4JwAvk@mS6p#*z5Y7C z-YTgh=GT26<>wU(kF|O3aqid=o)gB u|*bjjQL?T%4ngGEbd4b=76+4Yqhuq(7jf1WG6&(b2K@to-^` z8lvTBLW|~@bv&!V76ncGRezS}dqYD*MXlPt+Qz)mzaYW{3KQ`De78%l?j{JZJZFaL z@7$qka9}4Y?x!Uz+OB6sIrV-$yMUk|_c4Bux7b;|yu3bqkk{hm;z}qe=x`1WJk9s0 z-;H0s=$}Hv|3>&@>EhYe;WPRM_j&wGc3R2=+w8y@f|KHihzOZogFpZj>TubrLCK}- z3=b~+{;*Z(7vIQ#e?F+vv}9?j3g>0n3qtJLPk2SwpL%+9c_{ut$hMF~_ut=q_nv$# zOLpCGYZT&DhS6c7w}hRng3>JWxND`Rt07f~eqZ?tqhB1jj8|s$afq`JPS%i>^)llZ zV64Iki0aj&$fyJ&Aq1Sj7Fd$#xzxvwa$ylyh^(kJUV7;;VewZ=2Ox?8UsALrSSRi< zuy;Sb>SFgXBnT l+9+_aJ%`hXx5RNGyKN0cQcyW+>@pGNJl*BFG@mo(?% zY*i7?2Sb5ElvO;EPCjLO#_%lmu0M5`gd+~CT3&i}j_YzBkIcb_z=k|V|3v@R^EpMs zm3d(;$;LN+QM%fq+61MdTNNDY@LSwX36iRr$zEfFj(s3XV3F~3c0N*-)&IH6WN>Z6 zmhc(<2k_~OS*1(lUB;g1fhT85@78IyzV(n*+e jhZIc0+KB}gJSjM zJuV~FG17}zXI)vB{Eae=^K4CIWo2Dm|0J9U#U^cI&N7a7wCLxDO~~j=5cT4qhJ4!% z5lvx2#&EMl1qB_j`~Fe=)U6*se&}dwa_(11Is5k*TmMVyDnNV{3wz=9gg0TCGjHW< zKvYy$r=_P;df|GI?iXK=$h_aE0SPai7n?V3lyI5o!eio5i!?n#?pYOT(k?9!2c1pV zn;lMm8dAk7BO_B}bZUQ2#jF~f`DXkXaCS#UsZNAG$LTsVb3ZUJr&lX$<*DaNgw%nZ zG^m`JgiV#P vfGfsR#x? *TMcpSP=j>q+yWD5Z8kw6cpPh)zx_nJ31TQA6_eq z2HJ~aE!y~RpB`Swk;r08*O9dES8i~f!|RTQi1gS$?HSjJ2IPTb47pJ~hiautv&OK` zk`k0#FrV%u@eM3P @PC)x1dv(7Cp_$cX^lCJ-R zrI=llSwbKfvWRh=yUzFZ?O*7th;{9+UzMj@H(D(BY3tfT!R%g7mW&7!y-W&I;fT^b ziOlzmUhHw()FyaIFt?z2{^T65Z#w7qmw^WR_ZGzr*o#-jI`*5%Q^%^?J}w$(M9C+; za7#jd4jfnMsZPl_ 1>Ty)?3UBDdAN$#5%@JHzdke@AmbYJwi95bJ= Pb_FM1j zil}RsQ=H3%M`7g8W&I0_{3}mam#$1bL;H)}h5)B}sneVW$hB3u|9M@q%bg2Vhj!@H z6ERI~UQPjl`!nORLmBVddWX*&UwAS34 2&jF~!|mdsb*ej6B2pz5+hoE%CeS6A_> zENnFWijzp=Kun4jeRHO 3fL|RPUei|hX5_Rq?gt=;E(0CcAl59Qar$)M$cV~B znAVGC`1B#&k4vY^T=T9tuypYe*>p`+34x{cgoXS2Ip#6_`!B7Z23ol(^_Vz2&!JZO zg_X)j?*~b`@5RRwH)P_DIG($3>P_zBnja|dGWD|k;!*&%VEsPUe%-r$Ox4N>HH>)I z{$SWOWaio~0u(~T#%K`dF=dmRsK_x9k%BSXz24xiQ!}Gd+F$quT^Wy`>#X>qO5Q zXVrV9td>_6r9Yck-W5xm1~`qFs@qA!GC-tInB7)qRm=73T92xVQqGM3^&a<_hk>X? zlQY;C>l7(NE4dIp-I%+($pP&M4b@t;#(txs9A|Ui!WWMmXTq@2(=drtG&a75D}bf2 zb0%i#_xRRr+d>{c{@r}m_}*H>KA_~o!x2xP3emnPzkbzc*+{Uc+?o5oo}v-^rQ_0l zVu7JU{H^nG3CB+BGbDsN!Y_5*+5uVURo8*_FNIqsd6nt@}N2*E Xr$zQD{n0CahA^(mK1i02Ek8^ru3}-dpjr>!_%T z7bgnk 3Y-TR7DQ%%u~O2~=&f&GV<6_7 zu$UMTe8 Q31-(+CqFmRA|?L z8iA1Mk8xQ%vV j1{ZiduLVf5y!dd71~$BJG&cb zZNe)cF~-aF3YU+N0LyS6=XrMD)%TEslcohYrEmumuK1PCOM%Tn2N7;`{hq*pMxoP~ z@r&-FGLL eIc6@zk+KFZ|1kKh84LP6KPP&+jTLQ(!rkQn-uePDh8{9TWKHdFf|1$5}Ki zIuvT!1#`jwWn{$0%p4UQEJyWnWEt72Cl=Q_XNJ~rlQ}ILw)4Q5*06FRlOH^Ql@(rR z^SyV{f-6n?1q3BDa|_FzCHU-YeCNWPa?E;d`1v5cOMhHcyn}nyaItYWXHnW~g;(iT zCzM{L-$m>ebY#h?pH8h_Sm*WTQ1#5&Y!S82Kvg$Y>w)oc>+SSViEZ5xdt~X?15fQ2 z%|)KxNu*T=ELb#iD&q Q+0yy*;;R&xaP7Qr!bp_N5x5l>cp0sWW)*FJsUj(@u;@z}`WKd^TaQelWMcP l}5VuN#`ofuEcNP^kLau5?U_;Z%L); z?rGDF-m*W!xQ@;Eh3CgkDpZ<2t_~1CqCoC7LxR~1!+xsU@>*DIGF5({e;IO=z`hSM zCuR`AqydV1#5ZafD`-B{N_BK`Nj5KtjYXDhul?vPJ`Trn@uQpe_-O11USWNpW_lvI zU{7+yr^}H`0z%L4*(CP?WtQ R$2GJcB}n@f<^jwlocytkJNs^-^b9ew0I)Erhj em7P ?W0B6okz&;nvPhNd&?Q31t=(Tt^%I{eb+C^DDIsUG`1h9Kp{=-8Aj5 zI{kAFm<@LLjp<$6A}LSpv}1j;o)6u~?gma#^ScoSUkrKUn4|VB e4m^w0RVFLY%7)>49R6VOyH#`_8nuTp?oZ?-F98w01;u5;P~ }Isl~w zKtaetf8gjSLLhcBIVnj`AS@^-2 X4PcL$L;i`u*b?gM^h`@=)H^=8IkM7D| z$!?v<`of6+-CHDpB5uMP7ppP9C!*_MslH@CTdnD{arU2+^ov%R)+YeG05@4dTu%*8 zAf5pC`}!q8Q;pk!^ixukeSN3(^a@}V#oBwoBEF3Pa*hiGcKi}aMkv7@hcx`+(D{&< zG}suvM=IHRHPdgkQlFr%g P?hg6^ow-6CZ5MXa6(5bo)#rhscW9*51Uf2k{2LJ3) z3cP_c2+N4tNmQ624 yG4?Lk8 z2pql0O-3-x=L0mU&WIk+j8~-asyAE0k*|wg6PH}}@nc&?i(i5ba8H17< _Wwpsdw^Gz6hff)Mx26@peuL)TtNci%l&gE5`fWbPBZsw0 zyG{gb=~#)MV`6#-k|zEea6xt$+07@Nj5WWG<{4!T3F-k|K|@9AF|zKu-zx&}0e~ pM!A*e)fBo2dPHu8$pu{H`+i6%Smfb~Aj`^F^(mT(9H3^1AL-<++AwtSGbK--P8 z@QUFM0?;93H6Ok|uaT Jm03S ;`-855o6+O0%hGc_2Mkxvec&A$Z@H 6&(3F$M|JCOYY2yG|06rJdES@?Ne}GS8j(#RvPTERo;a%W)RAAO1Yg) z#=ja@XP! QK9dG z#s3M-^LVXPq(A|a)=Is9@17 -evwp1lv45MtKQN}DS#+&*cxPmfVM9jbS{Qf{;8cm)q1Vp_akz#PGEih~qK zQZ}Fhe}9CfUpyo%tbEun4pJDa9dCqQIe|Ov?>9w>On{pB;IH7LaaHk?DE0KC)rG+o zHjDCBH~rdrhmuF!`>$*ZKZJjAk_y;F09E1R T8zr4c@lMkIU98LVZZCbV=vxni^~Leqh=4(&tcUzcECsXL9Y@HN+X}kLIR>BBySL zkaoA|={-%2G*ri&oDNrhyTG)gduy&xt~Z@M6`aHZjM-W{B`VecQ!2me#v>{%y^MX3 zmYTY)#M2WsDnY`WKs4zUtb5+JOT78u$H0&6^YVe6jDmXFIyyXjvAiQdT>&?dTp27g zuowY!mw~k;fLU~ntg31iF6-1M>nEaDjkL5Nl`5L)b@9T6{t$M;s2clSR_-;uoo7Dj zO1KKGA#XRT&xVy>BwiOSG245cK!!F~e3useVFXWvRwBb4CeSnnaF?5=&ZDdDf8T2C zsm8XGhN}K#$lRzBHtMlpD?LOng5Fn*-|D+{ 8%k;DyP_R-^{ii^v )zYW<-P8{6fUTxcP99RK~fS)el~m zQFeh-^JHI~ B+$7Ph>wJ@j81t+>jxuk%GLy?E>e-<4l*CS5kKt3Z z-&JrsHH=Ni1 #neR?p!e}bOxz)$Bc>sHI)*HmmbS#Mf5 z+o^ZzNYx@~-j{OfO0LLS+4#VXF<& gOR5qhZ>-C*1k@UjU3ILe;R~u4QPX_*G0V`LAEn}Sh4f~c z(gQSoKQA=RNtp{rm_-J%J>xJp*j~PBX}m|R5xYauC0t04AnW2>fxY{{zs}vihi`)p z8u;%7@h11*J>##PZ@5{ !JbR$PhgA6Qr=9jp4&2&pL0jxj!&9ks~MMYHTGCe?x*Zl z>xkR(cBiHPsjBJ>HyskdxqNJ)pO&>Lva)RW3!VH>j)^WK@uMr*#FU IcI+nf$uiLBbSgNvmdU|qZDL4jthU2zr =I9;JLKyJJIv18DeK46p9)6fWd_z=3_&7{@^b}F2>K)R&Sp+YOt_w8FS zqD@eMfk{ef9)W=CIto}w)!ukO+wm{8ABg*(v$KyXP4U?P%`rR!4G_ReW907I*kmkA zesev_#bpYeh*T{wZf+hPn~pcB2ss6ID=x0f6AHD&Sa;#s%vOJ+t$&wRY$3ICI8Np* zA(a8t-zyva&%QjhA1jU)Bv9dQwm{9`kZxV7m_hNtLpy1BLQl~7L@`1{Zh5uKc~d%w z&13TNEwBY66dF`9UeQ6MpuNb9H}33zQ2U1cd40Si$dk(QJVobR!fnh`k^OT%bfp z0TNO*z%{y1Bih@RY-bJ6-?nY!0S$R @Vn3q+$|iCn*SoG8WRQ=Y(Pu%*zifACW%cFP9Msm!M=lFTK;kp~sBqsUBFOMU zb#ceZ%dw89^J_{bD>uvsx*eKj{dFOC0?Zn)wmrIifXcRP+0to-dw@q%X}ZP>8ncfd zKUP >sx(rsNJ+yy~4e9CDoU9-Wx+f3*kyY9(xo|8JLHHyVH6 zjE^R;kBg^#$W3! wQ0F0n#ge)CzZ(ONfvy05^?N=KkL7F% zNl53QHsv_K=mK8mzT%!#h~_J~o KbEWt2>;iCGR>=g#6@`D6<^Jzq*BfESKVury_48RvEW>`|c#8FZx7ZI>N1|$e z@ShR9zMXx B#{fa({Fn$*@AgC9w$#E ;PW@DL-~dBvkDUtpuwB6&F9sV*-jP@Nwu#a;-Z_#+KIQeyPj9 zig$nsfaL92_EKZqWiS2}bSOBisx0g<+cN+8;<1GrNm*m}SH-7Y%n@B$yUwG5^0~gV z7Ib6a;2-5)k5k-M)YEKgpT!U5?w&QS+LCd=jwdpyQe$njj-erRfyQfPb#-^S%ECFc z<{cOo#O CW7@%i` z>=1>c)Gl^NrtwpuxBXvRFVo*I=yktg=hhpILmLgNSy9u4$dXL^rJ!DEH>2+QUg@BR zSHhz`Jxcxm9HyjKs2s4*)*I)F4_h5R zMzoIC1^Ym5@)_KgVhZ! I{uf<6bcjsATQyHk@l#*jO5A}xhJS@IZlY>Yh5)OXjT)sl{_aZkI?Oc3vM??-)+ za!=e}l+*s &*&VMR2l4xVQ;ll|{k={9*PVH2R#Oq usWk z+IIMMN){CUA64w%QuhD-2T2KB6Az>tfzFUP?{#%_Xyc`3v4S-ynPg%HH&d-8mS%%X zq^{MjP57BVE41P<`?F4Cey`$e<7 NsKzp`OQ*$(ilaFXlc_lF6XTo;ZiU{3# zIypMBcuY}M=4l0>k*$J1f+O~#ZdlS#Et~#{m=))N`ALsX0&W7d5?8H9_vIF(x+$Lh z`Ri9|X69tYvyE6CKsv6&0$g@;zZ>>o=n&%@hd)v@9Tbij!{~LWt}u|o0k9MW@ES^N z{X9=QfC^O!?O p3WX>TMi}@+R;OiF zx3jU)5@hZzVuUF;zyw3+2VfE?J)%5MkQmK Gk&DP#oA2@1Z@O3d3C>GfQ7hY=(b-h+VLE%y00!1V$v0f$dYL?F{c w0DBBt@8JeftM_AVo*F!zt zf7(GIo2ni1LV`WFWx}J?Nvh3o#A(e5-+QW88QIxO@VOAKmz9_MUrgC?4HD6lJfY+B z6ak9Uz`~@iul=(F<1!#Wmx7`I$K47p2=|2enx5MO`I ?k`6BplEdYtp?~C6C8A%;~ys1MP^KEzXoRU}PUVB6Dlmy!IzpPd6%X0!!wfqC0 zML!AgaI>@P>2_$SG``VFwX(2SLm20_ROOHG9C8#7MN6a`W^Hc1b-fM8vTf&QBM_cw za5nEe;1!pG5+9+K(00I^heBEQpXROob#i|GE&{$H=#=+R%cDdBdoIYRYGyVB1eH<_ z!tO_TVG69jfE~hs;)*7*Wm|yaMHz!n&>z7wc|kY=gB6VdyAeaZC7v*M!Sh8aN4i*H zyrkd|6MIY+Fwp#B!$hZw@Peyvf88m&0C&+x+)L1~%IroBC+2|Df+Sk+g%lJ4 &-~APP6IOmZKPBhS*rra*Ig;h^&GMFA!WVJU?K+AmIhM$6A#I{Vwhl z#L*B^3}N;F0>g#Dv}HJk9sjFy(!8hhf)yMVDes(KBICEN_M|miNJ~ipS%78KLO22s zFC2p~7#VfI+ad3E>mEgIZSAE|<5j+W`@|tsgxbUN`^OEUqPb*y4&@o^f%CGMt5Ig( z*I4offm8=1B^R-D5=;S&h>MF8baZqYdU_V=M@%cQqyN)s;_tzFyLezHVr@ 3nwVX5=)h>)L@Uie+_-n|PfvC+|KvCJ&`F*4H8&=3ORGbU!j)~!;@u*v3VE)rx? zwR^O9S}(k+Fcp5?E FB6pO=BTRuKhDAbd-2qjt+`aj pm&0gBt<_XK^6 z5NvYnZl>olncjh(C 4u$2)mBN&+LO77{JtpDK{u=| zw*!+RVf)n!IfKh{&ZbgBv>_FPs3be*+qasAh%|W79?EY}aygrk`Q#s1^)I&i55VeU zT^5x8VQT@n6dhRFXRrI0c_Wo6MOCl7a@KNu^>#cz2dL^umg&2Cu~c4FhZUlPi`Nq& z+jbX;zqL8(;%wL|-54#``soTUG>KrJ{|Pj~Xp(C~b)4CHtn~DzMWNA`bhGgRFQ9`0 z+C)W&s3Dg#Q48ZUPO#duM>s{N=tJQjA%!un?L}@b7-0gLv3VpJfJ`ZuXZuYaV3nie z8>7s<(Y6#{N$?H7gt45)?z7D}ZpQK20GwF;T`q%$1%s<&VL9b*H4|xJC)hyE!!SIB z9Ft8aLLzG}2PhsZP6@SuV-ouSXa!wlb82YR;cUY?kS`bj#dt1J3n+HT8O$Tc*1Wh) zG5*!9OiAkw5v&Jj!d?j!0@Hvm%!w2?c1A%5X~_Jyl*|Nwdo2cmoqx5 Emu$>2@^l8 zV-ZnL$)CyZ--W@!LA3HW^S&7q3OZZrM`u9-=PWZ8y?y&oh1)evgO^L<^|LSFXkjkm zVATU^Uv7u#A29IapXV{OK|vFP|FW_gYH9)m M2AwMt3kxO}ZDU~(2(PO2T*cXPHp77P zV)q(i7u8JxGs7?`xR=hun1tWI-dGf$g9C}H7Lj`Oq{;EyT*&9{4<=U) ({ V-Dwy>U^2F;$ z+H9d-hB#q8fv{9|Q5zP53?NZb3cbkzGzhAEjCIDbeeT@OeeW|xyU95!s1DaDXi`v6 zz*H#ZG(u0X;AWB211n7-?GC(qmt3egJ0Q2hbRv1pCfM0Ap+R}SM^lO>!4Y1CKsFC3 z2Z193QG+b{0L?UV=uqXrL}ZrT5pL}92TJMJNvA0|VD5sJ8@>$KY{0>uP*r`AmZqJm zjSr$CPMxX+BL>ra$Y=aFlA~Ylck8bRM*R80pFif=9ay5sd~;rMA_tZQ1<88M!R5)d z)}`%gX12%KH*RKmg@yWsPyQkWPLT%t%a5YV`m(3@%`U~d=ar{ZEEAqdYHh&%1~4M| zn{(>7OnD2nH#qC>lD@xT)b{B@zJcx>p zPH!Fk6`# Lh-c=JG|vy J)2aO0e3`!gc_8SKn1jfm ! F9em7%g?p&O)s_C;*N=p zc>&D4*hhS^FEB7MS?D)Sv{kzcs7zF6mG}q!k3;`UqYlVRxS#84pS&*GMet>wo>zx- zts_U~tbWzD+$J4dz!ABF!qKz<1Pw`rjDjdN AHOn|^NkvDck4GZ z^$!o5yJZ#}OYqD !pq z^r^KZY?TtlYidu>T{G#-XFcC)c>BrC!~4^dyDndxzaP4Zz LW*VAd gcf^A$*xW}XShz^!V+$n_ wv!r)seC22>ai`)yB2nhWI7}<{t|ZHskus Te@!Z4v8QuTM{YqJv z*|DfKw%FNciq<8xKDHjn3F8Jm45V~0+g9*OMs%XNUVQz5YPCk@mjafr&b?_lnxAI- z;>uTN@My5Qp{t>RRmtjz=;6b=0zL(L{*tXo)u2z*=0oXV9*Lmb+S=O5&(AiRYFOPd zDG=_{{V#p`Uy(Zgk@7m5p(@Kh|83vd(~y|pwZR5bZ;{>K$AMD~(6&GoAN@u<>!!kb z;ZH(SJ#{_@XD@LVj574Znruw(s7dxbKSnM3bj4_GY37roIv$)+xm`_erEFiW-Ju(i zsu#;|wR-}BcSI*S^YXcC{@$8mCkNnUYS&X&JUcXZ2$B66e}QS#z>xE$T1ES8<}`iK zm)FpsHTDh)!IVOXuV{A(a~(c>CcZu>1Sbn-ry&Fn)9-9beir)UCLo~S5&HM 84=z&TdjJ2}_^eIqs0Bx%*Vj_M5&50nZtVV~k?%0Qp z-J$t4KYy0*5l?7pLBRt2MdWUA-9_8P <7)ra_aQ*JGuT(nM(J2I)IwzwD;X_abfYXS*K%8Y}7Rmp}Dm zE40h0Kc$SdJU82PT^SGR7{ED2zP9oyLa!$GaWmPyaJzly&QWOAFwy{}3C=K;L}APe zBJ;ZekAMrzn~Mgf1z}3w8%wZwaNo{P_V!|upJ_!9+JA7Pw`qt5Cwc|*x64vXRAxoX z*8&|{c?HrCO0PP~Ufn1hne@npEk-UjVB?PES-#<4qSt@+Vph(!mR+?OqIF+~LaBfY z?tNS>K-7r{{@N6wVp7vTXZ6$o6|y#;+f3A2c^65%y&_Byiv8WvQeN8(-oLW(_6779 zfVz|dSza+hVZ#*g33i1{xZuDcb8?!z^P-Shp4ooyQ+YY^Q$mt)9s$02nwcr|cPa>k zMVL&FvAP&kKZAn_*++y|(lEj 9^7xh 6S0E7`L`|SiL0Gb==sc{j#8-q}`pPW5U!Y2B zvTy w;1$ zA2c5p1?P3(#>jT!<$UOT!k~0%l^yOMkc4R|udf63k(KEw@5#s9WG%L7leJ3)clfM| z>*&5#Q%2(fmrW5TfAsbB4GffJSt0&d)xYTyHxegPwW-#vJ3w>#@AR1NN4sjtlQ(bt zPz>ez^(e`JW8VD?AZ-WqqnHUA5wUNhZsouf!Xo-{Wyp9)HkUw<*7uM1kW#Uu_4T*D zzUg;sx3Iu%i&B^=;4+dRNLMb3GOJPSu7HTXLWqq;haU3gdNyTcWij}Iv*od)V3?t+ z6rvwsRKgfC3RxH*;8jBjfv62s;s`;k$g)C2K&2@X BT*Yw6&n)YwJIY^OmhbsDHtagfs{iDd&=kBwV>sMcHF+CVX8SC`>a}G(h zHJ#wPS68dX;d*O dp6EIRB@thK(VgkM7K|~I2#)qN?t4g^dk@t zvM5rE$JLurAw9sX?iqOTMIkbGMx(s@$FAD0?r!nG*X-Hvu;m^(Qczgv|JnMsukW =Nsb_(v+x5}6VwKA4GsVCc{u z-nOYc>FUyhs0W^AOUpfL_nhR}FXein TCN_3hg zynZB6g=%(b8fLa)`T|yV*{4q!9A{ACVW^GDhHm6prxcEu6I${M1x?-EhSRIBT?T(? zHqH0_Ha;Zjb~P(%akuO?j&0Ou*Kl^lc~x*;NKgE#Bz1JwOfaR%BVB3siaw&9&dBI& zwWO4z6Q}1=?$?m@7S9U_vi+g1oOR+zrP1rxWZ+h%*vXJe9xjTI*6A&5g_EsrJW-y+FDz1~UaCn;Uqr^3u;?NF#K z!a6o-tgqjG?(}fV +X(?i zRmd?eUry?_2`{H(dUxUKu0s~`7RMd$w`u8K7Z)0AOZ09GF(L?^7l#iWa=^>SQjVj( zA`X97(1VVc&CZUcE!mj02|o`OT2{hdwMIyjvOZ+_Jl24098& j Tt0r{G-Iu6zrIm` zdErL=PR7)g9h7CX8##Ag)6^JyM(2I=pa0BrjU%VW8TqFU9Jpdl*jHF~zP9$iFTbAD zRn5AQBOu>prC~l%bh(=pTToM_Q=WL{+4H(ON95v}l{D{QiuE4Mm%n9h;FFM4Tj Y >kn5Wx^;Hj&5OLz0wZ+kSE^z>%*jWt<0#G6^DUJd`Ns42 z=d*A=fCD^1a&J|7)F #{wPN2><3ev4(my0wlI?k}Ktgjpo*rcE%#h0GT+ zu9>v3u}aIoAeevd>~+`v^i95BUl?IV~3BOFjG1$S$~) zEJk0`8*?rcGAwu)6Z0i2TKl)fS)7VECYE8HuUPB;rTpxN1Jz{Yu7BASDiZ7<5UMNo ztTmKDiqul?>ay{$S~T!Yk~mqrMT%p%xj3gYC+ZVJutuk829S5X^zWBqCo3d#yXTMA zs}7$1Tpkd0aHE*cQ6-A<&x5>Q&;4PcWO?x-{<|4<@g@7kYh{PRE +`3Ac_LhXSm9GfrFF>FoVFxFmW7OrlwqfCRT9-;sL>nP+3v&^Ex?p7n7R$!vyuQ z8ej~^L5DFDW|3?Vs+{vb0!kNgM(BB9FTu%(x`AE+xshk5{LZ7~fZhbt&td3=?*K(X z7Sjwc6kr}?Qb*@F~hxJK)*HC+PpRMeU-aJAmQ@o)HM8%|#;X H@R zey~{Z<+#}7x i_-RiG51zE6&-mC^b5s zx2&JO!{e7^erLEtb3pGCis1!O2wQJ&7JsAiTHKqX4r0}3m-RBXuhXc1vt;}H#<~e* zWFi!9lH>i2B#jEgYl`u9aHE221J6_P_OvHG9o_jOQN6B%ta5Y!e%sA?TIcyi*=K*# zY8GNEj1T(6tr)1fPpG&pr 9?JT?Lj4u)zUhOi6=cJo-(@OGz8G9FHdDk0Aqz+g4GYV z9g~5GcYVJ=35tRYLAcNMb+JiFm$5IhJy=h`6b(wT33Oz>K?Wv5!gLUH*2vJ%9l;U6 z#Npw&CKZE@68Wf=mK21T=gQkk(*n%4+e~$ _V2nr?3RxGi7qN#Cm*eCV_kk9t%mg>8vdl-$hfdC3nwLHV#JUwYji z_j5-P(2it;!VK?j8_X;wvluEHJ8cTBLAns2TOz~4K20w@Kl6h02gBhFp8~#;)-G$1 zm|)pl@(n=9nI7|tOFH$Gjh%f9fx5&rrVM`oRt>2OAF2JzvOHH;OiJ&dyquOoW{J)) z{rT7JZ_mG9BkVMQT;=`{fPPLuN4+^v6S0fgz8jsTqN3`tD`!=V55Ck+0xtkLy3g*0 zxNQjeOOI5V+uHKn<}qOr!@D82TtqYuQj#$26TB-4+wKpy1ic7C%P3P6<4aI|){@03sxJ_XYrQ~F!6S@bfOG$T8 fD<6im<0cg2AV z_YeLOz-qW^AZ7EFp6wt9_xXh+)mL6cEHb -( Q`Nl_s(ue?mNC{{Df741&3^ zXw_)(?|UP z1E7Z9hYm?Z vp5bvak$ +O( zWS0uOJ-C--j2`(^aJZRHqm*2a375!&@IY7ulJm>DF<|i$68sR%(GPN98$JCSv-;hU zNzl(=uJxo8@Q5Q(YEKr{5qi-^1s@~4?+)!uR~NcU4s3+Tya$^V^&c xLI z-FRWpnS<%UFPg+19JwfM`{@B4)8l>z`zSkg=s;)psacv+o*JagzEO7Ie$_xouJaGv zE==E?J&h1cL@@zBSi#~UNO>-r_n?7;7@a7{xM|qn+&O9jY8bW$m=sIHCY6_#cK_r) z043b+phkeQR *8w6JBStx>(ML8kD`&)Gj5Hbm zAoCQmCMFQJaF?W34WQ#*=Y`8gkU1fSlrwB7m04++2JALxg^7OcrI<~*PL5Yd2&bm^ z<4Gzn(7Fl9xNhf|K}aSL$;QOMkk~j}@qq`(f56O*PyM~$R-N?6ot^UyHoB}QNf^;2 z9K0k=fsyGrUznw?y_CA2v0W-rmfC51W&c9%W&3}g>A{1cRrb=Zdv1sZ_LG)Rq!HDd z-RKWiQh$0>&BjV}Ck?1IOBfkAs3DL{E8^Ed;>^t?^Jw+GKLX3vQ{8$$?C2M8-Mvam zDWns6Gy#2N)QnM*CU!a>q)4E%!?upB2b>`|ssh+$*ic<#b|clTn 2&{cYW~t^XIZmH|W;fGTAA7qGiB7xK?c-1`sz^5^5D3BbcX7 zZ%vN!9(z?@!6Q(G*b#!Re2{#XyX<@+>r|_tB)}!D?Eb#VMv^JPaBfwe&Da>odwl)f z`SYj+{L32J+J~z1)ax {Qigg(FP`e=Fr$G&~6*g2>|&OVyA8L-bsq^;{o`-j9=Td|Mj7@t?&^~Zbg&;7qY z*uGE}1)oSI8TtsD6Udu=C7|l}$q#DX-nmD2p%5YycVHDP=$?Qp8D5aj5_iX(7ZIrl zo}-L(rRSI%m}TxIg4S$;%|QGuW|Sb*1Y2ywQ7yIyz9+?4A(g`NOW@4y6kJinCHBj8 z*5{evU6hPg*OHMF0UbYl`a4>SbzT@x^-GErRr!x&+eURloJY%FIS-5k-$6ym2_@Tw z=cMzbkBX=X5JWc5n@)^*hkE1cUs?P}0rU4oXP>$n<*>@^Z+`)6{i1_=F?YjnUy03c z?4K~np2$$kY=z>2+MAAvNdkCj;O7^Q!o!iNjf71!Q8Pn`^aK}D5m${0f7o#!O)3r# z2#MCno<0q|BfUbjj3-H#G6hg!lm>J7 TU|Dv`$ZGHB0`VLLjViJXrGk zxU*#G0eH6G4i~F-+02t!uqaf?kQ_iE*u!x{QBil5c&=g}J)t8XnwpXErLs~Nip9?H zqllh P2^pTs_0S)L3Jgfqeh z6m`_SfP)$`D1j<+r$(g oU~P@JhPk zfZyi_>C*-5v)Gy(&&K6QQy?uWFfIjQZ%Ii!#LLccTuDAEYd{56S-_a5ib!FaZo1A> zDOar)Bh0CbiuzZ1i$4=0GJs{&5%_8IC|czzpw*Bb?4$m$!}tbg%fp~{(7{k-NqVj< zp-V(1>IrWy4lEJ1vuDnv8y2>h3ge$S_y$}bDag7P>tq?6vCJJ4EQOVo`4R_~`3Ig$ z7oqMTg2KXdjE#ldj|~j4Okb*h{r1VlDIV-n@HKsG*!=gwwR$s&m<7GH=HTqjov(Ow zs>Ju=Kp};&PXGS05cdGC2ua77)Z*YH5ho27$_hnvaBffWY{+7w0XJ( q=BJ3!B-`)kA=28?|tN?(S0hf?FtjRp8HRyYGYDE@;LXy2Tz3on|pJdS9=px zg-QY$FJF+gqbsSP$u%hh92BK7Mmig{Q2a4lcw49xs2ZHB@ 8Ge #B&w}xnU z99GABRt)6lL4l*k;dkH8{h=-Y>>{R9%xrd%TSp($llk~YMmXe;nwaL^ag~Y*oN&Lj zvXlG8F2^Q0*Up=aWv@cC0%?O@?Pkvn5zps~OcG%Vu+p`AIjbX9Lu k|f!LkiA0o3jg!c^E=-6fBfFxe>k4!c+#WWeP7r2`hGv3 z^K*{W*RLN21fUQ|Nlp%~sHHq~^k@cdk_AJ{6#+tzf?5i#9zt<#Wo5lm$flSo>+PR@ z8{_udPfJTnPk(Ov4O{uM6RuCD3YWFNr*F}wtx!-n?t7i{CF8$0_b%g_7N)qlI#Mib zELZI|dtPt|tYKbjK9Em!kbI-M#z{z|WT-xlG>>fmd7e|s*#n($QWA&~;H3YqSGzt` zpb0Zea1BuIOA=c=ctHzUF)NSbk^oyXO5VB9NoH5xZDs#-uL0vRw#(Y4v6(YA`rk7Y zHz#s3>0rNy>Ex@tydR@u`Lf#pu2V`f_<1*uT%}j)nH6QM$lx8d71s(4sSx*Y-vn+@ z;1LHo-@Y6P<4r)*`D0&)-hZ2WRw$o@s^o=wGWv^Wk&))v+Wl8;*;^rODw6L((`Yd| z7-v~{>DH3k2h&s)tEpVl$=laY7b-sAa1xXznD(Khg9DhPH&H%*yD1XPDXv<2X1w$$ zJq49dS;g%w>!|E~Lz|Vyso_73p8FCfpkJ(xf3bea;6xpaeh}RT;0BK_GRi+!=954C z$!C0an=T2ih!~7Rp@g9j4*4koV)UE^qm@+k9VC$8A(QI2xq8EU)iaJeN(Jx{Toj-{ z(DGC7d`-FjTjM!{%}o|*P3?cJA13B+Vg&O^#TU9>f${=w15nCChaUEdL2hMVIJvYT z)<5vkQTT&pYa@XuBMG90SaWy^WfQjY*v?dpeY#lVBEwk8RgiLQ+jcVtdwQz6xk#i$ zRQMxeO6c%qpiktulb9<61W6aIV<|jH8y7~MM;{5Nx9H$NynGp+nwa__Tyg#+d3KLj z8qN&35Hg>{Q(gczd0^c3XP=qKpQ{*SZip244_AiX8S$-aguvl?)qFfZp EdbC^p47opFbZj9>RW)AB%--9ew4VhCDLQhG95b zLLb&VI{P(TSE-QIv*5JI!LUnMsBDd*&8aiy^1V3>LYjrWxgXrbZtNkBjG=+VIup{1 zhW%rz?lP-|mF~qGpA$-C=?oRic%~P76@(#~F&mBMup1FbEuwpW^TNuCep&o}ryHh% zYI=9C{%PD9OJ&VCXp?_yPMo-)XH^Px`NAY?>1bs^R~gG`w|o>3kgLf{ `Qz0_`+Fk-+HrbARZKDjfnScY}BptH6AOOzaj4G zz+?MABHRCkdsj2gPI`W=up9##L?Eo7-69_eZWQ46A7iLSFazvL-D;%fi%=F|1{h{_ z`*a%&PZz|XawG (iiqcV7j4*L!z`#yvD1g1C49+6yBJvfnkcW$J^Vo85FBx{+EBpOG2lU z|Fd Zw^LDt68fLmPEph}sInlg zSwb3maL7vK_wR0?Zf&>%Gv9<8AoZbE04>k+T|2m(&!VHHq5I6ZfyObtXzDA<0AP S;^VW8p*(U1-b|noP$Z`7 xd<=?4 z=(!mH=!1mY-#v%n-vII1fD;2J0-Ev94;&^_GpO{I^LQhX)-f3609*zi^D;=GyLM$l zP=a1`wADC93X!r!xp8O`Nwve;+x;CSnSJA!(Y+D^-Rm&PCP~6GrF5a3A9%C8+i_4I zF(0SLugBu!x4a<|3H+rTY6K@-Yp9R3i|!m%Za_ X$q7_moHr^f-g0H(H|LjJi+F~X*QmPP?(Ji=|xqR(}4nz zM18Yrj+be|vT#T%KG+~Ddn;GXn@ex-i~*Cr!mt--PHsD gl-&FAa_+SVrzh `XV~y+oJD$1l|ap zZQkqCEffb+B;s5!H;I^=hC_C`MpCP`o*pF$6!EE(&S35$nj|YT(^g#XN;29(aYlc@ zvtOMZt^mvixTv0d`RDzX(dwESmZR5@$QwF8j;YLhK*y^9#cUXJ;r3R4&L#zY_U?nM z=huPfckhHJBQKqz0f0wFf_W6zk%UQLk$p#Nrg4QfkTN!tAiTi)t2ErDgT`K_J`a?v zEi;Sxd_+B97n4%3ah-c;^@H)R@4UIb*4GvL=zXM;Z#n6@I`K_rl-_g6e6~n(I%#j8 zQ#5M^&m}}Y1@MRSlAayEZKPopae9bB8T%mKf#FDP6@RG i;KAVzpgO^?m~#D*Gl>dr zkEpb}Mrh!cwC&>edTjIv5~p$+V!bICF6Mtxvq$N;PqNzUftnZ=Iyza^OE@32wcCJE zQ*J2(;97(ciucv=yk0680%iUtjx0z5nVCzVJ4E3IxEe8d(b2G8LhSioUd=0nL5#HH z6i4`Pj|*W4nC*wD1;^g&1hx%O2m2&6_W4y)MA00^e;)K4*QIwZRcU`XW6X2g;ja;{ zl)2fMxNiDLZ2>I@n%FV{CRgKqyLN3PmHfQFIhD?okf5_|JQTEVh_ w^HTP_!7ZG((jc1fS~q8m+0`bIj^zqJ!FPALQI;C%-pk#j%`EjMjuBn4c+j zORQJQ)Ebh|SdX4-5`QE!>6vAYrG57Hfv30gKH-gH*9F#mQne8}KNx-hb97r7H3-g{ zLkdYW&JsNK=r}=7cEz;DF`9b&_BKESV1E&8^a>`26oj1BC&+`t1*8hb7DQvHo{S1* zD#kM~4rkWG0GRdP!e9y{#5ZpaPx4hkI|HCp?>bl5kZ_E7R;#Tz6S2C & (nr%2{19VC>+-6T3W3?e=3bzUf0S=N+Kum=@*$~ zXo9}+e}}6NzOt^%&cpf9WM+q%A3A|OIn#F}>$Q%zsB~NO*yJZ@WT6?jU rKUU*n;D{yq}jP0sYRHf>UiPl9*R<)R61#rT>{PA|KbM$)9$| z$h>FsU34oQHQV~7?i0KXf-a(;uJKY0;2rtBcY)z8qy3I0$DZt9_J@Z`Z(dG?5)yP( zWPX!jUqBffBWzj^8%Fr)!Kabm8*b2L0)%z2;~N6(y$|SqcSWBDA}!!|x_8r6F!#X` zL~Y#htne-k=>qNSr`_kz$jTDA8TVN8bouUoU?p@j?fZqS7@3OaU$&KW-Jlic_Pp{- z_Eg4w8S*Xqw6qfc?b}~Q{=Vk7XM=#oblA1%q4WckQH>+<$cjD~*>k9v{#mYZ^51XN zWX- *CXxjD7Xc|K (~bzc zGAwO`wwxc&QcZ5c;C|3?70(yP*J&4)OWIcq58cLfHGeYVt~%B7^M9-F+a@Y}buXD5 z+nAquEB|iXCE6x8JNkYpgDTKSE|ey!y~aL?@;;%J(ZAOuV$WdT)X4_nYJsU~OusR{ zl=2PREyxje*!&yeC-HUaWx+;5t%5JJ?6$)30&^G&q4r4Vu*}WkUB<9YQNqXD+jsiF z<-;M!8556!+Ynqn3=NUQ#H*8o^29TR>+XfHzd+A3HF?qL>{?vPPf6hw7QV#Wd=wxO z60&4Us*hbrN+TwZ>OB{m>zoY|T>Nd13~G=a`Cll@KSo5GW(IGvda| _n)&~T(OVsr=%4jfgZ2Z_Wy-xw``1}OJ24b;oI*@_bydzVIvCQO!sBO(r~ zG$HAIb#@81L3lN=fYLF8diW4wHCHja);vB>?9w=&us}d5rPxx2 ixA` z4|cjLZTU28vCOgyfI4H`jxTr+UlI6e-)=z&Mo6GTprOO~3wz2-kc#?k2%;Kjw$P#A zjq_IZ4DJ~5hSZmXlT!*OT8|QAWHruc2k65sQMLn~W$+uoq+Y|SQF;4uUHI5&T)Ol{ zXT8lb%+^MlofO=`Q6?%yi8pn1v5?^5i((_ob=h9)$z9a-gdV97wJUHSeO=umT##SC zeqp4W(f1K-KtyX~!{9aZS!$CR)G$_}7Hu49;d7XP)(cC)NgY3evB2-n;$`5inB&vU z1K0Y~7koYq#_Zrw04RnfHtZl5z)El$>D4sC*cy-wChV)#R&J+NFPWMS6RC@1TD@>0 z1o0V H4x{*!wmU-3E}gl*ft0zvo^37p0I>>eu1 zy;YeB-&1fXR9D>w$2n~D{QQ>HC3_*#-|p!)_X#U_q(W)eZ-Y5crp9T%&xzQ %o{)u^S|1xX<@k;U@X&<;x6SXNZn5wXi@q+n9X~GSIua z3}`$7N1|Kv^!Db{%Iw3e4CJqMP+DDm&(57k9maJrF(a4J*Y5=E@@a*=FP`W;0o?3v z$itbA=J*U4W=O$a{s#z@u8dg`f`6xYJ~Y5vS#0u%K@d*(7jF}k3i ZqMU=XP?@*L{t_78b#WBbA{#8$=9#3V_Q_f&}%TKCb{+lt^?IYqP WeiiN9@V0i#b@6x&QtV=m~ZGcj}vg8jH@@JPgCkJQ@~!5#|^FAcI0i4 z&@}zEZ%kUOt2?R69KBa`#;eK955}e{lJbLt3hjUq+a;PIJUSq~idDk#WY1QxkfD2B z01Z%0yl_LT<(*zX!is=W>$=pA7mokM1+cT5Mf3=}`EO gzbaQhjy?uLO9ayBz;H?sP3?t#!N|q3!s;GQNEGbcrgDUctS5f`&X;CVhFrli< zsrO9+)Awjb1cOcq41H1>zpP4J#j@^!6DOMgq`!-Jvn3$n6$|~*1J@^e{Bk>&E;4A) z%!P*XwdPKYjEQ&8I`JGnjFS;=u|R{TV4S0*q=YOvnn#j^QKj^OZ9gFZvbOkPK93H0 z;ztHMAT2mefSniQQ)l NDNmjIIB0h#AO402^|&Q>Sj# zU{tjV0!3dcc?U7G!TSWJh_J=Jqj+ygLcCStj8ykO&|r#>7QocLX0J-(G^CQ)5a# P z_y1c@igsQxBYpaGn5{PUZaQ@JID%wJ$S#k!LE3Vr2~?3Tx{Og_k{!`YBn*IeBk34b@F=p$zKWX8rp0 zYI $#jDeJqU%V$&xElr2JG>5zrr=wPMf_t9`#-2(cuU5 z*-MG-lLSHWi*~}2LF1S`*~zm^Pji_})^{zFQWl=|f@-u+To*D$9IqWx+!Krc$eL1c zul-t1`#$Ra))OJm#3n}~esPYs#aC~3m( *CFS#m