From 8454cc95f5d8ed816ba7552b5e43fb39da792cca Mon Sep 17 00:00:00 2001 From: Pierre Gironde Date: Thu, 23 Apr 2026 23:00:01 +0200 Subject: [PATCH] improved error feedback and fix completion issue --- vscode-appdaemon/package.json | 4 ++++ vscode-appdaemon/src/entityProvider.ts | 9 +++++++-- vscode-appdaemon/src/extension.ts | 13 ++++++++++++- vscode-appdaemon/src/statusBar.ts | 4 +++- vscode-appdaemon/vscode-appdaemon-0.1.0.vsix | Bin 25936 -> 26238 bytes 5 files changed, 26 insertions(+), 4 deletions(-) diff --git a/vscode-appdaemon/package.json b/vscode-appdaemon/package.json index f45feec..6460e94 100644 --- a/vscode-appdaemon/package.json +++ b/vscode-appdaemon/package.json @@ -86,6 +86,10 @@ "title": "AppDaemon: Refresh Entity List", "icon": "$(sync)" }, + { + "command": "appdaemon.handleErrors", + "title": "AppDaemon: Handle Errors" + }, { "command": "appdaemon.clearErrors", "title": "AppDaemon: Clear Error Diagnostics" diff --git a/vscode-appdaemon/src/entityProvider.ts b/vscode-appdaemon/src/entityProvider.ts index 4be2b36..c752c3d 100644 --- a/vscode-appdaemon/src/entityProvider.ts +++ b/vscode-appdaemon/src/entityProvider.ts @@ -37,7 +37,10 @@ export class EntityCompletionProvider implements vscode.CompletionItemProvider { const domain = dotMatch[1]; const partial = dotMatch[2]; if (this.cachedDomains.has(domain)) { - const items = this.buildDomainItems(entities, domain, partial); + // Range covers "domain.partial" so the full entity_id replaces it + const replaceStart = position.translate(0, -(domain.length + 1 + partial.length)); + const replaceRange = new vscode.Range(replaceStart, position); + const items = this.buildDomainItems(entities, domain, partial, replaceRange); if (items.length > 0) { return new vscode.CompletionList(items, false); } @@ -80,7 +83,8 @@ export class EntityCompletionProvider implements vscode.CompletionItemProvider { private buildDomainItems( entities: HAEntity[], domain: string, - partial: string + partial: string, + replaceRange: vscode.Range ): vscode.CompletionItem[] { const items: vscode.CompletionItem[] = []; const prefix = `${domain}.`; @@ -105,6 +109,7 @@ export class EntityCompletionProvider implements vscode.CompletionItemProvider { item.documentation = new vscode.MarkdownString(formatEntityMarkdown(entity)); item.filterText = entity.entity_id; item.sortText = entity.entity_id; + item.range = replaceRange; items.push(item); } return items; diff --git a/vscode-appdaemon/src/extension.ts b/vscode-appdaemon/src/extension.ts index 2c585d7..5002c71 100644 --- a/vscode-appdaemon/src/extension.ts +++ b/vscode-appdaemon/src/extension.ts @@ -285,7 +285,18 @@ export async function activate(context: vscode.ExtensionContext) { vscode.commands.registerCommand('appdaemon.showErrors', () => { errorViewer.show(); }), - + vscode.commands.registerCommand('appdaemon.handleErrors', async () => { + const pick = await vscode.window.showErrorMessage( + 'AppDaemon errors detected', + 'Show log', + 'Clear' + ); + if (pick === 'Show log') { + errorViewer.show(); + } else if (pick === 'Clear') { + errorViewer.clearDiagnostics(); + } + }), vscode.commands.registerCommand('appdaemon.refreshEntities', async () => { const entities = await haClient.fetchEntities(); vscode.window.showInformationMessage(`AppDaemon: ${entities.length} entities loaded`); diff --git a/vscode-appdaemon/src/statusBar.ts b/vscode-appdaemon/src/statusBar.ts index 24311c6..693f740 100644 --- a/vscode-appdaemon/src/statusBar.ts +++ b/vscode-appdaemon/src/statusBar.ts @@ -78,11 +78,13 @@ export class StatusBarManager { if (count > 0) { this.errorItem.text = `$(warning) AD Errors (${count})`; this.errorItem.backgroundColor = new vscode.ThemeColor('statusBarItem.errorBackground'); - this.errorItem.tooltip = `${count} error(s) in AppDaemon log — click to view`; + this.errorItem.tooltip = `${count} error(s) — click to show or clear`; + this.errorItem.command = 'appdaemon.handleErrors'; } else { this.errorItem.text = '$(check) AD Errors'; this.errorItem.backgroundColor = undefined; this.errorItem.tooltip = 'No AppDaemon errors — click to view log'; + this.errorItem.command = 'appdaemon.showErrors'; } } diff --git a/vscode-appdaemon/vscode-appdaemon-0.1.0.vsix b/vscode-appdaemon/vscode-appdaemon-0.1.0.vsix index e40e917dc60527f9af22e3d30f0c2d28f0f120a0..b233536fbe80ff531a0a68024a8ae35ae01457db 100644 GIT binary patch delta 14723 zcmZv@b9`pavMBt-wr$%^Cbn%m6I)Mg+nG#k+qUgw;!HHLb7#NjyXWqG&e!X&RlllU z)xEmdRdW*{pHm=MO0rBH_jRq06|1{H8(|5eUjt5I?i=P95Y@et&s4`gkr5TJE&NA2Y!FBW{xz)lnXhyrIh(fzK95K`zDh`ix=Ff0kY zT{$SBJo$DgSd8mIh0H>5X=gF_wCr6S&G^mvN|Yc(FB@RVo@sP(P}^YO7bLh&%KCJE zq4CmQw8yp7K~cYZ#%_i#Il=pm;K|-y!h&LsNZ%jS8e0(4RGY{xcJUuD z#mrYbX*s?!~b} zQC&T~!YZaa@v<2|Iq^#S5OyB?bZ#{DYV}F zVD=A|ISJTIG-cha}8nVMV_{Dk<=WBAshh1Z%q3Q7o!RT7vP zV20o35l_kOU?#pVX8>~qV>E(j1;?eTkXN@?3_$3ol6d<#SI?%owm z%?k8!*yKk2>dg;wif%sSmC5QZby+9g#9TATw`%OvT9X)%a;?%y>mol|O2=M9s?T>6 z8lS!)QAR4Y_wEBpm(AuT4Zr&}^&Y0i+ioN#MHt@T@@yo{!@~#1Q<&sORH~d~kVN)t z+?sxjYZv()-sVoQy`5xdGdi9=B`}XV;b`ozpNz#VukH9tHXkkpXQyHnxbo*6wqfDt&3qNaudV zP>uT+M)2`6Fngz)(-?9#Sp24FSyTFh??vpn^qb;d&b({iT4YvRe6Br)%9DEmfB>=7qouk8lWrb3zNjeGrqQ3Jq0e5 z34Y_<4O>ylxQL_Ssgcqnk>QPO@H$%I*>*$po|J6uI(0@ep=8X^)=6cjfm+4BQeFvl z_bLjb=HzQkXsIdbgTHSz*=*s#o8{-uk=S&zIA%##nbk1D=5}xP4>JwPMKOV?19LJn zA#pvnl5mrjClN(nNzXN^aj-{9p7}$}4M1q3FJd-R4t@duDgrLN5mO@+O&0!iM-r8#!Fw3 zWrL_V!K|p5b>|!dZUyTmjFy49fs&(p;%Fqw9lE%;!t1)Ya2oBlDJ9TfPb}du5i0fL zv~!x@7b|TO`nD`;Qp-v+t;dgKUC&b)6BM&VNfR?O!l_Gf#*EYS28J-@ zLUq`hH#L(5qsdCD)!wl?1Y^F2rCEgo>CMfRb-Bul7Qd>jJfZKNh8l`i3k?*XFENi} z2ubN}a6<(DEl=2ZR0U|(4o=$J$B15W>wgwWoTH*3I^Jd~o0xV;6T0&-4v^_`_N@D% zH^P3FAmsm+`^|6?M#Msl+KL(`7eMsDhnkFDx4~RN13gq*4qtk@C9-N1C%Ut9I)JyZ z4UGLWy54pY5Bkv6`{v>6-K6Q#aisp#m|CR9Lo0@uzmx?kZwZ8VfkCnfp{~LyUSsss zi89pef4&uvXTli+aYT_e&B1%zO zE=4ThleiO`Y;RUI+9OD#*E^DjSNtozeM4n1|P z_#Gl(ry&oAaWM&z$0PVkpH_F8Zx?ZliK^D{tY->Vt)>mQhZ8F&g4|CXZsUYC=hm&J zp&U_^W6*%LA-j!{ONHPfCmWviol#@wj}bF!yu+TP!`fwxLs+M&uLhCL5K|>iS{=Y< z&8av-`%*^wd%rG|Dg}ocJ3q2p=d{&_T~m6wXA=1XKl{MDf3;Dc)81y*r!M(GKIGxH zj6%W3BDETD{X2CLVC!&|KUwLnr($x$W)Mpz89}$^VYBO`t#Vra`?hNMGH3RA0+-`? zZ%_W^S@p@a-ZY+HIt0wqh5go$@D)`CFVM9*vnKd1Nh;Sgcjvo!gY^9Ha&GNaJ-fD2 zfITtt*wAc!j<=2$-A~i45$hRFuc_PCO<1Z&Ol5H(TM30WJ>oBRxm##&*-l*#^#WH* zjE>6fdd=0UU4>G>0aX=`zwR6R{v4jb1S@UnN|Ym_0(!ydu* zb(#ZUyZ2KOx8g5w$A$YVH>B3N=$OgN^7gaQEis#TF&0{s|M%&(vW7oJC6DZ5lbiLHnZE4 z7)e-B#Y4WvIXWg-yqPk6q01X@qTfZoFw=cCiMvaXF~Q?k8Tn}Y+RhZ5k4QQ@!b%K) z+uFlkuC}qRL(}#3`bOO^!ZYpP@5A?*GHvUG4+6i7?>3ITDir#mK&8h%cBKQ1hf zR=SNpvo_I1L}a>HzO=bTAyFSNqHDfy(;r~4Yfv5?DyO{^+H;gow9^A~kHeG)th&EM z>~ZDNZnU#5mqAIuwU%?Ww*I{$j974(wp5JqHXKFUz|)R1p79^~XSOV9Kf zbI<}7Lc@GCDfoo$C&{g5ch3U?_{9bdU8i!G*6Fw!Gz(xZf$-w2p0`NCnzi|@chP7o z6s>L;sd^xB?aDRx0@_E@f9$}ar18_ii|>fL0ZzTrLxmbFuS#>i6Kqw*B>m!x-%1^9 zf1abPnXn96tAg~i9kjk>O&XCI!%AMX8V);4S% zs=1_m0kX+s4)T!(9c?={XVKg5Gw|5osNTpL;uKRtu288aD|p{51Y@yX7C-5f`@}Nw zO&dBtJC`gm`vuG*y|&dV)a=c_2@w41rIOh`Z>m)zN~f|$?ci`Bs6o|A zK&pF;TU=elL;C)Hmt08_Xdb z-seD+ZE=l&j}?-O>i}jZ-;OGlzI|%66$Q?P$%LNCgmZ7enPJm47Z@Zm6vY#w>ybPEC~@o0g;Eq zdEHBMNP)+tgg)yF)e&>SBR{KNAl+EvX6iw<7eIw6Koj(e2b5dngY4eT>O`Gj!al&K zP#}=4mO5-Y_VKexKa1$1trC4HxjEN^HRhYxj+08tIMo1>HhS@-ENQLPtyh?*VcNFV zrR%!1wceu82rX<1LCkiy`D0Qv_9mTgpSH?g#3}smvQj|~O%zR;#FAE-^*?o-kHF4}@NXH${+v-M5;l~T3#&C?vj zHm^NTGKLr2=qyE5ZQ17vv`AHA@0~9mAV}ESFAi!C2oJ*Dxfu9y4a-U_vkB4DUZ$`D z4Yn(G`7}z-l@9e01MFAos7#jagC{;*mAGR&(W<(Qnm75@onj?xg4}niCU8@e2!mes zp-a|mJ-Gu8jqH6go3*t7=>ekqr4uHmX?2_GPpO6O$8~qKMGhAUjGxOB3tyLEocw9` zj_!dfPf(sfe!L69aZ`Wk{*E?>J|lKos6okq+PG}Kj;%Sj?J&O2Ld$z>)YB5nSzRsM z#Apvo2H^ToKE|QL>{M}tBv52ee@v)-BHsTg=WGQRti^J;y-eC_GF2xs-Hbo%)q)A2 zBkqe+HaRy5IoekQQjb$Q;=-BRR$@dmF`080nz&@#{NT=AYeu;yhGaRy5B?=sMD@{E zN;YS|n<|5YFcrjMJ7$8fX!_GkYEK<`GIxriTqv7U#@${a*iK;Tr)W!CLag>8l~!>v z!xTf=PNQ5mYyCh>S@fi$u{tGGl;BZXg~Qnet5bNtcu(gZ&<=jsFX)$+=z#VdAS!U0 zHoBqSuf*{uwSQeVhC{U7Jk|o;=H0gHGp{FzFNPz>p6&L@!RgIz@ch03dNp=}qT9jb z>d)mk0+o6EFl`=ACXm?}sa=dbBwLlBW)yh?>zBB}gQd_`-J?J3)**6!SsjDQMqkhc zR$3$Gw@*S!_e0($flwP;$1p#a^Cjl zgFc$mE+n3@e<{@bcDg)FlE#0td*US+wHzcTXZZ;o2Dm)eo4#Ka=#$UiC!|+&?tCWh zN1}0lWf`~Lk^;w!{@57~+NK646FGLG=5k-Lw^pdB8OTu{?}=WdR**DH_jJaGyIs}< z?+qU5QuP1K^c>~7)}jUj3Wz>NaM3R)jqpEs=F7dAfdUo%oO>nq(2ydzyky)xJfssP z?66DeZ(-sR#^Zv%@sd)CV6$XM$`S4sQ}N7dFc%2^~%%6GpBt}Q&=n${5d{#^`rU7}Yts+FB)Z$E9S8o)b$7mbSK z>=9j;*65k_M=wtr=xKGQCjVF7-G6B>MTG1Y*RIL+z1loYKu56cTBkXjrof098rL$k zZc@WCF?!gbiRPgpSyEXw)gh+ZwTwG6w&$4BW2^4lVTZ6wr#u8yFT4jG3lA(L;u~tD z8U58-)&>Z(mH8Gc%+O|dh0BH(Ehe@TWa%vA7-32~H%HIFOhaC<_=@R-$sCyPeou%P zn6s~p($VC9^b0Q1hW3yBPzT4737%iW@(UWP+Fcbxb4kYP{=LM2dtqkgXkjw+h|pznM=$|4J8 zcnfiw2_h=m5!Y5b;0#o>T3XnXIAiCWaay**ekA@S^4BQ|*!EdJ)wEK#cSx}t?lAH0R_MsM1W^r2A! zFp3Sp{Gtb!X<^W`m_JCCpotXq_udYRc}@{3;cXj{P7|@pzHy7Ra&Dv5pivU+5LOV7 zJvegZ@S{7ALfvp354E!IC*v!IwTxUJ{krupR-3hwi4WFnH=r^&r4TLyhNgT16l&$sLrv1^X5%Gh{d0Su)|wQ`9i^nmyuMBUFfE~N+_&d4!1d+2>8^TEacLsW zMJXksXBo`4e+&tPHp$4200`eG1ejV1=4il>AJ+1g1DW>3$rjDD9649E2)yCu&XyjK zEc+0=J19UGpO#6KSE@qggZV^Nq}DY)%Gx4;FWOSz@K^z{M?HRWNH{tX$D7*JLR|$GfOA6;6+Kup zo@(sKrJ0Ppl@E6_1|x+Js!c1D5y1L@f>{+wl$WA)AR&+bHsi*) zxtq?)RRY<_oQ*Y~Lk_zH3k}{&P<%XnBW(J8rY?Bqevdg6mNjm1BP&WZEr1YczYY@; zKQe;&W_8Gh-se1M?OlUX?lwjYjs8F3Ho2(0iUQuPQ2TN)PGketwpaR?qPAvz+jh{(1MAu?_X$2U)_OwtUQkx&}- znC4u^0(?UzIA+AB@nnfZ4n}C8T;1!rD*i3Nnux`t2DQ=JPhQ{5!Vqoj^-u>Y0L06+ z*0Lgmx%WyJ-}{m-f}$V9rm{AY%@Bb%<}?6VvhGm|+`{(ZBiOA=A@nz~)zS_CW9KdC zsL_2I%uc<&4wK6RH(}f-KvfHL+|Y$u8L7<3;LR?G+V(EP-?BWY7P*3j7bXKP8it z*4FVo*VI)pY+p}6^&{oJ@^1}bV^n+R5b`~AMPjwFCgU!xuUfT8`=$Jl5c2dBm`sei z8poIv9I{u80rzQv3|a8Nj(EFhZ1w#GYNm?n?&$W`kOKneS(+gMoQaP@}7RD2UV`F!gHOLD7pSMYrA$MR*1J z9FXMkV4D=`f+zUjgd~PJ0vDg2yg->d_b$BAhE5-rJZJL_YeNozIf_~vfugadZqV({ zNVY@r{p9bPWMB{Ak~c2Sj~6+6Ycf9bW!VNCS97{J*;iD)${2F#JR6*mXl-rVbMV;;s#+X|DbUhc^qlowN%l}$Sm)e=!i5zi zrB?IMY$Y_LyQVO1L`!)J zNSqn{?f@+Aq^Y!vw7pu_=UtUlVhgeLl4v3<9z5NcC9g|LplEAo6rP_zaH*)DMp^C2 znK8cg{w0@^*Eaa`N1Q392~VMSvrj{fW<$n)T5_*u35gr9aDjRZSgBUg#O-nag^D!$ z!)<#$WRWd4BK_9&HzeW$T9;y&ZNKM`*{3gyKBk8V)@Y0^O z(-faMdse3N#xN_@QJ54{bPb;lq zaYDn@>+!_W^S+U@HinGq24Wz`zpUgXr(od>&-q?T2~L#?msW=ikIF|<+;kNQ*f-&- z4p)X!DG_i&oH99HqOgv=cAWE-S(11#q*Gf~K1zc_^6#BUVq7T}Zc-#KEjk)2 zb}Jls+xkPp6~0=Hy4QgfaOanni(VSd^Qh9CmF+Ezn4ILf)tma#i%xU(xMVF;AyC`#i$bFu^oyokr?jxsGStwL_O2QUH@h^q?0+j|@7CWH6Zi)ZQ?JM0h-S zs>-j)$>p%}CLfV!FGoG)?6T~@aL5EjDuX&|_j`UltQ39?VXgE7K79*mY5|RVapNJi1 z@pVQOFvMWaki#0hw^`K>oG&(iPzOlL0s|hr_T~jHc7z{FU*k2^WysEdyoS>p4u6iq7O9;=&i}lazc;lNWqM9Y^dm7zN!a=g+<((> z1QbR3?ZR#qgoxATq>4OdMXD{xu1X*S{N+ z{dls5IK|FG)3|D&S2JblAy-;GJTOq8+46J`_RcByz?uc*ko$)8BB4s$S#YoD8ly7^ zXUiB20k_4}=qpXx@fd}%NQaE&Bx%HExzWEbAt{83LZ_RzKA9f*t%KVGN46wp+kT$+ z`?q-0JqK3Nu2-8iO%}cHMalZOs~MBQ`lX5-Us|jf)9-nPf6Wf0ugtz`;Z?5Wjt)?( zR5b)DOIa&f;7gnk7@02_B5G_WFoe6LUVp22`?@{u_1^FHt({Zp)U2*Blxv}siPB+1 zL}=#mEjVNnyCFqdN6})VFABLRAoj5zWvlgq#K)So7b=yzXb0=A3+t z^(>8ZT*7-T%iXC#P@=S7#)JG-`=XkbPodh2qa1$Zb)g}xZtg#pggMpDDQBl_bG{O4 zy?rW{AiF<)QTsBpE^ZQVJ?WM6>31{ayFOZt#B&ex=TN&P#irnzgB3%%L&Q1u0|OUk zz1&mj+)^!zwez;K|8(Qw(I^;CdUQIwi<2Hn8OXeF{MGK<% z_(#^ge5v@uNDLPwy&eryI-!mmYFE7x30t_aCVSJ3dI&H^3Vg)TTomc`%d*-Y*WC&PHLQ5buh-1H$&2ASp;ZRB$%V@3Z6mbw;Cpl&&Nd`yFMwFtb027TlU= z4N!KeqGIs?W9+Qm`W=qq2*jek zA(!4)Zicz^qP*I)K!ywrSxRhA+x7z|E%=^i}XD0~G*W`TtH5!ZC1Sbr5rj!n; zdRE8Ioq-90b^IWbRS@<5~z-6 zT~YfEV}Q0d4`-40{X;-7coW-l%4q+@PV zWddsWD_D8OwS77ESUpWC*T%7ym_1#JiQ@@8r`NgD8OQEPV5TA@s5@Mz9`|JKW3vuN z^99C*oIIiXyK8mh@8NY4t7um7kmNcwoqObIpttR9IK^ zx`I1U6YcRoKMZ*ZTBR33{CNlojYt%=i4`_X+^b)_tQBrUN8ATNTJWS2w?4QLAuNcW zNW91>;GAhif$}iyW$i*wlC_|D3@DOV$=;cgG~W+HL;?Ep%W)?&-3l1!YF2{R+VQ$#@~v6W)2@;M0t z+AWiIfmxXyVeb|0m9{PF(JaMm{<6n6gevywm)}Kkec*_ zD#z9xU=C6c4scNtI(YJnT#vt!+`MTy5uzItxXpLOp0I=weN!Mv6hSEwyur^q4lt<4 zo-78=;VUn{b}Za(@P&ek2J|bXhR?s#mhd^r05$F{yFR|pLhzG!HTaDn*5*4y9({v4 z^oAB*?lWMmexztW?On<0spe&=k15|_%uKCzYwDQ3(`#b38B6K7=Xa8?*Xur{;h&^SZ30oa=&V zv(M>|6VfU${u^c*=GLSBQEvFGzzQ7P12!CnBM=Njgdf8W1@T>_fe^8q@^|iXQwzZp zfqmnu#k;JzMN@`xMoIl z08eqj=obr7_^Vlks^HF>JyGw%9FE+}v&%YwmyrZo_K!|>?(yADh*FqU*g?D|8}K;C ziNUFmk37OmYpv{yXbm(qRMVTW5kvah-1-5G;GPN^k-^4FZl#THWRg>{%3j4xu@%KY z0N(@tPJhf3D#=+d`MKmFtD=MFDVN=*NKi(b68^qA1xj)r;vprkalM56tAHd2588Bo zApBz8C8TT*I}{orlzcZ^TY;bP2JpJ(_;~6aK9w86TGW7&J=Id`{T*G@hH` zTv4N94frEMelg`-DZlplDOIR919tHBm-(W}LbsOPn{FAKx*O32#3s!K^Z=~S6VGqA z<Ym$y9SK91P zDB*bNt)tyPn8AeyrJAO7P}P$f@QNTGk$naP#^Z`Ul^QP0zK48k@caUH@#QT{Qb3f0 z!>K#8H4=jg`oTg_MD>_h4=vEd^r^B@?(d7v&HfO7+TY~5*)i}dDS)MiFbLurUsPhr z1A6-c#sSCA9(#k+hJJ+GhCDQpy!Zae^ zx(<}I&qe#6F{jLI0p#yOaL-Ao6Bj{#05e6)2E287o^5iz#rn6mC(*+7v*af5|J8S!7VU$WOfs{aBdgI> z4Ld*3h9M$de6{;3z<;O;2-V)7o?>RT#>7zIV4VjKq(5ZX{ERJGLNqAXq1&Il2O@bh zDEG7&P=RpY&oudpqS7|M>iCFuv77Sq_hNHGqcQd^F10J@q%3CZWsHMs>gijuXP}&6 z!;7GfQu;7!Msib;Mp*NzH%9ZKO;nD_ke(l@e>DEU1o^oszOW%FTsWh#-c2Zl?OJzSr<(+ox>;u`%(KP}+%os+k*wD*JO}TuodV ztbKCiIX(3!Gq71(%~cLicB zR}{h#>P{u?iq4i*;XF%WqkM3%iy@CITRZxIYGIL*UDWr@s#_s+@29`G5XMJ^Gb-20 z&7QFF#jj#(u5!7fG;sKuv%H?i$31~qo=Bq{^U)B>j4bj=GgWaiD zS~2!`O-HrpgADmaaCxXwS6~p%jVo|>Jiv|2Gm0EWnv8u#5=eTWJ-x6?Tj{hA)Y%q@ zMn3I}P4pXZ#NeDW8fC821c2}f2AjIXJ&a)z=!K{?4p`+cU`|Wgx2@n!U8`!t^3506 z1k^UyW9+ORAP8eN5Zvt0{vzEB9d-YMsI{xEUf2l(F07k;MTj#pHi+VM{|oU&e@5=O=jk-D`371Lmm~)Qf_R7k$j?@}_ z7$qzjN#W5Om3@j+X>JoU#RfPXK^%G9;zA_?D1QkBueKre1ey$?K)3w3S$)261)M_2 zv$|Cm%wMIvK29w{YFS2)EYrz1N%lB*WA{!yjrsfRU2dp-UzJz#TNj?dQK&R@AB!Bv zh<(7GV}11nhe8l%vQ3-KDK-EC{CfMHpwm0K7zF6R-i{v4=xJXTc=+8NVoWPH$t%5k z=w}i{9ev9PfZg(mx|?*ClbnY|jX0PRl(~bJOZW|->1E4pK1Ezx#U58Kl8UvRMBOEd z0~xX()fEqYn_M6J+pbI7bAJqyk(6QH-=2h!N9c2Y=fq_!5v6%7`HBy`sGaKY{bE@y zbdyOpH+^%FK(krt?s0w7sUs&HR*cY0b=|$5(8HB|1qv{yKIi0YL4Bj5k`J+Z6$Pk& zIax{CT|aM|#g&nzC>xYrU-lSd?hl6<)Vn*Hv}1VkNm6-sa!Jfi^j<_1Y24=W*`d2$ zJEWJod8OO0D-t7RTY&lM_jW*qvrw3Hp5#grc4Cy7bcf&Vg0IICZ}Qjh=uD(3$P zll1`qHVBhLplE?FI+ac4s;jqW7vK{ch|TK7^VUS9VkBMUDIxC6m%Z1%3Kv7t&_`CmWGyLhD0YhWRrl;XF=F+VLat$|-wUd80EA zNGJDA7`2iNg$YA5ipL?JNh?lm_nMW&IeSxQ_%~qh^=Lp4WN7>+i=b_=XS)Fq%C5!m zegglVZe~Lnl$J!1dQ|g%eD&k42=^cX5PqC~wK|kODY!1#{xATFC6Y>G@GeBUJCPRB zp0W%P`7@5@kVqYp>kWzVFDy&HfF344s684o@?@g3 zQk2ssWrH3fv1r;?IFS51$LPQ1sJWmlpA527=Wq z?$Kg`^ULP1C#P7D5nR6=S1np$cEOjYL77ORv$m4%2D<14@DsE`6mOnbcCK4BF=`vR zH0@STT*UI$nZ}X^0o0SHn#;fU>V*Ys;7;cnzifeY6%4o+`6QoHdzwBMSaEdy)Pvm86wUUrcO=4tTSNEmj5=9}uK3+(mfiZtd}J|2^kVR_N5 zBLHs!nx1i@Ui$-HxL6Mpe>lg=l4G-Q4K6PHYGmTN>BzSG8~yx*>_+)6`qGW2CdXlf zYJA{a8`FogDW*kE4W61QZWAXJ%Wtk$tPVE>W`sh<5o;xa8BqoY(f8SU z7?!A!Z$Zr5Xw{<#ga&1)4Dr0csS)7g*I9s`r-I_~B$`n7j97{;`^FP5)_UW0G^x%E zJ?yT!Zi+gTWf7Hcry!QVAWB8&REd==dzjZbMpC`V7>i#VR%t{qZ-rZ~C-An{ITfDE zh0}sNG&3Sw%)p#v-Zq2q+K2uL;=jNyY7;4!51a^I)#;!~$Ydg* z&w!{&ZEfNP9|+wA&;h%TJD5>}D@hK$LpgE1jX|e%RO(RMBy`0ox0aQu#uM*aYWhTO&+(dS!btoq{t3MAXZiTT zrHS#WHxa&Gj#@ZHZhk$?d?@y!Qd3H9k$^x`c41v9COYtlrv(-zzF*VE*0Y)@zt$+| z=tWgERn@pO%K?@ZuCCPXQCUozg@22WD(gA4@Q<%s(s}glIh+2Jlw?&~X^Ym1lGTtQ z+S~GBBZx0PmOI{fIm>QbJ&9lEvow8r?mO9h`C%*s|Ma_a@u@6M%`+mSU1QyfQ6pm@ z#>Ew}VoU&3`xO`j(UqYmm$$TKP_sV$rX<9TpwLHxgpLfWV~wXV*86rps>`vuj&S#q zXf2i7?sT6#w@dX9PVHJ;FkRTOYz9?|Ns)Vn0Xd+v>0^m4S*P>1LqCw}9Z0Sd9!`Zy z{_aGmPS-VDES}!0Nq8Cc@#tFKptV%(s3>ugJgy3(rw)`)=PicP9WGo{g@7N8P)N}z z{|zm8_PKIf&VT^{*Y*7%*gn5}ek~#!pUtnd+>T(|$9oO^bJ@+WQ>>rv0hrq%Uq9zO zMB!3HW2?F(h>&7`I^!T~TYh*QA_jZ-O1`b3A)EroQ87)jcCDHD>*th&TT`L=4C7m> z^t6g+ju?=xXy;cUh2CtQZjJ!iz-0L!-bwNut=zQw{SU02D?($Bc}N{HPrGHVyS;M(?>@}8r^ z5nXz8F>tuUvEMT!x=GmMfgQ|xxethAPFa6e+%k8UIjVVq`#ATT|CP~d_z2s=15p|8A4E+vK{&YP4GZz6q7wo=>DPkcNgV9Inh*0 zW;UVz2kGDS@PB^&MCUIOev%0?@n5a1_wQ%nugmk_qbN|qAo+(eE;__tX9xg5`uoWK L{Y3;O|9bmB*7BPc delta 14355 zcmZv@b9g4t)-L?Sw#|uc+nCt4ZOs$gwrx8T+x8@xWMbR-X8-niuW#@7obErWtFF7c zR#kV^TD9t4pHm=n6ChZMvS8ro001;JKq)9ew*W?@+aDAFs7t^i1g2~|Y%n4B<#qKA zOt?trFBHQ<&@9ywX|Km`JUA^F5%mu?&~Hi`0Y7G7iWS|6?4E?g7(4`b+U}a%Dl}te zWQ!!ni7zPO**Qf{jgwW4=6U63Mu=i>ajr4YxghAVj=_A^GO~+5EXA-dB*$66d8b%r z(=-DWWXE%E%u$r>ffI6uF%z1uS{JK5>Xf`ENRT>r1)gB}lyj3JZTPqMRC&e#5Rl)K zNR0PF;Zf zr#^?r;``hdxt$Zj3hM8fGq~A;a91f&!MM~uzt zAZx%*HLu{B%PZ8lycV5yz@owK421G3;0ccB+tn7S9EgA6BFcP#a6Mh_}f!Sq2%=4YV2H?c|QZ;>9?wP2zS@)GH3IqP9rs% zL!z{PNU8$&q_j(>l#>PI6RNWp{WIP<5u&>~e-$Yh)3vs+gLNJT`EZWfM6qh1uJKa7wYR<`6m+`fz|P8xdQuee}%Yo zSJ!~hnx)SX{64h0ji9DDm-4KlSlabT2sjK-SJEzov%U5B)?=cmW{uG!jV4OXBm|0v zCvTdNcDIrPsOKz$)S4UTuE1}!Ced8fETgAzE&bJ&pwOy{PIv7-0_B%yHD@_w7nAXG zd8sw`5{!@|4CuDFBcODx{b5jMuT$Ne?Kqxov$?_HCIyy)xAo#?Mc?us6EB6bKf--NI&y{UwrSWm+jKQk)zNBI zTWh|xy%8eay4N{QiTdJ)*JWvy_Y>=OF>_!YZ5>#P)ntibMq!oW^@_Lk;L8H`41v9d zNXb$GQ1BjK2Ayk5=VjoJ@r6OXfG!i^9;w~DAO8hwL+f&0ZnBF>gIAeavasi# zyF2rSAL<}4A{yAZYnWa7kyq4EUFh75yu!IGTe-4o_tym82O0wm=f{g1@2|mSL_cm> za{}CcO?7a_#JfX1UuWPgn4&Bc^obU9bSM}A6(9-^0Q~>c@~OA&rDenzToEWpY7%EEduq>ys#0sm-irmc#6E+3ddh#$H2Nt*iYFZ1MT-ufM5qQ*auv{M|o$F<6CsBuYTjB(6u;n-YTMc#QX>aKX0cWspy~b`DK)Ld=M?Gf`Y? zN?f7oR+}*=i^#W%{x`I|StovlNRo_#M28UEE^qlv4$eQ{O1zxhS3gWod^~OL^B0wV zZ@NBDV{@um)+8Ny06e^H$TmGnJ09kxK|t{W@ij1iW6Dsa8x**R)~i@#-1<0 z(B<%leu|7~f2UxuGFN_bx1>vmQT3wfC}a)}fO{jOOJ}q zTe!Ovxz^3wxNNyPb{8VIQGg3ZdcX`~dm_kXlw>Q|IVu_bHwqA%F9Y2+{*?NvR#V{T zUxf?>{YMmw3JMGWfJOM<)5cVl9=Pqi$c6s%N(H}>z*y8#*1_Eh+SamdaHh4d&$(go zL~&Ui6=m~Q##yAy)SSpT&oR$5j{IvZHVM-*RNDIF{m1LfJadn(a=c8v;zKAe9O>?2 znWAFhF>R^@UCsbBAG--Ep#b;?Uh|{h^D9Pon?{~hIcOIcV}I6xRXMf-KTyEm6yWmi zu{$`8xEm(lmqpZP$ri{La~xd4b}L-h=W9vsijR^)Qj4BirrM)ddIdgPuDCkdPN`Yi ze%{n(Iuf4`$pAs2cgvmM-VSF{~ zQ-pK@W1B{^c1IG9$VLQg1Mx*t7%KhqX|SltkM5#KstwJGbTY0;39{TWVj-=5Ffr*f zrKQB}eGmt}`~GkYh@*gRK28gxt!PBXUxXPqS$6tqm%xjEQy6V)@}p-A_Y8qYNjIKr zGz_9z2Ea3YcQ+9`V_#r4Ii;ECR3Jd*t2tZot9dw@0mXl=o{q9B0OEWYt+TBr7RFn6T9EwR)%y znIUczVY$VMOuZ#JDnSU^i1IXzhrD6?1maM=_?1ueE;ntMxUC`A^7i7J5u&o0_eyL} zRo+D{SQ`2_`)n#1ULcZ0{Gro%SAKNmZu1=olkPgv?^&00EUo>;{ZY*J7w#@0)}l<0 zA6-pe9Kivx2q8q`#w!O=Z}%oJ<|&p07=9P*+w{(%}1aycBH0)`@gU@@O$)Z0?Y;h7okTlZAO|;g&dc@#UDK z%vq%{orvF0z=1f|uD~6mzD~4m@xJ-$8|`)OZnqBHP6 z^xoN{k!IR000^HTu&E2ogJ?$nUWhsr|5d&MrqskelS-Z#P4z9fpR>7k{;RKRuvcd{ zq2zGeh@K8=P6-zSCSBf8)mN33^V`9JzZb3KvLse$&wxMbKT2XQI*aW6?c%R+7cQn; z(ADWPOemVtb$vXpH$j#iIunGZ%KWoLLcF5<)QUQYTz}Y0YOP;Eic8vx=vLKeH1JXDnY=0i6~IOTl@+vbxffxVSK=eBF!9FW=HoZ z-Ep0>{SACtlFn-daqwQ(K9lS~wmbt*vU1~G?3606Z_K8hz|`R)J4s$i6Z5JA=d(k7 z8iSS~j14cs^4Rs@X3eDETc%`@ptsc?{oQ<8uP52?3vjvFy zg$L&*wGUV=DprYvb{wSe2mV~jPtHvA{piSv7XN0zlQw!817qu!Wv(`xHca3Q{T<#d zzYU1vY~%9>e;x8WPneOB=|YFE#54)5BWDZFQ}lg6*IUlf*8JkxrDWYn64Rk_Z9Qu$y->hX)V!pmH^A{haRjnF5IX-9h`)ie>EP?Y zqOpW>O2xRebMey%b8k3Qzro$fxC6tJSA){Ci*saVqW65PnBz8w(iYw|&q1Tu%`44l zU4s}Yi$XT%OhJ%=v-=(M)_32~iBgJZ#?>bEgL7*FdgHnoaNT1hsOm+3x_Mpcs?u={y`l;$H&db zNqM2+wH74I_$SoAGz_d^P5}ob0FaCEzcfq}hXO4G*k22+DMX?c`d<%!O*LL1G7~(P z@50H<;rbE@n-lNHE>o}}AxA4%@b|ALYYm&x3FC0?iJ>|fLm?RAYcx^{#%cZ!(nCF+t)Tb>4{Hrf@m zo^xn9eym7vzM7F?@^|&2NM}4TuG$Dj!}=XFYcZOkVqOGazr{gFjiqxNi!GiZb>VK|2>T7WK=%WfPCOdjTbuFdr8 z!^Z7=*jgw+1v8AgUAHKv5b5>JwA@KR*CwAPs}(J=u>T&d`92rsFw(jMbS~v*q8Um| z&qm=ZBnZnky~K<*wqi~oO6PYn3S=f;A!-nlIZk5z$WXROWoRCSrKP+e$dZdQb=|}2 zm*KJ~z7K7(f=inV=Mv)4R9eBt*z8DkcOcniev+1rhD{AqX29Y4qs@u3uXhkUCV}d& z5P#6x_UyFkU(oWEV#=9JWRMI^@LRRAU>7?Bw>e3Ji9`^mIMJ_kR5Je01 zvLs7PJ-Rp4tlt+v>qK6SXTbF!Z9ERM)vIaJ7+Q_6-UkJ+#C&&1W6+xir9vj6PQD4k zM)~zUX1bKme~KmT1NpWzsE_!MZC*y4GQv8PRab(~rUvh1yn8AQP#+F6PI`Nr0+pGz z-j^yJil3WFu(nSEc-sWWJ1j@YQX#V2p?pN`G#QBF?_VLV2`E)G zchj#_*zaA;;W^JPL?8+3kd&jKWK`HjA)*!o1`cZH?t|@Sh8B352V(eppOPkrlrun7Js?yY+z>A9U>Da4UH>aLoY=|Y6F@IM64EuXf*SGn z4dWj*!(LYIw;?0$gCMPVWAS|NT!;|%`PU?VWRjS`WYy4AR7*uTAYt4u@NR9=2nNar zmN@5)DZe_hcx}?xA!p%i(zSKe$Lu5A+STS#mKd6_{7Y8JL@YeRaA@WA-&{i`1~(}m z=lUAQJVyd$_K`x3j!}b<0Jr2&xw>a7!gE4dDv+SDJ)Wm+s@`&hQLCw_$3d#e7Lke; zQt~U{0~$xe;o7YGwBu?awm}t~Ba2jF>gE)gZk`w$R9OT)U1FMcYm=oIMmO-tTYz5b z-SR5joygVq>>yuphh2SbII*~jcBWLI`MI#7sm}yFRXt&l#EeiEl%ksP=n zIhJ7^h>NJSLI@KY@SBmDtv;K(tNm9*6i7LcKk0U5YKc8rqeVxrsfKhUab}3VV^C76 zL$CD-LCZf@j8FZfUMobtXG(f?g-cRZw*hk*n%ACL_cyh#-R({05!rpNEq-8kT*`qk zN^a4NPTLLN$Th-P2AQ*Ba0OC#Xc@Pm24D0a76HpxuH{#kl9Uz?SSWZ9NKrLHiL)wT z`o$1~)=l2cW7{^CW774=BL;8xj|rS)Frv9L5^yyzpYg^GqH*!BmX&+E<%kG1xd-?0 zYFoRaWxL#?!Uq(=Qmxy12fRPV4a}dWAqNq_a4cLg5%J}yPAG7l=P?D62e3((yqa?G zd#xC%)x#(4GUO6G4~-3#+OKBP!+Ql_jO74aOJt?S(!3aOry+Jb+;N;3h zYV%^qg7$vHZyZt$aD$1Z`R!h4KHL1BmE8j7^c6vBmGsMsRtQ5;%2DM=RLWnB%c_if z=G@Njc%3)xd5)Z$#6C>9uzfCod)qvsg#jJFol-FR)qov#H?CS{-2Jr8{G+0PH9hj? zs1d|fR~VUa*v8I1bJhoK0J{)~6D#;@O4DVeW+>+}o>kDNwmbS(06I`s#x6iBl?#$VYVgaNDU1D za8ms*Ya$7qi4KT+p}Z+|E2zNiSkWRDJ$AU0VMdLaC`&`)*!OD%bI&k-q}5of$Wo$S zU`6fijBwXFZ;y~p!Fl_RBu3yo{ao_f5orVa;^N}Y_F_?t2otF(VVJXt#YO7j!70rY zPRe-~SIlo$G4}|{(FS4zKk;i`%c-}6qr3iC%;sm>U z-V#sQBv3;8@h#YVH2z+y8)A<(XdCXRGMw2z8Nt9X4u$37!x3Z3T=5vGXT8_RY4GYg z_qu3*uDcxbm(cGSLiZSt8_r!Zh1b8G%Q%=1xNjWY10~?j6vxf8=#CO6wMGJ&F=j%A zrIN(7kk)9X87&FP=?KPe%*;5!v+1 zGyIknYSLNH*@?Ezr6`DN4gfa_Fi=`}1jX8NfcdVFDw6d^*yqX%_68%bVK#v78B(xd;4Rt&>r-smr~2Rue7#}547202hl-MqrsiG_pQo2U$H$keECh2wGN`-AEabegCTzWnf_LT)tSjk6 z?qB~%4Y5EP2_Ts8(_v#b2IqMboD(W>{GpzSDVbX0j48+7ame>qYhYoW^4J#k#%gi*PLSLI-r zZD9`|an%f{dTi0;TZ*aps~hfS^(Rj_p4)vbcIE4Qbq;;y+I~EoIxiA+V`Rm(et4s6 z<#B*9<|jL8Gf}>?w}PcqM8777G#4chuwG+sUYoAxMCd3fO=G3d+=&gAIZC78O^ zzZ(vrgX3VYf93K&>V4Dn#?2V`Vg1`bEOYK+6k9nS!}xp~t=>hKNl4tv30`W;LuvYh zBeBGHCTC$v%(;nr=(^=%dYT>BDE)no7P@`7;FhI0sF-FM$wlCsDzER5D3!G`PG90h zt8By(z{k>%58!UY?Fo;X84Jr}%t)5f=FQ3@?_GNg@3&HBEyhWJg(70-jHrM5B49~> zCp5Q%iiu6~iU_nIfha{qYY$}xC!!NRNKfF+RS=U9m9WH3`38Pn=d2Bk#)oyrnq-#t zl)6!BQW&N~sPYCeEczf9X7+sW4Ad3S;1zN1Dr%V46z*{GkHQFF-Q3#x1)pq49NaGo z8_%H+%KE@mtl~@ye=<%Q2ScR3*%c^Z0S=EVJ&wDI~ zgs4(Zyw6orQ^92hbG!#k%@KOGv^}qnlMoOEq2tUhJ;F`U4ucOAA~`MMdc!cf!)#+W zVb@HCuunqj{R9Ob*mCsj!8CN}rQb0AcA%FlM>hSMv({xb@nRO4x;G(^XfN0m-peN= zU#j^7QXs4a795sJ9av$io31>pxe0?car4j!*mun1vl7$a59|YiSJep&lOV-EqPQH< zFlVi-E{U5zvIkTv)Vcw%<0YTGOJ$(%&VCLTto{ttM8(ftWOsuvz8nQ^$a_adIgG$>@gS3i%fQ&K`#P;17G)GD{KO zI6@e_B-Xf9RDK6^>jRTiw}#M`#2m6pM@Lzczy0-era9+|4lAja*_B2;lvyzWMOeeu zqKFX-YbEN3c)3b343NQa=(J5teLQ}P9hl&{1Ab|!5kh3clJoleg4XKK9dwDv+;32& z@_AInJ-j0Sm@rYC8!EKD`Q2z{X0N2&bZ`kO<$$wRIGzuD8*2?$!eEHG9U$~(?&y$A zrRl=2GQop+=#V!X2;W98njNNbb(!SX;aMlZ5825W*=&H@f0!s-N)=$oKlXBT^hF@t z^GA(GmJK0m=OPfMsnbyCMA=X?5xV87*HixEG6QmNqNnp@O zy}vxjaLoW;f=dXvmblcz;%T4iCAQGz2EO=N6crr71t~3NXJBG$nz3R!Pt^7idr}%s zehgr#^}A*i*(Igx>bivnV!geVX(VMO1YMM+o2g|{tqJNjPMtKTr?ixQzpnPa&72>g zb9|NS&-m~YQz|vHL(il5+qZ(FgPseSQFmf`YaH3wXFOnn|txWs!+sx&ipn zng?FiJ#iKFk%opI7{vjWSu!}gQX{wY)%gv4scdNn62oVLvytdlaETK9=oR(-^?|;n ztdclft~%xI^Q)|$JWCcKuim+YBMF$let@N{%KPtJaha2(vQ}zzQJ#5!i^8$ze(^EG zRptcJ#00*#$&|=Mxk!F7-dw|LuM)^}@h^sZQY*CC?-KL(`?O>tL5f034qHG+vv(8q z?df9do_0*v=P+N8-qNFsA>?9?cB@DfWl)#t(YYwwhu=3IciyQ^qV}tAS3QAEtL(Z9 z<+3IGojvccFj*mJNi6kXMqq+mSmyNeXUITj>U|fkB`L&D@J56vK1m2sc0!C!>vUri zT{p)^B%1_TxVPe9K2Ra#4xSpHT<1F<52F3ay6K1*coHS7-Qgh>gp|<(Q;Jc;L7=sW zqjHBK3|v2P1DdkTSuQj(gZrX4wi~h82HH^{KF4@>FRp9p+8GXnZY?f69VE(uEjkd6 zD<1#aDwQeNmwJ6Ex0Fw|xAr-U6FlHHQmds^*CGchP?GVupmZ0UFVGY)q-E#~6)Oe{ z66D!S0S)n$78yiy*i7x$@1XU`1bQYbvypnSu>Jj7T{(x;Oi6M;r}H9ErKXITA@iZD zanlu6|7}=ZgcjG?a?SMu8!CH%3mbUjf{4L&ER&}vhy4;fC>ZJy+*ClIqE6es%9@0I z$BSkemyVood&I>=?BH2d!W-=TZGgft!`>%{K5l`X$b$cQIxj|_io*U?96Rz!fj^nd(Z*plbMcO zy|sH%=@2RDtXq6(Z$5hf;b_lC)FW>Qex@+t*ANPQN_~=FBg~A;4Cn&yw>$bdq;8AO z*@T_ll^)+Z3)reeVaMB+8yn4=YS)i1Ng34t3}$Y7BdO{sItXUXG*!l=N;PUtx41Rb zlbqOYU&>_02E{I8zu0iioI3(FY!>LI*XfHQ>L!fyuvhW5MNTV&4j6sz49E@BHTps?)%zP|&5G z_8SRJL!EGtH-An993oV=xoRGV3OQR>m zO2O&4MEYlqNcUSzUwD_*CHx!>vo}9ceGJ50P zClAVT$)ez8UhF)=)6RPKWzC;-#lMuBX-(#JL*!rfIVd-ElLrTay%v^*r0qAPL^4-|zht_10o9=} zMK3b9s_|jW1SQA<``3H#?Zf^Yo#g`(=&v-L)0=*&gPMKgUi~krd|Cx5?(s)5E?#yIhEUEHnnAG@1*W$BW`I@6;Q&?Qi zzCWj!HRwU`DFV)T8&43xF53M1dH-PVb%fWga*_T8@~^E{?}VWx)8AvkXV(9<)oMDU zq4>AswunR=<{!tcJ{~(zYuja$1OCh4UR%$XyX}tMiho&X zv@vTxl2!D=A)Rz_YQ&0bP^->M?0B_#a8P$}T;8%Bt!=z&pY;yRp_tqwKG~xX_H3h25%K*^=D}%Q)@3ar5E_ilYqD5FrpA>=@l-u;z@@-x6JW)7vkJ2CGl
)k#j(~H05gfA$B&4OV7{To|}0eh|dl{!hZkgjvu9gA^1i6AkeHi zN;AnebQq)T5UEl6Q~5ASA_D8=uV0u46Hkv}4_pMMU%ecNwgKxUPY=bCy1N_f9ZB#S zIpJ?c6mZNeIg;mGfg6#J;Jbzc@uP3V)_GPWfL#Ec?u5h@fkL6mowN+&WVDmGOI`ikg7+pN{d71EQFuhw}i)P z<-U%4G)W&isyr5{PrB$h^|pAlKv?GcEcz?9nA|=$cQ?sXxWgMIojNyr1LC5&V@oTv`O8G)Q#(}8F%!6%_Dl% zRebDp_T_Yp<#cx8W#}}{F{9{ifzbF{Wp#bB{&>QIiLs-U$Ho9cs5y2f^vwjPTz(&D zs3!<+=Pq|&RwTAli0jDSTbU)69lM{1qh4xZjo+PD9f>tDF^22UZLTCYd!IpKyJUp* zv>rTxl%h~#djyms8IGg}@el--d*5O;#@6ykM$#Z6o}fw7I@xp7sw0Ie`aNU3N=(;p z;s%KEZd!&B=UJDPX8nZr{JJaEVNLE5;t*cAp6;0Yf>PZ5{c$WGwVKd_-Crve_0T2q zcpS3orbLZ(@|dy_#PG*M-AhE#rvl4;=L!{p;z**x>oJdA53ov2#w3O1*?%%-f0&-e z$?+#w?6w&g9&g__-J6wOzHw2BW`nyl5@2I+3(t%n{jrqM-T__IsR}Nv2$4A9CGHqh z+Rz;k6_&T>pm@@2fDq$$4{%_px+5Rxv!IuRn8D$Uf&7RNR8Kp!e!JX%{CVGZ6;mn! zoN3Th!zdc?_a>Wn9wPRiuQ5V3y$H?@p z=|!cB6v%vWwqJmWh?~n53tN|=m@Kq?NB2OLC#Z-=M;vs;K-O4`bpg#Bz=5(;MXX_- zOh#n5pqkruXxL*8eWfik-Q-%_APipt4u5EZ?;Z+H@|g^ah0RVZ9A+FY5Z*ozlItc* zBicC;tHXPFG>_F_vsNp@(M#Iora<(;Lf4xlq!(fvd8MPt+@f&BgfzA+M-DU6-8xGQ zAJP~J@8zsPpkEO~GXKF3`u(Gb_M-0>ilxVKWN|d4d4DFmDRWF2vl0vWHBI;*p!;Fs zQXV_rH(t&%;ntrsg`!REq0u>|3iUFwI_Wx!Jr1l714FQ^g$xXW!D<=sRIkY}YC9%Q zX&msib=xiaCRCSb=%cu(Gl7tb@U|;j$uSqKAt>TEK^HZiI;K%S7I?GRfty+xG2x#hiY-N?||mwB>bf1>#dcBS&?A# z`ZNB7PiVo=y-gEWCQW8~y0}CT3mPT~Ek4M?kOcgM_}7w8lS>KH0s#R0#`|AOev%#v z3-HW-a|HD>uS}CxSe%CCqP^^hbd`OJTxgpMi`+g+1oeQuqY+z)yi0dtz5(K%r*~;G?edLwKJ8*S8tp zIDCBkcs|56wrH(gR9%ugKj{E(aJoAqahIQlzc0+*V=1ZkjUPZCJ<}tDdB?W48K3RP zP0E#_VqK-MX(hr;Z9poU&fQQCP{_bK&h>5;=UhBP(VY7gep`7axahjZ3=C1ZhyyjV z8Pm52ko#R$D2dI5U|sg0_v8-vD5Ca!yA@VUYnpW?dt10CtW6MktbVShDfgwez@7RP zKqc+@I>5&%!|WbsPEMyQGI;ivvc-u_eym8_I}OVgtxLS|1Q@TJw0S#87vU48n%d#d zO$gv%`p$KJTfm(h5YKeH5$+RRECo8NXqmL5jn+$0jGMhj*069H$S?-^YrfSOy@WDo zhMvn_rtC{ZFFA7ksLIYd!M-nIy&`jsAu+l9xvD=5R* zBJBNT^a|+!Nn2Lt31z<*>JUP(P)mXXGHKv7S|CmY^Nj1MLeQi?%2ap|+r@Z_VH}DA zKL!!Ujqj;JCM(E&AwFZ>w(o}KE-f(sY}gJOB> z_sH^Uch|BfE3fJt--;yAL}8Pb7pv6OdVSQa7e54#Kx$zM?M|f73P1B>K^f2Pr}R{; zSHLKvred|Dv7C>$-!k-pVJ+k?aw)MTbU#~`wrDD>sJ9lE4}oq~5aw3wPv70!NN|iM zsSVq>T1EW5@dS^`TM8r{9G<*&ITs4*?w>yJ(EMS z{dtA`l^N}GIhHirwfWUwM#;-whNtf)h$pR_5+rhPtyM#<=nC9m%5toe2p`B)io6Ic zDsFefka;A5EQI+62Spi&5QTl#=P`(L0zM~_~Hsi?V@CANMKo3(qY+M`cDE(wO&VOATJNc4-wWP(LyJY zF1d3;CD|C`*na>qZ>rdvvSt(cH{#zJ*BWk>J;bq;2JyFh^UbpoPVf;Si_TBj-+ zdH2uu9g8YH@u7tH69)9ETeey#yOJi4YWKWv-Rc6lQUd2Zo< zNAAG?{Q1pb^}ZJZ`IDLWO5GT;Csw8-WizxIL@n|?l@j!H5~~Hht@B#dx^ZtJP zzC(*wMU97bL+5mf_CZYXJFs`w-LvY0_uxuG#|Spy!@81SP5t+P`aW^C)Nr*qfCIpXxHqTg|yK?gxMvzULHa=*lC92W$c<03x=_nzA#c> zRC-~?qlf9Sh|hmz-1GP+P4eZEpD~%lwS9J{`G-4?7U_=>y8Tu+C>6vS1LT_P97X10 z(5aw}kw($k^Y8V075$)|gOe5cBof^uw%ESmY4+~GRTgQ!j)lbC6>yzA_8Ita`8f*p zBQTns4w~=Y@-KY;JnzEWC_|X}dOhjs^cUQ1u`UOE2xR5ao$NI}?I8j|oO?Pd7W$bM ztm~QWcH(MeDv2D5UZSM!VCY2$i8mhNg)A^)vB@+*Biv#J{~wppOA^5fMjA$pf>Yz01Ij(bt`h`m3KF$de^b&#C8DJ;^E+#4yF zKW?W_Zcgfw_OX&YB+JSecX|Vm*Bc~Z$P}LH_nq_Wn+!50)g=3B$T}D^JJcZ6lr<+k zE48Y)n(wD_!StAJWCwzt+JBJ$ItlvDy=%<{EaKo;Po%pN%U!)OW937)&;f-uzsEL1t;a zO7U^iXdF>eqoZL>?a}H372&YOWsGhu%sXdfU0Yk*pRYEqxwDF_ez<7z7P)GbzL zAg=^by|1)DPwudEO3ysbrRocMlgg$Ip1y{Yr7B`**mk5%m)`wX`?lA(t zVY+lVoZ;c>&QnUI0ZKUNlxkl43tUCsvnpxiekb^?r5>eCw-C4NJzu)8LmkTqe8QP+ z%v(BGztEr!3m)I!Kc;(iZGL6IpBFhSE%$gMeJIhJA1u;kgM`<)MG8>Sdb%&y&$9+m)pRlEh&HJ^*0q*WSC9Abz0086vIq8J{8`R%GADIO>!d(x)~VUoEi z@;~kGnc#sk^878L`KRsww3x~MOJ)zzBtsLDq#2WckHCL^PNM$;`bqx<(*N_ehk0S4 zslOwT@_&s0xk^$27+w;S$-kv&FvbJr)%;fxrlKswUv?b;fb{p4{ag3S@L#$A51hr> A