From b5b31ce52b2b8c47c003b12a9c1d9e9cd72d7982 Mon Sep 17 00:00:00 2001 From: "erwin.coumans" Date: Mon, 5 Mar 2012 21:47:05 +0000 Subject: [PATCH] added VoronoiFractureDemo, thanks to RBD fix in infinite recursion in quickSort, exclude the pivot in each sub partition disabled constraints don't merge simulation islands, and they don't disable collision between linked rigid bodies either. --- Bullet_User_Manual.pdf | Bin 1167990 -> 1168019 bytes Demos/CMakeLists.txt | 3 +- Demos/VoronoiFractureDemo/CMakeLists.txt | 87 +++ Demos/VoronoiFractureDemo/Makefile.am | 5 + Demos/VoronoiFractureDemo/Makefile.original | 49 ++ .../VoronoiFractureDemo.cpp | 655 ++++++++++++++++++ .../VoronoiFractureDemo/VoronoiFractureDemo.h | 97 +++ .../Win32VoronoiFractureDemo.cpp | 25 + Demos/VoronoiFractureDemo/main.cpp | 51 ++ Demos/premake4.lua | 3 +- UnitTests/BulletUnitTests/TestLinearMath.h | 41 ++ .../Dynamics/btDiscreteDynamicsWorld.cpp | 22 +- src/BulletDynamics/Dynamics/btRigidBody.cpp | 5 +- src/LinearMath/btAlignedObjectArray.h | 61 +- 14 files changed, 1066 insertions(+), 38 deletions(-) create mode 100644 Demos/VoronoiFractureDemo/CMakeLists.txt create mode 100644 Demos/VoronoiFractureDemo/Makefile.am create mode 100644 Demos/VoronoiFractureDemo/Makefile.original create mode 100644 Demos/VoronoiFractureDemo/VoronoiFractureDemo.cpp create mode 100644 Demos/VoronoiFractureDemo/VoronoiFractureDemo.h create mode 100644 Demos/VoronoiFractureDemo/Win32VoronoiFractureDemo.cpp create mode 100644 Demos/VoronoiFractureDemo/main.cpp diff --git a/Bullet_User_Manual.pdf b/Bullet_User_Manual.pdf index 0fd63fe5ba97d082729f5da0e1e1a07de53d521d..596241732184044bf31e290be8b03a9269cc5a97 100644 GIT binary patch delta 80077 zcmZ7cQ($Fn(*=sgw$-tnbj%gowrx8rPRCZqwrzCBwr!(h?!4cB&c)t0bulj<6vh}; z&wMPBNGg`7Ls3ejrUb)G$^kPS_2c$xj7)5DndpC@7bg5TB)aV7JAsnq-~yM88nPG5 zfj-?aC-^?IoH{JPkjyzI^C_G#1O_i20=XzJ0w zTH;)0(#NQsnvT@C&Jpl>ETr$)+dQ17Dk!`763bs#J}WpqYp{><&}bP|a9H1)-<+pX zyM^6`-Q7+~Qx*ei++NixK?0a&f{es&PhX`!=@C#0%m4XU853&0czSEmL(6#6}AUXTIIcXoK70_cJA8Dl)_` z@H(>f7)YnjBq~F>yVauEaZ7kLxRSv!0lLdyPRCneB4@Uq5<{!1v*fn@$hOpymxQSyAY>ahORTnGHr;|n}(9B>#D$9j|y z_b{_~Mdko1W31Z`a!=G2iTW>uw~db)~MZ`$Z)_)WM)8 z(;2Z%Zn+L2LR-;*_Ne51`&q|^Q0dHEjwDP9YhhJiV&|~3h%qt{hK>_IVG2kF zlS~0atuOvamoM(6_?JtV`%9&NHw? zPq=a{ete9m3I^wM+m8KKnQg|I0HHMsqB>*>(la&WJ8=sWU>qEzE@c-ug)4p5T^K{pF!|GJEf zZkp_auT*S?dCR4nnp^v&hefRyp`5{|xYVZp8!-jTmFFM56tdJ=BeG^-fC=X&l7{dz#_vGoA0X`UIuFK?SplJz-5YJzjn~j;TlWOfY6oY z*+Icc28N+t0vS~;sxv6zlPmDqqFDh}dMTvSka+oH)XKkk?^AEv3eh%5EPbym89lg6 zDB4siFPS}Pb$4SPF>m(H{PUldv4Kkk9UF|bSf#=~M}2D_-cD;I`H>F~1^lb4wUGYZ zy~^BnREm{2FGVe>BIrnrXN&dX78I824pg~lZmV*yx$uiT4$@H6j$dv(@X2ZZJQjSX zwdivSGiCRjQZ#mLbJMtV{fLvbEp;CGNQU?k5M}G`S(EP5tgO)fn(Jay2f%QaUE2<2 z)ua}SSmh26w#uYUEF7@wrDfh@tSD+ctFekBH-@T7TTC3QsIEHImy#49qJ4!Sh)e!j zi7G8ThGjA1bXk+yp<9j;?rMsUq>?}ZKh6d{AxUR&NLBw>fu-a~jgx}dYDpPcY0oAO zg;wFW8^~_+gex+kd^-e;fllDkg{>#%Q9W9PGpj?*Ljlv%lyS*Ba*dplHe~gW4^WM8?`` z3M^GMiX&LuHpC{69S|O&v|LB&f&PN6ilzT7$dDxzMo>ltB&d5_Sz#T6v;*Ni zA?;aVF$|4w!EGa6Yfv%za>?fbWo#x;tXMKzHw~OqzgXkLwiJbwU&2xSEqY&aD`|>G zPHO3kCfD7ggyu9P?N}OiV1yQEQtr{#=M23>*%uoZrE<)^MH+Rlnxu)RCP7^^UW3TX zC7xezCjdA5c`WP&gfj~`qe%v>C{=_i%MnH`V+%cz+gB=+Q~Z^u1m`BDblrxr7oGB# zLQCjl4X)!fjaBGZu_yF3Gbwno@Z&_?c-2UHU8W}hiU`$Yo&YtYW`Xj=k1`Pr&3A=6 zUK^b80zq=ka6lA_ybyv>6Re2MX++QXR-9ts1tMAwe-QB)=prs{sI~j9U9P0}b%4kr zLC`s{T2oEytbfMSlY_luiWD%Vq^3tYx;D({4?v+_sUMtP;n>~_e-upn;eVS1KE~wF z3V0brCZd`A!Slp-NA3(ljhD;6K@PH{32Q&;wji~)bxk>+;<_Lu4pZu}Fx$e!6rk7H zyll9o_2hR8Tpu&5??*$(v{m;Q1R9|ou39|9>3OY(PE&OUY9=2R1$)h6w0FLZV znm5Nd7YmCGv?Gj2p5v`?1kWo7&DgUBv^SNh(q!@}RtuB8;w+%XW%}BJNdA~YcO>NG zh6Q;b*g1l$6PNjp(4NtvX|>T}ly7bLfbIlv@7Tss#RP2a5Di~831+A{Ms)pm zz)+eH+%=VsAP zp&+8m3fT16IM)MyDuaznb1>^cza-mFeS*qr3gn?_8k3hkPntd8PdF1MB6CDxn9%Z8 zg4zSKSimMY<~X3uE`sY|-*Vv(g?YI1RP7wHN5G0P&$0**JQ;RBG*`P+!3OXkwX?p zoJxW0>Otdjs?6@(A`~rdq;w^jgGh{_+B5j*(cSg4<<^+?ill-dz?X8T$`l#b%l=9Y zPQZ3tTYVK5uupAr?z;3mO=8wIOndh-&+o6EAKb*)DY>r+NAObd)d1)OMJ8LZq82cZ z&Gu~UC+%iI@I8*IcSJJQ@8AO&atg&J#|Uy2HkOSdh$Tx{Mmn1Qg>;X7${D*M+xe{&vzR7G=Mwz`L#k5%ko}GN0XEx zP${=BbQ9lua1oA7^09DQDSuc}jybhVXQIUp(k?U5wK{}gG4CrwaSUhWF%w*Ryv0@& zi&`au)z8l=b!POao;<+@F#AludxTf_4G&uFP~w#h)?lgkHW>nZ9s1P5aln2R$L%C5 z*^*cX73Q)+D+7r+B*}GKD`=r_^wC`tLZZ%fj|U$s{c#X*X9dkt#+LaF5A`$&?%&JW z?v?!bUbZE$VGb!;&m>A<0m1%EM+W{G8Rj2~X}gesu2Tfb>}BXYnbUM;Dv4_rADW!i zntON@N#*3$BVW%3CQ%vC=ov-i977hPa(}AYcc=wdQ)jsh+3M?Oe)5@Pb0VlTe1tVK zw5m{_a_VTvp$P z4dSkr6x(1|i3BBxK6YI>1$M}xejISeTj>ILsb2I^w9=pH1P<^T2Jjn-341cvQ4J?HwQ|I z0eAhcSWnp1esIDe2@K|VkbZ+6z|rvvcgnFPjRzp6+T|F+5SYO zyV)je;l!&LnkPY8S7g@$V>|PuON|{k33^CY$DQX3!2z8d*Ef`(=uOvV*Hu6qvGMJv z2lYfQL{6{&)zX-LKmdT#^J;1;iZhq!>b>R~9++GEdts~peW83Z|sIbJBi^v>?tdCK>LjeDsAm> z|HFiupfG@>f$a$<{mnK8Af9ZaZpfVT#fdLpN63tM?s2`Hqyvw>^uL^KxEiY%2ZBM0 zYc771+d#6~xAL=t$3KV@DUJ|!Ac~`oSb&HeqJraO|L^d;&9_MC#Y=^>pNLp^2^X9$ zs`V?dq4>g}g$GLPwBLjl%Sl~g1$cl_Ig^q@N4M2N9h=_xDV9L&ndSyXSC<< z8}@rA%~n3`1@OfSL|cT#|9t{eSK>IEa;wX-oSu$whcE9>bcv8=@oIUu*E@$rc7qJU zPuxCT>P~_rTKHspVzTtW`{wyTVpbo~;$}>F%*zMKQ>8f$ozvO8ulBtQ>A0hSyJCq(K>J*wZdsFh z!O!VJ2~xVi0;TF?N@z~H@0ciCrlq8SNcc9Lp&oFVPv^&Q1RXWbo&dgO1wI3~szc$o zw6JSJQ0$Ju3YTsS+~UN-?+|SP5i@Db-#3T!8)u-R*opIG;ZkTBY8+zeDzur zaGCrVr%MGIL83_8Hb8GEbqBfT4UOezJi3wtg8HfVT;`1MA0h{vHix7Oy2+DY_?@y2UH^ZrmQecJn&1Nw$(2%q*<^| z9@uwh5B)gT2qtqS{5ZMn?{Ydu)r)y75^1Shu34!Kzh(zj?f_B66C{&CSD_tjl>{!m zUi=HqD~|^TmPkxm+M9WwPf8(6=o=0brx52G|3g_L@5LpRbC@Uh8o$fTH-8U6?v1P$ z^FqdFA=7V`=4xR~G#yelM>kjE+eHYVy%&X@3%Rzm$ARX@C1p|yO?d;L-$c&UD^FV~ zG8H<75zOVe&wDHn!Y`;F@P zGC?g&z0MZN->FC(+A6bJQsO_5&?qK@PG*`<03TaE9RWRrcN5K@%PR1Q83mS$V&o3+ z2dQi@3;b{4;o)lH?pzbDogFM>t{W}mGQ(Jg36>4XzJ^fzV9=>h=iMO!MS+cU@Ud`w z7eKqC2^@_ag!gv3sHEsA4FQGlYgSw&eu+g)DwvB540Z5Z$P*a#yojO-XfjAJI)Fsb z6L@z=$m#D-NDFJIeD?sPqR)A}I)bXWvA+VWGh~x+iK=e}wYQ$ZS5~KGKIDp&H|LA$ z$ZoUMO$y>jvWbG(+}Jym^e~8$b|URD_Jf!U_fvw+n+47_1ANjDQ;<@MAorPv(cHkO zb#dsVa;Zq$jQo~7X_)D1YMTPUS-Wr_9TCMqYL~EO;urTG?u>x2;n*ieX~$I8#IcM9 zJ6**bqWsPS3|5(!A?x3Dka#ZNHVJn4Z9oqd{?8yDZBP1Xa}Hiz3XS~|Rn2{rU7SN5 zaQyT7hV350T%`>rtyYKQnD%8opEmfxl{^$9)!D}r+&^77QCFY=Y4_7qTX@b2|4|TK z`ZrRJD3CiZIWfL6860kG#+4Kq18Uz((yC^LcVwQ0R7o}9J2K20j{g_(xNvHrpInPK zGwdD%LZX49#_}} zKjf9VhJa)R40QMC^F4(nX}q`bO_O=O8^GCcp>MK%pAF~E`=8mE4M#0vOFQBF*`5ru zrP3zh7=hpY9Zo`mF}Ur@iXU#*>jL_)PQ!;#3hy86m6yR|QrDsBb!W0{Yg6mjF1tH$hI4lNM1ZxNC%zMy z_O+bO0PgO7Vd-(6Y`UDPaZ$^h0VOR3LSHg+PL63j21s+rW3%OexRLW113($eEY4RS z;n=^lsG;0ysJZtUs@mwc0be;py5GcKQ<8K&RT_WliOTV^x6Wn45(=TvJAlD5nXreO zz1(?SZ=BG{9$(`5iONK>>_C+>^n7=?Cz$f%p*5|-;=YZT*Z7tNf*bGC(SzbHeNd?3 zb20y!+^5;nS0wqW!*sN+o|r2+bxPAov8n~a%{_pp#dOdw@y1< zwj-M*E(k??2`v*fX0$}{c&ySkgPh7&BO+;kkjt(QHv#uC4kc3w^scSNd}Oj*s`9Bk zg&$%gf-94EYTmHz8rL{UQmTKZ%sj-JDBDdIsf-gvUkVe*vhg}zX1_xCtK*O_hJGps z9+BAJS15zI-h#At#N1EoXbt%>jd?2FPtu~5hes94SJuQ+&^SmICN26*L!c&MrA=)g zlFP0QHxYRwL+!Nz{A&f;P$Qw#tG)HICbjgsHh}ln0pkzyr`O&9nLVz*7c3p}@lPEs znX5I-U5p1u%{M{p2#^TH-JLy9H2PEpLya{C^ifxohIodsu; zCGgrH#u;dLHZBjgiI}}Z`ujF(pCsw05%4)WafD+H7&HG@L%uBO1d2U4vfoZXI3ia4ZQ%Ml<6YWzxzy3u z-^$+bf7`=d$k^l{cld1785m}aD{T1#;jt*nC=@^6?vIp8eL-?>Jl7C?Z;|}*33Jvt z>yk}!&S}homvDdBW{EJ^9+TSrJjoc_!a#i#%oKrpbo*9h>Wn-|kYm4)Hd&y*Z(Ptg zQ5Y{D@=CKoM*SD@p;25WP~@NDFPQL)g9p@|V>OC3X|`h~`3ILbhmQfi+GH=_!=CC| z>*n~Fe$q#4P+aIU=ohYlpBC)DJ2770;M~Zw!E)~_;(WJ{eR%dylZ(<#7tw_)2D|eP ziS!}Wf<$*mic?Z;{c_#Ig&(Rytu($HxmB&8@@e-{CKTw=@WK;d^s zae6jT_$^dD*`Sl*Fg^&|6`#PYhn_VW(O5}^=^1D zwGB(-f@L{X%#N!*dEF=Iz#y; zMxi|3y7`PtK^V?|BDt(Z}OWeb{@K0OhuZ>Gg2qcCEG|n*|P- z){S;dU0G8joopB;CUIO#8;tL!k#&jfXVT~KSUdaVgb6TyPFSHfk>)<43hWyN^N-Cj zzsD4TS~|~{q(*$MpOe;64V+v_PYORfH;|P1xX~s#TH>5k$=6dVm1^`dH~G7=*}j7C zVP7}Fl^hxesuBCC_u2bzst~>l0~-W+66SkEc!)IltvQhY&#VMXqle40BymM}gJ8s> z0jazqtC=^NK>i0041fhZ-FSicpII(p(+_kT2iq69#4d0zNefwo_H zm7YTBQ1Zd#b}p(Ym5Q%cUoOQ4#w*nDsv3p&76Ef^;d9er((^%6{Bc-rqznNAw^m9n z^I-qyX%HKmm=3QvEWw~3?4k@nD!g5G4!o9eTjL;mJCHVurb06O(eDlzfAqVTkZxF) zOobe?BOeDn7e?CWok>#6Gs~GxW!561#-Z*-o%_WHi+W%*;{#;dOEBH9PDpaw z=p1>c2fJnyn+kk26R!9IH79940-`N34cEM2z zN!`$Qe63)F)#B%NDS?Qbxc6RZdDT;nji9T1E=W>f`*+(kTn7P8VmttBu*TN$@pz!|F3AqNtn(- zKrXib&nueNy8SvAiXUe@aHkNW%Ia30F%qo3X|M&R1<=)rEJU>NS89W&WjR6VKIxIk zBPAAN%XM6c*CTHP%N6rSHti$MoWtXlWZVa%dq;NXv zZPi$LIyI`*VRUtn8_12Hiy(f@?PTif!D?6(^c5{B(@s8QRl$HO7&H=2Cv%l64~5zO zq!HbmMkEilJSf7AA*Q$Q6dJxQ;YpAZjcIUe8yxO+y2F_~xFAz2J>T_&E}t`&&uIR9 zW9}oCcBqJXo*1#$^DaC@qyTjd&{FlRq(l$H!$0%Vix07V14@aj_)8{tb@EXahI~w= zx^??rup05fRg$Oh$&iefH#A^=)FuyhKEx%K4`IQxA#)oDWZs}6{_OwxbwXo?ZC<{> z;;xK%RK`|+p~Y*EC(LZbl^L>MqzIp+S`5NoO7CLJP<~W@ajci?xP#`nS39yeNad`> zijQLij+P|84g6C`UDq_GIx-zm1E^dUZFgIMA*EmRrsI_z<>{fy{OcC!j5$6QQdLGf zrbk#)#??%(V4y@(!Rtt8jqx(uKy)C8#^p-}&PK%5TM&lsDJ3P5y|$H}i%_G#t0j?T zT^EzE5Vmp|1CkjnKz4TcLWEru8I-jO>#VMflxvY(0BnJUwPSm;0o~%H6LaFsELh%5 ztssueMAJj?Wd0-b%MB0?&84Rxghzm~hXJ?evy(>oqp3;68R}07RSd2;9pPAFq&kA| z_@tYV!AqJmGYu#y;g=+JKbu<#5%v0n1+pSeK-LAMG_07Ot-r%-_k@tRM&;<<>g`J4 zLLRXe4G=#N(TJ697nNc=+}FvpXMY4?Ls)#Os;GogVIEsEVG#M0W@+U%*Lg$-TO%}} zGaX4^(-9u_0@lAbALlkpv;WU4C}GWRLy&5L`yg=xFYwFY*)E=^kLO(CMmKZfJLzp8 z(GljmS^|&hd;|WlL5gJG`AB}GL<&;jh9HXK1F^3D?;+JC>QVs#bEp-&h(aN8oYVTo_?$-G!?uM_)s*t`GS$yjxjdN-nUsz zg{&;e3q5n`y^4m9r4V~9Wv=?$nXo&RTpW_U9Z?k6sO^CW3M!vu=_!q?Gl^I7&+t!O zTxsHZjW*s{VrJ(TcxEMi&VP`InY7~>_#YyQq%lT-!XzbobpY9Z{=XqHTYKGkoeRzH z`^N&%xVdOVRL-C*>Ef|8@|0E2eLWu=#u~3Y8ttPha%-_M!b_q{1A9)uSO}t!thKeN zG(;!9AGaUg#DVQ*GP2fIyvH@Ag!4MxM!(#(*Fv;D$f6F2+wx3ilkPQJ9_ za>2QD@6T32xk)T0g+5(tJHx(N17D@is_BcB^)1tOy9I=~LxpG#N1L45F$#;8{N~1N z_+LWyKmmbQ5Xyp#Y$sXEiliPl53&ZJgAuhxaeKxu@tPs}Q*I+5I324^ ztw9u+LS-OSM*3e=O*cy#1?37zRM?n(`^(dwW*T6ld+mm*Qq4xQ^|UssSaRu~gUDa= zA&89{qLD+O?Wl{9e65Sf=RnGvTPkkhC!ssK3hu!0WLc|<4x*!B2~OxU`T%+LmZd~W zztu}*{#8@w80A_<0fWSmK#n0G>@r)-4__Go{a(PmG>{E+^O`JIwCp#@6dg4YH( zonKPA2^v7`PFi0$X(i=pwaBZnrUV~6UJiCpi9tlW4f;11I-3-7`YREFJqF82-~2CD zPjNIzTpG}F^3nwI^S$SjG@=nS!V?;dYTp? zE0R_(rvE^mVEBwbHpb)xhzwp-9Lol(hxl)rOz}3&9==*8?x@9v{b0=*fqQM~5JxwD zxri+$$?)g+2pnHaScwil2K!cRe_R{ipLG}I-H!qH-Hx>Y2`48cBylawve`m3@?pi; z-HJHAE3stE0d}Bvz);Bu{=y8Ni||qy>O`Nb!0*I2xFy+E!-&mLpcWe>_^|ao2o`&t zF`P_`DV$A_CSM` z2hrIe-Usi-i}Dsaki0zg7Zwiqemjrmz3g*PCWtSq2N4^!n0K+GZF6k0-6t>M#0u#_U z0j99bcoc!`mUQ=e7^epx=laur$Rf~@8{x>Bt~mX3$#)u1z?hy`r^q|->A|@4WI;6W zcf~_ER*#?NYe%Ot>R(7icCdJL)+%_3>(bSBDefzQW)Ftm5v?T`tU7)U=jW=fp6#&M za8LPpsx*&JyZVRv0g;H6PDLP;7B0*{dG&u)fz_Eme*a(?z!~uySqPP89-C7aYyVpg zvB|S-$b9jX0d!hmf4zX$&)!{h*r~#ITw{1=7u*>5V?0__ZiBY*6MB-*RWi4*a$4L0A!WR~e{Q_y;#X=W7*YtwLl^g+i~P01MJGt_5zv&Tkpe`@1_ zHDuHE!R^yP@1daGq|a{G*S6G9hF93v`4G@k!jMkZS2g5!Xd1dpi)|Kc1f&h>0(g?Z zLkl0;GhUE#x9L(K*j)IGH-FuLMlH-ZyP5h=0MCZ*jkj7ZI!3SLP%}~yLs8~Vg9S>^ zEA%L8hY(cfkqvy3VSYfHDYvhA(`ayp9bdzB!`evtx@MHJq1J@01&q9x!}tt` zn+j(XDoJd>deOSS=pSts>7o2|(!$>TfZTxp9xHi*J{HVt96=X*&WgQOaR>!#w^AGO z0kb&=c}`4l2e2xOql|q-LksVHV~zWdd7W{UcPkxB$oQ5#RB__#>D`B&FKY;SC;qnE zt7paII5~IifpWPG zd}(z==WBVqDaidD%o4CMou(Y2CoLtcvV_S`o>Eq}o_?cPVurlT>rUK@V$q^#vo)+!CzLOb|@@MQs zrEO+{%s3rd5vCWEl&QSwF@A_65FHgi>t8#6vnThqrxENR0)K8sYf>lpd{nI`<=r7X z#K^>2nnm`-BU>9X{9yq$AfC0~Klc9d@R)Ilgws=EoO*Z?(VN9CX4|gXXwBD65hg=zt1*B8wmE_sn(MC_ZbdyRh)yNeKQv;fCKa0H&|Wh z#8zHl$aXqv+iLd{5xD z_r}uz0?Qv%-j$P)cuj{LM3WGt*Up*?B=^Rl4rT$l+hTd9> z%|$`M_Um!NO!J3%Q|DeFsP;+~VXIrla+CIS&=e+gb|nr1;~aa@+cCAs8OfF5{otp) z1IQq8VmZY2n5ZhH(zV;3j*zvZ^_{5ei+%LR7%#fLmAw5;@qTa6onKzr zGyaPZS#w;S8w;es7!OTqD6V%Dl|!S%f#TnpqvB#`%CqNS;tI=3CoJHae8zP^5 zUFBju`~lwEPa8;W-*P5hnodp(%!We|&yqnSzJ2K#(T8S){zg0yJ2iOi*^0eZH-( zmq;~s`c4T<*HnZHT4AL%yWcp)PU_c4)M3wV! zE7P~?-I5%_&?GQH^G)>H5()E$-*D{h*`K2|{(O8~&{Of9u~hk_goA!10tzd!Eeu~u zBf#QH8s0C@F>~G!H)VFY=9^I)u1FZRWoHbL`UA=(yZJAkoBo_Y=`#tQpb{R!z$I%I>AW{&_sy7U<6lTS}B?l7p zX(O1TVkaL+x3-DLQyPqzKg#oVz-tDY&TN9x`KA7ir-+w-4>FwCcLdzL5i2?b19Az7 ztlE}&U}P~MsCMg-c2+|`*#dxlQL%AiLDyS^KA!R5g!eL7rtyw6j}xa33qiyvc@+|% z*vbGE@QO;%xu%0a^UC*|ohM);1<>^*rh2V@)F(g=OtnEW%rFz7Nt#?Ls5jAj``yPj zNz?xK$;^%D1u>dab3SN~NRzE`<`)k{u>qVkkFIfg0IIv;7ftR^((x&(u$d6bpgiF? ztHgpW4r$rnR**bzkURrKJAx@O92^<~q!YCk$1+ z!M;B3mz?>pJ~9i95u67mYao=}CA--Qiq}YP|mdvyEQH+Lay$C4JF34kO zwj;(D7+>A-fVU0t1mQVB@!Uo~eLxDvXJDM^HPcRI_M#gPW7Rz;W7886bb~I1{9<{Vl6t zpbUHX_$$9IVckDSe@{SrvS;i4l-jRuZ|jhw(RisV3Ys5xKS>9!YU6Y7EJML;E`-+& z091FqcAgL%jbk>C$+dE)|OAh5apyF zt~tT}!4Ehym0WO|p+N9Dg_~2(=Qqd4U50s7OZ|W~*k=hWVceUe%4J%^CL`p5hPp@l5<3je^&q`>r++vvr_VL^F^!|}UH;dc#} z7HlEgxGkPt5mP}?TA^H7nE?L~eZmfD4fBaFJ>kcVn?W?nX@N(QUXP~)-X93tP8nJc zAi2MdmEMy`LxkJHeppkHf)TiD{@VHXKE#x2*;-S#~vA?!)FH@hWI-;aW6Rx3i>h79|>EgsxFI#0(j^0M~IcepzgT1q&=kyn@mG`?AMxs^?FDP(3$n;*BCiLjib zhEPj=ANEqC9|KA#F);NqTy9(M2o;@R#UJ-=Z4lk#8bmyP{{~W(-wKr>>xzFg-YH1O zg~R20qWICN-t%1Vjzot=3dr53GC-*^Sg#;JU%UZP5zrWZj<2rbffF}OEsTqus7~Y9 zcm+FQV+8htXhp*6w;@UjkYW{|CkIvE-MX*I2xTC~ob-5`yU5xli{**c7j0D2>`(=J zQeKErj?3Z5-KuUDJ+A}O3Sn3mpw?X_PcpNq2Ig*Tc=ju!APaP1@uaKl!La3J6+M-g zF#iCR?f%$`h7z6Ged;JPK;s> zdb5nk6^tU!#C!6HiBEr~H^>F7AGE^kTlFSkXQ#kx#3cTj0>^!!xQy)Lks1z@@R@zN zBhj<3RAyYTMQxXu>M_`K_vm%yWhV}YDt-cPA~ZR07&y4n>H)A4WR?AOjGp!LTT2*j>4%CM$L1CQ1axYw@;ydX>Uq<&)k2r{K^%ZVb?j?OFKV^OOVF_4ZG#UPFLmgh^ zG<%N6g1RRk`Pkrt&xID$e&#I#?!Gi?LpWu3+Go2J72$h^!)G?gd=@tlwnsqcIS^{w9-5pP^02kCH1f>zKH~Q_ zAOqv3+RA7vh;=t9qu&LGrf34{kXeC95hmWY@JohS!%DQRT`0D7pzEcCCQA*`{k^zwWu&V&&gg0ptsPJ zDHzc7)>Ga@G3d$QMjnw^WN=*n?Ns!?rR>xlDe9$|1H7zduLtLoH(0{8MGy z?Hw=s{OoZVLR;-g&@B#Eqbd(-8D=e6Ox{v+*|qH8-5(r7cAc<`XQK!dv^yU@@ftll zx-jVgSuDg^sI{N!h|8O~#+<)f@Jj}xnum-h!b{zS5YFT>ujI31W;87KYbj$Em?v#4 zP#ZpNQC+|tziHK0=BD=>J7o_PHWHrcMxan9}n74N26BKeA>f;xpHid9aQs6VCMcb&b845Gdfj=X=z?y#dE`+Ej zOKHn&5mK?RfB~LXd&ONK_Hp@+*<{XnB>oF0h#+Rp)0K{6``6rmX|!grZqw`zNOA`q zwVqL&_qj%?kyI^1;Z%ecb&38NEoXOJrN1mEFTNFz+khd+p-NC^#5TAJLUrK*r#CW1 zLWH$@kO8OLh6~hPh}+>{bQ-OH>ng)}1rv_%b!K&k2Zf*)i_jU6tTuOF=4v)T{d4mi zB$yDT%UFnRki3(?&8w1_h3NNN&FMojp6ht0bK<}x^39)FGu7QGy?TMYiAI0c+|%Q4 zkUNJ}cx;GL4L2Mah|-dr5UASd)v4Ggz|+cX#jrp<#SPedC&nreI!nV?S^s;*OG`TG zy;PhuE%&^H5N`s91JWw^F!bWz!K@BkL>6dgyeD6&!t7E;Tvt&REJt3%uka$SJ`BPp z@SvF18KQPpD-y&UIDZP4`o@Z|P6$8gTq>8D`>U?#FOcc<54n+F#qZW;VQ-N%KJ zN^n|#T+zah7?5R>9(KADkF7sSd`sI1mOX#E;GT9m1_Wd-VOhnS_ay#KZy9m(1&J~D zl#K*-h1@X`bn71;^rSDZn55Oy2}LpQB%TShQcwWLxyP>*9e5mC5Z7qbYOD%Rpc?Rg z8P#U0thv=$jqRJ)J~gcS*ZXw^$?=WW^o`lKdVTqZud{a}X44z6)BG^qfE&W9Eo;-* zC-le+n-v=ADoMIi<8Fm+T$3dnc!FX5=bKZQd3Qt{(I`nJ!qc>QyeMdb4dM0^sqk{N z1=R;Q9f22^(bBR>*6nibb>Z*SASjVqFT8Lb#{>4BcpJ_fg2eGPJ#voNyX=K5QHX4W zV3}ihl2H0|%1-XE%7Oa++7!%yw+dd;%wMR=K+<>0!9UOVo2I_P6#ssKK<1pAL@bK= zff5v2?y0hoPB}0Oh7Ph8C7!An%Md@`HRmmw9A{|$K!%4fNq ze}93|G=54jwIs?k*20qD#?n zsQw5&>jecLSaG5Bol*gGlJShOjZ8^aQ4Ws!2hNxY95r8d&AHMcr)`UZ3U2nNkhg^e z!(@N$q~&%4pN%F7J|uV~W$t4K7kwPqxa*WKOh0$`T*JBXGYqFg;M6Zr6W4clev^A= zP&o+?;;eUcXo37#*%#V_F~i5Gxu!&MZ{wJXBHg~nUEUCLjM2`a7?EaEC&~wAAk{q8 z%BGJ+RkuP@z5wAlx6<2lQ{s^HdSIe>teri^P>|dNHvY!O-IBsK2fSDY-3tlH2<_>G zB#1g4Z6ypza@0Rvy9_8v&lGh9ho366nG7t+dXoI@np^LQA}O8B2pUV`8)O5TJfMGK zSw16zI}lOy_G^N5n>LA9$ituS?(8P?RCB}ab8bXSm<)KVU#{N`EZSyb~X4p&m z_=9}qkG7bl(dcZVZnt_YIBMKr`J^0_sp`Q+b2)G8WA)6|NQrP=u9GXc2zT}<8g|^zucXB;WC6v2a!cl3wLdFG_R5`siy`WChlRp zKRf5{Xe$18L9&71@qhH6<>**a`7FttoRZTG$#b?WKs)-q=H_P)FMeQh%VKYV+= zU;f>l0gpbMeH#70&eZQm}z6xJ*xNV`Cn<;^V{7T zmmPijOk7!arCuUa@aw+Bi#xD+`TWw|k2Ab&m$u{q-XRW*dR=TppXg)T1^9Rzu5e5V z!?*>`Kbh$kKEO+C9%1mVkV(^(-gV=|^+b+SLhp+w@TR?u9XR7-WD5GWSEp@pN z0-R->NU)LU{pJ3AF&$@BfFd=6Y|q}?^|5?Z>XPIm`3z8?hupeV12f_wfJNy|T0v6{ zCv4_ssIt=4|Ernn$MRrn^^}vH)w&|){9%#lKHIVK?tT08(}YUAeTlIFH+BzIWxS1p zK8qL0clk)`W?c+!k_r>*{=Jv&{y6Rk7g#6Ng@QH8!AAYuK%MWt;s11z25!qqR%LpX z{7(9GycD~&F*%;ga<1U;`PyOyofx~a5F629h+Tc59J;=3Ut`ahxqLqU4?6;8{;yyE ztifRPFGv%Znw8v4n2-0+P>>1MV<>W87tqJO+)1xg3HvLJiC>(;w|_$_+Yc{C?tm=} zQSo8p(^vh7%!e@kgl%#3ne|L5c$F?5k4TC&L{s~#746!&NyI+LL)}3*4kw(W32rV@ zAC;GAU4Cx__?uIp`@<-|Ck768Uzh1CetQ7c@Xj|IZnTs5?4S*Gx9DpLVL}e|8o4=h zpr)z_hi;_aFa9__Je0~cb`K5x<^`@DdNM@L_xFC1~)s^Z;dhCsD*rVBXY zWYM%m&PHaoklEh~HmmVw^E(Dp61ip)AAojI6BmpHQ$117kD_5M~p77Lbul%X8X zJR;i=%WmWqtXl01OhG}^aDb16_tykUL;a+D^2Q_>FQp^@D6|c9AEP-HE_$W_cj{WV z)X{7U6-PK6R2WPKufYGq)j3565_Q`;wr$(CZQE8y9kVOw*k;GJt&Z(KI1bz$28T22~dLsWMc8 zezH(fj=EWy$Equk(34r|0!I&A?uKaB@22C0mNwd1ujRwh2FK(AmA^IC&y^Uam2pBh z7Gl36w{H);zHhv}KV428?U^ulS9i2$rI^Z;^#Q0X@SE zohGQZIC<7T5?LpdPPgO3j2Jt6K35ZIJ2v~QY@bh__Rl;JHCw=XCu;?)J~Gm=Pv_>b zmz~xBumo{eS`BF3OXmRI{MYp{nf6=#7Wh>lLD&QC3w6As8`_Frj={Ox=)lySJ~ef< zD!RkdVJ9o2{vJ9W4v3W85Me-NgcdLd~0iNE;s&Y6+GBqy-Ca` zkIe1WRvjY`EtD+QtbwkB;TMCG;RM%R&n>L*(2EL05jEv=7szwF&W;r}KYsYX-V3t0 zKZswPK2ASEmKA&HE*kX$TN@W- zg4|i5t|XO+{5>nbI|0sPu|K(ZEBt~nNbnh{;wn_j=?XLIpT}3Shz=huS|CoxxP3D+ zEa)a;^b=w&8>aKeQO-yS_AfvbQo z#LTa*inuC(-+^p; ztZTLtsOsK&pvJ4*t#h)7(#PP|aTTs?5WY<(wMZyr5WlG7XBSQp?2mMk?I^Y#{M+!O z^$=tDHl3I3FMzCR(u>0`j+;Pq&Z(B9Aa;<}BrUnoZz_dNYc1Z%f_cqPoXpV&sq^8{ zzFNgKGuGl`!ugtTu*E<3%L2UWIxoa(H(YwwiOQ)Gd6fK3@a?jw@Ta~@aC59Tzj;a2 zltoiA>1Pi2Gr@9J*0;%B(Zq(fU4!#D?zDKM<=HOnWq?Il=VhyAw3F=JvlLdhw}GDG zHYiGShF;$>tJBgN%GC&5^yecq-qf|TPzIaTCCzR;|Mgo>(y;OptKQcq^tngcdhh#Kpx>Id40u;Q(#Am3OCZ)Grlt)XHh7rCB>pP@%FBSJ=P~sQk#{CW~`P z6Ien95WuOqYb9R;7Ecwk>{XYYD;9d`bVyKaOu*<;pqD-}BH&*2f@pKjXAWZ<^mWLm zUibw>B8>c@0vp)J5eULtKVY<_9OQC~fZJOk)2SZQdEMQx@thGgY@)V|${{dYK4PT=P&GK6~gA za^M0!itg8JmKP25R+W>J6BqaS^VjD)ab?si!<#AmfNo8|2_seij`xg1n!?^0+UGrJ zt6)q9QLF+oHdK1YvL9Ii{#7(XnDEpzU#4p->~2w^v6*9>8QGnE+}@ah_Z>0E`pm?o z$Ky>;`^qf&aJrT2?PsTTY*#Fb&0e^DJphZ8K5dUCT-D?Ibd~$>LEOAj;qYnWa=(zz z+KhKboW8kl>7#Qc5^Ojqldgv`q5S!zj2OrguyRFm^xM&*?zwwTv-e2wR0IlwRV7?P z8BK(ZhKy6qdTC@GxcRy^pHVcQfqg>weT0h|xP{riVG7|5opY8Ck6bc;iQ{enm=YQO zfF?tp4*t!4!d8^M7hmjekS<}QRC7ATJfxjItgT|lj+EjW8Mzos^6e-=$Q1XFe21R5a|uf)=ZxW5JOmN-R* z;)8{vL;=Tl+;TlJmHDqXcw?bjR0;VQNw4%9yG}T{1QFv|u z?F_T=v<^e}_mpXQ6aTE2b6C-B{elde#6?j_FP^NW-n4$oeG#vRfh9xx1$h_uy9%=A zAjov4(&B9JL*(&F?ZY4+GEsE1ale0Phs>lu?(uhoCF@Seo= zlHW?%7v+uYb8sN`SHL!*P2Uu8A;e@+o3jHrC4NXy%qe%5_P`CwY~#bO`3QJPfoDb| zc#wRUK-cxuT-z!Vne%o6y;293jcb5mDcG#uYP&x~AHL#5rjL@?Oszcy;!nVDyD#65 z-W|f=tmE*c;O~BtxLgq@+$rn4-I|iKop!z-loOeh%0G<8=mBT*fDcw3sf%853s`$< zO?zHg^MEeK#O4*BeW*l@>ng~7GZQ6a^mKOn0#bBn`?}!o`o~ScU@ftjMUNjMecdpu zzryuY$c@%^?&Mqv3tw>SM*5zSys*?2W%N-;$4+3S*4c5F>dhrDtqEc5_xeBsU{5st8YN|bP? z_lh^ zbO=($&b!fB#?R{c2}}}Rjzs3szFT}kmHMhwIDhsRHTuT-W~d!boB!ZP zMJr#*4mgPKVs&^=rjZThHC8-kP423_^K4J*J+wE5`4x+iRbs*`2AAQnrU-xb{GJLP z%5QkBua&a4tM4(a3H;G2J^%JET<|UIUl{7p|q3xrm_kLCp4*K$u#mI%D2LpzqdxzXBUECqz z^a3NZ5^QE{N8>$RgHAH0JuMKG(M5eIa{0E&(ehi`J<9kV?K38vlwgBDE2*Y)%8i@c z0`s+xQHTqe=3WVg7#Rlrj$JX6gJ<9RaO!NKjMVALVu?z?*~|D)E6l7Q}&6F$V{ED3Kt`;0p)UY)uwb zjl+sy&=gnh4+qhojAHlSiLuM6NT#MxihLM$8FqEW`4F#M9`8}3<3uk_OA?7z&_bu9 z_AVhUEgiCUVGOEa<7eVKOi*``2xy~~HjI%k0@NY~8421Y#~akJj5j92tX_IHO$;1$ z`FqH$6Jt^BA;4Ht)Dnoi=R8ZS9yYb82?FYDLMLGY{8M?|m5ziYv7P^3&b_Zc)2)M0 z$b`o-I(dO)-~t4MH0;<|5as$G7SF6OmqHJi_npP~Q!hl+jbz`Tf!`#T@JJd{mk=@H zV|$KF4(?St{68_zRZM&MTt_0^FO{4%W*=T#n16C|auJS1BjrROS$j32H|#G% zA1*&HN&7%Qho4u?IPkX}OYaX*gC>C$SQ|5r_N$YIY+19an;i%rs!&HfaBhFLxZ*!6 z_Mp$rkpZJWA~~Xx=Bp|b>8*C(s~9iGW9moXU_KL>d-v^$5zbOPvMgHS!m(}p81$dBt5j~9(42O z=3p&;3_Ze%S)>4bI5y?f@EOf`)MEZNzQ)8V0DEO;uG|G)3JAP<9!(+o2KlQ;M+D5x ztiJd5(33k&xvS*(9l1x3?}%EwDJvni_L~gi2+R}YUIfn0H_2G^aB>_PWf?pBq?;w4 zxZM}n1^UTVu9+=)NWDN+vZW^Eqf zIDZnzJl)rnV3ytaQ&fM?mj#Jbfrfp0gu>l@eJSM=gyorMg)r~b)Fp;~Q-rQ;@u;&4 zW6BqIe*|?FKeW-W391}VAO{*d=AH!ZfzSUGWyf2kV%b)P3gOr1Z5K__)l&AaCc0#c zOufe;bmq{zb=hjS&aUIe6&WUD!P|diDsPwFf&LZ2RsLz7YyNzUBYJpc-w9O9$r0MZ z?-&XtOVzc~%zK48m*n605$)HL<6AaisVL0MPGw7W+AZ|?c^F&a|JqfWKdW>g(PokOCfPZy66xRwEbH2wVZ1N3&6=x4$El5SRW;>(3z>iie%O zf!`2$)3@*B_{|D3Wj?&j4|a)M9iOr4m~pWxA>_2^!37OB>Rgg&Z+h*AzshIwTNNM)fp#q}!wRZ;a`giJ(uIZ&;kto#!_8_AYjUc2|p z@l$8pZN=;E;~uv@A|wv&JPC83Yq7ESDIva+u(M0oT4XQsa31|T)oYF)dpUzgsx8rE zBJo)ETK-d3w8lN-qpNPm!SpPK*Mlm5`jAr8-Pd-fg>MHkC)Y`vTnQK;*W!OwVBg#f zuEFmHOIR`SY>E%(w2ydq@{7}7#O2u!AUgFtn#MjzQ<)&5zC78Mb^NN|%e(0b7c$js zzuEr=E?ncESq;77i4K+^FY=?0RVMbU>&N`2w7sv{u79~_znn!|GBZN!eGnuiE-P-2 z(})j@p?OK%5T5m$)6Z+5<6!QG-NWRn%HB7#!t`t->s!rI!ZiKq`-{Rmij}HkeyeAb zEGf!qXp+~;GLBaky7x3g3FhMi$c@`Mc2Bf}!O{ofV1C!xR$gR39|tgi8tf+pD9x+P zU&LFrO}XrO>i1t%ek5kYh=(YY!}%DnuqZy#H(L*bC~O)wxDsB#oLqu_nMMJYBS;?B z9E8iSGEV9n5U-=TLED6ubr*%ci`0{CaH-Li{n0^ErgIJnY5U-nL zqQD@~MZOQ16n5BMl7^^)$%sAZHMMU$X&Z7be0zl^jN#$@1W%}N)s)mU>~xm{WDy;1NNEZhubu*^Puo0qsjX7GomVyyIfRcdP)eQ~|Yz6OuMisPU`<4~QN9 z?^5uDKc|8KQYl$WXd6cMXMvScvxGKEqt(*>%1BeIz+ zmIitVOEf3-71)s})oeI*r54$^0-;|lNlkUh^a!x-x~zv84UL*=+=KWz#&LN$!iHh3 zrRki1V+6X4F6%<$J}ei@<)kf)$SyGQ#YUo75jDX8&})lSNI9`dLq?1g6kPOj)Hj$( z^pnwiv~p~|=i)@xI=OWxem-l*GZ{F^f*gLe3olAI{><2{pTdx7JFVGm~l6F`vH=B&A#f~OJ8zp=p zf5^#x(nRsl2X)X$^J1@XQ=8UGs}uUd{u|p#~tW%9WuNh+Ninh2BOoYH=+N zcN?`{$nmgks<4>rOpEb{q+*UTA;$(kXZ)4{jHGu%kq9&>dpL5U@L^A8F*SpcWi2xM z_Cz3{ve^|<+s;BwsPNj*FT>@3L~AyPhNU5y2{eu7SX| z&a}=-`)4<4evsy8;7l3uKRgkrW7;Lsf5)&?g3GztduT2SX70mub*TAeU<98S}y70OMvNh1>7|){f-Yb-qpD(d>tBkd{E%zP?GIcnr5H#K^FF z_gB`75^i{qC4hDd>=<0Cl$&+ZO3>)v^^2d;{xIl3D;D>fLi>Ts`%8oLZ%b;3Gs@`g zkEj(Wveu}sz-ca$F40wynqxah5!2sXDD4VzpjdGB;HZZg!rEiQqBTJsW$q+Nz@CCP z#<@tYP5$KyAId7xVHIW-I4d+6Ie$3CA<}@Vt(ptjR31wK4gwzq%bW<~xRv70diqL` zN-?@~Ds<$cyBtlVB&joGPckH7kg9lMS-1z*U62z*wtASl;E10MfYe& z3P#TjlYkxhQ@|DBCt4PI5Q7XnP%opgB$niJ<(%&^3a)BuCND^VwbhCib{ku|=n2I* zBL7xH2tg%bb$~cvaJwOASHlyrP!|$|c>4Zi9}EsDC!Q1Y(C1O+NE4NRbQWuR05*jw z&hn^s+Ba4u;wqi8r(Z~3;coKcrp!g>_o5{3NbSF@AeV=IeBP;rE|cj32!z8_^{g_; z^KcF++7H>>{Q@;31zlBOTOu>N>tXw$YIX{%u!zy_< z5<%kNi8lUFO+U)gT;m}IOv_7`o2l^oQPVVwGm`rt@|8!DJ7zNTt5e#U`N> z(`(hzv3BHBC|Cpada_IK!5PMb7V6t^31d|HRX&huuWnTMS0qxCwd|`mr`hw3D+ct{ z8@lGsW%-DfT?zAoE8i-F_3eLMa@yW=s;P{fN$<~A7|5+uATvM$NGv-Qa#H2^<^GTB zsQfYDodK7wc1KHn8cGn2s>hpk>L^Z5X&CkRHTKo0~Y5>gQ8Os z1cVtP=?YCOmdTYV?op<^KnA9@NR>6zn)aDlX-~Bn<-IgeXz*5XZp}ItoHj&`bsd=f zibGkKttPD)Ybmxz9_G2{{z8D5yUm~ZpfKXqu&EL)D^ZmA8UoHCZ|Yer6zXjh|d z{iGF0PI3#cdf+;PF;?A^UDU1jamfq_CNvA>P$C89ljKBF5QGv>E$~u%`?8I6_f{&w z>?BKk+>c;i3GuyEv+{T{sG9P9AJr=7TK3$v;IRv3np(tM`VrrK^9-%F;lGzB;WxCE z7bE>#WonR>Q9h@9p`-z&5Q2BuL&85X-<=_IOaxK!FxB{OG_lA#v5q=9pneAat9m01 zQ-c=}q5^s0ff<)CKK;eg9fi;n@oOFxmxcn=7gj)t-|;+K>C%A9fQpB2-1~NxeDGt^ zeNo(mCPVHcss~{e$H9{l%NTLhFlVXxOwzcyu=AwSWAxC#orzb|DD6xsUw=fja+B6A zS$^#b)=y&I-E~RJb58s6gz4>!59beG+C?G2#OVR@g)b#4jHvizb}d#F>`8~m-DdxI zvy%}dJVE0V**UEQ4iT13#car*or|O#iqeur9XonmTz0xF^Yp?YG0K@{3`q69=TSlX zR*eeQH%F%zlo*N9NgL*)=mgzbyRpd&st++k$;Ogr$-2&s8gl)fj_58b9cokP)E)y0 zF7*}}G0XHM2v_tkQ^Le?ON=<-31}Ax%Y58Q9&UFhN36Lm%e2DJCk-=X41KMSXl>rQ zM5>#QJ{ScPowo-aRr}Z>as?rf^p-bCAs3d6|NN;TG5W8wbR}|tuLcV7FP(k0e)I$T zbp_10bK`+E{0nNR8H0gLo&^@b3IHzD2D{fzllo}#i8x*=#&iB^oXFURDJS>1wNfY= zO?r@_@eKL*vo2rVcWSW-FmMj-&#LfVGM5!Q?T(5-*rmg6rRYR0y;_9HY`hvAeWcdi z@YllvZKHcFnH2FFDC}DR?zGv^*HaqrHlI6yDB!+Kbk!H$6RvR3*a{YHECT;!)NQ z(B|O`%)pps3gs7nC*(8z#9ZkN!!FpR`uT%0GJmxlq)=#FTW>Ke6{Co%H{LhlMEx;M zy;^5(qXMD`^OvYcPC&||C$R_Y?gG)14=DTZ7 zZcPl{-!X{My?+*^pf_-JE=WrtJ`aQ76)qtaRkX77_YbFYX>01pl!cBZ|C&I@ql(LJ zk-9KkXM}!`)29#G`LsKXu7YdU;>oE+#(6Sw(S{cp91UTSEuR|~934fq@tB)9v}m8u z@nL5esZ)cGQusL+3s8vLy8(fExC!&_iIFqlkqaJR?fQf=%R107pJDJ z=pRYVN|}le=pm^eIl9c8Ru!}p_062DNKzze2xQRp9aMp%0IBq`1x3LP9z3y9R>qYB z*d%;6EP9Lw z^`OK>)-|(x$z;tmHB?^Y+f4ltM3g=~g6chA?v>wlwrB2TRyxy;WyRzvHS9og{Do(d zVk}HL1dvU~fZ`uH&<8@J_ZUcB7xMxjEKdspGCOHMGNB`E67==Dsqs212SjZ_(!MA( z?O9U0-OA2b#LP$U+zM(_n&NiQWizTmc;6t7NecZYf)C3LZOo(>kg)3Yl^)8Xl?X1j zFv)^C(I!6hkZmdA_P>QAG*M>c=;fgDFwRyk%Ou*%0h{q;V+97()o-P4l9XCvjfU-o zM8zo$ic2n14|#SpvXZWHlo~^2w3rJ+rTI^J-wcF#o_*2Dl9SoyVxd7bS^O*sb#( z*ew+ff&V=uHV^D{a(n;CGo-f)lkk>koq@Xa`$CYMSW;*VE}g;A!2(6EXM1XLo^~q6 zw%LeZ&Up1&9}P=X3LE4q|BA(_x4v>Bwtwa&$v9R z6iW1B8VG6@^5-{yO~^PzrvhPLkI_Bk4jNWdHVT%Pw}(fz_F zp7QP+30=;Wq1gbBTb@8f;k|25L>CQAGbs__WkC76Kngj(jnEtA@hAzMl|#U-H^724 zXS(r|dJxe!uIENKT-A~PXu`czETL`D1uPO)>s@%GoUH!8d~B_F)SyGA|C1W*1=zU% ze;3;?U45tZHnbne@n3z?r+N9_sIuiS2pmeCX~7^vR8jXR7r|!q5qkV=3{1ZRJiVSKsA_(5r=m5Ws+S;NhZP{gt`VRUI|9{5Rik z+(B1RvGiciMG9bYR8pogh8P>2`Z$H9M)>5BRii^QV^egObJQxOjuzNCOj}4=KVcP0 zN@(^n+&|ohs7*@0KS8?AxowDMe-ZxYoS!lp8LssW&f*hVP>n!7zU0;$vZh-bG>}5R zH9k0cUPziD!IfJcA1uzNx`cDbPXKqte~l?2<4E!A$pjL{KrIb5{%BQ_`agQ^GUP|# zP^!?C$t78x34cfP-|8AR@HQ04_Zh8Pt8fm99J`$stUx{uDdm{+|MwwoqNz%Rp9|`- z!)IA>^papW;1qw$T%hD(CC6>(Q)@(hZq#1;lYyrN;6KM07=NZ23<>=EVU25bV6=6^ z1jkV=1qU417vRdc+gHdSVrGvf+igw@@^f&T`?@0USq0&({*uSBR7=Wwbr?Jh)J%lU zy!)hU-J9h~q@_FLxuukc9LA8IV+Ro^NjGLwvKDxFI`)`Q zhrdG;=b#|Az~sR``$VVdLpr=kcPcOu8(3wPq7I!4J z=;+@XMG~KYoDlTxJs)4nhI_`~$Ac8p+*bopjPTrF6=lR>67!_b0d=W%UA&Vv*R#5E zjSt2h(w?_wdFA>b?vkk(*qJzS!d>xLbA-tLM2p!*A^p&@!A0R~HRF&sZlsnY-K&3DniV<(o52_Pv zC|MZZe5hFy%f{V_l({LC4X%!`lN$mmmNgWsw7 z2NI7z+$8X$Ibs1}Ket;+9Qm@pLGV}5<+#)xevXBn!xFi~YKYOe)TK+b^dX73A zwtO~Wjve2h;dTlMix{~yVQb~JR|@C%*VV|mWJhn|Qs>lMZyDUV@w#gF)!?}yK03Yr zB&>F4{|6UUx*R{P7>n`xIxq!XABfd9gC|~!^2K-y^=WEZrZ~=U|0vb{yQS;)znbG%c7)_Ff>W6$kOOVU+uV^YJt}YvR5JcE5gVKBi8P^>sQ-wMnr=`zPIea zYx`9)5R}FGy)U7jADTBE8LAa7!K|NS>TP9fIgFQz;2|^;hMYNq-MNeQ{8y*#lW^ z!EoaI@r-GyXm_kfg8%ZP^E5b|x zcbFnrdG|U=*LB9!fZJU5K7-98(EKJY>IQv;V7SzZ(1gl(hj>KcUhvk-@kdKm>5AJ) zzzF-#+02G2PZ46yf!|Exv|>0)oY!WA@X3J+eV9EXxZp17EJ+H$Y>~UCy$pV-b1l3f z_%}l7w}!39)ts+y+z7kv4tD;>Lz)`h$x%Tj)2=ysD1NM`U?uxK-o2Im$v>bY;GeU! z18kn&{TmRa6)ZN37B1Jv!_cCzzUYo>Tr3eV*kQ5Q%PaArG%dj@)Mf|Dn`-H?x1s8;87G{5oV_AFL!0HNU)>}E`b-(_g?Cqi4!H8t&)q+p zdraty!nQyh0D-6J1;DsZr-CcHUIDfcU^8; z6F?}Ji$FD`FT9>!`0N)b@z-=nzFMr)M3t67vX;TX0f&X6!YHMF{(=RCd^aK9f&Dgt zPHiAk^aUQpHhlTt=bY(8P-M^lG3@^*Xri6Q3J3NRls&Bl4on^a^3Pca0n+hd25zEf z8X`QH0ANlLUPg?98^#emx{sFm_eO{;>hA9(Iegb&=O0g|Hyi}FqMEzzF=-R(5nb>a40 zldMeT(Q6z2IPvHX=MkgvZ!IMUS5t`XJfzL%1&|ey#q!Q+!|-71Bvl*^wBUHnw#&?V zO=Cm+MQ=w(yQyAK^Q=fe#Jc+e_|twPfT4rxv@Ril9m4@%s|6X5BZ!PxWt6lAvoYr7 z5-eX=0E3P>Is#>clFh2MhQ#CT3FO@w@r+CF%CUOvtNO}h)s>4}-VU+RqGQ~7Ie9N^ zti(tnNF2qOXo%;G*Q!Wg(2fvV1!9x7sJy>krJ{xb_3(2R+yY4WcXmQU>2%5PH~hfP zu^wB_DsGJ)f6nfc--&><#wwsuVe|gZOT@T4!_{N;QlaX!CCtB2QS#N~ zQqHC{M5RGm&dohDZTAQ&4ET9Gd3bOFj@IjpKdx`?A9;Vw9P7<&?VghV(7F%(1g@;) zul%{=f}TT&xbFY?X=Bo`AuImeAOG+WUiNr0{X~8|VxF1qAs-hp%m-xGb%qwH&Mp-Y zAEq8gR5E&M&N{W3mtF(vjH+7KAE(m0IvP*bG^Z8FXfnpB(>g!5H>P?zziex|NB6My zRGF9gQMW``;010gr{WFVDhy6y1!Y1V>99NfjSn8l(DdL#mo%WF)F}0ed~Etm=mfuC z?Npd_`1b;3=!oSIf&fdA5%5lYwq#J6iXx;I7c#pp97Qer9szNi`7^VO@6S?^4sNx5 zg&2*0F7l(pS#VGAK37R(%ck~{rbDog>#ax00!V7LVu~Af6l-WneRFNqFR7mD1)5iP z%YP0sRXM-9g&HoU>?x9?2@5OLd@nX;@$`QI zajM4MfA3o>u5ftPN=jz>b+wnM^m)>RX~8T2>eM+wK_li?)XxFK( z4s~gp_LWS3KrDjJrvwtZSfP3~@db=_zX!smWz{a4h57Q1SDh#HK9jKJn0s4k1+yE&POCOdZ*6dS+&5ZD0=(J$IO?Ny3}&U z%9#e`8Ho{+TSfViMJ&Q%Q+lUc@Hqn@sR7V67r)WV_nm{?Lgpx@jPYXkY!o=h`8IV! z2Q|MC&zm%)U+ty;*G=)Bb(46J(qnaR;A0O8FR~R|Cxv82yGd?hX|pY+;yqg9&f=+) zV}s!nJ1JrDZX@dU`+Ib5Jr+?V`xPaGhbaG*&wyRaFy0-8aa^p^+iWur1Z2zc zcY#c+%dlHU3$gDzsAuFcl$YNoNu4&Li$!n}5GvqODBOBbp*alccMW3Qu(Pd+iuKG8 z0RQNBZM{9F*R9>3KX2Sd19~A{3$fR z1Kq7HKTr10w|0I1%Ij&NHr-ltCQ`{OTp`}~+7H7W`(?|?Qch4u?+)!bUijnFwhVOp-?lBQ}I1seK zyn+e{G>~-%D$F}a5Q+^;+m_UXDx2^jb5E`TD6C0z!9gWtsmL^iZ>di3} zec?+;V@NY!$-i{5m&reZL)%BqgjaH5KD^Zk1AEAF_xkC)=xE-Vi{e*=RlgG-mO&rn^uAr>vFFn^+U=wIL zO>pMqyZdP~ikl8R#deKQF5;`GEaHEVOMOoQhfCiO`Vv7s`L2FI1%Xi_wYZ&W6?E3I z<<+l~O!G|MO^7^Y0I-O{|KbadR-ZqvMNP0-#yvRfSedm%GV3&@tD?J19leT-KI69d z8Rvk-{d*!yM(mbQZOei6LmuZzKlz7|@f2?#)%>TF@O~CBMELy7<;6tQQbJJM+$N;$ zR47&N`zDs$UGja!Q~?YzzvM4vMM+6Gj9Htp5WnwNmfC04QXE~mw)ro4hr3*yhQM0n zgFD)4c|;^?m3YsM+g_m1vD_&uuR)b~rvr3DjaC6#UglQaPJ^Y)ojCjWZ$<%jq|a{6#wnqaH=;|ZONM5bShk8&D{XXm|u1(TjHiOS-)gkBdRu>*<_FH;+M zukLLy5eM=_a_?}yGOfUVeDEMbg?{m7GT%RwM)7Ro`@+3P91el~L>M2HVIjzKccpou zV#6oz<)&m;HAiJVc|j;I+W@icoObgi^(Cd1<+mAXuu1^mL4^ZO4cf++WjWuJMY&S$ zpwJCqC(CCZ1&&0kjxE2DB11ejv9a+`66al&MPDq8hue?LdYI#WmjNerv$!j|o6Rmo zQehj)O}zp zV>|@L6C_sfPE+=5>M5^`JfwDCCzmJsox(#l<)(;>t)}3fkrKPA(p_0oD1ylCZ#?@Q zTuehW$j)Jy6M6^lNWWu+O7?O`TTR}9PxLf-7BDx^ptL>~Fhx+vG$d9q6Hu&HCswdB zaG2uwze1BCUy`lFoM5}4z=)r&v<8u8sEhpZlvn-kQkSM3j$jI30<1KQR&Il=8h=wA z4512WtB%}B+J2)raxU4{kfclu9tM#rZXF&hC<(owW$~N{Y)Tpntjd(vO@6E^A;@YN z*Ww@lz{I`)Me2}XxPkmWw>U;P02+E z?um_NzcEaN?QP>_*{w=S?ke=S1WyaO?xlZpe4iQP$VM(*>-s>xT^$m z+2A~~!NosTu4VH=NvTWJqhXO45xAWrlHyqU#4sia0pZp3bRAetmm*00fnw$ty(=~d*Y#k z+@_4g8P0O(H<|4T-erM4UJPJ@9Sq?l_-ff%OOVZDVgu(oxTn$mN@2MS*x4=m?G!|C zab>6xz&8`3S0b=<4@G5;@g)j>gYNc`?IQ2=I$=i2Smtyj6&H?^C*>;WqLte^wwrLUA=!pmQ6zHTi1a;5 zc|>F`6iIj1NP;N2RYSb&U5mwVBsdY*V?_q%DIxOxe<^!SHv7;rW`#!DI&PN^hIGg^ zAVwe0LhCofgWITscg8D@9(c;(f^*egG44TN3I&0mnsY6~Qh83j{m-MXspW(hE zgcJ35Jx1s19jKkNHA0fOcaSzl6Zd+XHv)6uRI7C^7&CZh#5e`CIyH}E-_jilN6P!pl2NbOau+ff$aEmkh} zl)xV3cD8lw_FApgYQ3C9_G`$Tg&MO;9nkLELF;b=iuByE zcF5TA1_&wA8;Gz~P%Dw6Qbs7;=Lg&LGoYx5H0chYTrTOA@#1JS&qLA4OS$gIY5vUB zYo}%z#%WX}Q4MSMeR_{jSUM-n-YvmTdM{R#YO!%ZdLAI?#{R?u6jZ`2kCKjt2vb&s znG^G=bD}-p`Ygyl3y&hfdoqWC+y=fLy6VNB-#>V+WVCj8IAy1HrykAEeAfmSx4A#i z%wNs}ce9mOb3+Y+7f-yNo^(r+ZF(+j5u@tdLIW1zkpj-ZOF{^DY#yLh_o z3EsQ=WhlT@qQuu1DICe)aQhNG^kd{Z2R@IbSu!QGz@IW!WVMYPyU8pMCXkH>R|mRF z5J8iPxMDEsDS4gIR$|MEFJgmIBkBL{w)F+UdRuU*9l&UvE#7qH@_vRz|jSg?1T2zMNCFWm6l~FlANi<64z-i!R{4 zy8Pb`7LI)04eT?azP9#rubFSIhf?pStp7eher?!e{(biDDQ|xKXyF(U>F74iljMfo)}C<$aFr@)^rgetC}eKyE6u&O^DZPI(N zivF4Scd@OLxZk7nu5Hf2Duak->L?xc!k5GSR90B6J`*Cgrwp>MyFG1}q?yNy?3Y{S zUWm4=(SyHo{|?>QM9-ysB({k2KbpD)E)-=siOgy80Ga&DWPOwXZ9~uH`);O69mP)Y zCpPeY^M?K8I6)uwli8%6-D^ZTp|2?$R%WC~22^vBqjH>LUqM4wRcHNJy@l@4p8BJL zfi~pZ#5@HiM-D`dn9}KR>DlMeX%F#NFJ^-#8puRFIe^C{959=j!R-z_IEfWygdB97bz;cG~ z-NX!Gi%M22uD*g9qmH$ z>YVdA&*NQ%8(A68W+S?C`i_G+gP*&==#- zJ;QWD@|bQhuqKETM!}^R&}5y-npj}mAPX1#_6F3@e(8R^nqa~1E+7R^%6sG^OpuCr z#RdByu=FfAEp7q|#ao+uQ*%+fR1KsYW1ze+i=p`Cymo63boD*CVyf>aF-(}WFBM!8 zCdd=q`v#%^NWuZ37u92Y>x6sBwZ+HrUhLF0T7x7YU%D6*oK{1}h?7mIDfi&ugr7m~ zw&eK(;wY9t3C# z>j8H-E@jTbK^vIQ#@Z!8>W=jfd@QgH@(hOg;rI6kMjAZD7N8(D&7>&2a6x@uz(hW7 zdrqXeo%uEbETV{{!K6IXQ9k2kQlO_eDgK(EQ^HQZ6Vzq?eHR2U6N#P)e?L#&?F}yQ zjHDJY6lP#qQ^|*11hZzgThOw^10<1q$Q!{B0fZzA&jCIEV)E6&pE5Zua;xPaMaAF~ zQLJy%Yp=^$rx>P2DHn?)t9Hpj%>2DhnXcKVx{$rqez>dk08m}*Lgv9B5=&u*DY8nw z#AGoW*_(_LAtyk_dF61Vcz7uAMeb~Ywwr2vfv(V>e@5a@r-!Y`Ek2d}dWc}zO%1}B7hvJsxGV-m|y_xOnrJ%;*_}>Ic_7DVr_?s z<40Sa)p_K+MKz*Z62X~@8_PKJt_j`RS*syPfa}ylpqGkSNp}YGA;cD=E+Y``=oX&5 zX1tVRko5#NO}g_L(G|hbe`oH|7J}-_3Iy4Y#G!D=LJucbUpbpy)Ew!;e5qu~e?6qR z8JjDo09ODCkMf{s{PADf>EN&mBvxkLg}gzwP(>synK-@W!GEb>VUKO{_^;2TwGMjr9cjz zZb)01V5KX{4OC5oFuPVKQ>d^gKXE7x)) z6OB15F@0aGtB}w#3`JG2P^`+V;eLuL@7cfM5n3fO!dHNN^9!UTJq{BU8Whb>;oFh5 zW(o$tM5`8VpWkTfSVnKV#RHqYHYYXB)MyGB8!?g}o6~8N5`QtebF+^+49L8E2$fIu zzZSG&qPvPMpuXaj6;wFU>a8sU?&uI;gWpem+OF?@c$=yuprBrARA!xB9mr325CAbI z!RHz7#!ig-Alh7@joCCgCTVWrA}p!S5Y+`V;G}>s%F~g|oT%eCDayy+slSVxovnGM zUIyZ)wX(EEG);RGsYXJ71Zhs^!lSz+P+NJKa z5PKpxb>uUUD>9*wDckEhH-pp7uyhbS9cL>bO#2O_ad-e6 z4CRtiOX$x8x9p#4ydI2y4%hV+@gQB>v#%at!&{d~u%cSXT(=rfXhVtpU%H?s^ zJY6B6JPnHuIMN0Z;GIxe8k*eg?gIg_z2{L*$Z(J^wV0kHo*RZlLE}seL1ycy{q6x; zB%11?z!z{nVNf%veNW!s;GPvLAjMNn0Rn~PB&Em}R0ji{YD@S&X(VwEm>TZj2JouT z+$PweDdN`=N_M)Yxp43VxXU9>5DKrllb`5XubdS#;!v*YzSubv_)H8b(OZDzvYCcc zC^N!qz5?B`rv$8mt`JU?3AO{c0$sG+e-6z8vQ!_Av&a+T?Kli56S9_M1-77==o6uU zb8b&tRjT+z&lW|7Pn%hbLec`htce{HKNHM6qdK)hwKnZyxRAz%vk>Rm(p23=`ztjR zyLss2TzT3lZO&pcep&lwzS^YE3ORa|H-#WhoVoE6IAxGbpfh|XX^U~9Jk69 z!*cjC*UpT>)>uK!cJgF%&yRPbz7?;PCsI#I$a^A=X3QQ7uGUhzPOoM{hZj{Z)e$vP zmW8Ro2a1qbWh)kFOTHf8dhczfz zmeW~vNjzRCzwR96J^&i)+KOmBJ1Oyok?KWkBx*$kpX!lD`>Xi0>2^ew62#I@?YbWt zZ`MN2x`CuZh3Mt@N|VV%HVaj^L8BwIb1qu6>Yz!#gRG!!{&i~6GKE(@M?bPns>qpJ zLQmS8-xTh0VnY~DVqxTQ5@Du^oF-_`I)c-W(R3`m9cQW8)Bqj-PK6~yej_mBs&l`|Vdx1|qy=UsjSg%MJ=>}Bx+w9d2rDCc?l@>Dg;ogcbOLV2ktN+gXz3w^ zqNTP*fe7n~bbIbVsQFN8HBCh{On8XDzWn1$E!w)Wy2+7^8KK$huDLwj@H%+*m;qDish6 z;6gm{c2HCg*WfMD3Ziu z7J}5tBIG3_0#<`joVH>U%sq1HZj3}@aZ{8G)#!|7luagS6kfTK9}F;H3i?j4dgOH* zrSo1$Ck~dRb=mS}mMn~tG&~~;Sc7rpvwsn2dtNJg%$eOV3DfhBBS*X+UMgdwQtQ|+ z{CK`+F#yK?Xs(ETM-|Ni`npLxKes(dJinGk!Dy~=ZptO~=bFk;s!D(if&UftL8Mp< zIJ);$#i`Xr1Esbp57i8g%OHoH5$S>!(NRHSrje-?91gOuFfOmhDitA4tgRqBaZ9^( z30q3-KyMYRl_8#KKKkO#vNuz1(#FPu%r#8oDPZXj$P6TA(cjF%Ot0N=ms@LB!UM;n z@}(KrD-;Z`-!y68ocm`sXc2k;<8;bzBpD!p8o4UZ+FdNx$pe*DImLK%U zrhce6g~AWRv@q6(T~R??6)o%aZlYY(enq}(`5;9h)_;ozZ0bg4M`gjMq=aVYw(Te5 zdZDLQ7-1ud--qqtT$uUCihk@vVn5FM0e|m@MSVhRijT}&9SXO`|McwzOAcdYaFfe! zt`5>`3H|)NL61)S05L`GVMKCX)SEakJL(BIq;NFo>wwwDjPO#fExYpzjG!&cJT-gm z5gJOS*Md?#>k*n=T=E0fHaTeobPi?j5|=t((C4&;>f@UtGgy`dY6kal63lt}~-<}Pg)K(4KDjHhr*S7SSH}{ej8P}X% z(h83Kb!_Ey4!Ue)V`^ajK0Mv@fbJ~3r1#o@D1dy%q$AmaZ~&jCOWJ~{0t9!n6p8uR ztR4~T>LG98pGo=mlK9Wky6#TF{XI%>6$#}`v^1-Yj#%GKUA6}O_Mkrk>{LyfBe>|7 zK6)$5li_?2BB4IUZUyc1S6fFHhkF&=JX0D<7x?HKCT>6dK~@}Z2QS)v3R+!U@Czg) zD#pRGc~hfzZV3esJgc!?EGWn(Y%uE=c~@*PO7j#}_{|*}_^;%@;L=ZB-fOXKFHx^9 z5j&>#y3=a~_LMJs)5ZC-k{1InOI}}(Lg(>I6!p@23--xfg==|m42o=v-hH34||D!W^Ao2zQM5LDB*x8>PZ|n*88O=l?U)W z%i1iwT7TKi16+L+eyVF+UB0>b{H(q`P5SwLm$cb%i0?LM5&9cq0@Cx=hM&&I-xQLL zuil>@#p=Pnp-WjA*kxTN?M7->nT}4YVz%AND4{!x6hvYO0RsGQIDXNys!K1gU8AEO zr>}hRp%M0X+oS^OP6$7Q6f@zxyU9q!rk4UiS+rxl{OM_nu z{$S>b`}A2NC4AGR0AK&uwZMkMH08+>2da<1tqND40iO&TJr1kH$Q@M?VlMQU%qi0L zEc^&x2GvD`gt;b05L&j1d{-)+sQWnJDto-|6})7aiB5KU8<6Wr+^ZG5&&Erb^-M}w z*2&VUFtb9^TZ+F+bYV(a?62Lg)(aZE?#-`+JKB#bGULpk6;jMrk5{EGK$}!ayePJ` z*be7dXqa^?%&w})U>o!9mg-ND;S4_+;Rpats3{b$LHiY^Oyg(Sr{*8S7mr8QBiA7H z>~p_Vrkkj*0e_>R?cBe?E54u4AIN3#rcjf{Q%+Zad*H@Mz9%D7c?5Vf24g% zqsjK$S+|2(RMJ8QQHUg;qx45uFBd*MTvqejHQ@3v?QDx+w#nP#9t~5)4o1lRBX7Pz z2>wvd&9BO1cQQSMHQp=DplcsGGg~qy#+;tRCH~|;0mvg0!g9!UrGQ1{?b{$smy;+n z`IpKl0iVHkh6AR;tPE27aQVPUStSb~VgaosB(pBQscaw5gtFnL&YWU8gDy@1QWMK@ z5Ft#=jgcnb$BA)%c4P~v)%3X;C!OI}syA$zdE;;Cjg@AFQa%IHeTb z-C)@23padN?wD&}fep>Iebh@GyujV^GmhriEt{|~oqcBl_w%Cw=BlNVh4?JVmPz+N zAcXcj8^}&PclygjF+B_>iDJbvYfv}-+anZ}00N_#%9AUX*{I5kHM@_1O@_-G(F{o^ zCXWUQr$5sPE8>tT{~VatDwLG`RD2B;oG_NFT5R|J0E~tqxGFRwD~l5K;zePz*KL_x zU+@u~kHo1;yo`0z20oM-hCb+!V|ap@%=;CR=i7P}lGr}>+52R7P46y-a`*-l-MJS8 z0EOJ?43bdh(4|C3{SMw@pBIJT22k{-=6;IBAVuS@IjzzIIs+@=NYrNbad>@%^TqTT zY_Bv_gmxzN#-qLSZ4OX5`hApct`D4HIQKh^KYc5fq6(&5n{OV2T#tdh<8YHbCa;lv z<(`%6Ga{0!(AT5kp4!6S37sF@u*&1U0M%v?Rga3#blr2_1-$E#@R- z6fZ?n5 zU_gfW6x29!$|DY6cJ@QS!1tuyUe1!x`}l0)S!K<2?LFqv#!hlV!e3BVghdQ*D; zI+?j^!sB~k)4LkFFL+VDO^enu&Hh=@s_yN&`o+LE?5@+sL21Z(chibpk76GT=dv>+!x$j zPNvH@*iYQVKO3omW9GbAS%G;Cm`;P|=6CxMQytBrma_E6xaP&)ICuC-;OL4o3JH_9 zA%~kiL(4dncWzF1)t{h(#a`p>BdV7B4Qr3X)(i0poQB&Lw%?3kWo+<<8Y1pbH zJu>T}&n6o^M@a241FU_Mc%{0kkgR75JEgV_z}$&ywUtKi_%rC2A=AM%b3rzUcIfBi&f^tU^pDA(ax1FylaSJk~xWat))_6?j!MgD-7v*%$nf6D*pd{MkUe5oF!U< zz+lF_O*ShbX5v5ZQ$x}u(d@bTTyMZ`G8}8BgLnY$8H?9Patas}zSNFve$KwtIZm@R z6JdD`aRZax6eG&V->*Yc_Uxt|qP6VV>0KA*5ZwP%DqFZE&W`UDx?@++Kt7qphKxNm zSdQ0yCdGm&@jGd0#|K~)M%8GQ&BN_sLSO)(Jl;?@H6Zz=*n7P?kdD3dL? zv>gG>Y~B|sC!Y8H^-;7PhWDx7vl%R1;Vy7_=f>mGe7)X`Bl489j%;~0F-b0#X#vnC zjq}fBz0Z+~F$_ya$MdWcH%R6k{&bYU-gFqEMsZyhThwleX}7dGJN$_};>Essn+pHd zlbw*~Smt(;0k-v=?67)CJz=po_KhXspdK8lV{FcL*#t{)2Z*DcZ)uVS;zI1mFOKrXpjV0WClTWJ?Z`is)RXE_TN--dDrU4lIq$g+$lIUv=2%%dOSo zd5OPdZXR4asJJ)2+?aAfOer6RV?rRtEb0E5i1sz9?>+_~Nmt^~Mgj&@v1os`c2_^7 zYT3?QyWZSSR)jCAW z*dRKowjoz6BVHQhShYL3IqZjaYMag{c$7*Pr6g6QL_$qw!RXGGE#hIYq-8s&(Iiy{ zcZ`W(#df{>+(U;D_CCXPH^|RTA!*MYBGW|_`%&44jc9cp^X`?DpAmJ`kPf?caM)@6 zL)g?0@GruJh5wqXn5`peAm_;G3bFrCX1ofJP!M*m^r8w7N`Uyrv{eK1KOa7&v6k%0 zKQ(wNk@10Fq92SN=H<91QOr?1EpqVx#_CS85@#7W)EdUj(Lb(Ro1!Zx%mweceYmnx z6n1AQI?Fz+SLH)+8uNz>~Ct< z)&m+CCM#()7<_(rLNOi{01`wZXN$g= zgmNTAgXB)&96{~ojsP30acxu>mlEx1s!cJS0Q{Xeu%k5rztsRrSJ>`Y;InZ!zB z{S@>>iq#@GgbbwSD`AL%!JA?uxnF<9$*4UZCZ@tpZN%^~FgXyk)JM%|OpUmKuH1DXv^ zepQ=t!PINBfn53;dR-oS3F>$o1%NTApf6fdLBs9$Re}#X)bEAt8>!8dF83mv5%gz& zTlzy|_CF%4x&viDxS)Mxh>paN$|RGM$#LO~8A@f=71bTCh}Vk+r2+UjH6@s!HqR98 z8olE_9PY7mfblzAO7*QDgoH{t0dOZ_j!k1gn2+@65)#xexLm!G)3VROg>Jk8;^jH% zS7}#2)kx0gcI`9!Yd?-R_BBKeeXLkM9kY9cnpEVPl1nJJGIHS`G@^*A?Z(*4co7hL z_S`%n=P98$ns!f#%u4ClrG(XzrDcm1)c9Dgsf%U<5a~T&61dnC?eV;Dn(4|!Hr1hq z0V}`jg}$O=Nem4`3%kN^50uiyB`%PzgzgSEzyp7|JlH0i5C;#yv7`FRD+ca?nmr(s zEB=zJn8=ZE3lWuu0kV%mFke%FPFMA-v4sXHYE3Vw1;Gb{U&%*LAE*VP2HXnamqI6( z;!QY~(WuX=p0f__FvQwfUQq@x45+UA+2cwqpT?2iyy=0injvMG$$pk^u}y(7l&^ni zG4esdn9#bzOhZ4*%vmF4I{=Mw;uI|xZdGUNL~%Negah4^n2dh)m>bl`s=UvkiAI~Q zNw2=oGzlR={h{g|ztszw0uWgSz@!|;i8f;LP&b_0R{G3=L9?Kpphfg`h!_JMSD0xE zp<{y6>-Lb~@sqP9+OeH;f{*>UG1U*!5 z#P1^5ot23j+TREyqKo8HODU_!w43*8duP`%fiz_nvVXRYp^svH$?0;=q8&6qhIWv5 zLWRM!sqCwcM@a&kYJSR;)Djuh9ml2}udG9Oar8Sy+4b#Xz}mW&$FY|?IHA^Kmai3p zesrIN_Y5Y39%V%HZNeD;+2s7$9=+sM!+wt z4OX?vcm|K?b6D(B>5~6^2;X?5iag?ru8icIq~2lHF!Ig z5#;m}Hh3S20^@ok3od;V`5CKPhC}_Q{{*K}4zmrg0ERlAVs=cC{*)>OA;Nj5+G+_S zDNm?e2rO8Np>ArmlU#r>+{6Z-Ql`8inT4==XO=+vquUG;=N-$KJ++mH*$;IXvFv@+ z`qo8BiePZSXCKOAq+s_Mtou4gSbwcb9=zH z5Npv?SRONz;V#~k@r+Djj`4{fcF1K#iSQR;^agcEUE43_C_6+&>Y8*8v8)$7(2*Wz zoo8~_NrZUd4??5~qdcf~u^`nC_}~p$7H>9a8MMpSOvW65`LfRSSl*whT4H$w3pw`A zTkKjcQ>0Hdg0KK&8hYy<=$rhaP3C*K-5Qey(6kYaES-cj@WCNTlJdlKhq@Ok&ckyd zF`~?_iy41V2fG-mG{t?0x0hL;q48eZ`h_hWW3M^;#nwy_SRD&-NuR-x=s0YPIL{cq z!3t&yQ9~U**b<22L%eKT$>nVcu~0q=&H}zn8fK8`3)BFkwzTGOKl*8Gha+if+?>sV zYSNCGCboy_AJ?TVE4pNS)^rUoDUp`SEwy>s{aL1})kv>wvV9#3&2XADXP7`j{0%mr z6_<)7zZ7%*Yek5PJDgixoqxt)Lj40G4a=`vLg0Hr@-%yi!K($tk+~=ebKCFK*~YYuqSJ8y z^gK4CU-8t|kgsRdi(lj#=-+fvH%ig|T(cqV1dl3@J7-KpsXES2nX|)hEI1-Qhce}A zypFO|+3;|_Zz*Mu(5S#f08`}k=HriHW!kZ$hT1xG>_*M1Ytn4nN@&{%i!7oYX4_Mn zV@F)?kr(sb^`}oagJ1zTFGM&WRnoz%yYaTp@gG?+Ke?U(@A3t!}erZptU!QiXT>XCi ziJ5R9`XAb{_YcUPU%DnK7*hHuE9fx@2WNUM8>k#qpo9mg-@B_yItV-HKQ%!85YyOn zk914}ikJRB8LH^|gm?FgXmyJL4dZx%{0C;J#diRD%8eL*C}ZARaDl7fOUtCgLGg!J zjQ&5FDZr@7Zg;r9zns1PLa>QmYE}0T}G4mGza*BaK10~MaXFESu5}v)0^*bjE)<>OZIAhc?%_1mGE2F zXV;W5+amPQxy3A>TW8vmA8=B!1j#~s2b0Kd{AZ7pB+(`Ky!iLG)V@?7>0>Jie?5 zPE^Dch5-fN(-aDE8T92W3#;#BgrXAhNCo47sp40{NEF|yAD zZGH%~Z>GtI$T}A$V`qQ~3k0DE6C4Tting3K7TaH5K|*>?Tf_`XXniG&GZ7uM?mz@S zsO4rDWXZl7@X(kD`*Jdw6ngszF;_5&{NW=6;rAJ(f10s7?stS>go)OJb%52Sym7~g=>O@nb)?gcyy6fu z-&2fY&6#G$wABIBq)0L)7-|L*Dn%WMT}8#Fs%Eo%D`X>L{LE%%HQHWmdS=pFhwqOe zm1i7k$L4c3X&d|gIsza%n+?#9pCKD*nri%eJF&ezWou8w8@Q9TfVPT8o=3aC6K-AA zzbiF5mO4ZIqYLeOAOL@l-OvwP+>5yszlUP~>9NG32qyz9r$&lLQB+<=#GIr;DR;T= zKpIU^-Yjws>_E=|0WqqIR!0F8cnD%Ls#BI&$>30#J-g;M^kO3Vm`8aGO4Sxg0l1^T zP%4TG(|9IiV_r-pMo*jzh){v}kyR_S_jCq7Rsy)=BS1>b3&Ck|@tjO!l#;L*0R_BhMn>C0bedT@JmHq7iQvU@2vmRz zKW2(e+A%mQ(%F-_eKbZrZUQlJ$;L1@mD;5lxXUZ)-{8=}svhw5h@Obh#!O|bm}e|p z;}<@z(K#YyBEf??{3F2QHk$oIeIAw>aRmT;mS3IzA*dGj*0M}8u?DO~&RH#! zw(y*3X}Cm}n^$!k**cU56dH{6Ec{0ol=3(;0b69dS=MXA7K-`UkkaE4!Ogo$LiW(n{MucjaPNVLGBLDqR-C) zI}|`WNo~C$twG7iv0{L$sb^Ij*`Bx35g`CkT-sj@fK!N79cPP83O8(6r=Zp4g6*yQ z2-e0#MS}l>f^6}eENcnO{0Otinp6-O`Q4O~Z{|bdk{ZlT#zs*sP_6efTyE3V^5&^@ z0og4~V7C*h9;8#~W|-sqTPae&cy-;8SI@ZKA2T}!PCV-vNWI7wi~*7>&76ndqsRct z5I`U6uO38~nKpUh_2IZjynPOKni}Cu)1n2k_z@%`9*G)b`RCw3uRps(O#&oO}b6f z5=PX2VL(|Lt=;#6&Jy|Nh((%!MNVK%Xa(4ti~XQ6?%v8xb_R9!T#l<~M3gZ9Rgh**`6sv+p4e6?KhnyBTet{rn-v za@j`l*33WFD%4(!{7gCE7*aVkyeF9%eG^qajseRyDs=wgU+BqIH(`J*6T`eB-oU>X zn&JF2)<2*t}olb+#&C^E3vN>h)p;^cJ|?>**v%jH1p)M01_qOP8j zC61Iy&oAClsydwaRd$TbzvUrT75G+>* zfD5bj4~1a&tAR6xG2c2r_)s*-bTGLegu0XC>x-9FOfGcUQx-=u+;;O3W(3exW)|7t2Ym_`ChQ6vtT&5RkZ+C;fG!&cE2R(%_O<`uWQ~YFHF5dcNqr z(}VPeTE~rI@Awx$WFz-gJkX#sK6QD;TsORiHH0b?7>y1HcyB>o~A~^ycO>zMh z4Y(9nO94^tYht*r>PC#PIjSr6gZf;+M8}&|)@Vk){2B&?#gdfK&~*g~a`o(_Q_ApQ z;=0ERUNeDb^ZxZY5_su2?5ZW<2y;)zDyS9&WyzgFlIzm^IAqBLRSnY+ti5;G=%eVg-fsvT0B)TiD?U%eC*8VW#Lh@~ zlAVtet!7psKo8KJC>M0P8yjtS^NM#V(D2dILi!1qw?Nof9d{x_z-O&UNX(^Ty+Qye zDSD`U#|Ut#|4x{(9!3kZ(l?)-nVI5lx;!85nb9~e3|p-$!*t7GAZR4t`gMAIv*`NWHCaly z=%!!nrjK!Y%GB8rvi=D$W$~jW3VgdT9U$%_M4&Mj5l#uAi!tgEPxjzsuC7X!2C{h= z^7?qaF?GJ=f3;Ysvgx=vySJ8Et(a~1Q1FO%U4MoC&ZTB#UEvk99^pTfKh6u)|3!$o zjY|8)dVTH3(EaBJ`h@Tog~ObdbDK-@WQ4fW?yL?X!di=Lln4dDw)F1g9it)#Em)j~im{9wSObb$C- znA3AWm907F&zlIQH*}G0P=0YeRx%nM2psq!=_vv_?C{+4;bf*%J=xs|U;p$nq2u+x z@^6S_vlK4iy2%m{(@b!lFfNUiuQ4hoj>p_DJVFP@yV)e#B7GNpExaXGFZFCkY#0b< z)YJA<%*P}H5j5<}H4($b77NFg?413<5|MKQNw;vf6a~Bi0P6Y#MUA3x7H*OPLRg?N zioDUc{YAkkX?dDZ1Hl`G7X7hy9ZkR?Cx~+Kbo@aJ1(68|XG7<6uz5^=M$dvSfsWpnkcY7((#3?)>URjG$gczkjGIE;N9>g0Qc?X(E9gB5^!z!VWNDGTJ?y_=q3!za??Qpj2>^^s^XwFpyY5a1$ZtgzM3vx~|8kAQ}3`#%N77VdhS^qkb?f z#b*Z4is5DOj#&to>ilOb-Kk$RGdRGlVhM|zu8I%p3p2Ol3JDj^IBaY05cAm8i)KfAoQK593Zg;iEQxbLlUtpWOVhw4wN0!yMb7Ky02i^NTpjlXmxC z;l>q7+5dX^Z2(Bsu=u;=TVofukNO$!0zVJ%5H!#W;XN@=*tlaq-|=Y-r=6bdJ!z*+ zd>At9+-B$@3NJxhJMwro7R8$F)@jVM*U^Xn{X?mVVO5_Stv z>&%_K+f9~57C~g}bZ?BVIvFP07CpdHa4lcN@A*yKQ4wZOJqL5|_6y~Y80cr*ze8a0 z1)CKjHU0a&VtDBAGVc(Y_6_jlaD8d_^1Q9Tp4~ z>9O@;7csKnRWQ=P{9Xzs$jJQhQw=K>8qGn$J>YL}O?EpF{rvP_s>sXk(aZwyn3H-j z`&r=-B9E2>vkPD4#*e*TY&u!SexPJ`uB#s%rFiLSlqs6Y3%b9v1g+|w^mMLROkX)Q zjbEJqYqeCJ!@tY$8O?Af7q!m`OMP^Gr;sL9SMxqm)O1Ki^8&2Fs{A*Yesv7!P2$b3ukdrgM4(6|7_m{=wv-vV3NcyXwHiV%rzTOL;x6^f_?z zGzuD3EH^~`9=7-A7yJOqEO5{HB|^?8{UPIrxHhC)20(G)=1BE>bsok*9qFjvY}t9g zV&4)M%e3K^El_n%w&r|FZ%+fA1pLe2$>#a4C*2wUHMtIGWxkxB-ZI5O1OD-EAr^mu zj+K$3nF`1>Hu~`hEg8n#te!Qq^S(a*F=(*fxHPTACCE^}`sC8auoNJ_$r|Yfdy~|6zgawFXkJuY zZ9OR{LdbNl&4f^pf5~S*oJP1k?x~}+g%zw?G7z&QQ5_nyv_BsI4&(#x2@3Phu{U8V z<_>U1QN@VY32S>5dTVSX0$2vQA&bZu$|J*I^PzkGcnz;WZ4P7fRN~Iq+b)13GtvRz z4)YD^ryVwo;axPpkV=8a`ko+GZ!5b(yZ;R>;%M07riF`aZm(WJ60_g*e+S@u5ET>Y zen0Z^HNr>sw|dmK=qhc902iX}HL39ZHa`3pA#@gfEAKw(Eq3oR06JKh)dhS>Md(-K zj+2`+>MO2}wJjkJD~R0d=%d%LRYY$Sdp(9!72m*&SwYuSw8`HuW>h3d$dI^cf_q!+ zntv%7%$o^umU0p5LO}ikFRq3WXHny#QJnjIsn!bfqcZUZH``vrd(kJuHPB_c7holf z4@`wp?|ni{cHNDq&Qte9x>_1B7eo2rS;z8+`_BAz%9)Q{0U>COj6;RWJ3vRiWAo=4 z9!EPicsgwNw?$>7yHvSuR6bDkWgv#3Mo)_UE!DwvFf1`9Kkg@w=&3Vf$Gu* zVDDJS+dk{~0SsLOZxc9vNZPzna#%fkFY@Ui*+cv%)9@q2B$1vtuYI(gwx1kP42K>9 z4eN@wEF>#X2y9)HEgnDhfjv1>IO0J z-3mJRv|7z>2^1l6mu*i@d{CSM<6L~ZV+}us0@la@TPyJ$*Te<|ZB=8?sO5+RSyOB@ zS1c2sk)aD6u~q_co!j$m3o>&lghga$DkfSKL;K4(5O(@`u_yt|QF+0H2T;4hPoLW{ z%bK%i}USmB)1bHpr+yH2EJ*0Gg7nNx0@OWiYQ7^?6OOVU)#bL&;t= zX4W9r(l(|tlCy+g_i5}O;qU7d1Rnt&k5dUPtD5YAq8`4eWNS&_i|V4T0Ps{b=quys zC!y3s8cZe!%^nIEh3~_O_zu{;Uh1+MZI~#kGYtVn7jAoAsSJ5&AE+Z{j@6{xW-yQ~ zfct(|8Xl;LMQ4b&-^?vSwDfjm-+mMf5skX-{(aa0u_Q#dxtH4VtR^}$2nw6F z$wOCFyf+|Xz#>6j!+L=YT0|OXqpPIbYm)w#n56b`8Wuh5 zJ$3-vwQXC0@%({}#d0?pN+7&*RT$y%rVDb12j0PX|sv>fiVRJAo8wO{2Vd+L_iV&Bs4|LKNLTdxFtWUH*GbL{0#irlD+zZV~Nizh0|0vaGu8|3@3p4XUfn{_6WUrqP*W5P3wlL_^#@1tBw)pKd)i zUAAGWjYUwQC2gdxtx~bqk?ipXxTfv6?^-I6RKd*V$A)=={higG0t~SjICFZ9fH(Wh zMzr~ft(}?XK<*Rf`8Cc#2Hdw8)@MaDw?h@z!QrwzWCM? ziw^Z37?S6Rq|WFhlKvNoG_#iVu)~JqOF8*2LWUiP*-mG#tuDfD`3n6UP*Aa|T(suk zAZ%mLBZ~Y%PrqSLBMbCZ5=S5ltVk&~TKJ_rMK>A;wje}%YfvCM<9d;*Z7T}GolQAuOg&8r8r_%PF_lWIkvMQ z9Di@cWnCENt>;-1!%jsGK%3ZrE4lhYUbxz^lD!Z?AEH&w`&Z^tQZi-Q%rbwQ`7>Sd zZ``zeYeT@O!F&>PibmC}TS&lO`?Rpzz3jy!j5)w19nHp;xqWMsUF(DA3YT{YvJx5T z2A8MIdHuOPKdMs%!4Jx8GY4GHidbo=Y@zB{Q%7Wk`MZ!?aZ&smfSPLTQL8Pi@?k^A z`hJ+Ex`v56_Oj`Wqf#8#_8VPPViwvrk(}>h>}d4;FG0@$p{-l`s?7JqT4AR%j23r2ak;x5!w)3h z;;^9Of8&kflH$>;yeW=SwhPkRj8?oPonky^hGCh67j19*eBFNdcbdJgUyjwJMygZE z1@K?3&OxT_wDWyir9)qYQXYSG(i^HlFJbV7oRC$y-TYd+#NvV|TOzb3FpG z7CP=Fv3uk$47%!Tk1Q>qJ(^p-jUNmc8SRC|Rh!g*wE-gzl)A^0t}wT3NbR|dvZZX# zP}pt-Zpas?Hk^ajc1P9o-*5+`!2s|XMC)+g1t)R0Z+7U2*)bTQ5VO!Ep*W%BVmuxz zuLi_JwjMScd6$upUxJ?3vL^KNMFtHmjNb5tb!c{J!IZS(ThW2BAy#zkX>;R5N!IW-M@~nPaay(4cZ$sx^D(t%x;oCQ_@zBI;oTRTdhbvU24_LO zTkrDrgOB|3ahoxbWJzopm(6_lKltuDM*Y{y7p2_-4;@DdNe2B8)1dtXLp1r71Ko}- zZ`PUrOd6X8q`TQe>j;`v>81TI*4{EKj%8~D#ogUKxD4(P+}(q_1P!i@y9W&fw*bK{ zxI4jJf;#~cEa)Bf-sgPhJ6C_)=c$_MHC4T;dS<=rT{T@@MM0hqj_XR7f-x1E6p|X{ z&Auu^M*Fq{n|V44UbymIi{;<7*W`bxM#Rj5niM)3vXQl6ta;GoNoAySA;52 zU0nm8>MiZQ72-OIY=l(r9b;=~N6Hb<2f$OSr=?cbgocbGtpO&H?w84Rsow_<6SnBp zc2i*mI8ZIB*?ST3#Hgo`2GA6HOc?L@3ZqU?CcYT}I3UNUd*>Ttw<}>;3ptdXhDyF5 z{TakXd1H-mm$&z|$vH#%7)cyBk}5}Z>(`L@Zud3k>U=h3I1I#HdG%j^rzDe|Mdp~h z2XBODy+3u;&?U;j>6v|7!B@CDvJ8Ek4z+Nh9I{?vvs718gG%cm6eL%W&({{r93+R# z2Yhk_qU)T(hIbd=em<8xM&ZaY5mv{L8F2Pi+Ts{MK5b1PIjhe(mQRmxBz_6##f6(N zJaQ#$EXEigAl86onpV;n!0^}V=@QpD^*Hz_p|t@~c!C>yr7# z1#KgRT%^|PTmJy9r?da3JThR@?vU3N=7nhu7|*d4Z*Q(9LcZ3vwa2@XF==2K8|_wXtSL1{UFG$g+470ml6D| z?=pJaDry|*WuAC=fz9Vsd14BylXl%iZT{8%dj>+9#dfiW5qt>Q>_@&!bSx5vRQfz@ zAXXPiO8zSf_xH3Tmj|TFJX`pcYK?(QnUng;=S#>{RJab>G8KEZ?1B!gkWD-G7QY-Q zn%aeK(THpYblY8;1`&^S+q~7mmb6x54hxzUb%&k}+#*w0NNtzw8>}avds+sJ8?~jh zf_#DP2t8}!bOhbZ0-dB2ky87Rgm|7wz`ZkEPit58y&M6pXoIc$3jH)^w@xzlRvOFA zlg*;SI?_+8>*@Ci9wHTX(-|~ky8A*cQJRcbl{qc@TJDK4451D zN9JBVV5BaANY5-JbB4Aw7f={Gh&b?CB}RuYnZdu^9n3iQ1Tv0pl9*jsWJLle(ywG(XE% zQ_+fGsD-BLy#Euxu+>f0jSTg3G3weXA^XduD^A|Igh?8+Mn`Ia`8EtCjk>&o4{*Xu zQz;ebT|n7Dx`2Kp`fwFy11t0tP``d)iR8gBO~G~y84KaJT-qNv47WrzJp-5q{%$Mz zG?@xz*#LS+BGP2ieX>=y46nA6A3_~=3_rV7E0C|?bIR$KcDVSp?eLc$zO7wd9li(I)d7;f_;e8+Bw4XI?v1_9yxqXq?RAm`)Wr=3n{tTKJpzpFU+a|ok?~aM_Kh?zzZu=CqwD6EVAu2=;D#uMTouR3S4Rlo+eFBM7kl4B$?CYx zBGY2f>QE+68g5i*4M!YA+G*ww>IhqXmLKHS;;3Q)?-HqfoQ~BPcnI*hU6Mq}{D9u| zzDa}$4ih6Fz#caIU1S$t#;kE{aG%cI*hYn85PmjrU(5$R8+H=m6HVa)BtA6 zd?ftCLzMF2Khu8pv;{sCJX5WI;S-#1KMs`4NOOZL4x-92c#QiUnT@R#UPnK!!~WQ2R>dDZqS!ms;pVVU!rnZ@m0*}&-5iBqO$M{l~( z28hU$4T`@6xbqT~Qf6!P=7SoJO?HzFK4fcL?E}V@SfizkA>9WDLa7It zhjc-Sk@z{)=v5dz8W%4M0R) zQbpBb^)6>GF?C#bJ>wbwcej4u-U_^1ZLIX#GQ{ZGEXu|cS%z>(Q)D<#RS z?cz-VKbu>=yNTN;iX+vG0f}w@z$lCD@kZjs^kd1pHiAd>?vF_hY*inbwZOxY*b12am@L_> z9KC1-D=E*k-09}n?QjP7oQLRDv0HuxRKNGb5NAK2jXJv{3!)lLbQvM(2+uM&hw!s5 z5AUPuh$$+F1eLh!9ZvV9kcmsk5w7iSeqwn=9Mvc~L>@Po0AGGs^f}ZUu4%s2-mCQ< zCpvp08Hf$zsW^%U!d*#dxvEJ@qNZ={KdQTjX0($4QSz zFPwtvln>d+wtz`*W}>()=sPIRt^Cank;fmet4Yq5A;hoOiuE}dL0&YUA2nrn8q(iJQ(0CRVZNs>>A*@g zX-_Vc>|pSCIOb=*?3ULgSMHCVGqzG_>Gp(wbTA`!00D+NarA|IhAjkD&C5?Cki?@V zSs>O`vbl55lb!V;bB+AkFH3`+xi!-bwr{2~m9kCFYTV_>s%u4f`Hv*ONv>wIOf?4O zwFIijZv{nFsi2=tIFJ0MAj48yiTfZ8bxhqBN+=MIn=HZX)==P&IhHbax+aXPfk{Qk z!asY=8w|8w_`~8ck=e!z>zs}FI1f=8aR?RX>@-uADTjHx{Yjxl(jpEWq$>yQTvTgW zOyqQ69;5jtVg~uf(woS(s1~ksXmV<`@XBL|LyaZm%KmMy{EMlg5gRp)qmE(_=^^jIQN{!HsBklfSxzH?#3 zeUcZ-STUkR?cyne^GCsUIaA;?P=J?3Fr$98ZtY;0bh8UfXk@pB0iT9;uK9BrdMD-4 z+zwEinDhR_oe_^MYU$duntd}@(^Veorc@izq!tX8!A&jfk3C${(#5KjSg$ZxVl~@UKQ(ZH`#& zg%LmY2aE^{>wI3f&*J|RkRVWCH-BNy#Mmj!?O=0@!y=2#NMWaL;7Q!qBTI%9DIj|i zL?aKmz{MyQoy!?~m8T^Uf4iVsW7tDBMv!2xnXB>wUA&qo^7mcdRtA{g0e??2oG*j9 z0(klVYdOVKtyRaYw;291zeLBWWv}aQ4a@1(Pm8qPNy!seuxXRg_wb}T7=#e-eY{Wq zJkSyZLn4!=(*|%6047S9ahl_L%bxk+ z0?1_i<;X*@nK=aEMdGM5^_mvs+eNpA)1&&3>6=NSOoJXi`U6h!?)N4ctufpNE{E$W zT6PAge~I?X7j)q!ZlDnHoFl9vi#=3$glNw)vpRmSf;3D`4xkZ@0`E+$rquXI;`xqt6J63o$VlnB1iMv857K;5(mNZlQ0}2Sl4-&pV8vXcu_Zy zcFIdpwT(2NnjM^s?Wn}%HcJG0*7tN;5HlQTOe63vbDTVJ!ZNk#u*&TU80vh+QuHPG zpiQF|;8#s^0S8Ir<(qBkY=Y?qSoyLkkX%XUoUl>w2Q$6ZieHDw)MZrS+0w?Uz9}Ma zqz2?*(;wYTxE{2Y#5F(;;uaxhy&CtAYT5SYul zynZva5Qx1*8#=m>ILk+RfgOicv>-3M3FDna%u8YX0GNBd(SIh@D3OcmkQ*6IPbqo! zN;;4t+O#kG^g->Kp5_nI!4Mp|bozzMDF!bJJ z&cg#dS-lxP+ZLK}dRw6F3*}glhFyX`!Z|^>xOq~)U>&7h;t%Kq1^LPqXuY#0X7x}e z)kr)SSpb8j-Du#qrX&=r>)k>ST^nt~ROp#$C4X4TF~k@5f>3Aj7Wky|WZAK68$bVY z$#;oAYU7V`nf)uP5=#`LaoFqzpX|?QkJr|#Vf)|T{^}v^UKYT0NT}r?)!S0U8eI{Z zDF|c_-a8>YX2?2scJEc7%o)l=ZWO^A^cabrmS;tvvj+L3rFQe1GLi&&a&4s45gBFY z)2|dH`xlrsC}{C*rB*tZ9q(MBM@&PNq~~wL;zyu=g=t3r3X96iz|GFd&db5W0^*|s zf#?`0*p!?sBu(8c=_Lg?KVM%~Zw9PR{&Sw5hDu$?C zliIiL+An2C$5pN0kICy7Bf@62t?b5{+LH~mz5$QpQlSJ*yIc;VWaDm@MH(o{J&_4w zzp&4WaH5>mW0=Fpza(A+eT+)rDL`$e*dCn6UsI)tcL zQhJg<$vRKQ)-(mcUU+AE$j=;;8xnh;ip!ByHY_%PXfvf+&vhqDThx2dh^20B`7Xrd zlF-I7`j}hjWAR;V=#6+`_IEL7G?*!S4p=CgCb$)tvyb1!tkoGbgMHNBq{!#txT!Jt zNlS>jBMr==2;_(t=NVcek%x;~!o668jk?Z353*0ez|YeIS>1GmhqZ)A$Sjk7`5qBilXgf*E!aOFz- zwh2Yl2KpE{N;38oprw>B2DN^mQ~$i3n4c$#XW2kUzg6}L%% zwTUx}w%yx$K;c3qZ`t%m9IhVJ^(I>;%&dToMoA4Jo`>11(00M#7(!r=buy4GWW0_^;2~g1> z)u|MtDU)dUWz%S=6-&Orq)dp3@^J{I3%c2=I-=M_Ow#y>*d^s9WP>2nIhPO;)lIP@ z8iRhn%T(jr?PZLVNsO)ebR39L`-KXzfFXp@5{lY_6T~B{{uWmk9wn5UZ~-#O{AO6?wsM^dNy^2Lrip~RfC-4UE0RQzqi_^!xC01UDEwscMlhgfg-WB}j+db>sRv5V zm|zqjv^sYeok>c9(oLvc`$4gEay;6G58XpW$;uiPn5)A-ri$b>4qPSM=Mv${lq~0* zu1Hgvd?1e1X!Fg=#uE<+DtouP5V+L&kFAu;fcGP~1k8(ngX#oJUM4g~{zw+Bc|om2W2d zr^eg7ak|BcPy|$wyNJ~hl@SU?%0C=jhLyCV zF+nte@9bSWG7m`ocLGJ;bxC0&k z2^te6N>hFmC3;s-RnP)1GzNnsaV!ZNLbE&KPzS39Mp7Zyj8VFt-V1@&e76CDLSCY~UcWC>N5voWmDGmTf zI<2+{QetJ35kayN3fnJ=iF)`!;~vMZ9;OZnA1Q6$J4^v~7_G+a0%XZO2#Z1<$v_n( z4pB?E9a|s;!%t;~r+66M8b##%hl<@$H7$)339{ep28pU_+-5@!fkN41G8ir+{6Y@~ zLpE5I@IIuFOWpLM_ZVt5h7wf)T@E0Gj}A}SDov9{sD;6DKgBSMD%2t-(xWq^g#7MDAqp* zIgVm>fR1+kt{inuYs`_kTZVGQW{o78D>Echt;o8Ey|LFZ2%(W-l*82Rt>OqKq<&sh z^3`@Jp*z{T@*c^IgdUJ>4YQRIBKV#nB={LS8oi;dPcvIIkWEt4YV2jYo`j^E@e5p0 zJ@6D}CbI=ZGmljn5}1V;)=U6ujPxT;E7S@4I8L`)%R428R7JI-D-07@vo`Eno~&u; zDJ3OjFA!;T3fcAsz?zcp{1!H~Axc z0z}D}5qMoV$u$EA%=dk7$Z5aTd@6y#7C@$&xG_O9u%})!`2|lEj$H-#xJlQb@^p8g zNlLm=e71~?oN~cnU=vfFC3Jir82Lbz*7~KEM}`NQYldG5>$S`&cq2G65T!sGvlJSJ z@$-AdO_v_Dw34KVxS~dtqk*JwYQ97=_1Nq~}H!jt^s*W&Ey&Z_Z z%1GYVBMf}oykSP5V;`DNn~^v~iR7aWwo#?2me#FJDWEV4l$q(Ks??QNo044F z*F-TL*l&TGjf87rJ=QJ(eZsV7 zHP95|4y;l(ecqa$`~`yA*v4tK&Q8geqz+!(f-eUM`6Qt zKQAMEUQdUP%tm9j=)H*tnL`fY3*pL^=RM=+6JVL?nzqTn-%suM;RRWt@P*E!7#&B* z@bhw7um42VT!d${6Pnh6jqf#GdJrOtGK60&* zqQ1>}^0X|h3H3XtZ=YCret)>8-{|tcUTj0J7HRjsEu7NXZmtH(*;=Z)u)5OrQoR7* zHx#Jre&4V}6|J||*PS{cArB)RyHmXyKP_tU-`+!EaI9C%o)ZesQ4d0U}KeaiM zv1U~)1!~haX^OT1Oj&xU*xXX5mG2ri5`)I6-?4eQHro2|5AYCUw3U^WP8yt-ZpYY& z;19fOkm`#=*pzUiuIkV~gm^2-)Vi(^=LSJofXkyY>ptzJVRGE~Nl6sf-<&ySA2Fv} z1taTcX=0DqPi@w*rpJEHWHbm#H^CNBNR#2ck(Lqv_FWMp-~&0^w}kYyA%&kiZ#)l% zx5OG1z}l=MS~`#g7GYH?nF^#YhE$q2Sst{1n=+rJG{t%jZu=ykDRWF~9n@ZK?gz z{0uuq{ccZ-&E;6iq+YMOV#Qif4??kkY3mujrtcS&2#MbUeEM~drN8r^ILo444^e+- zesaLzXYgj74BjKFKuaB0)0|1xrZ=OJrwex&?(TlAfniiN9_-hs=?=0J+h#NE2C}A$LNt{?wYkBT3-8H1uWrm4@Q6 zxSwQI3PWgB3SzE(E(2V<0(YUTq9>ARsT0iBJJr<2&r9nQ8VsLo-?7?oWPTvZB8O5h zKUvoS{v7SEKXoB@IXKr?^VCJDIJ7)ds5+MU5!v^4l~e4326yCn9b*`{ zNb5n+uhT=5xGAeud>Bw3|?#RebFQKC*J@c!c!|2eL z2onVM%>!nXKQ~@Z-NQi)@921cf@tFa)j5&*`Ta||HLVKk%V*`7#eq_-t=d_V?<0fF z;Me{^g4(LI%2N!C(|k1|N$O(i_mW(85b+CfosL$pEt}i~`&NcJFGk}l`z3l#0!6>R zA_es{#h7}je@QTK4>%hP;5}i5abB)2DK;}nPeyHXPbd;u8;vA>`~-s z*a@f;wS6qrk6Sc5lFz+0?c8tk5RVU;;or0xojb2c&9iJ95wSFJIC-YzDyoy;kTms$I-l0@LZlUka zH!8tZM*qfj757q|Jn~a@jXit>ba_==a+;(k3l*;KFU}rvA8>-)zp>)&m1A66HTLeY zwmiLHfe^PL1x4CyFEoT=+Wli>p7zpKRQ(uZCUxxhA+yXaN_{3~7mfQ5K1`EdH|wtA zyzfgh$w5-+c<-WfSIF#Z>mYG6@W)4hc+Kyr_-pCJgo=$(=%~|T*6l_oAn|?R4>!9Q zCC>Vu`PakJZBZUeL#_-F;h5II@vp^~1*GMz{gv{M&k?yLzoFI``*_JI+3qjX zd8>c4V=+8R`-+XeSls*IkLdU^nFg&sThK!_4B*h2kLfAqK3Xk;pfS+S6Dv5;O7 z$sWU`3BzQlKS$44IH;M13rMx~EOPURMsJfs&6L7FIXDQQ-aCnaR}4lI8`k1Ye#Uv+ zAF8HIy&d5`8|8xEGMBw2SguaLstCEegsHmIWZp-il&~BA<8I`+%xMvxJIYT+5pBHT z=k>;@lAg~-!VA}sQlAM%cRCtE{1$;U{asGaq+s;zN6K$I+wm0`?|=dH<;2e}-ZA1W zb*s9_JMx3h$?Vw{D0GB_uD;{Sf)v<&O zDc-9QspEceS>0bXja03BZGuwO1H;_DCT3pF07$kD=-3xNybrW4M(n#Fq-`S$J@a_|KpxT@%uZ@-SFe&&mdA4xq!U6R!&| zeGLze8A`uD9SI*U1GpYi53Np!Q3`svbCo6c(SY1FB@dIKAr>z>Bzj*i{gx+AL+h5u z`uwb;2$nBDXGIVi^1*e^wulZXNJtAKmk*r{Iu4l{0J1@I2|>9;>9^2MK#4 zX&|f(Za{B~*Wi7%iD+Skc|Y9>caX(~PGgAhQ~Fi_r^;6H9WWeAKJr(}!Vw-r9^)5a_ytm>%_K} zLCTxbC&?Qe0Rq1<9rHUPaBj2AdakX0bvg7jmO-E$^e~{!Uz()KPXF^J`9IPxfS_x) zp~A{kN0{HAbMpHw!&KJk+x=1yBv4#H7ZMGE4nAUx*5sXx-q+6wtmh>{CJU7 z{4J$FSK+wY@wExUSG)SY=%LFG_*CU$n-(C_o$Vzh+4SJCnCmE0 zslavsTlb}z;V=;~AYkXy#3>?p)dptm8`2gbEk29LTw};)E*R12=%#*vF!ol{+Od%SRhzRd-B3?(wg}Oe#1%r&&0qz!_f+A6X$3Xzp2I| z01|ljb!~l*37lehXQc3nYqT!?38D`cEe*$QC|hiiRW4T4dcYg+0429nBE1Os$N>AW z+qym8gTZOi`cdP_6sgJ5a8-u{&&{94N88~+5o1iAlhx++35t0i*$ENj6Ef}xKPll7 zM+CY8cXz(&xIPwv5!QAs1Rm*IzEJGx^h_c+WcVLNYvoi)_ zB6Ze!DQ%Ry8nigtpT&a{ef3%6wUono_(Uore?zYKAh{lkbqIrgrZw|7xz%Md3#fS# z?W|o{>{$=#em+icFjHoJ5ztG4KR&uM7NvIa<#slYAu}KoB7+~wh8+urhnnwVws2c3 z7nyipeKq0`@7IR6N-GDf-jLa*B%3?=3C3pAIr^5IzY&~?T;e{D;r!?~oFQWTdqWE7 z`3d`7AjJYmlBrX8qtb!j1^Yu&27k4FGEqvn4pG=J+t8L)F*&<97 zxPM*&Mxhv{4jrv~mR7Me`nt!8@CW{#czx+RuOt};EkwMuk99|>o8=54ydI1Veit+d zNa1V@+Lsi>oDDGl%)1-kUMx2ne|fadW%H+hjBDzn3#U0sQu_IO&x5-oH;sG#hMd@s zv}*_tK&O;*W7+$F=uPqKgU2821@&KzA7>qWTB8cQuRccCV)awjEug(Y?aq={3f6szp=PhZ^D1|2ma%?V(-aj3K+80Di~uI zH9yNR`Ghxug$`IypKPRLp&vCU5&5rf!;<-<%lM; z!5I`q1ls~!Q;wOol7aL5he2cXk+yVRUKspKw?xX38$YSl7H&!uz69-=xaThLbZB6u zJb*hFov=jdmOY-*nhO42I!8W zRc2E8o7`PKY$_4#E1&T(1%$}4F9OC#EF!MK12EL?v6MxM_C|c|LodRHiySoMxz)Z2 z-a;_8bgVnh3ZJ5jUaLtw~*ykv`|0BFOmk2*{rV(V;D#? z6`ZpfTsfU%u?S7Dp|z>raJ3dw`qg2Ijq3!Lo%O`-A#7t?4$zH`k_y(>(gAmMoyI{k zKj-}I1@Ya$K}6Gi>qB{L({Yt4lSmA-{);cnZc^MSIa5su2887Ml@B-Kf8quGEz`Gm z0tSYjq7xoc$Jhwf@pCp+s2bOKjtRKFX^hkLdHT^!7yIl#iDrGcNvfJ8s>_WdnvaKG zORc}Udf?nf13!g~`k97V77y@|X!t?&x!-ZQW8aC9K(%mkk+(?t{D`0btE~w9;uD*< z*Yc+&w#7YsS6|~v(58NFwRh8#6};;g#`YDvw^bs>xN$Vwn?TwLH;40)I;#)zxRZ_0 z+@t(Vu{%pMg2&t0jg4P7t7t}=bmo`8u2|$bFt*!RVVg6!yX?O_uzdw`orpJ5Qz0Ap z^1meDsprlH{$vUnaC#OD^?iS1M9-x%Z&lm&E{^12+82$YG%to<epG& z(UuWH;hI5Qkf~buk)=g|%wJlsQ-9!r4(ZkFRz{p_PR)?Ikl_LrmjFySn&OTz()!1V{bH;C5E%bv@6;Zm^4Vp&CgG4h?LMtrxmd)C zsIfkEhhhvRn2x@C!?;gpyiugOJ7nB?(Qx~DBfXh{D@cZ^)jHV;)M>`;kJ(PK7NGZt z+a(tAV|Q)p$Nm6O*NYQ3lV^knBSA8CGsOHBgb-qwqRq75$6#Q89e0A4!A2xv(GRWq z4~fxl{`Q3-GsU4F%i{PYZnwp!1eEt6`dC%Jy8yguVVrN%E0-*uqH}!v5>}Ug>~5>v z$OIb{L#IAPq}`4+i0~*CQ&-Opjfpuv-zMhzb=uUqvl?!p1^zekH3+(YI=>64kNhtT|~CK%p#Pd!f6hF zyPr?{$xJ@@C09Kd>;0aY!0Gnkb#n(xvrV=k$q+!K?mVe;)xvODusD#Y;@c_GS@MS**ICc`hD_o^ z-?U%jU_tlv&uPda@T1Cb3$jFKvQkfmMIxB)Zcl#(0$vvFB=C)tE>CDddBYAa zgdJ-eqe;djm|)dPlRBY4u$taz8F zXF0naejYf)NfTv+v9z9=uC>lGl~bYAG2!2Y*T&a!b6A+p)aoVv2TnlWFOzjK#!MEk zqs3wWms~N{YL={jCrvs?ez~YCl5O6?KHB%ckj!XIRy!o*2>2KfxZL?5Oe{*+c-kur3_uCpF|h33-hleo z6JdP=VArjxa2e(5m=swfDwlra)?1=Wj4+IqL`58=5E37;4@whF)GWC^y^Y7Iu0FVj zOe82AYkOwfJOm~zpdGvN1n=|{58M>GGIZ}$l(6oM2TeDjmNoq*e4BgY$tqKZ=*=mu zdq{{I?`{j>v&vRi7oAjBzHS*p_-`|rNn{J~Ae@$!_~GS@QqO7<`6obk3Q?C7cr)T5 zPy6>#!iXA18L-<<=6+qkHPTmU*3`P@3_#?>Vd=!FMju=zv#O z{NlH^N&oNehPkfZIq9%?Wl!8dfE{3L9|ZesX^`(&EdE3mCT)yQWc<$NgSP3{-xv0P z=^17ikD%Fy{4=XCcL5ymCO&R$ZBzaxrmH{iI;M6?#V47NR}FO!=L@G+$rm1mdeM5g z42%!!nOGUFgu7~X9>Pr9@WUT6BY1|~*0c$>cBuXQb_v7OT#?KLa0l->>5McpcA-Ds z4(eZMl(Z;lY%nPL7dg*7hkZ zw0_~RRi}iM-pppO1-Z7?>>Lx*GCv@C=eLzV9kx8-%>I*YoG@At$#uQn+X;tEzviN4 z%-_;}YyLA*bz?7Y*y50h^i~{e#yc-pzb%$r--j=~_#sHfp8X18=d4VAKN>Fzfr$H^ zuVKdVY>&t90bZkLzP5{7$S{EDNdb>Q-Ns)vf1<>ze(L8+Z)*qAna$s~Aq(5#syd!wg${7}{8a%(qh3g^t#Z*iN6{ znI=rAE##aolN73jo85bBJ_(fvkZA!4 z%WG<3xET-*%kOk5(+AD5@bw3Z?56kDdNV$utVi+Bdm80pY03SSn6YnuP z4R^&3UXB60{Mt~CHUTf{3sdY5FI+ z!;Co;OE&dxI?% z=eSvJ>mBodMV_QRmDM~ZhjEX#>M!~%iEElYe+DdN=O(E!H1Duw0XBGrKXLm7S}nHQqyy z5vxBXb|FQiOwOY-AuBw!e3(2QO7Afe%^%Oc*BBM9$km3kdRl&uSCYQ^4zMLOx#qlO zG61Z%!hgZ30q+sjo*XRS%}pBNShAGm&Z1jB&rf#bfq-ge&TI7aD4iGaO#W-OCP~7K zYqnH<)fcfpXV>Ipx_7@ydUXPpCYx~r7_52b(qn9F=uZ?Re*a3FnkqmZZRTb6a5TL{ zqo=Mjjrz4poMwP)Ibg4Qyd_>Sa}hp2Hsz$-#*BgLFe>3-qu)AHqv9R*K0^y>)mcd| zk;qZ^+Xdj^-5&>+BDQL?84}iGxn+N~WgeDbckb@qc)Lc)k3$W@>U(c72!&eqokZ(l zZHRMB?Tj4Gy-Wt1OWd4mAlN26tOfy3+LbxlatbQO)P*_dO)XB^Afqncn5lPVAZ{&| zwzNWJyw=msuQ_<4|XlD$#owq1GAd=X8J{W4XiBt)8s0eeMaxpi8!A%5`s6uDv!EGCo z5MT#{w!;pI?INVy9hDI+ml4arhfB9*ksZtlLM`2LQyj|VL$=-#$_^pq!^hw9GYCXx z$Hw2mGKgk!A!HrGZGqF-vK#M3ZNXdI@>vTecENTWByGWM-tt%r5p==-ISAc?f4dbh z-V@@5P=ATAZ$?Hoi0y@wu;n5YLU)Oi0}LX2;Z1INw+G{2Vi^q*d*N1ZxwnV#UgB*G z!h7MLZ~6NLqhDf*4C3G6$v{r zeT)Y#=$?CjJf|@F{U(hvlVtD3SBs67#-a988;vxh;poMWilvvPqV`J~js%wiuf_DQ z#hA0N@;_ps7v_MCop#uq6e@LwTA!?;1&D(nDt1l^jyfc1`2R;y`2UlxN+V=&yFIcN zMXVeIgt3y+$K{@1?8>FmRe3NZ)4%dyAf*TLVBq{e9|0Wd_=K@2`#&TXa*fXHsoekY zhBS_9nj0|`hO4!gnWk{q5e&o-N&mO_TU19o0cZ|-sZ?)rZ7j?~Q<@5twu!aU#Zaon zz#A;kg_?M}p(bhUHq#{;Gm~QuE3QRJ>toa{`vST%z8B4afvg0|O*;#v+GvZxA&*$K$bl#czVEimb3w5)x5El@f;@&;jg zEpUt50tN{WF655A6D_dKJKAgEg3fe5d)HgwZ_Rkf`X%ll5`ZnW@g9TmzCJG)wryCU zc)AOkoZeY4xXEpPp@iE@GNaxxFWBmB?)G@z3)+p|)v^yatRg)TcL?M=ynYc*mkc6( z2X|1$+f06OP8Uo8J-2s|T0;T-DtF&7nB2HnwZ1>Ef1jtd=jMIs&b>nhcF4zXT^wS0 z(!T1Ty2S8E69a{D(-Su44eTof>#>q)hK8sk(ScIL;7hoM$6tU56xTIxtBak zy%YdRlZVEdT*o+1G0#!}Sf1{pH+qHgtE@=%&9iE4CRT!r0zH1*JKV9oS3!)$;2%l)}+U z_^SHvdH}fMtL|uNjY6=p*YmdV{wY?Qwi5&w%}Lo%-@ksDT&(hcow@ef>}ySR{6Dc7 z(#HjWCHbO_{IWea;|sFO4tFQZL(7VqYJ?A09wt#CBA%oMbEuU~5TLJ>m10iH61}er z`EODJ208v_rBGb|A7D1>8MTRGsbyT~x3dYGuZ4SO&eAZjViV#%g?3^lY#(?%O-4F} zNo+=KAFEWuz|*(C1oe4}(6ENBNy^i0KzoU3HIMk-1pex+ihYF9VcZ!z2J{rZpc&n1 ztYHn4N8isSXfQbM&Dl=l{A)yS`cz4PKrwABy6G+yRkcJCno@G4K&$vm<_Fht+Vw`rh}A4|mp?NO_2m58Han zUU7&&BM2Fc(0-{Fxb#i+@qWt|5}hq1gQyC2B4pF7q>daWQlY4~4Fe~=m~u$vw{KCAJutyuW=VwDZ9Po0F>d1&=7oV_+aA*&6; z`~mNO`u11X*yFOLOsP*X2VS*d{dHXcT%pV>H!ZKtr{x_hzj`8d{H+*CX{W*z%LE+> zI53j_@?IPSuYg1?^ipddw*K3hp-30~PuGh7FRycYklyHu&F3%o0PYv&_^|cAx=BTy z0Y)Aev%;^$Z}PWW)8y7{udApKzOWmQ0skV=f5#4E`&A?TbvhN(fj*CI^CyiTmXGJ- zg9R!>2W^63r*V+;3GoK0ba5u8|06*B2a18X(@3xM7@MXGdt&Nd8T4Q52$*5p$AXdg zS9mC4A6oSv^tgn#K8>nx`rbZ-bP8IymeePow`r*AFr*V4A->Y1a1F7?P|gzm)6^?H zo`ygYL_*h)-wZjU^qP=FQt~0do71C#BgB|K5YhaLr+086CP9=MADqmNGf5D&3(lYk z^B`bOqAYnWHMHfG9eBhCOJ`0+Ysyh#!l>N4%!gcRMx@+##0PB+CdSwBFnxz(y#G%N z1pYRaL9Bu^LsbuM3)WxZ;nx;e-ko;_5hpItj{Qm*F{{pkKf6D-AbakRt;IYzi;{JR zfWt#}_=MN+klG7HW!pt4=-}ctJmmDkJKxr74?ehrGU`|GB0S%8Xb)e!gxl!Xzk@X1 zbZxhOr`dPq?-%%2lt}j)CHneB{1qkg-hr1PLRw0=LloU{dW`;YA@~et#)?En_ZO2+ zfZp-dv(j+98aT1JaBa+sSpT+ghQh2@1Ao>01$9eAY})Iyin?*)eQ7a?Z+ z6(ISY%JDBx1-{f*1z_>@QZ>0g5rxHpg9@;tX|yrWcZ1)Lxy_yeFf3fzfe|r@jUp*OS=dcM({ps;1G7aENj_Myr$3f5o z?ydh=RaN-E81)}Q&5(ZgFG9V?F9z$#tT;1RzMK!3?jmkclNg1o^1zwPCquRQUx2g; z+SmOHka6GSCg2;EIxU>O%iM<{WnXH{{MH(2!ePpH$II(|5 z{&pt(J_Or>fxl&D5UjwCty6H1pEQr&2GzXHXb|_Wn3dR>`mdPPbCYK+e$j>Q@0fL4 zWGw;yf`Sa_wf|Slny}6OUok8G1r<1EErYsYH0mSvB6iwl@eB66VBP3@xPu_yruK{d z@xNnMmd?K0JIEIa+?w2r|D&}l538!`-kNEsprD9=APQwv4rd+=Fe}K?RJ4@B0Yt?B z70QIC)RPv2Ao}@LN~V_3SCIo?YUBtqH8?~LkzX2m%S@#t70IdJyU!iq?tP!<`{&1B zo^{XJ!`kaz>s{}`i@2n+q}9VX+tadToo<{9x;=H&yPyBPk}7(@Uy|>*!9M>0sM{}J zObVU#4jQ;h#Nk6l@2o!RHk}~wKPx6gJrpv}>lkTatdJX1^iK3QZeV`)Ptom>PrLQ| z4@m9!!i?2lZ9lPj6S-;by%=ISD(XMMCV;Mi@R7@iB9ygJ#>{KOdijxS?~u^wy>k*~ zqA;0vlhQH@pV}TSJk)kM55&;?^hth#=hj>$s?|F5{X#E4(!3F@4NS$b= zEy361-XR}56491jvmF0k;lHM7%I8(zuG#v+-{U&T5%W`#P*yG*^yyRhRyclL{79+h z@fh#!30{Mjo}aU{rc_%~_3xN&qZ9lF=RIEvrt2d`#se=VJijGtQcPfS+_O9C zUX1BC_dB0U9|oSRc`YU=u&m?oxQQt_`K7#4IlCbs_QT%8i@NW6a&k)M)-sRXn;zVq z5PPj+Vbmq>r}mY0dM)Ag%b5`u@&e0xFRUHf&}UD4`sJnJ^*!&DsV$Wq+^hFD^t@&1 z;C|54y>_YQ4Z`SNGtk$_I_tZ1wQpv<=ALbF3&;yO{Z;YGl?Q!S)YNNTdJ`F=t68Ud z^IqwVW7aSI`qPcGUmap<854P;WlUNANUG0~+688@`pwib(!7S&K2Yv05-p>t+`}wZ za=8!DGTtz?j3MQH(k)|u%Dk1@)A*xiL_zkK!+nY7Hx!1JXM_PS@&OWg>|BEZb&s4nM+Tl-2;NH9&S2{=3nN@23 z?aUFNiZyFnyG^(ByS?=1=I|wtohT1#?!BaTSZkjH@k<6yFl&$5k8fYK*?4xr=MNX6 zcPl43)9Vn)nWO@km-UD3DRg~g1U@wxBgv?cK1d14nIR1=^zD;Rqz-&KYN{P+NS$6a zp|fTNAA~qy#%6TA+jPP!OXX}CYUc58M(URr7^pR|~Wav%Jf=>8bF)7i(iKLE^%j@|*PoZhd#FX=!#=f${(04udphFv} z+;t)Aj|)p9E-Y{QuKT{S@P&^}znrt7R9slOt-+&H>7y+b8!u$vZRq}bLXdlP>gBvU zr6YP&3;?Knm%W+FWu5bMuiDfeQ_G9EE(vKn>N3_9rDa^FrBj#LzX8a3(FStov*SMi?KJuzYUkxKXVc~?^-hE`;jyO|2%d*$wH zEu-=+uym#5;W&rBZjPCO-Qy1mmxDpXjkxfLB-ivaNUeWhgtZn`5Uk``=+!(tk`_JZ1 zpRIpB@K)Cmmc9-G*qult=|iks$_z)G+rZq_l{qs$+LrQ1(ksVqn=xHnUrT~`w;vHg zEJU3^oEoN1QV_K&IMM5i&{@BT%d9vldIyvY)rkNCcCkrK9m0-bWr{MAfJs$9jVC40Z^iL2VJnLK%rxeo8}*Su}L zE0LV+xyE$1H8Er&69tn!5FTqi3PNjZa$@b5-XVLCr)Cl^Nu(z{3u-yTxHjw=97wI1 z0&P3?TM_#4#Scs$tv;PID4I6P%NuORa{>YZaANC&^ z=<|eG_2Nj?gMMG;<`enK4q!82bX;evdRg-_)XM~@mon7LID65X3xFCieXUjRR6_Wc zRr#eIhkqENRM$4#`+ma2l&r0#oriA{cgKxhP;>Ia%DF3+{l0Q{{Oc)s{cQm4ba(o( z#rM7Nd_jCb%ZWpmbB8`slqJb!c@IQAD;$|~am=}xvUKm#$g+?%p@kp%6)nr{e0fIQ z%FfBpd5*cF^;2JLL-o9Vc54>{p^!%q%EW?kc7mwIgv#_E6 zqj9DN^XS5wdC*{HbZDuZ=KIz@-t*100WCEhNoAd{`Q8_gw|4`zfb4Tzz|sWX`zcGP zdlj$ssA^6RSk*fJ#NwSu{44bbaN1=|mQNx;!ww5e4<@ z@}L`y(|*b}&UOr2W=b&LV`>iY9>!dP403e9B38PR#35E^(we{|# zncOM#C0DFq{wmRWdE94$TM>is)rCT7eoao*Cu<`xXnJCtcNi%15G>>G7l!-%ZDxpf?8-^By{&Vb{v`hw z;Bwc>82rEYC(E~uNs#HWeZrgyoK(uC`ieM9)R^-mJe|ntzi}a^a7He+0S1bgvb^!MmTtcck>D%yA ze$%+|wh@03iHFv=<;I8oZAY`Zl8DrWM#I=RYhEU4!0FJ;OXBEt%{K$SJCb%?pZ3A2 zF%9)Mb}w8$)g#s;FQM!04r50b`;~0!v>~R~zQ%veI-KD#^+Nu|F-|#+{2|I z3oCpYdc|%Uu`8>xBx+w)Q)zfh*5DJ>Kak4Z-%5vji$DcZJ}t1(qe8iK}7 zD2_Ht;@x^wkJNneVk01{Doq%BaC|^!eCju|v6s5WnATJ>U~ewq!5Q}+0XMD=UB7JN zz(l!KE@(}vP1XVv8^^4u)yq31gijut_WP9e*;msZvZ8m+2T4skr{sN`s&A{fxAo#w zY-6&;|ECVwgOkgX3vy!3M$ssED>kj)AJt9eoo+M^9aDQ6Fg_O%mUCa@j(65I`}aRs zRj{l$Bj6Ypxa#q`q|cI}<(%yrwmh*}+E|&F(c@@BmuVG`WON;t;4`fzIU{g?%J{0O zRbviS_AAIwzcL7KJqq&DoBOYSZ34_;J67NH45}>qW}U@9BC=m;X2Gh?2Ht>JM(_Cf z%VbMS{^+KVzhhD5@4OebRzxg2(Ya|%`F8{5KvsTL3k3fHyuMnOxbrOOL zg1qv`i@|6ON6qwB<_2dD+ik{c7nG&__(jSTl3iGg$){N0KGMb>IAKp2lIji29c)nM0&Wuwyyw#ui_>U!t?4l2*N*eqi^eKVH4r_tMy*CpRB%I$d-rXu+!D!wsh= zp7)t}YerFx&#e*HzkQ;&`Fl)XY=6#k%{_*~4dBSnfO#I>%zp@~uJg1_<5iWhNg{in ztjNrLvd-F6**c!lZemSi2h=%LqzBYRW-%hqiSzlogIyyR69qy%>eFKiu}LA}SJf zpTzMJJ)VR|ooxokN%#sLXCtvmE(VlEjhRH%=tGb=U8bW%;(4A~ATP+WK@Z3an$v0F zuq0lR*@tC;SqvhUS&YCj5h39VhwK|R>==+_QDi2O6@}S}rb*1iI>$5j={yr3l8&Ht z-mt;JC{ae(WS;SYE^BlkNxCM{K`3)Pg9{l)LdOyL)+K2G&L2OHK*Fyr%JgDnNmK0Z zvU^LGIh9_ZEDMbLWm)3sBY{nF*bG|=l4XV2F>K6^Wmy-Qi4``|k(30+GrB6#9z-(4 zZ)!T92?roD5L0-OffJVOoLb;YMGypffr`MUB?X}XubTdMxL*+k#o-#8XB1IqAf^Bk z%%X8jj7{bQddG^aw2L>xS^-p9VOFgwqD1dRMR?G$psIqv+C*m2s>XBl=2Sxym{lXC zFaf7(I&&nduCxV`&0DIjakLjSj?EPsrjR$t9n9+EFft`k! zp@UH4rS>)}{xn{0ZzPc9G+tq%6*XC=k3{1&7d96g5qOSHaGGF<3>(k{i3u)EKo+2P zEGSG`)=*#Q{Gkb&3!84WVgGIJM;)RA3H(5%GnXa`E^IC~BFa1+{Thfwdk>oa*8orE zoJ6+1YZAxQat#Tt{eb4tp}ey;(S=PiG$xQFnSqXm97RJ%15sfo(H)h|o~kuCf$<;! zVLhgHWK2VOXU>i!fBM{!gV_NU7dF*}P1Bv?i1;7j!A7RyB3cy}J5fZLIXXpQ=o(6x z&UjE!b%QnP95bNGu>-2S3!C7=CNhOhQzgN6>}~u{Q)Roc4G};S6Tzy=WK2!tm};ky zj6@%uCQ$VN{s#wVN-9W>3maQfHBDidkEW?EY)Dz@3Kp|Fk!QyPtz$LF6vB%)6t7D0W5(qIO4;`|8!I=W+#YC)+RCCv5tb(HlUSH>L^&O z4Q0$RvF$!X<~jOI(5twxi41wv5rfPEW%M=lBvjVYH=t}V3W$z^#dt=S4Hrg*X}f@I7XyOXF%vV=3y<~C zi3>KnIMK%cU=-+V1{<>z*kn2gVPmjO`X*XSfK7BJH1I!+3eEe`DKaIMCoK`>LfB-w z^g?Pvf9&iT9`iEyiK4*M{0}#RS2GWzuc2+KQy)i;9lDE3cS(q7Mj_)REZY|74*mxT z1Fa@CiKKEgg(i}NvkNh?jPcq>HCYTaM#lXzR4(WH4BV*m%z4VX#8a?C#DE-73xq^K zBZr4(X5XD1+ORPVF3u9PdhIuJJwpry2&DIp4{5T*Bdsw@RS}}jd*W~(+5&2+s>I9m zmT-nd;4_neW36bbbmm4?qbmb8$@)mcX;aCV2fe0MB3_quwe3D@5$1Kpj!H*PgbmAf z-U)gPrrAPo&(VoofRsvi3W9)`r@SRV1duc;*P$$kI%`vD9H5_IfCXE7ieXlI*krmZ zz*?;2ocQ1Fei-2gYR3?w=wvLAHB;FD3JhY8eimIQy<>?(Bh+@EdHw=WsZ-QJkOX`| zecO!$<*>;zJ&7a(`t*H}D(M9x+~}f?`eq2sjv>D@u9n!o77v4%QWHY~rqu$Z0?5 zXhYu!{esTeNXL3>z&P)L&q*qHZ_ zNE!?^#=90IG3Q0fNW~(xLD*1_&HLIsA*0yP$dXZOXetF8-UL#UfG*G>B|`?HGdZd! zLZJP#Kn#qGq=i^!b_W|1k18PyP6KjypMyWfLB%&nolfh2&>ab4+OLMNKaHccR$`;e z3d+1ppEKklCPhGVU=|GDabyqhq6E+qSu4J1e%Gj_q_hHafO#djz79q2F1~2poNmlhP5T4IHM%-|U&YWOJC05N2uUnx4FGg=}Br#dhHtD&$=jQ1Hbm{37T?4-_jqgZTmH&~ryJ8p8 zxuLcA9bBamfVCSra>2oHmDpa$R~iR2(*qzIue8&e;n#XH#>6bd2YUKEhSu(SF@Iwf zQY1S%=+JL?B0U+O%i$dcT<0#N5G>Z0He8HJU{o@kbvXFo+N_OswO%CK3H6&88;pfJ>B*1Wt z(cht4tfyN~A4!A;u^hn!BLl{?n7f&)M|ruO{Vky=VLUPcPDz~?*|q4bfyYq^T7q|g z7Sn@$Zd&hI;a@6MD(u53rYoPbX`^DQxXoK=nVejrY_#MK>xf?{(wt$03!nh^?HWZZ zABa+N{2f4rY~m4^+drTPQJ{=Uz-C9fDBZ)h@4Cet~R9WEC=KtBGYspw!qeO)OUd zG-);Yl}vgmJGB;C=p@ccfNg_rPU6EoWr;T5YQozeWBFvm$p~?2m9pZ_gQPH)DU@b7 zMR5$0SYW>GhFs2X#k$f+rShKfUZAB+c3Oj&E<@(<5fcyGr2ra;CrzO7f;~6kg9l?$Ow3Kjf8V z@M`Z}{>nIt-c>Q2>y?8qOOS$|wh&k}ZZyVB1QIQ|C$hZ&jO4hpYS9;qFEWaNmjsii zrmc`+eVq>vQ|&{fQ4*OAm0o&qHf%bO604+4^lCj;2L{1ewAg*RTaKM&o_IP2L(@Mijt%U^E+A3DYk=R zjA%JmUH;N7{}mw101d2kTjA8oZ^G#0oQA|z3QXpJN})vQw&F+4fQbA~ub9ej2cTGX zJ?eS|iC4PVw&p1TW8HdSGfdsy-tK}|Z0iW=&qeZ7iA5CHlLnhX#5g5O+pKtzrmuFz zT!08pzBjB{z$pz7w6aVQf>xfyd)^b>8V#M)5-6glyuim8%56g7B(1L4+Y)5|S|W#R zOtaa~7c&A3m`iYRa2e2SKV6mAK(@$i!4rW$M&B(1`m@P zfx$GKBP+DfQF$d}qUnVRmLTyD^z-Fi3)?J*8_~DCam3!|QP2Y{L7e>e-SGJDiqG*O z^g`tUL64m#v_}Q8sfK7hZ{#YwPC)he(QM#xE(Ys z8^VOib5?ck0+=Ij&)IxKYr8H6j*|8JrakD=oOPb0%Ob+#1oyAa8&@UTl?zCBbfHX( z-4N`u`cKM;ExB;|bhTA0f%1gq>IEo%@TU>O@&cS7#fV2R-0@l25CPutS*X&8jxLaz zMHFo+qBnKc4NG;W;ywRFjTp@VH}f2A6)d0^&XEYE(hz&A5`}j1LVM%Hke`F~R&i$L;_(MIx^>8&lAf?S8y;1Ri#YE%q+V; z9GXBg3cU2%U|$(7i!TsLdLl&_dX^-W_tS<~1alswQRpo3D3+9*MG!8)6gH?io>f*b z>!a{;$j5Z3Gf57!#pKnlOxX zD}7B2$GTU1eRd!^Gn8{xn7iJC91{sY>uyGQSm_Sp1J zGiih)-_keL(FH-%grcol7raPKivv{lwONjcP>%_{U>LAX({?q=PN_27N`t*H+w_~v z3cA>?r71Z7n;jT0h@pWBd?TO-^N7wuFHOPNs+sclr8mn!DZcM%Ii2Pazo%Uj(z1g7 zTU#$qWDUjjP*Vc=4jtn4qhXzxsJ87-!tvw4Nn+cP{5Uf2FT%)DcDv5Op@cD9A&&{8I9(qA@9S)?kQd)AQMGZPQ z59Z)W%_7hlugXQ}C1;T*|9$E7XE{65@djY`hBPr=X!f~l`;e^eo2lDhe*CSaA&=B~ z{N!fIXfGCwGp>7g+C$1uT`=D}l`NpU#Ggm4ec$|1l{Uq4v~9nmf=v8k=okGKy(9oh zGBAS478}&F+u7?>_Uy{qGs^_+R;$V#&|chVjhCJTDkH0Q%3s8qqUZ1@G46RUNd(}M z;2Q~qjKX}~b4{XL2SR=e6eFD(XjG-^0`@tUdMfJkWz(S9{N?%^TCKfqL1P<1xyTF| zisl@r4g}{hfDstocNlPsvW%}N0G0(lCTX~*DBX>*&Z)1IAa?n^Pu_IW*;GU}V+S-_FlyjCLCG zv?UbbcDP_pte`bs5-4WRbHOAdx2U6-$*9o)QCO(7xx#G+Gs#0{sp+EX(D;fEVTBv!K{^1BT^) znKK?Z!7+0aa@__$Q85VyMPH0-l6(xDbgCQxl(z#qdfKKnrcDiYKj1z$(61CR9(&*U zL23%H1^o|UYm4rFp*iR`sitBeITFqoNz4;h&z&!9^805s{#v03%YZjz1nR{}r$EYZ zC7?_Q$-J%3?K&s8hbLpt{F9g!G0zTKL|Ija(cWP7w zAZPq6oLhx0i+c1fzNfazs=2qE`OZp=$ON<>emLVd9?eML3E!<)y5_qSbj7BER<_Qv3O#UYLzQnzM2nWJ z2wmYtBj}Op1Qgb<%s4ed{tvmf08qVVWLp=sC%ESnEAgBJ?4H`Sk(e}rv?G-~tpITp z-AfQpv|8hAD`pm|V?O;cA>n)r+svXQVFc(Qh>htG<;Ps9Wa!FdOKG!!x#mF2Ym@vr z`hv!36KPV9fWjNCfk}e@@$4^lMLqD*NPEfx^bvqRS;|_E(7@`ICKbTYs}cFueE)hLC;fW)@)bNw`LR#szBaKY(^u6C zU?Uk&aNBr!6P~TX0Igj~Ej*|UC4A1+pYF+{V?b4{{Ox+m4t~WNYVq-4ndH!4e0S)< zVz#*h^(&;b_Kvw6+OQK*Q&oS3HVd=F4Rj1!_4KP-uFDld@M}KM-XBM3Md>s-p?kTN zi-Mab)r-mgBZ;cHMDVe+lW!(JbKMWP4dpFVwE8vM`F9_nN*blGL)cGakDd3wiTC!@ z6E>$=@Eskaq4A&TSyY*aF%Plr$qiQqV*5dkMA{uq5UGjmCqNGdV|ns*+gL(@lwjQs za-`&i_vmq`Bz{wpLkRPY60(8q6cE6EzX2am;0Z~21&B;QKTLiCQJ0{XS3I7eAW{kh zGtJ8@01Z>Y$HN6&&6CR`{~~n?8K0ESp?_WHA#`zReDXEEU}06UkfGE8clnSAo*b7n zki)Z;OJxg_G*J)QDa{b%+fSeco-_!ZXyh9`LpeD=s>5jI>h0r_}o7hf$l+#|Ipr2(~%{ zXbG(*eA_sn`DA?8A75tgZ?T?XPXG3ilDXz=RZt5KD+9?%6T({_423+jLLmTOQAT=1 zZ44CB%#t?|8aDWbznER)m|*_|JCT}JXopZ3+n)RXQa&sS%*V;L_B_tyJ7s44fOWnO z-a5IvBIX(5nGu2!4l#SeV5nrO+C8`M3?+;p64LVvKRufstmk`zn?)?6*5B(znN7ub zjkMZQnjg>clv*{PF}MUA59WW1?dS0z{{Ib^$AdqVGi621s-9X9^&{ zJz%#9MC)HsxdFqK?*+MypPdoHE?3kJ^cSzw4oWM0Z&yf4_+3U#HHF7Tlw*`PclC!s zv{-;xxufF^2n^;snVn1ZT>Y)Ve|m24!UPTc{hkIsrtujqTw*0^ktv-ehMYI>Gl+AY zSiq*~8-;(;BnEH{*b~oB2a$Pi=&q^&KEDyxqwsrN9zZ{E@gMr95=U~H!-kn^HdfAz z*9%xb!32A>8SbTj%O)6%2;6tQzy|DN|Is8&57GoU5-5fBgGNNPOcvuOi32K!UI1h?>H;eDm!J1txr#u5f+zn4RF5ZgF9Oo^1)k;@%k%@VLHH~N zk#nj5v&AK`1?OJQ%pvN>TizrIqQ>xt|M~Oh`2^@o;z0bxKNaY``xP)W(o94BxKK&yHQSxp?~cONZD;n|sPbom zkA+H-Nm&id0ldsnITNjgc77PSr5s{#Ee8CjLNXi)$PufpG+b4ikb$)J>@2fql$Ef0 z9)?u4Z^1&|aCMqRCnqB1L!k=b9LYHj?n7o8hW4Wv}+ z@c)@))wKfWF_03Q$T1plAQfm18zl@X57_r6kps35f7D6H20Tpxd8NQ+IZU2k0>&@d z2t7>%ak|`(5tdgU)Pt`C+b7KS;CbK^882kY#lM16T%5rWZ+^xIK*^$89_!)0G4NO% zG+}T*2gydx4Ye#1*kuJWN(4?59|LM*#&Ii|Edoz@m!VTaWah}y$q0YSk=6tZ+?*J- zSpgvbBOP^Z(0$>hx#>+ljfD}ueZ%BQOuATuS}xIsbPE}$cI``F%zMlfu+PIm$MeZ8 zhQ&)OjQ*`n+l`&zq402>>!0fn#)8+Oo_q=DwdZ$_1)BDlj3>Cw2m=fr_K;X;TFdHG z1LM(3P^-A&Yv%be9Fr5pU+vEJ@@#k5fa0c^`6^RbKhmmzfuADB?OOi}XbIE5Qwkd? z2hg}$c#bf&|1m$o*cyzk5GU3cdtri)G3tI`4Yc`Z?t$b$HQBo@5#;|Qw6Ip~Xd}uz z<|)t2Pxoy-b|Cvi*}mCGq+OKlyLEO8-{x9ut z$jwk##Yp?`N7*|rAFy06TyIn(*&?6&YmkvId&(poZ24BiYl6qL`pBh$^Tg6?_!xg^ zf&Qysx+iJaoMT{%i_{-D`K}uU_l*T}P5CauTHOPq`25ee2g&NYdK?|Mx-=S(vDZW~9xU3_o%3Mhl-FnZv&;sOd=3F(Qks4qzn7jgIScBd5TfUBcri){!xxLp#sbw{7a3 zM5L+XxZ+^#KAMxYXztf~?WWtyifa&M

!)+EjN3{8 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 z%0A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 //printf debugging + +#include "GLDebugDrawer.h" +static GLDebugDrawer sDebugDraw; + +void VoronoiFractureDemo::attachFixedConstraints() +{ + btAlignedObjectArray bodies; + + int numManifolds = getDynamicsWorld()->getDispatcher()->getNumManifolds(); + + for (int i=0;igetDispatcher()->getManifoldByIndexInternal(i); + if (!manifold->getNumContacts()) + continue; + + btScalar minDist = 1e30f; + int minIndex = -1; + for (int v=0;vgetNumContacts();v++) + { + if (minDist >manifold->getContactPoint(v).getDistance()) + { + minDist = manifold->getContactPoint(v).getDistance(); + minIndex = v; + } + } + if (minDist>0.) + continue; + + btCollisionObject* colObj0 = (btCollisionObject*)manifold->getBody0(); + btCollisionObject* colObj1 = (btCollisionObject*)manifold->getBody1(); + int tag0 = (colObj0)->getIslandTag(); + int tag1 = (colObj1)->getIslandTag(); + btRigidBody* body0 = btRigidBody::upcast(colObj0); + btRigidBody* body1 = btRigidBody::upcast(colObj1); + if (bodies.findLinearSearch(body0)==bodies.size()) + bodies.push_back(body0); + if (bodies.findLinearSearch(body1)==bodies.size()) + bodies.push_back(body1); + + if (body0 && body1) + { + if (!colObj0->isStaticOrKinematicObject() && !colObj1->isStaticOrKinematicObject()) + { + if (body0->checkCollideWithOverride(body1)) + { + { + btTransform trA,trB; + trA.setIdentity(); + trB.setIdentity(); + btVector3 contactPosWorld = manifold->getContactPoint(minIndex).m_positionWorldOnA; + btTransform globalFrame; + globalFrame.setIdentity(); + globalFrame.setOrigin(contactPosWorld); + + trA = body0->getWorldTransform().inverse()*globalFrame; + trB = body1->getWorldTransform().inverse()*globalFrame; + + btGeneric6DofConstraint* dof6 = new btGeneric6DofConstraint(*body0,*body1,trA,trB,true); + dof6->setOverrideNumSolverIterations(100); + + float totalMass = 1.f/body0->getInvMass() + 1.f/body1->getInvMass(); + + dof6->setBreakingImpulseThreshold(BREAKING_THRESHOLD*totalMass); + + for (int i=0;i<6;i++) + dof6->setLimit(i,0,0); + getDynamicsWorld()->addConstraint(dof6,true); + + } + } + } + } + + } + + for (int i=0;iremoveRigidBody(bodies[i]); + getDynamicsWorld()->addRigidBody(bodies[i]); + } +} + +void VoronoiFractureDemo::keyboardCallback(unsigned char key, int x, int y) +{ + if (key == 'g') + { + attachFixedConstraints(); + }else + { + PlatformDemoApplication::keyboardCallback(key,x,y); + } +} + + +void VoronoiFractureDemo::getVerticesInsidePlanes(const btAlignedObjectArray& planes, btAlignedObjectArray& verticesOut, std::set& planeIndicesOut) +{ + // Based on btGeometryUtil.cpp (Gino van den Bergen / Erwin Coumans) + verticesOut.resize(0); + planeIndicesOut.clear(); + const int numPlanes = planes.size(); + int i, j, k, l; + for (i=0;i btScalar(0.0001)) + { + for (k=j+1;k btScalar(0.0001)) && (n3n1.length2() > btScalar(0.0001) )) + { + btScalar quotient = (N1.dot(n2n3)); + if (btFabs(quotient) > btScalar(0.0001)) + { + btVector3 potentialVertex = (n2n3 * N1[3] + n3n1 * N2[3] + n1n2 * N3[3]) * (btScalar(-1.) / quotient); + for (l=0; l btScalar(0.000001)) + break; + } + if (l == numPlanes) + { + // vertex (three plane intersection) inside all planes + verticesOut.push_back(potentialVertex); + planeIndicesOut.insert(i); + planeIndicesOut.insert(j); + planeIndicesOut.insert(k); + } + } + } + } + } + } + } +} + +static btVector3 curVoronoiPoint; // Here for btAlignedObjectArray.quickSort pointCmp scope + +struct pointCmp +{ + bool operator()(const btVector3& p1, const btVector3& p2) const + { + return ((p1-curVoronoiPoint).length2() < (p2-curVoronoiPoint).length2()); + } +}; + +void VoronoiFractureDemo::voronoiBBShatter(const btAlignedObjectArray& points, const btVector3& bbmin, const btVector3& bbmax, const btQuaternion& bbq, const btVector3& bbt, btScalar matDensity) { + // points define voronoi cells in world space (avoid duplicates) + // bbmin & bbmax = bounding box min and max in local space + // bbq & bbt = bounding box quaternion rotation and translation + // matDensity = Material density for voronoi shard mass calculation + btVector3 bbvx = quatRotate(bbq, btVector3(1.0, 0.0, 0.0)); + btVector3 bbvy = quatRotate(bbq, btVector3(0.0, 1.0, 0.0)); + btVector3 bbvz = quatRotate(bbq, btVector3(0.0, 0.0, 1.0)); + btQuaternion bbiq = bbq.inverse(); + btConvexHullComputer* convexHC = new btConvexHullComputer(); + btAlignedObjectArray vertices; + btVector3 rbb, nrbb; + btScalar nlength, maxDistance, distance; + btAlignedObjectArray sortedVoronoiPoints; + sortedVoronoiPoints.copyFromArray(points); + btVector3 normal, plane; + btAlignedObjectArray planes; + std::set planeIndices; + std::set::iterator planeIndicesIter; + int numplaneIndices; + int cellnum = 0; + int i, j, k; + + int numpoints = points.size(); + for (i=0; i < numpoints ;i++) { + curVoronoiPoint = points[i]; + btVector3 icp = quatRotate(bbiq, curVoronoiPoint - bbt); + rbb = icp - bbmax; + nrbb = bbmin - icp; + planes.resize(6); + planes[0] = bbvx; planes[0][3] = rbb.x(); + planes[1] = bbvy; planes[1][3] = rbb.y(); + planes[2] = bbvz; planes[2][3] = rbb.z(); + planes[3] = -bbvx; planes[3][3] = nrbb.x(); + planes[4] = -bbvy; planes[4][3] = nrbb.y(); + planes[5] = -bbvz; planes[5][3] = nrbb.z(); + maxDistance = SIMD_INFINITY; + sortedVoronoiPoints.quickSort(pointCmp()); + for (j=1; j < numpoints; j++) { + normal = sortedVoronoiPoints[j] - curVoronoiPoint; + nlength = normal.length(); + if (nlength > maxDistance) + break; + plane = normal.normalized(); + plane[3] = -nlength / btScalar(2.); + planes.push_back(plane); + getVerticesInsidePlanes(planes, vertices, planeIndices); + if (vertices.size() == 0) + break; + numplaneIndices = planeIndices.size(); + if (numplaneIndices != planes.size()) { + planeIndicesIter = planeIndices.begin(); + for (k=0; k < numplaneIndices; k++) { + if (k != *planeIndicesIter) + planes[k] = planes[*planeIndicesIter]; + planeIndicesIter++; + } + planes.resize(numplaneIndices); + } + maxDistance = vertices[0].length(); + for (k=1; k < vertices.size(); k++) { + distance = vertices[k].length(); + if (maxDistance < distance) + maxDistance = distance; + } + maxDistance *= btScalar(2.); + } + if (vertices.size() == 0) + continue; + + // Clean-up voronoi convex shard vertices and generate edges & faces + convexHC->compute(&vertices[0].getX(), sizeof(btVector3), vertices.size(),CONVEX_MARGIN,0.0); + + // At this point we have a complete 3D voronoi shard mesh contained in convexHC + + // Calculate volume and center of mass (Stan Melax volume integration) + int numFaces = convexHC->faces.size(); + int v0, v1, v2; // Triangle vertices + btScalar volume = btScalar(0.); + btVector3 com(0., 0., 0.); + for (j=0; j < numFaces; j++) { + const btConvexHullComputer::Edge* edge = &convexHC->edges[convexHC->faces[j]]; + v0 = edge->getSourceVertex(); + v1 = edge->getTargetVertex(); + edge = edge->getNextEdgeOfFace(); + v2 = edge->getTargetVertex(); + while (v2 != v0) { + // Counter-clockwise triangulated voronoi shard mesh faces (v0-v1-v2) and edges here... + btScalar vol = convexHC->vertices[v0].triple(convexHC->vertices[v1], convexHC->vertices[v2]); + volume += vol; + com += vol * (convexHC->vertices[v0] + convexHC->vertices[v1] + convexHC->vertices[v2]); + edge = edge->getNextEdgeOfFace(); + v1 = v2; + v2 = edge->getTargetVertex(); + } + } + com /= volume * btScalar(4.); + volume /= btScalar(6.); + + // Shift all vertices relative to center of mass + int numVerts = convexHC->vertices.size(); + for (j=0; j < numVerts; j++) + { + convexHC->vertices[j] -= com; + } + + // Note: + // At this point convex hulls contained in convexHC should be accurate (line up flush with other pieces, no cracks), + // ...however Bullet Physics rigid bodies demo visualizations appear to produce some visible cracks. + // Use the mesh in convexHC for visual display or to perform boolean operations with. + + // Create Bullet Physics rigid body shards + btCollisionShape* shardShape = new btConvexHullShape(&(convexHC->vertices[0].getX()), convexHC->vertices.size()); + shardShape->setMargin(CONVEX_MARGIN); // for this demo; note convexHC has optional margin parameter for this + m_collisionShapes.push_back(shardShape); + btTransform shardTransform; + shardTransform.setIdentity(); + shardTransform.setOrigin(curVoronoiPoint + com); // Shard's adjusted location + btDefaultMotionState* shardMotionState = new btDefaultMotionState(shardTransform); + btScalar shardMass(volume * matDensity); + btVector3 shardInertia(0.,0.,0.); + shardShape->calculateLocalInertia(shardMass, shardInertia); + btRigidBody::btRigidBodyConstructionInfo shardRBInfo(shardMass, shardMotionState, shardShape, shardInertia); + btRigidBody* shardBody = new btRigidBody(shardRBInfo); + m_dynamicsWorld->addRigidBody(shardBody); + + cellnum ++; + + } + printf("Generated %d voronoi btRigidBody shards\n", cellnum); +} + +void VoronoiFractureDemo::voronoiConvexHullShatter(const btAlignedObjectArray& points, const btAlignedObjectArray& verts, const btQuaternion& bbq, const btVector3& bbt, btScalar matDensity) { + // points define voronoi cells in world space (avoid duplicates) + // verts = source (convex hull) mesh vertices in local space + // bbq & bbt = source (convex hull) mesh quaternion rotation and translation + // matDensity = Material density for voronoi shard mass calculation + btConvexHullComputer* convexHC = new btConvexHullComputer(); + btAlignedObjectArray vertices, chverts; + btVector3 rbb, nrbb; + btScalar nlength, maxDistance, distance; + btAlignedObjectArray sortedVoronoiPoints; + sortedVoronoiPoints.copyFromArray(points); + btVector3 normal, plane; + btAlignedObjectArray planes, convexPlanes; + std::set planeIndices; + std::set::iterator planeIndicesIter; + int numplaneIndices; + int cellnum = 0; + int i, j, k; + + // Convert verts to world space and get convexPlanes + int numverts = verts.size(); + chverts.resize(verts.size()); + for (i=0; i < numverts ;i++) { + chverts[i] = quatRotate(bbq, verts[i]) + bbt; + } + //btGeometryUtil::getPlaneEquationsFromVertices(chverts, convexPlanes); + // Using convexHullComputer faster than getPlaneEquationsFromVertices for large meshes... + convexHC->compute(&chverts[0].getX(), sizeof(btVector3), numverts, 0.0, 0.0); + int numFaces = convexHC->faces.size(); + int v0, v1, v2; // vertices + for (i=0; i < numFaces; i++) { + const btConvexHullComputer::Edge* edge = &convexHC->edges[convexHC->faces[i]]; + v0 = edge->getSourceVertex(); + v1 = edge->getTargetVertex(); + edge = edge->getNextEdgeOfFace(); + v2 = edge->getTargetVertex(); + plane = (convexHC->vertices[v1]-convexHC->vertices[v0]).cross(convexHC->vertices[v2]-convexHC->vertices[v0]).normalize(); + plane[3] = -plane.dot(convexHC->vertices[v0]); + convexPlanes.push_back(plane); + } + const int numconvexPlanes = convexPlanes.size(); + + int numpoints = points.size(); + for (i=0; i < numpoints ;i++) { + curVoronoiPoint = points[i]; + planes.copyFromArray(convexPlanes); + for (j=0; j < numconvexPlanes ;j++) { + planes[j][3] += planes[j].dot(curVoronoiPoint); + } + maxDistance = SIMD_INFINITY; + sortedVoronoiPoints.quickSort(pointCmp()); + for (j=1; j < numpoints; j++) { + normal = sortedVoronoiPoints[j] - curVoronoiPoint; + nlength = normal.length(); + if (nlength > maxDistance) + break; + plane = normal.normalized(); + plane[3] = -nlength / btScalar(2.); + planes.push_back(plane); + getVerticesInsidePlanes(planes, vertices, planeIndices); + if (vertices.size() == 0) + break; + numplaneIndices = planeIndices.size(); + if (numplaneIndices != planes.size()) { + planeIndicesIter = planeIndices.begin(); + for (k=0; k < numplaneIndices; k++) { + if (k != *planeIndicesIter) + planes[k] = planes[*planeIndicesIter]; + planeIndicesIter++; + } + planes.resize(numplaneIndices); + } + maxDistance = vertices[0].length(); + for (k=1; k < vertices.size(); k++) { + distance = vertices[k].length(); + if (maxDistance < distance) + maxDistance = distance; + } + maxDistance *= btScalar(2.); + } + if (vertices.size() == 0) + continue; + + // Clean-up voronoi convex shard vertices and generate edges & faces + convexHC->compute(&vertices[0].getX(), sizeof(btVector3), vertices.size(),0.0,0.0); + + // At this point we have a complete 3D voronoi shard mesh contained in convexHC + + // Calculate volume and center of mass (Stan Melax volume integration) + numFaces = convexHC->faces.size(); + btScalar volume = btScalar(0.); + btVector3 com(0., 0., 0.); + for (j=0; j < numFaces; j++) { + const btConvexHullComputer::Edge* edge = &convexHC->edges[convexHC->faces[j]]; + v0 = edge->getSourceVertex(); + v1 = edge->getTargetVertex(); + edge = edge->getNextEdgeOfFace(); + v2 = edge->getTargetVertex(); + while (v2 != v0) { + // Counter-clockwise triangulated voronoi shard mesh faces (v0-v1-v2) and edges here... + btScalar vol = convexHC->vertices[v0].triple(convexHC->vertices[v1], convexHC->vertices[v2]); + volume += vol; + com += vol * (convexHC->vertices[v0] + convexHC->vertices[v1] + convexHC->vertices[v2]); + edge = edge->getNextEdgeOfFace(); + v1 = v2; + v2 = edge->getTargetVertex(); + } + } + com /= volume * btScalar(4.); + volume /= btScalar(6.); + + // Shift all vertices relative to center of mass + int numVerts = convexHC->vertices.size(); + for (j=0; j < numVerts; j++) + { + convexHC->vertices[j] -= com; + } + + // Note: + // At this point convex hulls contained in convexHC should be accurate (line up flush with other pieces, no cracks), + // ...however Bullet Physics rigid bodies demo visualizations appear to produce some visible cracks. + // Use the mesh in convexHC for visual display or to perform boolean operations with. + + // Create Bullet Physics rigid body shards + btCollisionShape* shardShape = new btConvexHullShape(&(convexHC->vertices[0].getX()), convexHC->vertices.size()); + shardShape->setMargin(CONVEX_MARGIN); // for this demo; note convexHC has optional margin parameter for this + m_collisionShapes.push_back(shardShape); + btTransform shardTransform; + shardTransform.setIdentity(); + shardTransform.setOrigin(curVoronoiPoint + com); // Shard's adjusted location + btDefaultMotionState* shardMotionState = new btDefaultMotionState(shardTransform); + btScalar shardMass(volume * matDensity); + btVector3 shardInertia(0.,0.,0.); + shardShape->calculateLocalInertia(shardMass, shardInertia); + btRigidBody::btRigidBodyConstructionInfo shardRBInfo(shardMass, shardMotionState, shardShape, shardInertia); + btRigidBody* shardBody = new btRigidBody(shardRBInfo); + m_dynamicsWorld->addRigidBody(shardBody); + + cellnum ++; + + } + printf("Generated %d voronoi btRigidBody shards\n", cellnum); +} + +void VoronoiFractureDemo::clientMoveAndDisplay() +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + //simple dynamics world doesn't handle fixed-time-stepping + float ms = getDeltaTimeMicroseconds(); + + ///step the simulation + if (m_dynamicsWorld) + { + m_dynamicsWorld->stepSimulation(ms / 1000000.f); + //optional but useful: debug drawing + m_dynamicsWorld->debugDrawWorld(); + } + + renderme(); + + glFlush(); + + swapBuffers(); +} + + +void VoronoiFractureDemo::displayCallback(void) { + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + renderme(); + + //optional but useful: debug drawing to detect problems + if (m_dynamicsWorld) + m_dynamicsWorld->debugDrawWorld(); + + glFlush(); + swapBuffers(); +} + + +void VoronoiFractureDemo::initPhysics() +{ + setTexturing(true); + setShadows(true); + + setCameraDistance(btScalar(20.)); + + ///collision configuration contains default setup for memory, collision setup + m_collisionConfiguration = new btDefaultCollisionConfiguration(); + //m_collisionConfiguration->setConvexConvexMultipointIterations(); + + ///use the default collision dispatcher. For parallel processing you can use a diffent dispatcher (see Extras/BulletMultiThreaded) + m_dispatcher = new btCollisionDispatcher(m_collisionConfiguration); + + m_broadphase = new btDbvtBroadphase(); + + ///the default constraint solver. For parallel processing you can use a different solver (see Extras/BulletMultiThreaded) + btSequentialImpulseConstraintSolver* sol = new btSequentialImpulseConstraintSolver; + m_solver = sol; + + m_dynamicsWorld = new btDiscreteDynamicsWorld(m_dispatcher,m_broadphase,m_solver,m_collisionConfiguration); + m_dynamicsWorld->getSolverInfo().m_splitImpulse = true; + m_dynamicsWorld->setDebugDrawer(&sDebugDraw); + + m_dynamicsWorld->setGravity(btVector3(0,-10,0)); + + ///create a few basic rigid bodies + btCollisionShape* groundShape = new btBoxShape(btVector3(btScalar(50.),btScalar(50.),btScalar(50.))); +// btCollisionShape* groundShape = new btStaticPlaneShape(btVector3(0,1,0),50); + + m_collisionShapes.push_back(groundShape); + + btTransform groundTransform; + groundTransform.setIdentity(); + groundTransform.setOrigin(btVector3(0,-50,0)); + + //We can also use DemoApplication::localCreateRigidBody, but for clarity it is provided here: + { + btScalar mass(0.); + + //rigidbody is dynamic if and only if mass is non zero, otherwise static + bool isDynamic = (mass != 0.f); + + btVector3 localInertia(0,0,0); + if (isDynamic) + groundShape->calculateLocalInertia(mass,localInertia); + + //using motionstate is recommended, it provides interpolation capabilities, and only synchronizes 'active' objects + btDefaultMotionState* myMotionState = new btDefaultMotionState(groundTransform); + btRigidBody::btRigidBodyConstructionInfo rbInfo(mass,myMotionState,groundShape,localInertia); + btRigidBody* body = new btRigidBody(rbInfo); + + //add the body to the dynamics world + m_dynamicsWorld->addRigidBody(body); + } + + // ==> Voronoi Shatter Basic Demo: Random Cuboid + + // Random size cuboid (defined by bounding box max and min) + btVector3 bbmax(btScalar(rand() / btScalar(RAND_MAX)) * 6. +0.5, btScalar(rand() / btScalar(RAND_MAX)) * 6. +0.5, btScalar(rand() / btScalar(RAND_MAX)) * 6. +0.5); + btVector3 bbmin = -bbmax; + // Place it 10 units above ground + btVector3 bbt(0,10,0); + // Use an arbitrary material density for shards (should be consitent/relative with/to rest of RBs in world) + btScalar matDensity = 1; + // Using random rotation + btQuaternion bbq(btScalar(rand() / btScalar(RAND_MAX)) * 2. -1.,btScalar(rand() / btScalar(RAND_MAX)) * 2. -1.,btScalar(rand() / btScalar(RAND_MAX)) * 2. -1.,btScalar(rand() / btScalar(RAND_MAX)) * 2. -1.); + bbq.normalize(); + // Generate random points for voronoi cells + btAlignedObjectArray points; + btVector3 point; + btVector3 diff = bbmax - bbmin; + for (int i=0; i < VORONOIPOINTS; i++) { + // Place points within box area (points are in world coordinates) + point = quatRotate(bbq, btVector3(btScalar(rand() / btScalar(RAND_MAX)) * diff.x() -diff.x()/2., btScalar(rand() / btScalar(RAND_MAX)) * diff.y() -diff.y()/2., btScalar(rand() / btScalar(RAND_MAX)) * diff.z() -diff.z()/2.)) + bbt; + points.push_back(point); + } + m_perfmTimer.reset(); + voronoiBBShatter(points, bbmin, bbmax, bbq, bbt, matDensity); + printf("Total Time: %f seconds\n", m_perfmTimer.getTimeMilliseconds()/1000.); + + for (int i=m_dynamicsWorld->getNumCollisionObjects()-1; i>=0 ;i--) + { + btCollisionObject* obj = m_dynamicsWorld->getCollisionObjectArray()[i]; + obj->getCollisionShape()->setMargin(CONVEX_MARGIN+0.01); + } + m_dynamicsWorld->performDiscreteCollisionDetection(); + + for (int i=m_dynamicsWorld->getNumCollisionObjects()-1; i>=0 ;i--) + { + btCollisionObject* obj = m_dynamicsWorld->getCollisionObjectArray()[i]; + obj->getCollisionShape()->setMargin(CONVEX_MARGIN); + } + + attachFixedConstraints(); + +} +void VoronoiFractureDemo::clientResetScene() +{ + exitPhysics(); + initPhysics(); +} + + +void VoronoiFractureDemo::exitPhysics() +{ + + //cleanup in the reverse order of creation/initialization + + int i; + //remove all constraints + for (i=m_dynamicsWorld->getNumConstraints()-1;i>=0;i--) + { + btTypedConstraint* constraint = m_dynamicsWorld->getConstraint(i); + m_dynamicsWorld->removeConstraint(constraint); + delete constraint; + } + + //remove the rigidbodies from the dynamics world and delete them + + for (i=m_dynamicsWorld->getNumCollisionObjects()-1; i>=0 ;i--) + { + btCollisionObject* obj = m_dynamicsWorld->getCollisionObjectArray()[i]; + btRigidBody* body = btRigidBody::upcast(obj); + if (body && body->getMotionState()) + { + delete body->getMotionState(); + } + m_dynamicsWorld->removeCollisionObject( obj ); + delete obj; + } + + //delete collision shapes + for (int j=0;j +#include + +class btBroadphaseInterface; +class btCollisionShape; +class btOverlappingPairCache; +class btCollisionDispatcher; +class btConstraintSolver; +struct btCollisionAlgorithmCreateFunc; +class btDefaultCollisionConfiguration; + +///VoronoiFractureDemo is good starting point for learning the code base and porting. + +class VoronoiFractureDemo : public PlatformDemoApplication +{ + //keep the collision shapes, for deletion/cleanup + btAlignedObjectArray m_collisionShapes; + + btBroadphaseInterface* m_broadphase; + + btCollisionDispatcher* m_dispatcher; + + btConstraintSolver* m_solver; + + btDefaultCollisionConfiguration* m_collisionConfiguration; + + btClock m_perfmTimer; + + public: + + VoronoiFractureDemo() + { + srand((unsigned)time(NULL)); // Seed it... + } + virtual ~VoronoiFractureDemo() + { + exitPhysics(); + } + void initPhysics(); + + void exitPhysics(); + + void getVerticesInsidePlanes(const btAlignedObjectArray& planes, btAlignedObjectArray& verticesOut, std::set& planeIndicesOut); + void voronoiBBShatter(const btAlignedObjectArray& points, const btVector3& bbmin, const btVector3& bbmax, const btQuaternion& bbq, const btVector3& bbt, btScalar matDensity); + void voronoiConvexHullShatter(const btAlignedObjectArray& points, const btAlignedObjectArray& verts, const btQuaternion& bbq, const btVector3& bbt, btScalar matDensity); + + virtual void clientMoveAndDisplay(); + + virtual void displayCallback(); + virtual void clientResetScene(); + + virtual void keyboardCallback(unsigned char key, int x, int y); + + void attachFixedConstraints(); + + + static DemoApplication* Create() + { + VoronoiFractureDemo* demo = new VoronoiFractureDemo; + demo->myinit(); + demo->initPhysics(); + return demo; + } + + +}; + +#endif //BASIC_DEMO_H + diff --git a/Demos/VoronoiFractureDemo/Win32VoronoiFractureDemo.cpp b/Demos/VoronoiFractureDemo/Win32VoronoiFractureDemo.cpp new file mode 100644 index 000000000..a55fb67eb --- /dev/null +++ b/Demos/VoronoiFractureDemo/Win32VoronoiFractureDemo.cpp @@ -0,0 +1,25 @@ +#ifdef _WINDOWS +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "BasicDemo.h" + +///The 'createDemo' function is called from Bullet/Demos/OpenGL/Win32AppMain.cpp to instantiate this particular demo +DemoApplication* createDemo() +{ + return new BasicDemo(); +} + +#endif diff --git a/Demos/VoronoiFractureDemo/main.cpp b/Demos/VoronoiFractureDemo/main.cpp new file mode 100644 index 000000000..e39112801 --- /dev/null +++ b/Demos/VoronoiFractureDemo/main.cpp @@ -0,0 +1,51 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "VoronoiFractureDemo.h" +#include "GlutStuff.h" +#include "btBulletDynamicsCommon.h" +#include "LinearMath/btHashMap.h" + + + +static bool cmp(const int& p1, const int& p2) { + return p1 bla; + + bla.push_back(8); + bla.push_back(6); + bla.push_back(6); + bla.push_back(4); + bla.push_back(9); + bla.quickSort(cmp); + + VoronoiFractureDemo ccdDemo; + ccdDemo.initPhysics(); + +#ifdef CHECK_MEMORY_LEAKS + ccdDemo.exitPhysics(); +#else + return glutmain(argc, argv,1024,600,"Bullet Physics Demo. http://bulletphysics.org",&ccdDemo); +#endif + + //default glut doesn't return from mainloop + return 0; +} + diff --git a/Demos/premake4.lua b/Demos/premake4.lua index 7f40dc350..4900db675 100644 --- a/Demos/premake4.lua +++ b/Demos/premake4.lua @@ -75,7 +75,8 @@ end "SliderConstraintDemo", "TerrainDemo", "UserCollisionAlgorithm", - "VehicleDemo" + "VehicleDemo", + "VoronoiFractureDemo" } -- the following demos require custom include or link settings diff --git a/UnitTests/BulletUnitTests/TestLinearMath.h b/UnitTests/BulletUnitTests/TestLinearMath.h index 43a6e6e4d..cf88fff79 100644 --- a/UnitTests/BulletUnitTests/TestLinearMath.h +++ b/UnitTests/BulletUnitTests/TestLinearMath.h @@ -55,6 +55,7 @@ static btVector3 sPenetrationDirections[TEST_NUM_UNITSPHERE_POINTS] = }; + // --------------------------------------------------------------------------- class TestLinearMath : public CppUnit::TestFixture @@ -103,6 +104,43 @@ public: CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, vec.length2(), 1e-5 ); } + + void testQuicksort() + { + int tests = 0; + int numElems = 100; + btAlignedObjectArray m_unsortedIntegers; + m_unsortedIntegers.resize(numElems); + for (int i=0;igetRigidBodyA(); - const btRigidBody* colObj1 = &constraint->getRigidBodyB(); - - if (((colObj0) && (!(colObj0)->isStaticOrKinematicObject())) && - ((colObj1) && (!(colObj1)->isStaticOrKinematicObject()))) + if (constraint->isEnabled()) { - if (colObj0->isActive() || colObj1->isActive()) - { + const btRigidBody* colObj0 = &constraint->getRigidBodyA(); + const btRigidBody* colObj1 = &constraint->getRigidBodyB(); - getSimulationIslandManager()->getUnionFind().unite((colObj0)->getIslandTag(), - (colObj1)->getIslandTag()); + if (((colObj0) && (!(colObj0)->isStaticOrKinematicObject())) && + ((colObj1) && (!(colObj1)->isStaticOrKinematicObject()))) + { + if (colObj0->isActive() || colObj1->isActive()) + { + + getSimulationIslandManager()->getUnionFind().unite((colObj0)->getIslandTag(), + (colObj1)->getIslandTag()); + } } } } diff --git a/src/BulletDynamics/Dynamics/btRigidBody.cpp b/src/BulletDynamics/Dynamics/btRigidBody.cpp index f0cfd687b..911b50723 100644 --- a/src/BulletDynamics/Dynamics/btRigidBody.cpp +++ b/src/BulletDynamics/Dynamics/btRigidBody.cpp @@ -309,8 +309,9 @@ bool btRigidBody::checkCollideWithOverride(btCollisionObject* co) for (int i = 0; i < m_constraintRefs.size(); ++i) { btTypedConstraint* c = m_constraintRefs[i]; - if (&c->getRigidBodyA() == otherRb || &c->getRigidBodyB() == otherRb) - return false; + if (c->isEnabled()) + if (&c->getRigidBodyA() == otherRb || &c->getRigidBodyB() == otherRb) + return false; } return true; diff --git a/src/LinearMath/btAlignedObjectArray.h b/src/LinearMath/btAlignedObjectArray.h index ab032c13b..0179fd071 100644 --- a/src/LinearMath/btAlignedObjectArray.h +++ b/src/LinearMath/btAlignedObjectArray.h @@ -313,33 +313,46 @@ protected: } }; + template + int partition (const L& CompareFunc, int lo, int hi, int pivotIndex) + { + if (pivotIndex != lo) + swap (lo, pivotIndex); + + pivotIndex = lo; + lo++; + while (lo <= hi) + { + //if (m_data[low] <= m_data[pivotIndex]) -> we don't have a <= so we use !(b void quickSortInternal(const L& CompareFunc,int lo, int hi) { - // lo is the lower index, hi is the upper index - // of the region of array a that is to be sorted - int i=lo, j=hi; - T x=m_data[(lo+hi)/2]; - - // partition - do - { - while (CompareFunc(m_data[i],x)) - i++; - while (CompareFunc(x,m_data[j])) - j--; - if (i<=j) - { - swap(i,j); - i++; j--; - } - } while (i<=j); - - // recursion - if (lo=hi) + return; + int pivotIndex = (lo+hi)/2; + pivotIndex = partition(CompareFunc,lo,hi,pivotIndex); + + // recursion, exclude the pivot + if (lo