From cf07b66a566b63bf639aeea7782f3588c5d8071f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=91=D1=80=D0=B0=D0=BD=D0=B8=D0=BC=D0=B8=D1=80=20=D0=9A?=
=?UTF-8?q?=D0=B0=D1=80=D0=B0=D1=9F=D0=B8=D1=9B?=
_x, _y – [in] 2D position from top-left. _x – [in] The X coordinate (2D position from top-left) _y – [in] The Y coordinate (2D position from top-left) _attr – [in] Color palette. Where top 4-bits represent index of background, and bottom 4-bits represent foreground color from standard VGA text palette (ANSI escape codes). _format – [in] _x, _y – [in] 2D position from top-left. _x – [in] The X coordinate (2D position from top-left) _y – [in] The Y coordinate (2D position from top-left) _attr – [in] Color palette. Where top 4-bits represent index of background, and bottom 4-bits represent foreground color from standard VGA text palette (ANSI escape codes). _format – [in] _argList – [in] additional arguments for format string _x, _y – [in] 2D position from top-left. _width, _height – [in] Image width and height. _x – [in] The X coordinate (2D position from top-left) _y – [in] The Y coordinate (2D position from top-left) _width – [in] Image width _height – [in] Image height _data – [in] Raw image data (character/attribute raw encoding). _pitch – [in] Image pitch in bytes. Draw indirect with indirect count is supported. All texture compare modes are supported. Draw indirect with indirect count is supported. GPU driver latency. Frame which generated gpuTimeBegin, gpuTimeEnd.
-
@@ -1121,7 +1122,8 @@
printf style format.
-
printf style format.
-
@@ -1621,7 +1625,7 @@
@@ -1865,6 +1869,12 @@
+
+
+
_index – [in] Index into palette.
_r, _g, _b, _a – [in] RGBA floating point values.
_r – [in] Red value (RGBA floating point values)
_g – [in] Green value (RGBA floating point values)
_b – [in] Blue value (RGBA floating point values)
_a – [in] Alpha value (RGBA floating point values)
++
The directories for bx, bimg, and bgfx should all be siblings of each other. +So clone the repositories next to each other:
git clone https://github.com/bkaradzic/bx.git
git clone https://github.com/bkaradzic/bimg.git
git clone https://github.com/bkaradzic/bgfx.git
These are step for users who use Windows with Visual Studio.
Enter bgfx directory:
cd bgfx
@@ -178,17 +181,19 @@ You must use use cmd.exe with provided makefiles.
Build¶
bgfx uses GENie - Project generator tool
-to generate project files for various platform. Binaries for Linux, macOS, and Windows are included in
-bx repository.
-
-General¶
+to generate project files for various platforms. Binaries of GENie for Linux, macOS, and Windows are included in
+the bx repository. GENie can generate a useful list of options relevant to the project using the
+--help flag. Most platform-specific examples below do not explicitly use the genie executable, but a convenience
+makefile instead. For more control, you can directly use genie to generate the project files.
+
+General (Makefile wrapper)¶
cd bgfx
make
-After calling make, .build/projects/* directory will be generated.
-All intermediate files generated by compiler will be inside .build
-directory structure. Deleting .build directory at any time is safe.
+After calling make, some directories in .build/projects/\* will be generated.
+All intermediate files, libraries and executables generated by the compiler will be inside this
+.build directory structure. Deleting .build directory at any time is safe.
make <configuration>
@@ -197,6 +202,49 @@ directory structure. Deleting .build directory at any time is safe.
Inspect the available options by invoking GENie with the --help option (where <platform> is linux, windows, or darwin):
../bx/tools/bin/<platform>/genie --help
+Select the options you want, such as:
++++
+- +
--with-tools- +
--with-amalgamated(see below)- +
--with-shared-lib- +
--with-profiler(see https://bkaradzic.github.io/bgfx/bgfx.html#_CPPv4N4bgfx9CallbackIE)- +
--with-examples(see https://bkaradzic.github.io/bgfx/examples.html)- +
--with-sdlto use SDL2 for the examples.- +
--with-glfwto use GLFW3 for the examples.
There are also many platform-specific options.
+Note
+If you wish to use the OpenGL backend, specifying a minimum API version is possible through setting
+the BGFX_CONFIG environment variable when running genie. For example:
# Unix:
+export BGFX_CONFIG=RENDERER_OPENGL_MIN_VERSION=40
+# Windows:
+set BGFX_CONFIG=RENDERER_OPENGL_MIN_VERSION=40
+
+../bx/tools/bin/<platform>/genie <... your options ...>
+The same can be done for OpenGL ES.
+Then generate your project files with the options.
+Your project folder is in .build/projects/.
+For more help on specific platforms, see below and read the makefile in the bgfx repository) for examples on how to use GENie.
For gmake projects, specify compile using:
+make config=<config> -C .build/projects/<platform>-gmake
+Where <config> is something like release64, debug64 (or equivalent 32 bit), and
+<platform> is the platform you chose.
Visual Studio 2019 command line:
@@ -208,20 +256,21 @@ directory structure. Deleting .build directory at any time is safe.Xcode command line:
+There are two options when working on macOS: Xcode command-line builds, or within the XCode graphical development environment.
+For the Xcode command line:
make osx-release
cd examples/runtime
../../.build/osx64_clang/bin/examples.app/Contents/MacOS/examplesRelease
Xcode IDE:
+Or for Xcode IDE:
../bx/tools/bin/darwin/genie --with-combined-examples --xcode=osx xcode9
open .build/projects/xcode9-osx/bgfx.xcworkspace
Due to inability +
Due to the inability to set working directory for an Xcode project from GENie configuration file, it has to be set manually for each example project:
make linux-release64
For more options, see General (directly with GENie).
..\bx\tools\bin\windows\genie --vs=winstore100 vs2019
Build the resulting solution and deploy to device.
+For more options, see General (directly with GENie). +Build the resulting solution and deploy to device.
Note
Shaders will need to be compiled with the appropriate target profile for your platform.
@@ -251,12 +302,12 @@ configuration file, it has to be set manually for each example project:For ease of integration to other build system bgfx library can be built -with single .cpp file. It’s only necessary to build +
For ease of integration with other build systems, the bgfx library can be built +with a single .cpp file. It’s only necessary to build src/amalgamated.cpp (for macOS/iOS/iPadOS/tvOS use src/amalgamated.mm -instead) inside different build system.
+instead) inside a different build system.fips is a highlevel build system wrapper written in Python for C/C++ projects. +
fips is a high-level build system wrapper written in Python for C/C++ projects. https://github.com/floooh/fips#fips
Conan package https://github.com/firefalcom/bgfx-conan
diff --git a/genindex.html b/genindex.html index 20a0570eb..da4dd4dbe 100644 --- a/genindex.html +++ b/genindex.html @@ -632,6 +632,8 @@m=@%Lg6Ce!gKelOOB6gX|BCScCzXAJ=)c>a?|jh9Wal=J>L_v#;)B}MlUaO@#eCZ zm-)(lE4wW6 w-OkO`&!j97 zZhwck+oWuB*!kr}?&_IeMCOj3`6XoT U;(YIQiC^dxUzzY_4)S#gUz`)ZF7YRY zix00$`r=6Cb&3Dy_bd9h??d#ji<=}%Hh)yrD@3!$&z7Jp20WH%m)Wn>o)i+R5}? z;X`c0NizTZ rOF>-pI#T~4ls=U>fC$BJb`B!LU6~RNCBui?@wK}e{ZEQ7EX`H%yzEnmkAF9J z&1WWGrkS(Odl>(`hjWX`IgAvg^K%#}il^u>VwCITFmm9tyBCq;k8~9`-Z8#|^D@oJ zZs+LpMow+iuotfBZZf(m+lt>0;}*L>`(fNd!+YUddaYY8Oj}H&Hhlj+nZ~1d8~*-( zmT>=me0KWx^OVy#-GuZve?Pj4D}Nu-FXmsqp&vpZ^w99^ItLC-dbKa}{$+bMAO# zo&{!w@j@`mJdZJEVP;@g&ZnytzW?igL#j0(?{p<|l2HRP2pzdoJ{lL2GRigwQp)6* zShn26R7+-r3QUF|wQ$Ml=0I8{X?-OkSG;mjGp(JI*|Thn)4Vy5b-t>-v44Q%RyrkQ zB!Ps3T&9Z6fua?X`&79Q3=a{)S KK?dD9rHmGwCV& *+sm>+_XiXNp zN-0IJ>RelG&|kG`4kTr5cz<0B&0Mk-7b3|Zd2Oo96xUUAAZ4Vlb0v(;0m>+I9qS;y zt^|j$1)Xi3uvTNHg>33dN}prxv*B8Ji9T-*yR1)aV~f?JVmBe?YRsBvrp9$ouxJUs((3<(5BL$mOh9& z#0d3FnQ4dqch(k2WO 1Rx;ap;gEKM(s~MTJWKBjJRRv_G zr7Qr-QK+is-f|s1t1^__S`(S8Gpuc6Am}tVTx452*hI!845m`}Q3OT BEiq$_@PDQN$T%NdC2MVTh!u;qWtH^?z}DpgiKODnS?!q4p-$*~53Aw~ z=Pc9)zOXq^gyGi;9qwW+LuLWi!*b;XSK2pM$l9s|vw?Y^U_4;{D-4{Bm>pRM&kBIx zM=;Sf8b||J*Z3!LQE}~chMQ~-lwtLgs|_@|4h%Y#BK}m{I)51BlPUm8$-q*}WEDoc zj!6f2HItzUoag4oUr0<%XS5ALMNWRiD8s#|CA!SX=AKq4&X|bCV5(|XTN?z2)kddD z&Us+Xfdc$=mYzW!Qzb3O91hTJ8KB*vAc&9%juOmvtr3Le+K8m1gsrneNP+3n9LPji zHc`ReBl@rkT7S&~%x=gwa0Fq^fiOK%*6>Ne*^F_E xXkRyduT>yeTS z{ &k#gJ!g?@Waw=s3x?k~=pp(Ulb#FM zT3uP_qCvc*kOzpyK)O<}Ul^lcYUQAlISDB(<}8}2So1&&kqp#OsEAg%3 J>ahKwYuC~|WzqJ?2K0&|a~h%zM%KIT3{t`lT*y!ohU z#iT$&Ws}X$dCjxq0ik*ol+~F3&4FN%YJ;T1Lz@HUuZD6a%;gwrC5 WW@Sbt_B2USmL8e< 8Kt$-+#`0Q&;;Qd!z{6|y3K)*ErNgM%qWYvuSWK7 zG|SK~>EWFUfE-eykTQaR3PGciPA6oxmfT9Jnwt^Jv=J2ykc0`)(PW7@sp2L{XcOYd z=0H5bOB;sB*lP(p0-BJcM((Y(SIuWXI)5}7Oa^9P){xvNl^JsZ*)fM^^5zkn#f*Si zO9 %Wf=~QI}5MKbw;~PO)kae0*MTV{qUF;uxJWhgh&LrEo8E~R=WA{JC6`A zi#pfHkFDScYhW6o+m_J?Hjmgmrand=4oxN>GNN1qw}hY)>4ZtTc^{EGOA0}WwwYJn zCg~B(nnWctA6O^=%2sDrIZ-7_vwwl79TYN cobR`hNOU&HnKuKCejXLvKaaaz>RvY*d IVvJ~goDk2bWBoNhpw&Utbm9--D@4Jg_`FAi7e8pP$BvB zn7^?y7MUNi6BiI>TT#$QnSW{!$YZ#PmPdfpk~>Ue#LEfL1wd9RQ^BD{SHW%wi7-t; zuWU-0%jOChc?H*4Vca9-eA1$0@V`V^HgcQh5=DV%$O{Bj3AQ9aAYmku(K 9a 0YSmn`6H}D> z`DCj~qL)=AeWfU$M68SCvN@12HZZC_c&VtotqcaM@>z4Z65HG!C0gHcN+ZgPu>F=} zUYMve)&6rTSQbmrKF>_Wvqp%7nU=Gsr5b!>XwjrOkdIozihsZ&VYW&50B$QJxD3i* z5a~1ripV}9(sK^m$`DIb(1i*i04xeQr^Y}~XVMsr@LwPXsTobNjMSSunRG#I1kMbh zf``%| 1Mu1Y6b4$xATu@SAT{4?dh`x;?fuIZo~a`x|!0; zNjLa%n#MQoYO?zE;+GGYi$DJDY82AVBrSit_|^Q&_wzse?fN!uko4}`|9SX}`RBjf z#`~+ZkeS{}oZPvPsDEfV9 l8E?iJxGGDdg;_LO{uiup+`=Ry$q6qGfctAkPMYbcMVxm$ebI z9X%5e (d zKqWXY!a|@W1ZI!Slo}%z6}EyC7e3}>d?>*}-d`msK}Gu-1mY}ZDbqlIGr5MOY#* zDSr^!!cbxalc0@2!J8DVcA_rodyep$Wp7}z4No4SVF)?F11AOnSs4}*^*SJ2sy$~c zI )}7hpb7#gd^H1EzwOWmw)whWG-Bs!X&Y1!;JM9W*8h znPOSr2Z*YKttowpH||roKyMZA=zTv9N$qz{pt5 zQg*Z}fM*OsVH-iDE%JmKL5q(m#$c+da)`+!uTqh&(#E0)zmo-mC}%uI6n2XtxPLMN z&aTMj)U~u3d9>j$f?S56k^RtiAq;1#%I0=0ksHE6qJbVMXb1*Y2LYpofsWA@`R!W6 z;J|Skn-F%woYfxb1F~~xC6u?Ujj;H%W>tAtx!Eo=mz^-u$BH2_E{Xx_plhVo5`J4- zib!ItLV|*6?G5~Q5mv$s&ayH_p?_rw29|SL>cj65wTL1+QD ?K<@hL48CJF~8; B=|e>5l|p6UcO}cP7MxpKG>!-gBYzKYwMZk7 zOH_)s6tQSMMPZl`MOcA0)*?#64C1xXNhsty!ZO%>nW`dN2 wa5 kf2)}z}VjW8&ihyb%yhNyqoDSj{=s&VDgm*P7 zl1q}iV2D#SCJ#@^8F&nh{(nOLfY_pFZcC(qv+@>Fcu7%ske0l*G$KoATM-tzxPoRP zVxl^C(rUJv $J-E<@WBqKJrpEHjl$Mqzpv zVR`ZrHW;`bQzIs!y+W8u9=;@0t|&H9!D31yAB`zzWJhp9oWYgA!Wt%Gk>6H1Bi(?N z7TGGypjqfjsRI~zo{Gj%v)P7dp );YoE z6U;p#*UY`HjDJv$j2A3ok**ra5e1;LD$0i{M1}~ZDZEE8jI_Bf!^*}7I7cWtRMsS9 z2>7G2nBKXt?-Au98?AH5m@=?CPOBQh>Z}x>by?q=2>YIG<_cCns7w`M1@DoOAEWb& z^b3(LmsLcpgZ42bkFXc$FXWYiPNx*vXv?Yo?mW^v#eXp)jg>rw8gYtb)|d5{ C@=7LWq&nyXc1+PjNHHQxn?oe&{zZ(6y?dH zzIOr|Z|Q)DG`hl!)HSj+6QE;~`LaBX4l^)FLItMUA_7C2%yddt*BlXRS$~n5W|LV| znU)e^W9usEx>iwCb(yZxgv{O}wTjFuX);=y@wYV{Cq7knX>F_jHS z(G((Ij?gKYs$!I9!F3e*?ZE5AB7dTLc#T?dBqG7lk%3$Vit&o MaZxMHa|M%GNT2My?3!kTe~DMd}EDlrjd>RY3$^q^rRQ2iFt1i$+U^h|X*Hq!cW# zlq}0dgN>XsQN=oW17qW0qTz^qq`hGHyCN)P$%08JmXxBR{jmsrkk25nwtonpav7FI z;J{1;-vQZxNy{e)s|9j5TUG}MKB+*ahA~caF$*WGvUHZnX;xOp44!t?8vKJ16ts;u zSs47vz|m!0w$?P;q6t@4Bc#yCh?Elu5otqrT^pv0=3}7KNESJ^b!0RcvJXca+_W Fz}azjk#@avQ52g*IxtyLVS=2s z*OrdZ1(GRoCUseV89K&UTU#fCpd!(_eUyk`X|z3p#_1nI&~yR?msnRFue2f`*Wi&OSgBvV+xjT E1i+%w9Um4`$YT~je=8}=uwt6k;c5hwHI$ao$*w>n3z1ck zok)niA{?89fGS!T41=&xCh57QUFbzvFc0u$lEOgg9mY;kaUci@i)-sLEKPe~E97T9 z3p&H@4I))nBP>A@Sf=+08lK=gVkI~o?N?D(5~d%<5YboJ`hQUJbdoMH6>5f*o##MT zY-Gd$buDCBzMXuOQdLk4gsomHIyi2O3l)h~mHD(pn;a~pF@`oFVN3(EW`keJ3d2&? zUy*vg<{?L@15A9Vy`l{oNF8cqrA1gssu}GYg&CvLcAYB6fU6O-nz|~}iA0MVG=vK3 zr08BFPPa!v|9|1-%GS4$bWlb`hmbg3OG5+Tsu+a{2=MA6-vO(Ie&K;d^cd6&ZS!;q z1D)hXLdnXo3_}cnh@S55pyTLDz(=O286pEy l zWSJ!_p9zVXjOd&$s(_W?2*-KF3;WB(3JxbED4M7|ZGSsOK$mo|vu!9v_C8ZF4?ZVk z69t@ibjT8f6@W4|oJScJLT60v+C)~tH}YB_^^-N^ PAad^*;; ^ z+EBG~5T*t}19D=@>fpvC @9)?6E4+BYiZ)1SvL (K+K?%56NpG^2F)*FI-R=kg@3l;w<4Nt$E|DHd0C6ZkYP)%RZYeL zfdmZ2?i1O&aO X8KxV2e zD;u$8T#F1IUR%MRQ6`9t8R}=yjta(Yg4OaDx#@x~N9#k=bw|NoGZ1kwZ|WTFV BhkwFa G}E3b&x&EjBB>RDD}$IbdBG~9k#h0f+ojtx&6?91ufyN)7;AV86HIM%M1SD0 z=l0FkOwr5=Nmiu$RcL3XmiUKNx~9L-Vwmn#fp)x5EzVn$xuwgHLXCDuErqkg%u{U; z42jy$_TAJDX&9VHO*aeK${^Vpgz4;>M}f?M#Y`uUYs7-J_ugn)#IFWo>TE!=Tq`AL z!vL%U_Xc*5b{WC9r9qf_Brvdc(SMuDGFmcENJK06PFE+3$a5H`2`0%RxzsSg0u~;o zpEI=BN4lI-55hELseF=w>b-{34OfU5d{lJ0m@d&AglP&!Qsjd`*wHPNx~i%~!G)!p zzT`0eG}BF~m7(1tveKHOS*vKfIo%kN>tQSsEevJ{HLWFFs6|AdL#D%k%ztU^Vhg6z zZ+EF36@|zlI|MOI=ZI{a)0TaaEuuo&>sos;7_d_Yxejeo!-tqb%9<+M#Aa)pLhoJ| z=*HR93<0oH@C;T%wWUZo)mc0I2Vqq`9A`(DkuZFaG I>m12+nD&idgv2aY5{ zNMt9_ZCFdgV@0L~Zi%DaYJWJ+2|=5b7S>uxI@eag9VI7frZ`=^Jz$%Y!n{HXsp;gu zky^nE)739h(V5;*GSz~+y7Dgk`_rfu(d=lsN7_smM_Xl>f&Z!k9T>r21j-p&<0e7d z%i)e_j~SF3s+0u`Nz%&IOt;0YHSHDjZniFIYXKGtYC|WLBeLGAHGi&;jIQ0Mi+v>* zbc0oNtU|}sg6Wvr;tCPzen1M;jY8bTB(#pMM#+IrS*zB#jvFmw6=*G6ClO{h63Se8 z5$U{PTU;r9Ow0-m<1a9H0l^w=V5MWDOhnffHy{C5iK?S$I =m zO-M%uG C-Yg+ QJPT-`< zREVJ46S%Q-vlHw@P`s|_`bg6aJjq;Zx}V#miq32zdrS!tL9OUX3*HHw`{0qcSQAnu z0&QEb>Dnb^#(yHyGZ5Xt1G3Gmn5Q!|6|ZyDNPZPX?l7lCwbJL{0ttZ(k#Wbfhtc44 zid!JZjqqRAgl^#U{)Dp%39Lq_%M=}BwK32}M)Z*F1TO2u5nj;Yer6(F0+0S?9I9C% zxb6t9FtxL&vQQOgWUjMM!3M5r?@ 0sjKY!=!1SU+XHr{zwaat+w22N+b zvZl3i A-6vp_pwg|e0|ZK37%PT+LOP{pAhH9`<%*1Sf)IO&jC z^UgCgDt~0oI!nYMzRFHQW+sf1DtV3&rJFsE#v>}Lj1^YMDk57zBiQU_ib&hTI)SIz zOEFeu##J(yMD( {dlik4K6ikXRwF-F=J<){p zfI>v7SaO-Wf=fF8$LUmw(HKx2==?Vf0{&g8VsO|a^npgS9+in1;S{Z4(ivMtuY>4v zuj~+oDW$y3NeDzgGSRaN20D@hyiq9c0P FA9uQK=S)%Fsh$ z-ha|wa+QRy=%SxgW!OFE;or*lnR46dY^ EQdcw9)u*LHs$V>3iT$^k>|iFM#mr&@;0LoJBt`xsLK(9q-=-N;eJ}D*RYFp z`?8O;i%0m-22p#uL#0NGRiMk$IdqB6s((@rEX$28vOYvp$p)t-^;|OWlR2djY7Ntp zOR5X$Cfvp}E~lWt-NE80Xm4FPB!>)^-q87cu62zpKePiy1fyIObg3^TS+o~EYXvug zEFl(IvL(>qYZ6P+@(N;IdSFLHp%MAURO!?X6acg*K!%F0?Zq%?de2b62wS?5w0{*S zdQmZo2$irA{((;9dQ0yKIQUP=+kxuJc*RX^=nzF6WW}te6C%ios5sRMl*1_Ust$-t zGR@&EjffI~xTM4Qv0d|#GSCffbep!&u;2_KbE0BN1*1_{xfN)wfrVbJm4GJD)x4Pw zP 4;Nz|B%aDQY8`IFFs-b7LDK ~ zc#cN1R-p7AZKl^zMMi)TU|*2-SUON;1RXMM2Z|&ZNw?EnGDI;IQ0c7)WL7!avJE;< zpqdUwqDu`r!bIn0@r*EB8h@VQjoUR}!!F6_F|!mc1_^25wldw7tz^Y{yMZz?aM(G) z67&EOtISk?M|zy-lC;oH`RV09x=Ji10qY!SBXIyQ_o_xjEZc$Fn(phYC=QOu0eG#^ za{P&|J@u7r=S{738Ht@n3JvF $VsYep{_$Erd;WKHd(@#GCWYd8Avp!BFFV?r6&m7HoB=%ScN=Uk0% zCuxM&M3WJj(`}c?K0LhxSYiC=qQRDaKUD}A>B>D`*K`f6L4SABMzdgSs*vNg1g$xO zMvGa1jF5IPBP*u+Ogyc_s&=tdq7%cF3Fyg+F6(dz&I10Ch%#t1b30JFfu7z%r6oaW zYC)?lRis-t6e8-Ded;xG5`_9y(x#%5Wl7PILwdonLg%ys&9fun#!@~k9rV@A-b|rm zd5DHoJ4v&Pfq!b@wb6n}YZZKnr1xntfJU|K)0{aurOXA=Gg@k_Do vdG3hAexYZpFN08w%=3uhO~_%C!}lWV>u$SKTEeFkkv69;Toq6 zbQRqdrc-w1lge4?LMBlKrz_;>&?a)=m~9O|o_|aW!~m~vxS$+@lHQsry8FEjI!eCp zqVFw;T4{JcK@ZnLZ#-Qu1oKbtP OT2 jYJ^@?CV>s8 z`{1CZ@)fsq6}zIRM3pgGhlH%t!zbkK96T3V$(Uhvat*^REX!nZ>GB}Df2N4T{Gp&3 zhqiRHl^r@%73d%VbR;WB2NG-P5$2?<6@TvljR=Xs$kKZ@I&dms=!n!9^O)|CEvkuL zr|aACw_*aS^;1>CVlWxmCyj72sZ7`5B-lJtR7ZKl%=B0=V*XImw!KP9CtaimBx!4| zt4fCBHiWDD$>{dx(|_M5fREGU{%YD8V3zF%&OD+fPZI=*3bU@lz`|)FNhwOqTYvL_ zX`}aS5le*G^`upV^G=nvijy7o=^#SzS|RzN-Ova|kXu-|RiqQV=Cdb`4$~6~Az!99 z)1fw+ZXR{DSLD%Qm7TWcAVTQKgrcWOwWpU3>0%pXH1M!=!w}~sihFnErulY!U21<; z=*amAWd$7 zP@>VL9Y$2v6aOHc;0JlKSEl