From 9d3ce6c7d24fb8fe63f4bde4718e6af6225e5a98 Mon Sep 17 00:00:00 2001 From: Vijay Dev Date: Tue, 4 Dec 2012 22:17:29 +0530 Subject: [PATCH] Updated 4.0 release notes The release notes is changed to include only the major changes and point to the changelogs for the complete list. This lets us talk more about the features included in the upcoming release and make the guide more useful and interesting than just a list of all changelogs. This is still a WIP guide pending a lot of work. [ci skip] --- guides/assets/images/rails4_features.png | Bin 0 -> 132154 bytes guides/source/4_0_release_notes.md | 893 ++--------------------- 2 files changed, 62 insertions(+), 831 deletions(-) create mode 100644 guides/assets/images/rails4_features.png diff --git a/guides/assets/images/rails4_features.png b/guides/assets/images/rails4_features.png new file mode 100644 index 0000000000000000000000000000000000000000..a979f022070744e5e9232ff63c6d772b14c9a652 GIT binary patch literal 132154 zcmeFZ^Lt%k*De}0R%5F{V_S`_# z=6nY3agTdEYlX;4i@-r+K?4B+!HJ0qeg^^q>jVM7IFmw1R3AQ-ew0M_Q-CM3FJ~}yb}r*BBodPc_G9S7#QIDQ7zE^7Vhl}LoO+9QR9lB4Ib)pb3iK=CaNz7>l&grS@{GQ2U=kIkq zFZoyQA-8A6OVX3cOuq0;)pd)La@uw@pgUrIo8>a+1VC4xfa=%M zuknH`v|{_VV98*@PEIWBfwRnMC=Xblv;3?_I)m8nQ%298l{gF0d40c#p)wi@?G_dl zN(hdP!NMm^8ob^kzHfK2n~o3nQl)2gpxLG5rQs%g3__2toQqU?+bw8=zTVw_jk=ek?ZN8eqy@a5gZoJ|f?sgSsW?fY*FY zA^k28QFHl9qtWsaQuyZ)vDF}51^8syP(b?yLZT64zdimUEykemFU=8<<-YmifYk!2 z>Hm}s@r!^7{1wd^L#@OzFf(Pg5CS#xt zU~UJihHvUA>CWqk)6FI8Co4&!@39ymGWtIH73j^?6snMw^EyGXd`^p??o-l<(owHY zssUZpJ>kTGAMC>1!m;sc!q8x_Vy*=HiLemf>T}!+w@G^G(nhg{a_)!FZGWNXLD&K9 zjpL2C9)&;9Nfr&I24?PuK$u8CY(cDmhy}S1`5N%Khe^)2SjK@U2+_4qLyx>Ba*?l1 z42M)Y4n-`882vjjc}l&nf|wbRCMh>*J7L@~hk=M4hUzyhnM&d;0&Nn6SYFxqucRn4 z;y6P5zops5o4>h!a}_A~4p(e7t5TZWlA$KkF6b%lNh=b^m~@@AJzNo27Gs`poa9a- z6Tgt;oTN>YMW#*YE&f*c(gY&c{jFQxH?LYLM|iWohdWSAC^a`h?}uKhUWlIm7IVKG zNn5OM>`x?_l5dCA(+@4%!sWR1iZzE55q_Cp!NFYiuN&rrX zDwR~UoNhI zT0}j?lfPQVU7=rGr(&EZT{nTO8B3$i%J);_r@S-2j0CL;t#*~%c@B?URz+5Rr%0!| z_ej?-f+d|WzO?S*oY0(3-AvuQP5m#WF=bN}d1`r_18n+@wxO3i+v=p%AsJ$^ViChq z@{6-;3OX&5^^>sXdnTkzWz4OExz#JGs^!A-+3dYsLmqjqX^)gJ++iwV8EC6$+Ek}h z^3=yv_^RZppHwXCkE)+~m-m~|U_ZlinsMno3PdzzPHLF+ATBTbj z@8Iua*-yUF81#+Vo6`Ab}7g z5;hoL6t|Bx38VERsY*FUx$0-^z23Rmc@Yl>PY6#04|0c7N0}$>gYGNHtJBl!^}@ye z)55b17#mnQ)B$upm@t?U1P=@Y6w)V0u-CA)^*lF`Y^XzgxQTM9gE zeB5=!_YmZsl3mHl8|`N2U9g3?*5K#Z{Q=7Th)c}}!e{>db1_j71EyM&!mm@7?UA?pTfD4qp#Hdodd^ zJ3AV8IK2hEbTgls!&d~(S86ObOFL_Jw`|^a97kCaSc?9>7!@9kFvMQB3SFC(%a*I| z&@rhy-y7g>=9k-Sr=C!Ux9GP(wK!chs;e+tP9oBpy44%q3f+<+S&2PfSM^kWTpha$ zIBhSuD|mL^aDsGRSv_pIR!PxQ)%yLbaznFXckC+n>SwF+Nr#fIx~&d^X_P@!JwtJA zyLgqE$XwA;{*f(UJu^JpPlH|~=J8rH6SYsgOb;8*E!z)m>RuDKDS(Fjbc2<^0@ktT)_uVLo-7!YjU3+`;}de`mRGaIiDuY;d(1{ zubj}InRI@cAk`?A71IC2D_mN6F^xsDV5Db+ThXvw5_~o*{Ip*Gvquu!-+Frt!uSY+ zQ!3z)40M9nhOCFU{|=n9nJonbP8!()!ibC5_p6{NXh=39JB7$(%qx%i`L%bJ{kPr8 z%?ov?{gd{)r|a_brOek8vz0RErXFQ{J+{n)-> zqCWrAA}|8{8MRJxG$;lLD*As~fV@^c_`_&MD%x;Ei#{0D=(5=QB_>oISxI20$SlCNP}w2VpygSZ?o-%b`VA zM9{op7_!LoMSuOGDxpt_p&Gc0t?Y1U5?p9BtD(-pM9MtBG~gw!_{(c6105A9wpf$$ zXeH6y?dj19E4xail*C$5h7-B!e}SL{q2+x%!Us$*%?EcE8)-M?9VjyLjL*79*V;>I z0duWo$+$%Myb0Nn58*s-k|#f@ecg$`QaIraGk$4uiq$+Y@AEGU3Ifh??y+Dcm;8CEh;+Jr*j1%n36V{HWHC(Y6OL`YZbyzi2Ag50-z|{;(4h5K<3lQeanGUKfACJ-a z;>$OjMJF=b+JsU*Ji_0S?jFC=c!gs@V|_XQODQF|K3)9$imxDB>*a!VF+(>dMI9~Q zl14b#K)pIc@~wFr>3ekSM&zZ3NPXqw{vQ3m?e@X@?)j5ctJcM&L7l9>!gLzfbKSc~ z>iy(_S$4@RGwy6Jz$t4C;Tvg$3rS>(ADJ~BEFtB3-Qh|9m37Mw%mKV3ra^AFa|rs~ zvv`F(h;a&zDv=7uf*yhE)ccM3T=E)t*_?q373ayuf z=e;!fCiWE?quGnQChrqFk$$tgT2p%kj;ZP{X$BF6!L2zi0wAVxm#OYH*BqIw)KNYIF_@r!K5>L?20y$2Y8Q$hpir5I1bN}FUz$WCY;}c z1t279*dM(X?aD6SE5)FcskZ+{wD&;_iv-FE1&aSX{7c$C=BY{V-E3?1 zahGOsO+()5yidjaqo`U+WUWQF?zo7QJ|><;|DO;p3SD8|=#2(BT*UlvB-4T#*)qd>9e&pI^8; z5%rRKg&yT?9ls0j!E=_Ta!gs4@l9tA#yqY1w^Yfv+mkC9p7HZ3B6BQb$Ef_2m^3^9 ztNd|$4AqWbSHs1LKWfc#llk!AI;6rm>CW6@a2whWibUZ1mE_yDa=a64Kha0)AoNY@ zaGfSJlf;W~-jdTNwor?!t&dTPVipNx-7g@F%y;ETI)0BU{26b>FBeHp{r;75qTCJW z)AzIaQdUJ&6P_mJ_s?K5)asE(_sd_xz7(nYJ)z?MdMoES`_`}5k8xmaC4m_hGr z=+aVin{Nedt07ti!wmnrjxHu5I-47GhB^x5_2&^H;tE%k=IOhh()DAolk<+qS38Ay zwEzfZ+QF;2dqVwjq7<|aFy{)ny<(Dws|@pMViM^{INWcTDX~i4a3i|iVV!0PGBrht zqbn6R4EgIfG~#zaDKeFVUgi%<|A0EXYu%F~QN%&G~a0@;DVRw@cyVu{r?*6em zVYb4QU#ilgLzX&pNDffx7kkKhhLWk@>S)ixqT6v+vB~;u-1U&ylq|#b)yltg&wIL0 zZ->@0Ld>)56a3PXmgQpIk&cxrx@6Wn;0zy?Hg<$Oi5ID?LGZi^QE1z5DC*xx4MxZ6 zMMhG`hcN{H^^x=vUA{}`&Z5Vqmt)S?(Mk7TJVSCU7l7-(@s6M2(I__1li63-&re(IG^BiaA`Sa^sI6?Qb9^L=GG zMln9}X&+&8=>64rHjI$c^H8I6H>fU#LM+L9q{x|gty)$up4|+R46FaHVbdv@L}@oF z*DJxIUYBB+V~K?x7f=zJJ}QDnb*=25ihvCw9+95bf>OqM;#aF|ss8NA)M_kJ5~H~+ z6g6_(HOz7u&&gZ87T}^EJG>AH!pu6#8Ocgr&Sdg%EVSI^zURp6*|T6D0tLx@iwt1q5bm zHLP|gC!DG2v7B7)p2g`PZ|CnX!sN{HiV^qHB_uxx{Z1{Cfk}047c!$^IWM-kdC~lr zNIkAc8T7|o`R*rEH0Mk$r1MycV>;8BgPvU!dxea-l#IR9wY^-u_waVk-mqe~xC&Xs z2n-!Y7s&R573{d#9NFQpm#At&ey4J@@rctq;2F0;iBzt~IWVoui_K5f2b%(Lav%zT zn%jekByj+u*|mshL$S*M9EHmIj>Yh03IFA!T|m<57Bf-q zobJCCShMlVTumXIjR?)}34i(>^J|MhJQ)o8+l_kX--ucKRF!)$c0N8_hCdTj8?bU& zNxrGa5t5knp|RE;E&Gac$zUz7Kl~q6gN_@rzFmomvFhqFNyf5UU%gRhG;#1kWdeZ^ zxvIM8!ExixfnGgCyYh5$;NQ#dH9&BtZD0HCY0u}08JrY@6fs5iB{<~MJitY3!3{A9Lu3w zq)28rX~9nvEDq87;nI6ZUO*h@ruYa!k@2eiGn;&j&uApDDtJolmU`ueX^=#a@Ag)o zNOJfQ{LoI#1`~CGYPD4>MEjEbfCZh*fccY??l+@QI5AH#81x~AkfA{K6VU2q65A~< zD$x+SS1LRDHu3)epmbLOFYWd=a!mBby^SM#Hm`6T5|P^{xKD$+KaVRrkPI6WwL@}Z zgCZD5eu%`*;^WMY*(z%weed}SsxRkllMypf6k8s%)NKxMwXz6+cb9DsXncrtbPZ5! zsWCB4XeElLE~dR#C97!SGXH=1?lUAnb_0f|{pgIpjUm~gpQH|AJi z{3C7uDUJ?g-?kSVIzbn`00m_Di;XHylh;*N*Y0&3S+7E=t4jJM2M;(^t@7yY&k?J` ztXNN=KB%gGh6FV})xT7x5Xv{IA?yHyC+gk?FRB02JkcnXs@Bl!K%v<*x@cOpbq zV~-=9l8=3VY+W3L#u6i9iHt4xc02q`&O9D7g~|wOOn~dkh$;`5%E&z#E{y`rm>g*x$IZ;nj}Rnr&D;%YOrDQb7cFJANjS4q+U)3~Q=yp?AF`T!2( z?A~X}W6!8w_tV;)xSCrS%>n1)??$U&RHKQQIw3ig43U4H4uJ1~F6*Gl4ek21YC}&f zs3z(3mC1lW`19WHp{p0y=9M zT`NrXs{5PsoKc;%X1HSxdw4{f;n)bAw2c7wNxp9)=s|K1^p4vf{ATgLkp4oZ>} z1ilp)URkzI6Mpd&nNgtV*oOY<4lfZmtxyYc*y?-QX4hsrr)_cXSz-^#t4Y!>VH{$t z)u&iP^r4Mk?}==k=LnIz?EjKZkocm}XfT+tK9KiwuW}DFjWg^c7rwFP(Aq*^Vj^0- zWrY3kXm&PAHwzDE&BpZIb=K*E@P22eh;Tl4}F-$kMglL6M) zxR|CKlsEUw-Svr@_}Cj7g5`GWzLR9 z@zTkM)hH^)5L|fN5&C=6Cb*6mJGA+*Fm;jg#W?vXGoLO zAa7h2&SvcZRTXonnlT=J)j|p6N|a|B?%&i#`M zB26YOS7eN6Jq+NjoYKWKJ0|^^rx4MabMS_gYu z1LY1(H}JZ}oydxhhl@X%@ul=GL$jE*uf|fTa#U#n1QUe-P>oOyh(kp|W_-IkBD{US z=#tVm;4YO>CW&{Ck#pxpT{Oh+6X@^j-b;RkfIl7kCcMUX?+1n+c{0u~?J5E3;8{F2 zN;e|09KQcnf+hPD%gNSq6dh+oUug{xKb9AF4%h<9!?|#{6hfI|1ctXTEfrLkDXya% z>QHuD>vq(@BSVSMDyb4W@+whO&+HUbcd29f@~bE(=#LVc>c?BBa+8~usy*je*oz0} zIZ1emzQ=bHwq4eBb{}U5AX$Sc8U+zR=`>xDw-&CFYD|6Q!z;97SRwPiF+5opb| z>gzwvoAXRl{UVn!j=sGx#?B|k{PYG*)Fb}~W_&Ne%z|aoXlVF|c+8vEP`s%>BNxE{ z7fqxy3reZ@?2dZ!jN%Yx&QauquBYtIM^TwBx)+ZxD+oYP40gAtt#U}BQKY?Qp6EJI zS_6AQR7PT1RQ)94^^W6VQ(HH5%A_MB1coA)xF}lpn58BA5K}}67y#)`biJtvh(KG? z>@h}?2Ie6l=CgON0;{%A=O+qW6Pkh2G2E}_79z&-pRj(eM(w9T(7n%G%XJokoQjj# zrGJ~tbeladV}YfvbUIm=i(ocSdV;pYpF4en##>Jc#Zo6z%Tfhu@_!)!(d(QGat-&Lw;6plfk0k#M3HZiUop zG+PO+*++aGZI)NC$}Tzsa?1$%en8GxQO;*zE%bYYqg=fObKL5Ap+J6a(dk{&#qbiI zX%?ls(HmQf9c^i;xJdISJU)*awdtrJJbrM@(PbVKK(obS%ZQqtGi|YZR!dvvpTEYoSW%9mUHv)TSzN}ONuJjQGd=zYu?|j?ii@6x%<#9$ z0SJJLcB>Bp|HG4;&On5IkRiWgPC&t8ym^Ayy}2P>1qQXJ*B4#g%(+bChfLxr{Fc@! zg$7_w24!7mANYDy>~)QZr2#b*1EuZD2Jc8TMF+4|3Y4y&6fnLwTqhI{?*x0aCuNDh zm-q;^$oXnzueIMET_2_UPY4ho_=a8o5M6NKl(P{)4FgES0y@QF$aMiq(;WG?tSCbc zI3}OqUQ_ED1S7-h`Nm5W_xb%Bz9Ab*9G^CtKE@8H&E|`NODQdy8lFm97MF-lmR%*) zb1)Z4W$c?}bXQ>2nx@2(wk|mrG!V;=(8jbdSyqe9Q5v#1nzgsDs!8d#Xi!c+%`vC7 z7|ofva|hm;3n|4ERLezGm)OZ>JGRmW(~ho^cGhPid9F_vc1u@$T~&UIo*>pV$GXbL znmwkq_&&|vfR!O1ve$lMq`p`zQI#O7dKlPnHs-GuGL%`#mg;9qy$}^M)u>Ui%5KLU z8bTNsoH9gZ1F`CExtzXowyXiKK)k0Ieg`I#$`jlSm z=0@j0Kczjb*fv`=YIWeyh*ZFf@su8un)Qcai25*g?kL9rhV(jiP#WoaNJwU0#xc|&1)iqJEM&-^Ro(6k_~!M>7ijX1iSVRjAHWcvq9_cPoJhbv1AkA zW|@|LDO`g@ze6U9)^23Km{E0*|HeM;%f81ri|MUk(6`v^Q7B)RqfH=regsX6!j9); z;O^sVPD;+&z_g0DD~H*1v_@^D;^a_FV|blzkx4!$7)y%d%7QYm}|9bMVwWbWU{Qer0uth$OOPpc0yO~FJ`y`uzzV26Pb;0E75pZq6P0(!qglZ_ zn@KZnuMQEZ*Z^CVI;|jN8Tgh}nXj5=mCD+o60hZ4m#c*3JUe0=&u6aJia60Tn!KJ^ zuCA_&c{g+?y|k&|9w9pi-PZfL!bY3Ucbu2A{t_USmjNG4uIFHhQg)Rst`W0Hw4_C z#ND3#Go-TB%sQ*UsigL*GqRzTsR*^p?SvX);DjxE3DS3LK3bVERV$KdWJ?dS&3V|G z&-0@_;l{H{z(`0D0f$-d@vJ4i?Sj+TpEn5z*Q$t~$;DD4Cy7aPbx>{tsFadAvCcE> zbZ=w3L?$h@S1D!}HaTT75vz<+Ox$#EP=2G(zubldUer#CV9`$_XIi0B<1RN0S9YN*E>A8J{1p4 zY8ChTj0RS=bPlp$Ul=@zf3g2%{7@@ss#S&3g!|xSi~Drql z%B`|@Hs1WpxxUoJ4jpew)sxMDV^^E|*l!3gT5$S;6UM(SLbOkmk39Ckd3{|6dB*gL+24h6>cwC50wR9w^Z-Q z)o0%mvd*o{OPUsmSIP&&x@kTGwC70!VrhrEG3HE$FNaFtV#-MtM_-PF`?YtsYXU0B~N-siSgGxO4!EJRwpqe~6;}_eciSw_t zDg+;6MDHIhs}(Wdx^^H`)eoelB)_FHuWv7ptR!~No2{NF z$<32i5GZ>HKFl#MYUMqrUCiz_?_Dwy-VtkpJ94*{%e7fz^4&XcDo2LGDJNb{&8Z}w zQ;Q@NFdkUX_T3owsn<31c9|+THG_YrF&)jb8=#qHXen#vRSoJSmOQ_F4}_>ixM80MXndnq zcTi{qD-9WJljcjDtst*nurs8DQSOtNP<1cm$R#HK3TN8_vXQ6ikz$`u2)fV zab#-fNcj4-#8Wcbh*{cm6>9?l?n?J8iU(e5j_u#BtSQQ;UOh{~8)Kz_cZV%(D@x~z zmID`p+vdbEbDe)=DOQ;)PLf<+QcyBBoP;X9;16hl-@N)T zJ{&;M0@Y+NpR^hxsOpwvQz5^4TN@Oe9IK}$Zu-rpn}+}f7a2K*c-gc}$C_NIwgJ2` zN4aK%-6zKda~vmuV6QfuV@KYo_IH1ZvPZ6WT7CwoG;sm(p#)SsPRN;l!lZ6eMI6$0 z0G|mYO)##&);Xn??Uj-P34{|$(Jo zYkMRLw>JGc4kq_vu;2$(&b2mR%L1_Wz}-{fr?vHV@^dnS3l{|x8O}d{KR6!3+H~MH z@!TNI1F5?5|LJWJufe2E(WQcD=MLPdbn!xwg$x8=4dea7Riu9yH)z!#P!q<(?*DdE zy?e+$OC%&o-y#rjBV9F%-(tZ0sBYn(01d=|AJHfPO@Fw8h*7fUG~CKj!PPGJY4sx4 zl(eI&u=&D8s0Zy^Ry3K;U0n{Q*dWsx2kM?&RaIyk`A8<7Iy{xI>vW>(TL9&hsu?zD}sjDn+>2~(vRRG(KdDXV^6i>7(hJ*MMssJ}o z`i^dWHoCunO7GnT0#i*)vpElU1-6ZmR$%vzHjKlEN7!Ve5jDj^Q#BfXAvk<=H(9%1QK@v6i-&XKYB3o)qt2?MF zrCKKfLrNH#XBr0}W$DhGG(oyHJ_Oz~!Gk|-CdUiRvAQxQP64ry->8y*=!;mLq)EKy zWWI|e*+w2y7pSeT*v!;%=wbF`;ho25K&-sP!qt<)iPD%u-#dVA<~|i-n}Arwa~B*u z@I=G>1yHQdCRjY?W~cj93;K7Eb%7J6G%w=ELUBeD))dj78b?uvH8JRfPR+PL^M3fCD8%~w8CQ35B(l?&I) zET-XBqJDU(#vO6U^jF%A*L~lxqTc<`q+QA!oE2}Py3YT2m&6xMwe$dKUE^)j?GpJ` zb?h<ToM{h9*S_u55SgNW+CgDS(-bdfT){lT{r9wGM5(S|p zH*qmnUPI}ai?0IxA50u%GkQxcGpiHd1wc9%rH3?eB zktljq_QSer&xb0be`*J=-m~s zM`vGkJT!DI!U6jr!-c7d+Fud`#-dLKWvUtts-U2MnRq=>b|M!zjSJW;QZoq}CNUKB zx#|7|%;|Qv%C^GY=RO2u4{+^N`mCU;=l~3{zfI`J`J~MWwZB68Kx|iAtIs4CR9^^f z)rO5~I=XWL#Kgr_ezR`G{?NVWX8wu7$ZCtnHy6Q=yK7`NRDO^|nbz*mv!zebY#vS8_4lbzb2}!xL@xapS*Qa55U$Z0z8@?j2!Cxa!+xZQ&*fy$2lOfhti553MPF z9aYa5-COs|=;q&pHC=tk0NHXYrB3*7W?vFzJK1VH1)MNp>8U^2lL77GQ?ZRDWQh6q zk`4OlyGZ}Vrs#dS70?8zr&e4?~r!n4xQTq-9_UKkj4 z|8#nN7{1O1NrO5FTI4@^^*S~2)}t}Ci)@BxuXr1&x{6+=Q;_HYs__RQF#`YyGp6RI zU6++}ikZ{mDbo3yeR5SAgXArw2t??0=#-ID2AvVLJ$t}DTOu!-pA#<4z{FJ^mCNbhRnAHmdoqI}iOx6p8O=T}SuX6(q#5j^YJP`WZhD7g|zi*!W<)RUz z)34X8lO)QRne0u96E__!EXKz{;v$H=&>%0|CZ{M5j+)x?;OG!$Q<17Vd8kESXQ{+- z@1LB$Lbfmu4{;RgoZD1+ycDVnm~;7(O93(i>YRsjgq4_x{Sg=^;hw_UhG`pnco?u5 ziEt4$Y5JDj6`SpZ_fmN2?Lbf3jq>YKhA4`-Q?ee$8VvncNLt z)A7lp`#$xl6(70AxM5M9?~p1x^hqti$+j8IPf=Q*f>sN6*;LmU_8Iq>{8{XA{t3r= zeqAKLfgiZjSsQlky(I9oXWTYn)h>#I#5;Jl6Kia3X#Kle8T*>wLKUmklyyyy_+N-O zNVL7%;u8SFw`*Fhb&2{sX zU?DzEJ}v4DU;WOm$|r}}yU-A+OjiH)jEDJ(7}QSDmhHKb&&-cIa$J-=R^k02gH*R8 zpPO9wF&4VF08yEn@iE0(5g3P%(5W-}!iv1u`HX&WUFIztiM%(|D{Vwj?sWld5qphX zG(J;~iyIuB5EJYlEFNQ2(?#U%x@Kr^re+<9SF|<5axNUU4qMkK;0`!Ohj!j?L|)W? z_Bj_Jfs=7%q0Z(PZys5QN9$9hp0QHu&-C;yj`N$7#t|;S@w>jwtBel2B@d8#+@;g; zpVyDd{b0!_%C+yhJ5CO>2}Gl-PID7>rh*cWP8Jmq7RwdiMc`8lG&8K*e2OU3+CFi* z#h-vPhLOOzBQ&^HMG&{L=6KQh2)KKuQ>*Sija7(R`22Fs#uz*A?+nn{W19;o%329V zKEw3+GK|se4XWP7h?J}Z_Wdk+H%ek$N@<`b$Wf0ai`Nr*kH05n1N=t9rjYK7OiQ!$T;j9q& zXJ)WB@63vx*IOZSbdG51%I467gK5Rx@*s-d5{c4!d(9M&cR02CqkQH_?1hJa^tXNf zta?;`Y~WQMPo_B8di(Eto|QvUQNAd-n49f zbgbfVcJ#oSX=JRzFUSv_QVRTzIWi*fdP4%(B|Fbibz#Dr-;)%{N7= z!O_9v%e}P@3}8Ap6YH}bU)X;AMarF%_u|}N96xg6s>__hQl{aYBkBYD0X4|4Yj;!k z6m!A-pM-0?C@UF-kOlMOKL7dDu+GX$>e~}GGv>wo?Z`^3nt<^fOdH3loc(d@VIZ@b z^G_*C$)s9)b6CxlXL#KN=O5q|MA|n7?Prn|r8#_*a_8Vy?d)yR*egpHc8$vDrX0wR+Ud$t&a5M37oaPcz%l!t3%s5=`_v9N zRn(R6$BF5w$;tnCvuSaBJ7K73Xq7J`|9(#Siy6tP|JC7HjUJF71Gq)$|`a#~XQur$u z8qL6oXS5KGsr}NKr5T`2fh9!fGt_Ne9GJR|d z4`=$C!5lkre^H(AHBYs2{)i>Dq167B@MzY|aa%3Kig+64qDngo^7eBf?$=+lUl{0M zO%12lZjjPgm*~7OE%9dYla;D+r0Gj#5f;Z7GVEP`xA$X0_zPgypB%H+Fo zBN#{d(s?X>eqxp7%8co{A-R|`H`-2Qu*rDu(qZ^z(Xn>Nn#w|jz4}kP>Vx%-+`J~; zo}Z~yI*on4?^tx4cJPck4%kD=`<)!@MgQHB0bFTr!(PAY>$GwiXA4ByXevj8*3_Xn zv?pkHCh$$ElYX^lu_BzLIx}X{f`87>=XOfba>i9TM>*+H%Liq2{*j{9|Fts7m#01ikxEU0UsS+GaSlHKLuaJYHm`l(t~u)CB){4;@X4Cq06-N;2M{2g2q-pH&L0Clyuu&9DcGzK$C2;Z>eA{2~)E=#{KL_NFE<+u#Z=EH{M#Chyt3V7 z%?EqQ$Gg}`PpU)9p8%cJHxwj5KatB(a4vPSMyt;rX!!87YAPzB9uNzM&XihG3G>k;g zs|bH2_@!Lj6D4T_eUN)% zn?1|pb5{gP1I?6>JtH*3QMk%|uL58!y4Mf;or&9@pYGK{jkJ({kbp1>X|^Ah?V*ux zC$>w$>f60OsgExtY`g!HNRkOJA~Bl${Ed?a7lOxmoULQJSC~3A3H+}k`yXSU?Jh#g zp9MUzTW~jT#y^`)-)d4CsAei>Eod!mv6@g>LMH!L4;FXBHxIMW%|Wr&ZZcsU7Nkq z+wvkiI6qEMdGGchM5Ge9X#R=AjtH7@f17)sFXL_f9$IGs~`o&@*^dQ*T@bv@kTZluX_$WC=Ghc(Hq{f zMOWM*CH+Iqlc6&2n!o{vS_nV$&=wo*KGehXJcw(uRc~DDsGMqgu)(nscg352hJjEe z8}V|dEhl`#P4{MXURePqE@(Fbeu`#6xkFu*|IAu&%k+Mqk5bfnCnrHn3_sG@2vQXI z+~nr&7u*9=&hT{C`{TNSHUyZ?lg;JN!E?u~q9eEu9c)YIb(HK;xfPStMNFM<+X#*{ zUj2u`Vxwm$0-Ar6{?4_T7yDj<#~tMt6u%7(!im5+wTVWk! z7MUMcRTO3cZ|$WFDIs8b@m+A{zQ_EqbT@BHCN@`Q_Pr46F+#AtdoBZi#}AV1Af8J? z=>r8o&2t`=id!ddo~Ixj0%L!M=q&=*K9c%2(~){r#iT|Sfm>EwiHPSMLBorp7TkBt#8=xoSc(}6ch}-Y67lR5il^ymGw>{FSZC;-TZak;E=q|hqOfms2lqa5pYk~0Iy10;OkxS(KA$iR2>2~$~SncJhS4Uq1spIa8>&1yTPRTIL<$~oX zp`y<6(tF8yWihXk!A&prtOIR|YC(@>+8dTon#H2qJ9K`fT2wzOiC#D~_XA1|?)`3F z4HZ5_V^wd@j)7{fEBe}l%5X{mE%z6$djses2%FhTGsW97YbbK(t%O48nzV|A=7LI3 zocSKCm(!r#0mt`xiUAoXXOR0Oy}6KBivvqBGg%~e}QhE7yyH)I- zqKK8wH4qm-&qg4jW;5e&1P?FQmJlPM{e;1!=dMca$+S0>%J`pS7Zjf%nU9ZWMEhyIaol&f|k)29AuXu=Z#2`)sunp&9UqFN?G z-flGIjku!Y(YVtI;T3a3;@wCGX zY&&zWxUY{9{6F!p#0F0(B!+?JUKi15`0{hXe-?7E_^v)+qRoD zHX1u=%*IX{+qP}nXpD(Pg9y3%>{-?WVorO@X;z@H?gWzu?RiK~P6HWx864ih? z%(9NO$)Y-fwMdmwqSGglYbi}tDg;G4@6RcEx`gj}J9DC+$32zI$RUUG zgFgA8tOSkk(OqjJiZ697DTCeq6qH4A`*2Ssd--Y@ZyLtXb?^cA7>G4`ehI0M2F8sM z){y-l+9{3Z_U=fziIlc+7i;3re|uWgcjzB2m!$eS1D_pdUXEMktnm^nVv0CGY$6nH z(X+nrJDUCtUr@Xr>~5Y0#s8HNSa)2CZmE_`J_WPhw3M?OH--18IJzyIrpvXdKER{*>wxTSK%W1mY zd@410wsZMG*L_tmOI{2W#vS?@HKAuBQxIN@bhYMnR9af;)!iq`!!oxqNR5y2DHr5qgA(RE7JR%a+b%2=u3ZGclC(vrSY-v&= z+$F0bIm`g*q%%~dGSQV&2^(04%SZtvQmkYd2 zyX(kVRmj9|?0>yfjO5UGSQmr77J(qOn^sai*5m!B+S~Lo)EBAPG|0Z_EIuLMf>)rJ z`^xPef1VZl=$k@XXns@TiFCTR|MY6%#w>AB){xX9SwEf;TwxY3Wq1QUEy$;Sc76%M z_aU)}0m&~rRO*%_0=g${IB0#n{-tee;=P`!?BE%_wmt%B-@#+1!z3!kKKEVJ+f|$nTCM_qm!UYZe$;SdhuK%+F`#3E;mn{LZ$+=DI-SUn{&m z+8+5}RX^wHdW1`WYKRm4W>0-`i|11K(D6&d#=wKr`Clxa5dym2^4Avl4;?0`D5H8< z#Ik{rw?A}3{qJ@Mw@;qIJXbn6owC+gLVuw9nZIjr5+(K_VmchTg)wYQPBBL8Pea0Z z_DTNDV0+(Z`==ID`>)!R6!2e(egmNEZe3d34Qs}`%1-U8cS=c)H0!|U_$7%FKdz5V+A;S)8a@B8#NB~`g@Dsi-l-Egmu34{aMtyl0_+Uu4E)B3* zV6~37`Zc0RnASTX73_I-sKDRizbk{>@TbIo8g9ltpch-q2LsO*C2*Np#;pmdwA>f# z9ZWuiYO1RoB6ee;fVQFBk%HFQ?GnihhY-kPv0iwwdn?1(Hw{S*OpQtr!NTZb^euHO zu+byXEf-BeTPa~J~(zSJxZ4PUOI`>89XZd zccSv0Q$(%7M&m)p*WZ!p=8xgKp8mgp&&VqLY15eUF)NcY{03?{G^F4Q*KE;|kDe|0 zzO!dAa#l_8fkhDCJr87&yKXO7oA$hl`XTt}7YdOrf0O=W)&%F#nyGLfoCRGP5n;`Q zX?1i-A_Ry1Fw-#ikOUVgNaKO!o&j3iH#R#PX^_iXh$Bf*Y^cuZ%IJh$IH~LHJXV z*@GUL#2Iailh+NvEtMb-GBkVxl5O!?-511Bx594FO$@qjN}^%GR*v#Q>}=%>Z<^607u8{^gnYf z1$I)PFKmeHND_rZ>vn-^zNSF$Kh))pAW9Lw#@Fb4`y3{%B)OdiJ>IpHp-1Ng=z36t z_5N*K#BKB++-wAz8)*PW?Bd?e(qCR>U`d##g24kB;=ap3Yc^QKw1nEr@Xg-nf9OPR zkgld>spKD^e*iZg|9!REHDlA9gvmN)urqXr_X%u9e?vER6Bx2}_;D0tJNp#ueRu;s zfi={O@S}fLPDwOJCu1H7a$;3EOO^qGE-(`Fqc9suyY=y9N8yU+98JaQaJZZaXl6A3 znHi-&gi!GX0jvb5k|faqq64gtLXP1Pk6-6=HzyDZQ>8$*yvI!Dmp>pVI0OF1T!LV+ z9zkN@^L8vna22>fc1%%!PeFGE|Px4`ODv+7XxpvajMBZ z7K_vWrN;t|BW1EvcJVm1TX3;0EULeqiLQON3>qW8gnPeP(683Ed zxJFsIkENt^rVeWlMvOEhpPq09WV#O=UtOLm{bJf6%^T-XuC44FSl04kHMc#HY!P?$ z<{cx*1fNL`AFMh)MU!?G13#nMiVfZ0hq8C>X2{FK-jbA0a(gf^;srwYpUnz1&@wnX zjgg`=5A!Bu6l_2`AC(Lb?>4El9?UtryS!!?qC?0S#bAK`d;FClTK=)Fai+ldKSmRV z+%Q=WMOP00q?fG%{MWkDPr6xq#cl4w} z`hEq_gw>i7({>q$`i{spf~_A=t{?CS3f>U@Ymkwy=S%9H=ae^{v6}EPsr3bCJj<rtAnZAZ?*0V2nPpSoJn*G9}32Z-LU*~@j85E&TB z1EfC;-+La0C7&cb-^Q;sYRpcRE;~3@z4D|uvP@zM-_2!3fcN+w)&z&oKWl5Z#WJy- zfMIcTwk=0-c^YA2C8n?xbpCQBG&!wm@)d%Hk;aFbZ!l0Wa>&B#CssE*WYXE^&LYdd zJvAzc-3Zy3V0Kr>o$eTZHK%(AC9Be-z$zMG9iL1N9q_j2>ifK!dA|wa3U{~+_KTjM z6`OiTeaGUwhdV1(kg%y5XNku)`$x6?G8R*_&*AM0sNYS3R{moAm10rAi}1pe5llw7 zc_cE{U72B{vjV^3e9Ia4OxL`mOu|EofS~`aO@Ot7m9Fx^+ zTF(R$QN3Elt`8+jG6)iXd+;=*q;As*aa)RN-v@^2qh$NPtlk_IJ%m+lZ7luKPByVO zXT2*6E%Tblo5^1x3{i$V75D4Dt>NJe2R@rRyV3HFJx0fG+Vyd+ENO4zzN?7mcS)%# z9{oH4bLy#--xGd$xhCm$At`)V;J6T6+(-%7gQwG_JBZpT5>mUGHjj<;_F%+-Ohu1o zOi=NAVezQFSqwb0uTMa^l1^+Ojvd}OU`t)WmL>&Hw5@rT62iYmk9C8FU0Ii+rVyVf zjrtO5J%4>N;c_+Fcb5Gd*^n{jf(t*rz;0$qaCI5bu(YZwj^X?Azs6bAI zyj=$>!IfIkf%vaS2~EDZT5X1Lb0);3(9T^Y6L7N zkjc>-OVr_PE7ZZYrdFL}st;cz&SMjiOIz-%|5fNC=X7t`K%NdbUC6vR1+j6lYvzakSchj#Y1vie{0ipWKwM zsL542Wn;E@lN0mEG>JObHdFaQ5kCa)o-eDDN{qw|*RTqiey{DX7T6$(W^rdoGnUZ) zL%V8TG4EU5p_SamhPF*y_|)R+9rx=&=`2p#DqB&#&PbBpO#YqAYW=Eqx+Lf1&JDR7 z&wEqay-Vk%LZ*RBAlA`|7B5UBjlYZ;+j%D8(}m5)%lgM75<^TG7VY1<6v^#TXwHz3 z1}}}Wd(28#()YK#Q!u-phU6FF!Z(gE!lvmh^W)54T?a|?9^Zx33{>LO>M+>d%Ni5& zPoH;l`r%ilo%zrtmqsmd8%{_>nrN+$7v`Xj)1n%*{VT_8XRW1~@GKW<6Y1MZB&nd{;gFZdwBgPn2WBb60e|RH_etL!cW7N;xtUU%)}Sy|LE&e z8(~~t$*HS3Op?+`uivvv{Ovx|dyG4?{$vX8$a!JI-9=Elav%o&` zq7nK+;ul6~(EKv~<^#EJ$%eqD-PtaN@!wctle=#RgDT8p+w+lTQQumMVXV-ZxZi77^V~Z0_vs)us48yVquLPUKiu9)L$gIv0N16zH|87ptlpkev++^`19lkFTXW!a6 zCZ8R>AOy&yGK>zw0X0eQN}GUu?s3^-uehG7-cmh=M-g>Dp+6O^QVdhn|h^@ z%wYa>twLO$fIC$s$p+>bt~nX&uT1a_)W#WD7yu;=ru$McDZ^QK5<~vAZy{ZtmrjUw|8c zFllB=4&Wigx!^@cCxO4}^!_4TNA0D;cJF5wqa)t%Y%^9?GW-A%P#!|Lspyh#@Fyx8 zj9|dr97ixY&3IdcQp__R4$eFdtQyb8LzsiU z6AsrE1IO9RB=n^-h>05<$1U8%R-bXcr_M9qy7zX)oa=Vm1Ic>Zg=?SeLzloCfvm=d zI_W{~^_awpE9u;)a#1iEVaLup{o2O=&dNsic)Rq zd{r5_a2DJ}fIHBn%V6yldulbg=AHVo`(Jxgf}ccIm007v&qugBGo1&=D!^jR#miat z=dw#rT3Yyz67{n<6|LEGMCHcs#Ju#Ns7b!)KO7I9`p)g0+vzRluKNiYl2cX`+0^XX z2ut8pYUW!}*wq5ol=cQ#1PA$Q0n=!xi`!3@*LICoq)8M*#!e1;K?PY^vc^|@W+k*p zZ7kI}b9SGSMFk;IQ%=Ce_a61*eG>vJR5}V0vj4{D!Ggu)F+EYh8t3MXil`3m*BT2~ ziMwBbVp`XXFJtY4Z29GbDh&7{W+GwDsT(nE1m47vYp~gsmcuNB9B%l^178=tuFVs+ zug&uT%Psl_!VV?b=rOt%hBw}yL)cCaPDX^9BBBNP)V^d%V-AWnfu4LBx?KC+lJC3b zpvw-@WUKl6Hktfd`ngX+q16duX-6Z4J2Gc3cfOWzy5SaxUqZK0=sWzK z%|y?ubn?_2eode>5~lvo$w}W6kd|!H0~j@^J@eOHK1Q~`>On6i*5!ZIgX9`X^npyS z$^L4LuTPzXT|6%dBggkI>UPTzcjK##_b(KL5FWxu5YA&gKmj0t%H59hNz9`kl!|b> zL~1Pfy~<5o^i=2_^;acG>4Sl$wi4Li3vE~5wCZ$adg(?f67@l`KdG?L-gPBAE=qnY zuKt9SY=im%>Kho)wMrd7n$@fQ1(#$E=4rI@1dxB|cDza1|sCrBNky$y|=7B59vjKJd5@RQ|)Vp#5Fh zyjhuz^sM@ql9{bLD5I~p2DnsKJ?U;^En$3iILLA9LdhQvw$ZN}{GZvKBX9~>71Ecs z_kr3?4&nz)lE)1c5ysA4Cj*ZpA1?vz{BiOB&mSik{Nax|v=3DwE5Lcx*NF;C!8Bh2rEg`6 z^AjKMDMpeXSn2^QJ6Ps@orKoOMYnlZ){QJy*wt^TMlBb9c?x)1wrCK!+Yy>XZ1`Mm z&^F#8nr<&g1&C8lB!~}u#7-?IO}RO>*e)xTZaGB=bogLjbGPm(PkKB)c_MxySMZv_ zDv_xr(ZEYT-)hDW(SF{xU!GZ*jg0nZL?V>HL?pBw^rL~v);Z<4`P{h3)Xu1q(3egK zOMA8MxeNX3W{5W>X-JLQe7zZ0z`sQQT>f-mu^;(A`9~7C2kT7Rx>E{CqGt$JS3>-Y zM#w^rsi7o>+!@GNlz-fw{o?m#yu|NxSk-OL_<-rMU&e(+zw5p_uMPY^>Q>r^MC>Tp z7@ASp9g375*)pc*uY8Rwew1?>tpy1|cU9ZT6MFV7-;&0rvf>_JKe9WTKq5=I=Z3Oj zV1PL)3^ExC4CH6?RMlGgdDygR?dhaxjQN`xa!VKitEWdhnjc%zt~ELs)-+d6TEZIf zYB}1~GUn)(Kk60P=22yg$U)4f5X^}`WxradYjc+H8>?q%zm#e#5Y-%LnR(4QZWCGu-5^a_w}7x zKpOLC_s+Z2XEND9zhHf5Plgn=Lm9Finz;ypmjQ|S<1phHX0jv#bN`pU9XV~1cEYSh z=NPefcQB(-x3?y5ggXbu9KxknBupUE!eidDQi>R*Rhd(v;lkmBW+G-_*qB?LTSO#T zWef>>_|?TrBEiEdkI9>bS}k=B%EAk~ae?xDt^T$AH#ckCmy+OhFaEZ%*XOKhmF>t(zwqDJk|hBd}ce$`2Wyher-Yeut`YJciXKp&+8SAWL#^ ztp1qbZIWgY$VvhJ?}{hd{Kd7J`ek*G;5tw52D$(;z1}a%!ns#cpP- z=MI-vu@(jtB|z}9&HsXqE}%JNnOxpf3>-vA5E&WV_6ulk3UA@fo;hqo>t@rEgKx8y z&v~X1PN=2|N7vONqB(B|91CSyoTw|hC1UI2vF_Q*W3#w0!jwn&?bO0>K3vpDqKZ;= zMz+@8-cHF`!`BT_vKek-n_Z)EI;x)dO0N7g84P1nQye3spRskn2pjQqL2Z)6HPG$O zwnW8#j%aVrkEb$Lt@~%osnByI#HwDW6%FqBA92R$$Mpe_dVI~q`I6)Ll{CJ@Cw*Od zZW+ceI#K8bXLdS$I1{}86cUwgfIrEcF+}8~JvoMAs88VbUU4|DW*8sK^A!sf^=BMc zO?U44{>BzTxXR5>OVOT;B+3WAfVXZuh(Q&6SSXt^X z#JNh#I{#Gh;K%JtW;#)tM{aKi~h z2mgDl%vHb_bp^ur-do@Gzsr-i6pRySuoC88zzgWR4J%IOb}rFPkmlPcEbz|GnimAC zvZ6wfc}$U)u&GIS@@=&g74QP#;KioIHIjww?k_dMqN?DSyj+H}R&&bAco8a!V zPYCCtr0cbhhdJrf9_XgMvaBLoDf*rCekp4{=Jaz-MvdOWJ8fcaHAE~3-_XkYs#{yv z(M3N@sC7h5$&ikWbN07_-Fe~xTA(kvZmrF>o$}23GP$SICNqUIA%?2RUo){bm+Q_q zP^-#_rYbeKry_7i_ENhdGT@#T#BA%GRgld!z%AdC(JGKO)LiyBMt1~q6d0%M5--fT z(7?IDK__&H@U$UxyHML(e#1S+xf))vqS8P^g9i8!O;bSIL$T6Q=Az3c@Gr&WUGx&3 z9aS&+^w5-qX~5+LH?VwL)-R+7`d;Xq%#}8A5dzT?*wUydEq1^X4l?YQ4ms7p33~tvY+>J@Hn%k>2Ri zCMFBXV{lzJHfc+sp}7(h9A+>O-PitOatJ_t3i@}l!6pby!QTewD3|xs8FZw9Z;*qU zxz5N?`}T-t-5DNBW&jT~G^kB@H`K&;w>ckfb9_@3UIKRVy&s3tx(`xMG4qg~2|T>w z?V6T~4z(~Aq`_F0s#=yb4z>IseX~$*RzJnOhO{kn5ZDsQIO0Qy3p!}=j#(;px3S^z zxIn|`>57w9f8*Qb#nc35tL8Lbz*gS<8ae1NW)yT|u#4T7Mm9GF4|=sU_A77`${8b3 z)Pc`<3v7ECwHvJVE!@iQykPvZ12~}UmfrZkwvZaqEr`M{5Y`*8%%KdJ{L_ebfLlNW z?W_j={_@PEO4J;D5w8?@t??p;ceR32%Om@!^!ZIF)i!p=-fvUVpvdgE#98|r4!siE zITZp;)f~QPxYT(e6@7BsN!^z>3~&+zfBoZNS=4t2y>F8qPNbgs8+;ZDM?&2=+*^A_l?8x_VI#3}nwSw1nwu$LJRE z4qdqzz}AlVQMrK#c?H_OX^E-oT=mO3S~0Kxq)p9vcF#q9FH2xBNl*bH2@&uDkn3>v7#aOHq-Zcb#_>I?qQ2H zdr;w6^F!~&ow(DhC&B8kA0|QepB8_Fwr*xEi6@P{K}cJ7z%`B=7Top#R);7!8-0Lg zde0?mI3fE=WYMX|5BtaSiujF%NR@gY;!|h@2ug_Le1Or_r-)ucSo((jz5PVc^>Co< zo-Bx~7A^#$!Lw|yp8Rb*rTbu#p>KI5CfWH*7Msm&Pk8FF0A(D5389mpRDXxU4GJn1 zI`iuDJ*aWh8h2plZGwdA3Bo@*+K;3*VI}Vz)&34|+AR_sovpJHa^*{jr!SF7sVxS! z^heA)syXM0Jhm&3{n6Zo)t}oz0=n?g*M_+36_yw!MxdY%zBZS zx9m-0l3y*2z7-X#MzTYE9DB^#4xCP~asDV1I<*(47N$$>+GH&%&qHEF`#=kMkaymv z0)9uFpP+`58^gW^8SnR5NFgFr6h+bH0p*-%`P0P1YImm;(NEYJ>jxF9_O>c zCOLeTRJLUHEn+;4P!1{awBWDD+sQ$HsnioPJa+ z+}~9M_fHqk`GI~am&^e1XT}m@IZzF4ko=-Leze|8gHEij0P>#6E(tVoOJ{_vo=lQJ zPN_34tk9!L*Cd5?^NcsJKJnQqemPPxaR2B~!6}~Nx0K44LAZIJI}Vb44I*bU-M{Bp zT}UvM)JJxr%J8Rf{1Ek{@3<$KrC_(U<-_m<*#dvAMwK9H1XW~F-tmiUSSV&M4YKUN zJ?N&B5LC}>dc}|g1NVoP5IkR9{_rt;MDp*id5>yX`~-CR6J61dL+-&;BvA%pdX9Ir zY-9Y6dZS@P)5IuPj7)BI6_ge?I{5$3%6$fvu>Vo7ZjYpEX5n#62e>iyr%^%z`84K^G=Hq#>09b8P~h2mW`}k(r>OpU|0_gmFlqML9t?jD8={KuM;< z^*?g{P{a8OBwmnTWVYo2l7*1)uD*bTRlQuEsfTgOqX5BtqG=krrFYoHEGN&v0qK8E zBcNN3#J*dfus+DmStQVZX17l%BOOaJu>-_P%4-1!*_7HH*2D1YyyCtn!slCYuvaq4 zzpE)JDmYvv*-kS{Aw={OMKR(H@B~=8bI(@4i8w8>>0WX5?&YJ0@=6^w*jNXVbLKAd z3I|>`d~E;yDsa0F<_ER3=zr!98nhzXkJ+8pu4jM7G6y~BYq&&d7~#E_=s8yEme+VJ zt%?+-;+hqI7(-q=zt~8@Uso3(2u@72uK~URZxK#3{S{eJ+i-MhNsznkfz?D6zj#9q z^{nX=WuDJ$CXR7uVSIycK10p4i~J3Z0w}n@q@du_yE6ZIz(@;Uj}f{2pZS0YZ9}3w zCcHNXr1F*y$fLC%kx>J6bq!9-GH|{@OborvmKEOR*i~^UH5tP;bo`Pdu*Fl&5B+a2 z{iMLb^ly<^&tpK@F{*sH>hXS`KIA89+KNg z5Y?#oJTZ7mMMqZj-^g=}Nq|2;)NVIxDMaLmEV&&WWuXAFvD?0;`hbaQxYp4(ujXu* zv*mVqb?Xah?eD65BToyogy1AOUaREqBC)|Uw2$kAf&DTG|IMcvTDOj4?~*Qs_xY#6 z%)I7Dco>hiXDGF?%BS5^mkZPw~7WsXK`D(X$`>#bsBxu7Pox!`C#f4pp!-X?B4YvmE?X_IX{k{ zlF$NN)#*4C#m=r@0kqL4_bM-^US;=+QR$t11xlJ_>NwJ07p2Sf>M_t46;Wky{+bY5 zc>fqFZM|D23+ocH1`%UIq^LU)!1bNwEsRK1l{28fy%?w*M>*7bBAt+&^sD_B4y4LK zQtP7pwg2IeN3#?C<&$lA=z}s(F6qJ_6SV(lLH9S)EV2cKbiFb(4ZtFkQChY=6 zr+~9^U>eqMMbDC2#YL9+%}{^uWoXfrW}{BSO}m1@gN*g8XX)~k0-oU;BY))`T475D z4f)L-tjs0c+Qg{44YUOnd=(3%V1d)nC|0`o?fX5F&~9JkZu1l4(0GGM7HI(lF4ldo z&r~(zm`&pT(bdgKvO`IU8f?7q-<*L_bi3+aCV0mmbnm!{W^H~7U2j4UA5O|k&-F*M zLU8<}2el=m5g*5igGAFs>a!u^T2OxdS4K0_US4Jd7^anFZJ)9s#}8X|yN_IU0sY3h zL7G|R_gYVasRu>fNSFxNhaS_%%9~MY%)dq+=o*E68sNs2!{GeW9aUITo~)BEPl<|OmNMF=ll{%!a@3H`V^BKO zaHxMcBZ5meRZ66~(_t zJ;I7xKw!5OeqM&RL$QBw`Q1VpVib*P-NRJC2LQ0db7Ae(u0xV3;yxYkEDypGk4lw7NIU184aLAC=18@@!m8#6`36I$P1XI&&8VZgyBZqf zdu>$@`0}j1f!T&K#&l!p7GvIpp$4zd{8fWx)@OB^HJ&zER=lGrZ@j#TsML)Dm*G0C zwzv{34eJilbnFZhF8xkkfbnBl5{bY2*(hQYn>V~gN@E&;xbLsf=xMmGXonmmd^}+gxwtoTk3Y9bBbffg8 zmCL#l??c9i`sc&1jcHcgqEY7;?xx#blYlG<+_l!6Akv9Lm&aOMsfh(B^7y=3%l(&%#np3uU(991d@ z$SJEbm136Q&N@chJ92n9QjSpSx&3Sn(RV!c{wkrBk@$Jp^xy$5((70K%ucJ?43U}e z)Rc_1P<&4p!>|_UIfL~BlFfQkp7#=-D{9B58SACE_+sj{K)c8@iCzYDh0nC#U|BFa zGy?+KYcf1msy!{39WivOO?=Vilg+QMyKh$3@ixIn_& z3TIlH{QPyZKaBHQ6XpJlO0X*mj?sEV-Uhy8ttciLj^n&%r1Y)%99SNv>Gc^Q`Z>L_ z#KDHZ@nI`O&vS9R@{vM!@Tj`1Jlt3VWlTF*<6h0Ggs$KT&olY!Q_@>8w{k%9##p_* z9>_#+Cf=B7CmZ4mm(PVZm?g_AbmF^Jq54_NXL8`KWnzOA;NM}s3{O?ORqG z3_+qAB*U9pd^z@~EV*9j&|~cc9O_smu-ju0Jb^YG@sYD5pgq+zyRC&3TUiQ9X)&Fo z-gX5)qb6j2U(4apLd+@O&rnyX_R5lT$nvdDy?rPb(`3NC zZ3FU@cQ8zbGJo4R;}(?5@bOd}9^{bKy~Bz(dsE`tco6Se?cc9D()xsz`7?lNF3Av$ zl5EW9JxN4FhRvK9k-Z~SYL5~qEyz-vKPZT=i(WEH*ETQs^Zo=|dvS9>tLmcl}gOA0Mq{mwJj zv{rM3-;K|rl{v)N2SXWcN0#a)Z3oHrV87P4DQCHD)cS6G$q00ZKxhE$Np}c#08SWQQQ>%Y%-Ku{R!Wk8iR#pbo=cjA^`reMZ$&ww zJZ>QIZ{zFrQxC0G#|YyUk7yGv1%*KyJjJ;>QwP=!KUbtixsN_bS>`_xL5N7sPu4ex zW|+(*ZpKijDp?gmRtMK%4f7MXq`~OUS;7sblk6+R0%oKp~Hs zoEHpP)#>)F0b3IQ^RCeROSS^N6&E`#P2Y|0n2aw zfl_cHk59nNpo)8T?}75)h`Uju+gNS&K2Zum4;zHWrK2|G)90O*OS;})VjsdJk)sA< z?7!B(2ISGzx!{SeB#|TLu!@g;s@L>#+Mpjdfk6w7qfLM2rLJd7fG9#V|IwR~7QU~_ z(!3dsBa{9&glC?+*o;5-{l!MA~As1N@h*|KzWZ^e&LeE>@ z!dnzL;jWv;Oiw~>WbIS)Q0Q0WBW~;F8MmjfXCx%4tdnLC{2FZd7W2p*g6#soi&{7h zfWX2jyJ6k6hl!WRJvj1}WhkOltq_~w&7j5T0N=~;JHq(okE z>52cP&LlvlYc%Z)aQ;ZK27&dl%jYS7Z3;VXl<>`LRFX!j{!mogO zlVwr86Zh2H4lj3iBaHN)QC`nhoGrd^wc$xSzXO!Thm5D~32GPfl(^u&zv_?S=9#cf z=9OPWj^30<9mz!>o6s=tc=)xd$16F(Yt>G_4bszuT-#T$D;xN43e|Yj(*96 z$L641<`VW91)Q51G<^B|p`e?u8V{U4maP>=NhW23Fv}s?kVnXd_Mw0~BFX`gy1lx% zUaOgfAMs7uUE6E9AlH(s-GGI|tT=c6!pGlqnN_FUa{tleQ+n}}*Z{MfM>Vm@3(bZP z4sO+Ud)?<~lMr`)SD8dBUG+VuO)QS{Ls{y7VS~1C&ZezMi{8u0in21D54gt;y^5W6 zQ?^ixRlk#2)WPds8(HU1*^LeVb2kiE9ULo~LGi7qoRjxpj$sB9?+f{U?n4hgBfNdQ zAwh_H4_DqT9 z4Z}c>x>hLPfBj03WJmvFz*0<44q}vMVW~&Z9rOp!>1@ok$WU#T(W~LP{QQh=aUo!d zJM{sO%vVp+ehc1OO1BlYaj+0d5F6|%o~}2t`%HB^MAH7^Q&1^~A%Le42d-OlOrEf$ zZCFv(eL_gPO?%Aryy;+a%L%jS8}qGcxBkP8=r{jmT2&S~$bDMnPC>?g*#;rs0iKzc zTsSH^@E|aPju;%o7HSrLaty~6T0f>hs>!>e8VddO{b^aF0wX{@p{pY*FBJQ*=b326 zm}+7qTW5@^AJ*!ef8R+xhZ@_ySbJv^DjWKGESUx9ke7tkwJELcumb)ZrlF@hUAa13 z>6na?mf3BEa3#baO3xg{-+TUf_kEf;O#9f2&XVYT*^9uJeHvpAgFFT8JCCxgJl%6_ zxXps-%oil%5O#4y5&j`X+@sW_G-cYiMes>pvmLX#ClroKBxcRi?5z)6%hHFhaqNTK z_|D+j9~SjXwM$CcDuF-=5AjJ$jQ-qpahs;@ThmMW)zYV$q>Pn9U%dcq7E^nIsi)US z-q*5c?T#Jyc7s#-D!GG=WJij>VP`+lA827cd~zN6LUWkouspy{WQNC9N_0}#(igoW z9LdU<6-_`xch`;E!E8M^)$MChCH7(X-pKVYyhz!@UTRycq*TmbhK=$h~ySuRo+^AC>p2A}|R0=uv9sCW`d1TQ8xXw8-1MzX9bm9L?Hp(pREzk0{Mu`Dfb=yuSjPDo*hFfAjut{p!ISN*$7@>76PhTZF?~Y? z;vhv@6A8Zi&T)I}IrJs^o{K*4ZYy;!2|v-UDrm}6V@t7sr>6)58d4U#b)aQ0y$Zz4 zrMc=r7Wp_7TJ(DCVH?}4(G$X)FWG*fY8L)c*zeJ>r^XF{Ne*Cd#@U-iJvJssH091T zs69ZCoy8~SF3;aO!a@yc-gnTmInYLU4ae``Z7uEbZCCpW!I0pY8mK7A;{e2RXAG&Ym4YQ?f?@JqcSKV!3x<9Y2 zbPuCS&h-kBNIJNf@oWU9Vm&X^EobnceO790S{V9kcaDo6ULJ+_%x^cZH(G1e!##_= z>1r=70jJ}_^HQmvL*Kr-ETdH*jVu%Uk4DaO@@hAg#-`1tUit#%+9|wt&-N(Y+QhE$ zyx)R%I(9Wkn8B0dIVE%V%J1Z5mis621mf+PD2y`zzcP6gp`1Np!@PSzQVn$nFMrRj z@D)tlhE7^JZQXK-Z#lgFy>Ci2y}gbjt;Cykh95yaBFp?`Q3s+!a~8#}%4I*~r+0s0 zUqn}H)9Q*2+E=3PCXal2d#L=4q5DNZe<4Hg%j}p+g8Fh!)o%*JqDId_`=w#Z-)Q4f z%pMXWiGL8gW=B=u`-MUzanuQjKE>Ltjrd3-9q78;%KLJD0*V5n88%r>AQyRHYu*1E zCx?gDA}9?|#cgoFQ#Ov$_d2*2!%A{Ogu*rGgVw=Wu0`WRMtK@ zG2ClT!n!2r;+2^ms{ORrXeP{s`DY2bKl#U`F?@~R_{b|3QudHP50;P%yh?imj}+gm zO8t3lm~fOVlc&7OF>YBh0C52K;Kil?JR@38wcEl4N2Brn^Sy5NYs0()Ki1S!&NUXU z`Fk0==Cv=B8-PyvD2hNXLFI1_Yl{Iw++~X)G{OM9#yiA0uU_~QM@Q1xRn=gWN;(%l z+jSq#myjjW7n2oTb6pC_h9DFkI}7wB5dJzL-383s{kY`<-5fKch~3h z{UfG`fXI*7wp<(q3}_|+NWio$8#74Uj!OpML~z44oWmzy5<*ej~=aQ>`VRWwzWIFURIxQUY5 ziLw8q1@NahgBuDs)bG(RR2{(A1fYv5WG(E|J8x<+jdKV)_$(GYVp}NR2|YrJd}E^f zpxlE-N{FU~P?{f6yfw|oZspH zKmdBM{;#JC>s*b*`TUgAjBWZ`{KGWfIDC2sVjDtTWq3N;N(q?QYS}-!Xvo$pr~5nN zByfl9X{KUSbmXEAzfd&DxScL;gl{w#h~524wJa<_+Lhg~wcyEj1Rj{lb;{HW!G z)JWpgF;t1)sV9;hUMa$;Q1d;nyLs>(7WBFlXnE8)VPQwoLY@2FZ8ITgkPk4yy1B)nQl^TcOza#hPpFi9OnSlvMyN!L zz9aeVUlqWzirvs-`oTUT)Db-h+A5Xi}KU_j0}?5T}bo;l{?ez+4ELnnN@!t^9ppEq=?ky-ujLxj}|l ztahAm>uajXeQM-pC4Gj~KDR812055sGNzX8v##KG=%&rmFebn>gC>$Kk?MdooW-o8^` z_PHa}`TwEn9sJ{r`fl%rO&Z&FW81cE+ji2}ww=bd8aCF%wr!v3eLv4R@B0_bd}j8w zuiswlyVjQYZrw6h%ze{wNw4q%DU&aj4wU>Yk;;YrrX*-6rvzvJ@EeUmeFR06v>@l< z9-aMEdfkw^LSD!bzJEZgXfHy#DVaDqoC7f8?pB6k>-x9qA5J4T1bs*Z>a7y}o0 zV+yG@+9bWVcUay!D2whbymd(B@v_F?9R?m=96n90exBYon$e!C@?c~?&jcNf`+`cn zClb>w+k9^rG7Q_%*>~=O;Cp5@lT!f1s>BOVclbeN&e9 ziFc(!^$Mq8DzDpt#SN2Y^&(UHds$1dY$yeTPJm7oFovFvl@_K{4br^aW7R@ZEjg}j ztbzowkqrV>qNW=x4T z^?e)j+f7lK`d(eC+72_?i}w=|KfSPYUP4-&l{jbWSWb;m1Pwa6UywteT?Mk~c`w4Ij z$4VY)OQ!+FY@Ms%uJ`U5clo-fs4*-aeZC)gd1FqE^>J4rncXjc-MYj9-W3i6Uy$0G znZHHfIuDuIb*vCxmtO4v2Bh;#YSK>qo8=1+^Jn7MQHMp(-Q8;8wW$Ku2Og&XF7^Ab zSwDjg#j%xOtJspfl7gs^$>IK0PW{k!cdzKJK*LSA<&thaaLt zHtLS(KipCXPxjK5YaB6?{m`dl<6Ixab68k41wNS4ymv}Nu~F0T`p7oP^KrLiv%+H< z7xQhz;jR2Tu~FKI$Hx|Pkk}UpjPSnKiIkYu|3|G2CN`nn3g+dWGVI^?^w^6Kzd2v# zc>mO=FdmqBDED$lmQ&9j-VRsPRrp{*d}wugfs(B4z0v#%_UFb1UdwCGCgGd6yHzIP z0Y%9?FZD@FrVLZHmB!&yej_Y`c#I3BVI^NjqUo`}nH+#uL9H8=z!{~e-~_J8_{Koy z47#}C4RSX^O1%6wgiJ%=i;iBM9#)v0vfOOWbh+z&F0`S_(_+lemg&8l`th@74O%tE{2TLp3HDUuksX6Qi!o>O!ORFlH@(+DCNPLd(A%)oO?7%$qz+fjFCl zxgPE*BJCC1$vm}FgoyokSBxg8eMKxN%wEu^Avml`Ly&!m+30Y ze`O>AAe~)z>kE3*$*5R#;;~fjjWOBBV1hhFG+9oFFfwuCK zYqSKX4Z353$NJy%tz~X6>1CC~l33#+?-kWQHACPYrjaD+BYPRK;2WN%efg-6^a7r( z-~H+#rrlK!v}2Rjazm2bq_dd_TtvQAF8sQ`r^ye-sHQ~!#OpOZ+WLf(U^#+oC+!K% z^m;w8+h2AHFj)#C?XF-2GNY2eARQKi*EkfFidPM$vLF>JtN3$Hp413FM1Tw9-<(N| z4uVxe^0+8503<;~2tx-oCZKeSq*<@HdWYG3hC|*3>6oZN-#C=Wqg@G3d(%lTXT*L< zT+A)%)|2xU`aDwh8s=gfbJ+9u+<93R8`kZn3YI!Ev^^CvT1n z*ChwFEwjf7R2T=_?LwYLCIINO?(MhLb08i?ej3kz?_5J!V$UG@DNlG3*0WFI8X<;| zX!&8ZfttoV{B)c`ES8}CF*E*v?$|QIp5|A5oxzoHSS@Fm(=oW4b>?PhH!C88*^&vn z>xAob!5IxC4v-2bFzA&Aq!aYU0)06O(S>;DUHDzQ+eK6c(}-PS50e0lggwa-wW}vh z79;WukhFpe38Rn6pHqFG0OW#iY>5*0Mi=O#``OzF8F)D`rvr_73s=KFLypCim7?F zD8|an27Kp*C2WeXHJ?m?%JXV1BWX`A=?&`yV0;1Al+QCA{tRvBf$_s*CHfGp2JlG{ zdEOCq07sJHMnN^S?C_EGib3^X#T5$lB09i&Wp3(0%Jtv0goSuKyyEgM@lod1YRxm{ z`LOjujnGA@YL?s#h*aWl);8Ia*$`}A-I=A50+X>ErJRg0aPmXI7&dW)``EN-PXxiDnmI7Sm8^)2^%xn>suB1(zK>9JA* zurJ_g@#(u?Ai>3%K@S}Yl|6lTS`qemfMHG%ewOr#A?(k+xVT&zHZq(S7QA=I6Sj%5 z?AS6G{6Cj3#<1fSX?TkDSkMbSj7QcAbk@ zFnq~M=~drziHWlJaY&YWpeU;VTU|^kYFZxVoT)6cBHZ!I&+Zxz(u5DdtNGmWU4XEY z%Qx^{;2EmYs7pm9w%%E+QwtYZ@b+vrmHn?;x`@PE^NdE!Ma;osiOhCN|(+i}~-oxeS+Z2n2=DK@QZ*j__Wu*b;@tSd?gGQkbs= z$c@zbie5 z#5Be?W~Lk{tW?9D!D_H%RP4@ED3~+P51Ml1Wx-6i;F|dx}Tq6u5w#SL(%GFG4mC|NZ zQOuOITABl=6G1De%s|31Q6uk@0-IA$9!^8l?1zbmDd7#7DK{o1;FybdzhXg0A`qaRJJQ9d6uE;N^RD$_1?lxO^nf%|M)F_gs zxopSQ9luqq4dzIOE0cFLPzX4;G%>{5u8<$PRvvKCPk& z2K|_Rmsy&|3&TIvDp5d=`<|=apCS*RsAf`7?8p93ene>$@6YZMl22>~f7_aHJ`Ow) z?D?|OU`N6^JSlL7k-FZuXx6FsXeRO7C#@pINy*9>Zo{q8Y(#`XFNZ)U^MlpnZh#s8 ze4$9^>;|`XJMZ_cB;QrZG#}Xbc(}~d8&vo{JQC%^VAz2Vc_(z9XX~cZbR%f{IHMpd zE1IZux-=IGpF8Pjdn|A(I)81o<64nBjor*~k7UZ_JYqBZd>cqsCEc7c9Pr(x@h^&Y zdEl5gw#3x=w#HoFhG{Q0Wk@g#C{nBdP3b}2Q0m$jzf2w{e5|6rb)%$-?_EUV*E1WD@W&izNi467ve2{T^Z`|nHhP_T!@c&?*E+XJE zZc^elZB3g0q!vO@D+WQCwm-%KRZ|~*4KRxhMsFz|V8Akl$067p8&OS*|ML7khTUpNDm#RI zGBVi+`<1$4U|43ni?XALmc*E?F*x7eK;GPGSopY++2A#?6wdOM_$$QXgXlXpMs3eV zYeBiW!b@O7e0cLrlcH`IiDQtf@&+I2aq_5bd0|s*GI?<=Y^Konr#&CxgI6&mh2TTY z#GRwaptPAQzgHMiMtWi>7Xxr$z^yS=Y;Y!)H`TaoOT(`5HfNzYrgC%79VQ2!BrnBQ zAp6s=?xw^bD(cBoy-6WW{GJS1pPp5{fKDdI%JkF%ZiFYt_2&hHsN071X_SgGrg6Kt z_kqek^A*paq|T{I{MC_(VdNg(L=969Q!OQ>DJ|Ho!Zk2P8V${U;OL}90DHIU4grx(lW1Bz z#@36xpL@3rd6}fh%tRjRl6xsTo8^C>D#!a#ssA`#7Oq?JKsNUZMd_rB6l>M`S77c7 zWcC|Oa13yzT}1a498yy@5sWl5;LV23%V0|xlX~qD6uuguHkWr&xx@W0tf>nL)HORM zs#9ZsfFeZ(%mIKxF1x47)a}4cGisIe#^3Y%H{yk+&xB&lX#=WGwd}npKWmFxD%r%?90BS>sw=@S2<@e=Bz}Q#%imLfi%FvWHy1 zW4mJ9g~hQi@#-Pw&GwYMIzyNjn@v=(6WvlBPZEQYQj3SLYb+?C8VY^@9gdj?yG#u@ z2s@}1Mn4Q-g;#vFEY}WXYOU501*K99glvA)i-t9st5WCa*<#3bvi{?Mfwi^&j|qdK zidoE9n!5eX9vZyM|8VbeAwW!n-I=>Ryop7ubJ7pj^rTcg7N(-`?RUYJLyp?HPBZRO zPcyjkTo7$~)pF|#1dV1p+Rz97pFgeskx04%MV($pTKjqUQ3uY$bHL({s{U@QF~B%F zpo(T4SzD?$mtvJ>y$(xI`aoQzt7UwX$hTF(G;y)&N()obHhI`Z4?MZlpmygqHUJth zcDwQWM$F5vAefuS?rA#XRu;MOYnyfo2( zM?8z(HGY*|WDmfHUqD?{!17zvIwB}Ks$7(?P`~is)ZLM!@$ zntEgwhh=}k5Vga0cHn?RoKiJft?~MVY5M)U^zz+#nl5}hZ=%Tl@5u`C0Cu_~1lxhg zb>G;Sdf|be>#L`a)!W^=-e6hwVcJQ|zIb}ujZN=h(_s@>OVDv+j;^51ws!uoZEs(o z!cMMtL&tnMb&Yc+;Q|5~^FQHg0hY1mm)wBIF$=t1>5TQ9jf*YWvMq)$OlV76@D2(m ziplnM1;TK~npN9Hp*dXw z1DD-DPtp3Ht*;nty*Usi`qP*#!AV>}H-2oU7k|KQhk5CTs?W0o@_Iref{-Jo94p+w?*8Z&})5ntT`0LICl) z?8k@?fGB05IcHNL>4J1s`Tj^-MXQC-JR?14o@eT@Cy#%IsZFM*FT~Q5Bn{cjY_`ZDoo^}0Bs5H%F?0w@Zs83f!!3$1T>F~VH z*_&B~mX%EKU1%6xltm=<&*7d-ZQyFHF!_B=xBz(_k>#)mGM_MRJ=_&7Hgw)m%3E zDMyjavb2N0Z-sy;=cvdE&tSd%3wCMD^Sty|tb4`ryhM`LVb;Z1*>zR@3FG3}Mf%v0 z`O#%{jdx?Y!<*k0(;w&tg{QGZdKaIzTc*NK7DuX}C20yhDBI zvLj05^qSxsm9k`MYr$^tv$VCl@u=O*VZz@W!zs0Dx>8p8j(3qz%|DkMP%VvDe1Tar0=(?_E$4vG#EUYrue%dynoYzJd`x$6dXf=}o#f6;QG$y?a6 z8P7(MQU1lL%&>ZG9+yg_`GANVkxuNSNaMkG!~fy0>QqRZ~FR*?}zKvX*IJ&GSJ>z)k!*|`Xwjlt%3Jf z%8h3uJbc0pXE+^h>V&rgx(;XAx*l5wcaSZdFVxk_J;}&?pp3q*%2v%Q0SV`DxgX$*pd;NU<-Oy5( zy7PTL&2YW+gF}0W)7Xw2@RP*V1+v$5dO&-MRbr9=_z{fwnEbecN5Qc#_YE<7bw%e; zvB?*LHSKvsGFCs@O%9N;J81egt$gV^*!@8oQmcw%pr4!^_pPcrBS+lMmzJ=cqvAXF z*|7!73ODXF#EnJ-t0}||X~YCakyI|Wf)hPa>S~hr7)nkuwU{S_FF)Vvtf#Tp(d>t= zzFe8uV0Ggv8dWJ*?qDImV~*hsjSK!~rsM~=P$xyE19g4dB!x~4YM?J8hR1g9RK`Y^hT9o%3l6SS*?2<6I8DU8v$Xh%Oz zFY9ef!(`eYX+52_@K>d;T+)}!Z${fq=^PQFkmp=>yBseMbff_Y6 z$r0zzMH*{ViOfjncmL4)Ss%x@9UGmgKkojMhtng7dlpt{#d|C7c^yW3;?sTdnmxCs zYz${ORn95+=86|o!i!_bJnXhr=%s>x8y$_E0uqTl9L_N>^xA(YQ=E^;FUS3dXT@BI zB+}>%dot`7Oa8FI4&_F!-SP+VG)6Y;j3S-eWydW*@=@sAX&$nRv%=^uesf_Gar2Je z{+^G*Cj0WrC4W1vj?5gCzWG9)dd4Q0FU}-eZl0v!zmmRh#qlG11$zBaB1?rn#LW(z z&!#7w_zg>m!KXHaXv3hN5Ig>%2%(>{GvbaIC+0=w_(vzN-h!KV*94zF0$6=&QtrWJ zMkJJSZ*1L~v9vYJ!rnkiUct_passc2e$P;>UwES|;Ap?l^sWBW zTVegP90(@+eNqm`A#mUzs1yJX6+o43+bxb%BRDbuty8aH1@_<{tvZu?{9Lwc_2QBQ!=p-GbX(|nyQ04s&} z>0IX|Z2ohzv@`0=G+3EMbcRfWg>HB0OYsrYYbymLlLuHY*&+%v*6|s{Zn!Ku`OKgr?F5RM=H$&qX=%ES`k@0pNj|Y$vH5B+{q&UlF0+` z4ycpZfiO-tQu!OTuP^H}K&ra-6X7*@^ng|{Umcqjq!&7S-AJeVb^+b}yZeVr&umPR zWI5rsNd6x`Jnc;R1bcq;KjtZY3JpOebh>%AV0O^l7 z4p@lBJyN;Yc~mFvh|z@O81JH2tC7EdxhEUpa2}sbN-dN%d^DZT`@;3tr_iaa9yi+pAkj9 z3-VIbBIw#pXv@4*_$T7>zgAvXjqn)7$kB4R2JD!Q8_1cK;W9}tfo-Q~F?-ao8r@8~ zb}siuq%+vCE)k78UN;{x{MzFDZ|w#Y8pzbJXunYYqc6`iJ-)L#`t~fn86k-=6I*o| z7ejBs`{@UEHKpjuI`>OfI*X+e)F4I#?DsR*f>e_LF=@*oi!TjUXZ9!8XY-r3sGr)V zLnF_p?ojUeDv7Ss2IAjRB7rAI{5%5l!?ZMMzF=jGhqj;hyp~Fl^L8}Zvw9bEa}2|Q zX>)9EZB5}7I{0#zIas`LKwWp@tX;dp;0S$hN`Djc31_|%f4Xbxt|P84p9Ut5Bb?0K zVY>(or&oHHy7`;A=20M+{S0C=ekLo;S`j(fcld-2mP96f8@!10D^huSJxiAZD<^~9 z!}jOlLnTC<^+cPt@$^NOItbj`eql6^-P6YB+tf0Ulf4^kCYt zf=+mCc>9&^Zz3J=y?4DY{HG7l<{m(z2q`h*u{Xl#U+BOrr91N8zHAs=dd6P?V1av& zV(*17jq%~N93n*H0E91OR@l4F5+dpf0;S_@UMGokZFlW3@rV9KMfb!uN7-8;I~f{B zIMK|EPeXr92}sO>{Fc!$LMX3`n)yGI-)XWNE1o zIM*9x&cCx#g1W+ZSPMZXpqtx`k@$G`uD@nMJ=C*|7`Tq8CMU;(v(Yr3- z(bx$*xCs7cmWl=LID}Ba!2%ZcQSp(d*bzTBwWQ&4$)0Z-of(X$a3?aD!I*FTp!^X3 zL^fZw^}evSLq~4^MJ+f_vQn8-G&vP{N{id}?2m{EeW@H%p>VN9#l4>6q zNfQh1Kx`~9I#N5QsWu&&#pLzGj*DWZ4gsgzv+YfR@D_|AJ;SIs`^iUQR#Y;-FdK=gPuCNqH5_MM>>g z`O1@aPkwKZqFv8K8M5B0Rh{#lS@I%fX1yeHnaK2|MFYUd{WHqOlaa6ZH`Q`3#d7X0 zL_6iWHZ;thwELA<^Vnh#IHB$yenrV_kp10m*xqkVpDFb2V5ed2v!8XZ-(i+(Mvh?u zSBOg?oh(wZOYs6ZHmeBvhDQ=eiUJ2?F^B58f1oXDDO_P)*G;qc1(6 zJ`zejV;<<&*oyknmSkqmQK&-h9L zGBY1%o}+U%`zpY>>ZC92f0~qzJlpp5P%IsLzC?`QQK(n0ff9Nyw>wpuf0&pzrU;>&LA+AsD^LlnjW@tWZhW?im+2PqCK4hr> zrFG|7%w_6~-~UQ#jLveiGs6v#pZ8_5nuzcWmb|P9rHeO>{QksN0{Oo!K51f;Mc^{& z;(5w09C^F~Sh%4LvW)Ilnml+(Tf8+T1Pp%AQa@5H^m7wYkmJqp!}xRTZ0hl48!PkF zf+QNV$9q56^vX1`WeUrG)=JIZ`&Fzjd{ zm=It83!?|XK11Xy#N?-x5KH!s$VPvsy`Cf1T=t`j>~9VOEOhjAwnn}$DbCA`k6-Ir zfa56i^N^n}=(e5y|5C#WC_MkAhLsaO><=w}UV1UFKW#j(t}MH8uw8p{iq2ine{IuQ zeF?+4C4xSFgOO}TR3Kf7*V(=#00}Dn)*b3}=@QW6saF8KlClkl&yaw?1%hr{yUihK zvqqASyYVLVP6^*MCZb7Nh{)jh!{yDGbOI$N%k;qL`kZ^%5qY%)NdbG`o;_~}=TW&> z;T)u%f$@+}nK)Hp-Ws&I%d6a6j+7D^=4uk89>MsqDoFdUlm|3AEf0NV~KR0n_oyq9W-_NwI zqSA0_{L&@s{e#g=#5`x7T=6$W(S#?scXTI=RUoFGQt%H{i2*{aQ$=(y?#2kIGmsw|^VWt=PW7GKmw$p$J`s+UXi}=WR z5%#bExKu6}qg@oFN@pMoXa2hgG6^IOF^eOh;_tBNa`{d1yTH)k$errSkN#Q~bU(Pr z2xCut*G(B-HJF9G-9pV=@jyRW({A*I1dc&(wez$o{yr&LR#Dj@q#y%UkAtRE67JYl zV~Q*WGO~RgFQmcsxk0yzETL-dsL9SrEpLhap%JfjB%C*KJvur*HUpdoKL&z%k?8V* z;)G!Jk1f~2N-`ADg=;-`r|&&7w}p9oQ@$JBolck2fM>5Y?ulb5OM6(48A`E!V6lm4 z{tl*tOSgXx@FKI^+)~O;tWNqwhdGamK+gml52IVg>Jd*0W?$47t+zjg3?^A#rem|&Zq-AwpbQHDMi_pLWZ z%f!9D%aC*dl?ok)D)aEZH3cs%0zfN%ojH!&zhce#KMs`#P&G`Wz;^mqneqq8VmEk8 ziWa(L$EhSSQ;!G1)SSE-tZ0?98Ueai&+^Y1hcI)Iv;VzhQO}=O85NZBOTK5vJQpV_ zsC8m+z}7I4sn^{3MgTxu@_w#Zo%9xoqb1=JnxE0m9CW1i&lX#3(hOZ-AFFrcA>{`m zbh5x)PVx92;E^fIqJhk59!kT)tF59PIi_dN3W`je8>(&xA3U8|o1~csVfhRwJ7kuG zQIC13CKyUp+B4WvL1uW(tZBI4vxQjVA=(Xzo!GjTb9g|4iN^};(w1+QOCtX_2U7g6 zlAw4K%QB5{Mi0tC2*LES=)*$VyE_nDCwskekF}!C*_}v-TYm1W$*cp*sS!ZR;0F#3 zG`?UrWE+PO%}m9x^($}}*yL}iQ>WBYs5Dh%{!S(Y{}RXo_BF|TDfnO42wkXoEg9X2 z9>qxQ>#cAcs@5EEsN1g(uSxn*A?p{96U_`h?T=56ID-3#flBCe{q*>?DrWU0mar(C zAN<+cvda0@2BK)P?_PB2kRgDL<~Zdi%N+3@ZlXc^5xNn5pFdi%THV0jQGmfZ;B|{R zz;IwF_Cl(hC{#!Tlxl6`1n773EKh^lBxdKV-{_>_{$U!Rz}M*uXt7&K<;zxIlK$4c z6D{yhwgWHpI_@kZizdEdo!g2_<1YDHY3IGaX`biSd09Rl&MV_IWzWPf@z3Midi5wv zp$4`$5#>Ye5Ac&H`pkAhfHef{*LsAFs+y2EWMEe>(Brh$2qEjE39|GgKgJRF?AnJM%A13(<ezSf zN&k#lpnD45A$pUrO65uj5k}na6_ytW1&GecCbR%YCPbin=JQ9LdmiHT^ejv5UlJ+6 zuk%>1`H4YyT$;14H-X*;NDdV@Qsj=QC~-pf$_TA0Up`YTipnw}2@)zHw)unyOBTpm zTU2;2AxO?WK0v39hl_6muD%uNa;px!&8)w=F}B7&doN4DsSJ)+0$VT~5ef8909T_i z9lTCH0?kTWB)`*zAE}pTe9l9&idh1BFj&Dy0UbY7tv;|hB<|1~Wf-$Df&gaHm1k-q`mj=qS1*9tsu9DkSH>ToJix1sf7`=r-6NgrG1 z#e9N=skjeXNfgQcCt%XmzLOw4=bBsceeyS83DebMbIzLH3 z9wBnhpJI~E_d{*jd!Itpw9232~Du=2wmk0un{qe^3gkZ1?hzXh+7b9{NZO04QvJc4(m)KUO-jpCkoaRLKI@+oRyFhbcI z7>wXAv2+W;d0@FMhhhZgB9ds7RXRAj>_um^DWz~XTffDNz<}x^g3P|3{$khdpn+O< z0Jp2I2nqj<^SN)BhKue(QUwBp57GTiX_Y+ca-=CDDm~(7z*y zRpYN$`L+bX9DiF3seqoYX~)*L5lM+Kv2Du9wH8RCp5(Y%&ifm(LG`z-!}Ib_z$X{F z(op2H#i4)N%U$wMB_&`Am?7)1La|yxFH=K}zzXYk9(f_+F?474e?%=rB&eoK^SJQi zL>3|7#7~SJcox%FFJwn!cw=|iC)q)tqs;f&n=JeRva)Fj^diE+!K=)_S;zQGzsBAm zB*n*u1>EwM>kwi7aOFt0Y*{@~E}kcJ*z}9x=FYulOm}v-NA$9oy3p3P{;M054Iym6 z;p^{c9cUn_<5< z*IB~33_fpjyW#z9*p>nP{J(?$hw5@c23n%0r0hx^ME_{o`>?>IUP$bUuB=Q3Y|Li{ z)<4G_@8<+vd#@(ny63wGfMtTf-wSYOBjQJ;%#kn^(r1gC*D-|k^!rgaQ&f)$`1XYl z=|j)t`e{oKU+x7L%Brymw*Uyezy3M|M^B!uI2q5YtCoFF>a9?M!pPjPN7UJq@0`H zs3KxG4LEizc09gM$s?n<8g~gR5Xxk6?@YYWuP2$~cNRWI+ zen4=_ri?J)0d1oX4!F$JXL*2YpF=3$Vf~951x%R1-F4a3{y};}8{mNcPbd$#vFiLA z+S)J6?!^$pWx%H{An2aczdvk?+{dnTNER^#b=6IGUVJnLq=WybFM${$Q2P73cA?BZ zKrW6r2iQa=BarYQRw(f?9u{LnS_MX^Ao~5O7jE~ zP4^Cq2Xg`8i8-&9l0@C~Qp>pYRcy5Rf2y1)gb4xe;uL2sF5>?d5?o-^eUyt?n7ixj z4QbC|n{0$!r3b>uEMs>5Pksa9Ujn4WeYR&GO_-|OU@xJOgM1QM{o)1+@OR+pY&ok_ zMA3Y3qFkt;>gQ}-i#~IA7kdkzGMURUaX&UjlGV-HEttWPWo9vLcX^0Ke&THL8|KBB^gAw?xv2AM2@FWBHU7JWi(-3B-m(;F)6j^XFnZVC% z7`8YZFk8v`oaP*|WpYO*dE3kE|8zoBm~JkMsIkhpg-B*#a$2RNwe$rCh(Uf_vC}=R zdUExag;q+032i?dDz||f&oPC(fy)&&x+MG+*^YwL()pwHx@KmTu52b!VnDh3o~ZSV zYeNX)mJwY3zx7{7z%@l*^k&uAZ*=4Tq6sX%!YLQEKB299HD~uAN6LM2Hi%->dCa=o79G^3L6+ zp%WPtup%;T>|HyFAu^cu0}$b22M%d6-_#uENMQXX!S8?(vq#FZi};M<{>mLb9(oa3 z6uQMPx)F<+B$EUO5*g6vaxa1`v=ty=YgV`AC)runzTWIi_&##x+$IJJ6n~{UTXRJ9 zjmup_KN}%(Nne|*fZz%Z?fOx=x>mjOf|5;blf{XN+~xN)@PCgGhM2(SsUQ2+uYOBM z2_WwOcFIFsUE;wL$UQ;&50Hp+$h~|U8i1AW3uT&y-L&kOQ(b`>q_U&EU$Rp_^|bJ9 zPW}|~*5iZvrXYP&u;3J>tSJw&5E9TmT14c6QbI_Ds1)Cksf#$i4w$GG>H^f*dEcMm~j7yFmBw$JMmdS9zj03)P4g+t1sbLM( zGC%H3$3!WmqZM(5B1oDhSPeyMf5W}IB*)e20{uR9a-K0Ux^_V)^)Dki1A>TnJN`tz z&=rOerD6cYJycK7D!rj82XOpvp;}dUABKjsxK_SPgjoZ+NH{$9*MRo~=sAe}4FTq+ z$W5wf?OPuQ~!$@D_$5m@e* zQXG1FH^d%az+)iQf7E|XVX6@h-U0*ql=&)fF^p9~iL&(6_EwbG!=kDVo<4Vbmr`Ug zNKM*@s<@c@k6dA4Wi9;d*F2}!3Mxcvm+-=+cGnX# z0JwsFi<;dCAX;>}rx9@__TKtQt;p+2OZ*dd|7wBN*rxfd&c!OUa=oj$bEg=C259@I z6)c&*eyw=pv{Ba3TzxG;Nma&xBB8Mu0YqdhkTJg-7edP5O0o$taoPEdl6aE$Z%u}u zPYrLI?@o!E?-i}!rA$&#PbK{^FO<`fB)268ONxjWU;~!LlbC=hM#Mw)5EeE`S-0MQ zt)I4@UY;I`2HSBg$;LS@gC_cSgEX3MZ(4`r{x@SnCCSlmbKGNZ}v!~ zg!-bjBxEV5)}c8r_WV}6YSeb|v})YhW51sJBgLK4LBf50VL!GJxG=g>UjJBoY0xrQ zX0b(Xoxy?%(8RyvH6+1iW_ZK)X~|lO2Yf!dLQY8bMeABo^SPt&QWA zl!TKOZj{MSZ$#z*9$mvvoV%g}ImZO7CuQ>NzSGhpXqTv+28Zub@rS`zzVoD!t9VhD zz6&>Y@85RVD@G7~lKkUai7~{TxpB*5#PsLlBWu4yUZr?1rD|9_kshu&lBR|t2YY2H zcVf)AN((Y0IX^)ISgJZR1C_W}FMtmS-r`ptiVDfKvQr>#O}-F!g!M-g)CaCMF9M$8ooCrLXZ5z*5>(@n<0SY9FIo}D)@a;B5OaE!Xu152TQ8QstU0~ z7>LA%>OC9Y_%5_&I9bX`{itru-hM{O2$Q}%|BPSV%1`+_K44?g`h6zWG}A4{y~13U zN3pp!Lc*?8xslMVt+ZRm7M-yNAt@GC6{4S7cyrF1^_1XALg`%kyKUk6KmtiOF3_*l;ODm4(U3ed>|kq~#JM3?;=rATn39B9ianQB%>0 z#VZFIa>U8hcn!gX@fr#-b_d6Vu!UJ$*i8++JgP3IAoZqJu5maquz~o!Vv36FGn4;$}7>m4tLEcC({|#cHDR4nOYAq~H#) z-o`6h>HFaZCS418az0*8j(onmS}dF>C^^9i8j00bGNzsPkC|Q(>${^$+weodJg(g> zIlyx~;Jnfkeo*4shO6R`B;vgposoaoTh?pHtRe(|#Q)l+{^GkZ^$3E7B?YBA_$3hZ7&`~04viecEv|P*xZpd9Zvxh@)?(~ZcrtUKeFRw(h8syF_b< zL=xF);f{|Ckp1XdVYPBiMn2~}G;+}{*`#ZkV$3pFQF}<}=pmN#$BJk1FvUs~r@ceX zb(jrYktLpr(zolS9CWWTV}Dv3EI7RDOow^U zxv=d$8#g*+l274rK9&fA=pb@^S%7){of*1PMpSK7heG&-M-{!nSF*e7XXFu>D6=1$ zDhWMgCp+yD(Q%^XIavp|H%s#z-He@b!ZNFVs6+I%eO*H*%fc9y<-5tvN{+IGR7fdn z?zrLxltw5h3F(+|)_KPYvPXF3AM6vwQ8PJ=1bi8GAPBvQ`~eUpjBOG(E>Z z)?J|SaWkQ0Jo>x47v;072Sjl3kR&ouP_9iuU$q)?u52a$w+rCd(U0>FLjxD4Ya0Di z=9^n5RCLjij6t~51+Dl71!%IglN~>j1%>;;K#nyTFWfSR?Gb`dw- zbZG_<@;-1#T9A^r_k6snr$8)+`&OLa;qdfd!fXwV{zUD}YWACP*kLyqlh@NitCyt7 zU4G!E{;#}J67@-_ykezQSP_&JrmH4l0#*3bGRFr$2$ph-cWWr4ocbje1z2*Tp<+s+ z72R@8Ze?zM{{mR?G??5Rg>6G14Md{~DgB5YIqRUMTrj0q2?EDmS15XQYhkoe8%tyT_bhL5PP zP7{k7+H@_GSrdGH5ez0hxZ`PC~l)v+p$W%GdzNpZ!pV>CZDSw_JA-Je@m`zVZ2`bKgbc2s_ z%?fH12)RVM%YPH;P@@t$+@r86@1f&am19EYaXCFU!r?9e)wSRm3cwt@EbsR^4h+cE zM1=cG*rv!1N^<D=79^)Ch7kasSo9uRNj} zZaKfQY7w{wWVkkN2bKY?yGc^i#ztB0H}G4yT0=S~g!s)U+#}#8FMTiH>swA#T&Ka7VF8*Qvh-7m!z8TmtTuD8ac%hEpMLR5dgkWo8L$gnP)o^f%dVqe{HMI&!Z# z#j}eMWdSpq4xRXit2>3Xelx;+T7v9uu2WZoN911e8i$!UiLQpNRvrSYVtEg1x7Q2Rn`&r)G!X0PjOPcUf) z-|m*@F5sgYU`S$4UfA@ho1L9EETMaQGW_L2vEl9Bo%An@u%o@qs=9rJpBZ0#W&u8+ z>3#7eePi@zWVPP>Y4{AB&uJJ-21A*w8jWTUY9{Z@fB(X)Iq}y~+go6v-}?FlOGOqB z&EFA^CW@Bk%ue*ltIu+-)E1PAA_!~axqa|N`D~}|*;W3DZ63w#_rDYi-t+A0f=&%t66XP$5GzTF`?rB*$ zp1JGS4@}3?sSNxS7135@u-DTF8%=KKN{b>4Xe73XA5hrbiT#(-$2+eJTV zEHw%!GtTAL`wa_AJ27V8d%%J=cB7MgM;(iVQ|tkag53YfsWsC(T@dkPU?`s0c~4U;1j8@PKQvk@NMfP z-;0xkTW9Y~s_$|$)QHq1cBz_)36cMF8H9l1eT{Z}FG5qdZHf`7TERTN^;g+Pqk5+^ zk_1VW6TA-68H?(uQSPeq%_(y%zQdLAegD$>n`|zhLx>fJ-fcyy>0|wW=sE}YIJ>rA zH*9R%c4IbZY}>Z&q+w$_jcwb>#As|ao}e-J^m*R*IKFQmd;bA5_uOmN#q;{Dg{Sp; zMnhpIm^hlz-31Ym>-3L(vIGH93=h-9BGoNqOFzrLe<4vzW%y3!22tMb+B=BND4fVw zXm+wAX}X-cZ~4UMsd!Ta-@r=}g^Q1<-lZRXq0%ahj|$E)3|NzmiXLzMV(8S7q~@^Q zRHk&^>Fy!!T??0IG_|w?FtDW-WrxcpMhh}nloLh5T{5M5)ztoZ<)cSuT-Hr;=W4rT z|MlIv+Ew4?kd)zBL586!O7y>-`ZlU<<-}E?KF<$jFJ9vJ5 zk8MycCLik2MHP9G2h?90ib4gOTt5RustWpU76yMQhKmVj-Tidoi@LL{+cE1HSyx8I zYJ$OpL-&r_za5tq<9AU|u{)EO3Af$9`qgvT_Wn`}K-HkQ_JI=>Q^hDaPGT;&d+?l8 z{?___WDTL1CzEzfpVo2g&c+%Oye@Q_$h>a%H0y=glwUu%P3Lh~s9bPmo0r00`h_d#vfdhvmhglxK(heg`T<{lr*2t)BZXgEN32dZher3~V zFDPu*)XEq3KauLnKvj_F>V+6Pw4cjwM3BBI8lA;2V5k1a_Gd}+$sSnDA`OpO+U&?V zj_-bTW6}=bXDDA2>2Qk zj7qLJj7dBvxQ4f`-_fhJmaTrj6)F0U+w&v{Q5|XoAGtijpkG0O@3nqR_43l&f9ow+ zR<3)oG&m-GFv^FGNDrre&oL%mTVhLflWcRJd8F=8aR11l;LGB22zmaIglN=pfoJj}FnOfU$%vz`%;sUxSm5l1mA3v$l+PAl))%-y8t+&(vLSSd(btW^CPdY(0H z_<)EFf&fTJSJr*nV8Og+g>|jeO8`AU`9uGRf6D~CM>7A~1LM4By4_;F07-%O=z43G z%CIC2=wMK~D8G@KLdtYN#CKuAu0@ia#l2|{PSt_M2VlI&{v4fCO4Iiy3Z^H!vH_HL ze)E&xL7^@0VKKPZyo7lU;Eoc+2B50v0x61Do{i>i7)tGSDadsRKg3uEbjgHxQ}D&5 z7qu_~K#k`-VPMmnG2-uE5L-rnQyvyD2gnXjlRI}hViWL9Qj{OGU-nNHavF5azrwgC zqR^-tuqX7=?Q8PnuvTzGwL`*Z9jkakyq{rO9UK21VyLXGsaoN+JJ()JJc5T0y5=_}n8`hEy{An}r zH;Me5WXu}c1Hst4!|~7uLdZ~OA;UHkgB~}a0+x)97m>pQZqV87Bx)*;IWmV}ab_TE z1qreQ&-ykjWa3@1X8D{B8f!06!HRB;6ivAx7oSdOdn)RSu^HeXkS`vcMK9`_!&Sd1 z*-}wbQyZyrKDx5}Mk{;buUX;XfQ!E63b6cYSEJg&hP1qQ`Ni(+;2Q<*;{Z9LVq4os z#01L>{@p-`8lQ0ypl-lM)OE4|X`g5_fk~Mrq3jRJ0&-y>6V86MnI0C3J2N{xNj~8m zZLtLjWzPIe(H}`k#KIf;{6mR%$SWkG&(AfdQ+kh!4H0-VnFq*}p;7Ei5;J@$g#bOf z2ok+gAeIXItNcGUK((_D85X-<=ow^j#=QN`;d}`l8(61|Qn`$X{CSA($AFu~!LMBU z&I59kO0nFJX#VgGzdf3rFP+)kqPqfllz)3=>QH+hpQ)*KVgfZ0iY{vVV&H+r+7p5G zu&%YmFN~#vFt0G^mHj>(ouD>cS# zdLNXIR)W&e(S0E3+(Tx0*?c}oF<;TC?!fne4H<)<+vQit+G4FzZ=_R;Sh^& zA+%$F`r1(O3!oCD#zPM~=&+ZBzJC;8d`7SA52zjzLwO>dN4D!~kNws@o;+AFi z2It~T;OPAcEeKX&b`ORKyejXl@Q>eo+Vh2kUpZ%MVU(b>6#{rd1zxRd#2;wZAfHYc zZ|1Ofp`u$nDPWz8nvp$44=DOlHTE;+eF2#WD8lyj!q(kP^wttTOi* zjxZKcCVJj4;KE%#v4ah(5doyb)zSBdAUou~YIb@nzsmGq%5>;qV!Kk$%EO%oPd5TT zSMf|hkdZPtaw9T=lOZjeLi!Lk)!kQ+Q7)TQ@Qn#hJoU(v4qnxyZKo_pJ(2u z06XgJo^em&8-Yv@+(tpEw>^NLLN4vAH;VLM@B`AI2U4evveqMn!`^0pedM1oCX=?% zrzymAnxQA$?XpMVmUZf>;o+&~k!HBpUsa%|dD8rnqE|ZOC)l@jfE?#rSB$2Q`UcF$JbsVe<8i|406p`01rj0? z(5*xxJsPCm?Jjkxbj}>2nIDY)@7p54fjWVpgR~Mp_e1&y_Q^%XIo&Hv6XFV>@FQftH}Xh)72e*a|nG~+sD!tzKnRvHqN3O_Y2z~3~!8X zAj|ui$fJb$Low=UNeykuV9>I7r0LVciledG81f``M@4Ylm%p!^9+>yHn90+n0aBq~ zd4V6jBWxs34Mdv_d|$){`4I)kP&AFIp`*-|!?_fg%ZKDZ7=Pj&dp$BWmslz!Sq&fU z{dk6e1=|r&u1%tTs3Hxow%atYC0Q(*%{2rwc{)OuM+QuLl-m>)zOe|x;&776OJ{bz z^1-I+`p5FFG(fL@vrIqwW)9vXwqp&U#iYvpa2yMjyT8Gmb^x+FzJJOl^kLXoT=_np z1Ap{)L+X-v7TkEH(VFk2po6+a8f1>+zK9}E#mV4OR-_w*-{JA8sYqaC2WfsdY5|lY zCy$o;?v0wHi!|TnI5_rsr6;RvR{c7d59GO=R1)J-FuV1*fMob*XY~#X)Ux4%G|kJSn}3z)lRk(7OjZ$gwg)sN@z34JUWp>)CC!O z7n68HD#qtII!S(J04@^A%NnzGo1bsxkA2)V*Xwtaw8Tqu^(frXr{wM)im~J0WgVLL zBdl|k7!q6x)tig9uS43c$x)Wcumy+p%!&S|lid_zeO zZ`#4EZfO^g^O6pK`9LV{){ea1&w*#DRCYLRJve{sM$4m8g~5Ui#}s|W&NJoUH)9?m zs#SY2g4HR^kY#g3B$BARa5ovbjQJOLYZWJ3p!&h(X5=c3gkn5it-5=-+C!Ur_8Z!| zdv_2#JMq+CFEInD`E;0pNPL0}KJ^ikGcTe+`FNq^fQ%$zae9;ZGisudPr%Z=xUi)K ztdS#@&9A<>y9w5O|C=h&R&b)-#Fe?42a&ShTm$hUDFzg_UTEnoF?b>Hrcl^XBO@^7 z>x)JcX|}E@Eej+L&$rb6EZH3_*dN&lp;JmVLy|KYF2pp%_?8Lu{P*GSJ+w50oLRVnWwB zkWS7wtYB=zH+n%_NvjgkwU6m`vshgT&D=wyxB!go4T(|AL=V4CCUHLvyxrdjY_j}1 zB$a&QuDD1Q$1}~X8is#(sAt()h*k1hehAG~pUe4^Wdrwf5IX9!#Rxz^YNh#3wDM1t z20k(EZDgL#7P+4RDCf&12b%gzB3IcoY~dyG5!hmU)e!fK!L=*!{7Nd_-(1|XFIr##;EYO;E2bnEe#02DZwGr)K7~Uij{lu8lvWV zM|9Wo9eUit$U7Y&xDgZFG(MkBoZ?UGCdZm~cBquIrS6J<=8rV8RpvaS@<$O#2mOpt zkP$_@SkJrsC8Kb6d=?!qOm&#bsa`m4AF~up&ZoXUn%Htel3Be4l3j;HsF;O>kx`2J zfhF!YC{c4rzRhUHY!r~$qTP*XnSV-I(VV{D;F`D=e6=Y;$`d@-HA3n3{h{FWPujo? znXF6nE#IfZ!qFJqPnyISRls0`MuV0LqlN?YXBM<$=A=1J+6LtFD&c%L(v%0r?zK-u z!nUEMm!mw$Ncr9IK=rg11L!ys$G|5!a!SpxwpjDrrhp4?dK2%kW<)~^&wKn7GHeWh z5Wp&pebZ}R*gvkK>si0Ah`o)%Y-Slu`$M$iCeeNjQ~V; zF`xogwpw=08`MdGlV|+;@QI(QQo!18ehWf&}svGTm^X}}V zq{zGWX%pw??}tyC{8ES}FHXnOvAcM3FcQNfpt%6)WK9m4k`c734TG4XRVA7=jG&au z8DTRO^jIKts+ECAcetaz>6vgOQl_@z>j=`xPmV9TjE7z|qk%#nY*0R>K;gkB=;XAX zK)@bGMQQq){AStc?l?5N8n#HI9c97$&#&HfxKfd-h^M_Y(g4qDT*}2!$5q~bzx@q= z)8e9hw@stu-$Gz9pE(N%XZ#v}ZCV5jPad6!PFM0pdCf}+frUk`Qp?Ns&44CQDECfV zfjQ=B5*}39E@zNKer$>6ei-PhKiRvdfN|=a7E{aDHQ3)n>gHilE8$&?!Qmj;Z`a$B zs!BVgu_fy%jmKB#<1BYWC7~WhdlM6@3Kl}#$K9Qod%ok@%*=^2P|h2@KZhhbQ%Ra1 zuc)U)pTK`XO*4opDbYTdp&1#loS?9Aop)Iw>H4GbFYc9YC{41>Zo*1D?jps1dU~2a zTE(UG{Lq>3v~z1cBKYbyD5XlYNJ=G^j)Dsyz11hEw*M;HjI{g0wcm;vQ`8nW;PQlj z+=jKvH<6H+07DAo#J(K$DnzO3p6FKn#5H{q&l7-zB)1kZKd?#BX|XrU+P|2@z&M>q zedsKG2}@`JXr%C>x5m$ujMe`aqDOC`jNoJEuct=dj<<7bci=y4U%uy(IxM#M6$De! zN_rdc1dz(xk|8+Z`?gNA^~%(y{oE0oMtpu^dn?d&BU982pJi zakM{0cA9B)hD@~4Unrc9Us^90=MB6WPTawyo+R-;IPPsBl$VPQ!7;N_o1%!se6EeE z?*L>e?ysngTw1V3icsGSjeh%|m-EL_sz`dWsrpnOg_X%`gkP?S#&a{H?u$JfXB#N3 z+aO<#%s%*m z==aC%UcoeDr+@}0Z4zkYCz@u13j>~JQ>LcOJC;;uios-^o!)mrlAi(lBT}VCYe)&> z8YA2jjmg}>J-0-|G3_Huoyi5Tc&(q}X$;z!xv)btuj0Spg0ASRYT^p0cHi6BNXG5% zB%EY50|1z2WS8nmSKMC@$X6H+2H)tf=`sSKVw=W7M9P(~&9P20?+w>8y&`^OM{;yZ zwNRRkh8wgBfB6nx9-h?pa-~Z#0vfuHIc&I2UiD;&%-$=ZA`ukSf2P=w!BuAaDf=si zaphwiZb&{O?D2q75`&F-m5ouWmk3a=ghNai&dyuh_FR=r%oPqaI502G$&$R2b8(+K z58I$OT`#(jPaX>CT5~zoCHu|KO%e-T36Z6zqC`06%}vfzh()z27kFdYpSLl9tn!DY$4X zDA5bspnOOH!~X{wf8p(VMP417euttRkko4S60#0mZ9M4AjS98AzH*Znmm~`gA0tli zG*_T=&G>Ffs{T2kIb7UX2`QbJdKAKbP;dF5>w$5o^*p2hZp^PVO<^8VmKo* zXXft)qI-1(mR$cgnyH$Lf!C8FZkhEcUM19K!fyekaxE)Kkpy=uFwZu);VWs>;b@bI zJ~>-KiAU3p7}sMXI@<)L+c)a?v^32Ar@B*RR(;%AB!|8c59xshAYH;_cUCS2I*^hF zRQkpCh4vP< z%16WPKZX`B8B^YmMZ0KO*>`{8YQ5}S8*jIuY|b|g*J|gTSZp_Hx1BrD-a{>EABTa? zC|Ny1F2kAldKo`Tsik|y@4o!Uj#0Zu=L*cL+LmOZ`tGcChefY)GBhuVTI%yq`tOay z9&H-gCA=6cE{T^OmErPqfoQ4?8aEm?ObPxtErR0cl^9+I$|q)YoQl7ZQMLB!i=a^S!j(brLk0_j?a{oJq>k{3ULWzq5xaR;oJ})2xVOd4>g_2nbgq zG+Mevtjp9qf1@_we9<3-9oO?|12cz{w|X%h>J&QtRxQHFK}CmGFT*7xB56M0E%RE# zbP5|QE1tU=Q8GR#Id3=8@k&>IK~-@%uXZLH*Ag@Tc%0S37)dmwUcEe=`X`w(fFt(arH0%Rp`DMZv`x~N&k1_a$6s`3X)uxDG+wWGdgVQyf311rjBI^vy4c~HmbUvw%Sm(gn?Qfy+ssUV zOPOyr_0z{nz35O&_gUZ7{U5t(tzNkcl1MP@8kh`06d9KZslz7hg|rg#Mqb!Tta($% zTC_J{$F<50ule=;dj8;d<^|X`G419^pGV zFTcA_Xb-{dv&LZIkJUO~HZTyBTLty!OPI)Ep04wk&mI$4g@uL2Zzy{!0wo4!XrV)v zy>I^qo}LD?M2lF<4a%E0Y%%K%!#i#KS&h``FApv^@4R8R+=0<)xaf8zA*vLI$ zGVf`;-|RqCdG;PePfa_$EKJ8NCT^pgaOHN?c>79hH?iwLwG#lz^fuK!LvGn3P7vsUN!>AB~N2dFpaLiF;4p|uZFNdW5MbwV0rfN#e&Pw|e^ z(WbQvt~GqW(`dq298WcQ>XFP0>(K~Q+Qbmw48A|g@riGhoo1@8yIu|1$$nL|E6%w}L*PAS!$ZuJ{a=>ueg zH~RBr!l2PF6@u-q9E{OcNQ3y!ve5(A9vRvwk9!or?Tf}cn#8Gg;H=nzEp?=U1p1)V z%%1Ssp(9UaoO|a)NnGZ>b$TBOMc;U>u&0t=fMgT6YzI>1P2Nw#f*XveUx>Gk%Wp^q z$0pa_)kx(XF_IB*qME7*&eGG;-%YTp)6BJgi-qnir?iBpQ4ngHrg<|4f-N0o@ zxsjxHt%bfKUPw~@F>mG#)g?y1+O=YJ+0P87;QHocf6RYyRwf8n^kI!U{C=Z6^U$F> zq}Ut$YoT7N6YQz7Sv3ZlUcYwuzI;8u*yOYh$Chf?;BXxmWkynN(m3MC+*^dbWQMs2 z2fU~_iIVGDa0NXp_lMHbR}aqhUhtlm01Pz1F4ET${nSqn{pg)45NSr>Ju*8tX+S@G z{G;4a9@!mt)bzH{Er-JyRxMGDo}U@X3TC(=K8>5U10UpR4Ov8czHeVSpoJ)G{_Y5B zP_ah*{VvtUnryvdp~yF-^lQ{dGnFA4z;=4cq~M1p*iG{^bOT)nlTdN^I##=jSbX8T z6}>;D+`$@|sTkANk3yd%GCz5CEynML{#3*HjErIp7`o~qP|QcO3^sHF!B{^<;Mz$$ zcG^lMp9!>TtEQoqr`x=EXh3%VUiCc!2KDBez}L40VnI2#P?3liu8KJ9xS80*OrB1f zb6Ub4bC^7J%XhK%W zwp&}P+IyHyVp+C59XYaEA`wr8abv`r=Ct{zFD%OIG|L8YbFEj=9I@-%xiaFFb;^^{ zwGxhL2+}vTkHgu6|1OVdlYAJs$(%@kgOldFWd`1w(3j$!f8F{kaH3nCy&Ml(Oh{n~ z-eYS73Bh+!9M170FDE9R$AiaBdgw`;7$s)+9C$qR-J^rbF~?sgi!ZK|R&6xtPoa%& zJI}%Iwq$iwH#w31JKi_JS{j?c-XKeP1tz-Xhd119 z_f->%55Ehfy7(!OaC(#1&nXH4oaG%(gOkplZp5qCpHs0alBnv*M}$@B6Ir_c1P&yIppU3pC4zTf#fxm^~p}cc^5YcmsG8#T_{sARPkN9AygEdoT zZY2pGN~+s=&+C$Hy&*w;?LsOn8F48RXp-YAR?M?mDdC@<#x0)IfI-t#t?4o?U_VF> z2cVUGV@y0G@X_9Zq(R+Wy@O7g8~3)QThVim#L5AmHu)tZW zck(U2aky|#2H`j(P*UCZ=`iIkN1nc2FpA|;q@GTJYwWpUobsys!jl4OW(KA$N!1(} z#j5lhUc1Q1$3ozJ#j9pUBc$mrs5j#u=8^9KxpGtKvGK@2#o`I$x<$fgmkE2pji_6k zf1ehoBJ>|YQHo_4fo*$8$3|r%#OYyLT{^v z96Bw$tNpqE?3Qhh57upj^MlHHxVeO$OVsJaJk-uZ(YG~*Anc0?#2gPl3YWy^K^9t! zoc_TJ6CYW(&;A%J(>*izviV$)+EZM0F&HW}C!cXbdV`ZE8rTz5jX&7WnY3d6l$4!u zUGXtITy~G zf1zBR9Pn!b@%hDRZ++Y3Tw-4~G#D7ia7IQ`_7W5_A!NudDGL~VkW31YMg(X!oW_Sa zeIfx~I%6Puf{ohdskM^Fova_r6hBOsN!S@;Dnm4|B|F&Tt^vt3l@aSR8aqn%4=Qby zCeh^}kY?=}7%mEzDeL~y7OV2xCcOf$e5I;PW+;zu!wZ^2xy@tP*pl=x{c&ZU%iN+> zMn^E-4K7&g=;%M z$J+S_*+)gN0vFFb>~$U>?AO#E>L-Ldy2TEPih}cfe>zfj0RtOk@tUUy4G&)^V7_%0 zgiK5bwrg!^*}FYiz)=ezIvr7$m5B&H4NnT|JNAlr6DASoz&koNGsw-PjrU`RigL(z zyuP`GP5D#wigqZT*gW}x#|e9wWA|A2#9xih!>yNiDC_BSh1w=L5vZ2f2^_4b>*wMo zLPd8Z12mSxDbo_t`Z?A_-CvwfNwdnSJYePGuN z`r~P3?Riw~$wH~gR+kr!fOpf(!;8D?)p!a$4L$uJAcl#W#Ja)wIVbg;zbB{M1 zCkQ76nz)^&R}AH~bc||J?McmKX}@7Lf^~pxQYI4}B}%gqnmC<#=Zgz|WnWj_p6Flp z927*+S3&?G6~NL;_=G_#XMgED6M}2d8^;)kp?gYObe{Qn&rty_8{bQVqXkC*VUW^v6R}#@GvPQrP&x=41_3om9oFpC(`8Pu#?0q!f|O?J9`iK3ALW6to*C+qzQO7~ z7_5WbtY85oC}AYDz%-%Tl$S9``;<>Q{+o2df(99Zzlq@R-V$$EK~n{P@iPUOUv;n! zXE#F3TmRSlsCA+NNWu3w@Gq4k_Ly;AHy%Jr)d9pTWH+UB{#FBi1I)cjR;WX%< zp$U9ba@Omj#UJNbd&$NyM7|>DO@swt(`q$Ospnx+NA;P%ZC;x|Q zh6e5uINlZcEEoy7&g>IV%_=}5K!^OAKL8}Xlz;oM8W|ZH84K{97PwOb{{py~SnSt> zeCv^ps`;#HveEIzIt+70F(LckDTVF73}kyb&S&Odzb*h8kNWa3KR8G``{w%KJ8cB= z^o9qL`i4W8JYSqB2VPpGzgErD7zebM)PkrhI21hdPaMAAdsHXhOqc(mke8qZOS?26 z2a^7aL~o(M7C3g4Q+(u%TzF=?LCy#F6ZrYfF;Y%O+n3#J9cq?nbw5|R57C-9bhZ8n zQjKrRsl}Q}!CrZuh{U=4hc&-O zgE}&=XWmW@|A{?ZARq9_-n}hbDz5J;T=&K^?cYBy3>=K|thSa0m?jww4s;YHsp^f@ zit8jiK=}LHKmCQaAcFcNGer20s)Qv-hiujgk}0`EgZ18@WX#Wu`5_o&m;Y?UkeI%1 zIH%s&h0Hi{7iu6?>liKElEF97Nml@RA*7Z(@VIc0FCY~GX`Vz6MEBZ#hauP~LmjMo=KUWio4c!3*&R+)7{ziH8Pcon zsXM1IYYcP4WSz4B&er@v-v!2A4css~ej<^Zuy6%qdrHuHFm@N@9VYYy5aFM04P>We z)q9@V(D+>|L3MWMqn^)65nA*PwdgtQfa8Wfn4R`auK&ncQzgji1YOV8O3uVym$rG# z=hd1!j_%>G5e(=${g|di}S63 znQ{KewWJw@2*;%t{g;;vVH{L>6Byv2Q&Xx^74rl`Poa9lGhW*H$|0!b4Fi)+yBhs= zB)+#BZlOYQ>1-=&5D^i;JlZLAZzP5mkKs$tr3`^ovtazkpO7xAcJ=HK zk!r^V5~$+n_eu=sy=~=Y=PT0xd`4%#2l3~753aN$zu@ulS3bWVBUI<0X`nU6;v(HI z1%=&&m>-~P{_3gV0V=0GR`prU8(~MR!?F;{2@R%1zZvC6l6!oYJX}<<(syAxQr5FX zbT(7Hggpi`N>2(BZe>rJ;XzOQv;P$qet{X=xm&>f=fTc(Hq*E+Rff-{bhyPU~= zi;0z98?V!D#xr9K{8^8K>qJ*(DX!YQW`t*7CKTM%W{ZJ|O(I87sL+yx>kp4)zA&gk z5UmrF)4QO=;v|87H|!g@!5JIGyhU(xG41F3-8TWpkZcI)Z2zh~f7RmI zwBiZ+LogFoB~M>ipFcm7eg3kiX@;L!ZKgurLN!X-I>k^AeI*v-qR}94qd}ZK z^-z0th_rTcO~Lx>6R-D&T*3(^l6}KFr==_uM=U+VM>nN~ZNC!RJe&uS;^o7SG=RkS zWP=(j1gRhW`+6>3d9aTHK}E?&@d@=reA};(Pn94cnanIr<2zduM?pmu0>}MJt=ZT@ z>UrqX6vwP5>8!3wP(uSf*}Ei?IwkJ`~;$ z&g{p%aIPNa2J^1FG+E5}&aj0wzAi8R0UcFtVqM-xmB>n|6@QTOW5ZaA)TE3rVklh} zF9%6G!69XeA3#-;jWAW9AAMe~obc*8WTa%B0FPWCnGk0qm-^Nr^n3M?Hj9D&RH^td zVaQkp8Y5oU=B$!&`Q}3Jcgh5(yO#D?aC8$&%W(#)a75Ap_pW}X(Gg~=H@z)cq9InP z^H_1%Gq^MEl)DS|;_|tuEY+fR4lGAKpb@rVn((&(C@4gLeB7f&A7mIokW+ffC)@S1 zM*0kE*N@n@h+$c||4KI5In+#iRIo~pFr=c;{@)y{;+S^pnMNHLC1T_TVeO$zxOZYN zXQ$Sl4iW=7Jr%1uFy2^Tm>4yQO1b_oR7vUsW)o)b!m(65*`Nls9|J#YCo|fhVB*yD zO4CwwTF16atW-!6qHn`2apx6o*QpeMuy~ldy4Dh&x(|mYCKb6ZQ7$q@}|yjAi>;Q?nH%Q7u7fZaFpLr z4lCgSG10{QQ@<-di=nr*+vP@S{Z}CNrCsqh>CStmQSYn3I`<28p!rNrV$@!z82|6& zVLn;IS(G;Wmu?#tVeKk;yXGE_pPn{&zl`Q2(}jrFj!|qGorf~Z0WyU+{9Z&Dr+bvl zNJ?uw=|VzasF8YYAzau--lt3lvwr8FXm{4W*Z-XXErblK1b2)JwlRsZRU4&NMa2OY zkbGJ2e6RfTV^ie31<3)jyjX_QM9cd#oD6(I;iA#%bm6^JRWAP@fpJi=LFAL_!#h3i zNBJ*5&DHsrpC+P16cY7Mzaoax!ahk%By`i@iIiMXWN}{?!46cF@vM}r##kqk(;+ht zkNm>1#r)Ee{KK0RyGAVPv!J}26d$E#`#DNOIdR9PNNP@qfr_3|y;D)v#L!ENq3IN{ z(P|AELps-BHJk$*vseJ8*$GQgciU(7x3Fd(xP%X5G_60lPEZefG=OQuMc&ZM?H}9f znpCAR;sO;;lcZ_-HsVruthz0mzpK0FCrL_dtR%8R25x*Aau4W2JKR9ijeYTyphhUE z&xzNLXhz>TCcae|4ZH+pQlR;(pk8=$c)*XHTA>kr@IU8;tfpv0NEgNpz055%fwoU*!4`&0rYd13+VZ7S|L?=~DlA{T5cRi{;F_Yys8qW$z9An9thAUDk&#;% zPXT?=0$d-jY@)$`d-LHAT$YRJk0?(@=b3w?uygoF*=c^4Fp<1!EIy<7X4SgC*U3!A z!-~t(i43|_gQkATjNbeS$zv7yj^S&Yz0dfGlK%B1v$ zt4wBgakujxg<@J}h?@&}%5YL&Tx7dONOVQfPs_7!9u8LR$m+}i%2lAHYJi>BVJ-1) zOp_q4u8u}FOZ=5GEOl@1GVD*C<%XB$>B;;24~?-ap%oKvUG&-U2^U9fvb#^q+?`%pFl=r1qa+?-SCD!9jcm^VTO9~|8H+qyyk2d};* zqXaq(h4?*QZ z`G6*F@1AtiTrmc%yy(rM7~ZSZ*4ZJZ0uubM&$|l6^J-9hk_2lp$yQA78Tw}Wa|Xx_ z>{|E3g1p!&<@Y{Eg2A4NX%JQ&9)RaN$=H~I$7AlI1O!!Gzoqh43SOkH}SJj?PPqtY8tJ}LF(0aMGJdImh4Xs zJ@RLtdKZ&Zh!7VO!%*f-d`jgUs`-Idk7qsumqG`0%<(GNklH8Y1c+D zE7F~miO`~4b{%oOttXz(Kje7H82h&ZGI`Qdbs4&Ix=iLx2(i*M(`$1L^ko9uvE!lA zDc8mFa(?{1N9iVW&YYzivYJZ#2R7t~qs=!A>;tz=tjt%vu;X}=s+JD4Hg@t0-ak#T z&E8*{l$0VO=I8H9&R9kK&FO$q4KNMy^Z~g=aW*IlYJJ%Pg3^2}*{wNb%W=YF-z0d$b%i=L(caqq451E$l~3sh!5 z4++kCH)$9KjM9k?nF{uy()a_9ikzB6$*rdqg+_-^lPbMDOqyXl#57|9apP4mHjPbR zn7e0j4AT_DizQXfBK;S@d>BeXvY9@w;YC>igI$BPn)tdyC89(T3z4v5I0G0*WI53u zBk#!N26nwg(xPp|ri>#JsB#VtJnPOa2UWl<6fi#q(coZI5}#^UZYEqa6@5`*_oSG* z4`zR?eETwqajy2ep3LdtXv}l>(*J*?*nvH7h=)u;VoZ@=~GgRKfKafO}Zp&=V z(ve#^8our}rX`=sTN8;P;!e8rO4~q+4w%}Irc<%=fMDBEB}_?9ma-0&n4_hnKL1ks zjGm%Q09{TuER;JUzgtL_lpq0glS>ItC|dvF2I_)yh*23vt80Euh!jXQHhR^y3S+)| zQY-qQ9ZenTMhX{A`roqv@T;Gb<$*sz;%MpfZ2XvZT;6- z1^%W(3!c@?i?PwLFr@FP3%DKAB@@6!S(4~vBlpPVH*QeDDMUq5CDf!dX7*-EDrW)O zhIe7-HDwY`M8l1w!|B>@F#091unFf6N)t7E26Dcu#TZi8xh;1Qn`T=lkbY20 z=8>J(`c*oavPUEv zHWTEkLOjm0U=7q@y{3PDI;WztsYg+s227K*4^nwg`ZDM>$OriA@dC`t$28f$sn52Y z$o(#6(;J^}@g7rec~mR1FN#M&B%~lG90cp|%5x?tVN@p4cKC&@6IvT6nsKZud#-BG zLI<%K>j(|nYwDoJ$X*^eI!*zkxgaUg)k}TMkIH-ghxpsXqKp(V`LIRJM`fbZbp)2< zEF~3{OGRxjV@!TbK+($T>wvr}$2^ZjiwJ$NgFGfRq{vGlfj5Nos1C+xpXq$zc?==h z0WDD`?rFKW5m)STWwWGLAJ*xXdNR=~W%!kRN?Ek|q`prE(gBGYjf!q!(ah>ARz+r( zQq#VZA`YIEJxjvoK=3W2ssh!L-DY@5`zp*_B3gWC6tD|{mrHb?_P=uOuiht3uu9X1 zBSv%5iPq8;31VQcqUFf26INjf_su*L7fW_n^{W1={D?6l6%Otr$$U%KI-3aLOm?< zT(*-RcBo>7$f;1={=N(cujJW;!ff6XVeo29$T{l*CdISzG(gTquT$FS2?AM=VAbO{ zw<#Va+P|M^Zb}ueUL^j`#Of7k^>4f7j>suLBKY3CPd-qX+@5=#O95F$Xm(khxrcYH zNx#3ydk>`Tzz^49Y`xGPm1Sf~HmJe+%QuK*MPfl$JTu!C;}F^`3#?7NL?P97D={oC zYQE-;QM8-rC8kprvD-6o!p+$Rzyi$AP;1!@eyjb4@+OmM&BH`1Y@_>^=u_~9k0yfexMD8=nFdMCzgBD?%`fmnaHr2%MLRzQwSr4n74(gjkR zR7Vx=Xm-h~LsZ_I8+)f`%GMR;PdzJ|pC8f@tlf(y_)CWWI<=FGC~;AaGns%^zJ(!; zP(Ik3;+7URpFa{?Krn>)om5mG9^68u6Jo;SwWB33Jb``Nw_G#$X8+7Orvay)NpcD& zdfMVhP&4&Y@^dOht&RA+g4A#eJnR85O*t>@mGKv~wt$rEV~k9R;ahmCs6ie2`nH;= zMq8Hidd}!6#s1oewVfpA%Y8Q!CM&8jl@l+g4Hrp3^OE}5iO*6YSuPf%lO5uYkV(IY z)ki?7Ac-HjCvNDrb=urNc?g!mch54>#22dlwJQ-G(uA}3tm#%CyNIY|RV z`IMVcP2JE$YCx*UE7#B9r3}Kwb;j%IB1{Pj089@`%SZOW+)9$-eqA2eY%c{)rZe+T z?G<8z7r8S$AYm0+gl;wjp;fNy0W__8#zmW}I^M~h%+ai-K^Wl)` zKxX24d*xNd@L+j$z--wNgK?=uiu$Ow$$k(I=3_n(XI5#*cYql8)`U2DPna1Y+N6mr zsSX1VC!#ta4fm!U5uhWTq^*22J*pn_`ZDzMyRzOKJeRSZKhJxs98!r*)(v<}kn(+_ z%VFtQOZPl- z=jT_E^DWR(%MBF0K-TD`q?|SVNm8xb{dofO6tANV&~gyyr2bOnXD(;WW6(oRn}AaxDq(@KS%Dn>allQe(Ml) zZQ0q5Ua)&>ifKMOv*a7RvCFTAvEkPcFA&5_9pG>l+&yjD(Kk2>x+R{6TuRYa#Ta#r#qrq3;ZXRIFCu>DN_^r0vAO#~P-dSd62~xca!M zU|bhd1t+%FV8MqQVqatx+RSY=8RGO|J)}tTa&LlbDz&Sd_S2sD7wbtX`iX<`G#G)m z8I-P_^99s7eyTTIUUkWfXO%!J7k=w>DOdFkk7!I^z!n8O{>z$o>Kt`K@iICXsyxkK zPF(p1WAzlKRN}~0=>L%Qj)8H7Thwr4+qRm1pP4iJY&~o3wI9uR-onUW`y~9!y`7A|n!|bFAiVB`YsMf;W?V2|XOijxiOLd? z^FM;W9g7}a&d9s@LLS`-g`XAh-J_Xsl8bAa@b~p$7df2%(0En*!I=j5u6OI3dn$B* z5f$ewpGvvXHVKU|Ru-7ZA#StLyf|B2Nh>Dtic+7fRmj0hV$=)thNF+;#Z1>f9!JXU z0q|SuTA zRQ%drlBa@Lt>$_ttpG6A+45Xd2-?&-{x1bN7Zs_kgp~H$(6@1pVY-7ylhmW-GFXv! zi1h_C;9j|r@sQuTR3yt!H)%HQ613hg+lJ(>kA3C0=cm{^jrdMkV;NyXYb} zlIt{c#gc%(wMKmeQqc-BN^G`?QgrbJk)q{;upyQ3H!E9Nt*rNu}VRaJfS*uLO zzZmHa_#7B`@BpP7QDdn1AbQ$fNKpP3PJeLs6N4{1PV+L`&B(~~`jrpubmnbJ{KSl& zl*q3<$Q-LkT)%Yw!^45-krD%k$wE?jbVxd??0}0^9+~RszV+rHwI;2HuOtqqApCu% z1lgI=mc)z!PR1($mj>13yAFADeiHJ162$(PuQ`|G_J@}B54+1EL070qAxtiba2Ql( zpc8``P=7acLHkinG1sZ&-z>ZLns#u?6(36dJILLbYakx~E2M?T{*bg{d)lVMtW$y- z5#^cW*_jXwt}QTBr^2iwg7){H#)|vn@I&GAcPc?GK>DMrCx`!yB%-8;%(V@PH2 zb$1Xv6c;2GsK)v4OHyN)_hmN++eCVU8zsAy=*7I$t;}M3ven-+Cgw=Q&?OAG0`Vh3 z#>a;b>hu5G^G?Xb#Pl|I?t5IS55&C(BVcZ!0y2yr*)jpxAsvNu5&n0odzAlbBh|)_ zNo7?ajM~1UN>7@4%hU4bT%6^#>Ma%J-Q!<&!?}AuG^1_%-?tDjeFr8XAagx{71l8f z?kOuk-5ZPn|GBm0lSQ4Ko&8x+F_5O`8{u`)1_c6Qoz6g?Y43q9BZ3;u!4&XD%ozPG zJVbS31RWia^L6y@%D}nmr9PYNBw|=X1PM>_Fl4R%@yCBD_wX;$>R{kGKR%}tJ{jM1 zf8tvGKG5rB)%>O=j9l+)7~wipf}WO4t}{dbJ&W6D7ZbRZ0=h1LzY$t$$KUkK3VXc8aWd}OcKdAhY2+gHSY+ClOQ9~>0XqydTxUWK=#rldKH`Ti_u5UaRz z>T`)H+I#(PT0rmP@%5IXygv25pT7og2r6`Slh*TMBBAXYp{Y4}H0utW#2|;*ChlJ6 zVI`u}XLU2QI+UbQ>FWF;|C2Nxy_czTPsaVzw%bS_Ux=h00h|N*%rhVMpaHe9vH6&m zu|J-paE^V$1nE=981ZX(MO^RP4Pw|e#Sru6C;Xb!5faTg6a2RXcLtMV)j}paK(H03 zvM=00aWsb$wQnE`@dgp?$PLu*j3+D(0GtgLC3YNrk_K-)9Q@C3y$J)U@i(Wc*3$nO zExi|+%)YGwx0HKJ3BL(9iOEF+5+eA161h6<4KnMs&~ORm3fw;4Fw)OXfzQ_u`cfwO zb5`Y5G;h%x?7g&su$swGt*pS_@5`$M=YQqMTgaEP7Grjo4&whyUO-2%_kvz$#j|g| z@fjLd#SZ;x!2eHkDDCJLn~rfkNKtFe4~&*HAc3&5 zijX3!uA%LD3!nYxybrJjd zP<=h+_69+Dgu%^9PmDuG{V$$@${^l#glwFbRTmWW#J?CVB`ylEp_#XF^vFR39Q_c~ z4-oRMp-hDBX1d>qtc2_$^jsU!SHi~JfH`WNM@i~)h&>0av~=Pob$`f}6J?aQmZRC9 z1w%Z`T#^Ewj2H@MvbCp}|1)Bs-rcj|cn1La@KS*QAg_gw0EOt!o#LJY_JBYjq&VIu^h)o909=L-vwOXLI~2!1bh z%DM1FOSK`6D+D>aKod??HMcC@mbgd;~f1$Hq7ucwjIA{R$e? zW@K~tAdwuO*DiR)TI~4|lEEKoTu4PF&Ms2zB>TiSo-2@)fZQxE>_BDOjq^cx2y zqPEaQEa3};Pjq@X4B=a?W2r3wyc!=W2OmiUUY%Z9dYCQ6m|_@MJjnw>K-^l{w!&li zn%-7*SHTK@+i8)qZDOR>@la7ij z!BX^$oTLe=VkT4-DXbeq82UseAw4zR7YOjgQ8f@x84{}O=0F;2WVlvw?rfc9uPPtu zi)P(RQ6**|lj9;xOE_d5&~`Hp+vnkOQ@%i~EV(J8X)(6y*p?vNt+X-uTT$B~%9=Lz zlqWUN9f@g0P=NFw_T6Ejrxnncz*WPc4nEa<%V~S3wxAKSQRKQ??@(l(>m$=<5@Y_Y zAzG6{Bbn2*aQ}6Bls4(9a8S;9ct#@{eimx>;smguZPspMl;pIygvB{tu2v`&5P?TN zr4Q;Wk=J!Y3t-7rI(x)k1j8mPVC-+vQ}O-w#RJ z?dcIF(j&576OmXj>e2ewEhi0KYO0NQs}R`@nou;!IskW&UN=~^(Qh|!sD464FT4_! z&e4%tJuM$U4EkXnsE|lDr=X8U zDuVMpW1zsb!}p1-zOiMD01>CRNoUjS!;yhQT=I@$dJB^-p9SzGQNY-+oZOv03P#XX zmx(6yne~DMVeY%E%~Tu-OJ&x6s7jE0Yz2kCS_sqK8^V8 z8x^&*K8U_LrizX(jXERO{Zi6Izfay?yd+AkQTZgPnQm%?dVvBWFz zW-i|w?)mH$v(?|;4-xaCO%()Y!`0AbDXIpDx|@)A;NrKsnDT-t#3hm9H9vM#6zl2cOJ-uI3vaW*tg%4L)vAk>EiRzW_;y;PnDN@y|!2A&%faYat@BFkSo z9KwN=C#Kko@G7bnUcg%Jmx$Z@tbEsMMLE=+IC0JwMLgoAe{diMGmnwB1(ubR>w?Aj zB`G)sS#RnHCOv~7xE9BO&&gMt+>J?D?T&RWYwx8;lpV4<@Z#1zF)RxM&1`YKBU8nh zLGCN+zD3|Bw?dUgMer2-uXW7bzqL{$oDLJzS1psjb0XOP3w5mI(-(Vs5lOa|>^*70 zDyXkRDfaSL9mY~Tte-D)L1gxw{L*YnKQKfkTLg!ZxVf_k!Wz8y^-c}ynn>?(Kwvjx=({+(y>W)Y8$&GD*(S`HZsZ8Pxa;A@`YlI#z>zwH>6VuK{U*8shqJI52x^45 zS>Ec8g^6u{EqmCumZMeF>9O&Uo5JC^{fLYlgPx-q3ZI{3wjRd&jHLhWMYIzlik8sn zO_o@;DivXslr%4CYxi9!bRtmdn(xP98KB#N%w|n+vMw<5@AvungSq3JKVeq1$(&lH zJTPaip++&{waJ}qmVD%t2eU?!s}hEB}dg;+5+< zK4$6t@LQ@~I$T3UKhr#10^hN41mcZ0;*b;-S#2*NY1x+y&qZ zd&bGtiR0m`w|pN8c7tC)Xj+;p-}e+_K;K8Vca-(T%hzQpTpO6Y7*Sycr-tC{vIJiv zK$W)t8SErIW7N?6phfNlUc@dlA%h;up!khLT`cl+d?j*6x~yPWsE&>VEREVtq6ScB z-CbYx@@JNV?m?xqq}Zuz+RZnEqw~z74Kmz-ezK?DQGJe0q-Ru^dj2JA%g9;F8&j@d$z5dbCpPn8b zEJ7xM6{=W-p1*5*XmEJKM@t6-0~4V^Y0Nt84zE`v_G}+B{9TuJ$n$J?SJNS0&00KW zXocbZ7kDTfNQXDxWUL!oDNE$r!EP~w1tA`6NBis#R|NOO(aY87iyZ zpGX~@oa%(vsgC&`8l-H%+H&DZv9MJe0VORuB+^`noywv0%uCY@NHZJi+-E51fp%EN zO1Jw=tZR6ekTh@}3_No6u^`14g-=5gMb93I4j2=LGD`@0N4#%bP{$23ms-s$oF)L8hUmqoW=@0VoFaPb(3OlX*8eNykhrK&rc!NhwMEeb4r@VTd zUAP63O8|C}E!%Mnku%s%+IE4*w`p=|Vun`E;8ESgk#rf^e2sVN4e$46Bql%BtDBMh z2-MGhw;5^(QROqbp+v)e0^b*xqS0C<33$r37TBmh(^$V_4zt^J(7!A_r7sv1Mw!! z2TVGReyG#f&Ak|+XJQMsawRlq%Nx9`tnA^S50v88;pVhhu$#u4oN>^In$6V zLQSl!5Ml|L68KUhMNl{ywI1vjcK|G1r;GJ^30sL*v>wL2IQ}^(jte+G}n&St$8}KjYp?NqnVmSuU;H zYXvyFCWBR{<^VCm{3V>*p(8&_ST7$-&lBSXCaMS!Fv4n+bm>R5?H(JC#!bmFc^i}y z{MPcnYE-He*K9@u{ zmkY}B1{>`zw{0Nr?)C_^cHD93wm5p^2m23jxQmCl!MzC^2-5?xE{Zfi?tQCY6&&rlBm;E;W3j$%eM!a#((Wk zbnHZe-sT8svxspwO-A5&FcNLTNMBVfdx#*RQ4C_~s^@PGTzJ{Q>>iz4%q320=(*!= zWk}b^7MlIRk&@}LYeHdy5o;{63sj`;#Sx7J`KA!MXELoIkspD2GeTnV+M$u17I8fp zmGD=qYtBaM2KGGrCf&WXP8L5(=Mr?R2Z39yltipX9AF5m%jK)cDLX{(Nv~VM8_M=v z&qOOHzmpolcz}POQQ-zZ+ecL*Q-pj^{rb(C%~ohft8k9teE>WZEWlJ8$Jm^oLw=5q z08v@x0GV6Q>nozx@#1y<%`)|zoVv_!TPo;?OL6)Swbr1br+%xmVjyJT?Otmj-sOT))KXHYIm^K99eX-%w{?^ zSOO%8!*8KI0CtRf*E9ILS5=4WzhI_|N&jh$Z$6>A*NPs;H1|Z#rYmX1YB1sN0$733)0zLUxIr3>7@2Zt%9XeWecW1l94MGiJ{>tLrK8P66nipwgc1a`y+SKlSD8}*xBl|YE|x6{>8d|z6!Uk4 zbS~Z+YC6B8bb0NSi8_deY6LMeNLPf&x!8KGIXgsQH)&Z9QtR``y1ItfNoc#$PZJtK ze^;Kho3RMy$VFlb=#$v4_C`45)}@$TfTT^H2 zl&0jg^=VH&N@N@xfp4$osiWrc=f(4+PsG5f{K&2y=v&DO{Ru!24i=(7rFr*To~Frz z5*G$e!I<_byG2Gqs75Y8bCaa7Y*UAnn+;nu>G~K$1G~=?5T0PCm*dO2BAVDYNn2W4 zH7q8dZs|OrDx3XJ_4Cixr0pk4{mjs!HSF*DoI`ami&-fuXLJ! zt7zLMW~uSr3*zBhv2NrpcBnl7^`h_xxU=!HR@IL{bpkAEm8~uFSMEoy#nHy!J6(<8 z1Nuz6k46PC;c42CaF>Rwu(NhSN0Rd>mu*X(dz;qE&UV(^-K3ghGrsN zIm~0Mw{ycr3_qrGQ-q^LIvOvsuEw*Pd8VOHUXG7-0U;`6L{PWAil3^T-3ypG8Wwyd zA}=N!p*Si&;psu`LH<)NgMxcI) zbkvRja^LDd)=oacthQ3A)F`ZydJ>4haSO6#%%_V=S_>RO5L-m~z( zB#}ZtLyg*=@U~BC7Fp0L1g8oHS1wdZ&W%;wi(@fcksVY(C?c~gyK`kEZ?kF8z+$iI z(T<2fdt3nn@8f%s*hSu<(fWm>Q7nOpd-4fl%A}7Izv2>69@+zTq|AYsVsO zA7>mNA^#XXpTHDuAPTKti;5gt(;n+r=#8EX7xgQgB(G3B4%>o$*9D0r)3MIp05mAT zpJi!@mOOIRj$BSF+>0y~36kkq1d=<1<@bT|(i@7=xJFX$m*MFfL~UUkIR2}PXWLhZ z{nsb<{rBB|aNsUt2K>nf3=ap#V=qvL#^0vZwvc$ePlUkp9e5}Ki0>Wa89j~shY=OP zgGaFNx`j}1b4Ku6r8j+3j2|Y#E*tB9-LifhLKy>0M>@y@Rxc?!yD5(darBR$TpuLH zmrPpay`oS3E^BgyZTPu=_e^!&LuoNx7`aS2+#9?Bp=hCP+V%(y5?RCCYTvvKAuT|0 zB?`+1lFrL$AVl!K!` z#S99qe>f(M2FjH7?&rS#rreej$YDr$;Y*);;!h^eg+s$O2SqyFy>x3oP8Z0L1pEh! z*1tr7E)j?4lhh>rtbN$f(P@OlO^sHxaG?eq7l!euwSOpa@k7iVUTou~Mhy|%K-CGT zEFw?R`FHNv9MZjf+G@_z$+fDOB%~Sy{?nFz2F75B+>yn1u0{n;iqiEZ~_rh zv2kOA_TP^Q-V}?MH{BtimPz?R_qnF|l@dUr+(rjG_ z>UGGe|9MjfM9zJS+t-^N4f`0JRGjNe4nNQ@$>Icp(PP|?rOE7e$()A~AL+IBw(?gL z#l#qa+lNg?xY6a({S%3~cM(2n3hm+=2u;C7ELuo!lBuLDMKnqu?_8nOSF5L;y|{(?|tbZy?*!fVGA5J1V8q2`u_&xDIa627)805|&QGrfo* zgZT2Z2hy|4r+ii^RG6b8#YnTI%5eN>!9>bHc>-}7sAZ2yBfuDVzhqtzkD%7xJ!=QP zIBjBVqFCx3Wn@9x@Wjku0G_GKD`=#aJa%z47TbQ~@+Mu!Kc?#coAVK42WF0#v(xE@ zPmhbn1|WRyy+*q7LXtz zz#uCcc=4;eY^x6gkm6TZeh5oBqYT<#s8A6t!~;L~sud=tLLf>;MhP9NpC9*!2H>ce z#az_uJwgo zFBbWywLj~wZyo#_C9fz$Eh@Pw&VlYDZgHiq>xzE{UL*g@(>RUK{SlYxzo_9gGat`6 zwCRkhZ9e7FmDS+Kua;UBB7{?A?srsNM18=y_|3qzU zO(Pa>RC@N?;I295!PZuS`#Uz&TXnE@DtDVNstw=4lumS8^{8<#ru$bK?$YfP;-=Yl zsF3M4qBxGF%VX_E{RBGJe}2ATRZ!QJK)h?5$peQup(FChjX%32`p}q9*n+kH5;Wk5yHynuA@6B z{IGtTx{qAvf{d-H1e{wb^PVqZa$-m-_LzhyyGHCSyEG0vS(^QUI&a8_$5YbrslE$^ z(>RSagcx)G$)T5EgoT5g!eywWq!x`qAKI1^56@j5*@7nQrYFklt$m)6Xeqq+7TK$z z%IoD<7H=>59lDW2PFO7L1U|xdZPyu2^^UBIRAaM-JB{YHPV|QyIHwK0>eqTNUZEedL`L)jdPBa~bxox#jwRY*U@4~)?t*GW3o1}Z6$CZ<<6XyD9B*MlH9jN1BSnL zgLS^RJ;PT7?7Hq z3OCUSia5L(LPTRp(iPy^cZ!W{b7?n?=2Z>;ZetH7J3mQnH~`${(Cb~+LjMwn-1!HB z(MovtG`rzpU@Qa-Xr$o2_ch*8c;|KA)bCL8g(*4lo=j2>5-mqA(c&Hz14wi7U2m8C z*VW|rUO@6kgdJ@*x z%fF5IUG6;rL=+c<=FD)X3+!ESQpu}S;dLaBr}dK(Jhhem=ToK)LdQ)eV-xA(5(%5* z_IP9+6RR(IORHym%MeGGV;k;bI0Rvry0eJ3;g2!3eA-RSe{n-Q`OtlpmX(Nbu);6$ zN{D6VR}hEEA}^Mm=@ct>{Q$iMdVntTpUwh^5;m%jTM5YF^YKHZsAnC{FntLkz4(miIqd^1Z>^13EbDe#Tq4f|30wZw(b$PO|YrA zKpPV|oMW6S7)_+l{io83G}D^mh5iUP-7fA(==2-UXR2-tiluC8La2Ca`%l=3@&t~f zfk~J5zEq*NwHenKjj`)A(e;j24gM6TF#S(-I^z}B-(eY1c2CU%jy^x&0_VPVzH{Ka zK4zVVT@%@O`0~3nzeE2OSYHb#wy!Ge|9d}re_y`gU?IYIG)7*NJa)Zuev%9Kj?>-} zXFGNcM`Zc_Qb}{$=A8@!|1E&MjhMjEG=GIAbn=_o+^f_4j@F@XhvqDkYx_l9wV0!q zc2{TE6w3uql}b~`-yhZ5R<&N;=J+Sw7iU|qHL~=RPA51y+|6-0vl(yO7elW&-hdz8 z6UEaHabO;Y7Wr6>zd~4-Zb7lg+`=xVo25cD+oM7{R`2J3Z_>9c5GBPF#c{e6_44U( zVKk4$bW_c_N)S-wRkHO#%k+`|(sNQS<-gn0saEYovUE|BfcCG($z;OZX zhp||zYhWara+0N(yWfIR%h+hwwtpv85Jp8iNKO05Sydejvn@bG~_JU%`%#l`9=+ygPo)JPs!sNBN zOpp>VyE6BD*-PGG$IJnJ(%Xn0)TT49N;IyAI=;hZ8&{oEcm+4HG(yiJks;JaMyX_B zwpAsM zXMJENh0RqdFtCpF@RIp=xG%=q@Y?tahp9ak$`jVb!6H%rNj&x!+Pc)=~pbcFcG(PAGtIy4gsc&CRx2QqOA!XMNmMz?)6 zeDd$LXN@saooLN#=0!$Jc1>O-77d)ajh&XbG}`nXD$+L?mWOKHfYNlkR(RPQ`u5s< zac@#KTK>Od0VbS!Wx+<4IhCWv{kaTKgJ0T=U4BvZbG&Pq6nGQ&_x_fISt&&+rei+p zin%$Aap8ldn7!?HKqyc>22b+Y`FP&rR3*2^(BGY=Y|d+EPiq2w1aUjyV&`E z+Qiz~4Yy)`_V@YTxb}LGG0JasZunZN+R3+2B{aDt?4C>aeJ<#FD?++tTcN;o|B=M>|ETxu9`t>5o|xd) z{k<45rPuQDpe|o5rilU<8S(sthieJi_=Q|pC@Sr$`YsNgB#gXJ?>zwZGK_x9{_RO# z39W+}38ZTQa`=W=f#w2xJI%uaO34__0ZQnDH{A@Fltryqb2qPwMh$h z5I=%G1e+UZe`D9c8% zjNGDem4jMRwt0l~Mk><(fN@>UFb(8b1}1D*;PFG@on_@5Y$9x=1r{=)E9F;C|Iv*wH-FHxd z{?5>Y8nMr?6eOp<7abufu$m}TZ-aAr_uim9yNFtL0mU{(Y`oX@uD;h+bK$gGz>`Hk zq0BRZW@s313JmBQ~tN7ku; zt|FsfgjzfILkRCt2M0c27>D~?6{ZM|AUiE#r4iUzi48jqO3l`;T zxiYE7tikS#jtKMhc|*&4b{PK@{E<~n+6#|Ku8}0bEVCTNAWIcc4uh$}t>6)x`Fr7m z!XPBx=Gp2jm&cw9uhVZtmM5bn_V20Df82jVPa)h$Q~x%pV$u>81FJ&V(EwC9%^#zx ziXGb!A+np;8LrDpdt%J8E|Hn!7WBT0dHJ=?3;bJERjoKKa)k%dMaiNH8I?khtP4qi4clsgpu3<_~E<;u_|tjkPe-T(wLj3dN|oBzW8CH$&HY ztS4L-M`j`*RFQ`Sr0Ob=@*LAXQIR)teLHF~mAS9jEKB;sAz+LdG=Qr-9IxEWwOm8^ zjymI&fE$8$sbTgOsvM`tKgAvr(Z~iUfOP*%fw1*hezzAmx)?EeTM(1LTWU&C9zum* z9evP%H;9?1?x&;lj9#-GrKRWJ>&IVQe}l9fvD6MGoL_nEE#Tq|a(}Dk{qJh955z+_ z_e&Tr;;Ypt%f~AYMhnk+V_V3r8jNGF7W+4)l#aKye2Edd1tU3U5NMlFUW%8jzf51T zOQ&+)YG{mVp5j+(@c`-^K2L|8q2S4J>cv;#vwQBD7lf}ZlroFbYlPOM-59TP-GzB> z1o(f9Da(WMI_~1Gonw2w4H!i_e9NJ03t(racGRpVS&q6txL?#>Ng z{CF#-237pnG@eG?C=*tf9y6=Nb34Z>BJpJF#;q$=c=zNRf++RvjGpQ9)B8cX;!BmT|JZ6NWP+$b-W3C>;Oo7Q<2 zmGXYaV|LW(I<3C)P1S{%J9@xoP6Q5P_z31@Ukps%cDTj(+Q#?YfxZ%QQ?E>PCGXKh zZXi8@KGvQqd&^H2u7&0F)P$b19YowAeJ~qHW`rMzji8(WcJ~R_n=HmI`{E!oW1H>Q>mPFBiC0(MbBi^v2TA-R?_C4F8B{Rtr*@ zTX$nW5dEdc4cinex%30PnTCdrtLa^r<2{X-#?1mZUhks-xF%CSrt_V1NaaWAc!5UD z(-qM?Zqc8&M&Ml&K^>}SmV=PZ>~a)yHWSV>hIS&gIp+%0&WP_kQn>XE+&Mw&4`ZJ@ z$U|Jg&f88l$q4)q!1Hj4fWUk^=DExzQkI}Aj(|6Pn7atD$`CjN7io1(`PY#$C4Ybk z^cQOImnM(UPhRiCX_wLRW>_CtDH`5MLVmth&##C{GKDAbm0B+0l6T53#?y*{2e`JO zw9MvlF1i1En%kR88Lwjjkpz;hg1T%iCmnNOmu%N>b6-g%Ue14MiMPhWILq}KLcMKK z=tJQc4viOl@6eAv?^L(_99{x)KcXMpk7(-i2lpd^g3ZAD1=b!N{*>vj zQLMK23gm}?ZwSV`Q~K1y%$xEvSN}u}k1t5Tzq%J@-+5Ko-^6n4K--KOyiLFcqvadY znMsn0H_YdeC2|4u--dsSPTXbHj!8+RHd{8PaGq-sgxi11L`^sb-lahn@2}Gx!LCWh zgi(iV(2#{!?bd@%dV56~k_>@aY^$kX_3usT`mMYKAmd5_mFM^4o#Zb=g0wi*VmWM2qhdmq+Qy2jVCEy~LH3oS9& zvfli7d_<-S5ULtgp4f9c3w?o-Nllv-X5rni$EgF?I=Yv_)&`3bIaty-jtW@p+>!;o zSD5pvGPDD$-1Ela)ja*_x8Z)BsUg#BgOY=(!B<=pd|v|wxBU1W8R2gS^r$f_2FysD zqAkOnUOQHjhB3)LVXs6^Xan`qx`yxEbwBVfl8>#2U(mK|M?kv2@bG-R4B)gbFUZa; z8>bNp2Dh^A6Xh>(MJ5VdGq0Tf*=rBNm=A? zGNtu3Bc<>JJ(!~fO)whkEw)J#Qx_%*`ErbAem6=y9InSY4;!CfiQAP4lFO3}qj7w{ z+rt3*j@N&QAuF#UeRNN2hgs|THC}3%f!!NnzhbH$NYgOle=q?Yx~e(#Tu`Ep`s1TYpdO76YU9W@c#^9X zg0^9$c&wSd!*_nuZuEjHs`Ym+V)b>M6l~;bdvQilk4GO;ezy?l_8uefC$qof_;WLk^7>{%mezdyFdVse1 z5p~hJz)5MgMmAS)6#-U|XH*&2VWffhcIKa!Oeb8jNs-2d5Oe zkq^cP+xp{ymaCzE{ddLVtB`&pD+&uKy8?0HD#l>w=|iwu06K|Hx9A>N)G%-ZiAl%e zl^4)Fz}~WD&+{6?dM?Yn^ETd;SN&gfulW;8jM7?p%9O1I`2Z4oqy$HfW%*xBO`Gt(@^;EcHlTC9H^pFwBeViFD8qK)JywY%5pVdd$bbnrAeJK z>`>bJSNHfI)vo?AQUMvc5YaaUr&Q9VH1fL0Vwh5_l)h-a7Wyx-wyQb05?@3R8LLQ9 ze{8|*UKK9poQ5KSu;6qfvd{fZ8csGmwtDZ7>^+3Xg=&lZ4@(Eh8$jIhD#-91?th9U zVr%e0%lLUxwIoGap~b^eL^O)t(ozHU2q1uY^$NJJKD=oM9IqV2?8xU0T@lJEo#T?K zffFzkBlvv*V;o?b2g!a9tcXM><$84Wxd)FV5gtyXGS4;2e;YiB1BhV;Aknz3%Lih2 zi@5)BlI$hF=tcS+N*`k24L4YbYjb9pKDZ1 zzFwhSjVcg|fW^HT_{~d4aQL)4&(cl0dO#M% zdA)30cG-rVn=p|mgJDWHID%0ohif@T>oR?FYcx3MA@#^oK-4Os9t(|(>wuZR7wL0i z@Ou|WC)u6J)>|TE$27Ngh+fS#kx%?z%};6ySJtOAu3B-F3CvydM4{1yPDz=fa@jHY zWyMSFNh$6uL&O^s4G5b3NlSzHxc!mQ8d^i4Q7JAxeMC_ZiIJBkwOsw^1-o-8Ms+YS zRv1?FZB=EEd@69(JebJ@GZFPqp8PLyq#-yim3yRRd)phtthSTJK^<;4aPIoA$gvjB zV}@1zXoD72r{#ia{Q{LjCW!+)#R40VksnPPL@a@h>{aQNJ~@}iv~TD~3f%V=xxG!o zss0*^S0ly`*WH_!aweEK-8mVM(Q4cfUU(rUzutB6Q|WoLZ%wvx1kDRE80LL^*St=i zJIyiFy2jm>Ng8}Gp56YAAWR~kcejh>58pzm>pZlKt};P#-)D>c+bw&8>Zn^X^ECc$ zyj>zgj14S!5M%>)z=(#|0hR3;s-PtC<&SXEy!Y$hXGH ztI^Qz;M*R4c-XNuoCng_xcpj*R@Uad>TR_bZ6q^!(Sf>~MXVqmj$~aaGO=QTh(wqJ z>(efT8@x-^K9ZB4E8Wy@Up!BeUSjI|6J|Db|IV+u0v$3;Ow|SZuN2Xw^_3}f!#RD!7o&qVpHy5Ise&rtOM?S1y9wxX^E><`Uzg^OueI5owd7iV zbzds!%0r9Wp=nn3{Wj!7YthSoTEw7D$MOT@gB zxZpZP$IZ_kGN@i0I$7gZ9~kaU1`xu5V~qo8{-S)+0kw3QXwgf&MViwoJ7ma`!{tXJ z=Wn)mz0cCO|vgc8| zg;>d*twuE*(WX<3eeEd)?TpZ!ZqU1rH0LTZp9sDd@+yx@;$ z<}6tL$U^sTHc?FtS%#Qj4Y@^i$__t=151+lJjr78RCY2Onjp26SODu1#9rC&-P#gQ z3vI9|E2<`x0`o!Y{gen!HsR3x9v@MaVJOgm+NpNw&>Ix zjaF>^V3YoT44q_dJ*)CJh`Fo9N3@`cnnNF|V*Vi6+Y)3eSo`*C&Iw`@orGfV?`kz% zfkMhOsq*uMO<#!`QjN))F2Ql}{txRFZ6X-#s0OF|9|aTF^nVphyV*{?9Eyq#qY^is zUEmi`c)wiFS!IR}N6pz$?n^NFkeIec+q8bJo6>c9Rg(Pf|@6>Je%93lYp zt3DPf5mDgS$2sSgBT#j#li;XfEaCSoX34Xb=vT4|-(ahUrU9F?&K}Ridua(uM^2v< zczrF=VBWW6YiPu$J!Ws{^$UC4ZrfH}!^bIWSWS}p5(qtng%%r*7V-I|kpq*ctKSQg z91hk<6VLTmzcbWqK77)c-U~xMEvL7y(|PZkoY34ZGd`aKD1_C-sBiVM69WQ$DFH>% zR;8~O$yYo)#datS6K@n3dU`j8AJpKs25H8qMyx3Wy%;}qv=6>?eLZSbW69BL!uY?) z`o{3Owzl2IPGdHW(sdDH7g@`(V=3*EsnQ7rOvxQ4Z<~=8MJ_7aCB7rg8iuIUO zshTzCwqz%kazeTd%CX)1W>r65KS(M+7sia6o(e)MeTas)=9-D)2?VI6m);hzRc}?$ z4y_>%io0GV=iMmpQo5_03|`zREv|~RW+>pU&GJCbD_pMjY9xy{nl=K;+p@WJtyipf z>zcn=Ic6r#c=!5jk`+Ep{m;Vw`F7&6$MZMcz)K>he#dkvQkv&+pNetJ10~(8Ix~1v zHK@+>N$M=WqUVoCwWBp44)~=Gv{CJeGUCA<#-?Kx?M_47GV-bf;89-cWx`@o8SpQG zl=HVi(HzPQCNxXM`WWCgC*sM&Ye^p7$$dA5W24s%ph)6BtL&j5$jCe2vU!;b??9MU zij{oPdg=XY(B0N7-{&0Z+4O){u9@Y>iAthyEsBW!09$RiPAr`YfI59Zi{qRK*d=J$ zym0TkU#<3hs_Z#EW+*14rp6yAJQhf0RCEh>$uJY9U>Gc8pnD9khrIBZoLR9C(wOiG zL*sHll*A2CoDax0iY26*F7rEbSP-6v%mo<2zoYM+#_{Zi%GP~z1Hpy^ z#55i>{1kb7`H-BUiO1Y3WT%mMv>;(lcWxF+c8@Q~YCB7sz1I!q zg>Xc0`2jpD*)?yF~$&W>i7&e%0Ah~?w_szhne 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 DjUrDf literal 0 HcmV?d00001 diff --git a/guides/source/4_0_release_notes.md b/guides/source/4_0_release_notes.md index b4442130ac..42794b180e 100644 --- a/guides/source/4_0_release_notes.md +++ b/guides/source/4_0_release_notes.md @@ -1,42 +1,24 @@ Ruby on Rails 4.0 Release Notes =============================== -Highlights in Rails 4.0: (WIP) +Highlights in Rails 4.0: * Ruby 1.9.3 only * Strong Parameters * Queue API -* Caching Improvements -* ActionController::Live +* Turbolinks +* Russian Doll Caching +* Asynchronous Mailers -These release notes cover the major changes, but do not include each bug-fix and changes. If you want to see everything, check out the [list of commits](https://github.com/rails/rails/commits/master) in the main Rails repository on GitHub. +These release notes cover only the major changes. To know about various bug fixes and changes, please refer to the change logs or check out the [list of commits](https://github.com/rails/rails/commits/master) in the main Rails repository on GitHub. -------------------------------------------------------------------------------- Upgrading to Rails 4.0 ---------------------- -TODO. This is a WIP guide. +If you're upgrading an existing application, it's a great idea to have good test coverage before going in. You should also first upgrade to Rails 3.2 in case you haven't and make sure your application still runs as expected before attempting an update to Rails 4.0. A list of things to watch out for when upgrading is available in the [Upgrading to Rails](upgrading_ruby_on_rails.html#upgrading-from-rails-3-2-to-rails-4-0) guide. -If you're upgrading an existing application, it's a great idea to have good test coverage before going in. You should also first upgrade to Rails 3.2 in case you haven't and make sure your application still runs as expected before attempting an update to Rails 4.0. Then take heed of the following changes: - -### Rails 4.0 requires at least Ruby 1.9.3 - -Rails 4.0 requires Ruby 1.9.3 or higher. Support for all of the previous Ruby versions has been dropped officially and you should upgrade as early as possible. - -### What to update in your apps - -* Update your Gemfile to depend on - * `rails = 4.0.0` - * `sass-rails ~> 3.2.3` - * `coffee-rails ~> 3.2.1` - * `uglifier >= 1.0.3` - -TODO: Update the versions above. - -* Rails 4.0 removes `vendor/plugins` completely. You have to replace these plugins by extracting them as gems and adding them in your Gemfile. If you choose not to make them gems, you can move them into, say, `lib/my_plugin/*` and add an appropriate initializer in `config/initializers/my_plugin.rb`. - -TODO: Configuration changes in environment files Creating a Rails 4.0 application -------------------------------- @@ -70,11 +52,14 @@ $ ruby /path/to/rails/railties/bin/rails new myapp --dev Major Features -------------- -Moved to a Plugin ------------------ +TODO. Give a list and then talk about each of them briefly. We can point to relevant code commits or documentation from these sections. -With Rails 4 several pieces have been extracted. While Rails won't ship with these features anymore, -you can simply add the extracted plugin to your `Gemfile` to bring the functionality back. +![Rails 4.0](images/rails4_features.png) + +Extraction of features to gems +--------------------------- + +In Rails 4.0, several features have been extracted into gems. You can simply add the extracted gems to your `Gemfile` to bring the functionality back. * Hash-based & Dynamic finder methods ([Github](https://github.com/rails/activerecord-deprecated_finders)) * Mass assignment protection in Active Record models ([Github](https://github.com/rails/protected_attributes), [Pull Request](https://github.com/rails/rails/pull/7251)) @@ -83,6 +68,7 @@ you can simply add the extracted plugin to your `Gemfile` to bring the functiona * Active Resource ([Github](https://github.com/rails/activeresource), [Pull Request](https://github.com/rails/rails/pull/572), [Blog](http://yetimedia.tumblr.com/post/35233051627/activeresource-is-dead-long-live-activeresource)) * Action Caching ([Github](https://github.com/rails/actionpack-action_caching), [Pull Request](https://github.com/rails/rails/pull/7833)) * Page Caching ([Github](https://github.com/rails/actionpack-page_caching), [Pull Request](https://github.com/rails/rails/pull/7833)) +* Sprockets ([Github](https://github.com/rails/sprockets-rails)) Documentation ------------- @@ -94,847 +80,92 @@ Documentation Railties -------- -* Ensure that RAILS_ENV is set when accessing Rails.env. +Please refer to the [Changelog](https://github.com/rails/rails/blob/master/railties/CHANGELOG.md) for detailed changes. -* Don't eager-load app/assets and app/views. - -* Add `.rake` to list of file extensions included by `rake notes` and `rake notes:custom`. +### Notable changes * New test locations `test/models`, `test/helpers`, `test/controllers`, and `test/mailers`. Corresponding rake tasks added as well. ([Pull Request](https://github.com/rails/rails/pull/7878)) -* Set a different cache per environment for assets pipeline through `config.assets.cache`. +* Threadsafe on by default -* `Rails.public_path` now returns a Pathname object. - -* Remove highly uncommon `config.assets.manifest` option for moving the manifest path. This option is now unsupported in sprockets-rails. - -* Add `config.action_controller.permit_all_parameters` to disable StrongParameters protection, it's false by default. - -* Remove `config.active_record.whitelist_attributes` and `config.active_record.mass_assignment_sanitizer` from new applications since MassAssignmentSecurity has been extracted from Rails. - -* Change `rails new` and `rails plugin new` generators to name the `.gitkeep` files as `.keep` in a more SCM-agnostic way. Change `--skip-git` option to only skip the `.gitignore` file and still generate the `.keep` files. Add `--skip-keeps` option to skip the `.keep` files. - -* Fixed support for DATABASE_URL environment variable for rake db tasks. - -* rails dbconsole now can use SSL for MySQL. The database.yml options sslca, sslcert, sslcapath, sslcipher and sslkey now affect rails dbconsole. - -* Correctly handle SCRIPT_NAME when generating routes to engine in application that's mounted at a sub-uri. With this behavior, you *should not* use default_url_options[:script_name] to set proper application's mount point by yourself. - -* `config.threadsafe!` is deprecated in favor of `config.eager_load` which provides a more fine grained control on what is eager loaded. - -* The migration generator will now produce AddXXXToYYY/RemoveXXXFromYYY migrations with references statements, for instance - - rails g migration AddReferencesToProducts user:references supplier:references{polymorphic} - - will generate the migration with: - - add_reference :products, :user, index: true - add_reference :products, :supplier, polymorphic: true, index: true - -* Allow scaffold/model/migration generators to accept a `polymorphic` modifier for `references`/`belongs_to`, for instance - - ``` - rails g model Product supplier:references{polymorphic} - ``` - - will generate the model with `belongs_to :supplier, polymorphic: true` association and appropriate migration. - -* Set `config.active_record.migration_error` to `:page_load` for development. - -* Add runner to `Rails::Railtie` as a hook called just after runner starts. - -* Add `/rails/info/routes` path which displays the same information as `rake routes`. - -* Improved `rake routes` output for redirects. - -* Load all environments available in `config.paths["config/environments"]`. - -* Add `config.queue_consumer` to change the job queue consumer from the default `ActiveSupport::ThreadedQueueConsumer`. - -* Add `Rails.queue` for processing jobs in the background. - -* Remove `Rack::SSL` in favour of `ActionDispatch::SSL`. - -* Allow to set class that will be used to run as a console, other than IRB, with `Rails.application.config.console=`. It's best to add it to console block. - - ```ruby - # it can be added to config/application.rb - console do - # this block is called only when running console, - # so we can safely require pry here - require "pry" - config.console = Pry - end - ``` - -* Add a convenience method `hide!` to Rails generators to hide the current generator namespace from showing when running `rails generate`. - -* Scaffold now uses `content_tag_for` in `index.html.erb`. - -* `Rails::Plugin` is removed. Instead of adding plugins to `vendor/plugins`, use gems or bundler with path or git dependencies. +* Add `Rails.queue` for processing jobs in the background. ### Deprecations +* `config.threadsafe!` is deprecated in favor of `config.eager_load` which provides a more fine grained control on what is eager loaded. + +* `Rails::Plugin` has gone. Instead of adding plugins to `vendor/plugins` use gems or bundler with path or git dependencies. + Action Mailer ------------- -* Allow to set default Action Mailer options via `config.action_mailer.default_options=`. +Please refer to the [Changelog](https://github.com/rails/rails/blob/master/actionmailer/CHANGELOG.md) for detailed changes. -* Raise an `ActionView::MissingTemplate` exception when no implicit template could be found. +### Notable changes -* Asynchronously send messages via the Rails Queue. ([Pull Request](https://github.com/rails/rails/pull/6839)) - -* Delivery Options (such as SMTP Settings) can now be set dynamically per mailer action. - - Delivery options are set via :delivery_method_options key on mail. - - ```ruby - def welcome_mailer(user,company) - delivery_options = { user_name: company.smtp_user, password: company.smtp_password, address: company.smtp_host } - mail(to: user.email, subject: "Welcome!", delivery_method_options: delivery_options) - end - ``` - -* Allow for callbacks in mailers similar to ActionController::Base. You can now set up headers/attachments using `before_filter` or `after_filter`. You could also change delivery settings or prevent delivery in an after filter based on instance variables set in your mailer action. You have access to `ActionMailer::Base` instance methods like `message`, `attachments`, `headers`. - -Action Pack ------------ - -### Action Controller - -* Add `ActionController::Flash.add_flash_types` method to allow people to register their own flash types. e.g.: - - ```ruby - class ApplicationController - add_flash_types :error, :warning - end - ``` - - If you add the above code, you can use `<%= error %>` in an erb, and `redirect_to /foo, :error => 'message'` in a controller. - -* Encrypted Cookies + Sign using Derived Keys. ([Pull Request](https://github.com/rails/rails/pull/8112)) - -* Remove Active Model dependency from Action Pack. - -* Support unicode characters in routes. Route will be automatically escaped, so instead of manually escaping: - - ```ruby - get Rack::Utils.escape('こんにちは') => 'home#index' - ``` - - You just have to write the unicode route: - - ```ruby - get 'こんにちは' => 'home#index' - ``` - -* Return proper format on exceptions. - -* Extracted redirect logic from `ActionController::ForceSSL::ClassMethods.force_ssl` into `ActionController::ForceSSL#force_ssl_redirect`. - -* URL path parameters with invalid encoding now raise `ActionController::BadRequest`. - -* Malformed query and request parameter hashes now raise `ActionController::BadRequest`. - -* `respond_to` and `respond_with` now raise `ActionController::UnknownFormat` instead of directly returning head 406. The exception is rescued and converted to 406 in the exception handling middleware. - -* JSONP now uses `application/javascript` instead of `application/json` as the MIME type. - -* Session arguments passed to process calls in functional tests are now merged into the existing session, whereas previously they would replace the existing session. This change may break some existing tests if they are asserting the exact contents of the session but should not break existing tests that only assert individual keys. - -* Forms of persisted records use always PATCH (via the `_method` hack). - -* For resources, both PATCH and PUT are routed to the `update` action. - -* Don't ignore `force_ssl` in development. This is a change of behavior - use an `:if` condition to recreate the old behavior. - - ```ruby - class AccountsController < ApplicationController - force_ssl :if => :ssl_configured? - - def ssl_configured? - !Rails.env.development? - end - end - ``` - -#### Deprecations - -* Deprecated `ActionController::Integration` in favour of `ActionDispatch::Integration`. - -* Deprecated `ActionController::IntegrationTest` in favour of `ActionDispatch::IntegrationTest`. - -* Deprecated `ActionController::PerformanceTest` in favour of `ActionDispatch::PerformanceTest`. - -* Deprecated `ActionController::AbstractRequest` in favour of `ActionDispatch::Request`. - -* Deprecated `ActionController::Request` in favour of `ActionDispatch::Request`. - -* Deprecated `ActionController::AbstractResponse` in favour of `ActionDispatch::Response`. - -* Deprecated `ActionController::Response` in favour of `ActionDispatch::Response`. - -* Deprecated `ActionController::Routing` in favour of `ActionDispatch::Routing`. - -### Action Dispatch - -* Add Routing Concerns to declare common routes that can be reused inside others resources and routes. - - Code before: - - ```ruby - resources :messages do - resources :comments - end - - resources :posts do - resources :comments - resources :images, only: :index - end - ``` - - Code after: - - ```ruby - concern :commentable do - resources :comments - end - - concern :image_attachable do - resources :images, only: :index - end - - resources :messages, concerns: :commentable - - resources :posts, concerns: [:commentable, :image_attachable] - ``` - -* Show routes in exception page while debugging a `RoutingError` in development. - -* Helper methods for HTML5 inputs. ([Pull Request](https://github.com/rails/rails/pull/6359)) - -* Include `mounted_helpers` (helpers for accessing mounted engines) in `ActionDispatch::IntegrationTest` by default. - -* Added `ActionDispatch::SSL` middleware that when included force all the requests to be under HTTPS protocol. - -* Copy literal route constraints to defaults so that url generation know about them. The copied constraints are `:protocol`, `:subdomain`, `:domain`, `:host` and `:port`. - -* Allows `assert_redirected_to` to match against a regular expression. - -* Adds a backtrace to the routing error page in development. - -* `assert_generates`, `assert_recognizes`, and `assert_routing` all raise `Assertion` instead of `RoutingError`. - -* Allows the route helper root to take a string argument. For example, `root 'pages#main'` as a shortcut for `root to: 'pages#main'`. - -* Adds support for the PATCH verb: Request objects respond to `patch?`. Routes now have a new `patch` method, and understand `:patch` in the existing places where a verb is configured, like `:via`. Functional tests have a new method `patch` and integration tests have a new method `patch_via_redirect`. -If `:patch` is the default verb for updates, edits are tunneled as `PATCH` rather than as `PUT` and routing acts accordingly. - -* Integration tests support the OPTIONS method. - -* `expires_in` accepts a `must_revalidate` flag. If true, "must-revalidate" is added to the `Cache-Control` header. - -* Default responder will now always use your overridden block in `respond_with` to render your response. - -* Turn off verbose mode of `rack-cache`, we still have `X-Rack-Cache` to check that info. - -#### Deprecations - -### Action View - -* Remove Active Model dependency from Action Pack. - -* Allow to use `mounted_helpers` (helpers for accessing mounted engines) in `ActionView::TestCase`. - -* Make current object and counter (when it applies) variables accessible when rendering templates with `:object` or `:collection`. - -* Allow to lazy load `default_form_builder` by passing a string instead of a constant. - -* Add index method to `FormBuilder` class. - -* Adds support for layouts when rendering a partial with a given collection. - -* Remove `:disable_with` in favor of `data-disable-with` option from `submit_tag`, `button_tag` and `button_to` helpers. - -* Remove `:mouseover` option from `image_tag` helper. - -* Templates without a handler extension now raises a deprecation warning but still defaults to `ERb`. In future releases, it will simply return the template content. - -* Add a `divider` option to `grouped_options_for_select` to generate a separator optgroup automatically, and deprecate prompt as third argument, in favor of using an options hash. - -* Add `time_field` and `time_field_tag` helpers which render an `input[type="time"]` tag. - -* Removed old `text_helper` apis for `highlight`, `excerpt` and `word_wrap`. - -* Remove the leading \n added by textarea on `assert_select`. - -* Changed default value for `config.action_view.embed_authenticity_token_in_remote_forms` to false. This change breaks remote forms that need to work also without JavaScript, so if you need such behavior, you can either set it to true or explicitly pass `:authenticity_token => true` in form options. - -* Make possible to use a block in `button_to` helper if button text is hard to fit into the name parameter: - - ```ruby - <%= button_to [:make_happy, @user] do %> - Make happy <%= @user.name %> - <% end %> - # => "
- #
- # - #
- #
" - ``` - -* Replace `include_seconds` boolean argument with `:include_seconds => true` option in `distance_of_time_in_words` and `time_ago_in_words` signature. - -* Remove `button_to_function` and `link_to_function` helpers. - -* `truncate` now always returns an escaped HTML-safe string. The option `:escape` can be used as `false` to not escape the result. - -* `truncate` now accepts a block to show extra content when the text is truncated. - -* Add `week_field`, `week_field_tag`, `month_field`, `month_field_tag`, `datetime_local_field`, `datetime_local_field_tag`, `datetime_field` and `datetime_field_tag` helpers. - -* Add `color_field` and `color_field_tag` helpers. - -* Add `include_hidden` option to select tag. With `:include_hidden => false` select with multiple attribute doesn't generate hidden input with blank value. - -* Removed default size option from the `text_field`, `search_field`, `telephone_field`, `url_field`, `email_field` helpers. - -* Removed default cols and rows options from the `text_area` helper. - -* Adds `image_url`, `javascript_url`, `stylesheet_url`, `audio_url`, `video_url`, and `font_url` to assets tag helper. These URL helpers will return the full path to your assets. This is useful when you are going to reference this asset from external host. - -* Allow `value_method` and `text_method` arguments from `collection_select` and `options_from_collection_for_select` to receive an object that responds to `:call` such as a proc, to evaluate the option in the current element context. This works the same way with `collection_radio_buttons` and `collection_check_boxes`. - -* Add `date_field` and `date_field_tag` helpers which render an `input[type="date"]` tag. - -* Add `collection_check_boxes` form helper, similar to `collection_select`: - - ```ruby - collection_check_boxes :post, :author_ids, Author.all, :id, :name - # Outputs something like: - - - - - - ``` - - The label/check_box pairs can be customized with a block. - -* Add `collection_radio_buttons` form helper, similar to `collection_select`: - - ```ruby - collection_radio_buttons :post, :author_id, Author.all, :id, :name - # Outputs something like: - - - - - ``` - - The label/radio_button pairs can be customized with a block. - -* `check_box` with an HTML5 attribute `:form` will now replicate the `:form` attribute to the hidden field as well. - -* label form helper accepts `:for => nil` to not generate the attribute. - -* Add `:format` option to `number_to_percentage`. - -* Add `config.action_view.logger` to configure logger for `Action View`. - -* `check_box` helper with `:disabled => true` will generate a `disabled` hidden field to conform with the HTML convention where disabled fields are not submitted with the form. This is a behavior change, previously the hidden tag had a value of the disabled checkbox. - -* `favicon_link_tag` helper will now use the favicon in `app/assets` by default. - -* `ActionView::Helpers::TextHelper#highlight` now defaults to the HTML5 `mark` element. - -#### Deprecations - -### Sprockets - -Moved into a separate gem `sprockets-rails`. - -Active Record -------------- - -* Add `add_reference` and `remove_reference` schema statements. Aliases, `add_belongs_to` and `remove_belongs_to` are acceptable. References are reversible. - - ```ruby - # Create a user_id column - add_reference(:products, :user) - - # Create a supplier_id, supplier_type columns and appropriate index - add_reference(:products, :supplier, polymorphic: true, index: true) - - # Remove polymorphic reference - remove_reference(:products, :supplier, polymorphic: true) - ``` - -* Add `:default` and `:null` options to `column_exists?`. - - ```ruby - column_exists?(:testings, :taggable_id, :integer, null: false) - column_exists?(:testings, :taggable_type, :string, default: 'Photo') - ``` - -* `ActiveRecord::Relation#inspect` now makes it clear that you are dealing with a `Relation` object rather than an array: - - ```ruby - User.where(:age => 30).inspect - # => , #]> - - User.where(:age => 30).to_a.inspect - # => [#, #] - ``` - - if more than 10 items are returned by the relation, inspect will only show the first 10 followed by ellipsis. - -* Add `:collation` and `:ctype` support to PostgreSQL. These are available for PostgreSQL 8.4 or later. - - ```yaml - development: - adapter: postgresql - host: localhost - database: rails_development - username: foo - password: bar - encoding: UTF8 - collation: ja_JP.UTF8 - ctype: ja_JP.UTF8 - ``` - -* `FinderMethods#exists?` now returns `false` with the `false` argument. - -* Added support for specifying the precision of a timestamp in the postgresql adapter. So, instead of having to incorrectly specify the precision using the `:limit` option, you may use `:precision`, as intended. For example, in a migration: - - ```ruby - def change - create_table :foobars do |t| - t.timestamps :precision => 0 - end - end - ``` - -* Allow `ActiveRecord::Relation#pluck` to accept multiple columns. Returns an array of arrays containing the typecasted values: - - ```ruby - Person.pluck(:id, :name) - # SELECT people.id, people.name FROM people - # => [[1, 'David'], [2, 'Jeremy'], [3, 'Jose']] - ``` - -* Improve the derivation of HABTM join table name to take account of nesting. It now takes the table names of the two models, sorts them lexically and then joins them, stripping any common prefix from the second table name. Some examples: - - ``` - Top level models (Category <=> Product) - Old: categories_products - New: categories_products - - Top level models with a global table_name_prefix (Category <=> Product) - Old: site_categories_products - New: site_categories_products - - Nested models in a module without a table_name_prefix method (Admin::Category <=> Admin::Product) - Old: categories_products - New: categories_products - - Nested models in a module with a table_name_prefix method (Admin::Category <=> Admin::Product) - Old: categories_products - New: admin_categories_products - - Nested models in a parent model (Catalog::Category <=> Catalog::Product) - Old: categories_products - New: catalog_categories_products - - Nested models in different parent models (Catalog::Category <=> Content::Page) - Old: categories_pages - New: catalog_categories_content_pages - ``` - -* Move HABTM validity checks to `ActiveRecord::Reflection`. One side effect of this is to move when the exceptions are raised from the point of declaration to when the association is built. This is consistant with other association validity checks. - -* Added `stored_attributes` hash which contains the attributes stored using `ActiveRecord::Store`. This allows you to retrieve the list of attributes you've defined. - - ```ruby - class User < ActiveRecord::Base - store :settings, accessors: [:color, :homepage] - end - - User.stored_attributes[:settings] # [:color, :homepage] - ``` - -* PostgreSQL default log level is now 'warning', to bypass the noisy notice messages. You can change the log level using the `min_messages` option available in your `config/database.yml`. - -* Add uuid datatype support to PostgreSQL adapter. - -* Added `ActiveRecord::Migration.check_pending!` that raises an error if migrations are pending. - -* Added `#destroy!` which acts like `#destroy` but will raise an `ActiveRecord::RecordNotDestroyed` exception instead of returning `false`. - -* Allow blocks for count with `ActiveRecord::Relation`, to work similar as `Array#count`: `Person.where("age > 26").count { |person| person.gender == 'female' }` - -* Added support to `CollectionAssociation#delete` for passing fixnum or string values as record ids. This finds the records responding to the ids and deletes them. - - ```ruby - class Person < ActiveRecord::Base - has_many :pets - end - - person.pets.delete("1") # => [#] - person.pets.delete(2, 3) # => [#, #] - ``` - -* It's not possible anymore to destroy a model marked as read only. - -* Added ability to `ActiveRecord::Relation#from` to accept other `ActiveRecord::Relation` objects. - -* Added custom coders support for `ActiveRecord::Store`. Now you can set your custom coder like this: - - ```ruby - store :settings, accessors: [ :color, :homepage ], coder: JSON - ``` - -* `mysql` and `mysql2` connections will set `SQL_MODE=STRICT_ALL_TABLES` by default to avoid silent data loss. This can be disabled by specifying `strict: false` in `config/database.yml`. ([Pull Request](https://github.com/rails/rails/pull/6069)) - -* Added default order to `ActiveRecord::Base#first` to assure consistent results among different database engines. Introduced `ActiveRecord::Base#take` as a replacement to the old behavior. - -* Added an `:index` option to automatically create indexes for `references` and `belongs_to` statements in migrations. This can be either a boolean or a hash that is identical to options available to the `add_index` method: - - ```ruby - create_table :messages do |t| - t.references :person, :index => true - end - ``` - - Is the same as: - - ```ruby - create_table :messages do |t| - t.references :person - end - add_index :messages, :person_id - ``` - - Generators have also been updated to use the new syntax. - -* Added bang methods for mutating `ActiveRecord::Relation` objects. For example, while `foo.where(:bar)` will return a new object leaving foo unchanged, `foo.where!(:bar)` will mutate the foo object. - -* Added `#find_by` and `#find_by!` to mirror the functionality provided by dynamic finders in a way that allows dynamic input more easily: - - ```ruby - Post.find_by name: 'Spartacus', rating: 4 - Post.find_by "published_at < ?", 2.weeks.ago - Post.find_by! name: 'Spartacus' - ``` - -* Added `ActiveRecord::Base#slice` to return a hash of the given methods with their names as keys and returned values as values. - -* Remove IdentityMap - IdentityMap has never graduated to be an "enabled-by-default" feature, due to some inconsistencies with associations, as described in this [commit](https://github.com/rails/rails/commit/302c912bf6bcd0fa200d964ec2dc4a44abe328a6). Hence the removal from the codebase, until such issues are fixed. - -* Added a feature to dump/load internal state of `SchemaCache` instance because we want to boot more quickly when we have many models. ([Pull Request](https://github.com/rails/rails/pull/5162)) - - ```ruby - # execute rake task. - RAILS_ENV=production bundle exec rake db:schema:cache:dump - => generate db/schema_cache.dump - - # add config.use_schema_cache_dump = true in config/production.rb. BTW, true is default. - - # boot rails. - RAILS_ENV=production bundle exec rails server - => use db/schema_cache.dump - - # If you remove clear dumped cache, execute rake task. - RAILS_ENV=production bundle exec rake db:schema:cache:clear - => remove db/schema_cache.dump - ``` - -* Added support for partial indices to `PostgreSQL` adapter. - -* The `add_index` method now supports a `where` option that receives a string with the partial index criteria. - -* Added the `ActiveRecord::NullRelation` class implementing the null object pattern for the Relation class. - -* Implemented `ActiveRecord::Relation#none` method which returns a chainable relation with zero records (an instance of the `NullRelation` class). Any subsequent condition chained to the returned relation will continue generating an empty relation and will not fire any query to the database. - -* Added `create_join_table` migration helper to create HABTM join tables. - - ```ruby - create_join_table :products, :categories - # => - # create_table :categories_products, :id => false do |td| - # td.integer :product_id, :null => false - # td.integer :category_id, :null => false - # end - ``` - -* The primary key is always initialized in the `@attributes` hash to nil (unless another value has been specified). - -* In previous releases, the following would generate a single query with an OUTER JOIN comments, rather than two separate queries: - - ```ruby - Post.includes(:comments).where("comments.name = 'foo'") - ``` - - This behaviour relies on matching SQL string, which is an inherently flawed idea unless we write an SQL parser, which we do not wish to do. Therefore, it is now deprecated. - - To avoid deprecation warnings and for future compatibility, you must explicitly state which tables you reference, when using SQL snippets: - - ```ruby - Post.includes(:comments).where("comments.name = 'foo'").references(:comments) - ``` - - Note that you do not need to explicitly specify references in the following cases, as they can be automatically inferred: - - ```ruby - Post.where(comments: { name: 'foo' }) - Post.where('comments.name' => 'foo') - Post.order('comments.name') - ``` - - You also do not need to worry about this unless you are doing eager loading. Basically, don't worry unless you see a deprecation warning or (in future releases) an SQL error due to a missing JOIN. - -* Support for the `schema_info` table has been dropped. Please switch to `schema_migrations`. - -* Connections *must* be closed at the end of a thread. If not, your connection pool can fill and an exception will be raised. - -* PostgreSQL hstore records can be created. - -* PostgreSQL hstore types are automatically deserialized from the database. - -* Support for array datatype in PostgreSQL. ([Pull Request](https://github.com/rails/rails/pull/7547)) - -* Added `#update_columns` method which updates the attributes from the passed-in hash without calling save, hence skipping validations and callbacks. `ActiveRecordError` will be raised when called on new objects or when at least one of the attributes is marked as read only. - - ```ruby - post.attributes # => {"id"=>2, "title"=>"My title", "body"=>"My content", "author"=>"Peter"} - post.update_columns({title: 'New title', author: 'Sebastian'}) # => true - post.attributes # => {"id"=>2, "title"=>"New title", "body"=>"My content", "author"=>"Sebastian"} - ``` +* Asynchronously send messages via the Rails Queue. ([Pull Request](https://github.com/rails/rails/pull/6839)) ### Deprecations -* Deprecated most of the 'dynamic finder' methods. All dynamic methods except for `find_by_...` and `find_by_...!` are deprecated. Here's how you can rewrite the code: - - ```ruby - find_all_by_... can be rewritten using where(...) - find_last_by_... can be rewritten using where(...).last - scoped_by_... can be rewritten using where(...) - find_or_initialize_by_... can be rewritten using where(...).first_or_initialize - find_or_create_by_... can be rewritten using where(...).first_or_create - find_or_create_by_...! can be rewritten using where(...).first_or_create! - ``` - - The implementation of the deprecated dynamic finders has been moved to the `active_record_deprecated_finders` gem. - -* Deprecated the old-style hash based finder API. This means that methods which previously accepted "finder options" no longer do. For example this: - - ```ruby - Post.find(:all, :conditions => { :comments_count => 10 }, :limit => 5) - ``` - - should be rewritten in the new style which has existed since Rails 3: - - ```ruby - Post.where(comments_count: 10).limit(5) - ``` - - Note that as an interim step, it is possible to rewrite the above as: - - ```ruby - Post.scoped(:where => { :comments_count => 10 }, :limit => 5) - ``` - - This could save you a lot of work if there is a lot of old-style finder usage in your application. - - Calling `Post.scoped(options)` is a shortcut for `Post.scoped.merge(options)`. `Relation#merge` now accepts a hash of options, but they must be identical to the names of the equivalent finder method. These are mostly identical to the old-style finder option names, except in the following cases: - - ``` - :conditions becomes :where - :include becomes :includes - :extend becomes :extending - ``` - - The code to implement the deprecated features has been moved out to the `active_record_deprecated_finders` gem. This gem is a dependency of Active Record in Rails 4.0. It will no longer be a dependency from Rails 4.1, but if your app relies on the deprecated features then you can add it to your own Gemfile. It will be maintained by the Rails core team until Rails 5.0 is released. - -* Deprecate eager-evaluated scopes. - - Don't use this: - - ```ruby - scope :red, where(color: 'red') - default_scope where(color: 'red') - ``` - - Use this: - - ```ruby - scope :red, -> { where(color: 'red') } - default_scope { where(color: 'red') } - ``` - - The former has numerous issues. It is a common newbie gotcha to do the following: - - ```ruby - scope :recent, where(published_at: Time.now - 2.weeks) - ``` - - Or a more subtle variant: - - ```ruby - scope :recent, -> { where(published_at: Time.now - 2.weeks) } - scope :recent_red, recent.where(color: 'red') - ``` - - Eager scopes are also very complex to implement within Active Record, and there are still bugs. For example, the following does not do what you expect: - - ```ruby - scope :remove_conditions, except(:where) - where(...).remove_conditions # => still has conditions - ``` - -* Added deprecation for the `:dependent => :restrict` association option. - -* Up until now `has_many` and `has_one, :dependent => :restrict` option raised a `DeleteRestrictionError` at the time of destroying the object. Instead, it will add an error on the model. - -* To fix this warning, make sure your code isn't relying on a `DeleteRestrictionError` and then add `config.active_record.dependent_restrict_raises = false` to your application config. - -* New rails application would be generated with the `config.active_record.dependent_restrict_raises = false` in the application config. - -* The migration generator now creates a join table with (commented) indexes every time the migration name contains the word "join_table". - -* `ActiveRecord::SessionStore` is removed from Rails 4.0 and is now a separate [gem](https://github.com/rails/activerecord-session_store). - Active Model ------------ -* Changed `AM::Serializers::JSON.include_root_in_json` default value to false. Now, AM Serializers and AR objects have the same default behaviour. +Please refer to the [Changelog](https://github.com/rails/rails/blob/master/activemodel/CHANGELOG.md) for detailed changes. - ```ruby - class User < ActiveRecord::Base; end +### Notable changes - class Person - include ActiveModel::Model - include ActiveModel::AttributeMethods - include ActiveModel::Serializers::JSON +* Add `ActiveModel::ForbiddenAttributesProtection`, a simple module to protect attributes from mass assignment when non-permitted attributes are passed. - attr_accessor :name, :age - - def attributes - instance_values - end - end - - user.as_json - => {"id"=>1, "name"=>"Konata Izumi", "age"=>16, "awesome"=>true} - # root is not included - - person.as_json - => {"name"=>"Francesco", "age"=>22} - # root is not included - ``` - -* Passing false hash values to `validates` will no longer enable the corresponding validators. - -* `ConfirmationValidator` error messages will attach to `:#{attribute}_confirmation` instead of `attribute`. - -* Added `ActiveModel::Model`, a mixin to make Ruby objects work with Action Pack out of the box. ([Pull Request](https://github.com/rails/rails/pull/5253)) - -* `ActiveModel::Errors#to_json` supports a new parameter `:full_messages`. - -* Trims down the API by removing `valid?` and `errors.full_messages`. +* Added `ActiveModel::Model`, a mixin to make Ruby objects work with AP out of box. ### Deprecations -Active Resource ---------------- - -* Active Resource is removed from Rails 4.0 and is now a separate [gem](https://github.com/rails/activeresource). - Active Support -------------- -* Add default values to all `ActiveSupport::NumberHelper` methods, to avoid errors with empty locales or missing values. +Please refer to the [Changelog](https://github.com/rails/rails/blob/master/activesupport/CHANGELOG.md) for detailed changes. -* `Time#change` now works with time values with offsets other than UTC or the local time zone. +### Notable changes -* Add `Time#prev_quarter` and `Time#next_quarter` short-hands for `months_ago(3)` and `months_since(3)`. +* Replace deprecated `memcache-client` gem with `dalli` in ActiveSupport::Cache::MemCacheStore. -* Add `Time#last_week`, `Time#last_month`, `Time#last_year` as aliases for `Time#prev_week`, `Time#prev_month`, and `Time#prev_year`. +* Optimize ActiveSupport::Cache::Entry to reduce memory and processing overhead. -* Add `Date#last_week`, `Date#last_month`, `Date#last_year` as aliases for `Date#prev_week`, `Date#prev_month`, and `Date#prev_year`. +* Inflections can now be defined per locale. `singularize` and `pluralize` accept locale as an extra argument. -* Remove obsolete and unused `require_association` method from dependencies. - -* Add `:instance_accessor` option for `config_accessor`. - - ```ruby - class User - include ActiveSupport::Configurable - config_accessor :allowed_access, instance_accessor: false - end - - User.new.allowed_access = true # => NoMethodError - User.new.allowed_access # => NoMethodError - ``` - -* `ActionView::Helpers::NumberHelper` methods have been moved to `ActiveSupport::NumberHelper` and are now available via `Numeric#to_s`. - -* `Numeric#to_s` now accepts the formatting options :phone, :currency, :percentage, :delimited, :rounded, :human, and :human_size. - -* Add `Hash#transform_keys`, `Hash#transform_keys!`, `Hash#deep_transform_keys` and `Hash#deep_transform_keys!`. - -* Changed xml type datetime to dateTime (with upper case letter T). - -* Add `:instance_accessor` option for `class_attribute`. - -* `constantize` now looks in the ancestor chain. - -* Add `Hash#deep_stringify_keys` and `Hash#deep_stringify_keys!` to convert all keys from a `Hash` instance into strings. - -* Add `Hash#deep_symbolize_keys` and `Hash#deep_symbolize_keys!` to convert all keys from a `Hash` instance into symbols. - -* `Object#try` can't call private methods. - -* AS::Callbacks#run_callbacks remove key argument. - -* `deep_dup` works more expectedly now and duplicates also values in `Hash` instances and elements in `Array` instances. - -* Inflector no longer applies ice -> ouse to words like slice, police. - -* Add `ActiveSupport::Deprecations.behavior = :silence` to completely ignore Rails runtime deprecations. - -* Make `Module#delegate` stop using send - can no longer delegate to private methods. - -* AS::Callbacks deprecate :rescuable option. - -* Adds `Integer#ordinal` to get the ordinal suffix string of an integer. - -* AS::Callbacks :per_key option is no longer supported. - -* AS::Callbacks#define_callbacks add :skip_after_callbacks_if_terminated option. - -* Add html_escape_once to ERB::Util, and delegate escape_once tag helper to it. - -* Remove `ActiveSupport::TestCase#pending` method, use `skip` instead. - -* Deletes the compatibility method `Module#method_names`, use `Module#methods` from now on (which returns symbols). - -* Deletes the compatibility method `Module#instance_method_names`, use `Module#instance_methods` from now on (which returns symbols). - -* Unicode database updated to 6.1.0. - -* Adds `encode_big_decimal_as_string` option to force JSON serialization of BigDecimals as numeric instead of wrapping them in strings for safety. +* `Object#try` will now return nil instead of raise a NoMethodError if the receiving object does not implement the method, but you can still get the old behavior by using the new `Object#try!`. ### Deprecations -* `ActiveSupport::Callbacks`: deprecate usage of filter object with `#before` and `#after` methods as `around` callback. +* Deprecate `ActiveSupport::TestCase#pending` method, use `skip` from MiniTest instead. -* `BufferedLogger` is deprecated. Use `ActiveSupport::Logger` or the `logger` from Ruby stdlib. +* ActiveSupport::Benchmarkable#silence has been deprecated due to its lack of thread safety. It will be removed without replacement in Rails 4.1. -* Deprecates the compatibility method `Module#local_constant_names` and use `Module#local_constants` instead (which returns symbols). +* `ActiveSupport::JSON::Variable` is deprecated. Define your own `#as_json` and `#encode_json` methods for custom JSON string literals. + +* Deprecates the compatibility method Module#local_constant_names, use Module#local_constants instead (which returns symbols). + +* BufferedLogger is deprecated. Use ActiveSupport::Logger, or the logger from Ruby stdlib. + + +Action Pack +----------- + +Please refer to the [Changelog](https://github.com/rails/rails/blob/master/railties/CHANGELOG.md) for detailed changes. + +### Notable changes + +### Deprecations + + +Active Record +------------- + +Please refer to the [Changelog](https://github.com/rails/rails/blob/master/railties/CHANGELOG.md) for detailed changes. + +### Notable changes + +### Deprecations Credits -------