From ca6c886e87cbee9bc4d9febebc8bd9ee7a8717e3 Mon Sep 17 00:00:00 2001 From: Konstantin8105 Date: Wed, 23 Nov 2022 15:36:06 +0300 Subject: [PATCH] add example --- examples/gui/portable_window/go.mod | 11 ++ .../gui/portable_window/portable_window.go | 99 ++++++++++++++++++ .../gui/portable_window/portable_window.png | Bin 0 -> 4796 bytes examples/gui/scroll_panel/scroll_panel.png | Bin 0 -> 13363 bytes 4 files changed, 110 insertions(+) create mode 100644 examples/gui/portable_window/go.mod create mode 100644 examples/gui/portable_window/portable_window.go create mode 100644 examples/gui/portable_window/portable_window.png create mode 100644 examples/gui/scroll_panel/scroll_panel.png diff --git a/examples/gui/portable_window/go.mod b/examples/gui/portable_window/go.mod new file mode 100644 index 0000000..38805c6 --- /dev/null +++ b/examples/gui/portable_window/go.mod @@ -0,0 +1,11 @@ +module example + +go 1.19 + +require ( + github.com/Konstantin8105/raylib-go/raygui v0.0.0-20221122151443-e8a384ed1346 + github.com/Konstantin8105/raylib-go/raylib v0.0.0-20221122155035-fe6d2c0ed32a +) + +replace github.com/Konstantin8105/raylib-go/raylib => ../../../raylib +replace github.com/Konstantin8105/raylib-go/raygui => ../../../raygui3_5 diff --git a/examples/gui/portable_window/portable_window.go b/examples/gui/portable_window/portable_window.go new file mode 100644 index 0000000..bfc8a8f --- /dev/null +++ b/examples/gui/portable_window/portable_window.go @@ -0,0 +1,99 @@ +package main + +import ( + "fmt" + + gui "github.com/Konstantin8105/raylib-go/raygui" + rl "github.com/Konstantin8105/raylib-go/raylib" +) + +/******************************************************************************************* +* +* raygui - portable window +* +* DEPENDENCIES: +* raylib 4.0 - Windowing/input management and drawing. +* raygui 3.0 - Immediate-mode GUI controls. +* +* COMPILATION (Windows - MinGW): +* gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 +* +* LICENSE: zlib/libpng +* +* Copyright (c) 2016-2022 Ramon Santamaria (@raysan5) +* +**********************************************************************************************/ + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +func main() { + // Initialization + //--------------------------------------------------------------------------------------- + const ( + screenWidth = 800 + screenHeight = 600 + ) + + rl.SetConfigFlags(rl.FlagWindowUndecorated) + rl.InitWindow(screenWidth, screenHeight, "raygui - portable window") + + // General variables + var ( + mousePosition = rl.Vector2{0, 0} + windowPosition = rl.Vector2{500, 200} + panOffset = mousePosition + dragWindow = false + ) + + rl.SetWindowPosition(int(windowPosition.X), int(windowPosition.Y)) + + exitWindow := false + + rl.SetTargetFPS(60) + //-------------------------------------------------------------------------------------- + + // Main game loop + for !exitWindow && !rl.WindowShouldClose() { // Detect window close button or ESC key + // Update + //---------------------------------------------------------------------------------- + mousePosition = rl.GetMousePosition() + + if rl.IsMouseButtonPressed(rl.MouseLeftButton) { + if (rl.CheckCollisionPointRec(mousePosition, rl.Rectangle{0, 0, screenWidth, 20})) { + dragWindow = true + panOffset = mousePosition + } + } + + if dragWindow { + windowPosition.X += (mousePosition.X - panOffset.X) + windowPosition.Y += (mousePosition.Y - panOffset.Y) + + if rl.IsMouseButtonReleased(rl.MouseLeftButton) { + dragWindow = false + } + + rl.SetWindowPosition(int(windowPosition.X), int(windowPosition.Y)) + } + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + rl.BeginDrawing() + + rl.ClearBackground(rl.RayWhite) + + exitWindow = gui.WindowBox(rl.Rectangle{0, 0, screenWidth, screenHeight}, "#198# PORTABLE WINDOW") + + rl.DrawText(fmt.Sprintf("Mouse Position: [ %.0f, %.0f ]", mousePosition.X, mousePosition.Y), 10, 40, 10, rl.DarkGray) + + rl.EndDrawing() + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + rl.CloseWindow() // Close window and OpenGL context + //-------------------------------------------------------------------------------------- +} diff --git a/examples/gui/portable_window/portable_window.png b/examples/gui/portable_window/portable_window.png new file mode 100644 index 0000000000000000000000000000000000000000..bc6e34e881c3fffdadeac1a486505cca6158566f GIT binary patch literal 4796 zcmeI0`#;-R8plsuhU$gZELts@cH3^pnyec4OI)hfcF?H?)ik6C6^*t@gdhwv+l#iT z?YvNgcC@A9mb%p?p%=v#DMeh0&gwLXB-IEK!kp~>0lTxW{cW9J&g(g^=X;*#d4Hbs zI0KitCKOZ>(fF=?EjbPo+;7VS6`UN;?kv)7)>cWw%8*v5NCKRt= zNuE0POJhIpTgYp+G#|N<1Ss@0h2J4rrP7 z@6}to)_(RUuGs^nhoK4TOv)(8N%wrI?tX<-4FG#OJtTdQ_|1Z;B>-)G6r==k&iG3qzsP)zyP`x8+cv@vE5xh;~977uDK;tI!<3C)?a4CaU*+E`NYa_EpjlY?aF ze6xdo9|E|c9J%g1(__`!Hf6ye?i|@x8Lkqe|6)gZ*;;rcD(lU;F&3XH+boXCC&?Wx zV5TeQL}I|j7MtaQnWbk@fmw$0a0Q+Iv zNfW7DxzN^~M(G!C+Is1)cZ+^G#d6Imd*d2UYEVf1?D(`%hH&e$m@=vZKy8i8u`WmS zF)Py;W!tQv%NbwISsH7AwCC);=#zF8uf?vrZoKR}m97oI?qr=0Np6sBag_*geuRBA zY;mj_+PR+dhk{{A7rx$g<2#9e8su*&mK#=waI`i9aAjxX!eB!WULO{eV1GRjb7px` zlNz?_D?L zvse`)BO`eIaOBPYM!3DzsCaW!RFvoys&!5|uNsm(YbfHx7J9PDBTN~wp*2ug>rja^ zlSYv9-RBy{i3o6)RjGM@_G#ukJ~X-h+7Iq?C1b+RD&8n+SGY^cb&kz0rGps&b6)<4 z$JFdF5x=ZgIw5Vz-LufFbdp=&u1>tpG8U?C(t@o$VWGF=pCd6WROL#d9iyScNnG-V zJl<`xaQGo5;S=H~ ztoj+kmI{V|0KXhY?aSdQ>l1%YtAcZMgmx0(Z;G@_Gp8V`ER&jO<=K4(y-7qk+NH@pw2>Q`5S~k59nq zx!E@0{Ubm?=d~4SYhFP?`B+1opuhibx`?n)c+ASmBsv|B0!m^M6B|k6P5V87i9JH2 z%{GoJ4|G|XtD%a9DwHxl+DjK`?so&j1U&v;FUu(?s<+_Lg9i^na5$qcz!rEk!}9Cu z>Y6T29p$PP$Eb^QBg!czdKS9w)k^!$010Ai>gxlEM4}BE9V+FmkbM391=7}aT&hZ* z!<^O*sMI=!a;AhXJ$P-5&~Q5j z9Tc+BIwEzZ|3TiJJCEAi+m*ti)FZmU#SjTds@rke9LCD)v!ZTRa9SJ-|ER74f z5OWCqQ`bRJkKJT>98dAE65Dt}*vn$GgQ|vR-js-z=cjCJZ36=W0;tjn7nq^|!q89n za3^Z^vN@x)!z`(sw<2j){v#7Lt6G|@vX1H<$VBmi4Gj%#4j(>o(66AB!{Oldjnh0| zxIom_HZ~YR z1ZcP|tqy{)e376^u)3P8g4JU%@~1lH1Jl#dDNqZwq)mx3!Z*9eu6hR&ycNXS z5*ZBMkU$`+6X4h-h4ixQoE#C0Hlc0~r9xOljErnA2}QiNgH>TLdz|9Sjf{+9Vq?p3 zDe^)3>U@Xjeb?>5SX|95{H87!eV18hf3|6u|Zk^>>~> z!d?CJ%Erp-Tc-1;P6KbfHv9oMP+CSuI@i0xft#9|@-+D!@V@cS3+{h)5h4EbJ8Q#r zgTMxX4FVekHVAAG*dXwKL_qyZps?BTJs!R^^)uErbJtw6uFl-gh9>aw@;g%L5tjZd D8+7t^ literal 0 HcmV?d00001 diff --git a/examples/gui/scroll_panel/scroll_panel.png b/examples/gui/scroll_panel/scroll_panel.png new file mode 100644 index 0000000000000000000000000000000000000000..fe2e09560be9d9776d570f46b53ba2824e59035b GIT binary patch literal 13363 zcmc(G2UL?;wC<0nj0F)9QL2Lq(gj37q=*Vimnz+%3qk~>h7jyXRl0zHBE3X zbz|vj&fXgj|y|Ut%>mQ(V;ZF}3 z+}JsMHVhMetUBwY#(CX50-duSIhI&B5B{DvG(+Q2$ue^*{XrQp)mxu7`jux2s%@l` z_d!tD!x4h_mw_Vl!O2Pp($FOH&YKH0?jL##K z1$@Xs>ym*s{oX4nLxskp5R|1>ik@x{BooGO#CwOTb}1A}!}XxlPD9+-VS-olDZgW8 z9&4L<4_=j6JC0U+HdMhztEC=Sd+8f-YE=Is0&$X_$0CHK>(?g>I`XaL2az9BtGp+c zlcTp_WBQ5~cP~`w%){pkq)5%a>IakU)ZUJk>BFK z4b<05#jhy#syS-S%N3e?ZgHs6?$GevA<|wO!=AEoqB5Kf58HmraekDy`H--JT zu58`gCmkhaUEMMaLv(myyF&@q69P!;xDxRLM{6FHZdh4E{d~|(%Tv}-OPe+q8;hYK zj>J?|*K~(lR=8qK4AnU0MK<8=$gQxXG6Xhey%UDy$=v#oLn^X|<>wP68tgc2^BRi{ z5)<=!$umB6v&uwTEs<{D8l*bY@}!GF9dgY?OqAb4>1~*xd_HHYtH-D>)hcb~pC~%7 zHlOw2KvXxfP`wMmpgQzTcakzP(2MY{3_yM;`z*oQw63{|3UEX!c7Yx8qj*!p^g zAf{?2-aiqHXj=O!Z$JpX(nx(N@w%i$Y7h^%Z(I~0Mnp<0soM>cBf`UPtW0LM;E}T* z9k&>S_iWijlgy{qum;s?&(S0Bg)(hPyUH^$Dr-YZ6F+iD(-jsi@7V+nXRgm);p8OU z+oyJzLv7V4WO2DeSa?F0)jnDVF;(P9rmxp~I1UzDvNx!U5s(XI>X^rP+By2XCoI~; zp0peut~B+1O19FE@X&A(Hx{BBLXWhMz;Dqh-oLX@vG&dMVx^TRiz_YPkU$;7`ds0+!KPEGiw)`4txFI8C zWI;rB<6A0Xl|{U0bM@=}uIfUt%?`!Oms{>{P{F?!+4v8_LOxoO&@yzlbnneuq^d-G z)O(@vgPfe&LViw?R+VSG>K50^R>qbqMjg-yN_2LNlCZFF7sH;XmAT{6^}o}UP?W7+ zkRl;jGh3tyo~F0On|6L91*8o_ax8l#pOo{~z9S1 z!qR#}hVR6*wbxTa#8O;2p>AafK2fGlmrX){Z;fyE-_W(=kM;U`G+@lvaCnC8(|u3t z8ccB>gE~4sE{GLm+z-4x`LS$qjt&0Z=Y)5+Kuv2ImSNe((Y=!^t2E~PMEDS#7(|LB z6DEn>i%%_@C#K4X6RomH`Z$1c<75V(YX+%MiS&@CWfZ?TJ>-FEa@cC3T)BMN+Se}My`H&Mn7J)XoU< zf$aS;R0b>A^lDuDY=LDitZTRWA#jq{?qL-5fBMvQbX=Cd!iAX14)gGc{1|IoS~``%6P)|dZvl^G#t>oOY1$59ExK;9_br}7Og^zRqXmA5hqti13fOOKqFeN9zVh1F zf3J{r#6;Cn0RKOKBBVCA{8kg$%q(vEJ;!);IpCNfLXzNG)KImj^@ZixZ0~n;D(<@~ zZ63!r@y4Q2PFQ%lb5ugD$G2;!Ikqhn4PFzQC`0Pq>B{mxb+)f2N&0CHlNjs-K?2Qf zZ@*Ep2SH!YQ*V9!XrH58w&94lYtYz29zzqkEQS}|eRh175@&<#Oe8J$i7-?o@yuNw z9u|~$?TQdksn%{O<#@M5ol-69{_v=*`~H>qj7w)&cpZMbckydak5MCobq3oU$%DPZ z6LRK=l+{tynV0I{6htpDHe@{pi)*J`Yg!kEE3zvp_sAkcu5Mj>)@JCX*{sVE?i!_GVL+h5b9dzSrmv#694MVOAdIPOaf#j1*;G zoW181Ei~~y6J^!C zSnX+ll}kZb<~??wpMKF$mApbVYtQhV!2p;{e$y5d+gSf*Opfk4Qi7&52ZFVe8pk)O zOYr*c-<)y37)jvleVqpo+L_G?^}VW!a)%b>T`pTo^LToCdM}V3F6DAx(Fm#G?#fj3orOgzT052OxwgPEA zSKpg~3KdWZSmNjV(X{?Z6qCHWnO8tSfTTza#y(tO&^b6-GU=;%>svzfgT5*%*(D{2 z4}Gx*hLGr51`ZvgEr>W9>QC*S%p-V3d`zY@SkY|s74^yI+CtF`8j1n*$SAQ^ewz9G zh%VoGga@xVV~p~ZOR?CJkCPLHT=c-iY^~#AQ5=kq*a>tdxn61dMTf%*mtjke{ie?X z8XrnZcU6}V79L-JjKi{f3}UVbQ7<+k9}Fz3Q-PqM`Lmxi@O>ynjeMA!de`KcIRxNdRFAR!=Px?cnwu7{Im2cH5W_ zh8_;H;vHEwHS4I+(*NaD9l&vnjlbS!`?qJRVWUStut*CtfGGV%VVP5*VNk+2jP(wDnl%_Kv%kQ8NQi{`Q1-_ zTP$b`dS7mw1cK2I@El5YWx!FMZQl{ea8$^ay#t}zlk^^~5^!58^l}T6Q`MVEdETu7 z429DA>5lw zc*9KjDCD8mhcy!qkvj7Z7M| zzy<>fILz;4^{DDuX#lX__-5b-u2*YZ>E1aJrf|Zc#mwSr=EYX8<{KTg5H$*`6U*>k=PbL^+w8aqZnYlCxGo7F z^z|QglnX8eeXZ8R92*UcXUIYsXn2Yo#yV?Sc+{zLd$5AkNukMf4jQ77#Ey#Pc^RmA z8{d4wt9~QN4F-!n#U_-HKe4O;-%21Z!VtcdRaLDrgZKvPGaId&@JT7grPC~_)^KW6 zVAo0pdQ`3iY&)0TU1Q4**Iiu4`_!n9WH2Q)V@G)GSJ4wGuF`3D7Jhs@5J{nt8yp5G z%|aF-6nn?6h2gT*x2`Sfp$kG2J(mt#Gr6-XwJB7*Z!77;`$;kiq5nXFB|r8xT)X|3 zQ=IqrJoBE(SQ#Jk^&-i@gZu28e_I&Eq+PGTaX?jHI5`~&^}@Mp`DcK+kmj!3h0=C8 zI!Y7dEOYKiO0@^BMAoyeuCB6cab;|6v6%{>jdy#q)@Hv0f{g6%?}4CaHf?!6p274E z5n3aqM6tgrWv**$H*~XJ&Jn!lq{Sd5E zxWM<;6*g})^~&$9k{kZ4R~9_4aKg!DCj|M+ZZ9F40`8)153o-(e9RVQ+fv)s+yh6r zA;>B1k54D1$QG=^jY6`|gKLrhag7D4U6@zcHENL_>N6HoqO|q>zTaUF)PSGXXkh{B zh+m?$bq?j;oc`xB{19(^sJb zJ5$_=)@99!Yn=7rr{z-)r|mgCGxHUL6;Wl(dYnTqlQ}tMi6assmALlVppKHf5uC*+ za&>E_hV}C0N-3+9`kik1ZMz#c9t`WO$sbm+XmS-Pv~@oh+-QU_DXBR^Df!Y&-mhvZ zy6;<0)E?-WC7EB6oA0}8&~U#K-xq6ra|XYazIkY#&hB_EBwo8tet(I3JsJt6M6~U; zNc_AbibFI}5-mQMm&Ce2yJPHr%v{+|&)LXoPF2Rw@X^5$A0T>#9ms`=-tD(s2WdN! zPO$Vp&au%`w9KdrGml%wR{?z7XmWSHyng=*2qx=JW=NIag8*JN0DB9?ap?i?=ldU* z?ce?aX?!G8C^#}rRaKR}&Y+6d3_t6adhg~ANaK*Lt*xIj@%P_Bf6TI)#F!X@Xh1P;<~TX|2vDSiJ2jaEPZq))#$Tq@b{cQ1m#BiQ0$zp4H7&aE-fwTJ&u>Wm1A`1H?UhhP9oHV=D6W_(gTK0 z(hY8cNmpIFLUXfEW^N**zBg01sax_%X7QtV$*~6WeWy4%JwcFpILm?u+Lfj%2$i%;zKTvU<0>Z9=Ot~gvf}hpIGcDwd0a7P*?Ul)_)C&MBerDOC*nwzP(9j+4%kU zo2#p7!8C$=z&hd_FJ1y*;+cvtmMn35T9L(ZLU4 zgM!@YG6b?h9I)~LQEXGwUm-J0I{<(;K)q&}oz`BldAU?;0H>Em*af~YZgzgYup?+i z2%T2-J}C6)t$xI(^SX8a3EKa_a+cWs{rlfY|N3I?$GB%G83K9r} zv@hfcCJF;XDiJj0q7u&#Jk5i8>+{X0Ucj){x!i# zzvyv%JzM;YG%_f?_V(Pv>Q3v&4t6tw@zqx@7h9t*BDdu6j4!(AT5Ee~UX&3}@NwN+ zxYg3oPcHu<7A$6oLLGkfrq+DFXp+yxXi59##$w!yD?3x_-6{G}__XV7<#|3yKF)q( z1Exu-IVThJN(VkX>V_`V3Up_BlCoXcoEUumm(!j;Jze{_IO*maMOLo}t?szf4&@ za?!?QR(#F7HHG$Co$>MTa2^{Qb1{f;t1>#&8+LPfb~4RzY?Ga9#D6~r@B?G6jjrO* zmYb|SN{JVK^(c27xZvkeIFl}EdN^3eLRn|PxO1aiSohmW2}&vVrE8a2@3&2CtfV@u zl+!m2a~J~E(U8WNlUVwj!NON3KL|1bq#?oasbgTC@-FyrKBwX6j<8L4^1UFjzHd!w zfTE$eB5G7y%(rhtjm~bGqw&@?i);0oo|^=`r&wk&`~z{WD-HBbT$VZnnK*9$ znh$;*sMrvI+?1g@01nRiX%Z60A=Hw7a zsUG2Wc6KuFGrn1QZof>~Vc84(X*K)x-QYfi>M=Wue0}6rT8=u@XZY&ky4#sgn^05# zm$J6+=o->YN_&uKgFzK`+12Ay>EAXzY|gP9!P)uNDSzak>@dND+o0XD)NJ;Al8=H6 z$j$sTKv+N&KJS<^PTtX{nZvr+b}rYV$Zkg8Pk{I1bO1E(GSl@El-9Fn5Btt^MX&j1 zKI!Gnl{+dOaLia4m+xQK7npcpNmuH(wDzE)MD#edZi6Yq5g9vv4z=~0 z``OuBUtfuQ$YrH@s^bx+#%u(Yq>ym_Tw=9VMs|8=RU>+bZuJnY6iru{KW^5q87?I_kKh0{PWAVq=EN9JRj&&AcSV1T>zIM$?vS8FVV>SEZ&q)0q8of$p0t z!(aDz0$(L-3AmWxBLYlgt#+|`6torySjc8yrr^+@-@aDv}MP_ zV*Ch-dTyg2$nq-ZMLhfL87^}idS1XZbd(oW#E1BX{CFS~6^o=zdgBokU=a!&hA-9S zfptJx0EI5!=)VQnPx8DvTCDBSisMIl>_fb50>3@lUJqDw{2-Rx22ie88lJ^1rPoMq zlcB!RW;hX_Nps@&>%UHV$I8)?BxNm}+>s;A6}A)5EU(MmK_}Wm8@uAygUL2N*Z70J zKi_^^PtUVEJI=6Mp61Z_$h2^Q_2~#OLjt=XlO$;==YJctoZc;*+AXXc7Y?!s2Hpfc zmi%uy&{-?69sf)q_m&qx487+I@-T@OcE|AR7{!U=imnI+kHHq&#tLxaj>*E;7H*U~ zUE9yWu}=i*(*tV(7QCMp(eZOb6a0HFvbBy>c{skmzsq~E3WvcpuT?3{r2B5;B0E+s zcmZ_Ku3b@}2h5Y^3EN$fu+QCTV|mKC$!pOn_J_l!C0HL+jB`u%gi_{r72hZmmah9A zx4xW==Fdy_(fRIE2W;b}?543n?XbCaJOuTRG50%QJjnI-SiOR$)aa)kbP(4X_AWv!Xk)qhIE#q&IMsQ*+#=XAgp8Fd|bGl02(D&?zujOyCZ?7{;7 z=p{MWcq0?+%ouu;2Q0AV&K;O@=t~M}E04KMlA#wX88DQtt>%^6p=?=RE}v64SEf57 ztE;Q`ymDj)dg!+&trM-0la}4V<_mQ*8B9y@Vd9QwsZ3J%&K5^n1hbi^%D&Sl^Y?~H zmIF5bQ{Wa+jZ3wK@ce{9SV~W|W1y0Y|6RS2pT#4rpny8-PND^QPn73yjhurW8(A#S zdNd*|JXnIyLepOmkxyiN*`Sm|f0G=gOK?4Ak(`#g#5I!fwcfJ^$L;<{(n0U~fhhRA zFnhYTp!VyZ1;Mo2m{~QH?J=Mhv9Q`x?cT2~DWY?|u=RLa>UR6%$KIL%Z+0J_bh9oC zjUUk30)tfO*mZXe8@Djk0Y{S(REEM~g30MSdSqJbhojNXf7Y_IRucQ)5V(J_`Zlho zy&cc!P1bj&+?#LE=@-{bT`r10N4}(4KJlS)&)a)twnb%HzGx3}yTE)ZxvV&ZK^5D#T-p}HZEa`Pr7Yoz%6;6n z@f_j385MQ8*e$yNUNt-g!%(DPL8>_l{nW^AaQYWbVkN0@0JbvQnqK$p?7f};idZas(M^xJS{439uq*r4Z z?xy)t!VW-)Z4xp!=mEuJB@z(C{T6gJf5Q5YzHPo4>xBJr=k~bV*;k8gC8Pdu+gE?$ z4G56`oxC&_ZT-oq;J(=>UgSXV z_1~{?=VjW|ID#go?xsNNh==VZsZv>bAYEB|v@pofNQ~JD9?RL?@@V&%iK=;lR=?4L zU=&Q|$l1bQ9~w!VL$gACaV!c>x}YWdm-N&)cR2OhY0)q}=Ob?pZQ$B6TTj>6pTd1Y z8{{A)7Ek=RUh;RrGm?7yS-Lt@>cnxm%y+=&sYwALiWk^-Nk01K_EJk1a}b1M!EWi2 zJ9WS*iLlRwGdBx*j-&gvh?1Xz5jkfaJNvGfYi0xJR6gA9?D?aFXcpxyg*P&Ny39)5 zGvdr*bcpr^l#>sQ*qKkbCsEp4+^=|OxzMM}@)le{!PGa}2W8O~wCkXI+aJJWgojso zAUcF0jVh2vq280J>#flys!u>>G%!@~8!-`GL326w#pS$E*r1ab?rc@a#&Z9u%Kh@E zfc6zl(O|b-eIA>jM*qg4n12Wgo1S38_fIbX+{Ax{+IGDEa1OdC;KLgk;4|~Ti1a1E zB-o(ix;we@@9D~HIe^|5O0}|maLv%r@cTJ6^KM<>5J|lQq7QH%Gs)a)L62CUfzHdz z`xRGUo;}akWFUVK5X#lpMMXu@GXnhl=|6l2ch7A6_J*nEC8vP5@LzliaBpF`XU?2? zR{zi`_anT9solk!nwoZvQa3lfX{NZknuJ(EnJsKuCI{bC z3r3lYHvoTPc4^7Le=8VdQdq8u+gsaM$867>-Pt)^$}cp3ePxt&+I)0<&4rzR>Z*W_ zunt?VmiyEl2d3TeBJq(?oWh@;!asI!3FZP}I8BMJbim*meFgsbmi4A%iIQ+}S1}9o zWMh5j0!tmuw(nL_={MSUL3%3WA(>~1s=t)HPTc*K{KcK}3AjZ)cXf7!`Fy-c7g^Cs z_TWwxIEL){(Fdp)3e?I8fx*%vw)&lHBs+%xJG27C>Ui0@U+DdNv@ zFPILoe4cYBE)kB406iG92FaD0u}uuPO~HQ!?DZ_DrJwE6?FV|}ccy=&#;)oie?CD@U_nn`~c2Kv8&{@ia*o8A+O z7tqr^rl2F+S4|<42NrMG+uOfCFG8@^tESu&4zziBrsm{*TxWo7Lh8+-YEB>Fg$ zr$v!BQ`A#Xz-qU9qqkl!A15vmrKm6H1;!#rZ{&y9DvDV(xmw_9SYM`uJzL$MMSD?sD zYJ=Qg2nynJg$KnCaTOo7!mVBk9}%9!dk3dmGRGyLXFCGb&P&O~bXksJA;(M#z#|^~`c2DOl`DL^3-+wtEARx{|@jf#_ zUh1$tezbeGbvGgYCE5t>Q)*vqn1hWNPzo+K)hMd0F21U2eTFWW)2v>?za1zy@5KGN z73Zwu&L=osFB<1!2C1)rvYbj=F(h-X7$bN|dqV0ePG?s+ol38qhZ>In7jYX3?N0Ek z^M27ZM-xkFv-ulM_jQ!Nz3Fd`*W%IWh&)nWQ%BqbkYKR7HRo!kMuC2+{k zKzZ?Vs{QdAQdw#y*Uj_p)|F@c_VgGf+ct@q1FL;rE*IfHLLF0x}MtJ#F04u03h~NLIR`I&)**d=0GQY(gwFHTj4-E1vI?S@fE8e4ZBiv zG#e8;`mYAqrgK1QN&{H^IS&xz*$-Uf2M-5t(NKsMUU9M zUCHE4-nKu4@&Bph{N1enzkWC2sx1U*lrU}X)evBFE2s*+RROEHU8~y5RdqmF<2P_< z{>0!#qJ9Y%e$1@lzAdM^0Lg1`>vTe<@Y~{hU)BuDA5644!Kj+*H`W)jdIB(O^vEa4 ziQCE_V5r2s4V8Bzlg6tvU^=I;cPz7Q9Cci-iAk15q61!mumqAqzuf7I3QVKB|9XMw z^(i5VfIT|zng6E00Ghq1{~$xvxL25nHgGZjF~m;6jo>8#_WwUxZH?&C-vH?fp?Al zOnOVer}g zl)S``PnjONRB7D%yMr#ez=oD|AAmbxnBx($on1VVUJ&YFS7>-b?Ve1)5$DRJ;)n5n zl_DlDZgX5~Dt(T;E#8r%BT!^vBqo}kFcR>^?LXCs(IZLriH-q1g_|-jz72h3t+Mba|K+D8CUtWZ3iRd#lu-)zV1&+G1k__VaNv_4&tL29t%OP_i2 zoJo1W0{RCvo%-S3JB|56abTJ<1|(8e!Rp%Dk=sN9A#!|te3n3v7&|XAHb_635Kea=R{lrV+B}%^FU=uiMTCRGM zT(3nhE0)elZ8xrvY|}aY^pn>a&#G-j3`orLvFp6mt#`IECH}G7qc-RAGe&O1oo=J+ zmN7r&E84qhd-72FWh6KLCs1U=ssT`#Ss-H4##IqfW#Jp+fE9tq;hbK*jvHw&$w^&t zHk-c_*Gm1ne!WgP28Js82nY~3E1UTj@se&+V8{ltAxxzAe_qJ`3p;i3NbZ1M_ze$u z7$-w#!vSqOec6WejvkGFDJ6ep$iETi1^`2tI3TM$>3br$zP|YShkBf#XcqPl3?$a? zOzj5)kNHD#+RQ@p#q&u9XoGV7X+$pr+a1T4(RwjBI?4y8tXD?CF){4OGExw)Hjzo+ zo(|^rVczBR0=bfsAtL_ndedQWKbQg+W%hoZS2-4aQvqN8sNqbBG#$-&sKn@-=*`5! zT)L6b`b%dYxVvcXC5w@Xnn_iF5o|8EFi)2x^mXaka)9aZERh&{MM7H7R?8%<3-2hW zq%@m`Kk*tI6=eP&1j#&6z@Bkt_ zOYAV85jSrw_g9SmD@oq{$s$p-LM$VKL!1R6z=s4 zvlX~?zF`Hup(hFOF(+q{MM;#2fr`AJDpR?Ek@u03+B0BcY}o|tq&s(d6w%t3U0q$7 zdQy11P|Go?6pE|Bg87pU*=m}#?>SSP