From a6c9beaa89f1a93f9a0373c3465c5983162f1cbb Mon Sep 17 00:00:00 2001 From: Gahow Wang Date: Sun, 19 Jul 2026 20:41:20 +0800 Subject: [PATCH] Diagnose Qwen30 Fixed-PD admission state --- ...ed-pd-ttft-admission-diagnosis-20260719.md | 45 ++++ ...lot_qwen30_fixed_pd_ttft_admission_mock.py | 56 +++++ .../qwen30-fixed-pd-ttft-admission-mock.png | Bin 0 -> 102124 bytes .../run_qwen30_fixed_pd_state_replay.py | 229 ++++++++++++++++++ 4 files changed, 330 insertions(+) create mode 100644 .research/experiments/qwen30-fixed-pd-ttft-admission-diagnosis-20260719.md create mode 100644 runs/frontier-fidelity-envelope-v1/plot_qwen30_fixed_pd_ttft_admission_mock.py create mode 100644 runs/frontier-fidelity-envelope-v1/qwen30-fixed-pd-ttft-admission-mock.png create mode 100644 runs/frontier-fidelity-envelope-v1/run_qwen30_fixed_pd_state_replay.py diff --git a/.research/experiments/qwen30-fixed-pd-ttft-admission-diagnosis-20260719.md b/.research/experiments/qwen30-fixed-pd-ttft-admission-diagnosis-20260719.md new file mode 100644 index 0000000..c3ac4f1 --- /dev/null +++ b/.research/experiments/qwen30-fixed-pd-ttft-admission-diagnosis-20260719.md @@ -0,0 +1,45 @@ +# 实验:Qwen30 Fixed-PD TTFT admission diagnosis + +> **状态:** 已批准,运行中 +> +> 用户要求分析 Frontier 在 Qwen30 Fixed-PD 高压 case 上 56--58% TTFT +> selection regret 的根因,并给出简洁结论。 + +## Claim 与决策 + +- **Parent claim:** Frontier 在 capacity knee 附近的配置排序是否会因 state transition error 失效。 +- **目的:** 区分 TP2/TP4 conditional prefill-time 错误、mixed-step composition 错误与 admission queue feedback。 +- **Competing hypotheses:** H1:Frontier 把 TP4 prefill execution 相对 TP2 算慢;H2:decode service time 的绝对误差使 `arrival_rate × residence_time` 越过 MNS cap,首次调度等待被阈值放大;H3:即使固定 admission state,mixed prefill/decode composition 仍反序。 +- **事前预测:** H1 下去掉 queue 后 TP2 仍有更低 prefill time;H2 下去掉 queue 后 TP4 恢复更快,且只有 simulator 的 required concurrency 超过 MNS;H3 下 state-matched stage contrast 仍支持 TP2。 +- **判定规则:** 只有 state ledger/scorer 等价、queue counterfactual 和真机 Running/Waiting 同时支持时才归因 H2;否则保留 H1/H3 并补最小 telemetry。 + +## Setup + +- **自变量:** config 为 Frontier winner `TP2/MNS64`、real mean winner `TP4/MNS32` 与 real p90 winner `TP4/MNS64`。 +- **控制变量:** Qwen3-30B-A3B BF16、community vLLM 0.20、H20、Fixed-PD 4096→256、1.125 req/s/GPU、MBT8192、piecewise graph、原 measured profiles/collectives 和原 257-request traces全部冻结。 +- **Workload:** uniform open-loop arrival;global rate 随 TP 为 2.25/4.5 req/s;prefix cache off;每个真机 cell 三次 fresh-server。 +- **Baselines:** 完整 12-cell frozen real/sim surface;真机三轮 pooled metrics。 +- **Metrics:** TTFT=`first scheduling delay + prefill execution`;request execution/residence time;`arrival_rate × service_time` 相对 MNS;Running/Waiting;stage ledger composition。 + +## 预期产物与 review + +- **预期数据:** 三个 scorer-equivalent Frontier state replays;service/admission decomposition;H1--H3 verdict。 +- **Figure prototype:** `../../runs/frontier-fidelity-envelope-v1/qwen30-fixed-pd-ttft-admission-mock.png`;左图区分 TTFT execution 与 queue,右图显示 required concurrency 是否跨越 MNS。 +- **人工 review:** 已批准(用户要求直接分析清楚该 case)。 +- **Review 意见:** 先复用 existing artifacts 和 CPU replay;只有现有真机 periodic queue proxy 不足时才增加 GPU telemetry。 + +## 复现信息 + +- **Code:** AITuner `feature/sim`;Frontier frozen campaign commit 见原 provenance。 +- **Environment:** dash0;Frontier replay CPU-only,GPU visibility disabled。 +- **输入:** `/home/admin/cpfs/wjh/aituner/qwen30-fixed-pressure-surface-20260719-r1`。 +- **产物路径:** `/home/admin/cpfs/wjh/aituner/qwen30-fixed-pd-ttft-diagnosis-20260719-r1`。 +- **已知 deviation:** 原真机日志只有 10 秒 periodic Running/Waiting,没有 per-iteration ledger;它可验证 steady queue 是否积压,但不用于细粒度 stage timing。 + +## 结果 + +- **观察事实:** 待完成。 +- **异常:** 待完成。 +- **含义:** 待完成。 +- **Claim update:** unchanged +- **下一步:** 复跑三项 Frontier state ledger,并核对 request metrics byte-identical。 diff --git a/runs/frontier-fidelity-envelope-v1/plot_qwen30_fixed_pd_ttft_admission_mock.py b/runs/frontier-fidelity-envelope-v1/plot_qwen30_fixed_pd_ttft_admission_mock.py new file mode 100644 index 0000000..67d76ea --- /dev/null +++ b/runs/frontier-fidelity-envelope-v1/plot_qwen30_fixed_pd_ttft_admission_mock.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 +"""Render the schematic for Qwen30 Fixed-PD TTFT admission diagnosis.""" + +from pathlib import Path + +import matplotlib.pyplot as plt +import numpy as np + + +OUTPUT = Path(__file__).with_name("qwen30-fixed-pd-ttft-admission-mock.png") + + +def main() -> None: + figure, axes = plt.subplots(1, 2, figsize=(10.8, 4.2)) + + labels = ["TP2/MNS64", "TP4/MNS64"] + x = np.arange(len(labels)) + axes[0].bar(x, [190, 135], label="Prefill execution (mock)", color="#4c78a8") + axes[0].bar( + x, + [30, 6000], + bottom=[190, 135], + label="Admission wait (mock)", + color="#f58518", + ) + axes[0].set_xticks(x, labels) + axes[0].set_yscale("log") + axes[0].set_ylabel("TTFT decomposition (ms, log scale)") + axes[0].set_title("(a) Execution error or queue amplification?") + axes[0].legend(frameon=False) + + width = 0.34 + axes[1].bar(x - width / 2, [8, 15], width, label="Real required slots (mock)") + axes[1].bar(x + width / 2, [58, 80], width, label="Frontier required slots (mock)") + axes[1].axhline(64, color="#d62728", linestyle="--", label="MNS=64") + axes[1].set_xticks(x, labels) + axes[1].set_ylabel("arrival rate × residence time") + axes[1].set_title("(b) Does modeled state cross admission cap?") + axes[1].legend(frameon=False) + axes[1].text( + 0.02, + 0.97, + "SCHEMATIC / MOCK DATA", + transform=axes[1].transAxes, + va="top", + fontsize=9, + color="#8c2d04", + ) + + figure.suptitle("Qwen30 Fixed-PD TTFT diagnosis", fontsize=13) + figure.tight_layout() + figure.savefig(OUTPUT, dpi=180, bbox_inches="tight") + + +if __name__ == "__main__": + main() diff --git a/runs/frontier-fidelity-envelope-v1/qwen30-fixed-pd-ttft-admission-mock.png b/runs/frontier-fidelity-envelope-v1/qwen30-fixed-pd-ttft-admission-mock.png new file mode 100644 index 0000000000000000000000000000000000000000..9f39ca145c4b6df610be8de2a0ae7b387cbc3f03 GIT binary patch literal 102124 zcmeEu_dk~H|NkW=711OTnr23_8ibY<8QCjjkBqXZL@A>?GP5rvE7_R|MJPM7$WF31 z-{;x={(K(a@dtc=`FPy-UAJ;w=XIRN@p?Vi>wK(m?IP_~rmZ9riT3g(8ATFl^8*rT z!!K$od}kzLhctc>w?D6DuVj78{;s~Q5$USFy^V#ny@lybwmU|)cBa-=Cyop79~a|c zGqJa~u@mRxv;6PBaopP0nD6L?CUv~Z7Mn}zb|eyW2JtV24%4&!BnlGgvdlSU$H-sZ zchz=RuW$Y{|JCK$O$LQS2j_GYGAny-id^`0WUjsODU-oYgU4S#^t?ODWw!fW`$@B3 zwA=I;f{wEc&TsDR>?&6g^TOTtgpFQe9PL@)6>(QsZTlD{3`xr@63!naXq0D z9%sGizfBdpEer4E(|KB8H+1v8*B0;g-CRF+?%MS%H1tsjpKf3K8-s5$4#p04VR8n^1Z6<$y+ND+Ex({EE9zQPs`RV!XpC5Pp>M3S! zZEfA8woDh|Ug~?o zm+3fpbHoj|`AhQkLkWqAeKR9Xj#ld$dOG-iE>{w9N^ z)%eQd-!0MjQqIura}-f@hAHn%_MOkR__lM)mMtXG#fukLrfT_ydrKvFczA*uOI#Os zp1Ae7Y_#Pyd3}0vvi$L`W9`yv7k3@ICevT#_hV>iGXn!du;~U$N&%bil3qSOl%y2p zSNApZtja%LnoT{qJU?-9sQx8|VSV}Xbc2M!)Xz_f&Q5>i5AX;J3s>csw<+K#X<1$| zG2u9U`gFoPJ3IR?mK5*4lBwBQl~eO6XK^&X6gkN0=4K3XC}FpYjgQ<8j0PXMF92BoBHDqHtQgoXXc>vflo5Vj;4 zZs%O>zS}!+M`@Vy`nx-p`$cU?M~{Y4YLm%i{gFm;LCxEnmA-13dKBr}@2IS;tw+|Y z16Tvz8aE7bS^s-yPg&b{!npp!^JDTPLn<0dN=k=O77^Sa*XcTu#$_DNzTe&N zoK))8L&Akj@B8lImYvAZEln5fUYs7naiS%8zIw%Zt1g@@+z{=)blJK1?u1T}^K1=& zFj=ahw)V>CneB#ie}ug7lf;>}ad6l~!U?&F+e`H+;@@tT%*N07?Ku+=%}Vlk-Md zPT`%#22?D}wd^!Y)m2vBy_ZML6E7Gm7bcjQnduoHf5@yg_3@|Y$NDGxt2OezHZ;g{ z$)DYAap@8@s>lW`6;Xrh>$jgYZ~gFe-wFC%yW&sEyNRAUbtMDmO*!#fo^|w0p=D>T zqQbRcjU2Pf#i9@C+e?mKbol3m~EK^*%lFL=%oM+P6v+}zyJ z+4<&&M?3PJrW5NIf97C|Ue2Hu%f9`1=aEd4uLnm~$yY*X_F5zsIgEFlq}eC9@xXxt z_^6Wj^Dn9DCsMTvc7FQwNqi`NRO?mE^iTu2fLvT$tZ!{ihb7F<&yTU{E({ei-Fg4P zgV_%6goMK@OJf-(&B@O?CUi|ql9eSKDzr9l+H~2JYWsd_HoNp+|U}+gn#f#l*_rzu#a~6Ljv~o$*Z9McbG2ckS(k z+*fB+v#q+B$g;urA3ogl`SWMoK`*A0W-%V?Yic=WdwPmpl5E|yC0?U3{_tUSmwbDx zjwr(?PMiphh`18n638x{X;iy6r}XMyfW#_vj`&r1BR;AkiJs*3?AbHNwUvS%r0(|xG0vbD=|(m3*~t`axc>7uZ^qSRZ`;cg*tojTA7D0?bE}T& z$MA4+kaepBR!G3Oe!pMm(AXF^nQqIL9i4gB4CoMM(>&UR+4&ypB`=B-BeJuFaI+2% z6yvIbM@HK+_{d=*)={ml7yX!ykSB1E(?=P1?u^S`MbUB|V%Ke}tGhZd#aFT*C9CvG zk!(>Ns^#olXwsPQI4IX;{dNXWd0=gA&AH{s$&)ImKC&9?D5!1bZra1| zio<^nwrl5Ey=?6lPNFIB>j1F0i2n5Y%$>2;G;V;BM0>4Byq=McdP8u^=cqH99}NZl zdQXwwx3{awMW59+G&D5n_C~dSA{)$Qy0XTro+Xns5#3iZKR?d^0JMwMW93a%;kBsK z>gFs>O-+@}uaq7>e*CzqsH?lX^5HfHp+SeKpO>!}Io?iNR%jAa2x&0G=6R2{m}GnO zYIuSJD?QQ2-An|JssF82OJy&`9b}!mvrUzNdNd|ZFU^cR$S7IbN(uy6KXdC^8&ON(gIK^)gNppPvKMSIZi z-~Y6^S(zw!j_Ye@20w?zJ806eo_*RNvA!Sp;Lo2wlIR-xmX>~KBavrZ_Trn4lYN^C z?~MDR6PJDdEN31Sz5=ME*l_&Hl`Ezty{W%@OZke^ug810x|+A794RhASxg@dWp!Vf zytrS?c4MA(?*$th{-g3yskSAZM49a>up@c?bL0vN_a3fkW^sFt)>QRF#e7PMG^h`x zW5-w0*BzQ zQ*YT)o`1U^So1|hw;nx#h0I-CTpkQsqAy;1DSmnRz$<9~N@sixE5szSrV`%n_{Z3njEM*^dw z{J*_5u0Z|kcb(zWEs;Too$RaJHnMKkmhOk*eCXuKJ-{X(0H6f!{8B3}^)NLx9quVU zh5oH)Wwo7^mDSPF@jFhesMAz}kZl=0!}Vfk2iLi8#%9w@ryco)E!x?N@7}(BFFKm_ z*RNlHhQA&n?#jr>2sJJ3c`Sp?!XJGh)5gP^XJcbyhuhyA>M8Z0Bca${#C^P8;_8Gt za_Hz$s`B#ke21~UKxs1_I_GgwGNtaT_ypTYnQz{li@)Hfkgg?$!*NJloN0cdxBBI& zy9q*nYtH#==Pt%SCb}0*c}0cv=(iINqs{w=&>;>EJkLoQ?|yfeY;-kT=z4*Bz=1Ox zNkn;g`t<2Wl7QXdXN!@>rY3Sv3GN8W{SnP@pcTzgr(5Rc+(hqFR8o3N?tFJQgX2bO zD2dHbFpPTZRz-D@$^*)SgM;r;4=g%!c{K~|hU&L$-n^M}Jp81&@?g?sR1nAIxinGd zndIS?*CC1xuPdK0yw(~5ijf_$9|_*i$jCv?%g%0o7v(z@Z=6XlrB&*#9U2yP*_7_U z>E!H{jvRB@S|9+G!RcyNk4vV$41CA$jCTa5&FkZ})!yFnYqo2D|6b~};~z;Qci%I; zPxf#pX3Z~W8P$5ddGkhbb!&?8pJUOk2gzxGEV%;(Bl~!~Y#R&?9Xj+ZFfiusf$&V@ zO#QABH%;srS)-ZpPSp<|K5&q?Y}>ZWkLl!2QjmXl*9?tLmf>Ty0$Z}<^q^lyA)u?m z=%Sg0Me5wUV_x*#g$~ba?C;#!3p~^C;?{Ua&U>6)+|RL=6KYW<2G#z31GOQtBY^k> ztPS#~a3~H1KgyVKBH+U}_jiCZ$5K>YCkE-ZHb_&mSNSm?Bb$DWd)TpxJI$SI@h$Go z&ux~`D!`(_{(dNW!HY$1%QsTh-bnH2mS_#w5;ZA~ZlB9vlJRx3JoUXK`DodR*Ek{l zMS!#iXWQ$<*JDCL7__vtcN{q2j|z22Kwt-Mx2);4=(DsWlkUQkxC|c@55qBD8d9EB z_dm|U!e-6XiHV7_wJ4ebw>~pcvlGbm!DhPm)zue`u=jpH_4FhyEGI8$XO!GAD~8g8|+Fu5=sA21brp#wE<+pAZvNS-KPdeeh- z{DOjtvPw9<8>y(`aQ)QVww<_CQ1~keZ}?-Pbp1lH^DI%Tg1J?1uB|M7Yt$}vXK|VP zMG+`Au>b_}6(!SRgo>7l_?WI>X3i}q#l-fNl$20YQ+r~!Hwtdswv7N+N!MOVsi`rd z_St|Rk;Mw`eeO-LE?vFhEa5a|hz5E}QyuS8^)>z?QN}=g4)O5NTnRZIT(4?7^^A_B z2ZCod09n?6)mGxIPO-R{4TW*YhO#}8lP8oU*TsPl4WE*6 za7y>3kz-xOE)1vc{3@Fos13d^W!{z^taEpy@w^e6nibeIz?uY6`n5&cV!(2|LH90E zNJ3+Ix?imE`+y;fvp5%5%E!$QP?Z0mo|#;2i@z8kwS&h0>C+Fm!{m8@zK?sUU%buB zt4>va%Ww0&%r!+j5j5>RBpL$Af+DCSs+YPK&lFw^IKV|&ZhPp$(=sezuy=D?Wk%^* zI4?bqv6YqoS+^y<-(3YHPaJjQZB(17sQN&UNP-P6z^;m#H_!l4_~kfFifspKEXu#5 zs*L13dGbW3Gmg$l428jrvi#q^@^bXXP6GXW-7Irp_w(91THQ(q;JqwfRhq6_ zqh{Jk{5VVR@dA3r#+ylmnsnhQ%e{?*SMv|DO1%!n!K$>viIw4Z^bYJ|8h~Y?8(Y)ShFm8Wk)}+zI8-H^zTeKesj^^q^)Oal|uzEJHvXQ2wVCVTLF*_>BTl{ZPWxv%F0DjIm19OOXe<(r0n^^)h zVroK@S21@7%zLg=T~%eqB3OX71(*`wxNc-Vuj=Hp1=U1rN!%qrEuE{`^y> zUipTXHSb&(v;JNJ)J7`L&ke(abrFq%D%A!z!bfj$bT}u6hlT0aM~a1>cCw8Miq1(Y zJZ+;JR8UZ0#C)KX|DF44;fzK|e``kv6Lh_N=h>8VHKk6|M}c9V;sczcjy>t7p}_?C zFX%$d$B!QsoJ9$ROk?`%5x=;|$ceX#U2We_GmMw>*{P9N$^1~jvjt7OW6>Wp;P>ij&*zHxry;d{{F4`S}nOoWYK^(u9tM& zKDoS6N!Qv(%OoTzE4%dtpYGoi1yU?)ih~!_GbXrh-P-d(eVXGJ*w`EE-m_2^HJ3`E z`t?Uxmt22$4OMe@@@}bNp;YS|zSS4yKCa#*8Q0d68SlFU2<9ARcJkZ`FFrc=4jWc z$2~(;`T3$`15RP#8xs@J$4z(d>vLV78`m7kxv8MK3!)Y$V`~0c5)JFw{hPP%FN3T~ zVd#H{jdilDscDzHyZZua?AKUnAB#hh!v-K-qPP1trt1{@Ldit|rbKP_eD-Vyz!a5) zghaM^+jb~)il?3m|1DrX{uMHW3=4#G^f_mD)t3cpCT3)LXpAD*ZR1)Mk$3Nfi&2)VHNPX?vH7AV&Bl45& zEy5OWBH0K1XzA!KqDv>lm||OH8h+ZTRbaabpYoEdtfKgxJq^?9K96twx@To&mEKgK z-fPMKVNvHzl-M`y{0`J@JzU(v>U{58+UYf@`v8?2umLYZvU>w9=cTjG>zn50Pf(S= zL-eb-;A->9W%slIDpFV9tiEFe~xo5Cg z3QTS`q+{>k5UhhcuaPm%k-B@xSXm_KE`S@k&DTyjB|fyOww60dg_|A%NCo@}@;u~r zk|3oNXzWEKx3U*qHYw{8JH`&hUBP@Ofhw&tVV!R=KB-kp;k&s&GmaFQy1+j3Dh zVC(|qWAeQ3w42h8Skb)HT&KnXd$E$7XAKV9NVtDDm~N`?xk{I7xVknn)fxP}H?Pa~ z&Yc%JV^cBPNnQ^hzS7bS2Gb@yhxQV;Q#vKCj{yw`8s9jDt!}>GS%(32GFi9uEK$6{ zD$w!14}Xo9Ep0-3Yg|yP2?x6;9rZaZz$Ps;f_{L@EtSK*z-$4IW zRA)G@g=*-#`@3apYFJ}nBz&kq=hP^1hpnj9iZ*%B8q9o_Q*}#AW|qL|oh`5ElNp#$7H#)khHl%9i`4Q$CWE`0#8nAW3IePHoU)b=4k>)7D4-b|@NkQj--ovMruaFV3 z2Ht;tG)>f~W_OOMpPwH&>OM3vpsBp<^c2s8qPDNtuEEYhub2-qecbP?Y=z|&r|s5k z-$X?vo3Y1*#0?Ye`OMOnSZSsQ93oa-W#D`O&~&@ocz+37bv+`GzvQikGO+y$yfs{c z`)}R|kn})qL|x`mYi9QZ1YkLb3eWmhkGH02o=mJmiyl3%+g#+n%CzgKTwo7)+@mG0h2xR;^d|W zF0-RYx=)wd4f%KI#HIXf^ZNzm>19*YX{Vha%t1Ze+t*(uUw(cx`9>NOiSX1wZxtej z+H^g5i+?wgw*h04?cBCDqI?i=a%2?>oC4q$DePV~dKAS+n!@dj{E`E%@rN$@2MvCw zp`rPJhG&0Vw`DR`)W=3r(z9`YyZS2hTE~SyvGoIPmq0|kuz4=q`9y?=6XbG}7Pn%O z+MAohjpQdY?l3;gSR)_%`L#Hn{py3S8Rzx2RkJ4TBF7zIg)QOHrKP1aOAsHMMfXqP zy=>-xYqOY}iK0xM4-+&Zk*s@5TJrfSDk_3sz#clN8IH<0qMY8B+2h-EZ1^B(>g43) zf32_nf4SHDa&vRr3mv#qQ&UNX_3Y}fjlg=Sppt%TEQNVj;X_v)bM66~7b#H8dJGgf zJ%^_AB&6W}kk_$K%{ zT0)nz?D;?c+=u=79YvHRI6nZp-8#9hMv2g2=jSiN9wNnnv@ZO5+Yr?FIZ|vFj6o`r zmzS3w#DH&8w{30TW94{?Sp{xxB*ax=$>_j9Pw<;vmL1vUI6ZH9GcmR^mEei|;O@;SDpyQRI`R1^{g_3LmxVtQ?sc1g*?ejN zr4m=uFh{CH`Th#LfeT>#*{<>{ZK;w$H+dy}@c96Chlu{s;lNU4mS(ek<;fK{r%c7WfqLnz1YOAXiCsl`Brto1B1Qkg1Mnq*M#r|9Fvc_w4Nk7 zktvQw{~q|AABB&aJrmjhkqf|0^G-@SmYSBfgPHjWSWH)ulM+*IQ)j29`6}%>>U(HO zSi-WZDk}JJGWb*=pFSTx$ar~s69h+gIT`1PP-5Vbbhw^!81;H%P<`{$KS$`L^k5L; z4>!S4@`5oF3G2YLzFya3RmF(DgkK}yh8;pPPQbBZDD4)ea#yduahkr>oUYA$`SNA8 zJS!I5qqt_uog}agBJyx)*|hxrCiJ~6giVKDQPI`4UqC=Hw~)|9NS-LL2B?H4-?ENCU74I2QG!pi6KYSgQquO* zXU^nof0$lZc8^lPW6kxn)0E6odUKj4gG!3>Ic&V++J%Q_qgVwEsZpL11oK}H<78E% zAxusUT!AK4(a=B#Mt%U?9cf4&yG+@+8li$-5y6u9XHHL2{F8+2V9RcR4e@9fz&LKM8>z{{641#AyA;-0q2g&&ptE;Oy zza_Mrl9H01;5E#<+DKmS-n|or9Mj=yVPRpvrn8+%=n}BNtIrpkO5D~~3L3>!o1*dJ z3&?_;zi`33)$KeXpUlMSH~dYeas2~jViN842gC-z9TB41pg*u9!_gV|6;!qyM{4#s zEIbBiY%0zfoa0d766Sp?BxP1~D`Qv;0H<<}xb?_t;c0H-CaI>G=#jE9I{f!YEiU5q~KrT~oia+*k& zpg?_jch@>qBWLTmbLWU30LCLWNw#Sd6&j;YQj&3xWef#5A>sSmhO^K8i+3El5aYHy z$JDk@#A^TA+OjpFm;%ob<#TSlGlaK0Q@`R%p0%z;NA?yUI#xg`5vUdSpxxlSlp{TM z(yUn$=Y!}TqT=Eyyl)W`%fB6-^fk_<_D5V9}nr zAr)`;><(V)g?k2J#}c8mO9VN5^6kv}3;GR6!Ek~WQIVjFzK5ZK0MUaD>H7e6?|7`Q ziikUmZX_WELm&rzGc%2{oWE}z_x|abf2I9(UchDa*2~lLM-Ly40Xjja(Whv8`smSG zDR#rQ?fXSNv$L};Y8x9HGi?WCXGUADES19i5upDYqLI<~k90}EYYICX8%c!n_Oq~D zPrAku#H+dY=+UFF)@Ttk3V;hOYdY5Q+6P{uz`qe38IAw?4MfngpXGX%;`YOyAR7q9 z9A`EAd%9&<|KmdtAAhSFd~CQX4}o3S;A{Y$o;Nf+jB=rnWq6qgy6Bd=gKu*Wr~F6R z_WFM!svnbMxc{%XtM`9!D?Y@(U)Oj1C$RKi-`Md#-}&#Qz;FI%HU7V@#`ObR0Y~MI zK0u}kKE*TRfkn_LnOKDO)13N-F#FqvASH>S^xU>gvse7K2j8Z`CEbU&6hMZESGRiJCjrZ$Af2v-UXD8HZ}7DdPed6F7xj#c$b#BdK7%};TQhWZIeZQ` z{Y1Z4WXo57d&>k77a&I>>`d$vC?q6LmQ#0Pz#g#!bk5xfdBhQM-y~#18SEk=B>thY zQXg82A`6WXuuP*l`$ia1^n3O^#O?2g|4c-Ki1gv|xCqp|ZJoK64*~)L&W)k%%)~N^ z+OQ$ssP?5rVNBYBd(9)ypn7{kQc^`_ib8`OhsM-2}E9Znp948-8# zVWe)-Hrjw2?sOBp9xahXqG9A`>#bqo*CW+Ooq0k4Q7E1!UHNayr{*RnIhCii0S4VT zugQgIdbB|m&v z@`3A-J9+T>HTTNO3O}(!K71Hf z&P4(kRCF_&-Eb3od%$!=7PqnJ5qOYdgfK)xFyVVB<#IlBL6vug7|!4$tc5dhG8f=v{}>!RI?(pU;NpI9`%4BoOEn)qmVxwr1(|_YR8~{7 z6{=sdR)HXdh={JJj>m?caa!1 zwE|Z<%%fApc=qgB4xJ)VumjtZW|BzCRQazQoMR8gTx}-dJE|VyFY; z`#Nl1f(!js>6VY>-83+GgGeqBiUxN=z?l+i&)>fUwFgC6Q7pjhMv8wl@hYG_Hnz6+ zU%q64(Eb3K1nsS%HD{crHe$U9pC4Kk@sk80B%;o0gHT%DzLdzb_;w$}I~E&=$d|u+ zcM4Ls@4LGbgC^@H9T&tZ8&rOyQGTnR^o=e+N}Jtv*|auZyGONzkUr<^U+oAgIuR)EJJQN z{P}(kip(Y?wC@!Zh(R`cP~x`S_x|BF@w9d5*+lUpWnzq}xVC}!)TvXyx(bxSLuPRE zk>mHNav+*EKF3aM^$TxqR-z>MqkPAsim8>lyX87f3Vo_`I7~trHGn!e4Ev&aFef`( z2GxX^SwMD-6$hXUCDbAP`9UWa<)hCpOZy;{wgG=#8vdi6fdM77AdH+S8o8mUbLX_6 z1uGzMj`B*vZf$(E(v_<+03P%Q^ei3}2(87-&yN<-)Ta>r*?D;6hF00FRq1 z=3G)U5QNq1%D+v}-pI(vggMm*RJ8mEnFh}{+1knfz(;31>ne(SsgF@F2iOn^{7qfuwpw=riM=-#A-?%LGi9irqg!I{+N($P_4ag0In{v(=E ztRw?zBk4A3qY+mUwHthTZD4(_)4I_aS-DRwxxfdqPKciiRxbhw zsddz&OFSYnlOqt{d4lIr>r>?H7N?95CX2o85f&Eq7@DJbs*;&mN+`eneSTr#*247% z_wNU_5~1{L3*-Jk^4d>=5X z*>tFYfp_E3dIg;XHG-x&i*EDXcbVoNrbFjEj9HIYZ+@ej5G_)?Wfh=}h(R&Ur01myu7=)rxC)pQ!Yi@qQ+g%alq`;4rGZmYQH8OC`|AR2w*^RrFE(M*O%A_ z9n@db(?vlRTJzqbA3FB& z(Ie{X89HZPx?9_I460fLEG;iTfgiWc*w{E{;A3YLyq`X3R4Nhm$UbXf2N-WZ8s`)5u4inrIz zm!{|ERk<>7upjb&o>yaqSr!M0LcB#pNJ!bVJF-g&lKmdAmL`oG@Kj{rAlHZ!k|?4O zqsl{&x{Wp0p+d#MKM+szKm>XJxTRw=OG^<$=}G5@oBEN7f| zOAadWp(?b53UhL9k)n2VafwIX1*xU`&!6uCQ~UGl+X>ht-vK>F=z^bmxz=KTXw+c+K7PVP9)L4MIGNnV&7PJcfub4j)Fwk;t0?Y z2_^LPOF%N%_(T*RoZ^gTgPt^@dZB61BN7eTLHg(_>wtpF)im0VT4wS!ZWBV=6eL3B zM9zXhB7`#yVDbUu5r2MnpCV-5i~jq+c3c4%2yV}{WR?v%?uTvs9uY=>P*M9~`a8ec zDcCobtgpGCG=Y%rb#77piWdGA02do_ujHUs3wVTALe zv=AMlyA)usU4;(Ykb14eHYX-AfC>B2Ww?CqKD%=5S`}ekVsXmQ^N9!%0%3%{jPclE zZP?-Uv6!C1KHfwkj6B>3Z{SE`ELp#Tir{OoXr2} z&}Tr#Vu3a>ieTbj`UK~fcpqHhmqG_~bS3T4O>5Y?krEyU5HOd<>cR_qph%V_eu!xr zFMA&G+uN9DLlEEq97HML3u302M?GsJuxll3nn}ceNLz1(7+wfol=Mv=kH+Hgsu=N*V2V>#NM zKN>XuGY^By@gaBswg7<(i0~`IJN@|fBVS)B_!l-q^(+|Q7}07&1w~tvX0o-%%#d@M zyi8ErjA;nh5@KWY^zF*eA>v7j;ZREc#&nhu>OooD4!uDV2Lg_p58>uw z;{x`>%?NKEQ-2nle#nQG*&EqtN)p_sM?jfzxY>ZIGO#`moOblYlAG^$xWWnwcOJtK zKrudeRU%|gY(=;kNEk5@Q=|BJe`aSZk#Ky1`$B=UXrUF<#}Co3z3P$${V99#w&rdaGCfK_4v2muPmkuX>KS2?vOIEhIo zwo_$d|;c%)|)V@R!&>lau$t!uFxaJwU-^ z=jEkEx?U1zkw{7v&$syeadN*z^t(dZ3}5z)`79jHeb6tqk~nlrPGjpOwk-wuY~|W| zRe3i&{Vli)6q0Co=2uynn7ClBz7nXz?jq|PgYelLp49i;8jYf{;CBjRig9LzW4A1_E$jM9Z0;fHXFu_I=hWU5_aI(l@r|zaJ z2cVyruFwGF{4@UPiu4T4i`pfbT;UF9Dzts>*)C|FMNr5ZUR-;VBnkS0nbDg_phhQH zB31DyAfVxe)sOcN6~iGwns!q;ps}0>D%eBr0NR01)kiIjAxAyT3nv zy6JXd0;`y9f?~(;@UVsHcGk0CH#`abOTcO08adpfNLctIAK<$+gS&w)Tq&M}tVWcZ zEV9%5@0ZD%dFje?FpO0Ok9e3VuI1VMc(2vQ$IE*aGsCh@DWd}~BO`g7XGh7(cid-a zqJX!9Zh__jZNlErz!G{IO`n5 zzfou1!gK{&clL?|k8b_zvgi=n6W{J3BCE zX3<-sZK;D;3#+y6y8Bc7q5>_4d0rq_r-VI89$zI)icD^qRR4EqJxLxhd&c{>lTtex+s=W1;tw``>qUX@UQ#Gu53x zj$4IMXpR1f6!y*(1Up|eqVXshHB2MT$E`^xsM5v;i}Z#67-oA?&ZJ`okq^yr6X|Qr zIm%$uZ0*{8DLm47N!bD)Zoe{bkSMrccH&8*C~qEggK}r&5dgjWzAuygUZ*2L(+XIXSu9s2Ji6r+#A^fe0_XTf_FVJ)Pwh z+mYkFR>B!|jPyv%ZqV?`t^)^-`^D&?e3>;TvttP21NKA~xf>6b2ns25vF*VAUv=6` z&W%ecWT+A@!ja#-iotTlH4rzA{sTd!P}T)w5OW&wn*Vexnvq9$@q8jq{xy;L;-aFB zfnqDOz zk`(W=4IMVM<9|wQr`Q)sk5F?{t}>u#xgEnSfU=Gjmk!6>vDP}aSxn{x1SLgBM|apy z^p=MB^IrAibhENDkzGax2jSqvCb82vY(adwIwX3S_1AL;ylJQcSWewA+i1po&>W~! zQAab^;%lgIUTeBGcQDzCi?Xuc7*7YlVC-4f{KmV448hfOCs@kjuBI(cLK)! zYpVPr`~Fy`BrdUrYmVj4sucB*z9Q-fql%yni~Y|KRjp-^M1{t69A|Q*~pPMyPVq1sdH@j z%H+{C5TxK2S0hEQYY4;2$#H`EdWnv|)=&_Ulho`kg|=sKJ_1J#9{KRMd}5;M$+e8= z$cE_iPvaigB;%R+7=vkAcxRTJYi4VkCFI~67N(xtAoZ+IS$Q=59PA-<*^wKNxYLFC z*u6r}x)lbsfhT0~w%y@1PR^p~j%uu;uO^q2>uEDCg|`HbpVLM%`Z5IrMwW@pQ}Ohd z`KbFhj}fgm8957lQRUr`--NQ zvq(HEKsGup(eo#iw!@^^`JdVUk~%KS^D0}-nR^1;Tx@;kCBe4|v=R|-8Cz8GE#ff^ zTqHSXZS2tp1D*M|4S>3(i13@aGajfy3X?tt8MQ`l_9L&nygZLaHZ=(kpm=~NhynV1 zqfH&QfYPa;-@uY25*CX{QVP9jf=Wm{WQ1gcATrtL-o1N|FlrnqW{9ULwAdD%dH5Ab zh}?#!$$SzH3W$Sdr#Rr80u4=4JUt6Jiu=H;zz@L(B-~TwgO5x#wAa^P8>2r+yaD(m zh2i?sxBt)?r*d14&>?#OnSyY*N~_o-k*l;rYGVTlUCjrFDaW+Ct1J6JXCd%@6){di z!fA({_ozw`Kz|zvy|S&44?HzuY>A=_Tri=HkYOY0Ayk8K2ww^-Y%j1ohJkF7q$xG4 z3W^;$7LC#M(U&h@PQQ9izX98yf?)T~tR813VULsKJPA zusbX5$&KWrPEI{c==vQ-Sn=m2d{CZSUPZy@d*&^PoZkK$=~}NQ^IkkkX8W0_-GLne zsPbC-tp59r7+j$Ivex;k-CZG7$z3V68v7^c#i!15I5$igSH>}~j{FGa$D*^fh2!3Z z{@Gbs|LF7<*j+R@>)nSDO#rS}+UbrjfdQj0k4K~uPm`c6PaD14qF~tqUWee+e#ybW z9@K|t9j-)D)30Lw0@8E9!6Z)tT0_${YuXUj_QG~a$DBDUb;U}45BkG4Y2CMjcU^3- z`l#%bf!|t>t7j$jIB_)Ik!OeU!K6_P@Q5eTyzIz^Fcy-?vK62YoFVu{ZNOthm}I4o zjiqF=$fLA7ExI-3_#y9jo1h(*8ZZG#Vx`CMY^Me~a$2&izEuVDlrtR()71Cj*pNuF zK^*rW3=^UHLgklJJBCpF*_;A*e98FghNDM3!iab#05mm1!JMm}hi;8nqkq*3p|!RV zdK&Y-LWPrgzFg`|J7J8dXsOHa7xuJ~0fr-pcV3c{^Fp7hv4@=8^7=qWW9_^^pcrfJ(Hl2z00o~z zP_3`8j|gq&(6PZ{VmusUgXiRMs*Mi~B{}Fk#{;_!9=#67`R&W~ znIqB59LN>`A6&Gz&+hm>2DEr`(8$sCQzFat`#LiEQm3&wwUa|nR#sNy!j}+W zeIkUqG;99S{hj;z>Rp2KNe*7^!sOxAF>x80P3%eIijvFL#=wc+2L>L3>K+mmWkhfm zdbDa-EBFUK0)m>gx0%c7e@?%nR4DA(js|--+Q@y z#CEpn$fSi;j5M4ih!@r+76b<>fFMo_d9FmR)mcMBoD>i>Os>Qc8#k4G-0W~c3L7RH;(IJ0j>4Nv0^}R&Pk`H&(5{8^1A+_%da2yi;oYwp6ygZ#4ZFrlsz&0kjH z8jK3UV^K-;nEMshY$6WPzHw8bu)0U)p4u5a+bgMqb)%E~A3P_{IdT|YEuE!_3C^YE`-W#`KYou&suK%GfQ8FK*nn?Mau)Zx5jGEo{@GIk~y5p}7!FsW_Dw zeC6%TM_FQJb-KSRr#68aVJ@TOtpsRejtXjp^r2^BSFjMgwET&Nz+fas* zc6;uZdJ!fwzmv z3<#48RP@BhvjQ^jg!xLX!|Pu;wOqJC=J$wVmDRi+{JzUuufs9OgOU^)O_Q58r045$?bc91h2y!H$?I*YycI`S;+&aLS zzJkY?Ji%_bEaB_#?{CtQ65KK4+ZmscdM0&`1cTGWkGR7SP)XT3F*TgO9{{iCFoZfS zX7dHUYhd&g3VP19exgB zevz$l*8m5~Vd{|QQH&n~#vn2R1Ax2x(Kb4|>PI^ckxbSt8;ADa{5b7bQmqCbJ(iY= zxo@5ukC4Dj#y{RScr>wQakW9W#D z=D`0C2CvE(ULuh2z|TCTU5hz#=W?##fgQnCRfYNamojJVlI~cwZXL+V?xq7DtiJ7x^jN@Qg|-AW$h}u2mAyzq zJk0`#VUL=2_Vq6L!e2uxJ=G73-6aQySb&J(LZq2GoO$68JHE^zvE4{;A57pW@@!_7=DF+8yG-EJMHUn}zfgI$Y^UOl`WshsvKQ~Cr#I_JD@>JZ{S z(!usAn%5Y!Qtz9|547D@|5q;z((Q%zbcmDllis1*uMCFGt#D_F(}rZk2b@-$wG}5q z$3J#0l9(UCZ506cMA6uc^8Y!v1ZM%hwMC03DcwzGTgy`uv_9=WazTb9aLE8A0akdllN+QeSU zD@|T@v6S}!R29Bx^fPE>8j-)8)@`)x8$m#5*z6p4TTWa3JOX)UVr<$wiIU!M+hAO&i#zk2>g&@1bEFoFBs;1%Ncca9U%#LTy9C zytL^5qV3JYa%|i7(c2g*Nl2QM1`(-O-?!HKYpw0q_C7YR>b|f0y3X@Bk7GafeLwE32-y_^(S{N0OD~)h zgAMy@6oPIF*zCZ;gR}G1nYc?CXa;LfAMgh|S|JH#!JDa8!;hWpGTQQc$g0NP9*5Q& zPOIyPnSgE1dX6#3!v+r8Ub?D7mO(*FzqJ~-6iGq?pSP;aRStKjqAfW&WcS9KK+uLn%jDtA-&OL)KTg3eb@8oq(`n>GLn`W*Zls+Ia-^e?WT zPB)n;{je*WY?bJPh? zxMt0o26(m&PUBIV`MbHexJ;>=7I3OTi}b=Y`-k7l3Aa^dGLmhcn~vw`oa@J`RNi$o zu4H7pGR|j;p7uM&KI-eG4wh2`=e>-O?~wD55<=Uz5FD2SK2!Y(TX0=7p4X>|nf16& zi4}UUvJpiFy>7#X`rzN71>%r(;x(Uln1aGbd+$h4_<=?n(n_yyctPBwChOKt3}wE4 z7JkI^c=rVK01AbCkUv%V?CA{#HE?PUE%;A$DLa?#0i*hR*S#S@7o8R_8>WewVX{Dq z&`=#i>1*%w`H}m{D|7D@)9Qb>&LV{vbTvS-dhiqD8|&`0oqax#scywPbLSJZrQQsC zneU{-;+$n-p+l&n6O9e)YY#LVpe=I82@e;H4%HUX)zqORi5*R6O~Uf2w_a5M3Shm2 zU*19+jTTui*|AlouWQqFk7=d#wai@lv}q=8>UnKG&CdRoHUk3#BDet8YVRVd%YF;( zLezyQn_RZo=fJw7WAYPos+Pu=f;+Q`&;F}wyIHbVsApOm9het)C%{^=e7mYw3e-;; zR4JE+2BA}R@H(bg%B$a_loy{0)&fB;`o+-S)f#%(3`{bjrHT$YY&rTlD=3iM9U{!N zI(hc1SPc{*w`xMvt7N|m`&Hl`mxyDY=vx^uZeMUz64BVWk%(o_eIw~fA43%EzehWh zz<{_aLL(S{8bDrb3#yuyFJA~`Upc+Ob3u5mkXy;VH{kp3)N&`RjU8`K1R%jW)qfvL z?BwLVer_bO!~hsRBPx~>BP+UaW|F?~y=vVQWDGXiQadM)pC5rdNiA$YQh4Zb8bYHM z#F@5jKEsDj>#LAyvHLBaDwYOhDJ$v?Ogn}?jxTLlLNng75 z53oy|ASWgAsr8iWz;cz7@8FxtB@4*^!TyoUn1*s}pG5j1%6eTSRXd_ydBW2fw=PY> z^cHLzkr-{3?)#jGPICSBO$CmNwi#DNz~Onp76~fMd8RRtcBR25dncI!Dx%=vU_9xE zbME$plY| zkU(EgXB8e4(dYEiW`Kmyjl^=z6Pxd0e$TzkZlDuW&+wVxU$cz{C>+V_9WnvI;q~|_ zDVZVI7J^K+LT`jujWH2TSHg-%13$fwxA65!3R;~ivl4S7xufrXOYhdmcr*2G7(1`- zwF)m-6Y9ouj~~+zNg5RMG8y{defvj#LpCA~`1P1~*010KTC$FL)@?3t3;i3^!i89Cxhgr302qMy-;g_txVl`*}|sUkCS4R8mvt_!*4WDcSP0v55Btk+g-%j^wNZ3CC;NK9y*t>)eJ2dI za-;|sYvDNjU=uQGSrn$R^tQwc5>*47JQWTe9=TsRSOQO-kAOI=ZkNAx8yd%<5b&ckrU0hq)~<^zto;0$zLGHhB@jg}n4ZnzTLW>XHaP zRX|R^VF2zrgf3_225JC3loYEdq;)WweTDYx+nP~qyZKFE`aMs4b@u9wzmdHI#d7T3 z2_S{j@l?G6p9W6r=^!;K1w9@PaaZbqBL@r;-87I2LMkGhc{H&F&3aCvqew6gq?^R= zfkOGKa)Vc*$}9?t)lZnF4(hqg17Q=pVj%)!($?^e6J?=^iTeO#JvH`rLB>kVm!J<| z>iZP&2#vzsv~{}JnkYm-)Zr8n*@k2vRrub|Q1Yt2R$harKnNv31joRP*@+wqFvu6A z6B%=7B9AgbLRyMNxCzl0I1J&9Kw?J7-o)D-jAi0E0Kt4Q2q|ebriY;5H407vETD_X zalQEs(}PWf4M6w`WQYFzs7BL z82-efehu}uE`)Ky!6r0!2uRlgm-D~<82oRd0stBKGv9I^vTee(cn+2!QI-Bx9{^oL zCMOHjj|dq5{IMpFoLnn9b>mBmcG!U8ox|XpYohPW0(SWk%b_jADjk42As!HB6$l#1 zkSM$!KM1`^?4#biX7HO%gXSW&IK=??u?vz>+#W)JB5YvPASt%fH;l4E@KlEvw_LqV z{B;0rU+>5hg@Xy0!Za)(oRLV6dkB(yGJ+)W-@^hcL3wkq?=Z|H$!-GJ@&PCNLzFZ> zz)61y`)ZPM;vKqCLk~2>`82yx5iTXN0#>A1<#+<5OH4eX@sXY3EDLy_z$}BOfNfui z!GZmCeIuW_*Wqj}zk#5NJw4+9GKT2WoimMSNXX`BmrvcX_CsbpL%k z8f3xZR{M#Q4k+(apitp`<$yGv2Zap_fQTY-%oO99jRC0HOY1d_4uCFT8C+O7b_Ga# zmi7}BydZ&jk*4 zP*iszhF;3On|N^UG?I^4w)dBreuxpDArO35zC0W8SIhu73pnF3 z;b&ZdNfMzr9CwM?c-QyuE8tH;9N!RAiT%x#N$G?23{xFcu6wFJ|Kc;IG1Ww5Qnr;q zZxZ?sh{9EJ4y(dgOf}&Gt#q+=+KzaMR|#a3Bge?HpB2Jw*@%`LdAa~i2;ZGl{P+wz zK{-QEKLJC*vgg;*2b&TYA%Y^yvm3YIl~%3@ghlQM*u_Bl$u7rDe?irOOhT8Kc_`Rm zf$I{33GgrpyoP;6>?ffyA#*9voJ_VHzF^eRi+|rk8#F)mU8WjVrzo{fK)*(4vqaJh zcn+eZa&#*|_u4tFKrGy+JI;cXIypZd*eUtopY-b`Nx!s4>!{>5`4%^UX+YVub&u-j z;1N8*Xvhy%-m8>?t0}?PQ$VF1TtaB}^8IJ8ovbtvGOnrsgvZouqwt6npva z>8p?OS5>0}AOo>qr|hf@+_#r=*RHhKY9l%%A!B1TAdO(-7e+#MOdjcoPZ{Wn*n<{*=G{hXOu7fjW_xSMJD6z!v-g zGS@#GaDT#txzR8fb|DND22Yq%3{5ei{qqPLxHm^q^z|}IJXz3s4>i}qNn`;H+#8dh zrzfjl16!p=OTfz#h2mDw3)TL^@}|))1Sm@A{OOjkM|}_04$ zaXcVC&SiG1u%dr}tSNTIS_Y5T;{#MfFH+a+tGKVN8kdEnjm z$se{#>w3EtTT>L)JSx_SK1!7JgIv}lZK7UAAph+pgx>GHz1*N^L1E$r(cTvL*wI^! zw9y|QxGSvQX=ZuVU1tpN|BGdCczv3M3TOM6W2u$Y&|xQjvk%cSCobxQK7u9!=KLH3 zA4-O_;Xy&x);}PcfCub>B;XOm9Dkj?qmYNW9p6jHUTL zGO~Xy9UK3es}_qtM_}%O8?pyg!^41pfcmBCQwJ`s;{Y476vrLV@gx&dQ+nKw_vnzp zf%PQ7Y58FLtJbVpxqzlr8^QZLbEZ_k`iz! zKCUNnlz8C4FGv7b6f%i4G64Z0J%kYOj}Ne&gne-VV2mfbFTM?jn2!ORG4gP)A!SBz zkx9yX@X=nUA0(75u;Sc=@4m;*zI6HWdLZ@0Sc8y+Z_sApGkaqBdccH(8bT%{>l}oa zhX2b8AdvIH=g~ikct@mn+mPmO1`tMe6jTxJ=u~+Ck@3VC?*ZDlJF>OJ*0{uQkbFE5 z(@&KX7c1hnj&3vz)icYCj#0VvR$*`RgW$+V9MqvvCI&_yz&wuayllDQCV42pYfF)8 zo`r(n&=LkBG;l%kqHB^>j^5Z2TraHR8&-8D)A7C z<+sc`0yrRefxKIM+8fv63+(L&xEn4%?K`5+JS zz?nyl_aW^f5Z_*mk~tNn(6Xf_`i0qT0Ajug+ACj4B@po;Ug9A3*Jua7HEjpj;DO^? z2Fz$Bqzh*VQxeC=RegPK$+>}Dbr8U&I4wH{43lLCA|a7t5z-LZtjOocwSf7%1sx?u ztYZdDnrOUf*BGGhem60kqu|cNeYh{hPLU^2xIJ>dUD97V9l42StRiiT7945W#o;rvM-o_|22I4=l98e{4e`&_<4;eP|L0Gk$NHaN`ultT z=lw=lVSW-_^#qG{=J@~nUxfGuHau~Ja2pr-pX2n#80(&wBHt4FT z1Pt?*%6;#uG-et5+&%V{gtsQ;1vIeL1n9Ud*k4^|AQ8NOA6@ z;r00v^>oYJe5+L(mDo4rD&O9Icfhyu=sP}@OeWhTiO79QlqVR|@a1`V^1kzOzvhN> zF39)z*-@UQ7aU*r#%R$%!f9|~+e{r_wa{`#e)B1Wk4(DnQAT8mdNR-PHPr4$v0F?RO|_?-qw4Z#);NP3_}zXPe}C3M9cGS7r_XlF=);> zkZF0(PhQ{u)dhAnvEME+t@2{V8aLkC@!veZ_VxPlB5>Wp?qVEX6zo~O4!4~w{qp=y4QG=o^PpleEO@B!Mo zCEfWg?E?-q3z=4i{D=c%>k#h9kR3AW2#4JJ>S})WOfJJnEy;)X#-ny}OKua|wd+e( zpliCh>5DucdD*cudD-&idIc5``T3eS?Cggq zlxNO&X-4_26S^-&6dhnntiTs;lF^ah8=1 z^PWGJ$LFICzpt*8(`PfPICVs1-kfjy4ZUkC-BPz=vAR6?m`PUT(ZznQ{rpj0cctEz z%kRq>P|cjVbEUiXs`1#!xYiN1F}YebH=SRa$Kxz}$-=2_mQ0KESbx&}vGl;~u5}Vl zs~InTI@X(!UpEoPot$j`Iap~drTyd?cPh$Y z^ovxs03OWujz7BZ77PSgDla?+Sf9yn#1`qI#o&!At&( zn~F`+a)O^5 z+8?nPa{q+61{GKNiSCi58inGn8|`bKt7jhj+T1Fb#T|J?)GJ<#Dtf%Xb1;9O8Hr1| zPIvC(aqf8hXG8j&4+ zX)z;$DS)^DLs0q{Hk8G{Y`;g`)G5eMjsdkx#$=eKPro=mBymJx>QKvr+g@I zbk)dh{?S=e$nj%|Hp01h{JTJk`9Qh*1_ugb?a)BVk07%tnxD%8uKILa{JJyyIs4|6LY0BWdcE$Di(r2Sr-%79O zYN;?VjExQ4jx}RrYo{IEzsjOrlLU?9_s###6~YSH%7OYiXk{@$+n}uj&hP{pQ$PuD z)2lA3C3qZg4IW01odK$Z0-+cu!DdE-o$|aIQ((g{1a#q0_Q`=YEHyq7Iup z&eI=A%Q(^hP&{B|F-7Nw(L*2gyQRENKV7_T^2O@=a?qLlh#RNevvuK#X~;`dfFb^Y z^yCNq8w2qP7KWp8ZHso)dUA3DsRIHBnIv{;?5vLurXI2v zS+Q!SO?pu5%=G?UQ*BrEUc^S*Z?s)=aqtfxWjf!f_r9WynA-dOkwpQtA#{dV+3Q0e zhr~9DH-Bl|q9*3(Ny7Pu_nQThBFZ0bHBap|H*Hd~zAL(pXItPvdf#rmfi~YJ8p>Vn z%IJy#rawPx_nN#NNVJ^4c15bh``ErsTjwaH35{~KP4ebj)?FwsOW(3%EmZzT}sXPJTey20VGWrWm%!9w5;(K*&f%A@!C~J9>3p*!L825Rfhx zg#udx;Eoy_gxE306$p|1)vc39&5!8H&nO&7Pi?;0?$o^G{H})!k<7LBQjK}nj*#GI zZH4 zvaml&2-~)Tvcvn&1$_bi6C3p_W9rM>554rTq4#86rLlAFtFHf>4vNG@*88yzf?mTt zs-{Wm*M$tW-K&0fvn`BqPec2>-CkL_wUv!Vo|V6BOA6jmDR-2Auk)a|H1~g6URkL9 zYyN$LOy{!1YSRrVNl{GiNctb0M~VgdAnYT6ekH(JF?$DEcl-~Nki{rP|2VK=-_>T^ zJ{xp?X+7rHNH)+lfxS!yaG-q;HY}rs>x7ALhR`%_fsdTRhJ(`%3L_u)2EpQt_{kCzUR$^U!U&IQU9~ZZuc< z+#5PQA*MXBDV0iIf&83ly67m0wf9(RR=s)jc*^2Ixaev{c}D*?&C;XOXZVHeLV0Cf zcTK%NAFF@0--q*iJG1JICR(0t7xuLH_*g&ezgSD5-1yBDo1V8r!u6QJt;hawsRkg|Ks>Y~BtfETJ) zrVrG=QrWJyu72f5n#Lc6U5OkY+zLN5DDu8o_@$T|V^LEUVs5&e-}KKUmtHrzOf{L= z=!T2pNc-2OEXQ@&JRJo}B}kCXW$3gvLdi^=n#oiJNR_GiFSWqwXkpQ+kKq%ZB=H%# zSIsP~Y7L5#F4~!tduYuU6&F939`*~u10uW$(!|1eKfZyXEjI{71$)hHv|xTCy0U=H zhQdyfDq~p#oJP_|B*bXwvA?c-kG52O2{9WASdxOZasMa%Pfo3vXc1roQPVr)Rsxlk zpg}TWu!^QAf4m$?H3!l(r;YR5kx@O=C<#oqFsaYdmK~#g!K1hKV^yPZAiG+Pu)zh9 zS6@=8M;7z9DhaT;+4=ckbfu}F_2zf%cVpYmy}T`aG}m51S8|*_Y17^D?UbSfU4u ztrKs_w~Bf1Y&y2r2~SS?tF7Ze2AA}x_HR+7SJZf$vA&T)Ys+EwSew`PtKC*{%8ZnJ zsb&d~99cmb8~RL#SmGWRbatoYkFB>f75Z}6td=`AAY5!#8!oQfXKt}3$$N3^$2U=O z9_*lr2pkr2Pp!0#G6i*xv=YlKL4&zRaOqJ1%Uu9a^5Kgk4-+ZMGjK#8qW`R300i!v zTMHVtj}S$>f#Q(1HRPPYeTepfG?T&gK__(IIq1ZHG2fC#>O?ft#IzLZ9AbQq&ND2z zsDN;};{1$3FGQ?2-C_PNnNf%d+EJV79o$hsev~GN-eQHG5SdqlqgWnqiwQYY#16$S zf(-p!<81Zw%YE=uiFpM$imsVfeR`OjaIzX!GJmB4q!YUEy{(3Fyz>Wpsy zvz<&bTe}5KOMD2zM2?YXEXZ!&5C&=TRp_y;XD7HpgShg!38uEu$053`j(iBd!f{~J z%|N)zglk?q$j(8)HNUPPI)!^h<}N3R15CR}UT zn+e?V3_AAJw%|sKm(wJRv_X+Z%g(nl*`CW9GlkFnyGw+9I@{QCDJBc$rtWl3_swWE zqFdSLC%7?`O@mWd$8QspuW?A;#bo)0yY=CfrALpRZ_C{%YnxMS`>SKV(@L&m7*0>E zQx8&JGjT?>l?=BA(JF8B$HuKj<+L6ByiD z1oG)*R++5qtPd=JX?h6Nd>BxBTdoxy%-2amN56f$J4Om_L-V()MXaKK&dkj0I8GVW zmweTe_P%%VE9HoZ)HypuGr%{44gh{rQTdvd2SME+LxzBem7z5Ok1p-cYI8fe7lP+I zR?5mQcV2c_j0Y%m!(ym$JrNxPcKbU-5R(NM`S%I;KLmmL0n`on)DMZ{0{o=vZ3V6@ zF|ON(0m$DLwgy2ay1CS|w`Spawwlw}7XSFVbr(gJJd-Eop9F?K2<}(fG`X;zjpf_@ z2I{!yUq3_zxHg{8(D`ONnOhRjoH!Wz$uMuCKTm z^wiqgUO;*CkE;gyE_TbquZNljRlJ5P+uIBIgcp}xT>~eFzR(rRTYWEn9&ugLa>e5_ zH5QdhS0;*X+?Jv{6B#Z>(Nz)7I($2#`zVr4#3RO_mKyo7I;~gVEO(M>R$ZAhZ*IEj zOZSmpr~JAzQ(xp%s;YmhOw2F$(JbA$!t~ZSVEfklQ~q4R>er(*zMbot4!Yx`X?tVC z2zzCCzow+@JI#QNi(`GC)DT?PPp>^wsWy9OWa&|+&xo|aEt=Yl<#xrCWb+4DfY!*k zMt*iaM&#>_XW_I&bRs+wG;+U#_O@H)<>N{V^iXACs{#>&Wu)tkZ|{siC4bjp`3<(| z=%a6-5aLR~;%^P2>HzPMau1q0VigC56C)@OQ=g>b*d*=O!IMAFZe}9}cm<1^^MHa0 znf7Doy5QwPj5J}E=YMtg+eb0sJTUkk1NjMB=)qN1(C|#d(Rd=H=ceN_8n)&?V{IJMHrWLS%ML*~;mb)94 zQvxxkm6d(ih~_)76GamPnZQcS6u3v`-7C&E{=hF-%X<<7A6DEpg@boACJh zK_`innLFp_T5|pRetU~o@4#?jpJcCltAxK?$#y@ zxpH?uZVRqapb({i()A%>bDf-tY`0HXeu(q;qI2W>fneE=V_O(%@8rRF>GZ z9rS!A2{eha)7;_-7NhUWOlYqhRtp?Ldo2A;^~8?fEy%)z`VxbG^mT?{_E{< zGR_5^=$!2|)YK|F9M6n%*8R=LPj{Ed`oo|eRlo|vqX76*7ee8$bSmsr*2JK<={#jA+nnv2ILY z42uVo7CYD?FuC>v=v6XRErW6Y@#UV1ifr-P^%olsL)yiJJ9J}TBwWFr$d9<;nuw8U{0Zo

