From 46e2bebf9351fba54955a776041b5b2a594fedf6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rog=C3=A9rio=20Brito?= Date: Sun, 13 Sep 2020 19:42:17 -0300 Subject: [PATCH] New upstream version 2020.09.14 --- ChangeLog | 39 ++ docs/supportedsites.md | 13 +- test/test_utils.py | 2 + youtube-dl | Bin 1756500 -> 1760333 bytes youtube_dl/extractor/biqle.py | 20 +- youtube_dl/extractor/extractors.py | 13 +- youtube_dl/extractor/googledrive.py | 27 +- youtube_dl/extractor/nrk.py | 20 +- youtube_dl/extractor/redbulltv.py | 125 +++- youtube_dl/extractor/rtlnl.py | 24 +- youtube_dl/extractor/soundcloud.py | 4 +- youtube_dl/extractor/srgssr.py | 8 +- youtube_dl/extractor/svt.py | 14 +- youtube_dl/extractor/twitch.py | 664 +++++++++++++-------- youtube_dl/extractor/xhamster.py | 18 +- youtube_dl/extractor/youtube.py | 30 +- youtube_dl/postprocessor/embedthumbnail.py | 33 + youtube_dl/utils.py | 1 + youtube_dl/version.py | 2 +- 19 files changed, 750 insertions(+), 307 deletions(-) diff --git a/ChangeLog b/ChangeLog index bf515f7..4143ec2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,42 @@ +version 2020.09.14 + +Core ++ [postprocessor/embedthumbnail] Add support for non jpg/png thumbnails + (#25687, #25717) + +Extractors +* [rtlnl] Extend URL regular expression (#26549, #25821) +* [youtube] Fix empty description extraction (#26575, #26006) +* [srgssr] Extend URL regular expression (#26555, #26556, #26578) +* [googledrive] Use redirect URLs for source format (#18877, #23919, #24689, + #26565) +* [svtplay] Fix id extraction (#26576) +* [redbulltv] Improve support for rebull.com TV localized URLs (#22063) ++ [redbulltv] Add support for new redbull.com TV URLs (#22037, #22063) +* [soundcloud:pagedplaylist] Reduce pagination limit (#26557) + + +version 2020.09.06 + +Core ++ [utils] Recognize wav mimetype (#26463) + +Extractors +* [nrktv:episode] Improve video id extraction (#25594, #26369, #26409) +* [youtube] Fix age gate content detection (#26100, #26152, #26311, #26384) +* [youtube:user] Extend URL regular expression (#26443) +* [xhamster] Improve initials regular expression (#26526, #26353) +* [svtplay] Fix video id extraction (#26425, #26428, #26438) +* [twitch] Rework extractors (#12297, #20414, #20604, #21811, #21812, #22979, + #24263, #25010, #25553, #25606) + * Switch to GraphQL + + Add support for collections + + Add support for clips and collections playlists +* [biqle] Improve video ext extraction +* [xhamster] Fix extraction (#26157, #26254) +* [xhamster] Extend URL regular expression (#25789, #25804, #25927)) + + version 2020.07.28 Extractors diff --git a/docs/supportedsites.md b/docs/supportedsites.md index 35c1050..367545a 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -717,6 +717,8 @@ - **RayWenderlichCourse** - **RBMARadio** - **RDS**: RDS.ca + - **RedBull** + - **RedBullEmbed** - **RedBullTV** - **RedBullTVRrnContent** - **Reddit** @@ -950,16 +952,13 @@ - **TVPlayHome** - **Tweakers** - **TwitCasting** - - **twitch:chapter** - **twitch:clips** - - **twitch:profile** - **twitch:stream** - - **twitch:video** - - **twitch:videos:all** - - **twitch:videos:highlights** - - **twitch:videos:past-broadcasts** - - **twitch:videos:uploads** - **twitch:vod** + - **TwitchCollection** + - **TwitchVideos** + - **TwitchVideosClips** + - **TwitchVideosCollections** - **twitter** - **twitter:amplify** - **twitter:broadcast** diff --git a/test/test_utils.py b/test/test_utils.py index 0896f41..962fd8d 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -803,6 +803,8 @@ class TestUtil(unittest.TestCase): self.assertEqual(mimetype2ext('text/vtt'), 'vtt') self.assertEqual(mimetype2ext('text/vtt;charset=utf-8'), 'vtt') self.assertEqual(mimetype2ext('text/html; charset=utf-8'), 'html') + self.assertEqual(mimetype2ext('audio/x-wav'), 'wav') + self.assertEqual(mimetype2ext('audio/x-wav;codec=pcm'), 'wav') def test_month_by_name(self): self.assertEqual(month_by_name(None), None) diff --git a/youtube-dl b/youtube-dl index d0d0d2a09573e08159942e494dc6358e63b9bf2c..7dcfed4c48d982cb8608b09ac4cab7763d493970 100755 GIT binary patch delta 94365 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⁢ub&A~QO5Ob{; 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%0D2d3$8PKILU1dlMPHiP35VM9uU9JTpNi zgjhU)QuI;^p$#8qp4$Dy$t=(qFZV2E)@P!YbW91ag-CoURas|htBN{*Y53h#WoW=q zgHVOM{@aNV!K_{m?7dWNetgVm5Pts_%7cNF>VW|i%7g)n^w1CQYe47r?A1TA;FSwg zwfbjfg=l&Xg}Lw#$A(Tq43_~zCTPvX9m8bCi(DfQ%Ur|$lXPrvVkCYLB89f(P9miM zO+d20t_>u`tgX8c8%*L^Eb|{Le?#+tfy5or0QsAbRg%d^?azvKT6wnH`$hE6j>X9V zoQ{Om_Lzu4Y<0c78pf_sgta-V1+OzIm2O)+Jsc{b((5*d4ch>SZL1Sn(fC7q`^IC5 zI;u4FgEFiP28lGa@)F^op(Vr$r&8}3cnPhDg#KEgih3yV_7NV6h`Fy?f6=18=WGoL z*|uo#zp^B-J5_B9VW__{*rPPnuQK@h9&R{5Qgz&=YFD;84If3WmNyFrvS|7B>%W}{ z5x}xmOva|3MJz~$^-$%qBrSHM6i0AaSu7$91RHwIG|QHlDWTDTg7D?cE2x#Bfcd%4 z6Uf4l%x<=Bce9GF?|{KAe`2=k^vCk0dyn-e>OJ@!SuaaV~=ii z8pk05Se&F~3&T2jODb;^4-MvYQ--=adBAj(trJ$3h59#?(JAxGF*|iv!HTTrOIB*8RL@6a4J~u@?GdqM zt4qt=OACz8A~}AZs-*J_4no6uH5}IlfXz%P^*-5W-jRK1FqeU$#xMwwu2R!<6?e8c z>q?oTJd@KUIfPFrM6FJatrS>(FX+3ylLKGu5c#661$u0Xlx&sqNlMxozO z$GoEd^$-KQe=X7(yOPl1Vu)vWiiE6HWl%hsLrt`Sut_i~3v>NNG#268z?u5LC-rfr z`UHzS2w;zW$fDVw68}^oBsfT_17u+VKCNSDDs@{=AhRNI#h#MluuY10uULX95~xc( z0&_E_$pqCd;Rx^>K4t2i*JGh2X>~FDblpuR;Hfwqe*qLZcoPFfV%6(F)*MjeLEY$$ z3nmD)ZcI>Y{*(tA^4IV;E}tmL1fMg*zJ~Z7Mj+M8^LnQjm+TX41Q(1$f=X|xw`EeL zzGp?qtci<-PNv^1NNS3i)q7ogwhiIxdl)*+x248?rE8n&I7SF{Ib+aJ*Mtdq*`_5g z3 zKrul=On(xi7ZZxo%4L8-oIlpcS(%K?wm6|fX4n>i@W-t6-YR=n^^86+99U+j;hhNz zUeIoHijU`ow5mIA>l?te;r7Dp7}bS=RS}AjVE&bn;D-?2Q!7H z?s=|gbaiUoITFuIIdZrR^~pF^vH|O>2u-gvqv;#n$_m&`9}&Vryk?GI&D^9lc?g_& zeG)CgUlw5@3KxtY@=*N|cJ&^C>FTwy5r?N+qR28Z+yp@W;fKja4;)?u^=N?o5bD$) ze|KQb5Dl~tpl-4+TXsAqsYrwO1cK;p-y}Kj0F1>c0U+W!adf)?I9J~|l_mu1%U{U* z@|R$4tM)>He`=Ju9zh{Wkv2;dGk_3zuae{qMGPQB*x#P`%WJ{>Xw_Ej{1=$3-v;OR zHzMIj%Mm6RzCC6lWG8ccJ9#Qpf8GbIf0O>W5299j=?uD|$RQw9klAs^B1FSJxS?GQ zbOBX}B|2S2(N^%a)y;avR!Pm9(_Tk+UjXK}amU(pJ)W51cc)Hlyu7z@LkL4bf7TpY zd=C+_{^di~hz^=?uj(CmVQSHEhhCT@0EWNBN26b2w*_+B0-0w;LuBRm$i3dXe;CH3 zPf`#7dyz*$Ll39O>fwTqf(9U&pc7)TV3v6*`>)2H^3?0Td)=cy>J*+t1HVJKH>SxB zjUNLk$_^1nK(f?iP|Aw_#F~UilL06Yn&YRJ=knEMxO|=2l{H0zVeyAlk5_jZ9F~1z z_b{+V@^%>@X%t6yiSWE@%J+93f6gOAafQnQy|SVwLjt=j-c1S~lr;3+LLdfOr>Jbf zZMi9_y&$zAhh`l~mbTZEBx#!Q?I**XC07On(JXIs{h!4K07P2UfJ9X*)E^D%$}|%P z2|XV{<`=HnJj)@ z)7fg7AN{4gPRvU!Er~0w?r&!N4e&SPfQhQBDE_u2OlYqfHZF|fD})O=D!_?&to7C7 z$l=N}HrKm5e+G?jIO)x7e~JuytD&H7xEG7!U$_Hny5cLe$m3UR6W9Py?Aiudr2Mj%5 z4aAwbB@43AOmbqJX2aX+$xf)zbKn7vu%dxRfuiXt_?kGYjtorEf7hfbk`;$ob5?Mf z6>S5ju2#%UY%|%K`OVKaYe@H%v2rBR(2a$pn0JgC8EmlWVL%2P2EifJz!Y=0#Z4G4 zD~~Om9)@!LJLjm*;7P)j*5FN2iE1~n)3W5%@uZg`y@$@~3frl}+#22E*60iesoc9< zFCJxFgZ6FbAFHnKe{T3#RTHe#br~My$G!eJe%OORN>NMzV43{UPJ zE<4DjBZCk!|ZT-Y6>-LoQg*Q*E4dxohP(ejY zWid(t$-B!Y9TM9Zy2yHPAwd3nb=yz(#Z&_Yd_LLT8&e?&A02>E8>b=`W#slp#@3!T|8KT5QFiY=!-Q*GLJ?{co<(@g^9vC$T zUW$nTR_8rKtUC7q^m|U*+P(W7;5zbe*ovs2Toox9>F@j5t`ACnka1BOmC@3LKa~^+UOCp=?scF1R1glI{qr@F6W=vd+s1$zd zk5cZfUwR_PvYI^b0P`abfbf`e==6Rzld-tr&vrk=<_4UoSEae?^4R^Fia+N1gS?wBZ_9dfFc| z`L?~+eN=uIA&7I;gfKcYh-W2WFk@I;3&=HwL!JhUegUpjm+>0SK(cK$V9v6CB`{gW z_nVn#J%UkmY$$lvV)9N4c%{Wezt@2?!%5WHgjD?SEhNn14Dp#1o)ZD z^yFq!J(~x)WJ#5h5%3OR%rSzVQjPAN3)0|f06~<)kH#g09_`A@j4xtbUW`&bF7p;T z_kfB< zf0u;ZgMkAKFLUtT^7yfXS3xCXge;Q}kZ=RpoO7pT+?r36jt=@o9UPLU2jRs^W zhzpq>i2l5}(}?WTmwj@azSzyZMaMdiw9qt+pg&z*vgGK^R~v%Hz@H8f6S_ro!*G8x z5N@WSh@&2N`ou5AqMY8+W5@=V`j{20^4gFF0a~qKNAAtzhU2zhDr%g}_I&E~}mP1q;<((4*81dVNC2)1l-(Dy!h zlIN`s7J!M<;RmSi^-@Y*QiwwMVvq%fA+$m>eg{_8`VdqJd#(d6z7)Xc1_xV?(EZpH zQti_xC(}Pz=0v>%T2j@261WEIe?`?pkdjd#EBaP7Y`*`J6)&xdAhb{q+Qb*MA?VBY zPsZ-8FJ=2flgK`JYqS@FToVxCZ^d+?i5gN1K9*-(S6RecSXppcj_%ZuB~Cb6OiVPI zU3vU!BG8`Dn2kh6&m9(;o`AoU!YX(mr`0C(F6nfxx+m2h!v>M=J=ALrf8RcM2KMu% zIMPRoz{-Q+z_C4Rku-h@UYA4AoSI4;?x`A~c57^Ig(`61MRcE=E;4;s{6EgL4BXlb zklfsi-@s==UW((}c{P-Kcc00}7iN8Y0Y=mK1JU($%nH2Qtf<#TN`C-+zGdROUV%5( z7#%_kJ*oz%KKA&J0}!On$d|tEn=`s~?r_O&+`>HH6e zfj9q65PUpz!+SyTY3?N?f?mi&>N=!Gh3~5fK3-yC+_hhJplq#xcUU2;0`EjZ=ZNkP?mV z!ys}g5VI4;NN%hN7t?es&9o3S=tS{kdl5lY8?z1#wt14IEZOc2b_V;c@3461?(O1k zcK(w7e}3*=h{5k4&;IgeFZ%Dn;&=dqt;hbD?jP*Xon3cuurnU_*ghS&{k;Q_-Rt$) zH`=;cfbX#NX&Aa=76gnu18t*CiQV7n9ke>+kM6r38D0N!)BW|0PGE(VIVC)S03A+P zOvDuI)ITKN)WulK;^dpP-Me_@{pNgR&(ewmyE_5Mp-Z&Vcj`SsOmOx=Cw?DXma zizVmT>6_~puU}#MY&NyvGe!m8A%&eIe>oSgt}p-PT%SHKTP#V(@>(Ux8|$=NT_iUZ z5qJXk94P+qmMAbchI*nbWw!75Q49zPmYJC5Z%Vs~^Dqlw`4!ZcTXN^`i9qr*CZ-Y1 zDpj8#Hij{*Fl|uN+?}x2vi_PyQ5iF62g3EC`blDuClbFqiKBFGW3+8; zE%leDYo{(F*E(&-eEYp7Ah7);RdZulE zCYm?zl7v&^HpKlf5^QLlXDWpdy*wg$|Le;N0*hmX@D^&1K$d>FHL7^TcZC}ae}=xZ z?5OJ;0q#8Up?5R@c6}aFHwbJ?1qQ2CZ=-;N-*ttE`M3*L(MH`k*allIf2dq39=HMk zKJKQ0kr+NDG4zPkb?1-+C>e$v2Jgy)e@%lcsG7YxNwXUh zqTFs$uE6bva^6uVxw@f7`2jmEdUG^^4e^Z9j1!^ zAG$*cyU{lc9ap;^e`htfiJ2SZ{Zi&E5KT0%$XOM7maRQ3*a%mEWgSYrX3sXt^2-(l zI~3@U8XJ`5A@jd7!KLl-&;>Wu$iZPI?4jDuJ(8f0J|sW1;ol>B^yj0Sr_f;KBDeF& zP&wjdMWQOM@E#~m(IjUkk?dM$mJftLHtltYy@8wo3nyX%^npHY zZR65Cr(!C9e~upB-{8uW@yS%kC2Z4XqF#U)=Lv>0jr6HO!Q5(L$~OxtsfWVW5v7P$ ztJSXUC{bZc^IJ`GnGJFUE-g|QT-%o>1p${!xs|_IMpeM|va9$l@+0Y+^80;T zpDr9prq6YRt>_@&s*y-Bims zeN+yUf8!goe_0)Rb*g4fmkJqYQ%@54W*f@^WLZC&VL+AfuHl*oR3O1ry5{NwTk1zS zD05Hg6OdG@Bb zf!NZgt)!4-2KmsvWnr)&X~L)s`U((!#u#N;C=jQCXjw_}Mf2nS?osckWj<5hM1yrO z9O2u7)g5x_GZ--85KvylK#Qw9+(dSe{G^ktp}xe`JUt zVOLKPBuJwqIDC>2Wd%PbV#=~_a$cyMw|ud7&w~KJpF)tpg_`Eh4Ir&TuEiBau0l<{ zLV)f9VrOZqq6vlEWg&(S+e(GsIfOJunfzTZA@grbRj;vZl!sPp)al(UZJO1Artf*o z6>9Nej!LMNy=gidhb|9_UPPO~HspJDVT6+En?Kdb|E!J#l!F${QBv90zjlzq7V7ZEu zOj<_)jKg*qWH>=#`s^9+NboZ@XU~n7%Q(s>oJM|p@+nJ@o5cwqL58eQmJjJYli@-UT;`enDhJj(_L6}wn6|0>jNz8wN1yN?li5Pkuc5@aB?zXX~Lk+37OK#71wOpe)EIX34!h#~DHC*)umpX)2w) z|M?Y4@##sgvibf#onZfT^3ML@-G{Tw_opWp(t&g(pS_c3&sZl~1@=vxX3%~H$g)-s z`;wht6xx^p>!p7<^am2qh65#^+rY!I9e6O6bnn?ql({$1&?DoX731mhl>sKZKxuQ6u+uLtIa^olqqBX8`)TmoRuZ(hl-;0vUS&)So#*%gR zK;C+?zYfDo(kk~QU_sfjL_t*RxRU97kg^tGDQ5;Ao04~y%LBEN027J1nw71vz1!dx zRbcS8iwu8sB+UXhWgtI46tlwMmh7Y_U`&{D!kBV-zaoeO(d9QVP;St)vezJ`gFtFi z=`vYk(#tWZ4iMy@XwwocuuW;w%lcKmB^WGT#JNOpEyfXEQ{<^aWF`5$8bkhdeWaLxbFJ4CXpo%xQunpH^k%n1U%y3+u&=u#FZ7 zbj^R}-Ms?5V3)d3;d6FGge{+ft1A}ee+BW*KhLF$c!?!{yp+JFVzf*_>hJ05cX6_i z?t<(_y7AmN!G!pJg62g3z{Gxd|0ZoCg5=YIn^32uA) zkwid5KV*ifOy#8PYsZ3oJRC~?)uy#)O`3lZGj~trnLXuJw?*4PR-4G@p#e;(#tJ<_ zM)Nkg-vp4Z9SWWZn_x0UCgej1C3^B5c0OjA462s}pf#7UU%5qHMA%KOd68b^>wW;j zfZpa~JNY95>t;f+ojq6!%obXQuv`=azE`vU9$Kw%S7={+l z9b>uf!btwq9QPoY5^k(Gm8xuJCYp&-&Eb7$D0boTTBT)6`&vNQWM4O#$oklBZ7nyn zNm+%UXp`g=PI7Dc_(qbk4Yz08ar=Mm$;HLdPc&U=ZdE={;yD=D_rd%oOOFzK7H97< z^6p_}`FJfYPz2^UO>c2Re9dA(vIz(#LYzo9U;hDZD+XYRvzBnY3jQ@pPd=@J1QXKc zT`*C)L5Vc~`Xz%LwH3-)T!BMopAu9cft>$}qd5+P`G(a`)1PqsDvaF)TN!_nJh~*^ z4g^^lK*f*~6L`|sFTi!!qX+Hc?f^9$5hH#UCv#j|?V+Y$X-d-14C3LMiqQ@lCxh9q zY1(t?2cWitr53b_vHIZ#MG+3g=9hIliG6nT z_GBPc5N+R%K$}73Tfb!w_|pm#(j1U%MKHA~=BA{Qy|C6Zv}`1KtcRz0Wtz4M(%8dw zFub`9PTsX%IyiZk97FUiSI|O`q1zGd&TA62)jE1XkRHwOP8bBaDpP+pU$xwgux}Ct zrb2c(fHg4?N;@$Dd*@w6G z`x9dAn@N^DN_&Ure_@FK_1gP9&>s4jH1SR3ZP$A(Hik^cFmXO?0vT}t!xmsQP_xRn zI_rcI7_a)kh{U}CeVu>fPfgjb?0QgV3Q&nPNNja@GfLekkc zm^kU~>Ab&f{sYaD=vd;q1mfki7g$3>)tOiuO5G$_@u*M;1Iu=S)-G7fd7Rw0)O;co z-q-C@K3p`gtXOUb5EV3HtIDeTB5u`Pb7w%}fBI1C&4qYBSF^@!!B9{j!uNJq<=|>V zZ8YC7!|f{H{)~Sxq97fuDV-H{`C@KSdWWgCV!RNZhj@;{qd9I!f?SF;04TqdqaI2o z+>%!sF3?{lawfO9F2QFVt-Tpxv>I$~tHp3{&RmgbRa zM+qlLDc5&I1k<`v8yc-}+Van?N=!~~BAle2%ShZloC+-)aFx%SZApV-3s0j!E;NtS zT1rY2OH_Y+>2MP{PQ(!L$49bkf$OZP&4V<&X(92%X%ixI?Pm4zCM9_Hl`^}M^SM+* z^Dm{2imw}1A-X5}Mp7tJDdS)UQmuAB5Pd=Az2oUguXy{Izi<3_^yc)~{_y?{te?oT z+&lc#T_o!rc31PrCrTFkzik{r-rc2#`=imuQQLp4C5*efySv`&AHwR_dr>^1^cbCA zT)*6mOa8f?Tn+bTs}!vQn9qS!UM)TfrkiAs_ma>(@cw%B%i;5Xo_*gv7MR0WR=j2< z@5y9}H$i)kR!-&H$*|JI0NR%)Y=RKKJ!g_reCIJ-{(cpx%3%}~eW@CXq3c3`EH6ES z%&~tI)7QtY=c~G=8J1;CrdT(p*w8e`P_QpfAwJC}1{)^UVj5Z!lN+nhK2p4f&gE)c z@5$9yJ|<=0l@!m3DkfO+*K<-v3Z(NOSPd_3;=B6PY7j+sv+qqcQ*{vRW~@7=>P}S6 zbxcRm%qcS5iQfQGmfSQ`6GI64|3DHcj!1ueup7n4Q`HdGd@j8`Hi(&B6Bp=&cqhWv zfQf|l!`n{6UWCDdRpU|;bmJt#w3H@AU%w=hx0Zm)P8dYq7W74?ruv5Ks*Yy?Jv~EJ z#;&7`C$8yC40E!HzRE`O=Hw)12$Kb-hBlm0~&8hM}R61`ED>Q&A}6D7=4X zXCi`V4nRl+X0Uk)Hw;!I%Tg@QK>83n*cy)YF&a*wVTg3n08)f3<#((@?InmtO{=Ts z=^O5KCi;uZk1ZbK^u#_sx%h#^!=%c2`H{Lk^7tN+*q50bo^rF2NFwJp4h{ePX!vil z&*O({@AKrLFF(NvZRbM3Eo8U9B?Nz^KDFx5kgiua=^s-2{@7%iEWzK=)h{Ek%AeJN z_V638)%G8o{ZCgXc*b&{wEv>{y0o^|2#BFQ42%EA5Bvvo8_TbQ-6In{JzViW8c z#=h%fP4^7!Ysi@Rnp>~uSInBG=^GMUQ!sj4n2M70RE9^IGE7%7gq2H#!eMqhdi&w^ z>+uArqpRbQrVkZks442Wg(-hiq?#5s#-1`ZEfqVau7XLk9LsShNSi3TF-2JRNleic zDP4gNN|#^1gp#K3DaKw6@h;{#9!9F7JFX5MaO|pM-8In^xt=!}PbOBAza?{2Ypixv zRH`U7wp5f>nIB2+w|A96NF#?8)wo`y2!}EgzW2=8yv9mTQtWc5u8ifcn2mgY%t zJI+Kg6y%tek5$jvz{Ihs7@bV~8E{S)Xa)Zw1o_)0KDOa2@{yh;Nt^T~{4EYPR$Q(C zp%yEqK%o#aa-R2Xh}M7G)IN*X$yAJ(gk@hlSzIONEu#4!D2Cx7PmnZK}Z>sBbiYoDdwJ{60#do zj~w06_O<%!jW&VN^a;p@Gqundxt3=+W5-vp=TBVMusqHDBY0-WX~5p&*>@<3fQz)k zDSssVBa!=Q#UgoO2MB2ccMWccl!Qpdix$2hf+1&_u_w9fBmpG~?{_m1Tg!$h z6}beGUDTzbQ(!uT=IC|XYxGXjQWczCWrZF#RO_PBB`&H@B$uA}4i|qgrH!#Htz|%I zW(28kB|&Lr$}Q9n0n}u^LsHqo8>O`dts*^i`p%4f^`|qoVFM`4Z_ij$wT%D2oSi+@ zymuD^c4F2Rc6tZ?{BA3|lbu8nJpTOl@`S`hDg?jzn|Qr=@viDS`A-qp(=ro4NmBKF zUD<}Psy8)N-85A+@f=)i`cnt{#u)2p>^hFWDeTqsu~O?T1)ddeeszdyvYD2|hvGF%3 z+STQW6iAmbB;@LZNSEgM4kLfVuXqzNntjhL-RRo;KDTw`Ij`95R03kqZ*Ul{m+5ek z#5r)a0KH=t0&1j#8X20Vyn2cn{hY+$vyxy=9MV^n@m47UmYJ}i%eQOvP#fErnjhsL_mG|hr48D`z`m8$fbkq9trnAf`btk)zO=2KYPpoz^*Zmu`c zA%C9Tb&$JAGeD^+CzIXetWMHhG!tnGt9|&ipPqk z`kLcw6GQR*W|>2f3|;H?xCJ7=TP`Nua#7ot;rb38f7sZ#W6C>v^yWYbPrT>APG40H z8j_o-cIfr^Y;oqGI4t;CI4S`0&9EfU*a?Hbg!N^f&4wwK7KXQ!8^M{n%oqsyb-;lBOxf7#U1<_ zxF*SdL@;3>QE?&1o-i?+MIb++>>{Z(?Z=~cXXAzDH_Abr}G ze?DD-uL`mNh2(5HmSmX`YwkV_J{y@f`}s z_9{2K^G15lkR9(1qI}WjQATog4)7$$xvDp}xW`F3F8zjP@!2i=6{eOO-eSM42Lzkj zt=#S|)@0alNR^8bX>scfh?& zw{TT0H{mTi?NG7fJLgc9)~4dYXj6i6UoZMgJKdHPlT+R)>iu)g28@) zgq-c@RhS7v8K(W}h-iZ?_mbR$818MT?!x zM12PBDzo6W-j?LoGR?6w#um0L&ow8i;(EH{BHgrH&2UWo6jM`uB_82Be-N?zc%2o| z&hD0UH_CJ+-pv}p78G)I?CMB2EZy{7r1(>;YKr9;hN`M#-P3oVkoh=;sFM!q?{;iW zrFjzLC>qW~?CnOVj)_%T{gizDM-)k|gW3ejuuMGF5Vm~N@Q^v3>aIUkFxIAcY$}r- z$fdTED-JzQu16?D^<60Ce4Z%}wUyvt%pBxcY*jt(R_|TJ8f9!`}cw9B8#ZiN5 zuv@=o+X$nWxBT5<6pKH;Srk=(6J|b_&I-FH^&p+ulOA;g{ThOghG50Ql{!PEl)#2m z6QE|O#IEf;B~)TW7jL1qmLtkdbuN?t7|f=XS~E} zmw*J9wj;1IS}dW_f6likgC-O<;B9sJN)U?H+gGK8zAIc!tAutq7~$s|N^Ufx;*E)O z_eoK18q(2cwvPw$Kv?x4@3D)e?N<=l=mTN%JgVidBPxkE`II#yVh6xRC3w#dB5)od zXA}>Wi&|(of7VPpwknx3?3k2yRj~8kjv{(I&*8J*-lqj8td$AV(;quCbFm0m`BMZ)?}m+$Ic!@BI~S4$jjC ziHBh(jxU|eWHO!Uw8tis;UR1SHZHPr>JQ7kf2?}&kgy2g_=bsCq}B52+tscj!^Qvw zzKHCjO^0^%d3MU=9);3dOp_TnWd$E!W=&wy%;|0pJ{?_P*#4$_8* zz#_Ip_7K)l8P2JAhagaRwl69R(aXACR}NktB4%|Cf9uhJS#??ho?7!9)(#|8kEu{Y zHEY8@V%4%ODfp(*@f&52E>$+iKXTauyW=~J65@-+SEl>FILQc#k_J4kdwJaz)+3jQ?(%GnHF`Q(w%w-aZ4#o* zWJSiDf8{Yw&;(~GUBa_Gq0D|W0aF0sOrP1qG8RAi0w$^U|0`kSE8dK1VWUFWzxP5~ zpI{0MBL{f~Vf2=5nI5#G06K>0Stg7SYD*ifEUEN=VFy&oYEOs(?{m%15-pG4P`=AH zTQUSP{#~3-5|5C!Nt9u{Uvq`nwrRS9G=7v=e_78zB@yh@xkoBubk9U|DEFRLG?7J+ zC-t)2K46V#rEhh79lf9A@j8un^r&~D5&o*_P^CXB_RlydwJikFCS8-DsX5tkD^AOc z)Uc<>$HPZJk+`8$l60Y%wAfxcj1r3w#4x7tcX)J}uRDrlj3YQm*{jl_YGldUu5Jw5 zf1+wWAzQMPT}oLW-L;~X-~fWwWTmFDnWr%}kuEFqYHnBHjzIb?f%IFAT#IQs6+xFR zv$mUGbg5}!OAVsRns&0$#+t^KGHvm+n39Ew)sH`fbIFo=TY~_Hg;YAmIakg2&wN~p z2d3^y;8zru0w(}4FhYF>T+0XyKXO9Le?*b(L(7@@!;-3P9UjY z|B3>7L?IsIJ-eQ7C>lrJa$Nmw{s=4p%z9Q_!?K1&Hc$IcCOQeXthZ7J>v$dKW)%*l z`(?b*z*N^TJ@7GDl*4PVY)MvqHgI*j%7yrRMioH-ZX}HB(bP4LzaF7HalqzYqmtQ8 z+UDx6NTI5er9R4)66B0t*-42lqx*gCv6=r)RYJpkTl^4;XPS$+ruI_GEWQ7S3j_~` z3j`3i3j`5;DGKjbWxitz001*2m(fWI8<(vu5h#DnS^sm|Mi&3we}&qND>U(fgaioY zh=(|&c4Oz9;KpqU)vUBDP%R|7E7@@q{`Y&kl0X9N*lm1w3t~;yDPBy1 zXxdZK#7Fj?&*Hh_IDVR>j5>}I%oj0Blr#!}jyhqGP=-Ukx0eqvx|hwVd+~f8N5zDb z$d7-ApAv?>BxX5-~bOk)|2ZmABEs>(-{BWm^^>i4#j11tsQFOf?m@o;l+?(avcyF^TRJ; za819!y&r`0FLV)bP@u*&AUXe6Kwb>a(Z`$TnwrUUF&tftK%Vhuc`rWC6ftvktEMbe zdrBrRhzqjTb3sAKhFrA)OpSN#Uyfc~4Bi@-hM^v;=g&z?%=ca0vRZD}#@I5u7Hxm& zmTMU%>Dsz!5W_D|2|#@g3A_X*t_916h+uZldXkEM5>wUr!rB~3f+VDp#mgfl_UrY! za{2y9LCX4mWDMJz(+K4r3l>QbN0KpV^;%ws65F?QqvhFFw@E#}ZMkjing;CwJ$fiw-S`a!0F}uX*m}QH`QF!ajapKJ&nO1i4 zDDhJ+q|Y*ll>OJU?z^L3hpnbj^`LLMUY^6mdcS;VzG)lpT2facgJn;D{>g5?es#R* z$KObb+-M@*Wm5b$IvZTtuaAG9XxI6Ad01ylUc9?})A?m+JYtKJJ^4?luh6WQH{tbPH10! zmGcIv73_I1M@ix{jS*K^X{zLr0Y96smvzM%-u0;f{~z zL3mqedxL1Ht!@Lq*nWLVlbR~vgsLh1J|r_y!PQ=6Cc^=z8%4gR?sJ9Xfb^7ot}6RV zZA&7l*OQ_1c5pU4C>9*6bGX1$s!p`EKvEmh6gg3*p4_OCg56eylKOs#^}b@k1&c}Q zLBy%b^E-^VT274YFlm1#if}hJ&(iPq{29drtl0mo4$@>6v*52HQOm6^D-+g=p`Sdu zNH%n@V6M=rHo&3*4 z9-Q8xWH~Em&0xDVtxl*|qo$Q2aGbl?WNZH4bTjd(x>`kaSet)-T2L>cq%ZP?w(Z&_ zFB1hDHY=qa=kD0yd#H@Ip6TWeJ;L5y{iiza;IyT zlP;niZ2P|)&5(xzWrN*1;Lb_x#bIBSvP9rz*AzzOT|oNkEaa+I%7Q|C4(NU*cK%=5 zEl*vk39;YL%d&qG;K;$_lz9}qKa(g+D8*wAD~~7Imai7$pjpfkeiI}!$Unwo~@X)EgCVrHr!OrO`LcTo7v8>0`w^1Dm@xvwMHivT8?>hD6Hhm#wvau2yTr z>UmXBS(H47Y5|Zo+r^r6y&R)(ZjE+g>fL#Eg_q_3z38|keHcemr#z}D;FxQI?P9=Z z!rv=X?#9uT<8H0A?urI74EJzI`-ZOTo1F4!5{$B|jq#PU39A;@CD^@&HDGH%0C}d# zaSeD{DN26|t*+9Ngi7$BCg?WpB1tM(X_cclkMF~|O9`CdOQ-qAp5NuUy+H+|;?T`l z)brvffyC7t|K6KC?~OkajQq)Gdx?rm>uZ-rbJ-hX^w;Eb6CMuGZ*Xy7F7G|dAD@nt zIgSFK@+1djfeS7z@THP+3DYiMxHQDI(a1?RP*^74K^cjipP)CxUxis|SI36$8-{7NtftxR+Ac)1*KKyG z=h^MHx~ww06Sm6%!BJJkXpx_50>OO0&%YOS8Zv=Lf28rtF!ruwzt6`Zr&?~4eZKx% z?g=x9GEs=1scnbR_Z9UNYW)XcWc7YJN%Ma`7i}~7EdintoM3e_Ue$4NUG^SvzjhmW zm&Hp7*4>$A3Ln_fC4A4Kqbz*>X}>VbHzLz8It4d*k>?1J8jyG#;%HhtTxz08QM3!Q zW}!F$Yu`Lo-IJCc+f6CUBqS~p4K-=or>=!)x8ru80URqi0*_44O%R3woZ* z(p?K*s%%n-2MP3+oc!;ix-zCm;P_(sSBa<+_( z14RVG!8(I80MisRZ&u5*ND*||{Q8u|>4Mj^&D<{_VQ-(K9NFevjCd>Y{I`>hc$C~O=nLSK!vuesZ^Ro4 z_%aG-pf4Z`I5E?Zb|_;+<1#Uc+20M$(U-D6X?dO+|K2!!_QT}9HyMxZ$4y1+8qM;? zHR5^`QQg|{E(1cg*)edZsq4hj^_GbZTkle$6VmEf{v+RI43KelVZVBJIp`Xf##XQV z|D)&r51QgxfAuN|0|26bU>1L)d7MTG4k8r$0Cp%&B7mh&mzJcHDX&Q3l`G80`Kv7&!+LtP#uRN=9L z1vU*`>|H4VS0YM@?E45}fX^j{cWvU@6iwFxlM8qbPb5liz-i~lmoKt2&mjavLfJTF z!6;0plfEBdbi+KvF_Z~{Z&Bv3aAJ$20RO;TbL7qF9QUt{-i)&N!CIZVE2ZAQ#^a7* zum|V$;Pmw6;OLEWdNO~y5NQ|k3qbL#ccjX0nCcg;Pv>+{nsGKbmlH4(M6N*as+Zk( zq5PGP=AXpxf~x`kQq>@XOq?7YKRb*m#FfAzM-9fvv9l-QfECYxRX%|052f+F0Fz#I(F?E0@kWPD(ApjYIrHPUnvZ zc!Ae4L91nW?S%Kd5X%#UF!@BZ(@I`^CvlNYfWEZGHu)->h{Ta6l&#li>tk_1%CDyW zmq7MEP)h>@6abe{TN)O(zcdlvUJCWh;#-fb|^e|~uN@~7zEZ(boxXqq-TzngYD?Xy&>mgi@NF*!fO&+YB)XQ@!Me`IQ{(czaeZQZ-aWNGgCBV>6%@uz z#-XZnb`PQ_)}EW5;A^)NP0yi-fnUv*s>nZg@6)Szc5;3dH%-RppF5Z_-Db5qv*vhp z++hdEbfnq8{+jW>U7C8x^i;n-f0?3*j(W?zyLkKVEn4mJ(*QpvCESwMm@-*H!G;a3 z5xI6ow9cStPqgH0?FeJAi-AjenL%?a4KwD{4jiuY&^LA43_Lvy;#hYRYC1s8#PU+@ zbi<(FZp*+4O~(pSN&`RkOzu-BwGp0LV6)VWz44I@Ln-1}qVV9SE&FI0e{YFBQ-$}-%l3`HiYa59>JFohZgW4@W7l=`*kr(IY$Xo$4msbq zISm~zp(*F4i}p%P>QUyz)J|;QewOo}DZ~Gt^Bs?dE;S!_KJ_qX!UvpBspro^Z_oQ3 zPJYbl&iLk9>7Ag6Q6!R9qF{=!8x?|xV24dItFqyCHY5HL%C!ND9=c;WR)a5 z6ObrUGQwCXbGF!Hf4*#rxI|wfZJ`M`dq1>F3}S#%E-NKB9cI(IzL&qu+jeq&a@T(u zPj=T|cBR;lWY@H)`$%G42=Ytzp(N$D6>dcKVF3%c!FQekxyjkb)&d;XM!<1pWUHRY z0_z<6sAlA!b&Kp`kz|rAD&Rx`f)Kf^fK&xKtHj`yxRxxDf9*#cnLyw+PDj7}`rEH4 z0xMf0$SYZ@Doqi5ibTY1_91UK02h#E%U$6)+#wjfOi3U}49eL^^Dl=|5sF&f6M0`& zwL~G?aj3|o#IcV+ok<+*B$-G6vhLH13_TsU)17gzc&=AsVcb_Z6ULzP+`zL9NCR7k zJAE|cOHk_Oe^1T%)U`dv5>uxk z3c2sAwjo8lx-DB~xcyEv@Yvu2Wg_ltg*jW;O+cg)e}J@4F}*8+dI<~);7^@rSeomW zZn?f^TZU_42XP%+Ph8W{orHrPFc#>LcwPzt_X0MayR@pz?;}i{WQke1CHNqxS*N#n{d(1(9Gp>gwggOmU@ZC7zG&R3oxWP8((SptC3jxfmy& z>v--Af2S2M^aI;B4-SNO;skz3E#0*2Sa(8}prAJBR^oC$#9@e<=~oIWx6Rn!n-b5o zlQ6M#&!k*;Vi&zfeOLFKltSoOJn^~l2Qcn$m22Leqm1*;MU+{1`A8GIbeO2Qou+!2 za#SD3KRW~uN73ZF?V9#o-Nbp8AVsK~Qq705e~Fjg=Zo6k={k{~anYXgwb+z4^_4J~QPg=|XX*<9GS(lLLgRIKQ zc8&Snw37~|UdjzD+7e6H-0BnUTWO?)nlsLD47mYABj0xNY*)T^WqLF$p^P9hEdBFN zf3Qn!y`WuRn%4uY>mvh(#j-Pj>_C@V$qLXmVA;fL{F>Tq0cx`9Mk77{|Z)SDc1K{BUgUZf2QPQ!)e33pJwC`9IHT!I##RA?HE}LaoRh2 zH3Ia@7!les#~UC?nPU0;?`_O)Y~Qnxl~4oe)%VC8L*H+Oy1d>JmDKI5I?-xW7eo{@ z39Trt=HGPZhNW+`>9%{(?`5SncB^;x+b5|?m6Z(~Z3o66(2UhMCG*Lry_2hIf6*&g zi%M0Pw>fKbqLpUSvc0UY(Fa{FobD62%{cn{Z2Z&VWMwa40&`m641YJ-JJ>!#GjQaY z^ux}ybwU>K58$s%RhIshkdRrO37*NTA#YAVna?J}hfkdjfQ&AWGJ?~9ib z>yKe+IXipI?96<#!^rTW2#>&?FF(9-*Cgk>soJIe%Ow@$4^mHR8`dSA3Ei7 zR!`7Pl#&8Nq@xLRgohpO!DS@wHLcgS3jT>#`xQ#!RZQZ)C?NMUqb1q~DYOHB1Bm)m zafW)Hcc%2gg?1S|MagChc@~EJ-Y1*K?&jeE&r%1^alEEAAD7WKjlw{!Vl#RB=FQt* z7r)(2Z{J&?$_C+&q>6i%-woU@2)B%1a-&eyOSX5Y_GadNGB1mAP5diQ5?JE}TKtvb zrMeP}B7e;_sA95Zc>&im>Wo`|QLk*fS!a$!ZMS(VSgCEx(h7TYw>M)f!+tBzeSuH7 zNs=fe#R0Dbm-B}FT1}6Gj|~FKwhV7|;c-eYbA#duny$9HgW6~n9H3wy70L)|WwGK} zAzl`!vb9Y&VH7P5I#{^`5FrIUAZAeS3u@c4GZ&E z)R_sO&Q}gND(5E0poNcSN*j17PTPiuQ5S2^V=bBSqv=Etp_HZbt5{gCbB z9Vq*zMzxifji7#1mqyMW@o3see!&iFLsH23MD~H$rw;TIwv-ZxpCf(Qp`)I*~bb)d-eSX#o?t;s^)UfAvW5pOhN%L`#%=E$js zo@I#KWl^fTUbbc8_P=PY(p;et?pbaN_>}o>B@biAE(53TPjJtF$~r10#tEib8osn^ zmgbf!EhL&#yp?~twDjl+tv%`v1~&LA1EU-BIhPCQ z*BO{!e_S8Kr(XYmlK8^4M&kEI!=69L4{Q9qNtZF|qVNedXPA1e1v+{h97cP#q1@6A z>Wt>H{%G(4k=#e=W0xY3wMOF){lP`S4&$^@^ED8!Gm;|$MUUxWy*=QgxGS`Et>Fy3 z(eS)ymT6L|jdJ>Umx<%x2$A6zws`=>z9>zvKR0LsS{IamK8YTw*ORHH!;Sc_4&}$R zhT6zhBt#t5CgSx6YAe3kZLVB$K(~@g)Y@EfiPUE1!aW0^%v1I|wTB$c) zjz{tijmSCw+CUXazp!N+nwiN;;_Ezv3B!^EVds=Yt3+7I!M_fO=tF>QI_DgGK&OO7 zifZX2DoBcdF+}S$L(NmH79a*esfoOs4{b5pvoP3VUyfXZY&qcsaxTwkQ0qA3wlcV& z*U;}0OSH>gq=Nr>bpqAfi%d8wrj*L@rku_Nw-YjWH48Qu4tU-=J90Cmj>Ry%^!&ll zs+FYR2PAUDIv*qG1{vLyDM4Pop>~QEm119S}G0?P?_h zQfqbjdu_6D6RuA+SQkuInDRz?&dL{xYD4S@c@jV#h0?D^L+13Gi+ZX)$ZozCr6L@U z;}yPML7YNDxV+AY0d=l-C@3#ac-6wrRgnk^cf7LrIZD?`2K&D6oonSC%Vo`e#*nn1 zUcZBXGMO2?n&4Y_N5KKzY$AvnO_Ke68(r@o;XNpSG`w>t2)ORd;$4JhlUwBV%qo8- zrk6(Jvlp*Qx+s%r)8u>xJdL;3vs2WQuQc!LcmS<9(MmL32D_lTeP9T!+(Q7*mE!MI zUR5hW2A1li9synjd>7zV>@{&%w(a-D=~)PWY*q6xa(G(E;&;>81X{@Fk=g=V7{4!W zr?b1)L>@_YXcJ_KEmo1FW+A2IUyQ*V?F3K3dWSv+pFV|~G^!|@Li~zJ6v~5tVVL=| z>Gkd8$Hgzx_hfRyyb&*Mrnifm>mOhadmhau$20c*HU81n=E74X4x3mD8E|GY7p<3n z+YJ=QQex3$550In_lex`6#Rn=HO9VGUU)?TxHj8Nd7K$G9&PLzrh&G()8GZ_NB&mA z{fwGw9K;jln#khF&PnVyr=WpLXyv4uvc@JEb3}oTOot6~F+l%ofPe%THkMge6@d5s z>wRvVv3pOk>$c~e4UpsElZP8sAVHRYbS`1RHk#YldjUEqf=3+Kfz}(bi5}tv-e7mX z*=Qp-@DY1azQNB&YXy#U061`srVPV5#8I-ez%6(ZZZ*eX={b?AmJ=vd#s^rU#r4Z8 zDgxDk7P_bF!#Pg8Pw7PHn>A;SsT+1LbZy%0GFj8mQVpsKMdX50AOpQx$wL+mhNi_PxJC zRjG_2jlt$>sAZU*G?QefbJ>R3+AW&6ge`*-V|ygIJDGGoXuo5BY>y;^ZEiixQr%!n z=caS_@iXMbK8=*>k?RJjNEvZmMAu2o1WF?caKsI%APk56;v(B%fWl6z+Pkau`$1_UfzF=QWg#2|4{=}2bIx> zzb(=qISU?{;E#+`_+^j$fy%wX?Big5IjD{#nE0BIAMdG8;zykNG}g$}|8ZuSeQXAI z=KNc$`~C6GzpNTs$XDa{?$7`Ja5b5Ll)r!}NWT8^{crE4a6Gv+GhV(n<`;T%e0%%; zR<3?i_wr+0y&8YtUQOS;du2C`0WzjBN?0t22ZmYE&}Sq9tNVl@u_6dB35o+`H*0W9 zIZ`qsxQL_hE5i4fhIkPYv>@Vv0H%YI`nryA5WE=kIN~K14|tD9005O2G zpKsp3{Pk%*`$wS>nmkbP2Vo(cqD1y){OamPDGgMk@jV`HEy*HjeI+6nr;a{^KthrSA(t4W3o&GY4Z-i)$9xhXcS(dR;?E?ae-Pj0 z%&Tw`1~q>KVO`TKTSvKBKRf~VJe3kEa8a$p_NvYk2 zes$N6AEGeEzWWJ|UfBYvv&*1XA)Q6E3~2lrul$ChF~VLrY&_@k?}dS$qY6)E_PhoH z&YJUTtwbz8l5w4}gj|ZAb1jcV-<}nYjRg*eDrSGH2<-Fi`<56^#Y&zRuQ?n-A=g2f z6+_dh0c=$-NJtG>I6V!D6b2<3L2c-Ah>VeeE{jlGAVwh9M-nc#q%`E3_!PT72%TAR zk=Br2lzD4&U9w`1bB--&Sg-|+1X(gHC`1MRN?60LTaA=tCP`ooe(RE$vd&SV%9h$L z&vJj@x`z`ACIM%yRI^l>X)`~E*7_ohz0XEfWtDtymaWfa$m-MTOgq@&&ACit!xGHw z0G)XWuOvs#Yd9>XmlB2wB*}we3Zb(E=VXKnMm@+0l|4`;9A6GI0c#L{X#~)O54EJF zqEap4D-Juwc%Op-p};Zq2M`lFm?YgdWA}gE)!T7xqnTzuhB z3fTrSTj&xkL7r#|-gwM6WPK-f2up9J1=oxkyv_EwG2dB%1uJ(9K}ARu0lhmj)QXWq_=J0mCNh8uaN3UxdxiAjfhIxsQXGF$ zl1(FJ+t=`AsKiyKS=uhh3C0z8Ez^3bJ*yPC6_g`Z>3R`i+3!L3@~xaGs1KEjuEAF{ zPq^O+a0BeNftjhBc@FSh)kC!>Lv{CnZ{$WX$*P50l0fi~NT^)IpV)`(*}RxVU^5`l z%Xm_y+itWnGj9F?u*O^UJ-L?OuhoC`>uY14>rdAWrHgrS5%D->-oayhfZP~TE=rl)sGqiv6(3h<$ z#_Q?ygZcV;qQl_?$PIw(A9MGpItT4HPg|Hgn-rU;gLI!3`LH~>qIextP9i@`jah5vdOK^dFn?NIkj2{f?mBz~VVn&9odb@5JwUZ1Ax&WD| zKRnW79aaztPpjy-$(~fvx|M%AXX>bES!12FWg<{yBFHNDmdU=KRFRA@h_82>DHA6Q3tgWtM8*w%f_ zY^$M|H+U33_#`qH1jF+QUJ4WQuc1jJlck)?Dai=rZaT!qot}Shb{4&^*>3gwrh^wP zvv2i#fz`7~*XtCgAZx!Ph468A(OI;x*AH;J*R^rK-E6gNj|5FC@D{BiigXCqhsP;E zJQVuInKCHMEO)8wzthtu>d9Gl%8IyUx2&FJ?}BYIi!sr9LR&qdE6|gyy0@90_EGbM zVz+wDo(&>*in)J4eb)-7eFj++O%g)A6@d&`nc#a;g=Z}x;^+(ui#Rct1hdS44%ZdxW^VLyH_)5td=*F9k0{!EZgZ@-HzRNItzcVdzQV=l%Z&ES*!kxz3tt8 zD7W|DmD13^eg&n~&_roX&Q8%Z)7o`eYrBNXWk)J#;J`ClyWMIox|ZL;EvE;^uscnk zcuwE*JKZN7sMYSbx|UUNpxV9%9dHg^CA4#>1lxczqsl(^8!EXqIHnAnBK<@J_f~Kr z1dXuir4fJpO5cGilM|o8&pPFTFo0o@#mQQEOUqkWy`Ez>dx2xN`#3QBO{Z--UJpB7 z*S9-?cb@6bBUm*3I%z#^`i>3eKOX8*8v``W)PYQtDFkg5BCpUyDFnR*h5YwF4B)j! zPMWdZZudG?tMBZYQNd>8$6d8NgHjKV`5K!fq=Px)3FJ=%kOC2FG z?f$A|X)8kvcC74(T>=*YPdVcbb;x^?Od!56-mxE*rJ!Q!a&bPXZlJ z_kOD9p3(-re)pK^ZwON7eIl9zlIq+=lU;u!!jGR=EvT$KqXQSi6Gqn08mQ<1QY-O00;me2qBkA zcp4A4APEz)ISNn`H3EMR003Aum$3u|8<+P&6D$RFE~c1>mncIMKLHcBXhRdP0e|O) zd9ZM&QA|huR=?FT?-K!{{mM-QOSfhd08r2{0CWjkEG84assX=u-$3Q=eW!cZc52|F z$LxyH^`}9WOXTWPEpcTZK+N3N_gyb+VJ-WT+X}#K&J@TnjCf}ABy=?cmv$L@^95&c zyq|6@IWniwD?gfEQupMFx->Mc;(wlmSYzTb3VtkdVv1gO%Bfowt9iQcm?R0l$%sP# z#vm)=`DEf#bT^7ZbraJl0YmaA8_82FIOTkUa*{z1$<9{&wKj5~WWqh}Q*?TtZY#sE zgVe>X_s2ORT#*bNchdIDLEgwsAwkZm-+hw)Tw$ zs48g4U+Lt-=_v{YF&F^}y&0$*TZ?HLh1?4hx={;}9b$`7u7Yc$Ae<&dMJuyZWoG(* zZZ*9UgBZR_CMCvAT>&X-a(@jZ1crG`f>X61hbJrwoiGU|G=^nb;?pRjkg&S`(WS>A zfvX{>X3FH$@WbdS;GYF7lFiV#NesCLbNOv;?x8{usrt7oP9N=zo3;b0R&SK57-c z61#-da)w^tSrI=0&s0jwzz!rg;OWroBA-Q_*LTq!<_ko+*2yIqQ%K1}qZlbn5gO`) zuu{2wsgk8R z76O!ds-Mr16$eVtDt~PTF!hwr-|AHZR18_|kX8#HUcNa#bbfjN2F^4#7o0EI!G62l zIM~0sx;k%J2W-X9!QZs6-17q%Z9O~KvJS317nJqb9W@T#eJ@|&P+y$8&#f(hIG>Q1 zdsCk(2sI_Mc<1!!IGQGV{ zr@!6b!lYwFK}hbFFvx3ulC9|W`dcL75rnpwkAy8~q1z1HZRDcgr+Z}E9nN+JJKMef zly-(YLpq&JI+VJ*yRN%V z2#40VqLU@y(sF?ynp~hNQ8+#lPZvdp7Mq|#-+MC%8Wh6#^z#Ce1Z%X3N&@&^JY{De zH^2Wvx)D_YW3aE=26!CU zg-p~mRtkk&W&yB7C!39H(MqXo6<9#!I|I$aR7cQtqpQ%5i0fQ{M=4759;126G#h~z z=|V?{M>mxy;mbr0qvRVI<4ujkIE>y$;C z<7}!NbAPhMy5D;T^@!@2RQw-Kzj^sL=lzjzfN>P@bN1}~41P7vHqXtmTMI`1h|{52rYx!EJSfV?N6z8V$!qL?z_fw$qQLp`Z^+&_ zNaoU8nRPze1RJ`p=DPR;#8Wvx7~~O}=#aH$jaCnz zh;Y58B7RUWQWWB{-puOCttYS(>`gvDIG=Db5j{uMer0|#2Ot4r9Xza_tVxn%C>nru z{;1-vI~WYMcZQv{HQf6uRsrBrHjTZdD%r5`+;{h8?rb*e?#{3^x!WJ?47+6QXOZhXc4))-m4Et_{>_SokOZIw;(Af8P^`dt(7NcC27J?XMe0KhP?g4M!&lA%;u>4G@|+qms})1 zA`l#$nU&M1lb0fc%(>_ko$-t>e?;_U9 zMSr=X*MGKwd(qYc^3v||$)=tdKJqA(CZ=CZ2qy-f4nGRQZ!7AvZ){JQ#&bhwA@|=N zbuQ^m!)j{tR?SxzQp0P{y-q>oTV^BJC(v`?yw#zB*Y{M+rwrn$>w)Y zZx;D3D%|J^Vir>C1geCuMaq^G#N@RPJEJ~-_Ahz zSoam}gYU&L*97fbynrc4M#s4g}p+;h9qqK=b!&F-bmsG5`Q;< zxFLxf(c;T*Me4QbRhnB39-f7wIKrC+ex}t~GlmF6W|xq}Qf`0CB}xqsE9}3w z0}>J!C`6%m8R6?iuhShq?sDXJsa=W%iu9=8TArXg#r%z-S$t(-qP{Hn+JDLd($=y2(oav>YeMunun)Tfj&M=eZ~9;=c9s|gu3 z#fR6BkwFsIFh3k09=(12=J*{3MDcR;?)c>G;Zga@1%J{W4)BuaR4LUn(+jZP!ltE2 z+{V?+?VIwcyrW&0O=TTf?NX32Uk#}15!|biw3LAuHO1$!#cft(Dj-WZ@xG&s5hMYn zUjjbGRQvRQY8U+S1St@_?ssDeXBDA`818M#jhe=Ws zw@FeIvil0=zq?0p9{>Q|gO^b)6dac!P8B47#5{j{+cwVs=TqoiZo)TUE1l9CEC^^OPVAn&29Pa2auFRN|a;w+P!|ZG^PL$1VI1DTuM7!H12R zcMn!HkL%)4XhktGf0qa2B$B?bB9Foq2R(Pn3BVWPlHa3Zyo)m7qpae-5hSiZSP zmL8*&EpHS>0q1Jw1wcHAOh54XgsxwI7+`ZctH?s3i(_sa?C-VOZ0Pru1$*TZzJ6G^ zOeTpQ%{fWf7uemIOB^$Cmn2TCWyps^$4cn>%->fedgP<@Oq>Tv`AkhNf;j;Hk-!LA^i7$@bK{G zJos~2`_QNzC6wTYMslz3FapENaf-??0nrNG27{!46z=BwbaYjMT*V6#HIn4se`xq5 z;jm{H@5blm+l#CB$e9Qa%;c1tUNCok3Fq?SdQ!v*K@z9{6^O@YG0sPmt7G&1@c49mPFKSSbBQ=)rkM*kULG+C z>XZ=^Z&rsh23+_t;gY9HHPie6PEzdpu-(2*j1;J@Ij)@up!kUh7y~~WqQr5>I8Fof z$k6GiUK8h_Lj_Wn8PV`!>ULsFEg4FNng~_oGne)scSE(jnQ7dWY$Iy z(t=nHiDHlmd&F4aqk3KYr!&xxZiz+cJ=R?y};9dpA2p$Z(r~0@@n;C&n15HdVB)3sMK<`%ORg~wmAQ4uF?e^ zrrZ}MOXUh?)=E|gXY^XFy4GvAYRcKtEd#+Z=A7Wc2OH>^xHMTWKqs2w_Gbow?Ncq^ zCjXoBHvmPTv!}G1d)@;2lR^Jz+AJykWO2Q2FF@E2ji?f!`T>4KeJrV;0L96_)*Xi_S8>Qof$PYk(fUK35 z4A{i7!>McYC|HF99YHHu<}TVums-yr7G#lIvOmf!U6C1oiAV(JI-^qtx`G2SiYk&w1XSEDt1GlZ#U@@Pe za2{MjgVY3S1*dzB(@_rL(`f!yj zK=9~Lz_Z4GD{wP$JX?9*qYjZ~g$u1~x?U?!#El`7CH^e#j^jokn1TjY?}}mqk(-pB zET-FR+(a(`=SyMrit6z|rc^nZwO1Tof%Q~b^b?K^cO_=6GBB#?`m>rMYzMP;%+N6= z$~wG`Nzo9b(drsTDSyKBFSP3b{KVwq3eEs%paxTaXyIxKfrb`F!6z4oBBD*bz`g@L zLD%V#gm{mlztN|jW#4%&Y+tG=s6+YM3KkpnGQR{FIb2O(P1sFIID&tWsFo!O5;zOy zb6h=`p}NYBrJfQ@Pv&bC2ADfvYRcHJ3MiWfSP*us3$XC>ByT`=^w<)Lp}8c7^`0Cs zBGO=g?#PIAlt<9ujAEp=_cRkb$Nms#tb-ZIc|6XYI1UMs0|$l zJULir-;I~(@FN0uLU2)*uU)^t#xof%09(TtTB4B5EHer2h%ZGkI7(v}J!em|a`OZR zQKMJ|!zU<$QdeO6ujwKa)PTv`A*Z5L1f1`Gkue9`moci?=7=oGa!MkzGqb42f)J+Y zoy5Q{jL=t_aj=SP!mks!DOMuh8{iTyOPj%ipnUL%#tc!k8J;SRi<>>W)!8>xx{ulb z?t#}7tsp5z>sDu(fJX$?+O7N+_X)2U+I13yW6bHG#7i-jGy0cM*?(PdpQ?hOm{Ar^)V-@(l(?nj9VPGEI>>M#>^-d7{EaOEmF}2-9-ypVt@X zy0{X;B6u?;<~n>COwpfNO`bL5cP^HHXrkejiomU&&x5X5P6z!QIOCBariS>8{3f4g zG!E|rM=#`wXo^S&^Y*Ex+~h2KRH-w@kyUf8OK2 zajp61TDlO}K9cA|Lm>9ysPXdX!<6C=?vE_Z~ z`Q?&|HOd+xlkGrD9eG>K#j=i;vOB?q>TXt7}`&w!(3zYBN zFf*ipikJQp^(WCSztC=cx}}abjR48EAiOZ>NSf2AZKje_;@w$+8GuH%+nsK!zq`Ag zDk`w(;|+8%Tf>`l4PRLO_PWn#-$B2(*DtB4O8fTPd+W6C4Ty1gVFu6WUMlU)Rqrp+ ztqc-*Je^D~HJZiJdad4nAt+O#y#>}BU7?5t-D37zP_NXyeaG#0*>LHB?>(9jR@e*h z(GrK1GnLB>%)KI5&>~c?kFqOi8)+k|c}3DF=m=S^Obps%a7n+&_-9 z%nQ%vOUdRGY=BoI8?MGwpmM$`Ha+(qFEc3S{NCZI(1}xt{nqkg5j`eVkTeOE4x2yS zKjMJ!=|2QZbjgj?fkiNASPG#4*T{N`cakw-wu3aCa-DTmE$IEw1_V>S-= zJ~Vrh{P>tGK%w@=pDRmmcn8boq8gEZ!^9e9cNlsDRV6kQi8>i$AQo^9=~+3FQk%Z7%VC2Xi@#o2+R5#6| zmROW(u>>fD4>?JGDddGv#-bae<)+uh5|46xv6hY!UyO&O)(Bylso62Dq`cN*a+0jE>~=*#V=)!saas8o+ZxWAPPl8 zp$9Tu2TIfSu5WuQhnO>nz%c{(>?A%WOaVw#id&uS@5gmGu{$rJ;g|yHsd%PRjbpbi zjriEQ6h=W3*nv0Dsfzeu)9$4j2hUeYY1k~&mjW@<%!g@$l>eU7p?ctO&$+Jq%a9x> z?U%}bG16url5takcLf)?Rz{M`I@)^w#lzm*y``tV^ZepJxs6Z^*qUvlirMhv6 zM*KV}{5_?{QvjF)RUDJ2f<`}yr7apFpm2A8c6O*6SVH7)(zSs{h*w@>U_Fkz0V|G4 zBsFQ_Lmnkk2!=`B1U_Or49jFsdF++~6)!G30#CyA%1n4o9`_53upfh(f%v5S3Bl+H z?@xJNx4{O*ia85^()oq)O)kC6o-2^kpebK551K?6A;Xfx@j!W!KD@a)ldy!)NNU7? zG;$IwIJ$<|!FOcuUmY{#*a&h=AyUkzLW=xdWQB{L&UoXbB2{i)4&RN;v+?`!gqCw! zs%z`~caH}Znf$aMgl|^lV!uvY*W!iM+1)c2R-AR&%&f%nSZ_|nC3jtSR=Sxmx3HP; zO&7VKGf9ZW_6vob2|`|;I%hT8AXHp`hqJYz%4O>;!@=<-evIwPrIb?!1M|h;ABpo5 z+N(-9HZQ`m#N3){6%+RaCAbTasQ`xM@My0AhCG9v+2=OypZW!(+O@x%OREy}( zV*TehYZcFQThjMZYw#9b!A+qLy~%4Mv|Ll$u&hxwL?Xop@8mc*ZT)BT=HLH+p8m8| zF1Zqw!enXV3s9tF5d{z6kAu6qW`hp|8Dg;=a{%_j^_+-^E=NkDrXk%DVmfYv+Fd!d zWnNs4u7;EG#d%h3%Xj1&j_4aJ;>Drs(;;f;>G1j#!8-kRyFF`9yZaq7n^{h4x(5cQ z+u5}(GHV~S4(xunJ0p8mZ#K1mrnBANY~Se}w8^Yv&pNYqPv7R|lZ(Cj0#t@A--6Hx zO0t#+*EzT>6M1v~&~p^3`x1qxl!PFxHP<15Rj%}U?N&$Y2l1LPk)G$0Smk3Npi2HO zPl-W9j4eA-A_|p;ICFvlWlrE$r&%JL5+BCJLVdY09Kn>CDJD`yk_P>M9q@vP{En_{ zUn|Tb#5Nnw!;+qZ$|$NhA%!T@=F&@(NffG-*P%O|9Wp-4j)F{G%WqfCprCTuBf5hF z`m<;xFFA}90;tR+%jB|I6|D)pU0pm_t0<;@h*Fv~^OYul11CRmDAn|-p`u;XK%O~; zt9hJX_rXtG{bK$&K0lFvbd&bB`Ku-BXZFHSgW4{mT~L9H3m{(Px7b%N!QbkhyL1zJ zfnnU_;ZspPn0U(iArNCAlp6b00>%|>V20>cNWxTFqIE&cGj<0*g;Y$O8Xd-^)JK1Q zaWbO&Q_nU+(?@A;>FUL+W)0$G&*_5_GU}c zo7iCWa@N}6=a!RSb=1qrRBcPrH0M)F4$@JDtxsj^m)h&HiBeOT3y7a>bu-PQOFV}W zR4EuI2mcj>$sW{yg+3~UP?;Xm;TPHofmBr*etj3d`675Hda z%wRTgBBi$lo-fIYy?Q(?A-3r$lgMkHDN43jt(8o2Y0>$AA{9oN=F=3nJvti`Dc+aq zFBR!5<{%GC?y&+~RxQ9Q=$aY}6%gluf7Vvf@WTXMdR>AIKO06eFzyUCwfSlJoX@?9 z)u)i3XD3;tS}w)Xakg0cE>ESk&IoKdF|%S7+Ok33PlDet2PorY`9SU@FjrXt%dY0x zQY)a+>$5SE4IRlZT6R8fu1XjEn$ z1sdv7Wk$lY{P_ys-jL*xjjHP2(g-)*ubv69lK=up+82>CDIal@f)o`W`v)j0zNEtE z`eDGvDxIm^cT7)pcA1iISpQSfNlG*!EHfZ~hEXtobK!2cCinD08+x9`Sfhp!yB;64 z6L9?-=BMC*E@z-++%+A+jNl~(w9RFU{8UP&GBcF|Xs@eT-Xbk^(CI0AKb5pEgK*_p z(f=%w?~vqx9fZGBID7%y$fw&@%I6ZhVY60{FRU|>y>Rcz*OSe9=C_ber>_*wsXJeI z@c$Qomdhd|`_&{<$@w-a(^9L<4eg`(Op%b-GwpaD6hy*$b7FR&XeoLd$)rRpC6fYx zWYpYmA(q|hb95PzrAxs5d{K1?F$@k<(qH#5Rjpu~0>Re3yoGf)3%=$HbR~bC8P=|1 zy9VLRh)Ie0xPjMMCxO#J3|(m0)8OWdfi-P^H=PnsPdhWrlhNDZ&Dq3!b9FI1IUZhP zJvT!%_`AHhPvJM89Q;~p%Fr_tekf4UhgZj^tMFGYxR2vt=YlM?)3Ujf41Ls_AI;I>$G<}UDBQI?YDXzd&>DOm+{_G^MlD^sw`t; z9mSBFxzi8C_?G`@xTKNMKy-RJcWF9S-83Y|_s5X9~o>$5PiG?U-w1&3MHJQY&AvKacr%d@+Fk zc_%hNO*|T+kG0!YUVcUS39vK)Mx6m|-jhJ5f=6L%$!$EvW)r1#qLQ`yjAA9v+4ACH zg<3WQwUjkQDsfgSU!mHm^FQE!CB!S=a`TjaF#lP>3w55Qv&{=(sb!|pqDjVrtTKpN zt@Ki|XgvOc41tX^@fU}iFOT?(z&wDY57%c6D5o0+I`@|EdY*;7EQoa^&hlMk`E#;$ zwjd)}8K`Cuu-lYbZ4!idIsU4VsS_ktCt595(?U!xF1GJ%7waMWYr;H#d`u5@W(lfd zyyLU+B@jXcLqEd^=U=1IkBES>>7S&*-PQ2?-AE2YI=uyUbqlB`!(UR&PVZC-i29Bg zvEZ!2!*0uw3BA8KpPZ(ox~&sMY{j65XJ_VQ{CUQk?F0uQ4tJUkZ`g?oU?%s^Frp{is)9?2y11GAV$5!OTrg?+KWmU9<8l(!A z5Ve!NXos~#dn*i6-ybfFrsUEn;D$4zd5OBY^Eq1 zG&iRps`h5i-n#lnPRNE34qW_jn>VZ0bxCK~La9RN$yQV38Z* z`c5H2w3#1bj8PwdK~X41G1Nh$|Aiw$oW8+L(iaN^S!j?}z031aPg)hNi8r{f9kW%1 zYB>+<<2B*$V`qB&ImtzF!mpKCJXX%}T(nl~GcI`VR-bhD4%$|GYW=slvwd#b1_Su_ z{uMsBEy<1++i~7{AHTaR%$&PnXV)QO7i6tdBO|9yHSOO|C>RznKpOWyQq zTY6sf=%*Q$(A~a2@p~hC+U+^c(Du3`-?Jxv5Kf(`JLq+>bUcm39+ym4l-o9@=zt?a%nX}kmJ*17jZLQI%1C4QSM zxlS|O^Q9^OEG4PGHw4Dy0%xrtuw4aE_xNklVk=MDZoOV()?$CTW{@u{n7Y8?|PqpaElKX`*6rURN+yj zn5Whg=N|_@yD=WQA5k1aFe1Jn3#+K@vvu6HPW%kEpS(sJAHT&uI6wETUwEp@=IwN;zcL(xRtRPf5uB#(d)wV`LRMp;zZ_KFDVW-NE>N3JJW*p!WGjunP zFWR?%Zv~*lhHH$n6osbiqq;igNGLx<$kY#Kx@vrbBFEq30u}^M>K3j&jRLGNbJf>{(2Y!fy>ur@^<&e;M&=HUbaKLBPxnZIUrklaF{ZLF*w zSjt)U?ELB3!zZtv9ltq!_41EL&tJaiK)D%~ka29qfjdGi=!qL2 zgM{=P2p?IC(mebtY(l_jI;a~Z%AHrVN@?E}<1LNfQqGdZwh(r;kZlS=H3y_|ZQ))r zAc~|>8SryVxj9C>oEB&x^bE2Cc#B}Ch)rJif2{n2EgL?~Y@M4kby{gK2aw6T5`3&x zQ3z|vISc{NBImYMjZ6kLhxhulMJV@n2qpn(eSblA%5WT0DJ|b^D3X{Yx1W~3M7^gS z%_Iiev<&*L;s5Ydh585mCS#y5WZ|eIf%wN%SWezyP%$xI?)s*2|9kQfGM!*J4tRbu3y?12rr|2rq(-fHVagk=2*zAgd?G9%v^47Xgnau3k5YS=0_!kFL#&Cr1@(r#)twDIkS zV|d#6kE+cUE!r_TL;kCrm5#^c<3{HKl2};;t&$s+uK4W|ES3t!XKI zt8;mo!UHwWyw=iF34@JWMbh{Q8|ea8@~ zw&dHvIp9Q$8T0Yr1P?xQNPg$1j^10O_cYN$pv?Lvn>dY*?*912UL!CzN%sXkfAO)8 z$M7>4xWBFA_P8Jg`RIf1vp~$$k$e zK2{5M?fywnn(|OV+Wm)U6-G0xU!NrYRq$lJ^j8lTLHHQ!{1>}+Xx&cr zgLN@fp9ialGa<7S;j$+rf54jJMo>+#P;C=c?$8?c?^#qyJG8tW6()oxu1@au?IOM7 z4QK{R9arb@hC&W^;CAu`;fZ^X-`qbLj-2?u;2uCRx1pG!otj<_6Z>pdGTF%YLR{Rt&F&2&%#KOt*o2%F?P5g4?f5Y1H zOVDTz(Lxn=O>r98p(VDGo#fSI3n{zEGpllkm#HQz9~dg5ieKZVgTUZrW)S0P7aaU8 zm_i^#Rz7M#y6rNKf1f{JCEC2|wl-k+>+M}Nzn9#w(%}MISi)r%z!FW~OBViqn_BkN zo^MI6gGxW4gqkA^^oPeu<~1%Rx3Jw>@P8^Hm>KQGi~?4=#Rw$z z5hXe*K6^&t_Y}cDQyC!^7AA?d9p@|@mu;RJ7>6!t6^AZq7Pl^G z7sh!C9L@19a1Q_g%{!No`WGCR8sirxf6W_fbK5rZyMG17nH{ zOp@N*R8lyQ2w9BzPzWlvn)tupE&!6?Q*x4qmaoLD;jg=xa*iEUKGlANxaFi17j8*bCGD5 zCTi9?_H#7W-rnBar<{}j{F4S8f2e)=!YpvZIv2B?=fAyv_VU+vWJF@aygI*IO7KY+ z9)LGr0o_-ZanJgCw+#5CyNaW)8Ib#Qg6y;miR<6bUcG$o{QmZpz-9oxJ4=j|Kg%Rp z@vHM*uXYqauzL6D)ud}(J?5=Yjbr!;qR$@VJ@e|#h38(5C+;)*4{HB8e|>6+cdo}* zKHWGt_Mta@VokazfR2Xcz7CvjMH6pAZ0oIYnnP?<$-@kbG9;Gz? zl1(u{);J3Kx;e_@N+V6kuy4hHkX!P&{_(V;u&Cs>_JMoQ(*y6UAi|aNclkusSS{Bwpe(9Q#G!eTI0+yXA&RyhPw7fS1(aO}v2d zga#|XFgQ5s56%uxhl3K(dgVvdb?_+SLc{)GIOq>5lt?fZBh1@1e`kxe51@kzH`KWY zu+y`H(jc$}%wgc+ZU?9N;Jy5M-ysiEk6G*`A=}t|#lYy;oZSJ#qX_st91aHuho@Id zcl00`t9k7*Zd~>o_XrCS(oec`M%7{XL;{-IBFTL=(KL< zvBSYmKyWkLIAE2Xo6x&nCKdJCarH;!{nF#oXA|*-d#Ln_C?)}o=MnW66z#y#vBAkA z_E_k0g2)>;f8ZtEx;+5>2WO}Ko==^?qt0h~@AVt_2B;{L=>kf3NuqX|<92xmI82LCN@)2u8f3)@e%e$=BCV*cF!;O9I#lF2* z&u_TBWRPe23wudp*Y-jo5ipG4NA0_1_|w1sxZ9DK>7L4p7sQDf^&OS|nuxxGnW>fM zY2d3qVt&ZF0-1p6=Bc9u&!7eI5H-RKoY=jNqxH(f5W*s8!wc`6p^?wbBhJ!XEflTb z&@(!~f0ZL+{3eN34$vlP=j)jn8z0Oplg$%WE0{od0txU0tZi{Ow`{fo9TabufJp8= zb@q-Lc9t}BeP(Klb}~k2L@}%(WLQvtK%c;=EkOv^?9MF26|n*7>gVx?%jr|k9gX)V z##EsE*^fAL#WM~*xin!L)J0#Oc~kM!$k9$am>2Bx%LmJfd4;5vlet=K$a?g*7i+hG<*WxI?Msy1mVatcyfkZYDWONKFn$*mFv3<8=^ueT`W zYv!8d+y`^wKDEZHH&fU%hyBY1$_&sb@j@^0sLwOHWliTJkHX>tyAS}1cI$WkC&I5L(qhmw7c^$dTH>L$pkq7{&02r&hpa=qH46F;Xe_R<*gOWxG zClVD{Iz`E&bv$R>n06te4!CJm%S^D5e=veM+zTP^2U+tilTir-AZ0rCW~vlr*$&BQ1er>fOf=S^9+Bq?h(HE#qpBi23K+r6iX;)4 zF*sWxgQSPKHTsny!u$mzPO+OXx@`n)WP`SmS{4hQv~qaoB@{ww)-~*1Fe9dcf2=T? zi+2mixw!Wy6Iz?wlvau=YajwVcV76J&mlw^4f^6!zbu2p)V$@U-R!ahv|zPx1*BS$ z*~|y(X;tFO!I}wgm6Ou^E?uo4J2SsDVlgtc$7tv=w;yw?qng@zSEtKrR$vuOM^-V~)>3}tT=!Z#e~_4p4e3;0+ZKTk1(0J!qgrmLK)+=R7K_>k#we(x z@Yigi=DvRDzNi$+&qZ)ILfB|`OXh06)kw7}{@e*^fM;_qcaKjE=BTuPe=)J6-EFmz zknJr!VRCwLp?bqpV4$!dbpcmZ<75di3l*y4g>rHJPy?A(1;yVwOiTtvvQnq%l0HzQ z-i3;yZr*iugk%T2p<&g{*Q$u>@~+-92z;QTG?=-R+?|uVu>ra15(4b$Sjv1_5M>>$ z%XKgdspl8BC|*NORl7f}e}37py$qsue~{MRI`e29Ce0WShSyK`y&G0L{lUyaA|WFM zW+6_F+yZ>Hi-IQoFV#XO#q=qpo6A8Ze`^7-fF)F>tPsVl z;%GJ6?>@PjQ*mnH+rAh?BMPh??TgfPzXp$>PfKqhS?@r?Gyc$-KDmM~Z=yKNp3mXi zow_wg@}7JpHc4N|`|gXLz<3D)Z^)3PS<-x4ZAOv@3o=toOl^irLVidJ8K)@??Crde z^mTCmlhDvJzcl^%f02n_ZQ>=OO7O30!TP-B!2#$FfoHAX%@Zd@mL{GZQD`%|)O8z4 z+#1ssV%eN;HEw2WxLO-!W++Qiyw?;^N>uWFo05&O-vfiuRKc#^TztA5?;BGKzd|5< zDG%P8(I*Q)D`(U&F6e|mUB+xNYMl%~qO)a$<1q9dom>M(f0@psjX=`c@k;Xmvl`E| zEKwlCJ4DnANAjAoxeS(bkcO`IB;v#t{o1Y`QtTPVW+Cnrc!PNl{SBdH!ERN93t7_7 z49F&0oK#c8Rkb*F=dpV@y*zZ`T9?;9(kk|ZLomWvk9 zD$~s#QnN)47CoS#TLy??;PQg1zZq=K@>Xh@Ucxmf*wjrBt-0>CvcPgz6M%>D*T5AI9F zt?h@aK>Y8V#Sm=$8_<1y1L32^&qXc0Q8RI2B4gx6;%cmqJkb+le~KD`!MMP2iEEKp z7@LzGe^D)arP1eU@Lpq|%sgAbR9;ISEFi$tZ;mpoSj;P3DQRORyJn(c>k#QUTFqIwZXFnHmGE~GORyQ^%f zx(uU8S!wUq6uDGpNR79ut%9^wKz6Hsv{gPzRS)f{wIfP2zm}=dN)Xxi=9Z~q zcXI|&C@SO+C8)+6UOS&vmNw2R9_+H_wdC!EvGT+n()Ha^^|mzqzS8IYBA79^soA^O zf1q7+cm0_6?iga2bXUvOR)W0si?1(3^PkfI)2NiZ`MoBmFG`f2JAPrFoujDDyPNyaWxTBf1l|m`86B(?C>I zo?h{IJ~D;37vUI8z66C*%4J;%^}4;iMfJ*mU65-)LDPf_E4M_aG(V`#L~9(8E=qKp zzzb6(<9j9Kjm;QlQ}@L~vST=FnAh&-?IJ}^0Ebkc(3k#wZ~S3@`b7N{K{fA)e;*gv zFldQEYv1TfTVQ6CHAPhEN-A+JI!`@W#iTUbROxaaJFB5p$rMA0E;cIEvFZ*Z|;BMKOd&br=uG+~SWTguTw3&r=Xozv}Zp{h2F!i;=YNagJyTlbYVPp~tCke|iH{6NRi$ zfkjN=S~QeoKcedj`piM8?AmS>D~Gf|XtonLB57j@wuA_r@>X6^QYnk7bDhxZHW!qB zAiGeZdRh|%H`IM{HJJ%CwunR>#|vOJ8#7btg-q2=%1Nlc@tXV6v_Yx*(>^mJxq3OP zTPeMEtzG$`Ye2hGo?14^e?;`tB>M5^YfmIjxlMX#%aP_Lb+eK=%N%iK>c(TfTd|I{ z%WEdnVzZz2!U6oTah$?Oh zZ!@i~7rd51_e&BiA6#Ad*;umzC^`#Rnh1VCRHTk&Lr|1L>5eZm4`fQda$ah-QiGM7 zuD$;Pw^;HQeXk4AY^w>Rj{pD#Vgi=|X#yITfX5mPm#7sE8n+;#7r+2AaHwqxer2H#w;S?_MtRwD6pvp+oBay{#4wbLm1x9XOa` zmcNg>0v}BGWxb{B7%Fj<9ja`3(~s`#3!L{I)KCKZGXgl)*b?ck5ty zr0g7h+}rtYNlR2BWn*g=4XkYX06L_gg&puC_bN2SH=$|D0F@yI?FV3LTd5n&3rkPy zYN!6?*lN#KI}Dg#o&gnPO~y1w0hY?5Z9-DuQ1dR?t+@(smVo+O=a zx7}{4dac*0bz1#@akp6~&03>HsIIqE`P3{pvJF`VE}0KoFSJu`n>rJi8V1x{c0B*7 zvua_?0RvKn7f?P-DF)?PIkp_Lho4O9DX*1dOEsuBm!T7U+BD~Z{_q@Q?6ZlA!zpEl z0-e!;kbl4|H3;(X1=hXT?<+|T{jAO&clSOxnP_$~$;mH&&wvVV?VnjHa<9t9j(`I> zV@AhYuxpJg6Ra5+kh$_F4nNo?$}vIZAzk;9g@!az)4IKy)+QZVZ`8W&o>uRIy;|!u zNUtN605Km>ty6H%!!i?<%hHk-WM+(abtl8PO-`#rZPG)=1%4VB*#K9&;7>|15 z&Tg27#5;$IH~MbVsDH3}r@QMXS|;$ca-)twQIjceitSK5#kUf1^WUA`ZEfCuudk-C z{9W5W`{G>hJr2J^VSO?tKAxc~dR&gFA+^~VYn>W@ILR7V1O0ZZ*6XOXUQ_KhYW)Ts z7u^NZ%bcGVKm#T7c4|Bv5Rk)%0tzMu{s4k^CwK2wp5Y5&e|o6-zi#rb7*-agSv;i2 z({aJTuC{x`xc#6FuOHU6oiwKwlY{*745*+S?77x7IFh%n92huZ8+58E<)N+Ai=M%2 zbx5OsKc+1eOk2`vkNXX+(d~}=O}*7=sDKC*)B6HwAUJ0(@zupAM1%e- z0Qgi%$wvvl2I-edaVN{+h-;Z6)5n~9rJOvx0q5lc{aC>&cogaw5Zk!DZ&BW&%R&N( zPJ?ct;eq%tJ4d)VY)q-CfJmC2p&KBc<2gHjz#K{}uKoC?;muPB3En3_Y}{(-7fj33JKbi#)@pP~UGGua>%(6arotr>-tQC>@D_Np3-{cA zvt=iG&%8$8nS*!X!&Kwtq_WJI;lua8+uwF?uTHIT?eXkvNcOMq&VGOyUZ|eG!}ScV zys0;&99{Pst*=|AcQ|-HQ}_y|ONZil7StIiTkk(fD|g@TcfM?`lif)s&F3>M{pE(9 z{H@*HZ-@Hn9Ax67&qRZNVS)u=SXJMZC6s)&Uf(%72s08>ZKY0eyQAB^ z&S4pYwQ-|{d;V*+e!oXmy$7mVuH%K^NWta1Cb&4#Y|_c>J9KIg<&zH*ue>7;jCPT1 zv8Mz3-Lv-_V$goyW8m>_GbqT;_q!qmqX%(V_wgH!bRyN9ThDb z8y+6v^(;%7`Ra9W!2(S9cu$lvn`1%=X`IEOQ*e4{x{IW$CWM_MF7zDJnZy1LqiQ8- z!GId*ND6%v4u_&M*P9)mEN!u88zt#hoD`;e-JOe5yt@}ug@|Im1aST?%@eJ&Uf^yqb$93AP*XpFJ_S(8S zCjD_sAGhk`e!JdmE;!_vT54N-`ku)OaSY3Mm0=6=AR{v?-0x zIukzX&nSJ})~#8i?~iZn)fUF{%QK*Y(l;c~ENDYPfot?@?RsZC?lv`btP|Wwrnaa~ zJ8Dy-ZGFM)C$dnl)?F@e+tf7Y%JvlOYU@eT_IUd^nz%>)=*wj9ac0~dXnV)qC9~z2 zRW@dot$}$9hS+?6P5E$5riL_{7s=nE{)l3r6eC@Ob)r`2dQ`(3rxRa*|h;)r=e z#)fh*z{N0sA8(prnJTvlm_i?@QbxYn0a9@DuX2pBXU2O)*U83uyW1tLx<>lle!WNg zEge7gw0@(}>n%#QA&6(K4;ItHyd114j-_5(j&(mN5`HNP{nYiaC3s^Ak9&ThfN#@# z%oAqmY?)`3P!Tn1o+UZ&p)2--F;}J#i^J$=9gzcMVF=zc9mwUEzf7O zN=m10ts}RXQsOY2(mQfRKRRdBS(?{r5%7;@j?3VFXpQR1Xk?g%HyV{)I@Q;dpNMni z!k?diCinQMvJn+^eVaOEZjS8@*Ay&JsYd0~CF6nsR~_-4R4U#|rfe#I{1ubnP>kr0 z;*_zYdpfo;>ulI8P8^5O1gc)VcyYvvD=^n1|DrsH#lm?6v(R#sRVa|8%(F(o5|oAf9(1eIPUN@DU(MA%^jMC&-z9 z&jKaTvLFT*?5ct3ga|i{i1ax@$x^jcy|E0l3>w%bEFoZd3iN`qfG%S@qwyo^c7ckj zYflZY428pP{Xca|Tz5vjYfFn;#0NE$TV$oOIt2me4`4ecIpp zeRwq5JAC_bbTr&ZC?!K1%|H)0wCaL?A*^1PqvDAwl4W#OY$Kxt#||Zv=qUyFItk+t z14f<8hvf_%$8yT00Wp#J_&$(%c)iOj2f0v21MhgGp?c+5zFlThQe`di$VjqA*pV@d zgtx|IWGt>Tk8wBzE_FuWU?y*JB`X^=u^|y2j3N^rGS-bLb>}W9AcZk+Jg7i_XMi0< zcEtW?@|oybIYn!nAcJ`myL|vG(G&4Zq9AC}|vnU0TY-FIY2R9S_nT4T_!@#1( zqE>~*>bQ4T%aih8kll!48~uG`*U^nz#mcfty;NA_dvrl{gc+jT+V~FXfV~e=g--X^Owm9U!fav#jchJ|8DUTJ83fVf%@|nfikfi|LwgX-`Uo=sxwsj-?0R4|tYHE@ z(BdAoE7|#$fw*i4m=eOT$on-m;%LzXSSneTG&L+&E^WMG3|NK-%FjVP6~q;PSAL5S zmNrTf8mKLj00n@8dQc$3&k$$Ih8C22{>sJwE*U97t60n3py{rEpu595p-P+-Qm*x9 zpH9Kgx92)ucx1R^416wGzc z$AwoEvsZ2(>q z@QrJ(S1v$Qn9|BLYAx=eR1ik+X@`-|p1sWyYlnUf5C~I`Xa@xo&yCA~1V0c^u)8or z>mYFMU;wY^L$Zg{?R_&Ww#AEGKn}AE`KhaZ$RgL|k@J=e_%c!K(s)+{K?4e-GwG7s~xHuHs0tc%vm^hP;JBllsKh8Wl@XS!*Uws!VXK6 z7ou=tHEXy=#3}iXJ_H8cZ`IEs!hpiTGrA>rp&~ICGlseb0TL?Hv^mX+p?scN912} zA0X++igf0bds4tNJOYu7lB8Kqpfwpy3F0VjI@ZNRpE)qXPxL{hAQD6N2h|JSIgqT! z8$;u;^XZtVlWMS-1>>QnqiHhP%d%sCq$w3D+?m5dc^k|T^2QiQ@?E-_u-l<$My@|* z%j0fl&4Gs@g)Yi4G8A^9$Fo89(Zg)IKyFwi)ho-ong-hhJYz;R52$~0J>8_{YYgsf z;?cR+cbh@vIX~VRQ_Mn|ftJjUhS-N}NE|2Cm^AI)2^Pb{pU^L4+g6yY^Nz3ThN+S1w9I$3r1%+8 zaZa053CqE9USjwe_h&?i!3XGLGO{8f4QyZ;e!vOc^(1a29!57-Q^%*Fd3;g@~`eBx*A5!YZ+CYHE4STe9nh*oGidY|>=CnbVG7_l&fi zDJm0;agLu*eG7DpGd<2r3pi=1yv1qd%!?8p&&Ly;p{SMeWGVF|K|o4>_szX(;t^!T~uJf>?^WHV_7&y^& zs(LAm?~gwoiW;47PrjlLYYMGiRfA|T%S#EC8?ONgsd!Bgk~wa9+?5( zUxTO4s;er$V-%X(jKslz4T&rVf-}blc-}9C6RJ_swCBim!vV!Lp_FB6fDV{path3g z01dzOEoPwx0YtVDJH4OmC92mkRSb-t;YC*zEm@djIkAMt%Yj$$$|iUMO-Fh;t>2wd z7}IsGt%iYJFxPGOQz@35(yt+-;YLQ}G#*GP|55$<&0m%1=ajd9y1bxJK#VLRWPvza z$jlL=gNGAV$m=WNt<5^|r`{%d2FWFH1|eMn7uWx8T$w%TgL-pR-0e(VU`1LEuvHQp zi$IvB;e4KyT;h8cZeLPI$j2ZYMa&oQe7;b{q+CQe0GpctC)*u`&qIs~GjDBlFbxka z29nrmOq?qp8I)yz_plMEZ?p2i>>%6j(v430mc^tD>yO$K)t=mz6%CoFuc9HA>9TA` z#3qsBjAky2;14W+sxj?~hJ=I+MqSbZORM-qy-!o|oRVd#JY#p_HbPu^5of~$k!y25WXzOxH3#K4JLUrSXB{GGZQ(ok2B?A&?P8xm)G#M)NnbI7%mbC zm#=ST*nGcj5e{z$Pc z0cPB>kzlF(5)$tbBeI znKp$|8#_vkti?RE-9l~zo4wVnH+0pNR zP6x6CfUt8%VHdednFYrhwf)(*N&T8kw$hhX{eN>`w%kV2rFZ{7Mg3Gu1&9O*a3@C~ zhYKjNMM@MGZ6q5}017~f0189_Bq33bx$vd$?eL{v!7(x6aM%~~1U;`XPvSf$m&&cG z0I3xoM7Ic3<-VLed6w_&^GFq7LCJA{tkSo#)+BxbR39f?KJBfv6k(=Hz0T^#wAvVM zb~fkc$r{gJx+7fd$>LnQ)Sj>C)MiR`nad6!v$$Mc=Y?gEu*QO zI=QJ_!o}@6uXhzbpd@5j(=QszuHX-?QVMl5Nb_Uthj{tz^te8!1Q9d*Zvq)Vsp+RAz2UXyQ(hB|D{r$ zSd!QE1~*mo5cYLPPVueR4CnN-L34Wo9V*)rc8`rHd=QjVyWe%YmGg-w>olTJQH9hR%X2@lK0eb%*UP zNLmJ9%^rab3%UFHWXUr3GZ=*VFA`Yt6S77L-%%feKo*4lkwdaF#Ykg+)a{O;o;dy9 z$(!oV(aEcw-O4#gJH1++th-h__;S1ifLdIOi;`tmd6( z&gv5N0;?j2fJV~fWob2kpO=Oz=|Tc7TX3In7hOGiDrpS7A%A4_>wMB4Nx4pF>H%|N z#RX%MJA{09P$l6RzFu;bGD&ccJ*t>uG($%cxDX2ZE)9yvQdu+!{|Fl{s3-Zhl8U38 zsX=(+R9L(Zfe20sN=#OJ0KtcMR;6vD9@TTaIzK+jb;H^h?h}fCVrZ3A!Ww}jl#xUs zSpc?k1J`wP+Yf5u+_rg?y$G5Euj^m_v2{JW9S!Q`MM)%veW zWKLog%e74MI^Ngur*pATuv~qefXyLt-h@R!KZ?Xfqp1dcAv+zoXq{M|q4mwsspV?P zpi!R5UH&n1J)57A8mer`ClJ`T0Y2uDGsBxpW!Q&Zgj61X%#d|HBGg&rK`T4vB_}n7 zF3=Z^;0|Y9WnQtFFk82!t;;KShA?S=z@O(=weejLRLSMG)$tkH1JirfSQ3)0d|S$! zrN#@HkO*4(A}c*d^Umfm^I~3^s-&6dUKUD}Om|UzP5UX07Gq>swn?dpg_r=1A>$`- zGv@8oN3R%vUJ|ANSOF{nz1q+liZ;dOv(F0-8q`x?HH1W3Q;uyX(L?|J&e7q1_2Tqs zj_N_l+xL~z-M42Ig&U!CYI3_#?$${P=EhPAufb=Mv`3#8iM*TpE^`{ z7FT;@j$|Pevo*lWnq*|L#l=u8h$-Qq{S1=x$6ynU9LV)oR)}<*_1`|k=A)?^~%m> zSD6;;1d3-skXZ66=+biRhjreaCSiq#;@)bs);j(C!wR+w$CcHjXWW-B$C0 zL+KxnFKPqA9xQAD^ZVlZ`3ny@=CD`q1ofLTG8EteiB}^$=&t6ug<<6TH|HUy-^yJz zzLn+{zi+a?q-_2*zny=v;B7&==Y+F=F8>zSsolq=ekRdU+O3I4A(f=$S*Ag>cRcG?zfyII(OAZRo- zr!21gJeWTBbFOnWEVxz@sn;}cucBEf%8|;#H2+~JtkSCKD6N&Q>bEt8s-|AuSRFal zz0GnTOuGph9RxGj8oN7chqWie1sbHK&{bZPf(PANxprT zWD*EgXrhLJILys-jq4BmCPKo0MSdNlJ~$SoJ_XxB`I>AAs8B_PVoSSHdCsKD6WA&# zash<>;9m9!-x3!z-yC=?FvXseN~byqP0^0e5)_eG@&xo74KdsyhEc)t5f$WN=2M2$=!BrF|cWKgPq^nowT(M14! z6aEwe+k>$_xuFJ40Pw`eBM=$VV+|G*u4-^Iw}`eFmL%N?Zz>_LrktaCx2XqBzn0l5^{^_W|KxXR5FJ{*89O5~5a z?qcF>z(6Ub#nNQ>&}eb}24lVz8Hd+sRQdZ{tl`#C=bU-EPp>n;ZK`9C0+9!uQ+^M1H zV-}4MjR;aN){~8Y)Xxl)jMo72i96#EzYF~PD#kA~SBs=>h?C{+Z0mxf=Jtlhc;4A9 zC3tzGmi36i^{~imjt2;I-7IOQDtZGlA75pxeoU z`D&`b89r%iKcNG1qb2UsFfNr{+U4U4=2R!qfT6BfjH9A|loLdK<&kc(Gdyf@l?wGP z9gcG@j|&VIP@4eCKBpg2iZ>&IvX<6oO++mfdSaeY#H=hrq|k- za~v1aC9sN6-l4Nt6m&-&4o&XW(dLUBL-30ZA2LY#fqu8}jW3VyTAAn^%S_8)@AwS? z&(aAA_eC*(VweJQN{$C-X(7Qg&^C<;h9A0#hm1aqMF@cXyhe}lW;CtSjmxV__5OE# z&B31coI+N3{UBmv4~$<*IT3o(OrijU&%m7_8D_Y~@2W8iN4YYPbF@rJsi&*-G-G%v zc0%@~f+K010f7TxoK>N+?Ji(OXh@!MYuD9grokJ3!-rxQpOSkk4JqXCo!L-hGT3tq z@Z&^452X<8B5cDGnQ%Z1%u+(l%!Fx$S(s$A0F!#FXN}H->8=Q=Hnb+OPd;{SM{epd zB(so~QIMDp8;fDdYk`@LsW6_R8p%8#j0tU|j@k77*%?zZ8IxiC(gh#Q{dz*z>;&GQ zEe$PypXCInZqQmft0OckGWI_KCYDmkMzz^R){=0g)vnif(S|in+3rMl{Uq1SCl0yr z+yQVm8=?p>KACe2Wg2`$kkFQG1`z;RE;+|@xf`+=@2)8-D*2Acz1XyXT+^alf>+YS zYYL(r^oBwT!4B^M#hm~XY5?FROAOw`KHTVkU|=aLD+to~(_sC!I9~a^X>rz^7O0|B zTv=K)d&Ia=X(-`Z5YOhgUk4JOG@mkn11u351}fQ~jQTL}La*l}bEd$r-uUC31nE%L zQd?UeHx+IkbXmHLRddyq2?>OKDos;LK&=+{7=!ha25lmjrO63kinCV|K{RJiNS`x* zfX(c&-I)RIB+S2d!?E71+eaFYB;oQp2 z&w|1eb8Wc{sx3!;l|^65@Q=kd0zTS*^~06wV&-q?Go664A}tHjVf%XI1I};phUW!j zW@(ZxrjC2n<6zz_sS4U?At{*~#V5|ZUoxKSWsmQx)xJFi|ErdZIfL^ESGov;;h}M8~%_qCrYyWFr*=WrZdVu zEdj_mRu4o-uBRK+2O&G-f2bCzfY`h9IDQzLo+Pw@_LS>Nb%vH|ChgK*Hac=b!#F`I zeM-o(qy?u}WcI+wl$1pe;wX(}K$xle6e_D)8-uoB#t-icQlgnO8M9I3 zrin_xd_GY3*tO7N)YN2PsN$u6u4@rRiv>e9clNR@;(w9QN-bsK%^$HV0Qr{e4e*Gs zuI6ig{x^5dXb?b!cfxueiJ$QjVpAcHvcUCLuAN+`0W8GDB|t1-0g_7NHo+H|jKD3n z^OmgrWJh2|{BLddJP~7tHA!C<6E9Gqny@&pz~_Z`70p_kNalz^Z5OV8XUj9-#qfNF zB+ftIPD+ov>9IZVoB7!9;jb#6`B~6(lshoeq4~$v{I{j=SJ88`uM3`<1zi%P{WWI} zp^a#$BV6zJUJtpTTuN^9Dr_suLL{R$A#wXsbX4P*HVaC$^s&`xa&cW!e@=K+)f#pmXc-}36?Tehpb3It|T17$m^t(jX3U+0w+of@gnEm?{rMCOEv#=@`Ux3rPX8` zKpY@d=03R_KV;5Z@Wc2Am<+4{rgogeAO-3073_54OI5T^U6fFex&G4oh$aJ4V`$LM zq%4efu$<{_P7Q{CCF@)8wIW7>OA0TLy(XoW*h7WRGLLXvfw|+!lVl5VL5(;COQju)TVPPgA?H*ci z8pdav!*Z;;KH8K8n;hG8Gc z4d8-sQX)-Mt$Bkg@C9ggsma@1Z!{#FxXUej;@6Y--D=HX*zA4u?rzLGXTCoryRfvf z!GH=dtaluX-qnO(nkZRVQDboF;47Iia>ev4u~{sC)lo~a0H}oH@j_|L9Hr@FL)@s%D z?-GWjXIp9U&r6yHjx!}#&tTX!G=excOdbaB#Z^iZ>q@AO7V``i3I**mTr9_Ou)BEZ z)YN+qN;W?Od^K+qRvFZB1-DnN0NM{hs?rpQ^QbcUPb8s&g8<_X7K8`JhP+I+3g; z!Z*0x7A*;;nBtXgMo)I`wHW$qf`m>YCjY{gyi#}Hg^(@m+IkC7$1dcRf}25ht>+^g z4oy@gTo35N9doIk_QBEcKybuH=tHhQZ~*cOVt5t`Tt2&}bmOW!n%=@%mpsEaBcBQ-f}PX&dsyPY(iE`V9r zPAy8FP+J4cNA=p1z29`g8Emey7skhA3*o*h;Dv$_TBvW$Tv+Wa7Dw1KjM-1Im$<=4 znmL%uCs7HB6`%jXhrY=@DZ22K2(Vt6n3UoqHMtO?zMj6Gv6i8JgO+gB=(qYuu;=vcN8s9nhZVeQ*2okNfajFx zACU8t()aFETzAjWXa^VcXPcdYGLN6t<@0O*=d^~+D840J7bKY%Wq_813}9_M+gi0J z%NdZ#6;Y%I!JgKVSf=McPq5Hr}EpAuBa_s(_j%e4F$uQLC=^ z;#Y)}LBXhj3(#oiukUE-F{W046yR3NSS)E^$5C!qQ0r-p2qSbJ|sMF)P3;=F_qzQmL$OX zv%aHM+MJTja<-YIPXGap8hfeDY*P&=F7s{Cg6JPNhyl3I&eEJ(tf)rJ^Ez7eP(6e% zOrLyQy-Z_1U{0?p3-jNj{;GgON%`9oSX46x@2fOhvheq)OAO61LT}m=Ujw?9#LldQ05=4^J~WZts7YhG z1r|<#4v|W80L^~6`#jN{jF8CnS5gLr?8E>&6qb`vb{f4R8{pk8VOWZm*pFOW=bP;S zHn9?F+dLevsg8{+ClWZ^Nz=&2m6x_|XFSFYj%0&IkF(g*G;3iv)hyAVsIKAP3)?>i zagW=*)>K#9ICp!Jq-g=>Vpd8{Uj>4GHrl`r^n;Lsh0{ZZa#RvCtfNC=1dG`p4<<)W zKWY4g-;l2}(E!i}^Luh?FDKZbd$t3alL|phk6oHrr+pSZT+tSpLSmVomiH!5-re^ zy~mFrp0&%J53{TSYNy4;mG#PgUE+>KrrQvRmYH|r)*cSvAT@24gB=c z))(;Y38Pe#3ymLePrsF6$Plv2S4zNoHu7?bOHe-rYBz+i!aN|71dtw?dIhcr9`S`I zQC>jU1A14D6VEBh0P&EWLvyHRbI>H$i9oR`$3tEK?p|5R zfHhMcGKCbMh59Fc@dTrEVwA3IJa>i|7+g118^B4C&(KJe3y_bpj28Lz;1E`lZvO~J z&Gnf?V@mn0z}TAZik6ILeRg{h51oGCCV|DJj>C5Ikwt|zBsVe5%$?34yFG!|$IADe_4xt!7u^?ega!fv# z2Pjo5$@5}D;FG+FFewqiQpJL{TqE&HP{qmcX2rBmRNDZ1u^TTk-|pNKtCh53G5L~) zp<_YDM7&9+WE^kWFi}8V8G5$Olh6ZF-KBTU`V(dZ%Q#-O3DPeO*8{{j(LMw4{D2oT z=OV(^Hz6e-3k1oY<{~Pm9 z5hbXC8&Ofz4s{`(c8V*}OnK<)uF=@okBncrgc3QscyPzYrdQ%|UA5_8ttNqF(?-E2DP)5mHPQ6Gyt?w#i1 z&Rf@vm%ur6*Uo$ze0eDY!tX>%+N!*T@L~9^fXbe9RAUK&>32f--lF6w^*ysRv z@DoDsVNHiYOA2B8z)vTJTsaxESWa&K;EXbsqgIO8cZLbDg2#JBn?A}}1^fap81xR) zA^DbT&`6j0Ivx^Ps=cAX#OsJ(z}`cW%wuNk9XNWla=yhYm3C$*LbC_Ei!xY z{eE+X&bwgF$v2_k>t0Bv&^0jyf((F)%_|e4*prR1RR*9D&m_Sk2SmcMN);ICyP?I4 z#2h5mNHpKYSe^Y^P1pcc0bK84WC$P%RrJ9QavMmMi8I5+`rlRHmc}T+C$)2JQSob%P5Fhr-t zTOZKZXqS}yjzEOR|L!&Jym$ln`;!foSRiBRFRpSS6{mQ!tme!9tEdgRRYA1_S)<*esgu*@x;WrW!11JvPQe)l+r0qLsYC+JO6ea? zlsa#%V3Z9YP?%4VTlhf4|i%{qXhYK&)7RHsuo*J;l@8 zH*?LJ!8KK&gybfVK8KPWiIFVvg2{Sdq~9U-4ZBuuUo|b@T-+w}&%21PpKf)pi6CKu zNupw$$cJRE+go3%Y9j$4NJR(^i=`O&7*QH@(O3(rx{IkQ%JsRD9LrR?9pOr4@R^!r`B@A_Frhg^LyJy^rBrZD3m$m1Q;)jr6iuU# z5%OuV`l@@d1@JFN2TaYgn_$pG*Y0`-d%^b1TGHcXvM3dT@l+KAV~PsWfyNHSk zcU^iU3b_GyemHaCqLg__{BL4!$K<+DTcweY7y)%39CVDST3yM8;O9+EPT&R>RN!Wp zVIKbIh{;rx;TCg^D1Xu8h1-toI7Qna)b^9o@=KjmgWEFTmuaQqW&$l>tCFwnUr|M? z&5^^)7sy3fLcRZr$COI(124u zOb~^{z=w}|4bV$cEgTbS_FisO@6e&pW7XA834T2rj?;e{euEP%3~m%nJka6CfdM2c zU@`$+fbY3)bldg`+0JKO%~*%2-ABht+aqMxL^A$TXq+Rk6N+6G4lK~DTA?rfU*96; z1-|?|v?>B!PRr&e?b~uG7&e}aFCdIiOc>DSFt+LwL3q9=4-IjVCKj6tK8+^$lgE?W z#dyLo?uYlA6+6*cVZXJ#DC}YH>%Wr@`lA7=S@R5SH>pidE06!|giTV&=`2zWwOwyF z4H}MZE2iU@QMtuYsyf}OiSsAtF+eSfaM^LaTqz%uUAVqO3PE= z;?V>qZXuP|@0Peqf6go8NR3qqd~1Pl=pxi{P#t@!7Y)akldmz~fKtUwb4}RxFku1g zQr;4VK~11`%oD|c@A7Zqui63FRT5v*e)JOjdAfE6Vhg2!P3>uvM|QE~bKF1H|H6%fq=gPmt~_s^XFEvs@;-lrnGo5 zc9d-0J+VBM$zY2@I#6(qi=PqX*t&pO_FCMFb*ZRa zgD20v->Vc=LZ#Wc1a7(QyNAdN~mxNhq>AAAcaaC7D zPAJM9Aby|4WE`CK>zluEI2UF##vFTB!`ba~)%hfKYhg03RJH)P0AE4` zoW=|e;NU2b!u@`A*b6d?(D2|3q+i;@(7+Wiip3&!YGO0y*K;i1ZR1B(%s zCbql!2J9zwrZ841-)IoIv#Eccoqaw1Y%owWxBD_DBH68TBMp8Iz8n5^&r+{?rx5aCJp6!j3-lqTMA~Hd|_Q zY~R%8?PnQ__B zm=~d$)Jd`{I8+B4ie^MaHt^%?N}L=`S>vlVVmvB=BC%Iar?G9n1_%I)Fmqadg4*dA zc3vjiq;tl|xXle%e1TmWJp@)Hee;^pPovH) z=rVI1(`?Zr1!HQfQC)!F6-?U_G6Y;&y??aqDgFJK&%{_zxT@1}ips3?N{Cl*c2hdQ;R<@vU3k*4t|Za+UjppPOBWq8Jk<9{-_5j8tWzFSuhus z`Pc>}!yzx@Gs7nUM+3pG!~FWgLojp>tkB2?TqztD;J(-q#VwO$zq5wm#nZKfsM9+$yQrNEELb z0rt{@B?~A2jaB-7>XN0ws8zjLoMDH(2#VSz<=if+h2U?%h3L>N38qjxJ}Vq%STVAv zu<73sM>O&)IoYv>#H58DJV-y5U{C7fQVkr}t_8XCO@&~+Q0Pcv9~~>^*aIO2QwuQn zrrGMpM^s2V``qILl=(d1uxKgj%}duIAE^y+82HsIk_;ESW#D79*1O)( zb*toVahU}G*K(Dv7hBbuUqA5r{3()n)(7M$&Heyx48C)F-#rAEatSqPKXX+%x*=}h zh}?S0CN}pG133TP#KIpCImk1}1S4yj*qkxHt?)pnpd)C&(6BCNFyuU0kW{xRPts$& zu=@;B!<{j+ze| zhMMPTark?AVY5h4T1Q~twyA+kn`P@{{zY0L&=aCe=)wtztWctJAuZ=XbbPosxIc(P z1jJc*V|i*UP3haP*th^5$KBM{RYi`DWPRNjCc2mK_}l$`wRh~EPMdE*Frc4ht1*Al=8)%v)!G#FJd1F2Pc zDMtfJ9+#6~0#Exe!j5~7!hC_LRPeNEiy_{*$BzK~EAIjmAHO*?lr~+h9R@oeTnjqb z6FlXW+h{<#M!0-16~3=O2|Mh(jl~r8L7DY1CoUR?nl=SAW=`9^hG9zN?7sYr>C^2w zL9rHxn|+CB)J*yd95yz-h9+ajCH|DgJ#{@EmtW^j0 zhC`jtHDJ?lbU4z@fU)fTHg-9X{Xu<&<09Ej6ch0 zjoPP}lX>iywzKxjHCdzCzG*C@?4?Xcw?$ayig%^x3~O*VjoW$pHc@v0uD$>sG~ur;Fp!5$HkdKY<+6%29w7BmXZ>OP4(BdDTlzyZd$2K zi^FwzfN0wFuAOd*Ek78w#@fKQ)ogjBzLP-1BvN}8vpdKS0e|;-|{xJO`Hrx@o5%-TZNW1;#=_=Bm0k&eIvub zdx~;t9e&`ksKx%^6yy0Rsl;&!EiwxhX~fI*d0&$roL7*WK@aAx1}BZ)*kg23+!p`a zxW=?@g{<;`@E_9Tg<_J@TP-cAD^xC1q;v_7elFn$$n7o{SU?PLOyDLAm zV%;D(OLyFUuqUs{Zqaf%9hmr&HS29G*kO{}XRX)oVJdSqwNP^6RL7xLbfL}6R zQZhcZcPu)3EVy`V>2oZ)c)uP>`fxujVB|(%MAcv&p+@;{PX-4A~&I$=#z!IPXn#$(CN59 z1MNl>zRRg8BL{^=DhYv|RiB4xsf6P^7OUBX$9!D2~K&tQUs zA+S715C2AUCuy_3m^k!}9lx+ahJR)&cQy^h2JmTpweeFYcd~j_saD+bLa;D~I6#eEAECU8z5;fO!&|FHZwSvFMzt%8dBtZF@RL zxB2W^hB#*GDUZrxlSt>UN-;zKe3!4JL%Vn(jc#mDH~!0rd3-}yt`F;q+_kTiE6qmbJ6PZ&Yqy`9UX4DDjZ5EMElvCM@zx7F zAxku2j!vcyR!d%>BqPk{qydQ@GZ{-JRb>@BT97{1z~`cSUcDwx{M5v{7CzTYd$yiu z*OpeQ7A~gjc09^&`+VB^x=nC^?}>$*n*$ZAMzu|C0WE#HpQ9b#gmj1am-;!s`b)f! zVB!E>?q~&j#PtIa_+Gy_g{KGv6D?I5&ait?rG9MAAtqBW`iYw0HS%zN-2Rc}d)|j} zj<)ND^R&B>k(*ij+kH%4yS}qzBf=e+ z8_sZ!R!N_VSJ!hab(puEDQW0vJ|4WHPH}7R_OZtGl0?V1c_nklu5K0Kn!iKq>?%$@ z?^4`q`Dd~95xXD7kfKhws#V$mlg!j|``(%Fnxvy>ZcapH~im|`)5BnVMNd5Eb;LN{=?5*Irt!ssiTXn|S zJoaMe^NoSqlxP6p&DyXz-d$r0MJg)SnoT7CLhv*EFI-dn`Ax-26!wt(uUStm`uQU7 z*=ghqH;}ZyF{0awdx#lMLhQY?9ucD=Y!ED^KhiZ9em#smdJnI(xWmGqH%lfhKE8U- z?*13cyjOu4o@X9BI|JMZw;{Fjw=b%VfBg@K zy{&Hh-dp?snLpn=+C3gTe?5dONk~dm2@#40Nbia*_;a2ovARe=^$EI@p8iH0q^r;( z@#U!i7v8)ET(R9ibt7n)TBxyHUo8vwGbOtd^9t6g#j(aG+)KZ^pSoOrErrj`gv*=` zzi+J^7Z3A0Li*FW%-A`Q_!|4`0y7=mnJ=vjj;siMYDUpUS9>>UouA~v_Zkf2 zvW1j?BTK3(H&E9@TGeXaF2#GH#Mj); zo3y=8uH1(-N{TNW?KH>G)@flfiS$uT`&QMNWMItR3tQVdH3Iiws_h?eTF*90w9l%Y zRGmNjorj-)?pgpfJ5Q82gr~m!fA1c>FK-ZONCy0b?zm6H`mtA^;NX3D3w{g--Qd-+ zvl+n1RBA!1aG43WE#k*EV}6{w!b?sYU4T&RV!bvkjq2#RgHfeLe>=$;y z=i+)hRLW+Fn<%)xZ@;=yXxh8Q2JV7!*0z!Yj%?iGGuyR#iQDEc+Y)xhxFly#_{zeup4|{`nKm3@ z%R=PtA-tSxlK*)Ty9_&mue~e&*S{#X3_oOP<42KkH9Z}mHT3knV(svDIi~zsw#!GL zo{pGxnc6y6nzififm*xVW2KGJ5as0VZD4^1j+|P0jhYq|)93^+?sMnzY|hDMT$C&P+dur z7>=+jZXbu|21~qpI+)!#oxd7YwgMWL0jG?u4)FrJnw)W)V}c8e0x@#nJc3a%$6Wv{ zgC4tnACJX1E-ihYnw@Pz+nzs$@$Nqn&{uH?8NPxxOYuRYbVGgqSZ&wj))Cf)(_+T> z^!)AlcYN@367jUZecH=ej}T>`Re`CC+7=9qR$%ir@XE7NfC&d$4@y98^cz5~ovb{} zIAjLat0yo!O8<2hTMEM&O4GF|>*HM$_&Q9`A1cC41!5kTYGmOCh8i7db4!oAyjAQpArnQ z!8D4rgY~H2B}4niM%EgEunb@%WMpqm9zpIX#Yzr{$$)l1z2`>vWce@~kxQZo3%1#$ z$6kq4Svuey(fA6OM#Z~MK?=@nS3;|TrM1FV2liJ1jUEjhk1kx|p!6_OuqjzAQtdws zgcVC}rTe$3&$48Q4HZy~m*vtV;A&_M9z($@@hN`!Qst%&WOKKr7D zJnItaiW&Z`f3YV*k<#Q^i}2BhDC>rBr% zo1uhzCa;mz@}Xm50Eo^)cn;|mjwjoEo&{*qwR*W`G_D088Y8ICrSp*86A;&r?<62N z2uTtCU8o=xF9(4MoPGJr6+R-Jg0L;{cVZ-Fci|wOyFNL&@xsG*9#7Ne@UIfYUje9L zKFZQO7r1^(x=uh8*Pa9sNaan=-tZf64cUkhkhAsXp2E6~e4>HCidXz`fIv|tMde5# z+GTp2nF5ZToySyovk1VeN{vMB93z*1MDDyYN0>~pT%6}z8NqU0_|Oqja%U^1_z2NHYdtPk zu@jL9yjZ@|KGUKqoLMM#c}+ia1}3sv(Y1lNHJjM+f?saqIA22q)-xv;GopRmwR;F$ z;!F(Brv1LogA{)VbXS;j55yvtcA%9vsB=ssm%;%4a%6ftR?edhIDbm$c#wS2x%UTQf_GSfYl$r(+_cI`m^RVJYb27W9g#}jpj~H8{zP|F+6_h@qhv|9ds&!kn~7@y&pOm6BBla^U+MQ-TVVQ zcubJc=eO&{>hm~Wz_C1AJEOI%$9EbRz?G1=Nn6uQEyQb2gfdkj`u3-*f+17Y6vF%9 zKqn+OK#g9>RC3TvS?uKrjot>nw99t6xgP&krvS;Q&^+sGAJ&50sgCe zRSN+!79uohjwzp2&?3PBI&umSsR1@x8}f9aeviD*PU52Pdpb`?rl>epaBX4w zlxsCz*wkO;CX|IaWcVkOxCnLbX@#{#>EB>kkR2tAKCQ&E&3s$0QcmR@y@_ijk>P(bPCVPJX^~K*wMA@&ihkA-NQV9C(jux;!UYWcas$W+Q)S?0i^E0uD zfXK$+JGx4D!Zqed01o|2WF=Jch*VMn;-XGTT;p^BE#&h~IxS8%h$&ya$bhbywn}D+ zEuAR*LRBdmvX%;wW3V$}3wBVD=mEJG5gGzjKq0m%@c3`_LwU2rYviWUGhOf!ZHmjP zTCs+9%RPehoY~zm)=vq#usR&DFTW=^xl_?79dYEIg^8idAwFVj@HbrkgdS6}{g?S> z*((k~?KsE6e8-<%_=C*@etV97yNK*sJD;}Pvz^h+#Dne8SZU~L%qOMc!ACiJC>-4G zUi-e+v{{+2hl%R$aKz{L`+FxF{e}6hD>x3BrFABKyQ!K}qA@}@>->f+;b9!o42z|0K=gkl^GULb6xKt}h)=EDKKF?^`_G14Iz~7&O+nwk4=>xZj7?*J1UVVWON-&;lT$>4Z&$bZ52epuH{JXeoid6yNwPosfOQ1i zAlzt)L8KU57dNP;f(PTPlJWg(6a<3U-;&{}UWtTFLlaYrc;Fs=Uz>Zx$R=bs&!55y zf(k;ND90-wO*(}fFg&p|LK^N+(4u%|=Xn^S2N~Oq)|dxyOH5S&nHnn$d{FZMzVXU| zrY4i&Mc3X18YCk4Q9WE$KgbxqhBsldC6pm1x>_cF;?7n&^o5jAIV+~yIo^;ZD(BFB zCNN96WeYxSZC%|tSvS9kKtXA@oJ*jTbEy;WfXWx|5{4Si8e)4gL>zinC6xtYNBY+R z2bXN9h!yQM9!ypM&nS^%p=a1ap4%V01_6fpnogGqEa`_4>8Aj+jF3Bqk*ZOMMC}1I zof51(u}+!_qmq-6*}Thek@zXQ9KHvxcz@HjVG>DA6Mx0va!999j$o!uFc>HmtD$Oy z&%v^_+u`Dwf?bFfkxShAeF~!z%BPIg#JE|?nM!mpK^uEO)8O4ctK+SAEUm&J^vKu} zU%5-}%Z?SPz(&fXjk-05mZNUol&0v=*%=60>)}xVqoJKh ziO)XW^hBy4kLDjDM{6fb$Zl!$d*(*T1B;p1Xfek*=hX)i`_%%&O3EW->eWl^m#%lvupXOz{%3;%Auu7P;tC85Ce5C)meX zASzUpSm?|*YZSSHH>;FNxiOEVqQtp_uoW@42e>Ja!~$|DVExVcLdIATqLMgptQu86?57H*6~SYcfk#cI!gPLbjVCOasKTzzzcEPDwHk` zwBsmDE?Z4fk*hiXB9{R+X;6hfvwfR3Lu)f^AD-xXgq z^6D7)?i5%OQQteBq=} z@<2_Q^XKou_DJHuR9Til2>-G+-J*&bf-W-t_$7dj0@ZSQrhyJ;7E4V0B|?lbuSQ+% zQAnAZE7qe57kW&P>U?ox;EGp2wCP_nVnn39;;s#wVT?FWp%rn+f%TPVh^SKsjNeVp zv`L!IBqcc#NMYcr^o>xkesCx5yLO$h0h=l`{t0T%5Az$VuR_PjaKX;OPAz}DofK9e4%G!-Sh$75m6A`5xtFndJLy1o|5b3uT=1`*S{BaON{X;YH`Pcu-!f zI{T#OF>P&lq*>+jw-|o*05gFn0KH~=@FF(|l=TQNnCz(rA14YScP{b4yqU|1^P5HS zFSLw$A@!=DQ*2|uvl?9pRm}TD;NnCU4=&nx z7g9dJ^QgMM7`IX=13TxrVMFV+=A#sWJ>&fI2B9Dp?uhVmRzUj!ny;l@taUr88!~4r zC3kp{(AQA3o~X>o`(?PH0eEek`2A?Fc^B%kb3}ZKoeSeQF|Czi3O!xFmH$5Wf4&KR zfAoL9D1N^f<_Lbj=YPM?0lppqKav7pAE$u#a_Sl0B*p%{qGeCF*SDXQ3p1CtU&mXo z4u8$AqQHA;YvmDu0s5I7VSpe6ihlw4N2yt(JGa4~)KQ|GKN)$0>#9Azr$BZ!u=V|1 zvP{NtHo+dZ#7t#acqM5TgeO0ObAb8GA_Jfj1Wf=mtD7wcMfOg@X~R%#cutl~U?Na# z@`oFj8E0^>WtZ|+SVRTXMRku04{nL|bbOF)B2oM#CKVjupk-_i;IkDa6Y$)62uHhi zlEUa{7BHm4*aw79jGwO)-1?G{`nWrVgd{;|hm=ks{DMt2%jjl%*ETzKy;Xm9J4U6z zreUNdoKy6ux@Dj#&#&SwXPi60T4gp%d!xPUzJac{n=~pk9L`xvMwrRW%uFw_$s7Jd z_Yo#qJQD!;g!KR)3n*aYl&;q{y@Y~e8aPr`e5M(jo;Q#EEYpMPBZnpYo?VJKI|>rC z#aK0y4ZSr_{G%M^%<+$C;*`g=Gz<8AfTt%`$E#5K7Oa)#nHqV2)1?SF$pAVGI)jiU zAbCL6Xk9M2{{tnIKbl36%}}Mb%T>uDPlC1Jv#1$h^NT%rn{;X1^}D6hyspLZm6tMn zx@&Aa%#I4+QtXd4)7UzFaccc$36XV66Mbln4;X~(6DMcw$~Sn>J3o-NmLKBt-KC8#brH8ZWt z^$Z2b$v8}U0^T!1YD^W-PD<&FeVE1A1|$!N1q|V|`YlnXo+lKv_hvG=V~(cyz#qXkeJ2Vn^c|U@mB-thARmLKN7`eL*HfB zBi+Qh2JK`&-~J*N0L|4#VU(-!8$dSK->`iUYs?=2{lp%9N<kvh21hPHN>;t-?a|S_wfXtYIB)=$lzM%(9XD>QckLmOSOik& ztLm@Qn0oS-WrtXdXM|TQ`D(&IIiCk`_xyewO4Lhlp`e<-i}a!-2{n(FuziPf9vw=! zrd*p#4%QRiB;3{2O2&l45k3+ZmB;-+Cv82S}dQVf^1sHK}*}ALq`uXus zbcuJtRIobu8`R3%`Cd2*#FpT;n0Hq(_JHm>h^@*xFKz};!GDClE{~>+M!y1xeYq56 zxtp4m;Zgr03l$+4!v*KXZ=PKUmo_P`p^S4L-Z`CypGu;KM|yzf6Nlc*R7*M-67&(j zj(K2)m#6xH-|Q21%4tnw>elkyQQ~?x22rOgQp&PjmOF`s`sJW=rffE3?bKFeIRuXw ztU+o*^)TE|w zKo^GuJn0iRiFNea74NBIRVLI4_c_R$3C~nDq1^pu%U_WVB5Mb>(J$>?J|-=^opRFp z2&*dRPAu*jlG$=62hME#gw&y^K>?_=+`Q4~oElmwLCk$vYn}Kqz>6IYuLVz*S@ zj(LjNoq9pgDcHkZ-&X|$w2;Y@frB5Y0R09ouv`#AUlMULD7*sL?OMWLNapn*pGD2O z(}{<7Yq4$Sz?QY5mKdF3ev|Q0-?aJ$e)&M|L_m-;Uvi#6rzA@Ho6%bff z;01uEkGyF+TZsYc^AIK9Buo7S3kOv{Lj~|YL2N+c(A2klTpFDOD!|J*=PWa}7Mstl zbFJ&u%0rNxq*=>`5E5x7M-P=`Ip^8gMpwH@pJH-87sT3Z|3x_@U1jj9D=ZzQa_O~z zMd$H-x>fh`);BRL+!6_kAAZb6$g?7Z)^GD zLozTt;uUP`&+>I^#4uzzO`sq|c51i=gQL@J9xRnJR4!$V#jK@x1+f0KOdhR{B!nH_+E9dXZ)OOg`)@jRtm*9B3WnG_BgZqM-b9TYdBQ< z=B@F(`RrZt%oSaLlImX=qbL8a1hl)OfX%S~ubab5&Y4d$A3%i(V<+;u#wd5Vq9)yLwfjFp>PZN~>|VesPRml^n@wvM3zHA5{O{dZH;-!5yK zwo3rO4j;>)_0CxZeE10+ZYo;VCb~aJbapkP`#q!__!3LRWKhT)i>IPO=pKcbXzS?c z>Yt^25HU}_atC_@x0_mmJ&=jeSU&K$au@Nwb5YwaFlQ0fZUN{96_1$=GksI)W%Mgd!MiNdl0*bHV)CSe=3-x-=O~|&4~sC1Ox>{1V!9V z&5Zqz1Lj-N!%GeV2nY=$o!$~#9-y`Du*HD{cr_d(hoS6Tka;<9S3Lt(G%6latEP=`SeVGO3M3 zR!Ywf1}yt1Vl^d`S%e3sZ7m!@al4xGD04G~f{-Lpua#ZjVm(b}#HOiC1D*zg>zgm3VusW6sp2 z`xETMpNb8Q$W+Z%I7@B98e5YUSs1WkOFR|SFJorRGEz`1hc#^fh;;C7ml>{7vf+Hb z>?0|saGEMFoRPDBg+FN44`2)fb4i?Bh6uDEk~OE(;LW5)4mR-BKrxs5g(LQXW;;R( z)~3WK9!ZY+V_U$PZ4Fae- zD5VG*6hcLUB}OR)2DHnVYg=pObzR)eg@$9LWEnvk?<@QA*LzfMvxKIcL0q79jX0Y1G|pcT0$3OWY9dU#e8><4fb&v|g(0&qNnw4+HnAamS%I1pW0wpS^n zy2ZL}4x&uO+wuwyhz%j9%sWR~c6d3NF>rPBsQ51hZb*cwwO_hATH{4}wS}8kU_MsR zwh0*4vbw930S=d4r$5t9Dcj<0>!4Id7E614!8l3wutn)X4=`pUycueKz7zBg0PNF$ z0h;RX=Coh6>yBVe3AlYX&Syz}UtD8iCJs(7@R^$HK2=YLoSH70nsjvZRg#@rflgH( zGJ;Pj$g(Qh1ysU8JgLbf7|^vcothSOC~{{RVFaeCfau5QBz$$B%R$z&wdk)r8G`;I zAx0n9H%&F}Ynga@QQ_ZyIk)9*rf4ax=WnOBs_SveD}jp)>sjJz9i+nW^apS#YMYYy z1o40{z8(a57C;Hy@vhRA&A;&a_#+z4_+Y)<+;Gf20L4xEm24>~+5+gH)?^o7#JzOo zeZp!DfGei{w9x^tp|NZwkr(}QA0haN14G zDpu`YEPt(&>g-YdeF{Dwep2pmWcihP7o)~rt&p}h_I9f(pkwJxf+ZY2g zUnLPxBHjC@}s6cL&m|s2%8I&A4SBVo@ra1UwZ@WJ5~EjOvGGeZWNE& z@OE>f{v7z-!f=#9$` z0bX+Ci?H5%>%9!f*`}hK&>eZZD!Z5b{(kf=rOD~}W(QihzJbhcWvL9Oxq<0w)s9dY z=t18VmWk}3uoa3&WnKFwq|i=aLsw6PK(o$FVGSkri^Pb})HvnMY9I$Jx-j?_v-()>RMLV$(6dGx+i#`wQ0aLo|2s*E8K9ZeVx>Jib0g8PKTPZ?|amm^Z$)rwA_UaKWiZu-F&wbY8+k}gYCjZ zH`gDfT~j{4bcd#wA`a}>MpWlKkCMJteeXSST`ya@eCwMl z!j0j2OpTD9Nb(t;@kg<9Hr&{?1Bb1aZn}B(29a-sgSZ=Y8Iv^Z9(vCy#-@=Wk?c`c}}ehI)8-v<)6Mf0A{_1oTO)F_50k2MKx; zW}S$|sz?wA2vrsY!?ugwLb;ZM$nv&}fkv;HRiYRswDlx|6^Sr-+@0VB2QPnuIsQr& z8?*y!Q5;B$eIKQqo+mr7@~-_zc1{xe2qr-Ui<1yamoS3LB=}31O3-Jg=qD&*2)tsH z=IrQBIB&O@lxd5VT2||r*nkD>5=EigDw1P%iM@pn>j@t368j2$HWKtpMgb(p%PsLr zOE&!{8iFoyCGbdx-?wfA@f>Oza}e3rbma4CGlK98 zwA^V)P`j0}n(DvG+gPjp_nuJdO(rfr##YQDQ>^b4>Z^?_H&H0``2Wf~f46_k>Pfc8 zdK#Ovt(mw453uq~F+zwK!W;A~XfKvyLkK}kh_Q-goyGc9@5TCk96@sV2xCj;u@4Kq zbSx=x`$RvZG3@R>ag;D%3Td8GjLq2S{jk~{&8!b#cBl7ac0qGEgbQsKkhuB)G9xAv zR2>kz3oj3ng8>J{UxW{b2ucqjYvXzen&a2g}vyDS_2fWP8{l#2)dP6#vi0TDt6? z9>R)mQLrD*B3-o)i+znAvWbVqV4=vFv}e$S)~*DOt|l5_)@r|V_(lVM+ysLsbO5Ki4_y;qNaV0Bhs?PB+opKNJp(8=)D5L zy*Q5G>a8I~wZ=rv-kV7cSad#0Wbz**r{!Z+t^OpiJAp7=w-KnfnP}Ol>$ny-VUl~FhUdP=2=<>wTtiO~*q=fA)}0}kat1B^3kk0C7SF33B84+I z`LDz>ZX#Qwg5m!*P_Qf|`TZS)wyP^--vY?>?~)u-0DoUXS;$3HY{9+@M{S*c$Ao0Fqeyn zpu=shLv=;WX5W6kjVdE9P?rO0YdC+pi$~jYR_GUw|qnf-)yFJdykb+eLLqiK=6!VN>s- zxT^lb+#mc%^7E!JY<(47P2ImK_H1}0*6H$97|v+%O*Utmzp)9WxBHh8-_Fd8MgNU~ z!aPX!^DtAfQm$C^Af>W9ree4gMHa)OdjQGt#aP9tKm){;@a64K4ek5GetZcMJ)32g zU_&d9q=qKfaOvzDN3d}mthQXkIE|)~Qgsa%icK`ZuBBh52c5xCyKxJ}m) zEV==+)f)&ZZoq6yB0;a4VhxH<4+>6*aXKuJZ4aoLY)0S>GqHDnkV~en>E-3@z6y2=Xe-wCqV4qQCfxttrP% zs9QOjyMN#itZZXs&gNb;b6`$J=JEq@`@481n`0vDisCF?V2I_r(C^#~_(@-baP^jbMQfFi-Ob zSXrwm4q?i)iL%Ls2Z;2_G?~s%gIkY>czC`uLzdzm;z4-i0+~K@s$48n@FR47x3kISA>KercRU!~=H!(a}~?7g{`-mwZ^AmJHb zWWD-@=%aKqvY_-2e~E;6VP7;XMh8<1ExY^@SM*S3T`7hr7g<~ImzP>>ja!b87T+(uiSxe=gI$2qg4hA3Z%e3bmibQ-Yll6PCx${lkousX5 zg`!0hg`(bfm&?*;vR&SL3sV;T9*!1%_@AU>74I=p&+7k4rfm6VOyt)O&?CRfdd3G_ z8&}oL$V75rx+?4!=d}crs!&QxtqJb%me#ch#@XY-_xp&=qrWpLE1gt2%Fy+XD6SQ* zB&$DRV{h1$AnFsUabpXD;!oJhrnDx=Xr;1d0iWUTMq5&nK4X_IZcm_XuTs+5s)T6`FlUBA zT|ZU|5Y#dB-&drb!kPJG{WTUI4L9XTBbXO2Az8ZwvF7wCbb{qdbWGhx@SMYE+`afp_cE4x2@8)B6?dB*U< zPH`n%czlLhW}Cpw_8LJziOQB$nZWGLEmE4?Qi*J|DHL@%DJM-Of1&Fmf|(ED*Kqoh zTc!H`hPdk^nUq&yZ4J9pt{HMrT21l`GsIe;W+4`mo&}o2XCrHZgXWUAFv*!9-ARpS zFAI#{p&nPlh46;_*MXHK3%P2AG2^9>!?GAp0i0_Gz;<^9Y(l2j}*sw7}HQP z7FIBet^O1<9g!^~36I{t`&PN+$#R#`go>#6~}@gr7ctsTjl`cj~%|L>H0hU_25n?DG~ueG$GyKMt^jJSu9 zJj5L~S2hu-H(>@B-7$kFJ4kVBhT40YOt7LEV(6MmFe}BlxbOu zjcpD^%p&DXbFAs8JPtv^uCx4CWXoEh`g6+2;#mvCTm6C{pe2%A^Nt|BB?j}YBCu~I z1uEO%p7_H%OFf&@O7d5R>tx!h)#6B$A3=z%B}o}tOV)d}hSe2EnKX`C4Ljai@=}g$ zAWM#IByZ(_pAF=|W^yX&A(K@Ptr@-Ds@lTofdERjm{aBrLn8`K{t%3=ng0yO8 z`4eXEJ((+xZ1hi9rRmWGB|l+qMsqlX3FQm;uf(>tll+u(m&m?z7h@t;?Ga+=DlN-T z(_+hB327Ra+^`!Oq^s=_r{@-#rpIGcuMRLcvQ3sYcaZSNzEh@}4pJ{=>lB&B?}oXd zayR^pX>Cb2=q|LOeB#oBT-mfvu2#h>)Jxgtq%5uTka{RH3*>O$dLWRM_hsteQEKXZ zWG|qnXo=ysF+U1Ix|+=6FEC>m9ZnV2VT0Q3 zi7Iu_kbK7zg>=Z8z^fA=1(!K@k;tK3A}AAexOIEMpQj5~!UU(r)N;`a!#cZjaA5A8 zaqZV@L9nK?)K^%B%bmAWa~SDGFtQ7GjSYaely=eCuv=Z=I?tPwqdhQK$F5Ko;|k|C zab2Z8!Yo|jfVghBaB789LwGmT^50Peh22mIp_2%Lf5$tu!#Nc1pzfHjxQOKC-EmcJ zSVHioJ9@ufLr}RIb#HjETG0a?c5Wc~cn_(+@O(3YyEnF-utb7CyfK{bc>?c3^fs)& zn-6+7xJ2?0AB>=XM3C=;$jhG)ls?wse2=fkP+xTD`jX^TzKHK`6+zhtot|m^kcdV# zq_}<2$%nuj{m`opKEd^t^y^)$bnG^_J7jDSSX+M#wOmcG*&nN7W=rtZA5-wsbCB4` z0JNO0O>iLq^T}_(!I8D>$uCEIu;UQdlLy{{pr$8wncy}AA-%AY^E(lo?F9#0x^V~> zl6?5D$X55pgq{xLpl45pT3NCsqp&EA0};M`D9J&A@c()Q!KpypYaWd!aPI?nJ?R^m zv8{bD{IKbyeC>ny*Ulmc>kBWvVhMWAvr^G5v#Kvf`g;k*;1g8c|O`Tp2h&UF8_vlux3dIlK?Km0kWR~94TK;}Ha0pzD z>p=4IAxHpTISqa*hhWZ5-UR)J0vh83A|LVaP^3oaOW-^VElK!d$Xj&1F_RU;Fq3-& zNeTD`K^wkPI}gW5Plu4)XE^F@7;1?3Iy=-Fhx>WBo|Xk$YgyHBNh5fpqSo!%AQ%XTowUx+#U_k-FXe7WRinV|^w zYyyF87#tKO5lrIn7|#UUtT+tg_#P$rDI9&2`2-gaTbnbt&B#PSI0Dn3BDp#o9XjJt zf%hIBfkjHZN)UAc9SS2bxB7QTaUB7FKRzI+EVVXcD@UNYElPC|cHsM%x#2BUKN15Z zyfvuIe{MV6^IT3TNyMe9w9U;G1V`Ih~e?xPJ1X8B_CN*~&wt4kS z{BsXQ^yL4ZG)L{=W)i#o8*Uy~PZ0PWu~D<$zr#!R8LmVKkwr9^)g&y!3!K68Z~?|_ z#v}}{xI;?mBwX!bIArI|08>_4hJXSm!_`-ugm5`!GCI6_MqoJw)ml?YFmVcE=<%K) z_oa;;do~3fn|~&y`&4OwU~9y#M8iwgR7}fnSmMc2l|m6vN1>?w-A;DGn9QVU@L#1P zm^}^49%{!yWRIs|CRQRr;B?gA#5x4~r(+UcKXPzp&e4e0qA`csthcMJ1^&teF{L!) zO1O~RhW|RUXYRHdHhczJ&bA{ZcLsKy#y@iqS^b&VsN*|v(6c-3VB0VOS8>ivR6$RxStzRIg9v8zwY6d^rlDY7%z~>KK_rhIi0=%I zW+R$OVWiBTjXVe=SwbuVcsyI`Wwd}9%|T>=F_?MOG-?Q%Xscz%W6*Ee3{s>y7|nGq z!HhYm)s_o6i0u9xELPjK1paf;a&iN~!8NuvZ0IrsRWTPq4cSa`&vmwH)?^->2PToS zXdY5@bPqvB60%amn_J=Rg^w^O7D>B|S9W8pF=YhK^>)?{O2<>mcaj6OOi8| zpc*IEBhW8JHapcPXzpT%Ep#bT@moVu{#lBV;+hb6FT-bC94o#VCc=g3O_E)9Am7?Y1Ve5iqSZUl>ss=+^|jlQ3M%DuS2_dlfs91Y5i~8WLi^6RG+U_q#MK_cRW!DuP=(F%<`ipyMup zc>{v2yHLE-8gUR=-{DeI=AMk`KD8$$EE!(@z)3J~KAVi;Uv?w#Y+uWqUR?(7Mu$7N zDRG-syYUt;1rU7Rjk$I2O%R#_=slQVORrj%bb?o%g5IvUUGd&6QW4r?+^IOMOU2lG zBMlHYyq0;~9?aEb5;YFl151l(1jqJZ5ZD;A;#LzZOoNXt8#x3EuXmFekdD6Y z*9bDwVR8H>f$mZ*GbUwVoU*&5xR+p>v$&G^kd&`CYvEyrE5}}OMbFx0;<~)6Wpnod znkgMD*x`I!=4Uf8vl?eEi>#*&PGijX@?LdGv2<|IvSUk74{R?C@oO+F+Kb?}xe+wm zhx;OH!Xa2_-IB!WeVAZ`CkH(X*$;D^vl`&!e&k`DFM;a;K-#YapZy$EY}Ek_e*!CT z0Nzd^%Lfoxz(L8^sFH~^qb&WGVH=m;r$GBMXVTzPqd6pw5q|H)doQRgDndTiW$ z9-g^Kft$B_BII5fFS5MAsbAES;u zir$;q)6N4cmfvg1|GdJ&G^AXYo{+#UUbBrt>7urpI`KDA*xv=mvXwwl5c_Jt32u>Q)&T@#PxaeSu_>Wx14XrD+w1xky zM(#fge%1y3xupuQ@#$MA8yY!xf&`lE6*wOQIvAkl1CkBorDbF^z1u;H zLipT&4%*^-S$wbH_w96pzsUUQ+P`gyZz_G=URxI5R2uffE&Z)pU7~NGNO9s7?~#%L zA#lp~q}%e4%=@o44Ct7G5COqU3EnvA2PuQZ&}K za2sf*bOre-aFE{M8c&`dFVpApk^9yY5;KawUcsdtZnP+g84L|sQ$Y%W+E*N0G6^Db z0FaA)Wn0L|3N2jz^uM?bs-0Ds3R8ojvLFN1V6M8+2vrA)BzvYCMRzUd;0#thK&rWZRG-xpY}BmRVZj|3*Iir^+q27y5pw z>}bU0xQO3=lXnon}>K-6cKe?Lg`JCLqr7w#IaahAE9BG85i&Bw6 z;!%;s_iLGxQ%Y5K-UUS#QW3%QmM>i7msKG0g7LJQWRq#x9kRpe0%ewJlSyi;g~`>G z;73JYkgi`UO`5F?i^W|H1^mSPTl&Z38~|AwS^IKfOf}~9n{OJL>EPObpZLm3KSEgu zJ6K^--%Bt;Y9Y4U8I{vynNSGb`Fb3*G*2&xHrY1^P=&m0l({KO;E8vSB1C#u2fxXK zvf&z%Y;ht? z-x-(-(l%iBv(yMD?*eOo$Bk-TJrjaJ7#f2IKgjh58_i1FRx-m!uYr71!Kr~mYN&S9 z&dJf~_Sr$_$;OMWQJ~k{0Gvu_J9*o8A53q zPcaY}MGXV2^@2!5`+S9()q=yaqAN746+{`VMd=z0^&L0wCr9J`tUEpR_rCo4@aZae zeetG$1#M}{3t64SZm%w$T)J0v_4g3w8yh8^N%L#%^$(~6rmXtc%gcJR{^E6AODeUh z>i@uS)p7Lj3mtKPXo_Y78Gp~Q?;6T@yydExYz^xIYNCl&P2FITPt|8hdi&6pq)l-j zV{B|&^Lezicq(J1;l~?fGcW8(r{_a)HmK47m21Xy&hvCcyLH2IQpYB4T3O|rh3T0! zvU+Us?uEk2IY7!Kgr0Z{qfLr`5V1&tG>&)-LGdZOCj&ZvV5~Lf8-Wu=n=P#$>CedQ zwb&B$s|kfgw?c*FX#mzzzc{Mz^B>e|Ev>if%_16&$tpTFP&nr8GzZ5t@1_No-m+n% zRKBDe3rX6E)qoH+i00TV;ED#?r4smYPsDPEdpWrz(1S%w%<`G_18yz@4wC`PCr2&p zszqyEoO+^v#HP^!dzCM?>XvSD!cYCY=gAgWi%BXXV&Y!%MU2{Q@Yg(NjV0A&MURGw zk{oftiQ;^9WkthR%7ZDmhH}k+LtI0Xw9}s2$c2V8aeX;I-ah+O z#UTN2BBZ^yn@){vR7rnH@`ebVGkkgIZ&MmOWw?Nbo~dywYRYg976I zLe8Mj@?XRh*w=-;#Fk#?$emDL^~Ml{(vX;Oyb6d+^5~xP;&|hE%MI~M84PHhJg_1Z z4rF|P`=GR?=|hxx_f1o_RNF#Ra6c8j6ZI#nv0PpvV91KZc zfHjL$Uf$63V;-kKE{JC-+xtv$%9>3ghZ+cf4GooswpqiD={|jQKkcF746gUnq^5qE z_8Ka=cyliXpEFE>sa8B1rGAES`S7;U#7J(h>nYg<=bfo7X^ZD3T<>a;_Oymw`2@%Y z19r9v|6UHo7yDs{E6-+~0r?Ivme(*EqAfJu3w9!0$Z1nf3HW6#hV!O~;j98jB*0gH z&iXWyDa{JWz*6{%hJ`oj?z5%#a8v!$c($}m#(1){vq%s(@`PuUfHAn&mdLfWNL@1v zwa_&(hJI9HG*}{S0If!AMH8sVcVqt~Hw});cDA*La^k6*l*Qt*-F^GZX)ZeXr}SLA zt-@WEtK}H$i`brpp+>^R98n8m1>_5D)c8@MbdU(L~(1ClD0^yr(X}p!NA1LGHm!reQ z*2c#ABE1=&qNurGysP(>eZ%S)wA3 zwnr{Gc{qGf^B%F@g^bCuUw|k}I+ifXTU#u`@`y%xk_gsf?FJ0ja)Ts)PiG16yD&4Q zEpG1-izC-+;)Z86-9(u*maz0C#wF|9TUTScz;fh?QADM+`ffoQ~=5+p$2D=!3A*eeUJu!8q(l#kQNSN4cr+j)Zj4t)~YE$Jp0oS z&nh5B6?R;7e=!FFER4j9R~l-VDr;5)Lyg$sF^Gcw^bug&h)DH+FpP5QAgG{2j{wa$ zOYG%stxFUbspaaz9di`|OBr>O*`RQ%lGU)Y7*fdoI5xw^GE~7hji)vH2`Y;4I|(!o z_iaO|IKa(ixcDr6g_KRyvK@M5n5&MSc|8`Uj|XQUoBW_LwzXTH74F=vimXf^7Tw(A zM?OW7)eC{ulq4d5!mDnSKl;QEu$t%%Vavws<}*X}QCAMUebdhp-*1YdUHlDCIcl=N1ld8_2nt^6Edr*O;Ay0=|2$W?wa|29xABWdA0VxX{$Shbd@ z1p0kt z=(qf^LakMrW67nMH%eoHmI8-aE@P#3jcad#)yPqQ0mK7^So~r0WLC4kntiqpL#M0v5FqJZ_p~urdL)^^pK{ z^GLF!4PJxf1-78d;fXD|-Dktg=vnG4EWD!U0r($35->HgG?9hiN_NS1-fR6)~{O&d{HXcFUD9+WK%dKe2Lj%w^91kx-735>uKes$69NTSE@O~h=nw=7grki9DMi@V*uV6NImNvx1{d}&E?jX@&l3j zSRsoO-L=)@#$IU(E;x;HJSYJhDV$|f3V?EdGv?4JK8`30ziasjbBH)JUp`LL5ladC zk7+{3KPABGOdmN3$`uwPU3(NgAH#NdwPm8mC1m)^iv_m-C>V=yl|6iUtH2fDNq=!F zCZT^%<>t-2Eb^G(+~oxzYB$K{)_fYvIeCbV&dJ*H#(5TmsVU>m!_NshJNhag$G3}r z*u~IGhUsFE#!z>my$Fpg(61huls7XG!?G88(HOM^g%`9Qits(pP;z*EO6=bliS+2u zyEXI$-iQ)MX7w9Nyzz|02_;UhjYM)k0!T0t6HYX%ld8cppF?`L43b&$ff66gl3ys% z)X?;4?0wG|W}k-H_YF-)pC0t~XJ+DmH6;edi24C1rbgm~J2F7(N8C|lB*v5&8*fSb zgb?7XjKq{n8XXO2L<7&zE)8fzgKMMu;F=Q+)D5WjL7`3RePH%Jpxy_*S#rj0&Wyxc zPBh-C4rq=B<{S+P_@QSYWJtgdeWT4GwTY~xo=8(X{1WSlK2`Vc4B&lIarvQtF`GV3 zhaVYB(IfjD#t@kG^&q7PBgGICe)1+1I{sxeLOSZ9N%(v zW8$u<_iN9X;%l0?Yrn5226rldk^CaFlz<{fT+=031`=d31G$m8gqM1S!?EQ}EwOR6k$8IEs zgu2i~T}a1#m>FXa37_GA%-G=};WG@3-ouC!jj@L@cVw)PFyoSD?=$Ym*x~FRA~ffH z!tOLoqBEfbY~mTGFT01BB*sdf&=gN@j9n$1Hkea9iP*1#F``MrB@KK|XyPWRv6dzo z!)Xk2LenvMFiJ)=9g(>hBASjUHV_gKNr0QCkw{xR@(sru(U?nr8kmo0m{DkqJ)&Vo zky$e4-i={KH1?=(U@5v~;Eg$oXqb^X%orbu!@tIK#Iz0L-^@hXTybJ7usGpFvm{|Y zPK_-yC45fJZ8)XHFb$3BQ$olzHbyk1HmBw}J$KC`iZfu)RyRc3PA86i0{33WzD z&SqwH_NFs7J0g5$sWGCA@R^wlEK9gev!j%&8*`Mg2O0C2$Os|XoiQER1D7<`{EWsv z3yifiqY=$+jNWGi(#%}6Gh&oxUkn0xOGv&ouSvIry4%2*xLX?gt+}=DXyWcdqxv0{ zyfaJQ(;VG@UmFN{ppG5_1J2*_#3D!b5X|Ao9;n*~lcIbf0Kb?^?69e+gJOXh#w#R~RC3#P&^d8X zgwR4afbx&_VpqNr#*ciz9HvbrSs>8~HgmDrmhL})tfDQoC;cMy8k@5`N zCuhG6>X3fY!(;>IDwpYbl`Re|Sm}@>??{*AEVtIytfHK^I0zxjA!TQLGm6M;68~BR zZq8pMEkN?HfFdKR))OgZ0nYYYTov1+@wFEPC=b$?%=Rys`CtD>h??|+6u*p9X8VvT zhkdAjYb?OsUpZs!CuYWWhcd{4rWZLKZxWmNyOa-XNMc?*w@)}@9Gf@F?E{fM3&KLq zzc?rJl0gQ&8F~96FM#Dib^>p_q(2*)h0dr@GWJm^U}hb0*2FIieETD3%=%{XIVI21 zEb+oZjjqZnWH1iD_(|UjelsWL4WaRkckNAoOy>X1JCTui=IQ%pmop-`kq`aUpu2D0 za2|9tG=(>BK2eSzdIkRC&7Q~@2Q%YPd-JQvD3~+9`I*zB0$4|!oJrLW)35+A;fX9{u zS&&|1*ogqP$jQKmf4hDH$+0PSd2`I=XOSN`yEsLu7n(fA8(QdZX5rW?EU!0jIVS-o z(R1E<=1KnMK;+H<3O(aJEwCML(vOFKW`jFNBF9f+lY!XT=A6hg=XmD>r%!$7gP)jp zl=q)F?_mO?w~(G40)Gd#ChRC@d&Kkv&eB;Q?E` zcYfjI1V|+8ILn;w>`;k#5T{PPj=;isYKZysZycj4%h)3y0wf9^tzOjOL#<{RToU;Pe+@VFW^I!irY_j2{dvF^E zrdanKS59Jp!K_L2Z>K;NcRq4z;{DhEW#0IAc=jKr1+ue4)Me+3Ke)Ee^)8KV*N@=7 zZLq+*M1FRE3;OXaGZyqNVSP7$Mvq74aCcAi9Q)$hqiNq8%z$zleAyn&+1~hJYB0kc zTJn29s=V;FSZAL|)!yeB>gxhn*88&{@(q~w2*Z0o3z9+x5#+rTcy|-^dqhb0vg;t8 znmKO?S#Q1YMnB)3+7W;T>p!gy&%jhT>=Rwu_xdKe+CSpt;{Mzx z6z}`MYZbU1k&ytcG6?iO5zGDS!Z7v;E&D+qNLOYGhV}_D`-$%t5OXNgOSs(M6Ndtbbp>*77-J+<}T zFUSwy(>{A2BthSQGgs4lg6Tcnm4JuTj?Gg)o`(LVn^qzC{h3y=sthgs_p>|Clvux~ zE%g2&89#g}j^L2i>Y*2FAXtubqsj-alHHoi<&e1fLmw_>CS5!1a7G$urexrd26Y(p zi?_AIPa?y_>)`<>!zrBkQJVQCPk-3u?Cg40ycZtQb~&7X-TS~l&P=`i5l#G&H!xX& zqxT}&AL7x*oX*=Au3m}rX*P~wL)=!)#L+(29eQIg9hj8%=p*Nao++6+`XtjI3j6Tr zgUA^Mx8^}|bSQGnmbxO<)M6dI&NvUQJy{XEN9TE7 zU@}gh1S}7Kah93w5odek-vkm1ECezNeh-)HXM{zieZ>#sl z(GHi2JhQu_W04N``@*31L=G%9f1H@LIx;VX6W$a%QiL$bOX5MHt6w?e3m))A?DDAL zOe!dBj;Xa{puGjA;P{L);HG3G6M;GQr>2JJ_>hx-ku51rJB3t(%sXet3wgC0*}ux{ zUwyAg$&YDE9s}u3ys@dGJl^B1v8h2m-dD+me$F|=#LO`yHNio+Yr{paXZEui_d%jror8=Fh(losOY3@w52=4Pz77LePX_Wty3@J2WnT)6?J3pgJCkVBP?AyZ*2L5&9DYiJfSd{G-pJPuba?HaE6|Saiq>HyBDFPF*ck)lC&dap zH2-06?T4W`hz?IV;>L3hebdXg+u7$_;GUE60Pj9b!|p7z%|eGrL??uE z=cWMJfy^n&X*Cx$)$!mXPk_JQ&XASp<8_C)(iW1&qBa| zriJ!k>d!iK6m{-UfLS0=ojuONfG&Fa4sYzcAp62cpHYd3YUcsZ3|f(PK^~ERm97`u z;Z5i?L4oXmZZ0KxUH4}$`dd&wH@d%aUi8Hye)2p*_xDu{OPAp8UVEjHc4=vMgGrn$ z08?$URb5)y-Pn}ab>DO9jbAvlx+k0g8^K7X{R|W@3WgrfM>p*?n-_VaO({GZd#Iln>Ggn_JW zS~FrEX!`di0kWE=wC0Ug>OIhmp{e#i?`ZkVq8iyprEDP7QJgp@vn+f-_c@j^p3}-a zPiDo_{+w3P`Io+5USS{TjQrq5GcPkR^MMBX0Z8i?I3Qr{ksgCsrK(iu+KRO`W_XaLyN3EFbW>n3Z6GRP2;$sbMGTuNdlhux3g?!?y5c73mlBfMj`}x;k()aqxhT_{=X$-aTExj-53_2$cDp42Oj!=HG z5*WB64g-*&3)eWJz*g9Qri0Y5N=L2fPnDXwIh#)Lg>7BwZGqxjb+$*|Z?Mh|PH$Hn zZ#YcQ`6~q-NF8WEf=6XlN5Ryht0j8Aves<9Y&YBOmFCi7Yool8HddPLrKRQ)W-lAr zG{vozjpphKXTLPEX+gD@AbX>^My(s+idfa!URr6kpof)pD9~b3w{F;$_ zBywL0*j9~PqJXWX)n;pL-3B||FIwyE=IT8*IL6C+C~T{R_C_X zTTRh_+sN(k;MxdYtJTKpOGW{r#V=n%<{H;GTc)@~nl1ZZGJC1HzEoOMtO#yx zXv@Z!cUJSmMqh1NVe9g|Z8Y0W7(kI4uzni1Q)|t-Zs=^oX=}A@oT0=vi4w3v=1F zVOb4|8y+@)#&WxaJysC6R@+2vE%lFN`|Xt#TRttE<+Xfjjj3lfFj9o}ij5wz9=5&I zV$7HG&n0;6r8UdWV%>TR#w`Ri(+a^KJ8*7&4S)tonUu&+} z$Qi3y0c(gkOZL8`7IXrYw#43K%YI;8 zERvelwk?|{1(vcR2F84|vKVOC%VmJQeD<@vm}n7V-g1Dl1{nZfx9&Gq2{Tq9)5v2* z?FzzwZkrUo8MIezi;cCTFL79HTF@Gr@g zwU<`~%W2LkE3AR#l<*s?iWSOu1hto~<2zS>M^xKJW%fTRQUTnF)t@TvfU26Fz>HaphT9eO5Fh+hsjmS!LaS z&OtLFXCjAp7#mN;3g(v^5@iNpKTDk8scV^VRzu_c=%wXoVdXMH)wW$xSXJFxwjNuo zWX8Qn&JUZMj{I z*=4ObK)-6+t*jWwV_n{p%*H>6yK`&Fwr*KZkDRuZ$gwJv?$*}ZDJx~6Z@l||TQJY6 zUEJ)}Gmlh^L$bYQYv7$CR!ES_)QD{a;BMZwu?I(o z`7KiMy5<0nnqH3mypAD27ouU^UcQ3B=B&5B-oY~EBlc< z1hT~Eyb1iTB41tc4a#yNn2crH$XLlv1GmA(`f|)xtg+EH8+#&O2&}1P)w8a?)n1`l zv7L3Sd&j}8*qBo`EdcIo*|scM1HUd=fkGy88B22D=8k4nJX}5{Pi-tnHc-H=%yOYp zK5bT%SV_Tv3H3)wPH5^EeWWs8)1y<=2Vyss&R#Ve4V5LK>EoDC5hIrO&zFb!~ z9b==gDto;`+S55ubG~6?n^=VnZEx5p94pZYGAT(j4j?uOSl=LjyjiZ+tkDO&T5pM+ zll*vGwcZjtXKJV7yjzYyR$QxlqD4N?>8iWv>V|!OKB&8*RbI#z0VsDtOq6#WE0L8j z(5x$EKIj}$xV>p6Qa8y=*eRPG88|45Jw*~lVg>0;%?8PDs>?%Qljo5Wh)B%kOh7}6{XJYx< zrCzMY#`UveHiE^9WW0x2k03T? zCB;IU)o}%`D}=c+qjx7ocs@nL)RF!kA~F1{j1r@9naw&(^v^)vL!D!Ox@p#w*s+?Zkm zjnZ0w!jA}_m@s$`TW+rx#q_h+!w_Onaf@m@xOKM3**Rxp+ttqev2;zg%I#>A`fW5e z?a0%et1Bo(5opHjPj}n+xkot^NbPfzgPpVINB0v(BibG#uGs(JxHGEXPBC z8{?rjMJqP)XL0(llRQkbxPflq2iF+9`YCh}`d;c&s92avHZ0qXCteW!%^FC02;}<9 z;`CuaZ7l*3?=Ma~H1t}8F)nf!i)h@m$f2;C(}$;r%j+-Md8z?*4agvyH(}tLr98@J zq0}b+trgt_VC&ANh_p$Slsy;qpaS22!k9e5izwUV^?opN*zKzq=B?sB8wa;OTaS+u z-@^cr8LSHDi=V{k*_F+60h>`K-b+(+S_iyH`T@lS#cC<67;JLGDbesZUa#H=0h!ET&N6zdFvhn{*hV;x6X;G?m9v!Zue5ad@|pJP0CrX6{KLr)Q4GtN?+9!>!gF=G zEx@Pv6fj8SWjr#XBfL;99y8?02F}N^Uqfamt(y!`dJ$YXKOpp%OG`^GobNU_@c7GQ zNS-=z6h6SFMrYe8j1nd`LgKc6WDHU?oA>C*5){hhBG|l=(=dcB21tMjo%pmEXn8gr zo{RxSdk56x!%Sxq!}jw>qhJvDQ3i0_HIru6R7>V5OxFUmLHOwV_%GG-`tdECdi`1E zq`~;Q+2qB5zRlG-g^8ji%GiQ)Hs2V=&}w;=1xsO!ODRULW>9*X5w4DZ4T@4r^9@?a zprwyH68|jhM}2e9cGNeh*pFRAApF1Prz!eS@xt(-PHQ-bC>#v#Hj^mS&0XRR25REO zCfgEYmIxHd&zu!4EWmx1U__AG3ZqCAsN0qZpo@#^%U$maf4tx_w#B{F5QQ4hK@I{# zUc;}Seu7=6&XO0l`F;S%80=O8HzT(9(uQaFG;@hJiq|P6p82L-7b1yPMx#Pc1~xSMgP#;6CDiD+oGVZ(R8K-b-=DS z>0g|G0Z^kH(o~z20+gHVGTTQo$d6TyaX}cMq33g?th}zMt&>@QhJZNN{=Hm)@kjyy zlrj&xa~Mp5j9w?fp#s;VILT56w+;apt(!DS_JRJDsG|H$_OeMF=oPU6Bc zF0E`h{~#Td^PvMRuD=v)2dJKCf5Bd%I8kFRMM z$)|8(gI(KRUEwI(J>#TeSaJXtoaKT`e5`wgQACVBUO)zart9;$ayw|Wj*lyVJaGybe7{QM-8p9x)ud#My~jm^y?I%l}aM*leo^K zR0>vRHZdweKG(q}pE(gCAChyH1$&}@7Z;sKpFu1of;LmY3}S-(VGn<&HSJYF9xXfd zy<~7*JKf%Szqi}lIoaLo^v?Fg69g(7_eZkX+!QTSyitLsbOlmH|sN|f0 zD0QLAH!1W>Z9ptG^$qJcq*xULq(!nEN2nMW(ifgQpR!xO||N6&&hYo=6c`4!H5HpkI z*?Nyd`pl52GeRE+(J0R2JmQdQH$L2hZ@sY2kpfkuvc#>uKK%)DUtMf3{JONTv2gXG zzJ+N}_|=n(e?Pf;@#HIfH6XqAdb9EM?{(J_X&LYe6`B;1ImPp_<~}J(9XN&-{Cm-V z!c#r33*cS=2v?k|;~BHWxMvB?V+~3GjW?$QTZW5MB*1W9!NTI1#p198mhLf*Jbmg^ zlBEH3e+S-Viq0-G6sg<+ON0+$`wz}P$HSWe-eHk#3MSJ8?ib`i^q&v$P4bXt575L( z5{!Xy0j?X^5!?xY8r$Xn0VOQxK{6MAp)3YzI`h-Tjh9Pn2Bn010sN=Ow?_}ABOhN# z`-=+}G71H@KcfH+t}JrqVpHd?4yFV)k7V z2-sZFqM0cKE9_{pK zcVn}$r{sAs_2}~317xFdhDv>!Zc6`VP$E#Qqc=Pj;#CxcH34?xrGcQuZt|SYH zH?|?JKSttnXPNo+;NB1Qtw1UdxNGz%2b#Fo2sWyIAO%iMZcb%9hz#KP3OOEZK$4xh#d+5Cv7p&*m^ zP8)NM2)XRFa#|Ex1o=LH2U&nqjENVT0Cg?z6Z6m{Cy^81$jftEk8^iRR&oS(L^B^;jkV^A@|;>3B@dBP9P6*T%it@Y=$ zR#fp(-1pPWq1q@73R$rY>A%IiqqF2e*BRjJf6Sgfa2*oE`BDr|Q#V2J zAUA1fPp`d{fTSE$TKXB>9k5Z+n1Pt5=uU+E40y?SCc=<^Cq4&)Wf3H4<)CtQ9Y+fi zAh-<&VWA}yk)v>Oskz!*D&$Fl?c+K5)s>BPqY=?H=`Vu>qaup_PzZ%xx<+xly>NkE zHk*b%Bc$1r)q1_U^HZTnRTq|+?=aaXyC<6%MlvLI4DcR1hX*vfX{j``E5B?*GiNWl4U#y*@zb1tI$r7&D3-PYj{M9+&W5MoZ~93R z#SO=Y3xDEcni#Wa{D5{k6*d`bzP`n&3ftgDS%Iy7>U>1H#bd@L;~aP2cARZIL?d)F zw~M@R2c0ud(qdJiVDY2oT>#e|e;9alLB_upv7M)?9pcpRCW-Czn(g)N-A=Q;VKgX0 zg}R%6t_)}n7`2s%(E8!wmJ;?0tH2wky-`FlOi9`0QpD_HbEOHz52+i-&Vd^N z3VGLe>o{X0`x!H8678=QrvCe;|NEDK>Z5e{%>YY1AoD#~pd+!U2iHE_+5CHdFe5Qz z&6SyM!?|!57Q~Knuj=-;?kgL*&s({6ugaW%Y8f2BfZ6V5nf2h1wp;w&WNA&!r5LVm znUk?~W1p=Yay%Cl60Bw8X+~E#cOi1c{&p8`U9rorN_B{8w9Z;sLNp&C{~QQDMvt;Gl$d9kz-!J&20Q1hpy}ksx zFwu6l{Hb#iAyawZpex0|i`q?`kUqdc5PBJ`(TO1p2QFlG zUlfR2M)WvV3qMbG&}>FQ>M@fJ$0dMDj5r^lP3K8<69*UpI}9B^Aijv%cVyy_nPVD& z;}zs!UQ5jFr-UBzw|RW-xLgZGa~L0LPVE}o)eT}`#)62iA2}hUk=2_|EE}SK@|N|# zB1#1o8C8vWjR+*l8f+AY2oNeMwu0{mNp?N-9%>K1m-I$~9}dy_AugE=!qOVTHwV zQOK&xR}23SP)h>@3IG5A001BeAt)r7FkhElg8_R4H!dpR#mNas zNp4q%1pol2m!TaC9G8y2848!sO#~Z%R@-jdMi711S1cS9Bx{MfQIciEF>{kcJN6+n-r^jTEaBVC^ob2z`>-zrgY&N?zjr}2e>%*mq z3mE!M#78$gHR>}eoH3$Ko-+4;S#AH)-L~;>XqnOT!?W`v$^?m{l#@463VdtDh6{t|WLo#u|!vzy(Wj@9cntPSPsc`XZiE$TJhVFO&R z=QJrD(oVD8>{(vF_rJ>bxXb@oMs5E4{L}mo{QoomGXIOrKa#uO-^K*FDU;q|C8V%KJer7y8Qqffd(=9Xtw)*-EO;Wb*x9q^*msL zUy~P+h^Ak!nANb>vt4NwWTzvM8wxw9sHY1au{luRhHPBu3HV->V5#%5A%9cmLWDMP zpG&c62eRV0pi5i?;g|UU68WT1O3(c4#2^g181)G8t>6st_ z%F#225nSm@xpVD*Df2iDz}((XxU;vV;~dL}oUyOQoJ+6h@KVm@8}|xdM09iUx<1&h z$3DFVZqzScZwyz+)8w+ zZ~+gIFiRJum{F4YVgavab{N&K~rqc9CuJ7uw-a#Vt6$D=pHg+_UOO(*5_USXrV z0HyPyh+G1X}6Vs0f)*{1c%B~ z1&7L02Di#n2lT}Xt;FMs*d+h}YlW9l+5{W7;~5A!6@Nx`B>F@1Fx_*`nwiHWPC7Z= zPH01jlQ(RXm}3ltn@zrcR1&Cm38vTT71yrP1%Ym*suEDK;5`I#8ZWz+{Ep#^umChk zMe3uf^NyDTLW9m7F;Dbd1EBXgscvsBBCvocqRulq;%iCk*&SJO!fAYb{s{^68kqGW zfhC#Eo`0?Zc)C_9sl~h!Xh2RZl~TeqGSIY`+$vR8Ik1TWW=+S0#x{mU3^wh6ogmrg zSDsERm|)kc6X1Kc=v_>HNa~aBEh<&I{n&6j0M<$c#Nu)fr7AeoLSRW`>+zu5AGuQp z46#^d9GtznThP_ql3sv{DmykD@+2@6WLq3}*?*B6ccfV$Pf|RX4MrLT+AnVd8W_w~ z%TNm+sh-!~G2`KGjoA)leFdMeM#%aKzhMnE$oH9T&u0O_NDBd&7XnKP_Bms7)L^7R zprasR^K+Vj8QcaAT4;zeEy?=P?Y4pm;Ihi20^{qzlEBWJW2S0avUqi|9I?1T3=cTD zK7ZA|tP3&Y27p1a7VJGKd<&ZV?>FWXC72Keg19$eR88zdiro8DGG`+s$-n?;N&EtCf%Db)ibD3l2!7U`iM-q(mO?b+*p%Yrv9Ox5P!3oAs^b12M(e>gUF5@NUv z7&1X?X6_g!GhXBxd06He_TNd*_9jN+FG8fyj@(J4)U|=6n6-5mVxvhsi)H>}Wq)WM zFp{_<8XeD_|`?Aw%_?&UGzF9etMa%Es|LH`C0G2gTG6wT3VnMQ+hbosPsi<3}I6T9~ zVi92=*wTBYDYV2)35`Y+gfC}a9&HQ-%&$Y9Ko*8%cDr+1mrZni2Mlfzvk#{~-gkf8 z<^>nq=8rkDJjbm~^vii}(eKx?^T_!Yy=HgoO%y=p{5TQxpOz0fHc@00oavXr+4 zwxCc}S;!n+Nl0%1KmjshOH&NY&6|H`?9rW0<2XbBi<5M0KG-DhN$m~Mp~0Nu$xv67 z2h4}iCSgrjsDDEly)wTXvsZUDEVmlo!G*AcYxcEL1zL`W4p|VAD_ItOT8jm(PLNeq zvm9zQw9LtIM+92(c;eCbzQIFy6S@67{a$D;rH*_O6&i{wsq_G;vZk+CfRKNOFb+^C zZA-ND3JoG+Qs@`ErmTLtBm)h~@zYCiH z((^f^OGMsMrX^i%9l|v=kZ3i7$TrKnmi8?yVrdpQmF;Y}F_^2Np(r9wS7hxVVcbty z`L7hrC0sMxmOnvZrEVLx8F2De8vc{ZCrUEGq0F$a zA$W%oNcHl(+3Uq6JNz2K72}Yg*8AmMnbfK8HW4yw=0Bm6={F0Knqp@C(KMdnLb&-6 zhEA<*scF;b+NM5D;Xhr@7!lMpVL~pnX~_$N5qYXqaYF|uHM)P(>oq;w;D#+mQnR+T z$&MAmp+h_&F;IjI`C?yE=H^WZsJ1U*4-^_GCP;|sPhxUWLQz_|j4+7v#~L{kl8MZWp*0gfuG<7-7cr#cV4`zruVkKVH~;iaWvVxP9!K0 zG&$daH0On{<7I#8^BCTFBG&1`s0bOi%pvwP1dBYNz)83(VDTgY)~FknpqP@DU8(o-z@SlR3T-JQb=x?<3Yp zf80k=E4_bo2HjBP5D+TJrnqMjqG2E0(yj)&fGWfio$i_FYWUik_Ibl5NA0^)O-Fa% z0Oq%G$EtEYo|xfxuPU}oKG>ijgrT56YmO~`fbduU@F8m<2TgcT%^qAVwP?6U7fTWV zt6t)xMK7_t0=Zp*%(J2)vi5uALGN7*W7a3h!{2}2(oxXR!zr?6yuG8K0Z1n3g;*?@ zWuD6ZtFfm%^}6pt_vp_ig(uO#?+`A9X|rSN2RMqdW5nT&EHxXHvSO%MlMrb#00lyO z`ttHzzqt(8ZwtG!wn#AM{g~?U>P~~>vQO+DM%F~$t^*{E;^;0BZgp+>@xjA+WGJq1 zS)hN*RrF*?V3);*Nx_4XhJIKG#6as5l^ysbwt;}@iulA^bAcc=q~z!#7loZUQ~L;gR7gP2boR;~?U&`ymywuW?xYFwXV8$N+|7pA{ zQFRr?f367=+N+i=2c!53;ew6|a3Y>+ef2nTxbloG_3qxELE{@vdb5}!!`^Brs2hLo z#iIBZ?!el<_zo@d_#N8>HUJcuwnbK{fK@8NI{Vds_efhn|_v@^2e5J-Q{3a+!FYvD-MikXRRAzL%Q`T1ro>Ao^njzk)| zv5*w=&PXGJ3C{@&>FK>{Ve4Y$%2Wan^_{`1JfGqXAZ$$;JTTC8bh| zM;Yy)d*A!#vCnrmd>*R_)&{!_kFr-h|D1ZnD3DTYS9Rpzy(7&6^FaG6b2Gz}yPeC> z-2ATWll$(T*FV6}pffIiuE=LgBD)=c*>Y_=zKiYoiI?PEl@EnC!8{wxHIAWzn%3B2 zcIj$LGUZ7G=UR)F+lY3f2(5qeN{{F8%D>J-3$_WPIuNC z)_YV7x@WcI%;%y{>MzwC-2O8jX_tAwD=*GGB_@JddeiJ?omg*{SHLO{%qb7RXgC~G zOa!oc?-^p%y9c1(OKRHw!|wpsk$>-2LPeL7z5O z%c#@-;eLC?5#&!~dT@rzF=9hO32B=1_!CS{uz@cVF* za___16FHUj?14v^A8`c4Y~axOt!*Y_aqpoK4n%|sEyQ1OoS^}NX60E1ykA*{%+tKa zC#>yB;c1Bjeq~3g1=N38ePJm6;&HL&!&KW6f6 zd$0SX{4PQe=c)-|ie?bcyue__+_({tYYc}xjduP5+^9a|#hrm<+iJiZg8xcjvW)My z3(tB2Q|Z`H@T|q`ofhy)iYmBzT;3Fdz-4~aR23c0=PiXfyZcm z*LUR4&Md0|n3(z>TRg=2-vi9J!>+7{6Z^!(23X_J^p&uVFDAmV&dHIk#+{fimIO9j z{!5=}0<4DA?rm9MJVe`!FOD~T)^l`WuY2a`pDz&V^-O<*3LH+FK?V;ejX^ncdu=BJ2i3doUyv-FEk^!ad!RY<%P{VFFWPVG`8339T??BM2OgGKn94o z(5_VU=k1+FWS_nqlGFUfZtpER)p??Yiedu&>FSatCvU#m5;TPab%2=AEutHS`;&q2 zP9G@Zq{p2h@k_BNr?>PJ$ibyPWd-ZXwxoK1Rx5wly?gt(UVe1FIlv0-zViUd^WQD;AtupRMb15B~|lx0+(aGs%8vbG6`hG(5aS<`d_o+wNnuU92!6k`HIE|L)rbE zvD52o+5M$SWFNgX+ABe>35f8wVmi@Gf2jo@%QLR4EaEM!EVwRDo+17~v8{Q+(PCnv z(d^pe*E4~xLMu2Dnf!TJXnu75S_*UGk(_^5o6x(Y*SYGR)OZXVT6*wMuQhzb;sw~x zm!eCbC@w1xh9k%JtX0zbC3sy9L37+Hak#x|g1VhC)}?{auTDg_yy+s-ht>b%%*(*7 z%?QcO&GZd?CFHv}y`48hxp()Ke12or=Qm)qtv?W5U&pM#yUmK`xk%{`fG@X9{LpDD z@YY(fL*SuD)dDrd9{-WNsyo+0PYqcLgXhWbPOo*k69U=(n8Oat0r;JSNe;z^SK#X( zM_VTJ5^`Yb%`}3fd@F#j)J^bjD+)47e|$yQmtIz$DyPeO)8x8hRo2(Q{x6wZd-Kz@lu+nhf3IG6jDVNdy0vngl_X!4<+3N`b8r#WaBP%S507b++6cV(pB>wM>z~ z`3j6cY#4@l^w8upy2m4Ao*W%+Z`V?=$2>Y*IiJzMf5=IGK&D&srZeN3-Y|=<7QX2M z8C~l9h~_A4-W+v)JHl}EVxY_Y6q&=Nk9Zmhr z-IFQLe|66+(>+?!LNAYZX5z(wRMQ!MB<0MH@vfUeW2gBx1c)Wf0esLF^y@G$8 ze>vx5@Yk1!T<7x?X{w z@bz&R+Ee8F2%J)DGoJ#p-|g)++u&2@Ll2Cv|Cn@Mzmo;5@G^z~Cp1BaGZX{jQ9t$f zf#caM*P=LivbB5XZ=64^FX%M=vbX3Re`4~fKOWTY> ze_;jeFyU}U39sWctAvVY)>@jC1y&KdCw=$J{p{B79b2a#yZbxWx6wTe$Po7Te~tga zx~cPDT6H3_`0sBoUmsszS?3?GX)c!(;YZN*?__a9%~)@T4ere5%HW=EaK9Q1M!&Ba z+!<&V+RG8Yk zi??rB`K)&}!2yDVogu-UGg;?vf37e8WnCY?R6UlYQ+})xwl>3Qx3WrhN+KEw*s&=1 zW2Z!r*)hcvs+QTjb2Z(qP%#f-J7&l8} z3}KqoOmlmNnoIl@MAI(}I-*X3?AY;49e$kow8HB*9QS zP4j*j5i~N+GLzC2z1$-B`1)0e0mZRkcu%p1&!J!LjWQo_ZDRYQ-)Y~e2I{&%pl2Sq zw0G1Hc3d1n+xJaFBnG2dZKLQ4ZpS7h#?uZxiYBv-#oAz_Ns%jLe;Y0l&=|KezEyfuWg88!wld$j65zgkl%dg~fcm=J4dJG196>)hCMa42KpA5We_`oqYsh#XxdARhQ<;N~y5&vr$SCge#K| zC!wKBiBzp>NSUoDtyy&hHEKB;Sy#aev`$pfLw)8`HDypFisGQW!qE}6KHq`BnKL|2|{e`-QOVD|D&nps;A`E;Fu zMbES@7D{^OCw^Sn;6ys0(vAx545#D*N}00=?3l|F3Px^Fe_UD;3Dh5{9yj;K_2-O6ipZFcQpbt4+3JRyEH`e_<0N+t2%@ELdnZk)k4Bs<1O}?dgEY=nAr|L#bl+Y(mwaw`4k+cL+Ww zP?b(eaVuFa^FeOFrAMlYOY_{NRKev??&Tkb))e%3nPvVacn9Ipef4NnlP@FvJ#&%rrO*TQ&%h=&DT?7&@ zpM@x`7nam|v%3Y>t_{2_(henAUfN5!Ejt`YOKMl8i9LebJ?0vY~_K=q^vwI%9j!*#|SNP zE8pz!18Z(_HVvVET`&7JwQ1H^uy;;t+qBF|9S_+M#p2uUtnpB zqcLRRa&;Bf&uec|T+H}bCs;;^+20I-e?rR<3h7G-)1SlAYM9CQnDT0XiLNo9Ch9U) zusj|5kdut6+gojU;KJ9#82O2fjBiAN%-^ zU2Nk7mA;!Y1#t_|42>Lu;E260mCJ@uo@Vd-<}j<8iA3c2n_*~NVzO5FB7P4y7*zpIrv|3ptfwq?IDGMeLd zZ?g1hb|awsEJ9!Ci|-pm(J9S&X)q0K>=%$uYGm^{vv7i9`uZ;(@}K3-N(5+uF_Y4~ z{L+{!lfSQBUj41OG%5+xzGGITYHr0Ue%WZf$Hu<_P)h>@6aWAK2ml}mhp6`nhp6`o zhp6`php6`qx2X3Gp7RPz$ILj682|thWtWko4;z=ROd1H6Cr1t%myPQVOMhm%r>DE8 zZjc}j6f9S9l1b|*fN|IkgA6AqOrJgD9SMHM zVD{X2xs0P6;572%lTTTK+$>J`2r^`avV2JInFJr!W~W&)5WlaJFbo`fg_0E8>*(+6 zIKzWy{T$Oe3&OODsF>{}Nq=IFEQm5YPV6X-Fl+eNi+5-Cn`8U^3H$zQYG<+iYZ^!F z``J7D_~gf<4{t8ncQ!wola()nOll0V{m-vZice2^ z6=wAJDS-Xc$vgXpcOT9!-=CgbNC(oDeD+SBJ!73{71%d%nnC*+5P#2FJ?u+%f>CH= zhOC$3&>u*^D~^E5%KD06S1p-09&E5_whq%g3@M&?ZesV@b-RBe=S zm}1^`bbe~Tes^(sQKIwXq(BLLFVUBj(KVn96_k1LT@=R1qXOtv#*vSFlVz*@(db1w zT4FCiIK)dFW$;~=UVlivlG=R9{Xqjq-ZhZqV?G;byCmYHN+CBveIPYFC?#=FuIXy1 z&iWMqU{@4pbb0#?Ol}-yLA1t|jv9AM?3Gat$a_(8ISaB7!&oxU9_U+7_Sa!}Nm}K; z1R^LqmMDm79al1i2Q6z+mJ%}X7)ah(P7mBl0!%dKYF4(w@_%lFTU5cp+b%NLBWV`6 zDMR`Bp@0g5Te6a#Krs=@2@}fY{fZC{OqbulK)J!w%36bz4g#%BrORZENiV0MIzZ5W zvYVD@fo;l@Ue>S5Ex}*`BQ7OEYcY<xhM>dQYH(DUj`Ce?;3%|! zth*<_NQW;xx)V#BWOCSQFH)&@j=(g(@cMKFor`t%s~d;djcC0bNOWpqIWT+$CzI7# zptdZF_7P`6_78bx42K4}-x$pIXaUniM?S5al~W3)G=D9u7dOH-S|HeKHt+5g=mopf zMGA-6kq|b03a+o1l>ZgfJO4bFF5)GY{P9u(AB)j41+BlQv){$ZLb?mG8|lV#;{+4t z`w5zp{RbxY!}~XB8xtg-4%|dKWesuOXbJ4{nNWmA;&f9?C$igR#hD}`BKt#Tl*&|3 z%D#3g$bZMfq2ym}ntRsd88LJBRG-;XZgpFB8|Z42_&hWKkZP>Z6Ld6hllx5s>Dr;_ ziLwbMQxrlzgm9uK-(lxtmdUX7vH*6?C9GF&*)AgP=B{~>UgYzB0LH++&Bu1iM?}^w zgkm{+Fc+9Dv<_jqC1_cw)yJ&~Apipl4p*~Q)3WJbrD=y|o_Ak#If8PvL@pGnP?CMA8gDj67CeTb#dF74zIS0He`=0< z5KIX-R-8*!F*6g*RH^3hJ~TFV;qh9vWlQ^7VAy0|H<`%#*zVn0E@;zc6@sEono~H* zt$+378)?Qi(w=Q6?YAcv7e_zQbfvje`85>iv`IhAeaboBHeub2ehpif+fyc!tpBl*C;*tvu@^a40svtZ!AhvR2|}L}Hrzm+rX)!Ga+Zjv-Nncq4E#>@_nxy0UbBkbmnF zTT&Z~JJjEe*GxYT*iNq`(^XbbifYw?mRu7;))WQazQnUjiud%yK0A7QGLR~Swl7EE z&7ktF-?9e$X@v=E4oJ2lnA#L`Q&P!ZSnC;DHj+Hn!_&MnOI{qYVOe}w<_+WS1v9{QLx@kQiq z*Ly8ChJa%LoDZ8wMjXMg1z8Q%tn#fcI-w-St3EIyac^M1&he+FZdX=4s0#(S#2O?v zLCdOmymvsfVj#_vc)dE{Ky`20(4=opY_3bYQOlt!<%8@7P(+B7A?q5ygq>e40I;TN z?$3wSvVPV&e~>(|oV5TRVtl*6%^nzb=s2xUkWW%#F2P%?35_*%1v4xTrw^>LEeS?XU?gr=mZSW5?OQK_m>k^ok^Ii}Q4OM4iZ76k< zV8x?CAq*_r1zx*gE$4A^-%|65PA>5Kz94_!*CVD2fxGuqG9j(0}mP@*;m2jHcv0_$B z7)^Wkf7UCH6uAV^H!EX)j^qBSh~sB1sneCrh?i%iOhF$@f>tqXpQ=GhZy+@~jXeD6 zoOaesQ)x9AY^%j^Z_o-NU0w~YQyxM3X4AqRMNuv6 zn2~90QWTE(U#_sYDbADNU79!eL&Tpceq@K%I z+&-KtEgNu^!_BtjL9v9VaUfTkM`|r4r->yhzI3>WoF-z3_~Rp4wjg!Z)aF4N-n7to z;X*ak|2+G?dn^ctiL7|dO5T&nf0S-Q_8zUA%D0nYrHLW5FHabN5WhWVnp1q| zFpl7Qm5)gocqPSivK137`Rh3;BL&iV5Uhq5e>d@6 z9kd!mk=5*bQ_WNz1gjbAj;Xp6RdXHFQ8aUk40qx;P?RM%&D6vYg8n~{M2;g8AMD2Q z@l-X0IiE{!j}2mG*Te-nA>N6xHDn@V{qVMvu@_;mVAZ&k1l>4^FfFA?(bq4D5r) z$7nhkPM~3EXr#e{@7`2Y$~X$|*_ntSngbG2ff;O`!VQDf$g&j6Gmt*S4z`A4eT;?^ zXc!`$G=LT%OZgr1PbCW+ussGQlDCNXh_#9 zob(T=eSZv?CQI;lboI*!tnz1dpgsJ?YqkByp#SOW1kYIRllEUUUzgVA8UZu3hhg#m z_@RIJ7|iu^4~GYYuPYJ;e*tr^z3=-SaKKXOg(#FxM>34C;7eH39e&)G)b%yH%{7(t zZ1nc{_*~T#MNw6&#eqyTOPOe6&mWuEHMOZ@ng}CgSX0x{P2btcfrxV*9X-L39EB)Z z!oG;ZFk44+w1rt4n^R3kCN{yIVeGpu)^yLnzJ`p6uetSle#NY5f117_!8HY=w}q)F zSx9LL?|3)x1+ZoUcVksfIGT69%=eeF@~C=j$4E>MXG6GW9%to(^9cx z>MEEt%ds4Hg0zXUn^1&lpClAbkWN43UkS4E{tQe#O)X+>@&_CerYx(HVE#Zm1&)K2owx7yP4 zR}e!ficyv77W?MM^BnMpr-$_a)Sd_ev9Uq zB!Y8E8}A^*$yA#vE<_Fo0bUxXlk z+a$*}dPOz75fO+qTc*bu#qu5M~~|y*Ph2 z25Sg%HAad#R8+F#4eCO)-84kNG$fu!dqOmM38X=iDqSpsed&U{m&qhQ38V}!qF}KY zNQ>JbiXfznf60-|D3TO&Pf-cm4XH;el2z2TqElfyf0X9vb=zz7PSa9VoLzN=9yV0# zs?wz{s!udU^%Vn6#}gA{1*{FEwT3^@rc=G1+b}exjj=4PWk6|W1g&pnL1|^mCDacA z)O5Z>Q`y8DwY7$=qCFIRXTiSu(*@hG0Tk!A7p$pT#{XZ*&Yo)CyNdxk32O^Gy@Pyy zx0T(=e@>zZ9)Es&c|u|$6@uUVO}t*bcvtnE{HKWQX_*O-B&qtou580t)tj2CZkj5Z zcn&uGse^rEjCC}29mn4k_GtdVAMM``UAJ_$IUB>pp?WJFqh{UXr^&EmVv+Cmu&-I#c$KAHFq zQZO=o#W6iqb;lEDiXk-Gm;+7CPGu-aB3#-OJGT-0=LnXTfvU3g&^)DLJv;yKN>dee zszdyvYD2|hvGF%3+ST=m6iAmbB;@LZXqW5y4kH1hmk;|67k}7qa2T$a>2Q(6IdZi? zy<-*v+en9PWN4c5>M7gk=OhN7l>~F*uol05{jVgXCp00mFt^xBj;zZmEOj?I;j^*MUA;D#bjYG`>F<0{6K%s?`Xym>Ly=J{f*W2SSYxaZ^|9}%- zzDN-d6Mw*R^K%4Mfsz+n?5r~bA4mZ{pl1j60&FkveXn1hI5^0ssJNpGqO}|DI8)i? z*EpDpbLkdLD%U>X7jEf^=u+}-9Qk0qpCFV*KGjR))3ejd)1x=`@zLc`?{MG#cqTU?2gXqm-Nyvs1`ZU3^g9Zm%5gA`>wx z+OE9TwTRzrudmHPo{aRj~0cT z4*R{b$q#ksMBeouYtKBl( zXr0ODX%@O$xvG|%$dO|L3Bt;)+w%>hSQOB`|2*LjqWGYPA*sFf+|8G(C06 zBj!||)i-z$Wjz5uIlYyIa!TIMbDXHdEy-IOOWs)sb#ky6L+}@uyhT6w5ITRex2-x~K2J zA@gw#Q70YJpRd@OOOTr3C>qW~?Cr*=4!|m}eoDUnBZ{QfL2U|USSFro2wT2sc*vYi zb=RLN7;95JHkHW^>{8p=6^9;Y*CQOF`(3DLBIlmG4BClBEkITFyy+Ow!WvzjIL6e{ zb;b9PYfO!)Hn!ZUV@`d~QGcekA%SKJE5F>&rbFn`HSLpu7**6~0dh^QXqJ$Apc{U#n8eIP8JN42~vUrD^lr>q$f zI{-E+!FzrXf%6Etpm?ZU)Iv-6Su^cmAUD}E%xj!rbWyFM%cx^oUY1zfT<@TA&z)wV zY=(HA<7YoXQvogvLzgw6Fzv=*oBC`*?-@Yaa6wc<>K|Tyynjw#UJd`}KmKz@sV)W6)$Lg3zxhV|q74qIHA>4Z7iHYBFkU(^T^UQC^2lsshV4$HJjSGwQF=tJ^RB5lc-(=5ahl5iT+5T0fcMfQmV768Jf zvNVPf_kaHL0ZdZ0{x5}*uQ-`h!X~+}zkhOReUd5A4@~5!1kvk;t~t;MJZP$#qiZlg zsEa*WT2it8g=bu)sP>2$@G+C!G?KIM17(La*^?oV@gKriiW~ykq#(ukxZ?^j3{A5J zX?&DeQP1B65v=*zGZis;WFpQe_mLL%kRZspt$&Q-2J{IncrClQ(eqIj?&9!3JD?Md z@JB6%D*d%(|BO4Ou0SAc(lr5EJ0=?!aXKEi5tXvqS}lA=DkYefs90R)|#ou;vA zmwz#~I$UnS?AdI!1rNlfuZT-u$>exer@s^cU9`-~Zhp{E(}9*6K$Ts37L7Jy8VhCe z`enT!fr*t-Kl!#`NxiM1<_>eIbc{Av&GeT&EyM#&u>|Lr*H;451JF}_WeF@@^;9=7 zeO*I=;X>V9y2H4|h5}FQr%%ZqO3)#UB7e$+B!`;~^3mk*5ymks(`zNBoXP0r+!8G)a4hCm{{V+p1rLW-1rWDZ1rdEI2^PMiu+9bm02-H(pb8w9 z9cmg5m#EeT8h^D|dvDuD693WiXuhZO^OR)KuhktXZAO<{!WQKR+SJ03Q3E+ zWJ;A0P6t6k7?dcXM>U}t+3hmvfNWu zj3jhNq#Y^ziIbdD=4FuO8I0toR=DIH9qC6$M^S<(RW1SlP$kLr`&Ub?XNEqPoWc9E zUtYZo-d+BpER<5+Fjmmh`FO0I&hPKW}gISU(j@ zcBh}}Vt)a5kTJU35<>0>hMb=Mm5@8o`G+^(6a25UH^$BVv98t@TraP#uekQrXZbFk z@06G%Y5S^HWunfN+B$9=x6EwJ;wFuyjxiT%y`BDc{_^_lSL=gisiQrAiao&}hZEQJ z!kLed>&#s6CT{3j4xafF$HG?JWg$FR0VWaSjDLH>>MbmUJ)=)j!6(70riFXB!w5@2 ziumDN$z#(rl@FKailOY^udLVVAXHqcs=3aCH*pJnZ&{QT38=N}GJ@kMccg8571 z`hV||q`>2Of#`;zTdG{y%K`Nx;S9alv+dBIg(o&xU^})ot71u9WWhwjpkqzG_+pYii7Jijh0cs?D^1)rbFG0B(#*|?X7cONd!&n{VRV_|28trMr4 z(>zPIL5f(k;fUGu31Sg0=>+1xV)MG@yw zSpE?N+kY!4w~Kx)OPvv7aGRG~5%K~`ZWMQ1^tFoj#)G3%2apCaN=dTaCFy|ZL2qA4 zymQ~Y1*WN@>8iT2Sa3WLEl-{IIDbn-C>(S}O?^QXiU^)7FQ}@#P_%(XGOn+d!LMhp zm!qA+m74Mex&?Ku?+udCkf~^h>hP@h>0;%!Z>>&0EqJIkXqro#u zD9I>8Sp*uG5vnMR26K?EpbRU`wkgsslI~92`M_XV2tkvqHqIPJF#}sS2 zi9zVl^!@SBS51kn2mJrA%*4|#wVvr*H+(7}Vt^L{Q}khJcdAVEJnpQtcGa}NwMiLo zZCVFB>P*u%EDaz9sZ;quvw!&nhTxPQRNxCL{&o$+6f&fz`;wC-qK}64FL&$at#I5e zw*fC_mPdKAP^B#yud+MfyYh|Tg}OHgWh8{ZpC7tGP)eYA zRYt(8zqY6bl-*~_HLuqCpjLPLJhG@{^q#N{N1-IAfP)ChDI!qyVSiE5f?o}ICWBV* zq9aReYHFbB13m$Ghpa1mJyg(h*QCIB(?M0j#Y(j1zL=;eAj8@avfET2G|Dy@-Mq`B zAEbFls1MiGqW#_vRDDX0dAHzGVeQ49bg!-i ze!I&a9ZMg_*>>cVzkkmTm>uhrJi86LySl;)b5AgA26Q9py~pzODB8OpY8|~T4M!Ln zp#&DzWHLFF)SMLm5!!gSYarI!^q;v1+3X`+A!8-!K{sW!+PCW5u_LR#5-|!rN zW`rKN#w_F)Tw5ETSRVLu*~#d)7|b!D!pbig&F>*BxQ6cn1Ig02G&T=L#E_qL~pSf3;Zaa@)og{?Dh_M0G$$1aZG$$e=J&= z7h;Q;P6$4ECF7dMRb9cn+h`~k5VMw3nb*~PGMh{$X+eb`Z)EYhczHS9BRxCoZoRyW zU;ps)B{?S=m&KwgwC(m!mv4XEZ4+8Cg3J3ICjQS4uU`HX|NG4=gmF#NrWg0K?nFIn zDI0NdW*F0pGyJ=|yZb04ik8l{Qmmn8(bO7Q{&@f zT!-qZiw7a0G;VVSbyLs>;Od~iH#@~;cM{JopiF>WFV?awK6dNbb+S0UxK7$OXXhU~ zn6Xo0Hj?vSf6dw7u1r0mdZsT=XQ=R`x5K;3x9{Gf4X!>6aINKqc1AR1e+9GwYQNYT z&p?fEtyej;cS5%u+jasYv=fU`X6Y`qT-{+oq9>l`>WN8#S&5yxmaols^h@R``flJb zD{}qR$`~^}6M?4XThvV~Cv^g6d?iQs$1G1JUi`3UOf6@M*cZys-GqBZPAePt@rlf3 z0qX3{yI16Or|e@01CjE)e^K$;5nGuI+lu1Hu8aphpKJ_3aQ#vnG1n!nLv{Z zY`lU@1wh}J(3z_oJ)NlTYdlC+=rvy%4>k7e1awvyc((;%_;%pUp3L|Pq`du8b3XGN zpVHLSEtWdEf9qg@j%*WjCt+6VB~EBr^fNjCWCA~j{#Vt0%*~(C$-9`ufT(YQ-_nBI zV6YZB@IO5jpQGhLD(+V!C$Jsouo@l9*T4!t(_$QRf#vt0!*np5&&Ceo zxsINCrmMRt13jcP)FJi#3_|9IG#CeAT@?>8CQiD>tlX1+Pvrk4eMaf>P4DU?F&)oI zOr81EMSoMKMo3@kaZbVZQ)B)X2Jr+bb^;l;1m4b?WGxk$%>YGj)rMB*y7Sr9t zL+@FEr~7VZLFC#j4VdwNVBAmrTi%_cjEl}i7PX_m%u?M;P1M}UGCj%|s*iJ?6M>I2 zXZqcKP5Z8ClOj)%A~bC!&xf*!FD1_tb=eQ?e+)7bVXgjcI zf0HeKOKq_NIo(wGktwnPyZ=(xUq8i{N$dhIgwkXS9B`va=77<*t7~ITLDG!|JxFb6 z7>J)npuSR2xgL?c(uUoUlBzbw=vW0rLOsb2xUPjnx?BI1w8}HAn~PR#{HV>y>5kKm zc|RqHAviXH7I&;Rhx;+I6=L2yded6_e{GBiZC&6i6v?Qh#rfY=I_zxUvk*0x1L@7@ z$Q(mIRYF}Y_e3R)ngOR;gX#hRNbDWLurw13+!!-j(iD^GX%#<^FcJtA6LV5=Ko;fDS8uHazew8Gf zp=Kx0QS31xH_RVNxp#e>IvixntE0o>VHFw%zV7qU*(MJ0bhG-*e6>r`n&+#$!us5e zRLjr4_l&;%@w~PF``C29!VI{_e%l#PDF?9oGJYHRFNfWs5x3o;614&fBo8iSvmF2c z%5;}eClVaDxTF%a6@S`$+cskOR}l~dwmT=594CGNX^~~#vt6^e0akdOpvX$5*0BxA zDd2AT?mOO-_t492{7(@3#CwrEl0P1m7+w?|BMeWC)3FIWqXx$a;A><9Y0ogZMNJGA zaK(_EWBPD2QG`{k}$bUAA__zk%)q(Uh35oUF zMgSsOa;$VD`?zTHag<1dA>-^QC~Kk_i7q`hOSYQ&()C((oikPk=f8)Js|-#-=^9$S zfRwbSUI15am zR3%Sa1qrtwAco0NGKkAQ@lfl_gyBvkmZKX;IAJUaD zMR|FFr>^%5Yt>`c2Ts;3uCUgq1X)8{RWr80xS~TYx3Cmf;s8|*6U(iU&=9CyrF2jo zL&&nO>|h@@wNz&vY{+!9=wgfJO0kGFbZvmpIYn~XIDd~S%jWE%kodJZarngfNxl?R z=7OvNBD!-IA7$>Mn6F2RHHggAiN`ic9^o)7M|eRu<-p8hMqIJsMu<1H-h}*cj=UvL zF;f&PYV{9WaZw;^Z=8c z7EVupvVXlT+@G08$-S2K-5qF6@K=0AU_~Yz{*#fZpUX+AUkeSCl(K**hYwF7<7oRMi6lXxsofW zcLt0t95UF^T{|YKJcYn#UJ&k%83f^}hNbx+cx57}n^gcdsr+)606yVS#MPm5ugV?G%BO` z49T4+%hI}qSn4ZFJ6Jz5jYfQXA#BPWBY%A8SqJ+~o@BZ!W1sYHe}>imEEF2)?i99w zPn9oJ@i1|ea&VIV26v~bqjF+`V3ud`OS=YWVd>9Oq6NiJ#iz$gc^K&!uXkx=}GBL)O&$(Sdzsbac=JWa(f9?;?sBhV5CP9BZ>IcK( zFu||uY>|3BFaGScXM}pA4cdDi0+xEVsa&%Tn#|^``E1AmvAj*P`yNB|8qFpc1;f)4 z4imJ!_G=*CWF~tAUhcEqYO^Cpaeq&0>qgTV`s2|_-zB3~zfTM1^jN9B?O#!8r| z#awEOa5Hn`o&lg0twk)$h*q)mEi1pP(i^YF_e6(ABwBoJpmelfVA+;tW`FV$^ZJ;< zgyBhdz&RDs9~q``j9&*B^eF(F&cz5mc!zX|3?V%jJJF;#^TYq}fqKU;YI`f0!$f`Yr;_)6q&IfQ2M zY=##BV@O$~G7h(B9cdSJqr~_&8xS|};(Ax`Gi!Indt&lQ8?Ga@co$q&xbpV&9FVUR z)t2N4brL{c0_spKSO+Ca9@|&b((Ek3oSn2Bu#~l zT$PESbjNFppQ9A48sH!Z{1dHQVzsQ<&lr;S%jTK)+X*jpXV(rx0+F0VbmZ&uASF|sU~9KU!~(M6R^n~vK?RnYr1Aj%1LH2ifB0+Hh-};M zU(->2zN)7i~yDvvbVvJJAtH>*ri^O#WzPA6cF z9z~y{)z)!1fTRRG@ium99K=J$wF*X_w08*nDmrw_O4K!QAp zTfu@|Z*E_g1?Zp*9&um?T5r@Qx=WYvM!4JcTAR6nkJy{?9eF-kAvn?j;J~$%Dhy|r zCd-8dZo!jqOE?8f&xurZoIoj>A7F{rs9&Bl5vUKeFgKoV4(B-WKGccSH!CqXu5S1} z%av)jtK>&ROSPCPl#vTTfll;%MgBiG@R+hBF-FBqFc1{}2e;|M68%96yI$NHsR{r9 z?H-pw0TUdT31mS8pbht9RpCg}wSvVR-*MzkGM${c&}PMu-`;v*AjJl%EY-EsPUUU3%QGr{i}r|`?}`5l#e!`bKI{B&49 zlVIXoN?zU4fF$=g3uvN|Y4B=hnFDNw*XI0tr~hz&9h}w;&E%W$NAK5ve>$H`fXm;& z6r@;x{qc_vQxH#X&5YM?jrob*9A901yppTm)xG=}f9G$;SLf4rAKut)V~C7tf>M?U z;)7vUGzu7r!Ri5FNUR9LOM;RR+3g10QjQeQ2riO1`iAf=rV(C51TBcTBY^3mw7G5~ z90#b6FkBjqLnpgGezN<6C);*$bZ__Q7swcYxVSiB@9Jmi6ii0%#)Z`j<~~n zXM})&e-TfKPeV!qloCdhK(Z(3np9*2bNqVw@%8UdpR+FtjnU+eia!a9K#B_4%ki7@ zOQkeWjmGzJ947+gN8rveUsEA~wQ%>$3Yp3D{A#*U!?ePSr1g!6f}JM%6afiI9++HW z;4Z?D1vUg9w2uWOMBb7JPb4=arhk&aGlX5E}~| ze~nbk))Cm}`@@zP&csT}i`N{4P{>VCX3fxa8US0@3ldTTmZYa)nZmHbBd86Xj*xL? zpwlwc7KjnZ^|6F2EGZ4SCIQ7>08HmrTx1QT7iHesTvx1E;5^3`G%DGG#)2#v78Ifa ze7Oj+kBQ&mfCf0t(kaMQ;r1(SfY*6Mkx%(Yp_p|!q<692}i ztE^J&&GPlR3|TF$&a}gwvpJV(Y*c}n9iTI>;8pl2&Kix%>7|090!g01Fon=rf^#y$ z1*1OXgxVgcVva9IIfD&|zbpo5!bh6ZN>Qm-@YM-B#d!Y&144mg8Vn&ObTCP}fA7ZL zhx7O2#zr&s1|nY}s{)gwDa%OxWY;+hJ(RKyWVXm7nu8+Il)UknZ^-&inh=)$N;6cH zeodmeWJ#9tT8WW;&)$iVqmEdnA#hHiY}j+oiFlvyabv!-0t;5*7=nt3C<1zSW~ddT zfCvcp8BJvXmEg1=m-b5O!v{@*f9@qaq{5p<%C|4z%TS4{O0%+E;uDN3@LHzzN_$o- zpH@U(k_Ouyf%>$exi zywIPn8%h`R@*?6%#{7d~e1hBt$iN$@ zCO9*+^U#;AYR22?^ppAaVxq(05s*s&*%xzHRGowNo2M;Ikxk0Y(?PmVvwWDJLQ%X4 zDkpJ}r^Y$`QdZn=n{DgmzQK#8$ zT1Mm114_C8o@g*S(qkP~5Q!dF(Q%VKsiJi!bDycBvSp2R+Lehwk%=Lz+>)m>At9fm z0IBlB!fgb@X(|Q#e)L>pdl;nK;^5=(Ix!a#ABQYbCLk0ywM~3Jf-18FJj;a9tx*mE z)hu02-+wZ+w|z)ra+u0Pp)7xGRGu)gHD><1-I%NISFX#$as}U` zkylkkC%@i>*%nd>w7uDZ$|c&`u(bcMGcS=PXe`BGsq&xXHN(5z(o0YX*!-vC)KVkkNV9M9+;x39YkwV+_r4%Het5aQvA1g zoZJN@HWviL69`@k6Z3y>kx65dWt_`7h~%*C5*zoN!0auYzS->z2BwP_9dlp}oX~P? z()WAiImbHaNhSi^U-T9o><>cRb^10QblaVd?US%=h5n*bMv*4>0(f8o#6!VtJd+27 znP(@J-*>v!R6QHZURV*g?2hGF_Ab~acNi0`C$!ZQItM+;x_W<=>uDdgNEvp=X*)Ks z+$%@B`fik@eF1qAO;SSr6@eUAo8Vhgho>nalK2@G7D;L@31+#8zu;wtnfdj`Zd)c_ z;UKv)vp6szo5XNq2Ebz&B{#`Bk)==CyYDz*&utG((sep!*KK!9?7Q$~TdorlP&md1 z>}}z;)AdQm4FiANb^Tt)w`_M{^?UZf?JfNNv+Vs$9?JHX)#yj;ZSQtGg}wi-l!pHG zJ1DJzCQ55^I*O*b)-I}A+a**jEK)&37oNhp-A;Saw}Kw-xDJS6_u2vR-GLwU`cF7e zr#tBMEvw`}jeQR~;2gRRXy;HVv;~Dk6?Po7RQhUhOc{SRMfQaV?yulN2pVJ4&tmwM zz5`b#Cjo<>b;bo@0K*_pleO}ej=!)R$2Hqd=$hRD4$VQ^?V7IdVAt;lb}#gwXZq(6 zESr9vcAhqU&j#}!4|S=HA)4muKqkr+g0>2gS7@RXg5HBd{`X%7@LD5}nz7sMIz6j1 zaQDopVDoKrx30`prbIN}u1*bUW+=R5{4`3r@nz8N|#}M?_3}upsfsUv9Ak&jgX#;1_ zKW6$%f|R^ZMDt+}BTVic#NT(pF65O1)u!w!w$p#@xs{05K%34IfSAF^@bk7WYyN!Q zq;rgXIE#-i^uae&9cY_7Cd~6b@w}9%u zXq&jx4b9N8Tnw49O)Ba%Q1l?PW-PMO zRHj^*Qtm*>rF_D-v+A|?@YOh_3@2xDr4}L)&^#a+XYv)5d_R@TC*MxVx4U{mVEhES zO)@c36aC%CDDgW3K@qk*cQ{VDA674iFR0ISQp# zLs&2m0081Mmyx3n8<$Uv8VHvON)sdnO)jPwibQ(SGG7f~8xt2>>W)7y!D2Ef$jrU)6x$yKkU!_rBA;YdbY?(PMVS==#$j z%O!I4sg}614-(-3wy>6c$!!JTHfIWC7)Cs^c@nysflIrLz4?MOINndUmK>SW z=#?K$FR6QSMO_-2R&jq%LaZ_I7zIBTIWa}AJLS}^iq$+_cubN6-(*Cge`Amp@q9Az zDY_d)p}L7_lz<_5l#S#m7MyavK{?4Fh-7E0{#qM3P%_~j_bEEPPq&p}*g@*z*8ArS zhj7yBMe~hTLFgXyLdFTqG-{|c4c}wDBvo|5Ot|2h6;-9mfTVv1Wy;H(3`2sZ%&kmyJp+W<=a~45KA+rfQ z%m{u4toeisXQ-QPF~2B~^g=k;I9dW(PJfKz*9*^gV|0H%hB=WQPan04UWr{oYB@u% z@2rTQfM+VDWnc%A8}M}Kb&=1a&g;AA4)X;fUF+nMj47n#p;3$!rU(u7L0GBWzEsK5 zoN|aTtDZ{pxogW+y$q9{Er6ttC5UWq0FphIDG573GUA~!t7*Le(%wt3N(%u>J=M?W z$ch6cXqA691DJZs=Wq3@0V;;9c1Wv*4=>*wA3DFhe*|np$ZXE1iU0t2G ztOK^<=iqPJSMK=%jJBR1Y+46bo(sx)?2Z}-@4lBWaHucN-7RYqAkHTw=HAq&3PMfE zEZ#XiIyuEqmNBXPl%Ni@fp80`N}@TbUVm?|yUBm(6i*M{w+G$LoJ?=8)9G*bH!<|APXTIeA|G$1DgOX+0`UfvFCw>EKEk0juIOY5 zxU^g#h$a`PN)(Qd#M4F5p~WVs(D&X9f(C^!KK;CaB*7XzK_vlvFP^cpk59(WttY1O zOloW^*U+YslGA+_5-hqY<$iFYHIJiYndW~L`5t0Q{B$F#0>)rpw+-+(unU=}X{;0q zxy%A!iB2{f*P@kD*($Jr%6A5ug{h99>qb|h9}(BN0FP3X=siaBjA=FkFVcmM5RYyu zQNovr97f4EGRB)4zomepO%&M{29fbz>^5kXxj8N%ucA0p#xNEU8P_R`HpkgiIp%+4 zi*>*E4(burF{$`JoPP82Z_fK8;Q-?(;^*x7`5F9boIN==$CmRPN2e%fC{1K-^vrJi1&3RCikB^+gqm$Rz|A1)&=S6|@<=>FKagfZVw=(N| zvOp|u9zqZW#yAqIGayl6WAr&Iyj$jG7;S`)d*yMG6x_5 zVjVoJvZ+beVn|i!^9 zxzwCviO2D7vN82pIf^TD5pe=trEITdE5v126z5%w(v)cOvt&u*hGsrZ11MQV(8r_} zGJg}c(M&t$!mr$&Y{+B+veKGMs;^3*)#Xjpp2uXl_|+E~Ud~!^{h`7QRY*#9DX$@a zO=x^GswsKJ1Zst8;w&C6%8P%!x;X*-4J5*#CVujaJsDd{S>br2Dc<$CuO)Zjs;7S9 zQUF}Wk(-FV_B&u8a#P`Diy=^P8Zb@o@x5RMtyas3LgPr?w-vb-PV{8OkM(>szkE)g z(!W{S8j?V!rgBD&`(QAKxp{09AlV{{d2#l3;}#?Z#mm}5xV7>Wp(KAz80w65#gO+f z*m734Z`mA`m-N-IiR2=2oh>*xGb^W2DH>IIquregBu$yARP&MSvbTgKGlSZXO607p zoiH96e;D1hVlAPnXmrdtRJu@?`cwoHV`aFC90XMDR|9Lg!!r;H3nw6!SJ%muU?iq< zZsb>6+Gi3v88|iRUBrJ{xhPlk`VRo&uP5=R`aJ=Jk9FU3KKOQ1hhDLJe7|G{y+MC>u(STQSh8Te z6fA(|yOBXSH)j5g!8~|apf5Fks-=IYYKET696?vCYZ!(g%Uf zJxJ)TZE>w#d!>E9jD~~$-iO{#|7Tb2k5oB70u|!z6=573_BN;ZF@uf&LNbS1CRr|R zb_q!=<@UF<^J{omVJEm9kdU}QAqu_A2wyLHo$l~)ZTjD(b}1Gp(xZNBd4lc~^EZZO z@s)*%y5oQT+R7wkOtkc|!f0c#FY{E?H&ua{zv3Y((#*tcIeQtOrQfQRGUY-xoQ(=e zfvHa^V~$#wCOuXq1y&O>YKl*QAtQq%u3>&SK0JE+`pxk>42a_8=-u(j+ry)B^B;fG z9uDx5=Ts@xGt&#O-oo~oNZiKN%y+Q4eF<%X+>k-_mlC+e87&XO* znZ<2ZWGWy_II;6y#t4#t(k}rY|0;5C9)w!--*Ihv@G47Q(@lF|vXuY#l}3R;Z_Et&j7&nu4Q5AV$)?)}Thl1?iDgZfY#C9@BCfv(BSw~i3vkr( zTt*|?i?_Dq1N@tXA>5HSBAQ;=fqxVF$zQ+5VX!68w|N%2@8MF0Jl^N!Y`Uzjbv3z z=6Z2%Q69AeYtDR6U`ls#7Db_4fEzF?jI1CG;%cd@MEav(&X12eOw-=7h_~xwNmNa^hci~SB z72NnWbOYS`*4D(cfD*|4 zih-vW=Vxz6*7-{ubL;v6?H}CU?*xP>9Vvp|R>;a%W` zwqxPebh!YTXshf`4S?WNBV&{{EM=PJ5lqR#Y$*b#rar0SDCJ$)b8V~-LR627XIH2fsCUFS$@tDK-&s&>gz#HM0K7v_Qk zgHr+B11p6l$!2zLebX@VQ>x5e$Dv4)#gfH*e4_xIh<`N4wWU4A0qEoaAI^%(3;&ur zjzt(V2_zu%Kw<7`u-4^bUI6r~#Ome6P4M7sE)-05-PnrH18HV5|MwjnE2S5S|OhFdQ zF@FRaWD$k;F5ZeL8GGU67UTq7r$-s}9#ns0j6HjD>$$+bL{dIw7V@FFMu&P&4kIGk67I;141e?3ZDhX3bq0T9cj5MwyYcOKIrd%lH>0Uf z(7>1hr!B?}&p=FGULKJX#{o|c);VxvA02)~;Ys6uKKSfOFuG56e+X;JP+MCg1@92wYaHl|k+8NfQ2LzlC=)NjxlIcpoB6Nxa za($EDS?aox2cZW$R&nuS9b22+^=qIF9jVpBPNqN)W;VCginXFg1ax5b^~VmEq{KZGn4y`B0|aH zmc3Zez%c`HFF&Dx&Q_On2>>wDkN(-EfQ6S<9ZAyX;Y4DawC>(L|n^NmDxkp%pF?@96|oGS>2WX~G&UT{;)f-DZE`aeoxgL}GXgJq1|PqI&8h z25Q;E)Si{; ziWHdY!b=h;j|COYrJ1>j7s|*(+?*E|3VNi7inzn`0>=A*|K*UMBJlJRJ7)QmxSDcN zv1qB7{1{no<9`Fv0-c!+_GmC;^Fp=3$mp(8HJ>|H}zvy(z1^9r2)4*5=ZB zCNE`v7q_o}Y2UnPkJ}h6xDJmL(D|uniB_%(Dlnz-C(fi!p+&p+&`xThqqE^ii?pN~ z^HOA?dKtMPn}Gzxu)4i|e`l|M(AihC#6W&oXjTD5nQj_(*)S$a_bId-S+Y31MZo=+~7*fyh$yYL5pQOO@iOO>H(bsD- z-JXClK)B&id$y#o%)Q>h-a)sw5#J}pK|0q@PJe+Om(wZm-HyWmd5#tEn4E$^AwL3F zA}5~AJ?c*B1{~k{5{5U|)dv>)7Ms)1allvsWqLcihdcXSl`>)AJqY8$BQ_qJ$!Tu# zRwQ&bvLT^UDo}=D9^V&33;d;h5|!Bz^SC@bP@Y#eSYZ2wkmVIzq5Wwbe-`KOM*DLu zUVr2rjXt#$WS@>(&yPQi`S`)=xN>;;R>fjdeJT$`45LJkGP)LYX!WH!lo`%ddmmKc zpx-}cgFV07i8oTCl^mQ`Bk)-G*k9~cD%i#8zsYdv!%-bH3nDJiu#c49l6~^hejwe# zxFq6$u@QLhqhC_tX+8hc`gJk;dm%i^LVulZzt=gai4wZIJA2)oZohL_8j4t$>cd6% zI^Dg_ey^}ACG0WY0d2|8NZcwY5!VGO(fN91-!LFI3XCw_%$4Qtw*PJgGr zx3`%nmW<+$*O0}hL+!5=zx|yjr0=l5yWcN}XqogKbPJ)1Dt$iz8BZ>)@Cn&VsJ*`E z{VB4QLVm4Z6!u#Yuf)84FYR~HaMiiSs+o!nbuzvC?a=$0j@Yx<4xC?YAJn9`+u!XU z^n2_2_w_dsK%_ILQQ+}jE!;8tK%@*PMh`CssM=5BpqES0HmX{qmukh*@mJfNT$RuP8iseW5Lr>V%zwe!OUDHx z2NJX%e2o1s(UZu9{BkHR!gq9B2g=U?a0Kv{4z;FWIeB&BsYwDX=>m`{7uSYha8+f2 zkBQw`VHn;k8T6RXU!+1O+@(lgTZ<@U;Ux411{ab5+}cWO!w{U;E5(I0y~u-=Wx`Vs zE(nfHQ`U8-n_9M#w{&MCl7GHCSwkdr?c%0i~_x?bTjZp={$T z3m^iqW{;{X-W=`PZ6xaNu_U|7vB}^KyV^<=e{JwL(_gvq_3wc_*I{Ep`x;TGxKH}{P zosu$4VjZNzlIUxS)AhA=WqHW444qCT<-YDmS^(tX1*M~W|bd*a^;#Bfy-1WFZSIOn=KLlD(-QH=e$4iiucB0qjCW{Z8AvL zgCRk)NS=%wxk@c>-^;kC2M(!=L#UEgbNtCVl8UF8*BL_$cYmwhWg)XYQA|!#@Om$$ z#X<6w{NKlDl~bhh?b-!4iA3aH+z+v~oy3 zhS4pq){gKXM1RH)Vl!CigywO)UpPl%*P=OXyqu9cJ0?^2o^q6O zTkxp6*Xr!FkY24aepcuq?ohA}uOO;3RmL~S4}ua!3E+YiQB1U2cXotaD|cXq?9Nwq z0en)JlQE`QPn?SIOEJYIa#~@1v^sb4OYIw{NJ%7Iuzyj8iOZDhYZUdlv^1J@5P()< zO;jUzo^=%)z*2J^*W?z~QCzv{7X!iRyjL#mWY7>?Cx^6K5zHvv4i61(xJAbYnCyI^mbrOtlc}iL&Wc6i!_)3kvl}v9j>75W}jfX)^223lWXB1a2Rj z$48%@wVpSQ|Gr*rO>^EjdpfOnzG(?y1nDGV;d+(GQLtbhDCs3pT+lz>A3>)l-AY0Oo$dRayzwk zmBN$<`*ST+l~m!Xh`RW1BwhL4{(qOUnt%OlAZ@P`|L|p!mb#ZpAyXj!B>8&M<*AGQ zM#80_{Hx{aptJXtl2yK$4TNgQ;PBy>CyR@s6m#hRYrRlk+V3O}%!A6|Pxd=OJpAnV zrl#lV%MLK{JPJeqckKxBw1jqh{eG|0>veVuUl>U;*;15C&~vag`bn@qWGKduK7Www z&i3KWAG?p+;-Z&bkmTYhxhQs#Xg%J>>+XMd$u{xAfZm1P6mwcYkU7a_`%F%D$WJ!I z4jkT`N(mg0Xau8vOri3#WNpiOTZY`0+N#p)9`+78JN-3URl2=Gf2G>0Qn{L3uSz8+ z{^Dkp_4_h?H?k)l1&l0wCQqu{oqzw8PKrcby^zJ>bX|j2H^(eg@K3|g`35-sFGDHQ zK|gZa>{B)moislbFI|S8a4{!dT#*?v_3}{ibEm`(9!!_EQXDv(XQ*6?>8bK0wAO21 zo<`1fXx9Ppd|w?vnw_cxQcnDJVCjjjcEViXUI(j&UA3g}+y#J?ya~t?et+?DK_gRl zx=jKcZRosdY?2qul`d=Be>UyjQ7gjv4jy%0J@H)A%cC~(BsJI+I$2g}Pe@_EJTIMn z7EoqDMI%G;yE5W?0eXJ?+Q@JjYMX-yan>wL3t%MCvA7h;Dw#vtxJoVO7PLv;P~;Jp z-iLt&D)C^A4?^LKoorr-O-5e9J^weAv$2}mF;?{$gL^`l^=A>eJF-c*@RfeA3HX=KO*<3bQ(9;qSYW@ z_eo`+_a&&)wD{sog_lVaQ7&p+qv>qjX0x@L%nXdO#79J1_z%8E-Rx}otrGmV8a8{2{mU8`6(ilAb32_j zF>0`BlZ4v8n6u!uO^c$#tWjgc@Whb+en&;mTnd$ixVUew1KInB_yt4dmE55!@118W zsCesIe@pt7K9syBo$M=l8~djGh3Wh^67URr=Q?c8U)#CQeK8^F{MTnM?R_cvZbE4x zf1UT6*L%0w;OiDgqwHG@;%3>$M3c`n@s(Qa;-M5=-WWM$^TcQj#$L-u_j8hoxYUlRoW^OIkES}lJCBk)64PLjt0fWhbVjljn9Mtw%CKAR?Akp-O9 zOI{~2cKq!7ug;9&ftqh$i4$Mhpu-oaxIZsF?<2ODeSe&TC};mWB}q%oxQEzpSY(a zK(t793HQAwF+H7*MTKDF9;m_nt_b2}TYoviyoSyY*MeC`ToL4fQncoyC$m6DW`K9L zFeHG>)My&+XT@x+_-QS}+lw}y6y7^HT`-t{lfZeXMU(LMUgY98PnboHQ=1t21i^Y93rI_T%!~2>9v&PdRmu!+{W)I zU+M>lVcW%z7!GbBNPK2;p&7$&@`b7SwL^zx8`ch1Y=`}94^@xx?;d#dh9n{*18X7p(+J8A=4R{S|1j3%$rVy9d0q~W;#3ryE+Xqpt8-AxB zXs>n@MCn7Bsa=QY(s{20GzPN%g6d4zoQsW)b!H-kuu3`#22YiFy#Ry}bnj>C8jl4}%24 zn_v;XzKy+UPlnAs0-w3ZXkag6-)o6`hXDq@8!(&Q z$Lf(gkL??#?wH)vrg0p(vvth4e4ZlnI*P(bK68WE4kJ4V112A=XvCTAtRot`VIZHy z(I$fqgju-EL8KiTt5xgB%fMKBdwX+_a!&sBPwI2P_J7T5Ge-^UT&%KR{qgSQo8Lc> z5s3`*>im8wr%yU?1GM=D;J!JGyVke+rOzjwRTO?pCXELt(+SekG9<9SUcPpb;x_ZtVXVs43#}B`{jCake>kHSpoH#Em zaqYN#<$uwQ4bR4(y3+$|(n02aYlQXHby&y?>+OMp(3X3^J?>HqsCooQMV_a;khJ{x z`ol+L%lIK(VgQegb7BbU0r3((APc$*y#@0rNb3y?;x=Dy+A~Ji@unTqTgKb*lC@{l zjobaB-q~i z!H0zpxq}(5gTTt$h{23}IB6%0iy%P3aIL=@7Dr+?_85-+Cg8qAxa7lfLnK@x;1YmK zs^G@1&v;Dz6+q}89`*WX!_z^(FloK=Lh9J4d$`e{*B|tI{Sqc}8jEnw`!#2awFguC zC4XutMTcppXNQGBAPd+(-^J7RPqV>CdHL8PPZN(>dO0KmvERlxGhJUQzR4u{9Rt;{^^oi#J_ zbND$t8J-M#y#`(mdc~c#@KVeH+Yd}D(|?-Zx+~iW?*haEhCfDY)+`Or2=iAU@0^7# z@EG(fbv-)s7}zmN0(M8xO!N5?w4_pkiUOoe>Cy4=$=S(aR~XDE35r_z9USk#r;)eA zqao-i=-^h~9`^>llC0{y1qQIsbP+Muz}u6-|CzOZICFuO93r7w_4hkf24D`sNPjzK zENFkG^Dk@WK@`*Gp%=D&$|3%mi8HoOkB-jzIa_6ffw!@J8qb$*aFfGxcPpfXXfQZ| zf5%dxJOem~kfXe1)DiYvLw)=}7A zF^78X)!JXdUhR{!!xL~_Ka+zH3;uAJ@uN6kEc*XOV(?P}uJ1siMx7LJ9Tgi;u_Y?D zKt<>lqVl~Wx&t066i9*$TY7sNy}d2Gz1SNfj2*Y1?x}2RLF|Z8&sJ%b$$y!*Xko@< zW#K=V#Lt*^u#NyG=5(@*L{3j<3+6#^0xNJ~=Ozl*D-%7HMbK2_p4kH<9V zPkf54hV3N{9FLjWrmd6^8h=s@bJG+GvJ6-VwsQ$gxMBBZ&V5A&WJ6!apDw2_TxT@i zpBPgC@>eh9%n|oEcyMXLF|3O&Ouj65))ad~>lbzCCNYwHvUqoHb z3W>ET=CvRVU$J@2oDm9@cEZ$Mr>Bf!st#!?baGr;5JM zO-9Ftc=9fEm}g9LQ-4Lc2vfy`v5Fq^Qy>Ze z9eO=h3bXWtWHf?!HVrvzs};}4D>aEgoOr8pXCC^DVEj$u5P!02P>p~=Xw00lL}UO= zK(oJqFv`WaM4ToF?`o&kl0iF2C5Z)18Y#T<77C!W${O?zSOL>OQW*6mo&`ka-2D#| zQk$8CMvO{(AOO%Ifbf;i!Ksh>J@KjDmVq+WAGz){yPNJe|`lal-nU9BL7Hy?j$p%|&yWBBr%x1V#Ywwao~EA6uC1z1Ht8P*L`Wk#E;5o=Uw z$y~Q-FXaZ#b*HlfiV52gPj%U}2}BqG9P{3CQd*k*o-J4;GGq)fP)6a~Y{2HRdgw7P z6v|D7QEV%ICiYTudia@xeYpuCUE|=md7PMesVv!GK`qg(WM+S&0Ha0lZ-uGI=9L`< ze$ax=(fAes*4o{Ixteb^QjLN?w*%^*iOEgR_&u>(1 zcya_37Nja(DodO!6s4g;c|2EC%x)@XCbc8+T?L8pdE~BCJx7xzeV{_Tb9E=(yzAl! zxe9ng!>U@Z)tZ0QJDqCJAmD+BQh(-9a(_rou7`kgc=dA6y=9flpG+)75)w)v7Q*C6Er3_K zDM-@)VqXQeacg{EiRt?HQ%o;Crq@+FWk&K`)6j~U$^w6w$s#74K8vZ$I3bEzMd50+-#NIN zQ=zqRwJ!$IhyrOx`y%t)uYe=))3Q^@wOf$zj6b!e2Ul=$9Y#TVe-2mo>SZdTckqq0 zN%BCx1-*ah3W%4$@R|fynkCJ*Rc0hvupkq?*wj|2B;+S$fC?I%?L3$GwXVvUUy}a( z%*3xU@e)xb_*b=Ibzbx20Cb1Iv(oQoiIYN0W6zEtv=trdIJGEljcIeSY(}>VH?uWd zt&B2LkOeM2Y62)ZD(SvW$i~;08}m+c19jvSDS+r>~^D&sqp?P zL=U`QRO2dO+m$&BnRDz)H9H&E>%%G{25RJcx3&r$20el)lUbgV2?SL@7c-K8Mv5q& zN?euc^B!VJNK=r)O4*Rs}w@83+@ZWt?kN{L;g?BA_%tr0&sud zt|5H1__-*B*GeXCOk|8)i(G~Eks3WQ_NOQj7>o-TqD70m#n_y5iE8L7jJ`^O_X_)D zX4wL!@>=p>0RpD};wOcQ#k|5BA#JQ+*Gx2QEg~I9qj~LmbjG~PUu7D>$;8CtsH`G8 z&Ln;FQa(*C1u4AK(g7I-BzqZVS|NV~ZPyM~0h+oOAiMNQ`S( z7bI58Y3kfJI%c5P0DR4x}?ByQ^%fdY45Jv%=Y}DN?COkP2^A zSp{jTfb3TNXsUb^svg>1W8aK+SKm03To$p>N)YLFePd0&={22^D=K6+g;{^KIlQKy zWs=se$}4tJ@*48?+*onp4(a-Csd`hI{#a`NeeKVfQ`ZBWZ`-YS_57T7?-@dvbXLpN zr6MJzvs@LCRw2ai-D?aVD%gMT`UG%q;09Mq&z$^6xM(^!*V# zyoUAZ4;p~~SI_=7-NF7Aeo63*T+ z_arNw1E8(UHO)edgYVXC-whI9J2*b6Y@r0%ZLfa#SPK`-?Ja+$!S@^~UHpXO^eejE zKnT&}CngLKLqX59F8~{7i=Hki=}iZEo-n7|M=?>rauryF6s$!)Q zwQbjj-P)L$Qa68Ks%}zDLiK}Jye~}}l*+&OGEtS3c+((C!qM7ELk{ z{WP(z{(S9<#3{2$Pi;BU+@x++QfHX~E-l@-%yUZCv2uIOWV&pmZR9fhmTgQc^RT08 zYhRTTOU6U+MbR2C$$XSU$zQPR`TSQSDuOFhY6eloZSFQ{D%I7D*D~l{frCZG)tR4; z)eC^aGY6#(;U`2zN-b-GqGXot_)GM|QK`)N#|aN!sSsu1StRTA~ugwxsCM z#M$=WFF;WeB~iBGraPOrI<^deAPIl~`10p0NJ*58tT>kDtHPr*YgU6nr3Jr5EI;9_ z)q1<}zqkAB>KaoudzXJAaq9L>MU_TeE23Wz&1GAq73`KpuHi zp((xzRa1s&3^8dx1XtTi-C$l=d)ik!jnBtcXTIKMz)TR)e(a%{HOB-d5#9vk=HO zWhZdSV%SEZm2$7CGlijHNX=E-^B+5^7N#5sAXPYm@_t4!DbMiObj%)pGO4G$RE{mx zpx#18PKasKk_Yy~bBu}41}YAxlpP9uMjJx@0i)C~IEOFr?!|UrOLOQab^frs_uk25 zvx{j?K0bc~D!jCRZmB4}D(gD}0py%H9dE#|HLgtXW}rhB%AeT%;F~DN1dWGu-baDxu{&1R@5LfV!Ul=_QTC^ zWbAHx{o$9Xv$&pqeX`Rp;)5NFm-BB|qhjiThm3#u4&CBcM6h9ZbZ#{J|F0XjK0HQeKe*%?x8EXU5=R{wbh+y z-8z2+$r^YAgHF5N@2d5FOYJr5gC?C6T?Nz6?4K7v10(ZhX51eT(8K!z1||l64~q9q z9^S1z!WW|c_*C=X?((jgRu;8c+@!~krDnNz1?l8^_53j z6x|lmt2Z*c_XW^Ean4-gtIKzY2JKe>@UfbbPZE9&j$bOpjVy;Fu4Rr*AJ5z?<($JC zNM0_`k5#OKTcM7Du#L<6mYrL4Sx5mfXwWTmJdhrq&JivSn^0;hppvF%=mx0gWWj$n zFozn8b3eXmc#9N4g7*m!8ct>k=8xRUNy1mw*-fs3t zL+?}CAHZJ~hQbvZKIj%x@HRxVOV@wgvuP)K$D&5xSwM8*!%*Yp9A%kt!$rglx8Ny1s2&j>k5E6Ptyf!A>Z} zTi7(bePk`(zqZd7{iA;Sq_N&%2l@C6sG#L_2`0IY54I1LPD^=5ro{0``Ivyw^%fPy zvMD?0W%%LEo6)F^Q#4*0x@doLq}|Z^sy68B_4=e)$2I@;`e4wfs@?}vEw}MPa-`t& zT?;}S>1oo*(|731Aj(G{G+ud29O&&Lr^TKQ?GN_{?ZMl3_w!-nc1UJl7Oz|5C0A0c zYnqFfBkmd@_rb1_)k~zm%ZM|uRjcpW#W2N!pQ3wLBq0y7z$g2*eb0Z|VD~K$)K@_Q zm#QZ_(_e0JuMVAUziB@luD5PJAD;mgRM0bPL48NrHJtSF4F)Gsv>u_YeiI^`e!Hc0 zHNDyGcLswN9n?v`+w3oyRTlMVP;bdkY)%}t>{0ugZQ?$$R_$;PRcOQh{MLSbqwVf? z2Zw|CL6i7<+tTTfc;bJUm$P(IdPPG;)5eB}TX;RoQs%yT9bB*g13umprOX$2poBEf z;?NlcJv7}!Qd1McE|3;Rj_H%b{u@r!TH1mMHL#Hs+9>P}MQ5Qm+df&^X3sWD(xo^l zN_QwJhKC6b8=NhSjv$`rnit%yp=5XA6dg{d^_%@s&pWxhS#N&>Wj;OwDyXgd$c^%b zT^ex=Uc&Jl{D^{j+fpYD+Hcewq^I^fx;i0)Nn4+^8OGRGJ` z?nPgYB~f8K9aw*wtI4Wx^IxmN;8kcd8t-)`yw{&l`+DtLvrgX~-`ML-jOXJspn}>r zB2X=;LqUaW4(gpocQWa=AFP`}<=t#GfYX)cu4Gw`de zM`_!`?ZbHL9{JQ_t+u5rgBhJ@APiF*=!AZYQ3kn)d9SByRANL=oB2+Iw?5N_3Q1X^bi42?+%FP zDF=k|!?J%1tDQNT?(N=syXvQd{b{fD-ro4s*_Xy&vDyh`E!DDBEf#4SW|ZH8#7MV4 zq;(Asz591)*%JAl8k(Ds@z$ho4nOZ)eeFI~zU?`y+kwI_J=+i-4$4`B2&}{bm%MRNR)U!SSk7?<-9IPsi zrCwW(bvG@Neklt5*!i#(bYl&VTYjm6zovJ1PMD>$X`a{C!d1#)KY39!m6FYME0a09SLb!9v@Ov4+G%PyViRplq*T)FV) zr|BJjs%%D>u5VMP%m>`PQB^^NN-e@qW5$R8R~z%SGAiCXrEDpG{1vm{P|Vqm<3mBm zcXVRoxuRjMICC6A6S#Wz?AZ}RSHPO%F;{=sVwjBDHt|*(_%Y%`%KPjVGle$r;`!hW8UOrHjPj&X|AA z@M>4~lwEBe-d?_xUj`Ww(P%IMQWCg|FNqBV9GK?~NbkuUVmJgya)^l<-w94dXQ43E zEXcA1>n6Zp5aBKfkv}KEEY(W28_O`uU>I$}j(jW6fM2i`&}3}wD}KaOkHAIEwP%J` z2IR0=|4*F}*PT=E+S1}0@lFl(7Da!ltj<8e`2#T8LWNji!4K?GDFr}lzmJZ_ zdxvj6jE_c}37ceS<2l#?ht^zhb=2!}gq|oOiK8>L&5RA4IFwAIrxXIHB#c80=yk3i zmNRl3%PE(J#6;oaGyRM30*@CCN}-Gg-tfpn?aHxyyUcumN;UDwNQy?-kgHNk znP^%$M^(;{L@&gO#Z3zmNI_ODw+5noU7LUpjJKwgIS&+hT_j3Wy$)+rcV^1iIZc-T2`jDx0;3?FuDCqb%>P#$%Mk-7t^2-7%oG7j= z@6@=d5{)JRV=t9%z)wk(g{M+xIw&0D%Nb=BwII@s3>3EDR-!$#Fw}o>7+6$Uw5m{9 z9am>+d0HNHvKw)1V?>AII=*qsSeJ@mX(aV`@AOmy0Qu{P93GuWUGJY=f8J%tcnxf; zRxZ*!Q1MLrq%ASm^I*17Dedvtj*A~_!-W0CC$awE=Hf9QFSjDan-e=61J!G%3fA6) zcEzDEVQU0y6DVg;3wVDo3v|;!+`61wj#gHKQB{rg8;~z!_Hs;+3quZFW`n8;YY{gx zGc-_yFq+uFBO6P`*wTCiK{9zG24Y=NGe$AAd(o|rC@i(v{{ny zKy8r)KmZOJ0YXHd5zgR-9+Z3j!o~kC87o1pSk2v_>aJkB!!n^r928PXicdbBK_q7{ zbiC5oRl;SA5Htp@!+g&Pv<>xwnKecWMj3dJDuXqqQYs%(FyQE~YL#U5*&tJ8%jHoN z9}JuI>Um@H5?y~0__VpvxRmr;*igBHn*eA4>#PK5RYZ~l;tSVK8m3RB01Gzzn2|1| zT+Qj7Wi7q3Op$YFoAZrERcTzxndgOs@HsF+cjN-(a*{QE;VWnpls=6~UWT^NPx3xW zQ!o+`@{)6U!U((Jhgw-QQQv81quSlu&X^BSC9oBozl4906YQywh=`m~aMwK_r`Ax- zUbvO4TMNcHC%Otlt0i%jP`Q9j2nuwCmB?wtBwUVoQL0@4Dry_V#}{VS;Fa)=Tdo%_ zKvbB~%2cWvw@@kxBgC|$C}z*zSBRxUy9NY=p-1$Cf`RA8Wk5n42qf5ThoN^61b5JZ zSM)yF!exJ_bTK(s-OCI2rf0SD5n#0tfUBr5#}Wd&wfn7j9xH)`iu<7w{TT9UNRvni;kU|VAT*CwMYSNe|FA+T$x;H_ z$6|jN!^3NQS6%@NV+unLC5HXJVCYi*nz@3h~AAf!$GM|KwfKRrMc1I`U z;r{mV@!|Ht2#4R}u&s8eYS?&ZpD2gn6NaUn%ygyC~qa;sId(J{yDodc2 z#jegxjk=XgzB?wuQq`tpHZAMvqflmY!jk;6G&qrqr<;Mz#%)>F&Lj3Oc?^(@V?{o5 z@E(=$3>Ud4vm|Me6L?K#Q-VB-o6diAG1X@QjPMh^S1G8(i2XtHf~U$S%kd^qIc$77 zA?maiOlCoUsOfB)O!u1R0QBXz^^4eSANkEzuiRNbSn9u4chXD9@Nv%>(XVUC*|t`4W?RTeyEY>gBhs zAoHA`?~FNSDb2u2W_v?yL)ImZld4Qwe)xrhY*yxL7EYrXB29m6AP(Qcg5i3SHZl*r8=I-))7K|^C;OxEn-50^+b74_ zLIUkgnB|!<;VuY#37qe8&Jo1OeQA?bC@V1x;v4*&FH{UfpW|W?;5+Ac=DKaBnwLGi zta0{AzNc^W(;gze{*su9~@?0lyCz!?%4}ft(2!rsV4~rQnqj5g+q&F>c&+83mC?- znHjq0%Bc(fJs!@W%*leO2;KofoQVPQ;lPt?!tyE*1mHXm+Z^p(6OVxtU8ky-qWJFk z!=Y%=`2y4{dS6v&?W%tkWQ*C!gW$RG5^>Y(H71kcyOtuzaKR%qOVI_m4EXLEB6U_= zP5B+O(A;Mv4lX%kyWE`xKENGaDVk7>imp8;t{V;*t|_H#FFrKD9FHHso$pZbTi;?H zYLGx=OKrt#=K_LYUMEyBFnfkq8Bz3PVT|R>5}q#yS;0$rg8P5rkzda1cb^%H2QpUI zqrk2Z>vaaHLv))#KIy_rdc?i zCpDM&o`uVo)G>d`F(^k7_XQ%K&r~rfR}l`t#wMW2R!8CUkfOreTN?vR!$XgOB-WA= z=gLO`W#>28NYu9(J_tMLw!3nn)4pXfEyMDo`b4ECmt{p=Cfcj0i)FSf+Yqr!H35A?w`cq|QsxlT@+zdai)5L19cLqGfFH0G2^uXP|$d z*Mn{|`UULLq@2Ot!_g2Ij7pArVF1K+a(AAZii5(tQX1QxvMJ) zAVT6*i6(!9FUv8m43o@)LEa2zRYcOvMUMRA3_f(aghcN28opLKE@u+QMWW&I`OU2O zOREaC%<{d`#~0guiWH!MQ!02g034*) zI97Uf4!)S2X=4tXFNW+xNHSZqupw^+Ne*yt-Ey*w8bmM7BA0}lZwMki7E%muzRLed zt&M-{Tk~z)?6OMULT!tCypX<~1Aj{(SExj8UfMT<{!I1En1@C3{B8JR{kOH;T*d8E zW!pw7m8VzUP`-bZriKFfSS1bdlKS~v!Gpj=zZkbEKv-buO0!w3cWZcJpe)btP}jEb zOk2?dP5qX2MbpT*+0<|i6U?#+J)HWvs>FY(Mwyk!aI!i?li=k>XKB1F|8iAy@VZrp zIG(2+_@1 zVvR!U78l2E(G5<#+=m~1h{T}Oe8UvEGu+t;q-DlYhiuX!7n!GU8Ge2dnL3498{vO0 z^-Pn4RM^JVB*{uzd5-ajLw-%J#xhV4C*yY|h{f2A%MM}pEr-U3`Ro{XrxRHMK-jqB zu!&ry%#vfx`u_auv~f+Q+v)3wcEY;|a0O*}Qqgi%PO%gQfXT->!Ka){35hJ!(r`9C zOedKMmz`Bh6_D}DdC6zOo}bQ@XYGGOiC)U4P*zs#SOHSMLOKMQEK4}X`?;7vN(P>E zJaEfx>P&@5PdR9wTIkOW`cbjUBrJm7G&;u zSbOa?d<&F>ENl8jL)jJlp;bzuZU$+7jQtQVze=A=b%B3DeN@BigVdAi`xvUIP%<%r z5;PyS2f%*#QgQvzCbxm@BvMd?EAUVZ~~Gst5cFV(3F?Vh~s|Cxu-`C zl#B-jIHr?xg3_-M;T=xcTRb(S10?UDn$A+Q+#jW)xX_yD4X3KOW%G*Im5bbXuWbTY zNne5dp*BhuhLW+9Qo6X(FOemWemRh{@*9G*NE?H`!|*pyCEjh5tL}fO(*sG%5UklF zuwfy0U!N>l=6(i)u<%)e!+k{7DB(LABM``f&_BY!?Nl++9QS$?s3%Upck;ScIXZb+ z*{z;~w9~6M$hvEHg3mYIUOyas8AhY=?cM$4Yh`zDzk2ZE<>BwIj*efyIeB|}c7E~h z{fCdAilwFHmDRQNjm=j=EjB=c?!*SrIk}=sLLi%AZvp-U{ZXzs?<}pZ<(((a+A{S5 zt09MgM$+VEX)T|ZhAQbo0xnx{pKzC4Jw7IB47?$KWPIa%(jG~W15#> z^%xd^hidZqnxQhc;r-BLMUX!DjS-ds^;yd3 z`*&B-Gg8PKOnRlR1FfgjUf3uD%rZ$Iwn;OX%~yWM0uw(i-3LooHv(A!#kZk2IrMy{cypRcrprtRd(sMNLvpi;A$}3Zq zG!wncLWz>;9;&ZtKc&%Pj10>*Ej6(a6QD6<`~+^sf}Q&46~jxy6aXuLC7@RudPC8s z*nIYR!9kOH>Z^v3NNdWm?Ie2WzpES_?$<6(kLIZ!l)QacJ>7kCR#mtWN~flOw;Sbd zoupuHET!-od?rbIBr3UNjDk=`nxoz55FVH?6g6NXsBDAsmO{%NpC}xbSQ-t+VzI>O z+!ZzI&Jw0%>EW?t_q2LcIj`<>XoSk?i!&s6gtTrkl|MRy%!7BqRX<+J7K|CzFjR=f z8hrQLcij*vL!6^%c!9G;Q&U}k2t{fL8l!ybP~llz>ytT>g;31a055Nr6t2+{scuX9 z6d{<_oHRk0wczOnN)&4jRa{i|V2KsXuI1MI#FSSUfB1%Qj^v9jOOQTV$_%L*W@!42 z5V7=5Fz2o}{B^koJaJkgHfA#x%|}}2snshxn_XpEtP?1n0YPHPYoJSi%dsEUd3Rcb z6&{IutI=BP^z#oZ*e)DbRs%~J4-2(lIE9PI8Cc>U2ZW6`hC&QNe`K*@B>YL&FPDnN zV%}K3sz3>jRNPekac`cdL03ug0C5>}$^g$(2itNqH{If3wt+q8@VNNdnD~_+bOrV}k)&A@(%|WDoyppl1d*!P_?# zH>dI!66{`1`kuyGNXe|^Kyhv7>#iI0b#`0L3l61!JUp)t345@AxDCwj^XsS2J>;0f zexn;SZpz3|fCnUAjqsqmTHqFjk?-G}hnRjlch&q>nqT_9#r~4A`PckT{`sP}4e6c| z&bs_tT&H#)m-?AROKG>J9)(nrl9S7vM-ztHAOy0dQkkS(K-)4E*`eG5pW&QT)n7(? z)V$kbIb}gy!AGWlTRfjag34u?2GNcu6ECDqT9=iqF$KIVU7MatKS;ggoN4`+ddm}~ zjwDY%%}B;npHfl)B^%dm>^s|O+pz7P!3II2sd;5_8gHPQ>bd{)s5AWQ{CGv_rbJ(o1oEAFkDF~F#7+*tFN7c(XRUP%l?RM8k7*-F|8h!QzMG2VX+jmJOfnbFuY8Z&a+)UTF!O(9ZBwXY- z5ZB+aDD^4W4$9YLOF)GxDimAVmCAD_Ri46DNs$X6><9OD0e3qbph{Teopx3qqQO(Y@)#3A>tdf>ttyZVdv{Ldk ztx9Qz?G-|PTAd_nWC9^!=@=t}Ql$@kVU8{W!kO@=5V{ygq9kgwWr=?& zpI_**b70Z6O1`j>lFUv=Xnf&w5LiaY{x*F}IUe`p=t;XBoe>tE?#$(wHsb1Pk^D!V;Lwx51ppaY zAZbw~uZ*HqwrU6DQe4+#Zs97oK=^O~x+sx9>bi@GvjGF8lom^q;X~tr4VsMkR%9Gr zvsvTsbFqe7N0DPGNC9ygIw|mqyfMw+L>?f2Mf?ZM8}oJ-tuhIdc*U6^DSJM-{k6d` zH|W}o475IE8X3?5m86Ht^_qqqB!p|99PV(ZhN6#Iyfri;NWEB3H&Q<{Ofp^r$R}=% zLmXnU*DykzxmqN3L!2ykYg-o_HMc)9#`D&0DZ$I*b`jQUH5(7pRMG;ttxXxwvC&X} zv`V)>(Wih4$y00{H36@sHeCv>te+{YE&<(67R=XD1*PSw6}|Y-}tnB*UChvRc7)9YuaxL*pzNaxFU+(!W4ru zaw0f-iwPckw&6`M$k0tMWK>`*LIB_AH9CnmmRX%)TwYbGSHA0Oj_0I1D|C<5$F=Cnc& zb03i%v}Kz?1VF}0xQSfuhAhV0Yl>D%z9XV8HZ366rzn@;Ej0C-f+z%k{gIFku(Nwe z@gTso8Gv!g5`#CfZ#5eJTgu9czc%?e-1t(Qtp47zI8n|DAW^w8c~Rd2Ug-6_WM&ljwHtqulb{yLT54FE*n6pnMPaP~L>n`z{==N)tiC;K=@XbT7rT$Trhh1}Ew5TLlxxGo-B z+D~yM=*V{$QtDOV8#L}aK1R)d<92T087Lw#*S5_I3zmdtH|%vuhT3XOD`09>c)CvX%Y=zPehd`}yD8d80u9 z;oS`zc_e1C%JZVod$dm7ncBifCWgZhA#;|x?}{tU^~B%wV&*u%ZUFM z+dWUjeql|2(wD{53sk5KEKVixdG1|B&#X-(bHpI93)j!ebKqU@bdDs>Kix@6kGtui zGxS^e*dO7qDxdj3&~%hLFw&t}#?`{NQ0VGY8g6I#XofYwG1fQHXpG+I7- zRq1%tasg?qaX*BE1u?2@93%v{hZ?Zq(127kX#Poc?BpNyu!D*k9$1CNhux9i_8ODp z_?2u0$s2S8O;0eBl{7VpuAu5fTNE7$V}M$Z`9v#AHvS2j?c_%CS4%)OfP#W%1_}$L zLU$Q|d)=x2;r#Q+xuDu|hpg;zw@EG~H|Ss2@SVEf0vCNO#vvPm3_;Ixa`SnItVn=? zB**&L>!y^Apy-i;%}ERKBInNUc1`3+HUDfvfQ{AVwPb@j93WLtKD|#oWX@Z_xcCP+ z1FQh1c9KKH|8y(}cBJs7Dq5#5N+`%&f9ZXHME$$e7#aaHDGQ?=EN6O~QzJ`>`Z*IP zH^Ij8$sd(@#b0SHj_XNpFfH~O1SaBfh2pGxUGPAa57> zs6+@dGAU7328Q1w*`%eW$2^bIByc>sBi|VNw#iHJO?_)S=^L8OqmX%DvuBLnRk^O7l?KbcrME5 zSYlnn2k%=#iD9);{t+dIwOC~T6>ctnr6Sof!omSU+C4Of$WK$Nbi1FjPAP|_M!8BZ z$h8h$Eak0-VK=QuL3BhCx~g~bUdM0TAe%8aM6JLa0}_%Oz@^uuM4G5p_l7m#3($s9 z6Oy^!ctqG|mz&ANucvWh)tbS8&Ijl!-CS_ae1ArEVR?0vdHrLI>^QKyt4XYXH2JSE zNybRc!B;Y4@Dy7dpN)vD{?B@9X5w$kFCmoyC=XG-K7 zh*+=l#W*+Ci1r3l1cykp*i^88xFTp&;bJ+KgWctk?jcc98hYSc`;zE>T%(z!STRb< z?^4{xu8_4-Lg68jyRmQpj*1X|U96a*GM#rWT^A*dc?cR?N-Ba+HRO+sT-xODx}aWC ziAB&kRg1vZV_vdT$!v^%(Z<>GA207u{K%y~PD;Zp5R}$6Z-=W00AIe%m&$ zD4o8v_4@nYerBtGwc-vmhrI)mycMO|2zf&A7izP(e{H!|h7i%+>%BSQiG6 zl(!!bDXBDD#N^x415R2hqa~z(U8f1lpm#~KNG#W0bu!)}FHmEzIhx^ovNOZ9W0=~f zv)kPG zi8m^p!9~vw5erIqG(-XEjn@Kb8n2tIPht(x1|%(LjQpY5{sLc)m=!xYxz?ZQ|IpRL!hyRfDO7l< z2&$2NVbTpDVbS20R>pCLr7O9ktOL|wd}O8yQX zGfWd)ss(2);wmNH!CALBWVw?1QWRu&C{gN>B}P$ta!K2HoD}{fBFKLd8`02n=rduH=FV)bg;mqv2LUP1L9?C!Sror@k|tL zwtG|u`AtrhajG?OS*BbE6Kf`&63_y>)KnLY=2gOFh)2x{9z_{&mo1CBw>m67U3&u zCR?UIxRUT660ULJ=LTehr^n=fXrnNd@{(uIQYun+Iv59@BXvYE>>rFNj0Ci6i9EWKpy3TyUZ`qBI#X|0G4}n2L)BpU0EuWZ7&pPlsCJ`dOZaF91{D zZS-{9fyf2V$*S50XGe@;058e6t$%p<4Mb)*AQ@d^BO)KPVC_j=cWHlr6MSM42S+Z8 zG%rIyz&|Furlpy*j_meG>>w4!(~LR#$9|MU9;yt(RBQ-<%%TIccztWUPGm_h-T01Q z3wgl8R7LqC?u$*>&0#o#s9a8?L$2wOv;Ch+#pA?`h=|&kKS@22KEiui+R4q>Q&7iOgrY6gD z?v+N*YFUyT+_two-jK}YRLP3`(%yEtW<_$_8?5NjkSy(TJXSoOlu~U8M` zbQdAlBAOH~k|yyQnVOI^6%|L*=meOmI+zDG`_0eCuvD%>&QCff0V#5rhJ z9g!szbjM^j!}y@Z9^I}H_~vlx2KpHO{RM92)FzT^>4?pCj#4^WCGf}JzUMEwZvweV z_rn70JP23>Rz}c&9~V?@b}^7f^Xy}57l2}L#vgK$hY!VQKY9o`b1G3O?yZ zt?<^X2f!(xjl9tqqv?{VieTK5wF9YS^e^dGV$}ixFo^*3)@R!ifQBx+kyfKfC10w= zVqy`5a{%>qf8N0(1OG@T7(a~?q&SkvBw4{@%FV_oSgvA!AwM2a4n#bngU25y`A#Md zF|&?0&3iQotZe3HvF2yR=*|gp(`=rvQnNF?;nW;y%uFUmz}UbD5Dfv}H~Wa2c(~FV z6E;&xAc3v&6o!ya>B7)`-VORU4%}D=!*EbWrJn=`YMMjil2?kx3YFYR{*~9W*EE@{h%9bi**}1{52T5 zDOpTMSSn^bBF$6Kl7DHz1K~63jC=JyL#mPPCh_xBe|%-GwPQsTfgy!Nc}e~}2uuaX zo>sMg6>&g<=@}(L-rA!i@zQNEq!nXNOSMYoSu0G7)&07}EDepX$ntSo!I1i_lDZww>5#gGZX)OzEL)EjtEsV`M+2`f9g3pr zxrL`Y>~Mt0t;T6)`)J#f)U*HQymEA8Uhi3dTN2Ma`&h7S0&ypGDQ5D*N`?%02n-*e zx?0WFX7XQ3iAH@|fo6@Ct)TdtiTB?v+!w%wNudw$8A#Y;n}+l=1ZcW{GOiPvLc>HG zpm1?DiH8WcRgP=d(AF%?NPMy)rFf=1ef zBMBTTwF}2ks?-59yVN7|C3KN+Q&=c!K8z&w2}b>HkX1>p+x9fJ!07O~g5kT$o3Y5T zZj9n(wkfMnQFtBC8{A8PI7WNM7VC@SzJL8u@+4YZh96L*J*t zaX8-LDcO^clwV%5g|JeGcpObb7vKQ` z%s`7Wi84)kOzJT~Qt&i>VZx$S1=PGBzC=oB_8S zp+uK|T=lP?UG<+K(SqUHzWn1~|ApMr|Mg$s5gnXunk>)K;YjdjgsPB#sr&c;{9nO# zo4k};zkSvGw(>m>m&#@ykrGMLQ<|VjPGD~GEoFmTy>}p$?;roqvA2?Oj!k86GBT6B z64^76l^tcBkjPGP%ZRc=M)n9DfYbJL-;z3Z;PMlhDm3#*(ag9P3$&G-3Z zUnFsQ=d6~~@(jN<`!FHXb)nT>oT)hacSD|oYHGs$pOutnM*>`@b!drfqSd=A7F_g( zGR4z0?n=g=Jq!*Ll=eTY;+cNS={i=Gd7*b%;e}}xYAc^qSZIkx@YwdfU;0F(D6gh1 zUDLf=A2vOl+FZ<&&3)B7H&ka|9xG6WYRN_G`A(6#NcxK{G>?#EGzT}O3t@NEai4^0 z%8UiRptz+b>c;tOIN%f7C@ky#&K1tul8+;RWTkqG`)St)i&!}-BGV*T2&W!A5cO)t)~MpaOS^t4~h&aA&n zo)#)RpmBO&(s=sT;qh3F{(4>)`9+Qkp*(#fawhT1cK5s@o+#Y)oO`y)SLjYM>HLs% z#3{gNZrHfZvwZ0NlTQ8$bi*cx&uj@Y(t%1akCPHScm0^5?P2gpv@lveQ7rl5llL1E z+=CsNx}&++iFkMmyj%D5=?M0Dqr)fTK6rRb!zqAOP(w5{9*`x z0Mhi{p=JKF#bFYRc!L%L=Q@%IN=^Fbj) z-O&r&o7<7r;_)w#>wXA=B!Jg<(v= z^Ow{kWdRQ%L5=4kp|A6`qGTZHP<7y!ny6n*eT{IsTX@p1x;_uSE|DkU(Mubm)S>f?l_WQ&5)}p~GHLl~o zT+}pH>oh%3j2_$vir-_B8oxNabdF@TMjU!<NL&W9$gB<= zROHqIds;O4A_kJ$2!|bfn3r(4LMe@-Xgnc{w|BT0D7(-V@<@gJ>}_eoU=1nFTOX-S zO-ZnYzB(r7*9~)u=$F+>4D6mw6w?)|bVX46bV&>6WRBf+@tye2-@=nSRvY!*qMM=7 zZSv{mykVU;jVj*)!_h-wPp6gmpSWDNqvI!4Vc!UDPkKHpp+5RLF~*wxO6Ft9yaO-% z&D&iXMWVmFJ|+xQsJ}D|C3?>4XW}3f{Zn4s=02%+*|+ZPZ7PBXE@=rrh5O#HK8sZ4 z8ej2lxvn~fLrgaOhYjHwFyWo&z)8{jjHz9=Q)H)Mv2{7FPD#BVEiw4s^s%UmsDC5T zXx|d$(d%P^cJA3edTj=es!yBGBy_X56dNU7vZyVYL)tV)%yDNRB zO8VxEDy3Mr;Fk$)aotjxwJ|M0x+bBbsMEylM}(L7#76lFcfTr;DX1yfK3C*%!}hQ2 zZhGxBu@)yYARv#k$oiV-Z729HIhN%cyzW8Nj8O-q6J#y2tjP==Z}f#Lp?W$bJ^Gs4 z^w91u^?RXZj#nMYR+cjH>w1yFvg(wSzpT^LylGsH)n0XTC}+KxZA|d@O7&19+?FXO z;j%u&scrqDz^`%{59dTT6KC_m?T6TI4)qalf@G5A7__=P%Qnah-IJ1tvkXlOZ|$7c z|M+y7gHuwjit>5TS#mR_spGrasC89zq;AQJm+^$R@XeJ6)HEJgU6JZ8dFwT?LDXC0Ic5(BP~c)>b%Kc}>e9TA~1Z;>mtm^5iQHSP`>#~&Y#C(!T{tq@K| z|3Ee|l0K*VKe&G8{B9DbzjRIC_$m=?TFj<_<*Vo4X8C$-cGj1fGL5c1bjebT=z)fi zNF;jw(V#`CO5g>ALVK#Y#?1r0+iYW-irnw$wQ0(w?h>S4t}vlryCx=m_hfWJ#x&=% z96!&y8ybRFc*nGZ%2)MEip5kvujlyQsHo|@MZWQt;NqjdgX44#h{38Ex>pk^7K8jh zlw-#n%e)iY#8YHPBC}ZBl!b=X zrbEc1Dqo`G@Zx6DE21Rcz>%LLOnkb%^izYkNM^*zSVgF*I0y>ue6)s!CzYCbbYC6C zQ1PK(1k0(a8onfc`Q}P?B3bl8n90$od2m(?`f}F0Q1!;b3O$@CzOmo>8XeK%k8#Fa z8w~8m+V$LR#7H~HD|t+OnSMubVfQ>S{2=&*D*x_F39~+nIb{LSz4j&?nuj0+Uk$?Fq$I1Rjyor zKDinFeWTb{Qr7hAPUNP6uwnDf0oMlpwpVzL`b@u4aEg9c7Scnns~(Iw;ECP(@vhxz z{CZoAvqmYlhU)W5N7IP@JE>cLr%(692Sq$vdZ}niR!fqo><9W!vY58zj8s_UF^xQJR8;;ft**RKaDMrU*i!U$VlcQii!_LRkBs)2$bUHLW44EN(?@rktYj@f@E382Ut$62*%5giG-9_;bgA%1#-^f#Gd znVDg~r&`+DTAKS?mQP#S`dbeBTRPiXQZl;=hBmVjr=OeN$$Mcyy`;4ecKmogH4I1H zkd6D#jpc-q=o{pv%c3p1NAZ3v(buQCEiER^(R^74=9hf}SXuS9^yitDZdR**9yH}Q zD_6h4_+@s#C*dL$qW#MYg=aL594ZO1Dq;7R#BNw=7kK?~TpF_3I8G zGuC`%!ziwx<>WX0ZIjhwT&_foNo4W6+?}XTpB0m%W~qwB4+scT$rbv1f&;%dsyx0J zsK}1iEoaQ7xnAl+CMMOhKJQabtibwK|1`-u5nJL(>8hD_u);FwSDWjOj#!QFHP2L*me(y!8ti}af1v6iOzUzv?<*^{ z{RsJP*NnxV-C9eRWWTyV(Ry>KEf@8Mknzm`w9?DkPVtNTUzsaAljSV>sQTINJ9011 zIakq>m@)3yIfdJ3c5Rve&NF(KistTzrkBzh?`5^v&HW0vkKVYuZqqou*2vJn=Wl<~ z!LVGIb2X-Xnm+2P2!&VwwLa3afdy%j-7&|D!}nWp4wSXm`o|r)8fWy`Iy`?{qcxv% z)}b5aO!)f0=sZn|S^F{>d(`|=g)T&!=`S*OcP-1CMjzGVe#?LNTX8zAA8krP^T@)G zmaDB<>|Rc)fzVTp6u)lMZ%&k4+N#XhQT6xRQ)%?X6nERDMpsDHm=V1zw2|~`L}OAv zR#NfrXDSxI%hpQk>8U7RzPS*#ZT}!(O!yehp;A|;(Vd-rJHO1Mq*C9+_{~EW@a?p# zmg#>jdL;?N*s-cS5>qFbO4>rDeE%|}{kp)|T9TvhLOS<1!(GJTnRPp%NxU&Zu?o50 zwLp#hIiL9#51fBkf8?8ujGXLpIXiunEj+<+coIFgxYV27+g1gh-R!!=aK71lBktmL zjAp9IG$MEuAr)<{&3oH2UwX2AkyNqaQ_breb2>4~9IKm0Q)}vVr|u#X=!OY~sZ~Dl zn3cw=ANN;!3@43MR_0E1`L;}Csb)EfT9EIxCZB5zbpN_aC%?=&bt&lE>|eoZC7rET zN@28NIn$}uHT`wZy!vOdJXia!N4-z){au9ash}Xpog0a6H(vEJJ8|2uMTQQQrVM8$ zAPJ85#s4M@I1Whk_Fb~=QCPF++dV=?Zrv^RHR4XKzwY3Fyz$s4;Lx^veb{d*O&Yz- ztNgQRcx`{$|Gl@RmWAa;Q1n&TZ@<%qeDzK07)M+!4>=O5vi~l;{Km6hS>ZQYL0(vn zMjBi*xGz%?kxh2Lm})2B*8YLdH{(9nkZkV{`X*+coa8nlFDAbAS=k)KdRy9(1`aa# zu9i%19j!)fE*8{x8Ps_0oj!R!bN_8|B(r7lr|Z%MF&0OeLnjF%LqCQee>|w@m#rQ% zdVI1l^IbdFbnkCPk$BdeKdLzTGkcXLraeYr6 zyHwdcb0c{z!el^Fp7%z?2iGp`$rah9Tl-W8ICc!Tw9dL1-ZJNIuMrC* zo}Bz%v>&ZLslK$z#5_{prIY3x7C=cAd+ahoFV!*oAj5PgVou% z;rM39?_ZP4O@Fsajr^+)12fBgM*d0}`89a|UDjCnIdt0f>btUv@_Tt^#V2ahH~Iqw zmg7ZylnFn{xw9{|QZ)1C8L|0G<>4ueuj-?dtDc$@6qJf^zxL)P>l65zZT{t(PQlRJ zSN3}z1BbT{2S5EiIMrMEG#+sF;dIR>G%J7Xmm9_8Tjp*v&+DdymPymPSfrBmW6lr3 zgQZ(%LqC5HB){P`sI9rrUOc_?Olx)--P*4|$ot-;dsWP^${=zj+Aj0c?;>a4=)2!d zEztYdpoqX0OCIW#Q)OL&8~qQ>Yn>C{NYqW1FfQjwnf(|N!`q9vaaDDsHL3U^byWO~ zu|WHx2OsXRRDXV-Qm@SCd(DC7$Z_J8*;(;~TZ7$4nx;ZC;pHFJ4_P;y#7{3njc;xY z1Zfb=f1o-$Dd?P>+OYC!F^pKW9Sqa9fhs8LydTYMXDen3bLEFo= zgmxhv^Xa7uwB-*>I-K3!?+(1|Es??g=;2-)yda~t2j2HrIhRD=E!A}{bQLu`@pW*p zsX!YQR+;o97?ge*Fxe8Xk0RTX`oo^Qz{!?E8b0}ea@TJ3exon@uA;lju+N20>5iEW z1hdY2X&Twl2?@-Jf&l?F!t%KfQwV`m*`jw_is!sqN#doEHPc z<6?nwo7yhQp+2tUhw`p#u1tT5c#BtEoL_nKXb3mX2bbO}B48lC6W^*!#sQ1^ShBPT5zKed)tf4p1^n;qY>Ufo->+HN~l z)_*)?Z0Y)`@qok;@+ReUpkpk2aHa+gA*C2Bt7W1kI z*`ahP?%$U9y_N*76U?f3P~i=@ujrFy|KEMe(GIMkDU=@vs5f@pu}6DAw> ze-|d;6W!6(@5bX-H8Gu?i&p+c$}y4Kx&FlL$1x`XS($YdYrW87omYZE^+@6%gRExr z6LizWpgN_-Oq`wiDV-42)YYG!+#B}}x+7j+)*>YsDK`~vRkM|H14nRZ!)ct1cUo3UmJP?$HHHJq z7OzG(jO{SHrj;GAJ*GGg?V;j&-Mna6R#t`<;k?DtF!P3rMD6>hD?P~3te5(-(OpQJ zy0=E3J=tEh_g~>(KwKali?SwZ?0h%VYqK>XGZ|*z=bzAhS^bKZIfZHK&y12ia~kz* zKI(v4ig}_LBW3GRyfQK)hAYt-s`3*Kw}U(SsXqJ&<18;E`c25S@Qvv+BO^=pR=Lrt z5qiAprw^SRd5OwmlX*s>d(9{1n4@_qwJ?5$;3dE9uLR+RqIaX+-s)PIaKr}b=picX*A1ODv}x21X{{?lnznE6Cbmfr{2;9%n$Xec3$w5 z)uXfZw&6<{j^KG5`iR}Ha1*+e)BF5ICi>MiqCQUiHkEjnAFowSykDPIcvw#43-*2E z9=v{&Zs886;Ltm~15O(4WYQki;|>~05oY;&iLn})CFz70@*J-*{T$d%VrKb~QP0IH z9jX%(!K60(H)^o7DlW(61^8|ZvzeUMJJrUY)avoW%VjCPm1rw4@Chb`-k4@4qo28f zUKQ(85Ttu;Z|T8BvglM`*dr>Gam?=mn3tllJQ6kK5P&Jp3G2PHv70O zCtix1pYxp#uLvquZNJ=`wz+OGSG4KzC((##ITbEB4+fzq4mQ@?86EL!$=w+qzl`I; z3(V>yBz^V9ir)--^W48vzWOR|_~$rsE8&TWpZ07T*R4a5XW~o(wp`xBuTBCPbjv;1 z2Pr>NXSY&TmX69Q=dSLN| z=d%pfcziLBQWUeOAmnz0~N>&9h&s zSlf{;8rJ-zzAZkf-#!`RGImCPr;~m-u!UAmleVxA?kuXiVxaXt&(G0Ptqz*^dHEum zfOqX_YwootViB)ZtLwkdM_G$is~LN-9B_Ml4xz?xxQ{SV>?1~%Xe-_Im_%vcYOor6 zed%zWJh0)a|<~x0n+o92YToB|o26Mb7RD?dLq9os&TA3pX=Lo?ZLn zepz1oGmV?OwZbdz8m95opYCtlw7(cx`y0kjyp*J$wL9|4ExAf${zAe$cji$~&N#u0 zN@*2}kbw%pm0~XH5b=#03-1qKG?F%*q!f++#GGWVC;JaayQ})o@`Hg~OXZ}D#OwY2 zpLaxtVw9YGjFJEtEs#|OD^9#MAp96a%GpYwhQpQ?#&U%^sX&UzI$BQ$Yy1bZH9s5CCwqeg@BHf8 zdVYm&)dR(EWi zYt*i08gSQqtWuFdjiNNf=}(9{p*cILD;ja8u%{fYb>ni?_xh62GA`~n3!&&yuPG0A zFAck#2foF#{SnSoWYOIxlPn+jrsm!(_>j7PtazZ~eR1-K(e>N)KdObetapQD9VH&U zSte7kv8ggF@|oH)?zEJA{Mhg8le@U2tcxor$~Psg+0KE6J|{BrtBGL6!`o1&E3GAexP zM|kj}1#))<(jr?%EQCDUhjT>J7ex|{HM*h{Xgf<&uURA2M*Z_`Y{#25ozgE*Obu*7 zn=BJ@tFD3mdXM*qDAwf~ADbR3?a{@f)s`R4IeQHp?M%_9ejqblcWSI^6wN70%vU?T zK;+ZQ{P1(mO#3@`LBw3U8BQ>7ouo+H5MA=#fG?i#E(lbzwwz;#ke-NEl$GDr*J$}qJ=l={YA7> zvQozrBnyQHcS&L4Xo;w~YdJBlYKYJXhyFA+JB4!~WoP+QLDKF5O&wJizHTK^TUI?3 z?*R$>yG^R|&Wu`L@b>oI`@Or0Z#x#QX)`}gRcRFZVf`YLN2u|B^Y;)5 z8&d_k2iSPH`J%ITR8HNx=}Bk$4FrE-nY`VN9`T|Q9H8>mTv1h7dbv1A9GosDK8ChB z*g)1+oh(x4Za)1v=kVrxjke!<`Gs^B^@R#IvJOHox=+KW|?#>1vOW3l`O#@@5&*xQe%wY!Euz1HVic zJwkfDd@TOPymG$K9bx|N4du?M6hG?_j)(o>%{c?x+wndL{8RVm;+u5olBpvjZlJH^ z+!l&=;ndRziqIvh@Ej&|m43uJDXd8lmUOfBMe7|#CMYQ%_nGh&*Qz@y&s(XY(&&;@ zGPBusNCF&E6V+*RLtE!j_mDXHT%1T6kq5)MsR|G7Vc{th|}4D zH!<SEoY;s4Ps+!h-MZe6(Bk!B$Jv=j zXMrat9e+=kbedmznwxmUltycZUK2(?c$cgF)$X+$);OhR*g;d}eg>6Sy@SjhJM3IX z-pb~0&nXZ2tx`{SsgLh%#@gSbaM$gdFzy^%3`-`Q-G4cz+7~^tf2448{K6YXLv$5y zk0ncDFqTLYTUiUG`ux>sH>B+>H=Ul+ky6?X!2!aRC;G2?DV847B)=nzpK&97i$=&B zT$I8=kCMFO#A>4;3s3H>TpgiD7MOO+^OOgS7r90Rza=b|I{L5fr~Fy4PLRnRDmla}ef_y?pQEN}WZvu7@28}B6V85K zgS`28OKSIom=@Tbh3nI)W_xn}YEhvN7A|RUOGG=+c^|(wQ3`sT(9ETKcy)a}s*AsA z=OO3kTJu@FD8d=1<_u?@HfF9p`&7ku6JMDlpX64D$9+~iCJZ?IeoVN0uQ5QDY3gQq zt+6(Xt1Y{k6pxs;=A{xYhM^$8rg6r?DJ}^?#cx8YS9_)2zJ1guNx|iM?fV6vZM49) zX8JpQYVNy}xOb17GT00f#no3*3Rb!;KK46TB+{p>1U6V~om4DjAGO=53EbGfx4+&L zc5?X-erCptaBBDEwZjworMm-6RKFjcev?E#TYWp?xyNZHZA6ZInOrdOLY8`pAfTj8 z$w5qO>7lDzVrdp_Ao|x*bi|pWmDX2uyA|QCjzihs-(JUeOAJwIjKu~O0-5H&>%|f1{$X4p75BM!-OW*KzA->EK7iT{%$KPPw({H^wbeSps?d+fl5&CP0 z6p;+dy;Atbj+S+Vptw!I&B&RsB&&iZmtUvWqa3GKJO4U=qcF}9zPcBg_BT#=oBFQX zrFeroRoTz&<^?ux_V2on<%kh|4gF@!>EHIwz@K==V`rOGSujeOV0NSM!okTifuS^a zm<;m`Z7{Q!SkHDA)Oe3V_iuitCziaiQPD(t&*Q`Cv*T&>>2~_rO7GeBlHA!3xgL9$7yd_hwAqW@KXhDw z*J(6&j-T|bSBzWFxg3oN6!l&vQp*!?$J%4LxAdIc%^n9DUwsx$AM{sp<#m*53wk!g za~@BojJ$ACM^5-ou;(+cA1r*|!7p+oKA@pIxOs+-A(HDj4!x-P6ANo<{N4?gG1?mA zZRCkM$Lk%+Z6x*Fw}J52g!maD*pDeL#!Drk5goHuqp6Qo$X(Q8c!lp5@;+)I_9S?z zOTaeQ{G(Ft-LFXYvZl1?(7UCCXV*2+c3K^K)muSPf5zG_TvSKxP$u$UkK@x%w4NFG zbAPC7d8&K7;J1pV@NEkNxzuz6M^}OOxy()p-)Zl=Yc3}VcOO$9DC~#QirJR*^;%6W zYlJOMOiYjri1k{#Py~K|+i%k2Cz^F%v2C2OQG^WjZgI;*X`V&BI$cJ?3J1JQc? zxYO~Wv1nTRryd^7%oW7+WeZI{A63_?Z%EPy#Las$*52-ZVr0cQrNCFy=j;>W8-4UB zd}CR%A4{zlrv>*b1+vLuhDk6gyV)`@=JO||nybkI`BLUmd7iPEl6}hkV`62=%}XyF z?$tgTHxn^5IXLX|1yQoIw5T7SjoMe-?ot;13w)NJMzv^h@BALc8 zyQd+k_Dg4u4cW2hn_{8qU7JMRs()m;8$Tm_yFc#7iO@XzgO;uhOlI&R9ymRi`kY*EHA>1RfN~h0Ngrj^+`KDb zG^v@FaOg9xqlFv9h_8biubR6{@eN)~!e!`*gl3_NZ+Nf>i@MP-ocq(kkO&Z@eTZq*hHNF12 zh`XtVWkc`ly=B1wH_zfpJgw?WXdH^?UNkkTr+TGs3$!)kuf!!M@Of|6Kc%#N`N1e{ zb)nMUFhYg$;1%!Ln`r{_Fz_*yb!@nZ#U7sten_*nddfexrT2n1(K9&|?ujao{#Ts2 zPpTZAx})2yQ@qw1nJ#^6QMFXL$a0fYN*9Ol36(up)o*lFKOXksnD9`yKR{1VpqlN2 zwG`fr*Q^`_^wZh<%C+tpuZau!GETkWEO=qV>H1kjVwky=#d}-0oFyf;{&|EHUU^z_ zTkr$$g@6hd$H=IxX$x^iH~sAbUN)^?b8xA+h4bSXw)f{EBD*@QkLFg|x%NU>6xBN1 zs2h1JlTzf~_59r|852(G3Q7^^pewi7UO#TWl5+nM2`WLfIFKgu)aa@1$1Xua?B6O_ zYHIvsbJi^au>?=UugNDUUSQ&*)hwTk?JCz|o;FJb-`DQsH-EZuRKHh7{6zl#Z!1SH zT&XMbv}PBpptm4kg<<-1PttL}niN}E25l~*$*<``~ce@-V=(T-{6 zzd7?zfpD7BKI3`8p%<{e+qQU!E@4WYl74G_Uqi>P;9*X~?UV}xEmwMyh`JTubJ8;_ z@=eOu_0gHGC-#YW?5XIDl`ZppQYy1q)0fnWH2mq-f05UBYiFcrZz}8R_?|ouJ6Fpl zx$K1(p?U}N%Q>>!@u}4Y3pBN*XD_IF31hz{;7Z$U$}rS|Z%=q4>m#{8Z-N%8wQswk zQO&Yw(oaUCzhM^{n^v2pZNnsDp|^;~eG?oCHQ_9FC(D~L z0^QC;$*B8|jt_7xgWvc|yng%#oyA_O7@1KJb8^te6Fam;X=qQ+v3qBWuwj0=yp;9Q z2MU@LE$*&2@qMw6J{WN_QZR;w$$#{(Ckt=l9_O@YDlJef-?{1R zimmi5Oe`#qs2Mye+b1SDq{+}m9h4VI@P#w`6qN8HAVTahR*w6+^pwEL{@37odb{`%eYQTM=!VeNWs zCZ1VJEPJj7dF_`AdLN&trj;Uv2ccTQQ|4P5IJnT;VH6#dAWc9EO%0<+pd@@ERF#`7 zviKUA>x!4@3wA-&P_@FuajM}=iv*ZN|k zmbZaM{8C+)ASTM-`B`J)-ZqR|kIE-_==K z_L(KmD*E_6&G*U+U%7ijop4_gHS4%P`6(HeeoOz&1H7+4x$-DG8YT@dzFL1HU|%x>SRsB$;7)Ji_Vel*0xtl(&rQ9k^5UEMD!E6JQS$#Y)8<*mPzzDEHaZNZ)L zmu4kt{Elk{>-mvpb2G)D1^{KN5Ktr+wwDB=&Aa4!k*1YJ3BQ4qKYX@ zQh?JVvu{z%zxRsB>|f9Q4qB?A2qOIDq@ zc~Z_VFLLw)ZD#Yc50%9uHTp<9^lz*;B-R@Vt>EHve^@>abr}%SPITu@?iR^$4P|&8 zIptk@+g8~CLHFKcL7Iv!GsKYR9#Z{Y+zw|6hbfx%T4u=?w|Cwq>werlR@%S(zZJ?k z{?&B#5Xxx}OI@aK*pXyr^v^OezS%cOcv|pIX*fzcL*}ZvOijrP=L#JEv{|c0uBMBX zcYa-!*?KD5rmu!;Si<7N|8!)`=VF$I6ybLk^mqWjsRKj10{K3nh1&BJNp2r@N=LTCG=}7=n*ETLoJ4u-UlYa(u&|0Dt}Ns&`pd5cEpK9BVPXDJW6^>C zVqsx}e_261(5oz@3HB#wJqu}ulm7=B+N4C#LMMN)Ng%guq&#*nRGN*vi%`La-1Crh z5MK^b3sFu9!>b&mDk6{-hCR$kD=!S@xnQJB9EQeRq#ELh3Jh#{NG)tW$Sn_Pjqtbw zYb$xcAi)9#?R)?l)=*p#aF=e4Ac5-hk@AQEdsv})kJLc8y29Z19;t#*@`YjIJyI8O zB>)DM0;C!?H}s+aX@y{jgEhA}1SM4e5qT9Neu*H5bPAEAh>3W3OzTeg=lxMW8Z`P;3$MJ|brn9-#aH@=y5%!}>4apo1E96)N}u zmQz`U<>?PdZG^`L3@XK7!rV3tABvHhh!;mNTq*%(uTNoEJw;GJktLu6q3|O2xtu6N^IueUSsDE2;#gTTOuF z*-GSXgvx6ew5mXlyh($hqzcs0Iui!kY5<>dVF<)Pa4`%E)nHCe6%491NEK{hD6R%+ zi@4T=(P$y^TBJJStOW-5S}=8V5QdRjq$)NM#8QX6hq!YQVy#1>po}_TeTxYU zWK+rj!~J?Nb(tB4-g2Zz^RH04)SN@RR&cx7sD_-EUa8`f5G^lZSAQA+r~D6q;>URIMu@? zg-#oRM}#S?6r18+gdCfIB4!OMtxX`UL^~Kbn?WWV&M?F_gAqbE7%JRwDWH*Q&?SD} zxc}{vorkcA*=JA_WnUN?K7-Vb(J7@WsJa{oF|vja>Bn1W?=2e66w`9HveuFnC-+&Q3C>AnEN zj%9dE;|oX@@fU{TFTl-pEJ(KpNtf^o?;^z22?7nl{U<jXknvSulP`hy-|DkTz$U#CVBvq~Gu3XejJF&t`*(vQ z+I#~B7e!$6yBj#yP=%G7UqRhEv|z}=0Im@Xggs!x=s>r6kd6pa7g(!t!6SucdcYo+ zhgiQM?Ga%C@IdA_kTZJ-41FPZln{L{@Zuj1D_qY(_)ma>jR!UNBJB`Oaqs~6Is+0& zvk#bFdP}36+1o>~ zOgRZEHSz;$o&-tzVBpsb2JRz*w=u6sNN@+A08*a<86=-#6gntt3Ygg=pxJo<_|pJN z31F}wBp`}c}5;_Mgh+$q$Hq(Xjwp7_h&$0CzoJ3Wd@Yz z3mpu{7)W4%!F(2Yyvzba<1E;f!B=3o#ZN#8@%;q0nSB3Ks4mOc6h_EiGkwBFqrv*TKzi< zhAn{!foNE+TLSqbV_{(Y1w3@UgyG3AFqiKD7+iP5TJT>g5C!5Rod7Rel3`u>zL;euG7Ot6`YIz``dOlvaQTu>bxon!AG3 zK^T33f$|U7J=))3@c9GGYQAH@7GXP%c|}4Bs~~QRS=fT)CrGq-6*R?%IcRegT;sni zz$30}z~93^FbuAN-QctdgY-H$@IUuph}{PV{{1>wU;qnZ-3Hg6Kx{%Hh;#!ejCiop ziAM--sDXlg9V*>GK0u6SXgZTxvGmJVKc-Q z$ks^?2FESrEyS}MFfc0;l0ws4zzqw;vJEoMx5Nw}p^R;C2oSaypiA5VJ=*l(-~U4< zE+8=H9T2LyJEX7&OgnZ!Uj;!Ic0nbg{a`I_7xWcvCsB z0|x%DAfY3$0&M~zIV89bq9BIc_rd8(Iu#z++6T%0c>{yd0f3nI7(hXd2OvJE2nNfp8+%R3owM9fnz63 z4a52w=&1?@7<3qkNTG2u)YXJA6bj+X`cF-$Lun#dIbe%A4kBWR2OA}iNaTSPL0&ND z->rMC7}0+Vp)3ZQ%!mGNm#ee|o3bw%VEd)v(;rj)Kas)~Xak~eGKRrZ*@M%L0 z2TU;f4$A>JC^f|HAPh4Y_&NfEA})aZc?=+-TwJhj=MoI0cqo2`jgkSkX<{s_M_gD~ z?Eh(QsTJ5v9v_7ZdE$YI-h2O#GJyxymHGQWMF(MgiUA8m3o*2bkFr73kzroxAQu9Z z4#Jlbh7kgk2I4X`6hsb20%?c|p!+r;dj~?0j1mJZr!x|hLj{DOk^$_nf=2|LA$ei2 zCj#|&E(k*}5jX^PA}}vv(aUurmb&A1qIx$KW(Ix={vlKBgL_z`<@0EoWE_vef zt8FR?m{p?y%Y7suQxh9wNFRKTE01rCLGJq&#f zz*#jFSS73lbFgWlnO3l_KprT<%}XHY(Kgud(IqeoXBdX*OQ_q3x$*x29(0QurHA-C z1uG5IpkN}4Fhnl_58O1s19Si@PiesLx4$s_q5+{*6GK9@p!-mim{$~3LW@#D++)B1 z9YjF~(&A==!GjLePM;G4v``Tj2`Su)L`V>7oggerBT?FjVo?|}k)UQXk}%++z*1jj zVX#Ai7FW9gl`?=n=tE)5)L^)-K|&14(1VccO<^U89=IK}g5iuFtipB=11KoamV^Xy zWdODm_87$xVe|m=N(YHCf-pKgVMt>HIbV7VgNrW-1w_dN=EwxViX#(XknGSW7zCO~2%yR$&<+u7z_&#+EPrAH z6A0U3U}guIQg;0h@F3T2Fzeq*qJ|yJdIX*UVBD;-gUazQz;Np_2;kc)3}u(WDMoY) zhL~+o0G2BtSifD2f`a_7fc7dq#=u>iKm;k|zDPm~XK4uyk#o}I1ePCV&glauN(YBV;hfxVkdpqZz8V(_ zg@dJeE(dU-v~gNY&WX{Cln7em0x=UUJA{=D<`oIm-6N%dnz%t+1GeYJC?1pw z&Zy%#`SGCCaDpBKIwb`^|KLF>;~e{)lPoVv9jEyDIlaRW_$oixk~bD4{IAH8d>}B# z7w7r|K9J{~#B(Z!z*TdK54g`wJ(nc-QFn0o-=0%0KS~3~H|v~81wd$Lh3E7@0HuXv zReesiHKgFZssLE3<@343*a~7$5d@Oc;JNfx5Cr*d^qh{zfWg0q91=nxNRo+j-B}1& z#m$~mpAZPybK#tN7J;9Cb9i=1$tnKd$7lQ7=QgRrp!x*|=Y%T)4j=!?KVpGgMZjTr zhYgjApsWx=1ejMkh({E3SQ#-4aiSZR>WBsu z4Bs)}zy^c(H2||5Fr-`qJHbQ%hU05s>)e!v;f)L#0puVKVle|}8B7c<;-KZlRA7iz z1)b}p4%`|_0JqH=upB7?;{2@x!-fP{53L8om_8ZBzuOroQW8u+7{YR+B-nkf)-ZJ5 zB_oI4*MaS7Dg|sfZDBc93fRy&z_2d`PUYQBFj!m%XC7`>7&@+lT>2itz$pzNDh6_w z2F-jW9v0Cr$%vpMX^>MYIPqX|+Jk^c<96UNTn3ZIYgn$A0cnh7!oVsEU_2LwXR^S( z$a@%8WijX7Vhqqi+HxpE1W^SHpX5N1jXuG^Di6${b{IA~$Oxebc@RV16s*i)hX1U> za8m)CWY%_IP}u{~8O4Jlk1K%aB==#N>;?)v<|cxyZlLbr=#!H}LVIL%(DV(^?YF7V zsfdQ01oGVii9J#To!gB1zq%smRl}?2bm=D8FDg?1h!%Q?p?0NnVo@O{fF^H(&5@;X zE}d!uNmdC+8@JD;Bqh+h?3U*gU`2j@P2*JtUd6r6bt`4mZ5)Tk=k!$>?Agu0bJBPM zB9&GFi}pP|m$;w(-(|k2fMwjn&-G&!Oo}n!QTGROI;bd?{Csmls=$ga{#^g63ewSWTg%)V~YL}Gt{FFA{wea9}}!6Cx&nTjWmES zh0o`Dv<5ieWptd!x2gd=2hN?7wkC>?QKRFlL<|xO>!K|d7X5$jb}#-uw=32Jt-6Z? zv1)^cq|^f7ijM&l207{hPtU;{ zPmC?2D+M9cjZtVlVdb(u*b3i5VF=X++g>XiayJ6Gt?GkwNp2hr((zy^t25{e=M(#QU3q z91<`BOCGFZ6k9~%KIWAU+Asn;efk&%Yh$p$&>0Ml*p%R*IOazue~m$#xPYIM^xp&@ zd@f)DT1x@ERrp7*Ou*Hn{=zvOn1CI*OY@JAkd-MI^JP4zc2iIf@2e1{8Mt$(;Qptg zpjb1oT7uv??VEuXq!vA=A~8y$f0z5`<{$t`*>kzc9Q3`O;y+@C_$@$ho2dLFkd7)P zIRpU-k!}XbTY?I0S%3<4Sz*8ik!uT!pDe+-Hq`|NPAdSpo-oKfq$GvjSb+sDK7wYf zP~c~U{+L&K$kH0bj}r_-t2H?}4N`+Rr7kFOr~_ z1uM9XfqQmdTpFm}79516<#S@S1N->a#yQPzQc}V{gCaH+flnOD3QmAOe zFk@=QB{5@M2J>C#_003sU+4LJ*Sp{KzVBXZ?Y-CDJq3uL2q#qp_XEVa!j_>N6l|EC znGw?*#uU>8BKe!cNv;kQN2@Gr_8e>+Ad!gX63L)mOUaVatT_ln);0)ZF=+xpLJ%ta z#)*TU;QU|yt7LPQqS7<*){jH^QdkV0Md0y2M5%p8a{g1Z-dhJ}W|PUIPhp}xGsVjg zoG_o{(TmJX*rR30Pk$kW>mCfpQC4b0yT%gB7#dR&_(@G0*7yqYkVca z?2~3XEbAMTVn;Q__9t&Xb%G%AEaKN*loM7W{-F&dKe%G1t9_lv+&lV|{<~H(3F$D? zV+l#9&a729a_>!&V^<-PV?T4iv+pXDVemtOX{%9a`#%WwuEtGE!&3soFhq3xB|&hQ zxIj4k`d`pzcf;`X+R&e+#bP*aH;|gs_I1=6bX#IXa@iWV7%wAuDN6O3bvSa~sURgR z91C~8Ex|1g-F5`iBQX3XV6%!lf8`)GqIYLEBj9}CIFhAn;XLPk0{{O=O=(mXt%Z&0 zMNwFsHPmFx*N3eolKPc>w|cv?$*dw@YRq&$#HrU=hv;5ck!)Ru>djb( zPVUr_lD7_LdFvV0vkuoPWh4JpG3OSk9*g=GW}{lUqGU5W5S?}s>Bhrf@-31}f0Y_C zw|E$iyiH1eJc6~oOW=AReoWV+dBpFeEM1R!hISJ)ug4?q;y(yJ+8{0zCchv!xIrAN zs`9=e?!%tn0~?9Nrq|N-;1vaL_^vrdQ3Cuw)MdUJ43Dq`Tw*+pI4D_(%-o1QDy{E>7wSL}ni@}*!A z%6~;xk}S@`#|z`Qm3a#Kxe(49u=5#bj@Rh?O?P1mI=UXs`lZ4CW(w-lv5Da0RE(3L zGy;;kw-O+(9)0=-|*Qu-yeH=;RCx4D|ql!VC;a1+Lq?rD}-GkXi3QKfl_LqOp@1&?9c)4isNG znB*Hfkg&^p1g@D_aP3AC9LU5T*pSf#)>$yy>_9NqNrrWge_iq1xlhcIACSpF7nu=z zmWBSSoJsMXCevqLJE3T%kYewSh_sviMIL?JjQ)g7nmlB0x5#E>Bk1AoBu8eWq`N!` zZf7I3tgi?r2f^pu9P~2n|D+VGFyU_RDXp&2I;Q-Hd1TQu4XSEytHf|tgR5Fxku8c?|<>D43&cBCYx_R)k zI+bMSJPeqwEd;rF$RRJA;GI2yu6%;TVwt{nZaS9rsZrHFvhXfLkJ`Pe7kl9UMG47c z^5G?;f`gJdpOERYtb9b3S4+y%e9Z3FI)X(7m=Qd~p}LuOh8WvrZ(pdw@|8%fYuggIg{ zk%P!8T`ct3r2Vk1a^i|L%iNEvWq((K;_2wlq!`U*)3~xs$aUktN_MSSoS>QzG4e@+ zD3NHE_PsW=;WHF&wsrxcb1#8|zXM1qC_yay;#p4#F0Rcx_^*-$m!dfMf3pAuYbZr= zqIMCCJAj2tv4_C>fCav~Isk8Bg``xMTNp5f0+nA}VbObmm{d$AUI*b0-%@IQ*B(Uj z$Bq)%mLZgLl?29T5ouBxe7D!UZN7loXcuJpA)M7=r&+(lh*jNWVZ;_4f?>b&q?8}R zpx1BY;3r6bG8pJewTB znI7?s8kYCB)MF7xaL8~hZrq7l-%^*|;EI(oyL}YO#G^RC(25}AC{l~G;qayKdNebu zL=;~fg9RH;aBDJL)*pj|Cyu1pRp6N0E(Dqitd};f1bB-mMxTiGqAIrs=Q7f1}cfF8fV=Ue=I*I$6Q zaV-S)7qQgkTq8)oD1M-d4jP%Oz^&mgP7;Z2ubbVbJ7o6qB0`?>nBdlHxjtLkfN=b9 z%MAb9brf&E)A_3bIYeR`;Sz!z)rcU|^axTKQK(Oh33?h)>tu5Rds~Gb^SK0f<+xF~ zgqhWaTMzC))daK0qX<$R6~-*331)Z3vgRh3g<&J03FF+O8NqeWBS`j!nf3mQ@!o1heUDEhnA(Q=o}5Hb(1w<( z86152?O~7FP^F-22<3nm8C<#sYyBlG?mBLRCtSy4U9Z3U=@rEre{QB04q>8P7ej>t zH60ey4u`=B1fA_T2ZJ>P0U1h5mQjm|ob)5&{VS1Vmn@|rzPA%y4K=AsiH}dPZ=l-8 Vhn1D!LprA$qVa&MY1ns``~%}k2R#4) diff --git a/youtube_dl/extractor/biqle.py b/youtube_dl/extractor/biqle.py index af21e3e..17ebbb2 100644 --- a/youtube_dl/extractor/biqle.py +++ b/youtube_dl/extractor/biqle.py @@ -3,10 +3,11 @@ from __future__ import unicode_literals from .common import InfoExtractor from .vk import VKIE -from ..utils import ( - HEADRequest, - int_or_none, +from ..compat import ( + compat_b64decode, + compat_urllib_parse_unquote, ) +from ..utils import int_or_none class BIQLEIE(InfoExtractor): @@ -47,9 +48,16 @@ class BIQLEIE(InfoExtractor): if VKIE.suitable(embed_url): return self.url_result(embed_url, VKIE.ie_key(), video_id) - self._request_webpage( - HEADRequest(embed_url), video_id, headers={'Referer': url}) - video_id, sig, _, access_token = self._get_cookies(embed_url)['video_ext'].value.split('%3A') + embed_page = self._download_webpage( + embed_url, video_id, headers={'Referer': url}) + video_ext = self._get_cookies(embed_url).get('video_ext') + if video_ext: + video_ext = compat_urllib_parse_unquote(video_ext.value) + if not video_ext: + video_ext = compat_b64decode(self._search_regex( + r'video_ext\s*:\s*[\'"]([A-Za-z0-9+/=]+)', + embed_page, 'video_ext')).decode() + video_id, sig, _, access_token = video_ext.split(':') item = self._download_json( 'https://api.vk.com/method/video.get', video_id, headers={'User-Agent': 'okhttp/3.4.1'}, query={ diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index 4b30920..ae7079a 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -918,7 +918,9 @@ from .rbmaradio import RBMARadioIE from .rds import RDSIE from .redbulltv import ( RedBullTVIE, + RedBullEmbedIE, RedBullTVRrnContentIE, + RedBullIE, ) from .reddit import ( RedditIE, @@ -1229,14 +1231,11 @@ from .twentymin import TwentyMinutenIE from .twentythreevideo import TwentyThreeVideoIE from .twitcasting import TwitCastingIE from .twitch import ( - TwitchVideoIE, - TwitchChapterIE, TwitchVodIE, - TwitchProfileIE, - TwitchAllVideosIE, - TwitchUploadsIE, - TwitchPastBroadcastsIE, - TwitchHighlightsIE, + TwitchCollectionIE, + TwitchVideosIE, + TwitchVideosClipsIE, + TwitchVideosCollectionsIE, TwitchStreamIE, TwitchClipsIE, ) diff --git a/youtube_dl/extractor/googledrive.py b/youtube_dl/extractor/googledrive.py index 589e4d5..f2cc57e 100644 --- a/youtube_dl/extractor/googledrive.py +++ b/youtube_dl/extractor/googledrive.py @@ -220,19 +220,27 @@ class GoogleDriveIE(InfoExtractor): 'id': video_id, 'export': 'download', }) - urlh = self._request_webpage( - source_url, video_id, note='Requesting source file', - errnote='Unable to request source file', fatal=False) + + def request_source_file(source_url, kind): + return self._request_webpage( + source_url, video_id, note='Requesting %s file' % kind, + errnote='Unable to request %s file' % kind, fatal=False) + urlh = request_source_file(source_url, 'source') if urlh: - def add_source_format(src_url): + def add_source_format(urlh): formats.append({ - 'url': src_url, + # Use redirect URLs as download URLs in order to calculate + # correct cookies in _calc_cookies. + # Using original URLs may result in redirect loop due to + # google.com's cookies mistakenly used for googleusercontent.com + # redirect URLs (see #23919). + 'url': urlh.geturl(), 'ext': determine_ext(title, 'mp4').lower(), 'format_id': 'source', 'quality': 1, }) if urlh.headers.get('Content-Disposition'): - add_source_format(source_url) + add_source_format(urlh) else: confirmation_webpage = self._webpage_read_content( urlh, url, video_id, note='Downloading confirmation page', @@ -242,9 +250,12 @@ class GoogleDriveIE(InfoExtractor): r'confirm=([^&"\']+)', confirmation_webpage, 'confirmation code', fatal=False) if confirm: - add_source_format(update_url_query(source_url, { + confirmed_source_url = update_url_query(source_url, { 'confirm': confirm, - })) + }) + urlh = request_source_file(confirmed_source_url, 'confirmed source') + if urlh and urlh.headers.get('Content-Disposition'): + add_source_format(urlh) if not formats: reason = self._search_regex( diff --git a/youtube_dl/extractor/nrk.py b/youtube_dl/extractor/nrk.py index 9411553..84aacbc 100644 --- a/youtube_dl/extractor/nrk.py +++ b/youtube_dl/extractor/nrk.py @@ -11,7 +11,6 @@ from ..compat import ( from ..utils import ( ExtractorError, int_or_none, - JSON_LD_RE, js_to_json, NO_DEFAULT, parse_age_limit, @@ -425,13 +424,20 @@ class NRKTVEpisodeIE(InfoExtractor): webpage = self._download_webpage(url, display_id) - nrk_id = self._parse_json( - self._search_regex(JSON_LD_RE, webpage, 'JSON-LD', group='json_ld'), - display_id)['@id'] - + info = self._search_json_ld(webpage, display_id, default={}) + nrk_id = info.get('@id') or self._html_search_meta( + 'nrk:program-id', webpage, default=None) or self._search_regex( + r'data-program-id=["\'](%s)' % NRKTVIE._EPISODE_RE, webpage, + 'nrk id') assert re.match(NRKTVIE._EPISODE_RE, nrk_id) - return self.url_result( - 'nrk:%s' % nrk_id, ie=NRKIE.ie_key(), video_id=nrk_id) + + info.update({ + '_type': 'url_transparent', + 'id': nrk_id, + 'url': 'nrk:%s' % nrk_id, + 'ie_key': NRKIE.ie_key(), + }) + return info class NRKTVSerieBaseIE(InfoExtractor): diff --git a/youtube_dl/extractor/redbulltv.py b/youtube_dl/extractor/redbulltv.py index dbe1aad..3aae79f 100644 --- a/youtube_dl/extractor/redbulltv.py +++ b/youtube_dl/extractor/redbulltv.py @@ -1,6 +1,8 @@ # coding: utf-8 from __future__ import unicode_literals +import re + from .common import InfoExtractor from ..compat import compat_HTTPError from ..utils import ( @@ -10,7 +12,7 @@ from ..utils import ( class RedBullTVIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?redbull(?:\.tv|\.com(?:/[^/]+)?(?:/tv)?)(?:/events/[^/]+)?/(?:videos?|live)/(?PAP-\w+)' + _VALID_URL = r'https?://(?:www\.)?redbull(?:\.tv|\.com(?:/[^/]+)?(?:/tv)?)(?:/events/[^/]+)?/(?:videos?|live|(?:film|episode)s)/(?PAP-\w+)' _TESTS = [{ # film 'url': 'https://www.redbull.tv/video/AP-1Q6XCDTAN1W11', @@ -29,8 +31,8 @@ class RedBullTVIE(InfoExtractor): 'id': 'AP-1PMHKJFCW1W11', 'ext': 'mp4', 'title': 'Grime - Hashtags S2E4', - 'description': 'md5:b5f522b89b72e1e23216e5018810bb25', - 'duration': 904.6, + 'description': 'md5:5546aa612958c08a98faaad4abce484d', + 'duration': 904, }, 'params': { 'skip_download': True, @@ -44,11 +46,15 @@ class RedBullTVIE(InfoExtractor): }, { 'url': 'https://www.redbull.com/us-en/events/AP-1XV2K61Q51W11/live/AP-1XUJ86FDH1W11', 'only_matching': True, + }, { + 'url': 'https://www.redbull.com/int-en/films/AP-1ZSMAW8FH2111', + 'only_matching': True, + }, { + 'url': 'https://www.redbull.com/int-en/episodes/AP-1TQWK7XE11W11', + 'only_matching': True, }] - def _real_extract(self, url): - video_id = self._match_id(url) - + def extract_info(self, video_id): session = self._download_json( 'https://api.redbull.tv/v3/session', video_id, note='Downloading access token', query={ @@ -105,24 +111,119 @@ class RedBullTVIE(InfoExtractor): 'subtitles': subtitles, } + def _real_extract(self, url): + video_id = self._match_id(url) + return self.extract_info(video_id) + + +class RedBullEmbedIE(RedBullTVIE): + _VALID_URL = r'https?://(?:www\.)?redbull\.com/embed/(?Prrn:content:[^:]+:[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}:[a-z]{2}-[A-Z]{2,3})' + _TESTS = [{ + # HLS manifest accessible only using assetId + 'url': 'https://www.redbull.com/embed/rrn:content:episode-videos:f3021f4f-3ed4-51ac-915a-11987126e405:en-INT', + 'only_matching': True, + }] + _VIDEO_ESSENSE_TMPL = '''... on %s { + videoEssence { + attributes + } + }''' + + def _real_extract(self, url): + rrn_id = self._match_id(url) + asset_id = self._download_json( + 'https://edge-graphql.crepo-production.redbullaws.com/v1/graphql', + rrn_id, headers={'API-KEY': 'e90a1ff11335423998b100c929ecc866'}, + query={ + 'query': '''{ + resource(id: "%s", enforceGeoBlocking: false) { + %s + %s + } +}''' % (rrn_id, self._VIDEO_ESSENSE_TMPL % 'LiveVideo', self._VIDEO_ESSENSE_TMPL % 'VideoResource'), + })['data']['resource']['videoEssence']['attributes']['assetId'] + return self.extract_info(asset_id) + class RedBullTVRrnContentIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?redbull(?:\.tv|\.com(?:/[^/]+)?(?:/tv)?)/(?:video|live)/rrn:content:[^:]+:(?P[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})' + _VALID_URL = r'https?://(?:www\.)?redbull\.com/(?P[a-z]{2,3})-(?P[a-z]{2})/tv/(?:video|live|film)/(?Prrn:content:[^:]+:[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})' _TESTS = [{ 'url': 'https://www.redbull.com/int-en/tv/video/rrn:content:live-videos:e3e6feb4-e95f-50b7-962a-c70f8fd13c73/mens-dh-finals-fort-william', 'only_matching': True, }, { 'url': 'https://www.redbull.com/int-en/tv/video/rrn:content:videos:a36a0f36-ff1b-5db8-a69d-ee11a14bf48b/tn-ts-style?playlist=rrn:content:event-profiles:83f05926-5de8-5389-b5e4-9bb312d715e8:extras', 'only_matching': True, + }, { + 'url': 'https://www.redbull.com/int-en/tv/film/rrn:content:films:d1f4d00e-4c04-5d19-b510-a805ffa2ab83/follow-me', + 'only_matching': True, }] def _real_extract(self, url): - display_id = self._match_id(url) + region, lang, rrn_id = re.search(self._VALID_URL, url).groups() + rrn_id += ':%s-%s' % (lang, region.upper()) + return self.url_result( + 'https://www.redbull.com/embed/' + rrn_id, + RedBullEmbedIE.ie_key(), rrn_id) - webpage = self._download_webpage(url, display_id) - video_url = self._og_search_url(webpage) +class RedBullIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?redbull\.com/(?P[a-z]{2,3})-(?P[a-z]{2})/(?P(?:episode|film|(?:(?:recap|trailer)-)?video)s|live)/(?!AP-|rrn:content:)(?P[^/?#&]+)' + _TESTS = [{ + 'url': 'https://www.redbull.com/int-en/episodes/grime-hashtags-s02-e04', + 'md5': 'db8271a7200d40053a1809ed0dd574ff', + 'info_dict': { + 'id': 'AA-1MT8DQWA91W14', + 'ext': 'mp4', + 'title': 'Grime - Hashtags S2E4', + 'description': 'md5:5546aa612958c08a98faaad4abce484d', + }, + }, { + 'url': 'https://www.redbull.com/int-en/films/kilimanjaro-mountain-of-greatness', + 'only_matching': True, + }, { + 'url': 'https://www.redbull.com/int-en/recap-videos/uci-mountain-bike-world-cup-2017-mens-xco-finals-from-vallnord', + 'only_matching': True, + }, { + 'url': 'https://www.redbull.com/int-en/trailer-videos/kings-of-content', + 'only_matching': True, + }, { + 'url': 'https://www.redbull.com/int-en/videos/tnts-style-red-bull-dance-your-style-s1-e12', + 'only_matching': True, + }, { + 'url': 'https://www.redbull.com/int-en/live/mens-dh-finals-fort-william', + 'only_matching': True, + }, { + # only available on the int-en website so a fallback is need for the API + # https://www.redbull.com/v3/api/graphql/v1/v3/query/en-GB>en-INT?filter[uriSlug]=fia-wrc-saturday-recap-estonia&rb3Schema=v1:hero + 'url': 'https://www.redbull.com/gb-en/live/fia-wrc-saturday-recap-estonia', + 'only_matching': True, + }] + _INT_FALLBACK_LIST = ['de', 'en', 'es', 'fr'] + _LAT_FALLBACK_MAP = ['ar', 'bo', 'car', 'cl', 'co', 'mx', 'pe'] + + def _real_extract(self, url): + region, lang, filter_type, display_id = re.search(self._VALID_URL, url).groups() + if filter_type == 'episodes': + filter_type = 'episode-videos' + elif filter_type == 'live': + filter_type = 'live-videos' + + regions = [region.upper()] + if region != 'int': + if region in self._LAT_FALLBACK_MAP: + regions.append('LAT') + if lang in self._INT_FALLBACK_LIST: + regions.append('INT') + locale = '>'.join(['%s-%s' % (lang, reg) for reg in regions]) + + rrn_id = self._download_json( + 'https://www.redbull.com/v3/api/graphql/v1/v3/query/' + locale, + display_id, query={ + 'filter[type]': filter_type, + 'filter[uriSlug]': display_id, + 'rb3Schema': 'v1:hero', + })['data']['id'] return self.url_result( - video_url, ie=RedBullTVIE.ie_key(), - video_id=RedBullTVIE._match_id(video_url)) + 'https://www.redbull.com/embed/' + rrn_id, + RedBullEmbedIE.ie_key(), rrn_id) diff --git a/youtube_dl/extractor/rtlnl.py b/youtube_dl/extractor/rtlnl.py index fadca8c..9eaa06f 100644 --- a/youtube_dl/extractor/rtlnl.py +++ b/youtube_dl/extractor/rtlnl.py @@ -14,12 +14,27 @@ class RtlNlIE(InfoExtractor): _VALID_URL = r'''(?x) https?://(?:(?:www|static)\.)? (?: - rtlxl\.nl/[^\#]*\#!/[^/]+/| - rtl\.nl/(?:(?:system/videoplayer/(?:[^/]+/)+(?:video_)?embed\.html|embed)\b.+?\buuid=|video/) + rtlxl\.nl/(?:[^\#]*\#!|programma)/[^/]+/| + rtl\.nl/(?:(?:system/videoplayer/(?:[^/]+/)+(?:video_)?embed\.html|embed)\b.+?\buuid=|video/)| + embed\.rtl\.nl/\#uuid= ) (?P[0-9a-f-]+)''' _TESTS = [{ + # new URL schema + 'url': 'https://www.rtlxl.nl/programma/rtl-nieuws/0bd1384d-d970-3086-98bb-5c104e10c26f', + 'md5': '490428f1187b60d714f34e1f2e3af0b6', + 'info_dict': { + 'id': '0bd1384d-d970-3086-98bb-5c104e10c26f', + 'ext': 'mp4', + 'title': 'RTL Nieuws', + 'description': 'md5:d41d8cd98f00b204e9800998ecf8427e', + 'timestamp': 1593293400, + 'upload_date': '20200627', + 'duration': 661.08, + }, + }, { + # old URL schema 'url': 'http://www.rtlxl.nl/#!/rtl-nieuws-132237/82b1aad1-4a14-3d7b-b554-b0aed1b2c416', 'md5': '473d1946c1fdd050b2c0161a4b13c373', 'info_dict': { @@ -31,6 +46,7 @@ class RtlNlIE(InfoExtractor): 'upload_date': '20160429', 'duration': 1167.96, }, + 'skip': '404', }, { # best format available a3t 'url': 'http://www.rtl.nl/system/videoplayer/derden/rtlnieuws/video_embed.html#uuid=84ae5571-ac25-4225-ae0c-ef8d9efb2aed/autoplay=false', @@ -76,6 +92,10 @@ class RtlNlIE(InfoExtractor): }, { 'url': 'https://static.rtl.nl/embed/?uuid=1a2970fc-5c0b-43ff-9fdc-927e39e6d1bc&autoplay=false&publicatiepunt=rtlnieuwsnl', 'only_matching': True, + }, { + # new embed URL schema + 'url': 'https://embed.rtl.nl/#uuid=84ae5571-ac25-4225-ae0c-ef8d9efb2aed/autoplay=false', + 'only_matching': True, }] def _real_extract(self, url): diff --git a/youtube_dl/extractor/soundcloud.py b/youtube_dl/extractor/soundcloud.py index d37c525..a2fddf6 100644 --- a/youtube_dl/extractor/soundcloud.py +++ b/youtube_dl/extractor/soundcloud.py @@ -558,8 +558,10 @@ class SoundcloudSetIE(SoundcloudPlaylistBaseIE): class SoundcloudPagedPlaylistBaseIE(SoundcloudIE): def _extract_playlist(self, base_url, playlist_id, playlist_title): + # Per the SoundCloud documentation, the maximum limit for a linked partioning query is 200. + # https://developers.soundcloud.com/blog/offset-pagination-deprecated COMMON_QUERY = { - 'limit': 80000, + 'limit': 200, 'linked_partitioning': '1', } diff --git a/youtube_dl/extractor/srgssr.py b/youtube_dl/extractor/srgssr.py index 170dce8..f63a135 100644 --- a/youtube_dl/extractor/srgssr.py +++ b/youtube_dl/extractor/srgssr.py @@ -114,7 +114,7 @@ class SRGSSRPlayIE(InfoExtractor): [^/]+/(?Pvideo|audio)/[^?]+| popup(?Pvideo|audio)player ) - \?id=(?P[0-9a-f\-]{36}|\d+) + \?.*?\b(?:id=|urn=urn:[^:]+:video:)(?P[0-9a-f\-]{36}|\d+) ''' _TESTS = [{ @@ -175,6 +175,12 @@ class SRGSSRPlayIE(InfoExtractor): }, { 'url': 'https://www.srf.ch/play/tv/popupvideoplayer?id=c4dba0ca-e75b-43b2-a34f-f708a4932e01', 'only_matching': True, + }, { + 'url': 'https://www.srf.ch/play/tv/10vor10/video/snowden-beantragt-asyl-in-russland?urn=urn:srf:video:28e1a57d-5b76-4399-8ab3-9097f071e6c5', + 'only_matching': True, + }, { + 'url': 'https://www.rts.ch/play/tv/19h30/video/le-19h30?urn=urn:rts:video:6348260', + 'only_matching': True, }] def _real_extract(self, url): diff --git a/youtube_dl/extractor/svt.py b/youtube_dl/extractor/svt.py index e12389c..2f6887d 100644 --- a/youtube_dl/extractor/svt.py +++ b/youtube_dl/extractor/svt.py @@ -224,9 +224,17 @@ class SVTPlayIE(SVTPlayBaseIE): self._adjust_title(info_dict) return info_dict - svt_id = self._search_regex( - r']+data-video-id=["\']([\da-zA-Z-]+)', - webpage, 'video id') + svt_id = try_get( + data, lambda x: x['statistics']['dataLake']['content']['id'], + compat_str) + + if not svt_id: + svt_id = self._search_regex( + (r']+data-video-id=["\']([\da-zA-Z-]+)', + r'["\']videoSvtId["\']\s*:\s*["\']([\da-zA-Z-]+)', + r'"content"\s*:\s*{.*?"id"\s*:\s*"([\da-zA-Z-]+)"', + r'["\']svtId["\']\s*:\s*["\']([\da-zA-Z-]+)'), + webpage, 'video id') return self._extract_by_video_id(svt_id, webpage) diff --git a/youtube_dl/extractor/twitch.py b/youtube_dl/extractor/twitch.py index e211cd4..eadc48c 100644 --- a/youtube_dl/extractor/twitch.py +++ b/youtube_dl/extractor/twitch.py @@ -1,24 +1,26 @@ # coding: utf-8 from __future__ import unicode_literals +import collections import itertools -import re -import random import json +import random +import re from .common import InfoExtractor from ..compat import ( compat_kwargs, compat_parse_qs, compat_str, + compat_urlparse, compat_urllib_parse_urlencode, compat_urllib_parse_urlparse, ) from ..utils import ( clean_html, ExtractorError, + float_or_none, int_or_none, - orderedSet, parse_duration, parse_iso8601, qualities, @@ -150,120 +152,16 @@ class TwitchBaseIE(InfoExtractor): }) self._sort_formats(formats) + def _download_access_token(self, channel_name): + return self._call_api( + 'api/channels/%s/access_token' % channel_name, channel_name, + 'Downloading access token JSON') -class TwitchItemBaseIE(TwitchBaseIE): - def _download_info(self, item, item_id): - return self._extract_info(self._call_api( - 'kraken/videos/%s%s' % (item, item_id), item_id, - 'Downloading %s info JSON' % self._ITEM_TYPE)) - - def _extract_media(self, item_id): - info = self._download_info(self._ITEM_SHORTCUT, item_id) - response = self._call_api( - 'api/videos/%s%s' % (self._ITEM_SHORTCUT, item_id), item_id, - 'Downloading %s playlist JSON' % self._ITEM_TYPE) - entries = [] - chunks = response['chunks'] - qualities = list(chunks.keys()) - for num, fragment in enumerate(zip(*chunks.values()), start=1): - formats = [] - for fmt_num, fragment_fmt in enumerate(fragment): - format_id = qualities[fmt_num] - fmt = { - 'url': fragment_fmt['url'], - 'format_id': format_id, - 'quality': 1 if format_id == 'live' else 0, - } - m = re.search(r'^(?P\d+)[Pp]', format_id) - if m: - fmt['height'] = int(m.group('height')) - formats.append(fmt) - self._sort_formats(formats) - entry = dict(info) - entry['id'] = '%s_%d' % (entry['id'], num) - entry['title'] = '%s part %d' % (entry['title'], num) - entry['formats'] = formats - entries.append(entry) - return self.playlist_result(entries, info['id'], info['title']) - - def _extract_info(self, info): - status = info.get('status') - if status == 'recording': - is_live = True - elif status == 'recorded': - is_live = False - else: - is_live = None - _QUALITIES = ('small', 'medium', 'large') - quality_key = qualities(_QUALITIES) - thumbnails = [] - preview = info.get('preview') - if isinstance(preview, dict): - for thumbnail_id, thumbnail_url in preview.items(): - thumbnail_url = url_or_none(thumbnail_url) - if not thumbnail_url: - continue - if thumbnail_id not in _QUALITIES: - continue - thumbnails.append({ - 'url': thumbnail_url, - 'preference': quality_key(thumbnail_id), - }) - return { - 'id': info['_id'], - 'title': info.get('title') or 'Untitled Broadcast', - 'description': info.get('description'), - 'duration': int_or_none(info.get('length')), - 'thumbnails': thumbnails, - 'uploader': info.get('channel', {}).get('display_name'), - 'uploader_id': info.get('channel', {}).get('name'), - 'timestamp': parse_iso8601(info.get('recorded_at')), - 'view_count': int_or_none(info.get('views')), - 'is_live': is_live, - } - - def _real_extract(self, url): - return self._extract_media(self._match_id(url)) - - -class TwitchVideoIE(TwitchItemBaseIE): - IE_NAME = 'twitch:video' - _VALID_URL = r'%s/[^/]+/b/(?P\d+)' % TwitchBaseIE._VALID_URL_BASE - _ITEM_TYPE = 'video' - _ITEM_SHORTCUT = 'a' - - _TEST = { - 'url': 'http://www.twitch.tv/riotgames/b/577357806', - 'info_dict': { - 'id': 'a577357806', - 'title': 'Worlds Semifinals - Star Horn Royal Club vs. OMG', - }, - 'playlist_mincount': 12, - 'skip': 'HTTP Error 404: Not Found', - } - - -class TwitchChapterIE(TwitchItemBaseIE): - IE_NAME = 'twitch:chapter' - _VALID_URL = r'%s/[^/]+/c/(?P\d+)' % TwitchBaseIE._VALID_URL_BASE - _ITEM_TYPE = 'chapter' - _ITEM_SHORTCUT = 'c' - - _TESTS = [{ - 'url': 'http://www.twitch.tv/acracingleague/c/5285812', - 'info_dict': { - 'id': 'c5285812', - 'title': 'ACRL Off Season - Sports Cars @ Nordschleife', - }, - 'playlist_mincount': 3, - 'skip': 'HTTP Error 404: Not Found', - }, { - 'url': 'http://www.twitch.tv/tsm_theoddone/c/2349361', - 'only_matching': True, - }] + def _extract_channel_id(self, token, channel_name): + return compat_str(self._parse_json(token, channel_name)['channel_id']) -class TwitchVodIE(TwitchItemBaseIE): +class TwitchVodIE(TwitchBaseIE): IE_NAME = 'twitch:vod' _VALID_URL = r'''(?x) https?:// @@ -332,17 +230,60 @@ class TwitchVodIE(TwitchItemBaseIE): 'only_matching': True, }] + def _download_info(self, item_id): + return self._extract_info( + self._call_api( + 'kraken/videos/%s' % item_id, item_id, + 'Downloading video info JSON')) + + @staticmethod + def _extract_info(info): + status = info.get('status') + if status == 'recording': + is_live = True + elif status == 'recorded': + is_live = False + else: + is_live = None + _QUALITIES = ('small', 'medium', 'large') + quality_key = qualities(_QUALITIES) + thumbnails = [] + preview = info.get('preview') + if isinstance(preview, dict): + for thumbnail_id, thumbnail_url in preview.items(): + thumbnail_url = url_or_none(thumbnail_url) + if not thumbnail_url: + continue + if thumbnail_id not in _QUALITIES: + continue + thumbnails.append({ + 'url': thumbnail_url, + 'preference': quality_key(thumbnail_id), + }) + return { + 'id': info['_id'], + 'title': info.get('title') or 'Untitled Broadcast', + 'description': info.get('description'), + 'duration': int_or_none(info.get('length')), + 'thumbnails': thumbnails, + 'uploader': info.get('channel', {}).get('display_name'), + 'uploader_id': info.get('channel', {}).get('name'), + 'timestamp': parse_iso8601(info.get('recorded_at')), + 'view_count': int_or_none(info.get('views')), + 'is_live': is_live, + } + def _real_extract(self, url): - item_id = self._match_id(url) + vod_id = self._match_id(url) - info = self._download_info(self._ITEM_SHORTCUT, item_id) + info = self._download_info(vod_id) access_token = self._call_api( - 'api/vods/%s/access_token' % item_id, item_id, + 'api/vods/%s/access_token' % vod_id, vod_id, 'Downloading %s access token' % self._ITEM_TYPE) formats = self._extract_m3u8_formats( '%s/vod/%s.m3u8?%s' % ( - self._USHER_BASE, item_id, + self._USHER_BASE, vod_id, compat_urllib_parse_urlencode({ 'allow_source': 'true', 'allow_audio_only': 'true', @@ -352,7 +293,7 @@ class TwitchVodIE(TwitchItemBaseIE): 'nauth': access_token['token'], 'nauthsig': access_token['sig'], })), - item_id, 'mp4', entry_protocol='m3u8_native') + vod_id, 'mp4', entry_protocol='m3u8_native') self._prefer_source(formats) info['formats'] = formats @@ -366,7 +307,7 @@ class TwitchVodIE(TwitchItemBaseIE): info['subtitles'] = { 'rechat': [{ 'url': update_url_query( - 'https://api.twitch.tv/v5/videos/%s/comments' % item_id, { + 'https://api.twitch.tv/v5/videos/%s/comments' % vod_id, { 'client_id': self._CLIENT_ID, }), 'ext': 'json', @@ -376,164 +317,405 @@ class TwitchVodIE(TwitchItemBaseIE): return info -class TwitchPlaylistBaseIE(TwitchBaseIE): - _PLAYLIST_PATH = 'kraken/channels/%s/videos/?offset=%d&limit=%d' +def _make_video_result(node): + assert isinstance(node, dict) + video_id = node.get('id') + if not video_id: + return + return { + '_type': 'url_transparent', + 'ie_key': TwitchVodIE.ie_key(), + 'id': video_id, + 'url': 'https://www.twitch.tv/videos/%s' % video_id, + 'title': node.get('title'), + 'thumbnail': node.get('previewThumbnailURL'), + 'duration': float_or_none(node.get('lengthSeconds')), + 'view_count': int_or_none(node.get('viewCount')), + } + + +class TwitchGraphQLBaseIE(TwitchBaseIE): _PAGE_LIMIT = 100 - def _extract_playlist(self, channel_id): - info = self._call_api( - 'kraken/channels/%s' % channel_id, - channel_id, 'Downloading channel info JSON') - channel_name = info.get('display_name') or info.get('name') + def _download_gql(self, video_id, op, variables, sha256_hash, note, fatal=True): + return self._download_json( + 'https://gql.twitch.tv/gql', video_id, note, + data=json.dumps({ + 'operationName': op, + 'variables': variables, + 'extensions': { + 'persistedQuery': { + 'version': 1, + 'sha256Hash': sha256_hash, + } + } + }).encode(), + headers={ + 'Content-Type': 'text/plain;charset=UTF-8', + 'Client-ID': self._CLIENT_ID, + }, fatal=fatal) + + +class TwitchCollectionIE(TwitchGraphQLBaseIE): + _VALID_URL = r'https?://(?:(?:www|go|m)\.)?twitch\.tv/collections/(?P[^/]+)' + + _TESTS = [{ + 'url': 'https://www.twitch.tv/collections/wlDCoH0zEBZZbQ', + 'info_dict': { + 'id': 'wlDCoH0zEBZZbQ', + 'title': 'Overthrow Nook, capitalism for children', + }, + 'playlist_mincount': 13, + }] + + _OPERATION_NAME = 'CollectionSideBar' + _SHA256_HASH = '27111f1b382effad0b6def325caef1909c733fe6a4fbabf54f8d491ef2cf2f14' + + def _real_extract(self, url): + collection_id = self._match_id(url) + collection = self._download_gql( + collection_id, self._OPERATION_NAME, + {'collectionID': collection_id}, self._SHA256_HASH, + 'Downloading collection GraphQL')['data']['collection'] + title = collection.get('title') entries = [] + for edge in collection['items']['edges']: + if not isinstance(edge, dict): + continue + node = edge.get('node') + if not isinstance(node, dict): + continue + video = _make_video_result(node) + if video: + entries.append(video) + return self.playlist_result( + entries, playlist_id=collection_id, playlist_title=title) + + +class TwitchPlaylistBaseIE(TwitchGraphQLBaseIE): + def _entries(self, channel_name, *args): + cursor = None + variables_common = self._make_variables(channel_name, *args) + entries_key = '%ss' % self._ENTRY_KIND + for page_num in itertools.count(1): + variables = variables_common.copy() + variables['limit'] = self._PAGE_LIMIT + if cursor: + variables['cursor'] = cursor + page = self._download_gql( + channel_name, self._OPERATION_NAME, variables, + self._SHA256_HASH, + 'Downloading %ss GraphQL page %s' % (self._NODE_KIND, page_num), + fatal=False) + if not page: + break + edges = try_get( + page, lambda x: x['data']['user'][entries_key]['edges'], list) + if not edges: + break + for edge in edges: + if not isinstance(edge, dict): + continue + if edge.get('__typename') != self._EDGE_KIND: + continue + node = edge.get('node') + if not isinstance(node, dict): + continue + if node.get('__typename') != self._NODE_KIND: + continue + entry = self._extract_entry(node) + if entry: + cursor = edge.get('cursor') + yield entry + if not cursor or not isinstance(cursor, compat_str): + break + + # Deprecated kraken v5 API + def _entries_kraken(self, channel_name, broadcast_type, sort): + access_token = self._download_access_token(channel_name) + channel_id = self._extract_channel_id(access_token['token'], channel_name) offset = 0 - limit = self._PAGE_LIMIT - broken_paging_detected = False counter_override = None for counter in itertools.count(1): response = self._call_api( - self._PLAYLIST_PATH % (channel_id, offset, limit), + 'kraken/channels/%s/videos/' % channel_id, channel_id, - 'Downloading %s JSON page %s' - % (self._PLAYLIST_TYPE, counter_override or counter)) - page_entries = self._extract_playlist_page(response) - if not page_entries: + 'Downloading video JSON page %s' % (counter_override or counter), + query={ + 'offset': offset, + 'limit': self._PAGE_LIMIT, + 'broadcast_type': broadcast_type, + 'sort': sort, + }) + videos = response.get('videos') + if not isinstance(videos, list): break + for video in videos: + if not isinstance(video, dict): + continue + video_url = url_or_none(video.get('url')) + if not video_url: + continue + yield { + '_type': 'url_transparent', + 'ie_key': TwitchVodIE.ie_key(), + 'id': video.get('_id'), + 'url': video_url, + 'title': video.get('title'), + 'description': video.get('description'), + 'timestamp': unified_timestamp(video.get('published_at')), + 'duration': float_or_none(video.get('length')), + 'view_count': int_or_none(video.get('views')), + 'language': video.get('language'), + } + offset += self._PAGE_LIMIT total = int_or_none(response.get('_total')) - # Since the beginning of March 2016 twitch's paging mechanism - # is completely broken on the twitch side. It simply ignores - # a limit and returns the whole offset number of videos. - # Working around by just requesting all videos at once. - # Upd: pagination bug was fixed by twitch on 15.03.2016. - if not broken_paging_detected and total and len(page_entries) > limit: - self.report_warning( - 'Twitch pagination is broken on twitch side, requesting all videos at once', - channel_id) - broken_paging_detected = True - offset = total - counter_override = '(all at once)' - continue - entries.extend(page_entries) - if broken_paging_detected or total and len(page_entries) >= total: + if total and offset >= total: break - offset += limit - return self.playlist_result( - [self._make_url_result(entry) for entry in orderedSet(entries)], - channel_id, channel_name) - - def _make_url_result(self, url): - try: - video_id = 'v%s' % TwitchVodIE._match_id(url) - return self.url_result(url, TwitchVodIE.ie_key(), video_id=video_id) - except AssertionError: - return self.url_result(url) - - def _extract_playlist_page(self, response): - videos = response.get('videos') - return [video['url'] for video in videos] if videos else [] - - def _real_extract(self, url): - return self._extract_playlist(self._match_id(url)) -class TwitchProfileIE(TwitchPlaylistBaseIE): - IE_NAME = 'twitch:profile' - _VALID_URL = r'%s/(?P[^/]+)/profile/?(?:\#.*)?$' % TwitchBaseIE._VALID_URL_BASE - _PLAYLIST_TYPE = 'profile' +class TwitchVideosIE(TwitchPlaylistBaseIE): + _VALID_URL = r'https?://(?:(?:www|go|m)\.)?twitch\.tv/(?P[^/]+)/(?:videos|profile)' _TESTS = [{ - 'url': 'http://www.twitch.tv/vanillatv/profile', + # All Videos sorted by Date + 'url': 'https://www.twitch.tv/spamfish/videos?filter=all', 'info_dict': { - 'id': 'vanillatv', - 'title': 'VanillaTV', + 'id': 'spamfish', + 'title': 'spamfish - All Videos sorted by Date', }, - 'playlist_mincount': 412, + 'playlist_mincount': 924, }, { - 'url': 'http://m.twitch.tv/vanillatv/profile', - 'only_matching': True, - }] - - -class TwitchVideosBaseIE(TwitchPlaylistBaseIE): - _VALID_URL_VIDEOS_BASE = r'%s/(?P[^/]+)/videos' % TwitchBaseIE._VALID_URL_BASE - _PLAYLIST_PATH = TwitchPlaylistBaseIE._PLAYLIST_PATH + '&broadcast_type=' - - -class TwitchAllVideosIE(TwitchVideosBaseIE): - IE_NAME = 'twitch:videos:all' - _VALID_URL = r'%s/all' % TwitchVideosBaseIE._VALID_URL_VIDEOS_BASE - _PLAYLIST_PATH = TwitchVideosBaseIE._PLAYLIST_PATH + 'archive,upload,highlight' - _PLAYLIST_TYPE = 'all videos' - - _TESTS = [{ - 'url': 'https://www.twitch.tv/spamfish/videos/all', + # All Videos sorted by Popular + 'url': 'https://www.twitch.tv/spamfish/videos?filter=all&sort=views', 'info_dict': { 'id': 'spamfish', - 'title': 'Spamfish', + 'title': 'spamfish - All Videos sorted by Popular', }, - 'playlist_mincount': 869, + 'playlist_mincount': 931, }, { - 'url': 'https://m.twitch.tv/spamfish/videos/all', - 'only_matching': True, - }] - - -class TwitchUploadsIE(TwitchVideosBaseIE): - IE_NAME = 'twitch:videos:uploads' - _VALID_URL = r'%s/uploads' % TwitchVideosBaseIE._VALID_URL_VIDEOS_BASE - _PLAYLIST_PATH = TwitchVideosBaseIE._PLAYLIST_PATH + 'upload' - _PLAYLIST_TYPE = 'uploads' - - _TESTS = [{ - 'url': 'https://www.twitch.tv/spamfish/videos/uploads', + # Past Broadcasts sorted by Date + 'url': 'https://www.twitch.tv/spamfish/videos?filter=archives', + 'info_dict': { + 'id': 'spamfish', + 'title': 'spamfish - Past Broadcasts sorted by Date', + }, + 'playlist_mincount': 27, + }, { + # Highlights sorted by Date + 'url': 'https://www.twitch.tv/spamfish/videos?filter=highlights', + 'info_dict': { + 'id': 'spamfish', + 'title': 'spamfish - Highlights sorted by Date', + }, + 'playlist_mincount': 901, + }, { + # Uploads sorted by Date + 'url': 'https://www.twitch.tv/esl_csgo/videos?filter=uploads&sort=time', + 'info_dict': { + 'id': 'esl_csgo', + 'title': 'esl_csgo - Uploads sorted by Date', + }, + 'playlist_mincount': 5, + }, { + # Past Premieres sorted by Date + 'url': 'https://www.twitch.tv/spamfish/videos?filter=past_premieres', 'info_dict': { 'id': 'spamfish', - 'title': 'Spamfish', + 'title': 'spamfish - Past Premieres sorted by Date', }, - 'playlist_mincount': 0, + 'playlist_mincount': 1, }, { - 'url': 'https://m.twitch.tv/spamfish/videos/uploads', + 'url': 'https://www.twitch.tv/spamfish/videos/all', + 'only_matching': True, + }, { + 'url': 'https://m.twitch.tv/spamfish/videos/all', + 'only_matching': True, + }, { + 'url': 'https://www.twitch.tv/spamfish/videos', 'only_matching': True, }] + Broadcast = collections.namedtuple('Broadcast', ['type', 'label']) + + _DEFAULT_BROADCAST = Broadcast(None, 'All Videos') + _BROADCASTS = { + 'archives': Broadcast('ARCHIVE', 'Past Broadcasts'), + 'highlights': Broadcast('HIGHLIGHT', 'Highlights'), + 'uploads': Broadcast('UPLOAD', 'Uploads'), + 'past_premieres': Broadcast('PAST_PREMIERE', 'Past Premieres'), + 'all': _DEFAULT_BROADCAST, + } + + _DEFAULT_SORTED_BY = 'Date' + _SORTED_BY = { + 'time': _DEFAULT_SORTED_BY, + 'views': 'Popular', + } + + _SHA256_HASH = 'a937f1d22e269e39a03b509f65a7490f9fc247d7f83d6ac1421523e3b68042cb' + _OPERATION_NAME = 'FilterableVideoTower_Videos' + _ENTRY_KIND = 'video' + _EDGE_KIND = 'VideoEdge' + _NODE_KIND = 'Video' + + @classmethod + def suitable(cls, url): + return (False + if any(ie.suitable(url) for ie in ( + TwitchVideosClipsIE, + TwitchVideosCollectionsIE)) + else super(TwitchVideosIE, cls).suitable(url)) + + @staticmethod + def _make_variables(channel_name, broadcast_type, sort): + return { + 'channelOwnerLogin': channel_name, + 'broadcastType': broadcast_type, + 'videoSort': sort.upper(), + } + + @staticmethod + def _extract_entry(node): + return _make_video_result(node) -class TwitchPastBroadcastsIE(TwitchVideosBaseIE): - IE_NAME = 'twitch:videos:past-broadcasts' - _VALID_URL = r'%s/past-broadcasts' % TwitchVideosBaseIE._VALID_URL_VIDEOS_BASE - _PLAYLIST_PATH = TwitchVideosBaseIE._PLAYLIST_PATH + 'archive' - _PLAYLIST_TYPE = 'past broadcasts' + def _real_extract(self, url): + channel_name = self._match_id(url) + qs = compat_urlparse.parse_qs(compat_urlparse.urlparse(url).query) + filter = qs.get('filter', ['all'])[0] + sort = qs.get('sort', ['time'])[0] + broadcast = self._BROADCASTS.get(filter, self._DEFAULT_BROADCAST) + return self.playlist_result( + self._entries(channel_name, broadcast.type, sort), + playlist_id=channel_name, + playlist_title='%s - %s sorted by %s' + % (channel_name, broadcast.label, + self._SORTED_BY.get(sort, self._DEFAULT_SORTED_BY))) + + +class TwitchVideosClipsIE(TwitchPlaylistBaseIE): + _VALID_URL = r'https?://(?:(?:www|go|m)\.)?twitch\.tv/(?P[^/]+)/(?:clips|videos/*?\?.*?\bfilter=clips)' _TESTS = [{ - 'url': 'https://www.twitch.tv/spamfish/videos/past-broadcasts', + # Clips + 'url': 'https://www.twitch.tv/vanillatv/clips?filter=clips&range=all', 'info_dict': { - 'id': 'spamfish', - 'title': 'Spamfish', + 'id': 'vanillatv', + 'title': 'vanillatv - Clips Top All', }, - 'playlist_mincount': 0, + 'playlist_mincount': 1, }, { - 'url': 'https://m.twitch.tv/spamfish/videos/past-broadcasts', + 'url': 'https://www.twitch.tv/dota2ruhub/videos?filter=clips&range=7d', 'only_matching': True, }] + Clip = collections.namedtuple('Clip', ['filter', 'label']) + + _DEFAULT_CLIP = Clip('LAST_WEEK', 'Top 7D') + _RANGE = { + '24hr': Clip('LAST_DAY', 'Top 24H'), + '7d': _DEFAULT_CLIP, + '30d': Clip('LAST_MONTH', 'Top 30D'), + 'all': Clip('ALL_TIME', 'Top All'), + } + + # NB: values other than 20 result in skipped videos + _PAGE_LIMIT = 20 + + _SHA256_HASH = 'b73ad2bfaecfd30a9e6c28fada15bd97032c83ec77a0440766a56fe0bd632777' + _OPERATION_NAME = 'ClipsCards__User' + _ENTRY_KIND = 'clip' + _EDGE_KIND = 'ClipEdge' + _NODE_KIND = 'Clip' + + @staticmethod + def _make_variables(channel_name, filter): + return { + 'login': channel_name, + 'criteria': { + 'filter': filter, + }, + } + + @staticmethod + def _extract_entry(node): + assert isinstance(node, dict) + clip_url = url_or_none(node.get('url')) + if not clip_url: + return + return { + '_type': 'url_transparent', + 'ie_key': TwitchClipsIE.ie_key(), + 'id': node.get('id'), + 'url': clip_url, + 'title': node.get('title'), + 'thumbnail': node.get('thumbnailURL'), + 'duration': float_or_none(node.get('durationSeconds')), + 'timestamp': unified_timestamp(node.get('createdAt')), + 'view_count': int_or_none(node.get('viewCount')), + 'language': node.get('language'), + } + + def _real_extract(self, url): + channel_name = self._match_id(url) + qs = compat_urlparse.parse_qs(compat_urlparse.urlparse(url).query) + range = qs.get('range', ['7d'])[0] + clip = self._RANGE.get(range, self._DEFAULT_CLIP) + return self.playlist_result( + self._entries(channel_name, clip.filter), + playlist_id=channel_name, + playlist_title='%s - Clips %s' % (channel_name, clip.label)) + -class TwitchHighlightsIE(TwitchVideosBaseIE): - IE_NAME = 'twitch:videos:highlights' - _VALID_URL = r'%s/highlights' % TwitchVideosBaseIE._VALID_URL_VIDEOS_BASE - _PLAYLIST_PATH = TwitchVideosBaseIE._PLAYLIST_PATH + 'highlight' - _PLAYLIST_TYPE = 'highlights' +class TwitchVideosCollectionsIE(TwitchPlaylistBaseIE): + _VALID_URL = r'https?://(?:(?:www|go|m)\.)?twitch\.tv/(?P[^/]+)/videos/*?\?.*?\bfilter=collections' _TESTS = [{ - 'url': 'https://www.twitch.tv/spamfish/videos/highlights', + # Collections + 'url': 'https://www.twitch.tv/spamfish/videos?filter=collections', 'info_dict': { 'id': 'spamfish', - 'title': 'Spamfish', + 'title': 'spamfish - Collections', }, - 'playlist_mincount': 805, - }, { - 'url': 'https://m.twitch.tv/spamfish/videos/highlights', - 'only_matching': True, + 'playlist_mincount': 3, }] + _SHA256_HASH = '07e3691a1bad77a36aba590c351180439a40baefc1c275356f40fc7082419a84' + _OPERATION_NAME = 'ChannelCollectionsContent' + _ENTRY_KIND = 'collection' + _EDGE_KIND = 'CollectionsItemEdge' + _NODE_KIND = 'Collection' + + @staticmethod + def _make_variables(channel_name): + return { + 'ownerLogin': channel_name, + } + + @staticmethod + def _extract_entry(node): + assert isinstance(node, dict) + collection_id = node.get('id') + if not collection_id: + return + return { + '_type': 'url_transparent', + 'ie_key': TwitchCollectionIE.ie_key(), + 'id': collection_id, + 'url': 'https://www.twitch.tv/collections/%s' % collection_id, + 'title': node.get('title'), + 'thumbnail': node.get('thumbnailURL'), + 'duration': float_or_none(node.get('lengthSeconds')), + 'timestamp': unified_timestamp(node.get('updatedAt')), + 'view_count': int_or_none(node.get('viewCount')), + } + + def _real_extract(self, url): + channel_name = self._match_id(url) + return self.playlist_result( + self._entries(channel_name), playlist_id=channel_name, + playlist_title='%s - Collections' % channel_name) + class TwitchStreamIE(TwitchBaseIE): IE_NAME = 'twitch:stream' @@ -583,27 +765,21 @@ class TwitchStreamIE(TwitchBaseIE): def suitable(cls, url): return (False if any(ie.suitable(url) for ie in ( - TwitchVideoIE, - TwitchChapterIE, TwitchVodIE, - TwitchProfileIE, - TwitchAllVideosIE, - TwitchUploadsIE, - TwitchPastBroadcastsIE, - TwitchHighlightsIE, + TwitchCollectionIE, + TwitchVideosIE, + TwitchVideosClipsIE, + TwitchVideosCollectionsIE, TwitchClipsIE)) else super(TwitchStreamIE, cls).suitable(url)) def _real_extract(self, url): channel_name = self._match_id(url) - access_token = self._call_api( - 'api/channels/%s/access_token' % channel_name, channel_name, - 'Downloading access token JSON') + access_token = self._download_access_token(channel_name) token = access_token['token'] - channel_id = compat_str(self._parse_json( - token, channel_name)['channel_id']) + channel_id = self._extract_channel_id(token, channel_name) stream = self._call_api( 'kraken/streams/%s?stream_type=all' % channel_id, diff --git a/youtube_dl/extractor/xhamster.py b/youtube_dl/extractor/xhamster.py index 0f7be6a..76aeaf9 100644 --- a/youtube_dl/extractor/xhamster.py +++ b/youtube_dl/extractor/xhamster.py @@ -20,13 +20,13 @@ from ..utils import ( class XHamsterIE(InfoExtractor): - _DOMAINS = r'(?:xhamster\.(?:com|one|desi)|xhms\.pro|xhamster[27]\.com)' + _DOMAINS = r'(?:xhamster\.(?:com|one|desi)|xhms\.pro|xhamster\d+\.com)' _VALID_URL = r'''(?x) https?:// (?:.+?\.)?%s/ (?: - movies/(?P\d+)/(?P[^/]*)\.html| - videos/(?P[^/]*)-(?P\d+) + movies/(?P[\dA-Za-z]+)/(?P[^/]*)\.html| + videos/(?P[^/]*)-(?P[\dA-Za-z]+) ) ''' % _DOMAINS _TESTS = [{ @@ -99,12 +99,21 @@ class XHamsterIE(InfoExtractor): }, { 'url': 'https://xhamster2.com/videos/femaleagent-shy-beauty-takes-the-bait-1509445', 'only_matching': True, + }, { + 'url': 'https://xhamster11.com/videos/femaleagent-shy-beauty-takes-the-bait-1509445', + 'only_matching': True, + }, { + 'url': 'https://xhamster26.com/videos/femaleagent-shy-beauty-takes-the-bait-1509445', + 'only_matching': True, }, { 'url': 'http://xhamster.com/movies/1509445/femaleagent_shy_beauty_takes_the_bait.html', 'only_matching': True, }, { 'url': 'http://xhamster.com/movies/2221348/britney_spears_sexy_booty.html?hd', 'only_matching': True, + }, { + 'url': 'http://de.xhamster.com/videos/skinny-girl-fucks-herself-hard-in-the-forest-xhnBJZx', + 'only_matching': True, }] def _real_extract(self, url): @@ -129,7 +138,8 @@ class XHamsterIE(InfoExtractor): initials = self._parse_json( self._search_regex( - r'window\.initials\s*=\s*({.+?})\s*;\s*\n', webpage, 'initials', + (r'window\.initials\s*=\s*({.+?})\s*;\s*', + r'window\.initials\s*=\s*({.+?})\s*;'), webpage, 'initials', default='{}'), video_id, fatal=False) if initials: diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index b35bf03..02f3ab6 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -1264,7 +1264,23 @@ class YoutubeIE(YoutubeBaseInfoExtractor): 'params': { 'skip_download': True, }, - } + }, + { + # empty description results in an empty string + 'url': 'https://www.youtube.com/watch?v=x41yOUIvK2k', + 'info_dict': { + 'id': 'x41yOUIvK2k', + 'ext': 'mp4', + 'title': 'IMG 3456', + 'description': '', + 'upload_date': '20170613', + 'uploader_id': 'ElevageOrVert', + 'uploader': 'ElevageOrVert', + }, + 'params': { + 'skip_download': True, + }, + }, ] def __init__(self, *args, **kwargs): @@ -1825,7 +1841,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor): # Get video info video_info = {} embed_webpage = None - if re.search(r'player-age-gate-content">', video_webpage) is not None: + if (self._og_search_property('restrictions:age', video_webpage, default=None) == '18+' + or re.search(r'player-age-gate-content">', video_webpage) is not None): age_gate = True # We simulate the access to the video from www.youtube.com/v/{video_id} # this can be viewed without login into Youtube @@ -1930,7 +1947,9 @@ class YoutubeIE(YoutubeBaseInfoExtractor): ''', replace_url, video_description) video_description = clean_html(video_description) else: - video_description = video_details.get('shortDescription') or self._html_search_meta('description', video_webpage) + video_description = video_details.get('shortDescription') + if video_description is None: + video_description = self._html_search_meta('description', video_webpage) if not smuggled_data.get('force_singlefeed', False): if not self._downloader.params.get('noplaylist'): @@ -3008,7 +3027,7 @@ class YoutubeChannelIE(YoutubePlaylistBaseInfoExtractor): class YoutubeUserIE(YoutubeChannelIE): IE_DESC = 'YouTube.com user videos (URL or "ytuser" keyword)' - _VALID_URL = r'(?:(?:https?://(?:\w+\.)?youtube\.com/(?:(?Puser|c)/)?(?!(?:attribution_link|watch|results|shared)(?:$|[^a-z_A-Z0-9-])))|ytuser:)(?!feed/)(?P[A-Za-z0-9_-]+)' + _VALID_URL = r'(?:(?:https?://(?:\w+\.)?youtube\.com/(?:(?Puser|c)/)?(?!(?:attribution_link|watch|results|shared)(?:$|[^a-z_A-Z0-9%-])))|ytuser:)(?!feed/)(?P[A-Za-z0-9_%-]+)' _TEMPLATE_URL = 'https://www.youtube.com/%s/%s/videos' IE_NAME = 'youtube:user' @@ -3038,6 +3057,9 @@ class YoutubeUserIE(YoutubeChannelIE): }, { 'url': 'https://www.youtube.com/c/gametrailers', 'only_matching': True, + }, { + 'url': 'https://www.youtube.com/c/Pawe%C5%82Zadro%C5%BCniak', + 'only_matching': True, }, { 'url': 'https://www.youtube.com/gametrailers', 'only_matching': True, diff --git a/youtube_dl/postprocessor/embedthumbnail.py b/youtube_dl/postprocessor/embedthumbnail.py index 56be914..5a33595 100644 --- a/youtube_dl/postprocessor/embedthumbnail.py +++ b/youtube_dl/postprocessor/embedthumbnail.py @@ -13,6 +13,7 @@ from ..utils import ( encodeFilename, PostProcessingError, prepend_extension, + replace_extension, shell_quote ) @@ -41,6 +42,38 @@ class EmbedThumbnailPP(FFmpegPostProcessor): 'Skipping embedding the thumbnail because the file is missing.') return [], info + def is_webp(path): + with open(encodeFilename(path), 'rb') as f: + b = f.read(12) + return b[0:4] == b'RIFF' and b[8:] == b'WEBP' + + # Correct extension for WebP file with wrong extension (see #25687, #25717) + _, thumbnail_ext = os.path.splitext(thumbnail_filename) + if thumbnail_ext: + thumbnail_ext = thumbnail_ext[1:].lower() + if thumbnail_ext != 'webp' and is_webp(thumbnail_filename): + self._downloader.to_screen( + '[ffmpeg] Correcting extension to webp and escaping path for thumbnail "%s"' % thumbnail_filename) + thumbnail_webp_filename = replace_extension(thumbnail_filename, 'webp') + os.rename(encodeFilename(thumbnail_filename), encodeFilename(thumbnail_webp_filename)) + thumbnail_filename = thumbnail_webp_filename + thumbnail_ext = 'webp' + + # Convert unsupported thumbnail formats to JPEG (see #25687, #25717) + if thumbnail_ext not in ['jpg', 'png']: + # NB: % is supposed to be escaped with %% but this does not work + # for input files so working around with standard substitution + escaped_thumbnail_filename = thumbnail_filename.replace('%', '#') + os.rename(encodeFilename(thumbnail_filename), encodeFilename(escaped_thumbnail_filename)) + escaped_thumbnail_jpg_filename = replace_extension(escaped_thumbnail_filename, 'jpg') + self._downloader.to_screen('[ffmpeg] Converting thumbnail "%s" to JPEG' % escaped_thumbnail_filename) + self.run_ffmpeg(escaped_thumbnail_filename, escaped_thumbnail_jpg_filename, ['-bsf:v', 'mjpeg2jpeg']) + os.remove(encodeFilename(escaped_thumbnail_filename)) + thumbnail_jpg_filename = replace_extension(thumbnail_filename, 'jpg') + # Rename back to unescaped for further processing + os.rename(encodeFilename(escaped_thumbnail_jpg_filename), encodeFilename(thumbnail_jpg_filename)) + thumbnail_filename = thumbnail_jpg_filename + if info['ext'] == 'mp3': options = [ '-c', 'copy', '-map', '0', '-map', '1', diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index d1eca37..01d9c03 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -4198,6 +4198,7 @@ def mimetype2ext(mt): 'vnd.ms-sstr+xml': 'ism', 'quicktime': 'mov', 'mp2t': 'ts', + 'x-wav': 'wav', }.get(res, res) diff --git a/youtube_dl/version.py b/youtube_dl/version.py index 17101fa..5625b83 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = '2020.07.28' +__version__ = '2020.09.14' -- 2.41.1