From 6fd683453097fb48f8ab9d67e894cc51ed6abb98 Mon Sep 17 00:00:00 2001 From: Sivachandran Paramasivam Date: Thu, 15 Aug 2024 10:26:17 +0530 Subject: [PATCH 1/2] Add test profile data with char array string --- parser/testdata/dd-trace-java.jfr.gz | Bin 0 -> 115152 bytes ...s__count delay__nanoseconds_expected.txt.gz | Bin 0 -> 354 bytes ...elay__nanoseconds_expected_collapsed.txt.gz | Bin 0 -> 208 bytes ...oc_in_new_tlab_bytes__bytes_expected.txt.gz | Bin 0 -> 3826 bytes ...tlab_bytes__bytes_expected_collapsed.txt.gz | Bin 0 -> 3186 bytes ...c_outside_tlab_bytes__bytes_expected.txt.gz | Bin 0 -> 1762 bytes ...tlab_bytes__bytes_expected_collapsed.txt.gz | Bin 0 -> 1253 bytes ...rocess_cpu_cpu__nanoseconds_expected.txt.gz | Bin 0 -> 1696 bytes ..._cpu__nanoseconds_expected_collapsed.txt.gz | Bin 0 -> 1191 bytes pprof/parser_test.go | 1 + 10 files changed, 1 insertion(+) create mode 100644 parser/testdata/dd-trace-java.jfr.gz create mode 100644 parser/testdata/dd-trace-java_0_block_contentions__count delay__nanoseconds_expected.txt.gz create mode 100644 parser/testdata/dd-trace-java_0_block_contentions__count delay__nanoseconds_expected_collapsed.txt.gz create mode 100644 parser/testdata/dd-trace-java_1_memory_alloc_in_new_tlab_objects__count alloc_in_new_tlab_bytes__bytes_expected.txt.gz create mode 100644 parser/testdata/dd-trace-java_1_memory_alloc_in_new_tlab_objects__count alloc_in_new_tlab_bytes__bytes_expected_collapsed.txt.gz create mode 100644 parser/testdata/dd-trace-java_2_memory_alloc_outside_tlab_objects__count alloc_outside_tlab_bytes__bytes_expected.txt.gz create mode 100644 parser/testdata/dd-trace-java_2_memory_alloc_outside_tlab_objects__count alloc_outside_tlab_bytes__bytes_expected_collapsed.txt.gz create mode 100644 parser/testdata/dd-trace-java_3_process_cpu_cpu__nanoseconds_expected.txt.gz create mode 100644 parser/testdata/dd-trace-java_3_process_cpu_cpu__nanoseconds_expected_collapsed.txt.gz diff --git a/parser/testdata/dd-trace-java.jfr.gz b/parser/testdata/dd-trace-java.jfr.gz new file mode 100644 index 0000000000000000000000000000000000000000..1e55bad607b805f4293d028ab61972cc8e6738d1 GIT binary patch literal 115152 zcmV(#K;*w4iwFqyhP`G017u-zVPtP-EoxzQVJ&cSZ)Rz1WpXZRW^w?0nhjJ`<+{g* z0nEsbmG*T`AG^BeUcDDa29cwzyY31GP`Zo|1NO1*THVde3+&jl_uM^u5YAoe-qEPc zNQsI#h=@SSL8Pw7ugHwd@3hPijr<@(BQ!8FCG*&Q-jCUPz`b!T8Q%T>z0dnR&-=U| z!%Rk2uEk=t(0|cS@#HnKxS700aryUt|DSK(d)oorvOc_L7{A)CANZsi|5B296u(5g z6%1NFwKk4c4Gu>?GBA1Vy!fi+)2=NET8>!j+gJQB936RIwhu{9r2RXWlo*#PsGJKa zrAXlxIV0;L%p`7x-ENDw*^~Zd?o6&wRya|R0%dW$*OQdUJ&~IpuE%l(0YOwbS>m1u zh@3r%ONdWM;1Xsh&zYM%JDw{j=N^?|oaa3yk8+CzwU{e%yScfx*)}_n_IdHM?RIWP zF7j{-c$Genn>{n~fw<@SQl2kDlA7%CkVYJ7*`DVWOXO64vCSv)Dmdr0rTBcW)~!EP zoe=RZME-?!pzTc@d1FMj!n;MpWnu3_(J4qoydS|xNihM5_o8GfC)wuM;^Pt%<6sb^ z2yX7N#KiweNU+5xf>V(z^Q?argH)Mq8=Z z=Jz4DP$;;0Rgfhcb}{nNCqUyC35puvMb62)ivzv{V{NpW1IopIc!jZ5~t*D2lv=CG$gS^DNQt_6H6oN<^zrTzC;~t3mP{VQFG-2X zVK3U_jl}Gg0p>F{TP#D6(~bPtO#>VZOP*Wg{eJ4fA8pCc`(-H(3Og}=cKmEyf;SiC zyTnGv#j%MMq(V7znpY@;0{6-u6wCRGc}0+lb`rdIh~N(x&wVM9JhBpb7pr53toUSw zNOZ8#Vbc3Sv)**>t#ss5sAFzfc}h{-4|S9N6UC`~jU8$Y7@OJhcf(g!(tN+(PP*4-M~o(=a@!|Vf5p_q_KP}Vu|C+%^p(c?=~wnsy~Y0CkszhTmUkm)tX`g;ur zsa|WWw;g5rUyQ5i%FCZpz0S0nD&N-;BNIbIOkZVc;_{k98e-&SS2xq^jrFa|4^w@$ zv3}_zrZ*TDe8W|yuerJ4sf8U|KGO)pC3BJKjb;{()PJrKMi%OiFnz6=g<$ZAMi^P> z-pceQGYjRNrXqVD0-%?=ac2nl3TmU6Tj~*7Z=} zJ!20#dzt=!#`?jP$Em)_q|nawQvGjclYFi1ltvg?SkcGy&1M!lR-V=fBMa^On7+l# zLhDtXF!W)=8LDr+*#b>;W3Nt(OEfi6@me1Rwwalz{y--TO)MK>z;?4Zj;{SiBaC*( zO{o`^{3(-m4RaC)V;GsD8jSncH;2XaUxJ&-8<)*OR`thcv{< zMDR1Fe`;!C*L58+GEvhpO!Y(NZ(#;?#K^?;)t9J#*ucaZdQbXXM<%%gs$5t&CRM>7 zHQ8uw?AXHe&rHt73rzofy#5Z|X4Z~S{Rj;2Ly91KqGAeAksvvW15yc_@h^19$Vl6Z zKT-XQ35@h@)*+)@b)9GWQQgR7BzcGlTD%wEx~w7NikCXFbsq!1oWPNTKkJZDG(+ou zrh2!b5$ei`6FOx0R_gk)D-<|p5Dq)jx9EtGBmLhoy=Q`GdTXv~kdcv&{Y*bTfsyX3 zI%Kq@*R_pO{e*7h7TCh|I=$Yb6JssVGH+Y{3)R2UErgvz)!TI0sQZaQruQ0l-(Pc0 zlgD;%AbQIIrhlz>kDL?gee!2rHHyA^-LF(XX%_vZZk;figr1kLQ~gxfB%o5Hl!ukn zrfoW8Slt5y3^+Z3mAcx$YmlLpE2kK6#?T6T554k+1{np^_zBbdCNR?UlMWe8>aLF8 zsQyjZq|Vcl+Ido!4SlEz4if$B1nH>xNQcIygE}$zBLlt-b0P^Ui}oLCSfa^>>8v}- zfc^=*7!5AfAj93FXEOuNnQnd^XLZET#*OtaP~g0&joKa^8E0e1YeCpT23~&)|C##n zOi4u|H$w`D;!JMFg1niW%axA*C*U8m;RpSho@levmjwLxbi|R4Nr{mIQ&JUP@+8v- zGjeAVc}AXdCMWzU&K^I<9-q%Sa`L&yIlFCc{QL!fj^!4Szt1Og^N|z~Bt&|~Wbj@= zEKlbC6@rlD#nQiVGvdpVX2x>(Z|35-=W`JVE*1HFf>e~u#h1Bb(#upESICUSm&M0& z51#@(6fblCaXTo)BXxs;USD0Tpq1)ZFZ(xB@{n${U!=%E-!hEf{Nt z@~|wrXi(!n5e_fibg7t^+|YyO59$?p@K(U7VTl_T z00|hDlZd=XQsMc8@ni)2VBQ%JRlz5g$3f9+#cWSXjpfSna&ozRpNCiRhl`S`$WXR9 zNGbHn5}6zti-Y&^1%fE3;7^VsyJ6wPxdDfH-~W>EXbJU zf*;{#I6vKyfb^8oIlv#MJ9$a)1w`@zD{NL-&pH<7f!EKt94T2@v*0y1JrD23$c?&(B!*zg`2+Et6@hY87sAx6)QiJ<(!l>mqI4MqBNxacl0Bm83O9T7Cb0I~7M8 z2>LtPIR(%)wFdeG<9o$}4v&PEN2m9CI2dyuioBRkh(6F93GwC0yN%Jyk zwpN{~asH74eXYc~$bY2G?SIA1uC#xm170J|W&0=1pzYIbxINH)`%F6C&JD!-eZNiq zXBu2hI|YwicTVHf~+}>Y9gx zjTI;1W$$f!Z?gou*Uz(1sJa^3MTq7MA_je zOKnu};Okb)CV&R5ZJihj2J0h&!C+ZseZTeEkB5`-|6nj`Qm8NW0_W?3wfhhm8-JMz z`+w0|eVROoz<0PGtf%`|;rrLL9A264NKq8N+~wx!JGBH$D?vURCCKy?SbL?2Z6LBj zj%)lqfT@<%guD30YRui9o9E0$DqKe~5N%lx;*j;|#x+>HXTCib6=EA{3NJ`_xhbW* zIB*NYDmw{w?|eJ#XKp}Yo4`9IJrewrqnin~`5?ijJ?oG~5s^J1WXfWp$hyM}fy;#o z$DZK!hmaV{T7vW+BgmZ)I~@2(obLz?Ln0co*7XwLcI=BLTBE6}BVV(K9C^II1m9!G zH6|UlVFCH~M_4uxY;a{G#{S^sl@ixtgnTLDV!qt(kiBsDsw78ImUVy*Tl-e8B^I*_ zo`;xHM7SE_*fXWnautD7HH7MKBh;jPKZ1L36p01;?jld`bOroAxYgwh$2{wSFTYAA6MW8^5pOyeAGWBc+}!xgypY<8u&Y*?oSo)ms4Q8 z5}ssxakCEt%geYY5S>iV#yBnRx025zz${ zMXG7o+S5Sfd#OnBmLrRT8{X8(f*V;a9RxerM6d^Q6u5-B_(J5vw=uoMiOqJaWg9J( zcL@Ek8I5C*1FG&SO;Y;@G)c@+xWYUoE22j;5L!nb3-x_zR}-ChxFoV^NBF{;C3poj z7@TZrA=udi1e=a8)H&p!{aII1Cm8dIZZRmSrYgw?h`lBox>6BlfX$V31eFe5M z2998hqUWOV(D?F;19_Z{+&*MHGI`Sy$@Zm@OHFiNg0}%_h+gsV1Su9)U3DXL3F5tn zFXdg@AGOoq4PG%+7u{I4UZ#U-RmzH+Y!_7vL+QUlr)Z%Usl~E~ZpiptgZhbKYx&Jl z<`EW=k|h_hJsrlPferk^CK`EjLf?@KRSeV$b?E4?v{sxv4&T8;;5n)?ep{%!LAM1G z7FnmH)IH4K%fD&ml1|?<(6tO%4q6%0yQDc(cCJ7{3I1B821T*Led&c}=1f_pgzw&@ zD5tU%4^|NMUQl!4a;*5_oDahy*mCN8sX63Kh74;h4DnbR39{=If=s273*PyN4tO_z zgx(Q`t*x&T{dUa{?BruC7u}WA$qWVkm#*%yvKU%dXffm|Fk`%kY06~Qti)LjxxQbABJu7<) zgmDB-ez1WMcZ6-8Ix z@IwIO+ld<{*#O@kIv+<`sPmd_Si!zAl|HhL&R>{8jfrB+Xe(uCao{ouAjw^xi$|Q! zl2E;YCV?`LYk4ud2hk!v(oQ`I)A7QAq=U0`OKR+(CPLG;5PTskZZg{d`!>;eb;*S) z+)=Y~^XXabbm90?;WkTsIkAlzB8&SO1pB~Z{MQ`6m92(~_vvaNdM>^T72#c$rtEqr zb(D#I{9W-7LCs&@5oX?1%zK#mP%0XB()p$rS4z<^=m-^EM89*9^JaqW^dC2e-Aa&R zW~pj7^%bvmyjhlOmsgJEv}+F?E8C~aS+eZYfIHZNYCKFARH`8HO1W#X0Q;r3Qlgoa zp3kTimn!>6_4^bAKT}i-3%TV8TLSoi_G=BV5r@Ky7oqOuksoyzO_d4xp7OP(*Z}(+Vy>9Gy2~84` zCL6`K(%)M4_l&ohd)6s6N4}G4j7kHhW&x5bMFypmJlUr*NTid+JkhYstpKabG zwCyI}oNwM_XxmLPes11m*fpB`+Puj_Z8vGCZ{B2h+f6oHY~EzVH8ggqd6SW?HOZA- z&TsM_a@AB0Zmo^H{ncK%%BWo723v1qW;^k&-MUH%9Gh^VFPSYbJ!J!kkQn`*3452h zBNp8MojD1jtd%O;DjCI0e{0f=wUaXS_AdHJ;*%obhx~lsrt+ zdW4#?_1DEn48bo<51To7{97!%d}hY%>2JT+(9IdzBB!_F z@Xsa76DsxDREtEhjnV}Ylf^ag6WCoNE+rOP)I>G%bh`MIWDJgJml(TBj1p38#yeFR zIXBHMUT9PC5YNh!5}WRpFSMC_mE}CimiTIxG#Yr!q!(Hk7!5~;Ry&tTygi(}Ez5}@ zLs=Nh8$CR-Hqq;ZWmc2iG^mZPT*X zW`j;yDXBM-Kr1a7(a@tGgwynqE4$qb8)(g_9o}oqp zromYVfHkx(70w7`4xy;-hGJ!1ufbpQJp%3TDWqMT=owNFUhDh>t>sV>=}3EE6D`5ha!ckSF16;Fr*R z79^R6g{vm>S0Wh_PfLOx(UNbdBdCJ&C6ty9x&-%u`%K& z&?1qt5B?+|XTx52@m>-~>-WMUPQ;PxyD7a{k^I9{_Ke-`(E>iQ{}y31mMN9+qz=of z!?Fkio3dDGd?nbpK!~RW<*)d*Rek28jTuA0+T` zQfY1(oZL1QY&!ABbGYIfK_L`k##@u^iXKC1{u9wH7Mr!Wb#*4TfYwpVDjbNwI{TA`j z9D2Wueq~y3h@}m~-@hCEWyA1U97NF?->-ymsK18cf1d?&@n@{SLnO^Cfc{;`JepAe zOL;<~7!k*HK@pIs0_JC`KbL&~Ga>s)h~ZwvrG~^Wz!p*ZNx4=)x+WI#xB%vfVXQ3}k%U~N1wqTZ1N@5?nX;i5#9^5um{GDKlSAl_^HgFg1rFsdF}=(Rbm9#`M%mGS zACk;p+tZ&2OzZ?tpCl6T5CBesd9V}$O`9S>Nkq>=B zQ13k1+V$w+N`gE61WHd zKq8r&f-DV|_X5#M>$73fqb#+a1DjzWY8;8b-A7`WgJ0Z65SN+bzm~t*{+%GLVYFoivI)(+7W) zy+{K0^sV(GTMfjNiZ*=_CPM|y9C1oNK(_68vzG_h_B=(r3ozaj#Y;92A1nIW7rmI5 zGR@}Xk;mv&ANi7j1mvJ%7V`aoDd;!&FHcm^VUcJkt&D}41eYY1>tFy|l0l&iWN$bF z6`*%9pEVLcN%k~zmnY zk(F_vB~ozH*Qj=IQ?6vE4)9(#ke%wBm}QGd0+%vDzV73Tqa$&ok0Nz$$n%~m^(8$C zNut%+Fnkt~@cs1Q-xeq2%ZHEf|<%s@HDRb;vCqA z=q;KNmALNX8Bqw6Wz%?xa-C!vH=GGdFcQlabT&))d*EX%DL)XFVVT8o@-qH1B#MJ9 zMkP4cajm6C`*PzQWnDFB?eeDH%L6v`;v0}gMdLmovUn}!3>vPH?4T9fA&MWuPNfUs zw6=`J;kn!48~_saE8y)QW-5iSi}OOGsr4Ve~K8_^O z4TUg8LEWP^sHVt67}rI!c+Ta-kj{a=t;Tk1aYLVv5GjY(A-F?`G?69t5Vrs7zl4KJ zj5=@5;~}7%O`x|Jb-bUBMH8d0^dASmqjaTBBqo-* zu=5W~;@Pwzo+MtOkr<+B?Z=QO=$IS$7(Uhq5^2dE7rWiql3gSna!YBV2sEB)yu6)c zg$Orw(yE@@K8!x*YJn9TB3_L{)RSP3k?8YiuI!B?rF1TdHZ^b zHV|zKa7&uCvBTS#wI47bW$Wrvj{r}O=GPgC=Bo66xp^^+1{=-ql>%ejhlRAF*K!CX zyG8N8TdctCAbi7RszEeSZTS;Rp)^OqORzH+K)jb)rCWr{w#3H_<)GfwD< zC5_gZ_6Rzxtuqx0ymXrF5C$|o%|=h>bS+s(UeHa%s&v0~;3XY{&-QEW7+mEH(Hc=c z0AVn~gAYK?8i*;9+KMpn^g*AD#5>QT#_TEZ4ZIGXkU*a+63cB2Cr=oNZXK=ZL-hpz zt4n}#7=&8^5_!OrWLk3+^7#I^Cm<2d&cbO`wbQzsef$ff8Oc{~68zfds^bjA|2pE@ zj#5UxNc`Cxg=@8*G)L!*#1u`lQ=kBzlo!FQS3GMGT-GZ$Bu31+b3vjh5dKsoX6GHg z7@Cm=*16>G=vWLp z%>lBf_%ZOMjt3;)io}>jZRSNj1TD*EJ}-=b6f9Th4d@N>6+F-z>4Kv&ZNXl$k3tZ0 z8@6J2;}7iQZ5O;5DP`n#!ANjt91vHprgi4=92~~ySz{4V6AqM)yH`$~mBZs5mO1;6 zNKoRcph|dxtTvLs_TF-n-1$QD)18O97c|ad6q_P|XB`y55H>Q#Dx3WUIequ3WuJ$n z?-q(gA4#hM>o^|uRua6M*Wh;J$cGnvi z{+xX#0&L0Ied2HQG-tO0S3o;1h^ahfr_uc+;x2JkGYnck@bOd~9=#47s`;Xmk%TO# zrK2Kw=5@9oe+_@TT@=`c&Qjh$y*w)1Ifile zO**laONzdyr?BDS*=oR!d&iE{iM)#ku3x-TAf8l*#3(E4HPPs%rEK)TY3Z!Gc zPB+^E1Mz8g y4;k?o1@jG!{BxC%$7(-M$zZPIGj`>A^H++ZXp#VWfE5Z$+m5YY< zKbwm4n~ad4X)1z2gc^;m8AOoqz*bA8hv0#qQG-qM5>Z%I3I<4L0%rMjQ*2|ZS~9G{ zEi;Bz=D;UF$oPSdndOPJ3#5q0jr?lo2+%o_lC*u?(a}T558fstVV zMLOT0l15eZ1V4(TdlZc?fS%HG7bw@qP#={iVG8>X%jcMxxvm>T(3%8z&I?(veCjb0 z%Z_$7LMVx5#A?u>o@RDP_cGpu6^!1Us!9^ox$IvdTfHqy%p68Sr9v8QS@F)6Yf{&{|+5dA(&8FVAp# zKcb{Dw0JRG=sN~Jl5V-01sO)JwmjrX$LndhZOYg3i0fJ&i}BC-CBcmc`J2#JMbJ`H zgFz3a)>6~YhQTnG+J+wXGQbsD(Ot3=_Lg{Uk!-;4lQJ6JOCo*9Qd-bMBDF+HE|)>S z4ofbtGmrqu2NZ{#22a1Ke88a67f96G5`J?Y6ZRT#=a{hRG2v2?csGT4F<7PvW|n+6 zZ2}IKVwnvZ>F(?+58U|O*_@lWQQ0}~*;oxk6G^MPozoF^1YV3#p%)z-giRPfvbC*k<&u+Bb^vIEkPr=uA`?^^PfFn zTh27dx8CaEQ4hK`ctKBsTl)Bdjosu|o& zd+)y2(|qslo6xw5_FJtdUNMv=z&!3n@*#ugnY@*g5&J=|M|%+abw)*Bh~$3hTVUi? zeG4p-U1zp&EUru02UDdJ$GxzG6Xko&(^dl8`S(KNor}$_-9=d|IzLpUo~i8+Nk9X- z%INMoaJtM)bd5>89#Keo?|FIwlJWOuL?0>aC5|6~X(uBKCME(dZ(NSw!e5nLWuQ8{ zN|BLx&!^>Np}?r1*^`uBpnzw=9DZ=Gj6{3FZ-8P>*d0WS7=A~9b5 zp)vU?({neTtb0R2^gZfA+2fDym~m-|D64?(4p9kv1`EGz*#p&0=0MlXw!7@nvG1d1p@Eydm07 zNR;LQI(aki&0O|owOM6pRuvEdTOcgTCYucc5(Gs=KqS~KBC8@IPSve$z$S1_6vcPK zIeNRk`s%N`f9>0Uf7UEB?nutg`Vx%ak2r~`_d>Uma3uL#nLSCbXlcVBoy3$kHiZ2SLbw~?p#QmLbuTH(pm-T(^l8DLi* z|9FJ=+w!AfC(n#$cI@u#qf^-ISSme{wX~^vd8S=NE$13hIWi8L-u;yQkjD2yjt^T zyJ0!_WjnntlVitm67waJrk0I6A7dAKT)~EsRk9Gg;^z*pp^cQ*HcsTZFSs6%SV68zJbq9Pj1(F3baL$ypc&o(JwsKs;~+64Vc) zAMzQVGTL=S$60$rru(u1v6PYMSplfJ*hlo|9E! zwOtkK+TIP{O;(!9CDd$t-0Z~6*A3u8=kJ{YJ0>UT@jqho3~l^WJ?#DIcQYp~4HXjI z**d%cH^mo>lEu^}lO6uBOHjghVm5@L}&QKLfVxgT-UNS~TuyfG4Hn zK?x<|8uBoVA_sgm4LuL%fKL_?DSrGrypiMYXkb3>XSt{1j(-%5k0ffcKpmuh?)Fcc zgp&SJBN%_j#xm+9ltjtYz7&pVjwo)=#Vdgudfo*P_%RuI;NL^B2l`#rMWSI}hR_kP7baJ#j!a0q~4;4rZ%`U zB?~u0s)ET`Sj(G<23X}U-32dG>>W;{$90GEw{O%uuDe5#dUI*v^Z)!5TeLz6wP12g z(m%2FD|-A50&2Vsf))`qOEF?1*$p+2l{~Soq2vuunBADlc@4bh(95-712=iEp;Cr^ z91!ryg=;sQ+mG$Wbq{J!9(q|}lE?L4l3$vZ$-I%Q|J378H1+H5?gmV-BjJJudfWen z-GX2J+OODxzagRK;E~kH=^sqRkyIm1%@|eE<4|4iHJS|q(bI7np85EG5;l*m-KU)mAQPEfM;qVFtV2Ilw0hwj$^6iUPC(S3?21L z^Sv_pJ{tk=^$~6i%XO;KbLZ%||0v&UX(h9^HkVrncybFsWZIp*uj9@8V9y@;PBRS?pL$gOtD zq}y%GtZZJ{Vs2$^qi3d)L^{~&n8sVTd@lV`w%2lxnT<^P`~5O2EAw5l(dn?*w+DaP z7zfM0uMf8LqwjahEZHP)H$#DC(l2oM&&>Clqo~%Kpg+NEnVw_)8c|UqDK__L| zh?I}bt!?DeFJzW-D;u2{-kT;Mi4Bobs}HfnFvNEA|9&u9R4s83S3gHx5YfkS8*5AS zPp<+(XgsASh(EH}WhpneKn$XEqRoLOJz>rV`@ToYFthrLPA@Vmq!zh_40V;5nRU=f z$DC&=v)cV9*?t)k_9sg-D>DnZ`7QyfS4T*kMS9}&Z79F@vpKZ$JAJ(IEGeo>PnxrJ z%NNp5uy*$%fouU07|AVV7T@mr4n(r#?qp{jnPx>vKSbL3M!QH_B@+n;B`n#&O`#(%{_sQmuF@SAX8X;|_n3W+vsh+kjgnw& zfx=mv?UqT+Eu=g5Sy`d*Qklhmb1S(8PAD2KFqHjk-es+ICQ&P52 zoqtkHGlsrhur?<1TAr}8UoD>YGrmqmJ)RoYcRKQoc)-_{jh^r|ZyQJa+tSjg=b~P-O5KpH( zmP!*BlaF1SrV*-V0d}SRZ94IcDP*ZLh)Z*Zbz~zo^PgWN1Vt75%KTNt>2v`*wZC6Y7j;wmsfSdFSF6TXhJ;QYgx|?M3(y%Hmb~3ri2_>$EJk0kvL=Pu~V^Y z6E5%#yh@iV$jRg+r+&rcr2G9FE-BY}OiU`{V=P=_6L^=3YWsb+i zPGS3*B)O@xSg=<9wYAJ@zuDKQp|<(UE0*S#GSq#^Mt-2a47V#*udEkH)^FVK>iV}{ zHF>|IRKvN>dpCs}?}#>_uDaJOUZ!i))_>Gb`=E@6~=PqBz4P+B9PBM_<0_IBO_!i_nSR*{sMMcS;w z6c2=X`u)Sk(~`8c*?dz14^&knI3f0vjkyvn|Fj-fdLH!|5SD4yZp=e)o*s6MyMth@ zV-;}(TZ%z2%O`&O@$aDqKxaw2_2H4liIX;^NZtPMcFwSYAX}>5`kj`I$ z6I;Sd)?9P%6q?=>*$R~mAebuqN2MX=pXnT6h$&-_M;KyGv2`(qSU`7WoFUdw>#a7# z@(-pbA(r5yg3)t?Nn%NfxQ4MG=`+jMXjA#5 zqz!6X4`_tGuJ`V&UOFJ^=bI|GQHn4-Tty;DS@m&4RV1ifQ?!yLNKs+eGl+E${ZaI`N1V@EoqoX zLM4{DAWU(-Bt|e!D6MTZO74T9Qq-3a*6VpYVZ2c8g`q`(PZMB81q2brg9xto*1vkhU3VvJ258Sn3&`-yqd<;F<9#l zr!eM6pBD_L<-*l0J@5VMl|=mmp}80fMVNvgzFL>)dj+q<@*m1;@rmfVKcgGtTi)0Hjfif<6A+1YK3|9dZYy24uC5@JrSW}9zALz7o z!zoFOOX&*Hy_%k|tHqcX-NFx;O=z0iS9=U!H}q`Rm?-RWZF>=xIXcOa+5>uQINB6d zM6Y4klqz+vVI10`?B0=ABgyNiF6q@JuVFEvMV&Z@A=PLNDDKtu8fxA@@#dIlyQ6LU z46%w+UVVld9jXcI8_6}2l%c!?jN!^r4hW=mRqG*zu8B`RnTVlm1XY917j?@<4YVGV>{uftg6=(^GOLqCG@$XgKF1;-qWkt%eQ?XOajvOHUb z#UXck*BZNs&q)p|oyzA7_f?&T0&jhz%kW!;_I}XVg$_1aqn)SIp7O{*7+iCn_Jz{4 zb-MC+(YxmmTyv4F&FgTJp1}*qb?mt*^l$d`0@Li7j1~~_q5x2xMZE4+q|L8YCi~V4 z%iMx}XRl`4{BtvbqK+9E;v{#UN4@-NTQM6u3DnV6i7?mpC_i1Ga)Uq)A!*sRkOb0? zwpyFh5f&cvKvKN-c+ay-zsiC}CO)N7^Eb?Gn6TzdJ{s z=0w~J_J)x`_c$VLv~%@=17-aa(^6dT-}Zqj#&O~|P4RbY_JvyQz{Jv`esZfsBRCaD z35n@;$@PcD*E#eS)MlqX2;+imCr;a~7RS&4m{!CgO{*Mo3xu&{9J$c!dG}5r%a^!-l z{JuvR40UpzIMPlh#b6jLb9S1TR_@`|8V+lsIBHgRT|jjN)ZAnyrWLn@7DmDV1()8M zqLUB7=5!@T={=eqc^KwL-RCHl+5+Vf7?a3R-Ue=#4jq9^4Ts(|*_Ya*U`Yqpn?^O( zL_<{@M>7~2cS92cYx}}EB2D&7Jqib+xQgX%&m*zWH9D~het`kS9PzTz^ z!J!Ziy(LtI+>C?TVh+7|H^yFxhsik{(!zt2&n7^piyY-GrY}4FIIN4}C`hhZnrJm_ zcjRa-Yoqi1PQd1CejI()k*oHJ@Iop_JuSCw>`H_QjT|j`)_HAx66`q55vk^qZCNtZ zByrI4?*?Z40Ef3g&Xng!$RE#Uc}}Sj%VE<&?G~qr$AN>VZC?Nvk-18k%+nAgr2acdr#;n{O`N z`p&8y`R~0W{Tp7kt>x7Wwjq4+!ljFe@VLku$lY;qT;c7ZWd%b9!pjG*BW&~RmYR1~ zq#0MZwyap`42kgSc|>^KkCzd)dC|fkybk*wdJ^FQ zKh`3AM7VnJ3Uaq5Ul}W$2!wRxp?ToUM&g=1%%HqJUuTij+& z+oY2=$w?ZYB>m8&bEa`TJ!g7OKQ!*xKFLg$c9L|P_Ect(F$fSch{Zx|LI?pufB*pk zWU&d5F%}?W3|Ph(W6UBjn_2tZ?Uj(gPMibe_rK5c-22{p-~W9DQd4+JfF{ZahyU;h zj8}{F8Qi-+8j5`9-#*F1SDV&`*%=1Jqb0NT5+ zzyA8$1y>`E9`p~`!)prbZ-5fi9#HBx8eM|JL5>f-kCnbeX+GbR~U}t`U}jnK?UjW z#HzP1t%wg{p~ z>tgMh6grv>vp#q#gSoqe?&%ODw_sv-07pE zNxmDu`)G>S8)LYb;T$@e+TzmPM>Fct-hvm6{jqd3s`Zf3ke&c~K!v}PtfdtRoU0{@ zuF9B0xogj@vVpinPNP!Oo{cw)c3%~hcdjfY=<o#d3Qez7x`K3(KB z7pHQTi`D;(!>*hye`U9^EV%Oe(zwON3_6xOYlhv&(%NZX&E$6Okd0eN+el2HGc$H) zarc?A8G70^oVIzBu1VYdq+MsGePbqD%WaHl=xEkd#@*M%w5V;#=WN;RPO)sv?B4Tm zT~t)=K z?F{WX)}z|B=c&%Ls&dX}XDd*q+~clT+-MxE;^O42=d??ETyuX?qrQfltbagfd!Tgp z*;ch**{tOZb6rN#v(FrI&1CJZSw)IP@hk08ybp;M-??RvDz#Jha35Vw>vg<_Z2qQbBXus`Cw^mnpP2C4#6l|Y7UR+G z4fLnDC@E!GZ+s(gEMt=)xdT|vxIcO1!hLaMF5?AzYtxcAvXim)#+(z_#kV_h`hYJn zHs{}sT^2{qGxk~5l7ZKF-c)1(uQOKFYIMM|2+Hxx#n!-fb*IGve3rG_x~(o?1!I@G z-UFP>xYgLa2&`eex_!mGB91I(T$$BhzYsY+QIWh=rW9-(A zEw76s+xU7*sxuqn$acmal`#RhgK@vBB`uIQeC`}zCu3v7K=DSv{3SJ;FK&q=yIFgN z%+U?(;`6gT16u*(?^oZx0ep$I%Sz_&0{1eWXxrKZzQTA`9;4b8N4go0uE%S(1Lkwg zrPKotFiwh2GXr}VJIk^Mw*&UW`1RZ|;1T|Mv-4##&ObjJ7YpKn`RmE;X*2+j^W$~f zD}itG>pRll^6Kp0?;2y`&6I%kTt1(%4J>E*nzF{M zH14pP@nF%WSsgInmY&o$VBQ}+=g-b(aFInU-m`gj9oWEFpOqY&3FBdG%1ciMHZsQYp;yD3TKV~essErYJvU!H#&MTGvNLjZM@l?8F)Xr#s@M3*3;E~ z_Xcnct8Xlu-UP1Y*Jo++Y!>JDC&Sjgl&pa9CS}iF0Jbt#49pj11+0HY-g0>$J3H6v zfb01Ajak10T+g_scjIax=T}CJ0XHy~>tm*~0@lw|bw-=R`TcUM%4o>J>qGvGm!!D6 z0`U&%cK9J*`SV2FQZy+b$R{lfsEkznF{*=#-8!cAxC4Kazr`LER6~r_w((JYIF{C9(uOIx7&vx6+rL(^IY@tzMWoE zKHm?`HrgtYX4uj9mbOF3cf+#l*Kg}lWJI)>?|ZRi3TdTM^gaNVy;hZ89Fpx=GM4ZI zqS^8|6VlAmz>#a!E2aD(S$0pk(UgM>63s8W?&LD0or~BGKg?&Z4$YQ_Tz5=oeg%mA z5XrCDYKabMInuyvRlKp1Uq+T~yHisYJm>KhR;1m4?AQ2gc%^OOmzHH4wVrAaZ%Xfm z@qKrt3?l8a)OQ5+P2MZi@9wJw@eY(!+QUg;=}?>%v{p2|u+QoHC$_HF@q?rl&9fs& z%Z6Uw;>TlDxa#>!WaEi4)HU$yO|yHJ>XDWi5qReqiVQXo(|2Sm2ICt+oDE#X$%TZ* zkiBnjpJ)upUfZ-c@jI1fr&c(cLiT>vbWU@~I@Hf^GzX7dRlC(3GIHn0h&|-aQ95iF z`AC{=_cUJQHw(+QDN-CDUP0c%XPXS8j^O<_?6~0w*?$U+sU>v(xi?yZ_n*3dvn6Ez z*%mLg^2^Awry6tHg72IzQy$V1rRZMdXU)BU#H%~pYC_Y}&X=UwtqX1KAuHycQFWlj zkuDs0g3p#O4I(i=!sqW>H+Zchq;Gd&wln0eHPzj8@+E2ZXw8_DUmUjghusxjAZlTP zGV;TTHWb&2v;isB$h++Fr!H#ixyWn#x5K?pDaXUfn=9JW+6zJ5ig*yNq{DHMt|Lt~D+ZC3s~}&g!0GUEx4{k(QepYXU9T zip#xGN6R_N?4XXm4uPaxjP=6SoVe*H0*vBk(L~jYN^^!03gcRyPR4@091G-K^7W!wGsZ9h z!Tt)2;S}AK7{vloEXIP7>%AaUVnJ7p1&Q)Q5?@n;dEX&|J+&C60upVpVvMj$NONT! z=KZv@jCzcZQB*fzJU}tkhVdY+rE0|ZcrIQlqsVKXL~MTM+hzdQEg2a2NtK`GvIT@5pM4ffu1C@T|hxp4=H6$EcL zw~H0|VcTuPP4YswTg@Qtir;SNPYi`3-4xapBDdr zq#XR<#1|)^+Tnlu?$mdrX0^!Nf!Zh1zh6xw9*6$68**H)LdqeUa_qAcUw!-am;MnO z$<@uFNYx)bEb;|mk&V<& zE9YjR|I+8cDATZ=<}YWf*2I>(B1yB~Po1|kAhxgm7)0jw_QFQ=8HP47a{D)%X}um( z3#h%HLm;WQPb22&NiBt-+K)jXIga8S@}@JK;!8<~zg%t^(sXJGi0nAp znokDp*h7vZv-(UjJ&vZ=S@15$(d=0zZ6yAn+zRjq>$N@o!I@0*Lj9pDjkE+GNA_Yx zGwAF%8mht=_9Q)jsxgMs)|eWM;&5Wy6H#h}LhH}SiQ*{4Eb`uz5}U6#U?GeiPt!)V zzgoRWTZ&OkvC@Q*qsLRd8KZIdKRcdAZJ614 zWNO05&ZE_4j0Y($U&Q#hfE-7Lo??Us3+D?{8pSY&-dT=JY>7yhVML9}Cj_~|zym2J zwgl<;Kq|opQf^5pQg$3jaS2wb@(Gpny$cB+ee~9^Ptp@k5(C;h`r| zT*=SkY7ejzNi9o)t-9EiFO(b$K9PFcwxG@U7_>al{j{c?MD*ad;R~P^9JH!y?Jy;h&~s+#&P>eUZZ>potzH z0SY}l2Ky61867FWhsPgxQ1i=etAPGx{{*&1%+D6Bh>z!7|10VAo1fd60NTXZeh^<2 z&{OArI%qv7K_ZEo5@o8AQ+_Jx_9wbzNSlaz5=7>j6L)o>eew|3j7wN$5AppgEO-~! zw4N)ZjX!J;H>H!j&^_FmOIm_mb1f<=9dzcJQ>hrk4ifBAV+# zG8-LS!W=kncLCd2|(;YJhp`}evLF^+ty5y$Y^Iyl>T9JeI-L|3Y#p;DPp9A!rNr`$1%; zxmZ{Mn&%HeB8gEQ*9tQ^%Sp*)f8t;<(lnJ)5SeMZuHFXi_(M!n))vbiHT%a|@GhpA zzrY&F9?pmz@$X@~ckey?faHbl;puJC5^S0i=e9~gXQr8zfiX-%P??31J!&poz$g|I z8#xUlgFCNq$_~?1UTTyI3WI<5(eCj_?l4Uh z{{9QbU;Xsnf21(eY>G4BRoHvip)6vW-gFWhVwyENR^*3mxZx6#7rNovD`{6jrfKcO zxUidB$DI7ra5|c4mP0T0JJ>HG*uT+sNH%HVjpRm zmVpga_jeDEC8ntw*o0VbIK+Nm)0`YaDdR6g$|Fp3atuY*9C}zJF-`w89p?_AALxsi zWad(X65}cP!ts%5^S26vEMpHy*4APjw@OSwnkpJYipFNd7QUaB)Q^uzxLu} z5Os=|KxDS5SuO+3{eS<@*tG^ld8O%wjk-FyIJswLGqY2*soHuw_dP+LGmM1p{dihziyh)9s2Q7)~bB0(gGL{U+ZL4t@#;|=#c z=RN22cS)x9$IMjT_c^!s`kasH6AD%kVowmraOk~5Ol8# zT68@y-{`|}5cco-1cZFP;vR1$tnq|?xA^Qjn{V`C9!R^F1CTNBmxuCBFPsQl^kZPU zy!%Af)UyDDzq4$o(>0tw2D04WliB|5M>gBxkwy^uJ^~!h*0ufd=FnAA932+w zNrsrSSoTt7*7-J~e1|H@<6CxzoD>~qu~bp@&I?riUSy1Qm8?SGhTCoAX(dU`v{(+} z^cN}Qldx3TwkB3ibE=uqirsCe$wIIe3w(yYjwT2wRqL8xXDXjA#Q7QRA@p($o~W}$nX^n zgw8fH%LQ1Yu$cMO8jD58`Rh6ZrsQ5_9<8bq}`Uh~LuxOkL?WC@d(qwMP zu|YH>gCyY7OfGCE)4{DnRJ|}Pn!JXFZ@o+h7u}%Jw@?ZeUhQ;&awk)_YP@%-W+~CoJ>t_@t{_V})pw0h{hLA$V}mS}xS4xY_bxj@ ztn5y8CWSeZWEVeU*L~d?6EoB0NQd()t}cGS)zrlS^)ae${3})eVWmqB&s3x|yKRLh zZMCe%C3AZwQrp93kKi#U=zve7mA}X~Ve~M-kYI_F><*7A?B6zti^J^naj#HGNwF&_ zL6%)qojXOUTBM*&1blPnqW}ZL8 zn2A=%qdeS&7hf?KI_&9GLr;k#s$b&>IAz%KkRbZH)pYPgRy&ct4N~G0_AFZv%Yf1K zRQn-lU^G1J;jMUBI{&KJ zIDAvj!hD@yM76)gbYH2cKsQpr({hpqibZJXYYP2Zq(e$^S=e^6w&Qjv zh-#Q^cvv=3RMqLv0wH1Nb$vv%WFBi6cQ zAWs=`gsM7Kd>;@%2QbX{P|!!=b{9A$6VB^#r+eIqPOBT(mdar>6~7E~dffcrdn)nZ zbfriLr@%Z2=&SlU0G$C3mA@Yk1zv{gosk&}8RvEqM`F9^sG<7bV3t76Dk+JCd};Fp z>qKiUMShCN%(T@`2O`0*nu3q)9y4+YyA-6fB|qQe+};qq!v$|^URO1NV3 zh{hGDBO3xeE22lK{$1>+q*Td&cBZYi%K<+$pn+M(aoX0v$wFK%S=EK#>@oCdpu|Kt z>}e1?n3cGjQ^%PN6&r+%Q=zp+a=E!a_Z!q}(w?YAh3#lY%Z1C}YAmpH{%{X5H+>P) zlODuEdGrK^GAqQ1sq&Xj)se)#;QJQmGN|KKnLO-CyD#ZOn58WzF-svZ9CUH3!%4PP zjanbozEApI41}`+sU8AZlj*VxN8CQkjz$d4K~R^4BhG6a!S!EwS{;g;&eEm zzeFoZ@>;8`tHT(|gBLKAAyQ+U&U8_+#c4(^;b}rrQs~>I88XxoQIT3Nqm~#(vawKh z@vd9fi~FR7mlLos$>9*o&t1XgDIx*>16E-GWDylt+mS^Oz<;lZ)+vYjwaQhoOo^SS zdVnfF#;Jk3Wsrat&xVS|KYa~d9~~BJ*O4gnMg4X3MS}d5YIn<_nQkbnNwV32+;kPLs14!AZB@a zOUy!CMbAZM!JN8r2XhLvaSCM#ng$ib@-yo$<|hptGYl{2P}uKL*grsgCzFmSwv3F+ z>h`P_5ioh5M*wU`Scmt3`UjdGz_l71V>uic)09JwA{NvjksY>;Q{)n?Y;n$XQJktL zSget9vQkN<#!Es3I(qmgbTp2IScg9fRx;y0bz9bHg<51%`z)own>>hNk?+1`r{DCS5l^n?SrHt(mWCH zxtnlD;Z9NUmU~hdWfTVN%IiP^0kt>{+GvQH65+B*>4J<8ZSCMp+a`z0PAFMvhAXFc zTSp*i^pJ4b4HpP;n><&9lhK}UoDB0StAs+9#5hx|U&(U1EVxeY0o}4T^8<|xy+J5 ztIrhIbIi`BUY4D@%jFO-YXTO5p$Sn0z%I$eirnSRlg#BzZj~~CkP}+Y1E+5a1BW8)E=p`uC0HX? zPUA6BztZakkWp@cyU-Jx|N+~O1Vqj0?n$CCB^Bi{+p^$ml z7l@D)STF|oDNPTw#Pb)-5_s`b*sI-ysf%*a`byLu#g)b)8ZTVDSl)XriX|G-3hYl7 zO{i;Kr>6XC5qyog^%U_Q`IKZ=Wj%xuFE52GC8?v=a*R9hd)!_vuwN30C1P zc6DHuim!2&aLqy-fvM14OcB3E1pQY6Z~(jIZAaU&De!8^A=u;VN-5-{1h{^z4YAqi z=LFyiP6vxmjK7&36!szeaHK$UNb;mZS7hOi$C}-Z$D&!W!l|sX!_7%@FtUx9>dH}##*gle!Q;9Nk9T+lIfuiC;bSAm9Vjmf`0{I!au&0RE6(rs$HxXE2(Q} z2PXd}hh$RDVw|EJ-#CjQ2Dp&bkk(c?O;WU99V*X@4aG|;I9hhFZ$D&S!zu4|iB&lm zu3K7M1G2`86!(uBoYkXd*fU6V(c#e%-Is(T(4{0I&~ZVm29#XJ8bExNBr9R59%YS7 z4@B4Z_Mq#D$3)eOO%y9)rO55YNZO|Km=!DA2Kv&S} z_~%bB_bm$hdw~6kT#WcxChus@Lb?VuagFsLwvF`nFD z-#DAilP@(`^X7a^Jm$sVonWDxx8q3|dclmrwDNR8h-dv5+Jw zo!pnBm&b_@@~v4uN;7l-5|R)faG}G?Iy1bNLf?;Cwmc!hN@{evqyn)c(a3qzY>tnu z$F5q5Gy*)LRMq8Cz{gR`kXT2o1yj4Ue`3HOnb=Bk9|0~yvU#+Bg~0QDgI_X=DD1Oe zfZ?|_avV}8f-EgKsF)7==f62fQ(uBCO=$M*blgAv&2fJMs+cdk{y)aV+M&9V zF_=GlcG5BLa3hA=-Dwi}ZcvZg-%ZuO0}sSXYwc;CH1@R%rjApP_L0f3!ME=91!w|< zljK^1^iSo)CT|}_EY%=rJn{7!D{(z!53Eu`UyBMO#)0j}r%HsXV^-a$qUcY}=x|v9 zvaCW}t>x^aXFqN(-b%BW_Pr2QrG*lUZgnk1y!U5l9u7yG66bNpCF5T{Ii&w6gP^qt z!wi*F)lUCVf$KbPz;)OuGebs!>uKaCYxKg=uI0`y4oc|78w8eDs~6&^NJxB+3fS65Mq~JMMag z47tx$n5|Iy`^)=IjFf@3E^l))QH&?$@-%qq7vaMEiT#p_jLYL8$vpYR%p|M8tM>jZ*dz(kKP6${%V*14*g04k?DWITypirZ80SuU3};C9T4hX4#@SLAu|1M zaq}O%CPMwMh|31fjEHsE=<&9;5wRaWdgN}_U2#M{y0W?Lu5oljVf$Uv=)AUd_e`V9 z%iD?Yly>L$PIcT9e&C~PF08*VmJu%|JnbYx-EWXD{^+}JI(Oms-ci%Jr#77i52UG;Uh^*3`IZ?VcwM4+W6#yn5f`hen$Zd8Z$mY(CuF zIAI!nZ=HWaWCR=CGDBth_ZEgrT7D8iz()_XKmSSWlH0uM1(8kYc7AI6=}FVtQ{T-` z8rPmLc|B>`dD)&bk4zprJybAdwAziTLL%$Ztz9wlY|1pcwsQKhadcbjlgB2Tm+$SG zHpSXpOYRe6mb6xFBC<){D*-+A7oM2TJ#lmsd6sI5COsQ{`$XQ1DN^TZ`e#f#_js7>t5%$(LXRNmf>+eRkmXegt{N# z&-NWAGWG*}W{dtSb0$lkE-iY-H`#mgBlfi4So<^Me)?F-{Y=2TrEvafZcOT2k6L8yPRqr9r? zrO^*JUQwCe57X1xuS}U!GwUP57VWvqX3xG7C6$kUdC)sA5`vE&uIiW<8)Bn7UQn67 zzhs}>_}VnOYwSD`-qm)-;mcjGO{2TN%gypHFubqftL-8}3@aY{MHh%n|3XH=jH7)tfeK03p7J!bY#}_HGc%h*-P&iU{={ z8|=E_HLg9?b<=BFdv?UP5riGOwd)&ma{Pw=QgJ#rN9;$Od+rhu>a%vJurSwes2JtB z+lb82S5FKO;j6{_7W`}Ab(rI&oBReoaW1cHli%pEmz@JdSgG@OZBA*P@D8`y9V*k; zo8sI-A}m;<_1M_89h?1zN;!0L=Vre#zelGBiLheHlQ#kx+Wn|B-*4bi0~gDPOwXgT z#z%+{pAg}r`*JI{7_ByuUA4tzwcM)vM2HXV@X-yY_ZJvPj~}WjFpX}W9wox+C0Z`i z@Sj_=)h6ZtebpmLk7_`8Ll}nV$KU?;HLagjW}Pmj(P?bG~4^-@rZx3ktWJc0T`b zLy4c4Pd>V3y}!h0^WiOXB_^8>x3-j;tTx*|S8B9*$%$vBCYx8(o-89C(^rQ_FUySi zT|fS+%#`2xU7b7p#?IJNn!VF+U?ZoVQJH>i->Y*wO*=1omA%X8@8+SLT_&qFT|K|c zZ{!oB-{h7XZ9cbUQ@Lq$)`kn^rqP2Z@^>3;K2)`3x5?(-wvfuk1D1yzcR~3csQI*Yp-unCe$7UuE>=Pl)-wm36cE8eZpeRM_@~ixerjA`^OuTQuugZ9u+eK%q%n@{W zW3|bW#m~=H8zZQ3@?5pal6~bl`~5~Xl3m!f-#EHug39!x&y8%VG4-~A2bXG0z0KEG zW7>J`58oXy`QhHZW3|S$2aX)CHLcxvwDzDW25xsfIcSXiJta?xtY(RJ?WUQQIuj#k z%YR;H99{R6$_)ImqWzF5_NRZ`aM&38eV4sNrhlt$Z0EVdej^jA9?UsHklMHEiq~x- zGW}b1`OTM(n3&M$i!JpcDB0+)2L<&en;*{lzTRZ>w&txzjj>->Qb=UibZ-+jZtXql zH!|_s$zk%8t?tI@Z5nS7`5@TH_gRg6ZE@rDHnudHY<}`vB0IDsds%>e_KZFY0L2%E zk#CRt`7Mjbd4DUBAw3sw^j&{`T$D9F`v1r}zpv81u7Qv7y*Oh$=jyq8uAa;H{X5=2 zO|{vQkV-20A^kWil_Vsmw9SJTsOOIM!t46`f28iARqH5+ZzqI+$miS4m@byDaowB4Sd zsmu0v>Fx)e(ANU~A!iA$)6J@o6WH6=@Rq)v62Id7`a`cpPME2|{(1}ZQrKxvQ1ZIv z=lcDnU0B=lj^$nCYk{rIF7oq*dAU4rW*`!Dk^=q<|24ZK6H zg0!T$?2>x9hdh}Ruo072QVvIHf@C6Q=RWacjW*@ z33s@8*nl6M7VAz}4^fn;O7Dlbhf`U+(B2~XrWe^;I@)!F?CsqN9>GeKT00@Ey(jeL z(uq*SN8FdB?x}xT>C+!4Y?vg6-0^=~*&%HYpuA>S=sQN^R;~JvQ3cinj?t4Rre#6o z=LShQ2%lUb{T)O#)L|bzL0R$PJ#_+oZSLjygs-doTE%ZVMb%&^Std}|>E{M@^%Pa$ z;>gY!k`DZ2LeNvov%(Pa)SEd^2>F_(COj{-mwhei%!lY4MW|}tbB@L>a|y$IJhh~K zA0ooGzIRr^a?BG(zE&9*{f4^ja`tx#u8V`&gWo8=YtG&Xw3u&J5-GusKQVV0LEhqX z$u3}SNgT-uqrVQ^J%42dNb7kAMGCN^kM>Tx*6?!=&?aWqdRp6Db zX+gaTy>jCGjC}E*-j!4)bqv?;q}rMP=Nw_QS1P435eL0;l`V=n;29D{g)n;7g8Ro3 z4%$}naU$iw&OtJHP8gj(BY_`sB>f;T3~(TS?yN2oM(59{V0Dm#U4~}$bBKd$5UxfT zo%!t}b#e~^9Zy4%jEV#GQYp)+(6|}JpAimbf^yZX=73kmojx@Oy)tjMj-ol&cTJCR z?X#MHe|l0cf8EaN4A zJqH8jpb*qUck`A{2oq6_h9#w)MbhcrIDuc`+z#=*JHqIVDx-ORj)Mi)?s}f%z@~{( z|3aAed*>Fq`D$&RgDEs|Um}odYSj;A!swf-rjA2h!EMI$BkkUkSXYLg&9Gz2 z&ssDm>u^mL*hqGa`zr~Wj0FPajX#Y1@868GzV=iHam)QM5k|+YvzC2A(-sIWr{KV? zCSwW>JXXyT*lddV1tDXwrR!iXPZ|ml_J>*!E=*0nw8z6Q2t8{LFVNsQ#p4SyxN6vt zX+ZigquiS!kn-O^rOD`R`5n(o_? zT_Xi3ee>L8v~*A$C6GRbv1l~!(9y?~+IQsW=4|X8IlAvySA>qvY|j+Yxb3NQ5d~RZ zzFLCz&M<2wWbcEWR|4r{7<0~4u7fr^aG*u(IZv&l()Juij+zxYIFDy$%;AxhEC5af*tuXlaBnI>vU^ zVg%Bi)KFR5CHO{nQVYK)2%}@nJss;p(yK{rHAv3j6(A{Ky)C-S9Ju>f8?F_lvG3g9&*!RNDH-Vp7cAQmEw z_LjiIutWeap6D(|38Zq1_~DW;`sF9t?06s2?cR;{L0_}$FA1Yxeo7X!QsgZQ(zukL z-}W*u(`4YNb4AyWo?H^U?T540y%i^n-c%iXo0c^oy@?(a-pZhK{Hn>o#%AxdTmY{r z(QVzxp}iT+tsME#ydK-ZLL?g^w`ev0%xC%+3lnJE>BBOCbhmdpV4ZA0YIW-CwGl?IPNQ!hlLB~|lyAv41$E~K>{Cd0s8*c< zbME`ce%GZFfE%W6{L4B%b@N*(>xP+jR^*Qs$Ex`ms9UsBm_fR`rKkD^q+fJ$ZVk?& zT4EZSMYY7Uc21y~dR@qOp_+rz)}4_#BpnJ~6G*=%6*g$+p}i~GiFssi<>C#2SKrC< zhu?x^7 zhQKYVS1i}fi~PTANz25RMHD4V9@P@+TS9DX3FfubYmDuCVt6G0&wM@W=U>Bb=C1BWJ0x#TNql0R;+amuOllumM_+kbTXzk!?>GB zkD5{3iS91Us5(X6qZ_a?c5BBraHdp5H;`^)&$tEl6Z%Ax(c>PQy|kd(7T+G*gpuRc zj&GvKF=e8gs5&LK$E{F0KCQ80>HA9p>9tB^ZrldrZiv;`(40RU-`dc)L#{F7@b@4RX>4XO_Y%57!ZxVCk0`k3aUdnBt5n<`U<7(vtzGFI;8qTAl)-{7j=0C zW!PtR2f=X}TPHDl(u&G0E6cgMA&L^Os=e10O_pX9pPD4H5=^AfOwr zFfg}B6S2RrU0-ZB736=`%h_rJ())dyy=0XE7cv%Co~lUtz`x8f-@xus(VHcZ%1lcK zIgWvuY3XA9lYuoo|5^Bix<&c-Po!HFw%5>;JFd7I1M=FG>$AqdeC{&-tRpKr!UBO1 zR6(n`i!ks4vE5DJ*E@o3X{KA$B?LZ@e{C|5&tnG!E>XK?=^F{T5uBQ}+HN0V^sI$@ z{M|y7t#(vBLNIRg!blH#@`;BGftOT9j^xdZ5O_;IzCjp0=XL`l6t?gA{-0w2&6kw*X!0K3wmjz&oPOlm(sOK z7S^1w+BwC7+$-zDws93RtV8L<@!~p? zjy$Fbq|cxy3Pv-ucVuJLjO?AMm8cR(^ zXG&N1n+0VD>-Fj;lr~w`Hj%V!FT07Pr>e_V7Ua6QYonEgc{XCrT3K{8dau<6$6b`! zY-rpL(}xX>+g`TWSCjO zyX(&=Vf5L1qW-wkfOk}8QZU9{IBSJslYt*%&F2WD&;6x^6&I9N9Iv{NwDlwFLKd@# zR`yVCxoR@-(>Z%~59JmaXLPe*r4xy-5Jtc1?wHTIk#1?h_zOOH#=G(hJ-O>v;KAPF z*zrJ%1*diiqj#%=w_W>4S~jw~52d}mu6<;0(OmZdviDeO_W(x8*sY7OukAj5+ht1^eBF11bo&PUM{v#qT$8nb(((0z zfLbx)Yp3pxUnfLjeirm2%z53itJ1w=G;l$v zF9=<=b|ww7@L0w%6bK?$jYs7t(BK)5f-w4BSatN|1T_y2hl8i&FFRjRk=_mwM!%vG zIu4&A-Ojb~GZ-dGjpmH6S^S28;pz-E4>F@R)PVH6dm9rWR7}eIu@I6TvP_=Cv}n*x z5k|igYQDHRN2N%Tnhdkxcw#C#6=vb_L}>FSjK-ZDn*I%&CTX_G=%y(uyCsl5+)xXr zBhcQeb6tcF9e&$(E*`;Q(z|fMkFh1~d2O<`?yndB@+;d>mS1xIZ2-37m+UwCH$Zyl z-6cwl66gFC@)v9T`HBTw6lL+tRY#b$Oc63&qxQiQ%3s5I3+=xVc0|ovgj2lGdV%>rTc`^%|4^BOiwQ`ACB&jr<*gf1PeB4!}sz8%1wc; zlLYegDVO3NT5M=!;2wFpb1-<1Jl**qe_+8@+|aG!0cDrm=g9-|^s(K6M}Ca$rc14S zM7mwOktF+f!>|?Mds|O%&K)HOVY%;}B|PHho{+sCW*sTE-8;8)Q?8{ z_trCv@U+$OjACr3P<=-Bt{Jw{@X4KGM;duc#ZyhQaA9-W<9LC(J$Fq;>z=FEUr>C< z=YM8cczh|`$)ItYmg*T6Zp9@JomprxlOKV?y*83{r#h;+?r>>HlU~6WM6Z^w~PD5Jc=>j=lUDeojEtZ zA>9-Ec>=%Q)!+{!=FbXjyPUuLON9Zt$0ouZ80SWxnk2OOw8nGL+UmHW@A5y)pd3!mWoyA@l+59eY0iK=yXZ zhbw5#bBpH{lv5?)3exRTj#OE=?Usv%s<2~IY@b(=#hm^@4rK?s#MQw8098)P=kF>X8W*)Dp5+*TSu8GKH#ZCZ;>XNjMlCD z5DLWKTAzF2V{C1YK>9_wJ~v_Xi*otft}Ze3R0AXL7K6oP;f3FxG zC#07Sd!e*!%G-;i9WIeX3>T9L%br9Gq9i=wCX9}f@@HLw#+~kQ^uclKVogRLRUW*4 z_Msy^pzZk?=K)pd29b@^kQos0bj13CNS~4ZwkT+oW z_eSIWf33f(Hqrl+b^YI{KHq-b^TX$d_g(9*b^n3;w{{4R4xMK@Jdz|yCDloiBuNO# zw@#9fBuOes`aZWK_MySCE;3Uj%j8G}|+a5EHR_e?B>_!zQUT&I+Cps?`vPRh}^%d;19l-As5 z>TwR9d8|*5b8ycjI(j{hbVna270_dWuu8$fVlM9bF~R)@^n3g6%u2WzL=P=Wv=~$d z9+hY@kd5dkVWgH?ZH(<~C9?WvEj!d}*bsVT8OG^@pv2|o< zDX2q}L|m8XIZ%~s#lGp0?%Kz)frEAAR`26H2kNQJP;Q=syETSklL^_}aQjF>rjCpq zTh#@aQYE*w1r%#Ojnjr=Eu5;_ zV6645)NIJ+B9U{EgEg$}FmC+sd_a+6&KcD9|^DD?|rcjoGW6V)*ZDHO8mv7|{lMCfF?NqM)L+0&b^_giElAeB- zc@>eKoHRU!2F2O`z-H7x^HXUmmX#TJom)DTT5^J?Jl#zWu{T}GC z*y4@{dF)L;xQ?iU_8_wd*Hq3&bD#U|1n(oAdt-N7%Os%o19 zy;KUXhhpr0$(Anc@BGPbySHm%Xb0+cHrg1gTReO4_lMoxwIQ;LZ2r>5Set9-Pj-=X zJTSHg*HF!|oMP+>5il(_Mz^^g>oN#x!auH zM;`0<+k(()QJbA&Yyez9qrWv~IO#h;(hah60Hq!GZH%>f+&X-SV$EncIYg{yGej|# z+`A3@5gNBedPqU$`c9$T#@I;ZzYQOwFK-S6j-k!H#Wu$7riSd?30jFP-~1;qr^d@| zj3v2}@hxYJAU}+#vlL|BE|z|OjBxORNbYLxjDzKZC4PSf z{UCK^&X6C51YH!(93z*dAoF%{sP{42O{rZzQ8b)$uw2O8rO!FAXZE&!e~#9dbXprj z(kg3`g3Q~+*^7fy9!m2Y!x0{p$^mE6Rg;$M=OP#x}Pqzn-1*AR!06uM}%<>~))4x%Wzphi7olb&9cbG5l-g zf`^t=^K}X`EWuf9V=PPXXjd+IxFZzVuU$f0sP%PHniOMmukL*<$-_C%O?^<1$-R-GW)k^3aJ+VlqSu~k z-a>y1p4Kh$w|Lf*LeZky{z&nl0;$b3DfYsQTT$@cA>ERjo-_~Ybi2Pd{mE*-WB+n% z^PUGu+9VB8j7iek*Zcd9mgD(9`FO-Qo`EB@+$tz`$y{_$>|JMgSS?sQngON4keDPV;Cs*-wN54;%hf@&XSlG?Db8fFe3_rFeo?^WIE6q4}VeT|A*Y;Mh|X z;e7C{O%!>^*bBCcBC^`v!>eLsN=S*LxVAUi|F1B(L$ zR0h6>Hpa%eT=6=9bVoA|4t}|?yUd|4H&tsKvbiI?GDtwA_H4Q+#zyMM@;e1tUg!Q; zlR)WM-XlTMw*If*2%IHD)-4J$^}Io~O)<7Ab}IXa(73G+{vkN-(%BBh*aMWF*@0ms z?J?{PL+NI3U>I4=J3A;vR=Zr>mBMlRg*_=6cT@Z0JL$am(5Wq>E5|$m6eZnw;E}(j zduBplziVyaju5Z{@4mD#aPfS9Rz~0ooRZwh2w**~MjKQH%{Q{-$>t%Lw^TSPj&R;0TUa?f<-X~%FDWVOEfjZLeQlSVc@--C!EbMKtt|E|y z4W%7Z1hQ_Qt=tCx`IK*rBd=2^OILaq)ks=aDpQc@Qj0#lstN2;iySRYqX^2RN)){N z>_t!XEX=r|A*hzC7c>Mgf>7{DLs0GRHqW3KP#Yg-pv^@?xfx`0K{KaC(mn2s z7D|seAGAnX9XHS7Ij_#o!c1vzwK348=9$+K$b_uLj1G=_YyClo#w`)_dX%jk^^_j2 z%8m0oJ@R+|?Ti8WTjft02<+_}yES~8wZD74wbeNz=~khCcWuvKjL>fClQPBF`Z9cO zn@1jxZxrX@%yZkH=h3%|Uo9q-Gn}>@1(`>9%6#60a)!-oG$W78rZZ+3>2}eBnZPPd z@ars{KiPfsGoZY)5U|(n7)(=)-DelV#-B*H_Wgl^ImTy|?9XoQ?ygTC^H#JjzsVk~ z1aN*!v5oz1SLjG5=kyCGR)tz>q5GAcbF_=Q1(f9#t{EF%BQ9jUn$63sMPgU zDaM}Z99|oiJ45VVsC4UYmI>J7;`@@zC|WcDjT5cvL*qFooTK)>ypzCl6{BTw1&!PO z-dKUsQcrV*!2W=d!kP<3i+bwA1#^?-qm8lqYsKTWRWw7Rsn#l#jvR{I1m6A8jd|V3 z-^r6!`o76eI0RvxBk{T%q`w2k(a;+zAWE2yvS-!v1kKEi}ALNu@9RS_1+BvYrL?x zwLw7Z(TGaqLmV&^UH2iIyUqifq|-^&;bBw3O#;v8eMfg&C^O|+`fUPkzz8>nZKPXL z%50-Zwagm*1k^f3*}R`X{+Z~{`jK=*W7>f^wIMR^An9--w}U+9+cfRMS&}rHchOp+ z&^+xT-M+YK59*dLn)i@yT|K);P;I+x2oO*)n7+>i2;{y|?je9YrdToT6R=OJ9G%-o z(g|N?AJ398LlEXvMbBIit%9QEOpw4k4W)1912}H$Z5w09or*nDknM{IzZ(wW8Y;0F z4-s3;_GS)|&21~QM^LwCP+0^0ztgcaxmGp*$gM4{YSu6ouFxSnFZ)q+`jy zJ+L#L5DXUW_<9HhOG4QSp%0IhJiiF&ON@ute-YT1$nA*2XnG$THo|cE9_jIg2`tJj zE7DVx&TGqur!XN0CXY@Dq?(>_5-zEtlxz@frim@cOEHT`Eiu2#oJL$To;O8FL7?+_C+XLHwpigyt)9ry3 z`kzw-oUPdgN-5+p<^uUh%_(&7j11l$< zdt@~EUQY(*#L!%C2Ia)#v@e4uXinbq0M{Yy&)x?VEQj^22jp&*N1P>~2iCsQmqlzX z(AdfnxVPNz6hFdMtRm}s#A~3(mm{zT*5qHx!!S>H9TfY$`QGInfl3~Id2Pp0fa{P> zw_HH}_C+cMl$c_JjwhHD-HkTJCdEjw@`U`YORf}Qv?#Y-MHDT9>aB>FV!*TV40UIw zUC&7O?pos+efe&4wFIpeh`LM2=0(yd5!i<+t!}+Qj|KYtFG#wa{#Hi3w7hk`kIJd{u6~sF(mv1W2-=>9R1@VrWN?S#9EI58wg}T#) zHU^&lJ=WINtXnCtD-%+$khvO71 zGF`0c(qsdEd2C13KwqvIjW@b$TX$b^PW1t$ZKA0UBrUQhKDvR?-Dm1mH({iPYi*2; zRI4-5M48ED*0!K-O{QQwqeTE@&t9LW7)$mFmJbTD<5nmRe+ux_YwU<(pvQg8Vnx!fr_lu{ z9UB;1K+^H$`vn17O|YNZ1Yos@=*%WSs|jAiq5!F)j;m3S{ZHZ5Hpc3fBu?!DjJ0gP zbx8oR=2tFIjE%Ld>Z?P5u_m(~JD{|0{=|W#xyI5mk`5O7oC1i{LZP2x;D69AMV!dy zmt<`P+B`h%p%_cgEkjb504cI$>WYHQI%bf?UC8D=!#k_U=HbyXw*csQs$cFF;Od{7 z%(#K>;Fs8o+#|quGnZE=#-7K^rSWIFu0B>=W(d$v-HWqbX* zqHQEC$j&Ip?8SyeQHrspfl@W^M{_Ksd8Z(AR_Jjz{K((h;ouIknln7H3$3QvR_-FJ zReZT!6sew)eGlr6-7W12@T4cDf8P^eL8YAE3cxv*(r*XQ9Fu(gwl6@omnt9a!)S4G zClmv{w%6l90rD1+F+oA*T(C!fLoxPTu<~p@5a9lIA>TR_KpP>ammLY7zqb7eW)uX`S(7|WY4CHrM0U93x9<)Fu1oBKvFw!1+5l%gQJ^&}2yD{{am zbgQ!!Iph=m`FsV9Tk&G5%0ZSE-AKdSsID#DG?EaEkEnTPZsJT$-PFv~)M!o3)TCyn((*9e z0byt~nf$qR>^?wWn?60KPa8?qRJBMDl^_y84k98TAP6cNLl6;>AW?&g5kV1&8bv~& z1%rrQoVC~9r=j=pYLymyeP=(``qpdrgU;!!sRHh0p41;J$(Z(=gz1dAqOkmy?h%gGSnoq|3pPsDgCW9RJ2l6(mTxE9gL_Qhg-XZ$cbu#GB0q^a?RF&gE zUCXXil|Oe|e;*m-zP%^AXp_ou|LAWx=Fk1Jd;7?sKlg79?MmaHzID1NP4{$BX&)K% z?>KwftG-aV4y3(#{}-yR`}y)d8T9WsQ+uk?RsKCe_50Ix=kD4*LI(Z0f9=Sb&HUQ8 zIy*M&)=q0bn4$9T5Y4*q=L~-B{LbkN-P#4uO17%}hv>8Kw{BB8rsf=L+opRu<6=&x zZs(ot4>DEGOR7u9GgZF6N!xwuOO@|9+pp(k@k~v-pP!{;s&~&-GU)&9Jq_DSw)6Hb zZQQ$EXK&B8^lX*)v7VD>viY?;TRO6JYfsi~*`e~^-g9T+A<;avXd>f$50x~KbkkL2mNHvIF+eBRyzXHMnoES7)y&`y=FhP`KM3V4e(rPmhd zEOxh`QdRj%d|*pWA@AQ4tp^HqYYz@p?o#=8BOkk1TBLF>j8ttaFH-pzMoN44?p9~A z6TR|HudXRpweQVjg;{eg8PZ;$XBGR#TO}(0&caLed$oYklgEnltgFSPyeiIqSyHM~ z#o)cdG9CTyJls>xKb=~*w_NvhohNgjE?8X~tE=Uo?otoe>YjdD|F~AuuJ7$79aoOm zsa&G&?{BJ8`9yv8z%&_r>=)t(%9;=I;bwZ{$%8ujF)jqfVD ze}vasYWdI+oz`+%tBW=Bs z>eHfvZ&d!9?nf&3HTZbGkiO%p^GXF7)4pBPmteZDe5*^#6`OW8@~aO%!ZH8VbEmJ8 zLH~~d^mz)7^IWYvs2>4+foZ#8k z_!!6h`EqCc78&&art-$Fie{B-K`tJzY*zW}mWKXcnpOU~rR8kRN#5e^rw^ReS$sNY z_@v6W-`>l$E&S7M-`2J0o*pb4Y0*7Bkb2@2pCT$YH=ok^Xz}??t-1u0nSQ!e<*r+@ zhH;Ghw(u{~PV3HHe&P%n^m}7XQA5XR9a}obx3uZjZo1vu#;@J8_j;Rd?TgLj-|5!w z*#2|7%6bo*wr1qR7WA%Q& zSG&5p_KHSJ-$xh@Tpqc?$EITkM}5E` zcBqFh#3uR<_vi|-%(RC+Dt}E-bo|?1-pl%G8hcg#?TQ&+KIzqQ?QVM4HNN_&c#LEI zk*$5lp6j}E|JZQ*I&ZP!6L+qw{9E}CbXN4~p7uPw+s8j$dhK4HPUi*3DsSkx)-!(h z2Cws~-g`H6K6baOvR`-Zob<>2D)&+3s%=yKI;J-Fx879w!h2#z@c_Se|IIxE`fRfM z!N4qgm%`wfv9Pq`*U_NBMXOz6e2P;vJ4K7zE+{t15nw1sMAc|P_S38}e9AMao zu*shh_9}(NiHY$N{1Yv$7fp71fI&r2^*sc=L_v|u!wgJtXV6~|VK7vnpmYcYuYq8- zL$KQt9Yk${6;JQd4mkXa?|`2~M@L9<%-TOiI&5&jB9!OUVVEd6Va|ip;J=~hU7~Es?NFjb!3s})D$0^8(&18M zw}o=;5VhPRgukc3fpa$dbMchDC69gVHJii#d3mHmk!=o_%>sumLqtL9_XM#R5G$f1 zm(7~P2Wj0j8?xLVLU=oF9Qpwv3-N5WWZUOrjKiK{QUWQd#*Lk$2zW8Z5iZM;4C7@u z-ZGBki((uxZY3rmT1=MY6b({@kcW>D^72Qb;0$voJ7WbUiTc&JvGfVbmaGDgTrbk6 zK_{sFz(6S>!BB{}`i8Rv7eZv>AJ#<2M^es=8>hS|c?s8y0Dm$d8^(>dj+`Tc1!lL? zNyv-#pBH6|m<;|)793VO`yNCLj3Z*cKLREwMseFS zDvlGKb|EE9Pz3rgm2Ta59;J~Eu)R1Vr5hjq8l?+kMLB`U%))w+%Big~Poex3JP<4( z$%6Z9#i;UOH% zzI*}WODs5-5@{6$`$|X#Nh}NozO-!lzy9Mt!QW*}FP^K2U(Dg@aY#U!Fy?n%1jq}) z!NvfC!K3|oISYi3jOBwwxZuTX_-WEOHc5U8@GSh0XyUPPWXmP^dGgtwKzJhSb@=Do zfPjEt%yLu4jy*)$p_)COmXUczk|Q@8N51cd!OWI`rT2sPe?YqAbYo6M$%E0LlJDj( z9SR-{{3h^kS$Vqk%GhYo(&6A|b3XC@6hw1uRbAdg7#slDzTNl&9 zZ|HHu1PqP^Zw$)z1k>N@(!Z~pj6DS4p?}CewzwKbQ;j*jd!LR5^_A9Vty;R}r3)d4 z^2*9?2KY2l(wR1%#Ok!kn_HV-SbAsf-FfdfjLst}@)+BXJS2ll38dFJ){H-W5YnRl z+dE$kAArG8tB~;(Y}B7GNQUiZX-* zMYPUF2BK|8jm;&9Tofj{Y{1oMQAv`lQ4kZAmj6T#1xP7E7JTGR6#eCNik5PeFUBn6 zhV*Emga=G8dc~;mP8CAlm~rxCCrJdjx%Gm5IZ}Gmm|sJ8qv2?XG(&*)c#MYqi1F0U z%mwE&lN6B%{_axf$vnY^8U$7yMBv-29f@v1wn8l50M!st*&3Tfb!RY8-Bx!|XlS$< zrZlaEAS0}`i=-5Rr0W3k=6lK6cMH8%f?akUA1$EEcy@a9C0zAOR5gGwlzvZ_ju~@hhMRvw(|}Fm5M|h))8KPm=7`CG2p0Pv~}5E{ijZ%4(+-_Y*6) zp`HXKfX*$VLkVGKEuBX6>l6*84{SA@0Ek5;w_;#cI(nso<`WB~VCV@i z9|FcDeFcF8V_5*iPpw35t`c29bgVsq$pjHcJn&O?=<>~#T03MBqo6(!WTNOOalL3a zutV4HK+M8bH2RS_FuFl2#vGv{4-v1;DmJm;4RtF})n)88vS?7ai_Qd@TmoOTONnl1 zn4B(J`2#bsuv5nh*14F5A7xok^ihCnZ>8 zJ&G2P?XPx#676V=e`j_tIZEx0nxWx}wVntIVTbJanjVtCKwEU8_n5H0VMa(L(Kb*I zjlDz1QTW!ZwW0Z9YhWKu+e3)`ClL8+wA-%Ou!|1g0AZb`&lj}mPSfeI49`A$Hs-5&8y?W=WA;1q-u>^ zOW9)fI;#xCEx^~q=>Z2bEax#Ged2yRF zII5YF3F@n}aCDzDK43W5J&`rN{L3E%#BreD%j;8pofbmbr)GAghgp@Dw7Kv{N#gA0-1r^ z(-85R9|CI!2NXp?Y@MkLL@h7@Jyu8?LIq0_q?iq!0K;KQlPr`k4Y$Ki9niY577m;N zecYEGK4i+N%cUE`WW{Q5A_q#*ou}bSg>bgIN`KUPZ*aG@=SA zkhMV#VKyNd{E$UCAyHhy;3H)ePObo1V2T$0MA~PI2vv*Bp3rjO`6`4jiIBzrWyD|4 zPUH$;IVZISF(HsC1Q)t;AS>JkYEkmGcKP=lA8TpQiuckZ2!7Ldr|7%ag2RW~#pGZ^ zKK0rL1inD7=hl2;#MtjO9vYywA>A_7B=JpGAo9p-Z2YB)dhqIKQ)rUgv5r<{AB&_n zUV`TE8qbbUa}ZE0D2=3h2%)4}EkVFg=6(d=jl)L}ukE57FOqA5N|Zm$M)~VxEL0X; zNs*4(Py^e{(=vp;3O?b8aX=Adw?hl&v^mIin*qt>HRc>e&{8Pe1a=c(<*$}dp|tY# z8h<>654_1Ld8kyO-d&4b4e5lekcjCix^B}`%;Er=O=9w~E!CPk5p9C)X<_s}lUHO` zYwqMHk6_2Uw!NArH(>*mMS_czygE?%4hFJ0^q}_{s6M}%CS(QWY+z>59b*vP z;jMiX=-U}q59DT?Zc(FzXFuZJ#5&uQm`E;hNN@5PR9E1FCa8IiAh4+&fqxU}umIg$ zVuVe0De*Q^N#M1fFFl!{=BS~z>BdLirZ-vUl;pLN9pmN-H&iRLDnB^>4TLVB4Y@D; zl6@XTz{mgs-lc#r(ds67od(WCaaK|Tvra|bxFdxDy6DXX|giykhTe|?J%BIO`+9XAp zLnXm3x-6{A)Z$>{Q{U2mL_2GO_RU{QE#axbUfU-pouKTq0KLHo!9LV$ z97sj*I{?O;%+(INgtz|MNRm1-l2)O1z!40OV>|bl6-;bJ!kAHv6WH z7UXq6Udy@|$V~}$=`(Fw$dGgoBN?;6`uiDD_dyT!4c+fn#Qy$y_cIU;NZ|tcFA`Qj z>RFjek7d_rD%H>gLu&^J)HyZO8E3>{qC>(8fZYC5&JKN5qj6S40cpufgkUt>d3NeB zKFz~{>2g`BZ@D-z8T3Q%F4hRLO>ijm^%aANLc&XiVP<5OCsD_)Yw z9m7mSPzi6#iFNQo#B2v&z;qkJbdY|ihTfV)n>mDmMYXf_RHx84tqk>P z;W86GNJQ2_L`1}hObCd831|{yCPa)N8N?VcMmB>8 zh-_p~_nz~dbKkd<;BNoy^W6L1d(Zc|AAfN35>B}`B7K?2l@6oI`x!qWe;RLT7`}$J z3OAigh-TUi4EZ%md^1yv7DW=d@&BM!(>AU7L^v!`3Io%;Gcr3q= z1-jZJ3&ipiNtg^gR0&38h(YZAMy3{^XwvZ82!;(0>{20)sJg`1JB-Lt3>wQ1Kt`~v zVJqtgzr~_s5y?k-h>cLv?-((fY2tC<>>B=uDYuAo1yRjT?=`51SKy|Fu<9$r{TDGR z{Xe~~5pKD29hPAcIv=a$MHmk0@e8)0_HoAEW^|2n5Ar#j+EdJ2b*n^3ZBH=jehOAg zL&=br+ELg3e$61@$vd9nCSzz@Cc97z_BRN%ZJkh~aUXSrtoYRpOdT<q(Cn5LGV# zK?S{NB5AS$uMaH3uFY5ke@WWtypt+hT%1a30UOi1@DgKxIkbFj%T7}6a3_kry8JRX znL1p>J5*X}t;^650O72CmGO5B#Y2WvI9I=hg-{$tEI>@=9d08x zI~Z{@Z&uiV2i|38Ez`zAQX-{7{)LbS-T*n6GPZB2ldxobd()fvww#4HMXJWM6oxgb~EkbC?Y{$M@)E9I02*n;L30OU(}$B_!V3zS4`%W{nRq z_@?{-Nf*Z-H;Y(re|M-@oAF{^WQW~mW+Sk1ONEhCodEUZ~rSKJU^hxJd;O={BAsQJ^A(Z<)_%rKz>=g5dAiKF=i(b;|4ooinOcsqx)P;B!jE2N#NGJ; zY%b7d4hl(WVFS3a@d|@)H&RGpIwxK7b;I!)BPEOJ*~#PLEj8mHD+;-mN9mCDz3+a( zn7f9-1Q(mEi~iTtYW0RUS@^h`HOncJeaGdx40XHsb7o0%OgJ1)db|D^D%mgng&_X~ zC(9=)Zjgc0zE{WL0+sXF2$+OwX~ZNd@l?!YOUcTrDqBQa)ymijgynJ&>VsVU<1R7( zwj&IiIEz+>ON49$dCN6Jmc92w#!RsoE#O!#n+|7)dUdVeErk~r2+Ck^D2UD>C2VC( zDoe^)Wpo{9cdO+c4%V*eaLw0@oA~g&LMl5iks~I- zm=R60fRNj(|5eY!LK%uq0?1({7KKa+w$|;c*NTh8p;Wie64S7wZU{9Rzf~loc2B(~ zgb@{-jXshJ#gnOWgBvLW?D)K1axX6zWFBY90Nc*gOJ>D~J0d=a zt$_71WXj;o@b?j8Se7kt;t{QcpX+1fq`}CNNGV{b(zTyu*yO>meB*}V079u+`s-oK z1_AAgP-v>D=!&oF(^64mSZw`PqsF}#bva0yk!eEYXN<&pod337l2JZMVpz(1ENl)X zHmd!xUNd~opN#a76`t?NK`7GTkO}G#DXgm6qY3_X(7~knXKAsfx{ot{%mP~lb4hAh z=p@p4h7l9g!f>WcOA;#Gu)9wK#OmkvNZJ&c+)gQ9I*AO|lsw;N8g>G7?)3!*5`v_ zE7lxm0-d1{8Xqtmi6viof~n)_V>EtaDSQSeOBi#mi&3{1)9E@2ZPTu*@3 zFOKM}I>3rMxbROQsqx|uUdX`jEk<9iWAxO#SwVJpZjyDxmZlTVa$9HwE^cz+ z0ymkwzzZdV711RTn>Nl6I2+uHBX(V4{DcK2-sPPy@9f8ne-q@ZjI3UFP+h)>gS^`2 zAlQaK9n@qZ9abQ)*BRFI>_LA{kp_M6dx6$6bnTjVSgdl5)2oPN$3wA7H|k0tH{-X0 z#jTLK7RHX_Q~w%r6gd@cCU2=-8qwFrfGKGJj!BB0D1~qaiL?A`j=TeRN;Ts_oyq-= znxhQK%68pUd8DvduU*u1^8a+Z!o-scLkYbf(D$+QNtJiDj>V1>%XTZ{VZGN;e;l)g z_RKOojM3(UVaAGqZ!a|N2|+_DP0Z3+ftR$RwU23I9VT)ir^j6H9?dFJi5( zGHfi1L22W;XYIKH71W?a!G`FMts6dPyK+I;y|K9=_lK0H$#N8@27XfuZEYD zC5(e84S0va^>R?liUzg->~!Z9K0;@YX}~&$nw3l+gJ3()Sii;02HXG|SjE(vu<67i ztzTdDB$IB#)vz1`SQ;r+wat(_W=GdFpfEsl7=poauU^}LyzmD4pxQd^ea&%9M8nu9-Lb>Wdv{{y_7nEhGK@=i9n+^6`yWXpi{fGz zNZ@5VK>4(#9(>~U9}07IEide8(9ke1hrMv7e5+$0zC{^v*oZ8~3X^McIEOAYzQ)Mf z{fwME9FqNss!HDhs0y2uyqFV8<}MFM^r8<$b<;Z#Ri8R$^BF*^Ox+DWWg>@!)j%iU zMa>~UFYK8Tm4ai38`Mh`@<}ARA*PIa_B}9)^$cXP&QTN0hwTSCn(%=IlxVq5%FKsO zrz&}EizUx1#8D}b!RBM{gUyDFYy)S2tSwmk0mRtQ=f+be2H*=*+yO34?rUSf?JR-A zpzxW2zuM2_nb0jlmnMy;w3Dbmf>DayEHnyDeln9ICgV9iWb&PK^os;Cj}F@pKK@n9 z(5)Xa^e%$VjT`Z*Fw8LKARP;z+tbO|QHD1Q9XFzU?>+{;W7(r7)Q-hMaU=XzR5yJB zQJo)sG?XYUk+(MR7jWrhakY zRD=4(qM+{<9vcHl`<8A!n#&E6Xqr#yEd-weVy?%oV6Kc}gY6&3mI2>%BEhh$&X*)%uffUOvMG zja~Ctqo=W!Iz2-)wqpg8?@T8f5%)6`+R(qUQCyma@C9^`#aTuth}5ueTg9NsMaC`o zfpqze!I`oU9ZxXuUO5ez-~o_3ph5VV2llLdvQgLrIBs$l2h+{itX)sjuCV)Ac@V_9H%@Kjr+Z@4r$}_7*hJ#Hod{V`UR#=O{dO}CKppR zAeAuFqfOl3JE9qr`BT76fy+tjcKR{)Sh;{TwHr8)ZgF=lY#b ze;orR(i+iCFWiITgQ~7R{IH`QBFGqu)A+=lK`0E2>f8fH4TV)!MACa)^A>t!9++V# zFfz{&V)SkMFnY>K84y?;;vF@OgV*hE6hC76G08=4d?^*)Dpk)r4nWVv!xa855G*N* z8=wS=;Pk*jaGI@vM}+6y+t8?RJG9pHNPN8ma~ zQr8bpdOn8nfwvTUm{8OH$#Dz?)LErr0q94bK7o%QbSR7@j2#RVYsz7bZd+HQmv>sK zzMr!CBvZ5C#{%a6o$$J!^8fdUf71&gycur7W;v>8t4p6XdbyP^-R3t_*ur7?w{>Ir zr83};G9)ekywR8Iq$BXDHK%=_njKkIL>Krfyh9}!V!Gcw1Jivy92ql;O*EFS>1F(A ziUNVv2T?A438UjtrmM=-ebwkCUZ8ni4gL0?XySgo8?S1^w|vEv+wgC8(&&rLa&3fk z;VgqD4tK~+7}Pf+#)C@CST-rk|7oJUhw9n7ngk+J5B| z|KIj>4$0phrReG>x&3{^&WR!(1SFJ&VG%xAGh`9+12d^0X`+=3-f+1z;>V{LbpNou z(zaj)+3|dbE|6o{&aAh~Ht4h!o!aChRCJV1Bd+rsn$?};2goeZrFW^?z$2{M%!skP z-4HLO^U4&msYz;mnaSfMWXoNS+om*6nAugYFksTmXuLE(Fel_Lk@#nh6DXeRRV%kO zs|N=vdyxsWqRC3thO4hKU=({U>K>AI>a}Jsy`ke_WR_gDJ$v^yYrs=ffe>CR44d{b z=`IeW;;H4ujvHN$p_y?7Xp7G138K!{w;4;1LD4fFb7sxV3)=Y|!2C!{6QQ_U5u&J; zV6s&KBhz`1VN)pPA(iKdJ0}(^h#R}WU)B2hwRaea`g);_E*hIPx*(@(q8k$nr7EbD zpsZhUxLI;0${Z}}k(7xcOrSusBKM<}iG8i;@!@%efdUCythdG*U24M`v3;H!4@2td z9-e&|%`$LPd$X4T2d4RRGzfgx5ePgkEz4ORz2mO_wB|zwWuce6d^KU0k2XsJhyNc? z!oJRQ!Zd62j-?Z(Yq_QUI1?sg93?p^`vQu*J)kq%e!@4S;>FRtR6HzGhDaXk@`+?Y ziO!+=q;C!dB@gKTU7x1?KTZFy`Yi4L>9*$3-R#9`!6-dC5=^ERS`X6oxz*jkv?3I? z_1Y&M@c}=^;|EsE9I#_2{9Oi6e8IKyI%3nZ7UmOv=r* zj_)h}pI%;*us)WOJb{G@3e$hqDolRNSvV9XRjPg{40lFPEiA?D9m;GA9hhD)wEOR1 zC^n4ralAYZPw1UKS6x{3*9^Q{BEsQ&RfTOkkMCoj$-eTZ_m&xnbmq!8jJy+7@%1|AehU!CEkV7=Dq9C ze9khbsDjR8lu}1dqFgh;Q`Ig0w9CE;WA{#f?S>=7Qw)t+sdR#62Icp{7QhluLAG2V;jRp@up~Cn!1Ck?ff@tnKO+Mby7)N z0NMH)h!8!yGY^m3zoP{nm;OiEgqduv^{K^dCy56H)%~4)qs8+ktS)j6;7u@E#=sjH z4|(KsyM~gvHOzN)9h0XBnVv5jQbfn-`gUV<%*R;F8WqgAdarNBdBt5Xzwm@Np|mj3^AVFqdvEZl9@Ko?;zgeHP?ODZj=-%eS>XINr>q{?Sx(R`pA&C{tx!4d_mJ3SmAFug>LOwXAX4M?5Y zj?`LolG}TIlO%*c(SQs1U%IZWtF0wFuiJ?qE-x86oph3wyyXw{%1hpoYp2t_lAHFr zL+9CX`{sJ3+c@^U-K*aiWx!%IqX02jh)KpE%NR2mga9EXfn_WvAuz~T79a#VOyVe~ zPMs>9+B|@4-&OT};;H!JL*}s6(jASICHu^Dp=9oTmol51g zz``Qaz(U&)=w89rGUG`tbf8zibS;=*m1j<-Y&m=FieCcBQa}EXe^j#|s=;ClZq8Ag z{8?&Cpl_q43JjA>_*82~Vk{g%w}lx&1%i zlSNUV3cZ!u$r&fvTB!bk#2q}e=`T`0{wY1+Q6qDbC)DNU6UAzaKc_9&Q!!e;ClzIv z(n-)(pMC%9|K>lV1(;>D0f}3#f33*Omv_lEU($fi(pOGrNf!L)UtU!|vqdhdRKNW( zHBjoSX8-&vHI1SjQ&rI)*Am=c(}yV3BNoc0?P|&<+Tdq5?tiOB@&9`3_uS)_nA9d( z;-7g?E$d4RJpCnaolYQB#k+m?7PHsXwda}DCV#}6(ErlqNAC@j+)!%&tfEWimo-i5 zOwoU(8nDcpubKY3?oBx&ms}t$y7B4Ss9n$?Xu_&C`77PmeeK_YVMb-mMrBMr zhoc5VeLwu#E%GEblMq7}mk@5K*tC65>9qNWFTT2V>#nAQw29men-E#mk{(nBEOsgb zLI(|L1$ zW$H_5{b$OylCGfk4u3z@2O3%Z;trEmW?>Tpblu29Y&U=T56b8JKfC?e?eFdrrDQ&> zaY$|S*W^k1YuB%mTwuDoY59&mMs(vo4^}L6G`n|i~-oD9# z7{=OW7iTTG1*Zj$ygAG7xW}n%Dq;66^3qS1 zKDyvM)$wmM^FrB_vqagHN~);OsA_HK$QR#ErUDuAMISt9&-Jh9nut9y`B+?~@{xK@ zkG{LdM&b|Xbn<$-y2DAoN&nZC{YH6^{>HU*@&6N;_*l27_>ePOvBfX$XxB-(_1)Hw zSZK?gXbA8ob=<~NK1=V_Hh(EjT-T7FhJT<=jXBfn->I*0-MDv)Nn`oP$<+1=H)DD< z6QO#1VTx?Qs{Z>gw$q_fx`8XJ)Utls@$MjVoOpjQ5g1< zzgMi%Pp^|pmh2$&JVUKlk(T<(ypb!5RtEVz{Z6`OHt016n!lim8_Ra5qPgqeDn{(; z)$2^@?YZuh9lORJn&MlS-~(C|<$C(<`{{R-&58O{FbhIF1++HEm+9Yp_c=*sXotqk z4@MrkbrwZ;%Y(|mN)fFQ!)($wTJrs>dcl;6_Wcu;EhJMs8SCY3Y zQ<0dbmJUt#%p2tg)4W(6ogzIjM$KrAh3OwO)>_JsuF$$d)h$2LN(i~n38)n?q?H4_ zz68OFKmG6r{!etpJKYruD%LMD)m2t1pir!JySb{8H{|ur`gRB?7He(m?Ws~gq4JW& zV<(tcc_|vqtX4p=q_MGRuA0q<*KO*WCzx2DERitP@So(>k0Rk3*tazGu?F?sG4jO3 zImAoZCl3fHR8d;Kf!28 zE?%!Hr@oOhh*8J(0*$cmZudqb>U-&FW0L~v%L>o@AX1&xtbjtL?Cocj1f$jYIM-I3 zZA=KF8(R77yd6_J16_P+InM_!x_CESLzjl1Lh8Egk*A2dYb3uLQ9CxL zx;ckf;d!5@8%c|Opr8j?rj>}Nhg$+xgnD+m2XU=qz0i)h*7nkC=giQkGb{^sE(2V@ z=S!cVzQfLiXRvQi{o*s!cV11I1NA+T?0T+%PJQ2bt{#H9gu?T&fwTVj6q zn}*_m=WXLwf{8r0zbzP1z-eLR_OTu(q+VQm?nKlbM}AkF8Gdfpva%-Qz$%7k3MS*w zu9c0hPsOi*O1xWRV>9t9paOAZl3-%p#jUyJxj57@t5NdCfsXZ`oDodaF~ia3>-ZH= zL2$6nx)cY#WN@^DV4^SCH4OO`aQ@S%j@p~~W(88O*!?Srx-Gc37KgrM?U7|e0fh?0 z-r=?l#I@L)%}vC$VC&O&kZY$4J?{|L!oJWp8o7V5A;g)XQ5ynHA>4Oy<}T_xaoqO- z_U&Kn|A6{7RFr>IKw2=B+4E>#?!E#FWwFD3UHeGZx*s1BP_1Lit5xp5?Kp@74b7YF zJcvULl`|s;aj2nksVy1@wx#bv#YEduGPD;()ZUl&L%81CozD)@dIx$=57By?BYiQr z-rX(z1X~vL+cYP~5ViMU_y|%57hWAP2BmCEEO``%u|wC3kz)m1)z^IVycs3fxTvMX(Lk5HRX}Q?7(`EXy)Zz)giiyzj2k35g3O_Xb^tlQ@jmX7=3# ze5dc*9iBQtlDgZKe;S98W=Ff{6s}m*IDLv%%yn6ChIl@4;yHsnw}ht&wxh`!ErA^# ze0{EftOPcz;~UxCx9da-v2rF!oDKEY@x z#i$#jy)vTCDmjrMkEF>{f{9gBGja!$h)275iDVqacG34LCTi4h_*I4k`_Aag$drJ` zv^QiDOst|h(lHJ5*ggn}g!*K)`6B_OGFmI;EL z2wW=)843{3gX@z7JkziD?uENRg7LJiCjTLtcgQ+LKwUEp~rK`rSWG#b&0nO@8o zA=d)lStDApyph5}#I?M=RRU6r#p+tiYlW!qqWbzG30lyysr4cW>?0PR28z(UtNrF; z#I@tu009LXC_6Wb(TaIGJ4+-OS60_WN}!yZOZQ47Xqnm~_EN;P%G`J<igFs@7tWcDB>U+Peq8drdh}&Ncd0sxeT#a~cFRQJQ zm>cCIpINPe)KT|Z4Wjm$+D!_0`DxRY6t&l}XM(a8aO|6qtOXByY9$yMhQEv|JH6Qv~_u-7B5S)LscQ1D}N({a57eTi$?Vdln;QEzXa znxV9u4xE|Mij@t%Y>;3~JF|4wAb}VsGXETqv>@(^*_qhe>cVEw7iv+yC zqjsnT`OwPd%NAr?63!tjl$P+=uoX#5bY8Y1uJyhhZiUnteXm*(^?od~jV}bFj&6*$ zL9TT#I@=J}GUl?{(a24$&UV;$LCaV>>ic*gyF-FGip8q&4k)Q*8512yQjd!tbRwRc zGp0Hv5HmT~R7|9fgi35kOQezo8;qGcqADh48N7R?Ptd$w3ky%+yh8(v1Zxu{)hU&A zArCy*wcZ7J?y3lMA)bdS%ugkl2b_zpKZUZE@C2SBS?gagck8^tqYScdH0SU1C}38a z5@i3Qwp)1-B2Z4+*&n8ew+{yGY=+TS%plukI}&qK(vG?=DH(Z&2EJ69;gCR*q2yS_ z#3V!D`KSZA66ZnIa|tB!vgWg&qXm=K#-5`E>+Z?!g$w4X$mvB3W|PNy(a1du*)QO{ zt=%~<(7aupt{2Dwk63d1B(MPr8w~{85zKkaGt-BJMRFFsgwEi!viK!(1|tt%zeHm0 z?5*sFVm{nc)i1%VL5X>VfM9E2Zyb=o)*#r~Jb>msF}gi~Op7J6br6dA$dQVPV(u8& zA4EK_JL?{TJU6@TL)=?(gZ%ROuq38Ol$d??@D+4KyA!cj$Pw*VIYy94?Hf8BkwAK6 zZsVL_hBST9WAqP?BEz(8&2dUBp}^L=CD$pzt$JW!!70H_tl$4=Ok$fxmL937AXt8y ze&j}je@rLmRJ{jtO)iO^KDGUcW{(e4=waFi-N1)GuDck2{QE4v-mD*&z@BDXGLIvs zwH*b&m|zw$pY=l49^{&8zw z*gY+Q-PrK1iiv$2ayn)uc38uxOGbz0pptkehUbuy443E5Bc9vZ-x5$bf6SZm&!fJL zH4R?GbMs}u3)g#VbHj_)d&~QHL4x}V!_K<}XdH|?+Y87z)HSs%A_Xm~-dTiwmz}DZ z*ms7(`Wh*y-SYl5G^us6iisw*+uZI`z@jwagHg-Ok&2137P_>(L9(_|y!Qsm zTJN@si9GMvc(NqH7B>O1T0O{t#`Qn_$_jw4r{L; zne%X=w#2qD{X!h?zCBZ5LvsTc(zRDCLdhoZJ z6MSi2gD%uK*06@Sw$dCSU{x9&IR*O$j)!EF$jF}`RzPc-&NKRky##wA49GCm@d{Bp zUgnO-Y{$tA&Xj>*qK(gR2MH*8<-rB_r~+EjbcrjI(L*pXakV71IAypHiQ%F#8EljK zmx>8CEil8HxtgdwKZy!8IOE58RvAkaK$S`i{exETbvjhdZV9=ROFj3gd z$!BviG)>-Q{k#mEiT_mt!RWa*PaJeU@XF9MIVSeKaBa)-qh1+`>h9{&f(+e(d@-~r zv!e`+I@0rsU`gSSz-YC;MpD`6EAh#|uo>c|1Ov&rwcIx{j5H1M*pdvAHNpIeB{Xs= zToRbIkxcKp z4CB<9Kz9Jm`+U`~0re@k`d|aid(gH{K+*lXMx8+!B!xG+h?(=~Q|$;l zuU_45X?buE!xKm$n0O#7Wjd>}sck+*tGLp?c?#E|t9v zte0rsi`LL3oVT&?{Uwh8`Mk?*GNRsp`%#9}=Z=Vs<{jScOrm*P`V&bw?~>Nbq;B3+ z_WMuVnaL}EXHHY^bWlt_@Doh9=P{FaLNJvT-p;?!Hj=~EtR(0qtF4t_B6kPnFabsF zj+}I6L+XhYTQ;K3=|3c(80&@h>^VuGi_-2hf`KG*O`L$DO>8`Uk(-3MnzwzqNtkvB zu-3=wfxvD8a;I`>lu}FNu!Url#{C z^+fI*!9d!7peP?vN6WqWNnnrXj#W&&jMDb8tN?M%8dxNta2X{!^O|7dWt8pXM-P)Q zLe8pv{Sfw@C#jg|3$i928I$msr*Fh(ge&H2enT+vDof=?O(Ej>;z&kO5=7_r>@0$b z(Ru7mS23FR$l87}?7Pf&P>iIdpz3K!62-XL2Lu$-OdT;56VpuRhux(}&WoH;0t$Pl zy57UmB-}gAY&1R zl$`5{mqY#TtCz~LepkJyNWy)E)g}>8*p+lOpAbykl>{EXs6^DxDXB6EcO@++l}Q+_ z?a%jCA+Bv*#tA4~^62nORfuavO}*6$=t$Ea#F{RS3D}mVvrJjXae|4-Ior$UHAvPn zRxb!h^8qZ~vXH1jcFi$6W^x^>>zkEHG0$$k#* zN@S%01N3vnn$dv${3uDl4XUi@2pI=BkYhBB3=VLp+H#j1;9zzX(+?XtaAINNDj2Oh zRY)261*RsgpD_+X-HOh^L8M#ly&B};Ra9lNZy2U1k>rnI4%Wg>mL7&{^zv6xANFk~ zxDx3XCQQg%Vzz<_&Cr)w`v{c2lTVHy>0q)rg4QvM-)`nWPU$sHnvtKogg0j7sirQ+ zC}b^uQ^9D~TCaTCv!K|LGFrx`IXl(%K+v&4FHm(V4h%XxE0MOFdl^ zP&#y7!D!A?@{I|+3huVs;kZRMxt)WVxG2~@$$?#{!Pz@m3+MbUwB%qNXl>J|9cbPq z`?nluG%mG#3ijvezJk$q@b<>0(7M{ZqH#j${AiC8NxPFVCyp3L${!rao7Iu79~{h^ zqvz{CP!9Jr-R9yz#vdDETxexX?5w&tbX>R8@{e#M?(~!2IaN{(hE#2suMzn?Y9;c!6N1{&zqf2hN zMdu7Mcx<#d1CzK=%gqd$^eLZpmV?FNA^+tp4D#aP>@0FNMW@MwbT6h(J#gxH=8~Rw z6Ytget)qkU9KQ{%b~0cgSoBNkcYjFzsye^(plbmx^uCO00R`XeMav?xLpm;4f&nmG zXdoC};x|o}mJk;fr_Bo!JGo=RixRu^+Laeg9c_R8!t^p?Qm!`m zpdA$V6^y>nVOu@$p}?;>VEr5@b!S%8el&G#l1)Dj{1zqvttb??2M}wSzLfw9{Q7b6 z3I{H9Y?ve~9Ne&~29{P(QYnlIgB&QFzL*+=$lfPQ(?K+D?cHOLUxBOA+ViI%nmHTC zu3w1rq07=QICC7~+h1tr=zNY42>ij{gu%{L4*dEt-=$mSP%2(r4cA=J2lVVZl$L4L>qxrPSz1T4 zHrXxcBA#EmoPLv<>5|qw{tf z#o5TQE6UY&I{f_3mZDJFzIz)*(y7y_9mKgyT-t%l@`>wq2S>{G$ruOkTfe09F&LSY zfkF)V+M<7A7tPSTFuw~qZ;e+laJ(=!zK3Q>^KNbrF08)b^&W~2P3-7C2M-7|k=Zzz z^k3Bf@b-IE%^bnzsRD)b>gWLJHd_Z0FrII*#suoQ`tX#1uUCrr*diY|D}QvGtK7m=eTh%tt6Pg=`rDvR~eBV4B9pj^A{XANC7>)7-S(XX|3FhyVWP zG+q$ITv+&6~Npkf`;4K5UlMs28s5!u#Jp zZdS4z#`ATh#oLdSE@paq3w81F=Z~8y*nVlTZbtXX*8-0{kHxx3_>*P=i|YKQF6StH z+)O#jY?tcd;ZK?+=EO_4bz1o+O0!(U#9f_j<`ZMh^fdO}*Xc_QAJZ#$wzNIeIijD~ zH1ezM`JpcCY5e$WO^58oW1Zmgldq)*R69>~tv#QNG~<#lKi7#A;*XUw>zc`zx~Iuc zlsb3Vey&cS`9x`Gprc(-A1r)AZ$6^n1oh(N-6vCKM1I*&ujy*~cnAtp_pY$Mxufgj zW-m6Ezp*|x)ADh%U~YLzR3B}h{NE3oiKhjoZ}o|;PljNgf9z_iKYICpz4tZPJV=jY z;(8FjJd^s}GDyeHKzo9K^kvt(3P#86y*1Nb83cQh&eR_N$y#o7U%}|;=aCxs%OG7E z7F-+?kSa?*ZJq4%YWRa)O@F)$(px$COFRyBH-!)4NOyc|?w}0LQ@X|ar$iZ~a$(i@ zbAs?Qd&pB+lit!c9Pwc7P){x-7`@5|h8GA(|3)WL5FGO@tI~^shGS$gbCZXF zbarE%;Es9g)DEo}!3l3gegnKbOF;S-V6*D^glDK$U@cWJQ2ZJAd0GZ_Ukbl}S3-&1 z6OhX4oc;%b(OF&g*L;%noGNk#`nV)yEzAne5Nk4*n}GE1qD0)?8I;!S++%6mrZZIr z>AWoMDiM&{|Hj+y2}T!xjx1B>$li({H|LNweS7H~u_nHqNb>~o2j|WCH1sv^MFpcR zrk|L+D1&rX7j!;e@V%^+3RO=R{B){G&zQO|%OHKB{7G-fmO<+1+o>4HqMjQLlLVw+ zK=Ihet`O&T>lNZW8@j$itPSl==OE|qotYfsJkH-Iv~LIKSP8%hzarJ4U|e zc`Es%fQ&cKGgLbQSzOK|-7hcV0_yoo#8-g!ewp?c5NkGlbCI8nyzby~5po{v_Z5+} zsr3B@N$17>8#GJqDi}BlSd^5Iua%;{669QX;xD0b2dvGvXxu@K{}ysCeym_L=S|a+ zJH$Ct^55~XyB3ju1@2H>lLaLAe8}LBevTppq>i0zeH-_@OV{c=%@fMUGDy|!9cR&} zGFGX=@pT^k1@jC?6G^r|qtTq)tvw?q9|k*Kpa+SY6)%WM-`?g6|4Dv*5p;4;`Yuwz zXz6J0CWqFxP+TF9fSw0_b`p&4xpsGxfV3T4dx{1L(Cr@UBpC34vkd}*U$1s|3MIhz z#ov?!qYK@#y)6QQUF2M6Bb2tQm5mbU`|hJn0@A)8SW}85!1tAtT?7NaPwU+k@x$Sz z_f+3V%lEal*ak~5y0)fBM88R3Cgd7WHA(8}I*(bzHX+XC&Cw>rxqGkky9D^Y#;GJ2 zeJR3bi+l&VgTJL3x5Z_Us@pS5Cj_Hkxia;9Yp&_e%~t(fFzIfFoJW+?1RMF%^zUz1 zIc15bw}$-TLU^X73{n?Ck9@NPqc4K)tqNKt_29VIBUmD!K%8+)iw!? zR@sg=26>A;7bc+feb2Xc))*um-fwS5()!?fy98w2$%Tz}3Cy}ZqE0y)cfuW!!{`t{ zU6%bSD6JAC_E-Jfo#uFuxA$4Yk`%Hw<7)Rx;rjBFnO>HH zp66yf1fzSNZ(s9C;rzA;5B*XQne>ulf`LnbszN{t*Ak~j6O@8gSvI337(GjjSC(H= z=&73ay^s`S{Ao5GlEVDaBY9kv!g!wAl&(oZbZDJzTa&_wtTpQ*NcyD7z7D15HI8*8 zE$;SjNMSseeT!{E))>j&CSon}BHKo+9fkE#$XasTKrs4co1;tnjuhsP9_?Zb+FK#; z#*n?;$D6yz-p1#%Jt>Ii_PO&t>D&B%ef{S_;f0F9-#-&(V3is8_59bAp4|fYc zE)Z*>S!qTJV{)r*KLe%1Ogw|6TgNSzQnVJ`KVL%5PjWApi1V$@aF#bMe>CjXT|sX% zO!Qr$aVw7R2}rNO&a6Kt1^J%$FpxvhC1dQqMxHJ%C9b8Q8sXSFyhgf(mxX*8q+bNG zw{H~M>Z?~bYt{4bF@k}gk@Rep+Mu@tLYMb#fb*fHJi%zrh4Y1{GI&gRi&~`P+JL9Z zEe3-1f}Qbx15*!P*c9K5h!~)|dD%)Z@b1RKPE#4Af0L-5Z;G9a?$7jFp$FNN>5F)$`K->BN5bg{X+9ZBb#*W_jJ=a=_qYl7=g7X$2lcd*{Y zKzrL}J6Hy;qOMV;ngP{_>_Hd7=xT)RRMgF&S#ovV4OtWH7rGH^59>!723A5g6pHkUDt0IL?+9duL(${i?YEy!RU0+(&iarV7lm=l@2o?EDEf$VZ@p@ zzB|moG9%W4nUEQV2W@=S zj9A-BcZ@Ri;KAjS>=ps3*AU{VZGzFSA#8-ZEy&)6*#iQ;UbL(gkcELIgB^A!j4s)11p^m4okarD@7Sh26F(S`_YAT2A4pm_TOc5v_vm(Q zF6gT6l?fLzS*fu=K>E!u=6>QQ9QV+s{U;i?OH%yF!0aJ^ZFfV`OS_Y9rDc_T6x&zL5^;oNO<5XY8yTD zpjA{+GR~3U^5wm~W#3bC&|=C$1*0t%m>QZdgY>O|%*EL}>pbYL4db7xq6>%k zb2}x3g;Wwv8PmM)a_pyC1H0$Zm^Dz=HZ)UfSGLA$SF#(wG}W#o{#Z58cDUB;Z@Q|e z!f;%}{=`%<$6QeZ*$e2KdSE+Ox2mVg0I$~DXCj!kjER3&^%eVQ5B!{(@zg%|7gZHY z?SyNed+Xl9ptg+ZzJ~v$-0oGy!)AbB`mbb{RNYygdi7<<@OA31yqnEDuld-ji`Lw> z*cv5RMXl%0)po`N!7AOeRxw}i3Bf8PTmSs3HuHQ&FhZ!OIx@pXia>4eKbOsA(B~4O zTutrYd{xXfQFy1K78^^ocK;EsVx_=6YL_iOqwkrtLVvX{yzJ1j$PfDx>k|9n_cG%x zNY>cd=CA7bd$dMXT#jT_a|%D~i>O6~zIS5jM&I-GISyH{tcLPa1gl+eeqEf>iJl|2 zp1zH2*A5V@@&nl1YW3o=*>QQyg1xeBAxkhi(nV#q6Bb5zLznE71*=PDxQ$@+RdG>b zi-2^JpdVExS+HkR4RsNW-ZN%(+esuHyH%dCV7Kc#?IIYx+YML_2uSaChm6_gizLR`HYE2Q4-g&u(N7F1=Rr4Jdf`KhW-(?y} zo6KVuY(4#kj!0>}K+=ZY>kAg9(zzRJhJ}~NGUEgTkD^Uq6Oi8Z1!C4q$XaA|{1UNd zOXdhjujmY8&9dMUS==z5W#J_(;XYTGe$kp?y)`C$Pp7g&Bn}bgd_H0CiZ1wUS~HvHZ$Ej-R=(C zJrVt~TZl{CGR8tAGWUIo!+^OD8FR=OV{S0W0?Pu#C2oviv$8~q%9L0~;QZ>#FaJL) zGb{72Q_>S1M@G|rswYx(pY1Nc-9MV9mEr+4b-)9pZH@rgur_zK@SODbC>GlGBLIFK#a7oG2}#NCQMhticusm9 z#kH^>NwgZ6X^6u2d+%W*&q)vG{m}!Slup1K+bvpvhYts>JSTlWssr4OCVV&8p7W&S z{V4OqP&B|N!L5R%7^24JnejkLVCE}$miN-{tbnfUXPfFj9S}3d20c^2P zYO2=(e0s6F4s~RI50BizeLGu5?-0JNd1*;Rf15(blkkz+??N2*6z_Vtte_4{Gx70sPtLwrSTrfGv7)`|I}rzUXn2 z)q0}88}w^DDY>1{yMQ=pn>UnKq!9DkvU5EJU~{Twb|VGgbE>(h)d29@2_qeAseqM! zdZs3Jo#&*Vp2>Y?2LNAAbme(zcz^Hc^3#a^*7e!a0Dk2wGNQtW_gGh_$w>5A=Hq>y zlrGoHbFKFQc3m9wwB09K&DNqx2l#dI+@Y>?fCV|W*~jSs4|4j`jTz!JEspc*-3+|V z2g=@L5N+PEQ04#j4jl|~=tyVhrEC=8xP_~@pT!7yv)!)k{=2YGEI8RDHdDnE9m52A3H8v-Y z@U7=w=Mlb_D=PDG-&;9V`GoIeV|0Nyb&IRu%tRsHV|#0pg+z}XOlA}T{CNQ9^lTBp z!lsS(xgvmvO%qYM#l#V+8=Ec0+kC5Iu9%!toAOGC{WgX=O7KbY ziOsAcqCGpXRuRY8@?K^&-rotMS=B^;yE1LnM1PxgIW>5jTMrR;^eHjnqRIYP{sVwL z+PeUr@SOCM95L~IwfKyYU1_N$W{gr-d>t`cS$m(?;Ss@L?@*n%2#WV7>XPe;y~&?> zUXPcybq?{I^wZ46=Jba|L@;!BnkQ?If1GSTcZTPLM^D5X&W8mJL@!SCy>7sxu%T)P z&q;r@Ai+}7NR*z_EjHruqh=Rz(y>1fTGm9Y=}k4xCV<@r(PS*~obcAXIR4sA&BT6h z?X5He>|#;BW3?IJ7mHeID_a15>A^m~)`ItU{iLgf=N-@@2WFYW6D ztn|Z>BXu)8CwY5gbyRCUnj6FqL+)+Xn(^Z^&R)lJ(qGKX-`X(~Grs8qG!#Kv)x3`R;_3E z;Hy}}lbjx6CCPQp^$@d~y`!KPU%kU07WNYRZ7H<(0{q>=+R2{Wm@pn+osR55UY3B&PxlxW88!8j3@Yhr>AE=A@)0=`z23echq(H{o?37nmrQ= z`o+!>qw|XSeq#2V-pYT9`;O}^cuM%L(%GK^{Miqkwr2of(YeLd%X8Ro1kA<{66^2S z#`8gZv{*KV28q#PnbJQOC#Iv)Nt%)8_zGI@M4YtdQ_oU{0RHTU!8tNSw0Ya;5K+1< z(J)NJTQQF&hw-)FvM@DFto?({V1!uvlV?Up@cp*6j*SreouJi^661XO!RRPHI~bG3 zMv0MHI0MFr^=@x{bc`tdcx;R)yC)S*eh?EJUzdKrnCh%6v z%pRT~TCFMV?j+G_8soqu?mK1$aZ=x13yD+W1b9?>zxBx!?%QtcpCWv>*y3IgzH7IO zrUCZ6%|S^C&q;r4E~zJD2H@wBaZ^(>xbNb}FJ{R7&No_#HlLfCvErkpaL{TcMvJp9 z{UvdHgZZhK0E@5foiAPjJicyf$g~krg7f~o4X^oL`GSq8`Pgj1Ea6+9`)U@ixjorF zOOEryoH=5gw;jyQ;UhIa+0Jv)_sXU>i(e6I3D@a(g|B1XhWS^-I+k5hU?R-&`J?40WIBAc?nMxJ_i+vb!Vq$I)4^fOohl|AQ5VO?bJTfVM7;>j~+ll)& zR_r(dem-R$tY0FIvC`Hpp4>j(V{P}hmjHfCsUz{hG7-1z54)Dd<>}}QxN&`%DDBLt zSs_NMsdb+xB{v{@o8GPf{03x;@!={FQ+Dre@TBBD!lC8ORe-+LvH?X<;(AH{4EoS z^!f-<Yu+3xh|LAzWIHKV5I4ZJKu54$e%<0`qhnNMj8%0B5y{zOp!wV{0TM5 zo%V>l8PTOg3Hb{r)MT~GBl2cMzw6FlJfSA80<9?WX2de-&Uc=Ai0V#|sV@|RCA68_91@@8Z&G*-x8Il)M#$s_V+WZ&k_Up>J{n=Vcic{5UM zb?2|0U?f2oFN(Yw;mq!Q*GX-%;SqT=;wVfI^4Cu=Vi@&^ycq$pi9-H{*TI%045o)3 zk!XbZ%hj)Mxvi9!-4O(vCs;|E^@zM$u~_d3f~^w<{zQjf6nWbr>*F*bfBS@1*;zD- zB5y`Is_qNq2`tsYaVcV;N0=~H=m`Ezf6eUs<*(iVTg*$&=VnXh*P#l*fD!f&qx7D5h z)@LQ`D;|kA6U#Z-LjHkI6Z&C~L~249gag_fA^*_FAT+kR1)QJnp`5?!5n)z@<}w!K z3WAa^u;#jPD;FuI93I6xw{Bm(_P0OYym~FfZAEZXpOPnPyt=7r$`=GhzTA|X3Ppua zH!B{ES2qo&B0*5#%T2ArqwwWsA-`DEcy(i+atrc&xiKV^hzehBY^@%RS2r=+Zh$e_U^@iA887CaJfM{aIBZ{sNPKvy(zl2bZ(hpB-T8NYdKrmt6(zoo?k11Kn-|NnJO7UF z7RzW8B|f}NSUeJ`7yfkHOb_m~#kH_5wf~HtOeW*GPTIc6b7Rj~Nd8nd3^~eCoSD4N zOkID{w|R*E$>@)$U-^A-<#NE4Z@>BOtFJ?D{t;I3>UH(Mcq9FpPeY*@M&`%f`r+2? zkZ-i1(5SX>DW-*u`HzyrLyu9F-8%m>sKBqRhwp0qd^UqWV561oTDay>FE`NUtwp|(ZtB)uh z*Ih=HQs-qcJkU`8Bn#zq#nk1?vM?^Wn7T{NQILr%rUL)%7!%H;AKsN|IBhZYr#8w< z7HmP7wR}8F!xa`#|9j1gIFZv8P@!}UC5zI?6!( zr!0aq)>GGh1dGD--+v~H<96O_W`88BF@?$~<64=0g=x!pMa{iEY8>_--on;>9n5Gr zPGMk80hPftY;Q$7V+v@z#KgMU)j%d5LYKl6FmmQpB7{o{l`EKkT}!d0P}zf-dq^47 zAI#_>+EfHR31(6dm!;VKHDf@es`fGihr2?n45+@$ zh+35@-9^TPkUHujQz>x!flQTvb_1De0qq1bH3F)-z_dVAq*P~KU|J!HQU-wwOq+mG zFEH&01sEdh~han#hR-Cr;hhzlzIjG2XKN1-bGjG2RITal&MI?FhO`fr|P<^^Or%Pba7V=?nvVTT#xc+RreD5H+)^^`9|ZD9R1{n2Cd^kX4s{#3Y3B zxmk*$pD;QIGg(#mPnbIbvVX`VL6pU+Qa@zwLX-`Kp&u}MA)EVvNfFT7_ZfqL?!C{X zB9x^#e2)PT7O_Ef?=klUv~rrsfT)yJJvz-~3S8-FCL5w$SfuzglLKK6gpq1_E`)tb zl}0Vk6HtASJRhQ7WdNu4D}ZR52{;V$D}-o=QOyPURSMjAkYAO68iM?)5mLnm`PB%V zDVS~wh41tE3Vujw9$eyJ|FOix1ap(v21OI5hSoc;O zzx8`4IK{&M8^AJphIhA~S}JL~!PM>dwU%$LiizPw6hsz>O()MPSqsbb%w0o+K75Zofd2siFW{2wvb9wt?B}JpJ)a`q3ci)~F+$8%)e_iKP)v2mer%s(Zb?Ra)Y^XhZ2b;;qoh}~V1 zL1ZirT=@V2dmIGWibs41HW3f!l_10LP+kc#3x65$5NrdUjyy`h$2_>z67iUW7(rZr zb9d+`5s3EpyW}*S+8ug5@+1LIb)iI0_SM~?A4h&bz|&k}y+j;x5FQ!!CH zLjM`w;|M#%!9{GBa+%HU*%I1&#c8J*P-VnBZbv$^+qQ)ET=8M2hal7cvuOuh@#izZ zr_L&B98w<4~+nEh@ zOug6Z>QWE0rCZAKqyPBfCE(%KZYlja_&$c$F}#h^_tS4YNp=q2-i@K&%kT~-KQ!VY zhIdkWSGQCRC;s8LUxkL+$6Z?L!uvVDo8gBkeSm&rY03Z}r1W<=zn|epDE&S9^@7n%E^WL3!oPg)MrF@^R*)VZ{ z(l0m!I%juGK!tyC2;^XgKxZ~PJIjb4It6mDQ=lvR$<6S-I+RtmM-qMSnb1FTl@15-=%LU`UzKGNfmW9GNW`J{LkF*4PQZ#DaJ*9@z@U{q zayMhdDgsvb$o2i?`=JBZuOVP9{gz@WG6r?-bf_`{<6qY!)d(Z*BH->GxmXx+4*~b~ zNNvT4^#p8SM4v=#Bw$mITtAH1Ou!bWl_%a0J6`6k65-9%YKZ`il|52|4{i;exZ*J7cJ<1hx`^&xDRaj*g+87Jq3!R*)RDEbDfF9Z z%L!P)Rklk6^RO2z+a(dJdS#WfM(mY{)dZ|z#6AzPf?N5Xhgi!c9`z7+_R1~t(5BEw zzA9v@Yz&>8_6iuphzGNuYzRH&A}%6+e6%6-65(-d zqeMJUz#b~m5gM_{!#pT4_e%^|w6|B9CjYTI^gowBOTba)S$Fn{6`@s(_%Z!1rCrlS zyvB&N67hO(ZiBl=B7V{<6+RaCulhr8T;@qPO+X5U zI3I&M>|9yXU(8^FO8ZXT5UUee%i|$9DITLZ$Iu02w5>hv42mw7390K*GN!dn)qy z*gi`4_hA$pv%O#2K4uf8H}`>^dl=qA>8*XzX5DxB2cta=PwMFMcNyN@=WHoc)}4Kl z(%T$1<=~(8$sq%VB_Y-AdKZ3!^B-h*Kh=Gh`+tz(Q?F{!(y1yS==mQM*P6QK9Z+CX!!nLEYC9Wa3?=09x6F(gZVOq}WxYvc(^#i_-;k){C`42ICcfZUZ zO$l zt#B!I2r%*=><8SD9hmTv+aQmSVB|m4FO@?M-pBB>4Dauk<&lx#yF^r{l0vrvE2-D$v1k&Q$;TrgEqbWsij@H?xrZ>kLe5iSi zi`0Z2ixigvc`>?KwJX|f)k4GKoNz;Bb#)|;UWv&J`0B+CEg6f%F)Z;VRkt#xTB)R! zgl4x_>$Ym@N(#dle-+RrfBWT)7M#wu%&N#}sibPgz)5kVziMTRV%Dj*WmG+(#;99E zlE7q%Zw%3Tu1ZrA)!13o-$5G9Zw#U&t{HBB(`i*t;(8$lDG_HYjM%`e4CfUEE1QY_ zdY+KQN-CqyYrYa6rGB@(kv5}Xsz?-&-N_&cY=mYT?z zG;z^dQ(LU1sKsP?!qyBuR*+wwNT`-oY3R0Tr0}OM$(JTaz_9eit>Nn8oKl#Kt)-%~ z6{}^gk}kW&NUAxq#ThG@7rJ^oASfLX8(vHG^#NUl784hTBMqgR>*FahRZF`=?csDf zW5<;g)S5F_zZT)oLKXDW%7 zH)PYrjRbZkjxCKvJRloeo*3C|8na9kj1dsi?K3i;euJ$^*hs3$o@ik)a72EzIg=d?)(W|8<- zxTtWgVneORN|KMmz#{o6G1e+IrL?Qb7>qYD89R-pD`xwA6?~!s3I+yKPh4o(hN)Jm zR>IWMl&se0#OJ~y6tlu5W|kYP(JZ?Nrrso5ql=o%=*-2`%7XT^8iTnhrWMl)DtnZB z6i_w}J5`J(=1?=L3G0hQ+duefLMzn&*nTdlIUvkoQC50m^7;-_THNBFiW(!KSb0j1R8xcuZLTgh}vZrz1vMuE0^<9bnMOj~g0tWE`g?qbS~kOL`ZwT6*`$A|2{pgH@Z ztvNOswFv)`2oI~U2@31P>_m&A>uSo1){%9g z+LaQF)mRxls;hRi#kSLyYA#mI=xj=oQK3s)h{(fdDCUN1$b5;GC_i%v8fYeUU!u?~ zEd{MY?P?&I^{-zZ%>0b5J6i+%lwx$!kage&C7ny=S1~i-CKcy5(&@C^G?n%RIOf19 z3P~7FZzFMdJjK}rB~vP#wlp0PcZKWQ{aIcO}Z zG{efXY4uazeN7k{n=q2{EV6P9v%RcFxuc!e-!N&QY_;BGRML@S*p>VZ*D9ukz4c6o zk81}pHf0#CnKbfnB_S67QHFlTeL2Y!LB_I?TFh!3_a$T$VY!?ksn=Lg(qPIfQZDMx zm!w*OfLc!EMdQBxF#Wma0NlS9`3Wbee=gN**PO z=h~rFCI3;bY@wdQaW)ylMV{DsR;l)_gwoVxq>@osQ)UKxjhd8;X^0APtT&rVx}_`^ zbUI`uP$rW_ODfVK6kME@gO;MRb%m)Vo7GZman6|08p_pe*W?{u&*$?|i`G!Bsgmpx ztB$iQr6q_PQgQWQa}M8TC7q~U>#qJeCXh6^Cr7&r_voD3t;dBb;$d6W$GW|>hY4=1_nB3?7h3 zL&YPkViflBmCd+r`gB}di=#yY{G;})eyFYuy0l7&4wELULd8LeEy0G0gFL#V;j$c; z^sY}~C@1I;4!wt2cO?z4HbMf#(myTlhBd2*RS@Rjp2|N(yNH>9Wtu=$76WB?%WC!Z*Z}aCLPN8$)F5p#xBx}iiN*Ng|fEv#k2#JbIal!v#etkpWTnKdQCa>O{8t1#RhECP4(oxkouDUXPAy@J3W*Kbtl zmk6qW&>@=C5?w+(k{D^(MjD|?@X+IJ1Fr4FXxosa5%7`k=qq^#6nmcOh37=(AXG|R zYGtt zrQEr$s7$Vr*aO@jEmsAhdbm|9E`M7_We06ZN(lQC$3ms+7G<~x^Mre<#r&#DTX`yl zoq+Xu$yxxNLvd0~43GSLRZ02J(4~j7vrAelMnYASh;bA*&~#T<<6i0uw1h}WF^P=c zFq9j+cylXaTj8tY*id;llCe;p!S zVLTQNmwHWGq7|?wM&gK&73VPtM<5YEEBfdBu zBd0u_uCo=BWQ8ww5K%2Ilox8G%q!VL#5q6nrYBF)TL{30XQ$xcpVpiWp-#1JDHRCj z7VAPm{v7zJas=d?JopO|@;aS1l4zxybS$5;I$cRyEe1F;WNjm@>hMs`qyIU{)_Hof zK_%wr-u%T7crH5sKYCWwmDgB4612{-4je3^<;7$R6IGj|;$|Y=MV#HlmllY_6k~ao z*qe^HdodalU1J#O!@N$I%rlNCR3mO*90(k`w}jwccJ6{~T0+q(XYvajPK}0PZbCppwgI z`08Vi@CpeB=w7^&5aY?HsGC`%>6s<8uI!A3rxduU{GyC1YKBICfM@&$7*#jnK?iM} z@Df=q`#YVzCB9Eiyfe&)7`h>m;wpPP9RsO;4@&`c84-B-2cbXD0SwW8VvL%Yc)!Otwwx%e64rA7(D)cHrLkI?6AfzFaz_0uQ9b2?t}$+Z_-WS^beVgX;=5W`_&@XtW5x5UunU96 z^0rqH(~dV~;!DAI9dGggit%`tMw??xG$$JW$|K6%BH$UDxTvJV46oh9R|ogK;$@te z8tmerLrz+{`0$QSObR@&o(#xx+=O_IC%zJV%7t*yip0Y`@wH*O<6q^XL!6m49d7BD zf(Bkt^u>UFJE!^+-0xhcXvW$yx+V`F(KbVeL*NBwTTs7A4Xe3Q#|I&lOmg{ST*SB0 zwA>c8T2QMk`$K@S|rLLH+WSkE-Tro7L7_Zn@ZaNv#0ct1-CRuxY1!8YYyj) zG4Pmy*P!A&zb%h_{ zMNxpd;_JzBp4_0azCu%9*2u>4Oywy*&%$$US2F-znuUhyg#R%-$mCLdUFS_ zz5MCOix#Gt$4hpHoIj)kFWrkdSA$uYf#>kf1acL=`?v5~o@|ADEJBFzo?c8Ja;Oz# z3iuFsk1sCEw=jISYpiao+tMk#;1`z`l=I!+%vE$+q~_7U@l+bvuJBm^zd*~pg$riQ zxE7xd5Hm~LG=qhSx`Cl`G2wFrj=VvKESz8C8!f(CAf}Zv)GKl+vSgRE<68&f%2H*k zB;H3GUr7+xlqz4qQeV9TUWbb#PIm-mI(LWoWP`Id0|QQ(S@^<(_(rjLC$HufC{}A- z?sGV0w;Ehr z&Xw{)s{VtHLFdd1?RrY`rc^=MH+^i$S;hrr5fvB_z8Q2FL5A_Q$SAO* z0_(tt;;_sNK4*OUsjH69J*Vp4+czPEhcfGa>mNzqd#Y~TQ+29NojO(bcLq5hwTX|2 zQ?FvQ!zL}t!ho`f_P0tkRa=XTSOUp`$!B-SrC$Me^Y@?gi6H{+f!fn8u=sXzs+*Lm zCrb=EmY{&(%ClpmS^TC>P~FLy`TD1y2&@RE4SqI69T%#CFP))&gF?E+7Y_Ln!60|~ z#nuiY*VC1O6XkX4HDM@0=_wwM`ssr<_3<@)KnbNy9GvsiksXz1!l4?tKGrhV`vbvN|2(aFxA37o zBPhhETdrSCd-p(5ay&g!2U# z4zcmy!nbt@7!0ocMmQ}M&Eb!bhML`z8tVi@26boT*QjVwy7XgmhJL8NpPH4%vfaRMM%IH(wGQC*=5W{}N)LY0H@LvvDB$E94a_)$$L zG5t`$QC{Pr9W!-xt^9%@?V$V&oH)p9D5kX1B?02Wv@?0egLUyoNbk%HFH&OhR2c-X zH_&z-%qLVaUAsCoptES3iT!^#~tdbN3Oz)+9QUI>4W`bH2CA< z2%_Pk{X;**{Z$qGY_Z{?r~3(ZsC{{L-`(&m;Tgi%p}C~SP%WXyA^kjz2i? z6bFGS!nkue4Y7CVH=gqN!JdA?&Aj(s`v?oom^v|c3YX?E)71=le3Y`0-ef^(-qf( zl~tmIsF`wu4wg;*7=l1J4Gv*FqgG?DaMYcSJ9Q77U_Rk{XS-vZa@7!EC{&*I`P5D$ zM~K~=)Es~Vyr>nlOBkzbRYEw+Y~pn|U9Qq9f;5GzzV5C!VWh&uGpvacRrm2@G$(|k zal%@KDQC>XjCs+41rcs5)Shii>f6A2Jy!Es{w)2v1FOY55uwY%KYTMb37JNNaD!rXR}tFWXbkPOPe^uB@Ceep1zhnwq6w zlaWc)6;+iJ#*Uj*Ra0F<@QL8i{b8#JPx<)qAHVvpW&a)Q;BUT6;VEyiO2wzdQ|8!u zeXLrb?!C>j1RmeiQ37P|5%UazrFR>fDp2;Kl>!*=(#yZyAj$^`==#@R+>H%#to_|D z4EWN|+N3;=nAgX~3oN~V27$UaJXe72HJSv1-XB@9z~?Kn2qe4uLIGgsHVfQ3D-*bR zKWF!u1f<@LEKh*#{lFsd@%q?sfs4182}r$OQ;C4mdzDR>IBX>`mT4F8Ll2p98HXL} zGZpD|*+zBQdTb-s<>sNgMA-!L;q zAa93ECPv_LH$w&ofqP)uNJjX0l@>;@ctsXQ&~$%62@|GWwUZH)U5Sy}JH67$5%92c zXjFo?yOmK%o7*Q?B<+@P^tq~`@Fry><4A>jx)>wyBi{BB5HujabTL8^eB~c6IE=^ZRn z;t;I-jb^{?0|4huOaRU^9dQ0*LeqbI z@1}p*ZT;x`AE)}H`({kYdg`60_6NQ)OH#&`eNXQXtSpx#$DcQR@o6{F(jLBFP0dXH z2d2IblH^?Z)#smfe}OdnmbHHo`O;VJ+b{CD?(RJxuHLx^U%T(bXZYH6Q*YMs_VcD% zBydbggcgLti$c>FWVBKg0eQAR8XyDC1X=u}e0heiQ5L>Rfb51~cy2$M8C>E*cB3Ia zC9Qv%_V!Q!R|GLEE$5_1V*oa>gBdeJhFHtWO=4MWfow7N$aMj3pZlYWt&q)K5wdVu z$h2Q$1E<)gqUE_AEHh>|wKY1xNhY$)mq1QP6TWu2jjH7Wa5uM=E+tujS&4U7n!pqc zPc}>7;;WEIREaBH4AN#awvp{epOtl)z}Cn;4qX6NA1*W&DrF9=YHORj&D-Jg&cW6a z*KOXGrbZuL)mgAbIjN=H=X2N2^uEY6O6yFocUGgXVHH50pfvhAnrmlxJ#8Ix+>LD; z0Y(f)?`Ugm^46`gV3m04EO*P*-nxwz$T8lFTubb5fuPpTZ1xbj+1Jt3>}zamZt3v) zkk4^G2`qJqo}R@FoI((|M2?uW8%&A-q|G8M23=0+^?^`V9bWTIJPX)8LB$_!^u(-? zQ6I*Y4!PALXtKs_kjn{twWL$+;H*=^5j2$pHz*FsOx@JuS{tR6o}%EY&IOKZ!aZ{X zbe#t2?IeT+>ON08SZ6EIz`Vs7VCPI?*UALvbj2Sb)|F@$sIE3qrt9hC?@X! z_BG^AGn!KC#~keAo(?LbF%*l4wP7w~G$hlCD`C02c*)KN-Tt&RHEql4W40;?m=d7B_KRB!y(Jl)Y{P~KFjE6@<$hp5F``| z5?YiVBo#qHL)Bmm6hnF{0hulV=QVoS7eEe;%2>C5fzljOguF*Wu1>^q)J`Bnwoa`_ zmgl0{xDax^eBDcSM zWsuvT#G4o4_*L}_eSLi?jj-2E60wc#Ie;3vR6)veM3?uFPAgy2`57FD#+6AXR7k6M*YWk zmum6(1$;Ec#`4FSX+gxb^*GeCI`7(pH6)z4>X?Z%hk}c7b)$^OuEUFKMM)9sN@M~` z7JL32e{g}`F(yJD9}OJsN72cXAfI-Bqj7TMHYeiE^O|s36kYs1NS{&P;^|g81&5Qt z?7cn^p8{$8cx_!UNZNZUxLOE&L}~EM49}ki*>k!H@+5q{UjCIZ+~A((D``FLDkw3e zO~-!Wk9Kx1*3;dnM6g5Ac?|x2S1sxRyl)F9Xwnv23o#Gm&;X)uA{Qz?l~@PaT$8Au z6Y~vMFXRduy;6T!J*2BDGZ73m{pgtSJF@PN<&oPm=@ zrytj_^A)vs#jb{Q{xVH5%|vz5ro_~pO~oD86=@UBQ1va%!7kB((bfZ*W<3&?JUSE( zX;w>@91KeOi{2lTA?AzXUx6XTA1N0tdEPyQnFVAiGwT#AekUf&4%hJyijS6DLD1x+@CIT(ncI+HG`A7nA|YiCs$cu*sN~UBaK~(KS*cb z<+-8=uN#d3J)fT!;C0)easW*UqRtQTgHN(wSAa1Y)t1aBE<0omcte%rBvQ5WB+^(H zI628PYnEJh31x~KZxhS(C zU$l`o*6EL+g@p-=V}V!>Zk=a1YgM2mPT*aS=<5Y>Y4@YA8kSFr? zCl^4bnw{^HVdE7-hRCQ9hCxnas58pVE#y)dMZ;mZk%+^X+FhiLfC9bD&S+Rxu8;Ub zF|273fH%}t3^tky6H#R>T42_()mO|7#L*lf{4ANyT%+k#;KQzX0};9cvFoVs^Avy# zJ%Q(}v`U<$$WeuSjG<12L1uHj8~N8MCbYrA^WrH27BdIcX^LQmOd$fDg2pIHHWUx{ zq-fO{XgqP1z`!aD5)-&+^NDY*wO4`huG(z88)q@zO+?E{zvJB6z$)~S9bAM|7#DYF z)~fIhs2I?!MQ9MAU9@pmB*alW8=4v!$MD|OzK><&uX{ld=9g4K6&_Mq? z6xn=Cb-+b~q^4R$re<-%h(R(@&9MX*SbSmpO@mBzm4-JSKWg-J$T75lIw&)suuTc! z1@fkZRBgt~%7lEa&tM6%KJjJ2g+@AG9mssdwP-^pmW`5ZY8_Z&4mV|0mV>-1xq>8y zqp)uC#IpnHoDXBL4;V}I@(zo9H;3ez{#abrq+I|P56IdU4vXe#3+uTG!Rd|84~N1% zfzH@4G#{&E??QiPLhT>aV8d~0u9BxGdcvXk;Y3VMwcZG{Hv<0op>Ql7=%jdfJ;+KC zSol_NF<9sLqdkd831k`?yalCn0nVN&3feru;7D*_XY_L;WuguH^Xw*B!y{&pu9^)p zH}9}ZYxe}GiHc3T^@T~vn;}~xkZHuH7*uVvAn#X>6|(x#(0m(@i(Q-QIcKDKc$H*Q z@HoHY@CZc1AyWVHLe+f$Ty@P0%$I2-nT^YI3pn()#do>mXa#r6SmQ2*O0|JqtDzk- zXEgTUV=}=6(LP!^%@RKTZ8-8_>?^2Q>JogNPj>*8COY7E1u|}~k1D9c%-${~WCD9@ zBDyfJFdRkY!#|>orDSO4Dh92Fgkqpt0I>2FK&eF3GYox$DxKvMd~x{kg0=1)Te7@1@MFdpkE^g7N*Is0unz74z07swQG5Qb)mY|+ z$y<$OzTlEFmLyld%Z@Uq^hEObuh@-HE!~$)?q%;-4^z;Doxfu5GphF|_pk{0ve)fp zPn*)D<;nL7UWd{6+q;+jkolyw$;WrI6QBl(c))z`nen!58MXh5#9QAZrdN!f-)CG> zc{15s7AU9KD`jzuv_ARPC2I?cqz(A{P=Og=zV0Zi&8DamM>Qw&vXsxWmy+uUqW#EG z=C&jAhmNvdlNB#kA7x!;V&ZwW!Bj{=M4o5!HxW8JQf@c7q-64wVzrnhcsZ>LYx8;W zWmc9o-k#iiguTtI_}+uhvDOB{=|94rVd=DWa)f*?yR$Xw4aX0# z=?5spO!5GG(!8CX!K+^LJ_;6vSF26Ocr2>@tdEV*#r2;gt`(bZM{(_GKm55tS_fTH z^@`-d!l_p2x5>u~k0U$D=#C1?srKQ-{{agNodRH;$>{3 zWhAtERcP%azZ2S-jKBvUBB8Arb-*aJr~cPQ;CI42M`3Q@GxKXC%$I8Vjld%gDU)KS zY%F1nV!Yg98^$QM%SVvGC?dymHnIXvJi(?sMzIY)-^-e^8IQiyvRK^DDq}pN(=m%h z&%o#Af47{lpV8d>0CD%><~xwPdq%xvoSN4=rEH4avU}thMiE;MSR9PvmK?GSV?4mo zF=l2wNY$qFOvZy#eU)Ys3{Tp4-WYy_7=HX&V)(Voeq&^Kr9;Z0&^w>7D;b5{dD}jU z@en~P^3xcP9`wh&G{yr9J&ReA38xpF_$P z49njphPM#IE7uakJMH~i`b~$FbruYBMyveii_h)E=l%B*pAR}-F!K3RY}j+?5$BoT z9X#0jUgGzbvO`9GAHyNX!)vvtF&wK+43@o-v?W@e}in+3x) zOV3+RI7}R``ItCfe(^I#j@LP)d_{h85CuGDTI|%49~-mhLp?Gm6smn90U?G`H(4 zjK}bMq~I81Jb2%q@*ic4$K-o6{hu_=nD*Dxj9kIIe}pP^cgD|*mD=X`8vW}04TN=c zI&Jd@#PIQ@te=M2?vhGQc{+_p`uv^kCyenBpTD-*7>^%YQ^0s&*{x_c@Q|}hS&<0f zT3u~81;r1lU2)a7`=Hu#esb^2b=WqCN?tJ@RNLc{icZx-?@Aub*}U;%a~eeYZM05u?@f+G$=a6%CjXPgpLj5x%3z&H`-C<<}JA^N`IoT>r} zP4~Th-+O;l?eF{T`P+{C{#S){YQd?98 z8QIfqt$#)qbouYk$UjesJ&pOO+lu*^`)r%0vg)azz8>{N6?ptTD`5Y-T>k$}1N#C8 zq&?qZ_Ew0pHmep-1sTZu1nK!sy&ow6@1HPw&Z9vWl z4S)&7B%A1qGhRj0-H(=)E^^OzQ%2#(Xy0+=9sw|e@{}B^9jr6+KCqtc0Y&L5hrJqW z)?cn*)EX8D3|6`UY-2e*MmRFeS%md&4|Gww%c1xYH!XDtexXlwWb|nd zJY{@Z?uk3vlQRG8+wI;z0M<3+8MzN%#ccK+sKjk3=1%a?;AiD-c)Zg5I}})Q+9*pq zzI*UF!8pJ^b|6=D>KMskI z!}!GFkhgV_4Y3Ug1ojV!l)Gy%A8#CDd#MBRd`J|D>EAy71Y|@zX3{cZIzr}uZ2PjrK3~~LQA~Rl8lo=NY92gQS_w$8;n*+Qj^NLwt9W{Oe5tg@0TLpcAZ?6v13p-O8q&_2o8EDJ{H`O*{BF|6 z>3Hz4D_AQKfDN||rKCCrSf2vK;LEJF3-GcW3jCW%DXFyS!;xVEQ257dH3Blopm-1A z1S@Qn{uLhPUD2EqBwaXi0ylJQTO%rN=)+QQ@7f$S z=-M!mqpCf+ST7D!a)Brgt~SpYCY(TSR;ta-@xn#c>*Akx191f=aPj>;KwUPO@5PBc zpkk`cvu$E5Ia?p2k?8+3PtqbkSRHo+Jm1#tk z8RyuQ=|tK}>`F0FmRWXX22k5g)(gXwnUq=U-FRgdP`8YhEAh%~pz=(X^YO}OKJoLHrjt+Qj5D#ljCC`&0T zw)_}n8D}pqMyV#smK&oir$VqydP!LU)E6d8(M!rorV3wDRuN_MyrisV?7g-<_povdY~Q}EvKWE4L~h1S!$w{jZ}QLwb9BZqAaVUmCu3l zn5-+K70{4+%r)6oL@TvGEjHPfL@S$tDmR%cqLnQ`l?0p1qm`|MSr79YMAZs8L(oHbWCoyPzuC3|E<|u^O%cwbNu)ZE`bE zcNFs@tK0%qt75rrmA_-G#VTKCs@W>vVB4!!`6gpcR{0iF7p?Mbrp{UAJ4}6Jm0OuQ zW|i+UwcaY_e@>2i-$n9m~2gU@d&7=%;)Vw%~pG;lDT!5 z$j-*D&b$mdLZYmThlyOK%6=-GKy6iQ_n{vo%;t_4ZlKP}mfU#Z0qRBDE$9bJD$#N=PUItGJ0B;;Az?WkCklW#Xec$FiWB3BG#`u;6M$-vtt;ciM5boOi9(`E zjT7TU5rg@0ViHm2v2kLuX6=p>Q-~}x=EjMsKwgwB%|pdBpf1Rk?L)A zpt_mIM~lTsSRY1-3PK)4i6uys8h1yDO7tk1YobIIVwO`8VyPDXmI$#7$oyd2!U$1K z?kqRM#d1u1(DiV!f^zX)xL8RWLsn{C@5v4PTV+cZdQB*~5&BsQTyt@(q*=RhcC_aN~FBBe&>AW@4@nepKO zu^FfxitYOWVhdNO`vb&Qu5OJ3L>*(tUl7|UKh}m9#Fsz`^Zpmac80e17xkD7>zDn- z4kRpN`-`0ULp>JiG4)mbr<_77bio- z0U)x1j)#haNZ5{ribF_P8$!ilB94ZNBSahu6-SXU9}E=@gsce_$AFj|Y%32HUz6Rm zP;ndywd>?iae|-;q2eSt&kq%+D3a_@ahlVwhKfe6ACJ0;Zy3AKO`JgyShBl`v)QO+ zRCN{Ss5-g3iu3Hq)m2=eTCul_xClf~%dRfs5)#&$F5+8qWLeuqT*i>BtGb9QKs;?J z>mr({LCo$Vt`c$IB(4FGWWHw-%}7`_m_!Q@|6!YJ65ml-7EW^094uT!>BqEL~Vloou!-|-Kgsn~yQ_(xLEJaL1|JJpNm<~j+ zd9@;nk+4)NVnz-Y<2*&o%t4uzDPk7II!6(+iI|~?&ycW9RYVDgSfq$KKqFAWSQ-qX z0`pO3JY*0{NLU9AqLREFFo-H5_8Y`fBub6z3}P9He}zF*17WZ&H;Cm#lo-Sc5}(H) zR${6x_hqpPkuqbeELKxUEwWfc#J93oi$u^RS=5lXR)biF=`S*>idfIoJ%iZ5RE{Dx zGUZgnCZ^nq_?)Q+2Jr<`4-KN0sf)7M%+xSYiGsRp!E8#!!CS$6Robl7f%&p@#k38~ zKS-BNUy>QKot#Y%t|w==jXTJ^Zrn-cRpTx&eCT9hvuLvG*+QZhSy<~1T?IZJ+ zaX*=PrUPW|HytGNkm(SadrXJP{K9mE%zMV8WIi-Dkh#Qkj7*Q|Ycl7Wj+43Abb`!s z(@8Q*f=`h-$#j~``KCrPHwAw~=A7VNWG)ImLuO_0Su%H-&SCwOcACzUc}KYb=Fg>8 zPCA|vEB8M)FOGRFqDQvADu?~>W=9>daoGV_BU5Ip>QVwHzv z>`)$2>V%q$tZ^HmlY_H!(QVHhLZ8khBgsj|f4Im9b(3*R@qqa=sdpZ+-N%yABcF`m zaby?@$oT0vylrAU&=cS{5o352C(ADvYEThEe*mceZ{V+6FwUEQK1s8jjA00zCHI-4 zK~vFv#59eYj@-|RHEsrS;V@kd!p(-z!X9-CdVZZDsDEyJP`Ay`2N_NoW@3n^4YR-) zd^=YSQq`I((zRi;f&UDCxUfC@iga;U2{3cuhesXGU6N)HP)dNRZagbB$Cm*!m%PxX z&2{nffSHdjf@n9Vi+~02>%u!r@5Nyl3$-v>>ZI8=bWu)WfQwDi`j|z)EG8G(YVk(N z9pj6Zu99gP;!7A_U~=U73ZR!ztl8?JVTVI2fv(a#G{w*Ij>m z9oVh`=gvxZ;}NJQAV;k{D_x1-0nARy9Bqj`AHPd0>CI-|EX&AlEt=N-(&t0J0%ngE zNd10k#n8Q4?(mWu0`_^m&{o`Pacsp-n>=8eKoZBfKi!Jd38g@u)`~bJQdxx|#_NX_EY_)KQ zG(Xl?r*au+@K(cYbydAIKK2+eUlX9J)%8+A>~UaDkeBglLA{h4dlHya@au|Sf$F6k zzi6GRvtG)MJ?#zD!$2c2-)JuCH%TjE&S+(cwQkWyDL)2dIZG~F44l)#FhVg9a2}Wo zBz2csx>3rDxu`c%h{X$BB49iN-vV=)ym-`tjZ$vR6)jM#m-RK$q?ek2xvE85S0fd@ zbj?quwKY=VOU+&vc?`4w^PQHL*)@{qC13Vk3|t5121QFBu^tS$3Ct~WL7$`U4$)mm z{JE=j2=swH?r3#vW3@E#MgOubUM5|L_5nEzw0c{RlYzTlspqHcZ~^0Xa>58056lDt3K{SKljmdsEvk|#D3*y@I%Zc% z<H?E)wFZ1XFm9Z}ekFLZLfB%mCa zMU;J2Ev=C1$;DzV+SwJ-b^?|b0n8GuU{bUD%oV7*q^gP?5l%B3@rn}GRTuXPKg@1b)`~K1g3O5xfsVly;JXECaU{Nq(g&u0I-v)!xRQ~0kd0cmb*)&gM+`)nk9BZ z1YpzNqsg?cMA|6nLqu$EDn}G%mfEghJ2Z1@{;wi96a4ap|Q2b?5eA_L34g*KZ3ERs`{>Iw$V z0CScSRmA{y45!J(eFktOZ3N(H2qUjf%AqjMlZ$x_V3C|7V7?FFGFr=kFHqVfQe(XU z%tgJYK;RNE-)jAUS|_PCp9>YYi#)PoUan|i5OCSgMZ;FS6|(foakDl8sxXW-InK-w`mCf$N$~anM_}Rk})nUZBd8%fJn9=8Dwntx{8)Kxc22 zE?RFoePc`ER_UD8U!iesmA>)1z}9tci*(G2jrx`*k4u}S^_02W8nCKX8t)fIE(0i_ zJDNP|KbH>plzTotyf3B|Z13uMX_l_q?>Tk7fsRTy+5JbsDb3P(`+acnKr4pED^lw) zeUbsHXO0i~-pL8s_^q^T7#8kBCu=kWJOV~_aUa%nR=OXb?b5S5k%1fla>>Oc2AnQk z3z*D+%L`0lzzu+hyi8>v516q8Ok*Hl^O9qRno7txKnmbz!3NSOx#O`g$Gf=mAYcM8 z6J6NG=s;Yqca~-1gL${&3c#f^-BNx)1dfKKY&jGF??R2R2f0;YKZ7X#CQDRyy- zApirNLDAB2z>9G+wLp!0eDGr2EMR8CFW=1P0MECHh5-L)2=GNiM+Q&FeFjX4OPj77 zkxs>xd4X{Z%<%#R43xU`9@(kxJ|Z2Ao9kljqX!@VTN#Hljd?EaUN0SzX2#9eT=e84 zgcIWy0I-l;6!?Joxm8#1z({Lpd3v2hielOBBB&`t4f(sb>D zLsG66kofpvv)>$ujv;RM14`7{JEZbhpXQj2I}x3J9b_&8zOHKm16aG4xU|t#2i9rb zw6jjiwpD^{m5T>L0+xD#v1-d!>46oe8p~Xmbh-_o(OT{DO;`5SN>i-6Xu5}P~v!w6B>w(!pQqE^!CosDRn83hpZ{Zd(@Rb*s$-o`}_L7&` z4D17DKLI5S902AZ0dpC^s(grwZUF;_U7RohwT^%zz#Ju@(g*CIysY#A4dh~#4>;yx zwYYYc)Z*ub&N&?m{~DO%nmkHpO7-CX+Sp8~F8mZQr(Ikh)R|Ikcq1_1ki_QU z8L3T_^fTn5oPo1021L+e2J~2d6hx<~HhQy<=cNg_1kAStOk}{o(C7%QqU|Pa)FUDMzFXqx_H%O$~0-)pv%Bqaq)<8bE>pyP!lj$spl$Uz&E%r zVBi|qHd7dz08c=$zZhr%<~tYH?#e0BxIx#k8+P&f)}kp={-B${+;Z_+MDY~KO~5v4 zhj~8W7PWR&Eu11b2i?{HDhM68qxb$3rH2Drfw`+y?wb>(?+4s->8lm_4BQ9c0ZDZn z1K(?d4qmcCz(Zgjxp-N!X`*z0fW9J#RfYi7tpj6Kb)wWbAlvO*&S}b*j=$jRLg;Fj zh8J=)7hU*{mxdQ|-P{WsA*BR3H5Yk;FFoGx7sx!d_-|kKM>W;u=H@^Dld=7M-O^gM z@vVklZm{#XHJx;LLs%ZrW8E0VeD%ceqha}Oy`P7HZ}`EmaljY2wUH6{@jy>-^Wcj7 zM4$`d7lrEu!w-ZNxqU06rT?1O9VZ==+`MYhH0*dNR>#S1ltLBpQ-GdI_REN$=GK;4 zgQ|(2uJNddo*Q;7v>5mqyXMA?(0ypd8*l|2~`BArpz?ZwZl_0+e=*7h66JMc~ASS>$ zG`rgppex(EF=3hT8-2BwQjCqEfKScuhICX!S_wH zgsqjR&aZd#V)LcJ_lV!%<`tTzK^sgPf!;*%m3aBjiN{M1=9<0$x|Zazhc-KqSj`)l4oFQ z?LgPNxdP3$lpA-r^^swmdcr*2=)a^;W1is0?^pB8ImVrC{d-1kX^v<#`H>$ z)Du5m8}b#c0iOexdg-~DA$kIP1}#_jJ$p0Q zm*5<=_Su%;eL(Nm_>Ipt`|)^8Vsh{SEkoD`>HI-A&tj0r0y^U6bvfh@c?DSP(Wx%5z>UGQTmA2}IBGGxL z2l+X~yF9x665`z+wl@Z?A>IRYo`)5k-MwxY^tB`tzRjTVx{ikYSa6$9;m;?29MA!=cjpi7OV5q zJ)DC2umgT6a1*bmz!EfpcyvG0gZvyXKZ|%g$GqR0Bdj&Zqy20T*Ls~V^>8<<%qwsIKb3 zdJm3udBkt<@P}Hc=n+5%Auk(0O3M5Quf{}|vJx>oAuNQNVQbkayiHOXm| zBMYC)%EW?~!+?9uF>*9s;s1JyV{~$+6)T8r0-Sg&)(!c`5hEh~ldeBuO-}4s#pI{c zGgAJ7H^a9N5G$KJB!Da;I}NZxPbjfiz2%HH((v6PZx0~jSM(yubc`I6fe#eFoq;cZ z(QBh=c#0%|ugLb{+p%fMUHx7yuwlcK69N_M4~Vj31laE7SASS=ShM*_!TEnU1Wtl0J6K;}Yzw)+9hfnM(mArQ?nFXqj2op$6(t19K9!SJ~R6C9n(Zer0>7 zu|GKg?1SaLj#PXJ8K0dU3F6Q%n#I0a9vJcJlS9E?Uygf1Eez}x2Nd~dkCWdMgTOIM ze(?#h>t67g0XvR*^0RGo*2V!2v+_@VkX+lQ1xIw*`oju@Dg<5&Y@gnt6?fWw=@Cu) zAq~H+m#G~}=`o^i>lO79IrfK^k}qR8B~Jqf+rfg49t~)P3ciS!p`RvbVal!SvUTPZ)7>#KQv=lpU3C`S%eW`pJ~Pq>P4? zCI5nYOM5%}UyQ`ltJ;&G^s37zZ7ZE7T2%h!p-&7wfX{6I_8q|IFF(N-Zt;DRPJ>W+ zs7Uj9!nuk3BY&;Jclo?Mas*Capw=bhQ$jecfm(&7h_f8I%Se2MB_TE0@d?g|uJ zNYg~E8Cw>G)^3OZ10hHm~-0EU%8xoOM5RV111#wl*&%(W-}Zd)gRy3p|xBZgX>vH{%yzGZnjearf4iK z7|WUdx#QP|?d@xGr&E;<)&5D7h!0+YiP$UKI_<1S)KNtS)gWnfCN6->G5)paZz<_9 zBT~|T34`gUy1<}%C#3q?F0P!*p`)Nn(=XMfGNc|8Wx68n`gC8wqw-i8#ucvrRx;;ElGanO&?vi?5R7Bs=Udnh} zV(^QKocceQ7KpRPe-sWVw*aN{ngil;Y4{MI74$~I>A-Jc@^Ak8(vY}98@pbmv1>W?F_|BY z$x2T9YpVCzZhG(>KkLaqZ`1#b^uC%CL$9EDXPNZSUGlr1rjGn5BP|s#J7P6z8FhTn zeO(( z1HZ#Qd1g$41^vhINz9vk1B`thb#osxho67t=!g!EpnPWBSwKUjD}M=`0$mGszF>V>4+O(Ng@2ccE(j@wJ3sCA>G#7Kh)qy%X^OqDtsgx+987 zB_b(KrwWwmz?T=Nk$!n(0`EXl>{HKnq0U!JT z1a%^RM2h6IDNEz9Q7i4s`IJ)W#Rk8j#|Xn4)Zm=FZtk=Jl1eX_19@>f6l~xLUO;qf)eN8 zmrCDtWZ|opzx)f-K9$<0gP#U{7j-=cZbRx^;UA7WmE^7v_#ZQ{hG%AF;$|kfOLCfi zV-)Umk}duLe5gIc8{_MxA`@{_lpK-_bJQ`Zf4--MLCh~xlW{*4sFhrr|Mp=N;R!5y$8v`jezpN&WCGnTe9OOLiw!#AIKixqqJ>Ap!dfBZ`U6@lfdJJQNsS3lAQGs?uVBDy`ww*<3(p`OhTZn4168)Y7Zo{P9xYuRfH-M zYJ)H`LpvCg?D&fMXzCQ+f_^3=W#n!jqJ1&I{onHI5rNy)6SVC1&T&7v+?~I+3?Gx3 zmGWVVBN;bk%Y!=|lG~PiJ*AIIUP~Wt6!*^T+ZDoNF(gkpIwWmfDCUD{W-j z=+~1zP8t2FpT)Z*pWmi;_Tgj`)dy%z{todJhj-Sb&8jguFnxDuIuT4~K%yI1*BBm| zu-?Tp4YXcIVd6yj7pcjwrLmtH?q?Hxivb_C360d#K-v?krr0vJrO-hV z8Jv5@ni-h!NC+W7p>g02ZnJK(w$?k0433ziB(MPtd&cd{)aR2C; z9hvS11pF@D%Nx4eQ^_8#po@!y|Da&ZhS>l#4`5y;N$Qw@75<+k$@v@liPH)Avea>y zHWvPS{Pb(^=0r0Y4@1u z7M@WU0Dd!c{!gDo*x#3#o#{cRwDX;{L^|*YQ=!(@-hMQ9pGcB;ItM>N^=SjmcyeyX zOs_eY*L+fI! z{My#v&NXAjY1|da{qx$7kD-~1RRooQHe)fVYdo5Wi|6rCnnQm7Src~mT|Z-ic6RuAC95{ zmY-opeYjftAV@yMjC+(1s6PyhCDMg^Vf}Mc{v0O#If1Ezq($dBCiRDR2$bAdQ0AZ8 zmGlLyArPKr7-~TKY0L2gi$Ofj(+DJ1l=$Jh7=gJEQyJa*nq^PIl#OsXtq2PxgsYIs z&jjX!g%!dP$Ci#o7u=SU0J=gb`#z00dODmJth5jwngg{5)bn1D?NU1uyUD%lo08UE z#{B1$cW8iibgy7_2#li)Sfqx6CBu3nGGGQ+fFe9`w0Dk$z$;g40Bqh`%@QcX6RTZ- zX8xa30yqO!!wA>ll*v;xA7jI?)CIaTO4-RV3o$h)T*2k@UzMH#u+C%`H|&xF&M>2G z&TRVDc9?zPji``mVQxxzu*)5Q$NeQ*R|;K6@bkshUimmb2gJG};R%K!?1Z!~8z4$K zTBvFCyp2KTaX`!GWY zmS{BDmC-Y$xWkoKts@_W0T$1KEBGU3W($A9&wvni}O;|~4y%di_g z!UE167Q_k1@%%67TQmu2z~c@@z$aL6C)}V-S_Q%r?5R9T1lWj3+dm^Ab;S z6CL0M*{(V#DtsYUH6kBho~GN~OYrQ=@O-dLQux-rudS4HRBdK1|1xice9Z04H^?O_rhUd1y~ac zi!1^GS>{yZ#`G31>d6TS1SPu;2==|Nfy4sT+OVRE_z)AJ|7luDvMRNpYKr>bp zSt+;y!*(-S;{8|hpdP%YeVq?dX9ncBD`+MZ{UDDn7uuN*hy6>N+}VkilI<=dJnew9 z4tU1Tuv8k#rrs{rOtqL2fQY=Z?JglnB(1w(O*iz?``eR~u+T_YA1-`HS^mByAsb5< zlQ|fYgwnjd@TbUlovDruJ0JO%b0J{_+165>7ckSD4*$2azfTDtI-g`1icfJKVo|>E zssMl$JNOzW0ukE(lvE`oZ0IBpV)F~J_+R*6czGMPzH>-U!u5d=+SRvYz`Vm!gW+!f zD)|Pa)~+;ZF~yO%(8N5ba2AW#6uS)Agyj&!`-g&t--e;7auK=G=caplf|^Y3?^^;8!Zuz5`SOA7yzDIa zx6_{Ox8ys(qLG+Dl#dj7zcgmy>4d`+L^C_JypJAZEz0of036PXqk+f-q%nmGaC;I? z-Ugxdn1xs;GdwncJD4vbPhe&N`wuW*Jg^;>+r(f*9~fAd3ZM`!W^*!$w3H-s5_8&} z$Lze8X=+Z6!ilUy%m@(RP9QzqmJ0DjN8j-*$OQ^iz{-y!eP;BO8SwY9M5of2+c9U+ zG4$os@+HZBfJ^7m1&3L9R3Hm;G2m;9W#^EH4akNTT z*I_K&mMCM&rw^sI&=3fmLu`AATT4NepuH=z7$|pNL-#;uGTk*m&6cH-OVMkyD4R+( z>;ykrop21y519!l(9?&OjDrcF!13V+7N8AJ8@(}xJ&*)|w3V=MfKMOHZyv|ux#8c8 z4xoFQNjc*2eq;+kJo4BA_RT9b3w~oA-*60j%9DLq`VBzVz2*GtriiXs&liKU^9>)c zB8-c{R05C5Iv#|1CSoMNT{w4i|Mpvvf9Uj@iKEmxmp_!XacPFz06cCJcsVQ1) zYJcBA>i{SbSlAj(X?fso6gT5j*7sjF%-4T0^REM7^>_7chxM{C!v|yt7)l1h65HXq zqYI7VmraX)3X6A#V{AL4&RFFUogO=56>qkxP44Y&Lz{Q1lQ<2Q2M=#E+Up}nPdIBj z5|6hX))Eg7?|}{C=dEOgqA{@Ucz75GQM=!~yUM|Dm)?}aGUc{{obRh+7Gl}+@DTqH zZ_^ed3CFVO80_yK%NSA|n>`(r(wZXY4rG+Tw%;U3qm5l4{l*VD2|JL~vcqB#`EUi> zh_HOElTH#ChwslldzH{1Lp{2C`^cDumF&Y+|I*Qg#Qk5fdNiif=4WPO7QRG1v~e5@ z=VPb{@|eDKH+ixe_(Il(Ss*th(Qdgjme>yu(igO*E zv5D{O{_b{9a=j3~X9+f(po>=m1o3Hon5PGj^PRDLcDR!8Zhi)D89+*&Z-g-mpCm#^ z&50vEK?ou-3>b3oI0Fh!ApUxcUUz0V*cQBbhh# zp6$}Td{L^eV@U&EX`E|7my<*g_-sZG5jx0}>3Z1*X_mk}W^^y7RXsqfRrr{)_ zI2inA~h|aS94_H(AXV-bjc>FK-~~yeJ7Wb*^s)tV#zWUe5=A z%uEz8cIib+)jt}#{xQB`=Fa1_QivC+glqbHa>+$0-484E7Ih2A9$!P8pAu4Zcf7g9 zU2wtaUSJ|u5lGT9#+AgTg2q^Q1%ZXYfT20lFQ*Oekf5CjDIy3a>qI> z2QT44rHCxEb9&CBO_rbMGQvzBvol`i6AqrK<0d{tV<$BX*H6H5(Z zre0=sc-voiWS-7+CE#$|H_JgNFa^3bFyg@L6Y~>et?7or;W%T5{_914#2{jogYG39 z76kPVXkK;Q*D-QQ>sZ3*4$IM`R*0&jf`k1cf*wL*n=MutZOhl9LE*yMly zDr3_UXL+v>HtC=Tyrwdoz%Cej(%#?MIY4`Zd#EdJq_TLaW%xIq?xilCw{*X3t)WGf%XBv(lN)&%M(wQI-$ft@3I)JxY{Lzu zu2iVS9S)iDccSm!&LlaAOwpCFgYdv>VG{|hfkf|HY<#lS6@- zx3j#2xBrIKu9Hb`AaSeQ=J{6Af;v`x@t!bQR=E@mkK~)sb zCEDY+RiWYT9O9vQ>{w^>a(s1}SaYRIt%n8}81dTc@NWaeyapT>R$wjQ3_3JHZLLPR zy2-u0)^EINJ3PKI=Sk{nTb&g#^~I!p2ryb+?MJ)CgAa`Wbe@o z_#m0q`0k|bQTf|)sg#-UZ(DyaRy;Y3q3;~gG|i8B$a8xJ$@ zTrfhr-l685FPrWVbLM>S>Kf@z`OWoPZLGGC^&m&YlkR{}wq5){vvz9$yTt(>QexSr z_cv66*M!lwx&6$+ao0%O*BnNCv12OPYhJGLz;1pj+nw%7(kl1Kb5OZ}+TP}SW)=w6 zy*wbdD+=z3?>5a_Z*UJ1UyB~WDIn2W4|d01;{wUs>?Bru2&mYB!P%>^--KdhF}Uw4 zkIF%-pNd|Z-OSdz7C23!npYa)>VL1xVywVMe=M*hrv3JezFP@h8jGyP-|gF##2Y*; zxM6BK3q83x$DP;hm_h3O4Yp7C+E1tdz}|4Hud!9Ve^k#zTqA$AlFo!@0S#0JD@Akt zawX9NA3{#=>B)5TXZmw|NWQ>k+ZqTPdYG$Q(9@miOfO1P8m9C7bL=rD4~gp?nA1ak zD+j|r!{)zsn-IuMZz)$e-%ky!JV;Up|LVQ|gjVGlZN9c;VgVvl5wjn!bf0=o!TxBa zLngch#6I-A+9jE7n32rls}EKNQOwp1YEkd6bkPwi{)T;W@2zyGv9BDOMf%=dNoP1{ zMyB|guh%=+YtsO>&uM_`%!GX@f^XxyQTeKhy=9i6 zP8wBT#;&ctW3ADrrz5Gu`ReQgKE0<4OQFNyI&|!%m5zAhNK91y%&PDEB2lJ%YnsZ> zEf~Cj?Z@S7?>U}Uzvr>vZwjIT92+VC{G8bXfAy? zX4c-CWpr#GSn1PDH0RZvb_cGpmC4@EyeY6gmy0($J?>+C39LkhNQ?w^axRzZ29B1! zm&s^QV=Ux#&q}w{GBe$?G}Vcx{O*-*UBbMn;|gBcyRbz=zGFgHLrh6_KqtFU#+@tO zD#d)*VGwri@NA1bW*O*q0+HW-%}0@IWGqRcTTvH*x(#~_v1q*5HE#`|2>C{uYo*KH z!sp1FNJ_y*qJG`HQmfRiCK9JJjjC+b>1ex5X6a3gtOeWO$V^V!Y~Ph$yrfT3inBMY zbTke}ACwpZF8Odh$r^#S@&;}(C7DZIhpp-g3{xi}TIyP&ioxSe(dmSYtk-xbTEV(q zS7YPJ8|Y?em_K*gj;Ssn7FQW5#a&M3N<$U$7Dc*(q|@~)6?Hj@*LnNQm^Ur3+hs(+ zORXJsDYkCO+d611`gM#o+`CSd{GV>T`wDpC7<}%^`I)J&(?Fpd-l6k-6N1RiJkIYY&iFi}g7PMwl z8v#3Cv78y*%V%M^oHqJ-I4KZ$oT~a1S?#TKq{AHQ>~ejAXxh`6%yv?zLy1S_t=mK6 zvIX%FQrio*oQ~W&*GoHnFzs^TfW=&2^36;`_g>Z(xI?39!)k4GywpK*7rM6+-dty zW1B?bHg%0pt*|XpuKF3WWdUV0o(x>&ENGnWO=kP1WI6|)2n3~&sK-6~G=`Yf`hwH$)-COr>ss77w%-`bz7Yt!cG%P zNk5lOvHCuUeVYo;5@F?24jx!xo9psHC)wq#CUQUa8^0k1GVTl9X-U7o7hg7(oPw|Q z$$N^-#-B%DCj$B1*mDaX)>|p_cNKEcIHofAf@o8Hr&SuP*VWUnCcx@d;<OTV@N?PnId4_@)?~==kzSj(7}{U%cDtMUEgC_r<0$Z zagHK6wg_cF{fr9b!BflaawHw{pq$`rvO8s44~`(UD1Y|w;e;*$?@gNSVT1<(O;CyT z=JXy)n^tlP@FApe1vKY|v~35I&|dP8br>KqA4&K@E^gtIO)wq5Q}d|1J~PRHi44UH38#!qT&8P_~^ zU+noOfo;954A-;bYeF4#|Hg?E8^(G*>7N)W}U>1sUg{M;H4n_m0Xr~iDuOhpG z(B6r4l2mj6sLkTGUSQp7@T_!Cy1TzSfg$RNw)8(zDuU7nf2x{={RCHIQA0$FPjx0n zcT%wO7&Q{V**DOe%GEn*0+`;fMzqddkU;e(0RlvKZ-S^j3{tTS%Tjcz#`#N9i5?m_ zkp*G}kWFM3CHly5n@eC3(gf^Y0*PRv7dTa)s-3%JAO{DsE1^N4%?i+0fU^i0MNSRH zaeys#b0E+}Xe5@UySftXsRZ7*z6|D2ks))m8k}^D zD(KPyWlzO$WeHi@Z(6zgl1wf|AA)_O2-w6j*r!A`g{ax7FpsQ$XNfIX0|+!9@`T zQ#I@?OYkRQ&$3kHN)66BMIXd`sHU{?fQjil&Y7EV_7p&s=;eK7SfvvB)F=Armh(iW zqocnUpgEuh6XtUSs^H)#+ML7=$!t5|MZ(BiN{w$GJC^=!q<_b$Kg?q|F$8&U0TS-r zO7d1I%-pD-)72>>TLb@^&k#0F_W-d$u(YT9a=4B}4%tSh8V&$JvqgU&DklyQBB-0E z`|!|ICfQDga~n5S)$$I{O=fX|bD(J-fSgXKs>Z1})^8PoStY2LkE)zTl0m2XBi{&5 zOUj}w2D`LtF0oj^(&5aWHc$AV6U#7Pgp`GeT_U8y|fCzRnI>KuD7@2Z_ zb15~nzbC0lQfm?jTDot5KGUe8wChxRPF1CWC->mH;WKfBzxHI7^)SU-fXbK<&i?LR zkc)Bv@!_o+;)!WJoe42cs&WeFRS`50QFj#=k8c9&GpWDQ>Fdb!1E_m4eRyU&GQDXS zCDRX32HFdV(oP0~Z4*Fkkd$=|*h@uzgT+%}4%&oQ&uJmXfJ&!N4QAnlc8AZCTF?e` z9FY;Q6ORM}Du+j9*^+d}k_5_>2`(dpoq!A{dhxrR8oJoWzxOHvn%|s7=+03Ui^-s+ znha6h7U&2HsPGF$f-#etsJ8>Qq*6VJv56$Wuu)B8q7Ci4h=rsK>C73@DRY56N36st z;dz()a&bDp+rf{XaE3_q1hg5TJ~I~1Qd`qmBxEzd0~I2d?o7>}IeCiujX9DX9DtR` zElZeQsHPplh z?a->pVSFyI42L)l5gN+BiGZm%K*vz#!LZl_dfy2V(etk2K$L-VlXD(WrBBGY=`(`l zi8;#vs`8}-Y7J_K1--cPE~4Ig0}$8%qa~STv=@ASbBVr8VkxjnL@;cX>(B0*-W7=> z49BdN8R`y=|Itbk!7xJ^j8l#dRbNVN%A^dw!{d_xfG4Mi8PxolZD?-HElDnw^U85o zBD9eQ;J^XQaVu875{@XGXruWgI6qGP$#tLvu^lJ?z95xDtO}qqQD~M~hET}?7jp!R zk$6%8D0mT5VkeXw6C_%w%|ZAg2LVbFBpq10ThZFzmszw3IF>UZX9o#&Bt!*a&^&?u zok;&qQlpUI3zyZhMUG&M?}2^gmI2=Iru<40ViKKl#NiLAl*OV>y(&i&IIIZskQ0Qf z2=-M8m)PSv6Yo*>Mp92!-P6a)F@JRFExfq09WKKo(|MI-A77FiE7BL#vI08HiN>NMqs#(xOroT>6)V6?ghJ$&IS~nSt zRPAio1QJ+;XO5cQBVs&`K-j|dW>qBD54ca?AL0k7YM!))Vila7gsw$^bf^&ipM8K8bd& zsEQh{tZJ>}N77}y4OLCOf#Htcel-H<7wM*;>mU=E3FNga(F6oO)AL6**T9yuN*dU7 ze4gixtg@N?u(l$&$2gWp7&dI*R9Mxeeuq|SY-z!hY|!=!XpzKpUbWjxmXm6t1|y1-xXAksVp0ulAre?V{BdnuAwe=WkF22y zyi!69=1-C?#e@fB(lmNWt&^-Gb5lSnsl#yR03=v|=T8hXLYswD)xtb@uhd8*Z)+sw zmHm-vD~Wpud#Q&D&9d5XWvL%3E>1Y2Zwgby>g_TBEcr06$}vID)pJ6d+Je8-mB9@q zTa3ukM9QMO?Aom@b|Y-#f)RdI%%P+J>8if2WIIc7HoS&1ohGRw!8-|(BinxX+lU1! zOWL8sF*TkfSoNL^Q%ZEO8VI^mjvi)q1%0Xu#C_0)mN-4A0~_7}O?&9d$<9PKi-d^O zcxY(=rNevboedLkVIAZ?F~t3?d2Gu<$26m&RBM&x-!04uLt-N_0*-J?s`m)X^k&OQ z|EeiBl60fU6wqGWn#%}{$K=tVBTH7(5oS*4FG&d=s2WhjcTIy*!|Ie8)}35F-=}a@ zp*55YF^&<^VvZ4{dpV@uYIE}$;7yGE^Fa2e12EENz4jRhk85tme5Dmz-10XIigqu--*u`1%!o zOqADjjt#io$({i~z1|$k$OACNi6E+T;vxQMR72TZ?>@xUBuJtq2LpGoA%b~g6aF(E z|3NrTL^w`FI8MY3p4g&>fJ!uL)&kdQsKM!_fzoPD<;XKrF$Vyh*4V7-uc-m1vEgx( zaCax+?oPtbPQuTEwg7ykGu_{%=VZaMtlIR^(+J#T4T<|Fxtqe z$hb4TXbwsI6?DffgDgYSv9vJB{WTpRp)Y`$O-TVD5hN`Ll9oml69t%996TAPwwS&s zkpi}c_(Ohava7)#==sAY2)!2Ew3cR7+24x-Y*y7w>rC||@Dt2s;q3$!L88g(Jp4wO zwjfMfT2v))3}~EHTt;3EW?YmL%uX8zbZVlt|A}NfnjVu0BLa|i1T$Q$4R5Ight4Z5 z<)#!Fdxcwevt5C#>1pN>nt~#8fHOE3K$cU3;M}`4#~IVT7I~K)&lu>D6cfOFC$bw8 z2Z$GUvb&k>*Mp68phe0+o=&ZTP?ab}c*Y)f?T~r5RW;np6y2tfo+4Y;C5}Bfa8u|YMs@_jM`}eh+Ge+4oP34*ZF39itU3vDRQ6a z#>pN{w7N0*9gWtY>+{FEDMY(Vo05|`TEAu4Lc=|N1y(vhc4q-qy{Z&vfvVgUH|>v& z`j4^tk8!HjoI~D;`XJPWW!flaBxdE8X;TWHQ)g4%~v|o$c9Y zSe5Gs=>}9(Rbv<+=}5JU(%D?!oDLT3Ve_{zC}?fs_N+{+3SJWn-{MuwCxWXOhL36w zYYa(`HdWPFk^+g9mQA(Q5iJ%7O^FLSG9)9oV{POl86vAlOz%XS0j8O&xYn77ctj1m zQ=7M?fN25ogrlF-PT6FFwoKLbipyC`7sKbKSd9mqu!bLGtB6D_6WWoNj|#9PjWVI7 zG^sjcz$0Ftpb^QFLMM@!z1j>=gmiAvGi(MpXy>^o2%23|6D>!rWiHW{sie!O2*(r+ zC~WMR<~UCXCO}#w&k`Mn#61UDiXbVCYI9aC6J&62OLd_H?r4})F_Vu0L4Rs$5g>ya zsvT_@AfZi7)fyYfP|a$qD4`k`aWix3-|||@WJB^0pIl-zvcKFIC zn!jW~4YpJ?wiu|97N|4qe_{h8sRBDRYBM$>90LWd#RvyYz#3+ylE7w+0n|S$z#9fc zCScwfggPBjq)fSOk*@Cur{^E4mTJSGm_-LNr?wK0w>f!kZariH=sJsg2vN1AI?{~Ct~dH5HjNK4`KCv@cE%zFoAW6%eAoW?*Z|vqK`N=L+Ql%WYMC_U5)?%a zbKQm#Ey&A<2DS8}M4D7Vj0FHOi?z9GVebhv>vpPyReuhHFhnFbda8=E;FII_@i}b? zqjOdZ1UM#E4KhShA{i>kR*_X(IZ=ZNM+Qou5G3+Kc{(>ImsP`w=}B0~9EUeobg)0| zPuk(h@=^Wbj?rT{Jc%P1l0mT};`FTfN2a?SsgZDr>X{5imcE$cJ4y^JOAR84E@4@U z$7#K|k2st@m_i%0yLwmlpNW_r?K6H&($MjOTRn!y@}Gg-MJ|CwVO0bzQ3;|!BQ<64 zT3yT8cN|CGiDMZ3vlZB8nHzL0lqfmvu&GYan^wb89ZS_H%VF)NFC&cppxFpgKt7X> z4bs@0wl*#uvDZP@`pM3p8p4*~rkYzon{Tw?to_4xr=S~P zEvkbV6Ue3FSRu=CTW`9PI1;fJ>ucgbK@TbjP`G)js?#wjOlE@(X=bRkmJ{Dolk$o{ z+SW(L)&SZV%k_89Swu_<#QvlcUdY6EB<&4B&24{+FpZftYXPx3G}y@*K@%_8t?Xz5 z#|A1|r>3GqW?C*XIhid14(Sqcf8k_Dw*z8KIx5LO1}~;%vuGOy#jYJgb@;mW&iVu# zfH{kpF;ElML4m;n#Q?tGqseL%N2@0$>ktoK0|HUBqJ(6=u%$;>1*nbq8f{)|R85Gu z7bVMZf-JAYL>rq$2SeLYcVU$u(TU@maQ(3CrMRO&bP?Bx+;j~jQp;JPtxrr}#IzY! zJ-cD@w%$(tJwe@A(6sUjVIo@B8?2eY&YHZbm}S#LM}K!W3WuoXsq#gHpM$)yL2OTC zCZ%l}o7s{i-vdhSG>YKJflO{3jub3Q2Vl_lB(r9Wsv29|VMxLQWsdz%qI!~YBCV?CDq%v$Fg^dj%dQZ{@B<|QgIp$CxBVq93n=Ro}3slIKazgN6FQr z{i18YGQnv3%aY`-o=J?YSCvas1MGdaEbL5{vbB~R436dFoZoODVw6~mxv zh;c?Z!OFFyTV&y|i%K7E8atMS9aP2mglOso?;7!+aVm-tnF$U)ga=Ld&v^W&S^ZAb zbR({g)`sjcNcIpQ6u$tiC*VI5@t;ZfPm5|aGM_lpJNT60+H!0&N^r=z1SFvdj3I4A za@ZQGnVEK5j}Bt$7<_D^HH3v%wn_L=Wv-vWF^DLg?L)BiQpbNmVv*X^A5WFg7S^W5 zvG@;yuW=mygCJ`huWGdiPoH{t+N_3IhG0C*Yy^f^6O>wl{zLc^!PbaiYiv;?JRWOJ zwQHQ97j_*+$!oymc~d6O95kgJ=IjmGisI2|G%M!M8kW4_WW*$Y_AonKFQM% z1k1P<6`u;)9m<2CEG<`~0=9=u^N~dWWM)R2dfkVPZxN^-sKr>uo@9F4RK>DVHBu0a zVj~NlszoH1lQSg^N?-*SS5#Zc0ntubj!Xr76xV2FcXBx!&6}DKMoo=sQ#6ia=txSW zEy9;B#+N1pUlZa}6X26ZesgA(8baFHU70PzA*94X2ZWil!60g<6xEh-YmJ+epR2hh?SO%yFZ0kZc=K6h0;u;?%Yb z1Uobu<i<)7yulc&T99N_^?S;A-7>RJrPeQ z-ag3w`@t?96?X&%ZAL6^##uMxteX*4n{j67(rrSQZc{VP0R6a4%`LQL&8lHq7jaar zUjhSY2X40nBiqU0(2r-LeIOyO6Y4gR{%uhqAh(rTKnnrcWrOWx%QpfI;bhgY?g=}_ zRy=&#q$(sz3x74M7|Hw+r!`VSTY)fhg3A<6a8WgmdyXkdxM{*zHPVjsv18xhZKH}& zcseVi_ynOd0iiPip@YukCUhn@p)hV%n$Q*0Xb))JK=JsX6FLxO9lwC@wf0`nRfm}LSac&Nu- z&5qZmiHHaj8x`HMgn#0K(d*lUUf(A4`Zl50w+X$zP3ZM)n%JVo28WR7gr7b*FIku> z;RWweyp`g|5*$E=n>Z0?4Dtn=N?O}QN%A2#&^?yZvsz9M0XmQ-qf@gaGb_$cKk@U1 zfb`a&NwC9&q=o=>{v71*al-R#uaCIiEOXKhtuVv{_}@hM-z4~7i;9pKMG++7CUj#r zp&Ppi-Pld&#%`K~aGcbvHe>D_80H(dahwVvpkr0jv=$Nqf)+uIpOGvCkl_yS-Fgf0YhZu7|oIKGJd za8t`zQY_#QaYXUoONkQ}!146KA#W}>=4lF5RmKGoHiq+4iXt= zvKI0|45zXJbkajW*h4_qLqOJ}7SS8wk6a^5ZwM%V2nhdXC|BC*WWt!xD|B3)OT;IS z%BGHK-{%+|WGqUehF6g@0u+9b`m(7M3xH9!YjWhFgh0^!5=hvG+H$P+qHmMO?n{SC zKCg!PlTfBlSQN@x{HRi~Es zCdn;DOW8D^Wjm*0;(Qn_5qy(WPV%_p407v*bT2pzU=4L0*ZYbIsCo6dyKVHj-p z!8|--q)tds%+}E39T`eprQ(Ka3oW=z>j65MVUxtdWR`Ag^82KiD^`*f3CRVLBqCA~ zl+-zTY0NyMnJg2^Y8<7S#&)K2OF^2jL&eolML$^Cs9tpN`AQf?m22@;r@Y)^HmK^Pw2BO$uHKx2Bh7AS6faca8h;`wZD3Sxzp3q6WdwJ{2iS58wJbmCOcqNqVlyvz9$;|mi?5RU`NBWxALqpCt?O4wON0k%Lklp33Wp)Bx;*N;3Ym69fYm&~fku3Uyg)RuEI%K@whW;uhGzXd#LxAfPL?s4vmqL-t+dePXx*s+&#O8OCx7hj~IyrV$|+ zrbR*qlw^*2z4e-yR7ieQrMTQwxfAGgl8!?r=V*k=0-3bq^@niEBS z85^bX7m1>AJjssd*$KmOWFaz)a3mv0p~QsfSh(tvbKt9Op8;;>rd^K009~A%$x6H< zC=Eofa#uMLEw+cyhzz8hxEwN$>Y$?`)nJl9$u5}?TS^s>Bgtd!Wb=Wx8jx9u)MyjA z;wC;6kil?IG1a6%UOLXTD3H5E5R#6`qXqMz5E=XRX1;*S3F($v)tGL+?eMf!!daJG?3-!ZDX!-W39!LV7WohTj6 z{jI)vY)irlIV4*xRp)RgX{nZ3$>khFCUsb} z$&I2%j7I`1zI0e&Ga6LN#Ntqz*JbWn=l4Rm*&xWgd>$>mSr0+noqJX zE^4cJfttG`=f@z25_c+VKZt_fF zJ#4dKJC>?7c~$J*kEc3QJqxtSyw(`|TTMwFZ(<16MO0DJ?inA$xPS!RkcY-Mwz>Y%{Ag6$f?Qmzjp#g#g6Gt*d>s8q&ik5hhFEDn$SEJ zT^y-Yb}nvjB-yn%17vPVx2k4vY5#hRp~Ym$R0$%Pi{QK!(Z2ji;c-{M_0~nqDJ=hp zRbND+3cg52jp3=}i&ODLhx6t6P>5xJB?7JFe|72Kw8J#R_jfN z+)A4`oK!mzedW}Rr2KLxJcnY_F!qZgGx1_X%XCq#JswQhf2$4By}Ag2TSL*pYmI>t z1}!k_Z{x68@l&b6#^k1{MTOKD8jW<&BAE(}-6g?Tjk*geo1_vDR z)(JQQ`oJck8nMW7X_cJX+-qpH-Ep-z50|7I;K9;nU6anhB_C9j3fr*kqx!K>R;^QA zL5wYA8|{Y80l7@;a&9r0*t)wkianu-V=GgeQ}~6@bBYbN?Bv7jf_1tK53>MoEC#3# zCK8i;wWAP`9UGR^^CI;uvbei%&Z0$ds8o!-eyq<_q0q=6G&Fh&d5o+oCvtX>s`QxZ z&zkf|)x0V+5s)Qw+Du2j{66UnV*5)JWxrKK%#1$xxymdAj`PW zDrKJZ0jQlVmJmH~1mzIkw&7F7HthBf#QB$?byZJl8Gk0$&J>XJ+bE{eiV49=W7(mV z3VGJdX>%QSoQ*rjdA5w5xI^~&Kf1HZS8kK^5Dh?sWnM0v2~^d z{&py>QFC<)h9DZNcr z-9%t~RI%DuH*q9}0ryEk9LF$}TnY-MrV3n=4X752h~9!xF*d*RR0sPx_Xs-{(@u0F z@m5=K=ggUN{db{x7V^e-U} z88yR;6$z7{!Q*mm4? zEQUDNC^W3FCF(Dz>o^XG#OO5I!v@9x{$S+-Z6Cs@F2{GlHX=k=a(2(ps4CP2NSGK) z_7A%<04NcKsspHaj4$3drDE@H9n-xyzxS| zD_U#Xu-6$58yciz7=UO|tTmQ}=o6EyVT{(n+S+TWB(7?m*sX)3qnW9&)+Q!O&VY8p zh?TxsCto3Ln=?Ds5|uD?$ja78SbIJpz!$sBJU$(Gar~JvN1J?qaiIDl0tn` zRitydel!5swqJ>ZaljBCV@Gv4b)g0+Mwq(%bTCs75u%p7; zO2o#RmCx@&b^!Fe$}#I>|D|mRVIf0jn`(8&La4Z%oB{ev_B$5Y2Q zZsrKX;^VYXcxGuKq#Z1d7Yi2Mu6VMCL+-o@A8KM@hg`mL$vG8gMO4I>VIBtp+h!^x zW@n1Ht5H-mCxPgGyM(=vi0JWY+k8O{!&*qJvk+@kZ(VRj4VJ@LVTYa|)PCEls1H2OAqbddQ-I6I$md$iBNkGNBUzu_TY#PB_ z#01u)bBxYgxh7>~f1M}O$Q~aU533`$OTlj7uTnO+Uz<%hK7c~R*+XN3avVE4dCZtj zJ2qZ1sYH$SPnA#kkNMNuRLm}vqNO5S7uI3dmS(307zw~!-c-lyGT-GKflXZp+9f$x zOGc6yI;-0y;F04Uhq9Hz6H`eB-tj*D_*aN4C_?QC|i*4OJ=GQ>^yew(vM5!RU&A^^={1z-_U# zM2_e$*)V%DEXU{UaOI)KFd|rl1~gm$LCXK1^0#E=6RXvPgOj~1x9PS{C4G#B1hO_3 zt7oR={s5sylmxaE3xum$ZNJx6ib|cr7PCsPsiBiiv0kTX#6;)nQX;0?CNda8wk(}Xd07~Io1;PO zQbSId4hv_^a12VU{J~kCY~b{U=rQk!qM)d+1Cba?+d4B0EwXZjv8fsmZtqB|YKlp5 zyb^IPxGnu0^Fb?K&xsM_Rs~Xr#_!NU=`eQSB^e)LQuU3C2g+jYnwf@3N6C`GI&rNb z@5WxM8^$pTA7}~}toTFTKx@AfT#e!+%mBh0vvX%gEjZ_~iEbyg z_vI!DP$2mfQ`n0s)~?m%N*!LcHM4nN)dZ(vf^E#;RKl9cj(MJPJOYF*zW^I6Q7%3J?SRD@%8jgbeK&%C%l(qZFgu) z{6{M*Y%#%2ylVm(Bo+1Gy2WdH#Y*$g#-v>x6 zRNs}AT1${UHeCbSkbzF2UqZRS5k|vwU2Za{#}jd@VjY|TL-iDfQ0A|@Foex6I7`AQ z=_>?UZuVBQb^N?3Vjw(+3qu$Nm=dYQeJs7DeM-y;7K6@)Bh4cc->bxwS1t_Tqd#=wkSFV14J9Hho+ZgdgpuW?Gd^*n}n-M^!Q>Bofr0On}xgYdh_GpHg_W$M}|sYGj@}SX2bBOkjXU+8n3gkbosu>JkJIr;Y-~rm^~~ zZ;O&bK5ToFEEEtpYDr45LIVcrs7@z>3+LH_zH+M|P|}hBhFVdc&V2(TJV7{)%T=-$ zay0bN0G&XUvtedv8{kxu{AQD#5TuIfY_pEC`bWZ5WnV_Tya9nj8P}njWtY;A&jG=s zTU$t6w-(^*60NyX5TMvGFDD~BTfBH{(A;6^L{=Umdx9o5H%$UvZ#@%g@ldp?8r%5? zB74LXU9J(eK&!Mv7#-aA1sQXa#OEa_K(B5mEBT3HlJ(sLWM&~O1bXc&H>OCdcL)Aq zB$TdLQp-*)^vV(K4-Uk0>H<3Zgbpcp*JI$$b z!Bre3uYs^gsu?A$dLdO<*_n$r3I%4EMCATFv|6`2F?@qkUICIq1L;QyNTv^lcBxj?tEI88ZDHmv}VgAI~=~I~?vX_ad@SHZ=K=hY9S&#j69jAX@y5bt( z0He+*D?wWCE(LEmsRHat4lhj&s4AzF6jr`$bBz4nyHtRI{KgyFZ>54*HE+iS6%{RP zlN?NoFuAf#3RR8DS2@cR zaC0m`&`W}wYk9467U@i=D8&{s_E$MHxKf8%*7oQ+$emmWwy^{#d+xWaWrdmIl&B)G zBK>sI&+M0s<9Mnm+8?3(Vx zI3o(MEpk2RC|8E3OEeS-1!YtLS*nK%2CAW+3x$~O^kno!RS|jL zC>?WT(vtNZQ#r}gtD3?NRCuIC?`?|ER*L0}a#4B8+^N-Zt`6iR!_HgKlQXZa_Ii;wol?d6HuV{5p$ zp`4fpIT6Mv?_|$5m2@Ao2cv7I>4bgG*X4NaMt>0LaQli8OD8izFxgG%wwz9cpc?L^ zX1MQ!GjTiBaw)Eq^o()v6tm``WTx`Sz7?7kQoQEi=^Pqk#eoc&PghsjUsQukGQV8L zThX0dj%wgYbNbviGR!q5tgj$jbPl6%$Wz3|u-Z&6>$(-Ow%6kf9cDYHopKzGJyM%) zL5ql@$1h>|Jea<5L^he{&86|qoe7>B$Q&cs7KKWCsPXwNt_3R6#3!TOUVEG?mKN}EduB{bBQ z*SJhY#H6Ieb$kN(p{hDG7pRb8%%eO7cdSa*b{2GN(W_TV$aEgGv*Rw1>W0;#XGt_p zWjkAO(Z%2j+L2IdMWTH<=b{g3)i+e9bqQouyGT5m+DlaNT-Zo6w)9gxAD2<3IPVToc=Z|9mL2CblL2d1l#~*jD`K`=K?lt@+P0pzS5) z{P(lvYhstl-@8?!KIL)>a-G*@WJm5?L4B zyTbi$MV#O58C@4W-}CNTdYndIWv0&;72N05825Q!`dl4%_jy&BKA%gUedRkJN}s($?mijQ<*hh(Il7X&d@NlK zi(!|L({2iP*$#khZQvA!&%=O{pCEi-pp&D1n4TTseK^IlKPxO)KV89NJq2TZDr21k zYkkl&*4l7Ee02W4C?tCa<9&wsv|;1XyK?`lw^UyArsroyTzGO&m6_Rn5eE4uRSfdI zD;VTwd7yKF1?W!{_j#{^`|Klq3PJQs!Me92+-JWM`aCb_@S);92S}gy%G`Ypu;%u< zeCGpM&q31XX3uw?w7#@sl>4kLq0eV!+~+ib+DX#q8V{L# z%v#P9vN`w2+)gRsI~Rnx&m97TQ>D-4o<28N-#J;3`mr+ZbDH#d)kETrFE@Rz7q}fK zb33bqxqToo*h}cu*(D(8n`KN2UIjLDPDOdq<9=NMHUIt&j- zdGH4+*2Hd+!B6q5a$mE`7b^`f+1j+Y*3A5U3+zY6c<}21i*7}1hQI%W@=f@zN;m{3 zpbP>3J7Yd9CTdBA&-S;nUpcwZH6emRJxx5<$^ z9=hM`>3)U*;H#Put98*^Jk4&abecUR2XUKq(OW&O));_&D#zpu<=(KfO_NJQX1b5a zk+~*%TiNL#FdP+%Tv!ReUjm?9SoTTiqv$5|`*rwz2K;_qxc{pW1iTskYGLz#Ut77G zCMIx*A1QZF^h&ep%VXROM}ExHY)7Zn9x~Ye&R}K(Z;{P?BI18{seEX4*>|DKEz0}2 zP|>?%yxyZj72fr3*2z4s_KD=_nb_bg5qufoN zmYGlcAvO@c_d&>f55BR#MKlhN2Sei-;l}4wF*J?~RsSNO0j)l+^3$V#;iwh7+01ifGf(*^I3DYD z1ZXJKOwRU5Dqk5fWOa2goX-`B{N*wR?y0{VvLEpu6ob`QA zzzW|td}L2KVgJf2Jo}f!BfbvMrXLXM^iqZ26tu32-`x=Lzq_u?4a|=%RC-;k`lkw; zJ?CeNBu~fu@Yp9_5FUBge2ggMcZkw+Zm9AHR#4BZ^w0jLvJIR4JEAuns(AM2hpIMc z_QA$_ws%&#{SJTO$M06TA73P^Lo@7Y9#bNjV(kNL+38k`()p|qrptb)6@-i&6|@rn z>kVDeC31?cmQ!@a53{1ng7@UIjj$(siHZGL!K$l&s1+34lc3idx}sC%oV*d|6@5q(H+nyAhy7q^e|ER$EkNW=eKS40+0Wo`C_ruKp;ovjz@J2WjyNj3i z>xwn8>qBe|Ul+=wplRX6sK?KV<^7&W;VyHX9)}Ba-QC**ULRVvw(?`kQh%>yj~4UE zewBqkbf6IpkC&i^hboGHX zTeZ{eEAgppTD;di29UQ3%AO}AA7VccGmRTdXtA+j9$u@Ca#KwD6daf6<^ewF|*b9r!pA+e&verewKUUv`UHLfd$_bVt-Og@h{wG>`HG{e6Ky) zym+s-jB@#=_;ufi@E+anx8MJmdvvz)c*g=}znGh@1gyWw+Rs(hVvY;BpWi0O`TD5) z`RS3u8~Ld)jK_rF-m!sVt;4Ddugb-?3pdpS7(*it_W<(J0Q5Y}GRPk)rmA;kzwgXr zMA-lZr8LbWZ`>Muq{qc6uZ>wmr!YkB5r5>{(B?=FM9vab?km{;wVrpMl@*58J|bH0 zBhb3*|3Iq%v~Cea@P4sC-R*Z6{AjeK(DGpXBUP|;e7o?+=fcIoc)7GaBpN){v+{mS z@u6-MPJT})c&PnF_IV&)e5?xvgojlGk9D1}m#<0~>(;8mJN}Mv_-}+p-s`s*{g~Y2 zhDtY!-%WPlB{)SlSkDiX6Xa?Bs36DNRqp05$tpgqa6f-dK6{I2_;-qk2+s@8Jx!Fu z`+i!UyRrn9^Qs6Jr^br6y+SC_l_j*jRpxMNJlKM8Z~)1%L3x9aoCid!yT7=}a$}h& z*8}>faP8-DE3Ghc{O3ZC(ff3Or`Z8UTi9EO#Qs`FawcOi*bKT8H@+#FxA7sS@da@| zm=BJcrk5D`_kS?JpA%!>19=RbKOw-O-N{~=-lGw{V{G0h2OL&=>Bkzu{5~;Dy&;CS z2Y;4p-zE4YjV`>*MrW0e3r(NEi+skfwEeV;EVzt)jAnC(#7*5V+UK)BzugLRnBSou z!c1Y11r~XVIgJMjD>+D5$@4$3iVf`!4!bCd9qw?wp(y8zB>W$F8y{&X+jMSwb9vsz zFB&Jn)0KYcTxhYBn?-MXLL$;$^!q_KHc0jl2cNmC1*M)271zmE8cqIf`TTCN;@zG! zww;4Tu&eV-T3QY`4Ihzdy;g$d;|@b9KM=s(?lm_BbbHryyIH!uSAv+ao3wo+4?tfF zI2rcd?=O3QsfYtF{qPniJitfz4=|1KbvRfAKQch9e#GL;51OO#mBhmzqt?V;78Bu3 z@!(+(lFyz}0;F#dNIVxU-gcF=-M_4O+jnFK?vfpN?T6oimn;05B^>Q%jV1LFIodVFdtGE=zV6T|b?awH{7_(YehJ+^ zHkkUP7W>Of=w{gTKB9EpMvyDq?UpKExARK?q+ypI%N$=Q!A^gz`Pestk>`htce~mw z?Hpmw7mM}i%?*s)h9)0DlQ%3C^U?qcV&i7QnZy?|iK|3tee1`Y#N!5m|C1+iw#Z@^ ztC}C0C+}GTm%87al}iMlhOUcl!Gj-O7TEA!t+AGHIv%wIH5q?R37Get;ps=q5l$BG z^@c&bw*;J%^2$?h8cFRa0od(;+*>O5&}c!kz;KA+>gNfOI4OVd>+@zA&lJIwJxtR* z#Ls+{Fpx`s9;kAe0oeT&g;2$6*ud@1D1k)1XO7Cpq3?w$2gE($!$CAk_I59WG6#uF zctu%JEO@~X#v=sM`^NHO!9ym_^D>#@GjUg--a@Cr8$~$ofo8rZh-Lm}9rU6$%<@=b z(2;{pst`8mF3>x$@LN0>Q$Edt?nVlcWw`CKUfXQN8msDcn*VMy~K;^JE)M)@n%4{j59 z8QQ&UNd~JW7c?l7?2{t6bE#SM#Ui_WEi1W7ZLkZr)Rnv)bFXAYk=Z_OX8W8N&Q26t z%r$C*C9MrHgW0n>)(R34qvc6D?n(VYgH&?psByUMW=p z?pGTeL*Nw3@XYpZNijYI4$2`O3-__|?wgqZ-4Ox>j%3YW>EhpQ>tqqXKy_hg+-_9T z-Gt@eATr~Fe*3{seEh?CbF}Cys{)X0wO#&2+I<@13M8IgyFyORo?%yb*u_G4-gQ5| zM{F5iln@MbzkK+{5;p89q*GQLc!znlS}^x>v5G$I$K0QOgRp$ksUE!kqHO&(=(tGW z20fM^G>=P?_8o$|k8B{RDxD9V7jyHMqgBak%(sYrr4Zjip*68b6$e0j%M6{KhrK-~ zwy$#c5BN`9tf_sHcpZS>LyE+84Q7>~B8urVMhT2jp)WtKAim!th*eMtfZ- z#N&c}ul(#JmlEKaA6T`80dbeX!7Ihm`DjRjJbsQUcEM^71=jhzaoRp82WXY>(l`D) zZn(FY;WfrXaa9peJnRR>$6`i)`s7Jw!Ox=RZ^P)k{_GGxeo`@&N@_`h+2&OL(DA2?hNkk0A3?*9j@&7(HHO;@!%N z%X^HA=GUSqe<-$C-&8tOln#0@k&4!zz3s9hsgwF34avy#s(RC>d5AG~c) z>2f(=*9s&2Zo}t#M6`I^#QA1&dx#QrR|#=bs|@q{t}J*>M;Y+X=OsNXo`99*!Myzx z)XU-b#qpAt_-NQ|y!k-(U`5Dt%Y}#ww|d%NDDC&~*yHY(u)+O32DEcUxcegJIu>?a z)u)Bx-CO1kfj%T`;IzL5%G)gT5EJc3qUfwD_eC;nD4>q@0OWS7lI}&;q5e=b{d-09 zUcK?Aknc_f?-bUGBk@Uz=h(eGI1_3Ertq0(n;#OB;aZOk@J$uGS8I*Q;6TZMd|QzE zpmN_i{V`{01MpqZ86FX7?vRZ)HAL!%-AGN(5BE&@aEAlVpP;<;rm$P)7(8D8(5TjC;Rl0J0Vl*(` z`3Pep_)<6y-T)EM@^~vJES`VS_lXniE^&e#U4-(l#|GZ0oQc`kbgNnH|CN7U`$>J( zqr^XO%*NXRyuj&W&kndQabml%&OQ-2XrI_7zNLI=1h|RZ>&#g3UQd{vSru_Z;2XQN zkr2(RglHbS@s8G>o+jHGlYk7eSKQs=7_(`6${_#0yTw7K#c=|{)1vMsDW}D27PY** z{M*otmIV2jVB{mBRUKD^kFCeL->7moIn3%^ETz zu4mrjxq>l4ao|tH^RM7KvBJJ9wDydRL~BDj^Rw^@&Nc3#*M)MNR6>Hp?WWt6*2zRN zYEjWaPNNTHl`DnQow&pC-zZckKc$$ zdDefs#jG*L#r;J4d{8*u*&9y=`J-D4cpCW%(C-t}OO8;aBHwJn`!CkpFJBcg^$UrS>X&Ok1je@%k^9#J0rv0$C}75q zi;a*gAs24Duhz;+IAeQA+e1qz%=oU*kWWjP!wb6LV+n2V6FBr0Z+c$kM#sIp8~&ZB zqal!V-qj{S=P#}Qw zKy5e@3F5YmNBZ_EcagZ4g*ohA?RtDcH2>rd7xDN@aroc9@tg_yWVy8-di|zca<#s7 z+g}#R>?)BK?)b5$?zd@g=n}pWd-t=lggbwnC0w=7@&&d39 zFDQ19oRb%2>CbOGMqVt(4-<5}d3@S&`6K4>9cN63_em(z*TT(TC=U*0T3-}~F1yG4 z<#?YohUFur*+2ZPZZ-C4Yb{absY6{Yr(fya4r#NQI@ z?u#3bIvoN(xAISOor$>X;)X}Z0~_9H)^k9p@PgJDpzkMq;&S29FKs+``swaV4PP+} zxk%LSYfGR!Cy2`VObKW7fU?5t{?1^>nL@Ch6Eo?{8!w>hl@fG9ZGbG{&XBvyN>^de z62P8R<^uik2K3KKAmHh6Oi%KVh~teJ?o&|$SCkO{c82jCTrEfVV-<*^Uz(Pe7TKyb zX3FP_7}?7<$$)U<%nEff_38=eN}r2R?OD~I8VA$Suc~vm&RR>9}YlM zo9iEMcImT9mM``abp4%#$LEoRelayXY;b%Vcf;U85eL64|G6bQLbEk+_}}r!$|nid zy`U%JIlym6i|UyL0rW+M8$jm^P5bI+hb01__wxW~Ljmx)2LS8D=lZoD02@m|z#AXF87=2Hd45SHKi|#s{Ol+{ zU*&oJL=`_@?Rh?uA0O>`e6wu(*)g~8L#MmsyTE!q&dZOT|FWBhiM%N!1XBU+=Q<7W zl&ITIag!|Jub?7YL5**kK%|odeGsKi6%B27*{2I)WtNeL-`yVJcUJ|x`&9OEoOv~h z-y9I;H%}8|CkC z(QMYrLbmgN`Ca+)-wS^EaHICF5iM~T_dB$#V8`D${T`7SUn1~1tSszpyvoe{1ZjPk z9KFN+t#34~cb1{0@sa+2ZvF>MH9~2O0GEgVW)dh;N#E zi7RWh8oXXqw$xP2pMc7G>l9rtb`x)Hp7VtIu5gDw+#)O6+g)VqER~lgv)1Q%euhDm zz3lL7D?!W3kJYsLJ#kXJ=`q6mH)eX??Kn1%5q?((Uhi2!q}Lmh?j99>cr9RXJ&^}o z8(;|evB7hIa)W2EDElGz<2yvSeZUh)uH$rV*%Cmwz(DXLLp$D$`5}0jnCADYi2qUu z!0usp&g}Ds``s6HKy;ZUX}=TpwXk7ysyIClty;fR`7?&m8V??QZiK5V#mwpr75lQx zf!(Rf!0t>V935Tehg~~^Zf(`jUkd2%h`0&Y2RgUPL+H*EzH_LD@9Zs0yTsFeDL;O{ z%su=yGR)Uy?quLDg8X4o9G($-<3;~ehpWKfh)TT!d%e+@s_PQr!anG1D z?fqj#55uux|6zE`?NWZroQ4-d&fZ;Q8Huh9ra*@a9e-UY&0pXj}x$8E>vjkFNX>RmcT`$Vay+pb-DrC>6O+&eAZoJihy^qz60!+!{xoe)2`ioVX}vM zG`9~#qkGnq=zf-;&41=u+GACI-hM+_UI^VO-tT&Mi%Y`xhxATfY_b1CBL1DcUTDWv zzno*RUe%6-vOXF5HuQ`Y@^QL33)dSn{b~ti{V%x}EKj!Oe?yq9^T6y=k&_OqatlN& z1ci_AlsyxY@<5q~qzLFAt#mKveq&I0Jf43S?yGcm;lG>?_lWX#j6~DCQ9kUKvI~b- zxxsg%K>KJ94U!ey>Je_&$}qQhn%^YDoaqrCT*6JoI*0uMdE%X9479C$rtr*oT4INNOmJt!Vp{#5jls^Odb MZ)FtZGGSK*0F+l|M*si- literal 0 HcmV?d00001 diff --git a/parser/testdata/dd-trace-java_0_block_contentions__count delay__nanoseconds_expected.txt.gz b/parser/testdata/dd-trace-java_0_block_contentions__count delay__nanoseconds_expected.txt.gz new file mode 100644 index 0000000000000000000000000000000000000000..8acd89d943e4a1db23c7dba3968f93947299851a GIT binary patch literal 354 zcmV-o0iFIIiwFP!00000|Ade`ZyPZXgnRyqEnFmx__&890xpagsbVLA1f&R3tjL8# z>%2Vhkwp3R!QB}$?8XaRbIY0ecD_*x(eKV9S=bNJoxsJ)MJ)d+)i;V%JO{2TE*V@eLFVW3V&l%c+`m5mnM#CfiMmZoKC9h|3Q1 zY3q*U>p05AU^iwFP!00000|8&iqM1y#?30eRqBMPaXm)hCCV-^kj<0 zWR4@To^hE^exgtk$?hY|OtMALxx==$S)bV#5n?qjlyH47RH#;*X#nW|hAI1bF~{5T z`>9(IPAmIKGRJR{-E-y;HD-Rh-N|c>Ul{cjIWGfPXsQeJm9wsUbd3euU4H@q0RR7N Kp7Q7i0RRBO#bu2E literal 0 HcmV?d00001 diff --git a/parser/testdata/dd-trace-java_1_memory_alloc_in_new_tlab_objects__count alloc_in_new_tlab_bytes__bytes_expected.txt.gz b/parser/testdata/dd-trace-java_1_memory_alloc_in_new_tlab_objects__count alloc_in_new_tlab_bytes__bytes_expected.txt.gz new file mode 100644 index 0000000000000000000000000000000000000000..b186ba0f0faba1b69c6b371bacc64864eb1cdcf6 GIT binary patch literal 3826 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 literal 0 HcmV?d00001 diff --git a/parser/testdata/dd-trace-java_1_memory_alloc_in_new_tlab_objects__count alloc_in_new_tlab_bytes__bytes_expected_collapsed.txt.gz b/parser/testdata/dd-trace-java_1_memory_alloc_in_new_tlab_objects__count alloc_in_new_tlab_bytes__bytes_expected_collapsed.txt.gz new file mode 100644 index 0000000000000000000000000000000000000000..9b36a99862710af8b1344251d2690a1b819d6d10 GIT binary patch literal 3186 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 E0FNwPZ2$lO literal 0 HcmV?d00001 diff --git a/parser/testdata/dd-trace-java_2_memory_alloc_outside_tlab_objects__count alloc_outside_tlab_bytes__bytes_expected_collapsed.txt.gz b/parser/testdata/dd-trace-java_2_memory_alloc_outside_tlab_objects__count alloc_outside_tlab_bytes__bytes_expected_collapsed.txt.gz new file mode 100644 index 0000000000000000000000000000000000000000..6cd51fa6666204e397472078db606dea685297a1 GIT binary patch literal 1253 zcmVB~FN@{`NNr?B)-_ZhO5+FTC*>^xIu6+TX6U`p7;pPcT_{SEUA)ySkAy!Krf{ zI3e==7_E-8-U zN5Z@XNhZAZ(W-hV=2lu|069e%eV2H6*t*f%xy)ZHA=K@=>W(Ux@BUMSzt4+<(>T>U zFJRbs8a&r8n6az`Z_)n#bW>MSLT0#<-lF?E>_Hg)*oALNv;_SL^sxOHJJ-l}5D9(X zKZ2kJ1Z>)v_O5pSE*mM?jR1>{{iC2Y$b4Q^OT)B*{M9FrhNh!dS|@lmEQz9VtMF$7 zwQ+AXH?UB0#fwI>c5P~!1Sem7p5N3)v&<}w=CU|#xX3}ftg1lfGzyY~P>^+_VZkbv zakG8XuLMOg?nE2Ig*VrlZEH7E)%IdVgE)-Z44J0*C4T;JK=QO%tw8tMYnSDDC$%V< zETFR)gb%;yIj>ENrD2*rJ(iHcu|lg`io;-JaJT$JYeZXkeSU5Gu2& z)Rl1Cy`u<)-=<>4Wqt-sm~y+=!;bdKGIamw^14?=BXW0t&y_{)a{N*?Is+Fzm#nD` z`dA6)27WO6dRlG0-xLm_9JhV z60TuupkXoyaR19CH~*s~XbU$E37(Svl=P>hKPCO2^%Qt#13#z$c`cjKLgkQk`}m&O zXTWmMb(>7TQG-1kJzXBSTzBwyW|hz=crvwjfRvC!h$Q+4%L8st)`%Qa9yH6KKU@?b z%@wQH%dCXF5uj)9m0p9kLimo0<3evibCvU~eQQMngibQGaeMJLfL2^^S-6>!Mk^se zyKi?dm)qLFW;Q!#o12{dVKsy}4O0^1G-?%jyLs#td0!NH4;3vXtLjpjOURVYTdQ^d zhT@R?z4}PxTq6es$WO-Fj&&nF3C2cfZTaE#G}%;Q_J3Yi%w%Q%;X{Ov7buy`1<)`g zhh$*I8ev}9Dya0n9HQvZ^j>|=?19)$E{aI&afr}Z8{yyMFG*7yF#{s6xiFw-U5?CE z_ekUTNcFRGF4t$)oxNLe;D4R9#2>OYZ%o+%?jZ5k`%!w8U}mNC#+z5w?APss=|=vu zYmNjCA>qrQ;uM-=p&6ejU3edBCB0vk7r)t9agFNws1y+r902SBxGlK$-TSt->n{+D z?lx+74O&~|_m~*_k1*%VaEbbZv<0E)si?kemxG3W;5*kSa8f@>qOmGJMfVil$42)6 zz;0hDieq$t^y20tWPNA-cP1L3I8H|}6en>oOrPF_PoCmVe+?3#_*vYTpvXbUCy0#Q zT1~W@X!lHL7ydXZgiaj9qt}NM4<;Tw6CR`oRV4o5JNa+sO5$J=2NPK)vP8)-w>MKT zyog{RkB@_H0p@gTpr&bp9*r)P?KpzWR1P%q@i^k$)$4?&=uuzh;ifim5RQ@%kq>_b P00960C}>7~PALEY-YIM^ literal 0 HcmV?d00001 diff --git a/parser/testdata/dd-trace-java_3_process_cpu_cpu__nanoseconds_expected.txt.gz b/parser/testdata/dd-trace-java_3_process_cpu_cpu__nanoseconds_expected.txt.gz new file mode 100644 index 0000000000000000000000000000000000000000..c642be5c42fb01272e22c595282098032bb2ed29 GIT binary patch literal 1696 zcmV;R24DFfiwFP!00000|IAulZ=6ULefO`p4}REvX{c{NJ1cpdSeaEaiDJ*Lw5xq6 zLzyO_s~D(G?0>(4ZX2phW9YWBi4=!Ub57m5_uO*}ulOkb(h4cl`6kDc|2SUK56CNSUEbr;qZ`!W8kD^ zdGhIH`hNup9^ZV+bjm4k2Am(G)_zSc9Q+)gI%yc61U^Y^gFQ#UPiZo7N}nv0#KPJf zEbQVq1p1A2MmMwLX07dk}{ppn=KM8!q$?|6i`?ONW5QPvS zi171#9DCk=Ju6!_a$Z?|%cTDb)BV(Jouq{4$y=8EAFAQ^ChgulbT1bGPy*q72p@hy zkVz{ulLzMO+S-Z)g|@2JvJBdf!KEzAYgK6L}r>e51UKNkmkO-WF(EJkq<*z$t zJeT>ilI4K&axDwJs%n!el|h22aCylL-qdKV(srA{Y}dY!;N{T?jhkG37br%W} z#5_teo3dysY18#!pOkW!j2=PO?UW+7qL_JIVb#42-l(+L$a2?J*AJUpQ#P#!{iYi$ zb=q!EL@p1XZp&QRf2-O+f+=xjiN!SXZ-p-G-yuOU^O6wF1^Ti2-sl3)_uH;iTHF<_ zht-AdydiRVNI2JuxEnb^i~PVHNaO|Qd~#gm;YN+KR=K(lKI|p(m@@3I>3in@`>9)2 zuQodlNDv|(+Sk~@8R2#_8EDGXdGMt%I{3%+$KOBReo?7ieXk3v{wd3C3ywl>Q85GD z;)L6$BwDbjh~0w?i4TCg;qbU762gVia1v(CZc0Ide50ahHj=yfp?Hx7-JYeMnRNv% zO)5(jRJHk5WU3xDkx%?pY^iqn_72dcyDyRvgQxn z6uDN}F2f-tBytBg^^I+aey8pqOM_$AR_L^^9kM5ag}453Hb*dWOTngXZk(q*q2{d{ z;268xW78+b!|ofqlZ(whK?+y-%s0ZWE*H0rtz~L=Rrz&Wl$okmvZ|EMAmPN#Et@z@ z`dEzI=3%}aPGBQfkZgL&o?jLBkAi&4oAAz)?1gzdm|Ct&v4y&P8YYo zq4*2)wx4{i;`nijBbd30e%;TMS`1B*piw#A*uttaTfUcBz^OzjUL$|7YdN@A| z=B{Py=B;bA{3U4~R)<&RX?;!*dH%;=nB;$MO(!$#JqYu;^7MQ~%$BDcrx=xIH^7@! zYO05icaRY7S%DZ8V~2WQGYrS}X)y`7CJtVhW#gM>!zAy|#?RlNSXHWxvh_o7^LX`H{kc`mKAcOV?}~i?>rc(I z2kvO(rOXIr`@mPEYSk#6T~yVzm953~yJ%U z4~sd4(Fs7x2_;V|?r(41n)y(r?{%K*oA1R+RgPR9b3&gsimlyvV`Q2^cjK{ls56*| zWCHGK{r}N*T`L8Nm0G!{i^J{__`%OT@wJK0!CZssZa<>Ekv~}c`|mgOC;Aipd075j zsX%J?>`LlBb!u~R;tzTwvb%XL3az=L=epxA3foGKipOZ#-hsYyBQ=^eSV=i08WB!-Fr7nCPHP46BNer zNusB2N0Ik3w_y4U{8GL6$fIb->ieIhy86%z=XO|;H`uQ=Ht1??SlP)!u%e{yUpNaR@Ft%@m&d?XjiU3NEET>uV^5%W*7w2nwq z?#J=tF&1{lGNW(m8>o`6!>fXcvHzd z1>=aK0F`pKzGd}5K}obC8D5muh{SeEL(fMSpbK8c1)Zzowf)Z42`r|&%Red$85mAu zZ;w*kqh9Bj9+d~QH}cRe=$1osOHAh$x6D5aJX}g3 z{YOVX?TrZDF(S6dh3&q%!OO=+TlC{xWF@EU-gm-^ybia0@WTPYM?>hGSMQtvDM!j* zJLUM>5v2SGDMxCN+T){^;feyOJveIjOuu4mr&pCB#Ypi>QXK8J@O@emA?HI#}m_&%qLT90~p4(Z`YV!Oitun{f^R}2NPGhzn{;o=ysbw1efP2ix)C6?rtvjO= zZ8G<=)XM$y{OqsBjE>bUQX~w$ErK}i5;QMZ F0038GQc(Z^ literal 0 HcmV?d00001 diff --git a/pprof/parser_test.go b/pprof/parser_test.go index 84d6fc6..54b2e41 100644 --- a/pprof/parser_test.go +++ b/pprof/parser_test.go @@ -43,6 +43,7 @@ var testfiles = []testdata{ {"cortex-dev-01__kafka-0__cpu_lock_alloc__3", "", 2}, {"dump1", "dump1.labels.pb.gz", 1}, {"dump2", "dump2.labels.pb.gz", 4}, + {"dd-trace-java", "", 4}, } type gprofile struct { From 4d3234ebc73cfcb2c74ceb0ff31913a42a5e555a Mon Sep 17 00:00:00 2001 From: Sivachandran Paramasivam Date: Thu, 15 Aug 2024 10:27:20 +0530 Subject: [PATCH 2/2] Support char array string in emitted string parsing --- gen/main.go | 13 ++- parser/types/active_settings.go | 74 ++++++++++++ parser/types/allocation_in_new_tlab.go | 74 ++++++++++++ parser/types/allocation_outside_tlab.go | 74 ++++++++++++ parser/types/class.go | 74 ++++++++++++ parser/types/classloader.go | 74 ++++++++++++ parser/types/execution_sample.go | 74 ++++++++++++ parser/types/frametype.go | 74 ++++++++++++ parser/types/live_object.go | 74 ++++++++++++ parser/types/loglevel.go | 74 ++++++++++++ parser/types/method.go | 74 ++++++++++++ parser/types/monitor_enter.go | 74 ++++++++++++ parser/types/package.go | 74 ++++++++++++ parser/types/skipper.go | 74 ++++++++++++ parser/types/stackframe.go | 74 ++++++++++++ parser/types/stacktrace.go | 148 ++++++++++++++++++++++++ parser/types/symbol.go | 74 ++++++++++++ parser/types/thread.go | 74 ++++++++++++ parser/types/thread_park.go | 74 ++++++++++++ parser/types/threadstate.go | 74 ++++++++++++ 20 files changed, 1491 insertions(+), 2 deletions(-) diff --git a/gen/main.go b/gen/main.go index 17e77fc..ec0b004 100644 --- a/gen/main.go +++ b/gen/main.go @@ -82,6 +82,7 @@ func main() { } func write(dst, s string) { + formattedSource, err := format.Source([]byte(s)) if err != nil { panic(err) @@ -514,9 +515,17 @@ func emitString() string { res += " }\n" res += " bs := data[pos : pos+int(v32_)]\n" - res += fmt.Sprintf(" s_ = *(*string)(unsafe.Pointer(&bs))\n") - + res += " s_ = *(*string)(unsafe.Pointer(&bs))\n" res += " pos += int(v32_)\n" + res += "case 4:\n" + res += emitReadI32() + res += " bl := int(v32_)\n" + res += " buf := make([]rune,bl)\n" + res += " for i := 0; i < bl; i++ {\n" + res += emitReadI32() + res += " buf[i] = rune(v32_)\n" + res += " }\n" + res += " s_ = string(buf)\n" res += "default:\n" res += " return 0, fmt.Errorf(\"unknown string type %d at %d\", b_, pos)\n" res += "}\n" diff --git a/parser/types/active_settings.go b/parser/types/active_settings.go index fdfbea5..b4435ba 100644 --- a/parser/types/active_settings.go +++ b/parser/types/active_settings.go @@ -182,6 +182,43 @@ func (this *ActiveSetting) Parse(data []byte, bind *BindActiveSetting, typeMap * bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -327,6 +364,43 @@ func (this *ActiveSetting) Parse(data []byte, bind *BindActiveSetting, typeMap * bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/allocation_in_new_tlab.go b/parser/types/allocation_in_new_tlab.go index b50358a..bdea16e 100644 --- a/parser/types/allocation_in_new_tlab.go +++ b/parser/types/allocation_in_new_tlab.go @@ -186,6 +186,43 @@ func (this *ObjectAllocationInNewTLAB) Parse(data []byte, bind *BindObjectAlloca bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -329,6 +366,43 @@ func (this *ObjectAllocationInNewTLAB) Parse(data []byte, bind *BindObjectAlloca bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/allocation_outside_tlab.go b/parser/types/allocation_outside_tlab.go index 3ff5288..231d4c4 100644 --- a/parser/types/allocation_outside_tlab.go +++ b/parser/types/allocation_outside_tlab.go @@ -179,6 +179,43 @@ func (this *ObjectAllocationOutsideTLAB) Parse(data []byte, bind *BindObjectAllo bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -322,6 +359,43 @@ func (this *ObjectAllocationOutsideTLAB) Parse(data []byte, bind *BindObjectAllo bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/class.go b/parser/types/class.go index 5280af6..46b805c 100644 --- a/parser/types/class.go +++ b/parser/types/class.go @@ -194,6 +194,43 @@ func (this *ClassList) Parse(data []byte, bind *BindClass, typeMap *def.TypeMap) bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -337,6 +374,43 @@ func (this *ClassList) Parse(data []byte, bind *BindClass, typeMap *def.TypeMap) bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/classloader.go b/parser/types/classloader.go index 187434e..7668e9e 100644 --- a/parser/types/classloader.go +++ b/parser/types/classloader.go @@ -186,6 +186,43 @@ func (this *ClassLoaderList) Parse(data []byte, bind *BindClassLoader, typeMap * bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -327,6 +364,43 @@ func (this *ClassLoaderList) Parse(data []byte, bind *BindClassLoader, typeMap * bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/execution_sample.go b/parser/types/execution_sample.go index 914c09d..fa8aa04 100644 --- a/parser/types/execution_sample.go +++ b/parser/types/execution_sample.go @@ -172,6 +172,43 @@ func (this *ExecutionSample) Parse(data []byte, bind *BindExecutionSample, typeM bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -315,6 +352,43 @@ func (this *ExecutionSample) Parse(data []byte, bind *BindExecutionSample, typeM bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/frametype.go b/parser/types/frametype.go index 2bcf85e..48dd699 100644 --- a/parser/types/frametype.go +++ b/parser/types/frametype.go @@ -168,6 +168,43 @@ func (this *FrameTypeList) Parse(data []byte, bind *BindFrameType, typeMap *def. bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -311,6 +348,43 @@ func (this *FrameTypeList) Parse(data []byte, bind *BindFrameType, typeMap *def. bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/live_object.go b/parser/types/live_object.go index dd0d866..c70feb5 100644 --- a/parser/types/live_object.go +++ b/parser/types/live_object.go @@ -179,6 +179,43 @@ func (this *LiveObject) Parse(data []byte, bind *BindLiveObject, typeMap *def.Ty bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -322,6 +359,43 @@ func (this *LiveObject) Parse(data []byte, bind *BindLiveObject, typeMap *def.Ty bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/loglevel.go b/parser/types/loglevel.go index c3b22c5..26ba820 100644 --- a/parser/types/loglevel.go +++ b/parser/types/loglevel.go @@ -168,6 +168,43 @@ func (this *LogLevelList) Parse(data []byte, bind *BindLogLevel, typeMap *def.Ty bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -311,6 +348,43 @@ func (this *LogLevelList) Parse(data []byte, bind *BindLogLevel, typeMap *def.Ty bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/method.go b/parser/types/method.go index 64ce853..6fd375a 100644 --- a/parser/types/method.go +++ b/parser/types/method.go @@ -197,6 +197,43 @@ func (this *MethodList) Parse(data []byte, bind *BindMethod, typeMap *def.TypeMa bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -342,6 +379,43 @@ func (this *MethodList) Parse(data []byte, bind *BindMethod, typeMap *def.TypeMa bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/monitor_enter.go b/parser/types/monitor_enter.go index cf47e4f..3f2f53f 100644 --- a/parser/types/monitor_enter.go +++ b/parser/types/monitor_enter.go @@ -193,6 +193,43 @@ func (this *JavaMonitorEnter) Parse(data []byte, bind *BindJavaMonitorEnter, typ bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -336,6 +373,43 @@ func (this *JavaMonitorEnter) Parse(data []byte, bind *BindJavaMonitorEnter, typ bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/package.go b/parser/types/package.go index 69a35e6..d061ede 100644 --- a/parser/types/package.go +++ b/parser/types/package.go @@ -174,6 +174,43 @@ func (this *PackageList) Parse(data []byte, bind *BindPackage, typeMap *def.Type bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -315,6 +352,43 @@ func (this *PackageList) Parse(data []byte, bind *BindPackage, typeMap *def.Type bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/skipper.go b/parser/types/skipper.go index a49fbd1..701fe1b 100644 --- a/parser/types/skipper.go +++ b/parser/types/skipper.go @@ -155,6 +155,43 @@ func (this *SkipConstantPoolList) Parse(data []byte, bind *BindSkipConstantPool, bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -296,6 +333,43 @@ func (this *SkipConstantPoolList) Parse(data []byte, bind *BindSkipConstantPool, bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/stackframe.go b/parser/types/stackframe.go index 9a05fd9..529a78b 100644 --- a/parser/types/stackframe.go +++ b/parser/types/stackframe.go @@ -152,6 +152,43 @@ func (this *StackFrame) Parse(data []byte, bind *BindStackFrame, typeMap *def.Ty bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -295,6 +332,43 @@ func (this *StackFrame) Parse(data []byte, bind *BindStackFrame, typeMap *def.Ty bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/stacktrace.go b/parser/types/stacktrace.go index aac1f84..38a0caf 100644 --- a/parser/types/stacktrace.go +++ b/parser/types/stacktrace.go @@ -179,6 +179,43 @@ func (this *StackTraceList) Parse(data []byte, bind *BindStackTrace, bindStackFr bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -330,6 +367,43 @@ func (this *StackTraceList) Parse(data []byte, bind *BindStackTrace, bindStackFr bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -473,6 +547,43 @@ func (this *StackTraceList) Parse(data []byte, bind *BindStackTrace, bindStackFr bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -621,6 +732,43 @@ func (this *StackTraceList) Parse(data []byte, bind *BindStackTrace, bindStackFr bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/symbol.go b/parser/types/symbol.go index 4f6f5cf..dbab2bd 100644 --- a/parser/types/symbol.go +++ b/parser/types/symbol.go @@ -168,6 +168,43 @@ func (this *SymbolList) Parse(data []byte, bind *BindSymbol, typeMap *def.TypeMa bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -311,6 +348,43 @@ func (this *SymbolList) Parse(data []byte, bind *BindSymbol, typeMap *def.TypeMa bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/thread.go b/parser/types/thread.go index 78ba708..75a3220 100644 --- a/parser/types/thread.go +++ b/parser/types/thread.go @@ -190,6 +190,43 @@ func (this *ThreadList) Parse(data []byte, bind *BindThread, typeMap *def.TypeMa bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -335,6 +372,43 @@ func (this *ThreadList) Parse(data []byte, bind *BindThread, typeMap *def.TypeMa bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/thread_park.go b/parser/types/thread_park.go index 492335e..6ce8aeb 100644 --- a/parser/types/thread_park.go +++ b/parser/types/thread_park.go @@ -200,6 +200,43 @@ func (this *ThreadPark) Parse(data []byte, bind *BindThreadPark, typeMap *def.Ty bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -343,6 +380,43 @@ func (this *ThreadPark) Parse(data []byte, bind *BindThreadPark, typeMap *def.Ty bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } diff --git a/parser/types/threadstate.go b/parser/types/threadstate.go index 1bfa512..0c533e2 100644 --- a/parser/types/threadstate.go +++ b/parser/types/threadstate.go @@ -168,6 +168,43 @@ func (this *ThreadStateList) Parse(data []byte, bind *BindThreadState, typeMap * bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) } @@ -311,6 +348,43 @@ func (this *ThreadStateList) Parse(data []byte, bind *BindThreadState, typeMap * bs := data[pos : pos+int(v32_)] s_ = *(*string)(unsafe.Pointer(&bs)) pos += int(v32_) + case 4: + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + bl := int(v32_) + buf := make([]rune, bl) + for i := 0; i < bl; i++ { + v32_ = uint32(0) + for shift = uint(0); ; shift += 7 { + if shift >= 32 { + return 0, def.ErrIntOverflow + } + if pos >= l { + return 0, io.ErrUnexpectedEOF + } + b_ = data[pos] + pos++ + v32_ |= uint32(b_&0x7F) << shift + if b_ < 0x80 { + break + } + } + buf[i] = rune(v32_) + } + s_ = string(buf) default: return 0, fmt.Errorf("unknown string type %d at %d", b_, pos) }