From 2e72bee9a1ec8cf1c11edf39b5dc5432e45def47 Mon Sep 17 00:00:00 2001 From: zipg Date: Tue, 8 Sep 2026 01:43:13 +0800 Subject: [PATCH] fix(editor): locate SQL errors after pagination rewriting --- .../src/components/editor/QueryEditor.vue | 4 +-- apps/desktop/src/lib/sql/sqlDiagnostics.ts | 29 ++++++++++++++++++ .../issue-8210-mysql-error-location.png | Bin 0 -> 90225 bytes packages/app-tests/sqlDiagnostics.test.ts | 25 ++++++++++++++- 4 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 docs/screenshots/issue-8210-mysql-error-location.png diff --git a/apps/desktop/src/components/editor/QueryEditor.vue b/apps/desktop/src/components/editor/QueryEditor.vue index d0363ae9e9..d8099499c9 100644 --- a/apps/desktop/src/components/editor/QueryEditor.vue +++ b/apps/desktop/src/components/editor/QueryEditor.vue @@ -96,7 +96,7 @@ import { import { buildHoverTableSql, ddlForHoverPreview, hoverTableMatchesScope, normalizeAlignedSqlWhitespace, quoteIdentifier, quoteQualifiedName, reformatHoverDdl, scopeHoverTables, type HoverTableScope } from "@/lib/editor/hoverTableSql"; import { constrainSqlHoverLayout } from "@/lib/editor/sqlHoverLayout"; import { createHoverSearch, type HoverSearchController } from "@/lib/editor/sqlHoverSearch"; -import { lineColumnToOffset, sqlErrorDecorationRange as resolveSqlErrorDecorationRange } from "@/lib/sql/sqlDiagnostics"; +import { lineColumnToOffset, sqlErrorDecorationRange as resolveSqlErrorDecorationRange, sqlErrorSqlMatchesEditor } from "@/lib/sql/sqlDiagnostics"; import { analyzeMysqlRoutineSyntax, supportsMysqlRoutineSyntaxDiagnostics } from "@/lib/sql/mysqlRoutineSyntaxDiagnostics"; import { buildOracleSyntaxDiagnostics } from "@/lib/sql/oracleSyntaxDiagnostics"; import { @@ -3077,7 +3077,7 @@ async function resolveSqlHoverTooltip(currentView: EditorViewType, pos: number) function sqlErrorDecorationRange(currentState: import("@codemirror/state").EditorState) { if (!props.executionError) return []; - if (!props.executionErrorSql || props.executionErrorSql !== currentState.doc.toString()) return []; + if (!props.executionErrorSql || !sqlErrorSqlMatchesEditor(currentState.doc.toString(), props.executionErrorSql)) return []; const range = resolveSqlErrorDecorationRange(currentState.doc.toString(), props.executionError); if (!range) return []; return [ diff --git a/apps/desktop/src/lib/sql/sqlDiagnostics.ts b/apps/desktop/src/lib/sql/sqlDiagnostics.ts index 1e4bc1239b..db52bce566 100644 --- a/apps/desktop/src/lib/sql/sqlDiagnostics.ts +++ b/apps/desktop/src/lib/sql/sqlDiagnostics.ts @@ -8,6 +8,27 @@ export interface SqlErrorRange { to: number; } +function normalizeSqlForComparison(sql: string): string { + return sql.trim().replace(/;\s*$/u, "").replace(/\s+/gu, " ").trim().toLowerCase(); +} + +function removeDbxPagination(sql: string): string { + return sql.replace(/\s+(?:limit\s+\d+(?:\s+offset\s+\d+)?|offset\s+\d+\s+rows?(?:\s+fetch\s+(?:next|first)\s+\d+\s+rows?(?:\s+only)?)?|fetch\s+(?:first|next)\s+\d+\s+rows?\s+only)\s*;?\s*$/iu, "").trim(); +} + +/** + * Pagination is appended to the SQL sent to the database, so an execution + * error can refer to a SQL string that differs from the editor by only that + * generated suffix. Keep error highlighting disabled for unrelated stale + * errors while allowing this known DBX rewrite. + */ +export function sqlErrorSqlMatchesEditor(editorSql: string, executedSql: string): boolean { + if (editorSql === executedSql) return true; + const norm = (sql: string) => normalizeSqlForComparison(sql); + if (norm(executedSql) === norm(editorSql)) return true; + return norm(removeDbxPagination(executedSql)) === norm(removeDbxPagination(editorSql)); +} + function toZeroBased(value: string | undefined): number | null { if (!value) return null; const parsed = Number.parseInt(value, 10); @@ -33,6 +54,14 @@ export function parseSqlErrorLocation(message: string): SqlErrorLocation | null if (line != null && caretIndex >= 0) return { line, column: caretIndex }; } + // MySQL commonly reports only "at line N" for syntax errors. With no + // column information available, point at the beginning of that line. + const lineOnly = /\bline\s+(\d+)\b/i.exec(message); + if (lineOnly) { + const line = toZeroBased(lineOnly[1]); + if (line != null) return { line, column: 0 }; + } + return null; } diff --git a/docs/screenshots/issue-8210-mysql-error-location.png b/docs/screenshots/issue-8210-mysql-error-location.png new file mode 100644 index 0000000000000000000000000000000000000000..7159a83e049d30d53150f27e1870a53c86e64238 GIT binary patch literal 90225 zcmb@ubyU;g|2IrCdUQw)1V)FX^k^hDx*J6h1QbN288ARfkrI><^CYe70Teb6xNEtKKFcP4s9eIVcGT2xtuSwao|!NZt|< z5T`+iz%#G)d3Xs3pacfmnie5>JNcxcOnSt9LNC)a{Dqp{fyWe`@NQ+Fqu~K!g5`L5 z*Cc(JLxluF(W`pu6ztOcRUqp|U{q(@-&E(1`TrizUntzYIXgKwXAMO_U}*3|T6Ki< zKmPzfo}r`D{@3$HOq7WKxdH`;Q2h6jUTrMz)qk%7zcR-D-(Gw}^S>VrQ|H_J+Sc=J zy39N&Wc~c~=gH&WJD(_-MKVOKO+wYPPtVRM|GNf#rjeJbe-@hWp?t-i+t1&+_Gq8; zrY31Y7(}hgZK66H-vu)t^q1S#`p0{bE@!f-g*IV$c+~=s113e74~jwTeKhl{*UHRF zy1#v*?9S*s9h$P1?m{3ZepbrLO_%m~+$94abk%7BAJg}ZuF@iAjoISi>*go;W+}3k zApM6ahqB4`!)B=^vo`GrgQ1?j2bM~3_{P_^$6H%Eq(RItpqgwHkXoF`V~DmZ$M)Cp z!hn_jz%Kaa`$&iRRxb)qWy>A`IKY!i}44kB-qoTT|kgA;@ zheo$PIudd3f0CJr`t28Xdgz%ed%L`%A}IB_>}|7VcP}saq`?dMisa;EDUqhhh`$$& zEqHletbvB9efq?3S5FV|pVvk?W)I9mLYi`N*jYkDL-z@;n!a@CrBi&ckm2X&7q=JP z+V=1#S(fR`qxY#i&#oF2S`y{Xq3A9zFN1@FZ6FYc#wYK5K|g|pEqw=?gWtb(dCge* zZ@y3AnkqGo_`Q>JhXs-2LYSHm@cFlYdsI|Z?&*7){oOCh3#;A(pBwL@8u(mesG_J? ze;f&beIl!=!z3qhN+qgxMexkWxti>`s+_0o!LyD{Zvkjd0_s9YB#rjc+e*w6LR%qh zm~2*-CVWHgjcrMmfNDu-qnhAv@u=GcYShxf25g|U>(4E@_yP)k%Aye)<;&me!GzNXe6+`#BkQ>L}9E@|FSagnm`yoc0qjy%h?JLsXP@8{|kp zHj5RG)CiS#gkp?!QH0C2%0frkndU-|1Bbj_pLh>EN-G=mJo=i(dgJSr>e-LgRp&6R znl^1w=;~O${T%-6_*(>anRjI8$B&4!O`+-Yg7Ni{9O7iBdhZzq0Yi_0G{UE3b9esy z{();sy`n(71+lc*p{gad<2ka+6Eb?qt@`Nx*0ezb@nCPf@POy^+n;O0@kz;^iaN*` zFNTndv!JtIn}1JMQg2Vab|nm0zU?JkscJ|-q}$N6(f;&_C9Qws+jmBc+_{f-y$7}E zv4M19^$+&GlF@J!{HB}0_#4|Za8T;Y@MSCsF5NPbFu+ynEoz9BtgD zG}9QjE|KP|_`t@)zR@ozD5$UGecRd359(BX6R}~G7pc}C!8x9G9EbDTx5{=oA!8u# z+erE_f5Gaai}N^)CfzljFzYa*$f#QQe0?Ul^uH{CyZ zr5EM~@r7f&#|uP0qfzM;_!fi+Wx3&P@A4__3gRPwTXpieDreISc)HzP^xcWJ#}B4; z(bADwk>~26Cs4~I$9E6ZL8*=UF6rR4fTN#(e{XFl7Q#1%TOljC!nEnHSw>YXizza| z^uV~-ZXEjS|2X~m{jh0r_vx9rIS;$Z4k@~+ZcUd-6-YR?kX*#Pqmi39*_KaW(D0ifnh0}dtL7}Y z2PIOV?xy1-oC&K7UDS4=*U-B|sv_*~SO;p@!5;`r|gHTpCLcHYZ8zBUV|) ziv36,Z=^(H5?p>AOv3Jts~J0DG>mA*bimYU_!@vb=4kBGm2cx34&v)*al#2Ivv z$MLC#o=8!WOLFW)zo}B&N=ZraYVH(d5;k1?SnY1c$)|1i<84j)ofq=H+Ii_&_RQh> z4-c06nmEm08$}sCS0%3_f%(~myl9&B+KjY`hG@r-R`Tak6wLa2HwDqtu$p`k;N>N_ zC6r|HQg8vW0M3%)cp|fCT83=lT%{vbdO}Pgjevc_9e*);p5vZkgJ=H4yfV8y4<0;F zdE1nQmhOBOdxN4Z^*s`vYXz4KYiFFeo&-Ss@;T?SEf~s>cfIw88}uGmb!g-sXAT*dYK+6 z{YwJxbKEqZ`G7;tTZ8LpYle#14PN+C^>L-39da2wxS_n`IkX>z$j_}B< zT~7sWAcxVh(QU}CqhG(Y<(M98O3UB*CH#{jeriaF5? zLi7Ewyi*>iaUBvBnyVPVhZaDSlPq;c5idQ^j9LtxpeBC6G^RL--afR`v~z_^V~kua zZjR+q2t>Y{>QwvHirF9_#LvCA`QCS0nX+b9 z6P__{ZNYL>>$?BXm93(ypX+@}`@7bV@1T40^;F3axap^w$PP2qa90jNjV&7m=HdDC z%yl#c<8+5&%a(@W6=)Wj2$%GPH|7SxbDa7WxT=ca;W4o{vZd-jMM&dP7PlhzM5fM^ z@pMHZVz(rUrRv(&pkeGfO!oU8hRR#cDT3tFws9}}`9_fl_a-$zLB))6@D4O!9hB9; z`v6#Y7EmGUZ5r;EaazSa(oY2-`RGT|P#lMl1Q*#1{xx@)UoSRBMtETon(1{A-=8i( zRzh%%fZ0xoMK(B@w3-$DXqT?uz40dR0^Nq}M|%HjXUBVV3K}U^(ONa(7msWda2H z+mGf}R#p-c5E&>X2p@)(QO6k zX^KWFaCr7JsaWWg4KYL@6}Ky;6kX-JR2Px5)scm9*}cL&W|=PvN~-5@ zs3O_Y!bIh*D=en3pFMjvufo1b7k4gCTZpYEnxl$_W>J?4$14`D5khry5N6bJ z5`QW)7s?)Cm+?r8VV>E>*dwgBtnn5Uv{+=hMHw5abrSI&)EoWckb~uJoEI%q@3xJP z=+}t>hC2p%Ow+>DW=v!2qc1$w_(|tbYP2<*+K#+vsGB#g1D_j2{Y8WvFHn<}A7G3a zZ5XH;mnfs%V(izIH}feGdza9^{cx~L%=m@;jGa8?_}}qNgtWQ~nuL^Ww%pb{IHiZk z3iS%TQrMr6#QOxL6^XK=L5^lx({K~0aNq85)%^W4aX2=q?N;I~ql@0?9j-SmJZ4z$ zKGPTS;vNZkt5Z&dGq#vl!sf4;;79^KJ(CBIPxf6;V2A?+-ry4S_CoWuOwL zk&swaIfccN0elx{JKYlG12=_SZMs$SlY5o%QZ4-4CRi~udVIrN**m}LWvWC${mqsB zId`0ei4%N0`L$^v9_~&yL&zzH3#HR=R&!+?2_SqjDZ3&D%(@A3K zqIq_01VP-H@N^joZ%=fH3>@d0xv5=XF|i6QGg5e@v|~2D;P_!tW5XyXV`uJGuhTSL z2H`uq&T4di(wi8fiFpz#CcLG@@I$}dZyj{UreBo~$NG2gt&h+r=3{&)zug7&ZoICk zplJaxfy}2GN5@E{;w&}kk%pHb&a8y;vfH9J1<4h1xjplyG>3iVdWkeq>Hd432*_GL zvNW@=O}t8&(=o3M>GT?TA88n9a|dwh{Vg;y;{XPECU7He4n71$pzd|Tg3BD=HJn`$ z{zJV&(HF2};Kq)pUQ>7Lg)l|mk&~h{o4heAdXXtdK}XkETiavMRov&@6Gu~WyCZ1Z z3gW(S4JD9tXQg_1Lla0U0o3eYZ}w84+F>;vxY?_jx&iyhmB}Ear?rhS7u&H(s?xpn z3@)FgZ!XN1wxjfXfwq1KS#6d8f|-zWd0!v;%;&16MS}<8I(D{V+&MRD9=EN|z zIl4vC$bW#MB8H5NY#DA7srhTUkIIW$2|Z#{yIXj(Du-OWzq#>@l0huRi z3EC#RjV|Rn+yh`FXluG_v&i57#>({SDWzu(i*YII-Rq;aszvI8g zgm%}*O-4qk+@8FO<`1}yD!iZ&Azc=E*&fdC?9uXy)52al=-d6bH7Fu@C(s7nn8it( zf&zk-AM9#R#mPQ%U0eEvvT6#IB7<$ZCKi67n!I6XJGu>thsxOhgf>O+D#8kBxmDor zp7<>^(F-=WnvORS1i-UA_m&l-r}tm}_}cbvCxyyhZL-WQjqu>16T1qNlamuD#+s-4 zeI|eruwmvcY2-MkyO2qpba1?p?kf}BR9P9THs>I<*s%voGfGsRBt>3A51aJgzwG<< zXELtn6W1Wd@tLfq9L1?#1zp8oVsh#<9wn_c62H-CQYx^qW6xX{I#jUXb0ic9_93^7 zdo3E+!D@ApfLClR!UL|JftIS7XGc_6>0v*kgc9Big|zuQ1tO>*37Rhpi<#ZA>CSC$ z9N+zJ5Br0>_uSpU(uJc_06L^p#GPO#b9E|)oNn=F!4TE$cs;I5gYRSc2X#e>bT6m^ zIf)9u&fnKS-i;ee*PQ}w(ld9T@6qp_gpR;-ID__=7Q1?H-5mkUa6u+PsC|et6c@r6 zv^lBM=#H-*BCHP`AcK<_vx{kRdQsaLz$q=7=oxjU8}B+R-DD+&e_yA6<$HF*kFTm8 zzEiN3s*t|cbf0k+0<{XXvIXf7g$n2`z&<#hX0aH(|)y zg~$=^d@`xk-Gg;WUoJ9_QzyLOU*QMso$jn2}{Vit9*b99lae%XnF@+n_N z3Ear+WR6mae5uJfeOZzR<+#S)t%q1+_)Sln0nj)g$V)OBTuT^asy<`xs7+(j8E+YE zKuVjpyaK5Gde@C6Y}V5F^=N}2w#A)~(L34~+`*p!XIuI_;P>gR!J3f5zP=Y_!ik2d z((ng&jn5i?G(VO*GzV_aR={(B)U+%dYo$%HLnXdc5Scy6rTXx&xV~P_j)c#+0e}VNzHV=fR)Ucc_dMUX#@;XGACiA{)zZ^mUDQNiS9eH zno`})1TB)~prYSx zF*9;cB*Ql8aCMM>x%2F38p>|z{(fH|cy_6DH|`im%m zru7NqeEA>nzgXG;=zx5@J9TBYQ2_grX5=}8@#eQ?G9|?U0e`sPMoBA}C+EQolh5U&J zB+6=Py%zT3Ad1>#ljk zwWKUym;v!sLDDuAqz%C(va1o*W6%_5qR~P3C2lQ_+qA~IW{MTN=-t&oFaZ@yLwzHJ7nP!?DPpk_qloeo%PU6-MWSX_&x9YyrfG;%T*}agL+cff4wbqDA%gOtChpSE*|dx!~1&joBjHK zO(+QL8!Hp~f4N_7g-9sFf1k%BAT;&=m!l;}`M=*T8~%TLu}%2-3F?3OaR2BUYZu{P%sX>h?N8omxZahwz|kdk_5n@i{Cs^m_0P+wF65I&MJytQAy% zOam(W47CzK8(6J)aMrS}2YJ(z0_Q4A(pkc+7*kYK1QX_e1GFzuo3{lcLYKi?(-aW^ zW&T)Q%>a8U|i%*PzTVaXFSptK2OUv z;;BIz_U`FJokG2w1g*2dVg1jSE$};fd~R-TYRcR(cCsmOEzto}XOemXT%*66rLSa( ztCPUPYDC6!$e|-V45*gC&Px~)ItNApFhMZcWUr~^np}J0Ky~pcsRe>L=;#L6lOAGJ zqk|@1d2^Z_-f7V$#41ap#e6Y_wTQ6`D3-C{8nF4LH*;T+CO|p4@2K?VkMP>i)~f>x zM!mFkUYtsS#lVF+c<`sWrKQrY-cVEud_}(Vb@Txm>zq_tan#lI_0OXsE{^7aWmfAk zI0=BM4)3FZ~he>urubZDCGB|u?))MBL@L? zbM5`jNnkl+LWpTZfy*&PiT3qt;zdvT`}->fZDrgn7->cp>jTg6?f%KZ3b=KeX~68_ z6VYq}dzGGFw;+Lh>~E#xyICMDS7(V>itNaR?7PU0E(QP>@pDU%XzK+yHp{2Ucnt7k zfvJ+@2&x(AeJMAxBs6JD44&Ntb_vkH?b2_3c$sV-$-4k}#J7mQ$z;6rqP&&7Z?PeL z)*gUh+{hH`GQegO{Al$3T=cm2@_)1ddEa?ib#?VoMdYx8--1Sz7a1aOyZ?zHv@n1s zLe9CNNfwL6qT0g$^Y!w()=8t&SfICYJ+6fFy!c$zjF+zyiM^&@0jLeStK2)@?#I*= z6o8>pZ$-DnT#Q@%-I@`#P<79h$sIYE1B!79+F=&dX`Z^PC4K|Pm}xX$gEumo5`M`d z;b244#hf}VpP_=nY+>-Yr1Z?G`-&aW9IYqgoPWvWA?a`C@TTanUnv zPLQakqu;-GCrgr$oE8{Y;XZ!x2*-jRESd8C4XJ=-ZHF*OYbuXAzCx&}26)>2s*(53 zFOI*hE&1oHT2WC^Wi(qE(UW4R^Pd!^X%Q5VRVThM{#WaINu*MEGwS`PX=8QQoT#$n zPm<1Pj0i^kE%uOe6L^WD*O=?<-i}ffsJl~!lrzTXu}aXX428R2%inQY`WnIW>lf4X z=^=6n5^b7e3>*`4>h< zX&%UA#vbPJ35CcmD*yA=7n%Yt&W@%=dkQpTfHNUH74>!axoFmF-i)y3B@N0Fb@^#w zZY@qoG}HigH!WZN@A)+g_Hw1$M$PZu@rP}|nMlPn^);J($L}b90`8=i1mY#k4lEM} zS)(apNx#|Lm8gAAO2zVoOPM8w-GnoKEK8Ed!n`?fjra3gYw*zliZadQ0KF3fnOvTwC7Ygigs&)So4BJe654YKQyeMO>Z=T@DT2brCBdV!a)QB~B;O z=Dl>Ybd(BMq#0_zhd{aEQm*h(p)M!9Zx_EVeP3o}grg18#&KR}t5Ve|;jsA8<=!~r z!$N!G2V06KJ6o9`x-G61Ta)4`BqX%(YzwEf!D8`^9V2WVWXqG~WTI8l zCi1&oSFDk?u}&zT#py>mOlziRY&@zIoaL*LmgJQbB@28P$rQdTNWU*F0vR_sHbmiC z1J6NJfs~Tb4#G!X$zejN@Bs)ls;a8?_1*%nj1N8;9vvJ^i18h5`0odU8u5LM3o;P2 zJu7Zk2kEBHrQ{$hgMChGACPk50u7;0nM5cFGQb>)kd%~MW#?d4Lf=PsYC)W+giK!o z1A`-$q}$u#IMVKNe9H?OHArDg^@`CO8b8(Mbci`DiDJ|obpM7Maz6GCp+TsuJSq5n zz|bQ~?h`fWBs&1j6J|zX7A6ES&Z=lMm zm;5bxJ>v4=9VeOi1|Hltw0pVV7@h^Yf$XzZfN{!&2v54mE=f9YVFYZ9#;s+bjn`EK z!1=ndKUxgQh_+=G3fvIe{X6trbok+OUPN6DjQ>W~4yf|uC5rcfKD#unIXF;;ML$op8N!6g|7V* z&ehka9)n*8LKb9`^hq0>P7l}87XkFd9=jY5S`*$Evv329qk6M9fiW%J>ncLARofO> z^UI~ujd9syBpU^9d$<(JCwNHllV;4LcxqCA`tZF3(o^afkh%CjJbNs~w-=8R@#p-i zoQ2H5d#Qm2(!PJRzZg|pTZ>$$jNWiNf#e0ok1%b8WY-x911`xYy@Lxi}Ih%k3WILCMLcHRZC9-$bGRYKe7nx}@ZL5?Oj1vdnOWWb0_Iz$`O z^g*Iz|LKRHKYm<<0^O*ymTrmWy;(46mR4*!gj(ak_F*9us5WSjw}_jIm#M3%0XjJi z_dV5DLO?3HYF?}#)q7xuxSSx1x~CFxsX}Rd{AiF}t-jK_c#UUs$)nUE1HVJDx3`y? zZDyzSXGzx5nV!7+VVS!g3Xc({vJ!pGz1pN1%>FMfXOw0W%&w!uN%IrwaHvHz(JxsV z8N3a&7K=Al#=*C>#G%iHECgn}aCso_MaHa_O&~*(j>w8i;m&}6~alZDL~5hoNS9bU02uAipj-q;s$ zXh3+wJ-$w}&?Ml4{XZ17@jJJNrm=8ybH9x#FuOe4t^#1UlW-d}+p9DgbbjHdwqpRA zXe4*m#F^+n6HLw%Ci$TMwe=xTX(^2h{}`JXd&YLKu&^NY)YR1WKLqfqIHa#@ehC9v z!mT@n%N@~Bs`0ykofu@m>1E2oIf>FI%88Su0eJpoE`58lcsvmE&vETVM_}Hwc$(FC z7!2IhuZbci?@k0lkN}@MyD;xv8>dFU{Oi^fTWgccZG>|dRo@`uoHrhcPb(PD+?vAb zfbfcw44hAlRn&^Qg_cF2T!+cTV(vz6GPGau!9%A3GH%W@k4q6M7W{W^jiNq65YsBW zL?tlBq8yd+t8_f>fOO%83p0y8#hAd=`azUW#$$lshUUe2!8u7EfSKddG{zV_cK5t+ z;+~Y)o@k+%2b1uYs@<=`&xD3`vuP>I1tzemd%_1{YU5;}gN& z9FTZC=UJGsiRDGpMq!@jzd{A*F;Y<5TU?;_;#m92SAqn}rf z&9CL5#;R^IhhuXfsVR?0!}3&lAa6OjUnTYjZ5SGa5;4=pJc=hllGM3Yq~%J)ktu0Kol+Jf(X8tA)T^ zvOob@tYUHr2?A*d(icdt@sI%zkd!SPoG$p3#;D!DNyjEdK*@Od1MD1RE6o*o?ca}n zZNOqHSwepBK0YKtJ%TIjP_5aPnF*|tkOM#sm(8vOR+;wT;=``b2DERd#Utq1;qf38 z!bjv3*_4!~dP+*42Weft9<+sPv#)-_(5Wi*=$BVr#?p}@$j9irZ)uuey1D{m1g`L( zq%&iu(U=Q8)%fe(#l=X#;{xf*wMo{e%6h?%pknO_$k#w!E+jdieeOutlN|g%8ClpqaRJX z+wNoXtMEni$@y){O_HG&xvlaoR^j$}g*E=Z(NS^yrhps;CH=!Q+q*p64zfN?Qrxbt zu0Xk%`?ZFict(+baB`{c{>odmf<3X>m`K5;;=> z4FctQMqFCl|2``#tN#5j$G2J;W+?utZmW-BzoVs62KHDKm6UGJjvxh+@zVBwk1o#S zw(hlX>(>eEkvgzm_2R4T(-zsHMm<85t!<|kbX2`waQyiqO2%QA;rN3~FBdT>7P+21 z@pDE~252UXLM8>SUO@Oi946N#PgZX9`x3oG=levy0GvL`l>oqGK0eBYHQk*t_3I@E zFGwfWwgfU2?v|`O(CGew<1m0 zw18sV|JM{iLU`r`5M&}E{-&itHQR5AiHrZ(*}3EEd(@k-S$~-h8tT8#>m`{Gf@o=J z0X0udOzf$kvA3_U_`tCd5}8(2RaIJA8WTfYSvG6+uwry%*tqpy^dF%5^4T+j+2Y4zWd_*yr9OVC?PxM z56OdxIRnOMmU`)x*TM;XVnt5asBmo85}(R^_RVgw^jJ#b`p-+%tB9I)K`FPU{3g_(p=Tk1c(n!u|LO*{5liW8jPQBR=aVqjp{_Mv(B zJ7}`kyPWx^#qECDzi-o6qh7XSrT=&&wZ+yyOD@WP`0Ju>@YuxPrs>vONQx5$UR%3f zhB3veduYMv-}izJ6)(J#{`>H-rm>NAHJ&(&*(v8Hq%x@7GLz(8M67JJ_b*v@P5qFM z?h&ckc+E)1xBS82Izcgq5RyK9ns7dwPts!R%Ky=ydvoEVlpmEjh0~>?PS>}$sY-{_ zY%ReJam8qo;N8Fb+tvs7;x7+EfCvyLm!-c6waXPp^v1ZR%wb`?e4_5SW z${=ETduiyC+iIlhmlL=>Pb>&j3L0kU_a=f=;U+7(dIexzkONERkYo79%o9zl&DptI z&4}i4(`eRKq?X+x2JsfYpZ4qnP$m3NGyN-`ZX;&1h=rTP;lMjx)Y_$VTFC; zexplQbf6sAL8wux!yf(_UK8h9g{u1K{CqC?*jSxSBNx%jehbF#m;yD0FZ5g zl4$c`^5J49A;daJF5>bWQ0q_t|F2ijo8SS*}ThJwQmw_-|{Aeb>H2v8Af|>Rv*@K&ia)MF}F!sU_ zE%!GWinPaPqs@IkzFh)Rc)=~;-qpJHkO@PaJHkO36Dw*9`(p(clC)kj&w0(;n@@;} zSLUCr&TnXFfU`^ojTHGQzTa*7L2Z2>dZ&r+Egy=x-}lkxq(CbRNQh<$n+ww4OG~*a zhvr8S67fm+1L{t3qtL=jSkeRZJoW?603(MBse+#TJCC z$tSz-dHuRT_}M%$eHg7NBs5rJ-fK2zSg=ynpqCP-dF&}SIZFN18w&ev8JCdF=zq^X z?Wcj*$JM(TIFDQOw}8BuX{6apa}pI}SbA=JKv4}XQ^mb%e#gI??Az00Ka!Xh;dw9O z6UpFBFfaeyC8%C zQba*=Aa((O;lH$6z=tAK4JbkoU<`rKUK9Qu zI1sA0Sv3E2iCYNaGDd%HiO9RY-`j3~LjP}`?IKsg@p^^-N1rrPu!>}FJ!MiQ=35p4 zX_%;M5qxw_pD9@-97;{{0g2}$=>u~}nk2Mb*JWAMT>BE4>k+VzRcE(SXk&!1<^zfj9*Y@z`k(R$Y8P~45t(z^`4(U!y$vlTVX!}Dm|5AK% zwO%^)ve3SGNMJdxknCNzP{5t$?rv#$E{_;z$BVlC!$eFi5HzXO;k}NGv}oE9Hf)U> zmaOaa4}F%?CYLvv9PX2`MPd)zZ3Gr}x=JLwwE7nx4(~tNF!qKZW89OT`(`UWF3aDh zy!+?Iy{UQpks1lv^vA}T&SJl>trT1ztDHN41m@%0Etju!PcS@{9t%q2zfqzCQ?$a# zL9)*01C$Qriz0o%24naG4MGGZUJ#oROV$z#*qPrnZUTreGPlOWmI-ZaaHY3Nhbpxu zqOTK#N?DM}5_`rCgN#FB6bD9c2jmg5uiY{Mss5lT%^!Y1iUGww^9}H-UdrBnnh`7M z)XJvj*4sr){+9Z20q95h%6hGB2O9-QSp$NAGAqrX1HZQ-A4Zc@AZnV-`CH^u=3pxR45<#wcROZB*t3JN* zWFO2m&fzV6Kv?u$@DK0#x-z85pk1;ca4q6>)7&@qkDW=IDbC)2v=<+3uPzkm8!SJ{ z?4kyS_B#G@SMX}TfIiV~72C&sYYC##A&7bm+KGb{Q*R78eUOhneKrboCzeExexE|n z0`cN;_KcDRJZ8|d)6=Di?tC;E0R*w2ntPKs!>R6PI|AqKtQrkXV1q-zZA@uo4ky^3 zkM`4pIFSJRHTGVTF>v{z)uhHpK<(|JShs}s6L|X{zA#k}3S9E>Mi>{i9zVgFJoB5b=`H(-0s?155I`6tG`m8lkF?_S$QX}7e zLkb#mD%?ZfI%m&q@AL9p+g1!Sux$T?B||-`hNAUeos~E3Vk_5;{I0c|X-m$kkvqNn z6Cpj`!eZ>i??Zh^aa!utAvuToA(`keUg5>-K3v+X9%O+%xpRg4HlyT>xfU)@!abd- z%;~|#>Db>Jl}|s=uM$Fa8a4T68OcGUVC+gdMfrxsqU~{Oc*~Tfhb7qV*y!x&==w z_@qo4$6``$N>lL@&Po5bz>M-I*>$KJn>D*N`Sl1e@faw2*a58G0k#DTMd1Z&;9Oat@}LZW$w!X^tNhqW8`2%ywMf=o z5tqqeQCsi;``p*pw?qq5Gf+UV^iL9Bh!|G_4s&dm9e_k2s~2uubnX)f(3`b{gssf2 zejoZH20gv^fIZ^u>DelH(Mxgf%~I{;JyMMI)mo1y_#g@l5m+);3O-I5?l&Qo`zGAQ2E{Q78&_|`Ok2+MdJE7i08g4zdx%2XQ~%_85Qc6EQ%a|#S*-yh(I zPPko#G}6#L`=V!AOoSFhCqayxd_zX?9OF@G5!a*ITcRd}j?Uamei_hE$fjj91fLwg zns#uuG|Zalyew?;293$N$sg-*0mefm;3N6Utd=a6EWsP&ge-1i64g2GTl+>2we|g* zhPAHU5KY&V9xSS!`g<>^d(4;hEBA@dfh}~aANGxElFdSgx7Rg>9s5|XAM6|>wvTR2 zHzo$!LCpq|3idgt?=Dbo6~a|P&AxK!_>w{QpNX$*9kgrWqJoB4MNXRcpo@hFv(B`GrD+a}KK9Pg}+ zi3KM9;ICLWPmuAVD7cIh2?63RugGc$kG}ad8<1*KDXY&d=d0bxGhLMoliI;379@U; ziJzF}dTmPd%|%U8Tf+dt=ZrSxGL4512<5`hWicO?kv=u-#>l;H<}Qjtxa<$-6Kn8J zdZcW^i*8E_k3ge+Yc%da%Sf?xLtUDI_w?=;t|g`ZQY<2zN^m5-8!@H=gAIT)f?t8%O7L<6t6Ad>E< z!}Sr&WtK2;FhrYm3q^;u9+k!{Xx@Tq_d zbT~wR1)k!@4>{0ZQJZaXI7zVjA1we7e19*V`}~Q-m2j0#m4}CrzNGg8@kALy#5Bpb zh*LTJNEebq5a?x%pjA&rG?9~;pz?W-s;h1$^nji?3 z)RT)i>(qJXaOdho?`IgL7&RYtr3svs%O0@=-+HgtCELZoCr?>DI&U}CZKv^lHpSCt zRoc^;DY7E?xaoy3E^n#XXe1S`i{np2in!Hmr-3Juwad9)lE%BS2?J({qGZs5+90_g zL&T?NsgOuntKunkm_hHf3!`dD{G}uwp3BE~7HYy!nK~Mg>vl8i>isnr*B2j`zbm=^ ziC~ovUa$XaZVibzR#})DZ4I7#t0mg~P4(K1e4VsCc1LSuEl(M&00FF8(-ZN3PKEyV z*EVJR$=itnntw5o+fn%FBq9>*!rIz!R*lc6D$0)YLn`m{@%WG#upH*06Q+|uuaEhF zwt}4q@G-hvudeM&qqV?n2c{(!x76TDNMk7#QR6YlP{zTO zSecf^JtlsiNrFXW1guo|TALq+!*&<0Ou;`7wB!K(r8ycsy)dWQ{`!#1bEQM-5?BW* z!4K=#Bc+WJtD-|J^V|wAIX{wKq;AJrGAWMTF!osKr-4kUOEBr_HK4xFO{2~H`}?RY za5!+W*AO!a+6Loy^3hKN^WL~WiMYOC3#&CU!!T**}V|;e7^4{z3jr{9! zyJY7Ci(hA2M{N3f))xyt=t3Zv^(08#h+c*kp{b-D%|DSHOM4dychs#;JXT)#VRN6| z@{78I_QEmnI_Ue|0nGQ#LN$vpkd33~@^~B`pY!TQBR585M3#SdQ7oWBY8Pi~YHAR2 zh>m1VVYNScr+JQSn}YF_7YqvLmc8tMC@&67dt>+a(-i2RF~pxfM3d{;*mp_H>D*}s z^aZe&Ev^?Mpo|Z%`rI+p9F{;?p7iSf;fqfOTCI_LKF3Nj3oHR z7Lpx2xRX%ct>1YC&5;)>?zZ0y%S8q|P8?kn(`r9wvgADP9e_x0eJ>>cX{R19eg)bP z6sMo3vhXKHr{}VJQeMreIifh_ZQm#L%SA-FTGPa zqte1T(FlTAN@;pjBnXznvd zPsA2##l8g*J5b@#uPDs*A9!R+Al>vyM7X-?+^(qqYJsKiLheGdv=TKehOr;{nbEj= zh?6BsH&F>uKcO5kc~?0Q$1|%jO#gofd+%th|NjrTviIKevPt&dE=00J$j;s~$_ke) zBYTt;Ny#ikM2g7Xdqjn7vbmr7e1GTMf86KXos;u9pL4|Ze!s@^`B={wZ`5-|Cn$8j zET>SBYf_AxeDHB3VW?m3e^!JoO%R%~yB5Y0kh52IZD- zFNBU)KH5Cc7_n4K5|HAuZ!-0;zySXc)irrF|FjOSi1vNE@w8*fK}`>AmG9e-b~C?vJ;?d8Z~jtS zSRc1!h$`t#u!nI3{#3YllAxIJG*0266$6Ytw?rU1Prn7_tvQco7j!krT z_vwC5HHBin%E3b^vs<4(yVDB`*I~Cj5Ln!Na=-9zU$&CcH@~P{wVU0f!>g)gO!~!^ zGx-DbY3$?bpc8E+IzW#AA`^O0qF#j;KO*u;nXZ3&m4Z0Fj_);!+4G7?XKWP=Poo17 z=37sdpHb)`04+og_ydWWoTKwFiEj>k5|efAi9GzlkpMC@1)V(bHyj5BF8HZVmhw7s z5{<{JGmAdkK?1CZ%a+Qb(UT!!7|`si1ZU}Jhv=Tp7m}E!5$HIVG3yg399<93b4;~? zzz$uZet}9{WuN&!h85H0}W_IlBpiN8Q3vd$&rr_6cLMHiJ2?KgkRI z{^{5#&G+oe`>`Dy(e`Kj$quTBGKJDQ=P|-^!}_2B=1@AqS!Tk}PviUR?MiQhy>!Cj z;$BBS;K;IX5?b6jRYK>WXW)|SyMBjPb%Q-9l7#owSOo*Qf8ew^ zXh<&xxq7q=uf$8 zefM&5oXZr;B_dNejd#?g?sVqv9PAR{Bs{Q?ynX;`hoz=j(xY{He^w_ZOJyBaI;?%F z$;F|~H^xruD-YZ9W(bLJD;;FN^4iC2sa~Mmo>QLxNjFZf5FFx;;T-PMig&SoEBRE1 zAYKfkmRxB^Gg|~_BnL{OI>#YQ3gg4^Qtp|L0aPPFhiVSRUn*Ym+}LVHb_=cQ>yVfF zSX&f~&m3Q0+~NMD?E%g+-Tn5Q8-N>sP*okV&}OMFtAuzZWCX5asKej0Pze;XvI>dR zorJ|4DPJBFE1kxOQUy^`JdhWYb{*byn1Q{?~PHo-2g80iM@}?}G=9(zBCiacj76P4QN!=2%<3YcARlfVYeZZ}Z zF4;s~f&UHzqfsF#pOIse^ta=*h>niG3p1x>&f=Ht860Gjl&!mlX6GcxW)EDj7-xit4sQG=ux!ym1NBVwR_)dQx zPtRgAJ;x2EKw!Iija1(l$H!YhgogS(!1{Q~Ng1Z2ET)6r_l&+Hj~Kn6s(hM{Aq!Z@eC{x+R_v`a*jtf8X`^&Rc#0`kT>l5j;EK2z|la-pA9V*t258 z7X8@aW@9zeENcB^hW8e3GK!CmzpV2ZBvAl@kkB@PTc^<1r(oD1 zUoc5f|DG=$*+6QdGPI~AqPO@_1kbsn6*~1NW}g@=VfCEB?g$mH4>)j}=p*2^w8)(Y z$AwN+DycPS+JzYEBd}8Ybg@+|T4jgiBNPLD$Rf5MXSA4Tj%44|OH|@I09ufjUU=f# zTPM3zYCd{p37)!o^U{`uNd)1n79JHJs)x>z$&7;hn$NXij9dz?P|zwCFqTq;Nn>T; zQ!c;0%ST8^^6byjvJ$0OUHofJ!Pkxax}d6)!@X@bC96ByUT$Ept|k^u1DA zX8Bbbd;fa&jY++rc3F{u)MgCaG>?T1>r1%h$$^xDx1YFb+q1 za=7S?s{LICL=vOO4?ce*-cZdF|OOAZCdu<%8*xAH&6)Yeo8>9?c$=IG)N+u9o)Z&F)Q zGSbqoGH$m&aDEUoet4+vZ&a!hM`D-oN{Q+L-jq~N z;YF;+!5GPXY+WwLnn*L*eD{zHte;=jaCc;jq%$-CGcroMD4fJ=nHRV+FndFFV!`aA z&x+oudRHTr>qhD66M9Kf3Qpd9x!5xK^ySn7%|zZ24p-e*9iEu)>trpY zM7UmGnfhe?^by6ojLVEM8X;xEysMpwKi~YwuE9ZO2TzS^kbHh<3%=9{>r^sim(_hF zx47ggX&H{FRkVk_y?v=?sjcIO!WmqQxZ4%S0i@J1P8SM?b>Nht5}`)sUqNj7D53QJ z#8L5w4WpRYZ>Zbgj8fXjq~k$M2FQhKNt_9yKdC6X6;ODlV1K!b%73~_=&NOXk@{&~ z<)^K_g(}Sl%)qKIk&M3kc!YOa1a!S;hS>L6A{7p1H@#kbeo6k* z>``84SD@Atem@ndsm`^y8+IzgXptg>?t#mRc7*qIq^Y`oRM_sj z!aMvBTTv7F!&`%IaK2<$qII{)HxHcB7T^x&8xPk0^bNq?xqr1!huVc=k(1GvttXlF zaHV6DyevMur`hDr;O!SE0UP3MOZH7a!|FY4~=>2APelJUR7{;GjOuBMj2^Tz@w(anV57A#S{ zX*G{J(oVm&<-HppvJ@p^&(^e^6Rq0~9+#Ifn!Lp={$2ZrzC7z<*d42L#eUeMGvI~g z;S%$4j2`jghs7)r4>qo&gijP>tGkiTPY!fVv#0ytqp12pBclEWqu@}+R44F!Sh<#4 znH@Vq$Y<+kLUc#7PK^g^0z$*Vf1Q?k?@z9NxDml4FR6u6#R3hgbd9Smd%8D(LCP@o z%zJn)KQ|>a&gX1YUs|^jYT1N^70c*4UQtDIWuNt!Im!*H?%2WkO zcg%>vB#%j6-oQlE$>T^@hNvH{Cs-UTqJ5I;AbrRKZ}WS#;xvP3Tu-iD!%P>KY3Da@r~@M(%eai z*I`f3cQ3Y+!M#YsR+0C|`b;(j&&#ugdjf;@5=rA%USe}vG;&2)yokSHC{}Wg2p%Q` z_cC~&Bpr$MgMd8kCkC^XKif?(l_qUsub?{-P^IoBeBJ9tq1Y4($x+B{7G2+jFTC1p zt=B^EtJVFSd?gvO7GyO(b3YA?<(ocQ_4$bY`x1+hv?rYzFR37p|83jS%rvFIOA*Xq4R%H?yJN_*A=`=56YMY z?=>5xSXd@$sFhA6a_wGVvbCL^oh_dWY5TN`GSfeAZm^7lAu;J~=B?80Xhs(~M;WPL zdF=kbt96<1FDEf!{0hM5q_W0D4>N{>W8D3^yHZB`&{mwHDQc60i+hgjvyZJ(qR z!;&`1D*6>Zx6gAD(=@Wx+4yPxdn`LM#Qb5E8VNc_R9(a&{BrN}h2o__GXx-O3@Ll8 zlQW>r-+LU7Xt7!<=aVWgsA=Q)>5qSc z-~Q+Nz1{r$t$3QxWS_Qf{rfqjbc-tTY9w4#FC_G3l|DPpHJ{D5hJU#W(YZwmHoRsZ zL~gFs*VoGg{M8Vbk&rOrI0Wls&ladb5S3sPJx-Z{zzPUmgEYa&PN+FL%vVbuKYmOj zY&ZPInCu=3fW zn{1Ex@R`^0no4*!co7=B=HN3CsmjZ982V~{UFcjh*Wvo*GDE6e<7nncOTM(>jE5UV za>OTV|6W^L+uY=D#w8>qg!GOMq=Uon$5+uz-n$qBrTpe6P{B7>G;+k&;Wh&k$Pg|O z5z)clzhB#WpGlwWuf2@i9IrxKSa>AOVcrtVAOuC*1CaEEeZ91}R@Z_50OCOkqCs7? z_~#Gcxtowy(j0t7yTbbO(wqZ zC36jA1h{llf_P8<)u_X>kBeWFh?xHB-o25!9m8*tE$V39Vi_9p+K@zh?`W6Oqr_9< zA#0t3Ri3op`0y(dBKO(^(T%~|85ODAW_tg2Xp+04$o@M}i32u@6h;TJ`b~>u15Kna zMTn@9bvtO>5wWr4+}Cu`N!THA^J@YF-twJyP6qWhR_a)nG1LIwY0r?TJ3=exbp$@7 zByF`9KrMjWXHa8qa`HpLwNvpoZAK}t!C>nH6o#%btZi@%yaD6(j4f!!L1l5nv|a!` zv-S@rA$>i>xdK1&610FtH=hj3#_7M(dzFQSKp;AATw7iRX!w#IQsKFq%rV&D`2(~1 ziMlW;>K3#oUqGJKeV2h)gqU0uJ8DZwS%QrkK#==dbDp}$2 zWVthWo!Q@oir@Gx&A&~FY~~mk#(I{UDNPJ zFJUF*nMQO$^d)LF*zS8K3HRsS_Em^;$frPDSe~^mfvSQ5Xb)$ALVI;rS2{%&7chhio_T0$r8!R3zQk^2Cwj6!u+#gMHb=5_=!7F0<+wKaD zMhZvvo5`uD3@(x#$qDV`nd$E->~Sf~wUq*SGAkMD(hr_ci_T6>*^h5krSYWE$vQ>< z7Y1RG@wzKI zV?8f#Z>4wCwD^;^v{@kk48q3+@nsvF?Ct#yHq1yE#=A#H4MkPJwSKU(d^1qVbS_Ag;yRwtQBhO-1H%jFk$lLxsasgT>);EVY57u9Xlwmr0R7NC za2hTp`TiM>r1A^=+Wu5dj{m~~iXkY2KD!jBI;w?BaQj)xm{d^-c6-_3BkIW<@9hYs z0`RWH>Z>{ZA||C=q+)BaX0q^hb8>1c9nNPn`%oD}hPJi2bn9^8!Nc9icaFQSqU_fv z5hJhZq^d=HSGV}gYNO6eZjt@mU>x)I@u=k2ZTj7F&ky_&q@1@*n~X@D*Qm8+RsLO5 zi_wZT@rL~h)NtguW4)>U5R=|RGoZwKGf4Gv?*N+h`z?U>qu_;t_y~|-lXPK!0HEzs z_yXr-0XC|+?6LU!i(i`k_OtQPUKu(0w#Rg6at*}5IT=l6R5q9OOX*sezVwR zf6H4A4&(JWcl^#j`fYuZNUEcV>OkD~oLF(>P5g`V(1-RY7Lvc6ny%Clt-W zB#DoM3aO>`(H@+cFAUE^W5~6b@I?GEQDva z`uq8l6$_O~YQF4kFw_P%^z1B;nl)lBq(@D@(LuELYEdUdL_F-7jZ=yJ0JRlVpFt3a3hv8Gk=Heii-H9f zmI)w0_BZF?&!wtQ?eaDvc2pz4;?XZnI<3u5GicX9Kmi~JVTTacE^O1u9CfsEjr*jV zzlFK4J6&ZliaF2YqN%AV-^>;peGB5AJ)~e^M;YUOCZ4PSwfs1G5$Q{`DdJ{p;QtWh zbfQk^1=r<44-Cv20|Uc|fy0-}u^pQz7emKmj`ADLQt5U-DeZn1Bx_PmI<7tK=4U$K zz89cBQX&?W*x+2MNbGfS-iS~VUY}keTO=FF&3efvaWU-o%(T}a*vUE|=fqwWuPBTa z1i(X$euXyQ+FV>b?nLZuUf816wdI2xabFn;+VnA6G?*60hSNgAerNA9l7+E~dp2Er z#V6a%L2{6tUviu3eL$UdB4bR6M$F;&{G$7ZU*cu~Vj|$V$bo~{H1fsm48#8_y^6T3 zz3gV8e$=Y?TG6#ZE=V)DOp&V{g5U-a!2AL$jVszM%vLmaf~PKv?J@mG;waF*UOG$n zGNUueLIlwfEK0nxLB}FM-X;j;B6aigHK>z&wJltN)6EGX$8*!#D zs4T(WaW#Rf#eHFZ{>qu8Lw`P;bWtc2^BKg+w6c+t%-IJ>LUm@8y|p3o@_s}##8PlB z{k}LqkoOPoyn+7}ZUp9E0%FPce7o-05aALp=meF``9q!nJ>dqI2xh81RC~-+#po)L z$x~1Qb$!z>(DifzE=-T8%r}hqTXOGXbsf{}$Z`v#O6|@NdYAezFEQQH)~7Tz_8Qqc zW^w6=E}6VVt!`vVMg~&4Nrqr$T_=y-HIP5EmjKY?lkN-5JBm-{AZo^#^yW1VHqt*};sq3EfyK!+ z!u1g1p+F&eQ!1zz3JKx_UMQItCH#xwOyIbmk&*cD$Jbk zmZjDVGG2WOp;4vIcc)Q{YlZCCIJcPpv*O`o9j*(NVWD9Wmwn<3uX#zwxMImeM@L73 zQKb{k3BKlhpPTjYh4;vgpTQapQ#h+)0O>mr9bQQg;6 ztkub6S0~^2g~c5`LKH`7r6`5^Nl1A5RqC=e!#?6W1dHJBLAd|nDpTc=`!?1w_+92z zak;&k`JWA@92r5bZ-@^UuCr`DUi2C?ZcEmEQ zt?N5WL-DinhivN{=2wHiVeW~Kd6uW_Z@T|nB3J)kFj+I!C0Y>GkY!AIJ7>x8K@9I3 z-kz2~YXN4qPU)(kNX;DjY;o~Bm`or=A?v^c%d&vE+rCbX7qo8Hc;S;@V?W1`1godR4hwD0d!ixAkhh zvAEzy#!-^I9;=|s4xOo+5w}PbFjH!4i~93uXLih?%yE3es_2!a{Y6%A+|-16`O>J45BY;ZmZ$7)lo+v6)J>F#E00|tW%)fkDk>6EmTEhSkTdql zI;zdNxRV1FkIHDKeOh62O)gj0?I-uD`D70^>Si8V)Lo;fmTbEgR3wqE_00ttTweN> zTl`|qE<&&Db;_z8jTvi->3f01dPey)wV`HzCz{0tszs4)y|uzuU&bJT#STh+GS4ev zTb;>2W`Z|Re=#l(fxs5nYdZ#x210qJozHoUtG=(8`?uen)AioP78cN>XHdzLv!1TU z?jQ;y)~nRW!e-zir;+q~dw8-Ly^M@#{~XmeBHDJ_Wkg*gn{5v*?oD?I)?M?%R1Yt; zjCPYd?_JLh&SK-ww+O@HbCzf8UYB(`xj&kwWPtP?+1J{7BWA zhA)k=eq%8_B;W&uj$bRKx3I857M@D+y+CsdzkRcf;RnUSoTJ`4{*SKTJxddJ-;fO; zgrKSVkQQ@jHj{JyuFLzZjXslU@OGW99r^J&YWCv?QP;u#?(TrzX^acgW+z8mI0;A0 zWgCr+RhqUAHl!h3j*^$0H#20o6XA3Ws?D5}sX{t&_lfaw5jXu7@0Wx^jbNw0ol!0o z^fR}vPP>knV4%f<3~*Y0!PJYMWvf2_l#js&%@Q!ZJ}p3?)lM61^)RGmjMkP zgG?m=VC?@UhLH*Yh#E*Y9dzpc@zGe7DS|})&m{YE`HR}=hMH2t_3n}_kE)QCtu5kr zPAYGj{SiX;=e0OOLU&5|rQf?=7jq%L_g?w*i6QZM^@XuDU7R#)T%On8KeY>2=>>d; zo=b0>G*ShgBl6ECPu_WRhHtIuu=IR&c4Iw|c{ajDca5abf*@=z+Xjz-%$U<+hXB_A zP24m9E6v}^a^S^-^b8CC36rcf$m=F*Sze{1CguAf<9XnB@Ps&>Xy(-U#>aP+#t-~` zI+%j~)GxH|dKRaQn<%HHV7Uc1=uM^N2AuWM&0SmhbK#IyqlSsqgMGWV+08`2)(Pvn zsLj`^jQd0~-KoPRA;tJgWj4d{@!i`e4P)Uv_Qa32_jen;_8);sL+p)(@8MPzPD%-r zROQgL%wm&_?8n|*+07q6pj?jD=f3ly`C;5A$(G)bliu|M_FcJ0kF>Ich6V3VbJAlx6{&Mq%@X8GOP4u!KJpT(c0RGjY6t5^RW zHaK(%2)2Q6C!b8DgADVXuLu-(=n&(FeYJN@#%0SrJd0SIoVu?DUxus<2I1~)lT1{{ zq;h}hlaEW`WR+3aS_rSKyQpSOhjBQy({Ih%w*X?8s8RKnF#V)-Ad6|(iyc*NRy7AL(|6t^5_uRl%qvJV<P1hUgO+KlX8>g zq7JRj%>Ja&(b06u3rB*cz@u1DYeU|?a<-e><}OudU4V8wwh~by5vSJkuZnRLH(VSY zabmEKqCBo&zs?qh;f%2&dyUCGFF$`Cv^&Y6_$x!U-INw};+MB#JO%@@kjMZx_OQcL z@%4ubrE5phfop=P>$P?x%1yeprN2itr3G|ZJeQ*VcW=g1BMi$))2^$cm#C2-$PJo4 zvXU3&S+sja;ul&e=~h|qMFpJBUOdzGC}`ilxcz@vfKOhk?E?PaY+8$vsEEO-+XEO+ zIjiYSCGWQ|Bx>(*+c+|Iubq2m)#}`_{dE>c{vlmcx}+qfytv`{mfFKrlE)65Od(xH zUtAKt{n`6Sm%>@i^K9bn&9^p2kw5NwZM-82Mtma;n#6d-A4HntB$-mSZLnKo@dZC% z)BjKX(Rm1aOJ~bmU&DLuboE5Ut3@b@KXPW&*mpnL9bFH@*zF#HtYc2C)8dX-9Z^I8 zdO}cI(rfrK{n5VVd8$R@hsp8r*@lx_RvfpUN*E8m5TXYYP=pms=c>`(bQ>yZ)%U5; zE4EIAe(ixdnR-GquG9ZgRvLLF_-%Rq~|F7Okz1|M%^syG&?)bDr|@ z`O$XtGT6>zu5HM(<9BzQzE3Rv__4e2SycjM6nxahuKL$yl_Nki03gjY^(x&|7tAfA6?dKiq1A1V$!i$}q_XNK*g5)Z`eMQzAQxs820ai6^yEirU3%G9<@ z3aK2B>!)JP&1LzSMkC6D%tun1H?Z{PC1PLf_C+V%e4?xo`q_}xPcQR+D8lNl`J?U$ z3w<$j?_FGM-{4K6fJ&|BODv1`|m>%%^B{31qhZ^6su&|6Lsm+Zwje z@?Vy&1)TJ+musXpKCUI$O87!e*VWk{D{g+m_~8Pf(XhYKv>kA+I5%JS{)^sb%i4Bl zk31W1;C``qS`DXW&f!p#kVGrz#`&|`#RjabbX$y&`xLm<+_5pW;k(Omx9;4t^_`{E ziJsO)mKLUV>!9uR?Y^G%kD~>C>$6mpl)>k1?EL(jg}QWp>FMdv%*%RgMJFb1Hu|}} z)XE!?Z@B%9^h*kd?{u}Vy@G;rmcM^s{lz?j(o&6*Pv3H=#8pk1i>$BIIE?vwhIn6b z_gxVtZ>o&39VPNCVQBz?26}t{Ws|U3k?|8QKwxj#-3rDcGss8AnoN}|q;YsIgCvfn zXW7!zRPLWF%LAGREcIoe?Sfn?=xuGF*HxjfhmlFWzoGjD>s}5*@N(3Iln+;R=-(3< z_ty)5LDYZAfy9adiU*zULMm`?LTcO)c>w5|GfXcqwBh7@3HIHazU=}GqW<8?|B^Su zqJI_g&n_oPkb6OzSdut81oBfqe0{I(ZG3nHIJ;kHoxO^h0)uN{YC_CqYONmh;<`1- z5ENOilymPq^H~;}5>nj!!;=WFA;a#Z*oIs~zl4TUAxx#n=m{L^`wY+d8YxZJZ(1#a^tsv7iX1rW?4oWZb+z)WE#2-%Y2p>XNtLzs>NUT|Wb0AO zXnteyHh#CsGVk`7I=IjTi@XcJM?a1moIHHXN+{KW&&+@dMO9?-$wz(P_nk8gME$^0k*`%qp zef|DBVF>#7bbbqSV79<(uGXxRi2V@FT}PPyZ~hvp9)F{pvRGBcFXLkh`eP|`pJ6&_ksnNv6>-JWjqzu?U#DZlIPs|vM z_#hcNfN{Tnvd#1?9u;hP_Hmyu>}PGX+ZDFhFJFX-OB{aMh>4|F@y>bw;_rPfe6h(u zH`n4<=T})*^G?);pZZb%lZ1px;d;KKprek&=S8XnBe+rG*f%mbe0kz7f@{&WSk1%1 z<5?B|wu*y|4gIDy1hH+~B_R$1EvEN_7}r4W0sY-}>~;{fkvFIu!#Uc$;zbHvSBj7{ zQe5N=TxhmLdId(&$9}3Qe?dE0puilJe??ThfDy)=P#rp|#FE2EEj3s%jBZG^5i%RxuC8Qt=bIMtaD;gb;I~Xz})p*Oydx zEDW%11hXBp2}o|4I|~l-&EQabP4hDQt36hdZ1e}t&$66Q^(57r%}=nKJp&YI7^Cv_K@ zSDZ*sbv{b?f*vDmXow`)@x0ch7QCoUmFdVLm2Tm2_M?q%X6wrhF9+YU;r7`{q<52b z?LvQ4@~U3Vg`M2wceZM=s7Z3n$JXCo1TqY8z0jZu=Wl(fo~Gwb;k2H2eT*4{h)GV& z!O~*p@LP(iTYMWN7g$}>XP-&WyS*)K$Mv!0o3m|W7P?+9hL$&tzw4T4f6Wg zdQa8|p?t_Lm>*&ej0gk`&u3mr{vFS^JD5Da1MRx8u&_PfnvtygFK`{ps}=|x9pxk& z;&h|PnhfJJ(p*B&az%W`nTg1imXt)uB^1(JU3?GX)XMqFQ=r36BPdk@g@uKqjXLj- zl%N60XAJV)r`1(4)seI#s?5v~8ijVJSlt&s2T;3az~F*1YCHUxNFNIUMnK_-Sb2`|4^T0krvyF}hkqZtM{1vY#5++{SEmwhuo0 zWO&}v$s&o>zi!O(w(gOK#}-f<{gI+JY8N}pUH@iOXUc4g>fvQq0+XyGl%y~y7fb0M zo;Pf1le4#Z0xnLV^nk3=e?Smn9jc&Lm(G3X=HDkSqi<+Tc{?SI43cg^!+)_qW?}U( z4YE~*n}eAbU{VzeQ7R-tJ4n(PmFghIeT=@g0XRL^62fGFo74r=wJmZ*z&Kyws*NL% zfx2I!Y$BY(-eJFrnNDDmXT-$~E}A}0y!J+|fd>Pj9t>=xfUquyz>NZ;kpy#r-yYSl zuPFr4#W+v^pP%SNiaL*?zD8pC!#xUWkb6c(^Sn#*H)(*M=z!K=$;N;f$%I5xB4hbg z=>$B}tB%6q&+Ct=9vOb~(@aQxaL7rDiNhnz?EZZE{!Jn>&(FQRZoPkA{p&B6gtytT zt=JV)6v$|SE*<11zZe!oQGUCwgw@qtv?|b6T3_@%nMhpYEppz`tz3U4r5EKED#*oJ zWQ}f5^p=)#-UlcAGP?HxiY@#I=N31S31oIVXdR}23F3Nos=nLr{u8<1*$b3rUV1<+}qm=I|h`f z9p`5xc>!+?%V{Y+@*!tM2~9goNX1X}9o>t>M52VuLt*0LGMkYvU%z5Ta{9cX)vNcg z$_)1MXRKWW$RhCW?+`OU!@P z{8E^93PS8b(z37Nz`1+`pJS+^1Sp+!c2>~#Bx^qxF(^S)?DM3gB&hgCVIWMP7`}m} z)vNC4A(#(XpvIl)vb6^XIbO{MTnKR5ee`$$_G4EVcL=hjXcAUHSJ1|w!P5luY}V^a z*C{b-A0Ti-lfp&9zF_HM$rJQu@}|Iv;3*@!%qgwOcCv)cm0)o(0`xcx;SHj5VEzL24ML&R=GF zQ_8_0N?869#^j+x=l)Ln)6D1U9@Rif* z;LzV#%4s?IA#dcCS*y%Pr)BXk9uld>8$+cy4#>mjfY`EjTNu`>2Rw<@&DNssBm|m< zjAk4TE&)$5WZ;9s3?u~M!AkQ`4Ovzz_I?bxU^KCX+T=hDHmZ*Ty)atPZ_vn)aXm;Fgj_9iojx>jyhBxT>r%C3o1e9b>@ zz|O4F^Ucut6egw1qi!^Fy(P?Wk%C9RpZ3=)Ux)ve4t7jP{DswVJ@Ki;;{EV!rXs3X z!}u=AVT=cPpz_$T$G;Na2v74jO)lnTgfF;$|Mv9_-yqr`Ec`uhK2&~ z)~}bw1+3(}T8raVf*9UcuLUH{%*;ethhN?E8~Xahi^lp7+ysyzl%~YAkLJAzcLW?& zp|V`ow_oJFOmyE1c`A24AGLxL!+B`+2wo5yBBc_2K^#lya=Dm5{ck(C`%RAZ+6muM zO9{P=4TuHX>(JVSAh1mSC+;ytz^S65nwkuJfg^*>W^t{CY>xXDdAm6B*)jXVm4_TR zq$Qv0^c^hz@WMVixOc0yBJr+5epF(}Px4zoe#Ad}rqbND_!+BU#eA$3!DC3SrDZ+L zRe$3Vm|rsz3uYrZsSd@JLvY3+CWk68bDcjDYTLwxhgq=`)rZ2|aD@)vt^Nvy0u`-9!6 zEl=#bDzABzxZD=;<>H(Z1Qgo&cBc*#O}45hgz}qHA!`5egeY_%;+lCR^*A%|R_Gao z*fjqzk+Z~u{DLHGYsa?Av#7Eru0N`vfaNZq=YHAN9(kTTHVdB_=|oM)1RiA}&pL;8 zf(NaEj7pKcctSVz8=?Dvk>83}6QToxKTY8UB+tv#|lgcr-cf9Tc+Ou!iyL zF6B?V8|uoxroYfKZBZ7~(}V*f37QqoJx!PQjG-@@ZT!`^VQaaB{o zgRgm?C zE07VA~t771t?>#-~7gaj{ zTi942T$d+oT_{LAvv7{|cbok^UQ*7yG<7LGFL@TR-BNk^d6MccnczevyQ$$mwAq>c zAildniH!TQA>WUCp1qj)fP-u%(Fv~?zGIxF&g2N+v2=3zXqlprgcEu}*blNUoL9N; z$cVe{P1Z^e%{9)R?Zjm^(<8!?+^;q%mMR9|-TSAbN2#`D+wQ>;2aLX9#+~by4G#Zi*E*eKr!c0UKq~{ zM(z%7iv};1NNH(l5QYwY`^F6!;81-u!T|aIb`$FKH+2a90)RX)11vTI0#@moGs??v zxO@WLspCFj+TZ-5uxN41j8=NGuK?T80CPgQtpO^U{AsvUVSdI4REJub0#~sju<6BI zGBYy9E=z^mprewo{B(uuBj~0-5kPMl4Brd`qq9I81F|mf`A?yM-$Y(F0>lv*w9CBk z!9mitYN#Ng=v3DD-_?2KDcG!peY*?B*CqPYAO{$t6bg-2QLn9W_U1@IfjV zN}(pFRQWHnsLdRx%oJ=zUB*42pM+n=ZAxr$%2~%&C!AP~SpG81U$Z)830kgXC2#Lt zXdfdYBl%2f)i@Smz5#=k7ocrb(0cF}DZRy|q+y_?cc{+zP{qvE}`qE4d3DQZnYvG^D<9n0323d>9%L2OSWW6*vN1=ykm3*wg$@ zB4|8FCmw`>R9#Kn^(-J+Ya=PRi+Gyc299;W+$qS(YhmCt%{si`{&cX&{CE2j?o>5a|Q)7qr;@^3`LdI_L$#d0X%%4)1~2qahYH8egY}s7|E&)O!Lv zoyYLO(n3AH!e}eBF~V;6c&K$T$a8I2fvvM@FK}7SJHYt_8!ZS5;0P=IH%6WdZ4sBz zR?pi9U~UzYfu(+|cp2}vLm;-3*iB(B*I_W^`KV+g1*s7d3oLDzC_0=D?F|qbQl>tJ zQJscEFK(e>VB2Pb#JjZXDjFt;%o&QWs*(T@{Es_=;)_VL$%iI_*0ecLayWlsx2sbS zrAMI7fIR`>%GauJNcR40tgSf%rCOwMeHyB+J58;!DJdO?M@NoQj!8vMQm|lSL} zavmh0lGg3ffIeI81B?Zwx?UWzsaQL&8T9lXe=X%Fr>5}G#%mqP;_Dl5D}R1~L4ts% z+9-(=#}aN#!@;>U{e1O>sIDzH^r~Ex?(Xi~;n4p?Xabno?gan_!Vj9-7t1?VROn@| z0ZnV212zZyiwt-~JVB#Zi63(aYA-;$|KVHzy$%T!Aggf^w8KTmg%l_)EiE9BvY>B+ zRsb3Z?0fip#-L+`_=2l1JprtTH0xY(cg9pBkoA(ZKz=syljzOWRon(&h}g~|Y?A){ z7GjkYGtF9pKSHXRzyxtKbV|?`!kOX#r?`$WEMm$?Pr!cRe1s00#C#e2E~r5z(Ln{a zd+?*+C{o&FkntzJxBvgJ_a@L-_wV|s24jSzBAF^7nPrwCDj6O;$Ph`!N+KCkGL=*m z88eTMp+Sl=r;jLWYoVu5b13{oDJj^I!X%b@o~3oVDNedw;dw(DOXs&*#3c z`?{|Cz8&aIxK~@vj&=6F03B)j;jRrjoxlwH!f>fay8~)ZviGk!iL*`}4}?}aG{go> z*76NCB{NsDW)AfB8i3Z04Qh^kHuzLny6B$-_9m8^n)>o;s*E~RK7+F(!IBq9Ofjk( zKl5mfU_bT3+P)ofawV90iJ$_C>aj=!AEzP!fB=?0m= zrFfQ+Mxad2aaX<;=cRHMNf<;gJpvzKOd-?DBNyvunBA~l$@+V6St9EW#1@P&y;udZ z#}xH=@np-xlNNKC>hm9H9t?sn<5NS+MmbIl^c4oXm4;lLZU!NDo?q3!@edbZ@kkWJ zd`*-q*oIXi6%J$aPX-#3)c%k;N5$ziS+r3&j&7v0OX;;vVyW+`!atbI=oI|)(m@P8 zj*E-4=bhfvaBn|bXxW)FXQBdW(pSFYib^oyJ(HEFLS{Sm8TrpVeUhJPeSLUtq~6Fn z<69&XxyVhIIR>~CNS@*YU>~^HgFgSM28rD`LEGsn#g1sIpy6RBi~6ex`TYlK0)B5@ z;0uc7{XWx9Z&X!Zul>62H<-o$b#MJH3F!TYf{F-Y25S8C`~T~!S^sa|-EfPa?>jOH z+LQBM<+9(k1eN<2obc7=Y+J8JH}8q;-I{E$YOoui32|DNX~$nmZJlRd=Bp79*n1h} zJ;xH$)3=g&8dQyuqg8o#^QnigYq+)RBQEAW61Y8Nlq)6Q2QV~aM>c@nm6Ch7Z^YWm zxov`iBcKJ4cHN56D*+yJgY|9f*7WuE*4*6K($do2ZdMys^7SufVEx|9qOQ0F3$NFp z*Fx4$%)-I~&B!xr&t>=I@E%>+x*yAPHk6f@8+)uj4sajAyA)QkqB!K&rMUs1AjFGO zmvOMn_v) zqem`>V*}h~Ivsl0`0v8}{x*xM`W@gYls!`l`7<_k#wV!w|N4M@jTN6n!UhdS=RG$; z%-9BB%)b>D;w;E}6%`dfnNKhLIJx%~jMjRv>l@Rk_apD!0SuS>4tlTh{IXSu#x>y3 zR4_r_lLMdIi?Rz35B2xA;Aa3Z9q~rcfhKM!%eMrO8=N-QBS>ts{mGF14uKtJ`p++W z5vVd(nN|3CikeakpbrQ#P7`G%C2l3J6c-Gx z$>rL^v1t<>dk3ODk_jUue)Wyic`tH;c3yHkq)LBeg~LEvihvC9rAFEBFdnV+Vp;9y zUl0mGwcdEVo^kW;6R36$v!jGr=^dhqWuW_C0OK%jQNTFiG&v}ZF%%~XjmTtpqOICc zDp(%$-Rz-h2WnU}W*D{=L1iL_&^_O zHfVWGp$B*m8+7c~pj5krX)oBY@sG4G;`tKui?st>s-2OSFoo@oOYjb2&6!9QLm=Nn zOcbYM{@{7{tv~kgqBoe>peN-|R#jDZv{`X~^{pP2MeIyS>npzKl zsRRK`YYgaEj-V`eHhdExCtAM)y!Tt~jc#;(Olu|@NfZ|QI`0e#^nGE%;J{Psc02N# zx}i}9^a5NAZAbItYV|8FAMUPLi;8YidkoaE4*b9|hX|`mxGoG_ zB3>BSZQ2+5+$D=QjmDgnHHFXaLC&?c^H(Qp52$t5@YM=LZPT`LxBe4m_lsN-Qxn{` zPQ83n8YUEmuvoF>3wto~)uw)x5nivB)4e0eq`DhBJnM|5RrgKSY+}9EpNzG)?f*dd`V&v`j-TDiIh^YXJ@TS zoqNG^UiBB2|8Tfj4w#9mUg{${Wv^;uS^4PuLF0&5g6={lu$nm8+tbYNSol=m8xwIw z?lut4ei=c1+KZ%b(#J*86bNC3?~KLHo@*Cd{&Y^$@jd6YdK|9KBx+s3<>C2sI6Bgn z4oZyzi`zkp+Uldk!|p`eO>=W|b+uZdx|Op_@PJXw&20zzhKF~cye+UhRxoD}DQLi7 zN@a7|_T`zBFO$Pfl}Dd3tkzBzmzG|?j&(l3t3`JJAsGvYf{q2>$!Wi1d~;%A!twfM z#a4Rz2xSkm!x8C%Z07}V;#biystWO0w!DmD`!zQ=M_1l{O~_!&mXj+YE(uD=RbeAx zAU)SNNBuuf;}T!(6^%_sGCAwoXh$+7TUUkO`Hvz?hV>3LuJ)@^yu2yE=LCZ9-R(8e zgRFK>JdKTw$;!UBFc>EY6YUSy2IO43 zcC?o7xuBe)qAhx2eFruFtQQKZ4fZ-s_r&ANhBY!d`(`xp1oeQS*PO)SZ=sy5x9R(^ zkUZA{)Y(JWD)$QsGN7_U9mnU2l_c1GMHh$WNhHvRE}g<@wmAE!cqwT@SU(*8rp76R+jb%Sl2lFH^Jzs6d>0~oE2IL~ z_@?AN<8RYx&*Vo(8-oBrz4Y#m^`689Om%Wc_+!_o5`bk{haWj|;@Z{7QlO6%m zD*@#L8mG9;a7lm)DG`-ZWM;meb8YG8%yBNxjja3B+WFO-oSeu0Ipz{OD(pF+{&w+Z zyv6-GwKFIAHfdG5B=dF>9rUC?VVJTcxH3SoWauWCbSn7&@^X|H)XGt*6VJH@TA^wZ z7(Ehn&ZmOQY&+I&-px3wd0v38fj1~+8rg5f_o0!IOPzc_uoRl^+#%#^kr%JUX|Bn5hrQ)>C)QIp z99n;S?B6ox(JVWya~2tgv-|@{G@MI=^b<>qz9Z5fv>zv=%;J)yW7YU1IF^@UpPg2| zzXx%}jYIfZXXoLadsx!$Qc~iN#J`jq%~9I3XOEou-SnRbkY9YEdaWW*u@4_R+tU*K5m0R7X(36Bf` zlCE!26hN!6`*4ay%FiP-l>2uttR#4cqftiyH1v{`E(ha&x^!0@uDuG13isp(So1y$ z7EVrFm$`M@wV^Zaz;sqLVb4rWwS=u|$0)PNcLf%Ce1N&KeZVY=cv3){Fszx%9!6U; z>S4h&;L3-mx|i_Hf9aj0KAWsr)DLqh`$%WSvuwC^X632njUPhj_O5oU*|dFRaFBi7 zI{x)MB64zvYMJWpf-rz1NZW4>!o?#@l!bfu6P(nLBqQ8Gw7v~z*{}hxLe|vO6w?wo z-0%l@CHOQKfM3CMXgLAtYPvke@Kh+ym?Y~5P780MdRvg(nbW6P|DFuCr*jusD%ffd z=*XmAy{Zdpz=o#2%`-Vb|56pCs(lG7rS(BH*jysYR7pek76f;`(EAQeYtz5}3moUW zdMpUmlU6wTz-d!z`5y4n*{v3A04RnRW;ZONfSqgT=ps&=6k1;1>l%gNp)JO$osV+J znIELAWw}qWr3xk(?oQ2TA%F zCMFQ+1LEn(XXc<=5!G&Dr=j7X0NKL6|c3#|O@UCOlp zXH9=E%o1+8{Y*hC_tt}#4W>eAHHF&%geoQrmbMZKgR@QsF=KD_U#92MW!8*rsn~zG z0PCCes%)6fyDA=^-*4_TqXRKHz1jam5S`E2P}_%qUO?CnA$8~F8fF^KFbksFsD=BLwYSa7&(LmdJ{u8Q=1C^}tY(Dxl72Z=c9h;lipUt#CmZQc+ zJ$xnVo_YQuiA%>sR9k@H37eRdqzMdqVt+_)J^?L1dUg35Eb(txWCWumf>1U3V=w*B zVERiM?Z?T27fF@+ut073RbZGIW*J=7^2r>-{z{M7*sQQ6X+6ZD09AzZb=UQKpQepC z4&k$FCMG7p@1Yq{v;~Lm@k=}4@r@!ugKRx?*2l2Kdnzk4GxNa)J3W?l-%g+209yQ_ zNaF63oO&zH+h{I<+mCpH>(v(a3zXniDNwDT^*3lU_pzBRq9$>*|;)sTswC1Lvfmg??q9z)uPv6gK=>sM}zc+5DMuJ_gn z+ZVU)`)M4Kvk6Ka%rQMh=$+k-%~{PB;EVpFpXkNJgllO}e}CXsfhEShxx!{M7Y@4( zzwX3?CfM2!clpG{Sxoq*ZE*PQ1yw~Wu#O(s=TaF))qrUR_eJ-b@9W-6ZJ>u=#hFhH zyj*oTCr;8N^8UYHD1JIy3XSmt8WwFv4h_0Uwsq^!|7BJxtgIRhWRUaf(oNh&k=3hL zPh*0?ZgVJ8P8~SFX z>aV1v1h@GmIl$7EsOkwRzSzP2nqTh&3wyBLKL;w|U+xRWS0PrQUAUP!{IdYPG-2R@ z`s9PSiJ0JBOfd@Q0zV+A_uRi%Cf-Nl@nDM zLZKR6`s9g52OmLQ;98Vo1kR^QP#JV~06Vv4)Eqlxf zQg9pC&vp2R%NB{FtFNtL`r6kw2_Q^JPJ-ph{yz`=;r`Th!o4^&9D7RCbdNBqzpNYA zp|hh(Wi+kalj?o7j_@0Bgoab)(`h= z?}b<1UD3vO4S8cPuiHgG1PpKR)<2(w*WAR#GDmn%u}@{jr@eDW#@kh|>6+Jb8n4}` z6C>J*oG4{iA2bLQilIxRG1mTSasBHF?c;J@>Dgz*{cAgduS(mGuP1A0u#!>jk*f`a4DI> z1~nwRNdK0Voa@XCO>Nw2p0|dRFwsf3UK$fofBpjN!D~I^$E~r3>wSB>Jgj)}`wY|q zRF%?8RXkLItjM*oqoaCq?@+Z1F$9sf}hbqDiM67Tna zm`(|`fA`SvBM|>Z6Y3Qk{{Kjf%9?@ki$&pm{P^)sUEDC_qGqPqnHgkIPgmE!D4Au_ z`u{9%iUn1-QJg`7Ap30>eS*#p9ItF6J^nyMGup$abL>?@tD?&8%*y!Le z4E;nwUf$*o%Fe^(KE^v6@7}!&{K9|npD4KPxhGvROuo}21|sA;R-F^&SfiWCmeZy< zefuKxae9O#biN&$`0*pedEM!)fRl(9*IO?xFnmJx#yvral%VKYn3*|<7m0iK2wJ@$ zF(!vthDg^0UH=XvSkxS zcm6qN0++vUQU7b}|37A4sfk%#BWaK)x9st^{0;MZDb*JE8|HyTS&1-$iFsCV3uqm} zWM7~;zO*!LD0bjsv@Y~r+_n=_6rl0IV7`%sg||Q7vUJ_$9>Kev88JlI2D6!a85zJG z?gF=Y(77Li?yC>rlcz5iv3SV%qX(G`f46b|p?j$G)tKswJ^-^rK%@UgyP4(2DKrVN zgpz6qiOXymCb+t7^~XQ}M0|=j9e|9w-?cTz;2)e#sXZ9;_Jfmp3YH@9`$llyKZT8s zp5Hp!K&3iX@@a$wg@jNN{xd&X<})LVq8lV>U?LneZodgq9k8%0J1DiR-|#4!-GXvZ z--4h8sDEm+S;y(dn|+wj(*SY4mAO%KhdgDFwe#-FZAEP%XXJuW~Ct zhAx0IC4k$A@U7GEGgy7X$gYc6)I7{W*CGNOz|GmZ^=k!+^fgaEK#hWYh&KazT&kEy zXyqDq;nr+@o>&jm5){kQ`w9*EF*uPh`2#Gi6sj@}^4w9ho*frft{6cX@RbKifeSWG zWCGT;#c_~`>GsHESq4u8#?aZ75c>DpJuGgmot;}=y~zV`3ckBnjs7nIM$ZOIXnkbR zn;=q1NNuR#W7sMLt1eUbA_Wyc#^` zsphLzu7v4i2CSG3yFdm!D^Tuzetf0BZgAY|*r7w4qFf2hpOKb{bMmTs9`5Ghc+I)#QQ*;ET#i=0WLsv{b?G_03&FQqtm5=6Ji zOg}?JOuR*ENvqu@K~M~(B9+}o@_3;b4&Y`a-o6dkkpSQf|H0O~cxi{K0#IVC{Y-tu z&~snggX!0u!e4z#5cEcbRv3E2R`vF4nz-o>iPzLs|VO@iT&;J~>qyLGK+(z2JzYdxuda1Um zYz`5IErt}snhkT#p$p$=ZZaixK}ffGw}{%ThU)Id*K1c6Bi4f4!QzEY&>bwFpeRC1 zwtXS7-u$obO(&09_K+WoN5n}Wz?*i4caNwEJ_0dSFO813%=2s8pkAn*cTQ4AH0WKx z06(6~7^e){F2t<`+?rvQ4t?*AD60}!pIn+VE|au2BiuiLP*BIrFdu!9Bv4n~jg!O| z%*Y}64@n@zDz?@J+la9|btb36k@}Bs`(I&S3zr#fFhM>#@?Da}KO?fK;e0_aLn06t zc@)p;Y;novk@LlI3SpY-sa_>03LXHOSWxnw^A&ItLCgtSpnboVkL3hPXtmwM^03a} z^wreVFZagFp7O_$1RU=x>*-9*CtStDDWJ^Q$Rn`VbRjp`H*$*X?_AR>duHSfLRX@a zck|PywrFj_|F9f!?QWZ5NVekineW4PUNm0Mn%E%438M;I zKK_M{99*0C3_)KGp^c(IRZL85Q#e3r8zcU~P_)2Xl)dz{w6yzv>aKCzf9$~F;6U2V zMpEjxAA882OS&KpzJG|Iga_a3(@jywV_mzY(Dy71Y_4RMy<&H-Vfd5SUv>Spf8}pp zWgE>l5w*F-fQFWDN%07Mi$)!ruAo$YslSDys#P<~wr%MjvW=kY&h{y8zkG2{3r|w> zFGR0<&tIXUqyIOEYzu%5@}GSEd$#lMFZ-`+;Q0q`YyHCo;OG3;zwy8J#bKHI_m?5f zBYTXxIa7;l6eOwseIs-d!f+a>F9B94%{a8G&U->9g?Gp3sV?*qS5wpX$TIN>#}^)B zU?r4XA;XL}oof=%2nJ%$L$$9ZK*AEh`8X&u9->z(&ejXlxEa>^Q%3&o@v7){t9~ zBiC#Y@d8Xij;dxPe3GG|`#?+a{lEnA6LxmRE}aUOp5kS~JftEhm;=!pK^o!E4&9Cf z_Ykm(mY=h}6psM?PvdykpjXZzv>?Z)UE-De=XKVK!!3Cn;^F_wEtx`vk8Vw*5ui6% zjN>jCE@}(5<4Bauf0W>jTTTGBM(E?A8EhZx$Ib)6t*R;r>;-7Fbsa!<{fz`wefU_p zGQnUrAN&Lr6C_3JUgXkJpBd*;VmSH%UGv?`OSHo*&v|!$YcHa8JB={-Va-KX)aY_Y(bp2uigS_59J$s{la5GG z8eH1nb^cr&2_e)Bj$ftu-h34hj#S>y)cy#Z7XaQxTbggO$Ld&$jkd@BEBU8*W@G}h zqa8DTlYi9*{%Gd^0TLR@sI{I%&5E`>6vxOm)35-sdO@y7{}i^ApTek5x#{KhC(K?6 zU-n$KQYqSW`1jZcn)XqVvlq zsikpuf36pY3$Z8BswwovH&6emg@xPQ@{3)=Q=8#da8tM)b_~^PjDvvo|m(x6khwq(2AJFV12p6lRXEHl}_K{{r>?rUseI?_6*mX{hiI&rNIDXafPzN2y0I z*ONw7`sc!&!G(M3wd)5;tBc-5HMNX+kPsi80b6D!@4piLf}Lj$jyNvXzTad#9)MrM zEevzV2gadrW(4bRvDm40&(fU6pvw4ncku71`WvZpwPx{0@yd6ej6KG;ZBXfZdfAg58I`aL$XW~ccrzP|N-F+ZTx2h7h%^>7DlUNN zJ&Mk(f=CBs!Z$(a%+acfXa;|bNoUQT=@h!Q2}0Wv-)VvrUzS(G*oqXw8GX?2{l zXs>8S<68}9G&7&}k|d-gC7X%&(_=e17-f*D#$FvoGv#m1F~zAa#S|}3nt!7cIGU?A zR2nINKv&neHtfEJU^wb-IaqdSziTQ+Mtl?7SkRX6_v4FD=C9CdO6=LGdnxa{{wK*K5lQ~3e|g1 zwxjU=un@LyyXv4JwPvI4J<>T*tWAYrk+4&cACx?rlAY1}@oI$-xsVV=O_4pH;zS3LxQeKHZ`3k?V z_8IM>`XlwWL%VZL3gV9f@H}ns2JYdD@y(%Zij9cqx$V?eK$U-T64m+fQjp-gTkeP5 zLROJjm2|Nibkyg#W5{to^X4eK^OUXqzCTl*{bak=@S%wLgBs|1FLsofcPM9mFM z#8a%;VJ#fwUFPy8!8s7>gKV;tO^Fz<^n!2Fo?dT$&4*F-$hWpCQTo&mkl_|V4=1ID z>7Zs17u!poE1h{~VJu;kI$qSIVpR3y*W@eX{4W4sh%=Lhf<{$FD~Qf*^O38vT{$;W ze2_VRVdf+_Rnt_%V3^aM#})Z}f3~r$pmMg;GkJL33w(8Mwt3oF;SMHlCAkoV%t z4H<;3%1S&3#q*G?W=Gy`HPScUf}y=Xb(F!RM^zs^dbG?pD?9te^XK;3(H%7$931T` zE$SSGx|3z(?Ib&$an|@x=VqZf$UZUlg=JVDL9wWdO6xd=vFEFqz1Ms86fr_eQ`2tr zP7kG2=<#rcnqR1PK0uYEsNMOo52nS2POI=r>xwS2(=B_1d7J6$?*daW_UJ(=>Fjvd z?awQ|heZnaanzk(t&XpoOZnyVwRXF3edAnAl$doF@h&f1*>3G3O#Boo!8y7h;@6(^ z|L$K`hF=^&u0nX8KC{u?Xtwyh)p6o)rV`D$xQ>o}nV3rQb(_Ba)Ht~J@sj?v`say1 zt(t#@CmplP!agyRV4nBw+c}fFY2P5wHxL-IdSm`oO5yFud{R(^$R9tmIC?g zWJ@x>EiNZFhu3K$@y5@4Zd)6D+tg6PDV2V%D5_-dp*RGY)&dJpV8gD!zP>&Xi74A@#=>$`#q{}v=vh-}NhrmnZ22PQy6xF6!C69kw$Zw*U03k@FXb zncUn_Qn|sFu=vtPcL96#_bfiJa^C8w+a`W>9-v{jQ}X~8^BFFm*qojVR$uN^m(s4I z5HSb{bK#(NMWUpSOB|_8pG_vtA!5kRd@v3e6bg<(`yIGF?T<=;zY| zWaB5xApST7@-9nQnAlv9_(|MGP1Dn78m+$=e(N|+#E3*rY=xAUJ;~tV*yiSx%9+CY zfZr$A4v5Dz?49!=$oB9z#bjh;Byvtwtzw>ASO^UXab_JFAWn@a-@Jzrhh0qw(`I2d zlN^#-rvsO@fo}1g#QVuKgZ{dm&~Cv*v>+=|He|;zm~K%xGr?G3Ry1_{PI=ZfNJJpY ztv(<8ZjYUjlq4MA??}R=xYxeF^2twH9spQ3TkGq$O_Mc%NF_h*$Z}?-Y@k>?D>t?B zw!^^dAxFwXAv2CKoy@z=?hD9W#)r|iaPQ|%BYCd1jr*i{WL*-Mgl#BU*$?Ew`-1K` z&J`?L)HtMMtWN$W8bgDrQsgNP8Rw{_`0VhZX7y)>?bO{Bm&ea98==WRM%Y+8vdK01 zRs2a?a$f5%gxhl2HNPLera!g%l(xEEO<9K8({oI{1mAx0<4|b`srQZ2@m5#b=ucmQ zV7qMYMh%l7#y(LNN+@DqNz;aN68lUj2GKh7`?f&2lX;zV@m3toVDLt({d#&!J%P-K z4Ugakh8g*rFdrc%1uA705lOQmCL$tbsXhlxglXi&YsGQ0jLeq?=*y?>9g2cS+q!Wl z9}>7&v5DB7il5H?B7@B}a4*O83vQ-ey;^W6POPo&)8_s-7QBP1OhIcs4r9(l3EPn7 zBVFS=ZLKsMv(%($g?ZwgNXjz%w+={pJ3CWu=%5IgH~il0o5PW&6Xq%;BxLVNBDqYT z{_qbM5FziD^?ho;$8P;c436(D-5YUUGaH;tdX6&&k`3y`` z`ABgL^#RNo-oQqRV(-FqvsKfi-dBGSn@2`wrpLFAncVE84mcZ#0YV61oWt5zxMiGM z5#)Ki2UyE-6Ap~^?-VD@5#|p#Q=ExqJurKmNNOET?MrC+OdKDxJ6En>H`OeJ5fxEE zX0jky_LFO%TXD^(dy{f@CVUoqW}k1u%cBytn>Xb9igADP8P%4C-5jfIkP|5;1(XJ2 z;jr;X8pcgWP#kDPyMn2AMJEgHJGZ=B22{>}LtzZIh;bHRmBy~*fE6FQ>%ZuuzoPMJ znFvYZK&}%a-O%E0cc&tT8*oo-mUkOKJ$|&4T>MH}4>Kyr@-PEUBd~$bBnBxxE3K+h z-P)ubBf4e7hAiV2VT*!yWe-SgmEb@rC+nx+C2US>`VhPGPMI5i-l$WTFA>eEwr{H( zlXOnp-bMo+wgiRMRhOg}dR{(5WF=`K5{8fObK2Lo+xQ;nMys^F^i2ej7`{nD{jx#s zDTpZbyHS%Ha<~KN)Y}8QmhzL3f85Sj`5=aYYi@%EFr_EnC4CbTZf-5%seCeCVbKY< z#5n%dDh2D=)q;jwsEI%JmMC0};Z_zub0f+Ft-eMe_aRp*sr4 zxGexGUx-!ArQwH;#>yPOb$T-BV(y~((>AxQm--fnp;VU(&o8-KiQinw) zz0Xeu5f&;11%;2=@sn04eB7JJK;UCQRar?Cg`vp{w9L;8qFLDYHXfXeiogGEQPLn- zTtGlz_SIG+Lqqb*X-jTz6($wiH7(7}%v=GwRLUPHM=jC7j; zd+XJM?a7Kij0?ye#Os;NKSEt|{;;~b`a3oul#e%k?H4v4o}f98Og|KTmBGJ0fRa9h zVe89`EBWyCek=hjaZWKGz}|<2BJd4zTuEH!_%|T6mQVDsnwlCe-c_O|=&2O_e-20e zzY0H9_yGgKq2Sb?rii3D?lgoXK&uviP{s1q8lX1r+tdajlQg11dQ+5^SQ>9&N$xa z2T4FFPr(MmqdGmi3y!ADPfi@5uu+Cl4EQ~l7hIt-)gT3yAAaRAOiC%IefI1bgj(P$ zZ73}BVCLE!z_sH)&7+8JWbN`Ez72U|`;HyM(o-pJ`K zBv=L$p0<+0$D_iH4p{l2uQH#JoSf|T^@>=9S5bmb$G5Xjw@kH80{Io6eD8ubY|~Kb*7!- zE_~7#l=`2jQ=!;?OmXq3VWR^t7ho`oNnHk#43E*-KX5|dB z38EBJUrG#_E&El!>B^-TO#xCEKccS z=#tdi`{byp^|iz_Ic#!BaCz*6$8hi7Jy;>77LH$L$gJP*JOR3?3ltal0UasXjj2KD zYmL{$h?pT{L6uk^(JG~^e0b{pWAc+99q4>g$)?E@c6_aypuWYt_?*iS7wW&9;A@;R z6eJITe51Svxz^r;?9W;eDXSAT9v;*O2Xp3EZzzw??AW>ftFq2^kf286va{FaZL2)~ zUerTrqH2}!!4N3dOdTZe?y`1K--zi39o_# z@ZL3)E7&;UBiz&lqiOY)qj%~CT;-&B8vO`+PhL=Nd{Xle2sq@U!qZW?4Z9Pj$n^K1 z$dpQ#pw%b-I)5?&>Fm>f`DG`>r~YsZ8J)+^%8hp@(YINLtfF_UC?AhXel!{H1E^P)Oc| zd}KN4CQg}80pha?sr+F}Fzk2xn&wVPAA=NAn6^7Z5Nb%=2#bIn6z=VV$W$9jN?xsWe9O;1Sn+G}pdAI!(0GMpOGD!t&aL{$`DB>tif*@+e*bht>tkcf zx6gG>pGSGv*!trxduJ!3?9h?&RJi@z8~^#IfhwzklXd11&7;PF?xkPZ@Y1U|1`h^L zoM=her^lQkd(%dgJbu6Z1o*<;`We#4FK|d z7-xlwg(Hn~NH&PGT1&5-KEFTgdArM!UB0n-#IyU{Ms98^gzJ(LIlEQ>0c#ZDqm}4S z=vNweaHibTyjJzm7R9rUBgD@4iUi^byjBCsg>&3*t&@06tLJmo934X}6U@91!i>@Z zw+PjhXMG$LH)43@S}wU1-qR4CaC#}jAg8vh4gDz?{+G!s6-xt68vhhU2UZa$IYoGz zrMO)=+JJE0@X=|g*`9qH7Sil?8>qwGeD>Jx94{82{qH~|_3QrxB9H4{EsAVu1_N>p zp}+%?7?>4}xk(uHg(7D?HJa@5zr!Atmp_M^+bj8^?_jj4Fpsl<*_z8;WwNLA4q{qi z<%R-Jql0gUboKRRA6bZ=BKW)umILn(Yh5kM=;%QSMKs>LZJhc*uiumy7Aim;2$@Xq zdTvKnjRE35tOmUt3aIbVY$+%qJOkgPnvE?u0LmF63b*TM?s`@P0cBw6*EFY$Gba8~ zkgA8i>6AGMz^H3@`3}TUJfKI9aYDNAZ=yYsXpyIU!Q$e#Z%?qtDb4P_< zV0!rRn{$C@z4F##3Z@=tXUA81+x3{eJo~wW;`{>z9Z2|g80clJKDKaKZzeWtwOA~p z(%D(#J(SL11sM83twAw(Xj{t=f)2qMuC#$C5&NPRCZ00qapyhyST|EZ;I@c0SHPw+ zFjDX7ACL)3dQvyA_>v87u(u;4BPVt`)%!wYY*IEt1JXyo3rVuZTim^?0z><9M#*71 zL)89Z5)OVWWx_!c5)!4>+;KNq`!0=_hk<-kk7?ZoFc_<>=A0NLnoVc9rA$Ejz70u_3R`dA&IBIx4AS;9_pxxB=M( zQb`*Wgv!bKolRibIkFq;>PkLmCAe|eASHnXKmTq?UwNh#LADcJvWWuN5jzbw0Tk?2 zDIv=el$W9K`v6@{qwe%#MklNRWTv*aD9nJY;$X}CT8hI5=ZN=pc^sO}r^?<|J;ODO z1g_(VxxdHrYo2-T1L7bIm|ZZag7wV}tda1G&eJcp_{gIq155UsUGwh=phYnmu`r;Q zJq4Ws&_~+30<^ZzeBTwZcrjYWO(_wdIZ8n;A)-h>iKZnY@2*ZMa$`wf*v^JA(ECwQ z>w}w5Y@~#Hemwce?i&vWN3Mbc+^dZ-#62dZUgV%NUTOSM*d%{$B>lP-lKP$UAMqw; zaV=a^z!!SBzr;i4-NRm@T5|O9g5QpRxPWJ2m?jYCM6&Yg4aR}Jg9+gPrde2?r-3O zAs7UzItOY|7Rp6aIK9VJSXo)Mbun_oz|*QZrP1Dq?{!N-d@tyNh8VEo1W&+SiouOZ zk|~dL-Wu5Gr(<~U$GUa`^pj=*&>_7z&Q0{fUPo?1KQqF_{Npc$XfP@|Y6s#~sH*IA4Im9lKHJ7l(-;HY0v(NCK)%Mde2zEEY4U!^NktqACG^q$vq@-Bme<1N|O=i%7DU0-hR2}XxFV^s6`Rn#>gYz0>nOBDfd z>-XazabXY*isAEfy`k_;c9o=Hw>4O;vv|w-fw&*0Xbx$5r8r*JV&pNs8#_St=cGRc z*W&ZWhE@y;R{CDcHeNn!g>ZwcK)IFYB?sPe+-Y%f5ro$F_g20qapFT3oDZ}~$;d|Y zM>`pB{H>V&K1n$}p7_(s<)x3V`vjuj8X6ih&b~~;*||R&TAC~~>Pom<=O+h0Asua=`l))8A%SSjM8y$34f&zqIr7RU#)K zlD7+laf=IKD8-nb)&ecO^ar32P`MYkd?r6FEdOEtTZov{t!4<)4rErExB#NWlkFUm zn$qk>W6!YwlFVa_NCf#GD;8ZJwL@79LsSMhrZ8{-CS3=eKw=W=;%s-(50o8ekfI7q zj>FX1KAd-_f`O4SpPYN+@vaT8@MIg8Q1qPaDl2uqZ010852?;U_l^^LT2m8c+SY+O zb%%`1OyQF;!)-)lrs6%nK3_GbEL%GEvv;6RZc2{Y&{Zw>~_!W#}+>vPjrBQ&2mB%j;e;wZchhEk)_F{oirhLe2D?(mUg zKRr5?Jk+D?4@4j3kI5mj=YF1noAB=kvVtLKPl??^hMJvvQ{ZR!^OLoJ8qn4iwlXix zRxS@N(fJyI@{zXJ(|`f*i?>$~u1%s-PV*6*z_ugoi>+_b9>#Qm-C z&NcZ~zw?fWX(5*rK~Jjs?>v;dHRj`UL6bq1i@pAoTA3y@fxgouocaa#>04Q_IH+3PCE*75BJJVm~R+zor*>Ydg*E%Bvg z>-w!%*mq`GQcjOSjA`0+5;v=%XEZW4Hb>kw0E|DnJoyG8=(V)EkB<)$I#BNuq^Y7ND0w)IqBFTj zmNanD)Jshs6e~Z2_+T}N!4!AG!^6?43wFWm5h#xL5J2ElCtNnC3-M@wjON|3AI+US z)qbGv#r%REkv&iB45Gug5 zCY1#pCKIZ6ZxDlV2h25JLsieS*xm?Y`j5O4DLIwd*GB^w+~PA} ztBD`LrC$qc=fF*UX-DKle7(`z@sQ0fCBT&k8-*d>+V0%ic5p{v{Pfl5tqlmZb6<;^ zoRc^+?9rvr!lnDN2uBLgGJ1Xzsi1OU?1`~yE5AQ1RQUQv?8JCVg)9a9Jyp*;RxIPpoT=p!@9L9YTK7ms|-P0Xr{ zPnd5$dN0S~AlVbqM71h+^f-wW(dOKy6K1!7Pr_YUJymYF_tqA z8t%B6SlPtIhYf()MVJCT9_P5Q^T2MfX0TwJZ8U(kz|>rCKYGU}KP`VWne#V8F~Q`Z zV%M6XlXD?e2TeEB9>aDwe2S%JC7QM2LgLYA|P^*$1kYR~8T_?MT z4n6>DMBMizi)>588JI3jsf?PydH9$P-2aLE2(FE+Cv6R!2oqAZ@9LtZtN}FhZuO8p z*)ffC4Ut`JJvD4bn$a8^MGmF(3@BgT{Y^#y83O?j+ImTN<6*&DT(?ZKy8Ka zM52A6>k8suFeM+X54`vHYlx|w?mj`kT?EUqO4Kz)+JW`tq}cZ8lNIiF*|l=b zhfDo}fJx5X40;L)!5>6EN=YFOY^Sk>#R&vr3$MpcY0OkL-%7~Xkxt;!LKIcJ3-1`k z860rJ)(+dwvC3utqS&F-{kfk8geIohxI%_Z;jCP@ zoD=d+&D+|zqvdCsMZ}*!dnR;N1&#}Nc?{I_*}8nb6v$J{8~OM=4!dd|354<`vo9xG zLikkt7IVezI!(8|Zrr#rRe2lmqv#bJc9#}A`QNc0fLr|Qu34z8XU=k zJI+X7IrB}9olt_%+uSiz7@##(njBG}+#8y})5=Q&db{(CIN2!IuU@_St@Ftv;ZydT zfUqB~q%`*s6elV$;Si_OW~RDd(oAv}weJE!nym9h#Zhd@)U0mon~2VhA!5!z)3*95 zb49xjVAb6CSy+K`s)te#gmTn#gp)aQ*}p3__Y<^{A$is)w7DOR2Hm+vJDM2bE+QI6 zG96FqFd1`90WtiB|8p1qoR^R%W7&6O7K%PwpOKnWmB+@5Mxs)(&#A)ZgfCbzvUl%Z zK}D_ith~KRLdR5-(brAJvEejQc1QC;RC}8`cSs8H;|7RIr~gh)0W4i zZQ2dD1TYR>Cs_ho?F|N7?Z8rL9ritqx>uw$QZBxOJseeCTPMh`;`w%mWMfu+UCduJ zm14R64;OIvqUAez#}U{fZSEa{N7IdZPh+F|#ugL|dBI>rS_dfCgfGS~q5~>}mm(2O zZ!At8Den#0TsG`9WTV-R`vmNg{oHV1%nJjtHAOBX2`g!Kp zrY#E;6XBD@>Gi&KJ>X4-&KyDzEI{$m(wfy}mI`#1I)7<0KjxsS?E$KE_)?yz>?h&B z$+0Eh|88H~|NMO7;r#cPEC2I3|Ig?AKj-X!?%DrWNj|`+EIcw za}U8kz@9LH8tQo^TF8%rAkhWGM#zc-I|}($`vpJk-LI`(Zx=*B3Em7f1F6_L{v0c-RNfGtLKe&pnLX(yDfc-eYMpg@QBe`gU5% zMQflMCag1jQsQVDjkJiZ z3ya2*V86&F(hRV#xsH)n`F+leA#Wo;lvs$Bc?x8@X`?y{s%cNO<0a|jTmv!GAT^SP zNr-h&fQ#Rt?W1!3IRvt$pRf;O@Niq|c~H3l4mwvSP@@X(6kbh92QD-l&N`)aj+s*B zc<&HC=nKpI(X@?gxBQ5WS?i<6vx`I*q*|TX(XonIiG`cH0xSQ#WHYM=29C|N^7bEn z+hlHT30f!FcdQfw{dQ^T2NfYbqfBPp4f*j?Tf4L+11lpA#?GXdguYnb^yA7Jm zRZA~(|Cn$$R&rsaHtHacQaXP=a#nHQ?aKGmwrch<^ioyVzP#K?#Eb11WRH3fA=Yn%e7 z)z*zdfH0db8zj}Fs2@Sy$K)v~t$bE{)~!mN;!{a&RU;9a%GAvK97sFC?vf>kXAj};$G%_k5&Q@R)dBaR26G<9Nkn zhTc-@8t`^^FfvO(z#fccrgn@9emu(5&m5z!a$rSeF#~@e&$-sRcBoHNI0inmdW#8~A+>Gr4 z4gT{6zG&VJz8v1zZi?8lr1sFvq5?-ps1IN^BXpfC$zEy(OMsDA) z64@saTCIfJII$soVaj ztu51Rf5+7|`G#a_1VWV&9`A&12fpI^&y1`rqRVm=E(^tm z(?1@6UfA!UzQ|~wr1%)jV6X=J&->-m9Jum(1U^bTCU$EEmX`1ir?Y~m&lpXfjY~r} z7j%N88!0rm&wEe6PAgN^oYL!YorB4+_jQRNp(wx@`AV$PlD&p8;pA-L;d)=#Uf-qc zEG((v8b&DK+3n|bY;P^bv~c^+^%C}zVQ^dp2hdVG-5}M(xJkT+e~%(7Uc=G)=`yvg z5Splox9Zsy@Ft(d>Vxmg*g-i=qZm)B4?>K39IHRE6K#f_F3D1!V`;%_2u%(%KWJ%a z2vwPLJq$(H(4^FN_hXxQ(^d{$(1iuol}j+AnU%Qq>J*iuZ2x_^gAkN3fy$|RsPm02+D#m? z(TG(s5p{KS7+e~#a5d+$># zl0b^8%EaMzwHEbC9oy=2nuRW4O*#m2t?D6HIVA@#`#e}p(C8w`KqK=U$Aa)h$iE3h z3XPfCV>i7=b+7`7ZzywrY&V(v7n*6pHtZs}P2N5898^77RJ$>^736aDoN4X~XBt8S z>)}sPrz;`xO+N&!2?@#amsn^@N(xLZ#Li=UYn7%N?`q56&|^XkM;`x)N+s-ft@&U7 zRk(_(=Pahj5@~T_`)c)`)!aJF_`UU0p>*O0{x7kesPWp+twKUC@pUC{{D#E?QQ$iC zoKb*T8$8*p_x(@*Z~@#fFpZDjsiY}G3*qMk1%Cb-;+s;4Z&IZj*k8%meq#5c3b9gDUa2@?b3+u+VkpD_+Kc?h2Rxmj~0 zVZ(1_-MBGZgEW2(lH0Ib7)Jn0ot0j(TH6S00uq?~iR9t{J`v4_hhRT|F92b+0@%S@ z3%!R3D;4O&g~`?dxFXJ8(r<3!f8*`FqMC}je^Epc0Ra_3=_&$(0@6DOC@8%nHBuwe zL3&dWkS@|&=)Fnr1f@v_>Aly`TOc9itoVKZG48nIJlyket`ES-0F%A1U#lVozdLSLC3;hX#3s~kLaHM?_#>#{g0myI}gT;VLasr)gK)WcQ3VsjrFW^@A zkX(qHwej}n3wp5sM!Dl1=D;V?0JJncO}=SNlE;_>0`L6(mOQ2yLw^QyA9@5Db&;-P_Beh(lXexUYSif{D^XdMA zN42jhD?sR|0Av<^eru1F%gR0Pq;xC-#wN1Cc`m3En1i-m#Zv z+&s?k6hLEOWqSjc`erVW1~qyV#O5t60&O}-b8VG(G5U%4iy*L>xgZFiW5C863lbwnIpt%BnKMw^1Xwmg~2bco2 zKa48a7&|{P1@o+g_ITBX9zB0P*vQr7?jGr${$Ibw6UjlqL>(I* zC@t7Ea9AAB;Rpv-5Qu@HS;bsT-r@<6$pAF%uRo04Ex3HoaZh;uvJz-CKomONbt01t zy#k1Ery(+q=<<(dCxbHNoA0{B%r)CNkD}FzT{`6VbiG-5;5`&D`%bBY@;7dpt zOGZK(| zM(XN6uFrbzHU0NGAdi4osTEh(03{L-xy}Nuf*a8DXpvultO>|KEo5tf{OgGBbqpy# z=+yWsG)mBq+xJY(6)ZDA{#m#@Rs4_)%nqALBaPJ2$*r^5jv2k$fOOlFn1kAl-+P<4Dd(@69C6V*TxX!nESEcC{J&b$~yI8>pHr!}7 zK$3$bR2=`I>H_ds9RPzTZ$lqq2551iTG(C)(9CbLU{Zj36VNLKWTU8LI&OSznXChcH?ZiT|0-|+d(^rw z=#USNW6fE1gIaq)=oM<_o4^7=SJ5P(3IrTmCGb>%U)ONK8C-?y+*8V$(*dyv3;-E3 zxc2Rs3k{$}1-yoo46fgKt9N^a!^8MoGy+;c;-+O}VzN{xj(Wrj&Yf{U_4V0$>&CHZ ztc4Dk0)YlL_(G`ixw3?@wD1w2`c9EZ$y8QFw{`R21!Ilvy2OYz6b|%U)jX*Sc2aF;(>6A!s zsU|5HR5lDupQj+lggCTQcDO&cBe0OT)7jV+^JR>n@eKX@vO~MI4}^9CEgwcb+!FaB zX8hZ7i&?p$|_z`2KuV}SDriyEg&7&%%>7I^jGT7P&jPFJrF za!7ae4InstS1}1D@C^Yk3@D^F_kjHv^q~6)w05nS@2aid_mo=cZ%{I6J?C4`d;%^& zrcdefJ~-sgK=D0VOxE}EXxs}>{XYH3n8TUF39+R44^@fd+#bODj0B1)-u^D|)ygF= z%TmJS_pk%m-K>-BIuLiQ1A$k0w}`U`?CkT05OR)7N>JrL?~kAk1@`}#o1->4=DfnG zqeCG-wt&1Gh;v+kE7HTGU>|1*!Z{-Mj)o%5K%H5T*1fgHD=?BCx7ClC;lzLVT^zF! zV?&Q?+JNe<0l6TcsDi%$&D|UbB3T)@djG^7@i#j}HV@>Z;IzGq1$7)>&Lz$6^!I`d zU(f;8Ndg>JI0YlVCKALNzDryij%z}|G46c4HHyFy%7B9@w~3D=oV({jNI;saT^wMIwuNa1!b7(3xj zGOY(<*y*su1XZ;`FNP-f*QNn7^k=IMEPxsui_8iqszR+5djOrp35aWjx$BolP@Mb) zmpK97$eO~y)tlhhwQ%tQCyB6J&xPR`c&0~N-j zO1p}-QmISZ#B?8F4Sb+?1K7rNqkBd3=7=OSvpLv+FhchC7nPNjMdK>0z%%tRsV~Gy zz+Jgqg7NqCF(?ajtgMD_*Sdj(4gK2di((N=GdCJj~M+_L7f;^A}D~(NP!w}YuLeUo5moYfi{>1LlS=h&uEU0JS;rtAW zh!w(l;ob!rkRX8cUhN+#^}qQ(qj_Cu5!lwidc|8%0EZh9uC)X1Zy>+_Ka>Huzxu!5 zssUF9`bKyojW8!%5a8%D_=vll{k@+h2Ihuk-A6omJ}GG)&No3_)Q0=e3y|+@r1hwx zx8~X;SMctU;%>(UiJ0Y}*8L*ijOTgLKwZW8NST@d5AR+Q>zR8h%T~#)-Ju7{bOfJ5 z0*D`i@?=6ehET-f%4}ij;Ia6CAK~nQUBsmKR-0PzS3G;QTQ{zNPni)9wU8WWGCSru znXN-XPj%$8Uf;mG2g+%1agTNPn3ombbd5+w-ooQ#!KvtL?>pAVDYCHNNo0zTNP7;> zmLS{;;tVKS{gu3bgBY*&J?B(eq{QduY;Y5uh_w5Cb zYjWGHIVd!5fd35dP-#p~$&DmWk2%lBu+>COE=OvO=}B+yU3PT~3YIH)>tVQi@<$HZ z7^kS(G$rM1H(-1VT<9MN?m2vi^q(5>B;Y>AAG`m&aCn$UgmASgdaAR|7cHlX_o5kx z8GrJMj5|!*8GskfmsFOV^;d5WBzG*{zKi$W_umcst-;U56_L2lrS zb#S{zfVaZ9iz{+D#n3Qu3%Ola!m5{Yfk^LuAqw-~BeOv5-Qq9nkGpqnFm)q_)R(EE zDh0s7q4Qk ze!>s=AKd&lc+6lM%l+T@-s1iSyAf4MF41e5=Z#iYaqSp@=QK*p+KYtozR~~r7VBuR z^jBr4!6nt>e6)Ndp~8?J;+2Bxr@M;x9eM?9^p?q=KIoL?4eo)SXhEouh6X8I1J0wL zk@;n>UW1-`zEoVh#^E?AN?KGhC+>}m+%$5VbZ0*eIrEHr2zGvLw2;F7L~Bdg)A#db zfY_j(uT4_TTb&YO&w>i!#AP?@84S5x(}~CXy7GW_lL>2r?Pp-|+`@bFQc82o{3(wQ zig_iydaN{VTELdf68nky`5^xdJbRY^_dRyMHGU|CsE730cBZ$&f>R+uOBQl3M%n%2 zye(XE`(bhWX2?7?imO&Lj>iGhHv^f5XM$Pj%fAK|E~~yQ%j;T}Vcgr$ds$eGqOCA% zwj#5GCky z=2_q8_Q+c`+v%^ju=&k9kgCO|LLyHip{+pV`8$Rd!`bkx(RVL8sMNxG;y&gysf&VT zy2d6V@ifu5{qQ>81M+`+;hEV5%JZUCW#V#*>Mv?;qh|g_?dew5ZPS!4wnZ*6MlZXH zmB{5gsh(2q&phUeLQ{Q}7$o0BU7PbVb=!l*?mtI#Yjq;{c-AQ@7R0fK=7xqwp9iZ= zbvmY;1JI4C<_Gdk2YIV5?&*^V_*=nI9 zcXl+}ik5(arH-S8?tx?TQ)Bt$kAP6(+Qs^4!5pZl*mjq4by!j>A+qN!S_2g~Z{}5_ zCr(m&*>Q?SWeSc3CkXcJm1mT3FnmkEmY_Q4&@T=~GGo8rYW42U`(j>wq#1vl%u}#r z_FH2h$M?{EA}WG_KW|+G${*4~Gpbbv5O=6FZX+j$efsoGO{Qqx2WnWx-l#*~bj*)UU{e@_XZ>O-?$N0YI7cH?-lgc3P{{Y?&x}*(Dfg%UnWBU}y-5MvDTJ#< z8HsR1N=3)c;y5YinhNoaS5^+>e^5(a#PclE?+JXre&xa5zvn=APRSL^b_;g!r6rTH zbQA)W4M3Fk?QX4-1()zj4iC51OE{SH52*#9LsgH=yGLqp>-)GYFva1Z)3z9)_{OF}!x&QEC6k$WP7)THv?(cTzh=S8p)2?j2u?UuDTiX!8=% z;XXX0S2ExI*+tG zo*4+O`Ax3H6REhkK4zi8`_%XkDtEfeZJoyac1cjl^Q~9XbHj`DwiD49J{owXAmvswZ+qiHU_yru7e#f%va(pYA&WlCXT#K z+E`W3D?WRh)^lln}yd+6UJ+wJC@LMn zGfXxz$t`=2vEHlS!g{Lnef&+n>@_RUk7><|o?fQx2wkbsCa*15Uu#y*UEaT~uqYkd z($Xsv{dM>+hgziUoDeV1(zHt`OmrA<2ztZt>TC`p8tx7MtVk|@XP*(cwEM}&?den= zbG@?=uJtbd87LcODMVY_=={Zh?9v_ zBoUBm#j{Tmxl>W`(Fe;a)jOiw;5m*qiT~{2V2d&mB=mRQ+tMk>atN~jumjtnJsLyE zs(!zMcUB6X-wUbRZqvopHlibuWyTt+7?G`?*s4D5`smq|+AmvUr%(0Tc*`>qhfQ7{ zBUU$~_P0s;k3X&^SE@+V_#DLqq=t(QKKj5W;T&E)8vTWMnfE9L`z&3Jh`B^X(T-$OH?UF-%&7LZM=iq+Rl{YM%OCg);G|^{@rGEsC$}nXQvoKe| z9^qq+u$mtFqqWsY@Gy+FplYlCZ3AZ!R1hjHjp|HI^82ziUbQ!2iLniv)Ew8dn@YYs zfTj<)kZhp78nIJ}?3{w*{YOB!%j3sXc`x1@Vq^x31=pjImEC#{#hK>~U?0H4z(GRr z#T)zic%ZowQ}=4~$&Md+Sj&r;z2y9SpSZaGvvVB<*?^%m*dvYZ;{=+A>2iDD$2hj( zcB&KhN=50PKZpCCQd5Np*DS2L63)-d)3cQ-5;bB3+6yQ`%HH<=O)k)njOx^%iG0DW zzRE9yow*>sr>@7_aMiZa==M;;lJj57_umSPmtAODGKL$f#U`t-G072REJS2ogR`!(gY-YKK^nU-Z*;S=Vkeu2@J zDV^c0AALHs9$uhRKNYeQN)EED#*FhhZY8`LF=a8kIE(UaCte(I9S_daEQ}2lAATjHF&A$; zwC2%hiqh#(pHD%Ah7Fh88EYyOw%IyPuuSzyxAbh;xOVnvL8NdM5U-h2S~iLz|orhD>~n9(sf%CR{1pmrBm>|`IxtT z=+lSs$3BPfBIoq)7D{{+&RNYETh79FSSaL0%+scOD@y)y*-`}6-(8S|qoow~JEJIQ zEz|p!K0yz{*US{f&5?zlx^-TLG9+GJ{tgXGx;kBXlT)uvi{*ss{zkq0{v=eBQd3nk zV#R?AD$<}8$+n+ETb=^9K^nmw&706drx!c-=*_3=#kaE6-ej`ARH9o}l$ZB5^%$Xz zDw4c33t#qq#jIsJJN+AU=la&|=aEz?!hK}nUJ`c9_9jf~!1nwBU~&t)Fc=A7Fedf0-+nF=%AG36g*YRXO!DUe%-90|p^7ZmnO@v>?CRj2cr6aCuk4b5Z zi>$&+N5^FcU4Z%^O?D8@khcMBFeIxp(7MP%`m{8x+jJ5~(j>Iv%{0A>Lo6TiLJaV2px&OFbp~)#R z{4mpqA?c#~?)V?Mh;u`2zAV$_uX9&Hrn(jyAz6BJA#S>_Fw=-S?(|^&gVy0hkd*5@ z<)yV?yISYv)shz*;t@;jBf~-zF)AGGoWN3q)*6!cLJ33lrh=rXLgbCN?6tI2jNGW_ zmf0{>CFu4t8_(B)gtH{P*3pR!wgu=&$fNH;8b*<0^eWu=Sp z%nnW1sGPj(mvV6e1EJ(Xb_Uj+N#vX)wvj=@37zU6e@R zJvADaf+G}vhtoI4Sxwg|M0Pl{Z)U|U?ILcSwq@#0uYC)tX&_MwpAZ7GKI_0hnYz;K zOH11>uBIP+W|}JsOqlNI{<~N@LNb)05h|2dfk9x(XCcke?r;BWL5%RyawasT)>YXn zHZ|CDrQutl#eH|h;zTj3z z)d$+6A;L*cK}?}J`;2gSCkyF)8q|hNcXIdZD}n~=)KUb@P=m(x+xL9hIRQs!gE$4< z9ZjejT}{jhPx<$bsO`04qHE?!oj$60ym7brFu`kBgzzEzg9+!cjqKKwym*f`Hk>$` zHMB}d{&Bge?({u4FhSOZg=I?6j(Y}4;>;jn!lpivA@cUTT$b$fpn68_^1{RM9jC^A zbFCBskiw);Qzwo&lNyh8ZM&dLX2Gd@(y`eG=Bd4{(6+iKzQaH8WHZ$Z#$#iVu5!=3 z!2k@De)dbszxlGQu_0d$fIuSQj7SoqG9S1=p0*P9PCG`_<%ZLI|M5s=dkEXYc|%B- zOVzK%{X*4#=hz~&`U{NW_deikB57>a8wq7gAQVc`^R~Hm6^Qyk;q>XtuK}**KtmZWIXMa&YJVixsxv->{85X>)b# zL+Yd&w-4SW)0N4M`vV!)v8zV>bF}*-yf;-O_0@Gpnvr`yp$%-W^Z`QUUD5zbi6aIM z;h`~sJ*{O(`Pa$LdN1>-rR;~uD)o(Sy%tSl4u?VeS6tb@K-9Tbx7R>{dX26nWE^@t zCzwkFnoNkXvv;n_%AT>ga2nh}sp?k=T;{`wqhj}eW-XdB1(H3Nmc9dVe zDGQKvua&bQu)h+Rphf8RI}54#DauLWXv&}KgYyO@sgRMRsA#BqP6Gq89T72@*fYcb z;K2jOnQ!0@nIu)8h6GjbN#?b^pL2Po_S|wsA>cA$I`>WHw@5#gBxr!r5VK|5TgpB@ znSrWrvBF0xRRRyWF%6@{6H`2T9&c+nrATQXOU!dQpNhR=QRu%Xe!ZrC9CaR-9+B#1 zV7$N~NKj*45^FV86d`;3)KGqU@N}9HrXkBaW~Z2PT)&ji9e-uCgq!i1Wo_!rea+J9 zNM4(;wz;c+D~TUIEcx!GJG3&i?Dt{xxv7_Z>-8=QR=Jzhw<^yE&Rils&|&2%AIXsq zrw!(cK2`3l{!l3XaHAi^&Qh2=rZzozhl<8)JY|hS&cL*~0TOZ}@2!O6Uxi4f>sA%- zS=C1QOkOZL`Mq!NtB4f;yWUHVKpRXYBTxMN6IQO^VM(bF!k9sli%u}0J`4CFukY`b zVVWh}f3Ku zAo1Q_OuO#9JS9n0w6T;be2e`oyVQW5*Df|!ZYofrc>Y-pwgSRm_8qOi+MJ_TFR!J` z_+`D|ErZDRJ^BE}~WRh6z;kNy>1$?Jm= z_g?(*jk^SIZK6if{o=8C0R@R+1He{`sc&fHHl-Xa4;YK5lGQdR9(o-rly25Oy&Pnq5uEG@4t{* z`Y1w1?_yzgA4?Se^=0QTnGXN8k3t|}y?^h^^29+h%8E@EW?p3I8o)BS6Q0>wuB&RD z969^NacfWUjYCe3hmoF6iAzU2tq?i%L>6+EottF_r`Rfd&;SODa0=mS*1KbNa8Vz* z;j_;A4gqTzp9w&osN+N$#M7spg8jEbn;J&Tww%SVIAF73{Xit_j)vbUvs6yAqb z8dfR$y+^D@pmQfVBgJ&3^9551KXke)VDj?fX$i*kz((`~tgE!yz2J)Q@wob(dZfD5 z=yuyWI-zXPVdZ^}EQ|*0wtaw7YOImDSXRmHPq0hQj@Fr1^mZ*dU|dyH6fvs!d|)>i z9tjwaZ9`UXp`D18X0%m3Gh4@c+U5RkOTwA;{QjKy31?exQp{!h_?$C5D{`4n zdTdlN3I2SeL^Lez!IAma#j8YYemY6qlRKSWLMlf$ZC!o4!9+IEz{gGdCT}~*{F@DE zD&Cju1TqfCdL=9Pj{gk|KLo`fjlr3(0^q>9GCK;P_D3w65TE5xl|NJL0Gv#Zkcbwu z><;4i>6Hyy0evUr^2(^K^bc%*7H@Mw`&ZInOHt|RabK>73KL2q*ZzGil5;1lfV86# z8;+8L3k;z)v45$!_z%N;G+t9ncGZq#^Ra1Ln^J}Ti2&1viG3b!x^Gpy8y*SfY`jie$Zu6`w zc)-R+53kT&BH>~WGo#^^2|}D~cA2sknB__VV$MK|BxbFnspwjgrI}85B1${w81W+JQ4uzi@+L9pBPk>!5H) zQZ5(Wwu#03BZ>Xw!?@+5n@sy_w5_mB8r9WqilpPH0hy`UJxF?Ep?^#%4oMs}{90Lz z>4KY_x762I>4IX3+X?!Cjg>_gl@Cq^fU$=?ix%*sP07QX09=))tL=nFinvS)TYkEV zYxT>o4T)+P7BsABO?1`OJs-qN!@lrvV#N8!sUIqin|t5FDoW78jqAg)EiY^+UX2~E zKGl3&2^#*+d~9-FWj|6H_iz_{2JlOOO%(Vvk(b4WOJ{~i_Q%uM$y^Ed8FCey*viW2IEY4<0)@rJMPXswC=J%k zbw{}*Ll@nt$=1jBX3Trk6DwBeJ<6*R(igj8`(al>B|(B0r2Zgel;+=Zh8&l zl2=f=lW#%0xmjX?J=8boA*{*;e86N-Uy`}qfqfIx6xps5X{CbbDWm-kyX!1MSAJ|( z6p_R0c(!0xVS1H-;olB`|Mri*P9Y*0b$K2qB1R18&_NeuA>5{C43Mb-;*)HLt7RgM zuf2WKJw!~G|4Lju$$E7J&`SK0JTuIiz7q>O6@ih~d1#ayRRIC>DZ{OgXdCW|9F%_` zGbwF~d+$hPWp*k`r|1^yrCgtYDUHZh!Xm0kOJr=qu=QOn8bh~;$E^nBr!ErDe#Wz47;=nn(G zy}^1Fey4q>!Ell%&6;|8m*U~@@B&39o5-mbXiSA**F#ZqQE8UCDBEQWd+U`hN(_xe zX3xc6_SG2A!a{vq>z(_^*Mw_=1pzpPOOd!lM4UUGAq9GeeKsNm>^_qnwbyOK% zSp+thbofpLDRD2zJFnFMqG+E%a{9lE{ba9|1k6 zYsUYB1%#<>g?M0MKn_az$xsIiOHQ&1a0xWsn@^zKWX?0bIvT6N0yl<@6*Atgyf;}H z1ySo-62`nmzo@dJ3koW+l6T7HEBWHG@^wgUS++rD&*$kkwJvK{+dkusLGvs_?Z-Or{ zVjQ98wtm+gPgIhYv@^Gq?rL_Rt~H)H=Ocrz2#^h@XApK!>`vnC9agQ_otw0-r;`xU zb+t}g_z&B3(p|ei)i=DxrLN2LCXjzOqzwpcZrYAL&fDE7u=SUi*=*fiFnsj+Pj)QTVKn`>IT@Kf+R3DED|5m4CZzq97!5HpJVs&%1T^bcDiUtLLRc&0Tgg*{Tsii@Zk#u8)(3PPfDM z&a%8aOTPIu^sia@kyu_;wHds+o^x*wJsd zsMK#NnoR?2C*xYzTvJbmSL)tXdiC}$pLCV{SW;}QJM1zIkB|+ zJh@8m(dl$$iq;j47S#vBfRCDGK)v>ik#+uAaYot>fyf>pHTAWZx zk0xiY_l(HNsF^o^MNddZQ}=g(drAhsJMO5|(HsaBe3%uk2{sScdu3a3B=-aE=UQFJ z1dZG;6}ZQ>S?64Dgh1a6T=UIQDnv7Dt~2iq7s0&R0Nh{_NaT35OU52w(b3X27PD-d zsB~R>d2`#U*7qCR#jMU1twOih-6@)RpWNcxs^`HA4SU3l$6ppNQHNYw(tBTgc8I~8 z-VolISEd-*Gzb*mYILwap$vsi&Y|?T54*)}n|1q^{ggmZ@Cb2YpTIM!6CzvZ2>5BX zzU`QV<#gTC+@{qLQS~zEh2l}nY(r{2Mn3Lu$r2>HJg3hE*^KoXChMqjy@Dl>yy9bS^6va#wQ#7Ntnav;tpCxnE2Y9C5${g z=8&xvTncwp(C^fy?m-&v*y$x=_HV<><7lNmThOUv`VtoB0(M)ymzTB+g}Dq1bLvex z4r6?Fc55!rG~D1u1q$f)m*~_YX+i@XC6YeN4q*-*S`O*++&!l$nLB9mAfQ%qaa3VD zycXE%zLLii&%{~tD19po#j)%b6)VMWOJqAXvDYo%Vg8E4IKAXfa%=kY<-}GPT-+|3 zeW$J}clT8)4^qA7^jpO$^z0_{+bKCr zIF+k*+nTS6(+Zr0qb8M~vQJoC94jo?@Q<)BD>k~S$uwxVc!szKp9KvmkG(U5*SYlz z>$ukQPtQ(!-k!9r*Kq20>AX%X@Q>K6E}jNdcZlwSNTGbpHOw8x@iFHw2_H-@=|wlz zw+wPf9d%6a-tV2#G-Bc2+!x$OeNf}gx$nLpEH^YdCGLxUCA(2ODP;GnV4_wd!^c(9 z2g(beWB2Cd@Z~;*%`Y>#t-657+z3Eyi@FM%EME|(e4{D|enNJhdNV<|kNqh<&6J=u zk1~ra8WqM`!ukx-zgU8wko=}ZA>ywjYQ*8}&%w0vEbCxGBGsv497P4Y+RS2e@-xix zfL3{k&Bq8RUyNWTR7ne_*%(15{w(j*1}5dR+QU}vVPuhP{X!XINIKUnqrhELH)l0| z#a4Lyc0so`RA}iV#Kp~|Zn8P($|Z~zTf3_g)hdN$Ba@SkV@RKc-P9T7Zo#_EQpoK? zs~A~;IG}TPNCTqP#Ccg((ve`+P+9r>Q&dud>>Iy0N#Y56H(w!$8OBlz5BG{=8wWahb@8ua zLa551NIpp|@=6iZq|qC$&GyALX4!DRz&nIwBs&v}n$)c16+D|~qBfgQR?g|^dc&Be z@198o)6OG>&NIF*`i713sA$}F_=k?>IU2Wlk0AC*R6s}NIMx1+D#W+0{8ZdG5a~I` ztJk(K^?B4T)T7UtUhmLKLuOj?*4x4WWN@L+s*uNs^Uqx$J=3j`8fk|2DGI*yPYK70 zcj~hXhVv61tN4h6!En7tn)IGn?ozc8iKrgkkR0pzm(0}Dd$a~Id0$^5kXB*54u<%N zk?Gg-G=Ef|EmJTLSIm&_=-1>^W%*fTdrzn8KZAPQU+|yR8IWpm9tOVD&F53vjCk3${qF`g8AW*y~DqFdJ;HY$cBB~1bec@wz}&U>rLXmmBN4G;+E&uz3?5IN0D<$!w#w>J0GT3#WEZ+X zI!fNF&Opaq+f#u>cxP_1NWq0Mxk$7cp{%n@;Yym8mLZK3vyjnb%q2&k{SILphU!U6 zKa=`=+tdL0_-2u(=ir*;^0fGeuU|LbD*5LW4YMoKxHS003aGgC^gL$4OfU+Y{G=-I zqXb#??W-uac`R>Knn=}0FN*n1wpVGNFqt$yrx z&1in9=Y2nN6CmHLz8maNA914k(eq2Z)qgV49d(pFR zBrfKC@#sihrj%Fd^5kq%-y5kWmWMSt$NhA=RzQc>LUKN&F$(Y(_+)rPlAPFp*3E zCr4BT zU27_07f@TK>$^oEB)&Nc((qq;$r3N6NVm39x?S{;*Bvo)>4t_7wy6h^%W^5zCyD$H zhGS=Q=&2i%MI)2j90|F7wn(x9C(kkN3e1ApY?9rx*W+PvF$2JJrnf@5eGB=kZ93zH?NVFagV^P2`#+K1_+#p;!`(Ts%DT!_ZqVev-OgcQSP4;WG#g3EYT6%93c^Du4n5N_5KtiT;Vw#G3n)}|K zc(3%B@}7(jVJ*YP9eH^i>vD%SkDT)!6@O9BA(1lVZ}C0V4W@bndoFy|fBkdKcyCXy zL7aR6gR|ohyJSwYL?2xJ6|*?gfPucyv*WhrxK=bE-?I?cd38CBoRtbmeR7Uhr`(T2 zx;8%xM-0PaDkk)Kl;S&QMW@O8g?A=e;QvMDlgWW{>QW?!%ivFKEsqbHDXlx^-inFx zit@=5Ico!;UKV>*hp!yTvpB@bK3(9JgtiInPwdMHb_In#DIS*S9~S}Cvv`bcp!os# z_rEt5{Nd^c_D(4$-Rna1auL*6XLsK-{VN~e2r{gGIKSW%rZ55!dxKb9TfQW2nN#>AU{3uM?t)FbBT99jC}i#0V9Ez9}3 zr_*neySj+P(QR|ib{8@codWOyFWG89AFcELRvxoIxV*-+R^gbF9o%h;|36p&eWA15*yX*`*7pE= zULG`FHb_}t!PYNV(Qb7{S28oQk}*VDs&3B~)1gn3=!3*PJju%ebe!5vHI`x@&$-!&dJ-H5^>o~5V94)RL&4At*KadHH6y;v3V-X$bS zsXn#1X8>>rYz@MHDn}&WU$cJ<)P##&yRgWpfPe6`M3O(YrtJH{+`xPayH*GlHpw%PGt09xP5gdmq0eNjMZ9tH7er;~g27_;Vm zQQ{dT8(x8}Q1QOYd(7kkWMx5IjT_>E=+hLU0Wsf3pQtm|h9pyYpi4vfivk@+Z|VSZ z+59{IqXg0xWki=g#ODY^4E4E{1=Ms^a9?ZF|OwD`#deB zuZ_pWdScaFw<;548O&yRHX$4#h(We$OGNZ|4($GV6SB%hFK)!0q|z==_M-^`^Iy1q zWu!c3;Mkg(5_MdX&tfrOFTS`5jhLTQ6ixD|w?G3@qf|wOK~$~5e2hxZy81Cvn$&4s z?N#NQ9-w2RbwLNM_CvBv9r~UN_uQ^vsl+y^G<>f+f=ar_TCA_iWT~qxwHSBO3XDr6 z)Gb(pwx&_l_CaGh3U7Q)l%`>D!wN(AP}TapvmG!bRC-QeFW1|&J$%#GD8{QZ>lD_{ zjA!Z%os~yhC}3NgLT*o9O`ie`nvdll295etDf;?B+h6yTm?Q~r~Y3N^$&qqOg zI4sZNmq~ZW1V&^}`JN4rzaFFPs=ViZ7V`uaM`(Rrv-xo3-nU^(jEDP+oco~PP;cOD zgXpt4^5&YizhQ2Cpf2py0XnGmo_&~#KK|9Pv@}5R49AtKazD?#1gh~1W#8lXIaN*_ ztZh}B@8;1Fa|AIIAhW`WAwJ)-A0`FV%-y${9xH_u_$B!T5+dD1h*PuUhT&pRV?>sq zHsZTVHG|?^bIxDM<@U#COWgJ|8l2x?;|fH&kMTaGzu1KCeJU(y>xJD`t&&%tm)gqD zg!Vl*d6)V#R|GNGhMJ{0(R}{~QvIk1v3wcB?&fM`hL}oy)ERbT@8Dy1);O?7ZN&2c zJlWV#5KkcX4T;Pt*Ap(b$#4Z>0NF}ALRqr zxd}`-QRnJ`<5$KFlZLlE9Wz@;Qz9*sl26Ib&k6Xg)BLQDVu){lb{(lWYq%7o0SLwz z<-G80_CqZ!&b_jqSU@9ebNM^E%Wh&eL8Ipc-dJffefsGsd%i!c4yDu35gDJyq|BtF zTNCcDCs_`EmK$tRyFBZcovE592?7UYCqPY~HP(=+19L_sB#r4ZH+Ye}eA4@?0KG=6J` zgNE1Qm*=mr-RG{G){>z=#LNp$TQ<)3u4^_30KBXPQHb*~2tP6H(*yZ-uy{$+?()DR z)`)Qtmax>UTFR-@OCWdsDlw~z$hh_6q=FITa;F_Pk+AQVU0CT|yPc*%#V9C76IMO8 zThlda<0^!+I$W;F7wfv>MT}GeLFU!chU&rGkP8!&UMHT4bDFMQg*(&&~+1Tnn>d|We^uTidnQNatk^!e0 zud;Gvl%&|RSyBpw!G>Qt-=uLoe5*?M4M=mVN({ibHb-aG*(s50<8&F&#*&}+=IfFQ z^et!{wk0=o8Ye9G8d6gWPu&*MA`6T3J5W3FO%=cnOP=SLt=)&(ab1i5Tr;2ZB@0s4 z^Tj#sVn<$wE0D=_6!}@c0-Crok~miT>UMi5Db4@t?YyFziux#zqJW5i0wN%w0@920 zj)Ef61wt> zr~c30`=?S-?l5ED@jSRPu=Rfy-NVW!1+{QNp>Xlc!R01UsJ0!uJRE(bc!W$rsxdSZ zjyJMwcdbL9Hwuk77x&Fl>`HhjGqCzp@%LE~BO3w%A(er)!6bpr!C=1+RC8q?gT2?r z9$VQa^5=huNdGX&x)^oq`~|U{D?8%lzW*S^Qe3P&U{HO}E!AmjWHR91EM}JHj3>k6 zvxkrFvG8_m5`;}S%>1O3O)W9wx=4$`=4cK(I7?z7SJKLax|Oo zGKvf{Cb#IzJL>zE<@bh6j8#R;awUGUPhaTW;q0Ltc}5D{xWng$`zdHU=4sw1n5JL8 zpFu5Jc=xHm1cnPpU`ViJjL$&l8;tQdQpTj145zOpXa=5@XIT6d@?WXal-c8U-t5U~ zdG_@Eoj1U-#C%b1*-uJuEsh+~Dletv`62k$u#0Rxe29F4-2jc2_s}W*?YTLeRx#;t zgMeCmbXnxWpq%opY*)^IUARDLFXzlAsP-Mw^L zB3CCI>FHtdR#kTV&Bn!vUrd0Go_w5pzTVb0ynvH!h(uOA)E)ZU?Va5P4i2>O7W$ex zHyoGO7FF~)z5+wVM%*6nnOM=_7XlIcul$=1d!o8~qoGUE0gvaVJCepa6s(&4zT`{Cb{7ch)7sl}Yc)%L~u=>b<2 zE>Jp$+y+r&(h#yIh~$0cq^eKFDdYEDCm0aE^gw+dDhD+h+-o*?)Mg~%O8PcYG6`z+ z4K0^>ruhxyh1AZ0Hd{G?5;-jK0p9~8#1xdMPC0+b>^yqVdgr!FI&O)lh}?Q>q$@Ai zixwjB{d2em{#85F-Q9VAAI-`@D3=L(Vk=-hO6F4mt+$V6m5^l8*2nwOIAB{)@b|6$ z1`JAkHA&c|qr85-aZgPNxpDgW(b%4ufQg2L13P9MRnN3R0!7RGo3pMzC!ING_$O(s zwkLM0es8lmC0Ut$ur808Ykh!9by`MAv)n}D-w|0WOWPlXzavbQ)8F%*?p-3>h^nIVD=D?CX zZnOsF-qjgg@6di00etT>_LHyj6jQ^S7 z7;#Vd7oQ$$fUm=Z#bSo~f?{MLQ|0y|M z3ddgE*=|WsU)_}iyMoB?5`M;c#Q~7zcs1%t5l2;{O6ELN*lQ={5d`5Y3X_9|bhB0= zAVp=rzq~!EqwRTLW{dic*;#;tdQqa7ivMS|td^D)jJT(`f{bf&t%TCJr@%D*15dpc z`Q39C5A8}R&Fp4+^#kUx&ak1TYA{2dDRn_MVRf=jb^KGblZOaN|MNn6=i8Sa zeoD&N_;|x&7ERNRU%!Z&aXe>u@aiM;i6_Z8drl=~x9q&rl04fBE4X)LIJk-EiJeoUmG0u@;6H+81J|0chKB2uw3T7X{No6XRo>A*4c^>()r;$;qKniMMK3|w zpj~o#BV3kNM2lNCf$tZ6nJW0ojZM(r_!}qd^?M(o0my@Vt$011JjD4#H7NY;LqACl zJ+}F6&CT>4z&T|M?UoJvhOXb^k-}|8w+>w2 zt#fI6UT5e1?qzL(gSAu*_uEv_2%JyZ8jt0jJxtpZu(JP?r)RTRqMPOOje{F~Q<@|< z;Jb_PpzZFA%=2OkgJS!sHkOkOYl)6($JGr0ciQL1O?fr^8*A-S$+7%AyO7(s} zqx@L!0%koGenTsj)Fz;&{p_b6+c^lj{7+uM>zZ}iUs!5_RiA(iR8O5HZqjoW*!O?` zddB;a%;%wZ|8vAk{`IB0K#r;g0z;#*M#el2`xUBaJ=B1}79Kb#=Q3du^9P%$1wmDR zHmxrM^{HTOgWXh15tBet`CBQy7b|t#{2>C3hj%RXloaI2J3FhM38=s}r}Wa(4YOon zHeWvc^BaC5Ry^4hJKWNySq~T#*OI9r1Pht-^WcT4N>2t!N-eC%-aF~a*|RTAgv`>u zYXl?#FNi@@O|;-{)^B-irgFkvu^D$nI}i@jUAaRR$_j3Jn;Z~ zke>fnKJs2NsD_uR=w~bYb8bvJ=FAp7nZORZms#&U-bsOtJQzFaPbyiO)l-4tf`2(< z;Ao&yuL{AOD*pzq;>CM)H;F>x`NVTQxVvR=k4_HCpUcy3wZe-E8Rad5N`b9ea!eDR zy;Me_X2@fAS^BLRsB&0eDPNk0s*J=1&`wuYv50f5Tgh0Cte+?l%(%(5j_KIQsKG?V za(Ys1Y(R^XW3VkKx#=%xc%`e!<39~f&+?462d%{Ad2+pbFKuYeLf~^t;C9M^K*0H? zAI}597bJg+;0%T+8x?)=D0(u?tN`|WuG~msf~DMZ6e<79jZQc9X_+qXPB#rcb;o7c z^<^OUb=dLKB?{KYWxvVjR|i+NEQeoQGRtWL;rB=+u&_~ zxN8z62HhY)yoT$&=qG>!g`n7aNf_Ijfh%4RJ%bf(Y{TYvUe^8J#7yUC zB#AIFA?e~a8xnA&Z!D%akS+3qfiHHG3bI$NdQND1@-A!^DUYh~%fXHxc<1NuGvA`2 z0m6*4LnlhUYL&ojWj{z((btz#bkr}vXkLioB0~>pTax2naMQ?~|KLAx00ATCRDHn* z8+X5Ab7+?y0RO>q`?ghsw`0duyo*OyAI|^F{{b+(|4W<_n{)E&@eoH2@}RIzV4%ZA za(qws5Sd-ApK{|%S5_Ok|8Usi*O%`v)2YaXlNRUG?6Jnd((lmduH)m0xxc3u3gu+@ z)OY_W-GFtjOusnTT8!d*1+za|CLS?z*FRG_uVR%Yf&n8H>5pZY z*xT6(WZQz_Kq+s^&#RtI{_*}_`sqx|8Gm}9MQ#HXii*Ig=qL)ps9%<8<6|=Sth~d@ zUE`SzdU#u)((`@QXf+)YVM8?^kPBnPz*@s&lJMK=O*SkM;)m-tRFkZj4F52Y@FN+F z-o@Qpb&OmvYH;QQ!+zs^=n~~t?J$!Z2dh&GK*v-bhn3U+_^*EW*cF_V!UGDoj6m4R zm!=9mFeBvLE!$cJ?$wSOn-Z)bP-VlcUaw`Dqs|-qCBX3lkntw3PW+mD``_yHp&v8C z>Tz8|JkD9QNc`ZFt7-#{dMXgRr@p&E7N*BHEy@Z4Fpx4Qg3!4_S-Agy^Hk~>%Bg96 z7SeQC(IMQq0kdr;fg0A6R`17(U(t&9IFtm-DTq*yK4inS*V+^M%HD(KpuC zIWLL*>qZY?bNW&{#{s>kU1Fk9CEr}XmU$SR1T!Yg!lIUr`hAw%iBFZ+r%weiPN-t?OTur^R9e54x>Vl&>WJdIutP(rg0d;zR zAq32HxsI3NCON`wGi0LzJCn^PuZ+KU%nb{=%=5K7PHa~qniVcQEP*W_9Hz6}qAi|+ z0{z%6yU*g$CJE7-D{sZ`=U=U>USmoD`9)Ux^xR5m`b>Xy0=cFBB&TnxL ztKUxMaJ>mo&))t?G~C~`n!5~(7XjbaQk$3z+6skdOU;$mL4DJCTzoE(LLm5I%G{`0 zma~8>%{IEab*EuVg;s3v9MMeS+jp3fcynWVVHwOOr+^aiOMJ#;WZ(*do>;sgppqXf#j zo1>B6_$?DBWw6IqICcfxd^@lYbyWp&on@%0I((H8u2pOpz-V^xmn(Ri*AwKuiv?A3 z{#zq+@kcW^i$#jDcoWFquD0PmQ}#WJ#@cF|S}TJYF^UWa(PCN$Qk!B>&yx`~Bljb1 zhpO6-s%qZ6gUuK30zd5n@1kZ+;3PkA#CR~*tB#CEQjYAxQtN9Pq?1ngJT_8Y3QhdY zlfO)nU+C&=egw*TKD7zS1EJ{I>fS>mkInQwY8J^!BgWXJo$soJPUHT@n4WSfpFCJk zdp8K&;BPib67-P;s_II{serTDQw3PO$F_n4r-Lh%&VbFqc!zCV1NQwWFl`xpLRu}* zx}GRU-1WSW^T7%fIc?#b$D?BGDiJNCcb&OCS2hgiP|EPQ!Xkd}z(4VB?PZ;cE0nW()>qZ-wCpF?efGDBap?-iZOHdyY6E8EePX1vyQt$AA~Fmvne^%Aw8ym> zzl=xeR)Q)30ks%@D-xvNoXe|ui!~xD^pdQ;L=roWuvzwBYxn0j1~DFBMdz!wAXSiQ zYOXaB{vWw2gkw0gR=5qb?mmjuAglfFWZd8fM zNXevScn2$Edgfz8ks`OJ+EldV0sAY>V5j}^dyew0+O4VoRiD(IxO-2!>&`sm+4wr} z$RZy$Ou_SR&FzuYp5za`oFW7w&X@yWiSrFH$-DCeqr4XushaYnZ^nSK>uPcS9RXi? z;JiyhU&Sc-ogX!0h0 zlv5ANFSEqCK9K!z_LEnS(y(|s>aYH{Lax>|MT70MRk!7t75K7ds`Qj^yU7OiaEZ=Z zKlZ*plL(aqIGzu^H!8BZh$zZ&3j9R;f7H(*84?b4a`Lu_s6=U&?ZZT{)QizH9~D?! zMTMuP{!MT?iQ`>85tF+uB{bl=mI_j4HauRS@|=RD#>C7P?sf9vP#0djJivlLr6pJg zEG`EI%Ff8HXH~ZK<95@Lt!pB%!@D{yucRUj#qQjp@)AVk)}Wj_I)TYSsIghTd{%q1 zxo_%4%ndoX&m-utVNBGt(*7QQyZnS#x( zR0ELOmknlS=88PFu{MKWiCioLs}YWtyk=^lfFI2nl{LxwNTgLdmh&vhiHYEFSXenl z3gLQE&yMvMUGG-RU=LZddubvH3cK%xaVgw=t1OxYlDD?c+lJ5QeY$lnQnx}(@eho0 zauecsZBysj{<5|M?^ngNdk3ahYal68IWb+%b|Qx3$?(HX#-Y|BMmGw+9 ztoM#RB&)hiWAgbtGcnR^9*14ieZ(YKRN%l8YNtIoDoFpRz}824pl@e$wv2QCk4OI1 zPoQjB#mgYHxNtPR@Ze~5e+hTqW@ zYg&`oj*Ef~ZLvZrT1|*|BY~$_RLpAJo|w zP1UctrG4-vU*^vZduK>#QQJdI5=2yd6+iT9I}cGv?#pL}t;^xWq0|;sqf9)qR%};^ z%L!*c`wW=o z!J$K5Pi?JV2PCv2)8wdOse(evL|pLBRJDt{GZsZ}cd^EiOt7#=JASiuwUl2+>3rh-ihwaX zpyF|wc>^Az1c`QS%uP8r65u%xaxJFu_p$kUpjMLJE9HCZjH-T=(e}aH?U8Hmh@eV* zYUD8@`J5c?<>@sS1s-Q!;-vCxZ1ihv2@ zi+z|sI?0JTf_7b;uDLi(?bMY)3VN&}xA=B+RC0_$Rpx}XDU5OHhe8ZX$^#$O(uE2G z?af(?qg`Wt$wg7`SDV$r2QjPzed;BtQV>GY$1@`%r;wmU3L<~>@GQKwk#;~SfiL?= z2FecZXDyRWE9QWlSnK*Muiv?1%oCkQ;wXYFF2u5{_!X5kSJWqeJuVk_{!pvIyx)zT z3aW2o6np!|WXGQLFT32h0bSc(@pi~H&NS3=Ked{eCbX$SZ1PLZ`YtO8BYbNGcc~es zpi0(r$`P+4%ac)cEwosSCnZSe=DgSl49yu-|1~-&G__if{A=i08Dl;mj!EI{es1MUEKo(=LhGEj&cNs5qTR$;LXlWGRV^{a!Ei(%o3p2d zd0$06SS8r6k<})B?$TY~0@<3&sF}KMSGDR7AfSQp(Vc+Ll+^jZ|)V>$DVl z?`R|9{MZWU#9wPCWO*a^)pWF$H@S>3@1pO8Y0qa21u$8&g+8=Z49h`c`55={A!B-GK%>j|YQjZfF^Ccx2J^ zLemz+JkLbNYp?NG(rvl9kWq~hY(1Qw+&zNZ#X z0l|^w^Lq>r3an3G?8mca8dc`b3C$r2y{YV4yR__2dlLfFZgP<2lVsgVs8~AfCJhVi zzadn(5Lm-{(1fZQi*;z;yqM3(XACS?OUTWDs3D)(8{`)njUc0+g%BrhWdpMM2BAP#}i0v+DA zpznz}THlkC{dSjLspMp4j#fe|!JB0n1@VaJq~(b4o?a94KXLQ%@u{?6tfyuAFH2$N6zE$u#ho`^1nPtUfW;lFcUh<=TS_vnSCrKKR0 zwMvhhtd>pDmy+Pw<$qqL8b8g3lm6>m@14VG^ES|pZfs(ra#Xwf0M1f^In3O z_pSw#AixW#Dk|oKi2ASY`T6;(Fv&c3z?ZXvy110BC@L!Q)OqXa=}i$`z$`S5TO;Ijz?X=O?g1^wX-fbmS?;!ky%JO3Iv0vIl{ z9@7q8RKw0fHX};_pI!^7-+_Py0=O0tGy>TmmtKFg(R=R_{X=A`a0@TQ>oWK;J?H~! z6&|?77)wbhH{%B`NX!9{2UtA-B^F_CDg=lZz)>M2y+4!;sKoi(RRC`WGSmUMVv6Wy z)=xmONA4MZJ4h~w7LBEei4ln~|UMU5u>XFlKundVw^XVDLJeNM* zZeK|Ta5gqvUd3DifHf$}fZX+L`jX$<&vlaP?7D+FlTRLvk)UYsfXhx@>N>zZj^ zyLNzJqXOaNnP-%k{ zbOFc>8-1!aB~o_0=hwlu74J0^;C6@w09vCO;Wv;hXrs~kRP^nVg1{`jsIxkRAK{0w z`E(!BwXkTkN}ydJl#F7m_1akgSj1UC?^r1z&YGN@TyaxXjf^EA`$!ChekuhRaCpFp z4Zt4=RR9Flxg8G(N{UMF)_7o8WjhA2-=`B|E(;w1cOcbbn*!)afGu?l5IH)E$rz8n zLuu-tDe)dLUfwjejNi~QUD=ks&>BDh%3WDG7Lt)c2^49>NB>3uTFu*KMV10UAe;f< zZ+TtO`;mYH=H;_ATZNhZ;8e_zSG5uY2auUW(pvpz&whfwbO<=rk6A!XN6;EDFs|UI z3B#Y5e;yYM1n3o80Q6`%UZH~!`5vrQ0fY}SM=hyrlF~xq%7fj@jO>sb9t~%J0PeT& zg%wUH~-mONK`h65!QR06jgy!Px81_3LyoZQ%u%ENfJa6ROO-TTsg47kO2Y zCuWW@;3$na2%u4<-!6s3+NJ=0AI`}xU`2i1ccsz^)tpVJv7;_S<>~4w!q&OGynMFZ zP6j&Do}P-S@9EJF>}h;rV!qc*t;=FJgRlK;y*mfVC3}4({ogZ{zI>*`&)h36iClW7 zL(Z#B0E%F3)|6z`Ol$&RD||T;o?DWhTZU)#-g{6C*@_V)zb=o<8;l3-M#cgy#j|_v zhXATKp&=yw=7FT!->(79$16!3d@yi_THjr{d6$dN>B>}DZjocN27rk;{0zAX$Sts)0P&|Op6R!e0ERI!0npkD3%L*j!v0zi2s+2sa?Vq^j`l8(VQzk+x51#x zVpjs{AZI9RDf`9%FBg{|;I3SCY%uR8J=1Cd1FUz^C0@d@`51a3L?s$CxdIS5W*tPX zgQceJ04w3q^OUWmaaR#E3s;0xjuhAB_lssx4AS8PgYWzQ48D<$T~uh$VI3VEp-?DX z+F$ELpd?tU&i-&?l2tWXL0MT@RrS!=M9dk$ZorVW0Vq@fvo%ie91Bl~cdw5}!)!~( zsuN&-&Ng`J(C)+P0H$TnI1hB%6;`;PS#9@EfgJG20Z!;AV64+wT;%^4&xa^kwgT`T zxCff%S@*pVQrLTOGT=)kTz;w3lcvKdJ4Me#Yd|1LeHNr8U!lvTr~;ZQKx_Dd5dbi| z>|$0VO(b*OwO)Z)0tvdkalo-<`7?z=k$>@#z30@T>LSl#<6bsF8o+Ervfma0Eqq&m6@As zjetq@`c4?SMj#%g+@PeSyyQEslz!;qEI8D*?Ix53b~DMf6je8 zF_?$@L)FCQLJnEVUNOWj09w}j>zDeK()xOR{1Gq&!>ME$N8ZUY(%{wR6McMl^F8@f zW+EwOKR|^74Szo&Z{at9U__MSg0Hpdw*SHlAvXkGs;B$tc_^SY^j)Gl$!QiA7W#RO zLU?RlRceyIjDS_a*UMGGWdaR3`@-TPCkIEkb%t=k@)hbAHc@R4ex+V{D*A7TpaiQP zDo6Q!KDx_g0c`|W7R>*zWxw2Cucer;HuvxAdxqoStzQ4$Dk?0psIxRN!Gw3@J}&^8 z6S&}i$r%6tUe6gpbkW63v%&_rJi+Cz86U6qE8%#Byw)XO2k+Gj)#t^sZ$A7F_;f1n literal 0 HcmV?d00001 diff --git a/packages/app-tests/sqlDiagnostics.test.ts b/packages/app-tests/sqlDiagnostics.test.ts index 642dd45c1d..8bb5056f3e 100644 --- a/packages/app-tests/sqlDiagnostics.test.ts +++ b/packages/app-tests/sqlDiagnostics.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import { test } from "vitest"; -import { parseSqlErrorLocation, sqlErrorDecorationRange } from "../../apps/desktop/src/lib/sql/sqlDiagnostics.ts"; +import { parseSqlErrorLocation, sqlErrorDecorationRange, sqlErrorSqlMatchesEditor } from "../../apps/desktop/src/lib/sql/sqlDiagnostics.ts"; test("locates the Oracle invalid identifier reported by the Agent", () => { const sql = "select x.* from si_price_adjust_task t;"; @@ -44,6 +44,29 @@ test("rejects malformed or out-of-range Oracle Agent positions", () => { test("keeps existing line-column and PostgreSQL caret parsing", () => { assert.deepEqual(parseSqlErrorLocation("syntax error at line 2, column 4"), { line: 1, column: 3 }); + assert.deepEqual(parseSqlErrorLocation("ERROR 1064: syntax error near 'LIMIT 100' at line 3"), { line: 2, column: 0 }); assert.deepEqual(parseSqlErrorLocation('ERROR: column "bad" does not exist\nLINE 3: SELECT bad\n ^'), { line: 2, column: 15 }); assert.deepEqual(sqlErrorDecorationRange("SELECT 1\nFROM bad", "syntax error at line 2, column 2"), { from: 10, to: 11 }); }); + +test("matches DBX pagination rewrites without accepting unrelated stale SQL", () => { + const editorSql = "SELECT *\nFROM projects\nWHERE ;"; + const executedSql = "SELECT *\nFROM projects\nWHERE LIMIT 100;"; + + assert.equal(sqlErrorSqlMatchesEditor(editorSql, executedSql), true); + assert.equal(sqlErrorSqlMatchesEditor(editorSql, "SELECT *\nFROM other_table\nWHERE LIMIT 100;"), false); +}); + +test("matches the user's own LIMIT when the SQL differs only by a semicolon", () => { + const editorSql = "SELECT *\nFROM projects\nLIMIT 10"; + const executedSql = "SELECT *\nFROM projects\nLIMIT 10;"; + + assert.equal(sqlErrorSqlMatchesEditor(editorSql, executedSql), true); +}); + +test("strips the generated OFFSET ROWS FETCH FIRST suffix fully", () => { + const editorSql = "SELECT *\nFROM projects"; + const executedSql = "SELECT *\nFROM projects OFFSET 10 ROWS FETCH FIRST 5 ROWS ONLY;"; + + assert.equal(sqlErrorSqlMatchesEditor(editorSql, executedSql), true); +});