From 31aea6aefdad1e0de62013e9265650429d4d6af5 Mon Sep 17 00:00:00 2001 From: oqu Date: Sun, 5 Oct 2025 13:22:04 -0700 Subject: [PATCH] Initial version of shapes_math_sine_cosine --- examples/Makefile | 1 + examples/Makefile.Web | 4 + examples/examples_list.txt | 1 + examples/shapes/shapes_math_sine_cosine.c | 180 ++++++++++++++++++++ examples/shapes/shapes_math_sine_cosine.png | Bin 0 -> 55420 bytes 5 files changed, 186 insertions(+) create mode 100644 examples/shapes/shapes_math_sine_cosine.c create mode 100644 examples/shapes/shapes_math_sine_cosine.png diff --git a/examples/Makefile b/examples/Makefile index fb33b4894..cae754778 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -557,6 +557,7 @@ SHAPES = \ shapes/shapes_lines_bezier \ shapes/shapes_logo_raylib \ shapes/shapes_logo_raylib_anim \ + shapes/shapes_math_sine_cosine \ shapes/shapes_rectangle_advanced \ shapes/shapes_rectangle_scaling \ shapes/shapes_ring_drawing \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 0dbefadf2..aab50a5d0 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -557,6 +557,7 @@ SHAPES = \ shapes/shapes_lines_bezier \ shapes/shapes_logo_raylib \ shapes/shapes_logo_raylib_anim \ + shapes/shapes_math_sine_cosine \ shapes/shapes_rectangle_advanced \ shapes/shapes_rectangle_scaling \ shapes/shapes_ring_drawing \ @@ -862,6 +863,9 @@ shapes/shapes_logo_raylib: shapes/shapes_logo_raylib.c shapes/shapes_logo_raylib_anim: shapes/shapes_logo_raylib_anim.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) +shapes/shapes_math_sine_cosine: shapes/shapes_math_sine_cosine.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + shapes/shapes_rectangle_advanced: shapes/shapes_rectangle_advanced.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) diff --git a/examples/examples_list.txt b/examples/examples_list.txt index 50643bf2b..dee62fe90 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -70,6 +70,7 @@ shapes;shapes_digital_clock;★★★★;5.5;5.6;2025;2025;"Hamza RAHAL";@hmz-rh shapes;shapes_double_pendulum;★★☆☆;5.5;5.5;2025;2025;"JoeCheong";@Joecheong2006 shapes;shapes_dashed_line;★☆☆☆;5.5;5.5;2025;2025;"Luís Almeida";@luis605 shapes;shapes_vector_angle;★★☆☆;1.0;5.0;2023;2025;"Ramon Santamaria";@raysan5 +models;shapes_math_sine_cosine;★★★★;5.6-dev;5.6-dev;2025;2025;"Olivier";@oqu textures;textures_logo_raylib;★☆☆☆;1.0;1.0;2014;2025;"Ramon Santamaria";@raysan5 textures;textures_srcrec_dstrec;★★★☆;1.3;1.3;2015;2025;"Ramon Santamaria";@raysan5 textures;textures_image_drawing;★★☆☆;1.4;1.4;2016;2025;"Ramon Santamaria";@raysan5 diff --git a/examples/shapes/shapes_math_sine_cosine.c b/examples/shapes/shapes_math_sine_cosine.c new file mode 100644 index 000000000..e06b9323b --- /dev/null +++ b/examples/shapes/shapes_math_sine_cosine.c @@ -0,0 +1,180 @@ +/******************************************************************************************* + * + * raylib [shapes] example - math sine cosine + * + * Port of the p5.js "sine and cosine" demo to raylib + raygui + * Sources: https://p5js.org/examples/angles-and-motion-sine-cosine/ + * + * Demonstrates uniform circular motion and the correspondence between + * the unit circle and sine / cosine graphs. Right panel contains a + * play/pause toggle implemented with raygui. + * + * Example originally created with raylib 5.6-dev, last time updated with raylib 5.6-dev + * + * Copyright (c) 2025 Olivier (@oqu) + * + ********************************************************************************************/ + +#include "raylib.h" + +// Required for GUI controls +#define RAYGUI_IMPLEMENTATION +#include "raygui.h" + +#include + +int main(void) +{ + // Window initialization + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [shapes] example - math sine cosine"); + const char* playText = "Play"; + const char* pauseText = "Pause"; + + // Scene layout (mimic p5 example positioning) + const float circleX = 200.0f; + const float circleY = 150.0f; + const float circleRadius = 75.0f; + + const float graphX = 50.0f; + const float graphY = 300.0f; + const float graphAmplitude = 50.0f; + const float graphPeriod = 300.0f; // width of the graph in pixels + + // Animation / UI state + bool playing = true; // play / pause toggle + int frameCountLocal = 0; // local frame counter (used when playing) + + SetTargetFPS(60); + + // Main loop + while (!WindowShouldClose()) + { + // Handle GUI and input first + BeginDrawing(); + + ClearBackground(BLACK); + + // Right control panel + float panelX = (float)GetScreenWidth() - 270.0f; + Rectangle panel = {panelX, 10, 260, (float)GetScreenHeight() - 20}; + DrawRectangleRec(panel, Fade(LIGHTGRAY, 0.6f)); + DrawRectangleLinesEx(panel, 1, GRAY); + + int y = 20; + int px = (int)panelX + 10; + DrawText("Sine / Cosine Demo", px, y, 20, DARKGRAY); + y += 34; + + // Play / Pause toggle + DrawText("Animation:", px, y, 14, DARKGRAY); + y += 18; + GuiToggle((Rectangle){(float)px, y, 220, 30}, playing ? pauseText : playText, &playing); + y += 40; + + // Small description + DrawText("Animated demonstration of a point moving", px, y, 10, DARKGRAY); + y += 14; + DrawText("around the unit circle and the corresponding", px, y, 10, DARKGRAY); + y += 14; + DrawText("sine (red) and cosine (orange) graphs.", px, y, 10, DARKGRAY); + y += 30; + + DrawFPS(px, GetScreenHeight() - 30); + + // Update frameCount if playing + if (playing) + frameCountLocal++; + + // Angle in degrees (like the p5 example) + int angleDeg = frameCountLocal % 360; + + // Draw angle label + Color labelCol = WHITE; + DrawText(TextFormat("angle: %d", angleDeg), 25, 25, 20, labelCol); + + // --- Draw circle and diameters --- + // circle outer + DrawCircleLines((int)circleX, (int)circleY, circleRadius, Fade(GRAY, 0.6f)); + // diameters + DrawLine((int)circleX, (int)(circleY - circleRadius), (int)circleX, (int)(circleY + circleRadius), Fade(GRAY, 0.6f)); + DrawLine((int)(circleX - circleRadius), (int)circleY, (int)(circleX + circleRadius), (int)circleY, Fade(GRAY, 0.6f)); + + // Compute moving point on circle (cos for x, sin for y). Note: cos/sin in C expect radians + float angRad = angleDeg * (PI / 180.0f); + float pointX = circleX + circleRadius * cosf(angRad); + float pointY = circleY - circleRadius * sinf(angRad); // minus to match p5 y-axis direction + + // line from center to point + DrawLine((int)circleX, (int)circleY, (int)pointX, (int)pointY, Fade(GRAY, 0.6f)); + + // moving points + DrawCircleV((Vector2){pointX, pointY}, 6.0f, WHITE); + DrawCircle((int)pointX, (int)circleY, 6.0f, ORANGE); + DrawCircle((int)circleX, (int)pointY, 6.0f, RED); + + // --- Draw graph area axes --- + // axes lines + DrawLine((int)graphX, (int)graphY, (int)(graphX + graphPeriod), (int)graphY, Fade(GRAY, 0.6f)); + DrawLine((int)graphX, (int)(graphY - graphAmplitude), (int)graphX, (int)(graphY + graphAmplitude), Fade(GRAY, 0.6f)); + DrawLine((int)(graphX + graphPeriod), (int)(graphY - graphAmplitude), (int)(graphX + graphPeriod), (int)(graphY + graphAmplitude), Fade(GRAY, 0.6f)); + + // labels + DrawText("0", (int)graphX - 6, (int)(graphY + graphAmplitude + 6), 14, Fade(GRAY, 0.9f)); + DrawText("360", (int)(graphX + graphPeriod) - 12, (int)(graphY + graphAmplitude + 6), 14, Fade(GRAY, 0.9f)); + DrawText("1", (int)(graphX / 2) - 6, (int)(graphY - graphAmplitude) - 6, 14, Fade(GRAY, 0.9f)); + DrawText("0", (int)(graphX / 2) - 6, (int)(graphY)-6, 14, Fade(GRAY, 0.9f)); + DrawText("-1", (int)(graphX / 2) - 10, (int)(graphY + graphAmplitude) - 6, 14, Fade(GRAY, 0.9f)); + + DrawText("cos", (int)(graphX + graphPeriod + graphX / 2) - 18, (int)(graphY - graphAmplitude) - 10, 20, ORANGE); + DrawText("sin", (int)(graphX + graphPeriod + graphX / 2) - 18, (int)(graphY) - 10, 20, RED); + + // --- Draw cosine curve (orange) --- + for (int t = 0; t <= 360; t++) + { + float x = ((float)t / 360.0f) * graphPeriod + graphX; + float y = graphY - graphAmplitude * cosf(t * (PI / 180.0f)); + // draw small segments between consecutive points for smoother curve + if (t > 0) + { + int prevT = t - 1; + float px = ((float)prevT / 360.0f) * graphPeriod + graphX; + float py = graphY - graphAmplitude * cosf(prevT * (PI / 180.0f)); + DrawLineEx((Vector2){px, py}, (Vector2){x, y}, 2.5f, ORANGE); + } + } + + // --- Draw sine curve (red) --- + for (int t = 0; t <= 360; t++) + { + float x = ((float)t / 360.0f) * graphPeriod + graphX; + float y = graphY - graphAmplitude * sinf(t * (PI / 180.0f)); + if (t > 0) + { + int prevT = t - 1; + float px = ((float)prevT / 360.0f) * graphPeriod + graphX; + float py = graphY - graphAmplitude * sinf(prevT * (PI / 180.0f)); + DrawLineEx((Vector2){px, py}, (Vector2){x, y}, 2.5f, RED); + } + } + + // --- Draw moving vertical line on the graph corresponding to the angle --- + float lineX = ((float)angleDeg / 360.0f) * graphPeriod + graphX; + DrawLine((int)lineX, (int)(graphY - graphAmplitude), (int)lineX, (int)(graphY + graphAmplitude), Fade(GRAY, 0.6f)); + + // moving points on graph + float orangeY = graphY - graphAmplitude * cosf(angRad); + float redY = graphY - graphAmplitude * sinf(angRad); + + DrawCircle((int)lineX, (int)orangeY, 6.0f, ORANGE); + DrawCircle((int)lineX, (int)redY, 6.0f, RED); + + EndDrawing(); + } + + CloseWindow(); + + return 0; +} \ No newline at end of file diff --git a/examples/shapes/shapes_math_sine_cosine.png b/examples/shapes/shapes_math_sine_cosine.png new file mode 100644 index 0000000000000000000000000000000000000000..8f42724a26edac1c8977a971b468ab3ee2d351be GIT binary patch literal 55420 zcmeAS@N?(olHy`uVBq!ia0y~yU^8Q2V6Nj}V_;y|CTzsSz`z)t>FgZf>Flf!P?VpR znUl)EpfNFbqQ5s&pvcklGm>TmhMX326JXIYRoi)nM@vA;L^Ip8&y4Nyml-qvImR!D z)h>U#XnjJrSmTy#aZ#7w1+r(BrR+Mt(rq>O^xuyQ?maD#fAD&`e)>_qX1`7POqj*I)Y_Q*UwCjz^inx(P2Ncg#%K zr1(E3bi?0geoiHo4gVAZ%I9q7Rj}aQGGFHT-iH=%y%+TF-)heol9=>>*|X^=0|P@> zYJ_K+uP=iZ0|NsG0}G=R11kdq10w?igB_zZobAS_!N3d_XJTMz&tzZ$vl$rt7$9H* zlnJ9~OEFfars7p11=6=&p^>~^12 zz`(%3S>O>_%)lU~3c`$@K`I{@7#Oc-hD4M^`1)8S=jZArrsOB3>Q&@|R5LKxR9IEy z7UZUuBq~(o=HwMyRoE(lRaoT}TY-f2l@!2AO0sR0B76fBob!uP70mPu^bC~jxD*r= zY>HCStb$zJpxTR4(rlG7N=gc>^!3Zj%k|2Q_413-^$jg8E%gnI^o@*ki&D~bi!1X= z5-W7`ij^UTz|3(;Elw`VEGWs$&r<-Io0ybeT4JlD1hPm01|aTCt;j^!lvfP(R&su> zK1fF2P|rXgZZ^nxkf>EaW<_dFq)TRQYF=?>ex99$rHKt#J%$XzMjM3A2!u{UQ%eJ6 ztw>VnT0@Idi=6Xwb5rw5>=5w<)r>3&)o7y+@;XvbK*AX;8sy?;$7Q1rjuBAo*m3Dk zIeLwOfk7tI#Xp3Bfq@B>Iv5xj_cJgsXh3KXyFkx*9$zX0g9C%7i(^OyLW{})hjXkcJuV&TAG zREhs^OkDh3cJny|I2c=dCwx%F<$zt{ z0XJUQxte+4vY@5mkekO3AzVJV%dL@9GG9qr1(yX*4vEStHJlhehlEArJ5~|1UH%h! zaay3bV1uC0J}f~8Ho)OK6PNVea&LMH}Z;_h{xGcaP{V{4E^#6a-pT0I# z5n^!yPow?6kNvaFR&ChWc~Su)2#?YQOB)WkdHZez`MBYLF^h=Vyov71(W10pq~p-B z`aj3(Z9diTxkB{ji2u0zzV7?!gx21-X>RCoB+jjo6T_2d3AXLR#)d;~$4_oF1@jQ8 z;XycKE3bJYBml4{#$BQTH(r>Tnz?~3)e{f6v187iCbSrFSle*OZS9PYVBrTlnYg6S zpItjy5XBRX$2l}|Y}BUmIe|^$C4OR9Rv#>C}-l5zCZB?)E96&U-&vCF5cdAgC87wJNz9IAKO)H z3&Z6h3~5#oGczYii0{+{0&dJuIN67m-`vClZb;ZRfAa@B_7!z1>BIZtp4VQunFXPHNk)zGgL12d4h$_I5cu{ z9E@5(GGNC*7(2op5+BFauLcKk<2)7-v#L{Vd(q1lc~%iKyG=hPg7x@lF4$n0dP{Z| zmC39PHp9hA6~difl|E`+;kp6-QR z8$Mq4x1Y=P?Qy^TzN6<~KmE7;pwwB`bKlN?jFx|p`CYZz_HB*(=lQjL#~xRQT=*l$ zDq>c3rpp#J^)fQ$GjU1h%ScUS`nhn&SLgh`_?>$neYo~pSFhqz!<(;LKFdBmZRh^@ zqpem(T|X0-v~Akad2nYy7>(wPt-a=ay^Ynq)4Tp|Nx4SKMsME;%dtvtD@VxaFd%o6nbI-F; z0DI);rt=poYWlfm-Cx{r$gMweqdGYD;fccGf$xJihuYfro4gb4Xm=`&cJ%UEPV?y>YKAHb42R`8)@tZQi3d zGRfQ;IX!djcdMhiGMJ+$?uLe~&a;1uJEFU%o&POsTlaF$ulIrhH+CGqy9(qO zBugAx8xFa#UOVr+zAj?T?bzQJe?ByszyEL7dqI%l-}lY_74~hH)xW#1uXpb~f8uxj z`?dM0{}+Gs{#aE1x9@)XlfQj(|NoXm?d8zO`7){V+_#U{_y7Bv>u&$&!{O-PnY}gl z7C%27SAP8bZ_6sX&&Xj}u(jck+uR>l`MXPZXWLuZ&w2KFd;CY+M^|4z|9Y=H`2MN5 z@ZZ<4<+&{r~H%*2b}jm{py0N&kI<|D%7s z#QEp8v-;kYmjBr^fAMqU`S3Ktz{nKNJty`?M(w;yhvRbVGwXjo{P60>(!X2Z>CfH% zwQ6Za`1|KCs+Rs-`frl^%KakyuiUTxbLpSgU-$F#A5VWY^;hwpJ9=mL@3wz$zTNxx z>Bn1t3k2MFq0E2xt&;r_`@e}c^S@^}ZMuH<;;Lq7e_ikX z|J&Oae}ewp`gikt@s~d!>u%LN{kZhU(tk4g+r2+~|Fw+Elb<{P@zb)`KbBT3{kLa7 zZfmP0;{7k)jNAG#`}q3#ekje9cj5szBF;O$Ok8(mzg%qMV)OZ%KUbRk3tYeW_4H@c zfAzoHZ?gYNeM!A#oo3uh`{SqIUi!29_vgCe-COqC#O>y1Z0)uCbm6X^P0#hEPjc4Z z`my!#Yrkxi?6VGJgSo!#nW?|7FV@ca@~pVbuK$?*tJ0Fcm;MC(zxWqokN$D}quO7e zSL}?PRbO6zFF$Ykx9P{Tzbh`-aM4|E*X`E!kGrPKc^fLdzpUnNX0IAjCOGhwX)U+( zTK|A53F}+&xAJrU1nmi`|7UIE^|=4r^mFAV|1SOvfBzm7XFLC|@ZYCzS(jU%X}|TO z_eZb4mH(H1T>9_QKkv`Q^_p?-&VSCneN*}P{$2aG{J-?i>+{$9$_q9W_E&#jT_v&J z8ybe!=U&S|i8uWP8#d;}Rn0j4_w~h7dw(WwvUz-?W6%H9*Y)52d-Yc~cD;%H_vz>2 zU!DJX>SOkA@7Gt4f&Kb-`myQ1ynpMTJ^y!U#ZLS4>vPllW&Xbcx#qX_+3WTF2e!2K z{`pWn#s0snh=2F|^V9dPv&+x4udGks{`qJ0`}JmZZ+~pAJ%W-|0vTI-OAlT;9P=)| zKkVIE{>e`zkGnnj8^5@%WR()pOJN=`l z|5n!JT30{$5&nJpxA)i0`?d5(`geKT`g`%<#J)Or`lI=G<8S3>{=HQ5_dAD1j!DsZ z{+mA&f4(p(KYsr8^UpE0_b%0a`gbnx`RDET;&cDp`k4N^1JXK!*0hV6xTIe+1CT`7i%0{TFns@0`8V{w;MY|G)X_{qg)e`>KC?_JfjbU-)gkqxQS^Z@GWz z*V3QA-V4sywxMv!?k@!~uk_c(&x(Jw-|FAZ-%IHv}er~UeHsrk>d!7V*#oxQ-k@mg!|p9xog?OFT3=+32o zpDMjxgA3+ApvpD#|I(l3-=F{8e$W3~-rjq6KYG7@{%=zLx0B!kV5R+W{a*dA@q71g zzJB`S=J415CgrcRf4|-&?!PS)m$da=Z~o&;|6SSyDvwt`p1*hgrOK%9&p%%|cD}V` z@yAcUEbHE#e?9fs^PjhnYidvrAlX)VD}OVnd{`_0&+E7T`xo~FEB~)8pS(AEeR=tx zOTTvRe=@uF)1N!>UE#0JfAoIr{Wtvm`!`>U{=B)mYyXqzSLc6g_ac`G_A<|Z?A*U4 zF0*ds|5raM?U#P_{<}49X+`??=bxYdo&GEO{rgv6qu$5cAQx3BjIF&opYE-zm8h8? zdq3;%hwxkVfBDwWo%sEJ)z>$7tM=}GJpJ1FzpD4&On(0SA2>nAOU1w1Usa#Je){9| z_1FHY-Vdt37oWKYS|V((JE3RmGyRwMajmoZU!VV|ta-OSH~svrpW*%IpP&D&|8@Jl z_g7zUy|=#tIY3S@aY;u$*&F-Y;D_DreOG@yT)*Z2FWES2<@fu)zPh>lYgPGi{k8Ld zd+)ocejZdfF8wD1Dxd1V{yP_^fBbyh+TY&$KvmwQ3TU>>|2rYJYKGp|>3yNI;$NNr z`1!}3_}k~^ZT-AnZvOfC-{W89@4dhJdiLJ>kC40pNh=drqr}aMU@132hOxERZD$sl zMv0hh>M#SFI|J1J$lrOM|Kd{Zz$y#9ulBnCE`FB#s&UqSH@N71{Wo@R-0Q#H?#Q`S zXTgSvu3Ny3tOKCtYyIiHhmP^*{};Pr*K@tEK03$w@tYsg+csD&*|IGe4Ky7@e02ZVzL33T&p!4AK$zTuGD;yX{;9}iEHK-GF(aM9UwHZ}2&b40;@hL)QG z8OjSbTs#&i0v7zh!r0oYo>F*RQpBum!A!__1uO!#b86(=am!BxtGqC`;gDOo=FT){ zF6rwQ(XGf~%W{iDBWFvY2t?4v(IN3MXXKqiw$@(R43yNbih}o>7IB}oE$5z?eC_UT*f0?+Xzdt{~2ll9gJ`lqr z%!9a^g+pM5mqTLmsuF7*uyBNEz>SEf7a?N|U{`>{0Z<@ez zh)ftE7;q!v;6+GQQWFliF+=BJAKJjIn@GS73B&AfKA<3EIVTu!!{T^o2sk2P=|I6@ z!NP_^Zq7an!45d^fQd`GS^dH{uvg($9^hf(k~U7cDG3%nV8+9s=fE8aa15 z@-x8}T$tH#$Ss|7qb!(*u^I+^~?0s6aPqN5i3Gh0cNyhX;ek5hr;*hle$U!7mnYqoSZl7E%m_aA8R?EF3ZV z3pNz)-6;z8ox^%iN=Q4l4{Rp8UoV#*Hnacthhs`$kj$3Bu$knmR_Jg9@ zN+{sQ3k}I_kkkqG6G)h&22@wQDY~|vOFI2z7dV^gvWS>PX>_5Dzj4gbx=@^`+{Lh! z;bXjW&D{Slx6j%Uezw1K-@CQXi)(JZzrOdkF~~2dLw@jl4H_WasQdO~!~d-(Hsn5A zzj)iZ{=)d=`dH&%`~Q6_&3So#?Q{1%mv;RErPTx;#@1fLPbt&ULNE)IKVSB<|JlsV zwej5b*jmzbgTkgd@$tq#uOHX`*(UP&@{O(c_Z|Cf@^0(7OYgm_PwcOsCBMHm*8cqI zw=+KfvVC?m|KhpgecO_APXCO54Dp?fyF=n*%bg`cXfYMR*xLJ)>DclnhqJCfOzi7! z2TkbMnsjcp?B_?@GmhWzzb|pS=-=|vKj6XH$DrY^`OfN)oDBD4zj(lnfEyaIpZr@V zUXu9>5;s`ZaOl{K%FWrR))`DaFtfE+_rIxQLVcCZ|1Z%!=kNO`U$6VUYrFsBxR3UK z|9#!Qr+sVL8u8DI_nN8yBEum+Vh&WO)~!_ts5V^0AZWOFud3gf%HH0}kI`GMKRR+_ z+UM)nE`yt2kGV8*dS+W&L+T}vqrqA7GKWS^jb6eYy#rB>3%)hEFe)XvReR5w@mWe5 z6eR19c5c*tzJBd;aOylJ8gN6xyu1vx#$#C~7;ppRj@SlcE+)ZZZ$~A)#50v!ljHt~ zy_NX=QabtltpAz*b)ekcXvZpI_UlY{EVxtwr9)`Si)RrrvlBOnbJ;7x^6uX8i(mK0 znAd}*(HhUOikMmXPk4*2h}wu?P}J#TwY zeD_jt!2J>nxbec;z6=}_@UUm$_@i@S*9OL^;4Cg65$=$feCN(hOEjC@91@dfg;;BV zg*CV|azr|L(2^v}JF$QpJFJEPQ~KiA!2sAsW5aVxhKRL*be8Ibi>MPysbN zQ!ht?&4ok)Xwt};Rm4ngR>X0LE38?tG)h@GVzd`*C|tY!Dp;?>dC&wz`tf^U9^52` zMo_YjVFBCbfPM1wMc9JU#K-^twAa7-wgx)s_l@h%^!oqX_XfAmTE4+BWLFMkUIv;~ zSUAprW^vN*%>~cmyaMH%>c1a;-~az_ef`hV@pj*TK~oe`FgG2DZ0)W8d;i~M&fTJu zz%Go@{&4>P`})7Bj;+1t-*HLLkNpE_?;t!eM`OW;LZx*VKuO48Ps5>ORa~NG*J{6@ zPid)x+MW$s;K;QBrB~ajT+*-Ys=#ppwhZj{Mqw5aGd~B2{c_5np%bsx-ctF!pbX{p zK>q(ndGop7`Rjii-fsW@=lR*k_Obna>0f`#=9&W}2pbq0Em=g&o}Jhn406H&Pz_#c z4l_a`Dj|EJ65r0P3?I98m%h>d7WuoQ_BTi&*aA8nk4wadk+1tU0rU52Vw=*G7Vf!OTs5^Z^{jF$XM7Y*I&#SE-v8_0R#g6| zVylPg?onH?!7%FB8<0IL>qG)>L|li*h#FJig^E+mzh1QV&bhMusrr0>m}@T}&$GR7 zbx2IM6^5m@0*?nP`Jee~=eSIoKWn|kd{7{RlJf#}#@60>n-cXw5qJSKr&r}B0!_&a zq7>wg#|zK@6rYjOvRusU(H!F^2IpQu3P28l9o`O!kM$~FgVNCf4p1aS2EiiXEYnAc ze^-)@g?B6$H~SPB|5ozTudjFh!HQJmx%C9lkkr>Vn$W0l2uxVkS8 zS~wj6hXRLyLV=G%;^P_fZ-SiqA&0TG_v;^6T05}lKo4v0ff*Y&eEj-my}fopO9#w{ z3G*8c9kVmv4DxLPA4r#tHq@>I|FILP)h&_tI|)ToiRN5UrNf0?9+S>5Ii`<>c|6+AaUGh7{GEFT; zCeZNzwX4vSVKA}b_^-Do)3)AyWjZN*?(~bG7;$JgAj8BZUHs&x=6TT@Q5#M?UKD#P z_Rn+$L%Um*aqs%euIZ)WB!Qs-FpqV5m{&wldkJU$dKVIzn_v6{W4EO(+%pYCti|=|~&g3ry zn$B7VU6CNC_n@&ZzG>&%;_9pKOfhv=lG|+Fu5-cIwFzG z4VeOd@2nvAXZt%fF43hQAtuhpXCgDJ%_(_*t;3Jo)^o_*w&;TPZ+bu#S=zlfyYw6P z^8YhjUovZPYwxWe(Z{DBd#Mf{75b_JP5TcLndBzjR+*A4eLP%b+FKo0NbSsW4AfQE zjxW2t+(ATR5yQsP>4xh~>>eHak@388r~R$Um^}AAw?10-nKgpuyw{||iYI=-3R}7T z|32FPy{xuS?(uC4H<9ngu%%gzGg(B;(oSvLJWo}CwNXPLCw94s{`co)am%m7OT}B; zAHS^j!3C7c*T7uI$Rzjhw)(`(>dWCS>z?oEg4U#8G#6~Rm>%~gOQ&%!YvZLocjn)Y zT#3VsgapR_;UAu>o@f5EbKCkC|6VWp+~W!@Dt|#HSIZ2y9k|!za7KHs-9PUM_l`~f zws!sjP^Efp^9pE!cVxBMGk>;g7HV|Fgdr3qQa3H|BoFJG*vRN(FmdJ?-jD zP)W03YQv#pyOu!HA)C;L8+EapBI48kMsmMsp=jq zi*+=#-_I64`aA0V^{g}N&9_6wBoqqPH5@v&bKfFRsylE4lsJC|LlURMbEfsj?_Ib5 zw|x0J-zo0jviByNez%239H=E?qu6~8TtB6AYUHdr4UM7&$&CH4zpJ+Yt^Kxs>d*VH z^GhMQWI=DkAvbCFK#+GH%mi6g3C*z%%bDcL-uv?Wul^gq`t-rSmK&HMS{}@3ICRX= zelw_f^WY{(%TJh=b|$%!_x@cncjh-==X=g zzA&?){f?cG5`XQJhg-RKzEBr0gJzE_oEkY-DkZ^#Q=sx{>qz%R!d2;=o&V$)bz? zdU4hh`}ciHGzS^%(15$i;GoVVmuKyHS)K@QafwZ94a6^mh28PC+ ztRiODKCg$SCq5RN8)Xw(wy;`yD$F%`x^%M34K}EcJRK5~g(o|LEH+pP^3fxxj|w(7 zwBMR7ykWzhJvs+UK5V{IGJz!;+88zC)X2$6GU@;|J=8!0kp6q1sV7h5gG04)U1H`= zO@_O7bnVU64}1cd?a**Qjj^@Y*M|+%1w60>6yBZCcF+M|Cb_iyru#eA{K;wARX9WD zE^PeIApz90P*ZCL#cM(kD6<}cR)`PS82LAuF9_Gubf21F&O3ei><7Bg+CE1p;Kq$3 zDFPrL`e=db!wP6s6r=M%@mtb|xu;KF_S+%7?BrG67t=ufQ${8h++NZX`M^-E`0e1* zC$AJ99KHPXbyC4;kS7=znP#(yn3)+$g2R6@s8y&Q2aQ{C&Weh?9J?+WeY(o=>5xHD znc}vkAWt+fH2N}eNzb0a11kC&JweeV42vdi7MmS$4R@@f6nafh`7_oCV!%ZQAnmU=}BK(ioT5h>Bm#3zv;-@uyWE4+`t1$AfRzDag z682B8$*xe+(nc^Gy0id~CKg8iRq6}kWPCxe}x|O*Z+CE%mEr&3#K--UkRJ^{n*6g)qkVc=}p%)Jqij# zMkbal77??oEj^&_XJaI2rCfSk;^WQT@tgt{jt7`uajr0LopO5i1OKQnJO3t8Xg@4M zG$Zy#M68cGD47T-T-e(1KWXvnFE?ZwD_L#k*lBQE{ftzvw)ad5aE#c*kB=KfcJqR6PI+q z=h9|@ioOQ+%g>(}`6(?|{J3WQ9y{&%evt9qD$wF(Tjy_(K?YC700&Z&_Tlb)-}#KOfS=g#fGTz>lPfs?m4l>WTikivo2 z9}>|A4!^kZQ~PaPoww8D@25Zhuq0PFZ5!Pwe+e90w8jvnm?h9!6I1BOlmlOp5@bnWij>^JLUV-?#l=Kfh1&{5hC>AgJsyhzIS2!`nmed zg-{6`&=>PtWvm@@PM3EWU9?_TG*= z@@g_x4S)FI(`0u!G;&HNb4i2x$c#+eL6dFsn4}d9+8f%>T7KG7;`K9r(#+@O&R9mdw)%_&Dgg##ngV@{2np6SNcY6epp+RrS! zRC+7zZu8}gcJ4QNJkyP&A%Tm-BOh`Y`)8a#_x{@Do$S#|=h>f&t*Gmp3mKf8qY7Oy z8=Cv|xP1K@Df#B)xqCk=pS$+{>g%KXqSoKGihEN$C13yf{ayWQAG>{=pE}?Db6H8< z`g8ua;p^{Je_y&`WB556CYCNHIfHJO%RB|*%RIj>Yu?2VttuFqSSB?ba$}0jxc61z zdez-)AH{a;`nz-b=lr|JuNB^H^53;_aiz7@{_tayeAc3(&x%)rRx`C!czjJA&|9{&%KWuC-*Us}#Tzr1d4bjGjtTr)x^A9a!FOZ*AWT!O4`eTQQ z6$?1!>^S?yRhISozb&kd3(qYrwYgJ2jnmw2e(j$sSo?5B z*n!1Qx2*hMQSkkt^64w~yM%+6-+u^6d3ud;T+$yWgj>1Td^!5#&bqnvB{gg03zOn6 z#{D|B=hjE>kB`3JsyOyvOZ?}K+l86(AAjHc+4Wh!_WL^d-|=11zxI~hz4kHddjH45 zcNx>ag-Xf)U21Xhe%9R%@%uO2kMx&)Id1-4e{1reOXiP`|5;l2vAU;!TRv!l8r)UP z5&4j@Q!r~%;=98to$D-?SqCTcL#r1jabACMgxA<*`^!=bc65{u7eKgeHS6TOG-u~$0Pbb*m`~NtM#&=<(qxiSH!pcH~e`p?e_fi+TUSP zpuX&J-LKdC&VMZ0Eu!DQKKJ@Dd#imW_TSyD=WEy9|9$pjQMG2C-1OU(aqmEV-aGSe zZ~f@?xcJZBx3@~YK)!ii`|MxP?y@?${aa&ixv#Wef4Qor?|Ri<8UJd~V3C>nVh({D z8V?p0DPKuBe5d=QP+Vb5`C_Ki0pQRx*a>QmEdBpUX~*a0Fi`xo}MWB-@l;wN9H z9Xq~b>AxSf*>^g`A1D92wB5w+yL+`}+#k8u$A9d7+aV4Kz@;BA?*9^d>;0u4d(J^3 zuKHzliTp;tBPU-!`FBUJ_x#_TvC{g-o?CeTKL2>pUJ>IOWQ@ZUzz`SyWIT8TjTVPU%m$$WMMJms#tP|!}O-X_oPiN;WF3nt~g*c z1zbA%=q=c=v5xW4!_8k9!~>IJwoKm_{n%}f#C{R|I{n`Be=qj^^u8Zqf9!qk^B+qq zqK`i>+_`tleH*=7mGK{cUotrT-+v?_c_HNB->$ z`TI-%y4U~HJ9_f*wqv~&-~{x%w77m{thIgr{abo(7hjowJ=50ic=q17zU6y;9TJmg zPYwh(T^x2YW?oW!cWg=L{feCL$;wj_!DVwoQR7W+>9ulZkEN!{y-ETlO7Fjd>id>{ z+-bjE`P?P*{`I-fcP#x0=4U@X{>MhYF8ywB zU)KZ&a@X|Z&&%Hav8l_pULSq?-0LSlFV3$&|Mphl+GFlA_pKOPd#&^ra|%QVez4ft zWL!CYx8YA#4Vn9YH5gt(Dgl-{(1h5>$G#`{i+BDlyma0^PgeXhXr&u{9Vqa@U?;=l z=kY9e_{A5hJm{O!@&(*xU}V}XZsujK@UOeCVnwvn{?eE;_pR-o>DPMy?y0Q4-v6Vr zZl&yNz1r!|o`3Xy{k(AJ+{e%VWjrsu*!OQ~{+sNT_I3RgOFx1~R+i?=$-lL+`?m4Q zeiOU@^KJ{SH>>Lte%m4Zc4_{a-B;xIUq5!++U}e1=f$$WJM!Q4mwkEuK4^}O-lHQw z*1nZd->w|@&-S?f*Y~pXA3ytc>E9=dx1gC6@Jxim(gydFUK>uf?UtXcT64Vc?nKx! zp2m})1)sul{3#z9wwqMF-Z5i;IjHEI_D%Bhw{`L#KmQ4`z83pS@9cTdBEQE)*2mBP zy?E~NBH6#*_itPes{bSR(d+T&9e4UFyzkrC-Kwm4lf1G%v*w@ecICL-KQijK1l4bO z-;XF?Xpj-L*cL-`269GIw%HYp+?~B7qrE2a=y$d3nF2qC7?T@|Wg2lV7f9fV6No zfO@8<7EfkqWMq@xn9ovsz2ZB+V8 z7P1m;4VOmFnoloO93C_{tmi+w_uXrTuOh+9`AZM~n!iYkbM1F%FL{B&1HnxUOMZ(p zem~-RL+io1oT)~A;IiTjXd)&4+}s%lLYY1a+`a8wy#DttE&avoge$e*?%)19>{fpM zUoPprsYmKKc+?&U7Hw#`yCwGf6SW_V(@VqId}ir_lVM{wi-?(C(>5M()i2@TkeJ+{ za#N`>j@8ED+pL-YzCB&{W%}fK2Q1pEe1=^PX!mdpmBV+e94XSOw61W zH8L8J=J{7+cUm$w>%QN|GtJ;Oq}?VC>Z7paN`kc*G&CGK#^AZhmC2T?qT-FA_TP6W zYhRk1?|pY>?n_hSZ;<6o??9_s&fhx)E@>8kHWA%3O0s8R6a4VP!ef!u&1JtYc`C8p zYO^*D*pvgAYl~4?u%S?JODeddet-eA8%^b;80QzY2M0H9@AB29a}rg;0XJUg zDt~iMU|{U;WmZ|aS$CK5T-B5bZ+Dm@CQn^Klc$c+ZQ$7EQCP6S&|y-}L|pTd94KPuaR0sRZ~u4GfqwgcJ2DrpeZ0Nz_LhwH=1)J1ey`Gv-}~)59= zuCKIxe(huQ@uzh9|6)%I^o*WN15ligo>r&N9G zr4vj)?Vf%+ksf_}_n~96`s|ok?y=Yy>?_O&;n-m<8qrp#{@`DY`y+O6Y#1yB4N_*V zujROHRrh*Fv445&m&kLk=gfb9C2acI$9C%U zW_ou{tN&b6!|z~*OW?sh7SMh_3-gOx`IDoM=gXGAd%3RL?sVnc&!6YsdbO$a&hyYe zUJqguuKixJ;bR^D77kG5vtvio;_T1^cO#!(j1(xS=W^HuDP2@RrOQWwkVoD7iyy7} zxH0Zt_!@ao`Bzl^{)deE_UYI9zb5^;wBtp8{+ZRX@}H;g6V!k7ybv~4E;0YM_v6p+ zz2A0#itp#8#n#7kYy129e+up|yKk8PGFtlmn~&bVd+txaX8&r7i21eN{5bWx^Y?F6 z97{hKfBWIx)#pQh|6Wu4Z#|dvbLr^D1Ia8ldUk44r^_F?yK~N;K<-`k{a(utgQhnb z8t*c3Nx!e(`TZt;=292kwetL#hV_{-UyhqUyV}?P)BAph_{YyX?#REj(c7*Z*K_{u z(vLsCFD*L~`>Ox`=UqExA5Yuoe*E~Kj`-d0XKeqnwzvG-kEON8-h026FOBMwetpb* zz3~3$`MEZaH$Pba_QSiY&sY7ey=M78ytVgp?^=fkf=qH^@)M8U=6m?>j@$nkt#=oK zM-4zuJCFxjTz|>!(LybI9#>GqFkbrqtB;lYch3Dj`S;>jaGUedk?mLHA3uV$z#bhj z|33Ye;reg0A5VMs{Nv78>-zUUF6~&yIe7@uQ>oYk1=0tisoV z5+Mf`KU&cFI_35|fAvm@3h8$j4xHQ!8PmSt;gI8t!`Yi0K+=5OeY9Z`3xSlC2Atgy&u%O$t8c%mtS;CPEppH#*wq zT>7@CK;ZG>*jeG=w(arre|O%ks_C14d+FEYn#`DY{bgt3e|?+Pe&heOzq)hRoB7Gj zzwQ0{$osX&+~;)c{&M$Ku(bX${iEmq?wtEQ`qh2weIn-H-L2P8zwQ0}++(G<)gLY6 z@}7S!hGd7wHG=lvpO=A}F?x?&>+`;w{d@EG>F2nsVK;Vo-Lhg~6aTQnqJk;^-oD?( z#Y}P=_E>*uP_beHmva^x3pN;DuiqHBOYh@?2&wXK&2fG6Z!i6;`}O*j`M3A>+E>^A+!MZ4)NI|PZG4T5tTq~abN2Xcd&gHgspH`G zhjP609BxCF0kN~5)5+5&1>d&5jEwVm#)cpJNvYzhzmG;MumcNE1h>iE| z<>&4JC)uU7^KAE({k>FIRG;_!Yf*jPeA|C-zJB_*K1(|%Mm1NKiJ7~?N5-OZZq8lV zS1N+d`G;+#Y#O&gmRRs{Y2=*w8lR&hIwx!W#hd(9mUVg8-S`h1T+r^PiH~(J>BoGeOy`y$}M~M-oI4=Zt#2mwyCap`)ldnC;#r8d;Rp^9lPp3 zH(x*f8xN0Fu@5sW3O-rg++}^mQ;F?2hsFb0k2G zf6(q9NE*4;4{8eUlzsg9{m$4f@j_5n>5)r)&-uqi*2kXTFWzky*Aw40|M&D;mGT$k zx}^Vp?A>uO?iZ*lbtP_={Ql#AGW2VU|43~AQvKz5e$V;+&%fQP)jir@aZp1i!{ zKmJtbO@HJ%M?(DVQj3f7;CAZApWpAS1GPlo)@2=kUi`G|$nD+#W%RfAAM5{VnfJ#0 z*W$UypO(q(zjE%gQk~rV<4?@2vJuzm#cg^2#6BRewm zk9Pi(fSUKbEEm)rwEwQZ^|Rfgy&~qn9!nQ4-utDu!mw`TUK9Je{+}1)em(nPnD_Gg zi}Uxv!M68zRG0k6MfSHU@80PH`9kk#w}qkJE$_lb_Q#$VLPJqH|NW0!f3NhNe}3w1 z$M*97pdFvR@}G1z(~G9d%}Y2AX`pH|aY<`i>;g3d7tD0f=l_0|FGNz~ zT>PwO^^=@#Nv1^w`F_y+;o-@F;sb>CO6U7qo;o3|V?FM0-4!Y5yw z3z-6dtipa2&UBf(qGR4aE)&**`Ll|+zHM%>ekz4xcvQFdrjPK zrt8OTesg&5jp>n$~dW*yc|!O;~1eR+!|tXA7i{>rrpAi5F^x%%cXlAxm(2~opGa*H zD_9=Y-36Kb`6a$%_Xa`!&b@!c1^2#HzrO&qbKCOX-M1IN&E8veyFUN-$+*Q^(?8F7 zyJzv;L*cf|ACrSq-)FErdP zUXJMcH8YiqoAKrC|M}&f{5P-P+F#AtttAS!{FSqL_wsV(Hr07&i?@B=wpaIj=dukS z=fqfXHZBACwa8EYOzo_HTqf)V%V$mIf*czHI<%+4Kkz+&_0qpnf8F=5uFu}`_n!W? zea!P-+il&ux$<1uy<5KxPFJ+{MjE}H!=lA%BNf&pxlikX-P%tt?kGO+d+T5f*)+tX zcVX8CLH=abX+Nw@lWOv=pSy3h&qVLNdVl}FKh=5nOXuB)Uo-#v)Z2#O!H)NDK33kn zV^{rm@5k!Toqu~CP5(agcHz9eKTm!v0u`gldzbzLHCgZURe%~9--3@lFV6f9T@uoD z;4PCJZ@&M*#byueY_;ab${d^fN{QFZ5uEb$L<4SAJnw5iR^d_e{_i*4U!ULal>K~O zZvOS&uStLJ%%{E!l;_s}-ETktar^&2KffE-mo7hdMRYc}Lj0mx5SFMc_sDB`U;AE( z`L`?UV56wz$E|nOW!Bl{ublh%Y1zE_zl(Q++ku*KZ-2<>Z!g|+=iK9BNEmAzMcUmm@2&=k{edh(pQpKC!^e5oZ?*6Je)InJtjAaT&TE6(-%HE-rXx9Y zX~kAh`}^F-BG9TQaPxIt?0%E|BKqg`w}PDcxwt-WyIee|9kl!FzoI`u*6X1jUHtfS z&09kj5wl|_CdUfx2sx1aaOs_3oo9Z%GoRgBn%&a zJpIZee_ovbTvWg1^Nu@lUDJ=d?pgYA>))lI@xuGX*5AUrK%>&fp)HDUlk59`djEw- z0jQm1{Z0BYsM+%G&OIwoy}tD8XN$LXEFxyVPBg~~yzn}ZoEZMH;z-(^l^ZWrY*`_= z+;;blhjFc2AnP4xI4>woT)bqO{5h|;GV9A~=EY|{|4~`9^8cHU;QhhBPlKicK+Eu^ z-v-5f|FP4bi+69Cf9Z$K{wsP%SHIQoJ^vdz+m`2*|Yr{6-Fvyc>{ zcl0#;Xp1t(1=@`Lt+7iV3(hWFe#|p@^&+=9KhA)n{}e3x8C!e5+f0{x%6={!YDi{&O+7PkDP?to`xxpP@_f?##cvv|{b?=Uh+w&`UZS$SS7Z%4S|8^~&wX9D2< z)S5|gfBYvO`LVRDZ?g#~s5`(d+Wp%gW1h+N8$tP5Vm>&IKz;w6vLC%Z7T0en-gBq# z2e|23e)Y$V`ZeNjL8JKamag?9-QNCxHu~F>>w3V;9wCLI{xMLS4ce5v+IPM%sqV<> zzmTS$?8l@UP>KP!1^X(hk01XdWB$k$oQlqYl0zo+AdELn4&h94+`GMwE1Ny`>z(L^ zw9hCZ3>3&`jyvDIbU1qDf7@I6|Bt$X(`g4N(H(n!KlxwK|4X2TwELc*KX>FolTpf` zES3E@*3|Bs{A<_h%>PJD>%I!_$BV(ciR3|U0Jol>mmTT;c=6n0NDA)*C5AaOdf(&>oD5?7I~%Ol@#~vF_5xjm8MIGvfEgt$A&|t>MtI8$UN!GcD(+Xt8T8eYN0S$p4r2t5*oB+dr=FJGGZ9 z7P3Ot0JO&Jxy|wBgfDSl1teeR{_Wdze(iI^b-f4Hd{;WR_xt_pGvp(0NUJ}4o_{1? z)_lG2+tt^*OKXpV4y3ZKFY|vO!r0%se1o6tmAS9%|8hzHeSU%uGQ#u*bg0&ShUe-A zeGWEPrkB-(K2&(Wc>CX@b?-i%u)CGap^?)wQGK^c!O8>n|3BN;|NcDxf6dETV%6IY z$p8DmUcTzH$p72_e=QF#|Kb1tzP(xh|6Sq#f35$2%Vu2zxLwxZFrSG_y7t-8bsPde z;uPdw?SEhS|LMB+Kli?g|K54}v8{I0Vvr@1G=HlUENuAy`WN>`^~hJH%j5q4dFlV$ zZl3?4%2S4a#if^T;DRp1G!Y57kC5<4=lIr8bPPOoeP+2opxvCk8^7; zK7T2SygO+>r$)}7w1<#0p%Op~A8zJ1d=~zp@ZjT5=C1jCoHcuc*W2&^_c1O@6*UCV#ek-Z>_L}_k-8UUm~+RtfwDXZvFM;_MIWWtlvf+ z?Un!c*)qMf{am3aWIXwc)`ATev(w%{7P!DSh?eL-*tp@h2=DfTORcwl`CY(XbD~Yu zOm33LanL9%BNIQU*^rSW3(@vQAmGN0#x$fLG z|CzQhkKgm|%)fN) zXz%8K=_}%bmR6VUUnUD~_A)YI?5vkSNkb*C=iai)%R0l&cYoE6!nDB0M<48qDUj5G zGOwRifw-Iu=0Zn6ds z!(NDTNL;*i1?1p`1klFN!s7JjEPlctA}XZbZfVSZAM*A`W}?5{k9&`fiMsY)zj$}@ zWc`K@;H0*|n6b6@oKTWAnD@Yqv9(wFqpt6QaK`@Dy=iH8YTxb*UT?X+{?A_N@6Yyb z+ff)A_;~52=W%yeXF|r>93FHu96BawTMWq?n?c)vr}{5fyx?=7Inmgwu};jQXnxSip@LR)6^*Lqeblk$V;mu(!ee@Vj7>D{SZY_@^I}2ry*E4V4IRZs6Dv&q1XBGf&(|dzZCudwSRxepM*thv+BOhmFhSY28m!3(7x*> zw;aJdhd_tK#U3dPjh3u7Qs-uV-|Sa=wRTt5+|6^2+|^UKetT^XWQnN1V8D$EFSWVN zAa8QWhzH!T$kSkIbmyutsY!{-x4ts<`^!^X^O(1OFt04*1PvZE9H?R9lK%YkPAAx+ z1CtsK9h=m1pVLS0!Nr14+!ucQ2*1C4_4VvCs(08JE$_ir+f{&8CLb1hWdTkc4?weB zj5fiXHn9f|KfG*QbNA=F9p39r(kD|mW?+!L^>oc&Pjo+`k4XR!!ymtTD?)0 zNshmK!OTyA3)**IIV@-Q=*Pw=2ffuNeITVY-n&la=3-*kIseH zwy#R#_0Dc;n4^391!Oi4`*z7jO;#HvznR~jwZHo*_jS+qXPp%e4nM0Lgk&MdGrSQA zxN(Cs9pb!-1r3LeF;9Nw!4kz?;gO?j6~E`+`wQ9i>+An4eN=n@?7jDa_p6|rP>+Gm z*tBo=1G|?cic=$J%OsKZ1I?^9YIYVo#btA+Seu-()Ax!lKYhZ#Tyvu$INub2)_E_z zBc=@277IG=cCOrP3GWewDw#!-hZRr#1jp^@;HoKpd0qgnzI&tRtlS`i9 zbanuAbl2jhXTmca4kSNf@wEHdvH0%7i{Gk?e(mDa*T1{ukQ+puF6fkw4bhMVDkY$9 zb81vhmqR_1oXGFfCq1mCKK|SD?a!~{_jg}B?koL~@2g_EI5>76Sb{dboLo8?Qu-}s z;*xe}J*#fe+2DTEQ>gZmq5D32<@bM=l-v^vlgmro4q2A<0(7X%>XI9f`RE;?4vCM$ z>biv`+z%{%WU=#A;qt}z=U@DO|MA=vcPGnS>4I(!oChiq_sp>p1Sb&i<~h(}yvdvu zA#-#d_V)j7`Te=Y*u?Mk(uY6dPvshd1LOke2-@kH8#Tea0?=|W-8W*Y2Fn`Sj~afy zc6ilAR9!jE4N=B|jDWAT%{|KF9}pRW|l`jmfu zIcGL(Fs2Q35YiIz|dC?CCe%!e;uX2<6{n^)V#(@f;b2}aV_gO#h z=!7)U=4mh3@bS(aD@kxbt`H5lu|m{%-hn4fa+2!%8La#55AU7%u*dpxeTLL^=NdK0 zc%M6`MvjfvTt3JOXg*Gj9GOSPGY`}-$w@vxUD+*sz9>JEkTjY}g3ytJWlKX*mOAL~~89FZ9>&z&i`*8B3lZO_v@D`7~mDTB5J&kSpa ztQ_AB+7`TVrb|K|V}Eb)^ZN5I({~$ho?Cu??hT{%$6~6w575vPCL z(0Z`3aP^czMT5_CXa0OM@&DfVvTE4T9Op#>Zd9bj&Fuo$G;ah0ZroU$#>dEX-^OAW ziz(CQ`_pfpk1q~S(%C%W17v*!ixcvh)UBYA&&F6LIoa}!zSbvee=d`VsQi6*CVcS< z3lo>Lu*ywAu!jzS+Dp9wZGs9P_BOO1fA9O}Q{;izpI4tg{Q%0AA6Fm0^#Aofos&Nx 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