4W9BDZfc6&Q+)uHyFmzcRVo5(U#78NL4}Mg?T;)^l zqi*Tq5i+sv)P=KeP3|re!G-i4^3tgbQ{+xQZpP3R5)jyycNA z!zuNup5AKIx3SaI$`E!CyEuGLaoJE;*9HCN?tghuq*?-GT~f2pTzfb65eNyimYC!U zf+r!j88Y96)S-!p_+h3-%tMceiz`-vlu5j1Vk7;LKM-CMI)x^E)l48A)5B}y0mc|- zh~2@Y47_yE$^ta132p_}!+1{x1Lz`jpi;@BhBnW40_ANjszAPADCyr=980J@U{54y zpufi2xFseEyRqil&FmjRHGtnC^KzhcIv++xx07+$m~^9gDuQyz> zLt&r0j`A5SyNLSQV8K;jx#Uf~#jh~o=!SIZA^@m?P`8INR zay}yhgKh(>T9;;HT!Ab;8*#Q%-SMYqo%fUkVI=M`W|69JE7@F77SwCg+H=4dyrKNRsddMK< zEl-e#Qn}*ypXm1o+$aLx_1a@}e4)}P%XY{qLgP!8YWzl0@BNJObEmPP>|#(+z1^xY zY|CV1l(k%_-JrBA>anKjOw&tRQ3m%916C+@g)ZgyDm2|%w^R7s4tjfr{Q>dJ2bar_ zh2)3s?YUNVmj|tQ|^is+FaZ&D*YASQZ zrt5#MNFLhpeJ&%`dS+nbW?fFpNT*8?KeW@wD(V;i+>{juSk1q(%*lCKceJ1+=2gxS zZzrn;yW`X+Z0~rg4(31F$ts(CPF0$3gFEL5+3#we3g?e)I+n9#(0K||gjD&S&pho& zn_o&9c^b@?`e0)IXssjjZo?EZp3)0MIwU#hok-TWc3A#l_nJF4LDQvuE~ zkrm?2D@^oeS-kn9{BE)HHt&lb=~};C<Kx&Jp##J=!zH32)}Rn)F)P=JnZ1 znctnAk(8~E24uTspSnMq?8%7qvg5T)<31M{CG0lA20PJcNu!FhSs~PES{EhUI-6Klbw}z^2PQpnKwnQKb z1BPweNettfq@Hl^d zBo}^PUc|%UiIkHg`r-z5mxBxg2+jclz*GD%GSf=r1>mNmG9|5uG0bK&gC8D7iHCKa zDuot!yy@bV6@e26n-DsNtN!nfm(F3x|FxclT%u=nK_g zDH<2TU`MKWeg=t7-0LV*Ki@VN!{_)ab_hP_<{djK5q$aJs)sj^MQ#K_s_0ioZO2)C z6!?){!r)I9KIK(n!_M(L^YmqzZG+&xSX(&feSnhZJ^2p-WgQI-F{~%qcyikq%b^=v z@J0rpG{Nr|E;rQxc4a`H_jvTEJ2A6EVXEgQwk&AB-9QXs3_*tFK+v%suYw%@=<>p3 z@M#`$ZxCaHcE1HcDGZB)(>x3Ud1EV`mS%Z@EoRhC;glb2e9cg{rH?8t2ZBGOJ=Y*< z0QDb9*l(_ob!$oA5ZY^)Fs9&OSDl9^nlG^guM8SwckTDvoP2ZDcdOevCMHD^xlXA9RECVFQv|~=Wgcjf6y~(bj{kF1ZS_5w zM+SN~I(>`pYc84dih2f=ir*-D{uxxXB+$d2oa{6-J{O-S>m0E zZTzog^@)9bSx3Sp^7%A#vyE+h#rB!}o+{hIT=hLxSlDsXc#lJ$=r_mw4e}SQ_Wx|J z7H|>!ntpVmv#PLs3-hD8x(bnc#;y-J4?mR3c6arJ|LCt97&!SSf_e4NZ%>{tYADKz zXWQ`iQ^yx79dQOYI9sCWmQlRPh>zY_4Oo)KY`2f(99-#N z9lUch-zp6gv_N%_v+&{1aKnOF8ED6aNel*{lw)ge!D(vN^YIuetPqSWh)-F=eU1d73W**6AZ>T&mS%By==EZ_sUoG?8d1}n4|cWvgW?@7VR`ISDcyRWKvamxf|$vF!(x)AHb}#)6NdC19JiP z;fw7Kot^^fMdM-U$ZWnpWQ6|!C&*=BA#KGW`cdTlVG)r)Y(ZU-u-9q{+tBPj`((=U z?%kINDtz8=YWCoE>;h*RMJjOc(@?D%58r5cTLa($GA4fTDZfKj(2M&BDgdtaz&`eOO7(=19{nEUZ zPx%2rAeDp*`w%S3p#iwwvC!ca2*~go+j~e6gb8QK*~zcHz1;}+*o(O{_r7m9=7f@& zWZ>b-f_MiDCNRE zF!+J`odB6$aEBLSLhJM?Jw|&W|JJq>!;(ta zeou|r9s79e;mx$1LlPu!}9F4Pl-F`86GP%2H>- zlyEZ>F)1;&0q8am>hUxIg81P(h=e)$vpZoW5$_i$XrSh1H5ygQFk2a>LtiGx2qp z*-x~F)fgCv2pk&=Fb~(vbl+gK;H1!H;o|!G@EjegOTMXw1=%Xyw_4ryE$;&Id}YP*nw+YH7A5kFyM)X%X5Kne|k==xiH9d|D( z-SsbJ6_arC64qSnC>)A3vvm0Q*jZRkqgjz{JG}=%-`d8;6t=JsSbe~bB2FNrEm6vC zs^;?f^Eo0NE!OFR;H~D}eKt-`I%Y4LZ7DABbtHQchW3O}KpD-OJo_|e)%^5u&`x@m zPC@~+o~$|ScZLS6U=K*yHnXzUfL|{(xb7!N)}lCQ>hME)e)r%VoUwY$mDVGwFG5gv zEx4+Ekeq>I?gAV2AOJ$t@Z%*m*RL8grjHg()hn*wTs$r@-KavGeCi}IP2sroJ^g}M zc$`QGF+Ma%3qcXGYOIX;4%f-m8srD_#><%R=`VHk(6AjnQZcIy?)+_Wc4SLdIX}{t zoK|q{z8c8_Nh>DEJ-MC@D5@zzLm__a?sG*VLAUME1&GC_r+D;z(0KRJOeFz#1eb6D zcaFGPC$~*Kb_z#lfg21Q1WZ&x!Qb7?;Usws=XN$G6@hfCj|gV8r}y?g7q(?h;J5A{ zmOq&;*-x0i!Klji-)ZTMX>jO3va)*Q%;5MHgS4-A^TQjb8%los35^PFE#P$8Hyb!6 zewg9SBae0cU3mgum-F?%g`_6t>bhHXq%!iIak=V8`LevYd`Y5*TjP{=!k1Sk&l+nN z=k0I$Ga2{#u4L$ZKTb*3f>vp_QIT`642DKE^h}-^?{61M%!&Py@sm1my2YF2q(!8V zVzx-qx%d-?II;Iqy)&G7C+N}9;$GCsvM_kl@w&!+MXC(m29@K6Zzk8YmiP{Lg?1`R@~q#|&pBHz9N!t!rhWFlbVvT-eT~2FF=&dLQL<)i6wiiS z5LgwM{j58x@ZFJYM?urN^I3*fC%%WC@iR6&uzmMrUT<#yVztr&muI#acYD&8n=Ma& zR~$~U#kRn%v-zeC%)m1_KUwA6pEeIy157sRnbf#_XVt^ zf`BZkfSyG`x?6@5gbB)9@XL#8Ykjcld4l`)OM(Us*i3j~ZZy9E=Rr-9Bou}?K&x;- z5od66jA7+x?AeXh<@fxV4n?82a5OeUDc51$P1}0tiTlUyle=6_2%S>!cm~U&@nR}= zuI&BU)Ltk!TNk$A8lgPxiIOWcFINuS9UCS=M}6~DD^OdWkZ12U(9*7XD#-)8A#5gT zIN5A&dl4$>Aa=rY%c;9ja8LLV7v-pMHwwcnJ$`2ccr7wZfrD_bUZ%qr_+EdJWJLd2 zAw!F#CJ<>MXW`kob7w`|!2~FEdNQyZkdperYOD2kz=h`X#ZNLspH%tt`Tb;g3Bwc$ z;*#jsWjg3oM8R!#7NDk3ZM<}Q_X`VeVtb8lfvKq}%MlYYEO*t6Br|*jIWb7$HJgkw zMlpWE;q3AFaZk&S+p{c()`dxqRK4_>{}GY7 zbL6Yp=B+!9e@v(TASXvTmn^4yV|w{W-EXDL(T9FvRAG{XwH4EkM6seGvnRfX?4=W= zr(dnLai>VVkd@ij=HKFUE5r{cKa+3QYZ1@2tGhinbh>l2g7%Szm*KU^ z9d-2KDE(X+k%MYqbnHiT)$Mx8OYKQSz!^r*Hk)!_PJ@5D%-m;`1oDTVwumiC1X za~nTt2fAI+-L-37p@Yk3=Hju`KA&k}{^_YwoS31-{rKsz z%7~~ZHyLLQyEjMP?%Z3Ga#>L}=tc)$)2wUNyP+~{Yt!jbSWt|xr*2iyTz{5JIB#w! z0ZFMZgaDB(+IC*RdC~yKfbF|kwO-L@ro+w$X{X6>^S-5-!sYSta*ySWJh6}mK+yge zDh$}QuO%57HWVi7ZG@#9Y`6l!auT}s!Ch8u{*B5P{lGu?pgasD1iKyS01kBR^3sWwk<1fbSN=RYM{le|X}1B(a|_*1TtENWq&$6jT*k=gCl}C@%sxeooa_#8Dsk z);KXHz5DMrq6bJ0XNZc6R~$+q95ZT)-wMZWGCS>F?6(TL(R@R@WMeYT`NQ7nZ>XqW zo(_4Ba_0=BlVpetJQg^3{5*g?*ChmTr_>{x-63+?DZ7@cH{|S{r)fRH;jQ_;kEk*j ztiK;Td{(n;pv&Fvu9I1SV_9eJ3tRo30;krWeU0Wk%E+l?YFKi;^p(Qd}c|IUn_gkLx z#gWFi7gnw)ediH zQE+VBbI&h|N&FZ;rc59a}?OJR;)A5N|9j~$;zAIirwN|A`I^(N< z)$lNsxA0Sx*<&~A9M}N^ZtB9?(4x94eX*iU_A?87Z`nG6`WF9eZ?$iaS-(7=P(xqePJ2|;pbT36twupP}`#93qcD7{f|?(1vn?N z&Iw)O^3$6d6miq*`vMdsZ7~lgUAe*8bHk>ztYT9IkvY^fG>~#~XLQ1L=p_8IpK@m= z&WFRyH<8~=-AMcP{Kv?}4q7)Hv655fTD;uClFUG2iOC1q@`w^Ih9`|!y;%QA#3<;l zMB;){ut8d@<|vWV_f?YHPA=V9vkUbj3Q#i0k2I2S`n_*&XN8K}Zrv{!t?Dl=e3(2e zd733W{Nt6_{j&*NQt=}D+U!%$|C;7dwR1QbnrS5R+b+~=QL^c7ulme0&0)5gCVAVr z(`UUhC8NtU*tst?>)-xX$*&>N@Z2iZyzTCsq_O$Umxq4;e5lC1nXq=6-sZ{qRiY74`$una+!V+!uE$x3Zm zt^^4dA4$)XoH&v*y$tNPR7%AKOrI*5mv{+hTT?VRkQB&6AuVb-n$r#XS{2`ufVCA-)W%2GEth*Kv{WZ;7l56!JnM zuZtGN0-PI8NrtPxI>!Nn;cB=z6P4b9?KH6bBJ(69VQmcP@ljM%r;8-N?`g}stvj$h z_%6kmUU1{&e9C$AhZX#_G;=IGP^q=gs2V_in4$a$c}vgK;0t#DlRj{vKLGxz>I(~iU?qvQGS?#F|^nsj!VV*YATCmaWzLND)4d#)? z=9RZQ!WaA!0Xwbar(@?*02?BFHXl%InLm8uFX+|{=DA=wb665qv1KEAQcHT)C-#{=< zP#9<`>rq^8$()&(AXB;);GIUmS|F+DZj-VYsxP{M-LgOX)3107b@?0!Z)dm|w3*%} zm=wxbR}8GIv_%9f=36WP%@0izZ-_W$1C9$-s;7(=syKtKKqe&76fTLIF+M|)NkLD9 z=j&h<@Fauz*<&3uc(pIPnfNC*4Y#){8{EWVL7)*S&A2R@BP5}1_v;V~D{D69P6FjQ zonmZZVG;c(AN_SZ{*-Jqwf-$*j+${;su zEgI^QNYz*9bQRrS-yHh^FdkY$E0b|RbG6z}oT}GPxVPFofGg<0S&w3!FIKk8rDt&PRHBjcn)t(n zA&;Py5j@jkIIuwIR|Np6#~_Z}1JQg8)8@Ha@1lfw-7!Oa8_0i@TQl}=;2Zbg>#a{? zWZr|v?-rjmHv z!rU$=*sdYer`4p7V?L=6yg{IJxTe9rZCe?NFdSh?`>xI=?^S=d8-5-X{z-Efj6~o@ ze`zi+D>H*%GjMnrh$D$VkFge384g2uXNN;u{q?B@h0F&6HV;eUU{rbEfCciiFU_Jyj*up&?t$&3!HLhH2S^S8UD4BI*h22b zEqMa<{UY;i~lmzXEX0DjmeY_1?URu5|3)_$L&M z#3bftM}BL@Z8S3>4RQx8gZ)s3bho~Jc`+U)B@{6F?YibO0GP5O&0IyM!;?Uk5qAnf z1m4}OuqRo;AJy^)te;y|AO(Ct78=|&xr2@E6UYMB;kX5a`E}U@%FQo*b(p<3# zwAzK6)XK;${(2Sqt;cbTPDaG(M}neQ=qbMpK?JeKV7`n!51@_ifq)WG>JSB!Ib~He z-9Iv%snGFt3r6J#w5l6#$SWom3O)K0fh&^4LJoE?RaK7=PY(bzgF8*CSldBn!E39D zm5a`SF&qWTu$TdFs={{{6^4%;o&T8zJm)F;F+9Pw-Kf92A(w!!#v@V?6zApPXUIHh zeS0S^y+P2lJq* zqI$^0uZ9M{m1{Pfdv)&l!P@f^jVel5t{d=iF*a*A;G+*1Vhe#X7HlbT2AZDM2gaW9 zVbVqKOyC`iM?O=bY?r(wbphx-caE5u)E=FzUgh4l*$ypjXiT4> z(}ob_Ct-IN$O&O0-c*3@(3zf7zpLURQpFzdMgp`W6Q@AK>~>>!)B#{l zyoA!eo-VMTCA|y4GjUk>msxLwGSRFh`y6i(0{8>@=y#lKXum=CEsq8YX?_b7{NcpW zM8!Y3s4nn>R7yQ32e7XuV8uDstZ`=?`5%E_0bS7DgPReC$Fe5n|K0&3^L?ldyAX3> zWJ_8fFf%v-NFPSX4o^MmNaH2$EGx;V(2^5%S~`l`L_!4)B4TDOYo2LqYnzH`Xrv>7 zf6RuB48|eAr^XxJvr%}p*dv@)*ciAilUTxLNWsxHKOBqSF z3(@*j09{%+2hn8JLrm^LF76V?2eevt!>jA!0)l^N`XDWV9-V+Z7N9D z&stj_0T3OBJPZ^Dcl;Jt?jn44lpvY@15!MUfvBP7=E2s(O;ky_c0xmR@ZAoayTF5B zQ*n<@^3Od`UWv%Pbq;7Uh9IoJ^tA5ZfWgV628F-2_4hTcF8!xSZUGCTRpgPt`2feP zE0XwY2X~Cm%*4To^5E^ZV8G<8PEN~I+j6n-kyJ)w1%dvE4$kLD zIqCS>=zZM+itVNRSQG-&ymcB|cOyu_+Oi%MEFNAh2(p1q-;Zv#_#`C%C+p~CR%iE* zyJ{W&G`-o#aca(cYM|bZmt3pIsJ?Ae{L>m-+OA^Ypo@7&$>LV~nyJDUnlmb?G! zX5#o=hx$oYHnr{EidEPa^2cGznJTvW?{572hs}dm+s&$nC|nLeQ-Yc} z{@1U6+$9ZY^Z)i9JD3*SzheHMb0_UunPx&B`yXF)htP=lAJXbgv-=zm!nd- zZgw&!LpY?yKVq9_LwRv{-d4l7fz<~MlV5P!Yer(RsASO;IsF_|MAjlnuJPGXrPegXoK=E7tMCD%M2uKEND;Vv_IBXKU&nk2$azE^xcqMMJ&wDHHwK2;>2f9Rq_&tjCM1-w%xhOHi*#@U* zd^W@s7rBe=x468m_z6Z||NI%*#37M!5S2MYJM7(X0OEcjBS$FHw>-&dB!sh#+)$&6 z-@t#!EJygvkIQm7kIEy+;!L4I>#83+`ZBBczt3Dx5N+DlDo_Pru#}3Kk?5(MK!u$J z-1&mr?!j}B+CVysd=J?b@H=9FM?K*4Lr6992K8 zRW103PlklcU5I$BKR^2gn=nPc#kUwPgL+_8!864T2G=H&eZ&BU+!Au6BAyT+0|^eC zC9l?=lVx*9pkrWSGMXm=t{)BMn)mJ_oh2qIPj|_0Bo}jk<(gD}*YacVe<6)oF!b5R zrSRF&9$#zH8B?o!?HXn->@JegTI#!sqmv2Q1~SO+?N*(=nVpVRLr?x)hg{Uq>Fp~X z1*=~NjyEL9Az>FkqtR5##(|(+GqkB^MQC#CQ+LO-RJpOZhjlv7E}r0Bd)xim`?uGJ zwx}M{wfi{bTMP{WxzgB^zML>tcSR?`57BJ`Sv5&#&xRi<#;Jnl)tV@W-%Rl1o=FH$dyr z3vIP1I^ZGr2qTKn?T46hOTv!Xv``X&V@GhlllLAnj(}{>IOlXAK+PE$vLn$sP%adq z(8j#=JtuDR{C!lJf>5yhK=oGtU@tY*2GO&cz-%_C@oigrGpR2ma518M@ZtkYalTy* zPc>u(xENAK9E8}eYU**<7z;K87Xi;tLM_a?{h!O|Pw$cgO*#to7L)L)*AKvrW8CUp z#Ij6)?)wO-DVgGpRAk`0BqC z16uxcIjJDJ^C%0bAb}LV&Ex6-v2Q(sQK|B0`=f*cz%KlLZBj)EO1(u+POf=y5HaC1 z&@DYd`W3DR3^>=3kkf!MP$<(wtU920H9|KdW%2PcIyGPmH&CRIQVJmQRVacp_KYpr+}`K2rrZfYr#*V&U^yr2**6Tu*j@VWpJaZ4XKfR$&(?}nZcLS9 z9j|ag)&ZwQX=Qim61gTg!YAIX79~_N&1b2GZ>ZW5(a*3(b6p*3GMq1^(=k559x|=E zZv6$VPwirI;U`a?nzC0a_Xq2L^~;kN^u|rLa-kWw-?^SYx3Xq4UC)B0*nvmaKK7Q0 zDRpp{#M~;LJ6P>ZC!BCq{+?ZNoyEbl!+Eks87}7zn*kE-ZnnX=4mQn~OV>Y|8OeB` z$=O{fq)=MbG<@V<)CRw@w}xrjD<3x0+t#!mlC^Xb{#5MF$s;&7>a?lns-V2^y{!eR zmlUNYuML$-raGM6s8v+4^{pqfX2uxWQ^k9W7kHZN#Xb9?Yga^WpLN`Rqps-KJik=k z;)3EGsqNn{S1_bAnw{|-Ez^6%>w{Z&2&Lf6;@qfsR5il0u3~Sn$G}_ETE&pRy~Ca| zix!hz-bsi+X23w8I1R*PI^6pAXuh`p^MDF6%y=wUECHW_rA2wkcPy@3p5v=Ke!GUe zOz21Ggp%TQ>@oDG-F;NiZ-cNO{@8WA7Ze5KJenlIiRq}%sVc@ggij$3>qS*XIdq1U@7 zq!$cGuDPbdJ88OmOVVxeos^QI0=9iHe~=H0hl^$X`un}o7;aExD285RE7jsm4-QtFwHeGn~F*mpn|i&Fy4*1;5oEn6<5 z8)G0aNg?UGH!YNL*Pv1YPL% zG=OXZsw2Q19vY-lRh#TARm2+;AQY9gEyAqPNz&sXMz$cy`gj;( zrx|1ik^u z3Xsg*#ffT+*{P)0|N8a$;XR5U%9dI#ydpD|F*%_YNDfA3W0>C!Fk};e{m3@1l2ofB zX<5$;J%2IEhVtuMBwq%s-LS@8q(t0yKkISx8+N;TmFW*KQMZeP#@(T<933-=t(gu^ zH_kXvXXPbRsasp?iNbw&F!|y4+`A6@b}N)>mhp8-#jw@HC#34H zl;|;`3E^1GH|ic*5YNrxAFf!~|E2qh(oTQxi%}NGimzC|a_Jn6klAG^%#^q2-@hi~ zrsg49Z#-3Rv$DvX-%BvkdCm5*0b<;T4)JJPV{>x^sxEP)S}$L|ya~t*azTyYU$D&9 z6CD>rf^9G8@#QIeSJ09K6d4+#UPOnf*ldmCvW(DuxVJSZ)UaPbFrE&f8T^(-0AK4_ z-=kb3T?y1jY$q>P-_!Kr*4Tx#3W7^0(BCu+g!Jbb{*x5rb#k2q@vP7pLxH$A8pR z1`(hNJ}<$wQ7^*)z`S;CA%GVojXGtA*rPY56Y{NH;uj*4nA6@ko78`HYJjYPB9JEK z{t|M4KcD1~wql2boeToOMa1tR*~5VOSK+tA%KRGsk#xSkWeN%kKc=U(e_XP)J!tQZ zAE0`GG&&@8K5l708%Kee8Y#t^IM;O3&DP+Z2%>=#j^u|z{Hp;NE5vgg(8C?1Jw}rr z2gMi*Gcz%~A_=t%{a+u1vFCvKSjq{2aRhoghSCLN@IIh2cI~;doB7SNqe*_l={e~4 zr6$S9Uh>jr9P(ttPKEu3<#`T-Pk5yI@Dupxp%@R0RHeOm$Wc#`(U?f6CEOQ+-GiQt z;_i_O7vov9p)nx32MLK_{4@bGL=5t+-0!w+!kJ6F8&E$8NJ-tp61jxK0vP`aUD`y? z*}kye5BG0lW4;7&KdJ^4!G`z(1aXR1a1F*DcTR#&^DfXb(jrh}3!xLye_Mznf}WAl z?Axbg(i5O5rwljMcOOwC^Hn7<%+z0%2c;B*Nd9Vc(kd^@vSS47-@6Pn|jHn6PdOAZU?3CjdLDzZu<+P z3f4F#DRH+b(;pun3`A!sl!v5rwO`8}J>2<^s8jB@n$!1Veq7RWGqJf8&?aR!*HKq| zd?Lw9*|Ft{1>+gX)I=Z7hokQ6#`D<@*rbZYKLr1jB+D|20Sgbc(XJMx|y|l4;_NhERFFp52_0-8$!HBl8YL(68JRbJNk>x#zb@$t@(L@tH;hGb{oNrC+&{45S9YwUGbosm^0Y z;7G=J_>Upw4(E1i4*DASX%7NyL+?&Y1$>f>CB&1&FaO0F3T@KDU!vd*95wamWXUSRv_G6i87j@7)n-vZx(vO@B>y4l;t!k`ksQ+uJwK#^ zU{5Nfk7v>hO%GGlfCS+P1hA=Cl#O#0MdC4J5pTw$^%mR)l!c@MLOVf_3Y0!r;|F!3 z0ez8J>Wtc9GF}NCE^{u_RB`=1?EpqeO!i?NcX!W=_^36gk*yM*5#Jq_H~E$D_0S2$ zbu9(t(pGMtfWV!UN*_XnEAb1Vq8PxRpeDD)s4Q^Q{$XJ!pO&$$Uw?q$dSI0E^Ye*b z1l+WEMFt?WW6yQh6-pl^KSEx;xb_H0p*S%?aeTseElUH5FTm{_{%&>)1BgRv*IWC7?b z@*8W=kderDJ9~R$Y-_obji*U+U~V=C@$y!=xD4?8@+8Oq#U$(Bymop%t&It?|0RFi*M>@U%6XKY(7c-W|fS@ zn2naKkTnpx3wkfb+&KsYgxhF{HcxG zhOKgCkG3aQ(Qlt5D~(I__SiP0)+~$>i3+I zP~~5^*(r*9X*&l7%5X>vB2fzm4mjDzv*9nizhalKL8BdjlgZFkLL5sacc%NcZ~v0l z7B;#irS*f~zgOXaufo1yJ*V}uWe=VpEbV?g3F&7TvT||=aYXE?y398RgM?2@$GY}& zY_UuG@@o$8-BEo5OoW7Bp5=KI21nZDO>V$Dmsz}?XBmMV0Zfh_;wW(TO5u%3KR)QU zJDu3x3Z1?ur=ij(%5y6x|JPyHC+6+55 z)^g^VYw|KOB=drB*&C&;!n;$E^IL~%9*w;!N+mLxZTM~Q1oo}vi843;rfuF*Xou9? z+TGQ~<)0M8z4>z^@>Bq;OW+k?ejRA=#umG4#ngqole0L$lXNS76rd*~RnO(N;3Blt z>1}MYuK>#+AYBdBb#UH5Z(kp2Y%aU=JSmb;Y=-xaO5oqT9=({`F@A?aMxg)#c`eZh69a{1z%YPYq&E(*{h!jn(D{g$n z^(PspU*FmO@_6BuQ!ALmLSCN!xGc<@DF;j3&s1YRc9-z^W|3_hv`V7no2;bMXTtd+ z=2T71F9{q8m=(0)u{oB;PduD(kguIcJ6bXE&r!sgM@Fq@v)_W?I@F{o4TBNMakZ0Co+ya z736ck2KAmd3`Nz(%c%b0#)y46^E@fON5DNHKE5g4946#Vv>O*Qof(>VZ9s&eSLOS09VwDE(5P zX5W26KR$V}e#k7`bk6Fcr3UTE!)CpyK6Qo~+fN>Pbf;h-&$IQ;TQ=uC4*dvSM!hx|Lu!Z!Dc-ZnPjfr;7f8xIp=48V9&Q>banVM1_4MoqsYi+#^o>+P+LunLUFQ#DXos5iRqpsI z^tGtpC5x_Sy=e{16RFZ69E{cTKFhS3gnXTIus%$BzC?7luSAZJ-Nl;z0xHxA6y1EAEFY`TJb>GR{wp>@q{lthyUO{Sc%~qvW(#8@I z#BU&JR#gbVieQ}}*9FdRUW(P9SGjal^x4cIvyciEv=KzXNVr^p4Fws~0Q7Sck^0U%#H@V%6Bxy_pE5sVb>wL_{hCl49MyC0EJ#Gq@iMEP&01 z#0-E}1-i2z)S}?g#Fh9eB(VCqewM_ULyb~pb2fwBoJND%oxid->VB-b6Fov3&@NTy zeTFyb@r|zCO4rynT$3ENb%?L8v|Pt=p}Dj~+`7W>73-zMfYN&unT?~vJp5J1NLXIv<#1zfm=hshQSCeM>tJ{<1gX9*l)h zgF)L{%xm6-Ov=On7w9WA?ay%u*}vKI&R+1(*0N2TA59)$Dnvmsp&ctT6caNkzpJ7X zQ1VKKZQVK}4gSZNE6VK9_*_p&H-!odk#Lhlq6YB>k>I1cB=%Lvji_6vzgG0}9!L6k z*=~%4lj5eJ<{V~DP$ZyBy@n`4P+ZNb!uO)wEss-HhDyN%M=8#{8|WFKL7LxVtbRCQ zTL4XNPerTr%bzZ#06G0>4it$l6_1aPAB+D5s z>NTrRD^(h2s*SnJ4J^J1IA0T6TK75F$>}idW;usj=vyTLvg6Z~;b8m?6-z@x388Z+ z)RKI^c=*RtD46-^`Y?)&%eZ`dU;n$QVt0}mbx(268u9Bpa|bW}wB z3CF?%AYZ=Bj)C1JdsVU7=%5tnJd2v7qc^yyaS2zA#eCqJw$=iggp8m9QkD?VAb#}( z^j6EKa>TR`&CkAQkoWs#6x7nX-jW1efr!dNQl3rztXZ~tJhaesTdM7^|78!$LmuKl z&xP~~sytLfah+cKiNO!Y-JT~@qIXFPatuxsJLg9i>}p(pe_=PgN91)cVL6#H4WUCWW2VTLXl{2$yoMd;+} zxowUeJC-&qvJmy8x-V$V-E~t9?OCtV2wCgana2eJVYF@%`9Z5+1~jQMJXWjm4k>a@ z6XS@k>}g-h47(Z<$g`L|L+M@2oc}pn=zrhR$?md2_S=TUC)9h7e4Hs0o6^^$h;`gz zPq$XFt(kK%;InknpoJ133bhmg2ry8f9I#QWNtPB^08&dfTbW_Eo?4|=EE2q9Av$)7 zJe>=vc^%5dQ=u?~!l6`%?@BHwY41RcP!S(AumORV{woGt^HC|<$*q2Q#c{i304GAA z&23;{fcIHhXkV*%Gb)M`$P2~_%Na>1kup$|c?qWiCbKdy}}=Ocxzx9IaFn?RpZSH#jm4ih+vY9*15styyD=Yr%0##$I=zp$!#g_OoQY z$Mm=F+%ZKDcPK+VLQ^o{(d5Jg^+?R)#0>3=ZrN3LKbOU=!>8yYq!*0Jmrd_#oGK1< zMjKU;L2+oj^lG@k{@bZ%0_MEjQMHuvyOAOcFE7q|4}M7>e0E%)|1n=^RF~PlgmnI` z`b}R9qtadM_l%F({F-h`%i-Am-C6XoE>A&U(M^NJ3YQqO-2&7*<#QTx!+DC1d~`S~ zlOvMYZm=hp#$k{vvP(L>dDveoQpy(?TRkRe5qALw^IG+ZE>6Fm`KC-KDpD$B#CDJHjar;e{(Hnkfg=Pc43=EOZ+-@E2Y( zntz}dQiS8!3`H))LH{5Tgwk*yttYC)5Qu1D*)!QG5cA2SDEUlyRCPat_u1!Tt)sWP zAxWUJ#c4J7ZNRHIZnaF-V+m?%YL+TttK&Fp3y*r4LwLp!KtvKa!I%M+6H^dQP3sB4 z$Hj6togfXB%(eN?O;uQr)B)^~%SiGLWyd(m{HBp-cc7dmj@YJJ@6FxQV`IxY0V$}b zEkNX_dGKJlXNi~c|4;pRHThSp*Dp(oXQ;N)EKP{u*sU_SI+RNGu7Lc9feM?p_IP_U zA^W~PxHcDrJ05(G_G@9DVBMm8y@D)(8;2LW(T9X^8KzDhW0+eMR&Gs-*175k^jgKj z&}4jCCgGe;{?g#oXmmlT1Ebc9ppIp9)ZtaODC<7(m~X%d@i;B?+Q@G2Vq0OUu{lq^ z;^N)jx~jg;f&<}(Z9}!EY6j|}_#cgGd-1xS*XLd%G}^0L*&T3AWqnv zgF~jE-2N{#8sj2XY z-@>#xqKihF!ac(|vTjls$_FuAQg{p#L@J09577j`d@4pd-13QV2?Yn?gQ(CkVJ?X; zgta~>cugC-_=Cxc0&Gl@iLenvh_&0Q5@#dv_uxyc7+JGYbM??dE{b6?t!(+oDdtFV zJG1`H0S_zFRu%?(SnKRCl1SGV(O?#rS+!yF;a^IvGiU0g;x?BCdLN*CIPAlBD0jw! zVTod$b+aw)t#L3#psccFPf~8^TuWoI*$MWulobXiHL|{`+P`n+ex*6_a&@XyB&U`k zuZg{+*z-`0tJXtoPKgr*^xa-V+g!bMOs?8H>})Nr@~O+sm)Q1MMxSfVd~3xWHg!4X zjcbJaZ>IBIulvwQwwCpZV&1o0C1c`u5k_{Q1;?9yW;Mfzr^qJqTuuw zY%mmQwnH9`t0y2-BT7)p2X;DIS_!Nga`tzvo*~_t7teEtOG7S-yyiH!11_zMz(zj27$mFVknbP`DD~y1c z3S7%+lWW9j7aNS*osO}FVC%?=#68w@@(RUC(j41*{9mb1@KLxGi7c%!xHp|KpRlXI zBFI=BG_%*C;_De2(!lmQ_VXt%;1{B(fDD;;Bexv#f{5e~Pa`yFMb*`7V6P$11GJ7f zq?y2|&r>Tm&Zzpc7vaN$+9Wf@ki)SF8Ksagql{Jzkly^x6fWZiI~8HayYzO8@j${sZ2>XV!9M zTd3Mvt`&Xu9D4OdYi=$vbO?u5AAJ8V)a2abq;)Rd8#NzRY-Nq)de@s5x^z<0OmaxO ztj_ZQ@2tS}?!`l5%>vgtrw*-*2~}OoYAUFskeYlUyY{AI;`r0K?dcu`vE$Nd@ged` zBBAT@cNH*|+3SnN_FPTgB_G|BsX3GV&QI%N?}S$Lw&=;LoYorh=Oo^n=fqbi3$n)5 zUL9Ky3Xfh|o%BUCXx?s@^|WUUH-pfy;h?Ax?Wsl9ntt97Hc?e(jnQdBqrc+n+Jj}k zhcZY(jOD3>T~5Rs03)*3g>Vfo1@SU$s!FFjv2tdr+*s*#F^vWvI)Wr|2vJM`m<{>{z#k zOgIIsvPQT6*4X&?HZ=O+Dq@JZ5{SF$%)1vL&dJLE_0w_{>-Ie;paqXTS$loedi9eL z;TU!p4B0%NOO4 z_^x}2e8Ap50pKbz6VR)VBqoAhg2Z$K#^IneCnFStHCLXltU3AQpS`B>e|2fRdX4Vp z7+}#IWs{#OED9Ye%GQ4T9}-B1Tmv6`eZU(yb`sEccz|rcQ6sb08#_5If5a}LTw##sEDSYhF@B^}epj0j;k8oHgZlfjY>FnI|&p&Jb${2_x6sHK~(W~1w z5LsbHT_nWd*a{D$(L=w}57O2cbyYIs6woe4OwN6X^gd9VMiLQEpaBMU(2olD^%of*-p#?p_Bmm7H;b0hd=Uf@MY`2=r zh#(#RE=MD8QKoS>zL@q?Ep;(hYGrk{d)BbJrCnr_bJE=6)-Fnv?4OwYHKIijV_s#50Hv#)c>wtopJ`Wzz| z^Zr(aRfJlW10&Dq3Fm$n1MTx{nr^-6IU!d}x!d&GO75^}$OeC@++!jnvvG~Wuubpq z(;5%TjzK}AknUbX!z1pyZrc!Ru(qaDlAh%qrKZGAut`%%l)5(TV8<=1L!3D= zpP^8)Lkt_Hc<+VU_NW!+t$9(DmBwxDHhb-Qw%=vDp4y7JnVFB^m!+(+Z@Ut`3ZaU3 zUD$xCfc62zBjiNKAx@%F>}SVKfpU|?3q(65z#!lxA23JKpU5~#z=);bO$jpwh=BNQ z0d6!vybG>4$}kFYe}YwGEayACLzdHU=;%e2Hys|sW}}j@bWxeFP^OO3XeKbV#38!k+BSg5t+>EG1Y8Nmfj!r z8QFCS4+NAAg$MtBafsTYNr)AM1!*=NO5o_NIg4ULvo5|s>r1c_Vwi^p@-cXA4!;2} zS$X+%i@I$P)RZFw19CYk{3<@s_QaEfRZiS1{5hUbuE=1FFIJ`zJ`K^^rKE@v1P1O$ zOLRQ(>)Hhgh7KC=F)8G+!f{lm;0DpeRYE>O{SghX|K_)UG?(T3zqOiMzM`4tMJNu* z3Q*Ufpf%%_br!x1L>Ghm9^q3AwiIA*!aJXAs+Zs%g%F?C{NsOyS|CnNutb_dhdKg`Rb+Br|++-$vwJtc4E*% zD&?(@d)knrW|rkr5=c(U&^^!F~FZ+(o!JxNSJMj=oJrhS=4vLApX-W}X6fX;}7 z2K-Fa_xXTesiE=<@_Bc*Z5wo&`mRTmONi)z9P#+)n^J&WxIh9I!5xC7#>XxwGPO=g zMElzv6&2nCOhY~i|J9D`nL@+!*D%?B^3v(=hWE5jsNEGASbq54FF95lHtJ=gF5O+v zd(G5EXd|{y9pA1bLaS9U?3<~vA?DSQy?W^#tS0@_JURD$y-)$6WB@}Y((Jk(!k!v< z%!`3FA%*i1m{Z^eD9G;uCnwfgs3wBD1lGq%5eUypdIGKI&UOFlvBz)i=)I8WecT*6 zorrAZv14|@AK!8xQ7J2W;wGXOw$f{PlQ0Jc-s<5xAqQ+FYPuxUW;84GB!`KH1K-sXu!{7hK=)O^P%bkaWIgGzVgx^H!8)_|AsAQqvd|*9G znBw=5o}Qi&AjYu8XPQF-KTb6}H}~5T0pTlp6*a8Qbh*Tvjd&1Tp`=NMe-5z!e5Pg}|JO*~Gr=_QZP3ou=SbqRFXF z{F!t2x36C3+O2rkB*i2a>St5Om46V-@wMqndt*0%^DqX7d+22jwk$MAzXeAKm4pBg z9JmHz++7f}+wf-dpWjun@n1c@f+`f9I{KSYl7nuf!boKGU~9szV0R#?d&@LRUSXu4 z(@1Ltu9IH2gCLoI2i1tZ4**iUf;8_7+S4LWfnW06vQDT{KfKP5rHRzRlmp%cXx?v? zFW_4TzC=5B6&XEjmkERqjV;ZP&(*7h^+B1R0GBW+ZOM)X_?`57@W>s6rU>;aKRV0G z*KdEelR0t+w?#_oZn{?HQPT+`m-9}k=1!*dY;0kI3krfiO))W#cYzoSvb@!4m9tUc zzsF8bQo`V~Ir!QOr!r8_4Y(>qHT7HEvjno8L&-x1UJDZbfKitw>iTY@q*>)%$LG_x z*QF|?DB>u8Hco)Zoqs03!EccX={Xul#yzO#&={jLqJmN>diy$tj|JY|t3c(^hfv1-N1WWYM%&X2`x>e_C>0sfo1;zSeTodD3jSU} z6^Sy4mzt6LeRuwep}WS&*~|A;>HeU+CQ3Q{KH9+8u`=)s8(!@*OP8$+Qy7x?_w!4H zIUY+Px>y(@Gh#4`cz6H+S8iTjh!q=%%wFlgPls*l=?D@=&;T_#S=88*4uDJ$i>l5L zjfK6EIN)IW!iGT}I+T?%!^c$H~^`bwm|}mQz!cy^@NWmf_&o6{#SBLxzbF z748XC>_4Jc=fBjO*i!uU#St3Sch^*FT;zs~{O>VrR*ELJ6PWhuU^qd$jLp;`l~Udb zmmvh@nDMNiCQt$wG9JeXXjy;2ZcM}#?$`ec|HoC*LT`zjc+QSa|8S}`4dabT0k#)ZA9afJsZ6EY7-x}BD~5~Md_Tc(`Z6F#QKAltU)=ZkOAeBuh~IFt%unncNX zat3nAbh&7Ubl`N*a)1KBa~NajO5E5PC_Jf2z}cJsE|q9JO(cq#3JB(#W0j&C8E7f2 zTKL0WG=RP>sDJLGYeZv0Jd_fOW_YRu+E6zh^-#Qs!5JSQu#mwNwi7qURq%~B3ur~B z9Cx~3Mk!XTD~^0nCaLvS-tw63DUwV^McNA31x@Xw28}aKY_Uh8g^`hKf2J~w01f15 z$7ew2jBe6)=7-ULuW#`zk*EJ|WZ@-xm1r470@LvENDL#64w802Rr$URQUKDtP(kh# zh0U;Or^D}EAl2vYcFBpQfMpLT4O)6!)d>k`e@ON#9xljN>z^|UoI$5tgD6A*IrO18 zUWpeRi-JWc(ARe>IKBs4=BhIP?px!D_$WxKWs4X)<176ICEM|twd*CsW=BX{Zv@LJfM-fZUOogm0sx(4r>F=F4sB7$#nJ^EJ?JOx^l7-aw0IhbE7qe8^vMgnxOsdVE;0_r6Y)>{nQ z@SBsf>!uOS`^k)oy7cqs`zYDSDf7~xAhtWpZ?o|w?8?|&5B{8`s?7bo9m(hlJA6;2n&0sv!e^9H{Ps6!tbzt$@jccIHbmh<7A8f5^eMfU`?b8r(sc25s zDf+Dh0lK4S^jv0Lh+)*`CBH}g(?&CQm`Z`)$V`;sV-Vae`v-m`lr?3rG0%KW2(+?Bh@wx0$u?~A zzsqB?r}kcf?wc7^iwT~5Vz5I<$T{QDHU`9=iQsVoY5W7848AAN?{g4}C8xO&njHu0 z)95vcToTYZ5nq8qCov3I*Esl?2-V@QnxkkSg5zV5Os)X)NG31h440AR;~I3vJWt4M zN`XC4L8D)SY!1AaJs=y9wABFiEO9!f&Ao*-8OR#~K^lPQ!2OCP!blR~i1Zm013^wQ zrcm7iBjjq$c3hoOr8d;rdDqbMR1Cffp%(E*g~6SZQ&S{K5hFzXAaTS-V?zQZOy)2k zM2hIpNY-3W?MfV$I6uiy1Jwk~MTk@RqC)I?kX2;f4|24#E3%Lx$;=2OsesrJ<)Y=) z3DY-7%fYM>V@f0B+aSP*3L_mAv(jvD2t!GXURv+W{)8DfZ-&Z%vhhRIVGL!9?;l#6 zJ;ULE8MxhUdekT!#?%39;=pNVxM!MxAF;C0c4yc zBO~Y%^gfrwoLVt*X29HD^6vY#!WXt0yt1upWQr??&FyohD_@zPvwX89`iZxFyq4+@ z+Z!51W+E%fQb#Xw)i8=ZJzG!T*85!9cvkCZ&YqSG&MdxQaY};t#==UDeep)MNit{k zS&RHb&D>62>i&E`X#U4Zh5%Jt`)eueO?F!Y9!@3@)0s@FD%P5UI zE+?c0b8iiC7qMMPHOy8nb>4^lSRCqa%&80QKY1@R@-O-vesKS@NG& z8+`c`IEKaf`ut}PQZetJn`PQuY|Off^78!Y zDbT0LO5y-g2OzNzJ!%4+c^D_o1TqWQG{DQh)f)8#h-4CNKwRcHoFSDhn~!^3zc4>f zjDW;^2DrQWCwrun<<;Msng+NO9Bf7*V}-kqcvSG4I#KNbHS>YHUI7$W%5@!r>2cqI9;%7$2ezevK)2;S6*ASm8I)=r|mlKGcxErcS zxUS78g!Iz_lHnT=K!AsE&1u!Wi#VmfcNBC?%>g!Gsd6VChsT3W_?2Xg4KU6mpd(go z+4sScp{79$wn=xfFZNdn<5C8E-(V|cU~k1x2BF-h1S|n{xAfbZALqRoff`^O-;HR9 zfsXD6PKb_nh0vGFxDf)#H{ZJd#@e-OG3lBH-UsOSo?&?Nc(s(XB8%B{B@MYDPgukGdJkz{pt@sC&>67uc5 zs4Z`oT_6y&*^Nc2D(d5Op3KKepXu{5A(cGC2_>Sm5mvsP60&!`dwh=h2&p~ewAtLw zk$Y7adoS|7KFeOz=fV@B`Yd~oaY+e&E9|gw zTdVjkDrbM5?@Zxs9ve5Y?AX=UJsP~v>D+_*T&gpUjMjnpB*WZCA}&(d9Q? z?JXY&9KL-j!*le@L2T;h#_HJ3UOVtvgtHZmx=&~;Gwm4I#cX~fvr(0Q<3mn!iH3`I zG-?;af7o4d70q5J*IK_6k*VmKe~pJ=8|2W-cs+SPcs*Z-gD@!RobND z(OEsb^(-6&C8ZZf9Ci%d5?^C82)Y0N4I;1HpN{B&zd7We6z4O33zCXnJ0!O$7P z7n;-fuzm3(G8#y5Q*5KJukS;2oAj!y|4K>}{76U;7!FKgjK|`HLV{IUxqz3FKh<&p zDia|36PFWMQL^1UjM)XLScc#TO%y&%ceg^@c2kfNKuKQ6oltzFPfX? zw{|?Jh>Qf*}x|yNUw>&ho}duG(3>PfrVLz?uIgUy7q`0(u^eV(?sHqs>hHc zFA@>+2zbX5EHRNFqhd+}H){jBwla+YMNxsykwk3c5j4Z2LH}#h?u%UDKnYy{)9-ye z>MiGN@GxQF@(2kD9noYu8p>5rv?u*sz;pMCn3S*nC7!)EeD7LRmbW#(I3pN2eD-|R z`)070jG7kT)o*uOZWdR%sK$CFsB>UdR8EeLWc$~Se}&y|S&aG{VvY<3%&La_N;(VE zf0BLCwmod?z#nU78B zw*1?P`UWkTC3%(XTX8{sF|AKRYnMrindrQmaE8C+~cNFh*9v(4y zV0T1qLxyu1g|E-*M-Zporx_)GAY~+rlhLXdvJ!o#hQcA0_fW4qM7rovU*yy>AO5zII#y%;Oev*g&*Xe4jn%Tv)MqLMylni;B#(aY zD4y#Yq94#c>+osZMsM;lm&H-3v5Wv!;B}{_+_69lUUg{j7>$%^v+C;&hZRN{bYxc9gU`94%&X)8W@rC)6Wk^%eP1GED_zkMFsJNh@Iqj&@- z@nz&(6AtW+^`E|D>y|B@%T)Mrj{>hQX$c2KqI~1eQjn8t34LGt7-ev=1AMs!|^oNDQ=UAae^Nt%MIbRZOi)~c-xIn$#W^RvDoI{c5< zF%2YAX5HDZ$m|$!JSe?&Xw<0lCwHYq`wXLgDz7u=`a_FLL%*(b+llRoZm!RtFW`xA zHb}ENE%=JsHCIBq-*I+~{l?OU113Vbdd-jdV3xvQyZ zL~cz!QaR1D_#_8*!X(Qm%n;)Z6Tk)DndJ3+thBh;7I{m@<`BM}vcR>J`*%ym`#UEX(=;U1DPnt-&Tjl5|MQYkfvGf;;g>U|;oE7~VGL|^= z;7(|LgYa#6i5E$niQ?-RLXXx_1qE?Ly_ehB^g>e#)4fxMeWUOF3A?jGe#M{Hrj-eG zw<=83^R}+#U{q!kYYv|e29}sZsQncs*;DHr$DtdbqJT}O{dYH2 zffdfz&#xPT&g6_Xc*tNxu-tTjuo}T92;$E-3XA?dtDKo3i3>E=X5}&RnZpA!eAhRh zXmpWezA!)Gg&;K(O492Zxqb3Ub$(ONRVVfYD9czg>GPL07ww_cYk4$$xKq&av$x+p zw#s5qU3xb)n@{ym-E~230((RP-IL#F6v5x!^XhiNVK?}mA~)EZsN0`p{5jQ&f~r5$ zG2wFHm7JiDj(Rk8c9z=T`u)Qg@>zl$D?0U;YEF6xUZ0kdXsjCcHm+K4Tl z<(i{bK5C)FCK33)Aqt>EPXK0nvx)_-%Q%gllT$yaNm@hv8B~(5Em;hcFCK-LQIq05 zKf7B}V%2NZGa11}NYK)FRAMUH=<53l(QGJ9>VI#A))RLxqUvgPDu84wZ3wrBiVP}9 zvxX2N?B(0~o-15SSwCypqJzJWsQx=du-*mu>_gZ-HCBbw!v z!jm-FEwgn^r)x{r&Dq>KKHkQ8|14yh1JozG-);;ZGiKN6xPQd)j2JbZaAQyemMtP% zwoqM$B*5IIgDDb%C^8C1H9`C^OZsk$k5mbD<=C)?|JyQ&Lre{-mP9&)@49dz*qRa1 zvY<%G6ia9@h-Z&UMjg+QD>I@9I4+}whgc^_Wr)be!0l2YjHIxvOrT+k+k2xw(cDee z0WGG&aa=;0k8`JoEb^Wcj+u-i(|t*okf0-?$fWg@QaFnZ+oGNGtE( zLP(4X)|S}nF+XF6gsy>4OuRndz2Es~EnnwR{x}wX%(7M*u zfUiug(cZ|)v+_N`lMPX23T7~^T-ga^oeGgUyWh`wegtp`#g+tQ9KbLhwKPHqWnj?3 zdUNSNCHksW8-&UM#QNU8oq$>f=r8HasNk93iys7MwF>xfA@YHMejtA*Kq!D5)SJ`@ zdj!sr9}6AtmyUW!lV79z8+yq{mJN@PQ{UO${SFj~q+L%zztf31>aoUaiT^b zlb}Eak^mf7xielcp@&3SPLd#@{5L=KodZML%fahIaYCXRVQ{*MW|D=4#rT3fcwnOU zM>u`BwDqa0!_ZfILW)J)s(=VH?!4R;RZU!{L^Lxp68nAe^qce7;SaNI06=Ils0+l{zB@JNQ+FFtBPSlV}~v7{g|J9yD|J@d9b^_ zgH$LR+X36JEqTWDf#T`?aqOo=83bf@Osb60IqDO+9#v(5Y$KgX@Hy@?z!K3Sx5+T){TPl^KEGF9f&CQa_=-NGLW|1-v6l>u+%@W#MmhOut^Ln^ zEZrXMAG)q&?-8@pgC;g?Gs!PF83#EwGB^m17GGf&wtxD(d`?z{HsoL1d>0LTA52egrq)K;J6*d^H!E) zrT=t3e~`I$JwPLbLiZvt%M^xD7!M^pW`3v)16p6P2fU+%L#tlN#R}rIw@2_Hv5Y}G z7k7?=DKXesR+7l!e|fV_Pf#D)1G$9Nk+{l;Z46uj0uZB6#*@7m?9I_pu$R4dzhnJe z&H*C|NKgxuz+4VU+KRC7a9`tL|02nQgj_*W)?(TL|79745=9isYr%mxKOw08EJ zp_(>?hVTza zSRxAtePfBm9B&O^p#nSCEJ=?+h87ufhp`wW^M()|TnO7O@x-?u`aOz3c`2GiS+KC| z2ix|w@dYRTABinVBO10}W9}PW^561oZnW!~dEsBpG`H`NK!3&+;el=$mt6tR9-57) zgpXai5iINfdPkQ^!PA_?)4r!w#Il+C$~m&95$#`^W?KcM$nramB6pZ1o==YmWK zMRM>+&if1UJ;Te1TBlf;CG2W-_?3P6q2EpK=Q0Xi94!sCPo4LY4cNKW?Bew(JI8D1 zn*F5&yUXQkWkbH~Tv%~=XRp(P^GZAg2GU~_W9(;>JEKRGB=#%W@X)!rivdWw9awT{ z-i)hD90?VB^7aKVJRQ-z-df>p;8u{a8b;sozI=;}=-WM)QhdM4NS35?B!`z-z!h-< znUJM8K_DW8dUiAF;YuWSo1ESZ=n}2-G6-X}Zv@KkWUrdm(Ue~SK*bb@Jy0M1&vHMZ zZPVnA>gZ{&I!cO9-IB4rn+&H zZlt`k2$7TlLz;&v+lfgK5tGf`V+vDY(?9jsy^3sTp~{ z+a$dCpOSQZ`xPGHm^_?xqx?I~v1HTgBe$$a2p4l)i2uX5^1P_U_B z$4It1S^(gBhcaHEB}bXSBqsO!ySWCx5$Y;Ve8his+g7O-|Ht;f`Zc|RVT~bUw9a}? zBDa%o|My4+TB44Ihh;Sm1ygL;aP+M~t%V*k8TlPZ>nNm9DD6gn-uafoTDS~Q0koZ< z-zjXbpf}+2M=0U?53RyL@aL@x%y>vcNxEZ>fX^~G=?4+}i*Mucub!tu0??5;Py;IB zDaK>njeM$v9_raugbmsjm<)wa(%|0x>w;!}9zOQxl;dStK>j00M5UQdYDCY4{6`m6 z&LUJ9Tm)97AEl zH}Q@*DC2=Ol6l;OVGII6gI3tY^~<6Y&UU2^Q7_PuSVr&B@E|~9FwrC|NZ;&T_^a- zv>^~FMdK*D$b~@cqH2QaG>Hr$*}wmT>DzwtB^PpH&*5YzCTJ*7nKx_*{cJ>}M_6<$ z<%ZHx)l*-anwvS0ZA_$_r=1Xj0s_`IF3#X;9~J6zz|;E?b~lbo*x|@P1OXU4HXiIwLi7D{LLQhJ+cA3KE4W`NV*5TkN&I$6K?c| z8c13IwL+3dh{DzoC&yob!vkxCPVC*g7q;+X*pU9b6xNbNYtZ~6c*+PPNn}?$;pfPQR9v&;b7t9bD91EE#f-MJePG8MHe*#&d4nh?Ft4Y{HJhh;} ziQNHj@NWvFwirGphQkqBR>osS3^ywCe#y6v0`K^Bh44g3g5H&L{MNLS>+k#1bpzOh zjqoGt_veg#K@Qn_-#ff-fuGJ9_4OoK=Cr2(zi^ZH-HZsj=%w=Jxnv$hYe zY?#ZU_MCeDvsr`Fa|-{x^Y?#06X;K83tz1^EwgG@c8tYw&9^}lQI`_sr8Bw2d!O0u z#t6XETKet7Vfc{aYTZj#w()&MY-h5@9y@2xRi2RWx8i%xEL>n;?;|guSl?#w(%fgP zW^;ta?4)uYeb(2=k;U=PZ*QLt2v?~T9i8IoKJn}EHQ}bO8?;6qsZ`clf6%geyB{BV z>fIgQu(-4Lch26)5Ln3aXj*F1*ohl(=FAzQ;6fWhY{4_XevRWHY(O(hGYkPlbA~nN zidC#clk-2GpK>VN!5_SR`_{y9dthSt&XW>Jo9(UiZ~VH1+N+}P(UY$XlWfkr$L^?7 z>A1L*{#wm=$jMdpm*n-E0&N{_IUGZxJLD?*Qg_>!K2gTc)h{5H+A?l^d2TKD*YvOx zzrO3?A2$|%HmCo5TzmE@{^>HWPi_V&HcoA+YFA;&fV6?E@-;tKWQ$_*I@8=|BYW7T7I6_ACKD4rp)Jrop6dt zDF;yvPoY?eH0+aP>S*l0yT2HOC|xA;6{{BEh!W4<|6POv;b%hrlZ32IvgI*tL89Gj z&Kk39?u6+4(nwOQh#v1heA2y)_XEdrb}sJvHnz*gHHjK)HlB%={1oS7P@hD5XJmw9 zsFt#`xsPM8_UlNjgSVF#{-8v*qAx(!-sFk0k8yp{vJm$U$sPOS)_YD_RZccn%6LxI ze~eRd55{#1B3GM4V_Z?Vrguf|D98PCR{1M}1Ges5YLj=}*0vx} zW|*PXzcY{*r?tmfn*=B_TdoIIhLC(_h4I##2FRif{we06mJJyrm;^eQJms_%Ct1nq z^1Hj?^W0zebkCJUn>`AGn{G^Nk>hQXM1n_}+;UfD|5YEptz@pK8dcl)pD^fP-`_$U zS!{PW;1oYwgELD_9rX4)`}bhv`&Y|q67R2&^`b82&k=Wy>3{r-%a<=dXWaYeCun}h zUX%aLtFvB6SM1q-YAfB$i?U*}(+*Poy66;G7-Pa-+TYYe%jg6b?8 z#K%?BK{zKdkpR6LdC~lva9xpt1DzzRL+uJ$`f!Sn;_ok!I<@l1pT8Sxh+~v!XwMAe zu|pDn5|luoDOVtTMg9Qc6z~dmMd!dDB3PI9a|)BNfB#W4j?7KF&L7K;yOsf^FR9^8 zh-v*!WaD4a=_akE!^;ISHUGR3?@mHYfwjU1@Lrf?LnA>&&S}u`%WPq;02jLQGJsTg zEd-DcMmiRpZ=@Fn22z64{QLU&|8<4RjVmv{zX;WVI$B(0g(cz(V!To$>Vb5qTAW7P ztHEZVa$vxWpdA2jlF;K2M+Y{15~fW>#+hRG9{&IQ-il602uOPV7$k$lE#=2582p6D zyof!7z)8fabL!11xQa+F13Gm zHVbpiLx=)YfnEHZ%2R9P;q0f%2dGI&Lmf>`+OavB?SFpDIm~TnemVTN=&65)wi1UD z@%6z?a@0BsCOZ^*B%8*%5<0@mVPR~zBx(PC3Ox}yxs3^R7Y%Cv{EA+B$Tgx6gGNI~ zN0N8WQ()GB^cEeY`sgr8he@c#9CRrHL0s9PGVg~2e5u$`oFW)(=HAh9)=fRQdCbgXWx|2t>_&&k#Ck8tCQ@J8?qKgMc~I zy`YE30Kc^GWx!| zz5m3k(37l22tEL)WN766xp2W*SfI$x3?qVk5()|LAd>#K)NSuT3r<8Qe~gVJ(jmhU z@xdz|;8B`d_4m2x%@;PvkA~QlS9b%Z^gx~&`7OgNodZP!cuNVzmoUg=K&TscfB{1pu4iK_PdT1gZjm+ZBmRf>-Z4 z!%UMO=q#%7^${aQM+7ji^bk2B3Dm{=qU|Rh9OynE4j}Su{B2}qAuNRojepbGt$(Z8 z*4@ZbAV!C|1t1XM`bkKPNhapoK-Z`P$0$)OqRy1u^#~4$I@n2Y#ZW{E6NfY~!*_;a zYcW#=VlgsQ1O7Vt41^sdL7@;W?;HRJE3xCkoO2CHE$FAfPu@mp6oRJ;63O z5^+UV(ow^oVZxWe9()c`LClk>WL!gAIQ~;oH=l~&0h-Y=>+lRwGQc%LOwlzs=KcVXHC-{;`B|I@>|vFGz}+)+i2S2eCkn#mGmp9Hf&1y&DjBA%m4DI0k>XOPH2 zUkIW*8DgBPldCrfJwV?`W!3W97x0GJsaB@Eg}uUq38Iy_Y=cCiUcR6sA>#@}rWA)aP!RKq z#e&&>PJ-p(Qy#|rA2>QJ+cO~KCt4+R#}l}9e5Y)rqXaSJ2g{hiy5xp8bbGP?t-s4L zs)^~HaV$dygyb_wBdkT*+NR={e=e>{+9#;1(;b$GESqGZ464&0S|=R=Q&c3e$b=JZ zBofL-H*rZ z542p@^?sl4^E}Suc)ec7>zv__)eXm6seZ;F3B6}+nyY@IceH1pK9~i{*%_MP7jID! z9&NvaSsD1;EV_U^{CD``=dKN_m)V3C=g&{|;pXQHij)&y>t{LK0$`k;)5W9MoRvSO z*C~UBAg1*JETF3c7UN}caURf@w1ZJWWE`3~Qt7mR7gx5RxzZEhb=KA$n=Z~X*&KE= zy1Y7;e34r8M;>Jwb~)eB?WuYAo)~V-@onhDroZ^eFU}(1AE_{<1DxvnuH)n9X758*_(zSorc-^=JLEesbDCHme&r^$EI94aO=G zlT<>*y}UdhVm>AWQn1neciR}Pj{Mn>y5q>jL#0pf>=L_qDU?JOB&uwh{%TFdzmZbS z?6;d29Tu!H(!S;oPxj#|b_HS-O#MK>;tAAAEDNb;D6+r%?z__<|4ioI^u&rK_1{$1 zH($Scb+E#Q$V}|nxNqGxM}a3l%Y*t7lkU|=>j7XdYWecUxx3YcS_?BiaU|=HPvcQb zDMw2P_VDM9-oYcDr5s0&K_9>%LOY#yf6|-llgnPe+su(lw-)h`<0?D}aw@vVXH8lp ztmUzFCk-oW`XGvNobX`HQ0NhJ*=PnFECkTpA~JtK!#@=$>yt@5+6?`&ZQErN99EoC z{mi53(yY_5ujC;=KYD#3A@nC+@wP#Xc1qpc3Sov3ZYuaRlJL;mM^Q{uEX=1F`p-&l zpksQ-S1OzWMjpLHvFp;0!wj0LXltPJ{;L$0;>MiInCIa>_-V}y`z4S!Mz@VWGD`Ao z&e_E5Gg# zgIFY>y()OOmUpEf#;9rPc@%Sz5KF|JW zyE9-~Q?}DUt9f#nD%Y(D*PKB^?tJz>O*86kXYZ*XvPFOCz`RiUq(jHw}OMnSAj0Go43d9KL@Rk63Hi6mfe`>#Wml?j0K%*R0t?_0_1JE&KQX zclS9t?J`WV;AFsCtqAqw&c2-JJ8ft}an4UF)u^spW33jsf2xYVw<^i?V(zzf9(`pO zQdZ_s`YdAzZzG2WX5yP_6=O4jUWKtVTr9s00=kd0+VNZ7$eGhcnavj^PR1{Ob!BO+ zw-X@ZFmv-UNVu}t*agmV&s}J}AvG*C)CtP@J^I{*1nOHZ-LoRb43VcKo8ccfa~qiT z;l@0+eD!USh03<`kLPl~GJJ6HdQkTj#>U1tK!>61%g05w z=+}ZSruPo$XdBLg!1-sNSGKmeU<3mI7MkRA%E5N{o~{M<6O8#=gd`3 zHJlv$o&0KE-QaW`|8?sYUU`WUrp7nt9P3l4tcjF$hF!akX1$E#p-(*O z65->c+8WkA!{pJEC*fqevq)6A&p{i~hANBPH95FD(?$M#Xvq_z^ojDWsyvuo*n7ca zzgMqcGwFN1D>rVgT-f;a*V-z-+xXBemkzckk`nEdFFpOnY+kM0iSnh&qjAuw9$RkS zyjj~wzTq?T9Xy3BcUDyR&D*4d;@3HB_;9y>bya>Lmf5HLr$I&e-KufJhOKGAET2BB z<&vjAlIU0P4xcOk$r~u)02lg(jT?`1nLU2|7S`h4hYx2o(bxWBvyZ>Hc=6({BMzM{ z#a8)3TH2w`-^!?@~uO`j#6cA??n7|9R&c#$SRzx;9CgZO@u zri6ZqhLg(Idw&?7GF9@`LIK)W?pBCl);X%vyP=Hyu z=@DLsYS5?bdvT)Nf(HN1`h80?$2i|fI^L(Xa?eQtL)@ltj^>YNI*-Ld7?-Xoltu*j zB7g0C>PD+m5HeB|#KVC0oXGg{vp3tq+T#SXu0`L8z=Mm%43mrVIc7XO!z5Slv_tvH ztjKz2uF~Td4LtY^I?c^4^7}LA!j6C8>8DcVbna>!^}OgymFt z3vI(*;V?(9>-Ae^<2$WghYrJtnt@dHA*|TMK6_G8kbdpD_Ajwfwd-MgkJF7zi|;%o zNDjHE)1u$9B>ncidQE^2dQTo#dUZg3F7@uEKa}x{U*!EhW9OE4N~Cf9e!cVOwr(VF zoPd$gzMk?M%3nEUF6RQ{r=W6^9otdVx8blOe%b=$n74#g6|5QV2X9Eu=xc7PvC+@t(7Z!C(fYoxB5cI+s+=@9hT zexdKQ^K`mt=Y;wA>pGnJ86}KQH^-|#i?HQ@k(t?)^=9w)9XxcXjT$gkmN|TrgH?0o zEp4VF0bYWso_$al4=s}udj<^|l6H6Jx#P;uW9)AYEy2rV3@;-S96hz10<)CXrw#@N zX>pzU_MI#-jP+@ixM+4%D`gH(J&qsNfH0>>`09yC9&sSKFN%gLZ`acPQ2tr!xlQ`H zEP~IDUJ33sX2OIC36C~UDxtV~#=SY`CLEbRe|`xY)%ZqA5K#r*#E*lRN=D%LsWJ<5 zE*x|yCNU)JO`kr!j!P9@8~p#LkvpP!^dfp)f?Wjn1eQ9x=2lx78I2@N^FS*f7PZq} z&&&zNWdI@!^6=#|TiM&&Kf_;c?9{2du+MmUb6HxaW9@$U;b)Sjap#nKOKC&Gvmda^ zfJu^Tsl18V<%13fPM$nDdd!%*F4+g|*AfM@U_Czj^wWkn>9>wdN-~YQul#D>cZkTw z%$XA-DZpQ@A)X^1E?l{CgZ`@K*~mazo#~tjcvkxezP7{I_ec!(S0{Pqeoeddch8yk z%MQ-vtsqPm`71+GJgxFvpv^Y$8b{!Fu!HatDkeOj?SgtO2-A;X)IW3PK%dYLA3Ux0 zPt1z!sa#R~Sz2;ph~l%TZxWEANnV)G;Ex?Y{$``~-*=wsv-UeBXn3w714UWX-q6s3 z(ja59du|&wxgJT)!VjL;=#^~ERWpG;-YdDCW?EB?q2G!pm$r%L*W{N?&vbUw2G?Ll z&6Q*+V9S<$oW$Ww{FSNBHJc^VPWD;;@Qh4|Jf5Mng4I03J*2??4xN=tFPbsIc)Vs# zaw!UqBl&B(kx+g0)mIurli!p_6~CcPn>NS$DA%sibe!{f;L4plcQRda^ppWp-b0nN z=2EWm>)J0>m!D|1o&uB1l0{0|%p#o7FG`Y5Mu4sq)4t^`QSoUg`TbSQh7_hYx!mwY{xlw)9Oj zo=2h4(H+I{G}3af@An$zdXpsE=dJL_9e3g4#Q>+EIyyRIDbpUkc=0B+p>q9GBP5Lm z%F%=n@*H8i*?9~`VYwcG0N)YL_dST42~Dl;1C`M1(Ist%?gz9_?OV4N<7G@E|J}7~ zR|#l(KvZj#tyeW?1`%79EwITx$|Yyghz`<$as;L>Kwm;%*H+3s4H@5k#9Nq+z-dk8 zlO*GfGE^?jXUJC0P-eyA#Wdl$M?58USDgV^(9E;!Eid&kigR%|;1tvW%cgZxmG6uM zJ^MvJf{{OW-FM|maMb>!&WC$9mY=44G2yz-iDzNk0=8|7V*W-MDg*A5%EJ6>PH5lM z_gsX$Ky~6g0RqS`VB^NU0GyK+ex-cd)Pgc&^ytw6+qX}4DI|ad1O-JBEsp=7D?d-U zK?oHa`z!!}dV0Ob0>T{5S27NjM?m(R#1R^%>v)&KwmUsrsbyCjV@&==`p~ePlG|#- z6EvMWeZSU=MC2gV7Dup+0^>i7?jYPjTZ5$DjcicHETA}F&C9*2`$;@JL}YI-t(%aWA|+%_?&k0z3FM+ zogLU|QWz7XgR$`#O~V!~V(1=zN@&eOaTYbC#o~cvLem$|lDjQ--P~cs#85{*F}%qX(r)Ae$ub%-IXPv5}P(|Y^{FJIt>U22w_JNpB~b`eEbq2 zS!bv>Go{qT8vt@?1X*-)D|kC_~G@60cK z-YhK2x%Kjn$p}jIDJYQ_47u0}_TB>j#x-l!q{9U5$F+2*hAOff4NsCWFff?_#F42j zmJY}Msi>ZkP`1<9Z@)zr(w_B7tCW?eXA<{gpA{-2rYdg7Z%#~Ja)it{oLTL}NA>ou zOw#}3?p<4Om<$fc$c(k^N1@guyrLhU?mx43zn5nl_zx})r3otvGq4Wbx>-TAr?*~j zdjEcaysMAqV6<)$=P&8{?j}lJ)7D63&Hq>F_4>)(X0eZ4xNt$EzmR!!HHevnA?A|z z%#-F<>MH~3@l)D~WiH3ErF!dE@oeO{$x3AL`TpOR9L5kyCRdh)V4yjGd6CGdG-}=) zX2eMI2&z(FaK_es!&{5W?%5^`_ zdG_5ClPQ;_9N^*0C?Q63phgwF|wav?7=+~^B9YKPKK99k8YuB>o6(z?;1;pN>&*o9e7{?i;ISV5Ys+Izepm9Lco}>cG6F!V&l{?8@rB%d zq)9>b&N@ebQDXAdLcp0Us!*xN*6A7#W}CKR4BMzdN`?&`dX*#cIQF1Dz~M9ea~9aU zB&5=vF(w2N1Q{)j}Ru-qwz@KCjRD%TFrgOO@wk z@Ji5Nqg+l{pNPWRzFwBhCH7@R7$>25qGhXMhj-42k6T*Xb`QXv|669*bv^eSOUGRD z$2My0!Clo#b)9k~&aHZnKk=BP+}gsz-;C2ITFtyZZ1kv6zoC-e&6f96e#H7r>spk3 zY$Rb;qfhCR5m!NM8b@==!Gi}6LumEicIu1zEi&=1Y^4tD8>l?{ya_HvUn|${(*tF0 zGC-jf1l;sl9IG1+(X@YZ;&rDRMn&(=ggH55$)hne?N^rGCXzAT&xuPzHF62Wzcl}< z)P9veK0E#T-z`1zYPAhjrtJ9T)mLxfMh0O&b7qrwruWQm6)xhx1>`gqiIwmTT&uAc znfL9J-Y56=Vx=BI9LRDWWb0MBN#BXpkU*5I+q@qqR%|kyJdp`F1{6SaY-$brwh7<& zLZ+z+;h1POamgZ0DM?(-(yD9glqOaYqX&KQb@Qv_l9|v12GARH2?h*4uxS6TDSE1tuZupj-jFhF5gWE2OsF; zpWHK1JD$gbyBe2mo;2qg9s_VoiTy}f<76Tn%a^hRB8!h!8#j?PBHWqyEUvOR5$-ws#$I?tjSmBaMl)QnGipS)h{4%N83VW3* zrUm(BHogA9JxZCGxKxciaS6wR{KW}nn&aqiw&uiANzd?er5CBj;S|Ctrr@kdu z2LL&LVf*jOD${3&KFRUz=W&L*z5X55DE;c8TH<0{wg;4~;`Pp|Oqi}xY}={bPoBR` zMkl575?05;yIya*e0gG+&gNRG_$8n$dGD|3_#S$BtJeMccUn=BM`OfyOZXK$eddcteqXY%tw0UzFX>dNL1iWX`kU8#$+>L;{h_pRMmB$yyB5b-wz_5)`_wOX5UUow(n@mK!~`k*auk{TMUdho<_|(M05`-C2J9eLR>c_W#q6p?;P8Uo@ z2pmSPd7JckTe@UIH7%_ z8-yN_B#B6GmyH!L5f>X_%U#|3^|K{Wj~pMjC(2GcseJ5>SKuRNc&0M|VMlqSHCfpD zbkM=VTZe`q&I*v^iW?hF3LT)okjL|LAq;cC&YiLF1PQG>$OosSQL|Mt3eY>TU$pQ@ zi8NQPCvP5DM`(O}PZE+5g4c!AT|Y>|=7T3|IS%`K<~(U*;>R~RI^2zzKziEI+dJ+3 zCFMOlf{BRjx^%Gw#kC|Mz+}GUrrmlcg2~@;g9l-Ul^4u)m=Jyx4gQ+7YctTaS0}{U z{Br#QPDdoix3Z3o%Pu4}`ps?kaxJ)gXhL`6vQeZIG zX+=3J^SmSES6SG$Iq3|rl2NiJjA8>|qmE9{Vr?z{Fc~3;D2+Sw-5bhv`K*t79+k>_ z`M(8$zYa&Xw(sxSdDTceuL5tK@JbX|i`15~{lUR5FKB5kMOg`RMSU^?z0I8A3Ordn zm~sw&D?d{^Mu)vC3T)pO*j7byE>5diw5CxTnNh!Y=-z!C$-ts%{grDlIuNZJyk(1H zR)lgR#p9{dui35d8^$#1TTznH3I~OCTr{ulH{1&sv7MNfoD-vq&FDdMLlvays#7?n3M|fjUPLtgSpe;;BQj z@TM5CrSrccA|i_Xm2~&OP==8O$`K>hF0&z;V1O2aS$qWH(;Pl;@)L7;=H=iG`kPSr zoS!>*=?aL?r-&`2NMus-^L|3*#U{TA0$;JL zM$pkhS*gW?Hun$~tdzrq@?i{b01Ryk40OMDy0TI>;;itIE$iua9f%fT+>m(@eTw1- z;HT97!0hS-j&m^`Wur_$9G~0ZYq|NUThVBdudq|=`p!Fd8#u85XSFqcer_M}5x1>R zc}9_V`ZnvkWa&#BOqoyzxI3Fl?mnn;IM1?7O?H zT;^;#%e!H-X3kdn$If5AJZ{O71d?kBan49%>U{mR`2OeWDe33bw*h{# zocV29)1c1N`mescfsgyD!B6-q4z5$L zo)w&7QT&6ixeY63<+&DB2rHsw`<{}VP;|0t*=L`B?#%jbvuu&FCi8ypI{oaI=x!X5 zJ}p6sW;97xwjA4K??OR!!q7EZA;fFO37JbzYj>(32D3@0iTY_bWX0|=Iwv{ z@!py%i6RO)mH zZoL%?D5!sFv1BL-zi1mQo8Yv`!pD0~z&&^eUrT7gTd_EKmnSy%P ziK@z_dVQCSW#NDzjRvuyKJIb6Pb;}3Wpj&}cqEcnhm%O}qqWL9IyZUgF-U;zX5YMd z{W|fnT#vq*yKG-F={Ae``dXtC`yk64sWjTm`TWVFM~FEBL-)vvOfg3$uGW;CZ@qpW zYfrnk_-z}bU9B77*f~JMBFrg&b=w`I7A;z|Vd1S?x0ZlZ0(quh47hahV&>bs-bT+( ze|LRV7o7o6pqur*pg;l(`vG_DPL)Da2nN!PXCa5>7E~j}`G*yB{OtPn$~;c#z^tIU zJK&>LZ1u#_i$xZ`rC&32V#ox)tPcALW(5m*C#OGJ9FS?SA@c@Uv&n-e2*q+zWP?4{viF(r14~8|9kj zSkgpI$r6Q@xyWC+s^WQUYqLPfNf}CC+_e?n&sRrxwBvU0W9lL}K+Zw#6m{Qb6M0nc zJGL%UnmkVT0!Z$3Ri}ucX0g+3Kd-G|*}r=G_Qr@Fxk|xI1O8}wB3B=5>N~IANoAZ< zCM#qD+Z)X1I4p5<^pqVa?@Y%@KTXsKlnJKD3C*Hac@uVwc7 z%*2xR7r~5@QE0NLI!K_w?Q-@OoY zX;sa8$v#-T01%fB9mgNSf zJXu#E(erkL?7e{fl|Mu0k2a1ck=KN5o0FhsbDF(;w)L6LI_P(<=x&HHXXhrh-Ay{- zMAAt7DzWbd<^WWu2_Zfu^wzH40gIiD%RrBAz>ewl+ZHxq#%!Kkn8o%;y8rV5&A3~E zIx>L+MT`TA7xSx<62@CtIDOu>O&hfaw$w0tQ8!bk3DHTuuB3l!GyLnr0w+&JAi_OM|<6Lwx->X7j+xeR4D(z4pw z8jU6s0JQd9-=o=ue9&h7ZcgcE3-9`#=(+87TED?6Rd9#bM=likt5iLberw`?yifn# zOZ{1+x%$vcM|#BSmwkmNk)n+JAN4gxi~F?6#~dB8a~NSm(A zRnzM{-x3Hew!QhdoKK7^Wl%LC6!4zf)5UNn})4g zG_1qZ{m1Tfu&iJ?y3v)*#ivE|ig|SFT%hclw7!{taM4CT({qw`Q{Q>fQXDyI_vuEn zB=KaQHcu!X8gd!{fCO)rFnjR6+jlgP&&snQYVRyH?mb;`Q(tx)~8Vvn$V?ObSVEk8>b!Py26c8&1Uo*jd+paXmCcN>nsSuH|NNCJu>(`T z_ub8I*3&@Axm9LQ80uzSrmqCQFJb!`Q(4)j<(pqtt?G4Wrh`M{3GUBMn6Fnp&Z9;6 zWt|fxlTM%yD(jUZ5I!jO4)4mvGkIRxMf=s~ zC>-Y~g>`+pWf_uJLCf`>;Nva+Py+G+f25Ae)q7qd?#PBGp;W4GQtRCdX|>-|iTJS3 z9V{MhZ|btvgbJ2p#D=0zAxDsMpKjDe81DUD)7odRl6?$IX`ePwl(8Cdu!l=Io^muw z;M|#7B~{9!{2Q^c$N>QF2NS=oK z_YznEBme=)o2==8(T{+26aaeLM(rn`Chk*k4AW4;Mj=?1PoCD)m!n;Sztw^R$I9;d zx`HO)_}XFBFTX5xYhAVnCQwlEpsx07q&G>X3~d6Vkz$n44?YV%ug;fWy1EaSA^Z8O zreRJ&H8)<7OE;)thJ6RrS-hID-AsIlCN!j&^r90jv4e| zNZqu7RWG`0pWd}|x~EA#vdE~9pkRkV7I({qBA*^^f{=eo}2 zv^3exIM|`zOVc0Z9ei%+BI^Kl>6l?sidVA}wUMR)1#vaN`O;eF6lyGj}ADtx{4M1X;9Q`<5_cUE`D}aSV2;@CN zlx$XkIthFlQROwcc>-@Q5@!x0cp-^NQ9^;Cyn!}Lt5I3acfYeZ9Gpi$7h#OpZ(P0< zf=FSj`}eomqLtPf=wz6TFtDICA)59SFxcC1oe;>wWg$!=@vx+@*DI%9Y{+i}1T-|b z@6m}_t#0h)hX^_JAF~=t2UFuljT%|)xy?Qzr<*ixo6yDM^vo~fb60-p-qy!xOUhl_ zS~)-eMMg;VKfC)jfWA5|*@##mkle`S8#{h#J{s(S#NS^XU_2AQ2<5YDU+(jbIMCS*D#xSjUdt(M2#gOUPz`>z`5&J$xb4v%o^^SjGS3N z0)DCbDJZX0?VJvJC>+`cmu*vc%3C34jQ+sAE;8>9qt?Ir94BlaMByM25?IE-^Cwt4yB zD2dUJH(5^+fFhF&wlL@T7#O|XBJj7;|MS|phQ7vSKnUPmOOO%Qo&Bk;8GtF4+^_QL{uC15ri1AbM z;o@)4jm%CS3|E(q>rv#)9g7Fkh~qkZW~D8-3@_U>t*Ojft9eO-U0k9QTPx2lW-1{F zAqbu+zAi@%yuXlTK8{KQ-&?aLp~@~*_8kzmtxK_x^CHtgmp6aG0=@DD3l<1yCaDGR z6Z_nf$6IICH2auiWo}DuD)md;5#-PC<$&fNHSD}4{;}f`wq66zJ+i29;=<=QEdhFE zBh!DzR7R4sz_iSRYNt)JcI633$s3j(-=}*+x$d_IvI|L9jIMcH(z0_bu8(4MDvr$| zG5~l&Ujq$dn-o+U?fEk*YOse*PC>$s(yJYbvB7vMAK(O`Q2m_F;6%dI^i z-%>mM^^H$FWl3a!n1_QvI)N+upK`4xg-P4a=WA<|_~8t(fN#W~g5ytiBu+16S+lVU zguTa2xdq$li-{<(P1nk_8&NV!v4V{w&92RgO%8+Rn+$AlGWxN^1CHPmKp89;)?&x} z0i)#|e2yJ*tByIIBP4@jziZ#AlK|qQ0ev=UG_BP68R6>%a==>UTxzPhMhqORVyEP8 z-=M^{DHqxpuMlig^7@3~ZfxKLmq%-~K`H*MU^F7oY1VBR7>~P46{jO#ikyfR5o@{*G!L7WH1qvYEve<*$~QeKDqeV7Q+QZe zCS5=0J*2Lb)=3tRXKj*NYL3T`M$H$vuk640cGLD~x9M#Z*f190tOEoJu(o9P5>COF z+=rAj-SLLi+GRNweV_f;#d-kn#DPxC=R}nbst2w_!BPb$Bg+jaV2Fm}XiX%DG ze@5#<206~uj|-W|%vv6^y1<*0;YGo7dZ2b5h#U+2kyR+oIULp)a^S#$G-uHQLY~TD zD`X3zPW+fgfk6YF>^)mrzi-KJm_5&$)=HTWv25BOknmq{IP{F@ZFuwze{V)s46rk+ z=0YAj?<_dGV7~JF#~t9FFiogar_N|cN5{A$2+*+~IMzWSmQ^hbkm8b`&v#dnKA$EM z07*7cGxj2zNw|5N>Q1;JNyMtJuDB;{@ALwNkEJcgeTecg9zU|&`_ZYvsWRK;*q9MJ z%_^u6cj|uN*pdm=sen1hpN_}e$?!lYYH|$B3|}?PFpoKs-l1H1Y8#ZYYEtrT?fNs5)`LA6&2BjCstkuIV=wN9o7c57Z2Y{FOAKJ^OrQB%x_*`tKK3gw6 z4o>|RQ~(8WcyJm_^N;F-PwhTcr5MK*3MSh<~(^Gmn#Jp zkhIY6)dWIyGp^Kb!EQZRzMPCG~BKh9%gj1$gN<+LC-PADQr~%mXR8vEA${DtTCv@Guf9m z5&AMS$A*T6itGi6_Ei>bNy;bn+qG#Eni5A+l7QY#t~qP}Bx~U~0ih`)N*JC9a>t3s z=ZE5?axe3u_OcJbmkNa>y_DbvvaL%?ATnBYWuPRC^$a7 zV!H{#v%qUC(mGE~@#%l;7hhjzP!z%1W#G_W$ukzM>Rtyj0x2qa*eKJxqEkdkj(R10 z$C6=W7)v++!eqhY;p^x_0q>hPagH({7l>AZ(6|{I7BuoFi{O2UMG5AF?{UM2U#vz6 zbIxlvZls4HmKEFUD65(Tz;;|V1`yC}?aj>YZ2GqJNx!OFFDtpZ&)!f~TWbV_AJV#P zG+|M)QlNS1W}LM`i3KrhDQqb0P{-^8eyJ8YtJXK*dhuwlolTHupWcIyZtZNKb~^dw ztnA}m_kdwN@vuellUfcnK`uW)V|dZVa5x`98)SR6K&+jHD?m&96w?1FLQTx%8$zzF z=gU=6WMC1OF9J{)?sm*SB*|&7IK_lacbF7qc9S?qNaP?SN69}6-J&JRo+P>54NXvE_Smct3zDnM^FDFgj z#*$+BqfL}h(+Cq651KOg{%`3e$vjzEY9y*Y>cg#57%|}DKMu~aMS5jWG;@*CQzW|f zsgg@slaWac7vSjXq+o8*eoE-}31#F$7*gA#6?47Iw?T@;!mU4r!^HPw6u~%)LMPBZ z3Q^Ty|K<^**o4lP-7*usFR+T2W-O=^okOGnMkS{F$N%j)uV;!%FVBpLwo#*TLoZT5 zCaqah^|`BhmNGi=mPCmgFN3Fw2f|iq8zIFR2ejp8vSRPvy?Wh%Sm@W@xN&0}HL)D! z!x1y(p7MgmzqyzPsq>7CMv{LL?ofII+X0jS^nGmmk;(%{MyX5OhaBI-eGb*ouj-z9 zlv1?!9r}wB&)XRlMUmGJdZt{`<*95zKmPbHbRDz^X3)^E2gxTZdBVb8+9!G%A+N}q zvtlM^=UT=%0>EkN7`_%mDdxdsjiS$9pLYKIRdkN}YT&QKJ=@4j^On$wV@9b)5Ssk{ zxwe+d+0SH>tu?#!_3PJby>!M77Ve z6GOxz|>;>-DGFnkK@V4u=|jIZ-q73*)lnC4UnN8wOokRJzucfJ)Bz z@xA>2sYMpqws-E#cKvyz=9wx5A5Ph(PqW;|21FO(jVCO0R_@ePtC&)rg-V^C6+2l8 zzRJ&3#U9lPUggV_x)Y8LFR6NuFUb*1s zE+QAD8%MrF%4SICIw~u$u8iu8OSu~Gxmll|L{x_!Li)*2&&M(w=<>N5*AM8Dz34hy zP!_~AB9U2Cd;f$gnO5sTzbWrKp#^VM0Ntmk5J#gTtgfJx&q@iG2t$4gtxo^Iy6Lk( z?<0h+rNaEj+xDciB~(in)6wpd4o z=M6l;k9HukGv2MLJSL(x67FFd=_y495Q)u`7|Kv$ZBj}Im1_b3O7#@pH59pZn?GoO z$Hm38{$KE0n_r*BD<7l$mA9(ncHLmY4??f2SFajeM?{`B=NOG6ITv~=zY(8MJ%jHGGD>*zpMZ1lj^v zd+r2!jKpd~h2MB`td8^CFYxm@0Zqn{R{;mrOc+B>&Wwe~?9aYF@xavO)Cl@&z#3*_ z2B5wPPKPzkTRh_Gf>Q*^J(1-|U&g3WV4u`a(tkn%{;`!@+q?P{^w|>P0G|K(&6$U8 zL0Io+J8&kulA62)jZGEoq;rNV+e7gE&B~L9 zyg9!_*fW95L;zs3S!wpm>m#Ua)VL8S*jUWgaYy=9lx###I+nv#KlYAGS*tbNcyMzZ z)NAVeYk|^m3mzSMX-p;zbW^VH;c=ukI08H2OAm31aO0MOLJz&+bxaM(vWw{Wy$+z;UCA1 z;%pF=(6Ess-CYoF@6d1GrAyq;g;dr8y~9KWI%qFXGI`-uslhu?9T36|5WvCljM{1D zC1}5FuXN7cfDW6hPM02plgqq54ua6C`c8Cd`Og+K8gLtm`!FQ|q>(ewXtSQKyU?uw z4(Bw|ib2jPgqTrhL;`)$#L&@|=z6N^4~gfZt^oWh1ErSPYL z!1V_fX)FG8OynLsd0xC#D&XK97YR|rT;9nH|G>%JiE=B^O1iucf z+iJ2V{wx~Vy(pS%a|$tqDw}FE6UX0(K~Haz_b*IlWt!d9w#kk^^J?p<1C2$Hk(V!i zD={sNSH$MBE~K$t^lrT3Glx3m2frr|=$QJvEo8&xWwm`;RTI)LeS@@0c2(s_&@C%C zxoQWGGF70794!AI?fwRaN}1-923;^xl%ya~iF=ix;u(DD!bXIh{~In`)#O*oe0nXd zNgzcmgpR;HRf#EOoz1tMk`65}U>dIXlBS)%TlH%7dHVbWau$aStj@>lrW*W(l$9g7 zfIbA5V=l^66Zylkic)L$AzG%PDHHO4?C(F(MG=L?-;+E8yAeyuHX23{nkeZnO`2Ef z+1$-^9EnJBkyc3HQ@``@43qsm=SiJi}VcGuSzf79NJUxn15y~in9BvI<)UX&?1 zfQ!agg!mN+CBPAlX!S(`Ckme&y+-nw*?4Asjz5!_6cAP0L>|j7^f&CG%z!(OMKue% zBHNDmL4h_{Axo6LI9ibs`Y1{qa=Pm}{(gRAF)qTHW$pgHFi=AIBFL#({ok@X3eZU% zvX4}u#^z%>;dgFgVRtnN&Gfh<0$b}xu+!IUHT!u#2{Z+q@?yz+mi~hZ{KGUMG&Lpm zP~i6z13sRnS&1lYfzc%;C9MiLlw`N{l*NN+u17;y^LCw3Cv>Bj7nBJ>KnB=+Kww}v z4;B+3OJOplsiSC%a`Q$H=Vq-gr+6-DHGI`g8Xh(UO-2@y*n>N068Kz@Y^=t3PTJ&X%@t!E>FxKO7T-&Y>Tcs6y6X%e_>Jc0hatG? zwKU6#izUGOzlEV?;6+YjRh?jLCGT*S{mIa8F?2oPt8gnKkwkgAXn__~jinc+qx8~F z{6~-fhgEgU%O$B5<-fS2ZM$@^QIxV+UAICcnQKIoB6e702$4v`KZ>_QffU$5L`3%f z?F-RRQnj~(Z-Is1c=F_my^|=Mg+j^hiYf9$=rwVp|$#ZUhqTnh7I-UnIUoNc~sJWNoa=-J#YV?eGA;j-MHJ<80}TdR>SQd zANoXp#ILUIwafnfReNmdRBcj|zm3UT{&w(8|MlayX?r4#HZqGqBA%_NZ*~>zNO&T; zisc@J$JKYDv;_Qd+?|T_?EkOnpr3WsM45m-Q4a$a2GJy4;FmE}Bgx+31JgV@rh)Ne^BJmvnVBvXe?35hd)vZzn+1(n;pI7;{WWzjYhwBuG7(O)%`d>ToSC; z+wY+PHEwvxXFMoP$X}W}W8yo*|FCp4At?K=pAJxlv*1yH{hqbW4jbY_2T?Z`Nxb;U z93excFxjLpeTU#b!ZCwQ%C>`=;fn4&B^bD_<|RWD4p6(!c|C*TYF^S@SgZ#Xz#{jX zKIkEx0uPL86sUWVKTK?((DtsAG0Zc($PV@wPl4kAL3N+w@F4agp|Z@l*!)|E!bu9` zET&1-4RhhNPPD()edK&tE#X1~^~GHURQ{0NU7AkyUPx=f!(N8D?ttOnbz8ChrH3}0 zWX-$X^;%WIU+f0bnw<)Sw@c@^HlYGUR$mjT+C09zJqq3`pIWiVf4(kjnoAPMPF{d0 z%X+H!pAhHqzd)Rbg>XNOEiQHi&ZF;!$lji9gkS5Okg1JaYM z5AfBwMh&|rdJ^6qbaRN`6^HxPY<=HBwvR^RZdO@l=RRbE{yL1~IGZm_|CuDPPy=hD z_mg(pEsQ1oYBIrno-GNK-A^Vm?^0fK`6a@Wh*BL`UsPto(6dkVcBsN5&w$2JtOTgT zqy=n>=gUDKKUY-cN5D;_MGK%&a^;6F=H4nUUxSR`(UxyN0HKKL)jGO9+Y(!ktWS3N zJy(|ii}OPDXttQ`Et|=ezq)Gi=z+>h&83j zM_Gps!g(QyDZ!xzun6y|06lyLNJbrL57jEj4QGEka%}P{ZX&|cZMX>X%x^c47iULYFUhtGF~!#+SYvv zh8V{?GDYS;jBkb^@1hH(_0ewuAgG%(%V39$pI$+oL@(FAn#Kc>+hT#}dH63{Tcp3E zaDy7t)qDqT0CQ4XCc);GeKA+n?z=w)N%OA^SS!y`RV>Nyyn@ogMN5~zZEF!6KizA| zlK1w)`zT!m@Gvzltx_CGo(z2uUA+lEyQOSHmj~7OL5leiC>0J>WA{(&7HE5t`DO9$ zjRz&KFlY3L^!`!FHB>jHuFYATiHm!>K|4R-u5{YM`^leuseU?fVQZyv9N`5Zlk6wBM|QPbHk z+Aj5IDBEs$J^~BFaJg*+>LE8c*?&FlXtdPD_$jX{t|g*(rZ}*~G~JGJ1wJDuAuC+I z6G;Dv`->@sxrxWbBj-R*?fo|qaX*3rnh>ik3(5{ty^9rx{LzfBws8&LqpjkK8+LbB z5-R1#IAu}}&g~3FP>oP2-_H9y<>J)pU*MnO{uUrfggbJoKTIyoG8-aRuUpQS z`h1?$9naSzgh$(?ZKO6!d6qU%sWkJ_1V5oe5J%CT?1H_y*0wfJ=cB=@?6?duRM&hLPDntiCX3PT_)}OL>37$JuojQE zF_5Q{lF01Kff~wPcw_SA-rDulLt4r3tiYW&Gp-Q1*l2uD$Nrj-Mb^c*e z{md?e%7d<1``(^qa_Wt=e+zP03N^@A%km^Sld>gc0<<BK4}Ga$9jsanM(OL;0&%Z87`voqd;% zW1$Z!I+<>!23%nKxvZsawZCZgN5rMP`wkV_$f11C=8V&&JYbiZ+qHr$<(sbCgRkq* zU2x=()&fBL>UfLpGq;Nu3ADq;Ll%FDG4WqpY}0N2{r6GY2XbqIb_r@b*euI#2iSH(edfv~TgBqvbtw$8#jNqZovkcOGXt3uW8(r@!3Q z-G`YDNb{^mk52E_a&A-K*Qd2_B!BzVU*K%q6Fm*;uKAC(CN0{Z-bi71kmOw2(Kov~ zifDge^U1bEWl?LtR0Xg9uTRfoEA@mhdO-c-1W#_z040jpvJT%eYR`h;p7Z)cJ7*$O zh^DIvqlR&KHDm%0ARpadq2<3U?qya-1J&Ddgzchmwt4-(sqcwCuUuf=o(mm{*+GM= z2i$cX-WP<1K9WX?{25u-FgF{Z7irGlPMs|fE#Wo*;{dwvr0)dwJ78RlO@ydd%N4j! z6|;>%mF*JUTLH*?5~Z%7#i0FxLeLhYYjIKqN%H`m2CRh$r6thEMBS{c#cGZDGjh~9g?c2llBuUXly50tPZg- z@SQqcdTFMwA96n7FJ(o~gDd$nSMTw>e|UgX;5IDRNaQgOIO0^*BlA9Q9`G)dXq^1R8?sw@fzI(!Ja5?T&mOo%a3gyrjdj|(a zI!7g=uLe>J>SE_B{`2Z|>Xfl)DsEJ2b<0uxt7D5|%8DD5=C9jNasR(F>VG%C8u-^p zob*j~Vl3}MW>|?);EOk-Zo9!w`h0(9^q9&xCD&w>eHYE9q8l}FFR}@AP&O?BNMG)A378E9QZyWJ**#FNc zDyFt{He(R_eRsSn?w^3^Er7W;{6hg-Qnck|({1ev)c_+uaer0sBN7w3D0Oy&W z-uwlU(KXSDf8uv_DJEURoKW?+o=NEWz^AHZEtP4#x9wDSeys|tW&L|aOO?;R<9pP; ze5yM9{Gdj-^iQ9Sj(_fz)&3dB|F&0Nt#;?rgix;h;gDDy{_np)U8v6rG%m6Rw1>CI z|L`{M-yhTXy6SW|nmYTtj2J_wANFj|Z(gfO0&4O$*QOB1LRwqm8+pQ|3h$vK-c`%g z={~hSu?bT08`p(33F$9r0k9??3~WcWGK%@85Ar>WUTm@6)K^bVaI>VC%F$Ko^-(%! zOh#nn{-{dP!;;Bu+E&h|G5v}GD%y-)G!3-vu%1j`^=NP5qD19P0;)&hIAjiQ`L5V7 zr>d5!-LFeq=QXb$p%i-_go*uyhT@_mrov1|*@e-Wju%NV)oP-)l3eqzzsK<_e{(qe zAA|h=@$T@C7kc_kYkK2@D4_Kbct>2V0O*$@9x5sZO`P;y1x~(eGD3nm?3+X3C zF|=d?hW_0+{S06|uI>DCyrQLcmQBB3Fn48>F10+8afxX3UX;J>{|Fd6V+77#PC;R~lhhi* zsnPLv-av15iTa1ImU&F-UB||orm)YPbs_}R;{s#lVmH*-LIPg-4B++_f=2&3$o$FeU0rP#iC@r|yo)90Um z-uNaB=P9jXI=`^t=L1^5`^E5k!ztr#WGc%OVNpb zjUIWwXfMi=Yx8n;#`mkGTJxl+yx)T{MOCUiryQ@j9qZWH6|F07LDcn3A*ZbCg>E?V zW)Lvy(}S;*d7Aze)Cku|{KZsOp0XSWMRBxg`}V?pS1w%=nWo6B#Z(WwaOuBB-Xn(b zBJ~uE6plj<#5AZh1U(XwXB)MMPz|$fQ9__h^sXwuD~^<}Ou<4o>*MzLV9kw0N#LMG ztna@!7eo$H=V(aXtvuLXleeS?>Rh=GyVrQw)yb-@QzYPizieqY{@au(dW z=j9C$bLj5!v#f2c+}zw&cNL6;4(|Xuw_|3#-;Pw5Sul1BbEt!%VNqmN_W6p{C{j0WUIwtGD-@nC!sBptjqhxyVi1zI>aw z<%KsS*&zt@F#Xqf&UeQ6W=-EKn`o8dQ}3{EKE`tR^szLRM?>q}ot4(k&XE%scw?y5 z4-|f}`Po;rQzNFn%nRbzt{;B?J?H!5Jx)&`KTL6g^L^oQ5^gWGoCktO@xk*CM7t~g zF^g=bacq-*MDg6slg0aM==+m%f2)Y4Sx_3Tz%uAFe%vV5-IBgR(T{Vf7!w~Im}(>5 z-Koam7}!-#FW~S^qwF`>PKba|c#9z|y~aN5adp^zKwnYuh|imM5YWtTy|0uu!4?Z<&wQ3tf;S zhtxG+{o&-Bq8?!vI`}*&dr_xJ-K2m`-z2rWw)#`M(Aimo4fnjN|7}9)$kq`X^e=~v z*xc>(zMTH=2mF@dmvc3LP`AJd8>ghS`eS19(D#RCd^@;v<>fYC>d*g|h0)FA`K#)_ zZPotms|pvFD?6S9zYbn%n{#)8Y3gggN7AGb0`qvh(`(^hQOq4YIGTfG-u_zP|3$sj z6~BZ-zv-(v#w9W`@>OKafH7k-R_2SFjy7@W*wLl`?4Ed%4cfndznnftXUd=>pQ%oy zZ1fa?q?nXJBcRvx@T&i6wP$VB@J@as5ios{QgZsHhv$se9~x~urTXboaq)@AL9y9L*u8iJ`(3U5H4xvghNMB52+WziTY1!6k8AF5HfEpZ6`=D`#mq zgWGF-$DLp7j0?|YD;G2Ak0RZJH8t3-7wuW&VANisPqDo3{IQHVGFs_nfp|<2H*H?7^J%_r~`+ z%6inb3w~m5Zf@^)P3###a@LnW{SBkRwdeMT6E)hNlK49$j&0PO%qe0I;Yy+Q8#QU7 zbjRD;?#xc`^73+aaS1Rv>?{Wqty;B;uf`&i5%c*qYwAdA19NRocK)+xmgKA*8?WUq z8a8bB@Lbz3RCl{gF+%|t853i{B}y0Ajlzv1A2v`;&7bC(-{M_;RYn6lySL{Dm-YE+ zMJ=0#u(Lry%|w>Vu*K**Vd2Z6IxqKCiVHF4p{O-9P3^^;_n5t2{f2hQ3r_Rg{>90| zm$PPQcy>^`ZPWzk7Nsxxi}P@crO&&l)1er979E}THL7M&y>HKsGchrF3h9$6gbD46 z;AoQo6t07@cil5*$dF%N$M4%WR8LP&=>^Kl3MJ={NKT%7#q_nGz8rldwmX9h&+xco zeSJS?7E7ibb)}x_#P1oNV)bA(c5Da$-IL9u@3hiB%apQ!4_~O_r@IXAUR$I8$<*7- z1!Ik0+kT&wmX=;VXjj1wzm=O`Ut~LGj2$u6PJb)?Y8hEskB+)!s#4B!u@Q^-Q^D^IyptW&cO=P9vd`2 z{X^(^yOg_PJvoP+=py_1MU;U~WNK+|n>20e$g>;l`R1NI&C!LH*@%F;X#BFAyA>7| z8s1=~`kkBJ1ai|1z+JOO?ggNY1MHvI;UCY8%EVxZ! zNEMqYH4bsgpcmVYi--lZIDvI)gM@Oa4!WUMK@bt80xf$^Nt$JU!TQ_Rrh%{Td){-t z=RD7I$UZ-PByQYb;Grk@2;?+g&Ay*~e0%`3-#s}A^9L+AFtA|3))3g70<0(BYN=el z4mv)OZZBsEh__MH{_%Q5b}p!kf|WZj@<V%%MdzB_+A_Y9i1iD;qCP3Gs*LC94jOLS=}0niAqg~6Ylh{0 zPv_z7GhSlo~}jO*Ccj+&ND?jZV4EW}1&5cK2S$azG!uP`_i*MFox_6Q9HR?wQSD4|uB- z6Z6QZ2C>Y4$+n)!LlZ($R@N-f@nXb2b=oquI?&a{#T(2#Ol^Eqzy|2`Q^G*Xc%?k@UT|UfBs7HUAah=$TB< zVvHdYK9%mLvzC=F3|<>>tP;Ej`Q79sq}vk`CZa=qLY9W)I$k>mK}sMJ1>PWtT6fw67U#y(w&lBu0M;HRa&mUo zx3ruE0kZLO{aT1XNgvwUgl|@*KT8bz6y-E|HkoQYz?YDsq^1K~R07&XM*XWS#<*xI zIEOyWkJM%{ntLAXoC2Y^Z<-(QLi5#*E&D(5_4O5%w6|{r`+M8X;oZA;>w3`+kyKW0 zAa)XxiSCD+xRgLcM$kcs=5pm~HLta$+LIfTd_rAY8&f?S?wzFB3bi!n z5|UG19z``SwRP#q65I^r8C`S+vKD&2cf7K~8O@>J%buYC$oBg(GaP&1ZB|#BdsnVB zUmMFz);2V(Hu1UKLbX~Qr0nlZj3;tpw@O<94H(U1Bl*$VdUqUOFJ7b|J5C;WKZwuh2|SFk%t!%a*G64`MVB518~8-9v?isZ>qMy}`%w argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument("--base-sim-root", type=Path, required=True) + parser.add_argument("--output-root", type=Path, required=True) + parser.add_argument("--frontier-source", type=Path, required=True) + parser.add_argument("--python-deps", type=Path, required=True) + parser.add_argument("--config", action="append", choices=CONFIGS) + parser.add_argument("--timeout-seconds", type=float, default=1800) + parser.add_argument("--resume", action="store_true") + parser.add_argument("--op-trace", action="store_true") + return parser.parse_args() + + +def run_cell( + *, + config: str, + base_sim_root: Path, + output_root: Path, + frontier_source: Path, + python_deps: Path, + timeout_seconds: float, + resume: bool, + op_trace: bool, +) -> dict[str, Any]: + base_run = base_sim_root / "runs" / config / CONFIGS[config] + base_command_path = base_run / "command.json" + base_result_path = base_run / "result.json" + if not base_command_path.is_file() or not base_result_path.is_file(): + raise FileNotFoundError(f"frozen inputs missing under {base_run}") + base_command = json.loads(base_command_path.read_text()) + base_result = json.loads(base_result_path.read_text()) + if base_result.get("status") != "completed": + raise ValueError(f"frozen result is not completed: {base_result_path}") + + run_root = output_root / config + result_path = run_root / "result.json" + if resume and result_path.is_file(): + previous = json.loads(result_path.read_text()) + if ( + previous.get("status") == "PASS" + and previous.get("inputs", {}).get("base_command_sha256") + == BASE.sha256_file(base_command_path) + and previous.get("inputs", {}).get("base_result_sha256") + == BASE.sha256_file(base_result_path) + and bool(previous.get("op_trace_enabled")) == op_trace + ): + return previous + if run_root.exists() and any(run_root.iterdir()): + raise FileExistsError(f"refusing non-empty output: {run_root}") + run_root.mkdir(parents=True, exist_ok=True) + + command = BASE.transform_command( + base_command, + metrics_root=run_root / "frontier_metrics", + run_id=f"qwen30_fixed_pd_state_{config}", + op_trace=op_trace, + ) + BASE.atomic_json(run_root / "command.json", command) + inputs = { + "base_run": str(base_run.resolve()), + "base_command_sha256": BASE.sha256_file(base_command_path), + "base_result_sha256": BASE.sha256_file(base_result_path), + "base_request_metrics_sha256": base_result["request_metrics_sha256"], + } + manifest = { + "schema": "qwen30-fixed-pd-state-replay-v1", + "config": config, + "inputs": inputs, + "command_sha256": BASE.sha256_file(run_root / "command.json"), + "frontier_git_head": subprocess.check_output( + ["git", "-C", str(frontier_source), "rev-parse", "HEAD"], text=True + ).strip(), + "op_trace_enabled": op_trace, + "controlled_changes": [ + "metrics output directory", + "metrics run id", + "full Frontier stage/batch ledger enabled", + "individual batch metrics enabled", + ] + + (["op-level tracing enabled"] if op_trace else []), + } + BASE.atomic_json(run_root / "run_manifest.json", manifest) + + started = time.monotonic() + with (run_root / "stdout.log").open("w") as stdout, ( + run_root / "stderr.log" + ).open("w") as stderr: + try: + completed = subprocess.run( + command, + cwd=frontier_source, + env=BASE.environment(frontier_source, python_deps), + stdout=stdout, + stderr=stderr, + timeout=timeout_seconds, + check=False, + ) + returncode = int(completed.returncode) + except subprocess.TimeoutExpired: + returncode = 124 + elapsed_seconds = time.monotonic() - started + if returncode != 0: + failure = { + "status": "STOP", + "config": config, + "returncode": returncode, + "elapsed_seconds": elapsed_seconds, + } + BASE.atomic_json(run_root / "failure.json", failure) + raise RuntimeError(f"state replay failed: {failure}") + + fallback_evidence = Q30.collective_fallback_evidence(run_root) + if fallback_evidence: + raise RuntimeError(f"collective-profile fallback detected: {fallback_evidence}") + paths = BASE.find_state_metrics(run_root) + request_metrics_sha256 = BASE.sha256_file(paths["requests"]) + scorer_equivalent = request_metrics_sha256 == base_result["request_metrics_sha256"] + if not scorer_equivalent: + raise RuntimeError( + f"observation changed scorer input for {config}: " + f"{request_metrics_sha256} != {base_result['request_metrics_sha256']}" + ) + state = BASE.summarize_frontier( + system_metrics_path=paths["system"], + request_metrics_path=paths["requests"], + batch_metrics_path=paths["batches"], + ledger_path=paths["ledger"], + ) + BASE.atomic_json(run_root / "common-state.json", state) + if op_trace: + matches = sorted(run_root.glob("frontier_metrics/**/op_traces.jsonl")) + if len(matches) != 1: + raise ValueError(f"expected one op trace, found {len(matches)}") + paths["op_trace"] = matches[0] + result = { + "schema": "qwen30-fixed-pd-state-replay-result-v1", + "status": "PASS", + "config": config, + "elapsed_seconds": elapsed_seconds, + "returncode": returncode, + "inputs": inputs, + "scorer_equivalence": { + "request_metrics_byte_identical": scorer_equivalent, + "request_metrics_sha256": request_metrics_sha256, + "base_metrics": base_result["metrics"], + }, + "state_artifacts": { + name: {"path": str(path.resolve()), "sha256": BASE.sha256_file(path)} + for name, path in paths.items() + }, + "common_state": state, + "collective_fallback_evidence": fallback_evidence, + "op_trace_enabled": op_trace, + } + BASE.atomic_json(result_path, result) + return result + + +def main() -> None: + args = parse_args() + for name in ("base_sim_root", "output_root", "frontier_source", "python_deps"): + setattr(args, name, getattr(args, name).resolve()) + results = [] + for config in tuple(args.config or CONFIGS): + result = run_cell( + config=config, + base_sim_root=args.base_sim_root, + output_root=args.output_root, + frontier_source=args.frontier_source, + python_deps=args.python_deps, + timeout_seconds=args.timeout_seconds, + resume=args.resume, + op_trace=args.op_trace, + ) + results.append(result) + print(json.dumps({"config": config, "status": result["status"]}), flush=True) + BASE.atomic_json( + args.output_root / "state_replay.json", + { + "schema": "qwen30-fixed-pd-state-replay-aggregate-v1", + "status": "PASS", + "results": results, + }, + ) + + +if __name__ == "__main__": + main()