From 0c6d767b38699520f8da94b2832d30ff75008d1a Mon Sep 17 00:00:00 2001 From: mschiess <mathieu.schiess@posteo.ch> Date: Tue, 8 Oct 2024 14:31:50 +0200 Subject: [PATCH] Ajout d'un exercice au nb recursivite2 --- recursivite/images/carresemboites.png | Bin 0 -> 2543 bytes recursivite/images/flocon-iteration.png | Bin 0 -> 21789 bytes recursivite/images/koch_snowflake.png | Bin 0 -> 36242 bytes recursivite/recursivite2.ipynb | 2 +- 4 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 recursivite/images/carresemboites.png create mode 100644 recursivite/images/flocon-iteration.png create mode 100644 recursivite/images/koch_snowflake.png diff --git a/recursivite/images/carresemboites.png b/recursivite/images/carresemboites.png new file mode 100644 index 0000000000000000000000000000000000000000..132cfb29c48e95d6d7966e5289431aeef77adfeb GIT binary patch literal 2543 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 DCz%G7 literal 0 HcmV?d00001 diff --git a/recursivite/images/flocon-iteration.png b/recursivite/images/flocon-iteration.png new file mode 100644 index 0000000000000000000000000000000000000000..8523955cc2459562d35cee0134ef73e541fc3593 GIT binary patch literal 21789 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 literal 0 HcmV?d00001 diff --git a/recursivite/images/koch_snowflake.png b/recursivite/images/koch_snowflake.png new file mode 100644 index 0000000000000000000000000000000000000000..540f5e673b5f7ff98033ef07c937f325d47937f0 GIT binary patch literal 36242 zcmeAS@N?(olHy`uVBq!ia0y~yU}a!nVC?5$V_;xl_N{%%z|b4%>Eakt!T9E~A>#oD z4i<wWn-jYQ{nz%$>wTQS#4rj*Ltv<cz=Nf`e`|3W7(2diyvu9NU$XtX1LL1JcUen9 zuK%<Bke@SYV$bnj4o`)?-IE2H?AEybUhwIMc=o~%`cbdmYBxR#I362)=kD6J!^P#_ z|Gu6%{hU{vmv>9S`!oO6Yz;R)98=V;r(*ql&iZgKFRrL<S*(gm`!}SX7Gq&!efaC^ zYk~a^E`fo8FRrbXKB6yh@zK$4K^X~-z>bcNj(h(fFyGkC*Jij`lTY4`=VPVIlY-qB zf84b^aq?{I4;!Ufmc?pqB5F$NH@h~cpLePe63o55jdykU`fo=Pw<hhd2n+~#P`M}V ztW?a70!Akn7ngsUcV4<3UR&>S?9_W@D>X4E7rWe7S5|sRnu)kxKX>TrGS+Q*cexam z=0Dpo^W*ESM|bR4pnNGPSkdLlWV75`EZr=Nc1IZa$js0;e4!sE(#_hoAb~?rQ1IvS zhlkshpPig};@)q0f0?7shUw>II0S#{EI!<L=)8Xw*MUCu?}wh1ICY#zxBYZNIl{n* zzy98x!;^pCI-dCQ(ozAXPcudL1^GGF*{O9!Pp!ZAWom(qahcANIX5?_J9l(+oUoTr zdNg70@A!L62HC&k6AE`IxICGB<!AiQ&&yYTIzRh~y4=Adox+MPPm1&I?dhz#DE6l? zxN|$hpQEqx3U25KC|%kcySq%$K!L$L?@q&%mseH_yLGR2V!RP~MnhM(bxP!x48f-6 zCIuH4mnXlYw&Zj^naLjVF<i0m@x7xH6rB}Zo&=wpYt8N*#nrWL-pT+5u{f(%gWbGN zF1xnm-L<--_w(mZ3#-Lzwf<>6xw??ou;9Ug+i~0L{#J1aW^Vfuyx;%&y4Y@x>D-5p zHn#CfSIrAv{cF;ZhRRhxw5Q(`;$5vMvN~+-r#b8yoW_p|3l})I^WD4ueSXa+&Li6e z1O+edtNopDCMRs=pWr}kCg;VkA6{D<Eim8FMRMlMjNR3Xwf<_kuI19v)NB-(`0mR3 zc=^3iF3BP9r|3_L(bKH>IML_N$>=|o&GvaZ2WR9jU3EQV*Sf%2yv*!;4FVI@-rm^A zyin*x<kjyBZrHHK`*Vi(+g3&@T`it!<TU5r^_t~xY8*<#5~>XqRa96WRd;lBXqf5o zNv^K@FqL(I*Qq(l8JCuD9#I##`043s!OM$1rq*unjgqbS_{fz*@a3uH^Xt0SsI1=p zVzp=8&SetY3WQraOniO6$v(gPEPC?_p@LIWGzIR166WT#vrU`N7leMP&DH7Mop5_w zu7J`d+trsl&x!NZ<}%($yUw;Ew8_b3*X8x`_G@ak74~u;P;Bk2_<Yt}(Pc^I(W6Hz zV%}^GVlWd{zE|~Hw<BLsNl9t(-KA}{HOY)KcD`F)u;Y$^(xt5z7rQGbKavRjRGXYs zRdRS!>S+a+CDwYgIrqoj-+Sxn{i)^F%658uPA;>`9v)(y!QAxW|B=T3`tPKs)-OKN zxiG2yW=hi!J|!h3DVqv|N9uaPtoLP)+7{?6^PSD6sC3uJ&2`a-Pb;mp7_8^pw-mH9 zJGt!o{HR<1(aU`+uj(;Gn-n~{u`yXd>CzTS<Fte;D+1@;=uz9FdGV^&e>G2*OF_YV z?WarWDgAPHadF97;hqsAwdwnx*L~av*37MU&e$Ql$lK-0w%llwNSpYn)#Y=(q`N&@ zxqM#JonV)e$H#a*L|xr>eB7%VyE^9I+sd_~x3*+5uUw=Xz0DzuRdDa0Pp2nn1x1(N z?pPVcn$W`X_|j7E30hG*i&R@WIy$y!>+8#}{OrFnX}y={j7?mxauhF$Dp?gh;mEP% z4J`TUGnLC>Yt#jahi!L^U9Rk@EMDRKZ)um2(WSyd$KzV!4f*y{``P7d1cF?{vMtnn zW-ur&lCms+C&R?dRPgOhq=)F6+uQjilU5Y{G=JY6(cGjM`sLT_^@kG-96CBWJZ9Vd z`QRKeOKhdn`d2qU=eMY)Ir&P8+*MfgqlIOQ^^b{KUsughlRwiQWvfxz*YWMm&E_;o zJ`uC7BiGhOE0$-xy|wj6*y|Ztx&Qw@UMA<!W%T&j+1V>j{aiFz-ot&%WtNp<O4I6o ze}Dg7MOT+s`AFxIB`Pa|{B4(?`!#ue!KWvl?@I;q%;Tn>$Xd%#6EsIdN9W7GnCt7~ z+iO~#+xaT%YL55GZjf@i7{5lsBxAyND^S{cTd+%c!p?usS6x^g_Nu->GV<n4fmnq_ zJByzy{o7Z!>dfl6b@Li^cQb;@?UlhUBGSUmuiuv+?4Ks8sAeTp)UFi6_ou=&aO-&n z8<V}fMa9MM|9rlA_``2r)f+ZzExWq96kI}{G8w2SFuXmw#LLuQ^Sb|<7Yb_UKc}CY z(^%7*dwZK=2$Riv>4>t}(qN6WEuz9r&CQD2KfYSM{*Yedyz}N!bLPF?)gig|D9hrD z93U6x&af)gy3>4YwbFXGjoV(gm%hH{*x~W{3?KWhnxc@Yl~?_KH%CvLF@<HNu}er) zR9B+yq`gb;82`Prpso6ZxrBY4O<avdaBT46E$0g#`<?sx`pQaSyPADFzwg>3A{{bQ zF}}M)OgD-}(|zi5<)gu?DvkH#q|TdST>Q+(!*bOcd40XFzoeG8M;H`7a`CWS9k#Y< zitx*_<XtYIJN!i3KR-Xuex6lTN$FBYz-;bF>wjU7nKm3;7Ju+vSA)RBWwzgLB%i3t z+@$p}Yt9eH+KmMdojm3$C{4fHbAR3Yce>Z=Hm|deF;jjb?P6)O`eRlMLtVb-!gTM2 zHNC;h{T62KVy@RJpKDdVL2iGd!<XLXS|(=Zg?0R%Gbbv$FN!}JS~KrzLss|RDVBAA zc0Av;I()s;sV}dtayuW1(`HRj<~;o9Xt!eOz1r`wEp2U1r%s+Zb3~+bMM3N?39TH) zc_x`cZ_2Efyb}}@419lY??j8-xmq8xR0Eyk5A7&?tl$!oe0^PPv(%M^MPFV7iheEZ zop*a*t+h|*M~z)Y%fh%0teY>>d^7QQBQtwmIsd)mTA@436+b!0f3J3*yYlP38BJbG z?@TJ}y|6X=`t5&pS$B7tn)&1|i;LElysR&pe7tY(+vlsNPwCKpU$(9!_W!nx6)%@g z&#S)MDXgyGQuplAQtx~BnIj`3D`I3ix_dv{+}l~KF5{>;BYNY6&o<lG+bYi830@z3 zoQX%cJ-vHh)t=1DYA&oT3G=?snzb}!QG#i7!G{Nq=P$~eE#_=K(zUPlch$SvZ*Oj% zn7YC1`pV7hi<Omazi%mjAJ@_@aUobo!Z4}jyDhh%py1tFas4=#h^)M|Q|q-NcmHE- zHs*2)(cU4XprOLj$$!6niTk_tTesZW<TSN>>$Ij;<E*d$gybX`7N2BM{NyZaUFLF{ z&5!5(%oxp86~8YpJJmX;D(_Fjmi2qwT>s9fip_Oht0HsL`sud$@4vcB*F7z@kH7kM z+jSLJNlV=se<n#i5foW)?zQpa_Ll1KAEhFj)gR|=?k%6QWAA#&kZn#IwzpKzpZzSh zH{7~1<juYL(Nm|aig}|YcK)$nlHT^e+mqgDe~&xX!CkDvHn+k~K~OO8uGi{#`LEMs zR$gTaP<?qdH{<?3+m?>3oDUBUp7{BWdsW8g*+=f*=byK^r{m9*S+jn(_s)B}t8Sva zo^H$Gyk>!)AN%IG@4a36SNZIbj_>#D<w12``Sn{{vlCw%1c;Vxop1Z!Eh0<KZ=MaO z;vy;IsI@PC{p8%Q@!v}3X5)z!8XOblgVU>h>upZwa~*i37I<Svp>oR!f8TjFlCDV~ zS2Gy|I@#QAXzl3ec(<-#w=nOvKi}4gG-$m%owp#a$f%_w>&@2dan6sNng1?g*zz>3 z@*Jm-lKu0Nh>xdDkJ`omlbw50>}F)7fReqKl+2@>a@L-A>H`1uikr7}$r>6O3MeTl z?b@x)y-2RsQ?#_)v~N-V<GJPc8U+G-SB4h8<<I^6^3(d0k61IVt&w!;@bJAOb3yOg z^3(REWr<lmH?4P0IU&C`e*Zn=i{VF~7F3+S^!cidrk_dPog2UBt&iEsq^P8{Xt(ka zxrJ?|cfK-hc<5f=aP(o5Kw$6N+uQlSx$U%z{wEq|*Sg^ZM~Aqes`~ZAKPzQxwlUN^ zf5~L?<$|+-(x)5Sa-}z^TuDE@e`makjRuR8%dbP5_jY_)8N2)2itoSpLN8qPOmaVe zcthf0P<~t+wbkizYIn^hhBGrhn7H*yv3^uqG-;C1n%Q@*q;nrgw0)KM>&r_4eWflA zj$=0Rx(w+aCU^MQTROfR%`tQC@Cfgdv1Cei3l2SVHMZ=(aN7zO4#BHj!9FHj`t!f7 z{Ive`(Zd^d#tP^w{rYm*f8ykv;M*y++Zg^_ot0#<MvY^l{O+2cMt$=3?>yt;<c|IP zVcDRXbnwQ;WZU=Ok8}zP<SH-Hi`}K9zQ>r2Uyesn>28O=hs&|9_g6C+S4{f!OmW_8 z*AQ>F9*IV_%k#djWHQ+1&v~UX{gJE7%a>mZ3mx6(%QJ0CNYP{Cm10r+6ujJjzFU9; z!>vxvyMGgeKFra-<mi*3>eeE~Bk)#9$#j+VsR>QTg~bl!bsYNo`nuvQcNcDPy_UsK zI73g|ojjxHR>3CqK;4bI=DhgyF>t=d|6A|w_FUOw(jhLmHew^w{VdtXx+iOD1w4wj zNY1bSXW4S1fBSEK;dZSPf7Ei1w77PQId19hNJ@VE!Qsv63Z+EFU#`Axd3ka!pF2)G zDNxS-9se$pamLPX$2)rZ+5`f7_kO=u-SIN?jWBCMMVi&QdA8gim6Vp>?V7*t%`<V< z1*baAZ!dIAQ)@ZlZ~OgD@e8fA{aOr<RcAyuZ0*Uox2N)i!S=AH^UXgd@@`B$E!L4H zcyWTFv%v2!PN7HcUbgtnb6h%q52NBDDQ_Pyr`xsBC9(fRb!If`#qM(0)8WB;_~msq zG4}fzk54vk`oBs>Gk5jtMeq5gy|4UUA@Wsj^Xtf;rmR2L8Z<K|A8GYWeg5BfDo2m_ zcJ<4uUe{gke|~!Jv~=ow*V;e18<iF9<QDn5q?olOXZ(4?#rojE4f6*@yA)=*y0DeY zY%2f%dY*Vg<n8}li?4!Q6MWw^eD(7$QU6N+{!wv~E%RV?S#s|1>+9?1oB#d&{d?V< z850_UH{X7}jX|eYNxE0c^w<6G&ujbrZ9cNJoH)Pd@3-6c?lYTpv#$3PIploUroZ~z zo6Zo!7u){K*1fnv%E|Wq`ttYpI=DFwdK4-tD<A$n@BDmw{)=)->lCscS2#?qn>tDU z9&hk+zt#*s!Kcr~6;iJyh91aN`gmUNATz%Ws3G_I#!6u>u_>=MG5E-S1h?*XCc7*- zcQW|-)0c%tAN0e@n@<b!DK5HwYeOP4k5B_Ex0u7JEtz-S*799RWxU~frsC_>aK+TF z?ruRb8J>%JO1mmQs~vKV$@*|ST&$u0==tW80(=)mlzzQf+@EkNcX^lj+m!SB1!hfX z1l7eID~=tKDHDmaTDkhu`o}Bx7VL<bprx#|H7V`i37fm34b9f-1-HJ-D!jV4*LumE zjmgIsZEtzKiNQyd`HDcGX8NBW9|hhjElN8(YoY&@&8yz*&h5J6@8qj5bXGyB+(pIc z`d^=5)&*X-qMuKkI+a&(k<@IHOrc9|weI1p2`<OC-Pl#Cy(FsRL>A}a_18pRFZ;9m zOIiAoWlJ1Z^>p+&9+Xhm^O?*MJGEZ;Xz%+D=EA~40i{drw$<O1^mKx!*4&@KS|Itz z@=&~TM_k>{)E(?Sp{=vkk~7239NyQN)v2w-H20j`1=pX~tBzYedGf@eW5um24r`Bh zPc8{&c((i&sBy|67<zI`=H&}3gVp_Y+=SCSw&<POpMIou#tez~d*9#RFTbePMMP4t z_29<)p{n=I(*n+XKH+h`LExfodWnld_H}!cXa=(zKfG_07&&xU<T#t;JwDdk@#d1_ zZ`KD_jW;Y&dHm_=X#rm4Tl;FQT^=VTFD`t$S8ta7e>4B=K0aA12a~+7udWJwincC$ z(;(N@YBI^-?DYE2`#QXv7W4@U|5aFYJ-%Lc=fl|0o#n?pO-+xUnyRhnQgWV0#zKJe z{Mu00*~=c+B{0pa{TA8LCTJ<ccV>nm^P<9IGc-ivY!|;hxqrTF`^mg!xn&!kJ%8?e zLjUY6Q|?#a_h!WGE_=HnG0XU@c*Emg%O6e+k88|`Nk~wz`}ZTc<Nl-jUyGleY0Q{m zWq(^%pr=wwpW&*OYjB3dmx60ar>E&EK5}$9mcT97JwJLW(}&xI#);dl6kJODV|JBr zCVrJtsy@HpG@c>t?H_BWT)z%CLEo81teyP#**70%Ts!~j?VPK-cimu`W0@)=SO2Fl z<LCK+;Jq#u(Pl@t<=$4PYnL(OR=Yoc-Am1@%l+m$g-r?-zuZv2e<4fW?#R#eZRg}C zc5m4d(h>h~fw!n>%HsBj1k+hI+E=a?N9{T9#>)CC#x^#G@tyKR3EL`@eS6B+{*8Kf zdpkd;&?Cv9O_`UMb$$1I(qHxURj=Q<g{!WtE}C`gSHhDM69tr374u4)x!l@4e?^n8 zxMxkFF{qm$<sy={dC`Z@!YBT{`z&FQz~Itc_VyO5`(vBCJPew9YNQec^E%v8)6y0_ zUH0@vMG^m;Jn@!4r!FjXHq3Wfw|q-i(JTe2sk3Hv`HPiaIxE>AZ*!R=tGp>=f)-Ph zX-U<)&Gok<-lcp}R#a46q0g4$t?|suq^(Pq_XtBbOVX7Ufdaf16(1CsR2gO_Ij|eP zPGdN6M}Ly`LJx6f9yVqd<xihJ3Fsc2_y4@Uhf3UJjq}Gp3Nd|szUqgvlIe-VQZfrq z?a6w&v8B?W{mNG{d8MfBd9sJ1r>scwb^mGJbMmG|^*0@t;EwwouUq$6uK&M%%dR4+ zWk)J%zTHe0=<V$5b8BC0U1G|*<K?F97xq*ZcN|+2yIbttx3zn}&op_$xaY^CZh`#{ z+w<-^1x=BxzZ3FEv-z5T=CYId0kt0vvhUdMJZG2tU6-{XKD}EVauY>*JNvtje*ONx zdfFrZ@RH`US#1;it%{%VESV!7SHXDqNYKI^T2nJ_=spyU+g|+K&qMateZ@-Ms4WM6 z=!gG%sq^ak_n*(_w@)d4bHnh2ZPC+HqAu)hA-CM-3J5e^UhePwM=-FeitU%Xe_(3d z*2}g@BB1`c;v%c$t=3lxcth8`)OzW?PHAmjEyqMR(16{uCrh}NPK^>>7IvenZOXK1 zt8`Dj`d1=eUB_4U{vPi|f!UWE{nEcpx8D4L<%(9oNA4xt8s%o)Tjo?ab#~6xJ71!f z+sf>Z310KgKitx6v+fnH=!+9>ZccxEQtqVayU#n@jSQmJ{`+M4q-dwsoR_P+R=9Ak z3}EpUGM6&X<Iz+%F%fw+`%RF0Q&ZE2m&@lrI(__=MbjhwZm+qne}An~=04?b(BIY5 za%Ez>Tonf^E9-=!HEP0XQ)e$*6ILI^yHGT4F`M|;7Z;fyz3#ZevPLC&9jNQ(;cUbw zYsI3tXm{S38HOD-DYLY$lt@-TJRGs7!m!0d_&$fX`|Mb0t*K#xvbUYq3JLcbSiS+Z zgk!}TWc%K_q?DMrD69F+>DY4du-4u5dvC5^T<$O5;lKFoZ1cs%buLRUy_(!AJ8^;l z|HY1nhuar_>C7q3-{o_?>3{Njorc>drs>@=>XbZl=FO45_%n@LAK#c-G1KtRw3(8J z=Dcb9c%S!h)AmDibc{d$J9DNcuIkg0O*xt$J(RWO?yp~^J#XdCS$*q1`jpFmcm2Bg zUaI+{_vNKOp8hyrZT)ad)?U&3T8<yyY(Af4BAM9H{rPN_x3}+6?kDe*qeO$4Ktob5 zrRGK6_EgIcO*rx}Yk&5MragOXK791I|I6YX!!)gub+x0|`N`5VB_%&}=3DLE!mq#Y zhmyvjnolRy3y#mp{(Nt9I{%M5Z@1s?JALAg`uW)>x}@`VFy6bUB{{2N$=qJ!^m7d? zOs0=FSQlo$a&l!kARUyZXllx<BEX^Kx94o{rRM*(8LS5;y{m7#_>6&*B{1#uG+mEZ zGU5SSq<){|yb-H+!S%q_>v7$umTtCO?<hTUdmR6|q$S-9&9{%Py;uAB&qL)IpNd<p zS8!E)I;oy$el$5|t9rtpT`NsDbiWO)WLz&F`;sY~ZQ`LTSFSA3xGVBu-t=qg597a; z@kKFy@Q;^mFEnkuU*GTBEoq$AAkyNxXNCmttyOm!-|zgn@FC-88;i|)8S^*`4R7qP zxA!p6c(DGW(xpXBB@tepGn~vapT%otHiun3tJGh@d%WP1=i5csC%IagO<+53^O?uP zF(RewV#bm=Zj<6pCGtqtTHbLivop_F-0QRN|7nv=-oFF<o_}k7ZZPT4hVFW!qaXjO zT%KY%<;CuL%a<E$9QyVg4_)#(_PbE!2brBelfRy07vYer{Sw%-p=@Kt@(7XHvo;nz z^_t+I&>@kVn|or;-u~7tj<TNnV;ijB?-5oJa1mU6xpU+Ec|2NCg;OQY^Dff(^!dE~ z;VF|(KDx3%jA7@|YcG2CeYk(|V&lW?>1<~=C*Ic+DSEvq;lkrG%Maqww?zdvFDp+; zytv4<qs2QlY|_QoAFNd#t>3owaF$tvl0$g7_%_?H#UAtA)2=rkWfkI)dUk$(e_%?0 z%ZVrt&w`t87jPI<eaX1v%D3<Q1Wqx_pNa`8&vx!IDU4X>(5J(*ENIVm)o6tP@ntO1 z%a-k5w1UAxGgni`P1-|2z-7&z*!Y06X;RH`3_7+y>^%z98d;h&K0avXSNeZ&_qq2; zzu*48;C@qf+nz;CrTKXeYuIY1oUcE4yG&Tr?*E_S8Qh=sXQV&cVR%n6pvf_Bn(0P8 z%^bxS(|gx?c=|E9cFfM(#rgW3v{?#^gPG~g4T;PePCMSZ{W<)uZ$r_OYY%w(58k%Z zl2F-DFnLAi=UH|wqTeSlmzI_;;4mnE7qg|J^^~H}n`5Vqr)x6J=yf}@_{fIh7#GhA zM~^nMFm1hf?N(da^|?B?H06B1NgGstN}1rG5HM%X9UGCHpHo>)LS3%?Ih>J^!NAE9 z=x{!F!Tq`dN5hOCt6XOoBr+{BU46!ORiNmj`P+|Pn=zAbUa?D{g1S0;FMC<Mfq&lr zZADubC0q!OiRtN|zP&}2&2*||;iDs*0W2G%YZpyj_4u>s;)$~-_j;VKe;oF%;8V=6 z+n*eNeD7JXWs6ApWaiC>MViHeCw-C1>vC3!$?3I{ou|(Ktm<<}WkIwa_bQv$213TQ zvrj0zz5dBy_5UBHw@!3qUS8ICrODyIwCn3yc*I^S3B`nF^c6R-Ff}e(6Tg4nS>p(c z;J`ofUtG6Zl)aJgP>^tlii!%@n^?KuRl7J*ZU@tJHi`Drtry?RKeGuDF0GDtjjXiH zXo%chraMV}%XjPZe}3m3xBY&HS%@cV-=9z3PgJBou2<x8Y)`+wc;7xbk;EN)D=zKe zxys!jdNV9vG{EKKj@TcI&*myVJ+baI-)v45iIAG_cgtVAc{4@H+FF`_l5vXSiM5@F ze|&uWbE}AW^R>0n&re^@GAOz_bJfxPzfX3~c_Z`we`Mid*}UJ+ujl6FxjDZGovQQa z<M*mM-BL>?ZkCssFL&tubQOE8Bo;fbJuotoQ;375D{+%`;HAI*I&)TPac%!=7!(xj z$aIjQ@YNN~2(Rvxvsbe3?B|ZWd2<2dlZozfj^}zjYwEAIu3mZW^(FHJi8E>M_Z+Wt zy<INvkiNZ9Pm87c`#aW?DUXhHMil2y%~9;&wFru3YsvC(H1hmX@!{^RjjKfem)VDE z|1I=2y16}H-b3xpE2~|HM1$t(9Qnk|Jn7`^{QbN_8t2UK*D!N2y8G04tUX{pSyV@B zqEFeI8;p}qX0PAdmUU@$*q_JW?~4hy2i)H2srKf}nKrqi&riI3wqNE9l4d&i>gwu= z*((w!>OGpc<g9ynxw%FT3lpRDQ`P(XCa@ZZwk03p(TUw9q9VY<ASo%CVfSrX&PA=2 zo6lNr&vLk6`6lD<Guu$EhM21v@(1F#E%%?_cgX$y<hkizccnf^d|MKzU{UoY!^3aS z?d|!;MSC?jwJMZxJ@Yb}bds6hreV<{rIttE_P#v$P;1`b>1_X^TT&KXep&G1g5m_9 zn6SAy#iIM{&aP#b=AOW_V^v^fd$3zTKmbFXf?D-|S-vxz3y+pbyxdUzJ+I}FL(QKb zg%f;o?#*n~>S3M2(SMtF(n(=|8^(L(lTLoU9^Zfagqrnv>l2NAA0Im!tz5T`?SGx4 zxHePc$&6#Unci$J40|+F^<?-KF5zbJ+7Yd~BPgKkMSX}i!?bt*`6Y7vCO8NrhOLci zy`sI_Noeh{x-zb`G8P#ID=TZmoTE<r)@LcFAIp6Z|0$E<f_l}3Z-3hrpJr<69hqsI z?hxocVbY|Yo0Gi?9`~9zr93FQ_2GH+u~wBR-^}wY*4>kMY|3nRy_%%BT}ea#XiI(I zMri|Uqi9{X2|UaE=5`%luj^10q~yUiy{t6x_hZwAJO7`{Jg_10)1CU_;$p+}B2G1* zfL)~lJ^K?K&q+!5>+k!)bj3fe;vs8~QnJS)(b=9BYt16r46etP%dS)5-ofPCS8?ac zjSlP3cWgGZdS)1>^R1X)^Z)Pn4M(#BU9BSdV=K=@t_Ynk<2kFMpq=BZ@Vg`pC0!ZA z!h~kST@r#FT#ML#Z`C=+8xb<=_J>E^`b|!53IbQIT~n%lXef3nM0RC=&XKj-?{Nun zD0N)SJFFT%k27+MR?VNfJB7z(JGR{3zI2Jl)kpK!AH616>9}>{O2MtSueHueKi!#^ zl9JZ6s4L;*B-I)BCaQ*Jh%TA=@o~R>)31Yz`|Y~Y^K^J3xBS{YS9Zh9(gk&wZr$p7 z_q<-YGuCf6>lOc1tF#K!5+}b(XV}!By*x?nZt@hF%J;i<#P#=n5&C8QeWT9lS8M-q zYf5>^f~Mpg|0aBXc6P@e#hLHRzwJw_`So)7f(-%@I$}?<w`i#9iUkS1Q&#snC%5^q zetmDCfRK<-z>15DdbUJJ9n0Cf`h?Qm^GiAz>-iTl)ck(Cy`!^p;=0vpb5(476*iZw zvEQBd@zK!*3<XmY*0?FhhQH4JA6lrhQ01Qcz3HFBPJY_=>5Xe${EZW-imHoRww$=G zav;U1u_+)dtS!ZN&z5(BMXht5Uw$&}-Sl;x?%yii_F2sJdy*yeBWh*okHjKR`Q`Is z&6AFBTsYd~kkD72koBvJQIz4Pz>y`Jo1B~!1Y|6WSdMk2iJiD2-~ONf)|Hq@{}@)L zol{j(H_zwv-ttJx$hk;Kqv^@Brwf0+n7vAzVXyACi89-2KRxlhk-h5BIpeppP9MCw zSj3dYZ}xdr@%OrUZk3UeE96zIzWi8jJ2$a2%*Ou1s@3b5VjKGHesNs=X?A~?c)sSL z+V6MU|DEZRwmx$<J49aR*;0$I3+e*G!`mMhOD`#{-@lr<Y_r(kT*<$0rUoWHJ^A*& z-gM@_*``|`>TloX{o1awQe@L+BgaI=8=F$O-M$DNzwz*@%xio9b>&Y*!)Ns>E>=1u z%H1Es>0xV8`)kYnk5|Lvdr$6-@=Kq{ezLRE;=YWx*_s{KvxAIWntaWkotxWzPf6?R z0kP>9j-Q-v&wnnQ^9QKSvp7Mz)avN`^^5wScW*jyC;ggYIMcr`m;GPN6nEurY^ZN2 ztCUL$%sa67s;O*vOd+d>8B?QzrK+f__5T_Vjs}^X+IB9Xp`soN9Sm(-M0$SzTfE`u zf?K-T2lWn#FmB7c+x4VV_LcbmKhZgR*T!~Do;I&9aQXN4xsO%j=QN&t$l%I)@T~d$ zo~z$~%&yoHTCEqc(6sE0#GA@pW;qwTWLq{*?s;&{#EO5XrR9&Zvk~?iyKgtXWU`Pg z`}6QwSe&s+)7+`<eKMR@{Kxxbor7myKEJo}ar5B|7cVw)hdz!Co4>|m-uL)<+<B@? zKNq~;`#tGeu4>)uby;2$GnJGc-2eM-&u6~?ejUSqi_YbIQn1zK-JAC7*VY%C7aR#q z@#1hSpUB+X+q*zcqSx)i;h*!4$&2niq9DeyQ*}pp>Z1GScd~MeE$HNNcKh?V_DjH= z`_%`Ma--J&_3;IDB0ff^Up?|G_V9f5y=UEY(~QF(YbyPEB`oA%n~{~pbY5(U+>E40 z8`d1(Wy$E{!o|&<dS;ynhe+M8xogg*8|ry&WZL$_WrL|TCyU~_1FwH>G~aXl;Capc zeSvkc4~qYsZv6bIIzmD^C~=JxXj)NofBUEFuBz-p0V?;t&zdFmC+&CDQ5Wso8@S%w z-yeT*@AKtHZIUm%4zUhd^zy^&6Z#qrm*R^*KRfIEt2A6=TKdV){fVGi{rK<9zf1og zWS3VsoczLA`hEYu1-yF8=kCvAT4!DGfWgaH_nz5>4UhM#o?WqK4acr_?XWcmco$#( zwdQtpSi_U7`3bK<BQJOEPCa~`Z{-U8!iLq0m}=h^s5^Lh3Dw;x@RV0H(?8lFtnSAW z^ZhWt{ed*Yhv(y@mwWWZSiagOc|dPV<G#9^Ka`JVCM>+3e>XliyZx*Z=P}3q@e}wz znx5z1_eqmc=SSghllj>h85|bU{n2SVrDm^>+?F%*$%1Up3!gj~UdFgqTFz6Lo^&Xb z>*z+t-Y>T%tNBh^btA@4{YUYX)q7>kq`CcTkLXQT<FlFEcYW*j?T?L&7Ax4tTRl4; z+<mX%=smHgibDO9xsSTKUaCHz_wpHwZrfzOZZTb^xvk$P_cL>D)H(FgYTc%7M~``L z{(j@m$!v*BUT#M}&GAT+3s$(>zk2g#O*ubbnH|3-pWit7=Mn}tWt|sQ?(++eCTV6? zmOVXio?V1vlF;PB<WqB2a5l(<tJ$_rnj|#AhlS}Mo7Cc~ha+wtI{0>j%%8#y#eX*L zDc+Y{xn8u2?{AEGjgHs%zrQC4Gjx~zSKTkZaDTnvt-~kk|Cu@q3wML2r%a9%?u^+m zZTf-0=)b=u_<rB~AY1&QaDDMNyXS4c&n=C!a}2z=>gki)8`#e)F1cgbHNUbYzW#*k zv$fZMznv~r{azwcxZ+;2#M}GprnMzlwoKV=Xf6Ck$-{ZhRPFFX3wm9XXI{4VI{&xY z>O{_->3O=(vYXcZuKFtB>bg4fv2pXg{?%9i6-8Gsc;&c`<MC^zV=K7C|9y<f{yd>8 z-fZilop<v0|9RB;nu}@O<7@ZS_NjU3%nMwWF>m)g8Nn}cGQZ<jaqoEd)LNS<?tZ{4 z7oQ$B9l1*a#}f<`CO?Y&^O#F(-sj`;-hs})7Klc%?%&_`KUFYS>t^liD3Nums^{I= zcRkIq{dTbR$tTw3mXS>Bs;9)<%igm{Y`a?Z`O3Lj?J*zzRorjZOqu>|{f6UpdR$6f zVUy2of5%v~>BXzxHX3TW(==n&p3vQQ@AqC8Ih%XQ_S%*Ak`F|-|NAdq=8*PrQopQ- zcIONg0T-#dU$I$IN0nl(C<n)D+CEgA$-(kw&9wdhv_re&lw4BI-s|7C&1^!$uHCyI zN?1BwZJN#@sH5>}vQS~3-vk9?W9Iu6x6?zVlw9`wDlk>^o5LY=;oMy7Ku4=k?l>iv z4H-H8z3jX!OpSr*$DV9S6>nvzD1OBhp=$<8A7#atmx*umbh+X>>;A@a`3r$pEB_zg zuV_5^<zCg9EnmD|>}?aPVqdE48{_z9&8{#jCU0&9Gl3ipU#m&S*EMWt;$_tIe}CTW zuYIZQeEV`gKfehq#wS^x-TS%cT;=?uGDTh0x%2-#`zMjz({=xEyvoi$0=u5oI>?so zS#<Mb`^H7-ax2R|TgqCO@vJSH^CNKaVgBS(p8o4Ev#fNQrq-!({lkyLH<CUce!7QK zn&aY)jmZ}e+qz2LPg=IEPjTw@g@UebmG_-~{kc0!re1>EC%%JSzD6LZbxQebjpd7f z#ab-g`LNyaX^`ON!+Z;~zr49A{QG(Ng(p7_-&nl;dDuQ>AIHOOyoYm>jyru!-pkf5 zf9#s4!Jis&FQIw$|0+F_6@&5|Hoe|EW9Bx)Wo!p#W=bcR7BH@t_bOtaGC63LRGozO zo!{&?V)Hm+-FKF*t$3JkV*bxSOv>8m4^#ER*FR#Ht@0M#B9wgUs7l>@_Mp~V+w=LC zo;l-lMnIfhdD+fe-I_JYg}ck%F8I^nEyX?Y(}G?un{_>ThSweL@BLbJUi6~zc^l^c zPt+}?41H7In+dJo|Iex=E2YTl!uQ$dEu;+3UU~eu*@JVb(+aoZ=jV<F3x5KsG+nS( z{`a@H%>lhKo^ETdURb-M$5z!YB`w84O8Vlxz10`5T#1pqon%%Y<n|-0q*Gwx?dR?f z-_<`ZIARibt~*}QT%X@*>#ZGyi;JSV4hvp(6R%@WpFJ($Ub%Y6>+1U1={GH<49|XP zpUa$R_DUgS^`b>eHhOV<?mou6;?i<eFBCnJl|Sv+Gh@=P+cV@Cj;rgtg@uW!IJs1R zd(*fzSMs>>vVU52PC;&h`~H55KEWH96~$p|XLaIZ$I5-%qUSrm<h5sWVP*Ykv3KE= z!-AJXq@S4_pJAA+aDAbyb(w-ck4*23XZQZ6`(JtZ=H})J$DB;+|J7{S$RFmmZHE5& zOPtZ$avEJaRxGJ3PRX}9$=JDa*O&CN#3LPo6XIP!tLWzBMin?Dty=fy&U1s`wG*N) zM(6KsO`O{-(=+4Qua8+T>x}pP|5xoHG4pI1i%a{27aLueKsN63j(Pa}wp!<lD=URt zG;ZmzS*NvJTb;x(XVxw$vu;@-#YM%>&m9yv<FI*g{lf`ILLxst{NHv`^rV1;ZPgct z-MO<ZR1B|9`+uS~;9kD^R;B5e`}Wtbm1kF8cG52TD(~8;tt~AVSFhjKWtQ|L;E2iH zU#lyHzX~kMkhUmL_*Ipr`FK{=t2cXijnmFFxO8OP*-_|G`+>F3(`V|>W42AI-qReE zoZQyCTe==K>|D9-UVIHl`)$^hqIb*h*H%oLUT@HQefw7V-{0T2w@lpWsdTMSB}po8 z;g5%fyA@q7emN>0e_*Nqu`^qGS4lCXFUxIkeST=FcDRC|lF_YL4XYpjEi?>6LpQvR zf5^?E@b%Db$Io)}PCIt4T<5Sq4m8)kB<#r+se-~{`9EK;?YsW<u^gYfPwe00x0yeh zo7$XCH=Cj)@xi&ptyijbW76?Wr~3a-i}(Gx^%7T|N<{0%bk%^+uj#uyCT*zvoW>Ej z<w?r(2iqQ8KDA=muC^cYPPezcRS;B)+MLE~qx}BqiY2RNEDc@H_UFs|96$A{`9C`r zPs&P)?SJ#9wfp>wdDZV6KR-Krc<PiX8lis+<KpDxB&MDX^bFmo=b9%XF0OsPsQ3J~ zPy4((i*=*6aQxrN(dx7#IOc_3+LPzc+xMqkl->~4Br`QcxH_ihLzT_L{l}UQDx`Hw z%N}hxbm-8B>sICOcoe(Z!s9AgBbQw}HDlSWNt25L0s|R41p*CJMOpLzGq<aT9@%7G zBlk}{I#b}EvA)F)`F7Q-M{-zqT7YH_?wxpC_V9h2?&A$hx^BelzHZWs-Q}?2oKBlc zOHi=lRI|K09eGL5HY}MnBV6d?S@Zi2S~E+lmMmTB*s<trUa5w7)`}{IIa4;toII&H zfkUwN%SHDMTXdf8IFhu#YySa(9H~}m22EpQ;k#Pj3SyEB<5xeg>ps}b?kv@EukyL< zm#l{%rTgT+@i?uz&eO?Z`}4`<9}k-O6|UY8D%E(tVM)^sp^wTBzB{j)X`U}<_xDRM zN8pzD8Fx-vx=CIPi7$?pUlX@iN=OmBAffoHyUdITpXo*ai)WZ*3N1P4Vd<Nyf69G7 zx6F))H(}rIa?Y^H<8W;)s`_>KX{@Eu#u<4xza*WRXDfY4;mZE{dLJ?MuvHIY8+x|? zSvN%?s#Eak)29N9j-_1Qy;|>IK=ozk*9pefieDY3Jn?niy!ij|g`G!JT-obdZoX^` zxWXfAC9-y2^wEW#M{{nLpFeQf-=25jiX9~{g^ZfT{%oigXjc=P{P*;?e;aPEnZUMq znr^gHrF()`k<qh`+0Me<H+OYQvi|&;adVOCt!=s7idi~$cb6Yexc~Q5#j=@IyOt*% zYT=x~A$Yg+daTF3YSH6rVv~2a|63(kr{$s6A8na>bYthyn7w{``PbiPU$`R3FVNn6 zJ1a<4@2go&pvfVpz^56D4qNg0>aay?HJ<AKCuF+m@$vq{=^3kf(q?&Cp3S&kS@`cy zrAJH08b9-{Z~tdD3wN*lwEe&ArP*e!0arvtL>4?gw^n9O#F@|^U)CE|eoEnRy}B{^ zc)*;*=QoZdt+RhC#j^b{%fc1fIvNKqKYIM&NYXmPr1qljy#l7&rc4Rx@s3;4lQt{c z<w2l`sHmfo%aT7=uHLM+aaR`$p2=<fV6wkmV?c<kZIwvhv!gPzBYeWj-W98S{97M5 zeeT>=ee-Wm9vn&9B>q0X^W)>=&Kg<Y-rjCc@_cmTNYbWHt1U~}I0BP{^iFAPC<#1f zbaq-^PFw8mGDjtsDHCUQ?#UImwAnaA<Ma0Si=(&a33TmpP-wX1&sUt2WEj1B?fHeZ z?cXM>Sg<yFds0qjmJh!}k2ym+%b7na!6Gxxrm@U^F>%&{<D2(zsI(;)AL*UKVjIJ0 zr7_=UVutc2iM2DtqE^3TEbw~ewL?aaBd}%Pk4M}yilP@s9`%=5aAWP;7x4?qe<}vL zpPsJo{_Dv`Lwg3pXE|48-tYf!*CKW1@utV|+xa_QGInhA4=ZyG3{-59O8NWi>kCD( zt33`q=8Wt@B|ko$)>pjfVv>4Fq@>(8#LejJ^;>oV;MElxPPM<MDJH*E<O_H+O>E9r zowT#FSUasYRor<|{jK6mzkQG9@{nLBMGn&wpbolfaCe9ygW<L9Q~9mS-?aqH)to;K zG+m;2HA1LVBmCfx!#9LJ#+OTW6e)iIuRQ)*`tp*h#TUD$i+XlQFr>F!J3Q-2gTU41 zgR%}EcmF@G*mZXj*Z04IYO`g9N|(f}3D}g>n8l`W?2`K3KG5pT6>)m;`+64KUJ|ou zLD$Fjjr;4j%G>0rx4c@iXc1E;XH`T=mB-S9&Fsm$EJBSL46nKQfYyyYS@rk#cV%y$ z4KH~G7X8Y)yo}e4O)mJ@#vLo?f6oKuGbfRS?sAnZ|5kpsblVs`Y4P)jJ)cf#PgwDo z|IixAmoLg6PRTkZe{9O-RoCM82(-w*_P_Lc!pt1kuuZ<2e_j_jYV)0WzhV_*$HsIu z(U|W#>7mQKeU7BhuVs5!{qI5EqIPq~_SQ$obqWt&cais#^uM+`<4<DFRF;SS7Y<He z(XQ{<o+@-8q_Ay%diEl|Q=JZqt5z$!_bH_4bglmA?`iq=g=tH{von$$fh}|L%(=e* zIqoZ4Cvp02k(lMqofB3p7SoMhblH0S>O6*|H8(dcH_W`G!f{p0QsThW@LyR~B1t*- zjb#I(qPPUBUM`(}A<$=*e4E65{uMk;P9mK1kGFejo_?Ii5VA}6hsh?R%?d7pRj=1> zPsp}^@T}LqC-e_Xa2RJi(;W^_=~}U?EaW-EksGbS2JJx$YvzQmaBJt6ciWyOcb3n- z=kJDUfuKEU9HEA$o=2=Wv&#M?`dHq51*(5bw`N>SnsTE`J2~Rcw9KsDwb9$1I+UhN zpWZ%4eE%-Z$Nb5@;%^TxaBNlxbl2-=x9yh?eamnp;<)Vk1(lzlO^|-{I?pcRUg+e< z{K?vBVvi59%eMsFxUw?1aQBUkUCauXKfJVm`cqGU88k?(xQcu7y`Gl~KkblXc<&L* z+I^BsvFpOk&FK@TOj|$aOxBf$?HeDJ{})#)XAmk~a))ES<!ipH{0==kt+yO~cXzj9 z$YSmAbqY_6wbhrJnEo;NmY>hta6Gj=Ky?0jaXZP>tq}(9cV<b~OT1Q0+Yzf*VJin( z#8SsOv1rng>FK+SnvT}W&RJ}beNBfWu*I!ku6N7vxa=z*+YRrx9RKj+aliATzDY5D zQ)<hdzCPwpw(So;@UqBpMOg4MpM&}7rkAh$IDBJ9o+hZt(USG#f@HwDjUU@TF5Z98 zfx#&x{M1o#zuJb!@mskab*k7~R><|}>38w}FJH`K-y{0&pSi^yIS$iP{D-3Qqn6HO z?AW*_-uHj2yx50r@Bd5)H9pLry#KzTfM=Tv$5pRN+e6BauAcdE_=dtpr=Kj{0#`%p z>Kcm}-L?w$@P4%Kcz1WVbBEHFl9xdh`Sm*jkI5fflY4ptXbnKf#qIa&xTEX(mK~En zcIsR$-{j-G3#0Bc|G3DNyO({!M%QwYPm_JN{&=ytf5Nl{*Fip#;yje*(G(E-@!KVx z;MY=a24Wtk4uLX=Vpo8Ir6jBMf6G;e`IB!-+qpX?DyqEF*uQ|`u2xw#C`n&EHdVr| z#^Q<8mv_70FLEzl|LmCjvAP?^5{}zBokDron0+{X6Q-%n(62ko>(JvX<o@I5HFcFc zKZFdFwqI^uxzN;<Cn3k_RM3*;%bh!vN}ik$jEMTuaqq|Bh@<fd9%m1JzhBSasa5s3 z*IYm*WZ7B9j*Z;Q6HcFQD>@arqU-+iqf2#bO)VJ=%St@czr468>y#*Mmg8V<m|e$` zw1?AT#)9Lm+~Nu@ra!-~ukZcVCulBlFk<3X_G@dS*%enEckkYGtyXI4$M%g^;`0wK z@tmv>=+3uYdT;&r#x!<?W4re4=02qvzHr0xc~xA+?Wvhn3`uK(7fQ?5|1oSi)Z;6( z(XVNiY`sLZLfwwLc^rYcYuMD&mgMd@$Z%}R<%waFWt~J8YKO0Lc<&kJmuH&sBXP}- z3-t%zd~#aU_w3x<?m5-(o$hZwzIf`Vdt2G~&3eAtRx7PKzjS>$|DJERvIP{U-|eWc z+id@DL-B*stG_m$y4$>}&R^yJ@rc;ph36kg+a=q-TlrRbzp4G~^!OL8%U)&*ER-}( zdr-D9Id>~#z|XBgZx<(AeZTV8zOPsJ9h=><STH*Lr;Y3Dn>qr_pyGn#;`y&HFSGyM zTl~tPX=C0x&KVYkN-Y{rr#ja@+4+=Ls$SxA-#&TJx_B4arAwA52ynzi8$|q;zy2`W zQ&0TVx%q3pe>gm&NXhhM%BsVk#cy6ODk@Sae7A1*yIt?jPYyDWXgL1(;33V{>-@%3 zm#@tFZMXb#r!N22ybC`L-&k@l^TW@Yspms?ta^Ut_18!LCf+oyyMLgJ@yFkPug*U) zJ^x~M{yxsm;*%#&KC~Av+b#ROQ=0h**ZSkl2?`9}i`M=65p*^AQR~?(*B{?!oUMqd z$xv5&dcO2WcAwfVw%&#wTWv;(uWcVTzbvsRSiZv`>dnL8np4+(tZc7c`H*u?-2Tke z|9uHtBR*`XxZtf5TK``|Pp>V+eMwBt!;9^&EE+b>%#=>NUR?m%H5Aw~DThx)_RmCT zvDM+M*8eyUP6_GAy1>kDvtW+alL<#(&D~$lpL2hoY|-V3w=<91@4fhcR^!vVN9SH# z8*P4qw<0#|&&GM`jFQ2Aua~wunb#e&$&2}Svs&AK&C9-Ls;U#Llvn%l&%e&Sa!bZV zr74|Xca^WK6fUtSe<$-q>uJ5M@0aU;>P@P@<=jy#<BME#Pt;oov|?ptir<xknOhyT z*2eA@i_NMiPwje9@aBf0hibHN>{H`d?nMC_yvdWr3+{9;5Nvc0I8=Wi$TsKJ7S45y zmo3sZR;6a%;}sPZ6$n+FeYx{q{D-|wI-jiG*2?~5{VA|ZbzAQ3wuf^kumAZXf75Z6 zpRDKYe(R+1pL{ao=&R7(HtK$JEEsn-{{8)ZaXR;VQ}y7@O=6(g*a;mUuF6+`f7cq4 z?0F@=cvk+x9~0+JWnGzeXGft$<tLRTQt3^6uPswHR&9x4GEh~0`279y(0`IDS5^ML zX?dmeQQ1<WC8YTI-10{s9v+@BOCa~o4#A((&dGdz6}W06!zufkRt=}jm%bCf-%90+ z(ph8_Ufb~P?QQ3f_Iq`|bDxTcv+Ig|?A<$U4bMOJzq->VPwu@xb$XloG}m&GN8$T_ zi7w%5VywT)xpvpF8~2u5FIcmNCx|`w_LhU~r+2sQf4{RjD&fzMj}zDyZcIL&w8&z^ zyY%-#r$w1TE2~$!-rrYSxP8a#+Kn8KcmLnjEqQvn{_);>v6eA8*Z0bAn5h!V*IMe3 zVr*@oyJcE)ob9YRyM*fM8Jt8EpDy3^>=0kL``r1jO#T>z)qMG%@L`!#NcX2tpD$M4 zpIs_fFOj`5P4iffB=f@PSF6|WbK1;f{qJY*zk(Y&6Rd)cHTku^v*Ne!`CIv2f#r^x zOVPoY%MGmm|6OCaq3h<+99UIl<+O0Zr@8|lc3-LLVm+8(@Mo)-Zj?h-!NWtWOO`He zt?xgZbg<^*^~xWKIdd$geE-^NA2e_3)K+QR*{9wY?u^;7{L|g3b^GoAY~8cR=7hdt zP+il_tETH1l_jz>U-uvF7I*GYy0W`GKSjqrYWc_ZjZbc78x%kD>ByQ`)OC8++?8`) z{W|)vedE6Sa?M8{HwO4f7^QGTJ+=7o>9oGH(uGZ_-ZGI_R{A~WPd>$Y88j>=)Od2T z`eK#Cd{2{~3z;t2^ZM?@2^~)y7=#)hAMaOI`DMjx-?Mh2Le8-h$E(}VG4x;NRP1Vr zeIKZ|CF20Yv9y+JhbN`93tV-cWZm$n{Qvj1!~DsvzyGmxA7%}-4e~4A8nOG0_;LAT zM(^hY{R~v-65Y9T=LC-04+q&_gnpf8b}X;v*ZEXahgS<TFE5+0VzKqR9n7cV4+|+i zotwk`s(@?4#+8qbv~UV52v)sV*uEkCyqrg@VCkzXoQMB>US!a;(Qcl#Va<;MjzHTy zc3z+OlEWX{4a5IigEr4{WH#M=8{}7h)#{JIwa+fBO(#zZTvdL$IP!kZtI*|)9UH@+ zZ*45P6%x{Yui`Q96px^}p!#|JGoLHYQo<MG|6Yw(wA3{BVwMQ@3*7ZZGvJ<}vWws* z%exwPez!}t%OCp`zrShCn;eeJW0z7-PcW=aTKkwkdEK|Q+VN)V%l2gCC#?^ddtCll z-5q0zN=0eE`F6a4qFz2eJoPCzR68RS8?E>qdd`ZP&*ALcpk~r|`)!+xbl?H`11(cj z17!~0c=2HJiL)nL1zcZjy&l)R_xB2^WAex9nl#t*`pvasRrLM%>+dPe^{?CHk6G>8 z%eppdYtsrj%iOd-ufP41*%sk4_g+9()1R7-RTt)#-|O6%^nAh5S96PsO78Egosgjv zwJk@oYmKc`B1^L5GO>WZTJFG>DZ+6(XYb#e_9sy%`DP+$P}FJG=KBA2JFK_uPWzF# z=FK0^8Izhp{b`r08Na@~j4<3hqgiZq_~Kp59<1GduW1FB<*XMQ<~fV4c0aAk(0!Aq z(@bge!LFAJKe<U9xFNf8^@E}viY|gdc6NDZbU5e#2x^l*Hsy38kDh&tiT6&~Er-9I z4Smd?-0J^V>QwK%MO7jNGe5k~=RNSgoM(?7U(A|Y?seHUZvV=nC2jQBT}(3`9B7=O zs<&q90;3li&Iv!Rd%a%OCU<PrJnp60`>uKVMC`3HRhiYXo&Vc6pZp_&J*5RbEk)Y> z0<IZPPE7QuuVO#0FLuuUY39GZE|2x%_wfXK75%s(eq8_B^V9wbg;t8I+z+?$IvWT$ zcoluvbw^LV%=Y5E$Ku@IAFPmJ`Lj=I{!|BrhNa%qoiv`s?kHe9m>_VnkztLRuvnM; z+oLTD?#us+GH^UUxl!ki7U!WAm)qxaZ@=96^3f5M!UK<sTK7+zH;=DV?9u%hbACA} z^C#rE-Kx4VX^z06DuZ1$8g`%TWez;rbLj4Ww)WG^if3n=<w|uuvp>ezqiB+50orA) zc=oep?~liN^H_Sm|9f}Uh^3j4BlFb8<l_&#JY2%U#FkuoadEL>=p2~?5>Z`((c5ww zLpG^NCVF}`xkv|gi|HC#{W#()aqx!2{g^M>uh|v5E`Y|A@3-79VCnvx6Wf;f``cTA zF7B}H+_n3DO;L`Jx&C-@^NAB@S^{D!9yGFlxN@YXFQG8*yjYyZ`)1KgbMo%)dU&K$ zc!JmS^Yh!Ig)AG6R%WYkygq;L^Y)C3N^2rEG70&*u=C5g1P6bfZPu`{_k*-iMX~zT z?(6aaehq~j-It5ven}lYdR9Ti95lwhq*wl|qE27&whXqXS2_ajeAqSj$M5T>ELx6c z&R_GUZPFwmj-##XVs|I??Fc+4sIyLce^j_(^2tf66OOq&DXTQFEIsNgbKu5}C#@db zOC39umc;ze%e_23Il?CFqi~Necj3D`mK;Z?E|Zje@$sW$Ut(dz?%eYqx4pO6QvBSH z=e5Wa39;qk^-F%9`SI`fd&MP{ry2#?4>MlBI;q4;N6h~C28%a-g$L8NwajOpf1W*4 z$EDxymqyf0_B&02Jx`;p9`AfUuUWu#MWiR^Ci6KD6vWb(+J806+x^zeBj%BHv&`9U z%Z{Uwr&tZ#*0VbmuH3OhBHe6Skx2LEYj<OtIEB?5G~R`TgebW4$Q*gJrc|gUc6s|9 z9v8Q{qQ*{7w<j<pUv|n)FpE-f`T9eg#ryO;nWK;1e3^f5@*!cy!ZS~c7Jiw0SmxNH z6=t(fU)))o&T(|9`MnBe=3BokyN*U?+6lKjns)#BVJ*%giSEVk#LRzvea)Vk<C2=1 z`r`H6Qf_yHYd0&U)6UFbRP1{3xMAjr+NUz^8!fbxU0JKXzG7XtV{`fYxQbmR4>ZK` zV=Y*Niv*_Y#Wn@pIhk=wMBM!QLk+R?z5hI-c_a)NoC?#A_sM2xy7eU$Ui-Cr=j;~> zy`3+foSa<nIynC$!?CnwxecN3o3036e0FyBLyf(?%@K3b^fLM%AMbb8Soede?u*q= zIrfbfYc9{beqmLpHpkJazO&5|-Tp6=Ir3<O{Q9sNd52$KUaq*LGX4C#){7Y}M<=i( zI|=JdXK>$W@rLo^fi;)g=QB_5zU`pA;7pItQzfpx0>cXi|7}WMTwn}hcQKpJ?)v-x z8ABbv)Af(@Crq5lxo`()+i1%9nI{c(`aYMv?fCoqyR$~#j=5ofUVmehIr3<Wv9#C1 zISis*+@J}flENh0_6<AiId4SuRQ&t-T=AmImeSW@PiEXMuIXMF)Kh6u^+n?eTSwaY zdA$$r?tdyE_IxMXxdUyy(h4HtXX5yO&9gnIsM8nhSO2Tok>hBqX7I8FHD$$oiG}w% z&Yc9U!)P&CzGMlDd!I~Wh*kYRn>&+E2<n`R)^?0Io91Eq{a&^H6z}MziXC&x%$K!Y zE2!vRsJ2YUxyXREh}p&So`{J2U;Dm<!g)nZSKbsjdwg!=m+uRc4l80wJ~5}1T}(fY zN6|O<-uD^r%pafM&0fgT{rO+&Z-yPQd>oml8kyNAXjy4Yuk}!U`uAM%k+Xt53s=wB zm~@oOL-lD{!t1LoEB3wH{obymsPEwmvF52aekD9THFbiNz|?8el!~8L%N&T<@nq-I z9gq906_!NC*Z(zLQ+e}Yw}M3jsAbZA^6<lWZnr)e&dn!T+RyUro^(~_-_}V-r?h;Z zUiy&X*dg7SQ7p4n|E!6b{OQaLAGfK0%9&$#7O|#nmJD0Wxy(g&-c$y!qfDzWO8kpz zdtq6(u^?MTqE0;JN90B6g8m(a(|078sT@o)Ik=qXxXZ*1FJw*~6_&Y^v_W!V(F|U* z6XykL|9m{YVM>YfRfZ#=ZY{@>&t(C;r_Y^po9>(+&g;;#HDWi9a~n_N3c1R;X@BaD zANb(8zhL*F*z!;P8)wa%=so+l!h`QlA<b%jb2?5wa;V(8arvH2uipPlUbAOa_Wo;L zJr$38%@s;rudGZ~=lOK^_(t8f*DvRF2`aletWxAsTdq+5`+lr3gW<Hj|5&27WH4S- z*|*x<V8QvV%mT^ceg`Mb?bP4@M`%&jmlMkU4>oSBl-Uun_tn))-CbQ=9jhiND^5(7 zUmbp0l_7YNU{JWr`@P@g{<Qh@<rv;~yYba-j&(U-k?6%)rr8hVio$!D1(K&tv(=7Q z@r_C<wz~NHi~Dt6hn`Z)EzFUTkpfqhx1VkVPdn*~1<LEa?*eV;326n5#7I7RG~?*2 zSa!pQPp8MXU16PgU;e<4DXLl$2X3r*@K{4jt0~4cWs7xS$%p?}E&dsVZFn8OV2*(3 zr5<*<3WlBhXIGXoB%QgxTx9*;Z&EH-U##7J?@+_GMsVYKL$$!AnzWdGHIj?8_S`w1 zwe?Wy#zTuPCwKmMZS%{(%y~|Mgl|FAnh(GKPKbBfQuQ@UBx={n43^}~V@YprY-DyS z%)PY4)1xxsGB3Nru|3K1$38tht+<3!Z9aSIbG!AWppi7$S0%d@SGoWE`SV9k=yt1K z`<}JCce^|lZ@9So{l4xT!z-CT5_8tFB$}%@b|@tpTN@~EiF0L^m_2EiP~LQQr^462 z-|r9Cs|?Vq-tq9q;fRk9|2JKH*|<XP>$|(sx!d#p9A)g-xTo^_qlN8qO#x>(*qT?I zSB+nKcCXC#h`D;qg%MvSRDG!0J7LA*h0g8QULSBPDl&R@{h^3La(RdFDOMw)g_^<3 z9xR<6*A(z4@Zb4xy=ejWIgZ`3YJ0HpxLk8UOxE39rkl*?t+~u_B;tkn`b5z7o~w(J zkM|wCxo8Qv`K}qb`9Ax?85g!@hkwa_-2cO*EH96*Z~e<SP}{cm`<4SwPEJ-7l(4BV z__gIz;=MhU6ILv|yxd<|!D@#rp9c${yj{;7t9cA5Id`wVsbW@PI;G9Dr?bjJSB&GR z_|yM2?e|v4=qx<M*rU1JY%QC5%cH(e`s~-XrIyM!NUZ+BJ?YXX@N85_r&DI;i+}(2 zfts^hZ~v0{_2ng~=QP>h&hfdDdENeGg%~sCC4HbaHcv+Q_i_fKZ-?hOdVG%tb>=-} zHO$-0Pj7hKZ#^~LnDbJ?lM<_k8*e3Cmj1Bhhe1qE!ED`v$XpE_9hcnyzIoek3;wg4 z%jm6ops@Su&Y6#zE~m8J&T>`|Xt;9dX;JHZ!|F+b{T<@lyJgp%dhhM+-8|vj*38Rd zhnf3VRInuf-BZ4}{{KILF70~`0<6~mTNjIUub3l#&Y^PtlnJjuUGbI4ZG~5oCYC-F zk<pz6ZqP)xIjz*(@gZpb2Zzm>dE9r(Zs$(0DzJY0qy2g%w?X%s{_rx_+uL##OD9a9 z-fk@Ib@=}FzZ<u`xV>F}iDSmOIhGQtWoy=(UC`Li*ZHrlUO(*LJ_Fx5Q|}*-NYOm+ zYi*c#dYbNps6Wrl_dD8ejQO6E*3HPyC(|%t+uQs5<rR|`zG64nCK%@|1)9>}INEx& zTl}#3zl&A84m~%m_z!-2ds}gdR$4oA?Y@6K&0^g<-o1b8+F^fl|5EX{XJ6dkk~QaN z;rWCV7F~<_e>P9prhGTIGql?u$1ISXy0+G$=n2OYwrzQLyDr8Culu=g5>IuDy}^Qy zkB>hF<@S(dzblEcTPLRO`!QkmWagD_mUCkR0~uEyn>Zn2J>!IpPlXz8rZj~ZSAWY{ z6SGq&s8=zteXG!#U;A1gxqEqWEtv%>>MR@emgwd!m!2Fn@9F`DV|o5@4L!>w1-iJ| zmWv;C|F=92)ZVZD&#?SBw_@nsZ?Rv_D1Vh}kO=ncUl+e$&dGf4>AZvWdu$)fn)vj` zt9KfjnvHiH4&)x2U(UPg`j5jm?&oMX-+$hCr{QwqQTu;yT3+6KUae@X%p9a%^6rl1 zj#)1rY=}~v3L4m(n6y7{!OA+O4?jLW_VB!L`1wZ%tzKE{FiXaW_lzAI%aU4*-gv7< zJ1ON{&Eu$h)TthzHtqF3{b(N0#<eG_*6;hpHIGI1%_(EwTOWTs?q9rg?ff=3gK4>W z?c(t@f=;u{GA<}AvE4Y=Su8uC@n!di7mNFy7WKvGiObl@%hai=)~8OaUHeOZ_GRZ& z?v}4@{~26+{@Q=yld`L?f3AL;UDhuxDZ};T-|zSBchj5?yxyU={`9JtQvr`1jCVM1 zIQBm9lZEb$?>_8&k!u`nO|01Mw(mWb?(_54qm{0vb@!+2%luHC_0Mkg)vmqO-<=-K zIsC9;_pRMmj&;cDZDy5Qt!p!H%5{TtXT;+xdIIbEL-P+XeOx>};=#6v!|~pp7e0QG z&kk6v!VxVTd$s!CJ7NDH(-M}Sl=(Mnb7zr}X~o^|x}x@LtZJX`)}DOm{W=*fv!^q| zj=eoq9zJQ+Oy01kOq{&D2{~D>vLbZNI5MwYkFW1t5+FA#^v@B&ZqpT@c>_1lya8xE zMvBku6+az2Ki+M6$CnFQVcs#}cIMIjdGFW1H0<1X`L%aoL;!<eP+f<WOU^9$DH5ke zn5T5FX}OYp<b&Xg*K?O16znN2>1+EGS+D4O>f}ksbKddA2a*C;zMRw?;5WtV%0ztu zhnMN@Cf5H9t`$DNmNlIxpt90Z?F(0C*^fk@%JQW}(I3q3*Dx>Kutcph^nK9fq#j#c zyB{@n94mjbOuRi|(M86dvp%;uR^MY)JX`s8>-B{9Mm>i`yW>Rd4^Fu*wcLMxn~SKX zeq4EZ&hnEF+c$3dte)uS-5S$;>5|irs$hTLKKq`%e=DqeWGsc861l~69O^eNiaGq4 zKly36xBrF5pU>O3Pp}dd6@B>aK@D$zLe7kOxm{&%xfFd1ci5hK$}6)rBINY#D!I&; zzKVhFr(Uk;+r2F_?@!{Iii^TCEQ{5iNG;iOXTR$-S^IYvuYEXtV}2QL)A`J{0MXS~ zxn`f_*?h0zen)umVg6+0BW$xTvUHzhNp%(qn!o*iopj_fvqFQWjZc=u)cpB)T;Ng* zXyE6d^>ouy3`b^cKJT*U!y)boE0l|8ZPR<7u;%^t;|Zm^6+#xr*;Xfg4}NQE`p@9o zffG44Kc7sV@cII1HY2_%E_iym!L}f#4YPFxg3PBM?$unmzqgsO$JZmW>B<y=78Avj zvzyY~|E~v4g>-%UFPXMmSg6#b^i_yS^tUZ($K;P)I@Wva*4Avrt&85IaMxWq@!{}| z{rhbh*kYBIgk9N`>TRPVcecmAXKE)a=)8dmyZi;V7W4Ek7VHs?tj>54e`#g-`+FxU zzIiO>bLe5M-zo$;Aj(B{rVQVgzt4=X^4s^6{x7f(3JO--x=7KvE#dazwWg*FhGowW zEQ{Ef#QMal<mDyR9kX6kFa-o}Ojl)CewR=2tI=zj88f#j_OTh5>2BdO+sy2=s&4*- zl?!4Y^E>p&{^g$ZN73U7sAVOvE4Ss<art9!Tz~%faF|~)WHG3a_^GIUpK-;>AAAne z5A!V466<CaTP&!ymy!RoY=cw}uZZ><x8xtP4WM>c5dTxB4#s`ej|y0lZDS@Il)Z`I zSQ(V1(emf||6j{^9C}jM{$-hKRo)h`_|MimfB)95lC6`-{(K4KY}O#{Q)kZ}eSgXu zG}E%}>B2D3a*LKj&(6+nf0*?6q`mL)DbKB=d9r>zln0%c@ImU*;}V8s<I84;mVJNl z=jUgEpsBplW*XCt?_6Q*F!c5eulaD0eZmT*r$K7&o)fk7SrXU0x%1qh%638&cmY!4 zT=2BY?~hqGHN!xyHmAg6YMl}4j%WMqd(Mj6+sN^^Tv4{&t9eXazw5DJPcMf}SJ>Jp zM~_gSFzGJ7KLx?Z<&S;3|0jCMk~W1v_q)4Foo}x_zcTMnqE7z3y*s|&t5)2q)PK6M zzGm<IPap5U4tjj!aD?yqPwM;Mwq08r?c6f2_FLo^L2iGBEW3FOKE4;6E04AYys7^8 z^ZCU5mrQ*LI%gw#YJY!o^blR<KfmwE&Zja<Zs?vgek8XhYAcseX$l|Pl*=KjB<mzz z*FH<O$op}*zUs?G_e6si56fmeD4cOvbAQ?GsXaH${9~s#8I*m0aOU;ARR5=+*V?>p z=aX$ZV!8Py&+2;&*^Bu6JNSi<GS2qnpM8&E|BHZiizc>%>cXv_N^gFtJe|om|Btlt zw-29l_C*B-3brK8zx(LOmJ3k@49USk;fEf7bJBRGDZkc$<<iA9kJS4D-%Jasd0{^> zrQC5*pIpTQ#wYgQ8bCAWli0r>2F<rDtO`Ch+5U~himr$48{fyjYo0PC#bfS;na1f4 zd@meKGjY`Noo&XOe01TgkL??o3=@v`$xc{p_y12Zi}07J=S@}~J2TVx;#t#uSqw>Q zw$>_$=|nIroN;YktaZwI`-6&IcP|A!-`f+o*v)ZKpG+M8ubQ8pXF&O;w%q*Fr_YMK zPTgX<N0^m2hZ_DfxMp^q^Qr8opmdXx7XfQxcZ&t}8V1TPXON6msZ(KZo{;tH+uLq% zZTKqj^3JK;3agIEgGYyxHaKgf?fw7n_l7O6PBM1g{iRjcq<BH(e*J%2l~oz9udVfv zvr^c0T>hBeAHHpSWHgpXFFAPP`PT>U<8-@UK5XB}%xwi~_D*112%7X`KDufaW5-9^ z`piYg-Q{ap6ib8R&RJdgf1#9FAi372-07$0)BvAP>dO}-9JfDugyBfUxn=qRK|xHN zR;SLLbKBl!YY3_zHq}_N@yT#>a#>Y;Q24d=<MB7p0`>k(mP`X9sonyWSBd@}N0=Zo zvX5H!cJfVgk-c>3lEM-@_dXfNq9DEFdSTwu53jI)d^$beNn;skkJh}v??<mN9GS5- z*8a`S&Fn&<C7+&nMr<~|`2Nt!8PatU+Sb)fo@UxDi~cfKJr%n;L#AFL+GeXj@v}3H zF1)qBUM@c&QtQKK-?MhAf=tc%`M)Y{?R>l<&n@h}dTRz~K=^EHfRCZ&9SyrL@rI`V z48nFizyI(nyF#G*(W6ISZ20?hhIGBe>G~&j8t*4fTd@eV6RA=$+o#XIXZim*+m1;v zdHhs4I{8ue&X4UI1(Oc%sr;<4B+h%9j;nF@`goZJiPI)qkAcoF5D|9klWM)NI6AqA zA?b|yOHP}=UoKBrp%i?ff7566<h(zLK0B8jdsgDKsEdtPs%5VKmj08B9UCK?jW(p5 z6!N%op_N<wf%k>PTAn`pp0!gLZ1~t)uAENVqA70s=h2VD;L+d>yA`&})c*Z?-NWl- zm|kqh$&c+DA1VLmU2M(JDfQ~oQtn&(KL(xQbLbKM^UU#1?f1JARwz8Zs(p5|%#T9< zoId-WzjenQZs@pqG*A4bxAn>t5sMtNGs5{G9lS!?Om^~4D_3UyZc*r!Hs{-GbJ-$q zqt*3;mO}itUj&{^TlDBr+KI}CKA@#WOYJvvpL!{pY4GboGyj8k7tFS?D;(3C(^TXY zx~OT>CZoct+Dwo-+xmF#9!X=iOA01+e=2%Jt*?0)JY!clHs$#ihe;oPy<YF^A-nJQ zJL?@^9G^C^^F^;Ych=`N!|H>qJ5w`2$HSG&3jSsmNEWp}IO8S{s5N22!8&PjVAY$u zGvpg2vj0ExesO0h_Y%j9&(F?ET-J3JWfn-jsVN59;55N%@$PrKxIs&XLXxk&3|!ar zv3(<~rM)tE`J)4k%mQ7$uC1;TvNdxSi*@gC-1j>$DvE2T>WP<M7Z$vi2dz4qw)?5f zth5w|75Bo{#dLl-xqWpSL(-Y6>r6pM>v3G2eK_yn{yjJ2MIZAgFF#eiAaZk($J~j! zf&AM~v#vC$|5w8!usVxP;aHF>`_pS#J71les=dMV;=$M795lYYxwV!1<*`Xs{0==o zd3-<qd_Ld##j>hLo$3NJ_C<s;3nYJgw-`JpbG7^AONaaUcEM+V9FBOoyj{@8ukA_~ zsEr<=A);q$8oKgT|KB=$vAcob1wxLpOs6^*ygI+>)9Y1J{{Iu%_gw$a^P?|I9@TwJ zSP&t|!Ez{mv&yRtey;NWQ*#=BByNp3R9|~L*UUyo?u!ujq{)*H$7kQ%q}r0yeE8Xs zDOaX`m8+MKp1sH5kNCC=zEhv@E%<Tb|B9?XiEA?M&rc|}Pz+gL&SV<>Y04`$g=0?1 z?nz%?U7Zj$@p9TB`~4T?>u*?o*mcG1pTW1o?;K6-PT$XY)q3WGI%CGQHIWj^Woy>T z{JI8O#X3pqxc#wfp?3T2>z92#+5j3v%(Jcf@v!~kExQTIV%Y^dr}0H>&y#J*>#F<v zTe<e2Tqvjs^FFGt`u$$<pmb30Wrnk+hIM^V>0|!n+I|0c(%PAWw4-(uD87@MwDM(O z$Hs3z^<=Eec);~=XmY1m@*ByI2j72o)G(XDYxY!$oiAd|L0{grjYm^j0~T9Xep2a) zR6VtnYn4pBgtpzUdXG<P&aZlAndkTURmTN`)(&l6>hElMRBNl!{`>9Svwvq4{YZRs z;gH{ptDDtZ4qaOp+bx%L?aPnDH-4>FRe!NC#!7p;7-+Eqb4{^D+{P7G&zj0jR`YEN zSbXZl8JBn3&qHh(45#gUb=WFS!38t}y?)E;UF-_S&dqPK)cwl#U(mt5U(WS<()MR< z;KeB%jME{DQ{HfP7I-Zx^6~;TWQC71raLM1aQa?Y6KQ;6t@CofxlOkxoVwWMx)rn@ z;Bs}r&rhiwrd^<Fr!Owq)R4h2P48XLdAr{{PUcTO{=WG7N%boE28q{S&b_V?{Gp$5 zdz-FZ#68#G$Nb6M%S4jCy}3Ez^@L9oUrczhG0yogfAVToj@9=V7T%aJd2)B*Np8!i zjVsJ;K5*RH{+?l>TVmOcfGz*e&yoNYv47W3oHdPYrKoPi28Nr(@2;F-I5J~>y19&1 z35S#EuA--0pPa(Z^4Rx)mOLk3P<P651)Tz7^D!&!Phw6(#K$Ya{*HOJxAs&Tf6|#N zmCKN%lcLk|$xy6QYnE|3-=z1Et5-617+!y1onO!>Fw-Uvv;fNZF@G{>h3V6f)d9U~ zJ~J9h%co~#F(l>0WO9IZS+-<7xgr^`ZsEuFjYl8#Pd#maBCSkA+|1+_Xnn_&ryM_; zC#+bs#9`Mny?+U7UOf2UeDh&jOgkHoM8h=cu#7y0B%SJSKJ$2199-%>eZo8Q$L)8U zO+Zcm_xbz{w=<gqMAu*E-hP{R_0guCkFMQeI1=H%@xarPw)vm$+==11TT_0wRNTrs zKl=+~$3~%Oc~EsIBzk43w|L6hpB|H$1(G$t=O0>fa<XE`(=#)TH>9O6y5AZMUKv*X z&B7;7{E5_+U8UJITNbTWV^=s9b}zCAlpUNBFE95${x<2j6lYc$L((3`inT0(3Z6Ii zR-3ov*{wd;Ix|yRs`gJ}PF05N88+=D2VY$Fw{Km!p}CA*;aJ~4R<?SnDVOz~5^vtT z`J(7W?pZ$Y;I2qBJAYfijYeknfLnJ~gLa(Qzn5zXSug1n3SLEYm{}m1`-r?9qejVR z&}_5wAO1UA7&|u3o3~QJFo|V}qsELmYhtD?04*C`^C>yw`Z`&cjMLL}Ii`HQ@(sM= zZ$nDzgD)>H3oLB7-@gCet?<jt0?F-SWlrDU-Boa!ZI<gKZkS!ikYvO9<NwXw+%J~B zU&sHzJooalLjPIQc2#>9W?T&7D!$Ro$9DL+^x?bheH#^}?P|?tBo`n5{%G4roAtYQ z*Tv`g`TI>Zy<}Eo|NM^erKk7*T(18*`~Lg5b|+2!PusVHhLHPilyELxa%-zv`7O5Q zOMRc8pKq>FGRwKa;2I*bXzQ_EMpvd@JiYyAea!Ct`pu$0<^MV#VNJZb{yx{F?2L@> z#Q_>3ph*mkLz!Enj%1j0TzvgNPj>pW|IzPrqt;D(fB8jj+oPt2JoR^_Kem_G><OE@ zd)>?0Aobqv69#9ZuCBg#{M7&K^(HS2AG`@?w04(s6MkN@<wwQ7J-Sg#C+&0CzBXp3 zP#_m8kCbXpY3hTZ-T%A!r<Y}$`OFNNeCT`T#~t$K;cO;*R_bi}@cY@S{}uCY*H<jq zb<*(vr+)?_OJ3L<mz0uCzj(B$en$uQA-$aU?31s3F3c$6b^q#{^KHla>tCP!-coVr z^7nL>FE-nK^gr$S|7_jgf00km%9%euxJK>x$G<y&r2h?%uVw8j*tl_Hz(l5xBCV+@ z$CXn`{?9(`YFM#yroq$7B8S*=`Ll1M-1&MG_CDVs)5V)nVcfrF-f?4r^<gE8w2xNb z3%lvm@Ka-^?f1fKw$quqKJR%OcgZzH;@I_ed$yRvp8dQ}8m8qJUyVKgtgkq*=egbF zlP#ht-|t)tE^*jC@pD&*uxs_b|4N$*`@PQRMsv@fJ^RGVO1)XPx6YEO=-_$xdaVkp zm$$d$qQ5G;gbc53-FBB*L38E9bFL@Oonx!?>;Rpv)%I_(lGdNciu$Y01l9cgdR;-0 z2{c2laeJTU0`2WP{1sVe+{|*_KY6}u$dBuPAJk2mI=zu8=l{RI1y^`DZd9h(*@+fE zKgYV&I??>-V|jj48J?oIR~bD@b~@<psQ9Q9BrC=DfJul&Hu@%W?eA}_TOV9l=)B@x zPJYpyb<0nGIKa%`5Cy8=dtS~L34ACYKY5YKU)lZb%a$*H%pdpe`imV4J+>Tq{OjxM z1!57pVt+Q3Cpet@{QlnB)}t#}?=~J4=-+Q2ar?mzd#eCm@72{cTzt;LqFxzEQx;f( zX1V0lk|$44?SJ&)-|zR$dDayl7VO?W%W*B^)s<`39J!prdE=CBw-VcQ{dl&!X6ff- zN)}eAsH!!++7YA2w^&N%_~jnnK*I%A!fHMaqALUA!uVDt8_u%$)3xHmd(BM?($CLZ zVD+oQbd!cy{{FvaKfYPN-*fo-=97hgDhs~fEk9g5$4Kntk}rSOZm9iT_J!wx*QLfK z2REgjcGy1GvY5@U^-`^E{lA~--)|r5m2PMEy#Hi}QP9Jy;qk0@%l`Z*ToR~LvaxW% zH+9f?03sQ`y(CnxCQg-#=lZAU>QterY%F|}J<rXDVaBgNh9RM$jkg*Ev{tiT4fp>k z%QAKE9>zb%Ikz@~M*X918ZX**aMk3=4!J7U>g;>_WxxEk`91%qklSj}D~d-h``h<U z75*gEq7%Ex_s6%}`HtlVNk=&L{7T7mU|P*mZ1W;qL{#+QlWAV(3uSmDOSLYne<1Mi zl{T}I8beLGqd1SWmB@ZGj#VmmFDM+iYp_&+|L>^-Yx?c~NrWB^`{T`UuK3UbzX!Ri zO4vc$aE<v>%q-T`ue^G??SE7K_vlS2oGau?OL(?j<BkZMD7#Wqb3qjs7uSaT`*s1g zYOU$5)8b8AeO}z(Z@)sW`C!B4<^GHRJ&%4I+P>%2>xu4inLlE#WSQLicc=G}a+b8t z`c=CtKdY@cw=Q<~gxRyXSE;L7vU;Dm_Q0Z7Nh*ZDeqO<a+dp=#;dEHAYo1KN(PK@o z9)9@v@whzu)x}+X53eqm_c&~_EZ=U~5YU<G8}sg31^gDiRbk7YGC{#>)!{6sM`;m0 zVH2jeJh&I|apuyAf(&y1^N&QuDk$FK*k3jO>zm|%xy*aZxUyEWUTLeC?a|MFucL!u zL&o2t53e|~l*RR88uZjpzkhqb@8I8q+Iu`oB)UEO_gC#cCc8l<?&9Iilb&3k@#W*5 zNvGE<WV~Hc13Js@i}sKH+iz6ns@GKgxmWVx+p}vt*4n2{TwH#9=WlO2loikzwQ$=u zvG@A#UfI3VzrU){Z?RMMa?j6UiS_3`pVDTYFli1?7HfFZ<;{O*%WvPXf#HexLG9$< zla_gQq=dLUzP2`cf!LW@rrh6IGOBg+wM~y@JAA#fqmVh|d;=qMMRmqxfs;7~iwYO` zew{L9%7<@{I-(dW>|Y+Z{@m}ry>8$swTHUv=f!MJ<9+uf$#K)6;yL%H`fmL3Y<9kb z?t{>}*x7B{_XGu0{bFOTo4R6sWm8K)kZfEm&-a9Xe|{?Ha|Q+nH$O>z-&)J?V$LS9 z^PuCFI?PhGL|nMvzpvosW%bH!ZCgb1MAmxxerpMP7}c!zm!tP2M^^HmSG70$&enac z*3r>n>E!!*OgcZoWhwXnH&0bU;~EV=uQQq7tiU&qr;2yQRJUHKr|-DSv)?ONya@}? z{@69Ge|jnZZ-#<v9X>h{8yK#5@ohe~_iuI1f0dlu+jy^dW%}{fulup>(dV*{Vo%@i z`^|TS3)E@<A2j>-$DlV^=e5)yTE`it_jENz3N~+ja=^vtP|fdcR$5Y`qM{4LG^TpZ zSd^3ydL&`8eC<QF3CI3cYz(|O!=}<`g`~RQ9EXw+ku!l_DwC?WDpdvS`E8LJ64G7& z{iE2kU5_U?&3mAg)4knlw#dbIuTNfYk2-LD>U#b7{hTRBZdDy$8KT?%KQlA)!WG%? z8Z&F{&ZnPz^snZ!>rn+oMaC;kbN!y*6FQ^qTY2a`kI_!~Xlc>jIdfztybzctGLzlF z=j9e(CXJPR>)j{CHJP2`5IV%Zk&T<H@2~rfwtAa4F8SM<S~8ON=$^Jav7PhqU%y(u z&1bo?*dHJ7cYiqRXre4bnbc2)xSEfy0oDQ0I(w=vZ?EguoNHsdz~%U<lP8Zo{=Ve# zO7;0Hm5K*n9yoh<-`CdN>(iOOy}8N!sp;qfxA{)ocE8^kPY{m@GyQi`II1=N<COI7 zqdcFO+BGJ#sVnQ6iau%eoUE33J6Y9k?(>7Kv9^EZqF1k3!(;r;>vK*ZA5Y<r4~Z$i zFL>uZKR5Tqo5y0er>3|!9cKK*lrJdjBK73?(}TCgSJ>?3JG^CAz@F>(oq1PPl-E1( zT|deFD?>HzOJTQBd;RrwvCLbA*57$HwVf?h$Ag8vZtJ(Y<9ilxHY{0^wZ=FwHkMcD zkoTXgow;A`Y~W?!t(89l8b}jbBwKKP!Myo<-j+(Fyu8XQU-N-+#oQ0Cb~K9DbDaLL z{?%;%2`755+&;O;wR?iy+r;(fH&;CNDv-Ana=a|o93DSm`VPfv-`2aY6<+*W$5>z` ztDp~B=X-ZoDRX7#@3yxUdsK3m4=jw8eK2*-6V-R`kDmQ;(pzmV*Z((91tj8*re8aL zsD0|~d7)m7suig>etmuI7`N$m&K>g$uMITjKl<?V`TXWRNAAx)H{YKBlhAq@?(3lq zdt`4-oxl*EX7Qm^T_1G#<l>VLg7+VPc)0!WbjD(CaXpsKzV8>^<rM>`N~bVRm~zD| zB1yRL(-Y4L0&zx>xhJf@geQvsOMScdRVI^;OZ9`73-0A@eEaX6T|skwmb<ihp3Cxy z-`k%);CC)$1fBR4U~MGP8|ND#SMro4q{`NVMKr!i;a=S7)w^mW|4n>(Y1?hCfXyc# zyi^tM`}%X%ycZW2v!C$Z*P>PZ{oT<I_w?>>)8s#YWL4<u8e4xsmLJ*I9wx`{c$xBz zXXXdCe9muApV!C-wSWD<KU;}yx?U{PR_1w3|Mu`7b}*YH%(hlc#cBG{oTEFAlsbwt zczXU-OVkXiXqqYz_h_p7uDq=eMH%Y8?eFkD*Sg$tlfYZhOqu(~Wua@O{}lc;c_b`s zwPby8)9Kb#>+LyLGi*ruZ}#QYRqiY2DmvP?mVXbMpML5`-~-P2Do#@VTza10YY!ZI zDZV-&U;=+u^5<t~4{ttfe0U#w!h0uf&@^j+w6SFAkI&}WHPRtP8^ppEOQ|^NeK~#l zbaDRStuuTgJj~`duXYJi(pSI!_ur52tX!a7YgOlhSN9wh^Iw1H!<wHdtv54D?Bnb1 z{ZYzUz`p$B@3S7>#}h97sG0YD;=JWPpDVrY-w!yvc%k=KQ%7kAPtVkqyBn*6CkVu8 z>1jGX(|&$fjp5Cf7uzMw-snvbkafs4O1$t?c)t{j=$fb-iM4b0{ri<I;mvh8O@ZV4 z!|v_39b}j6*dcM3|K0zqpWpm`TzF##`xK5!PtVRB-(E57cUrxBm-WHF&MSE%dq3K| zQF_CCApRRqi}pdrEN7dIm0yq4>_7K;?M~4h@Av(7P+Ib#<ipIAV{Z1&TgC4l)}CYY zVxeysgY=iGccw2SLxkQPz23au`}w)Kj*QzXKc|%}uK1q3N2KBN8}C^G(swks6tdY& z+G3h<SYC5wr)Ttn%MuPwKQ1LN3+7uthx_M;^$%XuEBNKJab9!`TOZdurTzFFLykvs zHS;{T$}S0ifA7Vn`sxUl2Fv34hd{?hy;9hocelw(Q?Pmc{C$rrXYCHJsB-AMa5Oks zoyY5&^_E9dQ_NONUU6&Vk!*7Az7st~d6C?H^ShTXuhmtFxKh`?a?ju03a-y1*Qz+N z^A~ft`0rhra;Slk*&#RKc%Q6H)W^pzE+4-d1e)aC*}<5_tTvf5`-I?xd97J5pGrnm zO!C`W8g+r)At-3C?_$vU>InjIQnpnllb-FB`^31Q^oq=fu3Vu-%pbMZ*Qwj(8gh8m zWvFb+zt8t7;iF%BdROj>YX|Iqh*fzXZ~vEkywCOGXYXj6^LhL4HtWUiYH&HRdB&F? zx68Abg`#vN=H69X?X-i{&9Q5qymHbjP_x)`J=4}kyV_q5Zmg1Hv^;ODAEsz*%&g*c z?9R?&!=5dSoNMD0)O)gcSMW}mK0TQ)@@JvavUiHIKYnd-jeoA<zu*18c5~7};W|$i z`#inOK(&txS{LxwFIfWW2F9*oeZs65Qf185_pkayTm8=Ve?n^AqAD)z)@5%bboTDv zzJvG5(aBlO2SBGj?KyhBwS?itu5^uW@9*<-F-dKfyc+IjcKdzc+!sup6U=jOnPfap z4w$lRe{9>XON$Mr=D#k?bl;!mJb&Zg$pJ^cuPm1duj`WYS}G)xU}<UTvE|t3WU~sJ zeX$dBkJz_-*!E!lcOI9*yT><fxOn`^f<U&KLuUUk%84$0a6I#w)T@o}CN_y}|9$QM zj_doy3@-+PkB(AO`EY%O_d*vV&5bkX{NR0g_n|;|zgXBET}A0hCu-%FOcaXNWHen; zdcQAN!=Uz8NdSYaU5!K_SL^S;&x6)j@6b}8`rJld$=QRwHdgcA=NPw%2lt-cDZFz% z_oBs%9T}%hoX9v?>DJ#0{|S<(PrlnZ@8pu4ZO4`3A5Yo!yP$Bt2Vct1`(my<F?!-2 zEc@4-(Xn|Eqx5i6$cZbl-_j4R51GW@k`ue-&i9BDYz;PNo=o<)W8@TM*;V%TR!+P{ zu&d<0U$3+SCR~{5BT@11_5_~)ziPhOT{1RuaBQk(`#7Qh*z=kDYwXl~XR!z++Dk04 zxqRTZjWmnn{ror0d-lWxOaPsO`s|;Yb_(+WJxevvbnXI$L{sSx;`ydBJfFU^XD41* z<)F0Y!-8I;AjidB>{m~oJ$rOdTG-t}i?4Uf?>FW>4&ArclQ-IWuSaZfaC74l#`PRa ztae$5nzd)-JN*0c?D_NNR}!UGArrXvJl$z~OGR?gRGR}wKkvSMsFnNY<J)htjvSY( z<|(;-b8~uPxJKgFFV!N74|~n;IkfHa?qGEY3c5W(U^;8wC%-tMLk~-op0Bm%+WA30 z`FG@$V&MeErX%m`zFU6~yZx)#Y?sUp#ymAY$0r9GnG5a)OHX24U}h|ver^sUtKf2N z#@hY%T<67}a^H8(Hfd05TCr~3vESXh&0hSR_AKP_sj1ov6q2?_esE`B<*fI|de5Tj z3%N_5Ppwhb5|*Cxd~x~m#G9K^7Z|88H%!`4{yy%?eXXqJGuRw2TuyNe4HaD>w>R$n z%#gcsNl8f#UqRDZQ<w0aWVo=f<KWfR;f|%>-rQ{7vc)98`k~z6zrVgRUroO7a>K&7 zdWSf{72V;@uPPrjvfCWK=hAUuRq2cgJ1n0tDQK>|$hrDKiAuvB6&CXq;o@I7)-rt9 z{J-(k)V|r~`AsbxO2X=XF8?-F@~U5DTiA1k=gZG8dna)H_lm#AAXg;NbKkjlsq5Em z8rQ3S*}AbkG^lQKO?WQ6RKhe%MB~JVvV#ZbzEu?c_xEzO^Fx#4&7kAT)bw(S^Zy@v z|BbilY7(0(%fYoKZIkyoCLGm%yJchHf~vY-FVzFAv;I7ah|7}`o2aY8?C|f$r{gnU z?X3H2wW4{BO{LJut{ZC4XS!|#4f1%jsQFdxmUzc^lflDF%l|g}>uYP7D?K~%?(R~| z{cNr%%%FDeUUT8&V~s5wPFZ{9nDy)W=UDnT{caBwuqu5eQgTyr-qo&yaaY6rmCj{2 z807zd_vsd2NZr?s%kMAlSkuUOTK-fqKi5VH(*+7gZ!_25iIFs7eDLcetK)CmFL!np zzq?nr=h5c;jiPthrztgcbe4VZEdE~im{DHY<NdvVtHWFx+1~^TSd_e&u-iUCz4g-G z)}KoSIRC||s9$<j^{O(=gpKhXe@39o?)9HzHYI7^yz_sXcG80qD@P@hmB}SD?!0_D zffrN+s^vCX`Ed&!VlV7ViHj8f@=%^%H&EI~L9yw|G~MV2GDaL#n>j^}u<^_FY?7Vr zq{QGe-;lHT*%?Mw!>MPvV)M-EemrCkI3l=*>CMDhA~|<<2#PGJVD+69++1I0|AW2h z&)59+14&mJn<UnIJiFJmbm`Is9?CY+Il6Ab8XX_QuBo3C5@J;NelvP&k*bDA?2dwi zcc1G|O!@#iY0u@wBir9ww;gx3W0*AQRkmFJL}mA;Jt{}ONE$z=DvG|q-molj^2WNq zRTBgpbrcmDe}8++%xXFH<`LoSW~)Ea75}U=c-aCbJm&15I(6!T4%ONtKVQ#ly0ani z@P_)Z$_wlbliQbouFhJZaD4TY9sjjEJN`!g|8_gSxoM7}mfDMO#&yc<U!rt1P89ar z|FiQ_DyjW^)_lY9Wv!kJDymy~*_O)g`{F6!l)X*y|A+l-xj&8{_Ih)UWrBd?yJNl5 z3lu<SUaQzv<a?}PFcEq7_(-R)f@0H*<?P`Co1@SExO|<Ry_Vs})m`@#H*V@vcbq(7 z{ZEB$X=i6mkYqcg{TkHx6<U<5{=4K*#`RSjKrQ+<Yw<-pc1S!?RV;gZi#7P{VMi&3 zfBKI;?`n+SqNvz%za-7re+_RZ!-iM057+rIh&X*P`&FsD*=ZSjLh3|Tn>{Uilv*No zm1uT#b=|4w&ziE)W{HXllY?ATl8J=PbGZ-qf41J(Sj+y&r1p>=D8QF!eaO_BD4?mS zd7|#|cSmuCWx0Qt?(QyU=T!V-R{ARBiSA6{px}ns@Aq5xR)2455wP1R5%S}A^HxP+ zhJSVSrb2W0CR}e3_~@lNZPMKB*V?YIJTQH7AUVY?EKE$}Ld%7fyfdbJNxIQ$9~8u| zx~~0f7ASwc-~V53RgX|yp}0-6z1`pZBey0wFe<imlw0k2|5u!6FN3ce$k4yPzaNh- z*0zY?URm{N-<Pm2e?^_9Or5&$qt=1OB@Y91pPX76(8Qh>U@NTV!@&8F|DVdMWGUfo zj1#7W%&g-8t@ai=)NU^l6jmo;!nmOLmz&MUBf<)bE%#5IK7H|PZ@6U$_s&z%Hqyb% zd>FUR5@=c;Dz@Z>v)-S_zjl{rCz@tCICWTm`*Jl<#Nx|hE7#W62#0GEco^QR%Fe5L zr5P|+&bG>7ZO5^*v&|iyel#sNeK{q~=iL_F98hD>(=%F7elaWOL*}Iio0^jU-+cHm z{@?Nc9D7eP2|4}fjdq@~Yf5{{kK>`WZ%slt``m)fTLu2G7d<~WH}GI+;6u%Qxn?s9 zQq%uW;9=MqSG~@7(q!v{fA2`yy4Riiey5mU;}8evGLQ4u8`RABW}o1U?YUIDd&v@( zqaxyy9?D<8c008rY}b5we&$n)B5d5lZoDl!U;OXo^7#&H)l)iiEZ=Rk7ykz8KslTi z;gPcerM9%Qvsiy0K5cEoVDd#;a>2fMCyv!;+xFSZ@ZV&Z&>gN{wr&MOC5PfP{rEn? z+L#^RUNxwdCVxLLf%pH8e^37=p0(3o*CZmlqm<KCL9s-tx4PiitX+2X*(V!CQ_8Q4 zoqy1OVNL1Rd8fHc&!?*1G@R<Ap`pRBb(#S9D5Aodg2D`*o-?QFf!1+9QC0ksrv1tO zPdgv?|4saNT%w|^JUAY1H_g7L@N?lrnMJKNGqp~EJCHUl0%ogO_un?}aNgXpB6)Qc zcxaPD^~f^c*%xMCk?C{wxv3!q?tD!Xu#rfdlO21c#Xcx#zh^{SPY=(8=`9t{=aw&c zUtHhL+OX=2(j41rF_o4Nvu~vwTA;0dNQnW|yReAW3t)CSA@+ZjlDA7s{r@lb0xW#B z0$79>g|CmRn582q%5ZIh*y^ygOk3Lo{+tY2w7PExs5)`J%esE=H>nfePEVdaRV==K zw2c4%r0H@;7QD)uAaE#uv0JaxN$%B_Hr%tlDl2>zzg*zd@oAG$&E|dOH`p6aAAg>B ztVePIhw2f~eSsRSOp+qqMnSE$ACBK{*eRYMr70*Z%$&um*yE=BC5o9R>fid^2`jW~ zyYoNa;d@b7#P{iA_Wj2^9v&VHm7X2l;`&Zg=X4)B|8M)<L-ulZLfKmyTLkKMm%WwR z@^Ym_&10Vk)`n)i`3=W%*i02#Jp3;_n15edYTLv6^Y<D`s5SG6JZ#xf`dVzqDlKip z$!8K}8Nwz?owxsQV;?WcqShkdv}Nh<cf0xLitW3a$GD*Oj}T~tN~PsPbYh}nRoxf0 z_O!%s*Voe$&&)7fz}7NBbpP*py8O2p3Q|Iq;wqntPG}c6w4mddccRq4Tm|+yW!5Wd zITTw2l>G9Y4qmL!|NKG!{oeg;H`736QrU|OiZ_0JeYinKr#sv<D`;}z=V!hXW(yoj z-2U*`JH|w52Dzv!qRv@a4tY);wZFeDY<hIK?5jNc>|-lte2e<2-Xh@Ck$QUC!J_|< zbLALbRo!dlxBnvmiu7|CF8?pb7et6{yZZR=^@-D`vkN&1<WHO(G+XMMErYi)k45b- z6AdTMji3!vG8O{OdDHdm=2bsw{VMh#{bZA$r)PovbI0Zbx?LV1*XJHj+N}8fu6_RI z5Bi^{e%8>_W8+l(^X<*%^Gc65YRXJ%t&P;Kess6|KC7#RqED6SzlRCAH`p7*%fGm1 zWpQaVaV`uznk;y8!>l)ghKv=gHw}AzPMkc+$f?*Ouqe0o-_Pe4rtoJ>{?Omvb3`?* zfn5xgrV8DdSFNAh)xj_!-11cqTL6o2)9=K0wa4!M)>q2P`L6<6vmmmt<;I3Y=3f(L z9p2cXX?^s;p;m4MMNk~>-L%OlWlxRK1IC0)dzeAH-W;4b_J@XtFRpo>#&=w4*`?+F zNA^^Hc5rfeVRFG_IotnFcJ0X%1M9zj6Oi~S70@EIXw@n%{|T0hm<}{9IS3l^dFu=c zibBqpdy@1M9?J8JcV3+hGIXwWIbWdR#SLHI%3fG?W4rEx#@Kt0ZZg{1-(y?T)643r zpm^%^>520fIs3Nm^}KsqneqRhdl%FgZ`tp+=Q&)xdzNimwu`*@Kh=iDyZ8T;akQ0{ zZuwDhx!v^s?hpO(tMfiev}^KBR`+Lfl~COG^O>}ZwunZ^iVJ)57(D7PEtnAUZkFG& zG-i`J>;Lt3eTPlzqV<ES`)2!IYhWwmpK$MUg|bKg+9?f}b{*GJ3hll<o&9RH-sF=n z-W8tsetxlq##FC>-vUk?ibs}sPJU38mVSWA;dE_(;@MfI3W_cPyJ~(Kg_va@*e3Gb z{<kPkTCugy7hxw*%~MeqR5v*x_wp5`9!X=VD^1n!cCxRxiIm#FP~cQ*v@Pc*Q<kHn zqn+RWh^tR_)TxHOxxbxXr6nV5ecWD)jL%<=Jub7VN|o7WBE@rPd+Di&n7vh^CDCPN zW^R+@_Dq_PKi|GyZd!(F99O`P?QJp}qI4EmrR`<By5#7WmzNK2xBu~gc}Z~2<j2z{ z@Mf-Dx!`u)&!^%qLO-rhG7VcF$D38}#G%-7LE`KQ`#<`1?e&)V{|&*-9HkX!XBx9d z`k&|VV0a;MXTNNF8HeJUH0FPw)=I74ety;$tv_$A|M83N{Pl`q$r6?3cMpDjeSO0F zn(2*Wf8Ms;dyp`pMW9?nR`xCDw;N5Y+yTzF*bYYNW^PP5DHJf*d%B*Yni^Zk`5lFi z4JPq0axxTaih)ikTEX`}diB*sh1m<ApSbj3hu@MTH#es{mYU_?<5_;0^OZ!>>uYN_ zM6G>sXQ#0S&&T4;H**%09qT`NRMXt_kfvR@`xoJd$N&C(KHo9-_~$=AW{ZV;pD#Z@ z&-TIV$@Av%Wwo52*#EG2nZVKW-Sh7s>y>`^`uK!f6DQ1PU8X4fmxtlM_^eBHKOS}K zJ2-VLNZ%4=_~6d<y4L!=eS4al4lxDn7IfP4@7L=ezNw4UBc$y&2!rl0y0AWCcbTr- zUhBK>88(<4Zph#NSL}<noQxsU@ARp=`yVP8TwQq(+*0VUwyODIuwvf2*j<lyy4|jv zugblv<R#Op=NA?_FQ_uQba~^997awC_lb<4X35phU$4hEzcPGTa^p_M(nk~A9969g zAF-@R?kIhIt+B&K(Z>L^+r5KBZ8GN-FZX^qRzXw0y^<natSf3O<-UWOs8tm!Yux7s z*VWl|aGX4Oa)H^Wlj`#uI%chXcXxO5tChc9S=pKyuXuQQaqZ`2Wo2C;5c+-3hNPoh z6T~eH-gKN7RE+8LJW=`hyB&MO%jkNS^Yd&SojN9bxE7s%FwpqGcZLtgBr`4t9bC<~ zB9>Ee)22-Yh1K>k_e~jA?vYwQHHOpg&!+SR=O5m8_ujpD(<Y%SUTMuz_22V!%j{#@ zz)gLnmIvb3cG@Qh9$grJcgll(OUmx|DYEv-+xJb2(+HUK+v459=ixuD&kWI6VBzBG z+8Ff#w35U<@ZIs*4sPGCJ>InIaZ>cV&*~}+UsMjotc_zeO*p{t{jau`R+ARPlc(<w z3Nbu;`gCh0!wFs=Z!fQan3$ej&pG%$|Hw@~-q*W=;X;Oq7lVcq*Zx`Z^MfBoGyHh@ z-{GkT8>ga^S6-al`bVEN8FcRLkt)AmYrf(xr{cLemXGfx-8MbmB47VU@QPP_-A~o; z4?k=E`Mvym+o8NJ_R7ScpPtT$n$5L3kXgv-N9*Rk!W4(XK*1B-f4=`0k`HIHb8+jD zx0idu+8ot<aLLg%k((Wym=0VESbbGNsYl9`>k3z?_WuKC)tfCDdbZqSb!jobUnBhF zViAKxo)lYyQwv*NsD0_%!1c@y*C*>&&tl*fj7m}HP}6M<|6D2hk9SuQ(?>OB4~~n8 zS=reS<5(UpJ@@qKkHld4^~?uMg+Ci6ALE%Y{Y{xQXjiq6(~rBCy8j<5dvElG>H7n3 zrKQ&&%KQJks+H^*cWZC8dC49501t*6QJ0tbG7Bo&*~yi-&)fShU}cDc*pcXl+iffj zcl=dUwlQ!EGEET^=j!_(zWT7eoZKSA84gYz6OOF@;bpe|n-+u5TnjPn@O3PlicWnu zR~(<eKk{)Y!;k-O=CT&tjuLCjH{8Oj&Nub0jfRbeaq;w1XU?2?VUw1Y)@EdETt0K= z%<}W+>W{mB*75GrEtiV6ynlxGMO4oAkI$K3yt*wi(LE4!hiFifLX3D^`9)Xh_wLoj z!V@*vk1U)$tCllJIEF=G*Uks>WgX@mb0$p^IxY5o!>(pF-mVqXKvy4vmJ9^8E|1?^ zb=8B}uINd}<En#VH(UG<E)s00__#pT?vhX8JXcrOC*OasEPsD*OZE4>Aie_W?3!28 z=FMC8`C<0eRZCyr0j*<AQD^w*X}yls>XU|Wzx}@*`<7*2Uw5_m#ftVVcb6<tSrxfi z?V(Nin;U|g?wy#ZT)J8C&gv~&OkUmCsBC#BJLmo;P1Zj4<E5{zXePgV+;6X@BX3=% z^U(gCv?fC#Z^4=uLQ8T$Bi0vEm_OSTtkqfUw$XOZ{WX!BJ*FOhaIpF7zWx9IzMpK= z$mipcuBWHB?AF%o*N0ZWSn?u_At~NsUAuhUjD0^&@_p;CUaiI8IK#f)PV`KLMH1tT zo7FP5f4^K_A|&Q0Fln=q;8pR7e_j{ms6SnBFzS#Z$DubjH?PdOqq{Df;al!Y<=D^G z>jYU6k9LXP%Kq~5a=THM%Eifd<|v;M4EXuv^y%YeUqGj+tvuq+q7Y@cIM=u?t+Mst ze&;DG^%*uE?Jw5)$0M2M^4yh^h5Oo3;c!a<9k<SJmjt;FB$P*f{%K{l)_^<U&GhT7 zZw@`ky}^0l@9*!oz19aVb}N*1_E5X$cf%}ji*)|BiQjTc-#jb3!?R>kY?P^r+B37< zTT5DHmnVF7cs@^Blfk<D-J0iLOgA#buKsyv^XAQ8zdBVh#<QP@>3)6g`<ZE=wR4}N zbY@u@Iv%=Z7yse&v$L}`XNe^2dzO}2{qBzCpLMP4gj%>3g@y6m-Sm<F>8bsfw(s+H zJ$iJBkd&hUQ!3*s`&=g%CWGb9(zmwdO0R5j7GQ}l<I4KEQ>?+hZngN+=T9eeRkJu= zYQ4NVY`M`?|L>adKE4j`!hUY?d0I3%OkaUXfcX%cAm}n!l{1P=T!9`o|Ns4dKY8bG zk!i|Y>*gF2UiZqCg{iUV=|g9J+Z1K*Ijjoj)^6AkaC+u~0>e0s@As<LD}EQ#jdD2! zsuwF~w{YmK&M*$<J+OjB;eNO0WVOQ8H7<NbQ<iPa=TPhLI8%H?;o9TZvb_vXGPYj2 z6!dNxkLDWbwjVWiOMc$*VC=9;*~Vm`vA8fM(Kl(|=eh3%y0?FPe7yY(>rsuh(cAmx zWKDTsxT8Jn`K8t2`j5Xd3QXi|Y_B}=&VyCqeCdk|2W^fsO;BB<5W-P$H?2hap$<d& z|LH+qvnQJeRkJvrID3Bay5nV5r}mr8-{Ywpy;W&y0Y}q?rQYJV%EF^N_RKhTNwE%e zu<6PjZUQVj<_2mp3+X>=%-aW=uhh&}U<z<ozIkC+Y4(}Gjhd&De}8-1rV}LQaPCM{ zbHA(1qI*+Vb&iVZ#k|mASj_TrX@vO8t!2O8+}^(aZ&`8&!<myOH~QGK-dGk~JY{9@ z@=Y?Eg&QX9*(TU<!!D?9s;#ILW5<?knPlGfut)9u^4mm?|8Q<Sy7KOFl^bUB&WEiR z)Mb}#*wL-RD)C+X^wuX^K>J997&VTtYFJ-*u{C=e(}s7pvsb$J%Pp~KRN(j#z<sf{ z>=S>lQ&2be&-^JYP68}bLbA%U%g%h_fBaqk`{FlWQi7Tkj+plTsf#*%w?0|MIn;_> zvQjpasp(48?k^`7EK%SvwqAI3U95G`JBKNX`G*5PINpo#XY7cos5w`*@_gQ`1{sTj z17S|Ra<)<DOW)p_dP;cFjlN)K5tsg*f(`n6J}{j>x|AViPsPTUGHV`|#JaFVafWzo z^O(PWMSI)R4vF5aoE%5iXnxYqV_l%&kfnZoC+ozz#83RbPLnp(F0pA<;8+{Ab<wu@ z`*SrJr0;KbOIKe3O5IbAXGZDIwK6}u&`-kmOZng58_pg5GX4A^*ZcBzFa7W4oi~+h ze{YlZeCdhyh9-gIdp@7D4v7t27!*2r*Gd!JkF!>%{8@KgYihRUFSivXj}4nctZdhE zt(@tlwtv;hyd$SO7)-i_H(%gdb|UIob8+vkW_JD{9sd~XpF2`c3Kgd;(q`<)zOXsn zKZdzhu0!VV#^|@xmx|6>64Jtuva;=#wcjSO<IkNK7O^G7a69;Ex@+li&A!FcC$MC) zx_{f6`sZ`YUp=k*t=4q?%$+rD))I*YUVF3|Bi6^+Uf%aOo`H*LmiAT78Ywjf?q&D< zf89^;SL9$)dVATcYsGhS|MnC1CLErpJ=CX8;Akp%c}ew<gQoPqnf33lt(DH@+QKK? zz|H<Mknd!fZB2NS!V%RI$DUlz@+>s$4UxREueN$G&)2uLp{p)mR{QyVh1P;EQ$k{u zc$Kx4gWdn}${HQHF>RGh2SdtCX2~RD@gVkB7v1GemtWY`mU=Eaf3N5!-FFPpVPVg_ z82BU%8lF34y-%!{2xBUEcV}nS&OV=#1F5_RB3Ko&Sc`tGUM<yd=ft6TTx%Imyxc6v zUwrzLb35P1TE57>&t+Bn?$!N%tH^7A;iKfsi7yz=e7~{ooV*qL;@u{7*Mu(gTwxG- zG-t^go2)&b=ePaYUHVyGQ(J%j6m>xsP>21>lX+VenKq=HxW2=9Kf55yLId@w|9*J> zpO7YRd2{9xAvs3@zd06y&rAct>$^^I2{x<^<=Xr0R`#*Spf&b+Es>Fej4N2DbtY_& zak|yP6%-V-XnN*JVP!`}H(qHolWnD6UtL`hR5-PBTkdVC*ZeXT6UyG*@tnBCwzzli zGT+%<3~L-1B~H&4$YcBTWU{~1?TkA+Hm>~XZsBkHRb&@;aY;spfD2d4T!tsF5A@f* zTsmE2BFh4W1%-b1PKdTK_`Ls6n#c7tkj2sC^qD1c)BCc1UjKPOOv^!%=e!aJ)1qJR z<?6c?8LCasKmX3!q@ZFKqjl!M{SAt&A$1)LGHZ=?$Twu}J=L*<;r6L*3A2_ep7xt> z*ZcnZS+T_{n<J0;&NOn>clJu(!X)rgS0^Q5>swWy9Skm2n(kdk6S)kItXLl0AXu4c zQd@ZP)Ku-mv#K7%y?op|;q-L<%YVP$&v*HjcxI;Y@lBi@+y4IfeE#y5%*#FZ&GYVP zm@>4sC|T>z&-?l0`jr<~wV!-{T>2uF#j)bg$KxwgUR+=Cefzlpx69F<|8<{bf{NIa zi{|gY-Oguwr?KQ)x4Iw;=wi@?DWR>iR;oy?xwQ39_WGc&@2{>7Tl?hfJ{Jb16p`Y- zx#5;Z-1Fre@6B)tK2vbzY8$Wg7c;?!$1)FI<T|k6i*bv;36sF@$JvTZAC7S!sQmnF zrgYJccY3|QnI-p>ybRiV_TAmxyKku}d2F;>6t|Y;K@%%?&(puZznjmiuF&gX5D{Ya zcpbI&cVLjGX6%lF#wpJQSr%?s(IItzuiJH=pn2{BE!*$c&E9uu+XN|*x=!hrl>&|e z=jPdV@A|&0CEBsht~XHfMQ1~*#zIx54V$<RJUcr(+0R~c3hxW1Gf6x}tj@9SYX0+b zI^^G7m_22R3zv%~gZ-};i;Gwvtc%^v!<cbhAocsZyCQ2D{@7QiFWBfM-um#p7#EAH zgU3rPEvFUI8VeL0UT7&ftWaoFV2O1JC^z1perC4)Ws{%hWJ;dZ-ncMt=FGjbPb9D1 z>cKdT;g7fGf&W_=QtY?>&y?-HFRB*iyZ>RqiuX>YI>~qPwr~G_^KIF~pCvzhUo)+7 zQ|X%U^!G0@#tfeQ(zBZWJYh`cDJ}jQuc<DPyz1(zfA!B9l6m4B5BgdjViJfHyt=o# zsj5&YalYG2!;A?ZCM&wk@mRGoPI}S{ai)L|GZ*cjrw}^1c+$1IIcA3~mqbqS`;)LW z%JtJ(Q--f=W}j8tEY%Rz{;k|<F5CJ`#kb#<S<IgncFu58`Fo{5QES5-vZ^o1tFAj( zd^DTEi{aS$iBF1o9X{(?NFA8*r_e&?&u()ydyUyABql3wyS=vld!=xLl*?7clnK!s zww@dQ*3JJF^yPPLtb3DIu#)Fzi6v_P!x;G3nwOg@XTNwO#kqe$-1_~Z^8;(0OIuRU zr<_}<`@NKD!h36O#tN&sO!ESNudsb$EVVvGkzwKGmo~BTk!?Pgt!L}hJ-#&AktI8- zYyG#a7c*Gy><?RQ`z~BVq@->YgNV!KtiOhgGeTJw7#@>I?g0^Jigxm_vSfBnKB+Q+ zBdAMfV$J+()j_p;JZe(TC2i!GKQ&Nms@*R3<7&3&D{S~wu9)n2_pyTKy3h6-8TLtc z-j`?XJNo2hjv4pA^7|2gd6dr2SRJCZ@%5z}Ej#1ZPv5aEX`_Ukb63%!V#EJNi+cO) z&h)x1z7exCChcAS(YHTqo>{GTTNC`QYOmiN?yRSV$LIY~DcBiPk?;I-`K-E*NUN{s zo`1e_i?wS0iujpgUt3suTJBtaP<J=)`_rFmx?d~byziOY=cx8-^Xsp_<g332vKn%* zFo>AWaA4sw=wUtcX7<gpd;2{9`JbOEefd*-p1?n01_p+P*KHAgr|wR8v2$8vxPRBB zmp3Z3Wt?*Oj?Y@Zb&Vwh14DsK@wwj#ybKHs3<>d3**h6;RQIcccpKC&*6Xf&5g!KP zH2jrFe)24S?bT=UAnstm`K4L>d>$Z|u>7sR+vkwV4`LIAnHu8fL>)UIHyNbb)78&q Iol`;+085Gq3IG5A literal 0 HcmV?d00001 diff --git a/recursivite/recursivite2.ipynb b/recursivite/recursivite2.ipynb index d2ca17a..3dbe52c 100644 --- a/recursivite/recursivite2.ipynb +++ b/recursivite/recursivite2.ipynb @@ -1 +1 @@ -{"cells":[{"metadata":{},"cell_type":"markdown","source":"<h1 class=\"alert alert-success\">Complément sur la récursivité en programmation</h2>"},{"metadata":{},"cell_type":"markdown","source":"## <h2 class=\"alert alert-info\"> 1. Introduction à la récursivité</h2>\nUn algorithme récursif est un algorithme qui résout un problème en calculant des solutions d'instances plus petites du même problème. "},{"metadata":{},"cell_type":"markdown","source":"<h2 class=\"alert alert-success\"> Rappel : Algorithme pour implémenter une fonction récursive</h2>\n\n- Etape 1 - Définir le cas de base : Identifier le cas le plus simple pour lequel une solution est connue.\n\n- Etape 2 - Définir la récursion : Définir le problème en termes de plus petits sous-problèmes et appeler la fonction pour les résoudre.\n\n- Etape 3 - Définir la fin : S'assurer que la récursion va bien arriver au cas de base pour éviter d'avoir une boucle infinie."},{"metadata":{},"cell_type":"markdown","source":"<h2 class = \"alert alert-success\"> Structure d'un code récursif en python :</h2>"},{"metadata":{},"cell_type":"raw","source":"def fonction(n, ...):\n if n==0 :\n # code pour le cas de base\n else :\n # votre code où apparaîtra fonction(n-1,...)"},{"metadata":{},"cell_type":"markdown","source":"### <h2 class=\"alert alert-info\">2. Fractales : courbe de Koch Correction</h2>\n\nLa courbe de Koch est une fractale reposant sur la construction récursive suviante :\n1. Étape 1 : Tracer un segment de longueur a. \n\n\n\n2. Étape 2 : Diviser le segment en 3 parties de même longueur. Construire un triangle équilatéral ayant pour base le segment médian de la première étape, et en supprimer la base.\n\n\n3. Étape 3 : Reprendre l'étape 2 sur chacun des segments créés.\n\n\n4. Et ainsi de suite...\n"},{"metadata":{},"cell_type":"markdown","source":"On peut construire récursivement cette courbe. \n\nLa fonction de tracer prend deux paramètres en entrée :\n* la longeur $a$ du segment.\n* l'étape $n$ de \"profondeur\" de récursivité. \n\nPar exemple, à la profondeur $n=0$, on trace un simple segment : ceci constituera le cas de base et la condition d'arrêt des appels récursifs. À la profondeur $n=1$, le tracé donne la figure de l'étape 2."},{"metadata":{},"cell_type":"markdown","source":"<h2 class=\"alert alert-warning\">Courbe de Koch : fonction récursive.</h2>\n\nEn vous inspirant de la logique du code de la fonction précédente (en la \"rendant récursive\"), écrire une fonction koch(a, n) récursive qui :\n\n- prend comme paramètres un nombre entier a représentant la longueur du segment et un entier n égal au nombre de récursions souhaité.\n- construit la courbe de Koch en divisant récursivement chacun des segments\n\n*Rappel* : si n=0, le tracé est un simplement segment de longueur a."},{"metadata":{},"cell_type":"markdown","source":"<div class = \"alert alert-block alert-success\"> \n\n### Solution\n</div>"},{"metadata":{"trusted":true},"cell_type":"code","source":"import turtle as tt # import du module turtle\n\ntt.speed(10)\ntt.penup()\ntt.setposition(-300, 0) \ntt.pendown()\n\ndef koch(a, n):\n if n == 0:\n tt.forward(a)\n else:\n koch(a/3, n-1)\n tt.left(60)\n koch(a/3, n-1)\n tt.right(120)\n koch(a/3, n-1)\n tt.left(60)\n koch(a/3, n-1)\n\nkoch(360, 3)\n\ntt.done()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"<h2 class=\"alert alert-warning\">Flocon de Koch : fonction récursive</h2>\n\n\nPour obtenir le flocon de Koch:\n\n<figure> \n <img title='Koch snowflake' \n src=\"https://isquared.digital/assets/images/koch_snowflake.png\"\n width='600px' >\n <figcaption>Etapes 0, 1, 2, 3 et 4</figcaption>\n</figure>\n\nIl suffit d'écrire une fonction `floconkoch(a,n)` qui va itérer `koch(a,n)` avec la bonne rotation."},{"metadata":{"trusted":true},"cell_type":"code","source":"a = 180\n\ntt.speed(10)\ntt.penup()\ntt.setposition(-a/2, a/3) \ntt.pendown()\n\n\ndef floconkoch(a, n):\n for i in range(3):\n koch(a, n)\n tt.right(120)\n\n# test pour afficher l'étape 3\nflocon(a, 3)\n\ntt.penup()\ntt.home()\n\ntt.done()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### <h2 class=\"alert alert-info\">2. Fractales de Koch et perimètres </h2>\n\n1. Complétez ce code récursif pour donner le perimètre du Flocon de Koch à l'étape n.\n\n*Aidez vous de la figure ci-dessous pour comprendre l'évolution de l'aire entre deux itérations*\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"def perimetreKoch(a,n):\n if n==0 :\n # code pour le cas de base \n \n else :\n # votre code où apparaîtra fonction(n-1,...)\n \n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# test pour a=50, n=3\nperimetreKoch(50,3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# test pour a=50, n=100\nperimetreKoch(50,100)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Question:** Que peut-on déduire du périmètre du Flocon de Koch (lorsque n tend vers l'infini) ?\n\n**Réponse:** "},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"Pour calculer l'aire il est plus facile d'utiliser une boucle avec des variables qui comptes le nombres de triangles qu'on rajoute à chaque étape et la largeur de leur base.\n\n2. Complétez le code de la fonction pour donner l'aire du Flocon de Koch à l'étape n."},{"metadata":{"trusted":true},"cell_type":"code","source":"def aireKoch(a,n):\n A = ...\n l = ...\n c = ... # le nombre de carré\n for i in range(n):\n A = ...\n l = ...\n c = ...\n \n return A","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# test pour a=50, n=3\naireKoch(50,3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# test pour a=50, n=100\naireKoch(50,100)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Question:** Que peut-on déduire de l'aire du Flocon de Koch (lorsque n tend vers l'infini) ?\n\n**Réponse:** "},{"metadata":{"trusted":true},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"### <h2 class=\"alert alert-info\">3. une autre images fractale: le triangle de Sierpinski</h2>\n\nLa courbe de Koch est une fractale reposant sur la construction récursive suviante :\n\n\n\n1. Écrire une fonction `triangle(a)` qui permet de dessiner un triangle de longeur `a`, puis une fonction `etape2(a)` qui permet de dessiner (pas de récursivité ici) la figure correspondant à l'étape 2 en utilisant la fonction `triangle(a)`.\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"import turtle as tt\n\ndef triangle(a):\n ...\n\ndef etape2(a) :\n ...\n\n\netape2(200)\ntt.done()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"2. En vous inspirant de la logique du code de la fonction précédente (en la \"rendant récursive\"), écrire une fonction `triangle_sierpinski(a, n)` récursive qui :\n\n - remplace les appels à triangle par des appels récursifs pour n>=1\n - trace un simple triangle lorsque n=0\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"import turtle as tt\n\n\ndef triangle_sierpinski(a, n) :\n ...\n \n\ntt.hideturtle() # on cache la tortue\ntt.speed(0) # tortue rapide\n\ntriangle_sierpinski( 200 , 7)\ntt.done()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### <h2 class=\"alert alert-info\">4. Décomposition d'un entier positif en somme d'au plus quatre carrés</h2>\n\nLe théorème des quatre carrés de Lagrange affirme que tout nombre entier positif `n` peut s'écrire comme la somme d'au plus quatre carrés.\n\nPar exemple, $1871 = 1 + 25 + 81 + 1764 = 1^2 + 5^2 + 9^2 + 42^2$.\n\nPour afficher une possibilité on peut donner l'algorithme suivant qui permet de décomposer un entier positif `n` en une somme d'au plus quatre carrés.\n"},{"metadata":{},"cell_type":"markdown","source":"<div style='background-color: #f7bd83;\n border-radius: 0.5em;\n padding: 1em;\n margin: 0em 2em 0em 2em'>\n\n<p><b>Algorithme de décomposition de l'entier positif <code>n</code> en une somme d'au plus quatre carrés</b></p>\n<p><b>Début</b></p>\n<p STYLE=\"padding:0 0 0 40px;\">Si <code>n</code> est le carré d'un entier alors</p>\n<p STYLE=\"padding:0 0 0 80px;\">Retourner un tableau contenant uniquement l'élément <code>n</code></p>\n <p STYLE=\"padding:0 0 0 40px;\">Sinon</p>\n <p STYLE=\"padding:0 0 0 80px;\"><code>liste_carres</code> ← tableau contenant la liste décroissante des nombres compris entre 1 et <code>n</code> qui sont des carrés d'entiers</p>\n<p STYLE=\"padding:0 0 0 80px;\">Pour chaque élément <code>carre</code> de <code>liste_carres</code> faire</p>\n<p STYLE=\"padding:0 0 0 120px;\"><code>decompo</code> ← liste renvoyé par <code>decomposition_carres(n - carre)</code> auquel on ajoute l'élément <code>carre</code> à la fin</p>\n<p STYLE=\"padding:0 0 0 120px;\">Si longueur(<code>decompo</code>) $\\leq$ 4 alors</p>\n<p STYLE=\"padding:0 0 0 160px;\">Retourner <code>decompo</code></p>\n <p><b>Fin</b></p>\n \n</div>"},{"metadata":{},"cell_type":"markdown","source":"**(1)** 💻 Définir une fonction `est_carre` qui prend en paramètre d'entrée un entier positif `n` et qui renvoie `True` si `n` est le carré d'un entier et `False` sinon."},{"metadata":{"trusted":true},"cell_type":"code","source":"def est_carre(n):\n if ...:\n return ...\n else:\n return ...","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Test\nnb = 9\nprint(nb, \"est-il un carre ? \", est_carre(nb))\nnb = 10\nprint(nb, \"est-il un carre ? \", est_carre(nb))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**(2)** 💻 Définir une fonction `liste_carres_entiers` qui prend en paramètre d'entrée un entier positif `n` et qui renvoie la liste décroissante des entiers compris entre 1 et `n` et qui sont des carrés d'entiers."},{"metadata":{"trusted":true},"cell_type":"code","source":"def liste_carres_entiers(n):\n L = ...\n for k in reversed(...):\n if ...:\n ...\n return L","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Test\nlistes_carres = liste_carres_entiers(100)\nprint(listes_carres) # doit afficher [100, 81, 64, 49, 36, 25, 16, 9, 4, 1]","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**(3)** 💻 Implémenter la fonction `decomposition_carres` qui prend en paramètre d'entrée un entier positif `n` et qui renvoie, sous forme de tableau de longueur inférieure ou égale à 4, une décomposition de `n` en somme de carrés d'entiers."},{"metadata":{"trusted":true},"cell_type":"code","source":"def decomposition_carres(n):\n ...","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Test\nnb = 1871\nprint(\"La décomposition de \",nb, \"est : \", decomposition_carres(nb))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**(4)** ✏️ Donner une décomposition en somme d'au plus quatre carrés pour les entiers $300$, $1789$, $2021$ et $12345$."},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**(5)** ✏️ Proposer une fonction non récursive `decomposition_carres2(n)` qui permet de calculer la décomposition et tester la fonction"},{"metadata":{"trusted":true},"cell_type":"code","source":"def decomposition_carres2(n):\n listes_carres = ...\n for ...:\n for ...:\n for ...:\n for ...:\n if ... :\n return ...","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Test\nnb = 1871\nprint(\"La décomposition de \",nb, \"est : \", decomposition_carres2(nb))","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3.8.1 64-bit ('python38': conda)","language":"python","name":"python38164bitpython38conda56991d5ad1414e06a4dcd344400cf456"}},"nbformat":4,"nbformat_minor":2} \ No newline at end of file +{"cells":[{"metadata":{},"cell_type":"markdown","source":"<h1 class=\"alert alert-success\">Complément sur la récursivité en programmation</h2>"},{"metadata":{},"cell_type":"markdown","source":"## <h2 class=\"alert alert-info\"> 1. Introduction à la récursivité</h2>\nUn algorithme récursif est un algorithme qui résout un problème en calculant des solutions d'instances plus petites du même problème. "},{"metadata":{},"cell_type":"markdown","source":"<h2 class=\"alert alert-success\"> Rappel : Algorithme pour implémenter une fonction récursive</h2>\n\n- Etape 1 - Définir le cas de base : Identifier le cas le plus simple pour lequel une solution est connue.\n\n- Etape 2 - Définir la récursion : Définir le problème en termes de plus petits sous-problèmes et appeler la fonction pour les résoudre.\n\n- Etape 3 - Définir la fin : S'assurer que la récursion va bien arriver au cas de base pour éviter d'avoir une boucle infinie."},{"metadata":{},"cell_type":"markdown","source":"<h2 class = \"alert alert-success\"> Structure d'un code récursif en python :</h2>"},{"metadata":{},"cell_type":"raw","source":"def fonction(n, ...):\n if n==0 :\n # code pour le cas de base\n else :\n # votre code où apparaîtra fonction(n-1,...)"},{"metadata":{},"cell_type":"markdown","source":"### <h2 class=\"alert alert-info\">2. Fractales : courbe de Koch Correction</h2>\n\nLa courbe de Koch est une fractale reposant sur la construction récursive suviante :\n1. Étape 1 : Tracer un segment de longueur a. \n\n\n\n2. Étape 2 : Diviser le segment en 3 parties de même longueur. Construire un triangle équilatéral ayant pour base le segment médian de la première étape, et en supprimer la base.\n\n\n3. Étape 3 : Reprendre l'étape 2 sur chacun des segments créés.\n\n\n4. Et ainsi de suite...\n"},{"metadata":{},"cell_type":"markdown","source":"On peut construire récursivement cette courbe. \n\nLa fonction de tracer prend deux paramètres en entrée :\n* la longeur $a$ du segment.\n* l'étape $n$ de \"profondeur\" de récursivité. \n\nPar exemple, à la profondeur $n=0$, on trace un simple segment : ceci constituera le cas de base et la condition d'arrêt des appels récursifs. À la profondeur $n=1$, le tracé donne la figure de l'étape 2."},{"metadata":{},"cell_type":"markdown","source":"<h2 class=\"alert alert-warning\">Courbe de Koch : fonction récursive.</h2>\n\nEn vous inspirant de la logique du code de la fonction précédente (en la \"rendant récursive\"), écrire une fonction koch(a, n) récursive qui :\n\n- prend comme paramètres un nombre entier a représentant la longueur du segment et un entier n égal au nombre de récursions souhaité.\n- construit la courbe de Koch en divisant récursivement chacun des segments\n\n*Rappel* : si n=0, le tracé est un simplement segment de longueur a."},{"metadata":{},"cell_type":"markdown","source":"<div class = \"alert alert-block alert-success\"> \n\n### Solution\n</div>"},{"metadata":{"trusted":false},"cell_type":"code","source":"import turtle as tt # import du module turtle\n\ntt.speed(10)\ntt.penup()\ntt.setposition(-300, 0) \ntt.pendown()\n\ndef koch(a, n):\n if n == 0:\n tt.forward(a)\n else:\n koch(a/3, n-1)\n tt.left(60)\n koch(a/3, n-1)\n tt.right(120)\n koch(a/3, n-1)\n tt.left(60)\n koch(a/3, n-1)\n\nkoch(360, 3)\n\ntt.done()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"<h2 class=\"alert alert-warning\">Flocon de Koch : fonction récursive</h2>\n\n\nPour obtenir le flocon de Koch:\n\n<figure> \n <img title='Koch snowflake' \n src=\"https://isquared.digital/assets/images/koch_snowflake.png\"\n width='600px' >\n <figcaption>Etapes 0, 1, 2, 3 et 4</figcaption>\n</figure>\n\nIl suffit d'écrire une fonction `floconkoch(a,n)` qui va itérer `koch(a,n)` avec la bonne rotation."},{"metadata":{"trusted":false},"cell_type":"code","source":"a = 180\n\ntt.speed(10)\ntt.penup()\ntt.setposition(-a/2, a/3) \ntt.pendown()\n\n\ndef floconkoch(a, n):\n for i in range(3):\n koch(a, n)\n tt.right(120)\n\n# test pour afficher l'étape 3\nflocon(a, 3)\n\ntt.penup()\ntt.home()\n\ntt.done()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### <h2 class=\"alert alert-info\">2. Fractales de Koch et perimètres </h2>\n\n1. Complétez ce code récursif pour donner le perimètre du Flocon de Koch à l'étape n.\n\n*Aidez vous de la figure ci-dessous pour comprendre l'évolution de l'aire entre deux itérations*\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"def perimetreKoch(a,n):\n if n==0 :\n # code pour le cas de base \n \n else :\n # votre code où apparaîtra fonction(n-1,...)\n \n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"# test pour a=50, n=3\nperimetreKoch(50,3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"# test pour a=50, n=100\nperimetreKoch(50,100)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Question:** Que peut-on déduire du périmètre du Flocon de Koch (lorsque n tend vers l'infini) ?\n\n**Réponse:** "},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"Pour calculer l'aire il est plus facile d'utiliser une boucle avec des variables qui comptes le nombres de triangles qu'on rajoute à chaque étape et la largeur de leur base.\n\n2. Complétez le code de la fonction pour donner l'aire du Flocon de Koch à l'étape n."},{"metadata":{"trusted":false},"cell_type":"code","source":"def aireKoch(a,n):\n A = ...\n l = ...\n c = ... # le nombre de carré\n for i in range(n):\n A = ...\n l = ...\n c = ...\n \n return A","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"# test pour a=50, n=3\naireKoch(50,3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"# test pour a=50, n=100\naireKoch(50,100)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Question:** Que peut-on déduire de l'aire du Flocon de Koch (lorsque n tend vers l'infini) ?\n\n**Réponse:** "},{"metadata":{"trusted":true},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"### <h2 class=\"alert alert-info\">3. une autre images fractale: le triangle de Sierpinski</h2>\n\nLa courbe de Koch est une fractale reposant sur la construction récursive suviante :\n\n\n\n1. Écrire une fonction `triangle(a)` qui permet de dessiner un triangle de longeur `a`, puis une fonction `etape2(a)` qui permet de dessiner (pas de récursivité ici) la figure correspondant à l'étape 2 en utilisant la fonction `triangle(a)`.\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"import turtle as tt\n\ndef triangle(a):\n ...\n\ndef etape2(a) :\n ...\n\n\netape2(200)\ntt.done()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"2. En vous inspirant de la logique du code de la fonction précédente (en la \"rendant récursive\"), écrire une fonction `triangle_sierpinski(a, n)` récursive qui :\n\n - remplace les appels à triangle par des appels récursifs pour n>=1\n - trace un simple triangle lorsque n=0\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"import turtle as tt\n\n\ndef triangle_sierpinski(a, n) :\n ...\n \n\ntt.hideturtle() # on cache la tortue\ntt.speed(0) # tortue rapide\n\ntriangle_sierpinski( 200 , 7)\ntt.done()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### <h2 class=\"alert alert-info\">3. une autre images fractale: les carrés imbriqués</h2>\n\nÉcrire une fonction python récursive produisant le type de figures suivantes :\n\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### <h2 class=\"alert alert-info\">4. Décomposition d'un entier positif en somme d'au plus quatre carrés</h2>\n\nLe théorème des quatre carrés de Lagrange affirme que tout nombre entier positif `n` peut s'écrire comme la somme d'au plus quatre carrés.\n\nPar exemple, $1871 = 1 + 25 + 81 + 1764 = 1^2 + 5^2 + 9^2 + 42^2$.\n\nPour afficher une possibilité on peut donner l'algorithme suivant qui permet de décomposer un entier positif `n` en une somme d'au plus quatre carrés.\n"},{"metadata":{},"cell_type":"markdown","source":"<div style='background-color: #f7bd83;\n border-radius: 0.5em;\n padding: 1em;\n margin: 0em 2em 0em 2em'>\n\n<p><b>Algorithme de décomposition de l'entier positif <code>n</code> en une somme d'au plus quatre carrés</b></p>\n<p><b>Début</b></p>\n<p STYLE=\"padding:0 0 0 40px;\">Si <code>n</code> est le carré d'un entier alors</p>\n<p STYLE=\"padding:0 0 0 80px;\">Retourner un tableau contenant uniquement l'élément <code>n</code></p>\n <p STYLE=\"padding:0 0 0 40px;\">Sinon</p>\n <p STYLE=\"padding:0 0 0 80px;\"><code>liste_carres</code> ← tableau contenant la liste décroissante des nombres compris entre 1 et <code>n</code> qui sont des carrés d'entiers</p>\n<p STYLE=\"padding:0 0 0 80px;\">Pour chaque élément <code>carre</code> de <code>liste_carres</code> faire</p>\n<p STYLE=\"padding:0 0 0 120px;\"><code>decompo</code> ← liste renvoyé par <code>decomposition_carres(n - carre)</code> auquel on ajoute l'élément <code>carre</code> à la fin</p>\n<p STYLE=\"padding:0 0 0 120px;\">Si longueur(<code>decompo</code>) $\\leq$ 4 alors</p>\n<p STYLE=\"padding:0 0 0 160px;\">Retourner <code>decompo</code></p>\n <p><b>Fin</b></p>\n \n</div>"},{"metadata":{},"cell_type":"markdown","source":"**(1)** 💻 Définir une fonction `est_carre` qui prend en paramètre d'entrée un entier positif `n` et qui renvoie `True` si `n` est le carré d'un entier et `False` sinon."},{"metadata":{"trusted":false},"cell_type":"code","source":"def est_carre(n):\n if ...:\n return ...\n else:\n return ...","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"# Test\nnb = 9\nprint(nb, \"est-il un carre ? \", est_carre(nb))\nnb = 10\nprint(nb, \"est-il un carre ? \", est_carre(nb))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**(2)** 💻 Définir une fonction `liste_carres_entiers` qui prend en paramètre d'entrée un entier positif `n` et qui renvoie la liste décroissante des entiers compris entre 1 et `n` et qui sont des carrés d'entiers."},{"metadata":{"trusted":false},"cell_type":"code","source":"def liste_carres_entiers(n):\n L = ...\n for k in reversed(...):\n if ...:\n ...\n return L","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"# Test\nlistes_carres = liste_carres_entiers(100)\nprint(listes_carres) # doit afficher [100, 81, 64, 49, 36, 25, 16, 9, 4, 1]","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**(3)** 💻 Implémenter la fonction `decomposition_carres` qui prend en paramètre d'entrée un entier positif `n` et qui renvoie, sous forme de tableau de longueur inférieure ou égale à 4, une décomposition de `n` en somme de carrés d'entiers."},{"metadata":{"trusted":false},"cell_type":"code","source":"def decomposition_carres(n):\n ...","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"# Test\nnb = 1871\nprint(\"La décomposition de \",nb, \"est : \", decomposition_carres(nb))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**(4)** ✏️ Donner une décomposition en somme d'au plus quatre carrés pour les entiers $300$, $1789$, $2021$ et $12345$."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**(5)** ✏️ Proposer une fonction non récursive `decomposition_carres2(n)` qui permet de calculer la décomposition et tester la fonction"},{"metadata":{"trusted":false},"cell_type":"code","source":"def decomposition_carres2(n):\n listes_carres = ...\n for ...:\n for ...:\n for ...:\n for ...:\n if ... :\n return ...","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"# Test\nnb = 1871\nprint(\"La décomposition de \",nb, \"est : \", decomposition_carres2(nb))","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3.8.1 64-bit ('python38': conda)","language":"python","name":"python38164bitpython38conda56991d5ad1414e06a4dcd344400cf456"}},"nbformat":4,"nbformat_minor":2} \ No newline at end of file -- GitLab