From 9f567e6ee40e2f57628ddae7bf798f87d8d61fda Mon Sep 17 00:00:00 2001 From: David Buzatto Date: Sat, 29 Nov 2025 14:11:15 -0300 Subject: [PATCH] Example for creating balls with simple physics simulation (#5372) * Example for creating balls with simple physics simulation The goal of this example is to create several colored balls whose movement is simulated and which respond to the action of being grabbed and dragged using the mouse. * renaming example renaming example from physics_bouncing_balls to shapes_ball_physics --- examples/shapes/shapes_ball_physics.c | 222 ++++++++++++++++++++++++ examples/shapes/shapes_ball_physics.png | Bin 0 -> 43216 bytes 2 files changed, 222 insertions(+) create mode 100644 examples/shapes/shapes_ball_physics.c create mode 100644 examples/shapes/shapes_ball_physics.png diff --git a/examples/shapes/shapes_ball_physics.c b/examples/shapes/shapes_ball_physics.c new file mode 100644 index 000000000..1c41d5f1a --- /dev/null +++ b/examples/shapes/shapes_ball_physics.c @@ -0,0 +1,222 @@ +/******************************************************************************************* +* +* raylib [shapes] example - physics bouncing balls +* +* Example complexity rating: [★★☆☆] 2/4 +* +* Example originally created with raylib 5.5 +* +* Example contributed by David Buzatto (@davidbuzatto) and reviewed by Ramon Santamaria (@raysan5) +* +* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software +* +* Copyright (c) 2025 David Buzatto (@davidbuzatto) +* +********************************************************************************************/ + +#include +#include +#include "raylib.h" + +#define MAX_BALLS 5000 // Maximum quantity of balls + +typedef struct Ball { + Vector2 pos; // Position + Vector2 vel; // Velocity + Vector2 ppos; // Previous position + float radius; + float friction; + float elasticity; + Color color; + bool grabbed; +} Ball; + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [shapes] example - physics bouncing balls"); + + Ball balls[MAX_BALLS] = {{ + .pos = {GetScreenWidth()/2, GetScreenHeight()/2}, + .vel = {200, 200}, + .ppos = {0}, + .radius = 40, + .friction = 0.99, + .elasticity = 0.9, + .color = BLUE, + .grabbed = false + }}; + + int ballQuantity = 1; + Ball *grabbedBall = NULL; // A pointer to the current ball that is grabbed + Vector2 pressOffset = {0}; // Mouse press offset relative to the ball that grabbedd + + float gravity = 100; // World gravity + + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + //--------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + float delta = GetFrameTime(); + Vector2 mousePos = GetMousePosition(); + + // Checks if a ball was grabbed + if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) + { + for (int i = ballQuantity - 1; i >= 0; i--) { + + Ball *ball = &balls[i]; + pressOffset.x = mousePos.x - ball->pos.x; + pressOffset.y = mousePos.y - ball->pos.y; + + // If the distance between the ball position and the mouse press position + // is less or equal the ball radius, the event occured inside the ball + if (hypot(pressOffset.x, pressOffset.y) <= ball->radius) + { + ball->grabbed = true; + grabbedBall = ball; + break; + } + + } + } + + // Releases any ball the was grabbed + if (IsMouseButtonReleased(MOUSE_BUTTON_LEFT)) + { + if (grabbedBall != NULL) + { + grabbedBall->grabbed = false; + grabbedBall = NULL; + } + } + + // Creates a new ball + if (IsMouseButtonPressed(MOUSE_BUTTON_RIGHT) || (IsKeyDown(KEY_LEFT_CONTROL) && IsMouseButtonDown(MOUSE_BUTTON_RIGHT))) { + if (ballQuantity < MAX_BALLS) { + balls[ballQuantity++] = (Ball) { + .pos = mousePos, + .vel = {GetRandomValue(-300, 300), GetRandomValue(-300, 300)}, + .ppos = {0}, + .radius = 20 + GetRandomValue(0, 30), + .friction = 0.99, + .elasticity = 0.9, + .color = {GetRandomValue(0, 255), GetRandomValue(0, 255), GetRandomValue(0, 255), 255}, + .grabbed = false + }; + } + } + + // Shake balls + if (IsMouseButtonPressed(MOUSE_BUTTON_MIDDLE)) { + for (int i = 0; i < ballQuantity; i++) { + Ball *ball = &balls[i]; + if (!ball->grabbed) { + ball->vel = (Vector2) {GetRandomValue(-2000, 2000), GetRandomValue(-2000, 2000)}; + } + } + } + + // Changes gravity + gravity += GetMouseWheelMove() * 5; + + // Updates each ball state + for (int i = 0; i < ballQuantity; i++) { + + Ball *ball = &balls[i]; + + // The ball is not grabbed + if (!ball->grabbed) + { + // Ball repositioning using the velocity + ball->pos.x += ball->vel.x * delta; + ball->pos.y += ball->vel.y * delta; + + // Does the ball hit the screen right boundary? + if (ball->pos.x + ball->radius >= screenWidth) + { + ball->pos.x = screenWidth - ball->radius; // Ball repositioning + ball->vel.x = -ball->vel.x * ball->elasticity; // Elasticity makes the ball lose 10% of its velocity on hit + } + // Does the ball hit the screen left boundary? + else if (ball->pos.x - ball->radius <= 0) + { + ball->pos.x = ball->radius; + ball->vel.x = -ball->vel.x * ball->elasticity; + } + + // The same for y axis + if (ball->pos.y + ball->radius >= screenHeight) + { + ball->pos.y = screenHeight - ball->radius; + ball->vel.y = -ball->vel.y * ball->elasticity; + } + else if (ball->pos.y - ball->radius <= 0) + { + ball->pos.y = ball->radius; + ball->vel.y = -ball->vel.y * ball->elasticity; + } + + // Friction makes the ball lose 1% of its velocity each frame + ball->vel.x = ball->vel.x * ball->friction; + // Gravity affects only the y axis + ball->vel.y = ball->vel.y * ball->friction + gravity; + + } + else + { + // Ball repositioning using the mouse position + ball->pos.x = mousePos.x - pressOffset.x; + ball->pos.y = mousePos.y - pressOffset.y; + // While the ball is grabbed, recalculates its velocity + ball->vel.x = (ball->pos.x - ball->ppos.x) / delta; + ball->vel.y = (ball->pos.y - ball->ppos.y) / delta; + ball->ppos = ball->pos; + } + } + + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + for (int i = 0; i < ballQuantity; i++) + { + Ball *ball = &balls[i]; + DrawCircleV(ball->pos, ball->radius, ball->color); + DrawCircleLinesV(ball->pos, ball->radius, BLACK); + } + + DrawText("grab a ball by pressing with the mouse and throw it by releasing", 10, 10, 20, DARKGRAY); + DrawText("right click to create new balls (keep left control pressed to create a lot)", 10, 30, 20, DARKGRAY); + DrawText("use mouse wheel to change gravity", 10, 50, 20, DARKGRAY); + DrawText("middle click to shake", 10, 70, 20, DARKGRAY); + DrawText(TextFormat("ball quantity: %d", ballQuantity), 10, GetScreenHeight() - 55, 20, BLACK); + DrawText(TextFormat("gravity: %.2f", gravity), 10, GetScreenHeight() - 35, 20, BLACK); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} \ No newline at end of file diff --git a/examples/shapes/shapes_ball_physics.png b/examples/shapes/shapes_ball_physics.png new file mode 100644 index 0000000000000000000000000000000000000000..1e4c86f14d077ebd65f47bb47b078f10f2425a0a GIT binary patch literal 43216 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

4dRTgJcW|IwV`B_9W9P_nSqK~;h2JpFPkx@oU< zRYe8?+G*u(61j2R#ro}1ec^Hmg4JpA7U2%Pej-L$=w{F(4A8^>-&AJ?*fOi!o478@D`WQ66SboJQf2Xl+fc#Inmic|q zkqSD=V9>(Z4(6?@jFqeOOx`L0B}Xo}rKLjeC{{mvd$>f=5UsGuksTYLx|X>Vk2C3P zs$jup(bU{-BO1coWB3}LWK6Mq?V06N&EH?cwSX!jE@hklB}S|lVINX^P;{W9vlydL zog=e(iP%3jEn;Ud8LT=UX~$mJ{n}5^)i!rpR`?bxrb^BQYU_;Z5LeJ!?dHi^b=K*4PQHF$j)2f5a042R$VpFlfQ!_KyLqX8&s`wik(V?Vu%{GIBxALWFx7S5-0a|GI5TM53 z2WRykUY||8ad7fF8y}FV#L_F=1sHAf863_eGtu4yE=*fCY9?r*mh?A z$w6IO2InWY2BRUWJy{<-JRvvSCw7pE->%Ik*^uJ$dze{bf0=Ho$XirW=w6g@TF($h`X2qjeRJCf%De@lfIAL z5n>vbqq}@4z{R*U*XLh+e}C{6GmN-Gl7NtJ*7|u@oZH0JI#C->#Yz2tZ6uoHB1Qq6 z4gn<8KWfMW@yrd;G&d-EDo|4N=XuOD!BKoqjbsp+f{ypY9lbIMcZ7&e-K5}8qhhJb z!WSsNfi~xFN=PN(SpoNJ(~-1w!SgeXP*9s9j)NK!@c-J;Maj>y3h6**LGj9>1w|oI zATceS9H!b&Pdg`UrpCl6RdL-OoJtEz)+9%!Q?I=MDoEG;)XViUX%3wor6$d*@ZAwy zr);AF7?janX!=t^ecC*4JUaxVfInmf@gFC2pA-BK`;`+%G(lWX@0xLas*gk#gZOxL z-uaC(=mK}6Up@p!gDOMev1e5O6%aoz4p9bpom0brV^}GN*jD$DPl6*WutnQI*)Yu1 zD{Y}U>oyy5tEO0oqa?Rfl#5csr|FKMP*e(l>>AuB-c1WaH;+J_dHSYV=vFO;1bWqk_QpF}y zNJ7JH)4!A6yfh&|v1KMJocy?IQqqDOVGEiSCC>qCoM7qb#*^%t9`-x2s^~by=$h8W zg3E?f*sUmql_)c<#N}V-i3h+*#uxYiwO!|5ze8?E1gvs{54f68bF+1{jAA}w^OP2lfFGpUC+9DLeSEO=qLpcK2NOwOec9Cd%r z`{{iz`+~9qnzkN0E@dEdc)VQ#y-T3AX6S;$Zepf@)(V}^g#Q_KoRnV`U3dHdAt_QaE*?A zh$V{B&G6QE)-^T$g}a*lJaR=Dk~y~z+nS1zL=p5RAtWb*<2bK>4HxHqHVq>6<}f=b z1LTHEKIhG-REdqL`m@HOb&~?`f?K`%1I0n_0T7P|UdFi1*{T&y&!waq%U)4i!0qAbX{+zo(o27`*1xy2`;pKSt14sIGhN$2Vxy96QZ(TcLeFX&H~j=Q z1Tu6$PT76&)C~5T<$)WhKdP%4PtOO{wEcf=eF;32d;9lk(WY&r5m{;^VI)}+TFuzk zs0>0xwiYF!P?ClbA!2NiEJfLp4lOiNq-+Uo2NjBnRHAsV>o-0B^ZeiUeLl~5KIe0u z(|zA_-@oO$zT597m+7`MD`)My&qmc-y~(|=$hCqB4(myH*+^bS4cX{&6D*ouJ;mB0?)XgE$FVTU2xDLT_pSiel(>i1*52y4 zmfc6*Rwt{U zt4gU;fWQ@_UKi`4Y$? z2KUYGZ-tR!9r$rqbw5FxQUF$p1-2xt;8Py!T!q}%{ue6AVXB^JCg)-!oB_HV zE91)!<(zitSa?W{(l*3rOc_cWYdlrXzfmAHE#hNJ{qdVByMc)j$-nd2K4S_go*GmI z3nJtJVZI6cgCXH&VfQvus^2sA{c-lK;N)+UKSA5Pi5U)Xg}&yIoWcwu^w3DaN|Lc- z>~sYYbdf*#8rs2?u=eb30Pc2HLzdKYXmaSiK8FetLT@0;_3lnZ=nO^lAq5uPq}{sn>3TVBVoTXHl&5X5CzP1HL51 z7OB?1wx7^p`T#(}I10=}vsu1i9H1CqOP>xG+JWRn-QIWZxPJ2~P=bTNEuQrB-3Cxy zKjR9}h4s{7x(JEuj9Qd*MKZ>^$>#IvT?AC9RTEZpl6;Gch4`Ru9TIr_yfzSo_q#h$j^F~GsKS;S4<#FM(l06w7OxbZr(y`M$C z3*T}N?GiYCkrm0zvac2@O1N_|*y3tT?bVKFMRUIkFVdX1#VjD=Vtr>5L8IilM%OtixYT&@!(SYT0;ymlVYe zgynLb7O=aeP^%7kUz}t7x!!neY6Hxp%w68g7MLj#wc&8`*HuRf9oj9S3~=k8oao;) zeQq0oX@DXrcHDP`;1I5r8kq=}bBcUeC~A!Te-)i=UqdCC0|E z(}gWQB$SY4F99|xzRk^spr@dv?X$yP@q0}83MjcEgs^jNK#kC+ z6n5aq_kPa1)-#f>PJyfE2{JwJsjqM{s&Le*4_}{aeD+SnJ}6)W%Ty@%KxFlDYx|U4 zvp-Y9X!lGM=B%1;b+SJ&$-tqp!zY_1nedhtuVS8}*{(G}|NHQq(k=fvzJ(g-Y z>Z2~}Mol%5{%*O*)GT#S!k5|)(4?0S{lg=v@y@#%)ly6}H!ury{ZxajGxcDjAiIUr z8lWf$0?3#S#H6`*-d3-Izyn53-xzyxr}|!lPCkj7d{$8e;j$;a0o)sx+>4@*Mm;Nx zwniv_s@2R}YlDs7w05+%(8Y?6_bixLFnuL65Z3X$n%gRNKU7<~`xK+pMkY)PbrS*l z0#y<08$Q1Z0sMs5aSjnshk%n$YL37pX1g_dw|kRfeBg!FB85fcd6C}=tBZiwT;nsA zk^ZIR&db70Hd{-w3*(=|Gc2H7;KGKB0MY05ftC*M4mJc-RxT&S%vft^i{Tl^mRv%vpg<+pe*Y3HUxhb%xCk zImJs*heH43I6&Y%Fv;Y6=pO7@<|Z0}ss)sl^ReVZc)b2`o z=O-z$aa);J@OojdG`5w0{$|Dp89LFlsMLyyUK>5>)gd)`CjFyNhdPbZR zQ}3Q!w=qmZpozOylVO{wS8=b5VBA#YWONJ}wVXB}Oh9A4Xge=iPfcSd-1iV`BJoc7 z_2Lp&??Qcm+<;#NWCN8k4RtyCNryp)8srHv6@EYPz} z6~OM5+yrGuw;p0w*OUq(UgfO8!W_iu5)kIwH}-5j45n`21CpErtI~h^OvvG^Rg5BK z-c-)^i&5 z+j%QZMi~tAB85T|9;(cov_YV$d?paq+&g)l+ zdS4fnu%?VxM$+X@Zl_t_%YyAXY{t_VMJ*dU=-rtmCk%!%dY0JO({1TsR)9+98W1|t zgbN~D)2V&|&6^GxPU@gqhkTdaGrNCZ5=&87>9gvP$%I?*_=P=E4c+=fS16K{82Ks> zUJxvYmz)b!3iNsxmAKE*%>Tz)+H3WEAJvpqDEu>PrJq{F%mSE19HBhMK-G25#+yn%Jq@JPv^BKioKrEpDco^C1wd!Ou8kMDOc{dpSXAY@7)`t z(_~FsmW{AlinPV`7|~_UFCx}JarxvK-MPFa#cRlF;H}|7E%HOXu|a{t@8G#n!@CDX znz(Hjb{lq4pItG zAD}Fnp^c<4?rX|9hpa*V8(G7IFXzOpklxu7Z7?W0J|KhHGgTY%iQNCvm34~Xkcr{-?xFa@tr)JaT_+nY1dfynrOOOYj2CFz`aWBOEioJ>KyF}ex*9&tJBunn2%LD zCVvl(YmcS08z(nSdHNiE!XESmeQPRie`MAJE;D z&Ae(~GI!-oPpaT;=hUmLd;P%G`3Fd>jGIZvh>A)aHVhYltfVwUeo9V{Xt{AlTa(;N zk#Y-|=|#`ii;TIqmGaRU(!@JsNUPgpWcR?iTDQW99JWaNTCp&~o(0egl0 zwz%4O-`Ij2k=@PWj_#09dnO#gTpTbfT<55PRA^iCsWW3fUtfz0x>>(PK|TX41mN{% z@Za8}(XXp%Y74$)GAiy<__$&R65|a(7)I=xExd3j2QV#cfIPNI1uWca!|OS_XMa`Y zZyReaRZVc!qII1y)sotD(a)^jw0}f8?iSO7A?K z9PzUBeve>NrE62hlI;Mf;7U{psA=~qP;pU#Qs1$%euMUnH#0sKTbF2E)Fu5(Wqso?RAC+rJ3t=Wn>E`~ zKl%HtMLqd$p+WoQTaOSY$A07xWgCkm;d`P)o1JDB3-X-SiZyeuAZRLo`;RY zPn~xA#;@S+a}OBUdBgx#0_@-_Dhv3O5Z8Um1#N1A*7}TOur3w%YD(@i_JXOs{c*OO zn;AAnimD&!<#}X&!6FmQ233`u6Yw)iv_t;o#iJ(DjZ3)CvfZ0vAsB%!jB6v2h1`Kc zr&|1KnyYst5=gLwh*>0nI+t>qTbuB3qphFn8Wc8fR|al<1E3%m*Ij2RCQ|49`(tRn zGUjWtLtKk)t$HZ&Pa7fp_jyo%v$X+IvIN_bIpCD}(60ph;?~kb&`n0E%}#Lq|^a=Dk7W>4C38Y4^95*&eTxcyfd3+ zl0;2~F6M-ZAx&3J=Gko~DgDI-6OGrFuCP_(h$^FQzphx~dy1|HG}1hG*TMw)aG$w` zX(=u^WNL{6xq;iSB4i!@d3ohnVec=6T@Y-z<>jkP1sk8`^1t7jf>VJL1G2w|E|{yk z%5Q&rcj)7!zZo}BihOAbc#CADATp}Rbo`|ogfvRI!hE*${s zOggwo%PVkbBtFkyWWqUI69=FYZM(E~F< z-+q=awsQb&bDyEAprn-Vu8wXE<*Z$fwnYj{R^KeyHQSe$7~G{2R5ho$``w)yA-r$G z`CNdgIbE8U8sXEszC5huB?G&;svOa8qq+vB`I>T#VN2q_jE<%{p5>}Fhy*@( zv!H)L9NYBW#cjlEWsyR?s6Z@Xb8&~je&o3@Jz7F`xOD1^TAHqm_1QkF`SNi>@iMBO z%67HDW>VCJcO#0?h^sBm*l;Vj+HoxVB9SB`JHe3r0<-ih@uJUY&2`WhNrTv?d}-wr zA_KBe=o$)_l(Q|niz7NX5Qvo~C)2A%uXxvh%7BR4B1sDNQG~Aa{Hr*ImPxROE~yS2%c5m^yy$I*`JAqp#~Odp&0JT zZmEfrZ|2WslUexhoh@&SC0rkUd^sy#hjHalmPfB`WX<~hvy`^rmId@y7yzATygD|5 z-nQDCwjsw+LPoI%iw|if4W{CJT)_E}D!T6OyYA6_;P7>JSrERUjWp@#}vWeY}tK#{TgZ~j^20SGTX<}xHU}ZW?}18{|W5L1zV+9H{c_t*}V^^XliQUHTzh9h;LR_H0Q< zm7{$tmbF7^nsYyoQveTb?p7tLO!87jN4DRBZcWfSkxGJy z1`=AP`pBR-oUR#vs%{VS`k`{yDe*M?g)|WExsgpT+FdGu`f9zPCLvRZjEA_tC?F|e z(5^wbBFz0J{2IVkcy^qmH8z-1f?Z(vavUyz3KYY&p)8nHamMx8$xDRnU4ifrk@t|= zbp!Nt;Mu)*n{f&thp&{o?lV1=RE_@G0AExfm2K3pxyah+=s|%Y-1n5TK(v8H=n9#D z_{MyZ#!B*7_<0C|M#HP&uFZFvo`2n?OEdWBn64Z=oD&o8%ONmUl!|fHs*f!sZx5jwiv-CoD)BKp=_A<;tkX&<{0Zy(?6OcDpo_H)3VDD( zsA{5Zx6GwreG76~kx#=?zrS3cHbY1mx(+&u@1r;e5&*Zn zaMFg?;$&r(VVsYM_h=*KV8jyG?iayW3;?kdysFcH#4>Qa0wq?h^r&0>=&5zfa0E+9c!nDAOElChc|rTP1L3z#s-AoM zSfKBB(;*i|sTz%VJs7ye8M__LSEzq8R{rL1VcS)t8HY{z*n-nsml_UD3jk(JKzlCo zEpLV%$MLN89ntH1I8*s-EAA{beD_8Y94OgwD8qXB@2#?drel)&I@25k&G~L3`BEG= zP_61=bGl;%%+U3{){i59j^Fw4T!~0NpPxKjL+&@82gBLM#Q(Ugs|zQGEM{aUqv=+B z9j#RGq;~1!>kK$GB-)!C@&Gh3C)IfkSl2(c|}C)gXA|WTm2gXQ2)c%nFnX$WH zE_peu^FM!eI*iMusg6@gZK4dY1*9U9ah!Di!ZJ8%PA#=BX(`4Q+OCP9OMHfNAt4iNdswEyXkVA)j zsi`!3wP?lVWZn96Klteq9T#eQhc<3&6fWJ%b;-W5YSUM(;No+Vb4jbg7Qzy&11l<` z+E^^X>uHeyU$B<=a#DzEAY&MH!?XkrTVj{{OmE=uR8QZ2odngvtYq0K@(<_3aUw<(s|?1qV^wI~EQp z>MsZ*Fsw13Xu_%#fm1`DRnZH^^*fvn6W=!T6zu4ai^@FPW{vZQcLywAXMeWe9aDI3 zaAf8v_1MaBxrY{9HM@Or!27QQzW(4feUyG;c~YZJ9rCL`K)D2NiA|4gHh0uNlh^Cq z&mN_=9~TT!bIO6u_q3YyRI7PWR8dVaQ{fHR5KNX&i#}kc*ic-eTie-G+RlK)m_9pt zFGEtw?4-?xnl_=L%g+k87pI2|Tw;Y<-gXX`MgC=)#5`Gu`KfC>LH2fE;k9-?x8Yy^ zzT!|DB`fZG$<>^8ij$4w*GtafKX8>D!r6l|3#YAm_ru9v;k5k18HLIB>0@U`Wr+;h z0p(yR2t|{*mwA{P9lf`}adufe%DZJdo?acuX7N^U<`WH}0RIeZBjdmuD+hrj@G^&$ zD*1+{REU(_B2fhR1OO^K{brA~Rz<<01$+J?O|gnQ`oL6L(%*I-bP)I4H!)UKigsI)teGBMh>pF9*&Q<(jE!*pSwW@@R_;ksq4| zw1?~iHVM>Z#)4kD|h(nh;Q!Y)7>BASlpJSd;upmGhOrUc89!%-0gZ!sA0x-{kiO}u-QV}x;@wiJr^e1f7M^EdHeYMry zZZj{Ly%j_}LqZG8Kv(hAPiyHO&W&!(9OrdhE)~*SL_7^f+_cIH!2Z>kpcXHNX#jmSAj8Sq8Aqa z1EQBd$hcR{c;i$sY6+l&nsS)0sc(LaU7U*bWTwX8<^%ZK%b)bmJ)q1C%}Xf_V$U)u zX}t31-r#f6Ma;0g6^u7T#Jvx!>3X#QgS%}bHx|QcGZ?nVM?%9LTS_!^r{_X1pH_N0 z=QGEEV{Ns*%#L7G{_<5%rcm)|;)$_0?djJC`zD|r_;ksfTe+`VccguFGLSQ77O6497{@B8xL-xU)+>)jg`c6^cB zA(st3TsJI)XKAtZs~{|e$v6RJnUj&N<2nnp@bR!qC+e@ac?+olH^jb9j?N5LoD?RG zXtML6HH86Mxb4lSkB_y1c9sHI_B4YZ-e|-Ez8GO1N}gPF)EnAFX-H`kNF-pLA{2}> zRr#eH^Ow7T`=yYCTuQ^#l{E)|@8>bE&HDik71&nMsl+qAHsyy9cBoYBBfHIH3hQQq z4@;WBi3Gs;4AKiC0DQD$xFd@tz6_jyrOV%2J!v`0TS1yzDl#CEhD&T-Y$-U@K0(|D z6u_KEE~j)!YUMt&^g6uW;^JmiK=ta^OV|iOB-hKGm>IL0Xgl<7{bgrJ3Nj`-uW3FVj=H} zbS}q%aM5*29BC3VmmNJ}%RyF^Z?uyCUA>DJfdDfWLky^`8H5))isi&HP%e`mkp_Te z`gB^Hf*Tc@qw|}$7?4gBB7~fFIzl^<`^2Fqflf*L1~>GR}t5Hz?wlVeZ)X1l;v z;(VJR+#j*dUkrC;XP>_(k4hPxYyR&Eqm_1Q$yk6Szqmm8HO&|@0*LYgL@Hex-g$DZ z^oWO`YMu!`WZX_60Ehrb_)u|6TnQ9?1v_n)@Mky*}V!d^m_M` zc9V~#_Sty3k&f1lgarM-H<(a%Z@<%;L7k`AVZY4V6|P+%J$R$;rdP(pMoRk@(jauN z`&hU%UN2$O>9tTsmhC-sY40tr>%1SkmRZj*;spWm51V)k>WWa*%eiEnp$lDQ+V`hf zIEt@;EPpxaH#@!8`AsAHG4bj^erIC=e(hJZGzeh11+w5WbDo=$*I{o$v?gC}Kk`uI zx6b4^Gs~r9-WMzE<{XC2ehW<`jkv`cxl<{K+293F-Vv|AxSM!KnuHgafm5o-ebV^T zRTflhOz06cYBzLkV3TzzzU<4Wq>q!$h}>&S(PKN!z&0T8!klphWc>)fm=gr!arX2I zHuEhmL(2~>1YjC^)bB8t77<7aZ89JogMOR%Ot9N`v(#OpES~)SPb-y{D1_X~^A=E8Do6VDgw!KLjE)}TbgaOtl&NZL`kJyj)>buY^r`!SSL(!_s+ z{(xo&FgIJ9dA5L5ImaXe;z&aZfEJ=wBL?UmNT78AMWx#CG7n{ac;x*Upa<}4{WJ4!51C=XPUWi2yvjhQ5^eRXs>P5r8Iqb4MU!mVXm+5;rX+VorU{Vr{9oLU z4~Xk@r7H{S8W2|Cv}9ayUGnAuulU-+f_g6r7;;?Ann?RilB8e-S^42bXzkMluuy_9a1slVdqkrZuIG zX@6=(0qo*4_NJhdHF4WPO(3f#q*{V5eK}OF0cw=M z{#n74iu!F0nVX63;fnWOzoiJUoSFP&_S4RBGa`tCRwa*1=}wy#7ar!r>RE<`M&a6u z)xHa7BDz4JgPmvRe$JjNQpcs7XzAt-aZ*<+?4J2 zgeDzo>5d_OU#p%cU(^`^P!wmgmb!4ZTh!+6hyz$ zp3|M%zisX){!JokAj)U=y2bt&>T?S2LS93jBL&=!h4aCr{-`mZP6vh?)+{dSrqckV zUXh6{zbovVzpkbK{t=J}g0opmBRpP;z77MCX=9ihP(+NJL*}eZ)(kagUfhmz>SACK z20m~Ym9hMrMTIS52Do1Ivj|*1AQuHlJ3>o0{z?G-+zB0seguk>To%zAQMHeG?#hdz zwu`8+6I&rdK$3#=4!Gi6bW2V=It7kB%N5f9q_Rh#bzv01 z-fu5sUWhHCQY7)>U;!3S?j#C#Qh6@wta&4(G$`YM#T!sJf<{Em*#>s4!c>AIu4OmG-CgZdfCmEV8Sm0yA^lB3Vw$ZzFXYSq`PHZ07D)MVX ztAI00H>fE-Aln~JbjoK20a^G87Iq?j`2TU@7$9b}2_*6lA>t{_eKxCd5y2KHc^3-zh%`85pt_k*6Cm`wS4Qe%D`-@8 z0Bhlm-AZ#7wfnHDfi|GCt1#+=>DDTlGUfCWQ{_)17oOFZxE@y#Im46(BJp6M57 z{^&O@(J&IukqEo+i&2({iL7=GWQ~NV#g`8!1r=%k`}#Z#BqJjLrQ<}d;Enqw5mgRb zO})y7Xza%1+((e__9)`@-kI=@R&OlTioR}kKT2(DT$lA!r7c8zgEv^EdR5>*W6}(U zBAK74?IU~%(a(|R#x38?#Ii9>{}F`NJ&LgV4w&{Q(2!KWhpkfQW(G^rK7?q|(ZK?* zWe9Q9p-9YjBfvGLkTElm2S;p`v|)tJ##W2S0Lc0q`8M`oLl$E-oNv+fSJNe655diy zu~&%e@tT2G}U=q;~@u=W5ZRJ<)Y57raDu?= zG>4vzmbnGM9e(&7sY9NiXOpOItzeD8I8>A4;C$65pV0=CRV1U34vCBJR_N%=Z=wsz zQi#MP8-{~Ei4^3ahMDjvpd|(3H}^s6e;ysRRb-kG5H1d>79_>6H;r$Puc{>MKcV#> zh0cFQuQs4kQ1bwX>wqqZ#1+CuUqHON3k0gXKTb z*<(&+nrdGksOsNL%yZbirVNTaVK9OKSw(U)3E4?>NYk-z_`_I%b|}*j?E6E&=MWs6 zcsM{tCoYR1NOh6s>5s{R5|>%xYcvzi{7ixo3iKr5)Bk@LR+3)ZZYJ0+u320ACZdcB?3$IB9#mlh78f6EU??7m6_ms z+34w>301%o1`10yXi^&s5^D?o8FOWfds1z|dV5d42{A3^mQR1(q!OdKEG9CNh6TJGO5h75%2 zEY4}&E2v4Ivpb{x5%{Z7g6q>1RZ+DR*eU?_bP(0Xb%^goL?;6Y0JxU6RkYuxq;E%Q zPuLfsFPUG}I5JMlvG+Y~CwYxdCOwW`p>J5qlh{%sd<;Vx5yNnB7hpgtQaPmG1LPM8 zjiKVu^>TBZ;>h%v+wzrBYz+qsZ&USu8as&<(wrm&5Z=;68RDJ8-z;`s+PbpRD5jmh-_s3 ziJc`A=4QE(QsXUB#}Sa@-)n+BT!!D+5RnCGcF5{Xpmy>W$Rk>l%aKQfu|c#sqzL%G zE(ZZm5KbP0$7bNF+$|$=N|1=p*c=o~5&VVhXE-9sI!b~Z2(?9!7wrEa<+=K5JLFR_ z$qOJAwQ{UcwHj^|i7+*1S6n0uG*P4wIy#d9z$uE13DraR9kM@=aY<-C_5Fg^X%PD5 zx12As12R~d0w2S73-NC&W2r~L4g%*e3Z~ED;fo^+8hHbR03;OHKK!<`xy;-8y7#m| zNe9kRln)^LAh`sVq8Zn8p$|J91j*U3wAUl`3fkExLYO3Q8arK8kbu$%`;XpXur2wl zCi%+{#CFeX#*?MY$R9(^69)WP&VoJAkAFO59$)0@GkVppM8mUN`2u*bMEea@ZVZzktDE|Vhp56ESm2s(BMUnF*8-LNxevs`T$ zU>~PO5OM>xt=RR*VP=LBd4FxN$aU?d9%<%-OWAY5odfiT%D{^w297&bV`{H&WCa6WOe98?NS`qTxV z^#B;whC6QYLvgdo6tiFT+8%~u@o{?SNKFQg;S zkeFzZ`T-%sM8tr?38$quPwyQdB^sn>s=>2&AE+DM8`Nv| zKAk85NJ^H|dJvS5B^uFCi>oL~xip*=u^_PT>fJ9p#rmJtjwhtjwt}xH+%-OtDnNKm z{=KYAta~IBR6QO1n2;t82hc#N;HDbwpDPR^k6_jVw;hRXl*SSWj071H@?U&y=4_)w zqJth0i@|&zGDw$iS?lA;eP`lX&ahyR^jw^EPA6UGNtJ2>aD}2vhFpkTr3_@;gEslv z34>uhI6?J7<0>f?^ObGQA`{%mhN8~rbWmo?x2$ZtLheV_t?3;0R?zE#E~!0(VdXC8 zeqlM-;dGu}az6XBEPb>A-TMrZY>M~Hv?^J(7(*xs_kMX+Hs+nL{_6r)lL}H=$=}YB z@-@2xwtRXhrPWM7wGqytIW?c@jRA_tCrV7|(k<|779;$T2`-7^!U#&1EGjY)R9Fk!y1#(HEW!LhMM zEB<_!x3=9x*h8*un*rq4@K(bSHk22ZC=xUd#T|1^?sG0P)eppODLN(JPl?E2k5>yK zFAyF}G51KyGo8e09nKaVrMJ-Gd(zu5FV@;96VkGbx;6Li{#*+HAZXk6VKN<_Mt-)`^k_%gJkfNFW1;;#=Kc-XE;rd@Gr>cU&e9x_o0s z;0H&&$#t9FDJ}U9Qar#^aGkp>t;(6lM7XTR3cA;YF$7e`3X0Umn=eBmBfPR=OuIlA z&X7Ggn={o+mLKhkUSIpcs${OFEZE3**Pey0POp2zvqFBz`dBmF@h~y1ccV6n_5fkM zPVD#ctag;-F2ss|J+$gkUowfjLZ5L3@bjB-{;Q~9GVE7OOlr!%W+Ld8#uggnNG$hI ztEq#4&>B4~wWeaZZU$tRP~m8f2}G)(l10*^X;Z&nEyGrI> zTLZ>R3HR&EGc6&mb0{OQNSci;o4v#2efp^erX31`NFWx%UvOev$j4;!4NdeklOrCQ zvyB59xXOy}O_q866Tj6pVE3KFldaK4=-ZsGRkJoVDZA2Df-X`!+&)1Z{dtc!7s0wd z_qk0E#$l}fJ?uw0K=FsPM^V~v>G{(7Yj@&(y-8Rd|@zthgq6;uC#nng;++HshXh1Rw7~{a5E{e5DM^HdnM0x$k=X9;^PJm z&@hmUn>9OhUgfrj#!Bap+S|LE)7!R1rK(AglPeE>l_@m$@sQLqLM3rN#4IoaKdgD_ zc-2`{7!C=6iX5@$g$E?fdUknmz5VsF+RpIvcp^}e>@0RB49;MJRRn4G%w^cYT@owa zT!M?_#y=l-eg0YzIK5gF50irfo*Tw(mm<^fz_NyC_3s!X~s-pdp$FplK=No~ota^Soy2;kcXn$J6PgzS*tG)y%D(Vu_ z4oX}AGYiHX|0 zkhhh5aWGO_@gzX&LYQLAR@~R+U1U>SvxRtN(LJyR%8YhP(*8#rR!z}Zq_FT$!WuM# z=K=F}vzO^$m3R$^_U_xvklV9T4-f7pvjS%Z{52#Dqc+DleOT|X$kK;?X|aZIYGm5W zU!Z#=F5yCLom0o^+U7uhdX(Q0+eR3*^_ z3$-*jHF|v}|8QXUw(aj}HeZGA){)~=FK#CASmg&fos#%H^-nan76KMU7--BpJ1 zxXgoExC2wj4g=nP;b6?&&sR552evWL>~BDZJ8k=uFVr_ohR2ExLFqZZ@77HwrvE(l z6Y?Tqp5i?$LV;V`%!tI1kq9=`qagO!tc|iA2ro)m#T76XQpPozASh0tk>&5`JD?6) zkyHn+vOW2ecDzG?kOPA>tvAZGM4|#R{C}_8?z~6JQK+GFzYSf4uxW@ylf+L8bfi4b z=Oj^&5-OV{-jioR&oJYU;0EAqjLC&$3P956z*oi^G`P-en3})=yIXYBk#p`vU7wD% z@y61lmzcTa&m~Gx z#t=;Ky;+mSjsyl_|IW9QV+|9hd)x2__lS(&`tMTnYA1b0KTgEGnK_q#Od=uPNHct$ zb=8CeF*g8M73GRs*}zu@D>|7}uyeqPVp}FNEus4+T}{6WT1JU*klMk z%U7V0ecb-yVWPSxOdI*Jrnf_7Vs`--wT0Z1H2YY|Xw0@^{oP7e7yU8R(^F_kZ%J~m z^VDtj+Gt;Ph++%*50_=&oJIp;AR4Gssk|#t%mjrT^k$WF!i=&2i33)TWCIlPPY)WQ zQxP?bSFa8uv%$#%SYJ@YZu@g*h`bG3kTtENc%y+(ZZQb|?yXc(6HFAjZw+De$)iKw z?Q#kIk5%8PNxQ43_oyl;?tcme9yvEtw-xowmLPk^%4^M8Qg09q{Ga28_{X}Klc7vJ zJp`vF8w9~rP#^_Ip$QBIzV7`sd14DbKt5~F>!K5SPD^Z;Jkho*nH!uys)A$LUw<`C z=w!@$yGg7Q4kh1voR=AD^>)~3)BE7+O*IG#5E>lpecG=F6go0DlWGt>kt>Kz3UWvx zQ4(xwph2--O-w*ih|iEb6Fl31fnf@eDI4;gJ=)N3z4N_wpd0l|tI-2$n99)?`y~JC zLA-CcisC`w%eGr4ijW`?A|}9NbciDZ<9{Ky75pSbTCmIC&yeBSS=9*#Q-JM=P=sMn z!|}-t6Zjs=h=8FB9}M_#LXt({{8oC}ldLS)(yK|4)yh#Df`T-^W7YO_2^{0yI~0$n zmIn>Q_&>O0^K&S2>)B}CLtke^^R7;xL)u}Ig^IiGIkqDhQwfPqq)kguSz-e!NRkgg zn8ZJ?0<1ga!=OKoN5C_8vCx%@PTKKBlIoh&*$s7V#{YHS43<)c4jfW&@Nayd``sIh zPMAW5F^Ci}pBE)uI(*Fn4m^UwTcD&953@K$m^3o%k*H||3)*iI(%t4aWZfF{5h3-BZEg^dwF^`=WW{i_q{_`f8j~R@Rw-fPKhh5dzPpR z;Cu7X{Xj$%GExU2#Fw0; z>V6M0NL=jGvRIMU+GBBRQYuPZr>L3Ta27xI>-c_cnIEd_HbpzU`%?)#g~KeSYr>(h zAX`v@0X1-D-&_^GV4Fbw<7%&?RL#bQ^8kUXs7;LSBg9|MLWC-f6*6Q7#^8Pu6@1Q=MqSGL4cJ0V%oi zr0ylQ9vtrN3z9?qiIDuybHNUM-SVrsF&r>-KWb?-6!D`4_DcZ&W%(}Kks&;$PEHfth`T0W|YX;pMxij0T zLs>_%Zm&#TBaIIY2Pu#zgqOyDLg2K9FwZImeZv&)v%+UB`W~4Tx4!=NxMY!BlHo@liljrJ45`Dc ztp$W!kRcLE5~J8eZvW=IO69EuvCE@s)-^X!8R2p-;pTFF#Qiz=JBMIBPZRU zDRJ-EtJ`Y?RTV^_oX)g#{CbPc+5D*TYz{d<`w(fswyA7aSlYWbpxIbAm3wk6Hm8Kp zj>(YrtE{q#a>>v|VxZ^guk)YZr4yozuRmW8-l^(`Tfqf=QPcVW4K;!P64&IU2SNqZ zpfVJV62^CLTtzeR$3KMGn$NFoof;mif2CNf|E-G;Xt5D`W@aiu;fC3}-^` zlf1@qj3sEttq>)iOny^9I7&?Qu*zn+VGyI6ffxLp+V3{|G+IO57Vm4XL8%FLmplWB z{0&L@(|Wm9w?hrd)bz&a1Z`8qggnammk&+R4s|eJ`RJy);S$g6U02KFbF?@P`@)er07q@RDr3T?l z$xtK*V%G!kvK)@gf*bz$)(N%p7t`VxCs6g_?JD<3>zwM)9|EG66xRXZm41ENy(xYP zWJjF?U>9Q0rLv06!Kenm3_BAPrjo*nC@6=}NzQ@7&i&n)jU$`Jo0V>yB(YP38X^Ze zk%R$a!K;PVCC8!7^DCod)_8%pIr zWC?u^Dz#-a3=ivH_bp5t#ABaGQ%~4NJWn%*ki8qga&_QkX);%AcMk)ZbF(&UZw>2nE6-}1xHRty62;|V?L4RP+XL9Ybw07Ch6 zaI&cVew;rKW7fc!dIjhf;&mq~t}2M3ihS5&)LdM34MLC6$CGp5;KtU-wIi{$f&q(J zYmv(ZtH}0F(5rQ$xh8!oWs0VlRx1>SqD4t?#@ewXFH~|^p>ez1zA83tY z&FgzNCw@#Wn*`I8$oB&crF~#5gP54C^n`u8!R0~3#QtHNv}Ly9^5i@Od$s#tHc}ZV zR%^Pj`r_cotH8zbOcZF7sYOmLNjSW^WdU21wzgEucMb*Um>3OkNbC-9IrjE6Xe}1) zMF|H2Z%r3qYoR>>0o`VdJ;c!SU@b0l8bP%B&+LgVOeVQG)|kLRM8?F4Yy@ADZH+=V zOvf;FcnNdI5Fzo^z=#srKkT)S0(BqTGNRRE)f-;KpIM6=*v*k_-#Ski8uCv{qiSUj zo|-(Nf0JfxB>K8V3y;KsccAsdr={DCLQZw>DFP7XI7reUL0i1dh8K#|TexrSCz(#G z5XDl6YXIRSSx6l^WOm0BK#*tv6j7IU)HLI*N~UY1hUIeip@n1uU>zubJN5UrELLa< zIf{?}F&Z%+L`AXs+WI?(jZ9jmMrkyaYFLFrb#$(MZ|SjiR=yj=Y(36P8ET6jzsn@@ za*VS&9-zk2Uz|1b07MPK$8S+Ry{qH(vxveS(DCP+HK8tqY)Gg(Z(geOq$g1EY55MK zQ+b#2@Lx!Ppiaqqarc#Me| zf%0&M0iY^~rPRf6zUmFX2zs4fauQ0a_AQxuaE3=qL0Zk6<97yL+&vu(d1dTWS`fIG z;DF`~=dA{P?tAeZjUol*g=OU6=ik_5Ez zVWp0IHYC&Jbh}OL>(5uSKJ=IfYFy5C@9^%qt1q3Y(d(pmIlAkgb{0840-N__&0|vU zl?yD&AiD>pgb$!Cg}K?kvS#;eFw((p1*-rY@Wxx6Y+v;r^p2R#bTrRD%=X%OMO&>` zCaMs6vHEtm3Urv}r{{j|SM4ZnX_1I}xU~)uVBV zclOri?&U#yJL~|PC^Pu`esz22oMM;cMKNhy>uLS($7{+KgM3M=Ua%2Dd8ulro|zq8 zazGxEoqED$!z39QDEKiK_)uA@1|hCdpnkevCKN2D0-?+vgy6|}KD6<>+seHChrwTm z%f8g;)yaz>efGYzt1vZvPQu;nTr+_IJEwgqLY|vT^TcgecUna$niaftcFANoel?O# zUh=)qY=Spg$Hw?0M?uSvORHD9+8mi^ppvyl_0{)8NE-nO121???(UMX7xV;0j$eFC z+B*TyNE3u=2h-@%z~&?CRqvs59d>oN1Uue3SzYj3~mNc6&C71uw>GFx0P-2 ztHA!0!d^0XdS6;VL97Wt_t|iC=A35T!Jj)ikLv&J>s<7jkqA)d!XgE5KUU;4sdp4h zWcxA)G;hJ_m)*L+n9MimRZD1nc`nEPoph&_zD?!#d092bMt5}fv6^>(j!Scijfe`D z=yIut3MZzt-{oB|1mbT+QT%=It0mtD0ekOcZRe@>?2hqf-?_1lJ0knBp z8-y)zOJ9j9?VH&k7Pq?S<;~``M<+*m!K(o0ufC>LTbbHyT5;pq@og1G#}yR)O0JHa z`C(9T*DRonce6QUU6o<*l34X!v89LDvnIRLNm-fj zzXuFT>f_peB>9{P$r3nV)GU?2qh8auxvSS4>mel3Ja-cjOn#B&cprD0R)rG7*fWj=*(J8*tvlx^m(YQd6^7TNX}-|5iQu ewdn4L$ptY3Ui|`wS=;}D{}?b$8P~QthWsC=Yt#S$ literal 0 HcmV?d00001