From 99a9ecfaac646f0a51f41866646c9ff15ec4e4e0 Mon Sep 17 00:00:00 2001 From: Alex Anderson Date: Wed, 12 Mar 2025 14:56:02 -0700 Subject: [PATCH 001/328] [rcore] Support window flags with initialization issues This may not be the correct approach, however this appears to work. The idea is that before modifying `CORE.Window.flags` when first creating the window we keep a copy of the flags in order to call `SetWindowState` after initialization has completed, which should behave as if `MaximizeWindow` or `MinimizeWindow`, or conceptually any other flag modifying function were called after `InitWindow`. This pull request only performs this for the windows platform, modify as needed in the switch statement at the end for others. --- src/platforms/rcore_desktop_glfw.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index dbe8d6f55..0f358ffc0 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -1351,6 +1351,8 @@ int InitPlatform(void) // additionally auto iconify restores the hardware resolution of the monitor if the window that loses focus is a fullscreen window glfwWindowHint(GLFW_AUTO_ICONIFY, 0); + // Keep flags to restore after initialization (for flags not supported on initialization) + unsigned int originalCoreWindowFlags = CORE.Window.flags; // Check window creation flags if ((CORE.Window.flags & FLAG_FULLSCREEN_MODE) > 0) CORE.Window.fullscreen = true; @@ -1709,7 +1711,10 @@ int InitPlatform(void) char *glfwPlatform = ""; switch (glfwGetPlatform()) { - case GLFW_PLATFORM_WIN32: glfwPlatform = "Win32"; break; + case GLFW_PLATFORM_WIN32: + glfwPlatform = "Win32"; + SetWindowState(originalCoreWindowFlags); + break; case GLFW_PLATFORM_COCOA: glfwPlatform = "Cocoa"; break; case GLFW_PLATFORM_WAYLAND: glfwPlatform = "Wayland"; break; case GLFW_PLATFORM_X11: glfwPlatform = "X11"; break; From 5d7e8010a50296c6dfd18c803c565b800f069f45 Mon Sep 17 00:00:00 2001 From: Gunko Vadim Date: Fri, 11 Apr 2025 14:39:06 +0500 Subject: [PATCH 002/328] example unicode font A review of the code is required. Since I'm not sure what's written correctly at all. --- .../text/resources/NotoSansTC-Regular.ttf | Bin 0 -> 7110796 bytes examples/text/text_unicode_font_example.c | 183 ++++++++++++++++++ 2 files changed, 183 insertions(+) create mode 100644 examples/text/resources/NotoSansTC-Regular.ttf create mode 100644 examples/text/text_unicode_font_example.c diff --git a/examples/text/resources/NotoSansTC-Regular.ttf b/examples/text/resources/NotoSansTC-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e838ef549bbed48a82d85825aa959e95f0df23bf GIT binary patch literal 7110796 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�mBR&ON zKGx{ihkSC?wl?h4C?1|&seI&}b!Wi0HPf-Fj;}g^-B@R5(K@}4T2Jk}R(oTqqkMZ9 z*LeB)@{<$a8XKE0+uF4bYcp>T-IK=RQ$MlEodNbe-{bzPx3SsVzt&XRdRwEp^Be2N zcU`;IBp)Ajld-F=xly2V|I~~p8{_FsUG0%gdu}i6D{D+t{?669vC%&J`B|%Pv>9t@ zZh72wG4-b|?>TG!jpciEjL*(Y=+z{4`;gPU5gX68XHgEa>iE;QPI=f`i&r}`b)saz zx3vD=?e7mh6sY%2!Oa0X-%I^%)VyS3T8n`{5b*7Lfet$Nt=4zO#&_r)ff-tF55)Bi z=3CJBUi*@(vqA5lA^weln(qq4xiw(pyPAA&a46qw7l*z!FxLkHHrLI#DwI8{E?}z< zJ&I#qD1S2cVnF+(J3Bzlh0aVpPkfW;r?cT-KQo|9osY!3HoQA5r+M`3@wqfW^?FOt zUdV0;>=l{bUl-gR+#b9;5N}6tIFRq7!TSQ=d4F@p`JwdAE%;v511hfXU%Xg&dxol0 z4fqQKaq#vPr2{iKC8&(Q`Ovu|?8P?|Huj&)ov&|m(>0E{i=hs- z*e!8&WbDk}e5xm-lb>vN;CZB8wb@I1kE&gc_XPat9}4acoK1a+;Y_K~+FdgzdCdsV z4?Yrfmg2o5xIYl{^x)oLZ}3gQgMoNv)H7%{&X+TBPayug12vd~*zPs@#-MvoFTUB4 zdG@I1+`wL(6VUPN{Sf=Lf!Vz&5ZAst8}7XRorPxyuMg~v`uVBT4At*BU?%+JYh;POD-R|a$-531JN0=*}+dp~Oo1e2#U$Ht@Gf;nLq~G@0 zd}8C(s%EkG1iElP2 zojrAq*swRR%V&P{9nXogE(Y3tbq;!d?UNYlY+UtB+WSTh_pddeW=^k9Hs&A}oqEkv zerpi7^JQl)Vvu>(s)e0>LfwD8;#;F0I}>tygcj$7SJS~jJ!-c9-3z(wdHd(*zNn3# zJnjwqK6`qOoj?03p84SU6y$8>5Z4Ust9=rm43$q0ap?w@X{OGkHGfn*wz~s8 z;N2TB>WA8^1A$qvC1cZ`$Xm;fS;t1aI|6lmOW-V-wflkj4DC66VW#Dsd26=L6nW1q8J#-F#i?&8`5CjEebM-6YoNpT9Go6r&OY
  • RU% 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

    |8qY2Sdd*2YP3Sy;%C# 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

    (a&-qcQpFL4LW}^zZ#_+EdR6nI6O(dm!(+ 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

    f%rb5yz=Q;m-6_=#-7B`l{#V>x{d%bB}a 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®eq-w1aZp0g6O+CRv@o%l<0fii56@mJR@3YGSR{x z3JZu9`CRyqXi;s8WfsN~eLt6Qj_3#95iKqa#V->rae!z^?U!mTXutGOqGgH;_lcIB zOZ3A}gbr&IFD#0@vStTXyu$j7h#p~f@l?Kud-fH+p11M z+^U`;TFoUaC8{+V(T|m@dTBx2YSa>X3TKJdtSKmGE$ON?K@hLnK|vbp93)y-`?@C) zt@l5o^|J}T5pAIU4Hgk?m_v}3h7XB0ato7)HWtUmT?P65sY6igCi1h%KB7%~3r~qQ z`-5onOhP~5CQ-vEqQ>`yVZuG4roO^mqUIKY+FR7mqITAXg4)cR}7&QgNv@2V{5pBJKXdBh2jrf0- zk7&E*MB8^1{w3Psd!ijx8+}iTcJ5EKOOR++d8zd$(Jw9#?Jlpr96+>(##fIwM0@I3 zukA#?5|7@Mh<^Q?XdnH&^zBCUn+8Pt1&Dszp6GXDi4N#RbfA8wzE=%?P@lo#{iDXj zkS~c2Ekg8vd58{cLUg$L|0Mr@I!|qi~z(l6M4+ktO1@RQ@bgjAhdW`Luiu z(G|yuu2jrbinUsKRzD-U<|xs%;nAe=a4e`Cri!(tc_h(K9}x zXO;WBcwTry^iqWAW!3j;g6K8vUzhhcwh_H4zPF7;?<^vEuMp9HrSHL4L?2ZYP7;06 zhUkCt_}Tly-$b8F$BR`&U-cmRdOy)O`-o*ILriNHVwrOj%QA-8+fm_fV%atl)9=4n z_I1Q^>>-wO4zXM_iRJm0n4Yi2H2)!%zZtQ2hZ8H%jab1_!fj%OmJlnvnplyu#ERZ0 z_WmSd#S0TF@f)$y5G(T^F|AjKeb|mzxy(WfV&!uZ`zWuV{1p!X>CpH6Y;38+zk|` z!3JUt?-6UH9F12H`&3+;NKezL#F}Z_T;~jfcU0+8-m(1idx3CpJJe9QcOV_tN@< zwu287`%yj)olWe2IzLS9hOZ$uLR?0wj-xdu#?&YFvya%=mc+(O_k_p9eo<{FHYGMW zGqEYvh)q=ur#B=vL!W1=|18yOPAg*bx)Gayh}eRg#C~5-Y*Be)i^mdMa+}z)s>GH{ z-%7<Ue>+#NV4uyx=zCh3gY9@*VM_M~D|&L;Qnxi5LHgc!@#8OHLqO z>Sy9*vIwV%mwiLLTs7k5mE)rt#P$6wUhzxfmHH5`e2I8faj2$t)f2>PtRPXt`2E&O(*U-L)^EV zc%UlrU~l5#$;2ZEiN_WbPvjz=+(bNGhIor5#9Kv(x2a9Mt#Y*MNWA@h;vEkW?_?m} zc@6QdzY_00mUxez#CxtK-b?vyUtiuapG{5vP{{;P-&ly^U<{a_pMAvuW; zm3PDD5dUc<@lh3tkA6n{XZbVkQ{od^5dT%4Ox#U;@-gC5#bvtU&B{%DPE+E)bs@e$ z92fpT{P%&x|F}ndu|6+-pZIbs@fA;ruay6*^YlLE?XoB7R)_{~AI3#3SM-PZ2+zfw<;b#Lvr%i^_2^O8nAv;+HQFzjB%Q z)t`x9YeM|*D#ULn=Pkv%y_xu3<-I2l{?&MSC|!@l;cyr4mK8fnfNYs2mqV{nTbvux#SCK^hUL+bO zNHoq(qDegx&9ad&SV$Nrk}!27VK$Ml{7k|cBVijx!mc)sJS3bt?vfsNoP=j72_Gc< z?~>5^p+r!6!r~NJP9nOKM0_5Jq`0NNBauEqqE$f>t!I*G>m~7-fkeAkBsw-E@%cd# zT1%18+_*$H#qKT*Uv?tV<2Mq$+LP!lufG0^MBmON`h7*>yCNj||3_k=y!hdB5`z`v zN5vW@uZKrTjL1$xbJ!E3R|Au&@M;S^G)MR!!zyATf6&iFs-}e-H`1CnB*xZ5Gxi@w@o_p*D*ykyyNl z#8L-|W%6YC+rm{6E9a9~Ef3aiA+b)-&q6}$H4_`Rk=QH`wnj*7&p~3Rk;E?5e2=`^ z^Mb_Q^Cb2?Cb9nwi37Vx9Mt$YB#)02CULYhiDLyw=)Eb4<4sBYHHXBBrzB1-AaSND ziL=8=oKx-#jYwQvNaE5zB(78-8xpd>$5oa#k{neg$tH@WweHDgOGz5k-#Cz@X)8(dKP0WqN!q?6Xt-a|$d9($NwyQ8 z_B}~<0m;6zN%qS^@>}`Y zUu_3mCHcMj={h7icnQfNbxG=;ZF0Cg86m$$=OH=fHp#K_e%uX`6IPP^bpy%C>NB+v z$!Ur`vn%PGx_e=Z1mLw0kNFGj-JR+Zu>G+>BNFJA8C#sV? zDc?^gNS+x)^6V3m=QonPScaso*OQm!!xeG7dYGiHE0Wjc&CNK;+rpjcB=6-V`Hz+4 zzw-CN36hVRlYG37k$hc^(}P8A)aBK`Pr{q_R&U zmE#SmTu(^l{hCz%OQZ^BAXVr?QblqLPe~Q4C+sKn{vlGuGYi_5SWK#<`j`HdRGBTL zK2-a1Kal$9V^S67lByIZRrv;~Dh-6yq^kBJRZVfK9VAs<`KvD?Rii7Znq5fMijb<^ zn^YZru3LcAC!dn4XChTUJE;b53+qTV%15ekNm8GdA=RX~AT7-x)w~cXgPoLd6Df09 zQWoX0jwEF}Ps;u|DTnwur;&2CB<0>o%5#d8Zy2dS4pPAiq(ZGog)5Va{Et*Ds~{f| zjYw&|aVk}jRJtLl76DQ%yOU~lnN*uqq}uK$^_eua&n4U^)lnKhUr4Ic1yWtAlIkk1 zUzkaC|A$nMex!PyCG}N)QoR-D>m8)}Y#^nzZ>fFflF1>FD5M_rR$TF zojgPim32OL~%8dY{ztuSuer(B0YOC~Ym(M%p)vk-A_P9yyjgi`?{r!q{KwcgyPwI$jc0~D) zsjh!Y+h6aKI`NX!sa>Sbv?q0TFRAkbNL^5#i^_SqG^s0XNnPzi>e^6J*S{roQ$F7o z?#i=!D@pycnAH7lr2efbNdJQ=q#mmMqrs#eFD3P#YWMULQqMIGUnu@dwRzox)SHW> zGn68oF~4w-bfy=iGe0N&)>G11-x1!BetQP#Ywoa0Svu^to7H(jR0Zt#_5AOKv4y`T*%N?MRocN&3T0q{}I8d7Z0J zm~_Sdq$__xy2>@u)s~U|_&DhridFM8>DqZo*BMN@?j_Roz9L=!D(QwDNjJ_(x=9Yw z&9pV7Nt>FJHdi5SSx(wknzSQE+BuoDYcFX}cGBJ{q%}u0?VnCMaF}#Rn!`0nN5nt2 zlXP5Klgg9+m~;#EYt^1~>wieMl^5+gknT{PbVqs9X%*=%8%cNjiFEf6=^jF_>ZE&n zNcUBqZ|ain_Z{hPUy<(Llk|WUqz9fNt+i0;!Ien=C{07vcUULVKPm3WLZnB3PWoqI z+)>gK=9B*Q3F%2MNl#TyU00-M>YV0Mr00q6Z}M@W{8?lqy);OAMGw-e#eJ=Etq%y- zNpDcUjqj1(B>y)l&!!usH;cRePgQ!`f24QF?_GIF?;c8ekM{SqCB0ud532v6TcnRD z*Rc(xj}IcPXXoit4@sXsN&2jn^f`HRev$B+^hFEl%UMZZ89@5#-=zOm|LZz`<0k1_ z?~uN2AbnT0xTp5_TakW{oAg6B>BmJ#|0g{Ch4k|iq+f0({kktLctnc~duWky0WC7m zp~YLLXpyA_E#3~%;+-k9$T5NzxjNAzPf=RrolA@S8EEnDDq6hPj}`^b(4tUN;r}e1 z37k#!`^TRdQ|`HA#>|*~F^hd2lzm@@tg|o-W0-sIITvHg5|yNsB9TfIC6%I0X{D$n zl~6>qsfZ#9Z79p{{q+3)uh;wk{>-`Op7Z@a&vWLdF=oz5Ankhzq?bw{qZ^!-K<0J{ z@NY)~wVMIX=9)P*;9Cjga=*MMB~a&a3Do6yy@w=F|FQ%c1|`sFqXe4Fmq62>B+zV& z1ezb0K#Nofw7f$Ct$vZfwOu5@_hGR{}HQBrua}-pDm>qSmwKNMJVWnA1lBw{4ZcTxx#DYZ92p{qAle zfd%~~u<#lQEE*_*#p5Ngglj!O&6c*3z(X@7uzZFD9$}9wswD6z?_IS>0;?xU;K}_G zc$)jI<-BL<3I81!c!8R|xK9EvCrDt!6$!k`df$MJH6^f#db~A30&lmMz-HFAg+0BS zA%XY$N#K1)0w2)p?d;{_JPGU=Ac37-C9vzH1om*vy?rI{`6vnOkCng|ha_-dr3AjL z1}7x&b(RFa=^=q{TT9>&@A;0t{4hoWN4VyXvm|h=vjmP8O5m5t5;#SFPS=pY8BYRd z?~=eDV&2b zkUvWVeRoOF|D6P*-k@3*Sc1)mO0cCPLH>>) z*qZCMo+rUJpGmOo1_`#iSAy+(O0YvS33kkvV5hng?0mZfyL=+SZrr>3Ur)q61=&k1aEmsg12sx;O+G!IG20fahnA1$!iY1RsoqixPZ@doAO-53iNriXsWFJR`x!sKKiB5?no0f=`^4 z;8QP3@ae7+3A;E8w%p6n~ZU*jZr zI#z;bMS{Q6$3Ln6-`yp6zEpz$(1VK|BzTD)UO6wJh@BFu)?7kS`z3VsY6m*dWy@Yb!kWk*Q5~_PZLiL+U zsNnz!HU3sYO+S}V^N%Fd;$aD06C)wMRvc=ZA))qMufrh;b^205U2u0tLOq8{sGvwf zeIAie-wP5NaJ7U6`6R@@9Sse}L$W1Qnkb>6btE*bSVF@GNoZtaSTCW9XCyRgt%NGs zN1&aAf>japhXs)`=3@MyLJSzL(H3diV1x37z16CpSsx*WV>{n)AEdR$7dQ7=aqHeLZvEHAZMaw5CJ%|*yq&oDN5yS9S=?)`6PLfsblcSy zw>|E-Ox(^lh}$(w-0nAt+q1d2y?z(BcW-g~92d7=p11>k5O>f)2;*Pjq+;Y}Z{+_rax$fwh;#S6r8)z(UFeq+lm$>8J7I(@@ai_+^ zJh&q6v>CwlrZ<9j#J!st^35Cvs~QU?i2TR zSKPT#z+UfwJ2#7a7a!ksSlqk66n8#rTJWT}_uMM(LTa<{8*%SlD(<44;x6X(`&Ns) zgxcOuO&_chcj=$vKJLZxMGj$Dg=a+$X8e zQ`Bb72yvgzgwMr&hCQxb4;RH<_p!LoZ58+V55#@pUvbwbi~G_LarxS;yWtCQU!j(- zmWcb>Fmd@lOqah)aNlev?#2n?ZsL7!@&3(C#N9&O-@RJg_v*vX;%@y=+-(Wse!%s% zzaZ|1K5_XTP50x`;_mQ^`^j8!cYZDIt~26(%HBUKhC6_H`s{?bd+6~V_PmGJ_f76u`j+9_rO)a^$t+)gVgEZ64)Z{mnrZ#91{1d0l>Lm z*8ukZO(AUjKj+2$mOXttU))2?>>+yn-SxnAzWYqv?_=OPU{=3>4R*mfarrv2`@j*E3`xABkiTD4^IX`p# zpV`CD^zS%(I?lC^uYhfES=Eh}M+kAh|5o}=&QTwvelPKtYe8Y~j`0(HB<{V!}1m!JFQ z{?iV|!$R02?!UbLFSY0Mk9(0iU8F`AdGAGfd2y$>mzu!6K#ecGC+=m|cX=tW$1BX; zmG*ESye*zwEnY-J@gj%9G4ZNRhl}DxEfnvnN5s4OdGV@$EuIq#SHz2MEMARf;>C;w z&W~LsUd@%_#qAa^z5vdNm++~0wSEvUaS&V(FX@PQe2vIUZ7N>c{okjd1cNH(YB|Hq5#mjkIyj<>+ds@6a)={Tiyt=M<^?Hg|{}%BYyenSAO7R*!AYNmx z-!v>i_uu;4ov&HL~1}})$YqfXv|LGf;GF5WE8zomzGvu_gbR@QLqW8%$W zM&^7X-fisp_F>}9WgT#pewBC&u7bD3yNB8? zN16V5FLk)rT zF6#xQ-F;=RDkuD?yZm;K^xSR&r5Pm1?CYkIRtyiFW?>#}&8zYyo-!C>}qX!rRwOyf3)^fz{%D$vl2VjlN-)5Api{AjgA}??M} zUA&)J>v8&UVxoAzyd>VK-^AnJb9iUxi1$aCczo^4`-?iAXKxpH??tYEiTz)>BH@TA z2}iyv;i#q(zUnmzS1**X?;8pGf0S^IT@sG@MZz`rNjQF*gcA-(IB|=FlUqwTWsQW> zx=J|XHVJ37mvHTd63)3p!nubfT<55S>n)dXgA@rjTq@zl)g;{HgoK+VNSLqjhFfrr zmd{D}nztm}I!?lE=1RC-B(RPS{UzL)>vaypz3_~LyClPWctXP6?vZf!UnSh*6$$tJ zSHcCJgnK_J;XY?1eBGN8?#rI~ZIf{SO%fi!`vguw&Dg7E@96l=OsLN zgM^2?E8$YsIM!Fcf6YT z|2rPb|DO(#a+&`xInY!tN1!s$|BIC3Zv5M!_cZ&YMMTsDX%QJUQLaQ3-Y8dU^xiL5 zVtXHuE9r%^@ z2d*RU#si>`{249*t?52I7ABIvzz-Pm4PFhp)^G7k@G|*3tk>e0{D9BH1@ak6T5QPg zIAF*h_-!L%KW2RjUssdJ9l#oe|ACJD$`Gy>`3s!nIM>x}SBv2P{fp_jBA0M=L;G8e z$}4gO-w&)=-%{-w z|IS8o_{SJZ;R4L!l&JBT>nIV_Hi!EuLQiuNjEFtB79?|yX4a9D#&v$h^iheR{yCYD z#qra)wh?gv=Rhv!9K?Bs&PGl>sLyfgm(#%b?|2I`M9{|^_Lg%EnV#jeHu^B9Iqjhn z$LVQK4qhk)xv&_9;@9}(;^mpUmC zzhRzPC4xQXI>0j;# zB6TgF8$)MbnF!nXk4V;=7YWoSG9Oc$yl8SuOih%?c9@yU zqb8B`Esymny_ttRW=DynmwC)i9mR)>1lsm^ikStr4W zyb1FRDv>v1dQ+z{&obAk^D=DUI5Sb_9oR*ljXyOa@5Opuz1JdTybrUtde4)Y zqk3GU-m84x`4+zcZ<4>qn_&z2Fn$lVl7Ga^SG|wO$M6o|zSVxl+_&C7@=1IIn5SxI zF?&?1{Vl@yN&RZ%bC~_sznc6nc8qG5a4gj1_+^|7DePC@mkG>xR3y$fqIiG(ZqS3{ z)UJLdOeXs=b+1o7qSEndBZ>voXHWI1S5yO$23$*tqOJ{U8GJ9kG~hi-R1@6U;LkkL zpet~{D4vT3Lyaib(qIP6;dl#t8!WKeHn@lU;Qx<5L58RfB8`~sMy<&m@w-M8_i6MG zP>-lCB2B1I6ZRCv{hF{AC8{T8-W0t~bA@X}^}^h@`R(N1c&_26H_h)b{5$cTMikFV z^La*e1is6N>Wl9-u6qj4H=_Ds_N2sAVfLj&^~VbhpNp9}C29a>=9EG7vH4=7#?SaZ zBk>|;{**-a-28qcY9M~VNY;H(KP7oJUTUP!@8;A%N$HN487Vx6&6gWdgYd&f+O1e$ zgN!%uN+YukeiR;K&4qZCkuwWFZscsldT+=%iRq!D|C`YKNkjiPxw+O0>Q2CGjNZ54 zr;Vr*{EXp$0k1Wp2IF-`{g(JyqrblIIU|bCW6hs8@^8fYeuyf?FB(mB7S;m1AfEr z7%hLo%(l{d4t~$*t-aW4w2s2>8*TLd+l;o_+YgMk58~}cTlI%V+mG=_#z37T{TSM} z$2*Mn7w{*>KwaZbgRhNB^Ib+qt>12=qt^9PqodaHGb5@3?=iY+|M$Y@{Gw#-&pxB8 z)_A|sEfRlW47wg4FuGlZ4;oRU@RvrnU-4H)cdhN$Mt8l>H%9m0@waeDr2Aj^J7W+t z*Zg~<`+59>(IbEl8-sM#ju?EMLYn_*^vu9Vjh;Nud>_Go^s2(zKPZ@t^|^&u?e%e^ zU?o0b6zIJCVif3o^f`eHUFRvIcYUn;gq&$uX9areb9dTkIu)ORvm76Rb_!_RY*Pu&$i>&dTX_}|9Nnd1Kh(*wm%E%UE7{H!^@y5Z;k`933B@8cLX zs71cth|z2Cq7tL8^K2+FNjS!c$-}WmOmke*h#7|CjF?IsZ}7D;$xkq1=zo4KBUaB% zG-B&uy$8fLz{y5zN1S5B_Qa`1><~=9m00F2Ki!C(f-{WR2XLkl`v}f5VtE$wYa1+4 z^0STj7C6U9xDDqT{ESw~*F8hRQmku*ghz2*BViq`XYlm_$!8{%#F1F{1Br8SLnHAA z+{j4$4L3IQe=qWz7)jd0rUpMFSn``0Nv&{mgRenIK0~7`Sofkw{Fc#x5^1{WIqU8v+2897^Uv61sW zE-`XW;K4@DuUO|8a&`TsMqRzvP(%M5nm^2_w+ELQ_4ec8M!kbrYYp`d;c}ziNv!h+ z_4Hm9Mtz+TeP*Ek=XkVHU$0YXH250_jD~`PMnj$JkkPOyc8!KQYo5_i>lQW|-h{^( z4R6C^jYc}Z;|%>XV}6yzWrE{O(A}zt3p%1YTmac?I8Z zw0!{opSF762aUEL;iU$@k3sSuGTLiTml^H#+0}bM`yp8S0qwQ_j~MNB?JJD-|KOEI zhbXLjh7MZW$Bd4Vc$LvH4nJ;m)NAPapyM-G_X8cD$4?rahGLy3=yVjXF*^6h+I#4% zpAYo?&{@~K*3dsw@iVypqw5CztkF%^sjopdolU(TbkiAp!RV&@c+u!~3a>Z1ox?8~ z-TuWd8{IBry$5t3h_xTk-NmmO-F2>BGrCX5uN&Pz$8Q+j|G;k=-Su7@jUGCmn~WYF ze#_{g*LmCMnTaYPD=*7akfKx?qWDA0X;Vif4Qb{YlxTnw z%qY;=+hg>uh4&i0bFkJFdN;uPjNV0fztMXn{=(?3&#YdTenyd7h!MqpTSP!4U!P=; zEqEqdP}eA)g%;Gb#WFH`Y{7HU;tF4y=iHW8L4ERA%)ON&`qQ!@ZV4gsgP2~n zTui2ZEtdf2Ud38k(wCM$^5u7W+LDi3)h2ht?CqK+zR~!o;j6?y8NLAi*YGj_t*_PE`F>6wMV=&iJeDtODM8n7P*!p_ISB0k;?rxqXz)Eb()wM)$8*|xtKqu=Z#R51@JEJE@5yta__%lLPYvHqm|0eQ^r!U! z!$;p+e`EM=!8|{TkG{1&3xAO5Uu$Zp_-@CS4Ij^Y8^`e7fm011du@|$_~zj{2H!s^ zZR#1myD_t;_~v6~Pw_3l?G4{Om>wxUX1+}y=u5sAGoy;{K1}Zw-x5rJ6yN=reJZ{O zFzZ%)58@SuZz-nUiti!(oZ(|G+q_`-=vAASVFTyTvo^0AKE1{!!?zMMr;6`Uyw&hM zhPT0Xj<3S>sEy9;6L=r+dBpb=rWcA&*Fx|AA4(?2lUDJ3a)4PUc*g6d&IumwlI8e;#P1C z$2Z~*hVL!R=M2U7HtuQos7qU(J;k>LGxv(`9ZY={A2Z%|wc&dYQ(MJHE!*mO;Cmla zC&jl7|8Dp`z~>DgwQkFtD!vaz+SN3C)V^Js;iCubatz-N%>EP~&rG{EhHocsXZUvE zkm1{nZ!mnHV%DtqKEtd@@$JF-9`NnO|Ht<^nVu^?`rqy!!^g+%>6haB0w)?i_SwFH z;X8<_x#Ig0cQt%p;em$lYs@+o{vKS~-)Q*0#kU#0Lzrhw|NQ0q4nJV{e!!0yKIX3d zO2c;qKVkTO#A^)SQM}RcF`Mo69>C8;5We5 zhL3YQFx!gnS6t2T{f4hLe5Y{=q;k#~+z1+zf5+DvzCUq)!}k|1F?@gHVTSJ<9%=Yk zSBFuC?*b0P7_LdLIxIJQ7ctMC;=6>m7(UkCfgUJX^s)o>ReV=4^;I0fx>j&>f4Ww1 zBC)Oy9NjDRP@E|KEE{V$SK&0np#~lE45vD7VmRElV|&BlW*vJNjvtp9PBgAGoEmrv zOyyoNcoy73=DF#3o8iRchhQ1U6EJh4ILv8BWG+W0WMF!)IGLE*bfkw)7JqhUeTtKVS(D=AV(zUt)T0ykP@Fn=h~d=53k|0p z-f1}X@ovN6IqS67a2jHsJ;h-tGxLf= zuewkJ#R=h049CUPL2*312lkS~n7Ql1v*C=zd@kuiU7RY+=Mu%4fDgkF@wI zIbk^0V`|pr6vwCFGlnw_Q^PJ=L*45?hBE_GL&ceiukiN?LcS448P3g^+IFqZ@mZM9 zONzsMb*1i#b1SB%U8$ur2eW6zxgFnPICJrXhI0pg&v5R<9~%yH+Lan8&RzIh!?_zD zGo1POSHoF=F97>-?%}_~S+nBYiygyRgtH81F>Y@-%zHQHRdJSJ_Mte;ez#$U^8luo zio@Ewd4{tT(;LNk2-5?_S%#^*;w;C^lHxp!Uo)IX@Y{y70y8^`vl3GW#d#EeX*iGJ z?+s@aK5saWWA?2$tND6CB(489c^tSYLN$OL3mXlMLrM zOz#xuc|6B(UcmHKadAm9c`KuQ_QykXX zi@Gb$519HY&S6X)73T=1c8c>OW}k|46zg?$zsIn?2b|+rUjyd^R!)(B!SqFOe&g#( z)gX$@d=)r`a~4M%4s|L>Hk?0jhT-u3f-J-N3pX&Fzj1TJIft(?9G=mFHimNncQl-T zaA(6|Mhdzb4zp6w({L`~VklvqmvO1V7)e2y;g7&04SysKK#;#r)csW%{;Tjr!_VjM zf|+n5=Tyh@48PWZ&jpH~8|c^C6u;JkzAFA2n0gjaOMeVs7vmm^zb59oia!qP$Ka30 zNrpcGrx^ZPxZLn3;+qY>o_m|&r}n*{F#P(y^@cwczis%_@Mo}xd!=Lgq4+Z~Jy87g zst@;5{IxOfSNz$Sz9{}2+{^Ii;z3Zz@jQHs;jfDyHvIK4byEEG@fU`lS>Wd;{)fLI zW>yq`Ba!Rqnc{DZsj1>`g4-JYrntiJ^UPg0#qcvz*R3@C`S?Yk7XB8PeJlP}_>keh z2D1jme=YvQ@VCbQ7=HHLmtHA;?%$U_DgJht8Y%wvn0+e#4w!W-{*IXSDgI8FHT7jJ z{?3?tD1K(Suf7KUZn%r#?~V%$e-B)2_?h>TS@Ke;j z%!%Ufi`N?dewfbjY9B254V`f_MkHE~O;^$fE&wMEU zk(iz-{t7%9t|yPe)JO4G;#r12fNwSYd|v3k*zkw&62tG}2Ms^9@6R6lFXuX8{Fvb% zi?_f#93O|@GyLQEKAR}RKLJ-a{1b7k;h%(C8GhC~fEiN!ta|{nq4=lZZib&d44}t~ ze;TGFD!MhFrZTK)8;k|n8Uk(2qA_J*|;=dC+hM#*5j5GXqVV+OLe>Y|i16jL& zK3-t>@4@#Q{)PBa!+$T|$0iWL`HL{0g9p(A|9zNy4vHu9zCnqQOy+%qQX!rEIL*e~fv4294(U4m=L3$a^t! zqxkn>=0Nf9$Mka00`eD_nhsh_riX*HUJsFv;fG-*`4_wjo+1B+b^qW$ho6V_;EDidUTodd1z9!SZLEpmn2=nY0UP~^*%t>Ka@?hK@n1|>J zTmW1zx)S#Xm+av&M)Vv!4)`1s&2v{c39cvKiTQj{xR87|USvc+f$xI{IQ}GF3iLIa zUKXwZ`WpQ_*4H5VWxURa-hlNrh<*jH2VRe+&xQK&Yh?Od`1=3Ry6MOCJ(`{uD$IK{ z6mBu1ne)PTVLQjw9|3b3%`6l$qlNT7nvV+)fc9FC9ff1$@9`-kn%4?{gMT=F1Yd&7 zrhib{88!6U%u3OGj&qNq zg|L{c_gMlDkVj!=rf3;CfFFicWahGnc`15|JRUPoN{xy51=vVtHjCZ@`dnic-U{!N zZ^s|N4l-*h`ot*Y^JdXbqs9Wf8}@R}J$N4+B;SX>f^W#Wu0uwR<(T;>I?Qoh0-in7qi2M)sjF_u1pF@qF$jF?)O8B<~s@mwQ@Iu_pr^e`qFFEU~>Fuhb_ zw3hb+eT&J$D~uSPm*Pi_7;0L~+$k{)@ME2cj&qwsm4KQTdk5iXPI6_=8dYGis-LeENSkSAbzpv2IVk~pB=F*jgpT9QJh zA0?TPOP+<9!xHu#!?VWEaQu&$`M3qNu3H&y&mY84gJ4VbY{2s8b82VYV-H4%=B_A1u)UHI=3cYW{yI?ox|BiLt ztT*OQtZV&>d>-psA?6Z31V57LeaTUy_f7aGBUbyb>x0;<@kt}LIzA1oCDw=kfWOGm z_#9j$>%8c7uaFakUpQ*SGB1O|Si=WyQO5V&N0Jq%;W`uaE{b`+ifH*kD3 zo(c3JR$re5bIAJoTqAZ0zSD@EitjOEr{TrG?8Z*V55Q9L49wgPUP0!%gC7Mxf5qO4 zd1jQ@JMbD{R%7+rJTpox*Bbna5xWGxX2jl)-!NkJKAVi#2l3lREcYI~6}EAmhcGj& z#PTc;{ur3m*hlal_?-MW-fzU}x()!d8v7Lf-iUn`^IR!~+Ap4~!9Q`%bNDzgi?O

    8< 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⁢A{Q;RNcS;ef!eO)c49R>W^gy^`o*2 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

    `7&+{c58@_Q{++FpnPJcO{2 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

    7zThV7j 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

    Kj0HkfH-v<-_Wfq9r# z?zGmge?xwG>Y@p$FD+Y>gC*L7(I?WfZG#G>{L$gzHxhcEN1kTgP2|puwa?bC3p8<8 zK!obDj*`ObMJB>Yjqa6zFdB22$o|}S)^j4^Kht`&f2?f zAJApiZ8dAoGi_zC2D_Vj660@`-9cjeJGMQbF| zCNG!#0iRnPJ?DA~b>6)+}w@ zx_HE3vyP>psw-^#9Tj&%JEDq{-_LOsoJBN_*B&UVn<*H|!ngz}(~G&YTpQRh0Hpm$ za#QW!{9r*1ZQ>%VoUzxwYzn~W6F#s<;ooof&T+fkbF+@fnt;uoD{$}pF@DbOs1zzn z;ceS{zskUldU&X;!NsGNv>!HN4UM(bAle>lsPcn;*U9VA}%%>WxY{75qCMV`k*0Ab`IWAdqvcWi+D~>mGn_~k>N8FxHC%EA!P<<7ttx6GNXm&lZ0*zo!sa`9w_NSc0 z-l~t_U#6OwA-<$aaV8;v@bGSQ?u@k*V=T~x!$IJSr41S!b)yKj>e4^_;?=nWv`9FC z&Np%^+IBQ8w`wQ?k-1Q_`zr#`l~ziOC}!1ehpZs8xyXzmbHo%^J8ZwIK%AkSdaa(I zhO8vpxbKpM|GfA?vseZH9 zoXqq)`?j^)T|;BP_*2hu+m8;TVNe`D=iC8u;Qv#Cop?Wr=fyWH$^D5Vb703UgofUQC?#C`+uT`M zvDOO>x~gs)&PtKrj*VEZ zN9cBQ$F{VxcSDf*sP-HX@izi6tx^rG$YB88-IYq^BD^lGGADA;p)-$P-Oj>$Ms{4f zi2MS6s#o1^PMU)T{#ZWbGIZi0rMl4&BJH~D5R3*jCOlsd zHQ7cAA}UplW>5kcjXYGrV3&uhm{~*v2seeEHw;<=Y(?fL=24B;tATQc6NKSK+?}nM z=F5FCw6~yZV#_i&xJ2*y1C*Su>7cngeZm)NuOVvqdHHL7>q@`LzZw#uV`V3VBt~mL zE0GL$4az`oi_X$}M;#XDEbO8kA=BmckcqZ;(Q%DA#N#XJuv%&irxgNt9Fec_^G2`* zO!fwFJ6VDezKX^+nr}qmV+3g$${Q2$pIi9OBQS8GFMMI8@>6WGWh9MF#^gchl3$&U zUUm0E5%8n=w|^H?!QGPDN5m9qo@eW}&ON=*cim6c()!e@hxc=vn54M&0?~$$qUpQ! zy@{JD>gdqYK1|wHG^sQlO~WTGPMNCe*vvHvy-}+2s?{OioLwshK#Bhq%*C60xTWFi z?!dd5Xt?SAJf7qgMc`!l8 z>mhH>xnN^T)DcveB*lKw@Xi~#2bUf=evl#IUZqJgoF?Mg=iLuY-4*=qAGa#5(5(ci*%(4g=JC&Na8( zbh*84$sCWzvtVh#*|vOv*Wa{c1um{Y>kt|-8j{X}ai4aa1+&hFy3^xEWI}Wkrcb1$ zTS8+^W`DK%;~}FNyaD9;U5NbI+S?Vq$y|vc6KE?amGVE)e)f}Ks81&^a{XrVX_Z^m z#VoGf(Mq{deCmAJ_&d$WU8IDseX%N0eEg?AS_xItN+@4Y{&VJ-#f$r%96&D7R!NTx z;Pfm)#CP>XDUT94DS3iE+H79`TnK^beH9cVaB3QQAZ_^3`FL?lyYFy<*QkjM!LPBtI=;g2KoE+V+E06^c%` zgAVds_=69aO=W7}_*ny0z?J(;CGr(_6=Atw6F>KBW|_`6v*ge^tLTVmUgXhxmt0&N zKPWn8{I5-PED@~;!&iMXz`faz#{YMH_@aa_6NB0Gi`uJD@b)4#*gpkrr2L%$kXn~P z#P66Hr%ktAla`vou?RMVX}|SI82$!dZNz9a36$0g20YV8G|}(hZ$R}}xRqPQ@tZ0TzjYxJ`2e&3lF4|dpk zLz*s4u!r23RcN$fAAw{~K&tpgrD|0dHxJ3I%C$T7(yGqSjbCL?}wZQH)-+BP>M}pSho8F6uIOhYUT2p5Afp zL$gzkf2K)=(hb92`Rl79swPE(Fwc=i>cCu=-nC%-w!C|#rd8$dvT3ETdtl`@k*90_ z*4gb?{xF|@P#CA-{Ari^Ow{?PJk8d_EWeO^;K0$lL|;=E+9Kp8JOqx>oK#T*Sqe^Y zTt z!y2DoGp1|yBmYwMDLg)1MelR5r3A*;2DQyTZgs-ZuNhGFEs5?M(H72*kzA*5CXo{6aB9gEv80+UUW)HYyhK>9&HeQ_g5;99#THuUe#GGGh;||-O*O4Byd})KoVLN zYqi!)#`n=jH{Enmd;9VQ&Q8a?6^^RJo!&fOY*UV|idlhdy^J1aRFe5pIV#C~EqO1u z-c1)rgT+DU33ag-2g#xWcME1_wEj7L3R&BW$us7JxxfGOk&~Ad%qpM47#rIF#ZFpU zxN@R;P8FvqS&xP(V*n11nsG7|tiHV{^%4UH8`Sf-sn?tuf{Cx!-$$JW;pil3AU^FA zDs&}e!#IMp0cPS8=Hhbsr#OS=nQ5k8pBexBjW-l+?enUZE>mURSMR*Tv;~*Xwsu-a zmvaxj1`=_{!eOX>SLXkO`$@CuM8DCa&0@8>-G0&nN;jE% zjG1(5R2}ZKmf=&`qEl@IZ#vIdB7q+I!jr7^?1yi&6*{HmYLOwoglelhqpp16zWkDi zbFk#;^FVc^mRk~Z6iS{R(5;+7XJxplw`pYL!5sOT(d>UF#zGG~a?dVq38TL8U;^sk zlIRl`p<(cb*AjS3();Lz<-^s;V)>z1K@{h7U`(v!nRi**z%6Il?slVbc6MpgTIJ2dI8Aop=| zf<;rY1^q>AOPaU_pl*#ij=$^bA+_0*3o|O#-;XMGs9=w%ipnta0qPMKjK5Jw82Ad9 znt7~v$we3CxW8v~`O~_fbuDQ-w%zU>t~fo;>gXlh58Yl6w)s0QWkp>U@2Jb^rm=Jf zD)?6-mX?F#`gXdP3_KJNq1qjxY^L?dh${qz>hR4Kecz6??+gul0Mh zRXfH6X#MU3)#`J@V8ElZt=_C(W8;QazdWJzwb+uzR=;9E>1$;YJ=Rp(o^WI{qab=0DG7Ohf0(gOWZd{uea-n>OCzJY?+0P5zKVj0ob>%d1*IX1G>^_F zy}d6v6d*3ADF)+hg$1+qC`|#4(Zaa1?znILwtm*Bh;3c7JlVAHhz;Ek)QzlPJ^!I( z%hJ{!KrmMfwjOr|g!&C^e&@!%PJbl@noY9!>q_N?IvRj53RF}@t+TJS98)D#(V|G2 zKczLf|NHxob6PC0qxyD8dC0VemAm(ztFZQOTH@16c4!a|snX|~1ddiZ6~P)bli<>3Jkwgiw+=m@5Bx`ZO^HpnLO?uI&%X|c1AALFa^*;~NGZh#ql zJcCdX=WXIFig*NGOohP@&j_IYin+g3;`GTRvlmv+f?2Q)2lLMZ2lV``at18C|AbF1 z%F-wF{JY<`dP|ggjOgZ7P~HRAQLm3kdi7S4yOb% zl+Z_E?HZ}aBZXpw_p-}qibBr%iV=^$-r$>1502yUYW%(YW6JS6$yS9A^M(D|oGG_+ zQvicBq@I<>GIQe)QBpFhfJ&^?nQCvyn?s>ic~;Za-Hlwb{3|-pN(t@@qic5WjYEX2 z7rn`MiW&)qZ55>6QnVCWf|2Jiz<61w~++{Cx>{r-OA6hgr? z>o8T3r+!SSpsL`~DN6%i%!@XUUtwZCso9wsg~9`QrB2ryV3bmOn@mNHFRG1(R3}C& zH1*&P)!r@}FpyO4BlnF!@Hc1Z{LV~$6$rhG`q@Jgwd!)matXnWL)cic60X zsWh?;=gtlOnV7gQMD#aLPU-Vun3BxxWQD@P#{*nCOP=94qUPSloGclmbb>mig81c& z4jU_FRBlA@QkHzFH}{#0#(0aqDQ(r;3bhBV?AW@5My&*8luo9TP&)30qg9#JV@?w`Ncs3YF(S1p!W zm9zG4v2#~bE_PQ*qV?D%Rtsx!s>H{2buM2r>WJ7!mMqH`^d4DR;wGz$#XBkni+L2D zOcok~bzsujgBfxFO0FMeMfx=tt#qmb3iI4kW|3duYQ2{@Z|`{t%##xJpLXWXe(v2~ zOJ4#`5kofO%zZ{z*=}=G3x}~7SR^`2^(qmar7E;lw%`O)-2fVvemflH`Ngmpye=&b z#wA#(M$MMm$!}%oJm-^7=$X5-*;^_GvuU^&44}56O3BtNgJfx$YkCC%-M{F}b0Qm4 zIn_CtR{b9ME{lug#gam+33f#SU8#~X z5lR?4wr<8o91vt86V+0BePj4VT?BpcRL1}2borRQ1<*NSY|3uIh2$xIv4(mS{(&`v zQoYX!%$IezHR4X%hDpxjPEpZDWjhs=xNCTLMZ_BEQ1t+bdI?=QWdl$O#OAEffVG2B zOB5EByg3MzeY91rQ#X^KSSi_dZpE7Sh^-m2lN)7%W-fP@o7)42w=Or3?`cfbd} zyj=b4>&foO&z3Kk} z1U<8eZnA^WWq1qFG9W5mkU*{?9o&cH2V9P4I;&eXU_{2gil4!_xn1bze(aB#yL>q= zg2;COk9IYmsx?|QDW*(WD$^ehzOWu)VMpl^p%#}X_2VAUzI7vCO9A9|Q?YmtSV-2{ z1q`aD{8P0OqNW()k|qyuvm{hQ{-ILoJ;GJFi_4oZa`#G_2Glt!-y)of*g|bA^Iq}+ z?j?-LSPg*l66S{Ej>~+C`&`C-zCtvQH+jMU0-9=4gl(8NdID-x&qOAWTKwF!-zs(p z?{+E$5Kl8%|0P8ZlfW^oU6kna_^|H(1#eE#90(QFz5 zwkGQ;)3(94E0rgDd-q&2$S9=w^LH|zUcTapFRk{p)o#slk0(kA?(d1ea_|1`bCDJ* zH#dSxG*LFCL*92`JV<-Dil3^YWLPb3u@^>OXt!u&ZM2a_(5^vy__q&ZBXgr?jn;9f z)uQXrID?ZlfJSOf;~?gia{12b5Y6}}M8f@hQyz5Ka``_b&pl-Z3H{n8a_a~R96!&t z9d%NY%45WjJ3`+SJ8HGR*}rO|k%+k3;o+Cpa+m$-Pk(wQ!~LOv;PG+%qb?aZeS< ztP&SmLIOZW>5;Wpt8X4crNBWTo8PKkF43EmgG#fJ{Y>v2bD7*@2}AR+L+75woOae( zPycJvrqp{(8}9ANwCj%E+bI-l!JA*qQ_F>o76L6g9{X@oDHBK?y_VBt=HnCU066ck zHq-W-atUaOJizR!Rv)L)>Z~lXNuj>EmdxSq3zL5C#ido&)as$~HlAj^v=gO>3nBCS zmXVxP{A>Q)a$x;-=zZvAi7m_6)~2Cq*3#ixx@PkmZ%l5yLLufWHeiaJ7v&yGGri}9 zk2~SG2pZ)@;Y~+x=sb^mH}OO6V{ZKAUy3epq>ftblRKQOb7+~bAA{Sw^jTXrzq$tj zs2&%7zle^pr|aTFekqK3E8!T>37SVvzXSrojJL>GnZ~i00FE11Ttpo^^>p-l&_oDM zzu^uMSyG?IJ2-lCn0w3RYf(_(-IF}XUvvXwtbKW~3{mT0k@eb0=Im2C!yP-$CFVr; zxmQ%hU`iabaS?YbZO1u^Y~?Q1qP)HT5;`#wj?rtUbJsm?`IVTh=Vd+0rcjhT!3{D$ zhdA6_Tx0Y^^0`GMeKTw^Br_!>bslQQ<)^XJ^m7nN0($QqW}? zWhB>yj^4hN>T`()_M8`=qbi)*B{fMqwsHqD{6x*E>|aWd7UnI*VLRvk?-VS$4t%~y zEk1Acq1}wTN14FWKw=>{sN3HLABDNFT15rXY^qR(UOO$pjQ@#guDx$!%C(BXEX+IBpF0r(S=u0Ns>bDo{ z?T#{WxIH88Cif^JX+gV$cDR|)hZV$mqW}@r;@^Uz#Tgh#b;*pY4|D3kXPWG-o{nrZ zrpM9a$7h(+^CW7ssU~p)IB%=3-}IG@AO4#f5EXNMrSbscPul;dW;;qsGiMlRTDq=> zwJ1ZY=Wj{29DQ0Ip?YS=h83C4Gp}7NH7n;|dFl!Mt;g)lplw7F-?qLl1KGTI2NEc6 zn3YSPccnkQa=UEyEet!1W^^pOxjQbo?XENAJNNu9^&6Ipa7j=c~QS;CJsun11x9#M9 zZ>5=*(nZBMRm72cMIUtq?R}OP{b0qnYg@U0bsI6hHg4{V@pA(26+OyV)HS>&pC9oL z9l0=wd$15y_1!bh#|Gof^OgWRh8bh^y%R*1=v}DiOl^}LKGc&^gFLO7fLfXVPD$ar zq$mwV)Bw4dlSq+!+>~=Hj*9hqS!C?#qGQ8_^HEQdop@)hgLb|mpXgV1$HR(dRab9V zW9)LxUeqZvux$%Qt|q&=GiNiut2tXL`bZE81Z-!gW&=~HJ<4>9pzQ!rzq-k49EQ3L z+g??p(5296W!$r)^0vyh`4X#Q=K4(2C2i5|n|vL!X)oUOA8W+Wnpc>bXQ?v6}mX>{k#UYH|MAe!AQq+C?_Fks> zrSI=L{fQ3;)(yOyJ|e|jIsUqLqKXan>Z`REkswC-P>X8k(tiIoUW{iB7I-W0+lw&7 z;^r9-%y@jp^V4k}j|&JK&U&UOYnZLZ#|EumD8TZ`A`GCp8{T!IHhV}ODV4V1Ez}V; zJQ_ST#l+ugxbNxKwSm=7BAxXgh`9$T`5-X!IeDbyQMAP=xlA9125b8@;pkIA_^^n~ zOH@H~SQ%CXxl>3h86*;B#jaUFvy4GMrqTiport06NTnQleU5QHOh|sL%P3(~5>~@X ztZ11w$Lty{=_by*@KPu^{I@waR4fs}g31}SLKf(8m^`T- zJyGhO4w`JRxC#xNp`t}a@UFkxVQU|?GtfKeH0Tu$xeQ6LNZzVqlyX^9$ZBn^TJh#e zuPfD~!@NgTXJ6XeI-D}7d`fk1p)b%jlt-YdHjMKW8LUfnFm6bsi}UBsG1HmeC)nVroaESq z-+PJpWvd5qamHKw?dO#Wn{Y2#6GCTIXw`xvH9eVBx3bHStrpB=S+)8@N~f6=iLTAg znnGq*RGZWdU|i0Vd2`s}#-M0@w$&YfwqWVCdXt8fvDofSbN3RAe#dJoImmVXK1

    PF@Irr6 z(Qa_WY|ezm;Vk>SMY|E7Ia2g9yvJ=Rmv)c5;7uYN)JivfSq@sw}-ChPpEH$T{ zk6deW05w;6;J_rZ&)eiqmpZ8Sy0}MXDW!nK6^ub|Z=cm&?9wP4GPx&8dOd;4fJx<5 zXrsAqk*;g0$KamRifoa}tP6tFls8UiUsHZr453|>A5w>GkwOPFCZi$TWIyLbriga{ zZt+vFd3Qta9q-RDuR{1kxc-GOge)deg*wLrysRIP8@Sa{DzEnhfbKzas@zJ4Aw?G+ zNLkzD8F|a4RFb9WCln0rO3BPleM;{#pD>^?G8u*D%!DN%L(i!F)VQlpm6Evv`+01J zwwB@m1gjvUGR>*c6!5++%v@vUlr8OOj+Mps#~jWQhDKJF<+v#MG{7y%#*O~5Atw~+ zMwE)~V>^_t(r`c(+|;VI50=`Dkz+f|E(lW`QTs7-`}q5OTN_{MrMeVaw1M3t`kttP zfYNl4(zk~ARBjl&A4<8c2&;@Ql>}~bP z0hfqYEf9D$u0|t+mqcUq-{S2duNuv~mrkFVN7)8N61B`9lgrtfmxaQraeMSZ>t+pj&4Z_c0cA z_=5272{=iPN>%Dm4CbxUh_f%KiYmMMxPJ`DY~gmfOC1fVq|s>IO~2x%+K+^SuMi6s zISUUDbf?GwHx@nNq^%*TTE!$Ux->@?$hN%%=9p~o@d(4VFP`IJU1JNHZ_ox;`82k4 zj#W3!bZT9rpS=AxCLi^m^6HILh^Oa@r`Fnfw{LFqv>$V#LvG0r&-8=s-?nhn4#fWl z_57Z48zu=~g6Ixq3m5B};}a;DVCouZVFL=WQZq*{Mm@Ku*-Q+-c%--PZJB*QIj6fu zjD0H9o{Z7<)Cd!+z4Y%wK~^e_SAX)>W@h87j}E0#9!rvQxZOF5MB}xaJjLbf`0q4E z40BcArQP9J`U&Q1&d%K|mMJ9z5_G7Ga{r2aul7Pu&yq-_>qFdhp^b_bCWX>BE&V3> z#}v|oqiBf(A^nt~P++IgkmB24of29$qFH)!`By`v^^nWXLmg*5^9-BS#sjn>=nr@I z+B)TNdE2kwdrzFz^fXD)Io8zC8Fhq}F=c3XGO%uYnzgA?$E`Ls1=lTe`&~=dJxrSh zv}8GVi;o;AaG&HDd$IV#5)yezRboT@edm(jQO&-zR{~@w@|_JfYsTiXh!1i}ZRKmTyv062C_4TVQHiO@;_Cl7A zHTzW>iyXZdVU8Pw7>i44F|z@`oIKL)AM>@Cd&2>RGRWH0{R)Hhnr`RZWkIo4*1m8= z+hQ%x3`q2>f4G=x^{m>|BQ~<#8<+24o7?@eZWi-<758Q2I<_U)BGYtISxse|Nse)L zGLKJ%VQMd7GQ=PJLMw<+^;0otCBNz?uP1-%3kS%igWN^V_6_T18KB^#@icmKBH)z>r^?0o48-%MmnoWBQ}(7pzY$TtCNi*68O=mhAwx17(~-M(^K1aSg0caexMprRgdd6K;>vmJ z^`aDym@EZ*ib^%|oQspO{r?}hgCby1u@$Zt#Y`H`7y0&Nd0+4e0^CB2XtXBXp!QNh zRQea!GoRHg%xl0kpj)KXG&`&dFpo#xy~v<7Vhj;*jWfp7(bZRNLt4cib-}{W2rWe^ z$m3j5ONFp!#|`kcQXdx_RJG8_2r{2n!ThYC^J$YBUu`3$N`LbWV4vL0B+O7qxD>ClI|`NWoN6B`_W*LLBqV#NaT)Z zBwFdv(r)X2qAf?BkOFHvv2BB_Be-^vyVJR7%}4Pc#2_UA4fqrbdA(J19qheP{nrz+q+?YEad3aDqIR(=LPn_0GmeS37+pOw#Yj{D$u5u~N z*_kb!hTfQ^+X|jBErQ%5+ACUqh-Vi>$}Y- zFxdS@Kn%5_28MEJsq|14gIDubI}_6yR88dJ3ioF5$I0YQ zM3|CxiS1uOja!8%<S*>pAJ$8LlyLaueh?>4Vc4d1%7wkc@SE-uqxdD5pEtf~6 zZUsq8Ai|lE?NI5$K`<4lNaaf2G}G3lU59&Yfw^GvFo*;B%L|#CFh&Fmk&<;HcB0F| zhlcn_K~Y5ZlZKk&GjzT15fi){(LEnx@fL-7D4V^hpfwtDJrHqgPM|}ZOXMsqy)KQ0 zQMi<1quvd?|`Qi)ME@1)Cnm3}L0mYdz^AA1>L&PyI2$`2}9eqfbM z$LViey?_iLO%|t1uKf1vo|@~1cyE)g?P}HD_lIGarTJGr&tTf@aQ4}O&u)sJzb6i1 zOHm9!Hfnxv{DS-X@69hN7u^t%TV%m~^Hm*7n`CNSCZ_#JJ$eG4^q(H8F%92i7G^|F)OLS*3dOZf! z7}@OBW$Ko$wTqo?&V_53_i<;>9{&|8ZWPoKx>*z|a?d&E^#A3tbIytX)umo=agS7| zlXUGSzshitkfG1qYmQ&8T5u_?1&BjuB|8nFpuXD>35%rGc^CJ}Ff7D7XL+~>V7EPK z&lhlsXW=NGfC>Q@oNj|Y&9_ZVJR({s z_%k;(>1kYWzN(Awq=3g%f6v=Q{$#c^h=EwvDw4Pid4RTOZaMezF|kQ8w0GB97ngnG zjpNCsK=|P_*WP~njX1J^^s>P&wYpiUXpRqeGr58HgV7-Q z=$=*FhfL@`jlS}okPLBu>(T8NQ?JQkig6G0lKDN{(YlWTOEOFZI$sBHU@Z{ zisV0@&0am-(2oE9fd@pCf_yxcfRmB!+}@kx@p}r$GkYN~%gR{2M()wg zy~}Eh7@Ve_9~o^Kv(=L0=7x;OY*+;U2kf3S>GUy`%G<=keO7O$kr$MjY`vR)Z3*%%I5*B7&I5GmuvCEt@-LoIT@W ztVhEk)!h(1_elBvcbSd4b&{dy9On#f>~NvhBrd}T61=mUgaR5N>80%uFze6`Jkn+B z=~Rc*o!$E>b&15w5{24;Q3zI3)(0Y@AJl4{OsP}J#ZQ!ovSqAm547Zc;>E-vTkkn zidm$!bNM_+Cwh6l+hWgI+ilPo*N1|JHbXefoL(+N_3%aR%e$8wEp%)k(Y9+v7-Oed zdMD95W7zq{oA(c@-E8W%pMTiC;m%z?ML^xU=h0(((s>gTQOBiu z;(kf>xaZ)36SU3eUDg?+?WUX)gB#O%)b>0dI$6zu7L~9-m zoTq$&mUgAmiPCP}Y<;VGH{r-d{P)ud4^z$D?$=*WA@^8HKIhC~NCytn$)H4&RaqtO zW{*s-BnppO+|(iobOt0XZQ8z^GQIO?u~{*?KJEQ(vmWEtl>zRXylZZXbtwC0>hg}U zepJ4Cs}?jrA0!TqqSIdWW3IVpK>x4ba@=3FiY`;a&N>w4po)8vct66n&RP|!>O(k%|hSB}Ocf82C^2;xG6VDe6nR`UcDx3IL@}I6}^7*bSIE*Tb+(Mo| zS|iiAr3xnKR(f17&EGN4p>WH!k;42PHk2n_O1H?Wj4W+c*rZLP+%iRENh?xF?=14u zP)Ou;C-hQ-L?5+q)o@tkb@m%%__W95>@+zsR$PgBULs|aLTqu3o~6(kAj?G)E=reb z1aAo4zV51h95lD#`?V&F=TJ4tB^KA*J@|f{tpEt9SJc}E=_~-Do+1Fsg6g-BV{Dyq z#f%$g+&AOV|LP?tQUhv7c@!3QgBMfhcX#qg9sd18Ew4}nZUrgMY{IltK#R0rK8{~? z=?WP@4r##e2O4nmpJ-FBaSgMieWtjS=w8&V=KXVYK zZNaf?87+V>!^-tB9i;kAD;b$6++)UYzE?o6dX-nE($YX2mA4LM$848GD{)rry{EqF zj%xC&JvcAcQOu_6oa@9pu8O1g)E5z-WEVSds7!<0$BD$oMB?Q{qMN%qir(sgE@VwI z$E}kq08s+mQb-+osKFVUWg4jnc&^Ou;eu_JPQOawRVbTU$hiuaOlos2X3kgW^lZr5 zF1N|74mD1X6PD>fy+>uzzY2}g0*{kMSsRd@UJexNt{Fd~r$_L#G|!|b0l6k$lK58B z3OzzJFQ@sZ@Nv@F*0XvL^62Kme8_0VS~ny3i?DOOeqnHynI4i}T8OQGz5CFwHyXs~ zNfXjreq!n5KS*AB^ie7F=-7a3>mcmAwI?8A@$BFJ zc3C8H{U83Ypr_~gZ1$SG)}S9i$E(a2lk02$D5~rj(rdk{P3w|aSetfFJE8N>B??qQ zrD`bvMwjm29pwM9_8xFfm1+Ah&pF9S?>&=bdhadMCzH&iO=TE{UZqL5gD5sY5xa=e zK~S-PioN%SWo_$ z9U6?%FL82@NgT|dSt~1_SafBxp|lh}tuSAEQIXDpuVK}&lA8AFeKqY>owY0~&g3KQ z?c&?bo37u~f~{Fu<3*QV)NpIX3h{9!mwr4Y@ea5D*i(}1E0A@}%vam2)n=Eu?)!qG z$$1Kc%rlUczu2tCMjE7on5SUTVl3q`rCrJJfq1UMt}W9z)vRZG`Mg;LDw~iqakzl3 z$S;~G{o&qBWLPC22i+yrHk5T)00T*S77_s)mg<^w$6X>#7q5m_*^MdvLEw+Zt)enn z@)>Bx;FePxGo2YzDMPuplz)?_kpvo~*h2$G8XuB7P+$--BG2K+AYx3ja&){f@_%yr zO5`z4`kP@hqknTM3mO~7M$B);eZQwo$(4TpdjGZkEVilfl`>0#vJwoJEJOUG4;#@R zUc?O~4sQ<`3XD;6G4m=lRl00bKx4NGujSV?K$lUMY0)@9fvk6_lm z+)-XADJw0m28(m?l&m~b8LymQs`Cch?BDx*6DEc&23P}Vd4>WXojF~zzgi36yo(I#2cNNgf!0$%~AGActlW_ATrB5y#JG(xHb+kjw+ z^djqYq-nZ1F1BIZzo;XKwYKBQ~#POB7L z%JT8+8XJr1>OODgm0Fe3ZqQ_zm{M*8hC(GnNym$4w%G3 zV{6%6;&AZwpINE+-kI$ROHmg2C11Wtn2|YD#ufHtDa~2qT_)#vw#b>;?=xF!s@51v zCVDLHi7%43f~aDUz=?%z;2z~GZmDe(3(J=po0jG&J&LU9Y;ec_9Ah4Y_%<2G zG(;ZEE0k?(PZf{zYI!Lh=}f)DZ#AKTdvS~OPtjG|YikQH;yx0uYPsx+OZ^fFBavgNhT7R`c}Ogn~kZe@Yjyy$02B_;h>%l}5X)eu!5d`v>>uK71vU&1Etd zdRb0(c93v$oTlJ!OKG#^;0O|~1cfHleurQ>)M>_Erqnq2 z55i^)7D$E!WQ4@{-Y%tj~Jn1pmrN>ZMD={=mkAa&>I>m{jgmK~&Y`EvS*!CC>)S%V-?6zPwMDB81 zbsD2WsZ|U7r`=4M-4mkcQ4`2B@Pje#lI|;x{meZ9iPqN*7WsicT-R^3NSbw~5+mv{ zg<2E8^3%P~T_OJC>lb4xi&?0<^1zd?!FN;uJ@l-E$;*}ooSnc7VYEVzhDMrc-t#1h z0h;DyLNq%|PqHZp5poM}krGYF(4pE*eo}g9^!B(5xQ7#QZdVT=&>DxwWGu*VOehBo zGqbG<4^F9bTGitIe(S0CTu7*)bN9_y!Tu;_uy+l*a{pcLeR-zLq+0p=SNBwiWerdL ze67Nymt8Nu*l~V;&7L#lc+%0+;mkuJtx=eEPRL-upo%j}NRMmk=b=1O>k;-?aPPWFbwYQpw;pGDYI}q#b}k? zD**(u0HkY%)sk!d#qo^L!Y7Xh^?UMuLHhwmh%>-UcO+(}t(bbTXLHXd+PFIh(E3qY zoJI_tX`HLqR82A&tqPsRq&TI!X3IlI7Lu0ff*0<-Ts*hCU`34VlFfKP z2E9e107{EHL;y}7k#!)=3(4(_4I+F4Fn=l4N4oQp_a99k z;IY&K@zd{>b|JIE^EPwyC2e&tCGnMt% z9(?xox8k0}JN&vf$ik|1`8u^XJ0||K<%;VzH9=uO=D%Rwg?@=%<^aD(%IPv;9JNyC zXeILcEB=jvjB&w;i}@pGAvudNbO7lylSb4u+ooGMW`I5F$Z-otI9o>lZzp#_;u3B} zKZ+QQ-DNW5y6nBBxN2pRPc&z0#n;CxeGOAK%#u0Olg}Nfbcrh^Z#ogTQ)#s6wHa1p zQx+z@-fAGh0j(5Hr4}lif)F9snzSGRHA^DPSq&Nhw^fjVO{|N_tfd1Tf=}BLDKN6f z@L~B-r^2Ic>n=2LpGP9Nn!O8}^#-KSj3-@X9%bL6rOSe+&+Tus>hjd)+VIdRVtypz zR4%`8)#L)aW}_{&GN+S zY@N6^mpvlJSV6m`C`T1iW*3Nm77AFD6Zo0u50u-L(EpQZZ92j3ajCkErPVGY!qnVY zOpgfs-sQa}3nDO-#*GMCDs6PbTU-9L_^p>8*xIbJS>*Ls-}%Ig*`0TV7n#Zz&B?Xr z&0Q=eIx@nB0sM9nZYonm8Lw1Z&J1U!J)O^g(*AqH}X6_HE1I$exu3 zA$p8ODzWTNBtEoZb79g(l5G-tN9lW-4u~gteCa|<7Q@D}PNdCd%qfhVP`w;SL$eZ2 zOLA9}OYXabR0=jeS}9KCUQRS|caNv2V09Q^OSZl;c)*gl0XwK#Gjg)MeM(=`tSjb$ zk5oDHl8M!Bwo9)o^PIhVrreQtQQ+1u=^PsL|=*m+C zCna)#i|lE-;r3xRxbKD*UL6!x9m-KS?CP?oH;S=fP-~P=S=pgC0PMpV#}8Quw+D#`k2pkRZ#O1n^bCjaI|f_NQzusdn0iQPj|hTEeN2@(X+8lJOP9 z))ZBwQW#-1-8TPk^2$cG7(4krF_~Ix)atVA){Y#=Y~{5;OPJK7Rs0*>>iqFx!Rc0Y z4df{j&$1iECE4r)vGDbHd||t-BwN|3$Se{+l^3%io}Yd3V7XI4ONDx;Ug^!v)ppyP zB_&~Q0cfmE!k&*d^%`+m;lE4}66O>tZRE1|wtl-`{Qh?j_Xt*tJap(NlL^sVVptq# zUf?X8Hk|Fvo;>5L_Ka42q1Nm&LC~JGJNYb!*55N+>S{T6c?m8oDeAdV0^F54L=xbj z)xMb^tVyRT){&@u;t|rgrXH0X<>2YPY3Mwj>>p43Lt|1`&b$Xx+}D^l0s$L});TUm ztPuHXY1pVk3ymfb;+r3Rv|~qRAkY~z*R#-}T0ZPiNS_uZ`j}ge)GhE5DI7Pb2_%rQRQeoa z7l{|K`B7epR7v-M!uUK~O7tI>F@CJMlctVRT2xdKZ~ zUm~#BD<^fzt#(yle3@A;w#5|rgK_ZLha#B)!salw_)|$V$^rdpFw6J;R`Q!Psxe7N zg2=J){q1*!!w%)53qv~O&`2PRc@%(U3T4ZxQ~FN(;K&0vHYsf=9j?0L={M99HZ3dA zWvjAgoFhIe-rn_Am$(ooSc1EJ7f*}C>C`ZcVcMM0h&y72=|m@4la8?{NP;Hk%IW$6 z`O?_*aAf(HvGc|CY+e*1?HZF7X`(%p$JFZl0HukrAQeIhQx;Adk3vb++FNYq6Hm}Q zKF(%{*XpCXsyw98>fF*BbpGvZNqVDR9?tVDEOmvCgkm{~9u(T6%$7u*Y=^OitNRzZCDb=G$!;{rfhB#Vr zjn*B7CpBG;kjNhUp%{I4;Z&*qs2lLJi`NV5T z!7#}E9-9S4A~1D$BbJuKW{Ue+pcAeN2{7uBU@j8m+%`!}4u&Rs zA&d)HGbIe!`Ow62t4w^Q*5$8&EKGUbvjJ;;V}{INRupufLM%S4BwTX)MMQ>n-pyyW zT1zwmO;Jx}#r!F*TKDi=ZdN!92+8gbHla#^ZUk~&a#^^am;QR|w`YFz%DtN#bv|Y7 zv>u-S#eC0jb5H|_Yx5P87fuQ+{%FXGB_^@#D3ij}7p z)fF#49oMuQ*L1WSP2#^9h#2vt?KyB5=|GA(sRVvf}V#HdUa@BXDO1ukP3$ zLO2X^E4mW1!hGpHU0r&UeE0j8!Hpq^(x_PnREJ8_dCA*bf8Hv7`}NadA^;6M@F|ny zoz}u$Zk6I9^+`)m0?=9r0V46X=mycdCExuYnopyp03(;3j+BU&>|ex@gB=ghSQywX z;tbvs#rrbC6FKb>$%BWCRIuvR3fV_JOzxlct4l6~X3s&^76S`{&ScT+GVNe^z#e~=A9JLwmMt35efX=59L^Q!bm3dCK}>@v~Ny+pUzly%&cvhV|L%>=LJu zJ3VzvF9mUa>Xu^KOt*C1TU&qLD}MRqBOy2_dF!E%7>SV=9={8ei^)zZO*3+Vd!%{$ zDI`EZy+}F?Y8ffg2_Qt`-6zy{mWw06S3H@T6Ww! zg&(?edwZl!pKEfJYMM3W9&5oZZN@^gyHeYtsrK1R?hKg9Y~DJ3i>@)-Sv8lPD_+KC z#;~Dc(xITRAsx}G^4q1Z6-9{;!O3E;ogO3iCOH9KgSD{EGV$-Ay7cI~3|_aE`<=FM zD6eE%mOX!dRmtoeUBOTu@V55+d6lKJvkmzZ@`|QrIi!!80lT5>mLdgZw~(_pjE0I; zpS*JSHGW!3uimi#$#)StlUQBal_M`furFGz2orNR9kJx{@w3F5h1RtM6&-0`{vrUJ z99+j(;|0{!h_lZ{_Ym#A<+63LpTc*<&wHX#uod@=p zQLfQ|Wk4mDv&X}V%vgxBvi4Ahz&#MYB`hB3#NycXnB}~|-vG_3OY{@>HVQgDU$#rU|B4(Ba?)jJru(t|~BW_O7sM1l;N48)qf9!-{aYFA{zEJ#_M%}zYQgx6k zUl7c8bx3WqDp-~*w;=9PI~DrEQqz->2ojN9M`2!6JaNoeXhiyps`b)$Z~DvGAHQE#aesG7>b0+U^h9eMGcW=pZQO;hw^Syn7) ztFU%Nf7@x!QWR7ct02n8Y4Z&-Ye|8ktgcK^T4iO`0dt|L(Nw@KN#?>IN{tiA!%^%- zN))^7-L2nj7r*}csW7!U1Ba39)dXgS*a2b3vFD>o@W{45@RfL7OUrJDO94d*FS=Mn zq{Pj&`{GWIyH|X=Ff$%@S7yZe!jPTN>Z_`hM!qfRGL;tb%$^_h*d+3FTCCYEp?T5; zE#;3yD7tjagG&!u(@v2}wG$>DQoyG+GDRu0k?|DMAlbA_fowYbh?JJ4(feE$$RO`v zO<^Wep~TgpNzw+Cr#h!u2a;YYab+(?m|&|M>_EG;jjp=r`x#Jh>K6DKZ28J&xz#1^ zB7*AoBU-BkR0vu{7DzTP?lAdjqePWeu_R#6QFO_3xKpKach}L4=$1%6v`B~in(E#4 z?`-|Usc*mX;Pw`+S6P4E!KYt->*9-B{~5Fv&d7E-TH4r0o#K1qQyJIC$0O3 zuJeL&xn9qgoWV_XX7+hAeErxLp}z7ysl%cG3sq7uA-&)bM`wQZXe=6Q(=|!D{nWNB zd@W)=jfJVk_BJ1D2 z>DbEOyz;=dX02D@zvix|UnhJB;@vHLtJIcB4niWBR?!mcQg9mlX9twFhRk-SP75Z9c3~FnO;rLZWrLwZj5QG#1 zyDIYrW01yp^f29dOb?h8&k80*lzqEXQRc*dE;wp1@A5aZnRV6nVWTh9j6yy&1$}^{2 zUy9Skd}9mYPDSOp^sT zML*(YpvXr|>Stle(rFtc51OA#*Rg zDJuSm^lTc4F{g?LDv2vtV-4ASHs(5Xh?^G*p_{Sq<4rvS*g#@?zLvN*e$M(R&hR@ z+BU|w%xz(Jsa;N`%;d)Y_BATKiDkD_7euPINFs3*JC;O$45H$ac0bbj??}BxxOoXX zZ_1X0_UJzI|If8mn7tx4X3)ay2jTDsZF}yY!iEp->X^X7Kw*Z_9ila>J^3x$Z|%Vz zPUEVx7fniKZ~w8F`bGBkcr)i|*^EJ zt?~W;Qv#=!O!#K0I!z~VR4dR%-tZXnJsI`z3-jgExf|tg>3^ka3uc<$Q0AIx0iWfB z>5Y?%w6bvU0ZF~@R zR4l$s5;@(v8a;IPfB^|c#73?a^ zoYrn1PcRuO9%JCYF)_WkJYn3#$szDktXqoVSDw`rKc1rOhzGp+N_zyaBzh{ z_THSz5YyvJvW_^cZFIkJ!D3U^GAr1&mkF>xk z@FL|ekxBd?gz8Iq!}KRO=@VQ9>jB9&m5Vf9%7jIMy-}6jsHdQd_#k^0UDu3`CK{8} zx44AFw~)nCc6LJB72*bGf&)K%^6)f!uq5j=qU z#!O9ZAW$Zh*V>q^Sq`c|r(Efflsp_dnbRrvfWU(S3-z~YCP%FyDHKyxx#8Wdf4Nrt z`&Z9OhS>4oCyCAAZ1E*NXAcGX8V8#CL%A)Jnn0bZ(3N-9ec`h4(2vmaysfJEvy~S326y7?%F^kB zt{UgSbf9N6mBvzMoh47huItZPwP&`>Xi?6%Y3bupN2t3%VRx!p7V7fO*)dINF$&Xn zpI;=tUu$lO7J>FGzpH_r#ny`RcAB)+j*eK48nn$&N9XN9F%)Fx&LXkdlZ`=bY9m@u zGJ{h!b5#iN9Rg&)#c)92HLsYwqG!`Nv$BE9@eVCo&HUA->RLyG!(V&0%ox~E;VwGY z|G94ZCDVLLmqX#`JN-A-`gxPGpersfyLdRbqR#@_2(@eK`Mu9uLRYRXL@JWAXcdce ztl~3sq5%g0_jbf)1U4Fi-vLLhI$^1?6wMu?1sJy~)u;ipZE6B^@`8;eRi}|_I-wnr zF6@4JW#4MbTjW=GG<6H^s&iD8>Ke2qmA`?U?Wd{NR(hf{{vkfkE*00X2c)5Q5Z;~c zBD{MW^psUu@a|M9;4c0u25e_<7v05R#3!7dUq0y7W~e;=?7zns z0yU<280%8p36oF}EI`jS<+aH58HOdGbmAi6>Z2owrfnsHv z0{*P0M!Xs$sVjF!kkm%+JQ!mOj{V@tQK@BW7fH(- zxQ5Q_L+p=Wt8(YMyPC}<em1j=P)aI(){R_^^b0}w=*`5^0A--S? z;00B~(kX~EBUMjE@gfOO@wnyMj_5%@ThUJwrt$ep#*uR0Z2 zSLNJwgJo9sKnO~3mHI5t6P39`J+5kJ_XJxPk4bAp?$iVZO3aD<<+f^lg|3QiFSS-^ z%XDSzlY5shXP-NLtu~u8cm=LZk+H&9TqZsr=9c%KJ*my6%~6}GWAnufU}NW=-(?_d zEHF916mqEGThE%ldcyj}+X@wDp#( zv?-@fGO1}PLYqSbhPdnRz4zY3!Qg2f9W~;g*)>>^02xFv z2Dkh9fYh?6mb6ZWrE$hoj146aYN6k8>od>jJpHA{?9MDrhP}q%(O1X3 z#iva5dc0Fk;Wh$nWs)EG8DiZgv%h8!Q^P%2d@Jbk$7^fZ<+cZtMlaeQ|eNlHncTiNqPD_@t;-ZstQYkrK%Pl z(Ty8-Cr>>ts%q1`1|;~I-rQXRKPgRjs2@PFE!9?$)+xa!L0eFxSs)RrOD$PMC4%p# zI=500oV;WwWC&@iOP75kNxcl~Lx~@XNGY(Ab0ogJt-W30_g_kc%srjx$+lNvy(qU) zWxTM(881|Nv;|#ETjvcJ8&$c*;{SleViJV2tn448M+5K#49I{q-fnG|x{SapN~wcF z_DmS5Ltj{KK^h;-!$OX)RovPVYU4UKD4t~j{P2h0ySz#zr^`mmQFkb-YI>H&t@KS6 za(z7+Mdqp+_Sdy*8~%Kc)CW!_6B24JRV->Fm%X>+yKBWCzkV)47>n9X2cCQrCtZo6 z@U1a3Zx`mbv@@MnD_H~mh~`3D%P`q3>DL=2DFHz|*oSuSoU7;acGZka zrqp|aIfYY)GIHG$rrDt)^ENYgF@?#XCToYjVIhdlRKKfs`SarInD+^O$jQjr60W_+f}MG7-G#MBT3a54lB%W-i>Vhf=`E6Kh=BHk^T+@s~a1 zF=4Bn-0;YSNJ4e#4$`xxZZfqp$3`(nDk37>N$E#H0aq(Qu-bqYr6wl^A+Uap5`z$w zKJS%$GO?b#^;AuP)m*{{1p;vLg8Hc-nPH&7Qg$`!y!W9wB31>@$>4~ zxH_ygi+}#Iy?tpQ@Lp?crFfOuUOJFL)r%`6WSh!L&H0`v&M*UGz&l53Qu0sP($tyy z1XD5iKr3_=&O;izkLk8aWE13jBsV10ng8J<-bY$T{1|Z#%C-M@Cnepc8up{8`7j(_ zpOU3Hll@Ap@wXatO!gvelde3&R(x-(vB2yo#YdH1N9hyo$avfphGs)uw!7*aeO((! zf-!ilF?s!-@zY8{NLV_hp9M*pk2U^huk}KNDf5SWl{tnMfOllyx3Nu$Gg%@MIX4{k zqjTpl!sEOBHoL1M+ZQOl0o;9UoaChk0 zOGOhtqA~ah<}Sq+Jcbdo=W^MQc!;%2*jA}&bJ9#n$-f*?X2pY)F0^%egv7O^HvQ}N zIl)i21lbaCxP|45AEjP5(wzKQO>VC%XzM!EnZLY-T4B`-xn(FD&BDIlT`2{5G`>>s z=-A~S?)t+`IF%>6uq!AJ-1`aR8yc^8?x}A-6TfeGuC;Y(Tibi2GIUi|wxiyf1!$%# zH|l^Ux5Da2fmwyUoBbnj9y0YTfB~ui*X)v(q>`vKoJ6`YPezXk^{5^lKT>7TnNTZ# zq;oRT)K66=4gcv`q$6>9*4In)r`;?jK0>R-mj?o@sp)88%hvrp$cP$Now-mvTxa&m z8bHw5&U(HPkuU~*GIs7{%suj$A&$+*F0@vf#xP27*-`2q1uKCe!1H^?+T zjZC9AT?z(Hm&Mf;wC2S!%$|XBGYTh0?H~fPwnUDgMII9maZTms>MBdUt+wW}U{G%q zb|1YgW-!s@z>u379CWRJXWQ?Vz5CMrTbsddQh&{zPalEvA-bF${J=@cQRX-zn5zc@ z2(V*`Y9Q7BpfEiG*1)f!>nMe5Y2KQ$R(a~&M}}DGK%GAKF%JKp&!BVqFU^B*SPt%q476wZn-aD^e8$7H*1n`q7@-(!m4Q~1DvQvfm~U_ ziOOZ%gCVBK8y_cHzerD}aDP+NDUFR~f93YI&3WXJYVq@1Dl7BO5qso%ld?@^G6?(% zm!-<$v(&xN(Sfnn&i4o>L~BE6KT79D_|Z3S{CS)B^*2v;Q6s$lzE6P^GJz5PApcTo zU`<)23vxUmsgj!orI@u4O}Z7E^$(7F8xfEWN;*K3u%G7kH7>=!_N*{=@GR(qE1q71zK`!$uW` z4uG%iZ*07^f>-NQ6<9pzY0+3@4vz~dhrraBofxt_axY%lx%yA5EjccEo!psyZ>>4o zCDhAZS&6;W-P#(G*=dC9(lkd4%#U``+Mq$Bahdhi8K5;QQ(KfujanvN`^Y2h^-Nzx zt;XCO?Lt3za5XBG&8W@-cvvuHC=_b!_AB|wlTSAKnX$Y=aH!CXBOEN{ioC?sc#|Mq~me1E2hQ7xvjS@e{^%L z+9p(7b~ng3SF8`}z>ll-5xxYQ64?6JwBEY%v1@CHfRh5;urHp#4ecztDr9FcuAnGumd0 zXG=`eV^M&%6dW?iok8T@XXAcvka!TKs!^(4a6oCc>5*o_|I-{)%Ce-W55JjyiUjnr zDf}swjkMZEL4ni~LexuRv*3U67uVN@NmV$5W?LVJLLar?{K!l;{r-Ic_CQ6;&I5f2 zV@<2hUa*Kw5btIUT`~ooKBdYz=rJQz)*w~Zsulc`5#RyJ$9E{R^=QxlWbri%0J-{* z*xj3F1c|ZCnO~<-H!$_IDx*hUBX>_Ow->6aRr%tP230{}ZEhjUEH-4K2=}gO5JGZR zQO)kJyYd5Z14&EN3%K3fYc+ZdL=oCRZf*QbYEJ`9AmJ})%#9j_poHN|-`jrdw4+Dv zzo|*phzPiz9sWw~8wc+9KR3>L2YGw+Gag&-}j@ zE%fM;MN877N;h$|`JF<5;&C-dthT8bO21c;ij|Jk&*|ry3JDUOLb7B{f$^|T43-^- z0uMY5*P}m5V?I7P&6_19b?Ok%tw=h2HVY;QYE@1XL1+|O2m;>O#e|HuMm*g5CWjm= zPtb4$`(@S_UwjjQPPtRC*%dy3KOWP7(%+_TR2t>tH$VOKllT_#W!}`-SeNUI*z#=Q z8`0BL`!xmPt2OGJj0$_+v=)_7$jlNz#jgV0oG(Z2%5=#xb96JV;5KdC!SC?4DGdrw zjz^&_#HKf=$~P-=i?S6SpPHM6e8nWc`Qt0d1SnrAginrLWczj!*T%}@sK z|AcX@;q61`)K-b#)tz_onp(L|D+})26=Wt(ofUOx>>VC)zTZEuzP{?8U%XS5Zz?sG zm?|>N-iXugiWQmj`ZBT{QQvHx!jda!`I=m)>Tq@H3T?BdNIPSR34;->9d)fK#|?YQ z1Tg9lPg?0#09Nymr4mtBa(vr|#`<}%7DB09fsx4OWb3G@21@yo zO9t5QglFJW>ktK(bcE(92dkN?%eTh}<_hM#tI~FRe@S;!x zz*_v&T%%J~$lISSKP$+ZmsbPsFaCtr(=<(F6PlshSBauo4w)qFgH0gct^Yyt)0rXi z6l$HvW^T+x8#uE@OSYtg!ukVPiKqefk|C$eso@i!(F&}$sY(CLGkvYCFSNC_JpDAE z+uADbYuIr4IwFnc>epPfre6HDGHbxA_Kq)>>6Jhm3hcC|rUeZRRbuUrHitsswHaV6 zYbchat^yc+}I81Hi0~o&Oxmq@BPzd;?Li{)~E3Zjn^M~`iN-t_lu8lAJm_= zXV0Gbb$Ea-RMp9SixaUKajYE@gXco55wAdXy$+fI+y2Xix2F)BV}fCd$y5r6>5d^4 z8;%j^tvpqnoJ?k&UL2!c4ne9B@h}0(t(WNcM$nxTrK_yzq^qpPSl5!G@T9A()Zi)~ z>{9r`0Rer9 z?9NV_B>r|&w>~*ZEJ)QAVf6m~vR(Y{izgy9Kj^skVtv1@UN*-mp;LD2f ztMqmkztHMvvN&zc*vR(*sI*gRnT&e#juaQccz|%zII`6csr`R!K+&z@=~kto70G_f ziS+l>hXj}%L#opxwe{<$tq-ay1@|DjvN^pG zRkl79_bEiJRM-Owrk1>IF!t1?^Rnm{wk|IufqpHbV*W$wvOepESzRr*#Gzd=d zy9XY)uCw!SSC{YMhq=X6x66UljT`C80Q4aB<~3mg>Ru!M?d#{Gpj!<-{JZ1ga9yA- z(#XyhAL6>EOesISe$u4!!$S??Qg&6K&r~sOJW#+^q3HBHyS38nw$!j?P3J!N;DhHh z!zC7=jK4W`{FS2zJks=Ahl_lYc)Ak2B*cS zNW3xNn=r>OxZUc8**)C;9t^I9JHFjM+3GMMf#Xf(AZ!6Z(=fF4%Ud3@%s#xWMQOIk z{ny++P6qrM3B=PPOAb0{O{3o#M#=w{@M`43rhCTt4yPn;=ej`&WiUBSmLi{LP7QsB zbF3yiSg$aRO#G(bJ2w)uIGU&%2z z)DP|W_Vzn0)9>2csIZuX+D$i$&*T-)ol{&~IB!1KqH-|3T|biUmw=8$$|}j$=p{{M z(-^Y!$tDBB=*j-bO-&rgXZMSJ^`yql?d-!oFNgswIN}9$%%EwTZ#COh2I&oa(dQeQ zTd#1r)c)Ch+#TIlhj&K-kg*5{|FUC>#bJiw@Q9vr00s0z+rK$*k9FeijkRdv$SW_r z0i0d=_=b~o>~zevX!Oobe#^<&C6)IGc|!V|O}fz0Z#%_R!2K zDB`KBXAaEeFb_0jTQo)0)z*nQ{X-=ty9rvYk20QHd;8*MFS{zca`}RSqQX;Gvf(&N zCgI?>JEmA&7T5!?@p?6QvMT-L9pCKVZ=ZBvbCX~;%j>V)oj6nFK{}u3(X|iHt@edC zo>#@GFhXz5z<6D&H|taatlW3}A%3rfEg_?6P45)rLM#$1TG6MPW2M4W@jzYkUbPV=8*hdT@u?(cVcs)$bjcRY#^?KO=sqCx6j~LBZ)% zO;|TK(d!vrJ6V7z?Bq3r++B2cg+t$OA5Pz0@aCYD)aWN{{p$8ZrkQtd0mGA7sJ-%* zS;mV$dpx25D7@qF(Q`Dr#J{~i0OW`~{stR|_nC*8*GnnXUnRIUQoGaiwtns&$)Vo!!;WDyIVlb-y!1w~^EzSMH@Dwy znsJc46yE6NH!l`;etl?7iPGs*< zdt7kDo08i)!PHZog@)vVrIrNjzF9uD@g-CL2Lw)UlW0>X8ZdByNy420%rwlZz2Bzk_ zB`ys#X8AsQ&sD3+l@ReRUU5+@8r7NPYwuYZ(3z-1fOQFCxR9&VjY|%kyH^arw5<(w zDkC52_Bq-b*|XyNo%?auU2uX|jKrE|;0TAtIKh)G`s6!~L6)@O>o=qF8?k7x0!fpa z&$%-aS94Q)X|);8ydc9pR1U+g8gDk5RXQu4dE)H>@Ax_J;cm5mX7{Z)!pK}>dq_IomNy`xN_Z<+^yY!RtksyvVD^D>=B?!F~~xI8ib8M zXqk5VHGXpPHJ9x=)$l9v$;Du(kk4Ut&#G@0e|WDSo=}Lq%Gk6;{m5RBO*FW#O*41;>nhNYJD~gt_ecg1%OI?D&Aa8%7 z4E?NYOY>*WDyk`-GpAeZjetGi2M5IG9=6(OKVNeS2>Gw;gAk_lYJtw5^|1tPw zajL}M)$InKM-fuEy=-sPTI1B@XdUIEm%BJ|A+z@O{+}Y=`yFi=?zU!IrmZE=;3%J8 zfYxT-tiv5FmUtckE(7MD=Z2U0KSug&p+(-!Pw-@t|}^85d_XDVz6{u7){#IUB( z5AXcjJ-h4!H(p$&u-fFImqpI)3AMX?&LA<0WgdTk-;A)J#uUsv&W;^7U#hJ*nDU&` z)2EY3my{0b2;dy4ocKkrHl17j^2CCsvTBz)Uss52pPR(RMWph$gYxc^`Hexfe?*Q%M!0dd=qBXVy#Nma{+gjxoCVeLur*4 zE)y%;*thLxv^Ty2-M~frU*>kiVkV3Hk;LA~W(SUgO~c?3-j#4dS_RFAt5XDFde z>9_!vPxWAafU58Ao}?-(z&4DCIk;2fQX7=E@|vkpmQ_oO6lzGo^NHsp-tjZ5Wk$22 zbItwX@HY{i+1yl&tyOP@Qje8~@5PB>Hp`nkee}T%HyGwNIj< zLL#Y0ERjO%#GBc;$2Zub8&_AVTrNfH-RC7%vLoUKH$XQ$)8znlqi1Ux#pT=u#kxFQ zrM?iSu-GlynXQ-tcd71-O@9d>q zQ}YKE`^3+yF|&Jyt2FhjnVpMUC6sMOp^K#b8S!U2Wg@a=AYbAse;L}##yxhaHFUv} zVg+R38g3K660i3-undr?;dy&i0o$47jmLZi-ku)h=ai2=De(nmqqWxy*OkU!E(0oQ zGZ^^CG!CezOBGFeLSmP;ct;`^<}c|pln#-KndI^X-QRj}!;n{}drfy*ftMup09tkl z&MAHI+>vrgdPLBBO2@@CCY_tW>crQXsgsvuP?ljfOUwwK3av>E5pj+k4`ocOrpaez zcVoz2psH@I)!J>CLFF0bwu%y=u%@O!sPx<1Uwm=!Ac#@n7Z{;kmcRL?@a6H$xX!2R zHe~*`i}Go!UZ3r>cEje?rF}*{7#NLu;i9nnycu*WCN0ma^K~?v8%>P??l))*8RYBk zJFQh~q})lLPuszIWyA7AYcDcRzNJZlK0@uazZNwfi?y*{Wsn78UUO9$a3$}yKD4}( z?F(HK_)Ev5l?(C<7xdbdJ#+jLUi|BRRF4*50x1zC=S!FC zd-5UGTz2A92|C1`(Ic_i>2jPzE(VBfi$v)oB_+?sd;`-e=}D9i#VWvbu?m{+6^t7v zj)OdH^yP5)r$~hRZLp<5yu5~+0egN{{O5ioWfCznIZ)WMe$sv>dwiWey6M~s1u@Pn zJ70V}5UAQyCH{~9zU(g&;yuzn%R^8kNp?IcFxF@VRb>~-@x|b)Ak~1)7-{@(Imwv! z4>$$huLo!>}dAV*zG zcKsE1cH#=|ly0EW^q551EDc_`U~eUwV^GOb30&gAh^J?`93u%;=h-da9&TgjUHR0p zSH(MD$3N@~_;AE74N=m#;&5_@qMi_wOR-OZ2xIk@6yz(Ei>9dInY?j85G&I zD#NvpJl|SdyJ>q558j*j4eQ0joe$69X5Jg+FgJtyeop-7zG39tkeVQ1D`vA)8SQ24 ziHj_O)r$(j@+;Kue!5nC{SWgR-tMhzuE@75$1iBmYBiWoaNrEWA5<$VXZ0S=AMEvJ z_748jkm0xL!T6Z?qtl~O$aOgw`5L}&oaqcezzAREDdzx7;s`ctut_=FN=wyvnJlUoC(Wra#( zR2y>a_6|f)b$&Bl0bo#7vcv)I^u)>vnjEs_;^ypdn5mda{H`(Izh-5AVeX1GT%_sj z#~*)ueZ%*T=!ycWI2|o9w#wbMdQm=9%5qLQy$sE?U4PoYq}2#N504^s|LI~(KEULU zn>)mu`|G>w-s1+FW|iCgetW&6sc9TH?xo`|^AGT4QbLLWd9u>PRve6#+Dv?INxIUs zWxv#KuB*{^O_~xl7gTuka*f-gQ8-GwTU7P2{#cEwe{x<8H$HJMUzP}AugzRO6cDh& z6q(cP_H=i$?Oo_OdXdyT0CtlsbbM-nDJEG{x*cWk?$E~hv ztTSE0nCWH)qG-jn5 zaLGv`O{0i{maK`4qk|QSAFv<$F$l;i%uzb*DqfBDtjt`Szky=PJR@yl73mqos~Jn(*{l>f3#x%(f;ccO7NKKHwc* z=JQ8Po)8bYn9xoF?cul~a>$ZXHc5FQV4;Ocr<^u+2N1r^yuSgqo|{bw-!X5Ep84pE zlwjQlNP`5gJK0Wgem(nHlz$P6<$V0{GhH%Ud7;v$%`Pzcv(LJ1xjs63PQOWM;^N}> zv$mW)>}B7^4NgTtS%C^H$&8aRO|e5&Se7dv+#2mgoq3!15#~x;npe}ff%Qhu`zc{4J%hObcLVg|EJxCw) zV5qB9`lFG0WlPY_ZqRt^W!M(fHmVFd-qn>T^mcLIh?TGIZQqA|&`JJ3)3IB*;*fYBr%CK*|0BMTkqPVk+mkX{Qlq*M zGFmM4n9`WU&$z1+XKw7uh(+XP2sn1wipc4GA6Ck>3RQ+$WtPcRAd1uE8JHjk;yYWf z%y21;c{)T7Z$jX$$M&()+dQ@EpsJdS1R|$b%$=G`bZD9JzWkMefSAZaV8T~Wt2I^G zYLh&(Mdwn>WJ;APw~U(@P7Fr)=F>8Lz1}?Uc)a5o$A87&%{!%wWyMjGmS-xfO_d82 zEqG}joqqpRfu>ApI#--{pZU7GudfK+`QQ-K2yN>wI8B@oHhey;Z}Zh=IzVA@BW$OD?FvPPD9I#p%^x`${+}$tBG^{t^EeOduWO z9Leu0UHszsbJIu5j9fVJxQ+6KMnbZF(A~|pBow^)*nVyqHjz7-yW=}?m|GrAOpfvm zxI8nD{|5Hu!WY*Al$VE@{RpjNI#eQ0Nd?VRJ|Z=g8S*6jK1ijs+O049& z67qO8UvcamZZPnmY0iOW5?H9;-fUd@Sb+2mn-0#_ZT@Bu0?e}b?+*aPzxlqI76a%k zkyqzwIZmcDOg?nwdmYCT!5|*TiQJ8csqC)gOOE}9ecZIHjSVG!#|?p$9q5I>fP5s&23<6iF=Z$IieHGa3*l|iP!RJXQi3?5wm&cu`k%7SWG;F&q)+@bM|^)yTNa4 z2W82rGiU-lhUCi?>IjDKXj4LYqL+N6U!=C^w^1MABKok3P~&X3=;P|JwL+&w;!GRV*g_MEd_@(S{OqNJN zoq&I2_foqgecxHihjC{!P87u@Uwy@PKw10(q}dmcQkEBkuhXm6cF9{$uYE1->g|W- zx-!ybV?QMfy!zN(+)!Iv+hn|^wzC%#+n!T-41QCVp8ZMuD0u#ukg$CDSDgI+d-x)ebP^G znvp!19(vNV&*VE2syIJz>@e#CS<)Xie|LZDo9$|Y5y%&<+?lV?-1YqP?1dLtpt*T> zKx;D9r~5s>s;S(trAM%-#y$qv2x@j?&CR1e(4ygkD8R|^Etu9`JoS$6Q zBmfw()YsLa6N^8Mz9N3)8o&NJ)@-b8P{oCoTAiOGC4!Nn!3=L*_C{Jd|+^&KjQ(7NI3 z@XdAN`Z})QMcE&|{dPtuw4$SBho#FBEJI6vh zM$aJKCgco671CKQzGtbdvXyy4Srd!$2OTB0@w(#NK6|OItd^NN9Bt7;8KQgROpQb{ z4ythhAz{|tkx1fEK9*qd3dys}I?cJts3MCShAI7n)ZnVy_E_UkR5#)|qy)l>F701=iB=XYb zuP~MPcXr7&ZxGD~pV@ZohxYd0`Huzy%i7zk#2tm&7_zfb$<}fAg%a&SK8&(t^6^iw+eV2*dS^7L%sBF1Mi~$kDQGAC zOs*+?#OZg`&Y^^n__9Cc?oLc#&u2_p+Ng0UnpaHo-uXVjQgg*U4I7?4ew?kl;^qI3 zvG;&)t2*DuIrmz7?`=z#Y9C1%V6LreB5@NL!oHW{L8yD z$!;iH`FT^YhzI#a4-`^*_KZT{t2S( zSXeAls|1dzu5wMSwpQP;MAf;dSV+G$%~P(fC`XHbWhHY_c0W2zO%uD#6w;w@?~!>r zDrHiSLg`CZ!d09I9efH$E4xirSf#2QOgIlL!}POI?k<|>J;uh3dK3IJc+;aScO|*4 zqf$Or(y4Pq%@*W@x+lB`-ppQ`Vd4JYdiu*RNsP$2Z@4$xEQ3{)>$*Bkq5*Y_OI##% z)_+we0~wt_M^X)V(o~@5j*&HBtjIo6l!<2s^I)czJRXT;x@E2|zyf5oKAVIs3S?^9 z+2ppGnwkqWfmNkKm0D0dr&8H8$0afg3nz@zfHX(1ES0O#1*})NPgYk?tf~1)RaG_j zW>f9@Kb{Gi>gua?a=TdJF7c?Lkm>n21<}gy7!@o!VT5KuXkmwvKhc@#BfCcPuvGDk zal@%v%Iy<1UA!Rj>Ph3GXK3u#bl)iUj=l zLl-8#Mhf&_oudEFkV3Re?|y{-`vO+^{Xa8;%y*Hp0;VqWCTq#cM&{wl?UhezTNm+# z2FIYA`zINv*Vbt)y88P{N)n}|2i<79{`b}V^DC$l`L?c>`FZ&cu-GtXtxh=l`Zzd-Ux4Dr)q)4;bJqTnZb znpi4cG!7lXN#t@g+3eN-nc^UulZ>(?6~y>Ei9dw?;pf@8!#C6=+fwT2^m#MlT3c6} zhAE(=OmVL!IW&K2P?{R5CjU-h%#x?VEmoBP1I-dysYz5);SyHVYMJ*IpWMIL3&vYP z@vO}^T%I&%UTJB<#AYO}By0gG?vFC9+)}Fn84VlFXqcL+AQS_z-4F48x(K%0opWb+ zi=8_HquzO5Px^fMsuMNO|6}fAU_0QRC;EB%@yaoglN?~WoGcL9%qn9iXrSG01w~MBo z9AJ&zg_#>W{P5%Gbu$87cZ^JK+p}$3;9txFYjDMMr=m!18^1t1et`$!M#Z{Wh&KA* zv){^xnE5kK&o_nI@`C>TrO}jIPEf}M@KF9-76Ie zPeql!USCyJcGy2x)weQLC0Ds*Vo%rHC1uO&m38MA!yjlq`)l@I2864;#?zpDPqp26 z_~$FL^F3)=l0K;H;(zL|=fe`p89~3@jF0~h(azt0J}r~Ct<7W`t-!9YufM#m4oc@) zZbJ(>834?#q6pnRhC-2)YbXEWr1ZDYK#DWp8Sm^;WWd`2 z$DiDEWkn|;iQ3Gq9X?)$%v1%q$441mrA#9sQj3(*r#iOQELpv*28Otxb=OWGcCP|S ziU)J*KsE*dQISW@j2?ij6XEmmwt`w(YAvbE;K57UkL$$K%ug~?{s4BZYsg7%{K`nx zwX-Sv_t4>Y3A)ZM2X|dC99~L$b2IPL0~JcyI-1mxsk5iXHFi`pvnMK9s!hz8JE=p` zixc%?VEdXit)G$y)T{6H1LP;HzwVXRmABn?+sf7tlKRXYWesMCl*~r;Ambj40~yqg zxct%Y#pO1dqorM-bOpRkgEN@*5fQ5W?^TfpKI48vHgJ1tcD+bFL$Yt*&nb~%=AUfO z@I&QEN0(n6oi=BBLSyf2=hvWYNqDuXS#zg$NP8DFFtgXK^PS#&<&`ZQ_Zt5{b7!P8 zv!}AzLQg|hg_lf9qIBX%DdQ0~&I>qytZ5F%&t5XTjT{>oAiwG*&kZkz)k*{6_;Xf+ z-^&gw=YO}PQCOG<5g^not|<^;Ve}Q!%>9{h%w;`j_cRon6*9!gaPo=^OPf6g%!u4d zE2~72PP3X=Y}M)4uAeq%yvi!-n^oR2%&Jq8tvx-No7kPho5@ox zf$Q!Z!03SfTd!cA<^B}gw_`mWq$I3fe8Hw5**CnI5hTeQ!J?KLox&s6)wSU5edvCA z5NIWe?xYuR-r$IrPvdB6zv(q_eWp-f1qC5irUDvfd1mEJ?AGBOpB+HtLiaMirXvw^tyhwecxss0{rcKkW4EEYBD0At7#+lDV8NBjC%oy|S2 zx3H+NZ!lypozPQgEgYD@{VR2In%RsKB7m&k1zD}g$(0HrFuj31nv0h&ydTY4jS9`u zc>L)^;-z#t6QNSPE+xT)lchnGh3a8@KKb;(jeb zLVZ6g;qwACSf%eqHx!R7lF~)D_4Ph5+H`U^^24N`?8(TXFq1t!$liEUtUJ}q^`^LX z&R!(y?n5OR~)SzW)n*}w9EJEoBX}RC9qRk!zZ7e#cIUS1DCGh zK27W0;woRQRIigT3XJMAR+S4qwKZ;GeY4?>m}mAO$Tel*a-Wdf%y2VFO%ghp zj(dHO?aAE^BN9oKD1&xnZwlQc>Zp$gpAu59W!Ym>Qu%C~VOhEie|n3pdh zZ3(6(q0_8536u;bINdN?z2HW4TIht;2RdprRTY|MZFRMz#@f|sZMI-q&qXF%x7lir zKnMEyMdhcqW)pEJ&${q z`w4k}&YWw8hB~>+7-?7L<0w))R3Xt*lrP!n;M=CrM7Qp|i_hDSjik3Z_uw~_KgK_# zaLi(xC^jum|C@(Y~rJ9`4YwgCB{ zle-~6x?`kocrn>y6s_GG=gAuhB$!~jjihVGa=B5wW^WANrno6LdbPk5(6xOzxz{L8 z&1zC8K#qrDi;4ndSmiSpUf8>B5lBCaq?Xw9Ror#U9zX5__hs##yXUQV;>spGt=V-C z)La0^_uerY)^HxBSfNSNk)V_+yZq_o&E2S{YVl z&OO|*pz{Up0JAEZd7jyx`K`;1J{=%CuudY8lNWT>FjAe-I=#2gt}!$;ddMzfxNRDK3Ql9XK-)v#DtN$#*x*cNpg^I2c2x5hf;zUKUI!j^sSCsc+t?lMx( z{c>|E^#n69b2r)IHn%ou-P)#>1F_fx)W@Wc3z&;D7n3_9Dx)#s2jM|wSSA;7kJngQ zeVRITb1T^wQK&UdrHn#otH5wuE`l9Azl-VO1%s{V*j7QEuzIPz(4TqxbX`;JvEUl+ z8+#FOlS*2{7Kv9^YsxEBjp~YOM!|h(GSWU-45Y$@F5>cW@1DnyHQ1j^QRJqn%B%*+ zg<53Igb7_$4HsN+zNfBu{@M%J*zi)u9W?seT1-h(TSq&LM+$#@8{08*v`1V&Yzx1k zDOxZg=Zzaj1mni}h?6@_-smMy3}3+RA701UslSqS&ayNzI$C}lq&I^8eeOc?ov&FZ zZQsCvudZU&tN}-ZecX&8v@3dwr2Ux2&g@Pr!OQ)=-`MDHGIddn) zzI@1>>dkzbWcJ50U&YxeoYn)N>?PbL-W8y3>!_NxW%q`@BE4kOm_5qw%_*=n9jk?t z(bqS_>zzJ*z)^1RpFW+ulOk1#-*L;;oQ$-zsXV0~RksSwT6mAuaM$k1y$3Y}c#jRa zs}|6l8NFh>51#V@=(Ws?nRe1op5ubtZdRMjY)g=Vo*vNAA-PU&<;uf*{)|gFIf#JjTTYbnt+krc=e;CtsL5^wd33=7NBCd{p113y)*t+;*~gco{|+Udh}O z<8Fu(Yn)pzKtFa|X4HuoZF%v)cvr1!a3XeXK9I&w@gkcy(j`;|viE|F$ta6*SDMd( zU4{PqJ(!vKYqF2qN49bPPf!I$G}4_;S2cMD5=hP`1{f3fPV8FJ9nZ{3ur=j>`H~xE z>xVZn_6lb*W^1q~d!Zi$XCGibVbwe~fNn}w+ab?r%&B`wi^k0y>(N^*69ecI6gk_g z!Jfyh1QFuiepa1%yto8Ig=99n6d(ksY9`z@{4qpt5LmdGsZ+9StXFL|_qQ-onW!eIkc%;`XfgMPo}td#RjcY6 z>sBq}{vq58x=i6Hw`ybpsogFS*c^=0oH-@I^hm6u7)R(TR+{V0@F2Bw?mjj6sa3=} zsM!=jd}u(FTUT#dV=)i5Gg7&zp%3s!pc?jY8*WIY9%$ZsO`kY%?l9C9_cuq>^rD3`Y+k^!~HqbiVC zY%=ih1jN-H-N8z6ce;q&i%HUyV9{wd4Ah_rtGZw1kVq)h^XJUj3}G(zCGLCr+37?s zoc8o1w`4BwRo2uY@Re1T%g9foQEtD{EH(z((LBo}#ue#(4demptfFl?Y!JOnZQpq#qU;n6CJJej1jwAvUl)l_IuPCfv=OgYk?VpF*6Y#N~*80JO! zxl;U9(VN3iZ;udE6>iS*{j3I@`rnfl#1Q)RinGJCdY84w@v8pF}V= zN$d&AFj7P;gT%jOyB8P){WcaLDrO~mz%+rM)u%n@aNllNG6fwc@=X?tJ0iMQ!+EhDM z>VaLQWCG{vIFuAHPJvfz)DF=@M9+A>J}#_ z7F%tSf+DlrpPp1@4QyOq1@Zy~Rv$&~>?j+7%AiGfA6i;sSo<8h`Z0LEJTqcGgo9Zg z4dIMAML1UDV>`g;3mZ6A^#hV>4DVctGP`8amZ1K=R*l14&>=85$la}ml0s2XWcS>a z!u-FU0FjF;VsdE9(esL4P76wi1)$tH8#*0g>Xaz#DUI2pX7>L# zdfCM*L8WC7mMvIyVc;5_BMMSMOLt6Va;Bnot3B59UFIQIiBwvkuI5ER#-yXrs#gZ} z@LK{hPeo>2x1&d0DtCAcN`V9^Dp6q(`CaDk)I=cEFFyMu`%C0$SpdeedAdPR8!b6+ zEq3ewQmENh1lkY9cZVP%9`zOAQSe0;{O#z-0T|7EO?oUEgxZ#BI_I!DsVMi#nj`U6 zK$(=RvP>n!pa)4yI@KcSOgg~G!JrOAneF4{;F~KA%PsI6gqi2rmBWXEh{p7cylBBi zV2xJ`-Dm3`S5=Yec^~^&_mBAQmfUh7Z?UczxpA-G- zNp4!y)Kg6dm{dnL#^a9x^DeiCElw+`Ax9Xp>iCe)%19#{L*&=tRhgTdID$gC9RS4q z5oE7bk3Zfl0@9;)Pg`cIJgq2|vql@SaX*nl4Cb*RoM z<55EA>YOoJ6I1W`z>?}5`ru3WkO@kHNNq6Nmx47&HepG^@@_1N`x9yTTZ(g&tHGAr zeqn9xs=B&(zuK*eN)5W-b>8;qbkWoYPjo|>-0Lir!F#gXDLJNC#*B{-|Aon9J|drG zeg`!8J7C24JM)IR{(QH}8j55}<;7)&n8913g!Z8AI9IXF$XJ??=A|IYF6a*mLK$%k z#*#N>)4ROggtGACrsl1Lo8DA@y*VA5Uf98;EeiXDo;;=#IZV<=rp$J4jWxvQx# z*raMvHU`d;rLjMB+bAO@b4zv?7;(;}{DK&Mp5&f#7boKZeF+$Rlgwp?zRTBu5KHb} zeDR-+^|J;FG1f@vUF|7xrjw3JN4k#-bC;46$+Yz*3L*6`7%0W z@jv-Z77~MCg3sDn==C)=9*| zfKpZ~bGp^wK~NQ0#E=?z_KL!=wa6;A9%Y1VG*QU>H{y6_+Vjs$0ymRj-2JD<|2xS2 zx9gp7_~ZID8&=f`m0*WGcrcLU)>xF9rh2HGK*X-Cu3){I$o5qgLXc0j-Nn7|p2>lx z6ZHR4{!ylowK-!Ut5_#Abp$P$HmSvep=WmBjrL15dP$e91JfFvZVd!>0xz&B{@7)W zJ?%yYuHu}4hBl(m@DoBx#vm$q4tVS>(zE}^O&To`vguxx$&hS@OC|8~2l7)A{HqxmCi=ZTX@B3K%F~b=!OI zk?@)m@4kC`L|!D1tBOc5IJ1OwAU23pqh*K?yiuhbEgpIawgf7S_lKa2vkL5wz&9s? zYfpN0*9BEo<0A!VDDCPgm9JvuN}-~(%j^V^9epmdcImBp zW=bbFtf^i&yF~AqyNIdc65XV^D|5(Ph&j@VQU$>DE4qh2NrW9!0n>3;S=4N!-R;-P z3#C%9O|K2wyAe#-+y({O5Wezn+_>Ha0(pL#hu#|b>I+R$Kt|8GN4fMHJ-$$~*__TffiLwl&Ut^bfgD0w zZbQmocg#;ST1iF9C(}r|p#F=20MeWd5>@y0IVGFaU&ei6<&*a5uA!8peD=jjqr{jWgQF zPqJkAY-LJhtSF|WZmv?DkSS{}S-N#sm&h#dx^(lRP)cJmrrKDQxH2wNh`GJYoXm}N zl+Ps8i|mRtEi>pTkc9g%c;wn6K@kRxx9>T)r~T%V#(C4yVEL9C!jonZf98H?F&#?o z&98e_lng}8lF~^7h0Y06p_q%2wtW;CL7KdvSiS(?M~046dJ{*~Dl2L%q_-_=(*S#6 zp{38gV>(LqNlzbjFTA-!MRT4EnaG4QPm<4ClTW-l3ox$8p}iYlNU()9=)G5|S(yu+ zm)@e1WVqSQO<+yKpL>!bV6;Rglhj$F72Gdye+*x@Z>Y(#gqXQMtw!!tATz~HMJBQ& zOs4tOa5NQe8D%P{pLOryWr28F1`?j+X~lPfSMp-1C}_Xz;GV!aw~Yc<3VDp)NV@FYlSD7CkzOc| zx#TaOM$zOVI+96N`Xd|r z9pXm!o!!i{`q~+kT2m`5UtiySL+Ia`|Kg%)w)Y8a>u7bI`rjz7&>SD#PI^uG&(zqD zs3Urzbo}>26kWWT>B>CQ!rYyiSVSpV2ATh4M8PyplN);}ad~w@azh&bSVQc>uJzqp zLVLq(7x#AX=ruSgDka;t=iuJy({oXJ^ZnPNiN+s+j^tRB-ggjUgv%j?V1n?&-#w;@_8xW85)D;dJ(-3rmZ7 z`fnCl?Gje6mbLX)R&=hbpd1f^1`EcENu^4uP{^Q}>ZNiM>Phq@ixXB3o$()`FN&>v0HyWwtxjf=^;Z zj)`ylWQ%@}l>D{JIb&HX=0PQy31!h&OcjOa(gY)}m=9wGVTAx(Z#F!eZiX4{M8rF`;8l)Kn!;$SS$(f8<0b zySRHp{|vdf6->9ba;j5fYzv6Bu0FfLG43}ON7PzqP3^~lemija(fw^uLTt+=)V|Y0 z`#2g=Rk;OaeRqnq;1BJOo{X_`84zb;rJBb3sL7kdEXZ6NW4_KPqG_?A(oNaP=yCms zQdN!~8Yo6w5hV>CfE*To*dUMmZPw>#I(S4CTcj%al5yke5>2eKGSz zMn{s#vnukVtco)+#| zUK~zAyXZ&6K?e_)w)Um66=ixke6JY26r^@dV?xY^tkQ=3El%qi%e8!nx)01 zdcnb9ISAVir^42=W0W<=xIB*Bpkc zMD^)`J+$N14NoxJgr!GPBH!DYZDb7nh|4shLs*KT&5IJfGq6`Y#GHpjTiD)Cu5WLj zH$2Q*Fwy&M*ijsP>MhZu|0+CVb%ESP=MQP`338u@#)X;VnPX%^>)tbG&KzsO4Wy&A z@8ancMn#KqNndg+b!u_!-O7xV31A zxbMG#86Ci%(*o~FR`7$9(1g};{=}Yh8mOkBdrVV({AYYk-I=j1)FU?dY6?;HCaJa- zffm8;R0%+VBH+H`&j0jNa>MD<+y!sGNp=%8_jhMJ&RtM@aa0`G*z{6N;Y|iW;x1_k z7t2`ze)Rjm700g#preg#-MR15*1qoU?$x1aXj7O`Wtu*hyY)d`iJB?lu5Vd7Z$hz1 zs}>aYPM%qdyFo?lzMMCnJ?IUn8AS43@#idVtQtBuZ_bw#sHH|uA#cKYVdTyDsCP~k z6z`q?jlxCn&@ruTCLv6(a5xubR5dxZe%p)yAObFqYZLgDH*tE|z? zS!Yo)ZY{ONd%Mk^zPJs2Yz5xMxf^^x@2;FHk2GZd;SDzBy34XnvCuC$Q$r>6dvOXf z4Wo$ApRnTLf7c{LdT$Yh=N7uPg4ge+|NctnIX>pI`xUKn-%r8F9@Cb1?`5}`rj>TJCE zhdV^>>DUpxtcy8{ahVrqwlJyC=NSVzBdu?(mv!n|0!_;4>d@s|z@)A4EZamj{BV1a z)1)-%Z;f$BDKQpx%fjfJn+?~DzsETbfmbpkFO774f&_}WaisxXxt|M8FsjOwG4zi`z5KNb0vSC@ebBV4k;+7Rki@W_g z?qO*~U75H{T2kqizyBi}v#GUW*@hOt2Afw5k*ixP)@*6R7yh;L$$Q=1q4zTF6spCD zREYx{yz)Xx@v=)os>Br=%jokJJ7S%eEOU#C6lI$(k5)=58Y(40O+6}>`fAl|Gl6ok%WG)%fhl&e{>{`jIuyQjX0;!T!SR-txMTO48W)I`17 ze%EPE_kmqUl8hNheMnwhjj`=|ab@E@VSTNkQDHNatE93@S&^YwqaU&MMlsU>eryh66f##A2{UKSjLfe57sb zypzo`m!e|TrLjADtCnB5(TBmh^~+YwD}_WC@fnmXJq=}$Ls5BxSyJp9V@HRjOd-KYe4AH zF{RBdkr&HFj=DrW`JL46*UL<;TxnUL(k76(6=GLosurrP7!a7JSUY^$ta{G|$aOgi z+4C0gnNZ5_0<)aWaPmrzx=*=66~3mMNk902A6d{J1Qg5;N7Le2Zg;~~+<#ii7c8z7 zp!l|M)+y#tW~G;TKjS%{5v91j@n#B(5RjX=+4OPaco~?oy5t5uLJZi4@+914q-iV? zCp;N5=F~ftO{S)v3go*LUHdzooIuC5*B@j(FlE+Nq>e^pC03ViNV)GD>blM6y2 z0zkl8vEUNN+SEf}#vZXiulv0_rge_!jChwJdB%wm?~ui^O%j zxkCp`E`gjMN%(_w&4&~$gPbF%0J%Rt^eqn{@+LI~1Nd$gVs8jIkIXGiyRPaX%ibOc z1T;3bla=d8PrJ@#5p))qod+Tcn_bbWu$sA-sk2&_5N2Cjr1m2CNjp0IQFi-w|5xPJ z%ygGaf(W15IY9JjQNB}!8lY8PKF6gt1-fq27p3Ahvpt@ksKKmFhsM!Ao{8|@D+1R} zQ9f|Z8H-m&7^bL7Ys3aEJZ}v$=ey3^n>$+6xx;qRpnSxcg8=2L-4s;aE(G|^ZrC!PghGH+T{F+T8$@Sd!^74lKCN;!2(Exw#C!e5*3tlCzIWE+B ziV)>X9mN;~dbmsMO)GfgiC-{wB+IDGYC-WO@#b6|J-3})xAZrxN3q91{G&DAg6&fV1VC3nMb!CfZ6 zAP5XG^}A69bB7f+nLsF#NE}YIeqA?N1caWf&V8uOzE*CNR{4t5L}xCHgv<^L<|tk* ztXpw@Y1!gc&vo){%R}gIqwGba&RVwG(~`Y6=cqgyCQv&~BO!W(sguUXsQhyXJB-O4 ztbF*NWyl}#2T$tq=mZOyhcjs>^HoL_V76o~H8VY#hq!qBA&{^VN@~0~`dOSi$XbKJ zY`!RW)DG?qobY9C!pt^*OA~nu6lnLSQjHIgr%#^z2%Y-0w))tJwalhL>v0AXAnTcn zju<*ejz5X?EK%{ISB&tLuablB_Xnsf3N6hNsq%V@AMMA>5uY}~GtjHTZOKaL4-RPF zaea$d-mel7_aBg=V2-VtlyUFOKXF1IiCox4K*uJLnluV@x<~}35{X(YlCrmi1VynB z`d8WmRx+pC5UryPvo#&Jb*rOmrxa*3;)%;Uw(BCx`-KQK23N-PTs=L*wFo#p2sq6W zhf7`X50KD_x&$T?ZY9dl73~w+f8WAXaR2_ZP86R~CzJAsVf2)<0DnxJzhc4_D}ZYh zJ7;ep@5q+D7!jaFu=AnW!oBa@+6Jm%LDR8USFV5Uc!dz;ReDOpu zD5l!wLOIjN8|=R~PrrxmJa{{o{M?pWHx}SICQ;$~slCYpXCe*D0}xECZ1C?3i0h zf6s%ewG* z#$XdnI3M&D<}qJ?&okOnnoFwU!cinZ@=a?b^4g7WYi1Vs@4aU{^fNBm$l8O zE!H--f$H+?d0k-o`d*&2*yo$u++6d|UucVZtVUbktc%aQdP|$!A#OhYTG z5|_N;>Q^>|xm`%Z1HwT0z?5WDTidU_(u56V1HYwO(k`jIH57WOyZhmgp$pJWg{yTnuNz^E`G=kyJY>hID zIF|NZv}jbYVL$U$w$PIcm)rNENU@%4W&YMF)5%!5OCeC|O1Zz(uUxaN8g6<) z%cZ;9p%`d>>Ls3xiV~$}$!UB*$)(USmetezzEOWEyF=ekh4965>Ht6oxJN^qyew0I z9E1|OWF*)baUFi3rJ08)%7UvT6S+_P*K~E=+A2d+7*GRndqv78_w1QF*W~q*wOw*g zjf3t^xu0ujFqey(#iiseePlscZWTw*j~Xrr=qq$}a;us6LXwiuyhMRoBZ|%nI5X4e z=9kgTgi`?AOrc97V9JBV0nW?HxxW;0ZB+KKT|lT11?l*kZ@Z8Cf;p&2?B7(2>bRim zQI`S38O@G?l`CGpwo>X=G~V&{#)pih;~hFfbIS$7Dfis4y@vAnRc<5ZlVEC$Vutdne zjZqLhv=g2dwX8IcL8Tc%=m<#!AK{#@3BI;w;BmDdWtXZmHk8KTa0D z)Jxus$#uHUT1F-+Zjwj^+=tMUuQF>hmpg+&3kX%7JOl=7e$oqhZmA=FR)DImPSG*}8nRaFBHlpC)(FA{EyfLGsyw`nIIhC4KDV$&-I1 zMcl_<2V`osuN=zNQ7aM){|E}}l4y&-By9{h6|o9ygQ7~_!2K7N{cC1IjB5__cu0zg zM7u7RakXn*I0Yhyvc7t4P~cxuCsf&>h7~%0J9(hi+*qxs2OS?jpRy*+V%VPVkWa9(G9L=SiySXjl_b`jY;xO?eYKSqpl)2q zee>=I_f^-`kiVCgPbr;NEKteW!bo9UY{f8ItL(xefkGiF7AaMgW_zT|TxjWz;zmt8 z`!RYlTr?_!E~aDN_=FnaT{nNQ0CD)}^fo<(Vhfn-B355Rg)*%ut8YRBtU@W&*Ekim zfzE(=QtgIIy3h*6v@-`8a@G6CW@EPffx@QMYZiJ-%NMP?fO|wzHZq#cKDL_Kug>Flh`PT#;Zb01;<00umqPCKrg%R9* z?*9F7`kr7rh0ye}+lMbA$NT#ag{!Cc7!!u{R89=sn^5C1%4^yJ=J6G?=G3Y5D&k|t zu@ZLw&-YGkv@>_7pG>0|<=^IPSi7>yTfKHYCjo;y>$WP|2Zrj*vEA!y=n8}#g%y~Z zC(~fes|ZeQ5!h~DXGg~YSdsOt&mvms)x#sray`=LIdcTK+eo;OZ@c{;b@*mVu299+ z4!?B)MWa*#GG#f~*Y?IX0r-u#JxiKg3pTV%09XiYT2i8Jt(iO7+F_kAhYKSuU!Zau z)Y0*tNY}nFU2-E+&WPC?f4w8_VhXys!O-WSk3(dNZr=+XVv|YK^q{bMFk}F%Q)=lQ zY9i%c8^oa+4AV!&R)>Va^o*KLcd37-3#B!=u-T$lx@Bm{7f`-SFS2DXvAuYvfU94E zU7$k*XTb*@8L>!hxnRVR8LhgHJ{t|LTqApw#ku_`Mu7>pVZF8>)(f~g_KAEMEL*gy zNo-X%teC&CvtiFQX|YKjKepqpNbu=DUn11Yww!*Ld%vgkjU58LNwWQU;&d&zFd)`z zgdJNJmv9UDP4npaO$+Vo{@$jsY<@?Qr^EFwM^ia)^D?=odS;O~)S$ua2t{Q}+SNI= zO$`ouMME#)v`2o`B{mvGEzdN}OdG`pl;|fdX`Bey31Bc|Q&>5m)R4Usuh za8 zI_<8BhwQHQdX3B`QB^ia9aYIzEr6z~`cPM4_v}tB7}b^j37Bd>c*$&+7)TNOgmun} z-tI;Xr6Jd~r6$#00FaNEH3*CA?8TKa3&`)~f?A_iQ6z;0E)e`2`A9M5`3Q?^tqyO( zf+MCVsKcPlB58pL>WbGT;N;{U(mlh4eNLkX2ZAFf5Q($glDimvKZmej&=z?i6#pxTb%o&|c_rl7N4F@Uf#?{*U@ghZ z5hj_}lCO9%+SKiwM#V^?mk1p$dDPljq`(P(PpA`4S<-4HZ^LAw6;vWH+ochRkzAu7 z#joL~1M~bAGL?JC;Sx*ezz`tL#a~!FeF?kQ97)Ml&U759(L_(H)jc@iauyFxWLkNt zE4BmzFKX>Ei_w~JnTsd5Y_3U4ecz_3XgDwlt$oX^rSU+W3Y@4~Uu0a>4ZJ+*MO2w0g?NWiy*ri9i2Y4Pt_cJq~#e> z^gI-X@Yt6>y|gC57wR5V$s4P$`{g&gF(pg9^KUO7E@MI!CVz{u&eYnz?>_F&PgaQm zqAA(&*cS&AsbqoqPVPT1>@LS35K-wx4}Esc*(9%X<9T%1(AS zXii$0%TqV=G&smEQ}gFH@|%d?nnu}8na@0>r;DYIAm6|a8KBJ z_cEg171({np#vc)dY03--hO@fMDzOPy4gd?RAnTezgY7h{lZRpA*ynMW6#9xAuW3&;bfJ}DQQtWxLpmo7yuZ1ug{rr4BT znX!M}HFMuj>`aoUEVH&9x%T*F%}SfJ{*psiUcQ00ms4Q#a}0+&Kp8GPKqcW0ghnMY zYp=9^fl*8QSl~A^UV8O8fu%o&ybAL1z!$X7g$yYa_15iAUntP%#jAe0#eDWW%haPQ zB?hf<-PJSgTpJPtcav6yqRuey$Sfgf+`3my?ND-Ww$#m=nKpMBlhfug-z5^P@;&Z} z55g3f+wvx44ZdjL#f*?b=D9_EFM=BUr9>*nrFZY?9X>`ms;OkBcrWS+0>k=mLnX%4u& z&MagmD^*Rd_18VRK!9O!v+logxr0O2*?d}pu9|B;yP=+yq#jI?824r8u^WyC=|~XN zwDz^@3yfQyJ~+2ficvV0DckQ}YJ8Ea7h5ed?~&gh!o8?EdpFqPg8b#`fe`cO(K=LA z=#j<#;~F6}0zQ5b@EzdUgTeSwcFC1O+u04ndq5rvR*#0JyFR*Dq*VzoIelMSSC7!( zYDzDTi)@PMym+-kMK-AwwVn&FJ~f-g8NTR)6Xk*0*aOeMG82HR881G0JJSPg zI{J~UvLcsCXCA%4_T&ym4W=FS!Ib{5!@(~GYxViGc>_AetH(a@!5Ze*h+M@&ay(3I zzZB`zg3CX=sgc}N4j=Pi(3yFfYF4!tqud zD?@tu!D)&F`GfMnw{PAVLYIYb;0!6>;xRTiXv=j?zJE&4@yqHpQh&NsRWUJTXT%DX zsJ$>D$$9tLstU!hc=>(;>RceZN#h(|9J5>wjGvZ+&iTe@yu;UA#+JZw3=2T@$HLd( z!}ET~;A5m-si<+RJUW?9^yuHW$h3_Na`%#?LRC|=@x(0p-N{$4ws2h0vcr?90-APo zwFeMlI&giKN?F%%%@e;|B+yCczjW$AMdoTx=+Ln%w$_)l-ty>^w^UWlpEIej)-gC| zKDj6qVm0gT+vJggw8^pjn%N3`Lwn%^7r3Q}hHQ(kTTt7-bGDUwUPa4}P9vX&LIp+X zwG-MX7q_w@J-_piPwlO$s?>FxS_6LWvT8>-)@AisyOS~OnG?8;*Vzz%IAkzmSu|~e z?{>r%Wwj~IjPZsvueL;E)fNqWzvr)Ed`32{>GS0sHl~1%g+TW5bI$blS6*Szu2f^* za6kH{b>f9TS!+CFnz(PF*q{?Gy?nBjdn%EzB-MIDcQc%;k`AeMdsyS66;6q>ftZ3? zr&SadT8dbbcqv9qQD7(DPwXgbqYQD~`oT z@($VQoT3xteCd3ekN2f%zt>prA-`NtsW-t+O=Vi*o0!_nTg;lK^kZ+lH5Zz0&Kob^ zlX);?EE7k>-hTl{T@Vx4Nu*a>UZD+WNur1X>~S%Q z&sTBWt0Bhw^Syg5F{ZFXWz{JQR3(Z6rPh2{SJ-1U*?XH+?twzBV`7uZ84j8amQa*? zl64Lpm>1GX;AN;=r)(W8p0Rt9j=B=2*;g&X-ED&9dV(F`rCkemf&xG&gf@-4OYa%I zyFZZJJdYg(9f7bT=U|qO_;%Pfs8pD1GCiH<{=&`}K5=!}(pM%jn8X!v^5+&;cdMpd z+Y;hF1U-)=Epczd@4eCfI+0&52D$N#+&_L5N%GSy7pN6=4c9*R!5UVf60Z8~BL^#( zC(u;6HjEuxQ%0GPJ?E>O_DHwYYl}sRLTl|p_}4v$ySHt|u0ajFX{lkxl?z+LVb(Qy z$IPHsVlj(VzQMIUsFyoHitsc`sd=>^6D{YboQ45xoQCM@9N#1-&|?pIKFp%_T}TlN z_#HYWnQx%v^I!bF@qft!73hvI`Ft2yj*#XhlN5>?!|MCih;8!4w=LKG*En(C`C@o4 zORkt~JKmu#vI;{&v*U`mN~a4}0m9~N1_92c2vhEek>7C@$u4bEAxa8`b*Dn^*~?p4 zxk}hLZ<5ekF_^MeS(5|I-{Y8X_aXP>d)-QpwB;A1=Edrpxxc;@5E+fq=m*4elACBK zjCWfs)^LJ!WzIOD5WpNrqaO+553dcks=6+!7U=~Q7cd*m9UJC*QOlD!C(f^Iw03k@ zTWy_PI8CddGG89Sg;1t6Iy0#)Yh-xEK$Qape&B=R&iT*0O5pRk*d!!1P&v*ze%@oW zAix`s#dL-TcbNbBJWzt{!L*Vah>820o0Lp4?qt@s|J zrSL~%LhcGXOcM$(0wB3v?Ff4*&gU0SSO5{=44aZj4=hbXz6z9n!kXuD>;9ii2WrVQl}U>+5M%s%H7d ztsUEAj8;>%s6=17Bw?ywR%*0H6RtRRtP%L=C;0=EMNUzY!djpe^OgAIOr*M z4~`@EVZ>46&99wa&4S!)`R|@OTESHX-yj7C#afkM*=whcG?S@+c#pWb-*WRPfCICX zUUG%V>dwy2rwklM>oqGadQpYM>fki2eQ?vnCM6tZiL^SoDB?{ni709QT~VK&*ZD4y zba5LxJCUv_f~dck;{eDGuE|MlpAkVld;)r5BXVajifZs^b~v0X7~&kW5k4e2d2!0siSeNm5z z`|y{)+)n48h=_yxgNQzxj`Ay_E3NeWxO^SI)=5`Bz2jv>I@Rh@tGJ0>n{6(i5L zVEhg;82x!S=!v**rdC$Y9<)_k24~S`JXZEL_sE}9a;LQOBjS6y_yqUC$K7DzkfgsP z4G)BUneVE}jSbwa8kTwZDpgU?C^QN54Fad8UhgqBesbl^nMB{de3}cnIs4$e+b~{X zGIwIAk$hTWjYdJx5RW5LtVE>y)JTD0v^&xbXO?cfA5diq>zo1<+Un7ui;9mRx4+am zp%1#}RJ^Dg!s0nCZ^B){dGz`Cy~pQ#A~t^qDD8#;zj6)(7IY{5Gu&1`yLou$dP2Cf zBur*;w}A5t&)3qqBn_-__|Fae(3l$7wr7BEJ}(ln#$u1h;~({yY7GHh<*HtdN7bct za{5j~xhyOxTN=_73d2JCSz1C}@Io)kDiq~KYmW{J4AP!`ORRsXd48MBEWY&RX0p`Z zT;pr2uVn^X`Wl<-w!bTe10LgMvR9utapF3iv(v1zME2@z4O)%Cf4j~aqE_*cPG76l zYw9zYjv^H_OSB?V%xEWXn_$LW)FqcEDyObDN!$v@o<-=`-gfp?b~!^yqIeSbEZ&o9 zu5HZU1~L!yxhde4`DplW%*&bPTPR;CB{&~tF^R8bGG3ujy-$$8&%zfm% zfdTGq=8kchfAum)l9^8u?0k-tb0HA((=Fx~f$rR@0;!qLkH5)F6nKBiQDy?x$I&D;5?gHR8EDC)Sx? zWz?D5>Bt6>jz$$~;mZ9z8Z{*bV>RU}79dAiWar}b$xGMH?y*qHeq(6jg0*DE?|&cX zj^na>U;=MozJ>`b#%1&D##vQXrx*U8bKX%L%7Z(p`o@FDb{r$8IVX9dhmxG>RT_`g z+Fu1?vYH-^QZG_ym9hfv%RXUYaM3u5tmvE9V&$6u@sGRiDureLI+fDsgwJr_{$#q& zq+?masw>n5NUkfV-9`kDDcHkby>uO|ehHhdcoi$Y3vI@LIM2LZjf3 z64-VMI7R3Iap6yY)?I@;W*p%OaBrd{Wxx6r=7DVD-b#~+y*jIPav0o`LQiLnL@6CU zi;LniPshkZy@}zk*@>CQipwY$g#%Dp^sGr0OfWMSZ(olL#QjKfNpizDauDj#nRy5r zz#L1RAZDPeVfmb*h-21r?zR4s1*`lb6dioaXTsWMZl)8>e(EiqKCPtMGjmqDuzvoO zVswp)iUwye0`4{9OLDEaVMAE%7Pb>NOqoODWbJOAvn?B+W_gm(M4#OXdVAO!&?~$u z^q{gXDOkEa>XcCLQB~ffbJ+E8P0?2M$}3fHA3KLvJr;9B)g^L!u|Xk{n9L%v*G0a` z{6eNP8UX=)Do!4bVetYK6Ypaeup(RxWwNcJ2X+H?J!|E%`U4DELSdezywp4P00>5= zG=0FdWM0|8yqT%%Wv=Y!L_N%cUZ9tCMzzXqHBGD~a%t@ZjY=n0AW_V1A5=C@JG_D( zfknIeE1glcDh3SOT)4@%u~V?9#XFN~oB>LRSq4JP0->z?qWQ}1OV-VFO0gQ-`1vb% z(Z3g#-J8=k^wiQ36rAAS6xLk(hJmelM${@{tR8~%9jWW5Lw0MA43{;>j$*i)QD8XN44oC7}Th~DCuE@$6bZ)UQ%_lUmTXtj*r7&=W~K)sz45!sd$6sD(02=%HY>l@$(%B-}@B(wf%l2pXi`fhduy4n#VI{zHT?C zrc8_AFLbw6!^|`8flw%otN>gLB)`|A7(NvHi`}_087ogo1&vZhu3_Bt2QLw4 z1kPa+#FV!{YR-b&i7^VImne3DVkLz*O7}O6f_Iow?j5-p){W?$oI{1v%4a zydyzMfjvoC)jpyy-Lq;|9xDb0YHdo2+O3cPJwzyi4GRH37>A*tA5!nW|nVsIV=Qr{jmE<$sAlDVy(VpZRzph&ZjY*->4pL+7MXKt&9DJ7Ds8}B;@zhO2EOFJABfItcNm|rE}2;jPE z$q^t`9Uw5<3AE3OnJ;@@B=nbGJaj!XAjl00f_OVlw(Jd&Fr85GR#H;X3DHT8 zPYst{Y0#)d^s9&{xoT1ew3o_S$Cep|pd@f2Le92wLz&#xR<&Mu=%cM2I-?e%D+WCa z)N++=Ti@OP$-)nwzyF3xxQL?SO?RDt4c0&S@)PV%=G)l%^C55fAM599v;BfYjAi3; z!<#Q%y6v`de)TWWQgS>3^*M-QwON+rwrrx57eusHwbF=-?{ZIDROv36IVBGy1)dC$ z`~BPm=0GR}VbwXx-8I}`)iv~kHKvQwiht2+Afd(#98m3YA2 zhj%SX}7RL1(4lva*N!*tXW>yC+XeG^_s{Id*lcuW2Jb065#QUp3 zUw`m{Z61dB=t4gkPUnL$ImPaC47zbyt|m+AoV{5;>G}$VQ@Mi@(XBo?lq z%QixrHdKUp5GEUHveoJu-kp)=7&?+n;$HTXyZqb&SkzDeAa=zB zY}63{Ly(GY2P;j9sYb%a@XN%y%WtHI3QB#xEPjwVwCVlErgFI<=D%UR+0@wt!H1}@ zU8#~W6Pu^eWe{FmXg*K&2YNn%80t@l3u^N+D+tdMxe_j2I;>-9>;fW10-p+0JSV|g z@DlP)5PoyC7he^xcR^j8pKK zdFOV|N=I90o4EO&@plwjyxx@Z6uF^7KA53nB#_eDG2aaU%O>P4J<7mkdo(lXcv=_ zRJ?w8(s1>AgSEd&NdoNHo`Ym#tFC0i;bpjSiw_LXQCz-?>4xwIw29^wtUdYJHkpCl z_05^<3z;wdM`%sM!fC^Uz#2)C8tU6dOsZUd2Nw9Fe|wAKE}*_Mc?`H$79E=fQeW4JnafGkVa-F7_$lR z(65Jq4MGS}9B`Lnhj7Im1~3ZMXwj0vwSu$gz3>x2ajrAWd=N2MtstlftoY29Vwpxp z7mqSkm;(xG=olK>B!To&*K^`|6((GkfZhp25KN3Z*WGmDabKN>yFhmdW!cC{W zPr-^>FaHAqs2bRRZ04@yG1kPyH5!}bu-M93&PM=Xh#FvuZbB#pr^a+dv^H^Oo>QvR z0evwW)P(c0CE2Cf;@l#`B~QcQ6N7-ZP`h%`ByQ}NUmiZ32?36a@o?uML|kasTYSwj zoggwK%UDsw{8nwv&rrhDOqnG$y`DQ7BF_Z5F(ep(`eYB5@{{V925q0KQxf}g*)F$jzzc;%*CLi=UK*EX!A5DS6Ev7 z;3)&JEl8W(_1*cT`-Ak+(|$*cewqGuRO3itWQpd1?V zp{1c1kQXJ8FVsRyWtp_7si{a()o7s)y!FGZcalqH(kK4g)7q_)tu64CH>zXxn$HbL5!ZI=k0b4|&k35IGm(Mv?2e z*V%a~1+%7SJF;iY9bl|um24hF%uMFn)CFjCA@qv1^0D!4-U#_;UO zexQC}hlX+klNG%2xE8mMi1CgL$)eVK**M4%H zAIgNllUf%n`8`9+jSdO#B-}N0No@I?OP6lF)dkIU>C8~> zZWnnAbha5B!1Z8AQ#NflPId1ZTc7~V-B0}F20yov-0CMq+CG@@`U7?*9p@p|>E1V$)1N)Hs{+t4aq)FW z&cG#(z&zH+nLmKq9B+ce$_kz;3y%yiS@6mN{;#50X!K4c9yVk5iBy0dwSbJCQud=* zQ3AT+5SjZ$G6+iv9m5RdPH0hbua<0~3+acSe}4FI4nVu_2nSz$>i!mK`KGH*}&*O!>3UgHrjw)0vR->QStZ{ zPYo5YqN7AID?qoWmq=3?;|qMnq;mf*VyyVPP4TSsjjJ!S}%OWi5H187^@e(dO} zWmP>tlJ<^_1t(SlM_Rn#_G$l2o3cJEQpnf=+vjFv`k^GZ6na3^(rc zOq|g=^I!kkwad}eM0SIk4I3lc@H@+}! z-25t$N+GCQHZ_C!DsE=U{l3+qkU&$pd3%GlaQd{7>5SGE*)%UlmI?w@V;Ad+#}Bf= zG&Fg}xY-rFEjj`7L@HrxmHf6w;bB-UiG_<`jQe7qzFoy4Q7>L`4Q5+pN|mj;SXrwq zth%F3o*7y-T4*rHMlSZINjkLNg+tK_ja(8i01gR!x-(~>e#4lC#@7q&^{HJcIHhpiw5|U;1d1IQf4k6?#QuKHn{V#gmD$olUJ7We;&gYWM6VOW2dP*C%wcvG zIz>5!I%|1Gq*-61YYbgz5 z#re#a8JU9z*>lpnhSBe2l^fRFnEj?*gGOxoXMX>0erkO98=J(wVpeZaeQeGN=S5mYQ$T}S@Yuykw+)-y9^tn)W10y{TU%7EBb zv|??3{29TLTQ5J#{)4$3yJ9wojsM2UB^aFed#TiB%)E5z;6VseNPtO)AtvTl=ZsY? zz$B71FP+d>nc3zw)EZhM*R-}KpkYV+S%%T4_SIrzPWje5?#csQ^0YGh;9(n`Tqi6i z+E;WH|Y7qGGMF_>#mG;XQ zfn0~PWaMCyV=;O^+xNf2QAnBl;)9H3AAh`WUoM0N6G94zK@02Zi($M3#Gr1C$Wm1< zEpGM{ORAczndJE}y@o~Wc)!orXZM(UxquDCPcZgmeFHMg^;IB#`V&kRdCW^5gt@GE z2OoqS3Mq6203B9c)r5FxGrTO!ElvI9o?@^Kg57bwrvir8DS>Pstz*K2WUGV0x55&s z)}+kWDlKA(3N(|5%Bdq#k;tr7=NhFhr&OP>RcOS&G7;`{W&kt^9P}gpS;9x8(<#jP zo*&FMfe5$|GP$BCU9JO+)pgOxhQM z$)oE)KV4GWMNatrFkEl;fr-^hjgn;;4NM#Xtpw%Zd$t+{$3OFn0ZgcQmHZO_T;{CT z>svj=0n=BcHIGbHtEWFwFV^Wqm3P6(cEUzH!M5?&Fb5LFIyl=ad_h9JvtQcS=ZVFY z$N_|%TlUX?Zr|>P4`}u)4I*p04fL@^M41Kl-W{9#`Z#J`V!~(A-Gfd zK13QH^8$C#Pfq!`$sh{HrD|<~Cb>=!9O5*T3M!C9wLvz#2Epwaz5kjT_EIDeVIVN%l8L4N4?*-wvKPC+`P-js>Lmvm(xevrM4)H z<1R9b>5V`CeDtUT7y`nuk^48hv)1Uc%b`tHVbAKMzt(NveSHmhHbKSJ8?LD)#$J#E zqlKgJ@;mwaf$?J|#0p(k+z?nRh-d&iC}HFrgy)9-cA*?D5Be+KE;t;3JiyB;XJaAp z+|NHhcrX*_boq>*JF|=9iX!UlP@O<$kW_fm2Ga z)G~)uZ3orZd;NwSSy1Lq@C=QCNq+yMh0~^ugHXsM%;*|6H2V?Sk}ZUiD63IxJo!?c z&{AEXNLPzRQn}n&#>z~YgHtVOL*a`%(6v&!7!!N5Jz<_z&MC7$ueCa{V_qYd zhy@_LAZIge%7*T7#TNhO6~)kqq#{FmuZWPJ$FPJ){4j~c3;Z`pWI3-=6${c^U3%JUjfQsuH;Uo}@u}%%J}1Ql8s8=S zKqQ~hN5bb*sW`CR@8gzYDw0edp}{vJkp<56XBXm>uhYMH$VQc_Fn!Jq$3_X18u5_Z zub*n=YCioG>Y3nykNI!%k;my6)zqU)(x8o5R{s5oFl(H7Y|St$M(L&j3vU`tauSvs zf#`4>Or1l6htoPyXNrg6j4=`~?|q|O%KqLL6w!F1L?!4h-~S=*R$=uns3M(6kmWb>N*mFt zDr~wwMoa-$1k2@#py+D^&@IBZ*VV8Kd$x2%fLJ{kY64KVp2KWw<<1ipkf`d3H_sIq zWz%+!C^h9}6wI782AGbcXUzKA&vZa_Yv#>2d+5jEONTX`YbUjqLkpZ-mESaU{zsMC z?7VDklQyR?4}41w_{Xyef@o=&{SS&Qi!XS<{YY3?EQw%U-!TI26mx)^G>cu{v!Rh? zdpKZEima6rZ=NSK$!6>rUTm6Ro^*Jj1R#o$Tc`L;%-cJ5cM(8A5f(Q z`5AR#%gALzVRW?w%$QuB7n*^fL=f7vkWh@VFHRmreYXBVM=Z(j>#FO;sCfu|!F%uR z*^>)d!djoynx+R~UWv_3TAGpzGNoQ=MxHI;-tydfky)|&@wLZ-!Gu`XqpVppHCv!i zur-HUO}XPoXC-Hioj`v!&bn=88f2H2G20-{yb+d$dDpGL>d^u$l>u+69BfE4ANBU} z5BS-s@i?fW!Uekt#}2-*Ji`oo8I1xHZz`R9a4A?$DU20dlSKl^tKlcsblK~FP|44Yc2-GJOhq3VG3O>rfJc5su z{#SGnPlU-n@_vZUN@W_k3onH9b;~D-bOz~|c~v@^^T7xE_GN)77~h!H8A|e+0t1-a z=xHMO04m$`Sm!M_tStxDnz(53x~)M%V((}E;k42vbF;Iu=P!rN4)Eq0TedWOuSp#* zgBA^gVs{}{ljDK+N~Ea7y>K~hb=0%;vu9sGulwkX2#Bq_aiULlQxRF9L_yayO|#N! zme4=K@(lliAuuIII%RQA;kD-~tGeE`RgQ9e20@XxS6`LpkiowhB4x{)os?|!3L}}D% zB%Jo;mp5;Ad%esZzAu#Bhc=hvAgSUtH_cZbq`wXm!~Dk1-*-wsq(|n7fD`Y%@ZV!< z7_If+eS>vI4e0EGzy`~JvF*I+o1@(chB5;A>C)Dm?e7T>4eb@Ok)1Fm-_B zFyUPx=cpe~pv|TllNGZrw4jD~_N>*zLLY?5>)g8_B<$zb!t*MC9HUQ$7xN_SwBZZ0xcB%I&y#rZ zyNm`F*MYq?1?-ldg>|gH=iBv+lKUy2nbAsf!wsBDl@C8xgxBxaK= zqDVH;oqzuM&_gb8V9x}}EdlyZYu%!m&@*K=i&F+pm`QeWI^Q*bLFKX#wBZ0WPW^iUi;Ew-icKteYn4qd@i^{y{wRMeo1AZ(k1F z{H^33+D$<7QLNS_VV_4*XEreO3);16;A0wfDly&PW}no6z3TNKLY7P4$VN5Z+J zg%6qrW9#E}U>jbJXe}xpOhpd~Rt-t}wan)OxJTMHkbl8IrJ3Ar6Vyy664yXgn#v>9 zs7M1{2!xV0K3s| zy+(&Lx4cjWQyCeBQzbAI=87`&^D{(wrAFHD!3Q_roB_Sgb}#7S(j)a-cW$Z#m1(wo z<+W>SZlV83hVd@~n1_l=xmDb2Y5Js=2C0S(4T4~#kU75Znm zENP3>kxTPF{&@fX49Ixa2Q#JH-Z{L`EdeUIW9p61FTLr9yK}K(Rs0}f@A@j)+SFi4 zNpAAwC9Jjv?A9?hl|LfHZgI$cZ~ThSkig2pYw|3yzF_fB@+(jfwsZ4{71&zKQ2FM~ zaPFEWln!WKPF7W-PF<~~YdrJL{rCImQz~GK9uHKRyvy7`rxayOH|N;=fz+auFoH}j zxRg)wHVc=K4)6@l5cn&Ae8m;HVy-g+0?{CaN1EaGe#SVs4~x)@rM6DvhsRtSg7LaO z;CPFj4N$pUu2kh)C#?;EhL302XyX%(rFYMOCRowTqsyFRR)cH!Fjt{#SXY{#bi?f6 zG8h@4^1Mh#+tMVEA7+4ns#r?QtZvw*u_+3N)I4}`aO9{xQ&B-fW?yu4x}Y$nuH5K0 z);5A+uIE#kcn+ChnB)EdeNvnf7pII?RMfNcdbS^8HgL-YsGvj$?Dw0@ns%BLX^a?a zTQbDSRw-C!XjaJfaS!;}sdVBRx*Di*7ubFJdNjkoz*Bh>pKi$xqv6BExajhf}G z-knSIi+J*AqGM5@pq$KP0^Fmd%-p%8Lu!O5ZuuY!HNN`l_U$=PlBz@E>Wg7TW@!0H z2)AX!7qr+VWOJZ;#DN8N2oGhhwI`;Mf!x<#vK1=5j5`D!)~9M$ty(%W9~A@L<7UpE zTh6<2M2`EY!6{Kk+E>!c0xAhEG!8R}@#LX`zkooe`y-FQAW>4z)GD~A$tal9^`D$H zFZ7J+YQ3%Q^gy#Q+t3t*0{*9dveVD4=^p7H$z1H2#@b3Xxq12;eL>;Z9u1=Sm z3s0Gxxd;W?~ z>#SL7mqLO1oU8nq&-dMz13VlR zJ=3^-$NF-K(I6~Ya?RDXxl`_04jS4?GUvu~3&=HeL6EEB{uv;LunA5CU?37Vs$rv} zh4f5>X|MFOc<%k^c7189hNF+d>?^(ho(N~(Ty?Rj*sHO<>W-M4(MQ$!gDbLf%?J`|%DJ*Xw z?A@y@CQuk*M@e7&J&0-)6fk-q#6)Flg?;b@k-r(d4O-W58EHdP_E$x=1 ztGX71+**Ox)H)aDE$T!a3pYWj~%^vLy0O) zRQFHpzx=(x08c84bvoEqy2BRF_d*6BU9rS2*NbkGnH4!l= z>lb=4-NE2**l;|Ytfp&;)Y>%#Pg7hmX;8}G>eS)Wt6@Tdw0g!cI`XyG0O)CIVw-yA zF%JjnP9J%@>&Rvhz%a>5_dPh$s2%(8{xZzs@^>8j2yMU?Ukn4d2UeNFA3DbDSS@e4 z^4R-2<@C@#2v{&e+Q9sW@y2i$kh=rPOmEeE4p!^3zzD2@0$Vj%Mb{BzH$UAPzzync)q{Xq5Cp40-IG;4xKRbbA}l(t}-bB%eY9t@NJ_90)$=i;+{d?kisDJ zb)+>eyyZL@+VfHq29H9kb(6 z#l^AA_=V=95M^_z$DD6q$HDdQ2D>W5@#=1VVa-HHU08!^HqBmAsHBG<^&cC)G30quvGb!vrL ztWYbY0-6cEbTY+ zqYX{>oP8A1YYgw60+<2!!vb}8{->_R_?82hVde(=HG zy$(PH1}6JE2SPu9PMp=*8MNuWrH3bq^mOnGV>#))J_2y|8gD4A?H+L0x(3&}X_2|9HEe$<+6jV{%TO#fM2rrVBlyw-AG3fd#`u6w;rPQwOaTv? zC+PMO1&1+HxP8OOW3=V8-~V0!BCtRyX!2w=$rNHBUB5?X`03lPys~3QdSfGC;mJ5+ zb~kyE8=L9?l`Um91lMLKB4hz<)0@4o4Fb zv4;qxaU>a%HoD}HG82#Wzh?2SzXe3lwVbv zm7?Ud6q#RFSYgB3M#iH;8B-h1F_=)tSM4y#^C~NhEg6G`7lIUkF#S`3TsU}2WpYnl zo%^AOR<2~``Ftv^@b(WkM?l?`VTn2mI=DeBHL&UJTfW>xfB)fyh%{MLwd=%_FH#t; zKB(1ZNa+}~TbvAPy_q&u{h+Z$CeMcDScOuGDoi>6zD078h~5WdV5EXvho*Jvk~-_4 zJ9gJG(9J8XP0CZH%k*Zo6o#XEnDgBJ7V50uoomjahY&pfBp*J|u(-Mqc5Y5LegLAGoW7Q41rtZGk2cjm42|R_TQR z4~V2G4t<`dFilT?7p1%hu~plsk|YsKq!%geeyzo#rEh-r+2O;f5H9RO<}Lw3=bcq% zSGq!xp-`l|S{J@`dSir;R-YJXY~d~k8MynoAG!PLEUh4Woswx(h$NtTDYB(7oknh> zM5Wa-Z^y6Z;6~VhbkN9}+uNmLgO?KnLI%MH#Br#8p$x<}36H4)TQe}+0qq*z5g_yU z31%&~T7nI%46}^eSQ3_6%5uce_v|V#iP*FRrn#-|8BvzkabS7Ld2|$W^4?m*-`AIU$Al3P8&?&sESCC=0s2C(*m{%AY%z1K|7G z08vn7I&B02kF_fUpw;odpX~MXB@Hal?1L8OsP8w!sb7J8;alv3HF>fe8dMnn0arP; zuTi#Ae6+)yci-K+Hw&n5!%>GVh0*!wBF~{(bzw0~hsw`YZKxBggw_?u*N0LB`3Dd9Nbulf1sWD+x)JKP!|PjJ7}$KHK+_ipI7U~K+b z!9SVGAgS%4K~@@n<;-{7-AnY>1nfqyfLHtp^h*q; z;y`RW4uSdF=X=E~Pqrv36(%EHP^&a)*m_oFq$l5gd(WN>*tk(a=BhwN&%Ml7y4;c7 zcAaC`NUhd2tUF!j7(D#?_~O6-Wy9&6rwO0ym;*4pC9Lk+L;6-7}aBymL?8 zNthS>Mh3HT0JXPv1cSGLx%~ieloy#3Eg#UElT}(6sv(!M^*)=vFt<{yH_2NRW`mTT z@slyoYUZKm*nM=Ylr+*OBqYhp$6u#_ZXJRo3}xRd;6@IP>CEAx@%FK(!+-%c>xw&e zppW$>x%xyG1EhZ#*N6Y7NR)UZ*ac022c8(tC`HZJt(zwhX>GZwQfQM;&rj8g7L*$@ zQzbRxlnnZzN0MCR5`knyR=!cZMr41UkqAP=i_KyIlpI|-20^nx@5+>`=!BPE+OZ=O z6jwu4dV7*Yk);r64Cb4szxeQtCD{3?@(*ts0pSMCpV@bCxVDd*OxBg)5epi;S!?;p|&MRO38&-*_%<r_KHvJr#$dsc4K1<}kA}!f zpG+rAvy0_&sPtq)r6__=%^k7H+BvRNV$zFC$91M~mp=LA=9@9eIu#_)7EHrhJ=mv0q9>(lGcvWleKgtfkpti%Ba>rt)L@^C}sI=8nvF+ zgc8#3mKHnO^(UU7hc87d+H6o4+OibpY3YScXKMX^(BZo8hy85?`KzW*U|kK5+oc7<%x~tbzIBV--Hji?!F{ zXYk7}@6Q`qjuU#wy{#sTWu%|gNHRUeGPRtpYi@S_^wX(R^zi4vOmhNa#D+7uDyIv| zGDMxP!G=;Mn+BkD={nDkKlE<66xa>Nq1fqzRiW}~4%oH|h%X0Wn|gF@SlsPZ(~ZM~ zBx)Aos=9Gkp4EU#III{*1qgNW7NlGZ**K=L45-V~|B|cZ3b$(b&WVy_`N+-PD(>T) zqH&!`1uz|mconXOp>-HZb8$`rIoLe^5qq8loC~d%?mTZ>W3x1;&3gqXZDjD4lq=2GG+ZFK)`Zpme3odiGwaeN(7b>H&%sVf@^X+cQiEBevL_qDIZ(~ZiD*x z_NJTa>349z2<9G!co4rR-Y9s*cK`LT7rgPtjvc6y5nxmSy4sgRo}f+mbDAgd{L@bk zgX96Uo4rLorAegQyT{M0>X`<=Bm%(4d7e~e1SA0YnmFv9e{kqHMDSdADPI$cY5^)6 zdrD@sf`}`|;E#TB&lF||ca)Hb!EEkmVl>jib_Gbrm6u<$ZM&B!#hxu278^sFET^_k zn_;Kz4SGA@@R3Sie(9y_t^?^XGB!XiaFrPuU^CRY$l8%A+01%Xl3pbQ@~u#`(?Rp8`$q0_KiQ5ZP7M89sKMI>#sswluxekm15>KS+(>XV%j#S+ z*KYBPla&7JR!wPfj9IX%L2A;88&)kGpT#tJ2hpP~ueEq-nEXL6rDgya!sj_qbh6Mc zc1Ui;JzKBlVYV^G6!GCc|QGX&51 zLhL!mj|(hzzkP(?8vV_EmV3?*KY;QhJm}-3ot`2QdU`z~_Txh#QVVSKx4Dn~WVfGN zMO6MvL1s^o$e`GDQ_l?k3*P|F3Tgluc*a`Pxx-n3SLl1s&|Mz~^#Iv}->=1ZCGI_$ zBTY?58f9vAo&#hK%np&9J_1tHZ&i~cR81&wX#RZSiPfu}P{+6viZY+mf0%3%i9qRq z;;EceHPOeI(SEK27&ckGdx52(GwfX~Vvu;Na3)SVSQ<#%AWh?a7Ob$p--@Pmw+G2E zXs>!D68W;Vl}mc0+VeC>=8j}-+(iiX{M=;d{(l#* za1k8ABS1%ww{l`%6}Ye^35SjDi$^(lR((vJ63m;6|9hwN5|hGxn!_yUpsvUkc2m#N zCRW<>>#Be?TihxzrjV2E8mCj|)jA#DhBc|uHc4u_pS01fB%i*_*t}$jH`$as)oHOb z`^pTiu1Jb8wPVmlqpc|^*&J=@d=^5VK0U7*m?J;&ueYRMwCRY+yP{lbpS&xG_hP&c zS-Rk_#fNw}Iv;7ED9ZLQfEag@rT~Gt?^1b+QCDl1OYP+fxk?}sLljA0^(XrW6+qG> zX`Wi_$2O__y4n&2G^4UAr&^d)UMwxF{o=)hH@XrUZnUB`_s^||h8<7^ zQv)>^8g8VOGmo#jS|8fFyb!^*h6m2mWRqEH}lda#YVATlLM*FL$0n~Wv% z?8ZhI;PG^-*4$JFX^+3tVJs;iXOtC-XSl4+Npmyw1=A+GjqWMa$?SX>SCUj>uBuQ# zy8#`39m-R8eNXbI#Ea=*h|zqY-VT{uwR=E(QBohyQeYAcWgbW%e_QXNzcuHM9qPy!HfEp4V-QEil*;9xY)MoZ z09Z@K+1&x)jL%^A&|#6ySI;g)efr#q3s!kaus6{aU)2Sl9c9~~t-z7sIEaCdN_b0& z-xJHjPz9V%TzWr-f0-Ve!Evef0RltJ+VO-E~Qc0h)l7+1wh3IGD@YCcx^;{^|mDGD2qGXx9siyGtlJd>FeE>~(wq4x; zG=W@)xImFtQlMNCWX|>c&OFZ5u;!lg%xr(Yu6D)ZNtqBw+J{Y@MP}3*(vu`$d!@;C zx=-pZDan>K7#h5_m?dDU_bgD|(DDUdRG$^B(RnmAsFn^C2aR1XLzmrVZ|iVtO;-^4DDHTO+| zCJ)J|JC<3#NFBdsU$?xt(NnGx%B4)vBjfMBenuAgs?-IEPNgw8(AL5#n&>imBdB}7 z&hFDqxVKsibA-$Ghh*!|*CJcE^j?QRf6bYdFvG_rw#~U~R>k1yl?EJvD^2n&pP(qP z`Te$vlwb%j&>(EYTR>6AnWY%&V$CdWCu2t|hV8%~#0PsrdZ6P)xmNK_iE4zS+v|l~ z5^W`U(N#QWa(cFX;+(mE{+V;|;GZFl*%+>5G~#TZLN1x3Qst#wH%_S6OGjRvL^jo> zheGN3_Mq=fa@W#UEKqhV9c-lpyGI}%WrbBrXO5xSP>{36x5#&y+ilOpX&X6E7?jG$ zDMo$dUmzL@fY_PsD@xORjY&Dl-hg%L*+T)Wl<7FtRS^c!{Mz5(*!j`~SnwN6)?M^qAfsZ=K3Mi$e}|M0_9B_ChOZIFW_ z_>OzuOK$dZTN&b|J=zLeqpiZkboTrM%eW#HO4o^G%&*=|&TWTTkpiU~&QBtT6LEr0 z#pAtWP%!w-#1w20&JYLBl?8uBNe3aA(!aDoLi`dXPw+P}US@dcQAz^zQS#?g^jB1@ zfC(tq&}&=~W7&i@7^Ef+bOXM$zEx=wT2iedjYdSINmiLapY0T-Wu=Ln`8wv+!-qZe zozD*)^3eCD`TcuxhYyN?N-s$6)p`An-Sl>|!W;;Q6*6YPunb*6HW->P^j$s2e+Ry= zDD|WJsxh&<6?HqQvzkn6Wgd(jNYSscVfmlkGt|HKjDK^P$YFWBelcs?9o7?!- zTQ}U`f&_Y(Um#bilwv=x>~dq#$}K+enDecy&Pz{aCd0h>TuW2)TOJShu~^2iAObE> zO4ZG7nMRmgnJ2faAc2yL^>z#MEca@F*GptJ2?Dp>dFz&n%I&w^bt^YnYDrZ$nu~RO z#)0z}=ZHveYXxD~uEH_rp)z8!Y+t*Zc1; zfOlFEiM$7sC_fv3EGQRwwvE0LX5QyM2#^~C+&bnG_bq7%QlTH1D-$5GIK(^CdqH*= z5lVD91%Na~C%eGE9$VQl%)&p|{``dK6ozP+9^)r~k7;1~1)`*b2?)meUp5~Q} z(|~Fq14#^pRj)0u$RrlG9GC`DrCcVs$wS2Uum`(u8oenZ`oh_>t5;{%)iJAEXmJa3 z4<`fSvY$B$bb-76y{%QFg9Z}}y$OzI4sL$`;9L9YcVC_N!BkN};{zWNQEME-hp+0q z{01Clw5b{co`k>)BTRlX`QQtYSon%7!fCPzD?>NI$egQ(qEPiG!Qhx+a%3(H@G(i+ zrw6G2!w>iG&xW3-ZNaAl^xpxpneJu>NRH6A|8JxiX0r|Yk|dXL|MtTLhFWFRs-I@P zu;UuQsGmf4l!=kIe@D2EDJ{Nx%e8*0_x3q80Aa4)&s{;Ot?|fW@xvv{A zrk5ddcqk<=qa&D9Xb!Z0t5Ozc&fUDPO#mFJ(9U%*d+|Rx8;_5{M$~a9wiFI+&Aw&? zGA3(Awk#+pnLTHGMoIdZS#yCucF0HG^m5J2gDrG+fy(LBmTBDC^>Ihyo$ZNu1i6N(_R|3^<0Ix=S$Sin%3_fNg$NVS5^;7# zMYg!CHi?X`DOk9w4oVT#OQwDpF&8S@6b00Z94ru!V;(uTe7TKU?D`~Mi&Q6Q8?ppVc$y}FiLn2c$J(Wdol7Q&z@jWB=aq9s+N zv)9^5V7Syt_9UCh8=p8T7e)VhpfAc?#zz{@kZ^HXxJZWl#9d^r=N2tSM*p+?91@sC zQrg-|erjvurm?Gf)-hi!SWy3MgQu&ewT?7VKRL&}bPy}EZQ#W(vPyW1iN6%PkKkV) z$BPhQkN;}?weTZGXmIIAAMM|d{iZx4WHm$(=lCCp4C$lc@Dh|313m61V2%jtaX;qY z*u1@&obS27Hgapk?f}HJmGJvd#aeOIe5DHOLc9v|AovZK{PEyD)OHZ#$LN;-kJAOI zSag~UIAX#F8;~c){)`Jg&g|o+EW(*ZZ+2=N%Aqm{sW}O{Ud6v=ngu;*mO- zrK_1x-M0We%+?0CIO27ooI0eFOA zg{mP#nY-N96EeYlD zB_Dox^UWyLmIi&&OcVEns6MI4EpL`P3&{mP@Zn*oeL>E;fK)B8r3k^T0N*7^#%LYD z&aoy59GR-e0_x()-9nvFI&gHplKGRn)l1&-aqzzA&>TNmXmSo4?69N{83EIphIQHv z_U_@(jK9es*Hu-CC?>=dp5i#^4lvYByDR;lhS5zX;exRD&I#Ofmph4N)>F#zedeYr4w@D^x7p#OOP{k?l(dswZH1259z`xgx{H>Nm;3`%pP zcMU%&OR-5c}c_b+Q@whM)>05|YMV+b9Ke?mnm^BNGQd)D3wj z4j6LLYnCsW zJHaJ^W^Bi>Ni%1bJ+$y(8V*XdPS`g5T-khA_B;|v*cU$xls?ca6=%E34m3fmOLp|X z#X0{Svr)_g=Wx7fD{hP3H(bM;j^ zXC@8QnR3#^&7xEnX{vEFl`9*SC5i!*)IY0Rt$hJ^7ApMZijsa3?XJB z``BRSQ~~&kO2o#opTrgQ|Jvv`@_9?VMe{c7qxkt}XGCny&JZQT{AeePm`)wFWaEy2 z!kM1~8YogGbwcMYyRM#^L0FVqsL#U?Y9PddDqwEXy^hi)#?7mga3CemmHdCS}u z=kUSlY3bdg;MkC%`5fC04+@2Doq*_71E;|UadgaK#2b5}(isVFrWfFh->}3en)$HO z?yc3;=&DfQ1d znUgAG4LD4dGcDw|=G#K8&BmO;ZP2Ko5xVE!w;(W$YVbLa=-?86QLre-qE4 zF?LP}G#(@8!}RrFCRs{11)#(B36if-73Lp&el|+XPk-VDC%xoadwc@&qb8r&m^U?? zI$%UGyaril6&?EZ*GG&_HYul^@b@ANt82q;NzJ>6Ts+0t(c{!l)|`i7$%+GS)BdH(gN{<;jk` zsVE1yu!wltn_D}w_zgq|7UKWIqvXO@;k}C)9{qCOoHLXzY zM3BGX3|(6FCf(3*xt@*(TZUJ0H{V!}4?&-ZxI|OAKIn=sWPn-jcUDi6Q?#A`0WI)U z@@<6P8F;Njlcn{_O$K^ZOm2#N5!mM66=a_7`2z|`&FnsT!6=8)T;JeJ$S@;N>v{$@ z9N{f37@nwRswWD!@U9DQJ}w~UzIe|akKGcVXs_eA6=!i-nM&?C@?g6b(1m&pP=0nd zq?UnADcRjB&uE!FNT}1xI;O(BXDUEt4ipuiS>+xWG&bse1DQF&`-6g;MuNlNSN zA~yGgtn{qOw?CghVe*8Ld{CCrIc#{h6S|ON{GSaOg|nx-bFx7P7US{bpcB{zU!{a9 zkqfeoFtij6ziM>!yW+kr-kaUP@P3egDOvE}5Oy@MiE%l^r7AX_bM!lkIea5^Ze>rkkK%!u&tNz5-0H@@zZrIXmv|KC`p#vpVi; zad&rjBksW>NCF82C|+C&DHgOyakoN?722=zA%)D#|2$`8cPan%k!y(TLe6>R(fhgY zr_;Gyl{E=d6R1x9ym`ctO(2e^6Zlu`n`fVX!=73(w4*Avoahx>tT6K-6E}uC)aFDc zrUxM|AVC9O&~hms+h|W|fbUIj=}(soa=z32ES$r1JKOepu{k&L2!dLI-7MLm<7&qn$7$g*()lXT>QPHUwyG${l| zg&&z3);u4RyS*wHH5FPK=q;Ucn~~qeH(CMv@@|rxPUTiGi&7u+Z=|1oH4$`Xc_Tj{ zss&|x-?(m_SLPKv7hmzz`q39Hbzr;BxAFAU8#VrMBkVl6ysUbiS?eC&V>jCSkwY7~ zK(OJ0wS5y;y2h4Eo<*H&=3=mF7;H|#cnm)4?Bqbx1^W-jpmQ7Dw{sP3W~Sw??;Sn=9xmtN|N!;D@^ z)iiSy4`vU0CeCpKd!jQmTUh7}hp=+93LqZveuFPb&091fSVCI%p!HA6A10aeD z<+->s>uk{0RBW$vCb~2Y>dpj+ki3(^?b^eCB2BpU87i=Abhk2V{yzBXvQ)%I_A;VYOk&Y4#8#jVn#x{4i zzi=5sRF9p@ohJ?Sl}aQLf9feG9OMV;?U8nMqpCfedyN&J|E|7UsIPMKVPdPgTteRL zVHA#fkT=zoNj);Yp~lzH*WouxnPJLj=qFQzIz4|Bk)Mr@rT-2c3(*Iee^)9iD^+!> z>gu^r82fwcw%uErg=#e$J#kf>+<%19*H4TYJ5!?Pjh-*WRGzk=7tx%x-hKJIjw zp!tnlaM+J1)mqVDm&i%LWalf$gHLV=BV91(AYx=s(M53;YDZ|uI+PahOLShx1_nB{Ks;`vyE2|qCbaT5ERsnF`F;Ab}xN&T9n_%17 z{Zkwwm_T%Ge*QqflI-qwMqR!A86blMMCuL6+}5S#vzIJul(wu`HoKhJDff+YsGJkv zm3p8JfhfJ9MaTb&&bV3%RzC|+$JJkd4FhOU*ysQS%XcEow%o2~hyfyY13g1-qvM#j z3v*_dFt?_1BhzHZrI)^N@x?Lf;jY_VFteU#^2qc37sTGMl!38mF$RQS3Dy$a0N6k- z5a-N<@0Sf^@-tFGJ`j(8kkE(w>R7P+q3I;4sBQ^5B{or2Zi z!`g*W`udA69zN`byn9xhlmkxYO67!`kF^5{ps@SBD`LAh&2*@(Z_p?mExvws|<=B49Lq$c*dqWK}Bmz1wYWG_aZfb0|Ka@ zbGOCGD+w6P*^)e%BA4I3(RATIA5Y_L4Bz)>Aa(l2AXm4xb5+c4U^0!RCceOlJgV zLYv5xB>hSU(o;5ITP!GAnXN z$ol%1uR?~QB{#13k|h!Em@&Ru&**--wMT9i4CkAy!TQ5j_c0)&kvYC&58q963_Eje z7`TUFbXjcDWHmOshWRjc_>xOv^nYA?@ADudtZmt;d74^FTa((SZR=vJ3P-O=Ywo9M zd+W4riwL4TZD=@M9kLFGzz&9&C7{@51q6mc{ov0+nNkVexG@mjoB|?_e8(Cgw>U0R zczrIpMgSY`CHz2l$u*4X$R)G_HM5VBxxKGu$!la|-(RwH1ZPX%gx2HR%v+B>nxXeD zfkFRy^eDNXjsm@{quaZIT^u9s`+%%2&y|5CG5kwWIunaEU}#G9Z0;BhN^iIVXr2!{ zZ(X^OQ`80JsG`wJAvJzJf?4tQ+m~I2VT3Dkc99aMO?eUlBeKcL?6xwa-B@OG4rY>gES+1F1a;ndpb>NfJMN>8K9a7lm^9W6 zrO+~aI_p~hHHi1ZY&@&e$XpIE0SLRgx-@#?;#@E=Fa7cjeQ@ouBUNZe0Tu`E2>KI@ zO7H@~hzxec5w>wJ#u;R4N}S&eX_mX{>B?uUwtc-JZ2`CPjVk7ab)%Y zBZz)|{vQr6PFBgeF$plV&jK;Z1@xJ&C&}LA`FG($BLeUoz{BteV3{5VEIHy>^lN!D zm46;V;etc(SST|Mxy^e)2;glsf;NDIC)eHm&u&w^#|NaHqV@&<3AtkJs+h7ZmfQTr z7uQ{f1jnnh-*M%0ixks2fqumvC}Xb8PP!XmOgO<0jsB~!Q!`jiJ$kSpSHnMweP@j{lKNNR(9HDz+8 zpmWN|5R73Tr60fi^2HZ>pp7s>vhKMQU!~%Q9~99G$Y}?RCis2+#moPeP6MIeL+4MA z14twm2b5I+h31RpqfdQ*_eJXX)+H4}02nk~ex9C*L^Z(27|gBX590 zVDG?iZ1J8HF^;H|hsy#gQg*B%=okZ)J4m-tm7gSJl+0tJJl1^fag(H0!JNEkF#M z`yxdyN#!o(Lbhzh6*7|{+OowEYq0oC zaVLjV6utyqlm}E~4n5^0H}%o~>G_v^^3pbtOXIgMo$3%~Yp!0%*XTs?mE)+YSe_l0 zqDzyYlRO{T?QUW(h-{tb5bA)PYt6w-qjtl~JuqX;uUWs}SbALHuoezTm4zdQW(@OR ztTg+U>8@fX8WQZtrAN|cXx&|mP&Zf?8GS9y2NVD82t=)ek zc%$y0|1gAjF7J&Jzr^EUu!dF{a0JEN*~1pq4U2u}e0Ep}+XxC8qA~-#?4lcQT)y1d z-u~g2Urq>zmoy&kmPdEAksE@+&&VMgU0)N?dWH4vjS}e4F;bVjOaq)w-iCTFzotn` znxyt-woE8&FXIvBT<#kX+EppF*{(Hng#FL16i8ZzOu=_ED@%F#Lw2K~;EK z1ghWs__VP4)fWF)Z@D4ROq=5(W4)iR*NMt&^n!gt>phH^jf||;0i}zSFEu3$Ha!4P zVGu{wEHR^_D z(oDY#A3bqth%cA1od+&D(3N{9X6=DldyvAC^MppD5Q$!Rx!+5*25^qZ0d-@c0*16m ze(2h^|H7dUaps7h#_CYseHLAMv9z+{%{L)H0duG6R%o=*dcYvK+Qec3ZGxfov6+*B zfbHq0FS(>`Xg+vF64i$|b{(9v{A8}Jb%m>~63tzhwOZ^u< zyNmwawe^u*2=?0l#14NN^SzDPEKz0wnrfz>GoK<^`T>-iyh?HU&sQ}=sw$|t==DqX zzk3A`UKzzTH+*&M?etlYT!ygmz6?C@NO<7K0MV0wVAK&Rv6dqx4m9cDVFr3yyy7_o zf(K|ZfM0`js(AF+A(s1Ta)K^E6HdrVk{v>w9~1uRQaunyW{TRDOxbChw6IC$5H-%9=veiqKl!@#p-y1o6*M<1 zKh5wZ0$?;3+k^~I&DazIw^QJ9OLI4Hx=isnnV&kBdxIR(MmNoMiuF37dBW1x<^|); zVz=Bmdu=EAF_BnMGiQ1^5LNS>J;OcozSb!TBXfezl(yP)JJ!3fUk@vR*YzQGB&>uS zcn(l%99a&KMJrFiR*H4;jNrNy!?fafPM*i5z*UwP$rsX#*DQ2?4!rsDTIbLV^B)EMpl_?C-#F}3(SwT8Vz!< z1mNR*-m`;Z45V>?0?btYHef_nAf79wA@IJXzzE*En1Ta6@!-Av5GSYRBRFC?wkN&h z@gDkW=D}?Cs;t;iuIHQJo$Kf|#c1f})OAUET@t4955Pp&^X!#$G`Ua~+_0#E2Mk~x zXAFZL(GTdAbF8a$Ve=1(%>XW8hHDEy^YGV&1bV=2LV1-Vs|8fb`?>d+b-BY1#77i9 z`P$pWkA5^XfFc3FAUw`@K0mjw$#pMI0cY|UoBPp8}ID5lQX;Fn2V zVp(~$vr$n|scKbMS80l#7_A~XlSDTn+xnrAC3Sf-tF4LMx%V>2~jW(sNEC&vc5Z#L8yY%t*-h(a~8t+st zkR~lkS3lqnZ9T&Ss=E18p|~+?9*Ny`SCT$Y9w==&BG~Q*U)06|+owgoB$&7J!DVd&r%NJaU^z_f0$Ly?)(2;pzDxeMx-ouoPB-O?|#N*l%} z%Y*(4C&O-a&grWNS00%Ke>&|jQ|u&N29tK1tSVh+r%1sjdhMFJDyAn%_)A`Y?!GHJ zWHw>T#kW5CoXcbE)K==kUAjppnxs~-b0HCvk>~F+uv^dXVICZ= zG8y|j8KuzHQX!PWS%M5nW+SNX|o zlx+&+7Z7h~{=d1<5c`zEYb1z1FikMwjufMdwcffEIinU|_f|*MlGUw@oZq};+NzWa z=rRKk68hsXIrn~wi1f~CvqHg&?J~aB=kPx?8yl**9#;~A;yc@M3xk0ICVd8ksp2xRMY}h! zghO^8fQmzgotOzdJ^#iCqKf>L>JKIudFAk!z#{F+0CNDZ%}{9<1O-+Y%;qY!NAQk3IYB{{7HQX0!APV~S`K_bj?~?>wK(DRxfUc+#LNpE%BK z0M4{F@t9-HJRl6L-+dpgwmRUXfLIApFpuQ^m4ez>?i7@ou)15M*f)kP5TqVsSo!E?X|Nf+3dDS zvuWguFK)UChH2RvOVj*vi#eX=+pO`Z*=33+pUnN)4ridCc_b3Eo%8|dEYPppc5Q1C zKuNQ1`O3zrB8y!aG}NhoY7|+WiZ-R&0ph{M`6`5=4d%)yR&qiAB!;%SV6V~B;0LE| zimwS*9Db*2CU0XH3!h$`gpe_&+!tYHb8g>zZ@qQoh!<*v{ur;Pj8W~_@yNDqaT-~Y zJOnI&Mf1#DMLX!Tq=WN(cL0V1_0}}Zyb+4EfdwrTrO3>NmN>~ zNnvpcg$k2cB@+uBEi#i)D>(n%{r7L$WbcGI@7QgzJ7bIuM1pQTfA{LB6jXwM^VKhB zh(Icxcqg&EET!K?FF$!Kgc#S3eHR}Ll8VUrci082rD6Hfy7cBiZ9*Xwfq00_2SZ9? zQLUwZZPGts;&7{}5RI;YV~v__7Hh6JUsVsd5A62flHy!6)5;;Sxw&Xaas9>4 zXKQOwS!A%sX7&;z{qlBAc;u`$abqYT6UrF>_SlNaNy8J_?C-L&{*gSbLD-j!k#4Z= z@6ZbR;>RDKI046)G=&9y(;8I-WIS|TD<>0k?oWEMo_F-EG#_e(p{K}qPd^=n=}%Mf zfWY&6A!K{8M8}Fp6ssLDppR3gI9)n;%Jjbl+Xj?6?)^Q`h;-8j$+s`lZ$OOwdMag) z0$JR(qXd?Y*{9ax2P*B!2rcz{U0tFTzr0% znkx)M;2xm4Et*}dFo5{tFwBgw(94+_&RcP(d#Jk_yes4qpaI=?5)gS`KZh*(UKD4( z6}V(tQ$Xr+H)t{oH@tESUnQ@tTGz%m2%YgR^_`d$r&~a9tul(tM*qOkQZLka-i*V%e1P|)t|D|l@zd&L)hlqA>QvTz|8o5+;*Of)P2dv*_p5X3z*!hT`o7e<)a26)P1`i4=U zpx_4K&<+Gr9KRL@gIr=;DnFtsT`9%?6w$ra%&vZ_?_G;L|MKQt$9veNuZ_GdBiCxe z4HyZu3&jFbh3XXGEmw3k?K}`=r2OEHRrK|Qvb7DENkmNza%%!aPp<(0>&I+!{D1(= zZUhFU$vWCe^d3kP zkh-#XRvlnwf)Gv)>G$DIVPPEKjuh(1L*Ks*;-S)O4{}LNV96uk16|?pPbhjs!X!wa zx;~MhnwCp@q{;mqlR)=K)m{Z7s$?tQXJ*2DLV{Jb@Gs`wt*at zYZ~>?gA^L-&c~z%9WTjO8>p%<^GRkTZ>0TB(4GV8Nfe(GirKcX!U8HcGLIB^Y0VF6 ztkIy}Xbi{b#&UD8U01E|3^QfQ&dt?j5;0r7TB5YYf(ET2oLp482S`zmX=5jV2J_SI zwL{~^VstDhq=Wv#&v^3gAE1DZx@crkQi(!mMZ$meY6ihcV)95kWc8mGlBbekmiC7=_eE~l)aP?vOHHHqU;FR$B+wg6Y-^db6P>c^CWj%RC%m~yy;-2lmc1gf~j z8nS!PEC~FKXmIjjSiaOV5CU*K^Fx#%e{CX!Y(UlUN^(0LJBw7%W8?wab6=0bVCd<9 z#*MYvClCvt(I^{SqbF1d^&(GiT>saEvK%#>sTP|)6%Y{oIYA$a5beyFtuH?Qp4BcA zFmexsoM>9fq%yy`v04QIf!trMA%EA{vnGS7*IQWPOCW^n2DHetgF-k9*cu%0V;wX-4D{kOPF~tIb3jUctnW47-n9G(&I2^&ZpnAyNu3$o6R<= zqO@Uop!=(A5Inga+TD3Vi9F|N$uZ-TmZT~q3TC`wd6?yaCB8j#22%^?U&FYlp0W!zZfqZ@HZ1IOyF z(2c!fTbeIBf%kcA$tV=Ew|oR0i8)NQp7y zfTNrbT8C`YOPuB<=w6D*y|h2|=RdEAL^fn~q3$Xq{s>NsC&g9}riWTadyA6Xnp9}D zF{pkC{b7+rxLPTxhY&<5vP)%Vy&!k8fR$%@x)yh=>SStydjKOnSC!hevKnMB`5m{O z`Mz<*$_3THZBrK5v%l-R+*vD-5#?nrAm{y(wK)=DqfpH=bOucW<`mQ2--23%rgSI= zuuyQ}2Im=uf~A2V?pMkW5yo?LJkf9rC+c4zB zO~kv?2F0mT!2^v%G2kxF$U+1$_)MY_SpFPy8;ACiVR%GHf0%;^(+Xt1sU)xU(kHTH zw^-I{jM$T!Dz7Bh^Ugb0T!G2n80XwoO%kJ^Wz9m5GvQylIgB{e;MzINv`~MPZVMAH zTs0p3f$@~7+PAl9e53o##96#<%!?IcdrVTl+%axib+<9Ra)uZB!+gi+Iq+5(MB&7V z6fUA2s&lol(tQz0V0>CTQ?R_!e$|Q8{+E_Ms=z|Y{x&|=sQBKjvu95~K z=3ZA%uUDbQ?%8cb$Zok|e!G=85&{{h2-tZr+6rYGkxR{Y`s_TnPrfbb+t~+{3c}tE zgay=;YuQD=nZVbJM_;vPuJwDOpf9$#_x$l96y3e#)q`GURB&okkGKg{W9D&}Et4?$ z&8coT1_*~!&~kqmI&dOJqYwu&esk4`qy+?(Wc+|pC-;a2*nz9utd>Iw$Sq}I9?hLm zPQR=XuTb?KVVQC4jwvCH+$UAEj9Q+ShLZh<<{NR&*|zHP(NLQ3LIC$Tl!n9r0>~SgfP8CV?Mp!0!Kb&O%<(!9V|Pz#gwYKcRgxG} zaRNWp|zSGv8Bn6O0f0y3UX=P>!&3~{_+}U{R1&X3nO!r=Q$ptJB zk%5~C6pN$(UrtuA!mCm275P~2BK7nzRw@YjGz$nW>~(rFGM`t{6py#b95yMk-tf)s zEuz*;HXsZptRDgr;Ijhu?EtfO>(=P`82!Wl9*IG)?;Kl{W$~1jNtMU&7G_&M3r7RFJ^)#(& zm22>V?PCS($}6Wsd-~-!-hgQ(aQS1Ks-})Lx0**yW&Y`Lj~d~qgbBfGHMNt5+p+Xt zwV^z*JMquhpmrhEkxo;PDwxj`cNLlKL)V zx4FU8*{1D;EEsZ@dq-b?@<6Ky=9QYZ96Hv$wQb$^wY#3&h!MSu9ip+gR6n64rR=*B4+x|W-|m3nQu8EOa>5vW?~!{v)N$AxBDc+mr0D@r*CBcxp^5zmdS}&e)1E@VnrX(e`aKEarwb#b{t&1CuI_v zz>$o+eA7sQPA_0R2Ia^lZDms1l-t74kd%>Y+VmcaNa~SDEH2Kh-VKBY`N?Aim{bIW z^>MR&g_8rGg{y@QbRHquE)E71b><57-(O91U&l$zejG$DV;Zw`TKZTPs19fK@y*io z_y*m*Jt8H~YUiWU4Oa8OFWf6DOs2TLYR0X3>Z7!@4 z7aQ_iU%3>`4T%dEBYh^(CX?r)p__j<5uohC$@gDN_ti!Y?Oj`4TeWuYp*pgJUY7Ec zr74M874Sn%)dD#({dcK*UdKf{>Mg{DZ_O@x=W+4n)>tkc}fO!qH zn%Yh6ZH;t#oc>6h73WQM;NMh0-9yHh7299W2!YNZ`uN{V`z{>jfL`-m?6^`$j}`(8 zVw`P2+)g2&=Q4i`>;rJ-@eE*hxeyAof#QG?BZEoNXPI|%{*_3ySj9wgXQ9a|;xnU% z(@gJXR)7Al-mF0D2c9CM$l+G;$hx$~#qZ%en0u*^Si0z@E@lt?UB{dB4E_3p57-b? zo8Rd=bmU-%Kq-fKXz%tma)H*CGV4vq!`A!r%Wy@D^}IY`MuCrEUg47BAuP5Bfjp*= zLcug(fdt!E{CUt}B}Y)jH-JQNM4ritiMiCi3s>}^$5S0ZIVd4+s$ z8_Y1-9MIQcgm!6}&0c1-8p>+yxrg3(l)6``Krok&JuP za2H=DVeN^OEp?}qUj}(WnOSG8A)887gFNoz39i}Vx@8oz9DWd*j)Ixs@abL zE*IpghIlfv34xbpW_Ip05ofb(g2^yfAX_+m`pI`xOh5VPqpPl}g2eK}1ZCpPH}tP% z^aE7YSUYXn(Wz70>9yqb+-FI03@A0Y_yUKV?WOnvi%8gW!Upf4LxepSd`A2fNA)>N z0uscyLxpY|WWQ}i6%ulYY^OU%A_1(1>CfHUL0;~rkEf6KiOeQxuSla+9p~^zs|2zD zBNk+N0)Xa!RXieH2{s<1PsPUq?V6r`&W;y$9o|{*o4#=Vf>^AqtaE#S=N&uT%w3y1 z0QOkq0!2{y0Da-0H^82l04C6(-QEUw-Gi7`EOQQOw|3pjK>Q*puA!wX$cXR~)_6yt_t#Ms+MKA_$jCY(F>56}a8wpd?&B2qiN&jhtR zV8?gOoI$#BKk3N^;U#Zp1ZovO^elNjwGZ@D=?-`g1K92tI2ufh^vn?Fp{6%-dkyLQ zp&c_o+y?IeFTjl*6{9(PMJ{yVA{hf$(A2p;!7)P*v$CK1d&m?RTRAbK;HOulO`|G zX0o4dQgE{C%Vn}^>&y#|jVRNJx(}_NV5Hx>*IhkDY8FhtW^*}ndvTM<>?>!@1~T>E z(?>gAr6U0xq8_nnLYG?RlgOL;=Es|33$u{5%JpN`_rg9Qoy;E#W*Tvqc;X7=QS*P(+x&Zww zaI{C1JlG*Yy}EgEg+?820=*|sJH!<9o<|)X3_$*S}~Dy0G)d7?Of&W<9mawOS>#+?{(YHx>gy|8K1fBqvhmr&9rzimhg zoUh>yvP}8DT5D^8G4of%*!{2~LvTy~!g(wBEF&LL_hS>~4rvNPyFRT)R2`_5YPBLF zt5EUub(I27U7d&D*s8mWiHUNL{TuyH6-)qX=gvJfXHJOjAs>o7Nt4u?roHrGqg>h4 z2x1o3x0@0_EbphaTFpr54_M z*e9Q`p3e1iT_T6fw_;Z$s9F9}AFvPe>o)Akopn{uo9XrYW-s_6ktnlQPM$o%1{Q{A z>K-$~Nv_g4vPrYqoaxS)Dwb{TaJH^pUdMWJx5mk9@mxQ7G6=`IAC5KFEU;GS2AEze z2dBuV2&FiqSSRGtOs+~@T#w>WFRlw7>LCZaFClSNK!3*|GWzUacj|mLeuQuFSYwt2 zS1;k4r1Or=qE!usK)s?#Ue^+>*EiM38{{<&ZcS~CI;gCy(vWaEoqOoXCwK40p4iQ@ z*v?he2%E23vY}R6HG5jQ-Zy>j&*~+=SzoU3$Q%nVC%Fc>*9WM(@`@iCqzrMo`HZ3?X57t#Bxcdk#_Yz*XizB{)q1 z*jp&wp@n9P-w5%gCqGFs= zcfWIGl-?|`yh;RY&!h(Z59iM9-RlI4r(yw2BlAU#P9rlRLUXFxg|o_a<+B$vRkS-s z0`c52WByi4u|dczji3KhPt-aI@SC0*lXAet&J+T~Mp)?t-r`oJ$;>5*4?scEU%K?B zB2Eh9PfVh9@Zl=r@Rq+o_~mm4!T*8qV+=ToxcGnI9|x(4-5#NTe|CTLeyO-l=5Q(+ zU22WUD7PYR&n#BKWVWkOW&)j2I_K=!ojU=yXHPPz`0o=;D+qzTpYyQ|$@6cq%UNgj zyg60TRrS>orBKAOjIt6a*##oMv2sz!J9>21>?y_-Ty^d)FyQ%AxY%*V;dzen7!hGy z3;;i41BwfHVEb^8H1B#KeatsTSxl!&)$-kpIrq5__A~*6~6lF#TR29^zYD%5&A{+oeVqcAvo6BZ6|LL40)Z`+4rH5Au1re(7htaunWga=M|1@X$GM1 zdiYwuyrKiejzV`1E;zZqL+#X;g;9d*;00K4w<#8lr$ysSM`> z%Hd}A1pI6E#03UPWao<3__bqYCc*eKnXh!VM8s?~$C7PEXF6umT2dKO6JHsp-^Upf z6*J%E0Hh5v7<-ua?XeBB+=_CUZT#Z0)Z%KHSJk|A6j-JnFynb$YII6^D3~`D+HNzs zo(6YIan}Ziq~Lq;q89QyCIAJFV!#9mZ;9xc3#p0#x51VRNHzpmnJr8wI$?Fnnlhi2b5`uE29DqZ92S$i~kL2bgF=aAkMoF+sb5}|z;~7jm zG0;LoXu&ES7M|Xy<2gOD-0@dlfnoP}oLqWM*{RJjky79)ck|^H5}2G4`!&MyYL5WE z&v8%LJ#6-WZ|q2i!>qJ?lvQcYxJC5ShUKf5)F3ftJ2dWQ&E7NG41+G(_=@r0s6@)9 z7NDaJ#!ZTHH_&_)N+x8BJfOPtv_?T#Daej7>T>&7Wu1n*DtCb2ET*LSJPq}k0ub?V zZ89uf4|F^8Cco$kO3XdXkmcNqBRhuxGWIEcu4TsMZrcLHj^6I>K)Wj)QbQ3t^BSH7MIvJvv2e&;)6o#t<>1dzvK{8^<}Y_%wS{nX|PWS^UKtFdrhfvjR>i(?F$|O z(s6M@iRhuJ;KZnuvc z&<_y-wg27h88!e8C6D6r!@_rixEfMUpiwP2P(N52eMuR#WKub2TKpakzyaTb;d1dZ zvz!(WvV0i0?^Su2ce}a{Mo@F79vrE=RRpy*{(bjt+T;S#n=#)%-Sk;A6h}Q~A{J;Y zJP~~(Dm2!XqYSyX2AUV7l|KLNw}(SzEj;GK-0jTm=idOh4Pe`(J^(Tb#O$!#rAhK- zGS^BLhv?>9A{0U!622^EUZ8&pAHDKO5a6y%*MW-AeDcZ3lTPSjO(Bob7=GN0x{vPZSxCC*)9|?f zC$$DV{Nm{17+C6lC=MKCPR^Kd<@D)6dMTW#9&QdV&+MiKj7AK0rHDL4H^+r`fK}is zE&`lI$w$Ai^ray!aEJqlV8m>|zM;2i5(JX9R4Q~iu^vib>0XI61nP=6BfszKrB(WwIic&yxRf=VltKV#9*%X0Xmah zGsrOD3Ooz=!eUbDf_%FbdI<+)>HQ$!%@AU#}=pCK=5AFyE0gu|WcFU$VF!u-; zM^=M;GrA7aq%LR@j4c3L@|%wwe!pl3pnXKsQ^Xf>Jvk@^;h)3B9JsAR`~a*n^FT(T z;yYb@DQrG+jI(O5gJ*G=d0xMQzJS~yVg#-(i0W&_aY;3C^uzxzB6nCo6Z%^!S(nu` zj*XYWs)UDEgJ{BsAD%w#hFl4J319+W)=1QyU2qiGB;dxYeavst^q)zF(K|<4&Gu34 z=88V6LEGF)zm6SDR!^Tk-h(75uHF$NyrkqCnIyf1yD-l{aR#wgc`8K2i4+y!;4O=Z z<1Z#@2d>M|s9}JW1nqK>77l|JvH;PS|HxEcy_SW+`2`ozPL!E|A#lc+R2zj=&DA1h zrHml>P9)q=QkueP>0&j6Ih%M*e#IwQk=Y^) zK4(HU_gA$AoToyO`p9& z)_@M}#BQZdmkAJw&|K^0t7#86#y_tWP{HaBm|vlw5HE)Qg-%-C-frv(9!$u!3Q|k% zhLP|KZd%x3r60cc-iZ@%e90WR>~;tmMS#^BUb%Q(kU#R;xZL6!)nl@lx<`>yot<=n z%`OxG>;(J{Axh@`SZ%o_5d+b&c(yDM$kmcMzmD z@?f_`!`9_jd2qZ9C19L3DEWyYfi)KsVwJeC0fxfQLsokrdMPDcv5u&rw4mLS|WUgx@nVaKf1tzr$oYvV#UGbT7P1QN9kOY1ex zRLthJ>JAwvfh39q~Xuml8mQ2r*YF%@qx>3^-=(D;<^je)rzBMxUH$V{~ zb@ltsj`?F@h}$YOXD3Q4hKIGX3Z=PsVjV1RH*~FDD#Uj>PCEc4KE@220`qqp^2>|S z4am?I%Akh)3|^j$o6p5g`euC|sa06cVhBEDSqt&*K-UQSe;6o2yE6=mM32uqecF+P zGnEbrY_j&KU3^0frtf4TiAAkyG{g9vxke(E@2sJJAOr0&Ru2)A%ORWiNfc3Jvmc6dI>$+riQP;Y;9&xK{_Szue zHiK(s0|@E;BsrDL9cD%)|8RZ@bFF0ZRRO+2Syq2|w0Qibjrhyzoyl@@+*o5u8On7{ z&Dt7WOQ0^kW06bbRruFm+@sd?Ub?;Obv0Gx#nrvya)zs6XtD5N4>N~sW3$Y7i^R8H&(J8%BRdB`u#w53QThx}m+zQ{! zg>~|V`P1COdTn!OC!m}p%L~Q@l@$^9`hQ#X ze70G%?nBJaXKB;e27nU@>-%PnVi*Dcm!3AmHg^@^@I+dMz07dO`2!g z?H#f%S=*CAUAY}3Qf$6lGphQ5Ru|i&9DA}A?L+;AEy}*bYisxbVhcSuPqyLtBwr>k zi#&cP6f%f*pBbZ)1EP~K3iw+{nLyTiVjHdhTrH8;)d}Tg9bu!Q()*suKXrmr53){G zR`&$E(>Z~!bM7QWO5&3I}@eT$3`~B z$X&@KeI$I*k$r7As2Pa}*vOhm4K`)2MQo7Rqh; zX~dFDL~L-Plke6Ij<(vcxi#no@I^3L$8z|Pm)VgJ0}zT2hoGj#EOcWMOYTSlMP~xo z90cW2kWhm34b&GHa+anZ4u>ZqgWZcSLQ+q+qwX$LhgcK6uyfzOt<3@e-ZiY=ys4F} zO(f2Li$nT6&;h_W3D7dLLd!zXe|db~U)wiz(64~Rqlg=lKz@#Lx>@dB^Y=b~>my(c z0dI$I3zs5KSb>!YEbjvdmrIiI`r~_*iWl7PeeWv^0mundRKG?t3NPUC_F{9tDlM<9Dg(@h$0cg1U9&qTo_t@H@Agj~ZFO5lgWxgk zv)Y8hd^o6JQ}nr?{`c9)tk^fjmm|}{;WryrEUpG-c%FCSl*)rLPo=Keov;u?jm+bg zH_5%_+-^Sxu?Q)+17uYUKsb$LEvx?984Lsx9F&!-8I&4BEOyY)hVTXMA!ek!+)#3u zT%8J{!D2YR5JB;Fa1zx3wt0e>V-?G{1c6*i5L~xF(Bzu6v`Ju)HZGnqvcp1iXd{zqOgiQzccV{kK>jBx|s-0JjIMwEeb?NJjk<=Mm)7q8QuIg1A zxID6`=T?kC5D0>)RIwn&B};f~1{Zz?-xg*8Fjn{W))F6mpFWI4NQb!uWDQL-Wx4b8 z<1fBAbEX1#db0FO`Z+zphT^#|Q>1mqjLWh7bBuhS`#cTB{M{QlX=xQXmu42Ch#Gqg24il4Dn#Kk`;Y?Gwc$ZnC1!*kMaqy#gM2`SBwQRpVszA)Q+rKXYQphhbOeFfPzU@nW&$xk`Y!0 zAaN{`!}=i@;5rs(({Mjg8y@MRuvMPPuOAl@puPK*wQMdl|M7cpIg7DVKC%Mkslu}M zvE$F*dK>wX^521i@(nQKKevZ@G7Gc3$QLhc93_*Baz7@M4P5qYrGJ^4RoVr;JR8|J zR_Rq{^%59 zgNgfwY8xP1x{G0^=5FvZqTKiIr{SM7X-$o~LuxY67rV4Ben{Y;XI_5!l1tn`((`GI zs$%4iv8$qtkAD0C1->$!x6h>3G&Qpt8;n4jyNS1G{t6rQJe!{{&ttD@xP~8&5)O^% zASuF>$X|H;;_Mc{?cghLz6X6xRm@b`H4i?xX_Ftiv-b;KekZ?NXm{I1R}&Nc;sS6@ zHHyYqCBWl^mC0tZL+-7r)<~UVHT)gY{n$8~n@rXyo1*2w!U5b&wO-(s2PDQ@kz5aX zN>tZcCl0Ct9Zm8*DPlgqjJZiN@0pugu~yY^^1=)!@g1uA}6 zsT%Cu@)dW8OY+8{1hR9|8>BaRG zDWyOJc9%dL%m{^brkXjK@z;etxpP_a+ivJeJf2ydq?4Hob1J(JXuHK`3#d$LnLaut z$(`PNVaA}T;NWcBa$q>q`(K4$ytAdOW*}HD-pTyWbqvNdoEyUeIfE%7#Ln>R#qYdx z?3fEC4#iN5ba|S0TzqL9V*dEWhc-)N3cp{A1B>>~A3`9Q3MziDcN%IWA%V$OkN4oO z9nP7{0|*RhT{dmAW9BND5YX^jm(Ow!_$#t5_ZN11RBlkofM!9;ldFv@HRYpvtvsoO zty-nlRL*qkJ+sC7%Gn;XF&zCo3v3)*BQ+R%J>in&d37@9YfUn75V@=Y49lT$QiL(a`QCYXClzzombQ;9&#xxhEJ zkDQ}na#*dXZQ36OW)$D>l>U$1N`t-!V?S%7k1rA0It^Z7MBt_jsyO<9*65oE6^8#7 zB)WwQ+urUd^ZR0Yn1Ggf%GC@1W^;gnN1!mEAJ}HADPeY)lZ}IHffvf$kFt$$2xJ^7 z4?4d5tq8%5DAX*$uK^&9+giXlqBY=3-0(BkC+D^sO&lHoE;|2&+}=Y!%V@}{EWPbe zw+L8GyG3fX;%Wo|Xb=WDo6M&t>A{%9S!Dts3`ow~_yBJFAcK+;cS48F1bS{x`X2M_ zzwdrs5V~l0gKy@dg_#(AE6ZFN1 zBJY7XhM_!;uIQ$*wS=I4E{KH}&^K{A1-%Su2b|&ik&>3Y zM8LEB*rzp_CdI*Z^4+0&kzA6CVCCq?ADOS{e~5tILxVj%z^46P^u{PX%^YrPYkThe z59NO7b4#pNkZqR8SRuVO_+>EoRgla&UraHcV2e@``H|rOr?k_ZkBV^Nxy3IfuY;>G zaOL2_6;sY%J9f;p?(T1p=TOJY%UyLWX_?ZF0O;0H#FaFRYQ|qTq(N^_UtcY+kXO}z zS7i;gDyx-&;GHRj9VCmb)b!??M~}i_0?E)tEbzTd&yZIYQ?6}Aq+|U>{jzaaw!klW zb$iCtDJ#n5Ex;)Wq{Gck+JLsDm2A~n69%&}(^5KwdG-cGdlz>t&s~d?Vnf{#ygSAY z_$lEc0kt}4Y#KqWY-?eV1=;CeLbCi zG^3fA!Xi{`c*rzvT}I$DXyWSJ%kA_oKMINAs&Jc zHXsA=-iwez0Ed$%lk=1XfNFO|QmC)>LdRU_snGHXBudYP!}L&)R7U7jB{-C;=)3__ z$vpW}bW4=}F?`uoM?;Vv0#)_J2ZDy&-`=ACVEkvU`?&p&jxans&SO5!HF*R87BE1* zi-J$s=HU>y`EAH|G@v_MNM#45cmo_PgZu?o{uaQt_zKb7KS0#{XEKefq?gj|%$RTM!1`q+;@`Z9`&3LbEE`&<(8uasqM3zSGi&HW#An--s(U#3tCjy!Nv?R{HCpo6mG zcTM!+u*NNn3!UC1^FxeogU*Q+czBHT$IykLLrt4Eg3P^&tzEdNnurxsZ|UHJI7G{p zVezu77kh*T1Hby_?d$KZKtx`{Q~R$r8ai}VT^G0lWa+-1MSK+U=jIJ#q5zlVKpz7I zBQ$`VHl$9TFGst%z(J2XUts`C;-Q5N<>Dq-0z``Dw{}PXcn%WSZcWlTrvn_4uxqN1 z`02Z3XA%%xN~zpwFs6Nw*7;*fnG(dZMSPap@DSf04#z|Ka4oQLR&|cVUKGE?A-ATR? zwXJFv>-aSb=sP=hJj`5Kx~usp|0xI_Mc^)w(4Z5ddo0m&ET+YIPDpl&ZSq1I#I=Vp z9V&eVQ{Q}iFk}HRYycZp1f4SDY69yQxf`4d*Lr#wLvYQEGMP#^aY2jvvu=CL+M%xS z0ntodjkZ%;UGZ5j&yw7|1i8fLZVVcN+WrlrQHFcc1tay;h`Jdtxj-s9wAJO(ki=Kz z>eSZyr6Fl~6%%c-0&*#6@98D3`Ij%w7{rkJYPu%xcH3*GyG%&gv)JW`hYU7jEV+2e z4V%VT#YThBkXdk~GrM+#LZ~;1bkhz@AU_tvRpuIxB?ijGhH!$ea@mq$L!~jE=E{=y zv6pjaN>+lY;W`%PTVilf;6!r31K`buBa=@ov4GkJpJEUW)%U>+3Al)Z7m}$ZEPa1` zNAvbh7HE=J%>B0e_7BM&bTsqilV3jb%<7D#dqO?v=Zd=55usArtZHmENnA2xeWiqM zhSchvk3PEcN+8N(-bvlrVro=N>|$+G4b=jB%hOT9M8aX_T5b1%wY7+?4c#YU9aWRZ zIz?K(edK5teT>!uJ9)93B!}Ga4k*QH;U1~EB641#9QjcvLw|BDlw^1018~$Nhf@I; z1R}^{>jvw_zxoAeuKoHK^6q``{|b&(eoY525}EPor_alzm72aqAsAR}otaiVQ&Tm* z&(NUj8Bd1&{qJvrvbk>b@)+MJ?wsGJ`n0xw?s!Y1Y1|xo<7c0}E|XU2r)=wmd4c5G zvFdkgYbFghHX3>-K}-&q^uNhuRi-)nNAL~e>;?aiu=jv(tGwRF^WLky_ujJQDO=If=*{g(7N{Qb5&$*IpC-D9M z$VavlJ3;pyXFTUQ&zYvX-O#rrC9{ea?5Zdnz5o7=8-bqAYG4`VvoBxfk-5ay+1tll zR%3{C*!>>QloXeI%SGd?ZYunh%YAxALN5I*Y{~6>+70a(*Dr z%GDFcYJ75GMG0m{>u&kBrQ|kY)MR0VaOch-X~mh&P+h` zQM3TwA@hpIJlyg}-yst@Hm{&t7!&-$XlZQ+IhK@b)a?yKDs;7ol?BD)k8j)NgA(uB zzP>;c&utfK1x^oNE{6UMFHb3S`d;emYi?#;c990Y!IO);;`$2shO3&jrvhI9cW|yR zR=AGYU%1->c^Xe%0YIFJxxX}(bw63!*f{NyDuGVqzic{DO}eyJY!rHTu54_ay040_ z6Zij1)ZcIE-a17}^mzF6t<;?)BwCa~vE62@tv( zEg{@71@W@Xg45IXj+7$ghEWb8Pow<5 z^vlJG#HFN{-gob=UAKPq=hRbanMxU|AyR>*R;VaQo_uoqcBqrX>{2ODYaw!aFAS3t zhKaHuxMWzZ!C6+tq@rl%a8<%5S^@MFT(F7}83bhIPD9MqOH4L2fo$m1&p*HJI-E3a z!t{YCCo0_Xl+<`GcQqE!2{30xPApwr-C0fZtbU=){`=~=d^O=1v4H?OKRb^4Z_nZ`O}=Cpa#^VCyY zw}Sc(xsZ&bhfc+6Lo0bL4_USsyVwr^&(QCm(r1xY$sH5tHD&aVef(bTOvfgt){@JEoJcgq?>eo4KouGy~`rrI(-PA`lTUz{!#=`HdOZMBk} z108ag(R~TJgM2IThy2pGrll>QfU}4LM6Q623WT^(gB9ODQX}GO>N8ae_nnf<}r?i`F>Kvf|ybY$3iVqQWVG1^fKu-hndWHsL zi<3-C7KCT7JrnBvr_f#O48uM2Uz1?8i?E-NGX~!>PBOX!X1SDQE6|_~t27KceRz}Q z#1gxdxN;{Y}`|IRME^2(2i^50tx*|Sfr5gQGniiPXQ$iX*@Y2w|`K2~ft zC~_o`H_{12ni(gZ{9)^eZ@7Gl&;x~$-6aGw0JlNldG3bMNREN8DKDsv`WE)K2(9PrP(KF3hV!y zk*PJHe<~HY8i4YjR0k6-=<{@^!rIX(eb6AOl$)C9`Zi-w8Bw&*JKlS5-##F$GiM~` zr^#LXD}H(~jiV&mZ~c^>1z^=D28F7zL8xS7NsGF^nm7-dY=B!UurLV}&E~3+X~-I6 zmcFTevQpE?Ja!8>X`IrshHDa6!c4anuja*h| zp1*T61_N7X>gktjh0KRaPh>sOSI9{r9h44YL)PCzFrHfwsIt%_`4&;X*%jG*)hVU?ma% z6g~f!mqwXt6QBdE0*}#io&4;c?Y|nvB&$46KHV=&em~V62J3ccxQ1nz-n?0>_hEk zMilpF!?0Q)HUMi`rpK>DZ7nbOsy-BK_|LcBI=j1%GWA__PCk<3+oB!Up6Ic+LzV11$mGd8B|IjH)Rf_0eY7(AO3mKqQ}SlX-~7vDXQOc zQG554Miqg1)DlDcib>1@oud=_?~odX#h%AF#9cfBo4FEPxI6{U%Zef*!KH@~409)< zR2Bq-RJ2A=6a0NyuuN+amU~~zPdohT4exL}3Tj(x|DW6kMHM)hrKsp|#VKi~m@dM;ED36CcZS^}qz z9JnqMrt3PO+Ob$)Gh?#b;+Zn*$CPcdyh7@(H7nUMHgnAAG$sP&OLr#rVTx+KP)?XH z(;D?$g%xW`IC8Jd7#!@;8Z5#L-8C+?MVAW)2M4VK%6$TmMeZhFQ8RR9&G6(zW+1o$ zE?VU`2&))j;n&d!9bb^o-%cLP(bv*+JB~qwVMj1kuaMr7qK6avuG||#iJA6uF4!5( zr08vNrkmbrr_cU&oNX^Z1e}9DI0sj8=b+pjhpnScP=n|#Lf+-~h9LoNWYJL#*;NP^ zxc81BH%E0GW|KK~L&^TWg?!H%=JL^$*Vn@QuOJ{3`ubiPqw%SdN+;c%Q9H59@;W=Z zyO7AQVvnal?lBOs0Y(GJC#;JufXh#e?z}}`vbPWV=oMocwgy?>s6*S zUt?%D7!0xYJJ+u9wqNn)`OxejWR*^^rVv&BqSgnsI$bLlp5DdYItcP(aOVSGlmwU` zq~a40# z-6qxR=oY3qOUI|1$gT8J=+H__)#}zN0?PBX;90&;D~)WP)l=h}Z-VYF#I;`}zb^cn z`AlWc8+GQ+Ms3x2yILO(pLXrsdB!CDjpPa-js!B>oG3J3$h@twWlVZgu6fvAqbA|g zEKbD}LRwO6Jwrq?g>Az4+_=Z#A&0<(IOHC)L-@vErxSxK1HJ*=>j@8gl)xmJ?Kr#o zyiU0{5yGNcqC@w6E_W0rIG;!ULX&T`S1ec?6`5s`Q|E*eSB#fiL=&#cQB}FUb4QFW zPF_9Tna?LJA`ljG_KtK<1<_>RiWRZX7>~JmYOfXgQ;pfN(%2Y>)TQ*z%GM1&p%hN@ z?cfJfoEOAiPn`1+fwMdw(352+24EOD;@um1EUv2?9xBd)+2+!Ya?3O@{Dxgz_-4^# z0isFHw;P%aG@`bYQxX%Je32>eM=eMuy$UB5~egwUa&+as)s(IggV$7kRO%R&z)8wub4Ua z?Vm^AcKe_EkT}wL<-u#aMvXtPYnfZ1Gm1lZessnjsei#Vx5_hf5f`kzI}ArC#4{5O&e$+zMYD##FpCKPzqwz4W?^*4!)g(Cs=TGSzblbE0kIR=39lr~&|89o zHqI^$8hQ6x1S5{NGse~y;E31NX|}}#QqYpK@TEZZV2Q|~1SKmo&*hQPCvzsREY{!O zAvfo=&^D#WRmc;g`@^E+{S>xqm^xnh%II*CQ3Z0rnf&?p#I z=7Gj&b(LrHf9ysU1np%!Mj!NZHWW2>QGN)|oE_>z#mUathlKZvvm23m7JtDZ9n84aGqD`)O?LxDn*Nxnf)=;iI-5`1uYEhZmQ@ALWmhB}4KDD(>rR{CAyuIbFAn=@o%POjC){5Z%2I^GMvGS!9m zJkUb^&vH?lyftj$16K-2&PN{IlLy2e^J$&>2%Ds zcO~rMx=VaS-Qb&5F*geg~^kjn}RB*C@gZk)S(aP8|8NMf_{NQDM|`uV#+@A%-Lr*z*#?%rT4Z?jyynb zX1Y?Kxwx_LuGIzO+i)}mj!}4CV@(_NrcAT8X0lUlh{VViQOl`|s>L8cD= zZ+5_ec%fu*t|%qFMO}&_(poGkac>n*AOtk<5%u(n!^(zLM@w#=3j@kF2ePz3&>=`6 zzIA>!D{K{{1-)+o(FtVGHU*5iF(9}vt{#~lBlCyq#C}-~5Qu(=#kObEI$f?AMgR+{ zQ&Op@pu7M6(@q1PBXc-;Fa4|jE11i+=h<6tjnGdm`i|3=c|q#LF>Se8T;;D8w*e8Z zPDVa2e8`-2>AlO|e*5B!5g%Ln#1sGQmh1Rt zr%fQ2gGz!=$!aTHpvCSKRMjezW7Qrd0MHMUFZ$`7J%GAFSMs0e^bVfqJ;G=EX9P_m z(4iJcbv-JRSw*5h{y5AfFG@X0@72kaem_W-w8c%(!97ajOc=GMOd5o{r-P;;6P?>Z z4#mtZpbx9HsH8k#dy05!3yhgt4ULOR(uUH(D4_8q92MDMYE})@#w;g9F=50^IM=0+ zF3uS7D~tkR_8Z`cunHK`;OAlb|L`pg2)SSpOqr3haD$6oS@LJ(g&sq4TnnmcH1vk| zrlpkuhr}VX*Et0grZv7qfqn+C$vhMeBpIQs84{fw=suA(d1b@YK9N<{HMUwxUr7o8 z+s5-#1?T6wR%=IC9Z`p3Y+lo~e^)E?a|oNx+VzFJZu&&GSTA&pnn0Y%HK~R1vy;qp zo*=ZkN#O45G|>yrtC=x#s!!$+yGD&4?IHCEw$Q|akZYE_kSmN1I6xxITxrQ;H5qYY zRJcPp2_;idmmaAa>0+^V*ug5<@uIH_c_CfmLYY<#dhueM3?s$yL?KLKgfppa0f|zG z_aJx%^@s+R0k;lH;{fiwQ02~Pt2H_L>^=8v-AYc4*Iv67Mj?pKyp%S^1u76Gh3-j* zO;m}pL$UYY7dAEhJ;BKI4xd4x;Uf`GYCx!r4@;h- z@6Qx!G=d4lNG8&wq0QSiw+a+;HhbV;nkcfPq9f^jEVJ$B!`Dn^#&yF4Yi7)VhfM$T zXGBw~3_QUmOHi8@hQ4Eu9k!5i?HgzaOQ{9wc;duP?&u7ySh;5gQ|My;z{~~W$uAhu z^6|runN4|m?9Vy!m%?xKW%OQk5b_+znqvt&$dridrx0zxor`IL>S&g%plMc{pxaZ- z22M`r7Eqm9odBVW5`BEO$Vc_-8QuY1~=%;*={#}WzktO-EiH<9KR0| z!s2e>;}sDZ6m-MpR>0&TJO}z39!kzQ7NsppnMlz%a>yS11frrCnIT$_e`C05E%Skg z_LPig78fof>fYXoX^C3kbPFV)dJQln-(ADEI4pcmh2r^S@|0MtHGcb4{@CkMH=J`0 zU3uSq#aq7b{`)CS!(cm1Cnci-ax;1f)S4n!)GYW^Z^lza8ir=JwY84v+P(HATbfs^%~h+i?mPd~l!M$osuf-zBl zjvVb&>TuMh9HKl>b%SQU1D*8i%r!?2#Hj3p4=%qP3;+rJr+sS_N|m>yXoL~bKD!&L z+{#LB7?M!TT0wp^L7)60b}R6ni`3LToUt03f`+oGI7Xw$ooFp?FkVP5B0=9)Hc+j@ z!*jg07%bqQRl(O}DUR^G2|JLy>>I+(a`U2!G?r9Y{26% z9(|}YqXQrr)SEFY!NcApSppsZ$>0cO@Q=zhV z8N`S)%w2!Gy5l*CxKR_ZG&c~PUh7bJG-9#ZB|!*Q;%~9ltB(DA_ucE)1MTA|7MbU~ z2LHLfxHa}dOrli!y+CU)RtjX7q-AyaR#2=FHg#06%G9w>*%>@b`s%TLr?%Afs1!)i=$*+wD2R-Q~1qj7YTtMAty36D_HgH zb#WXn(Yo*6!5uG`XAzum!sRYazMBvGhd#T!<9K$tAiU(N%7|V$)jk2ldI!tO3{J$X zCvSJrhw@HFTKL(HsMg|?(k{sIt)zCOwocn2GwB}$+KMXV=%AoH@?J<6uHk8M`f&vL1Z9f=n;u6~QbHfj(^<^tKffcP*}E=PA80z7^s z9D%tf#&HP5agkZ+-f>9-7n~VSU=W@>R2c6kzvOPXqs0B4rH2nghYDckr=hY6YBkrA zH@fJfxsH@=0P#CvaP)05S*>aI*&_ueY3J!vbo-5+)0VZ1tDEX%LOJVPlsj#~Xlw5! z&ygO#0sbr?uMRK??btL6@I!m&kQdH}r$(VSZ8OfAXD?MuIoKwE7VM_IpnJFG-mN|u z3F=yNaBghk(sl#RCbncwpF1s9?R0jf%|1)6=XJ^Izodk~zG%G_cs>YZJ_=KFhWG_# z9j!Vp6Fq5SD3_dYD5e@9Kdi5E8sgk%fOXx2(glNEs1W^eX~I%eZgPWRs>Y#cQ^_UN z&*%!@?n@-DO(yrZx9^AUpAt{GQLi7&fN>?wQZB{yfTst?z?TOHPWK# z(X@n&Lu@t%MF`HK>#D93M}8rMP;s~fjtL%pRVZf&&2<2LV< zIrYlA8511bIXMK6?J7NXIWMaRTRj$C+3i_r7`yMVFK^(b0|m{$@O%ak{LlqSQtm)lNdH*6LqjM zuL?_i0VtJ=tSz<3U$1F23Kjx;n=doUBvp;-q-R{UTmw+NkED4D-mI--8Vo}#au5BG zZT+BQ_9rnK@Awj?Y?~^kcx^@?nO#Glj$gcg4>wCCvVGUN(Ql#AK*Xx$;>MK6-7?z? z!(US z=;F_1bQ!ubsmHdZ4)O+Ve6CMnS0=@3)yTHC%iG#E9XN3CAgxE;b!fYVsWPiU?))xx zLAH>O!u;6QmDLhkSNHvePjJyb489#A*Oi?CykF$~Va7dloRMx)3nAr6ogk$^1(^=O zaDcsnbBY!LcladlT%@eQ0RVQ}@=||1IUI`}j7Fz+cCr)YE=5wPkWOEErtE5P0xwJjN}XGqb56) zA2=!>aH8+H<7>F4U4X{F#6d+4h$_PHG@V?R-5jVfZUE-tPM<_sof!_qT&Xf*33_!O@!hvnmsLtG831AmnZ%)BR&#YQnJ3m4td z6z%gcHmlxmQ&sDrEzww`(AeZgtv=V1B6+h=qnBi*It_1GQw8*x*HulO6jd~4YeCnhA>XW^zjaAq zSWBnWY@!#V4oXEbN&Xk_bo-aAnA@+#i$N3>3WgC#)niwzy}?+Sjp#rPL7;AoY;iae zVU5%&kvB%VT#ZwEjdG_%o0-7$w@-__#)_c5qe0xTY@VB5<~O(0tLs#O;K=xzDHgF? z;a+rBCsQe^n={2zF=O5kHC+m9JFIUPoeo|RjE-BO5Ht#u8BcOL<>(fYV?1~z*Mnga z40|t$zML=xl{=fTm4I)Td``JGyyBHtcJFpWI`dMOF*UIb1m=Y;quTY)el?AJnx@w# z$AO~Hxy02Ys^~p?0pB2CIxNEHshzIua3er8=B6 zH&jg>2L$!8Q-)3}^PRNylx2-vzA$H=D?W#=MDmy^aqXBbb2^O*m{}Gbzk(cR9gbwX z5vUc0aK!YwGP$x6-o9sEMTNS)UQ?^}H_*qbt?4ABO{qLw)&N}A2e?B$g#H!Pc7bQT z9@Yfbg#-H0z?4ldLMCOruNZznroee5z55fUrtoe9b51{1_snPekKNP7JXMG|f!^Sf9RSvOkcQ6ywGAXdLx_!?Qdg4V-7KKuwfCX#ETF9QwmL;8(Y*Q_;Y zLv?Cfi%zYN>>52f_#k)=6yf|6NO%-;J@gz1*kU1PH778IZ-sk1>cLJ{*gI~6IVw_7 z3ubs{4|FNu72`I!+^>LTvOg^5oDgZh#Z5>ZOP3&aKRIL0^i=WGT4C#49l09DkV4)o zQ0f#iyIz~9fT^pVs9dHLNL32K4^iy^%U%m0ho;_GR9XDaZuJPmB>8(y<>(Ut&BBM#rc#b`lf`54XbrV!d zIdYh)IF%RK$ScoGNYfjirXMH)x>fQvq%NI=>I}vLEgy_jMJP z!Q$d@gUeXYF!ODNvSSkzl)HZ?Dm84O(b)hTGK7m`IM0ct;5rt~7a%8Pt+{e{J}2sCJDNL_4z)Exh`>j|Tz`KFR46zYpW221Z2re+kQ{ycj zt`m+0cWcm|b4DCYHpfba-*ai%CdO3wvL+)?3iDz$AFAp{=zFLGPzh#qfIO6^yE{-y z@V!p4!6509n)JN@(4IkFp}`}aokt@gp{LVo@AJo)rwgxlazmn+Ywy`OK1M8}>Vff2 z_auOKr%VaID4}b)KG~LB zqBU58>V7V$MASk(^M5!H#njbxpsi*}BdDX+Pd@x|emi~Ty6Z^$O*hf!$Y<0l#hT8r zJ-V^LV@}DQW2QDH(xh`sqz)-$`-Shw;ho7;^0G9W%)q-3l{9RyjR1E6)8QN>6O#ZI zUR(?lA!Uci0N-IT=)p99SSkVU6i8+QI)0DP^I)er=$H4%>Vky>UD|kcwlcvS1KRmdg@5MBMN8;Y zFeUcq#04ax8GkM48L9a#7uYfxxk|A0?o*QrHINfw&~i2Ke)wWZbj6`fg#*I+1u(88 zk+sY1FvM0>u_$P?cjatWYrdyh-L|sA?pn;Hna`aRm|+FHcoI$sx5@B(U0Maa-(??w z=XwneAg+a_xfa_3;I#sA-)ANPpFSbc3%k2N$KcS00^%c?Qwn>KL(hq{oJ$^^IC1xc z2_5uLK7EY7I~XIPb2-YtK;;mvlvC;s5d1t`YTbk$y=inOoY7m zVlqh~ul1aL$6RRD$ep=#wEnliYv)UiqCIbg=O@(;VUBO7{P*84>UoFadw>0v{uMfi zvh=yg_H(ziB5A2*?HL158_p#SN0eT3}EM`cR2%^A526%DX1Wzo4)xfy9vh*1)D*TT875dhD0E$h+aoU7+ zt26&X3kU%*$rk|H8B1@cu}+8`d&uc@+spK8w)V8s68~L(#u>4nAHolj19k?=>C?28Z3yEToxyOJoE@_Fmv7oN=5roa=e>~ zrD;A%CT2x23eXPX_k1GMqvSKF-@~jefJNn}b<6FdKB0AL-ZyVLt56G)qiR)j1xn)M zkc3a-O9uvmPqp2$Vnx#tl~`I?1@aJVb6Bsg^0F>a_A_ZMJ%ta)H%=Yp5F3pGjXw~y zKuR{`u#qkM4urlaNnXXtZRWsLj{+w0Jm4a87lw}s2V@bLLzJ+9!QXMn8QzxviwFfK zpEIk2t{p@cP!$EsACOqS%jp`)ViKEOp{=k&qm`w?pmJF*kIUR%wbAdD#KfKki^k{r zp}l6!j-1FU&u%-VGjm{)+#wn`*h7tvJ$B}qpjt}&Ki(gGCMHp-gVjVLu+@p=hyMCk z=H-`}vB{vka?->q|C|Aj(Kl;xbKR^d9))k>B%dEL0aNAdCC&A-rjqkanN16UFC=qK zUnTEc(EzhHLuZWD7gi=1UA$ln&K8Px#=+sN)d zwz`tdAA6YG+Vc6GB4~Ku_|RF^WNW);?AXetigBapZN0tp*9%|3ehG$L^b!if(WR^x zz#2jpo|dwS7#NeHsO;8QZ5py5L*7W!{pa85g2s1=dGR%it#!6Yv#v(h8fDVJ`w?!~ z(EP#8_<`!9=Df-$H9IsCfy81KiK;wD8TvX9C=5_jK$6+R!_svRkY{mXGtLs4S@y8y zD;&mUfY(rKI04UECinkAM9m#IE~$sJ!T}OxR!k|CT6fPq>()UN?Jvyo!o{QodIx{0 z?iE$$H%x;_XZE)4eFW*c7oqbzMz= zQ2q4N~k9H?I~%hBYRzF>%Nc6W-IoT6*HH!nn;bpzmEK(+oW0%{j9~FO_`$R zY!|pKFPx&Mx#Ent#71law}rSTjg5G0rE6C|cA1R~(Kxbwv=oe}P7(GsyG z>z-$49J?;Wyk6MQ#oP&_YmL2ORw=B{%A_I?8El1BcpCDKV=d_$AADqzL@@DzJNMI% zyQ;TcKa~$d0j3=|?MwH9(-ShgC~?NpikE%>Z-o%?6$$$H4wz%LgT8KuVKtB%K&T9n z^5C^GaFOl9IojNDIgEAxkVHz&u_ zh&0vOPO$|z_*1b6%fd8EroOVS{Vd8i5j8uL2@ZPz1wISq^8YRskLMvWkWUj>>e4M&_0(>LYXPk?~OtC>kl6dKj2~T2WJ@tJl@m zRYnXonPv^n%~RC3AJT(dg;C$$G0d;E!!q8*x_=h~c#AQ>@J2^2)hL~iavVTj8aeV4 z##Q(TUY9~cYR^1&{ju{dc!D0|LbiWA4P!|A={=07@Mm)8q)B@wPK?omeHrGi88cd* zz7RjaR*nNP=NEucjs9Q9H4PMd%<)vuM(YyQLTz84ca$_$kx9pyV%fjGfz1-kVYN z-U;J9EuKjO)!$Rxm6 zu54gATfo@^s8Yk4g2{yMs#`F=BCE3^Q-cr8ov@)^YGE1*hw0}}J$2SuweYB4ARh@{ ze+~cmx;ZgxUTj$Tjgp6@m#?& zB-iC)gwXsAKGxUJsEOJ;M^?$yGM@VlhICC17$0m_+JvoqE2~2$1CAtQ8WRbHnt%Iu z`$ns^O6WTyz;lC-(0JCj_sbh!kanK8u~De!ryrxQ8-0_;IxWr#lj{_&-mF<;$@hII zX<1h%t6$$CNuJ%vm$40JkRCXuV%Ba{j#?73w60uGgJZM#LA^rZl8U6l&xHmkHB{IX ziAnRCY}s=+HNzBpsi4*1fntL~BNNsr8kSY5tCzz8?mhm-FzBP$_KWclHzo;zkKyf7 z7!V+=F%(Ibanj)yiu55if8>={cJ73@mpE}){m5hPX z%A#jUfW8i|^T}g0qe`%b!oywU{;tAOW>e}hnk0>e(EKr05Xdlg4hVdnv7=oLu5lCT z)={Ij05h6C0C5d=jt`X~TwF^;(HT#JO7tJ7zn+juk`|p~7>(Q0zzdho761#JpK9f# z8qn@>m=+wxqDN|AhB)|3o_%)bPLu;|2KD5(DpEqV+lF4);(+XZSzM$xTAWIWoROHN zpt9&}uC!>xy$!|&pwZVyBNaPV32c%TTOqX;0!0r$uyV7W4_U2M-dq`8?5@{$|~OD8{T^ERv-gG3cCJ`bwP4)?fZYZ>eP-%QmW;T&Ez-V_Sb(- zwCclpr#?b|6Fo`aohz~krx5$$)|rtjYfs$-T_9(ysh4`IXH@&F@ebk;t$*aaMwvxi zwfT0=%3*IlP9-lVhehGna&lNUU|igX1*vig8^h*7g9i(U@gcbjx0>LG_O7l%SJ&oz z{sV^JO?T$$#~*!k<&`+F$;Xir0-UKEk-9v~4$x zJM*a2({uc7P)O{Dx2XU&MR5|$knA&;9}U%zhvF@K!x-0N$P2)x7vCg)eZrfcgC(^8 zN9Tm)>LQom2<0RsH0C%lOXDFA)RDA+mV@FtT4zc_e`f*YxwpAK$zgcu>r{ ziTf01Jr)(|4T9#Ios~W9TCrPh%ulGBM8B<$zZtumepcD>X$*$JmbvM2U;&}B;V4MX zFJs$d2rH&gH>21~e9O8E96H&Es?QQ~F<B2DiDmG2|Pi55y>WX-(KzzXvePOU7O zwJ}9lSRy$ zb&`f;f0b|S1tI8Tm-9mgo5C%XDZ~OU3%e7VF8WG032|mjKrwy5VMPm1^0UPwIcy)X zH4UREJ-l!~A#6C|yG4G?Nm)Mrg%iN}btOR~vJv%{*CwS(Wxx&dUyPMPA@9bg;6G9q zjqZ-iwVDn;k%_#m64e_W)yp=gAgNEBz9fMJ41O3bxbQzI4DPcS>!e z=ZNytz0e<3yJ9qbF&2BPY5m%O094WI7A*9`4etf9pl9HQqZul;_V~b4VY;zk#LAPG zt{AW4P3Gb&ycpa8<_~9_KqT|KHtiyRuIvWNF0M?!S#|g@us*@DEr!Wl9Z;;;(+)lM zAD@H7t82Sl3rC`!S#BB;DW#37+IpSDCDm4WB=o&JfQXe1Rbr?e;sgMm7A64H2kQj> zM(xUGXGR@Vr=Dun*HuW`#oij)8Pzsh;y_6rX6jY+>cl_)7W*Me?vQm}5EDZ?RP$yv z&*4Z%jUuf;AC4Le&+perECEpdW)-0~_m=cJ< zR)Oz)gsmNB*^A&K4$>0*_2>9@x`s{6o*jL6^|EDc zN3O>Y_gK8C76qVTLMb@yfTkq~fnT^4YV<)s0{;p~PLU;n-GJByIhs2Q*qIMqb3j3Z ztwjv0+@t036lvpdB#=*YV(oVbKpw&bAz8&6So(Q5MjWh&5D}0|y&<3u;@7M(!4nG{ zLXknpfTFrdDs+n+PRUV}7oGCRBX7xMb1Mw^p{lRv zLk+RIQdW44JV)DIWDDJL5EL%S<0<-7A`ktCuT_FJ#`ig}Z1gbe{80xQfbt4}E_8L? zg9-9_g5J(**WY)B4;VPkQx48=I{p3{Nrj^6<(=fCJ=Igjd!QeWZ_jqR=f_9Ji1ptK zubDNA{w?-D`t|#tk*gx$DSM9J57Lo|(h(?5CLQ3I_^Y|W8#iF^4{OPB%8`PEefV&f zFltADwFs19#qWf+Ib(V0;m5#c6<3#|OK`gYjEO;i1Y0{yuo&{j^1lf<|NnD>>ElO_ zK0wZ)r(Kv%|5GBX;~8XaQYA~5C&c<17heO5>yz&6V9l{G&m;*n>-Kc;q2o>?5W*xf z0bz*5CIdphNGmc+#V(=3CWfYm#i(-R032TvXxXy+f(()J(>u>uOCt%P*5^be9=k`) zfB6jI8M6{1h0yMG2xXO00;25|8lk7!EpWPI#)G^A%)wy1?eF)i;Lm#vGDFI$xV?GZ zrgb>whZoB9hivMM|DEBr%D2JdsG^tYTg%r=!eg zkg{lCES^isQ>b-e`f%G>J2nUL-wUkXxGrdwhg26{t$~WN+=5Mim5#BB1~tb#yOX_} zgN}>Mei$4T!+ac*hq8WLmGgID&!Ex7z^JGpj_DfS2+RRt|GBRqK`Zeo!ezD|gcd^R z`U3vpW^yTALN9*fjeYxSK?(JmtUl)x0M)9hY~Y*4`-f)gue@Z7`74Z~@pa+$J*oXM#NNkM0Ll>rf;O1Q;A}YV5)_$rt*zxk zA~|V&%3(B`t#T+GXUbs$na^|=9ymTh>5wNShO_JSO|p7sis{v+1Rdd2*8@1zK%BYU8pt-X z*$ACUt|{lrUkg`VIoARjL;~Zu9gF>zOv)Ox=CCOaDSFSA0;b}5#*RN60eP~fSINM0 z{;UM`m0N!yd@NgJz_Ch|5ddreu`U|_MK8a6{`pS8reFeXH*|LF4Px6_08aM;=v28) zLk?uMtHyXr^^@_hIe9O;FvLIX3v3`EaJ$q#fUoK(8YZg}wJL=x>?alOt zcBY+v)^-d1g8uKXuQOBc2&`DW%#T4~WXE|C@-I{Sq6to+*#z_HrpUcrF|gz&skM77 zcDzOaslSWc?c(__1~;`3Gj_lY7{uy1%nf#PaOh(RUmY@dLr1?n2cisVp32IO{d)>C zwQ$45?1p3Kl8bwK=RPUss9wiabX-CkkGq6WxF7Iv!>mB2R2`u7j_K2b&yh#f=Agk6)*H+zwKBIw>R&6yf!b1^*+F!e`?VV?!jrAK~kY)>)KycIr{@?+S zp1=&;0VUTs1emh`Q`$J-tsUy~nxNyW(BMywXW5fd^o;)!q zfn<$4I9v#V-M}0z4=7Orpeg^JsT>{}%n29<0{W$&8yue(#wjZJW2J&!@tP0*m}giW z_=KP1!@`{aI2hsExcuchz-mN?s{t1KBCXWx^I@2HZVgljbRY)+i$-3|Kpv%)!}Ly7 z%uPfBXG9{C^F>O*XGu|IW??^1E6Po8chUbHJN9`L5FCX}tXE1abVMl7!GRM9rM%PI z1nyjvXAp;?_Ls2K{&PD3t8%%>sFcXZTBP|fO^ znsmaJ7MWNGzlAMl3BwcB`SUGfI-p=^6HB~J>93obG=fB2E)v1d5GnLWGlVY+MMLp< zJ!XkTsEdz>{!ooDla@&!pOoMb7=|xuONQdpQwFhBs0sGJ848_WzjSe(K&jwWO`GQ1 zD67&n8U32a{Q|X4(kwCPz+&|re-&ccG}NZbx}->#L8J-7KIHig{VMkI#~F7C`bGnT zkw7_^Kf$aImT$=xax^`uZ9?0G1i7Ny61B9eD%|wy4r>6ERs&a|@^XY}ExbfVHhV{P zn_CT?qYL|y1`2W(&!&;fUl{VJ0Q^+3kLg|63Ic&k;BX3JIZ-X z;&?KpheYeiRh9t25EgTOv<_@hJqWt*Pbz-E6*0mKeiT*H$`KJ8IthXUb3H3$^ob(E z%0`?-^53k?VwJVYOoq7;V^=RIo`e!k>DqAktMEJYryuUQXTt_(G|HTN+ilE^H!?Th z?2L&mEp?E&imC%f(M>U#Mir_9={``5P_llrdz8a!AA5TIKPor$7%45eu9rR@b@1}E z#3XK5uxxqD#lVD}^zRO+1|Ck3I}?Rdn7^iPPTiGa9CT~@Ip+ed3DY5)*KXbvCTAXd zpA#~cRmzD9vIPtl4-NL8Aijo{2P36X97W`J2@ocKxQf^+TqI<2HUz8%nw#P5OBk$- z#|F7au=+x%0ODtiJj$O}e)idc13owyr{hQkeAOV)8f1FMcYc)5f187AF4w?pO`SUG z0e-bRB$FxyVx>$#DA;>dB)Vc5ClAnEJWAT3od< ztgM>l(NxTesGYqwoxQJAdBQH;VsL4J7ghF96#@?xoU8cnH$u4LQZEC;j&wWI~53gS{m%P%JjDq$L ztGZ;$RC)pZ;LC5=^UT(a)o$r*8Y~~R(yK{(K%o(V9hZQjikwTFUI3*@KVjyz37%vpz)My+B-B<2J4U*z$5B;ypd4fSe` z*{V4{;<@LxZ?6KB=ei!FpMSvp=gu%2lOH8-qVIg&XpjTk&J*%^JXU12 zK)b3;RM}7~*99ZZ8kmwTC$|>fPm@2T3u_>*>Vyq`3BaQ=hEU9+kb(GniKL;e<|@bd zoaJ8YGEo~d$6^;R=ybr(ulVa?=~vsa1>Z>4)APho2W$s4=mzp~4}Grl z>6Oe zz-R~h01%$Qw=mC{re4zqDq;f9zbc6 z5alLtl&19%_Mcz}@mk}agBS3Yc@NM8P)Z3-z)uh{D~F!p(hpP(FGk>{KSAZR{Lid- z;)yfQtcGnBF>?!7k3!DOL%H0vR%3oljmRpk9+heFbzX3WKTx~jd}5Nz>s@m;Y)uMu zlIUqG2W&L+_1FB0nsGhm`pR|x@&;y%v-xc!r=BB|)|$pHYz2+CrWrljDL?)6A^eG9 z)SM8Ez-XM(srgfLWq(#5(q;OX9||95$mK9scX0=^DMB;!%)jeuMke$CUaDHtOjivc zrRI7|FtCHQH1xLD$T8maHpMF`ZH-r}p$t;%%<5{jP0dEXG1zngtLd26ZG?zOlb8^Y z0M?|5&dD1k4w0r~Oan{@22#7#W9{sQ(^nLRN7k!+*j+^73hc|{3=AnR=3r=2zKLjh zFjFcQq&d@q1&iS(XB`gMBDqFSU)Ip9&-6Z@e%-7|ZjpD&^uY#uctSL$k8(b^NQg)2hXB{}gyq3GNM}fKfplwY zS&Hh!V5IcG_|SMP%PD~uJPS15WAzX-P~^7`w?X9KX0ntXB(JzH3I}4sXn1KYRNA?LzUdEY@}B?ta+=~+RfYtY3#+9 z?}>sy4;$IB>%17Lh=zjEHu_b^dGsl3acnR)`k)Gyt<_i|cS$t{85xAj$;xU&dz-1z z6pdYhDl4K&_m=xqW;3{MY<_z7cQ&mW0%Yv<1Y~sF@DqY}8y2$!dBZ(NCxz(@GJ`qr z8=QKa4f6-RIb=VBV8~jWU=7eW0|V*)jeQbi{;pm0^-C`Crc&4XYo__!ruGPlDHRRg zHJ98xg_X&L;}4#{#7=Lm*?IRokw(Q|c<%*`(#tO=b|ir@_ZGg*l3iJ#`V|VV853kh zM@Pp~MtUc?GYHK!wPLf4DtN|G8z;4^#W3_p-rTz&U6WbbqZJxWV&jC<`rnCz1vx!V zMBwQ1kZ9fx5V4w5gej7tQBo9}_@V4Gth&sd9!QHzHL#)&hx0Y$yJ3m`Fzdr&8wAd! zTguAwa-A;Tz$k^DuoybNW-{p<&7~)h%W@zNNN;=p{fjTI0^@%j>7)005>l57=SkXa zqIl%G@xq>c9b=!~5u0Xm_vMU6W3G=}OJ`bLP-o`K$#57%jO&IaOQ7TXilc>-|?&{FD7(z;ygHB)o3o^Upp`GfXM>mPIOI9O?J}sy5RKZ=PGqdK#6W<1ng;lnjf}OU;VrRdzEeS++pDD zJiR4tG@CL9qrkG0va$*(i~`fq*;ZRRZg!fJ*(c)L@+-zhwV8nTEwYpFny%XpZA{L_Dpv~>?wE)>dDrnSzaHxdk^VmH?vsujQl;Wyz+UxIJTL)%9 z$`2SFQny$FWDCKc8+4&oW6;>v#>MKl1JMmfH6p#WILJN;r+ngYsd3}rP8KgW>>qd9 zG0{Pb%0VfAnBELQDdniP++uQqnY{pcLVX#vmDkBLla|q1pE@Tq8t77{qmz!xF&%}c zUjeYxUeiESk4up z6&s8Pry7brc=*B%1C1aQ1vXv5APbUax0T^GqryHISeBQpZ-s3x+&S4Od5rAPfsi4Qh;L=6>>-v1>)%1 z8S~X0r+7WCMIKr8EVtY?x_oI_kpG_P=M!KmPxm5t20C!PS_FpMBs zl+@KrGm_d!j$8UB*8%mfc3`BHKFUqA zzp@i%_XV}SVbh(Nk1h7R*=gwl`peVw_Q*$v3KmEyZKO{VUNOxHSJXUuc5`6XShLs( z3W3X7$rI6c?RAq~R%3e<&I|hAhk$ZCRGBPK;>I}VgtQSaA9|3XT3b1zIN@pmf-}4} z0lEysY7?Lob1vObfzk6+jK1)-2=tF~@!X?tFNIMbqE&C+OP7)FyXdt!`V~6t8VI*9 z%PP$hf3&?(qNswF2+-h-I3z8JgkK1K+8%@onSV!mVsvy%XP714t{$eOFfc%XWwo`QaoCcCpv!%%b=X3fK|-Us9Nx}{2QTw) z%BUQE{(XDNV7<9`Q;I!H<#gLuD5Xur`ihe|`|2b3#g;1ZZgvuo=%Dv3~?o zO%9E?Ys7sg`qwg6GWZ$&<{wbTq3yTKUOb61j$K-uxBcV4r7it~fAqKTD!~imImBa5 z`O9CnY{5+I{+QgP<0ttVBdLz6z0hSNw7aPs8H-XqFn}uM33YwI1l1PCdk4$LdZ6Y7 zQ@{Btk5T4tix?9X6Q(x;pv8E91n6np{IHpTbeM<_e;LN2%F?R(roq1)?XA_x@S94P zR$ATMtVuch$JK$QW4wpqFLw_#8R(-Z=|y^>Vex|(0O>)+;NJ=d(&R|GkY1yxnKs$0 z@C;0^SJzCR+k-a1aVVq*utj5};`E>0zKcirG51vS+p}KVh)KKOt3!LFGP~N*z3U^n1>qyaruWI4=h)^TXM@r2$6hPs+9V zGEiN{6pCyGjL-3MpvM{f41a6z7OVvQzFvK!wnJM(Z;G1hCI261?*S)Od4-Mh-YIu_ z?`@~-%xsaIfDv zcjj&(`ToEE?~@F>z%F6l`@ZKr=Q+=Lo`SSV+V9yi1n_C)3GcYERBi}KHsd-Cj( z?}?;vOOcwLolzirnZH-a-U_o9_WwATw0KI;QUe&=P~273DJPAZ1?nXzYq5LOMWe1B zx&QHP9n0n&)Io!T5Uo}nkTP;AKo~3k>&y9Kk%q6wTjJPX^9Kj?qmE5D`D3@?!3Vc( z^P`#7x8J@BE?l}~6GV)AI*y&B~jc1@JJ*7em`is?>=Q5^ZvobX7wzP3 z$TlUEUL}wA1nZN_1L(mkikNLsb4nDDY+m8AW)dc!DU}0l!akU#eoVkCULlf>+Ug)B zF}!TxN_0>(@B@C%!$BNQF|0Ae?QgCYSdVlO7@qx*+Rq$+H^{`ENdC;WKkGMlw5k1? zP{;3-uCO3^TxwqKhm^FZAhJl3X>hsxyo+26u+7?nz`=e^j9GTw^FD2JqqM!R-B@uZTCa63%0Uqd^s*i^5Mj)>snQJA^!BSgFX( z4a4PJ?P5c4g@m|XdNOc zIozW+o5$xM28rsDFflA+mbSOAZEGX9W?sFJSp`1y_a<#*84E`je7W|j@J&&loN`L; zw~1Ny5uoWd8G(x|g3L`Oa3B5A7m!JXGP@mo-DOIc@CFJv3lb^p<5>c6VQuaifI;(7p-`lNgosb8v z5S{AwE2{hlxQzt$d-gncT>h*zYf^s&l2J-25J^Qj5xm9yPHQ1+^#I#fKwVvz?rhOW z^afhyZfr4i)bf%`AmEnaVdLn;aEKQbBQW$rzi{}rCHOYEw+gCs@X+{>%q5*ecG1{B zgTOnKl&-q}{*z8>0@1#m+*4WxlN`UW5(Q@NNBUJ3MVH*leomdhTukV)Iy`3GIP^3d zy{xC%SrYaO*W1R;?~oaU@#CjBsDCnVm&tWyW(|3F?AYC7$0h;beW@VO%3K{Lxhc(t ziZ`?$zhIIRg%_=Tlcyfs{m3KVHx6Xo{BT8}sD@wgIL7}c&10~VA4)BT#nt~GG>>hRj`{X4{r$gFQ;Td1 zNKJNH!i|cgtf4)Su*KTdDOD)WzFe}8^@FyqB+!FHyaI(oBadV)>CoaZq!#sW2_;m| zw02V~0gj+9*Es@7V)M}7Lp~A1p6wIzzLw9UqJr;FSCQc;1s)K)Q^)+ zThecn*GWx}Me-7zA2?Ic&&Jri%l1 znOp6dIhx}*-2?M;n0Tqc7NQOsT~%gq5tvSBakmNVzPWYgQUh*32Wtf>&3y#>cUV8f z-Z2Jnp%6amF&6l80#xJ~6b=~P69&TpU?R#!Vw+51X z9xDK3s_T@e&Y9vfr7a+4{baovK3a2d#;d05t04yW!vOZ5xsaq9A@|N3&BNjhJpuk= z(L*Fg@-C@GWOJ>X3~631T#Z=NWqp00^ym{d+H93NBJ4m>?{m@>+U_00DPN=dbp_P9 zjEO5?>o{Y+k2(7^n4!G%t$^8w&@H`MZd=bbl@+(XKrK@XQ zq<+rAR)JjHJbS{zXx)s3A?W#p7EJ#Wigvk?q&tRM!<R7U)UoLEKGd?U~ffzT9BWB+YFQVqq5W^==gX zS_A1AR?d$>!ve)$JcDO63HNg~A>&Tyh;9$?zkmQXxF0Y|c7k3O(w1@Ac!q(9p8@2n zBs|2F42GNfNn2U1Hn7LR`VNT6a!jH0K1{0*de&v;yMCSx&POTTKl|py_XwTjsyT5dxWfpRhlD87qP$fbBpRRI|cwjpXHKFmb{DHFhZ<;@J5 zMvlDkp@T!*pvT28AvdV=2-(PXQ-t~bvw#(^G6*Ym(gfz^KG*8#bqSr=;G5#QQ-@*DsbY5Tqt#^%^3^{c*&aQ=o9vjNH3(kfCxz>>KKaqc;moM?a;`O0tm>^$dHv^TG>bzf;d?2QJ?elR6yI z%9Hytgh5{S0OUh23TD;vAuL7$9AJzM%W3e~xjUc=mh$ii1inEoainSxGZ;q&LuOt4 z#d1t%{4LT0>KrhbcKi=NTt+oBZ@H)wnLR|^s|JmMf*nJ~L^ z$EwTgm!AY~T++^yRtL4E*gea{FxpYxx`3^J=%H=f>fzC9y1S#d5kV(=Ry>s;6noeX zNezV~EYQ0nXN8n{86|T{DH?bv_xk&@dYMOM?w#CRG*3DsL<7Ic(LXiB`$Ry}f_^g3 z3vyg|umA}Qy&%dQQ)fQMm)!}B*^v*n78G+7m*{aR4SMH6q8GyUI9wk9qw^5S2o4AL z>}zSufB(VY-^*XaIcmk>!<#nw;9Xyl?zr;qsUYnnnsn<0H)fsVr#7KfZ+f$>e%awH>_|n(H!AJq^?8=B_?htj#9}3oT_+Jnvf+(nTW1PE$t* zdqJH!ZS8{+YRu6$ z^~8;6AgpOkJ#OfnR4_w7SEP^kbAa$6cy{sHmezuv67n6Ym)b;V&Mk-Za|bu*4lxXW z@Hajj%i42-i*0a=qr*JRN8_30wlt>v&|`w%7`)y1oD&W)$kuQ{kShmpG&ES7ZRB=D z9Ozr{Mcx`?51X-_T(2Lf5mdA$hWN(-IgULbCd=73bA@J4U%}X_&-Z>)kZaWKJ`gvv z_(h68q|;ZcmCe2dZDO<3o@m!FhKC>CzTFE@+NhMJO_^1+xi7fjWXG&619knQT~HHI zjmNjmI(xCN#iFpAmUN@!Kyj{aVg2mUDvy`~UnS6_qAhj{tqVz=b#5ijzTY38nWoa| z11V5eJ-!hqk6ZMut)tnL*-=$NBT8~JYotCGx?85YWEPNUju?H+^%e4ZH&dW~Pz7eX z^`1F*WZ6x*oPiPw0PvDgLg)A~-&3kf{*nbqPndY-v|?6UkccG~GYvaR8m|;|LaEA9 z87P~jDmC2IXwZ8fTusA~1U{)lMb(i95gv>P9%>w392|xbjL&3Y?GbUur+NI5BNtr+ zvrm)_^cMevim5iLgL%n-*HE170W53}+d-+B?>hlsSdh!z1L*gl%P{arKK>#5RQAOT z6&y3>w1I&n`>2%#Uopb`6{5!gq}`9z@Ex2cZiH(f18oVkT0yqoi7@Ih@*h2P%Hf{} z+l=CN2m})dA+VJogkUYneT?X zQdgE$&2b;3o)S;kFZkg5vkQ{Y;+ZIaGJS z=o)sbRhyy6yXXQI?FtnOdS>)|BD_y4b zQ_;$D+!Eb#-@*xMHym4;NN$kQjygN7Z|}G!{ZQz|8#yat;^%7 zw2Fmt6%0-l^#Y07(mkeZk*G9W=5UCs9;&AjmD+H1tAjCJ$82v{J-FpKSd+iTsuRDE z4aK=<0MDV?l!a$e+p!xTdI+=~VaGP~^n6qyr}Q#El}e^m8APlM(!{I~d74dEI&Bm< zFbHud6kqRkcUzNMk2oWC4cm6?H;-O^`3KOY->@(UUK_%W{f->lO5RJb^NM6@azYaD zkhzrGVDGY+Efp>quG*Ml0g00i*gZ|b&f&8n__tzgfjBb6*@t?Pv$^6V4DgEJ-bTkU z>;nKcYHx4E4RRQ*RZ?iDFuN?Vwl_eLED3Yu(>xeA!w>`RHAXKwER86P0%Z`suO z5;Tw}vMZB1&*+NXX)X51=+>ovNnlxrqIoeG<}OJY+txN&96kNitu{N?jc**xa}mHt z^SCO+iTb+En$}2F+zFmK7S@O#@DX>2sWhTohOgplMJyx+OX^9~9On8nFxJJ)7o&(81J|c^9kx^PkT-2e1O-B1ZP>)1WIUEtkg=C;OScwPn#9SDSO@;#Uep z-`fl2W0HMA+I!Nxibd&{>C@vDlcW4wp{~g7d+)vXcITM`?dD{{7&oOd5H@-^1|Py! z)sc2yelQR03FHtg8nvMYTS16`Hvm6Z%@olW4DNA$qzQsHhHNe?u4aN5)vL5z+!-U# zddLhhNu+`R`r~fG`~rkyLu4j<(>a9#9iawQFv=rRjYfR*^V@D)x6YYNQh!l3=313jI#O!Z zzs$*O2qyzU7uU`?bT6-m=UKGtjPC%k9!&TZ1g74nR=OQz^K<33z1tG z#99ZTKW~+SiWN3wQbUbfb8SUqG2C6|5$pOtP9G0^0e;;8> znWde|rm%^=C{KhEsZuJlYE=zpBB4zlkX8_b@ny7epBUWvd=V81 zvX8FG%l)GZ00U*ZJrZ_L!q_BF%Ny9wZ@+!b8Z2F2>M*qiWeJ(TnYy`fVs>BY*X-L@ zu;0JiFSpZ?a}GY+41A*l1LLL{NZG>O*!{A&J8AZ)uoED7eqx0 zg`j=cErr`Qx16wUO#}>^TNW=pE=XQCJIWS^tw+n;mM8Ckkj{K_V8$eu%RPBEv@QC6 zza6Of6Nfz!e+{iIz_y=`SV$30G$MlhspeyNt~R1R5@xM-ZMa++YS}nH@eKQZaI52W zO8$(wMeTJ0`H1zLlJL%$+bmG2#7)yDK4cHgn&fh~oWY#++H2>Y+gK`*h2%sS{#~k) zh3m%!5`lipEyd{d3t%_W`L(l?t|i;@a;G%6c~RYzk3S~CRBCxD^?D)^WzQ2>tj&yR-d-zln8u#gB7w%ct$U)#SxV_- z^-5z`zw3l{$VDeWrGI}-YY80>@y7E~Q?Z4uP7IyF((SVQ>}XVR}CJ z;Fepwot+C(DTXRCkFLtA&B88$iKvTew>mC0XouyopJ;91^lUDEk!S9sb~7*70aFvI zV0a6VA#!DW+Up(5IvMys`;MaW8m%p7GMMx2y86*}tv(Wg%`+A@&l4QbUrhtt(34KW zxYB5#9;^mGjV*kHH8g(1Ydx@+;T0Ws!;}C^J_G_Z% zsG>vJ&R!Ccx=muI)C9?FiIN-aZmnEFNgZ;b&TV(K`z#vCAF{sfOVF>SJio-K@3>>_ z+91?jThp(`|5md70$$udC(k_R%mm1{3p%%)x+ON7z25|Igb?8f#a9a7WN>JlN=>wz z5-?+yV*VkEtq6!TBL8vJmc8unZ(T99)GgPGv%T)})<3-Rw+AJUu&*AEqg1(DUn5hQ z+wPi}RH2J^5alo}jaQqN&aJl<5D&Lsci_x#)vR~1w#ZlD|` z*eFk-@aV?FKmMru{Bt+a6)(s$zi&MJ?|*CGf8Rs&rF{ib6zXZ2Iit7gC5}G;4=vf# zU=YNP?huF{do0gB#cnH*>ELnD%O0kFsQ%9O0!%P+zw<0KnP|6*+|TM%ko0FjMAauZ z*Xb0nuW)AJL1-RV5qy3+s2S2roEw}4m&G84Kh#*mql0B%C%iE5cft?E7YEzP|D#W5 z;^d)Yzq*aD(FcWMEN~Kbv2!wbT*^4iN2@6OIbhmkWbNa9@+w-6JMt0*DhTxdI z0r-uYjsl?~mqfpB*z;}poG@I-A1NGBz0wq8i?G`!x5(r&=)_TAb^)c2KrHr;Et2ib zMHTW%H`6}b;V74E9$UE^;#5Ci`_Bk8+yWvGzZvknxd7y@<@8r;cPxfsa}Dy~0a>Vz z4XP@;T!^rT!8B5K2`Wo7Vk1y$`UYi}M1XMNsT9CB)aE_-zmEfWF*O1o6O4n@Y5)Kq z`2L}XmL~M|PDs@4-mOQDTzMtA4Y4fUzTI@?3*GfC87iZCD4!p zQgC_cRXG$QF)fujJkq@L1P~Bt>~LuXqnObXkf0@N^}RqZ)@MV zhefIfBEydi%b4{5CRUwSOVxXouj~2E3wOX!O#!$%XI3#hVdOajaDT33Cz2mnRVy`- zxkH9}Az=b8W*_vJyG}a+T?dz(l-8cz^;(6!nces5tLL2u!y(ixU*nu9Fbgwz4*6u< zxX$~b^}u|UK8&r=Ly6^cM_aHOH{{08Y@<3}eU)Wy;B)52h^Dz&m(Yc(s(JXf`u+=& z!4rB6CkeqAJdNDNHav+K28Cl_!h!%lu6g2#(@*zvPK;0=6D*P!Az5w)Ie<>7Aj9uv zKJ=1Ld)Qkmn@fT$b!|zI5x}V4y?x|?US?@e;&6<*JonSUz$yLxG4`b>dk{FYp9=Q> z0DW=U58TfXVS5v-2pdpOEcC{A;%a2|nSa|d*1yYO1kLVJ^mZ;AdC+Qg&I6}#oL)7KW5>Qi| z(fw+9M}>l!9hpt9PJ(s;?d*`rRU(;6d|#K?8kv+6nPsCV_{fz58jq@|bg?&9G&XUc z$SM$~+41R0a$16VDDm%4w!!m$;J)9Uc=`*2WWsp09BkA9A_p5M5Cf1_2Kp0oM#l~E zI*GAz+^br9M6Wg`XqCEAtJO9^L>YjN*~2yCENyMtp*l)d1-GjA4TjrVL>VHp;G@U> z8J>TxI)slSLN0t4W< z=v4dB_?rFsvByq573ZMLFn;_q`x!S-m;072aQ>Z(0?A6&y zj@-0qQ|cQskq7(FWIyA={7AWzP3;#R+%Y;6J%aoYoEsb%~-XA&r%Z z5Y8o6_Q9D&prbm{1W7N(zTt0{jHT8w=Mhs+&pBisNG^TOI@;h4=|FN0xvHXQ?p=BH z2|}%8$%Tsxes*UhbH*7PTN4dyPv59qEZP z8g-46M%$@NnG-A2sBXr`Eymr@6GA&|ekrh@g=D5-_(wH2gcnF%-+LnaQ@1!WW>(0k6)4;)k-5>G-!LbA(C_It1&zJTnMaO*k#eypaAa+gx{O(F z&ApXKEKVk$kHy;9YZlj~>-6?ePoe=jP9_=#OY@J6K4n(8F$w`cnlPnTUfk(d__a;i z2J(E(VEKGln*=1hPYvc==m(E0lY*Wx-!q3tk32Q5!v`Ct6Z+%T@Lm1L4fpXt0X%uO;GNe!1%|_Ah{W{9UDJHqF{ONo-UQKuxC@Y~yj%bt@r%WKN=L6C9|)A&@89Z& z-Qik${ffxM^OiZlBhkC@s#zKKs`C3JTRF_m5X@oia2WdGMCY+-(a={9a--lF4Wk?fIsRw-nD0Yu0ARPl zRt%(TmQo4 zY)k!dQAN|Fpt8l92Cb_U5yu-=pPZ%5^3jvI_1EvugTHgT7bM)h zw0w2_JovWBes!xgr44D44c~tI9R7I-rDcp>AS8UrZ0RPyb~8<+V5^HYt3i8F84Twf zfnvK>ZkMT=Q%$bi^rTkdQ7EHh$rZ{5Q^?q$d%~q_)p)h-x7dP}q+a2WY9m=e7?qt> z=DrMB8;`T^qS^(qn&r)k24e`gMvptSA+1~6wgdj~eUpWzDTPB$d_iRD!uG%m|5CG5|o*;l1 zAWqU$`2lOu0ki>f;!YxB|MNbMvetnGE4jK-*-2&#*&7}#Dh;|~6qtnmG){JYR+QQR z9|e3R(xxIGH^=r|*iA`A<-I%Dm!k%^I4-Iqi7c#2NaIb(6zy_{GOaMt?3a0|hW0o6 zX?2sF5)fH~0S1nPVvkor9bvvGBb$C7b#*M6VoM3?gBKRL+Uu@hZ?%CGBBu}qgMid^ z?9tfP?VBTFty-AB?DC?z6&N`JsY42koYe+X(rh+mvZlJ6S#PP3Qw8$+(N>wI;tHPx ztSy1k4$?guzmqF&kashLqE=;xdEI7CCcg;l&vmab6x5yxmNpm`s*-Yem*Q7oz!;Hh z&m>;B4HW$YK{p1Ww#ZBe4K`b<)_ zkT%mYuc0ySMKI*8GP$9PS-V|oQ-vVYr%pV2r66$hZR+L-E6h_5TT}s!L(_QU#~;yq z-|VJM;{5YxKH0MTx07DEVjAfT(;DFz(1BWb`=?yG{~m-&{a{IskG9&XL|p+ayy0Y3~9W1D0e~dV`tR-!#|J+`-*JFo<|=g4YSUB>M3UTyYF6lsSRd! z<6R*GcXybr-VYH>1|Zy2KqZC*)jFh^!4kLpRc^}#xVQKJKWFI4nDi5 z9>^t`RUJ)2Arws#p`flm2az9hzDIy1RUM$QL+w&+Vpe65Q9NKd7#LUa+S-%kV>*5u zwB>;4kDN`uLm3FdV;<~KVx-4(8m~Z%=(t3Tt^a~;Y8kggVEy`-J??TKh? z!cL*(%ow;CQj(JsvU*2M=P;08x`zNOU=fDQ~blq$)={pU`>Wwkd~&8Vv~K2hLcfH-imRz;zS zG9WhGTyM1n$Zdye{#@Hse6k5dJ3JX8j$(m;1E@uckY&+{!I8AWutO`>1tDttXx7jh zL5F&LeKKYYyGu~%WBR*~E1O#sJ+c<6VKgXnWb`5C?k;O4(WR zs(WWIoSv1&GL{DFY-S^s%jZK^{KUTV|Pn_-9w`)|KBNla!?xpS$1Z`KFI z2HLIuV}@=M6Jc81CO+6mgrHU@QUH1bI1ZpV4lPl%5wTDq5UXe+AhcE@gtKX&K2D|B z50Yo>IX#XpLmit=Ik}Upw*oZnFqbU+c_9xblgY~T)`jz1BsyXG?9}vCUAuwsD(pBp zK^7liUZ+9_Zerf08YVub1rG+=LQ}*Ue4PCn1|5k6^o@w8h3h~a61>BW3FDB4lk0UL zUOEOI1@@rUA~^%^-=X#$*TUdd8*(BD&s33Wa%Gw`~KA3 zeVf}FfytvVnUYbrx&#_6ZS#|Q|5$TC9g05J;a$8wA+gEh>lb|3QaJ1Mbui8}(w-xUJKvM)tO`K@iMt)kQWdIv4w(p)RVM*czzov9{{k!d^qmgn|L){WY;N zdo*D09y7+<;vE>*2bNQ3<;kykrkQ*hC`Z*&w?dbj5Q1B#7sz(Jg<{n!nP>N)3;VR% zQ{nIh0pz261D*ef&a zkjv%nAdPDF9Zh>(9wq~`+K4No?occzsM z4LD#Bte3&ulvbAk=^C*wA(ctm)beISrB`|r7D>sAklPIn(Yf#h<90twe! z3f7>tMD!k8(dM_8H>B34PDB#cne0Jom1@y_1=Qe6=GEQ3z2>pShOr3{Ov~H5fR4%tJ_^6>_;< zuLIVQjCQojOp`tzYgNqtc_pu{sD{Qc(8jJ@?Za-(?RidEwC+GLvM|y${d& zcbfU7K;GXhx*tXY=TPat|DFAK>&~6Yf0LJ)e-+4idFBd8W(PRJS!tArYwsbY1>1W) z0HMzU12fo&7+q^t50K^Xa5$_8(qVC1aZZd_^>96G%-Zpq!yjB#1;0N?nT5<~XxCAX zK5<6&UWKehS?AGo)M@p4r_!Z{Su3?gu9M4YcSLD5>p_U|U;na^HSGC2GMO|{AN@%%R$y;gw5X+gQnab4Mz1iH7dVGf zNsFy@ZOK1jLZ7`ZyEYH&eP|=w1FpW?h%>!1D`;0Qd-}$-+%4<8;{G(>Kjt!*J0Q`u z))HMza{~bURuQ7=BEhD>ERMUm-v0|WM0-O+*ia1_hQx=<0*3D&vII?0PD15A zeE&Pg$!+qCMEfgMp_qrsN15i6_g&U6RB6Qhm!7?j{a2T$ZD3B+tP#lTlp=FOUFpPG ziM%V!cf#eQYT!Laj6@19&HPl3_MF@>`&Iy#!n`n58_5xD?JM`aJ(O0 zwc@LerTkC89Mc)xDY$c>!sC{K_XgnO9-kB~{_w;7`|W`A2oPAzf+gcG@AvnM`umT9 zMi$#s*#}-SSCTu}iLGf%D~O9VlLI}bHe*uXGF1Ca&i|CBo_mWu#J)h?dDHR7H*DUV z`6po$O>(W4YTC@h{_Gfm1b02|*AkLs~Z%l( zocnvoqN7I@#KL~@tx6fRjRj)}8Z2<+Z#H|nk}wjUD!nL`H7e^gVX00dzPJR2MCnGN zggH8?M9eAmXM8B|!kiKN^Q&KYVb`u8uw8*g_FWgbw#>Xs=M;f}2q2ewx6Jj#6IbQs8co;- zv-j3Uv2trc?)Ku%SLcw}UwGlRBItWZ>xrDUf(Sb6e*Sst`R7UE&wr-gcmwtuOdnm> z4GOYfzItHWwnuXRN$%Vc1<7GS+xiXBqq!XOouy6!23^QNP*9rRN5xOu7D4t}+nV(e zLULK=TWcNkQ&j;N`%#k3`4b9X=2qovpvp_flv1tG2(Q4shEUi1T2cq^5VK^s#Dd)6 zf^7vneVkpv9wo2}s35mFxiuXc$r#$Opy^pr}t>uK-2K5A5zNfC zZn==GGsRaN=a+!ORoj`rnqzAkWp>({?_#gXQp~-Av4gt~n>h~x1XXoC4*-CTzN}-o z`wb-{V8<=Sz*Ai-thlO^J++Ffirn!93g1BH!x04dK~e?=e?EM19b%|iMkHC$?(Vm` zyXWN94zZ`HUZPRc1pI&nI=@>SY!8YXnzc>Mo?b(%zURHTvB6D)CRvbO8B;bmVvZ(q zN-}Z9T{DD``_8)kBKF2EauM5TqY_27H~;4zwM)`3aj=0u{b}2_V4?69NSQ=`rMlnM z$`lO^pqAeeH>&+!V)h$jrY2MB1hb{jWq)-n4EWTHPP>ABrS3X^%nDIt|)p4H)0|0R{m50%O(Fw#%I2{JlhDoi9_eYG5rvDx{2?z7L> z?Zn4^Kq}}Wc1nq|=h&a~)TVdeeYcreE=cj151E$O^vENRY)_Kyxoi$D_0dqVKQ1s0 z26yW)dMAnyLtr1-?BRRSLmUhwmw0L~xW742hfk@=hn(GeKP1ropp5kfP;eV#zW$P> z2edvuE5UeGgVdvFoI0A273?odS$6UDl!y6W~0N2p+l|*|-_(Q;fKg;M=kHgD5Agf{%1j+nCd)KK}UkKmPdr-4}%ndJVaN`Sl#BQx(^MPW%i?cEWXQyox%Reet=o>}&39f#NFqLkp@n4GCpUF>FRUmW z4n?QJV%&T18|>&(RMArG3xLt9uadPDEtRni@YaL9E>NqK8hMTenC!n1q*_OfEH{X6nCg) zxr2dla6HmK_!)m-{IwoA)UMUsjyo#gf&j4-R+^^~aLiVi;rMU8M-E^J1V+>j^CMcX zI-sf};jq@DZcusH1zCZui1dJX+(_Ee0&5`;n+<-!{yAu9X;3sMf-S_>fJ2v!>h?H0 zo@y_!Cp_MJv0{-!K)q?S$;TjXQrc9{RsqH)o!5+`YB zQakBZ+QGbs?F4Ac3uH!T)}*nNO(s{?q_=dd#UDD&BS;p-^bX(x)Pf(++ob!WDaS|`P6~C+1EeW zAts3!tyTyU1sf60zTsn{y+Bz%1?i;)saHLR`TfLOJMF0{sO&H;go_Y z?IDR@L7DZ+;*3^P-|jFa2bC_J9(+e6axjit%pbqc5|Q=m+GxE-)UOMz$K}564s-26G#_Pz^wru+Q&r9Q41vFxFauy;14Ud&{c z=W=gmGHvW$%4}=%D{0g^a`-?XD-hJy1B?8nzP^q-LF>4ei!>uE{5mM+lE9Rh$x)%V z!)(K@QF}&St{8RjGUe)G{2bmkPnidH&G79F!JeZ!;HiPK80?o3z2rj>K+*q~9y?$z zBD||HpkdaDuhr--4rwu1&OXZ~1>|uSqCN~%^`T4l`f_=3wtiI-O%xLg$95SKaoCm; zh)(2QFxN5kr$N4t_{Gk8r^p*n zu~(3?n0@%leE#Hk{Ni1^UVr#us0LpukUxT-2x&-G;@xp_U3`FL$i2G!8owB31l@B_ zxFx(|Ne~AAguW>=nr>oGwZr~HYeJOhre)+?q01C%)JQa7T+pZ?^NwhwMnA0(#QZ9+ zI}}ZY0T}qt%WpoAj3?k0uigdKv}gGC3j)j+<>uX&jC?k@{kUQgpARe={+jze_y{RH z=U0kBQZ%&k$H*U4(LPm;4YlUI_b$04SSnFTl3<_n_VheU{>s|DUw%m%U}hcc!>IAh zok~z|xMF=ey|`m{A64ENBgu-)AhI~DFy0{|5|c$H)OlSZr_U+&2UU}ExnCP4dnvJwFm>2^KhVxL5k1%PkawKsaF2}JXv5yCfA;N`$1;VSc z3h*G%S*>k`x*~l3IFuto{lj;>fB*vDFnIV|QNoCvi=+kixx3)M1!(!(l}g>2PLmdp zOKL8dieB_9@n$aUFu;V8EI_s=ebZ()Qz{ya37$b?RTrFeI^dNu&)jhbh$+CW`fT=s z;_BoHsTDcuYGwm<4zq!TnAhLdhL7`zG%8Wu1cS|zGP+Dz>eGnMYm)=jTJCUnv*$)n z+Po$t)@g*vbIvc2oy_$`@_v!&;;zL#p9Pnde z8a+sCf|d{vsJR*%vTFX89kDcHspFUfL^N4ul6OlqvfkdUAl-Lg?X?DlcG?6GYnsf1Lc6t)X>#_OXJhdQotQGULjkDcEUQND&2K&XQ~gs;KM0@exF3ST1pD(uj3c>^e!^MVTe#|`(~ zvtdI6kcQ7K7?UL*8o)=VipbB*7X#FK=3E`NzPqy7GqTxT+3fCIj-8d1yWHBe)?2qH zPb;XhSbSDiZqf-0BCX-9tj6P#6r}bMqs#i#nuP%|G)1EqrAoJ#4s-$Pvx)427YqR4 ztJh{P6>V;Fp$M?>2|kIX)Z>!5dO)SwQtol;T-_y@E-m-Mj=`&gD2Pw6(z$C*?i%wy(vC>)ab!g2N+P-qxl*OBYkxp(v^^@b##EO%HU6J1d9%nO0OsU$Rm zWE0M8Op{S}WY|Tm&Wt*wPLppFj*PX*l43MyF5riD<41)*NUuK9MFS-y`E=*}F(%O8 za7s`kDmcgBeVn&BR>MB*M@wJdupm9<^B=`tRFQ}!sfJ|Tj$9={{r(x?C$8I1J zSK)Te35J-N9JWzK10lL~a&kvdEWoZD3|6y{d;io+?7wlEZ8ezh7AxfIZk5qc3{xrz zr*mYAhBu#iR*sU1ayz%LY%%vvX_h-AEz|pLr*`WrE5?YlT1nsHoan2s?z+p9OtMR! ze)`Naf$BtEn_V$&TKK_G8s^0>VE<%;nHeGUeGyQW2-0D>Mh4dJE;-zWsv86SS)J6Q zH1|wx-6AcVvZh6<*9wD+SF?tP!ZX5OfFLC=S%U*2IKDlS@r+RmPb!YHad90heWYq} z*H|sfGV`S;?lmY5Aog=5EVe90tjatbOHfcNnG0Jf4fD^B`}?<$F7_l8!D>pY?c%)1 zN&?+rYMWNzHv6idy}2hyu4Wgox8bmY8zAUk5^On14#x@keEYya^d7m!6w~XCu|};U zYyf)tgJ0cq-;}t(G5Ef!;@6K0e8Z3)UW^B$(1_TB|6)D9EAE|v^dvk}0qhXWld9Y- zqi;QGaDhfDLv3Ns*hAJKeh(^EAPe_)Z|`ku4t@VUS$5LBKmSa9&3plpyk%yetVlEy zC+-?QJ_Vk|Y386Hvus)Xodft2*EhqXKiocfC`@u%7K>|3j!TI}CH|whfdl>@S$hm4 zmU=X`kvUs|i38E}^^MKvug&NG$_*B*We3nuGYHldR;rbGgZ=r17tT4ym(MRxQU6FW zAF|&G#)0jmnEma`bb47b83DVzSLe;^e4Z!<7qvPg%1;wvhaMIEP*1!%^*Br^2xVuX z!h&!Ih$n6GyU47B)~#xi8Z_RIW+P=aPnbUYT!RlPWmdtM$zdTj1ujAsXCjYh7Fq8hZt5 zyxu>_p@v2e5UHn@sN>m}*?$l{3D>%Od%08qnGCK$pb=N9nX?8iLK=Wo0C%kL{qk2E z_QWu#VETj~hqWAP_4tS<&DGRkrlSSLn87){8ZC-v+7Gd7$x15CJZ+~|F&A80E`J4T zY7ZPaa@AF&{r&f^x#nPxbKLYs7_gA!w?3JwAK!1unZZtR?<=odd@+(NTOi4osNasZuFldg(hPiAE|nmCHAE zbzK%}m}F{KwZ)Gl?9nD!Miz{+$7SX1ZSkhIWnF5UxGw0GsMKO21E)ZJeI4x&`NfUk zA@d#cTAAEjW=^FJ=Glb>^800%U1m%yO1$}IV$qiCuDh9Bx#1JLrV}*XnUQ z6?QAG622fb!j%cPAzYTYI%Z^X0*ws+2hOflR2=RFFA%&@?G8%S&R|VCj)Q9Wt}ZwK z%)>x@tl(qA3C};jYgeEIj1^2mZpGlHM}?jzQmH+u)EOP25(xQ1EsD(*RB1AB7HSWl-VKC+_Q)N1I2kxCGx z{A-21uJm{ZROubGO&(n~du(IdvboM?$DF0$BDJkTel0U~lqb*L7@wUHw6Zf2>??w) zojRLNr0~dv3XS13Gbpaut(AU@ug_-Gw@29H*^{9+bT_rp7@jrS3=Iu^alELZZgih3 zP$^gf$mY6H+W}$WVk|BX?p{<>!$bv&2QOi)E4yTFMq)d+mY?Kp>Pn*{3V4oehmp$&@9D%M*qs zMM~a8-IY5%x3TbVp(wVlUE~?vV|h_1>R8(*a`$(eq1z%^wX3)0QVRWcU<8T8^5TxA z>s7W)!k{;%vQ0X7ztya51A%?-K*egbmikR}9TYT5OSzAlh9?C5a;aa$ceAhlJX>l9 zYh#H1Tdj^ROP#d`q}Y&1^-N7v5@!UE@e&85W%j7!IN$h_;CbyFwXa$r-WVRr>zR}S)=H%q-!sxn2NAH-8sh1+QxZEXi z)M?3n9-t+l9Y=$M-KuNVW=jppczzg%A`W_GRU3)*pyYtyC3Ju>KZev4Ru@+o;L2ks z#PJ+pU4@~3a6%kT&G1?)(m7PB@);sus^T3p_?Y=CVmNDn+_dX4hVgL-Q3;8Fdr}0{ z>4i!$fbDP#;Hw-R?xe7FY9qZ3ed} zEOrr5#M&n7l(w!NVG`3ZLnAFw1B6eQ0aq$P01)KXSRtHa$(Dsh{-?GWAV(Q zDkkrgI;(r?g5Sp7dhq74QWM>O;QDKNKUBKM*maKaUj7<_(1$`TuMT@UJc$fBoJBxZ zs!}cROt4x*Bo3cZ_0rbTm~Q%OC=)N>o1@?m{a@7P;L8Wg+wmmEzL0(l{u_s5nS09R z8TtI53I+DN^i9)+6Rs|jyNYs8yGN+i)6OP`>NDoDE@fibG@)8YPn;iKK|7<9b3p7C zYOJ#O-N?WHCRHSq7xjF}EyC}Zz zrga6U=xT7H?FGq4I{&~ww+$S;<@^XbtRyZwc(DHw=7Tc1qRi~#Mpkg@z(1HIdZ3;y zLuxn~WXHF_4!&^I6{D^}e#=lTkLxt-s=)dmIcP)RO2ib0d0mrT49WL?v zIqn7@knjWyCE>%y;OIfLo*rxo55G^Sz~BFV_uY=p&bi>}c}5J3kaXl)4d^`14?*A7 z9&6KFoCQ&*wt6t+1N9PG_-+o=;^U1JbgV)W75hZMRZ8mv`gHM0im;h1iAQ8Qv8SF^ zNPq#a5IXE4yW1{wxfR#QWg(4UAJe$ye+@aNE^HSYWo`2(`l3Qxwo{;$hN32REb=az z3x#{{437=JEhxrUB|Z>(f@AD5Gp%lHG2C%wb=c4eYXtANxrh+AH^u1;t@XEEPao%3&u91j>eqPJ^w-CvpTv=Z&DMppKRQ7U^qKORZwL zKS5RvQaG@6bdTU%E`QYwQ!=m8mkW>qfPpeBIt?B1+7&+{V8Cw12VA{jYPUYg56rGV;Vzy2!Gp90u+7c?mzqh9&= z;~0DRON|?h3Y`-o2LD)x))4LFqVhpF_dHT#206M0=$N6&50*UDSsHkA_=7_*1`$=R zjWi53<=-lw0s8SfYRiU80}C@!n(S|!V)p}V&!as(HtPL9y%xXY{=^T9xy<1``LZu8`f}NLFz+Ujd2bW*o2)K?p zJvjwr4;bv$md{w<0#2E9>JQ9*bNkAm+ft}Vq|HnGGXIh`b@L*>*1sfT1n|^m17rHj z3)E(dtHm*!CsQ4`u8tfxN+*#jz1YS zHsqA$Lx%butKKm{?HmmIYG}gT3k-${@Rml-MxdZ5Qgu+%Wite{T5ul>^27ew9L7?^ zjjA>8F_$sc6US0V0Sz5QorjRkz{y5Z{vM@G}2OA)=lt^lO3yjz!chn;C#R+p-SkDzqHTw5d`6qypW zB)(|On2y6B+sYm?J8&4f4&sxFjL&A-J1lk@%$xu&Mf9}Yn~$hvK9xQ<(2&>k?FdUu zdU4}g=1q?!VF((t2A?HvXfS4gCDj3)>pyam2*Y<4-`N;739=$QO;xiG035iz1^WgF zB>4LrAq+m}!7c=Q9(x!{MUcWF|9FIDv3mnu1Q>y?Clh<0u8>!7v?M?#_dHi&CkyDK zzZM0j9^FnZ?eC{P*|H`5!+rP@^S3N~+1vm4enIUcRZ7jsK5_su@7~{U0(iGPco4jR zL&dnDfpoX=oUHpQ5JDbVTEagIn#_PZ4r?n{3nFN_U|{7cfBy7v`tOikBTR|!Y-lWs zuZ8%a$`@5jo_+SLvs}=oS$^qZa(c1&SB0X{IDJbWxPy1CouGRHIDLKvs1y3Lj@dCx zCpsto1@_O=7Bno;WW`#IBrVZs@?BjZ*$bHazmo1b%flkjGHzco^V*attjZ|c$;DYq z+|sG3ci+?4zVx`d7U$e$P>}BEA^++IH_3Q)QHDCNrQR(p^#xA6SgtLshCHeHir z;y0?vmw?WgRunp2ls~WVkKnZNb?%8%sU%w>hOFDtJh@^*eN2ax^ArlQ)~Bp^j$S7f?~}vyL*EU1pvoU+0;-bAnPj^JwOreP^d=wOSb8amJ|$ zviU9c3HCNJg}sfE2Ref92sDk;TxR=#k3H?w*nRiK$XhoX)i5jXk_m|}=;7-9S3%61 z_v=CA$~y|%&*|F4-h7k-!>~RW&TDb5Hl9;U=4#Q3zwLPN*<4E&_?vPl;*CfjHopAw zE+S-)-c2oKF1sE?9WO!ahMjU{vuVQ8B!C|s$Bov#+~DrfH|o0w@&=cvEO3&gVNajS zuMf3M5BtZt>y6>|^T${^%~^22w7Canbt)Zna^5&EbL7=m_wIF-h0bh*4~n}CEN10Go0-t4k00fEJ7B61jr6yr4aTi z5JpHDVMAF7VN*hxZJ{lrZ0G?cgVbXf!ZWW( zsysHB;U!@T5gkbJoer*nZ?#;@=QWWEftMrT5!9DiiB%ecF_^m|LKP>@R%%1nhJQrE zDUPwd6>M^`sEe|srl?b-BRx@zl>PIB9M2F70NN)N5p(15F-!hL>od7b7L};mGdnIg zKgCr@S?#yn*7XB#`Ewm`C@PPZ2w`etv)ItyWBZLPw4h0%FID&=OQ%6%=zinfcd5T4 z{<3GTOYk+^$gl3_xK3F-Y=*?ttahEBQ%EeZX~q92OCzL9;cyU7qrD-92S^?F=dN5WPwbT zf-xm{k0Eq|J{=r)aE4?f4qN)zV*ud>*{9}e^U7_VFxAVeZaFRHSaEiWujFLTJ=1d? z1`Q-CXn89z8ca@@r_B#>_5ASMfn!a9Q)XElrkM*+t_^hUt8o~$Y0hJ{oUao=;G5>^ z=EgN)aY_`V*5bi{P^I#ZR*}UbZj)He=eOKEo!x&`0ruv20X>|D0^Ps$@!5SAOd)CN zoFcH55^|wiqA7JdZ%LSLzy1BsWX^J2!84GuKuYFR1cC~$Dir=3^^?JfOV}33=3sc~ zUX`vzsa54Dh15A{R+y)smpO&niEa%oJ;mW#u;e42R+JDK1dyR0{juDuyF>zu=1d;v6Ja6^{ma_1AvYnP*oTVahWVNiv1 zX9U2a`j@z+MUoP?5Qn4JQ~!$J>0&^&#EcB}G^rOSL`K2mr=A*m>e008mKntzpj2Un zB9GLG=e$VX28)5FVWcs*4}^zz?yU;C=)+5;jIaOJ?W%2 zEGBaf>1r8mI6NcI;CvV6OtEF4pBbaK3P%waH0w}YEKNtpZI~n(zk1{;48>&(_}K6t zw{w#J*N?+x^I!gPSQ2^djW;e@)SS%{U&Ix5JvYVC*+fYodL+|4qvNT9*kj~3iHxqR z!(!m=inFEa8DWx-BK&D_VUvPq6{@U4P$g!Iv=TvcNLEoNGiHfgjBNV}R(pp9fr=|z zVpa-Vp^!2cT$vRs#VqSFSoZ2*NPUZ6V&sIlx^GH+sVrcI8j0G*6>LU4K9Dwv_|9fY zNfC+}#R@TMx`9QYt{y8Jiz`bkD!wNYQRPBV`BRFK^9Lv*PG8(&V5xAW^c|2@LZ>Ng z-R(w=v7_f1xpQ!$Rb`trH7u;2AL7b5fwL%)wX0nxGqiWV&X1oN5Cqm|1mztewty8m z7j@E_#ulw~^64pK`i#Y1tU|*{s70V@%oA`w#KLK;CZi}fI5%P+e!K$&jYZs~#v%qy zWQmCD6MKg2(xy3&P&ez0Ks60Ad_wdMd=rml(n$Ii#f^z&r+5%nL5`~>68tmCKhjUz z^rCeCtYFjZdn)*6a^e~d{4e<;9+$qPnD)7DK1UmZIJ7Fzlg=m;-(3=5r&^ z(@KCIO*+kz=%-(n;(@rFZQ8KRoWbIzdY!=7JKYZuUyLz&d887RTm6&x$U16LTB_zA~OP(&ONIG`^h)Mpr%f>ZO8L?&P@G2H}{dHuiiW5!M(5L&Es zh|p$gn+?}qIJhN6Vvz4+9UbhBjxA|uJZCxjZ;J}IJSx0CV`VF;?kSYLOsn+Df8dsl5sfs5Msd3M=8SFy` zi_}@I74?W5g~Zoa_#6ojyxW4QxMNRTQp(B;phuzAVLb{#OIJn3;z{%!107mupQCpe zeG7;Tx@h^8IytEc%4H1M%ECrmu$JDW@yB~?#)actX3gmuIXHOwbK1;8Wf&|V9VLKQ zI=SSFTTt#Kr?KmJ=W)FWTo+wqVuFU%M~`mbj^T>sHd5ubaWxvg#VP0732p83nH|ox z)3Lx+a%w^S8TG@DQejZpqURfh&)O0O=#R`fy70;9}u8jQg(7++S04Ru1UaSF_up7D!88oj(s zK+NzrYwfDmN-uFi9zCAooT)-6OIR@VZg7U%h+}M1kwDrl1!z1&tm# z2+WaMz9|=%IBCXIRP?ZH9(4MmjoPM{6dIjS>E<@9)gBK^0 z+zyaqIQJBeMmV&#-F|7nvv@@u@j21Ovjbt*^ht)Oeqb8)2oNyMtDu)Ee5u%LWQj?I z88`xe9%;ngEVs2~6?~9ZiRLy+q%MhE>Ol&jy{r`(+Fy}tn`IJ3cn23y9;9Djb69!r zmO;t&Ug~ab=bD*ijl?04r+S9bn+}mm%He59m{qSG^8hYH7uHugi0fOZ>ClUwrPcvO z2!b>RB&s2~#yHdi5U7n7DU9^|c{ds>p?+F;fQZzNFRR*5P2sWfnyCc~AupcTyF^Rp}N z-g4LQaO?;WI_wbYVAHasjJs81?lKxoJ#e_Y0gEuIC0ut0O<-*>7Xm|5j-?YD#}vn} zxJ-uIr?{w0r_8jo90BW&w1>uIBJ^P=JP`SgcH|l{AYFKy0b`wi&!DdR6j~ID(n)!!uB4)>2Bz3-V-vdNv@7WNaKcX-ouB(kG8(ZNNBdN`>Af zt)SlO6g2z9)Rw28-n!KW5Y(4KhL~Rz75ZXt1IzCF1?uBsPl>RBD(NZcMu2PnQC?f}=O<$e1MH7oJf&-igIX z&mfXUb0-AN#%d>Z4)q*uIPQYFPsf;2ejO)?$5boy!0t>SN1)dh8(D0!aXO42G@P^1 z-C@cSFfY@HlcDrFIxwaLOaQd6C9JVUeh$4SfU%=70h@?)?L~x@1mqZqxUEpQ70>XZ zUjudTuVG-wQu~mQ`5cq%P3lDSe%qb}0v);J5*PJen=BN>7-_#(yqU27mP51;hBee> zPd&ADD~KAQeFQ{#VtuQ|tU(XtuFBpNBcjw{G(bHtT&=Af^4 zUk$U5qgBXGm`kdk(qZ82z``~sarLs8ei3bV>jxE<8TX8FR09j?fQWN+G4UFD;EQ8V zD!d59EbIOf)L0sOkV+AUfa1s*F#(oJU>3904wI)Cu*eqpbqPsG94i%@FPX=I`tRIb zQ~^)D=Rg1a3}RJnAL;}G?^jAvKg@8cd0w{&NvqWdp&b11(@$^T?t$5mH^c+#ERf+i%e&Cr(h4P`nDudkM;Q9By0LjlR2MOCm zCRD~}=;d=C|LG@!fBqBjyDZ=O#DD)w2zMRDy`tI|thpy{v9g*@{5j0pd}15A8qCo- z8#l(@KZxJGv1Lo_!+YS}N5pF&m|CRnYh?vb{0shxy%4uQ&$5p5bId<5jd=~mWjgTB z!$qBO*$#Y;cM2bEW*z{L?+r7&`k7~dgBup^*-t<|2$+ey+n+jd0-dq@S~kqK z44!a|y{w=r8doPY$pl>*$Fnw!l#-vu3wDfL>BRu*JQFT8HiQjh2sf8$5zvyv7&67C z<5l`%j&zDK5Ei>;&?=)NF2GMU&R-*z9qAf#U_C})B5$Hu)a~#%6;qn$+Z1-5Hx>|p zIu8NRR<_FH*s-Yxe7e%!avZPJ%piAh>}n@%MUhDfC*sZ^^{3v!DK$SX1w)lyA4 zH&QLfpxKY;YB`RTG$4`92qR&-zyY8OY;dJi@G8;v5!=R*g32#`6`vw(J@G+ja$|^S z8ztZ0bo*|XR5X8`e{!S?9~79$7)997w3dNstphK z*okv$+mX4u`?`{%JC4VqB4tjq8b<%UVi^5jP?lF?c(gN;XL~iE@Z}c=BDJn(pWVGX zP$;mvq!TZXlWH|LutlGDsq|UE`{v)4OuRJCkxDqh9h$sbZ!Boc+RFM?YIQsMmP(*K zqM>UNm=iFxC+}9p!gA1hP241$zAwU+$vM9B(jHYbtOzTk3G``gPZfRBUc*&(Jgt5* zJ~;)f>JtHgHlJ1o+YCGl6X>PJDFC)1_yHyq$5nXYF=ZWt=^PV%LbM6|35|?x9Q4Vq zg(@&S16v0^s-8ZK9QAPve}A_?#mjP~ftzl+>3ys=r@~sTi|>5!$}-{#r2>Ig1_a`u z%%F4e`69MJ%Dtw{))(>|y)cnfp;ATA6mj5sh0Sl0eM9}Mm1T!2Sa!H|C?kKcMbKQB znFE!vfkioLdQoBq#Wy4M+<^njmwPf9Ru9kKs^uB0{}~+IHDyYgdSrUBBa=~)eZvWu zzy%C4XgFXEOu@Wmi)Qaz>4NsTZTLLmbpD**T#*HJENJM0=YD)YC~s=`r6b?% zDH>M4a`&D9bU#y1o`6}Lyjr0tqs>eJ0mr=$Oy+ZAU{s@1D!BL737wB$C=f9WWtap8 z5NPxRn+#O1wnI|KX&98z_?AT{)yZTU>;Q`{SgK$zAoe`}{8+h+WO#CKD|8H(;PGrU zxQJT#*W(7+2kJiw=jrQPNWHLS-DzhNGE!n|Rp<>0 zmhB^i28Llgb~NdFtGH_3yv%Eavd$Tkev7)Ju(VexXp%aAy<8DAWmOKT*PqvUdU8sP zPKuSN-wB%p9IbhS{Ap4om68cvN^BRX3=#nx;U36!kHK_1Lze8Kk!O=e!1b3-xO~D* zb*L*?fcnf-!>%&^ooSRo4%^6P=~jH>@99z3ll}!$UZ-WMn{qhx%#UVPe2l4f)%OF= zJ;BBND!(RrTB(+DG9@wdGNkGHtWe9zbJR~pK{id45PIXeRC3$CUsZv`pzY#48w^rW zsA=VeH%(`&_>->Ow$SuL#XMyw2(p~K_Va{Au?~j5ZKPNXGYvq8EVG+n7{I}GdnFT- z;&5}s5!vZ+4XE9kflsQMh$bd7>1)XsU%cP~Ok*?@zUj@)LLK+KKO9JYmqs^SGC25+ z0vZn*WzH+n=aouL;VTOWM{Ali0L{5FCRWP?EFc15izLe0V=QgQ;_i@C;t&d&i!(Bv z8gG9E6piIv>+lD|QXb!I;fh%>Tp_kw=c@cu3@%Miw_6fY1vIh$=$r#44OFCb4F|C1 zu}SND) zfp}lL1-Gw@Q5nt^@q>-GeM_P6_l#lfFf_1dpFy3C1*CzS2MM5u!4?~(!bnQh;+h+k z$R%vcEdiZ+Xz;!Z2CB-zz{I&uj6tHnSuh-A6iwi)be2$ z)V8>ho&J37Q^JzIDSc{sEeJbNW)u;f^GpGRoLcUMHZWA#-v(X6UQ(^)5jLG{>gudz z#=$Z{g2+>g)+4bBrD`$%T~e##ahimgUXLla&PRx3WI`o|tP(ga&=VR{Rj)I298wyq zdX1q9B-Ijw}XcfuVL4xJPLHg*Z;mAGWfOc21nK>Wu5Gl*n5 zttIh=<7{zmU9L|NoWGD=@)y4D3W159j&FYYLO1OH!6 zfA!UiFUG^5ek7s(^)dKaaVMte+0@mA>_S0MU=XJSYA!XQmDKnhT$P3wY!(e)%e`i+ zKb90L)KZ&PXp(|^l3Ro#B~L6AhommU#OcjY0dP<2OM9&ImcU3iFT7~zpPul>nAO(b zlT>u4gnBa5tLTkFb3MYAa)YN#nOzddd9DBiT0wgJ%cm0fV?M48sFIFyj*Mvs-RwGpmF$|_vGzjC#tMf#q}z3{ZjN-4A$0X0ex9D%4f zc@Sx}QJ++xhao0kQg3g|Dg_2Gzr{P7O-Y4A?DXWS8_hhk*tK`!eucFq1b|VV*d0c` zt+djDK?q6zAwPXW<#)(Q_LeD1lOJ1u}d-Ik*Kk!pfa?%S96DGcc!pZbpI zd338plTgZ4DVM?!SISfwbfYeN`fNKWH}gz=bA*oGik7F-@l6BMy^-3dFr-?o?FM^> z;p9(^G&69W9K$3TElWJpITrxapbt_3`Vj2Jag7Bh{PlaSYP9!*?`BRsosEnhc}74AU61y#sEv986rR7qRtp5d1(r;Nty1!WNdy0@ zY882fq6l9t1XLL3#J3MVxOsCEl%Ax&14Lb#dhtq(F!`XUDXgAF>iAQaq*S-1(`K}- zNIjk}K}6?^f>^o5#0MagD5w!cG9l9D5S?f6&6{p9nq~|WAze^^Q|>@Z?9VO`qe(R-|?N z2a)E<-5`L_+E?4xVAo-Fy%u`((MORiy*Tx4wYsia{S;TL&OioZ#3#j)0Lm2GBlmfg z%?h87c%e}>xq^<6?qNM}68gvuu#GH)lWPHtc+Q0LpnEnh8^?zzJtl{xZ7A&|wb(<_ z4wT8BZ~}mv-SG7WN}o2z;7swcZ47cU*0rAa;#&{rvp(Ahe_!$T+m~PNXl+FoqN}JS zW|W1hau)Ebz>L$=+O#B%b?=k&?n)^qN4a`ls8i_H#zRt%G#G!i1IwffL81*#7!X>A z1W?~2g?tt@s}(fbW7(KM7NsF`Ast96hjBn84dTJ;?QLxzx3>e0Gu-BpvBSR>KFH;k zWioNxlsB3t4K)y8$u?!$X z7s0yV^}!JfZd)etbn-}43F{253|FAXHXZ?m2y00@KU_{2@oy~XYvTQaor4nLs0m?O zpJ@JH{?dX$uzZkDJ=Ffg505^o&WKe+4k;fm^VLdzf-jf7UMl_R(4nW$L0Fg=UML)2$NQ^q9-9`y{wEp5~Ds@#8&Zy#=Od);v4TrB&*o(SAk+72=l$vT3dh?&7He{ zco_NS%*jy%aY@lB@J_XeY_n?H^^Tb~vu!A6H06^@o`$E0w-Bf22fqE5dX4%sjDM3h zEAiQh_a$mAzijN0I0YuBS^{;uPUufP#A<6;MSM^hAW@x>owkXL8Y3*vxE^aARtHG} zEDZib2i*;)KF%r*cXyu#HO~Wh?r$zJw~g{tvKf_&SKvC)rCn;DG9h(=c>{$Q{CKRr z{f`9ML2a*6Umibx*=2U9leFD&{or8c7%CrJwF+6(hO$ntZ;fefWvxozQQMlHoq=J8 zj{wMgHVn5u#LCou*NF~5+XL=mH+?FYUlI3^u*yyZ%EfsoGEJrN{V>&DfqRC35xNKo zAL-b1()84Su`;Vw7YrI{8gD$I4o@7 zN^{uw&pUMyuNX>B;aEXas5*IeVS3mLnZ_%%zp)&Jo6C{>P!XM~v;r#A*c+1u0UW3+ zmtO)J2cuAE6^TstU~M1B-oZRE3rbK4r9qj_P}j!SZ(JS5f+5+xmz4Io^_i5~uWiW= z%Q7p5fd!e2UG{G61l+t<;0<{Gf1ob-D8*rV823R2VTBvV2j4PWjm9fXTR!|bEDnC) zQENK(qeJ%5EPCv58nI}Th`F6qxXQt~SQ7m}@i{;NX=}kG9p{25@*TnU_9NBmg6{5x zMSb^-0M9J)PpKlasx;9nHuL9 zV1eK#S*>7>#sle(&X9mh$?2bEbs~)C?&;jc9{0HYy5|*)i zyu7`P?v*$uo8+dcDS13adZ*az#v;Ct#u8VAN$ z-e3mZDr0O-!=B*KI0+BNT{6X&5gP;xHBu*UEDG89I9i+>Q`EuFjRwT1k2s}`a<+D% zqg80>HZh6CEYMW>y^UB`+q<_#qGjhs3W8YrD$KNg)s8M~uiZubO$^8$sV4iaP@7VTRW0|XdLmK~lNCDB z?ul~H5*Hgp1WVyG11z!^hEpD6c}85J83GW-L`Wk- z8nGX&6oi3eE9Z@`!0VWO0FOxrj&O-b;iIuMCQyVX<}W`92uS>7W0#np1QK+6_TZ*C zucL$d5w|3NUC>UAkXB)|7X@@_;J->DZb8}U10pffTM~L5leB)#MCw%B#{5%GqUDy@ z+E496QHgt!>p&LB@{=$S#kGWalBYq#L(?=jCT*VLI+Pd5WNGG^V{g4h{oP{eRGT#& zHH)P~V^wvG#)@;Of50G+N|>2v<>^VoB)?4&kvkQ!6~fez6|!x%u{Z8i#MNF^>aols zxxz1l?#C(8h#{a0t1)8>2ueb&4!ARbbRU^oUX#V(si+zZ|3|R6TtaAorzG%9)+KU? zeG<1ELQiS4)C)ek56WUs!+pV-ixh@4utA*&AnYY{5P1%5SnKYpacA(L3J%a6uzwm& z3JNB8p-&Fa>%~lF)yYQKQwK@_hdlmSFi*ui7{fEp(DdSqp(Ofi_j8E0R;pA+!Y+wM z-5v)TGegi0Jf`ci5*^p#wv!4G!Ly3kKv(GuIyo+nwB#}s6dpz4hJ-R^NE#DpVN@OT zh~mmtY6bctKRY=yH6wdZtHi=<2ab6UBNrFSBr?Q`y@P{P-~C1y{3aw0nyHc`)^>|| ziYA!Qk3t*YwA89fE1jyW!lW;0o0J8CS=QVvb?92R-FYVcMp)(Av`VecIGNfQ)U*1) zWdD{G8M!u?{Q{$^aWK>gOFn19La1udeUia31_xgl{D+PiMq&i~8LmrWd(K4luEtGZ z>^1}iqg#cwRmWbJUw%=#er?t>E3yM45AlOQpHo_4rzYR#~91>q71>Fe?O*I%QweJCRF3^?T$b6H_lR<0-t z4dNL=P!VZ)Q5w<*bRpH#4mkQ=sp~xI&sqZ>BE(bA03^-; zvaRpu7r~c~msxcHzkCcDSh(juW;1YtgjbQ7&&M?s+LhuHUe9acD+~gFIp2upp|;DJ zWhGX8_Ss8mcsoMutF4;-uYW%NTQsv>8gJriwZJvO?>tP&Tw@ywoBXr9tf(#qwU;P5 zEn+C>JuAV_|NwcUE82iXz zS5!3LF||!<;}CoSTc9LKwL#5Q2Kh#dStJE9Dl?@e9@#>_B|d$wc4G;BRH_x{S%zZC z(2y7HGB~E0Y?c`VKF<`B3!>UL9sX0@UIUD9xm4~MRshD{Ql!r9sA>?01r#hH$G$B!19DIU6wV&hYC{<`pQimEwhq(CTkBK<-&IiGG z;ED_(QoH-x4Y(27bP6?}Wl0a_eIlM#L-L#A)u1ih6%+ugE?<(G)i236&epb}eVWy2OTE^zds!0Lmg7?*SG!UT&hJQ0gT<#KN(b5$mDb4ehP z2JCnW0{jm3{ea9YDT;J|C3;F!te}OFyGa#R^WqkEbjYVuI|hN@X9_yoW}9Twt7Fl1 z3Ts!JMy_e=teyMPOMCa)%4L=zL;Wg;UZF03j`{=_4^Z;w2^t-jWMR2!Bt&ORojnj& z51^rabLLR*LNAuEkZO?+BEPGB9E~6>)W<*?iRa`hRlB@gxq=_!LkDRr$4MVpnkU8_ z)jDB+os$wr-xv;nQ#HD1hff_&h?%xCKC+`YUpl@3QnD1NUDi)2wzDI42X=z7NjR~F z=~#eGo(l~XACQMHCg#>|0WL+rv)o3_?jf2eM-~0pDFUge0L)@pqdY!`y0WFkTB{v9 zmMe+0+%}GyvOM_Uh7Deb4g0YCIt%5tzWnmbw#;x(PxMe6C{EF0>Th}&sbYz(KnKGm zA9>@AgV8R+B-LhAN_B2KBdm4#c2QS7hM?POdrQUZ1lF9S|Ps;~?=L|y>}Q`~Qa zUj^S?%{Xa3}qTev}v`J03=;^LY4Zr^=rA;_n@kdSNikvtAkwzqEva-(}?Se*L3kj$uL z#R;YU>lokT0DZ(J`=PW@g1>=J8oVUQtyS;1W93SqMn%m@O=k~`1}2JtW9~_+O0A?` zP|PY=RqEnUxmKXQRl-Pt+CIC)n|67El(VB3Tu&LaMj%cFd0wEo;<5UvD_!u)6LRnT zxlV;^&ip7jxGzR3IN|O1r6w4&0bO>)A&GBlUzO42<=WL~&NXcp?a2W_k9Y3;dA_S| zt?b^Gh0l_kHnqTR;ZoHRI-M4R+CqKWEe()AEUbu=>3UKFm7GP5dyNkrv-&5S1Xy$Y zEZ$Ql{h$M2sJFt`Mxr(5Yk;Z7HCSw1#=2VM?mTuHG4F|9bPlfOaAQ)Pl9go3wda;( z3S}7&yt%Rh0k8Hgo)RE2VOcmLRS^k7@l-}?l>}ih^fOGJul37KK>4gixs22XUslTR z%H{lt#G*uk8ouYAGtYG7^9m4QX#p)7;*R#sBH!>#yUaE;AKh`{HH#heyr57Gqgz5^ zdhYtn(;`ccL2T>}NW3$xVhsqcf0QK_N}2}EGV7F-%rnI-RVQ1h+0<{9tQ7Qd2#UJD zc5?;2SE;o_evY+kj*hgg#^&gZl4VyNV}Y4nY1lb~ejDi`H1bDC3PJR%0sFz849chD zd41!=rM1;};v!h%u?oFQHS2*(bq+jqM7Z|)7yV+Lu*_F2sdBC9=_R&W&^^t!xmsP` z-Ceu$op<){2kzMYS;FS^4*LDKH8%&SckhnJXT@Tn&xu_kV^}FxCu&7+InpEqh>6gd zK~s(`d=@mCKIy=Xx?jSrSTRgXWud9w$~Q7X)+Y9hAQwkYxVDdKi_bF0TBF#A^?^b;Hw2`o}5$rESohy^USVY=*o5xFo{D0AL4qxRZHmD>N~kFSJR&iEMhez8c!fjj%&`3;ZcF}|@|2I6xwiH(Y=?I8E7TBpUttH2ZHjgF^SDALp zbR~iT-e{rxP&bhrSja}RlmKe!`WNAQm^T$?tQ^-vT& zEbuw_YOXsVq~>)9j7cAm=JOLVnJ7g@6Kpll@43(~G2yw%=Bhx>>Sjr{MZ<)YaNt4yR;;Mmgk_Z^Oj1Kk!bua9{aC^%zSrWYdGB;arwh08^-d)R9+ z_SJRLieu|K5u5?7ZWgx)n?ux_X`vj3 zF2tKtfPl%6Rw$W$O6k$x&OVzG;;oyQl*It_6c?j^P-65OYPygRmrqTel02n&;=cRV zt;3L;JZl>@Giy-CV`{59o&w^_PJ`6g4NOq&daa=Y4a8dtx2E`N-=N8@?L+rcU&nt# zasKrX{l+pdu_>5G+|_@AHGL#i!!-gta)pPjmH|H|F00W26h7hDMB?fIoOHT%LZg=G z+V&`Dg=rDs6pg{UG3wU>v2mb*(gJoW3y1QS!p`CN_DC9Xg3l=G2Ky zGQhGZEJCr0FC{hk!^)Pj8PsP?<&1i>Ke#k#H@8=)?+QTb3S(Q8`MKwI?C?NXb|OpN z8$&>a61>K{d;0VldQ&DUgEpSX8%vs8J$Z%DA`mCqK9aghF*(o5lXwy(oBOmS(=;+M z0%2tgPmz|V460rIZ5p0QWEhy?-4wFsRW6w~K%CU`HSi0|LxcEDnqBz&LKt z*idb>B1+8e>}1105R6IujEOf;)5|YYuMw@aCq=|yg$kB7V@4KuEJtrsKJS>AuEV-39#VHpeJ=a zKpIw^nA_7s{gYVHMrkYUd6k`4BJJqXZgsOFDQT*8JoVJ}?QW>6Perd(smCfFbRKmc zezboL;D4ZnE0h3bmFe!vh-G2FkYE$CHix)4(4Xe{LkcH)nkuupZZY2hokD>|m)9C} z#hBKT1uEsrd9{x#=$cCHmRmtYm_z+I7`;7${#h)BuHwv9D+m@LF+={ZY_=uC;Nvha z$#GV1BP_tAa9EUODy-0&3G3;5z7_Zdu9GNxLxQ zkX)fP;|6WM#BMUv*NJe$xRq$qd&4d%kT&$ zRMSxz$5O5`-w^j=Qch1uOMYFHH}OHn>b|rg5rolXf1J9G@S-bNtTV5j4;tzS=nv&V zv$QZU=*muic$P#V(GyJ{v)BOhjcK_oAy=fA3PNdJCNMvwR9e3L67j$I;y^O_k5uX( z%@SYCz|-RK`P8LY;u?u1 zp2<}$Ur#FYT{ajt>e4~lp(^)sfy$8#NWvkZjo%#h^25?lJRpQ}9hUKYiq$_s0OF1o zD9P869R(WgHVjj9s~T!lK+ZIq1zx<4O;XBXMBVfONxNl8w{T zh$ibVWo{=E>x{dV*vi4#!T%%lY+2Xq;;PkrcNMjzbm3-UPT&bqujLHWS|P{FPc)r( z+kT<2**Jeg5mWH4o~2pxzyo*x_~Tae9VJ2~UGFJr01CD&oT&eYOCJ?Bi^AwmvCw0h z#E>e}w8g`%8-v74J*rwO&s}Y9$aVzx)^dHd33J8>Z2=MFUN%e?k zG@)@cVwx({=rFMWOgk=ug~xv|og7W-J(ALZ?gDHKzJm0!!X{vpA}la`WcFbEM;PuI zJJddQgV0+byRZkXqxL$`k#6eMjv!hH3gQc?S(w!E)kPBk7l2V* z(Wdm-Nuh$3X2~{0x&2i&}SNM0zrI7PU(6o@DZAx_L6724x z1QbpPh-O^f1{k{3l=SY}=k4g?de($1NpG`E;6~ICB91~EJE4Mv1?usF)+eOsQ$4=X zkxGu@l^Co?K?C3V}`yN zUeYM^PU`{rwSW+&bLk8oviKR8O^f=vF=$HIevDElbb7FsB9MxOvJ>jCWFu18J7uQo zeA1`z`Bf2hAh^V#aZ60{2(kgT0CB&kC}qJGwG|DhU*)J~lpy^l4QJ1`$V2ibWf*;x z%`VSmlGNY78;L$~&FWs(BO~f2b-+#;NTe}|{Sq4DcOH;qTv(4laT<#Mzzh%V$vq8^ z&MY*X=>Kr}$2n@ju^;@@!QeH|pCQz8*SvC5{MHlHo2L#6)%*%6 zp&SoBc=p+t3)!5x$m4H*o%-U7FZ8=+%t&c%9eSs#Y%hy>GApnz1#CjIvC|~>!o3HY z8$+AkEcXT4MA@ZY&C_HMgxJJ4rBwobix2Y{ zU0AJMO+(`!gpO5(4jvd{A_n?f2gG2LgV`CzhYlmoVbsiwuKwuPm;{TiK)~q-1PROv zgV{eR5o1bOjA?@S6%NF*BS#=AfVAkXs5oln==fIe{Sk4*3}rrx|N4kDYy#?av-jbs z&}E}sUv!IKx7mJ zt}+->Qj;`EU6}`N(g~xzbaY4%n`PmuNn=k?n3xA+?HtSCH^MM9(p4PGfKLzyS~3OK zG6h|gKc1m>rioUn_Ua2WYcHYy+GK9vfbvW1nyA99N>SfAQmTNVVOsfK&vQU z7Fy;*(2uzaXcxw31vtvBZ@~mSF^l8Wv2>#J=lF)yDMjgz2Z3BI;UTe*iO!UPDIeZiZ{(MICY6F-M>s!BL( z?;&Y7yb)g&i?N$m<9D?^$z<~3-(Uahx8Xrtodz;zbkU|8g6&srKJ!f4d%XzMsES`G zPcfZoJY{|otsosJ!oQj}q|C=gh6A@1eg{z7ZTPRz@DwU5aJQMm!hB@>+`3m@x%grq zFn-Ca)#uUsl%pSOPgStb@(_Ks2UerG)IvN(_WL-mm3%ZQ4VvS|@Km?d!0~W^s!AwB z86?>eg8`N#*SscbOiB{s#9%;T5jjLg;be&Y4P%2bOYKH(weMOq0UIxGzl?F%pd97JjLQg6&P9N%2k_nTb#{Ud! zfL^;gQyK;v)tS;TO$ycw8h-(qP#snXU#^BD0@No&1!JNCPUCg>B94jmfitjigNwxa zXP()*6=Y`#M~6tq?S`qg*4CrwcT^0P#i`MR)&4MSfMzv#VmaFK^p@%4q=Xrr0Dsk4OR+%TYMMr>0&DA_;cE`z`emmUVM-6*G~RAYMj2cEZ&J9TZn6Gi;%6m8{{D1 zH#ed!)YcTfLT)s#^YxBB&?Zu2PGc3O)@i}LFgIG#^{47ZU0tBo{@Yp&qfS`bL^S@= zVd|+wI&pvU(RXjX6}|uTp0S^xY2DqiyCIkBfZq=zvKawMtZLE&xg6FsSq~MP-Sp@n zo>Y1SeCG&;1J?`cg29ue#Ee6AYYf684c#73XyqUOcrVWe?iAWW zc8dUASAv)Xh*ty}naHh1Jgy43^gu>gEaE&?P!?R64$PGv&MDjdKo93H+*QC`xFFPy zn^M4@_Arp20$E>dM|fwaxVSlio{wnK+JLrY$nToms}JaVCR5)A1-vRg_wdJT2?;?OeTC z&y5MKAPjk(h8$jB6p5hc38S|_g2W>E=~c7VNji6hIT8umzo{hZ+ZiG?q;C`T2=%DG zUZTb?=aOHTfPKuS&OD>cTa%U?5F6V}aivw2z22(`g5}U6;AL zvT~sQP`3>RP@#6H1HI5u>qZAv$@v3DV1CkdPKWzZg!A(ZoS*U7^6_Bl&heH6--EjK z7{zen4idgM*r_xcBJdS?9P$d9kyHyG;4ayR?zw0EdUHz)=-9@oSIyAZy!wiKel2oS ze-wel-xKG;eNF=x`ct@jv?rToB{)S+e{yc>1?i#pu@uUvzkR5DxCBC)D~M-G7nfk> zVi&TPYTuR6UpI0erfxxViR_nOQhz*i@80Bhbl7q~jM(;q=TwbR0SG|l7YjYkg9_(* zpp&`)>K=5BbByH!1sS;f&dDENMm3kp=gg!IEx8SNaibJFxDRCzKs+= z$A|5K|(sVqcT64H_7 z%U?9dFS@cF_@iPgm(Tl0S!^WX=(W3Gz(hx?`MP)r=!s;}v=P`%jOpm>B+!JCcAm** z<|CgpoYX?vsZE4swW%+>060Y$8v7pDYQD)|a^=1PM=WAxcVDzCvpc++diq3YHTC=j zFvR#HbwqC>c`UI_jHGB;Sft>Ce2M^OFU9D63HUC#I{!PFdkUaQpzKiUHOZWPts1_T zRAj2aKV~&>{Q_%~neQ~^Vlp7nQs&w$4~&o~;5oCytly2a^hdoM27Fd%?DY(~VnzEo zy6*xT1*eamWS~zRY!Tre4e&wl|K0rst-5`deHhda-^7$W$ zWwk5FZQJ%&AL*oiyKd%1&pvxbvAE8=GS5jY3MTW)L{nDdvF(hy_w)Vy@B1vD$?8ZQJ0ypF!N1`#6sd zzWzG()5@1$PE#*HIPw_DGl&yXlSpR>FLOJ!#a5CGoaPp|m--d{)0`T8xy`P(bha6+ z#%eclaqV~o-Ce0+jo){mvqT61r%T8^O)ux^df;K`i|EEgmCi=pv<@%Uz?Eiv5%A5&zM#>rV%0$@w3)9z1zR$537DHS8cU2`kh&Wht?-R=4cmxh z?d5?FKSboQW7La;wf4b<$>h@&uF3@wx0+{elCzP+8`_ux(2Ap{HC-y*RjGKL;^v^1 zBjc$9uG>HPWL7FQ&l}v72DjqqY3p=}n?rhzj8q5QkCH~4fn()6F)I+y?y_-hJhQ{f zuVtTpdiQPz%xUOK_ob-g#Wf}3LFz(~X}vtVZTERe4v-MVHf-LMLeh}ZMDh)Mo?Jx@ zgRepq;a4~(cj`crP?c*- zT$9~IMuZNRm5&@_t^%$};NJCkGwmAzV__|i4bYezAM!Qq6y30?Uk$h(bgl*I?D&!7 zv5f*S?&BL-Fh~qL_kX3-TJp@Np4zz++Pg4i3{aT&FkVwlC~IHe*xlWm&AtU)0aD7( zb0jQEP~|F`OqjJ0raK*6`D<{5*eba_^o{WSo;7Xclc)3Tx zcljVvv5Bk?u^t)|D83Z)XKLHitaA@i|GFQ&3qbUKlfc*s^IFd*HlDK%Mux?#!u~7E zL*elBP{{WO&m%kOH)66VF4??7Elzz#5FX`CxSi2_@%D*5?Y`VT92$Y zP1pnKV^^QF;IPQpJK`u3-wh6Y#2E>Gj3lshR8%Ci6KwV zfajn8dkM%IDqL;u<(Hj#oYmpY&q?Hx z`6SUPH&(PtT_qrQPc+L^iPUG*bgda9KAcc%5(DGtkXi_`I1+Z=FY|kdsjp|}A&$gY z)+%&u)b4EdSa{`%AZ#z&JA8_7smQ7Hs=UhM9)VHd7ns50<12G3@Q~DVWfROsVVE7B zj>6a)tYtAB=H^bLsgA&g(GfnZ>`6`?>Us73liT4%cpJt!Yxo9S*T!}Ye`IOl2aSZt zblBXeF2VQ0t48Y_X*67^SRZ^4m7jd_mNt<@>bC+-Ag~UL?6=(V0rk-z{&3xO)IT47 z_?&aR&@TJp@Zsp<#k-d--Sgddrc`RV$J${g_#9(_n^unzgO^d z0=YxLa-G;q{1lJJ?>X@&tr-+jU|1X$mgQ`DvIU=smM0ZV{S9pie-({JTce1lfc$@& zR}2tG4WF+)%1bN@@Ks#b@ImU!58fyAj&40EW$W6F^aB3|D5~rDeVl$U*pe_Ta=lq_ z7C_2(z(tvWwco}LB+~jHw2#0+BMv5UQpKd}bqfW(U^wL3x=LsY5)Axb9U;NRLja=! zarmncb}`>Ry6kjRN^cu3B*`7bkt^}rTS!ZN9?B3vILOfnA~6MZ0cxh+<)8%h3Lj~x zFJv*f6=v2<_ZHLvby#fFAzg;e7P7@`u7E{w2$+}U>4k{R=F3Qxkkpf6J)h5|mKNn! zs1I0HMbypwIN$wLN)Z9sLxIk>uvDU+zu|_33w^m9QCza**UOfn)+I{{wLc1GoIl4Z zwD1jms|ai1j@+q5v{Yg1GpS4iF_nL=U7^btsSAG;usARQ&gJl$RHT%p4e?bZsMGxk&e`v@D zu)G_$ZhZpvQ4idb%bniR@83h){sX%@-!oW?;Ep8}5pY`S%Rhuhbb>EJF*er0J zbpZXVNWC$4?q&1lA=jKa8A{|cI%e9f_SwX7sc()=s?FtV7h3&8R)LCdLH#NO)i^APF}51V44T%Z&~eLPF03W29rg>@C*Z7`KJ2ij*px8!mNcv) z{TkXoK(%?aVps3lIIwAH`)mrPOK{dW-Ux@F?`fP-=Ln zTCIK9B2uyQgo^!7>J_XFhh(iFa-9%asDGkuojY((9+JowB6rsng+5YdO>P_ zA3p}sx;mw-^b!AQnbJBjO&!ZVpJJ{2z)cX9IkLfvIaj zXK&wxTPNHz;jsxXOgIjWD_ABBAqQs%w;Wd-Mke&@CLu{1*!1{vL>z-pM;DUD_QD_p z?Ub<%$HqPh8-f4M9M@6QgQxx@Ay2?RLLC9Z9LRRyeSP)e^#0FNFeDAVZ+K0EehL2n zAW9DN1dLHaeE=f~3;1DWv)boDDuq%n^#GuORN2L(gd^Z1PeAXHOzoCxRoy@)PI}t} zLLPN{pVTZY2y`Ix_C#%O7ZG~rsuJ}Orr`PND-(pnz!Lb}b9*C}7I93Jrl=O%G0lF)HkQc|cb1HVkmf$ zr+6qX^%kfX^FX~AoCVFo?r-{^>lsfRG4z-i+B8oB}RR%x#tl1O{O5=IrC!g-9V2rusbA{OQdEPfU6h zDxsdo7m(bGquQ{@B2Z{0pa5VOuysZd$l5B9E79L%s)$mdh{Juw`Q&3P8*TkCrSxc( z16NEjzHbIZ1j|mcefZARYhQ3+n7Joh%fJ>9Kj22!@g(qfY}c3rg=1`dfYJ?nNFOkW z*O+?P`Xfhn?hFEiVGksWSqobt<2Ls?F_5M$^#EJDtVPum2Vvlm(d)hZ(6Sz z6Z5%GlPAINo!O$L4pFgOw2&d*yn4X`#7{b?+Z+Z>Qejc0S3>gCEL8F@aC5Z6fJmS4 zNLAb>j$E;$nIn;sK~U6!h#4ct>f)~kK-2|CPy?6>x;|M}r|7`+_P0PV0IV=dkjerK z5>Ot&tp+y9rVv4BK@z#X(oCd_?IjMau+79*c1%^KPNLL^sPIZNxBzCg>7|D!>Rf+y zR3Fny#ev01xjmj5OcK{4GmrYPSY&Y|TANxVAp|BN8xof0q)o=TGG|{m6UVu;SKFhS zAkdoyD1>#`_8&aB441Ro+S)G2aaB$WP;QcLCx6PHxPSVQFZA-{f&|=g>b=tabBXB( z+hb9IjGbV~ZpezXf&fo(_EpDWR`%c2y9W-eSYd@e@r5m1G1qG43T%A1U!+BfYls|= zhEO;PPPFD4>W4S>Pwbg0kaIewIA-7WG17d+zm@v;ERI;hp7Jw#Pwt#y)>>xgTW(KK zH%1B85e@ZDeEnG<;0)PN{?f}!x9daNy9vI%suOAR=GvL0Q5=?AK-v>V2PNv3kjRu) zi?q32rIPP*kZb-Lfb6B(HRzMgav>rF8UaB#To6vU!ID1>O$f#T>HtnTwik$JE@sdW z1lk4SU;(>1e0f-4Le=4cdJNQ3B|ql3eA-BCh;0hieE0}6~v{1f0XFj^7} zL^F&orq-xXkvcN;=ucSsttGkpnt|2tPr17)QYrJ8aKM)2OZLkoKKH^f7Xk&q@J&M} zDE1#ZI@Vy?C3su`Fv~&r@KtZTfwHGw_s%=DPqK0&yU5ZJf6Y^G<$jtzJ#~conJto% zd69;9`S%73mT$qMni8~%HOHeI?i-ed)^`HMAbJ_F ziNRI{mIUXSIQOilBJg$Ek&zAi1NUp>EA@Jp7QY@ggI;F*EN$n;+B3i&Ir>=>J8IcB z;>mV`L$a$Jl6whgMg2bDKRw_uSIg@U9=!W*bo7opxOd%kO2|4t!qM^~vzFT31KK9_ z#N}c8;uu%Qi=VQ_Zp_4`P10D4rMH(_$l7#b=e0z+_H=VaUBx&a9tPH2+((h!?Zl+o zg{f9?g%Dg1f%1cqRi}A8OIC&>(;aH7zy?ANX9vTER!wG# zI5^n|U(r{&W{KM^x5+)8gMTt6U&x{pvc!Bl)Y&X=Jg11qFc#6HGxS-;rin@Kv3bH~3WvrxM0SBW!e^U~Kt|gp^xr%qMc;aZ zZ4AzvKG^W1>IBbf`!}@4<84?roVw_Jc$U@@5!8_-|-MT4fbb{_x*V?HDs+pxd@wu}KiV;>!EDn{Xb-(#L)@DYp z-SaP$0np$VaaCbfuoM9Mf6?h2>IP^6x31zy$Rx-&5LVHwo6?w>HF`;qcj&`*5~!N8 z$5&4M)k>=XNY&1{c`o9W%OAwop1n58lgn6zOZOGf=FZOG&Fk@2C4b&oU9RSmRLilrZKNDff))|W?&dlJPOi%*)s=wO&Ea$M zB@z%v0kDYOM>a>jT#sLV6m6sO1h4kvV%$d*wmKGf@=U_kQ-tVh%0rlHAES8=V_xo1 z@Q72r!SMzfD%>^@>LV{+vPGI-(m() z=8PLYC-&uXfy>?w&JiUR`GEb;G4s-DHFChwB(h7~5(kQ~^ctT-L@GJ*xK0;PnE-Vy zl=4Xy(4w-n{~u@X0pC`6y^rU;SGwAJ@4alvvL#EhWm(>qJQLg5o9w;GUL+)h5mrLj zkg!)Mn*gPhRc2c#qlK0NrL>e%3I#f-b@MytO7ckP_w)b!9TXgS+ESMulsg#;mIMJ0#@7s57WhSt8-}#MDmr=ATBfzFm z+p6i>bjKQ=T6D={%h?;Nlo9A2kB|o7K{kg?QR-MSxj2=2IgzMlPk7AAkle1Q)Ywc} zom<~R1Y^EP9OcCE6^(OzGH*phSD_781{Lm^^D8BlbEi08lMQScN-E?oiK25ifucma zF`&s>&9)9>P}2m9jXBU)exM5m3D=4>0W|Hiz%p$UW z3I{9`zht?Pt%|c`rT>?`Kjim?>}JAH=J!QpF}(s?b?pH0AxJ?dpf(pSGGoQePDu;j zu5NApM{Dav_5QUx8+bB>AiZVTChs*%0THNABEZi&N5Uh40!ylvaWiIumL0i7|UHyIj-4@*4~T58bDBi9L} z;PA)v0iaS=XeB~WlKsFpS*%f(^D|x!nT@^H#XdkZK-hn@2hiC-2;73U9#*=X;D><; zf-~~U$h-iB`eNfHl^A7uDtiT-`T~I-Qy4(ohVC}nGAy5!6F8tS;a_94-w!&`fYySa zrA|Nk=uxyVep11{+uzujf1CIAx_a#7^Z;pzIVhBzN(wC&p-pVo19Mc!Gjnbw#H^ti zlims`O@avD^g$HxGd`(VB@}xFT5*+7#ejHFFb*ss>fmB6LfwkuR>g zYVKUHyVRi+BNKT23?Q2!VJ37aA&G5f0w#7z?8I9%udXh|W|Pz(el=GWRo}wiuLJ%P zT4KTOBMEh!eXaSrYqCNuui=uz8B18K5Ytf8;Yk#$<@!3vchpxYZE2m{&`d6)M4o<= z(3ErBl_8-9_6hcGXz;m^R!awNO*1Nf-F4E!W%cBAeW9K5?gMR4i49_kxC584-^byA zb)UWq2sxU@XfyOSu&{}s$ElD%#lafLYIs>Od+LJ2fiLu((QQjW<^t^_YOC=nYw)21 zC68~U=1}_gh#CW2IjS+p$bpf=2n;56oLvGfjWa1GGN{j&v;SJk{&(R`l(X=W=5K#{ z-~rx?F9Oj8G~u4iO4O=U2s~_iOrW@~+7uGi3IptKQYtIIjilK^sa8zw zc|2G#rO#69+X{Ge=v*nirjoB%C7JjI`&~sw>JFP|xl-V+KG>+;at;IqGnX$mpF2gY z7fjz~D?IVjp8`@7Hg`)B=Bm{5l(eC8f8^5eJtz7j6I+bnfLLdWDk_vrWtB+C!0{C6 zg%qK9j6cX$_#G)Vv=616^-kGugZ3-ml?zg3K3mG8Q26CqMUbm#U_3iMJwBQyDz?zKacQEn(&HF* zp%KG4pa?yHf0qmzhF9f3oKA&*VIqlhEx;&3xKP@g&Cfiue}6?=8_~S}I@$a2$G>QA zKiSdY-T0%w{q0Zd@B94oW*Ac1#l4_~;qmtNV^Ah*>hxHf4M2{^Q>d7lnYXq=;jW!; zpuQ+P*+m}B7gkXx(&_YtKmPHPU32EdpT8XcdJ!scjrD*ky_IaMg_Q6mo;lj;IRkbe zfnkE{EoxInr`I<@fZBKZDf+>Y6t{i?N;{6xu7Z*9MH-N9Fit4Sw5=CGi*z15?MZW@5bKP4EdOK2!8V$LO%LP zNMy}FXaCUB^83p8!7N|{0z=&=KK_`R#QyP(a3oA%TIgyYSb4r{=Fe}s>BN#0EDg{I z>XPiwqolQl{T;E@-B9*h>ti=ZBhh2*d;fGP+3!hTL}L{K0kuG-r4%Vp9$ny9y*{#> z#g2{f0@eg-q&SBd10xQLgeo3=D*Qi+4~CuKu)=4mI45G9Sttz#Dt(U2ghhP#{_*LR zvS}#ir3K|!b*yENVi}(#xZXZQ1G7(HTIC?5Dks*}v8QSTO@i$G_uv0}1Z0u5FTecq z_sF=nxse~|H$sPkvc7_rG0qy1{72P>up}m`e6-pamBu7hY{QAE1J^Yb3U}VQW(^XG zzL{N?W`*^JEcJW#(*yg7mVF;$&jlN&O}k|3)Oz;b)0xb&hK8!s6Ua|~`SHi>#q8e< z76HTKCJW0pmv*-0vuF zb&(=uT5-)e9~RgVz~SK58@I*1{xgL1M$QH7~ON!67Q-t(Vw;W8Dy-HGKBJZZgpEN*j3`KX;LV_Safd zb=B)u`ZDe%>#6DSn?s?Am6bOJgF*H$WC3G~X+-)2`;ZML42v1eLFz1&v$M16)^qW% z!p_*kZ`^d#MDA~(gcn+Dijd51&-DJn$F+Qm2upH6O-FbplaZ^gMY zoEk)PkLnKHHtq%Mfae)ygOj(C5hxpjv1*YEJ2~S%nr(mI6=jFa7;R@#^>W67r#5wp-Ku>?=Wb$%ux@UCuZ zqC2IFpK4|_8m9ivc};}{)Wa1oWiD$tlA$&gPEyY{vd4j{AfWKd!@vp%?Q=SxvFV$_ zpPB&O3+%~aVLuR9>zUxD4ng0Zut3ibZ2XPZ(Q7f;`m<_d7CgIb;e<54z{6JR3c;d>JB2Nre| z@P>LoQ2JrqPeC!o2fIa=ylW)8F6LGt00S=#9PdgT;r>uV!?Z8H_=5c{na7@RbniHM zl90YV4?RQ#Sjt7w_BIRjkRSry1y4{T2qBFFgFG3_v)Ln!jWR`Ys2=DI<}5d?pv@OT zC9b*MBFWTIF#JNKB+e>RlPRbQ`mSgqj~4DH_fDRC;m}YW`!MBPyEgHg6KmJj{`#$- z*UhP8FHK)?@p%cX4%BYlvn$ouxS|Qjn-QD!CBI|KG`+|v3q87(y*X(LLbz%$NdbZQ zL9@tU6fkzjsY+W?6O#D?pltgft{E+f{d?5C?w&fo_Qv;(@!D->A$@y#xru}~p zzQW(yAAV^enfL6E^5m%+Z>J`%?)-IA(*?*P3$G18Syh{cSpixAQY|H3_IH#fBSNeW zCE;nEz>T%K<>7f`=E+VX@Ea;bAyKe!{zDIenuaDKG4{mh;S&c&z$f$h=NxgHsQ-vPJcZCNRtpvw zz}#638FGH%UiFS5d7Z-tA(GVGlwr+dem7Qk_}g~x!QW9v{S<$aL*6Fv{+6FOv3$9+uI>{|S~Jweg>!90#(qQM zAAImH@>|xIB?|UyGa|`vYiY4U`%!}UTUyvj=@U~2Z)_yDRajEhiV8(dYNN;8kWl%Q ziFAEJl}sTiRJDA4EkrCr0TF72Je|YllJi(hR!DRbQ6Qqu_$K*eN?C|JPBGN(JC~*{ zmTG=Y15Yi81(#Iwgp7p|7zB`)66hr`(TML<--4`GMIZ_csp+BasxRDML&d^%?9XaG z3jZuZ`fq2B_T5b-Zee#pf;J*jFh7MZ$*9Jyt*IjSxQv-PT~MFS{&8+>(}o%-bw?I2 z3Yv!Y_cTIfqeGhwYpY85dehR>%4s_Os%%Sim5 z3I(J@L^}A(1}C8&3QjGMm4AE;7oB;e097<*y^x1k4q1o`APaHzgqykIEojEExd<+a zS2S<1J!sz06++R$Kd2VV={y0LH=Ur?KMK!EogocnoCWHDv%Vz2bUY6DGL+0@*@GQx zCaFKKXFp%Zezo#mDqZ*)>1;6M{4fDt5NI+ZY%vpEnNFXJmJeS-tohwi1$Fdl#xgC+ zh--vXt0hi_z%EkSg_M{lQi~CBT5oE0Xf@6QG)*$i773B?q*j$QnKj14tCAWuA@=78 zX&b829j}y`m@2;U`?%ByeyE|avsEdDnTpHoViFxuiW#TK|Jk(8-a z@}aszGrUK@OY!<^ac}FX<>wjNGf2=VxWSQI;WFY6xJ4l%Gmm^vgZc| z(trA1F5E4aZ%t6UN8(YOax@y+4MH+%E(pOE@QdNxm(}lRCJA#BaB@KeM)J8J0H|s4 zymGpuq`tYZ7~U(_w?K^-aT7oq!C(%mxaq}&FGbQ_T_o7uU3iDyF?@jB5DzTdx--pa zMfKY^E?VK)eaAdF0t@chA0+du!|SR-j(j_N9OySLpqqz(T1)-5;M389;s5LdYN-dQ zs|(9Jj{gpO7|B()euOl0Y&E^SqhN16MY*7NfslC{G8O^AZluW|Pis2+18{tAl!r{W$?VjT8T;v#}6mvJ$}ZNDU1fgum{bhV&i(q_9BGx zDmZ*6$Lnh_fyL}Etnb*gP*EpCx(N4$J4c2Q-3t3xhE%4KDNy3YR1s%MM*)@ai_u)- z=^b@9M}G+#gHeu-(#QxdO;72{9#5HXmL%SPKZvL8e6GxhrN(-gZS)+QCDNF$KWA!j zuVQbD3mqDPRirVxll-a-UoVRL$^InG12ixnK$jFil%Pcr0G9$eqY*M@Mrsra`Ru9s z`ZvG)(ueld5f_?O0;^c9^QQQfNoaD3cpB>KKgnAAhJwJ59~{gP8ZycHTHuM|Y3ETw zswy@%zkf2GjYGp-?Sk6cXKQLw>`mT)IuK9=OpSDvI5c2`q^`B|zMka{k%ci0HLcX} zXo?mx1|>{mSG$1>ou&l>p~+47wve%0e-q(-2$Z73`@7 zeLg8POX98UCnruUUL49~J||)JZ6JL8zP%k8qkd1W&3u=%Lcg+s{c6R)z}|^~W_*sE zqAh`bt5DAvJ1uNnS+m4#baqz5d zEn=oeIVP~URz%Gpg1Q)N!)l^E#VjIs@=Ep(ku;p=jK>^y6HY4^UZd*8@BP1irWl2c zf=m-Y3^vIGb>>}utU_*@sZ>f@bhx0R2l+V&lKb@{W(%$q90b z%^Q$k&PrZp>$=cEUfUnPyqY~ic+E0{v|eI_+2`kW{4DyO0M|l{!SWdfj1 zi!Lp=uzXOTn71!S9Ejfl2bp`}5kPx~8-xY8QeFgl3E_vh4J++pIUYps$N<`U(LML9 zUvGwaD3#dZM}Eh8kCDynMbeC8UJYZBR8Kil4@~j(MAAfPp%ftcN~v27y{}4(kP!nS zT)<^b3DlW>#g zoEQmD^9eQH=~j(-I=RT?nd#OV>Qk30qjMcv`)q8x%#ueMp&9M1+iEjxsCtc}Zlzaf z5jtm*iPwMhJuztnYxcLuBv?u#5~~<<^`gez%TLoHeuRdvOy|Y6?A=}0&uAq9sX?^c0~m0isHh3Zb&Qj*R&Vn0^^yvi0s1$4 zq5Hi!fo>EtRrFktH5EM;93rqCIyx_%aOH$!6K()V@m&)hDC)?u(|*e(7d=9HQJk%pfHMt0j>fmgQAd(>e7;o zP+QP&ehoV<5R1eHl`LW;A_fKpt3m1*iXCWZIMLGb9kk3YY;Imh?JDfgLw}$D`!By- z8<8g6e524+4P#-Tj4H1>StYA=G6s>eigM^<3Wp;0e3dK(ODuBN&<<@FdN?Z|fOlMs z0e;GEOe*Zk1YJ*?({;d1S{>6u`;e9Wqxzr!l-5Jhf%&$?m|aL+GeCNeWN09q)e0sp zPDmsG5rj${VuLBMplWt+oV`hQOFesp^6s>xc2|>@nrXs7n*ll$v~^zSM27K=_5op_ z-N0Azb#-ntGypjjzFERxn*j`{w$5b&ps`KnnIsIg<2$-KmlfDDoXP<8T>H|zQ4Dae zhAEShK$`+BGa0%aRqwB}g&y)Jo>WjPRPaGZ*3Y*h7zxY=v_llhjv|Pb7oV)0N zdB(;Tu|cr#*2*s;&b-~DsS306Hr?~_$E0`5eV=^7UQYp2-oIK8kxlFX`75hqzdL?> z`EobtkfoIC9YVTh#f%Iv3W@buokdUQ!H9nL*=N-DD7zuDscLU1rS>;Qm4MHN2BNqn z(wmZt>@w@QlcY{lrOGA+pu@Cq*uMolUf<@Y_YO_|%;)p2y1s1wu8$dDJH>LfRKNq{ z$v4?r$wn!-zZM`q{t-|!U`uv!OUjD73?Odf`U2*FBfJ{Ij|(RpnQ#XX(mgTZ*$J;q z`1vTM6>bTp-O%1){5g6q(L#=mRq-5i8!&Q~Iqf^{#FmwLxpa;v8GWSDs1KSrK?jnI0ZJbvv$=c_Jeio zr>pLu+6qtmzWkE7I6jtNH!8ska!IUVQr{@6vWnbNTj=j0T@0vXYKSjjY)}Q1Y4+QQ z$_6a0mifRLl_Y{$DS<&Da!S=2nwCOz44ew`l(p5N(GvURv;by~TNz5qm)TUZx)w`y zbX7{DrR~pA0y;OXT6bSmrsu_J?UxC#@+rQquo1Jw&~5llO>?X@3EW?|kgW-J7r9+C zQ<_u{`>x(3A_nIAivi@+cb8*VWJHJWFS5S8OZVg z;?Lp7a2iMX_mEGz7)_vMNte(f>zvo%Qn}OqNj+IObxqy<>;}4{zc9I{lKNXgLp|JZ z;G+HOpxz+zE!)0l+q=%dwCRJcpnGWcOmcMiYT7mY;g&qy!SvH_(ub+9xqCJP@_O8T zb9hNqQ8eUM%dkkaLfFb)L`6=g6Mcn6y+P`)1>HwoL=l|S289A)ro%1ybq>}QXaX6j z2hiStc2U8AQyZjP<(7>cdoj7?_8HyuVbtO>#v!@K5o>~l)@{cDMNK& z0yAOC>Bs0Jw23?6CQ!E3(16K>DR^c<4RRS=JWqN(_(dG_yKEg(V;MM!lU&a(Zl)Rv zFA^rFG#GMq!1x;Olt_g?Rw*O4-k}hfEq5-f1MZY;UtwlX5X#?LYDf0g=0ofYHYb3z zf&Bmn>R?mK+dQ`;Qw#m7LRGZZc<=D-v}X9z&0VmdgWySCO*^<7#;9vT3+Kb(1jR8M zx%pf6MRI`M@d4d2sW81SO#Q1MBHw=cX*+wA8XCTm_6&cpD>s2Z!3Q?y06mf09wYRh z){NgEt{aZCArP^1;xf|TMX#VOeTALfZt9&vCHbT;cK)@40;5?x@XEtQo<^;H){* z$#p(wx(cXk#S*(O1owzfd=2-+YDm^2A2Jto_z-N%2~Vk8g&r%)ZzFD-@VjVz-P*Z4 zfE!O+5>ty~iIp?0NnN&kBFxI@>?(BUxRs$~9iJ_K`sUr0C@22)SKRxaFT8ANFyiQ$ zG?Bat%T+P_?uHhSmH}wbxrWO|VmGM`P87Fb7|D!Te6*G2MdQXn{xUgt=p+>elpZx@9#DK){OtQh7~m>b+Md8{?PXH64a^YP)oq77G<@A@SjBX!r2% zH|3}!{LK&To#_x63Tgh2A)*vizch5y{QcYL(o^2ow~}gQhPf z1xbk`h7xOM4?o%m(r1*!qP4;^;y9lhq^;ut{}SDj|yboeH!)G~4T{)=3SDak(ps5Iq>8l9ZG1_qq$rsO zm=iRWUO2ovPd`kr1!PO{t{qTftslK_E@cGnE$2m-bRBnQ(O5#?7aVE)jNVCo(_OeJ zM_T&TA$6nD!~T~#T-Z1iZ`i$Mv8Ud(V9U-ABCe%d(okTj-@N$EYVYzLhoBij(tcpa zBI^0!Z>gVwiM~n^m}FHth6>Ua%H)eIUA3e#T)A}3it}u#HFF#io5(b6xysqRbNwub z%ptZ+S+x~zdI(hY(Gi)$HnwWOHH|Dhiq}Yb0JKjDZO47a`J2Vh0Lurt0veM7OgXZI z7B^5(Lv%||VK85Td+-i9$j+>8cCE@HzfX4YhKAstJYS^|bZvb&6F4vfMj8ob?!LJV zn#`4IXhO4T6$vX539Z!0K6okY+aMgaYv949uw%tx zIZd1+Q-ZsXk*#v8UdeaBy~Jff4$cu5XGJ@$2~TX|nlWj-47}{}$vETgN5N@;nJz+iN~eX}BC@qr zs^bH9jzA`Z`G#=sDvy%^Do@56Q0&b5H@DJC71OvXkP>DV^_ZS(cs5|_g+lhl|!1bYWW+A0{xFHdt7Gd z&wv>^R6O6@9aFoSk7Q4_kiW4>YAZ;GZ}_+8cAjw^#Ps0F?uO&G0&LZ8&=$%G)(OrMb_VvY1^aJGx?qHK4ip4fqH@!0`9{a8 z6zZ5w4O1^(-EWq8B-;Ff9bGeI-Nzb*8WrC=d4{ikPsrBW?~1x6 zP9z68C##meT2(pZP`PFll&JJZx3fsZ=j4hw+(M7@USQEjTmb-Km%ZKcxQVx@&cc&> z#xC(dF867o`Ob%iAR^10w`1jNN!!$OqR?6tojY1=)RN7_l~2@F zY~0(54DFr!*06i%$=!u)K8zK*4{?yVpa%L~F+o}Tt zc_Z`Jfn02FT|d($1U!*r^78G&2k6@2*Ee@k%H(GuQ#NagnwvqXge*->4ThL8 z(}qWF2B?WEK~0=>)bI!tTfoLU_GbR6oW3X9No|SO$e; z2Cg&&M1y18=pT_s*&fK@Tp~oG+NWE1&Z?L}E~CUY8Bgmr2lI{ozwlgt1t(>2QPL!6 zok$7Ae3=Q1_?2{Y_|0X_)C;err+=9~)w^d7kiv)+yhMYsaqThoo?1gp=8}L|3Sq>< z@8Tk}Rm9Vx|1lM8!WtDy25dM-#2WKTum)QCn4D9vigPff`#qPRzO}BPV5RExjxT;nN35xR^N)l>- zE8!p1^PEGAp=1)Ljbes}Tf;M@6%uo!UgNt|W8wLuBZWzKD@@K!24Mz{IV_NW(&F7S z1K4K}^JjRZXPXT;@vQF-6A$%ABDKTplbq*pDITB*6NGxZ* zZWF?}WK0s6lwkUbJ?+dwCr2ya%3fHM%m_v?U$+T@lYs?R+?;nk*8%VYiyb^lAaa1T z0eFigjV`w53 zWwE6l9V_}wP&wB%O-tRNQ2<|;1NpitT%f}{Gt-elg zfWhb}t+eUrynOg;eZ#+_kQKFDD z&Ws~spSdUk6_)VA=|ffCHG49QUfi&2l_?gQ+y#}I+>{$rk#$v3fK|}8;Ts^Xd1q@Y z^>BSa9qP{LaU`ZDo^7@Jm#khgpwnSyMdp!FgfCUJOqnyoWV5#c@4Hnbk2Ur$DMm54=9Irn0^Ph z)H7CrPNnjNQ_~PZNv>j7Rsv{xN0yvK(z8SmVE^WbKt2bi2WuVLwi`P54SY^>Muy)4 z&3SR^(Rfpgm}=R}U^e_UFuAfc*;+~gQ%Ee}@yo!w3Lou#rABV(o@^M$7wRsV<( z;_-ww{xfydnCWW&Cf~6VC-yg9L;~zl97%g|tI(hmw}}mU_K`7a=`x5awv&~NqzXXb zSpX$am)E|SST%os>_y5DnlsJio<94f5jB*K$9eq9K{wws#R5p?@(z?uq;7(r!!u_A z^*xfXLvx9VcJ%x?guzJq4yHZA+KarY7kV3!!9hlbG_;H<#52^-#dl(P^s!(Sy@D`n(>PaE0SR zi$oR0wmS~#goXk*LeNH!#15rNKRD41Lp;Iwfo@!@I+*Qp31Mtxgq9!e;%Kl~cKOJ% zufDQo^&U}mIxc}>wv-suo7(SY{IQsyABpMym869tg+o$hAVR(|C{Qwdh8k>8dx2ia z%U)QcaxpQ+@%EUt%25joH&#)K!q=ZQdvDo~eL=ggSrzh6>ePqz?UTrqnwl3hQi%tL ziifM!GLQ2`B~xD~1soIw^pp@I3Ye-SS*CKgnv~`)z%s@(dR_botR;6I$hWcEYfcI8 z{X++%(=ZKhTmnGF3=E9RW`97GP$?rdIU4RFM5VM8c!Y~ZcJzs1J;yBFSR)4GVS(_r z7a7@Gky$c~M*Djpx60>lsD(U1SQ%pf5?9*=Nyf&0KV})o>g4Om2Wr_n5|sFNR|D$* zT8*tvr!r)DN=;0w(Zu4$2U(*@$j~yJ zrOODZtAN~Bz$W5^ znzG|#0niKjjy1)!TUkCK#D`nON8wJGr-Tw3m$X5#`_xxV?jOgBG6mCY#lVL{RaAW%Sqx~ay{)aGBjh4c z*lc2wEKjkZ;1w)96DOOQ;>pT_c12^rAd+H^=QtIs7c6 zOv_CHLt5Tn17yLm#V84ysI;SJHero5Ek!KRSZzdB0Z#rAq)5_{xlp1lz7}939!{?HW*v(P?AWuovA(|I(mSKk=`}S!0uEiE5!6^yYIst!eOD1W?xBrt$7G6zYONRuKDH5wv z63dt~u~l&;4A)!5qn2GfHEMv`>Sc7z@GqBU$>$D3Dz5Qr6ZPz`lD~cSF!w=i|HPgG zqw)z%UZbQUfv3i7uIx3yJ=C-IQ`YYu3+WnP#{b`2D{)Mes^W|sj8~Ukx1}Y|HE2ik`PHj$4MHf`6720>Ewx8mI?czY94-RV*nWTqgo4l_t(zn^;s2cqfKZ`eBqKjALdRYnj3L z{y=Y$VC?&6--RO`9OuaClNhMc~y% z59&2AZ&zYKZa2Q*LnKfP(R?1sTXpsDI2p2!UCASV9KN0o4gYF=V`(ieD6K_VnsAqj zO^0048_v)F&1K{Qt#uO>^QWYO?Vkkk3q!VGn9JNHp_`~_gTRH@W8PKCZgDN{$`2{E}- ztgn}!5HsFh4#}MXuWJC1+(pmpj3+22xFI+!ZRyjkg9vH@CaM9K9FpnD?M zQ|Qfed7Zat^D{iEZ7`y{(;b>MWbv4XX1xO>)lz#Bh(XC0)vtAP9~C#T|FoH^lqRXu zy}q%r;&Q9Xm9CP(Y(uE1fe`%1fmh$y5|3(SziDDqvvN*(1U4u=b zpsbsqcwL(^QP9>TG0Me}gtpQ%bMzePe)Ozcz8jRES#m_MR_= zb`b@m%HthgZEA&|K;u(|N(g{1o`8Rs&?cgd8d=-SDt+!y92=i1RC*YPD3l19YJscQ zEC#UGM{;Ol5Cc@RteS zP8c39z+9u$8TOS+AfVUqe+$|;7YT&ve~}iKSnJ< z8W2+*0bB5~iZ|NYe22+DKoNptIX^?3v3YEPl8WsedbugLU1CgW6uNqo$lYNAig|Ox zEh4*^)-k@A*%Zv1kmxv|6hLnfPrz&vIYg9FE~;tuSZn8d2oNOulqMM6BZsk^0!xEl z3c2$ku_~;Tt0INJ>(l{<7^O^0)SSU0(mpG83q6tj92Dwf-gY}V(H3mxGV0;T7g6^;@bu0j83X=218zZ z`U4p1*HJR*oM}TZ4MXfrG#NhKOrJNrha8(UiDJ6g%9yisSt)q8=}FQ8y?RvBd3fe7=pR5pVqHg=-@$ zX?d4uZV;;F{2SQMf8TwO-aLE}Invk1{+7C`u#%R-8;4#0+z#^L`sI5WsUXwHDc3}=8U}ti z^umJFoWiX{)YJ3Je$UEdi!df{Upu|!!JZ!KWd6HO_K%&^^1|cve9eZBp3jL*CQ)?H zksH_tSs`564Of1a&Tv;Yaclz>pi4_vg`GMh3c&Rkw||d9>CxoJ&G~n?O0VxuQb2g! zA(e;L3c>S&>#k7+-T9sqJ&y$sfN|#S8<|)GpNR$dCR7Z}43tKFTikPv@ z*M-#|-|1(8$FH~?C^(4y>^eiFOTxqXvZc~Gc&SA)Q8^D&&#uwLvkSPXYqNBm7}?J@ zo#VLzSNBMD8vmYT-hwo)F98rnP^R%&|g!W{XLDtB;W7^*w`#s}E{&^B7Yo4t1^ zW*2K!+U8cFoSrhpnuLj@nb{XY_04_y$&tmEK#xU{OQ*fK0cfzeSEDET96okV7^cglK22EDjXV$_rRJ~$KtrCzBDI;;!ph(a3Z zNh?&Kqt$X|_&bteU)bK;yFavIb4E6JdmClXkwl(do+paP!r310+yyttl>BpcbSRZj ztfFXTNC92lG$U?0cNR(INo8S$R_>1&+T0x$kgodEzXE#Zt`WJ$6k?Glr1WrQ+17zX z*VEgEFEG<>!%ufn_Z22vs6Q0!q~!|q zsznv4x+qXlN`c1EB4I2IDPc5|jR@;nta9>pAG-~uAW}HsP)2IaZGk=q40i2eciA<@ zu1-cKrUqvEbct%}Rknd_hg)`?ei{13Q6c(DXfe2D?y!}VbMYS0fgQQWB4iQuz_@ew zKDnA*?(3DfoZ`xQyhpnX)U=XsPA7%YY_>{R*KF~TCwkZ`p=kwr2(Resy1r`bfmX@v zC%VaFIdW^E&1RQaa|ki(oe?l*>#3)po&M?_IZ|C%tB`p^`kW(+7*hA?m*^M99mX^k zwT8~TBiKR05z`m#%nv*Y@c_Lh2rvK@Yq7s{TP}BTaM`(O)ua}eifp_MfXWD-I794abmjBVa-EA>?& zM{J)o|B37?EC8Ei$kvOMRL3Njp&>~HOd474#5MKm;POqIVM9FNb^e5|E6GriYvt@G zw zl82&(7H`f%6&lQ8w@mJrii|cVd#Hz8GW;CehWGT-kY_I{;UXgvm`Y4>;g+M}21({> z-Nj5ayvbR0c$Yem%e~Os%WmpcrqV)_SzMP;uv>8G%kG|@ODk4yZNtCGKlJH#kBBRF-u1(Th#wYNPGS)JG6Jb}qtyT>5UNjE*fo5x zQMlm9XK^T$zX!bI2jOfss0VIsCCBsHx;$VVjG}NyEx9631ahTLu5jwLjV>Y;x$9*z zl|Z5aTm&RcuVK4(rB%t?lxnF@6`!6@-PItk?wFR8`c?I_JF2Oe(3lbg_?i&=SK(C8Wo^llod)Etd&^Scf}uWRdxETy*D1+Q7JJ9 zLR&7ozQ;80`A3e$fey3giU)oQl{q&MT)#}WjO-_NG1o$+s+8&+r#|7)OXxfRfpGS7 z3|J4|z{P;|OD5F@&SKy{YH?lQ)L$4_vaw##cVjbj)!YZIZk{UG-M|=4qW(VXddHfZmjgDES$WHP4>b!-$aXC# z31h1_57VwYJ9)zJs#Vp(=(;6t_OI>jwEC(KuZ_suV*h2Yok!HhNRXbq%yA5kS5c(CF>xXf5lTFy}F z)MuTY-?XbTO#*{a+?ZB9WSg@tEwu|9HlE{_|57ec)Pqf!KEA1%Kn>M z$ZrepQlabH4mvq?bzi7+nh&heY}x za#Wtlm8Au7?RZEc4X#H?adQ4aTz?nVU zSKig9u=pYdrJR=f)c@(4iN3wqqEQLl-|*=v%Tg9n@wcuGLD_$s{8cQ7w6^Ivk+h>wKrHWEg%z7w5KoXM=4A9b9wp^i~Vc$sa>JVoDli%MQvdh$pI7<8U8bRKWcs(~FCzunMq7XYUirTj{>D z6jZmVlCuQy(a7TfW#|qFMJrZq%g86+-A+#7k{kPs%@ZRSkVktn#5vKo@8{Rh3bo+! z=eGRAwdK*BLamzFcWS$jIwwy;g#jI4uiY=*4*Fr5AWtqjtL7`cksf zqYsDQJjVMYCvi@lkyNtp*vSp-B61%1S5l=;q4HbIQzJwsiA_-}G$N@+A?3p;G*erD zNNBQ%BfVLm4{BncJ+G_l%F1=Sv)XA7=00mDfp%g6*GkJj`SrC^)%ucarG(})u)zb@ z{PnKKwS7m>c5$Zf?hr{<#xQ7V=;fCxxQ-SX9=KzAUrS z0VD>pJP_w_=>>>rOPzF8R07qEfn#(yQ@7KZuC8DA2*gUgG^~`F86k{e<|+J;NM{Tx zMTJ)6_lq=Pl~f`8ipmw9a6%l%2HE2{nG!_#!r-z^Y1PEzEtCWN^Jj+trnmB8BqS}C zNUL2EHDhm*E7c5-FA@n2(F$sR=M45Ao#gNthDpdJwVt8-;Azn;6#-6JY;|fWCzkO6 z;KljNQkmPN z@2wy*ab=G}t`>mf%pd+Iy2^X=`70yq_cY08KGH@0(4$H$oho)J2Iki&=tiY?idAQy zwkLm6E+n>PR!^ng=|KZp#!rSk$ajh0n;tDiBmiG z?o4s+)&1aJ6@wH!jxkPgPJ$s8KX@d^3H12K=h`+n?+Qz+faB-RDLlQ0t159{sYRhi zXA3hC%7I(k$S&l`A;X?IDrTAZVPeSHIL{o|^?EuP8HlG-8aI+Q8tGshyoN1uVWFr-u{ zopR45I^M>I&yNaqIzjqP%G2K7v3sc-94}G&)G~!)#i>R>r!%QLV0B!le-0_D;_9Ga zggEi(m$sZFP9g&e)en}KnvQl)@>rCSopuNwrXLD;*v$7k12y%cKBhq=8x%Ivd5)7pM|5 zI#X(~!N|xf>N<$Gy}f#<7@T8 z+D4n0Z0uGUbUpR7Oc;WMr1*5k91BXC#eo`XC{Jn%8w@gkCFt`O6ZOkZ_7{2bQ}&+h z;mZ!Bgjx+RzIE^JG_+rR>+*?2d_|>#h^5pXtF^5aTKd~MxCeX?HXIqol#n(>%Y?v+ z-lDHG#-lFw0AZBDFP?IAwCTiXSaFsz_=KEb=UKZowXHz`Bx^%0QL;-WOG&K`WsA&W z5VHU3)->)~!B=U83pdp%^Xks^1K4Oa<=ie^;W-=`0`BES<#R(_m;X*S{fRq5$EiLoq-D8N z!m0O%=$~^kj;L(RmLQLPF*#7OQHYO#;|xykS&x+h$v=mh3whzruF%%YC-Gro+2&^( zYoIc2sx?iTRhWmw-kgf0V+_5LH!n#FnDos!w599+Zm~d*R{7wRk zEP3kNf|N|`?fp%UZS4@wT%WW=P-AaNt7}#D&E$)2>)HWuWT6MBfNy=+Gh<4$#yP(wJoEVd~XM7 z#=f~L3x(<)MW`#o15T4UrUSi-YIsoV>&EI)#+aXx6LSlUzBT31v6XTNqA-sNRQ9{!(}a?27%789vRbUsiYTdH$BEU5uGj^*?MwPCU*gIciw^J{4yvJT)QYfQU(7&2) zF=?tQ4rMGUML?o6E5u}O2m1$+$t2{PtYjD428B^2JZt0WH=uThDDCdicmJ>fu5ki9t5= z-R6hbRTc;I3CO)LD~97xa8c^12j^Htdc8nDu)d?W%9gDM%H75mLe z*#&hgv9#XG9)}a^I(-l1Cz_!?C@PV^S8}LKt}Bu&=Zv)kXQ~lju}P95d&$>1cB&N> z${+K()&pyih-cZ(thVqKO81Uj?#hbQTQjO5&?8L^zW$zOL)Jcf8Fe%8-t#`lQBwB4 z!Q)5w*9!GoLG|W?mvyh;^qo!_j+r}r-PRSAj$Bu}HRfNinA7$T17BKEt*Ait)pF(? z%vlSpG~RTPGqj3Ap~L(=ub4iF*va-#VO)B#WV1~Pd zt|AY?FrOWFEUmYSfQg(ZcW6Yua6~m^&-M9%eG|~9;Jfec@88EM`Jp@8sqgc@&0lJ& z-M&8L2yNQ=P1YJ!1*Hm&TqNL$tab?nHoKI9eWM6OWDIkPArGs>xvy1Z9>$**tO z6oPHK2dP!6*N5Ilk%q@93< z9x9osVto+udeHpGWspXdXo@>C+-`A>cna#lCAaHLAta9>Jd->jl_eD(MJr50AMWb< zG%s~F#gP%PI&Bq2$uV{XIV6`w-3K3825G?jfptSTMfTm}0*#Wn{kL`OAgN)0xf5L6 z;1Ue7Z)&C<>FlIsiM4)(cUkl%__~?>Z+ia)yKB+9S8v$1IiYB6rBxTcd_hp|l^6#$ zTru5z-3L*D!5~ildh6?SU9+2Y#9|BKuer3<0P>p#Q0vhyBgbYiW?e7 z-nzA&oxA-DR;MJr$FgK0`7g^4Q9Xr63;FyXTU8YmYDqxm$g(|YW2{ovD66O`=A~w6 zr8bYM!&0jw&v#zaNo^WlPS4W%hx%+n4O6+vY<2Z_**x~10nWR40Jx5F@EQ8g#a2Ww zZd;Ka0j)Rw!FxP2G9-s6NuJ%;5h5=D!WU-MJf6=NUO-QATX*;V;NtaZW#0`g)N_Sj zlTTP9nc9A=liD@BoVv5LWRRd}E9ZvZ0k^eSRK(jba{cw(DMu%@nZ^2s;_r{_vX2~yGCE^YiHa z?xihlftDggi+gb?w&4sP&e+(-HYTtQ#+b5=@rS<4|D1c@OHvu#TS5u+-k%)#&Ud~u z5n>9;D})EQ1qIXLPrsyk?Jlr=_ow0V^_L!dx8FRlA`P*MIJGpJAt!p7Kjb}R2@JSg zmLvAkB^Gt4!oeK7bo93s2h99?Z7jv>)UqEE7WZ&1|W-b1+ZM}xg+wpshY*n3&t3Kx5D zxeG@*J?lQ;nXDWOj4oTD?e)i7`ufhRSq%va*k1Q4zMdthak!?P=x0einGp*pZ z{yIa(m9&tC?5BC^Se}UCid=JYH9Q6uCtny3Wp!mbTq9@6@H)VXbJrF9fBCZV;P+3t z+Eb|wrOWKt+WPO_-jDK9n@!#!GaH!sQKdm$m7r8c5U9~Ie_5Bwzy)6)k@jBGP3GsR zDY>?j4^p2iYv;{yD&4c^E0uxS)7>ifjM)NqZb2FRq^bc!7$OIP-$1xA!6PyCU;w-iwA5y+Ww8U4w;GsF46X zks}g@=Y&~a8<>lCX5krJAb#}}td^2(;pqm-AP&|->}kTpL-supE3yI8BqjhWEO7er zq2(tBiXu~U4JNwq#|tja>V2Yy_9iK~APQhU5l`P(FYq=s`go0Py0zp}#!PNz7DJ~i zAU9w(&-E@^1Frqb82J_()o4BQQtar}7j^JqSV;SU3(xP=GRrM0Ln?`|Zr^mbwh@$E znBV6v-&M9wES(}{`2@30F9_B>J;^{|&9VU-14mBZcldiemKBY(iNq{`dM&Nk=K#?9 z1=W~FkARixqMAzY+1UInoe!=%FOPZj>PO=d-$((*X5@yq*Eow4r?wuluB3%}CtI4E zg}8OrO$Qnw$`{1n=&NxL^*b6JQ%6$Obm`i%QM-wb!FV`iBXitzXy(P8VFOzTBrwMZ z4J~YoWqlAFk}&YmPxrg@jGR)Z%Y{*yA&``4nL21K7|veZ*=hOUgX^znU>YOyi!E5W zT)w4KIrY{!tv>mGPA{;*#AdUIfS!H!t?kgDxF zH+QIiPQK1FFwIfhUOi{P7&Y|ItgJ8It&AgPB+(pYV{RY1<*NN*5%5eyThG5V{}hZ? zkud)`SX;AXk+;>ic#H+-9;P1vSC7M?b*xNa2I}_xFwht5a~OW9pmqasC^SnO;NcOR zn}DFoUGvC9#p`*B-17JqK*)r7Gr0(Stc!A&{!f|U!BoklKrV%O%cZ}OuaY29CJ~GD zN@SX0p}W2$j7*ZN#;fBQ{SRfQ|M$=By6nXePI zi)Oh!vlm{MOlk$a3tK=37x-aN#iEEvP(1?{;^b=j7&E)~$i8(Ufm+F{UAlQs8mKHl z9#d))o|GqPh0wtZcHq8p(1T$_GgyLN7;C&1Sno$C-IL1ulvm@78aX1hG(?F|PT*$0 zR#hOV0Gmoqj_gsiAAU+s(`Wrh7)L@-FJ``4k{;zFmaDdtkpFSp6f8oIMeW&8msOjLm+xWMGFiL>g) zuvMW|5YJP55!F?!(dsE^uu-~o(z>=bebPN`PJ>J%<2nCOCFV^V0}4C1p1RVgTGQi9 zI^$-lC6ke>cz68fNUuT-3Ux#Q>Y#)#mgWwBc+;N_GynI`w|Ye;e)|;@nup~ZoI!7k$0>i&>lBv z@zv3npIpC+`avl{!obGdK`%LZ(=6(d(jaN<@86vldNb=rstlsu#a)hn<-}@Xu(4XG zY>-kkC8^Vk>RW4szMw*#Ci2u1%G1{y6yhY_reysN4ba{cE>=dv z4X@$;?x*AFA-)F3U9V$}9NX>1MhIYcCqkjqJq`7GKL2Ozt-FreRk~nXu}HS|v|oH> zmXZrn7oAfIol#$ZlL?W}vdsQ0EjN~ebfI12wu)govc%^4Y1wmB%IRW=C7yuf4)a&e z{$h_PH?I%aBbdXoaJ>%FRz#)!0Tyfk+!btsnx#je)u_yxt6T(-;-ILsDS`P!R#|oLy^em zJV?~9GQUZDm85DNx|WdIt8NN2zjfTHgRtiwJj@>HL}Y8lPbDp4RC zmMEmmfkeXduYW!ID6Fa8k7`~$f+QcBTq3GCcgxR zLS1Qv8z^oSh5}Nn-(V|k0*H9D5F6smld`JMDe)id8`eZQID%$_9{j$Nt%Fx6OYXKJ z_Y+fxI-o(yX8=tig)M#L`aQsXF}WJv9QoLDcm4S6BZf zq^_$|wP_j}`ewiO<_q`qK;KB$%}>1eEbG;tfPB7x92Io}>XKrWCe9k~Ok6HOi@mDc zV-HNqhN|%?&D=7CRR++0pwXtVo*L^+iNk$_^kw-(jViY=p1$+r83H02lX+`YxDu*_QC8%fLg8@r%572k@EvJ# zJp^<rQ@M$PLP=57H)8^E6>z6;B0(mNa^{O4E^IHs&t~O(rp}o6{ zOi879&YGFi^A;g+T=c2FKF57Y*6=(IUJz;0s3?JErvbxGG(4D9vr#haU^9fti2s%o z?n-0P8Rqv0)lz!r>t3Z%pKSp;zB%L-NCf|;0tIF)^Ik^o66S@r((7k9l$X+S<{XDh zB%~DqP%;4pocmthzn|pPwv54G%)fM+QxQVSb)t+f>A+gnv0-O7I&XY%IEw6pbFKt& z>q;sDGl>6ZjR;&Mr6e#*g~@Al`u-@93+wVyshIhsV9L*pzyMQz(@0M`W~y@vQhY~E z=^LVBzJT2IT>p}F5l!z6F|s%=$WgO^M|1KWuU903Ih}RzHZcEMN_VRJZoQ%ds=55u z!&fl38ND+`+!pt=nLkF-^DLzTpx>OgV5gjMx@2M9`eQ&b=Z4IqmGyx;=&mSzoPO6Z zA*k#W$ZohT8cvoI3ZM`LxbEW5{W6j!cJZ7>DxpU0`1(H=v-F zHGof*NQ}E;YzR|+EyA5oWGJ&j1M^Xdnr)-+p_iY$o?Hx2$Cxkk(2K9mA!7dAm!7-3 zG#``uBe@*;GM_($4I-*EnUW^IPrp{0LJue8I;9wN#$~ivsbkh=?q~i2(8L!HahdP0 z0GUIIQzg6#usy)+VS}P0YX(?gx=hr@r#oej%KQv+0p%+FHj|VYw2G=il}xQCv8fWX z-JyufY-T-E#H|1g4j9P19n2zIXCApHP06zgJHNoUP*>yz6s=n}FAL~^QnIyI7CUle zPqU(B-^GWST#njV=Hr!d9h$H4&vfdXv*9?IVUb@dBkY)_nb_1FSXz}Ou4p~+fJYBl z1%wxNIs!o$3q<4iM;@!Sil>RSerz3U8TE3ho6^>q+MAROipB`Dk6J7&-EyG6zox*C z3@@k$m`CbX@J+Rz#P-EK%*%OF7)^QRjkWSrAXzawO_PPfKee$z>UJw2zV}_kxqF`$spzTX~_L^Y%C-fq-ctBkpi*^kplU+X9OV8jU=Nts6h z97$J0w#BXfb8#*$mI@SZ72o?AMGcK|`3^^sEZgfpF`s2FWp03ZX4~IBHj*w#wYx}N`by6UmVnq8zkKLe z$IAtXlZ^se!O0xlr3hHN$TtjMOJ8_$`wHr*Qtq$0++ctIJ(ydZ&bZs5MH2%x~X+|Arf2KpJ4&t<2lovsvU}btwR?r8dPs&7S-78Itc_i4MQT*S zleJKrN;LIMDYGj{oN=OwlZRxrbDeTyXBX=+9tHYA+&8xZGQ{+R&3mSau#~-b1{wY%rb1?q19%>GN$S~Nv z`yWsg3qy5zqLPm1)(wU;#tyR`w>(%Z#*wrv!~>6nu@uBuSSVvzNf4ugm9vD2WtCDfv!V6!K1u5Q4zdsWlsd^{Qh8VxvBZsyO6G4_QDEef^)M7^#esr5 zCvc=T&X$__^S5U_lFfO2szc(Hd&6Glh~GDuHw5&#sj37K_uR)kNM2U9TBGJRJ((Me z(dycncB8r9D;>FDtY`!QR&CGhEuA%^3kQu7pTah8-G-)nM7_79C3;?P;iA@7sVAV0 zs%!kPBwm<)_5DeC1=8f(L1}XC6jo{SG`|7MQ8CODJX6-Cvqsnl{}0Oq%Y*4Kq!oY$ z`Cyqqhqml-Ao5{8UsEXTL3~|Vyf#Mak)TLwJNz^HO;Kat^r1rIMfWYL0y)&V#}8~8 zh(7q?ZU}XR+uy$f#1_S3T2U<*`|5*|nW|88qgrFLX-F+;fj?sD&ZPbRg4Vwz364DP3qQ>;^EO63v;zE~#bcN&$7fRry5@X0G0=YUmj9b}Kw+w|k7$h>hH6ZL?%v&RWf zG<%%jD<{;bf)idIY{(fuHX8~5Pf67uLE$Br|ERr%yT3sAJP+80|Re_ zh8_ahas1KSlkgB$)B43S;Po3MtY>lt$p?7yEjcOSXEu>XawW0JG^B(zN)28mf zlD~cxzxLMa;sULT7rp3;i=yD0T+qn$BHhJ4v=UfZ+@R{YF!$+9y9lOz{2?(!FH>jA zAx1@-zI>@G$G#$A$42mwb=9(!H>?ORT_4f*-`GQ5&8UHK3bStn0}C3J$1@Tw&j=#6 zAT%KJDymrRcekDA2`HII+6}cHaa824AqyM4y$NlzHc?>m!Hu29*0Bakn%0KuK|Zy< znwpy-meRAeSei^#kGQCpn4$h7JC+BLvEiA$dRLm9IQcibvMD1{Rkf!H=Aqh1&4`C;_4tN*Z8rPV5m+wlb4B$G2#0o1$<oZ86OVG z*M&7+o3KM*^)Pp54e`N7RQjvUMMBvuQDkJn{)EJD;+S&A*4*Yp;Y)m z-n;dKv-(b1H`DeXA(xUDVfVF7Cm))kI-TfMlQSaM3$85=qs5|2ktz6V@_rh zC9b&k80OqA$hqG>1wufDjovA9&i?8c-a|B6IVzQK^t7{5AtI4+5-UtZWIg~Q$c5Fb zw?`GjP-BuJ=tpG5;z(Yqt1{YvNh%i*X+Tj0dYuBB$HwyqRm>}Ko!=@*^Q=Dd#(*jq z)Wp<2H*;@+Hnc5=ej~N8e_o@S8p%R%umyqx7I!d_9XTLyE>tiF^fG-iDOOb#hg~Y@ zkod$9oHyHJ^2}b4Gt`gH_UOIyN13}9UcY0O9q|=&?}|gPBrV^)2^shV-Au#!ZH$iC z(}4Gz4e`)T!Ux5$&_A+OSomjX@A}EP(Eau>xr$liBY$Kpe}gRNkwT$#ZR??H`{=d5 z7}nColi$x%--Ee&z@{PrP=$Iw1wGpH$sJ78A<&zoDUDYSfb(~$rPw-yS}#)5ze zP>cnd`=<_OqR5>v z{z_ZtVP4VI&Y9*Es8#&BohGMec+e4W4o?R)FD&tJJXDS=f@287kaNrg2hL7?#ZVU5 zwrr@%tx5T2QrPsyU1OF~%{p)m4tECaMo=%r{GIz>04{PxN;)!*uv8+X17s027W6&z z5OWP;q~8{ci*r2B@BrT;&E~AH+h#3q!se0YWwY&_UCz->QG}4XHY_-r=BtEhkqTOJ ziBPQ+8`bhQkP8<=r@2JNgJEkY-@)K?J0!=^`)2`Um84zC;TZGh%+E@HqGv9=VS7;S z6uXumW)?Ot95g|Hm&i76O~j;+ZJBEo0ZZLDw2X>}w+3srj_L*TW~szDO_Wl={0&0$ z#J$r(Tz0CBxzet<8OmjDNC%!cEnuw!8uKhrPv3bKdjPA7haMA!NfcB(WoH_Qa+7^| z!BL&zR2|T9DkB>YL|Tc9`7MOL=LY~2R{~r|9{u#wej;W5eF?=cedErEOpO5^oUNt? z*(F)6SJV(`lxlS%*2U=Sg92|OkTpZCdPmNf9H<2;2Vr~#$)#l)b$26_QM_TXh(Avu zX_P@ED0azIZi|STmIX4-PQ9|e1$c0McIu`W^IhU6>GVg1-?EC{0K~u zUj#`PoZF!R1PK97R7{3`LO7@_cZM~d>?#N*uOoX{D`l%z5y`etqETg=)pyDlFzN}5$T z0U5M^j8O^o?$bMVbaWbncCpL{Ag+HJ({EO2J39qZ5uNUHYMSaO&nah#hJb3CRb!jU z_zSF$LG70bnA!^98K+`-rh7%JRel+kiH%S-yp#bxXmndin0aeUv3LmBj$QJpcP6P& zv3R1}+9XK<&2FIA+-Yi8cm(!muD=YWp1M>k$NO^LHgnhJTQ`exC$8p(U`YYvp~jK;{nXoRP4hU#tjNoS@_7r z#aaWa)KtbZR4rI*2qDbAqqp}UXIgJhlEdU4W)@k<+(zM0if4>756nQ~?dFks%bh*fEWCA#6Pk4;{)3OM z=?r`G#*jMH!W>9iBcMW~2P}gp(i;T=r<3~Zt*fz~f_e9st3Cqd1ODMc6Go1EY$ds>fXF-BL4&0v@^Ret38^1UQw<#o|=yU8CK{>OE6U^~$DJ#twkh>Xd8N;+859J8qmeB*+jd zbqDi2b(MKw=NyO7U=W(8uA82Z7s!;APrzuJ#u#8$U2*fAn}3w6RfSYdFl6;;o?>!T z+?d$Ao&&EIBX||~?tUoTatN;$_Po;1#iAi-=*DYGz#>OM{QpIdC}4-OYNikmtVgFpd|WSQYK z9gi!F$|{*(RwY%anQj=Uu$sA?&N0`=&p)`MMW9kvh1T!b+5QCL)}v+_+xrXV91GDO z0wm9+0$e@4OkG2li0^~ef(5GJ(g`XLU12e8oFY zV$yjw|C|{vk9+3)CjbZ(RLSH*e{(pbwB-6>c(Payd9m3DEz?4&kk5aJt%(@e8lSgd zrJl)_W@Jew_bM|2n_-1E^7qRr29C2h1#06qqRed_HzE_2t?`(nvPo}}rOb^IvX?pF zg1DG@ulS97`SwmshB~*8dF9!b2e;sKpx!+TOTQ`G_Co>WK@HrTq^4w;HEA-&EGILV zyXigMyT+UtJoq+UkZw_LdpFOAqHf*RL-(Fh<3UE$aflBpxM}@Hx7bpQr zeHQ)}3zw9wIlGf(*F`VL$~D@a2IzKoMMPo&Q$zm2OwU~1-tK?njiX1K2PHK23<={4hB1&GK7KuvLQ)VhsGRj1CO}dRP2J%F!=xQuOP`P36?3V8&NhQjhFGl*hrbB0nPDwSGS4@_TRx@8$?USc!a>3rP+~J^m0qi9VFcQe zeYtiSv}-^v_i8S1=Pnv1pl-SLazk-`i%4D7zI@2cIk;X3KA=U<88?x}IJql%b?nRd zlc8l^|FT}aaPcAyC@et-uL6Xmt026U&X`MGA-($DxKO9(w>>Qn%}DEH0l9T(aSOZo z$fo5iy$OO59HrYnC5|nL729YiA8AgAZoFj4#$}TbPxhFA^&F4GuxQyq4lz4DWGeIU zW57|==fj`{RGkt_M9@WS>7Uggv`XrR)BKEQRT#txUC9n+5m7OJUz^SD>$rVbSp+Sz zEj_{t!qa861&JfcQIp%?y8g6gyu}~4LstT^!ki1 z0~8i=AXZhn7v9wa3DRSb%}Q9tr2`BP_G7of+d`MJovoBr=;M(5Ro_%Tp%(D3{JauXV!O-l44Nl(HG z3l*6)(xRp#YMGmdF|S2I`S_wLN4ey5+4nc^8O~fsA9?-aIk0nPfni|J_rBj| zPWKj_30Gf#-s)cjiZ9~yu_GL+P9eF4PB5&Ess<=&N_ojx4h{ON`mCb-_`O!MnIe;~mUf)VAKiH|)l4 zlgAu?q3lecIFaJltnEYSLP&KNn33GE0?!l~?cRz+`yW}q{-=F=m-U(D9*HhK zeNCGAKr2$UwUmct$((7wVNgZjrL!fO7 zn~4*bG+f;UG-X-mI@!OXJp!gKECSw3@Iez&K6u2-zd2!+@N~1Li+bRr8xpTeM9u03 zb5p%mD>BRF9wiYARW^x8!IO$=8_l(HNC@E`ugqv-almgx(GJyNl4YJ|{)oT5Je}Sa zxn@9;I|?-My6TmiT4Byg%bHPIm^k@4J&U#^uAf@i&|F(k3xz=1B{IJpzVNEVA#=lu z;@o?Z%qMAboLR8wv73`Z(9DP)y?qu4)m)qb<)g(mWt%l+Y131;bZVVOvD76ITU;zO z@i={N`Lr0P1i)V7c|mH>^eGECtBo&?$O8r}5LLp8RBj1Z;Nnuv zQ#|@{av8HBM75UQ{;CL#ld%R!ry)#HKB`tW+KK}{p-JRScWF8rllMP01K1hy3(noh ztOsQ`QA|{OS-0K=7s**ln`4#^b-;V_3xq*g*{Ee3+g1HHK;v-YzVspHC96w_CY~Mr zMgCajcO*OYVzWTo+F^vbjar9BAos|4a;@PmlYg$;;+fZ_3oeGM2D6!(*96R#OkrX9 zhJkWa%A3U-hH%bnlNc*p{Smo=XWB=oTkzmR*!qPENSc)c18fSmg_|vu0-gR)07|y< z{+q!ClLGTZ`LhwKkil&!=kx`2LYuU1&cIXczNrO6RG%9>gO>86-MgROvxjWnwJTY= z*ivKfYSzGnQ&m$$7u2@2=<0Q?ZGh|5LC^1#<%dVt#TBQcfOt-aR_HCKmX{_8Esy7= z0Cjp;bI! z)<1Sy_1#%V;f>D$@=m2jL0{zLy=*%P%g9E$?a+(0;n4Icka)QzC`0W|5 z^Hv(qq+fgyipx>f1tLZz_82@d3Cfh3gNOmiuk7 zh`L(Y*1arX>yD^`sTc9vuATIV$VzL5s<0Yiy~pAG)+XQ}2}@sN z9?7x>#+(&q7Uh~V=jiO&9n77~$;^Kb|vm1H&N!&r=FD9+)|4T8c;hHFwY`! za#J>YL0~Ds5`EYAkRKp9*h#Kq#-2#Yw3?oJS}OEJ#L8nzdA)lh*C? z%0l_0&-PR^cU$eyxD0avq5p##t8z3ial>VTIWopCXj#h|ufnsWeympEwJ9L z#LfH$j=_1@SgL@=Qt}w)+kND6nE$a&EbCANYjp)}txx)RvDo4oUE3no^1_?OyatfU z+T4LU=o>Qo}OQn~Vux&PoK`1F2M%vS#s;I!*1;c}{A_KN`IG zs76+;u;hmW8B1izuw7_03Cy|aUooXilW@FIvhIyC3ybSO;6i>JMh?%cnRKKLoXj;` zSqviNtk7Ys>dd3Hj_NBtKA#+6w!xV@}P-6wBflhHZKtFXGDg4v6OB?ysymD9xctOB}* zaPj62)hp1A!;@K+(&jEhuOpN7$khr`N6w)HRqL*r*J=W~8W#Z^@QRlZYC%i& zoMCgsG&qO)rw3#}95s%iX}4hrOdwQCj!kgn>TF@HhLCm`J= zqP0p%q&H})8_rvSEG6SbOgaU41F?|Dt1E{C{sv>pleTzjthtP($&xFwi;1E4>BJ;2 zT#fiyFGe}FV3!lm4}2o%Rm;SO@!{f7HiKY+^Qx>0-em3)Rh`ZLfV|3dg{VLY^kiUc z=rTexrT@rf_0E;&9~s6~uXH}sPNloLXv5$+3sO4J#Z*P7txYafj~s2{t5j8W2lDaNeQJqcW|+CF$lBQl z=o`x~&!M6Y$p4dUBsm*;!`Lf=R~ug!xhjAJa3g=%!-F-MvX7&&?PDU`1e)(@MXWP& zk(UUtneoHJ*`r9UDRbJ5bU9ge`(S3qMS)t_7!+mNR6i37~d)NXC!oYmC=PzG&3 zew_KLY2Df-K@<=0&04syj)+RnIz0$0R3oe)lv1Bpxg1ca5^8vcXv}nZxg8Q*K-!bR z;vf>dZ=g8=f7B;80YSeB4h&{(K+tCm3#=Ias<0y1m4m-$>*Ny)#Szyh!ZJ`p!hZ>t zc^rhk6q}!%E+L_S0p%f;2y+3MqBsx@Gsz`#lkw9ml+@_MX zCCtT^EfKj!4wmXJT0rkSzAR!Tjtoqt06_);Bw^4GCw8m(4zG>p3n(@uT(cK9@gYKJ zS~Nnc6!J#zmaFfb!_!Ho-FDF`JM$;tOFwM2Z+&DNh)eUfKfc4oL3pb$0y1XYASvhS zS(rAU)|5J2e8cJJ%~|}`LjR3Ivqem46_RiZm9sMXS|x-YB@#A z0@5m?uJOfbI*Nl-@YW%vnhQfOC2iPA2mM&?q~DcI!!@=HTi1q1+2Fndee)L|IE_m5TC?6$V+2ITppQBuSy zp0X#OtjUVZP1R_iTN-4qCIHqDiGjGGXoB%B0&}fMBY-hSWJR8cR3>LYr%=!mr;Miy zxB}67hekZN*_F|>snWff#z!yUX?4O2?&U}ai*4$5TiVucq;_Nv^#IM`_3+N!n?gVf z;dNemWqh?>u=%2#Oa{HUK;ZDg7qKXIa2?sa?dQ*4v$k_!2Jl*YXL?h+?|J(VLvB;t z=r^U9FJ&(u^XIoh~@#q2}u>&`VUni%5 zIA8;e4x|-r>WBa;z@1bZ+gFa=2?0E*l@@3!5@zoZ+PM%BGGC8nvs)t94#;vxq4&AF z`_>aDnDm1W`Y*YJ>`x?aY!2-@*bSgk6iTHBq>`W{x;P`yOXjYVFELGBxhE%X>}rwm z#6rroZ|IV(vu&T^wC-O}5|H3>$b`XKg{i?cHK5cgso6M%VuexFVNct;Oq2!M&9`RA z^7O|&kZK&Ip6b-v^#Yk&Dl*uZH!0zDA72}S2%?>k*Y~YEQiPxiRP>$GZ#?I&3~5H; zN7`dh4y|tENo{iAmmK z5<{WLI9H?0q?n!r!I{)4ti6)W%q3#H$Yh;dT4!6b|Jos*R@8fR$6OQhm1pOz3nXUY zqT_q2C!sL<1kB?g>uy@QoLm-tj`=~ydrThUC(YCyGdoo>pG4N&JCAN%`r^Erpt&f)w9m zS9R)J>J{D4EljRV$lPuv@Bl=X=C9*2qYi3rS_32`&}_6HdpiNY0_&V43)6QoMVAM; zI&2I?gkriYrm*N#eCSmaX!PbMG`2*{U^K>4%ub)FyIohS?*!+o@{jb{dC-$zyH%>R zr+V}{VI_*|5gORAAoWejkta5}Y0AAP<*yKY> ztgH$>U7YU6e_Lq zVbYU!r?AAUgT}Gf%48}oe?iWD0FXQE;vYxu@C4zqv!@9k9zGK)|2#Wa_+qO=EG{(h z9otB@ih8n?Ux;&MKpy)AChqU=|7|8i9?a!>O}#UMGP^i1z1Pf~BMG(DiK}I`P4#ke zNyLyJsTJ9zH6vMORm6~+S_5EkaB3Qw%A^^pApwxjd(7?hjMA5sy!0iR3mV^M;NCeF ztZmZ?+yRd;EDhB9Bm>%x_46Gvr^r0Kq($4gX`xf<6j`T@vB}$W;KK&XkvBICDg}Tg zLS*Zv>^jTogC)RduF}H-0RT#`o-Pu})sR>k=%gUMf_+!WvG6aC+vZlhPN(#W-;YgA zGsvCHTylv-+N|%e#x*{tn0Ya)u=1Vob_yk*f^L*5jo-}=H2C>74XQcaa$i6f)75zQ z*E!O0T}a!L{x+(s56I#Yf8CuC7){ebN#(ruwTq%4r`{&k@Vj=baG%jn{%v$>cXySl zaZO0$%p?roKA;xMYwKaeR7cdH40;~0IiS5bV9oWeuGO_Pshc#d;XbQ-u-EFe^-rZ< zbasr*bOKXcWGT*;1qWhUSx{;2oz=kJoD;y4=$o|S=-(OvLIXjiv-r14B!(u8^>t9Z zE7zV3r-uj?+_9C|nNKjD3@qKyF2@#vVH|_--@pIeQ7HU}^22DmY(B%Yc7}y^DR4U5 zH0{ONEyAX*Rw+*`pnSVxE2hPD+v0kkASLi}wqdbN=Bd$T9WdzS?G#vh0VAekQVuSCFq;<5Ni7!BAjsSpzOql3xulB-sCA_)T=km|Bm^kj zJwGp0nw)+%h;&GKI=>TxNVRBvtt+Q#(4-^j)+Y}^5GgwRFth&PbKiVZd2xNl4+?fR zYEP#0wb+S8_nA%bd!tzT8_NI=0|gRq8GhwD>&`O$Cr<4z?IY&i z-q#C-0FVL($qMFLioC+6-_)rZx-EHs>Q3ekI*Gz~ zA9gMN*{{2nk$dFMs9s@;|0;(Q5=`to2M^S|5T$q%98>I+=* z16&pR34?|QyqFH=AH#1&;0$Zv)5><1L)kk3U0W;&uA^3zt_@PxmByfQ34a|s_R&Wx zj~@N;k70T-ZUksbt6|iT9+jJ@S2Lxq4Bhkz^WJ}n?#m>kkK0rKOp3IeUIenE4)fsl+;t?sM?H|=Z`$r7q?(hDPE{MmNRa9Z1902t2Hz^slK zBZ^K%D{~prUO@b5Z{)@yY4OT#YERFyBzc5?&EKC$fIbMX^S)1*b7L{)6TKW%bOj1J z8aJ!zg2Zu~!738a&>cXCgfs`ICbS}_%mmXl$XcKt*o0c1C0pgR{lAz8 z)XGBPbE>ZNff^aem#2&~+fbIawU3xH`eHM7Pt+%v&jY%~T3JAs|Ge7T6;{vPt`i)@67BN`@n*+ytjt<+i1yehCP z2qti&wA(7a zJo%0x9|EpEuUB9Z=cWZ^<;YH@2(n0#g-ii|%1co{Q+Nwzr4RGb}9byO+QoX%yxJ9n-?u1l~dm%11!ioKHa{^CxlyF`fiyLI@odz~Gx*zN{M~6bEWdRkA2s;#g`jov> zE;x(h0s{g&%6e(uDT~m80v#NV4;Fz-^Wp4+(X5nwF;+&hg#r6wP?R4SDL}UXbHc7A zQZQ<;vnT)>T$KybROSxt>9}QB-g_)Y9fq|39>`3YOqTpTCQ&Kds)OeLAM26)&}EN?m0o3QGn`4nn!F>5RJ z0{qc01ZLg9-~f_j$;4m~_oX(95Z@0z=uQwY3S#{wPrXDk!6# zE!aZI(IZD>y+AsXP&-S9NL5}9Gp#y6mB=3U13d6WSK>H~&64t`-g8wvtMCOh0+6b* zgujWaEWAvW@r{_VUYZou%g7gu4jS#|W8)w?YITP_W$QE$U-D%}DU32DK zK4(rRsI((8{Wv&G42LB^)I$^l1%FXg6}B5qYNU*1p+(@2)2~_phaPW^EIZ2zb^7$< z>?>0-$wnM>6C}R`QG;X5n&-0$wIXy?bwp17gE*PrK{5V7V96$ASM^X{kAM2KqQ!42PMc0;V?SZ8j{WWalRvP5E(UZ| zK($98uGe-Xo$aB8KH>|>-EMiC!t0OM`lnhv+O~EAgM(lmoJkH8Yh+c;Z_+k4*Q+}< zq1F~QlECRXe6+>NfWt?nXa?A|)cH%ex&YSsL)U`txt z)d8P2uWhIUx^8Xok40Kt-MeiTR_ce>roHm0c3{Vd5Xv;O_YLX)0uWa~+9mbZxY~6M z_+6m3l2rivT8G?uO44f0s*0IzxAg+2FP%V}=?4(%AF% zJs9?d>hp3~R89m71x$yK!_J)T6A@ zR(plP=4wGrgBr$?LyrQqmF$7+r2~h*QSYQ)kX`q?ywIQ*bibo*TF_?@yJgmytJ|Mq z)AVM5E-~$x4neEF$ z8UzYAVtiJ?tLO=vTCt_v*9HpLhQ;kUhdzGH##g1B15ka10&#nq4;;NbNlAFgqZjX% zBo%?67Uc;Xo!|7R9D;3zV396u507N)Qq-u3wAq4H?~2CyCA$_ z)LnXq*qGl>>MdiL9GzgSJkw3+6l!JGWZem^*{5tQ?!_`7$Vv!H^S-7Is?Z zfH5*}%A!ekvy$@Qve?=726lh}1U=>9aWMB2W`K@ILuJ>5;o#}!4v1E4O6F<7)P6-O zwX^lgK6&y`J5`5~{47bJbEHFR6Aq3=)xVa>YBdY5SjbcBgbOa7r7V5Zt!Qx~>&n^i zN}DMp?hw_3;uYu{-H?zf)vW<&TD1bAqdRdz0~zL`ES#AGCT-LacgD=r6>;gdUp;@U z39_Kx&q?)t9kldk%nKhSML1pNEfRQ@SuM>RtmjFkRkhnZhTy2zAh1t7}q!!grFrgY3V9v4VHqvakwP#VFPTujpKI{05pzS1b8nP zFW@YkS212>kg}Bis6n{jjLER8r0lhWagE3!H5TVLk&DH19yxxb75m2<4_<#4n{Yo$ z-&{@=@POFLVyHNAh3!c@8_dHZ!))e^)P{1J2zw4(uyKk=xjJ9QydsFZhVke_ntN{K z`l<55W!>aWC>7toq`PH*7p>q&HthYj@aX>`<3aY`dxZbN2bcERiqq=^ASYfwoFQ(d zv_;j_ib$!kAt+%M6$%xbtZuhwY@J5xj?9TBQ;QnIx8_<#0~Oxq6GYh4-9z1`%U!Ug z9$S;E*X#+=j_NrhPN9x(9~^QqFEBM=Y(3w-4bFW+S92mpJsVHByuI8Y@`(tQ-G1~} z;KPDQiNnr1Kj>X33s-lOAdbMUqYjkz&LJ=7nKv^HWF>PAkF%)IV0c|W=p{;GVzrV3 zHdh%ywgzZRz!SJSQQDe-VDAY^QTiu&x_x?NMuhqkuW|Kauh6$_6}yq|j}Ljm>03DI zm+Ol7Um+JhC!4CWut(+4!WQCQA*zDgi3NdXB4@r_l}zp^=ilA5*V}#5UC@Tk>)5q@ zB@;lup}^JxGcrA0zy39$bGdt?Q8L!uJ@WC#m2HxHQI{farUgB6tqdf}K+{g9d_7tE zOX}MsF~!MMC;v;yzd8BMEpd1u8?>SR{4{kj7vyp%Hn^~YapR+-3Br^>2cH0ZFTnc< z?=}Hikd|>uUnPnlQ2wS3da!y(51;}KRq(dxD9YAR{U(86aR2?Udv~a$gqAs^6s7VzV8KH`Hh8CO?j|ZK=wRCb?;Yg~ z9*Yu|7aj94TzE7Bm6|4-yCRE zdrYqrL4{j@8J^94UfZ;MhACv4w)EzN(jjjbY1RL3Q#-0UcvkANJg6J-rCNCvpGN`B zjbEkr0pUO^cr+)go|+aw(?+5Xq`NA&5|oem&Ci%o@@BJV`V3#EfA;KK zRlyO5Qr`xBSN6PFXD&WD?WT*j&T6JXkHjy~Dyw=2^+NIRc@Mn>_Uhf=Ir8eN- zVtLn?1VLEGnqKzjTUlxs&esKM7Zftn`uc_dSQAqQ6#PT>xgZnmqM zI&A5h5!V-~r_^(948!zwUg(mveD`ZfzEWA${q&_q!LDOdm2x;qgeU?aRZ=C8<}cmC zELd>${P{8FvQ6rx_jU4BYF_J&Y*>q3hiGZJQ-(p@c#ruqI8&9pAI}2ID+eGI?rcicDp<(x0#vmMRiVooafjNjBPqcW1tF} zmfJF!y%?xMH*MURCK={RV732*_N9NCCK`=zYSE^#^$$tZ!G#{3XY@Z3N3Th4?tkwr zq3K%?noh>uI2|w?8wDr_dlK-O;e)^M-S7?}&W1J@XiJma=fw1~d34LkcbwE$CGnkX zSq(~S|H5f)?_>Th1_6O5`ucv?*LQmiS|7qZwOZJ`bQ<}dd3ae199}`|*mOJfSx;$6 zoVva}+mVZJiBUf(eM?o9PDYuJ$y!6}f_@X~q-c}VY9Yb^us|;|6z4XTW9?^YZUi5< zS*}wcVtjb`V6?;4v{7RQB1UdH0KjCYpzj>vv1}O5*u1S&wDgJq)81;3JM38s-Lx05 z%*Tt=iu&e5F}^{F?D=;KN`t=GhGAfnk1r7dUf~t?2;8MNQ7Q$p-h;p>Zc`zn_%A(- zF!t9d(XCh!`FTfGz?XmwOd#|4)hqsLb3j)XXu#mWHoC=XN|_zz^vkD`h2g9scm5S1 zd~ltH8i0kHCnMwl8p22ptYTHpY6aop`egw?WCh__H(S9B(EyxsY+w5J+ozv)Bobb1 zn{KAImo6l~DyWPg^$QKN^}Q0^Lj~I0vt>b*K{8`3qLVh%uUhO1ITx)eU55-bpqC#( zIVt(jT`;obFYUWKm|sypOMIF#F)N*z;Vb;eZB^6B>3e2$YGhuqB9vcsZHp${tc_~h zB2qlZTl9)*cFe7Xed|X6KjtPrVNhrQjw=!cnobFOCuIy6DWG-2!WXOr3#GzJaQqE8 z+Y>by07(H3X-0$s=D_UhxNW)|dnsI~4n;oRzn@tGn;#(une+Q7m<(8xBBE^ehvYHl ziVV3rBUY+fe86=z2lzrBH75%rsLxesyP*LoW}V zssF@?p}oQ_B|JWOxmM`+d5Ly{^}#*mdQ3PplADWms$O5&X5;Q6@e7M#m>}YgPtd;L zhXh=V5Bm(SEns_o=1@N>HIgn6>s#G;&P6#g_FA8ayun1){ulltYsft2_!U4U_(&$N zb!@+FA<({OT(jQvm2K%o(}ApX{u52iqI6oC{w8%B^BTDo*oT5Hu}(;S*;8mMw!!4U z0=(c)Y30s`H@g%*iD~)uWBzFuEjNq3^3Xd+i_AJ1yO9skca~j~0=AJ;Ti^--6OL)p zM&bryF%7~ea56BH6?YNxJKRH87(Q^Lad%yH*c-etm)jk=ZmK+gc^7~OQ%VeZhROM} zLPNa|Cxd#bwS3}<$KUMfVGehb>Nqn;6^o$>t3-qVII@BJXWzzm$C-CySKn|&H}t{K zorf|Q|UGp>k3cGhJRpz*eDjgCVt>-qP3l{ zsVuyR*Ak>pfx)mjpNB##2v7Il)I(Xb*(*`-13m-fYerZH+@RaZEZfYn7F4im8Jq2h zb%W4Ex5z4sZeGGciVIESkm6e>@23uI+I0WMjor-3Lekr^e8db!RqR}}IjYmgcPw%! z++y?e)lghcLe_Ebq?n8I7pUTV$~nZEESL@UUPajV0mEB~u+ZGXdnD?NB`{h|~gQMhC)kk5P1n{Pe} zfeufq5KGN!Mc57vPfH{u#ul1W{}d_w&_-WLa%`{A*6DGDzT zg%=tNMZ(5~eOpHFJ+DD(7X`K*+sXaVjMW`7DbDY~9|F>O^OC_W^Kac-3oH!Z`b*z5 zSyD!uDPuF4*{|i>i<6hcfd8o>p-Zsiiz=<0^v)$c$5a*s#0O9*%-N zP}p}NhkG39DjPX!PJ83_c1q57<$Cr#^2i^be)_fo-`Y9aSEW!1v$L8FcjYA7D!tXn zlS%nR2%Q?V%In};-Bun9hhhFj9=PLkMh-1p*I;CdUa7({q;oCSCY9JBkviP}2kH2; z`E!;HT0|hzqEF9Um4t3_i8|8Gmx!oj!J?}1k$I$;U|IogTtsB262-x0HvseNdD=aG z8Zq8(9WqW-}-EQ1YWBd_DYX@IBM^!n#(7*{wcFZ(#BeV2XpfRMWR++59 zw&B<`lxP~bc%|uIw$Te`KtIl*?>8}Xa9A6f5GSOG&t~c|Fk3}EUCNS{{(jn-VGc#f zN0(i91^ES~+WXq2wPKhE<~i`l>gvUJpW_v|6|sNbk$=Bq;agE=F7sZhl(>}nfZckO zpi7OvBR2k4h6%85ScxAokU;MQFid0;ocX_ktWU@ZW(YqN`8iYl!(8qz)Zon3dyB^8 zaEOm;n}v?c zFFn`-EewK&o%?NO_mJK0nD!vMX$BY`U`qLmC?XsE?uYclY-l`@S|aP3^+IrZ!MUi| z_FA+EljBJ=+bNXJf1^MOy^QA-xa(`^EhjIYMg6eUF_p5GZl&%n%{Eb=mkiW5(IfA_ z&wQ;eU1RBfv7H>4I<@_UbO(!$JUs3Qv13~RTZ;TQ4J}Rm-N03C zDB>uGT_}3i_2rk0otT)y?5WhF#^D zb!qD4&tM?&7Y;A<&C9TFUIeW8F6I|qv7@D-R?I8_E`@LUV3KY6Q64gV>xS zAG$M1LfBVHRzO!yr@Bkko&cT%%(GK^bdvgx4pV<{&is0%RzWq82dV#O>^(j# zoO^eA@4dI}WoBn*r}vp{*<`cnZPR;iB&0zKCG;YMPC{2o00997QKU%~6hY*D1r-GZ zL|*~fx%r;w&fG18@ArMlZ%nc~iOjj@Jm)F@BCOkoF2F^Ee3QAoa-A+8q9lAzT%=;o zD~X*BWJ+62g29G$I}?0BILj@*p+1wv)H}qb9YCnWMwErRuh8JL7INk$bD?~d&}b%3V z0)0Y*MGo|R1yVIq7F>l1rOz9YGrpbkqYhYLNWi=M;|4RJw_gV)RyC`T{a|VBwLScL7Wqq>z1yS0Qzbkuho-#8>;zuvoU!`1c+q)-1_Kp7A0@OF2 zyk064(Gu=$^Sk!$+tDge$?M{mUy~ zg^h^hg{N!X3DgPV`ome618tu0A6PrAT(@N$^~*w?;6Ja*28A9brf_x8{Toj<*k&r1 zY#`sh)?=n3jfiL5i%jUX;4m-*#zQ{}IZ}$SBJp*PJ~tEOAhg2Z^jL_T&15M-<(q4M z`|Xxqp0;^#|00m6nY*hTP`XPpBj4tA2taU-NPNmVjn4rp=N>_zNjXCyYg4y(nuQjL zz8N}xpkdll*{MQ(=mG%axA-k3OM|sc-6D;gwId{i6Wg+WJ@eti52ryz{LksjhOR$$ z)`%NOFZMYb4qWs@<}JJDNb-{>U+2Etz;@SPv$`-iv4e1<`ACX+n2}W0IWJI4A zK*4mF1!150z~KSoO@bF1==yPkk!siZ`&f>U*0YU1{0l5@ySm`e4`fq1{AMRkRB((G zyJHrVE*Yw=xA#RXrD4NVetB&{)H18YH;U7}{+F`gKWMa@coGLnY=|8SzSUtuMfjTv z-u=C(lGn4Hk7YTL$>qTg=9_l}M(MF%pJQSkaG(F`#R8?AcgY*ad|U{vspZld=Ix(n zS7vmP;iOLL5-M9V&GS{LAMXaTq^jQ8tek&k2R5l2&Q*g!f&S>@%^(tFn!l%P?mM(Z z5BwCdW&I_CuszZBisL163tCNiuwFfLIcrOaXXlKH6_*TOc&IwrQCp#Kr2Ezxax@xv zh8$7$MX!`dOlq+=|TpLDqJ9w41?0->E!l~W}zpnEmEW|FTMQQ*ZF8~D!m z`1I6~P6L>9Iha3f?ddr;uxe{e2L2w@60~?hJ$f)KB@(}aR{I=$yVuV5H!7Te`3v(5 z*hERSeM+MV+&&g9x_05h6m!`PS?0ZrB?Y_;qeCsBPS!f0HLXoDm$_UkRkp+Uo{nWq z%0};hvdkaEKy;*4X0m}9LJI{px&29vfrm?Dt#u`$EO(eqZlOWSmb&aloM}rY>!Jh zVw^V@3g`M3ukBQpFHewX{&11XcgYj-*vv+_S_X_lV51Hjn|X%h+PbyFuThCpazMB!>uY!Wfoz6 zqisf64|J5QcBazzMmYIgh$A zy*eEZ^hA{+m(;PlNOtS|Q_UJpsM9XE?1TGK0%#a^-TKxtt-aT(w+ujb;yV57Ne8OR zT6T;L4i;1qG3-qWpBYiD6+W*_e=|Mn8J#}kk$pF<} zdHvJAzJYxHrhFcV&Oc*7bhq-eN2A)VPJvO})}~}^*cSs-(&2j0Q&rigFsc^q_*H0 z+hb6+hAqXwpp&ZKrj-#&Y!`!2ozKahrc)qb#N`~^x>R{x-y1b?{D2uHyGB?z!b`)h zQO)`hwG&O*hjFH(O=@>u?z%zuhq_LI|TS%n3j$I=WRhs=8}WnPn-@LTu5>EUAaMeDly#P)Zq7WwyqA-@rrQ+u zp@G+5?`D1ugQE|bTgXyLXyvd;?2ULEQ_v_z!@^ zT#9W)tDq#s7CV-uS;R3x44g1rz!vPJ%o*Z7E58g+5AOoDL0H|=Tp8;4>Z>Q7@FkPi zP*$d~L`F+;t*+QfO9g?X7(j%>*9G_M{<)E2;T82rgli%-bTfTs+hsvVOZP+;2MeZ!Ev@2Ui40zCb< zNB~vgCjD#vV2Szq?gDg;_^E;^k+uPPS=2nA=-OR{ggT^-v4j+KJyS;=C0pD`qD+p~ z0E9kE?Pfjz^3@MPrFDDyQKP#zZ^kL7XR)B(n2H)LdwBDI(~Nj@DJiN95OGWSJ}Tp53gd55~BM3@*gL!Ui&OS8~uH8}*r9xNpVIQcA!0SIoDhhxrM$q)fb3Cmrxb&swOzs^ROK~tqb_x5vrie2IhSm1@7%c9E_TSh8}>xWu^<09#k|4RM5pLm$HqCtW2++C&)^ zF8slQ1xe-yWL9O%S#nSVGH6Y?(g0s0j!IzyXJ@WAJAf|F0;h?btjw%o>fxz7An?6P zPt=*maT_{Yq#?DPl=HJGSx6N?LFpJBf#>XD#Ue0}vj`e?gR_AVKCFP-C-2mN8Y{_% zj4h4ia3bmHxzIdscUjbxje=W>fHYl@**GU}{N&S5KPoF{6rmX=EcAdb0_c_=g?qhm z9Sn+R+*zR3PMdag+O#P1cu(5NthPNnJi|=T5JM9j8R$$M5$^p-3P3J(;d{t+y{M>f zsk#c~%rK0o2Z#DcYk2SK8FsOA@iNrDi@_vi)Avn;CWN}`rWQ z2o17XqEVD)ex2Ke> z^h@1dMU%?s&C-hcA*;?*cGp>37EZSUpIl#>P1==HFKUDAgV%KSplJQ^HP9H+2^#Ob zE2Y?dH~d~NZhYz(95?hhd!5dXRR*CNw6`Bxx~t$ZoEd0fd%@}9DkM((r6wILU~eH{ zpKv)LtSy%aXm%KKrL0nUQA&y(F;9BT}D& z)_7ffPXlnhn^e&mDz_pgH9kc?>|^dPyU7V=gxta`P1d>JCwzL^Qn2&@{Ry5#2lxkr zihu$MbDCOELa#5QqA_SHdV6iu+U(DnM|4s}ON&TJcPCA%#z3#yoi}OBJtY7!ErR@u ziZ4%+`x2%wDiWKOk~*>34C5*j>0@?a6-v4hVuCaq1Tn>0) z<$y0dp_3D{pdL4JZ6!5h1P6{n--2~Ge z{AcCKn?zYp@Ezy#XzGh?wlD^G~%1?1Rj@*+-X^ z^m4yM9i6f5;s$FeYiu{=dtiYAaFIPc*2choW;cZL0hWxreaha+L5*$pv4IOS8y^S{ zX$273AhqF-O@CR@L3X3TfkmQIHMI*=%XUtW2+Q^weYdvQ0`5Zi3t|M}wH~N3{@HnB zuFqEoX?oW(9n_Us0t7<7LZgt{bn3JhhQIE(R0b$FrJVm+Tr)Sr*NdWqf`F+jsA^Dj zM7{vny|5wN*&xyce275=eL+&-Va*L(qJ#Gn$LYT4sRx zVr}^_W55>=&No}sa;t^=4^SM{2{Ak$PN|SvckWkmZYGlr(Mp{xDAg;Dw86ltE?B3~ z8OeK$H$ZM>mN4E=KV6o|Z0NY4EXf}3qWX$bo6{l7$sG<0zf$>FE^8N=?QWISFIPD% z2EqTCEQxNlSsh8_%$7t%V^(*^>7LQG)T_e4$U?8lIcvUEV=tr(CS$f#c_v54a{Ke( zO|;Oaj@Z-osF8Z4aQzJzhvnf5uf1kvI!zmjH{5znR;1x2uDJfn#O^k!(;@AWIXze7 z?<5hK3yH7Z({DqUpbEg_Y7d+;qAbYtNlost6=IJsdysM0;!nJ&{(m%RVMv34^vpfW z0yB4mO*WVqCdh;#wiWHZb4MZmoduF6{^#Uo0`-|5_}2IWHa+5 zApTZu6qxL$I%v@{&lHUwX=3Wsq|5~3`*oDO=#{0XPmKtJpymV_J6qIXgEC>FHI-4o z_I*Qsm@RkrMF+Fa#GHgyY!)io%ALDWHx62}G^Gl-5B$ewplLa%$Wgk^7Iycc{UZ(t zt83?gdbADb;HYmjA1-#Fa%Ev{#uL^JCOJ_v)QtaD3=GYlDADEOuEO zCO`3J2$$}#NXdK|7c1rME=nvg`US$eyM6&bo`2qz5Zi2sZMB#L)U+gtnWG!#SY&RA zaq5!i&^KtI2@pwHd%{G05*W;Afofpro7)14@7Iva7`w#||CG!PHLwDTswSfqn8_f$ z40sa(=>v`^nVv|z72LI>L!gk;&8yb5KvHNwjS4|k79_VLzdQZI6p!1F6BFXvErJ)$ zc&&&HZ9ntwHkisM@0lx`20fbF$b9Bbc#VK0r2h3`m0OvWS-+-=l_xFeXwXkxT-iaI z`}%Mw(q7rFQO6uPTf#tIoHy^%xpSjnPV}VAl{U)F1;&(FlvJ+=4`e!pjgfB2j%_t68^cet1EvvcX~AJ?1! z>cHT}yFUEzV{#`mKaY6GW276p*YPq%Nem{1!m3wieMBnqXJj&!K;@7zACzQHS)bCy zw4oF=Fssh5PL*%ZQ-9yTKl;UE_&9vIn!sij zokYz12Xtcgv4}&kkNpp_%i#4eicFtE*sQDA+NDTM9Y`sxeL6}&Df=1}x#@#3abl`x zH5!GJRVme+8+O;Jgqtp%#=OOS;4PMNnK z)M918skk3l??@R&XZiYCHOLu$&4tM;8&Yw9;6*f!lhs4Sgj~CZD}`0S3E)^i0FMs) zci>k%Y1GRoB5bmJF_ri|&0Ir}C*yK%(qdr>LFOUhIuq@cu4}|Hd`xn`W zSSD-J4(}fp*<{mp4Jd&_ypK6zM=Ay+kyG_ZcDb_zKMrSgZTfD7-STBbZR5px7V;c; zpA<&lqt`qG;;}+-9%6fheBq;uet5(y@hY0HczjKeR&99hLTfrD)e30G-&Cvo>nYd~|Je$-K zWp5N*8FnARYT)m2oF0as96yD}8j;sBp|N6yDvXemtqLXC42T>z^Y%*#eRDvPl=@qkuXt|K0Xg-W{RJDJRtRN|lGus~L7j>G4mUW0M@{VOg#a8Wpk$~=b!3$*qT1H$s;ieoof!n z?OmG}JEdlkW$rq*D}68hAmqGQz*cizPSGy|cQh)(vD*WxFwPDJGBH@x@dY)&Mqyhi z@YU}w8+(Q(W@d(3ROf0By1iGf)n+?Dr_>!4s+apO&&n7r7JJ71B+P)iJ7nzy>+;*|H`DuZclcpT~I*)B;=?C zq)8}NnnXc;l)X)M{_lE)p!$=3e#cGT_^+ZyFpI0KumA+RD(jhu#U5;4wY;9Ml-GG@ z&GF9{yVR{(zw!;g9IBQUxyJ*!*?6_Z-DD03(N&2oXhpBA?Y!^OkvRGhr{TZ_TfEdK zov**b%=>Bz;>8t>Rla8c4Hd08h+dvi*aSt0o{fXrMs-qR)IVI7Tlu|wbLGYFstP}y zSe+q9nHlg8T}C@{C-N_=T+?hi`%p;PGU8Gilj#>#j;UsyW$+i@$zZUc{83GHh5LvB zNa-UWAy5T%t^S_t8b3Ddh{>p}+Ea%aDts#(LVswup7ro$$ob{KpQO9E_8r%w#tW(w zRc_am%e#Y@_NsG7qa=nxXRpNLp8{;l0}~qXTXc(ZxyP2$^ByRjXyJGB-i1_;qJ;_x z1sqA#7~vVcMzce~Bb(Y3HX|>{)7xHo^Yj!XZV6$8^L+KnUgy(g-FbJ;N`0JLdNau~ zm&cACJKV*W%jn{rKkQ}p^R<$wR4*c5eEOT;P^}wZeCUexsXEf!3&p>xZg^NH7B4^f zR)yio+*A8(a$El(Dc*5MjQJ~hJi)f~pNBlY_?@h$N?VJ5&mz{YA6x@A_KwxwWI~MU zz+o}aU=GCZo}&Qn8D)kl@f);EF;W*)c6U;4kb(QKD|qnY%TaqEbL{ALNbPn*+}RE1 z3}m;fs>x@m^*Ij%0sCalhl`;a=k*tR(oQ(hH*}vdT3xE$~+Ap#sw0{ zuTSdVdZ9;O&22%>kZm!*2bd_l0y|>-hN(Vt%+1Efu493two|BAdwSrbov3+bv{Rk$rfp-db7V^#z<#3W`Z9z#5{U*-MTy0tjRE2SIiF#4Hm870>n4PGFkgynr7s**cmksjs%U`$dUmI>J%HY zGd?d9W#w9(vDaVl_uJscX@%zXBefm@5`gS*=EreHh3`-qYPAWsx4DK1CS6$RKmx+T zuh}HNmTE*WYgoY=C3OH;c`L|Gy8W%|+G&?H-K}Q) z(wN+4I}z&aq_ma0$-N!n?wgr!f+yH5`vCBHxn@WeffQmX1hXdbQfm(k8tgS?MvVFF zoiH)0AR$T(8dvaUY`C)uA{2D+*?tqwsYxy6?8HIknnL01@bN)a>GC*TpKUyOxK5=K z?7t4Q;^A`0zy0=#tk@iE1nD;+nA`}-aGtojonjf-IlI8!OYb(c=Nff?>+Ce$bI)04 zk%o4ARvlDB2d)V9>pqh%?}q85h1@N9mU(wE2;}i+5*?YBpO$!)Io*Be{DYm~QBDVU zoV_aq25Y}(&ikL5Alf;gU#*z*Ac3+`C$ z+xF~U=_US3$3&l`nvx1{BA;OIbqOi@SG@kQY^!-vw1t2V4(*;tGXMt=mb)IRDNIm3(O5OZKXTIZUm<`OefJdAB< zcpXQn&}*{_GhL(&l|SHDVTsNUEZ-7Q_8-qs#W=&y)8Z4$movXuwCKu(3%i+HsdqKD zl2LCeL367aRk>?&5|A}warGo^WAC%-2(N=3Qw{)ntCdzgIKY%W70eM7e?A$Lm*RwdMIUJ1`? zh0c{ts@B1n6d}Sd)dH{*0t!m+AYyM0l>IBfyKmnlHNx6WGr6R#dg;h(eS1T-zY3$1 zK&|u7^$j_g2!|x$(sn45;FgAlDwno%f3Xv9*d4{;Sd>MtvR~ zjps4LY!g9_wK5R1%fnafS>%+tMAjMW&Ml?Z4{9YYMg7SQ!)+3)4ch+>$4%0Jwo})n zo!=&PIb>l_E_=Pn+@bPG-9F~BOy-Wjf<<$EAX7lMZrIRzrOdAb!${?8VA`UWhNVUw zoCJJIzk#kdNAd1}76Y2iVS>B{o)QpavRo&2Lhgo)mx;*Sai}R*AK*+HuFKkU)wT2a zK$)rDp7?ks-3McMaQrHznWk{c(o$0v4ISXsP01?%B2zL-i@@FB6Dni^BKFAn-c~_< zdp*CtS^1J*8xYlt{O3_(o=`3TFtZ@2>d-5d#C!wcQ_-?tU73c(DkycI->@2-E2rO< zBQF*OfrT>xT|Y47fqR4=ka+SYskO|!uzmZzTeqf|6>8=gokZ+*f`WFw4PfvuD7-Um zTKk-BB8Qk#N=0ochbp+tO++$5y;3DM3c;SHjuO<$5CDA^U0Dn9Ex!GnCTM7Qw_FZg z$%o)(X#-5_ony3D)adlVga%K?FsyqGN5$n=uvl#TWDx+cqFfFJ)X>_ws8(X%_Z?m> z&T?diAEHw6N_y$&E#!R2%`Tt|1C^m(GL+IaXvXOll0?J=FskUb22!ho_}+0gjM@`mZ%TB%E{Xw5BDnH)e3Hs+2rYl3as zkS5sqzxg%Oqgts4zMY*TP@D65gR$UL*@}9-v4;&V4+GVtny;AHTqOo=d9E`(fv|(A zDJCQ14FF`|e>cp8x%`b=DGq|;Y@mHrrvq&9bu;B%-tTTTIpg zmmYt$OnprU;+_DwPU~~tFo2P%7*{TXJT+*`QF}t^5MT_S0N1@y7bEjD@Ckj=Ff$YbOQ zrj(|-DldHofJf~^@PqovPweSBsac1iRcnyYj{!SMh3qK4twW&Pin66<^spwksG|c7 z&@0Mquq`O68&m+k&_7hv_U~O>2mY%IcIAK71^O8YzUS>4G@FhU?kxVOL^+x3V&`9S zB+3UFy72zP2O?z6=-(|)ag}DMr1l_!yS_iB2CX&M-ZI&)3k=yb+Hkj5aOK}0NDH7c zi`@3^Dh;+OY%?Ii#s=nVY_5bV>NdzCJ11;db|E2Ks%AU{C!RbJC zskjXMj9ls)lx*5e1&Ykl{8VyH5A$_tG;B|It0Kzo)N48C!e&Sih0ViF^-IiaiaE7a@-_~kkNk&R(x&(%q7hUVS1b}jR3=1~|y zd`VsHG^dkBuOXG|)Q47j_y7uY%x*O;x+N-9YxwR3Yjn8YG%Z{yY<_!c6)MOa;D*EPgCs1Ny|JPU1~#jN?2LG- zm=U#}eiL%dYL6EW5`Lld+zj z%I$g-+1s31ne@@=8!s?-6&3JppPa>uT;$hOIeU zmjRSfb`>b<4|%c-)EoYiCv<`NZJzQlCk0Hvj)LE80tiU3zuQdFu+FXP#uD8N_2|=M zlSdQ85Oj zYEyE=td7~ha?5CIH$)@4h(4OQGYbUyT*3$tVu7Zki;N5o9-2Be3R8vO-?MHV^O(U} zFj!ShE$m}H1>!@T{f2c)Rn9L~Yt#XdI9q#!+#QTclhtFu&I;K$iJyK_stJEa1TA*1 z0`PnCJ`g#6sYYgLD|x<`d9nPZYwgZ3UnZuz&))1;CK|UMNWmxOCwH%_e2Nf!wtc^R zbA%P{(II7U6X@9FN~H}b`brLGm^U+^#q>C~eyJP1{aKyRY!X`sW;f)m(KWN32%feM zEU@%IGY9NR+~9|72XlyrbGO1B5BL0CxhX1ki$6Q|tWkKWz4p21KwiF@HG{Z#%JC^D z&wTE94daY?JmHCen^bLKU~hz~s|49O22eOB-}81Z8xn8_s1}R3KaV@QVW^$#TUoob zI+4V?5hQSQ-JbtIa^9?Z!w@5t4U=In0nYizt6983x?pHjqF? z^>@It$ms@yrx-VY?VAuhF}>Nanh%{>=c=eT$y_)2y$WJ>no@cYrF{w-@Exw4g-D%- zq~32#|3sH|bvU5_ct~I}2`Nyc50wMn=sG{)OQgJ@!7Ou1gi;Zoe}mnW=+=9{RSfE} z79a@xver|<+rq@+w@^^J0Aq_qIM3ob6I>d_;s4n>fUUZ)eaV@IjZLb!3VZS?f%m5< z1DuAM;nNG1?h0xPtf11BXUL@;)>OBqQ`MDbo=e*2wgSJnX&BXY<~EqRI+RU{_AYmm zsjFSltY{A>^qt+N7T2JceCFA9G%M69`PuWf1+>Zft%nOjvow3oMq#NW260x((p`?H zy}%jJG-^9KyDW`ERzM4z`|kZWb+BFPbjc$MkLU4LfVBZd+Uu+QpSe6e(Au@5gBtN< zf->-k7ORre8uR9^Mg6djQhjFTFPR@e&_IsW6ZG^6jU7}D`5s>ntPAjp#5-V8vyxLW z$EX5#CiHHg;|s+s58gO2l2AwT`6mGvwUr#*umL=}<}r7zqHL89U3rnQEr8@3B-Cz# zcWi{4;voq+QDFX>UsZ&ZsuxnKw{UX28&awO#1h5S>oe3P0O3(b;%Vk!ik9Yb%%5Tx zUUIY>*xq&Fy@&QkE@FP&{VNzmfAFUd=!>;rEMPPhUgk>8R(%0xKkOy(0R0d>IB8IW z==5sXJmZqU72wh*OghFf1p(L?Y_iV90-S4M#ANY((0e-?xna7Z_sS%(Q*$c!+z1{n z_aU>mm#SmZdGhx{)yP3AK$JQ2_X60xl>|1&&A-E(gFApIfCbV4)Q>Wo7cPvv6wNRf z0p{XLlNFF=1jn5+ISS3W#^QG za4pm#5Pmic|1ilL2bk4TYy>1j~E+sqEEZ7&|EABXhV&IS?sE zR5&{1!muk7md9kFG;;*+2eJyaW&Tqx??Ho$zUz|2MfLVF3X`X<4+5j0gH!fe~b$FMoAnm1jU_em0POU3=a;Tkq#{(NS-0BSN zJ!i*Uy$+S|lmR6T+8&D1l8qaFVs4n4fty&%({&dfff2kFyb{Eo%@_9C9FAgAC$WlD zk@QTLr?(K-$sA&JXQuFJ5ZF@cMolDMtHU`>GOkJ-mwiAty58zVUEO6>^@IqVJ-mDH zR~(|?8N{bGF=rbGEN}sgEXIvC0tX5xd6j=&mC4+k$sCWxj>qFOOQmn9`IS4FH?T1b z8T+|iU?o(#G)^9f8Ot-9fbG>Vz4%4Y)1TFbwdp?ETDbO#E7Hst7^pG zn9R?T3z5!uRHlm9a-b$LsBf8FGJpl0Hql4C_WrW9$<{ZO-Gk^1maa9;npg_l^eGEj z+QFtNyVy_61`li+V-gPgjb^tS>xEL&HvP_a!wpr9#$&(3om{Q>*o+3Y+gLus-OO{T z-ZGOf>L_334-3d@=DHb?_LPk_8gwlVg-;7c^!j?a+9Cm|Qgc^B(zkMRn5R$)I@gU@ zg1(Jsg#`v_=UM9pLQRLR%)>6rUw+_uSwpuAlpcIQ%U&0D4Ni48xTf}vevB?nYhjih zxoJoSlq=f$G4hs`AqC@4xGSCkj6SbVg@CjqgxkRL@v2|-ND?RpgGb37eZI;VeT=2AxG56b}8?N zNdty8oLN?N$TM*0XG6Ds87w;pcx2gSuEuH(n*cF;>@nb@095`MDs#fQhnsP{o5sa^ zuC5+iaqj-S2$|pm1(l_)%rlYjbag;k0t5rImP(hI!4koX^A%{;{FzV#6yWhyQW@a! zGd@tA^(1AWIxCV%c%%J%Yjnj_zDbJGVjX3PhVG|SlA=UM_fVS3vsiF%1O$?Q*~W;h z|GE_QQA#2=fsLO&-7NL@Tcp~K(3YE*FZZPuCzE<%@8V9-Q37!_BKOE)a>En0&MutS ze{l6QtIR1j6z6ZE5+X;BQD*96?h)IH2DzzpJJq*{#HqIV;_CO`w`!&Eboe&(8 z)ZLZ2o5-6?%Pq8K^dDL3SY_9CdgtgxM3!_QTJocH>&k%Sg-e)Nq98i9JWZ)1y;-lReRe^I@~)~_e?y=rq7WGLB9MA* zqs#yu(W`YS2x5WLzXej}xNt41zZU>8KVF~LT#+%a!h{)<2LP{5>VV5(7F1d(Hg&a1 zR4O5ndKGordXK=<+UnuA1+|;xvX;g-egtHgTYu$bK52KCG(mM~L&`F1b%X~}Z9~UC zK?>+5Rui!k+Pyn*vP51)Y%!VD-L`RKo4<9#YHC#?86=lH|NQgmPqb2r(;<-2&Fvax zz;_L;S#z}?WFDLchRRM;*61@8-d2X^7R{g}&v&e5sPucO>zO~(+H^YoOh{!ni<-m^ zHyl^gjYZfuH&j5(O&W?+1Y}hQ3+!A(79hZ z$`Ks+Nl6;{8T*-m(dz5%^;1-Z@sr;H4C{p+fUV0^Qq+S^d4MV7ib$Xk5y_-HpcYD+ z+hUC^Te>6)5|geBs%`wPI@{c4Q;WD=+;rX?g-f237%QJ4B9Qg|TmzCmFj1i1|2nlV z#aQl2^`_GX;qtvX9Hye;p-)~%>iFW=j>W^O!nqAT?^zCE(`ui@zot{_o9k3K=XYsg zNNq3`s0S79f>CKHzl}4?13G|o84K>B6;5aC={F{@k-m%EfO_~W`0&+@1*vT=|oazB=zFJZfqxX!SKa+a7(n(UVVOCo5C0Aq9%2vJ`u^W&IC+7f)BMPvz zXqqC$BJ;o0!OFQo%2oNFg#ct*$T}+h-QIEF;>*B!fS0-W*dAHp&G z-$J=VBC}QA4FHat!r%fgi_7iSS)Y5m@9!o@Hf-p6+Yl5hr9vXHiYbv)0r4I;)5~;K zj<-68cTYe{j;FL-e6Do^x%y{3dBffZtA@e8L*)t)a2*DVf(shf?@1_zfjj>g2+bcL zzh=Tj6A4T&nR)?s^2?%Y?vf_4UDmv4MzCgBho*HUl#r%|d(eAQ1_mvLk~3?fu3oVs z`n$@9_1d-;tzXm9nrJb#*UKd?33wC}b59S*2|_9uX9{cC9#n z0_vc0m8W)KyLbx-zV_wF$2qZD)m0CLI%My1=IRc8i!>x@{!_%zsc%v^ZCw7YK@YX0 zao;D@9g7!7UM9tCki-DG)SKgIJ5KE*8%U z|6o8}xH$F|b+oeAL4g+El?CtF(8tmW3tLD55=KARkJJxl4gW5e{|Qg3=%sjNT1CX9qAYSq{JxKOh{ighYSlPa+ zEFj)pC-*9dK*)+{yb6~#+9U~}wOr-eV_Ps@O^K@e1WH+u$lzY%(g9rUcSe%)JUl@4 z(-bsycT?L=oI0sSU&FEbOU)iuQzbnRt9z`re24i&+_<TWEHS!n`ODd7C;mB#dB+a5yuQs)^gz$QTD1S1?exi@-@%!8V9z5B5Tu%6 z`~~s;~+mRGQZ9}FXTIE@>WfIyS7ss z4CR_l;WjmBi~;X?evTY#O|+)k!FsP9*qN)SdwESu=D38O`HNn{;J(fdCY-vw6HGX< zr~N=p{)^M(Ze|<1sHcW4KlZ+y)Tdw{T`iJ9Sy~0Jjj4rj7a|-8wiCz}xolv-MT1kq zwerYG&=CEzy$Gt+eu3T~@;2%CKPF!0J$T)Sse(T(^Pq*EPG}1gV_fZbi!&mp_v-0# zlO!op35rs!I@%0&d-e{IymA5JQX$S9iJqJ#AG{$;>p?2$i_En*Uz6qoMKp2ARTn2$ z&YE>>csRz~*RApn6fB^pOZ!(j)eaE%G?>f%lvn94nv|AaW;^o^JJBREHi%I3su?S* zMFt+OC?NAP)M3>Ks+@vqI@N}FWXEf2&y9_e8yu3qIUU1el^BP_6H_X2e{T@ih_C^CyX#7 zH;lnGAk(c@p@5|6Bv$6n&;vglyJNN-HTN=TY5y|$F*AU#M{>E>$lpuMiNg9WrNb(W zip&nOI74WGR3b8}WNn}XU<`=Fk~#qhi861ubnFLfbG~<=_-HOpff$=uDG(T*sgu=} zX1D4|Z&u$OLYQ>0v&KzYX452`XyHq}o38vLu`UGy#18?|d>8`f<q8FS^E z^@1%I6lF5jl>=xc6!4OTsdF|Yqk6Yg;*g3A<|y-0pV(p%2wjfLGPcdYWNPfPtI4`> z+vd%!FomjXT(PVHo<#(9*(ti}jU)jrI}R?3PQeJ3VJG2i`3dWf!Dtdf5|J`&=?@zV z6h9Gs0B;#D0LH!Q47EFZ3?&9PTJ2eIMJd(G?jd{zLNt8P=H(3yJe^kP^GJxMN3PK( znrW55*(DMSM*oA^+yd&=N{}R=W&0%Qhc=}E5Y{-fcp_oxmZfA}Ur{dLa|-BXJ5yGE zp+w7Ne2HaeQDNuz@GZ0}IyW*WLT10-v3+AB3cdOlFKK?2DWC#Ko!o~^dcqen_vA+N zmosnBdglGmPm9gB>Rm&2vwh~VpfMqFh>U;^gUoPxMyS{G1r95DNTZMF^tvdltqTzP zKd;?h=)#ORT^#gqMt`fOY=hW`VU7)T5W8v(k*=<4$cLqz^p%Nw+|5QkeMn!W$H20) zk&lZAV{Ml46p`ZN!H3t?xS5;Ewgo}H&L9d7>&f$shiuu9{kz2*&L1PgfrKIjyjh5 zayL-!p{x)EmrWx_%Op@aOCg6rdL9Pp`z*n=3+)oU&@y{v(AKtemQ89Bnx-v+j;RA~ znqQCYX3V?nu-+)Vm4sDCd3A(89)#gi6$#I-8swd|O*>)zCsOjTu9$SKROyQ}ho^yR z8J*x*1U1}M(0Fyjc|cR)YGi>3CJ19c&|Q=LjHKvD7>Z_E&@QK_hx7Sc$feA-b??1* z1W-lAX6$rriaShr_S=>D{B9JG1vxKD)zUDs zc!s^*Hhs|u^ZTfwU6zoxnXbI@Z0r29`yB)QcAkhwHLPi$f8h#umr-gp@0nJoQVRz* z8TNTLEl{|56kssLTCvdXvI{k>Qn%lyR6sNJeI`!;x^r!~^3TW*L)4HG9u;CAeCw68 zc6jeBBPc;>`ZpC$6yUxu>0m;XLCM2SjmBs!tPkoV$=LmB|9q#xz39FSvoD?2({;4a zWC8-bZD{Z_N`Bq%6G9L|>3ZgHF0IN61tOyXhE#HKcPXo(g-SztplA@u6)-14JM+hC zqy~Jb7Ir#}9H?PPq}NQ@Fl7s%`OZkFaastiSkByHJkH~@`0g07t14g2=~_>G%XoeP ze-9rv)+*R8VNH8C4UhrxXxSb;VbI+a3K$9}) z1$`oOy+Fu2m=U|&5ZXizo6z>c3-{z;pwQ`~Bmz?-3>1v7yh6SFGReREGX3()Tsfjn z+6y33N-N&J>%f7h65nM`WO73Cc$2rq^daPH)OUm~z1E{fSA3#=st!ER-qpK|q|vNuC8q1j9eB zDbky9eb{+WvgDbrSx>=q^f&QKuDB>BP$}xV&N*^!H`%5z zMRgi|qH=w+#t407AUg1AP|WAkO4I!x0>ATAJFKw#^gRGKt6s9>y~hAB?J@mb2RPJy z-?MvRC9ofdkq2M6GPs~TxN|3>Q?WN!bA5&HRC8r;cj0bTl=#sit)rU!RRv`!e2gKS zVs9yx&h5Hk8Y_lcq&h0E?YjMTQ!4eNWRm$c%H*Qv7Kvsh>N=gpz>`S8+s-4WRZeT2 z6<%(ioH>~n=o{VWEaj?K^FPVSf&C`1Tt+*eq$waw>iK}Tk!Z4do1R#ndydNr}RqL2v9Gy$EVYnM)#9OF+HBBc_!`_-F2f`490Yp$KmQyw#J?s;e3Tjjwza#~*?9 zAL}dO6@WDr*ZCdCl2rFStU7wn)}|P+^T(qJJ6v8&y-{hKj>2q|5##s0<#OelLSYm3 z(cpC>Ims+`p~E1#3EH3c`?f>nLrkPQCAR^N$Xo+3QQ)ugd5#F~O5P^!imUZjfV3+woVFpt4G10T1xe<1da{T_lVY(-WTzIOQC zZn*nUU5jh!#9fT3NpV+0${0NtT0nQeej$}>NU9KPV(FvwujpioKULmINAk11m=v>CV|Jl~SWY@&TllTgcZ&##YNqX25J&>$kj=KaCdY6+o479mBs z8rWIR15mV$ciXG={hh{dghg`LP30X>>phZ3K`#3YW*rQx8$aMXo2i>pSG@DiI~SxY zw*uy=8!%6?1bk+c+TyqnNUrj;w==3qRjm?h4(fQqxO$v58rRt151OggwVC;cFcsP3NkP?hJ=qU+?mpaJ&%LaxJG?9Cu z%Ln{^;o^WPYib7Vtw&<9)u0@~lnBkEB6Z+bw%M*}Z_{`*9YONv$|n?wmVx7aRH{ii z3t%V?i-Zu_*J~RC15qbHp0E#ybJZ}gOf>vpW{6j()_i}uw!^1y0SMRVI?&Q%eiP1-%OtKJq5DVh|)82PZ-aZAE9*eJA18p=BZ?w$;ME!9IU=|K@V12A1dKEO&HF8q+`F!sz{ zFvB6MS32j9%(7Z%jm&e33`U`2#-h3X2J+flio|-az$9=j68KduZQ3T_rCg`X?W`9W z1)jA+kEX3%Td#wsky3WA^$AS^=K^6s-QKQi)&+yd6|wbx_?ml>C;+pNj^NgZ zmtf-X%ooz?S!4#JO>l?1TPf7q!M9OAHh0OM;j?SLpVH9GiW{tJ;S@0dwVKXFAgf^94E1F(+y)jpNHp?-NIPb=^Y znLt;R2CfVcPRt@oX0?DaT3zL;Kfr7kX#12ZEA#awVK^!1&buVcwzODNm!s9n^zV}U zM`>;N=WT{$$`ZC@(#y^T)E|$QnLz@PFI-IvM7$7RETkW9|2B6a?Y05JOv6)m=-)p2 z)T+U5iCz#ZIx_no2}UB#my-G`x_0l|83c43uWjAt^=%hxAp#mSA@<1J&kouq-rlJ8 zg|LgMP|VG%#!^H(RtEtc%&fX5A)rHRZTf0E>!WL7=bZ^WXoJOGTJUQ6~c>yMToKlJc*Mxo2E2E%!a zdp6vEUEvE<9m||L$I^-s`D!~$rSk(zH+3ocu1S;Q-UUHk^KgKuy~9SOc?Q+-KXPXM z(+TRMcjGIVRnp)x4_{U1o@b6yvzXVDS6+8Tf)9C6^t_ADj}@8}CV>}7V3*Vjt@0+h z{rLh|NghJ|2tx{5@+2xW%bOHt>CFMYNzyE})NZghC#Y>2YbXq4kE49~(1hTOdk5AC z`LM3q3rieKm9SrrKWp}p7^|rWZyY301KqLC9(dgZmTruw`mRq=Pi|!Xxt{rI^&M1m zLs$?Q4okItt>j*btu^lOobkSy)}9b}^s* z{`asBRq%PW<*b^p236e*#0{`*6WkEo?3Hb@^J-Wbl{=XHgvU zrKzs~5(UmP%!3Y7JZkV763K`r1Y1L);5lYdr&7$#$zqD!xqEl))AvD@=Oi8=R!gFQ zBxs!E-v=aU4o}D_5d|TzEQPXnE!&-g4}p)C+wWEI4SZM(H24C-FPp&O!=|Aq)*85k zxC`2$)vQ>+$DU9l#CXKzfEI3bzR!bychcFq1kF9{=tQt7CDsF9LrZu?xdZTbmeVl2 zeU=^If-L{KGSAYzxCcxtgqh)X!|i3EP%E@a#2TKA2P1j0M?vxU60i$Z2rXuTDj<_d z7MG+3kRZ`j-ov7AQ*ZA97MeM5Lz+6B-krHsZis4C+PGKc$QYHTB3KdSwr8_p=1=O_ zfR*G>KD{h?X+QSio%m;EIaQ?*Vqk74r@L*S% z2WL!&!F=p)#X~pY@v#0n5Y*slG|^X$ZrsR101z{BDT{FZ1?p(&kegj>beA*QR!yqR zT$Rm2?^CYR=7283_jilMg39685AL2lEt1u_{IwUcZ)-;4-j%;-cHw4T?Fa!ObTFwu{5-s!T z_Dtq5SV6{Q(@*AzgIZp>iAZ~TQn6Cvr;kw45;IijCRZ~L7Rfnfu}an9B~pPAteu&Q z;_}uuzE#ptFD0uI(4kao>V!rC>|TLE#?$L~R&c?nsb9*$gC^%no2hFPr>8Jh`Z)73 z(KA2pzF}m9WWOP?f9OH25txB;BBA*QS{BT3ffcl^)bBgMd<&wOl-LG96{XM41~^o2 zANR?d80Zm44FPT#l7xwC$KHUooj8_i)J{IvW8tDgpmwrDUw^$Qo891NpY_=29wLht}?Mj_0=vLVxTBRXzTx0Ck>UA+VdcM<- z(|1oOJA!cJinaV{76iIokkLXjeC$JW#T6_9C_8AiIynue4OD(T;}bO+0EKXm*E*$Y z*dXkJVRnH{QI;kNzsF!$>r++3AlIgffWVM|O+Tt{IkSJz@y$0Qx!n4Wqa{W9Ko_;> zZ-09ui85Luu}P(D)QbdquUI7E@kKlyxg6L^+Ky(B{uDK~XzG}&qS0T*;}x=sxqjZ$ zPyh6%>v8Pe5RTS_bjwlVD-7YE&!`OsfWYu&#{}P_IPnm zR}+;9<2xX)PNd#JX^v$JfXuF8){$%0t$QJzz5|pSwvgG(J+rVi=tVMsA9~zEZToReUPVpa&$QoieLT+mI(p>%bD%S$tPAegdsY{@T;=EmHLQUbkaMCY1yf{9YhbUki8R~B;AYOX^N#E33juc!mJq*GE9cl;8pw)p5XQtR^S115~o!LXK3$%<3o108SiZNo-rfVet@3;y_Ir+`qrJCe4NJCUOR}xKEXk5($t!mDaQ5D0 z5J(__4E6{sgcU{@Erk{+dzKA_QYfW`LZK}!6eyz2ACf-StSu;(yUOB5@mh}W+@9Z{2D$j<}(rjOlC7t zrC%$PH?`SD*9CcMVdu(ud;P6@E-dg>;=*~m4*5M>4qRB|tAsu0@7;KpYyGKdMowq< zZ);KKVt4GKq5Zn;#>(eJ07+y|&q?mlHDP(_AdqX?4T(4mS|w7qYt2O?z%8vR=S-`% zan@|VPAzQ|3qa+CfI?cT6bX1@FlW%Q>NFeM227Ml zA@r#=@HLTy5zyimDe&+JoB@NOrEH+YidBt{Tv!Pt2NGW_?r0s!sih97JXQ|4TBr4d zm9i$OERg9VWoOzil{U*&iIT^w$**yvHgw}$7)HQsR_gRh;x75d4z|_8SF9A>xjLp8_j~7SB){>Y-~^4{tFfBvax? zX!>zKj5{##@yHzhA1(%{eJ6GAZ?4EZFBZ4!VvWf#P?1>_ie@z+Yt=5PPAZdxQ;x8@ zaz9zeUbXa&f1r9&d+!VD$kHbU*xjL?I*^u3W^4d&s!U+*k+`sM~d*1CdcSiw}a6kga=jn zNj#0^~4s~%KDn`^rz;x#jgj$N7sP^~|6Cv|+nID&<*vx(&aj#ez0Q!sj5s&yTkZCR$Wgk+-^tFxsiw zig4*PoMbLDg7?rO45Pp{!^Nc4j51OqA4JJ78A^Vs5dhds87hA(QkPdY%_aX}mBZ!d z``O#&fc7m@4Q#`kAS5Sdo04I4W1v zDh2nAr_K{h1|f)1hM?Cpe^SNdxL+JQPW6jc4V)_aEvaW@>Te<^wpfenB>SWlnD9_wWtGUQ#+0T_T;D-AyrUu0-C& z>HlmyOt3rRfFNRD{^E;=9&#p=<&45e=V@I%-KZ&uQBT4MRpJ`9LVl<;=L{NScR=k1 z3418!%CEMDcobWAs=9?NytzMxCJ>7Rd=U|N8*?$p`EYYJ|2x zhK92O$UKJ=Rn=Ll??pIIdfi-HUH6)`@|>skZ!~k0lNB;fHdKqg|GNdZ35W=b1@d80 z3S{wqxI}1^*k8T#&Mmh%;_;uLa>0o?brVw%IEZRc-Ky!58uSlz>pbFKQ8V}*nBBpi zF$hUQtqw)ZQ?xakGl(){aDRhbCk4)ygvC-7?Sgmpg)Mhz%(Mk>`XC*XZ zDj}Qa1tT*^9M2XKHX)RoLi(^Ejy{fNP4;Ek?|6fw&GELaeKu z7OdN0*{*7h@WP={`<5b=WAM0_I#OAkLv+GL(6^TToIZ1G&p$v0VzgZT>A=9ULEqgM z0d7Y)de&UB#JXTZ6zqF^(;`RZ=}8kR9~25(^Z6kADSKu5m&rFW)U>nQ&Qy=bO~(rJ5?v%r`4Z6am_V>0>p{~Pl&9th$U zfgJ?@f~K-=9j@%Gwsw3lGxxGthmZi2X?av>XB{2); zU0*st;_QojG6X1UP~dw!lX(HhZTRFBHsqyjd3JfW`f@qd@FD~?w8a!(GusA4bLOE% zg3@S{#4c~$FmiePgprZZebd>0I^vJUA7ZZo?(vtQo{#3@7d5m3Is!BqW#~QCOJvxC z`rb@^GHeY)94?}f^DzD9Flp6{1RL{_ER8h`tO0Q&&s>BAvW&1G_y~UU&B9`FBj|7_ z3TGv#^^ZK#Ro3f+b-f2a4n#`KkxI1qwMo{o{P`A|mFA zcpENR7;OZWM^z#LlUjp=MxRI4lwNTSpitgpzhW;VznwYryy??3pa=K29+v8X6XN0o z`KDq#?BkaLz|whmVR*#x1>%dZDzW3gtGhoQnsBx?7W*%ox{+$F{4Rmmjm6Y10D&9I z<&GQQ#PN!Kl&Zw;>aj)|6Y{t$PR{8vB}`Fcsv;s9_A}rV+UZ`hKB_2R+(muaU0K^j zS@V!VpK)wxsO>1!VS53Ge>(M>Mr$943=bx)?p~AC(%;rg+JMke)*R4x1Cbxz7MqO8GH=-)tpAc1SWrLXTm^7 z#HB;KWy^uFPGV(RwqNe>Dg2tCuH%qj=2ds9eC*n$RY6btiZ(LRYzEc}pFW*yY|(W1 z)d6T7HzUq*ts8hXx}n4JyWCmqLei~IZk*c){CCEoCE>{8K?7K8>)ee9{*6L6`FSp& zmVng?a@J~ieCl!oIR7KnEvs(>j8RiuC_QzIx}{}GMq2|QaaSG#XYSC#=rmY)uC6-) zz8*J!6A0j1DI78n5l<+hkWFOHtD^xU$(L)WEkU*GQA>~C)DEmVwu zytd$>_m1sfM?F*lW|*NNvPe5KF0lwx^YkaC94odZ_&Q;9<0$)_RMM_(*L5}#jYh1O z$(#xz6e-POl~^nyu1=NBBBI_&U9QzdGUGd1N1iTX}4u`t#Ysb;S9_CKKJL$1?*Q;pnHo&WS6=Q z3_PG|%62Hl7NM*)bTV!1*xcDZquJRhgNzFDFUV>U3c^@b_CbI1$Uq}pPn_YaV}2$A z_z5MTG*I`g{~k{T*9kon+9kYN^#>$Q9Jmy=lxtex4jaZLXKHa>RhFh|*lXy&2+F~& z0SV;jRnwHc2h(H@Hn7te&`GHiD+fWwBEi1Eeu}z##Es4ANU3xMaB;i^o-clAI_W={ zK2m1v>1BO9kVEgD6EWXkl4yBG5Zjc=_(akyr`1h1K_hUxH^V6WOjH~?RjUISAGFh` zBdKW__L1CAlTRd*Npk&{{!c&sKr9oeL~*fJI6XEy->HNy5+iL672lYkL?-x`pWIt!-|7{Ew;R3%x0y}X_QxokN=aHGp5M_*NFWTBAs2gKf9$~rW90Q)wNP>gUL_eU{y()5WwV zZSo%Wi`U1%@FiDpYyJfSu1c`GQrP)7^b-KF>ZK(R-Pg zu%$1pF!3`$rLi}w1^!o=*)+YVYEc3TO7p{BL-+300<&br_JqpiZ(qCE7O*W`3kL+m zuvV4JJKUqI!|Kw7UDO%bQ_`^tp+FkVu70y#(;0eG z0w!#$ z?WU=GgGkzowF;Qk#t@oY!YL*fIvbNx>iS`;A1JI#ab~5yYW0J8GA@{fT35O1q;7?g zUxdDfV-VIPBX@#QJ8;#(V}yLeiuE{ppF>(pq9~{>{1VSB>7fUBl^4(;fm-~5yPtTS@0dnk2da#S$sy3z#Is*(H{q^gw$thKg zf+lS*+CkYK`MmFj+^f#VH!-D~0u1Xg6rtxr8T!BP*m#2hLuKrPVs=?iq3gb8qBVhc z3-e7piTJ0Ep@|?icXP3L8mdYTUJbQ{j_|&VF75$ckirG$p3Ju5Vi84eFO|m!!%K## zb`!0R$#n`TaKcGwsZukR8)N5nvcIIB*H{WBy{R{gqwG3;Jb6SPS~hF~o)ukj_Rrvl zPGj%_$AD92&*-)jf2zh0onqjP-q z4+2so_N$eOC$!SIU>3nP6vj!_+Mv#rz!R~)xAzp}?J8Z|MO^5e9($Z6dG?7d08H!e zCBHApbeirCN-lIKMIuHSYCmcJnHeJCr}v(^A*e6TY=!v^->kCn#FD183Gl9J;lS#g z^xb!Fy%nm2HIS-F2RRuK;ZePrE%WAu9_i>}?}XW{Cppz{xf?=JC=t`?phP8M2+T@T zj6{A*%Rojg0=>!dJpXP{e($z`2*Bx{HQQL#Bf4>^~AC+Ku4fS4Q}EL>bLVHn|8SrfvroRBVXm4PWp z84p(iz_SR!B>Vt~9HzEDUi;(|evix(ZsM!eLR-7zf`YR9q-Cg+z4(OGdRchski;Sy zSr(N8L)d)wM@lTlpIDHn)rnSG23&}M2EDrH@m18~hx-VSU$ok1dw|g2(BYNdaMf!V zvX*lyyP(KxWY7KXyCpq6CxkB=RQ8;kqE5*Zg=E2K1D83HkQnwDE$;?1x(spQvtZlVH?`O7(NG8?dq^*y$zM*3bt5>Sq`JgShU3i z7}mX(esLdpV9D#e#k2=q1>SOutngzR!U+Vl>{cdcZz(fsCBJX$?6kV_1%3Y5$&0DqS6WCK zy2~5LYiv7{ICSf5GV`X(QY}a!H0MJYNZH69zP2dQ0AD2~5!eGT7j{^s@V2f6)?{Jx zT=V_i3IiBsplecg@7dIf1Dna4O44iJEC5PRkbL&`tU0!A!+aRjFo>F#ZQT*89PEBG zbLJSWjZuRAPjOT@_|3(( zldIu4GQ~|R!yZk#CMom9%G-)B~MJB$T)$qJj%1>L~MYVJ@1P5x@R6=|~Oz((wDIH%!I!*vZmoZ1h> zO7rpE+3^wstSg%IYIoKE3tNvDxIokeWw&bC5=#&`=fasTLCXZ}C>CpJ;ZWNclu;8k zkx8E$uXu1~4xZITpE!1K5%qYbKw@wmE_nTl+;b99yCz`l^ue(Mx2A$7uF5JA%J~wJ zKWOnOUnLgyuQnW%-a-vj9yq_C^eTWen>30fLAguSEj4Hb4|_v#l}ayn>!cQikWtzI zdMT7kYX@GL^ql^LeJu)zQ$rmZk{IyJ5)zXbGU=Q25`ME0n3U*bTP=2gp zfwP=fKM9B$&Z*wW`j%pJJ;kzdP5JsPN|m>K+%ir*FtD;*QOW~5jM&cFd4U6g{*1fk z_32zg&6UOLq4{}KOXc@>lNsz?S)|mzzgWBk@=IkdM1(v?7{m(Luez<8M@_#rPgG6Q%0`8;JWPwD9)CEnYfT#feW^K3@f46DsHyRs_#Qfl*?G!tq2 z-rb3dyY_5tmskX?YqzqW1Oi*_eMJja8C-KbgN#wuqHL6$J+a;hlgEU-3X`AOY^-+e z6BAVaSRbg@UMANL>Hv8zT7%~>upt=15l*&LO0BLOAjxM}q)d)Y90HqCSH`O7?Slg#9=6wEmV(uTLgJ0QvgW(xuTC zcVfJ=+$x8n1A7L`;_c^xHftEM!P(>6lTXeBFx&VF07w%tEB)I8#F>w=vZPBTUg8HK~z z=p0&{kXxDbis??!&%VeAcA7q5RyY|>X-en!c9P-W>Fn1e^L$8z_b4S|* zTD`D!-UwU3Lj@#IXL;9dPbr2$JgSmdl_ZW=Jonvq-$U8#)?DsSnM{;D#p6}`+dy^1 z=Z{-WA)ivHg%N=!F9lVbj>;(pMIdbHZ5gz~A@c&iz+=Z{hghpgLoE}hxR%2N{P(ao z;MKq&0gXRauHdCsr?)WPo`40)DUe>`gvWT}aa+whc#e+(Ys(i!R-ZM+;)&7ArYU;P zPLcuC$SB~V1t_NSuMc4+_;1t+Mb?myLIZ-Qvx%gzzVVwu6sx{a3?9jeEeXY8)XFjdvkXoh-Q% zs7~@ZJ;mcysZOl3M*dDIu70Zv)KHJ3I*}sPNdc%%WTw)z5=V6cQgYy1>S<8Dl!8N# zsQ-j?9IGG&-O+H?e;1=TPg1)oT#bN>lP8K#6D_3UcW<0dt#&=?Whp!XQ_C`l)Q3g^ zR;zk@PY2Qy<-p-Ah>)FHIs1I9++7omUh8h#vNHy{1kn@MoZYI5ciZ_Iu`L^w^@&<% zp1Xm9&eDq0`&^5fWjeZ*R)6G|86+-|;qn+F`dy}UMCDROQsO}C;(69i%bdmR z4=Ev=Dv&RW5``jQr{#>UNg%BfNo<$tx|{N@9_z^kvZ?cS;DFlQB2o$gdnBSoiiZvM zLQ*TX3KhZhqkY?EB{d?0o>6oZ7m;03rC+H~`CAkQze=VF5}w?iF(^#k>|RKW{7Mf@ z6|)Zobg>AK-^CNuBUv^NVx4(|2~?;C7^?Wjso#S8!$_Teu6Me4EMRY~g`&`Av#fV$Uw# zd&P6#e%qB+lwwd=4rNG-C8h8vlB6pm&2&P@C=3Amn<40zd9(u+IW_?|luCP2H_lQH z!W`nK-QVTetCIA|?9dEg_J?xLe|ma+S5YgO!5u&)D0D0jxOAYZs!N^8^zZP%%q8Es zJkYH6`&4b_{&X48gFChQVso#H%OcwWasTM|`aQHjSXxD?QNZ=?#B&Re@p1|Nd%U(> z4HT-L4wH+Cj4wV>7X;HZ!N>tVlq3Ct_uoIe#8GyPQg2k+NO53*JrP3<8F`A$Ex^Vg zJnqG*k(;}^2nYkQkF9v@vDf92R{M!p%@Jrs(=OU*`q;MiykW6PFzdoi&eoiwtrdXX z0+&n5GD)INv!_xIX82;BPRD~WE*xqyO9d#6ViPmjH`1s5i*D~^-|qaW-#@FZt?f0k zsPZx~r${pSJf)m>>NK6yE>iWZD>o$;WRxPnfAz2H2F7GtJ_F>$DxR*rQ_o&IYt}hb z^adr&j)-kI-{fk9OrR>GGcbh$BnGwvODM}Y1n()3vVrx;bAcJi>ftHmN`N&Yms<9yKO|@i8)lnw6r`)-(pWO%h zL|RdbQTUG@J^Bu2+dAlpKDhQr_rc(=Kq8lj^(v{~M1+j71(4@_u|jZlj%UoIf!iVy z(UJ^MCw02880l=YDnC8eU{od-f*yxTP#8_9?oEijnRzLpRW@yPnw_74nUrpUg+1`` z$MdtgdckJs@-z3_?rqzhMz)&Wy7U&CQmQNi8$9G$N6RpwACEHwcvr#7j1; z9=-I0W+)6hmhPiAiWc2*MM?nt(2?_x?(F65egED#qtT0UPyh40tax^BJbSUn z$Dr`orBmy>U&B~vfmR&{p`fGz_9p}a)z3p+g@LfB6{;$z=!ApXC>n}Lo?Wmvmoyv& z>t6Gy^(?Ip4q>1qg6VN>N4~!#g3%CH4ffRIZ&K5*#!G}34c}Msj`a;S;0B`0pf%%! zL7WY$5(d$iM%A45;YmSFvoI`jiG0z7*zV9ao25|ohKVejRB06JjRHRjx>lVKWDMfa z#^nP+@6I#27`?b_|8}y*cKSkzNx19`=f|Ozx$YKYJj^}^YR$Ky8Dc4V|JdHuoV50p z1Vn;Y4h_vr`%gM0%IKN!$(y#O!jCC27szcTh0&y> zexTKaGzLv1X8^#CS>3U|DZFjNES+2o19(6vN5Kf0BsFWf#%N0h6tJh#mSDl)9qLkp z5`-dJSUP&P9oYIk*Q__US|Tc^tl2}#>~9i3t5_iBrMklG4z@xsw&`2#BC$;*GCP)9 zyd^-SHj1R~wobMyWo(hTBnque#N*fin;qoGEQ(-gxm4??po>{e8taa|%0G`?+-j?B zGJLakUFvQfU5E#F4z3f<^Vj>g^-ktgeP&cLL6ZG)86=9Zr<5fs6jx3l^Q{K?3|goK zm0JnZ2XBX=YpVd!arVnJ^y9LCou*eFTmIdm>riTNa^DDIpM&p>YF7nUfLoz&$?fc1AuOqYTBfHnv~F#wRC%Hx z&@@?i8VzG_6j6`&$Sv|DjM7&&qEOa%-;Gw)-kz(ZNn&W|`Jz-ymuWQ{dh90PJINF4cBs$ z_lKbgaUZ$!@y8)J+QeQyGakPn9{+}{0=_G#pnlwG3Q5DV4)%{(iQNG*Q$m|ncsQlc z*+65~mZIj#B(2sB=MC`n;^N+whF>?XJY$;FC>%L^jYAAR)r&qg()d6(UkpTUd>~l@ zoQTLQW2_d&ViSMH{--hXyEJ(+0bJLiIQwAa+jri1ha9;(+Q+Ui>SMY_7+(9^>(TwE zhmkofxNTeT6ID~m#ON49`VW+P`py{!px#jRuIX-x%}oQ)TA}G%nH1D!0kCA3ule$9!rHkhz@$V{jK&&vq?!<xZ$OoE&-Q3E#Cb18XNG)Q3h49{ZoQ-bd*A``(tY>w?!J2{+O##! zSVW0+2V0uTIjvWd={rB>+!$jl;`pjFTU>ov_*}Mct<$&7Z*44>ZtpXc)u6+ezn?uq zUcPVpcFNbWalXzobwz=zeHN}GtRYi#YPhCo z!s{m6gRwq@C=;~b@ci2Ok0AJW8=$L@^<(JD+&8GoU;!$fB}8!Zn@HSPCO5JU#EPt{ zRk${x*}pcUaf`ZzuHzgS^+>8REluS^A@6}7|Ms^*_7^`(CRZgA?f;?~E8Mvz11djZ zX7|jbX}J0ssZLttAQ!KBt}5XWaDbrm!4pvrqbNR}oA^Yn1phsG4JNX@dR33ipq5r{ z+zG&{GGvqwD`w7ztFslr3TJ=;{0Ynf|JUZD0mNv=z%2+~9?pDu;B4SD;keI_#|=z9?5#4V z{2#*J>W_hD?|Asj)k!g^MX<>CgB$UG3DlU3_d%>ALt>e3T-En+x~EKj&32p$NzPOHC!an0+t0 zYtN2OV2GtNmmkhwEl()kv9_#QGee_*cA~@q`3+wz&CZxb42EEv0t5=huC}Pj*^`2a zUy&k|z0GTls$DX-C*8XXNNQ!x7mOTM+Y{{y$Y^CP(1bhy+!{#wMH6L9V_e;#=4`=F zq10RNCm>O89R@u35Ffq=1Zum<0Q&${6PKz|^&7cD z>z#le%Z1zXI~xlL*xkZydr}f;CA!)Lg0aS03*42`K=!OPQ0%c`=OXuLqQSF zOhPP(ONifj+_GV8$SqO5nbe14pJ9~rigUaproO({((-sP>W}Y9%hXgirP!U&w~4!i zt-I2OU_h3Y`Z|k&$bpM4=^<4Nj$vPoe;ryp{1UN6MZad6`!lWb3YMR3*NfzU*BKv>Ymd}6{FqdSKP zWL!=p3eqA3a1Bu9P{okU732W`=({Z`N8z%qAAR&Nkcq~ALtR?gvf;}w9{U;TD=NZG z0s{bJIwZgPGbqk~n4cG(6PcYOijTixU#9x|0Bo_v0c7TSP-wM~GxOxkv(7loUYDnS z`)FkLA7rDqrTM_mpSZrz!~T?g<)7Reok_FTrO8{6JhZ}K$)mKcW_)oXC9s*Z8zlmXi~F#XiZHZ>$uHBG36F4Y1~JAjs|=a4h6 z)o0YI3s63)eXag};yHL-F#yH#&uqFp_AuE~Dt&=~*T9POgK^I_;^e%yvRi>Tu z7WuHGQ#k98&%V$v0Lwaun1UUvMr|S6{MGCXr)Q?INg0eOoR(xz=~4#c8+`Vqo$$oY zQ8MVaFY*Zt!uHu~oTfPU<(RU`0umPR#KZ=_eQ7&m{tdK6=5)#NdDmB;r}B8y(#}ykU(Iiv&i*L# ztJJAqz|r-9jQR^)r=~6ok1=Uzk^xx&=3_G$4_MB6W&qcnvz`c}#H)`61(&==Kgan! zF3+pFRLqTWH>TJfZa)p<`-%RRgF5SgTEf#bVDRb(*{di;7rQ2T@H6&JoP{_6h1Z5? z(b%`tr!uKezwG=uFik(aZ=w1gO?lgNMxzwWK6yZ=!$u1M()Z`@H8)*KK~}JU62?i2R3NJT;J=*|9&sUiJw!Pic;*fU!s6p_TcKZUD77 zmgwD@U{K=)!cVUJ@(X~d9&ak#4ONOiB&uDCo$m2SwQewK>&h7m_!tcanqQ3dU?HcP ziQ3}fb74dc1De`TnIa+`Mj`BVg~CqvqO}ou`I0oSv7;mnGTAz)t19c}<9G$kVg9>V z+*dBYN2v;nvkP;h-DE|$u{)`WYEs$RI0Mgq4ru~kW|d1qDPtzEGAL8aNEn!9L%r@ zq0t14pi;(@u(<;>tXvuu)aw8R%!nC2AB>Rg*mLwlv}N4mp^7&yWhd9Dn$4w8CpVmq zV~Mz=82r}bK0Jc}i>L>Bbd-yoYsDKdzmvdtVW>!q_ZBCjI(QBoX*}O_6n`>oMy>Wg z35HUK2AxYg#@;1&V0nVQA2qOgX~`H&rhqczlA=K6v>=GlY?t%yeeAKvzCxMnOdQ9s_(BnCk>h!&k`B$?J|8KXGZ zv9~DbIyo#*TGDZi60~G#OY)}~_DE_*@?Rg)8TM%6jC1xzIXd%`_nZ>F((NuaHMKn8 z{u4+!LQB#J%+i1axxu1O=xn<5X^Rg#K|{-T+lD6(wJ%*VuLWW?*U0RdEz|w}6D`@a z3DsQe1J1mtQPHYslY z0iVM_3?KNlNwGRU1#bf9K9AeAXuXJmdpO1_lJZy{}TD z%C{CQ+dYCPtIv?Af>MelevwWb7pnM`k5Z||r=B|J9CBq*s#d2!H(g-s5XpbiuJ=ni z#J&o!6;(S~iEDv#>T+Ok4zigL2YiAFC_uVf$ zPMCMh$Z@6EafonzBY-}fx+JA9!*tFmQf&_6YX~%O#P3e}SMBb#Z3`K4vXg z4Fsm{hJ=S(!a4# zgAK11A&y_y0!}7hPGB0D{F03v?$WhMy2ajjt83kk7-Srg?W=kNzI~Szc^XmS;2w3% zx^P2;2c`4y%GvHfahh3WQhUrYyILgFxFm9eNGUSqpVp=ec4?!~-jmVo@95ap;kNaa zfOHs|@uSqvURGIP|A|L`W2tmX;`*7={=->{O^%K#MHZDLuZ=RHMpF334pxi^w?w5(Y-2l_tTASWay^6pu)bnf9Ez0fK#Pn+*O zC16i$TNGaZVCc}fbLSFaA4nOmPyoXIN{hh$Iu8VJ<)-} z%5er7%MtLv)5-M?aTCC#An*{vB3OE`-|)n0egfYFPpefg>H&H+TY-GDX7_P}rX2Ru zP<^bK!{R8ryGOdZj&ybX07IYlCOE**#FnssA5k{Svl7$0)a)GV&FIOO?DPV!bzPDM z78;|@J;$Uo%_avN&RI^gJ{sDkb_^5^N<(oF25Irg!-#qOn(31MLm3(*pDs(o?qB{q z`vE4jB>EqN8JKINc1-xl$qGO!D6PX};iZcffldtjZ_38#q!7+auWsWT#GO)8*rPNF zfjU=vPAimmMD3tsac}@6AXhXhL*|k>tcRP>0j29l>844Bzh1hoV&AGv6kMEw280VZ z;QeI2)X6xwW=v^n)gLtFT>SEKU*8*%2zf3R`^Vtmvz(?W$WBsgD%Sv0$9E(2duK8&IehCxniGUHbe&h9T(J6FN_E9IAKr)9|IE)9Iwf*srEcHgg|0b zcY0KmEBJCDS{Sp6?Y+JGTUKsK$fjMJp%NvjQP9sfG!_caAiG36+QZXxKj>lK5|9-8 zJUlKS_prloTLOz6UfV+U0Hv#Z(ozIIJ`WFSKb=15JMqA352F>CGHHwh!j%=!+438T zAkjlJYJFI((?nVQZz)0N1u^2g;f7b(ck}tp-QAtg1@h^`+IDS}761d^h4It(@9bn$ zN`BYjBfadMZN`uW+GSFk9lT2w2wBDKPvl>2D5TaiUlhdMgQ)%gDX_v!7#FensM@;Y zD?yXXg2xA48mQlZ8~UG%JDf((i9J0BT2^d|p=3Q&cOZEB5LFWh<*U5@M1OxKnS2}Y zzl=hZ=F4c7!MMQ6*Xu=1cG3Mr3T95qK8SE619_lpAk-h~Pf3sRj_xc96#}c%Dv*0X z1cDMbtA#GFld;<+_6Ml@>s1;V4BHhQFyr~hkS|$*?(^Q;*)Q)UZ^HAZS;dyJL(Kj> ze9E4apjIQJGl#G2Uf9twx4pgXEzd(|b8plPX;^;RW`LeiGNTmOBb%*3c|ZYmhgK+4 z-ZF0WtPq1$4{o)=*2gh1A!KL+I4HQ1oTcNgBs3+agjrEdH75q$SV(;#A;!Bn#g@Sq z;eAGr&jkhs_+jH|!(<{aOr56;vXD9XyyO1+N%`@|f6yb9D|~iZ#^@XZsq?nmK4ky& z$3Nb9Bjg8guQ%rNJ0gdM6I{FY-1Y0v`{zHcvDhY$z0^pF_?C8B$TRBA^x;#VX*{Y#zIS`d2s{zH97l15oSoWzAsuWVAc+cmgO^UQ0ZF z1riGF*22I~&QUOv4IQ5bgTVrzjn(W&WKOG0&xrIQk>MF(bbUaq<+m)kjs4`$f1pgR zeiNhM89~nzL3KX{VcYa^2C!P@3IptC1{Y0j1d!J0Rd0hQ9L)p7ypzlz_c_kFp!t}* z)O^gzCNc-;^h9e^iFJHq^Z&sSktI~P^0JH)R=z7^VS<1x)#bH08Bq_u(qlk}Wg}WS3ZdNs`JA&_vZ7Pq- zr8wk<_}VM7v^OgZj04ojHo1icy|`6mG67+Z{n$OAu~9s3YwUouKn1uYpe+!SwE~K8 zyRbTfp#UyC;$Jx54e#rC7_J*Je!lA&H^#h^w`x2$!Ou?>fWyG8TG*~;g8z#E9QlC! zo^APgF1NJ8zKATKeV{<~`RDBGWIcQ3tc+#QDRfF)J-7H;W>{jzX%+dm->%H(PmEnT ztN>X7qDUCpWoc=^ea<<%4a3_8TSiCSJTadN?MoFm%t-4(da2ED(p(ytDM!|6x4YNO zRyqVkEapozBF11b3bgHFtHUl+!mNC60yvKT^l(>K`&I1UIy*;$!TUNo{Oq%0ttF)q z8W=SQZs{Xhmo`fN+6^={E9{zF6Z8tq)CXGkT$|B8|F#T!em<|K_%s7jZ#0bL4`u#9 zNpJjBRH)VRJMKTfJFUuy1js{AOJw4Bv0F_G<%ZsYqFy9d!X{$I@)$kHZK7rp2R)L7 z_e03Nhzq&5a58=uRW}j01>@yvQdkemkl+Xz`k~mz;R3iS2e%oXTENEC?os_a>VX`o zBVhig{ieAe69s1vie)6nY0wyo#V*s_lS)FBlDGBxR?-yqt@rsFd-D6%u~$u4Ij=Y9^L^~E_>I3H zRB29!j@|X2|12t(H-|2Osl0s&GS)BC(nGZ7Qc5D@i}gKPi;ix{u%92brK2!nw_hy8?G z6?$WX7TV-5L%9W^AIK0}Zvs?N z0T5_uio-zCRYf323Z}vmladB4JAo&}w1h(*K}SUQNM33ZM@8Bvkv$8073_T_==Tlq zjX%RC{zB^YiVty%RAXo7{-%*3J18FTyeoXej9%)7;h@Xhe7S;YWt1wiJUAM8Ec(93 z@AZ4hk0tt;My`z?zVmeULz5Yl>SQ*YEfWYyn0*I^=K)qrgZ590n>?p5MKv-gKpg4} zKP^>vsFdo?v9}VBBu@SS?kG;nKU=$_-{0~rLe{mA)62mM(D7yy{*49~*BH0bfd7UE zR^{=5AJ=;u_3Rge4vb$WZ7^nP-?P6}Ej$(c+$bW2YWo`b``;IpN}EFGmKAV$C>S(m z?;sJ-_T72x81y(mJ+|=TizNG(zx?iZpMAzY{o;$VphU}$@H9V6$V}39Mj`*%hqq;4 z%1M-}U<)YPSwX0Adyh;nur}Ekm4pJZ1%bOw;A(ZkI|Vw{=b!&HB{c~$0z*9#RE8|Q z=7^rwe0{iUD0?LPNMw5?9qo#aMkuGsk_V2-ykFHa(x}u%Vjm^hZctU3YiNW41dcKh z@u>@S5+I(D^SXRWpNE?L>l8G>WfqWZF!sQLLRZsZE=Q?;37p(`dm95mgtpX!KuCkfzsA^5atB7y zx%YH+Bpsexx3}aBq?j81%U=ld+;i-Ul)duj3!~8|^8#(NO@Lb5O)4I7wYKkyK@H9| zP>APpKhEb{-7;^$z*h=&{^nah_+UXSwxl(1Y8*%sTmwDjW|_C$#8)ypf6K#+#bM^# zMQ&g$RtTNV4uM11=(3B({==ork(uH_NSTefyJPID+3h*%e)d9&$6lT~j40YQRz_qN2~}ElDf=2QCs9zKo>4Xe>oF8ZV$rMF3&{`KHH|<_FNUn@ zsH%B-$slovHK~Gzr!(mI9nu!J*n&v{(W8XjnPq~Y;~ryHJc_(j7j4R2I!Cf*&qGxZ@es9JDWrfwEJ z)$pTMhz*At^Uiw}w-{8;Q2ZzuPe72XkMFa+MMI!C=R0 z1zIYK7Z(hB^{{a7t0xYRRQ*7Fj>B1l=fGQ2EOsy+f7o|YR**O$NX`j>FhU1UeIXP? zK@ye`m@MM3E@o7zheQ&D056p?m&iP$cC};49H_@Lv{EVz;15{oAi$jDS2GeDV4ehzL!2d|Od45n zQKxa*#bE+U2OV0dvWX;8p?|M;*31DrU|pL>m$vCLPdxE!c958}FMUZqLk8$A21UCu zZ3^kR!0T?nCeN4>J)`FQ1UPjB%4k)-LFD2_i&1-^6XlEn?CC^p6D=zXv+k-{aa6V9bPXnGFz`{84ET|Z)(+tgY3c`cYO2_S#ip}fB*aHoU&0+5SR~8 z3ZX=s(wH@r8YiFCfszKhc0MDOj5Y8Z`H zpzx<0b54OMOYS(h+Uhp9D_s(YlRP^-?7QWZkrCey$Skcfqu1**V;4!BVxHc*jJiS$ zycscrN9K?ybW$No617!MRH!1>oHeG0;av}m3O-I}rfdSX0+9!;o6F~C*N7hxpmrjc zV`6+eX;JH@yneZG8R6>_W*ywClhn<`c$pcU?zl0j?k7_>`#N^DNon{L!ivM z71V#`&5J&L5dV@_g#$GSTcNSbNdBHqf7H2cC+ORQ28VyuhSh<#B>QW=Toe|mg=E$2 zOE=kscBy;k(Ir=Q{wRb)x#U@|cug5*L978TEO+2xpSY+8_pA0Xy56Z@S2-u1t8%6guQ{K3 zv*IPGp`jOoL2`RASo!*^ufAe`#SI02`0cmfvM-@_2K#MiC%L_|v-0(qUw+BHI`P$C z;8&&DmomHmN&fomv(FBKcx5u#acq6>|~E^;64i>V z1(AIypF1DYG34jRjCwy{UOB6PAvC@ybW3Rc@jznngPRCRD5 zQgqKTYfW>=WmuxO=%eAYmCk`4gG%2sKwDz$9f9uDwCIeOD@=XIK6eefkLH~}I?CRd zNO;d9a}FH1!LJ}{Xt3)pvyCp+?RgvX6 z%q4Z*VC7E#fCLybP%9uFQIYV_5Cu$rUl&&7**Ejhak-bsb7uzDZ(0pP!5Ut4_wFbq zW#8NXNrRxl4@Hf;Yi(GJ%Ms*1{;O~$ZMYZJ|9d=NjbW8yLfo4krvS~<>&C8HOx;}> z>7m1e6;MyzGCX|JAZV7jeIAf$5fYIRlwouLA8ZSGnf9Re+hN90+_?k}iE!?ww3+&A z@9LiEPww7LEn{E(ko{ICRVR`HsfaEPSX6!w5l`E_q}L!e8W>GtWG%O|w?mVpTIa8( z6<$yx`ra2XX=kCc4-1W$&Kj-cajz&xZyq}|L_xzQP51RzVCZ(w@bHZT=EBK~X_=gv zw?3woaaT4sAU6r@ZYQ*~86q?q#XOCtiD~w`1>SZw^+j<}e&849okvY$zh%GM+dABr z(nCE^py`OF?R$zv_ODur0>s87LOPW;>H@`==e**y}-j-FAa?c z#Ms*bq;j5KJ9c%MdZ*$hh2dd#6Mfp)8PtO5+BQuuP_nUS0Ie~9P~eQg2+eiWU6mQs zm-!V1urzN~KFR+>jWJOFfXdE%L)#HvyvhWA^BR1<|J!pcJTA=~JyLN6x5J z`Fuc@)d93w6LX#@1~GxCk5B!@r<`^8g`-@34qt!^dk~P%L$<)V4rjDLuNk{WGv3uJ z(6fgs`F^s0cz8Xwou7ZcukWnh-tsSjtl+7qpq=?mwlcGuI+`imuzWdGxhr3N&~?Ja z*OO1Ky_UV_=ut9!qrK~dt`7jEip}C@C#76wpjvMOncpI$T*$ZvT7-G{-T1h$@E-rv zIMXn@;=|FH7=(nnV>m^}P}0l=DCHK8Y#z?e)ItToSm1|n!E7zvB6E>doWx&y?NM?X zdj|J7f<&oCDMyt0bzk50CB{`uGbU*`1-foM%X7lkSiD`r$f)3xVpG@nB)FW>k8Tv~K27g~>PqU&Ms!|Ursf9SlxLsM3bTk6;vf2iodQvB< zd^O1b|8!dM1pjXvpQksBU7;S|_*M-2SJh3#;NWT$H-F`ozP^2>QtA0}dEW~!fWp;S zy3(7a9!%bvxa}Gc27K*f_Q{vxi%+|l{N()e+4nBKm^7a6j4zJA1nB-MUEu`PSXI6R z&n$vskaus^)KiOg46huvaWI;}unxV%ad4R9Ha#@1ZI00pzTj!}%&|M0>8r-p8R+h@ zC+8wFRSHv?Vd}3H3mGD>vYljbkU*Q{I*BYKF-fza>{(G20NzoOYE%g?En%zyk?dGQ z&=Qr0AWq%RUZn0)xkXuV(??}h zt11Z$Tbuj(o`_#|^9*|EYT&Vcj6B0;C{&s-_w`X7?2V<@2)}ztX8UQU#Xs@rZ2d-y zX(*}bSnF1s3cb`B?B6OM2~=81MqPYxI6Xejw6mnA=$P zkuLI;Tpssb{`7mhk)-m(w;#Q*nL0ZBjegamM>9Bc*ek1qY>mR6C)BI&qm?C426 z^A(@pds>UcVir1f-1^qp5FdDs-4DT|7Q$gv?ZFB9Dujr`wQ$0ipvlG!$hUaF=2yqD z;kU#5t_Hv5UPc^dd+PGz^?;WKNmaNVt|}KAwf~DR-WVi|T&0uCohHMOmq^8JWu*e@ zJ8Gp&P|@I^F4Yby&@Bgkun;I5n0eRkw6U*w0xOozw6+2&HZwY-c+)K#w69y|Z{2@Uzcdi*R0w1uy7A;$*IjhV5?j}ZDqi+M)!hsI`{%n_ zX7%d}+VYIq)2CCn_4d;8m)YMxn}FUhKYBNjJ-X@KpY6yQ2&hd;%;f{GTuB0&)lc4( zgi)5rH4oqGYFoCrxwU!eDw3}_VE27odt(^vVk5)_=o1iOUxYJ?N0QrEKC)2M#xf>J ze50d4yTOHz_+;2+h|`?px}sYfXIpDnjgpI20*4D1yD7?LzLN~g*$S)=h zv057f+)(y-_=}DXU&F+J>Txf)`UTp9FZgEa;YwM7$mNan^06Dp`GbS;g74(B3OI&V z+`om)fR`J-?ul2|f=bl#7aq9O2ZZ`(-1P7YM)m)Y_8stTl~??GeMTLG}yi-h4t4QK^<2W^VD^CT=UD`J?&OagCdgN!v- zT7QeTl;*u9Va>lN{0!hNH=#A;_DqL++o{n^Cb$X~*wX^T)4 zupNKySF7j}DSOE~Pwur6x3qkr?tkWd9a{<9suK?yFOk3caSZ^~yvPU0{-Bs%a`=B9 zTyN!RO4x>Fcl=~CtO1R~@fYgboOo_Ic!O>rT~f3o>=voqDSx^!IFf%YOgg5!K*9h% zG4J9r6!eXI2!N0^6cfkXlj6_Ww7_qZk*y1W`|3H2VJ&P5%0&*o?$L(bQuumZFGRxveN1rmOcnS|&6L6+LU3|7mLqJ0w_Jh;McT z9CM3=G(uz+&}cT;X9jtq!;iqhh$Y%omuHgM^m| zlR0oy!@t6YO4)P4`GDBR@TutWxFQsFzai#kkNF$bt>YbZ7^|sYB_Z}@N3V^Qj-6V~ z1Sgc)j((KQqCbiG)!vJ*{c;f@<;;8g+2gkC+YP@!*2`>I%5<50`@<&mL}TOfhK2z7 zF2Rup=1u~(jgo2KqKuMPl+Fn)8ZdEY*%Em$2n6)G85>VnE?}2MCe&4oTa)B-AUumY zcFlmC(gD!W=V0T0Lr96X! zN;|1jDufY=ibnko@v>OpbRB#0&4n}&otpRB1G~#fmg@xM1t11})32}J>i=~^*~}%i zu%nI*d%g&?kxcxM);@TD4{<)*i>fl2j~%**U+fh7A}FDr6UPIeai}b+wGlrsp?r0W zq-s(f1AaHuh1fJh)BKE6$WT&6wygjUv_M?C zMh#tv0I$GO5yQP1%5}@IE#Q{RaMpxx7vv>F7mw=Kf>mJ>?nr4tY-KI9j=}p5)xCrC zckzmtSIGC@PY~^5f!%%P`M2iM#q1fcK7O#0ys5=?Y7qmRMgPHdW1;VvV2j^CUy_X6 z2l&AK*@5R_DAPt$M@etbvU(oRED~n6^dXuyGdpGD2~2!2lJRvtg3J~VKn;wl<>+I= z7%gU%#C{qI0b%#;V9-hK^#_1%r-uyV)e)fz2tx4WK5*@=)KKMYN*H=8&`55@c9cV% zv8l)aVTQCF8lxkTWqb}ez0BJW;O`?~=db@^9!y~rK$ZND6fX4D_&*d5^A-yutjqoh z-}HDF?4+9>`~35lBSrB99oRPYLFw9nKqs(q#NyTVVy|836xcjOAgV~D;m=vIh;)BY zVis3(74ki9ZPYLFihL3BLWEb$sAtN_#a^L`5nw2Z1`l6J_tWL%1*q3O=w7kV?!EBR z&lUnUJm-hsJ8C1xJN8_CehwRi6lUMJ?~t!ErtO~L#R+87He#2{=K8Cj{3w-j+(w9A zPVCv}$BGxuC2Q+uDk>&{!wE%xTBfY=$*UBBAe#R|e9HB zzFgm&);P3HZD^BFRxOc8U45deSpZD+JNUL4dZ}>^*6Wx;MB<9vAGHt>(vXr)6)bfGxMYYuT?-V4nJ%&puGLP@!N zg{sde>H^hgDNy*VP_kMIRTcalT!7;`?i*qYY#P9J0fhf=y+GLc;J*a-$?vC}4E$Jd zIyJP_gF7CcK3(hc&G2|o?MeLY$5^<4eARcXosrxfBv!uk(xF4L8lIe9qEj;^T!N$J z({*JGomt1IHvK38yDV!s(kB8hAogjFoOvtx*=teszDQuJK634?g)|X+&MOb>w1U9h zICB1?M9rj>XX<(oG98ly1MA0>2);dEK~w+UqV|Npl+6iL1sG5_7z)k^RAd{(i{7i6Mw3`MGH!_C5kXxtqdtj<4O)!(f2iSq(X9 zE99i>peca!J&Y9%RYyZ(!LmnucWTAB>W-pFgz5 zjEi>Nk~==wCv1Xp)Cv|@5Ilt$MJU}siW!%qcnG?%-ms8MMF=biP`!5Fdk=1UDU@eT54FV%6270kdRi2KlecEjk7QlGx7 z8-O>{zaD}VAA^#DQ6*H_Sr4sM>Z>nAt8e|vaax4?EX<)HCTenWWakBL7w#qH$dAAI z^Pd;FtldrUaH+1ors7182jmGkp6>b|353-pOD{}k!tg`infb-*@y=5ugN@trW*-tT z%j@}|qw}MT+{A{8oTrd;387WQP*mGk=IUw_%i&YNDO|FZHZ|)!y4E&yyJ+hD$7&%@ zgcG_t;5s`}qvg1q&RjiIHrl&@m6@E7q zcX$ETt2AjoBxoS|*Teqg33>Mq&yKO!uQJy>%px7$k%zqsJh#z7XJGG5C5CwgNo=ckCi?AccIHd(Rfv(NsS=9YM2qFf2Ipkfv=s|nFL0)-Hk5OURAI`ktAHnot2 z$j6e_4Q(I?&uLxtu25jtEIZc=^#yy}vH42!ZF^}vD5;jz#A(vhjM%&=I!6Aj;nanb zF)S?}-hXs|1aT)`yYIx(*!TvKjuUIQ)Gt5(?7L&d%df{-kQLQEVxft)-`Hy96f0P| zRrf7D2x*~5QLXU#;Y?z1`z}L!lLN+ryBA(caTN4MyYdh8%`T66XuMwm6ZF30uY8GZ zU+GgMJJ4NFy}M3adv!Xah}-+z1A8k#Ng5Q}o5mzx-vi_f&cs6t%WJG-nqX5`rW-vb z7P_2gU;D!vsP&h9@a*Ao2t=SG+R@$e@gbLdPkw+q8sxD3N+ z2^!!FY_bX4#xP(^uzmel$ul6!-~|;yPc6zwd>I#>ovKb$OCNa^btQS`Y8_Ki%+cBO z2Q!(c&SK6f#K z%cj~B4@Xl^^V*JWa>JYy!?EV(d4sp1d5M1}i93?uGPQX;nFBw^gHU))MVul`;ZcFL z)PCHd{0;jHJe>g+kwYH}*#{hD9{zzm1knGl{1tp@%F1x|Pa(h{z(yg!Ml1XqfB-9i zN=XY~l1nbr#N61N$wdg_O47Kfi=!2^^-HgR`ZKTv{p!;_%wlf)!G&t_3r}gI)FW${ zo2l476T>i(X-W1^$n2*=q0_YM+5$!~Z|1!lwB+x7Dvv{0BWoq4m=*qMlE&f+`9i%? z-e5#LjwLLFLYE`pFlqmK^2tq`Om%hXwA3Ba;lNc|Yp138iQP4@=fJgI8Hvz}W*nKJ z10t((;^wY9tTL~>N*-7!Xg*jA;{Xgp=h%v9lqOw&b)HUW;VXMj%)QepuBedO)QyBC znH0&G5C8pim!wEcqtQTN7#5YVc>MNLf4%n{c_R8h5wer`nIycbzZ_H3Eq#mNtymzy z-A?5Tg?XGfwOS1i=Hi4Nh~fo&71BY_p#8T+#%_GTxcxeG!0;}p1d__isnVA6@VGzs zm6!K#zhTL{z=Gw2nsiaHv5YBKa)RTKF$E_p;R_8gf?)(a-VzZh_*?;(O(Q?LetrA) z@@Q0xX+z`#jm8BXYz@C@c5||P+YF%Mu&3Nqex3Y{Kw#G|KF|i5wdw71N;Y5n;#UHp zUBB+q6qb_Lb9!kB`JAt$)+4GBxdKFuCgc@|K%$zK5T|x7w}TK0BmA&SBxOGI_fuUG zg@gw3zEwg{Amn$P{PgO1^49S0BIIadYQsDH#NHsNM|n5G>fDxNb!;f%ygSiocyo#= zhvw*E^SHWqa~pXv7NZrdy1LXTFml!Xx6JydNm5xMwMwgO8oVdkT$iuG-Se0KMv-HK;`_blMI)bYlh#uTOdE zuB~QryieZ{l=@}04Gm}_xe)eSz!U~ygynQV>Ui|gN1JC;-+XVnL2 zmeF;o{*0Y3tl+b)P>D7h#CE&1tjOV*9U!6&4KX-_N(dxRQ-P##1{k4pQ3|a%>FC2} zkaLH_bE(t{b?W&kMIFki6qxZt=`fK?(?&E73f5QP!J^jz?kAeF51R>EHVYpQ5y!Lr z<7v&wY_t)H>ugI_`axLNyK?S}snm^)uyA?p6IZ;dfLl@{a{8B|$>b8W8cIg@si)rP zhmvvnjR*EtU8->|omW<8>|gq7La1h^LAz-m`79dmej^&49}c@;gbSzsZ z=$t3J{t5Qby5(mkFqOQ~2j;8DKY7%(9*y1p-!_tDkH-A^oFD0$60 zmvk%0A9^)GuNW?NkhI}`H+(#Z_LBpb!i*FHwKtknwJYZsMU_JB_*qg;xwC>B7CF5R zA+esH-e1etuw0wvb#*k^!qam~L2yMidC#QfW!UppNh@u)30jYYI5G*t*gehzw_LXN z&VH?+j3*9HT-~<5Tw3jrR}}#dbmg>ZxAgW#$eqwwc_I4=fq8*dFddQ;%YrQfx!lv`ZoT{J`Q4zn#CL2wapC+SC=e^*6W$=c%u@==;NDQlI8MTG5XH#^ z#@`@}!tX@rK0@dE@oiLQb@%EraxblT@b_j+vqD?j#m;HxS3$DD9ymVUE<_j3{Gytz zEa6(VKe+l%BY+WYyRMp3M$kt{3-LE2simPPCaZ6{Vpx2BE>1=lURq{RcOoX7!pVgky=dOyiEag*h_sLg zsx*nX#;r-F(4*_$z0CnDJb1qQKe`!(8_!?8a&D&!PQX|*TGW-vF*|-Va2ETF4q>1nq;D+%HnuD?lT%V7y2`VJu zrYg1u8pD&fM>-+0{rFLMbmoSKmYc`{+N!~w#2>?n`<}ls0WmqW@y|SQp8QP*O;kPY z&dn^1aQ)c{<$QGKT|cd47pr;3P0wt!wV+305|x;RxX^xsja2f^SuZ?zdR?Wcj9)ge z{}SfE`rzw=*a4=(qspnFlfkPRpyM$7PGCC*bv8ka`7I(Yw`D(RM(!4=cgDrFbfJVf zaB_0BIPA7fpVqDMX}Ws*(2@)~0z70R`95s5eI~Jc+p3x6F#pOnPoBGCZJ507EloEi z)nQGlwHYuBH5hG<7@-Hm(*vb$UdPS?DG{jt=5+ZBv;&-U=9_0Y=+G%_ddRY279)S0 z&k>c`pAdpHV!?hBAq;CbS0DkmvRNdQu=o-Ill*lH%aGZ*kfr8#4J6B@YC6N7{;N8!c?Lnrn@FIm9~X;7oV?@G=|hX2sQ&W?7pA ztalY1im%1TCOSlDdo%i%xM|NSI};fHRRdclxBTSzbt~Lnu5QJ>OVO|3{_NR~?+?7F zvfc$N*M{M%ECqb&IxQz6#sjesQ{e{Tk^u7k5eLuAZ3vat(AErYzl6)3Pg`0}80PJ0 z!HxU2-3u+ft-*KhVid_ax4%vtPm>R%{s|%fjgCW0jBG%b$~T;!@Sga6^2Mnf=qPog zGWhg0ke)pN+sh@u&Bs&ia7Zyv!FS;|UkH!|A6Ed52uUkqmV_7Gvw>N{Uvp`8jgm%I zVEaYCC{ONO0W9IA+sNq^6+LY#TX9Rz7JJ3mHkGruWh^bS_ z3{wsH84ERf3tzX#$)sv2_`YD-)V|0O-FoaEtQ5`C?+@Z?8vzyH-FI;f16G5ryk%mg zfP9~roZU*?$c`uOY$gx~_8^u>ME+9PPM~&hxiBOxW|2443$LyM;sImBgG=?~tHi6> za$W|83Nsur@rT4EvL~`~;nX%QM_J4+PIUFo36zZuzd26MZf_HF@n(qJiar{H6HkkK zRwa3CRWVQ6wQshm{wMwwm9`ZC&6wde;bD8*EwuH#E5(FVBQ;99w;t4Q4#_{&bqzbmIRGeKwTQqp^*T9`K zooUl7ytov5?gh6@o82b1h&rTYXh7GuzLCl2(K6fTng~|3x4u^(V)V_F3qgMjZgZK4 zL8CE56DAVeMlv2Do)nC|>u7+Zl(XDBPLi#zewbTFx75sR2l+HLPd9lGHfw-Idl`dR8t$*-1;nmOHlz^2<%+%I-<{2H)4^PwKrW}9I z)6szhqeo}IXfKK-K)H<@4vC3J(-od^F)0R5lx=guFUW5HppjdwV%NL|qth*r_3_Z( z&qmfSb8rAgDevod!xxJAXHP>%8k1Jt(0<3O$Z%p0up#Ah=vIh7I1Pg=>aBtx))T56^}&jM1}sa@fRX8pD$|jm3$}tV2`$a&i&&2G^3BIT^gqH{DBA zs%t#rDzUp3{WM+F4YR_LQO*=9hW=FL3AHRRaRRboc2Nhq|#|{P80xfDyR%)D7c3PH<$`HzVS5w;45gL zwRLJTdd~~fFypTGdl$Ri0ccmaO>^pNnz(G8S5X%!32Evhko_LaVY4im%x>C>!QDiyalzI&&Qcq<4U}!@&@a8bj3FuF3|yGw z%BT#yU}I1q_lXdVP6%psTpMh>Ww}DIDX#X%&bTFWWp9&G_C{`8aTS?>*DwD z$3J{7j8pBv(MvCpBD0oG_Io51iicL%fv@LonJy5Y(2 z3(4`)Ft_k4ZGgPQD^-wU4~kD92XPIbKu)U?)GQ=U*eQUggCQBE5zxE-W9D+IsBZaG znn=PN*YA^{M>BX^u?Obg%j!51a#eNZya68pGII0!$X79YfDjoM-Q2|2u$%WTEgRi# zTJzu<=;&~kUtR=r-h4ijSDXU)jiV_n8`-RPWmRG{HW?JU0%Qmwi zpr}94^o~m%uN(X;QtZJ33HN8MG=9DGe95FZhR4U~IVB!+qN{?8rOl{4S zeKYBD&g4zqu3}S-d%^sv=76bp!9w&@0xgY`pOXuXWKN)A021-K0PUaGi;yY2TE z0I-4rFsz_}OVWVJR87R2+3Mr4W^@wjHqPJNfb+k`EsLz=tLd@@J}?fBex*K|4ue$_0Y2DP74Wvm?x73P#lxe!u zq)Eor*(wT;;-R1qU0YMeqN8Zgsza~gw8oO4tA;Fs@kU4pu?iM&)&Jy1^1O@+i>e6 z@CDXED0%K{GrMYd4|ok6_*G0w!B-D|!5Gpg{2V_>z5|23EnpY;H^9y2?k5!(zkuM)FuPNejPhs=XSx=`CCE-kRG&AsT(`^5zxe)XG>6^yy#fEU*j)mx6iS8n{*725ZyuRM3zF^fC5SZ62+ z!!*OZtO5l@WB|mEyKnHMIY5MLm{+^+_{_BkzI`pNq%_;;Prs{_O5R>@yJ;? zqh3hdnw@6F++BjBpSeB`1qdUtajt1)3#%4x39Pi?EWI$x)8O$gn``zP<}61&b=~1d z%1te8EeS1NKU)%Rh}Em#2)`J)9{!bgQlbb~O~svaVf{O!@45R9xVYf%Y};;oFx%^t z`)gp$d@u-)Y=XM+nY3a>Khrh3TmR5*r%gblTNa5%Z7Fxo;Bgo-1Dz+RBg z9S#$P!ncBU9EL8Hpoo8T1@Uwy`)2A)n_>Jw0@Ga^=60YCG2bn*yOdl#UtVeE-PbH} zPd&SmRU%jfuz^UVbIhGqs?|^J=Y;jWi)-LOShe#fG?Y8$^iMQY>L<+ZM~oQZ4Nf8t zA{Y4vF;-NwY_SW|#B4MBjkHo-ET~{ZA?&YJlAG$yo!y-&SV6`wjwX{0>f3Ch$||V` z7BDT5I-2Vgm^vr*#>rJKg)iVO3KsclYk^2-h8z1>-aN2_DTSNb1OR0Z*1=r~Cxsmh zzNgr*hmi=BYf9uQ@Iu=M>J+HJS(v_xqbzV9U_1M$x+gfOneLWjtO=w7si zyosEJrM=LScCIlx_#{rG>c%uq5B;)X@uZYjBCzsA zRduaX(U$@tbJLj)kqDL<5n?NR4`q7#=sIru&PC%(1*IHy+w_$uv!5Ph@Pw=&U%?^Y z^GfZGDoI3YcU6OrvrrWscFCB4Tt@X06Cfxv0TfD>ecc@l+e{AF{#vIQ5=hwYlDklO z2S}Y9tQQ2AK3wq+{Vakj8KO}?>!x~~TE{oeHScIMF2835-U>Z%v45Z6(x#{Z`WxyJ z@a?u8=k9E07I9n7pIle=#!tylOKX%)yD%uIa-!uTfx~s{OCJmXNpAj+zjwIuC%+;; zYzkQytq;@1Vpe$doa;gN-t%pcvoPDwY$HBuu#_jgLhN^>^5>oW zifWXlBC~k~O&gxk8I%bOT#+w5&dmePM2W~+F4l_6D~`~$<2H{A2tkaH?`$7v;Rexa zg>y_o1uK>qics?pN`if@YWM|9nH&efuMBK6m(J#bpB|c-E*MVCCA45%RG5GtDeSb6 z_I+D+`*(nxxbFhXVg^oEhzYR7Yg1ZSH71S2b-cBV|0<^J6CvZA4S4F4*|2eeWqpTX z#l0&5_lW; zX*3|J7kMM(J87wz)66j@EY5`sry8vW$jFM)>CYMoe~i2uUpyrfkN~(YbVS>yp$AeG z6DD+-;Ne-iR7*8rkV)Z4al7{$~QdK>y(TQa{0?<}-Nb6-zpO;ud zE(WJ#fz!x!MRG4z1BI6jR0;8(b?W6R;XLqvRP-DQLilyVOV8hz;p>sppc_{2fj!uu z6N#%ddK_nQ@1vK=0RH$5b$bGqfsJ8yk(e3Yw7i0R5&f2&(~4F{^vQ_4K^9K@yxp?u z@?zZAn0H~pAS}IR2z3%cph2DREC~o@qH4mzk}xm4vn^#Le%tVCf4x6mPc%3ux5Cyg z1xF3D+Bema52y6%cuZx%Q+Qv%uBL5XT-7+%?i_rUU83O-5&_3iZ!-I*8ep}xfay}H zKnDff8-oeQV*`r#qhImKxHR{JXNF00Y%Vy0QT`Yo(U92`Fa%tc<`So2MS;BcrSL(t zAAL%S$N}VpnZrA9Cy3t0(T8WBUQCm7`wvX^t8YN>?a_4l-Wb2E0$1l2BhL|k=K=5>VyZ0W4nW!!p>1<@l?td^resgyPbYktZt*($0_a;$}Gj?O$X2ahoA zoD|TJuY+O*T^X%VOjx?M*1wtj=SESH5NgY*1lsrNt{#`F8rBuSmSveBlr9a`tO^Pw z0%SpTH2VB4jXLyV$k;FU85}W`AH&jC_HO)yGZdDx$x@O47%z;LsVg`GZH$O)V1Fv~w$&0Hz#; z?223#xo2|ET@5Ihkp<@V;FT(!(_G?P^qzr5y+#w9=m3!oWon-aC2M*@=veme@z_D9 zzO}Qx5o0RKx_CTN{1#onu3<}<=*aI~lR6VBpx-c+p~e;~DXx{;z?NeQkH-n;V1}gN zSsE63EReKKQ1G-tT0rg6z?T-rdh-4qTP;qj3cKEL_$uHoRMBIq%qjQfZ!!g0_^f%i zU$Fgxz1s0~IJ&cyZH)DwUPvqA%-%n>MnmqPg$JL13&W!=ge|*|xRy=JG~Cf`=wm^E_66inkn@a*(xr0U5gg>nQI^@ zEWQ>#*)XT0wu~>Z@VKSbu^vQ*$-mm3|ME*Oc?LcItOzz!GMI!|$W^PpH{aM;D`P8I z61%_TL%F=RsJN)srZOjrl~PA_R$DH%LNm8oQVI1t54t@#C@4pix){E4L0AX_+kI5m z*QPXZXc#WLhVv}SCE!aAt^j*PIQF~~`2vGixsU8M;&67sN=m9?jHY)TGr;1VLe}c4!q*eGlbMJwh=_)>(XUHqSWo4;&wmb zbUMh#YwDbpjSfCbspLw6UB0EaM# z+_%}{m^XilvCJ@O-h8r~xGj4zMeNRS#llK0O~is|#C;o9;kX|QO>3*G65@tG&*YAF zqEoPm)*&gj!xV~}Edo$oDzWXhN-8TQHc6EoJ^GRTgLExx)&&Cn3 z5GXtnbT&8pf=6a|*rXvGu!+kNG6DA{snD=lbb*n_r5xVVfb?Lf86)Szd`i6GZPIWO zH{7ZLa0)v)1~8EeROCtqmI?7;DLfn?sA(093Sk}<{5YK81#n_}j2Ht_NJmWzccd{~ zmD#=2N^VWrg2KACuC_XnGUyi*OoH!<7(~(0J*@#ww9SH4PyK5YtO9w$wCu`ne~Y@; zJpfCXT66<&n$n9-rpkTw=TrOnN@ z+d8_s9QSO*-_bOJ(PwtJ@zu7i+Y2HZItYR<=ac&!NLL1Z1UJ}YGc}ks9V)}2S{jGJ z0DfBdVBkz`7-g;c21d%0W_-D{{7b}%5H8dex>n&sRS>$53F(dcM(r-03o~<)X9S8wcn>pshsbJNP zJD|rUV2(Yz9??ttRz&zEtnjK?#?u~)CU~IBcB-guUJtxj7!=)%Bt@;OCze8m#472S=di@81zaOv z5^S~Cs$@=?M&>3DxKX)^JP8*(w`B%{xninyW`$7Tflv?yAg3LaX=dh3Y?znJ8kzLs zGsd7H6jESE*p_@A_zNJ%4@n2!VwXR z6gk~^s@7o>nDAm5bTyH<5ZZlxXYkn_hh7ODK$@5Lg-BMVAtAL%8`o5sTjX|mlUf~5 zX&vflOot9w{418vwp5sAEL%l<8apX!Ts}pQjY!=+>-T?6?b#S$NhEalz`BUehZ5Oc z#G;#PuV1hI>+df|BA1E!YNXn=3p( zK~a?{;L+6eQ3X^%Sb^tz(0#>ks=x*g=k@t1d?4S6#h0Gy#NwD#=)}U|Qw0q^X^MRc z>v!R-aisdj-~X&k5$HWM3&3z_%0{3mYl=+XG!|I9vky)SD9C>7LfEK}JbSo~E9JP@ zBFB-}5r_P{`upEU&)|)Br@~wr+r<{zj{N{H1JS(sCiG=J>Xr%P+tvJXQAuNaTSBEu zw88g$vq0TGX<}OmdVO6Y7BI3wxrwa|t$zAxFZs?rHl+Bs-vU>PX<^^{T0LQ+$Um4k z&;&KbHy{MqmE!*jUJ{^^VJ``80AGDjD$A2n;UKAOs9@vx|Azc3kfQYr-t{`c%>I*L zWWUtlvGFLe67C^RqO2wUDC+ zPuNs>lKknoAACao;*-D7PVsv$1whwUKVi-;slrzzFA7w<$nT@_5M1%9f87C-p$2e| za+qk)=8Xqu%Xqm1HXjTw<*zse?&quqPXdpmDl_2MAWlhrSm7M780W}e1J**-#9^wB za-do2nSOp1$Z+9ywfMf%Raf&{`u55&zolpKlx*|xU$M7 z4ajWORaiM6Q2i&UnaYvR?1Cq42dsJ_xV4QyoIfz?1ngRV1azU_8ujy0ACCHD)R*6I z4iFe9O-}sGL(|dupkSpO*H_Ra+z6)lX5aEhfK%kG$qNF%Is1YnC;#siW@ZZc`B(pa z7pzSf5|YM-i2;nSpcL?_hyH!|^MCvI3qh+k#{_DYd1v0XhN0pOoS5tqcYXxlG{{2! ztaaD5Pd?dflUZ1Hmg#vyz~o5*RyPU4>iSYxP>)J?!1DT-nnB~k9z_Y?7b&TA%<&3g zvvKM7f$Wp+sa8yO@kGccnCxdNge(nLAbQXNs?tto@$G)Gno-My<@PqYneAj)UMGYM zu8hkzm<3UFgIbY~L7>$NWbLYPmSrgI48^UfWAj#rNm(Q(0k2@XCkGW>^ z2_`@uHd!$UL~{ikhMjL{RSPw3RlLe^dX|)4+5$A?M6t9aiJlTc(IQiXek0PiYoyu^ zFSm?ONQ7)>y;13#X<`Ar3O)%>%VywD0!v+rW&G$khdRBr8nL*1hC^1u({gw)oC2Su zO)b#0+4$CO7?ovc(-vWAt6HpXBY)%*Su3ofsJI-8V;Lpt^7IHua2RD67T#^7W_%{% z+-N4YYn%X$kU#_5I|)h3xIthW>mo6ph5`+pbgP` zeujQSYTg8uV`^Wg8A^ZXk(YPwc=~B%9k>6bm$J7af+S<;3^{$`mtUg6!Ip6NzJUFv zgDp^FGBY=?{20|XJQ7P_AMtubyLlp%+|2IfM5U=YuCU7+nh!+Kec5}^)y~fC9UZmg zql9+xV(&ZW7cKI>?Fuy4zUI#aiG81*lr?XgUk>Xzn5MqfkCL|mv-GDlZ|F3C;5HAI z%&FQRH3JD8G6uH?sI7I7sNY8$4Q?~Hw=mbc1(=wM2y}#zLqH3xd9PPT5kHT%D^hb$ zys-n?c3W>8m=Vi%gTT*p8wi#mmGhs@YY83ZozY4HGA|n%rz`Q%LPKGYQy)|zyS8Z z!)p}e7wWzf^EnDBYtfk*rDVLaYU-pmm7}C(;*=^$nNh>eaCN3K$=fNODZO$cEb!#? z48#qvk}I(HTnB17d2=oCcj%rAVUzPa5kMimuOrth-ZSL?{4fN9Tio~u$Z|Ki!Cl(a zme$pkHg~k@J=+f-sb|KIAK&Ricdrg^y?OVRAnd+jde>~+u-aEjusHMtoy(>J2@Man zUZYM!3CxXZ7?J?YCx(r$z(xTBR48(6l>c}J;Dgb1-0%5Ei(FkYIZ1H&OiSF&6Y{fL zDyybUY%Ou9S|&`cl9=>rR)V83n8hzQa*d5k$3ioRJ$gY*$0gtK?Ks(n7QNd^e9>H) zjakaMTslvq<$|w5JR#z_b(xm5wocdF+LC)vM(#oHT2s4q&mMSC=pp&nY}~lorw89c zkFoenXato4a&ZwrZ(KK9AX-PM8WGDzQ%?&OA&hG|nMDOrwGq28;pGnZhyn%Sv~N0# zLMsdh6AD#5fR_ZKrZczSoPyC}zNknbf+dP=4nEi3CKeX4g+*dEd9ewxmGe42Q2 z`s7Dbv{8wlCX)gQWA)vOqhbk6YtbYXB07N1!l_T+f@I^bJ$mN>KWx+V?6~#HeG7tH z*VwDqZ6?P#b%{))rbd%&PM3Oi96cJN$4{Qv?L$}Arf$D-M-x;>jKt}4CmTSCni*&E z=+qs$4?6w$4q+4mF946?9tot(l;awjK%)J}YlDx8*x%On3qq3p1ik2voV~N1CScaC zSuuO?FBKJ2CbX8=RW0KuRgN&3ml}D7hJmp#`OEH{7cJ$I@A`HeZ&~mT4EzngMR1$Y zjhIZQU;=ZCAudv8zx3*o>4dgUn`+MJsH-u;Vs?YYz^L;`i>YUW#pJZ4F+CGMBM$^+ zO@MSobJjwUf8bgFSE=(BNJXVqyr5>2VxlhETQ zj_vZJ%LBo!d-v_A!?s^@)0WL^{7Qn!rq^TJ$HVJ*3O8r_cqkbULQNgj56@yzGII4g zU_<~C(MN(rxjB6Vu?f32-1PY-lh0F~d=|JRl*w;Ef0mIF#Ei$UB|$KoUFi$hxatx< zApkaSvCqk_3f0~>jSV~Q)=$;r? z8=Bq()F}4&*)9>tj;`LB=zF#qz4l1_QS?N1D$$f313Nj2>q8tdJvrK>sPz$cl~j;8 zd!$z4J9wJ>%%g8^$!No+O&zUL8MIvg5a zit-E`nh?SSo^Hp-HU_rs=DK6x6oF>}ZnA*w7UBYQwW!R!@aun%6JQdwNHae$^WqvH zHL{nVn&Kq)fff?DC<@5IFWg;K<#M4d73qXUe9>nAGjS4JhmZ@X2^CLoaFaEkrH_!hC6X{;~{s!+TkdElgzT2HyUD|ZF8eF;{J))3F2p?0h_BXY>@TJ+_KV0*T|6GxYVB8#S_(?ABi`sVf~T~y!F*>3P`KXN2SZ#;1VZ0D}2!5s$=?v7wSM{v{j z?Q8uk9E%%S0tOrjww=>?&nkcl(*ijd#ZrW(3ihfVygBPTj$nj^?960dg*EDnlOS2x zNUs0C8UU?k@I9ghw9&6*-%cX`fAz943jG-MviX2LV*~&TwSsr;f~Uxprw&3EB4C(Y zL&ptA!!QzWz&Lyz5Kn;ln}bK-+2DTze08V;50FZ39*xR7?Wl!(XuaLqqNoSHq#cIN#lK^DGz#pSoqVoqXMq z*}K*rs$8)vt*Ew_36cV9l}$!$Nq<_Yij}yfHXCZD^B9MoTh*ZF7fD4<7h6D!#+8Z+ z4d0yH@ERx_-kANy%aeE|occZc_cv~gt>P_z^3Xhs&;(rDo%j8u$~tZ=XdCv7E3aIz zdX=9YShb?R9A17163!Q>AjldNK%jcQTRKtS;`Tgt@%x zc8O5N=E($HI{A+lnJ;R_%QVelXLX&@Z5Ks_HWv!IjU8R>`Z`c*=rXxB?b{!vHyl2+ z)r*cz3c>Z?1F9KPMsV}a?d$vsg3V{tb0n-j5N?n%?)t;gPMI953J_wPqB6OH_QSuu z@S>>Y$VN9T4P@9??Ibswbjg^iQq`D&I>i9DYzO5t3b`0~jG1s%C<#?4n7?i^{~mZD ziy>lAslIPUbDQ2xkuH~G`m`=hK;79p-7Yd{iNK5>IBmXrjx|HoCPmWN7d1FhN#%IL2s%xamg^uL|whzjtd5 zr$`P3*JjAY{8YgO+aGZ1jCsM&Qx9UHiqAO3RiKIxm=VFjGna+IwI5bX%IU=Z=SKva zL0PnzJfLq?Rk5uuPX!OV1`gy$3{}9(uB-`EvV38c7(LoT9wnDmRZbY!R8pxVW~>>qNmf4SPXPCWeRo&B-oHx__4Vx{Ml&q1fZ_#bkgEXk}2R4of81ns3u+~ z>p(MifmfGEH)`s%$)+ygzzv`0J77yI6LJ)qD4gm2PmRHL4gCf zho=LV;DIB_K?HdyFUKv&!v(Z_?tsw}3OB*Dy>ISt#_;+EG{045W_PemF!}_H4dO<# zyk*&icXrdo+}l4sH#PganyKG=;B>g5`A7fUQP$n2Zc#V48m2U9s)WI|uJ(|yI9MZw zQ5wFhzEl|P>}d22ah_WK32M;M?TPT!K1+&hV7&uFyg5iJi6I6-u0&asV z2x<1?_gh=D5C5NEEAde}yERRG26nCc@7^M2=ROaPjs?uzkrhT>lLMm(@Q$z^*4OgF zyl58A3}M~lw?8e-hu=3e%B~a!tP5gh*>d_z$~Q6tR{xhYGhhqGe}An zTr`<$5RRYclV)G8utII2v?~*x`P!n9rO=iN?}~FZp=lYQjk9}Zx`cy{6CAvN08FZ|$WgZnbtRUkutM*kq2SH(03y8p?>vm5B=9Q1%Kn3o z^WQ%-H@^f^!#Z-q|27SBue&)p^G1s*h2CjKtFv;NAVm)RS4mLmS1cJ1_IsfufU$85 zC1G1Gl$qd!soKf+zp4Px{kSkvQ<-_-PBhHr@B*)WbL3`kMM|Mocx`94jYB0or> zBZJpy4dipN-MiNNsow9h4eNpj{;TK4+OR*ObwQ?&!9*Jj8siNvxJtxO$jILK@PH8I zwD2K(b46V^prI=0!({TKl(Y_zpJHAlD0xsjc`*niNm!vJ(~SJ);?b){W0jhgMVai| zHp}R?n4((V(9&rUYE&{tnhA4Z!V5`>fALg67TFW}JtC5Ht>2eIvtDXNKZS|>%3B)u zZVR$RV!D6j`a1McWW`h+t4Pi@&EK4e@>Bb^_^|v$^~w#Tz@<&38#J}U@B=M=0*AcI zJJXl$zL>)Pz2U@}<1qmBhiV~g?yo{;5&O3aNRaVBQjV(fU3b0k@NfsH^cMr>RC-7m zkCh6J0MioI*#FfAh)_aUs^O&BC8bZ}tAkc#WbxU@X5qQf>HDVDy;D5t%nCd*v+n#f zH8TI-tpXLxOX`BauBwY1${2ZDe{^ZB9W<-i*2O2UFFyL0D>e+;dLKjd3qU#6!0EgK z*#HM7EA8M0($Gs7H);mxg>3{I`c}p@#-NEIIxWSxMxNZEzyVRri|_Crxe}79u-|S_ z)wqO7LACFVCaEuG#X4Qqs53!uxD1h2$}v?|h+0+kX^TWDAu3QmViB|V^tg%^!{% zHlfM6p55m<%adgA-(D4fV;BLyYcT*B`?h0ni~;G#rZqlDKZfkn1i-^6nSh~-G1IGse{-(hkwAS< zH=({H`ZalT&H7C%T(BjQ9zJ$D@fNuXHK2;Hq@;);FhRFZQk4CJTiwtYRfR#YG_K8I zUxg5rzI64@COpiN2X_JbinDkOFhx9@lpDIsA)h$_qYLxPusg>rADo)x1q~r`e|3iN zyY4lka4dJ>yC+1K$+53BHT4-+-Z2kW2Qn|c7eWg`a!xyQ+vzcQw5H?8O_NoFpW7^5 z?QzhZjJLtzP?#x(FGP38Ioj~7HYQlslzAQ@`GtGq{tTM^S{re9@^}Jf`+5blFR#(F z;lkB?ekDmO>c6~sk{0IjS<3F^M<<>Ee+EOKA#Ea)hf`^d$4~6^qr1CjNRe_`5(Wj}Kc>lO1jZiJe!c=RC{|h4)e%=Zlnw2jWh0>Re}}r(?oOiVFEpd| z1Uvi1!faNP;gyD}@fwg?zvQ>gES7*-#D=a1orN1Le7%T9r*RZq9n3d##0EZ}w=*r& zvYLT@Z+5He!ItXO4Inr4RUG}>u&|rci<8MG9CPOOmBU~)!@X>^?{Tuef(fz?bdg9D zw{xV7lGt$bJT*KXUk5qefd4ByJNs|Q@u_6f!=uP#2!DocWrRa(=3%%FTMi3l`t4)!Snsyv-waH>ik0F$%;zegbE8y`k;< z5A2CzgUejJ>sIUqsrCqlxN%yC7cLgkx+rW9!K(}Zmp%|5AC&@I@<%+}9>8-d|L3d@ zy_DpXluB86>yTE7O6p7OW=c2_oHVJ~u`^y<1Q)BI0 zRIRA$n_^K}rcNh6lh1>dRpK(frgtASp`OW~3MLg6PQ?#G8LgNR_P>q{!^J^ip1=wm z*mE)XW7DyTkB+2vxd_K4YYD8>P`@~FfhKmRo~X# zVT4V`^vb?z7Q+7b_;2X9efi{0CrI0{%hy7mEDgKA4ISO>#)z@Ar_1Euf97nGk-2c; zP%T7$oU9MSH7ZI9B?{EYi8+sf%iJ7n14xw#_B`Qn5%}>tT*QcG&VzUzp_y=H-=Gub z?0Z+57<_?9$ZBItL?YfVGr)AEv*^uqHj_?d?N#MH-6`lHC%byA-|10(+m5v?c&n3E zlq7$gBp*)F>`k{{zId=Ecog7i5V*90|&qZzC`1ellQ2Gy1f=V#PrNjzFONbD#tJ3@; zm|%X9+?aZ)1*u|T7HsdTPiqO$_WSR@JuDlWrtwA0XjAr)3aH{66m~^@Ye!kG6o4E9 zN&(mbF$*yKB6jz*YQbL<&(1`>Ph^Px>_xqq%b|-Z#RQVU!tU%o+L|LD-|Yft$PGUB zwH8+1cLP?DV>gUAEAd z-VqQ`1e7jSY@mW-FNmO`h&37$V@zTaO=3(p(G+8fCYt=B%=3Tmdo#N$EU5n|D!3Zw z+wZ&O+;h)K*qa@x?#_I9aocSyW(5tw0~ygM+k+Ov(j|*np{w@uEM$$Ektl54Hr67s zs&n~*jKXb`Txh2+1@Vk4DFoyxCjG}uW<{`J&-F1%DGcr2zf zX1Pj1QM9rI#G3db*}%j5^}G}B#z8Ay(DEayIuc3jx~y0L+GC}c?@k#Mp}m_c5oq$S z+rmV#GYwkWtdV&1OFC01b90?3vejN>j~>mZTG-9AL8#b}#l=!7M^R>+96;lgTj&I8 zA^w8mi}OR+|HQ5KOT6OzVZZg{lW)hQ8ot415~w6ZR;=U~RSK*{R@mWGek`&-MG5I( zZ~`vdb3c;l3{-vmSS@z< zaE23f_Ya82!q!(piHxzjewi(k7GD8k=ox zsv?KnsZrGw^i3}lTE(88sNpA_YJ)M|NGZjoF{wjGLZteSj;CXzY15XB*cWB1x~aQ`OYHG9Gl&8?Lpu-0KgCYhHH0jY=GK0 z$2Am9YJ?Mh6wJNlIU90R?vBHX{TCMNxy~ZLc1ECf7#n}H#qbzDJT~bHx>IMr|HIit zDj0eF)km|}h72V|!l=mUCE}>r%TMy%%qCWy_U@Ez(OrMKou`o;`o-Z{!%0J3y(tKL zq}dm1M_xF6w6!hslmG2>btg;!{-+D*wvZASQ=oMw=P5Mi(`I`lWU*Pov4FXH8(Ba+% zr2(2ha0EJ}c~rB02&0#boo|g6375D)V+}jG8P_`8RA2VgXQ0C>XUQh&$7|RUduE}GW6X=p5k+o@N0s-(Tb0KwBT>&WCoNuJb>#>^?)X{TG=;DA} zuM|;ox15$Jwaj3xEf`@R7D64PoJg4LtZmu0Z{MzVOp}RY_a2QDQG5YRb|lynp}YoX zMJt5;5Cjs_fSF-!0pDG0!J#6|(K>STFlzifjN-O3Ckja8S$0@fkT=P*OuUA2W`Dmc zNvnL5qe7dkJ?WM|nh+}aMza8RvxwBKq}4@sk<%%JeSqvrpLeJ~ZY(#&`Ubo#2Pn>h zXpcsqm0a9|b;Ya|0HS@8ZzXAd;>|?C{QGyzF9z1Jb9mj&gUl?Q6pSZDYF?tpsVVai zL6swsirJd%iB1@SjW&+}y21;&?s}jAzz8gL|3i0$+2)Zg8pXh>$8Do77#8Blw;UE{ zuz6evK6-$8L!5?E5swRjM)bKrwFvywf+8;5AVvlO3HIBt*5D?GmyF~2X#%w<0a#W_ zX#D}D&wg+(ZdiQ;2~;ds%jAV7L&is>QeR4;fGq+PB>p6$^baRN=P%Y*Drb~sp1xiH zA@z~&J`RNB&hKPY-Mn@l-mTdy>r~9g)mI;Y;mWI>bi1l}z@~Q$U6VYPNXXTKl}8t} z$Tc8*1hiZg&~k;c!IS%caCcz;!F}yAo1|sS_Dzi^tL@Qb#MW$$r}8s&j*WNxy41bL z?~WlEFLdbWEus2x5H^a8KRH^T;XJW+Z1{#;)v*Pwy#CfD9viQI6r{bGD#*UGhh&&D zGc(R<>yl`>IR7AcN~M@{ai-Dl8R&~aQyT4=;!!xPdSDM2Z4TwbF|oaMekX!v>Df(I z5p%A3>-A}}_y;|-Fp=FHr~al|@$%hmVo<{F`OobP1!n9~vbq*Xx)EEugF_*Jzn-JE zo)~D^edD2nL7`5~Z`%bUyLu4|L%`NFJh?)s#a;yvM+HS`6WeW0fd>ct8Z75W3(<+D z&m6s#r4WGxFrE@X5tk?has@p(o)DR@7D4_Q!QaqO$r5DSTK;=27zW6{P}K zMY)S#S*u%4e#BHG{C@|DGS9Ev^k;(2<9RrAeDf0dSI;>Ls zH}T3MGUvqOJP82v7jSwsLzk z8nV>G(rauK!ok7Z@sZ?-Cm-)Ylph`;AUL!H92|2T#V6>y=}0a*b9)(WtX(lqE_1Js zE3*UC{Ot8)QKdZ+4_cb6kyOmiqRudM zJj`+o&--jZPiH?Hwt0`zFVLCXXG5U^oJS|v6bzpXe?ydM3JG<9XVdDneLRM!`X?vsN z4aO4y%w2mu0COC>a!d9s1{*ga3PmFGeF;_85 zNI!F&UT6}n+zn>SGGvo^l{~@|N`hM!NrP(__uD}b&77RNfSFe7OlIQtR!6ccGcHl# zVL~Yfi3(6oe#^F9Tq!q7ok!XksFCDu(s^VJEo^xa-1Gt-;)KCteA;H2E03qn4RUtJ+R_Ytq)|niWN?)UVsw?;HJQ*4=n7)2Qp(>os#*#>dgn@3%}Fp zjFY!sdyPn6c_op(b4L{}1XwX$j6&Zm!W@nzU+wVRSabmsz?lyJ+h44I( zt0QK&Sc`$L69SZS>ZGNUF2@ASRi^BmvjTw*Ov7Wa2NZ2%IEeuURV;HEdjtpr6JC~l zoWM7Pr$AdejJ^VKOz13S{*zFZHx~l4L0prRlI6@ATTIpH0xcJDarN~{l|dV;0cT22 zhg2&3rA%HcE7S&5R^hoH``KJvWe7tqR@h+RnG_hTcEtm6RnzJ@aAsmSGX?X%+?kQb zv~}xN`SstZQtZH*j=fX+2zNOB{A zlgGbPL+?6w6?K2SV9oJA9|Cip>wa-;Nj6(Q`^6`3Zx3XC`q^V(7}%<*(lmzy@4pY) zuFSh}xlYqjK`DgAbz+Ht`Cmfk68Y;Zr9jB1q+S(Y4^wS-d8JEGS*K&(i&-**6(H6i zimiKFA+K<3JiZW&uSGMDtuZs7xcf4ej3wFW{7d^~>Zu!h%ET&{Oz4U(-&rj$@RaBp zZFSXDQK`PRRu7`04W~oXB9U*HLF0l}6e{o=A`m^#JZ_T9J#LYbu5B`E%1g=h+Q6DQ zZY(mZ4+$vcwx`z@A}7JJ(90G`@U(3X#qqG% z-nO6%^$%w(tx+(aRc~Uag`L#Sc=nG8a$OvBC~l@}4W40#)j5MPb47MD6xn$9xCzZI zu%QJs`(0y2_VGKh$j%WPIEkGU$Fj4=R|!PGS~Q|acM~va~CDeeo{=K!k^I*ZnS4B`W z7lo!{Fyuzp5v<&CGm+~WM-jpN?Zi43@-lq4K#9W00n^a_hZ6F?QU2PefU}WIEEx2j^8OKB;7RlWDq87TXEtaY{MAbj2p-o&@Pne9D|{ z-gNbb%PP=6vUL8+HLL2bA2_tS07+2IzrUfi)|mo0x((szg7N&6Q=5_xo;;5H6akyR za5amL;`SlV9v@}rFk@4;6yz_?c=W;w{`?nli&`(|R=ZzhwuZ9s zs&NAQD%_m0Q$Rcvm5;vqv=QrGHsp<7HH-@I@ZpMue85P8@4X?^)#LsuPm3Hv7P1{r z;&+*htijSVqXxW3#Wgd#H^J6#1y})AOwCx}EG!+NfVtJ$5eEDNhNGJXYb|?t{e`o_mT%! zwGr0P=6xHyq2i<_@c~RI-&Ie(b+b}~A`s5aFJjb@Ya2_P*FM#JW20`Yl5ey$(>9FJ6CKKIr z?s0Mr=<)r8dMMim{nF>0{w-rlpyyp&R;*dUyP|+MveBR78`4?f8<9{>!x4ZLMF85~;afB2Jx4QxS_9p80 z^U*b5tWsqOrB&ec76MUNNXfvGMO*3-y8Xq%(hBvOcD}yA)M_lykyRm6iJc$g**wf! zHLi4rwn5XLBH*Vo& z=C#_y%*PG8Z|%P9mwnWN?8^?dF%*yh;5NBXTT>1)eRY>F_S)R@R+MNfmoF;SmMmUQ zE<=-IW0kQPz=G4v>;Ii0)M*6+{~+MzUSki(g4Py92Dt8-g;h9GCEX1F*QTS`XNZDJRVEF1=xZ<6_Nlkz0NJc7_z>YW0UkP0BO}?1vy9RtXmh7fzmI1#J+2G((*5vr1iwv3G%S zk$*vDo-cUVW{AC999Eg1WLMA!&RyO}yUzWl0)_LaJJPnr_r8AzPa{73>sv+`aXmoq zN7~vmZ+^Nwqp=Hn1omI2wSHYlX0tH!WBMXNn(yo?Ook1ehG4`>`eWqH;L&J}X4PFw z0}7Q}E^U~7!>MX*c}3=0Rs!SdPgAvR4>AwH}`->#}n0T zdvRCNkXe2E>suih9Qni1+1YJ~fRQC}FfdohBv!4m$xb99TeU%Oe748i-)+sLhfFKfBw-Y%G1G+nV~{%cK|x?s`+f}T~=lB=~1;bgJgDRC!)4Z7^z zNa+uAF~hBZ2_iqquEhfZ%o$wLgZXv#ih3n1xpM@tZpsuVwsSAj`#Ow8KsFDkIRW$W&1w=|D$ zZF9f~Rv(Yj$00&s-HJxnNc2JIbtOdQ(P9FF01m@P0ep|QjvW~0oT`B>z}eeC%{5^P z9$&;_w?(Pa+Qv{Z7O};FYChboA+j+8BXFfrsVTKthbus4v3|N%r4z}uN`RVHhC&5I zz`H6b-_^cxSL65G9?6c`Th^KMAEBHjq}iLn8iu&9E{`ABi= z!HvMx?TffB5MS$KNFgsJg33zV09*UF;|g) zF^XR$sggE_L?)!94mn?6Z1cx!9dM>VfKWJ7<^nST#Rj0%I9i>lZjjz#lhPQ+{uBtP z;1*b3Km{o^*=xi0pvo&VJGC-;E%W>6t;`LPznuB!T5W|-tmUwDrxvK7rOJKVlpWRBVkiuKc-JV>E6!e+oaZ15~Sj z`eA41uVdgGp+RKM-pULI4CNkKNa`(P4){u@4km$nmY6bJqAYZn1aVlUDO6s# zfh1Y@S||BO@^F&c0#nw>I`2T2lP{Ce|fXa890?SoAR=pDLqgb}VxdOWCXSTRfF zkWE_*fDu!jWA)Rv!B@WXcsP3c)o)D+XHQ4T!6?}Sf$GQ1d#7h>jS#75r3bhxp$W(46V7_9kHDHDFA@&=kQesd90LMwYoigu99NQ$Rus)SGDG2- zQy(7Vsl~Uxch6GhR%&kcSTtHNJW@p~Rl>*?@_(H=vt>98h-Ohog;*hG9%{CSHEmLl z?@w`(kR;~3eCCcoU;1avKJQSkt;^okQ%J1go%%&L&aRiLiWQ=YDci~GkryrXi>4Qe ztTs{E<{)!pfeU1pRUQ_56iY61+2iICb$Qjo1jX!OvQ^r$%1S-d5do`b{*r1#)q<%7 zEW73;G@%*Di`amcjB=C~Pg)IEGS^(w@L{;DEowc;K zRx800*vkA7b}3n6O@%29tKj3h{j;c@0`L(03+JGA%3o_xVrKE{-E>L)Wh3zasjy~- zrkA(q7rvChKv%YEQ+7kCsi~y_CgqK7ZG?(Mc+RqEgBcr&6B%PYJq5RgZmG4$Q&FVs zcP2PA{SsIiGWJI&TQ9JePRu%ca%kCPWSwL9!)gO(TH~M{R#}A|^?emgm!BJCk|UHW z`_7^@kqGRPqHvvWfkn?e%TcCV6 z1o-a!E~w2!GnUrMnRCh4mxA0(C-p>fQxpu*pJ#5jIK{x&bOWx#7n8qbo9HbjN8D_) zq!=~MJ44ncTQnKZ%{y~j^pIa~z@;RRN9cU`JgMPP@ zp}@ZkZ0^|_VzhRppsk@GEK>Q}EN|y5@UoSeu?Asa_KV<6vJLdbG6z>|V0NbVrBd%S zwH>*qi;@a6NA@!ZV?1zINr@D45t!bE$o&agER#r$D!I=@#3FrxNF@@8g*3x7Tc<3j zN8hgcd41V`;(0e7B+ne#6Nbu1}PRvNGg@BYP&%wcgaLX zTPwfesx?0Ux{Yte<0jFfEfKjK_!fjxm*OjyikjEWwP|{8y}A@#VO*E*6IHQ?-8{iz zgMtMXGr;r7oWR2#Mb@$QeGHa1ajYYS2^zQb+Y4z2iWzRgihF`^6LXjY9}W_37Gxqk z`n(4U(h+%I>3x%PXw_8#B^dK&oEX}Q!VRjBq8|K#h*-)~6lf%#ib`!atPOe9dNrva z$0;#ypztJFln$H4lZb-C~912Z>B96t0I14m6-vAj%;P2&Q9~de1a_ zYdHk-b@m*w?zOY}gRNXSgXhRHSFl6)!i&aR-5ol5QU>Ai|kTPH>&C?Sf&F4 z?E4W&ALM)4J>)0Z`OYFSc*>NZ47*T99gTv$mk1eowNf=g4HI}Tp-@GX1l$U|3w z9Lm0Jtsr&^qESb}tY}mR&g~^22Js}Y$8bWWgWSP!>5*y8BHI|>&W~*DF`%z3Tl2x6 zCu|HZsH7KCv$J=TzjjCz3ZH|>ggS>n%FHC+X4>=}9XG=7&CS`(K38`pWGFXwWIA06 zt4Yg`2=r!~{HCy?ay|<0iTh@i%l;I3cFy!C6XcmVIezYMrUD5Jbnv0cXl*2N?g*H8 zyh}UIy-UIsws1ILZnSj70EA*!+9J2z1}kkRS0*2N?2%3+!l&-K_jZugknlr77USm% zj0D^ZM4+(4jOEIUiBP-qKO`bhcwF$_Fp2?x5bg`UNqBJVMpxrSIQF-N6jgHva56V} zX1V;Yv1jJaIFlf)R8RJCaFEwDUIyOt8u8HLTGhA7k7CR-5yGqU^d$66`dAO5Qy1aZ zZ%W+%$b&4mK7MqZlH%hD%Ff);d;1OB>d}(DYTb_g$!{>Hh?MzcTS?i1*~L}vxr?FN zDuRIX&2hua@eLw;Qben;e877EpL*hZa6#3eBw^+oghZGZ7Eq?_Um~y+)RInTt$yzy zY&hau7(iB+jvp5qU}*VB6o5JaDPiU_b2;!4KFO1o$-MZVlGNcOkw7rM<=ir|rrMcI zLp=$rMQLueh#i#!<_M&Oz58H;5f-tdcjQP3bdHaN;|yG#;(D8LpD-T^Fk$7<#0hWu z`Ja&Npjxuu*^Gi&gru0WZgMEYe4b+Ff8Cj(F;1nT&%~&vbMH{U%z8-O|Hq_{n_4{w z?aBooFa+N+_S^S$J|LTR4`ebwM?P$dtb@{)yx7IOoo1GNfg5oN#0Z;+`QOgavFzVT zYmyPh$z{wuGQ`|X)?Pq%xCA7Wqm^JdKMDJ~Xz#6t@+`moH5Fw67eM~Qir1Zce)$fo zu@P3J@P+cAGr+%lVL%^!!SJtOk$^>k$EHeq?+KHE)}mOmI;d=lzS(Lhb4x;ESLtV+ z;6XQXcm)r34wf98TB%{yB@)cui*!{J%BVi7ZFYv8t)^s&XX;QpX0xbp?(Qew+m$_L*?y@8YC;87oN91S8si%ZgK?m2CsNcV1Vp&Y zJ=Uy4hsB)?#m=aeps_;bitIxUy;r;gA0uYzi7bj=W7trzt#4}xmyFKf5o1UsW| z^pGEh1qQnw@D-8Hs(B`zev|x|sbYl%hhTBF9;cTHP*8>R&a!;Rr}yR^prDE`dQ3r; z!wCN&Ngv!&jk|UgS6sXG+(|Me{<|b~09i*a7)$+t4QFbWf#e1Foon4EXddBWxS)Z| zv(d)>>bzDl9}-v)p87`GvFgM}cR|Z|+aK>-m|ep9#od%nd)kX;E?eCwvdS7(Egm9! znj#N9`@%4h@CTnceI)zG*10dAxwAdm`SZ{Bx_i@>PD>)~BsRBy;lklUk8^0jLgEeW z)vdU7UZWHmLs8}MZn84;DzoPQEWWN#y#}nlmE|oFGO0mnREcS*Nr_ac%hpzF{Z$o) zMn{mvoU3$I3#J#4qhP>Q;nOr~{FUV_la-5q;~~HRU}VtRfXW^Gh9Lrf;P*TKVZSi( zAAd#I@StEtktGMRc2=yW*5%m*kZ zy5xu5R4sEy{O3$limpl5W@!Qo*GN)Ep|4Ta*~OJMa_t)~o}2{CAU~hggI-R4r++Tj zz~K$f`>t(A`eFRe`;LZ9c^az(oY_u~<1BGCA$A+dJdrhD zA&-r;g|IA)zdGRs$#dm}xl;l`ms^-6Mgn?qHzg9UhRxv~KiJL+eTkN)c>D%3z?{hb zsl2E&-2sfOKr-WEC53_ly~U=uHK?p!I1GT)z?=%%U&2q!8a@>zcY-lsoce3FkseU> z-FaPu5R^8mHywPYFIz-6CYY=J1({6TT5n5qcjNBiVN{yN-NQ%H=~K^~?E|-#?nh4D z6A?lg7)GiG-kDQCkHLja3y_$Qu7!5e%VGGtlWlCr?nOSO(D30f)nNHI@obngZex)b zZo7Y?8#O-duz0#DrmUEj0h3&DVoI6fzGg#7fhZtycq_cCn)TK5%1BdOs^J+dCV)3V zEv{I}Qx`k=wgPrV?Bx!y^sCmD`>v^S1RB+~s)qKgzl7yi_(Acdms5NJ!DG<&zCNg^ z9O*+%vhL}A`8(mqXOrQRQ98!NGP^e{DiwhhqI>$Xt0F{WawOwcn=O%Iwwf{}jo$7; zYTvo{3N*&%T8WAmNIA8&71RwyHOsvYAc!(=l$hIFK!%~cqaGx`lPrdhfa~ZO6$T%=jWOeWK;(MWXORpY~{&uY9OD3q%E$5!9_Gew8FX+ zX*Cl*-SG#_KHUcaAK4KkkA;*vU9<+At@!RB&_9{i$fVCFscULnXV31~k$v|oru66L z&U`9PTcYRQ1e=aOI+5QgF zwC<6=9_A?}*Z=08W!cZ$=e~0G?)F&MFBk^uz<1K-CUZdLDq#9SFJ2Onln%NwaZ}n9 ziP`_tM(7UG)sbxfxqjxhDOD1cTP7+=uiaItbeH+{wYJtqY6G|0GMwq+1TL?)o#!>(oBa#%C~{qThly-`7F9tbEMjgf{JAwatM zvAX;4rZTX!7rIvM4u!X`EEX3jeVcAfk;kR8A8!|cj!E-<%&ZDqBo?$Zz`p9}9s)b} zdI)wb&OFvF#2t$V9y$g{5hy9KOly2JxQLJ+*j&Im#ha0j;a_1hXPltOohbNcCx2sf z&161v`;DEQPobpeZ$S##56VDM)Jp2`TeTkbLk4KFNfGlJiRX=+kqiKM|*W2?!>UYS_XrZj(raOoF_@tc~4NS7$$acH1^< zzs|1>$c%dI;4eN3Ij@puQ`F|{B1a)OX(&nn_Yg^_Tf^CYaALlS>|)L|{fgY8t6AaJ zT4PxC<{Ml*9TdXrU`L>64|l1Gf86&RD}EN-!c)OB$%7h=@bj-tS)^0Gz?~2G0tKOU z(}pF?OiGvi+i#M|Gvv7x^RtA9tOil~{~z@`S5W8F3l$)Eq|%$1eCX($Cqv70$@ zbu5?BzfX6=fuNm~hc%i-uzD`6AB-*^j7^NZ@Y#$IMYwK<_27j_(a?|=!n$-c$rn2B zHaa6M>Q+^A=(D(?sm&%Z7{q1$bE(GcYxfkbzi)w1s}?MI@TwA`NmT#v9==*FI`Zm{ zkhVk`6MM72FJoU6QkVKXGK&EOLHQb^MRr46Rl9g929|zUD*Y%|7B;$_fP|LWl7OF; z4s?ROkcwZj`nK3x3r<{Jgf{iwJbyF$z?6+XCsl z+H~U+bWc<_j&H)SZUhBW0PpRnV0v|0=N45oR7pXzkP?~95}u*5OyI7pC>B&V7;5A3 zaG1EG?GL`Xk_UR8%fESy`4p&<4=_5vcX&$DRAq|y50-oZ#22%+1~3)j97FzDvl%Du z-|eJcjP8r|F+VcO)eVgTnV5**27e4I>l9iJ+U8*Z?}q^Ixtt|uj*c?(>!+Oc10Ee* zI=1x2bdP76J4zflu|Lnf>d~KrULF$PG5T@qsW`Qw-tTc<{q$e=(Nei^_a7cvy*j0x zd(S$QAX|CMP*z6IJa;cSL%z#2F>~sguU_q~^{l?S)l^rhjHoNYxomE2?aC!Hi)#Hl zZiXdRzcQjKuhKI+nr57R_)u#o@x70>0R&*qSQBZ-a7gCu+BOH=EN5&;x+KgKjR)`P z>$&}4Gp&;>-``g%#?#~##y2vL@i#xTxIkny2u;%tkq-jQZ5``N4Xy2#3R_2;p=fw! zsl06VK%t^kU*FVZtSId2v=z^s=a*H?pIJm+C|CQ+%XKxjwl+)g>;)CNije{58i$Fp28t!TvS@eLzhmeeg zw-SFZ^0EWJTC@{wWJ5y!?iz76#U^KOEqtZxqFOiHs0EvD_Nrfn9HSv}1v3SRBoQsl zR_e)_D1r4Vkx?P@=!i(DwF(t{p@jEY92Ld~V4+ytw+!?e0*-xaLFtG;d40FxyHUPM z7!@m-Ltb_@u1wdF{(}3_kq%|$+yUr45u<-U^3({K_IQl?F!bBLzz_QZ0j;pVQz;R{ zJO*as6cLFcU6h*H-?HI~)$>X~m0jo>UbuWk?U^-qI?#LAI`6>L=j+yZOIKfwZBYcA zkYb~H&N(8)ro??G9?VE=!aRJ>^{3qW#*46IgQw5gBcfPl91M0wX>i;E9by}x`3Qf! zC_+EJ9Kx!Z(#3VnF)vT85!Uz1$#JGm45r~*;)7Ik_Eq9eCbRo5QUo3EfH*rHRytTQ z!cW65E+(^|Nz!Re^57=Wx-yFbPdeg96Mu6jVGmwNR(-{)CsINygv~O&7(T8Co5o#WrS0~%dSy^q*9!AcAyi^cxzJu*Tp$@#SJhXkHCCI3_{jlU#9w=4PJ@NHzOuNd zGiaz~EwvO@vzC|O>n(QqgHcueO4LXePhVOMBj&12`{MIo>7>=MY$irpVy`eWsI4~l zP`}evI5725iQOimr3#_1skKgR>zHFoPwM{T$0Dq&4rd(0WvXbdqvRaff>1?|f`FKb^mv|Jd#S!;`Qy$%%=h8) z48cC%ov$U~f1fk`pdK-a*?xhj95?lRETn2$I}gmo#2{z@%+lnmi^-gq)0C5WF>!`S z-v5;Om@bHA!ICbnwT&aYkl%#(#X7)J(nAY=)*ll}GmpMn?`S!P4neVg#MHaTtu^q}SfAYRel|c@n`82DLm{&$?VY{J)tP%9} zlkS-G;Q3Uk+zS9(6P7j0MQMRc;K>K-28`71Q5rT|gMepUE}$2U26Xo8fUeE83zYi{ z|32Y`U&kd@D!(OK$=W2m94%P?_(#WpQ+3N9?_a@CZL>i)rahK=^V1iob=iH?oD@w- z&1$(ruMWG2SXdMUy*jW`5i`F@NUMepETuJ~Ia|6*m=UrP)Q$%uG!g3+@J}eJZA2`v z`o$6%Pofr`4vBmNX}&=cN*5C+xrW&aTycsBHA;z9qik?M(y&)aBywPn3!aMz>~&Mx zc?LLt*@@mXjCDF zj6lhpQXZjslD0sseP+lnhpZ|sZpbkItF6_GQb~nGNKrC}l!C7jcSKsE%X=*nyVww( zCWJ2#X5b4%6p=fn;H?K=5NoL&2-j#pKuFg<#Pk&o&h%+Zhk9(IBisBq6A6mwHOX;$ z^RW?E$G__OIGbRvLp=^YqS~9$S{8oX1mYP1c38KBy*_R?CbwbCKtweg}pr@n>?AcJed%w`Bu9?26sYi zFiU7CuEE2{C@69(n0GsLF0&xUGZm4WGm3&jWxLXD1AqW!Ga;xaGcem8MNThnmN+8@ zTfqy}%bvcWTJ942w%j*^xk)G0hr$B6h|csCsQn)5O-;#+A(zfIJTqeO&mJz)yJpOW zP8s($?t-=jDfX2xB5Y+>L(xkfsf44g2!cqg;#^)OXI#7p&|qDOE93~k0$>0?E*VO( z{>Ga|Ia0cY4i_#i6}46K$UKl1UzXyDWE$8*u~;UT61lXxSFHq3UzHSST*u#gkN5fK zFTPk3i7?Ykfp#6ckaqn@1aP<+NQxTWL+Z}1{0WGG`B!5@u-1pr9pB! zdQbaD9aI&JH4KtMxou!kJ#%~If@05tPNQhSe62zX0h8qqL&)UIr_G}F$ZvQf44#6* zre~O;uUIsW*@kk{oEPX`w!E>h*bgc{P0L|FIja~vcbNR;MtWZ?3r9P}i|jh*&o&3A zlLM4J$*hj+sA%?iaz~H6W99J;z}y$Exnq6SEgP^Rb|LUi{(O`|HQw70-&aSxKGqP-1wKRHYPwhyJ4W!gj{4f^f z^u=gy5_WQ3;=xlVx>$L!JMTRL@?v86e}_#Ir^-Fx)D#Rsutk{lDBNP~ISL`EpsQE} z1UW|_GAz$U2JFlzsG=Y;jH498VX`3c-jxn%n{*wiE)>a0G>DK9&p5u$-K4$AB%PGD zT)C!3ZWa2MEN_X$XydHAwvIT(M$mQ`T7TW-qou~yW|(EQw!aZ$9wu{Im|w<7@ata5 zpEFC~6#Zi!)*KE!O#y6l~-&PMH$ks>(ELU2cTHAhu5 zLe1lbq}2;geBq?^d3jX4eQ0&YK@0&f)_@d+xFmGP@JH}krntSHdKQOp6;;p;!f{7k z1A3G7kj8Qd(ib!jI7C92j{}FuH<^wgX=1)R2lQ`CTs)0V=<`T_-O8`#UrDsTuOZVT z1oj2N%M4`v#3tZuSd5lJHFzP6)ClD=w}nUqI;%jOom1wSl7Xa_?)P9w;CFB#p+jCi zs}GQfu4z8muL8%XO}RHjdqUF!zhDlx?zwJP6X2F~{NYpSr@zGr$^YD~%u(vYx!*o> zbZw|KUM9DQ!riX+wRgSpho3PI>#V>dl@|h!RB~s9dw5DgW8u(rZ*EL}>uvkM%DXFd z^697grB*@DiAU~^@F+3B5E5L+C;%AvCjdj>ERqu`LLG_T{BRcEd7e6_9ZhLtI|!GI z0oY!#Be{>rY~Y6BZl;es3qykVe;hNG)X5!^+NCoKNYsCLK5ip|mPGbvZH2EPd zQU;RBb=Kas4Uia z+p|o#0&GuU!@wRvF3QfEZweuVj)MOq$%mhOtOwee^!*PV3lnJBLjoyZ77jE2ZP>WJ z0xdjB=PayXr#L47{^2g1lqD-8F(n1(3f6sCMPbv4Whb6#?xEA*pmULxmeIZ-ch~r6 zOud$9n17H~B4_?R6-a!)Oh}!98rWNrR5sbfXNiw_D|^hx`lDCq1L{~n>Ujeg0w>QZm;bqZ%{8G}AhOUz%Eio2X>B|ncb|KS4l+kOwr{??N(dtw|I*9X zHyYyAwJZeKW=9CHX6H>ehN#HlTR?N|(XC0K@TM^_$BzJox0(Vu_6X>HK9Y>%bk75z z2F5*9$gY8{pEw)^Zo_h#x~_T%Z7iLMP0Se0Cg!GGa;%ldXNCDwg5xCjQHnUTDN44q zH0-`12F&*Go{dM7YMZdQ%mb^KBG4>Q(t4jqR8mta^jB(0Oyd%!1O?e2mzN9;BuzCi zRv7ZiZNTx43UwBn`~g6LTIOU>jUX|r$s+o^V%_%0+!vB$9u}{Qucll6e)eBZSkU=gal8s)(dC@c0``9_1-<|{OiBTWBo z$>b+gMfT0>k~~Aj3ee{Ma?dKEDF1K#8}ny9lcXda z%={?zy=$8{Zr;!+F^g(0yL?sc-_G4m7o2;Wyl1LhwaDx6E?v`61&AK#tlDFFMr)pr z$4YAL1=ABXKYbrcX2P&F#0T9x84Oz=WeqO434S%~W+Xsw2NTI#d&G}{`si!G<*ASXVqQnc`)K$dARwn z%x{QRA+Ibs@WhDFD4q7uj=~2%VSYr+;K5a};`#@t3G~wbJ9jOxGV7Wgp(ahMx-qD1 zafX`J?W(3A@B_XstC9E>=^KGAtmfD5WZqCrKH4tUYWa2hNq0vFZCZ5Ok^*_5)G~X| zAoD;dL>uPZyewsqyQS*z$hIl}c4?}r^j=+c4Rg$;t8Xxr7#bVduKr;FT5%l z*ob~<@uMD9|FTe>f*b%;DwK8Z#PA~SA~k@b1_ zg{3~Hz*nvHMoi)EGCs(R1{aaG2qhFsK%uPOPKiXead zN6*4wh?%k9F7G(w1@e2cjk)?rI{h6W1%aq8gm&g^Ny+d)%IG&G`iHoYJ4BnpV%4Kz zb<>)8Q18!L3H9s86<6(rwD@u-`N=)^9Bi~rU5do=`o%-?E`8tf0P1E0E}LS|l8>Vr zCP2)QCt@UCWsfDIu-+NVbEo-{!?*6n)v(k9AQm9C3)y*zotDT1^$L@OSOV^%mNg?z zxl3vpT-F=8eAo)c%wp&44d^pe0bsy$z_}Wen8fj88U~P4QF*){&W8n4*jSx!Uh`vi zEPV4_07^!VqgkW!Bzw4U$>I3$2Iu~1nq$}>$v9UY|KKPv><|6+_63Y8087@#+Eblx zF}uM<+0tW8cNRQM?qg<{($;}$)Dfue*_tv&uU$>UoNV!iHcj^2M;{qTA@e)hC6_m9 z0dG-zUq3R)Eftv!mVYp1-WxPz_tx z)XvbI>fRf`H(bRp-&PO%OGDj&*&BrBa58Qih+H2h3ZABFL6ONhz2tPgp`o!>+o7*( zZe}Zulk^*GcYswaHcg16Oa~lgZLW^ZK}lcWpo1w4&j|k>wmF?W_icI?pm^#HgOvj!6rKJ@UDKq7uLN?jj+v%nIwx~z#09;#Zp zVxb?-j8`&q?kpd9d-I2H+%s21^~I$|QTL!pC0~B>w`9`O@?C#ARVObJ`|p2SAJ^gS z4O@}M9{;j>f*X-zF?SLw;}neftN{5{Ky@638_Hn<5Sj%JG==7l5?Xy8js#Gp3qjWg zO}-w+U;P4RfFMF1T*+T&mO8?|Z)$m(DD7npg&Hj-b14MIvSNRt&TW)3o1o3SjhY|# zKY9aHxT1p(#C@L0Ccm*adx$ol`*TSgqH+P>U=VqWB}+il6K4%3N)pa1m8z?2c0K`?oyC%Wn3*Z+K?y-NBf^OKoiqbukq zR`Pn8w!u(kXzq_jnLjjKvwc$?tUU5UM{kdK8rORbEv@EqOQ6kAx_oVouzvmWl8?n3 z&TcJ{JH$on9%e7;306EM&os6Is!|QJr0#sPg%34Pk`(3!1Mpz;1CxmgvI`2`BPfY) zqypKO!5-}6RO(ONhK_i#z-*G#kNi4V7;aKWRE?o*>?v|}7%ElarKI?Q>vbIuMe#?2DBff|GuAnxEZf#DD+xw0zX z=goeyt+^`x9F&aTNlMHjCvKn*VM zWrZUMd`n|@$CgvBTF5F_!71|L2gyxkp{eBF2`t&^$2xXE&=geOT4=(1bwSPlF0?hz z=6+m`GLo}1;)=OLG!Xr|2fUA@q&l9_X67s80wOZPBvRup64;CEU}dia39zC}s$CCk z%0vd)lp0=)uQglbw?;*_=GjTyOBw`k;QvOSpF87hoNAjl@2&+4NO0b~j_hw_lXuL6 zUQsW!^j|jgxmK!e4m)%MN z;{fmv;+Q|D+3^Fnx!B0A<#YqyF^m-637Ot`#9R$HnX-H!&*+xtUq+B`+|0;^gLp(qKr`gAc4XB$bM=u}OA< zTD(2o*~u;N=i9^1*4;N9x*kNXH2n5m`*&a6AjhW)!nAxK&Oc3Pi!Fq^V1Y=Zy>el( z#Tu44QhS%kB%a+YEzXUGAERLQeM}Z~R4>uf6u=ojXHJ{biAxB6Kt3V}MU8y2Lv4wmo~dw;%~< zOzwaUYtW~`L;N08UdRJ?18=#S6*`y$jr8V8*Rj{=()d1JBP_PiASSP2GTNT8f`xgx z#xd;^I#;)`4;bqN>k6&l8Y|8g&v(r22X^^&G+56zZGns#1bQr zS}Z^`v;e6^$`cCs$-3dk_qT`*qNcllKwjGQpC29>q)2~SsFd+~r@9C={k}gC ztv(w4Q`63UJDUXX%k`VKY^;O#&Y>O%pu6B+wgZa^!E@9R-!f@8mwk*A;F-BTx>iTQ zHwv>Xk0tNJbB3&hPo6E*@_&UxbEu}_7a^Wr`Ww&ABCf=({=HFCskpAANd`uTG?=gO zfyOKJ)z_B_YMKnrq}V;sCD0kfEordZA=^8OH%%5MOyZL5W5 z+2R|S_u9-Y>VT>#`>S&AUftKT`|$1EqMd%ET4obl z`xacQS#fWb%pvw2BJbNAX>)-k!!(za%${CU?V2^$H-6~zNQNEyNGyWxlPB+viYN)< zq&)b>RDu54(`;dYb4z?fP0%D`>xVM$7is;ts0;o|x#J$&s31@=;`e3r8-PU~=jw<4a)_svT>r~si@*VF#?y}+ZV4p6|F5@w=Egd;&oZ>s>mIU} zSck~ch&AKJg$qxNIqF%~Xe%Enr4}|hLoMnys3=bWw7=ceoit}GiIkJP8}%Ig;dY)@ zvhkZcNlAFUe*VE3^>UR5MwWeBj?`#M%faE(8EB)vQz5aKrFH7^HB}0)vR>uer)}F% z2G|9!WCio2bEK}JVy2he>99p3mLf|ev5I+%Nx4TBRcNc`PcNWcy3YBnN`+e{t(XD= z`NeFJmB)~jux;85ogl6VEC3{F+oZj@i=GR@SXPapcYFvz5Q8|6Dvy`VSgc1CJt`?T zDlL~2rJFE%kFUwuEcs9JG7}Ks*zH=XH~Ux*`8OjEM@`*Te7#;&5hwjozC@u_DBV`e zj2a>pH%!;4bYiJmCgJ_7)KF8dELB!i7nc~T%fZv4qH04-pak3x=VVG|uFu`u71CE= zIm=mSfXOacXdI2eV(%c%==w*>6@QOBGl#$i74@sgNXL=zeI2w?IqiWKTxzMm%uKg|T@dFfF0gVLg898TUmFjD?yCr?MtT}J!jciw(`ka^G4uyoie zamowku4}VuW1Hp|0H47+ysEg$8U#(E=HjW-zS4=psi4T(x7kw73}RKKY|X;)m*#QN z!39u83)O&4gA1Sx$_saDbn!JnX>$j5>9-FN7w;-{6HzfA9@n;X&8QPsHrL4c5&`AD zqGQ=$*ziI!c{U+xkMO~1#aCl)CBShaZ!;y#ZZE!RLzy0Vpe%DK&euWmx-$xPqr)hl zHf01h)haIE7M^uBNor!9Gpp4E76Qcjw$;;#CHtO{tmYqhJB3PqzO^@y@4oU%ka_0u zT5E`PLkz{CO+XAc$5uME5im<6d9z$Qv>C-I9tt?gfe7+2{rxZ0clGRU8d^2XfUzh< zRCu%(PxXj6;z1ztldF5j6qr#G0tn(*{f&V>jY2$sx^eXQ8{u03{}wn=P)CPfMd`J= z@`{DSmTC)jOb&}q5P)HlLvedRUOjgZaNWMy<+AtN9~~Jw9-)HBAGhNA*5PpYj#~ek zjZL&n&~W)8hIi&n-TwV+Wiqd{btEbinKHO_b9a}`y6$!QR6g=Wrb3S#UTy5HxIp0~9UduiUR zXA|TExfj&QU=NNUH~eMytt&)2m0->7KH{kMF829sp$_K5FwC^$!h*+zg+CC`$>D0F z5J-^%sXYm8o$@Ph^+rly)`tSUPcbvY#JMbV)B2}|dP?^l8u)f(+ z6jTM&QJ=x*ekNjQu^7ue(soU<%vk1mHf(6MnyO0V?Yho#qu+b(zh4l{#x2eyZgI*F z$6>o@ngF5+KBE6rgR>5hcxYXMi9}wEf$6}%sMj>^VYhE~q1Cgj))5XEH10vSEzoSR zdY9DN!|f)md(dNrpWC^=&s;x&Y&NXE0wrY+Y+ix87SPWlx7=|{sB%<>5rK#&>3hbt z&Sg*(jCT^naGMLc2#FcTU@*b>A`Og0;d?M<&3ei3jEhKYY4$nJui?ik@)qNJH5`5` z1uQb9ULh|q>QbeYOj4RuC_w2~1wNv+CRZy5_Yxvw!5&3aWMODFAhB zu!a;zT^0F#A!XeP5Si17rY)*gd_Jk_Du5?Ia*%3SzWn~BO9Ra1WHWPgy-_r8bCk8b z193|)0%8Jb+uE7Z$hM9x>*u)uuXheFxy)SYh{QtXCMyg=MmLH%-R%;e=DbM?t2-_~*YOi-c`4K8gmy8UHyra3BXQ|D%{`HJB4vvX#giGLEI zd?!w{Fu(sBb5rz#2aVGYUoq7oG3tfpu0=b3T?Lvw#zs>h^vkaeKudvccM5#n#$y+l z+t5I7)uh8;lGlW}yynhjFfO-Y1A!Z^@a)GHGck2(>X9r2$qRBB=wsj*6N#s6K7(+< z^3{X_w&wuF1mvvM0ri(|Z1iz_#S};x!R_L=vP*9JTV(#3;F~4u9`;G!ZhK&Q|6L*C z|MXKn!^nw@`S>pZ+-niaELu&K6@*%?r}7<06aF>2a?H#A0^fw%b4d{ zckkWS2>c9Q?b@q1Hj(*l=YC2rrma;gmsP|!Huxh-k(i>v${GGCiNtTMTpRTc4R_gD zrT}Ve#h^OTLj{NG>8&tS?gltxVQya*a}~y1I^Q3AbA2*?o8WG!|(JwzhWsTD98tFOIfqNAB_e{l0gX1O$bjm;wnpH>%R=D?ffXO^!1RgS`g*CY8h|tr&Y~?t(UB#wRz+9ceJ*gM zR@}14?@j{y-G};Bt8Fo#CZq8MOtkR~-;C!L&Ure`@%dzWm83*cCgw_2`dx~O*`?~z zVWp~a)UJ1qeh}Z)q-_UB?+#lu+Ci$t%kSAZXa;RFUH6(>$O=o#xz#31riT*ud7Ii~ zZ5OR}ZTUaELpIP80*O!-wSo0?9pEw}z#ku)k~gAfBR9YW;r7Ejk;i0?Yl2Lg*)c78 zh{;%Z6!%@<8o-N_QN~D0>78g)OD@SOblNl`tgCVOOK-vHup`UYRlz*YAgr#Cr0dpg ziSP#>2D#3vp+1wfxYREE zm>gobP-(zvLcC#zb6Czn8HY9A31u7KnP6)3JatAH(2JijBUfYRg@NDv$lEvscOcHVMlE+mM8 zA~%2XMv1MUiyI}jjm9Fd&>j_2D)K#X@Km_p-_cxe>FT;HBRBEvl}-Sy3J9QzIGU;o zLAj>_t*eHE0-aSIP}%ecI}9!L@_@|K^h$@`?Gyz?&T2ZFsmr}xf%-!9$|^@X(E+VD zqK{2lC4iDudZTn#R8~KKIupa*IQ~SojRSoo7j^)zX2TK0tTORXjaAK{t~A_C+X(q zr$M+CeY9Y0h6o`9b)#4!YMw8jvJnP$tm--EMCpU#7IY%RVs8l2Tm@865p2NDMDgCU zojj^@oxx3K&P}HuCfCz;Mn-ETF#D+>KL&j%psk7lt|f*2fJk7h5~_rJ@I0bl`RsGo z`h*s7`|6R+euG;W7FLm1R^OrzD(qIeGgcy!aN~TjnBM3r?*W8|8wB`zL4Xfb2@}w= zT4cAwoNn<rbtyXh7s{S!`)JCY$J?7 z93u1V)lAG_pK7z%`a-(eQHRD52-D}P2K#OH{=s`dWd)`qep56VE8h9Z^EpIECX1FP zg*)HG>Y?TL)Ojfc2h8cve;QLPyQR)=qggZ^+t`40FuUn1!wMYY2NX9rSvnc81Y&7y zPXy12+`>3>f3T7Fsg=GS7COrX4oRt1_z;K}_kwuwvqVq-+8ll8;~EtFWVU8YSKs^o z%_R!aj$hrrn5sJ#ynJ+jDBS%H{dz}PSJKd9h=DKN!|{h>N6Kxmk{6o#@#ztv1`jK&Fg~#ln|B^I7X~o8@wjxKzT`R@$rlZmUAD+^?-E7l%Y;HL%Aj?d(ig zS}dua?(dR(#7!0_@pDOqCZerW{zI|nztj0}SGxbo$eVQ)b^x1;rS^*MoYzq%5^!a1 zmfau_b2@JP`t92WQq#m*UUHfvw&B4y|I%eJ20HW>oj(L~I}2RQ*8zZ(hwUObKLJl= zElB@tIL)-9xJJcW$98*#B9KM!!zVf89DEjReoDGBr_g%(>p@jCp>NWIdKBwI#ARh3 zWe+5T)*zSw!=QZ_O@LWG?4nmX$pc|?qbMfwkmgQ#c{u=Wou$XSxcY|vDD;lLY_;m1 ztWd$V+W2A-kMI#Jpe(a-jW#2Ph?=l^o2qsS;E4(v@H@zxV>bwzt!^v=?D@^_i9`G7a|rzoiwM{`mE0 zQdz4dTpBU?w3|~B1J~j#g&Ki}d9no27tU%Y*X5Sy4ppN}rxpSG1)0uMBJA=sbEf8; z7Y}Z6!-%=^{N0a|Es|-6vH)-{sadd){{5L}f*`H;`%tJv)p|~)(Xp_e#_8uOv7)7g zh1i;vRpo>;?)BVthKPM6isPuMSnH`-OGA{_Wvx%KVK3sL^aZFs{2ZHhOnhLFbjnlx z#w+kQasl0*##OZ$IZa{mJ)nRkOUO+r`s7VnA?)Hhg&MUg_m^tdV1EjX9zj1o@4AJS z!3fh3S^Nt-QCff25}0hT_kI40UA7n}7NIXk()2daGx#<0>fay#slb2j*7}OkWlLzL z8MWjsAy^a@;lo95E#KDd*MOEh&YthM3s)Z?yBOmG&s)Y82SqbKwCHfKDswm+>VXnr z9#9bhVGxDfgZT#wVCdV*h^2R2v88y3yQ^ z7v!-Lut6y>jp22NHeK>=(0N}2Rotm^-FVK9y!vyb?XYL*d=No ziSdkL-}Dy2663(CO-XTGTZ4=XQWf@#rtY|4#AalN(4|tLt43z3)q0yvFob4i(gtRE z?&g}7#u>2ZL$!ff!7qq4*M&c#>qN zPi;2}rB12PRH}>rF&t+2yMMo@Ug8wGw*PqRWvj1D8gZ*2vi9w{IKc<>5vRw z6oeV9C6;Rv9Vp-xBsTi*d+Fe8|jyk$W_5$rt#7nvYaKa z_mWjf!j{aoaOf^@Is zz35|eAhj}cG9Sn2?l{BfD~C%>_BoVNzZe7}*Gd!utx+0NgG1Lv*Zupaw+t|yVZK7j zY0rYo@XUknfpp@A24Gl30dSi@uHNJ*4w6*BM=MBDMQe(Z$r4y)qdRs!-C@_~XIUyp z55EBF;_FV6@`?i{JXdyCT6iNS;G|f*;S>a+aO3kR7qoj2vhiWS=T7jpQ5XJ%Hh0B9 zFU-!-)Caf-W-TwpUh=(hxp&zRPYFw@`5xJ4p7XZEU^c6>CsU_(FOh}fHL$!r2b3FzFF!Z2!gtR!*!9&jOfOxG?=7*m z;uhNYMho5=%s&3yySmLT{tb5<}^n2iITb4yiJ7ewpvG5ngvvXJSAHghqyYUReD=M zR=;=0_C*} zmAs?5W6T3%uUj2>uTfN%s2FpUD8^o9I;Dy0HdcwP!m`y{N(5E)HNt?rp}9^%b~Pz2 zI)S)UEYw+`{zAZ3e)y1|;O7Cu9=KuHjpTJ!;mY6u8io)6j)txaBWj`T$oFIrT%jz4 z0|%pQT&(7sWX1*2_4JvN4}Sz(FVAF6S7OJHfBMKHk3a4VhZ|dVb~A}9JKl~&NJuPp zi6bks0+TqtC?wj-H+wRzpuo!Q9&(Fwn`*0vSp?qfDt3bnM0=x2c6~@%J7*eP+a4HP z|2~hvi*vMbaeR90#wd9{cd5X{*N6jBy@)wF_B_YK@L#7t{zDQ@%l9^^I_kLaoo9A> z_`sXV{E?I&rWd(gBSZFP=kVMrb}o$zZDiPYXF-U5IxJwP9(m-hB+RAZE{nKusLfyB z&v}evXDMcRyGb)l9q>?*1Bi~~Qw9nLi0>orrtx60vBfnBnY^dQLCz_9Tzm-XLL`OY z$&Q)>@n;v3xlg5KCLl%oodUIR`JaQZ@ zqSWL^@uMI$`DlU@fX##q>^-C$kyQDUSnlKae`CZDBsYzH#mN5ipa1L&B)l*{2^;<9 zXreGc;UsR`Qvf&}F6!bH0Zx3lVyI5^Fjz-U2KwvS9mNTXzLIc;Hl)*}ER$(&bEJa6_Vg!zoiJslx`d_D%AOc? zof&yKerzGQW--SSvjZc+IZ5VVZX0t+Zrg$iQzT-pHpb%dN@pr$kk~}pKRag9$_zi^Om5%tflmAn(YZ)Ey`7?~3% zR?qVJ6_pE?)x}YO;UjvPfxmJ0RNO?9y!UzuU!1)Dd@>xRQx!FHXWDg+;dxs@?O4dM z>m@DOff`fC`ODozAdzxgwL)3Bm;f7CYnOCW-tH0dqn8s3c>Z^p?zO*ev}CK5iqA z(W$7%-#;x5v>{f1@z}4YY@>qt`IE&z-wxbTmM3xb_qh zlzVPL>d=Oc%eP+#7EB;~J#MO25<$mQ8H5yM(iTIC7Pb+%%I^eeqeZMr-)5jl=lMf$ z0&GaZyAJN4+XKm-{4=(IRLGu!0%M&vEvh-{V2 zTI!YkyZ)jp;tN4bye}nFtAn+SjPGa`D*n=L%UJ6*b#5AM(bd;TTcy>WuxnMju6|w( zNmn~MA>?bKS@M3AEa;fuPILk{=rEVhUt%l~dd^whAZl2<%t_tNwp2Q94uU2KnAL6r zO%M)hg0zq$Ycmf#a;RHu;itj5CvM^JZ~`IYE}$VxsgPeHL+@Z2*VEzpABpa-0)Rxhlm(ej8ql{$p}KuJcN z`{L77DtAk@9nr6~>W+BI!S3Ip;0$P$-w=`(n_jo{e+y0T-0&q)@)XDc{w}oZ_M3yK zgXFt<=hcB9(Kil8Zitcd0MOOkUkueU5VvwF)D%`KW_=55nB zz#EZ+15FwxI=Iq2k9GWJk0lR~!2jjIC59NU)4>#(4fZ@2fFoEoQ2{6cCo#TYhM2DN zwt;O8nr<$JYnPZdv4=BNBP!724_w5MI`Uw5UuZlpBQt zDa3YXmDVW+3l;^=&xugPtw~EH!qv_DR^$fiDhIj@4f@W0P?j>PN&;Ms$t>IIm(~n* z@h#%?beH%I|DDrG&z>O1n963xe#bl-qFLrKjy`f@cXDZ66(Al!l@y2{WoSamDG}5e zYUU1)Jp4WQEwN4uh7Lrq@TnJ}Axt7(Huq=-9{A?GpX(5zC z<>o*M{T39$f!m5qFpM=GR&4fI*m=Q`zwRoL33mSP!E4dka|*jW*sx4)5RJM*ndyj~C!_|D5~R7mn#8HKwZRT_(06eT?%U`%Uy~CD`~F>$P79{V9rBRG zw1#+LHteO_fsYoi15DZ4H2Gm#q*67zVBBY}=1a%^x2}9@Pej)U!qrprfiT6#_4ob2 ze+w?@MP0&?m7q%SpMt6ud4LKzdt}a-UIrx8vHt$6`}%zJ@xBDe8fU&h18NS7LXf-$ z_yW*_@}UWGQT!G3pdhuJ>%08A9ajc$G6LRYdt>@Z=sPE*mgfozP>2vm{s~s9Sj|H- zgrrn98nL71!r+uGn~E=1aohUs`32rke9_=7EhERtD!OYvdULB8QHpL!%uTAjO?r%2 zWm#ek=^Cn~F>zJ>_ftx{po>?Ud$Y#bmGNupH2zc;1hoLc$O>vncSj0>TBr{7=NJme zKbmBEIy)I{Y;BA@^x)E^^l4prZ`#5GO##}HJ*&X zsm0Ua)13!J7gnUKhnC19NKUrU`Yk;Nt{GY%{(#dp-bPwjO8hvwE;MV4`M&( zVT#KqQW*7|=G@?nC*d!cWf_UKq=%z?n<2TcJ0a}un1`+>Gs5apZk(gg5^tB>VONB} zzMMWlUhkqm$jwGfx)$=Ib^- z(JZ7pY{l_Bi`#u{%O~xk3MXF#TVRg>RtZR6!+$GX5cqYv0;^|&4i&8_18%OyqX}f- zhM5dXZiENiT-mK~!xjv}1{E7e$?@ppb7nsrCy$f8bkPWTg!Yj+L6u9{DAsH5j6{Md z%TO!0TM3*#Po`OESn;@1ZoY5IURWua`pXFQfIDIIMA6XAq@&UAUD@o&>M4x3G3jk5SGk(|9R2#hph~0U zpgeDtoWlq}p7+kNqx5!l`?>Q=#ic^i;9@8~8(g zZ-2eLd|K9=FeOvgK~rMajhj8z+D$j^V*VQ#@D0_9EEb7Z)o@3x$Yhpy#TFY~R<^3m z<6T)xzJE^B1?PG2q17x}?Ec;t4{)Tms9vh|nXlw%{j(y~QowNt%UU|?>CK@_b;Fkp zdd2c`iNM{xetW&bRa>V;{d2v&e^#~LHIOxtCu`+yuUFquoc%z+3z)f9#P7uP4~=wGR~Lq%%vtCATme^BXTHtHiw1lD3|6g zs0Inkpr-cZ#n>r(1YNv*QzxdA%y}H5q@Vs9RL5#R`!U}j+5F6UJ$=!!<%d`D6*BHs zuWl>nWa$Slg-0WD5}N5#^R-%@s;_e~%sUvVQ^H}C)z1C(wsbaO?yx1%q~WAh8MwEc z+)do77~bXOgPUf}<%&>5Vnt1v2#f&pZaeRenlL=+R zR%~J>FyL?niqeL~((23*Krz<5mAUokQTi-XpQZEDo+ASSkg;U{eZ{D{1osdMN6*?t=#Nmk;h6B7OehE({ zm6j>_HVa=_A(KgF#Z^v0n(sI(Xb`%=@_dB3f6iV zitj(HAcD{6A5#L2y2O3`+c&(}pz^qt?W+3v_kz=?#LeY$2uC84HkW}`Woc9Ges=A_fSrTDc;JLVlI3*-ifi!lHbAsM@n znDXLeH~>fO0j$y30u5dy(Cmfxh|N>QS^{bamMF*+@>hPL#r~=@SZHCAA|LMFeH*&p ztxY7L#ZW4sEtByrZh>@8Na)ZB$|QR8Yi$avzQo7XnLGdc-w#BRYTfM@gHl)51wFFe zqKc0Gc1fwQcR`0dx2Lvhs24OQdIs|v6G5bA$gcBA-5@Yv5qHn5lKdugc+TK`G3How zXO!%x7b|GL(JBydiL_h-eLk5XiEOIntGPAn>Xde9O*E!d7kMQXV}$e#x@ZObKLy?; zo@WwkfBw`?kI*4Y|B=`Z((P4Mb7naj%SPr^Pad2;1Y`_cdKq}rjy!TVF1@&Zfs6+U z3CD*&IAKqX4sX-IgLwoJ)akagC*EQ#yC=w1#Z?6^dEm*hUe#y~3?qR_d)!uZ4?Z1D z@YHPUa~WCg@1JG4*60OuOZ1|_6&-qgoqNHs)nlEtfc}w5=AQLNqveE0|MSBilA*N9 zXy^lWwV<@aEtCk)m?AjNuzopq|Mab+Q7s_jl&w?O9P+BYjhYTkbMy6pW`a)spZ-ht z&Z-0lFZzGoGi=7|J6dCpKQzJNvC1T4za>A#%Z z^N`uhyxak@%r>;RK?urQ^^1o}pF|@l_!vfX_cLwQ8H<~MWZkrIdQ+0534mfI;fo1mHg{g)8unPNI;@E!&s@&v=u^2dreyawP{l>p1H^fsyc9zuJ?7p=SyyAG->-8_bu{Rka9Ujn z?cGZdr-dNU?0_VhS0qC%+>7!!qiAvTkI+vxDC9dgxWjA*2dNPcxmcX)SrP>PLg)og z-_92qnDC48i-p4X%<7u@Wh1s)>+n)nl4#pk41p7*pl@D-@`IE)U~E;CJH#1t$lRu^ zaQ-o)>Nsx!-zpth*(8ryE?*}EJ&S2;JGHsD+^*?;Nu5WZm>+DfHSS7@Ph3&sXw%fWBtA){n~67>;|Yu30?Sm#(mkuPMiHb# zZD8aIo3(nV)TH$V=yFT#T)V*#j4WT}Ub=j79at4s&K{jvu3Uc)y2OgDOKu!t8Y~G` zZ84D@r*Gz4ih0>XM<44&%miyWjr2{Z$+^FDTA~466{t_qwRT%Ptalk=DR@*KNU6^i zCb*bT5xC$5%7hR4J>+$MV~We3KikaV3xfP)Y_Hiq9lkHNBj_*3X2<+v%*Xw_I_Una zb@fA^+*u+Q-14V=3#mRd?}aD!2Gd<{k6m3kqt~1@clS7mx~mIV60P(#6EV_{V7zCg z@AFuXSuh;BGxw{|;gP`yV#J?Tx33%mPgH*2Jg*`bK2Ndms_AtCMTL}Gk-czpgR&aX z_$`)z&secwc>~D1fF$Vg+`q^V{K<~?j${5G1$-qEew$FvBUiuIID2Z`2o)kv*BP1F{`DVYG;y2+EL}3Q>XsyMes!0L#OKA7g33g=4@A%^uUYUET4Pw;>^` z>WlI~e=^irDcSSPGtxtcNcWF^^u`;4!-wfL<#U>(?tT~Xz|v*KX=ZV!%z~T@EzfLO zGg^UsX-EJ3by4Dv?}!t1oZbQBq4?8cr>a9!rDPrl+w(PNJ&VJF;7MSWWuQ3DYp~$r z-48-JX#f^28IQzR#lk$`G?Xwb2=F%HM;k~8w7@q=YA)AA{{!|PzWmxAwAw3OZPm_f z+OMfK&6w|*1hzc+2%cRu`c#@sLtrNn5Dop9jxmAUD|YN*p@^FQTq?CMt;lq6by`7d zIAET+J|*<{nj~BipSUiVapgiMlmRG+2dW^mhrd%5B+3_a-waV*kjxGKfIjB`HPMaT zSMix>>3!`yrK+THx4pB+!iU9o*}U0>dxnHOAuJbAJp|3t5RZ(Aw|r5HuNt=Cg@9K4 zo&#|XZWp{=6DNc{MzQc6Upim|QWy$<`x7AV`lJ>0)^=Nc#V?xVHWR;vZ?ulK0q0-r z6IIq$fbmhK#4L36CJalH_G`{50gUE~O)nsZ=Ea0qt?H;D627g0FWX6eMjPm*)n#3o zkfzQwb5Z@bJRX*MN*o%`vIP}R=bS|fxog&Rr^-1vJEMcoxeTsF%Sl5u?8=2Usj+v& z^IOsW_cMHrh8O-HTl{>w-dqX>DY6QneaJYnBpqz9MpI!^N5#mf>x6dy;`DtdS+yfA z4;8ZzVe_K`>JSSrjDInxXV(DxcS1zyJ2>n3Fxd8j&$bl^qJyi>RvXx#19Rb2=5;W% zhc?lHwHsXL?o1H&sDX6nWbp7w_nAe}q!@ok{e|ruIj?E?`Hw&T;ge6^lHrQm;)%1Bd6nQRv@sg<)sCD&;nJc377aFmutsPh(Oe||wxXZ~L z(ix@AGoxeOZQGWRL4L;kdfBI7VKDc5X=ZD9c8uK3 zyW`7aaqwCb_zt~CuLyM(T(2&hY7wZo zmK5J&N$8wLpzBmmi|K@R_I0`u)_edZhczEo6ZwS|Y<@v=Ye(ju2k%ZJlLGM1yJLa8 z#9SVdb`*voz3d1d9xNorW=M>oO$1Oaj zw&M5r03qC+(He_9NDkBKWoUftCU2(bhQ~8XgTAYSQ3^d-Sfqc}9KQFles~^%EgM$S zi`!M@LZ8sN%_q0;gFN#G2}6^ zM@C;z^z_C~W-@4LVj;zEg4)fCXAC0|(4ayI9vD&QBNWUFm3o|2o$?Ktyq|`L$S3cR z-_tTZSpkfA0G?Hn$20V|NphptcgtO!Fsjeoe(jzl-&)&j)e1#cvBYI;p6VS8Vq(N!J8A<$o1N2bz8 zIJdRP^)irB5_1(=Z_i~5JIIho!%er7^u{~sVZYHOFOw)V5@Ct7TwJ2Fkf?_4;YnnQ z7%Xa2Q48MtWO2O>$SKg4IlZ@Oeo>oWZ|CsdPPqN(s@_s; zFI!uS-3okv`qrjcACfCk0^-fM(kV;}OBWI!-GcDn7qW7lHUaEQeq}@?=I@EB8X65C za4D!r5-^vqcS*t$R~-PRoShlifZ)>G2}^I33)bk(l06A|)AHFU?1$Uiuks5J=9h{4 z)b?JZ&NP*NuxnR>e&D1pTkHa1VQRq@eWa-#?6Gkba;|%w#o(OQZLtBWcOA6y(GYAq z!bu>-UwQMc2qzALJ%Ab50zOIi<&~^&-@hkbiIPfODY|b4p_PA>V=DxcJVh9HPGJC~ zO$T}kn-#Ds#6qSp8iLvo2j2*#EwiJ^8Zg&k^9A=Vo_Knm^|C%2pF(eN7Qa%+izkgua zvgi8_?(|AZ1+`ml^krswR6r&(3$^}pW-^P_jy|j2)=x#>oFyT446@ml%smg?*NF`E z#2x$g#5{RsR6d&_c6!6r9X7qZ@x;GK}Uzsx;?NCE|Nx&j)y4O1SB7LH4FTr!e1IE?|fDUie24* zdrV`K$qq&wq34B0Nhf_OifVY3omB9TUcP(w(5}v3L-X zP5r3sQH0+c$M$nTj{G zGkTMlm2tHb73%)NI5Koq@_cfAH+`M~-OIa)mi|9aCR2+#gS6dUIWR4u^XPyqUMaPh z)Lh(NTV!{}70s*WfFQSE=3=ib7k_TaD9HGZ^cT#IAnWbP+;#81B*KLwH|@DO7KW zY6XZG0LIvRM2W0UfChENMLA``+XH?AOwJ@=}(~s0;p$1d8l%`3y7NYkf=Eoh??)m9v_`` zB*DBGe{*aJbGvAGPcsjwes$aXh10KV;K>vm_ohgh8PukYX=8=1xk=;Jw6+C;7caAe zO=aczS0~h}?2hw6@>W#3Y^$Kb9E*pIK65MyD4hHr8X^-|gkO@m=kNnvK$L@Ph+>%t z!eRSTyoN8b9a9l}Xr9cCS&Y|=EtgLOA0j9Y22vB#sWZBZuoGC4yPe1e!L%tV)^8?D z=OtftDd`Xw3@zxUY=nyIL@b& zMfhC48(9xHRCGXAant+nz9S9}$XswhM&|)MraRc}2_M=_W#jqH(mLPZ#%KPaic$XsT&M; zLfU#w2n=^5X7K0?qerLo#;~+u{s02Lrh**KpQ4Y>Awx$JWHc5dM`Gk>V;68Xd=vu= z+&eM)ODI4T;Hmi;ne8pjWK$Nub=({a3{CN>9KAY=Zj&eql>%~m+zW>g;t9D#KDM5H zQ6J&l1P6gLOT^+9-Qn}L(C{R&@?=5HhysT3W#PO|j%iq?!YUt1RTkv5 zrmKtB+38}ZlK+d$hm8gO$dza~1Dn~3=`i@J)x~=d1rAF$sM(EX*&Q)RfHN`fff%>+ zW6${@-1`ieW799`Z|SX^a5VS-;-qn8WcToJfZp2RwIzY5;76ju2^~J_^g`s}!#h>@ zn{x#mR;L$dVtGwG4El0_AemvAgFaYYEDVVa`S|+aUlr3{vBqT602~F@_j9FK^rk-OW7^eiqS#5vDFdXU9KHr=KSe(mPY+3K(xGnyVNI-&`f&bH{RL z)4wwhx3>GAq;GdTOW(d_WX@7*Bj-hqle!P|HW(zz%U~;8!vEj1ZqaeTbq{B)tPfR%4u3}np zuYa1!yquD1G~os~E3_8ofja40x)VQW_H0g#>`h3@%An=~#Ezf}p2}Y4D_^KB?gQP? zeKYAAvkg|-GGH3;K~t=?tL2TeJ;0lfc~-A*!-k@ya@KIwGk%C?h>CuhGZhLCAq4h3 z>ISDCSt!f%#ys#>#$c823SrSQK4$X5VS*|qd;vZtk-pgh2v#QF8THxslfgCALh?Gj zFjh*C&UHgvB$rj&7%5L>BHz9wJU{52f{tF--`xgpMYKSien4rid5>I7+IU3!e(@dvXk5B(j%$V-*M3DhzpGkl?bVA^vLPGXNA(_WIj1| z?X_>wP4U0S%IO?tK8PkZtXjLGmM@c)v|n*md)?V%FHs@!Ffh9DY!Lp6Yri7b3ccx; zK{p7eaq^78!{B?1XEgpjjB7+uYpXs1hP6<2nK$3_RzARyP|Kk`|m|5Z{*b9a;OBP>;E7vm$mgM98`(*__%{Al&8vQyZR&nhP zo&-#q#APy$(qZA5Y-X;rLPo#l+Kw@NPJEzF2arnq7ooF!k)$mdP-@oNFpP1qrGPv zL)r5_3Q4F)7BoT~h?W>d1=Y3r(LBaXHaL!>xIqP@u&gRJY{fBV5u9;G0h3&TI(!ah zcJ4k>(%t><`i6_Hyarpz@U|^$nmW9jue%`uKZ|X@VjZ3CGkJsoVci3Mos$>hIzNjV zIuMUxAN%NR4)}}s{up@)U`zk?$qg!L3E+OYQnijOZ&g`!3a-Q{;VHGIrwrBe%8g|U zy4BV5%kaKy{4+!O|wXB_?Y?sZF&Ir8YmRzwpZV zyzh6CA=KzJA#0zEM56;R&V-rfTW{^yF|cdbJH*~-NhG7tU;(SE&|pncAh;jKA&R1e zBWt}bDfwq27fo{9pV2Y;DN&NIzW9PN^j}O1eIoisB=Sa-^srMRl&(SN*`j$sUQ~cr32MtSMSkKCL^V%QJuFm{sF!R^1l` z{rNfADGV(E8dCa|rDQ%F$3x^zs3)(a8_E)VEr_>)l~!q`l2=K7N6S;_p>s9t|H<|w z&BaK0y)~YQn%Y3k2D;A^bLm4*0*xz)3eCZ(lmdJhXN>uB8hM0elZbI_In8!m#d#Y1ec2AIun2{Eudx0< zO{hC*R`MctUW0fCn#ez+AXRx|AaG+acvr%d=qv|wMSjzww`v{TNqxOG-km#bAsCW- zm(LPd#jqKWeja;z;mBht@W);p8Mfc~Jn@ z5B>zq)9_~$^{ZGV2Yxf0HGU1SEXA+2w1LV4Usgg6F(tV%GPhmh2FwJ2zi3mOFyL(} zvl}#hbzsHh8IS{DNvz=iEyhy_5<;c=lYd%X{EXCpO@5P6*!kUDTkd7fma#3&qsj73 zM?brzL?O8GgG1-#-U}`M(XqS2sqS~_zi%k(P8&NxFvI*3ibO~(3W+ylN_fv{k}9R7 zoai~6dFO}B3aH4{jW$(maHOVf^p$yXt)iN2=9G{XJBGY^=3l{In=G-A-foB_dbNT~ zr$Q_u9GL!a8NzUd(fG9uODkMUXLLL_tNpd#X^mmMK_AV%5L&07c~K9T1XW0RW$~4p z-SUd6Ds_XY6<*dE!)|@`jBYb|9Na2}j99>T)SFGUSv}!_Zf(6r2?%6?kk7q`Z!p1s zn?hLG5-D@1&aVc$JQ25Er;^%5Tp^E(HEJnXZ+(A!!6AqCvl^B{Sp3fhj3;{q*vJ4; z0|O~M;~M~e*D418JSj>@B-nsG9VK1 zzn;RxV>A^0LtJGC#)2*P%d<&W%wNK^J4CMR>uY=AkH50mgnUL;jzD0-6OaviM@N}i zT2olB*GDPmTi%~jLs_ISu{Z*!mVk(?9j{#*Sa9|T)UF$+Tn;B!n7DV^|PyO2)0C;`a$o_T6)K`Z@Mo;JRfMYobU8?z^1@{FF zBSADD3Qhk7G?9yXiJBgVj|a(}bRoGo3MV2}O2kH$%xfkBzNtn8mN`P1giGs@;6RUo zLvwFTmtP%29?rU>;L5mH5I84GcahlAKPox;J*k^G*-fvud*5jmL zZ#cX^8ojNf<2Jva-p%yq9wt9XE7Rv4I-jc&o^$8&FukH?^y$0&P3?Caoo8rnP^6Xh z4O-d{^wtd0Tm5J~iv;R8JMFwaDs9N?BB3bwN3qAjUi{%WN1wRqs;k2EzvQA_yLOel z`s%Bf1ec43ubdZF$;w5t))^OG=K&^&t;r5-5a+CUZfVWP^wKBmSZq>@IhINmR>?7T zmHfcG>_bmJI!&NZay##XL*~Q4Jj#W>Rt_46C>@z%d$;@|+09Z*`=^Y;?OzAD@N1^r zd~yee9UJCeyw9%5oVQ|zLD3Tk@9Ytt7-eu?Gv3|l^RorW4(u;yvjp4wv2Pd{EaEl{ z+h+D@wQw#TyMlQv33%9l+yfp1cYd^gac&Q8e%$0om!}h011(DW zp2Ibx*XRU>2vLc}b&4uov&t#HCnQ!WJ78_Vx7Wk?lgx~%TEgW5o7n01l+--3QDWk6 zdZPZH>58XsWW`4icnesQ_8D`n_3#*-G{%x_Vw z+C8^f1lS2d?To7!XUn#>hk}=t*sHpXLLFaT<<^{2Au4q$Y7}LT<`Q{jpIKu_Ie2gB zOng2^Y6Uh50i?)ts=E0zonYrt+CQ{*#T|BGxvcu(4ds$e&(=%q!kYUTbzOhT$OD9t zV=?XVs;hyV+GY&|OywgBJ?h%I(@R<0*khb$$B{3%ki(t^6~d+gIbwXQhRFaQV{uRc zt@xyQ5DeEaB@|LY{&}9Ef;%=!WHUlWw~_|>GZ7+@w}wK0B7dPn5!jtd)heGGl7qcT zDB#hf4RWiXnP+{qRavQQkQj8i;WJAQ@#hu;PL)Zd)6BbZdbD-8{W1CgGb56Fk=c^_ zh1o6?=G`H9Lh_Qz9Mx+LagU;EdZ}F3)_(A8GKC)z&sFqAcEE->t~{p-%`J<>wpM^Y z4on%I$g<-qNaJ||SKN5i`N|yH$?vN1Sw#45rY85Rt4M^tSV!*2(toBl$6PlpVp44(|R43y*{G8P=u$%1bPh4^s5jIJEaS6E}UExm~v7 z_ZgwdBnZ4rB#9&R6QZJ@97@n_XLC|4JTwoz`Y8up8!&PgWfSwfhP=}{#Abw|V7$(& z#IVdIwuu784uWZzxLX@?|$_8=f^+#=>GeO_#gjxtBBXf;NY0G(nbQ&A@oKo)B<_djyD2S<+CyTBgYQqTs5 zw-^aKzvSfQ8eA-OFU4YtH6^qt~z~kA!ZhkU$U`T2a z%sP<$<^SH}Kk66DmEKCA3R-IgvfCbcgd90S>|R?c69;xks`Esi@{twU2Oc}p4SLJ4 zq2C+VL9GmOQczBZo23;q2VHdwW;ykh^Ok$v;1evZoH?_yZozD)0hAiNwe!GMR3F{A z+$AxIoD0rZq}SAmOBJmb_tT#Ssg7~cT3spd2c_iz7L}5Y*1-!vAtPy4tg>J9ddhcE$K3YKR%oxpLr z)jOnB_!^ryaRh)v=lsuM=zOxT&)ETL2Fcfy5cTonzY~ia#0H5^sNsE`OfJ`F7lj1g zV2hM5;kYm9K5xKEhSPxJj5fk!s^}0Z>HP_DEWiWMNk@mATu85RCne?OJn-7I+eFdY zb(cnXgAb<|lWSI=*=X*Yb@p%^GQ~gC@dhxMJB@OE)TXEJU+ZmB5pjjon2fzi&jax= z*iYq~1v&F$?&8~;c<`pxUipE~cVEN0wV(+BLd5eI)LbGo+GOpzI>j&Qz^O>mBrzG` z4J?D==mh|^a9OSaZuClF2!UH-1aq)1ZqQdl%ft>M@D&5Wx1wIt_-GrS3-;9TR8AA} z3-4>O;Jk~xnxvQ7(O&)s2^bLwGh%~okoBI2E!FWK`bKBixLt8hY{xfN_QeF zIjE^d8$8fY0kC2WkkKaD&aljr7t)?xEBQk~@0H0txp62!EQ0Fc8Fm27(Sx&Rx4$N& z>q)f3Ca7IlR=Kn<01En+L@EN3+41qg7hv5%1!WTc;!c=GApQa^C)imk4z;===uhY| zN7xbHOsG3xminE8Eqn#ohy_`o$i6QE!l0UG`%^s1lZzErZ>(6XoF)yP#0w~-!L>+u z{bMq@-7ho4RMkk-31y|CL#)@(OPG4lZ%x#LbLN3Kxe55n%2pR6=38qZ1bmW`>PtFH zG-rQpUyFW}JI;J4v!)G7W2Q!3G0m*hG`F0)f6?Od2>ps=DK$Wl0U-@&a{-V3o)Y?7 zjXugonkOd>tL1<#swyCh^0a^}LFr--R3UhJa7uVF@q2`P!olK2gJSx0)j7)+o&Xt5 zBnCi%vW?Se?(azftniDO3)AUW$=!6+L_VcTC3c|Xdn$#eZiAnv7dn$cbsLDmXzMfq zRh9g$q)e-cHo%t9P-Eu_`Snd!FenCLhlw-Rtjm7S52T4y>6`2T2{3Rygj zwpJSk0LgdJWtd02_PAf!qVUDYARXl_@m&$5e+o0ROB|jVR*_DitZULeR-&i_#U6FGE`c!-E7g0+8CKB0(gyz6uR%Dfea_`5V=}o=)HB)07E9 zeCH);o;|T)9&keWv(^O6xmV8SWn(U@t47MczGsM&(N}a^v>I>A`JwkBiz4KLz?1ZM zOZfCELj!E>dhyOwb5e#foYktDtmd zkqJ9rY@76jIv#(1%1FdMsn%BZX|Um4UpVNtGgJOed=FURDWE(6vJLS6_874o`L2t@`bk6-e6pTsJOieV(lbHvxpE-{Gvm-@}Y`l_L+#zsT$ObAi7 zOg3rhu%^4e(+q_h0X`o6afDeE-bgW;eTe(k98&x2P64wK#N#*NVd|{0x5jQoMlPO374j?d1-f>`E6o57q*O{ji=$~B97waKBa`uuJ z2b7b>ZBcg_kiejFM-mt!ez*xfAbzAb1M7R~EcB}ZN|5w;;#ssZCB4{{R-ts&|D@B$ zner4}l32zf+571VTyT(bk2RT!Sz7Z(5tGob_XAh>$w#N+sH*ec`}f5K0LVvl0G%0P zg8pmAj&s)CIy_7t@9F}_xHkGD5bm->-cti0yje5?;06ScP(E+Jd<)=EWt;}Eh5S4O@znvX)vJ>RB-o+4plZjZ z?;OxZ$WT0)rNNTT5$fT zmwlFeei4A$U|!xG>W%!~KN2D5z@?r^?_*@Ho`^;S^tGP%|^MaHoOsg|6M`a^G7Khbn?2sQ;PXHgkx!^`-@^@qx_{$dS-r`UW zt2Xx33j0lH@20Tr-ITT}@P$h1YxN0qB*Eo&5|`WZJM%tOKbt84O^hBw;DxJz zM3Bd2=STTk&`$7xZbA$~;arga%D-@hi-J)N|N18;Ru-SeN)o}K2Yv~Qwfgou1c8su zAX^xi2|f`B>LpqUjXFU5s&x!VCKKdqf7`tyKPFAfRhKTD8hX)2{RRaN#) zMIVD`&$P-(;M%(*vc@H>S>*J&_0qp1=jLddycfHe?gfP3KF$^Yrm#JJ7>sWp*IQuI z2-pe<`MI*H->S3^k~N18{XhCegB8aX9RM!P7GAgltoC9&Sw;Xo~aZm_pSw8}Tk-%4bCHlH?hE@w^8=0Q*Scj$iLvK~%>^&NaOFzxTkl0S>t=5ms278-mY}M0-R3$~73fwpnEgIu zY2VB$qib5q$lkf5kbF^XIe+KSr+PBHbi7HzGi$>W8%OkzN%h5dmeCldnAO?r=g5FA zXO`vmv@*urN96ZS-c46u8wIVJ@Ku+sg~cccT*JpK)(iITnsV^H0`z+TM8sg`t$@&~ z(i*$So(TOUz3yji7lOHiNQ33X~0sNFF4ju7wdb z@JOKUP49;hwE@OGEbB`GBkCss?Vm2ZV1{w@CstC^FzprDZg>QEiHdqfSPS6Mz?kye ztY}UwV972<5~mkN>`W?mtP_d6&-5sq%BV=I^0l_^Zfm>nzyY#vU+#l5vTKbzI+x6R zC=Scr^T5vLG0u`iE){^aV)H7O#GFb!oqLb5<=*>c^Us>iXKcMHl-mB=zG40H8UZM^RE#WN z-bgma?xSOO$LJ-{zIP=pKHE6G>04As*wNAkw{u`>sn^~=gN^b>p$$J#_&ZW)!y#^+ z@l3Yx7UwZSlY`y(+?7?ltJ4O*bt0E|X8!OKDRPu-p<5O+!Q9Jw#+0V(l3S6~10VO{ z&~QgqX5@Br^)R{swGFi21+|Uu8mqzRLQ+!Zr~Cv*boauA^yN8oZk{uzo$hCTqq3w7 zI%AskG(}f8jN=;M1~#+GH7N*JD2llT)N8Iqzyr+nPsCNCJtpd@;9nJVIh>x7BHR~Z z8vCZUs*v7;MHstpf!Ei?o{I-m+KTToEHDcQlv6b7xWHuV)x9{8E{pP%P77C~YwAueXrU*(r2jEPaAf#+k#LDNE=A62}o;4dcg~( zYi5n)SE2id`tOeZf6A@{K(4B4=f3H^_qNm9PTQT{+subY7rf4_CUj-Tl*d#|^54%A!hVp@KP zQKq^Kdtu7+?mPRyLauiGjaOHE^!OrHAHto{-Ei&jfZ2fE5@?T{$X|K=t~^UDCbB!fcVQMup4-s) z75WpYhh1(1S{qi$YGo@1AOl8$3^)J*b3JsB&&CF(c$c>zj#jg!wXJ6=f+pYrml4%t z1h|6%9fa1cm2h^7nbb|igx%d_>>OryQx*M5gsbtE0TbTO$Bdo%88M|Tb6butV-y(@ zBx&zF{o+f?NWd=b+;JlLf#c*mRzsWq+TZ8UL|qTsOLCWu0W_bslW$qUkVv^puG?%N zU+QK_+Y$?MT(dYe7%_>+lFwSNBozVO@RD{B)=U7EIGF#wpdbn^8OHX96F%WDi+4|< zvD?Z-IzLpbrqK&hQ%$4N^>pytprNQAygVt8i$EC2DkOL!N#n)((fuH%F0tKm8u~;N zTxkb}XPI2VP#kgTgpR9Hvy}sw`yhXGu0LVhNl%8%fF_jA2ykKlPseE&fw1Fq1H`*U^7jiCTrfI{ zl*7YW(kf6#05=BoNz=s;k-sOEPDN*@5-et7pNA;_lq4|i>&+Cj3f8DFYQL;!?}PUa zVqv8j;05b60<_--BX5r}D$Tx$ah`|jzSkhpnxa~c+hLniXndZ)NdUgXD2^GGTVX#= zaLxfixK@O2{(O401Akx^%^6KglyRDuo~AjH#5k^~OKKCKj@dY;TD=z(1dc)DzVNAM zgIXyov;DZDpuNM#bAqdiPvncLN_|eQPT=UyUq|`&{IIL-_yhk3GLO8g-o5q6#+&)o zKYH-SLVe&DBzcj&zox4JciDul>LQdKFj8(1bdUL^&vvRiL{U-rEm21%9TfT{p+qt) zCH|%NjF>d4cq#y3j4%7|PLWE?6j=ByiSj+J&28l-#h!K-KPd|?9?%JmJXK{r`HRAd zs#QBDI|Wj(J!qf5{Y&fb;^o!X9Y1CkTKW2(^%p9Qwqb+K zG&aEZc6RvqDQOT?zOWlLo?rUObmYMs7*AHmDaz(jEN)oBo3^=eDeM7j7GiqCw7v?g z4Q6l7$n-UL@>c=wxs6AH(cHw8_fHjz?ITpLpQ;<#T;_&Sls+Nh+B*M?C6>27`sinM z+58e)t>zWG$z%Tq;XPtv!GiOKhm+)km6Dx2RsZ4Bwy$39FP_ie`Ve?@Nm+?I zkNDqZ_3&K&52qhp%YVK^jc+c42iM%cc#lG@Ki5sc)kUQ9ck;z$~)!hDmsd+poK;Bx7?4&-$EnlAgYtcp#@z(lGoq02*R{$IaXp^3=we?o@pwY^9EaQ50xvVy%%NOA2o1h{; z1pJH{%(a!(Vi|)qxX$|K+!kEV`n(O?2+5n!`Q&3&u-&%w^wmvybI)LZ z+Z;KJlY0O+?BPIkq^3iB*mfJL0M;9Y?+MTR8TfH4ScRvKzrmG$AwfPFtH!`^@*D#+ zTfle~T6q$5N}AjPj}y=C{{+%1oHAf}Bs&~jOdF*~;nrh2X`C=nkj8Yp#8*wT8`3<| ztpuV)8O1#<{PnffD_!HxlIp(z^Bw}r2-q5Kfku5vos;4;4tX3yeFe}J$%8`RtU~OTyg0HBk~Qc`1;zj9 zdScZQ=#>1rLY_xnj5gU~8yA~Jc7bkWl{>I(z8-|$EmIphkov8+a^&7WOWOL3a^qm9 z+R<;2D?6f~F!LAkU1TIbgqD9du1&gnKpTcuC;_+}uJ=>0PY}%OPzog#FV^k?u)K-5 z?SUiSqO{YTq8SXSnQ>yUr1jNmn&1tIznX{rFhU8f{PubDXgB$K%}%M#VdXh^<taJ!~5gx$>#SGJZPS+nH(b-2>(ATThARww!r{aMB^c?Y(;eKkHD zI~2it)0lz1+1J{e%?I({8lp+Q3}YltxVV2X9qc5~4@g2kfY#@u=Uivq6L`}>r}MuM zZQ84ay1p^BrJ4A&n(g110KrkGTTJgFTE~47{f$(-QK_67;Ins#{(`_dDwl~ZeU>|3-78h5cx)C=l9M}!!QdYar!xDB=3Jax8mJA-fR+kytd*G%jc6^}Hc+B2C z$hZlfHNKl@s~arvT!6H6tZ5m0xVs4_rnKBXbvJ$G5NKxKL~6`>!@X3%QNMxi`Q7l) zgV3nIyMk^*7m&xps{_-3-mTRRb&HjlnI+~rC`!OVbToNsur9FLaPkDw7QKPv&MGq| z?&;=foumDFt-gQce^Az^r$W=?<2%R3(lE)?P5yEUv@wAG#t>1&O%BKnrcw_Fk6h;i z(IcjFV$w6oma6$-g+u&|pCwlTDOIh4@hzM@9cacAEV1eaWPo=3hSX_Iv)6?$^sj7Y zH9h(UR}}mNr=2i1^o{+EX4XIqU;I3F!2kgfGFn6L*TpJTEk+2r?gEHPLgW4F8u^dv z_0L|IX*>@Ke$egl1342cV{n+Qu(d{ucuz&rv3>&Q0;4N~;*TSzUQk1;p6UDith18; zKqr*Q6u~9?O;$`|#cIt!MdL9HXZo)M4WmF$h< zX#O=R1>qM5M*+`GE_j(ZQx=j+*hx7~hySw;ZI9C+sB zAEEkgw`5Idxn5sXTeM|>sc?<@B%=fm9k>D(}7XxC4!@07KfHCSW?DtJy2ZHKlKCVVwt#L$Wr*DqgQAkX@JtwwNuNdEP~ zgxJn+zw66= z$yfZZ{8c(T+$6J9*{K4j3CiJX2)Bv8Hhr9Ke!!W;s2*_^ZaUwupFF9~i}Buk~?CUY{3%NfwGz%=1Xa>LJ%f&8PTySwolEclAm6SLrQN~QB% zaHSX^o#&ZytNU>yWeTv3FG9zkU0wBqo+ondo^CA?y2WjaC-;*3)g?SM9RChZA=HAj{z36Uo{K&YlOzr}8g@LlV9n|gTJ7-bNF9d9D*)V9%4+7Qv z?b1C<7w)SNk(?}|<+TYk{^j;YFJ}jKyj}4+flFRbw-|p{eIv>$e}+J0R3^p%-~A*0jT%BqsTxq_VSvqh^Os z_bOZyBUZI-Y!RTKPGImqPswg$XI;yzap>bHrTXoZF(5p#8HgS~2D+f3GMl+!j+%%w z)0k0y4#+uEYU6!4XF8)bIfGjRGI-6otkL_R$$an4d2kp@^9+LIQOgQ#%Qk_3C9m_S zHTIR6%z1f{LY504m>rMtdF(HK?ZI~m7z1W|`WzyYRte2mCHOLeZXTG2Gv#vbz@%UJ zTkIabw@QRFe5p8Wg;7VXizB@LQTXTa$E{hu$&AI63|cO+AdTYM?6FHMz-Ts%u9td8 zYG6Sm)D12Tkq?9J)up6C4>Q+H&~67}9uHYUW?b{YEH5^3Z$X-%he<)2w}UpCgjKt) zDN=yP0)|Py)(F=*htP29#ATPvkCm%^m1J<XC5ty&i(sO2C&Iv?WsSOn4HKuKi5<(sBVLAkMMKN)ql*fnGSblEeu6JxRpxs{jSs(@#AxNAklNBA&~be08xL&RawjrsI44}%D*<^m z81ENa1n?`1E$G^L?5HrmEe5G3Gq4$5k|uX$(8W{MV!A`YH}NFiV26%8c&xn;Z~2ePl~0ubj1^P_dpAqCf~>*LeNw$OjW{Coh!lP^%N}Wk5dbrFw92t0P~+- zXI#rt@>j5j@OKnjnp$l*<8)f}wRy%@7uuQ7aL{R(#JdfhL!QE{Dl1Mlz@N^{#r3+Q z+k4ssW(h3VqDBmuX;8q(*5)pBHkm+Iip7Dp^=Dr-#8U8kcb>A$K)&cU7g92>EK!7s z7Waao3MLWY*2-bgnC9HlroGI&|1baR!qL+BT04fE%?lmmd5jTJW}}Y_hF10^hE(I( zciuiB$M7(e{aeN}a)7wR(Z1FBq(v3&R5?_!744cJkhc&#H9o1l`&fGBmk>6J$GC5P7W@5A*)feJQwhq zAqt(PHO#)9aE(I)dgFlykSS&!SrTB1B<%Kyf#+R;6=O!XVQj_m;J?Gv81*cHfC*Y= z5|+)>Tfnhf9(hkvXL~k?|Zzffix59-D3aF*q?)$AW4Uc=Ac|CGeYL@f8)NUP)e# z6$@!ijUgwr!w#dZRQustwEXd&f924hCq^5Cqjwa5jilp{aof)g5uuc0XUJuKd}F$AP| z>RO($ID_69#s2$RAtq`n<^jf!VOp08e3@&JH*oT#_5GMBFO5m^KS-$jc0QPy`2IL1)CtO5*$T=b4YUd1{RH$Hpm4x7 zsda<%v1`RDFI`X{-rR?x+1$8aCXj?XxMF6usFS)J*DI|9yqVlqLgImUVB1Wn9!U;}tM zb@fpUCaPagoev!5TJ`u$)~dn54v!?j*-_5Y{)1~XEdKU$Lse1d)$1>UF>SjOYttQz zg5*V5Me)9ZW!c6UQz8K^tc52iOH0zwmd`EkQvWSz9kGF&cL#Yc%lIGz6$boZw95nS z8BtNLk&$^fCCBCidj61$(hdix4#vf=D`K)MTc+R+FAWI)Qhj8_;_ufP-CrEY&d+Z> z^2pS$y=q@iTFud@+44}v&~?gEn8_AfH(W5^6E>w(ezDs}KAAGaAgrkjG9DBBAvi3Z zY0oc(auqrvY_9iKjVW`jzqkVpWdT6j zSO;My-IxQf0L&LdSEA2J7CN>l&ad9JmMP~gyI^sGyn@g-{-h^*8xNvA`n5n3<@yJ* zip4d#Lza?SAE^t|v772H+Fr=L!OaDIl<#tx@W+PcmecC0@Bl(ZoelXofONiBK8 zqmMrE1o7mP<^ofwSK%RTrAEMbv>=qplI=*yHix-Vq)Bh&jh(Tqs1#cSlH}+XbVq(X z-=18ln~DfANT!I9R>CYj2HcBd@Ykc>(a?*;$G z*(aq1r(lWc0>$E@mIosU6p8>3mTDz8|2s|qa6<~?THk!r!wOM%$i;-c@s0+MLlQ_t zetcfF`dPKwkHq9ZZlu~M_!mDog9X52(C@~s0~(*Y3a$gQaK0PLlFqd>&IfZk|A?G? z0nDNNu#e~|k=rW7{pHJl_q*R+S|&fsEX<-BnMFTpTnHsFR=?M0jinaA&upT5X9F+l zwrRi#cmg;If;JxG&`RGNglOEWadFx6EVhg2G~+jh>o0yZ!eBjWLvy35?H z2agCpCj7!VF|a0PkUk15ZCN2r_gf&c1A-8vLyYz7SwM5I48{pTV@dDSm&ki!rkFS- zjPB~`$EYlT;AiCn~k#Qo$iidS5FS&l6dGBW310`w|RCKk;k$v@}LC!facQxLhLWypBQ z7}waqP)V*9?DMG8N${l3WUt{{cxvdGhyYsZF$hyUsfdzlq>oM z@HLsjH1yXXiEWhbd}1kM>Y>{!=-jj+5fbM`f%xrJSzx#Trf=+2-7ac8;dX)XtH!Uc z%paj!id}52$t<~{i+b)#1#b*AXg+S80fueo&KFh|En}HbA;ygL9=( zU&`w&z_DV?yWO0L`X$)HkZ196$o)SXqR<>%-xiCSi z_5^|)T)uD}h#5FFg8P`d1Y*q$Hin(Uh{N<4=+d(VV-RN`f+U|u_e0McUiVZgZ=iqH zpe{T*Dzz9naULXqt8xskkk8Y~L?JEWu{9nZUjQ{6he7@#5ZRVw2sqCEt^-`nBP=ni zIvP-+dS0FE#Nc`)rX;`55R2J-MG5T8$omf0D9YoBP7d_Wm%~J7{=l+@cUBmZLgR1Q z4S8rQ--kAmBWN>uDe)`0sjH~fYRmN-Ror9F?-Gdw1VM;xLZ~V^+`^d~b1Ah=D6j~5 z8a>%lG_3<^WKV}liq=O%n~w^zL_(&2)k^TR-~!OV^Vt5SB>yZk7}tFp0bftiB&qgW zf(OlIOn=0Taa^9z%5m6nF9mH5?69-9ML*;fFDq`C9p{G>7!Q_{!;o*c|DOhHhNE-{F4G@ z$Y;>iZ@zCRi(D}WQzGMrk`htJSc#*Mva1U_B)1ersZEQS(2AZ|*GaxAP;X`OS?R2n z1u~a>c}Av_-C97h_I8d==(3B*hXbyWK5baji`@@&a%PsL1OWStjL5gBk7E?nN8N&- zWUe1Y16Sw3{NU-|KK<0^sLTE*c z-ShU(dt~O~!U8#%Z9NA{opVuP&=o&?IDFK?P;Jtgq^(u$&q~B_34;ws@%rMDl%R&? zTF@T{|2F+sCGhFTpds$dh?`77j2}?AFcSBO^uiQhiOR3ON=}lbB`XOASaKQ1>lPuR zB$UcxE{2e8@N>ln3$l&~*TD08MU8(mF8bm);<9ebF?arP7em6k_?Nrak@~{+&we%3 zQ-9^N9q#e@ratrhVJrHe04`xV9h;};!Tc-8C2>qfw%IIb{Kc*D2z&y!*{$|*J$(1G zv5RjU9=vX63cUb*)rV0^ByekoR&7eK6uizgQ{5`^6-#K{>O~f-d3^OcMvu^(R*STG zaaxp29ta+>+QSC35a-y0XFqw4RtGY5LNh?PB6LSapGl}-CBZOS4xHo-vPCENdwIYe zWLwJ{P7Wv{F@3}k>rh$87JIec(LMw5>tkeq3BsQz7&4bdqm=~|21V$gQQ9uID1s{) z;Ij~7i}=h^GD*lf$0}j5(8?2f5?!8k?NU!LpzKhFLVl=JO#l-=2|;`YCdTgDRp5I; zm$%9G`f9a0H>To#xdM8<7+`2MJ*XHzs|QDA@Kh84Xt!2{A$R@AoFVr;1#!pvDUMl) zlZcP#0V|{>PHvpL2jp8$00rgFAK5jrkklaw#Xdn~aYWfD}Koif6Zh(9c%bUUj!CyE8;tLONbrmP>nkI5Jw?0Lig#&|=LTm+e zc(j~4313|W96x6fy?%_I1pYg`T(}SSe!YH9oX1Nc?#fPyfgNY*#{4Q5Kge~HkEhuR ztt2A_4mT)K)obX7fPu3>w^v|P$+A|!z}rAb1}-tNfceF1Ua+YGOJM!@s&8<(t~|UF zCQyjebBpuKD(IhNWGknAt&{Is7ZW+gEz-7y8M&dNRcWhcrDJ5kq%-vn6GxWGew&uN z^^!h`SO|K*Vkg}0OtzqU-eyzSSgIBvy_;I{t?3;l+bpIA#C|X<7oq#Y0g93{XDAvk z3eHAobee9)H>c-jvT|A_f?5_TWB;}coGNU#VbyanCVn!ojHw^Xd>v7#{HCjGOQrJj zE{Q@_k3-YlUE=e(Fp0RIysGL2YRp#hDC{Dhrd-4W-^vXoK1n{BBA?9?{sahn--;H) z3lstKgxg>zd$VV%pphZ+gtDQEPC=2b;yx)EvnZ& zeS9_6KYcIr!`y2b^g{9@pvt`(5h+DXfl0s;%m1cy0TUM7KV{J(@eb#bcWzB{6iRmI zRWE;FFU4iRY}AwnJmg(AL#d#3YfF`%|1Z6OJV>hmhHQm8^*IWW5dfC>YZk(C*(oC=1G==Cp1-oal zM0Sk`^^z;=NR+a#-;!d2O?h(j@?12MHE2|FuUX_&KqykVMN$o4A|-UupNRrlyU@sW z<^qx};m|Q5m!-Sw=VANW%^)z$k8E1i8+IOhdXA&wXSQvQ)L@ROhplhC=CSvHQ=(r# z4r5_3+0Ur5WNMx8qKYK65_sPV9yle6en%CqGSjko-t0{Bv zXM-k{J87DPhcjXnOR#4qjzu}hax-gJby!6WNm7tHv zs$g9JEL?=UJ2NaX1&nqFDgGkelAq>@!Me5@YA~*W&lsE`Sg~enjk@y_tm#S$@^uP& zi@|X`3>JY8=uDbG99^$}i2gvD(6XI7$v1cIw3bRY1iXu(Yn)D^FqjV8kGuS?2?pH% zBR5`fgqb|(-EnXgS1w_%y>DlbdC4V6^W>A;w>MTE=1A=Z#nSaa3m1*8#3E7DWGbWH zcv(|GM}z9cAq{yCx+ki%@_js=krXpELnkdvL-5jYMIC)>%ihY7y$Xz3X~s?&_<0`q zQ)lFW6S(T|2MOSbJ9-7i86OAAxe{BU?T20r7UC8G@Z8d>Xvz0u3IuhI;GxmvujzAu zR{&r7GtrJ_GJbRPf?JDb{d$(b#h; zI)yxkKxYCi7Rz|Hq5Es(&nx6vK|4_GRUM!{FyIjBwcryBWM{qThKeM5)KaWrF$rq& zpM{P;tFrP3-NZ%R#7FtY*&%r_sE8}Vk%CX#(JqI&P{` zLY7)j#h5hJ`g$xKXI^$`fl<0**SS%2*XG{6_aEqoW-_b$W>Ddx7*oKxWdV!uGlcCd zUDWJ7mW@|JM8bwtSkgQPw*#K=JswI*IwH-6+bR9{W?n!wQ0Uyh`LJ8vD##P4h((2~ z4h+hFr`U5pff`?$!GWgTjw!QtkCJr|iz~zHARZ3w%&QA+&^_kb(w`<(9tS_ivw5!S z6KMr$o=jO2DzRENAn*~cxN$|hrK^;Xg)~ExKA}z}WtBmuSSP%=Bo0x=Hr$~le&M^N z2Pu9zLtUwm|5v>7hFt}=NW{oqbotKQ+Oe?PKX&NU9DrMFA3HPreD zv(#SKi%tFHiR3T!W-f<`MA+U>guLy*H_z*$b{s?~b%>U>eD~eo2Tddy?U`0a3_i1| z4uR?B&oWx$IpJoL7}xb{pv8Fdbh-A;gA7n;(*x(2B#9Zic)vGqYDmADOT=mZ4(#jc zVAHxGzN6f2<hcr7JWyyu(yo(dq%>lx6mR-nO2Fr>QQ98O>%sBm%t;i{8syN(A< zgP+1{C)Nup;6c1cN~XR6JND6uZhSUmsh3m{WwCaBNowYHaZHVuyv`xq_f-}8=1lE; zMLvPfco>@7*KXK1G<4?RV1hg}Rn{4-psme;|C{DfM!PPXQg^7c`FGXYoJz0GYs02` z9eTRp-`wP@eS>yFGpPweACQ*CkwGxF18tDT4kw_AaugjxMqnGxz)AFAbUfaoIJl?B zL}`lH*Zl-=2wKf{I*8Cc!Pd5I8SexsU}#^>wCRq&-2f6wSN(4HYVz-SO++0~1nvr& zN*P61o-WF&Oigrg4@=80F9;}zHAPKK9a4r4!MJWeg!SGLZ5K-uo$6+31f}@_MPoms z*54TF*_2%R_`z$k<=$8Rd5&|qPv2+g?z6lc)&xZzq5#?z*0jSn?Z{d@M{&dzE0RJG zUE+lnolB^6=B!GkEngIndOfm;%;*1o@9~QYYDhlhvEJ26oh7GMYpdtCD?0&URmBqT zb|1H}s219I@Z%Nat5;7DBdmH}Gu3pqeTx3&qDm==B)~4)GcocES zM(j}HwXzW{^g-|>JNCrGJlM6=a_pdEI=%~%<&F@fG%r`f1mPLbfV_I%o%8O21#5-w<~wy#sI{THE;FJ@8u~V#uC&Dj?56}Q zr?_csILBJb-L#g%tINifJ1#CLbJOXA_BAWZX@)T3KOM$oNEj0Z67i_1n3N}E@gn(Q z$-KzNR;s!F;j8NP-{OSHfMu8>#8Bg2$oPQWs+R~lvif)knp-lF{X+&54X=u8-Jl-K zRD{g3(#RrjWb%onVucv_&_Vd|342z?^{D(>2IU0x4*3D5QsCBrX8Piy zFEE(gr}WuDu7Y|;&5+=1y?@*8pfH`nlq%SIED8|A)w@4GM$8cEt1P!{U%I zM81|~@cFC^i_b&WEFj{nG>gY2_q$fcM8PR9Qn}V8grQ}=#xBr5EhQBp?fl6(awHjX zc-T!+FH(Q3soXvOAEos+vXoAYT zI0Wxu)yIBgrIOc1ZIespvW)w%s>ukr+YIeLcuN;d%drczhy$i~Vh>K7u+UH_=5t^d z&OTri(xb=C^`uxG0Nuyn3#LY>>7*H@avV!w_dvkFFh70yPRp|%9+Adti|)&)!@|5U zxRMxc>}x}f#+TslQ9Pwoy0ucdvlFHrJRpn%LaJYCYYRXljOSTU*O5QK$Pc=x$CNX~ zWT5>}2HlY=r8@$CPI~YWse-PbUU*3bs7|Ax$i~HbB!4JBuoO)ks4_f8Q@7Tt?;$VC zK11%yzI{(aPyDfAME&yA=A{%Pf5ED7XvG2@&muH0-V{TJ@^6`Zi`w*>bhhzv*j%ZX z^hxK^<+HR!Xsu3a0(4rdlg}!HBP(!1u%p3UbA(&l=6S$d1gAH2Wq&lV%`mrsI!AO1 zoR-v@o{(VR{s2x1>B|*TL;S>{=4at|_-#mb4qx8G$~4P+>O9@`?6beW|9-TO9DV=L zp__Yqb&=v-4~zldD0lX@qdv%~oV*Ih{#;HS5|sGuXm3@Q)Tg9QEBWta=$IHo%nq-< zqNj(v#qR|5Ezo}jwa(cj%$rM+=*FdZzHV||So}qkgoz%goL#=Sf)o|RZ+ywvkye?erc_=Lf+5x{+5n;Oym^<m?oU$(2D1lnIHD3w=%C@` z1NJz*K)9O#45=v9GJxqI>dI;{NZ6Lv@}r@AqGn0xBWB^3Wke@kAHGd)2_y9NjM$Nv*e%xa#mL8UkIryq@!-(%h{X8 z=3iGJJQ<`bf(ZHuLs#B4)PG8+zYok+=%v9c#ANcK`tY%X6E|0)Dz|oA0`_4<;3AyKlUT%1MhX9u@{lz@2iCVTJR?f%7(#ied?Rj8RX{n|A`7CR{VL zlwaeHIQ09ORCIH|bEc?+bbSm*59gndJKzh5YK7uZMnIiRw|Wv9_&DRlFLnqROTM^; zxG8Tv@t*fCV~9DAA;G>zBYhS^zgtl3dy^!k_4=Q|ko;ug*hU}mMT1!}Ws|C!GM>;p z#aQ&ko#^RY=7xRqF|@GY?kiQHj*Xj^I|BA)n>NpnYWnua(Visvg|c@|!O8|@Dpp|a zh*#ycCZ)prUN0zhypyIGg2o&;;sA|5ba!v}m4B?X+Z|80%56K0F2p$3e zuR6!ZoS`Cd2=r|V;n$J=*Ec!NIF_|I&WDxVpvFq^B+Ub$FV+PI!UHpQS+Kys898=) z+z8#$tLEJ@@BVp@Q==QLHKY2V|IO(KM2L<{&36ivqqYOSq%fK^r@n3hN;ofTZircW ziauJJ`nz3IA6Fzsw$)?jN~9bxdxE&>vT|J^7snHj)ssBEMVV4q4QOjh)$SH#`Ofx_ zL%LW<+#v}@Q9{yT=9>BDpa4@Qy0AFcap}`hnOoYKCLhAgUsK8C z5+&>Plt^Du5G+Dcafq^g-EmGwR!3g#1@DQxGN8b6AG0{7UxBUYft_dWmhpu?urFgK zvTCWvewVtfuiI$S*Lq~Swto1|)H5*QP=rHruc9M@{w<6wZeuH0mielVdi3IcP)$sz zd9Y>L!$HMro5bywdZb<-Ix-_BcUjF0rpO^+KsXAn3mYpnEaY41u6{+7=D)RAs7)cB zr-i)mA=nhNSv5HK9-=0CXzKenvuhyhqqUTpDS7K|qmo02l%UxT3*Tx~C@9PkVk&$( z;k9+w(h9#041Z=l!z)YJzXPi)t_+IagPIpj?5iR&mAX8Y$|MZYc2Qc`-bub(F%Ee+ zFhJ?;9U>x)m&*vI-iuggX%y!BQv|>9ueYmJz+!=cn+J-<#8(-(Uunqj*qEX5CQK%W z$XCgGEV@ie*QqWR`R-b$Na%EfQY63AqS=PTcMR|K!AMpI9Lz! zz(qj#0p&weCq_>`Ir@j=FT61E=~MU@;`VZ&acsoPVu(FLCd1s7-5YA_>8Ti!hFU*} zQ%y^xKrzzSd+@P`u|x`MaNogOs%&U77H}~lg-CQSI4`#(DkT)s8UW^BKeUfGQQVEI znn=+slp140t-a-LMxL3%!%gk9Ih>5cAw?8j!->-_<{YF*jq|i-W9M7a<@eEY@v4lb5Xorsp*0be(*73~ zml#|Y)p`&I+`YpVS$W}NPiFZGt5j;_MYlm>cFHYl68bl4BBi1b0()?KoXcl7o<2-B z^K0V{v3z*=-1+m9Kmcqf|4DAO=#mMQL!HdNV=@%7TF7fkmnZ|vZCow8ZS*yc2CyI@ zpJR_0EWTbH5{Nkg1xIM+1B-;UhojYD7jmvERpD`L?%8@1TN(MXDD90 zxXFv>Ajjbwp@)e@G79Z|1qeMe>aG|t8i#ysDS$?spguhtAjI2YAQ(ra!>7ir^MRR~ zn%VFX1qgyCH%1MqqX=6H2Pdil0!MS!xG0^|;Mm5RW(#S|FuB+f?}Vdg2OVJGi%f(4 zt*R^GbB^^vMg}M@h2rHYWuo)blthV9&@<}cznQyzYV^huV1YpJelQKl5ueLbNkuj} zkb7iCu7u0tu$jcfk(*FGms^1~I_;>9{O#`BZ$G*$i8=s`@!0}G6ZiGz!?KSv2qrAt9Fx%QRdE;@9e^Ez5Nh)|z<~jj zq8B=va2_Qib$4&izK0$FtcE?bZ$DNx;xIEDA$wc?EG_4ZdydKo#Ufz-NNhmgLSk-w z!(FF{v;8EKcqzXncVCuRE10@7!xD>_iR<2H2m;HkBFlv5^2s|d?f}7*_A{<6_e_T5 zAe|vnr#FtHeVbo-1a4s+C;Gj6oa@Q|TV2Gsb<6heBAs_NyaNla7jMqyaKUyS= z7!0HqCB=~S$SUiq#Btpd_OGosM!Xd#`fNODNM^hC#o!z*-BnEAwxD>zuKnihtiD6<(Sx9fYS*CKEf=h z@(o6QW3RQRqUqNZD~4a8$H}UppfK|Ni9|bJnUWApLKL&`L+O;C;|VL#3pW3<#S2Uh zOtk zlGV^NTsCGVei;{#KQn3=43QZ~g{q+2=~0Hl(1KHjJ3FX@cOTr%7_6GZiu+ z`d}Jz6+LY~ozdYSI{Th(t}jjDipSlp_5S*lX6}hYCt=?^A24$T9^5_tw6}LF%8@^W z*EaM58Lwpcau^bleO!?m#Yus2S3#r!CWNZ-3Z0O*D|2=1f~u7>3oHc~VqB1K>6(vw zg}(sV=h53M=jDh4=@nV>Y4T-sNv(EVwHgK0n|DR>fK(<8x5@83r?Lb-bxuN!x3-b6eA#_nkTd&2f47HQHo%)!>Er~4yBUE+| zOKmPOlPsbjkjs)@AP!r?JW*q}+fpef<-V`>D&{DofK(7=#c`V5yLi;#FpMll@5N9u zpC@mPpLY5Q5lmhQZQgQR=g-L32X&sB!kZU~} zsJ8;@bOrzt7cf~Kg+Y0|keEV`l~MgbDe9uiqg8MTZ3p-kP(V77n6;2#>d{JZDFlA zJ4nYw+cA>`JgRo1t~{9ebvTfarFVfv)gKB{Gh7RXi@=ZDhzE^qQU?tET~BJHl@|wBjKVnB&|(l+EI+t>62wHF`Qj5sDVrrPi=Dg;bbZ7k zMsC+NWs>|nd|Na@eiq7w5Qn^5Lr;+i5F0qjN=-tgQKiX_2c2WXZ7`3`^sNm(*crk; zH2TDhs$KIk15MRi@MUJ0zRc)ZNz4d-kfOWL!3wL6wa`AAi+aqwlQ4P(X&^4T;C+Ta zL?c%iqN0sxaI*NVw+$o*aM3Y1UyH;-mkqiZSMGZs4+byI*iP(a0!&fgyyt}%#?tBM zGMU74&%xYwq4AWhWwN?wY`&#a^Nmi!(B#s_N0`-!K1IvO zn;L(^3TIDuff1vwf7}P^?B3CykjIcuDnOkjkJ4pXwB+EK1h#DG*&h23E@i2C=N?4o zRe{#MVEQ*ai3kG?| zU2hk(@yt6YTFgC+2bv~BxNT|#pMWSJdbEAla=2ic+aBN1c!Rfs43(PUy99op8ik+X zNyIyG^$VYkL0cUkj@CW%-74bk*yZ^otgCTWCUbdStYKG}YGkNN+awvDNT+s@CLfWz22I#e`iDOOHif>ZRcp%)GD2ZP8GWg%OpDDiD@~;cO2ruuA#~9?nv_xm zCP)XVnZ+#J2=ZyNE^S0oq9#mFfXkg~FTnn%-7y%g%vk|Jh(dwj9nYX)1PEUaGZiLI zl)o~JNaN*@?ovmnInzxiO^jxuOy|Hmx|Kbfc0F|xOb}l7`sIsBcV_ty?%SQM^t}H0 z8(-poz@6l5@>Gx~1wCj5p64Mr1&*^EXKMJtlp*kV2cyHKXt!P1(vtTvb| zwRueWxZE#|=QI_ucc{cQ@bh&$&ta{VHGP^w!SH!*i)e7`C`eez972w(_xSUoQn$~q zN}1A0Vk#C}8IS)c8V!Q|m?$}#%=wA|De$0$Z6U`J5l0E?bc~oo*k)P?V{JZpyS&|x zHecMnYTYWIz{GVfoLcB?+ztoGr}U2X8=-2!mXfqQBHsHrH^t7n^=Z%&V@M}Kf^``k z`dfKZD-Xr*c*u?FRJcJB9}ogii^NG0+vSEQ3r$ru)l|hDjOMjKod|q^P+<;7B|FZ@ z=s5O`w*q<^+rFYuP-)|YIo5N-Qavlm)NPBw%p1Yon&MlHalH+_od^D`SRl|TWw|yO z=C&sILNSmsc#P-Xc!T^EwtxGyQn|fY+=%D4wxVaqjHt-fsCZR@R!y$=+I!)`ZdYb% zaAD8%CvM71BG{2vIJ!J2{=e#>)k`1kM$BYD3AXYYZAl}w^cv)bexuMcWfit9Nhre` z99GNf^Oc|qNt=D?s!K!W z8aOq9GGI^B*m8zxNwMDPo4ewHS)L|E*a>R1bCqv!eNP+7_Caz*-P$;OwOR^Tw}UD( z;P>GAh0$#|K;LNr))4a>_oxU*<81{ZNg_jRY+Qjfy}j21Ns#Nsjq! zecc&lPyr9oCNW`2bhZYxdM^QW%ca9yixA5z{svp1Jy0Y5k|GDw)pUQFxD+Hi{;_09 z{CPt7&O78sAp8axr~zsQKwkLPJUo>JL&B_Cg%}6I1K!v(u|vkefq%}lv^tKH(CLrBj}snS zPgh3a(}RoiEdNvJ(g#;8z>ErP0P#ltSzXG$ zaMDTZOE&FMLD(Erjpy2 z`GpC3J4j^3cL0}nltb@M+p^ zvxR{}Hy&z%oCksjjV)5L+|5FbzHG79%GZVoY9(V3fM_iLnBHF0-Tg6caRg5bA+m0mG2#JP~}dUtp=5w%0$z6k9W0@E!Nm;x3bayqW^TwZW}$M;JxFmI@co6KE&&rS zEqx0&d;tG8!`*s_hrQPDRf)=Iki75wN`({UlsUCWKLlp;TgQf^(V_!12HG-_0iHYH zv+j&v@te|K@_jH7I09Yu+|4&<$UhsT z`Lm93imd|cs$&VBFXHD#WueY?5xTngZ~oMQtJ55%iXFXR&-vV&$p1WF<$zFn;qgx| z8a%jfSCpmJ@Y1{QJ@5Xuee#g!QYgXL@i-I>ftX1o~7J(IKG8jpn^=S%7#h=Hy3od6{ zp@}ll##|&^N45SST?5bg5MU4OzNukdP&a?dOLYf9WEgO?%km4KsAacZ#qf>#?F74(hK^gRf(+eGYUfc>omz#fhC7E`O; z|2fZxAO5(&mq>zE&{b90Af0dXdX`PvBDSR~Xg+d_tWJ?lN5MXDXy3t`G1-(A<4HNM z=*@Az1g4Kgo^amiDn_Jy17GY<`%L*oX&IO*i#vwUwIYu?sPf34HUk)FlZEflyXz^X z(8!l{6o^P#$!n8nyK`uBB0>HFvPd=|&OsGUT5MwvJ)?+;P2G|---!S$hdHM<2XMh z%NT_591yw0iDiYY0Zpf?%M$R~z}Wz1wSExXaz+_!bzU!B-gm;{ibiDPE0RNN9_sEs zrCv_}%KCc#il6`d=iBp*TSFS?K_=9x>~ABM-u}8NjZKZLwB%y5b#W@F^ucXE+rxk{ zJu8WE)!Otq!}{_yAh9fhC%B$2d%v+W*t#chR*w_QIU^%*TqvJwYUUUY97WCJM8Bej z0V5^NW0&xPm#fyVU9i+YE9Jhv0PF<{rh&QA533J><7pQeWi4QmtZTgfB!f!O{+ykriVamPfU2PJ*R0{Hj~3V-7H|C#rpX zL0j5BzL3t4rt@r^A@%b0+^*|yx(2%ru}T~P^P#Tm%g90gByr}BZ82=&*>U_SCq{n) zldbc~qtY_l{9a(8boB|@!HsT?XJcFtIKm}z9hnhCwzi8+J%hykFiEVJ>bsjg`x(P< zd>1+4;bTY}>ouPYt=UTulvfneFnz}pF({RrL9SJ- zwQ{E>sS>XnDF4jiCCws}eV1l1aVk=iAH0a(CLIp!l)1g9XCoS8lKa4ALZQgQz&^(o z&eWrMOZS z`7V$ZxpuFEBQWT>1Y!t$Dy}c$=2&gQ#xMO|I;Ku~a7@LPlt6sF1XAkdqfl7PU+fe9 zx_Hmxg?E=3%vdH(mXgFDUt4Vq8TOJt&|@fD1kw*6m%$~jCExDYdg3u5EYOp==+ZpV zA&~M3zDd9kNRE?hlF+e8bt)`bl}uYky9u6iKo4|SOL&`H0+K-@osdDuU8X03&Z)7s zq>Xa6*tM$+u*bC+5+Cf@|L}t&P@xRnz5k{P6aQ;-Adkb0je9_TvHoACHn{2@X->wS zhb!)8mGV{o1f8aFn#nE(KJfOy+k`rXO`bDOVK`KKJsxLal^M9J@PAxx`19ZsNXv7y zu0Q&G&alv1BY26!iJ9eq;Ifcw5`ZkA@cq((#p8FE(HcV4_=^(D+_huo%*7ZrKbwe@ zfJ*d_YIRc|q{Dqu8%lM-f*Ms)yGb+ENeBgwYD^?kaiwYjd9q_7!u0h!IRp9OgBikbKAkB6jsqrNj7{no5Z*wHs4xL$v0m-@5=uvpQMsTDwm`(4m!Vp z;K_hY9M%rfOblu@&o?6mn91RZ8?Eq+stCMvPcIbM5pI!Fx&M7^6tgufk3n*&;#zVY zU3^c_1<9qu>k|IE$g_COm^5o}YK2d{@&upn6`G}C9!McgNxX%CNXPA{_@yY%xAx>f zuQXe=a2o?Y*GMmPd3uIje3eYd$TGxoHUHEUK)>CPW!8pVf*+@^Sb0ru~TT7SjXadLSBAU5`-j^i1G$5KfQwus9|8sIYUM8w9RgB zR~zaBHu8-n7a!BXGl~vUZdhP(`_zK}=j=V;+p5n0 zVV|qL_ui7VtSwnv)|R}T*p3}%FS39ngpoj)VTHYuK!8932?<%uK!LIfl+iLunSVyv zl$JtUS_+LW?{lss+es7J-)pMKjwLmpd+s^U`VKW)>2{cS-%L?PSQG)u}h23LOrNMsNo{EV;uWu4pZ+TIOE zVR`e-8;eOuA`2i|XDO9Sk8Q2}j__~2v-URO^0R$WA2%jxPXz?ic!S$6^~03Pb?)ZQ z=!&JIdcX;o=d3&}A>vKhc8L!XQr9_~pp5eatMv(3Ka5q!L&Y|jt6;I=ZYb(z!F+fX z2pFARpQ>QUTRq9209NCmidTY)k+8pjvJERuZ9M8H`;q+z_${nVgC8=n0UN^@TsAf~ z<$N%qd^~l?Bhk`)H1#$gQzHiqwOm;)Fyah!ZcaNC!VaLJUIhDd`-cVFUFXmQLe^`Vj~9(6$J`In$4$^4xqG4x}Z;0f|G1Hqjz5d06J>?<-$ zvP5UPc1MP0dW~F6zK%AkjiwV z5C$go2`%QGVdcKAhUep{EoVW7scZn5(#p3oM*Hv<4U{fv^ZBp zWRUQT1Q?D1D^sRCHz~6lIa!vWmAnppTsy>p*PmyH#&L(jrRadh@g&&a=8Vt}ATI-d z82ku7YhWE{z0$!gF}6z03Yc9LhH4dj_%CvjGn%G6oZTGY8Ro9C%u=^fprps!g${r+fcH2Zy;DX2Y5g z#C;&8pyK}?+HV`(Bz%)&tGoalJy>Yj%1WY3Rl5$y#-Xh(%WV9Y`p50d4=4>4RSqT^;f*CC3R8^+nK%0uf z5ZG}78*}O$pWv&?BN%u`h||LvlqLI!GbBCNo*Tjj3x!8(cPPWF>=xTHEyuI8mD{@1 zFKS!TDsEj8fyQW6uhw_=5S@7eX`huR&eH0;3?@S_DFyqgVisi0!0>C_z6zsF_FdVz zZTGfLT-BB~Z`oK(;oKUWdSO+pKkcMFJwDA9f&M%W>G-%gfpRy&E;!p-cEc8dGsKB+ zba>#YE}qsNF~tqX0Z}quO*!kZym3leL$o*!uc8=fSsH-bDfq+0*j{x+kEl5sIBGW# zC-itn5j%hQp&!g~H_Oo=dEkzA zad4mna%+VWk&dSoKy4#bazNRZsdjPYpeeKAgAc4(uF(L@S(Z-2%DPWTvcvPd0+T5( zHOum~SpXRt)Hu|GGu?bO)h3iG)cgw*fVAyr>A8Tk<-L-;Wdsdu>>$>~9?QHFz3X~3 zCwu7EKaR+PL_ft*Yx@d88Yc|oY;}*>LT*Qw? z)r1i%4dpGcGNM|0leFC%TaeX&y#8-n@iM|#`2|22L=zIFIO z0$V-cUL2-&PL{}NG%r9LvJqz}Dj*fAC6KUfrIHF0gO0)pxkf1^y{^JLop+ zXq>v0wGiNq_t0*GZop*HP!@_1+=|0q8LKe<T*`NL7quXRvDkBXCEv6Ek%xvM%O3!Z1FDiwaKy})l88LCk#+)kF#g_PG#dS7 z{Jl8pIrJ46jj|X5y8wwn-`#~~i2`${>Y#W~c8>70hH^n;27_nnaJUDe!{nqC1K{iQ zEG)HH*U4^P?IZgx6Sp9~+7y^!JkP?nHm=(M6hEogjH`9rb*aNi@jR2NJm6ITm1yjS zrh7!QOBaXXV_yyiXgNGUn}8o2zTN-cu&8o5zuROXc|g%# za2X=9R(S^`y!g1m-iCO7S5JPi!(p7-D?Km+tqTBPCi#|ne23vY)CrS{Ybpi90l#sY zH@nYu;VDqK7++5u6R5b*SS3oE9$+dzn-e!%E|W_4*RHr5t?KA_gU_?e29{@;Do$cy zm$(0vj05Ao#_Joz?)mfo$?hwnw9{{Mu2l)fDrh}7Z zG;V;79ZSda%o#*e)0dDkbUVRcy!B)&&%n_yy<(K0lX)cSc-&wpsV(Yi?F|QLYxs4& z#HD&`r&=ZRhsbrJ{>wsOy~XeVTjjbAg5IV`BvfH_D*aQ7bNW;hc&#fzoU8}S19UcV z8+e|C?Jbvg?Y?h+KWyyoJMOx*tc1)B#4_nKmF}q}g}}&>CM(p4=YFbqtV2=jQYKBj zFdp&@LupTeTE?f`uw2oGlnKt9$crBW zp7}qCm9^_GhDrENcr3xHMK2c$wbvZB{_YOB8z?Do?e%IIsP@Sbe6)+d%8-y!G~*N+1`-$T5MMk2{c984yb}HrWMMXn%x(bY5=MAFCS^ zZ3qI*B&W$4#lwK+pdij_?1yH5q`4npq|L;dB=uqip2ttQ|1JO7@W>-)V}8#*Vo~kZ z+mRi#lmOLxs(|m2^(;)VG`!G^viO&7Q(4|7D-UGlMxY<)(Okc|YOu<@Z6khLm(e2g zd#~(MM^zc%pX-f1Gh#v=J2|h-bwwtNkUU%YiFRN}Dei zb#+b0(&ig4jiTKb0HdL4qOui>Dqz4CAFrGppw_PfXS2C(DxftaAZhA@Qw$UImbaV+ z4p~>iJx(nQ=v}})O{J<-h0#n?p)(vY(pAbBKBRzJ?x!{8Y<^H=u1BLu87v%zSfCqn zf}?|<>dD0TX1FLSloClv8ugJ6$cWXotEayFvMG~!p&-!nqim7zoFc(jn4Btsl);k9 zm|VSC;>oq?M6;uYxG2ssJF;o-wsjZ@f77Om-^IG zW_tu`(D&(}1US#l05G8&VA<6{7w@Hx?W0(s?JB-?$RIQht;%f3{wDq+Ig8jPb_^Os z@@VYw3%`5y=23)ti!3pp);(xOb9Q}<#Cc`gVw+Z-E0J%AuKPRa1xXnFpA!<1zO0dH ztK{VXpe_A1_JP*`Ks#;JK5t>&rVe_=ls+5Q!T^LkOwwH91^CSSmL^eLlp#CyRJLAv>Vt2`O%AP-NrVH8EzJL32z&FZke?}3HsjH~+DvDiXZ%6Cwg?_e{ z@0~lA=&;RO9${w0ck1nUVll1+0KGbdk!?HU9@Xvm}i z%sK|xk#SlH4jFhmQLt=y#>GDi?+SQepa=dQzvkypI9LFj1QKhj)i3bWi@=&cOu|)r zTl~A<(Gj2g?t)6im&u^fOeR{XaNc?=1&YQ$);55**_5)6k0MJL(7Ke z`vuUd@57Id!%0Rl<_K z|8Xx;`D?vg0O}zQwg2^cHHMYM31AS9eG*PW3(2jG#~Au6DcV%h4UD)k2%=-{!GL2* zRg<%v0IsiV0S@^+$sunCPs{#-!mG^nO|ipaPf3EQwSrCf!j0nh4bAfjzp6aCaP~oP zKP2xl#$QaQkMHPsJ(UUqtWv2BIE0Xtvcy5AUF>v7?3y(3!oWcIKJv|wz6>^4DP4Jj zlUA?VuIt{ub6Y1yt`|3M*;pt*>;)`dz0Y)j5}L-HKiv1Lqf94br)NRk27;PDJHy3? zEiPyAdnfG2pxg8SdX7v*{{DBO zt@fr4!+qCvbesy(8ANqM0#zzJ3Daz2@pw$c1Mgh3RDie$0+?KSM{F=g82|45BYG_L|6)(2$j5T% z)c5&frkEQ6-bUeZ5m)H-QNkZ8k;D3EYF4#f$^qbzz?JBRq)`jy!Lv{v9BoOafc_mW zrvLkLG)p_`vez%Yt!|_Xo1u{=HA^*^OVp)&;C086N4~j36kawHCUMx}=FgNKR|Qot zF;k7P(@BD;k?-{NtwSmDJoEw?cc;O)CCkttdqrpzqy;+i4)kFUd4HD^Ls)-q%z$;b z0JQ>9YugqIwUP&?hc^>sC50XY*N{)o?dyx&532kzsZ0@bi1lH)Se|(BtNR}si8rvj zPal>{HqTLfhT_D8!cbMZc(PswKT{(`=1!5}T?oUE<$?fo% zj~ikym&@Ca-}&jMX!NALUwu`(+H39Y&M1QNG^BP|GmBQC1OTtEh=8|+=VrqT{DQw$ zo;+^uqg@x}k$7lm!_=uM@_v-A?WJXwFOR=s?b4*OI?@L9 zzGtLUMZSezCr>JEfSfN;t{Y?tSUN9DK>qQy*S2ioJ@Id#pgwa#Sw7{oewK#YwW723 ziO13d(-yyOY~f+Op2LZy2j-wrFj=@G{h?nV7jg*bdC@om$$i#ROw2J0bzQjJ!Uf%+xu=n{Je1N&#J*tZ;fj1UlS4p8JTv}mg8U7uZbSFkKeai&GuBEMi&$pAnJrGw zEdwyQbADQ~HzVj+J(muZ`>Yl5+E-|Z+<#dvN1o_)&6uJIst2aKcxsu5mZ3`&D*o9i zjGq7qN(Jx}PsXnq=)Ee9M1_au(Ptj0B7LB=X9~fihfkOX(eCqi9(>@NZ0f@T;`3(g z*_Z+cI%Z_UmY2`{_&@}#E;5gOdufP%JNZNfx(1An2mbnL$37T1B9C*{baTWy1H|Ai z*}SoU$~R%;(*D)Jt=K!jRWp0GL9fzCutBkoO{@KrW0YjXzysb97He2s1D7e5!opxR zOq@^DC%vI@0?{xGU2v}*6E0w3ju8kOCqpBjYD&muX*dMp0|sNTn{ArAB^{;5tK4K#Ae<5J`c#IrJOK?w|_4yAj{D2I&uHbrnwFE%TYkH%hn4m6R#`-?W#%r&0BGxoB{Se;5jDzOX(Mjh}jQxqMfVm z`sgFnf9l@PKYy;Eo{`2?eQKx;i%_^7mR`9_-i>G#`OE@jfUL|^hR;;aNI}TGcwQxV z(@YGJPcI$Hfw4f4Dd5rDS1qz2bAVc!1T4*w%3hR;6%L`dVBjZR!b$NI>j7L# z_wU*jPBS~fGCKcS6lxgYZ(DocW$r8|r2qq-;}z=EGDaSZH}!(cF==cHr=GUHo8LQo zWOtGHF14)Vda0sarjSR23Tp`rv%ASnl?o_O1j#@8wCa38YgFg*l8eL~UaJGN0K-wa z&}F;DrY>k)nlho*Lt>!U6iUQz1i*L|EAq8NK|S;6r7#N>&%T$P0H(;zlW?clJ%gYLZj z<8eR?6?8iZg2v>|J$~`bYggJK3o_3;k2rxdd*7xM;0A%3a{Jl}{oK#)2d57uC-?Ms zmu9uAezX5lAK%1{J#i=_(Por#Wq#oi1QiS!gf*v}R`(8oRv>m-#RL_4kwH1Fw!*~j zSqOM$s$|AOs6FGtT1z0{tphdNO)XnNTnlF-xLCsyjpM~yeNRHEHv!~q-VQizJVF7q zx%yOz2*1X643&7}HH1@|qQo5=fyip+Esa|PeV^9)IPQ4D&r>M@>ueR!60-V~wT)(LJ*x!+de53!$E6)=0-I9QUt>W;MGUgc_d`HXsT4|aixd*`4XD0Bd@h7O;KzdFrxOfAE0QR;2w z{35w&u=lz&A@FN_>;Tt;eB|Gh@PFlI31Doa6uBJehegQ?FS{_s(XwJ^opXA7dB=_{ z`5}49#Wvs~RRUxhtR9u&C&2CQb22GmUal}f_=v`^1n4a89p6s#> z^&0}lsUtQj(;>?BHO4T4hesgOX}}1mOou_9CO7ox)Ve-6s_|lDO~=XoB@Fe!y(L`q z*BK{(WLu0E1|E2UobbSa5}dp=kpxX7A%d+Bzn~t}>;7BCM9sVB;L$_^54Dv*?Ehmc z{t>ad;cH_>Vim>sCi1(CP|eISl&EDPx!_-Ow&LM9`H0)nRZ7Zy(nP6h5okbs7$T)w z%fB>-2Nc-9y>EIO|LyGVnP~Wq;*vCaH}!G)oeV-B05~3Pl<8w~sWMFyQ|D|9y|SA6 zN`6BA!4Gr6qAsQ{cQvSZ0QRJ$V9x5ibI(p7n2MnFRQI>26Bsc8Z$Dr&dZ@w*J4&^- zxFCtgVhd$BE~is+NGl*EfvY!BS}~~W<8ZX%i;Jfi_@d#a9nKJ=a2=bcUL7rsIp~vw zGn!f@%_(bB4=YH!;?SwYePtscDz`%Cbo0mCm)5?|EqwamZQ1Ugw|;8bhbI*X?I35V z(c7f!>CVpD7g#*$#~;zYm{3kj(qtcHM0!Dlud5A|g!WdtTn2J6+*9uT25VlT?<;&6 zy^AIzO|AW1nm$dr(}4KtRnkS5j0L!2tAOR|Ux!^^ygpUX*pVcjOnjMmD53iv{r<`L zP(Y}R%f#}yOKOI|q%N<#z<<(8Kc@A$=FV~Ln>n-nY4o;GnUG23$y(GpHor{)28jk} zf?x{nGxN|CCZ>R^|sw&!K-T@V2`2`p>#P`*;3Ds@#%`sVch?u zGGTbe-1=r&(!9V_9!wq9R02ok$j#ffc`h82X^|B*a2H^N_+{>%dBhkPQj8MT+6Nho z@|#T^1-x?k_vo7nc~j}Wiw}PBMLZ?S2LQR{O`yIMKNkeCHkLm|K5R2|NLyjf3qZ<@wXKDZYx*Av3BK^FT`XnPJ-k3CIfQ*QJHTS=rRMOSpR>ZWahxR@7I}=5(nE6 zt#&oBs&*ZrAwP*6gyk6xt~e3kbpioBeD;NzD`fWGqLQa!OOqwDxfqu~(xoVXuhKuH zU|OWocKfB4f?BNY+$Yt7^OUkc6)XFp9d>vG)IkIc!nxfGiO)iyEY*d(@LEts3G9L+ zqulsKSK*5fZI=mwA{wpH?Wv|^URkQrZ58NXstjmXKv&)bXxHOL@!>Qy*Dv_G^2kPHN^TRmJxP_bw?oP|b4B4C`7+PSWvC2mB~P;W zA`z=y-7c_jWm+Kzt;8+!0*FqRyQ@tQKz$N%CdEm_h}TBfprN57r4(GA8%Mlitb~ag zdJRE1od@0uCxd}3RwS>xMZprq8xI^u@ixII<7SeA4y!|8?mVvF!WeH>;!RTDKh342 zj=$!*H3LU;RU@#f#4##OT+K` z=SYz|g9uP^;V48ri-gUDMih%fW3pKU`9#t<>-Z>J&5JA^U8=kAB(9n<_2h2((*Ue6 z*kxW9pf7T8ugW_V~3>KfGID+BiY9bu~R3_|5jAF~u@M7ci z3qSBJbd05~2S_MSr~wx`AB(<*iIZyAAbqt8`X*zwT`SNk@>+QGqaR5o`c@x4=dvsE z2)IF)UvfIhLu&HNOG+hZ!}Vgt-r5$oeE`I)e7adnLzCJ@H*|n1&nQdJ9|qj!XT|%# zvU6YQ)HrbcZmX>!lJOUFIT!-^$wTPtDBL%6o}NcA*}S#MGar5Q?qx}GIB2Lq9-Fk! zUr@LI8HcxZ?Z7&D&1Mh=Dq-Ni1S*1iL7xC;v6wN2B{=Zhw5jBV0h?!njNxW*dw}u} z&yy#O0WhSzIp%LB0L|2t(MTpHKmvFM)eLTUVeFAQZqu8z-f+WnQF?vA)|`qCIv#cf|Sbm#{V1A-$J z;LcTiq~g8~#o65iR#yu_0e`q?5zDNuQdd|f8A~l+9Nd01B0UZ)+E2N80{YMn6 zV?Z#Y33JU_u!b_;A5@D6*1kCvW5C}vMhr(|)Jz7f_G_n3XBmSmf{<2v}&& zL!IcoV(aWS{I~9rLjhAM1+J5+0`cv#WvTZTtXvuS{WknZcm5P0(yR^{O4Wik4K-fn z@Njf$*IoDQ>0?Wz43J;C8Otx>w3gSduyH0kaKLNv0oD9JX(T2;d!XTrp8|gHaFw@(0E|&NA4&)f ztQ1p!bDFPY0CNAakS5~cMR;xDRJ3yNnc1*)3RhmTMk5sXEhk)ZD^O-Q{WqMqKu2!O zBGD7TvwVj9y7Qi*VPMPy=H;BynVg(J%`~){S$qKtaV-M6#HN)H+m%)&G?g}oB^n8x2YO|Ek+k**O;uUi9S{m^Jf15%J>gq-osw@C z8ScE&uXOe0)R34kO>;h+2bM<$BU3w~|E^R{tdHt!$kr%m9m>*`#% z@7A~<@VZY3A2e?RYPJElMYAr0y$iy?6OU$obBz479`~BJ30gwTs_jtV!7V`~3Si?~ zs|pp0642gR8n1=PWt|8;b*2fHTFND$!%a80GFv@1W~)<}bLvwPwNBE{C{39N24RDyGkN6xFj2E?;ne&pB09d%m9_y5nMesJTL9>_9SuY<-@~d z$1bgb!y>@<3l3Tc5T|tuSQ0C!-G?oFll}y=9D5w3)Zme+Zk1&?T5VZv(pJ{*K85-s z95NN$KZ<0nc1%isPtU$zfC@shj0Cg7G+V@k(20rHk5fb)97b_7$PYxuDS&^(r0a{J ze|iv(gWt5g*Yau0pIg4GcP$`SolvuCt^`KP;A}+JI4&7c>|Kf#BipIUV#3#y$&BMP zb+Y9t0O{aoMUcs?-z?NSqWIKkv{!M51n!uy6*uI;W(n>XYuILWP_LQLT!%x!X0_tK zhlbVvP`ARr7vnMUzZ*ZJorI|NS6iN?@K`Y{-|CPvJ}C--G0oK8{O-Gd`|`_a2^nZ; zq`5%T+vP-O5p=ZtsK?d;y zAc|heTz1W+3Ggu>;^$p-UJ|VlfzY&6p7{R17&JCG zXwVd5jx$!UI;v-Q2(ECOPsZVcnJR-pCs+zKo8WO-_ORaS>CzBf0lLNEn%)ZSUi}oa z&F&hp!MD18lXW&91Vorp79upd*{29#aKM5eklL`$<(xHU4q9f-t=ns2ggW&7_w;q| z1A9#n6qvFPsAX93C=a1+-D2{ONVRwg`4v)vUJD+2|8g8IgKMt3syl|tV0tswjXe$e z7+1F3+Ong5@8bD1&f>;{7lCs-So}C9+ctX?(&uGHS>ZM;Qyy=lahXOxNBAnhcLJ8NpwQ9ZDm5DNQiH6pDa(_ zq)xmb@`1RJPyVEhZxgsh_VdUOC^KGx0bU?L)+Fikfzo7E9|fh!UQ->$UEI7GDyv=d zyZ1bB?^Hmm_3qrg6{tu662M$jP^^WN@NvKiO=fPTTI$@bx(CD@n6od3(`*9%K%w(+ z#)40q#%zZc#o+>{emHl;Nk8r-;#m+r+3?T!M!^qUmDwTV!S@He1&i(b%+lnC|ZLMtC=pF2_9ZBZWsI|ch7vv=aw>mQW7(2cL@n~ z?aS}Fy6Bb4ljt*2rv+N|8Ly%c`3gzmI|Y5q<#{;@Zk#P)kgRmt@ci@FT!U^Y^QE#R zu#8~2Il?_YrH_l}I_5TGxsua_t+VI58#J%F2prfNJ@PO`^V$zIF9t*h>>KrAh@2Tg zoe`9LanC~J30~p@(O1IvIZa^e*NHS06S?tU|N2c}<#bY`!@^+TsEh>54T`A3qD)Xw zp$DKst5>|(dfoz!MqKYkft)>wn7tTZQP_ITtg;#Lo0&lUYQt{BSHE%1WzF8=5m~`8 zHro-I{d8hk?MB4w>Uu1p@HluWuH8evnc#^rE&l8n%*>NaGxpT2JcS~(+@!#h*f1D24|@kk`}(h7CpK68DDS3Bui)KBI;S_^4OZICW1A|^8~^g3Eg>Jw*r^Tp5RHu<|mRtWhpEUqqv4@;VyWYteAZ5J{;Lp2ZQloG`ye zpsuli>Xn4t$%Far*+ixGDB4_B1{5i!uh#D}S4#5N#I-?&b zP~9Ug{_DBBW}<1^igze|OIvN``TmU(4%cdfIj=t?6WYx?EK*;a#3Awd1xoMnE{(QS zMN+PNo=Id`*vYl?XktFcn>B00b1aA_W(K5ufsxDPFdt(nRBS>g6IAB~O}$sP6I>B1 zq|ozC8~`vdZxuV|7?kGu6`q|(i1_Tbv`H5jGZ9=dD`rH!}wf0gYk7fr>O?8bh-X0rAj!?>$n0ne$fR5~Bv^}G7hfnm%$8%mdlkm~s ztaPaJiMs!($tiX2{BLK{zfhcfq4BsFJwXsD%g6qB%skab0MbyugTRDDn1Y+1fLflo12KVz+fKg3LPRwiMnlw2|EY{Te6KVQ%BFPv^ftx)h&ek8?e+0bOkZ3dRyUGuv4 zJb3R^@XP4kdG~E4D!l@^u)E2;8vZ8L42ZJ(?JRCVFFm(YOtk=vpR#Z}TH+d=C)k|_NS!Ts_z0kr{ z_RsTpW_GKg1Fs)h5{9+cL4WF(kjnihcK{E}kE6yY>sl_rl)Pi$SnFvut8u!ICvuQp zKm)iTy)&s95ynY+BVIK3FwXkmrSK8>7tJiBe%k=(wNX|cb58u9nC(4Sl8;~ePL1gX zWG2&@N^MG|wwAdfq1Oxma+#6IJ=7;M2r@kNr$nlQ%%&CK%Qlo{ITps4{xPRQY3Wld z)O~2F!8paJmWP6;$_<6ITrSV#e{OW#v;P+l4FUgtVDJ9z)RN-X`M;9nb!nK=-S8aw zDbm9uen_dsa*Vjk%Y&lO(XRuVADVOR?AheoN%BWR$Iu(*{e6n5#?Suo6ZBT$LW;0C& zx%PTD9xom=)8VR9N9cGXp^;cLf74t9AU!o+i~j~EAGj4?e|PgWkd{!(iPLwCL8prR zqgP~yCyBHfCB9S=bt67Y4>q^t%`w}2H%G_QcO+-HltmX)#&Q%M4_nGV-kaaRyBo zj3M~$FnJJWZ~X-wZt5dim6>GKUh$Z#l{C<6ljVvT2Xv!+#gE zh(_-!fn?UhS|b|_LRujk7ZM-aeDj@LHCxk>eOHz|$-@#c+$SN1MV-y4o!V^fkU>{5 zSPb1)%R1HtSz?B`#wSk9_rnnDE{)>wZ7j{Pl{1L}HJ*Iftp_GACl z?rnE$De0lAry7gWmMGjl_tRRTHC?yuwn1w;2B~V6YA-IJ@OMozyJOponj#tbo&R+&8$()WrHlnaWT zdIlV&_@B2I^e684^ai?sef8U07LlCT*?)UuN=Nrgf4`q5IP`b46@gt9St@h&1}5Y> zS~Y9m?%lipfHdS6-)2BlDCQ=341ItlMCCS>m*?YpL$Z+y^gp_1$fX?udo{_@a;s$p zNi*g%ii$FsQtPqZW@}nvfjI)pAZ+)YUSK3wg%~1TIwlp$V(C}XOGVR8?Q*b0W*)0)vj&6t7Q>@*Ig>$fm7vJULrb)h zAoLi*$4^^PP;W-Q@=>gN7 zb=$DKFh-yii1`)LSwv_0Y~3=yv>O~?z-&%yM@td0bCeVj;@!!nvoi)0%M5{hV#@?ctqyBc1 z9?i#zInk)^D%<(P!+L|dptWkt3qt3(r93c_p)+Z88UfiBgAPPM5Y-iVU3>;tu+D9) zbmp`n+Z>=&V_{aDb>Y+)aF)M#m{JkncVHXz)VQFNKxr7nA?bRMW`P2+DQIVffodEO z3{5U2Mq;gmgS%Pe;r&v-#<0PtK^rx6gL|>rcRltiV4;ozENrr=Q39YC!k8ekC9fWE z0HB|3uSj0TUx0HTA@>mLqncPyoD%wDJL>W&3XZEw`WpTs|BR&}NHgt}Lst?Pb(&A! z^~tp~G3W9(Z&^-Cl8c^s=(b$0?;Wysm8DWp_NlTtE!v?6qJl*pvP)b&8q6wCroNBI z7bgmqenBXc=`)N#ALDL6fTYSsCD*z&h& z=)=S%G5|uL4-SPizU$-T3hUIQ6TcUB3&vngexHNtNgeUNI;fqd%GMcgO%v+F+G5R2 zns@}hzQs;(XL`MBGKj$w@px*f$ghQ4Uem_q@?oM6Zi6)p6gVfxQ27QjAQu|%a>{F$ z-hco7U*L4(^u}9-Jg!E7I5g~PxvKk@(g`01w?tUITXCkSHeg+Nf#?r zyqLXhq)YBnRHvOE<2i>qK|iH3VCUW&+0a{EA16wuoU;4mlN01A;9GI?EG6r-tGY!L z{DTmh1)yHd;*>U=#4m5^x@!FjCnT-5On4I{D-zyytZC=9voi>dU(X0_+ha z1XMdX1aS)&tl*VynEUXpae!;JE?#q9IDEmi*W`%e#!Z*R)P7Tczd34|ItAU=2iexc zqZ|cu@Sb~iRJdR<9Kcd&Qee#83;G~+pn`QAtDc7?Ukwn2izr0U!!6IZ{I2C)NNZs^ zVc{mmWmJZWV-J-SWkFbc@(-wa7Q#7+(;Jv>!|~S~hd`KuXa%v2`Z%0!QKJ#Kf5s!< zM2=MtWsSKUqdBK#GOe~Y2Fz0&QCcJFIU7d+{)bGoPH|5Me!}+(-uN!s4TnzrILVcW zqE1M04L-JDcZ_E=vGhEHj!opDn+EbX98a5o>;fe94q{tvp6%|t(cfNp;Xne>XdD`k z!Qc=C0}%u$htcUYKAR=uv6M`}8L*k;<~}HW2AHbNdVMk^GKoTQ@>54^e@WqzmHIx( zDV)O6tc9~GB6U6`f)5ddvsO{hf~B+boG?JC&7DBW$(q?}RamSRhtUEsHy`N%m_&8Z z!FxbrHFDxyvsIjlT{VEZFH6z{aX3`YQfb*t8r91dpbPhV7B2)HYPw_k498VBdXJlD zXUXaI;pq<4ok#?4a<{jGW5P`mC5;Z`2o9U))`evlX&%7f*YI!@Kmv z)qe;tAW-$JUM!g={M z$E>FgPl|DNh07x<3{%Go#p-N8lEwouz5(DyKn+$Pq)$|!R*hH9&30Y$?o0WBC|?4P zvI1ya;9&$K2iOU%;QE{>v~&zhYE1*4@ux5}N25E7sD#twTri^x1Mr+A@E{<0V&s%0`)cr#)I1QXm^!Np@J zr}A)%Tz9WKa@?3HWE@$5+(AoEUsabfbWQ2EgfF`8+B~heY2ya4xLMtO*MU9#YzP#c zx8He7(FRcF0)tDNnIS(5cgKh;$ostiBKAkP(D=e$#Z0bX8A!*%rc8!3#*|X2&Xd0f zvX+$mGp%#W`~^2Ed^0*#&?%E;`_Xo#BB9VJ)8v_Mb7!Z?XYT9)g%cYf$8Lto3g=9? zk8TAqO-#4NSp5Y6k6r_j;|id<+zBr7k3b*ycXjjz)t7>8iTkec=ANaN1{8#-vmz+R zzk|iHHpxy(98xA^nOTjuQE*-u*}_pGtoLrIQccka_4wD#LyHPd;Ru{N2&>*xg*H9wn-POz|@`2prNPy))5B`yKLRkHqZ?AvJB2-@_MHHEQXMo zFX-=UZ(Cmg*`v0RUaO_Iq_8Rqy>G?iYtllABeHRVgY;(6Bu?LztjMFD_oxOBCcb) zg>M}rA0uBvuSB(30IAsQa{pFD5YxUD4XR|Ff71b~$I~dF{uzoSDYqJ=G@?8WK!-@ zFUx;ELx*N6HPt7c?R~E6sp>kkiyRXr(O0$i(K{(HJ$+}e_qpz;D(ld0a{6NIkN0tr zZY-TXkEY~KUzyg_UbR}gs%g1hH!|NV(17AmmLY>g{HBxu`zYwaN5RkkJb%x;89=l@ z+2~y~(`YixSVa757WEZ;tU!JiCuWoH#jl)6eT5#|7{8(C#Ga4{3}X0>%*>?$V+Cex zaocPFGS)9{J@Y+SMk?Rk)#;Pac zonT8c0we7+paXU_;2Q6Ot4&=&3cmn*@aIgja2?!C({XmFYHaO^&5o;FSPd#8gl&j3 zPS}a~e-39o<5b4s@0%+C7*vS(N132f`!|L1 zM5`RT+s1N(K9!aGw_EYoTS!KJy)CAX2~vW{#c53eF#3FBCWM8{rl;tdb`L|zjd^d+ zAShVbDiP16L@Xx6A`z3rXB>Lwhv;JhhQe(LLMCwtr~>!49@ z8cACmgLD$yZkPp8Mc~mnJxBlPqKOp(`_TP_!;^Ob+t>G+#>OBxfb%t*j2FmE5y_{hV}q zrE7VL8Cl>3r5Oer;5G~pEG7uVR`QujCBtCkS#^N0r)SInooTV{f{h-|iQd)p%8PB^^#yaj5Y}~0%C|>1w zn`2s!%BSiYhGq?1-wZ>kF$g!O1%ZVlfaeA$DE=oMd*_VqD5Ckei~Xle=BE~-&_O0L zR@cG=EimR%{bzq#Vkl=75=FKIaDS)<(d^e>N3XyBNiK)nlJ=~HE@K;0;U1RRYGm5j zI*WmGJF;YVrQ6_T<~Hn97cvcvf>RykZC}@e>jgm2!C?;UnWn1@)}s9(X(MkyLTFZ3 z*($)407K-+HuVKgrcBE5a^#B3QoKl4JJ3{gXoWa(!W@&p%F|ArC1)9IMpls5>a=iv zNygCijVD8n59@U_ zmb+dp;UgETqe2mX#LCuh3wS4#R1>}I+fKamgAdRkCB`s-#TaV0($*h3m$q1{0IznUF&f^+G)w83gESsn~s+R4nH z8Rf~W{Z+L@-8n$`jmEw{v)a_(b5Q1*HKG?Arp-nd_4c;izGnQ78L@eyzU6rvOJwEK zwegwD+C-k9#;XZ>B>K+2R=Kq+rzE~kSjgAk*uQR_ncFJ$${pf691M|!?d3?N9v1-1 z=ysY&e3FZ;*7E#(oemxkZzaTCZ2IWo+H20`Hy)Nrp!JqEQ)UG^)b6 zC50xytffXqI^H{^G7Y%cR0)C)Fap0F4nTM}qmdJ1uGHiuJjU?{?*Ot4KK^iQB)Y+Q zg3-lLUrGpBJVj2aR}#h-plIzJ^()Q!{CkB0c{M&E#n?Q?K+Lb*p2m&Emr~~APJzNw z#Eh+&b%J%%a-N#Ca*GqugVrINOBoH53r^Vn-g{_}TIK7#&XHbKK-E3XIavxi1EA6| zNLoe~0#qxzZyo|F94)EPWRxmp$DymRgo#2s2W(pA+iL zPqEGMn?qevME7xQ}&-C|u?mS~)z_a5;hkM~{ zo6k1yxFh9)4#21hlAFVHqOqYGY@ypJygnA#Xo|U z;t+@8we2o*r4W~TRZ~D4Sfj+44XIMgKM(Xbr}qFMqjT8F`%Py1D4Ke69(}$0T8Ri2#a1wCRanp_w>_=b?a#B z)_ro?X(ykI)~@{rF}JpTCU^(hp-11^c3&FkynxjUB+f4*uG($nNf=BCh_32PVsF|m zXWfvnUbB>`;V!zAoNZAC1r}l8l2$`j3|!x*qlSbi#gCIj=kv#-h0pYoe{y3}Qmj+Sg4udpiZgVHpRHuM&**!AeD%Y#2~>=;r9wuwqDM2fL;n3&?Vdxu90jZEd-RY~ z*eV27U7B52)VMX(`AWwutIj&F*2h)~5`3sc({Akd5Uxv7H3kS6l-tw258JS)8*F4K zViFt)hLP6|?Eh2$vu?(M)ft9C(en67J014%cs+tc;1NHw8td7FUQqLQ>UNm;ZX8*I zPj)!cakQjDCUwHwk3QzDpWn?rjt-uIzwZ6hpU|B1@zalki17gH4?KaHl=uRq0`cCK81;l+4l)T@pJL{*VLAV>Z#{e~CU z18IYG*5hZ^f=)`G+5-~FAhu-CDVRBy(qIr>p9QzXVNfL;nC0RBp*h0coJbs(Og5xA4p!Sa4@#6g(7v~0W2$_ zHb36<)B%7uJgiqN21kH}6{k+~iB}wUBs5klG)O$or$w#UH{K^B@0^q+}g7tPp2y*Sre(ZaR&2z;FKyUmUFGuS>|% zR#-S|RQd_|7b2P5*LLN@OF^0F_(!e}qB$XoDrSu>;9+Ihv+xiGlW1rvbjl|6x8JE?6d_ zI5nn%u?HwMjt2vLr{H1*$8vZ+TFn}5HkBc?z~|v<$oTnitX2j7d}2XY*QS(lPM9VZ zvx37$>}Xp`*sz+g0zFSA@Z+gUh5QF0BEtprU5O_Z$6PSe(6_PJ3?OW>r>5v?PPD2| zCJi5bv~%Y)I%m6i#>iGVt>RfRl<9_(USGNjzor*my>_xR)mB;d#EjDUrtu zBIquc;DSts{PdoCQ2xMyr=B98-n9!AcI_gs$7E`Eo~3HDF+f|w;*v4`ROLw-Jv3?U zZI=Twc8{v3QB`N5Yhe&v1uUJpQvr-SWkwtCz0936(BRfQy77}wWjS|cu_&7*cg4>=e_ezr64HVvtv$6J?dE9HO1`S2 z_CpBjZDYzzIm1uX+jnPs4m|eg2uIBvyzjm{D^dsrX&?n;!>5qHL{v%m${5XK6KY)Esxn&GCYlsD}r)2_~Ro&)o_5hYnO-F@+F& zNi3q=!LWYlHBb!f1m@Y}^$3DzPIwLL>j-xS{2Yb<81HjF>~pEiC@r; zN*=K(w40qE|M~_?105T(2o|fz7 znU!Z^aYa))^#^ll3TLo4l`sB&@MHfVYG)4=r zT@yjKK5*fMNE&m&6J4b6OQe$UYQ7>U5lO>Jp&~35%i2k2`0j|x2-PNE!UY7polg^L zo+S^l_(F92|7>rMwNzTPEdhXqJx1$;ewu*76;9|S6ey9#I)~vJh&R}%`>~eiV2J)1 za2URC`3YcRjhxU4x69-vjFL{3m6VhfjurU#ltvIdk4F(I*Tmy693-gbLNp!+%E5Sp zeDbg0j=@w%nu@xuK(GV9ss0I#8?A{LXEblT|KFdl0Gq=9{QO5+r*wlybG6g(5v8eh zcgeD5?`PKm8tsaAww+k}sdxcu`NL38_ZuXzS_I_Z@k5Q3atF4)f?MpT2P8&jm|=X1 z00fbg$1>Rj;H6;{NCn1g33{PyV8Sm1dI>)U9LC_XDEtB$-+*py_spPjW|+$ZkM{*J zmJ)~%0Q!H_&r{HYbou@y$Y^Jn8U$vgMn;Hkd>TH5Bjd7xEzv=JybwN~1|QGHACJir zS#2_~Bq9R-r0I9?@m({5%CQKC8$;aLF(!T|hbwq2C{QxO3`GR6XD*dvpsLxBTqN#a z{{NBo9`J2d=ihkFy&6}0@4aPPvTVzeY|BfswI$EkarPj4hYT_ZSp)(}n1KWc5Xwqf zCG1glS*46pD8Et)rGxGkS_-B3-u$0)CE0PHzrOGL2lR1>W%=B5p7YG_^L-L7O6CxA zEG@Iw`ed~sL#;kkN1WSG+xUlO=CheI>mNcfv1iO8x6ZB=xY%BVx^}C&agGh~gd%RO zf`ah~z|en-z$HdHxww6(PTzZe5b*>eZa`%an&DRqcupQv0tB|ffW$x3&XaTPeQvQm zXOfx<=svl&RioC#pA))AVOGXi0D2|}DRexvSv3u_tWb~>PyUu$g)T9nRfs!>1IEqD<>xcAS0MzhcT-e3R9{FbPr-*t5YN0X7OhPldC!RXgt z2X29Xim0A>yQ#VPSS!}%$q^Sq`_EiLaub;dzRq+GLWXR~tdOs-xqV`Sdb?>J>m znSemcug`?#^r#nxVe4ujt?gk`W^uM`a4Bw+9fa_$G*&Bmx9jfNBhV)M+4Sj+k6tu= zdedWd@%Rf(n|EvpbHPk@Uvs2mUc(*1w&3X|2lKQLXgP;B14mt$lJn8~o9+{h-P4IV z7Gg&mxi|i*0B&y2d*6xiN>^=m0Ij!g*YW9f0oQQ9HEbKKX0l;wBGg&$D(3D1{~CbV z{rBE`OL;yz?yiUY7?{U<;au@Vh_Zj(#`;oyaGIm+NSa0L_{@E51?Z+}cR{`X`Lc<` z<`A37$pgY>j}Nb@WI~{JCa_~TM}kkIYW%PcJhMKFt4eIH4f1QC_TX?K^BJp1!-VC; z=g#J+%ZZr(v-7`}P(ig8*lI693z!q)7SmXeBa`z2rAu2{0+7|2){aOD_=U7Gky8P6 zJ~?1-1RS1#PcntXV~gh8pF-|Bh^>M=vtjI`(Vq<+z#lg70rNQwJ$-&(g3<-SnrbO` zjhZ*#GpCuTh2|HldxqI&oPqZ1oiiLtO)PqeJTTj)w#=eEE?~*jdbAmM7p@8e!7=pj z9cU2;X7z)#6lXy1RNKun2CnNQgSR!eGj)MAvbJ>|OyljCi}FWL{~FoV{B`@25)n?d zVc-XV#{`|bRxtnOh_7g?Pc%1sE+9T)4#qDzxG%~B6WhFP z_XRDZ90|`4GPc{nR|~yDeSM8o$#nvC+zub8*MM06e!UCI_fcE_^vUvlWf&)j6*z4D z-@ETtTwyK`3;`AYub`Z>I?&L zv2MWLG}a5?b+LgM_~kBCcGn~L@9_6QXPkjuV__ih6FU5p6ICc*MXX{KQ^<-eC>g9r zu%}i@-2CSt9?LAT->Z+*OKT*-W*C(Ln8fpXdx3AicL{PazhFN9@WT@)JTNIF^ys7i zV1E1b)2Q>g=kDkgD-=;L0c`wrd;yP{h4wJJZfR*jenqU)!qW;Y?a|)9K}Q6TDYpRq z6X75gkn2?nYy#!n7&pkJf8@3GBwCgJiJV<0J7(qP$(|IW;z8@g9p z<+Zg6z>Nlo`{UbAojSEKp8urbq6Ruh`~<#yGRN=p@258#jUdu&ewIg}b)kEneokTO zXjVXFSQ-d#9~<-ExlSna$;5J>MXGkg*Sb?j4jy#ZLmLmKpJFNFCw=z2qxn-$KRpBT zb3+e3d`Al4^<@#@u%)cWNdfD4>%dZ!frfB2Y;vZ2w}}|HdU|lxwLsJX&Tp8!Xngx( z;t;)w*rZmphPLhP;KCf^mTfD5tf)_GH808%VlmI3i-=@mbg+P4EEG6(^|Qf5s#QE= ze!%q}{iW9{5O76i;C#a6amh5!wAAT`$h+9}sK9cC%j@~y)&gn=@c3oO!PV??Hmek^ z!Oc6{F!ynE;}RS5lRm8lFGmFTCl?XQMa;_nSAX-j&D@QD_~pw3Bo{9%ID6=fh5g&( z6#^HP$t;9O9j^>=q@G|%pVNhceg!OZ6F{$iNQz+F@G_(SeVMGpLnMjSCF#4CI81LO zHmemau+UbnO39CGT4H71DQPUGg|JXD-=Ap~%EipP@q2#!`z@48&O7gSKY1WY^7DDT zR@g+9ieK484{Rc=6+%5&t58B{d$umhsVS3Dr0ZL`w>XUp0r~x~+D7)C+n@!f57t|8 zfw5`OO(~N=%oM3ipTmkBMwY?1zn!AT*?!{TnZl8KPb7HgJIuUS@(P_c-$F>K+LTC4 zy{MEmTl=TO&>#f`L7@7Yg3`is*17~>%L$NOjye?JdmDWGK%*M9$!Z$(XO zkWT1lF0xogwkZTZCRRh(YE`R3Y(7cLCX}X3+XI9PFpv;9Pr$3<-SdKYWE+@K$2U-(Vp9EZ z4pJ~;nMi0*NJ0iA;OjgBg@7*-a_C=_D0}?((C#=Nrk}PQcH=24>#?(GACU2<{;`<%EG2h z9t!?KYobN57G21k@5E%v=%7N{WG)W*1ZI&Z*QI(EK0-ejC*+hZ1|K0Hxrs+<+KQ)@ zvVBc3y;_K@VwYdjW$Q2y9*!+IZ^QxEYunI>OPOIlN~8NY&cK{O3$T%!@_o*C>EF9t zaDC*pa@bHxG>r!u=oI-KvY(YC(=t+-UP_oaK=>9yKk=H_p2<0Js znTN6$Gq*V0LJHq+A*@g!Bn%v%JKwE`RJ^7wVSe?^i!Vk#ohfBBo3MX~=WAoyT%1TT zvaAZYRfA2ppLx~KIM}n-k0auWPlrJws2@+(96`sK#m|9Y8%Gj^gmT2|1QHNzSpx`m z4c{ohf=#Q))#FD{vgBHI?Gk7+=Jl>0OWa>9B4HZkQmdGI9I(@b+=q7>&WRv7UT3O9 zCo%|BE$zmav#+Vn{rH89z+j{rc3pj(d6*$VOrxhCBp+Zw^5y3#cl{2OPXs^FglS?O z*eFg9PmxBTbE#a~YJ^>NFW4+HD7Ywj{`iHfh(7uO)ZPaQcup?~E!90?0VHEMDtXwq zbWIc$6tUAfqdP$KkGj^EYOrUmI!HOGx;YlmE~5Rp=^gcK{ZCk@_N4y$8+yVf_y zVRX*xGly4sO~zCX&awl}^}CgG6-~3U?2xVHhBtfxSq73R_l~`^Q_dEjW>r4(*iu^D3iZW)CT+++7VIn!i@b8(p&&h9Fg4Goz^cZ9dOjL;CXcs_e%-L^k

    ?12;X1A?PkAhJMB0Q1u3AZq!h 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

    Go6syKM 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%0DS7I*W~zQq6a#L;G&I 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 XDSb|U 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 z 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%0D~~2f-{A92msbFo(i9DY}m@4O?eJ?(Vdi8u93ox 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

    %uh$7hBT4#(3f*gb( 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

    Hq$CsG49#ru(UXHam0cbyC^%Ia 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%0AQDIOZ5f`GvG|c_XYP(9CPKi{! z!iZfB*|i^G{+2sy`4&0*UgT~b&87vhxz6BI{;lkp8?MZNMJYdZe%7j>z)t`l!j*aL3XLsB@J~X_FPKW>kmKDPM;LN+(VnnR3c;~JAZ>pR zlh>IpVju9;3x=95TlrqY(wG;J1{I;H$_#*V7QYcK;Io>6T%T&?i4$Kqae|yUe!SW| zmu6XU1u3yv@k@=Tz#7lk6u`!>t`O^PgL+~Ue z<_Bxn-nnK?j=5HI(Zwoo6_qOMM^{lgW?%pIwTo+J3D7w8xzR-{62!wDomo}ttbzh< zq^B9fGr#Zx9G?FlUpTAcW2^TWNMJwi0x$_{+ma+v5p;LG4s)(RH-xzxX-jVc!ra4& zpg1h`g(1w{K>C<(v_F?1xV36jXzRP62rif6!SOER;|*FR0A~#;6dNsP4X+Dq-pt^v zp_~!uei~2#z@E@qcbK)gr~oREkYBlZ^ZlDQlj_Eeh30pZ*-ZLg-`$|P0OQjsMlHR#nsp11VL(x*#QSLxhqynRZI;IVg}+CQw& zt00n?O&LdodFhkH{_T4^5B@1|{Z@c=36%c|;8b-(b=IE)M_Mn_EZlkDokbvi@N?JR zeC-f%@NJ3h+mnr>saRDdkx+adU|xWHNhICY#GzVn$>Iqc9AE^jzR~`IT6=c{I;WMu z_k%*1s}0UyaO|C+Th}?*#wgAU0vwB5m!DEk>v*RJ;2d3$E7Vvb+7;&mS*WK3VF`3j z*Q5I{vH4W~(xy7tg9sa&Npn6d00_M2>{!fRGxeIsjWN?epRP}z z=9KfurlcWk#|lKC7`yqAr7_9!dfT&9pq{~6woW-NAqp#7i;6ghh;`V)|o(7w$*6ee(yFB{F`pSZ-?U>rBb76sV_=k5J6;gc(6*1fG_Vm z3|UgLPKAU(GKn;ZIc@2U$g;9<^3GcA>5<4)kFV!}<>#7*Pw?v6sq4BShg29jV#uj7 zdzTmhAEs?<4`uz$JE%YE7C(C1pxEw^^j>o7XKPe5N{*Dm+JWtUY(Kqg%r-D6GP}*g z1tMZxJilh?rK_Bf>>;wuKLD3R`kkkEPq(K5+%z5Gv0hlIC9PeE$k6md7{nEW5B`du z6#NI*t(6DevdZCRw1L*?N4H6Utp)8zwLyKZStV;GCZ^IL0ZBtE(7$WVZPe4vQ9q_r z5=2fZYE$!0R*VRaPtqxwT~?6l$-Q+5!Bfhl7OgVtCSs8zNkjChR4Ha&>h9UO*45`& zvxAV#0p_AV8)NeddgQ9~SKjHlx#zFR>;Keqb&}ajek!x|Xyt}}2KYUd#ods&0d}60 z)Gp-_oxRY%q7f4O48b5=zucPn{|Q-r7hhP zoJWV?jfv5I0C}h%zxG;%dE^ufIHs6STv(x$GEbvyk=v?`kF=&gx2eJQU{^>Lko(r{ zIWP$9*En6*_JesgoCgaO+Ap`iZzcRZxi-bHGcLof14?X`%WmwXq_x{{)@>>^>s90c zWgi7UwUHVTzV2;3I7sAw6Y(Tduk3(Rz z83i7{;!sr=l0rS%e3g`$=dWoQxW@Wg1$j$=8sxHpDRXImnSAWY-MilyKfZC?0%90_ zVbP8X^BtW;-H$Hgykgy^j`(>tt-WeCS?V{wXMr&j27?)+3q1Ruf&~-L(X`$A&m(37 zBn4kOx4maUgsr4)JV3ClC`*Dri+44Z;=n+Tr||wbB5x-U*R6R?(96Vg`iN6p5Ick9 zp%Dbo2Z=%ysmWyG*Xs38BOvG-q3sT&z(M=FAaVGLvUtU_qhd$bx}|o9ed#)84r(qx zm~Y67S$j4CalKR%+HIwR#ceKCzTEt|!;5hUh;I=I=;@fJqX2XNK7IOl4?0N2ckM~8 z03E3+XN+t9lSD;STIF&6zhu72p-p}gV8m7gcWa97f-Ae#2hD{>8MvDp@p!Roh<=N$ ztfDr*8dkGoU;)4Fw8q>iWM5ER^bTgh0{*v?Cz!ckeixz&x{WHJT~|EO+a&HadoGlUTtT;ZKpu((=pz}}ly2ZbeUrVHoa`v07Z3&13M>QMbt`J^vHV9r zn0H5%!c7cI#KtYKZ4I~U&PO1yBn0%@4G{qlF95&qJc8+VW;gsF@RCARg<&q81RWl zc8oZGdZ&5*wYvf`m&CdH2)U<9v@lY-TRn7XN7B9LLLJ>bn3VOYGr2w`S@!$q?!Nm+ z-a=GWzbGiu>IClf3t|&_9iAZnAxt^;0mB1X*%BC?tJ{%uVW^}L!dZ)w#EtD|4Icnp zPPi)B;R^e!qcwt^em+^mg1rGmo%(?tz;UERo}*<1LFNpFmo2aq%yXA*1*gjz^Gk9c zv-;DpdNlbQQ+)~oolncU`@86{Gz#-?PmjJh>XX=H{?P*YPOoufZU}N5#h?rL&RFd5 znF@p&iOW~)BTLlEp6=UT`2Idvees@ef9gz-FOBy02I-KpFPB#T)^ExUS;D{>I$I#m zmL3J;pE34-Yd{m~m*k*a3(E$z-7Du=$UJ=NaB5WH9j0Hl7lsvIe`fcc9^?$iOhDZ_;1MEp2X+L1bLPp z9U^Zum}hIZjl;jVY>Wm#^LBD4vx!_Tl=p)~rXdgs33Vm#!eDDXqRIgb*h(w~){0o{ zj|IhPWmk7Z#yHBnQjz&eX(974*l_%cw^*FL`c%TdYRjh0#Uh_Scp@e6Eu6GK4Tj04 zpXF6L;FlIioLFOwK?SyMx(36|g|!$$;|K#GvfB!>Wd|qI7!kX(*yG*i5eM1DVRs$( zO0`IEHv|7|CwYzOru;Ct{unZ{>uRHM61YGjM=B@+J;lxO{_F1;AyQ%QuB|IS-e;;W z3`^|N@Pd)miatQ7qss1q9(Ch=+%Sl+d<(OT`swhCpm-}W!+^doce*5^R`wWJt3Hxe z=w&delY-b$`E_k_9qcQJ5v(qfi`*fPIHw3k{4{gseN#2DoZ$$eGuwacbU&blVhx?z z1svjJ_&Vdp=|L_EdVnL!10!y1@#8S!4#s>yW%UHSQX;`W0-qJ+_l*A4k&z!!;^y0Z zxN&CUI@6ZaCRtmo2@VqV zu0tH&N!tJJ-1U9_6GyI~63uV-P&=BpTwGP!^!z$sXCZy_HIbOEstfy>zXECLD0!9X zg?TN2owu;B8F~uw$B>IrH5>HBq{)E8D+4CRpb#c%pens$MYg4>#@ti9-p@E>K z=zv|`_ukZ9B(OpHGAgaU4;6R~I<>P!lxnsUiM~~ld zWQCdeOW&LKhyeB4{p9KJjPG~`xzGouk!U;K3%28AG4tHeD={umzo}cK(F((-WqjkJ z6Dx+bFfCK|&)Z#-4b{i5-DVbpHM#S`+vdT&podD}3HBW5fUS~k6KJOZ3)|YNWdU%R z9$RqN0m}#H$cQucc%GNW3ZJvensrIyv)Jha$YbOUChD$<^h`{0$=obDGYmAu|VCy%Ac79e&VXMPW^c!wX^o&}0I%qoFzh;^)3 zlHPLvf#Yuto*ZQUi`v*G7PfUvK^Qph*yECPrxVg*tErd48}bBruFkwha1wyV>ucw1 zgNg9$s}<{j&Jtij!DB(3)(gm98!%eLn}dUZd$4B^V7bZ`6jF+jr$;A1AA5{k#|%&kCMGA}Vjv;}VmSGL)qmp4sn3U>`_{ z*da~8BEL8sx%VhoE{cxcaqjQPLc6e56M*nN0{0WJ7);=hRfC(!2DDgEWs9k+D?cm! zi4jx(vYYZox2Z6G4fFbk7S$(ZI$>qXQ#tnNH-7otla*^P%g_c<>hOu&&GZY*FINa5 z2YLZfk$7vnLSES^wB9rWy#ySfd2C+UfVwB0z+4X0A$+L4UlDXf0S}jk&bF?&cq|ax z+Hi2ka>N(F*1B&N-jJtB+LTgp6-)mo71sxd3dBu#rG5d^!P z{-B3$K1>|Uo5%Bc5|+YyXyD1^?0Z;b7bOfWf<;VuGhc1qO`cR`E?n=XEh77}?aazD zulL-Yyui61QV}|u>W4fwRWdUWm%r4mgaC#+29a&>{!P1&4zTwtTlPJ{zWlOw|K2hT zS`7964!H3++>L^T;CSipnnv-scfZ|6eo$ZnC#a!JBLY*;1!aLnI&Y!po{Cf>bbCa= zj2mB)h!QfD_aJ>a?7a1_uew| zL#kIluw%7P1c4IW*Y4noNZ`VB$X0FR*4EQRLZ0Y`HNkLj{T4WjsO9I%e^dyfk_uf1 zr{LN<)p|Lwyax{FH1NhP2Jna4Pd-*stqs?1!Z{WOLU|CEgs3N13{YNAAdn((hobzV z<;aW$1i1(!Gk;qyf26F<7g0n#2>v9ll&z4_05N132t-}vNlL;y`q8a}Hh_R}gx<2O zVl&>L=5F7W9-tH9N>W_~AuTYQ1!9Ys@QBzV7n&_Xr$@$ILy2jD%4?J*2D0YS(6ZHW zrCv$BSYZB}IY4gNp9WKRz>@`$H5=mO0+)Mk!y2|t%)e*AY*zYY5~)}y{0q0v)A!}O z(yFdu9tZ4*l6e3ZS4TYLA`mD^_-?B#yI^&R?t54c+_r z<4o-npGaJG897iWe5faJ@gonwZ0ip)15f7t*xfpz9+;cr@`e>NGs=}^D)nFR4v$%7RVec9vg0} zVf-*ooc<=FEPb^C1Xk1`?E_X=s|vuo6jr~zwK06-T^9?opIh7_V2dHrG84$+8qw*? znQckgudx-o#SadU4>N0jfh3~@6a#lm$c=of+a^*fg_Oi(q50adPXu_TFc{M^2gY>0 zD;s>ZR#=`NRh>h#$%g^ix zVgf}?aJ;li9#8j!udg(i?1?FgUNvQr zxoCZ5zCaS_iU;U^MKswH#wQKi_!r?x6SX}P5xqe_k+tA`%06kS)|_m5X^noPKm;G0 zpLeobXE7Y7Psps-4i~#qzmeC;H{o7}&NVV3F(*SnwUPK^2H_HNy_DJKC*P!*-n%La zlfdD3iok6fIF3rb#^)A#A!yVeRX;YEICx?R1RH~gwl=L?D*FR)dN5kY_ z-8!FLN;{-7hiAikQFcC%TR}xVGEry@ZzC=3j zAlK!+|E)pZB9Alk&fu7P1I!oojm8Q8zzw(80N$(JawYSNhPg84$2Tv%`RBvVaz?~y)pk3=5nGFu@~;_)W|RE)UdJnHjqHRNi8oZj4B}nN{O__ z<^f}5!H5l$&3s#oZs%y-9W;L@ix|X)XmaAqrEYDP>qNJtO^cDS`M$R z)SW_mYB#rS{S7OD73F(xBNlu{EVK<&b6Qzk9~LRV^@RTm=ijc>w(;?uBXWbl>bBzf zC9(i)o`6???Q9^TS~n!ryUYUyr|!NU8)z~672TPyXU!3ZupqRBnfYk8YDQ5Pb2GZ% zTvaMjF?3vN*#WWcH?Vd>$TS5zOWp{x>Et=BOfxtrQSmCHc3`pmSRGkD&l$2d=3f%h zBog{AeKNVq>{~d`ZF4VJMBc2Pt^S>R%Cg4}ZT8VtkQgr8x>G%apWUvuQ1d1Nf}NwI zyqW-n1;eP@Rr-v6hQpMm-~V@Al3exm0ekGlg1w)vNP9?Q%A7G5RbChK&vBtWy{sm( z%7*79j2|79s022L5SkcDY&1)Ndh8HbY%Ce*OMuDkBR^vN%%zz0+D@MCf;3p5bt1`b zW>>|FT7qjlPVc%AOZvjF$v!&8I7=6AUF48?XiH<5IgMp; z;%z2yw8d#N62CkBCOf2JzYg|!pTWQAG@)($dTh*_?YiXF2F^MfH=lSmeB$gl5{Jib zI~`w_?!ENd5}fJb%MPBd)t*OD3MIk9i+NiX?~6$SvPcr1iw1O{B9%riwP=*R7_DQA zN@)e3R?3CUKTGBXy)XST5R419m4d2c_9D??5d@WBhS+aQuEc))ER{!#+U-=3{&Ia{;J=!jP zDs?~v9ydIlS`tVXJ(j+e6E=jQ1PPM~<_02KDC7&6Vp!MPV~Feefyka*Vh0dPU_o^#>JP1CC|6(9nO=X^HB2$YqgPb_u;8MKRA{3 zeT=Z4807Lw<aGT>AK*(Vd$C32Bh!YXQ)5szdXFsnAx?&E_c!9skPlbtH%N5l3SN-&rk~n zig-JNy@@wgT(xg5S7Si~UK+?q$F z!T+ptQm1bM0sJHQhu;EW_j_hfq`2F2F?~~r7~)#Xrb0ApkL1U z_M9w;&GP)Q?ZeJB`v)a@tuVKLoxAxu2{1prxKxTsouKta?(+%<&_`JcaH`yg(o*eyaq`Zk>;q*?wIwW_jKP2v1Gocro%~I>Ky}66I zE3zZcXm#^A*GS=9LkUd~hI3%`CjpL7FT5{!`nCY@c4*GgIadQd{otHOrU%9T_B;Gu zFLo=9mwU0fV}TkBBwX)2 z*cn~7u3fxLTGpWz`0{~#T!h`;8c2Kliztj8Epq_@hluMc z6+sLu|dyM4F*O&}UX5ktPGIt9^F#50wWX6jdbQ)tE=uJrm!x zJu22~1pcMVf}hQh?)C}Mfa@YUIDqTos-1iEY?@>WY*pC0-UBD(KDGjr0*!);aK=d& zwy5B42@3#_3R{Q53b0VYj2opF(l2HVyWYPaqINBkTBJp>ny%M>2#5VZjl58oY1M;a zN-ng=MG6?+!qp6)-Q)*MkU5E>=9^&R+YL^(y&&smQ=ccXn z{}k_~HuBlpHyApEB%T3yhNfDN5EkY5AG~6N@WDmF$D6I6I`^u-Gj*C~l5nN{3V=qnc_K59xXuY-S@UZfqG6ozc|x;^0-9fdV8!!taMQy{I9%V!>d%>ZkF zCuimwbbkK!C3ybv=y=8AHew%Vat1R%u0&`TKlf1M%};@;3GvqJ*#Y-R9%gPs)#f15 z3au-+l1V%2%26cI`(`BylrePdvqm9`jtO5q6;FB>e4eNtv zc7!$5WO+ri2;lGtO!xeN-2mNI(QZ<>f&?v(06xGUpZzsX;r@Y9Wm~pA{SNmbeeLEp z_{a`wfQJ=xPk=Y89XK%-hfP9`KwoV3CQn{_eG$B@i`QOtSXxvCLmFv7?#RA1q;`pl zLg$wUjWKCnWU}|8@c$=S+rl+Tp;j;HUbEo1WBIl|i9svu+q&GA_Z#qHEcf zooaEUCrbCJlKpX6wD}9(iD89F4VrDAjIYp`_G$g|Mr}fkAi7tp4X^PSyz6K~WUbE( zewx3k`t+q!yL`C4oa^@I(|cFhVSq<_w;eCAMGU6x&0JeF+~|QQnibHofTrq$))rzy zXWTTiaI#tG4C+tuFR+*~2$$99BF{sFGlvS0+VJ0f8J)o(6=dHjho<3n`hmg|4qtB3^x25=KR0 zi4Z(+RVJf~WWV&K&f2Q-mmF&w=&)gDXyiNq9(5V@FN@^x%9XdSSdnFJvon_)q^e{> ztmJ2kW_8%NGiT{mxTQLaisl333A#`-xriA7;}r#2U4*I`waKljnZsi^^Ms{yE@~ZC zKndG?VW!EK8fB?&X%gG^+YKYF`na)gmy*ae<1FnrI~_{QY?VZKZ$ z&Wwb#_f*6RA(-uouFvb8tf7#&VBm{gRQ7bp^9 zzTf-}GUDvGR^&fGR(TX|#O67+mqRw#`k_xOU;NP$$u`vSWurL9sLX{FiMoIJ%81Zt zkVKa+B12JdcX7lWtF}}B$WCUyn3>Eh90DFYucvY~GneY-%f$l{m5_Y&cil_pm91jv zzl_=PSddw0_l}h;fL{xYg9TO6TrAo$7-1v>lm5p$Cl-l8Ev*t~k@IdcAa1H@1Qc2i z?v6{fo{APl7zYhdTEWu^zrs4Fqb;-r3LUg`)0UQ&F8Y-YTH3D@ zqRanzuOyE^`2GaN#&-Bc=brPPcRV9f6R5vV+kJ4)x+VbbU5htt*2>$H9kLV}n!uNC z^j7;;rQmJ&haBGQi7haY(8K4)g#S(b27hXe#L>I!jP&N{< zof@?GC8!ODDQBc$&v)x-hu~$#?wB}>6DO}1Y`33>qR2ZWw5- zt;P*1J`aRf0Tf)eOJ$Kno2*+0^=Z|AdSAWEnL#+v!?1n(Zs#8Du5STQNo!O{>l7ZSBs-Xl zlDkodYoWS{-vwBoux=7C2yZ|0si zd8hYbET^gSud~_#@@i;o7#zKu+k^79Y0^-4V!w6p4z$C-YOeUiMZr#^!^lS@ylo)` zUK~n-$>B3Bpr7_4b{a3PjdMv~!)9w|I=Js#n#(b*G8g(da4r^+(nG)4;f6UZgsrVo zM$9~f_7~J>_pYFnK97|Cg;-#P-(R2V`Kf*B!2vYRh7K=x?qjavcEv@`@7A#c3);qa*>pP2L6 zQ4>}JHxz!SuaEZ^mqqkkc z{hPhA{CsJP;NaQg%q{p{to^!&7l<3=^B+FFx^dP1V_A8FBzwvJ^?vRJ_P+8xear#V z*s2wyx<=FJ(q*$682!M24&^X-hTOipEGaN5LSv(0IXCkvW@H8^IxGu%f5q%{gqOw ze3JPTw^GNf=YEo528%M4I_!jHh|wjKt!BQ+6}8NM?wbYVf9O4iTmTK2q20Jg6-o{S zfT|GrONmw$*A+Dt=eCPXve3-jfGP?tpcYj}cc+H=eAGI3a|UAJlFX*ryn^n{XEz9% zic2!TVcf5qtkg?!p_d|KcH(PqGoCk04Wy#&Qh-+_Gx`=So@FQUiF^L?B~2}wq3aI@ z)Lx}`(?u3(uq`M{X(L@B<)x}QH}CTSpec54xq@#$J}$V6UtR-mZIrAIpXY<@dcm|+ znEsOvDYgv3iN@Qs;HFXgsg^tm;4ga4Pe3w;?@-l#gpCsQs+LocE?TV=$F4mGJHwoM z^wHB9rB>V3$|@wTutf9Ov;=KgSU!o}&3X~D@TsS6&#AP!SQyi1SGz@n?h?1g(N1~+tn4&bm{RSjgiJ(54J^PN; z4HYIOd@LA7CopmMB(J#Y(rz(qsJr%Ebf}wIhM)PPjl3@Sjus=9;fF5h+IMhg1Y+HF zJy&0sdnxw_O!w%wBekn}N~n!Nd-yh*3EQ9gK|o*REnQh$Ii{ zmqw|n#qSspldut#8l5)DK2mE~^Qlici@^94!5>z}(stQ>Ie|#3l*$`)+IGNFBw)*f zg)aql^70N_qFohLMS2n)t&2v@apUkJ?q@k;v$Rjr#1!+|j(iXj$Wnhg5?A=!;teG0 z4e!$?1-rGxIFa?<0LdKm#dyh_Z962gE*zQ!d01&4&!5cw`oix%b7M?yleC|F=qquB zT6plGO$nt2+Q$rZ-IVxUBvCAS{!UwfEbPLjSnQuIj^Pn^yKBaD_Gw+?n9X9Jn^F&) zJ_5$4 zDK;op6COrv?2P&`>tS}X@jh;L(a-#mGXXINKRpN)2z1eQ{g5DRo z`%Kqdli)BdM2ra?z)0cH?JtC2n{AFCkYps*b3- zvVco^xL+K`k!_VbKr;}MBS;L6AV32{M%YeGkl*%vvHTl$b-UW470Mh^vCjNsO=`yq z7p|y=1sk|i1wpKWuw=f~KCp$Y2BlVHoHINA*x(A`}Vn zw!c?h9I{gJPOGS_ckw*Q@x`f}7P=d#IabY0CN+PiEXtI9fc9db{Kj7g2Tcj*(v2|@ zd;!qty4F7Df*{C;!KHKT&%k}}F1!{qf94F_l{Ky3^Lm}LKgm6Lb_286l-Ru3E`{7b z=5?K+Wiud$pmHqP*m=dgc~{Mw*8?8avGG3hBnryp*&nt#&Fm+%Kd8q_e(}Vqt(x9d z01VZt2@wbzyJBBf&1lEL5PU$H+)H3y8yUHqInA}O&hoDx5NtVnJ#!L`gOh^(!E%3T ztY8i)O7ak!8nyPA(`t{C+jTy2*gR0f^6S^9el@?y-uRUJo0nhCB&^n~*;QXiSes`# zET(98d0WNy*kU@z_E?Fm{RzQs)rUNhq>`d}AJPh*H9Q+T{p0ICO0}qwQvEK=C#co; zPU$J1j!fK@6^0%Ee=~a8Nm}?|IxR%U0P4dqRTmj>8I>SN;uJLj^ba2EnU0Po z5mT?sY?8Oh47wk-8C-RpLdPxWpZ6D-Ul(;I!)Tg?R>_b8TIVN8@-ga~sbv}BZQ(TN!r`uD~2!3fkDg}?zgmYE9tGZy2 z_^soEgRleh*0=#^ykNBAhk-PYcfEn&SOMl|u#Ucw+wzq@wO-d7q0}G>%|`C+;GwJ` zy0y&^Fn2{DD-!8qUJrQ}c)aF#^p57Hxuf+#%gEf?+C6lR^D(i|#H>U$DDi?ZykUh-Dh!OGR2g%JFH#(MwppZ)&wUuV{G!ovDbz-O>($L5-LM zhRMVh)FIyI{zX<+{#QMj;#}I_|2x1W-($>gS5VMy%!DxForjex6h;Awwtp_J*I?BC8VBmv@bNP~ z${>I3*I6uM87QT?5<#g#_Lt85gHO-Ft&~1?Xv>=^xk;F<(?6P2*~Dp)wTbx(mliQ^ z_Hmn-oBQg!EuCtYV`7s`)v+THKeQLRlU?d7vtQ)wjcyr?69c^9fm{&j)>!pIg2Avw{qtc&1iU*$nL8qgRWK}9diN-LnCzFERl-r8E z!{0P!4wz?gudohb`PaYOW+Bx@V?6q2Ys_Gt(Gw$le2Z@7nv_)+HUy#T9HMu z^2yWOze=Lmtfj3+O`Y7S5}EzZ^zP+pL!T(nJ2>5A(hB5_Dv>4N?pU>8APjmhnyV1$ zsJem*EzU{?{@!X*=U0_w0KWN2S%%i5F;vH2MzdN$hl=$ipeSRc}NEVJkA zB3pJEe@2f=%-?XfKbIq7JKiniV)e!cr2~YzBx@tE(wf^}2&HP&FTb zq7BxSugq)X$8*Q^Q9yeq9^XeXQ|w%38F!Db-pH7_m`lX4_9lr9F#FdQdwQG|fuRYZ_F0~#~LC5ii zfFyx=DKOq-^G%xCv!;~T z)g8iHAMnwiA3ES3cqhA z>1qj7!i-Ctkoap1*VSeP(8R5> z@tUedUKg=?0oSYA#bRWFb%FA>!)+J&c`MVS?1u8q?&gjAQu3Mi{AQn>y4v?FO2^zZ%Ymv7yg%uk1#U}3~vICSQ<-!BLlV}M8}xDS=Da6eiO zgD&9$#&-CLCsN!`(W#)+rG`B*U<-HiwEGpf*|(rmadg^Ml@Lft3O`4ot;bTWNV-Mm zLdz>awW&=y-u8FAkeVq=iS)M#jLpe-)1raVdO*l>6fepY)QKMaQ{l8;CKej z&9HrlDa|ICKpxQ4S=w5~&0R6SxHDm9#C-~#K1ofaMl_K`d0ngkjDplZ(4(K-XNa1C z2a{SO-12T~T$5DCpjM;e{=O%h6~U;wsl_Bv;rTQ-*#^Wez^{E^_1L8B;mn#m^Q7q3 zzke=Aex5xKzs(&>r@7ylRGLUwtQMrQRv5f6&QF_dQZbr$Xy^$=OhTi_sGSqPoB7 zsZc9|A|_21_((clsf{avOe$+9?x)(&u+~nVEy$jIQ9*Pa<|*b3H!nOg@(Xm;AMfvf zHyyh4*6FaclZ@PWl(EEYb62(lF$8qSV(avU&9L_I&l|OJ#fW8aE*w{-&9jQrmF+zd zdABkYMIYU6<~z#`=Fz1W%xYkNS>&EB04bB<2Aa!dR#5(@z-sN?JjV(-X0dT-Id`oo zzG1#i;g(uPmPJ|@4V#f&0HxH?P~Wv-L4(S#vrWjY!vy!K2b2Nosopdr6#3u+jh1(i&TO4(S zD86Y~!g;~=m`pE9>{$x|fNGVXMqhK2k3b(af@&wK1PB1A7o=wP_SR|JHb?ZXQqKIr zBRZL?B_vS^dQxUh!1G9hePp`RV;dUU)MD&x*R|`rq9eA(8N=YakIrOYa&)ho?;>$$ z+sI;N0A^$gzq)>SK?qNXTuYvvRJ2#Jhh!CDOq{9l0RGV$bbMnA_)vmp#fNkx41C5x zZ4A8pc(pN2+?z*GO*NBSIz~xKxTObN{U9;9K>X#oI=6Vzcb%C|!^uPYH=~^~v;2gb zfR#LB#s0<{9}WyWlu9wHdV6R5^rsU=!&Iz?yt~k&j2Sbfl!hrlKoroWM!111wBN{= z|6KSW&(vp`8_xclRlWcI`*&rq0B)Rb(ru?PKa~X)!+Gl2Rn*&wwo0eEx)~u%TVqB} z>_y7?Cjc_EZ|VJibiMe=8^U-jM*BJr-3r`%bS1L!3G^Vld1&ZG8t=!5VSa5X z9>6vCmkSbw2rNgD!X;)VN5)qG5oP7933o(sXvwPDe|KI_0G zE6tdkN^P63nvO?6M9D8s+JhC#Ose6@YEqXwc3dS&5VC{_Eo814r7N>C0b%KR z0Ek)Pw@|u)C)h)pE4xq{wZe6w)l8#J_)*zQJVZUr=Mcw8bES^%L6C{}aNOYF%TVW* zK&fUHbEMz2yJo;_>R5|4lw0jVGBSPx|j&}{f|=&1`^EA z8w}s|=9`eyTRhX!VxGR}cYpqKOWWE7wn)RgHQd8*y(Mf3FPUMAm_`==k*VX(4mmGb zDb;C3YmPV0Q7Hn}{qrEUBALD21Ruy|`&FyRU-N>CEliI}(QICDa0K9Z$>6Rry-2AH zxK1r2)7V9qHB8`R5|fmKTV)+^IEoSdQN=9Gt!_2+ByAnGbmIBknvf-1w0Aj5h5zK& zhpqXdv%}d}d?n9pdC*4+u#qnvW@U`(j+Z+~7BBSpW$+?ZJ@ox9_+<;jU${=ms&_rG zy-|Yv#j*N^Rm@je&CM@$igh|+=+R>s8j^HYO?{XW4Hp2C73lgJJ|#Rf?Q#l5m3bdM z9(p0+s0{-_4xZfcsdPxE3~ebNFinVoik?|dW9O76|Qg+t6f!he=o+0u~tSdcD6|+VrD^3iC$rdQHZ@=QmL>}4uW@n zNw>rz@0^=aUZqdXi^{E%_=1dKlu>>=TYl-o4=+rmc)V8ttZsB~{ho#*E(M#YiO{bS zfhYY)Cfr-fuomvtoO%go)+y=*zGnb=BtZ2Lb+11RIxwAiDU(Vw#ZD4P$(z{_l3Ae*-WR}{A zDNnUeVZ)QDSo&7L(GAlAyskkvFW${hFDQH?mg7+HjeH|?pb&?6C@{W;db1O7RFAf^ zb~k*q9|^&NLitO~0^8WKR=A3_E*Y~wNlsRHts`*v=VJExYr6mgmv*h0*WSktvE`Tk zZ-sXzTWV@wJr`bWD%Xk~ai)F!`g_-|O>_JA=+k>wxX3@&I&ULuU({xrUn7{~jE?EvFle0W&CxqKM5ali@lDuC#P;cLnWPT~L>0 zdII%5?NCo`k6&Ub%$(N>6QG_QD;w*&-OG2RXnd61alv@ALfd^{@A@V+@Ptb?Zb4lW z@JQ0CV8}23Ve$2|YuQ`nEAEMl)EZ&i^$TQkuWl1*v~?|q`-7IOslx(WcuYtQF=I6D zZ(p$h6}m_5+k0xjpdUHC*GEWH*QQHw2{vGE{p!bDf)(kpS){po{#03y2;Ec-4Fm%~ zSRnQWpI^{{t|&V2xkfCeBTWZ>O$GjTG9cMe8J&2VP5d0+@4@H<*(44hNh<7PrgNWV zW|qrmpLymBU+`qJbCRE#FP?d4?gJo$W&${-7~C^U(jXt&)-S(a>Wa?kl^~{N=f~aB zT9S5dg~d93J^^y6LZiuk z4J1*i(#AnQf;c*gVj(RReh@7~K3kY59>!%F+YVe&TK)2{oP0*N{2Tu;n~AY<4Peec zQz~0M7kzqx&@AuWwRVQ7+zx12|L7>UR&eC(G3ND-_RSj>J7bQ8>o>iTZrXY<1!RRZ zv3~=j@95mU(GzW4zl-@yolGH$$qW+a*;KAG*U7Nyer_J~X@P##EgPHw%IPw5H>Qo; zNqIXelcibak$|lnsTT=k52C-Tj`=jYByKZQR85#;PE-0ORgI!g=^F(#XI-mJpPRZTG zjB-z%9vUKoeyGdFQ>EchI2{e>MsY;q@Sp)b!2OGRle<}v$(8?9VA_`~xpDF06y#WL zp-{AzePn7Vs^bH5RL5gIWcT!BcQT##%Uzw<4&=ZA% zBN7_q-hAPLpPC$ytAei_b&3500|90}_YkAw{<4Zy4RA;MmNCcrxK~z`GszhU_mvjk9vA3QXdyN|h-Tly+^ zPd5z@Ur*q{CkyU%;5Pwfl-zZ}@gM!@mXZ1eTVfI^vu&w?@cc- z28*3~G5k4H%{|Sjls6Mr5~y6)Rq$~NpE=os)H8|Rdh`Mpi67Z!R(YhA5uBrnO(7$o zL3A+4nRn;3i>6&&TXZZo>Iy^}k*|sps>rmB6Dlfe&F{2o{zb_EVM6#Y!e<&Dzw_yHLfFuxsuSesI-AWghJA0wCg@=B{zs+84nKO9koNB7JYD7E6z z4aH_KTVTKURH>xwGUi5_MD=p-0Mrqgm$(cBUh2Dy`H_Igs_+eExaVcO*o!O>YF08o zQ-q>jL1|bKXlrj#a<4FE?hpI>Y_pbxDd#R6V)l=Ly&RV!tL@&h*lu_`n>9(MuZ}B~ za$tl=H4@T@lD5Tzvd#tQ07?*>G$B|nbYvbu0CPE7m&~*&;49HLC&z!q>kKWK*#L;6 zsc)`c1o*o+rNB&DI!7Ap>I%w|khhJ6R9rbDGzUg9W(f#Kw)tDba|)2`MqhDgaXan> zFQVN|5D~kt~KYXSj8L1Gda5=~Q^3sMco)FCmEnsj)E2uZL8yS>crE zQv+h?*85$OPIX&XSjqKeGD26=!o@*fVBwgZncJ}F+D@7k*rzX**;0u%4Pl-2@l4)v zaT06nM85KsNf>P(7+vHIMzDnq5COgYlkydcH&}T-9^=xTgzKOhrPl36sG?f4R#A?Z zqkL%68c>pUc63zDEC7t;n=t$d6nTQA3x;zTt%)PXfc^jRWhnSz4n-WWDzk7z(g@c& zkdfRD3G>Hip5Z>v#s;{B{mjoYGOeaFfNqp6D3%Dh{k^Kzluw{giP~~EppG*DFzf@X*E+fHnH>_bK+#BbjfmNz7&>*J z4dWYe>Pa0Vd5`;5A1cebmaBhw&5LciaErDZ`YgZcoyjR$gaQ^`8VZ@R%Olm+IddwN zPAIGsOJz+lf!Juvo9pX|@sZ)m==PU%xNzydEWd6>O z#%vypLkZi~-Xw+uf7aj>6@_-RP0*@^6(l6Z38^6@kyp_BhB4tLb2uB23hbXVoFx5j ziZQNVAOA^Do!=7isbvknRIE8!r`O|i~04QS6i=Rk(KoP5~Csz;AVNOf5dA9rRkf}Qk<#pV~l|!bwXO(}L8aVy6G&Gd(k) znXT~6wyPV48t?LT`F_rQ*tz?_g^&`~)FrRFHhpN;k;SkedI}Uur z*Kj3QN!GQv!jF&fT>RCFjjr?abg)jc=JFrviAJ|7V+zW$vSy}fz|>~yRXJ_kQg&(i zUgniSZQrhk_tY6=+dj21{neRzw`7jk^)-98$Ixd;q^u(y$xANT*%I?_J9ZhwUlQEc zK2E#A?Q@a*7#=D6%iKe`uh-lApdvNYWehHG8BB>J_pRJv<(iu}_8T=`g*J7;tUju96dk0I7(J?3lJ^-W16p!#s6}t` zMVcJFvCV4=%oN3GjZrF0T)if8d*+c6l>PuAR!#WNzoNf<_uVsRe7T&3`41-vvIFJM zGfxcx4K@=FrINN8N~QF{fx3p&=J|DI+34~vlOfWwdI`h}7Og7ZMwGoP`ud<;>Z)KH zMDU9Swt^IVHW^~+AXCvT&YA}HrMj{tvNB1qv7!+=qwrhCZ z^}Cp^{=}U39ggr=Du-Rq0kB`=gJia*Nn#Ds#6Q?H9-S+GI9LG z;Z6v{)wS(Bus_c1E)>rG-Qkf+geo3&Dq~mnu1|qq`K8r=?B3tQ{ehi7zOgPoRPj2l zP96bmjiW!q!?ZlO&WK^Mn3{R6{RGUC?jO_BZ${_M=gBSf*U0QA0M{(TAi;)YLji|Pkqi6@IEq0 z6AN{a1nyuSEeT~xy;9{g8*^SLc6(E5g;p%nDx^ZLj(LI0eKViGBdWIxd+KaVJgpDt zqRM)6d6W=U7ne!`Vje@L3D6~?_YI<*Y7<4sibcv;K^_TPB@Trp?EP9)hmxXOVrvo% zXjeVnE7t0S@lPl6d9_aT%=@33t2L_O*2v>B%6 z${3jI&>OpZ4%g0U@5L8w_K_xYBQ$=-ZFrGg{Z;QDE13a4(DjrQriM(?WHt9@@eC-= zeO0imIA5t8nsw!>`iru1yP^Oeo88k5jiNE3i@Qv)>+Ds`HN(Rz-AlLZj!Q5- zitoB`g*VmXU9oLXHvvAncWqtD{x`?{rWZnl^O+^R13g!%XI;`Fggv%z&y{{nAfRi} zHMd+X(670AnT@QhEMte}y2YKl{I;P{rdNv_#?UZaek^?@cR8bX^~QoqiP0?6v}gK# z4x4{4-L56vhpHt;P+1b0c%dpgHj&tpusYcgeqt{g^&GD%NSDkc%+dJb*G_+JKiAf~ zoq-n8RlFo6l2@>}q0-SFY=j$?-zjdbTnRS=XU)3HztoYw$<+nR>}Z|dAnt%#d_a9PUZMb9`Z3 zfeVpdTZ(T!jA1@f;kr9zQ*!18>Raa6CFT3tSWk&tQ+R7+ z#8uRJrTr35`S(m4_r0UQ2(FhYy^1g7w;Or2TY-RIMu zE|MPzgq0!TN7^NB9R*UMw@JmclzvnaNbX&^k^3bmWN;|3-}LBhaOA$R1|><)5~*`^zU5GcONt z-z&r`YIG#;R56qsm*txb zGN4mSc?$I&aCZ5i2lT=D5=wS#zSgN4R@pZJZFDDIbC`c~(oS|!`7_M2{{FE(b?dC0 zq*0k3_N#y}fHu*!)wadB*fBMfU{1}Gpdb^iaA(ZQ`Xcw8En6Pgyt$X#eqHg)+&+Qj z*7`+TwuR+ZsejqhS+-iKF?FB^Y2)4~;5I}%=5uZ8r%|b)0se(tkK@(ez#OC<>o9St z+@DCvkgWN9tiRGB=8+dP*{=2E(ZH#mc3O$a_p1qgN$h=sC4$><{$<+9D7pV#qVOkX z_b6@B8EboWzfdTfbxTh#rNIXv^P2L%QmT**#164N@Jg&cBJYufxqndPyD_f-&)!e1 z%8*2_K2f6YpEzxkyb+oewB z@b4M_Lupp_WA3G&=i%ol?0t>#zrw9o6fX%26$(MiUZ1&nwb$CT_KkvpTU&1<1w;=p zFiQ5C^!Kot#mMl1=MdWpnnxOa`$I;_uUMgsv~#-HS4F#i1cm%9c*V~+DRnKkX-ur~=pjySPn zl{n&BzOfDDsJ8V>r?>gGU!20{y+^jri^cN|B3He!)ujp+sH<*W_=SH|y-HJnONddfv=)+R!NuKq#oO$pzH{Dx<&J=`F<-aYa{A zzznw6$5xLyB}j{{gY&-U_Ra3E$7ITo9p2v9v3jme)hIWOEM@GD-kWYewccdbGAxqIVzB?JT^^ZR6}GE zr%koN-o9f?OJmEnU3^4%T<}@`Na!)G?;MYW!{}^+AWGO&{xDFtrcx);qMzr#AcxEc zKnjQyH^xh(@y1%Mc4v?0^H&v&Jq_lTCV5_62pC(uUo4suw)(J7p4AQnO|4BY6fG$m zS{jP9VMYkq5x0hUuaCQ}7@~TJC6i8WE=e0gcNqqb-f$Q1U;wf7>63MrH*nVqin_qc zpsSd(*jjdXy9bJ9ZS(SGM=@P*Z`l=d_ZKYs-~|C^AyaP;?#6!?xz${Vxq;irIC~Fd z*xNpifDIwTOcYX&N%%aXYP8}?si5oB$Qmlbu;f@rRvde#9e^;zNm@+c->MZMYI)wT zw^GJ8PTty+{d(z7@Q(nc;gqC&^7ycJ4*b<{L)S1rT*s5bAM!98zWZHAue>qj6sWYK zK;(f0TPKoAq!x|JZ;*-%AU;ZkVu^^oyr-@qn-N*$iG-QEo#Q58b0UMZf|?`ENCNJF zHGzR`FzSXVfGZx{qzrU5$Qq=!h);PdfrWR1Kk>7%F@IKK518dPskc+5W`37s_A2^M z>! zS=*w5*zESET9^URZ=-DKbDxSS8YJQCA6q#4!D}O8tD@`9XXbb0NQOeNKbI?By2UHD z$a=rL4*Q+>7GL>Dfw99E@J&P07#Tf zka?Fhxu?d2=AC~k$Z0qs$i7MVyLbNlXXn7c@7ekRXxL_oLR%t=wn(JQ9M#1J=Cz@1 z-l-7EMQqcq)S6jo1M~LYX>8M&Z2PPxhG1-7TKUQ@WuMJK;-bu*r7cUp;XK^%v!R*J?~hjt6ir9P^QPzUs%mv zQQli%PH{V*?dyAw`6d^85##bJmF?XTc@U(Ph}zs~D$ekM<>DL7GcS|Jj1O3|rs3>D zMX;;0S=yqBrMn>!ROfA5Hg~|PaL6o$>0|ySddGmpR6odlwb9t1trOQt8*He`1gy!f zYjk!wGVV?%qs%i8U}CJGFiS4Qq zU&ZSp!kT$l)i8H_fV;hB33J|n`a))Pj@_|x z?iqhKBvDc6cM>C)kBv08=UZaf8&TRH01e|y+RiC+1VD_UpYZIL zg$Bve5{zLMCIJi4;a$Pcr11XECEQhLM-|)$b$+MhHvCOc9ZC7kahT)K(V`!zvBUTT z3dfGUqfcoRHn{8}@ZMO34?43=9wF)wQBzQJqG%hMA0dUN{0^>g9yYhT*(Gj966u!y zD<|sTL0TA0n&=H*!bn_KD%}}uoHfhicF&r@IytdLWk^B{w5~AX)Q5wtz%X#~K$sZG z>8Bs~ILfv{8i|u$Bn_EPCOPNQ-AeZ!?F`~+(64d+5R1S)F>$H2XFp*Red>>YWPEU#@~{^Z8MWb)vcy(7dk7(Tyh*xTYrN z)Z<+nEFS+8wE~CoJ?x|jo_nQ((@7Ft2cRvFcj{}kfLAFt!&Z2NR57t(Xykk+&FtDK z2ESe`-dikwn6ZW=d2uU~97vI6E-u)0q;Wt_BqVFKd-5ZJZ zhY>t*nizLj+e5q^YDEPaW{DPZMWEL$z-!*)XRUqQw!$d0r~eOq%ai7iEF%j}TxqVCw078|QKKhb!YW>SGx(gQT}eXNBMje1&VS zJ!G613LOODo|x4V>Ise>^xR`H)cu$~R-((tuMV@DbSs}trEcu)ojow{bLKs6Zi)F? zNv77cxFN%Da0}(XpR2UUGh)pTOU&j0P7HfQAVe-N6htKd0cTQ$iYM%0_jsM608FW2 zr2CuvK?vWh=WZ8V{$K7NXl5|ibDuTa#87c*R4AAqXai$*t!o~$?aY}!p`Bjg+NLf# zxS`^s2cm^*(vIN+@nhqsqtZOD$3;qj%TeIU)=?0t?tLr?<$64t8z1Sb{CLM?s;Cr- zMM!NhcLSV^t|Qc?=m?NFGcDRD#FdLPna}2O?+}`9>^c0y*uH;F?j@-#tP5G%S^yWd zs2Vhd7C{@d)&2848s{Ez+&9mwTPbauP*RCxnW(GpIwj}13bFQubkW&5GX9ZjH zS7)!uF~7~8{efUBYsua*bNIrJ;Gh=V6+kAuq_8Fw$U3ayjl+u`%$2u_&B~0@Dq|zH z3+-Ii()fj@L}$3tKNCV40g8CI$f>37uS!GoL0pJ788YPRc^L;ERR$83D`HF{>4z80ApD0fV!p;D-Y67)#cIpHXY*pMq$JgY z^6lk*4lv$1%HSiDd`sE0_idQp%YChvy-wm^Fx%yx2bBHt<U9Bt3#P_Z;;7p8ogKK%CuRqjfB+*i`0j@8Q4$2o5V#1 zgrO;0X-c@R9J;N{O1#^ZfVx7t`Fr_%&UMu$ltSCD^)m91|AK(e+MDF&^$!CbEmqdo z)p>u&FoTOa%;*;3V!I>{P2-ArGYE=s2EjB8@;i`gku_|%YcsRY zeD;3?Yd+Ky*%ofE@NRdntOie2&*1|b;AA3qFWq#ZR@Rm5g2Y}T6Q#_;hNo5Ig35V) zIVYahISClWODgWDMy9?$k<|E)_;2C}jX#bFX5f?^j)yprkT5sB`R3bi|Ajy*e}C`2 zM;>8x%(M@uJ^wuS9jqh=GK_h}6?4(67`M>6K+(PQh(G~WbjcR9^$m{H z=XM9BpnMi*SU>oH`YejQA%%(He6-K*@sJSNBA_7I;ER4C4bzR_V6 zRLPYH=P?&Txx+mtOX z*ph9z{}}9W#YgVoR?QA@-|AhwYOUzcwp~dMjv(-v~Akl);uFr z)_dz^x;mLdA@R0ZJ#99Pq`dm$Qvdhdt#ua*dADs!gD-id5rf^h2+ob~lo43K>|yk0#x;-6>Dy6H)$NgbT6| z3x1wjnIcK$`G{ElUQMIyn*^0=tfXvJs8nsn&j7bW%o-fU_V?f4*4s-ej~?O)SKOZq zpejY2q9&D@t-5*qwaC?L_m^;qUo)@h+)7wl*j z`C7D~#@M*GmmE0YNU@q2xtDZzC@)Jvc~>r#TC}R5nURRiUa3rurmR@RUYO8%Bq^zz z`H7+-Bw*0mY8Q$G?1=(X_c3ZRl;L6u2a%H3M1}EtxV3k5-~K1g zWl^eHn&HvgnY3tH0_@TB6@_2l#{KQ5Bl3Dl-?u(gDAb~hp4gg#{H}nlsP76T()gx_ z4l=7P?%@WTZ3g$MS*eI!w6|3m+<6e8j)1n4C#W@;Bb6C_I5@{XshXn4O(i=2!0^y& zmDT@G2&}}$nvxU6#)>jg2US%kd1yKeXRQF~!?K{+U8yHp`NA6tip(h5e@oeH`Nd1= zj-c14*zM)hXH%>-6|XbOBJIXYdPNG6)!iVH1A+k`c85mfa9iu#jY{szeP*wscgBpg zvZ17Bg{->Nq{_{jo`5cqb-ZrVqC7_hLUR|~q8e$SJt&Q;+oK@`Go47#<^M8ga{b*y zJ=1fp-UUgcyg{r9_eb~XU=@R#N5E?QjYt0JFbnEb0Yx2a>I`GOsf9#y+lq>anr|be zQMZioYK>$)I4y^Jq{68jZ?w`u`RGznp+7M_09=aDl$3Vz_w)JhV_-Jq+&}Spio}DS zVE2}po^>#<)H7>)HS=!WQ>T?|xoSH1!{*3_ zwF?^qEk{q~T}5MF+Zr-}Wk#;+rIIixZSeSwB9jD?H`YEeOxMW-0Q7uTo=mP!B*Gsu z+tZEZi#l6{SQ>eqz}cVrapy|OvSYI?V6^M{b}nsJ1zLjour<|VXx`bS^bVJ-%*)l= zLfw6Ybhdm7*p!gO81ymPNMek1gq$d7YEqc>xC1&c7bZvm)ypK9MRQ@qDN;hG_#?tN zvgUj_K_^1E8K3QlsV7%k$_X9tTFb6>Q;4fQmKw~Q{h#lBPyMGqEiEc^x;V%|5_?zz za?qzs@DOvsKSFHpX?NwV#bLidtrc~xbm!1?xRw@hYd#-D+zOhoe#QXg4a5zQR`-Z3 z4fSGXN2|Nv5Z0GU!Ny@jt6@;14K!;KDz8s3(3C!3@^PvL$fyfc1b!BY1%36t*`szq zNJQ3R{{yDX#k)e75{Q%cug@{%huIe07{L z^7w}FiAF8?4^gydJnYu;bx*XVh8tO1gQ?Y~2^biR&VnkfO=;E}`r?| zvq2bgt=Je58x@g_%jQO!kDM-wjIzS11G~Y`_=*k)#K)LXiK0`iH^_=IqpogK2bn4c zeT(NORFOgpO|kkqRNVW0GK)oCkXy{$HxRYLARbla2%24JQUfC9Ckbm={3DYR9(jzSrXG>oJlrq^>P_$l*xG_25ycBHhET$l_r$-FidKrQk1$h6$-l+iEAh<#&!|7`ZP zj7+0x_p)-aB_LMb|LUvEtFLl55GQ*-X&1=gLBPvC8~t8eA2fU%ViJx6@9VbWUkt5F z(ceg=x!1Yf%;V*^Y+!o{NoH6p2$^mD)`o^b?!TGx?|^{$-+EB&>d<^)l+1zr(j3Ow z)vi_YqJtYNT`Sxf)jlWWK>%PRo!$pfc@5$-A`~?8vA@R69zy&_ii%y#AB6K~n*8*# zdL+!%kB~CrJDALPvA|wBXr6syO`X9cS$Xkj`4!%U0WHlAQZcfKEfQ1EW9x@oBKY-E z2iy{0W-aA+>WNU)Ns!rV7z27#^jnbG+V{HxQ`B|$!D3Ys97!5rta-f$4{f@+sY9?x|v+u>rD(EKw!oE*)(-Lo>qZ0D9R>$scPhSs@7BQ~UU=87nv zggh?z6n`nghlO`usp&Ek4R=KizEDBxge#hyeEKba_5x7>C$k`Nv*Z3rNZ#?IAREbWGcq%n+e+NK`9`v*8!kGxFBGbE;<5GW54d+eR4H3S zH$A_yPOTL$|Lm!zzqu?qy$)51xuc<4G7ftV$*Y4J&Wn-~@ME)UfQ*+0D^S z^Rd&-Qae1SnPGiH&TO$1udS}ACUImxrFY~}wQ;Lf)|P0;_=Wc&sQBL0Og>5MjT)oW zBq>%=X8g>yHvQ&jd;DE>{uOGf_6sHh@|ZEYk*s8g^!~trqsOsmZM(EV9$7sPYz%11 z179g5s5OkcpcPRM>CzcEu^uR5@cyRHM8azp**k0tSHDQBhS#lxNLA+q;_Tx) zym?9P41WiZ6m}(Ft;|_y@JUgth{Ad!8A*P^w1tX3?6N3+(RriKY1h>zP&BHjMm#~( zTuEKim6nPT?qxMM`?_`_H671p*%s=SLlh7gYxr~YgA@r%3c#`KG60JQeg!CIJ##0w zN<*q5Hi~E&=1Fb_ql^>yC?yZHV=^u_pnGICz!)PLfBE{MI^yW%$~F5UZ1iV4(PdU`B2b214`=o#=H zuj~=2Rdun8jvwp(p~O-z5ondtwrr!jbA^Wy!`Z6CY=DxsSSA(1wdNqg7zg6|0rpIop=MO={^PZWB*!z){0t&{ESc+QOY=cYiIf_zxi$8!!j; zz^aW&npz;2E_L|;>jzF~DWgV`2!LCHWrw)a{eI?ou0*eHB4Lappf!n$4s2*5)5Rs5 zFEq$vnYcVzoJT?=$ z=;uF}^lr@97}VC)^R-Y#eKU^FDTZOURGW}B5)QI${%+`??$mK)5_IE*c_VUjBv8p^ zc`~b0dLvQv7ce(-K_b%LlgZqb%iWep+y>;u9XxvYJN?@Joo99lb$}si=(H8DJ8>ezeZcI!{`%_$U;p~o z5B6@5Exv4dMyK-1RI#~xuL@hU1qa+9a<;~W%YkuQGRKM4bA9;GIZhfu-hgKWxyE{k zejJ>3DXF!5^6ClsRpWcIRB+Rl@jKYggdmOr2f#6Gs3}Q_32tW-m}3ftP&=J4k2hDt zUXAP2L4(Clo|mb<$s&!>of*3+Ygk;D}(C56{Z#~x0*xz-&=vZ8s9^|99G#dB@- zwmC~C9>#g6XG|cupyxHTJ%;Ml=A6UK{q|%>r;d>~DeFu5Z*x1r)(0ooOYUBbn*D}w z&8?jxokrMt+1rW4XWDjb4~wZ8k#PPs^OKqd z070iJB0HmeZo`B3`Ait`5P40d**gxm`DnPKn}{+%>R?e6W#+J3%GZB}S<2n(WuEBg z-YjnH_g}Y(c)05?=S(z;JVc{NxeLOy#PhL)Xk_d3IiL$dbM6Po7-}E*Q4NEG^U*2) z2lJy6cd7vT_uXh5{))X#@fq&JIixH!^j8p`Dyk9Z+$`jG0+f3$uK8W@QSL8PxtuBT zDe{Cfc4ao{;5&4a`$l*VlV_8($@mS*U#!B;$-+aE@YfZUCq8}QPdNYCl)QOLaAc0L znet1gNgM*NTj+jup^Y?iAk(y?mvA(_8<<`Fn2BkPN@zT(y6jR(L#s@t6v?z|5%>3w z`q9N9iB-|Mc;qvky3|NeVp9f(ljUU}k5`j=TN=eJQkS<;#@v@>rp=jiVr;CNd*=D{ zqq^ba5fRiqoA-t+l2wNbYNZUbIJ7-6ZLJf@6T6oQ?OmIex?n8XFmG+Ut@q&iM#xDz zR_tN!{Wy?Yv#dSYDNE>j0JX%5Q;@9`C6$cYjLA6hD<-21syhf_6MIP8={I)rA$4LM zYgYGNd(pam|C=E={PnUs0Edyw;%4w+mDfUq%L8+#9rWw&(K0e zOBC#yaTL?V=pGS@3Ed+Bj{=Kp;TlYXG#A$JOM;55cV+!3nVG|TJgw$sv8XEHb3+P; zwdyxIk*%1iB<8o|#Aiq!dEPkxQ&fjwI9B0FoR)1uEmAOHBYY=ndHkJxtu%hkE~y}$Q5)fSi6C7 z_Ou?mwp6Fliu8DU?cmh0gPWRU)UpP+8k`wIFJg{^F+Jr&6-ZeP zfjR;AAkg%9c}O9VvK)F%4kuGW0V}7p3=hY+Z!zDhh062Z zKG6D0U>RKS{}}rY0J+Ml?Ywu& zo!)z|J2N}8vweCm+c%qJ(|hlvhZIN%B!n(K^eRXPL7FI{f=W@Ey?_NjQ4j&kr+#KG z|2g;0-9iHX3BxYCOJLsnzUMvXInQ~Xw)xEauENjqS2M3!^MA}!#^$oV{T*jSL$4)>Z(5+I+tE;SN{D-eNDW?eL9wf`-mG z;50j#%hyop#`oSEl6$K==S$qmIa>-&$yg#dZ`hJH56zuOV>qb?h;s;~zytyuk|Yk6 zsYt$9q%^B;-W`DH9p{FNW?dK8bs2k%i61RIvC9ix=iG0vRz&UX+Mq78uFV$HhU6aq zw`&Lb-k%p(ux$B~2(UH+bLPz%_I%vt?62EdbQp8E%wLt=wGBR5IOM}L0vO)7rIOOIW(B`+kg!H5)0a>vJwGTE9t zf7D<^O5f;^Q{^0UB>xIrY~V!GQ7P3dkh@X3HT=yN$( zdKZv~xY1%Q@KI3`7PWAOn(fP`%E>xdmdUw#tTmI+zK1~)Z2nA0jG9<)T)N3_;b#8u zfnlnIB^8SC;sWD8pL!4`Af!Hwu0+;P`})sb1&X>$b{3pb6f6F?Oa!zu zyay^d(EqO_G|a(HN3~>4TWkGr<6*1wi6*?kRRpMO+YVI$J`|2h56j0^0q_y8bNr1V z9pm#Um=UlQCks@J;u8x$?MfiWaPV?3c?NVKaR|J?i|jm8ufGMn-X{mi=0TO-P-=&2 z)0dFSXy$MIj=gj6V9eRfSok!*Lm7zovU7f2vB0P-)E1OP!Q>+-r`|0+mwYC{e7Cnh zO{p)OmxcuOMdr92x-l@filT;6!I1puD^*&j7iGS_wwZ=%&_6ENoFs4M1OrfrfzNoRVFi>eN@Bx&a@2|0dnl5b@4jPC6IW{W{$9dFp0tj9|+@2 zAE|@sQWliNHaw0BvDMK8bL@x*FJTR<; zB1r`b$UkKMUPJ5a!rz|-aN0lvIZ8ciOG2n{E`FduD--}(`9Apy0Dko*Ys3nbD5s%{ zmM7cT!PKL?Upby_44WZby(W7q$)kAel8RZycUb#L#F(u{StS{^)S5DG)BH2Qh^AR| zVO9)>14A<3t8BJ5mZGXh5L*yb7f$m&tyV-r8#~2Di7VTyWq#?4fV;BaKE8}tN=#SZQwy|X$5|b>xaDZG_)^_EA!YTKr+g`2*9y|{D;@P+T zqOE1#+(BE1wSRnG<9WfslgG)`qobQX!>d@}OdU-=kvkx8w+vV$X0fWJRlh4NaeCA- zwb#`xP=#kXjFvvH@Kv*wrYVIJ2IGM`@qJxnRux1oB&K{HF=^XYE%eJkfPZ|^T*aBs zbb`=)^h@EOtx(KZW0qW{^vR6UMUe0iTXZb1msyOoy1OK5vsSA1Zbz*K4-jcTKb&%Q zoHN33d*Zy@vS}1)SX}-AP7l8{_c-xl3^msqYL#hE5L7?;S{dgt;o-*xq3PQI{`l#C zEPvL>0BU?`*+IfGie4P3Rz=+ke_M|eh`IKzsPBBa94cFVui7s8d(1aj*2i_l!E9Bb z*Ckphl>`huRCK2?Hw1hJS<7Ia99DWGZ6>)(YL2wH6;ElEaqrS7ZIxQPVyeb3KWDfK zSkf?DC2;5eP<*CFjF6OEuPPotvMr?XD+8-`?KcP%i9I20U~~H|AwzF3IG`qyS1=YE zggXIi3QW}GUG?Zq$D&Y>1rJ<)e|q1JiAdD%4 zSPu5?0QMsk1Q7K?knub(=x2|f4xSp{KR_4=)xFPvnQ#^>#w(MxPvFj%2=YmoBkr0U zBxYH0SU5xWt_|Ti!cv?6`2RCPJ1VfB{2y`;N+Ocg3T0B;s;_DTipC4pm0wsXFV3D@ z)xf9;DZRJg__{%>d{h=&Fe=jMrS*~E2jKL54)#(W0x5nW+LhfmILKTtk93425osXO zqKveg%EJMvQyv^ClW)dNm5~;yLlGLSE`wOw9hOE^J^7@TTv^{=B{Kx7)&(w&V=VCG z{Dm%ngRFMBF|lTBZT}^EBjAB9_N_njDrSR$`giGO5G75)-?#ru?D9D!DMc{smlgDF zi$`rrx71LX8P>Pq*sMotD9=<%{L!dSn$k2q^_-`)6KTx-0T*fodG0dMk?Z;;nVm=^{Ds6VB(N}a~<2jd7v2%bFKg&Fe>fE!~V{);JxipIHx5ta=e zgUZ}4A&}P|VgtnC7hhydfJ@fbeazN_@+4}3%yWfu&DAcUMIid*?)8OlHUNI@e-*~T1#LsDu zK{Rn2lC!Da#w&m8?_cd0UmgXwnAYWUT`!O$Oqrq@%&JzcLlhI)PIjt2s<70cyRu(c z6gFN)TnH2v35brvq!_Em4DJ3=&O;o*LvUqFI_9qK0m~|B_o_M6+g0WQ<_lzh_r}Fe znOEsswO4V@7BzB=X7!gcJ1zCX_O%x#kDp+<(`I`)ONGG1P6 z#WAJZFqN(i{&kZ$ub`J-XntW&ZPHMGThmzmuNAjZrp9|dYGLEv?<27NPq=HvN}W>S zGU&>FqLBJ>O5i@rlnNp9+d)nH!U1$_sLqL~`fFOJXh39xD+lJCclP&-V$hY2nNj>3 zM($h#w9DrZcK{-8lTtsvnEh2|{=TNRv|6=D7VapjRNzlQX+vruN^SIR96ztvx_;}X z7}zh1!%J5z3_hy0E+vZN#w~=66!ZpX=5u9r2mdg(0`Fs$K}vy z63T5!++^%VL^yI$U^_0Gd`YRG$W>VjC8|GU|^-W~4xlFI<@X z?$3YXaDiTfitFo%CFH=(%a>D&jJBfLY%Wg-qff_eK>(v&-V0*HEXNRM?!Ez>IGzuU zlAH_diy|Ueu=8{aDT0E0*dhudD{i!9ZP|f)=lr>bKu-*rwr2J8?tS8U%!vuR2%SK?y4dra`A zU=F*E9MGEpsuCyBv~9+Ikgb{C&}M7;W=bEz<7b|lO|sHgxO@;AIYJ_f0Z;rBcE4Gy zW+LOnwTEB{e=NuJ>?RiGkNW`W?qG>rFuG-G4LWKPU)V#3adb;Yyr_#kmXm9=Jz*jf zJ7N;$mvU08U8(om>72+GFsK}s>+^D_M`LLV$np|@+^+LFne0*&~2u!6+lF*G{pl3x-<2sttx(=9aQd zo5d*w3MT>z3NSATE?CeKU$xk04zAkN6b^YP?ii?BOiXxKu#GX;`JIR+a@UF%WULTQw6sOspv?&4*?{zd zWX-))XPsG4JxB(br!GczMmKq%F&@k3FD(`?NSS&&u+P=jp}R0G(TTi%u|h&1l@_|3 zLc7N+hm->2Qym~;0wU%(h(v4|HF~n*WJRQ3Vr~nFfotZE7({Q?YP-obea!#XCKd=iQ8|@MAh+z6 zvkR1FCx94l{=3OoSkzDq*c7Na(E^$is2UnUO?(+CRlMs{BBN27 zS+TFwa_*=|ub0j|aBnGi;Ucl#Bw2FgyJQb2iGe)gMMqHlHbP@>}mnTfvMvCkuDJlCgJ%rFmJX zgSju*yujl3ks>3f;@vFJ#F0WK9 zl0!Gl(x~Jhkp(94fC-Ce#o(1^GP>6^a#cJIZI4vmq7M1KqxH`kvRmx^qYE4saGP?Q zGx?y!Jy3`Ft-c|0tlf}ETYIh9G#haqoS1Y8o<05k-F9}`_ZG2;{d ziOg#Pc0(Ul9zRH8^~&YMEEa^fD1H-95ydBKrvc@`p`h`u9tk2Ruu?dX(fXw@0C#sz z` z{T91zs6+2XP2#aT(@LXSE&zctp-gRP{90gGanTYRnB^H~?VD+-Y#D*cQl)wRS)-(3 z_S6d&qqSQ9vgnH6Jy^ssywn$e`j1m{JT9_<3_f;A*giWRNL~_~H_$^-g(yJt{oK=N zMt4r97<0X5;qiG)>!!8TOXMPE-#ThZ<8Ct*>1Wo|&n9u^O?X{~+`?P>RVKj*%%A=O zd3r}#x)RzLVMPHAckc**D{d?3^0I2peFa8R70B*fvxa$o*|MvaE=@DHQEw?7b*skO zcjLr+o$5HGmV~>y!m^~HP|I)@38;r{b9C;uwwZ~SB+j^|CmlI2sQde$dK7g*-IB;!f z=A{3p>2uE6*GU`obZqnP?VV&^rM*rp2uEqMh?;AHO8=_uyDQQN%mtP-Fc+v~K8$(C z$J{-hIrE_H>-pr~PvPY*2+yBVB1WDmPBD2n6^2tNLcK|$kN z&DUAvRi^7uf7{Ul+U^z(E*u)#n)D4;jTu8}s8J{Lmdz(IlfeTn(q zoH-ZIol6X}XXhBN+}t_efwVPqU7%!s!g#=Cr_0o8?CGJF^P6OPjxPiABP{4~?gewx zM_Ab`o`^e{6b-_7_6mSFPLrGR*bNJ6vT+AdoT-EqGnaD0_wc&L`dp75dhFIAIJWm0 zX40$|2B!`7$$&03+$mIR=x8-QAB8B(z}o#7UXPQDnKKLFuU;aziC0~_$#YvxoDx%I zk+pkaO=Oi7$J&g{J9$Bg+SfmjT&+qwfPf#j3e*~;bh~GAyaH*bqXmd#Ea7ukk zx9qS02d`6}(gFuh#XMz!ZEFLMMUj6w9kvv*mUe3aO$Si?nD>F_Tc38&WaEdaW|Y~} zG*L1_%e=Wl@bT1286yvZ7I;TeLdcn~Bu_Deqg18wjq(0|vV3r`VIqCZGZzB2lhcF( z&jHYc!onCV2Z6Z5CV^740VT-WyNp`VxPy9s%a-CF`^qk6m6+TG47wkF##xypX!!@*m?d=0wooW~@eu%WF8m1Mi^ za6s604p-W7rNpVj#hNOjdxq>76t_Z{DSI=Vq7(+?K?aWdVuVOt+u!D3<{cI{(gj8Z~H= zg4YO=LTSa!o6af9EBpP>*>P{|_UmG;ny@a`w(hHDod8vl1p-4`3*~PF@tWfBzpxO&)+F=MA#S-(VJCBJdt_L18HU)y?$d_5bJ($5Zd1vtX<*5f1 zS|3}PYgUsn=1~f{2N$Cw;L8I8OUdN}3=CInt1n@G{}8x)NFE~kMi@n$PnF#tWD`ZO zQu6>K^Yto|&2KMJ-8FKEx$PWw(&AFVa?{hyUl!m-8YKcZe{7+eowOtn;${H3!(N23 z@UFjSf{cMh*yI&A0AT5=PhD_$olPS66Iu7vIE3XXy9Hna@Z+6Rs7!+1E;JiH-9;XZ z_{HeP;gwN4d-J#6J5!(#kKA!3`00McXtp6DASPg0frQKhLooj&t_W$-t>mJCll3)q zi7D!bn_lK^G0@a`eMA9Q+kMlO*v0ZhC8Gi7{SIiX6^J$%h;BZ(ji%MRjBb*%&9J5r(HY|bUsqk?sR+>D?kL% z2M4zw09BAZ%xv<54r5Rili3{KE0v0WFW$yHl{$E6|F$?Xbz9eN-@T*z@!{he+#m&< zc=2p-1Zjftsr|cG`w@(foPCK<+L2~w5VJj)HsN7<1p*9r!=a)Lr#f1Mkxo<`1(~~X z7iXY_WjdQLVl~I^u4MC=;YT(vm?+=$6QvzJkuKrC&l3j!%JKkXzytKiZpA9%)Fbo@ zH1u##^Bec4&>BTaz#RCy{kq|ER*Q5-$;t!OJM_iT2=MNsvn!_Yy3}9WF;{GskFC$S zHWDfG&&wmxCA00V_Ss7)uOtSJx4oL~RJ-b2eo>~KwC@yuQ2b7gxhYRQFTUZ!$BLMU zCcpG+rV;8(X+fdIP#cf!s-3xd*amHRb9wIi<%Jj9AbOd*ESVIP$SA$byJ2uBQ4-qj z3*bEG_2|!~YM1##N%KSK`FC$q!R1s@^EUVDwREfyyGW0$4W`{~H z6G&}x+81)g{U()UJZ@=|cgmw(DgTAr#SYoFbD4wx{YaN%l2~_CUeNZWI+X90O3c4g$1XiT zO{?POi{lzzK+L6x`!9Wrv?0Ay^gRhxez)-f^}fnAVAWcO zw(lgOsb3nMb@0^cgTs!M(l-ShTZ3D?4yX$F zsqO7x@p@=-0Z%>b?73~$L-;u^7TZpOWd>N3-CB68;af;)o#3>JL$J|6&;(&oK{5oa zV%iTmHav>n?i8vHZU?qm8_4TM@ucHOyQ{)B9@~I!W|vaNhaZ;5!=puAx3)0MoN?Qh z9!jSIulXIbzzmKaS+8$AO5NI6-G&}iFYZ1cq{E;YsgMHXsqMA{wbdSn0V@#x7m280 zcpmCL9S9&iw2!*DMhM*C_hXT@6 zBLF5Fd*$(bO?Hd3PY0CH?q{@As`28rg3TvSkc(%|6q36@aH49cg~SGvG?crdZYUhy z1cav5yHZ+4^zp|g9Agvs6^brht1%0R4)cHZ@Zv>d4u@mrqQ$agaL%wLYaW=*>>3E~ zOM|zMG_!-;vTj}CjrQWj%vFLpnWO5$t`M{Wg@Lu{fU}V6(t#GEGTat7)N)%3?+LVl zQJcwJbzjq?ZfOas@|u=Nh!IBg9i7HD1GL#J@i}aTYpJq8$-_;-6&iS|-Wfr**^Z7j zOX0TP2a~B2hks)4PNX<&Q2|FAq@qp($n#|epKfEQz~2I%&&uZBP1dRafPFwuAVi+s z-!FiHN2vL+dF0N<5ut~fd$xD<$7i4Y-JrrCvUqH?LMbAO7PUYRs=o-twnWtBIa;4O zBey(B-Wg>cAM%kqm=)wUW>rq;`w2+ajx6u7&^UiDHw-nTvg zmyxXX$d!a0Doa4F-KBb|{4M5jgF@Zb2JXSBf<+q*j_KS*v))pzFzaD<^EN_d*W}4V zIcvAdFE`lKa-qy-hp~Gbj6LiWOOK+uqP$_&~Y%X0r<9^E2SWw$IxTUyc~u!IyR zYeCs%oeGOyln`o7jqf3~XCnwS12*mhIXn!R)uHb`ppW=2c$)9PohKlS4C{i(tt9sV$F~LG3&vH?;Qa{ zc~SpOcic8GHuv^Rw|YVFR@(dJ-yFJJ-nM?JSL0i;vFWz^pgIlmIN;*R@qQ$-E|}&n zKnojm1~GP{=QA&jW`y0}1GN+PJkEq>)^UVA*1?|Tt~uyHHzPIfX<(pCyrv11LY)4L z?iECr$xwr}*95}KKH+Ad31JZ8BRZ*3ha2a0ft2<22mbH}X*e+2XAGNaqgN89wm7*c zxu8Olaz#)-wkZ!&n#q*|n!BnHD3w};4D!XRaFtl{yl3 z8Zv}5^S$HE$@)&#T@ffi{n)F;(T@O7FQ_klNm`@TlBz_bD+`8-N0R*r#TsL#-kv9z zU;c^xMQx>2qq}FKRg12+sMgztsjea*_d**2{A4#ZQ$leiI;PEX0GAr*rhDV3bP_W=FL1BU-6=#C- z*Tts^RTGIAOvbZZJRS#VUb49CpfWHS?4jhF!f;I>3xATNJedRXcLDz~iB-#?=1TIa zJQ42zNN6I9#R-K!xvRhbWpXF8+=5lHp2{@7OPhSB@V!DvNJ>K{|ByOO`YVSwE zDeOt{XA5tZNo(dNk#hW${XbDUH?Q8Q$~A0l1OEonaWJ%Xlaa6q%g z*3%Z43wD43z#=?BP{g=&p~|f)%JjQQKl4?1?Iu5AT0L0e7|0(P%PTM_`G3^x#v_x$ z7`byHRv>!=tO0E>n$Rgv>ry!oe%K>rjpWMA-{#J}WX_x%bKgi|Y2i8MYn~D~1E5Xl zLu?qq1msgguIu11Pq6v$b8Pa%Z%*z*%QELD!T?uDbNNPy-17M2{{OA+DwA2yJ{ur( z`FQCj=tMotx>s#NMD!|fNJbOP4j8G^(AM^dXN<$gC7>`S=`8`mG!r~8FW85l4a2m; zF@fjVXDiIJKtr~{*}ERadA7B%;yf$2?Geg=C?%`wl6gRwaPsOQ7^UW-qZT> zV9Ea|w0CUARWokoZY;z}_>+KdmGxi2P{-pX2qT%y;53b6ElJ3!fL6w}Qp7Nz<@fnG zzn@;w=~4rV&4KZD1GPOqXtK%3v}=)CkCoHE9(!zWr#|SB^}<42^u`<4Ur%l+NbTv> zLm*}+9ax#NN#t1|c_>6`F|7~^#DpSntcXxZ>u9S|;-Hldps6vlWaifdGU3po4x)ES7HK^7UuX8NF*c7RHd)oGCmw3R(6 z<`av1ux@qP`iCh6v$Q}$?Onwi?s@2*5s_Lc9K8Lm+pf$pdzn{7QcwmJ2ozFfu7y?! zgF`B(LL{c8Qm0p5be{?A<+ij}OCu3b*6ySBH%9e#2l--=Y!Ri8o!u5cd_fN{jg~q0 zoJnakSx35Eo=1^A6om@{aqHz~#ey3aE8lJirJTqfa02mU;yJ^G$B&cvji|XbCu1U; zjo`M0$HcK$_&g6cbqceuC!i-RL)YJX`}*dX`^Q1lO&T5_urRyi@$Q%;EDyIwl`UPy z;!r^9PzHxUTD#j^9Sw^i&j`(|GGXe(aHBEcqh>Z9!`CNp>VHvw7;yik@b_MlZ=Kg? zmbq2-IjcI|tj%ps4knPY`TFj)^BtgDXc<}@(|50#XNRmoY#v<5ya_(lTcGEn%&aex zb<9&ByN#-}JZ2-Ga3$cz)UoH$?0c}uEPH;rQ;aaywDO-l!4rY(H|WC(uY=?@rqfU9 z`j=*xWEa;e)a8wxOyjc@S8zfdsgEEMSYEa2rWGqn%&~>c7jcw`e+8@5Gdy-Ry%8$y zNOsB+x&%!6z!^ru(u)FQf1-<`2biBo)Zql$R>LUp-WlgMv(5>$ZW7;M@x4!#?!D7% z`EEGL*k8cmR`grKq?7|k3II64;!F>16ASZY6oGj;-?HPJBJhhP`Lnm?eH->90KiM^ z+uE``ler?R&}(y1n9}j}N`bdtkZaT(UP>mhw$Kv6J>Q03-}|1oAalD!2ED`%*~|;5 zgTJ>@A??WjW2;_sBPy>)>dCI)EB=t^;DX2}3#X7kX(Hs%@T z1i74X*zLQ17oI5~)~ zFj-i5J4anx{q@|&dlV&wAqHt$6Yq*Dq4KgWy6+2JGP{LtJ$&`Roeoz&)Br=*)L3%E z4UnQYWgJ)T*ae;jpa!2)0BJ%-)_d9noVxkh;K)vvL8pO&2s%&u&_X>2!nw$638Ejnt zY5Uv^HyWF=G^+!_tO1oymumwg%H0L+jz?>?zaqyGu>nsXj5&BkCKC`sw4ymtcS#%9 zU`o0l~2YIYDq*VATGAC?)gT!VL zXN!+4mX3e1N}F2dj#`bjk-0Emvd@M)Sp_>;ETx9tB2Ru$*jZp+$X$No@+=rp2tfty zXxiy87p-n**DsScHvaeU?kDjwN3==ZFbO}EMY z(N4^_#MbsG$|FX+bd;4x6gUe%Pp8*sGOr|)-4IJ&@|3LhBI8J<1g8GY!<{NsP$7$y z7N*Bl<-^^mAQ|1E9@#ypk@-}H@gob#h1}(RLJNueR+v>`&6;<+WIbR-p5gSSRd9QM zc>+b?OCeq!aTJQ7O(^I+Ew`R_CE@19TpDj_JOyUF-{A#VB5q+=X_gO!_c@#%4pJxp zJry!DF%BWa&o*(JB&q^jh!Tl%585!nMzywuJp<5B;3N{E<`I+Um~smxYWzn`e#r#E z7j^47mX z9uz2*VugEJX#*>S=;Eh%zM<0A5|w?YwC)k+C8X_1*I(}gOuY4>y^$7YufeAZhNuQU|YcF-Mah%*$Q=3eK2^b@2t$|x1^IY7TPG~#8yq8>DRcJLmEdr&; z9zkjFI{5{&p$t14q^kD;ZLMAI3b(O+Atc7)bM%NixHRNfg>zbEFt5@nbGVX?pZ=z! zr~O1>7xNDgS%Vr8hcRf$&NgkNRo$&=ZG(Y^x6LM6EKoRP?6v7lFh3{z`Fv$UK@o1r zoho^@L$DsGP28bwAu*g%dKHSf+XrF;aPRb1M@EDKea1Dz@ zLJtc+718Nt$$Y@U{xq2{f@D7IbzeixYdr99U1eN`umuxlF`Mr>GGd5=9pJn1h-D+oQyOSNO)VM5pPc7rf(dV8c@i(t3Jtvd3 zYope9%wW*FRY4u}9CRLqUM`mrz=p#r#`^yI4?M6bX#_F6Eba6^C~ zrno$!lYsW^;>W&VBMj!+sxI+QO0_pZ1TgR@Mi|(u@nKSb+O}WV!S-#L~^DSQaaml$5 zz+Z3FsuB!1Eg6&FTsZj(Xtj%^u>dgKHYyEf69q!RY}u{;bamDNm}Ij$vqOA;O)v{G zcI4eT0XOMw=Im&pyN$ym;cn!pt<9Q?C%LnA8N1MI6vxO9UjR?PKQEW|0$v%)jb{>U9=DUrn1R{Geh=6%2n0e+E3Qf0!v9K z6}xDO5iGtaiA7F(r7oBJU7T8)_vDj5P$*)~ohRnwjNGitHd?>da?4H-u@vpQvsGQx z#M;n|HPoU6UAPySl$D%dHm9)Vzp1b9N%CBo`6gWHz}J4dUe7Cg^Ifu50D-$S)-Lnl zcm${tp;>i-`(uL!9sa;8$q@D5Q6#SynTG}XGoLuzA_b>;_paO5bsl`8l{T8CoiATR zesg(v@mwD?07TAOzjte{o_#n&KK#?{s~0ZZSh$KABt8(R4N4QLXgs2*xTA~4?BFD3 zs?BB*UDWBDl*;AGA+*k@vQ4|K05O5>`LslaO#}H7lD|c<0>@MlmwBSzfn&kN8>Ap& zUSsTlzwtQ?|F3e1%qc%&FscOqJ^Yh_9)-mqPKXTVFHxSxZ|u~Z#=|>tpc`Ki@?szJ zeBBAc4nm1WA~M_Qye?tY8whcI4MIs}R?I-I=}<#S)GIdIt^kNtKx@PzgGroMcbE)% zLb)F%x#3p*>92%7mIGd4uY}iCj%wbdHy3Nq7MM3muO}C#$U^2qfE~V0xoM+CLi8$G zXVqs)ZV6IS@R~Dd0my}6Y0+I8M>%UUnhTW+XcPByT@{}(xwVDJRFZas3OuXDQn3g^ zQ43tm--0%)9PoEkyK4i+VGRI5Y!m{Uy4(yTQw*2jX|T=KNrF%_5D7wj@`?QrcrI*$ z3c^=h!bBhkf={(1%;`-kqwP`klCr+&hyO=uOLl=^|H%u?u`L$wq?`aG?p`|?W-HFvhD)#<1s*$Ve$+*cb;s=D6%m` zFjtB*`LE$LH1%GE`E`kTtt8mN{0qSX=Bog)!$<0dma#sw6xe0XIZL8_j@*{TK8e*T zam-vX#z*SpzFn(87S%2dAGnBSi<@2@fF$ZaR3P6*S`Hds^UQrtLc0?(Ze$~4vvlL< zMTI21eT)QLpgxtCf=X*fx(5dBo3%Rsk4F@H5d0?n`xKB59WHo3ZNmd-J-ejuHZI$UoZA*qMs#fnnQQxL7^fy)@pY$v+ zEP#Q&Fb?#=cs+=|&xV0tFJu`wYD&GEdp`H0Ect%=FU&UbMkk2v3*}C^NTvUqAvjVn zKp0f_mZ*2=D}Q}w8ibIbSo7yLQ(1fa_Gg9*m(8ok@Ggqae|qnwQuQ8s$1$FuqdrV%-u3a*`zX8f5C?p z1YcXQNJU6M%nE$;>a&%k20}2Zx^Q}!hGy;;g|xZ=tV~pJoHzi}AVF5G9&stSj`(aE zN%OGn;l^SwI>@fE<`nZ4QCAY|hw#b5;W@QLCAU+~#yhS$jOez&h%V?%8^uqe#y7lf z1{;D!zOt$06B`Xuf0{Tlrif2cka)t^j4AB$9K>r<2kE0s3?Ok=mqgXL66YO1Gg7&N zUYWoILI0!Db+?`pm6 z(y~mHqVabNl^S3c^he2W8TTDEgI@%L3F@lWBkUJBU}zDP7&z}gP$mWEb3tUMQYofYu74^q^@-jJB*Ie+jQ1~*=Q~W`7QaW z&P=4MRo0{KOvDwiJ~qHdr%vwUlpZfHKO4Q)r=`AZiZpSYn|qM0Fq*jmaQ1PpHuo#P zl6;8iLW~DuB~FxsK?ZVvaheL`B_USEByN}}rv$B@kv>z@R2^Y9VW57o5LmD%0)tm{ z%e*nuR1CF5jSVs7z7Oh38$Ccfk|a-fHYFW4}6?@q^IW!s@09vC^Vb{pJbGB6b+D@fb75Es2!se_?T0?-V33Tl)O>x%zaQDKe zm#PdZ5+hFtgyg^->k{@iYe0GJ0k=P~Eh<)mm`aHG`FWKJ1-fY<9Duvo0#+G7@eaA^ z7%D5tNQ={2%v-&nBzLO^(g>5^)SK=w#20%|AKW=g{R#MN+H^5hP2IuP1Tu-p6*UL^ z83VKtWa6k!1PW^cp+I;AZL&&;R!O_t60S&grH>LxWx}{g4#HYOu}~yv`<2-SWsSnE zBns;4GNG_Xrs1${9=Qdr(WVX)hH29&*mfKWLhR{m1woNxATIDZrvg*IP!kuK9396! z0S^)W0uR6`9t15d=861;ec}+yC$k*$M83llmAjF*c?{8RFg@?Ip&=09|0pNk;sN|0 zbZVp@ffnf*b%0!$xp^Y%_AJ}n13xC}Uc1289*XOPMxEAgSNL=i+Td5H^)iJ^{1R2hmIXwVlaYLBT==eDT-FAhBofmR!;9;?E!DJ z;P!Kihho7#YeXCG?r;Z3s}@j`(r5eUdD~acwkf@G>_;-^lD>e#{% z6P_^e8u66Qf#-Gx=9cT=$>7sr*O@(mm|eoD!s#0L`m`%^+Hso1ZShW+)(sL(9C|ZN z7E$XPH(rQ(L+YBL(jqb$rNIoagMQZ6$BfqCxkSLJ3Z|AXV8_#0WfF|^Aap#!!rY*i z4@M;9z(Dla3LtmT3(hitc+(4{OQnpr?7QZRb43Q(*o~K-;b9(%xyl)RT$?Ff`6%`1 zM}@bGJ2Z*)eiT`DEeJ3dT>sXu_T{NZ_#0pXm0}~J6vz1zAVk!qBBQFpp18!I6}PN2 zr_(~)@ZJSE9T54|y))OB%5HsEry*eI?pbB%G(jxXz{$XQT=bfD0#9)|n+m0OH^52* zLSAlmaSD_f*0*V|hQJ9mp`^}UukZk{Q-Q$|mtO?0iLB)_9>GNF!wL)nn)K_UX?7Ke zXs!8(?BaW_R>)g)BOCHyV31nTr~X>NRn!Kxg}5)p#~aHlXfg18#iHT zzMo~x`J-JdMrdts^^E{+2Q(GXc1=nmMgQV3XmCg(bBLnbneNggR9)#(MxxV6k^nmi z@{*A|t1`1VynIz>CPOLL-MY&!cS@WazA*1-#F#R5m~+V-%u312Adj-SO#YFR^A84e zQ1}MY8N1=Cf)*Rh4(Agp<~d`}87(4ENA<7Jcpc?}C1fpwjbUj1n9DtT9$U{()>B-M z0u{9~(0xV#5yerbN2%$s74CXi>}d^Wcse4SjKYQIh1OAOXF_P5lQ@}r!?&ZP`jsFq z){Xs0J8h9!+FL!dq~HjJ<|XI|btxDY|ApGrxGq<)#H1BTE4h8p+-uIMJuc>jVX-~2 zxDHmZk~xc7o*IyA#U4MJgMs3@TA&60b`aYU2SVzflQqmO@LB+xc|TC|O$PyG+JZ_D8u@Gt)*y5KYz9^&e?v z>dr3gT~t7F-A~OQ8#{mI%rt{gNrVNzx%!DKRe3hu#OV1r>{=MR0sb6lrNax;bKJ!| z!xMKhx>E9x2}FK&S$Pl~7PT2U-X4Ts^`HLqr_BE#R^&zJENb)c@U!GiCe93?%rEt* zW6m-#meae!BGD@)wPX-puhNdje4nb(-J4n1%P&5GN<40bQuMu!yC_Jf||sRjS-Y^N#D?I zY~Q>#Xl+@y70xNdF>x->v+1=l=CGqIJ(=^s#Yvf1o{OeV85|7uxKDW80m zERwo3ojQ+(e9*Xp+RpqUwrcrox7wD+jqq{%L$Ya#JOlJ zJD#1QM25!^6$6(xsoZ-f59DOSDcM9U;bLN|ZvH?**u*B{RHZ8l=!t;+$fb99jo6Z1JWp-M)C)=g`&xu7F{sMAuW`m`&>c-wVg}4UtIBm}uT=On)KbYjkK^J8Td1*FFIoQeS z1He*Xl8qNT9W;xOBg36SAP`I)sDYoExND~EJKVIBgu*5z0ZuRfY=CLTH+Zou1nOuj z7a6Hpq>Fj=QH)W?`}^x;v55K7nyS>+5f&K@l3>h4lTT#wxYQ^~i8Z2=UqKKUwkZsn zu-g<&LBQM*JrCS8Y*Rll7o?~(K$g`VXMgz&0q~Ak zQu4rvU1jNWySUALwK{cZ{|4CH3eVCl+f}meENJ_%oBP#_mtJ{frWrCgT36mSd&fm) znOAKbKeAxG&YUqA4LQCSXPYDZfnoa;<3M&r$5dI@KhJuZA3^JdMS9Rf#0r*S6kpQhi3#ed1 z=?PkeFw2NA9qL&8A4>bDc-fY0HLQWnjKr<5`f^f~>2-Qgf-Ii$)x-mIKtW3NzxfNcLVntX3&No|E_ds$H-h zA`ogyevPGBPWr7N#Sh0xvB!u`%dnQ1X<-rGb8GfFt#5+LF1XwRBvBFU{I*fvWlMm-+7tY+cG5yPsxnsNn z;_hZzpX~GP{z_QpQ+jt?v!J!ZnFdk%P%HC|UTZhF`55gQDaCvBeaeFwM2>pou&y9- z)OcD7Z57(08DHqu1t0XC=JtNKK?QNNQ(qsGtGw6LpQjQ0ow=>0m)FlU$e4dd#AN z(CljLXA_OSK0zk{TJ2UC|9}YY9F=&0p&9}DJqT@7Q%h3h4OMW=p>ofjod>~$KQ|&y zbcIxelu!W^TJ{NTl4q1=*=xqxS00Q*kQGI?UqEDiBz5v-H%v{@>KIU)Byw`IHaK^d z%itbc@K>I~kp*pzkUFUFuiCM@jSjR1Bn4G09#%j!2tqXA<+X7h#0!kEB&dgv!J|M5 zN7KO=yQ2^h*zAKXbRh=t5LSp!DZrWmH~i_o!|LQ=T$s>n;b|N^u)0&AKKU_O2EpRE zpf=K&JxCT5OaS)iqIY-L3MpNeHkDJ>gy!yLLqdzJIwxkJmXs|CbGxzQsrJC^A#103 zXtt>)Fm)~L6ItZNnXP)}+0U>&Xgt+s>Qu$m?c|m=V_X?mwh>?T0VYKCesSeW@`lBg z0a&kmK|~V?soT|&=>H7unwK?z?v%E(Z!w1mrtSP?}yUAm=dW-cYH`s;G^IO1D5shrmveexp+t_RD)@{ucfs z`;-`@M;eNUr5);cCort_jWcT$^~)+*-3XC)t3*^|-l$T3=1!UkxjblN6NHUSB(gs` zfextm8=t6P{vlm}0KnJT-s6YMY7L3kky#8h8 zF!^CW^K^~594|4Dj0Thwpg1dL6qb%w@2J$*>Jzu3&Y+Yis~W2`p3TPPs+Itx)&f<= zCGRQ~;^Ih~)<-rlH$ZUSB&eo`bIhFXfuvy9-(RuMyJBaUHX7)_=JT0en6m{RbHy{|(GdNf* z3@e&~2*7cT*1*c5NM`fC$ARcmud->0F)kAqBEWfaqPU$9kDs_FA?5bMeaCUbrd@x1 zbzO^mKo;C1cE2tZ3@++4F+-%zd=1yJUEz;)*+pPJ0>w%d4c|d(0wIKZQ0<74^n_Q0 zBeq=TE2fdH{Sv)aJhWrXavb!@_L3hmZQrheEOHS&x3l}#e{hiOJaB-y{NO<%lZ)h* zy4h_OB=pX@*g>ib zlFF)vGeV7yPE^@EBM>|U5%quvHY!k%Gv zFc+8MY|c3t5rLv>U~|H+Yi-p;w9z&Oax`q$Heb|newG#&vjs{(RQL4&x1tC2r?EG! zfz$plP-~~2b`SJG(bHmTcltUm6=Sb^*mSU=Ah$=Xki`(-jl&71o9;?*G5P&I*k+UN zJ(vhg>!R`83w5M~)%`*0kFG&e(ycWlPh@GRkZ;N`_dZ2&NMQW2lHfu@KNvTS&i;+7CR z36K=wcn16fn?y_|+K-r#z>h-9k*mxh35Ng=Uu2V!-if>$-N>lpgkqTQlP6&Q6kbnN zDzB42^)a_sHz(B|2c4GKU1WJtKr7@@m{*V6U|!uCl1ddqT0#p>ejS;lM}d!o-tSW< z)S+z|1y+(iRR0v7Fv$hRsgk5hL&dS1nsd;nz59ier;? zW25`{z`%4myEGJQkwj&_P(Xe+)zkRCm0HxeM}Rofg|O)2dVK`J`a2O^q0lfS3Z&j1 zC?8KtQ_r$vrez>9_o%KbGl#3xwn%A zT&#CgEoN)qq-O=2V6glZ>_~7Pu{dtUk_B*+aK#`ySQldV& zXWjZ$OgCwi8-Jr@H8P}pl=;&V)IOX=s6mx`$fmUq5Aevsv<@dFYfHrCNo{Wi1Ti(R zj~)iDJa={w>Oz>S0*NbULa~0vT;z_(eAVL244$KrJ<$g*elzJ)E5+woRv$dGKsmcZO+SG<9>+ zT38gGn$lpJhYV1OSH zyF-}uAOIogoC~ap7N|X$Y$gH8{sn&RAwL^p9vNtO9WAv_-O4#vC$zyuUJ~`e2mGp5 z%&{z{@y+#;uU0C|Y@-$YtkfYT3i360f5HUvIvlABvqc4Uup6EzO2^LK<`o-FLI*IX zffQjPEJ_3acwF+MR3!~j=))*2_K@FD)kpM=zZk~?NzaI#l>DZeK5A_KRyXMDb2e>Y z$h6(;T-arl#!hwyW}xT66f~lGCb2v`H0#qCcKmSXFet@L2zJ6vXL4SgyWnEb0m};J z3ri+_pH>j0p36I%MP*r$Ycf|-;`*xcs?v(eQtAusRZZkM^J4$t2d&mGLm<;8pf330 zwvt%@d{JBos4*}XPDuUXpj>4%shG#Gt&L7HBKAaB-68;vh23KU2hdR=KQ;8Pf90^Y zS{ARhHT)R!_8aUkXN@{s`_J0F%xiy$>!eb<7?@DGT#mqOq`4A_z!we4H0gXw#TSaD zWcJ6}K)EoSiHNew6!0X14b(z&1_^MHzsnADVi@GYQI;!aT{G)5v%WCvtGKeA z@-igu-HF;>^$tV5DOhO_@zR5(cEY(S%oLxm_2;~Bis9Q#u05V=oUs5nRcBjz@QfLG z6MXqpqk$UkS2&<+Y9;1i=ESwv4^Sfhz%`d28P6D#QAu7JN-`O0fBQ;e8x;D653l0t zM2mLU9M2V1cDlm1kvppDm?kH+nwSX+P*M_`LYi$@O6k2hwVHT{41ilpw&jgx7_H!{ zlMdzZ^0lGjhF7;}wE^-J%%mUx()NOx7`&0Si$U0Z;oA0D2>m{ZE{x^xM?kT$FYH3b z?OvyXdQxs}8Pvw1FBAaSE#?9whAUNSnN4O>rL4Cb%C+wS<=dX6RW0CEmD!QCT=K>y1K=Rv`%F>u%rZ z;V>nX(lMPACNV@Z7}@wrM4KxZlAy&wO#{uuQGpHPpX;jTLCE#U*B6G*D>47RyYpO;lvWJkTN~6b0;v$|MD6}ln+0W~GJLv#(5YrkMc`h21p8v5A)**eI`7Lp2c9(j?;rfQ%?H^4O$>3}+@ zE=x?)z?w4xE4c`OcpxYO1uccX#-wVTlYjiqWtTno&;9!g|83V;hKzdSa9ST(?a~_h zkq{rp(0d`gnl(HqH-ZGJI2#RGNQYRX(ruZu0T!m5os)t_q1WW;y+s4hrY}>c5y%R` z%d%!G?aOkGp1Fv8Zfwk!jGnq-2uOQ|Z#eN#=)_Hnz}EspVp&TIvMkEd zcqlZMmy6soO=Bt0sAgv;65)&QN+yFB{b%as4<18EBPFqcW-rizysOkERBBb4b!;f9 ziO^@Pr79s9ohm#}M(Dkt6$3~%En|OHHtohJqZbyi&=&ZTPqv-p0P2!l4l;1JlKYt@ z6-Z;i75%CO%Eq|>L=5IAU&j2t1+n=EZPniPI%aW97(1~5PM`psz*0s5Iur$3*iI~* zCIkWhy0&}e%G`^E8gn_M>(?1Av;Yv`aF?WIfhJi+UE5JF=1NiP|0KR+6tS`=bWY+UwhwyB$=cG46 z+;dMXktBQuC?UH3rZ>~aVsvxhbw1V=v0e(C9rDwBxNx80bS+hPlCyI_(Vk&M_tB0k z5H-vkAr-TRAveaRwpNvt^ucqg931Qe)Q zT{XBSCRIv_^971Cuqdt*QM8b&gbC1eeZW!~ymdmOAwFWIIAp^)HFNu0-x{oll?q@E zlG3K2K)NP+w5BT`PJdM{izs7#I)Oo?_B+MU)`k7u1Jx|Q(Bcm2urCQ(s+IvTpk{uU zZ!jB$EQRzg9)?=;k~nR`3&A z4MaBrG0i7u`oGowAEOl-Z&J1kAth%0kU!@ib5K#PHL`kX zbF*%qb>FP7bL$^> z4jkPLx)9fg{~YGzc&&MpCHu)hNj4%iN%BI?{~?Q+2Nu2j^53KqzjNP}BRsVrv2ppJ z1_qvhY|L6##9~~fnhph|WL90G0?kMcNSXHuh5T<+ROz(9EQ&?skJor&zSYVXflLaA z5?W=n(@xtQ;=eiKTQ)ASJ8g?MZehOc*9XKQvES;`g@gf7;F;`Icg!PmZoaBOZkj!t z*~&Tp%n1^!xVM~L;Hgx?+`bJ&ne5xK-jTMi-N6}=*or!-q4K|Z;w*lZQna=YtD&7I z4(40_r*pZ7;ybnk_zF4KyL3hHLFO-5RVUI7D6Y|LSma*M85yR3;%fjc@Fju{{6xW z_l%CZ!>RMHxT*<7?8X(R&VIiP;ck_-zE;u%MExQkdAe@M8G$0o&ip1H+mqtT`0)+b z0V5iS(sjgkXGVj+2Mcfe#B8vl0M*ryU(CF;ZgXJhBeW!MEuDjGiGeK#%vuAHW6v#9hW5mMz zwtXWG#~g&JW(;(CqXz6`;UFQj31I3q(V@%UqH0|f13CwOV4u2PmnnExJaJA#s)EKJ zl!=`Z4v~s#=Y03n-}B#P9xeZ<%v?zQsCxSCxBvQ?nyJB!+tu6IG#~>y6{dm&4SJ}=6f)y*7bB#JuW=bXu*2sZ<39@ z=Xn!I#C#$66MzX#6QCSsVL}}Z9O6dNuP`z!mZnICbn-iU@ioYndSMXtsebT02R z_~(0xxGIeTL$6lo3~1pSe{WS&8eTF+TO_TyK5<`7Y2y#@&8srjLR4CU`rgz@22fE~ z))+~CST~SWA|>-L>&&e+@>}NF`~?>sNn?36vG?%VnFqCj)h@lhRAHXbR9z)|#Y~y`u=MsAl?oC3&CcJsarV#mo0{GrF#?khdjiGfb+&0hZ^^j0cM{o4H z;z(VEz6CLKc*ZAXRWXvsG_mlDd{?836qEWsUWRCpO zhoS7F%qm^?0Z-tTCO)uKjZ73wN=J@d_v$92Gs!2Z@tUHd(K7rboEy8O-`Lpe8rkkEuA@4VD{8Yi5pbvF5y&(2_gI8HO9CM%s_45MH+p8LO%|ueE=0a9^u+ zHq4VeNxsEg(IU4F%GKR9EJJzjub(B=2jXu@F&dY zSLA`C{O8O83l3XKk!KKy2dUj3*UKL3meqN8Xf?6@@mp?YirZ80YUBa*U4Ic|sl)+!kMaVx>K2kk}1d2O%;M zG*_$ld)CdBJNT4H%oS?|0+=6xdX(7db;}hx1!q|99XBbgbC+ReH`@xeNCxKh(oTn=qCh&UYU zf{8y+@*96q0m=zp?)w+i%Bq@xFEkoxu2?S04>r{tf!sJWd(a?|qi&^>E!1@~#GZ{u z;=&4`LRP@|&ZpE2(2}5KVQqZ3@5K^ULB@=|1=yO7g_$xLQ^|G#!Okb3aTmoP1cw6o zhFB1S5MS5}qase9TSR96;SYJThPk5;VM$?f9I!UP6euNEG@1A7SnLExmj-^XQZ1*rH}{n!b9a#{GXI@_ zfcYKsuUCFVt$3(!&w-sW3=|8OT~;K2(-*cbb^yDNz%;U4;u>76TT18 z{&c*O8SFC7au*=CL^2K5CZI*e^}@Gog`Ry2NBKhrn0+4(bT&KVD$Fzq*HGT}8)iTW zixbGcb_KbG*|>jX;3Fp^mgqx+rD)k3h;DyS!SxvtGYD4m46>fk_lz zFmT2+u_7!2IVVtUVje(oL-NIjwQfnM{O(?W@F75)i!D7M>NqbaRkNvKa2i_7RmJZy zUn%_hfwquZ4$e{G5ZfjCwo}2>q;ZsbWlD6L? zvuX-6?FxDYaw$!q#>Mxidw95C8p}k45lN^oBKtG>9@GEDkr8>p zJh7^e4{1q!tg4vOv@)zJ~qC_tmY7_jrX+c5rMux2POAxz~#X){f1G2TO-GIf1s=x9=nhi(vME zfxt|==!I4g+QlKP#$u#|Kd>4K&NInY!76sKKv0J2w!%Nf8h(z7wSVHoIgN!VcG!I` zBF`|TM@L51r|g3@EhzO3zS6Xe&h-kd63^@b#=w%NevGJ91hmnGZogYh9c=uu#vE)k z_BWfqt<}=NN^;Ft+JEw^6MfL-Nv7&Sb0(@3+eC^;f^vVHrd0?anOUGoEkgyni@`=; zF@n!43Z?ijcI29mXb zKs^VB_t8%Sqa^rg=P)}F8)0uXXGCPl0uxo?A9LnhI6hur9-CYLe1)8n9r{LxzUB*B z??_1{bVziA3!}{|9(#;3bkk3H`NE?x@Cq$lq(>33;sz-cH^2cp^ca}b;{obTv_@H% zI@0aU&h!{F9V9FV)Xq9V_vB(>MQyUcHiMfYgG~)kIOBX+;cW6Skn0fkrGw$t!NCot zIjdv9$sb)g$IQG+)!I+Kku@*em=Rbcsr3s=B+I-A&nW_WfYWpwSQKPO$H9d|6Osa; zAi*33%2&OA1~{d|p@l7t$RRV%Ti55UCN!B1^Ne6!w5=tCH!^bW$Vi%b6>N-~ZF0=K zSoSVJ8leNT>Ueb6;{fR%yv2Y6AAh%nHf2%J`hW{?PhGNUK6DIpK`d0T{rWQi)xVNc zIP=_c>f-icF?Ck^GdnrMgYCuuQTN-{>@IL&I6c383G)}u!84bU>&D0Jh4{rc4uQn# z&}UD4J$&NEQHfbNa{A&p*-$ElucgNB+m}lAT@$p>EiPNnDn0i#DtGlP;64-5s1 z!bY&YJJv%-ut6()K7l$N*LM4_Nmf7}`>$irf9)wA-$^;!zaoPX=U7V@(>2GQDZ3_S zJ7|N@J~s4qT&=Uoh0yguC2fkF&zx|O?+!38H6NcR)ak`l=-*BHEX9m6nY6>4fHQaU zKUdn<_h}MwsO2Y9%|3lHt^pvYI+g&boy%h7Sf!5~VfqjvMSY1EUc1C8a4%m4wP+kX zcxBQG>me?UvbJWFtr#FF`MH4lzH-)0Q<6fT6jb#(A2SFKu%ysy5cc}32+QpmZ6KZg z(7=D^WPTh#g{(&@%{jf7HN^P=)<4f#v`nS3gMPT19{8 zr;ZeuVF+97+T_YHz0@w!)aHdkbE+!1vii{#edJ6)6;B$&#$?|~jxj!349O%Gp~RD{ zco-&I2^j0vkgZ_|YWkA;us)Tzl%wq5FrtTeQdL{nCxXCCSzJ4$hbn}!e{SqhlW-vk zgm7|FA8^(7J)jR*Nl6er4G261Tlc&XcDLhC5PyeqkvQFl;1wjD-@(R(;AsJG2M^|I z_`8>L^k5Zqw;b0i0`=ax^}u4^U8t;_~|j!nqS z(m{#o+hJ`?5|%{kp4BN?c%hG!LfSs~Ks@DMosz=`m`7iK{rQ?irRoRB0pF2;e!}+G zUw^4CR;&6WM8w07@Xq`KX;99^nE{a<5o$p41=50+K_n6a%?jut3L#qB0J-GNgwCxm zk?%_!W#|&riPx%0sUg<5UluXO^fAqQ7Ij+f)MW0G$4zl#TuYV%PWn5bo5trzfiVV1 zaYzF`@~FuI95M({f{%Q8(wWT^TA0!^X8|z}eTeR^!yyo3t9OHtYj1;rLr{ytmV#Vqks`&(|vh-dGc7)6%r!B`$rJIY@UGOr&czL5 zS}(Th*3`L5rJ#SYYLjQ#u*}J)gkp|JBSaQ9S``=DT`rkIqoCgEXA))V{xffpiF52X_h zM;;g{{*{tl|7L|&tGM}R&+F7gAe-l7O{6f~&_GSZFg$0_D3Hln6g#2_W;$4N7pD?s zLFCN;kTe3;_&7fyBp|o&^+tpE z>vd>)pBZMxQj zKUVl@5ojdr_*xsYg)CiKU0b6}g{M1HgEuMrPafaxmzXUg&{R0v4pA7(kkt=Sn1Yp& zdTbIEjUZp-PQ!VXQI=*Eb?NrcI@US3SQ6^BOfmq3#$|!`d!-;??C)lkxFYx)=8mV? z7O3cfl1mS{115!a+3;m}89o}=lJAlmm>uME+qXYot=>(pW%j@=zkd;BYro}b3iJ^V zl=r~|sOWbFWmZsrx1LK5GZ&-A3t7`Ik}DD(BH@|5h`Tsh5n8Q0g-YO2c*xnz z8?py*)iZTl5cF#2$5;tMN|h;A-fXL=uP}X|KV2#@FBLAl)&dCEu&dHE#l=cym z);!*RDc&C^H1mMoh|E(qG2!#cl81c@=Q(Jlk{j9_dpJe5bnN|y_1eMI5)dZ3x&1bdbqmSE%qaCjtJVG-7X0D)4u(0m)$5P3T)5YdkN-HwtMjPy zy^;Or<|z@KJG6uO-JrzjM6eWS=>DT*U%45${3Y=XOGqUe*}U2wx2@bvZK}PUVxCC9 z1LEv-GPxp=i2OIX@L^_C?Ig3Gdi%RiKTXyYfN~5bS)^RKHt?C)?j2#iO3wAKS`}b4 zCR;u#14d^U!&5|+k+3oYpaiJXVI+jqcDz|Vnj*}(762r18%qdv9ErT@upU@eVoS+7 z9V`Y7zxjSx1t`+9GGUo6wLGk$9+G%G;+$@E1ih<%#)-}$N|*g+>^kOp{ub7`SG?*F z>`XEpP~Z5;4gJrEg)wc~3KVEMtxe`pLE}*6k_Z*FM3TzelS&{g+RU6@^X0!{N|KEq zxonWEdumjJZt!Fi_!#pMKor@MwEQBaJmg*#=4%CpWLW;$q68S9`3C0T2OsRMRzEZq z+5#$F6VD68&jy-fs-O7IXUrInI$YC&>-7XB!Kib-VXw zfu2c_*?ZQiJHjV#92KY({M>=vYdsXXhgt5!MEgtqA|Nz!(qa*h2whT2X*2SH;-BmE zNJPM$l3qQ|Gl~Zn#nd+feT^7!abVm)h+2e04DY^scTOAiO9~QSuxr1{_416s`KeXq^GezyGFk-e zE>cb`p^|#+WW%CMc1&16InmHsb$E!M+7$@xS0(Oeex3aW^S;H@U(`GF<;rb&V*$n_ z^=1W>;&fV?XRyM32fkG;TLec%ub#_9hE1G$!1`_{HA9tv$4;H)l@4-Fj{k!sY91i*^iIiZ~SQQFy3 zUznJ`nOUSdBGY9XoyGx^-#kPzHZ6#ey0q!^HRbZQQmKzQ(}0-pwmCjsX4qHfs` z5=Ay9)KPspChLP~Rq}K)v~3sSb(33GnK)vt(*R`!vr8l4HUo02jvL}>&G+W{YOjr} zPy$t$oY&-^=LJC` z(Ih0hE98sSdy0Q8J`&sP_HLf177VXUNnWed{(-3z>hEue<5` zDk@f$F1h^TLi;~+db`9fQfb9}8hTIZL+78Hd*jW_;p684)`_~kLR63vf;8E==WOEbk;>=k-zLM)*OPzZi!@PR)!upU{!>bJ2n@1ja<@b*WA7g&BnXgjuDi8eV zCoNWK(N=y&H5?qV)y#e-LSf6M7>>q)tN(?-n;=%)*0((`#RG<1FvECkR8LA z+3}$#<3s)Qzx4(-Cd;c+4S26t%Twpn^hdK*>cyBo9+D;`!T4(txs8tTEW{Ji_(f5n zkJ&_=WC7ukbr;NwX!$rJ0YVXhK6NdyBB)S~664c^3@nJKp`#AN=Kz8drSt`(Oit>Q z=^KPg)h9w49!JEZB|Io-^V9OMS}JpetjjhfxJp5M{lfD@{&O#dqb97KI(T)&xAXX= z16+l$aq)Ru?{{uFrvN^&|JZJyx|;pUVQAX(_udY%u9Nxo;R+DE1VvU~SkIM8X`t7! zHo;a{Vf+o`2S85MuFvOyv^HOSKw}z!0m=c3(mCIvu`XB`(W)d?5g$g|pha&m3%MG; ztIw#5&M^|P{F#v2CNc>m3L&2>@=8Gjz}06mghq{^h#?58)bKeWfK@pnp9E;6_|B+a z?;FxnBKbzEqnc8{IEOf#%{hV-RTUT;S#~Ju4$f|-6o8+TM*D}!kh2t#NW3y-e$XFK z*Ef4mVbZ$zJJcWu%#t(P2vXl3J9j%I)KG$7dDb4eFqD9VTG^M5V)Ex={Seld`PV9!wWN`XC|7|b{@I_^}CFiGs?8JOiwMQ17SExjJ(WI^ep znP0BUl0cctVii@R11#ggdUX&HccxJ$((nM&Ma4klz!K~*7t?d(JF7x1Z!1dvSIVw=jhJuG70du25 zf7nCEL9Eg(`WxU88sr0p><|UlI%LlEA$ee(L+xCj)LI)bwr#8p^vU{mcrA|g)GHO{ z@+^7wmRoL-RV?L#9(1|5)fs*$r3+JA_*&{LC!Ia=h2SZWCt*c#UXq!_Ci~aSq%$4 zf^i1WO6@ir*$4o>te3FExM_D|dlm*M^f=Qq8Vr{)J^$zsIQixkSH#|Zm%R5L_x<OvmtAPbNLs}8at)cfTfY^YaE&16FcPsk1W~Gb-|I z9>e-(@asT8+Pi1~_49VCyuIc!Bs*OPlIC1+<`}tgY;1yRwZB6)3`sSbTAUIK+*zR4 zZqGv%mA6{02kSSyMm8tx{mP7@6pi}l>EfEXgeQ{(99u59cATpc4qbY9jp_M%-<9iN zTUTDpc^?2I^9E!dH|W3#9l-x8@~%je_>#czkayXt5FaE*>lc$bzT}>b&VXaX?sxhx zX3nFQ6)yfCqXiIpa?BwCn*Bh99B98t8Luzj@6_e>Zhet7bcTjiZyp%qXbTHUUNI1W z3+>6lSWOxqvWSfWO<5CuH(_cGnfVea$51M0Uk1+*;)!`o%I2t-^a3EDwk#B8G}(f& zY%CR_wTAfY=elW32VsFp45D4vu+t$k8;*!>n#@43RD~rkv~u{C4X!$dZIWR~M)eqm z)NK17>R&y7$^i_1@78fLX=E8W#p{gkdNw!7PF{ z-D(CywZR54Of*w)`3&F=<<_AXyjSo zTHMxM=$<$|_I7)^!vH+ngoXtkf46nfvqU|E!-f_!gUS?tG89En;1tRjmm6FT&_h9L z!`=;YE%^(hijhm1LrbV^i<#FT=X;e-fmh&c7g-|C57W3!2plkL4jRSC!tzX!2-P-? zSVBRjPCMLzq($;y;l2I5{I*zr{?U8yC9SmM$Qr&*wBn$*1_N9FI&&Y#aOPLk8I?M& z(y5Z3k7I1h0tyD)m@E|Y!|1`u*FQTEF9_w_vEr)xf6v@Q8zeEQQ9`s^w?@DBqW0(y zh6Or7<0UXMept;9LoJ-_;2Q$a=E31T3@IbjN*2I+b_;(rx@0`Gcu?5_7Nl`g&@(J% zd%MN~a|CZn^P#n!B7;L4)2*(cVM70nTMO2BA_dkMGG_x zgXDBseW3`u=J?-!PmKRnS>!#}v4SXJ!h zTnMejjhpP`bvF~L1F(~N9XJ&>kN3y8Gjc!hJ#1z2qd^z>QyqczYP@Q7A5yBDO7}10&%e7)573OFRHgmyxOuZpd`O_C-&|L z21C2|y}RL?rw>5S%UAV^biCH6flrSgyZ0H=Wd39Dj(cvc^FW`bdi~9x9oRp}&VYSM zRy_X*1k1p2=~}g8j~z2Nh|bu|t%H1ivMaMR1rA3hfeLVYpsjVbrpz#Y@4lb4v>vxf|3!|?1&CNw~| zs&E}`kn`IArj9OIa>e4s1?G!C?v=7wCI*>b;#{?JFBhOKDdg7xg0GViZA_7tI9#8V z_%umfNJXR`OG@REy1aKMBvz{=E44eQbJVti7SwCH15(d&Cb|{hj=BnpFXHg-3byLY z21{tix-f+gmCw;T;8mE>b?UM5^x`E5j93x}PB$LvAS02n60QXJhY$6(vHk&92GGn2 zU}$~#y2+Vvt`uj&Bkt+L_(TMP@a_=#H^YlHP*e$JA3Px~e-Amy93r!sM|KTL_52aQ z(blsxl-Gycu`p&O3gn5B+X@*V+41KV^QFeUj*<)*++P zG`#o1*I#e{SzU6ZZ2cxu3EJ{nzswi3`i(hFRNH@mxz}I@77nc9%eDs9eNlA`;0zxvx4zjo`BooC@=~Sn_)GIEc_ode%8_}x)L^#dO|86i^Uz3o9AP_Tud#_;xi`0GztLQmFt-UZ_T`4||n z{jM%@)UwceN*ByDb0M}|k2ISk4ETYl0qR3YyEX(EH$;B`Ylh(Dzy3uY@8`fQ7f;5g zB`iY?1vw+(Q9_jpbOmXdMFeT&*PAQij-iGjZ*Gl}1-o`Vuxl5YzjJ4`{j_|+1#27< zyU;jq7j=wzu>bNajwQu5LHNM&V_AT#+F?UK19hPzJA5*a1c~y1P9C)FvtV7a@*g&s zZ?t&=ice7-5nmLw(n^l4DA9|Bv`}b4e(gT!3_i-KvKOakeB6MH8trE4yCDRaRR^Op z9cPL4baeC}^U&Q8Sm~ZCXB#EGT--OQ58g%gceV^~+9ZCA1^f3B3d+Sg19S*{V70n} zIl$~E>zL1*P>zP;RR#XBey&cKt~oELL5O3q@I^u%5kW`K>gDMzdY;22Wl|w?F{y~i zlLdcM9vH9CMsab#DZ00(wRw8fv1(%+BiF>bMPx9Q+P%q{v#;Mx-Bc*7FBW0mGXj7| zX?|h8(l?Y+imkNNn+@-j3WRn$U(6{5#dgaEk0KaS1)xz#4!#mxv23103^?r8_=JnO zvc8?U_%B9JGpD72A59gnHvCBL;2lNtlk>CkY`u00+YH9nvy@2{U3FHEoj5Hc_ zu?UQ<3(A(D$InigC!G4AWFxC4v#}jF=b}FI9wcWP*=Ba z;H>$<514;%U9u$oB=HXtBUacI{TH&c-e6hR?%L0VxH2v7*OY*agSCGTalYF1^V3IW zs<7WkV1laf|Bplw*8%sw*ADK@DxmlJ&}dkPZUW9oraO+>b7D!vtaYV>0GW%RCw77c zxqfKSssXN_%c(i-uN_5X>!p>-^);D^2O4z5KB#cY%OD@Z9HD5YI!N9ek*n2}I0dq* zIU#Ugzx?jIk3Q(cQbE<<~Ou}K{So8?t=z`)!&w6;) zlhYDHxQD1)1IhLzHn5j)d%IDQAC_r)U!ccxft}gzr+PAVogopH0>k?WuL6Eg{U^VQ z*XuA&vWTZS$Ie_pPLGe9jvqh%G&+~fgA%aO(pd8#WlJ3{-RnjW*!)Lm zJ$zb^e5@f&^F$0tFKAzQM~M={i`9A{ZxTvq{_V!d zM867zqy_S1jh`^po2G)b*@7!+f>z=!AGwlMz`mir_GYMD9tA$vPce0vODf@km;rOj zshTE0X|U)#Rq#S*(4#o-g^iOuuJDze12zdCOW>g9UYO|uY7uDYAtfPDiXlcp>v;j~>oIHDgsj3GJ=?M(10; z*lBbuS;4$D;5ZKaC5e8wh9hYYECn?MS{QdxuWA5EW-yO~_c24QXQrL(;4CU|z2`!A z_sFaZKW$4`4?Ah~*eeg$-V4`$3bT!^{0;~TZgv+01wl5yt5nE_-T;ECZ~)wmig_q} zrA#G|Qukv}MFI=-)P1xOsQ{0YUCedARpkdfA`|Ux<<&>udFLHqjE0=`oV2bn5u{C$ z!0ak>_xDcq-!B%1MJBT}WRxp}I*HgMr3F%rKn@G<;$;JvZTP=XHge+F1JcuBE!TQD%m*mI%hku zziiwPX&g)i>+p|ZyIe!xd*{s?HdmQH37FR)JX#0$WO_SB%g%lF!)9Q0 ze>GH%&w&lO8d!xocu`oY8Tk!pI%P5Xc4N8H-@_aEdnUIRm~*CbCX5j-zS*Ua?3V$k z5C8%@7=O-Y%*pNYoUWf|$tP%&*byKfe5=F6_p+d1qHWk$ z_0dL=E#IfE8yj;1(4_IS3YCJOPK?z*FhO!Pl|KLceL*3xoNhmR-}u5UISmoOB(te; zbUpb@&^A;z_L&AoJW*p=oz_=>FnZIexX4J`7j4+mH+uc~5jaP_eHQ_VS|@>;-ieV3 zgV@WICo?e#Y3WKw!eB0q&Eb1=sk1f)#4eG0`MS>)IPE833!MgaJmo(sH%EP|;AQ0l>Bpb7``>&mH8K47jpWdty4(@h>Eta$tI&U`e^?Zxqw1IPZ!{Fu^h1F<2S>lt@&#X^hMykNzZb+TXpBm|p%js?p?P}>PDo;cBvIp{&! zLgdiNq-w~hMJJvJ_jI_Qq z@EoWV>9sKAs$pJ4t!7HaCqSgQTt3!ERp1}Q+k+0h+#%Cm?l6k1G<_|-UrM^^pkdS3fKV6(P_B2Z}8HR+sdj$(ZNwD z_>tlJ)9K-wGEwz$flDws;)OwiXNiRQ`(DUaB0{St1mFSyA_Y9=7T*s1sofIiYdBb| zw5&Z`6C3IJ;q{Jp3!eKAqi5Q8*F$f-;V+AFI1>OP<%aGQ`!m#z7By9CF1C z!0QOajzFd>;mlLywy*YpmN&oe)W-H59HDgXO&6yjw&1s(y?u5&Nd2rkbRsXFkDvgk zb2_2U8S2(K3$Qi+F7l)E`V}IFL^Hf5U6gLWIsmg7<9b?j>TE-am6{nI%;Pa|s@3 zW>pA^LijQ)3gLg9K7=32LcK(*XFORO%zlU7#Uq#E=)4(c`Svx$Ixg@DpBa(crB$hg z!4WWc4v?QQkzJ#FOK#0DN2;W23*-8GhB-W;N@x{{)jSCgz_DVloZ|C%YN^;O6PV4k z(l3>Y*AGYx^bk+qMpgAUFRE4v3>qPa4S-1uFi8P|ydg$tzb=t;xPV1dO2T%5if7A9qzX_u76^r| z0LLQ-AsV%|aBKI*%^WZ5uz9luCQNG)AKjUHK=5WBu+i9|UJDt+0k#=&>8u+%1`rB9 znn{qLtW$sGW|VZ-`%H-f0T8U)ZS!~Qr&GAGUIlyVYkD7y*2z z>slf`J+!{+=JDLMjYD`FTI*{b`Ra^kTbectGwaXuI+|sbUsYFjN2{y~s7eFv0xGVY2U`}D z#fuIu=xEsrF))|FuMW*X$g-)ITi;@uhVf;q7dfOpxpU=)B^K+F^(&o1h{_#{)~pye zkjLIomd^4BOtf<~*Q<=hwLxuP-&M-Sp&%Gd?{SmImHAC>p;2I4#`h@W z30+W^OkANT!i$ZxYZdJSE?a#F&_-max2a=axT+8EJEGvxD>;1PAf0JhZ) zVB@$dTXSM}v}govGcsR=YfoRXg`E&3gyWSv#JCseS`3 zk5}h!B6roFY`;(PP$zQ>5|TjFFP@`H?_O({xh0l)tH#*RzOSn8_0yn@>fXQ)sQVHy z`I$~$sT@5P<^y}UZy!IXNo8~~eKvEitgvep5IP7<^Vajlpnf7rLD4LyU>rGBJd@Pd z!G$Ctaks&4;ebL1)dQoOFsg}AE7YS~1bTF+;(G$RxHkgqmyJZQiimX$tf)b}-o0b` z84i%uLxVk=F@-S03U*73Tz0d2#U*re|34^pqR{8~IzCRaoVkYsk`_O$rbDjL2JBUB z_#bsKi|#}Z$)~yZ6pJ^@rD6B_7_AqYa|y+n-y-b&AktW~JUlG2$7ikc^;WZviv@X$ z@KnAtZ)UjWn%$;_2S%K;XFGU8J{8`cTyoKBM<0xvX;(Kuq=~LBRIczW9+V*skBAG( zn0&p(z*oma7Q0<0*T~7E`K2W)Q~Z39iBa2wif|O#AF;@6rU+;~AU|?J$qHCi?`5>q zTU>i&u?-B5GM3cc+le`^mz9nI`Ui{lP{*N#0U%`+<}}r2Q9(jDk!Er%yS>4js@Al~ zaL-Pp+2&3Bl9FBb(;}@_^3vZuzgAY(1U!Kr<}M^M7)V2s9*J>yVn{E9fi$F@`YPMs z7qT4}GYtE5NNrKk9C?+N&Dw+zJP21HPv+20V2kv{OVqa96NK*sD@w zWqNwcq}Sh=vWnCERTmK3^HsseA;W>inaBrc;Sb=Jk4gU!(CGB&gUQ^{Imag-;O( zm3)S{Pb#*EB;FuZ`Z#h5pv$jjBt@)i<1n!Y0)S^G?GFMz-4F;gfd~pY@J~Qj?=rAG zcY*DJHR*LU@XYiqPtVKq(C@R}z|a0Ug))YcA@ow=vz@R3tBJjmAzMxCu(V@P$A)ik z4t1=e<0r2%`At^}d@*^Ck^Z#Rx-_dxL}YncxR0OHCu8!0ESi8}d+WFpv1aa;8tZrx zqf{JC>-s}0BS3uXc@tzDKzvLOg)?AfkJ*%s104^;q_@~iA%)c zb2)e6r#Tv>z@Kfn!$Su{6kjOfB@9-XT`ZIe`TV}8OjhKf#c>oqOGTG7JnUd+4cL&e!iSMxC$G8^_-dyO@4){MY##>L zE(onrn@Pv=1JS)=1qB7WPNIc|gzClKy@-CY>)wsm5JsVBv5<3hKi4`?TAvI>)&)tQ z%QoBUx6Ms>RI!*ksEPMc-LYLcbP#s!Hk6Op)muR~Ed&m4` zK~-?Un3>9SqiSvT$a%X$%81Ohe%CG|3$1|K1Zviy%2~%9PrX_r>gjD`5#vFDTAY|%4vo|&dN#a;tg>it%$E*VoT&5 zYtKr90=qE1VW~=Dc#y&l~XEN69wo3cPz(h?Wa>|V3D`PrC-^x(~a!hIJ6J!!)^ohP* z!B)k8)IH;JR*K5a4n$WWiCxN4yYGR<*X12EhB*xQ82D3}>NUNlBB5Ts!V{87bejI7En$S_#%?0e)hOX9D-R+aYCq4&?}UYW?W*T(}QsZ zDT_QKK*22OZ#e|*VPxU{Xz_h;8p$2?pOpug-va7&54q;G`|iszf3#@w2RFN9K8bb7 zX0E^;^1$S6C>9V?S<&z%2V=1HyvoMJKtX}Le*d`YFnb%fdy(b~E$nxjky6M4* z^aWR6+Y}k-%Bhow;*WK%&WA^O*}Kyrz=QA=8C0L2>`ofGp=^l_V^={KyR92u;9|nV zE;@Veaa&-mV;n!;0NlclCaBop#p(pOrp|DK4hljU>_TPO<~g8<_~h00Z>i1g(-)G} z%$*O_vNwHWEesvds~@_q=Gb)PqAIPF^D8HgY;^;KZUuAqjYC64aX1kahQz)|P-cj$ ziwzgZJUE;Ae^6ALA!oJZI_+SZQqaMMNGxD}@ZNjh{HC#5rA)P2>K-yH`V(tN?qAw+vYH%5Z3>#$1KIt931N9c602EhFzUf(&}~Yf%2~I5k{l()}OQ>t~ND zeDX21hs+*;c_pn%?zI}%7l=&cA1z5$S^>cC&a_F8dHsTc0U9+kqb&D}KJ2#vBroVf zH4+HI$V;>VhCVEk+gw5`xOPX>s{~{R3>%*BgUL-HQ23FhC73GAW#{Cmg@A4RHFMJ) z!6gpYl7@~R9|!(F3IxeyFtW`h9ImL@qGk;c9y9{)R~CVeB!JUXt~I;&b#x}uK!pqJ zJW`gO=c!4fWPrLgj_Guij61dKPAENX(R)b5Ue6uVd)ydw%?NP#WFte#fnnldat*U* zm~xLWJBP^AW4ffiDzjUe^(9M6QWYmHC@!BtHANx;>Q$g_cmfzzp9ZyE(C>1Ad?3Oe zj4_Z4MuaG=9)_^wo7=YKe@?bN2vD|-;3Ta|ZMMKMI_KN1_C@W-EBh-TT>LH0>R*ey zaft%$v{!_>T&s8P1rnP&)IV9k3vJ4-5t6 z)T#AuzFf|;FQOi-Ft_!$D&(GX&ME%sHRc!8Yu(^N#g+^@)Ra5-Xg?ZVJkPeGdaO(=Q@l*$JhNc?spL~!=Z$h+J3*x|i z2Q%8?Jiy*CIZfHy|F!-8`)&RG_W;cFKPX=N--zZXzM4qIbGi8vF^`BHGD>N;@XSsV z&*haeUmt)0FDp;06PO%wE+j;-a3@)8+9aEM%BaE&cZ&J|@XyJ$QX%J<+EmpV^z}10 zO59?u#srk+Ulb{n#94+xJe(K8lvxZRH8TG8f@<_+I{_bYHlQvqf!^=kV206qVWcpv zIjf)i80i{me>W#$@h_dP?({R@?}(xRquljwew+u$fPZ5H$lmLq8R_P+Cj)K|5?;?V z$&;`4;mflb>dvfp%f2iP*pS^D_7-9n-7p41#>3a1cR@9E*N+eL)S~?_o@OGRwJAwx z0pvu+k|L@o5`HeQ``mt7FD{<5y>ISaBN8J$a`%$I|Kul+f_#y@&jqvjE?T_Xvj$$a z&?}D`i^`ay5ctbq+P4!u^UhJQJu#6D7`Bo28He^pp#Nc~BcMHD6;W5?H;FlkfUk7{ zR&0UEo(;=^a#iY2R4l%FpHggwEiQ&^m8AtGOyWyZbI8rofG(yDsGhc|q6(L??>>{i zRZv4Dt4#KD5=FJpDbtUX$=+O!`41Sypovj04od>sm^z?*%BqYh9m@Fe+?wvuke7}_ zNsqmsP#{(cf^qC4_aVuYn|T8`Xo1|sA|_(6@z^+izH8&r!lV9akp-+z0AzhVWYBEp z%sSTT_YXD_e>>UHYK$to8$a_cRP%ZVqPwXd)42LJUcVxFiOH-O0I_r*AB0DI5gq+- z?eYfm-cXiS8RS{HQN1c5Q<5x^txu?(0GF~Y&RBth67)3RY5+&{5YGX9W;A*AIu-6H zgFtQG0BVk-D3{6)Lw5?A9Y1f~+JN}=<@|-Gj-{b&!AYJCTt_d1F#UXHXF&xVh-Ry? zJ|v=}TfG9`wzMR?$s_k}E^6a@Lk7#xDD{BJJZQ9=hA;2k!w*S*O`}cg2ueROEq6tM z*$%S^lJ^WkU3?w%FxVwVmjF?{8z)rZ8uUyZOg(nSRl$a_(F#`0S@(f+W$^oxBNzxA z(Ufvfdz!t4?hps5<}=g@47dLqC&(Td9zKVx;W2lvZPFT`hSI>=19kbogp#PlAkGW4 z0_H&iTweH`56sekT}gHiywd>WLnog?m}q*pDlXZ_zz<-*$s{Tvr^6#F{nsX}RpWCb7H&9Ufj7CVE3U z=!Ww&L62nw;t(55-kEKH-n;pm?;(Ogw&JSqeUF4zUGv;?KnexSXx@QHPFkKlUXfV` zG=$5g6vIJzZO(X3SRVfnIXB#Fvk)8G9dhoXx&+;rvp`esw>$5>H_80t=j@-<1NCxy zcRI}F0(-uI%drpjL;PZdC3ynq8K&p{9egDMzB>$Doy@;`%qEK}SP4LMW$&V6krd8k z&vN&y_QzcC32IOKnmDCv{~6JC_yasOGa|Q0D-z@B zhD663s-v(Bc z^^=od0uc*~F-O~g_dUtZ)(#8+qp>5{XXNVz`dGj|2MLVYa!I!eUk z8|3Y#RHe*?pz3Su6A1Xs18&-4qt$%)O4=pxJ2?u-vOjPOBTk-7Xbbwr#!?=E)y~)Q zpqtOU-FkM2`N~BDfGwp!O3a3H9`fSRbGCZr9tolcjbfkzMrQJQR!%hi%-0fk^)p7w z!vqX~A7s_ZfOT?XboH_z_x}?19dJ^WSNpto`kmf;@3S+rJG0Y!+u2>p(xg{G5CQ2Z zC?NKR6>FjqjU~ozG_gbzYmA94#hA~;n5dtre>Fv8KIZyA=g!<+7SN!>;xdds-uJ%e zJ?A;kc^;Lh@1%8JW%X3ML@O|_E~<(f>|&kJwDPhYtB_bOJ{GKEDHiOmV9Jeahh;SG2*-Q+^0-M(z*_D? zvXr?UUdxe||5M28hIcO)n4}9%tvLRP&TxC6zb9|C=AmerCKf$unWNvncunVA+@53k zNmJ3C3Zxh8E{EjR8qto7>}|L6%*&F|UCW1za=%nln7M|MRId8$8>x!&yazHSFUBq*ho9 zyhjjp!1aMLWCD0#pHpt7xI27O50)##xe>kzRB6(}PC6K5%R>*%eD~b}Oux+t_BF__ znDEmhBcu&_S1_+H6S}i7uRl8wm^Wq#nrF=0k=OVo1&KExlSZtk55r7;WUQzlt8<~H zfiUzUMjG0HI<551HP2aJ1|5X*hB=nbx6xA`ibASi=8Yz;;OcE2h(h34OJh@MSW;&NfX@^^xPPbVJvuZYX=E^;yXoB_JskC|+V zDs*0ai1?+<-RF#qtd3s!@G{yYT>i*)iOZ_sNHPevh>4Z6K32#>;nNOWKaB^R<`X;1#r5SfKLi8_)-+L|17>p*Qe%rC2pw>bBk4)sb;_xrQFCXNf^g5(NFaUyy5ZN4mE2LSjB^Zjpv!ba9!UG z9^Ej}twXsxj*Y~<`);CPD!>DD?00d4aC45WT5chKU>rt7irxn=sgJ4Uo!j278v5uu z9lrTjzZ%S_J?I}*Y{|SaJMEBJB6ec>^wVNS*GK1|$Zye}sFij}EkRpn1ENLXrYwkc zTRM<-!Kj~o3^H7o5JsXP?fQ3}7#ljK?QKvS?dF=%V{E=sQfq82v)Y z*mZk_*M@Zk=(^|Pg$XS(;kc^t;FMdZJkd>UIVc*`%Dd<^Huc%c|Jc>SaXh#@A;CIk zV0?lGCxSOX`hmd(@?&=8@$)8*LsrynJ-|Eg!{EIv{L+)^InF1OVf6a?Q_;KV#JB*w z1p1es@JgSv-Gq@<^Xz5J3;+K21{mZHf?Qir&y&eOq|IX)5?UN4R&dfNCW1<3b&3-5 zq1~hu5tz16O9V0@fJpYJ+AoQVefOl)eIb!q><`F^0rT&{n{R$fCJX2n?VAD0-tE&) z(A=vZJ*6czi8oyA)s!;dLeZd zxaO_og-pd#-qi1&J$HG7=nikBZcyj22?(HkdvsbxBn-&m&<9p_WuJ~V#oCmU*ARGXWlf6dMg-PUNdTK|KF^ltKZ zMnUdj=ABVe#7q*e%o@^>ZOpa{+G0IGhk7I2*IM91T0HXrsLP}-()6!z8XU_y2CRhk z4-G{npjymMtr?>s=ZM$`a{6Jh%j=|x&NDwDh|CO#HNLqfwRtX;_??2;@PiWd;r|p* zV%Ex&tGptWz`e+vr{*!Qm#@C@suJtebisiO3#~q-S>zLH4VQt8pCYEPz27EQIFC0d z%jcejNG)_rS8mzi1k7zvS_Gn8RtZLdiYU08ej_9@Nn>(r52gIU5f~h%16X=?6Q&v6 zQT{rf8+dWo3r0Xd-`KlU@?OeNwn>{DL!ujzaImE0a_>&0T zqBl^X&RZnjY~Fzi|LuWb+t3c8s%N-*pzU0+t_TAylERuis&iBQqmCyFjgJoDG%4U3svE`d*Seq#C)fA0?`yXKd9j zzT?ug$N+@l{WpZUdl{!J0?GhPDWAHH(D7`)G^x&jE1B71sTv%{I-7HL$)pHjTEOCj ztJ=}35W!5Au~dg3mWIX*W|qDF8ZHUN1s@1GY%T=r3UCQKMTC0AT6U<&t^SIe`OL$I zpMIJc{`R-GAwZ~xR#iZVCA+vPzgE{=3L3cL!t$npxslr0xwMEfI=>noUR8u2m%j5M z^A__Ks-5qK;Uc(#eNcr;p$Y{~c3b51ID~$dAy1wEcxv|3l?o*}{b@MYPTIZa?ltQ9 zx9s%;(A0Oy{VO`YD%ctwWS-%9ue|aK@>+?xut+}sTDN>UrbC9>pLwu7Nh>fthYIt> zUWM5u;j|z{$BC;AES|U*bc%0)L*J7?n^5wHhz(Jio1TJ2<-iNJ%AU|3VsBzt<|9JH zF&oh1l1+MCCqs!ZgO)b*L6|A8OjkJ-1*ut=v!o)@k~ExrE@$cY(`B(Q&U|MW+`fY_ zVxrc-;GMw?@^@jM&=rX|g&-KTs3bPnb!Dy7_-amD9uS+PeRg3nCrR zcxPxI47i#_O$Zuqop(uydFu=q)Q91PP#j$20HA{CF)Z-}U7|ja=5b1>N3iOsFd=GC z;Vc^z=6dHviw>-NZTf+P$?O;zw%hF^Q~i%>S$CG(8c5Dx7cg`I;biDMMnCq3s7Vgh7}nY z)_3{0XxjN)FH7Yr;jVx@cIj}gbq*v@lPh6dWr_<5SX*FN!7#(&R=s%6D!Cmw(E!1v zduPKZlyRN*1CSR1!Tvb-Stvx#!oXBmAUl9dW`|XBGnMSTYDBTG{RsNuYZp!nuSdeB zs?i|zM&tHc?bNisJ}r#%3W3ow3Fu1G0+7^(rdJIUgRF%!cCPWF3Poh!6+B5_vQL^( zCA0nVcWa$f%G6caMz&c!vqJrYHjo+}UA{7|85fdKpqoXY5Pbshg&S!Nf|?P}*oB|qV8nS8 zC&UHa{@%5i`mc=h;`r{GE*c2Kh^+wi(!E%(pPBpG95U_dA~|D3WiU+5@#G?V0!DAf=K^m~mCikDb4V3Z_)grq zJtOwV{F0_BmI%w4ZwE~^OT^NEHqjqa->u~DO1)ktnuQA!Pu_N|QmCQRv{tNOKD9eU zVv42J;T#hr?M67+Xaw7B(P4Vvf{}?juuV?rQGnJ$t8PDpX|B+LMPe5U7Y0*w7XE{i zKIq^he-4gr_d)DdM)7WRhNBGPKE01XR-M|5H{c|MfDIVj!%z07JG@y*rGYTpBugnMztx0K7hv0Jdo5m=L9@B#yP7A{7hWmA{SJag;{$DGZj z3oAd(zRWD4ZdC=IL`j`RR@G$!G(VwfG~mon*UNVZ&C)*OKn9Kk zV7l%@13;x7h0YghCa!0TlOv)7hGqnISvaw`mRz{ym=7$X3s)ePsJ)IUFU=)2$2|Ds zm@!#J&F$Q$?%ryvJ2z*sNV%|9yQyAho=q7-qKr5&QdF7+Wr3NTRnbMYNx8*5tECR8 za#Dl#&LKnjv{eGDbor*V${UTJyvz}EEIGMz7Rprb2aiBh6N$sTmP!a{F$ghwf^KA& zc)%X=+{*6atL5j5RQ~<<-+#p5oMyFH$6i7m44tt->=y5+#h@KXzNPhzSk#(<@$9$UDcjYL5%}X;#r>)ZHsvtcg_U1t8 z`0!`P9VtFi()GQ{g31Xk&^~#4|F&(pKZKNl#ZI+zDUqu}i%)RsT=SORtr=MDQ=99} z=S5nBw4!#&dHWAP=k$Vilp>-eL`+jB_ez;b%B{9>s112-BPdG`0oDSZDGySm z&hvaK-}w=11rE}Qe;*p!J3P$%?azN+4@~r>)oKL<_|C$tgbWcU^Ls8)JG$zSVAYXh z%@&!14a!8H=i!%-<$AZ4(@=;mu*l9i#h9Ul0}3o$7t z!zLL11&^MlU931K2U74yxcL;XQfAMFi; zAof)wBh0_?)L+9sfcOw*L1F`jDmFFka~Agrv|4fB{Athj`=&Kb73axdXf+=kHQogI zq#eUuP(Y1+EO>K(RkB6b6_pc}8>0Cl`U$ zDQ)#={0g5>?KkD9pNx$qABN#AE1XJfm5P9jhZD*%7%D-8bYah3W*-c0T?2L7T~odT zNdYVcf;5l_aBXTH>ve<|ORrrG>xT{NUJeCM%tUhmjcC#kAK9Y03**7tFkk{buczvq zMdKMx5NDz{cGSBDk2v1PLW#ih0i7uvdUe!9`aUlZ<{<8AMPDOT=9wHWBso#3@cWlX z1X_`A%*3orp4aBp&Po$0NY`l!XhP#oO2oo{{OCvbDr5m`%OTW=%_-H=60K4W1}G`t z8WzdE_p_hbG0gr7-!jz=pJmOf*ML`wIvoTD4|^0;GypaNeV$z)_<;8xsIV)5L>cir zrh!t66J{-J&=%tPo+u3GVbbiHuN|xiXoKrPk^l@Toy7n>C+ zg+)r9-UkC$LLvhdHyoE(kV^3#_Ow={6{!35^IkHVVT3{oW=%v!f~l3+pYWaVyW;Ne zzGwm~CrajkKPnJW*L_J{kAi$X<|~N#vz_BEm^V3|G}%_g4j8bxe9CoGZkaep$1->@ za@-!T556U&SwjSOACeb zQ}G5L#QMv@^HZSBFBDqDVg;WPQ+yD5putQ?pp-yg3Tz_;3LA)f{EJ+{3{bkxU&)EX z3WIJa&69~jWhpIUUP!w~bvf;@wxEyDWjaVAL*|Sruktv#7zb+h=j;X49g0!U^37W% zbh0oAt}2B}T6y}wtp#dY&b?>P9=gvvY{5BoebN${qoQC$gD;Zu1<>T@Q}85+%(n0s zQ^=GAbBpY-4Z6IP+>H}8l9e!-ZwXt6sgF$NlF@3cB#i#4R=qYc2$(*SC9ovuj@ov) zo=88R1tkIUfKG#^_xTV7V1Mg_1`Tc!ODlmS2RJ1xGKf2CgdN5E8WFFcg9kK;EWD#D z5As!0032k%RSQPkbv7quGk|e(hwgLICG%0Amx#(_m4gkR1f23T4x=mX)-baP&3vlE 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 z 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 z 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 z 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

    n${w->R@wpg?3@(D*kx@kCsS>40 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�jyJ+^>`ed{=D*tVg`<BfHn3p^8#Y}EwbKj=c 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 _PlJtb)CU&cQ)_KoWJ+dp0RowzMC8H5ualB@ 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�?c#ncf^>O#TH3mVv<3hmn#s#isu)KLvs28n*s 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⋘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 z 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 P;P6QQAQ#6(jF2f}0vec4 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 z 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

    -4**=?2B0JsY@srt-nEtSEy37jw#w=yK?Y zEoD6P()=;2`aH`wBqT~1lRoCKATN3DInQ1TxerrKDU6n&te=$WPD7Pq3Xb^vQIL=0 zniO+pmhb8w%rM4FFHQe5j;(eKkC^F?ovFgSMrX_h_4brOYs`~t?D@3|J)F(K*+&*D z{L}kDb+O7EGY@W83qkwqR&$AJyms+f^2U(4DDc1U5`9K1s^$ER~t(K6sg`z2q2>8BG75(q8 zAoGH2`wE4bU30eYC+*HbXV5tWZ1H&he7xq6Kk^23Rqk{E(3b&Y_L9Hzas_#qACnWF zXU@xH&dFq+5jk!qQl>E4VUUWoGNr9#av1q-kj0*CSo<9$Qs^)WgmF1GMdo1SGvbGH zl+aDSy?DC=H$3o-wE@4QOXt_6$g5*xTc=M?^6x|+PHx@OjoZe=kJ=b}D3?m6(#&PB z6`9B1Q-36BX$ON}V^Yb)O0P`na_|0?(r6NGYWAE{7JMda156$D&{T`X&4)xj9HkkH zo9=0i-L+&>BZJCWo(v}F)t~@BK)IlOdnHdnErZ@Pdc){J(7cOaDXg;5|DVCHRw~8U zC(c)R0E95yHksx}9fKRs0HQUrv{3(3<>=PDZA$pXUx603`Ny`FNpXQ&l`8XVD9T#r zmPBgS)ziT#W#6NIYWyW|W_*M^_RKSU55203QmLJ()ZfXW{I}^0?w6gE`KRjUKdvZ! zUfLMA9kMHX%w-qnQn-7V`ATJ*Yvb7?A|uzg?NI9n-t}h<$t~>YIU9riN&p~`f$erZ zR~E~~M!kfCfFa_rO(}&cv)v)Dzr|SUzY`Q?r3m?c?X1czj~yafu=|D@r!Ss&T0|Q; z?K~hAFS%V*-vh#iLeKK4AAm8adhG^<+3Iu%cKVe?;>#Hc zz)PTpTThvw6P}?$Qr_n>qu`}a2h|~Krf5)qY4F8UfqrBBL1+PXtzg{>-cthf1Yp-F z0#p0Wq{uGDRsXn1-sgRC@+q%5qg+0}T>gYy%daNu_-}5lij`K>_Xvq5>01E0D<0M+ z_m(ri(&hTR5F7UNW_2Iu%n^A(-tkq%i1DBy`gB$2k<~aCAGr2fZ%LwY+QiTzciGvi zfw1b*9T)_niq;%qs|L)jyvy2&*;G^(Vt!xR(DO)|F!hU>P4&wdGyiew5%`|vV}~Ao zNJy$tiQ>ndoLi^um_KMyI9Nkzq%AO5)NxLwd2nt!`J=(nZ!ud3A_i~8qPGs*rLk2k z21_4pZLZ0mb0Ma^jY<9pIrPg9?QR*1at@<>9kFPl_NcwvK~|dWRV#LckXM6W-6Sxf zCPF|bxN1}+hgRP-f^Wb&2C&uxTz(p(Y5hbmJ`Di$SS8I~vUO@Wt%=Lu)@n4H4UkZP zP5uU9Cw%fX{%oefYMmooV+cblWuL;0V+En&&}Q-$A9-8CheXOc(3($M)^~jlMO=S{~hzxx8iGPwJ|3ZbTF9b&9HV3_r7Nc~m_x3%@ znML>CJgCxFF5VHzUiLu3wScZc7eyD@{p*#*p!- zZ85#dm^yNO*AeTxI9#Ci#f#g{Rv8j{ogvA8vS?BAiC89cTj%PPAz1&30(0gDH{yP& zAl2+tyd070%}{@|m=T!6;HT{o*bbVew;~-$Ss2dV3XN~5-qM;!7(@sm zlfI+0wWmizf3?!+1a8m>tyA$kAS!B6nEny_Zs6f=wnBNUF8+^qa9^GUS;x$;?koBUe~J+i+NFK!gDtDw70``g zrl)|pDyJqF{_9`wP|v~`1^v#3Nf>rCqB1Pp$qZ87U6bkqPKnvf1$?sQ-)6tHC7MXV zOkV3XE1W9qa%$ajg`S0qN0%~Wojx}t)^fqwL#421+1i9y&&3W~^3%4+hAx+Du+J~| z$6a#xO(*>FSxNWe!;)eR8(lefRxhw*Z^+N8JCuZBXw4wX^=p(P)o7OpmoWe~#!i!c!;jHN%N8QIG&MiH9tR654|a{iUn z<`Xx?p!p&yUT{(GorbjWBS+h+HM0#GC4omcL&P#=Y4#jYw-X&|nUj zyr#SOaEH5O^s74~{ap)&@J1@_bJrxV(tEK7Aak(l_9SWFsaMk;P9b7+L1)<Mn4-dN=x5T3$gkw~_-+JX6ao+cra6B&FQFP_?BQLAW}*9k8n z<1~v!czfabq^<=teofsRs)%v|z>IGJ_A}1nYGtASZa0`IuB{*X#j2|rasA761FpqM z4Xbf8Q|+vQp)*{!vx!kkq6$-uu*3d+h|n z`ADxT#GrZWO=Csm?5PsMrNP1D1_l!R@6tOpGDTY$dSu-hqdMq24^g|e5=W=d zQ3Mo{7*?uS{?+1w@~d~>e?R{|`H~mAsU>`G6#7N`-tD#Ztqrig7#iBBoA90K=aQ=x80cRO@77Sd~gYFOpEwW9YO) zCz`9Te)ZMTeHn6g4(P$w#32TIpVe%w8JcbQUV2Txpf;-_Wf(szl@WuX;O+EQkh|@u z+g-48(L;`Bx9BM$cdG@l?Xn=5bTmY@&K0a&t^&e&12E1zrlOopUqhjnZjc;8q1+^) ztmf30uG*rl!u_JDm5L&@TIr@H(tkRqeU2%IgQf@0(tv<&j{Y|-5rj72O%O)rW%}BV zEU(kafo73aBzFgW>O((xKqo&^@AV4P92L{@O`G8mT(8@`W|(C(w^mR=+t8L9O1(&y@oQ-Jm!SIV)>`dL&@T$*OASMGbYzgWZCs=*EXVpBXPepKN6VmY zH<#|Wa7UjvtX3=EpeoZ{^QzRBWP=yD;!S z436GZ`cyF2oh)$UatP8vAC!uvZMWW<C- z%I$!;Q$m|9dPkcd1xBWD%jq0YG`U}E-2LVpw$(B;dU8Z{e09eZ1Gq=Qo6t3+5n#M^ zn!B+|;-EMR_I!wK%l)5xLS}Bg|M$P&Q#H)a&{ixp=qFwLk6mH^n4#S`S|8NUD$=Sv zJIHl;YDIlqU+CX4n7C>QeSV5-=k>am9hs1-6yo%zHNFF-OAmd!Tl|XFlBC00M*Ujd zv2|$vBv4pOBBzrNOMG{iF=tL$ikHfkT@r^>ytMt)c*K;=n7hqAJtD37 z;483~306KKZD6@&(CI7F9u0<<2Z2a zx8#grbAjJ(PHzlL^*U)_xgzAKR&1TNJ{kqx;3R)vRG9LP(xt4%(g@v5Z|Ifodk3bx zuXM>#Aco;R6y95Ww2U_!d*c)Eu%fque&=K~5(Fl2ktV(UQ(BK>@4VAq5Lyq2o}0`H z@pU<+Mw_N)4p`dJ%p*Pg%M#MbzfF+5`FE6*@-^EyxTY$%N(YXZZsvcG)O(~EiTk0V zzEhu6+N~E|`y={Ij9Z}$TUVbsi?zsyPd&uMkM#GGG}8W@;vI{m^Ka^VX_C7)dXs45 zZ1QK*L7qavWKTU4G=+6vQZ_OxretI-^G6+eitFmRco!$l@DRS-uYrms)4cQHj z;fyxA(x*W&^8Gbya&LSfQlI_fD`PMM4`2M;36MVf8&UJ;^GlSSrktr$N79q*y>mvt zu?Xa!ww~V=QO|-F8fX#N$2G`xEraJeHF-S)szKj?77P^?c%Gt3DF5-6PbP&}gm*lF zDxRT@x_uX zA&s(DcTH)P4oS?%i!7Uogvk}HQUKaYN4L>tsNXS#+Ie>YmnEysnn`;`k7=h!Qa)L(6ss08FOJYZV36+=nYl=ph&8;_nI}9>UC+~ zjl_51f(0R+uVUt$tS$kqib{8znl+lGnrJ@}4G!{G=Rp?8O0cIpeCOSxF_>5vW*=ae5I)Hn@VcCX>&=b zXL=d!2|ebBtSD>WQLuG`myw9ZhaP%nF(ViEU9j^+eml8eiHs=~01?c8L~@me|Jj8X#y)xb zY0<~zNUb@eHyLxCMqARL!$MyQSCUQ+umh;2JAkNP*L?YF>SPSUDtI6|qEmHR1ZvppRNZ=5#<$6uRqaUv*;?(i(pnT_UWh%=y)9u@D}w z@%l?xv&2c!U$kkYiJyKHGP_XO(%Axy&XceN`Yg0fslj%<^pdaIa3Qi#7ox{ufP%Ug zVlLDGWixq}uaJk-$}Zm#JFl1_F~~@ zI-NY1%ZV(-rTr0=DyWbLvt#if+r^WUKo3U({W@#WXfl=f2a}!&^wr)ArT@kRfYLD<)=_PO&VPPfrkgsWZH3^( zg@Q=;{qTr>?*DLz`^LmppHGjg1^Q&@$gcq{?2Fp72-qgrBew2ht7mE5$yP3={0`{; zt3{J$!YJy6LN3!Fd(eks^KG{|i^346p)YbnL8;Lt!-$uTD95r#IR-;UPuXj4x5kv6 z%9!A(vHYQjIx3ahF;;n-QPe*tuVQ~IR92Y8R*zk(l?$8Fo;HcQ%`Ne_sn5@{m=7G4 z)djg8&c88b2>az(nJ>hDGouPxG8(7(qCTaQ9gx~C6}cZ_NCk>P8+s*Lx&>#QA|jec1D~%;LkyH+u|_yy_DylNRf-b z`1@y9eSPM2cbW4+^_Vywy=>y+hlErcc?p81$4nR?G|T$1=HMWKU{H+2)Qhk ze&%(pt=DWYSL-Ll;k40G$-9MLU^gm1? zrc-^V7erJMuC*W)XsTi~X2Db4KpK>}DFqi);#!0JiKk*5aS{pKxz^**f*xqbrq5IB zMbG-b8xN4PnD%~X!5t5t#1ERUoiqX*J|vASnI*L-24)4mT~it*R+j_p8VK$L)DmBZ z)Dwi)O}pkGpu+07y8Ep@V~88%f;V4#?Ya5X@$p8xT+{~KnS!PafIW=(cmzt2^*7_D(L-dDS=>Ty-9CR^NWO`9Cn zn%7mW|9kQIb4Vy8(}}Ce;<|I4>0;*gj5Q4XBCS~k2l_T8qp^Xoi2y>kn4T65HlIIQ>eF?Gerz*Q zUz3%>ZtK~wilD-fGpQc2NHE%RyRf*<{e|7_#)&-d^@95lN}2JBYbz_7;X91GVC6KWNMv73tHA_5NFBra#K0v#-W(S9#3t-AS{=&~T z83E$~q^Y<;DFFxU>kb&cm=lSY|KJ^JI7GGA?;jqXk;}cQP{ddbSCA-0ysjUT-{63n zIGU#0@GYHH76R#)9c7B_g>@G}CjC2p@w+(Pwqz|uDX1B3~5y?CBvQQ*|m1u?M z5$56g-w~Bcg2PCoSh-^_F|_0C!y$9aVI&3^&ybAd>u2Rer`^f_^+ECzM&35lDR&He z<@`&jEvFoxkg6evvg^v~9%V}X%XoZ2EY|sM_&Ym=f0(N_>M)>JTj@xm&6Q9`HH50o z2}sM{PQ8aCHsytLw$U{k|H1TuGgzo6r(O_ zR^ogsxS(6yF{4dl_RX-GEHlYcuWQ6*bBwMtbS!u3oh$0sI&g8JZ|09cLaU)~hD8_w zl$9!!O!gECnA6=cn!we8HpM> zUicS09~5%9V^kpt8qJ8!O%$D8d$fJc642tNex#x>4FHrM*oxN8hCzZ^WV1B%2RbFK zy$VVfMClJW7ecrKhkz1}=wCfC;=&(@k=Dd_TAHCe+@( zeSO#3HDT5uZu@_%y$4_$RrWocH={BtquzUUlWn=lvMgDWWlM5*Y^V3$dq^W8l#oIS zp#=hg0D({wU@2L8FAD*Fgx-5ymQWU!X1#p(jU?L%Vd1}g_IgodN3mYH<=k`69Xqbb z=rV?axXwpO(~1~1uVD1pf-yXnDFmw1wQhk8&0bGF z?)~YfH&V6<)qE|?LhCC9<=&>2(r22QUPni;AH9rANf+t^Q2_hmd?OZE+aWzjI?X;{ zd6f~C7Z~P~NQW5hS(+C(bvboDV7Jg~z+tyf40%keI(AkQsiNbLDVOTGhzSR6)Rg z+DM^6+`DRN1j*qHiDW#+!oVy-8K{}*q@BfvT3Ly_8Vf6FwF$1XQ7%Jn{LW6G5~z~N z(a3|}&Kx~aPs81uSye?TqfqhQUB3y0E=iFtu$~BA&h3BGXai|Ii3f^wh!=ci&8kz- zFZh@Gt($9w3SQu}^|f0n@m}P-rK$~CZwyX0?)gtAqZPJ(hen?M(JeDjs9L1vhvG(* z-f+v2O;&la(ylDQD+R4*RtV(0($&ftreh|{dH-~*Z>?cGc3DP1fxC+>h6KFv&Jb}=H2F(A!qdf34pv3`u zO3nfa1k}WJz~ej`KyEy2Gq4WGK_OK-P>&D7!|cnR@GXKI2>|KV=fj49)0IC>1J^$P z6TkENr1JRNZ~gJ>Z>Da~T$G|NNXxX^)*ukVisNDlOmvB|!Ks}v{Q+biWl>pV)^NU7 z)G{GJm3VvFq3Ye<>+=^`(~G6b&jaG*2GL;Nj-$PXA#A@BNa)}&9-LMm?ghtR%5Gz!7`(#FVc>}W5;b+hy{D#>Au7V|y zG{d0oU~fb%wg?se#NwLn5Okz4a$jVIS5;b~1j*^L^@ZxPGG(dC@2A>I%1hq$;~yiD z(uBQ3CvNiMQJd z|B9vA%i59#g((eoHvpIH@0`?ZK5@z_4*7DrctjO%66D1zp#*mBu-$;n+?2goB#t7+ zkLwI4|II~GgwK%wuv1 zE4mxE&?IV}3|$wGl5u&5C8brR;v#8Lg-?bW(P(@l_q7slm4@}{BBBRf5HCh)d{3f$ zdn}f@D|%rZe?2FvC>z-<(2E;83Z&8K8tT=|@>c5RR#vA;*8rSS*dP`Q@oiCQ-RzNk zji_^Cr8Fv!&g+GX)IK>VF7foX!4#eLp4!sF(cLigt!vB+wV>%85|~kcv9%bT=i63T zSh#Yo09f*Z5|J4OCx2NJu8Gv559HAm#n52D_s;Ux;tSETN(X)r-M?bRm1}x+Rh8u` zpg^!LZ-Mf&D>Fg-0KCN)EEYyc%ScxiaPSvJ#z(b)pDLyTeFH8IW2t7cIm6Lz8ADJVE=Ogd~Fauxj>t2J&B`-#P3bhPM*qrosAyBF(j=l z=t@D))O>t-waBK1@xE$g|=4LA=*fs46T}78)Dqa&d7FG~4klsRQkE?IN?l*cY3x=Ftezj6kmt zh$$85=?Wl25i&*_O1^t;b+qOKNii5K_)F;E=SjczF4aH)k5W4lyY6vec0hM_!(x8E=b$TtD*Z(FF@#PWmW(6`041=+m zqIwq~$Gl;u9(#wriq>NaX=;;>vf}qryHH(I zW^p5}E%@hW7}JhZ!{=RjNFJa!`#C3<1| z?O^H%YM2!dB3kP+fz$^_O`tk{y30T!0GymGdZYrxfIAdCAA|-iA~-ryGlt*oKn8F$mL7;?P_LznKPv>Q>S8$z8kg>$+pc` z_2Va=c#e7?)8tG@oGwC!w3~$p1>j=^V(?E#j^Jh4{!<1wgJFE>THHVqU!evNcgC*KOssY8-a zB8$SbtU2SO>ha;`gNSqIYQ%{ZjI|^637#{|O zi(N2x;c2iJE~sTaMi+xcQgFgZ1ivC8{bWpSRu!HgSlqky0!Rcl1I`4;^5V`0K^Y+t z$?>>|Wg*d2*2V-uPkuESM z9Z(a6Wp#86s;Wo(>hW&myt*>BW5et-&`vxF&Czd|eKt~5#wxG=tRBwAH4tNr9Edp8 zpw!2$Q9fqmBymXEM$#m>L$6ZF%zgQJ8al0SUzr!&k5m5_8%Rpx{;Us3efBO z&q5b>bi6^plib%KYFB1HD(hwK(k7|?><0IoU?P_!=qkM&>< z?xYrOeKG;v|sXE_oNe7B0UZh?MS9+Ul^=t^b3 zGWSpyWfq`{;R?5`QD*s|T~<3G%~zcMuG%FK~fA;WQ_+eLZ`$xr=hFV35A`qcgRaZkq^%z0HZa`N6=~V@yCYjfR zE9Q8JD7JO%)YgVGmKT!8hUD%oda$j4qTr+o{=v{l4%0yFj$7U z^jZDuAO77XLgU=tv7@~P_n47~HKj8rIyCkPv#{6T>FY4+jO`;5NF#xk=reJ}Q(>wk z9G)KzzZ?oxgHXvsQcI0mrVZj~jaVt=mGYI^o2qH0R#Gq3X?9i!w9tnvG3ibV1hUdv ze*$JpRnpi)tmt6$pVu5Fz8JDg4!jw1 z5kR^HoO7;wm&-N=)$s@24GENv&p(fw_JwkJZYAMlO@5Ai013Sl-*HYV)lwz#l$sce z#8B$)?Pg7qm`H;*9zNXo&O4_-6XxuSMu8Hf0RhBySVbFSa+APb;9{Vcj1oaNpt8Uv z@cO(0ZwX+e_8B4abM+GtzY!)cN6N@h-zt$vP%D#^%L+;~pwFUm+r+qmvAJ!6a>i`8 zijXIYX2xR68XG^1Mr-jh78)EZiqg?-2AG$niFHu>q}F;ZYiMYW{?zzFW8>QuOII%S z6K#&j_8s94JVPf_*9I9m9Zy>nC53dUV*FJ>p+d#4JRd*$rojSzVlpz8S0JQdz=pjk zVqla4U46uu`B>;Kb~BZ1QCWcmcCz-^YXIFT2X@uS2_a>75DqQzUc`&%g+2LjdkJbr z4+Ye`Bz5C=(k=aWH&QQV%Ex3aaA)VHaQW2H=0?MasaSm})bvOyj=PJ!yafhErP#oqfITa@WXF2N|(;?F`#r5 zH0$MFsZcBs@c5jqA|+)q;hUUH;I4rACDdS|DY+LEDUn*l+I@p+*+uD)#xGIC`VV|=?B}|o(^4n;|N~QzKa@= zAfziVk~ByPN|BLBN@&uGs)UcHP%;If;*@>f)r*9XW-PsWo(oT+7$8RIq)_!$bm(e= zX1Q91iclpi&*DvK2Mrb53iGjE0cf6XVW5sMV^*hO%mz?i#^q3 za+;H^HK~5d>?d!5b^sF--gA4;rTDvNLjYup<8LDC{+B?wNlfch(uNT}t$#v~0|{YC z>kNA6OB1s~;SpN?ApYpFIYo)-?&QX>%mjTO zu2fI%GME1!2Mq-Y!8YpxNYNE6e@<1FAWBq_1d}AJ${#XBHVI;ioLp0O(X*9b4$6gB z;u#Lakq6FODrY)e^8mX?mpM~v3UCNza|&~rh?^S*nt3{&OOl5LfMnnaqD_Tc6rz8Q5ipa0~ean4S39*snqmOs~fJk zecZ^K_rwZe&55+GsH9R8FBs#4B}av*iznwz+cd&&q|@7eeR0o7)HXt@6SR$RH?O%Pu^o%Vd{YD%_+wck*Q7rl-r1CnT^T6T3-&CD- zVH-X7#qNE{m)W(+1W<3K2ug;*8dnJrmDBz=oxjW!!OPkIA!yS-;sLieP z)6j!XY*7JJA6udFI0@J!r$hX)8469L>Nu>C9DlIn1W_cN%-Loz7zWE#8gvcmW-w`u5ggHtFyaNow!Ap@dMfp9?U!Ock$yqROxv5U!m)GIFd-iM! z!_i{II_QJYLASEbD^dW4DnLlo=$Ly>4|LS6`rGP+P;PYTSS63B{fewkRdL9x5&avz zi(Lf?PHP0xWRq3S$Cpy>pD6(~ZeiHOz$9XxSSw{`cAT<~`bYXd*NAw)BpsCfaQ@CG>Vf5+818&4u?A3&zpXD_ToN-dRv4F32*oqCmOTweWa2nlgEYy)^A)NfNog2YWb?=RgyZL zL*|sQN|+bM7+?@F*sb_2STv^zFHfLF21k3^Y%#ZXWd1EHGeiv)8uSjH z4_2<>*i-aDj)9(!HS_Zoe1M##!LxG_%D}S2R*~(3KMzc-Ac!M3l?|THr-poj{|#0H zq1Xqrq)G6?i_r`FFQn)t{pYn)Z)OU7)cVX>TI!BWXD1D+P=HpgZHJE|=)256sIxNb z(aq(~mPSpPHr|3qLFLO}msB^HLe;Y>wAw=SEnJ(O51taW&}>b{8>HT?!uOP4T7|~$ z96z4wcoch|q3T1S((@m6D@w~jxYl1jfs}=$JcC=Kb63fb2Gjb9qOQWZ?P#cF<0dqkrxu{GAKN|m9;Oq@(n7NHn^ zHC~KfsL&V$603wSQ+=iOwl-+Myvtz%{o8__?_LW7&ozST-T(KED;`ivJTiT}y$Ijp zF~u5mC5C7t^;9!n*o4-o9BnDH*4)yb`9KItt5Hpn0u&unXiZ4xl)EHSD1qjWytH{- zxdvRf3tTq~AnC7Hu;(!NJqpZd#*#e+HxG&;5e|L~3;5A{u_9C>B zsb4vNH(J__-^J^x`!dPO;lt4ta5~ZV31g*C1!0`Jyn1B+JJf5L2Ro?y`o9N5Sq!Yp zCvpf2kZW^uFgViP0ECx47P(}dE+pg&a8_XJ0EXr;K)`yu5W8Lb(MRb1Pe1JshR#cX z5`OXM?iXxJZaxLNRr%x2ThwI|wX14o?pp&$7PEBsgbKw@q{|4X+n&Xiwl>NQxD|@m z>r3PyCnPc3aNVTsW7S|J#OkJL8+s`T-kaLAe(^+)*q|3WM@(O|ssV((EGaa`qsP+$ zZK(y=@^)Ip`QiL3lF6H8xwV8fJ7Fz3x)?_*fi)#q67kNp^t%4D(PeFIy_H3?7F5wJ zzhc(7f1p&(~{3;Ea=0a%4UF`R*BeX_X2A1 z0KTUY$z$Q@yVyjJP7D(d8wqIEb~*uOjLc6O4A2NcW*7{E$@MYijZ!|}ALOzOhGu+N zZt~lb&+Mfn5FEaZQPfX=0p3$k?Q?X!&WL76vo6>7owS z3;b$)ajYhv*okAvC$xv6M`kx-S~jS#)Ef9u!n zs=&Olfc=PirugM(QhWPb1-|)9s==;QEtrmv!P&Y3A4L-~MmwR;WZ&5@sXLaJjT_Z& z6TyTgQ#{?`UW(i4Enx|a9h5j&z?BMB_(nTYCGfnX(QuSYCJE6oPjAu!mX|NH*Ms93 zHZzytkXyq+#E`&nHDKmpW?Dj2iPf=@*qS{1&9DoZ>Qf4b>P!Ib-NIlo%0(+K>VuDS(( zSU$2@L*QX!_ly7(Q#{8G(R(;^^%-LZ*?i4!tG`ZCK*MgiNXw zh!s*n<{xSM$jMM&(=zD|pNDi_K?C2jrN$DJ2BkIl#)w>lVo1F+!a86Qg1*>^gr4GA z3o3yZ!|etlV+E(DMj7c!0MDjse=`2 z4ApvkM+v|{c+FRlU<0giJyagn(qXs-)&Zm}49AFwo06m<2X9xv;%5IhWQoDI0*0D1 z7M!|2V6Fs7%Np!#;7TqGiFwFp_UMrdGm`puhNa$1LpQ!z%{mO)?lL41mG;WzDuGNZ z!soR}s;2B+3Gx7o&l~0YigYK#*DUH|ux~Btw9i+%WOa}d2?EPzOuT2P|SWU zM&rw5tYR21AAu8&^d++`HvB$nW zc#wb7O;~x;O@iyMr&cCuzJN~ignSz7z2yrlXo!VBPuqu38>dd!Vmgswh$7pBnI|sd%*^RA;O+hQe*-_E<;@vtTsA2(?j@ z`3(By12f!04c|F>7yeNX#9Er=W>g4Bp`0x3-??cB`7oLk&WQpj@k*osM(EqzAtY&1 zeo2Kx9)siON_cr@9ajiDZncH5qQ6~dKfR@YHJX3m0CMl!$G_+z{`u!;Uc2x@{)HDF zMB~Gsg|@UW-Mt&_Y(hM~kWTP~0xI*d$2XGfW-#Q%v3|JVlI9c=>AbWW0 z#MEbV%)zrc=)g%m5w13vNj0g5xM9FOS6Cj*NZl^Mpjm|z$#IY2XcAXKavFlZKD>WF zb^Z0{c#G%z?3U)lzGijvBKqw9b!go^_q@D+zu?L%`TO?aYwNA!W(QyhWz~$4=r+^H z*|n^h3ChH2D}Lwja=+fA^~4v5(q><1xE|~BDc0e>)uVK zE1pk%kg=m=dpmWoGFF9xWg4dh<{X-WG`_|XM(6qC!9<`jFiKxBHm!#NKec{>ly8rd?51rV@l(3&bKA!45n(Xm8;$=}`@05E)PyyYN36`r^or z$3T`-2?6pA$7Oxl<4S_N5O}Bjc-{%wP;amfIcWJv$V@Ii99n=CNhm=g)5Tnp=gc%2%8;0dsAi>E&yxkg5<{A21dz3(ZrZgggLm#k7hFII&O48P!3C$qDS?O= z{;hEZj{%QCf|=|UMtt-Ew(o-p zZf~7I6=z;6rdD-fS36R5b@`(8dv6`hSlE%bTsCU#8|z?7>YlM$F>Xy6>rr}o=QKm+Py|8qVF(wp(+aa9`sEx=VJw$9 z`ItS*~)L9CO4)YuV0Nnx0=-yZO8(isd(M zU55|w?axAoY0KD3J)VFjv^<~M+}3uG;IrsQqLPifVOc++CZ{C^uSufdLB&fTGP{&T zA+J`PSxnm5&_PNn70T>srNOAA!wqVOQ7m(@VvD1HL!+f$ULe(5RT6+5cY!?qW3&&~ zAW2%C!iSovZ!f_=J-rN}bWA9h(rrDqo(m8EbZff*pNv)`6uNEH-!p2lQlsXU=n%lL zSs@q$H)$YC1R^J$+f1^Nuz`bxK~5SCp3E*21W;LjM)E{>mKP{#ObY>>&E2Xa3KyMaT-r-rZs8E4V_@@@&$Gy=We1PK$O3zQvk{zcssDY zgKvl9#gh)md;l2Cw?mScJlEvJnZ6+hgE$hhFnN43Pi_GnRWg1Om zB?aZn5TM@IDdm1cqQ%1)MYd>-vQQ$eR+nm`pf4uEf2%4Q(WVP((tTKuW~Sdr?o6lW z6LrKG+J)!WlSiwI3Wuk3rP^e-IcDvfTmjlc!lu*Edr5R=6Cf9zHYWr9YsGR1`x)B6 za};zZO)#@qA8)pTrW{+lv`}G)r5rbu=p#{cIjFngtMGIG1{sny_%<{bR%rA5e^>W|-2sjJ0}~ z@v)#>uj1A79b@XuerWDxTz-!_l5$HeVvq;aPEFd+n8{OWn5ir8BeFra$0Z77l^0SP zV~LQ(i<+C)5_xl4p2Vl(?ZB(Li(1u)yQ0XgE*jl!^O#$E#0p1i%AzV+-e)KrJKAM- zj~S1ud?V9(k%P7LPOW%SviqY}n03aFzaVNl8!s_hp=Qi_WB~eqgqzSi1iz>R5(p_a zv4B>&0cfx1<}zd{Q{#bgw;0aoK#KBP7?B?M9#_tTOgSGo@pHE@zwUVhmOsCFAd=eE z!Z$^hOc0u+qh{A?>y+{7%~CVdIwzr~3(IGXwU$`M%yhN#jKSG`Ak5G{p+fyk%uuDT zmN{&;h&f`aP!zcPKS%ZHTbnIp=286DU;9$2wM4oTEe$B#4pE)R=2FxsbC1x?Q}(W# z=#+WHmY#*%TN0=AsKs8HVe+Qo;Ggvk4W_U;9z(jZ+ZS}1VQh-NdD1$stDwhX)zk*@ zG;h&Jt3z8?FU{{sGwz8}A8^ZAZ`IXQ5SLktXWDc%l`4;>IskPgE1cB(=q|39k*Bt1 z5r;Z(-6?R}T(|?F%t`KZ-Z7I86e!GstKKF zb)&YBX=XgII4^vQf29`TyU^75_&9ziUYDR+GmEM7zm1*p(v7oc!;qOrFvV8O3Ja7$ zWpUA7ZG82tLQ-CKj+qPH!fBJv)Cx(A7hr}*Ap8^MQ02kEFYi&t0jRSGBwu%tI0B*> zF8dXN^#U&f2LcGNWKFmjINMyGO^@^TF@Haaw@bPGtOxFVHzemEVt+;PdPx=ChMWXi4((rc|5<0#=nlUb?&}6eCbgMLVNgT$d1h<}rKdfA_ z<`n3FlhKh2E{Gy)=w8rXvU@vBz@{;#EI5iUhG6D#+7C)VbPJx|j4rA!FFQ7@{MYib z2X>xM-CNb_m%)Tpi95JVZEVmQbn!#I3Kq18VMrULbeoaBPVF$m1XYQ|;sn^V01o%y z%xXF8X8{E9iQ{4cfIJ{<&v~XHWgN0`z;Wm9w+edWWi)|B&`)ISl$!kClbxNJ??3yj z$?t3q%B$tIjrHxCP-_{?6cUxCs-Kd{Dvk4ZPl6o~O}KD|_S#O7R;LxW0p(FmUD<~J zubo=lKbPuHU+uTIwb*Ly?VV^JJMHeh5m1d61TQ$)NGl$|?;ME{(rM%&BspNOUb<{n zVbPqWOX1oQj^_cOj|qXGV+ESAAL#onIT(!4Z-KqtmoMJ|a!PXID4jlhdPaeoT64MomnuG-} z#?%0#3my20N?T){vPKb%Q@yR$CTmbtP*;4bOE2a`XuZb7T)ZG^MtZN4XuOPV? zeGQ_9p64>Cn;1+XiKvR2#Rh{UAvNf!u32~t61@(W)qU!k$Knf1_-rgpTO zb>=SIQlJY2bUqyn#8XlgBt+V<&+tiNX@!3htT@hJb}-CN4V$)$zRE0_hCPEiwsSNSedt!)_qu z5TgJoL)I{GP}=YODSz<5mU6a}tS>PGoQsE73UcRfu*k}_Tzbh!XWrG+vewLN)9I!C zJJCZO9TPg`UU`qQ==_+m!eFjagf!7YR}5+6#&W&cFAr%V1GV4HIn;Okb`j3yB@drZ^^8Su}3L#2=A5Bcbbt3@-T)1xpm?GvD}e@^Bbg5cn%CS?oEmxqz_?zu`@ zGkNPoGow`t3_YuQ#yge3t}alOmaU4cia>>G1e#PZqQmCs>;>~t1R}wQ=rTgA?24n?QCIN1SI5`P!n`= zqE3}T-xH@mGNVhvit*3mR0YarnXRG99uF!5irQE~l_MEe1(fwo)QhQ13QWN3kg0fq>+pF0_T%c0`U{w4p<0m4?N7ONGiUs%Bhj zzt$(MmJ~f&zx(D4)GI7Gg%c@;MC)`7Ld)3nA^L+xDoDOc<7DfM-7Y;YeZ6n@NySgnp zYY#rE^^UaZZDTeI)LKbIqSuIE-5qdCALiCw3ofb*BFemG4Pl&s+dZyeaFV6WEnPOx z0T4I;XV|iAt^?Af9|IEl>kPSZ5GJ!yG2e&X^#%*eS9>aynM2chY3YXYX&&A~T*`ss5Z zK(7p!K?5(GBa!ecBB;cjBbQw?(XVuiDnw3c8*7!;OLXQktxr-RF8O=S=1aSHi{BhU z*Y&>z9fdvAfz0bE>K$@OKnM*E36Z-RI3)8*Nqk2R$xkZhaEq2(o`T^PI4qfOHJ(v+ zEjc7|jW{f~NdZo9Lc;biBy3Kuj6&G&&73CL41jD_aEk&Gb=lz%2=#ISQ|5W z(IYK*GrABjys@b%^Pg8=eWIRKD(gxCMsR|R(K~gVUa$%#+F6;=K8;P_=UYW>GMh9c z(W^^Ak+xi5Jy3q?mL!_`a2qYkG@9)aV`D_D;HCOJ`i3C&VCFmEYd@GocS7xX8Z;+` zv%R4(BoF|w$MKG;#mncF@L>W~-R2$9@74BBxO&~lAusN;$Q`3IpXHv}&VwF#K(|Si z$^p4d_6kY?-XrY=jS#?$1#RcKAU&GJ#JF`Sry%3tlYj-LyhApdHTr+m-hn|y50Htw zXZeeVgYa=#zz-8f~4DFovO>BqTit$`~|&Tuj(pgkA5IC5O>A!iZDkJ%7| z%kP4Nh%}N7GoTPd9b@NC1DjH%w4} zU>vhyti&puxM{ovkNE7fmm9gMNt}xjiG|-n$A;4aO}Gq2>+nSfIEEPLt)i-~z@ztyi0pyY!5R$VYOHP^R110<8*WZ?0oiiu+=ztYbXvGa; zty%NyyJRHQH{9a#VP}9VKfV(Dc8$m>=>$I>k?2g7V0Q!Jl0$)W zF7HC^mu#t{o`~7%%b`)NEORuWN50HbnF)zVY)j(vOdKU(nT23rp@ z=Uv)YI`2rk!9HdiU#0|Fvq~up7y@gS`E0&Z)>4z$kymaF2;>TW#aS2k)GnGc+D7h{ zd)m^qk^Wmj&PUAixfSiRPN~=QTyt>)Vq`E^+vJtIC9Fcq2w>mHAo)jg9#IG30cj!~ z&lQQYvPYbSBE_{r(w&rVFD4ra1sP5Qt(KEeAR1^SHih_YP(mSpFZh2PYW!E{06U7F zMX%zLIp2I!kXBYy5uyKbANy4cqInXYOu(1W0*I<4R+a}WW5&e7EI+wLB4Ms+GM0&2 zm=bLM;Di4oV*$bt#4+G5M9jay`N9nYfCj+Q@s;3wtKblHfI15VbEXOn1aacxdun&= z9nR~xY%`l7edL zXHC%*m)T)7R~*X3*v^vF$2+@5*)Qyr^;Tjn+GxlFBiDP;DY6K2O$@31d~Lz z3aatk%+ljxY0!v-`!Yzu$@gpiiM`3kH^Q6)&u{C1sv_ z4-$(D;=p?1OBF01|B{9|vCSc&odvN$QEftQff)}*%zNjZ!{Ba|Fs=bEC-j*KKO>jZ z%!eHYceAn;f}xN^r-R^#ses@b+>I21qB{d*UzU9|irUk%JDp~g{3Tb+f^Yz|9wE3c zmh&h+BOQIq&c|mTzUT5VYh?oG-|_&mDc!wRt#xGlq+4=wzjG3+rx8aK;CI+zCE$0S zfXkD`Ckh~YD~Bu81=$Vh9$W*1XovNYSP;%Hff}=A14z~ejULJAvMDkAz~KGjdilv! z0tcmoxIBQTtv+R@W{4e z-!$m{5>C2w0VL7B`?fP`h2XqLs_=`|+G1cf7gBmivB1dkp$LzS~NX@A8kU9t?~AB*o0~o&lHIQ zre16(1H@!xwvv)c>Fur1cF}Pur8@hb)ozhqE40nKW_iiR2a6cs238!oIH7a)Sk1OR zs^V3RoTgadc2SxVH<&&vlq??u2+sWs5_y-oUgYS1#%JmzA{?rvI#7ZZ#oO)uN^w%Nrq{b6^ImK z#(D=(^J6er3_tYJOMfF{7bC>S!H5hI^I`)RwE-R7ZD)G@3Y)M}Xl2u^MH+?G*@p(Q4~q=451G9$^PLhRH?@8AX1*Le znanJHA_X}rDIDK4q+sO9aW^|4f&+_22*TO4j4NyZc7>rAZ}2+(i6rAm^l=LBZ#vxC zdOa6RUG((Re`}C|0V<`XBsx$&9p*;K!1OA}BVf*mT~sc#Dca>$Sx~Gu_~Z`IAG2Lo zxo$_AH}fA|)C$m+T!gn%=YsI%_Ez*7NH{f^;e^tp2&AGO#oH^FlB|K1lB}WO2bH7K zq_cD*=Rnqwdu9h&mPS|>Ff1O3rk(`7d16>dt&)gE6G1E@gtQ1Gv4FfaGl!THu#!W~ zv#~6g1n|=EI9F4LBO0Y)l*u3G`njx()I;)xqP*3~8+ytJV|qGF5nWr~6p(E>_qm{J z!t83sAgP==rrv(WWQkrd{S5cbQfZ~3wbLz70};Nqrc{<``}ETzF~}+EN#@Hr-=i_k z`Kn2HD_Wh4yZ~<&7}qX>QQ6+XJbB6Tc|HM4 zV%+Tw17HgNBC-Cr=6-0Ze1N_V%zc)9NXT4eT*O3#A}0+wti%nIU4ca>?2JE=RQ%WI zhvaZ?qGwb1!Dbf`8AH(ge){DtC`o0$`vXXUKvEFZ3_uD1O-ZT%&tfq-Oi!30C(^_vTy{}+{UrxR^K_DowGZR$Pc4PF;~gUuMea%M`6U*Hu7B$cH|j8R@C8dd(IX zO3q12ak$L=cvr=eC38whLRP!soJb`tk_zJ7s0D%6(P`CNha<0|c%+qejm>!INGz1_TyOSgxp0|yr@RN_LbQrl23Qt+C)?V8Fm zbY{TO5YkH=VnetAU9NKVSoO9ME#w&gSr9dQo&iM7A7dEL76;5woZE)0AWTp~m{1HQ zsI2gJcKG6Ca*F>ahfm-G0-fbadf6Bo`0wOGkeHF&`U#D4W!9y`+#a#;Xk4JmV*=ud zWqKFCitkjk%goXS$XLp?Zb6mM0T=nTb}NbdlXG#jVklQ=bz81-mt5k zTJUl=^=u{vldN*+A!MSD;B%`W0?wj`o3}^5P&+!{l6Rp3ML{>`zdu#mJFGfe=Obyf zt_iKq*g@iKGJP3ayR3+{wzf}hz(;9`R2Y_M7^vR4bBQH!VMBq|DUe(eMaPSWT{-B) zIHv>e{P;@`P2a~~`rk8?-dysZUACdRsPuoq1@akCzCWM(F=`E!N}43TT6_(~WPZXg zfB50kBx%ec2hi~QF_$z#P)iQ%s7kemsbO4f2P7$Qa4i*jpSW5C<26Y0Dr-_m{B_#q zqUlvKmAvRj9z*rc3Yv_RNX%E4IhBdtQJ$u{)6Qy?fgSUq(`klYv}D-v!&&JvE z%)Xk9mvqnzUhRF@STt#z$LbzGm69YE|KYj*NevON-rhTyPJTnqwZSnOMiQDuv`r`L znpjL9PAm%3HGOU`QYOuTJRoMNP`px)$EcqJ0K80h#T zY|c)r+uDm)5j-NwnnfJQc>o9-q=u!1aD}LD1%aB@&57mC;VczYc!pdPU62#Q&Bk?v zx$^&qi+mA%jg@Fdi^gCW5u@ZxWiKlexZFBJtcQ-_ypAqOLS`P+K7uEu08Ln9;#!{j(T@9T8Ss3Nq8?k{nC;N zqun5j#IvQ^-Iw6^xe3!Qn9HH|x!?Q~tNwd;VLKn>5~2k5=4|}U^wr$5=LH#yIY~7_ zHW-&Zz=RnzV63?+(f@3&^5HbfpiNL|0J$>*x<7@VZ@wp)%zX6+A>Hp*iMCwUMK5~0 zkJ2Zu1$`_Ko)l%irh@&4X(w5wzfvh`ASgQvnc4x6E6m>V2k(*r2IHg(W2uA%tg#w_w zuh17*uc4HguTM!P-%X{CwCU@@CZWkBw$#@=-(-r^C|l)K^%;9$%brf&;&(=HCCL9C zLj0tG$l>@3q>h+cs6cK^Z^IaV*k+vp{XO>xLUU2Aw*8 zA_x3E|C&Fr6m&Y^&*zeH@o0&R_1mYcK06^WNMh@jj5gtZ@0vYhSQ9gL@A{IRZEe05 z?sMSa_lc{4%nr}c@YW0QL5&r>&aPpK_$nAxh5La+OX6{%yGrFXN* zEg?p&;#ZuCn-eO}@K%epy&F9Z_o2=N`trFsb7JZ#NYanPE>x~=>+#ry3bs`Pl~d9N z9%hYVh;WEz@x3%@!O%d5Rkr6eKG4@Q4eCy3pR~&UClL#BA+nbukAV<_GXTVM>3&{U z4D3FM@BuI^A(X^`Hy1&k@zP6&A~1#?u8LIXtPv?*tS8_GneS=0FvH8$4nd{BDs6+n zJ0#ZY%G7p2g~0j&CC_~81IO0uMBgUy#fkId@tyJb#(=`d4eKamH`WSR+F;R3~?J!Z6E^tT79-n4Z8}D;F2Ct3;^f7mgoSxEOyd6~KUA zTBEdVG$M`OAdvB?>4+ZUF`_Y4E>jWWq0eqm6eKN-d(I z;R*faEv%JoliLx~47DP;O3GTaswOYts>Efif-loBm!+LM=JElmntc{F9653@3UhtJ zIS5cJeEzsg^?MLt#oBEt-pnUE(2O{`Cb28}b&T?tj!f&sPS)Hzy$WC9pXK(>>d-RH zW2#sQP)%u>N5-RI3r0<*&Xrtvq)DjN@arF9;9AA9kf1kP+kM`&cnr3_qPd3-lX4k7<7`7(>fa~+I-lz04L z0px3OLcS{c_tVB*fbsk<> ztM`J4jeA!}Y2r0dhWDfTfWAiVv}X$5efQZofRgp#;)G79iZGw&TpR#qP!-8iM6~)` zFaSk(4k^2-`s_zG2iq9{s<{Shs`?W z)NQSNow(_&Wn+vuW1WBH9HCOdpL_LUdlmW{?k=K+;bG;Z`Rw-AR_rY&G#^sQ()c8P zN%7THr|)d#&v_0q@;_pnpdWIWu~|9l!YZLs$uHX|Y-pe~?Q14BX;`;dS>HD&>J2R# ztrzMIBFnVZ5&U5N-9w>bxZYkPcbm*O^OHaEa-1I#9b zOLwx(`I9+%-s}w|g0OP{r;*wg30ZPzHn*qnqXZt|ieUMQvmVSZhfwE!a2tflQK%ad zNLfIN`X`X7ei!+KoEnhN9=f1KsnsNFD6v>zs&EU{54N^G7Gcc>K~$hOp_wMOpnRX*!&U%OFF<4}EGMgEK6LQ<0rF*z&(g@*6IdnTU14Dgm?xvjyqZCeVLpd7Y z5b}9$!3R}nvXKT?cKq#K{gc5>{xqOtL=h=TG(=ua$}}pdU&$F4v78shO-(jJTXjTH zMZLDPP#TpK__jnG;}=C3GaH^aCKBA-Au}`GnBF>W?l(%tB;%z+4$_=68n)t*=HKDboe3^__ywqWE z_q2l|NoOB*u|9dm{6eW!;+nQf)O%`$#38TWGQJjWZUaHnI37*5=mYVj4<-s{i#~v* znf1pNeR9uaSsg4CeH2_g`Bct85+&MdFpy-+@_pj70RcE?*i|RLg?SU14GZ%o@^>rt zuyOhL5{MnpT|h|HT%kH!MiPSLVm(#M@vK2|kt!U-lCy2MgiH|NZX|)*);;^|y>+ZY zS?i-DB;%LA7=-mVFm{Q67YEu(g`>2o@e9JD;;K>!Pb{Qt^HOVPb{f%}wZ(H5 zRYT>ja`t%K2OYb7sST!_LvyaroOH@H@{?Ir2=FDXDj`qeJ81Sa!ItjqOi9}VH1=JOyZ=> z!qxyKsYq$#m+-CEHa|3jH|f4s+8w<(mie`j`Un2nY$ahQ^ajC)kU>}Tyq3BOwOA)q zmQ`pozv6d3;XbJMNW?=nh30Crgk!tCiYv{MG?7%xmG(}v1`OvQ$5sVp33z5J;6o9q zi6jhUwsLk$j?cpfE$0+)dMAxt{@mJfl3qjNNFsfH+^lbCz{rDBXTJ5;Gr&V4S(sD+ zL=4r3A%Wa(B9N)e&Wr}#5y-IZ(sr4H4N3LdQmsQ!!MCFW>GVtJXDrkaA%+^Fz#K(k z`~-ZRg&xO|JBC9l7#Hg^2P@Z~+rlFd$R9?Fzt2xj;yWSP%QSuzMc0oQv8A^+3_a*~ zv95$sW=`Q=zFZ}azyRc2SeVbn54&;L?XVZQ zc#ZST;LK}lkGD9GDsfZ8;lB`nlMR6%8vNlx;_|aGK$c5J4{3L$0b3%2ZT~XzP1y^5 zQ$|{fO(Q4o4|vvgz@W3%6|-cl&$apX**uMS()DX?ctaFTOJLiMpYhw8nokc%jKW*L z3hz$X7mN^^B%RZ>34X!wG*2gPXtwW(3#ELs-OQIdNiVF(sSwzJFhz}8JAj&XB*K%r!NG~ir1((pO`4^5evQCL=_!;9VkXOV{K2_heVV@PWHobT4 znkq?c4vNi8`Pzqr-8D+7QzY@$myc8e`3z=uP$1A|M{+nC|0{=z1HK4{3N9((vE9r8 zUxQsfDNc`VG62U5IWF6|C%1q9kGUI!i98tUUd^7T%m^yJ0Sm8(oXX zp&7yUU`K@R!Pg@j{_sd`XYCh%gnoSgUy>*&<<$Y-o1-1v2B18N&$5>xJIuE+SB@s+ z188dc4U7SzIwxF(d%P)HQu-i*&^{N&OE2>UnT_sbOyLf=$D zAw*muD!A$YW9>cQqbjrh@jUlVxzl^g^pctMJ~QdbWG0izOnM-c5IRVarqYXG0|gNT z1qBrqu!~*S?y?pvtS+wluB*G2weGsMU02P0_@C$AnKba--QWAi&oD_$!oBx-o^!tE zd%owK@-4fevH2Ta=#MdTlU+=HPc>3kn@e)#wemm-x4o+g{Z7jXA%VnF>IEQUmz@W2 z7pAVm`1N}9PgMYzcjsi>i%aS3dc3WXS_~)2ijP4@ueEg~9I}onxPexOMB63XrVpc;n_8n1}p zfBs9QC~~d7VG1~=o;^z~A2{Y;)*-hr-Iv33i`KW^dZ-?jv#tcn~hYPPAc- z`wm2(Xnea7-T1{9`2BiHGiTRKtHLicOjzG-j;)wrlzJ4l>6=rCl#xJk1qLL`y}-0{ zrD+h-0^a}=l*g2&+0_0XtI9cn{UTkOM!|567PHpUif4-e=0(V%(Ex(J6Q-v0azPD& zd8A`t6Q^S*vo|k*Jk}1-vXgvyArCTR~?!&=h=n^qc}Mu1PK->U{LuK0tB<`i~HldJ1$z-YlGS? zOMKc2sz%~yGb=1fe7)4#Xi}IWDCghfOP#w5WLqG_9;?=LO}Y%`6a$7JJHP>S;gfU+ z>;O5LQ4gsz(o~b5g;Wb&OGk9^MDRA;F*0KVIco_4DxYyCYnkEQGw=VG_02&3E8E&` zZZii>wQ83gzgnlylQu~6>@CK=S|~DRYTG-x^{3ot4#PLtAMraR zKgLx60sR1x8J8bZLudw54Bd`jmdJDYvAHjFP&eYY(3`rve!JEXt^s|1)ND0F12oyn z<6udY!up5Nu_nCmN2F`Kzmb|=KM+A{2dwXW&X|tVHqz(R)To3Och;*;yr6P_TSRDC(u)M?Uil8wi+0S zkzJb|RQufc{#uRO&eStD_YA6peZxWOP?5=p2T8i zV35>n|35Ie8V-rSG%5v6{GbcMWxf^OG^nV)0LH3Z!p${+Q$(cu+4xQ0+M5O$aQriG-I#}%^H$t@jJ@jrQOZ%e zaeFHTN&&iseb3g2&Z(=bJEsm!(cxFoo+4w8JXex!#}3-ivvHtN2PsNrsAqAkuw_NJ zj@0#71~zxUj_aW_W(yp#|93Hmf`~cHnIP%}X8;KnCrG>iBJ8o%kOaJtrAi+pz~Efq z!?)WaI`-i<@X&v1M7}g!%q@f;9=B-a|EZ75EL!cCUq;X@d{YH!aaaP{vGpi|pHrhN zqWGssMOL!Q%h=xfRnFLf>qRVr|sEsaW7dgeufAsu_tNeCBUhl4f6jN2PT6r zxaEW6nqL1gions7VEX&Ez4X#8ja*U+Y7Dqa`s1UYa#xAUNkF|i{giD`QBPD)x3nBT z2hDssNokv#uWfF|$Ekewt%YbBK1^P@Ko#OYw^*Q#VF$dr(N|czySjR3O$`V7|IJbO zWdQ~Z0EZ?S3?&^J8ai6fzEjm+4L0>w=q~>*WoT<#+u9n&uOt0eUws8=fiMpIlOJJR zM?d*Nc8=cNog`Woli}<4s#HF-iz&M235hnHWZJqgyFk; z(LK1&jppNi1pP|<&{|p|Tm~;OG%utBuUt3H`@p zYj2*FUL0=JINwg<49(dut_^TKS};>K>7-ifdQ71mhYnTXpXN6-R2=@;ukiQ-+9FLL zFNazz6xIj??E9|%fjoKM)LzF4rfX$Sxg16p$(q-4Y%b}>#^)}`2vmDk@u=*@MUWA` zI_m%r@i`e`I@|?&H{2SFqzXq*sSJ}Ip_~qxd)nOG>2W4*oQ2B-)Xo{mu$A7=^?!OGcyQ)Sy6&H-{BsiwRizakh{~k2_|k$2Nr%KD z%5G@!%Ksg`F`S3A;2*Rwu}W%%NWfd5N>>NsPtzZaWQ=uOlK**FP#dQ|B>f`!W~Q^j z>aB!q@fKLnTe9v1TKMs-d9uQR^;`GWikPR!F)nbfzal%irjuB{!7qS$W$=} z<=(+^O_6(9ybr&U7)THmxhL z6p&(3#(rd2S72vP8|2Eo0OTZ7Rq6sideq{Z>alvJ;eTmD_A-051#NLc4V_gV41ZLq z%FWZ%K(8>EBmZgf%xRrgnNwnjcJ=wu9|0a6R<`f0BymI8wibD6d#Ml_ZxwCnQQ6|z z8cV{iu_rA0?6#VJ2V~RR=*;@lk&UH=jdedXRLNvHGksh~M6P4n4$MpYLp}ophIy1P z90@}BQw>TjVyY`Lr~53B=ojooW@lx7a@a2Hp^Dg3b~J!8+FO^&)68kOK5>XgtSm^Q3wrrQM0h}I@-rL(c{jW?blHe$Gy(A#IT5vH_&Qj@8j zF59>xLC-tULDkUiTK0EU=%@O(VzCQiv2qZG{h;#3Eh=qsi9l(tF{ll7ul@NS|Da}Q z&9x?jsea;rYz^K!Q?<>&>0rff^J((J4^nM~0|cP?3C znlYpL^=fF34z(?x2m9-&e-S3d3JNSC*YcbfaaF9iU{N7-BoK^kMx+LA6!hWvtBfoh zxKU}X+AafF>gB)@p;CBOpA}hpg#lka=)q3JJ_J!8zw0!OW75 ze*B5y7HZ5_xNg&AiD1ci@y?k`^q&!RY6oxC95I=fV>i+&k@lFwBUi!>&^K7#s}u_d+8-y{rcav(%*3&7v73R(j)Zm|M@V+YQWl?;& zPiz)BXOw|))VXxwOGMGdIgCl-lz@J2LKf*`zZ}XJ zugy%qF+RdEWOsT}Ff4GGCOUH>G8c(Go&YQ{KZ^?f z&qxv$)^`}({s%|#-^Kg{tMRfS5VWUJ7mom_{vmvd2z~kyjoFLP27E~&^g(Oi+1xx3 z4nK?{0{m=$y-;a0lHviYMT}mS%8I2HMOdm6o9hrIF{xx`jWXmwjMz~wlgWiLEpx0! zTr}7%&@*j4xsUZDYi}?9OFzE)|Cj`%qA>|{S@OF?Qs_*9XiAo=m-vfv#7?&y&D*`Z z;8SX5kiDyt>aYIu)A*mypoP{#`w{#_#k$SwD!_wM%?A%OAtNn!x0uz&IxG8`j%kUj zBrwbclzq@gNGPdqayJb&=%qGBU7q?MskBilMJK^P{NHniHLJ8rno^pfVY1e51G1F_ zQ!kD3wWO~AKkOs|ZB&WE;(VZtc>4YBtcQ7gp5Y(@#CD`X8`*CoL~JJMkumgK?E(RC zlsKKD<+dCN$8;5-_Tx7M#7?00%WR{w?706Dy&)Ls%D#ul49!x~>Cr^`usf@-??oMZ z>%VAi{ir&3cQ0@hqRy@O?l6@7RD*-CMRj?aa+UW$c{wDdWWqpiTW6z8s}AQOnb=Xx zD2_o_P;Y@nsi34*nE)np6hsRxbMkFfsv>2Wt$O|SN9vSn(!q`gZNCK_lfz6{dZ&Zw z20KLTj;2is9X(`5Q#wa^Yw^lUVuBe@CDHd)cZJZd&|P8nb%+Fla-)RW@i+XDYQp9` zkq)5fGU`#2A!M)`swynDkj`ML!{_IkY>XsZBGMTA_`+-w1R%K!WcLbm_uN}9sLv~d z?ocH`18TeMkuH~}MDNp=p@Dw~)&7@+r$WP5A?d)~+y_HeNZHs(_J3?FPC7&pP2t|G z{b!HI$NBTj>SrRg3}hfSi^K&e?RUr?1U#1>xx=MJy~E#AA<{ZB)u_-oXVld0jEifa z0$?03IevUED0fMTHRz>+&|LMAImB(tl>!*pW(wb?_Zz8oE|D6le>nx-?j0@uc27oB7boqJEqYbkB z;jP>2|D}YYKMluD<@8t;q_d3*dbFv5of4T9b#jXo-L_;&)%)cQJ;AO@l*>Lx)#Cw^ z2%6r=bP_seFUG&y-_y}6(+T5!-lnxjU;V7e=pS@hJu~oMOgnyOfaenFrgzUc#uJ8%@)67J_oPL}bs`2Ln)2V(G-lT5n4sp&J|FOO2n zM!dBCw*mXa!F++1$s6cRp?O)`yKQ}vprvsRYPM0#`=7gk;z_WJsIkCK0kT^xI2j&Sg?wqMpmig}&)FUv>J z=_-68d^n7Do;-O{zh_|JW3#2QNDaPUmQ!45^}%Fi8BA6VHh-t}HdJUO4n~<@5pm=# zTHJ5YfVu+q5CxDy+1x)_lDyC^g(rxb?QIaIT>qB4mLprWXEtQ0X`>e9vU7R z?;WmcG=^cdM*<9v&;biRvNIq&A0cWp2m*eFU`NkDG-f|=yej*yh zUsh0L+@Dq{aj1}3s5T1~LXnV0^NRxKlmJ*L9M~1KHkfnF)rVz;UPdqSm&ou+s8I~K zL{KQ{_sK<-v^^g%sawA;Pniwg#q4dCYN!@kiJOa64sog2rYTa}L8oim7kzRTJ@{yX zdP-nihEPS&D1@mxJ!@qF-yt}?peGytU0%jnELeHd)*a*RssXHO9KnVa{%@xn?&AOie&_2!pjnVo2hY*7F zc_EvUZyL>qNJO3rsDdB|!U^+vPEfj=2+T-_R`4@pb@J)lKu*{s22+?Rg&^B-gwzbf z|Aex>U)7QvOaYXMk-hfDXle%%U0h+1Dox-S;d2tBqBoEb|NJ{L2!P<#dz+hK@1BrK zp)IjEB$Ntpuz?supdrL|D|7g}@4myoNAvIj1KJsi6-A4hgV1zFd#k=8!sXq;LFX+cnZ_`j-lbC}(*=HG4^zzVJ@`?StqY zN}AJQlUiF{Qv71Ynhh({3mA#amGslGgdBRVaHoJ^xk8SDIs*8i9W`*Dj3<*#S0xGQmue= zaa2kuiBnEHJwj-lBk=f@c}-w;+yM{pN+Kk6DrmLaE(#O{ME-n@AtK3%E$bB;B<=I- zTx&e$Dvd{7^<9%CSt+*3N@CKc?DjAW7%Fcy!}N)lY)~}*d?|7~2UaB3R|MusCYBl+ zjSeHSz4A&_r3g5Bazr`?xK0UtVr%n=AbPJ+v+G`Z=_XP?Sye!ilb~f{o*j+2I?`mP zHk}xA0O=_yW88<*$w`C@p9zIZ_TZaaT1t7oslOWv|jPda=69fLjDETUaO2i8aLrv>8C%==7%qDpAI@ zb@;^;+tzgY6MF8Dt_~S{$k%51hILRpfyd9E;gvUQA!)`-@9&2k3#X17Q;1CDqlBX) zURg{wBH6T@P>TCXm=jEM-$4NT@ON-~GxHrI?a7B@`t)HK&7O1MZd7s=egzqWMgBcF zEaJ@ZNxx^9KXeDjkUyxD=ey6{y1z@PmA38LGTVlqt*o4S@+3NW(l#_y6f#8pv|26B zsWlw`y8wz^t}HJfd>j5`W1JV#*1E-ZsXM5BeFz1ExB4$UGAK8RXWj+`QlwaAgANnf z_tI->Q}%Z+bvKj=yZtBZzD=rnbB3GvWvm}%8Hca-FmcS z{pBD$0QtARp@B9hmiAO>U|T54;xp>dukewd%WKOUg6Mlyd~2}~I`I{(E)R-|fknOs zANi@gzPvsNzPMpszStrPEUx1ISE^x7Oe4)v=(|?5Qe7HTmENGQwP;M$I-{W`2$6Z6 z6>8^U!V&3ZkWpAJDiG_0;cYt_(6_3*UedPW&pLOCRCeNzp)Lv7#m=iTRy9kMwFBt+ z*Jv}x0~6sE=@v9BDSK`f`1!7O#uh6Y7A%<}pAUFc=iiINj7=hyEnf==E^z zTc97q<6I@N8jc64Jqcz8)STt|(|4D#ndE*50_5%o_9MurOO^D8R3-cBH~BlBKA-dq zUj6IcCFtP>|KNC5EnOvbCx6F#PLUW^eAlxFOrnr%`5O-ye zHRzSo`7Zbxgwx#0>V{X<#GO9UdS@8dKnbUVh8di6KnULIjHRZE(Qk1Xl?@YxKE`6S z3om!TNQ$b-(E}~`Jt!f7xx3IV3VlKb^%0D6NZl|aDu&I_I=4ypd4+$#pKGoOvzud@ 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 z zNk92klHL;oI{jTBr~M%HL@7q~XP`LqDt)dNE;d(+bax`^It2V#;epCbtK}9yi)QX* z(!B9H)F@*vG!x~*?}(=pmmE_VHuB|`_XY~A&}lubnZv+A@X@dsQAvo9=C|hI%ZL&9 zmN1&GcxgS$%N-!N}*O7c9VQ!i9cg`2_c-QuM#QD^{J+%9qLOecN^giJ z=4$TUQuhDb}Fk(cRC>WHaj)Y72w_w{wjfknMf=Jwnjl3JUj zDVf7TzhKCYy5oWMUQToFhL3;$>9sj{(ssZNmBU+>_@jApc>sQ6#@VxopvqBbsj3=6 zQx!v8I2#b+!U>xEyzio_!9kStn+f6<37t!r;k(?(is>8~`Qwmb

    5Lf(poxmXoY=?6X(I>k^uPqIV|fdaMYT}5{)lZq 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

    H| z5fTNz2R6O7?gi61th!jh;OC^(lM;_M3bCGCo{flB91reb*XUs24RHf~_NWl@vXDD@ zWoIXtS&2feP+E2BdRR0jvql)5T%ne7M>ffQ-g=jxxI%ijJSua&SjQ+y6D3;^)0*iz z+W0WJkGrtz2L9*{Bx_-mJq=mwXHDnSol&=m`?u2|FOAnLm3+sJ$_=$}43B3o>DJVb z+ufF-pvKf<)EUz-=-Nvo6Bfu>rGvT;PqM5ZI&oBd;# zN%L6nfP`s=a7AIBr;y9%vUs{YodGj>NIWMN=~Akz@YhSo#`)yE_hcV^M1pCVuPZHq zzOvS*01j85y}>>GU*ibAh21Z;;DkQ(lov2(^HGrm9Lo*7TWmfcroybj7; zeM~Ee1e6d2z{ilHXAnb_i7fG3jsLVxI0rf`Tnf-?DB`2l;+L2M@0~9ZPuQ>NT=+qM z8VbyCV_-3_@RoyQSB&+`VItwS)>iJ{>FxJimNRu0C00c)tK&YJ>OT&NtzHkv45L#> zVP|=>E$c8Coaad7R9mMVs?|~zE-ml0*EOtc)*FcPK_Vrk*>xszXH@4`#1+2VfbXo( z%Vka<{BX{WKMdFy{xE?FsZLgv%EJ$@N*WA~ha^;KR=ug^qKmeq)1*`5>@pdw#d+N4 z-z-aBwT;7J4bUMi$nw@DBjICp|8C;avb5?GGIb`z(UcEH2=2$k$xKFMNjC19(~S z?5g<$@9Ov-CD0O75!|rCf5K~p6~D!QCTisVmwftLJ~_br6kAP`cfhYXWG44OCY$|X zF85)2=P>C%tCei}-~(k^n+(ewicoAv*1TaE*wpz)R^FZxM;{7oCa=ZA10A}0U3>ZK z)>iW82NpgIEtdYnYdG=gf7Z7nw_7Tl1N+hnQT&9dFUD#B#Q)xI1YT9c)ii7U?c(a8m7w| ztNHbGw)7xkhJP4cB>sfFYEfzgak_e>;zgHNzZN?(KYsb;ALSHUZG#V%>{^2|(=>M;}pt=ibIWMLiKyTpd%!f8QKfx4i(n;k%As`Bi91 zi@a_w48{%{qN=bmn)AMdZJA zQEySj%1_P)>drODAn!mvW%YGAxr>|o0Mys-it?(TP2_T0Q!`+EU0mU>eKaBt9sz!qR2U=9#Qp>>$FyB6Ho$vo>d0}5*;h|x)sO%Z_*@Rq*8K zGUSv;Tjsy~W@h6o2oWf*LhjP}daN49fLd+In6>8IspmATUtcfPX(h2mOQK};VYGxK z&8DQzZfKeI{?-s9bcy25h8e5((?QflQQFd~sCaw?g3}zF3ZBgVjxfsW*v<@{IREpX>SL(7^lEhJ5-V0 z&@#XorL_n0f@HG(BeEiyjGRoOtS4pCo7yEdbH?m4=i=usT=@5s z0eyZ9Z08LJFd4Yd)3>Ekx21_@->!oM6N3JVgRRE^=~xG2j38&`BY(KN5KZte2;zA= zh;kGa^Du3nsN)lb68Qv!Q7%TTA|32~svaEEmW6+q|K6MnaM|e`@bVYo3VNYLeYn<; zI<4L_;0=2Qf0GET-I|q}n9Sytt8>G^f0k-oCfe~NkQ#f&8%(!&!gFWZz4n=N$eQ{) zAtZ!fiF2;XX5%}l^tao|_nfx4&aO{3>0PO)3TTW9PrPntoUvG-LSkK;Fx4x-HJP={ zwIO3;gFdcrN|Be@+xeVXLB zUqr~6+zuHzi91&c?Wvbto`+wnQ?MqaPHud(QLU$2C>;z4#mdz$c*>Ka4688n(6S*H zxRR;;n$6n!`>$$-Xro1yh@5@)35L#v9hp;`y~lu@XkFP#!MeIK}iC@;+11#+2(`)hh{Ds^|7m|)Ue+GJ|fISkE5w7eKkXrxkAP(#tCw%qA7 zJMX(OrBfEz+?!5nn;EIfub`AlMRS&=<*cc_!_25PGbB9PeK9=<^S ztUCC=N{!@QZOV2I57WVcfqkDvU>Z3z z{J|;|EbOaTS|4(D7i{(R?%wk&EkOKS4E%~q=ni-T8c1dZ$Bi3Bz!8bv9jIF3Tbfjj z10x_b4(t7kXU=5XZOMeHOC4=`AAK|Va3(Z!l^TJk1s#Jhzb^Obr=J2kc`|o4wYD-y zuML?~E#{ahong!6eP1JlL<N`D?9t{K#f?ceMrUqH293dt2(KUmmB1nAa72_+!8EHdE{ z08h%Kfy7Pcwv+CEjS{F#wfROP*>;=5tqGf~?G6GvwVI7uhsvPsgjTbtUrl?<``)6D zm4v&mEY;5*@HdnUj0y-IL|3PyDOh$Ku{W&GhsVc8Qj5iG!K*5l32zF?<`75-Zwe(829y)FTGRaB3Gjaj&@g`6S~vy6`Y_0lj1lti z;NLXrv@Q(1{wOh9R30`IgW+r@zeZ`0Ym_9`!FpU)1yooo-;fUmiBzdIXtdxAdP78| z2p8ZQF-o0UDdqk;L}ZS_F-J&XJ=xs#Z8iz*?u92ln)W4@E{$~^-4xFQ&`Hx2)T4mc zB4xtX`0DoH%$a?Ty#oWRL3;gL=a1-2EJf46^Pph}gQ|S)t5<$~((hl~dtpier_l7> zTb_CoRAme_`4>#$GSkDHbC(O-cvL2K7ot?^YYtDrGpMb=u6#pL%BarrCuMTO;smkbx)_29L%B!>FUJtP7SF zlj6|O=TuweIr7VV{>D3JLBP^>;?~vTqj@_o=qT`K%ityv0;E*_;TU+hHT=Uln)ba( zDTc`ld6U;72O^kMXSBgX%=+esuvAh!#SsWT_CG`G#2JDYLUtgYA$$t=PEc`v+9LX` z34SwDv?7@*Zj3rkXJ&o%VEOG_4ilqA<<{xKMwq#6@Tp;rn36==ShvHXm`gQR zUM78m3a!Lu=ewshQI^&Pd@`S3<_~LME~{f>y)cbOQ5X&bQxuPO6YcK0ptI{cP4P}0 zJU<1=Cj~QY!!~$!|L{<^BQ_MR9P7}z$~_8`Wagr%xut=+`rY!CSM4q+j3#OOcX#eA z@)~_VtQ;JeINE|Zw)rqM8Z;TgSulxU8sMpcUn!`BR)Q^+{+fXNfk-CZMUVaGfu0XF zs%8r+xxu1z@=C5SppvTGY#B7W)G?23$GTHV>-Quv8Xk@UtT_|O!gYe=WMNq}Is|ym_unQWx!9d_IV3Cae>Dn%~zZhni0la3EHKF9q!;FgpwY zFB35M+Na^XBmQ-G(v$*Dh6pPt5A|IbI`kH$a994@IiQB|l?@&Fq}uIPOF%cIj$E2) zE|!w=)}n*E`lIjl{#vaDyWz+M^cEG`4FlK>kID#pTTrBSGead+-ZmOWrzr9gm@!HZ zRLUg$e)0F@q{MSMF^#iF38vcV$(KrK8mI|S@ITedDfl1ZZVK*)Jd0DC zF2@CmkMt>=nR+Q~&WIe525fI7@dO^pdzu)ZN6 zt52CY*Wd2wc>|P`^+Q8>&}arN^@iZyf=IzWDZ+wCX>IS$ZWua$Pv@@PXXoU4og{Vg z8K*FyCGMongD#^fDwT3w@6)%zu+4O$-c z?*Rtxku%OggQum1JB(>KTv)*i^6IvK&o)kI#?lTS^nviueZm#SF*P-aXb5J6P)-4X`kIcw@L-P}1Tqc+d4_JT z=4mVlB`^42T%s;w;}BX;m#YZP$B0MNqH*fFp`n-i`~UUHC)^p-nUx)%k{OSbAzo`? zBT-|X&q*L)i(_CaCMEGs$VqGpx_RGY)Q-y85@3ubBxFsny^t8 z7J2c>#wxJqBfU;I$oVjn^$|MHn<<=6G#ffFHXLB4riPzW4h#Ke)k~t$0V^cVNdVgg zFfQ)r7RsqYI3^4qqvn5lch9?Ob+a|+XbWK|3UOD2H%(r(NdqpeP3wY4lpNcyGD@v( zyHu|vnh+}uHc8z9w=@`IGcUZr{cG=Dr^5B5geuOiH$wqM3xm-6Ep7|#6HoE{P6){% z+du(mBOm}GL=0;>gOF`F8Y?o7uBEKhOBa@n=|=Li{-F_$ls)6Hn$#1uvNDCk#>l)L z>Z^UvYRxt{^x2S(K1r7*?0OD&Xx6NHEg*n|>%f2jjXGWz#JnekA5>=c-)}3wrBSu8 z!H}UfWU!b6IuHj$=3b3itx<$qd2uYFnkui-STP|d!E&hqb$GZ7!|;&-iW(_H zuDCgwDCi)Wh6&^F%nBxEOKix8X3y?-p56a$nTqW@j=q3fFtqcOqZ<`4k0W>94GTaS zP@x~D`{6Sz3DpB%rO1ylz=H*Ef^Qrj0BJ+eMK2`O5&j`9DGNejkWY&pgA;zPCJ`C< zsH#YKTB#5tQ49ODE_qqz`i$zWJpMGXa(}4|0WV0W*1*p9;TTb=68)@Qtr1wnEOxceU~I6!+pt6- z*=E(Gxoimf!M>~ZJw!|PeSUeF+}BU`3YWmwbzXaXq~DtWGk{ztZBz$Xi$W2y#aDOw zhX#8c@Ww~L4m?Wt@Q;w>hkwtSalByOd4vg$9lI0Z%?pXtq@Wn`OiZM}y4T_q5l=+} zFm0-FK)6Hp;wW%(3%9gH`ng9*mr9o;GRe~IgCV8Y`7gauLA0^(0kwcDpm(cGD#++ES_h^dFMZv8 z0{20oKr9kQ(zCn}vnq5NO)>=&rFwfUjR}oESzb?m_*Un|S6xwJjCyJNdArZbkT#=t zz-D(0>#7E(6X1*q1Eay&;ZqEZ9k$Yr0$A}VpV10c^eo(}5lq!;R%1%YAzYE%q$>h8 zmhTTm+)tz(@SzO9Yyv{+siDm1XLk<#P6Mtm>u3d6sB-E2QP35mS7X$I03hgdSmdN_ zXy_kE;g91|c#`V!m2zx1n<;SLr|QX-)Rt?G%s3cIsgkf>qbizA8pnMz$KpDRZo;@i zzCVF?NNB*1(b9x%iPiZ4B>eU+F4SBm{blY8M!C`zFxB@Y{YH*s+;34b7>U_zlTiw_OzZ8} zI~@99XxsfpjGAkq24I39M?Th&NDv!9=mcU7?yY`uYpXRLP^*J#O&~hF?d>1$93f<8 zznoRm!}9{v_?}<>t8!b>HD4Q4`{Fj_<^Tc5>7f>yE2l9q0G2{*1?|*Ns}URm%Xa8Q z;XBw+Uie#_$hu#oR&)Q85X7prnoVt~?B0VUG<=1~-NW2RW$udq>@EKZ5)WIu6TnoH zMeSns5u;LJ^lQu-#8NwT9*0d~?WYENAL*l7_x+A~rxKx?s<*1^{0>A(Ye*8@Du#(5 zmV_W78Z1OUpP`4U!541B4B$puj7Rw=K?hsKfItJ_djOtK7l?_s4Yj8V8dGPIdhT_Y z6aCA?@NmbFxuZXVgCHY4Sv>@%4rojwj|_Z*SaCFF?1~eM6@aubV8se!K&vpyH7Zh< zXT5HllDyG(O)q)B;-#gn5h2mK&1W3h|Ag?M-UOdsYjEcj2%Lu?st+T@W998f%^{5t!>{@(a6Ha#Z(jqk z+EgAxqz*DQQ<$~tv}%&<(+7P{73n5f?uGd9@I&OiA@0F}2zDP%sBPi=Hn{%iRq(BY z?Sp|;5FjTYKpqr1|jsdIFapWkiWn$%wQm^K&`|`_&9txC7-2I1>V$qUv zsL~J#!Fn|w#09UfVyOUkMd{Do+#vOR;q3ND^!N+`5xs<Pz+LaecZC%^+VQ}GS!t;+w4kOVRI-YwiK|HGMT76)ovwAN=@5N z@1k`~$F_Cv_M0NAL1kDxe_wtle@VM^tOU_+H2<)S7!+VNe@UGSAKbFV#09)S|0~Ee z3VLu(z?5ksmuB6qEoK;SW=`kGIaW{E;c^av*&l-l@}pjf*5*dW}QU-Y~*YUODd0-sl#y}un>dR1R+*wX^=N|b~MP-9X9eEwYvrO z|H^ZKc8VUvXVmCW6rdYpW9h=?zC<7s>E@p!g@=rk32I0qNBmUPJop-DD)sfhmen2rWA+J zXbLeO1{in~C#5WO1|8<4!8deH%4hrNR7XTvq8|lN-Jt_n3Xar-r6U2a+(Vw_+R2a9 z>a;eXD{5Uz4mP6pDP7qHsoBKDn{7-J8XR)ER@31B?%vgMyR!d`qsPqLZ&GjG#29tb zO+Pp(BFfTps7P!zZ!h#(@&_Roj{8ot}o+PSU(}`w3}XcQ>uy`TV&t zZAfJs-*U+U$2IRZ!aiYT=&VP!Rz1$cy!TW5lTc> zZ6s$s(6)X1acKo;UemgxH>O^m-tN^x-f9I8L^X%E^ks0)X5fm~!HlqZ0N3%N!n%Y^ zGD1it#n8?G}^#$__;@byPp`?Rz5t zD@bI7tw?m_AjS?y*7J1k7!czVZ9fMD~I>bupWr zx9`D$zi8DNYsT3M&?n>qY}lZJ!loJvn_(URW-cZ_;)d&xBJjotYc&s~DJ>H%!fvID zi?+s~qF)}Usp*LFg)>Y5o-`!pis@`E1uzriYGcj3|%$lJIWz0jEgFz`g)Kg zqaYbm^D*mU_SlBaJ#72tRS_v*Y}u<|b<5Z{chOIQ*-`;9#K~8*aXs@~P@U63c`*3| z+tNkxbO-)3xK~q65T@Ewrs#;><)UN`8cPUwc2W*OZ5wX7WSvZJWJ>F2&Y79I<76p( zKDzyg{1@D-#0(XP#Gc1jLC0_Z&J&k99)b~!Pm+4ACK)*Hs{58ptjZ&9zvw$|Ze^>t zCvR*ww)ZI70_D6ZZ-AkJO_R+dU(JESdeuCt;8d#RoB?+D@(u+Q0|Rr8;GSUTT-V8% zjMCu3Wu&!Gpl$1~UFTH?l*YosO+DOgr4nsfwP$15!Uom)!iux!eHJk$n@tH*OAB{x z#FWWc>#VsPH6UE#Lt0C4BD2AXJOS&Pr0_Y*6Lso<*vi9$P-Fx_W7aT@<>NIGiJrA< zEMPzwqth7Owluc@nSKH(z29w^S@v+bgt#v4jz&#?KCY8->l#!iLaK}LQtZ&w( zw9PQB09u%gG5}3)EYTgMBRjYNW#?LQ_U$Qh_*w_@!Yc*1^ z1)4A#Jp~iB#8-C&M@D+>+;whCy2ThUrn5f|23M?WR+wa--rl?o?mOb<4}jkg?>kb2 zAyYZ%eHS!wl6X+gc;ES&Hs-TcYzdWp^y?q>BW=ar>B>i;{_NG8l4b%VJjm4b5bh=N zI&zrx}M*_1aFsz!XT#5R$;XN#Xl=_;R+E3}%%z=pH07?qh-gS$^X(#?GuKKaIla)Va3_dvy1^@|bi@gox$lFO>1c7#=Ph(MI!kRb7{OYTEfYhkySHUb-WC2m1byVK! zp>C(G{hQ|I4Vs`zmmXTy*3`bDR}b6w6y{mS^nJr==&Q8-7xEXm|MCD#LwTV} zgMr+MS13NiZCJf5zy+Al>|vL8bbPd%kB#r6U#QAe#Y;8`;Rp1kVY-Xzf$c4|bXQ>T zps}Q@M)O+)dVp6YJ8|vOYV6j$v|P5dyBBY0m4TFU8|LqF%v{{am<{rV#WNjG^|RTS z%wkhSo4IXZ(GFd@+5$o;+omdFhEU1^C;*(P#G;Pv3|;;+63ecbCcI>QxUF zVZFPg;|E6y!rDL6Ixyl;@UG)wK1mjdP=ox=Z=8=gyEB{EJpje{}hfakW(sO~>{!QH>e;^rQ+4w5a)f)Svdfr-J35{58FozO#z2=^^xW zLZvzdBIHRq6IT=jfwt;E&k3WpKq&u1gc53NyQaN;d`xAts|!kt;bW?y@|qbO=ByHV zu1BTQHN&(m2Bv4orTe~ob5HRZwYt%qvS)w_0I;|=sKc0prvfN~5Odhfa>`Zt0X4t! z13In`%`7{0?xE3+@~-~Mlhk>Y7ag#En%^N0gR&fldo`6j2=c3mWE2&vgJ1Bv0SgQV zy_}QmypRmx#YFePs}_7Tf_e!TkjA-XFx*X=O7i`n@DOFMrtxCR-bj)%Ev7#l3Tj3==!8UHPz4Wx4;Sw z$DEZZ?z*Nm!SI?9Gt;}U1y~z|qO~Edgra5Y`OB%@s*7IlWlSb%$4?!(@@Awu;PjUe0QR$o*j)@$)F3LJ#`Upy%zr9GFz;YklU^6bh#tph+*=O{# zyZS!B>Ta8}BZ6f)9e7iu8EQ;gpczJiN$apG$hn!&_@K4TQl6bI$4|a?p%j)`%)NZe zhMB4Bo;_Zo*U684>Jn}h9zzoVBN8^OX8e(WVzxGxh_gng(@3DM0R@|R8(N*0^%w)v zewk-N+Fcg_JT*Zyo#J7647qYly|cIENI84Tf=5KDmjdM)+kfOPQATnsM{)4YSi*pi&h&}%NUuAJZJXJblKgrAahv))r()# zBX9!sz>w(SH^QC)8zgR=am$Q*C!fMJb5O;JAb%MkaYJN>~E!>uuy21Vj3^5S*6-vqV4*Ax(sm5%6EJ`po>U zEKkfGq_sMxFc|n%tEaoo(5Y`Na@PSiFV%YVnrydoFmqh1)}SSIGiVZ4MlL;VlcL7RA^#XRUI= z{sa&Al-axO-mQ#|l^%Eh$$<&9C%$x1JP%a0yjH;xo4_+Nx4x%xz(z4tvS7$Pnqro z(w8`i15;RBgw!uazqLRfZVQ+%{xF2oJn$?2&=9$=IfQ9c2BtIC%3kC&DqDF$gX0(n zs8cFu-Oz1rby({ns*=7ZYN`u8)njdU*^@DK$uL-Ftq=dS$JXg~r0TT=ZDX6)+8BF% zXsGg0Eu&(SUV~9#W7R$#NS3uLA){hENi`-^w7!??>i$s=^_D(1KkP1c*vyfQDNlEo z)exJ9Ut6tF{5o$l#O6j^g$}FT(OnL}U*J}79Ni#hR?C(qfDazc!?bi9#E7XCBv!WA z+KwR9KkSfHEC68mXFyRA+96mNe%=P5$qx!g>MboKv839*-3HC{QpJ zcqrhAtMNxovTz=glZ;6wQE)y|_@`k8&ljAcOr2CYm)HgeuYByW_j=W4iQVgzsUR&> zg|t9O^2j`4k1P~pxxdN0FHux^Vba2sX3=V`j16!PzkfsNMYXEYoVI0w;ia@A*;v8o zfEf#UKQLplG)*3O=9!Osuk0nabEi^Ibp49E-lWnd5=li z=Z@}!ltj)1J*2IgS{w=pUD{O*Ri3BYL8xKqs^|biH4_kG*tU)t1=eFcLbyvu!DgT; zN;3MI7v(2cz;|l{(nXx5Ceni|Yt_pfiGcZ1#c^laC;W6ToPbx zc6ngoilwt1)hj>n7zH#+-Pa*BD<@h zP<+Xf7!MMFDpLe_761V%n205gY%65XBEWSo{VTrlNInC(v$(_yA(a(4dkrOzgil0B zLHeMQjZ>tb0zS9khhZvwb&3Y2$+-jn09o%-tDRMfvMh>mRn=%z&tWAsw{llx?%Z#J zY`C;~KadTayO<_D+_-IY>5&WlnuylFboD|!kfks=$;$W_u2?q9 z2JOzDH7-9Q2K%mLbsIJ%yH8IjZ8A$~=-hNVw|Y?o-Y8SQep|HjxG3xp@~$Lj9qy@M z?uZ4}{s{wP1kAb-kP8v9hI0{33>HE7un1)b#DYn96&{5^b(y01Re?_e7Rf4Vtg^R` z?BgVZ)X6~FyBVgs3=XRD;T7vzpr@p1+4vD`&se7NuSWJr&65F*B{ylFIk9*z@-lQE*>)2L=@7@>XNV z=(4o3A(zxhaee02($Pos+B9X&$gmVJs-a#H&G#ghElU(OA?H<(Be8hCD3B4N*qap` zo!M{a{@YEM5_fg?pSgN3-N{|>@1A*$dcrszN=w_?@x8J=e;ASJ^^%^~!Nbe~`1m<` zHm^G@O#1GuI&I$0;eCQ+j<0T8CrE=;=RFO9TdZ!^F4=w_`v7esuae8Sqi0gN$}c2T zW`J8%zHC5h&#f4dIn@0Nnk)~Lm9QJq3(+62wt?SI0hw58_t<2Ci1x%@7!x(X1Sj3QSUuv<236+byzlgKuN#&6Y%81(T`Ifu@eu8^ zxXX5@bC5oKeH#OPduq}Z#BmdDe#itbNC8jSw44DR25)-Lo13P-FXmGzgCrQ8$a4{F0kx)n7(GkrnzEMq#Lfrh-j+7YJt22 zrj@v&OUzsOKLua`v4eSFwqKn9`+#Am(*~=S42k+;2)x7EKWBa%*lp6b6E}nm-Qjg7 z7A3H^uxrbar{S#Oj!xETmUKx>j(a5R$^#PuMYBGI zq&bCV;fjon_ShJ^T^ZfDEjMDFxocZJ1RnC}hSUFB+Qfzz%<&oga~E_o;RR!UrEl(n z21DmLJDT*N#jB43m&@zwUf_g}!e@Hm)Co%s5c$Jh=T+!a98e@O>~ewu-VuG*6ZT#>o&S!)3&pL{BneQVK9n?o>kOHQykKob2NrVjQJY#UQ-=TL6jk4OLSFv6U@bGQTJ#2!GFl@!4dkCT;`NV zp6HIKJu^neX#J(tkN7pZP5vT_lVapx+wkg+L7o2%?4-dC#A+uEkMbdz2RXnR3=Wn& z{WMwk(o5X64?alNKm9cI+G~k{fjj%meFJinMbT3<-5=Y~u4-PIs43De?C?DpUuRQq zZ||<2o}P>Qs7v>)r?29|%f7!eD~AGZ@}$e=T>*2MT1^oHU_`SZ;CyKUCcycSPN=Vz zXAA>YytX5L9c*ehnZBZAxShxe3Z(Ib7J<;elDQqIBVKC zu_tgcHHutJnJa($_khG*JZ>4(`sc0BS#9+VYnON$-HTUqZ&Ra{`@4$8z{elobr+dk z22Mpe2X&r!w+cp+Hvj(S0ua;@1jqyoCZksysOqK>EucU&qyEr+``j~@mCVqnq|eSe z=FS#lOWM+A$!0F#ZLIY22f zu*Vq~<{1$P>kAN9z?6T)R79vs&_2{aOiL#`CQf(b0Rlb`sv(I7jn581RLGs=84mVY zEadJO0|xrC!qvIlWx3qtMWvRlbHkiNqgSSQt|PGa#7@ScZa;2i-n)EDJHmPGTUYoi zpMH2t={2>giJwg%lrw;>#{gSzQrq?$MRG&;{316-UgZYKkKy$Ox6%fSD``y#iij$D zW;B1wx{yAmaWC5}Yg#;HVr&kTbNc3&aQc4=F>Dyt4F!zBG(nOoLiy}bMQW$m8TJBqM)R$kbC zl;=GNP+%RRPTAaQ9cWzJtkr80UE_;F`<`U%4h1o270K?P zy=`3x#!zTv8Ji7aaRy;s>h?4kUbGnxfz43zO{BQFG7rJeIGolF9)Xz%6S2s|&kfnX z%}JOWf{_f~iHWoXe-NUd+LfrCYR#13?ctsIlqgE9wvbQyy(>FpFf^%Sv60*jOPhY! z2XzL6R^zjpOW4d9?qt<^Iq;bkQcgym<_f3?pR8SoOmOU_No=9ihN9A}6Qx0jE48clhZ6-P(r=&<`zbyCd7( z%^GAs`s#*xdNT`~aVW?LVHk-@Gk)#A?&W?`Al}NARHHU9=GM8#JIv8Bx51ogXoV@#o}PUd7`2kAtPLzRMEH~nCg zsHN?vY~RS$A#}zf=x)dHM4q?b<^~3C@9ZQi^ZD8DzAMHJhh$qd7qn)zL>ti1Dz*Ok z?#jnKUw0FGkzBs-3rhRdS6|&&;2qw*U}yv|2Al6)U~0trGCmmEXec8HkvQ)16Z64Z zbY9cSL)aSf9c;$?a%gCsbM}g6thBeR7;`-dYvZqm*L?CRr@N=ayJTY)i6NQwM{tS5 zG9lFar8|NBv9V?4EE`;1rDy4}9j7i@bm78*~2smAQ)_0 ze0madTo?&khRNrXG=+a)F;zV97NTn4;t)}0QoP;#t%j{bLT4MgIyy7{?$tcXtn~-< zSw8_yv9lgO&>C5n62{^%fvm=9v&hF$GuEK>g;x(nRX7qZmj~wRLu^Uoru%hGONQkR zb>DbgGl9RgNZ7eAC4U{Z`7mqD($7AK|fp|1nyqsgChj)tbkKt$UO!*-YVWD!P7iv4n9Zzz_|<5vdYaj_cBrF zVzsGq1^@Hij7nzrI%FyzbShE`pANR6J7oT#=91pfse@9Zi5b``;|Hc`wAz+t?#us! zLHy_c@^m}5H*oGtyW~2p^ukxq4|9(|;tmM_po9AXH~eiDXOPeX-0z<%tSqY1bMqFp zU!iL(v@VCXP)ZYk@}K_y8M_X^w#sYm|7u+Ay_dBt$&xHD$&$6Vx8pc*60*o5J7f@6 z5=IgTdv6FO>{SZ1KntWm%WCPM14?O2OAC~iK3;drE9mmhxmVW%LIIRW0Avmme zz+n}D3(_@*C*u%{`5<%01+Jg%gt%@|Uc3sO5MFxrn8I#Aw?lKT!Y8(ZKlR7h3i53X zi}Y33niNud)61ejb$FfZsS3o{4hg_Xy$$NX!IDOyp=C-bEnwPEr}fc%zMM1VJ0uQ8 zI9*TwD+^t!ce7PwIka@!)6JG{O&izJEjOWx64#7N9WDJ(z2Wf^mR2$k{3`Vh_?Rae z=wqM}mr}RER1E;-CcpHbN0{gOzsc+;|07NA?1h01(GASc&p!JJs>wrlA%$)_t8eyp zLz5WxpRm2%aPa4WAGv7SGGIG%6=0-MNV7JAeDN&naEv26$4PStH~bWP>dmm~ubAl~!H*E?!Sahy!_@4ckUyhk$ z$r@w6kBf_mpn-EH*@xuy*mMRo9sfs-G#-uP)Wzqa2maSU;XN=x{>jKst%*Ei10st& zS8_0;f4*nnb%e~Dm?Z*DO~_mh`T~+>D<`?CEK!PJkcJqT)S!eZ_3CJs&nb3;D;{88 zbd~;EWbR?^@KuSfOm>xyFG1syRNFO7IEe)zK$=TK$V12iq=}$8*S!gCu;$R(w0Cs0 zV*T)B9a@xD1trjh+%Oz<3|0|I0z4m>b5}U-euU-g%sQ6bIyHIIybR&YGR*;zV9EK@ z$c=x*0lr*)X6)^o2Y#SbbgSGxZNfuzCcQ@mgmY+paDpnIT;hS86UbkSsZ!%^1P&=t7Bn8X z5%t=kla~3Kn_OCB{;$kze)CB22MT$Iq1O`kYSFzzevU|)T&GY-ya|=nYLI~ExS3RJ zXZ-Z;9F&mhzMEh0miN?|f8@6ofv8v|`|mjX9PCvHEpU$^4s1ORE`*roGTYwt>lv>H+Gb-T>;x--fu zC58$rzmfv!NLgn0@nmXZ;^5d=Kl3Chf6*WkQ;six>QOAVP$Bzmd&e19H|sA-`i*SIDy!nMwuliCnCAh^6n1$pM=K z*EuM5S5H4)s8UOoo|v_b_4?)yTl&m{6aV!pOTw1u)tM(=RJV5821dbsjDt6R zTEI8%`J`OkCzh7A5p!_O|0DM^Q!C$p|9$4C zWIJ;Oac5**3->O94&coPYs^0){b!yOhy-??m39@48Fi>#|63~Ec)?Q&cB+!KYEo$} z>nIVWDh8D4fqGn$s2wBoG2PDiAnJebhr=)YdBC6e7zV37Xg`kcC#9F-VKH!zDkp zWiKX2U%UWjhE<;-$`BNp%)fJTwWiZcb>xWoStU^8{G>%NUoP?W97=ww#wYpbY~D|0yBeE3<0f6*egyylrN1_ixw<6fByV_ z=8D9ppi~a@Wt3t>z>ICs1r{c3 z1Jp=Bz01bhkB0YZS$3Lp zcp+40r+;GdIsV2?$x^q*vzKta@*3b; z;%bP6G}MclNAl_A%dc6sEXQ0!rW!j=Rk~_Lv))>+kBarOeg$M#F6KrXD4Gj^T?UJ( zA}16#G9ie?Ib(oDBm)qe;_Q63I^;7;04Lepav2wTVXF_=Sk_BJdj`lP&zM+mOqfJ# z3yC4LrE;}49b$@DyfXt-kJdRj{S)vBn?cS*VRKA!GZmUK$yAcuj>9;;c`+cgV$iX+ zIn^SvEH75*&33g+4l`t+8#3sMc}yyLDrSz!y5!N`l>fZ#Fz;~te&&o1KKSrMfzoCa z_kvWOveVsnLTk{qc7Lz5`-CMzy=-ztN8`n}?#%y4E{~$_ps#6fAUj}tB3S5C?{mqi zC!t9Af5~$$I=5e}QVJ6L_V0<4t55mG(>LwNrVDbtcz&gJ#(h6{d$HY^G`1T1nGYr3 zVqRM-vC&J3^QXz<`)>;G+M5vcow++A^LiHt{ek01KyuQfhdSgSt+Mw%@)CRUDO>L1 zTwxm$f+3-Ty<&$~W7}}Z9Nv(Rty}4Zb3gj=y@KySqYa+>K9;^P4nA`cRFv0YDtfGQ zFXj*aoQtnNW=9fw)7fAk-Uu^C3W43@h9l;w(Z77T`UVP3pRk&~fsNjwp{;qbX_3(b!CCWio2NhGg!%In;2E>4_B`_O>7s}6zNW{i219Y#2a=1!H~rqr7$Ylez+wa<4%^nGa}_t^&=?aq-kqT2xp=Z*ktaU@R zE3obC{PnK>%dS4O&TP_B1krO!qS7ol>A=}w=uukWs{n|j#lW5n4r*DMf0&i~_Gcmw9>I=6wX17;o2 zauBAr0j-l#4uSMXsT+oac>5(ED(-dnUlI)xjvmomz)N0oS#>2Wp**=+MQAwau*2P)YQAB+m+|O z2J9HUxbVWsH~TZs_dlLaKO9}ZHYA2QM*gYAfu+#h6Eg%fKMttet;!Bytb$$P3N&0> zIO>j}x&w|HYX`h*PGH9mvOt52mI4E8T*Mi7`RUD>102H8ryAt_HRcrZQ>Nn^OH@up zNvczgjQobuH{MsHmO!04p>Y%QFTe+X$>D=s;AU6P5Td3PwW-#rsf(wk(lDy!8z8b` zR@tkJ5M~=~Ev_hRE(sR%!P@fWK~^_g15GSV8WdDF+f1n9g{??zsP+}Gtz|fX?NGJD z;p^NKz3nY$wH%y%{AL0I`cvTm$Q84;by{+DTJ2u|#vzcPS-aHN$14ONXvV6cftv&W zrJCD#i>o>gClD0xx=hfi2LhTPn+t+>5^bv-RYzgsh0|`9UUT&5Tf=gL$l|hr$g!Bn z;cDr9Zs>GziUaMM>ZI1IPRlJ1lQ+hgCr4P3Fmfrgt046Jh=>Hk%X%y{k$_J!4uR*> zlJ39$m3L~c`~}Tv5Go<)v$9Qkv-uUaq0+aQM+^#eM~74`Oyw<_NMN3>wP4m;DrIIp zFdlCqRAz0CJdm|^LuE#9)yRa{tp{>^WQ5rzmMYaGRfJN@Jh=ZT9?eY=$*|?HA&3_+ zPTm8x|I1tMoxKTjj#+aXW&_lCFlUgr=}fLEF*iH&>jeYBdkI)?sL(?2*q4OAfHmmT z(}lp$! z8+78ok*ApQlR4+s`2w|;9$jPmU-&Ob^gqx1J1^I2;-IH0ws+7A-tSnYuFxt1*aBc;0S*I5Z@ z67{`saVe`S(PD|kObg{IS!$rD7f6-X`dHnJN|M-ljIb&i{f=g(t;A|?%%4j=JjQ0D zhRF=h&XzG?$Mvv*V9z}Xc(550e9he4TyB_eo|*^4555n{yUOF!0KJRVTxa=RfVE4J ztM3K!A%N|9YGdPiD^}SXgM+VB$<_fzx(E!{$!NH8MU7Kb5!nbet_x{0GNWE#seJTH z!A7AgvTAjtxT~wZpa$7J=rUrf#Gn@0ZjPYBFP4cVMXFLHdw%hiE3f=vWBc~>TSmQS z3`Eo?(x$+KU2ll@fjwHt((`MuHeq0X^))k}Nj7x^4%m!4Wm9|G|6?12|DJJWYM}OUCikrhKx064EpNkzg?)npT z=gO7I?~_`o@rMM_W&nKtUuK0Bh>JoMB5F!fGdSx&mKy3bho)QxV=B#NZx2Gl4c~ms zO`XTgrH56ZXfDj$5w2Pf2P8vQJAGF_<0x`YaBk-yLjo{}^l@gOoor;TZ$2i;zZe;b z_xXoPrh(Sgf2uep7PSLUAh>XVnf#(Xfq&S%Ir;NH4-cO;GSV0tN-=}6kS-F|1#OjT zyCoJ-%3Ebhe>?RifA&7F^-=+9R#y?F>56C5;V+%stmoL+>|A{`2dwoa|TIErCS9NPV^Bg+oM3=!0VH#ZSsi)zKxYiUqvX9TNIsYl}${`VE`VH zx2gy&Rsgp~N4NPUhOkPl{AO6yN=InN4oU_;E*5Ha!d^vCr_~bcX#!f1%iCuR%&aa2 zkTT$qV@^;Su_93A%S+t_v&>dzp5L+K%O{>#W>%So_HSF%3flL+ZI=VJ^e#Q~9ahJX zAoSogN>w6by9|1#g|tNKjXtdKFSKi&i?-tIcdb&|Rd8$K>)-?`#UY(mYLUp461K?y zHHg2;pdM!dSLlbbb`SJRu0Tm4Rv#ZQ5&n%ENt>r;`eZl*&KJ67tP=ct{#$xJ1H+K> z$iGX+r52|a70ESqTiTY=_`J-m8E3b$DC@bFx~Oq-9Nirmi1;UmEm6zR{KjeT+*1Fc z0!lCJ$UB^~Ij{BmYv)zH;r zMp~hNkZ8?At5R}1omo3(jSLPlZ+b>MNN`{}GIt>C4^qf@8Q6LkE3pW&16$Q%G*XJ{3Ozq}8WAoSw8B@TND^iC9>b19>9+EpHp6ypH@bzs~PF&h8v4}hN z>!26uU{r3Q?E|Bp#$6_NrC@=YqtLsI+BA0QPA`P=p?!xJGC}4cYL!4Dj?r>4+_pOG z@i(DL%va_)&rcjs?WNTX7-MFD@CR$^4httttv&`Us?fgNE(S{ChULNU9A?Y z0!KC>1j1BT!esl>eOFb9P^OYgZCX{29r93H7-k31a*5!atlBHdN!=Kd{Zg<=U=6KU z87XY*2;`NhEW+2sBy_u}eM1h$1b{x#$(##eDFcVF_^Q3rGKb zaQwmhua1krDEA+J=)sZO^UV8&f97Gp^y?3j^>^*>qV;-lX!o_2Y}Q0C+T5>D$N^U% zDxXpS_Mv;t{6Fa(C6n1)g-)?Cpzu5@;Pl1#a1Etn7DFVx0b=RBvp4n_hkQ;hJKNWz z`QuC=TqU$uZ0N=JNU=wNwR5=BnE#^l;*UjQ3?z$yFwtq?2@@)gFrh_CzKkVIKoOeE zD}r24O`u;$4l-vbu~D`k3vX{!Dwk!|-7bk+(HiNA7B4z05{aC7F;Qm1`>z>-iRrb= zPG?S|!i}FPsMf}BT_sxQbwK@J>i5X`nCo*G6P;RZOl{D{nD)$u?9M#=tp)OoBDXUn zHi+9ckoI;%U)tJX%cKU)(V?VH=8|Z-i%W7Z(C9nhJ)0WC;CZl1tbJ;7ZRgC6<%L}M96$(B;Cx*pg(an6pimEKVf2B|NJMxU`t0WY234`Slk`Ie3Yu6pCUtp za;@0or4@1(SQhBKF0tKX7q5fiVD-N`cGEQU^Ha&eucu#DwoVijs+{Dv|S!uHgS4V45B@KQkYZ5!*e+eGH&v&^e z7qP+igX{o>+3w%pM3FPB>OX7|Yl|S@hT`vZ;LX;4IcLR&*?|CILvn-)j#&e4_H@h+ z2dQlkApMJ4(YT#ei)F=Pi_Gajqv~E=v5zkbBk49YIq==Cz%e|V(bTO9-Oty|TCAb2Z zUgQDbzAdN?Kq>d7v9X?qf7o>X?JJju@;JO3AwC$I#%7jS=;Ap^R@Oj$6)G*2S&y!i&27V{V_JJ9fdCrPmCjejGN}$TGM%bo%&lPvfa~?<%qLk6B{KocYHy zybyt>^k9*3m&tA0w&mWXmI^dWuiw=sH5kOs4d)DB6f^W0dJSo&Tkn~4nOqB~JGvZ6 zLr4{DU(;=m>w?Nah_RbG*ZPc>Vud=g`Ql|hnMW1ec=%-VXPd9tr8O&beRG66tO1~w z5jHKa1692}E$6gc!Uk!#wmjDIT+8=c-kEK{z>3V|-^VauBD6qB7f6Hyq#_Ok!7On^ z^uE3rM~8wP2Gn~RaGd#wFN-Jfd$_sHP38jyK3+pt_K89o{7zImfJ4Fl_WxE$oB!i$ zGf&B-QKi!b0*5eI&a70RWIPQ5hfsHrw00@YFvN?rki*Qn^_`J~l^FEepk3+J6Ix>Q zE7WG0LQR=EyZW7Q8BviecbdB0R2lY(bW-nNAs4YtER6_t()LB8tGkVnHhDtkZ=dRL zRBA52vs%g&EGcV`#@EXHr_b0f@0W+(PFXq?8AWI4iYrdBEj(q|GdA8Tg4q+1Ej^X3 z3rm(xv%+EAx&TDZ=<(IM)&AoKRUVipCKt*L5I45kXG?V#eb#%j}^O_v~D3FaYvE6dolE@KLG;)@)gGqaip_v_NmC$i4JZ zizAcJ$(>SVB)-%Z7^_;K5TeUex0zy_SNR;ibz8q4u_ik80X@v~iRogiy;@7YL>rs~ zFeh(FZ)jW8YH=TTq{!^4)UcFC1MN{jX(IFTf20)my~gTebU%F+)bffFsO4G2Lb+Pj zKUg*hKyh+lyl$01El&ro_CbhyMyAb*4N|dAs9M#*s4Q$b4btv&AnCrVpke?&!XhEfq#|K%#zhG}5udi(aJZT$ACESkYtD0{)Nr2S zD`CetobaPx^l*}YVsYULqGA3rf&||q<#IV=Sy2I_B+gB}m{F)Ti4f5H9WjaOeIj8# zaAah5I}CrJt!6saaau`~+S=*#51U=4(Z&sL+>(DmA&cmNoaxrWXarR&)YoXxL)1Z7 zOj>)iZo70aZR${DMFOGs{_+wv&}5l$E5aFmr@ONU@DRB8t=MrH<^&FyA@i4wc^gpm}i-X%@#2&P{2Gf zApcHucV8Y@w%99DDg>U9QSSzsTic;;Q-3R@4Qe~IG4d{JzbGpJ0>y1uPEvs`s1n3O zz=^>aQ;q{@(ZR7Y!LceaduJc3)iEmxRpDHu_{c2fisG=80l-9xV z0Si`$)le09Q1B!RKZn^G=pf7e65q|^1E!Eg z+c;Z>b`KpFpfqsq5cfe6EzP6Uf*BDiK7gBhV4KWat#1ORTmn$p#d5^iE~Qp4M#4@R zOA+r?Lf|7Ii-Njj&LuWTow>w{pu!*w2@R*U+ENLvTie^8U!ZZTigN2U9ZIvjO=e;C zVk^Wxh$Zg0Dv?mtB*CG*D?}#Q;vHr8?Y_W<6T2yisC(1#Ly^$3h4z?r!Ll1la*evf zODSn{n^?hw$Um5o0w2vG6OW&6g#+UF;V`V89FB;yGOw%M<&<7#7OT55Co44}wMG-Z zz@usNL-jBaB41Uwvlf-L^t#Ft)hTs7%w+|#s^f0vDSLhAl7dm;muVA2$CK}XB&CFs znxs(uZ@e6~<};RVbG}5~#f*S{q*$PE!pW19NBfx?q_Ef;{VeFx@i9BsemBh4Xg5F? z!2ZwNZZ6%K6RopG20JvsNVGNIvm_kO$2HFYTkvMT!fVm+1_?ljCWrxIW3OLddJz#i z$YP;Ulx;j?xzyNs2Aw}~*i!>gsbMx@Y|EW*zDbVTe(&#p|J{o7#5$;=N@{BrLC=sr zq#qzu&9D?Yvka2_xG3r!E*oQp($JNIy|=HxcKzJ8C4IKB<5oss28bYc;N%d$VaFIp zHjPIE?f=f~+2@?o_tz)!53_3d6@VLP#qDQDI}ClsUQ_xi*~%+AMbM)aI;*S0kcb-- zreso}vM#tHAwfs7V5Q30pNMKCR*TF&vM2)S6KdOiPvD1-aGq8tD8rY5n70T9hHM5P zbr0OXLjb0J73}$JtKA1sHJ|VRCWQA1ZXC2yHE)`Tzj@8?fG8OsiqHBAR(N95&*pz7 zM&Z5W$Y)%@4q^T=8~_A2eDd3epdESuK~k`+3^m|Hh$v_Wk|r`OQc zd6hoDx0_arTSq264xC2hG4}M3!-dBEf|HBA?>5e(PX9|YwfH>IVu%37;Nm{{sf$|y zXmJCy@0{LpLCaMwH-XCf11(Sfmn)3fz}zbg+na0}V-A5r%mhgTT`=UDLk*jI&1!8Y z+1t#XI2MYBlV|3Ni10N?LS|qo_L8$d$mi|+d!(I1B@%u+`|Sh}ih$uY_N$vp&ne|G zLl18N)E+I65V*D)oRQS`Y4fvruAx>OAXaS zty!!TgYFI4*BRQ>1>J1Xd9N;{l;{i-7bb0DD!4q5pZ-6yVP>8efe+n`gG>CUfMypGuj< z)O|W}aehQ9l|n24W*L&l(PdpARw9#FqzX^k=*k~bmpWwoU@-Tw?3z7 zrfGEe9p+OR_OL)Wz<-@jW!kuN0pCEI#Fv)EVmxuj{ua!77W|iInUDP}F+6MZw?|6f z1IGfw*y?VN9u?i~5G>Hhvr@<;Zmvh?NwSVP439nb36~m!B9EDXSkM$Y* zf-Adpddl@JfZ!^VQKP_H_~<8sZ2~7qZbOcPK_cWh0#54;~-J-B7EYQmG`E zUol%`!Q~!>XGKUISnk$&SHz5tV!>jw7Ap~R`x>v;kjg%#ftXU;x};0nw%nulE)Pk4 za!Mhm1968XGS3Fhn{)?A3j-foCcahbmkUfss?8LW@M_OanSx~Kx$M$^MFd!)@)Xn==Tzx&G%~+IyeZ*L4Mr|(JPPkI>BSv}IHj4Xazm97f@EVS zHX03bhzXpZCZON6agYIXb;#y)HQ05CZa60gPsFrkCS```$J|Vru~P-3D)R7vk}d2j z*+G5cFJ&y%XeL@GfwV0mElAoorD4dcDzE5BFfU?Z4=bgEw^Z2(thubU)tWC*_r<*JZSCvk^}i2d zPmp5RWl$ZU$?vj^m70)_U7eQbG{W9VrU}R~;%_EGf!ymT1-t_# z8sL`K84H~>=CDOMo{V1L<>=(i$s<=@@Ytp)B@Lldx6BN3Ta%5b36j*;}1wQ z8gOk`fOviuD#DkkqfmC`+}nxZ;LZg+?<#O`5Jy9r0=tJHE#h=&9I#OlAD`qzLJTzP z_(0-`nJDy^;}mM{Ebx;xu&)beb@Nq;Pc<~poDYsy^%>^ZX^QsNfQF~aT++9_e zaO@1Nl~Hn^TI>&tJ?$Q`zg>eBsuy4UBe34YWwAN=;)|X%5X?~=#B3BN{408;(FFmc z%a+l$0{QZq?_ZjKQZDPzMU5Q}q6WNBr2v8!3`DWWG=LY{JJe1KD1!X+n(S!)ru@Em zCXr2016q3t+7wDrZD5{L1DxwWFjHn|f))alfjG#s%rc|g9D*WLHlm3Hsf9mIuOuRs zy=c~1D$M!m^z*Up+d9N*g|Pkj)!|JFuRdf9>VFiJ*<}%#lQMEBi6wVQzPPO`028F? zS(RZ)J239^F&HEW!UA!q7#;<>iU9H~8?dnYp#5nOTnO$z+*b%V;7+r&DTq^M_*Qdw zzc0~-u?qaKzB%G8F4+IkS>%nt8F#IL5z3-pu-;2llnjB>}UO)|#(`1#M=%cDfmr0Z~eT=8Su#H+I#NiuU^1@#X5Z)YBeTe~6v zfOW?`QEhuz+pCLq{0Bzv+LD1`=T!-9s6C+0A<Sv*17Y;uLz34wh-bv8LCv z=@2Rzz!oFE$)-10Q=HC~Ip+=?guE+faR?kZf*xcRk$;v60I(Et9X4L&t1^6a%flK_ zxSaI_uo+QuGqYBRO8fyb!8~+mVBmy|I%bu5;0%*Ejlq`$s_?3kiE z8IuJR(cVt=Z;*i=gbe2davby3BQ=dqm+geR?TJfu@A=mBn%kEK>2_C98_^WVX}$KM ztz8oeoE(OkL;9#bQ*QjYjE*FXXlaK;NxfBM_7z^rlh>JZnD*Iee<1G z*A!JYb}Sh-!R%Lkc1R%cwfiIqWqULz@5{f&Tv+_~tsgz^asdIGRgTs58f$GSciB#& zVROdRWzLU9fKeIHL}E|JO!01g0>JRY%sUn|me)?9#)dgl{a>scADna1OpQXWX&~ZVVa}L6AQpJkAM3&*blL zz5qL8KsYq?+q!e!(oWP-7}#?Tbz5U4b(KaLi{JX)UvC#`q+4G7<~0!}89o2Y&uyTA ze6#6=uUy{yUR58I4N3jX@2I1VYA=9DC z8kZ8-l*@@~Xb6go0m-1m4@zcFHOeV$Y98(Y5A~J*t5NToGP_m>XebKyTzPM*nu5tL zr&9uB>xkWAA7ctRax@S5+T)#2u?_*2cEhv`G1p<)54LX%Mz0^oPA7qXC%z%z%xw~{ zk%18b&Q8Q&5&!p2>kKC0zO&pLHeBSlRNtJph|j}V5Vy8L)f-RX1G<^suRF(KXALGv z{d97}d+#;=L0KE`Qm>DKhf>-NDvw!T3lfDiP*>aJDzlVP%u`RCIVI5OB`05eZABlH z)FuA&hG@OCF4Zy{sK*+^>|~R{D7CRS7ylP?H~EvXaQem|5|F1&tx!&5N#T;Qr8j>Jbr zA#w`MT)23UXdJ;Vn_4T7dz2zm$Q#UedCl?-2}>*}Pssxv#7*`x=W_F!FJpH0=d87f zh!A@Da+_#u%&EDasnt4*=BT_Z4^zr$se|mj=))gfzi?`W!YH1u~s+-J^NI%z@yU#GJ+AZ5P@x)|NFd1hP=6ua)|5{OZ%k<6y5<-+bT- z=GH+=X~2(qhRL<$aJFq?z+5ua$6;{8gN?%@WIibS{eqnjhU7;fbyZ^G;dS6E!?&hw=CM5ic4e}06FNlx zBRm8Au9Ku0EO~PU?h!~n`hct==Q4ZoA;Oj!=2YmT4z`Ld7OBgp6aA%bt&B&3)i24d zeZ6eT54FR`bZP~A80yK}0pQzGBXx41toKT55|6-AXCBCJ%bijd^fN!tUwz}%d6ebI zUU2z^nV)D!E-eT&O5mSAObr3Ku@{x997A5Fe371l{C(${-*LRbm>}= z@Y2efJ)ZAsX4|u|z>4fmR&%-3T#3&==(uLAQ@|QNfa1;d$pezW-5IQqQr)aJ?%B-Q zgj~$*Zmk>Ab%4P2lKw>jaQAl)1n#fbqXi4J{z)T^gQOQ&sy?YAuJ6m(2aFwIzj8<2 zHMOn}#&U|fjvFEo-%vpx)8z**`rrfdTIrI~?Qr5Xleb)yfZ;yk!5^mZ#J|*zC*EUn z)@*R%nXzhBpiEwPNkJRiv}w7A{L@l6cyfmnoOW>Y?oemz=%6d<8XbSV1ZTzn@%?aC zYR$7^YjL%BS;_n~TY{dBv{*-gK@eX}MjMGsh6m`s+lM^4i&?5A-)8c}S+74(*QRnv z*-XY&tR}bI4P*OU-bWu&PT30^zlnxkfOlR(2TZN$D@&Q-lMnS9DGtX&v z&4o8yeqk(CH`V1kLSEGkEb+{7z zA=iOUkSnbPT0>rJbze86?jG)kf37q&80`cwNu;!@B~GtLK4?hh-D;hh^8T5U3Knlk zTgf@(5VMEiA0l!CvmsnI=Z8W#I3~5+hjq&na6eA+c$>|;VnC; zZQ`q#fB$BoNUIf%z1nC5X{${lin_H!>v#3*CT_bXOC(CAxZm2Y^2)VFrIfrJ4NpC6Jrm7$4RuBI~?hWjCq4%dPB z|D_VJo@Eu7j7T2CsZU~L9SF&_%w}!blpP4-F-tD9qhMyW|Gs*?wWx0uRYgwnLY-V) zV}7O|yz-0)NVT=?K95|{FnfG3BU&BC_6ezi`jxokK@UGEp zFvH(AKC8jQ#s?-dOUkFVeS$MSI`{y!rEv{)V&h6e4-UFUMxGsyp0ybCm88j~)nC>0 zKFJX6VcwyB-01A4&TgDN5<4m5+psGReT?z#Ye-wDXXhq=*t>DpZwusTU%8J6m>b)f zO9VHl=iNPk_bt3;oz38^LCf19Gm#|^=9%r}NN3|}r#;cGPYx!SB;cj3_4MQvZd7YBWOf;Z^XYoHpG~AK|%OFqPyUuo0^EAmN?_JC>L=5 z;a1sxL>U_YgAWNc+4zbR#ms@B?gSg6%Y(i^X#9%w9});4aYwr6VhAANcW zsNOGr;*rCRTZSc;&Y;+0l?9?kG5Mw*m}(|N{I1?w?{JFTn`AbV^XfL{GV;D5wPl5m z1}(zaA?Ex2OaG8oS#)w>0w@FuttrX8o4exLOEZXXrOv(Z+%#-|0Ji^eHh;&3z$n(o zZa>zBGu%DlmSDCug_p>xg`n@{=(8Nk#TSB;uqf|fyFL4OzL9YaIYt-9upOzoo51G( zgWBD=c(`M1c$oNxh8n*oG0@YzwyY1x>QeueB+q=CY|5?9uPswo8_Q>I3)4UqPTihi zBIIAC#viG0j1+$T>tA119n`mu+RXOx`zvti+aMr+9EjSSzHM7mfFK7uI>h!iBdKI& zXK>?id(AE(Kn{W+?=?B1$n<@m^-B4;1JgqeR{QyYDm-3*VxA;B=u^xmTISEo$?42_ zzm&RzfmXU#9_naUF0M&i16CYS=IbDbP~DZnKiGK^&(~@kF%3XTZh5gX_E$lnv;Mu9)RG+O@WbM82c3Iw7sHU}4R#7@@dj$Jy zGWRlXLGpP)9TJ+GslC<4D(cbBhYaOQ4#Y7siJfw$%j%im>U5!jbii715EX7a*DQ#X z#Bo;B3zY1R6@5TJ0Sm?lTzr^~=5fyC4nCPN;lOe{DhO5LWXc(LOpW18F*3#6&pO#a z*_f^cF&6W~gcOoxo-1ef77C6&y$k9IuEx_K)%|ply~u2)exVw?@U%|M3v-Xa@&y3}J}{lR zW9PRULU)uq=hVAc|B}Gd1rNl0F(l_t7^qmyDHI?w2KaCCYr7?(DB(cRqRL_voXsC39lL_|8WMU>+yJe7hqRE zc!?$dyzaVJUMVvF7F?`#RILWfz$wgz#TiIg!mQok!&iNC1{;^j;e5MsUgC=UW=Rr>^LhpkmqFJ0bZk0YcupY|Wu-sgc zoBOqJCAs=H7b+qrLO?dw{P*k^f$+@fw>*QbIsy!ODe@3A;RIprbL!Ctip9nO!OoAs z!=Rl4K|w`$sDD$<7*!0)BR|O+g0g}%(D*VtmdFIn^I=WdJr#ytY2O0^!Mq7C4ZH)9 z#%EN-`qS2I`rMjIuM&9Q7gJLk`YmK!bMbR&FmmGf*KWwH&ulDFfkNXgs&Sbw#U`ap8hLswZ~jH^c;S z-SE(2?PgAvG3(%d+DEJ)&f2x*OwYlqhs7IzGJoQa@E_UtU)(@(yaU}ppqk*_fWX|? z2@?E!bTWrmQ?~aSs95Fd%Du-h_La-e?Str2(s}y+R^HevTRf0mU~463>K$y-jgoBD zCiik3`g!hkVi}V+(_rr5Gvv{7`8F&8M05zyv$K7sPv>+jgkQniI~#=ANd~LmF1r|} zT-Wvvb^&iz5-rD6FTM90l``z#dw4OWP|=fDZg(<&Zx1b*8n#BPgHwyaPvRgK{6mPk z34xNiI2uN2q|9my(k5!DBLf40f+;A6w1RjcPm3}?*-#RkBu}1lQV*?Di=vyhb{C73 zdB84em@dG@H|HX5) zzf=`^eJ%o{?cBXmnP@LI`;%u?p!fJ zLcW25sne9J5i2>3IiKJkLVTvDWXcUkgc=Q#EhZf;lY3luh0E(CL>+ zgqUJL6H2JOxzeYqogWjaRl?}$9mdFpHcMb5b*8Ow+Qy*N;gEWktZ$23Qb|kF(%;X# z%`NkK?c^;N_Mw#=_`w29fv>1Lzz4g*2fM)s!!q01lx+;IBo6{(7fX`W4dVtiz;q$N z#F`)wf7Wn``8P=6roq1%%*$_&E-ac<;)ZE?72tf`T`q_6`jD(B z3pCy=>AKTioPFL|_YoiSMybb)opVLMzhH*O@w+Mn(&zQsI zoDW2mRdOVy()RBVa;IAg$-|65B7KhJqgWwBLfB;m5XOb0) z)$zf##HY_P0`S=3R;(qb zaay2CZggB#uZwcRnve{jPi7yGH*{Bx*?JqSr!-LRQ=u)aS1zd6;~7UnRaC_NB86H~ zR9d70`s}lF|GDy#OLEMA;s)Quu-)nyog_cIk^0sfZ@kQh#>1DL*$pVJIJ)~BHZ;D9 zMW#e^c?mobTOfD6k0$SYYi6=)+g9pBea3|VC%hb z=D`2Xxxj321J4P<&rH`kAd&$`3*ikP48Af1|Bbxz$}7x!WEpd(5obS3K{$2|byd;5 zY*U|5qo)&V7cA>H#B*MZ?qcIYv~DtNCwdBots=^DX%w2uJEd*r$Vr31QW`rYwiNGp zApwnfzh^#xnY*uyj~^Nv%QBCUw=0aiO8wQG-?iG07qfNY`d@1LPu|du@qgl)JJWwk zlc$*_kEF@NPID4Cw*5puzBw#+seASz{%;en+m@y~tXMe!nSVQwIS)OGJ*CRCP|LAt>#Z z27bkk_qV!a9uQP{|XCB+?q>=7I;ZoAY{0JX@ax!yKf6lq2 z7m8To80h^L3g=@6gpW3?hxFy0%X+cFsA~dhHNDKu;!=tH7W4@&6P8L$n!3L+MO~>; zcgOGi;qP_{^wO**N*LcJc=3J~N0q&udS}xx^2kcmb*Pi(p)6cPz+9RpaPG%Y6!Y~86 z%slmRwfbtU_J6(EL@`ZvKw))%8XAo+OwLnQFU=}oB5dhU5I}eExMT2uI(c0 z3#Gz&PdxDi#Gqby-A4snwH)y}RP{wk_B3mSx3VKOu7eJ$2RI0aj|6yc#8uEg>CR`` zW$@<_%$ZT|K>9vE)(DUc7Nvmoz=8{#f^rhLV4=8QJzJkG5QLxj?@y*GWHWOuMK&?l zi7?gdDCzqufCOpjzDXO#7p20!N+pstg{4JFsPS&Ub48p|s>Pj?3gU+(--qVR{iup&E zVZLxhoy!-XuxE2G8r9VgL}{ZDOp3lxFwq2SBKT3b&#Fln3a|V(bp|@zKSf}Cu8{Q^-h!?e#mZwi^?cA0SB8{5cSjA; zHbti_5dPJy(-<d*G*F>tJv&#P7&f39lWz~OL`UzUv_D9;8OPvkXm zmk7d4SM0YbTaP@W=sHlZQ|BudT-^h*2g29^=5H19epRm+KfhC~)(XR?_qOTd`mmu- z<2H16>H_+%c$`lPhb}v-i`GJ1bn?N|W-4}_25Z)2Hsxi_%3b3jW#R;%NTC#XmO720 zl^&aK^~X#W%u^Kn1&SYXj4@t}jROalu&PxD_(|1ho^Y}GEBc9rZUzNS9_Y0EG&g8S z&jwoD^RWuSs*rK^i^tnO<1-$rrxwpdfacrN`jElisYi! z`gLKWy<447_j_$U_oekwqdl%pXfr;0f`l^WFrAkK$hV4o?0y(>MHs!&b;hO5*uAxJ zBN@8mN#?s2l`J{|c&AYwa~z`;2C5(c>&wxX%n0?lYYQ zzt{YX=tC>LChux+>mGKSkg2JJ$_LugAlx4mtH$`BQ>#1+HtI_)_hDDuskl|mnmVi1 zf)-G~NBy%maju=^Zwnv4v4{$5J^5|mczsZNU=8UU0Ynf-1X~MHKpdU{?1yGP((GVq zgZ%|*-R1@EhPbr!&9Hx7-4r#}#vN6WwRc%vWR(@?#|&f?b1r;P1a#|L2MqmH=#Vo? zQd3@ZP}Rzr!2LZt?&?z}mGL8SrA62$H2uuocj3e+hf;wI6w`ip>HyqNdpa)qKu;}Kkj&u#*JO)ECJY+r$t6Ftn zUWbu7Id6_CfKc<@bT({^_W?AKOuaU^b8!*p!s_~lR{s`?z30~i8?_TR9*Ro865MO zS83oFV26mm$LQ-ucSp{!{+5fo^q({Q}q7;yvS&#G9rO%MO2r%fi8 z=wK?2(LUej&K3n&_#baJ{tTK_ey0V~zXzT1FKs`L5HW;hjl!^{yrE;3l7mE>$X9!_F zKA*b2vC%s?NP-2qRa_KXPAJI|>*fpelKP_9T^VSBvw>*6+%E%x1Bp*VyW3jDkg8J? z(LgBJ{=`4XZ-$1>JX~H?gkBX|+dFZFJbh9ZQ1?Zlbf44&cf`ZxH&=DXx z_{bwSca(`T`Y~vw?N^&pI=#N1IWd~@$Yc(Q*c9-zY2-wp_k12B&2Y8%#_*)nDO zZ127IDy^iIR=wJid+&fT*haWuY=Z$~dJ7OBgia`-n$SDp4TJ!J6au7Bl91#Lsc#^V z;vK$oXLco7wquk3kF%C+t!*^-p7xyQJjckANaHr+)s_$wUx3Vz0g&A*Xl+-3P$g>5 zo&d@DIWXgTQPX8G@^PD>ULb<*f;F0OdOhPagb7DrfT6mHO}z(~TEOj_JhUuKITlJY z-Y%w(jW-FCki|j+_rsoJW}H3Pb2K~#DwJa9RODthJa1@qIdI}>?Q$bLxwR9Wk$v~A zlNp(n-#CNc;T}t{zCMpS3QUlgD)rlfchyOGxrxoKU;6$t&)nDys|u4I7*#ZRWr{KP z+$7`g_v(Vij4Gl`>tB8K<`S(^CR||7UNGI~+~K8jY;Nn^B`6?t>+nwmE}CN%UB2Rj zN?V=+Q!4PUb(Z#Zby?dvFIAPh(IRuC+d!M-3V*C>@wKNljFnbJi)nM~;&x8qX4QpR z=xeN(i|M@TAKJK-)~(AvZVteVE@Nf1nKm@HRN~);QX5ncOblWZ3J(|4`qVF4VE)j_ zWzT>wzXesB42FqevO_*6s?TQh83={RI;^1?y87Ha?24B6ys)GS*w6LtLXKweV&d^U zXuo6uZ2Y#+zf%f1bOf5k4NP|~U}@`MSurl;gdmL(wMp*Hr1!_>tOaC4%!8qhXw>G@ zZUp4M(A&c`2iy~(_LzCv2M7Df)2=H=$?KP?h$ZR~olrZi@|4`-yxi;V?=blE9eumY zh-!zG%|tqMTvBGG(<_&BDy_0^nd$Y4g44DpVEF)S_o8L|sd%-qwW9+lp|Gz+_(_79 zC*B@iuFZq-Id@A!kB0cix;u9Rxv6RhvAuMNPq(smtD;@$u&<17>5vvrP7?oD;hkz5 zC_!?@_9}YXX(|=;K0~Rw`DZ`l|AIJOYK>23ka`!rt+G{(I#V}q@%T`8kb zSKCT{4xwxu7jRTEkZnoh+s@rRm2G)UzA?MqIgh_Qx9y~GWYd;^%k(VBi80`ZF@f~i zY2_b=rSR}Uqx8dyU@L@;Z1C`f3LKjn&ZXeou-Rd+SvPjFV5pxeShP^zNb#E+f3S{N z9sZ<7Fc{^=3L+#9z0Y@a91ps*Ph+s|mOgcS;h@~E=$ai;ggyOLeH66w_jO;=%l{GG zHzUpM(KmMma4*+i$xWrXa0p>wm<3U1bETEoQC|FuQx-4Iz2Le$vSitOKg=*XhsS1l z?ui@nSr7y$l!$-cfBy&HY+!pr4hsxT$YBB7JA`#+08ry$s3pfHu{|sJ%OH46jDd=5 z+)?1;;u=DPHO>-6I7{`XgYR@hRsk+*{r(HL{Xf0~hcbL5fg}ETT%F(=RSb;U50>AaLO6AN}>m1Mr z(#oTQXO-1XS)0rrC)U(%B8cN5mr(Zie>y92+FZzm=+Vu8>(Tgt5A6b`|Nh!o0kh}( zVpR-IcSg|b7(;0fsSE#z=i+a|R@SpM<;_7EG<&_v{VH>-L2GQ|@2h|H6SP;;dW!hf zm2Rb}Y|t3mkT0D~zXM3k1FG&z+bFF@l0PS=wR9K_rcVBrB3f4hdE>cpzBdB|iN!Gh zbRIy9qJUBt;L1Nj(r{XIleoM&3p_zg6t4Rg@GuAYo?^rKaCJA*P&g5KBN&XWUwia} zp&|Zi;-9tI1H{h;b!PMYc0xnBTVs@xIq*5T=fK$)hqts@awjH?F=tN&rjOft2sY;I z?{|3}13mX9+ykA)l%cbqc>lor#995dXNikyZ@K+gJwGBW1EUngKZj};S;nJ<=o~M) zI0gk5m*Fz`O5U7~X_DGh{_g<9WVw{SPy{@_3^(&$(ktA|DO4V74~>Cg3;jybLIt=1 zTrmE>05=HRUT_c=Vr!i@kM9w_ZE!bz1$de252R7=&U_$c-0J=@`V%PMeK3Rw+G5Zp zysp!GkeW>`AJQ1Dlv+pCzD2xPtDG~caw=!3U0)|YuhD28u&B=>=M2}X1B=tUyUFq? z8Pez(=r$USU4ul_WAE#8*c^R559>k;$Lw0$_#(uW2O#8AgQHp{NR7fSBd5P*L4%{%e1CcdzCSLDzduwO zCW-9<-w+}F28Sfzr9po%gzGB_PVI{R$w-Yo)t9*yZRC~%mwvDECeq$4*Qlho@PB-} zk1$j^f5iXxJ_*O(g*2~zJfOD8M}SoFt^f8qban<7pE;_5PAS99zjU3)weI2tMzvqb zjqbV2Xe#P0&}?|F9E9dL^X`o|n&CR6VV&cB_&P92xDNT4!l=cM%Y0)}qS4cN#-M}Z zHVB38izHrE;RLu4gG6}B9m~kBZaPlT&=xMm5zsp@7imfCyn;sDmwarPd|t{q8*`7) ziD)F*KS%!tX8Z@kP$}q)K-n;I17XC_p*|%jyaBh1e|Hvl+;wY!(ji-X(ITGsc`bmt z;hOCxmk-o3eJcbD+ngnh?qPt3O+7^l3L#Wy_m*y)4L<93wg zpjO_#YlBx`tGL%~Z&&`E&B3SfN%DO0XIL5>z}?&K(#mSVGu ziJM!@{MV4~<*TpO$aJt0%Ea6elS0juX7svTlGQ4tFi&T=At}-7**qLWXKQPqE2E+e zW|}JxMm)a6aEqRGf_zdRxVHju+aDk!b@$fDTJZ48QaBAvCxB;+gWk0Bn7)b-ySGWH z*y(}y%U$PF4?xcVGf~jKS+I6MrB$c{7W0xUObTTeYoRNv&{6!xVangXb0wixQwuj& zoNHlGlB`E+=bxCg`g7`5e{9Er1}meWdrWnVr(oe3K%!9SNeDv9&Rw)+V8_ZnGXo8C zee3LXw`ifa2AfvUW34Xme(YN}-bh22DGS&A4xobQ;n^E>*(9S?N+AI-+>ok2d#?U~ zA133%1J*)LBVwZ6pmj7KI&ZKI0Y6}zgET10Gl^5cjw+M{Y(@HI@B7_&KyV9r=7DpF zw)WuofT>I0H_n?0ijgSnS~lNmnU&d;0~URn=zyKN7ru1fytFkVTyE%d0{LpZuh!Bt zoVlQ%sq8AiJoQkI$!_W%B3k^e(GicsJv#g-%(yRfSnUf|ph|0ho55l0?y`ApJv~=Z zHU~p!6jZF$ZO^ZCLx)@`%bCqUpqDW+sYFU{Ec^JyXyk`C-Z)pCGUqK>{U2kD)yk$7 zHhVs!vKi!2_&e@MvTiq^bv`dV%=8zp0dp-`f0zw|F!mt50Fo`9;)pk(u|~jXltf?F z(Wc3Z4{QsPod;g{N}tAIkqydB4)o%<#_!kkf{5d%y(+78Kx*M%nEBAgbC(WM)jcK3 z<{9oY*-SknM9%9R8FtxSBZH5cBg+>!%n*4rz39}Qh{4g*X*FBBdNao0+!2StIX3ro zt*OZAxfb+zn~(oGV!m_56@7}RF>6Y2KaF6QoMtW7LPBZb`u38jV!Zt4KE2mwjvF!Q%(#p=F!ss6CfmE}5kVttPK*YB> z2YbI|2rt7idEWBVtodzQj`KTw>$YrtqwS+7&OGy9HwVXO4R*oi4aVHk(beT5WG!C) zM?Ze#tg~E{OP$nt)VJfwDLP4kJWz}Q)Gs8{8Ft42Q)9CVo0Z>KPzNI+ZHF!rk3b{} zgI4{^!gIpvD|p(#2jxbGFgA%zbBk!42R#xnRJdEhw=J~lrYkj1v8nJoAP-D}I{i`d zyYpr~p7-$xjM^Pqwsf}LZ5vy>>}jG6Mz@lzBJEtdIxKfE!6kD{?{~G{a^GycYh(U> z*TJTx)6cCctW?K2r>*tyFC5zgCf&l*dvMpT*E7$hHNkK|T~vpn;hW24i7PZ(HGssj zwx!dKY@XD3)eHm{siAd{HpC-th7G6`;Z)94J*MXlS8@dS2R8{h5@!C1%njTv6tAUl zB{4iH_C=w-f*R|~I=h$f(ggfMatO>nA?_ZkeLN8PFO#1K%d6X<=l2$1fG4Ac{H^2! zBsv>V@YoX_MNWP7JslT4sz zApuM&jm-5?oB*aE0Zhk0)=L_aYW0^SAroP8tU(Wq#?Ti}k@wZFq7_=RIRI7grY*58 zyGei-Cle7I6L1+Tp#NAe55xZ=@C*-FI>`bFHHxz7K5%A$#q}>f;3J*MRk$;-jBGpb z9rReg#%LNUk}8=!8-QIHXoE^w_VjzY9aRgzzS+NKVk?AGwzPHA@_mu?iL2Zp&&mzx zE}b@=+u)M(5loK-9+mtS;pY(=`a`!l^(+DvcrLx z?R`D_wYd7#*v1y2>kDVLx?Z(`1Q4MTz(G0n5vj|p^;n#XqEcI+uQjbvdKqP;(7rva zj>WkImyDk&O<9W>j&)M1c*cOP%G&w+5PJU7OA**hTw$cI4&drB3VC=k%tATj1(lOC zBe*(F;c^Ij#%Js05DR?Xw7_P=vm0{&?SkQ#)8N`SBssupaC_yTn=dwBvFG@*{_?wc z8v{X{UE3op!fG0{r|4L7OG;t0DF{VSEj8y;RI1XRqDq|>{$~RNv6;SfN$OBsL2xQ? z)w?mSFmBV>#~1!J`vCuT=@~o!Ba23x%Tg+`z00OegwY^>8>uUXVW*+c)Gsp> zkf2&A6p(R+K`RTw6Pqj`aYo$-m-%)wD2y&(U4D`Fgw+mk2?@N@Y8`tDL6L1V7U2pC zI4e;9NFQ)WDx}cw0@SI|^8B)o4!t|1w^|ogNezIcNk&EUo5@EG z!BdaktQ@tJ%pGd4tM-pJbCT_3VoL?DjQ!8)2}j{30{f-%`8}} z%RJP9%4LOKC0BY`f>v;gZ5|jn)Fo0DtGUhOGItRAf*WW}lG`_L_QR9SvLJwPPI%+xX1_n0}dVu9UcpT82_#-DFd zsbeupO%~eB+ISf4d?>eaUXO(a?!K|5XEd@^*WxTY+f2w4)kLD2j4m3#qo51~G-Yi# z@Y{&H%@9z9#knlDZ;c9$}za=YP( zs*qINQ%|JS&}qOLat+>J|CHFrmwC20vP!{$V9q)|7okHu6#?)%WKnZBR4ne8=>v`t zTdct@qXXBXNN?}^pk~ky)1}w<6W0&I1VKxLP|KYu813fo7>A9CT?!NFgknu{tQ46t<;;?%Etlc+@V3*>-X8>8bj| z!|8qm0--p4f_Jj7fZoEXB3Di9Cp5qz9OrO0PlN*Xkk^2#O?3vuOb614dXpg%15MLm z?h}dj+W-6&Q0uaN!ErEItjw;RdxLGx>NLm|X4cMk)IM?IyX)f0)zvm85=PHZFDUx;4iOO#j&ax%KPY%&trZa7a`h7E-W{)R-?GvL zgJjlu$7i#v$1Jo*Ec9^+zf}Z2Wj8E z{dNit1tY&-i%8XaI!O!FmQE!Jf0Yw6+1Mv-hkGQZu_|d%J~q`z*zb#;;BnXZcO}B+MixbF8ha&l!rYPLPLq zlI$gevd%M$w9!4%2Y6uLFp+dQ2Zvl1=WzdiePr2uI|nr`I{vofj}QM)$0(!NnG{=1 zny?>TciioJR=AX2+BSFMN?($(JHhx}&P@r%=1}BRP6z*)ZD?LN-@GeF?rwJSw;}D* z`}U=k5o6jI=N`jwHJzXhhGdN8R8qf;GoBTrEp|l)8mEwwk9=_(d9#oUVwtqCkaS?> z6Rh>I0yrZRK+(f%qyQ_$3CC0>h~sF3^C6IgAiPd_@&;(oxcWy*_^`LZIlO346`~;6 z5ST~f51=<-6gxPiHW>P{B=9~eFuGCue%{%wE9k0(r|6s$pzN%rkglEkU#5C6_6*h+ z>t`J`SN<=U$0kxW)#Ha&WU)DddAl22_8qCJFSs zRJ-4j(y&&FwK~y>ko0~3!(-0*?rUzoB)SeNd97CBAD`npMQ*gJQqWIlAB##27FAkh zH-YV7<-SMjeJ5N!iu~G;pp;$}(8H#M_))^EQ2z+Eq+mP zHDb{n{Q4@^_`87EHq1NvKN-+^nIYQ4zbxK#00;MoCDd5OPc`~mZ{H@7p1;Z{MFN!TuRu?y0p%w%b=5>2KxDHPy&S&5kt}x zqkON}W0&BC2~qeN0p+poWu()~89BKAGEvNy;JW&7kqOH@U}gbA0sQ^o zen1NdzJk?GW;&q<1eXj=H-oFMYS81BWWenl0vF&K8hA(>Ts&r1+vY6#4PmPN-hWE zzQ3OJ;>F40oj(D&S%p*;)Uw46n>F5YVn$<7>xf^~Kq3atY6rQjzn1Jq{|BsvxYER2 z5s@f0bc)t$^HBh;;W2CV`(m(W1d>Be%U{|2Qt71@4!8k>8AiiM5esVFaz=G4p-TZ?)~Tx0~tQsJ_TP@cIJAWkfKa7Fas8E3#9 z_CT}YJ8*g;6%|8nHb`Ge;CzM!hNGBe3WX?socISu#_PC zK2!?e8DmmBqC&w0XG0znFyJSCTeA}P)E1DW>cHPn0P@1KNf5K_>M!@x)?@%{nkC{& zbeCuQEh|~0eC-{(f@ri9SQboL%FVS8NiXt~~aFQ+bS2x_SW#%*?z|5Uy$D`3)Cz zwCF%Afc0npB39IH`yF1)#hqSzdo$;QWhN`!(UmrreFgHN5BcN!(6{>`e{78b zIna})7-_A2W?HmNEKswA!3&)Wp)Ch#QN8i~E#cwg0u|lCv*@8R|D?HVBoHf{oJ7y2 zXtPa`SJ>^_lWa(r=OU7p*OBx|s~zhRcrcMbCMW)$_wzUY`zN>Fst^+*<|Yw`p$)ox zoQ1*P5MWDJO!YoBO~o%BAs;8Rbpy~t2Q&<$&zRmTj!bT8+6|PzD@5EG+_`Z5#lQ#~ z$?MM?=)S@-ziAygnLs$0oNo}Kv*4rTBG*$43-I?%4+jUIMKIXtl{EgHPl!8eOLYWY z`@ETWqn7<24?YL4eR;*_1|Y?+uk=1L4CBn~h{9?ixIxhK=gexA$EfcPAX?_{P{RD1 zLa&qak`d3^UaYUvx%BSG3C}mbS^MDej-$kG_j-am97^**K9T-m_SatAVGC+JTfi*M zY(!x-ya}p2p~!~K8MA!b<-=+fmRbfs#7bb&K{0UA=9^T-6B87tkp`B1B$eiY*l=~u z!9V}!7cRY&fa6QBM*1q8z%ntlHyZ}vK@Q?I<~>4t50Etuf=>xR?1#wILGBBe5aP@g z7F#^1Yaq%jH{t@e5R6|=;b&sQFBtTL-x6rpVih4w^ozdkC^4)={G=8mUV8M=+7P+o zz-<&cc;Iog8~oN=#Mf$TK%Zkj0nT{)JwHDewruZt^X5&wrgF}K_r|*WfA~eyWv-5P zQ`HE77sh8jGcJ*XGdI zl5_YQ|ME&~;x$d@{Jb4JA4?cwLyNo$UyuuNQ1zPIt4@=>HP4a8wBb(=e(mIwS(%Ow zu|{f#U!qh&2TQGr252=S@sMiWMnBg2jzSUu-YEwG{~H2%M1;_7z^!WxmNZxc0_|v$ zuvow4;CaM{SSQU*ky&v_X@r)eMF#Zm!9iP9W0UksP5f78_L*Pob&f0mM{A%uPYYlj zp}`J=fU3dzMj7!`t*>`lBf8gQH1!MvFTgo82ph?V`yc1ROXu2kws}i|xcW4@Pj4vb z%=#j_t2qcEfcW-B7xo#8CoJ~DW?xz2TtkV!0OP0WKRC@B+MU2R6vhg=d1F41SsF9j?YR z75oWgJf@sVV6Idojjsst0Nhcd06x5*Kh(EuBGG{_BIMEocc^d!}{JdOSekjU%BM~m4k4C(xssb{YMxXJj z>^V+pX!%O(lAg3v4g`FeCEPrOvL-H}fk8Nai(_cE-{>2xnut$xcK&xS3k3kj#8@M9 zW!;f@vLQ@?@d0CKPgtVjpe)mCArC5iao1rwL-=S?f}#U{TxxGr?q7};ezObZhn3->b`W4>${Ri`OAVYh)ZuK<}C1xG(zp>%X7V^BT&%0G>T zW^33pD_{uv$4z15*qVqrmsSJIK1V1(nqI2ZD`X~{Sq`kRSmKCom{tM$<~ zbIdKP%AAqf+{4<;G4x4-o%y@_jPgYbLH{1GXhP{xl9(hoGIwu$mCwIwcHvr(_VA{X z$4AjeK&a$^5Wg?ULJgN!x?KD(pc_w-QMamR<%Ya^=(>wbgj}hR6-+*rn^kfQg-A_u z{n{WGTze96#+U7dGs{j>m|@If7KxW6ZhDHaGGtvv6^$h!G zR@LK~3;Si2-37+r9f7La+&_y*PF2;0(31H!ogL!F&40eHmH%tY-}sN;`*p?8*6S^1 z*2d7Y8QN-B7L`u>_6+PcfY0o9qSEZ)ANu^^J$oVouQ8;#8$yRpo`%L_Do(2yG9*!H zcg88RmCY$_RxqnLnAHm~-%A4;p=~k<3rphl@$!WL6ya&kJ%Hg|4qWVdYKlD-ey)Q2 z348>vB|J0Oc@+@!ou(@1M%|1J1v|HcRAa@W4y+LhJket{d|0TCZ8Z9k@&?w?*{t?B zsaDGF=HEki@r!eq9=)%l<3>Eot3fxF`5%|OgdZ^kS}{?vVHGF|V_+z6P~GL|_o#I$ z^d8dlf6NL}B3VXR)R$WAgN8)hueh);e%V~uydfXlGs`l(Bq3L`lFX`cd+k|E3&3LOtxj7FF#)#kEfR=ALyRS?1Ip1wYbx^&SM6;1M_4a+=)M!(^iPRe1U3%90H ztLE7$t5xA&eR6?+j@o>VfRbuw;6;2bYwWrM5}vZx{qnY<`qewcn? z5rWJx)E(j|Qlsn^pb#(w6W$*KB{atONIab|6POj7jso2Ua#z^%0*9;>jA?pUI-1LS z@w3m++D|{_C;Iwc8ek&B+ZRX-%&ZMvzTfpjuP2&MFd+K?_yY8Lq5+vVp7hF6IsG-k z@aol3cX;ipKM*JX5oK$$JpZjHi)J&~o3wwXGlO}r0$RJYIaCa8)6$ASh*FaIl0g&l zqHEJMD+O*M&Hm%zBL5+A$Cq_UYC&83rTWvyK%N^08}iU#!>tG0g{;)=>7t~5WUZDw7OxmLLCqWBwxNOIg)rCB{T52lV98eOij%4#vTVheo>IIAdK^1 zuIAbXyI4qV>%Ir>v=A^3;w9oI+sLQj!V7OWnsaGz6X#;_;sAN+fh`}xr098oE}1b= zk?cdR0ex}p4HFUzyYZ@}Da{Z%m*35=I;?fHO=MU-jGGuZfj#1|_x3tW&{^BB!R!$= zut&CdvYR)p_Io|6Hcg1-{ew5*R+2ji)<`Mn%^6i(ua zzeB-*J86J5(3g2J@({u-5kIaN+(4Q?Jp|x4?EBGkd?w8}y*^C|Xs2!fO-I0+8X?!c0J7aHU>)`?P2X&KxanEA;5g@n=WCjl^ERkeS^ONQr@Vnf-|Urz zz;lS;(ox^-lTH5Bn0Rr}-#zmT54N;J9o)rx9{kg@XIBxym^BKEPMNX70&6P}JAv;& zU)N4)=?+G(df*9^Kj-29d*NJ2ofRe>YtgEJyCuAlfz(+~-%ye3=nh(VXYqok{_*l9 zT?CAC!aH^9oECYS49 zXU8Z10^&|=$Nz%cBdeS7^#Q2*F>ZyOs1C|aqiLT&^$>6?EZ4Rl?h77J5p7Y_)t(}v zi>+_L5#pHA_<>>fMqB|3l0eE7&Wg3{k3j zIupH-O~FU}B=L_!KEkt}9`O%;hKGipb02sBnc<~=@WI-PA5}KAA?`OFC$=NqZ!0IY z*M5DJM|C9To2L!`4<1Sz=s#~kukfw#aVvZjeod}#_VPFU{W*9xIAojXs|9c)%0Pn| zT$fJj#pnjehKoT1T>Ypp(Tv?w1F~}gu7Q;-@YKUxVQ24z7IA;2bd(&mJShH--m0JV+M&hTn5b6=SL8E=OO7Eid88A&Zksa!>R_RVeE402A9Qd*eHqOi7}PSY9Qn~kKsd+2W5?@200J_c<0c`{Mvon*jaZVcF$+HZ5@HvC4#{!ET<2&} z7yY%z-Z$(Ab#=OQ^7o7W(OyG~p=*TSPMlsl|K7pDzYY)A9v6yT%z`_UoYz+?_8==> z1Ihow-reu<#@D3?ucNbt^Xkf-qaH_RtIn%ysg4OiD(cjC;%ctA^GdPcFG8ie5_ru>!yer}NYVZFj1G zY32MEID#~$xL`ee%&g_oaXj8LgITL>YJryK^JD;gD<1x9uqoPvM$4_y)fZX?kkU6QVJUVn2RYwEjR3tXh}a&dV6(>NR(prN zoY&r3O{g)L zJ`8kQAcexP>5Z+eQVyTpM#ihO49#|-%L`8a$;MSG5~phhtfh+89fDkg!QfUZXA~90PIi{ zMV!W50qdEf$A~n!8NVaUt%}Di7b(<2>=f6C3+{T$V?!gt` z`<}T&8SqQ=9OZS<&s7zGAx5F|<4nnE8JgFn)alBw5Kr#RQtB@A=&AznR|=~}EvK-G zkYzob9~0=wE6_m6JL-z+(+R$vXyTigZ+v4uR;}dE|1ZM}Uv&*fWxlFQZL_xOY}z(- zdvo(6nJuTlf=d+{TeCLy2tUv4kW(b&I?z|8P@ey;#Ri*LK|u$WhJBV=+{-a8rFndP zvy@aX+2ds$l&*a|A&c4bI={*v-kHlce~~~BPS!WaM!x1Rqs^+Y+M#+jL_3r*1x~Fo zlq`-;O|KcN&@90h<0ROpdP&o@urU1orbqFD-bU>R=XgwKHl^4yHF{bPZE!JgrFalE zs&T=D{9CwS;IyZhQ+Sg+)?5;h8X#wZ3J4HU8WTs2d(ogq9H#K!)s0$D$tZMq1FqKC z)laxx4k&E|V!S%IaLkI^d>_O^YuBeqR+?I~h|K2pUEU3in9d7!QtI4rR$-OTUTvzq z0e7#e4B=(+l+Q~)Q&sA;&2iWl4|k20UD%-r_#s85+%9H|%>FnciOyLuy-cE~Re_4x zZRRg<3`f+y9*^B&Y1TM2&BWbNN7d%khC@Qt`XG-}GpU-6Fna1TKLkQLN^`nMn1N|m zACOnh3Xv+vP8gl`(v-$#pkPrdZL;l5X`N<@aR9L6xW4a#%)W5irRDPD*=-X^ znMO@U*B&2#j32Q8%S(b3Uh)22dVOkQb5gF=kkOT^BmB2pEG1|p8|+#}3Nuku*!^ez zeXYgztU7LvSkk69eXLUvR(drd*b?DZ1tX9H6$BJ|daKw3DWb^lZ-bWqEVxf=;Qm0m zgM9$rCNIUG3%}NSrtV3jNi2GYWA6?B3w>I9iP%@$6(^FlAJtzM6VKPG-!F$YZUM?E zTR8PNBq^3Aj`R1Wudn@drg^VR?W{`5n=(=z=rb9$MwpFpI2_OgHsLO?Hnd>OhAUt6 zR4f+Vb8{pz9*f-;4oCS92ovYE(zJ_`0|e@2tyZN^8zFnrhA&=%&aYi=Rfg4e#T7nK z`KQ7Zr;7!Frzr8jsNSg|%zlp3CL@sh#T;9l^~5_)F>-*lO=k;wDrjIXaI<+cNouXnAOY@=cw5a*f2Ij%sC>^_xt-j!rHC{ zT?C>zjl#xh+PzSidYTmqwUkj)?{w3V!4{c`&a`{^pOvgdb*r-Q2yyFR?Jxbl#x&b2 z!N_qZ#NF}rYyU;K{z=HlB^%2Y$;`v5H#|X-=5RwU>d>Nbo6Ix}>RDt$M~LhXp1^&OTr@+6MRXfBfk8vol|fqANnI z4(CB??srK;gtgIHgMuQ)p#}QdufR$X%tb>Bl>Um?0%eSb#AFY2cNl^%onQ=F{$0jR zOZ4`|inAGw4pOHPu$TMEP`ze|z+rbodwMzO5}#D>Gh7I|#5W2aSMapBV!#Int!e^# zcry9HL+QbwkR}Py7L2KmWlw!Jm2wI1gHvyW-(z*yPIL> zY4h$K>t8nxuW4b;RQm~|<~u{d6)Pg{@QP)%9fvz?)H;z>a2S))&A_DKu*dLWFGL@l zGX@lmJ>hMh@XBRFIu$-s3Sc@U2L5|0cf&Vm49 z#r;Yc+`%B$X#vbWgJMw!7L6rBU#Vk)N5;X=f)IP%p`rEQ+W1g>K?;`vyVB`sxKQ5U z;zzg#heN~RMjRru7N}$ChY6SmO_Ch}0jm87S@_?f2wuVTaA#*bfY&a0gmOYo_C;40 z|AU+&l(x%lEKmwjBBzYzT`((c&xO(5EzVhUgOr8!j}Mlb-3wNyD3c<&d``OEf5NUR zXs5MrUCUoX`@=qYn05!ejELxB91+77tXP^0Xu3#XIvBRN6?PJR9ZJ!Sls^`rlFBIT z9KC_pp)Km>iB)daM%fk|U)Gd1E^~oVTjs9)ro~=}YZx=74kb64yzN;XW1%&%;&x+v z2m~bTv^HCPg7QWER7x311aTGW2P^)c`T^rMlOH;-m_~?~NS+GQpBR|Dy6J|dZ!|ps z8|hzcdP6+s#?j&82rOAREZE%9Xz`T>E_$&EwylxB4QY#{XbxE0?vNdNlCWeh@f?P)9 zRy>h5bPNaOW(71wLY;UybqMk!M~tSV%bo54gInK^9%^$e=#X2O@|X(L&n`rYF4&}} zR|6YB-QogOU}u40RZ>PHf4W2FC@t%i8tBU0w58;pxN0tAkj=klTYz77IB#(b^N&9( zyLR2W1S#ZWS5Kh(Gk?tAng4*a$LBgIPNq%ejJJ@g$O0#48}SqN$owHQTmXI7Z1W$? zR>;(qE*3K)QNKr<)CKhEo0;^YAY+obM%m0S_43gnHN+T*FrbV`O6jh?O7r5Lv=)*n zWwn^;$bp`8jves&Q(3`zWpe-Hx6u?$eIrmG7}8rH)yu>ojOV{Mryr+FB0I;x?G zz7%o>v8J0ghJ3949$(S|{JkFp(ZHD5!-lcBfFSuquntM4C zT*tfdvQWHE3VjdnT;NZ`KZnty{4lYhM+0LMd6-L#^sowfZAGWT?+5jKx!XbSE2t7y zxt+0w{*^K&*fbMg57O>Vs)e?D`A<4Qh7%tBcYk}#kG|uEY>TId!6B<$C$+RwCTk}UQ@Y+Xn@dH5-B2vge-%!x1JKkP z1q?+jy0HAMNbN5P`|@^z_@T()Ii%n+)gLTA4V)6-;u&yOI4U?-j~uWSEFX@0*wfqw zsN-5!8;9o-ENrcJgQW1ZO-vciL{E5a1&gAc0B!VV_=#~JQJm1S2 zB*0R81AV}ITv!JmeTp=%^}^99_$RR{Uu)Yfk1j=v9=fUWR#n02Drs0&?`?*9X}?Ap zh;Av$fSs|{fi70E8B>e3C60_ng-yZ5jfka;AvL9ygXUzi)m7HjMss`nE2rf(dRKp! zQE#mF6F#Rf;tWlydz4sGL*baWj0~hK{EvQr%c-XhtF~ldr~duq{@ham)JuKLcudxGYb(T?KuDJiA<>b{>K*}S~Bn9 zZ~US~X_B@{3?CA)+D|edMzS}@7*{A9V#M>0$*%Z5;*wEbF`OXs zwb!LYy7q(b3~8K-3Txv(@Ho2kUR~Fs<{Re72Cphha5n;_Iu#mCOBl(dwy0crpL_B> zbESh-I^3B>6{EqgHfW-IJ+wm+ zP`DN<0{WOfsQDn1c>s0?ND0;mM$WGB(02UgMeyaQJ|uqGAcHTPun$mxpH4wz=NYnj zS|1S$nz#VgIAjF>w7TVS*b~>iF^0D=*oi+%>n#a9gO6Ja!C=E4!EcKNUj3ksWRn8@Azne|xQL0#6md_{t z`0h*AyY9LpU^Vz1EM8bi8Esq`dI-vxK23H*IsE%KzP4clM_E--wUgcJCs?IC0=jQ7 zZ3^m&Zc?dQACT#diYRL~f$gLq20lFL3*B`YK`aN+33$gY=pgKc@q1hX-_`Wck-Z@< ziLq_qkNAf`7l!WR6#7x;a}gk)f=vQ)=_mn%ZFueHLE;iJnb#Ms6TRRsn%*Hgnyc(F zw{<$a!G%$!+gwa*-I`2c)MF`THC|1o^uKshiH5kkcJl2)^9>qs`JNuMzQ6zVGHEVm z02B-fQWAZfgQkX}Md^0!$+1p{vPJ1~-=BFU z_v2tRc!2*O&~SZ$j8(!aKu2hM++R_HP7AANNW$YS?=)#43aV`kA>kq}k^l$#{GTD6 z!dxfN{=g&;sE>i6T8xN$2{;BWl1RZ~zz-&gPy_0kB=8IV5sa>Gl8yAK@%1ljglGlI z@^A3JBUc`{HH5X)0C?1`&KP2cu!zh(|=kd4Nk7>2L|CHcXdtlZKmtDh#qH#G z>lF!ZhkFDNxD~`fhXmG+C_1nkisQ=!j=B&P1q%i*3APHXo#~MbP>_NU_uz2FQdbCh z!mog$Q%5sq9^=sr7QcV0@c{pXsSzaw=bR))U_@@I8NJD8wsv$pRHPN%rwuHb!nc1$yGgl z4RRF#Sr}sGBN$QfR4I!YHyB*1j?7uTl8)_piQZB!>U6qdE4ngM%)GvT|Nf5OgVs6> z^IIWkN#*EW<=9uUQngx|+^cQ#QMbL^jMq0LAKJF#L6DFzF{zg?Kz|2A{UM&;hM^=T z3Ws`$53{kt*ibQ$CHH`#?!?$7sK5dn>z!C^v#YPiF4L+dzWIS(nMvVSTNURxq#!`z zg|TipcI?h?Cc{FgR6>ZvD%Smw0*Q^q9e{#dC*UCWH9gk!Ler~aGK7yE7cqww;Fx|5 zjDntWy=;MdPzuz~2~yxX)QP{?fVN7gZtkT?47?r%$Z1gkt1TQN0eG~Vb2FZLnoUv% z{*fnMsqN_}Ztqj-_0=2+TVq=oTF$@UqU5-q62Zu98J~=mqjn{mbdQI#z9BQOx5QR0 zc3B;ZRxb|)PuzJ%8PMtGUE7XFBWk5DbLz&ZR4oe~w=Mvi!KC~v7))Q-N*7koBDGY{ z{KO4qnM!JN+N8pY2ZHu$Y4^y-|j1xhP{K9rhYkVu4f|1wf^(X>S_GX&f|4GV$8z!J#o zC-x;x{HM=9v}X?>Er6sN=u^ECP<0N`oHi1`GrJzC-mump7D3@h35BL~G zz9hMy7Lj!E;{3N4{NmpG(evq9B_-`qXgimcH!+2^QGl#`i)e{yVB-juKUBusM&kT& zc#mZnaC!8r><0eN()WHLBRjr)b%e9$SIBN~2@S$dSm4qT3tCovT}Ex(*D}FDr<}`3L#K{=VJP9v^DMQvWK{6cyrWNY0<@W z&F#c!+fVq5J3g~3klbjgxm^V{24H<#3S)sJ|9g%DEuGXb58@hSp)e5xQ!TSU>`15ewX&^1=Ta2wKg z8mhj6t71c*fT^sH8`}p$&Wh2ij>eyk>a$557MKUS%?ki|Bg4Z22)Kgs!#oC-^bqGU zRzlOOuE8=Fc0k}WZv+M$9E6?*K3F((3`n7zv*E>6kjR6?R{dm6_}B&TYGyis0w!sL zJ#wV->XqN}?_gMa2>qGYoeT@^enH}&c-Y+YeqZ05{J!f(Pxk?te?rB0VtNwO}5 z)DW=e7WGCqrY!|!R+U}XR(fVDB!Z_rTw5e)QB2F>fC;*p<-fvD2y~%|jD+*yNv9*x zh0r6ZRCKR3mx-n0Z}IzJrsr)n3H$Z(v`$JW)<1mSP^N{^NlF#V!s}lfa_b8QzoB%U zW6js|fK#WhAx;w#xBGYP;%kE~gQy5CtE9rnToi?&Cz#6A0Y!+`V!aV9cNQ$52E8=g zveLu&@dKd3g8TSbwN%{8)efMfD386dX(OPC2+lhO-t)`+c5pcG}hF+&e;?_(VcP(wVQqSKyAOA*%d7%= z4{AC8^I@v8VF1)ZmRd9!*#cwerVZj9%I!;Ut}m zN!lef@SQU&@A1q<{nF0eMWxm^YtXE=49+6r4kyURm|U|4AJfFvEOx3KOV*%!GD?ju zq0wto0j(tlg5c@Is&qz|i)OQWs?wo^u|c7Q4N;Yp(8cBvV)%rro&tQsuzbS5v6Re$ zs>AQ&ti!3uLUFe}!8%>ajLPkLQKyZlOq$qBz(dd&H3_002xo79c=xt#0mh?^a(?x# z0f|ZtKms8W6`MbG%uF7FF{aV1eCIAW7Yz% z0L~5nz;^=fhoEsH2eXE+3BFqZPT==}@FVPj!R0yJ7q}ZBnFI$epj*P-!4&?&(ac$p zJ{>_n;bXA-Q_lYrzc`##*M5uM;Irtup`q_rs}GBsJ|i#(_bqf0zrCgHmJa?m==LsH zbO%aFbkN5lx))|ly0Sh&1fvINxF;t zL)nhD(c*X^mL(&`pxp|3uZIdxN9s#KDZwa3Mu;uqVT zSoKihgYgnrz(r7ypkrp=g%J|;YZA0por^HQMgW0B{h2YKAhW>K#GPg*9LZDlBf*_! zyhL+dudY11V zZd2&V4w8GXOKE4D8Ozx{jD{E>RJ`WcG*86_vY=PG=;^|EVM}h;=~=mvlO|3$K6dWs zpTF6>axMQe^rO=9=Kd0*l!iQ~;fgSL)of6j+V?1Qag9ooSPXp2V~{%4!;&Aoz#B^g z<4V{8XHpQ9W(J`_jFmI+a!_%g^lMGGH`c~Nr6L#re8lKs{Y2o(3k*8J9)yL`82TV! zARDvn;T&=B6C9}!28GY+4PSU8cvE%Kx~9iAGCz)29*1Z3$h&6*klrpQrJ6<4kLdp@#~rc4Fj&Zo1EWU%lE8p z95Uw~>@ta#CrYLO5q+Altt$VgRjaRj@Y-v79n}ttRHY)lv%R02V@t+d6abg@f!TMP zGArFc|K+kJ{)=`36y<*0_6>IF?ai>tLzcZFDZllts$9!So4>Pj&gCaL7>}~}_C@^e zqOBX&7Wx9Pz0gfjLHFi6HD(JrCl3?2@7%s^8zBq~80mAvV67C0dZ|+aVb2dicDo>f zi--KcI-_tezCAgz-N=ft1I4OziyLqUWm0a-&D8-rztE|fNKI5LOOY|z`F|iI>L1la^I=XAe1*uTev^)Cpl;= z;K61PPACfIf24ehgTDsfG=Uo?^cm)3eYFP(TkSX3VXDZ5M7Z|u=YxZ?jt->m>#H44 zE~wTb71UHhB+F6;;1w8Q!KE=ESIeXniQd=GZlMgawt4#6Ykj(MJJ9FoVqUE)$UM~& z+?rI2ow(DNy|4m8V&Mg&{AVR|!IUwTZb@kD@{HUXA7HeSVN!jM`6dDljyU*I<2oId zLN=+BOb{v=t;%XR4e8DDKg|9r_m{+{IpUuOe!fk~|BBSzxOwxl8hN(BP&g#hW`>0R zVJt(XhP6=O8JD$OIT{>=b;Ej2YRH#uKTUKcHMCjI`g3yv8l#jlP*R1K(_7LIWvmyB6_&AVkEpQBzW^1t#B6U> zFQe5MnTf$Zr|0UIZ6*l`1FiEQR_}x|3|}>o_6=8Sx?8|EN35vC#>LD|a3eBIwLV}p zx=~WYp1=kwgEKlAzLy6xRAw;O>g=SM_YTql?B#NsN#%i0&~m^=w~@#9)Lhk#sa=BF zHLVxs6@jB|XAh{I8 zqibFmwAuq)UM;kZbsBzKzN>`hRVpX9wPpEFP%fl%m?+vxQzqM>-`$etXe-5~i%Z;* z6OJF#!}3j}6zFX<+ctZ?)N0Pf)sX%({&=(1)77kl)~71n_J$rRL?d*AI5p1r;@Ky7 z9`MC?f`#)O4$jiS^q6q(v1a_kT9BH!dGjEv>z~SgM+klX?^O)#J ze>Phw8L4zaO%CYqaD$G-#^?HIlgu%of>FSXOGeuibhsmm9sw91V-+$~4`urjEJY5`0Dj6q5`&z-Tv_qx%5Ge{RVZYMY;fzQ8mk0y? zX9|t)%K-Vkt?9nQw7;jNpZE-M!h=D(DL*m2R-EA`j+Nkwec3_&>(G02$xJ4TicIy@ zmi8oZ?Y0~SS$uPfNSK z%THXNkgBM}`t{3ZxkD#ozN<=J+P!nbcP(?)H^b`Qwv*@E?(+witq429E0)xHFpdP= zCP;Pp8`5X=5N)UCC@pNQ6oK0|JB(k05O-hqqZqigGoa)|W>Pl3_Tr5b6L)WgnWDsL z!B4lII`PYZf5H52of7k2m3}3xw391)7L0MGh=-NiWVF?jv8p{T3k~r{X0W+Z7Go^r zglPdvX7h!!{`NSaRw`}FtmJrH){ffMSqWHNcWR7Yc+b|>JpS~^JUw6OrgDJ3qb zLneH5!zc$B#Q zo~B+8_4Q|~Pf!|dH zO|DrOd{ZMM|1rOd_-jp5?56ZVr$ld%`+W>r7WOY&lOQN*eA!%dSvay`q5yQG+{vr> zT)B)Ewzk@%x?-nWW}sZ{g-@77oN}_!sPgN5eed@4Xo8?(ZIkI~TOs-MOqYE;;BiFj zsX*Ry_rb{S z9rxf@uR>jFdrMja{#qH%5EgLJKYi!Xy?don4HaN@^jiE)jy}h{P-747&ni z&cJE@Ej2sLvIuQ=*>D{90qDNJt~iSgvVqFr;djhTo&|HV3xxH&;u4fg4&#?`wU3Wh zEGOY;VU)Ynh_Ir$;&)6IoYUUXKzL9C5omloih&-ospjXE%Fc=|*X#h0LmnOQ<6e75 z!HPFtBk`xj{9Qy_N5|fF`#hL&1pUMzFY4o;>d0u&DE}~iNzpETAOFj;#wu->SkPDD z6G@xYT>Hhb4K$NJ7zBUv6HxMf3U&hhK$l)M&x46Cv7P=RzZaNn6WO+0X9<{&ccJg= z1}@Hk;-@UO!-KzgW}*JYS9FFPXV4d{I_Rt$^!by;VQ2R8gNL0ZA#ki`CF{e^9HeK> zaF92_fXI}F!IU4x$A}>|aa05o%9lsRy58SQ-JG&N%(!3U?U3IAFV_bszL+Spu(?q zbQXUWx_XLG+KCq&y!axz7AYYYR`L%CG6vAsl&~&-7Q9bAKZQ#bE8AZ9!4VrNcdMeMX16Oma@9&wCuKPvutozoTwD!7J5irLKjR6pHIjC4rdfR7s=^TbfO7Q#1bqOJBg?s5qX4{Rb&^K%L6fev?;%<1WdJ*1w>w{3QvjBYAEv zcO@FY>MpooZprS9OwY1dgpxg9Ct4gaR%tbe2iCJhb7lzTx@UOgF z6y}40&}Gbnh+6*Ayg8#NDl)c-iIs-_brpMO)heN6gl|b?WMbTwG_qFBl5UAwBk!1{ zKF+tGSLK!=hLJFOxg0hw%DE&&0hbcEkHq%or}-EDA8GFa-$s?S59iKkH0r%t&60aB zvLsuQ)g{;T-XJ}sl0XXSArN{Xw9uBagkC~uOJM0s-G$|)!!Et|8a6Cgm+zbz$#&Yp z|MwB(*pX~&?%aFIbDr~@(95Uht1Zx2EFlUHBnTR!F0}-W6{e14jVo;OSyEpZ0`3O8 z-@c^M*ifr)Ff=qz)j5-$Fr+Y++0+37Zr`DRTYKi(Wy|tUwU~V>k3ywa@)9Kwp!FJg zQ_^b=%qwH0N+tP9X4BSaoSK`Q3ODcryfsz25_y@zcXAo@rdBCkWSO~Qg1e-2%GFVN zLONq(Bp~2zl{2ho(%6p}#Z_-aK>t?K_V^jmkgh`}mDz0YYcz_E?v#<0Yi!-4x~y`I zZiEdgR5t^7RtZ__!HW1eem)D8s_76~E&=M`c|ab#0^*+=p>z465l@40{2d>JQ4xAK zjFN``DcU(9HyPdlVSx-aAoxMps2E=b(D1@5z#8JrDzt`BqAZXK4~tm~MiqZ0L{mdJ z@1eo$Eszor;Pk1XZ8-%IO0t{rx{6$mz3S@e6I?3igc zEQz)o^~Uxn)4*wEHA;hQE06&7@*1FfG*n_a!wbFAo2wZ}BN_n(>22(5+SB-4ZADFa z4cV$OHW_q==1sd6(;w~7dV_77kltYP%^ey?t5ItTsZXx2?V@>r=xcZdTVAWvl>69{ zW(WQ8@4FT(NGf$zTCJ|;lji14zEOQ1Uayf<&#E0GcWBEErJD09SeVlatYnQ){d^JT zyo;C!=CmTA8+VpCfnugGb747g zH@^Qq>0N!>#~%xYlvm%lVbv-#I3*CamY-V&ykk+(s}dExynsq>tVC2&Q1troH==HP zIQW$^G#MB~GHb3;7MbFZIc1h?ZH2BG7}$PYHB>7#4Q3Fe?CYz&W=(&8%{6QB19-GL zsBb;R_7;lLI7rhE>;cppSqzddn?P;kLMTXI0p4skc(cEZ_{WHsNBn!lha zc+25&kW+-;j8dUT;kNvqQ)Jh)w4Z-PH+Znz#oOtl0j-N~=N;>U8Y|Z!u|AqKRO$o3 zC%u$BAE7seL#+y*qs3M}CMwr*F1HjWK+D`}iOb8`oHowmRoi^NZc~}LdsmYyr1h(V zPse+4U6k9YkINHHEoJCb6) zAXm{jZ5WB49*JCqUQ$oa570N-95BTIT5*|UPv`_OQl95Pj1>55nwT@~RU0&FYr9uo z(qNZ*jJ3c(srkYqDvKrrWl?>E?e*(yIu7bDQiFAi$=YGIS;BQjN2kqfP5O=HeIubiOaP32Oh#9yW=b!_ly>kL&UkfU?=yPWP(^9+gARZ_iyE1R!w zYhz85HjK7{cQa%ccO{Zr=9ehS)t=?2XU{jHJG9wi=}m{~nKql9@C^z<&(s23DUn!X z_0KK^f2bnw$m~FyaU5Nw)C!!*$DqBSh@cHs(Hn=AZi@uB!^*c{6AIh5h`)z0u!jv+ z+?`-mguWlxniw@PV^S?q zNUL})zrGYSfaMjarQuUTi`SjfX8Q2eG zn@ZovO0Un>0VYQ8?+ANKI@(}bGMMMjghq3xvY|;MxTAwX6Cb!9V2>J&!$6ZtR;`yo zp+y^RrAq_5YRI{F1-5STOEoICdF9IHbFbdEngr{XeSWdV(c#xAjJ&ZoShxK1^L3u2 zL1vX|+vM1yQK=~P%C7WjjSO#=u?pZ*>WvbaMaIgtbaDBTU{&kVCh|+I3PSM~b!pid z_3#;zaC{ohQeu%-sj4dE&;l3&sPt~OX9Nc^trO}m)K?o;>!;Oa> zw+x1x7Zm5JY=D)s=-8gV+m{kqzufhQh#NXdf zVBXk{7@ZA6nAUsCWO7DZ4Fg_eif3YET_*{I^lZ6S09q=CIAWlm1Fy8cpfpe40uX)bL+>swUnPKwu zb$Fj=h3PTmEqam%q*Yjr4~ov9EJ>t6(i$bvNIFbAgUo(tq&_q+;^as(ZtrJ?;eP=W!u@9}c49u=W}N(6MHVQv^jc7Yzh_j`1XJ30!If zeTv$GhwLK@SfoHv_Z@u&xtIJ*Wl#*AL$7-Bf(xD^uhW`prXv6E8NhcvcLx~ysj1Yd zAeOk1oJJqXl9f3eQ|D(Oj*qDnvVm9pC-3ax7rro>{1fq8mhFtBze*hl_r@O$GV5U8 zvoybrJVNV8M-0R;U#FWKgYvmRaFPR^qTG;n1WellAlhB?+jXG7-aQC;d4;BEQ8u~< zbQF;&DqJ~UDPA#Nt@WUDg2x26ApSvw8w??sMzE;3NW$I(a0|_2acqHr3_uT2QC5Lm z$&}sa-Y;KYPj$1?K(kp3< zOrWxQ z4mS>30^S#}?^VIR0Es-%i2K55kW@~cUcE0u+H=${ca&;#)+Ph_S&wQuOzsK7V&29+KWs5Eyl{=c&>||Z=2t;+PB1ma#Y9VjHFjK7 zSX}5ThtGzw?)eKmk~kmic^u(o{7v zfuYfsVN@SBklFO=G8iv=%=G>6-=u7IJ+Zu!8c3=2hF~qL=H1XZO-5xhPi8cpQf)}% za?-QHdY4(!DKR^6C{`&^$61L?&6{`_vn=5W!xBZAmf<84ty1pPDk>B(od-JgFG@=E zFrGu|P_<{EGWKmpG??tTKiCsszND9r>!4HNhb^&VPd`@9h?ecAi^)`L&D60TlXv1Y zrLkhdm{N1;xQRb^Tj^@4945dp5|vC7uTq-1$}X+m%mYhBA=7*8dLBX(GgB5@Wy|BLr z@1}4Bj(kJ{XrLjy7&;w{Ib*4mw?zCZAU!hbaxG_Rtd&-^wpL1;f|kW;Qz%)+!BfGB zQzMb|ozLH=0RkNGpcF18)(O8LP4q=H7*tQLq;o-Hh3=>z_tBnNL_z<9k6F3g`5EZ> z4>v%^OQ~P3{Q)_CwMm%a#(}*wn>ePND%}QSM?kKX#Cu$ZmPXd5OKelNT*X<;FMg#q>7}%?Lsv=yOpo`_18o9K5l#HSWqM9 zRLf-M&AVnEaAfApiRa%p)8F)ReINwCCXsb$E6ef|PM_z6wnFE`Re#?H>srSf^kAQ+ zR^8VDnpV}2r2iAz+mNOUK2G?qqu-I%!?!p2i9DF5&m;+XlqTMN_E~o(GgsG=?5kA-+trX6 zFz(51(|f~4E+r3iLhF$%(y%(Cb93EXN&a$jGTmY$Q|L{#c#n=D45j#(+|_k<2JBRz z7WiSVM!EVUqNG3hQt}eJ)My5OE@fW0ZOJlE@|qNpQ&RPE*R*Cmh{`K0k!6#vlAQN` zzf`B=(l0T+CRdl;>gcK$w(-7TuV|7eNW0=~DOUk*dvQm{?#7iXnsB*mX3eUG#cl*0 z)~AGRY!Xz_aez6h#ffvSaEv)3BO67BSw!*$86j-^A1d8~$beuzstT(dD*laL67BpU ztB$LG1iuSFC_FJ_R3OeEFOwgs`r(|$WbCYCVEeWywC@JOm;AX8kjLK3&Z3WkD9Cz1 z3Ler0O+HzeFI^Yb+PD~N{lB=e#u!pLYy;n*ZioZb{Oi$8Odu@H6FeBRy1GtIs*Q$d z6Brar?kqi=fg1*gXJ-TDGIj;4<;bQcx3dK!etf*ny|b zt{#WY(bul_j&x|9qY}pIv2LR&7-|!4#sk6bAoCUY2f74r27;mRbI3*E@LRRVPOkvx z%r&hFLY1`!FzJ^Lu_>an4GxZ$91pf0=e6!Q#J0fxKeF2uHJ=J@7gx7v+wm3@Z=}10HB+$gig0h0#F5{}pTxCX{xmlQ}QLU_QsMQ>5k&51Um>H*KY)fY% zl8HVaeoF7|v6~&eL5nwMHyE0l$(!2om-soIR?>WC{!s&Hs9O{cnIW77&d$ya$F@s| zr`-pvo0)MXpILg=HUH&HD}8*csG~Ku@#ZwK_nE`T zPgl6r=^0^|8+b>Kp4>(1vZSi(@+`T3U>OkzS!umT&FrHM!Ht_&f~tVhIeO~!37!!u zC<{LV!%KS(dbh~DN(jx>FhdP91AM2&bBk6JvjGlzpm^+q65SKlCkEYtN3fTZN3J0i3kgP$~_^Ao`Yvf&E#obc{T~eJaD;>xO*%i`(on%3`qgCDz ziMFb&RwbjZ&`PY$b+VRZs#(^Nu#@S**q`scefqqwaK+oa`Hc$#^yRK3J5R!otX-ViJN}A0dBSE`o#fHMG^4^xZwdvt@_2o z8G=PC;wi8ea76h6xW?fI7`DWMIfSo=EFZ!*h4o7#I(9p=G{3ksXO7f@kFM_cdF04{ zGa8sUy*odX?1ag48WN|ES#d2H9(jOrY$%kW&f0%_G}YBon-!!WRP^!0UB^thJ;huc zx;d~y*)R#?PVdO-mpAqI`|mQ+Ua~3B+2;2r+ev9)#bW>Z^{u=Ph-}N2)IBG)DBDz4 z8Q7^Zh(z~+haSGy9YT3n%(61j=XDI!Hn27S#=>5Li$};1(}Ut(!UX`KjiK3k#S$65 z05@Jyg#*43G6>v1*uyjQIj$C@3(c4=h?D^#MJQ-;h-t*|e=p)#z;++{rOY`a0{>TEbZ^GMiH)AuD>+Hhv^$qdy4;bq<+EZ+IIL z+he0q8gDjN@pie*!joBzmRhM@Znw$LYhoeB=L|d+oAh!C&%1PFO0z`HnK>D}5(t+T zsG!M84f*o|=Z_*?XSVN8D?mb!hd{a3Um_<}{to}ut>NZa5cI^yu|4rPeK~ygg=dFR zX*aZW`<4({Vzzgf?Uv{szu&)*?t|C;_0h(fNj{lbVyJI6*Edv8ER`8KeO;5OdbSEi zdGRJ7_c=UsH)ueJLvE5W#ObA1vvRJ9S94_4uCo5VE~iALWF3i2+70F{3^3E3th8{; zMUWYxCc#i(nv6Rbsk8v93AvvD9}IK;WG*q%uc1Zm%jcQL^Dzj^`|}&S-^gZ(J)6B` zimp_fk?FN`1G{$MOmcST%Ffj}kaAtY^ydG<%+LSCDDyuvZI zev)+^WN(Y;7slX|1f^ghF3}4#7Ho1rABlEM6hVUaT>Kml<6+_VVDTmx0Plwd*h9nb z#ez6|f<77~57X3*tKh$L!{O`3fZAA8s!~)pG@RJbK+3npaEAR*6y$ zgni&+=t`YZmy?I0$r&kW`S^aRU779iFpKj0Qsl{R;`GDN@(?*YzlN;>Rgem`J)OHW z{|#fve?xv+xbV6~i%9o^1?l{==1+8TeS1Wzl(Fd^Crsb^c>Gov=;W2#`<4QdRRKWI zLj_RKRrKg8oTo$B&zyVRk8f$cO& zWc25C3TQS6`9< zP6Hb|@1k>~n>?PF+g*C4>t5h~NkG}yglAtx<~c!0rPSq;H8qneCznYzYSxu<_sE^P3av}E-VGgq zFvUir9U+Cou@@R}iw<5qufn`vyoVTyz?ws?Mh_YtV!4MrKXN2phx3pPSkryKht!Uu z@k;P9H!?RtA96ImicKc-A7+_fzxjr~e#+Xlu^#|2#boVqHVby4h?o{T1_jG7m@&Y; z6odf6 zmcFY5&e>h$d|<#lM*d8XwcsSUd;9vBuj2V1lH{Y}8;gAYIsNyh_3I$6!i=p+eV;yqnmQoK7$Q|D&rS8_4}a0V#gk~6}dRKysAu_P?p)ul5@ zpQ7L0G6UrFSe7s#tjOXG(@edYC>~KTlmEK!*7E`~xU!bhuep8CzU42q(G-hates_*VRZWdls)CFF3jRb{s%0fm zER#Dl3bz~#9xrGA$0_2vE9j@w?z^=QI?%bypKcsa-1!_3d!&qn( zTUWpkTJFR>>#HDczlZiqaT7ia>l@*+-15`~S^B9O4&S2)J+bm!4o=+eA8uQb)LHbf zX>_%4;NUDzyN&3dluml!{@X8VS3Bgb=Ulh@8%c9cO>Y3)sH|<1C1l{8Ah0GWHdN~kWv-2Mw9L?YfDqL`m}EM#6=Mn7>}b* z>9+UJY~-O->z^~;b@c5+nDiPj9oTHBvtclG^gS?Sci?ahYlna&aVXTP$2%-R8~YHLSG@Y=sdLlx zYxREmPhsNQ*fEJpa~%M;Gp`-WFSi(3v@}LM*6?Z zfe=AgVF73G_VUHf^TAkPXsIwJD6>LnfJX>>dzia(QYjGs+zO?UlS1ag5@@WH00q>c zD$~oH4&G3qQ7E|+y3CROMvx=nW79ktCPyDjCb}kcxi(#^FmSeDgQ`r!OXW)F+;p*a-K1;J3CL`AS?-0cX(nI6 zoL@K-@O_12Ja{n_{Q{J9Id@h4zU*wkco*AYCzmLl2`|%^_HeQAoJZ zsW)Ns7fGYxwRAOkZfwC&)nX|ybL9@E9u*r zf=SpR90e>juD6s;293~_efdesO zIm-TEyR+HbGLU0yO&Yb!qz`+bwXQU%R%)e6orc@<^wY95I+P5jlL@Ib`{5qqtGTnO284a_BQq*Dn?LXbZn$E*FwR?W!(3iy^xg8KS6 zji%1E;))r-W0Fn1Xp!x!l4++-g1N*~PoL?^e~uj!67nZH?=JXB9nuW9Ah|t5|D*dH zw2l_jUCfstqW;4EV~__o;d4^)WGW@$nvOrdS=xN!VjulBm11=l{A*VOZ#Hu^XFjpb zyyVfHm5MTT{hwY~OKLmwKgY@2CrKZqw~$Fp5|WEIPdeq4@PWcsdhrO+9O}bF|6lAX zBAJ-w7wrx#W*zq^y_HO4!XJD>b9|7%~>37S10s7MMAsEf81>Xc^#7 zBL?JB^qhMOc40vZa@_seZ|F;izms{4E&tgzY#+u)1zFntPLBC9R&eN|{eb>t)J1ToYnW18|Z zJt&~r+vwRLQ+2r_tngLS7P6bpl;DTIq|?B%O-dGao|B*ll;6{r@ko)MyDsTw)(k9S zryHv$jB-PpPs19A!`s*GD0TLZbRYE+6(d@}+&m&={vy^>Y^X*{EX?BjT~CX*46 zo^BG!^F8eB{2r!;7Or($GMOs!AGXP%)~Fin3wKO_Hb~jX?XyfDJCEHy zUIs&BC!R6almA}yqYu#B!G2Uz@T1IK^poJ0Q#Q2mFh4MP<&|ktlF2Zt)}`fI-@N+E z=qxYHQqi9J_jBrGRx@9=_1=~4**9;2ikU@Gd-lF1WbP6C>xR=#>-f2_#hyFD7Q^%_ z^M}(=3=q(Wpdk>jXtod}uvNgEE)+EzFahPr)pYiK-Q5DrwK8>ihQ4S09s+IHRLrs6 z-H!>{aBI?`v%!dK`RtC39oF>dN_DBi)e&d{2^C#)N5TsoGwx`x;pj;jBN=#*nb$)$ zglrW~1yDE?E+2ied)Kx)7|2*Y@5J?CoiVccqy-haDvfXY;^SdEb%61ILRg4WNYap` zHxX>;JdkWdHWJEZpNiWFVfSXi#vO!k2`C2aD7gM&^bKpm6`Wtu97+VTBU(ymk*p9J zF)=y&Uv5RP&3mu7VtW`cZ<*1o2BWBHg|YNfXQKilQH4>@Z)|7fat?|Za>cp}p504k z25gPxK<6l{dlb5~ShZav)mvb0c2rj4t+wdQdg3O42hCU>DWM}fJGnMVCwBoJXbEoC zY-myY8;VEvlREk;S(r$u_1u~ZN9i$+2ku2B2J%u>?>Q?zZ(1~~ykgG6#!F-L%QIEk zt1b%ZgS)Pww?hx4k{=nf&fI*_pZe5u|L?hn#uBC0z(-4JH5DqI1=?O_95v_{fe|s# z@BvY8WFhy#$t)`gk#fF5^e;3V{XVJyH!uKc6w?M) z=`W-)!?03?TxmD!11_SFxnM$_nv?PzOXziJTaCgW52Vhuc-vN@7Ak;4NK28^+e$8@3+4FX&Sa7eOS|}4;WMMZso$jE zAZS32Ba|{>a!G=I7QZ!X2rdOdKZ9(-+*Y06@9Rkz0>)T3^GOuT5C7gMc^1V4n4WLH zrLS&WzC8NLFhiP1Ij9pVJ#;$z|j6w<3nk0g-9`J_y_qJy;MsGeQ5W{0b7Nh4eCJM3yeiz-J2} zufCDp)VY2k%&V}=V!#OKNyOs z_JP8B9d!L!xzchC{V)hJ#?lA}gzAb0PZE5bE)=I1dZz*_Vhqqxqn@m*(NJGC@Hom? z3vkPg$)q$OO-hf6txFuxzXD(!F!b0so!7Tx%ZesBtW@p%6E1-{UU2 z*o9Tj$9sD68^v1xxO9`CFOr|(QCGP}-hV_J{uyV?G~vjo0Y)Y%_pW@k7(zQ%>pl305o!)R%_`#L?S%s&mU|I2rVU>@N2-G7V2Fsvg z-2Xn>d!*CRAL*`v0ZytW zwa2sbdbJh`g+!v4SC#N;))7>h6%vU|Cihedsq1aPze0-1a1)BHK?w+RPZF|?!^~)5 zl@B(fgApx6FW{w%sg@OD;Dd|H0g*}s-fQ@(8i#kWh__Df{U>5pvYhM&ayDJfVaPJN zb4C0s{tfyaM#2o2DV^5=%_y>tneHb)UYTWWv6B|?PSxy{AyaKeE;B%E10wlS8EX3Y zG=$?gy-MlR@^-saU#?aw+H}fRO?j0;QK|wOm+UR5@}ESWqisjF;R3N^s$tgNm{hOl zLf4VR_7#8Iy}3@~Q&gUC(cM?l0XN4nETd6rLX~p8q&%n58sT@!jAni8WA{U4z`0k+GW+^j|BWX?sq_-Zi0#)o7%#1(hk1 zW^T`)2g6#@D=Vd19p|0z2$k#8$Hq;NFiN$7ab-2#0Vs*9w4Gz>KWL#>``^rFTW=y4 z?cDj8gC4_PXdHj-c@UMly_;049=Uofy3ZX%@>b|}0K=&Dw*1j2KL7dE0dLAL@P1?F33 zxjD%#89Jc&jJ}10T~^wyH=8p7My`}Pn#y?7UweBWk7z)ZCk|>sQNq<&-M_<8~1@Z*? zHIG2@#g&ACznS=*Gx%}WW}H%=&-XAS5gcAA=dSWAapL&eskr;g- z@^CJfh`|&=pO06#HF9N#%wi~jm(u89KHQo zUF8g~$v2a}PIr)I`uxfy`7lK$B=^a^V;pMd*uc^D8JIV$EdO)Ryoup|QK=DmCliHU zApu{907Zy$a8KZ$gAltzOdYfz7HQnWj%o-x;zWHkIJsceiY-G!UPP!hlH1QZi;hHu z2DD0X)??cS{=1C05UFJ}fV6 z5N2Q`AP>ia{T~Zz4)F{{oE|)A!2(vH1q4L~!I2SFq63VafD&+kjnYYLB*?Nkc6EOM<+0 z&<5L#bso6tX4oi?vHb-E5?7%TT;37#F+>>)X?G#I0$V(Eu3!fM$sI#jST2O+fbucS zHvMi`@*2)b*OSe3TM5}uRVNYxLy%zx&5hj}tF@~Qx=I~QKIjbCtJBoht_p$Hh<J zz7{dMxVXfTzXlUCbeuQka-jN@mCjFYOVeLupNsJb^I4q!C9*m}{=Q&A`)hxF*98MB z7;QN=Lc%;hGE-7k)olYUT1{1*fxK_GcY+2~9JbGqT_X@+s$kh}8Z=or$pp=|IC<|F z@Oh#r+E&r`;le=@04E0MxRB)>L>ICMIJsbjASMU~i`9CZW&&vftfd%u9Sn0F%?}of z9ONH(@Ur+}ECjl2hA^B|tyH;9#t;DJa!-pI>J`wTFJb5-Df>7alPqiL)if$ftE>{e zOz(5mH|k3yEv)^!kk+HAml<{Weslyp5@>FMAOtDGvy&S#zm3p-KtI5gk2#@9>$E@x z!|WhaV&uwndwwVLrPjdRKk%nCD0QPk_jkApaiR!B7%@cLV0eoYtL*+l=-^uHZ)= z7BV@lpudg-bo~O#DryypO8!DPVl99$LJbHoWIVh@K&IGUg~|emNe&D1Q1oF~Yz^O3 zaJqwuAZF9dJm_57r|D4J%v#W9&>F2Drj<^&M;p|-9995W!Kq#dJs7eC@1=jLUmfE^ z%bWR^UYZcshz%Z6jQQxNkqFl+2}{l(pusJ}(TSPh%=UlC_j~{&+dpS6NRQJ7R;`*} zWvV`I_3A!V=UHcMZc+QUoO1?Er`TyA(cm$8CekvM&(LY~Y00Sxq91tN<(5Mmb%loL znfAhR7HNN9e@)-ojOG+fV?FHehmQ!>qi%U8IORV`iWSTxE-pU&0Mv+P6TY&dr4Y7! zu_dMvk3S=v;;t@PNY*7=klvW31C}>HM-6&OnQSiiE=rXvFj9FsHZS?%Wl1Pj_J!k) zu2Lz8W0$55`0cH=>X53YxtKQ$ZkoXWY$t7I9i8-aaJn$ws)XJFJ#gzH&luX4S4-6z zNyS{Fvn0`J^V#Dm$VV|cd2(eoTml4jEb68*t=YCDNM0~^G5>U;=yMCce$1dcYbM#kN_DF>V2PL-_5Vn#4aR5#4EgZ3$u;gq`^ZT(Fr=ksQeP}!XixcoCg4p3 zrFCU}X=}YD-Isq8yD2!ty>E!erEStAKR>)9O7p7s>8B|A%G}uMNd)yFZ6Hp@LoRz_ zcw>aV6KBS;rPX~l(2TOCoHwz$hFPUX_vC8RO`z7mvqbH}`CdeIx1nxgw-x$U4KYyQ zGSpA$v8g>WQ>>41S86J&boGXss*y*t$y1!(QGIT&Yvfok1Q`9?H|&<7bY(G*!>(4* z90-O0*A{OUp4*}#A_vY3S)IiQN7M-r92_2hq4y464o^b_0L~B|!;v;Z$^Ep83YtM0 zJnJUl750&D8%tBV7F|65Mf(LeOkl=ddw!UCKBu?Z`XeyVwlq}3tL6ExvarV=z|JLd zWpD34b7V|6^%+4t=`QAy{Gvtd{DCW&PdgVjpVxd*qqN-CX|J{?w}DEI#192Y3AvO$ z;dJs4DSCt@<&`9SOU2c6oF7_gFJPE6&%A3?b93z}q#+=f%iAFd86&v<;=qcg0#=Rv zbjWgrC@~3_id#A~JaI)tMTm&ti6M`L4oh_ZeWG)VyO129@>MC7H`WTQO+Fem zK9@|s00ZjwA>#E=&@*{no6M$aoim|1u&oQaR(nqk=dU7X(zP6>yf*=F3G@VpWZ+-`y!K9~*D#eURzyE#%5AOF`y48#!kQhcjEwa_M@IFm zbd9jJJ}BmEorC6LP|HK?4}kGzD%Y}o>$X3~n0T~iuV zRV_}=B(pVCq(S_|%~kLYk3&XI56MgxWrN(LKQpE%@9xB@W9^Ajc^Kvq2S7Dk#|7d( z#o2zPMK1|Sw5I$XGLhcOk(qS&`H_gUMcOGH6I|NN1sg!3i>1y}u5qU;a>&X1}U_?u;^3`LT0f-9P5mJva74@sR8K z(=}K3^iRBY$8sNM1TCFAKiGJV0>%h=b!D>`U3j!(Ubq*J3?6RWxb1)w_6q_Zs6>lH zbkBmG?Gedg5xY=f5u6Pcx&*?)k$KyE!TJ`pw&8n3q@p-w6%pHlLcq~)5H!9Nc*}`` zp!=N|JB^Rp)4f$VIx{#=0|s*kIVJ{7Z-YkZFd8C0BImvBDwUQ~=v2}NgNo{oa?Zpz zB^2eJoT)-x)9^yO(j;pLHOjR$DwKArwgRoBwp8M))=)p$Nmno^dVCiay@iVI843D} z?gPlxXVB}I@e?PWGhsrQ-s-Ui7tJUGxoN)PRCh87M7ZtOPSk0EOM>AUQo~iFuGkV+ z)=mJCX`8I{xHfM|)>^5nZGGf?>>hzyZ8nRZ4-|oH5Z~%U!8XbGfNAMMfx8Fc4VRuJ$Ny zj;Zwea2@*1R#1#4lVX;h8fd8HYmzUdZ1Yba1p|Zlkz1zkfwiCZ-$_XVgO2sIQL)==Jt8cH9{dKfN$H*;zJIJTi>T+>|=k2huk?wX<9 zI;K=v;sl*^x5LG%OEVUYCF;;@M|(>YcIXj>c}HPQ`#c{`yLV5jm-Q~{w(&-T)Yv(F zd{EmyJ+23Iz|^}W)ok>pf(B)YOw-s-@1dJW-cKJ6k=M^U>!H!@?M=Jjh}D4qypbJM zND8qdR+JM*{*OrY7x_Pf$es`d58aI75j(t{v(R9MZWLiGgbRvcH#gkQ!E?gTJOt7q zACPwX41*u+NaCH5w2!R^i9vZ|uL1bRTgfp=hJ&sswcBFu1m>fxyhEeZU|$@^(DjLg z8&$dAc_$SD(YXlkp&NmRjoISO7}zlAaI&4-6O`&cq#u#V^k#BjTeyuFf@G$C+@)dSl~Dy4+~BWsN7Dvo=6^~nvXudzjXq6)>aa?IczCYG0J{7 zp8rv7u6cWl5M}EHhQ$93nlenjy@1f*jMALYTZ5xX5JBC9jztVC1y78tBdnHS))2>n z4p~7lD(HuOFG@xMDM*kqf>2XXPaRAd4_@0r(s6|ti$m-K0|MZuATy46CKB0+hJ}!A zbh8DQA(%k zw!PiiDQV+k+=U1-vS^F4?MuRM%b)xO9SP}YRZ33ffs#mt%2wyhm1&JyHaqYyW=xn~ z8GR-~e#pMZNUwP3k|vc)5hf%4e(v%!x=RR5<#vy~Y&|qQ+}-ik3-LpHn1mt$F7ur{ z%pqaRZQ9X`0-UmB>a9`e7E~Af$ndz{3i^sI1^Bu+7iJK?HiA7zg#eT^Lx+q#3C6(+ zU(t0JYD-Aq5zWsZ$`;#^`=3B@h1aob>Ebx}U((50n>z;m0M?j9uqLDo-LHa*!uROApZ_D4a3C^$8Xv&R`Eid@1Vq3j1)F zsXk)#gK;|(M>PX@+>4~=AgWZpmdh=$^v(^-YFiqh#17LU7WS;3;CT48*Y3?|vk@$f zgyYb*a5%EICY#s153UmU5X`&@6V4nruASZ$Pgc;CCHqE?aS~V`dHMWVt?|?4tNt2C zeWi}un8u?bYX(82{Z?UZhS!zFu6!i5h#~edP`X?C$DmlmzVR^Q3gR9V$|!?`UcP`9 zRTcg&;@UiJMKlpX9!$u)1zh%Cz19gp`9otp_5LW|4oO!6aqo#;~{f}Ji=Fy3u4wbYn#^R{-mvLK_i5qbyK%z zGDk;hUr3*px)>U{8x^Z3eXjyqZ*Fv|g;QmU(PMW{nd9&;uPOlo z)SjTNS+8^}OszTUg^Ecv#1@YXf^S9S)&uAF@SO*1g%O{)W&%S}(CsOHjplR+$`&Jw z5THEp&jtT;=`R?siLR@jk)AQ&D_G=1c`FTR+VO#YNieuj?M zh)%&pHggy0I0Ud)=!l3v&{^;9c5aP$JQ`}v6LNOCQbcYp+CAf6> zXDESgM8K8Ci`tVCHmv5WcQXcQwx5?dYz<*m;VSv)a9 zL6?-aTbv*qs)7z1CD}twWKDQVguHHUp3!etd*tTiIGC@7{N+arlRW`@RtJz_SI5w|ziu~xnSyzoEtKOTyHnq{y{PZ0^v$e62QFV@OQ9%Jn zUXf_h1C3MR(WobkeFU<06FQ_t&0I>YJPW?^yK}YKOLpn7TAdhE=(h42*_q3I#OU(3FjwX0tnMbxJ~|fKnFsFQi2~n0rBZY^ z^G1GImibFoY0$S4d%KS19F@%iO`g&a@+0aNoZ3Zo{ z%Lu{g3nYHR370dqb@aa#rtuHfT>98)Ap63xFtH5MGwF{tHDxQt88u#wSzT6YGI~{d zO%>Rmii7Nr=*^1N@1jC#|GkG7|95`^Y+A%cK^ z!@mKgMD{=M_>k>ImtYqyhvw%B=wCuM^VG=d&aZV(QK4SDg}h4Z9*f5>jYLScvy(3R z_rH})YyO{P)cfxNZx2t1{yhvA zj#F$I} zz~v$Mf(M<2uQB@33rlo}`8aZ^a`it=0uOxe^{*6GPp25Y+!hU^tfY{i<80D=nHswimuSRw2>(l$*OWQ~Pz zLa6f;_&!B2tXR+#L(^ce=qmq5v^D5fv96KLzD5Qz^sLmGpU{6{dvR0H-l*tM){#|F zON*t=+(IwKK5-z4=D!3m0LsS_%nWW!BzV6x!5Vt0!ick_rT8hUI;{Q2ljnY zolIO496{SrU_gz75)r15iwh0p=#&b_x2O?TEJPNZl{lLca&W}004Nr_^_V}hLgZS; zk^lI;Z1#9kNv|M46)OW+Yd-lmt*`{z)~s1v-CjO_&AP?MkQp;)((8`#yW?R~($W#N zlZvRhXZhvFac0G~yO!j6M8i1bY+RH`2#pQn!%HLYtDb=%1h^ZYN0=)pU?taFUENIHeVrQY@^CrJF%)PsnkEw9z`4dZP$A9#@RT4vD`kXfDK< z0!Cc{1oeAqI(i*)C&NR_*yW+n1y}ZnGp4T3xHeCdfK#7%;vPeLwoFwbtLToHH}3r& zMQ_KGhv+E@azzq^-aDbl#+S9pkhS|xSYk;GM8jBA7T1rMed#ntGncHf8)RTW?nk&0724FXJ>sno&Sr_ zrIeOlg@F-=A9|y!;@_%Xp+ArwdLMKDLk~55{WTNIpTJz#NjJwHioG2oYdbG^ebsBP zy~cQ7Z#vp4JcTa<&HF}J3hYTZm<3)XG;gF~{~ZUNr>B5g^)(}I8u8Z=PmXv4#;L)8 z(DA=>skj62a^aYZ$_s_~#5$Oj!$J%Nx<)@tG_+VP1$~^VMwS`O>xCSCXh^73YQ`=I zZ1A@p_EeEFh~;H)f@n|Rm1gLb9aIH4{G0IS!7taaT=A2~V=)eqJE3n{A|Q8Y3Di&j zMnd#i=mTuXzdX6d+S;tG(=_@Ch$;s(6dTR_Y)4b$rhGQe$)rORo+1;Cfq+@UU?;3S+u;s`jb-M8mBI!CG^+S_F(UXqi-E@oIlS;zFoCtbpqtv8p(pkpW$rVjRKDrKguMMm@Tdi|SYo(6eA-xBOBhz3s3Ke#2 z%mzG$MWiefTH5iJ^6>+Ru`)k&sDAwMd(ddTIk@@MjegKCWs+C_In&XW3y}LC430fs zQa|sQvWjEp-(%z_EDWlYF#Q+^50EYqmXo#28Z$~;IniZtj4R=QMl5yqS1U>qR+TML ztA=^mI%9yj&1C7YSS^t^2klra|9y=4WQemP5>O-q7 zg?o+mUKpn*#4h6I7@|XpU)N!@#Ucw&h_>W8#k}~o6wMp3GYY7}WCJz}dKqv2T^AXk zlH-X7z*Y}5pFzNOM`!0sQbpf{$7QJTb6004^XZY|t}R=_KQe)iyrY9W7kVxnp3~mm z@Y6@H(!WQe^TXjr`t_?&Y{V@uQW`bTOj0(Yd63X3GCyWP=~09v&K8E^iW?qxst`he zCo67w>`BFQAXrb)l>VWeil8>U91g(IAO<`}c%1Non;X6cv<=*8!9S39$cGfj>D~o> z5}l6E%$ORNYCR>OA|bcCHQf4VK7B{4s5b;{GMBvdyDv$|O-4!R^wSOmH=eRFz$p}rfAxmdezFxvvYv`j4p8W} z^|+oM+^HDx4HuQ$+%__x0}G|9j@BIu$}fz{sRG=f(s^!6edB){2O1k6+IazEHQJ-5 z5=#OEd9jgrNbs|W_hR=Oj`={YD)v!}y@M-+`v29U6&t?F_&MH9M8S(@N4T%ZupfR1 z;B|)vEO>_oWuW1;|35}tX(cTH}tUa12h#Htvz+->`f7U6T0{tk3J~Fui9YhKh+ETj{jxqI6X%V}ssFXfOj^ zQ_tk_A25n5{vG9wKr8v%X@zmtR-2SnX%y|*4l!*66bUsTr@$#op_VQ zp_8cdeWGxVe>Vif@QZ_o05lfVPeR;ao`3->ol7sVEQjHI+5@`BlntwXSnom{}ivuc7t-Cx%u3kM z`9Ppy0vI5FNLa&{@z9 z11hEstJZY;O~PlhM%Da09j?xZR_PEI1(ImfJlkI}X2iO)eFdpG_&+|B%#RciRUo5R zscl&6*_05;$qXqyDyDMtQXJQcn5xajPw}iC>hh#CXh|yV=A8kli5+GcZX<;(se%qq z)p4UjNtkz&WWHns1~i8u)Jp~7q&nnY8dfSu%e^F#?ei#!>wF3eJIJ;?NQywLfo-tx zJ5+JKQb|}YV33813D92{y<>oXn^s5KmPZsy()tid6o%TB6svJ0Z@{iP1|oVr*%R{r z7QaA!M`Qu(IH9X+TeTXa-lW#?JIPfq)k>Ln9 z>|J8ps99znOYj{Kt#aHkV{2PKkk2KY0DJ>8d;|7P9AF_a)G|S4)a%V|X=lJ+!V|$a z0BSm$xUXq%kUIg<&W9g18OmC43O|LW(WYc?-6_}rKSU*0WT$MUDS1JJ=5}b z<6y%5rHwqiue*4a-994%I8dmxKJvQB$i-|IrH5!HKm0x|>V;tU|3`Py3ozr|NXXTp z@}mU11b2kP$ArU$q-j$R*jQG1O)ty{we$AnJEz1ly1@&a?KT40op6o7HaPW6b!>;qY`6~-UY zP6%YO6>Pbmr!g1=5~YOPK0F-0kFX}GcOWtU=Ieh8CN2oTv`DsV$A$OHczm0kBV_o( z3bCz~P}-Fp5rtRT5f8;;Qg$H^lMNC2;OqH7Wn*%q*>9TX2dE1({Z^mv_h;Z0d; zGx#eK1i7KU5B_T2*xyP1wcxLma%TLQvoZ;3ipz$%eCV%u>7I&`!4>LyhJhIe^9ht7 zWpG!cb$NOdQC+#BS&Xg&Saq^E9c!Yy!Q`q*8b&OTHO*W$dC1MF#(A=NMh^)GybVE= zR^mk}{Ag$A)lfw(5;cmkj2`sTNj(bhw_^h{Au%M6b6Z@SUW&y}3bSNfOJ5I^gsu&R zYW-LTVB&8#q|*%SL0FhPDgB}7WvDko36~-3h(}&|V&ke+zDI8J`R4fj*L%GI>din{ z6H~?2iJpKVsT5cQLYsq>-+udT#Lz)OKUIqtf;*IzojHWZLOYrMMh_{@Zrj{)5`=cA z*GEIvlT%zn#Fl}PO}{WqqXX*ckcy_^dlXS1NI_PL2nS3+36L}dLwg2y<4gYAy~Rj^ zE^FWS4Gw82A~>- zT=0!TmaPn)+i7rzf!$FuB{p zy#=>MjDh>H#9t^Is-LdSF}NW5#sUL0m?2nvA)lv_3OyPyqKG!|nLII@I?u;e%KcK! zh!4g#2Y7SZg-Vv6q3m`^^&BtDa9vDp=A>Dszkm7Vwqo(~LZNrxKJw#i?aLhTMq{hU z%)9SW@9fyMEAa)fGsOjH6L|9f2y8fNZ9AL*GJe{bsZ>WGMr^(_+`EG580j}z21m|O zuzMGV1$^v~7n%Ta0L($KVC^D_bB;l+8#J)YJ$jD5*TvW6)Iv?(Em8*MQbm}YP-#*s ztva(Iz4O7JKfE~&&C2=x_d{O=4#4JtY(sr!SY09)@dT({&`B2Ttbz{wFy@A23t@Ud ziRh_0c9?|=f4`SJwy*Z)X2#L`E?&z}?E7dn@qX=(%fJ6Y z#`TPT`lp;iv@10Ecmn9hN6{y=`O`LkIl7UzciDsJr@?B_u(w}rA2Tf(XGq{Q`6T_PfhNy2gRyW2L7 zW(hrqUXQtpsGAopia)2IHZtaw%MvB)rqAv;svyC63CQu5;J^g&f;$PxGtBXa9{TB} zNyx^d=ihwK-PF?5;_U4#?}Ap_Qew<(9q2ST484QU5Y`S%kKZ@8eri$c9GN@>UE?il z{@b!*z(r@=uu!;YxOi}P>#@BYCZ09|ux54u0**`?Mq!qS1)xr+KozIU0SA$Ci#(~+ z{sQ$m4oSGaRC)>Xr$mt{0+d1^LJA~t3Kp!1xmD}gTX6{E)>C&&V*{)55VwwRAJuJg z>vKt2n>?PqpqpSRJe_e~t2kPAN?7E7ZrwPZBMdC}qPdpVd5fu=CnjRQ5>ZDHJsB&b zeW~5Cq8HMyYJ&GP_0D28G%}14l8=|&cjfVRzD<;P8dWV!xyKq;bJ|=F-Iz2PBG8q4Jf7gB07{z7SYh1&E26L3 zw8M+nitfreaFzcbPBE8bGP<|7R}fcK#zUys8=PA{UR@n-gIL==R8rS2B67u=9T|ap ziVT5(4JZ-c`uINdJXc{u4j_BEA`BDEaRqG5hsbNDs6h);~qbUspg-4{}ErtbrHZ>!o&yNnvg1`2)qu{;NK))uX%eJEwz@*i5F`hkjrW} zzS<+Qih9MZ_mJ!!s(ccIyYHLTB~YO46dA~4VzDq17JKMs}K;h#y1tg~U$@F!kj~5^$vslD~9V$|abTmHl@l3=O zFrT6Hwt3+Z5g=$sj#y+B7uxr%fW()RUq4)Xf#|MMH3zh&9dTKODG;(M90A|*@IKTk zyrEis9W@9GRhF1jq1Ft~aRl<|fI57v*i(!uY!Blc)S+k}WnSQ|V81s57aA))M)#M1-FhKYbVpDcwk=RqNy+LlMeFh3Sp!U)R9lwk$%HycbT}7=) zSLulv!s}gHeYKlBw59aYB4m9B_|+*wb90gkF6Dn&7o>U73=#0UOk>svRDf^BEJ7mQl0xEX=}})Df}R2+@)I+J>EwKgxpHX64{;*dF){J1efp=YNOvStt#N zVbYF(g%}X=Gt|XqBE@4JDXD!1V~&XvVr`3DZMszaNz>x3C1?d?m$xmo4&hQ(Smu`q z2HCSPq+xZ95_~>KtZ%x=A2jRa2f5+oTV%F$<1 zwLj;LonnW;(5e(c73i`I-)Q8sbOs1418{4fn?;oZ8)NFtyEw^;X3pci#ej`oxklIt zNyijF@Q0Nt4#$(ei4+AHuAdJ3s*i)ARF7fL&~3e_Q4xco-k^2G7I5y9N<5yepiszd zt)}IuQNb><47F#8Yymth`~&o`LUsY~@z1|PP7QsH!NcM;h8PB}F?!hli)e-AQ0_9; z$o4{0d);p!(ryI5fupX5=>xo~F-NnGu%8Rr-DLj}E;HWL8IA2&GD9rP4Mi`t`oDLx zAI_pr_5U?R%KmGMJIKczyste~wnJaLt(chB*G^6D%*BOC3p;IRz}8F|Sg^Vb`BW4A zo`|`Wkj5qPgSWgt_d|{DC&_&ad$kY)C<+6lZL-mQ;t=+cEKc^)Qz4UesLy0G4a|Yv z#N9=v-b_O^#p%KPz4yPFD4L4f*loCAV9}xQH4UYz`#CI|j7~1!4Mna($t&@d$~IU& zU@=_@;v+Y7cK#BTt~Gpt1dUNml|*JSESP`Km(~^$L>$PZ*ruEXoyGV)r2&mL2krW85sUnCV!p zFd2(^U8}BG22*PW1oOE`3Gya~v94H)OExyy@!2xg@YbNWO`BV6<3d1%R@$fQ-O$Az zjYQ&+dK+RZpltNy1`Wah4ckmNI{+L2h6Iijni6#M&AjmLM<0E3KgKXIjCYAz@4yTHhC z9(`I{aj*?|bOM(|7Fjk(Jezm{+H0Qg>xl4wx)+#)FqHr?w?Vac@Nt&G0!TnjxV(D-7=QnxMWH41u?am z7?}n*h^xCQmsSW}8JfesVw{~7YZW3Uh@P<|a_yy3$2_yryilOFFEHyZ3zrzf8=ZQ6 zwda1AuOJhc1d31vn!}LOShsx#;>p+?hE##RMrUoEnL8Qw*VhzFzo>sb6^P*;d@miK z)gBMWiT#myn{o(<-%trFw0P9Em&;FADqkRlc@WLTJNf)xXdC-wnOKRPVln6x;~0Hh zQH?<)3g5J%>g$CC$eq}Ewus;Q;OA&O0keD#|00uT389x+$igiozl|3FlBc1?XQnSf;0L`3R@+bpV>(%o^Rc6~N9j~{p9j4fcVNQ#R6^< zZoSL6EsS?w2R34uOvA=*}qmfOz{0B9Z^rhVAheWYyxg@uY*vJc2<)_Zyi~#_ znnX5BZF}uC8Sx#(B0{ge+KhW!#n)ed zeNS#A_q!}jo|!G|JJ=H8u+#drJ@hQK;goQR@XBHprCFLp$An9Sd>Z^1-~YgJ(HYN- zxEkA!qt)swcq+BT3sh8vNtXP{C;1p)t)g7$5zjX zXf`Yi!)eqQFnb4gO#izkd*$#hG{ZFSo$P^R3x2g>WFAD~1>*1V#Zo}ad=jWKPb7*ocdp|~AuhLPL%B-9yW z``-d+d1m)lv$?fybm@`>{w%mw_`dn7uU-A;!H@A|qVYtddIUYh^dlIJ@<+;qU4+En zU|!Vgln*Y>zllGio>c8ES|Kjf+xtpiAH~EN9%i}{_xAN&i}YzySt^yNZ{fH1ip3)J zQ5A+VTtsfFUCdxt_q_hv-!82}h~nP=281Z}qD!4?+0=kToB-AGFkM~%NYHWhlo@~a z=GtP`k3TPd4&{F7_zga$Zy2421R9(bXk=^TCkdL)LdP=nG61jx$q$`2P8$YHM&OB9 zj2-*VoJX*Lw)QKU zw_3eaBx*NJ9JjN?QuDGWZk(&3irU3E=a$|Z93r>73VRREasUd z3oqJOYy0t!nU`E5yx|67;OeW1E3P1Kyz!}G@ftXv&zA3cdO5N9;X6AS6+tgdO_0Js zrj-Rj&lVc5u&>Ry6&(tnGA?s#GU|Y~u-<7NG<%fc=v_r3a?$=*t{fX)EL5@PEOJ&( zy8VTJyr$mr@?ANRRgk#x`C_t~>PZr@`n#i`#U7>rwF^kLM8VJTRSFJlgnR!B5Lph+ zVo&lk{xJc7K0?i#U=+xiAS`!H{XU>A!MlrLI)>|bs1uEk>l+dRv0ohRX=hI}jo|lb z;E3LsDZPVc96)b2AOiRu@K&+#mQD5(G)d?RCxA|pXp3Qx%1FoV z0`$MP&FvFQy3ztIyVxhAwndaMS5M%2CTl92JCyBhl#Jk0UkMpU?Yo4yv|6R!$g{15 zIH-&U;(9{cEmAZ48Ol3J(}e_4>NIiy3gC&;a;+R@>m5tWHO~vh;a4cM4}QNsL*A$0 zltz659*79Q=D{Qw7H??6?^A(_fsxOVX`Ee08n_mb?Tpc!8fZ=ib=IqP_83%(P{bAA zo4N3=f25c7=m5V_W`>9snJS@Fs*=lH5+-BL7o*;tV0u7+0c?&l&WcxlzF}Cm9^$Su~`-H&Xg5tGMETW{?HjgDcKk^HE78;B=okAhMi$b)XBc9Y*Ip(j@@ z*XD|BseRn4u+D#3VyNik`c7~+C^>x-ZLn>?8NggJ4MJgkbh?94Dh^nMpLRz4Ii0uy zbA$1~&?W`XEg~EEm>SdxgR{(NJ{Fyh0$&F{*UZUj6tP z5b}e=GKqpClneRH&$^YdEKWY+MMkI)p1E#xPcq^$s=5Rd#Lqrc6a;E^iKY7APSDd! z!zHYBb{=06>OfCgL*zdHybZf&$veBdVRFoUUtBXTS4&}h4=MFP5Wwb(Mt}V2Pw$oG zPud9jF;ZsgC$%?nSL^$z zyUQ1q8;f}}qp5ILr?pQ_>RJK};+Ac2^A5g7u##{TW~@;I(?A=5{|+{S-6X6{-v`i^ zoxIN{?b}yIDN`Ae$d(W$>VMySQ=gF;0q8Nj(8q@5a;($ zFs}h(_zY?|5!<>522Ugu8ddV59XLexG%83!_aEcW-Q2dZKDJR*>9zeTO^y|AFAY#9 zOnH%I%?%&L~UMwU6;mXWf^{7Whyh~sbjf~~r#eqgQ<>2WElWL-{#Evu=`SfMy~IDG0g#!%rX46B7;NIi0%SCd*PYY!6`5YN zq46ZhJ@G;}zvlY};QNQ0yrNQh4B-o1{js68ovfFTZR~i?uLfSo>NTFnM8=uU5WaE-xubO`yDJ01)p1Vs)`r`rkZp*Vq{7 zuBE8^h`l0PStmAh)%GOG`Nh4Ze(KaL!6lYUT8E4>{z=Oz!L5(=9Rx=#!P+9KUVv;cK^=+5iyg3U7JiJyE@!q$EX*5Cz!Q9)u^srI5zUn=M#`cj2HZ9iqaIL$la zm7ZQr!$u1n?A_8Fh;*nYiU6o>CfOaXF?yv&G?OQrK@K_i1@#>2PEyCAnS>?>8A`M+ z0Rh8z|MVw)R&EB8n(_BwCba^*&+k{OAkyRk6~+2%56(CxxG{4st}M$UsfWwjLdC+j z39XehwJj$xvkEK&`Oca($=9i!GwkDHnRUph0v|HNJ`#6ycAnVP^=Y-5pq6CZO21Fx zR`>#Gr#j@3K=ZY@%|}v7O-7|rBN}G{fBon*ZLDT|5o?^oW;5zp5K>-6Q>RCcG zIqmvoK_I9ynGzO@Pm(O4pRnaTlEaZOWgNDFEr3aZtiKT#;+OzPd>SwszyseORa`Tc3Jr5EF8$8;#m^)hag@I~Qs6*ajrci`@>E zLd9vd3y8NUKwe@fdP-z%@bTM6kKT2izv{1Adpb>QknPo_QaVDF(1tu>=+5->>kh+Cd>s&eaMe zUL{1RYNv=RW+_QeK<|+}|JF5mN_N1;u7i!0#Kf(?p*NPL?0@GSxP4UZx#uqQSqqYY zG)GYh)yPo=rjonx>}Nn9L=N+S+>)@dVpS*%dq@%zPA&+F2+cB4qHGLBHpZ1I!t@)G z=oR(5FEAmk^|7Sty7qO3&2C@@vTj^=)oiAo&JW#1fcm<0h!9-=BUgd>XAEjzx5J<5&>7_TB&TUGfC*ER8xt*A78(RiB<` z=2?!J$Fm6-O12}SH+Z_Wp!~scN_adiSYzf6UaNqRig>}Y-4t8aO7cV;w^Yg3a=CmC zYg1Zw5OalV|DX2|0ia4e7`y-!2w zcl=bzocgQwFwPGlE{JDN*x>HAui9LDgHhS{IC1hq zh}*mQ%2l1dW4Fb5W>I|G1_D|hE`w~;J28=^h;mpF@GCl$AS(G~XPcmX+#$E#Km;pNNIwQtDtgzXCe zX_}~=xtYN^j4|4??+0|4$g9zsV zOF}$Fd`^kBVzs96x&vtpw?U_v02+dlWkdgn3tB5&L!DQpES-6n@S5qYbr25f?ISAk zYzf-wxv7}=3cl(R2A>rxIpmzm5VZBO#a4#4M7_Rz`Hz<`CxXkCWoqA%rwZCeOd`v8 z?P8Z95e9-0UmA!?9Li`^OLc&rVAYbinr7RlQe@)p| zF_3qbsNbzzN#BSSD>AjO$@7Kn-#;rF`bNNM!5g86r~CuMO+V#yD-eN!20aZ_0`g^? znb@ps&^p_*UlZ&XY{au<(+Ch73x#u1sdMtYRvS)j_Nj=Ikyy2+F=ORJcz+w}3GE#f z>O}>%P*5pCpM#ADeBaLO4M}4mEl?7$^Q|IvDqY*=(uLcl0wZ7Ifoi!NQa^9~sZng`4~@NTN|vA< zh|wc6{x7!x>>^@V#N)&_6n6uPel}iLz;Mi=d&fjZ5fE%sCDZVD8_y_go7;Uu%Gy;_ z@mw0kfTVFkIjwpT)4R-*pUI2!oSUz5A*E^qNH4^6u~QHyT>BhaST4i$Jc(5lgN zp|U}JRK_x3T5N$!-arcIy9)n=S62RAu3u9Yo-`wxq92LI<`;E9Mxi7D10Znl#E(QiACq zI!GSl=(D=bzs(!sUO|=biJXtKMz>J(+Y<=C-#!f2888fGA@AA*eH(l*7ninKsxae4hHFWKs48apg*l9yt zViTwgQa<^aE_Tx9c60ldlR=vCK86LWYjbYQ2 z5Zn5$?&`WlEcRQDy<$G-L~+OWtk+Y2j%T*5v82qaw-J5BtCVjYkgdOMydK05`}Prm zP6&;of>K%6+3(<)g^u3*)p2t%B}+>a1@ivt_9}2zFA6Y}XZ-e}b}rx-ZKwbIxKmu= znbFiAmoB|x*)qbvWJ#t*k*5jTMomIct*q^G8WS)E!o-&ZqGE8w5!w+$ zC}MZ<;Pj?aBlHDGh$FpeVnSS{tDlK z(gW1fTZUyWSzc-`6_v5HfoBrxlfkRQx?~tq*kHW26PuLp?dqCn_io%2gR*MJ#ufWp zx;RRQg{{``j5Zky4fUUvFTWDP5C77onOcoJS>zrui7j($dz{8phnx@jUMMDUt2;VW zK3ELm!(LzEquJJD#`hUv5oq_BxCHIw?uFbv#wGcrBsb;Z>@@Ve%(4shHv&p10}p$JP2lbZaZ zN>OTs3vAvhQlHBZG9!7LR8R#*lZefi--|r`HDBNxs8Ipw{FZLePfu~>nW%4bgr(wH zyUQ1}nF=X|PnOJ+cUF(BRQ{YgZF`sl6IlXB9vdO8a_fK&id*|$@3AZp+xhl@QAV~< z`6|Y*9IJ`EsYLyH$r3zcfyIjp7~6sJx8=4PrhHKq)u#+yDe(a;?S+m>)POd2A6hki#v zfSr0&g`-k`(j!%=I$<_4*InQXxYtP~K~27F zT{F0V$fEq>Q7{nle;TjLa0d0>aiLyV0eX3F$uIzcg<04(+I3&jQpqW^@=TSXt$bIt zQ^RH(kH?gFAaP>z8DeIuYfiU8pyO$aRTK3`hA4HSM*=tBc2!uF%;=K(T;@6OGb>kK z1*ug8{mfV7c>-{*A`Qe;C%N?5*3#BR6;LfeUqSeW8ScT+uW< z>VoU;8tJ|*X({IvS$Vor+gasmLoT*l$qV{~mvRg@LMoQ*Zd0&G7`QC5R-{_3l%ejr zvx`U;sTU3iHz$|IrH%UNaMK%5xnzDnE=`blW1Ihoqt^S`G8r>@`l%h%&3R)%?BHvy zN+Cd+S}xmSgdhJ%u0$%Qm+@YR;EHf+VV*De>*l>5fF)c3`gvRHXO?!gw3pVvd}=6J z*XL6otYm$dE8aNbYq1EM>ro7*z+Lm=8_>H9|9T(i(MT)if3DrH~~QYA{1H%2}D z3eOcK-mMZB3pYJk<|q}c)II+aNm*NNSep<^#FK;DpjJM2?`7&Wk6s-YnR$T=?jY_f zQNN$DF+Z9-vs+#Ih(`iW2&OTroHED*+T{KqgRhHhImV}N-?SC{Q525v^V6_51r#Cc zmI7q-p6({Rrb?7b@@dMFup>4Rc%u7&2JK1M*otC zj-jhizlD%x;X8036QJ;3KI3p?Nvse@eK;%A2}m(f&Tg1Mg(epkt5BN^_{&o zo<(Ty&R>%<=Hl|4G?pdrtqqgM)XpI8EWKA^s2;C9MpiEb#9;B_D*z|+15O5!%65T! zj!|eCt6kzWBqK6#+0sx{Y*T^DcBx`zOpasc7SuSSo>9caQJZo>|DxV>j zko#qcEO_jTs{gD|-Her#pRjiRp+x;=*|IAjiwrJZnuYwR?k}wiYi9*CAwU7G06ghpzEnSfSGsqa6$_wIqMeSto@+z=9PxdfQ29VzoH3!6g9&2B4oAA;x%#QE5c6 z2Cx_*y2Glw(POn3Du$cu%T~V;btq-hoi!>)bRD>vSV7!Tm)C({xT7FEw*Se&oUc0!~%gJ2=GdZr{+>$2g0l88zP4B)enkAUi7ddwX8 zYT_9xw-niijn~gmrQ)_>fmQ&x48NmGE1-FEgBZ%7%kaamdx%aG5NZY~0Ta|#qR zUWgvQeG3G2Qf79~#RVeD5Joq+WVV%l>U@7-S?5pT-z_y z@-sY{Gv?nKVXJtpJ(Y93Cdl%AifpA8L@t*SXRlq`-Tgo~eA@X%psW^l9e;U;D%&{sk;or3k&w2xE8+^jpE#!UX_**;{)VLqg;mWJ zT7^7~ncAYtp1#E;X%pF29joNJ{VrZy;tP6&U`F*cxY*UO3D{FyFEZ4-vuOa};IYK) zx$QIu(>$JdB&RUeSBdv1{YE5iHeR<7w@{039TOUaCBD2`HedjO0axX=R5ReJosU%f zmtOK#s}}51*jO&Bd!8Zf^ikG zoVug@N|{16z9OEZ(#!sXZ`8AxoZZp`HA|qv$WtAz z742*#58Uf{UVS z8g375KGGYt&Y3q3ON%Oy&%yoWfQM2*6%w6z9fV5LQY;fV+X!6w3@QT6CuuAo-qwSI zd(Eu4iM==*I3eBDPMgXqab*|vS!G92<>Yp<9XDVfWhmNl^fFV@u=prqjChvHH17B_ zNcp^ZL}U^cIbzY`k~-hn3NEI#oVYh($|mGlh~#REq^(vxuPSQus~+p-v<>ZC#sI`_ z!SP+K%vBxs@HUhaF4TuM2WYm+p=dL*%K?UAoc5(Q3Hn@Jiu4;b1VTbQ&6W1W>`w!qN@`q@tBf?;Q5bz}ExMI4@5&EYz%@aPL=p!$TuolU@^Zf>S0h8@6~ z?3)UI>zw5n&>QQSQvLMLmKe?!-TIL^FGnrT6!!bQ^G<7L=PA%YN1$Nm`U8F6P2=GE z%50IKGKDr&?wmv$$R|2~)VYj$skpZYqU&3L>$~JY{NVga{NRLH@dJ4FacFG)1I?ho zXP;g_^+Tse8RlEmn;YRUqWnq>exaGI=ZJ?F+iyk%t2--|yKuq>c0C%1bEsc-KVPZ5 zO*};v#t9J!Yt~sK{XYk_MSl}IDh9r@w${T8v|57mL02-pM9*N-YETq z=&00E1nXV$pOeL@=Tpr55(#Ft8gK;#Dk!pxMd6$;HAa_G__@?CyhA$VcHVR zeDs64^#lD20p%rJzT;3!;>m3GZ=e+SK>lyp>{IyUtLw4ibGSa&PfJxg2k25pUw$f8 zseSsRUn3$lRw2Lr;JZo<9WA31cLLeDMLCY%S)mu@(Xey0CVROCJN+!pN8TBLbTu6oQN~9EDy03qTW(&A{WEt`)%v?55ZRt`&M#4>QK5 zLz(GgSwSbEF>z_eXF+bKiD)$5Gk~Fr%j|5tC)KFxvg}QK1DTe^)Ga%E1S&qx|7y!R zmb7tne0{QGXGEU}K~XLgtGR#v^9u^1`kY^mDa_+?mfmyEc}0<2p7w%{pSgo4rOt{; zOd58Qr7`>^E;VRaDVEycQgzzgrlOhpKwY)DjYSLk&na{)he@EoGZ)lN;>p^HZT4Qh z0K9LzU*(nqi0=c;f&8{y-uG{V73wG=5as0X7y|gj*M?R;mnHUqGLMv80PQSgoeGf1 zR*|{8qLt~YJ=7}mlBnOm$YVDzjr#l(9x$2S{SQC`dbN=rs-VEv>#(jOd2o0FM*2U9>-8iBx z7dz>5M&tzkesZ`S@dk9H@7u&pj_g+<0Knc$TnzK5PV_KX9_q z`qGsq9a!H0I2}NLB!K?l)W_)e5^U_H8iN_;tD*V*lpi|Rvt4Bn8bF2<&02`L8z;6I zO|lv%mS|XsIzQq-L?5~yV4TPDPw8B4}VFVGS8VYU9$o zF3s@`+{D>ekAJE+l?yrxjFEY-O%aZ${HkcjHvOPC(l*CId}{WswrO>xN^KmA18j$x z{Pn(l5|x%$HZ6xjt) zr4(^?C8Xx4B_4r}1C;Hn2M)-FWR_AtsBkFj^kL|}0$V}L_G3=dqyrq@ zQZ}u1Zs*P?ihQX!*a~`P8kpQNC=j@$qiME=AMOQ9moVq`9+}Gt>PWyQA%f-dlO<^^ zfvIRDC?=L;Otutz%p0!!7zD@+tS-(44C=`z+sx9zV& zkQ3;D^_dxUy|fA1WddIckdyB(HeL0>155{YGa7rEte%4xOJ+q(6B-VkxD&0F%Kc?& zEQ##Na8O+O^Pe60w$nP9ayh4Z!tX@@;h%Z?1Wax%oU~y?L;b^V%*SOxs2dW!*ygpS zPMLZVdw;H&3zV}GUuDg>S9!S_K)2%O1oS{v2}wFqHPvm5TM0$^DauQ{`jgZ#>)N@X z4dj}?EJ%`x^X0ueJRG@#Wj{*IP_DdiIS4!QWXU;evm+KrGL;TxD021povIg{Do`}e zZnO8$KGo~jv?&7Za-S>^BH3cU0?fGua)>`NI_c|Rh6)Nw>rZE?)vp7+>d4Y)Wb%v{ zU?}w-#721C?7M3Y;EBiS+W{86KD7MM!@3CeAU;_U`zHpNKtJvr^@s&tAl<6kRn>tj z&DyZARTTKZWXeceB}rMF7l1(^{5BUwCAt0}+sN~|h@&wn-8e1$qp4Qc0qa><;K{p6 z`mO;dR0p7va%<95N-Hw*RFS-|@+a!5!OPA+CC*hTSmDj5o?ZPiYU%CNXN^4rp9IX^ zx`?4q6@&?2QOmps+4C=saze@xJ>;HC`mxv2q7aH;~F$atxIaV zkPAy=wQYW-1HEY*1d9N{m|*#T#|TaHrWQE(&5@%h%Z7qXTUySm+am;35Zt08lNn$> z0ZJxmGLCKXb{y3MDx+Z0X#^}Tr`sH-LyDNt(LR8_FZE(zJl?D;67**=J&Ms@0V#;N zM;@_XcisP>LWUdzZV-|^F973Ng8=yZmyJ^!mF0PBQ{1+2yMV>#5axB&td^5Qd(uOmnY|C*^**H?R5ZrYxC69q)^Bb zwTgLd0jbvK81+aL5{9Jf_2QiJM-_5T?IrTmq}1Wk^1wJC6_|&xoz>{G{siRI@Z{+&CR-igh?nvCIOV8&oBV}Mq}1w z3&c36^0JvWt$65&I8$I)cw3fW3x#lD3=sdkLSLAsQenONRUci|N9*N+mU#(wY5Iy! z$}`do&F>}Iu$PFIW2UK@lsZT>?%32#nn{#OL}H-FbT2is`~!T0Q7IrTc-f#p&C3HM zmM&<^T@dyNTC3SBV){f_niPi;wO2bkUm*TPsr~2~*5(OSCI_9;i4NJD9a4i5B6fw2 zdMqty({oz|2HOWkp-dWW19;5X&K1$IPUD1QMhLv$NtEJbhb|V70?H_D4+7UP7=nN? z9AQ|fOFdhzZA&qa|X-`%ix>{zx!-Z%whR=Tu(W5W(2_OVuBFC zGMm9oHY$P#Di3S9$M`5Pypu{-Gm^ngfWLa=S5XIH)04mmN2k% zuIQB8xSkFlA3O)DuZ()*cxpLE>%A#4a4fvWC{KLj5W+jH`oG z?Pf^*MFoynSSjhch8p(kwz#RBR;0mx5%(8H3NCTSS_jNhX4n>KHP!*W!8mv-^_kAZ zfg$%cSXnlQG4OAtQ0Q=Q#f)%FDfPI1)1h#fg)n+dWVMM8%m=1{$biNGo8Qbs=9#Ne z4MyIAmfk4+Gz(TQxW#Bqz~28OnY4k|(Tt7;P(T+h!7}BsuNVgVEUPmfe}jC|8z8e6 zfN3w6v?a)i%+S1$xiV$QbjUK&Xu2lEX=6}Kq%Hu7u-6LJsu^`d-gqNY5r!7@fhz|u zt=ep#D<01$x*Ov6B;On8T$fR%;_` z7q(*c(loRn;Me7I+74ZzbZiMvVvi6a35BlkC``aPLKTH2=22Zaei#H?w* zGA;8e4PjA2*wLyBT$h#y)aHaFF3C6ykxf{9Uw&Zle#;N<5<^v?HkG~9e@L#zAS#QD zIzIWD$T4b%;a(cYihy^CMPwhbyT{F1`|^NiF?4W@*xd8XddEt?ck!7&ggVa#ze1$$ zfQe>LFf#O+#?eDaP(tve-q|pp7XRGdva24c0iBt83tl#j@kGf^{Par;T4So z5~sk~rh=>CqNlu0RrQcPQcrX1@>hcpR8AnsRo6^F6N?xuYtjccA@FA4J{#~oYt97U zg|I#N;CBeVzEP=Mkk1nxRpZ*Lj^b!UYcE~~@`|#A6~aB9HB6k2nd(N6;{Ez-DE>oL z^!i>QObtaWv#~#}H+?0c*zK{Gky*oi19SgVmCY zUK26rAp?>o^0gvyNrC!j&WU{}d+)wmpU;m=+LHwv$LZ!XxolFM@(q-ta%PSj&9D>- zj;mcgmQpx4IZi7>2bKDzOD_j*ggP%Y#slQ93;PD8VSBqDPvq7h}gG8!ZI-nsE8 ze(~zkHx%FVVr6bX#s$K>I<;=jZLB@-4M9nh89e1`;&Y|GqSI31}f^1vOFNEFqFZ0oosN510Ja;XzwqBI6$#qQ)Mc{i+VYFL3N~E_LH0@s*Xym zCTU3%)x_Wf>W&UwOcdvt?3$R&Zs8~SW*c!Sc3B>^AKyS+9i}VXI0tqRSQf%aUYE-o zxdy&In>aV1&%~r*h*8LlSCxRl^x7m40Ont?X|5TV)wu6 zJ5~qSYK|@umQdgL6gIY>-FlJ3T9mpZ1?p?i4?iW7p&n7@tR{WZ@Nr1#mAixn&1ngq zSnM&wXa=bN3-%#bX6xJd2BPn)sB3o*0RJt=lRNYFC2p=x;2J+AVn|1&F)83?G3=#g znA2&dHMqQ$ui_{>Qra)%tpj?EarkPBWys_(&mjV}8)3@b8p5vaZu8nZTZto#&H;l~ z5sghyCN=cekT75x=4Oy*e9w0AJ>zBpl$mzoXuRR-==D}+HW zGP3j@;k1UP!RiA&=cTj)=XT(40C)f;jVUpK2uP#QeZ*K2pUQn^_H5Cy&%rk0`}yku z%}|=gMmGUw;+#BRDvjDn0bB3pa9PwBL_hT)O?1^q0^3eblLAg^>qcmJV2br>ra}oZ zH0W90j7;R^HGBgmGGJ&o^g(M=mM5*|Ej`^Pj-GFxm8hul=lcIg>sk#IA?-jamX8fotpo4Ostl%gcc!4qWGvA zJ5JnrVw58lGXqC&IVMaT_x(0^*N9nYom;y&py>!Jg=Uze0m_N0j)**}=tvN&QmK3V zM<3~DLmK8?w%l{3G;Hu1Vw(3_Wj;9opWttBfXqvics&jww1Xa96cp*|qWqZZuB=}x zj6a?DLd2#KK7qT2yCjQpCSCU7fz4rzkrp-b%LlNo|CTsehzoq;C~)mW8CEBY5z=*! z`B*BxXQV=CiC_?i^@oQV9Z6ee78d3xC&y3t_I{o1wfv6jL1AaBBTURePBM-TL4NyY}>#QK4 zc$ioWo_tu}Iv2T#DXW?|=OoJ9L_nLoM&fG>Y1Vv-Z!in_cA2FPPG*Qza$~nvsp|%Z(B1%K zcwlU%H@6o7m_feiW^mw_w%|bPr+{>Vt3=1=lejR3{GiQLZ}CF|RA*Hjax~Rge`o!> zVlD^&3q&R{^oI{2UTDCUQ+?C$S58!4V&ebHJq7>Z_kthA%b?Mpv(t)*8svktfe)f` zCojgc@B05(`wsXxs;hgyncbP)+1`8K)oQic-m9u5S+eAcZMioLw&|wW6gO}I3Nl36rG7HymsHOC3~ss}oidM;i{aGI!sqA6L_EK8MQY;#0=g(ke% z0|=UDwngXcGn*{~JO5=J5BJ!CC@CTS@+o#B~I!bmxBOv@>p zoQM&N_9JXd8@1AKrNt1Zm-#lI6RJO@XZEdFZ9uH*N-mb#Uz$r|qi-@1DMb=3kM-3Q~Dx)Y%8H2Hn z7xal%zA%-93Scu6m1tGF+S=SD*W6_Z8WfDtc|(-1X=;}_VD1_~DZ$S`8UzgZRy?;~ zfx$!zGzq{u;rxIt3+-ZPxwj_NeqAb|4}k`Tax@G4Oy&> z9_|BkK8VgEzn9US_R_IS0TXmcozs?Na@KOuTDDcH&>L?4>LvhE`|A)?&6DyQ))c3} z!^2WtAmhNFGvI)R4>SY6YPniATO;Ru*NmVUA-7k1damv1N#WeuFJW#LD2Yfr|KqEt ztK7=?(;0bvn9cTI3z3ndAPhZ+bH(8=K5K-ZO;$0S0{ zhl51&49XyPfydWt&gp z9=obo%yddsVvC*OI1!Qgl(gDyW4y54eTtPOkZsi3SEtoY0dk!ph-PP zJICRpNMIeiUaAlimI{1%WFgkc3%D`yk-}ybX6e;rcoAe#fkK&x#m!wqo=7 za67GQ_Oo`m)2m8MJa3OWJ?$u^)me4ANF6bC>gIug9RFN@i9B53Z-Y^KPZgtmM4;(aXPws?*K<_g^OA%{= z+abn|*B>MVW1R-c;V|Ke)|AXO4FXVNVLFe{SQHMsaK#F(#__EAMk;@3ly0m<8z+vb zaqX!pxw*{0QmBwZ_x&9fBH{mCsF-JVuqLk5Z@%y4M-}oW?}_IPh?Gip%8oVmYf4Io zq@A%753+hz)cRXLgV8W&Ur{$VXic@QOE7wgtFQC)W_#V-U}R_5H+_1qHR4`*H1)}? zYuEBO@jw0B-xpP=`(>SHBo$7!(^8@(XyWxc%-@i4ZWLU0#NE`OZ2 zl2`#lC)Q8e3Z9`gyCtDt)X3C>5Ht{t6JuHcj}#*Hcp!SL5;oNfD`<(s%fEXIpkc#I zPA)gEJ~1cO=p=;`R{kZPUbos8_Z_)zDYgjWi02ViA+({yT4esA$^2*CGAAgE46Mb> zlJ=rw`n)he4WYvZvQ^iT6FXV6e8K)>u!VEzXg+ZbHu6H3+Ai)9Tc{rxn|q5!gr0S& zHf@tWoi>I|xy+`@OI6k!YzID@MD7XBeNd zVgScp%OdLO3HoH;+To!c8e6AXXYPX1w*VR7kLiQkg{a%DsT*+;6<)yKQnF1HWQ33e zD2 zj%p)OT}mH|9aW{0rBlBAJALFW#~#an(BBWzi5&kTL~CrHqOPA7l!|Eo*of0;f!i3Q zc18^hz!Ij;zyUAgdPNjW=|`v7KvCn3(s1$BrB8>B6=RPPvY1Am0&&O$84hMS8OQ+F zW1H1o6003%U_UXaWFC$i!dyZYnqQIXY;GN=prjU#_4xhZm@C^|avr}x3ZgDOa zz{Ahs8~-_4F>aa4={O*GL@V~0L2w-lPTiUX>``8jhY};3@3=$U+N!_s!j&tjTdP$* zz46SA8DMA7T~}Y#Nlq|R8AZo|KTEGK>y*5_R8gsxe2-GpJaV0M+jPR`|kF_*#;=nyl zi`!U?`hMoy+J01(Yc+*1Faq64sg&V=lib`xwV#%Lz^}E7n?&|CtY_%~4}wWpzzsfo$I#aze*7kXvhMQ1)ilb4n(*|%s>8I)>ALFx@|HNe3Ha(ofQP(Y5a zM}w37mSkAPAr29Nf(BSm0Dr|vwQDWk0$V>JSOk>?0SC^KaR^+@@gU|bi0IHB2PP&| zB#6q?T2?~o54?C+Y)CsS-yAzw*|Ojwi8y^;|zVft01% z+n{QBphVUdB?_hALX@n|%1D17i>-^tUn6(&vzGn=-}u*&dUNsEQ#MvQgeFZjyDx7B z27M81t!Uewcm9c}{=K*>Bn{1Va-R8%+JpsrQV)bnnA!_I$sD-8UxCK0^x&aIX82rz zj$i{pUsUa@Ki34@jxGT0UjacM@_(aH&!GNmY_Q)dNTiPeQOs5_Psdpfhpb|1MRTo+ zfeW-AXU0;)20^<~8M5{9vxnZ`7;V0e89xLgX+>5W)HPxv^(twV%f@&-tlOhlP+)A% zoX)Hy@vJi@Es8DPpT~TC+Jv@eIO|zm6kDbFWoL(c{T;d%ZF_%aDs)yVGQ)B}H1ES! z3(P!&ae>SKhHv~!+fm^v1yH>+e}2hYNP+=-qVS)0)llXnq09l! zlq%r)iL!iJv)wXz&|+>~+ibOU^=$Uqrr4VuQ^|?So-;xcD;qe5@|a5{Ym)_PNbSxM&>qVGDe>vn}@?t zBQ#V;DIlLa0k24zj5kkqMZSzBr+7p3?axIo8Wx-yv2yO^B{JZ0x;v-g)Pz$dp{y zCex@=0pQ_TTUZ4(z!{_^R`oiLE?hoN4|_p_{8s|-s@pAb$lM);OLAuDi3t%1TD?SG zI0jhT;=oFurfGr8;95+r=XYl}pLu!`FWip(*K~_ltbnXM&+k?8@0)E>7P;VX6UeF0 zxTZmZGgqt0>qKCCtWz{N^txi9ZiY($XG>lkTo2RP(h|^Be>*p^)ECs{2bkA zn$+*rMlsMxdJcU{Ocb=zS|4lM^P}epSnvz`eKtVa{&O0xc$y+QdE3BFGwo_bXgU{86o$7^3Kvy1W<W z@^sY_zva8dnyklf4E&SL+~SrUera06+TnwP+m2 z2KEj!=1@M;lKCDe$yDNz?xAuzg>7}_D{&4*~Y#064A23q_x_&-#x=n&<_ z(2oRrmAN%c=q+*tf7#`|+MqfwGwPCg?~1rsFLhKhn_KK{c}=SZe02NxE8);w!{1mT zKPZr7xl-bvO5ek;H`|4@3u7BdpLXQ=l~ni?7@7KDH~-4;@SgeeiGSX_GB2Z!mqSXc zG!_aY7leX+P~FKPqt$@oHL8oF@2q-KMW9OrMz3#_zM`i!wl!*s&$V#b0Gix^j}vZ^ z@jzt*z4@jUC~jGV<^Z{IYr#^}rT)$T^k4sSoY_B(coJKd=kxqBvz?Vt(3FS8QIe}3jjmnYf^_}h z{Dq-YH7Q5bo;Uv?sEcSLFuX$xpyyrm%XHUhEm51iRe(@3hUhPYX)>q4*bcBuaAbVrKa{e^a?gEqQ*wYi9_`?0*r8HgZUxXDhu)l5Y{9( z6pt)v*ZS2!DB9oEbzMg9W%7)BceAUn!_cB{?_0nH!hSX^^#*;iE8~XVAn=AP@fI?N zyv|3CuF>b7K@*pY8tm}q4kNU!(4wuYuw@jd8+or&)jB*yq)>x_f0LZR1o4>0sf`!g z$Q{*x>b+fNopnkHyz8zu!1PR$wQFQURG)}xGrDAo+{XZsg-y!*L9f)KNv?DN6IvB3 zkRSkf2YHT+>BHAU3mQs4a2^Kp_fas9lvXv*nKkG}7h^|z&twne1!kxMUjU*J2Z){* zh>GZa-zg|baX#k;ps(xz0?Y16dnR2n>FPY-(H5oQbPa%0!yXGl#kiQWGophdV63N?eWe*;=wu zOKDzJ2h(L$nIUosh}^?kuj*$uT}FA1HTQ<0t_Xyaxf7S91xNTeF9=3*?CBg&90Dl$SJdNpcj+}jF|+O zj;FG4-lMQ-DI05Evj*A@s?yuR3ti%v-0>#zaaxBw@N z(qp*USdZgmuovEmV8G;(I&GJ_<&NmTQkF26;leOH8xAUiRaJtV$nTnyN^MD}JKEYv z5dB8y{T$z5br$e9o>^a=P$@9aD=~A%OmZ_23=^u93T#4GoN-3>Q~sZ-)JnfZ&v=Hd zrr;v4&9{`gyUhD4kCdSndmbj+KmRfR2EFW%kMp7y-wc<`A%jaxGxj)jAd5%fpq7m_ zMlu9ODM=jyn{0U-^b4k(v!HUYUr+ zLh}x55^LC&CCe!nkcxi(2^(KBWR~c~`kpyqHoj=k1bac(JsYrNgHZ1xj$CU$xd2ng z@txQ|#W~zKv+8tVYSkVnuIl1uA+Zp&B!HPUt|=-581VR1FPUi^mxjf;&~X*Igt~Df z)W0A2Tw6{&iZvnW*?;=e39DD1iI~FbOlDU_tah4Vm^urn^TlbYLK$`uiP-36xSpWe zEDDKC>*6q6JIMw4Poff=9voS9=BFw|X0Us;GJvIRGKsgzpADGh7ZnZ5mWVVOwmK~~ z19SHYVd<(aowvc3X&yRj6qhC!=blUdvZ4Xte>(qFX4AG!Sw^j-yRW^bb1r|g0fyC3 zG6!TRGG69C%%*nDp`s>3R&Ui8c&#M6x=E}M`@8bF`2-!S4PJjrX38bnFOrXG!3FDT8{Pj@8oUdPi zbI5A`63^35zyIvBig(}rITl$W%zPf}=r|ItgV#fAOLXSQ$WT7-Y!^E#8Mu^USYv(Xak6+}#DyPCAmV*$2s94-EFw8OcvS7w$LB$`rMXa=Lx{k~>Ldl{~YLI?GE z{?%+IJ1s}L3j8xAYSUi=zk<1#Tvn=+5W{=21(Vk=^~k_OXU3|;dwo)qk!1s}9aYB= z7%MoT8A#9k1|fF>F@YtnX>A3wN^n%uLL9w|ev)n)J%x=jpmrrSOa`#3#mOJSqx|lr z0Mud-3$fSLsDy>)vG6sdrql>_wO%p6QjLrib-lHG7c4S>aI^HU_*P>mUfBm083k6Q z$fui@hQQy`Ud)|Sb6iw`MTU_)&lgVl2yE|R83~Qk>@(8fJD+{_8B}N>ySu7WrqLw* z(3r4>Sov{fUBNDa>m_+)S#D$77{Mv+XY=P@1ip*@n(yMN!V|ARas`md!RbLSEw| zHWeD`I=I^4C!kt@--XL=RZL<~13!4Rt{r~gNY*2jcU7$i@ftaSKmV3N&Ll-g zyrDL8d#4NF3s*;Bf6`IPBK4#+^0$KC2QJUvYrsvgDL*~`gf@MAlhe1xAqps^0U9zMI^wTjV zFi@_t2_3Y3G_kZQ0Ig&rOyNlikue^7&zKQqV@`X*x6Rq@Yd-hjQ0&i2;FB zx&}&S&=(x~q>SYon2zB#kB$yQMtlc<0bpCtJ2W}rPzWInqhIFG{CA9VlofHe1vNRq z$7qps&Jd@QR#|zp&9xvbz;20ia=v~;Q65h4j+DyAWEsox$PmO4YG-9KM_^yB7@_jU z?w|-(&tF_F(BNR{Nq0WAZC3|Cy47tb^UrmNP$%<_n478I4rob(pj;Zs8Y2dF1^UV&gWr-hw zKkhZ>^@FGbUhJ&6mxPg|(R$daSyzvtpq)%AQ>XI#`c$Fmovck>>Gg8Iqfh;EJMGE- zB%NN7%|4e-$N3w`4^_^h0cNT5F!s7)kXl)7jIt{HewEWuh641JOlCzc_gp3u=dULZ zD_ynMF4DTIdPc1hYh$!kmozwa*){yX`BrnTlrsahLK}{RwX@rh2mqknV+T2GH#F5X z8)KwMAY``|@Qf}0)A4BJ&7+6}t`fwbQN|Ijl<>@P&o}T7p(Z|PC4`lPuZ-0_ln>qG z7uU|m@6ZJ3yg`*$RaRJ|WlcP70c6~qY&k1tjJC*=vgYW>;R|*@`z-M+-ShnO*H;aF z2@$gAI!y?T>YJQpbx>V-x1#Nd!T2OL3Nz>2U7Db_b3ESKpXB9pd(q{}&V}74}_MW6zr4qMp%Z1EUbIjaHi;UBEC4mvcIHwJ_MlF@H zIcu%9LlTBGyXOSrMuYE#)21+h;hgtr0+ku9evbjh*G{ld-SK=U8nk8VH&Mk z$9y305MbJdK}?tmJ0ARl%MfRnLtY2i6>!EdZv%pAloswdA#KNR1A_!Is8zsv1m5G9 zq>q1iRWC>|^AfEhg^^_Co0O4F-tZP!*Rzs=AplU*Z~(-I5I7+}MP z-FihZZdx-WHcAFomLm}icwaMy8%?;v$f|M5%stAmHr%R>qdEBJIysERQF`}C&V74| z#471{DIoRt+r>(ewf#3mSn)*V>HG(`WVdh6iIs9HbL#perRSf2(ZBk~m(C-ZxI`mL zmrNZeTyoDt%-SoH@OZ)(-0%flP64=_o}{FJMK6? zbMBSXre1b#{<@MH6D})h!ch*ZAVGr^?FE$8?wu;P%gd}nk*S)?WxK>G1I6JL8FMPG z&M9N*`w9g>TU$S)Zm2AO_~8Wq+Z$pr|H=G-SgvBBj+Qg@(H6kCow~I28)lGj8G$4X zhOwRMH>Dz4p~(}|y3k?B2M$AUMv9P)jZJz)?m4!3LgQp=*yzE*I*5%ogleP33GD8g zg0_B_ATl!^L>N<)2p~eOG@0nZj&<@H*AQe0^@^tfkvBkKwtno0s$6~?3l<%Ag`h`K z<}WY)tQT&Myi^-cCQnMG{sJxBdx~TYa6=Rx3z4&Gvsk(WF^PpA;v4@CS;_C;F%5`M z6;>8&)8}9ToU)eLd$Q(aL{(I@CPzB$-A!^=$;n#H1+`U^BW|}TZ?qZ;(`@cOqs`by zQ~Xx4r_Arlk>k#uJ^RNhUyoU3?_UP4YdU!M=fEB?_fK8TJy^!ko`b3I4Rc~h8n*aw zASZYeo4OdGGaJ;#Vq`Z!dMz5i=0T4PTxu2WNI;7amT!|+5mYs+TL4`1!ZN;8_nB>= zL*qGnQ$fj#borwpp*}}w-99quxkXA8YA1+ z>;Mk(bgkhQN(xINSZz3mxRDHTh5?KB9Q;v9nZEX|F((0ff}g4@jVLN8K&$WL8~;86 zPiIY)>ZD~>9oYoZPIIMRJC6%hH%kBPXu=!K9#TX2c+- z*Q|VGF}ui8O;6)u2X`#~3caC*$sBh}=SUG#W_iF}{%zH#YRx z_ZyoX?{H;Z?k;RmVN>G0PQ;-4)#8tDVaz<> zC?N~pHtD)aH`VHSgpe`A!9<9Kcl>+|DuI<74|a|p0)+Psc3Ux0z;YhCwm-P+tO1w= zECbZ8bzePR(s_Dt6os?jd3c7mn-YRiZQqZm|%#+=`_=+_<0b&!y#O9HUiG1bR{wrSaO5@~{%lD0X%p8`Z0gsd~%M$(>%ej94|AFYFe& zg5LrVOpLaUkJDauZ1720TlA4-WB$U8Ac8?l$Q{#Iu z-306(SJVt3p1_*_sv)^uQ2_&pY!$}ASs@d%JuusQ8+JpetgZ^n}g{bwYg7zQz9Zz zcEWJ~=+Uhc@*V2Bu)-fu$JN2WzMjP;9p_+G(Ww!OF{CzV<9vJe)|Qs$)5wpS6~2Hv zstyD%Ne&j86~H!9Mfk}$$~*x#tZd2rleii?k~XLtyR zaGr&V{F&GM5$QyqMKzsm8u(?HBdQ1yjxT$>239?T+Yh;WX8lDEDV zh`%8YC#3E5f@lgGEEeSZzXMD76B7qIn2y< zmCLs;-1Ye5#5#QTkAAeB^z#pvGHgbZEI4STk_k=OkyO~2G-KxPy6eLB_Pre)_Uo^I z49yW2jcd+ssx@cT-fCc;55zg9baG45l!ewgG-ru4-IngjgM#%zs(aqN$h~LHnG?Bp zRt`jz=d}%LqVuP_7;uwpKHhJDT@KI>IjXS!fd?KqrPz1qPHn_D1c4m9CBSiRwDB#T zl!WkjGpzw=P7cLX7*;^o^Nnm6_Ou?t6(%C03?K=@TrYw629LU*Ui9VlWXoZ?R(+@3 zY?KY^(#x+t38p4VkK4N-rkc?jUb1+mBW9bvcnQCl+CPn-G)QZDyo$(TkHTE3@}EB# znmO24wMvX;)|jofce-y+>7vlYFB_8SB>4{?0|M|mF!}MphIyXW!hfV*u>MDJ56S60c1MQglC zQkD3lK(~iLO>295`Nt}|FFL1yQ<1Y9x1U)gU5g*R_mbn==Xa`{T>G@Z@HKA}DmL;9 zvgPv2%lscNqos0j8%$Ic-KY0V8+4moLo>)%Rj@?#0etW*?EqSs9tbT6o8kyZ{NGEDFIK#M^F!BjaDfh45k7V@l2sjZeJe0Vj zU&H%sF(ejtGeB*O!6Xy;ux|sLBV%>_3ZIPz-$$`I9$LC}dRYD0H9y7vTA+CS9D3;T zw)f*2mx)P>O^%aulAt7)Bme2LPo3G!7>$y)lLk7&+hF3OQPOq#?8&}GN2YL4^|U=B zr@|n@FK7pUePQSMJBy4?LuXIhd`6Zms#f3RUw&pW3Ff3aaWrcpm94K3*A>@aU*tcz z8zgQyg;n+=mAk*!rnUDCkbmCv?z`{&g8GA@d9V}URgKuQ>{5Nlap;~V@~+rxiqD&B zL+@$-@nlf}7^DctJwe-H7D$Z>5`*4%cU=;QM(ln((2FST91`YGgj9zS+*Jes}}tJ_vAPB!ilSV3K)5@@E8&q zdCZAct3&}+79r4bT3RKOt9CYe;T)X4_4F)RQmy`w|KsB) zrb)CS(TbC0Yv$CKNazAwyH9Us)Y76%E4f?g8R)ZX9DRdi zED-aMmw_<`N^sO7S zWO23n7XRY2i%EUE=ZvHZ+ueJ4eY+cByIZ&)siMb)G`60;`fewOzx7rpe?1i_!-mG; zT+f4+2ZKmNz#S{VB(34f%b_W@0~qqRPZ&rTt&>8qV-)wT1(JgvSuFuR=#dFKAF>-E zgot4RD_W|+=UC^5saQj=O9&;u<*=a91CN+Mxs{x8ozziXGRWb{j7#e__+mr$HrLF=0X zOdy`{iz7)LzwRIZpzZus`R(WJ$TK>%D1GXt(=udvx%>kE(IacZgy<7tsYaBl+MWHI zpCsyQ@4Pd^e|oD}Ey+nWl6#dHqtrHtQJ=#;|Lv>PBju}> zHfXJjfQqe+pxF{`&PGa$>{RShH$kkT!QrGv%Yf$&(O;-#8dt@*6Gdfeh%_EEhS9?g zFv5%BgOUnHMOiGA@lt8XN)h77kP`o_x_ZZa$;=zOO+}fCBNZZ1KHS5owOVOWqEX3j zB$x6>-c~GLQn>ao(cq<(4_cKr0|OjvEB{glqxCwVr6~z`q?g_N+E-tZ@MJ!C==&XmX&ywlci8UF%}H7zbHSH2j~b&E0&vGHmX!M0Mm1Y3jsdBV6Rz zlltYcwQH98<$)Dz){uB7ult3L(SrcYEPYJloj%~yIR~dxSMcW)w(Z=UMHjB_8*k~e z-g|F}|0UJ8=7k?zd~}~U@0-Z^u(&2 zUktJDMk5>qhsEAMaLGhB#!vZIpI=6jT~e(m-)?K)_7ehmb^XHNO2UQVp4#gecVUpu zd+sUmZ<9r=$s(a`dPU#TxHi3dk)M*l?7fsh1;+_az4(6gyK@NqfwaJOL;GK(d6Wg_ zQ?2E8Djb>ZfJR@83xpR0oE1DDqkx?W{qgHI06DDpVg0Z)9LIc1Au;hAIRJ*&)VGFL zEG!%O8HU&fmz=Wron63>@6fGVM`va62lxU#%HvVda)(@G$)%Q`J3nJ)UO4lv zU;eTsbHNbRx2tecR?;NNWafYT@xu`bPSIvG8uF6MJ!lEor$3y3gE{FyFQa2Ro`8uE zKmJ!2XJ!Li?>p}C3ddWh{Kz7!oni5ABwA|ML?QD4|KTI6!^8j)Q;iYRHD&WtM0M>w z_hk6r-XvB*#8gYDZ8r#U@`N(Kfb-87a?9P*XTte%3O8H^q8_3=i0|Q;u-Y7!Vdx5> zHTF7KKFnr?l#PWI5;~u7yQ3S=Ar|M`@4iDV4t=^KwrOXDNX3>cDkf*w2 zuA!OG%Ctef_#C7W4PGctR!IOg8mHvdSfSXn!S?j!n1|JvGFY)AGSX=IgZWeKwBYq3 z9!1S+W;$bTw&T`=s;6(lVSyiNI=& zSy<)Kq?I-~|F<%23?ZG}34%slz8gk8`Q#!gL)4b=tid+(2oJ&0Zh~1NjLpP4@vkHx zdyx4CHZF}gMCkhnL)?zPcwVdGXFGrJ?z_#oOQ%y)c9&j`XdFgyLS(cbofHR|WOCYT zuTfPfjN8k7rHf1C3&kvO%mX?{?ChIp74$;&_MyPW>KVrbIWTBicFe5Ol%N7iWr;RE zuLopwW#-&+j_~0a``d-|2=v_f&`(VD30XJ>Gdy>mh*)ed7D@ZHnKX& z4-^n%?J9fk0Qnar8y~z%9go4UQS4xDh)FdL*=x|Ike72fxD}sLqfULJ(8T-=kuZG6 zb*7>4{H{e!O%mSJL?dnkzl4%gXjWj(H$LPIPf)%5>$k$&RCJ_S`h6-Ha%$RDROJXTXC+61-9Ml%l z!u%Xo53LSz_h@BX_ePrhAuah+~V=HjEThuXA7(ddUkuS>IPJ`JXYEjFYb$Lo$F5km{`QW-X zGcgzAQnk3$77ONxxm1432tsFr4x}lD@*bwg7ARV+s9R~94~KDNFD zUvCIPe$udHz*melkH*E-Mp^tn*La7z=cpy7b_vhFMJBopfepS!tU8 z4OCvnnBF=aIu&AzRjiN_iAy1Jctu95UhH(sM}GOWTm(zIVrAS_=#)cgm&B{k45i(} zAAQtXFYPuUj#Rq}Bdku#04q^T&7L>!>^XBX08=OV-?asxiybm#+AVB3xu(y8>;o6{xp7@5OI?s$gOQNwi1db< zMjdm0;etevvPQ@jWW)d&K|qBP3PB`f2n*-W2VJF!lgR&FoB>Q|@+Yui?ZnB8K z{3f)##a{n%iv6!Ikw?g6@XR?uC|H|mP=l3md1~eXXM;@e3Xln2Ut6NU zsEL|y48_35E|ggHBZ-$_qZB~wv{n>A&NBL^3D!@zGsgw*?~&K61Zwc3Bwhm1u|gx` zjA|KR7%a$%SPd&t$i+Ml*Cen?KoSf7$}OOGyK%M{G$)*IqC;qW<|skA3=SD1Z4(s{f+$ zOA!DHnK)x{uSzjNC^?2d_<)?A%^KKwM;GNX4$uoHpchhUdetnVE|rcf78Cpzk$g~5 zIl4(=WPD4r@{W_58J)OkO-VYuHwD6}=s6V4-%!|j!A``&=?!H#Q*7ulQTpg zM_eUcwdPNInFRL;f%_)0TAJsy?ClEA)INtAh5=HO5LS7aI<5d{h!Yn5nL5i7FfnL% z)MlgAz{6UNa5S)xPX~=C3Y)HNoJ~kx>r2?UML}S|Fp%khZD&SEM-gLBXUCQ8V+aWZ zPq;H-Pzd~vffQ~~^dEwqf}aT>F;}YGxg!mg zS?|vLi(!RPBZ|-(+LC47eDhi)bKX@hhf6JIb&J&+w(E?CV9t|k{k4ll8p)hXjYOZoR$N@zhgEDB0zI{@{bQFQ|{Q{NPnZn14bx zr}_D%`}w2jPF?i~F9V|tox^5IzI4l=L2j3-CLcSaV6#neI-UKuC}0p9s}p;xO53u;wMjpl)%h(NA{r8&qGBnWUNXb7R4fz`w{ z!)&S18~d-u=I&+7JlnPrdetia-(;A-`L1mC5(UgsTYhFgc&T@9SYYU!IsL5dd^UTk z$I)xI+4>f>h8HcEW{=sXE?CUd|BXQ10#~az43C`JlN!uCkb1U2KISLG~ae8ie)E3nG?dXBYi;CxEpP=z&2Xuo3VcMo1HLUqE+2 zLt1M@qw*kt_j5f76QVrq2f;Q8wg$eQyjNiKO^_XH7>7qAGLzXL^-*J+7pr*+0G%)`VUEaEq?xx(a8#&QSzWPabigB08|>gFYmuWd!D)MsH1Kj zY}pZeRF7tY~-Z&3fHf`(I%rNkO|2zK+ z9AtT6p>SE}55ef={vI+ZYz%p&F^Q*{f7YjkQB0hl-}CXuWV5gLoKr%v;0fEICweXP z)u2m+{biv`w6t7)lK=EaYokQz^GH>qV8TG$Q#U_Bq<7qOQ<4AejkTf%T5IlsUK<#U z4Uo?OO8f8?>SnXttFSA5bJJ;BJ#Xu5Bj@52@yQGF{Kh3qVvj=`cLxzO23ZPh&&~my zKVz_g%@}!72ZktSZM3=E7l0DU*X-}_gXMQa1L6hR^R;Rw0aAwAHH$8kwf^ZflWv)G zN39hxp4rhjOu@!#!bfaR2+R)bwZcN8j0by4l+aUZ656f@S=!=3{o0j1F7X<>o3VT0 zqz`Idq#Ml(#Boo>)&X*(1K_3i-X-O-!L9R1{H%Mx53;%-ZRm#qBqT&Jy{#hP#YW^> zxeT;)UsQ;)LTIUi<4hW5i;+lKQ$Qk-i&>7PH=-BX<(bTdxl3o#Q!XsN)vUA{L}9Vs z%zs#-A>nKKqR5+6c6LAXw01F(pVb^7g<1Cb=hUXs zaA{c?jBoO7a%aC42;FL6&U&Ptg?4f4;Q?{r@HT~i_K-topE`qD+|Ktzjm&9#`c(>! z&@dp=Bgejybn>|;k#`T>0Lh=Vb4!+yE9l8L-O}^z4UnrJ|2Z~5o-9MoW&i3nkmhv= zz($R7RjSh$8k|dnH+BJJh>Xj7Cp|GSyfGdoKSVq@I9y}OB~UKmBc@nbD>r632~;~k zoJeC2!7i$AAtNUA<8l2)B8JJExS?A{1Q`-PxCUTk#B3PW2fgbfk(wv7- zF>U7>k5@$@UD%vWW2mq(&u+i_m%j|;_72g#yNb`X>ik?>Y%s5mivvtNPIBl~wEyX+ z_mdodU}HMn6_pt@qJ&tjTSkt}f0ZXkreRCLJOnG}QbCfhwy<(mEMe&nTAP-&(o#|L zoU=ib5)Oje#^YCy?0@GSGR&ASpgB6z8PJF+g@n^*btWCmQ8l$)uoEYA(1}wv70K_* zEW5<((yIshuZxQRbqD(KjPaZ#^MP={nuLFpLO;U!^2&8Cf z{`XXq%Gp&h=}qmE-vEMPmVcglQP0jM)z3uV;NR=9(ary-UZ!M-^;+}-;4JQPm9VPmDtrFZM zHbRf)d_bSChi3M}-t!^5OOa7I%_5ld;;^#Y&%Eum*XH_|IJ+Etnf#=y{Bp_F7y!Ad6L@_|nQ33M+AV2e zK^KyBD_{=TW6c_vBP(@VOc|Hb61D#Nf(uT{OI3;}8YCEe3^(Vz^VZ>1EA)h6Odghl z5mj?;=KEL;my(+#56ZlQ0}h3d<1c&q!7EShT+l5uvRyNLqezrV2kyzMy# zQ~XvKN)Yz%0|+#i4Q8*){N|C~P_+D|tUI=8e)9#p%lCY7~|xb>!j&TJ^|mAQ1S z8n@;>qbaMi=n9w1++YIZ){-gNEPoH)3Y5$SKBqD=4ZmP8u?#K8FL2NR!oc$!?K&v% z)N(`|=UI~ooj2*yN&8{U%)OI-2!m#xo%H4*gU=|u!bU~kEf=X5{8dUIPzf!k1{^Sf ztq|-Q$QR*N4WK}<6Ng();4L29MnndSP5sR zCI+@0;Q_{k%mq;iTYST5v-qb1B%8lwr4W5ctL&0g? zi}KzDN2DbNS^V%h!{zvOOX17qV}|*w9aBP5Pn(N!LO^sWqpv59&T=NEcw9=A3T^9S zjIzk^z{uZ!_d7Ct`|Z23oKg|-P@LG*#K_v6eZr5@Es17!8MCiFt%c*Hju%s=u9Z%( z#!zRv$p)DZ3=@5t8?DgHfsyx5wItP2yWH5BiW>6s9Wskl9WCBgek`5-EzmH598>OXkOWB2HlS(_}jSNBT2JvkodqXLJ`u* z!=#IUtUsGQDVGy`rFJKiXJs!M67}pXz7kSdMJ*!BKoK+`kePB4hOkDk)p47hY6bwO z9Ov~xqm=bHBxmh?{L@e8C%|ckw?raGf!tP)R=@lYDivzkrcJp&@_$uE7kdD?am}_H zoP9Qvt^a}|HK)k$E0CwRZQFK3JFj>{45ME&N~`Q{S>m`BdCNNLiKS0Jbk!+clT$J? zJGHHJ{FTpqv~lFa(x!DG99ted{J7kkZ@iHNf4l>C@?Q~h-a`*P^idHeZ2uY-52wZa zjBbaeL%VRB;E!Aoj6G^z`KSTFj@xAb1Ku|22a_J0^dpex)(>E={&BnvH#gc$t6lny z%(2ld!?FTiQ*Wy^s+>kniunM157%zAE%S{uMd0wl+8vy29E?%mKfc53$SDJgjLWZf zvO&gil;0dv1Qk*KuQ>Mb=88xc8LWtmT(&2mee8u7W)>+`B*s{|P_vAvd>RMS#Mm!> z`Q^?61&)2Jg^NajCFID#9J$P|t5-DK~ za6Ow$R037Z_=2R&%C??)&vKnEsxfL4v(vYn`1qcb z%)&;t-?PEzo#||H%_cX%eB-#T)sRZQ%wJPup{mt%_Kd9?Gh|u0Jp9-LSD!k0ey3C~ z?wsZYMDpqJ8 zkkY7bA;UhUPZd%JQ~9fAZ&~1!*;&ibas1ht8|PnmOi*fOQg2GXpTV7K|REu?N5R4FXLFf!jHbL^G~CSld4@Kt-&8uu~IV zlz@wiK?liZHGfKUr^GU*mY5!Z{WBU|zTT-PqalTD1ScUmgd}m?cWQg4mNx#EvxPK*JcMvdK5_vLl1Fbg@%|0_k*k%&kyZ3-yGK66^- zQ)Z?#$t{qbT29YU=4urLr1`8)8ZahXA%2Au3tE*hLQiJ<^2Ptg7HZ)@-V&yj+Dqd` z7(~Lgqyic{)6CeO_o+-wP-LPzrkygUVgRwQCe?q$xj`dzv?7LF@otN&VltX0^PkQ? zdznXKVjOc%+w3ys^#McaLAAYTP#W6@4!>xX2N-aUd1r0#7}H5zP@m4-r*#yKDpLo@ z`oC{tGSRk@_-0LWOWo6EQA;i0hvWhw-a~3j$)Gb{`{yVTxtE_7*2fgBipWUP*s93LTOWD#)mI@8ggoV%s{8C^pg>|5 zZ(f*J#Y~)AW(kuJm^K=k_35$g}7;|S}az+J{akTA2EpTaBAlvx~jnmV=*)c&x_9TI0a?zx#0ED{>a-GM)b77*+ z$-zxe6s>5#Yf>^MOaFQZ8&5W>rMI;}1yJ0$5LQoo>%lEpk1~yqja^FKFN=YP4D4mr z;(!_exeLH#0H71h78w?MqO{y>cKbA9^2(08-h4Bh*fE7}-<*9SsJ1gLv`V)y$ppo8 zGC2(MZtktphUlzLFxM>)G;0(A&p@}a$%pmhg4cGYgT5 z>{L8^_s)XQ@;-Gdh@BQ!D(gRf;nF!x?E$$}QtEZiyzF%%dS0k>f5;l;S-DC2uq1hM zi_FnqlgoVY3u=A&YE+sY~lK*$2(;4ztnH%fGqqxht~JdQV*V z!^eE)vLR$_`&<>A>r%kv_ql7IzB(__F{ynI9|-C*+NdE%CTRmRp_w~R$NA@gr`ur$ z6?iXbpys+ypfp)K;X12D8at2(n}m@u=QLa)Q zlxqyZ6ks+1Y;CM_BX4eK6fsyJyA=3NEC!KUmRZl8~1-&;N zE>;GkW;mCERynP#Kft=Yil=kwtLL+J*}}^=$IMB2LLR$1t#gTTVh8`LB1ZU-a_J%&&hff8vR*e10VIwb1l`qd{#89a$uqP^!a}y z&;t2yTvnqDDY6r=pFG2fp=9<#3H?8-ffoV`^5jXU0t>Q+@a}{3NRY6M?;9a~3R^Y} zt0bi2d`Cs_1hp3>j7Y3;J21?tzaHiqHx_QV+Kq()DoR~U%={-PGGa-H{{?Vh_V%BA z{q_IpJ>jaWHh@n3<5ZG~t3z=sr2s$I%89KCi#WoV0e3yVTD_>P&3Vo_H)lbAVZeJ# zZ{lbhS_P6^j-o{hrG&+Pu>$qT}pg{*PxGStlA_wrYJVhdQoSMQuF6aGpENm(6CMt z!z|0YL6L;BarICsa1_D2IlAa}w4$759A$ipRS*T{(%_R4&dOCY0_W;9T%|YQymVv{jOcoh}Z84a=C$q?;p+LuB zakHowMr*dGIHicQ!pQDWVK8o!@vjtH*RIRbDoJ|n66&52j$Y8szuf)rhs&Ect_Rx= zjW~YPy5qCtG_R{_v}wYvXT;@RzdECC^7DW3x++EoOn5mZs_+M49!jX0>TExGNr5KK zL1-6LQmmx+*mL>UXYMebMDZI*X#_aG98J)(#_Kc}T>j&GNj3o|Gbt`{U!8k33{sZC8f0RWkmz4pF zB0VQ{J6aQPLaKO0F&r&5NLjZlk~A{>zhQt=Qeu@yTI75j?Fl-FoBs_(to(1+RIB1# z?zT{T)AkA_6PLG~G$4=VBGM*#3ph|+19upmp$$YN>Kh z^l5>d+fLqUZ~pS1#MYz=2Gy;aP>4Jf(5Cb)`rKZ(qi8V0M32+m&Z^OD?jvU@r<@rD zEhf`+>@~exR#a#bYT}G+DJ)|9*6rbcIOC!dx@nSZ<%~>Enqj7Iy^&-`hOW4v1B&+2 zwq3n{F7kV`bIY`WpOxl6p-U-+ULgX)g;=TMe=qTbJkq?f`Tw)_9RN~RSKHio$~(RH z-s{fpY?-n%v(sm`H(-~#^xg%e2ue}07X*SaCK9`-DApJgqlsN(jV*RRO|^WA(Zrv5 z`Okf4W_K3B5)0T;rcPs1vyas$B1% zs51f9zHI_?LhjhJj7JzkcwHJ`iq(}}Re5l@84>{6Ig!{o(feKD)~i;WBkZNO31$zH z2YTWv8AE6lvQ&Qii;P;AtX&8Q>+7^wVZl zTncn4X&G7s9t4Al3}`1+odsD*n9GBJA!)NTC}Jqx5hokZ00OVEtnR=>?^0GG5N$al z6toZYmi|GAOP}NA-$-hozi~$z8+v-@=EZJ9F0}vf9FAT%^UxKltjx*HaqS-yAfUxp zcS+P53BwHnKL{<@oH4!G*tlx>ENj?2W7#TnQ*6E8+h_2?q84aN{UZ4n6!7)tTO_1L z!&fAFrU!G@?wyNlLWjUSbJKRYCaF}bQl%Wwl1aAFK#-*exk8zg)20uJ+ybRm%=;jq zZcW6sE!ucG4oBrbb`RsJaYvPcPBGp9^@ES<+egH%IU?-PQTdos(a?@)gJbeQ>CdCb zBycR+d{%;^kg((1Hp9Zdd}!~X5jdu42QU8^Vm=6w!||vkgoi#J*xq4!zp-K2(iw0( z(-tq=fwa_L(Sh*V@)dfLZQuE~T&Po0bTXEwo3jlSxq18ukhB1GV zW3`~al>Ub=g_)*=u2Jk1$kk%*JAQSntySHuj-}cNKq)z}^Y}OD3q~Kjq_Xq$01Gw+ zb8>V{j^OtL{Kl$_9DOtJOz_i(SR^f%{UMs9PJ7Af7w^Mj4Qvpmd-MHwXZam{MOg7w z=xb{e>d7=qcPU$sCNTM|k<(&2ZgH5w7my!BmIlO}3DF zJ;%MSbdBEBnb%o##V+^@8;%`De;@q|TOkFBL1X45f8jCpnCjoE^4F!!g}~-gIR~Y^ z^7pk;Z@=@_h|Sj5p|-2q`xGhD(A;K1AR==+W`vY=EtTos!-{3uSa|zo*MPI) zQFl@0vmECy;95cHs_GG{;S#EG>`cnih!y{VlVG%;-WN8H`UMjja@)`gP2NSmIzuK! zshPGCK{98oPUsQKFgSZb11T0T8<)bT^+Bu(qlEVs9PwT14L_ zwDL738JDrqmQRLcT#c5eZfoy$b!zgP<~vC>w78}&FYRs8B~md>T$@a%i1iMACZqN1 zviXwLvwCaX9o@Jl806b{q}hy)l-}S;6f)u|e7JgAcmi9E9AL9FsE3so_-?FHOffHX zw1ERdS@07z5Yk{BNd&@1nIw)g1^Rz>n++0NcRh&a!fhOHbU)?|5|Ovxc64wJ;X1tI zG14S@tBXzYSQ3_qWUzp4Bd~}FCW8?1c{&N~2^EAW6{9Nod8OaGgij+L$}__5QE6gtjOlgs{$OkoEbU) z@*KLh)Y3$o!(20!W?d+dI{1Ri_+8g*%$>?n13w3(Ti@$aXw-u#f-7J*4hV(((v#!P@`PR>qVPHS zah}6-5-)Ja9mKziy3!oG6K}8O8T35F6{2NhXLUlyptE!rb!J^h@Ao@~!=O{y2d@~* z2jM-wJrE8TR;cgeC!)V4!ok3m7!0mMS$$k=`2J@~XG;(=%0zlbXFPK8PoT2k6fWC# zcehB#wz{nx35+I)+!ChT=OC&ybaqul@c7aLCXnQ)wTluoZPMSJ3+mSEJ^z^ak|L z(klX)lAAQlg7wPwfL2Vr(DKtR+CAI}d+70VEX#MRL3krTm%5mdK3aXiqohm1AAgi% zQ3t(&{z_@BcvtH!U0tOw#y!6inevpV+-(D42dnF^<4hTv^^B1$f z|BOAl6B+1*8gpk}W6~D8A3x4O;}DiDd}lx>#?eR!26{Urtb?P`2)9VFhSDT@HzY=K zP8yNud{jP)`O{GFxI_b^EeskItVAIOo+l?N4G9^H%#^!b)f6R3V1N+)8!e%(q_uNV zFRXSxx53h9^{SeJ)O?odW8l~h&JSrmG|pVn1Z0BHsySwMrs?V-%%B>)oaqT~TxRoI zmTa8)*kh|87726(iAp10FA&s8hjtFZd<3_D>!A1>uQ3nJaYZ5*XcskP>ltDR>5e)L zhaazotnC4FTTp-U0S|FXq-H^p<6NM#wbUvA%nY1KM$CD z`zsn4KTn7G=aNJz-^R8$Jdo5VK88U#Y|Od41HmrSq@#; zjB(fkZ(4?Bap1y9Fx0p3Z<<$f3ci6coXtLzXLCpqkLwh|cn}-JZWu^tlK|n6XB0Z5 zT(g-Ybqo1I@)`6wC01pCFF%L6<0M{UdIN*@5|g45i=Gqb=*;iccnQ;&;3bBaMz!E2 z2s5>W_}$SXDkGD@016AA&u_Hylsj-B-RZ@WG)*o&a*fn^4H|7 zOmG)7SI6}ociss^<;SQvx~V|jnP&(}5_C(|Yc$J)4YHWLv3ad3gbxRDSU8;BT1!V( zW6>77p7~Y|J6!|<&pr(f>o;}4@!(C{f23cj7`g~mwYveR-tg|JP37YmL%A27( z+~5?d{26A5^!tA(I)gx(MHXY<6 zc*W_>S~f-CLzPgUJ^Rdv&C;1u*;KhsX-zsc5S2O2aHuB72l!Bh#!4XoeNe{8sZO4x)iV!E zd>%;~;BBjGQ>hCz#zI6{I-lIR0e1m<-8Uujj{Ww z+*1;MBRCY&<#JYVH~h5}Izm}M{Aq|tL|jvxK6NAn(uj{xsYb$rbObSXeVZQGL;|+R zUXW>ZGNiH;_g~Q9u+CbwhO#qOAKhIfJ}8;cG4rBrd5%oNF6>O!v5d3$ z>Q(u#k}?M;!?B`|3d%Y;v^!v?2UdlkP5;|;@wIkii^42&xVHzW$HUr~(9T!sC0r&~ zr{Qp%Hq=U;$Cs;Adm6>{AzcJ=6&oQ=Jeru;Fexb|l}fIveQp#Pxr-mWsTG_t+r8|p z^G#ZHTxn9aHL1)|rBa=uZmfr}sE5I|L-g~;LJvWjHPi)z{#fK;GtCgBlZCOEhy5%b zbs5!9bGae%(Y*{c|G%i3lXnki;co5G)RV(oGlbpa0OUmo|e8VPNMqcl3{1gY3k4 zi>a7_yd~H1#P{SaZm6Okr!S}svtfl`437-K=-MiJE}Xug8qse?sAkj*)J5UNL$t&m z32x-SbKuxOFxCQcgBm=!ZOfB#ml;cCnru=gnkN+2sTW@{9aL&2UNBejzIN(4(*;J( ztn+3Vaj@6-kcRCjIb1|lG*M<&=BIW!e5nZ*MU3N)0t2kKV2_g~nN>dKx01{NI)mD^^MMCC zotE|#@YqttP`jilSI3kqIo?Fw4I-gmJZZ-iya6gTzpH_F{rGhAvU=N8yGI=jQ`5(% zn=nN|hE~tE2s5E;r@&YT=DQ0dl@7-Ct!&y{9>1ndZ#Ai+~A+ut>HU` zrb+V}dQ@|7YUO~|U~o_A#(Gn4k2zxP??=bJm2uK}{b5i>#aW~TIxiSwO3^6O2x!r6 z01nBy<@wH%77o#EHO79oKF;}IQ zs^BIIt_a{MY$tF>wW5H`Q;sLJRJ;XU-d*ZAk~OzB2-^kqQR+o-I832I!m&7A;z_!; zoK>opGJI$SgU?)k>GUQo3`b8mHh~S^=kuqZ8gW{?3M#iM*CnfkRa@mQE3b`bc7A%o z8<}+IkUbAeCRacQ?RMe|ZQY{zE|Yt~lD9ZI1CL=d2;&n+8Wh=Gn}Ub~;U%Fph+TZH z2*Xs>`)HB}>&uC3Ef~934Va6@sO#wYsH1JF2Fvyu51f|7E?Q@8Q=ThXM8_i zg&r+lRYV__0*s$YdiQN_gr!}q`i&RNZ-1hCfG0t-e;{Zjgel^~fMySX`^U$YpoRQ! z494oq=gX?EK2nz3cLif(>k-%|ksQ005bI7d+ex!{MCIRaZ#c8QlhNh(D4l^gmG1;kCnk*d|c}SjYN2>O~_JgZf zQU$sEy3M8eufI-yapcZB23*E`O6gW4^P+^VXG(wpdu!us6D@L&1Ni7R_oE2lF1{|K zf@Q|0zk`70#Q9-u_rZh2iqeBdsV1G|Nf{l3R(WFpy)9~3v%;hDEMCc!)-Rp!R(cjL zLmPZbP%8N^lI!>}Mr|Wy~s|FUr-I}pXN?!Xb z#PUePx`sM)XW@RP;UGc8JH2vbd~8?h`ZQl64f$Y9)fgZ})JI97cTziB!_Ra(_*C|} z=g4>8J#b*at&O%w-O}bLuT9@QH2}>Xc4BR!S?aKG!(5Z&_Y4t-r%gkvo^ARYzzq}U zM>Jgr4}QUra)r8-%BW%#>n(A)N9^&JGBHg65-OQS%p*=qm)MM0=~EMAw*?jum?D6G+F zC(;qmERRo@h?ZVN&r^+v84q9g@N7_EC|tB{X~H&l-KHoU7SK7?2N~750+gOKIIYP6Ga$p_sJ&`P_Y4BV5AOgx2x|<@# z(yyDfEdm=)p%rt0d86gvHk60j&l4-;=LZC4hf~@lb-Ap>gK_F>A6-q}!8kA)W#mAF z!8--ZZNE9-Dp!}2F?Cj zntFp-jgJ@3Muos7AcS@?OBwWYeBp?XY>KGmI6HX!acakrBLr5xc>ei$K2tU!3rJ&` zU$OOHF?q~s%Ug8^lF;OC#NjEoy)z;Qv62|i>V6Y9^@aAL&ZaHA_8ReOE+>+*cHFf( zA(V)rco)0D)3Z3-$co#}+$PCvKg~}n@08vXtF^=< zxEW!A?D#&2N(_1!9Pf+_z~;>qXrhUyM^dE)@f)BZz@?sV3h6$~}wde<$(o&c) z03;Fj7_b|{(Y&StguIM?)v_NLG}m6g_OPc#;sm7 z(9!bDbuf_1`T6fk=fmM1`4UntyCD^m*=4P10f69B>M=l)SR0Sx!;Qn?K8bq=A|t$M z9ozI3VBk}hv}*ex;YML|2jF~EsSzU}DF6^dnhbE&=%PqsSF9A#o@p=S8fxQm;2Csy- zVn{iS6<^6IRhHt<%D!pa(^uQ$NEuYuXD^TR2ieEdZfhXt-5HlBq3>xzF1VYgtS0^ zayKsn8$HEv>i_!JU3Z<>ErcR6 z2Vkr`v;9Hr7I@kmb_>S00ov=I-K^<4bckrRW9EQg-_@JdxF_`(IUr-;UcRUB%AAAS z9HdIa^IiPFa<%lvFM7DZ$}GH3I1T!&+6oZgmTK;KVqdXaZRyHsjk;p@^H5ko&%uB` zg)%`3k6AwiNv_4CsgwzPsO}yaOS9ff^QoCFE%6H!)d#}sC(`GXYS5Dl;-GETHbLd6i1I?4t` zD4>4LwAp9^O|eIoG7rydV(@`Lvtw#h?y`?|-PuBIJ0{SW5INR$C#IFA6OR;rS3s0T zmx@8T(3XxG90Q#Oow0Y|+0Po+u3H{}W#P=oITs|n)zl_@5`g=MrZ(ndH!`jVlVFXa z5_K>Nm;{RCWN6J}0yXVLaGalvMO8sDNGP0ehXGPVoEy^RG1v!PEP+B5lu}Sq8!Zl@*@ z^%3`Umsi^wDt(BapjsbBS5R4WyFkz+Z`Q?B0U>oPE2!(;Jj|4H2UZr`E3%rNIM*zU zcC0W*&sgm+J64^s&bj!E?QH^RChXX&#_BTX4m)SvI?M=CYO4 zQ-mFPAO~EuC1d=>yYH$1-uvQqf-hu?Y`DCV?!%uz@%J0f*=0Ay6u4Mg=_B&dC`0TS z&?(hL3nx4&StkbJJ-(wUcOfsbvJM1hTyr08kOW)QVRg8pZ7PiHKj!+3#5r67eEjk9&uH+G>J%1XTaXkd!uin z{fed)F1fzYK`p2_CCs3z!wjn6Y3i2wqo#A2+}_)v)9SnXpZLy}k9dL^x^7P}x+=LN zPHyxSk~_vA%A6sH2$R4_a50M?c6rDGh(NeZ0wbt)lgEfd7)HfrHr9*4zh@M5sx6}! z)wog}Ia<${P?``X_LNqxVVr*Sq7Sf2_MN@GFJ%>8eu3{nR}Lt=vXsQZGL4*;01eu< z^>eMDf%6hokCk(+Mf<|_aTYX&;%i0{SU7MOVg7(Y^v?~!Zb5;7Ezk`>7h6hf3__y? zOr)=i`h_{Ta^)PG**0tCD&qZcQ&TANp$~oi1}dsyklUb2HY?0Ar2-nsuhtKyWIVf2 z)ipcx^S?J-{Jt_ex6eo_6{Myx1YB5uMBf6;V2}vpvLFt_#I6ass9$oWa`{^xP$Csr zMNV(AUSxOLMPZTC?Se$f4zK;;N^Uu}LB$SrQY&aAPpo8@;OikO&=fX&l-1$8Q+?Y6 zv%MXv*LLcsI02eNGvI**zm3q8{zkq3&wr9w#O#SD7C8;+1ia^XTG(cqI4g+B^qH;E z5Kh%GI{H#=9drcuG9gtT{Oxavzm&ETJC6R5F;X}$e_8J8cGOYLFdJolpExS53#?H! z&z@)|bvll7O=&mmA}T;0)6olg3^4y{;m%nAcUF>eI5s03Ta|N-LH-jqUVwQ`3-CnX zz{XM1tQB2haM8FsHrhBo)woKq(2Dl=3R=ACB-V)zl`S3^mDNN;$G#)r3jGz*}*xfdFiV#<5;o=z9M6-o0@q zP^+p8c&rM17kH8Cns1!(dn(=gLEsO~f*`yJdIx)8#{F9CyfL1Pajyy=p2mmaGu2zc zag~US>+Q3uzNQk1adwJ5Of4@){_W^Yj7I00U`)>v(4m^<(6h2x(@QUXgOwkt8`}&+ zZ5$mh+OPS5`uA4?q2F=Fo^H@nDPDM*5giip{kqv3(`+>_wt84uig>I=g->2YJN>aO zs~rut6doW0YOUN%t=>{@l_JSyoGI^Aw*Q0noy&f_YTY&Ia) zuwqpxSMfp`Cy*y`5J#W+0l&5Ye*N2u15?7iZ~*iI8j3Cm1=LurccG>7^vX?sNN8xgL-*mD#i4;d-Yr`DSlPZXw~S2A6)VqNaa_jHu64xv=PiWp6(z&LUG`vVap+Pcdmwefu+#-(+^ zGtNCfMey0Fb9b!%d#lXKj+5r!MAcqs`nwtkPU+vCV07c!dG?@v?%IvWo)sq-Ub!43 zAG)>IC|xPHbQZK)ZF|ql0+)bgFhG6tia@U9CX6)Ay$;V@glQ8y%y@w| zvGQigX24Ier~{S{*$lw=6=NF{NGM@&jZ$sA($ETRY~ySVP}MMu%9xmV#+K%T*g+ab zU9D<}A9%ONc~$&;%Iqn0EjA}{_^Lrc=bkv)7?RtKWRx`8ZfkMQm{muJ*uE+K!&#wJ z8u1YV(%3+9$$K)0E7LpG0x63P@HE$8k^0))YW~ep-NcnSpj@Sw^_3b<5&0r4nGYn5 z`lPl=Nen9W>4ZkBPG$O|60?TKw+Q%pQ=z0aSfOAQdB8^5Tt@8tub#hh7@@8VDH1R{ z2TW+j4Id!cG0~Fyb_b!E=RNPX_Wv8(6+;|7%y?)NosrTT6Y!>8OkS7_adaibQP{|i zA#>~-@i)wMtAPyQssS~|ypGRlqxiU$! z6A4MJnX-LLoE*WTK*OWtDbUBoOUg+Bp z^U72>9ji=*gYFCkH2P_#^c=CS^tR5-!?lqJl(QKH>gT1Ghx@Ymb8f&YLEn*VHdQg+R8q~qCB;gZK7SXB9_qN7Q zY9=7eQ_-KRZa1m&g22Us6_4WuRl2`;djh^x-2E++F6ad%^nYXA{t{>eTiv5vuL~-M zGts3_#UV3@rbRV9jdWOIHF8@yM)TvfxqM9z9bJ{@xcdvxk#EaeuMHbBFu6jX7D>g(i%ugrjAfTkZ`6L31*L2dX%?74@tojV#H8M=W7-_TnK|30 z4wg*8DXw};EDX9Xyl)X(&7XbicGJrrQeS%vs}5~uOGT_Lhu50W3G^`?kVc+Fky5Jsnv4{g@hmO_UJOF zdl3npyRcd*w(&_m$zu7o$bk1Mv*%_8r2(_ctebw)3k8b1256N+QEjG|n~rbG(1wf+_;`@DtTHS8FDE=|+QYA-*C~$) zMz{YnH!0M}7#UbogBYD+yG_yt_}$-uI)6JB8>O!K>@zk9x_7qEL z@0&(XezmQi-712ajs!<%{II41sf;DAis}0ydMdJ|bPmPD_JJOg)YLN=k~S=vZI?La zFG11UZp%T%+}olUN`l ze{=;SP&{z;)fwsoudIFNQX3bb2gAsQRO{*)2A*AHTe>wp`}<;%J`-0NRH^I>-(@S6 zq~qzz8EauNWj*AP7!$%1A(#xj4fc&*T8>3HUj&BGSSnACeO6NsET;(v4#!Qi!{}s0 zO*=4*pq^@e5Br$Tq|QzgM2UK{2!d{H^)NMJ4Rg8V#VLu~Bj?)r#whFsP=XLe8;rQ0 z5wpx%87H;E=<;c?@Q!w&fz!D&Uiu0y=kqUqSXUCJND4Ywx@GzYP>d!m2y5Z-6VB|$ z+}ovZj3zFq1Oa?U@{Y(|6T3|u73n?Arm+on8%&1YNyKhl>yjZ*s^;tZX0g&U?Lw<0 zu)K@fSGl$y(5=*J0T|IiuJ|I4?p98R`CNLC2Y6r@(7TiIo65DpN)RxN)^XQ%7A*rt zdmg%@P$4QmWYcs%DL$zCEPmK|V?k2dUum6+D+?@{ZyRHutxBGv2 z3H5Vd>(oXT{r~?jVaryFgB+n_uM^j zl3ZWzv~gRxR>vzfxqfXMnamg|l5wRWG^0}wG7fBYdZMaXTHn&5j%vc825M%O`UY7% zlv)o3o6rJ)tbj0x&w0CxEtj)$e_U9-u#@EW3M;hwbh^&om&WJz(7S;9vil*ohx@|W z#vPFIVOLhp?W@@aF4$&5^Zs-w*M0)P$<3#pZD8aOf6#>-oiB`mVpaHcwD*J)NnDZR z31mDz4_^;LJL*b#;jUQprH?&Ey!ZZf*ABQ1>6qLrYfTAjn)%HknHwX7R@cL|&HRtS zY$h*=V6*v(FqhuH5c#NAC#Bq%&4IoIYiRqIvCvO$8U&b(J$U`4)LwV%S!XPB`W%Zl zZ$q60kwOkwJS=tbnpsln`8>~LW-F9jy@r!+zMzwx-4S7F%~1Sl6>a&^#6gbXMrlME zfT{Od4nP%d1c`^^IRMi!2LO-9y%J8R2g1lI-tl~%1JtnSeJG`Enw(aX3MDCvcCiAo zU^uF4*0#1bQ5R7g3`Pz~2(6H$0*COzd+L@f^pO$?(>XlVH6OMp1QZ_0BVI@p1OdKI z4b3Y|+vuVZOK>lWGh5~YyGbU+Mo5EJy9hpNR2fET%OEZLYoC@IBedW1GQyd&~Ksf##NEfmwnj zD3(Bj5N~YWPcJo^ka4P6&|+d?CAUi5geC5fb&gYA>OatT9V62g`ab8N+MWRJtvqjsvg z>+RZBpgL=Zr={w4{j3km6!z^u)0L__|CbZ-PX@2vUfM8vp9W|_+U43KnH>UI zLwx%}2%xyM!nDFD(A_5kXBsz%@e9}sLG!i=_g7R-?dnRz!kvfe=o+i$$N2LVdxX$O z>l)BO4+7q}pH$isbT}OUD?c!kg+IOOlE>qr=$faWMlSc{PL)U5G3kR>UnSjvkpYcY z-9JM8@rfrmUf+~15O(Sqe)q3`&CAj=;{rWrWRq! zmy^@CYmh}G^r?n6b+X`B+fVD4F+@VI`I0#}GwKXA4H1tqr zQN1>kGlfmX!dIE4esx>Q*ksJ4|BykQ+h*%{Hc{}AGYKXk-t+qwyxOw<&{k>~iLQSs z3?eqH;DeV6k!an`YivM@Vwo1~S%4lT#QT5S$Wh3d{+qT_XI5U1tWoOs0G0~y4)m%f z({w(l9WPNCa=^aVqzW$x+{9MXPZ#XX+hr7^?TKY@=dp}OhqNx9| zhx|)}(4Yv+IQyl-C7%FEWEFYuz3<$0*Nlud-|NM?L*Aa$mtsM^v@xvXnFN|fkAOO( zP@w*Z!z<0PH06>YREURA$2gXm(Z=m_wQ1R3!3#`W5Z2&o=JmqCW^GUgqYsKkKP5tU zQ4at*n@pyN1B&#PWgg6IbN?&2{*oeY)Bs$F_;{SzsFn?40cyJC*wN8 zHJMgbmaz)8mHAr7t0*uk^$jk1sthmalK{1O5YJdJk%{^M`nyr;Nd+dCp!ZM@b&n4y z&%YtmG`Fjf=!`ffIeh9+Q|YgG=H=6H%QX*-zyQ*WyY@w$OSf!KV3CB_wli0G&6eyH zI|Fv#j@{Hj!iMw=#+>y@JqKYrow-x4*UK-9UNsr@?Q28Mc2#1{G?s|dKf6()d-6$! zv?bhpb#n`lRX`%)(4Nm5FZqQP^leN)-`XBPD_qezU2?HUBuY);>6+{80=8Pk6M9?X zW~x{xs&COX>B7NnpzsC_UxiK#bQKt7W~mL(B|wv-cuy@RM{uctE;RdM7T zMRPo9ratploM;srQUION0e2MydjuXRt0ge9lw^k7)$Ye_gsk+bgy!GQ2~a)v|io$PM|tph4F^ zQqPicVJ@4}gX8@Ci@Sm1dqQ%06Q-7iLD1<*91zWEtr-I1KM{wRxF~}CCd&I;PFpp{ z9<+?CTpQ9hH%L;_V59OcDN)_j-7A?Y?xG6@Ji>@AvdZCdtU!(=x;puv7MWhgg5DET zBvEuySHExYO)98`cAhNObyxKF)FC`_b`lP|64Pa1IHVhg?*5MgmzJJCf%Nq^$zQMkN9>zMf$$TMW{4iiH8XHZWG`@P6 zaVPD2%R8E|((kthoEBCr4|k$M@C`cmm99O+J%F^!?64o071b1~0xe#s0QGXoCh)kRuX{7k0iSK_mvtiB>vr8L@3y&tZzjob%1=O#p zr@tc3(`jMttSU`y{JzTNhmC1sxaTlvqz=$v5AM$UA@S&fX6^#0T-HET+XV}Zt^w`j zLtr^$-fI*sB`c?j5!Y%2a?)pqHA%`XBhZEkMIvkkv|_8XP>`YEKMcOGyxj0qN=)MC zt(NIaA{>nXgod(_U7f%|?b{VMhe6~e%CX&yeo8GyqJRM!L_uizQJ)|Vhsjs)I2M;M zZYWw6a@#);nzSIKMGdX~Ef;q%L}If2{B?_BO_$v`6^wvA_1g1Febws(@^MV&l(i;* z+z1Y1K-Ic@npL3Z8VBd`Iu|&322o(`#QkzZ4q{y~5~sGhHLVe4gDRHzh*SecAmVe} zVWTlH*@$=&GAL&QRh7YFGA~i(*Uz$Hu*Woc>5yjNoJCF!I7{=$<{PVzqCo~JX$XXX zASM0rv%C0F90LAw&uI8l(n}n^t#*0&gbCQ_u)*PM6f<2h5em0|$FSNaRiuK|LY)Eo zJu3OjDc7!*`U%~Ec^L%$*S+EJnUM%w@O{)p8MHUc6^pzELdaI=+1zJ)#8y#KXdv2I zro`fYmX_Z+Go&dUt6r-^pK6smaZ9)c_sK=2Aovgmg2q!PDo;CayNz%)K>ny|Qf9mU zktP z2ip$8R=aNKmn;Mzcl7G8@j+jz>?><mrF)Kegpj^{tSqeh#LU!|vP>U3HF-AFh%cr^AdRhu`{yq0l z_d@3U&O5*SC6dCLSHB&|qGZ6!zdtFINsG?+CZ3|KNSOUBO+xhtVsPUx$0N^_WZE1}xdv;p0klkQ%OQ(#5#WjMtIy2JmMgIOK8r+xL593WMcHl)oR=flVa@A=I8nGB`aQ4JxOH)#hv`U#vFSN)w9Jy5_QS(F+ zhAynDH%y%Ff#>F#I?&l*S+FL=QS(D<=AKUqf^3*L%kp6P0#(X$)oNaruToKKa3no> z_cB$&JYkcV>-RIYXmVth|7xp~Z1kQ+EpeLQJ9wEVNL-EL@NRQIn1t>aPuDm7H zZ>(Fsc5%N<4qh0EoMMo!6o^ujXU|ldjcpMbFsp?1k;xYC1*&Z~nYG zu7BYya}UQmbBe__eKxhK5~WYdMl}^u8m%^4d}TZiG_GU)>wvn!EAdO}f`!Cs(+wPp z(7Jeg4j=(MkWq%~NTB~ap(zuF(gw@m4?*C@b6Z=1FoKu*(gOf^cM~K+;}`}o=wG4b zjMXck;t)|+X^izy-j}ONMy1-vFUSqye7u&>@xdQ^y%S^Z#HUX_DgNMt8EJu38ghfk zqOlIfuc*5+rr|nR`oz{X`3*@mXk|fNLN-jXrcip9&j_r4ktY!LnmUwTMTbc0c8eoI zhf_w$@4g#7|H8h#8J8y1C~=7!!<;t9sx~~@9-7zO4D&Ml2*@=YVu(nAAyJ+WhOyMX zInA2vo;?gn;a3G0CDH@^lp%6s`YFlCYGPYqz+FM=avj&J;v1HG@vKaE-|9S3x`ixkODMeY{H1ePIKg>Yi4*Xbe1n z0MAtG(buJCcp%wHj|}rIkUU_9f((2G2Ir~@XXT_U2RAzz8q_msks7>r7jIA9_oLIY zaW{i;wy}y8Bkb7UIGf=*?eGpNZzCMWupgZ@)Pi&<0@?DhRY2Uu2!;}L3 zS7|hL3ES`WSE6NI_5QMPaw?(HGkEv%zv50lk>9Uoo&7Rs!ir@5a(k9vM?&~E&UakrmDae*mAM4!ta55s_3xb&tT$eS+?j0 z`hWVrdLsW%G$I4_A$;5nTV0n;O6ZEcZfJzEqszoVAG#DR$RoB`E)*CP(xe@6Io4LJ zpvsd7SbqrfJy8c+&IzVjR%@5aCaMd*(#n@}0+D*I*ee9CD$lFp*y?;{md!1u4$|%( z>x5yxf{UJnqXnq2a`W0aE}ZzST)X=ZxS=AbDuRG%z9a%o& z0F`le!!BbcBb2bu`Q>D(LI=-jPbnoB zB0Hv{2Ars_T66_vb(rs5SN~t554QpOP%d9(Ff!ty`C^!WG8yc95$(Azf=6*xIS;_s zPiKbZ$1rM@W1ovO2iYVpo5p7^YC~=7FQ%>Q@=$* zSg|dn4xy{4Mby=B(RAm`jr->wSv*tQIXj6uNwp=45#R&KLh@E=_b#a1BrNZyv}Eeu zCYDsfsz0w!xajscTP$XVuUW4m7oC+83-~bKC33*sGugbvhB>IOw|7T(cPsU~&aqex zs=Co{5tqJ0ykr=NOIB~SqQ-b*Ek{KT7mU?7LQqw=!+h@ubXGP_*aD%sjMUd$5H69` zqsSv&JwUDnl3`_R@l=f$)!r=n8R00swHjrp-@(UOSmpfjRI0^v?jl$>zv2QL6>!aT zIkmA?Y9-V55`j9VHfpHrs&{2KX4|043FFo^UCxu-)u)(zwumO5p$H9gs0t8>(VPtO z&!2zQym@gTHVsivp1b*e56>oSdiwlu(3(=!Nqhn7sieLE1jOVZ8HZk}-cU&5b%WxS z&p*D;`5iYj1GvmKKi!Zn&4rAT#Nsm=>NXIcfdX0$H-_~W%Y;A&tq6x@c-sL<>ZfmP zF}>*iga}A2;cE;>$5kFK;b`Qk;+{bSu=cJik+T{>>HZ9TK{!#n;N_ReufM+g?rkl= z=i^8CRu}ejpnO!OkGutB|Gqgb8q|m{(TGd!SKHea5&ht-AnZYImPZ4MZw`9=;8jvxhn>9HBid zmj83(Y36Fq8zDnDbFx**D@jHq1hJbz20_MqHcC;C2+&;Wnq7I=SP7$Wf^f>nS(jHf zDx)H!{-cP(&5!Y1D;mw2gser@nknspX5)MBU3+Z{se6(oWOvVKQXXg&TXdWdsW;xk z5R*JD7FOKsGG$^?kF+%-fjN*#ex^jiPOP%rdh36H8Yzm2n%%p1pQ-L#m^S3{dKQH3tl|jCq>zlh^rV~w(x2*EW_3d3;rDLK=YZ|8dE#BGFEN<(Jc`HJ{rtXivQFR=*6Jamgcarlrtpzyw=W~oWT+5 z+WU)Ijz|nymlhank5+;#?rpmP+bnB6VwsXzz-d@U4;P&S532%ILR~WkP0}bBATZUo zS{2JYQ4}5bo<=3muoJ-QRIurN6nh!}$cO{!^h zX6B_1ZaePqfDxl}7c40Gfj;!!``7+*QAp~vf+Cv5aR)AU%UgjAZvs)McXqQHJq0c5 zCyeN<+&3BOdAGi;72Zj-O_>6w5q>9R+X~%HHxYZNUUV#(q@IfGJby=ol!zFG>u$*3 zLOmOO6q%)lyhfodQoo8M(%f=cLp`E`@jVz9N#@GL1tWL{dVDfwoCX_lVDX1=TH+Y> z{s$j1@(nUjMu%}{d#9#=P5R=Wz`mjy7eMqP0n1$P&yr$Tju2k&tH zgTGL=+VR2twhJ> z!v4+ssEf1Iud9HD6Kh1e$BOIIW~)Z0oqn+2P1xwuzjjZp7ztp?NvX`NpZhLi_X z>}!T)e;A=25?H8jo*bQ_6w}V!2LKnIq3ofjD6yrT4YMm(j9qB;GOM_LS<{4G#Ya!B zR9$uTd%8@;*$~_Vj;iDF2k^{v>>Rzr+Ei!MAn7}N3B5zvR2Yj6pkowzt-XD3PU_+o zxOSxJQ~Kqg@S}Pm&f;>36hU%U#kinmo@7bn%VH86)axytpTxXRV0WTiktH1w1a-ZDk7=04jOcZ$*uChEQ?%|NR}25ptq&v=sNpc z99wr$E7W!L`6Z5_exuSjI9w-iPwqFX4c&uCQN_AXqAMXY!MvVEo9{Y)*<5^_t^|fD zZ(+Q0oN?leC^iZ!t($NrRIK|UEZ;EZIjaBx9iA&jIC`U_k+K$!R+P63R|YHH^~@9b z)e{)!$uG7N#))(yVSx#|b{<+y?Oud_LCs^K_0+}22AFnl0$DOv3rK7EKtJfdtZujw zr1CjU{it5xu2Yj*t|g5kc?M4=VzNNO6;uknc7sDsqS73&)_?r-wp&4pt}O~1i9s#| zTWdv|D;5?Twd__>W1wlh!6D;STewX5ARu#ExQ)Q=1Wi{vqp>X=&nKR3eN<}h z(kk^mVWq90lgS!_=ne6t{mm?im>ImFbdAhfh$(nlj%Etl)P4Du*-<7kM{Rs9dnCmt z^D8bqz^Y1mwTOY^8y91aZ;hnaUWKiK7UWDZa9v=C* z+;m!(6R>4`en2A7vDrd`!9YBiMq-nEgTN~#oeomr6^TR-dBrA9%>ebf zW`SD(}ri?DWJ+BeyJE&*ZtU0)Pb&^^tns@z~J`T8Y$I8pm z@2Q&<)RTG^sEr}q7%(X~pmFQvD%cDrhr_k`4+|WV^-|-Ml^hEXNrk-nv_;agz(#OI zY>!OJ)o^%14k}dQfa1qDlWPg2(~a5WO562d3Nn3WoyV z_reE$Bks}oj@^3@RsdDejB=X;(nLTrU}mZu9Ppc?UkS9*#%85{U~Hg&mpN*kBMXR=9> zpdM)kZ$L)C8>D=Jb)b?+HZ4876?Ru)%DB@lD&0jplUol0xRq>`yJgWN9^x7e{V+2C zsu^6P{ZA+EWgs4@zKh9cW(NEU79iU^MN+9(phZ*<4Bea$zVD`|T2~|(zIa?ou0A&l zt2^O+KnV=p3?|7z(Pk`(FHx-o;ZxuYV(_3bgd zp^C`sGAIF0%02io!NFO1V)%vNED%?9u#CfAtsW6>l~s5mf zuO7#KlAA%2RHrX=f9K|c&q{9_QfP4^kyxBS)8wFkv?ri)3Orn$kuot9gJ;f2%Rw_) z93EVjuPdzWhgPear=7NA@CB-kx&S(vcogWCaVdh8rYe?)mA{?vRgSxy@If&R=Lv~G z<*>_$HLj>Ja$S|Sg9hWMg=6yS4>W9uIHOiOF6kp4eDJ|P-f@QvG&JUX^uPoA+uQxl z`VBkJO(H%kv2)w%zr-bGPLgAM1gddvg6l+ACRH$F0rUEwHP@|d0SVNKpEku`40gK&Am&2W*jCy;lO_H%iM) zQfVJHYE4t->zh}(b^2o09brvSN)HAUfI~7Wanm5L_roUb1`r~wov{247_3HRnI3~I z%NFrLCm~Rw{B(|!Ejk|r#P)-q295!Ci_CJ4jaTSkl3Nhijun5*s#LkS(#0Rxo73G-K8$$q8#`-#;JQQt_ zv3UZ)ZCXPvqX#YF{2!<{|3?3#NfDPO-%ReI{(0U1O}xb$_I?E}v>$*=%=t0H4ic=8 zjXQ-{?R_qg;3^b2JV!J3t=5`Gp)oMa^7TR*Rt~bL2Cb~lT#Wf#>_O2^B3b%<20feX zjdn%56V#Khy+;1;|K53LoYZ~9gu&v4VGTDs$lwXsLhDT->?NbH)(wP#fm94151@;w z^~ZdsTmozBgEc02u033Bb{~Shk zPskliG{eX)KtN{aiAQ!19z254iVr*3=G3YoPX6ffB#R(D_(#7^>b6D>l-w!QDsCGZ=-MHP^EEl{B2-H16F;<+FN+- z8cd3vh>ZASZiA(S&|dk#-m2VUt+rfostI=hNhX98yhtnr>`{C@O8BVi`kdrizJFK2 zoLOJY{CMhKbd+Ke=+{&c9h3+Ip54D*j5p#fxZ_+K^|WipO|$u0&fHsf`Gx4`S?VvD zneV_qC%Bn$6P;Dfy7u1hOaZQ%O#jpJo2F!vP)|RrU&Ym^NLhAiw=X`UO~iMIWSz?j z#5(GW*I)moKN^5wfk8X0E??dHT_qXTil#0E9vpPAn`uQs5`Pb_-&y&-*6CD@<;PrD zq#R0cTbo&#D;{fW6X#w3CQ?uzlRalZrOoc$di(9A{m?@B>)&p^X}|*;j3i!3Q9HYq_8;TACeekhkL&2Drv8A7*! z$uJgT&@92{UnTogMQicA7A~-Gmud>Q`<39R&V>T&|FiZT08&-g`+MJ;nK$oE@4dI3 z*{M5iclylsLfKt%EW_A|@HHqTDQg&e9J@=IFeCIotHeHU3tC~?`*c!hY2+cR}wz`!A$piPPfFp)` z8}Jd#4S^!)_X69FT2SG%8$F8NW<5IeAlvI8#MOUD@Vxw`c;Si{-N4Rs7S(oPr@)Rh zz1o<>c?BY-W^?RuePG|pF zPsVDZBsI`Q_iX}JIF#UY8s7=PG~-aB)HRoC0QvuV*U--hN%adIdWUuS2xs;8833&N zTf2VM&ECpKc@Q~xf-OAO(^IX&75ntl+b||}gsm;fBwk9Mp^UbN;EFXy-z{&!@YdkG zxE}9v`)7ttweQW`*G5vWzRG@i;<9DQSCO^43*CjEER10t1(LV~baJu&SXbY#ztN+d z3v&m!@r0>V>LwLn)BDK@TyIy)0aQ?W=6DEC8QQTKPAwaZftKqFO%7aM-IezY71RnmiXFye3^nu zW~jIR&n!#MEQ17Y=j=B5PuoS_+%$j{r0r9)o&$g5818wH+eX7rz<>7l_vD|-(^6TB z4a8nFHUYzKXf`CnvVb%amt^!E6M!Et6{MFmgNwa1y_dZ|^Lq8ooM{*o8F3=^F{Zj3 zv@mB(JP8|`U`x{rnd5V44n1qnC235j>w6>B;oSV;Jqg+>&hPujg)@z7_TPUA2s$z? z=ic>F^+vH@LXRx|krb5T3C%2*QEL%WTc9PaaQ#^@7f*9iSAl6@RRfeJ~m8lhT z+!W9x!kafI>*?IH--uCIs{rfcmSE~@8t7H5hMBL8HUF5#Nf^FIaHJG`%paGOHJ~PL zCjocF|MRW7i7;2+UyTZIfneMB-mb2b>$)yj+vO7U0NaP?kfS@VYg1>-d%GNqq9A-E z49#LO_WZxVh(xsg-OkR~&3|E^{zEpqBA45r%|_Wv0zP%HMdeq8LNTqcPmecLX;Ns> z4^y3B+Wg(4ET{21eA>AY9UQP~M{!lt&6xVO1Rn&vaFZqp$ywvB;mgAPeEjWzTlKwL zLE~@WA*cXEx5HU-H8mfM148as%hdr<0RIZTd~`VxsJ^Zyn%E}u%P;TVJ+)GKt)s*6 z;)}a>p@^-k04(2p=fg$V`s@;#CGOrLJNNnLsgFLs?bbfGxeR+;LC;uHhE_d@u}TG* z6%*4^vw_M|I@7Pm!F+$k6t<-)L;vl!6Z&>qCa`&IpyepST8<8d(C)VK9d0T66=8jj zPowgrpoUK>C|Z=2Yh?S1pB2#8k0htCFL4tWuM-!;PpSicbu6k5t6Sqmw<#S}GG~w*$ncL+iepX-%qDQ;g=R4R3;o^Ss$t|}WIY8oNr{A&G?A7c&*;9+} zWr(fq*Bn4wwU(?#r7N@Rb=I6(tt+Fewfd|Uh8x%oN_|eP)#e{&|Nh#W=-nUY4%d41 zPmj7(Ol9*!%30<*^$j*M4xlGDL~`*NeNVLK==TzzdEGVZ>gUVRZ2;Zl*X;o!FjthJ z8!;#G-3b#|{#$PeKL7mgyNB@d9Jp+w%X6Teo;#@{sq#7*P^a_0Ovq^3lVTzvoGxWG}EVjfn%m-*UHdZGDRP`KFJ2&%xY$+2(375O$uRpGJ2YALJxneoCY4L!TTJ$s0+ z+Nzxy;^FiyiDM>Ah~Gmz@<&!8H|8`dZJ|ZlJlQOGw^4Y5EGe zE0xG{0bfM6<%}c}2uYDaDhj7HY5$@K^k07+1UNq|wBk=vC(~PdW(`YE`FwbHZ|^@h60U$PYBD*!v0d&A?YJ3q=U zV<}1Ay*h_?u_PDiQ*ygS*e*2Nt|9Rx11zf635<^s6t8n6tQ~;;AZ-w>jD%g7;g(b%CIF&7OuRL;eHS)tuxQYB~7{T@~R7XH;m9m}eEWcDt0BRbKcFDhT9!3r#VCJ7FUyMe3E3@{F*q@4OfRxqXX51;cAX zF~!#g6>5=@rWqlhsbQ{29g%xHQrI@ze7t&KTZ96YKTv_%sj>E!^+tVX-+r-AjOl%N zTed<4iu%)l62>94ucg@6Q?WH`K*w3ZYdL070O~RekUtxGat%DACfVEq`_CIv`(q8` z+6WVPGn@|MVhcQ%1D8iQW#qgaEMbQDz&SPuKsd3hkv4JXf@lbL`*7m|u1rmo0k`%J zO)bB_eG~Wp^{*PFVLx$ockj$(*eB4dPy0xmB%Odr^5)5`{Zy zg}`bTh(rPet6+F?yBQXI7z9p_-(tb9xg>A!x^`@^e^lkXS8F8Bzgw6^DHA#6yOcY&{i_3he5C;oFCo z9FX?c7SLiPlUie?-5LeT~|Ku-|UlU3%k*hR(Y5V^Z-{?G{B~kn2hW~ zLRPh%!F-e+F{RwiBveJo^nxEpwV zQ;qfWeADZ-c$PeDMj2m4Zb%eD3_yva(T##(F#yrI3J-HR@wLTecjKTNc^?0pq3O_K zY%HQlIl4WLf+XMijWvM;fH$?tXfE&J-nL%I0h+_?9)6);!zm*JqN| z_welU%jBX1*P>WfJ9m8-Xb5$jJmu#Z(~w_iWdi-$QVG`44Y+ZJgIB{+u$|$A2XeX3 zyQC(nmohw`7pZwAo}&5^DHVv+BB9eSE87P>Dkb50h!4D=!GM+z>p0|gjkGji&$g{E z$W$`Y^9jjA6Bi{6=zP$u+MI`tL-{T1k8gG*Qdi$SgHkio?!4>|u%M`g;4NEUw*2IY zCw_(j9Ca`3EjnO`EMGR;VQ|b^b}SM;A6R>aLm!fv#Wu%64{=uFK{`7%qZC?&(n#-T z^3*anrKcRTDo*xGPs>YwU*Lrnv(j-pnM9%Hs2AJEii>>M$Drn0@PkE+h2eE*{sy<n7z5Mjeu$57m-@IXEvn89p z;;vbgPCWgNOG}o*MVmv`z~+lUbWI@?X?k@w9ddn$(9pt^{+{cv|0qSt1SY3NAn`JY zAZVA8a{3$spB@=r3Y@;yZc3_55|4MLmspz11uwNnEDji(E(OD371f#$(-b0r9YG?J zM+HJCwsCgAwb(J(XB9}LJY%k4UKkANeA-P&XpF09Wk~mQx=%+NDOs|4rdXhG3K%l# z5LrxOOET;f!LmVVbE@D<+1h4z=_L-aIzP;w9uT{|Ag<*1&IhOigw1Ogt?J`Z@&*MoBE zU0}MLN!EIejZznzDYS*hCKKQnC=QmaS>33Q<-9Ey3=h-V^%CiN84Z~cnEc^c&o^Qy z_a;ZI^FAz>@9gaKKL0%XYa(8KF@ejz^#1)*@-V*uqQ4s2Y7y><$15?~rsbPyt?|Z$ zaosRqM-Q!jBX8R@9~f}d{8Kg*k>1@b7fVRmDB>yY`shGpxLF^Own(DY$vDpb>H6!B z44Q;vSQjJ?x*+$CCtJM>U4=;yXkqe`RPFuy7e7u9WaecGt+$>NT)Ad7(AvaA{-SLu z{y$rup+ht5d>PL=(LgV`I7}G?&1bz$U-DLuKq}*vUPRM>^v;f+XqlGtas}-U?^n z+Rud$V>f^)U|RL<+_sxvHvOjQ4^5voecg1RW*B4h*md`V%SFz0HHJQ6FKasGtCKIcZdqeT^`^N6_TRlB7;RNcfDd1TJT8PNL@*`C9e@ zAY@9-N=dq6ibqzaBnk;(eTGN$PLF8#gqY8$Ksn7Vi$j^IQX%uDJRvHU&DU}|CwH)Y zL|e)~w>e%I>NX2DK%yALWLgjhnYFbZ0Oy{o=Iv7ICP_CHK}V|aI1#q zX-r?U`vqdDY_(tF4QWE!kRN3{bubIBFT{<`2BKKucxMgTCl>EIo+}byVLcc*gxCKS z&mAoj!Bn}`G&mmsiyO~cCyp!0O@dCok(GUGW3xRavzw?kpr1W5zOnfZ3}sH5pTI8Y zAR(%LDaW|+N!)NPY@@vG*ejlY9?E)-_;eqR&}3GliK`6i6uSbumjABX*_g-#81aTo zwU8mM*}p%^zVJX>oA+$?Pnpc}OeVq}gy(EJcnc?kcqoAb??}QFjy%YHO#%#S3FP^k zU{r^r4`A#aCnESc;o|G)EwV-c`Cm^7J&PCm=m}Z%@9$SCTOrdHb#(j-Hv0ay{`wJK z=8Yg;cNH`_bzAv?in)K1hYxMC^a<>8SReWIzwWztQnMKbs{G1KSynI&P79GR8Ch79 zNovA=NxRq=0+ucV?dUS-X9=u-At+*aamvsGfrDr}rVSaNi#+`B!w*&}Cw6rFv0QFt zPxJUR(Wu6&j>M9BQ!=8!jWTTkHTM3P!|HGlin2)TSTzvL9C*alzrMQLXo0~;JE*(7 za(F;6kEhM!JmJp6jt1{Fh(nfu<$;ca?ljhjz`TyDL1PLpLgS7{0mp;Q8Xr*_UXU+v zST4uofEWPO9?aw5KH?Z1+((>*5FU+lda+AyC8Bm{1~)%4O!=z|aU+#JVuw;>$yI~df#1J%S_?w|Wb z8w^F>lt$ZMdg&$guGzES*BcTcIb#-zJmG}N-IrGbY$r=rzEHXfaU~6vRUlrr`d6%+ zrcvOvHBK=>fYw1}+6=mXlLdxHJeST~5VcpdEwYx#W~HsKL$8NEA#v;|!EQW_>+IAo zYq>`C)x#~vG!?c0V>&&VZ*S6aD$Y-n?on2j9h3$FT=|ZbfoDLs8#~fb7PA!8{K;O00oNQyEjXnnRC_!oW6DE08QS3 za6q1WLdJCGJ@?!XoN$r8Q?572(VIR)DhkUhBT3SoK0DQ8H`+lt{`&UwE;^@8AQSVF zXKdM!I>z}JN}J7XCX?f`jXFh0X;wud3okhaDi5J~>c-jEtCf5{!Kh(6lP|dbZtv3h z7Gq2af@JPN=ZE@cGeuiOv^#E#7~N^VRBRS8&ItR6Q|k7~eR6;EJfG44;w6lP=A&gE z_7@_Ez)It<*#iPbA|Z+nLpxC0L5>V~!cuTIPr|q+12C)}YU(kx2NNW49(p_wB({Js z?smvV_rUBu?q)PiZ)A=QG7L`G8ns0I3<1i+jdJccYTf~N@j1V7m>a?+F}96H=7}w6 z-1s$_)WI*{7ZmLrrJPGB;S*q_jQdp5*C3xC>XwEDhL?F#-r&5L?uu5K*&s*)9I<}y zUh0)sF2B4Diw^1X8j}`X`s%BH{lg!2rPFV>wf)}3*qdQv2CZp!ei)E=Th#Ee+V8$j zU@&RDCzrW zMWJ2AgIxh12_0^`zzcg=ZA|rQpRqkIYnI2_6d6O$NRR|gr0fdU?YHN$<{_~KY6QLH zLj@@4!MuFA6A9b*u@7cmtNvaB$sml*d{q4{txys_jzpr1LA9g8K2(*sdJ7sxODR%C zgTmfZ)X-XiGF=uyMQ#$}$(DP;P*TBRv^OC|Qn_HEm@wF_iYGPUunjj6NS{+W8? z-%mV=PSk*8gc&4qD1BuRbqc*9A2=<4q*?S5a0epFh&mQurfOfkz(X1I!tmC0sU~BS z6R1^KSa~d?h(ZoA7jg)^@^}Lj{e4BdzUyoADb50C~!C+5Pk)2|7c;13l#kF;fe*j9USF2UI$+HiBlUa zl{X6G)VGgtf9CsAAi*+^JbHrOdGJ9gTEH$q@3ZDMbOJkx(?r*m86^N;27#0&Xq%X{ zIr$csh3E82{UxbU;P5#qnG|{jHVFv}o&>&-Pv8wGG-cY;xq6tdp$C`d?58>PZP1o# z`=Vs%Pf#HH(aDsIgK42f)Y_v*I`&yJ?5KY_imZ==-|8F*0qiKE7)?=Y)gtq+e$^q9 z_^d-7kYuuzl`x?0Gxs?KYRZ(6S5JKPRl!Fe-FoYg9q+$!$m8uy!O%M;K#C=T_7$LhV;Z)LXE&!+w2D%MHJyzV zJ0x%RNfR=E%PLH1uc;6NrCnv~?J(#K-F^GNl~AY$tH*NUL*uMo$E|9_f-$w(3w#GK zt?*>b_0anyK5;MHbU&wYMC`h0jzmP&avTAr)GpY{3EzJRIgHMBx(qi^=haQ zGIjNJwKc2$p4oTJ_G_;C5Iz*T3=0}4aRW<%-ev6(B2|5UXR-KlskA0(nYFAHcRFGV zM^3eDoC!W>{ualdefG%?2W*&N&scKR{{1Mo{Mt9(7|BS@yaLZ~3apuCH0^4WnlRrF z^Qpy&EoycnfIEM9_xc}q_@ICWRf<#&nkb-3K}sZ4`||PoZ?LSzH}>BU)pquuz;{iy zp*~m!ffqt3z2$_8QmF(oe@ZvJ&H#?fe$hgQ&(I=si>!9Ef5L>wt!Lox(4bo1uF+|; z2QCB@k5m~~@UEk!a$!pE0f0uP5)0AWU?yA-ECP&PMG6SqCmz~p8QXb-_lJ)PU>wqD z!PH%dvA^VKr;QnEtZ;)x5oU4HBY2%BrXijWRP7sp|8@uXNbDhh*YxM6Pio$gvk~x& z-y|hMH9YF9bQsI#P88f2Oj$REtkcj61#`lA8kg)lYxzFjEyxuM_}#}`-q^cv3E61b z@C`eIx0L?x3nVUo^GzS16klz_Xm$N{9@@)xB0A=o&}Aq(SFk^h(^eH_qE&i$1i?H{ zCxorn8xuT|A*DP44gGpRRw%WQPf}8FVFH6dtQS&zc5hqTOP_q=!S$l8l`<*dEfiW; ziXTYvwRFgtZEJfoZy6l+ftU0R^$18g#lYqkje@V92Q@$#+{U8EAD6xO;>8!2-1>M# z=9PsK;=Har*vx54F6d3ltwv!xWw1U5eLk@TI3s$2<#OK>hR(icB_J~m+brI% z{vPAnIpYxA5SvdcAs$PCIa>h9-UsH)0A#6zy2IFHg-z*RfG=~0NY^bm@;0!pM%=~O zAg&v6xr(bp><>9hgdfKhtB3hPP^CW14|?jQZiB$98XwR9XE*pBVR;IXsB=n0v$b4a zP$;|vA~`o<{+9#~FzAVL_0cr$xBRrtGHZF9Z=hQjk8HA@JD1T>3(j{u5j3=Ff#=Qc zS#B}@sKS{E%4v&G;)*ECbCk42qF*)9Y}a~aW_cJb4~IRc4&(3kojEe)FTtSe#Og#) zItEkd+9;B%&~NMOP_zMM2#7n%U}U8#v1qD;f`L2#+Un&pY(T0b8BiY-s%Do)j17q2 z)PHavks&)FYRbTPywF|d%22K{RQ=c zqn+r0Z;CYxIFAewdki}PBL>I(9tHuqS9A5v+sRD_HlIXXF_CQ=K)yMU=JX2Xk}pQg z1!Gy^cCf7#b5hzRNuss+rMVRy#B1GitGfyKMB-yAIMXiDwP&8uHcz%_HHjq8V(Kus zjXeOOS`YpVQW8AlKtYIUg+!#IE)|RKBlk~+3j=H!*j`#6pBhc0`CNmt_OGwAXW*-7 z)ci2NGX@RdkvTloMZyb1sD3PMhE5=?)j!SZm4#Zw`H7QDz!8%3q|I{5Qp!`YN>3#$ z>>RYC%z(%s%F>FTbZcYUg3NAV-zckGutvto{u%|X>`s3{2!Dz=dq^| z>$-Or<<-|sR*^cL5X#A7pH-Vl6T`H3f>~sp{EXZ)V3w<538Xb*A?0#_-Q9KBrRTL% zApe*=^Stv4%Z7%w4i6*o&`>)Y1=|ZkPx(2rhvPaJfX(XQ*6d*Qsm98KC4f6Ojnwn3 z#%Xe$7kDl{c#QZ_;x-x{4IQ>$0bb0Mm|eB-?jPJ><6Q}6xR zZrIOy3Yx&){Z-q%9I?IgMfSLV8)9=NSG0^)BUEL2hy2YGI@?s>D`-t|!t@Xl=M+Y@ zgeUdDOQnY|%L`xD-ow5uEad(@zO1n?hWiRZyZ@+Pl)m7eyXvGgY~7~QC#{%`PC4YO zc(XaVX7vI`i+%p_Cx7!R`q~tn(w~Lij!vkEm-~?ZkS~G#Q`}gpR7^Q@XLkj5dFmle zeFfZdqdQ&0opB+9Ie3epkRP`b3H%4Q&;zH4IA|Z*;={`bF!`Rl3h=uPl*ku{OpT-5 zkxWm#YyXS zss}dA7b@g}MVkk;WF@Jxs0CuXn9`UtFnpUYvlp~a&lAh^txKm{WL~kpf4YDUL<3A( z9*&13kF%%3%DKCUJ1f5pC;|ax1m=%Ao?-7|KV6RZl6ODw&cF8wpJv~gLn)Q~5u~hM z_~~5{xPwf3@4+86iNQPHOFlxD;40{Wt6dw;$Eu?9VYnQRmIIcr;K0*E;VN1tcW#Cx zo{fovl1MTp-+{`VkCX^EQm}s`P3&i#+d9~n3Og>}k>`W{Zg$(n+p+?7P%l%blCbKw z*ke`%n@MF-4wEEer-&!hX4vD9ugtDW&(9H;Xj_-gFiU-6ecv>EEG={!46lSF@4>N5 zWbZ`hm%)xr2lqlt{hM|?3*sN%=Y7r*?f4syO$V;$5Ig?%Lx3Y_0NSHJf{E94K$Yl{ zMC<1BOHc(D&RTnBSJwl$cQp~o+0S6N3;P)WlrU1qht(T>#RcMcCMpU^!pW%oIyANG z#SZk(Zi$X(f<7Z03nBK%cuJpJVE5QC3^YH(lNvM`==pZV99>yOT-nz3yMorK<8?qk z6LtDexpo=QdxgudI)Us=DorYZ*deA=hAg`nIZNy*?b8axS-RNLX@Ipz^u5z~v^(IT zQ<6ZaS^OJzJ?dufB_60gVwM}aD~y~sINha+hS1aE^hwJ+2KVCQ(DZ;d-L8)qfcN@| zJiKx#2oEk>iIU>m*tfozMJZMMk&loW!mat>6Cm}7(>@BS2FwD*lX#u=ZR=B@KY?Kq zV7)-Ngwv?g8o(_;B8Afxu66}mhqMI}K_C1Ps2I2=7YFB!)~VnBCJ+}+p1cY#t3ZTS z5%(?(gAS@d4<6*)KABF_6DK4>e;&HwZ((gf1$wWOy`fCw1y3`g5!he?g!0T8tIsNx zZoyR1K18rAU~BBbDPc{a*TYlM&d$sfDZUB;X*eB|Ux4zZM+;;pyMIZs$n$w8!Fft~ zik7fy1N*Vb0x7G+h4b>Dv;+ptd!s(bB!bv3N71lxl zdJ28U%J+6z*3RL{Rn*j#wzPCj|yjH$fbpESdlvXXs@6$$R^r&G2y_Pf^6q3JP1`}ky}B344`S4Mt316 zeQ-6bV!Ekr?5ikJ8)MF zi~izo9L&KrHxyi_o){|XD+69q0n^#XIAOi*k5OL-;xiJNNMhC~@^&CMInqEN6v-um zXEU;)tUyC2yJSA+ByF=a9Dgz=k_%hn0UE*~oP)@x5e5@}zPnj=u&KNI9`qyj*jt0T zu8BA%yZg&8_@W!mhUm@DZC=waj>4V=p9qdsdfMK-E>!8*SN44M6}kfQAZflotvBK`h%bKOvF93Is$zv;e3|ESYruIbC$|WG8K)tcw#4Ls93I zH@B3oQp*Se#y&|x5pWY1vhz_g@6v_l4+DEstm_>5DlIc8cp|GzhkF@TIYo@TyyZX*V@?!_a)%49Z=W)lI$Dj&M@MXg3k6ZCn<;B&LXf4Zc43 z*=L_YpBS>Nl_lHK3}3FK(sL$yx9ph@d!-ldIV*7Cm+YsAkVr$Gt+&nvHf`~Yl_NT~ zl8A0Rw*am(x9OyIn;vKykij71OtQz8+>y%quRLBFkh*?d-Fr z8ze5+bJa5^O%#(dos5L^fG5)w*yB-PEbUq{-6Cy<^k9mD3B++W97{zcpV!hZI2|WU z@Vr2FjXNF8S;5#t52u`EB5#Xd zayIgGUROaoGuntaFAmMaqxwqpDjPsovMbi+^E(TLD?{>l-bLv}&Rpxqn(}~`F$%qd z6)pP?A*lX8bb8rbG({C&CxoT3XL@KV8(BQX1b0{0JxtQjW2IBlP&6R^p!Q736?#jr z-eTxyFUmX#e6V+KhdH9ZR1Ij7EVp*C9f-!JX~)K6i$_efO=6$7I)xt3zF}#ZVK?bA zSsa}p*?NpDe&axD@-SG@3RYs4znL?A_fgc{S_{SR>{Gm$jmDtIC@Z#Xf))&>v1pa#4YvX-Sb_wptkv%$6_Jv>&xv@Iw)oltp48 z$@}$cVJmwhGO&Mcyqq1xl@482n!S=w zB_fygq)R9Bpk;RK+-}vx*7l38zOEn9yq>FeZ>eq}ryuw!I=8#Kxz#mq<>~}wVB)J* z%)XHb4zSC5J-DMtV5$WAq9|baS{)yH7KlKgl|Wf6l+nyQ?wWu6>QSneH_6bhz#aj-h`}aebg_dfI`FQ&GJoz ztUN6)Wh_FWDUkL4CMcBBq{u8pu<2(-`qaN(VX)_t0V(VT6uZLlrGI_&i7T30g5+^i zr6Ph98{j*c!^oBlu@<+8aY$u>WSa#o_V%>NVS9tRJk-L?FFs5@0Bv9~N20-_DR?g= zu5XIq|Ay-0DGm13MPm^Pz}0c*2j)Q?POEG%85$ISTxHh4=KG^8sb@Vin zT#(M(^w3P)!=G`_HSA`BS7A4m7l5G8lN-zB8Mq-=f8CF7+vm3ELWjpT|B+PmL|E2N znLEqwvfM#;(6)huzR%8yW#1ACt~tGp5b;uLmz|c)UWZn&mvw&rIr`#@$pLky!^H>1 zic)%_IF^oxe3D>1EZ>4!^7m$l0dr!cpuw=bBH8!Sl?xY!fW1 zSV)&tw`$uuBgUj!WD|>RPU4`(SOB?$^2aJ`Nh>r8l`-V{Udd(P8`Y8?iqoHy50c#g zA1Gj01Mf@43nFS=d@QJi?{`iAZxhG^T>uoiD}bASCwG(_9ljMPlHa_YIN#%PzFJF* zyT#m}!>(YA3dP-GpxQMY1WrMGaN_~*!Ebt$Kis(TIPO8z1K5E>EE@0wQMI-0`0C+>6fa>4_#CGnX%q3Uy3$+2Uza(RJ)Xc$tV`^*0Z?f+wGz28vv2 z?Qt;0dO5rN@k~Y^)pk$v3beF)pfVXX=kLn8Km8Pa@(J;1b9DV#Im8IE8`pr!4-CTX z%VcyBZMhFtJkZYW!fZ4t_g2P%r0nOwUT42#e`PTjGb$@gvc9TMp0s+Q)8JgNYR!#0 zXJ19F)0Fzi?x;{K7pM}`jKv###_8;KIs=agqZGquj3OkU z=f_t)v|4RUw1`0&opH4+{oB*eUhNJ0(UVcoaznHk)TZXek9%m9%GeqZV_KXuu=KNE z*8WV`EQ9TV4q3AwJrI!jLP1ST9SH~6a z0Nim6l_Z=5o^^z}0*};>FDvj62GkY&`lU_Rf2{RX@aR1b!BB3%l8X8=@t28{s~6&z zpLnX8Bkmo5B3Z7MN^Dwnmlug>Pe}qx+8Mc&Vo%Fz+=8OOu{~vqi!!1Zdqq*IMxC_e z@(OJYISY|Anlv!LzDPV)J-;9AFT7J=*-AxEAA5F>OeTh|ChR)H7n!hr&FuoQ^PZ2~2RnGlfYH zkx40!n?c~p6k$X#86uJJQ|xO<#{L}r2*<*es@#lICeT_HwQ}cN3+j?cV)~PAI}Y|l zGfQt=r6JDAF36z)HajS`_8DcSei`MRWoI0-E&Sjz58t~qD|Jj6vZ|~ThcDGpr(H52 zlZqh5!3sHe2++|G@sFIiHZX$>LcMbEue8hJ3+FoSvJXTU3D- zPhgtHHel6TCP}3J#V&H&ZUc~q)X*=TMtoi#<6aKabsu^d- z-}ON8?>F9S6G(qOfnOwQWnVhKPyoAiQa*uwM$K-u)0=4un{9|EmND3DX|#!byo9pj zj5lGb880K{jCV2aml)8WSnKlx1DtivEuas-k9`u0i)Ao7GVFFUYML@NqPs% zs&-{@05sR4pcV};A27-u*ux!)gYr<=ndnJBb|yj^`3V}Fi3B?n@F8d=`&tRb4?7j1 z8M_n#4K9Vay1QGZ6x{jQ<-6VsD+e{$<1vc3yW3k#q}U3`drxWzU& zV2j!&OhiKPEk`@OmgP0?;vA`Y7kqm8#8FNUOdSWX7a+N5kaNd-j_Kez0CgYvZ;xPf zIm4m81J@&}IH-iS`_*cYt%dpDZ8;80oH_QWzmJPP)H#nX`5qS-x!Z&vGVTB#txE`paV|!G zF}-eUE~j&=>{PSBHnmx%}ulvKze6TSfMy5+PA$41R|MrVb@8 z|McnxvqD$MKwqkB$f=Hp(5d}k?_TJ#KFK+$Mj~IsqOcG;F44Dwi-Ng*IDl_FFdj#N z!AH|@O8@CG9VLHprD36X9g+G4x?9gqDwlOWI-XC8wOR%Q@}zuCxP|g1;yytnsr^~0 zRDJY^&T5E*B1;lxk*EwGvc4B@$={0RS9{%BZ6+y%-fO>2orsaj>O}OnA1bkVK(7#2 zF25uti(hyd9E=B2m@CQDQ5?~1+>QFL9nom!edqz;#2UI%hjym6pb)zszi5ncK=3tq z6b^hNhI}$D_VdHd;OAQi;ba_rg;9vU3~2uSrh?){7|Fq@qfrS%!8rPcVU?|bmWui4 z#m>$fi^Ur%k|1mh*U~M`V$SU6<+&IvvG#)D_krQhv@`bEWV*)gS$)4+PpAOHo6`cG1q>p>1`Z^U8k9}d_ z6~|;q3{Qpom1I8<}P1u}^X7U)XA_l?kt9~I|tz)bP~qYo1Ehxr_w3LhL+$uxf6 zN}hdSJ<;Fa&)(LrY+W!B*cNo}jIi`%;*RRo{Z?XW^-BD*5__sMk-M)CE$u;sP%Xzo z6k!7rQaZ0tNihnlx+EuwwWNKqZAFQa>?Gtn+Ep$pM>)=K)kj4MQFu@OCiVt2Z;rF4 zE3c#aBPNlM>6uv4hG&?(hDmy{ zz27J`4m#APP9VH?xlGEq3T&S<(7Qp2s)Ku&AX>_yIMMo8{xI|xPN^j~9QItRMZod$ z!HlbD&<>kPC?;JB(p4{Mu3~`P>Sdz{j^v!D%_p0Gn&&z)?9DBt>cG9E;K1jXbfZ1p$Tarox(za8uk^ny8==dO zrPE&GhCby0KDwKt9H{~eTKB>R@fq;&mcayfebpkan!!-PWYaacg8M0?;_wU9C@S2r z;6|nL?ZrEcR^dbWmNF8DS&Tg6zb1)3z*C&4AQZ>3f_pb5W{7uyxpqH_%OowjMdwWc zrkikR%PjSq`YG#2V9svZnbS=$s9E3q;eqAQx7|=I##}0g&`UXH))I5=3@$N8!iix* zq}2pWS{l?jUn`GQOW?0tIe*M&A!*! zNk}h!_o^tZ(eMM?pF7KO{J!lzkb?xHe==omwG7g zvXU@7XR_Jg-9T(Avcq1jaQ$Tyz^8M$qzhzW_!QG~@u}#S?5B%fdUiIYl=G%Oyl*Cy zS6*=D&q0@y1`x6Z%Bz~J>H-)cI)Pi5b}fvDfDA$n@B?{950>K?w~7ZlX*>p`8=cPu zSJh|;jB>|nLPY=JB^piiN5cY#Y&8HH;{P(HY*Jp7#WU>tL;x-0lgrMZ7S#(0TF8@F zVkK8OlveT#a*^q?sRy*G+F_FpL_|9Y_xHQ-{@6h ze)W1{QT19Wae8%YoVcxe{UFNp^q@Jt&=yn4LLO5*{p=w0*6=FaF$>JcUZQ`xoqs;r4ZFj&Vm^i%wn#Bo&+j zz{`Ucv)9~SF1NTfd7()L%h7;OU4= zYIy>0Ot3^nxGE5fcxd0T4_x4-U~OLLvS-$!%e6!2uWF`r8p?IdM)qatKDIgubDBE; zhHgu$+X{K0W0#8UQNSx^7hp=beXv$AL*3w;;}E&#Sooo3UV(Rci4M=1WHI{I6B~-` z0)tL?#$|(Y4*dkULP`=m$auG(0%z0$h}|7z{HQh8e2$b+cOZ?YPeGQip%UIkcHj81 zv3Pkj<{$p_)7o0U1KtlO$@roG)2&fv}gKNiitaGLXR@cpPnH zx9sWeo&tH-NB(ZHn)U;)L(w83c!an`PXl90&>U0{oAPrD^UAPpJ$Sq@c#K!*U6Pi# zrdZ{+sTqZ_L#NSqf)v^0L5tqpH<384#11-i!ZjE6OKSi#AVL7-VPv9X>+#Oc{j7kr z7H?t?8em{n3hKOsChP;Z(hSc1DGrFBN5|x9j-?mK$XLvU!%9^+y~WS#zb+$2kKxF{ z87>*uB1Hd(_Ol@++SbMHy`Wd(AMONl7hUT2!U94Jd*atwg@UKnLa|MUoR?@O)zfN4 z1T`|&Lg_5mf~`p@OL83)jK=Zd1b9iPMU?EF#MYvvlvZ@glLfS{8sr9-T$#7kKXalACwmxynYQM#Q!s%f0K8}sl2PQ9p$Bs9= zV5TviPOL4YJO;yXWiZV~s}xfrY84!(e?rz!OHO>YQ5=7t&^mf6MzM%PeG>XT#^!gl z>BBy8PUH=pEK7}KAj1^or>0=@v&fp7R%AS~;z-;`SO1IwQv7O0li0g&EtR}(m4ku? z0i22+kW%e5KZIAnC`KaC*aFlJz)GMty;4DK9k{>);MAm&C*W`}7R|tfA%J&8uAANB z)}>QgzqT!d9y|5zJ5xXoXNr$}yaoQQgPv0^zG7DiG&!^9UASeHClBXyG!Xjm78iyu z2E0cHp*=8d^(6FLaGK+R`MD6ZuJEK)7xYo5Lj!9a9Le|_Foqe!_2B3-|5=CtrUabu zp@qpfQBNp&2vs+wZnon(+U8d9kGCya-%V?jf}TxFoQNw^pl{8V|7)x$b_iC)a8OaL z&L-vTU0JLM1LZU?xo-1@v~lL1^ZdB|7u|LLA|T^#>HV~0?BRbu?5F@u#vOw)yx^C^ zj_U23dRg&H&JW?IUlRqwyyXf=PYwfXb`eaU*Dgf;8WdnIZ8Xaq8_@B<6aB6Wam0q$ zIR7*r#3p*s>FicTpDa=d!0vUrIp_aZuW8Y>CxcQuebS|~pEk_8U;&Qd$6Pem%uZ{# zC=w5J18QgXDD7|~Y*Xu~9rO-_7_zksfX3I|0*^dh>G z-3fD4oidH8vlUUaz*7(@*?+aR>h8RA{d!go`XL_z^8fw`xt!4MFP+>3e@I6ZlGRN>F ztI{%YXor?MV^_Zv+C&6~`nbr@dBG{@^&-2rMBpKH+_StD;H6soYkWs$Do4%QfW^m0 z>ZX0Pr+FA%;ai?2_Byz>#;YRnG;j@S8QWrhXiT6+EA=rFL!sd2U_1&eTZ%~xqc9%V z4W^^e2SbGtXVhYY3WH7@hhY@OdmYN%d(p4Z6!vFMbXgDkj}9BU2IhUv?nHbsq^ZC! z&pMC@_~jz8j7wAh*emo+>8GG1?{kbcYyM|mLzUCzS!o!L1w^n(ax@rR! z2X}cCSez*T^PlX`JM6~|Qzp@b#g<1u?g$%GQCS28!qBN*8jmp278ikn4d}#4Nwwc2 z@U+G}&;bI)8i`Vw34yejGfLBZcBe$r>^O7JJb{WSpT2ye_F>GyATVhQr0c62^~9R$ zYrRnC^r6L2G16KEZc(H`r;M^hL|_>r1zj!W6cJ-y;j~_omnexcA-}d=VG-o{=F5^w zhcHb!NNZ|=sBlVHWTt$}M5(e%?)NKvia^Vizfp-rZWkpcVNZtC>-^1$pbsS=#6ZD9 zd};xqSbV`O5J+aE@&3gHc4f3R8c(97DM%^H>{})+HEX(Dgu!?yG;!uk@=*^9f-If}sCsSbs6=3KeLH+zax;hZ+p4}s|iVIe`bjAxoL zy`x5OZtR`Jn}xEFs9`xch)gxNhO;aD4Uc|dbpE>@^kEKkG(|p2#qt@tx08LfVn@fb zyYOpgH&G#~@BH8`(KXc$VqJAJx~1czPIAGQ)w_vFtv}!cbwO)m->ChLk3D#YF}Icb zKa4!z@!^0qQux)*0Yk$0o zr|ob{|0w{*8x)p?UPDc-p$EoGR@Rax{550K#BsdAFXF?`Yo_``P!Z9e@Cc|9{eu;U zaa6rwU?827yBtiBwz*ir4{o97cUE8OK-(**r+PUVGiy^Zl~a{y+wp^0sREQR?t|@& zBlV|?;m_J8zS{5(UM7Z@?_3ITm&=pBSAfKOnZHNhn6ps`+O-bRxLAxyv$bH3+f%qM z!J%8)sLlDfX9d6b7rb?zz~AwSbE;>Ah#l33`Z3yx@IZdCRuht=k94D%Z%^s81V!_be1_t|EGx!tZzp@;%$*$A-PrJgE5cb& z5grHY2)5Vm6vySmQtfa^W2^uG`o@#_@P)%=2_9^1w3ZrhVk0}kyk8y8*5JqS@c>^~ zu2MfrT1|M-boQsH+zrxLj6y60MjyDGSqhd=!I z$1vr}u0t(A=!KUDqq^4@3IPt~u2Ul?}`yDvEvj?D$f z_V~BZR+q!EfsRBYsQl+Apn*$;&-u_Y1)mVUs$&qou5mllI)!UJv~Zu|Ubr;hk;!Pi zP?|Txb8ePv380uw^(C=z)dd}7lYIW|y8sSQ z0UU7SiTc1XbKN%g!X*SO4~zvp^fknMN+cw+prXiUf5CJSLtT${5Df(KPSz8E(@u(@>6T|=rsLo>(#?P@4ZB#I|%~__vHD;VR z#5DGV;V{o(CWo+?>UR7+>otUT!f~ZwC)PK)iRi9AOb|WQhq&nS>n=hdmofTUD^6$% zf}SXNg{NO(KgI)d>?Y#I>Yjd7>Fq_cA^Old#c1@gv@$@T6sxG}l)Ry6E$M>3?M1PQ z>_iF(KQ3W`a%@lNT106kz^>{R7+Ob)e1oXHw?#|By?P|v76GlRb2QZSVVQ`5z`pb{T-Ge@)Q z@lGB`k;Zh)k?q)7C^_>uPPn~2;=q5~^ zfKFl0M~fJ7M4is(4YXCHZ_h;KkQl={haWBjCfn95wlN^-y=qe-ukAYb^j6{jr|m1? z?B0s!XFqmK$7;i=X~$?zR&vzYEs>fb7n594$qwow}j>{V2b{J zWimZ~a>xt$vAbtSG|P3E;$9ZD@@`!24Tpudtpu0kLYO0ziGSVHT+usEpsxs~ zfLVY?fqx6!an{Jquic*01PooLu3R%v`1L{F zXIy>PzO8|IYZ|m5aW|}47;+C+U$F$KLYjpa%?JcUk_n&)Mp|QhOdFY#FqDCjL$yG< zboF|x31FlG_qNVuGgZ3*hq#icb%aGKI)y*{Tlgkd@K#R`di8#-yLgjGt3OGIv8wgv-5*(9q#5TiL_|?t)T0Bh z6<1b0#iiA91Vo(=huDe@cqGE7|}j(Q28LbV@$J=yQSt%0*$b z^mv3_J3ce=PG7jI!8mNF?-X8v^Rv@nc4C<;H6j7Av1!l4vva!(`AP{Ecaa|J9J0(Vl$X6$gBk zRtF}M7N??;bB-5jSEF@Gy;<9!MKJ}q`%VutiD)z^kTNa0j`qP=IV!nLgDiUJTj3bu zV@*}$Z^SePc85DYJrVYXrslCPSr*-MeWwNjuCZ6oYE#X`x$ogIt?UM}K+3uiP$Wm8 ztXl%L#xlVFM=0yKb$OvF@8-|Go>-!~DJwN=mbY8ou z0a;BNZ;e)KRPq`%R}kKyE{;3c9_{P2WX&Bt+^2<)(eGZ>%Q=P54u1T$t1~cJZ@J)_ ztGlnvoRnocK54ngA}}YFh2Z= zP^ZOHM{oq~e2L|ICIL9l4Ov>YEK!)R_=WGthjKCJT{7(#`9%H z1dWXtXJl#{=!c>{fT(Ra2b+Y~#j%l;rL>hHew(IPxxh@}wtV~By-=3^Mi?5r?A$F0 zjnl=u2N$kf+c@u%djlHen0VLSvY9QzyZ=E}?k(L|x!)jdePPNY>1FhTSMCs-xF<#9 zO}Wu7*L_je;Kj%h`owG#cf42qs9W7*L6LZrM=oC^&m>X5TL#X{N1{Y&Y;U*iqt~B4 z3WCrtC=>#?FVtx4rifN3B9A5BYhcbhou9nz*w&P{(Cw}B_4KL?j|$)Y&kAzXTl5!}6482clN>{BBexwQeUqCW z(Y{xsNvFsbx_%^@;ZdH6v=9>~da?VH0tMyqbg@gn^mrcT6LnnKEXG(IoVLQ_SCa7Fko*#eeL(gyv@c5tv@<5Bfks#a0C<9 z2-=45yd*X$X>3x`8XhN5d=0eqI$y9!>{fehI^=e=w%_`Z^$HTL`%V$G(Ss@3 zQqs+iL%K~lYg^$dG27W;h{aNcIP>CTX)B{}6MiOpy0rbDYh&r$rqbnX3^v0q67~k! zS9*mncVF75Po{W}7P$7#CbdE7^e7<`#1d2C_bLK@Rnj|iH>(z2rB50rktl3+`av!it9-EkCM%(?c;*;>M(jXWw1R84_HeF=yFfD3N zwqWIaO~uVLFX4fpc0pz-sh8U*K2watBo{=Hmr=f17Reg3y@dR*KK!IC4o~~q>Q1k# z4h{9+mm6a`y~-FcD*g9xTxO`!#;jjFFLwu6!RD4q*j@!{c$4s#oUsyYKbO8R8rKU! zvZ$uZ;X4Hzz%(s0J zq)i&rNJV32h~mE4wfC$oY2-vkS8hF}iG@lhE+}b4OS+h%;29dxxuTuIK~G7k4r-0a z`OptQBKl)VB8uLl0~?L26!8+qMA7qp(cxR}&sR$qpNuY%Q#TDul&(Tw>ED-uN$3gj z_|;_x=6&oo-Yo4VTDZGsR&&BLtP^xiFOWOKtgmX(*K~NmwWei^SDCz1m{$Ad@escN0%aNp1+?4}KE;dAug094#W` z?|9@rg?3;75CF8rb|O{wbeWOFk>@=@7V5Xg6V?_>H1vl)eXtXDMRvZk%_7u^TTpC5 z6)YtD5_*M*G>C@hr%a+=VVZ^;bQa<&wAj?G7Jkvos!*;(X^GfbfXF8j$VjxnEty%$ zJvaE}K_<9-`7UR`l`V7x;uFJuPjGzlJMXmaIBQ!y4-4|nORwl=VZ7kLs(&qH$B(uK zP^UKLN{%5Sg$#3zNFk#&fT=jvKn;r4jj? z%fI8I^t1S$AAN#>hIE#pObvU{Y3xX0QSm*HyE_$Ov^YI-EW&CUau#DgrphyDbpZML)BwU&FQAt^2|_7 ze_4+fS>Jw@Rs%^<%%n7j1L{ab9f}!+KeafM0d=R!kBo*I+9NcWo3g^gp#^o0#6+BZ zJQM5<)Y+<%A03Vt5!R1gap3fN4TP%I>$mUkXSW`DD`Kk=Z>PvM|eGJc|# zh@N#?yd-4OPA7zRT+^3Hi7@SP5Q6RFjbWo5%q^oP(G;r5ReLQjXG80*T(0#S zmR`16Sn=E6V%bf`UuNMiXXJ9;s3k~5s8I=}b&jM}L>a9m$|z7;BlG5&2-CVPX27&s zwL6JSH>^E1iVoqQe-M7eT|4+n#5d@V`-k8DSncX{E34o*+kEDkP3$}S{_@J*Yc<@w zA-!8OxyWrcZhQERcRy#m;Fk}!Ai1dat{?h_*qjnj8yfaNbc?C&|41mczzFhb0JT!a z3Z*4b7))11Z?S7!A$s}m6@!y;^3uf;Oc$S6VyTZPUtzV=4ojBT%bW5J>h#h7%U|i? zcHpBbtw=CS7gr(jR$Zh*0tlv`3r1E4duwp;b>Iyi_D8{<;^xgf!et@4=WS+Pz-lHj znHo14_I_YP&s>_ZHTkoFmK!?3iO4eB4Q>ipPC#e9?KWBWX2Pk+b`BTlzF2h~{Q8JFLcYjOwM!Tih%_qD*l&=(hP z%6ma+3xjM8mp@oDO4~*fgh-v>QVh#vODlfU4kKJQ12Ymc(%e))@hN9r|KIzV!y#Js zBleJRu$NugYj!w9-nA;(qt|JKpa1>u*5+p4(@$S;0aoB)?3eIKl6B7QL@TsK)d@a4 z9S4gG*XC3blUAB(CTbOMi>edxsFQ?W=UH527t+p4+Vx1bCX-((|*3+GACfi5h%yy$yOFZ1!f z*K|k@XSp9vQ$e`|>}SV`psGgZsp67EoUGF=r7c&Sv$AEvJy(y9-_LFmPOf5a3lK2@ z6@8Jxn)~^yayd1~mYSp{GKEkORh7~;hu~O90Re@hgf+sbh}Cs70J1s)WX&QV>#No3 z3@Wu&&5a7Ly#qPVYj@v$S!dv+&Fvb$v2D{r)1+-^Wrr3K;vK6;9H5j9*oAK98F+k< zyR!(&_87v1GLg3&K-uUrpSor}NWvS?DaxR%i(h_VEE@uDaE(dQ>oG*aI9z*S$|Kt4*XZkwq_T<2n9 zFhK3fD;^mdV)o%-;Q{s|p=txIwit2{frbPp)sF1Fotbdc>}PaU`#BS z4B7*8rnwb8LT6r*m6&LDo|ToH$v!o+k2~+scN8lIFB!O||F&V&wkT#XGHuWUV~AqU zkrzQ&$-045o|OIiaU^>lb>%KA7U&yfFYR%q=3GIEtY{a2R~Op>Rqhy*)aVw`Z)mLG*C%2*xx+IEg8)*G7_2?SwI1 zoi^M2ej7{wjW;SLSGReu?6rke{p#S%n`MjMqKq^m9U*wp&}=6!O>~lHLxDsr(%P_S z#3?c|XwfTqHne%>-L${X7}2G7Ub)w^^3MG=ridZA^WXzjf!-cpy|-_W+cqftRqOL< zU}mgu>CM?Z17rON7>2cRyVFQnmKwE+z2FFq`aS;fYd^A6MML;!P&y|>w+?SbO6&sV z=s4==$$EwC5M`!ZY1vDq(_OlIW*HW8r0+-kn3Y|g_GWVql9TTY*&CZYYC!Ob!Brs5 zg%5_-UObO7(iUC5G5VXqnrClNT5XyupV-x7OX&Kwv6;WJG>REM=M@UUqP6Ng(F=!j z$=q=g+!d`=J4qKzRyd*wM^SnzdJARn+bD%Ea$V8roMC^;H#XVttXwb=;>}i7)foo| zf4J)Y^C`PPTYc5%x45kL{B>M|dvWL&T*?>dbB8>GAD!QW2@1SNK|zyfd{hgMl%wvb z*ekUn;tV}IgDH?ZRFpr+Ajb(#}WWeO}J}5$n0W*PQ4ao7Fqa?@U%j9^;?&54^B?^pI?ZN;J z09T~I{PAC)!03B~^#k13ukJi+*N#@5N8Nbxwo{t^ap*Qh<9#ecDWm6&nhD5)cW7vt3zC`jWqx+^~)*N5*EkX~1$|?4BVg;3t&++=k z@;2i{ml$VbyN7>2lpqVm2*KumG@2S?=iIZL_vshhdS>Y7(NnHofJ3BSblqu*p)prC z^pM~oXI2Tda!2tI@{d_exE628D<}6UjD39y=dP#EuQJ7Tv0b0qP&N0;lY<(UTOU8` z)@6^{diHFo;z333xa;H(NI+f^J_Z5Vf}`_@;(H>9!J~V$?+Ff(+0xUs!ZBrxGf)CarTJDXBa&5q?t-FvI_0W=1e9U zu|_p9Ndc=&s+_|~;G2M?25N|QR;vT;%#@`*MeDYhsv&_@gLVc#a!dz`j(`7B_!W0~ z&)2)yPrSZCZ^$?NOQDAS@S8ms>}^BHLE~v>b+O-F^3U&o;v~kVht$a1nOGQQD;{{0 z*`ILl`Q8IL-l^%j=jDHYWQUQUsYex`S46}H(S@iLYe~Ls;&xPIYu_?NsMh2XbJv$#^t)Kt=-n}!Iz>en6 z^hwY~bsfgzC{X1D9|C2-4b`1%PMU{pFH?`yfqibT@!54O|850bY;y3FH5*8#T;(Ea zU_ygkn#Q14DD-`yL*E2L@Kehly177yD0BI()1S+|mL)fa>}&h8@BqsZ?R-KX7=)YP zkck{kF`$VaU{ENxYwDIv1U#ud+y&jjGQX2Q=caK{o6ihUh$b4}tUGLF?cez1#* z9b(rDr-piYS9MJ7bZTNryE;tCQKC>|N3R0b%Q}6)ZqLD=g@?`<%PdIBRh;nFE3e#o ztGlH|=p_9ZjRD&-8E?cA!Ep+YB@9kgQt2GRaZ0QEp^~&fB?)xUm%|Na(COS}6P^@K zQye##NaE}e{`XJNczmN5iC4E|FTLXYcDT?gn$JFWe+S$AZbk1o!tV_h)!zHJW{nmT zhdoLX-ry>Ywte%b&N}3h6P$4~wiP0tW-fM4adx;XJvE3@G{j z0$hQLh_)Yh8BGQ9$aL%nH>+TM?@d;=u_XG_je~gU-iK`&Ax;LhV&Kpzin^gYZ@aBm_+^!C_`Ho#E$)NB@*Rb))0PEv zaZ_x|z8-Ar`z~JRCeZEy#&62`T=#!);bbEJqB{k@vO2H+sxG0e(uBisNBHC;G z4n1_6Z}zZMH|(lR2EE5>CUFz*s|Hg>sezX^_lcbFOpfapp2~e+_~JFw(`wGN>8g|5 zFg3D{?OxEaVvidxeZgzCu`ivlr6_3YmQKJ0aSwM+L0FI=-OU75KuDTsmx(bRx|`h? zp#3;9FBV%0Jz9$LEQt-sYrPIEwNF#n%KYMSIMz`(l8|})6$iD69VL%){GRV&tsTjb znq9caOnIQ~#nJpMF-Hm>8CZ7sBJlE$Yoc?KdXFlNhCGe#po$DK3|64CXbytM+;$X% zKmG|etc!?Pvj;v`)mq#$|o~yZps( zeEI%vLcIk{}4(KC`X484>Nd0iU&@N>O3UoUs<)3Qcs`mV2x{yVfW5UQJ}h zsW(|pf27S2)YRR{eie6h+N&H{ybbYpA3)OIxHuQMMZmrVPJDgv;+vHwUJB+SZbb40 zvWiV+ahk@-lr|~IeJehf!}&Tmz$S%!ct4ug2v;HE>Di$0tb#;9&p5}n_QTRsb;^|q zX0A`ItxEd}IpJNfYt{X{?^FH59IaejNW15o?FsrF(u2MG5!CZxVO<2>*0$Y1;n7(3D5ZI``^_9!3nqvL# z21`u?*I)~edtAPWz8OPC>knvE9{+j0zPuTWxvcggyU zUD|)vz)yuy?!ko%uUfb;E8O=?8R%35^W~rzG6CO|DbYR<6m#}fZdjciIm=%Cj8 z&RV%>GORM16t!n2Jn`xAP=MT_Zgh2@xiMh~=prk&Y36LJ(T7bf`xoHZR*O_b$?Zhi zRwkeWY6Zn(2ph7KAy+s@ByCsp7FlX!JwE$1TClFfBRbxZIbv`=vKuMdHA)1ru{eJweaNT<#Zp_vZgLE<}CeBS_;Bn7DnJWmyO)b2&qJ97a+T z79KvD+Su}-vUWoXKAL%BbpB+>8k(GY4T(rbO`?bdJbKz;lD{L&_lxQV;cNZQpWy_Ai`8QatIp4s%K`dRAeI(@CD(t-VC( z0{a(qI`Su!f_TBeQLKp+ZR399_-E7x~yG2!Y^STp@NmSp(X1XZ9JtFd0t!5@QAo8EsK)5)pItqWn=yrjj5qQ)sKz?3+J+HlfpSk}>2@N0@W#Ro^AL$tJC zl2~HXK=#(4Xq1f02zVeUNM?J%%WJj(~waH9r0|O3hNTmxaaF~OR;FBbzo~iRKrmy8WdUR8JZQA zLE-d4rW<_QlUf-MBv$v@-{%ELf$eM6fQii&4xU8f z)E^C4S~e^~biHQoih9#SoCf9JXV%wuILB+(!^6b{%Go%lQLH|Hy3YOGrs!y&v)$e^ z!kt5Puv_RJGQPh$STA#z-ctuVg2~0x;dpq#l54H~=hv%DMrHNcss0Q4f4i>flvCE% z@K_P2mabY+{f34ry3?%h979FlRfURfRJD2>#yIF$sOZAnWN>)ESL+`dLoE#>?e|+H zdBfqgReBXDBD3Um#_!|R*nQ0id|gGn5ced|{=Un$%cM5p zrQVQ`4TiM5(wIc2&uh7V?Buzb05pw+>42v><8Fc&}5-(T77Nb7rb zshOumG7eT^dkY1C_fYbyLh~h0_t_jHlF^b`GR5MSiZ!L;O19y}T&N!-o8u|Ppmpr} z^P4mtucq&rss5QY+yk9o9XM~`@&oJ=*APzy3ro}Fq>v~8XR@+Bu_ z`FspN;ng$pvz}AFd zD0mDNQ9$tJu@M6d1zQtvIuw!Yy3Dp*uW+dC<83ez{fY1bTXpDn!5GNCOzZW)jn%Gj z3fnu*Isfbywb7{Px$TaDKW3I@01IdP!8*lKbIhV9--YNhzoL3QY?omL5Shlb3@d=^ zUHqQwM#*+rfib(-!46!$Q$C;KVR`~pR%(QZDc}a~S6|VLxoOsUe79`HFFv&*x26M6 zP<(2oJ(zeUiua@33LOi(JrWZ<{tAHek#uzqnOG*-Ed}A%-ElHaK7U}KC9r61t}SEZ6}^AjyxIicl*63 z1CP{7I$4~Owq$YRiBl>My(QSAIQ4?~C_?oZD4}R*v$j~FRia-uU*7o-7>*aA263Pdn}>Gs>5MbhF` z?2AJGZ-=xNRUoX=Qy^8!q_jkXDsRA}iYH8OE2EEbYDHnH*3IMc)4K)`M8pEmJoAB2 zM2!?=A#&ss=y-5u%c8(%{@%~_u2^w!`SPrAb5J$OxRw&Xl%@Gvb- zqgH838x()96$M{d#Z9N=A9OT6H*KGb*sSQCP2!aI@(5g_ ztq|c0_R@_m9&mgXe( zN{E>>%)9NMPYB=1a3)K3`?{3MY*w}2lJ6C+J8O|_VjUI5LQ+L7F3KdySv@zK1Slf=IDlBD;gQpy z^yrUOd1q@u*}D5ZlpYCcVvlgfnRnjk@4qBxXsITTwdz{dmeV&^(T}SDDAxGeO?9R= zX0HnMSZegis#E<7*ESkL+J-d?0@fzq)QV=jBu%TPP?0H^0G}A^5WaC!KHn0z1Rxg- zOyg;bW-Ue2qDgTJUhQ-8Y?1K09u}n9V8#~QMhT=^-djoY5n>Be+!y*@KD3d$UAyF# zHkHY&Xt;b@yWpxumC2;6IgpP8hTLi2NF)-SA4oge+DCGGHixxQQ*!5}eKzaRWjm5E zWesoM&sLPJ$o;(@lcx^=nY{Rse2hvYq4NsDq8LbbHz6^Cq6|pxONkLf*X$}@rC(G? z3EpPl2^76vsOU#WDp^RZLuv%Uk75%fp3kE12bEZAe57?v3rgux)-}Z!;3K|TE7(5a z!VWU<p|!VP_|4;byXd<`rKqO_;EqR$jhTH&dt@wYI4#$FlMck5!QCkNq2Fsk;> z{JnJ3(o)nK5d$ZVWVpWXo7UO4rH|e9$#v_#Cp_j4f%%G*EbN%H|7}mq9SNw+CRO_6 zh&wtt>JR$Ir@4zQ(TM=kz;BwpcgN7neux|jN;V*+O}GRM5i>}RCX!tV%3Z_CZ^~J? zzSI+e42BbJZIQdz_jfkSVsXmO=3zD<-=f)nd6Bt#BVs|OZ|n4qE+Qelwr=6brJkYr zm4=WmJw5D=Gw#7QGz{eR)4Nvvc$lG=k zhmRX&+&X!9CxLwFw7KZCDN25#^0Y2Lt`nD0ao9L=LwCfm!G&LX>H6!V*=&;FyogAY zJa5F}at*a8teUERonCXzpu*d+c1r2i4=-+TTIy1Z=K31ElZ$3PUtEFz&z?*s7PX<3 zQU~Y8O)f5}a7-m3u};Gafm$hz7*tRTvLqalkyBtoD+SUJ#BFG$pd@S(ej{KF*!gB= zN0;zA_k+S8`qIMsPy}%=X4=9rjaJb&xpzgM%MjJtJEl&)z1G>T9JUNz6N%IAYkJN@q+~d!B_IYH3z1ztc#jGz-zmYccue`|ytoSErTz5Se~~oe-q| zi#~fPTl1uW0ah_I^phdqyjmb|nws$!bKbUkV~?S>b!NS|N5wh>W_<8U2q6PCBxXsZ zIVZdlzzmW6Drj$xnXnOh8d{q}2H#Z7l7IkFXV9zLktM+i&v8%pF3m5`ujuFQoY})& zJhP|Wo;f9<23;k(+!G26^myamz9FvVBYP}1$fKTsRmC{Uo*Cm`Czw2waHt}|CoQz; zagYz$LlsX}d`@~WM7hJNfuJvvzaQO7tfcuYf~!a49LO$!WK1Xgv0!wo1F;})f>V(mF(=koP!+2LWwO#d-oZP)<}QoR z$>z6P6Jc$qCLF&v8(gryL*q5HtexuYx@y|s(=5Cu?{BqNCJddrcv`3+?L6_Cw~Mr( zhz5$^v7{av572^=JOb;7YM}SkfHGlV-W=cn5M(XpDo8wdPl9A|1P8PW|0II!x5Og- z#X>=0Zaurr7MmRN{_Huc)=*W&o0P4cE=wxk3Oou{dU&%)Kkwr$KQLe@afp1219yIg4qTJ zX6}$HZIZ;qH)B^Gv%}j_6P-?4JTNnJ&z0h<`8jA&ogk=#sJTG+eSt+_X$FEi)!cf3 zwQ9LV)hQLjf@|fS=QnF?HdXD8s~57#{;T?#yYem^;+lZ;z*ogt9ZR`l9-u*zTgCy?+}tWCZOF)t8wk>#cNm3Dzjvek2kDz??@kw$i5EaP^AzA9r_OSt$IoYThTWZEI=1?9Na}$Hke< zzub*==0S69okJK9pEL1-aeEtMmN*ZvaFF~1DwVE55;#{8nL!40?RmzjROII>pLQ(l zAQ{rC;mZHlzY4D?oP9!V7u$QuB?aL>z1oH6F3;O2bE|E7JEy$y#v5mZdS5o{YxHGv zT=c~kUlg8;FI`n*Kx9;yi^|*t@)Ia=6W}MHs$HLep8$|u_z4iQd&7yi3Gk-I{_F)2 zXELD#P<$a>>qD^2TZ=253c()Wx)&C6+McTTlJs0>QCyKojicSo5s5{r;M5owuYU3T zcgP(xJyf|TzzU2fb^uy8s@Ou^~;3L0s zyRpXnWU|M%s8Qu~Xd0(p7;vwSbV{N#B{ZVjwCcTDf)CofnZ72+ro_px5HDIH%@ zskUokqpq1qVq(x8bq&qAiQOwKWgpk+tHE(@v7}6&@6lN-4GGSuc31KSXRUjDVI}X> zr{|9vC~-i+4bD7U%(JRM#?*x0;v0-=?{Yek`=h~(kvSK9j2XgV z^GT)}#uRNa))^qPhKlFUd1h~?E{s;` zpF@pT1${6EvjprJsmVJUxoIVe$WB=DTm?MqAWZD;JMkLgy`^2UYdm%XFL@;)=Ky^n zUV!q~1yj4caXf%-(+&^fr$ z!QdZ3X1qz;q6NJ+1wCkdh~|8;qu2HXOBM~>VO9)BwcE^ zOP#v^{<7@^E#1+e(^d}&IU!|@NI&ngkg+BO*B*3%5{a!I))JgC0{R(&^ z6J9wo;4WSdG98P)&Z6B%L(~r6e{l!8x?UvXPb0FWZk_5hHMYQKqoLNoE^czSIunk@ zQ-l6YyDe;K%dT(scDNF*mR+Ghcb7eE>ntQXIGroz*xifD97 z-l^qdp{7hwcWXnp$Lv_7k;k!qC}Zc)%SU|q&NG^16l9}vDh@b71*?)&5@WIKH~-ZacM zME$KczcaVKK^F)aTaA&B@ROLY6@g{BwRQSX)ZAi@N4de=8Oyq0rXDl6`L0@CGjz&@ z!guH0bmp*%HP_(^9ckw^3om_;o!%bnbRvDjnX{BZdMC1jEwXt_p0HR*OWySQ!7H|l zjJ(gnC;RBtW|m4R<}QD9R7$)-Sa?bjPwGcH@F`z@%J1iX)&R02KJQ0*(jiKJ3_27J zqG<4eMm;?rO!-;ZYiN*QlOGxR5_?H#_OKa2QOjL+jj=wD(LaP* zPx|I>9)oNpfA@Ea+lzx052MzjnmX}$Ki4v?EajE+k+oiu{)=LDeCMefq$eO@1me7a zqmIde4=GwQ3X$3xkD;E+s%on8q`*aUh@aIa{t9Aj@A)VG*p|&2W5xggQ(s>~XUCDU z7LsaJB~$g*sEjaRBSS-VPQtd`Hlu6+pw)x?XjFFo?+=APaoe-m3*cCFKtUPkE;dJa z@~c-|aloL9^L680ND*urs8UaPrq=K1)+B2x^=hLcuwwYUQx^qa6m7{6&~eZ9iy2Is zRRH7pNL=r!vQ*W$O?ESP9wvTBNIUbo$f)1wAGh-96|gH<5mKPwD`7KRo}Rsjk~1Wm zBg~4la=KzC`=J!*P<`kp++;?$EB_7P2ZIpa-0-7=jfSAM^0KcTxMbT!!(M$FX;L@u zVb2IpWnTSp!9+RgiiF!dxw%cH_h)u&M6iqAfVY4`xW6KTv!)WPGix$1O9-JTdc@rH z((@_~1`=ifi|vjm&J(q6^lqf_Rh$g)_5W0?kD-j1ZROZ=>|KG~(-Yk}K>Fyu&0+Gh z>`yVp;GpnNS})HZ9DJPJBP=tq=Y_2BNutNmM?oXs{(K%TePPIPgY!}*(XxIz4Nx7_ zMDnaRfgu7g9k;@p1(qO-Ti9Ib(AxvIC2SpaS9IxPZ`HP3eq%q=sr#-vm+j2eT2|fJ zLD@qM*S6)~X3$>zXiZLWnvnl{=V<2(D4H-Bev^Vz-dEAgK>{HKr${xE4Esm|@tszK zMa>K$0}^!5lczDoza&Dq<WW1%BqdbA$+*eMB{}Du1m^K1 z(~MRV^io3%t8f-i1y+?_OA&n&3A9>+LD@nn_TOO-vXh0IO!wlC|Fi>OfAQ+Bhq|;z zQ)PhZRra7t|4!CmwRF^?ISVywH2haO!%I%?;ys4;jf=8v7tJwv__>#qOVCdA%no{v zcw9KG19)6Tyyd0t7uyzh0b;z0UDhSoxs;G{_|Z2oJvmP3*zW|tH>ly!l~KE%~G?^ zybM-7M(HNg3Od|}U6vt^sx(n!#VQRh15i^5H)wC)EpvikD=++Id!Z1GIpTa$6Pr$% zy$WD0la-?X2R{mU)nTvpI&`q9_-zl1Ahig`P7m2xgAA|IO3R>Ri+=gb8L~dxj$F8Z z;PV9eUGz9dR(EMCn`-qccsfQmv@IF!w0~k~=$1Z1zKf#CI$F7lQG1tBAZ7c6dh9#(8Zt4Vd@i{P7yFG4 zTOQAi<{q8;$9LUzl|f(WJ!4qy(N&Lk8d-fyayp)NwKZMm99ffruspYJ)IIYG_^N*= zYr)gIy8IDyfRFNlfwM&=W$8kJGoNuMq?}s!)RtVP zCNbiR+nd^=BNuK6!m~Dh#`V*Ha%ItdWK<#(q{%V{!*tCCg5lryq69sy4_(#w716^c z=-OiX%W_!Su1EaXF3EpRKA^{bOft~X-dXCX*Pxd?x<|JbtT#phpN2B&s zk&!B>Im!bsy>!hrfB4DIK5?t?x9;xvGtWHt+{>@N`cSB~O@g zy#b}a5ZG}pZqFNWdwy}Yo*wIQ9l6#xRs&qTKa1nAe2`Ip%k9%}okrVQ;Gux8pfVRv z`|M9nmuXZ>t61qmjaN%t&BLG%g!E|Ad}JJ%Wr|8{GhmWi&5xEL9|h5gj`DtieCYUa z+Y!je57RZP7Wpgv3s!xqJ+XHV@79i-wF(X>(Q_YMr*dkS-EmexxVgZldWEJdek=Sz z*ZAsPdXM_vpSEAs6WTNnhHT@j{RLHGqF?FK<$6Ll_o@vlIBco(VI717+K8DCM11OS z)Hpikg9fLlE<2(3>Bd@2iPK5rOZ;DOKXmB!rN2u)%be*SGz{`RBPRQ zdZ$pWux-9}i5GsnwyFJ#IsJeBBfRipX6XET!uqHw{q*%KbORT6=zV{Vpnzwf@A3wy5_~b<|osE zyd@1Au81|aI1A^Y?iB^wowb3yH}1(VsgDc=6M7BAJEos-nu6B+sg3Ru)p4qC3;Y*{N00w@Gua#QAF%P z846xKZC_N$_1(062~ot}wUY0wWacc<>U9HGmAsrQ94IEAL8_YskV^(rb)p5|RH-qO zSQVE7JAJ6)saeR3rX`w#S?N~Ca4T<9#7^4PQRD}Tv+*pYLe`&=C`o#K#Q0qryFQvK zB}avDR}T(8ieT`oz3l5kr;`0eFtYJ#4lhwu`2 zQ*$uiW@$6G=Gc5;rD8{BUsiadz|B)cD#twU~s747xxW~ zppL{*Q@&9GT_u_nC1c7V=EHEE+Xh)NiQhzpYPkqlt_bul9qZB0Hv1=rM#V)S;V`pH z{v)ISvZ)Axu7vAyH~00OQRH^tz#bPSp&73MzXcyLhwNTNLC3|YxX^+U-CLTwB_{&O zsce(*T7fkc7;mwQMg&q~AUSxeb!L-#Q8sOGf-k;yu3gK5hERBi}dK~$kHDb;y^E*?dg?(fs^SjI=!5*QGvkRF(7~wP` zJD5_+`h}NR^WWR9VEfC++(&2czfZq2yT~#9PLaBQxBy4SL(hQ9@D40Io~iiSi5tT5 z^H$!!ABl)c4WTr~9Xb8Uox6CZF$=m$)dIbmeP1p!2wAyacS6MWPIB%~qnoM7)GKVxZeDE|*2g^^j!e&#p7}7SYm3en7 zcrI7)&9;cg$iK*z&MthLc3(>g#L^Uhq^hS@A0O}-{3F7*Pe1*E(@yIawwTs@a$hz2 zi^R5T*?$S2b_mb=DGC6%j9L?PYGCb#k;kY|D0q!FTJxkKvA}N)F5aez=ot8&^*s?w z>w2(|OzKLT6>J`zk>U$UzWSvS1Gaq5ka4;V733K~4p9eB{9-xj!4iyy0!=U0@p+Ln z5E5=f2p#2Y5Nd}U@VLC_pteKqFgs>*Y?3G`m_XuZh-4X%$RX@iF-$^o-ZPYN$H)B<&oDFix?Lt$kJskzusa-GewU@n>ao-);uc$@)oyFT z=_C~WSw;RZ$fmA>P;^4jH{e`KK0;T4^6=1!Pv;S3{}}5Gpr}&vjePbvn)nFB5e0qH z60F3*q8BDjXBW?z9y4AdS)nOi0aEc#iJXTsDJh;lr{r=~aidF_P&&us1`8yZrtuV5 zLMf&i0-A2r0!`O5a}LE#1a++9+yzjF=xqe2w+h0W$Yr$DblrISD5q18eC%>zFWJ<- z-ruk7@K3L5(ggI4D<-G>^H$Yk^IW%be(+T+@y)AhSYJl1Q@editq>b@J=|vT+EjYj zi`hI6WbQrmUu?HMcgD()F{<^=+fY}(e2y2dPVl77EkLCI`BKNnG#*o{(QjZQuiCI% z(+BX{SmL1@JMcCP0>FDj(OV3Uka&?bMeQDCQmq$>@#H~qyObS*$APB>h_3V`smfB@ zMpc)7Odsmg#7F0HIbG7}mHGf&<{j;n_lrk+VxC;lFXnynL(Z7_nC0(!Me#V z;c0fh!XF+E`dhue1h|(}(jx{=rE%M9J(UY1LaMg8wxx;9YZm?++`yl@9h&JWvkq)H z#)0gD3mkc71LGaR$e2Io9b@|7pcg#1fW&j_j<_YB8@J)(pua>gi9J$+1<5Ihrm!Z| zcJlsSg*lAONG<^n>eh;TD?U^4mD!?j{Lx#+bB{KE9o`jo$Z-~Q@bMba4MB~5$5F0( zm$(X7y$4X7by$_#J_Xecysr{JYM(6RBg600^ZB3@^%I#&m=W~@clJu2r=%Y+VXZ}4 z+g#yow*#)C#z>r^G}+X!o|Urv`*q`k&3^4iZ?PW;=x|@BGVOUd_YyMW=;F zI2P_a?}}-(Iu+7iIN`rq%t0?M1W&L~Q@^7b@Ilj-kLUB8POsM4)!v6;#M(Wl%E4S+ zmg+PG#wOAx(L$=oemikykjQ>>sfqmtPlWQ!pq+7H4%;nU3U~BRf1~S^oT56Lb@HcO z)MqSq43ZnXHh0dJUFOhGuiNhFAO3mP5i{t+24lKac)3r9bQ^UjbZN#vAAH|%%57w8 zGj(TdZzSJ_x((|qQBP9HW%%+DLq!1#pan&sa5H@B$Zg?ryh@Kq3wE&#;9=vd)G`!r zc4^d3rQj@Iyj9|A`L&T=0>Huwsz!Lhid}&Gm0FGCy_`qfTF2M{%C{E#DaqP&6kvG! zTW{UOe%L2G+{1>4EKzgD82&>Bw5D!#2%7^$gNr#rb~9M=I(Se*NT}w)TY7U)>8u&g zs{Q)m(Lkaf@br)-tm-xS)C16%{#+JjoSn(Uqv#pnN=gzqB1z4aByf_OfFyydq4A_B zffMIQX-#jWh45SN3NLVP=7sO%7v$MhH!fYu^w#(gfaN(_mp9||ICH{Ar)Fw>yAkY4 zi7n3*YHj_Bv7Mv)w=4)5!rIu$S8`dWH}CeidxXcW{$97k)Bn9$HvS2`&`&Ufpx`7? za9%7Cq5LInoMcZqAFvOZ+gya{;08Fz-a(MEOvj;azKlXkVWfw%CXq)_EFbtvR2ynI zWl~<6-Yk(#BfeAk2l`8Xr=%&fM7lgiUrD$F-EKvd9_}$FO{MsK_dJe2xX*pg+pRQu zU1~6D{a*D$Jw~gwvj(ffP@~4OoeR$VD!?tCx&I{gd12Vk&K1sO;@`$ctWi_O5PGIR za{YcKBpmo?&Q7aeom2T%H1YIBtR zG4jwOBW&}b|M7?AbaV^%bk|TuxU>1~n&ujAizD3awtM@+nkW7}$vYf;|62lc@XHs2 z@=MoFheXxKkbaLsi|*1Lx&%;P!O5a&>F!ZMOJZ8jEV=q(-+Frawx1UC>gP zwZhdpfOxXv7s8s3@Uylye?F7?4@k zOO-~g;#@3ivc~s&aJt6jnb~${jo)G)q8bN_)On}J-{UURGyD{+ncO?w&qs%K*Pk%7dPhW z&bd(>Q^j3Dev0r$QArET2}J$UplXWFpAOr}LmbbkHSZ$IGeAdT>lgh(z<6e@0|UDT z2HJ(!|C-yOTX6oWJ}0b`U5l>x)uj^?PuZQVcDKDHLtk-dE`MH~R}c z*bYT-uD&G-_GAaVYSDmvqDb~zBLawf#r8mCX~JS{)=A9`SD-XLNs47C-TAVXUSw?H z-ljf+I)I`n3EbH51drD=ey}|=ry}i5qDO6w`PFtO`0?5YUV7;zU=_o{=RJ8_JH_Af zp@uiw?Wr)I;RDI-qk507Q)_0udaJo1#+ft_Q|M>z7X>*mWrG&S7qNc5WNlhxdQ#-XX=JMOQ3b z*d;uiGv#-IIBZm;PpPs+Cq@FUz~~g$W3F5nGDVjN8-(XQq^7`8WCre%5{u}=X7D*M zG(4(!2!4l>4(G@Tl%fPKtGEZrD^FBBUGZYYk3PgXE^GA5%|hnqYt93(dl7>~xsfQ@Rc~E}apSi6Y0vpj8S# z?DZ|kYl8Z&IUP+uY!<%G&g_TS%ZPO!esTx=tw0pjV{#!1qVUsR&)keQXy_Pa(0N@S zh5hltRqe*)csGbJodYo)*I`JF7gQcyW)QK@7op6{aAZ-cwcYzRE!TCQ->LWT4QI`~xO?|~%twol zG3l=041h{-SLg<>+`dki+t&tWPW@@@f{buomR-LhobPC~1D~^`>l!`6BkQ9*nHDGh z*;>=s>I2jrMDWYYWyA(AmXoX)qxqF?ZJiG) zY|;lQai#Fa15~ASS7~yblYT#rwJS^MlCTp#b&MQ?!qT70$e5=>jI1DIaZE_-ILLe` z^cH=i-iGTXLt}RMqsYt!5G3nhm?1c7Xi-aJGKe={dg=C@)@V#Z4_)vzi2C_A-Lxa8 zHJQ@xcpjnZ{&hjc8B(Djavkk!-XG1NF(;fvRDlf4kMx!T;;8fO~>?b?oxWX`>G zfYSjy!UFrXG;JydWL^VAB`SnUMLkwSYu0w^V0hxQ zdWUCl(>tZv1*{QWSn~fG6AaZ(IcsY)pO=nsx@iryTFdn84EnvpQ~5o2^B;2SM;|h` z2O8Z;H`7+zGuEgr_oyXPUGGhMnYr4Tx7OG@xaoO=%OoHI0h@1?p6cFt_NfK6O~{;Z z@{TBMiOBQv zuc>ACp2_c({mR1`I9ygqRW|k~DIDj*qkqb?yQHbD15XS}KNRI5_b;T*2c}FJ{Y#~F zI4qy9rJX(~HqDF}<>itYF`Si>_$BT1(f&dZaFw3g1r#+N=-ZW+`5@RN_l8e%ALpfX z?%w>JSzdhhS?QmL?Z1EOSr!<*fcsvhQL8Z6_t`Ie%|-%NeY(JX{q5LHy3(joo0h@s zYi?DkS)jQznPp!9sQdcT6HS+zUW6l+Z-Y!WuCxsD1BYrdI)S2UE2;6yAwLq1#VTMm zJ*V`2=#~=d`R~F26Cwbf-O7x!(nL&tzeSc?zJ=9Fzn22+1*u*G=E_Kbo~!Ho`uh7f zw!_CVt+c(=p@#*V+QsZ$ynkc_sd}K_d44x%vFlV!*=;=;r?8<3fGcOA_80#8sEw)6X^iEwvU80$_H3L5KNuRkP z2|r>~1Aamm6(EUjrKWFco7dm#u6Fiv8c&x)=j?VHooSoJmh;)n7>1e?XdA;9@oOBo)#0$ZT8?7>6FL>?+AQf67IORftm z8^3bHA%7%Z?)7B&aUY*k`6@aZ-!yUT{UqZX|GW6}Eu0q0g&g4A%z~oYE*2MN{YqsZ zw-CsrUg%hm4I1V)SFdOioT{cphlG5Ec5}qoUO1rHzobcYYMSRC81`mc5qw)R?1~ou z!Un;mYM8wt0D){;lpAwb*^A8`==|b)-xYQ(MRAYT9(5*WsB=u-fbs!-8*W zNN?wAc$PCn=s|#0LHJTlwzq&0TBT30@4!7daE~6DK%-#nS0+_Vbs`g-taoj~H5^h?<+4?REB+mb1;h zN7kv_Vss-PwY4Vg7_7Iks5!enf-*0#Sg0{Kw>s(^$=01FsE*+i!^_1OASP$MGn-)p z-&)kMA>97}Bv}$2E3L!?QA-YvO;^cF>u{Vlf--Nax`$Zza?nTKr+`i`&?YKvEuW(B zLusCpciE+95=*g?_?7rf3N-u53zIw93Z-U3_>s|#vT^m7${{b}yF>G_H>@FQ&%bt)@q(aWBI@Cs`*Dqk7g{e_znfxAw)9X|QLb|2hAU5_Z zY@`1NVK|Ags()1-kj;8SdXEqm+yfCUIq};1LDGteJvcl%Rf7s+d;zxBux-Jv42EoE znXJb5CM)^&PhN+Cz{3jP)c`efQ);aO(~DYb(eATip$dGOmI$FVhrn47fh?@l2ccMex(1*trZimFV4=p>M%qzJ3uNk#B{vT1)tl? zR9Yj8WMl;V$Ncqtq-{;mqOU1X% zx;~xzz6N`fu2Gi=1?ML8HN%ll>mALydVNzOw4m7(ABjls{o)rlc4)EG2=xG^HzBH& z`#to~O_h%bKKjV0<=aHCq1C$v0!)`PF|%KRJ*o{A96A>i4g&V1wZ@j&rLT1~+iR_F z`fcr&ur+-Fw0xUgO?EcBSd@P3^oRnl1N$0OmZ|u_Ph9c`u-7Vxw^hQ;|BOb{B>%_o z{PB&28#gM;1XM$(%YsNGg>)LGCl^9e{ks^x{<`W}oEoYo<%-fQM~g~VTFG5<2~x^t z<#9;G7zX2zeN9RX97gb^NeP;m2@MQw^nG2Xn|y{Uv1!7XPL53_LJ3(zFE_5Z?4C$>YAiCI(>uCM%D(qo!B^4Xk7+PW4j|?zofxt4?V9G zxxt0ajtGrSERB9samL(e%e6%{n-(MvNrA!TMnr2PyJqo2U?YlUOVVnqRoQeZU(=g3Xu^6+=gfxTcO6!- zqo{*1I=}>UF1$jOO#2<-9$VO)SEIC4&>sn+Z^*R!?;UGOvR^YhL- zZ$&1PL0cQay?aQOz@q}wjLM;cBG4Wd@wP|=?>J1&uaN1Sw~@N-TwJ?vvkjFWQ8_!v zq(J5X-V#~(OZXE1UKM_DU8!P%@~H6azMGoK$`{{RuH`$T~f5?BE@jWh5I1lNdsM` zmHi5{RqUC^9oy|%clJVZ{G9!rrK1o2`c-yIw|h>r(rSaB17lOA%cVO82k&QhOG9i0 znKWP;>NOhytcyy2JJxkj-U%=GR_~YruzAjD>#IjUVoyr#^`xwFZKv9y>{8lTvA&@p z(aH)f*a?qG{~*%dEE7?AWp*FWDHPg)sX0F!p`wmHtroULI?sU53~f4_vn%MZG+R8@ zR<2!`bx>F^o0Z5DZC!W6tI&9StWp7)-{9&Sr>Kxn$zSFZmf`1;j)uUkTT~RWWHZ)IioTCAa_S^P5}(%r2hsk73 zc;_r{R9MyZi)S3#9NWC3OKH_~oN(v~Eztvx{Z5b4s_s5%+q#Q<3syI&Onh>~(rUv% z^R5GVy+K@kCU;z6QDHw)28?0JUp^0K3sS(4iZdctjH>WnL8o#E>0MS`SYu2Lq$BZZz3nD_M5jx146sg5OH8MY=uOFvK(jHo zvPNaIDt)tn9o1ko{Sdz|-=Z~R%A*u?Pboba-(J0f*1v=el%XYg)F_`zxrRc>lvA)= z&?9`}v%l57cutW@?P_liXI#y-y1X{tEPdAP=m`t34ht9O6XsN4XGlk6IdSyUA#h?B zvp-6aCk6&8-1oxt|Fz4BO3#uFsC0|l+f{VY@Tc9J+E4>e6iCN&cXdiv6$hXIcGOY% zzr7&6gmGT{U-yG-xUY~#JL{wreI0t}+Y!_r7{6hZv-TCrzI2Q;wwNTuCt`9H@E7^- zYeeKL9s4+fSV0Hn@FNGOI9hy})=)kG+vIQrK`4%p69Dp9S_%L;2@FO|4h3k~K~2uFmVXw*D=F>Q_nKtu>cq?fx5F2NrOh(@Ex z)HMc$B@z_EbrB&}XPTE5Elxwm;IdvjVyZSk^kincZ&4Sf!uh#J)hCvYI2)ZKOCD^m z**aISsoLjt{T(Zg$FRqw+>J^68#F0(ux8Q#$D{WS?KQv=p101{R zm|etf1}jK5%^-2e!LyFM*ik*D&+GLK47L2ktS)V)=8CkL`V(tt#x%c&7T~WnR)dJ> z?zvQ*+|a1DD`G2nZ)EYpNU&zfVz;{c)U?_z1ZT|NpWvZRsVVMq=h8O6JySqwMa}i2 z6EvhN#FTNW7m-qEWf@I1_$MfLMEO0ITFdYM)7JN^;S;$?DnWq?;(nFJ4P{kw?uVy8 z{I7rM1`ogb>W`-$dBY8(+biAb|JJWGlN8PKY!P)#vF=Edwx!sa)VZ=IPT&lMu)eLU zm=IIFe(u0C&Pcwu<+j_B(qG?@f9B%fR?ng+=0|5V#}x{FOrucv`Z9RTYteb$`6cV* zmC+ha@cXc&HXkbuq~|HGl$Y8Pv?i5ulOFl8*2XM18Dnh?VriuujhCwudjF-NU|+-# zd=KuNo}M#vITpy}q|3;7!_1zN+RW?+(!x}EoAhLMuhcKyP?@q}abNln%sP<2zpyaKSgU2#3sOF zd}FzmoV*1}n`Q@MhJH4D!LA3j=l-h4tKJw7zWWNi{~0($_f^h^cotJw@T6yw@?;5D zALo8$WQ&}=fhz2l$x%0sg0ZsvKVBo!AC|XBxs0p`CSzoTc9oI&%Hv2|%Bk(7$xGac zLuCsMY?VSzxlG|2iYcL0(_de)$qFT7FTWd15)^Iw}6Bl)lU=`Wk?rC)< zjMDdNgTsA}T6^#C#)j%u2PFlECVAkB`;Gd#z?4D1;1E5H1Bbgur4wC{^d+J&{zj#WJNUcu zFy7$Dnu_jW-c&!|=W-86dSkjs)Yxc>MRV1WDFqueD2?qszf(p%sTK>=FU*b2R%swP z+-6eQMeEco`Yp(pJ5?N49YwPomTNh3Dy+sn8C~hFG zQ=Fhz6w)pwHWz9zFexVJ!_!%#Q%tX~i~AE}hzyh9XrVz7CbY*BAWyW`l|rI&$Vw7O z2xs_9sn1Teao_#mgFD%^(n_BFR%)$fK~8#gq^L9p+)A{IPOm}1eyGvZ>#L1zIu>DuRYDe%Qm-caG@Vyy{6<#r+DEPugVc4XE|Ka=Mi#JI#MNOH}183r)lSreogO7r9O!+lUm?G9UVUKU&s9F zpg}YxCWy6Sf4LI0;Gzsm|0tp{WxQIap+PK_f?)B0Gm27B#j$jM|L@qx5~u@6Qg-%F zNo#rVLE(cBR`vC{IyzWOu^8*?v)zAx+nzmpEvoGUN}eRsjzzT#K-$xgd9S>(jtSnt znOi>}J)HY)Q97>kzRp*&Y+LdC7q`6d!V6sJ#rv}C$Rd(`1l#DpkP*w0!B#c=(Hi89 z#flr@Ob|L&0{=P;$^L>;vS+v$DZEu4UZP=^cUke=(vw5iH`V6E&*i5`et1chgc8Yr zRR~PDvlAIN{A$pP4uM?lAQ?Ed5ZNXTQT%z1tSg}oXz?T^6DxP#+j!ctdv~r(NV`vO zSaDl7m>i?;lyx9K3KM7RLTGAZ&Mrih-sw=Y;G?`{8mU=e&OTH}h8_)=vui-H`ZULk zIU?;Nt(Xi6w^}CPVb~6rN%r{YZhoHhcIrp@v~+To`JZ2MW53!V6fYWiY+K@n8xoHt zE_~>r3%M_(UyR}G04wM{<<4JS!@x{Tf3(XUsSA^!V`?-&4 z)I)E*Whc$Y>b|}+vsol-nE153{IbCQCfO{UWArckDUX%0>ypJ*49S1IabFxWntHGm)UPxgI2n<-Z{w{89s5dsbhq%-I;Q^P!+T0>- z*UdVwO|aR8hNHFFT@ay-o9i3Q2}`0eg0!WU0bCU=a3upx83+hLXdCH4^Y`a8xK; z>}3bU%E1K$i3x-4wq#03?IB7jS0^)3qPk_;_FKAMp`|-zhFzr5>>5PUbcHos(!QX9>?o4d$R^$$D zd8z|`9xV}wV7Oy~?k87Xd8R>E+@tVp;B?lFW!{i*|%yA zLLMPVB)hdu?m0+u;aUoM>n5Kix$Y|;#c_RPe1M`L5?=(zj4MkYM9XlLtSK*p#m<1N zs@Q}DlQNV+UqUqyo#K53zKLxLYEoIPt+JXwc{7fE)}=9<+9KFt^}rEk{Yx)7^4HDh zW?tF(yvb1S9}bB&l{;&Gm9@fWX3G-J z1ffE$LT}L26Dyth-^jm@mPNp>3;CNhV;>eWY#MdR?)Tjf+^_~x7>OC7Wve@mhJaU5 zYZE`_L%}X^+LZR3i=E$X>8%&9mj3zduxK(V`+qq)f8DzFr`XNfML*n?7l8ksQ{Xyomdb(Y9SMR0c#gjHL0GG-^13DLy;PfjX_ewjE`ry1-)n<9O zt|+y3+Ev>wn1&J=0Z#{FI<2(~p0!opd?ZV|$XM$-UOSNy8a1&K0WW#;R8Eo;;4N$U zTvX1-e_iE{!Chfeb{S)%vU^E9=Z^ye+etYUucOh|=Ns2u_RKRZz5a@4pB=qHCQ)GV zN#1^fJzapdpW;IGtQfYRYI*yNl2?Ih+Jx<=h0>p4Nl8Ok+(nod(fX6@*^ChvY%Naj zVc#2lgxxS>#z`Y1S?K}Jec*xlSHDL;_2BY<8@ow(a_j!}6A<*KPe8Xw+^`W#iWQsY zaYwpqD}Sxry5Q@-F%CIau9k&# z$}7U05&8BmdYzof+{`W+kUr>B7wu6^uL|41L+*?-Z4COc53*KT345;KoO(-GXix<| zYcK>&F^%0ex`v`Ty?FZR$c_#}$Qp#0cJ)w=(TS*HAExzHxB_GBpfS=OfL06i|C1s! zlGirfH`-pM`=*6(4%!sq+SI%}_k{GyY-tDUk?!SBba*;lURQ6@9h>2ETHDjNy!BQ= z`re1y@LZqKKflEgn;p=Dg4Xi&H&q{+H#=Y{@2koSXVj3$kbqp8mNw30%`Z{_DFX-;Zf8S|s#ebt$%1<2@N@J`=ditV{4nMStNeNxv;=;|FE}KGf;!q<$ zriC+8dauZwvSu-1ljZHw8p0-t#>PhqM=n~FdITQaZ!>ha8*{mK>7Sh)+}k^M?mXj+ zGfqYZU0uXDFx&NwRBYyiOZ`LH5@w7*i^xY#K9BQ#c=U|28a3JSw#!A{oN~{&UUqao zLFPHiw`W|eYTR1eIX2vv$27Q!bh9Qw!w!Omqvab%5c1bmXHIdPM6hq2%^W!H}H_WO@pqOe$03l6`AKV zs4GX|e~HTI6vor#^<*HTC3l}Vmm7WTjGmr`t6!ksvXfK3q$a0sk-7`lFJ!Z?>SAwo zhPJIBiKu0VOLum5KGwtZ9*Fkp)SSi#*O!Q|sUu{{)y3CsOrj8PS+@+(5z$rg3KDd* zE0?Pd8Qsc=(lrgDd0dPu2|i$T3u1X1gDjS(fraMhdH7PWvK%T{%_x{4hgx3L;NH!T zzSGV=D?(c0wKf&|m*y7f&npCzSvj9+QXdF>@lVoy z&#d)y=QK9Ov=KMkx*M*gkF;nEDyH^nc(s9T=vYaK`YkCvMb^Fame=}%%VZ4#0d$jNUI%IKDRcKmN3vtpCwhQ+Pu^&sCWzKPEJX+HviAcx5btzhRNbi0s{hHmnI_vo3Q}6tQeyY|kIxk7br{N^_T2ZP`*f39b z<}cSSxv*7fHVF+ohMO#n^_F%^QxhL{&b<)41hX6PYK?!^;s)RWae(?y z@+0WH0##wy7*OJp9MnaB(J$1VZZBS^}PdXAmH@?!ym1lpbftN;|gp7=1#Y;2r(A zvOP%nIa~>?B#2WZ1c%FlI74MYoI#AQN`g27>z6+1U=Hdi$Ue(Lvg(i{!h$ihIQ4o3 z_s{(3f+E+QOx7HI#eMfRNxOfU&#%j7n?C10Hal|;o4w=m@s6CZowC|Zh&u9$EbCrs zH*KB7WJE`f?t!E>Wl^Gmv$gR-E>tqocpwDwbP_)bfHji zf>e(!7mf1q9{<7?g~h6Bn(RryzMsbd39o5RO3F0*uQsTD02A-twlJG^0-Xx4(QV`+Wcf=&}y{I=n>g;^I}v@O>7k8ekd_4Ahb zTecj(q!n|qIwYz`$6U20KI0{KjFJ)gL~=q2-znd3s%+_A*%8wTW1KN9FTnlVJbM8Zt!WZ8KpK9G5+Ubp~|;W|iaGUhbsPxz&Ire<^jl#=$>8;D8m-+1e@{imfKDK&OR%}x+3$&*kwlrIf zXP-^`CN7mQBX`nzHf1u$WV0I* z&Z+YoR4#4f{GlDr!Fdgkk7=AY#r3NkR`r{#iMidDn7P#$lJ07Shd{e3UY`arH7EF> zhEFPG*qb{vpO1$PE@h36c_Yb3cwm1?BzoxY%D0=syKDxn z$VhwsES{-1A$8~Ql4kByN2u3j z@eJQ)4|cn(?!hM=-X6Ex-G7@E`@K$A-;BzE&|LN^r?^Vv&+Py3OZXW ztC$Ur2~MoRjB_*Sh$lmI;zl`FmsI0QPp~MWw3I=?GB8-uokT_$8(LN}w|pezEHZ|5 z@Rj56-#4g}@Z1O32Sw?$!YXn`+|u8_yy7&A_t%ik!KaDpt}ImN7yY!;)jJr1T6(Cz z5bZL$u;A@n+~LB+GN280uo=nBML(FQFsqBl9+Z6P9QImMC}=Nc_NnVH5uT<*QdWwuf&u|0tDOo5?)Z z-rg!*>x+UXW{JCt-BCwFjSdD`x^Rp)*llfAm#zI>Q+1bJwSM8HR2<=96Tk*+}zAw4wwrmgMjVvUjMqoj+ZctdjZ3q*^$zb4!&QrQ01S z5UR1LH94er!ZLBXTr5=9?Y2XMg4T3zEt#+MjNNdNVg!x{bs99RDG^snJTvMOC{*mF zJXL8Z|M%0dH;7ybI`OfZWPBOHS?YLj9{GH>?S#|1F-R<)aQJC`eSe_M85aJ@PhPtO zKZ4op71`_)%}4htid)*)ue92zscU{xY1cN6XHLIz&k<84^V;?y~v}X;mt(sr96Eb^10< ztEsDr0nk88mQI>F8=*0(jJDP4ngbfA7;M$Evl9k~L80+$lm=T|TEy>{Yb=DD+gsj} z?gy3rgb^srw`(jab|j};aL$1tOv=5hj+?SM5?eAq*brK@JT&15eVw;%Nl|eh%9j^< zBlCQrz{1nDv(88ePKQ`?=yJ`xvs*;;m+`I2rX?{cjVsC|bV!hKXY>$&Hok50JjuC(;WepBkOXm#j-pe-;o#pm=54SUt#IcTH% zHyZ2L*O;U0*=2uZf@(9eaIU_4%I_EXs^iMCtV9 zoDwIMk~$S!n5-E{ z+<NuK!8{01oZ}brtP{01I=E5MLfP27VibD){SIV+8bXl z3*40KWKPEr^iq%+Zi0g66IIWYaEZzpBK97=mFQaO^mtCO?$xm(p_Jfq9I^^_U#Wm9 z0jcu7)b&yrs)Vp{q4r8H+*gp=*SVX}jRTjZ?_#D`ggwMwlHzWvmj~HSX^WjL!T!by zNZi%+U^ObG_np^Seby1Y$t)hW~& zmf+NL;yS0IPH7*G7^}so=-gwq=kY9>%wvw1L6Q(v$U7aBMSGY(fXJjjHY#LK>CPt`2`ZLy(|A3{{5A)mu zB?b6*NdbQ2m;(ImAB~70H}$&W|Cmm9jC?KlziS`3zqZI} zF&044MP_8b;%9vY{7<59N1)s~9Rq;#U`R%%l*+DeFbDvGLWLPd_Y>Qxy-!JH5TL|K zA;`ai%Fx-Pm;4=&S8<@mswOAZR76`u=T4lk3PYp9*5UCWU@(c;+9GSMWB@oD_#W z#|Gc856=%r9O*Xc#QiQIj>p=|e)qctJtn_$K6{U3RZs5xSY@i_;tIJaj|*ASYhmVLz7! zyf@sSr#&MdXB_?eDc#-6y1S=!cmJ@bC)%k6FcwjvQYKeJMRiQ+3wf2{8vTyW=mAM+ zZivk*?g_T;7p$pXEnU%i(iE=eSd6c!>!$_)JZ5*O#A6;Bn@-aj6!Dl%fO*UYW+5Ik zN#=krR$5Sn?+#6`6j^EXFVY{lU3cBZ&Ig{G%Qbz@UP(zc?cLeGJj-r>hW+a$>B(og zSMN5d)EP!oZi8UfrZhIy(0Gwm<~9FYkySZ~ zU%_kc;?%A*4hwlB-(6l2FYS)hmTM{^`jKlk8EX+CwWLjd8Yrnh8ZW@*22aKToaLgr zlG7?gp-N9jw~Ss+`2gYT#@a+;H^|jGvQx!Z^}nsQzC50>Ul5r0bVtX#oHZ}4%m$(h zTNQO9QJo_&0N1Ypwlv_I;&X%byTRh^$XLzROi{Y%op)IDo_pBccmE=rWifqYyH9CW zxs&zX>R42)QH3Mgvr%fFp9$Z6H>w?Sc7vWEmLF{ajhPE_rv4Dd!x5$*jw*SO`}qDk zh<0FDjfAF1Q$W*dz-P_`kXNhQp<%65f%raE`s79FZ@ecLftnA0-m+zbDA4N-Zrx=u zr9<7IaV290hY-X>^Yl0djZm1gSRhv0Hq?&(&c_ZiwrpG;fOWfP)>5k&kEvP>i3Z)z zr8K)h+OROq{kT$SA>4Y@m{lvHOA&mR26z5QF*RJj zh`_ArKWm)8?2#L{8$l1PtfWnp;3#b#5rjx?5~Z!9>v3{^R`rXLn%7*Mga3%diO(m` z-EkJ@-Wt*rtmIeej3HZ@+Yqp*L5#?CJw8rA1O+k@8$h*Y1LZ{_B7I?ySt0{ENO8lG z8L#QaPiZBeRXPW;9N^ac4nO#3pIw$pMSOZYAK>j>uw`RGX6z0M3NFm?=^EH(iM1pb zDLt9|Lke4hsI*mfqc&)UD2v&n60!B5*C=Zll#T5~Q(KqGC=+5q9B3U$-e$S@kv)5u z_SILLUVgc)x%u)e!*ow05~^Hd!yvPoTmc2OpyYmzQAZty7h)_27f`F)tT2jNyEz&M zMX{c<-`=QmX=>E2`l#8bj0+{Z){=q33=uj$YG;>L8JXu71M@t5{n{EubWL6x1Y%^w zf#CKd0|lIl3x-jO;Z%U+S?=4mup7HZ_w=wgw<+(Iu4l`+!aMIsFCV*od*OqVbL@g* zZuBbd_t@IFdiOQ!vIdJ0gIHpSLXlagn|&=)JaCq7&Lt_O(Wq=WU8>R6%pP)qcyBB8 zGKVHO!>9AjOc`os_znKKpR1z_{JOv*R7(V7|7fhD-3cc;Crk``VN)D59 zi9`q)W!e-bAm!GO)`2Es38}F|h|j}ci*I=tflMSvxha>c00U5>Bo>vuUj_!Kjxwpi zp)xR4PF|iPCCUPC)xPeSE?muG- zd$A}T-pQ#GyG)jjEwzH#qO4itZ$fuq$S$gHtZ!<R4SK_hIzusbS#O=N9da$)UU6a=&(|mPA84?u_L9^ z<=1zmWj`nuA6j$qQ%|vm4Oc$@{Q2w%>5O9Bnhz{#R+uef^PE#!9JShZO?>q6vAtU| z`7ni55EF!psgtlMGWo!UIE-LSnkHKD3Kbw;rp3ahMc+ie!?Hg$b|eHoCGGjA^fX&? z=bdcYLl52F)pdS%_Xn*V$<8d>B;CZ#UACMM5P;wk5ya}Ul;7#iOonv@YIG@j-e($|MlYs(S*o==QH3}@5vJ&nR zh*Q#vUrDHpjW*q%Z)Umah(Xr9L zfZg`~`^_Y^zG&x8S0;0ICi58_xH}0w_&l#MDt*<0LCw^DJzpJCx_mB0bx<$8UeNgb zU}=dSx2Sk6d0fjE6sat4B~NPY$!l$j4yEO+S}5k$2{y*p>0CmC;253DU}sIQ!*jXj zu)z(JC)f0dkxZU!n72W$T^_HJTsxVc+i5?725wG5%rRdr58MnIp_RlxUSN-Kfr~kA zXlj5|r8Jhj&1-$_)?4{_O8O`xz0ktez4X#c7u?h`ZPW7xm9t*Z^ZA%A6ku<>)PC&I zNhPRa&4(V=%Qst)f2vm<4(TeFAj>@8-aCFwLcl4g^ooq+SwfY#gRGPwG6 z|Lr{Pi*u3=w?3dYn$-$zM8_H2zm@(WY7De7vjmfmgXE>{)04&)$8LoO z4duMwRy|+!Qq`*vt$3&E-EpjdZtVn?MR)=q2DN-;`d$e|liw3YKyUP2L0MwUO5Bd9blHnY)DlDNbokQ zF`!jjRHK`6hPH;5XzPwnorUXW=JT`W5bCe$i;|9nHmOU1t~?<9oc0h->FK#42O^c- zq=B}44CR`D{BKfWA65EMz3BHvT;9Ptt(j}&41ICEOHr$E_SG1CLR9d6%!VMFIwJk} z#NOV!ija4(nE|-UvW`keRBcvaHX~hAFL*sQPS>?oZR5b5S*cE?V~*Ns zu0~6jR`2d`7#*E%i#=^~*fVxF%(uO!#s{LY=xu+oSj1I}Or-ayfo(TaX=g9V>+0ru zf_C%_zFw!!)fdz{GB$%f>oZteEoMvG-{}kgil==Az7RAs9gLe%-OXH-)78%Q1a0tE z^!2(luD)umBWp9*@?N90)oigOxmRoNGuM8%_GxP^)6>sYLRAil_F~>7FGUjZF$rB@ zgw_@i8xfu8ob6qR(ao0iP9mKgY?F7PvX1KUzLbq16e~s01f{&TF}|vDSa4N}mBbZlI6TQqvhIV88R-B~}ZFR6v$% zjS7xe8RlJe3_E9dsm0FikZz@8V> zH{w~)-pw>L)|=28ohlndUMD-uQcE)VpXeYBKxMhPrmT=5Ct0zR7b#TJznCI45iig~ zE9DY&Ts3fly0MJYl`7QnZDc+p;tTP8@CSGXL9Q!(p9;_i7UJ*}sAf2fhH9s^H^#K8 zXcwAMoy90he@LD(D0Uy8HZxuteQ%K0!0>Pi{np8-7o62!l$2d8*+iZytQD- z^-6!|M72`qF=!jxZ9}yyn~W9%SIg$}D#e;p<~BQb^w%6YKsuKFhr9`PXY8E2)(H9qC(_IJwpaIdSkmS~@AW<2-u`Oh12?T^hv`hpr1rsc~obk#!u}6d~hu17cI_(Po`xUU*(J@H(OXcqeZ^@Y1z@ zLquyX%-huGnYwL(10zngcfZr;XNpW$uc|D_oyrGYp~h@=Db^Q2< zR(sTr9E<*6-^72IbU=XqO=QUk>aT`fTr6IhJmQEJ(PUOMtY6=Fp~f9F7L7rl?ze56 z#cjyL5`f*-zP(CU)ePZ|U&|Cps`C3WC@RgM4?#mol^<+eOV0}5X5$c(@Gk~*K%s|5 zijFZ-bsBjvh5C&y09~3gtGbDkS=FFX?Y(%-)1Allh*wSmo^G6jy)Ixm7*xtZE*JIW z+RbrOdoDPj3iK7!K|{9FBdn9<##;tCUa3NS{c3|>1DVdz zGj{KOs9S3`ryC%_6lhi%-ePs#H$y=Dtb(*V_k)W!CN_6z{Q;%buJU0~GzL%RrX{tO zNTAakHFvTV&5rg~OWN9&;i}G)_PqP>klv^2{pstB^$!k?K4^C z+OSa&0FT=0V{8Ek%o}90K3y0BN(MeIJ^k^=p7RzjW{H-Q*4~>qaAUn-GALq8m(^}H zwfX9NS=XOyYza%9r496yG(zkBe6(B<`CyXLDC3u8fi@pE3HO7hYt-qJK?U7`IBpfr zW-_(UYfT-}gabSIdRs|2(#9T;dhVDyReG==7p^T1DJu`WqyEK)x_{l-!G7K;-Cwx> zrtPguKK?k|rwaxlGNAH%RfW1O9s2eS30)*OWUsMJ;Z4|R9Aqbc@iWj7_jCJ!88dy2 z9@im4*P-UrS#y}Db;rVN_JQVu4`>ukMn!zt^135T?cOF|*8OhW(qc|n+rZG~!L2?OC`f7j4+o0=d8MF_od7z5<>o6!S@p^*?g5RvH74L>wImGB3;<+Q8U#Vh0W^Rsjt)?l zU{QH=YM*HEX|$@-rWpO=G{FZ^^IXq8U7hTn9_g{J`>x;8yz1?@f7`9MSaMCc6`_>M zw5MAa3{g4>cvT&-4QWHu@;Y-g*ky@XySVH74(RRuQ^Ts&i=(31tVkSmSlb_^M6FVR zZ2_AhRin}?LPG{0bZAv-O{|SKnxuh8H)W062N?>`t8sSO zmG?GnIzT?I@g>XZjy9)!311F3$=YOTvbI+ls#0<#P&%%V6+tafLJSCE-&S_=k-JDb zv?S(GxlI!iH5$wD!-=e2nZ?i@8fTq+TQ`cE`~34O**e%s%s1*YR0mVlstb^;$K+mI{ z3HIGy>5pBveQ$Ge{_fpRck8X@e1g{t!IawcVYjw)&-^~I7~4N%XkJ!tidJ`9;+Aec z+$TW~owscJ>Cpf&onqjSYt}W-IeWcVbhy;jo3B{T-aMgx`QjSdsi~eiEqwgn>?WQw z)aW_hmZ*8}f4Orys5ah=jhvYXG#1#PHI^SR;>wm*IC0lxM(p^lv5uEkW4EyqgJk=| zWaht)K|DV+^yCzCt|+=(+Cs*3lMAF#mCYiwE+6rzrrD=#oT@ZiRQ>yPOIP>m%;roz z1@SJtBdBSsgu1t z`g<;Zc^{N35POvEM;%jS?{scoOYuw-J@k};yk^Szr)5VM#>_ksK`Qu%%1&6 z{0Mw;f9LK_oyph?$wC3nx4PXdn!PKNV&`>8Z)AtAXgZkPDGLcS4Dt$%O6#{-b3v^p zn9_m%Er=*erPuo`t@)r_whkxzTy@%XZ&vSgYIq%_YaPvvVtpo4FC?>08{sC8KFUJr zX&{nhq+yJ?*Lte48fSo*w1E%Fd1A+O7RUl$kvV-*cM(?Hz7Km=`%rn+IUiYrpF-zxD9rvSVmeuN# zx`45$^N5cP42(Xvd-t!pb!Jnk@M%&R|IAvte_TwmT?OgY+|5@Uk~m_o!e{@C4iQNo z@pYJM%mwZT{kQe9^xv~5pLueYJc?6CpRm21=Zq)*^0Ye0P=$}Z{b2u!>yD0SBKqQc zSFjdNmpm|P2(N9tQJTTyUVh`k$K38m;p2Wgj7$>8qhhFP$9;O7&tQGWT@}K8st9Q; zs#=E5vSheKF=@gBLY6jr)jWhV(gP*m5_n95PhlRDB%@F@*}97qLSwQxkP=__l~oeU zbwSg!CB}40S1lg7$Cx&MDLl&#D~#r@J9ob(cG~96o7azC{?(RGu zf}R;+Q$vhBSFBH^el7k7J>K_8qc*Hd}+{a)!0-S=F#xq1Ho;YXMWkMzFXt2LQhV=yOk*NJ-eOb@#`WsCT9 zaOu$o!u?xc{OPG9Y}$Zm(DGB~hUQ-M>pi1a6}|oXh{hALW4+Dk6a}x3TVowPOlPr+ zJ^Y%9srU_wYuOB1&^M+1A!<`{?bah3WN^gq$D)dfhA$|VN}?rMXs!{7WjQYM#N+Ki z6q$Va2q7oTL?$oc($X8TfWPwOmL3VVwG(->t&ZshU$ba{TVQwoH`z41qbNOEV0RIr zU=Ta!4{e?{?Gkp{)Q^Uw<3Ih>--Sg~Dmgtap|9?cf}w3~qcaqp?Fc$&>%V_Ql3gP$ zbz$7ApxG5QJ9X02d-l{Ic)u`3QV#M5j=mPcot!D%!rsR?rs<#q8>#oHUACfb8$v)! zAm{#TgTB_%VrgX8wVsFrn8r0CWjZYwvLO(si!!5;#F@@Qbe=R-iOYMhiW17)RS zS#DqnOR$!KBVIBx4h|Nrd2`1A$Txc=1J?VI;%c<2U@WAbu8%dujTW!R%HsbJ_56%g zDfiAEOSQ5O!b%Tz>tNO^x2{d1@l6)(ys0AtYO?fl{`QMDHZIz|8-c^;BeE>aw>zWj z(z?WwI!mOw1Kn#8y~*5*j!EdNweih6k9MuN=2%F_=%QP8{jkp0)9q<;_YQCe4M=;y z&p~j}YukD{EUx~keNI6Q50 zIicjl-IH%>rE}Z+27Xn_{p!bq`y}tlBuzzQYvvdIwzia;I@{>*{y>l%R|M9cHcxFe z2@7{_2>*3T!%xpAd5|-1JGReKqaIL4q(^%2P>m(q-K?(bmSTooRghlH|M;Q<5)0pc zn_|3Qz$4@Z(12TIXj)unjRcAo01aF&6q+{0Q|p~Nqt{V8e}-SMSe12$>>7A}wPmbl4kjgGzX#=Yw4gX^m4V2I8DXllVuEoR)+}irie5h(VC3tH^XRzBGMQxQ&}gZ zUa53o`8K?dq|?fMvZ=>Oh7`)bjY^XJhNy#DQV-rli(LYXNRPf}D@=`}YOEdUvRyLG z6fsUWN10;~TL})EKJ2m2Nnn!Dw7_h%ih8T+#=*ex>p8tqSbC^b^`E0@%}eS`aHmC4 znP+Re+4a4Tc<={|HfQ_tyF{u1SUEuK;`!d6b|}vYjrmEn;QtZ_9zTpifBH#>wBFw-qjacYd-x@Yh|)8l zV2`?$YrvS{-3Q%tbX@CkiJ?uqmUk}MHY=bFn<7h2UH5^s$yLJhfIgS;JP-A0HLW{V zkEH?Nc}teoZZjsmP3VQ+i(8t^jh0qCJ9S`Y{+iDM*|S&qk=qj>ne@r1CaEQmqW58V znkcjLrQjl#A-W1KOjtCwFnJ7ycod_h&*Dmpx!`M;VfcODhkf~ z&hH$5@S7bNmUfBNcjxW3nxZ-$XQL7yO=dSAvO3%zT6yqRW*smV*X}w%uxoc*zp$s* z(dNt=Ly$!D0=VwCB-2hQ`frizIs6EIbXWH)RDLF-Oh@YndOn*sI4wHF9KFI|cARgF zF0Qr&mKn|QDR?x^-6{wZN+nX{)#1!A|kCA6Dz~4NaF! zwHps_(qs8ZU{{LIBLnA-TgBO|vB zn9`e;D@-QU;L?;^JeKuI_u+LkdtAy~)TuL?nj-*$+_i%Kb>`3Al4&O(=$+j6FFBxj z<}0uGsC=c|i_@I1Sp^_yLEIAY+vag@={r3qAGz}nY;DG#hJ{5O$Q&?fbxg0 zUB063Fk`E?-kWm%Ibvx52Gok{oInow1wSCCS}o3gH54LCdpe}DO?B-yoO;6Zajof$ zSB91{j03D0nY41%Ijkh?-2wmCWvgmnKzfcnEw$+Ak{1d%zUofs)3VwDOFV9AH`jzd z?AHZ5lW?C9i+RgunpXU za=TE*b0+EsI?MQH8L=ibXyT>EA;(wBQ_ajb>%i7Pv;Xb_Tg*O}ln>1|RO>snj$sy+ zUdHQE_Csj_4YdG!YAY8WU2l!NcB8$Ke^ZjkP!|I4qy$?hC$%)}f{ zwh<@W8ufRWT&K;RZJ2bjx8h_s`PyCY$E=Nr=t*{2%SpJ{jfm<`$x)=VoZ$t8 z(2PQI7?*lJ%KJ^=td;=;5VOYoj>o$;YT7E5k{OrW+_u+sMi>0=tr=zMugt2Y(+Hj$DCy8*u1h@A5?qht*HCCnO z*;pvt-*nIc4N4OZIi_RV^$pHeSF`=~dUKt*#nQxnglk`_PVWV}Ohb38oKst67=IXX zg@}C<=Vaq!c)(+0RSt@HthUHi=a*JF&SNdKLOkjJT>5kJrO1jIlY)IwS z_04xa{ocz)eSP$}tL7<;5F@^5OZ79}{dUgRcvSOuuJ_IB2dQofNOhn8=jG^x;V$>* zA8gzxT_e5lw|D0kxu2`Mj%w9-h5C(_LV@e& z&Cq+h9A;;abku)Tj7}QwTB`DhP4|sKKqVct(#mhI?02(CW@Da=9j0A!QkZ~t?h~S* zyXnM>-sJp&r>Jt{s9Bqkm?3jsE~@tKo=d?D0kKS{-8V?h7WJU;gwv5u^w+BlZ?IV5 z_I!a|)gk>p|6^p`zoLoq_7adyuR->X zX3Vohw?=P>c{r`o>{6<+C~~rNHx^cab9DbdYu^DNXIXW<&pZ8{-h1!8&+N?3_P(3m zN#FF|6M6_qAfX6I6%nKtDS`+BilT@#D}MZnekdvmh@biimQQzH{`0)Ev%4uOqUf51 zgn;ur&%NiKd+xcklS7MVtGMmtF8y_UuX4ij@+4Z~o$5oGO8Vk9=AQa143<=eby01c zYvJCs*{MmUj}jRddTf2RpnZU0xmPhhE@D`-jIbnH;(m0jSp3J0dQD3TozEx0YBYvL zv~aa+NV^&aU}vB}q@nM;MrlX~HYj&Tk7ufJKh-pwIFzQ4`ozPb_;eyyg-=#d{9|f^ ze1`5hIQ~9-zV~t;tB~(=+q=m9-Exhl7{!NeOGuP|?boo{SKHC|z$bXj zicWme%^I&%YN#oAu7W=v`sehR{!>7Uxn*eRrXh3DQdN6g+)vsKQMN-K*7Ooj`l%{QIh z^gIB%=y`f$#4AJKO{(#5Q5U)J6IPmot~8*O(skk@`qqs047V1nt>1L{5ukr16JU(7X3x&=j42i znG$Ro@cVLT=kR}h>etYo4;@Tt&Ykcckf)IEy!YP0m+nAtOxbSpyuakRn%NQ%~*9--S&BpqqF3aFjGFVmCS zKMIe3|Kw=Gq+Jvq@$;69)c<{oV8B&Fe|$o{*i`sUk`BjSd+m{Su#d$UBd0P1^{cQ# zyrnHgc2_@WDS!Id(&Xlv9Hpn0W-e*fw<4>G&kgFlj*8l^Y5gV>tpE7^-rikcVQwQg zb8DSYJg=sSGn_B%-M2AP_OIJ_;K*vSY1Jz36RT%oJ&m$k6^`h*HhuT{D^`MaIQzCS zaveVP4Q4x!Ai`4mL1wE+R22&AKXJ{R7nFzQj5uDD&fY&ar+{Kq-g7oWEPo+4ZKRvaEc>fUZaPw)3Wg6;FDs(X8i!XNZBQn~ApzT90k7_W_%zuh1WnTW# zkBn6C8yFb4tgQ{1@)~Y??8iSQL`Zu0<<&d-sEw2fGIQQSQLG0@*;p!hg}T;Y5 zsDGB$ACnpjJ}*;oX_TB_c5Lp8De-S@L^Mqhf^h z@xAAqBkt;YrMp|+)8nqm_*pL{X1zQxQt%6{b~uyz6g_fzz`S=%Y?Pg`S$}`PltMcx zRqoN(Iz&37v{KTDiWBZWJ0WOkn_b}!)W~&Nvi+H7p5gX# zPcp}Urji;W^pS^EKKCPxa{0A!)+!Ai9$x9xB(+{$`i9ksg)^KmN)=h#`@H0NW&c?b zv7XwdzE=BX*81<<4ogcOk>DGGsbP342!<3i{T;X;bTjK(ei*qiGk6O&dOeP*!Ed(w zathT^5Y68V3cdNG|L4#8!=WxJNI#*drAcLq4}t*YWNB5?un1tzkJcRT%?)0UVn+O% zO)PQZqgGkMqfg&Nvzf~2il9aW5(rwD6uE-ibJpMfRwMJd2e0Vpm{l>(ZiN$Xaj^d8 z_rCW)wNY3h;zM!%9ipt=cZNI5pM+1IEYBJMFWP@Im_b<;WVsk@!pR-L9(6lkP zqwdlcBUnRWM>psBci#6eD->up&&I+FVTm`xg^Dnp03%5#E4Z zBr$W^@I$|zr@J5LzF^{qksA)*Lz&EdzPYpA@E{k&Hl;db7G+f9RNNO-xm7U;BHq>o z7rM=!rMK6(eOH+}W-weg|L!ZftI2zP+|}Ld=*pjS+S)cY zt(5WO-B3oY{$tYBRnfQV3bhBS(S5COVe$`k#`~0Z(3qB41q=^LZLGH)ItCrDArU(f zH{K+vu15eS4%fK%Dt7}+%z~i#MAD_8qHMp{SwW3lVS3E@nPn{8Hc3^9&eyM8xX@E@ zd`9~~xxB7Yd7)HFbGJKTz8XenARKND`)XP|Yq=*VP+;=cU^JG0rKWrN3}Suqx_?~# ze+kuptWi*`i0pulFl{eb-tnPifPf3Hkk$k=V@yXAl$uEcPb}b7oa?Y%kG{UkCU!tl z*~DZAg}%bZOUxJfB{4ie#6~W<8x+TgB5Vp@G|Tx3fKhG|Xj9nYKL;RQB|q)pKGj}2 z|NIrD(s`xQjenqjV8JXnwV6HQ@S+(a6WcrDInc@KL|z}<0mKAUzt9^J*-;;O1FHE6 zT||+RhwtuIn8ke})3$>L>&M@E>+3*~y4D0`LvvE~FG;fVk@hUPww-&k?Xzg9ojpyd zOGRG%h*CpT(Z>A#%EgNX#cem=eDl4f(%N$QxneQL-D>S#*=a;eLz5k?-l3MV9v?=) zd*Vv3d#y#6Ry#Bq<{g#24@`Fd)1@0f%A0Nqc8$E}{h zzP^!S@kLf1lNn{Os1$QGSX8=fRCVWdN^kztpZ>&spU#n}$dOWKrX$^6kR1~o+xYh# zB_9zyTz`^y+8(H+$hkFa_o1c248Xl->~Gv%eZCEAKa+0o2^POZKHYlqgD+9*$-oS| z(%SDi*?Mv$n_ZGlC*FuWah(5yS;XcPXPw{}SyU%9uyX<>!zb}*=I~pkk#bWNu+fD1 z2EMhez+_|_+Ija)qCV{egIDG!BPa7BMRq5%*mN~Z6J^o7T5N1|^|uLjj9>i=@(3qn zM(U666=>__A?7Ee8iS!HBTz|9F^^cwojU|WvYBG*5pp4S0lb5sjSLPlZ}jY3wygYO zYbVI$&vQ39Ky)y?%v2?4)4FF^%=TIJ?|r*Lz!=2YaNPVVEd`@gXvS)G11eddl1pLJ#j)CAIpR%Vo)qL zVoqc7gPQutroM~Nz1+vKy5c3$#y#gEJGs|q{Ho2A2*^5QzBuDu=X* ztWBjyH-L09WXDAV9_AY(!8Mx;tXrMgxV&pPym4m<-{-fFb&W)J9vP6i)x8I|kfq&Z zZTrG@vJtfQQHyWhET_{od;aI7Hajb@n^Z$ zcPKDqD6XC%Q0v6~3zHgha71Mm+2MGrQA>!-Y-I)dNI>EZ`^2H7jw{oxg!Jn$T|KZE zZVcb-XYQ+o#@45#Hf3_%vff%?Y+FfUQRKEPZ|ex`zGOsflJ{S@m9u301KPZ%kNY;G z6w8frSs<=yb&muT@NW*1xkMxwJ3KdOB7r8w)Y_C8Nn$mXx#akdo6;N^0abnJSXrZS}M!)G$$22GhIE(axks;bs-VV%}mO za@rju>)4=zC|HR*ffv4L)iSE<%HX zzv@A1NdQQR;;#WY1boH#pE)r6zQ}cyQbt|ed@!I(RKhmF{_)F*Zd4i=*uPAGsl)}F zJ6z*KI*&M%ipn6vVWeiOTxd*$r14@xlFS;o1N;(S9M}0k3SYORQww)eW ze)ICq&fwI6nX-XlsC)*wml=svh^Dt3d75)zcnZ{`GQCx6?6{Rw22UNXCjqI=gCm+&!pe!EG4yayG$L`a9+W@-5(jYF!16PrHp2Ui-mKbSOD!*{)4YV z%0u56#TaxnD2TAsAS5@TrF5LO$!Typ@#&Z+9>+g^LL>-_Cz=Q7qr_y8kUwO45_pvp zE4%*w>k?tjGxfFrE`8!OujZ|+vqO_tw~;%hy`KK&Vc_+&cLetw9~PSweHU&W|8M4d zvU-MmYG{c2+PqTH@~SlC{oUFtaS1vDm*BdS_P0id{ZskFCq4 zgs*sz^fNNSstaZ(P0S&Ms}-xWbn-SVV_;rR#uJGgY0v&9Z!@=999SZHWZDVsvw2%n z6DM@Q8tu;DLCKWSGWU&5ZQK4I_XBu_{tipawYi*BCFtn0>2hfjmw8wQ$K#5bw83uF z>@rpq(`ywrnOG_k2}i72d2rrLr`9$!8)-R;2lshFCx3uG99_c&zZV+wWsrRCgy55U zPVq-5!Xbh$ro;~YFTbfR%yTtm9ve2FB+WmRfutye0?B_VQl9qRHDhU6aQ^ratm(X+ zTS+b%g_{j*n0$8A;v7-Pyd7CNY{QfqDR*!N8=rN-DuGHZJ!5ZQ;C52uzRuA9IfriG zSxokG-|Ar=%=kC#DT_^PY3G{GOkm^Q6233)TGyTr@4cuS)MDqMot!o6=~Cy_?cA#v z7uK7k-jJs1==ULJG9l8(NCYbn&Q2Q1NJ$%HTV(+f>zG}unWeL4Ym`##N>Tj{l8pZ=x}6}Tf@4$>zqnD!|Dms2-V z*;`3>n<}HKkUMLkwVN|g9i=v`>~9aO-C35H75S|zYe;FA;!(1AlywcmiR(;Kut+lg z8M0-_nPro;_N>xsl?&uSH74K^(tLM!PEzf%kq&?5n!E0v!N^22?z-)=`n`-oWH8IZ zNnIWhRd0Z8YK@2mdoCGtGv7_d5^*TSa=*!$t=%@8t(RQnbQBY6xt&#pQafzkGQM{r zv8DG|!yQSr!UH}!&pp_Y>#DTpx`~+kn?I;0<1u;rny(a z=*7OY)gA7(5LPLP8EmWro0?=|2{*#EQl9tE>YU$(0aVTy%fQWhx{~YwM zN^KVPpu|;ObKO>fQMT@~Gx9d>w|pwZPWubVTby+|3@WztE!?bkwO&7I^b zr@J-9C&XxOpWV|MR|AeHf|)Zdk*<^)sZJ3pJt*^H$FJC(Fj<40Mj}&+BU(Fak+CX? z7%?;krO{&(F_b1jXG?T)o5*~=A9u;=)8Ic&e>C3G_=&DvLmWs!4?R-BR224$Lt*@- zsVLk;ofO2J?%4@Xes)K>ul6$!!C_@f7SAocX;nupux4jjis!a%MJJxy@llCUK5*fd z@xL;^tlKYTa`kVAnX5?w{ibN*$_vYnV zy%=QzwIl9r7H#IM${TSyk0!KmFLfb=lQqe(O4o)@|oY0vcsMV zsc;l>Ph`yQsig4YC{EdBiT7qHtW-uTpD%N-mcH}5C!ZpBCVI0zIXbLTt3OvTNXo5B zIef?%g;PNTuuz)K9kZG{t#)hILb1sr5vaw^n91X7(=)6}9MxImHmOuD5s7e`$q!xz zq-knoPJ}e`07Spt}IpnvU9rr(dh6wtH6;Iuw8Q@ep224CK-k^SD>{7yKa8YQ~c8SO!BCTolvb2(o@%DqaimbqD>Qfv~1drqcm&rfA?K z)$8wHMCRRfeGS%OQUPiOHk{IzeRD$C{Ye63lo2zl4$VoJ$?xfUGUofpa7i9@wwj$Y zT~^mDa=F7*N@%d+5gBf$-CIHFM!(M-utdAl8l{JZ!AH1z-)Ucl9rhcz9~f22NEo0q zS21CZJqIBT+rgUj5^@(U8i-sb@g%LjK#z%n6mi^O!}FEO0YLY)871L-|GP@dsc!F?ng4>vyeVn2#roMxf_C%3LQ{d^} z>Pbls&#l;iC&DUU>vayLo;+7%G|A5UtS@%(=7*MI?bWh}Z@nl(W``Y}Ree-f>A1QU z#8FBpR$2b{%I^yYg8Q!c^c*1!)aQQk_!drbI!yX{+1077XgatbV$2Dwk}s_8^bC4b z8kLU>5eb6=0=ufM?Ki2f{Z5wzJCw@LgcBpJVVT0OQY1SU6h4z+tqx^I>2#3yah^#H zo}ns~-i<0E!B-KX%w9{BrZtr1p(6LBsWh(^hY_h+!Upn#OiwHvi=;^;^>zS5OE!mX zbQK$v3soXV#HbH;=-|>OM=fDwq0wa<(Xs@v@;O281kj{9qp1>b0WWjkkByF}lz?TN z2#tdOv^Ky)q?`<`IB23XK`J=m@iwKQKAB>f0-3_6nw8&CT7DBaFkEyW6R*Fz5X{SS z{mlJs;dPtR$a~3+tN5cUVrgS;^YUs(VAnCgOnKj-&D_~TLnJ(+vzixlfDrXm;{ebSI5Acylez=y4)2IptpYUZW02Pl(!BPaL?Rx`a)*m|WSDcZ zzad4ZBNqdl1W%IKYIB$HJ>q2`wZjtW1f0a-1d7*lKl~&2Ik?GTA2Tn9hMU~1Ja;XV zwHwQ3m$`a|3}lK_BC_}m246+P$dJhN1|%}9DFK&4CqKRd9NC;}no4AJI+jk4eH`+j z&z^cTPYQ)BHXbH@rqg`#ef&v5)=BF^8VMU*Gob3pSan(v|Ifh6B;ED9jJIEx z)%8Kr9$t&XvnZ1rR<^eXQ6m7f6t=GF28(jpC=PGn$kzG;Gb3ltrxRu~cQ}{?aDR0e zW*u^sTyE2%Lyvvl*gK_@vTAYtb;`zJ3G?%z0e!ik9$CF+wlNmh2^B%L*wxo9tIk<6 zrz)MfIItcJnocWrcol8dcDq3j3^NO@@zsd1Cg$6TSRCmwpME=Pvvycq)^2jvwBz2= zfS7#su*DkdMMduc=hAwvs_VQ02H8c4ovKpFBpEy-D_78=TeS~FtyI2f?aI3{ecA6q z-$JW>C0q@xnpB+3mWALiBC-bcCQqw|VbzkP-iU%w!XnlJi~4{~pA>YRQV5Qs!f$v< z?S_Krdgwz=d7~fpB9O_r45Z4(SvsUZOB1jJJi-C3I@v>#&~e=+c^9Pj=d>sPShHBT zm_FR4Jkj}X%34Hqm?sZn)BteRqDXIC)mICw-$hTph+?5Lw3nVd+kbRh{ZEneZ+mKk z+#=re^qogjW6ZtvB@((lnK*}sxvvcBTZ~3Qrg)w)T(s+(5;WH z5@__26_4C_zz<_qG2LD#aRyXfu708OhoatNip+w#9=HL+{QB5 z;dB(De6bivY_NIC6R$hH-4ba}sPMXJv3PHGxZsxHYO%rE;>v@S{_=a@y?SSQ$JPW) zwM3z1OC#F_YIm0z!f@L@feY(pA_^Jyv#`F>?BXME`~)$F?WbCUCy%N~Es5y0c=}?g zSV&Jj@xhab%BMd4*@(z=sCqvT>=gh?SgZO`$+?p<=TyuUG&3!K0}!|Qram?wA#P8* z2ck)eAUu)HC*0={<$VNC~B$dn3CbhX8m4PzB6ika9NORx$| z>|$AO=1KrwMkX{k)D~Mv!AKQipIRd`iX}3!&|Wyd;(Eb`35`Zm4aVcrp9yrCF^|Qy zFeb7E`l}R|$(4~pZC_X&OXw2%RQy~~(pJjo;Ub_)WDJ1JG(SHzc@wA>hYogECKO^D zv996}2nFbWPre5qCOZqJv4N98zeJ;ckdOIvNCPnd<_eU?rRu}UMoUuz@(*(NaCJS!{gz$=$7p{NUze{*Z0;UTMksQv!=9neFxtEr6UwPAK9ktgZy2G4_&J+ zxrj{c$Tn6Zi|ZSiE%jB*TlG2iULa)*t&yh(27cXdsBT*#((9!2*B5nxjI&jhSC+UJ z7^O(2XC>~Ss$%c*7>wX@djZ8(oIeY({?%9r$IczgGB2ioKmu+{(yxGnwcH(CX>(;m zN{~dX8z&yFMpZZ})|25D7$j{qCCi&+D==e#(zLXzmb*0b~QnHUb%-mn_9tf$c!>A>;qxpc@wc9$xNYT`%Sdho^HlQ2)?utI6# zOTS8Nc55o2WbHD!E44$7%14| zY1PBnoT6Y8vaAf80gzS+23=p8NU~EOyB{P8;6*hlcFa)GVQC*uW_t^%w}{Z3HKs1#LV{RFb5XIjer0 zr~y0f=(mr|j|nt7aobk1wH1_2NoJQ9x30L(wS0RCQME$ia-a(caJ70Juy!ulm%DW;NQ=M+ulO^fUbugo%Ic{+nV@hle6E!bEluTzwhC*{oB zIjdtBy}=o1Q#taqhGCU~#3nmm!+@akr*>E)oeBO30|o9UIT0?wV|0#=L5ISZvH3#1 z7El6mQPNT&#Mg0set-$z+fW?r!S{;z!X3?dOOe&(s$xK~F}S&Czp7_nw+c8qtkgwn@AYs*<8ooptPxLKqHClJMk>&XWRVxFu(y%ji7 zD%_h9tjxUwVww^w$n45+YOBpxNopxk7S8Up(gwQ1OB?9i%4e>;l00=U@mQ=qcAKql zHSPGIEayq*ih;I#B04MP=8-^f|8=z?s|jqqHB1B%>$$efB*-CC+j*?Y!lIvH(Z_QLX^q#a3g+R2cd#yktUGw4-*QI~MeM687`$OI&VG}PArP-14DZ#z4j?g@d zGZR#>HW_mNJaeEG7~R3Lo>aG0U(}o!H(f>jP zgGS-A8HpqA(g`6c6`2D$--ROo?q&lR(DMq!qDl>TMrD!IvC#Q}V zQusyy{6p5)r^{=5$&GE{4d~KZ6v<7i``d%-c9j|oOszez``9oIfPid26YL%T*g4F> z`e9-l9)7jUzM(@5kG}R5;<&An*CsXjR`No(Wvoi4DJqMFF;`C;29~Qm^((1T$-sgK z)l^)VmgRLX^I_Bu-AmF8R*h#`Pd#M$sYkSBQis9Wsy5P$_7Kmu$QB7K#NFGr1ZS_mE8j*8pETT)NbV*%0w}%ZW z(a{1FF?qdhdLn_7Y0_W?XyG|+JmAs?cVV(RdkW9esJN+x&=FYT)9qcKIWct74&R4O zV<+Kk)ZEBZNUkb$1S#V(HFc9iy$xTMCP3$poIhkr$5F-GBsF73u}zx_t$yZuqTX*Hrna%9nSgwRN>@G{tW!f<|+7UnZV?$CL z`0;&ptb9P>4S=XDI(l4ct($Zb0oi@=fRk(<9VL!YjoCEP%E+aTOh6)+)L-tjm({(h zA`|YhcGy_A!dk7r&!p>6B{NUxx4 zBti7?@3xu@d7V{TA`4ySs24?;Oy=}&u-Q|7IlgC|p#^q-YZL{Uob_csg?6q0lV#YK z?r%dKr4;)#CYecs4xpGEc5yE_;4z4*8+Zw8NeWp0OXl&K; zpv0gRdPisaHbEMq$jU87**#H4XH!APt;a*BRl!sqoqFg)&>$`c14|cs97bdK)_>zd zOg`>rOQiW@^Jz=y@#3&4@@XjM_}WFa6XUfm|t`b?t@gZbz}A1}Kv0PpV5>8a$e8X|F&tc-*9FuvM z-@SxG!)YQb!(T6aYQ6s9a>Ge6WU5vdmdVdJH{*ou*dqf2Om0wZFm$FFmDE>7wBxSG z6+dSS6=wZjAdj&RA!S$7Yr{`7OFXUSeY$nHJeTlvs&pueGCJOMC|ht9vtHkw%E)(YQ~HqoARe>FI^9il6Fe#?qlXL#Qw zLk$Ap>EYq}EwqjHP3CC*JkncE@7NG%^Q_y!Eg2bM?710V`_33B&B5!hx`2BGCUbjA zVvDS}bL`iAgN)J!>Y8i7rPa}vCMD5lCydOu5&+qF&Dr0?Z02^W!_rC4x4DXO4G=Q= zmz%6^N}{9O@u#=jLMU;tZ(1JAbI%;ImLD(O8BhiS>Zl64--qCP7fdUSN&!+cR?n)r z=L43gSB?URbwh;-9tV|=(CX9cy=65cQ-eXH$wDL%3L6Lcd2~w}FuZY$QLv?17?O5k ze;Qp1u@z&g%-}TS1dCZ*1sU=ol&1R{7RR5?xKjupqI9vH^NK!A>%)fAfV3$CG*k%X-V5l zs+_7oZfc8e-jPT1I=y3ktu3@^FIYEuap&3r=&p`a(g$S|H*Zwsl+2P?x!Zx%p$zec zRRz}oxN2w%R)9}fcWgd%$lGSjAj(|6&=bUYXyO=YBcqorT6De1oCu&{rW0w?%I}L(L+dED z2nrDo&wwh$Q7Gr^GN}^bnET5s0Aj6>7Br9WL`8BV@Y0-nF+729Zn^KH=Uoc0r$ksM ztOumzHx1kT6_~mVd=lpW8b8E}o+y3Iv{6b|f;1H*Q(Y9{7n;X*0qp3cbnoIf`+uKt zv}tls``pnM*{~%8dM>qTtf!5(KEaiu_1V!L+5-aI$o3mYB| z|BF&sD=_{{@i^+Vif_ncG@=tWL@VVBX2(p-kD{SSFh$(ypE#_BlF4amC5v75435@@ zhZ|dFa~C2At~lD{Y76CAQ8%;xEVnY7HOc1B*RnE1az^P@3h4f@k zWPqfL3iM7FpXc$_^;v-Cmw_m}rsW2}^T$8>y`ZepDV_*;ty6HDkKrc)bt-5$;n(1I zkRaWm2=&tP)_v~HFcwy&;q zglIfB%lnS(s4x8UpI_@ms_!WX)RIsatLOgOr-??fJ6jU)v*epZ!M*?cK8?}XUlypO z_FMpCAly5>s%V5p0>6*tj=lAk@Yla4pZUN46O4~@T7(FxP9}ExlTN+J*sW=SmbbHB~pWpmoP$wmiwMDXvRf0L^L+h_uYpe41{9%_rL6;4pWxksy2 z?zjyJU%;0i?hT(HjXvxyZ4fyGcY_8@{W2}UnbANKfnlSwZzIpRQ+3aBU z-rPWrbjoM~0CMx_44#4-Jd8M`(;$feNdAb2SBrVPF zZg~WoZl9gHDKyyAuYakWqdd+ef}bqUCjcIAw9i96!pDuNC@~GQo#tvZ_0^(0%KZj! zL%kRLk2h2QnRL^(jB0QfK??ufemV(($)I*}cP+GfBd>;8zpSSg+_0P1;BFtQ(YER^ zG`PLcqlTY~KdceB^<*-?j9W}K6D37=I&GOS4K@m2bhFi!N0Su| z9$$R3Ioy^|DV=D$XYb;2-%%M)ZZck7=8 zXOABv_xDCF{oH13f0u54=z?blycKzAV5m*)bSW8yS0%I*(z42|nN?|Rz(tOtzbjNK z6+W{WD|V$4Z+l9n(TWfR=6CB-1`sx;7-uP(vnu!;lRJFt_7>$X{hM-YOI zzBX1s`@oV|f>;ffl3oIFXNGmb!q=xuA9uB;RWgrUTk6AfiA`THI!(m|bc~J?_yL2@ znMIkbg8ak6+CgAI^g{|^PuP5 zwLIGL^_CY}UcrT%Hu|{|v=6@vJ`q{@f3H7qEa|d2V3S~2GSytim zpjCkdTsB#xkPBfSq5QS@(YwB|iZzN?KY8EfS@JoRBAWl?m%qCOiFN%8pT9EBeTJ;y z_Kx+HA3jHHVfWobzT{?oQKQcg3zlroq?eUi#4=}0z30M5$P0dt&z<;N{OekSzGT8m zZIZBCVm<{OOK=89toBTx!EA?TnSF(j0$pvHD}IB_hgOhCU~p=zwkYHTO0gfCsZA0I zdOw2e3w;rV+$)tj(w+pA!%!ZY6pTRYvtH%P`wc?YrxaPE?a_XLvob61kYdlb$P({K z$}@Xa9UH?CyLgrZf@eSYJod>H|KAAnm3sF<@-){=p5eM)7o0PGF}b_1 zQ^-!;aJe!YZ-i&6Gq_;q# z>U&=Aks3_m$~V{f+S4jD8+4VC$iQEoe_oIex`XcMUn0-xEc&d$Zpe|O)e`e4WL7Eb z@XxV;1y#y%EnMNbra&2a5u--l)HP^sfW9!gv<6pF2@VCl4XqKq4LS$`D3k`HeLDGQ z!#bQUgg9rCzkTMFMq9Y12}K$H zX8I5O`<#csJc+FVwCR;OQCQRn?Y~Idd$3u)o7|6b3feM@BC&o&PaB4*(MO!rmQfJY zcX-SAkEsmhJ2ibs-pPi^je~}$4$kgxbSrh*)(EnSGlSCOuD-q}`cwu(7u^qQiMlbx zP``#mxgSWW2)~CCBG6HILh71l&`sIRF5u*Smkhd0oie+fUOSH_KoZ=4F+Yrjqajqy z*`I{0#>(bYA zzp_wQU(Cf&+Dt+mb>RC~Z8kBCo7_}xioEh@G#4djQ?U`Qhrz8exKc_&bBqoFMJk5w z`|2b9`Ln&)dMb>qiyzMMm*s8<4o6ODe>51dnXo9>hRZ^UlTQIVKYZe4`InwC&X0x* z`uEUD4gPRXyb^pq;vq9FuThWVzcf`CGgG-oKq1R1eGns(Ub7GK)YRJsE!ue7zfIXo zYFK-bn+w6Uo3nV&sf{ZeZ<|ir(6=4jgYiVX?W0@Ae!%>+`10OsslaP^($TdsmF<2#HyvTf*#ufZCag+q=a(O?u+}K7clDj z|N8pmZYKIE!#;5b7`du@^K1td zp#{z^L8gcyDpAOU`8Ss444;1n^K}(R*wv&4?Pp~-+;Q>ES z5L~+hgZ*GoSAs#^dnwPR9oatq8u=Or6D*?V{)fAJU|=1!m45$y@~K{Zp-9a{vS}5u z_p0>zt}FtFzsjHp(5rbjK&R1e8#K?%!7xc)g`*JdOaDmlr zUBG-N5(!5$B$D|>*lDVnz1DWJ+hwD4j2+M#BdUzyI^( z5}5xjiKov#R6{SUa_+7UHkuAgqiir1R(P|f-jRUR4%VZ~(aayba_kInF5l{XD`UxF z8*rN34docBW2+*wWlet#TA5a!nOoD<89DQc5z4w>yt^)?`zWOb^h`qPPT#0k4Jxe% z*l^!vgDxi4rz>w;DpaZ^^Tsmj4(ow6a+_r1+4iRkYPU^Nme`zRgC(`bZ?bmwB)AIM zQ2Rk%p~GOjOD#9C}=QZ}X3uy*VnVV5N@OJBf2*+^53v z7~?zZhrj;vGt6>NVR2v4zQSx9p`{dWn0hMN{0Pg&#i!RZasHrsI%7?(-pO0?vpj0N7^az>_1)9NLmpy6d7`N zYXkyqM2ht0HT|u@jk`;bSmn2`>8eG}zI+&CFTEGpz zG-!~U(#LWya3%5*e55Y_W#VIZSiH3irL7d9oZX%aVM0Nv&b0f;RW>V127OMe*T%IL z>@&(oJYi?zgV=L!i?L|58(T@mZg87XU&_Qf%b4910Pkv-N%W2}t2+VH1Q#nY`;N-| za#}e>{u?j;)I)2M zzDLZPXg)5t(HBcTeN5bDz#V#XJ}ZS?DN&4hl4s)A{4@U6bzC2U0%SVi(gF1B?K zm`_=D=cZadyk&nY^p4Ozc9la1E*}=@+5U@n*5#=CW$2Q?B&gNe?&Rl6x-hr^l;|eE zauhbL@cDAragP_Ho3>_PD-Ii!7X-%fcgcr*6PH-#K>)*_KvJ;N4j3{VeszRfpc_M|bLj|QqW z@(D_0i^Y(EYHju;n&S#_P^XhwBy`l5^TnZ$QDzK@wt&uSlgS{kvO3A z+bzF>ymi{AJw;5@&;JAp5EQ`)lN0~uGj0kV(a+}vHo*zJPaAP&#E~580Ne^#Px*i) zPI070C+s9gYKA&eqdkr`y_wQOWoA|Vwr4Amv*(G;ve|na=-k~!X3J%s@Y&aXdZs`n z9=Y*~-QG6_2f1@-(NDiFr`KyK*~fjS_YYZX0TW4ia#K0D22-zQd1}LozDi&X_zB8Z zE+4Fh_g~yEG03|Q@2HCfkWMw&%7P0P4k`@4jZz1P!*db_;&pUfcFDO(N8;>DFXtX@ z)q15>nP=JKkAKdw_~Nnl%Z`=AazXCABkhaMU)pU=m=re0ff+y=;{I*si~PIDad!M5 z)-O0LI5K`dxoLad*g}>rk%0dguF;@;?{HbH!s~Gx|(<~ulxLC+|sH^ zXv*Zibad;koW#IpcW$g^0_%}^bZlYA>i%NvoR5Jbm-QasUw42am+7SvcSu#lpsZTs zCcO;VdwkGA_L~a__HPQBf*TJUAn%@kfn`{ZUTn5hqd!WtYEy6s@CIz8+pUf-A zY967^t~S}ia-OG98>z07l?b^+T57bI*^(TibcjwKq@I^18gW5re2S+*86O81@!6KA zTE5lt!$x&#&)0ICN{__XKz26%^bgJRHTy)Uw`DT zQtB|=Fi;3Dy5|$;akG+oza%a7lD{OaX?aGTd^zjtsp|5&N;g+)Cd-Q`3$_G4qTlbS zCoKh43eoJgTx2r@#kg2I)|U&R%?DcX&noU--&+WudHE2QG4&nWT|WzcG)kLVk*(P} zQtLBR6&NS)N;Hy>f9=d3*Di!kjY?#+O1tz~lfghdkBBvrp(R-pqeR&(Rf~lXD)ed- z27}RiKYW4*7G+Ggbml(s*b1RaEm{8AD;N3KA2`^7`l;iBbGC%JD|p>0C0Z~!+y$wc zn+ysSqA|oy(+3t8MCG`9%1}CO@m8WLL?A^d8*})|VMv&qaYTbbiCWDeBxKxet9Qg=O`xIzXJ-$LSlkqC zV@Sjq|3C`KDU!3vt#jIAN{o%lgg#_vlT?gZVc}t#yOk)(b!Iyiq$(w0l@#0Zgd&kZ zNPiBZH;Z3qcI32_qX~m%v`B^M_*`x19P778AokF=FEqN#=^*AG7jd^)8Sb?aOMrNo)2)u`y5KBL=O?r-_Ri3sjr zD&J4NqRo6waY2JOpoRQocK{p3AgaMnOtdfgG){++8^2S2vd-uIe$1!+nQ48335U9u z`+i3~2-4JppcvV(9Tc!4y>)G8nGSyej2CyV>8gYf@?f~sgZ7S;UL`FZA693axJp{$ z=7-Q%9fB>0iFvKQr8gqTkAI8#K`*Q2cm9d(F^Q79t-Jf7UZNY|)>pP~pBI-`(jvVi zo|hJc*`QP}iWbE3@$=4Gl~7i(F-MXp$%?{kNU9fyOJW7{i;z3yiIbMti&mR9V{quR z0PB_*RPk1*;sc`=Cx&0)s>Hg(bFID-JOBjnYHSR`dx0cVZxk8bEs| zzQVW)xK(^5&u3Nqd80rqW4wu;e21_snv8qXYrqpP<7onD^STL2<`@iBcI%9=hrN zM;60zdj4nbyyid{7QI(L^2`dER=nb?kA0$;YsO8UK%!l$m;3&ZvK7&QC~)7x#bW8j z3ek(@X^-Q=(kyuex=MRQ@BG5tdz2$G6i>JsX0(YCm3Uwt^{{snExZNi?ls@ z)m1xu9{+=hgwPep2TYJ#V6%u!>x??=HoryA$lREJcESAo3n34^TTJ2w6UsxQ!%*m# zdQj*i#yT|?TSQ4eJY@?GXr14=XJnI}?r^KYFN1tvUb5CxL{eHlk`fIm3(gDT9Yq$AIFeN}w$dlqe zShg(w$jz58F&gp)v!R&O+cJ8cp>*vBE#Lcp_axE@rbUW)AQTDoHnr6p#C1UY*I*7p zLi2{eXx625c6~Obx23gOLlOBP1HAlI-g8vlLbpse$FUm=R~MtEUj_PxE()YR&UaGp zp>7=46uE!8_g%)JPT}e4=I+gN;$aMm_304n#OM4`1u6n^oblIR-&pm`UlIpd8(BQ7 zR`o4kODEn^V~ca`zIFR+Ff6F;s9>=`gvRbE{J_5=xXi_DhNv4%WZ84X3l84}9;By7_a zjZQ;}ta9115gJq=>|J5yg}v~s^(9tVA=<>O4W_KJw>J0$j7{imjsypHZ)(M%n_r>BBOJ@%2sP0d8{J!WzJK74Itep2`S zw72)CeSO?2=8tuGd_WxuiA^S1z^6ztPuF|p0?GLQF;`@R^L+vD-2d~Qch73MNxb&H zL!lo7E=U+=>GrA>mX#8PyU*scEuwb(^y?T67K_MH?kl}Skg}FF8Fh(#vKZa6Gl$YV zvt#36IlTSsDsD{czD>PVD8q*VsCy4@gOjIH2=+;Wep1Qa?$8_HCq4inH{6Wj5x6NF z9u5Y>U;gonFTNa2rRD^eFAa#)N`Y_YEDw|L#br)|M`2M#e1WV}By-528cu#XqIUvb zDAce8M}85(G*_@kt}_VAK9|oGemDH2&Hy^msw)tutx?LMeDn30tuc>Wing>ZFkl21 zMd7a09==*?=h}Y2wt|(TqL+YGg4tlZ>AKjf)W0WmE!ci7Ymt zaBHQiBc^secgr>0T~~aE`D}geGV+J|%gnj;i^%-wCHI{nGf2*O;EE(U6!*@W;|uua z&fw1J8U5kqA_IHu+h1#jmB~u$)xP)AHb@pQ=y6{@ym@yXk_B36mBO3%^CQ`)v`XQ# zE*lmZ`AQ3GNZ>=jN_-J*!qel?>Tm&v7#W%gv*U)N0<}~V?Kikw20@sBzF)bg-2q#V zdvg3Ak;B&|lacdnk@koTibX|sB!_~*X_C2EyThVRl?`%-M3rO?H47k@MFaDHkjrtK zIpX5Q2{zxb#h&oVu|^NwreTXWA3(c7Ds#s_h8ZkIAQb2w8jIBr#jQf(Q?qp4nglcu`uE&?e(0&qsafy z+j{`ERbK7md9S2dlV>?LMeL`N}-HG z3mtSZ`Z3$mAC#|yLZi$7d9NhffrL{2^lK_)$s^7?&Uwx`&w0-8(wLaoB&5ib2SqQD z9j6YUjil%JO%>*|a3qCrc-txH=RK#hbj>}BXc)cdj!Q?wYxW$|hRR0Uu}5x*lZNr} z*fnp)#a~7u4P?tv+1KuWkgT%n<9eq)(crK|G!|WoJO%2SH}P@e35y+*!(E0((&)4` z_`zZXQzbMVz4{?FrLK8mvuLJ=_G+nojpuS8q@ZJqhNjjq=;bst)!{He@kG&K&(AKK zIcTNna|0?zG6KOE#6H1P-UGu?1W0*!ir1M+@TdKm)fuWAz(%2`;cAo`zdISWQdmLH z!+)~JWIq5SeZO>uC`yGwX)TPYlK-PoD4NzXN%e{ZoY!ZuYR$>W>PhMejA~(KR_?lt zrkkq)!%G>|j+#+Bdb|)@k8sth&TL*iSc*|a21wuUT+`PU+k4I^%*WtqTPydGUyJeT zqw)r`rgFuxvYx@p^nP+|Z||b!ILaEJrRKM-{oiog_BD}o{#tLMeC6%mnF+Tt`_9`g z6`xLG=3iK0=8M~(trj>q$ON@`y4?^-43IqNuv<>N}?`XvKp;=!*iU@MpU0sad1Z$*g}-Jgvz8hDRz0iy*?j?C4~P(ZreFL z>{MZ5})bf-OZHVl3IHGPd$GbS3mw-vDahO3^VU^Z1&aBlA7kBNGN>f9ld)_?WGLCl{lO`$mjl{T{gc z&rSR7v{$FSKJC3}|C~HJ6pj3+$A$(oQUL_XimE4)49-DbnUK>!&%c!CLy-dAkOw_C za%#*hcmNHRr0j9^$5;IkqbQW1-BCM<6eCeDMTfglwq0mabhqAPK5_acRHc60|6an; zYM`m(s|t~oYty_Hx-3fvz^+EU!lKTtU((qY+j;sRGJm}%99~(&?5a#>Dizt)t*)dU z5k;f5HxWibti_eGyCBP89Y{uciMh?4wmX}Qjn<)5w2$x;Bzf_b&ph+&v;D;XcS06!DA_qoepb7BoB=0k_I(6K%)*T= zj_RAefLZyU{fxZ$q9f~HyCcs!kds`Yb0k+T_B*_Xt&%EiKA5d1T^@bH;0IdHy6nk- z27XKMfPm#h%td8Iys<^rP(9{q6hGX&Iq?|D*wjWPO0;er;`X4{E1NsMETE{(;2N@<>k)HF*(BsX+5I z6o=9CJvjrCR$_s;;PVvp8J*;scJkEINQ4cE5A^lUefLt&v;V_krU3&8=2{N9G zE{P|d?X8vHGd`kWWQ(`9Iap}X2+je$-KKwbP_QUQWM=V=x??_(Qp*;SBgE(W-$*)& zniOitw;bfs3B}03JL)E> z|9R@UpL`r4;lR3~P$;nGPD85Qs&a6Kyt|<*%46!7Iy2TRN6J8lK}_EJ8m*1s`WP)3 zV50JHoZAt0KJ4E2t4IWXL6^`G zcnZj5El2wMbm=#ywQV|kxjtm9AJy$K46ULwHSxPwrR3QOlCq@ifZv)j8)1m2 z7#7hHW7XoZmpSx%d1ooBMLNGI2Bn468I5g8nTGdf zmHNs#lgDRyeX&0Iq<(V9F)dq5DB-_BJmMQ!b9S+hMfaI|%z%_=-r~0uip=XcMQ81M z))P?jEYZY4x-`i2SfQ>W(O1_>`Uv_F)uU7=K2;$pB|KH-@T=NiyOB480$vaPY1Ed+ zp#3mOj^F|Xj6?jqQLIx2*-cqRsgVMuk}74EdiVOWNhfZ~YtnZ0)jzxHs*lR$haHK- zGmv;lZ~Qtr`GV)g?!8@Xbk2y}s_Gf?f1{Jr${kKfWXOpMt=u|~U2bt&$nTB(vcqLmohj8LYx_92O5WV=9P3`T!q8C&B(MPD_iND|8-cH7w8k?^-y-6$> z%1D%UL81TfyG8L0Pv6R3tKd`W3o}cXYIz|P!O)jX&V)hiGTXjwvh()+#N)>hEP8l3 zrA%AsD0CNz2FqUTD0I?~KtKBQ(X`=UW-)T78xzzQ)RdCfV(88miJLARPz4UCH2an= zO^q2|Ka#b@#2v0@kZaGzJ`8ThxpEGr+xp!55t|eFJ|W7 z(o4SIF6a$8I+NVp$Z5rm8LgRVW{gD9WDP2Eiol6QwMCiYP2ywH!egRmPcx(ALuHk~ z|GU$DU(Q+<1_sjCU8b~Yi&}>YIskKQE*8Tj{J8j<;{`{XMPqH>tqsia7`$^5I#_PZzky$AIp|Xx0On-=T4c<3>;q~hrj;1DzD9k z0W5>@Q(KIiRzvtmv3Qx-_3_7KM$kLZVGNo&`ow>hO0dO}8G+snFDGgU(xIDLX3ghw z#r%hV{IK>cRvPn-A2fNy=SW`MxLu*=GfE>z_BLOo9KWC$2QYJDtKz~Rcd$kio4@yi zrXNP43ue00-nom2Vl$E?hrmjoTXVnEnSFXM24Ib-bP-L+?nGto^r|KL%!!s9FHMI` zy5_2G&D7V`??NgC%^67BVr^l}=u@G7rAqh=q7L{$+96*Ll2OB*6jF#GNgXOM9dErQ zx(5cB_XoA;y+YS3@6GT^PJEQk`evzkfs%y8SGJYQ;%sVLSZZ)o)M(=^vMZMpUpjTq z*y5X$?d$f=n6X#aar2?fyc@e8nltB^V>F2b+39sp9}OS{5*Y6PPEO_X$#go_<>X#W zK&3UubV{4^w8uw}dlV*~Q^_pN?M+>IBLDNp^$)~P#Jd^UWet6)Es(A1OI-F>)+iJN zGyhnB;xZhMmE_5c%Al63>?&4cj69lJzc#@FjzkYRH2$(U3~?h|m&Mqk^A3oRXsM+g zaD1kOI98*8x(m%#SJnki>KB0ue^D?YT@Gr;q|1OqPB-8Hrl}ycVM@0G6&PuM0(6sL zT9DJgA9~a19!j6WbKUMu-X{E&lqya8dZ{g(Z0oHJm99ppPZ7DePyX@890ern2L_(+ z?tU8`3-2lDUMY!Nd~-`zm-y;yuicl;lJ)@|JV+9qG43pH5CcW;p&h8kmgixN@6ktn zn_Sg=|EXdl#X!{YYtA`m`EvRotL^SKon6;j4Cr%iIi@#c{+Ka^l}#N50c~HrT_yL% z*=Q~oRm4+Z^TeTA)9?pu_0roOls$XqWH&dJ`N)t%4z@;DMLf)+ z)jAYB6LG5pK4zNC?#Sp^jY89CK*#n;pFAwP2Dz#ra+PIppeL^&MZ^c2rXk%IDRWq- zGL~w7Xd-g@lz#$&I$*$q-qCN*Fcyot=}VW-GB?CA-7=x)e1l!ewpj~jwJ66AjgWU* z^5iN8za7ML)6eE{xjt5HwDeT9CoaGBT@W)_F&y6i{Sr*nXNd;u)Sf zBbW@%oHe>Irb0=|7!iL<>G~0C@!F^m#P1dkM6?NG+?2dSTu!bPJtwrI3J^t#@9rA$ z)QHw&I%&E}J#9l_X{4sUw*~EHv?K8nkWX)&cK5W$5VgL5yp81MsgJ1g>6qALeUf5x z*eeMmQPMf}3S4b1>j~fbTE}YdPq_;2)d!^@9>iwl#xV;Yv6s6pn!oLec~e>kY?D% zkhN#b%UEfSMrG}``E1O-!U^IX&nWC}JDb5t63V9VNVf%CLPM^-RG6J9W}Xo5AiDQX zw1AK8P}!~lpIK=WoQIjA)NDiM#0avARb^eG$t?}A28DM%X9s?_x~zpl^v*kfPhRTl z+wQn=^X7%N#Gnm{XiX@&$`t$sopt z@&2eu!MvqwRnU-S=Yoyt_HC8g4*8qixS({=jP`R<+!AB}0rBTeFy zDd+J-oBj*&{sIl#tW4uZBLz>k!f)qVv3vBu0iXdjL}-ua$<})5uWz~RXjFP55c^k zDM}5!z!YN$Lg}z5iK;=jiT{;AUk;8&n%jsB_o8EPM8wLG76aOvv)sFFB3 zL9DN4x5@jov7wjD2QL|q5ZdRS>L80d!IEnV6ZB8VdG&n*@(%ef)Hl^l>RjdCQfc@( z@$Y0zygNe&1TTN-Q4BaYM&H|l!?b_mtWM)_8tsIfJ zifhTw#T_<`-9ly+;9O05G_ko}jiuP45*)2&jin8&w-oNf{jxBww-O$Tw!Ko9PV*jB z^3!&Z9B6!h3WyGu)f=FxKgOM)sJDI_su5%DHkc;#Q@}8<7m}){oSA~SXfZ%C9@2Hd zFc$iAsWF-Qn%+Em1M3?wQQE9k2&5lB;a8+yrwH@c%G^Qb#UYK^)R|(`d@!d(NdFRf zrt-hcg37HU?dsCTMW_wUS)L(3C@b?D4nb*X&a#xJji*ThR-+`mM=f{x*?^x-dMlgA zMdIP{0#H|rU^SAZ;>F||a*4R9p~#!@mPJFhh^L5;Fv`k@ulMy`*lf=Vd3Bn2TdhqX zLp6&(W$c$SWMI&PMs|hZ#%x0y`E~x67`W#7odbh(WYwe<$C1@7Ee&Tfx`7?@U4o0X zO<&nQecMcj;NmPj%X&xEoTWjbk`=DY$WH3JC?ol(n7%Qr(4Nrs|u5|!WgIKh;hQqjMlGfz#Y3NCK%-jnUP%3 z5SugImb4Dfxhfys*~eM=?ydhQlVqp3m>i;3#{Vs9 zLyoBddwz#Xt5mHa zGY8m58LbQ=LsiXdAkR$wCBiWH%evXFU;QE4(D)sOsfe%i^@*3)Z#xuC2J$i$8QN#3RWv@j4qhNj#QeI^~YcXbb8fUBiL1x|M)heol+w zSE${&!wRR@sqlw2VjyKJWOa?&Ou+-f{=8n~M>d|Vk_F3tyx=++|eXH zo;Gb1v%e<%vkp589UVtix`HRYjg1XoBX9WqLxI5Aet-0%pEUP0+kBaTg+<*%VU2m) z)x0UBP%@1HrPEOes)He2R2L2r=Ouyu-m(n@CS#`1;;1|ZjZ(7@^aXj`ljnD>DAeja7B_FzZojvjbGBIq3i9x_(*l2S-cv5l1X zwoM@YYO4m#g-_;uDdwTx_1_ta5*+i?U<9a;$w2sTj}N}`60*1qEeDNW5Nrlbqa8wO z_6C)a=hbS3`1bqnzc0Q-;mvdke2ywQ=cna51Dl?4NZ!A$z&Vx0<=t)8k)#}R){?z{ z%m;V%axPWh*2)KkLdP9{B60E81#+5r{|I=cn*Ey|*+HAA;N7fKKGy*kjtg z_$?IvAF9hi(%qIG*dSWWH~^@%mZsceSuNRBpOt3A_m!qhR*S}PKdZHUK-tKD_SO6C zJUUvd_Z~s*L||F_iu$dWT>DitNI0AZg~yGIupJ%ZrOZc_`7@cH%rsc-Gh30qZ|oD) zeC2uaYUS6=-pUz$r{DV44=pV+Uf!xu>c9KQ&25BHXf;Y4s%9tQ6|S^WrIvFlIl1rr zyZ-#Fu@w!9ZLCW7y~pmrSF&1YRTvLXQO$65hy*w>C1DHC1jsO?HNOpZG@e-%0FM zj~fw}#w#h8@Jh0-R7#vhew|2sEfE}Yx(8bl2?LjCRPh`wYB`lukdKW-m(wo@4c5MZ zO*9J97oeh9`+}QH#w1uGjZvd5sn;8`*RjC>7ZsurrAz1TG+?HVCL<Zn~!q8kG)ImVz-Hg@<;`Bgz8=(w!ejz$$htK?8Fj(|M;W7+tA z3rM@hX`SHTETNQqzcpN!p{zP}N_=Iy zJ*AB0^GU&GQOTq=%qF>1TPs~d+m6pJn&%PBPa9m2wum3hR7FR>wnC;e@`vr{3+x&h zk&WvkgILEA@yYr+9&QNDbz401uNPl(Xf?5zQY+83*o=)0xDuaPwMH;XKt#c+5&g)C zhtGE_?N;74vUCf%LA(o9Y!_yzJ%N*0Wk;G|`Dl2OnbwAh+$+$Ca|A;4OAw?_IgOGF zf-9ndHw`7|n$UjeTHwu;YE=^%&GRF%e6U326!5_m>PMVn5gcy#MQWiW$*y_?aty89 zlW8D7A0eK8)1ca^E~{+BNp2J8>&PteyI1!2U!&Eeyz9@HsnDDFu@jfu#ouH*j@l5& z+lLk`7B9``16_t(4%y9>GtGgJR;CVX6|S}xz7^Tcl5+YS|E{vikxOtcp*gE3!3M!3 zPs&V-ko|`}l4&$do{t#RTH-v6VNzKeL$++WZu90c8n*wT4h=aqXoK%Ru8*83UX+$u zHhpt0~ zIgPBTXfKC{U_&?{)F@NjtzoS=(#OP#HzgM}bJAU#)s{Gut zY`D`k^U#FatxOy`$5VOb?|=Wh_!F{2JooBCApkvTT(e~>XPJW-Uybqfth24CY#m1t zfv4B3P3dTgb50?f(T)#joI;ymeF?BrmXPb0(c31-zA=)$JXe!KetY+$N-#jXRZojqk9H`F~7Y%(db}dhsc2sLJnS z)v{#PWXPsSc`UYM(GXbg>6GUn0Fl%p0>*~nRfxJRt?=`$I1_ndhHhENDM z4b#ot?X7(Cz!*e<250!LB`p}<*@C%^kBU9y`$=<{Yvh9BpJ!+s>Ry$7RXNlqEX?UCOWD?J>$)qWi$wK#eLViy z%H4VDz;_KDGtJEoz+!>|4O3fJ(bfUM8Zp0L;SgMEG5-_0m&qjed%~=EC z)Bj6VPmZPey97R#*C3>@h4&Q%3ttC*%b4uI+gzDZx9DzpeH)a zT@Joam&iD^CQLFSDuytNx3;^;MRw+ zXf$;kA>)|#E+_NHzH9n7nj01`3fe-4F8MiccPiz6r@Cdv!j!*l@0K)LK{aeU3YrnY zXhW?32O-!8dpRsVw{6?4Teo(K8?cRfp%f44#FD(`I;sMwRZyG^y3W>bwVV2{9O!$JSG?_$&-81=kLE z#WZ-TbkixDiUw_zt&P!3J+)n+FlNd=PUg_+qhi0TFVaw3$|)hR>#!jN9|JS%;m`8#rqhozb!Lq{`oW^|@y4;Gv7hjM6O*gO$+U zqAZTh9V_r7v;7wnyZ8q@ZX*|qn{R`^jKN`FI5119bcd?9tMzkz>i$Z$xXMqMAShHbWdHt-%48Esce?jm z-hA`=>w|rL(dVA)9@V(jB~~kt72|rpx?AJuCa2;yo+`F5n#y0vv~InN3pPY}orWVS zILC0Bi)Z6(Jf(j&YDSe-89kL=JD5|eoohBUS@nA2yaGJ-)}g5J_XAvP@jTY49-AH7 z)ZdRLvAcT7Gkuk%-PwT?-JZA609klOXuU2L{eTL?hSaZxK)f<2@Aqft(&!smWpTrFfZ#y5&>oj7h zU$1J!V3Q&RS}CH1^+OSW9V-+v`JUOe7I?h!|? zZ!(s;!*Vn4ZO@4({hwSOa!%fpO9*YMcuv-ij@=#I$MkqDgYe`W5!d0R-_ z>7730_IZa!QRS=enN>oZ1qrUu^6OTRx%NVX>ojTb&D|8Vn7wtjjwE#@t6zjkQUa+b z696@;{<1*RUH=DL%iPOeJp}j2gL)vJ5ki1goBWLtHEV?f+!=Wy44O{Ptt|24@H+#lXzK%(EYT^H7(o z7uvjo@9Njybxxz&r;MF+i}-4rYX<5IzNk%ue%|ph-fCs}xS#Ckdgs4+K2Vl&0wO&l z1tN9+C7oB_R`Zibq8xQ8`Z;I=+(T6~izxCymB?C>svcF;fonCP2nxdIT=^+J6Y1=F z>7FTkPB2N28ZG5lLm)&(HlQpCn$_?9o!#9R_iGHs))=HU+!>x{p}b%g|BS~S0ktC}YjpXn0ZrF1RiJg5u(4P`PXyD$VsZZh$Dt-L#b&M4P=d`a)}bhn!v=5mj0 zSbVcVEI7SLNo&J2M~PDZo(aeKcbIag+BH344$Ti({R=xxi9`HGYg@axReTstZbB%4 zP&JdYfI`Kbg8;SWWp77Vx_NzCSr1D;$G4IX%jI_)H?B`$@U1+u@X+|UI&98b6Q-Aw zoE6f<0yMJ>$Q99!eVT3%P}!;ytLn7zBHcMyo3wngob_LeXvuGo{!fuvQA1oE6Jp{G>Ak)3_MJ`Sgx2H@N6GXC_J}LQ zx5iJp|Nd7yh|=t_AWw-I!7OigX+s&Wk*nN1H4n9av@0c*LK=m$t;9>wu5wt4cAZEn zIaSSBT|L@;A*wRS<8s|0Aksq_RR-kMM3I+zi?fYgc3_8X1zw9{Sgq9D;AI|&dgBu9xDsdW>taHFcM$dfs%}1sNzeK#pVuSXJ zpA)L7rbaS=RMYBJ33&KCQcX;3BKTDx_!SWR@*cjHzW@jeQ5`i1M)7tiw^pZ{en<9H z4PIB9!h)z{*L!DI0AQai)iR;qO>18ugp?=-pnvEy#Y&Uqtj{wJQ?eU%oARm5Q?+h+ zU}GVLQFS>s_@)rEi=@S$br=1VB0?WBWOKfLeOK3UU9JU1IWkAN8RAR5`lhU=cflb; z#sJzEXmIRoEAWNk@##6Fp?ueV^2sM?0y{=LnH(QCxR9`L{Gnz}`nm;QdzSYKsgg?x zeI7Y4DCBxQ(+uh&+NT^_5jK^|PBLCJ1-Mq$FX}ovm|Ht5&oC_=H??nU-_prAM4q`# zyZ+H$4hfEqZ;Ka;KQdc+bufS^Ih`{bn^NS5b+fQt8CmGj`VL{vu9*jMpxCf_^Tsq3 z6cWpp9}@W!Rp3PqBirp4Xc`LJ7}sl|7>04R%#SRte!IglSQhWz&lA)O5;kD#6q+Gu zOH;SR`rayyti|+snwp}UNXuHZR7D?jW2<|F6xC#EaZ03I_YU~ZgJwVQL+cUL7xe~A zOMm~Xs80WqJSYxsfB9wdyWbrRdD|k<<~?P7Q5B4x*RD%8*_2+vo{ouD$}q;`esa2a z#2q83E5Q%MrrLa+Y>LevEmE7GXltW3Ulvyw#UD?#`M;o>Tultqut|f zqLts0hdam0v)aZxQ|{nwPtaT_HoJViWhCHvOKS&7*Y}dtO}scLK4C`kv1-xt*zq)T z%9pa}*wwnZ=4r+XDG<7!Ehse6_LgCQKdP`*O@p9cb3%k2JNap9R}RI>dI_2Cv{az1 z8F#5fRYw4H13zznC&&i1d?uo?FOY+z1gKAu$g44$OqJIM^^|8Keu&`et`@So4Sv6z z06{cRQ1aX-39SuDVoQV)%!w$Dp$^CAIdA1x{}(2l@GZPr;q*HdXjx}KQt|3Ix8J4k z_|?o^>ew8QU@n$6l`ET=7b<5v{ivl$&Ywj>3w_CUt)q8E(}L#BR!ft~X)3h+7p*#J z*kjTVOn||!X^8kibD(GEM>Qi~XK&Kt_X0`5X*c>mE(AKH0{(YSdl zv6(R1uVVP@amnYjqsv!~n}PvYjG$KGp!x0Di)Obdr_T-`zx^4H|8zuUz|?O20!*{U zR>R{nS!GBv8dZ<~hqg9XQl^ENB|JO>k$u+dlxtb5=c0}dA9#uee8OauYgHbF*CErg z7MF~>qw*2MJ=D3REOJa<^w`iNR2`9t(LS5^KQQ07A_wmE0tO^9MnkrdbQ}Z*+^s-; zL*-ep_H$qWIXjW)+Y^UA3``ihR?g+$~UB{h{Py>NoyVX_-0zsGAKkTqvS=~d^E%Bj3gE)=&o8`_TD9!Z6^97p7h>0?f8hr|Zn z`C4C}GHvc2i$ZfUJlyd$YdWcg&r6xM$2`4lrns@Kr@vht89jOlxbBN~4Fm-7`TXf$ zpRx5fb3n0t#E1zn0W@v)q;=7ttWgsgacVrXDtD>GZrsp;B|qnD_{nj<4FVK82R}>hK$i-~N011dtXk6<0aQS8sMexJ6~ic%mc}ACO}mFyuj>>m+9F#8 zAd0CZ3Wdaqs~;|jcZ&m33K*n5r^(bu-3wL&PSgTwM+oN&=B1DWx{;pic(tytagaLA zlq1O$_P+b>yW%St0C>aAW%S^v+h;AB)1wcE^q76AVI3$_cg$NdznveM8&C|PW`^ST zE99qQ6Zw;9wUA524P>Qw&FThqIA!N-N_#Tgk~6ru66^X~r!fI3-l#9+Y0v3nx?J10 zn&qvsV{@`rnfP2x>t+*j*HU6VoRH?C4btA==_uqnEt66Db$Y|He15crx1}STLuiEX z_C(R!C_Z7asRY#31X(hJ>0&9Fzg7lcR{T-%Zt=O|(;w)P3#Zf3l$P!>CSZlupvzp$ zSc3g_vvZ{KX3*W;X^%U5ddW}3neV)VQvSlX-wx@$!*+{vWHW|ZLR3IwK$Qn&@G6uw zWo_$;MWsz|2c8J<9Lx?=lC>o&CBl!OZq5%$0XO>&NPK+Akit zhSe5DOl~=ZW~i$*_JT5^N1fJwsEkQwtPE)r47z-j5jbBGv8{L-otfiqY57(W6JS&& zmCZaJU*9HgT9G6sU1*Nm)ivO^pKre^ECPcvzWp1u`5xFA0 zaaEXL)Z3d1qmWjalt4!HRO+OhSe4J;C<#6+l1QNIkqkK=Q=+Nv@dN?1gngukMtana zUA?WxHUU$libQp~4E9-aUZL7_nW=?G>GaiqNWCywb#PUJ$AN=ls`Z08OJEhhMSduD z$jQTEe~PRUuUe7KZpvih7&4$~*5p3Gl)@Wm;b?Y?uF(#@v$H|`*}u)28pQXBLA;Bc zBksJZTt>mkjDnN#cLyps{ZfjYCh@#_qhhD1T!P%+Y@mrT9RhtD(;6L z!=eP>XP&NAkp)c7ZIXm5W}?i$QPKpcPQW}L$mL$lu6TLc@6oL_fk>pbq&kkFdo|f{ zRQELX`~-y~`}Z!@Nl!KKTD$X<4^{U;G!ml}aa!j>8ilIs(4;8EHw+zWH~E65OHq{$ z(yBC00Dg^Nv(yt(eP60pV}dMwKSXAhWV^p0!}C1CN_*6_5q-8O3X*$p<5N-FH|y zu(YS=|CP(DT3gfq(w(DMnj=unhEh$yNAB0!8gx2iN_`JL_>@W60vyU6Yt85Vvwggs8st? zZGU{9trz;j8Ov~dWWn*W`8td zimD>2XkXmmMhA;ayuMXoZH%#YWiVb>+qT~uv!j3`Guk(#M&F(Q|AHzDoK6;5hFy=P9XMLyV zxWi+Zj1XA4^Qj3}{lS&uKcCntD>N(3@*hNiBaJx@u7S#Y_m%*Vn#bc2#p?5azLs}r`o-Srlo#Rd&rwfqmB+M64)y5M9f@U8PdZ$@!4LSPbg&>;_BEF^%|H*CdQ|$PD5y84n7PUc;w5{pRN7 zsDJA&O&ASSy-m&0&&kX>p><}=+`T6WKEem$Lxz#q;^oVbKj(5gx22)XKsmI}OmJwc zIdR%@J}F~Tua0~JB7wIeW%8U9<4Vnt)lLD4o=L?p=wq_BRg(B(^=PB?>GH@IN~%st zx=n;7(%qfP8mkk;8CZP$5)>j7a+Gp*fW%vYxgndqf}ADpHbPTs^&hj@k$2vS_w;rO*KDmIsk%-^WwI=asFksv)gg1G!LNry-xy(PRoG3(9FS z1?3ZE+xQ{ltzfe3mrNn@kk&4X$Sw1v*ja&c4Ungs8V zL+hNroVp0Tpu{=WG%fK{f&8Feg&s4|K|i{v>4_(r$k{s$H2vnp?-@>FIF0L*du2bA zg{Cy0)TN22iaMQ-KJ3yF_Aptko2G$(&D?Ij96dL{y0V9hB&WWOF#`1^@oue$xF zxsBRZPh?!=Qc(OEXhJau_);}bQTH7f07+pe4%Q@kI4}m4FfERjbo!;!ULz6M0CH$b zrBKhyq~Ck*J@L1+iEIgZNlcKJDsMB(E7uZ3yGpCc1i(17hB)CppCJHf9}xdKs&OjI zN~5>e8s@WY&FJ6e33~qI;bu0LYmTz%oJCwJOYZxntB*B>J*>^9^aO!OII1wPwIp-( z_R6iwa@pFMfCyevmC~7KwxCSbHrFgZH^7H`*N>t3uzzuz?`3-YG#Ex@hq7YYOf&zd zW13-azw4}?o_|s5Rj^%$>B(kDx3}ld9O*rwD4^PFQCix2nJqS3v)SxDSv)QhnGp`h ze@Gs_%4AR|fCG4<67SdQlLkFx^%~WdkXECQ{o)vdp!NqKV^wYtydGJkrA7Ro&P%Vp ztQ&nZvW{~uI;VYZ@s<@AZ3yAyd6%3t(`L+?oaUyzZ7ZxwkKozWFOH|W8+|HuK*d`9 z>6M(D2WF95{d%1z1<)d}K8=zyvZ(J7$0g*pKww62mY@D`SJ|0U=#^n;2`%-?RDvSJ zY6Kk66uRIZhSWa?K9C&~Uj1n9ul7b&XEjc$XKj&=>5Ulv@;FTs&#lEQg?j8#Bl^=* zM!{wsS)u!VRRCsQ&;v_-DoCMO+dsYwn{m-6?xsb`&@LsS+%eWa-ZTJ=cBCRm%F zV-Tw>O)XenmQYhDG-i!hM#G^|YuGxPv}AI&2H$W1jp2|jJG!fDq)<4k8$w)hs4(|- zb)8L-!TBY5mwe{0e)TI z+f=5WK3iN>=xx=Q0Si?=HDij0xCA|srA!70n+X63>oW~9g&L2H8$RyABj z34HL1Ml+k$$BjC@>pDikl&3csZ|&}8E>G%GrmQ)0Q9_qCG?}yFskY9cU@W^fNm8x8 zkI9osOHhT0emv4SS8h*tUw_tFy$ucH@p$4nqS+f?u{_RUxOZsI?BMs7Vucw*>A&5p?S)$Ph2z^>^tQb*iB7)M{P~tEd!eX`*hgm0w)$-vU=X#6V`;4XXE*{s@-X{{DKK*D=Lmmsy4KCh2%$jh+x6CCzgHS-> z&?p24se zj4f}_GkvsRF7J%Sd>c@>3qd&Go5-BgbORLzoXns1NNUyFAYwz+fM_lXsfBv(3fHO* z$z!#vMxQyZ7?pZPYuH}OJK(NNYWmXKgjQ9|%3>MZBl`b(|Dlz(uRLsU4>--vK@6Q=8PbGTHgJvWqFi(x;n%IZcFmej z@z}Jc`-rGFxQ+RvvUJ3r0@PYEn-32T4(d(pQ{o4=9%ix{z=vj#B$YvCP0${43sL<* zMb3KfnQuxp`5C__er!q*=I@6GP{yTW=6 zv(_%pDQxTV3ckp$EWk6VOKO{OQNK3Tk>LHB7|2o|3{`dwG4EGmEP zme;{zd9hwTNbpZ8Xj6b3s3lYSAb@ZfD$(>1f4Ma(9$<~?+UZD^(#UcO!IwILTJabM z{rqav$~N)*#W&s5)!I5+r%9R$4lJI=Y2li3)`YT%3RjcXBG1b#Yx4@Og(w!~VI$N< zwaq-gSC?v!^ImnNCC1!dDxP`i5ToV#&pYn!VU3gZ#R8mO#}Q3bCo?rf*hne@hOhA= ziGH+c^X3~iZfqBiWU}q&igz(~9OMmQWS*>TSmC=((WL=vXsK05t`4gst0Rh}w8Fh+ zy23Un(n%}4yC6XK=vn>P*3C=P`U&&$m@&M-X9+B{3JuFc>d=ZHJ@;&6eVZXPYuM#* z4vsP}C`(7~$yd$FNjjtAws$X?ZLsKNP=iQPlftSrGcSDWhQ~GAel)=9zy*A0bnt?s0whAM zW_g;iEXydkEPF_n)tgjJf>}RSR>z8A&MgF+LQLk}cV#X6-bUt)!+a2}Qr8DvABDZx zh^{k)SQuCs^vE3gIai#T;~nUmdE(?grs5|Le^C>+G$fh0)cUH4^Nk(A#EI_?NO$Z` z%)hF->d)S>#puY~fu77SXXk7OzGJoB1zN6MqDenNOWqg0{`%|U>*zTB=CW(A&6P@v zbeaZp(Sg*c+GS%CP?2Jr6wY;7jZM)kx3119Sj=ePmgZQaS%85v&h6DD%94RA#>ldM zmB(+S{@3Jl5KEV%F|6$8Ln(KE@QB-Yv3AXt8@7LaaFA^LH!JHKaa!D?Ms<8iKo?pT z`h4ecl&*E>`UZs{$YQGxPg|2Kmqr|s<*UTMSvFj~HKdEGJuA;+hAUTsXB@Dp|S-EcfH2QIt|Ia}O*(f&(ejQoS9BBBZi#?M9V~C4{2YfL6LrQd%4) zY=Q-)_@X{s0$jB`WGAyf^upf_&rY5tuZ!Lz|L})szslJhSD4Lwb4L4CKjs!Id*AD5ZC#<$q->oY_%5B_%{Mgaz1UmV z)@GeUR*+dY=9N5CWH@V|HqjnKMJG~>>gefsg9akN1bVZoRj?YETl;tP_P(54zT%KD zXVfbiH*arxSuC5Za=Aio*R({HdUfp zW46`~N97)!Z@Sau8ndbzR>F;~3~|}5aX!9{c~4oQ@W4sofjGW)Ex-l^XBO}1h{xd` zrVh)Ep&O4$5R39fs`Y(3orN}XtwP^IwQE5lBjTig+87q5Y+kkPj@m+L-wpUL;>XY8 zahHm|P_ww%|Rlo+jNWl>3B&Uxr5Dhnj+CO$ zH5z?fGwa!y)!60DGF$z+GCpxV^XR_6+T3y$EHgn6ngZxK@OEjv$S(5&Z_Ol`69$)x z|2xRU+s_d1#V)zCaBEi13e+r~wtoHf>(+IMM>m>$GpBp(P6=HU_EL1A0J^B0a1gvF z-MR0|9)ihJOYwiX#saR+ZQBHQbpix7FOd3~CoI)|xF8w>#H~u302fG^rHRXe=&nk( zk4XbBe__Ze1pjV`JpS}ga;nqK2HrHg z-iAN{{K@A;p7Y_*=nj9?(I;i!&?{Xt%`((7r9dAD5>YJ`umQ>er1|bGw{(^5+!>m zy^4@U;w}C@&JqvO>3sgEktHiMFsf_LTg1AAS*I;C|K4%vNr$Li%EL}u?3s)}o7RR= z%&@k!+A9wkyhBc-bGnHxr#iGW#x-sPZrDInb!3^=bR7|^Mxe#LyYnv24zs&blpo|Lr4`y2>OI< zwAKn)*X^Lqu0<$!41$cX3|exOeUFDkJ)p~q$7EXAAjxJ*rDzEu){D~hlfmf;FKO+ zvALXTxu-*CmvzgmPnFSG-o*u;%m#W&hJwD>b&pEZZ0U8gaDiZEm`x;cveD(}DBFGZ_AaTP=zCJILlK)51@5{`bCsY@`JuF^y#wh1iC#=kFV%E~TYwTz z)mzX^Zm3gM{nY1p30lbhqFw^jrJjHO^IR(KL-z6l!hQU62GusJffcVIuZe+UhgImE z5T>i0PCI6oi9Z(~xZr|RvA9sHPMV4i)+zb(n_hb9CGi6?BHk;{LytyX(pdC!y0u9O zP)AGA#~Sq>gf*VkS&dcEq_D1P25GmzGSPmq(8G+&`PMTpy|{<(z3kGH(tqj;_Fi)F z$+`S#7hNo_=wmW9wB@GZsjceAPhG$My0vRNfTN8586$3+tM141)Q@jIymFG+H|WIM zT6J`>UmI8wM5n}PD zCI~?hfMuX19qFKBlP2p-UnaS8;Gl>6oV+7CZhz;U9}j{)qE%@;R#P7;z$Yg;?7Rl>tD({0IT_8h&ZM2{6*G{w(xy9@tISQPh8OKZ;SQT2phwh?Mrv^h_c;q9BoH8?>2~EhFC_S2dKwN>mFX?FqG>`QI-Eq0GKfm(4xH^r>_xz-3H+%OA%$ zqeU}cOE-(#?~-vwD1kP z&!LUmG}By7|5rIbR5`dxYweN7JBx zu6R3FV13c%pnuK{H=L?dr%X8-_^9nx_SAk|V`l?vGAU!NancXA=tKQvXTQc|?#!Tr zH&6l_@4-CpX^uf1KAdrHd$51ceM(PL5S?z(W{}bw#rp<9Lh%^fv&^d4;(!3##wOQB z_{dtKnF_p+`rpc&*WNDo(D=vBSz6od>y*VKcISD$P7WaU{r<}3%x#r#dk_oAwGGld z4`zg0cKcb4YA+u>?rM_#*Zr5zz2a+O2$!bL{MKQB5?%?3(X@{SbNj>-3h{HHAVfEg{k={d6oQDj1qsFIUZ7V2*KEm zL!31|qYTA3p>;H6VP_4h^ei}b(ETJrRLdAbeudNLV1rSuIPI#dnp;{9rDdL0C-wkC zow(cRzP>??siuXuICW)%+d8{X*Vv7Mju0y+e$#~HQeI&{Jcs!fMY(NrL7^nAEYm$m z94_!XEPgaF&pf5)@^60Y`swI8Rt$Xonk&!m{6t)8QJdP@RC;;esMnZ`GB19aJ9)Cv z(Pg#Ty9IS@NkAK1iY(Jw$<kDN@%Jbq>pDr#69Al9DYy zP8<9PB)uDGZZs#itZo80%d^Bt?(RktXb`H`=Uvv*a~atwp7SN$#zC?wnD2ZWW30S= zTrV?i-!shNy^@!|Rrb?~P`o;yX{wi}D@ji+rZOF{6#V7AJS7=dx#lqThykUMoFI|Q zX#@^?1sqPJ8Y-0aB|Z89b6Uhho)Fs|XxU_bHZroR%irFl?$@Nt;)_fJ*$sK94d*Ou zvhxhDQfS?JWgrpP&2aS&hIAI)SG*gYLk|u^mm_?!GqZVJ+#6rN_0^Iip$!QdqnbxY zyvwVUhuqqZ`74@S{ih$@#3(h|n%}NknL3+cYQ=LdMBnRY|EmMW)Nj{YmuU8%(j>mp zn9{>c6Q`}Ds?PKg7#=3E>C?a3@bTK|zZ`mVShjrM2H9o%He(@ap5wUx24q^p^4l*cp(BSK`JcY9cVy6&a1GCB&astmNEWBM?3C<9WzG+l zfXDono(UKznF0wy)>9gE6{YlDEt88WK?iV@U*0@1k9ZGTn^AlC%$mgkL$_znsuoPR z<4enDY;KAyobAdvW-XeBDIh12je+2kFA`V^3R&#ZFbL^OB8*5@^F0K_@EQ`)z&jM>LV9? z8H{tVv^;sBr&f%7M3PF2L&RZHrRB5nyfl1DDu2~^64=m5vfN~MY_;(O!w|o^n?`<0 zemx>SFw{S038@;3S;1<>OaQx6P}s65E}YGTDd~;OXisfBqKx4Ir5&q&Ip)Y|XYt;E zXsL!4bHwi)`i*a3O8IQ9I%aBiP*miwv9XlF%Vt>5nnsOPo|RdaH=(+jBitfdMg}Uf z7-w~B8(O2hM+oI3%(rhpe2YPhyN%ZNHdau|24?xpkgq#F=Peg85J0e%%H#@DaJJWG z&KJdzuM{Zh0hGQC$-+9z>$47iX>CTtSLNO*wMf$JLKaf; zo}0AoGdC0g$YmFwH{X6?$exD?Dt&wIR^V^w>U+{4j7a1I8sV|s>U*`$9*e=+r;&#i zxmDi9)nPNE>&{4Cq8}{c070G&`C!W*zHXb31Nvj;*?(O67jVZ5sWR&NroJVwz4pSL zIk|=FIPkqkHO5g1|sxk8-4K_b+)`e~iY`nHhR4s+kY>wt8L<09wk^3s?_c%+LZ zZJ5;ICg0D|C%azhl(hDWG&-&s+Vrpsf~w+@#!SssxB#e3>({q`{rO>CkD&SB^#aeq zpD_OtK2ASe3N}lk)*D|MwIxs4*ywIN=`^_i?Qs8(Q|%0u`1z``VhHa4GCoRzDxg#zC((XSZ7hTsBHS-oT{;-UhGr^TSM@wEf3AwG zUsJEHTeA_el<2?cstXWIob!9)gG#O*RD<8)m(&XmKjRQ-Yg}ekqYINzU+?FFu~?9er3_Tty8oWJf?2ok?;zTN=;bRphiu9Dx}KhE z^Z7TxEcs>v$xBgP3IHm*)Z3@0S7S^Vd>&-3Ev+Hp?r!>aPT$#(t)j32(q3xLt zOM@&gZg{byah5R$Dey0oJbi)rL+e$))5%SZoI+R^)~M;X^XPcrJPr@5 zFwSW~DWq5#p!wEV4thIGEvNF?Fa2UWUAQ^@tE6&pT9LA zaVZ=3>>p5S2d>@QsIF54x13wKRgeygPdq#&e#oXkP`zx91-4l5%JWc1`7NI?^_t9S z72&gl44B~;&xar0aR ztBaq?HyScF&MZ~hO+eMtco2Kt5>;Dy!bw~rfw2eIfW67@$b5Py5Ki1M_V5h%z+GPl zdLAU4lzMvZC*SU&?-l%Tl3b6U34D^V+o1FmTH)&)GtDxf+RJ@QLtGP(O@bp66%E-P zWkrLO=aT@ZZvBSH!Dk_qsg*gqw1eE!{Yej)!QmtP;g>wZGMnd2xZQzXT(f*Vwg*`S zrC?+<&ghvW*Qqdi;N+PQ*ovkG@Vv8`3>-KUo_8j!wy|-Mb#oMC+6jSaEk5rQ!!?wd zt{}Ur`Mght{LqUSB*J=&Vne-`g=kh+P{)!rK=83`xZ(t`$DeWGi17p4lCx*X?cy`; zkB}CbJT7;tI^`De%f({N<#|DEFPe1b9;Ga_$SdKc)JW9n6fA3Cwh!X`7WvpbF4-6PB?*)8`5edf+BCE$iXT={dmGNmh4X-*` zhK4I9ay?yLz|!T_Lywx~u+A@ziM<<;+m;ZR*Bs?hGc zm`+Zu7*(7Mv;-JdtggPAd}uIKA~<0xnbIzy{Q-xFKy zQi0d5XrHw>qA#4cJxat17365xRY92qa=f_saR#51hbb6vnq~omDI4$~u@|1Pz_28qR78C}Zx_Fr1mnbemlo4^1vb}GilH0HZ zxOSNHy%UrY{O}u!*+YikW1xPeCI+TREj0hwt`iYXRv;*BCVk+U9*tgCNWd68)G3uo z9%)zGb;2&8&f3#s%1&*<^r`yZR=R87zH}lnsFF8olP1o}D~DoXJxKpK-)OT+Pa=$N zNt6>Z385hL>Z`AU7Z0S6u_?~(i@6lRmOCPYTR@XgdzR;_^zwtf~%} zA7VMV8E9LxJ$lca6Uoc!dADDl0ha?dvG;08$NBUTMlG~s<8I<&i_!GVt&oszSD1OnDd8n5`V!YA|nsmGVa)g$4(w4Qdiuzu07z209{Q z5HD<|=RfvXPg~o3XatSzHfRKu4y!m3Gd047tKS|6Q|t-yyy##5`d9ik#)65#1w54S zd1s;Ow?SG~{eHLS+CK7rDJj^moOab&F;1lxhId@FqGx}NyZ&h{)W8Pca+kDzc|h)8 z*-+{KYSqHn38v({x)%y28(@gl%-%x_rg2S4`K^Z=3EMbO74XdIuU9bP#^5{XS`#hu zV1e{(OfpHUf z8Ix84XX#Znbii4q02+tt!w)|!OS{Aw)Wx;Q3>s#nkBWK)>q;MZ=z6?X1o;Y2)D;I+ z4#Y#Yp(;o1o@Ue8r(1Yc4!p1vR5@ds=t-&^Uh)R291V04-{y%35}vQyz`LR4`3!SJ zVas_UyLc0-DXS+c(#j`2_$yAziR3CX2SKPNKznSjZk1!ji0eA`o?2HQI_2z8za~AH z5NY+2NKZucXZq>CK{Vjoeaj-DO3j^c?N-Noy4=Fk2EpHp9oW9Gpr_~6==8!7bAu!< zso(PT%CGM>xw08;6xi(p8BMay(rIf?3pBD8GzLI@)!L1n`8;FT{?s{j5>Vs&x81hJ zmD)Ty&juW7iF?WBt?7~KUKmFS;RDT#3;0pOVrCRBeMpdXm7u7a3RLZo8dPNgl z3RP}lbz7kB^pMf|k%8Yagb9u(TxdZ3_}u`4-|EJwwu4pIBd)T~uEW>)1EiB(o=%_F zY=BCa^KF7hElLW^)h2IArIns}(@ht_3RZAjtC72)TNUo)#T-B&43fW4wG%UcVgzP` zd;9usBp3J6FS^Ml=*o~GeI_^_KG~=7%y8G8>+220o%Oe02P>1uO&fXmABr-f)1zD+qU$fqNLjJ#jZw zO&_avB)Eitqk~E(1-~?&R>7$UFCJq4T+%WD$HGmm5I5bib(#C>ZvCe3d_y2ph%bC} z^@*j@vi|NV{;n6EjU8=1QNa>o4B`$B1N68=iOi`F?gsGRQEB!Rs-|uIHRK)a_9%5#+-q$+aoen{0 zm{J+zvIj0{k{AqZXwQxGXUXB;lj~K5)50<*NSx@oK6}pGsPAG7_Fk*m)@Lb~o)YfYzzQSp&9i_KzfP?~Ah2PJW_Z$m^4W*dxYRZJ{K@mW2J-T#I{5OIog`r{tg zKwep2)>Ws1s|4i;QVA^^wC_xtF5y$bR#%8_*g%JyZK zEoYQUZr3%l>FbTjlQ%DMM_r3HZb{j?(wbgfONSM(T{}0x+F(9jRzXkH*G|&q4A@Q9 z{;A;JkveT#Qp&q`l+IE?IEdCc(h{lkOq4)^ekL05R^Ijyqxz1tg^)e7*YP`ginV-1nsmn-m~9y*CSkb;x} z@~UbYG2SbtTo3uDkC%JB@?i$gvs$NtL*|$Ov!ac!l7lKk!7@V~u9fk7roxau%IoZ_ zG5AR+F=Hfm()s7V^G>Q?*E%&0O`s&)8&`k-H`DW+zRnHtTH?B(Y)?UHW4(2L$l2nE z%%>7+gB~^%4Y9#S?K^p?S`7nyIp+vL07Gd-4cs6ehHRb~=Ux|6n+33ikBl1(^di>< za07oTz?`g-HOT`(t;8l%fvYQ%&&?^2_oOY*yJL|TUcVvOc?$ikdClnZI<)s%T zoo+NKR1kox5@x!rn#K^h@@=ynLqNQ+@mQ8oSL?n>(1B~v28w!&1>tm45p?srdl?=yg!9V}Y_w?5hUjsRN{G|eA7<>cH zJd`HaW8?RaBMiq&K_fhYg`=0djYTv)dlgHH2z1 zWR6*3&wM~v4PLxwa|CFFqJ~u`?=FxV4u0fNnL5%EjW9dx(M6h=rA}90ugz!g8>Amb zO)VKy+T7aKV#s^bo}z>Ny)m{i=(qI_@vHtYXod&)@<$KlPua6CGnU?kOpVXtO-*tH}`IdbC9c?1;2+iEk*nPvXj5yEHIf`bZr3Z+LllW*bpNoL~ z-IaprJT@1A`F|X!8si$wxnnBKJ-iAN?%Bifxp58#;HCjAUHFXzK6u!8R~8TE|L~KE zeu>z7A8jQY3|2(o<-U$NwWsHQ`qU;ve_EgvH+0M79KBGfYz$uT;4-i%ES#}vwu$aV z*rO1)q~ofjX=dgx^p}g<>n<7+DmC1|o|$AWJ-?N)mwp4E1I&G;*(BE2x2nJ8ruAT- zyy~hev(~&P=PNvrQ@KS2&i-tdzFwM>hMrBkdiAZk;^`Vyecie^Yv3I1NsYkuFL17Z z(BTGGK~(_NTjD1K`q?M-XyrbsG}tmNen#unE~VeE_8B|3CJtzawugZIBl3*W7n+`L zYg^UQ68`sl&ywYu#B`V3EjAbERX%HnsZQ6yg18)<3_Hz6W1GQjXxI9Ut)`H%gWMqS zIpP|Lk&{{+%F5ANrcj|_-=RkMlS@`0rdXpcD zxbPx$_~DmVOttMRj^scBUhV69Kj^k#W_h+>ml;li3$P^GALIT&Kl=yZgx;Ok%@e|I zo_)m@$6KzE3ucNTlXBK2YrV(!xO|RY4Z?(def`HaLLoDe;|lU?Bh@9;ld*4N}`Tpbs4*k{zC zritfw0CCXii@TkJMPN9C+mFnb3XlxBn_itGm**5(ZCf*=VBHCc27>cM^godozH`C( z)|QsBaRt<`ez5WeeWV3B2*Y-*eY!~+TJ+?4>sz zx9K*S*Q;|#o7>vLGJUI>0oRNcr!3mp-pGcNMkVB4?6Bp2+wlRN2Eh4+f?Tx_{OZhwg48P@2oub7L4e-uzh3 zje$&1{7*ES!}Y=+S512Vi$#OB1UaB%JBPf2iAOt8g2a$Uc!A|bCA`s%P}sZTV)c7{ zday$lsI}a{VjBt2U)1#~f&n;?#4d+~Ub}yP3bcSgWk+T%@S^NMZw5ZJC@OM{Ml~iT z!5Bx9Viu(9!p3*rc?bIT0s4eI#pz9|7PX~p$b=0fdH_7zOFzpl%aJonpIe=fyr%F$ z<*pR;DONpkeY@Cd;f6nXqEMipr*>|OfY3%%zhWdz{?u_U^zc%!U;-wO32kF6rKi>I zsR+rNV6*{E{Bk$SRoTEAq6AL|^k&-KtaA@T?`Z2EVqS;dvFgnP_YJmtZ-V)}guiWq zm57pR=}@&l+l}{4zEW88a4g&b=`;^;Kw(#I{l;sAYR1ShNd;2{ z&p5JQynlZbroCw0fMQPGx*@?&-9_k(WdZ>#IBB4D13z>xJ2%V%#TDW${HnG3+(W(A zM%&_G8x{pPEB{&)G^X9hTfSz3ST)9X!|JN`OVqSv!MA20#Ctzhz)d+6Nb zI(RRGTxDu*RV0X19#`cU9M9AR2p$hXEZmUHQ^n39pyYTShUDMm9y(7-uBK}<=ojN4 zuhPtO{qPsn@F(8_#N1nLkO-l)o5j(n&I@I;=cG8a$|=UQq2lu!{q)mM!H^bwekI`Z z8%+3oC-i9Ig(k6EUf0z`yBVgtw7-|JcSAqFHA3eKlr@gG=d`Y=;1W2jmjTyP=~>9z zQX#QQ%$t>U(Vb1;bCkEO2;Y=&LB9-T; z7?!fBf_%X9M2Lw;{VMe2GA?^ur`zN+@+9pyAc@vZenA7@>F>W5g3ly*afmpl8Y9L| zrQKRO{jtaTTUx;Pv}~u$4^~rAYgn3;H1CROaj@H!G272-E9Nq~q4faF5%eartrO`T*NL{`x5A26t4b1uLN5-Clm& z6S-)}Jf3{+fEnV1>l(17!(HEM67g6C$r?HWW@C2>c6aVv;)Ov>;8xYGhlQwH`Lgy4OWC76Dipj>OAIc|%zvGejSogp~7isdRu*(T|8F4X)I) z58eU6Qor1j7fh)h9$2uJB^0IS)t+f~tz$aafG;oeYnoS=L9)XNR)oaIe5y559J~j8 zAJ`c-@U(DLOZ1P;8_HHxdjUMX7T#t|z~Gy#igdCJWbyBG*?t$?Lg8)3Hm>FaK1PV7 zvSk4Ou3YBK%%Z?K)Gt)3#krjMsv<;r8q7k3un;E^sNGi9;bdK2#jSs*uaaH#T>AKx zS4J|Kc}h^ifW5Ls4C*BARwPFK1tYfHjRPE#vtbGHj znv+7qngk1`q2$s&LuY?Tpir=$&gc~xUw? zUts<`UxRo4A~>R4fOev(GWK_PBb0r{szKPZfZ&GAC$Q$lTNaO~a_}dR3@cqV6rbe* z#Ftx99(~KsQ~O&m4R$?-Pr1n@V17T7KGjUN_WYr^u3O?x&FmDZHC*dZ)Jl_JV1ag3 zyj!T4H?ZJtoM>PH#c7&%3*`@@s(}TF{Ln2_X%wMbDC#d+Pl4H2{4+32iHYXvwZu<< zDwxA9c<#{yZD3O*%3OK(L-}J_l(UXtW>F!YzsO(6wIpT8F5EEXDu_k83$mo4!9Fs( zVDg5koIG$x9L_Z0w`G-K$OnPIMFJ~`pp^jab|yP#SIuJiUZ(683n(;ld|`{1fi4~| zgPn|Wv#I8prQA(p>`lh)tlp*#;cMbEaGZdC)iDF?(o_iI-R9=o>54V9QSGHcgd@ zL8$Tv@c=&jHQ|>QUI*WJw9L3kV4zYA9){}7>ror@-6>=z7G%2n2L_&Ohol9zi!)lu z-gZOMlu~&h;tVAn-lD|m0A_>)k{E_t56t2QF7FUK{nPqQE>qt$nz{b^bAi2xrZid$`mGx|qlM2-(Ii3q2bF|lU^jcMW{!(L-7S#_ z6hS3Jw1Q6hBoS&I-C3i>obO55!>j#PbH4lCY?gkKIqMAIBddhrO08@AP026jU+Bm-jHUwp8 z?NBrn?K{fDW8RqiIE{}H4@Dde>w3JL$1w_YF&l4wt7I8|+F#!1JP3q){FfUHXzXxQFqpS3(Gu`AFOEUpu3&bMJNcP`Qo8fCUC;h@Ox7H0d7|~uHlaYidXh)2g~m=oNDl4gcRT6p=7mkINW^crLkyq z0H7dk%mh%7)+=pj)H>Lx(6+ousU;E3{4mD|qe900?6c4Q4KHgj^0ay)PD@{25lRIl zPMIg}WtJBhkr4RcdJYt$LY9CNq|Buvj1X`(sno8NdZY@M9D+{iex|ESo=w)7wr-NiAU3y?%b_6r)uLhcf)fm8yIr_^6rF5Kd|0Sdm!585={)k8{^` zeXEnafAD_6P-&IMCb25ply*6+pa){-o&_igRU0mtLAArFyb!Rz-Ml;)83VUY`8Gt( zJpyT7FHU&_PUo>3vMSB4`V#O|K-fp{tSdV(1mD4ur2!^{`x$;8DIBm|XdQ*=gDi`7 zqLm+ktJL_90gj4fGpp1pi2pAF!R%FOiMyjKWlpKN4Q5mZ zXJ5f;wRI1?YxGVZbXpu!XJ#~Q=f*g_D6;!X`k2|qaiGz0LAEu4Ir{4ygg7u-r8LnO za(Ao?fV;R%6gO%W9vLU&*rzzNRU$C!CC%BXp}H9tC*bFDQOe{}dSnunlx4|#<6T!( zxL$fz?E(zbHqF3WUwfAU5ovV*rHW(L*A04f8M0V<`k5c_ri;9;VFQn0e!C)0R94^` z6el3ptJ-}nnz9UvgI#450oY>rdceDaL(obeCWLgj@rW>F$5+XCc&M20P(S2wDZd=> zFM_ub!G^;t1o$riCh$2gl9f5~?wXIv03soBNz_Jz_cLwRDPs3+B zd7UQzl1iQ5q;Ydm&at85ggJVQPM88!p1RkcX_N)j`f0o7G8TGn?!4321p$@hEPb;V zEolxeTXxOTrS0@`5<~|~CwdMHYNf%2;DEX4s|vnxR>>p>OnxNp4>M27bhttvoPL9=uU+^gqJ*;n2QlTKG0AXaPRD#?^o zZo4XZCIkotyz<~eejL?wRQGyOsnfIp<5%oXNHveOYJCo_gR^^yG~&u@V(Kit z(YY|}2+Z)4>pES1&bYq0;Tl!v$e_Z?ZP{fh{T@-cUy^0?CY08-w9Ex2LB&7CW)#;& zGZKF|z9+bbjl}R|s(vVgIVP*yhGc)Su@+f~cqz9jOc%aB4{P2-{Vzw7L zO?Gp(ND6*S(NbsaDJ^!dN~hzi8_7Qc&C9)R_*ruFv3+r=TQQGtH{S+WGeVz`f(98~ zPcmAeGqx7ayGllv);q(gcg`}(>z8>IzGVS6JR0Ic>pBe1sY4E%4N}nFn20WE0bP0k z_EkBc28osEtJY9C<*I%ht6tQ>k{*EgzB z@mCdICEq9iq~bwzxx`Nha(?e9kR3&-MiUDVx!6+2DoWFDxuuQQXE$jRCV(X%5si&S zAbT~z`A&*z%!urPNR_t%4vq=$7zkhh4y=1#kE%J_Aa*H3ZFS`HK0!`+a8d0GbVK~&bi*Z7%`-(H`%I{4 zzgb=&esWMDssh4LMGLSzt;uYwj@4@F<|gAC@GqM*^{lSU#LJ9FkyK??Ne;%)z`}gq#+vNog%;s zoj3RT>L?nSzY;|QXYD$m&Xyf#SvJ8juELrE`NkcqR=vIIrc*)+x5Tsh;zjg_fc|AN z5|uF5XIIzz1Xiu1#{w+a;Bf|;w6J!sS0+DIa{qW4ftBo1eh_i)l#5{X;DzT=fw3)M z8l&jLi8;=X((tjgT&0AV%|seRx4kpi;9$0W!n6KX{fUWix&j=c-eVB&$8Kv{kVd4vw9QIY?H!xi~jH(;#pbw`wh z!NnM%{{x?IATCGu)bawMdEtN%m^U<5+~3WN)R5&n`Yd{DKNQwS(0Y++d-gnY#u<59 zd`3~j4a7!w(ou2^loydN?uH!Be&7lK5C^wU6mkNp34@5mRO2>q#sN{yP%1!?U2W<3 zcb$L7#|XKVKLPrq3OtT77Tf_7_YZEfamr{_DRbyfs(wGtFNAG)lFQlCWpEmE#f2tU zcg|=sWqZh`Zp#1^FA(5Vq?bj`?v=HlmS8T8J990XlqS=~<~*aj&TJI{0i^AWZOd-# z>G_PDOJ}!%r}CfSa~q%eTR%8>`qa#ATZ90yuf6u{tfj+~_hug%R5?V$BI`@N`jB)` z9Qaw$l2Y_2lJg)_)jrkB0Zh}T5oqHaKzc1wlj&552GNUKB}V-f+Q@ttr`3wA{huqF z%`K*8J?XC3HaF|Tx=3`5)e>?53|;q&(a*ev@^f)@P zHf*FDy!N6cVC-g8j$TLw?ssZzMT_3jZ8ceo7OT03yen`A`mGY9$dtELFqoSv7>o>N z8$Jk4E|WjzRpuIHM0GFZaF4Nic_?J;Z6C+KOwO{pVluNQ13mlUwFWHDKrkVl+Sgc<@e@;?V(arz_@krL(Mgp)D9tLkwk;5JIwrE1>_ zkGOuRUknWWqr+|Z+J8I^=WyaEZqLR1lGcJSfAF@;)Zd({@u@nL4l<>s?e6c5FaTF9fA(8+P2#M517z)+Gmi}#y+CVi zHyTV`tUPdnTj`$f;TmyHyqf&EeO?Dyl7*4n|CVA-KZv1J4Y1-GK}H2zPi-HjqxK~? z?g>k*R&nU$eQtqN&b3PQ94sP^;h*ArXAt6y8H@D-6XHZbFv>Ji1V+!{OGvn6_{WO} zE#MQC=UPE4D&LL$tZHq~^S9xQJ$y^TKQVbreg)<+b^&>dWRE0Wyz4wv4q1|eVgk)XXz6N8HpI$^rb>PjjpWxrEdSwnPf(9(En#@kl}$;`3_ zcW=RBY24Q0>F=g%se{~37m{Gd`CS6jSer1;3mEs^I0{|>5LtP#FXUIFr0PDwE0Yir z6Rd98K%->}4w9!qi-2R~lVEN6V-^XL_=|55_+nGz+D8=5yg!|Kj^TgAOu~}lq{W5Znuw1+!*sjenID= z&c#LMrqWL4ywc9Ju5AP4*r-LGMP{eHJ7@7(3cbX9TnTglk$iC*bkyYm1R_=CG>`I% zbWfR8Y1>A5$OK1z-^UHy%%Y zBfqik2d!dxJXnSrt3`j620jc9n2TXDd>V!v<*~dRtK4zAS4+B5EhP{A$`6AoTap*O zRGPZ6CJv6;GMGHxtf2-GUIREtq23|eKKiJO+)S6k$IL`aZ~wNtdvQE`wu3o4VaSD=3~2S;CzIQVc^-84hqFtxN%Fr_r55#ojBjtEXWcp;6{x;jl(FeROuw!T|-=(AGO3wD`O9 zoQ~CGjIeC>FCG@WFot9ydp`&!^JPNK5q4em*5czQVG%%bI==Ia=>*i6lU&t~GgQLQ zgrCCviV!)2?rmaZrN5s`SV)-sCOzrSL6ynapMt5ZE$ZcD?87Q$L&MeTK`|gDODkU6ODl=5%*R>!c>Ae2^4iEq%a5P=mBS4TIF%pm z3SbaR77Kl$e(1zGWvEe0KCoCi&465njs-C}TZ>de$Mi$v$za}R{^Bvgqj0Usc{WCs zCyS}sm=ds(cXS!g@VyoGU$tToh+qi;dxmhgD(c0zeek=eLM!hWC`Y&ns~oRJDAhnM zzy3Lj*jH5`Dp+2Zx#B=Sk+Z3jH!Y{Ta9;DqzY4ABVdTG_0G>Q-c45oN^*mVD6^nAvY^HulaG^mM8W3P$0T z3nU87Gx_h(E8jKLP0JeOZmBwz|6$ju#m@z<#u+x5O`@!C)Sdb_$d%z3CB6_Mj`>UF z*tNx=n&D%cE%cl*X@CZ$0mj2)n^maWaZH0qG{~a$F7>lbYXV$w4f$ojUdUS;t=&Da zadC!!>lk0U%o}a4h;XpyK-3H=8fXDm&3~+%p>TPQ>6Eae#9!~ZDnf@EhVo@(U+M21Fg{FgTHrpp+O|TLX;4q6By{p zEql(|5r^biLGHSnddZ4O7bt6Ng#hjgcv>n1a7RFCHHa%Y6-Ec+B9GG9YDW>UfF30{ zAA97UMP9aP6-~i{Hz64ww_o>Y^qbHT1<3C!e&!pY|--diK(0e zpxPNKZ4E3L3Ckm^7kkAGhE#j2HD+n=XkoTZTI(7itzX9s0`O7nE$^vxA&1j#s($V$ zR;&RJ90u1MZEq;5%wosXC$NV(+_tcv?>}$=O;CWuhTLvT#RMfJj&pu6K|yM_adiyN zu_PmEsBMB$p>{*|#M=e>aBe=)(?7P7i|Dr7+S;6_-SvxKOpqjk=ZWc9JWr|wZ|>lo z0^`A7GZ(hfc!7D9-s`&Jiu4yehV~GYGv$GIZRDlwZnkC0*|i=m?2)g3f8iFuM~a0g z5)o4Ht32*TA_5Zhp$owg#dwv(`)kx9rXA~h{!e5qklWXT^FSU`s=jcV* z_j0+1$PW5Sj;!pGYShU(M$S4KA@2;3mgDJgGAG^A{wRI7^%?r^{zZ$|P$$`%`x9yY z*k~66E6ojj6%h-Ulm`ghZ&emZ1Da|dNTk{zW)sKa$PB@E{^Ux~=Kk^-$3Mfd(%m$% z)aQ%&Dyq#v(GMqJSP&X7WscJ+$CoHSMvB2J#p3Cm>JFH8${UhQ1Pz%K38Lv#X8aP5 z+#eT*^^GBUOde=hVxPI74tO~BT(-riNZMvD1BV)UZ0Ri8_|0!(iXqe`V@WUE4Oo|y zF#J{?=U{w+DTae!d(j?(bOe7o_=9Fd+eGFOa5@mi1f~@+5e#RUr*m%{T+3W1n{#!N zGqTZ(TJ7M_mao8<7xKe4i)7-uzZ~%BaLSU!_CAalBudA z7p|NJK05e}O(|eE)m+hI#L9XKa(`btPTB@~jhEbizx>727;q?E8s$U+a42mU?$9`9StQ^aBL!5tYEH^++;|&?_v~np=XQh~-Yv}UCCRN@;xY@{JUYsw z(g=MG!N^DfSCE5eYae;zjcqt6{NWgbZvAMc;&8*H5*iQA+-fe=*FRmcN@UJT*DY^i zlwAGnxmR5A;`P^`-y`x&8-&4lvD>1d-ZdA_ zrtfN{>O?}K5Ox%;>X45tB?DR7Mjoci$?eCs$Er4Zhq#Pj<30{#*1qYm-ro%jhij01 zKO0u?IMwWU&+)xK!Z&c=!N2w}l0?~43W`lUt)Uc!y$!GcycSWV0ACC+Lx`kOC&IwN z(1PU#%2028^UXH_@x<0F0g+<74rVZmP%?&Eq=P?f2H_Gc$S6`3a6x!&FiacDr z1fPC-eDVMS3h393El|)Oh2M`0jSh#v=y0(|uvO7dAqI{L ztzhtjS@6}&(KXNyz%a1p;vUVJI6fz@`s7td@%&t|(qQoad&2HFRF@kU7o8T$W>2;1 znN$MGddN{yMBR$U0|2g9d_bUg^{YLQM2lH)+Ym0DO3e6L zA~%w6v(4a^>zNK+^h}V2FZap(D9tZ-(JEev3|$*@*2G@zOrvvn&|$R${cA;jBoFpB zuhAFt7Z%7~dVs0xSeP@&++uaCKebz{U>Jo@CSWx6URb?)SiSF$6`>PXuUJ{Vr2vEO zfR(!jXxPWLdbRDkaP{!QtZG8X$t=i;fjgFO2{YiF+U&Lz!CgCHuw}AA9Vv-xCl0l_bWh z_3{K*<9D^m{Yf8dmAJwlG79!iHwbUKsgc~NR3VbEjAbZ$@`_;_>1;GM`XynhuU?c=_qM`>P84h9i`U1&x7!h0 zi{vqA>dd7_^pJXBv`sfbRJd2+UE<;zR{6#LRYYA`;M1Fp?%^T3%?7@GZ%8sbPfG#N z3R;+wtSI2x=?J}*Sm+GIYEVfNu&4q!Q52V>UVV^T>UffSDi+ z$4@J&P1=N?A*Zie_l7FC#Eqr+%khBopj&X|D929Wvu=p6fgol>`4cwBH|;+dzs0H zYb^$tb1N{*&xYt59v!J7BarLH-&D{^jQ3#14BSYEONfqJ*#e*@&!v5#sB#0^;ap10 z^mZIMJld-;=nHXyg7bAsrQFt>(&yJ;jEyw`${}sQ0|1KKUpj-g$2dVLZ!%!=Aczdi z;@c4h;X@C=$HZV(wW{rgX*pFBXnURVU~Apm5wsiU>}z8RGi05c*Cdfy%P~Lhz7rBb zfT}lx{`$%*i}ZIM`aL_~)L^Z}A#6CsWAx1!a$20zW-=YeR<(GB z9eVo={o$Q~1I7(+^4@4zg}R{q3&Ex+Pl&45+94PvqS1gg!rv!yS>nKuMlK7FRhGT& z%4ZvYCE+>urOeFQ$7ii86I(wXsTsU)cy%J=HBip3Idy+D@s^gLqG{?AzQ(@RJ?XX2eq!JUQ%aLo? z;Klg`oX!KxD|v&V9Z-0l&l{7X%m^C1>eYj#LVTvIWl9*Up+`i4Mo&zP?Anv3Hh-_l&jXSvl*4Ns<$!yNtxC5(j;p+bcgg zZ(p4iYW3pIMa)MZ{Y0URgns%MXOeHdeN<0>?KtI;T>x;M{`htm{ogNbJ;vprll^Sf z9#Dol(a#o1xm7<~rY^t`xLS|Rg)fMgOIzx`T|-fTPJcX2q|@>LA#&+k?%VY&6* z1!g&911S8ff}-%okTA4?D7S9CXUmojy56dB&lq;vY=cvoA4*c&wxvMJ5Z$;zSdb|eZ4b|xt>!CY4iJ+WXP=sI75I9SAJg*(I4S;^%y$KxCrq1v@Y4>3IhCHKQOg`WF3*Je+El2INigW+gMd7tl$$Mj^FmRdE}U zh^_Tfhz1fXWTG#o6s@zPcsoaj_Z01`vaH@H$t|Y&xVd*Y024|7aQAw2zRWPr(y!rj zJ#&9)7K!!tZs|+kxK^lCaVz$n*JaJ2_2vC}m5VL1_Gdc{Xnk1+)|Y+yHf{HAwW=Ys zE(TNT#uKfA{;0;P5rQC))tDo6Co#95p36d-t%FO+yneUjW)ru3dtRZCfj(6ggs>n1 zCvG`u;c2QFSH!`RSQI|DL$zps0y4Zr%@-*QP4lN(EL0HAUGV^GpyVZJQS4^mp*uox=N?xl~H;2|m!6(SpmQ>R#$#Y!; z>AqB7Cw&7ZBZ917*13I?}j&| zF;=5f#N|d!wgpgOFK3myn>_+c*Eh1%(8b*TD=YXz3zS}2nIy1D=&zsU0M{FJb4*VI z^w+=Q|6<;++}w`%XaIi7cR3GhoqdpmK3F!?@-B37jVt&rN3&_uZ5ubXg1?gihL1LL zxywmyKNSSUY-HmG*yHvu9u>U7SJ1T_O=rUyeFgwV`=;Co9v%;)rFhMA`pX}6tp$R3 zSzgCqVH6-e63R2Y{cB`J^EEmAkuMYVSG95YS^@6Rm`cr?L|(mVa(R{FEmg*WhG&{o zR`3ZlFXm08g?xEMV9akLr-MvmR4R)Z+U;GsfLBWYlvO~KwAaBY6)cgt6#|XdA@X9B zbe(Dl)Fl=u!mS1}JFW4<5i552?r3++S(Oo6A_xn!JG2T1n)$$9& z-^Q>opuONx;7L4^TCc~%{acpu!o`7;>@oob30u$tSLMOrVjnPx#zk5@oteKo@PHXN zgu(u<+zr4LRCN*nI~bTSRNuTRfK`So@7%YKnew0i+{*_f|2mN%pg5r4#*t_OQpqF= zi-ApqRXl}YMYG%>hzJb}qhJ$|AOhbjue?IPAf5CjNP8-eZ}ftIR2Jbhl2%qOq$lJ# zo!=>fdnD+S&LnLdeL2^~nA%#P>WsxSw513kW&yB&@g;oBXjUYWi!>Z77l;K61JPzg zB!r{KESGpVr30Ar8**Y5=kU2WxnBl_sno9#dqXY&z2z`v?Q839*MstZ3xmMmw-1V5ZW6d*9_C@)~~;1?b>z-n9#VV4chc}z(2-Ufh4zUfBoy;(>L2 zy3*8fHzQ^KU&w!#CxCoc9^!Rjx`5b@2sRu$Hepz31yc%x2;QEhQRv;`?5E@ox`6B| z2&Gz;Sjuol2_sRPH4eW)D*A1E`}VlfW)P(zHIM$Y*4 zidyqLxp4Dl{zBN*taD8paF`D}Pxfd$(;bjWY?6f*yOrK0)$@dTGMD=fegB1J-90k+ zFBg1@-iu!&oa&qOU8Q@d$D#of`uUty*`jvH$?JFA(EPt915E4CtB>?l_Fhwv zceaXj25}|{IRfYp;DVv-f9((O%iLe{L@|5zg|lb3&`0QJb7tE)vst1`ES>rTy52yV z*lo|{ShY&nb}wLRygxwM5DLVyGS6b~R~SMa$sfP~^}qvwRF`7}R8y=_%AwMstD+<; zTLzr1C6H0!X2Sn9#B5RYm+kp&ZtgfSNKm`Xa_*y9_z zI;p6Z2h4@poDEs<<`y>A99SeN z$v?X_B`Rql@9#qT7zR^Lm|#4vDo-#h5HACf(#ySU^BOQ09z}EEThLtibmq*76O6NU zAYiu}?E^zPqi6bn&1xH(0XS+9@SAJCZa2FwQ9SUOV!>|Gt8q8I?L@GT7hi4$A~M#;Z( z^zVxB`V~H%f7J#iMf(dRRVZC%azN~v!jHrmjybt-@cn$jIRqVp6Y675<`T0`7jtjP zsn8qvk<&wh#{?%-$b$ynjv!uh8zU?So4Aad;=BmyN_ZLK=A5(^alp*sRIbb$pvSKk zV1n8V(CVK&(urIfzF~I8VrRwU;Mw{D&6Az>}J+vmKd#a0sU<6-o{vLSOLSTW{9s7%S<{pP!I7zjUvnZMi^Fw z8T|=i7*@p?LEzCxAN`oP=m+8`4676|=+GeW*PrkJ@!t)@s=ag$OdjV6Dyi4jmWoJrYZ>o7~U zJd@J6r`mNmld4-(o=G*XJY*(?-I~LCShuDFmx%`jH}Ll;hCkVPKb8)dI+Y# z=-pC|>O2kUY?Vcww4G8YOG1txe=SbDHp^fbY^}qO45eU_B8w|(w+!bL5c&&K4`0I1{Ic{abIrk* z92gV`rg?;@nBeZ+Pn~fFIce9f?$SjK`nshai*I?mynRcEGq8bG%w=sC@bYYXWTj7H zWL*nb`#dE)$VxwLc}(UpKw*CT=4z) zI{=B1=~Mt#)BuZBMah8h$zjC>Rh92TH0u2vSr_xKxh9-U&V$2Mn*e7N=y!~4r~ybY zupTR#K;(%PYlN>@PsB;DGy#C=^e$zn1=PKOg8IlGySq1&2Kr<8T!mO0xwxRz>$?+- zQe599k%{S}nJZ=tUe^A0litHcMXsHlogWeip0pMUU+K>CwOo`HG(rrO!Q&MR=*?Dm zGlWVo-UO|$JsASafZ@ewj_|@9#7YX6szp+J` zyKi4Sk(jEG2VlgHr=}S;MuQr*pUAeXNnsF11o{PG5gR4!TsSMW(ijvsL+$cl+7Ga& zC*}j;%haxEx%XNZY4I5K5^3_8)S;A37;pNj@d*FpT*JyRYnpOM(TjYE=Ei3@BIX#Mz&6T(^q z#>3_5FxIimxUjxjz*OX9aDW0fQDgs3?n4e;zFNB*QIN5s_OhOy2T%}UAwQrkLh>n9 zkv&>fQ*b2Cnk4n}%$FAxT3tso3?M!5E<3}P;d%8?@YK&6>Pl(SIS-5x-Caphqi?8a zYBCmwNJyrLn^MMheOOaU)+l$6m3hph15z~zkw2nsoZD}LnVPn1ke&(O^qF8jq3s-CtgsLzV{C?-%h zFLUdhC)8bbEW@fJB{3Eqt^tf#8yMmV1xT~1+N0?z5l<1ANMp0w1GIv23v>#=qWtxW zuMXBq2m~O<5vo}D?(iG*m{19R{l_LERb4T2U0>h-L&pmpv}7Qtk3RSYCB3Etrp`Pz0#tQGvCSUXW$h z)87yqeSq}P9UbJX8Y^->NMEo8+0~$RPaA@K695@uG&PoQQaVrL9T$XVellH$o5<)O>{{&Ia6}UsaV^)FeZ)wA51%{9 zO?27)Gn95&x6Jeep6n`eD_z{eh)VzYpuc}iKH(TQcrHB!NU;s3^yVWv%0Ol;ggt<_ z=qFOhj7_3ZzL7ta;J535pks7i~I#*}OD18`!IWJV6Z%()e50&zk z`8La8D!2pg!3qNry9JyCB05tO@~y5$)zA(bg~OrW@@kOk^RM{#AVUp)0z*K)0OAkj z^4b7QJXU}{aOWP{JUVq?=*hb>v+1zf31J0}r|Q%uVWYrA-;Sv) z;6P`rdYd)>^rt_ie5^V$V_OKA{yvB~__RHc+X&;`HS`y62<`E;l_3tq1Zivq zv%%6$mdZUd?JDO?`eO($_kgw!FgVy2kdK0?zx;-3gt(46w{Hu%^X<1==y#yF`jCE$ zESII$&If{>!o6x+yH3}&bF~L-y6p2e5rrx+!=chA(`21Ay&aHQSn`b}h$8Nv0X=VR@zu==Xt zD`G+@iT?^z4Gp=1Zk+$~pZ^@}v|*Wuu0K4IdeH~slwRPp~=`wsZJ%KH7h=ZE3&=DSH&k zYJq})>@qA=5GZ?y44I-#0Z~y=;D-|`BB0#E|9Q{3H%Z$Rl|O}Rn#sqUcYMFk_Zfwr zo`TxmX<(#`wj-o&?(fOT8hgCl7u&bzW3iqCP=%cjKm72Y505JBiNd=(F89rkYaHUF z)H*xKviv!^B=df2>)K*5@l{Q&w0q6ef?nyC8+x`Zt1~w>S`xOFX0xk*1oYFX15ReR zJy1R_Stk;!g9?$z-C1DHs+_D7k%e={Y`WpgI>l+?MTHZQg)_DOVVB-D)u^aj#LGh^ zF~CCMwdhQo6?yk~Dp3%HY#$%HJrAYq#91wMX}^UQwSr@3Bi+t;3E(NsoTt?h9tF@C z3h`BZ@#ur09AG*^LEfwIxcG5C)&?ateoNI6ErZE#$a7uX4?CBWny+e_D6BWHvGJ5* z@z``QkNz>^Iy%jS8m!4jEWDYn~1CYw=Q>*T&HT9b-4Wt6P%H#9UDTacX2ZDiQ; z7u+WoUyQD2hDO<791{s&BZzTYxu;bb%0#E*!@+hS(U7<|_>V5j$DuM0}jV}S6T3@z#TNNl*S=6gJ!gTiw- zyZK}FpsKeT)?IzDbTMGt<2VM!OTDIqcOWk1iNs&~%>Vlx&p-3C_U~WQ+PX23-PQ_d zE;2eWC$4VDxur&#Jss&`y+My8#5%oB89BF6X0j;ba+Ci2b_E(AY6;fV;gh#W&7nN> zHabbZ6i{49r}E-PkoAeZ%1J?3;FO4oHj^d12r0PuZb}uU+id1(&Y>?l(FW z0B1PqsUU}FTnW+m_^CjtJ}*{G9}X<7CgK&8%C{Yt`=w}|zFB!S`I83Z%d>^}I|By< z1$@Wp=>?vu1$ugcA29IzbcDC?FeMtapuiWRJfb{*^H9_Ao6bBlmP`&)wtB(@wmJ_0 zMu7L$Nv(70HD)Hx80N+yc}$7Kp?mMW_XFbM-jgRJdXqY-G8;OYd5VTp=}Y*SOl#{- zWVjqlP-Abi(#VFlues(DrLtC*oL*$jim7uIQ*G1MoKTX7;&m#iTI60jboNp6+^^DP z03zo;+k52MVv$lMQMnZ|Z$M#<>LM|V#;9dJD_)2Vj+rQ>tdGHij&@jjbQ+Z51xQC* z2!j2ZS{dR3bsIO{vVMIlx3%8npEd>XAede+$r0C;Q#dGPz5dHzGSiCOjcqTqkx#n* zKqOcF_NuhXBQFy1^A~U2-tQplu-Y?v<%tj^`njJ~;t8LUykis7HW}x-3fGa}yO3MWLcq(Hd>*48N z6AFs|Pvnd2r_A*xMpQ1JOYx8H)z`oICMj*a<(+pf7*sn{!&=u@{S1)-xmLR^hVC#? z%0rzRwN9$gY1#5DDrEkYdVVju;RaAhmH>$~LH!Kq3k=s63NK5$40>&#nD!gKbRv_U%odK6dW8O`rXyVXoIdx78{eS<$3X z%NfET#u#S)5_xLjz@^_R7D8zncf)*VoRRB9Wk+MDtKI>tP^k-3yfabVQSX4tfsIHV z`XDDfl5q{lxZ^2kxVXl#-73L5jgwY%lhtg8miGrEAxuZFxurKO(rDQ9bO+hO9aa0U zfBg%Fsb_Pitn2iyY?Odyn_oB_Ip^-xDyMAizVl+2mysSO(x_vu1;=mimzWftr)`>P zEpNW;GHA+XX%YCAvq4j)wp*nID&hl=dP52UyE(?ZIxCZk3LIqjSRe?3y zG))?ZX{4ly7D1#}h8rWI0dw<~eg5|sFkN~8EYb-ZoP2OE~V+>R2W80BBntUM*Te~ed`)LU>vfM34QFOPwc=p_~0iq z+4H1hylM?lDFP>9a8*$(p=t-IVrQvz6ym(!!s|+MJ2#tqXVi!1hZ?rv zH&bZxGs&J&BD*HXM|b+D@Xe`}9hUNa0k8O@2p1!K-^F7BgOP#kzIe#$CJe z+3X-ySm&%%VNKaqah(e)2s_MpOiYR~EJ?}4aH0@}pMU;&u&q#^OL7u7Rag&ntLq!X za*vvhgKkdP(~#gN8L{kH?pMoTVJx0U>|}1|)W&DIN76?gyFM;es+s2Vceatg{D%AC ztE)O@DNN$wVFx+(Lo)AG?p`v&{UdW5mc({pNJJ4AK0_N02?39((M?7hnGMum9fJ z>3#LpUAsPg>#ZxV+^bgCS>~NKjhasn9XDz?SKoR>QR!sc7PcG8AAUQ=uH^WR)4Pbd zmAv%jcSIYxH{0)Q=YG=u2zLijo%X;<0h$8uTfcjAdiq5hynsS#w_Z1&-0|%>xtd_q zay#bgRfL!(4o2W4U(FjF2K!MkTBc9x6398nP-5BvQ6P*qRKk`U8=o_q3ZiX%AK8?h!6AisSiEGJ=5Cic;}rPZzQ5NnJryM z@78QWb6=-guPY$SO6pFqy0UfOzI}f{tl%Ge&p$trNDN}Iu1lCPB7*CIq&BSgN$Vw^ zBkD0CiZP~HQHeA`B%=w|Xi=q9Hd9YQ6-)BptOuobmleqA5A`pe%rymFaX6$bf1M>YcpfmW$0EoRH(0=SS9bPmK@c#*tylW)U19|34C+$FH_3 z(Tx1LXilozm5D`+v;4lEyv8*^1GxV9*49hg+OCf2vTXs#GySdEKU#Z6!wS1RJlbbN zA`H+aa(b7$+-m)@9Qx zW;%gGdzWk}kSB|8xuf%ZPHRiC<e<-3t^VD$A=&*%gO)t^w-hr?v7#}AH4yez!LD>5$l ztnA_HAvoy?`Azx|pusOvn`9*^bD~>5`sf<+K@YdPi_93%2VgMn`?O8(k#(>hq8o${ zr$(<a*?bG{Z12Uha2gI>H*3P*ux<~+q z1(znMb}j6+bfuIj&0m?NEee2PBXwy))F%ku`S1(WVGu{~I=D1RV0W<`7A2UjG9N%j z)HbV)?EKFB`9!G?_BnLUVY$WLVz!xE!7r0dTUk)6lnkQ*fu9hORGwHgbnLR-C)Hyw z2RH0wie`J8)n@JB?$J9tttMMHDIL0v|BKZ`*=PpW2t>UHxRvm0z!MUD4*7>m?;3ZniqO_q35WL~h=thZ9+~S=o`MXNSsLmZGvmp78BXODu z&&MmPZLpQGR(*be=R@iJVo%Ren7Ca5QsT^585=njij$H845;TRjS@ z#|VAP(}OF6C%O(OJ8gXUlroJgNzt@GvLPHZ)hXmShX-A*01)S`RRS?ioN@c_AMDx{ z2Sx;-&zQGC@~gq7zV4Z4p5aIn_x#wf$2deq8@P6Lmma;6vJ(-1akZnXZ zZ>b@EOh%++GwZG?wbKLyxq(P+cQUNFeYoC4tj)THIvAwLLJ`e3Trr?vxTpaGk4k`Q z45yngPzk`(!!Q~;k6gpu`a<)@R#8K-XlA#Z(*-dpjvbiQft@2}<*lc!J3;H|>$Dne z-Tl8UngS}NSEY{RxL3Lq2uhH8Jm%LB-f`Rd5( zyC86#JH|>dLl6aSyY04L5k2>jEQyj# zl~SAa9gV6WFZ1*!eI#=C-CMUZyLNe+n*L1H#!52CJt(8T#TRsU_k$B@Y)c?1#n&R& zKaetn{mP8O9|phU9H0#fu{*h@miM1(wv`{%`KGy`(6K40XHgKIMV0vg82>j?cEG7| zOaKSR5W_LCr>T5=55xSbn=CI!$RA2X)WN;n#rU~fm0ZXJLt>F8MA?w~_ieVOoXKNq zq-sBEOZvkKGI8*O>qjRfNOy$XLOwa|zj$zm0~v(Am2Z(zT42Z12glod(0LF(KK7WX z)knTsdr%mQ_R~BF$zKZ+d^zpGZaU?ZU_9P~%1#$GOKoz6NiVIhgMoWYWSLv9HjtQp zb`)~DgjnRd<(6B1Nuz6+q*!ZIBZg2*+VlC3i01A5&-dj{eTq!u_WkIptH=|LGL<@L zBMPa`E|GCtI+ZqMUT#W!?|a7_!~Ly8U7M+uyH&oVpIOl^YDDx?g;nf?Fo25roAC%A zQw3+ZHJ+JPS!A(a9#~W>2Iwn+XhXYs^UWJKHY5I5>xW*~;^-S@`pPQif)dyBG56Xh zOifRDN0Djf224&AcdCF=!Q7|{Pjjg}GnaB7w_NkIEPvc_S%p=S+_=I2R(U6L44$DE zHo`AfPH}<4N;@rTCEQ#|6B+?hyaM8@<9M+zk62KFTd?w?NAINb+yAs7C$HVd@rcT3 zm@gvR$FiuHEBpITp7pC4Z%(_A{E`cEA6|A@0>mmBVn>l-nF`su1?v2kWZmmhS}SaA zEUPeNLQ=Y)Y)FtjSe%-b93A45oc?YHD+sR2lFt35e^m2(Lk>{ z3~vTOHKumY7hpht6{@Y>0r zibyJ9XmbyY)~O9@k?$#-b6qpz76NgnT!e3BJ$_ZIrQNUAt4Z(*k(l)Kd2nmXBpQ!F z5sJrj?XI3F5wr{<{|oruzS&7j`TeubiltJ+YGs&0VOBa~mV_cO0F6pK3!++#m_^39 zaVW%6B1!E%_uTUV*plzdQq+b#jS+LHs0w9*EJn<@9u!}Eaa^f%&*z`_mr8dj!n0@i zl)jmB!n*L>nSO(R*1S`pY+*$5 z7U$F(E-mt3khi#SBdfIFzBI5FyNt0KRUNaVuFkVl81&K~z~To;WD@!V;5iucYp1L_ zuEjZx{s0;5F7g%+?66fj1uN16XnP1;6nkndLW*fhs-wIQKpT`SQ>j=KEThF!J9i9_v}9lFO-tUqNVp-!?gW_9^X^X*KS2GUD&1yP=uj2#Hex%_z3{c&=j5w$ zvb9_lv+;H_m8z9I_RKRx{NjsCN-BfCr2#1f-jrNJr1ag^D3~k$j2vk&Q!}=NBBzY~ zDdR{gbIJtweq>#vKDo5vo%$nN45_uz@*5Xi(2!0~RjVMwu(DQ+G0p5{PdxF&XM81* zg}Pjwhy6@{QC-&*VqMB$HuP{z=aMER&V{^6Lu6SDl}1`hu6q9Y7hc#*_V#kW>mhqe z_`@x6KvgDE2Ph9)4KuO@b_B(UHS~QX#bhloO1C=({T5H3-QgH~)7lft1-e~%`$&B* zH0))5|Fumg?DvLT`1XTb3n+v!Y5&rh?Z^U|euT1ZusD3UxgO@L55b|<3w$uiPr@h@ zVFZ(~aTEMg;Vp6nX#EfmQ_zPBFD8AqhkJTok2p{u(TEjCi$*$TsW=DWP#yo*qW z8wp~d8aVg^;rR{VC=y=5+~Ows_^e;(PApIKo`ff!!^PwcM!*iCQ`kP>dj; zDC(94RJBX%aKj-%Z4F_^U|pkcWB{fV7)`@FaV%2{mT2Vq99L|6kUK#%s%kqb4!&u4 zHTRq@zor&3Gl4~9hRCq`-03D7kkNPCoKCMXl{5y8>GVQ#!j9X{1s4DsK|@2=Ts5`0 z{Zg2)94@(}omKhm^Ra5E1SxZ|`rxY$n79m4f8fr;cTBoczJ5hif82pR zD{zZP$-ld}^E!8Sx@Oi%Aq=mda!=OTn$zWV*%s)@Pw)9xr70iy&N_xF_@qGd)$kJW1JlS+x=@0%gMGocDSE!496#*UR(hQOg{Ty{!YV& zs+s75;{%nOKZ1!Go+gC?Xj#C*_+tX~kjYng=Cs@q(0}0xBd(XHrP8Ney$dFN>XSX! zgPY8Q_>dU0;zv#HAi|siAB0b@Cy#J_C-?StkhGM0X+gVG?{mUrob`F-!tTi1XSKSp(uC_R#lX;BiTM;7chOvb;Wwt`cO=H6!94z=0ZVhT+v73&$9+76kH z^@jYcIs~whQG^V#T3FfmYthf<9IuKMkwYUKg~p0$LGR2)UswnVg-U8ClqT)Eto~WueU}gG-zhIag;CGA7TkF=|WjFVf9DrYguNqlvdX z(o*jc-dmY$>eg804f#TYTpJ81V3({exD?5jrYIYU>H=gccMtRLmciEY>&^G)nEjtU zW1W8P`Y=d?(!h#SxgxihlHo;dt(e&|D!3A?21X&ZG&MuZU;sv8_Ke#2tAk<`@pWj9 z))DoZH8-qU)yAC>!_{#htBG%pxQ|XYYefv~Dn%kggMV5xhJpcT6z)KUNCy@4`p=H# zF;Xj-vp`6_01tLI{HgASp6?+*kk8hidMwHn4U=V{gB;4v4&X?tS~8mS26xmF*&#N~yFPbZOYpvCfzR zuE#P3%ba}S-5 z?znB1Rt&g6cuy;D>ab#|8D;9FjpjfM0H z3%m)b*+xSI)3JJ~eO`ms1XRE{Cx&|`DUyWmy6diYiJAK|4En*Uh6gxo6_kL-sPSFW z|7q5qQs>oa$4Mt`wGOTBaQAe(BytH8Ueqw{_*w3dS?Sb{6va9n+tjU^8yv>`PQu6) zFhl}`ZZ$~_ak<^;RB4Sm=C7?>u#Fg}P1`ngY9sdqQ(K1a8Qfp)RpwXdTB-knJ-tTg zT3hYqdku~fl7TyPFk0~_yt7@^u2qM+mX}wdYaJP;{tIYZqo48O614x5*58apCFht&O^7nN()ANkuA+yk)S*h^=cI zoHk&UYbal+0n9#Xv7_J_4`III${j$o@veF4q~v+ru?Z*GH+8idL-X}iil zzwz6OBAq-A%72^^clov$ZzXgROV2wgxPHQ62HijHdTG@w{3N?g5}jIM)6>Z;EAeDtyD3I&@l0=4pG6uLFlr5?mK7UUSoNu{R8`MNqO*LKwMKf#Zu2 zO9R2%dygD7D+3zG!ZW9GuOyRVpEGNeBW5#hcr}+>n8`#xc=>U+-<3B;wONVM-fB@> z+D#^Flf`Cf)xcZQTCWS&k{k3*E9&6z>zhjk;_1Yw3L&mKb+}?OA!LRH0Oryxh>7$h z8mvkw7QzillLe@h3k!zchPVzz{PL(8v08u*iW+%9MZoMtg4YX{2<>|@Ji%$D&jN|h z^1~E*p5b$XQez_6ht={QOKAKkEA6~+XO5F=n48~!|7R^CF{_f}n$sq&xaRB)3WZXN zR1OJqQnRtOBy+0bd4~-0OHeZ;B+tEgR(rc7&6e1amg%j}8E*as(Q^AgIpd6QJU*;a z1n4nkVD$mHCa85uLsG|-I<<+ZXN<%3tc1iFvFF-rul?CqU&*5qtw|MEne^>hWiaJq zZ3=J9$DH2Lq0x!=zJJjatpQah(T3=y#mbcf7ykC9UvQtSd*@fHg%rR-&ZVu z-cH^=QTiY<0~RsGKmL*X-6`9)HUEQfO;pB(DGpyDvAzYh{aF5r`bUn74;z#4P>5~LRp+1K8FdDExO+|}fn-+Xjor>gb1)grB4wrq3m=w4+Y z9Te#dY%IkMQKwe&lGL6YZDX+`+oq-LQf_@x>C&dOzGVriEKS%W8k7ccRIDEf>Af;& zFt`(XtnIx4u~sYfwC2Oz&c3M;5#(R_wc*arzukDFF%J_rc$x&d8ZT4IgXSg&P7-Te z_0VUZea5{`11he{Am0?YH)EO-3)|?)G7W*wbr~+Xmc9d(ot`wE0ZNq|RnYi}d!$tf?^I zwMZR3gST0W$FFZdScEKp<+?7Wyq5{3*P5G-j>zpYYe%nDEB`U9Qa@HH59h!ydaP=% zUSaf@Vj4-G;IHf|zsI=B*D*gR&!qm!XAR^pUxnn5MLV|sFZRm%PV-O_&h2ch(myKPFn1lDoUUL%&_dE_tkw;!*vvnSq_;D(yTYPGbPRjVv; zGkL>KPUg-z-eFCuU8+RbY0GF_>dYH!iEZOX?!&d@tY)cFqmbKmidq9<#YVS`l}lJy zMUmC98vqHW)Ahf3`X17#%ZzxD9%bv~-mJB^TI-ChV!f?sF?A&>7WYZK!JX8b|dCscw-F9SE^nwnc{_SM{9^H^o|Rj!rl zV;>9qok;GXM+Bc`!mp$8LWM4X3T_A8!B{o(jV6>7;UB+(s{Bq~kBEzmE@CD|6x=^o zlef6~j*Bje`dqC#zpj;-o6QjWwW-3f-AZM|G-X+%4EaL~di2X~z4i4r$BYy$ev(7v zG@$n8-Vj`*&2>IGcV$Ue7d1-FCb_5eV{_M>G`xVbNAy_BU!HbaFq0XC!5PK+EPNtF zwn7G7nb2A(8FXO^r8U~E$fJ)w`ZrR`{dxfZ{Xz(<3ofk&|fk@`4<)!eVdlSDu~* zCRFm12ig~w7;_=-HRX-9<^osiboG?1ep_cRb26h{eBB8VrAy}9ymMNh=|m0e!da9x ziL<0)Yw4sY+IdI!fUkUy$v@cbperb}f?3pe)_R}JqYfW?@kkhGAQdP((vT>kA!q{o z`T?zX(4lt@S)hghadeRvj)X`i<{b$Iegbm_ZLV^3N=;4hjGie&Za5MSZRhT0mN0Tj z4CdQBG)NcN6mQhk?7`w1TNvYDFlrZ`xX6<~#+D0!d0bYNiwe)W ziWp>LV&gv3YnM-bMxG$lH&wEDh36`gwdTM<y$|>@@+O7j^?+jk}l1yTIXFT%ATQ+ZQs+g1?YJ0~W z&jm$VH!b!7mMJTTx}NR`scrqc3n8gh|0{sNbl}@nk-Dgr^kIGlDN!E7uQQ z5)|pF=MD&2k@W)C~rB;6e6eg$ox&^;1&MiiFyL4qdk>B^8OY z65@UQ@yEX)Iqs);M{hvT^flsYQ{UmRFvr$ql7o*q@o2 z*Og!E)mi{ z`4tEcpOTtymn~K~2dXzyRm~QH#kdKWfM}@!WguyDaKsI{38!N z^w3A7j{AiYiS{-m+S^ToEpSIfI)x$tIb37fnvH96>S*SX7!)E&)f@Tt4%dWcavqyTnF$$F?KSNrpF{bz!%} zAn!Ww^mX6!F4~l1wc@7ZRt3ym$t%~>0m!lo$4GF_)M^CxRRHE{aGxBrNuC53Uk%&a zHAGXLO~wH*Pr|;Ddo0b3P|r2D?A3ubZLoH`b-w8?lY7R@xJd_rKG+ZvxRcwQaxrl3 zl-&}aY9~tVGYtj@>T#t;E)^pqL}X@zX@{eJik(qtWDN$L!Y%{YDiPsxP?WR&xXm8! zvl4}Nh09w^X)x$igtJZF`YEjjRY0!J^=1QgBV9Q?G6L1{wth0?Yl^~mPi<)G4%O@1 zR)%DN);zP&?$Kza169639t3ZM5=l7c7Qph8!j3cs{z6`jk3MT6cZ(L<^hm;zLn(zL zsY08^JClw%zRBQ|ra6Fzhe<3g+jts;diJkpyfw;mxJ1;*id>}AL?b)yTPcRze(Byb zeBel*eB&aeL$++s>Gj-?g=wc&uwB8l(+MK(Sa7Zo0NSXtn?UD6JR}P`7Xm8DGrR!gK757l>r9D|HfGiBk+?G z3|nc-PMtt6Mx{&xvhJmIvM`CFb1M1|U#n24t)WenOEPZj}#Pz2|O5@i^jL* zhkW!~d;FMtze{%aa36Gq$O`T{`Z{`w#;NL7*&mCV6RMah?)S}%t7`{?Uo=>fss?o; z?w^xHrxE1-_S93iwkq|y#xNt3IOAYlEr0UK+p8auy68vB1D9M9%jISt5b43o!~ac# zmJSn|Rk37R6T>V#A+at?NyHfR+ZbhqFkXcphG?e{1#|FhDBP88U3;p>strt14?ZW5}-lMi=+{%X!|!MGD!1MuRr7U zPV3ghz|-`ir-_iei^ZMA;;$|vGRE>>7m)>!BQD_9Kp+}vAm{aRUv;g_WX{QC za7k1NENg1i^`!~<+JN6KFq??+yA+PY{lY)gjKN|!nHFndX0f@22uSu-BlW1=t)Knifi zc%Sn=7@N!o&Mg=s2!6g7f%|bjk!^Eq|K06}Dxq zGNYH~z`kCT8zeqI)It&hLv)e1R^sqDCElP)+bMB0EghCv6@Bwkmh$h2iTjHh)Q+dV z;=a5;>1)$w6oLBB881Ah#iG?Gceq%QR;KoKI|7bB0V_SPiE)?zfY)^h2$)4u{rzVS z=C2U2(i2OLPJb!Tbyo*!sczQwSevO{*(s+{bbY2~8bzmx)~(CXD7qsY%o&9zCCPQQ zk&WH?r$^PSJP>4+;?Ahb=OU?*Q>EC}2qVg&vZZ}r(RcfQz72h+CeRd1jr`+1f{p3GkpBqI%cUq6uRMTLrOz59RkwuB3 zHkhqbF{_{}q8H<-6_fQ{JP>&o*2!}9X#|1r(q9}M<3Y9rdlu0PR{{@&K$ zmS%}w&o-}qArYDr3RoL+Z>0Qjr&6p{Yr}S>N5`^yk6dk(%N3Yq);Y75jy^AIS9-hJ z3pxAX+!+2Io!MW0774bA#E4o|tBaXn1feh+B=#_Z(ds1DnY=iP7-v#(O;Rj!@7c5G zO>hi9XA%;`fu}$P=x(HO;1J1!3h>9QEzMH_PCj|7b$D%;ySG=M0xXG6-#VM80_bLU zi;>Mz8qzEXOl=dW01~B9Cbhs5#*mOZJZ_cFs3p5&!O;<4)<1nF+13%!bsQC@m{DL^ zYbr2k4;eCfwbQ?J^OhAu28$ka=K%N)tX5T;vtq^UT8qE8&7^S2^trY*hV} z3xzu?9D*Zm9On?&>|-2)n|{&68ujAr6FbK_1Y!&gS_Tf}5SURJ-X(gTzsm&mw%|`e z$x#PahFdC30@Q_=x>m<56W&fFHy%(1@gh|{wQqg3hme<~Etj~V#jw2djP1x8$^wOP50DKOILTW`IEL~F3m*n-R#%=rAX zues(7tvY7R@`P!tMY^q96K`!mr5I|iBLVUer)SAm9C^E|>v&S&euCEyDB!0An=id} z7Bl^(ON*qrPYsD(91=T!UM`n%UuHdxnkH4Ah|<9xLtfv_#F3%|O%GgCM@@>urYLDz zPlS=hQOwTPR?KtPh7dFlEWx%0_2aSdwV+PQ_97=QGWV6=|4FH|zO60EecnyLtt*Hm zVj!`fINV4MQS-qAL?S!dWAAj-I(tdL=^AwT+{3u^>M>anLd{tmWj>z&9D^`Ih>4$x z_*KDqZ@gpVi%a@I=={FY<%@WBVICAmTDVl3Ncu(No(MraSm-7)`D#xo!81Rk*DO^o}0*IrcvHe%FLR1NYoL5u)aa!ncn~|8l*OJ;()x9jL47S$bRZ9 z#wKZ;3l1AYPcxMGklHBx$pEvjY!$g$TeWhr@uya|mt z`5R}jQ_{`5LqjLFVfNl3)=6oM4qi9#@pZ8d3_=@KwhKCx7IC-O#JRswRXVvApZTn{ z{6afpYvmpX&+8Mt0kmg*g1fW3`&OR6%d< z#tHmFrJE2iom9mKigJ#rbB*AnEKDCLszbvjDvxc#K1FsVI%&F3MHN6tcy=(XsXV)H zR8@?hME(;e*du&V)`Tu;K> zJH7Qs6%Cm+ak4%coEZpPa~bZAdUrt`Q|Gt~F1@rao1LeD)%sXarY8;xPEzVv8q=9b zk})ny0WZypMYYe31!ZPgk1u0#>ifH>l1VN^Uk;mlk4VEsEIqf^TRwM)_@ z5m6ykQ$0MYcwN=|(0aAEbK5e<9Je_pg>zK%`4^Y|!M#yPrkb-7`4`HlF@4ujmI zvJNlFF|#$cHoMkZ+O+Mhx8CJ$w>xo|sC@9RQe)dYaK=B5a#iqOq1)b#qBVp~FHm`= z@ycpyr!N$*$Ol@5wL{wvepZFIIM#W*RRCeW@giYq>xxQuy!5Quzf*{Z%}We6V@7Y+&zY!lD*0z5*l>SPd z?Y7cfXJFLkw2t0ToY^XhbJNHRZ8I*KJNFfw-7Zod!-FOWnzZ4C*lLSCih2wUctO)@ zOr|ILRB1xf2VE|E?=bVqL_yOTa|(@k!Ee)6jwH?>VFy5ImHo){bn=) zI;lf$G!1k}3KDX1r+r468poxE6mY`%-Y>hXi_e_{!Y6y;jn~!RajeqDo_Ke1dsCC9 z*$6L3V{|bBkDn=kx^n=1=hA`9MN0r+%s*#cyS-G~9_qMTNJn=+a!@+@!#YquyM6Fv zu;nz&j|ye-U8^~7a+sR-Df}Z2wR2j7EIP*{Mh87Y6gP4EiS{P#)bn7?pqE6qx-dPM zfA#_|yaJ`Q7mY4H2Zez;@ZF6b?hW#Nvny*fnp?R3*liQ~QcZ4F09LckLGEV(XPY@< zEQ+d}9E-roF;qD@n?Uo-8RTY(E=K!O8khWJ<(i<7lO1&5M%?N%D-p@Nc%I&^HFwoK zSo3&A%>8=JZ-uLZuiS7z)0r}uQM~%_;OZ?~0FY6w(s6^Z)Z7FOYo)eB?OpY=zzASc zi~b4LOk*%sg)WZOG1A4rf!-sR;Qy zy`5a!q0s5FA);g*by9GUH1(m?Io86)=Gm@jlk4^Q2nLR>7$yOyMuSuP?QvWG$hJJI z5!>t%B}=esL=K18Y&VPQoojQ%TA(@Z4KYJL?wY+UE;TFSi)VbMR3@FR&PH34sT{rh zav;@%7_u94R+$|~l$mXen}YHb8(f=!f-23JmStoT>b*u4RIqrWjMKc-8Ay9v!=38- zrZB_}!CbAVzVYZLZr$yvDXG`UEiC}2U+0dsx!|Wkt+$8@n76AA1U@rsDmov!7CLU0 zQMqspz*gnskizZ8EX3>K?i*D|5t6K63?K(iO?F2$@D5UVG9={;^tPA~8KKR#=S8}@ z>29NAD0o8k+MUAjE<{q2F;d=7xH zo~hd~U4>LuMI$G|d29jv7b!HC&oZ~X_ul=~wntA~5B?zjZ-NanoVAkX`Hp4JK zjf9{oTnIl9MTAmPY*`S8KRDjP7f6yN67qCOp<_d_5UZ`@qq!p{d0iqb4TLmvQggPG zuGD$+M3SabTlxMXld~4=&pq9A-X%L)r8*O|Y+V{Tw7n|-!k`qS3@E3)e?=trp5MKB<~v1TvqpB}Dxrsk!} z!r(g*lq|s4gab)hA#u{@RVYl3pjE7EtAGP=H~z0*+rIqoDt*4@;eW98K&A!iAZGB5 z{Td*vr_;Elb2HJr&0;cyUFv{=$mN!hN^4c9wFJ2>QSZVPI9cS;74v%H!L`R0Kqk%~ zyK1FI8B+yn^>U9==dsJ5>h^CLh08;BY7@8Vl1rkPVNyGC8W2v`l=S)^{pd&kBuVa7 zRf^_{WC6+#mG~e_HzEjX?}}<1Y(iq6mr%iSUSwGS%Xv6lf7sRK$T~;oMj-dDn?3T5 zCYpC5gUFR@&>mY`zYZ+Lo=%aX<-!dcntxO0j;!9aa>Qt&3V%%)vMN@oZkw@ip4#i} zY%u|i)uxLB-ujt+R+UF-XdhvQ#a?G?-YhdnOxe6?R5fx_m&zlHELf8M+8zo?@q;c4 zFZM?u37u~O@!D8EU2pHOm~9<;WoVvPl)Au*P^g`r7{Dh4YIq2s==G!5jueBISmXy58}V?*W6iiPt6lx zH@{Nzi<*17`zOQTTp zI7H~T;+w!*rXdCgD+ysd0nG!wb}K(OKb~CyKn#2{T)Wh=sCrBV0yw7fYz27!-zxX9 zyR_Q8Ph9=vsr&CIif!AP-hcm@(@y)YMiugGo6ErIW8@g?+4iFr;7aLS(rNs>*4e77 z)fdUh5nI9HH#g1-*&A&hR6R2{Zn^Dy>Sn1y)+|*iPHQC+g<2`M8q_fxRb$l23^K%I zZfH^0*211&8Z|$nQiY7uwsc92^5UuiU8W#rCHOsX}A%XmM7lq-hK)KNQe%<@|MIV4176 z3CaH*VG`XdotvizWn~ZjiJON-6H*NLm8&|Dr2SWhi+(T}g zYhZ}B5EJl)$!7nHc&P^+f1OqH9bN$YZBG7qG050jW5>44_<6~TIfOR!U_{Y^4T1Y# zpaRj_b0@hZp-NGho#-6>rmrz{M}%G_ z_LmX|_(JOB*54)dc6izQ6k?q@p*;QvO{~czO{uCx1|}=}`BH2b6D$9GA(#VG$d{b>=R-rsQ%h95P9ZOI z2!@4C@@2ifyL)>t$>;HJ`L*raVV*Ri0ip|%D-d1GaV~|5_!9~ZE0YK-&}6h$V_&lx zV^|=!fo$;J28thv9rI%<0KQ_=f&?sWh*T6To-l7-{%P(*?gO%{rDc6{bB_D8wUv2q z$BrErTyVkXUwdaA*0F;6<+_Fps>pnwHn1Q_-H&l+VPDc*hNmhG9gGcu&Qq@e${^^N z(Clx7^lmF!{j;IGnPgwm3!`%52p!bnJn?X);G!CT0F+Y>q8*PHR!eVs!Bk|Jbl2gj z(t8v=?lvOMVA!K{w#+x^6 zXn`A^vUF0|1^e(nqpmnMuK;6s(+2LY^8bluaUbOGY$$-9hGfMx}cvr#YV?fhAKEniVQQ1c^L z380*%$QuP!8u6>7FZ_DPe&KlEWVPUOAN#jbRN%=$1KPmgs*eagi7+a|!-KqJyhXPZ zC_OJ!DF&*mLa0LyV_N=A_9*z7*E8PoyE4XH{`1}W{0aH|(Wy`lu80}WF?if^i3H}P zY7v8Ub=bfu7>P)t#(Wjmxk(I>icEU(?|O2$2w zFvaTBX=Nm)ZZ_4c+7$If*K5sLnzcSx`KFyanp0@)Fo)) zn*p=4o0qe|HyNb#d!ohwyfpobVp=?Iv27_0)RR8Y$_zJok38~7Y1G^2U`--x*48j$ zV5mQ`NFo!7#Dqwstj%#${K+rA$Z|Jnxi4I9F!t0wddRYhBf^?sP!rYEhM5l>_ExjU zQp#CFLr$|Xo$Z2?#XiO;cA%%Os9CtNxV@-OV7Aka3i1_P-WB@?Z|^ZA#l3>pCFEXiq;~05KmR#tS#d3JS!X_f4%|d(Jn-0*HbbYhB54fNTJDe3 z9DoIVFPsVZX6)X*T}uIfSQW`tHj8w7k2c<3FEt`=uDNbU7x_W?VX}90^z3QVnxQT* zZP<`|{Ra9!c1&JD)pHv?qi~yF2tSxb0cmt~NCvlg7>4W?Y9mAlAhdQ1bMYaQ*R99p zWIC-FqgUXt^zN)uCTY7sf9X}it?&z{DZ!L9xuHUto)BL~PgIJq3Y)zm58}^X;T*0` zud5R`7L`vP2=1gMe07%!lbC}+_Uc9#j(_x`{B?j``U<7qNy#5MR9}esolQMredGpi z*)2Ui7xwEzTI?uKr>Rb#)rGh}wBYHqv0g)yA;7l6UygjYm;0!Td;A+r+Fq`>UT;VX zTy~I8Fdw5KN1b$Ik2Oq zxatj)UA?p;qk9Uk|MAIG%V7~MjvMJd#H+d#st5Ksv_Kb!93O?*{ba|F8xow$I~b)?~X=FeInW8UnTm?O2s-fqX66Az>GT`&Yp| zvCjBG4i4Jt9%oUUQS$`eFQ@`P2?An-U^ru*6Gh5pQev5zkU}v=#EiQ937LD%K@P^RWhbokSrMeNoW*wK0Xs@ZBV`(=uYSx$ffn-;sQy*xlCyvy4)QJ>qHjH zl7JfaI}bzA|&{)+3XwPRq3HxTHjyW$T{mL0j5!Z5>MH#AGInyW{CffhcHB!+^n?FvaTwId~Rkc*00uFr%Y(lQ#i)x`(%<;}->v z13Y~k_58yHCWH^rv!YV!i})fBDH(LJ&}o~L^UyvO7TnQu`gNPAv2NPDz+9%m%G8O7=w zjtVHugzjirnr+-BNwJvC);p} zvgz_R@@_=m5QPUz9REjMEomJ_E9yw4yJUOB`H0 zE_y&~0vbpmf9tn4DI=?rfqp~U(9;C1!7*f*doV{`@07p%rHWCM|4E8R?)~6{y`|FJ z_zCcvIx0gtx)Y=eD!} zv)RW@OTYg<1fJzj?M%A-@`l#d&6({3r1SJVN%Y9|QV*zkN-0s)YQ#F9OX~30G0IY3 z+Xa`cnVod%KQcYYol$ki4hlhWLI5*V>h)6B{3wFr5*5lG4Pd_i{`>z(sbh*NWlvvf zgjHC8T7|{^-(D!}Syt0{iUu}Hy$tNEu zm5%J__-%W8jyti=Ym7w=9z#PcYY7k7C{4rM!u)s=6TioFfl)MyGi(*%Z!H}r(X2Ve zn2DdNUC?yB50M>ZX3-%OzjgPCXx7}JTDk)h&exzZJRVxw3*oU3!>n&~7Eiv_XlGf) zXX)7+th^%hEEeXFs2haI6N<*M57%B1t^&A9q9f5t9a8S?hpTI$Nj5)%i_h&FEhq9{GY}*xZB#+O))A0+S;2oxa0PW zKB%q@_gX`JO$L=mp-CYLQRP=iUG8Pty(&-^bG8%)I|iFZjvk^3=l6A@b}RxN02&*w z+!Mx$U3`T%58<6v;^ryXxR;=hpt>S{1CP5p;IbUwxnFOUH*OD($6Nsmgo=)y1H2;y zDnWV~&}*53we;`f-&LIw^2>r>2-S~-tj1s!kRSsvsdH97uUHA(ZOKKy5KZeVw{$a) z_YkR6+#_bC-+AmY?tP1^f52^U_xGK(cQ142o#e^Ad!@JEzA))ol$2WKsX1E%?zTp> zyZN@0Q@)iMd@Qs0q=2Wh2_I|h;6Ciubu;}1Z?Cc0&_#B|<6^J7$t1T(bt%)Yve`xH zbmA{>JQDP|JFFpdi5MImRttFXR@ff7tnK73P5UuP(68!Nue@Zz0`g4$#4Qccqqb(# zLkXFRCH1gbJSp9rzAD|ACT4Yf)G4({?cIz=TVHSR8>01VG^tr`sa0wp6nS*fm@#0A z$DTAmh}a#p6fJeuHXb*+3t=0x#t4~$!zcBdZ5?x*Sq7Mn25?Xc%*A|WI(9C-zv(}s zD&L{f_Tx?uRvSOQw8DW-eI4-dak%pz;SYJ*P99S1{qG0`?M|6GYI_+Zqukx}r67yJ zMgm$JCYN+_AD6ygD4Y<|*d-B(_0RR7X8V+mA@>oh61?B|dN5tv)4S(U(}ii5a_tvi z43J`$MoFXYs-cMVZ2vdqK_M2a5{fu9Ar$ci07wW$bgxSyjT^CPeAJzk*;e3U>E1kJ z+O;e9MUs0OkyHO*h8{jkW62ryrb5Wz$QpH~W^!6^xXU85TNUo9bL*PTb1zP?HaieveQIZR+z4JqL!Nul#mjhD8Hqq6DM^D&zPTi;(3jMvG^DTg7`|B zR@11m>2p8ic}`ZF(I>_q^4S05$iuj^Rn?J*DZYa%8iIQLnj3%pYclPqy?^)v_ZH(R z|NbxC-R1JL&p!Jl$#OrNb>4aDbh=NYuG6E_LP`#jc^jezuq{~cvKSsaW~~b$rB6%e zrlne)BBwCwhTGL4!K63sC+Btf%vq%-X>gXY|`ea`26 zPIvDiX%%@yZs^O>c~qiw9jv@t)b5Vc;l2^v1t~eI59s}4&<%}SxX8*7NI-=(t(%ZP z-D#Aip4=m&)QhZ~oNE~R_15s{fJ*~fLk;V6VOLMt+2ri$gIODbxzEh1^K-1BYCG^d z!B}#jmP=|h2fAQ=06Mj{j!0aM>@lnBDPL547eCJIv!=|YD291 z{ME10WTA96`IeMh22|JI!t1l-HtF=ky@mig!1$z6UD;nbIwt_TEYoUmz(Cx&DPaI{ zWy-oCSv&n2n{>PRWw9B!t9XMhf~Q}tc>2{${k2d%rAU>N$%gaqeDcYJ^qXfpJ2&R@ ziT|elVs;d4Hd|Nxco(XE)!^xKn4J96rEHdncvq^wMk1VU!8lSGKQJh-GHI~$I4HZ*eOFejd;gy#=*S1uBKC`El=GFPQG1f#PgZ73(0EYoQYo3WtpoZlAlhf>DyP2s4Bn*YM)Q8&$s8VvpG(SU= z!fT3f4zdvSR2YNLbR?rMAUCND^($Ss}H-38U9d-m+PVr1m};o+?G()SlHPCaJv1Le{+pfb72cA&vg z_s+JOV8r>CcfRujq$*}Pq1`D-64WjYV8o~DEvX`FFnxn;x&imXvDQz37~@nMDv z4n?k8>ZPgzTq>-%j~p=VSoR#7=V~wq97TX)y3XF6I*LFIz9s#XoG#sFCpQkm-GexR z%hweCa!#f4Gm7b#F6hZ+O<}IUgvlwrmY6ARYO3x4&Tf1AB4n4!OI73{PPbic5tGN`WN| zTyvfjU=7Lp1b7eu>?J=Bax+pJalq6=HX-8P@Qh52MW*@~!u9ZDP4D0Ci7rVkMswi3^6og6gfAX;-d974Nq${6j|Te zxHe8{HO)(|Nm|=1K~wWxTqMYu=y0=EI@rrO+as{y!nGwtU5C0g0Rm>x&_zvxQ`4fc zHv+$#>ZinWV=XF?W<-_BvKq9|;_cSz7Y`h01)dY!5H-f-8=^Kd(;#oI(q6nFs#dym zgu&oQ+^_IR95)RH0}^ns27^({($AEo9p!~x@p13C`MzhKegE87f?fl_fhG(Xz#h5hdw3Qx=(@iBV6x?$Oh2-&5Yzc<3USl`BL z&8E1~YDzrExq588z4z_=GQfA#xV<}K7B6T98Z26JWY)Ick2LdfI}dyC0_?&6(?FUV zY6y&43LxW@7vNfDTEq}2eAMQ7N+p4H_+_#j{#~*hK3rCq6`1*G#Q>73Gz&eXK7z4UnF1Z@|2|ZUTWLmT}Q9WWUoJZSM^D^ zueW4ppyKw;Rkzym8Ec0v*Gc^~Wor=HIG4A_Sp600WwWP8H1G_sJ_I$NCy=qq$_k=$RDZ3nLUW%qgZ>A>a`9$ityhKlkbv0NajchmRKAbI124` zvERCED4?^xU-U|2FOj?;L%QXN)qS5Af{Q@H?PDFkyse7~BT zPU$)F6=^(}&#T;UTJYlBfkXS#u*Rb9{rKG#=`T9K00r*^5sSsmg+fAlPbv!@idD6U z?APCg#VD9LxMee{s99poBPQ5gu{rvTy2$c?5Ln@5Ky!lu%?-ZZuw2k$3Ctb!x=}O# z+gx@ZfWIyp1ij|ovo+V5-+GVqXm)}05Tr}@Kkik1Z!+?rXl#v5i!`k5bs@ehfJ5?c zz#zd|>C13a=-D~{KIaE>em>`Itek4-5@M){B{`B>2$v%1rUtg)-XoB2k`)^7LZO<7Za)K@e^ zq_LQ20R%Etdb=UmY-6P_UU(tdzdx>aUqv*k{)&eIO$V(xXLgyNR(oy&+V04RxAtdw zi_;Q1e3(FM#a?z&Zn6IlF34!%Xc?YPwHt?u=Aj%U#Za>0 zGc9o30fxmZp{dfe)Ar>+6YQX=Wr^?#SkAF?ZEKhQ#NBqR_BaAC&Tbf)SWZJXlKzOO^%g;TsU_O z;PEj$JT(4=QDC^nHf^pR)Bf6m$cw_K8pYV3oAX^b9Q?+dU%>I;cjmy= zoLXatQD!og!sm+gr1BUkYA#WDqTtB~sta~{)^?hB9xq$>&<;Pu8J1r3;zTVOB6Uax>+s{`&2n9^Jfo^DeyazOEjf6;?s@e`w|{s#djG zx**Ei)lC}fPT*RxdIk;xXmVo0VKfoXdWyt4>}rUuI*X2NhzcF3;#LrYPpGVmVS%1>s2E>~^S1hd*X3?uJ;m{nxk3%2dW)58mdKPuY2`B@-DQk%tLNe8=kb{;RHv zg9-zlP0u1F7dKdMf99EI-baZfIMilwi0K&;fcLfP-E@L>E{%(J*fzAUYzGQxlKG#f zpFY~xcV%B+cG=GtzrNsVWT-aaJh`b)Xl$TuRxT9OC7Qkc=4MOpHGPz?E$amR4XuaQ zSc1;jM6u!FQvB`}YM=%zy`>@I>@+qR@`fh+d0;^i;B^wQ97`LEnBK(6()mdzWRK?+12J!NSlbgiA17Hf%!r{21w zE0NY3)TvJU@WJ~Q8&_T%$IC8_7yLFTGzw9%iQHL~pOO1iKd47j6PA|p(jhJktdJ4T zo${rf1M)2B;}B8rg)ROEA*z0>7Db`Oou=HN5JjP?n=&bM7RTCB#lSZKJSrofXhk`) z%C=R^FF!9BZ{;wm{AsPAK#5WLJK$>&m6dp{JQn!zcx>%BXyy;F!X8gP_#l}m+Ar9N zt;3Gptt~KGj)4}_RVAIzPs8rC*TWK1m+0^X3_2bb;&f`0&lyNJd5w49a?7So){c&$ z7hW)zETsn8Y+)PnEp4VokOd8Y>-E>!lDXW#2Kk20v6!Vvo6tt9yRW~#IhzH=7+A=M z!MZ!1*_Yz1E2xT5LM#kmtTfG?2_~>pT^yRtmvw%Le~ykQqIm| zE|KRe^VVhZ=2JcF?r3|vvSu6{TId=E8Vi|OqZ$M1!UGRJsN(yi?{-OF>sMK-MshY> z&Dy#Zu4Yk@!sXDd>eOyLTcE7-@t^}Nc;>?4$JId)>x-yhxj@~xDa-Yo7jcDgtthhx zngtw2ZFykFj>Ny;g}=PCcW>gAPvI{R3Yr0|n4QIUEPG@dbd|M(Ye*b;93(wvPZuZi z%wx;=S~*qQ29g0fNDY`eYA@O0qX^4QXCz}fsgc}eP!D#%a1X5ZQswLngprx^mzsJ) z4!-#5g9qDTO{_*P0XhM)w<1jjAKSusSJc^COB1w)bWo}WfH351G&S}X7U(@W*wvKT zTZte={rS(2Ag_eOQS_w)19LN(r#W2T&B8gV;PDrFQ~}zO|X1Rad4$L+#I64UY-AL)!ip#oXmP}nQhgmD;$+8|IgHjJqIs0snCH9HHOPDiv(&QLePVu~5GA!jnw?*xAOl}|kJ7;uRYdU~c_ zQ`TU3H{hAIQ|8lwr_1Zd*lM8DLvy|X*uv{`-h?oYK0VF1G1X%!n1R2cnoxM5SO-q2 zoq(CA3JNS4(97|sz<0=>PtX2#crKLg?IV>8vj-+pzk#9v7BI5~7z6+3lP|veZX5Z9 zk9e?{gE2ZDr?s1U3w&cL3_?P|wjep1 z^4&&}p-~@8ct&R|nBA7Q?!R9Z%}9UCNk3{Qn_heEwHrb5XX_6|*4oVIRQU)W^pUq- zOYc8FiJFpaJ9f5_N569D5HV$%;R9{7WlUCceiv_TH|pVni)c$44W{(9vjANWp6F82 z$s*VLHz#dQ!NG(q90Xc%>b+<&NW0OurV0qAm*YZAzl-4mh>*z?_F* z!Qm-*NWTqdwO^m}AGK;@YTjGpzfDbgYLGajqk6kC^W!mURT!hD3f2=`i$vHHCd?=J zdCG9|1AmmV3I9+2sAgPD%}~bbJMj7}b+o#c1S^%x2Rm+D&pLIht~e`eDYT}dg|?k%^N3;su#+BgsD1R6Mg0SA7P zx`^~_nhCoT_Mpn%c29Hj{HCVn?>zi*QWi_w;;>ZFxL*3HEmXDyjRmz}%UTT9oYM$c znc0$aI9$DMk86<3Rl5UegT|y06E;EmG_u!8Kcdd_3Od|7Qa3RivhF#j5g~rKcmwk+B)5$Jr6&l z04IB3y~8;a(S|A(pCLboos<2?8*nIod>Vx>AX8K3EJDB*Uy$>#I>wofyru(v6&6+U z=e3RrnfdQf_UiB8b(Ffdx`ecjjO+%v%g;A03a{Qff_VGDw#6iC>z z{~aa@1#l8VB}K(NZM1hGV$!~8W<0PoFcpf z_1+oZHl@|ltNn&RbgE4PnXr_ zVaWLNpBwu7n~}KCjJHafh)((|@t28)*YkMPIOoN=TDwjss5xG%k?!wMTbv1-bv&-+ z;e?j1ze(?+TQ$xCY>u)KCUELp(F42mHjJxcTtO1Q1UWLkYTyfuqoqTp{ z*yRTTXk=A@39gK5eM6v~I2;!(DYMCvq3#oWomNmW9UL4~8DUOy^|!BHkqhYT7Wc#$ zBdCU#w;A*8Vq(%>0P1syy!*_#A&4ew=psoDM}NHT%KH%1?Z6FuG}tN^hV~S>_Le!sP+7WEg-i ze>BL#y?Me%^lEccm~Koo(#;98WG?Djo73Ug9YwthN)P8fIa7!&Fo8SUtu4Bwwpp4- zt*m~MGFAWBFgi*-TpekkUadAGr=Hq3L=n&`(%M8_#0G0cZidyWb!JXly@+?|2DO$~ z=d~;xaB_B=#+oepCW^&}&72rdum)9UmqQpFhf`fCfjY>7dOms*7|53=L5c61(jhV`Z`oV^p);lr{Q zjZS(I>JSuR{51hrThUNEV9zdu$-{-~`Xvy@V0Xyv}3RXMLbZ(*?cY%0RXd z0z5^j7;WjCbySxSDBJaL`BKtPIJ_f69=B^~7y`?RAgnQ_bg&!^@I%tz?s345EBSFh znRCN`efwiY)?`#?Z+!CY>Sua=>&2k9vBP7aS%B8qXb{eUG#Z>P2z)z0gYQY11dGbD zHKZEvyrYIF;*eVqVgTT;&PY(yVKB)}Gu>qFh(saN$A?;ksDd5_f0}4x#Vz#98c6C;5+m_UOKr6U#fNYDtHuyJYW#lu1<5Yq>|I@1rg5 zOiACjvK#jGhyvOIjiDkch-zoAo-_uaP+d0f@POOv?5n`6ILwAOBmoNY>b>(@jP5>% z#W?`M3OUA4!P~3km6;xKF${wL34fT3Gatbp@X$37tyFSupKc#j4pyA0`Zkz}(vo$s zs09Qef?7Kva-(!sBP#Te#tT&*pfI$Xsux81)tTN_7N@Ti3>VCqlIT)^OaGRqo-SAwR5G;kKh?2 zvS+y5gTp`tTp478t2*kQ0b>aCj6P}{o-hmjm~?cB$!b6?7ek9dML@1_;hlefP$Zv` ze)XGWjLpJK{Fv}yI&5j4o1}*;Jbo0=9+LU{cql>ESVmt!?BoQ#F2He|gN%lbNM@r$S59u<9jr`CRL zrJ@E)Il)qH`-XNcpVZBb)hspG4Dl<*1XP9*=`X|NlJ_4|6=#O0_50wWp$@`75oMR4 zwS}5XblC(sKAqeO5ONTOM$ux$C$QEk0fS~7V5*h!NwZ0hz-n_wtu+~HLdS#}4bEii zwHCqQ zJz=O`L!CUYucd|IJmU;Gvfxh10oh#sHJj_~y6TT6J+<%a#R#N7v0+s=pni zjX^h@s^@|}Hi+w}uf0}_|4>W8YHY2RvNIdc?-xa=rQnDMucFknwzOx>8dGHch|AZw z)6L0}@oUloV9t8a{InHznC!L^^(7H%DX4h6r0de>oVP2%7>%mJHAi}Yns~#&Zy+;= z;5~m)WtrB!GypV+!UGE@kI12x7(B{$e4OE>R6GFsDDN2R?$WiHQk`wWgc53{%*6za z--u1=Ggarw#unilPPdNDna3H1bQI3XK*lq zOn8C<+j03o$1~s+8r~p#MY(}!nP4Zc(*qSjr;!XLUA#5ll-S-W8c9jqlmZ!{9PMA- zZf}Ln_hyiyfk*}`Ecac##1IgBc)R5K^{?-~yQ#mQdRNlkP$G?xfXih&yKY~v0L}oN zg$Uk&DY&p})dpi}dpH!>9O7X@3lxH+0kBh(cV5EkDueDz54A!1VgB(WLa@uGclJzF ze>F(18?0UqPLTe`BlUHJ+Bt+cbP}04opALXR}dyIpr8{FP-L|L2@@JQd8;m(P-k&R zOJ>N`%hy?g(`2kaHaIE4N7?7WhaQCuXFmLCl9yf}*#Q_rfbO`Oqcnn`pogm3e!|keq*f(ZJpO452WpXAMk`EizQqqyNF(GEluYd2gTV4|#tJUl?IUViVt9bDh3 zB3&(<)kGIMc`aAjdflfVS~Fm((ke%-4b&f*EMA!n`+9jSm?$9t4>>dkh23kYBG|z$ zx_Ybo%$|X6r^DXe$1@<+%lMbYIp2tjcaOA-j*``A>w=t%gRpPPIoCBOG^Yh77>HPu zW$gp3MR(&8)*=uCZ%p~rpdSJ6BgXwuLZ!Tw%5$#Z6@dM;%)K zn1^>yxGfNXY>s}n)0{AS%}Ll{4$er_wc-^IMb$tN+{4-nD?5|v`b1s9CRp2d^zvBoyYfb8~0D5A~3J3_i~Cm3`qI~`p#XA zzR($=$$B+7;f78wWq`Fhv%N&QDn}~hera<%Wj^?w8xowwqG>t&(5?f~_?9zU+hg0d zgNgjGa{e@+l1eQ#v%lC53ciOwpy!^JEk0_GfngERE3CiDDrnag8!0SyB%M$O`MR!6 zdYd8-NOS8&D+&WH?FVoW&Ez&4vp$aXCgpw(n(p7t75zLk-QXCI(XnXNyB+J=v`TxC z(75`VEDc->m}w<0sgf|qr_I@-d&nAZX%Kb{`j%|Ws(C@vzI=qVhDW;12~&Cas=xnz zrm<|yCN!2@*$P3W^Il7pr#kNuJ9ggAWBQ9@?e+Y?fJ(?+c}=%5amE=dgXFJ{?o0N> zIfs*to_Tgtn}2-Rm-CI!eXSQVkq6AC-0grhIf!%#Io2UAyBegIcL102;#xT-ciB@# zs|v2EK}G^EI6=EH&7#v=aU}&|kv1JgnJv_fA;jn;N2Kjv8WLNV0xWIe2IfV1Ht*@m z7)ttdkp$#B+yHbCY}D)K#N&9-ED~A(b9&6it`LAI!5q{DP%ZQH??!mHF3*{-9~uIC zT3q^0gWI~MgAu3{;TOh5H%uj*{mo`5ytoGH%7G^aC?b7--rXO+sRy2Yx_H_3u&wov zP{YCrU(`2m3EZwl^yIY?)Xuj8dICngpieJA?F<8nWk5o=&{$nA1f zhSdn4aG{kQvX&P(o!(KjnrtO-DHmLYt*r&?=ft5pP!8iQm9x)9^_|nZYu1s6+cg5! z^fvq0fTt+0Ayc|$yUC+m_3VUY^QvpyoK;BKLA=|gwePJjAn zPVlkqNA4#Ndy;#0#C@?{dsMQ`e_SXQ$gOF#`DSoj#Q#x7sUBs~Z=vX@A!Z|X&&V+N z?a(lpjI%YwECn}qKwY;4?&$r;Qy|SY2HlYW5Eu?hl)~dw83Mzy9WI)>Or1mH zPxV`ecP~-H+-T8Rz2B69O;E-T3=Rg!&!s?sJRuDP;6m@cbq2#XJXSTGoY(3}fuWN7p?{5sT(9?B)<#&?wM)u*XWVt?DD3R-v(wh!;&AGjz zh-N|yV_Vy~|pT}dM#*90y6R>4#Fms7jnUnIYGFbRSsnw6%I|`7m zX5h}xEQVpxhXj^q18$(L;yrWIaMT6F6MMh}EufM41T>^dv4Ox1V#Nx)zX`5RfzWX8 ziTk4yI)Yq0oYWC;D1-2X3Sdz589?0_@&>sKL_I+hDp08eP*x~_08Z_xzkCRa3xiqY z-4+u*^(=I$yn*Hn@YIi_S-Tgwmwv}L=85uSzpPz;?Db0%=0*mt$&EMJW4ab?4Cb^$ z(xV0vmfrBSY&*ZiopN90lEFdhZRyR7{G8`Hi{!cv=?w?7VSm4V>N$s^uefLRW>a8% z$Zd01MyV&@LAMFD2Yq9J3vWybp@kl!cS(oYQG&jsOr1LT(~9)GE*LdeJb4@S?dr`U zyz_o|=RYSu{02PUFeh3+p)^nKj5gH|`NG-`;pi|^NX$^EDUeShG=++H>*c18+&+{L6VWgVRQ+ z+vNE%4qD{04eT+kQyMW8&xr)WTRoE*{MgESZHsSs(4F)Sje)B~fF}2>>?$1CW$Jzc zV#_G8x(jwQ4`Pr)loP0pvQ$VthpS)xPA$(HmkWJVf79VdmUJ5(J+BwU;@KIrKJO}5uLCrZtDi?Gy|mY$PDa%YC?Pl z1hOlE6;?|jvvVz`9Y~rjVNZwHX6tRH)RCj`1OS|;@B(M+@p!e$R6)3L3Yt4@f3G0Vl~F7kBVO^` z^;D7f!`#NvTRjIBnua`}B{6EDVHc1IukFwV$Kd4GL`rZJEP88^DjfR3(LCp%Q#XC{ z-hNZ{_I861YRnGCPnNo3W+XhO93CCR&OULre03Wz>-48q$->`3tH@IgV@#P>!DHe zW*tkyT$N`bS9R)@Tt$S%Enru`DJoISRa`^$reFWsRi@2hA5zjILG7zOqRCij0TEhn zn&p^_TL3DLYfRQJq%XZ;ggWD;g)^ZFD|^ytc}$ZVVxh^^!i+)AUd{qGxzxUa0clHi z@4jtuBnjlMfPu@+RW=aRa%!S)0+^rGQfsWOn?i1TPyefGUS#@s8w>91mf@xojk7m_ zfX~G!F|1U8GpssUY#ck9I8pSRExSPlD9aoIWgIOFrYx&6v-3PCnIuJAaJUE6vHav* z>GBZBP`*M2y1f>FeXNoW(AHppR`$Ov|_FCb0UB zX&gOKTvVXF)jYYjU;10`-2jm+8PtXJl?73L0cXEKrB$VS8;szqqDE^f8|}v9ZMbQF zFLDc@1Odv_BskbLt!YdXdm;{qJhgyTZmwrndCO&Ez`@aGbJ{1E(P z9G#ORg;b{dUP*GARg~BOA=KK|1m?gA?c*xv)j8;m@kr_y11jVk@K~-;m0U z1gb~rGsBEI8lW9c&JWK#xj;Vp0GH7&9S2Y9)LQRLvcX6!5IQvu>sTG)f)E0X!eAU_iLi}hp zo2AZ^UM=5z$4zBizbsyP-BlpoUQOL~h2Se#_4ac0VO?sa*XLXqr5hIeSpSkH0hD9} z&uEL$mb02|`P~+FVm$zpsB1&yv4~p3wXYlnFms498b_}_FM$fr<*%Gkp{iRUp*g`i z)A^w@6B=IFxfIrFP89k+q|?k=xq!9N6({#;R7ysxi6_AzDW6S=N zCNh#3BsW#0ADSobJQNrFoNvjdv&f;UEg06a8hx`Kt;_P%n{?rl^J0nphh#T<1Ptkr z-AoTO-49m9g1D|6P@P>B;)+c@%9Nk>z6RyQ_M2dfuS zXAM%6)?q}yNxGpEa5i%m24n@QHx3W4DG6q(ml&_jn}b{z6SzEW3PCyxN^`pmaZkww z<{W9do8%taGbaGO8ZNBW&SA`zB_3LHH} z$~X8YOivaN@X+UQ7ZHb0P}-|%6@k6}CZmZtxMDp{GO za7r2nAM)^u(GD;0?cZN~k3_n+EUP%-2CtLd(;T4%5AU2_eGocqgBo9#Hb$V zk+My}r2T_rxpZR&O)5HNliFb}Z?hSJ(P(UIbB4#g;<3BwNZ|A~4sSQ3 zqSmwue->DLvL2j9q@G4_JhqiPK6}Z8YjB$~rHsU)@?#<+U~*-cQ@$XNAR{=%C2Hw? z|GVl+2`Vr{@zAlg^zy|tu?A@BRkcC)S(EjeY;MNtjmMc;Wta7CVn;Dcf zwWNa^Yvr8)L)p8d#t_@g2CM&7iCi!r%6cxfbl}`fXkyToxAu>BW4`=h&CEDu^s1CztR|8wW6^lyn5|#1_m^~^uDv2bRO0@v|z$VHYLJ~ z76h`vMN4n#1D6ccYedDeGZWoTSO`B<(=4AA!TLW+boGI9&5Dy5k7DXkRh5KpU8Wgl zb0TG>=@hIF=MNcWR2gFfY3zBvWwV;hEg(k5?5$Awq)Py$^(c=qS|3?90oaVO2; zfZm;oQbrr2V$}w-I@;Z+_c?ji>C|?H$}@d%OO=_vxn4h1}f3C4D^ox)V~0@{HTSD3l}$nYzb66wU%remQp88 zgk~TIVxd@vQ>(ToTIhyY0iQ zppHELr0o+#IR-dG0`M`Xq$umC% z0|q!H+66A&4=(;C$huk>B_I(l1Geq0i{mgHf{xsp>PtB>hp1BkG$g#NJ@iYE_&= zt1^0RfmGN^yoj7)!1p0b?vQl8n{1J8_LFAmRg&vM`XaA&n8Y?G27GKgSV54A$Xng^W@pzAvT?u^yZ*=N8 z)f(wP`frzR8GP$gub$ZgbO%jmmu>jkm!Vja7pG1R%Lxd}L6pA=&Y6vXZr9MbUemI! zfo@pe#)am3b>8`LfaR$b(&;TCa7L!4 zbb1qBY)9T1l$@L^pszUM zX7YETaNzt7q2q#sV?uKK_Ki`Y>9ieZk%AT0Lmb`(P(O9lT@cU3*r4>yf&(hSbvdAD z`=NTm8xU|~vKN{Oe1~C4d1{!g@JMRziK{l)tJg2MG(wCORSFg`i@iTY-8GvtlJQCf zD&0q=p=}jYz6k6fHr*k9s^Dyoa$Q_w+xryDX?PpYMOuwx_H51t*%e&ecgH=chcGJ?hhH0nh(H7nYGCtP62nb9z(M}>&e@c#4zWs@TYp*DBW)q!0 zcYlE#a)-vpe18AfyiWk{grlr_U3LVnxh)!UQw;16W$X^Ik>_|u^X(7orWe-Tba>2O zchio#n|9REb8yoztXVwF2E4k6YN*Ow|{Q_@RY?QE=z ztdlXHPU(5~zKD*q6y*2kIyg#GX_vki|X~AhphiR_ZP}WMIDx-(!={?M*AIr&hbk zBNK*zQ085qqT=CRhQK^N|*Nsw=ZE_y1APjUwgYR-Z0=MwMmmy8MxZ*gNdvsuSd6IzCe*=k8tDkA%mpqudaByWExcu?Tlz;{ zh`RF5W~!+3beKhJy8N@);Y2feB3u1STPw7+%)Bu@9FnfJwJNo?e+1^8mt>)@bqdak z%K&_Hv#kt$ZQSTKwX0%$*Y3E^!$dafvb|wPw=-&JX};rG&>?IHGrT&UG>Z-4XSV`` z0jIv5z;LJO6)NMZOBUIMpw=|JW4ty0pb&lc5hCkE-=|L#_? zS_3cmZI*I?fZk+5R9Yf?wxd;PENDcY4bgGS< zFCFrbr1T=0=!V?|D6fDkn8sq+6X&!dHq@F|<_pNZHXj)n5HcF4D`j_`iu5MJ&#iL_ z`eZHv+dw_v-!Gap5B~MGMMkq8FegfE6kuUb%g?*@-7nrFJyH5j7u<+>Ox*lLFW@nn z(tXOvdTO1vM!`m=2Ye^2Botwvb{ex_v6$V}=nkLROh@FM!FHJr>YYd%fEx%LY)I8j zllH`xSWyP39s9(hmPt*=KRbP5~kTMoFVV7Xq~zt!6m%@pFbJ|yd7wOg2!si`-zSVWO$uXW)M7q z6%?wfsnM1$9Bv0rVoQZb4{L?`oW|%h<=`cg)n>8gkFU9=Ed6b~2gTE(r%m+sI@q=Q z`hXP(+b#+#u&{FlY!@BJT|0>t=NTL34ZB>ffickJIguTEq2#Kau>g(;(qtes98gCIt}mZ zcK96RbutRaN*L+C{r&wOa+S2lLv~2l2S^O`VTvFjfzIkM3++xA3AmJINb{Y!yv+N# zyhE)MxfEyM7bgJyYA4)Si{PMRw7n+^S`y7{pnBy450Ezp$sL_$9~|Nh!<7L4z;%Cn z^z?xeXELY<=laI4diw3^U4xz_upSg@aT^(}%gNGyAGOg@JzKOnso#Cr%4?eeVKB3+ zG6W6TtT5PtF2FI`!15T8PXuY<*mD|fafUCRpgB4=v`+b=eYOT^QY;T*1J>#g8vcLa z8hrMJ7haJ5LKaD1OtxQe?TC8ga}&p7P5(NZfW#ko;Jy3q8?1is8ro#lby*sav50T_ zlX4owg2^Gn`%QCVbJ}6e_Y~N1s1f93`9i$gq(Ukd{EZO}-<}U}rV|*Xwg7zMfT$Sk zsvp5$A>!=2t-Fxef9){0>01-z31$DcadDh)uuAfZH8{7m3CfG-~Xj-E*LQv z0%eDatv&L`ECAP+803{lnVfj`+7+ho+!2r8RTNW z^+0_C7&4T%PSU^%q#Y(I3qZ(Wmt1$C?EDeALVa}3GjqN(=N08X3uLG%jQ}M@*&s!! za?zB90)s%@DpMu}PY0|Os!;s$WZ#)VX>QQLQ62v!C0xoz{Qy$kA#4l1mz(FQ=P-8@4&&FE3U(VHjEM;9^^fIR%^YuyPJd7#|F~` zhjpTb(~+3AH)3#TTGaMJ18!h4UTRlgpJ>#4>gQLE8BBWEfQ8Zr<~y{OAG-4OyMA*- z`pX}l8PdAwzDM7JU5)jEf286vxd%s&ur3d$3Oj|u{FO0R`Jz2-goA!7YZJsq9m6rw zSMgs^w*(9$o6jzI792fNpjbhm3vkjiptHISTIyrR<=>N$RmN<-;SrA;cB26Ek@N55 zT8#nDQkfjc{A-^Pg=>S?XnnnADQGO=B_YVYFjlBD|Kw@641av|Q3E`a_@v5^)$z~G zPUOA*`OmI_fhf5{+Wa|CS12j$Sb3i?gzVTFU3qe!5H@K_@@7*WH=Z#Lyf$re-pPc* z=|J!V`-HFoaCiTY2c+fHCkEhoalm9^MzwR&fP4}%tPD0FCOG#52@l!gJ8L{G<;^zM z+fqbzaSaI-_Ti12T9W-hhn#JVAAVAer&Y%av0+8L7{dhwh%lU{tX&&d9m2WHd+%YW z^~fxKxHbDXVk#0wE=f#c5@{jsI8wB*f4Hv#{X<4;xv;BCNCNDx&4B9fl2(SHVieui z#2H8nC3H3dC=}ILzd)WCl3uD@(Q6EI18k_YabskH2^M3F#lW=ngjvHaV~j0YYDI>0 zG!-<0y47)9aha)ATPdq`5U^h)%KJrqL%bC|?eXFnU{GZ;JMInQ(NB`pjfgSziCywM9vzbm`e%r0!Cyfxj zpOXPyg`(w`FMlig7#ruDjlA;N5C+*_>ZY8IFx2Df6gdI@McFz^PCSu&s8XU@j{Iui zMa%0>mm^%apVF8(eMHkhdk@~dI+Cl$_qgd zR>eSX!NgXN3=i9>^F}565K}U=x=XIaHC;Lb=@qZ*GI)f|DJd+A(T?wOLY0v#Qb^z`eMmweJ;w|yGg&Bu&Hj)&y zK!Zh&Lf;U;?w3$sI(qu))z>|~erLeeN9#ZjhIjP3YAb(T4vR4cZA+Uf-h1{sI7^}n zXpNb{Q#Sr8p$|tI^cj7mDFSvGhWLd*J3_W-86|$Tf*cI4VNAxanw+ju&;UmVP@h`- zngxoTEM|_)eG2qmGtBWFfnvBbYj6Ih4g*kC~iYE)WOxLQ!)TN?A>*y%~$07@qMRS7t42TCT3o2|`U zoQv*UD0+D~TtP*9?&>A)S6?H)mUznc{&!S8(yQ60GLrGCPT0!3JtO_dUZ?he791sp za7+b__ny_uO!+<0K*KgG*R&?23$IP_!FeE;v>;`1f{KZ~i~5qjreXpitoa{bftvk9 zL{q#Mxf59Ypjgs7J0LRozADAcY=FpAO>rWUqCDopdK6+7l$O)Eb_xU!g*jasGMZB^Id|=a+%S=}IxdJ(o zl75QQWZaOHWf^1*4bT)@OLb0eHe2V}y+g2`RGTI%*}Kjcc9mh8+)d~qQm%Yox9+Rm zv?!{hn|803-l^R4`FkoH#I5qpAG@VX`kzQ>{+K)AnY$3Y;}kd)^NhTej-KKHW{*<( zqY!oNM%H;#xn4#=ur35&sSTSzH}fQRJ=R|of2aXnA8gmXh;jVrM`~opz4>NirE<|C zW5ihE%tq2Zo3hdg7^kw905DEL1WVph2MmPE*QAv^_D${eEp=~Q1WT4yqMn!D?z>U? zp7dhRm&jMDHq|yhz9uMuQ03566>w7uBo)~W=hu~%P)q~VfIxg~&l;+`zN0iO>4)t; zRDyF?MhF7}i=YGthv;P`I7ROY-g#69cmnKzF$*Q5?ZB|=lH-+f01xN*h(>-4w=NKo z#3x=xms8U*tSMEQY5oLdmHfWT1;4U5^8sV0NuLBo%UM9mV^NUfYqd1SF$(1vw!Qcw z`;PR!1J){pLDBzKUyVa5038@-3~V4L=tM@eX!rN}_AbWx)S_(-X>U&vE=1+K35Q!X zsGaHS?{_1|f7)2Mvs;$6fiA)XSjhAxj&F|%E?t2$U)}*u2ghEW=B04&nzXZHG2Wqx zYk&x32yrcJfLz{BZtc0e{BF-9ZJWc5o5$=7a7_h)0{~OsAgG~;5Y}y_b_f?e(@n#C zD*r%dFfcakYVwTC-CFAhg`4tSbqtd^?Lv8V1B!nh&f(z1zj*FCs-z5wcbj}r`rCjC zWYZu9BD4L+Tq00`49-qq`xgPj%t7wL`vM9AGE?1j6YQ$t#X3+qRpRL^xoQ%XJP}=M zs@9$jV8+=867e7();BS5E|E;8k{Q|Y!TD=$4D{75GAKQU=jP=#8+mdMM2y;+4NUHV zs-@Gxd)rH4p zEU?}FK#6QDF@hL!5FG>RfZW@e%ZlGR(NGpo0#n%LCVsMa+&1o>~~ z0*z8_)WissY6Hb^X7o!RK-`~Zzu8d8nL`5mZ2Fp5zspd-MHoKccmqh;c~pS->d+7= zoUn81mZhS!AjAR^1T5>9^B_n?si!widD`pFI6Wt5oTRJs9T#8O3%ug;fwKY2yubh3 z1JYh<*TA2oxqxxcXrgexqOM3QYp-y{y|C|8mm-q2S8_We-td``2@A+M+}pVV?VT%W%k)1qScq+~IrV#hzjX%1$^ z={nCJz4~aZV`jiNS{j%N6Z{N$SQ=^X$n4tS%XruAAUDaJG$1ii zn5z6_pLAIWH9kmRFUk_atu(Vf<-rkKo2>H%aKul>LG2MV1mGM>tt2T3Zu<(XF12Iz z8C!Q0^o?4$P<5%^?{TmLy2cjsqeFCb?tyg_9MU@VoWUUVqq|m~MzkjHkjv^Ckshvm zD()GZ7s`a^&!rj^`_-32ftEJ=LQ|j&Y&1}=1tN$S`{ZNvbB@*Fm}ppi#%XPI-;GzK z$OJj?&6~C~G7dZITXXm!Fs$_?DQtthdv*=nHTi#>!fM04nb&va%q0g#dmZ9{tG&2? z|F5O8YmyqPv(08ZCB|uS=u*FJ)T5-bU!qWp71gh<>*E2IiorpNK#JAUFL(Qv!>KjS zlSu@7?B&rWm5$d0d(*LA&{3CVhd)eO+rj5|H9A8lPHU(2e4)oJ8C?O6ql89SAf!1} z##+2Eq4lwz%IFuY>Ft}FSgVa`ICb6my;SvnNO4IyrlRPIQk?qXnj|V4)Gjoyf+p`Q zu&P{^V&Q;JC`Z-$tl$JrI$35;D^;O)o8BT=(MH(N)zPV$ACu%`(gr8lC0*NrXw>H6 z;e%vg@Ua2%4YE}F9O~{7a#UIyBrr#7lw0umP&d+b?Nykog4kF}r<29T=$|hz1Vvz1 zTnDKVZj1_@g3Yu{)-oVGtk1(%4ejg$Edy}JF!f;nt^LxC{i;pUX?vs#K{NMBRa)^i zWvV?*SggJ-k3(%}4M6X(7n0kEB``XSDo3(>!E6hlKxfIoSo<;6e0cY5@_UXth&705 znY<{E<=|mhXu^@Gd^rZ2Uw{N_WD;8z_h)4`iAt^qR5{$hP{L;pK9?s0;1Mta#|9cc zqUYc?27XjtQ!rI{I@$=W#Xqx-LGADBdv4HZx6dt7I@+6!GCV8Y!t+tj>T@n1R2#Xz z3%4(EN*Ce5*^!tlm(;iE+jA{o({G)YcFtRopxxTa#Xp?Td-!gh{c)t^<&ZsMNaA`HOoK#q6K;N#% zwro~GKa_fACW1WkAi{@-U)oTAY!J^LoL8v`8B5nt?b6>+*Fdk>bk9n5VzTnR4|FlJC!S+V$r_f<$|v#>GrAaZq+21E(Ew0f&1;1DyWa z!f#FGA}hLk?4W}L226v~PA%{{1%`Z&ivW@AbYno5Y1oe+}JbPNl<@S{i3 z=`wP&0cd$#mJ(1h*4J%qU~|RyKGc!n&<)4ohw!X+Iz{((iZa54*|X? z>%P;#7g)XriNG$92;4k7_;RTKoIdgiTV#326<*O}&FpHjct*#*BKDcO2_C7S;^qncZ-_<<{A0wG)570obIB^AoH?^kA#2s6P zP6v%=o5?5{5Se8RL|A+xl!2~tpj+l~LvnT%4Rw^E}j|UCuM1Pci{>ML3 z8~ebm^q`6jpbJdJS;m)^6P{kwNV{^{)>yKsbz?hAtI}%q(m1Tnx2v7wP39om$_CcV z(|dvLX_ua@RMxj29@cj4&wM-PE~N}{eY!B%>M3Q7aebyl+fr#;!P3^@0LJ!f*~fAc zcT=&{N$$v=SCNj|nDyrYNCrMtJ3Jzz%)3{w5WCN9@Q1cFso@@@Cb&9=;s>xA6O~tg zEuGYpCg9f_oPGC5d0J?-73~Q#bxlTWj2Mfirf4O2?KHhtT$Zr1?2cLPGt%?|(jnye%m^!rsn~qMxcnWmbjigMy@d zXmWC-H+y7q6x0nzjX$1}#RJD?3bj5Q)SJe5e zI=|J3skXrS4x>u%600{(O}X;6Y-li?yZ$iVBJiNi$cl0P`qa*DbGS0>ObWp`EZ`HN zZM%2(|MG9mzWe}O$Hjowm}u|F05L9Tl|3q*Msd5wleXw>ZS6m9zofn83gRs~gbi!W z4Qy0}TDNQ!7|)l4{oyHZ!a1g5tW?jKug*$k6hSt%#|g3l*Sp@>8+N=VIu4r91}xzi%L~7{*^O#&n?`7v?Qjk8EY^hw) zp|Pvl_s7ZyE8O1dClqCG;<#18aB$6rhqMGxa9Z^FzeiB1 zzIAx!JX&ixFY$OxtqgP<)ISn|U&mZdBK5(*6r;1%R(Ax!hsa}zo-VynUan?|JSt~N zs)^`%(#OU~eDq$UF-tBsw_!J>4tU^{Ip2~^JzB56YvZ&&8J#NG(r`n$3}T#@63(RN z&H+XIC`IIE4mu0mCf0dCO3-aH)wJz9*&F~ny*HPcqs9U{kI_+8kAR6o*5t7r-=S7> zU7WDGO>c)1gMCTL=z-OtyLuV5kuSgOEEW}ID+D^zdasx`{UT>;7-DEW{^_M(DMA5n z;oPRCn~M+(9TPTaV}>=2y@(A`YJPz1r_}1yhNv1$Rc&OJM4`HM7_}LlL*J4bX+U<5=!oGl8Waat}bn1 zDEci#_I3hAZ#H!JI6>`7YOR83)mHDDnray|wS@$qW$@lNdUQ0-u z6GDIIP1Qf}_YF+YS=fn|0XEn!LV=jz6(%h4jUVs#`}&!fPMFz`rUUlJ$55+@75 zGRI7=W%vYP9tqCQlZ8Z>+b>-nXF%67BmEheG(HB=0%_qImE>9Q!V)y;gL>}`<+8I+ z@cMf_{_Pp9u0vd&HnB!vEMWx{>W=i`@I8 zf%1qug#p{JE4gYWDA;Z4?%0Wg z)q^%zV<~{l4-RN;N=m&1Id#vE>rAxqj63A=>MNXE-&h^~ck0XrnokQO^oZBpDLYnoukxI!dMAa(U^i zfB8$IT=sC6OZz?CsnQ)SO#3NbB7Z!HJ=sjKL(mGrE@~b$dYw|bwF}hE4qsqhhgQ?W z3z&`ivB>k5n{6>MrH!48J&=A#v`gudr@SJ=8w^5fe6VYTEAs2dBBsI1F4>tfCylX_ z&fXo>br1FE25kMqSrd2dp`D5W3Y0m?bXz{3=iUpKJg2a2e+f>70K3;A5!(Eo6HYVq zofh+kx29DIxOqi4cIiS>KBIr8-RyuVrX$OL$`I-&lRTSk)kkj2YXd=T_r*6qFv3^E zC}p~!RQ)vk9p$y&;avS)b0qB#&-WCEWw3^W`d2m&3#LQeOk8cg(d2;*CEj-;(MTnw z&uIonB^GaIX6)OmTVBp6?>I> zvzQev1`N6NpzG_%f{TuFB4r7y(?YO%_iL|xb(EymaEwB@SF06%RVG6oQY?*zHS0U9 zF>Q|~YMTbgWk7U>JDf1z)3tmqd(~Y_lsjKuZW5R%TO5~rBuJ1l)*J*8PlTneo^19)_*dojQ z&cF&TWJ;{?8AGe9zjMUb23^5*S3%5K95e;>xCd!QF05^*Ea**wpzBj#IRjwQDn>5c zS0^34zxJHz4#-6;S3d$OY-Q~3B6L!@06HwZHw;_<+3V9wqf{fAyZzUIw=*FY#O93j z^Pa2jm{p$nqZJy}5chR*MIn7mp1Vid z9wOpOj0rMAWVv>E@b-KCa4yS;ARz&YtNPIrob!;*aWf`AIZS>`{U)ztLq^o0GSWlo z%?F_{_gE5gnXT%O!c>v=mAQTH(Byc)ADEo3{zBvM8o*#Pai51J-2si;EAlR@Zg^$d zmf5r%-7steb1ttbs@EB`YOKN*R!y*$s||ygPW>XopeaWL6I_2?r@m4Bt&hyitZW!m zBbprzB1OZXGcnC06_&Y;$YF;!_x9CEJjJ81#*lOClk&xKGpbjH+XvMU8&AS`%5z^_ zE9M8wQnWl?fF@s^WMrg-X`-_Vvi;*22xEG@b2v0H!k8~ZgfU9Z-=Hu&sCC>nHm1ue z^!RmyRlf@Avz@vnvifY&5&~8#Sl!8uSH3WscnlysnTprzE=@RzbfSScaNR?o z*Hn{Nya9eBVd?n`M)@~JM|s;>k6f09HdSoz2TwR)I`PwawaKK)-S_qO`1&s1h}_RBscF7G!I88pzkPF&n6}ud6KfE9X_p!0$@%s823>UGjYJ zu#e3YmQh7>^`ECEXaS$pnd{4rD>fba@D&yBilpFjY11>jKNr9hXTaP$D7^x+AsrN~ zzINCg0esRf;2(DI*OL*B$D;Q_0v%6A?eEkB;;V;*)$XaO?R7rs?fuXd9@50F>2bB` zv${5^wP1nnQJ|ai%^+ki(}qtNAOH1)&T7fVc|9~&p%Hzk;J0*b4r3^*46d>ToxS)^ zcjR(g0L8cJ5Ic2aR)Sl!WhBM3rccqz992I?F{*r0eZKH z)ygD@FQiewdv39Ef4#PvPn3$RaM&@hC&UI2^FKP)Y~kI$<|E55`8suQ4@t|OC>heL zCX_%%7ndaTdt&ZReX}9+)0n^Cm@xI3vtnyP@Qclfzvi^*v;b?m821p9yVpy9ViZCr z72bZPw(+j$pkh{SaRG1Zwr=Rqh+Ui(&)bVE?k?5|q19hzB4b0gPHUmeKUjWAx^MQ5 z8!pLdtX6gRd6!&0)*cH^d6K>vM?AbFkPNJNRI~2xKDABVedBWV){o`|rz(4wba*J< zew6oKbFIRAUu}s@SG;b|DBgQwGiu!VGQ3U_-JFa;NGTIqz6wv7oLy){zj#engWKKF z^k~yFM~%vJDYaqbhhQp~#)o4;7LCf7G}hIN=P2O{CSPo;-!FN#!3u4}cf{_alE^8b zI3j$%jLG6jpfkwrlx~eMg~39BcArFfu^E9xV3t;-r)t!xUz|ql?iU?blu8Pmu2tJF z+AZtbwa`rE~ke)f{Wbvj*K;;YhRFP(5Pp`ilZ1S$l zJFOv?vPbC*N?+?yS!kf)w2EaXsN@4ZI)|O8bv3Iyv#!`7=)Il+tKTE7 zc8`Ksm>(-OA{G`%u*ymJ{QtCw=AIs{Nl_T}n37S>=8vq2gu=)9ogp~G0Pg_ z9SH@Oui>t|*QV1ak{Y9;x8GrEN!)i@@lC{wB(SnSXdr9Uuz8K93gIH~vO@}hNr1|ChCPFMsjPl8;U){cR_ zp-!rt`G`5JiD^P_lXvVC_kz^^r81NO20-vY8>i8#_l%g6Nt@ts2!Z~;4>($zbtoQN zE*SJJKcPqKH+FAcQtH|_Vf1UJ_Vv|nKqKnGuGzkC#Hb^S-?}U|K(?enS=Zm$X%0++ zRYmkt6==n5b`_rW5}eNnXr z6*ED9aOq0^PDgqF=}Fi>Mz@@+S-vZy3mJ2ltpi4>6-!z2H6i=uK!f)Tjk`{o^X9y{ z>2C1$9!1cY>%`?$k*q)ITE<4CI0|xFCiTc+#rck;p2flnJl7bUjdg9P3n^$|E`Um; zVWGi2(URJJ&aPf81gpX3Rj*E&W5#}i{}PmfeM+NA$ZO4}4V`3;GSzB^ zf0W8oN`a5u3LEbA(d7Ddv)-6@X6=TQH4zpkbg`uM`xSlj%)U)ZII$nMs}j*kU(a3t z{^i{4o!9j%`i2ZnvtEG^qBK|>*O=q$0=D3KjXkj;*l_2puOlMNd2YlaqdzZ+wcY0}kby5rSDV33?Hi~h7}vq!GgKf zGWatNwno(|Pq!pMqHJM8@pHY5ZD}F6HhEHkCx#wQ57MVW^_@w*-+WsM zGhA2PoN**=T}Lj5kDW-4X+dR$Y)H-QRba5i7C7tVnAvNsiznwxSt95Tq=EXAmm4h5 zCFW+N2*>mwdDhqC5a{d(#c`|#UJeV3AvJ2Pz|qd~jHIVkOp9rIUWjLuHmfEWf%0y` z8u1Hh!5c9T3JLtQO$bKJ(!<&7?_H{$y#3k%B{};(SgCORGHh5u{xDH8Q>qazHcdWIgH<3P-`H`$iL#MG_YoazS8uS2ge(?PMg#58;%C{E{q!^=iKJ#`OqcsfE) z1nPTM*voyoK6w=yXz`Oxq(m{l;J6ke_4nbRnW6}W-HqTYDEVY%+|AKm<~vQ>=U?Wc z5O3TUwyCZ=ZDw6qkFaL2e#Jie=wG>E=}VlkthZYFThVm|IyI&b$*1_w(PovIJof|JkLN77k5I z&EB9E2|0$Lnh})F!=^9CX4uA;P56TD@-#Z&g_FCwH77SRGV*k4^VZERg3+kx-nF~) zT4Sqgz?HGT)~&YMbve;xM>uxlO;azRV;XPN)Dvc)CU8vp2j|w&R`0<<&uty$H;u2l zTy8baSn5A_v?Twp7K_qMEBw(VhyFi9cP_G5E#(;J14ek6JH#=re-hNA4J zN~H(5n}(%d=RZ_5I_#xRg;A3#h&ti^j{VnG)hyF;fbFUtS(*A64i47 zWh^o66+LQGvegR8_&@r*k0~n;N3WU;@^S_jXhkYsh1g8Ac>={=3s~%}0LDJt^hDEF zn!efeV$&dmYdT$TjsSSuoDlSI08((;kXa3}5>+^=UsVd6QdC*3n&HjQ8TFay{*P={ zyTrA3@A5zW?YEjeJ3hQiFq@QnK6;uTbM%Dt)l7m#oDy|_QUhfV zniK}m5Cl7!7yyJl?w{0qbpu-ajh%3M*7fLZrWI{!O{c2VDq0~5X&Fcw+^QC}lRs{7 z)2K@y(pY;Zza9Xf!5i~UExAwd__Vy;tm~Ued0JPJ6eNnr9;Y3$Zh{CbN_rpue<}cN zP;lmCWZbafc7%7Us_hEB!gktS+XDKS=-P1QdR<|1>iV<%g43mq?!A2$O98h0BidNa znieG7i;6~K08-_^2+`U+DhIe{)udj}w}fC!Yxj;%Td@hO!6af!gJN)bR_`ynjP435 zhXJIMr;lLq$+`ffp0Nv&r*=Q*M*c~Zen-0`i~O7|nfhboz?DU8a?JQ_OJ zHb>cP4=G_$m!YuqSZGkmYe;jKoL1sfQ_b9GrP*e}<|aAlMRF&W$&?g)bbtu^p`QW} zp;%Xk{M8cZ3=HX9xA&{e9(%7Zum!l>4o-v#ri<8oqe*i>-J zQcJ{`)436jq`wCg29w$l8gm6*S=tV%UXgxD+Xs0NaJcAB&HmXK1EyZ7))Cz{U)R*B zUTjXTob-j_=QKLdF}-c02UtSa@Y6&7yeX!01uQznHjBU8W_9-cB47OvC|0Vq>Bx)H z|5$yPj1_pb^go<#P`Vh$X{#&uDu7NRdSB-|slcwnm$U)r(hw#X(`*iz&*+rIw8S#6 z)~)mMxOkD9Ft-3&yj)xuE{+@*w-NS?+gfVfcip(kY!k+>+I4L)cJ3r924Q^1%*ec>3YcZBZD&{M3Cf8!#GEg<$a9m0%=E% zDA!@aa>tl^RxR0E3`q8tp$K|zvWdj14uG>CBiUnBXMgYLD8{`um!aS2v8~U*L8gP# zFH0M}@HX?5l9cS>+1|!|T3XeP? ztaZ>{NUX!MP7|x%K4BYUJEhbfbTfh^Z4TJ!H_{PD5PhNT{cizE+!`16CA&EmC0Ewp2Bc1H#ObW^ns?2H$8+hoNhdBd4rKeeUgc_W`nBsToYzv zU-5c6bJX?Akk^i-L$%oC{m6yQk*A#J9+M`YDVIMV?Y!i=VNS0azH;9>V}G$%pEh*o z`z&WyY`p|C)MPT|^{w8iRjts)Nv;^*$?NrMowaQ9+F&oqX%vIQz8}i+1_~mK1_)Sz z3@N=zws#!BX?nolu&2?gy>;6=z3Rmo5Mc&%_UlJSm3@Mp73uc%u)XW#bh9m3!ok6y zoHU1pv^vONGxBfJZtmNIMki*a5xvUj__a3P-mJ|V+d5lyFRkv}bxww=y4I7nws3n~ znd6swj0wG?xU_n&){ZZ>-~X2MlELl}3;tH(rjexuvFXJrn8D&auNWQGWK|}!kQXhM4Q(|0tgYRYFr=^q z+1f3|eMH)*q(A#3Q&W%kU3c#?#o4c|DGr)jY~D_NPTw7JwcVLFx7vN(`aVN8?8)4n zx3t;)SyRr~AMo?0I^MwdnstAg(6@$IP%hzMj|@+HKF#ka6q z7&hig)}nt1Yn7uN{#<$VZV&&+hfPEc1%qVN;E}|4gk6n5|C>t)Ia~n-6KDOS3}>wk z-7v_d&XPRc+SvkD0go`MpzBO2!bC&aH^CHs#j;Qf6eP0mzB%v zPI%fFyA58)aqXh6gB~^{D%+LrVzVs@E51neKZl1eN9FYe?tt`RGsbzhackgcYcyye zCEZxNSIit%1-r%YsXWI!8hkK|fJx8wK;k6r4e@AdfzRU(W#0f|?bzo&efSa{| z+#JtLqH9B(57G^x3?kHDDto**Dll3XjBoNpifg{3br9LTx&-F@B`qb{sBwT@Mz{vcqH1|aM>l~$oNw`_?z zV%xTSN_zE2=X2$L0eiaAgn!NZUgC5!N7m^l9~d>%ODLlwraBL~t068Ox#%Y=wQf!J>br4I@)+1Z&SJ?zLB2^;8{2VDWR~MnCCk$LO@^*9*Y4BE>?|fO{s&XJ6umtfweppgEiM3wrXSlRyWNwRBx^V~N8q@|p{;E1T?&Qnv#5tM;&3C%iQ9o{!eqWUmy} z-BYVlc9TLIFsK~yK<>14c_|-1=duyCPglD5v`ro1NoS{Hs`|5nrN6Vkb?}CQXy8iv zoBFMOVMrCYzS{=km>A{W7F{Wm!P46KowoB5$-V7-zN`A(wl%|G;l3 zaZAzV|1MzwiA>{$$c{BB{nqPNt9iYj8GZ_y4GOKOYEv6TCFhymx2}_mv}&=i@3IY? zcJl^v%SeYs>lciPzDFX)7IVVVR*kyiLpH#kuxTtf_0EFF>T> zb|khHY)Ye(mzS_h>+$3ySY};}zOL@-vI=nll_$#s>LgAN{tO5&!+f?kk(fWxc`&65 z7l^*oWg?&@n-o$A!si6gkuMs3oWEoZqhL)*{-4aweP0kKKZxnq4CO}r; za^)Fb-R56&LYvwywr*Zo?ul+WJFm8D2hP~Im3LKtZRcK>V98LbKJ&-P$vc)C185ZN zPsubGMycnBQlDm&`fbd<(hQYcGLs~Q=XZCv81zA{Hj@6ZFPLpJi*AiE)n)D( z=_&Vc!XI_`+blYJTjzJ$_as{OW}2B1;w;%)!Z8AUiy&4efn>WU;7pG@6V{@M8Ao_4 zq!`IOE*)4&6Pu745gF}ArAEzCIR*)fj`{*uR%)W|N&MVlle=RSBr-&dI>klP1WQU3JZecvjij{s8{fEi+qRE$&q)K^)(+gO9(DA0 z0|Ps=*;N01D|Jim8Nrtr>c*Tw`lDxb)WzK>o$I0^)KB|3ZnWlkuk$czC#||B?L@|j zFDzp|5BAHlO1rzu?pTBI4LpFfQ*#<7aMDX^LQ-l}q0m_jczgUK`KK;Y-^`Ka{z^SijoA+=eroLCy*R^0vqr^YCtwLW^S zG1ExWuniddek^{9P|Mf`VCT8@ih=nx&CP7;M=Y0e)NLY!v;BNlKIggLj63nqPzo0r z@C=QQOWe)U**3ChE);Anx}uo;<%Fx(l`{qXPr(kND+NrH#PmWUv!_?9O?rfgw)B=nt>Wno``H0!_n|)t-u`QWv*yH0zGvs$O}Q`vjnbT?;S4<=S_W~ zOvISS+3^AS#c@PnixB7~Mk91?n#i6ekUha@z$!!|K&K1XD2#K|FO!E7M4xV`RFu#Y zcIgM9F20GJRdf?+I8nm8xlof74OdU)3S*C!_K%NmlB8jJ%ms4E+mdLWDA-!9Lld^L zZ+2aVN8>oWC`7(wqA4gIS)+G-c-RH~8DhRLtuD_ZHN33VwL|*$AEp20_adyEJaSS= z`bv@i-yT1-F93AE?t_`UgBrt^lD|g9r&hH1HNgxZX!?T$VY&X zdlF}e2us6EO0Tl_QI-~Jh_0+q$|>+Wa1!-R9h>VczEGQsxC_r+#@in)(#nyToIB9> zH~g2>P*(F%fQS=>t>?DgfB&U}fU|Ws!zIfPB^$jc#th^Af=di{M>P*Vd;LI9EIOJ6 z%&@ogEi$eB&2NImVu*m2Au{&}QHbW;c@9<`Ix;8Dc#v4VDHt0nH9Ao#eXUDj^|re# zD`4-zwQ}0=q|vEJE9^s2lTV#cc~6?bsx~j$st;Uo#g2ZR(byW{bZTd_T7Oxe%IJ3i z3a$=#1ot)9aQNRN1@42tbU}bop$`IQp*zTH@B8C8s^-)sAKA#ATR8N6?$mf>>1-$! zTDA0ma*r-hSUDDmZmCn&k3%QC3ACHdT{5<+ zJ{b6s7A_9zND$i8Up6>hsK{jzO<7?~F3(6~j0&`Q+3xdeL4%FdF;=IQ84J^N{0P_b zIWJO@9VIa|28hMPP~`x@ao_viS#P}Y26kg`F}-Pg{BZ)oJw86p6}b)4N3j_B4HSyw z+=ryiaazH&kYNEgJ4&h9g5um}!Hv+?Rxq$fg%|Dqeld~gi6u97==CrzUXr$jgm!gk zEa6CtEn@0aD$5F5JOApa^qaM7uU)-*K>9a+sq~t(zw|lj{fd0;q0TQyox*ldBxsxu z;%ZHAZ1B7j&oSptkA#CKbqLV%)xEAfx&nrqG( z&>2lEuDW0?cU8aA;IV6hdY?P65w-*kL%IIG5J!SmX?YV0b8=_~V1}cG znjcBtK2jGYes7n;=FK>5tJ4}Si|i)1GOchGV&KI!Yk~@Q;o-s04e`E1zjt~8sX@m? zG1Da7(tp|22m1tza_nOtpWx1tf7ffST4XhFMnyzAq4$FQyE+7ua`?S>m$^OlNPe>n zi$vMY#w{$8)AAfGI2*SR{MlQoULp>jpY%s}`c+hQM>ciWm!e%JS3eX71`wq~Y!yCl zSaG;MF-arshJ(!|(5eRfwN#(g|Krb5hAhyGbunxM&FZNxbJYuX0TG(@WNfSh0W>%w zvnA4ke89ayOebzodNwpR7UEu(nnNVw8DcU77t<8QWMk&G!!f8+NBe052XkAsw6Rwc zi*<$LPXO!y1v>AlPUe5PybWrA?V8va%x&>zTdUU)4yKP(TWnnhr?N-kXl>hd`KWT! zqvM=2huuw^#$q}+G~~_uW>y1{saNOE5(CW>!>*`vWDMd-uVo+Ylk7L=1_rsCx};a# z!q$t*CL>0sHRm;jK>GaufZgq2`JE@kHGzP(?ebvGnax6FqCW?46)k3JuysSdWe%aAqNIE@&N9TvUG?e>dV+|^ zG*zeA%t(n13Uv!$Q#9_7L-%1_)<2k{7kl+z`E=F!~CMqR6=qZewNI(H_elRgO4^KUSudYA)MjwgBle{`6y z$f@X%1(RX<;=_FYCu5(;dO9q+fX?34DtWLG{z|brJUqhRVl5xsnO2)E%H)po5{hu@ zxD`Q-T^*QR9+94vLWQ0{b7gZvs;Ei>GGf;xq;&Ut&psgy<;~lQeG^#Fqw` z{rJ4-#1&0V=i_YWo+{>B&Gen+WVWrXMSi*l^64%T3662XjWK<(SxK7voHX;yDxF7H z(pZk;)YAXr`%~13eQ?OTY$YIa(-Y249HfR@3jhNoK_diV!C8j6gVMn`n~sdnPe-6V zp%Lb%Bi{i#meTOY`UQVD>kn@1(13f+YnQh|cQB)H0TCJ1q=m@8kMiHwM$0bIH!i)r zW5)+hK6zN$&u#nm$hjvqivdk^*`YxjK+i%CpCj=An{^1FJY1Z+A?_NP=oXiHCx#REVsP9oW||{R$^cYS~|C=#CBt zBgwOoeOPjQU_S327E9+!;Dx6vpPoQxatu09V79 zGsI1u2Ic{)QO_`xU|?<;sV?Wvk#0%@*g5+21pc{~Koya`8}47OSaSFE1E-9N6C+B< z{`BSV99D^Hk4Gi?uukDMeuEGQ2>zh>ð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 z z%6sp<_xCumQxssy)WWbxBQG`y9dRdQlCXv?S9+jWo{wuB^ocaA082f|&*lc%B*$!< zs&^S@ylye~>0J8BmEZd|o|)CAw{46NhboJS*_Er2J-a+lTAO`u{`xn>kh!bV1kOW- ze6xPWPx&kYfv=-fqH&@Na_2*VVhPz0S?c5|*y>EKf!ect`Hjn#<*DsKiKVyOpwM^q z5-)O+Tec(w4eaph)s^$4)_#M`FreglM(ljsJUc76+{JOP0ID__aNx_JLUTb`ok*>u z-FO5D_M)K=h+18h2kRoCI+aX;VJ!|OR5F!-tpsR5aKYa(vIo9RG4_cwrcQH0TO_@g z@DM(dEV$5wcN7yeifwjz+OB{iaT19g^8fSXMxjC|dzEirUcO$4iQ6Z#`{ z0P-J{&@So~(ny-TbLMyoD>Wu9E7xZ- z=QlT_L+SLDkT~{(Y?i@in83zRbz#DK><}pRCP9?uO2#(OBGl}tRciv~BEIId#Hu+h zVGrR5gg(Kt!g`O@09DgczZ<7OfZb>&Y3l=hhBOoT4sfv+Ix+Uqs6d_eI1D82_<}yK`G0a5T9p?3It-d zKq6qh&`Ahfle?HQCAX#9!lQb+)%k%aR1XXHq;8i8f+D*|!Lx|KPlCI+O&VV@41u1! z>5ITh`&r@0z4sQW7fsZtLdljkHgd&ebE{S!@e>ecBa*SUA6b(ZOT`2U_2(oc1UT@7 zvmZV9%DEr^^qM3O2!7**_x@(DD86o0qfpQGFIwU!4VKQ57FU~TE^6;PCwI=CGm|(5 zt8wGjEeTkAH^jQ!Gp0YsxUm{27X%gS?C~5+G^qiE1t=+nGv?Gu3SdCUx&yjoOkQ9! zAe~NiGhA+1ao9Pmg24qj$DHn%Q*m+yDK50yfWD$QZ-5g<{)T&J&A9W1=J{Y9z69M% z^_I&AJ0J}4Y+M}~O~)%OkP1a6wW`?;D{aq;gi8FR%P>T`SPAvH_GIvI|fu~fnHO<`vF7T^Kjs610W;})WsRqBM zz!=nlJ&Nd&0zsik6un7c-h_8dw(7q2n2D?E!U1*FNnP!|PIl_{=#L0PeGWYqP9jRPZFr|g9g5+my;A-E=a-iK^p85WQq0mIO z=cHPtkSTHrK~`$GTj!c*H`y2T%Y6$RD*NIdOKyA6Y8sddhYS1mJVA4FRa2^-;Q>lh z&;ML4WnE*t>d=F^0&H3x7cQ`q&PgyuTkJ3Z!nUG|iN?zDF9yX%5%@~a>FlgbL#I&} zFaPat4;_+shy%p{QznNnWrwR+BxEI#6LLC9<=j-!D%gt#soUXNj+yhHl!;e`&Q6`k z*h|@{h2;G5AE@cA$cg&-%bvQmg$IU#%r(c3Qiyot*1+(rDK^j!u}ock0}kn;ML$@$ zu$kHg>)woBftobgF^Hsqu%t3WeF?a#6;9f=evT zOb+sS?Obj)Svf##PE88%IUSN@qOu>oR%Ug>xN)x{=v6|ih#V*NOLs$JUQhwOlfeGP z@rZz@SZQldYQqYp$?SIhxc~WOvqL(YO{cfpzupJsC(M=iiHofUy~Uz8Sn*6pzaWye zK2M(MgdS}!7xn-GE)*~^z}hKYK4{jaSI?8fL9Bo>2mli~Ul_b&<{SqJ5y(L^!isd}%{Zzmq`_ z7ZN1M%3**}6Wkl6xmw&I?lGx>*z~x|1(3rAkws0~y=`9nzwGgpJ-)0iq}SvBWEj5m zwR*j+KKSsjtj`e8>jMTuP!ApKWt>G?NCqH24RkPJCKF+vc-0gNnI>Gs3a`!P#TNzI zZoAiOw|SwlRiht}5ok;a=a^Ccru9)w=z-X+DHIjewF;ShfjOwwgE3*4(LAF^#CO0? zOM1q3Vp+XA=;R7UnN*TV0BaeHm~_WDBxho)_b7=qgwm>ax^y})Pvy`#;8}IXKO82L z(`hm}7zBD3TKE|#D~${aXxhJZs3r(Dd`oYdw)t|pv`+iWfI*j#@yx@~gD z(u^&Ug(_HXz00Mi`|-9Uf`PEXo-_wT(L^CMHS5Yof|0CqLf7B}b%cBxA&_IV48{!X zRTBc?5;$StxMER&1DVxE-XwGEJi2!6u^mp1x@+a7bLU>VvP*s9g6ZI?ee1yHmX^%} z1$%#+-`_f5ho%UI4gCWwF8$R;r_u#olfZ;qWgzobEh6ribH`n4)*jvIke!&_KyDmw zmh7*#NZkspKY>uaVFror9{n@mDgg}|c33DH{Z)Zo@hzXxmj;*1pm)3Vr@WJb`q$Jw zU;hMqayO$$B#8%WaQJ9wAldj2qyJ(c24i$D!%MEi-_L*tyk75C@?-ek2H#%^-*>_H@wxy>AHJF}dCKP) zRB5eCo^T|;`Lj(eV9P}UzD5J79p!9+y8e4s&K4^gcmfgrqe9FEmcRP@R$TnXuaG-b zGM~ljm8%?bd62IN>-AxUARveD<$jCK!Poi?hKLMgTbW%Yix>=kE#I!w+4$Okp8j4A zQ)(E!pZo>nqJzV;7+@V6)@T3(DFJ=C;K=29bJPBVvxaUsKWA>f?6!v*XXSF4!C-JO zlgrI&#Lp82D16XDA3nfC7F~nzn&R_@pHINj(H}6C1^>P{Mr#0UZaa-&;TQN;TbSl4w>ecVU0UZ>xmwHa>CLfl zGBziZ$ncr`bTT~>O@`ynQjx`yd7VzLjKwOJB9@SmWpp~>C1imaXo(K;IJk?#07^<4 znc@Xd*=wj2LpUf1XzB}t(Zpz^0Aqx2$>Yt_J>^yxJpz~7+1BQ%k06_~AFKci(NrcM+4w zSAZ3TyQW%GZjRN>8NZ8|RKJbJDU8?Q_%q72&BU56^2yNoN0%%~^v^ zPDH=P<>(dkikvD^#rmi24?Hj`#_L%mEKO)kNaw z0Ek`g5DBM~1SEukHx9pjxcki?4tdfIa&NFf(?0LaN%7wGGdnDhzfb2YuHJV=2k{ff zvfT%UQY{7nbbQ9;mp2oc9cOJz8vLPD+m@x%+O&AF@j_IAcX8DdH$gs~IPrAiF!j(w z6utrA7Skhu+Y$t(!HiYa8;D8t9VFvL;w|v%zkMQ!ei5=0YAH+$1o-)FS0PZ_Y#NiTm|iPya+gwkDEXl?M0~knAPVS=(c6jTkPic- zta44tB4XYJfrP20pdF0Pw?`WCEoQj!vC)4M0mur8@p@g50|bg5vuHFHe8sVduQQv0 z3fu@Ii=da_UJ!Ar>_b)fBfn{!gdZNaf@R3E&mE)(tg+hEW?LzZE`#=TI;*wvyRQwM zK#ziu=toZjNpFB&U`&m5ju5u;~Fuz6D6<3&ixwk%LLttjk94fk$V8M2r^( z+j_9+(uG7yRaDXlK$_m%q*d)?uz%|B~-OUsHOpQGs(c=l5I*&+H_aC88c7fXKb zlv+&;47BRD-Ymjo9xwRXL+m7o;~^uF$}Bdr-1~Xb0=WO1pv~y-F_PHPq4x@LC`kyu|s9~?0guOTSbKyMzyCMcR$ z`iHNzr`6}MxI*zMbN$YO(rzgF8W&HCIa_@B4sWTegZ6;sD=bkw<-DwF3n`I$qU}WLqNT|i$mhzWk!BEm3PdED9!|CFh#(2@&3#+ya z1&Ez+I_MPO?vy4K)1)9cj^pN_{pn%p2q(lDk<3baN-d~!hRd&Av`FiB%`i-w1kYxH zPd$nrr?C|*B8V!mcwiuS{rc;32M^|ck-hJ}>;v?DzaZ{J0(^o>aDq@4ZG<$lf+qM= zoY4dUXotXCh_M)gfH)kLMx#P;wCb+So9{Z_e0f{R&-AynoqT6W#RAXUgxj4U4pCR& zJCUexd0PwIT55wW&M=k}cc9fY9fM}ADkoehL-)FIc`o-{6YhFw^e4n_qMaU9Okqbu z`9J50_R2=kH%LeK5zi8r(RST9jI7SLvTA#W&vwt+hYNV{;Mq@Oo0ec-AeH-Fr{IJ?M>c|Z)DvYTUP;iPyr!|O*A$#gu{&uXZ zDbwAZY3h33ZML}G7PGqo`T0^`b!D^N-Pvr{^De8|?KWFoXe$I(PMbb&-t?A2p{2D{ z`g`T>`=*bKOrJJy-n7<2p|zz{0^aWluu{Z{LGbGupkW?la2oI6RjG;0iFh;q7VM`n z4jV&!O<7n)nD_)};BIiQAJZV>@1966*x5e)jMhZI+ZJIF%A_us)%cs7YVbva=12ULeLRw3M!lit7aNoj2=Z>jei((d|#$3o) z%UOp~WjP!Pd3qDA%W}b~n>(kR)})q({O-Qf?ovqoC9~TK8Jr1pFHqw+@uw=~So}5p z9{S};`n}J;uHNe=?8FVAw4vp$k{f6bCq}=b#adz&(jL>IRfLwXzq5AjJNSa-yqUoQ zd)?n^=!wQn-;AHY`NNKa`WugE58tV4(mtxoYJYUA_V6)XPWOo3_Newz*4xFGiciB2 zyuJPQ+sOD5fcpER=MWS*pMj0$pxG|ddXrPZyRM2+DNQtdlW?-}g}#U^oox;TwzkY1 z3iiw#>IpWlDd&bd&5ed!yT5IEsC#IrJJhmuMN3Ny(uK?gPh&pij5)3LNV&0Tde{&$ zq#K;7Ou`znn;o&Pc=K?Cc>4P5Pdt9$0IX5}=qP!B_zF;w4svVaU}?tGntqwam*7%Q z)0irSL*sv<<Q6|ir#|G8sO>=L@U6k? zpg`)Q*9C7q96CTf0`2W%2+6s`2bfOLwZX8)1eDU`TuB-08>s4a+8NmC$^c$e*6l!;&-E8k|gm7Fp=gu z0M^Y0^jSH{CWF45w7sou`=sh?VsbbD|S>t5)yH z<@T&zwYLZZ_y^eQ2;yC=(c6Fx%fM-ZK0l`V$GbnKOFa{}4;&i<~|x%iyz9j2@Sk%{)5n^#2q zt?s7Ac&;Le3Yq5?;6ygT54O~8^vp}Nmn zSM(bq-gRA(zF=(a?5Rs5{axv$foS5)zOEISo>HjGSKc7BrES?r)|&SPN{)7S!5(i7 z2h*{9cxtL;SkB}{`(wostap9~)VxQO&(sRs`ZCJzbnk|F@-z}JEMcq zz@$X9&()|w$EY93tsUXk^=-l4`9f3F*yM?M`xCKlui9Wj^9J5h%3{m<^CKm!;{6PI z{5OC}qz)uiYE1JmV?)XqL*yi?k1~Ln+ zq-RkvGFWmJR|`9?*}CqAg`ub;W3yWOcFmuAdIrdAqHHTAW&|_(^kBAcO$LtzK;&OA zdtf)`gJ%z%MC|f|4lr%GnK^16!Rwfp(UU9hyymk0{>;$9>u+BMu>T26-~?>E5g4*u zeG*kU!&O}=&6v2u2I&{#_b?K!nj&ey0C$?|ujubnx0bp~$t23JD0i>Opj5i8oZqBK zI+3Fz;cs>27qOB(9%pH0ERzWh3X`)^?elF+AlW0eDeBBpt|G>AKyDj>2w>GMQh~ZXfyj-OJ;Zi%MM?aLcnqqBP!H$P*-W$x zP~kqtCxGH*04(@^IE$bT2Lxa75wF7~E0=$ZG4Dobb7!qh6>>w9DRO5;X(qN;_L$K& zCUs^Wl}S|2LyM!p{Cxo22yL2O{5?#w=+XaZn*IEHS!Sn>K1^N-UMy`8;tDt-1gZi0 z!~&aB1)-`T>LjkZ%2Z>U3qH}b9R>SqkibW$@L{0OIeL4_#jEl?yKWsh?WS3t)_zy0 z$R_k1&TPLaGtg)ZN=RWoU>UKOL!SPPy*(GKD>cqOy)!o3)eu?P-w-oeq~I`~a4Li4 z_>!v@tb5?>j*(l|cCGDp`TUmPl-|Ic-jL1^dT)1XS!dgZ!BB4f4;D;0YevYZN*RnO zXtv+2Q`*z5mShN)_aGqA5+DK&rt%wrUxQQw9EH^l3=_tu2T{XmNWXY0_3YH;NEA>9 zL17U9q+7AR_a5?WDx6*@p56?*{a0uv49&=aVRm9qjk@$v(|)iaoTth(f^b%&5%#}+ zHMFBe7x(ndXgzP~-50HxH?rueTY48oR&BY7c-Jwh?UnSE{NjEtOB0uB${CrB2w0{q4NYDNt(_<#VcLGM%B>1-L7 z5$_KCet`Ph0Nm|^yM=H!NZ{jlBOm%LwGGF2!JS_XP!Gb??*eAm4O6$*F>nq6>O}`8vCqSxOw}pCmVyZpSPyu8ehxY?dp7ttzDvD;5)~_&McoW{e+5M4 zv)bJ>lLCPq;f%aBWF`eQFGYPLvTH|an z_J&(~=7bjt3+YI}*Exu&%2$PDd3g2<7}7L&7IQ){oEU&CvLlY_i`h)HW+lYt#+Fl+ z>tJN(q0_0~L!8h#H+%%k3q+S>!((8{n~!IrLXp{M8vyb;SbV4{!vIeAU7BN(#S|bh zfQ>hWz4@@887QDgJL$FqHI`ks_BM${%9I(Ux2~JcWD%_Po11SbGYKXWy4>vSce(nV z=zLg`t1P|!mRqUaXveLV{$2~U0=hX4-RPkk1wD48iGhX=FDY`{K~|R?A3^CwEH-;+ z9`)=3788a`C9Y3x%b*?5-irrPo3hkSfX+(+_GbV9d{1_B*$-#UI<$QGp;<$RR`hQw zl{OB*Ys)6#oZB~TK0G{pc=M*)=S=QCZ}#kSIy=vqJ^Q?F=%NAx#rrOVn2U)A0Q?B5 z#~5^ql~3mF@9o_;=kjw;Tc23kyNh_&H!`VjaU=B>TH84(nFq-ohT2K4rjKc`y44to z)|o0mFJlPOSwC1cc7gbEzUOzZK;HM7#B}KyE;0%G57Q;96>cqt8pUy(wv)n zT+AFlkf3#hATpW*t_)wDN{7yFO$aWKyK< zOi?~o^d<}mhbv;0_yp!a-qSP`jrsCck2Ye{yNwV}EQ|G~nnpke&Ug%_=Y#11)dlPU z+?-VgIbFUYR#E>XF75BHtc81Cgi%}J9`G}wsTn{XO`(7Z!XL4>23Fe)TQl8WUr*LL zCp>kv$lASaCb((#w+tmUn&eOmx|^Cjb6b}U+B*h)W}rPVPR~aZ4h=$&Q=iShNaNJ9 z8eEzSM<~Dv)M>@_Mfi^{rkQUeJo+3wYK6TZCpw#{7$zYyLl8k!L{Y%Nil~4XR>c4= z=26jI1Xm28=)#Yyf}#Q{NLT;ozRJ}-J^bH4Ur$$cg?r9D_uO+&z5;`g%2je!=N~+F zJx9W(u%(=9Vf@Qer_$-ua8GFYc7Ni2VdNG- zn>-dK#OB&@N5Alo|J`?5pqEm_TEP`NfA`wKtA$o6MQRpYg0AfwpGO`f+-p0-oGN+uP@JKIT-N1C%w|?v#b-BhIKQ8CW z&%&2~0bf?amqG5Ih+=5zAhG)w(3NL5E-rUrKaAt^qp|gSK}z92Kw)+;!H{ZI^>X4r zK=E^86b0L1uqHdTh;kn8LuTp?GsF#GsaD>`4AlXk`77iEh2e6|rU9@O!i;~2cz^_9 zwj=L*82`}Z2r)8pWfx(dnL)mFNR1+Xzwvow3>T3_{rfi*V@?zxm;(9+;LFHLhO-h6 z4BU1FVR<|3z6}ug&qGAb0G0z1`L<{f$<=CZ3OFW6bpZ+!K<5AlQY>1rhp?}Pr$ghP zdncyNMxp#(Y1ND@_y>0dh8TqBxY4)6fAVc{Q;cIN1~QXDwl!yy=ma^DMc%o)r~HLM zb9lgMzlCY-wCL?ZK;jLMn_@x(>T>1iMAL)gscz)8*y?m4gn(GVWhaF>u!G{=7n?lX z*?(psIvp~PWL$GzXNhAr#tF^SJB^;+t0s0_*E<|p>q;&}Y?kux3~C_LI)LkdIYXKz zIpeDHl{EJ%Mo>*fv6tRH8koK;+r881H4b>PtDTY6Y-HN#^d9AOpPTPFIAHS`Qd)gv zIh$FII5cU82d48RBo4m-(~;Ip*qS102hTvAlEQ`whCMNOdEPa&5=~Ayso3Hmlxy#@ z`z9TZF;{pd?4RKFoSW}DIOs6ymY#Uy|Ktpw5t|j$=+x1rYb zMogm{>%tr}lFm08E}gt-GBB|>HgO^Y>Hpn$Vl5kzt2-A`WFpb>h&J^~8;OoI!nVY2E2viIdMYQuF- zE>##_M)Di<_?m%EDw*QS-)3Y`!UuyA8TOaSQyHIIYPJ|O&g|Z_(k*)C7P&6DE2D@i zCGu4CZ3p%YzJ1M_v7n!<)tU|F7el%1Nw_@AreA&C(j745lvK9Iq>jp{(0n>I=cm$p z#VJd&9XG817JrXbr?*=5I!IIQcy5D>UkP6nRr$ZF@;<*Oiu%J3bS3v9`jjC%a=?9z@@Kpxa9 zta;9^HRy+M8+5|w6uBrxas+_gjeC*c0NtUQ04OIFnF>vj!;2&?`DA2>Nw{{UddDT9 z{fU+N#Z1mV>4o3cX%B9kuy-c>zT{>55T%EUh|t*ZU>`|v45I+S{|u18(_M*qViFnEHFU85<9NWNwZX|zf0|$G$4-D9bBg>iWa-<@O0Mr{BYC;6)icu$z z*#^R}SJ0l2ORGBsOkW_7O!meQgW@_EKl7IUvje^bH-2|#DPSJXI_CWDndb>wLGQc$ z>K)e?joQ8+W7f!OcX}}d0`++isCdWEHq`hFBx#WRj>RegznVyZpq3DWqoYaS;kRH^ z`*L>hL~iJ8Z|AI&%Iqt@;hSfjj3qvf2if}_s1cjvP@9P+UN6_OtG%(m_9O;fPCn9@>vL_uL>ufljQo4qM zL#w{{Ax^-OHaWsZnZ+pJxl#^ykJF(|Dh*PLRAyFlMV_SFJ>UT(!0!lR`=N^7hb#^d zq)^6!bi_)AE%H#{OJh6iAH0h_jB(1ZsL~O8UL&zAaN>J?mXc!1d^?-p4(%ADb_KaiquV$F5!f&5S1ocp)pB z34yPbT5n99)p+T^KX)x+pnOC9k z%FmSlR{qmDWl*6AD$l{lzuu4$Y#3Qh(z41Uu~-X5KsV3AB@tq{cR5xR^Iu=RPGA&J zxmxZO3opphr9aZC0~A_!$cdZEPgurnwlOQ_U;lix6oT==mIHUap;f_LhX%S2W8W-8 zFX$lliNRobaS#;DZ*1I6Tp(sq9yD53P|?WPLDi|hZDI@Y{%!J`SKeHfHte|HY}^QW z`efRD0puy9;}gf;P>`AT=8d~CX9c-g(v?Ia7>-usk7S;Uv~o^E^c`+oMJF^I+GewK zYMb=$H;WsNCm|sBZ8DyQ0&09Gmn9rlQHnRKPdY zxmvj6{)NT+?#v6)@BjGh%qMQk@N)0He|7D?_vQrYTRy(Hc+V}!^=X3u-e+q73l-T= zkK)G@S0Hf1>-&8EwIpqsXMToilo%by++GqWFme;Od(x3+peK+N27 z&*I|8Z%G40)5dqOsg76RfCR1ebR&U)Bz0SH(brr>C@gZhDnBW;PXlpfjqjDlYei={ zjIAS6+Zb%%z=$yk0Za^ zR8xZ4Yvy3kYzhXk$KfFqG@FAk;fal(VGl#5v;ze+rlJrNAaB+{5|Iw&zwp}*b_$eB zqpKllR66-UuY7KTq35##*|d+rkkD;71*h_*JoCOme}12VC*}}LUn=8g@pYJk!Vc!L zK^9lRW+^$WP`(htcg{g~eu{%3bxHQ=8#9!)Vkskck=-HQW~ncPM>__Lt=HFq<8f%f?rC0f4oQ|HA$a-vt05nm+~kSW*oR zl^7A2R_mfv*2UZevy!_9YlsZ1r=fZ!j(r=d!wEWsbCu>W^7|8jA;soE-A%LV`CIX~)Mf&+fCfq_B>BT@M!*TZW;B`TYYZvvIhKgQ z5Hp{nNg1C{r@s$>VSJ_#Scz8tD_zXO{(-~4QE2B-J`Z=5-3&$U_ylkTz}xr@b{D=Tn3j_A?P;p>Tw#K?0|xLl39k01ZamIZ1+*Y4?{(a3``E)iAa8?AO^c3N8mKRNXUf;B7;GjMK<(LV8dUSo-Tu% zQUU^2x}kXLlJGY&namU@f=ljGsB()M00)nvw1sel;VzBs!H=e+*2R86Sljzx+#3GRZja#aL zG$EiRY`{n~O^uSmN?sKb(q_>WuKabJZfCLri71~bqmq1300TtpaG4lPJC&~GFr1xX z8wKvxi#i!xt%9cHGQ7zI^n-E76CNg8jXgMu5inDcjKxfsb}kRg7;-6{CXun!V~dMp zopkKU5ggK}{xE^zLx^{KHol8}5_f=TCc}A9nnLz*m!q9s`Kib-=t@Yw@n?b!4Vt4k zi^HaTE=N!?CR~KI`<7w>Y_}9S7s_{pKbz3M6{Lv8RfYm?udYVret-Fu|Ab5 z;^ss}p}59%>I^JC)(ij56VgP%Xc(C=XRT9X=J3u>>AeRJ?i`hiT^1J0>JiBY7I&=x zwA{uov2PJPkbGSLttP6|NDQ}%>Ixpsq8cToAW4O!;?KKqSdQOA3Jt*&@H9sU-CPYv z)#>ALc?|qj455XyRnYUEC!rENxkbSC1w@j7hb^#tlBMH2_8bW8ywx#C1XhA=k3;E~tgJ=H=REoofW|kT!=A>= zV6SA5?NR{ZAc-x3#%Rb$t~6MQMo>MLts=3hb$Jb4a*(_xVz7*mpke9)YM_5=jkr@n zz@?FJX&w0we}2_-Q;jhv)1~cz6Z~;3j))co~zpC7Sso zXRo~6?{HG_Ng72YvFyJ56o_t-=MJbZ$ERROy!<}f+QEI$=E1Y?&`ukyw{GKk>?;HY z9>;8Dy;08|a>Ejk^=d=ASPEjhV)|ER6@yGXBodJj0z!YS4;>70cg7Xv>Dfw~3Je?U zr#AE=mCj}`)N)CulqNF@xqJ$pNu%K9zX%L`o>73&*+K#n`b2j;^RcU9Ij&9S+4r_D zoaSit_h`5(mS*MH@nx-EN5!Y9G_F`Swz_NHfZ;+EG3i$`m=cb#Z?a#= z5z!em2}{yHRTQ$JJ*tu=8QU?X;K>+FhJvS;&^_DfW7zX_9=#;62Mu9DFx%>Te>1XZEaFlbEb3`V6g)H)>t zI!(e7B|#*8jgWvb>8>1EFbmlJXp!K@97~dC1?o{iz6=`^@?5?K?g5_5D35pBVzFh5 z&cS*>$nZwpG?tw9NFSX^@ZD)!!jZB;hY5TMt{@-&#AxTvDPzWY-FVLjdiyDq_vpk{ zZv4tKo#E)^m$`Z9ep)RM{ksGMm_?5=#ikI*W~cy|9;+!u&;-23NgpZ#5W0}f)*A&e zkx2{1&lCzFra^~C6|`nzzPo_QoLN_dt!6{Iy1K=6YN2l_s!ilG>=EsBH%%>mF{g|OiW zl3k_1xFZ_%21^RvJ7GigW7uzb1};k{z(nPj_y&A%j*1D~qOy={(uuWB5%w~^{>Md( zGKn_56;|Sh_&-4@w4&}B1=LLl+E_)A;0r_92Kfs)V5DXgfCE)6R8tabT7<}+^?FU6 zHVJ|C60h}u3Wzw5m?5kJEG5uVDLO&coLZSRN+a*DfD zVxx*iv%x)$RGy7OvvFv4xUQ527hX+0(qtD1XnIvutdLBu2saysaIWg9 zR9IG0Nqq+pw-?8?HqVd?w@tbNF*)Ql0m^Efo*$LibxgvO9~?;Wh0@WLg>DW*NV!$L z|NM1F3_OFLFAGXllRNjVjVXhE9=F6`TY9jk=rX3hf1s##=toENxIm#*%W2b8DCAO6 z2`1X_Q8-$@iT?-|3xBlhFBluTb^1-QLg@nXrPR-386{Kxfw> z-HZae28j@~Y)DMvTL>2d3ZPq;(YtJ+S|WOWUYU*_XToJ=`KeM48pbi1S|&3;J)LK9 z^(?5bA(*5FJV=47!WD2zVC!EoOzgd8!ZlN5>-q}LX=T$E4*$8kOXgg$ikVU}-q)cp=7S>Dh2K8#@M1 zxmsqDrRFg6rI{R@^l%O`8Tr|nJlGNJFLq;W2|sI$>0$y29eDW)6`q)|xu-5bwh_u+qsV59@>RVWDpxr(+bE|W-VW{|i_vG)=9I9yN-!fy=6 zBg#xRE>+4plM%@rf8zMnrxvBMltPh|+Yg>Txu=iAcY6eiZtOvx)9;hcDS|#L3jlh6 zF#icji}FgvPYoIh3zAN`G${4JMQy6vvjj1L6Y6{{6H2SU%rJ0i{_eqUKaH!S(F`1# zuX_Og;29YB?eZ+2pOa~eefrD3^8QrPd;Y$?`o7);AOO-UL2ToYIh@A6hu;jR7dV8r zGF-Oe;~g9|7hMVIrbC34t>x0ecylv&Dvk$|Dwvsx$uwF4jv7q3$%zb;2iLsbj7YzT zwAbi9Xcb6l^IPnr__u)KHG`+(B7@xzJFH!9)2qbC{*6MXurvm-^Rjr@J(N>u zZA^wO5U{hkW){oDV>?4Z3)sQ5XHA3s1-VO}?H@GZ?`LTRy;mLZ?Y`aBt12B#_I(I! z;2E4kqdaX{*|*zO^zJ{fV(vg~?f)Blir_*RAqKvfDIg5#5s|byjT&;Q9ZiCCTOq>; z&fzp6uWE&U+e~-?i@vLsSs%yln?Oij=9eO(5jxL(#IXGN9m+p$ky-e``eFAxu z(DD2;ZAz~*CbR?>!mg48pC6Y>!}oyRpcxs_S$lGtDO<^>?a9lLfgOsb;iS1! zu^Yf`MQ&!BxH3s3v;oH*18^mch+`EyCiKQJmntdNnlW6f9~#zyEhb}YIEIM{6aG7q zTf!aQd-3P41u1-HgcK4e9jN2 z00VyulSSunqUWv-mu~b9ncp(*z3f;3$L7FWOaNG6hZ_48el=7Pc1$5)aAJla2uQYe zMh-FDZZlOIqY7D4HdC%qvt@3jz~&IJv_>P(uZgLIRshInGLdG~1PtO6`2uIC@Y5e+ClN0p|M%=}oF`9OOo7woG9? zNTa@4?whKvL^-Ls!%`uKJh0BMx-mkj61(}3BFTc*o}Xf?ILr(ZEMNn%6io6t3j|J& zpDt4=Sw6l=_j@l_uVn?H(L4TkmQ&!Evq*+l_AK>_>`p2%Mx%-(+@2k~7rHp2cwQy6 ze;9TRn06R`xkcCCpO^Y|r5%LLumA;~j-`3vGY_1nPvdvP;SYR9`t6XaMpOh8jUI(W zmC9j{?$$(jS5U{Eh9jHr?M!Mz>dugj$x9FRN0}_8j7pcwnT*cCQScs%X}=aY96UeQ z;T4K3MplGnu;Q07_zd4=#}BwV&8vHt4d4?4?Gg;d^|G!jC5-Wty?Sj=L6uhYAcbli zw381(IU_0{MOKKe;_Ir3%i81nmBry6g;?G_)T^Q>yZiGBi8SBWqh=Y#OG7G&Vt8g; zhrdXJ@_yl%&|*^2A7-izX5lD2S2KRbGC94HF`3t8KuuCq8^6YWi9Zj$W2A1 z)3a0%+_g(L=s+U0nuzmdo!=Otu&5NiNGcUj`{14pshCgDh$AVU0fsNop^?B})U#_P z1xGc%b6$m*lcT_&mqFVpWoh4K`=(WdZvN2mgEMNg6SQpWp_7N~cE_<(hn^?k_FnoZ zT_hG#!I`@P9ui~_{2Kc_{xT2*c0x7M0hm-bAnXj(fEh$Iy|O8=+bB#5Q=yj#JkhKv zkl$k!f%_NSgO5v-DXDE#Z!`4UC8?AQ{|V13a2`Dy^Q^7TTMGGyb_EX~@(8Sgd*sCd zZSZ7tICZpBJ6MzgjXWE#Vn4tigu^vMZiX#XLOBXHkix2B2f%Rwp0uc3LqXn-b_H@2 z4qJ90nF_GEY9>>~V}~*+xUg8uz8|t=Vn#xjv=wssAF)krc5VVT2*b!^>Y1#}#6*tG zGPCgq!La~p3;g?|rl%X4&bw*!X@WYK))acWb(}~(AK_x0&Ytd&1}O<>M<7}%!SH+% zj2JEHr6E1+RFcCH?P&IzhnJ(0+5F(XEEv6833gB((@MAy0Z?BrmpvjT< z6Mz?+X!W*3tfCrBsoKf!1!2knzY0D8&UOZk0^Q_YEKp-OIu6Sl4RPs8qWm3>hK&ug zA%3G{lploC0zXZc&~&>`U$LT=4enT5=mmfKJV8(?>n|hU>LSvBfGH+6Hn30Qp8*d> z7fKqNB4r1u4kJ|)x!dI^HU$!rJSAx27H>Q0M*y~{c-v=bDh-{R>hBV$yh)-$ zt~uK6Xu|^wz)$;8cN{3i3TL9A#IwM5U_~+!6ajAcG;L;=e{zoCH1cvveVC;60h?UFu%>T0U^16C*(Rf$$j$az2IKfd2tZ zA22S-U>3ytkh7$U60S(8W>4$xQ^&{=| z4h*`f@cOytB3cwWhRIbY4{LPJ768ZB?216;>Mq`@8VA*FV1NccSU5WnkFr@xj(14i0=@PYm zU&a^Psgp`@rZ;l-(Y?RbfJKvFW4J}B8LH6WzV1T2PRc8z8K$+(TNh|LV#HS z?LCp=MJh7rv6rpav!X1mp8Zj_!N82Lbb1b95oNLxwJetr4G7_xN|sHdlxPjU)bTWd znp`79$)gP@gyd~gl?Dnc_tg3cIg}oi+O1N#)hdq?{{?g*(Ca)NoeAn5<0kSq4Ey57 z&p|+}gZzXPts*3a*rg4AIzC>(KZ|9=X zYeWL$R=#i>rg)2r!F0({*5bT| z)`H8B$#z?lBUZ{N)|Dc%z;vfNzE3RST$HT>nMzT}gI^k4--UC_4{!9r+Z{w7v|_6y zGF6l0iDQr@54~og-w6|jsFX-Tl9RZS=;U${+43>$J!KC14MRK(gLuL8gEH~3%N<7gHav$eFX%spx=VceZ--8cR4M^gs8S0~9sKJ97cN}5Kic1ko&2Fb;MHn< z0o@Ow1!I5oexTX{4E=5xS_=N(4wQTcJwc$fpZrarQYSh=QVO$tqO>NbXjW%;sj154 zvAgD$j8wyp@^jPpZ}BI}l3QpfPA6_+@R>FE?7Z{A6woRJTQMkJA#%S6+X5XDBJQhdL}>qV&aTdf0m6^Tmuv)D%jkOAF5MW2ZZ+ECd8n;D5#khL*D2Xd8^ zk}iWjv}QD}hM}96I6GmRGNmIob$8zsNt>o@_#1#qf5#6&oAANX1J6K(&Zo;C#(m`v zW4mEV3LW3UzJNy{G70Mq{RnFNrPfrVC299{sEY_qhr?5$&{PA?B0OplY|Faw1j0gg_86m@OTNu>l6z%=Jhtui9y_Mgd0&EG7y9-(|W6zZGxtnQ-E-#by)z@3>kjNcmrS19f8e^z2sE*=+o72ai9!L2i7P083+a+5 zfDqr*P#e1_F89d%oh&a?!PPij8mnvU;y7)@rG37sZZ^ZH*PD{zfg`X0U)(4V3-}L# zb3tgeG+B^ug~k^@bXA~NQ+(HZWPvCNRPA(XY|hbPoS$N-MC;cMe`5#)g*nMaZRWDK(Tu{G<5Bx zHmCW)IY0tqcp6iW9{l+ANoUsLw}wN>$a22>owv{8l+mqFIu9uA0F>OwRSqj+2Zjd0 z+>-j)z>t)q6+Eec;pWxZH*wPF*Ucwg-FDB;seyTWcg#Jk3)%N(mQVF&duFo-F{8{M zWx_h~)J~TgNXE@LlBR$@#^0a!4& zYY^pUw{?Kna?wB?#vnOYa5r{anTt6NJ=(@G*o(THNgYzZ0&OC`zuvhOx!y{W>xaN3 zo$cfzsnpUpf=1h#NNZDXOx8450fz1m_>39bKI}Fq^0KGDBA8lPK zHI)Qa_NA0mBT#1xq+|o>P?$kn$wjtTD%Q3p;PIXVNqgGpPDU0Jx%r^ZtFk5xoqLpK zhqluZ=yDAZ`Tk%jrt+$6J=m@7dzl-ai-!gxVv1ob9-Ht4raH~JxSS&McZZ{;AogBs zuhSGWrX!BHt9(~?XCUd8OT2N5BV+#i7Q5!A>U68j(YoC$)wfl(4C#Fpr47xShi^T% z!OWsAQe}!_zyeH>HIq!?O#@S`#Ur!bhujbyL5i$@EyyZ z&D>3a9H%c4KOnl{7}LTggc96Y5>2F7!ve{X9@D5DjX^!77@hUVDgwa<;_D;b$z-?J z8I)qufK&SHzUS6XfaXr+nS@uUu=K-TX8_&_I=%3*q20f^{`%kS=H+j>b7JDocNb>x z$JYbct?AR5%;|Lb=+B3S$`^QrccV9N$@9n$gFe_m&;&vim7BGrc!}-^XkS82_{FiF zezfm!Ru!@qC%aFLo?Dw886V$s`TWk+#mlk(z6Ac3;k-HLgX@WBhkAGTu)DJ9M0ouN zUB#Y!x!67xqG>8VWCpiV+Dh`rR+0s&M)Ga&$EIg)9P>>dE#y}9A$5;C4;7EgxzMm7 z_zrUyqkJCU$R!h!Wj^aWO=w+n{kh+<*HRMk&96 zee69-W5w?1dQ?4|9{MGSZH-i3rIqqSG~O(OZ~c=>TlU=zz-ayc9QGq$5+cmYc;E|$NC zy|Nu%z+L5^Vjhr26XnlsOG`2-y_J^0`@-!|SYN7NDbigxBeeaFe+R73iA!Lx ze$Dp#Jlav*0+pBZ8BRb}qdE3y?+h%639~!!THZvaz&1X`Jq0l1s-tABySiJ9w6Zg)~ z-+SVU`xdABuA84f-`jhBe*U_?2igyYX7n|eI7OSshgK&svaf2bbGF?H{{Aa{owl`T_kcER z+-bM zt_VONBdvX5>v!#;r^wcV216GLnraI`Q!Qgu>yAWB~+Fz zbj}u}#K4M`reNS82WEvTcgQ%{Mpo?HJK>|j#eysWCpVdAi`Wz5a)8>BHqzit^v)gjRR^s8JeUG-Ai1&LB?^)z1 zg#=&5URZhf`@45?bx`82=B{F|ZaV?&3T(%Ns-VFTR6SV!xALuDS0{|%2>SZAXd@xs z#>BCL=ii-SyP%f5V*cP#^ETd?xVbgZv zHHYmhKZJd`{6Xx%fo;)A;Jp*^^@p}n-259Khg%=}p)XSuoK(;aSs0VU9SpICQhiAQ zD!0RJ3^BRzA3ykk;qJTtr|&J^sBLGYdr()Cn7PbBOF%#3PgEtQEphO3@JYj?JFda+ zzBasX{g(Z)HzyhLyv3spYJ!IFQNf@&U^&!r#sVqe{?NhIJu+KV{t1ruD&^caatjX z^0gw!mTR6yCsO1Zj@7Lv0yhy<9Qt&*83JnX7wK>{UvdtI58M_Sa*t)Frw6B(X<)KYMnzbY;P= ziprD+mzED{)FGRVgVU0imr5s7UAtB@B~RN@4YW3Iy~t8EH`~}!(1)X9@G?jt;J-3nv6=7(UgB@!z^)Y`KcJ}v)IO~P+0mDqy*So{r+3exkYreg#oaS z4qUrCncRKtz`(V85{W(64&;u_1OhY1a=BxrV6b$oGt{d$DWjH5e{a$dQrNY2}0|RGf{Rge8fK)p(*flMedoc2mKn1RDzB+j9KYNcAx=-|n$CQ3)#5A-tH|$6${HB>Y^y#hkNgI(xP&rYDE3VC- zMtVal8@mqhrT3K1=5wc~bD16U_K8fU4hP8Gvh`Z$1-U8pc|pU~O0Gg!S|1kUV0|w? z_Sky!aNV~R9_VhP4>Ts;JWlf{{jWUsSo0vgcNd;%8w1Lr>tk#!;7B(jEDUagM_B>l-x)?a_&g|=a!nMr*Dpu{(@JUiX|-SyYozNcvVUPD^(=%=AtB*JBb2+sde*)WCzTG#1(iWQ87BV|(7?Bf$OJztOS{=3Dm++^S zK67E=uKD_iFuPY@eYE@?jI#2Hw&9=)RBbp6&}-%sMd`)n5z2XVSx_@7O*;rssid(0 zl~IdHGo5a>ldXFjB!6gmkBws6wK57#dnuk>j$K~p-9og0_~+ie7-RkQ4MifQIJv%l zQl3gGHrk-J?w^XU39W9$*VF*_i_#+*3Qi+NOOL>{YV;O3KR&8XW;K5WVHG&;Ty(wM zwn@nZ@j6)=j9c>+p-2%KhO84EyQlAHHhZ+M@3L(6vcCT5>HfZ%Cc)74mg(uU`NEm$ z>9=(C9a&mBaA0ZaNE=WI1lHDS&2rMvrDtZd{?p5JU4AI z9Um}%7sG;~sH+Wxh4c?sg)a!bhUH(0w35~;a>g{@CQ}EB_m}o5Q;Xr;k$#wFXg($G z3W#)&k?i?yU#ZmBJmHRk1T%l2ICeCZIy%;KAkQ%A2wIND`1a0HX=$lc+Szt4pt(c( zM~&oL&t42_bRC&LJ_t=eBlC&1QX$`+E&b-*gCA+3LRUP}XL%gs1ie8=IrBT&8*N+^ zZa_nXs3cz?0bF&50Qnn7LCqObhmPHo+iP)~CVb&enN3+Rr!0HM6Ej+ms$la(e2%<5 zY4kNMzuTD5S>0xpPR3Gktx;Roh+WYs)!Ix@Y^~y(q8>LC9kuQ)=#^Nb23B=tG@zfk z2mA2H8`H(U+1p#rw++z5Oyu!~WKWYfqFD@m9GV%I3^B7MZWxO+$yxXA66PyEkt%95 z#S{i!r_ye832d_nfJW_gG@G?KqJiw?|2{X(m-8s_e`@-(4Xklm`Bm?@7k)7ICi#h? zVKpV8dE70v#5$~BTrm}+3!wB@#vJVLhxT(61~m5=JHBg-&ZSXkT*gQfcxw4&=d=@k zFmCx}$F$2e1-#T}*pp`Rm_p8@cI#7uPN7`UHN9smmK+LjMla zHO32J@9qtjj}_bGinwj_){k3b^V&6dVtn+|8&&5y}?v)ero{=s%j0kJWkhDU?guuRh{ZNKgMQN}FrSd=L=Fr*n zoFbW0T=n$RSE0w}+E8rOc0=GZ0Mom+eBkhIkuzle#FlbqOM|bzGS7x4bq-C&1XYU~ zanO~W?(+A@?b49eXfx@8dcWG%cOTez;qVe<3nuyuNt?S)+v%z(QW|7Tm81}_N+K&< zp8}G|96^$3vt`%3*7oQU8N#1fw#SSDz^15$@ROtZ1#ei$?!Ve9{P9TPphrV#bo## zZZ8d^EO$fG1qMOmQf>LA`U-=tS5*PlBjK2@9NYYN`BfL(e>LVI%n;~ElR5n%LH8>ZhGAR@an;OLa6c}`SM+4@V z$idUge9^F1Y2`Z=>84q=+T_bF*RrExlk0nQx*mP`cbv@GxtS~T26N!Vrj+Z*n!1zcL;CPH^s_6{89)UJAzMbJ>_;lOy5D zTWJ!>#XHWT0 z4`o-t683pQbBPB^U>zoVMizSd&AH9~oF@%E;b?|M;bd%qnDXh5SR8iOix0XyW~T`9 zZyN}b?MKnRL|(v}_o6cf#W9eQ23kGZ*Re(w!6q_|cFvgn%9MR%cE_+WBJ(N7gZ)=@ z<&SM5)T1_ANUb@vymU}0i>mB}D@(KFZ8i;5bX%`fEj_lekG7!9i?>amhU;-k?^`w+T92BP&t=c45ARqxsFX$&&g$wlGtw3`w8Au{V5CXG2;W4* z@)M*nUfKlf$roNgxXh)2O<#}1V5O87O<%pG;NY48@b?rcXL=mMFO1iEl}E5bZqn!jt| z!e^GA!nYvKCsrWqEA!~9ueJaIA6`2U#K2on=mo6s;ugd9V&7~Ta0{^jSR+d*3@t>V zAO<1@XlV(s_=(NyQ2z2TnUn(dz6agcGrF=1ya0QaH&O1%4bZ6M$m&<55{eBFrKC5Y z1(z-5H{b%OpxhZUaJ@AaPma(DBKt^b6s{wpWFFaK-Y>froyW_MRcNLY$^zb!PV%rF_Bg_{anx?6)GO1g=jU&V ztAtzqoIXWw+vNP;M&1lY&lPx5-vbm+qaTB ztLYgZL~HU6U&Lc8s65)4#P}Xd%3M&|WSwE(gvo8$y9vQZ9X)PO)WlZ_jCzwzEA3R+ zN4jiLE41#D=~QO7RhKZjTd;;;4g(N0y9XkE#%d$ zYoDE-;>r0G_&+_jd3MbfU&|~Z*SQ^(H7rI-C3p(RXi6REHsH%ou8lBAX9az1*YUAV za9~itkmHsjRrSwQIOW#^R3HSIuNjhcU>1y4u<*^DQt`~se!3By@b zMbvKILKptexj~kUP2tGdLrZtxzR<-K!ygh>?~V^_#;fMiz!>G4qvKyKxPS+_9Tz)_ z`86;QZ{mq}mhPP^RGl4N^Pk)dwZ-Yt0&WZa%L-RNVZh!-Y!jgJud%n4pT$(=JE6$` z`OR>O*n5J#<;wwr9(yPLDDU3enPpiD+4 zq5axxUNDA+y~e1(%+pEj>4ZaJ5?W+Q>`rU}a__GxfAWJTpL*)#2f3cfL}JRL0-H%t z$mP4mLc3f8hn60@6Mq7_dWa#^1Zl2Y;bTPZWn^Mhu+NN+9$uYE3m^ z@-wwd>DFOLQ>ZZn*e08XK&;Yi3N@qlhh{6NW#or8SwIaaD0a6A(IyM18NyJ*_Guaa zLbKh|7#c+)+J`3Xp5`&%f=r&)(JJOnW1KDa?Kb94^Wd7T4V_kS7d3Jk7;Gs*w=i;= zVW+^nL1sC(6&|%-30jcEsUBL*biOIplQG-PpNkJ zTN^Y@kjwLJrc4Xi3!BWC20RaP!?nX}$mZ?Mm?jKLDi0ViI#HlY+-$%o_m!#!ObbSP z-h}bez)^=fa<$`#XtI^@(u7laq_lE={vGi`WFh%rsg&)`7h15mu-Rm308MQMS!07Y zVX`z~@%o!ER$9<{=uH|b4O~%JtbMyz4V5ND%1@IvN(-zDRr{nd7ODkm8;hLxCi|pm zoQ zv|{omOppe4D7w1|yNj71%~*vlYJ9X}a}mR%fdRNEH)GIhcr?R(s@3Lb1=enFG@xvy zzSQlF=JC6mEsfUEYgR^c#7O{|dOEWA4$A09(V8vYKh~HXC6C1HbPRMHNQI5sQGj~= z);7sm{$KZv9?y;LoA5_&^4xf%=a-duVVewn!F`kGjo;nmz7gMhqvxjeZqF~8lL62* zJYf86CMq}{-<;Z87LSc#cer~s9+6j{=FT!>w7fU4P%WA%afl|1f zh2ie@(L{6{f~dNF{8n39;pAJD-f+|>(?c)4m^m=&bq}^q4pY_Qq9~i$QH_^2@|xFQ zG8rJAhk|foQB-coUpX^(HUq}|I9ywK2V9KJf-Y5%zImc%C02X|wdC_gG{2J5IR2jH zxA*tIZ84V2&G~$Dxg>52?ldM9S$#CNWShZ%Q@ZEm$xqCU6t7!aKHs&zGZc+OpQJuq zwElczCEm0jP%Yt~wn+uci@LK#7<SWRvMQj)bROAAy>?> z@-6Svy5(FYRM(mnJh@xT;w&SW&-Cn!MpwH$uJo`u<8U=2 zvHluPPn>`figY(Bq42grQvBT&!o6^QdhprDm2U!Z<+yC|eO64N3mtu3F$b8J5gtpiwb*v|wvdKr@ zCC#@?fm}25@vAllVgc>Hlyl62hSb32|s;>9FQ}_V)@y+vRGNUVh4n9`Ax`*e|Uz?9}S&*+idXesE~UW}6uroOkqX|Gl;h zE|eM+Y!ggKR-@AmRf3RDph&&3-J3*|+-?u^@g@$aljb|Nw7K7`QkjdU6=S){?7H2DY)2?U?a=8PG*X+YSprXJVu; z)`UY7L)y%6H*#fH3fTq)MIfZ z+p)bFItnN)4D&_J+J3b7@0TW6SfmzN z&Tdg9bkKJ&)6v^;xZ@pg8}Gk$+|x8KvKt{ti>8^7^(qiVBBi|)6;ePK4U|+{ODU{} zZJKk}x89~r8@;MOk-E5>u_kr<>Q)8iB4n{ibYDRRT;3GJbVMkz~f7lR-3~2MMY4r z3#yGCrjx4Ru~j0mip^6}oos(;R2R}^>}I1xt(F+4mPVpuYm(S&j_#&-L?^K92JT8~V;q!!g zh2A5J2SRXJyF$ztaIF@Lg)4v?Nj2;jxdxrXF>wm6un~M`p1r$mQ<*BXECc>LZ7ba$Pf8O10s*)aCVfqxpej&Q~Mhte=#_4Io$gj(MvrR zd#M=MeK3I&eN9roVKySEuOOS))YRm9BSyGl9yO9dy1`~#Fa}&M!sN2%|5bkEa|=hd zzyTYRrezYX>=U^dRzxbwMa~>V6Y^fgrVWbDz-s%xN_?@lCo8@CDo3J>PO_N|l13o! zLB1uLFL?VM5u?gJmdp*><%XcWS0sgO5}i%$#jIXvHX*k}U#}oP-F#-+@{UN4gpj5k z`GMiAD=#J_nW&>+!#vWk$`){1H4gRbUc14e<%yyeMV z))=UvXw|D*5;Xg|0)To?AXi(XToWVJ1gN#i4wm?rO?y2dbds62*SZO-?69TXcKJ^|1_1~lbfR|kb&KRpDH^FOw9Ha-8K`m zrlM3OdPSty3G`qjEwu*JS}(`MQS-s_((0vZ1>9*MVA>R3$g=;f(yHX~;FrRN)HIud zE#%PY93h(};?ihb(Wlb3lzAY^W-5##hlNq6)ab!;E2q1m#K|I*x{mH&nGg5H@>WYm zWuBNT4C>{nLz7bn6LNXt;MC-ylsqW(&Gq%qdii|sY=7UJPiP^voT-sV|1J%>3c)th zQ2=IR4r7iA3j{~xuMyOb`T%@OH@hWi!%F?jqDU@B4SjM9SWWKqhk zh)z~HG#sJPI06k>y1bXo6f1cKb%Rce*uy4@3bw6j_J;lKoW=crCR6K? zplbxnHXa z+3aonBL>%l6Iuu7+FcJd)Y=UBiY?U0GpE6Bf{j(#OvoisM>m{0n@XL1rps4!*n2#1 z#S&a}U{|v*WL;f0OWw|6n>}s|dq-EKQF{iM|MHjXul?gx78kELrHP64LW{_%Lb{;C?BSbO20mW`f2sntg)Cq5;_~u~J9h@&8GxUaK%ji= zMUFw|v`$|slt{VXT4L{i(dY9k9AyVqZ68J{lIRv*qe!f`eFgy>V8LXNJx;6uTG^cKLE4_VqT1} zo4$hXNZ58v^np6%2ZD>2`{2%Me<S@2`)KK)rL;ildu=JuHahu#=Ss4j zkpACuDx~_#(mmh#=IC`tJfoR#Ov?<`4 zyV>LP!!?6UrqVlI`liYSZSx$5XZG~WT~6MmsDFa+F7gTRH%*7fKY)C=U+(6~2f$a2 z#YV7!FGOTLP=c1v6?!6pwusjoX$v&#v_1u#eW)|K&5lNs22N#C$as}XXVW{w|G#Va zoj*U{`sbF`a7PPYf1d#`(2%kE8FH=8Wf}j7^IST|BWi((ZU3PU@BDlYAtc#9L1+Dk z{=sWQX=7LsHkz%@NW__rdfU}aQa~?E&ej%ZVOjU)bb2%LFD^B~)G1oRF-`eJb%w7@ zZgMx7oKCB+GnObcrSd*w6F?d^M_XG*Z(Fhmp=4b>kWQ_72z?IbL*PLYRE|4(=f^9? z7IJUbY60tikE(P&IJqS*L zKCbEMu~l5MpcIryIa^*vbUh zf^^5#U<-hk7H>NrywnZ4d*i}|TM|9~nSJF^vd%?k9;2UzSt=ojjJm*6xd;@`gK*?T z^;}e#aZ&BWNyd_pU95v~Rht4!jwcvHG6nAfQ`9IVmNO3CD2DTT z5Q?)hP6h`ZQErMxlmt!?);s*Bq%r7#Q_FbtPj$e{#aUNCiyx62WvW+IGK44SRB!G41m!3otOO=HkCP%>IgV!BHrVHMVe%^r;i zMydi9K0y$zz|I9==E=eVs6bqxZaX<<98g1@0S;z@Z6zn03nv|ek%d>}9JO=b1!p#$ z^DZ%@n*88F-O9VUZ;17JIK2w>-Nk!>xE|@NugKjj+6kAQ7VGqIzAl`RewS3ZCVTa} zG7pQ3WKIvg;`A=+TG$gsNQrmIY$lb~%%QJP2w#RogRo!T+O_R6>$%rX(7n#nyXXVw zXi^JAmQW=`PEpaq9ir+XyyK^<`(f$eSL(gMnxtY44p$dWjf;^Ji`|3{PYIKPPCrAH z8yAnJqQeP0jfQD_nx+TH`C$iWqf?1qGkO`Z--uJju!PQ%`yi8t@J$O2FYzW-Ej`Nz z?$UY1Vy~`4?9_a!3yH-c-KQ$Ict1taa5Nc06Sj!BOcwC|JOslTB^f-pdAM;R5zql( zXm5w{f&lL#fK4DaPxv8FhTnrU5v4-L8sP(4lW8+OBMT)snPgyvVdUrtGtdc`>& zsuU*clY8tS0Pfg*LSZ@s4?h_kQ@i7K189&WKsH z{BiDJVKe^F=44rs(x(9WN?3G?cDGEkaRx>eX*b;R^o|`!$y@UVnW1>j!qkv6BZEf- z*L!SXaAW{EH7g|?%vD_kxJ~Ya7%qTLgG+u`A83;a*Tz;=O0Ju0j+QJ)~#)6YgxY` z@){+(3qRd0b8+oo`}5VRLZRoC*kTjCXEaq zO+Xr}7ff1BYK>K{Pt~~|8hXw;I}yYLHj@CpM2Bk$Enu0oy$epQ3-7yXzYfXNVYQ}F zga4rms^+MC8uWp}uaNsx*rN8S(MmX7Y*suSnPze-Kj%#*HX`#YE>i|&E%26LO^BZ$ z=K+?<$$S@+vn|W8fmCRCM=Uhe(xS@;qMHlIArFR>I#XU3*X2xFb5?gwNJqGHj4Nr_ zCn7HO{TQm0sGXJXjnlSrd}s*0IXHMu16^-l&r|26vpibFxUs58ZmzCO3ZGQS8)4)g1-r_|ot_y}R1vcD8Xt z2f%T(e&(gKQ!0f|CTks8H^7f-BCYx+eOpw6UdnH7k=mKy%Jwq6&)l{^V@j*qShBHgm4h}Ulo_t(l;3Fx!c)v`giibf(I@?%f>J#4K z5UVwe&B~;D_5ESiDGe7iXqhZzhL=_^kAiUawUp%yYI($jScxgbsu`9S;i;|YhRj>| zDpbbLZ8%6x$3I>93Hce{neDVWIL#_iiY+4!sXVo4$iiD#eQt7d5{OpwDF*pRh^Vg=3YDvJ^Y7`4)ptu4reTe-%O>J#$rcfvCHG}33i8vV{|kSsFQ++h61SN z>OO#`c9XM;{BTM+kR3QXOT+M$s#&5m-g}NnE$pIW3#|BY>id;sftp--3{ic?{;Mw* zDOK#o0|gykT{BGR?gNi`r9Opy?XAoGC6wq%elxd!_l9Q9pkqSIF5H|%Gr@KW7U>+F zOxP?87(yo*Suv)Q$r*{{hNxieRWb>htajr;xM^{!uC~uMGx!I6q3d4VK`YeEwigcl zreqr$4N9~+u6yfX@~=-xEzIuk91T56JzeQXPbd6Sdkr1B@|0(KWk&I!NH@NN_?UYA zO)K1-(Im0VJ@TQ+H<&XqI<3Sxcfql*K?#h~yyDhX|0pDamR!!-Y%LW2$vcP5a?1#u z$T%_fmjXuO71kFc0n*s|1kyuL2Zj<7B!v9LxB&S{qz4ZpcxW^{`)kV_rh>t)XWF=$;8mAbO43t3aCYcd)9dKV`{8N}a|*0`9Q#Bp^-9|=hF zyuTScvZ|CT<4itKV^8XHP2rLzu}UcptTS}q*?mzrT7tiY3ivtHQ+*7JLkpaoYjH># zobOV&7DjZIT*hQFW%FTW^CFkoHix=zjDuxkgdr{+F-S%M2@67HVGiPZAWD6w8CZJI zZxm~5%VuiNgfuje$w>H{>^+roR8Ik?YwxHMCQH?~{>^;;BeY+NcLyTwqAIE?BwKug zx>oJL>1_5W8pKZxHFI{qL8M_-Zp$-bgIO<%z`^M{@mpG*5&{cb1QRl+VZk^}#AMx7oKIj6pv6R6(N3gb z{1*mj>rT|Y$vU@)L1$I97+4dM|Eg2z^ykz|mCVSy@Pmf4*(iGGnHOV2F%-rx z0Ik=WEG#3EJK-c-Il2cgwmLwo%YAZC(F{vnWH15i7<26gXU3p6760%|%j#9l5|x4u z&Yc(fX2%4}a^U;g)fFp)mnV)zrbbYYJ-z1wO$|L1PND zZkDqYoazoj2>KL^DKHxOIDJ$>=@Y3Gyj0Lc)sjo_zWSwL$`6WFA*$0AA4!KUD~MDY zCV$bBadUgKJSA^x!|w+7-?u<&Vi!JesQIc-z$USBS)*;imIFnxj?e8}Kf{O@rmg*x zgS0})q}Hg?zBMs$^PPnbZ-UF-3DgqFY${niYst2)jmseu{yD1@Oeq*xb4@5*eV}yXAP+g{xBiJO_Y`~m{?jV zXIrvvTVkOLNqDKaRl~|$JS`E49%2k;mNIC#rp~g@HL@>4NjRw}s@K8U*9-?hz&SQf z+MtGjDgY5HwEfjJgW%NY-Qdy96E@O$eP zfE;Z}R9`Ylb%I>|6fZ$@@O>PNEICO5ly{8k&gJHGgqE*qr{t2>C9^9p$7NbNMQNVt zmRn_UR;|SM*YtbkaE4dWd0O#VUg~y>wK~>eW&bCiUzAchm`=v_MpoWv=3G*v5B;w2 zMdz9BZ*|#mH}(6N(yC*?8)J3m%Vp-gL1D}V72ZLsT-(Di3r1u%Btn` z90|$PGUU7*FttqH_Eek7B2I`*^V(Sjm7t^>JH$FU=awneKWbIl0JpRtS0fw|u88R4 z2cn8_M4vFUHB;;P!sQ*jNz!(Sy|a@xj2>C#X0%$7W5JF-cY4z-Gv|~!mh3A1vA$cC zH#wh-vKytbzNw9l>9?l^o!PGU${d_RBV!*Xmo0jE@1m$_=y(D#pi!e5sm#esI0++d zTIN=IRy@XqSNNrYl`%fKJ_y|h!3#Q+zUdCNW9B(X2k|Yeg3mRsPr;F@+A$CuHL9sl zf}_<{Xyu2Rc*Y|E)gGT>`mBr&R5rvSgM5q=CptM!$mh0zocA@%B|o?W|qH5+h&UGFAOC04qc_2E2R*#qeF@YsPyQeY*Iyg()mW|G*8V6r7FT z1###+Cu5M*pZLzKJnHELI7#)ReUdFmAbvXR4X9*t*K`n+HSipqmzIdd$i7w?kSt(~ z>5A!JJ->G^wN4sQ`Zb+A1jILTme}NO&deky$8BP2dmRb z93!KX@|qiOUHMEwqEOJ8hZi2nT9q+o5UKq%vR6`qs3O zU2R*cLuvdnJdU6z@URnY!$aKmm!$$mI+@lNzQ~^~e)NF7U3=)k-tZBa`pNFB?G5lwAAo*NW8PO$l?cZ&ahczi} z3*PLSxhN87nm;>0`|89_GNx`FuTM`f=mbPDK$fKyinF_g(04j1n<|_eiV!zRaLMa| z9bm46T|mUe;ANASB=UozyzwBXJ=UJ6Q;UHQG{m|{^BJKlBnO%(VKNc=MMm2e5v$cq zQ&?et{q;dKiXTE5g{;YS=>to|dT#DlF0%el^9%c>X7dcNf~=HqkN@Cy}xC}oWy7p^JW&&h&3xDX0yZrDANz-dIrl@Mx_#&l3mu>nSZ3y zlycq4#TL1j*G=CyFS7c$o%1UEcWvhtjmBc>ngn{508;QoK5fRc?MnY6=jT^N@$BzF2 zBvarIyn=^4QIk|oLZxlI5lIWgzgC4+4t0wf zM>;!?g4$V8iBUhQY%rQx2`zO9k>eAcxQIUAlb$%arfOKmj0gd^>#C%?5*z<+eC4!h z=cL345CQWy>h`COjT2Q`|A>*wOe%+6l%w+4_(xSX_x2)n8Nhg$mZd$*#MPq~vNJQm z*;)lI?AC@|4SN6r{%XUihVN7z+NyIE1)mn+TkvXwur1)y8ia5&1)dl1G&sa=7$#-(l#V*yy1!}r#elQ_v~ zL>;sm|GmwcQpJ_2)B_Kkl*zn?g$2M+nam6gZJoPkT6pEkMn+0?URzpnHsC%^Jp8RQj5a3t-CRmP{VB}_m8uvSW(Ze5aA_^N*)uX6-U+4@}eAP=ey?=!tx)N zP^$7e#o|8nv&zD87H*sS%|~y|0HE1%{e6#&;-mN-6vUt9^T?mey^%ln?3XHHHzp{= z%nRQQ&m#Y%+w30?~y&f}vfgw)r;6xFycvC5nKu5-U2EQaya0Yz_o)|`;IH6o zP!#_NZNZ=Ca_E<^$noMl0y`52nPC2;I4@5oWf#WWOAsiS!U>VMyN1=)H0ngNB#1B+ zZj6~F0=a=%5=}5mBEc+C|Bi>(Z%tBiaeUnpNM7wK{WI@Iar{FHb>dg??TPD0xV~du zVq%5X7v*Yol2{>IGpqb=T}(oGg^_J+k2SKIb|us`$l5G?6J+frp=J&BY@6C{WO=)k zH`(xu_+I3}zkD}2l7cK**pM+asZlBWZe@$r1~>w!K4ry!J zBSGRaL=D?3Q>m?$H)pxlTs6wYvPn6lw;J~@xoumJ(%}g)2VR{&vb_m%M1c!;c9!vO z16q&VFz?M#$>r_>wC4KhGab@^+`npB0^I9~;};lE`J|tncqHTZU)xTxpkRfK1O+Qp z7EDyR0IRBFWMw3+R_DXhf6hKUml?gMMD?qUhDlwtoQ(|0Wn2kwQ)tz>7D~o=k~}Xd zPzpRthJP^5oH!_NGG+|T>KmOdju9is4HKQiN-0a_w>I)CKnLI#3`bqoUntCim5d`$ z9E4URCrk44#2qD|$rON1W&?1ts-a;;%>^YW6k$@5wh|x^L9LVY0%2wFsJwn~&52_! zl&Sx+>qVvv#If{6N;; z(aQVek$6=3HHR+RruAssV*f~?fe!q5r%@B00=Yt!$Xuib@H3xv9LCQ)BR1Jhl4joK zw6bM&a7xJlsW?qnuS??}&gpn7t49rbY(3XC?9dU}G?(^Y5m%~A>fjJmy8`F*|*{E6R4Kdsg9)iSSQd|@A>Xp%zypAQ-Rj}Q_dyS0I=w~`$hs~Q)&BBFZjNW*&8MV zUlZYjMj@ie3F)-y69EL0Cn387u9Dz92}o+)WrBzS(jssbP{O)DRC^Y}FIXXhzat1D z_{_usgI9Gaue^+Yio<@&UitmuOy-SDW<$4BtIoC}so0a^IKY|Ft9WbolOac07t)ry z8y#hBleVN+`2xyzeZmY0#^^;wCdMw0y!wxE6>v#vQWp|^@WBTQ@QX$(117YKT59>SecIUMDVR!ma646hgBS&9+abQ*J1lFyFTcr7^YQcI0 z)*VL+$kvjCB zUcehkSrV-v7D&QV2UIg3xGo`eaczfh!^0`+Se-%ee|4V2v{f1PffgUr;X;lK?pTmc zh!lZQLDy9?#1oXbu->s?313tr;wy&AK5Mu}Fk zo?L`e@Z&E>9o`Nfy?vMBOF;4M`&c$+w=Z2x{_T1T{dcWR{{X%w)cr zQ)zWQQAimEa#AT%`6ZI#e+;3Mcy$yd@%Q&+GJ8-t^P}!IbaxuR)xECH71O(sS|h-`e)@zr;BC5{6P&K;GSF@h2tlpFXK;pKYr?4)HT}*1thOC zM^b7?LRUfR#t17FA;X0ZL%exvqf~U4qwj5rZaiU*h|2*odOy#3)%2_Z&C$1reZ5`T1S(h~U z^$v}f?`FMtUtLkUbK0P~P3c2FnK2{wZ2Etmer9GTmAP@r5+padizb7mkAj{noz2i4 z)LJs2*7MuztHy&yN0(l2%zp`CZ4!{FD%wx#4Q4lN9A`J8;2@(^H&6mxqM*D@RSQM* zKGYou{{;sD-di}dds-Vl5UxZJ6{IM;svM{cYmxU}S zl6n-hCg_s{B7Vl-tU)MT{19J^CZ*m>PCIofiM05W5OEn+$6|2)&5V$_2?}`v`WYb+ zBhtZ89RyWLk^rq%(Kh|KB;bd^!+6FZ({y!m3Q=*urfl+4Q}NSCGNbY#`V}_+rF}{V zwLcwv;DLwGh;N2VqNeR-$MEGsB{WOfwZtIC&)iEtL6-$yA;tNmz6MSi8zlz@GeNcA zsD`Fdb#OcblB(OmlmJu%HxVhmqjk}u)^)UQ-MZF=3;)Nl_@a!|&gHf(bxS?Vw?RlI z&0MtDIji><_-YDOHqm9z`pRYNJ(p5<@7`URf2n6ZwRinL`wp*n^KMyS`}LC~Q*O8< zBzN)NjYs>RCK6x4#Ufe)u)6rHJFa@=U%FcY^N_px(w!MAdnq@Lp)-|VocA6oYXI61 z;EgglEovfh$XETxFFI@a(#mnFQ2G4)UvO2e#*jVh!-*Tx2#$y_JK$W}gMJqz6};0b zgbaC8u=EoxIP6KV=J%d;E0u3hgLxd!q6hlrh4r_sqm)YK$Ri8zbZT|w8ohJCY_SYi zK8fr)(9Ne0>}X*k?#WXFvB0#c5NA%LAsMJemRVKHq=@SrHX{XoAYmy#WIBiu17yfZ z;wyO8Gs!@ZY$y%2mZZp>7>%uH=chd35p zkAL<6)breq?!`u=Dx7zjl@o0%Jx=@lR*^ZEHd&xz#VQUia4Fr3LXxJ1PS(A+k&@(c zc;9UW{9EM0P`;}_N0N-NOj0jeJkJu(inyx9+!G@%AqFGC^mxE^)+#G^B##esl4 z<&+it5($!%@Jm6xFsY|!L9qx%1n{PH5}!9g8=9mn#jZkPbXk&Pyv z7DQ-*%_Vl1JU~^CSGmv8|7TUQ7{EoP`o2Vl;#D9TG4 zVVFxyZec6$Q7bDq7tn{Db310iKd5O?v@V$j`P7lQVRogQtD~!nmNm|HC~Q-FmHRWub>_Rm54A4jojPrjQ)**v z#l9Z<%>iR7u5Z>SyC6F~k&fe#LJ(@?`h*gS3mP^x9Ba7#JQM{xL}*9s5_u-hIzdWF zK~!BMlK~3j{te+FG?us)b^s_&!@(y+qOuhHMtDW=)u_;qBbiW4E5Nb!QmV6w|IXpV z&!YACIt^3@Zb%ZB=e^4=L;Ln=5-?w1!`OL~PO>}6E0ke3;uxb}B15a?!HAhRvgY=X zJOzaoiipf{O;ThZC`$}nzG&8WXyz}Jn7BF9AuotTJee9Mg{pB@qO-G%R3wqIH2!Cc z(m=OS`t$BoHk<35(Rr{7b!V^6p||l*+BR?B6lGO(_PXO)6sgQM+QF}q6Ng)du5_eh zO4cmZb@zHux7t-SDlL8Z_GKs6`FI=STyzNiPW&*&(>Xgk_&5BtmYKR7>Pes!T?Xk6 zXcl543x?5~3QNJHG8Mu3Jm0PcLC=v%6ElR8@pJVYjeMj1+~bBjrhKzUg~dst@B-w@O4aXL_0S9 z==NsTCX1c=#ZK+f-<--YkXT9F_U2`eU-)XTM5PkvpIUJnv>(XEjug^?a*TjuUWVyU z3mcY#{#YYajYH2Fcw`e>-w`x>!Q>}E>H*p(1LZ<7^=eX{5o)uA%Mq=-Z zsRqpDAwMORiQAUBt}(@B5m~zld7xe}8Kh(qdkZViuEi(#V+WJ(ngb}yTY?a9E{1#_%BG|Ck8Ehm{E z*%yUWYHd6|H`$zs{Qd6`Wz|n=B4j0|wU4wZ{_muOhN6T(6QJmXsxkxV(t+u#|3@;# z@t@v#$Cp8$sEmf86s=%e`eibH>vb#>ed*4kBU!_hY4~qJ<1J z)6jb6ar$|hoDWe?srG_QLFfx+LqKN8?h}1T06hVUBBDZ9J#+zzN)o?_c=}ZYni!ls zz4G+UPYxOTLyXzXHx^CQ?8>3fhlY-fu-@LyvuVh-Ot~O!|7=j}Vnc0V9xwpJnXH^h z-_j^?hnw7z*0>f+>9wa%peZGEt!nt{HYnK?MfQ11ui;Arg$;8`1{ORdO~>H;&cEwr z>STvR#!;m~nk~Nu#UNB^)=M!7m?40fg5s##Pyn&Ox_(w3J##%&`*KU3IG%Pc-EpwU z>eQ0L{)?A-UPRx;UEiSxPd`QJyBeqW>vP)jbZnr&M^L%-%EBa9p<`b`sZ*jPm7zH5 zu3sJ+@~xm}pS~Y`r>Fb2uT3Km==4)37PXSvrB>hSEw{yuL)3KpyzAqT_hFndQzszZSU)M`W*v!S!zAryo7^LX6J;b4 zdUC$qo>(wwV|9AQSeiZ()waj=2@_OQM5$MRmf15O(vQ#%U>6n8l}sF{#xn%-hS-;| z&3_;ZIN5Ls=;$Sta)MJL*jd5WlDH5a{lZFL>Pg@J;8duN;YLrLoEeR8UG0aJZoM8> zig(g8Pd|Vz9bw??8(xEV(VI?ReK+N+yelHGr-*V^-fO0o4&rD(?MO9Sn+Ce{60KIE zju(2G(udtjB- zit?%>QH>xHARe=!fDnd%7GN2qq<*{vqY848<<)tJ6j|1-JaH!=Eo!W#MXS0PCI$)Y zRpm7X^e996L2IlxF-IDqc2o`_LvQar=mxw79xX5@^)Fs(ZslJ5DSi3rOVESu*+aX+ z?TtH+%o`ZMPj;z2#7Up}>Z^}fXI{QIbM*2gBcxEGe%s z9P(~N^OYVk#ql(2l(R0Mo6|RIlAR{Pj?YEWMZaMRnUr4`d%9nGqiHhr5R z*18=3k=~;>XAEXzZbS0rP*8@TG?$0|BN4@0+Cuv%`O;k;C|MI*R}Xh5lu1^?Ldt*w zNXO;#NomfkPbKxNTnY4cL%Z}Tx&*W*b^P^Urpj4$?+b`yfOba$FV&oV?O0Nx%1I;* zL1Z+6viLGJ^E^z91O0h3LJn+RQ;nhv+307 z*U-gNnb7Q;cZk$FcI!1$Jd}F~O`{&cpS*Eng0ouKmc!pc4e$XYXC9?@(E}jY!a3_g zQc_?%akYvaUW2M9!7%#vByyBa`yclZGxlKR*`aUlnLf^+p zdce5+v1^j7UeEOZu~lTc;iE@(_@ovy>)3GT&n{OEfH4ijS01K&fjp!Dn}p*q%ygVg z#8a-i%HS&pgix(ojSJaYvZXbL1j^{iD{qz(U?fE-ck=@eO+`}4)Ccc9zI=p0dn$uM z?l5S20!YgF@^YD4!mE@LeEranygPFA))BEr!;ai?;M0DITEh-Vj$L{nKmE_15yv#ZKO2WGu5TMC&Ap z9Tzr*w_NgePXlV$-=Lu%rZs@4G>pd7K*If#s9&A_DXpmt48ShVZ9w!!nkW`X!Cx#8 zJ(U#+4p*%mz%PN=Tp`{`Nfi=Z#G`1-mGain#I6HHjZxD@eFM5Rsk=V9V@0PEv396+ z&&PE$E;@R{ko6#be*wj-)RJzf0JWMqsDg*qb@dAfVWi;OM%4-}D^)|ZKt0;iqtuGO_TM*7(->4RSCv*ZDQG0-Wm8Uk zd>;^C5Wa0c^|?R*LB9{uol`3&>hsfYQ18LrtOr5aL-)gVj@*qPx3IM4rD{@1VD4k(51C0mk-{FIbW0BhdJjqmxnKmc>F5pIMvB2bH{9@pqD-sl4g;j^ zjI$i`dcrl}YScx-_#bkq->?WuQPfO&re=0a+FP6nE8v+r;%IS9nchI5(wQI8QaT120l+vw^s9kU0>Cdn zsl67VT?2Dzg^H0{z@=$I+bL?*vDxhwI(GWwshkzcsq`-Wi5}-dRin%nFso#M@vT1d z1ighOM=rbTjfG$yLC&GU^z5p8gAfzfO&=6@P80{QogT?*YOwMY_528=9IbYjRuisA* zbPKEC@$aZiHvdR(uf}z~8`se&?N^qnB}-TA#M%^R`xNE`5bM zGcU*MwM=nQR)<$86s?-xg&mB}z^7*CRMf1>OJ0~lAW}Aw3Sb@$}Vjh50ta>Hw1i84kL-|^5dFVWGO-9Pzif`?|dw&TyQgKhPK zN`FnTA_lP66G~f%6jo*EtZZqGM*qqsZ+d(I=Tt8E`VIXHe|4$S!Ogh&>au7^Z81&n zrWBmBvx$>&^ni2D-3Oy8pFF(lr1j#jW@Ua&WbL6jZ-VO+;K6ThQNuboDcBYbxNScI zw~d3%DMI7@sIWaX*#+~VGlDIFqynIU3>D)qhC8JBGL6PO;MMyKiNaPYNv?7ZnppB8tqXdTs%EW9csh5WVr;s+nPYlRB zg@iI^Kc$)45Sb)@WkXZ!PogqrFx)icHvRr`xfLM{yFv$cM)|$(L_=)#fg!{aO+E}>; zJvOX2n`gt|3$|?r9C5PhC&=CQMIao z=@e9#f8fLw7d0t8GXI8y*MQsSg4^8*dsn?(Gu$p|-u%)ngABnf11LA%o_@BM5G3#$ z_yqzS0hOzW>32?B6sJ|7%4QDc`q98gfB!qWxxfFry+|V0%E3p_m57fJD9B|hhF8i( zzwf0vPTVJ!vaT2Y3VFB+S<`*jb#hia+rIb2Lu5_p@e*Y?eF)uaVlTROSfv!)162_8 ziHMPw4{!WSbltK*aK+llEj{>Gz?x22-nWJ2sTy>UMlX=L5Q4u&ph6l!S1Lm~Q(-%5 z6&`gPRu8MkJRgA#X-Bzu>Z#e3iplNYxf-vaTBVgY?bKRn<-{L{G)^I^1_y^y1XUt^ zbCcK|4!b0gb{&4B-!-}DczH_$HN+#k5@Q-e*FCAo~`%n=-EkWD{I_( zV>-oaM1@HnL$ZyQ!p>gXS!1&YfXytmef$1|eIq02pnR+DN}kPX-nyI4kktqv>9~$S zvOeeNk_6eQ=&Yd(+}aJ)lFIFf9vGkyV08B8}hYgA3>$)Y++?kf!`Q*v3&%5TmMZ8Pdf8)a!)OLr& zdxZI_b&+*FHc?st&#Ac$dSF2W)gB-~YLJq1DEbBZ1rDI&_`;9+;Rl(q9{sBVAO9ut zQ5*5M`kqAmhyQ~3%~h_zY~wPtLIlq|M85HP($25n1d!;5QrN!<<)(xK`TklDzz%{Ra5kvS2JcSzjigc zVzMH;a#&)v@S8W_t74vVw>GKi?om(HZClQmEc}Xf=;(-k!(xfa%q_k^6bsKBGNz1! zGd^o}^z~Tdw!XoYotJHJvnCVon6Y$4^R3Kdl_?U9THN=S+t}?dTpK410X-j~gRQng z-kh?O%CB=b{kTY)`%~Y(g1hORGIWxP)2|hxzUfn39qt*kfIQ|iKcK%yPXohK4bDkY zl^A0o949CP2?>aj7;lRt6sZ!5t`SEd7brsX8%SrogZI+z)4yq<_np2J9UU5q7E?Dr zv52)P7Cd@lR^jR!C&{eLl$)>X{j^_YH;9Ks1}l1Ps?z6Im(^YeI$he*^Y-PGmwHVzuUZS36}#&2lt-;|FP*|_HIiw2<~#Afo9x+? zs#%rH^usIYF;}IsDq|uEh4pRiCb~yA>*1TbIfsLfUw-oLAyhF?@AhKpk|%G=Ko}@V zUVYy&?rw~~)5Abna{BSVcW?g5-K{YHS(3d#)41I0SEn_>AV$Hp z+d7)!o7R&8Bp0A~-y5S)8#s_9=!0D(6ds&Sp{hGyD|-i%<_Qv$Ru3NQ$=tD=jE0Um zM1aH)qA93g1kQ#45|bi?G3);&!hP__BR3W(v6SP@T4llx=}ude=Vc;BB1XSzvvjN5 zRb7Qb+sk_)_qF?(drGv%7L3}I1~H@4OL)6q*VZ5R=K;;|mJ`Tp9Lu)e^XfZJ7 zBcmagGce0{=4CRNGeRjmatN^)wqwg;w7_Xh>-_p0K5c#$e=?P`up@}2(80gIe)BA9 z+7P3Z(NpHYz_JDRzK2xio}QPx4qbJ)Q=*j9sZ00oPD0Mu4rIMw09iOFUkQObn}A$O zA2fUrhZYDyP&r{<#02j^C~`ZS=%nZa0yl3x4VkKo7g6h=;Hx77K+Hnap2{9A)q)Kr zN?law^rbdZ)RU3&Oy!!Qsb^{nX-W_ErQ3>B54yhx717hKIjtuDWbgMINd_?tt||U3 z;wfv}G(Bim##wf>>zW}D>${>@d4<|t`K{f}u_6UzS{a^>Yi6Fhp_{c^x!8dd50Bv|wi75PjWxFaE_;$dUH#eJma$Zl#1Wh7sz;^aCUjvtRXv`ZS zh4S4XnozPidNu`!6Gb=&1XQRY5QE|gI%ufUOc6(fWLp3gu50N!8~(o6(lqF|n!NdB(=<*J(y*sXu@C+5$UEI82z$_ckOdF6G zP29lH9c7I}G$^vrCGD(JH+FG$J6ZAlWeVJ`DLuE9&?omVU!KMKk9uddsGz6F%IiDU z%)Fbu_V>e#S|u*MP4(*ClWiv3G|;SeaOA&5509s+?-T zTW#ls6}AG>FKHaiBw&Roi$?I{sC^j3j$yPsm}TX?AQ!p#~KH-DYBl9UX_#aw}d#rkB~H=q;*X`HXLta znxmTaY1U}dWHb)rt8JDBl;$vNg&p>2%(t3j5#Cd#6uvIBX+RXNI(`t@^Mo+8#FhXO4QTU=pdl7@^WV z_vG*|A#5k~_~8VFNye-7K_6i?4|wiQ67KbbFD>*6eMxDKR~`%L4zlB8oJh#_L|G15i;zju|FLH3Vk9}XI?M}*=DKCrd4;j5zjheQmI@F!3_P^e#VxZ-6OF` zvy&sHAD{^S2^uE<{YsB_|0KwovP0XE%`mViC9`oI%ZAMl_n|#~K(Cn(-U#%vaq&96 zZYUN_?1sZ-rGV0@0Com1oXhQ5ZOU(0IA|fWX>(H+QQ~5;cvw02XfsKm2DZ;mEFRGF z9))G*`YiH&@dbr3ppt}sB!(m=nH-f}?Z?c3!#)WRrwbc)e@PnZQ#|UvZ4l^0=miNg zMu_zVJ8dM068GDzJx>4sGC|ixT-odXI@rJ^q_-X?kkS==iwlwkYI*#8zwMTO7FOS6_@Z~e# zI&;%)kaA^dvsPZ5(`+eU(N3{anWV!Qka?vFot*uUl0Jvu`+kPe>%=qAWJG~zyJ0K7 zO^*m$QSVkF$jg@%(zp_;lD^)BD3n#!6w-f}ErYY7G}LE>M{-1f@1VByV@r8Cx*yM8 zPaUpozYRt*eG?vAp}L{@fwI~v>KB;>`MePv93r1L+(#5E9XhpYl_`fsWz@8A;faL{ zJMqob`zq(4Rc9Rm79#h3GZ@!;C~Fs@?rgJ@0=QJs8NAms=Z%YKYFOI@6YHr*qx&Cm2cnUZC*Oh;j_$dB(f(D zqhWkQd0q1$q8OD{A$J+H10g7W3YO)Nzg6ft{K*jKAKbNAWR%X{n0G#nevLiC2qlQz9s7g<{_*@A9gXYQN_ek*{T% z6-rrD&25ItvqolMVNxcCzB)3~M?}#Q`N9i^${T0rbaEfBjt?wA>ToRb1^$45If%FN zP<~=c;SXyJbn>i?@IxIC8G>}K9waG_MD0OZ6G)&(idn~eLE>F9RgC&Pl)MN{!H?D- z2Pkpn-%!6@iuN(OkV|4RvQD2`{I62!V)Q^Sey@BUO03U*zw@O|%8NfQ?T1c|?De-? zmt~X+y8FmAN4k*a`#UOsAxsG@c2TF3>Oh|8SugE10X~-e@0CD`D%Krnf`tvIZv0%7iDDeFwxgdVH7ep zOPi!&7;nWl`bi@>V2uH52b5c1{B*?tVt2ketG&pGu-Inv5Si zl*t@J7nbl(oh5ycZ%@Z%dOb(Ud2xGqGF{|)O=amZy&U@*hYGF#e*9HU;tbzw&&JfJ52^12U5+V`*t1gL9O_G zl!K|Bai8lcC19KXdki#ayC{!Ap5u%6&B!uvkxwe-(y1(Pai8q9To&U&@C zH$+7%Z-z+9n__xlC^3v;l3DcXoEMC%yHh4p!dPOdsPdO?MYFfd-MYI|q0S)XhPc+v zq$JK&QB#>V)9QYg%;NnH)41j!?+jkqf08G*YZIsd$#dUg;B z?rMasGddLI(SQol|H&RhXk7z6KPZ}ei5H_}8V52RU~u35um5TxqYz*~2>y5#I)HZ} zQyPh73aw1;&}mX640OfiFw%#Ioe%>0#kah5Xh5lvQ#6I-UKz>5N&61IaRN!SU0YTL z8NHE-U5DQ@>*HFRHu)o{{nuJ`-RQ#XHP`HIYu|V6RVdBQy60F@V$eyVm!4Qsa_)Wa zA(#?s;M33l^@`c%OMd>u(Po$)6WaUGTTm(Fg81n5n%7Ml1xXPI@id2^F?}(#rEhOI z@MRGpn>gk_j;kk7tspYv;6{qL-NEzdEbyMdcN*7OfaM7Ng=A1})fN4?Y#9J~0UO^m zoQ?O=12l&HXWiw|j!Sp03&eb@ zcV2pvcisLXjCv>?*yyMGbTc1-?Xo+#*!~mugCyDL{xp6-JM~}-I7gD;c67P2cW)Rn z(Bj~Q_ywpLwX8fg(@gLZ-N??_R2biSL8CQmj6lDdymO6DtW=5Jb0Z-`yiFU?l2eP) z>tl0w*70*bQi zyqiR<2hsloj0S(BJ{16R1A_PnuSao^zUXtb_F7TK3;sCk`UvX!#`0s4? z#=JtK>1u`+FISv&xNV5&3qwKHCJl@fz7lI(yCngaV(S*R@r{un8|J*Bfb4Dp)a`>t z-e6D967u>yWJbS$u@}dv{cvIms@y;Z0gAwUkZJ%9ZB!QatoH*8JC|OB+S=6?jYR5@ zGCDJU4;Rd@w&^^+9MMzN zUYKhAFr>bO#y^syCI(jMJg@P4_5ajMh3WvF0GhxhP-EkNF~;L05S=dA1PH8&AA6L# zrm_(&t5hDk_S)rdz4gYx0JKGIl}m$`mHP)_5J_p*0zK-G!z|sUdk10sP-(|JedUKf zYYI485ly0|Nc-CP)^_XM)%cq!U0;Z?Nkh3eJAD^y?O^S))Rq-raV*-Dl-sz(rX?=H z9Uco;9|3nbh}IOSrhKWhC;15;qOW~bK`ZB6zQ8K;a{8%T`VUabZ@uAUo zLh4YHx>+3#FKYD9pC4%TFI==mp1UXrfu;WfyxA0AK5CVDc*DS)RAlamnRm$@GnPaJ zRwl+{yd;Z^*eCTPWb!F#PKHxX3q-+y0VNfv#D@`&QLj#6AgQnk<7S|m)2m|`HKjw$ zFbDxb3%=Z8kDf&TgH0p|@WKGpTo-0pum*1oyF?2n8yWhV?47)#C+kwYQNS6R4xuq>Zw*Zwu%wOUk>8Z;Q)e}jfmxZI zckV%ZuebtVw&!6ZnyJFu(AyU5{IHwk?9viARpqQai;xXP2lDwX`TYC2Tmo-yYEn0a z0MBl0>M&Z{o0JTUXVNCAD_FL`Fgu=nGLCF3T;zjex&LE-_YKGy{Y z!VAUdMD%M&9-6?QK>2ZVCZxK@Gh}st@lQ1eLL~tQA_=*YE2--%>u!al{R;E}wxFe5 z)^tLZR>iwuHWtjrgvTU;NdA0KuGeN;U_gUA!Sa$@p#r7_%D1@InfI5ZcD9!}3!vS9 zLlvO4cCTKvDDhg_sZYlAK7FEt%4IUp_1cdA8-Mj17HG_%6&^5O5@xrqb*`P%`df$4 z!#Z%{44M=GR0OPgaEwHxHoYJe)Qt*<2=0fuKzB7f((p{fi(evERmF`b(a(-k$WT!< z*2hA0Dai+nB^J*jWDLsL$1n?lXU~DP{NS5ay=&0E*|W#m!of8Pk&$?Bf+?)05q@1X zm#4OnIc$&-XfIGD^h0FDe>hVTI#+n3M%HXXoW$VeSh+|7us@FH^Qa{+wsy1up4il8 zzzb0eeoKlB_#;cO1QiB@KNowXR>n5E zvKK0VEB_AYVsIR+wmq@=ThP4EP%<*!Sj?a%tGP3wa~o3KJal70*@DC!F?&5(BPC)v zQKMQ4vnfQ3SbT_e@stYI*^;t5(@Q**7<{1?trh$qz+NR{ou?73tBq4Ox1q;HayHJX zBsDAh!wGp04^(NAI+{fdYiqMT&nI<4&`UNEY(u@X88CEOa2}zo2KKg^h)X6TV?8CH z6N#1-_T4!4ipXu%%m_M^WN2$f`AnZ<^89vUFj_`?VMbQpgD{Z%g$NwDG9SG=q>t(g z3a1s{RW=5>0VXghl`MH^lR?{TlS7*m$Laktl}QTVfFnIA8{To4jC_*h_iYrl1=ep* zG6p`eZO!6X^MMn+5~H;D_@0xR%xF8KS4(1}8SOnO|C~92mcX1D_}BevH#5XIz|4%^ z12rKKleO#2pGwWm5Fa zUAE*-Q+OzCAZ?!Nw%j4Nr?*=tb4yjR+%#X?qDdyXPpT`=-kRSw-$tS^&zge+TchS! zGaL^QO`tn8)`CfIDnTd~0x$I^^x#-Je7xz6%<(64tVcomL7>U>L>gvb2H`<~QDUfs zfEu334o+}3t94tjH3AGYzBx6m`YWJ+Z{N>;_A~q;nv3ssqZ{!m8TuNYj{Ze5%m0tH z_keG+yxPWdKaa+vz4zXdH7v`rWJ|L4@JwuHID02#??Ffc2?R(2Ap{77uo4Ol8_Eis zP$;960;L67N`XRw4rqB>poQqkckV}$?S#DV|NVa7Kf%OtEbF<~xvz81b*|Hc-lBu= zbebkDh(QiLI(IM~-Pt2Ha{Di8N8R0$w7zF*m@CW;&=lmwZM}{1$0L?dn*%V*hMD@e)StP98%i2tt=b;hxA=D(4^b)=+-93N>-DSCr^0oT;av25ZO2=m_eNHxXzP17BN3kJh&xn~7p-D`u9)pevWI;X*5e6Kb?R)270ae?`W%SXX<@4)vIRHd^B$j@Y)HvS7 zQSu`~4fV#mP-_B4$-o2ON^oM|mRn>zzQe@^N#o|IQsQ;y4a4CcQ57P;cUL>2LQ8mXv7kGLFtfG6kj#2oszCazB2 zB-0OixNO2t5WOCOobZv7ic6$odr2idGp#FubAfNm?o=U7WJzT{5}~IxUl#h*53&cZ zr>{D+KZW&C+IL-kNfNcpc>E`aH{^X4zu3&rPH>{^rlUXotpS8kl_C`&n{8;T?x%VL7)V~3%V7~A)`^>uVGpHjBG={Rbb3%M7q3PqKe3+iU{#%<&?W& zAK`4tMc2Lrp${x9rG&M9;k00C&5_1*4xCx*hRhm>cb)~$;ZwpaJ3eC=%fa7kC#k_L zh{f3OH8%V^1Ra>_W)BX(!Xd-|)nN_r8u2PK+(72S`D@wOKcj^ul5ztB#S}Qv4-iYL zhnk2VSEu*l(CX*?{X5ZkdMWytHign+11Hbcp-8vPF6k6o=^#>qc<>%20_;zzgz{DrVVG<}@3EB>9%YH%O^B-hoB+Dc zGv=Xx(xO*;dIWKWPv(<4(WIE%CG|;cbS}lR4o+aJ_?0d_>V>}yO<=2el`aGQpu^s) zaw)r!&Sfcf%H2Rsqou@=a`n#zMObVGIc+0KwTSgtR~sxG1m#jZlabeY@xi+xaACXO zqv}ux)G0)D(*I0ja3z&4b(M2kQdsfPXW(DUf#>jcdqYeQHutqh4ZTwXpfp0HhlI6Ye7L*~wZl18jXb z1%D|T`=+;$A}Pl|P)LmvPt>q6gih(qjL`!o7CNuRNDap z{Yjlt)2`I15+<`E+^ldY!V&Z!X?FD(_*$+eqX#pC=lYou@M;~=vBf3gbH<$mCI;X6 zXU;TZUht(1cL~f6Ojzx6tk~L!ZQ%M5Y*6ZA5)cU;bsZbKzkyRnPRtoWr9T%8ebd6= z({TM03dsUlehd8Zh{rq56>dHfhO9fsyU!39NGm9VKwX*HLcf^HZOmq4^dHm@YmMNDimTNDmuYpYGuB(+FdKRC8>a)-t?86W5 zyc4~j5lUrk0OB~%4ToYsZ8s*xHfe(XKBX$UAxrA+^nLtIz@=^h?Z)umlcJyjw?cCp zzM;SAaOgT@E@?a2r5L*P%61+k8Y-{t%M(=>@pLnNOEc0n(}%B|h1j8$zF&vl@x4m& zO(~T?*`}pmd;Rr?g40WnLoY23;5TS}#^zRRk|vp35g;8BNH#zu);^2ZqOnOm61TMJ zI&oyK4N7$^lVlN-L*jsH;CB?yL@@ z8@m*C;JOE(8ih+xz(NMHyAPAyZJc0K)!8NY`;|#WlN-6ZHcl_7fiWO&@0*W?wU*wp z!D#I2MQ*KshFPuY=sZFH14(oAD#597Dv>M}=Ljh>-(`^deMDH}9OyP`jC}(@DsZ2A z3`lalFml{@tENFyX6(zjMI)of2IK6b#0q$A@Eg|!V<3wGE#BJzO|gX;i&|=hDht)^Lw-rL49B6unZUn3Ft)Bsl$7D__#WE4GblEf@33-uo*W_QQrLa1Qzr+Nd= zChlCS9i zuBiobg)c+ex6!xE0Vsb6jPZIf$6$;bmKPslj687eD2~wv6KZC{@bx(SNJRv@CVDvn zNtkb{iL{S=PhF+GKD%4<;s`XG(C{2VD6OZD?<$v{#nOCBii9$eVo4ReXhe3nByA3f zGJ}(fGN)6@5_u#XQzpfYlzNL{sx)9hx&q5Oagc2gboc0QEO3P^r5eI2Yy{ftq{O7> z7>yjWO$1u8U(#|jCSE5bDoUL52>b(VYMO-t$fRT`c= z+CquRbjhHMG^1ZFJ+jU%vhu9+FP}lbDdUNnnxF?$v_ma%+tJJt(qpo?9cJ{^GiJ08 zWDOd9A^%@y700LBAoVv&VQ_oE7LE|9N9${9=`HLouP=z2EO>S;ZWU+^KfbeEehOVp zuUt|hRf!I0>`1jl)g6+*fX)$^({%PnDi{1!T`z0*O#) zRLMH+5Z$sTA+gSeM$+UXY3QQE&Tx1<%kgJbA5W3{bX-5 zo?h>kn-~e!p;n!0T|Dsx@65>- z>y#Ou{JClLOcnFD&bD=XnD#--fv<4h|Ks*$k^pDm3VfxFVv8{d4~HiH|JlVC{`=qS zL1I&$j{>4_rTGHx9*|S{Ln`H10{Ivzw{@1J(>xsH>Uq8ab6A%9zuv^eZ?cE!eHKs~ z0j)|XGNgEDfBphx`I2VLgZHifm$GfO2LzTK3+cZ{*mNrdXCzSa@-k5Uu=H@FD>IJq z<4#T689Z>qxLd~EH}1i4k3ul}=i`1o?%i>Jf)aK}N;U3kY)D5ra{vLDsS_ik370GXwhIHFf)4Q?O^EVGSX}Q6ExMhYJk&ZomZq9ZcX7{to2M#v?HH zjQP@k|Dus`)MH6wTTWn_avNIG6TNu_WfU#F#*DO(e{e`d&FYMef`+DH5q%8(z4|Jq zJ0Me^q<#M3H7q4>$-XJ!TuEsMT5^c50GhH8PM*^1WIKZ)JEyr-xxGcxB5V;gPk|qJ zFWOJ9eLBHcaO_S>z-J>+`DU41Y@^l4wmL+@1QnPw2@*&BQ#`{qWs}e@XnG~3AL!)h zcx}D%SO5A45#J-STg8-?Co<@`)vbt4pTK>l?@aPrmrMtrZPJ|JYOB%@(!qh(J1sLZ zTn(>dqUg0RKZI8*qAE(u2Zy1Upd@UAi7n=V;--)^LK@egVFk=&zc{xcC^T?9ONj`m zVmh-*o}8oT&|Z?u1+KpoI?A;IeU&e2N=;~6DCG+r4$!&?MWC?F;ciV34%PJa!RB z!V=k>qH{~7<{w=?e%mZF=-cbYFI%pIh7%@<9Zlr7&S~Q7IQB^>6e3NAm>gQp%A(3o z&KFTyKZi%QyY*g(dpQ9MzeXmQxEJnnQ|knaB_ZPsQ@fWTXDq@Q#fi*D1mABo09)r; z)WaPB8tV5Yd?y1Y>dt+=`)3?p+d#S)508+XJgxA9@D)pX92HExyP{G-t@4h7lV=jS zit#}nC_(dle5cPPK$mxSe@n!wKS#lQ{yFp%T_n*ldK&2aP3LA5(X^cHx4Tzda7mi06=ipAJ4ZI&Fz39z6(B#cD|@#uFsso^`KPNO z+$=5b+2{s>fNkk^J1-Oq@j7MEju!C~e|s>Ao~M6nX}h-hisrw{lN%O$xj>O=yM_~! zMZh(BR-uk5)QWaQC5%36D&iJ^Y6I62j3wQf7O*}lEnnn|6@5_t>Ob`gB)4m`J}Sc9 zn0?$o6>AFM4yv=k89#5_?po9lhsE&+_9pP0&qAk@MPAR=3|qnT4OLirQ#PT{DU#VeJ9aF>98JQvbu0bh@#D`n zc~)$@Ajwwn6FaspRcA~Kwq2a%skoU-wk@_Qk=SP(o)_Y%_`&&;MIFlCnSfKc!I^z( z8F5ETBASUJ)}Nkg?rOd6)Hoz;F1AjHBHj1sYH9NXEnh{6JTmx2+}P|@0fz%cQQ!X(_%y3S2v;=zqzv!ub=>1;MTb`05 zB$O@X2fbzb{sG6T>lOejj4E%KQRqnNV_R$#;7$YvkYgKTLn@RoxI zKaKXoW$qR1XyWa3+CMeY*A1r@j%xivse4s8=6Tjv0DfR%aD;#%vqwZCpLyfKAuztZ zmo3-7>3eWH$kgq4G(?whQwU@d3;nipub;?K@p`XZWuQNH#y2gsd98~#p_xFAeGWB4 z3sKAZs|PqrUiY5mI{J^U#P&5#uYJ{a+JrN#&>>#vx1M{LxfrfkZJ__^ifveI^;#CK zUqKFyuU2}I0Q#IOr(ZZ(3)+72zO_Auc^7H~PLcKC8nh3$N*~@jK@Cc@vhuR>(ty6$ zWo@x^SFVW1N#*48#%llz%gReitAg5M#nNi&E`tM2s;6HtQ6seTgmj(=7J+>BW ze>ZX9$gFv=0L`cFgSr82y*zX@ALa)i6*ttvktI+OEBDw)_0)L3FXm9dItRywM5rMf!auu#OEe>GDle_l{YsN zVr>$XH98-oAI9x>Nufmqa;A5P)p3~#tH8_yjCJ- zAN%Z@A-PIQV*kP~VZl4{#S^al=m^);bMW%b06KV{HJ4shF)n!iCs#$`Z_WGec?RaG z8KA+{q_aLxSXI2%r~Hh0YV6XH&@iCdx`80u8VsUNm=92;6t}^AWOK&2E&=nw1~naC z4y~iFSWFbU=$_JdX`!<_%`x&j@>V_y19wc(sz?>jKGaD?Le+`-Pu@W)PkustyC=SJ z)7pr@K!p}BUlzXF6j(CX;c_lq29Mtix9y2B1F= z{)c~KHV0-1pKXNiVbx^;k*xl#NZeN)y0xV4Fld8rVM$id`2Vl4ZDrG zPL0O9JZdRqG;-f$w<(*_Y7O}=JA8qjP5&E8E1Q{0@6olzGR?S6d+rWQ=^SDmpmg>9`dcU7u1M-f2^r3Dyx|^PSQNPe)5l;|kb?X0Sa9w%& zg*=k~{a*S#`ZlDeKVF(ATdDN^i^J}D%a=je)&)f;&y%>^QURA6F1F9W%zwO%gu9TLW(iFZgL9i{LiZ^|;5x(;AkyR=Sza z8dI&}k~o}b({-lx32l4AfR2}(3s%M1N)@kt*-SW|;;?h`jStUbD+M#|x@whaX42kU zP^VS-p7)WPeu(AT_lpZDXh(nHFAsPN1jS>EtqO6fV(#zQk&-CHD1crdx#WfStwj@;f*#kA(Q%Z5!VUqDtcjs~x^I+mfO9 z=5=B8qAsy)rk!aBIW#Xs>V|htPsk*0p(rwbbvJs}Zky0+@|ngD(QERZtA`X6NbYE7 zZpotx1r3!5705RB`i%L_UV0+1A5JzVUK8%#z4@GgLW(GT`tBWX9fhBcp9hV`eR*b*17$+7so55E zkaiJ{>igGyME~c)3R}@M{({*Yy>Qy*F1OTNmKZq>zl)NJLGIrrVJX};uCK+%X$r{( zrJ`ma#prPABH$97eUpFTGL-c`Lxs3WnAp0x4a?^=uUbR@>7j=*^y}!8%>KzYUbb`2(ixQF_i)VqNu$0P#?@9}RR% zHL6StIQ)i?oh#rz1_gYU@q;d?;Io!8N;*wM3(Gr}bu7)DeQwCE+&<9L&k-+wYXE*2 z3xZ-8^MYd7B`lY*J*?mZNhugs(JK0v|6+cDO=vxJCk($*w+T+TtFTqTIwcF4eC8Rq z*64nMD9jmAlDd&&AXwwblMPR5R8PC{m3+bw3koxWK$}++@6dLr+G0AivsYJ|k;D~e z@kyPgH@^9pF9LqMN6NPfB@P>peuCf>=?ijmiF>M(P)CL9p0H;H0m+<2=a+1)fzZMk zre@>RMFVNRx7Z3~zEIM^1_|^Sq@vqW#8-CEAF+5XL&Mb!T>XhqY{Qx`xfICpE5ke} zcl9q=Y|ds`W=k%mrhrZyPiU^9e}bg+KZ4oY26rx~fLN`Ht4K~>eb}$dW(_SM9Esix zP3dVmJZq~Atz`|>M9rh%^(Ym*aZ({svyhLnlk>Q6B`|~0#+vKo7Jt7xj z!3t9DwsGuDc8;@2Mj+~sx4ukYpW=hCTuNy(>`h2aY7!cf8|Y1)h87PmPr1T`A)ya& zGc2{~X6O-T1E#grTm2L|>VALWDJ?^K-InrSV9orpZp_C`(iIeKZH= z=;2J}5SEC$E|;Sh%6(pGCkS51QDxzEzxV}Gg2piAgw|!p){IiCdyjcrg7czE3Hz+rxT+|S0nSqsWwa&m*m$oNtiHvohfNx;{AEzcRi z0=UMWc$|aV#Mg8EBbcN1Prx#O@_TT!PlqF*efU4U3R9Rt4iY0(AX+q5ck~8i78SoC zNVFWTE=KmQF4?M8t8V-K@23=nYF;Z>irgXW(@`#39T4l-A&&MSDB!dBask(37o>Cr zn_Pj6n-GCw37rseDV9hl<%eU+cF%%Vsf;k*k?8U&&_^JYj$dQ82@~3kRVW3Gk6=*UGI) z${@U*W#(*a#4g@CP)tWwApO|0xBc}atUybDIxc_K#r$KgIe6TIBFa`oInBzC#14L zV>dBqi@wEk2}zYqkb+lcwgm}}K)?>j#XvWt_}q7KEhBzu@4~2Y;7|w1qjG~vxR-eX zF^`KLwOD#8MyIi>zv}cZKeyc%UB9XssWtJXP%&raYx-xkhG+Ka_$HBg;(}H<>mESn z$3gUj9ASyps0nGNG8L!#2N;am zBWbb`3TVW5Mz;)X*U7 z?9{JpZKe0(q_3TrSiKiX3u2X`5G5pBcb3nm{-|$SwRLMd;<4iAZCP5)1FNmX(O19e z0BtoDvNAuh8F0 zKqqSY%g(E=JJ5;SnkO#Vw>z;jwgrldd9ls(iA&qsqW`2{(2o$<0aNfmZJQ?s4GKLU zsF5P{xmeqwmZ>^JHcL;*=rMNpR$BouCp_^@Ys17caoc(iSHW>D)fu&knA&QekrcOY z^l{~E_bRo?kV|Xr`b-`c&jmrBmq<3Vi~+!4uo9;&6>2?=B8qi+h+h-l>burHfi2s{ zhRxcNFj9mYoT|{TWZgN%hQN`*_Y2; zS_u!fiVf7@3|HS(Zz2jpmu`5L=iw^B#Nz-%!NUaX(QQ-PE*v@ZT>yK*fM=kr5@X7R zfKRo-u;)v0fn$5o6kQlj%F8&PtjjIwK|OC&A=LF z#WDsIKkpaF`+#`+M^ATQ*|q#b@0dJ^i!a$0X^x)1=MsQ?EvN1RWTFMghufavHkMeR zy8wRuR3?{SH-b1oQ9Bc=`gy=K@&=w@s^ei}z8&`-lB4-id>*=ak&ZgJJq@106KKCCAX{&3_;xGm6 zGiMCyh?h?Ol~h${c9HqQF?zlky27%6-NPV%9&stl?Vmnqf?o87zCk-YkOS=GW#C1Q z(l|mu*dD}{f&X754h7txc$YKIJUp~aBMZZwSsx6(r`610a9C$=8CooHKrqnNqCorT zxwls;{{k(_FRrMNhOTZlFg0>n^^IKP?+6ajH#4Gzj_+cQ#MLD?806?5C51}e+X)$G zPOwWP6ubb;cDr!e?Hz2PaFl`}Tl>IHKc!Z3oojBO??lCe zhlC2XhFo;=J(rt@Q=tYUtS2a!iij7hufuHMfIprMIndk8P!#Bf3`GbWz&x{L%p#pW zt_F=~EUmD9Rp9dA(Fh({K4TCMKyTOW1JKf^Br>dLn3_}Q#ppxY>csj{$kf%>W{sXwlryl9aZ)PL<0 zC->@Mfpu`suO+jv4;$?d9L(UbwidG^nF@Vy6&n0V@E01^jR4VRINGqLfXHAy;pmTU zS*Gf)ftAqB#p3*Y{yMapJ^&vR(ATtJX@PIgwS)c;l}pQ=1@{F-woF0gH=_4)xno6z zO4*wN*|J@oIr@6bCQ7Mb+Xg4P zKT=kWIB4_RCQbyiW> z4705kFG(>~-?-Tj_HQ?hJAd3>tX6>!=;>p`K0S_Q1Cg#i54hq6Cj?#fKe_lcz|GE3 zMVXmugl%!Q0j!>5^k10I7!WY>s`{%(%ct-c;Jx6xh&zhKV_gcRsuCx}ls7LB@T=QV z6aBU#tC`h-b)Dh^{Ec^g^bsnY|KR7Jzv{J>6-~+#qB5Gv5$rridO1E&c?7w=IP^Yz z>n&vX-~;+EorqSW zXRXyJA~K`ARilT>NQ*Kq(S;`!wb18Rne1k@mi2tI$T}$rr?%qPCoALf(kLE12fvKv0G24!18+)O|W)fDtoO z7D2F)FA)e#Dp|}7G9l)$P$1$`0v?yVugEo5avTUzb{356>IOnn{c}GAz?R=u5nDly z#dHFFl%sFSJh|xbn{N^e@_Dh0ee3&sdnLHtGNcteVrWRg;S0)_zI)@>N9fQ0_H>!2 zl(VxBe2Dl9bJcY@;`_*Iw|Di@>PC=EzZd=d#TVP4?uG(N)5Fj`qL-NhY_J*xMg}qA z3HX63JJe33p$Wu@+k~waW6xp3H7ppOk$>UfJ2BV;3@))!B6S%I!$F{MMFtfT1tpS+ z`RwYeW%JPNR)90S-t%YT{5GA3x}`G5`YqOVN4(x%`ZeOl>O$fbaFP`4$Ert$ajhjt zwTqo168r$slp`k}I;ia3cU}n6r=0Zhuk*L-Exmfs#``|~7QNk_fgwg9-}D$$5hnx) zW&};uT6&)uBDe1JVcRsCem{+s$^f!PYOew5@%Im6*$GAT(nEc$m2Xc%6i_RL9scF( zW2A)Bx_mDEd9T7oc_RV7Tn@TLUNK7<07_;6im;$6ie60ozUrLL^l3TV-%tFk^gN}~ zi?S-9Nc{%d9=9hnO->0e0d)Jv(+_IIKt|+ASsfXjJmCFBWla|vru|@?+u`PU7^qSt z@Y8CeE5iQ8^l9j7v>Dr-|H~2LkR#r`jTMI82X*ubV`p-sjk{|C&OfT7yRYvfSG+qB ziMqQ%qQ}2beXWANO1JJk zSY|<`TKTGr=o7){+EsJxE!J5p*V3Po+XkvOI0wV(u(G7^eU!PMt56F&70^}gcKXN2 z(x!4-MIhTDwt4#Km((Ija}Zjy#?o4;&qcgTA4h!po0Hn6-n0e~ER^*Z1YU`+Ijjk) zTUz}09-cm(XpuN_8mX=fGdbxyW1DM5i8H_+!4lpcCrVLy128?CWyo|jb zz2k5e7v?Vx&eR-kn7+m#h3I((_CwK6Ql%2HZtI<3;K;PIlJ2pQ-TqId?qKE|xI`5q- zUT{3il`GgCKlZfK;|NZ~N@vk6DFh_2AB*gRW{GJMpc5}cy&oH4slj#!#A>nJ>u|j? zVm(8-uisCa`k(RopBTPlJYGBPjS{-k;5+O&Hok*!?1Y(s=$Imu`h>twz*%%=?%@0I z$pWXjf$(dWSmW4zzxUa1zolYx_w4y?YVm;suV%A;bS}NykJ}=mX`P_IBozRj7lrh| zVAgthfakd)thOJ9dnznb_l5*g)FRIM4~}LpC9?-`oo7K^s9#tx11!_((1c1 zJ)q4?E!v(3j0x6QXospS(8Nk^n!83ES?1K)7Pn<2WA!Sg*F`N`cS@Z;5rVkQd_EvAJpj>aS35}zFkF+9D(6#r`bAZ)X z*|lzxhW;WHU$?*-vMyL>D;Q^Y15c+o+*BYH#i8mjaZdGW^6FDNJ32_k%4=uqK&C|! z8(dMk%46#5w*_s3{r}+?E{+NGobYCFX4>GQIRrv=a;EmyITjf^7{uSeNpNKFPN*Ln z?wB2MT09hF;K7?Iw;;Zd<4FtoT>3L$u0fiUz;54-tvfo$W9<=Uz)sv}#BaIwbK( zLK_bQV!$k*@m&DY=9*_1X0cDq4yw3n4PQTV$9S1n7Y)e)ySC9!=gossFEj>Mi}?f(+BLCs24bkXiV{ktL@*7e z(g^(AM@R!qL(T8Uti=|F$3OE26G61$iNGHXh627j8>FnW^wevMyYQ6@&5vpzHWu4W z22Z|aDskja69i^>E*tMPf?NF$GzP7H*F;P!&`nvyFO?R?ypwx09qO)0^g@t$Vo5;2 zA=7W`Ol1`Ki!-&AMF%*6@0ru=^zc+EIqAl%Xw=<9I1p%?z<*Gvu#QT zXgBUeW%>~?FHYhEJElyy4Tby;3dk*lL_jqqZLY{<6Cf@jC#+V8tO7P}sw9%w3RIn zA5PFel5)2o&39c*yj%79h$+=upcmfXt}hf`DinSd*7i>gQhGsPxDU1KhvtSM&>EgU z(L}Ey?yXKlFP62?O6;b-N#N+e}9k2YjIuoj7CnJljd3vt~;WCA3h&w=17=6C;ac9^46 zn}Ly7I!2lJ15OZ&^1k@5_j6vnNLMkVv}szeP6&xY=))oLPOLyvFRmiholm7w zyMeDUlfL5}t`*`{QIXr{5YT&4A9OD2@6&-Mwb(j$)&css>Yx1iH@9(sc-y@1DN^9< z)r++S3nF=bs2^$tRlAT7B6@iLzA)yD*VwUGwa9jq=NdpytdkQcPe=uPP_!rHH zovnppaQd=liZI}7d?)@Hqu<%Mp3kxjI<$tqvi{Kxx_hUNMj_kkg!+-##skOkuW#`} z^~KCnu(q6U5KRfV2fFkr`%3z&CS#{OE{p!@1pY;z!XnlaW5z)@W#oJMF7&x4=-Sj> zXR%AKxLo~i_aUd#NB@JPl34V7O3xM8e(CiN_iRi+V^h;D_#6L(q{g@$nk~zkkX{+l=+zOhTv*}qWk?G(*y3$Kn88|K zOCa#GXWTxZJslhO(70bh;9$f&jUmb~At4A|j}(yLQj@dLV?bfO&ZlW0x3k=nfF;J# zqHq}taQVTKF|LSaEPZ5@ED?ueReyj6vaXfH5u3`&_TDhhDhgJjEzq6j7%qg{^WfV{ z3Va#I0{jukd_e0?Qf4!9^cFqa?iNpziG#90vxckV$(>gImI7PuDXtvg>VgFb4T<8nYRRSc31ZokeE6U2+wzxqo6A^CILQ>?Kiz}9M-gtwX zH7`i8K)tMe+FL*)Hm|yJkgehOT(VgAn>5>+i-TBUIIh1S&E~Q7dKOPdA(EhUB930q zwt#+8x1eqPnutKh37)f*{`C0qPWlb>VUk`+|69tJ1VT_Z*A9-M$3eW!w%L1%dcKyU zO=tDb^&Y%z+c_?wg>Rd)ZpZE~n;eq{tzqlLVZv|Fr8?jmNu&>Qb(rTM=0%E5ji)E4 z0|K~^9aZbaRsmnk<9wR9PCDb(4(MpgX*nPyWy^0}Z-=rL1uc}2zN1eA}k}L9*N7Hv2h&( zI3dys=5x%Y#yIlOjDvyGYB{cNf)EYiVZNo-FD4d~Go{gEYL@Cpf7D}W&}?v2x|V%` z2oTtZQEI|UEPD8pzx>7VYxu=3mF~%~ggPY$S`+J3oGD06(tkz0JfV*d+VgxB7g)xD z^aE+M0xBj#|= zZt9ddq@8QSzKi>~N`Ci+e7ARag3beQW)rCB!mVeccsddYesbCKW@z=gY3qg-oS#fzeNE>BnkMaGf^REo#pDbZNP|7di_FJiI{?+393e0$#WtO$KL}jw;CLyt z4;3q=6ur9}6mdf1lVFG1yM0PFBD(l`y`Uu0Yly#9pXf%9bX8Xnca(ltE<@;Z%iXK9 z@Pi-_2!t#)>}AQ^6E`6F^rw#Bu|FoV@FExAe9r@`6T7yAnzvmD&SxJupEnUSGf3Rp zHhjhaPfJR~T7jUCA>>#~y5jrqAAQtXE)%gHsan(329+a*u#>BJpGh>{CX+Guxs*l4Abyt^@tds8%{nbIBwY^h@PG-GK z8oW~f;U>9KuK`) z5>N<$cnYmd;?!#<1PKwpc}Ol%;z9r}{bk9up~zOKxVhz>=stP~b!tjeg5c~lPwmzb z-&U8E30|ctM4$VnPqHH0|FbKp zSOU}Y;!()}Y>9_PSB1Evsvs>V*OM31N9I5G&;$;27U((l;7m4d$lMFC{}nPX;uUMkd5a-b|OzzpGK`M2JkD|g#NaNyE*3OWOtKN zM^S1mpfsN@yRf&-j?~G}HIFUkTO|EgZeK9^xaj3nF^%kQWfb@Ai$y0~`ZYARBGJ%9 zN-81;X1Wn;&asb?^h4)@Cl3b1R=#=ed3zyN(*=#O?|>pde6a9-Y6ll{I$Wnfm>j#K zT=f_k_8P&$0qcutpN;oa!^YKeK8V3rjAZ2~1dB6#uLfxypPCVL2LA+SXx%fpSWOlq?%_b;5OX|>wnv+Rw-ZgD*i&z0{qVHe>4=-)k6Q5Qe%A=p>s?#6S zdZtdan5>hh6Y4@iqToDBS8ttyD^W-!_2P^XB@j=%rTRF1EA+DDlP;quGi82@rnL9` zR)P|Xxt%&a#DRdG!=F!9m{B;ab)$ne5xvz%9?yef8n42$HPI~}d~p5sey~2T z^=LBv0o>s#(4Ba=3>(SG>*v{mt;DQuWHjhIQ(Cj8GZU!3Sw=r9SJ$Ey;@J<~nBqdt zD0cN71y#od=dTOugX?$fgw4A(ZDUW#;On5x~S?bS$x2FO>R~?`=o&@D_t1u1GRedag{zfa` z=;;X*l>tFT;2V7kB3Q0|TtQcsQK5Q}Y*o9bnT(cMuw;Fw-i0MoG7r$8@SO4XHGL91 z6%6eJ9%1DtpBz1EgD%wj&;fci>Y<_WC{Pb@+nDA`W%OOqJM_`=uTY?;I^0dVt0eP& zxb}b;8L$Cvq%+>H7CC6d3P&oy$Q6J3)6t_=cvm~bBJaBbt)Q>5pa**BKXxtd*AJ}e zVT0okosROv`)R zFYNTk8QG}bkl&?9L>&t$B?$M*K;a-BqG z2D*n!Pr4+}R~nr@4S4;0qkyfn8C_{0Sqj(sp?ZNI4vu-5q6m+>AYa@cD>qSwEfFw-}jj0{f95PRfMb;^#i~)b{N#GGc3~Bn{ijo$?6O zh0*7S&FMBtt0bCgy5}CEB=UB6IKVe^#T-Y4!hq(Q4U|DtUezrgGpy>#wZtT!W1!E} zY??5!&1ER&^Z`Sm{HGim$D9AyO`SL_6~E@5MFgMzo<25HWaC92{_c7(=Y6M6Ks>5( zHQIn+gKKIRF-0q)}G&|&@Y!C~#;O7jP2K-xU?nCw}_Vd!;fDSZ06H zs}Zo=X0+8{781a#VjGiD`kK~)g%oJKohTs*#gb;Bk?-xxs)%o@`@7IbUDXz1u#5!N zsYWZ0VvF4%xy9uZa(DB5r&F6LDoDxAUzKp_O4Iqb%sd9Y5V$M>dChOGp51N}>ebM- zi60QL#Ge~>n0STW1y0^w^v^2jl?v#` zDXag5US{6-C*+O5&cr7V7a`%;;_2rORuuonmKguW$wBPzu6+6B%PwkWGEXJV5I1`cA;UO6LipHT8WRr5V$Bk+6L7_Blk&s+3$aU z=#U*O+EZVCIq5(Dxd#24raUE{1{6cpDk{(x`01OFed?aD1fk5C2H9I*$ zfI=lh*VHfz`s?LaqW&VmmagXB zEfn61tlhji1k4&%V(;at0=-Qqm9<8A5>{u?AP@OTr?U5|?JbZ1qcV@uFM#gkq8MK& zKqQhlA&|l61ZIs#<4K#P&-n{3O}%Icm2Grr?g9Uc8^+11~Smao{qj zIvgO|My6#5-)AXeR`o}Ss#GomQ2SX$;3y`bFD)c#& z-v*D06ASpU8_qG&-KQV#+quVZRj0wO1GA)`ptY+JtjFhs-zeOF(&&`4hzvsF6f zNm;7cjf0<+7z%;+_B@VA)8~BrG2@evUBcwHO|6td$_}nv(*b%$n)$a~G|wt_@eNbA zTs8SBuOXMw2SGjeof62)&P&is*Oo|L^^FP!JsX%~^)cM$s*&@27BEq}&GAu!>h+PP z)$87W|Ii_THRuv7=z%lqZxrDdC^Cl8AF3aXPBi-2NQ>%Iq^eY%Rwg5Gu6iIX`YcTE zD5k>wII>Ju=LZXqy%i=M2oC@OPo^^hF7G~zCkIh~u-xOA$mTe_Vb;F$&ed0Y;6Wz> z$#!dkm|4B;BRq+$a@hbUM=dA|H5w#^NCPETibWQ!qJ*2dd&**HnkCWjlDWC`+m8T= zkoyR-{~JO*&yJ3bI5)ShG${>C*&i+PP93yZhlclRsGeDIk(dWqnbC#<_O58|Vq${! z1pVO*3MfZIFh{F0u)}&zJr28GJZ1`PP|?fmurqf)o&dO_9F52t8`8m09RU%PQ4a&| z9314usBdJud4-39rBbB`{J17#hA-$fQV-__i# zD2LZ~07cAzr6orPivCjCR{}`1>3oOVwQ$ATNxe_v5sKuXAkTsTK&6$X&Ne64-+&Hek`a0>Or)ao7IbjvjA@d-ji`MZT8 zE|SMek3KgYYJBpSU$POT)<2=Opusa6Qa5gHlIyrLDK)S%r1l?qRkJE7wirhz0=Wu5 zp`mOGS9W?ZznkKdp}4}V=75G1N1{~If1vlJzkNw#>NXgRJuMPTpFwWy?^k(-ObS&j z4tI7RnA1D!$XNnh;0C2`2$E78&Nd6!trn9^poZfCOj*~DBSC|i@wPF{gjT0D`69;E zse@8nZH0k$ohv@p``-A#0~ma_uf^a~tgvPRA1CT2XK_Oqn0jW5OygG-t zKw{-t#j&KGLw}OZ?!<{DD59c2c{B#~iL4Hm%J2%?{&&PCC!f=<=VJexuM%+7dM#BD zH-+^gXr(ra&25#6Sjs;7`#n7pIS|*O3!YO%;1+A;OW(fnAA9I;zk0P#sOOYVd`9o2 z2ZLo~F46akyfY_R<<{X@pQiNfP*<)P?kR|54R6?R z&$@MKpk7=`->^$V&Doq2N%$lpq;4@ukX&B->gmISyH`&(iR=Px&%8~{FrNUK>e{`5 zfdUpmz?8d=(}xMri8&M)g2E6-PgIRS4ui%FbbP7dT*tD99@@0Y+S&PG%cWi7?2dNP z$&(9#FDvWtBOzr8Q&1H)GoL@2%N@V}e)=2Cgd+Y_{j7xcm#Vw}C=Kh2+7=bsTt?!P zF9Gg`@_$SV=kUqoN$l+JM*mfzw_-5a!z9RY3>~L#a5sSf$kk5!x!30HRoa+D@m6PfoYIqw!FHeQ*s zB(A&e@jQ?r^?DAU&l1|jgcO9^)H*fG;t>6n(mg_OS=s)8k_!YXw#Zb_+O!Bg^UUZ} z5G#N;^iKOldv?UQaw#ja5z6GzZnoh-jV7X_dWle>LLXk+zxytWTToz0GJ8Hxc8Q07 zd{qZr*4*CT39D}w(XnE6C;B=?Rvp9zwFpIbb#f2sg$M<{$B#n|YAqyF+mcugtPc#^ zX(vzdKW@oUH@XoUV7|gQ)38-f+rVuLpMHAB4n5wlyDOsXg)#oO-!9CGrLy*s{rYZJ zXtK$%Yc03xpN(q+c3z6I`NLWBvg;RfG{U(D7VON5K-A?aJX-lJ-oKijQ!&sjj9lr1{4!6UH= ztV<7o)Y~uhMyLf6W5s7NEM5G7FcFeU%O87e+csNg=Lap9R)m?IG4?S_xaqjCh@g-hiP!F4E*AMUvoD%}D;oN@4J-bt9=d3bK*yW6Yohk|C8$6a z6a-o|L01=+32C{?Lj5plB|K?h1_UQxFmC4ad$z_SQjAOH5iZ`wAm_BE~944c0PHvdZ?30AWfn04!g z@M!$>`ND2)Bl3lJ{3wWOU_}o;6eH$)C%TGWWktX4p`YnW5xMHKC|qh`=@Yd$3lA_Ltqt7h-u0wqgTm;3YRb5;|Y&z7Y3NwSv>N|>jjtEp=1$-r&!v_Wc64)h( z!{*3E;2~2+16Sq|iUp&CCBCHJdpdu|kt139LtTFT{Ceb`DH=9l8`9whH02Z1$OuYJT5gjR3cf*$Ng5|!R#9^G;EnSPv zdCuJO5R-#v!_SM&6o#D)PYga^Q-4R)LRd@mk^-o!({~ndA;~kk&ylu?9Tc- z5_g=ug*2c19dSvPjuna5>0_G9FYh=7`>q>83U83zW9*Iv()OL;X4U&wjoC}ggJ7?^ zVLML;iLEgv?$+3tK$C$_Pjg5&{PLH3_xb@3dvCgF0CY(1Cb0Oe146L$-NjdnB85EV zhZeN92v58mIP%&RJzPCMJ6DdjB)oII0bQ#7QT4!vKCVp48NYsl2F7=H5xrKd_7c}; zXjjML42W|s0%qnB@({ho2$BcTydFTM2!YDxh8qJ=Yw6fGBNK3T>s*SKXm;W?E1`*n zhHu?=Yz_lSo+6()4U+uND7m&Gr=6u3Q$URi(io`>097L>IdXZoB!6*-1PSP`mu3Mc zW8A?t15T#S#}I1k6Hh$xJxbF*9fgK}lttirY#l+#jq4FG1;2#vupSHQF5 zWqfYr`Y_d5(D5@J8HS@Ya%nWmAMtgl!RG=nZyVFOVT^@PLl>X6HNX4a!GoBf5XV~f zC%aju?8aFvjbQSUcCFSQT0Gm_Y?`r%ehbUr=d)S+mtWp@9~vr4)M}`R6mY#c0SMWT zBkVfCF6MI@^3P{-Q#=gagjQRM5?`8U(&n!$A@Yo*a#KAaP5 zA~9sF)yLv|Vh}tSEEO{u!^Rw55BR`=&e7h~o)P=sp!)r<45bRTE)hi+(c3K;-GJC} zkE|`{fOfq0Osm`%k|%q7px)^&C+OvF@1%;#tE^1)igap8-8laJ+G}Uc!p8AHN)lN- z6-2To%@2uwo;)&n;BXo}UPAuTpHHqtpA`3Qa8qWXf9JJ5d}-J9yZj)g>t26xN3(5k zyd`cM8nT~m4I6o@P3M6%yd7J^(hWzh&-=j|c5--Z1~=liPkkdNy3vuPz$kE@cBkU$ z!bXKrC1!4k1~DbhYza(!V}o|OaxP^U;Wc?EZ; z*=&fgv4v~`SW1Y}2!I?+3Mfh?;%d1fJ>-MtCM9NWnrj?AF~qnW(w$sI>=O?B_{uP} zX)@1Pxt`$rqXGW^q3k^Xtg5c{@!9A0-h1zN?w#9vFVibSbLf450qI3)Vxb8tU{Hft zP*JgqioV#5B?gq(OEh`b_)IY|iSKFT9{+2fd+*F0H1GZXkYPp`jAx&{*Iw&e-}=6U zB%BBeo@rg%+WNcHWm|(7jR*WU@*$aXF&GS*kS9zzSYV48@o+^7xG33Nt}8;L$xMA3 zwQhh)Q(lKFdTe1;6tOIDZpT2@wFF4mp&`IE{)@z$nJcYUiRVKTT!*&~U?I$Qat7PR!UjX?*24VAP|19E@l; zABV1cNRjKX<36yhD?iBdMLZl2zd7I$A{Dxiocv}_&*nsI*Zwk%$13jLL_XUo35B3k z;P|`(^3O!B^1PEc++X>jmpEO1rt&hnNt#?e&&*NCS-Qy!Xe_JS%FYRzLH$HjZh>g% zNsBZRmcYhm%GAL}!t2iWfaE9LJ!_t~@>UsC6Cc3=l}exxmu4E$)~OUc@vcm)!=NuK%)@T3)RHv zrkjR`9jO$|1&Tt8r$J&gdA?ux3Y>j3;rcwSz48~7ZX;=JF!r(#uI*dU(vW@HdA5{e z`V7a|X-^_@v`f8lYuD}f9q)x9ua28;xxUp`Kkc}VK0&)_l-5?CGQ^IwKRW5E+BT#b z&{Vj`A-^Hiha)gUKN<^&k*A)z6jd9xP9v(IEyBss5C`Zkw4R1!(0`5;`@ zwm68~{3#e*zd1z+7>Nxd#6K!mv;+2C(G$$}+sG?WkbHGj8QOyy^ikynV*lAQ5ZK{l zV@wpZ;_VrMTFT;^`5c7`qSr*2vpoak78ZaPRrkmim<(-&7RPzO!ykR7dc{_=DZ-s1 z>Tbik7=jg~y0E{iUsI_vq#^aF^b=_K+LvD1xf3mDQ)YX-bg7J$o#luM%j8pVL~ll~ zkkNOG#wo)|8nl}Scl3(9sSXdw{W8z+x_|b!fnJTuq19Ts!5scPZ$(gC? zrLo{m{QCb<>rpwX^~eF@%n90qG(p27R?CE+;PT+2g&H)0)Dw@8PzQpdvaWmLiEZ2L z`8*O3Q!4i&K`b`m_19k~zoT@eCy(B({HftT_2KrtwA_SMb za!n9C$D8*(vHAzHlG=I2&Ll|S(qdb-Z;8W5EI+csDY7m0lYd=sVwVeNd{;lU0P%6QcfXUUOq6q~|L$YNM7?41k^s4_svZC~Z$17*^G`3(}DFPZZ5%Ifz1vW$A1M`<^X(poK0d3$SJE6}i+ z4FB0<<>XiZ0$j?aq%I%4ZDGIQ+j-o@l&Dh0@lmEIM(`Kn@sS4~T)!UDOXBCrs=7Kk&NLCFs;sLa_7=!P^nj}DN3ldG}lx)J7>ImFD=>NJ|dop3M=Lrj4k zQ~`N{_9S(8)yJ3cn~cH&jDPg{n}mmT;X4^V@F5w8Y}Iqcl`p)ob0@Tr2=J97zkdk3 zPXH(KF7!w@`C(@Xo2ELu*ve)r%u%vUu%AC^RoYlx%!Y<6I@n6?Y9ls~NA=`&puGHB zng%!#pQSF_cL}Jci$Ixd+l5iIS8APPP#7mu@9;@#_`13!@gp?DLnNv9_@f7D_>U%H zI0`|St-mGeBE}R1{N8Yqx%~0RFS-bDWfUi(l~*i9mdtGimI=#c;}QapAYD@g`@Zg; zoVwk?1OXyfj({fDrrCt3^7R+xazluEs$3@TNbcHuX&j(7TH9@Rbbd^Jglu<}iRa|~ z@IpXG&3~!4d{gniEB}HgYKNraxrVq^4Wj|*sTa?EHPv1*{*T441b^UCs7_AH6ROb+ zgJLQU-*?}-b!JHQeuXxZmqGdd;`PPi37j)X&|74S6%S<$WvmOsG=Y#|%toClUB`eE zJ5R=zInjq#o%;N;RA2JDm;jbJ9-R%L!GL) z^36979Kd}`2^KhK!L-^JCG=_sNVxjoH(T1;4tFT>TbIK45NpCn-o%L`1NkWt^vs>A zi)km%9(z$IS_yOUcJfc}yhEHv{u2qve_FpyUa(ca;&Z+@IyO@92*r^KpEhNdnpo0!HHNy2dF%vdlnvnb(O z1oG~s1+ptg?31-$ulR>7(rz0&BT;1^oYfU7ea_>|$F zI8&?L{iC54e>d^2s&7sh(1Q5F0WJ9wk%s~jmBj;>%_m?lPP?GvMf4|9u>i|i;tzMZ zjGX0iWy>3Hz(#evo~Evt1P=$4thV{xxW;NU8XLu=5-^(O`m!9EI&tAnaWsKmpyTW|0O;LmWH=a1Le!VA` z15}Gi{_DT_e3x?OMZF9;w{_iA*&T+>Gk9v|-0f!aA+LA#6unnBWp<0yZsO+oW}Dbf zcq?xkv2qj=b&2HiLIBiFl^!FL%R1Xqxbx&>#AW0z+qRPYIwcM-9%86C6X*Jb|Cu>@ z9vZy9(7@<;2@V8*>CcxKc`)ifYxj_DxMqSJ+wAJL@eNhff-boCWaLdu&^{>0@SG87-MEUivt|zYAg;|&d~~}ann^_8&;01 zcID8FZ@&3`9yEmcY_3)ctxc?X*}~-t=xiQ~wkuBvtmPz2$BO``66sH#)crNTF;jWr znP)D!qy_SG4K`+82|Oeq2+qZ=2J{3TZ=$b1x+uvP@o5CmU-&?OVezM&_}Sh?PafYJ z0n29pB{!ZRXXJ>c%4zg1KtjR#HYBbp-thI;sZ0 zi-DGl9SIta)98kz0e(+Q)GKM|71ye2nhRlSWsXCD17UulDlxEGx+tjoiybb_emuVGbiGKr_d+|b#qs=H(TKdfTf zuZuufKR)oup7F8FI48dv`2H+%QG;0#?CYneMqlTZ)NU5aV8XjmYO zt2+8@T${kunV0NIyGPci7~svAUB4)0UbrDGFo2HKu=V?M58(}1+l=^2<)aRCsH1Yg z=)`^+9#E=zHlL?SJu?RNU^uAhn`A>5m~zXfn%GJOOFuB5?U`7T@@yhi|Gec(9UV`%%g$?ONEPgIUrsk` zb2mGjjSCoD7IJSN+PlPhD-2(KSy|Uk5FHf*@z*@b%%kD#^W=%l`+p;Ev;&)QlP_Qb0YU(>Ax5UrZe-YfiVb806Ki&3UUE?gPbQ0f~OcgRnlOE zg?m;X z37S0M(pJu(8?tk9wQAy*4OGZ#&m311xpUrC?W|#-h6#9DJ&eU;c-e9Pkb)Uubt&Oh z`0iDoetOeQupdz~(Or3ri)#w>i%y|jTJYo1o&<->Bya!z`^O*G1KM^WxGtW$`Zet0 z0bn6u4@WvGR}j~g$a~6W@fNK z@OyCaEr02y%P%*>6c?|%8{|0VS8m>#S50bT8+gTj*_C%60)rdbgylt$*+?(!mOSS+ z6~xVw{P##le!eT4Jpkp$e_2x?o|@sxrRT?Oi#H@--aWB)c$aD3nivQd#nvn^6Mw4Q z+ksy0sB}OB!Hq`B#A0^et*u;8O}JK<2Kw^iqibv+&Tm+9)zB`Nu2s{b?FeSk2AI*? zos}}<7kG?)gX9`zd}K%u`uys?IWgbNeo%kl8>Y+)LagouA(j&~cdglq>k&KfE-^RCx$KR-*SwSAZIRzpW%` z9l35XUB=yh=Uno9z{kma`M*j6Eu)R8x>FhO3fsh9pQ7C{bnnj-{@B%bk@M^8eMwsz zboXN9M?W-W*7B!ZGP@)Pa-Dq2zK?cvbv-MS2c=4BguKi)bAAi2W!{j5?pLSthKM1b zBW|jvP4MWLb^SC=)BwrhQI-IZ$f#F!p>PG7N#3qNd&mn>D$CPo1wp=AL4FVssw9wjiIwF0I9(sS=bm-z zq(z}O2MDKtX$xD;@RG-v()XTyf;P96yrKGVH)vCEhXrCs~Qmp+n^PBJbKfFTNsx z^Z}7U#SAl*x}AZRwGkSRX>Q9EGJNnFb3o>!ZDt8BPk|DyR3qVu=nRlDW^439yI(J4 zTp5v{U83AG=D}5a;kiX7 z-i~9cb`&jwO41qlO~SUtK@jI$)qhHWb|OB&AeUG>$73%M{|0;)l$SILhm8RMgJ)>) zJ$mZYzI}EW-jqUO@C-Mwy#R#LVt-IAk;CCv1?c_O+@1wO96=bn`-UEoao8Xk5_pu^Z?;QR?QA?Kk!&5s^B}Nn`+sONw8GA)m6d9a~QgKx8g-QXX*mhMiQxJ zcR+=!#iY??_&uhP`0@1C2o?o|kEbz%=V+2qW{}H2`e;(Av@o!}Rgm5g8GFQ8r9&lR z(ym?4?AVbf3*g+i1#Y9OPqw12%7|8)G!^tI6~xJI=+nGhgOIBut?rtLcMk}ZRlV2X zzpf5Q;mi{!miPnS=vYTNk)4idBOZR5?+%Tv3~@#Kp|+bl2^x7z3PbG-0hb=#bn&(X zntS#;tr^e1fdL~RGQ`@p$J^1@^5*$=m1ALt#NOYf6YF~?yuCBN>)?ShPt8v6-m@k6 zwkEQExy$TcwGoaCzGQz>8*RcB5C*S(a9k!sp|JW#!%b9FipLvW9L95>YZ?AIDLxg# zU(~|!Ar*4NtyW25#7=NTOpip&RkOJQ7O{`Kky_k)0Z6Vx z==B2AMe%_KAtH^-fbnsnQaJbwD#w%z7C;mfk=-9!7fK z9KF}T0#84a&%hx^QgR0;$F_}SIDaXjr&=RjlSp1WT5bZ6`JKwIXq$NR9>q!qB1ZDi zJ^eH>=z#89DX?$@drzEMOMcXU?G|vZS91gV?ifO^DvUjPwXUC9ox9;E4?un=f=G>f zl$hsnV$9R3x80E-TN)Pf4G@ z)%=fU+YGxylS+J<7wDNqruI;-NI?C>lhK&^mk1`U^Sl7)8ic`>A*oJ$5f%F6X+^N| zgKOpHlry$rb%2(sB^TYq0djr`>6e#&Hn?}h0D}p<*z1=!hpertfVjm^gk+{(u+!~p zt?<(v@Ihs$b(fU1IpChCOj159Bc4xrzG0JLo*`}%;v^ZnQI6YWRPzOIs(Pazs`x4a zZ5%5JFCUeaG!$XfKPOnQ#??Rke`Xb)K+UDQ3eCU&y`v!ODlkN1wj*jMe)-91p}=ii zzPpDe6f!$5nya~6Gj&ZXSHo;uKV)cV2LE4F!c)*qb&>C`D$y3P`;T?t;jQMm^RfU7 zDV9C3!-Ey<92>8nne5%USkE;HtgEk{0(W3_KBbC>VRE`1Dk^MPzW~6IjpNr0Ckg;; zQPmWq)^>zz0n!0j2>2g0&`}@pB%DsX4XaBudWFY<#wJ(!QqQ&64$fRWXS@q ztd??8z9ncL=(9Fk`+Glho9B)M7*dXZ$?Q_Iec6S8v2l_YEVYz{dN7>OHh{8!%$~Vz z@nWP5Oe(3Fz|4^+JCo+nww;@1%2jw;R^*X@?4(f8J-l{BI(@++3)d=iuH9MM#Lv^HUhUFO4Z(5bg!{7rMX}cjzNq$| zJaTjaJxT!67c3A8)pD6$yVS5xN8Ge5>a~j>V^;s8U0h%c$?|7k5xILisIe1}?qa_wp1>6AjI|FYQ3K!$_ zmlhIfr1U6FszIDI4@BoYT(y#HzUQ9RtMSz0+PEUqY6E=3+L|_p)G@yxDrkvZKb&7o ze0lbKn#Qb7r<6`rCifS!CX)tAXC{xXJ-e2O7tsLUI@oIz82SdIBFCgYy}&qO62Edk z(57;gKD0;Dd)=izI0^1eR|fUI#dClLJ%5DCc2Ce=sb!4Sa-gazJcaUpICtCCF-mF& zjmg&5iv=7H@%4i*W*3y#fcb`Ng4+-usk8<@SG}Jw1h?j{yH>1l0|%(9AW$*%7Cno~ zS8PJM#BODpL4Vom7L&gK{_G!Q2ng;E0BoMmvvavtNwR-&krQp}ND3hHh(6o5VOl{! zPqU+GCMfe|0;vCg{_D<1M{nj%;`Peo8j&)W21~W}31+Fk1$|dq)3&KZc*)~5GW5y7 z{HPr9nnfxY8Q8@*_~{^n&!cz!mavltTK@!BFm9IKNGniq3s%PQK^Ez1FygpW~~Je%Jb@!3`bf@B~CaKoaPsu+e?egl}aM zj6-!#AXJ**mEYhKn^-}n@hdM==>!>Vj?u1Ia4fgv7N*K&;3$};W)*An?eq}V%26}S zjnJqj4Vz2MZ-*xCH#}2Ut5&FO>psPeT;Sz-FHG|am-v`Gnr|!WW@|yDPLG{FBg({z zMNUEpieCx=jFSV|@oN@LsnVSWVe5>MsD9O310bgj#i(0o;fdq|j+*BiaSC0_&_m2w zcVFJZQL~&E-;Dg%rh`KL@^fA| zyxuzWRDa1XpnX8lsN!za)#j?buEv_WYH^2;5k5M=9-wqkShdn|`_wXcjOw~;Q?88lCs;l)odZSc~v$i!-A84$gVuaK2P zAP-?n!&|TXgNRj5`#L)QR2JH8qBgO^z9V^b3cdH*Y(w6Es7xxwAbBiTDpPrM+NdpL zR5n$<82Ru+FxPO(9KEetwuYt3wEaq=YgH-K?WCMM4Lxu+jT#Qd&^L+|7Lc>i>(TYg z-OVf3{gbT}#06?D1ZUj!ezm3@q6WjQF*$Rb-_AQ{T}RW3da$k2O5*W)UD^nH+JcLlmE`9s$YpyW?@cnuwb<5*(AirYGe&n#gZz`uGAxW}CK3kNAq8dD4?d(>f zrvdw^{sOvEzbu!JV$IK1^iBpO*9r`^x5Sr8LHvu)w1z+)fcRJC(r)zU?uw4MQro@? zciL1;ZQr89Hhrm}@n}o!F_~+yOV1Dr>8=%IG|?XG%!2#z26TG{Bp1FcOSCzqTvb5Z z&uFx479lV}Qw4V=u~*L-S_r!J%TE%Np3(xqEQTo=I5{Z{lU8QJ_aNVbE=G?91?P>x=ZRo$*L zXM$p`mLu{;+w|V9q>OLki9&_Eu{0+y6<7tL_+<3Be8SdQW|l(1(oR}!Ztf|Cz@}Xw zOLR^4p{9+cUe04Fp7%W{}zrWybOFk7sO;ujm2W^(-jAt+My;@Exw zWFt0u3?aZO0o%d`ebgDOQj}s54D!@aF!&1RTKISFd;>U0v%q2Dp|=lbFD!6`Lc0#! z2PJw22R+g$Q>g~?K>T2sQeL)zTUi}4P*eF0(=NzEb<$hlM4+zoes<_*(ghv!3cL^i$r!2&C`&+!0PMJ^Io>fMpO2AITs@ETUV9i<| zl#lO4IeNP?s&wcciwM=wN1z)gM^r97Gs)07y|Pr<3Y{TaM@C*O8!uf7=ANwK3r=Ed zOAUI2?Ar+(q3?W(lqw>2I==`iGwPVS02Sn_O(}b9jdjWpiaQ623V@e1z0+HM%Q^g?omjR#|Ei{lh&=fOX`{09 zCxQIjC<0NRxWpFl-RJ5ZC2CRor}atj5>b5^oGL+}lEF<4Xd6TP`&TbC?p z8y>!StU~-m)S~H7`ebzxlZNq3ny9rBYokT~M1Dg43xV{`-~Lwl9(sX!@@VPzCHNnj z2k{1DV8>{VT92*TVXG2taifwNTEd_@258{&8arHYlw$C7)YDjMPd6@whL!lyUl^^t z3AC_OGM+q%a!)^fTPt5E@|tJ@mcq>BTW-7UWAYEb{q2o6l3zXc*w(GhfHQ8xWa$sF z>P4~zPN6x%7BR!xfth|lZhX`GX^yk|i0>ki$OC6TP#Lg%gM%WB*pp8uu^VIZX=%Ng zfxLz5$%Q%t;D$mxl`BL(S#s4ZBar5`lNV7(>mf*(3!^PZ86Yzlm%;mBDh&UC(OwCj z3_ocVucBfO)!@hVFg4eKAeqod> z`uXQ~?Seiq`bW~bcwGYYAQP(>ZZ$927!w#cu?oaLhcuLppaj)idRymXAV;wkTTSX>y78&?8DP`A`RT(I0! zSjObU8XGRbfVF}w3W9o_ben(;iZ|n?C!gHD-3Jt}qsz&EE+xMmK1TQ}ZzwVE5`82R z_#K?gQ76c0dVGSkRE37iG)--Kux&+Kses<12 zsJ-OcgdJX^dge#LOYr{lgleo|*zje&c|&=Q!&ZTlHLCGlmB?aHSL2V(3hUS6QcSBi z0F)FH^+HGI?Ag z!s50tMeH1t$DxrGAT*zjLYJ`%-I0UbStJwibaHXt1`3|GG@mbKaKYG?d^!Nug<;_Y zkJQX;VVOGZDmT~7ag$#MSTc<`AkxamB0uq-xbN`ZI5g5Z?av>~5ET#ce*R4b%;KuG z{oR5ce?8R?eu#|DXFhACvqDR}Y(rZ?aXWlD0wXqU1tllHJeO0mmhNa53HgWsn^hql z(U`o#)`h!S?ztwed0td(nV^>&CMFd?-cW1W1qxGFo7SW*;v}R8<{4gYVE)%fyfM$E zt7#Atk)PP#WBWP}B~%rBrFK3Xc04*pIS-A-LA=}H?!*;S?ck5$u3+T&zfE)R!+!3i zzyJO3_L!FLoygO$rtUxAc3YVlXQCoq)iRJ{Xn2VZx3pnZ|1ZQ9xr^j`GiL0c zK0QSqGZ&Zl%eZ!ddis`Lf_IGk5~;|)c5WJ;00)VqZW~$-k)Y>?{{XSbs<2G8X@~VP z1JJm`>Dp>&kzYA}rBDN{1?LX+fe2SEJ)@fCu=9cQO8q+4QW6r1SRw&C9hR&1M?i6) z00sCXP@cryCOSmQhHE?#j;(p`y=$*^mCI;17TSi70rWk|0QZgkF=ePlm=t(}yqG59 z!(TcOCJL?@xY*x#-!7ZQH(UX zgzbu#ZQjm}9)bzOupzY$40|{NHj^2APHO;5W}y{w0RgqCPeC#`Ue6ZuBCGvjys^h^ zYFyG&VHrN-pZK1_r78~KIAmj@%~*9d#(X&c_16y^0KGEM2YvW@O42shPDzg!!nX14kpTp*23mI z@lNF|L9d+60SdHCc3~lLrG^)P{0K zu99aBJoM>;%6+Nz~U4+!B1Szaj@j- zD_k6nmfynD>#0}XIO?N;hsSw;H7ThgLE~RJhLvk4u@RDkxktEGsI&yrjZiJ1!E7D1 zL#mf|wGbG2?6ECdV5S{d=OhmBWo5} zU{$xZqi;JZ=4aC=3A5ixaw2(zSoEhipM3nE=z60Jj7sc^czi7$i$g*#%N{Xk0uyyG zv?&0)P&x1#nOv|7C2vss&udo+EIetpn>a34BxGt?s&d59Q;>5ld`;&>H!Sr8;PAY3 z&Qg0Q!ebQ*ng(F>_}vIgir;z_JHetgXuNQj8mH{WangyP|D^dDr`BwS*h+$T9U?OJql(unCHdkI65Oou9mp$MHx# z3ZGsiVJrDy90p|vU%?WCc&EOFr<9ACV_Tazo*?_u?`K|25%&?|DVNUFa`hbLq;>7) z#DX3}kxKm&toWD|(CDAh>Yy^@vQ$=!qir2vUX7gy+)%$YAusv%PT()w+S?o* zy@gWxw&zET<-DQ;WZc!KP&4_i*6SOdWoj|a940=ld{sgRN|gh|!Ti4W-}^P$ome31 zI=?q4gxxDFu0|cnE6MkMp>(vy#o&u1Y)QQu;z{_xL;?RbHcwPJ?Un~aptc+eDNPfm zy5x?*E)DTqp8VV)k45Ay@>qh3Dh~j6a4f1crjK~ea>BWkHLCQf->0}>9+yDk1Ax~J z9|F9qRXFZYeNdbU!5v&nAQ#_s)6%8-c>JZm|9w7mOdNctUkfOL+-cDl*an-PX=CY( zI?gUk2$X^XdPaf8$CH>tVgrAdtFF#ucE|?;93{(|4T!)tytz2D#8h)~Ls|R3$sz*) zE*NK>zmCoEMtz*P7)t;llsjD@|B!zxkM?99AzKJjVT}QVB-K5$L+A?L^oNh_i*lh0 zu;a*`a7A_hfJMQ6ES+1wrp{3*{NEue3QET-)wq@fB^6dn!0XrBQp~4;d+JT!ma-rX zYW1IgKD8v2ijx=*#|j6mEtuyfN5{xn54E-m!t#8#lcnQ2I&z^8KKOwA1Fn;9XtDOR zD*TFa&)D+(7Ut3lny?&gE+Y;o?>2x|pku8m93zt`Ee*|^sO1?s%8scJWF|pQ7$=_~ z3J!Bmr`D_Mu99dT1o;hf!wJPin(E9`517`D50!XV;M5vE*D1hgT&g`jEsn>=(9ils zwDI)mtFD6iMa0KW1y_Na*v05qWD4~q^qGhR6bRGg>v$>`K8CRj-YZ=Kxh&_U3E0>> zgmI+RG`j^4dHJUvO#}RyXK5O6hD$RebLYl>oi!=q_)du>i9#;7GM5XJeG7tQ&RrN>W4Qp_Yb3CZwSTMk3Iw%U)>DO)<3HWl94j`U4uQrdD@t8Ejh#&uuzINp z8C4CN#^)Bw^q*3)hK!Q34Z!D}Sas)}%a=o+lL#YY=2LZAVq`h}ZVn9WLFf^HJf@Z9 ziF%kWuha}o(QoI6!z3Bzfdy8KCX!7J!_;OBvFFFxS{NVZNtEDt1J#Ry$F{iyIbD}S zAQ2$*&j?y;2S_h~7K~BK1y5jE%)c%xlMyu2X#$~+sea|d0hj{_)78_kjsfE35uMBD za@7(+b=cAi95_0M&%86ww3L$A$26sDc+1a`Pa<}f)TzbNXauHcGHrTL;`||xM4#U& zF!#1=q}tBD4|&mzUVh63Id17PKV3lcZ$rTS({N}8m1x4UxNg$zIV{xAh$@8ON(z&m zUjSEwO|xTDuZ3a#;$QU;Trn%AG6NJRkbw4`(6`hnaV;Zu=W;Su>y!Yfpn{Y+-^?Qr zjlrEXN0?qbpaW?_MQJkC4S$e!lvadug|oe?j2FK5uw@eFR?Mcnh_Rqotr~#nYRl6g z$Fq&*{O~pA3t-%s1s`L1N4*+Q;YktB;Z4^^o6=j!cM@-R z(U^dDb}={{<}F|qeA?Qw+NU>mwqN?_ql`x%MXx>b2;;P;)F>~u)r7iZRO$;o&|F3;wq zz&$McRCU*?iUza*xQ8FF50Idll-v9Ard8)W?D%#9W}QQw0Po#ZiwpI=MD-p**sZnc`U*OGr&c2khF?hS z7xwNAFaY%PZav>93rg+s$m-O7LF*PTIEB;QE7ut1A*n+a{}iUBM$-LhIF=Z3d$rc7 z!X9Q-#whkQsvgJ{0HPi`XN^aD>l9fZOBq2-u4YfTBvbuFi7-}w)ek1M%=n;E*C!?U zTvtj0EUBhwk6#)zKq!%CXKdLck8Iim`aftoSn_o=6W||c%LF|IR7CFx`7Zlqch3P< zUTMqnNy<0>O#X#t+jw{iOqdKE+2UT^>RLYtdUd@kegSlcnI4vk z0NH*JS4fDh8$ms47kZ5B-j;<)*D|OGWIFA;(@YpFwllc~4grFV1|i#NXBkX98oL6H zc%ODw>@=-p`a?%c*ljIw<&FPQASwwoNR!UIc#;wlSV5qDMv5C}C#L5_JTqU`xwv?P zAh$IJs(1d?=vog-H9r943FpKC8Weac5T`0>>V_VKa$;K3EX<53joz}=p!idbTPUg< z5IktaVf*KpjXFJ4^u)O`#9cT8aII740cU-v-KPq91wnx)(9)s`w+Q`$mXHH#Jb6;) z4=KMqd2+*s7GR)%T^2~B&}kF0Okp-?RiSCc_X{QTeu+F@eC_zU*jxmFHc*5WNJ;*Y zizj=D?>r*AT^xYG@MVj@Y7>RUc1PvAF~V9s+F+apKI3edRl~3FzhuJ$4*+KmXe0w4erS2{!5mT-Zp^;J5V78`f61&d0Y1Q5Od-!#oIS- z9L)o|gE<;AMGk`lyMg?O7NkkmKYK6$)s$<`i3J-(trxFp!Qg%7cs{gpC4ilBka=Ca zc6H!~Ch}V1*^?*J!PRC7E4>F3m#_#tZiA8l6cAya24QfSs>8scDAIz+yYl zbbZrJ=LQJ4g{ka{YG_k}3bk4ZW`64IXq=x_g8-DMaGn2~Op#h-Or@;t;d&1X{!+CR zga4y?VT=FoHePeh?Aaa&61V#O7o}m4&e7NQ@VDPCf|hSH&jjI@pf>iIO0K?lAUCWgf>=n8;fr!XSYD8Q#p zs8_SXEVXuDTmcTFz<_D)$);S3@;o)Gw7A*p6NA!7fNQjA!QZex)!0pZo6va#5DB;% z6Zx+;#894nkeDF@7W;gwxLM%dwAaXu zNhjn6MIwhLrm1QfkAsfMES*~|Q}eKm9n^ncEmN&)s?w|B)$k&4;}m1o`1W0O!wriT zIg-gYzy5k|E(aB|%dZ6mY`N2_&$CQ61Jep}xqx-uozFk>0yMVT$S0GSt1#^c_@T?^ z2hb@{R2UOSgRt&q~(1$}IUJ{&2FdFIX)YgZ4jt1>PP!D#x z0P3n57RBShX0P9t4cv8{UDPu!;$!JR7G?{}lVq3r;yaRd`_###1nZ`3K~u=FD z4bmaBES}ZnZ{EBo&y;cVJ2xbeoc!}xvUa3*y8*P29EYYa3R+647GX;Ooz9#J0SWgH zFTVJq;?SHqgAz+BAZ8mmd`BQP^<`2Jf~hZ^>% zul=L*DxX6=Xa`P1Qt0)&`Ct#Fop$@)AXlelHE+JE^BS|R4P;ij$fnCLPku{$1}r%6 zl`<7cA0Z>tdJ|R;#f%ad8X)#$Z>lB5XK0NElsNYfQxkjL)U-uajAC2`fYAxO!|x_MI3Mqrq#bZ(S(=059YcGb^|6MmLcQ zq-YG3<&%&sIU*6c6$YqJc`A=JZ7Choz@CO5hXn?E) z`~b%&k0PZEDsu!K;`|nL zWD)YV5OQnC!vJ|;j=`^JUaH!v_bICK?7cwVnb)+T>Efnqn{I7-_?$Zsc3BL_S#=5t z4is2?p7jPTNX(jvaM&xRH;H0A};FJaXncI@4%L5wLfa;$;QA95Zblp^kgI9 z*a)ua!1DnG{^x(5dTK)oe%$=!mmdiDPRqXObdiWX^?ew*!Lhv5}G^z5vK~uhu6`@(n^h!azm_wt}=m%Iz4I4?Ii1Q~*&AA0O zg2Ca^{YoAPnb4VZ2F>@OO3MOiOd!?rYvt0f8c@^5${VNMGaxTodCpF#9TvDEs_hi` zjDJ?I5A3(rc-%0)0l_Ol4c=hO8@PU|F41H6M*W~JdEtfKyA8lS;40b4+n>Kk zrb;W6iY#^39s=yO6Z*zN=!xKoyM7Qfn+Y9}^-Y%nrQu-H;ig-fZg0A;+Cd&WP1I$J zZ`*Tb$NUXT{zggpE~h%Q{x4 z=~4+RwIm#J1a%y?LM(O}_;v{}8Dw^@NXg}inQWEE=$GZ%%`B)E%h^Oo-7^G35Zva; zo!i3tvY|!hZJya|NPxHp-xJ>lT7;+XF9@WvdP9*JgBN*=in~@lr(uS+$RiemwpDA zY=N9D;(%$hkEaAta`LkK@4w&z6LeHB$#cX)FDN)O6;>t>4Rv>K>g(dwxUL- zDFdbu9kGMRuXQ%DS!J1O)S0J71<@rAmW*MW1+y9dP-&>xhci3k8A)QOtirqjS+f7< z)t0BGdDcvKes$256~g2JB5(o-3R-Npx_Kmrd!8CeWvHDncAOzdnj4wDJ0aXh3j1fyh2;n?GW`3uhpr?t?D10^mmaQGY@9D|o-vsvK{)X@f#$T_&T`I6Wf-C~^ZV3vJzd5#duK~E4xm;12 z7#OY%k}Dkc^*)&9q=Y~z~}#4Osc1+06|R&^!x}% zBL3~CpBf5<<}+uAGiPYb%7uA?SE!hXJL(f=4-jPF;|U96a>UYTxSHa|IS1$mznnye zP#xZNl+cl%*~yGr2RtKC_dr5oyU01iBDT)Rh`sPxmC61`CR6zn+LfAK^BBBt)MxPOf|r7m z!O<)e4g$Oje3WR^Y($;TQwN&SErkaDW1ax+d^WosXeE`9!oiNRZJre5ds(Iqb!HUJ zvKGEt)l-tX#9^V8ydV9OgdGXL$kA(L(2O0=j+e!uxf8+Bk=;AZE3CYH^yrc$IL2Ms zV(Bi(1F}LVt-X=j2nd~%cHI|Wd~vtj*a7|n-KXU8s7xbEAcfM}sg+9up|`Z=qDral zSWqA@&!KF#Ep_|;(2@l+9BeoOmI>!g1L9fT_EY6lCgaK$WhwRt|Zs(D6mv54h&Y?+;S%RF2fUvBTn#Y*Lzq3 z^2O-xZq$Bh{0Y0l!E&-}OQX@2_ud0g|2eXtg_tvzBRrq&jV-(N)>~cVZyrmh7o}3Z zZ_!ySxB-5kOp%Zl-gwcL#2X|Ck27dI9dwTP3us^n4=nt3d_$*Jr0ZUAH8C|t?u$<( z@1ZiUyC7UNN~C}jfk-=lo$O#q7S>eo(fQdPB zEhaPWHoDt;64tMPpKIuj8K$rb?kpAYMJNz+bXPLHc1>#&CepL4uB8*W>C?xBo< zo)Uc2Vg-()Kr4qFHlBc8OCcdn*Z3L;oR<_fYprF6`?)cy+yv1jd;#Ns1LU}S_CVl8 z44`hlc{d*EN6(O@M~cPi01d%-0Zc<(hV0~r+gs6a8#yH|b8?d$r}fG!*BItrG+^%U zGlQ-a(R_Yr=9Nn!jPZ5abrYa_$Ld+G7_rYC5L%evWkTo5I83!p&6N9u%^s;pE=KcX zF$Un)WMx|i`nLV-w={9~!UVY^K^RW%$>*Vk9wEOX0@-b+PNA1y{)Nokqf_eocfc4{ zC@3Mo0#dE!f{0$Z_&Y*$#ZysAxc#n;`Lra zuT%T{K2QnAebUC62Kg4Ju6n+?e1Q-?7qhz=cPHuW<6aB zMn_KVaSqqXmMM6C4yZ7l$F*m@Tn*cwcXH`Djv*ZeI#n>CVFJGah%cI?Qpau%c{yU3 zSc9UF>(z2SekZ*-C?AU?sB+$^cZu2}KiJ?{f;|;&VVRvBV_Ba`$(kh|u1YmAX?Bv2ewact84}zjFbuv5NHk3)*hFkc* zfVG$%9)BBt43x`Dv!D?haDdf}7Vi3EcjF(Q<4Myyl5{Rz!@yeQ0KO1>Ezp%^Oow_& zhNg-GE0F68$STiVfBn399vE#=zVeCzQm?O)nM7;qk$6{}_=3D)0=W#3766LOaMkmO z((v%n;bD|tu%J-+NJ@Sqn`UWChxh{|XTmUEP8L1R$ zfCRP+TGr2x_AM}z#6wA-V~wrZ)T&~Ag+1eAB*s1QeO`-(H0=3@^-%$A8Q=L#jLBBl zv)#HJIF;?fi31=UA93m{{JyHiBFMsy9(-5r2rqc>!HpZWnan4|fy(L!+Xe1{GM-A! zbXs}efmg|L6#5Rp_XKEIxU^t3CDSuGBmD;wqc;;@kP}_^F z3P^;dnvVZu`)69{e41r4it#5Njj=oCR1~_h4;aCOi0Z9bHX#|c45c%+|5Hzc5lrRKFiwX%XN)yQ^ z2Uu(rM(mj&av^4$IASFYH1O#>1($`m_xJ>AW{{ywpo8QpK4yX*1vooR07(fYsyeP= zNFBO=N5TUmg4zYffR)Dy42DSSfe@FI)Y*jN6{Mg&IC4y<3r^kt$Ju)TwpE_%w+q@r2cs>Q zmJVv2{NC?KvJ=R?xBtI`;w1;`8}E4D=Y8H*EiJ~u7Y+iN*6vPt;-=?p?c`T@l;U4A zh{fe|c}j`Ep+sDc9A+!?*c6|&H_I`kq7ak^y45JN`tINU7AScCpm{9xB`x3(sD9E% zq-m;zM9@3KhD?>GlJT{2anuZFz!c>3#T>qzTmLMq=+eX?3||`)%2+8RJ-bT|<$ub$ zz7q;aL4j*>Ly6<*w1O&3gBc1uI29mifGKmlp?SUiI~LglX0BoSTL13d>66#`6M;kw zZHv&)fpWmJMm4o$fsD@w-$)4CU~&Sq)=i(6wzSP^1Fl$HAh1m}icC}6(o z=!&7Q996w00TMLbmyZ84@ltHdN33|f{u5#iOBFgh+&$B23yA>P0je5F7^Hvx6SvO|E-VE_r5}GI5%V@@c?>h4_j@9CqpO)ZpDlUlge~b(8 z6)e_=ADbZEO(vfYMXxwm0j75O>Wk=~g=HpAlw(9~DY-))lD5Nyjn9;|D{aD)W7^(v4u`;(sa(+db)_1BG_wIveh~oW$>7WYz6q;g zcQblDHR#PBgCOlZ@K2}j0vuKs>;RK&;TUWp499XPt)v*YXtk^ogk6lEVXPJG72JcS zcWZc|pb~SM!IHI+r&+hjaAW(?quaK@KsdBMpWlIE^ohcgALDMV6+TH<+R6bjibMeU zuEK9GBSfFPF|6+r#RVby!Y(RLA$CTUw*fubmi)w{4t5AT1@6E-pMLtYIAT*27wn;3 zjwllBAuyClHrf+sha#koA9O?bup>vXbAXj~(eJ#Jx$DT04E+a~LUhg=yTm0j%~@G2 zm$#J59~O(<^j4>`ZH8HEnT7uRCcP2u|4<6GL9UuI^nKT&O+3ru+Cj z#_$254h$c6DojEj-3oeelyxb<6u8g5rSd6b=tfw84YS!WO4%@0*i;<==J~x-o;`hk z@R~O45G?AX9cr%ZgcX8%Dc(eQGPXM3h_vw?nY45Gvlcvze`HbxvjuTL0D^B513jNs zO$tY&(cYM>(oLBJ;f(0*x3%%O;jOpOTW`G{ zQo8wJzEi(>^D0GtZlZn6P6`O?PdRY=FS(+&svKPZbD~FJhd>P4+ zg6N~nLn&1n9`x9cVB$C*OV9`i!A>-jxBAg6siNZd(r<)9^cK_}fWa->2glYI6O)@5AoV{ny@G#D(&cQRW zkt(dnv;%9ZJ!*gZ?L?>g{r7+VbN2Z7`f&J_sCvaHd}r#C-Ebs?8j+wQAnQ_g$IMD4 z%Wx@#3+cR`2NG^P3B>_AQ&j5L$z{mAnP8!CTz5-MZl%&3^UZ##j_l%S>c4d^3iJGP zJiJFAO(sD>Ch7qVdP|VY<(?A5?9Unm({71VYEJkXN4owS!Vx_ZTN>M%A_&@qy7?Ep zQsC*y^ix5e4bGfaI=U&LPi|f9CHN9Dq=I=2Jc*qD7SApqlu|*gsp0ihZ(6;KF- zCO*ZZ(9?2bO|LfeJR~+&v@(5#{+Mr)rDPT{+E+k=@$Z3nD;A}PlSlFylaAFurZUxI z-9(6r$>O6xgIxyXu1!Ghx}2#aGf@t+KTOU5fLsfNWO_ze*c^kj!vt{)HWODCnFluQ z`1#B>J@oTXM)PF#;bcfb-=RXXrhbY>34jY~@y zhbhlnkV0%|{owL-P|1T4of;RPC*W{FXYkFZo_gv_6sCWCR#-bdK*L_Xj25o^sMpU8>6F9z6G}<;!ne zx->ywyI9hHStl@YoZ&MQwb; zA_x$mcla`Ew{@yD(KfxU{(2TYnXPYvYn*~6$ycCB5>I@`QnC%8zZ1HSrZF423TlFT zC&&QIR(=zQ!=l=g8%AL-jbqPANPhw`VKDtzb7xw0(7H&W=^LyZIG+Z^V zyRce!_)L3S!mZR=bTz$sB*s^=lWf^jd5HzM8m1%1j~^e$sw!kBN2=s^@|Ch&j1M}| zHc}wqAef9ohz&Z9&a7km%|5?61OqgJ+XE7-i5mj4Yff+^1`S&( zCk-0va9k*rc6+eo6DTvT(H7g)rnJfG(R2#ELO=Zh7Ibkz^!rs}Q}QOhs#`8rMA~H5 zf<~gN(RZfPYg4H%`pc|Rm(OSo>SRW}U&IwSTre-z->ooto>W+epk6kD6d?Vf(P#=) z;)h~wQYBTTo&QKaRXYS)23Bs zP4?sZ;Vk+?uHFaR?u16=w*ZR8+up*y8+HChp>hDi;^lytHBwCo%3x=(?`}O{yK(y7 zx?{}k21Crjh8T7qLgz+j5j+Qn(Wl)0hR4Q68ydr!O`RGBKE;>3#V2eXiPnZg)bkLY zplwD==-b*chtl?A`kxSyepiu@8mJ7Zdp##>lSU*q`q#1jcT7V=w_cOrpc`}ahbe-G zy6B$_7`| zsicV6JBNnpeQAPD9~SoS3SbD`dx4Q94lJ`ttn)l`a_i?-b&!CnGD8c*gWL5yo3QPw zxzJR78{mMyV9mCxlBy0(ntoQ->-4qN?67UKVcU+vZJpdS15?Gvw-tBktObbke4y`K zG3ELxw|>p(YECJ3!j_!cu;+Ba(&J1YJ5okIhq2TyTLfFq#zw`2LmM|j#Teb6O6m6QeR}WS?=lTey-CCohy?bGNp^ig(hr3XI&E53nyIi(Go7pln>;*^V7pfH%KbHqg zATs9>YuR2XIkW?p%1xT-chLt0`bhTLkRim6@S&DxE6D=VqFd5t6UBsPixe5bPLM^) z05SOM1$4Af--JF^|KdrRL7wkP?X?rUHtNO~?X*TX@yza>m6fO zOWXYac34MDUdt#gaIZN#Y6)*z*U36huFq>#ni4qLSx_^1mMO*Jiiru7<{MmsD!AH) z#wmuix5KVOp$gyxri}!LPxud5;KqDK#(m;It69o`?S*Y@?GwJ$jT?+-QMJ5n<8J$j zR#pt9@+z7nAq~E zs-1C>iJPVj@8kB%Eop(89|S9`bQ)_Gj)XFo$J%uXnUiO8&{4Z%=8)d5ADl_QcF#Q< zHW*_uV)uUh_9M);BmQ{r`m^Yx^bgS#`sBhSag?7}*C{ZN&IP(yjHMghy}|~S7ScF- zTZL8_ieNx1C~J~~qW}&*wcNl60ufiWd7khQ7xVl@N&Y~p~N1=b^ z%9~cLLZKBa;`M*R{J{da%;O;a-*TB47011mlbW9k!E&At{Tev-eQ3%t*ce!PCiiLG zjHVy^pCT8i20~SfsmnGkC{DG2CPKBcC+5a7F7Z@{$=qGo>@3j)hv3$p4gpR2Wc;h( zk|Tl3?D&^MeJ4(M5Jmq>(jio^ItiJx>)HW!^~&hG0ltdwB1MAbk%%g&0?l@q7Qpe2 zQbuDmB(unZQB;2N$xCt3xE%%PHw*E2;spD|<`_<#+CaKM>!t+HCSbaqj3bwGl?pb> z*xTkV@F5=CGj~M8m+%iQTE3| zpSUE|C`dJ3>8V3%@NO^^ALhp5pr~QHTg8#q#l->f|4G&7oEraL2*oqp+2F#^1w3BC z%8YjO06kNU+dl3O24T*|B9CX0*PF=6?UI1l{B~4qAmgN-e)GQja_Mw}!u0(PN@vt_ z3u0lrsxsZn0{XtIHznN=Qn~mMo|FFfkt3ke0AVhB=FIMA(7V08+j@FJ^aouD`i3;? z@@?C;$;QXW={-_gRVz01^TejIPNu67bF+UOsQ-oFa-E$HURdG{bYNvO?dXxc0pRhI z9ozSoZ#4kmYBu!R>p#w*@1-G#RWkF(o&h6y=0$J7Oqg$hNB82vy-XO};!xrDu~V5p z6QL~DRsjGC9yo?+Jg*hzHekWiY+?@UaLBNXe1@>qKQQ4rg_mQQ6?kkyZ_}NkyYIgH zr_4|xK`!^LuCCXygbD`-C*^zYx#vB6v^Ru8^+gZCAQv+rP@4kuXF--@)X2A%RZl0`O*KBq9$elZ7_K=X3ni zMS9n;)-3gh-;F3!ZIpp$iwck#nD#~b_(k#fBbY6UJVKGvy7j;yN6D@3S!?*I^IOaL z8glKOz8ztKhKh02=it%wMv$obDDGFs|6)*B}wPeS}mEHp( z$WeZl1urKb-a4!nTKMwv(wueZEH#9N#+_s63xPZ!6U%~s^nMzmUq-R;AMd*JuCt)E zz}T`#(3v^{7U<9fC9ctTg=HGC$Ov9wc;KbR4h5E22|LC_1B?s6g<(Wx#1 zd<2f{8RybU+(uZn{`x>qC&W#f`tN>c&FhL;wnRq704z6Bc@|fnYVwuJdvYg{T-&`erlt|RRxB&GgyCysH&}Rf()nkCD4=FKGRT=_OD7gWGYfnE559MY zp%?w67j39VS^2!iY0>~PpyTp1X8RO!O8dzlf|*Z4IOb>q*=c-f7zqwGL&E|WjwLwQ z;9Z@}crGTjvEi~C4$ml@DZ$#K7X}S}UPm8c(S ztZ$Wxot>I$TiF09L;BSHQ`P$tOCI-4HE*uZ^qcWiLC~_rFBGDk&P_n_-8TV zj{1VNtaHZq5Tipw&rO}m4tH+9C=Jx-#5rp&9y0d#uw@EfC~4*q3#;_2wJU3^^Xs2= z(wDJTC6sm@7rN?sdTZhPU8@(^d7vY%jAU{qm>t`G@>$l?(EiGUmbEqj63Ym>;8>$h6_GS`!)oafY+nELb;G6I*cL*EfLpL)M%Oii#qCg5F0s z>c0pOAQUe)OGV*~wzqSARHBr0APJ}IuMv6kTod+MIc=-puYR%Tl!zdC~O* zm%Z)QB~imo1x-L$68P(HV!M8BZ|~lYwdbV8)9)$2Yw|9e@31=-uR!BH^fNpI9+04t z^eqe9r`{ZAafKpoLMNBFg#gEq^iw>88IYrP`Ls=!m0SxSyCuisf`Dn#V3#;RZd3qK z%S@wf(9~w0_H+#e@J>5A)#Wx&zT(1Cz5yzT=?Q3$EN!j@7Hv#h6{%H!zg zv@=T->&FMs({%Oe!NIdqN~eXJEd0!bK+NPGpnpkXXWOn^xTJRhMmf z9o&EpxS)?SjTd)3U;NR_^J-%g2;&Kt=eIg=rLB}+^eX+O0Im<(AgmxaENJskT3~1FABq*boiod0g5nI(% z|AMFx5C@HFj=&Bs8m*P+~n$RbdulheS5JBnERrZjA7a zCQ(XcHG$gMx@aP_+D`<$GkUc`huA!QVGvHf6*xlQ2SQgPRL1AN(U;xbIQiHKG=kkm zq`=(A=Ar<+hrbJ}J>k55gT6;s=3))h#b__R-HqPtrH@yi?d`p`rpP)dt(NDE)3dP# z`tDlo7XS9$MahC^`iUpXdn)wKBI*PEk0|{^)(!O^fw!D`eV7!9*ui~!dr+vp9ppJ8 z`eMgaGvgbMvc5AB;J0ooCh7(!Z!Es45Wv9SvhGPLKS-Q@{kOgd(->65Q2jA9rKg9? zQ2o>;@O!)pk6q|FI#2IIcKTP_YPHK<%Qq#Y!-tE+uc|b^O8klbgaBF1Z=uE8#>V!~ zotpq*~}L+bViEx-sS&x3UpTbG0z-A6SonLF4G+01V$jmMsE*Fe?MjogL07 z^L4n+_#DH3Z7ztnCMY<#1qaHbllVA8q-VS#(?P<7GmWcQ==HThl#3~?j7 z=f_H@%+0-@Jq)eu=k=vuNC#IrT&qU1Ss7I+i+DUZs1TCDX=QVxIkc>Pj2Ib@EMG9K zjgrdPp5*k{=_v1cm(>v64$IUIgItd{2Y_J+8Vgl<7|pXZsDw|LD7CqLYI=- z%=Bs)6|5sGq{ax$e{oxzG$FAW$3MVboEs{Y9nQt;W1{{Wv&7C?{ke3w$M-F0CME@kL~b5(_!c7~6&hOcwLtFfv|oMUMVET37!) zi+I&)>F+T)jr~KnQaU}4rIrga)4Ynnyr~vM0g?-}I2fM76Z1$i-*AN@hgZe8LNVN- zH(;$A7#ltuST7?Ax}7*(y%P-Telesw%_BBfi%!GlaF`vjvFeKlEMEcQbqa!dk_MC4mjp?q<^87QaFgqdB?>?B}iYSxaObXit2&l$(Ic0NONV8Qa&c2)6 zF%H6iVM39am9+DLyhxgYwUEl5Bh({TT=qa1iZ{M1a*PD>-2Kn56H_^zLI)%cc$#C!D) zn0eR-_X>h$Ic}SIx>R~6b<@MM(DZu`Wl<=m>}cbqcosKw)^O;5o6EN4K+DkZa*K4D znHP+RjNFU9)lsiQ3MJ5rd7hB6v!_o1%yP%^`Pkg#|ZSIfdyn$X%qOMqf3|Z>GB#toV zLoIUnAOXtjbw&7n+aS)tGdppd)9S-)pW=pgfHd^HHj>`fiGYjESWo!9TJnY1B_1+ zb?z$4C|a^PA^`zQ`kz#{d-haaR5v)Am{mi*`evTMWS5oo5!D-If>*qr{?l7;5oMZ2 z#K|efHxn0Md~O%$xpc1Ix+#RliuFIbY(ssffO&8P;Q? zRHy*23hzd9XCUPGhEfYIBeZIB%yl@EJH-pKjF?`3_(r@nO1xW_7Ycs`xsOUO`ltrt zEDDiRRDfbIBs`?`AKDO3syWA_cCdDInmWW_~Kk-YfJv2A* z6n#H2T&zDsTwZ_GVBy1fco#F;=QW9K*d#ZNMCI;Li%cC$?7|zpStW9KAZ04(h=0>B z!&duGz6JvtW=`RNXT_653y?J7`It+Y{sg8d);NR_V3Xi@tF?z%O%L`SuuF!Y*$TJt zkTFP~nvMYa*qC-)3Qjc>YT+r&j00dXOA5=0>oi0Ox!&)kXX4k10d_1ocxxD%uw-#* zR}!)wVZ_{H?TsLvL1dOGyR}Hj(|1aRN-l8Oll{6bpR|5;Rq5jO@EtpP=dyvEBXP>u z?MMO0!qRi|rYyEKtB4ot85Ha5V|5mQrF291X^_TwnSR5fOUCiI(KNb;Z4E5-c20A) zg+Lk`*kU4w2sk8cN)K&w9vG@_>JWplxc0lnC4{@NV^RsLsUgvoa@UB=g`A4 zeGU({jcD2`T9v+^-t8L9DnO)0+c&3EB<(q`4O);4YYJt@^wFvCe^YSW3m0}2=^ZRN z{SJ7fb|AtXZ^CL=T&dCG*HBMsR< z{C)64klVIctK>v(%Xp`6#C*GOe*PR#=R?NP#UYHYE}A}Op0hT>*K;Fl=UJaXKcijk zm~fBQ&^I7-9lain&`0f+%C{>*y&%q4B596cs;Z@;0My_)8Yh>>1MwCDjlYT6kee%& zOPotKM8yN(*vRy`z&;JBBFkWGvK8bhW_S38a|*sqr0JX2^=S9?;m?En{~Wq91kd`7 z(A2FEtD|&PMb&2d1wyFoKqkT{*aE|6r1X0nFmKihp%prBNo&EjwL|Uud#pi*?SQ9y zx|kv>oG6&gIdDkTQb{ZG0t8>zr%>nK30*c)xA+rTQYVzC;^w= zm(RDIJo(~_7Zl_+ZiTeg|9~gtZm89EB<`3d8MrA&{O-2p%ayT>$+2=s2J0qr#rl@} zq~1oOX>Hg|$aE>w!7rGRq_@e~_? z{wEkdUd!FN!7ayOE_e^z);R!~Kv*onu*-w9GYej6JdPqZCnUmyv#V=^`;&27kI$gR`!JIjcj5qbOM{(s#x$+IdbFC6TalH{Du! zn|?d`JW>jcK*Z9Nx9)oHz4~92X=}uk)S;})no&C?9bThDmsEMxxwGi|bp|f<5L=-{ zOma7NC_@1SG%t38jl?M|4vH`xM-Ps-)#riLiSYDKTxo2cH0&cz?<1YK|JZCcPB4?+ z1KJ4b3?wQb?<&KTIL5@bw(R`z@#Dvl`cHrQg;3~}R+eNzyCya_CpxGsjm2PIS7KgS zP2Ys2iBbrrpuJbCElI)K74QFn{xA9$G`*}?+-jeuGv-3Vr@s1$EZfON4DMMZuiX z07s<_SV@mHt1URz!ph}%1V9hm(`C@FbP3Qv@0jw)l+Ckc4qN#c+L2-qKV!m zZ13=SY{lHhj7iaP$PiPTfseUYGZ5gSKuds2GcYI zVO(rnTd7>=T(mYK@4Y@t>*|l4=`|D`b-}BAK26vmSJ5jy~*% zUd;}l8u}(6>l2NSqs=}G98Xdm#!nQ1c z+Y>V3?a?a-P;F0~7_DKG3fh%^O`)x5Af8GjRMgy!DS=P`##dqk$Oe?TyI0MK(pyof zc=kfOz(^UVt*AvKQJUpYg#vO9wEV99jusCT6k9R-mqb95gpp1TRWc={pu<$aBW(d) zds|Ke{8=8`Eu&xzJd49&U(9Xe6A}?+_JvLM_`Ej6fp2#zw2)*_kmkYYR9BA<#(zjX ze)K3yNQNmf2M2H`pJcRZCL{NTA~iN>2}VO@4#SAy8|NmqYn5Kd-?rB6ZE;`mA%%MBJC8VbINk ziJLOO4*&85V3dE68Ou7AzLL@U=G)Ye79yM6HOH#9&A&fGpIazuK%Nc2IS^4WkBe-7$kbd`ljkC<@xcASKP$IgD~4 z*AkhUB%#qEITE(;?#+o}D`v12a%yBrcl}?en||$rLIFDyZ+*Q@k+bG4IUNx!Y)EW^ z2{c7feKm1?{VS5vi_#KoLzY43p69I`Yu?^_{mq8$>puAO#$`J2Jv=`Iol0B-%Snqwe7H2*gs$w!i3oH z9xNuwAjI(Z=^*iBr)SGr{zuPkh3n1t%>Re^e@=qYr^KGHO^ykx+@gQRaV2OrQwhrT z_R^PPCib2eUU(n@U3!2xYouakz=9DvF$HXj$9g5lv1FqhE#Du}p{eKwdd)>|yzxX5 zp3N5lKHYdW6vuhkva;SNu=UXZsTH_=N*L(EQ?OGk8G1U!l>xm}0v&>Xuk(L|Cz&8n z5Mql&LX$?>??C`@3`xXN4wuiOSM+c_vj#a@L8;$=Y@*Zm|f|+$16gO2j>ZfSgKaz+1pSOhErB8*p-}J5kOpu49Fd_SNKfQ*h=!qJ(u9Fv*f%GwkuYu=pGAydvon(Y=UD|B|W^AM;01iDilJ#W23 z;t*LDteKws0et0NW$fJbFf&eQnZL@>y=sn;2SaU_gZS>7C#Ssl!4 z(a#@wgnZHf4Y=OOf!7>OO+<*gpdxGDBbqn19g*8Ub<0{K6 zQ1ii!zL%Z~5Kjh^t+a(8s7Mz~l8n)IBgjkNFIVZfU2aDI-^$5HT=tUs))V#-X>DH25en{ntX_n)3Tq`jFX4x~&`;p!zI7+oYpp9D|u7LTo4L zgfDYVZ5%(xs;8u+v5ge+Gbd6PeL?K<3vD)Om!#c(%rCImB;7!Yr+J2+X)bSUdly<5 zrhi4)V}EhG-Ivh6(7@(n*%fHhMyu$x#DWJN_|?naejO=gsd9@Fb3v(uYn-2O`iAtR zgsmzsij1n@OS;(+aCtUH{AcoFX~3{~AyG&J6%n@@ErL{G9n%$mNdqpy>yKCeR5WR_ zLXW?Su{@@a5C`md#W7fd-@~PY3j$IVun}TbYh$rbI~A^Kp!^Xi7(<6BMg;H!EhI|y zXU;*r^i%T*ZvCHWVoUw1OOsL)l?8#k01VFVfGo>1Qqug5fly$m8@j=79kMyqq2PiN z$os@(4tl)kIIjjkJykp_z_$Jvv5DR}LCqs=U7J_6*=;K~*B?P5`mbxM)eGZ?r^!zZw zu#SNq{gQ5fsZh8uPC4vs7%FA6AX$R6+wjL${ckvOwT$g1fy0NoNTpiIc2h9&@j$V7 z8@hzvVMjlueLz(Jw%w6JVNINCw~;1+#q^IjX|qCqy+!{Dh;GSPZVm`qAp={XQm}yp zt>^A36t2L4ZyUOj-b#iqJ=ljVG6;+}?{jK{3?5IS)VS=V~||TTGv(O;JN2@g!)QH3|cb0!U+KcLNn_Ozmz= zg2KI;jh#GWLWS=k-dXINTDPnf@_qe14m|8wc!I^~{=rYh;HR*=Yo%a~@;wGM8#WaO zsrWIGXgeU$miEGpa1n#`$ANTT|A&vk*?5J*t5Ipd7&nIYCAbolLZXW!G8@eBwwxa} zCSbU6Ox#hp|Hu1g}7cA^LGy7THW z;Os*7)Csy(-vxkE1mh9hr-d2)pl*%lQ*L1H7Tg(pqgXDc`q-*)GfT-_5~eSJxn_8? z7{dwHk=X)xk7sh9GB}8cwf5$e5dO>s>Edi(H{{#EUU`XF5=2ak*!^N-u(F;M{jQPYDumhG|}`L9k8!hd<7_s zS*&oG0>Gnxal#zpxZK7B7Oeq}7-C(_G(2C!@aK;(E$^@wE_mSZp_Sm`DE&-Z2~T5e zUSks>qBvFDq9rDR?+iw*ArQn2?XS}f8e%cv`C1?tQ)vO;hz~?dF|wC6fBa4{7N&b_ z-aJDjvL+n@8xXzzFvqR8^XP?53M!E=@#xTKdsQv=*z-f6GtluVf@_$J4FMP zN07_IyDg73_{_~Xqy=rFd!BxJR#fA)b5mTa=d2GtxczqYN>M14g*!lq+z5f+x8J{| zM8Cu{o5(J63aK=Cj4;AeYuAXc7l}F)XD{RcpKENLbUt*VlR{%wZBo;p zJ9S~N&@J?I6SH&lxXiz1nM3VdzK-amdx|L1UB63bfvOK^`hlx%#~n{W)Q+|C&W;>K{9ZCBt-b5b=hFltb}P9tKa(d-#3g_+0cIS2lax9rUmPX|IXhmNp4*m;H#CSd+~}BrP6be z3wNFexuKjB*s$d+;1+N^+EiS{RZuVxTS0$2vn7ivqVk0vtc2~}T79l##^`Vj8kUt@ zeYVn5Yx}idn=P2SO~oRV-hB|@V75%SpQ0~Gj?{I74~ob%niU9etc_I>nU#V32u zS=1Mi@pW2C;>(Pz_v6uq5qZNw6dz3u0<41>P9yngt>=Zr)|! zgUOeSvz->*pn0nBL1INX@C|$gaIT3(!X{cW2;glrmZ@crGOSJG*P!c$dG_3j8&?Bp zOD@?rFK)6C%KB%hKVYxOyQSq@sbIiDK{oDCVvdf239uZHg;RW|y?C4;_e-R;`trrOCfX1&% zDLnM*yxPqx@to56QvBCIl~BJ>7u)i_kLjvIzz~9=x2s-FLQ83eqx*m;*S{|&%=O=vqA_Ao{Rj{1q(U<} zDAEZ~u=)wTzXHVg4%f2PUC=8WTsnt-0^5ExE<3iH zXs17V$LseZi_(&fDBvKI+LA+|49c|fZu*rVDhKKJkUd&|IdGHT@4trrWdhOV7Hc;VJ|n}TIOji3eNDPV{l}N7?vp`-Y#0QUBa5kp91AI zVCX44Mro?2&pZ^^uq`Q9%YmVL4S4^}H!qAD9_`l@hdN21+;{e;>VNaOW{>u0gWBr! znQocg3T1Vkv8`SD-74RjUpEcUK^>!}WPSX(LjRDpMHQxr>hRY!h0cMwfXImZPYnfNd^^q2@r~8i#Z|=8!&q$ zFaVgwqU2nim}j8GMgf=N)JvU?k)eXROO+p(>X6zj8mhw8TiPTKRru!Y$|2xnau=-Y z7Smsbc3e?I%U>Qq3p-S?C`7371Uh*={g*#KUxD~D_r$LeyHKsxpH=B_?NlTZC0$$z z+dd$*0-=@%!)!c`KL*X!-m)=ast)v6m{n$%4&4B&eE*{4u4@kL%ffb$y?5V#TM1Xn z*m;0yVP$QQWIoFP0V?pz4(Ox7MqmNdnHW}*qFcLTNV$?bXJt_Q5C7S_N{hbV zOKdA4Rq>X4AGrORIFwzw_uPEvk%RO-s~)@D4(US2ffu$I3I&$@(i2yDp+|<}+VSX? zD+8uVwP=W&$~`qWpa%~YVCin$8-=CodGN_chqw?;^xktHUO5hzl_!~%!)d_7Amk}z z3}_k%9Wx;%-wJu&#Ow~>!2n(llh0c!Rt3x)TnumxErmmB1$4tNyHY7B5lR(M==pZG(v?`Lelp^7ypK>30Z!$i*J>>N-@uM zNue)00-s5`M>4+p60d9Kw2CI6u8hoZ!uo2+3Rh>gO71W6OsQr49J!J=wkjm1>ClB& z;!_G@R>C>=ABe$lY1rvt?S3Pw6!+^DCpk|Jl`i2Iq%z0&%8LM#rqSUUd4_uLJtor@m zDuGdGo>wkFj}HT>2Fs`7PEa$DYN8B@sc~AFgaA7xKyq8;K?sn}bUwenqUbPg?{uKY zYxF^;i}2b$k!M;BJO{7XXXn-b(2fio4Pebcm1`I8WiVz9F>X-eUcQK-Xl}1`VuS= zx1%Z$@IOrIf^HBtas}$Y^f;ysm(+fBad5=J9HttqlTGqa2?~8HhH&Y7!CF|Se|GOY z(7Wo5A(pO6zg$BgIv42+_#>=t8=k2^Gj%JVl+h&JmTZsqqOpwtK5S#VJGN_X4 zi&gsjK~t$(FeHrSo~o&Jcn<9Wmol2%bM3)v3i$B!Kk)FK*w{6f4|l#k0_8i5dJ3CI zrwCl&`At*D1cZLT`jwDnFg8zPZdF77vmr4{D6(MjmyOiqF^c@aDKYQ{;tj6R}`=&Ew)i9I+9+5J#YSQY3H z$Aul8`)hrELE*VOW)qv)(4#5 zpfXkIZ4()F3O2wW2BYXuUfi{6F3&8Sxild9Yx((Q3!m;GF0IytFVMdogLNUNAqjfd zt_t~KB3m$Aew}{l-Szr>QlQ}^dz_+axBVKK>WQl5d`Y{YGhtP7`4Ci5Z5D`RZTT@ zE1pU)W%`+H*Vlb3b|pBsVY(9jhYNpN$_Ss>3*PqOKA6a)%=Hemi_HcVr^3}3&Eh)? z;8o`XF2tL&A|$E@&fQyH@_ZkfO$6(2XwYxyg-eg_y}e+bxhBIkN|Gz5mBM>QMFwta#Y|`YRgYr?CIk4@ z`GFA}(llMJ^v3b<_`CPP zCtwqR&DD2TD==hEB^MU-7_^(WYJ502?1X;A-i9S$a4U?uwV<0bozl}hEKXR?#-)_k z2!8$Vw+#bkW3GwK(6eM=UM=>3M_`HOw0q$4j@1-9bG8F)38ZHr6kU&r^~ zF@gpUUy~$Ws6JamZ;!7=gPq!RTGOq~k7Za}#;+oF_F6XF z{o!?NDgUZ>Z(dF-5=&lu@>|*5zSH5s@MfR zVU84}e#wOY((5XePFUH$W3{()>0FD)GPV?5AeAK3J2QDWYvwf)aoRrYs91aTh?_fG zxp4RFZlSbY%=HeQyT>p0`h3c6Ln>o%ELagx`WMf%5U<3y$IVCd28v{f&A45Ur0zEO zre>64D_(Ki5l~ zTi67Ld> zW*1@xvo+)726+PW9sYwW%x2OKj5(n1p?7Gn5bM!*6ZZPA-X9n^7r6CI%Zsz2p(j1HGIL4aMRHFByl1v!=UD1^b;)sXosn(0F5f~%^K zQlYD=RTfdbt9*9}Iv}_v8(1e1=++@Q@vHHlp`{^HxmGl!U_o$(3J^*&S-Njwa@W=S zVL@a#qGOH$#JfdE?*A};6#SwC?%>6&hLo!W!a5^_7-8^@!wpgf9wFC|9%`0Q;Cf-3 z=J-#R0)5h)t#`nNp6aE4R(oPl)-EeUN8i=>8}w`(;`YEAR7YpI8%_?dfrJTh0sR2G z&Y&NE@4EP!o|QiyOjgmCC1f1`8}V{I$vP+sF0_lGgi!xOc?1I50SIVKeFFmxYy*c8 z5bon_2?w;?Mz+KRv=qAtY(Y2;4mb^X@Ds(9lAO%E8;lTd#FI=5Ot=q&G$(>u3{;-h z?4sy4vo-2QXiK>K?3Q`@-|bE_lqJ6Kn~Tz*G*>CdpS~EE*)DpNK7xDe%@wY?qYbB0 z9;e`UWwy-F?lTCLB;P9J*+XVW+-p`o?l;7P;-DxHr_&wwfu4-gtIX8;?Gm$51zMyU zlUZ^kFA1%j1&|~)eX(EsdF9z<3!d&_DcUqyjZ>TdO8Ra3!vz?aoQ^~&S1!|EMJ|AP z4i^N0b2r^oKu?|h$xrWHPO)b9^EK4Sm`*G@>#-01MZf4&2181Zva5S$08qOUL=BZb zz>{`ge?5RAHyzp+MGv3fbN55{_TkX2ddrcUiXAYL5>}iID;|RtKgML|lg_k3vCIC) zu9TrU;vzV?c;lit9s1q?*07@Y#Hys&%i;7B1>O<>PRL%@N=5J!ZkW%=rarq z*=}Ny<6jkU;SOEj*Vl`AKlDcsg+2%mS8=^!*_HDmBB?{f?VNVeZDFa)>r*Gq>A1FI z?dGted&81;;y~%9GCJ?ysnQYLU`x~Rnye5Az1k$PH_9|En}QQZ_yrjNobgxKOX1I2 zH|l>iDA=Ph2BjGu5Zn9vKP3Y7H$RD67OabbJK@FF&A$*&0#%`7Jv5N`Hg>pXPOoS> zHRWleF6JndNPH9+pk_%wi~{4$UC|{T_iwwbwD9R(Vrd|-V$9fWoU@EotbZRpR<)@M z=dWnvt5uY7?pgI86@i4Y2gqG7p^Z@hW2&aSxfg>m%x0Gl;mv;Jg2W~J_Fa~Of*M&l zeEZEMH-^AUpb8S`a4j6OceO8A(!6RvY(|SpFuS-NBMra|CO$BR_jLLze#u}}{GRzs5Y{I9*-NKRvo@mSJR32%_KM!V%+10zAw1 z%6F;?C$E>=UVq1JAA)4ZtIYNeo_dLHE=YpQW`NE*cVwYY^hx=t#c1rYD*9gK_w^a* z4~pSK7khb75p`_4vRv7-*#W4(=b{_>(a38+1_;POfLm=Gruji*rCP#Z1UAlJyD1Oe z+ke_kDZvOFSg>}uDK~?sI#sLL1tgy`gr2ZqjlwoYT5G{GZ4PS{fS>{t0h{>ZL zK%bZBg9RIQQCHp$Zx_X42b0PANkC@?i-0fZ2Zu2_qozt2N|hXj5N6F72C-%>3yS_; zdvV3$XL^ax#(zNkt4^I&BpjLJ8A4V!5+Bu#$QJ+&5C$&oolJ4DHNFqvQb=)e@wEXo zH$PXW_dsy3jBDwD{yAH0M|u{TlbEUrNO4C;aF!x`@u94~Ed~ zRr=%dhMK^cTLQ?Rj4F*KY>>m^yJ3u)dI$TPKxLzRao?i82cCR%m;!13{(J8GRvCtC zaPlNbK5>e~wWUAP%Ry|GF3>l@P}KiojZ*W!|L7sWw-jXf>U$oAg|GwO@@>|nSOu=e z;Ukb^*vJ#61t<1QiqUjf;HLhQ8`A(*aE8G|!JB(~@5N0Na&#WOs}IL+XiikyDNOQx z^fd&xLSIxoUXi!)dMI1{osRaAfr7eImG6f`Vq!cF#JQ5|a-!hk=>VM!&-aNwEIqk! z?y(B`g60#t>bELCslKnZjTnrkX++N}mtBTja#K~O*7ee?khunRi6m5i`Wk+ORR%v2 zK@VNfbI-%~^+Qux_3#}x6@9RJMSM8~;JA;m9%_bh+EYN@8DLMEXdSLgo*u--K&Ak` z_&?l`QSF3!ll}&M@U1z)BUO<*P zCu{G$r!}o*Ez6RvEnD7pJYvU5oE;Jp2oM4UNFfkNSY?wi62b^85W+08h0?`n3mwq* zc0f0U(n81We~Ui;b3REPTvl&d#m1Hs_|E&D@to&8$2&RJqX}!vOTh19waz4S(xU~w zIkRC1ug!`R0n_}S$T^qxtpCOUY;4*>Uk|S_W;;Fexe_S9Q@V z$?0uY#Oade-l6`FLE!0&uV6r6<|f@*1A$9`7Zs+bubP_bpzmg!?qfj1ZIGr>N(zyW zP9WgcMQrgQF{S$4BsBOH)VOIJrBA+jA3Hiilytz?C9neWTV{&%(wBD+lP#4u%WF!Y zNzlV{S6}zJMu+n1peBn)rkpCN|uf*a! za_Xtt>SL6s`gc}IZRyn;jRUkWYK7BcPMa$qJ1zCBLtx@{-?A|2z%ug@5c5D(R|ram zF6I$bV76>EY){@^k3RLW<;CO3F(}hra6vE>HOinbl-mIi%3+qS*F!hij?x!?@)O!c z_S0Lx)h$&jV3m%TYmf7VT>8D%GqUQ$NnvhO8w){0F&Lwdcv}YgGitx8t8bu1Vlt?} zaj1=E@huRK)=l7nS~3gqsQCEmnTNVrk&LC!noxyiRtCmR>XIb;$!hc|aZrHOCG4LPnQ06f@HvAU zXJC#+9fkUwUV>ZqLvyp0a5916#2~@|q_E&=vhemI5f0zWm}DV75C!$5M6$JY`G`KG z8(HQPY1L9zwpp&xiO%j6d6)L_EW*kXxA5DY2PcLPWT^vPG9xF)Hk?P6(??o5L@F7d zWC&lZe7VF|>kZ;|p-!Wu|AN`o4}SPVW$>JWD1BOVAS04XV{VuWGct?OY+mo0<&L(N z*>$b4eK%ZRV3lsX5t5>#gZ&RY`ISi!Wg0nl?2c|2y=>0IZfl~Ixu>m4`^-hfvM9al zoUO3UciXOAqr&1f*IpbKCH7u_HQiRCj+Q@?hV)q-tX3ZV@M}gZpT`z~qzMNbS~f=izip0Ui?r_|`KhSZ<78Suhyn_8~Y$nHExB zY7hKl7J}~qiwM(E47A9?f)DUTB!!~mpqOz4*kJ&?i#y7elX_6UFt<8KPNJ_R0~Nv% z%OxU{THa-cpu36O z|H>-eydu{*tn*nMLkV53Xl&-Oi7Jy(r^nrTpH$-VsuH0I8Iamr%H`EW0i4X2aoZyO z9Y~w{A#K9U*eNj^lz&3*7)8VZh(fsjW=C}g+}jP$L?Xg5u^h*6oZ%pPhl8X zmsUsfR+hyPeq^CAp@Si>RSIKdDG)gI}f4;K9QU;dfIYv>s z;+Edq%@?zEz(j`YFLX&+au~p{*|;{R`0Zkmw3JG#Q1c1YBk}ha1Fo^*qNYt#7#fAd z3R^A=fC$ezx@9@y+*2FEl7B>YUedkp>-|))`=nmi=$=g@Cb2`HD=phzq`#>U$P)>^ zjFs;(%6%=Y$Oj*MaIgp(7Tep*-4(1sy89OcL`Y$H^q~=^nZ6h%6f;K~OIsoM^qLB= zt6sNZ^gI!^RMe;p42<1~km#nd#g5M#>+>3A{WJW_;&cL>5ECZA3=0wSXo6awFfU!( z2E_2Twc}rb9p+JKN)qV+5-tdcwva#2`c7)1dOzV;DpwX9D}!vciXWV!PxHEl2lMKH zI@b^65Q|9zX}`{Fl^m{R9v0EW+K~ADp6AxDdZw3JAM&qWYKj<^uIlR*tCU>;1}2|^ z-os89A-xd>1)hdw_b)YlujvO(uYYQ(wD<{wBdPTp8XpvPQS&I2+_Lt=Xohpqloa40Z1HDX7~Z?BY7iZ(?@vB$;~Wd)AfV3J&&6^B=k z^PrSi9uU7(cxdIa2g>9xF^OK$+|Gifi*{Iqr{kpAIxDRKf!k)G3POuhls8nIN+q!$ zWwAhA7#SYWA#|vP{zSVvYag2qqAZ@{mxK(?#h3NWI*sK@ zy~xL80Q$O6#@u=Iu3mwGQ@;5y`mI_SLti0rFCDkZ>=RRMO7F6z4y9x1%ucRO&tvIS zqS8#r)N^@^h~(Tj&~_XG4(#TlU*UrCA_VYb z$Yn`0nXaqfe*2GqWX8#l0l}^Tmn)h6R~$CgVBdcuOc$L6JNg*kil7#A*Xxn3Mvk4A zS!G1?nNx_=5yZkiCD)igsZ6fXNEzqQGjbi}tG>}nO;(Q*b*1u3Lf0-yN)qJqtTv{F z)$0~|Q()Ocx1mMZA9(m==<7YQ3_}lN?nx}6uz?^JF8E@Co=~mbHXh{>)l!nIK zVxvw0oI;h}BnG$#umGrF$5)5Me<~r`^GJo-5p10uH-rsiD>h^ulPmmy74QPnOQ6B$HdN3nR~g%{HA?%wUlX0P@;#vE?@#13-gw1;R@ z0JY)I$I%_}fWj;9SNKS=8}z(PDv4dI>h*%Woo_%YQE;UiVYNBf0`xvrM3w6wf?7zg zYA$m$2D9X50Jt~JAaXtlRE@ufw(l;?K3QRP)62ir)z$U5l759;8_>GNt&#wJFWp67 zT1;>5c&crK%d>G(!<(E^2tiW;G_qSH%@nIyG&p=2FeEDsLvo-pmk(lB>7G^42Y(RA z2(tNB8Vgoau;JMwLGqi-vzJ4RbV5TZ&d5a8I>aY4%hnkkC)96($B8E#GU>)esb$mf zMd&jyXC&ePa@sgEXov35BEcuSd+N<`d zDx{>y&t}C2{@QaaN82n#qsvg7jW`BvZtEbuft*TTxds8$zg1-Ir>*5$BrCT>#NnWC z*_bh+8=a}1>IK$nQ4`PqmnZGbJjFt#r3yZ?zt#&|M0d+@&dZYwo|r!4_p z7|JFGT#&EMT@V%1`9nQVMC!|MMHV3Sj4NYo0gdFkm6#a;xH?}fC9FSw>a4!L-%+e; z)lOBaPm-5=R8e(WVm8vdGTM+RCkkm`Aiu4zZv%jUZ$kozzkjQ>Ww0-+463?%p_fzZ zAS37Inu4TlEtLIA{*o0z(Qk^6tRl;fm4R_{K6O(!{ZWOuRpAXSN>~=dRr}XF4XzW& z?Z5fWZw{28ud}%g@ik-Gf*JLq=T)!oLC0oMeGktIYntcgx`HO?&Ue)L)wm;YSJU45 z&IPQ-=YiH5$_xZKNu3T+*GjG*`MJ~oDV5A(-`~hm8cj8F7S&sQ;=ynKb|v|Ji9VP= ztyh&EiXpV$)*Ighuw-%jGSGJ!-<&pXmI{N4s77EGij7)MB_kUh;2MRYth;)@$2Brk zQ2W)n!QtA;Eik>Z8*<{vnhAgiMpp(zzhfTn1Krf_fO~2P;Do`+=~jJvL>iE`CH`EX zM!F{H`+%zQTPh`N-+oGjCzmz*PuN7a4xYDRNH2B@H2JBM$Uk9g>oO}(-mHox)Q7pf zSF{Ta9P7{o{r@7hs?*esUS{t60^WHJBno#A0Bxz!He=uxdP%@sF2QI~H|(VVs6PTC zP_YEe|F!_)@(fdWa)FnE1{#8cyaq&!Hv=%NFit|CM|4iIY93PZU}ummHdJw(!4>Lfbf-Po}vGJ&pq!IVe75IY6P`@D2W^r zmb}HvwmPkBhe!T+ULco6U|TlV;O0WYGnu}ROwR8)SF~(q=MSj5UT47+_%yiVb<(xEEBS@XKX&1}_KQAW*`WUJ3L{aGb3(5kuoPBE4 zwQR=i_smSC#euv}XyOG*VF_LBhE+ z#N%to%tJlof3g*O@WhkX4Jj2!SAr6YqBuhN*vUJNXr1K_SSF-mD?+LBt(IJeQfw1Q z!W})f@N&4*HleCKN%f~!q`uGM1vhOD@k3kJ+v)v5eJlV2`fc&y?Dplbf>mPQyt|k3 z@cipmIGn3DR6nZ4DyHgQeAjEoKmfgsdW)R7>vcHk`TDJH?AFC48&Sx+M*y{EmfbLo zzXcr%?V>sxv$)UB5WwAu7ShkOEo>9~X_;GWuq4L*Q}DX`yLq`nWh% zHJ5o|_^)TipM5njyTfPOPn}iW7XYc71E>D(cQUVYut($7bPrug=<-Z*S#qjKVj`hS zIe0<_bQcq=d!+Z2fI=shi-cN*H~`xd%4nYi>_ck#es#sLz zSI6Uz(f{=}^NZR_Nk+~X)e0;;W%q`{IxTn0o^FYl*&`131Z35?{Oma!W*woer=J#w zs~A3E(;9EI^ETg<%`rs>FmL>l#IeQvl zl}sy~@)~M)BGfE%s2wsr7&wTDNm&YbfI!6spT;EA0F@%-lz{&&V&||w8O@##N@yjj zi9ARz(cpeX;w}~+FDOf8#H6#G@=!|d;C6Ct|I;mRktHM+nCSw6e(2w94wkqouN`K? zc|Ny*KHzKV2i9Lel?Ea?(+w@aN)RiQCt!i4P)m-11>Pw^TY2We9&$%vckxd!JpRVM z&a<|Kke1|IeL@>i$c+W9T37a~9A%x#&_~Q46t@-Vz3B`0eksnCN?66iM|v*`hLu+;!~ULGUJ(gLm9ig0=BAZ-RFQ7Xa6KUyXrSKU1F|{dpF;21s>+=i68g z+DLgD)gXQZWRHdFaE)PWNR07@!9o9wN**(X`K|$VYH#n|eJZ~^EqBvj%_@DOg3vpO zTE1TLJvy4FV4Y4RmfExD%s{($`<{zQPoL?MmoH#Rq}*N4pG&WyMye0R%$W{lMVUkOU1-~dL$ zT+Rkur*nIcJa7-gb?QEN+l`1y*Uz^ElIX`_C0#c(V%5NSaRO_271MFt)wBmIP-3G1Hgiv@Q| zn>8=PXv~X^Z^)QW?*madZr_PVvbKxXV3D`>OWy<$tJBCi;J0`RwM1l4N+TxNylrR| z2*n(MLe8bHD@u)AyU)p!$w2%IDs6?^&h>;nTyH==p5m%a%B0+^J`__0JmRF#)B0RO z9dL^}gl<3mgu7*Uu&nb~S8btNeK4%ir3@%Ld*F`Ed$}8Ok}#9E1LI&WZ)X*xurM7} zllUM4rinfn)550HbK{74{WMwD!|4~l;CMt5>LduY$bl=Z~(VeF+ay2R_u<;Tg<$qD0){y?RN=M zd}k}YtR0YDS-aGzrjPq=-NgEk7`8lQEUUI;}CZEEzP} zEyELjrE_Y+ZnKPxkAzIQVpiYYGQHeAe~lMq<+t2=<9t?*D)JA5ihKYK1Q7a z+paT^o6o_YI9kl)xz;n1Iq9x z)`Z0GL8D{#>0Xu@lI^0EK48LLgSfV752TV_Pi{)mRaO&y%D=X4Yya6{hT>`JFf*m< z0#-58G=c^xPUjrC`_>{bn>ftas~GUGM}X9iXIc$x3zWaa6OF43PK42H+-lA|vPDb_ z4Kok{|K;cm7bpYZKf>e0UMR;x0UZP5KK4mN^Rj#(o`?d9h-@~z+ozswCNEoqQUO=> z$km$eShJkxD+z`C>(YlOIU@(NghbsCjwul*xOyp3WLmFS#?uRzUUX3pB{YUxWKx#U zB4Vpt)==K7;ZH<0k$^NV@ki*99&)U=`i;L24px8YwfC3P%2xfv>Y!M!l|$=asWXW8 zWJJN4VXj3qFzFM$mb-5`nYgn=E-So5^UcuWhjoWolK@5IQn62))%a!Pp9#59%@taO zJdKfl)jqyA2*R@73&@q1{pPkQlCB68>|C$8u=C#UC#=e#U*-Zz2GMWd{_tzh(}#jU z!GkF?_v{)kbI@6(12+Pv>gcZCI}lpdL#A-}#!@TAhfDz=GC42{9)&hG+D!#KGd$#3 zpn(rFs}i;Yig{_%4NZ4}4Es}HKX}%Q><8qFntT)!v>L&N`$=z`BX~5dT~Fn>^?z>c zV1?WQjK4_#pnh*Y$92sYvfKarzrUXsDdcI;@#Wgucv5@bu{i;V5jU~ssdiA6m8Imd z&h%SveX}4^C^}n#oo|f+smtv*XJG4MChc4mm$y!Ph}CB)$o=ws%DFl&4@|rNN^yB? ziCHF2WDQ;6EeUKYdC8JyDSN}-N$3ro+Un@*Nh^YQ0v5P8Ov$0SU=|_I@K1%~E0^65 zLXGO;fL&q{*!zoGvM-mT&(s6zz!C%MAY~;K*;Cx0GtIHDxkYa*<#kp=sr(%CCNoH? zi(tcp1O?SI8izLjf;?f08R8luvFN%qExPQJ@~APUkE+Q7*fye+5`Mhma-=r72}dAe z$258v5d(ErHs@fdmb`mbuk$VPiYsxteN<@R4&HU|tz{t|7HFsuy}diD;akMU?g0k_ zTs**f6>>~2oT6Hv7-yu?P_3fo(J8QTZ6C;*HEpO{xX~v@SBRAwoTS>FM+Zn@-8K(K zEZCn0;cKqRsDj7^r{VMIM9fGPOb#;VQjsL_?BgqWOOKYHk1HJ}UXp9FzfNFjlmIns z&IIZGmb^5O19qQ;B5O9qaL0Rex>SQvO{dJ0f zCaso!HQ-$~0*V2X+f%S`ac8NK``J^{wvZQ?{6WX4V_qcRlbZ zpdAU#rK5v=z)hME0ypV_W4Cv6fr5*i)a5MU&#zKTX0CalpRqirXiemHgoY7i~1Y-|gNp&NT@KPd0ik zI=&7D88$w0S%BW+XH+--7s>fB=tZ0~i`Byn=tcai?W}#>Wc}CsSmx|cQ>l&V^vkea z9)uxZgiYnf9IZ~JSnBQ*`a%-1QzY_$Y9HYndT-^J+;)gHyK#>WI0-gApg0%itPleEoL( z-;i2ZaYw(HC(qF3CsP7*HV)`{BxU5iML~1zqS9|7+NfU?75gGz0p!(QF0aRxm%#r5 z2~7IiK(`pksRF7ju&f#9SLEuT8b%_01CJ2>sr%`*D<7|r13CJuMXIegu>OQ~L4ls@ zUA|)4bELYI+E~4wT%`3Z8@HIOlgp_Xi1P127R%B$Yo)&%7+aOWIj%4>hJai}#Li9J zMk|BE5b0%5g&hZ!yrF2Mt4ks*tHY`nKt6I)(|t`3*PdsCx1z;tnej)6e?uSwaGW7$ z)oF9>?IDVJ4}+`De})Z@TAmHaD*PBYwE2V1%q#-3+URI}%E4a@P>?gI&gwU>hx7ew zCyCRq9O!IW4}dDv#qrI{6Ny;XOblA3*CKH$37@ZZOXLQjRL(LaWo?$}^%8h}+fib#6g)Vk%g&7(>M5?fpdy^1CIrK?xUEtYIt2GkmnzkR~)8!u~MMnjPq zq=uS#t?SkX`2G#ER{CJj*`xEzLXqyS(`Jl(o7leT{BBCc^Q~NJcPw93eP897nY8I_ zQ!8RYOK)Gdv3(&!xOPUExg>z1fKQH46pLRQOTtY&j{-`9q9L_$3zQQ=u04{aD=>lp zqG5!WCmf3e*T%3P(e)u3(txCD%m;v^J`a6j@YgA7Q}sX>`G_Vz>Fs6p_Wqqp zmgu3v<*@tcFs?WBr?df4R^TT$mw|!Tp$vRj^*RPXw!p9K>h5-uf;wBvALhSDD0f7ON#RHHm3cx)xU+Z8yLS4N{NTcyE~7#H^rzYl2PJ`FNpiKz{Jm#9Up_ z`05vW+K53NCs)#)l#ur8$s4qp{HO@M9U!9$0CH_J5I$G$ffXq{fuNcGOWL$_Lju@l zv9;re%Un>VE%W6v`Okk&bqRe&zEx;&bhc_^62CP1!*}1!h+6^v7a3gzpEfRSmBy+z zpJSl6Q^i~uhs0t~vkM#zT$rnJlF+IpkP-~d_(i`eK0FJ|CfKulKA|UyZ%pR%TJF@z zogy)=*paz_W(8tB(e-0eRc^;>s~DCgOrH4rmf=2=xo?>4OrIypp4G|)mD;T**yVny zOBULiK2MxI%g0f{*EZPXtx~5nNM8tT2mlUYRIjhzGH+14=Ua}8>fRc7^#TN-Pg+ie zw8|Pli^c#+SuDQl4MN6*$$6*OU;{#yhZt^cRH?q6>T|8eME=9?z4!3LAO7i2uZu)3 zX=%2TqZP!bGUCgXxv4n7%8BVb01DJh^{yBy1w-p%1yF%I&-&gk=-<;%c^o(!*{bTQ z^tS+cRox65uYkPzz*~r$wTM4AZPbq z`oM~+Ge?^8*V519MyspHtF?_*)sI5Z>nj?Q=DG2%MzK|I^60rewfn5HVcRVHYRbnL zCaCPH3@ilnuFpwB2i_ef=^yzn zuKquYI~9opSIl@p=Ec8mlS7g_$;?-BbZa}MU0cmO{Os~bq;>g>7xo(jHf%72&6P^2 z0c*^mxpOekd{?es9V3qZFbkD98!Sv*(AdeeXond32&3!^6Albc{;^DU{)sX^AMA-~ zM!o#0jcUQ=sPQNo220l6U4uwB*M^5($h}=~pgU{NO~cMJ>D6^v3GyYO;R%iHUn6vO zv`j9+VSF{Yj^5fsrK;cNP~I+jIQ>B`_b|D?NZ%lFEN$a?2AsrdE+}ov0-17{DrS>1 z5Zq$W!+kZ#VjaX50_3}3OqxpA$lh1uV>5LGAm8`jJqX2N1;#!ZT4RZg+i9{@Z|2n; zm3io_vmlK1xnP5o?H-{;9+Ep`&)GyRVzGWgi|VYC6{zO_Z*ce(&b!++(zGCBIlQca#_>`v<1DF z!(-Feq$OTI&nR%W2+5XoGnb=fbJeidn&PR1pmEMNnD|w$uVtt&1Bvn%p(y+)L%&I< zS^MdK5F!25+=1oGMY+F{@Y`AgUI*B$#^$p4yMi-I90ENLh$YT*J_1aF2tZ_qlDRDO z&%z7`C}ru!8svYU_&Vog9{7|rB_MBpq+ZoyE)-$#pnm8;uLTEndegapPuIE^aAq6F z6JmFr`qRjR{?~UXhzQJ~=Yr7|DW@>y{M_gntdQVb?DZRA>A%- zlO@ukaulGs6KTwWgp;01O&_BIKSN(YNV_C-v~XwuwBjgN8@#)jL^*zUpv~ zh;`P7`>370rW5b@^>wgJ{mVbTVGXTGT|ob8JU{s3k2ZD59K0OQN>`mDefnNQrQdQi zA$RgSV0Y|Aag|q;6na@YovozR7%G>!6oFP*t1J-uW977&66|FH9iE}J0-ZIh(Q3{0>F4*aSP{saDV^Oj*(Q{MGP$pR$HjhaM+Z<%Qz`Pe z26%ENRR_J(x$1Wjg9vPcMG+K9bz&oYhCw5N5y?@9 zTyRff0_@0ayhHq(X=V6YXO`##z$EmE4M4r^0({gc-qQ(C$q;z3{z*VYaRlA&5a$ph&U~dSoZDPt{>mgXB!-17U20eM@n19^V+0V zWY(Pwg4l9i?*`>b&NZVFI|nq(*&-#6t2632s;Izhvx?;^IdOc0{ud7W5}VJpY{D9` zPeF5_ftcVlSGoV#Q%_Iw^_(Tgj~^*ZaGDF&7!jVRyeHHw-Z9x;>eLK{VPCVP%id6bH!_|f$M>68=+au6i#N;PSN|-t;Hw{KstcP3zjQv zusPJBU>m4D>ocyNMX}{`N)>J+5qJkN0p^9jImv~Uf0dVEd%^;9-+v+7RJoA=6p*2b zl4h*J_4S=P0{krAz~-{^+n{MJfrN`}D5`wQgv?v@0?lzS2Lr^pfq@pLh{>~6a0Z~A z2hkr|=19Z)1Jg2x31U{f9PjQR_t9YpWt*u@*%xz@t%IEk5VO*A&FGNp+`CdEw*-x`{5B;i!>`XmtrD0Nf7B|o6^ONa9ajiH9voRO$y3dsZVhl&ae}fpvC%%leqaF=kSjCnG9dr$(pEGR5hGAOVV;hlSz^ zh@nNmH`aLB^O}WV3Dk>135ABcV_Y6si-}>iB)SoO&?1=6QCw*Ef$`AP6bgub0oPh0 z1^R2`OxyrVzwr?Kn#IjOxpexWbec#3)t^plb4H#`Xii;_kh=sO{1$RbDt1W@wz_(k z^gf^CDq$OjQpt5Y_|*fg?uh|V`sj!Gg?T4>ewWC%bbxCX!wN3JOX*w2hi}MG-_Bf9 z*p}Lo-kPNjRZpibubvJooPO}SGPJ?T)36;gDy=@NGHGD3bi@>tLxW3Tvh~nc#LnD# zN(h<{&8f?;%8z>8GZVHp$J7c>;|A3SUGE1l8C>J&1IO+tGlQ;>06`-FVYdhC^&{qT zm_j5VVaBjD0iFvR+~)(Q5gG%K)zzRBFaaa#Qh(U;`p3p`XVt*9nnC6#N|;gytbi_$ zaeMXEcJtW57pru3P>~WnUKqddLQ+bn>GQnioZKhRC1p;u#0?!1E3kn~Hj&UN>)l%6 zDut`hSCfz@vg?X37YLt|yL|7N!mK`RXp^-#4&j0>D~<>mI#|#(=wS2tKj~Bz1ALn( zl%X&BkIK^YbyHK8)FsuQkc!jVZ}6K&$eS8Vzs_VB3Ms8adYy5Y{xu~y_tCRl(5eW& zcnA4LLaY>X2&5qtPb`C2yBhYkf>6?1T}0j~1>q^Pb!7Zr!OYTvY>! zJlw}513Ie_bY^D!8YDQF5CPB`dagi%1JL=&wLpO*MWo|jNK&w3^c!>+DJKmuNtgy+ zG5u3ALO%qrlaT23N=2kpq@XFtgDuNE_QeIuvH(Y=<_E_w$w~Bp9BPTR4UtBuBYQrM zM%Q4K`8ra-pwZ)9n`dVe-$@$P@tDe{jwPv%Y<62F6QkdyZ+%j4f~D=)_k(2q0%d60 zjPl7w@Y-@^2-MmmkPe{K&}(xA5~c&VrEq?TVKeS&$L=i74u3X62?SsCe4kvg)&p20 z^v^+a=;mtK1hu`VhxGLPi%R9`?(8)%FMJH^OhcE#CCmt1WE-eqs5``F1HFt2RDVQ2 z;&Ti^-5OA40Eoee4@ihgZxmlukOWsP!O2#H!+x8;e+8MmyF?|D_BAKP_(oxD%k25a znG<6oJvX*>g_+g+JpB!N1693y^H$x-C#QcyexWrMAfM}wYCNMRwJM&h{-^-t>k2AU z0d1kzQkx+zF*C$9wpLBi;1D31zIywceo_-%JqrC$fx2h1wRNnh5kPlya4HCn425`} ztw$3#vk?;aAmBO29UR*rzrL*L+NS+YH`mHjEvCyT>J1~32%rF`6gHZ{l(z;rrK}{k z9@6pD&#$Cma_#zAMr>e#=4d^#e2Sqy1}%UeWy6b{jt!X?^LgScG{an=P-Iprq9&Mg z42T3`E>A4tH}6WRgQ~F750ebX=&>aQ<5-9dr#m!gAV=x6I3d_s8;6YgatpLvafv zS7dR!KB&G;oec|hZ+z{-ibMfT01BGez%J$RMdjVET(?>8DC@O`fiI`Y9kR-WLEsBF zx1PbxkE$#^I;eZd&MrEn3e5}}V7y#iS|Twc5DRJg9m3MTFbwYHRwD!|~`ilj^X=+XN)^#33XB=j+;+@1CPzJ>zQ6SS9y6+UO zRp$vi`25b!fz2$ zYN@bez@x~V1^gN*H>kjM!CW5aVf>y>DK0G!s|PNRQUVFbFINbSd|YUMx5zbZl3SJ+ z;7vp+5yZM%*s{8gum_I-%6BzkC_yczOVXmlX zjG4;J4M3z0yztnl>e3apOc~`c+X0Bq0$=L{zz)u9 zYAmEK(+q$;wIeiJw zC>lEHtJtC@9RN%Iwl&Wav-MU3N8|vEjN&`wTx$#LhPDbHEs5gGD{QSGKkBCgUf0NA z4l;|}z@p6JKn`@_mI6*awkibl`crr10jRE!zZJ-Ak-Ff;pT$T^*V8HbC6=mtUD+oR zw+Q);)L4frHX0KE4OW_6mAzWjd0H4|!n_+PlF4M~-*qcMt3+fHu_%Spl5gv6Q-~}) zku$LlRG|91VR1+AAgDks1n(ftV8jF(LnMF#;#4Yez4#*at#1L1042l@&6Pq*(0{^Y z4WVnq4-m*>8k^Xi!_pLORx4GR$p=gWAQUr|QB80TIynCs+m5m_b0z)stI!uoIGQFwmoyfNBTVcVSgq7NRY3FMXXXqWE zVt9O$M~?xZ62MZ20zyd zul%PEU&i!O9;p+EP}3L3$NCw@G72{!{BZ#!uGh~K8$OwM3EPq+&2UN?c;jsQ9~ z#FjFqqtY%(BvtM8v<%hyx{W#MJP75OrPshIhxyLBcgR1ul1$xOA{SsE%#Yo#ksAC69Idr0cm(`gX3)z+)-I{7A9IlHA}V zT!Dxa)u=$p0irpZeOzzuDH+T_{(mt94fYbYfE$xJOoP3aea>~s@OGdAq<~F0xzyb! zpG?^FmW;qE4=L=jui3>83ADz-t#Y%#1+B5mu{9?2i%jM^ruF2UBbPG#6m;geo2|A* z3^`%A`U*VD-1b-SJixZB^(4V8n0x|=^@Z%p5Hy&GK%Ux#zn=KVKkTX0?%ms4 zv+k32U$~cAU%iD~dOrSo`d|N|Kh(z~vK}DpsObt=3tC+uW>>cs`f{+=wOR1x))<>D05?~BiCsr#3P?#7Kp-X#jzx$3pAPtoFAH1R1fz==Q_&@M= z-ZZV}!PJjpU@s`{;P5-DNiFX6=0G-ais7+uf#-Y~Q}NyXsSq%vK=m#L~tjdDVUp_BNJW?WKFbg#X3XEw_XNkd5^M=j9D13)B# zWXR1m*i8JJPz>zET#glx1`{TjRWwBXrwK)EVyiR-`?KgvHN7VkxbA4o&u8b%7JinsRzW75RYeKFe>FRv(Xqz zZn+JsbHL-_vOJQZ-^repr5*=GOu61WK4^e+T2mZkbFEGrFCc({rvKmgIa7to(a3kH}i?tjGt>S=KC;a>h<6R)6^^kNvWYIIt2P zyAU7yPti$E-cw@P{vNp|5_>$AYP)d*KsejlJ7UQs=~Y1%rxCl|YF$XKP{qhYyvdu+ zaH86wZOdMICl_(+ZZ2n%2kOnsR&0R0)pA$%X21*(hrA!{Uv!4E_3Fkdy!vo&fL1p*qAj6k;c z={*N-kX{o7Bnn$(Gt96f(@ZCr6AnKYBrJLzw4$@Ar0r>})4Fu+I!9AvMW?~8c2R-0(V zs4$(<$|at6Ci+$OQN5M$5@8e?(C(kWNn(H@xN?l6cz1#@=1 zSa}%i0JIa`-%AVf48)jQU>2yBW2}T6V+ZJpTmklGE?0vujaV}FH<6sf%x}R3V)R67 zrkV?C%mgtLw>C#D+Q=RIf zW@W$)HGtfNrabDF20?NV*Ep4iH9Uvk$&ZR#Lq4Gx7J3H-aak-G5!1JZO~q19&vaZd zmR?_+i=`-@jlQ$z(Czhl7JA$Cv%dkB97kJ{+am=tn@i?6Fnd-P_CMDCo^R=hgY7PJzYRK7OVSdVIFa z*8Jld-|F?Nyog{&ckGDJm$hr0(2$cVMNn%yh0R*S@poW!mTbmss9@-D&93r%9NdA4 zh6O#O+Dt!|cK3pw^(fQd#!8@32gDdHU^Ld3V5;GUnz_)&g0HPNSQ}YmBj~Zfa0>@_ z*bS#TcVp)r@f>Te=7-^}Ux4iR3vwoXNjDPQ6_m9=ug%|C;vr82wsT)Kbo<+m&6VXEP>1-ne>U%V6otd4Zx?ZP2l$0t&{@nk`PY$!28R zU6Sf9k7r^@H)!&dN5?&k&#hfg7*7B}KPU)M(C=Mflpvk-K-eAq^PZuhsc_aU1Sw9g zF+eg3O+uknbyQz(YnzEg9tns2^ta4Tx!~2~B*dH%NZpC*jKN903)A zUcK?DS{D#!Qu=KF>k8h>bRHI7LAY`)&~kX0X*pm5qX7#BV63VGQkOpHDlI0^Ggqq? zD_s!rpqjvIh4x{Rlp0qAx_J;f8+LA3w^3@>q&jQYjirW5$iY@Z<6U3KkkF!$!=b;N zK7E!NtUgMnHG`WAu(oyMmz|1&bIYzQOD5xX?N~>w9rgihP#q4^AC*dfrD7#|Ng0I6Way3TJ(z=1`q|m!D?M3#;nWGOphePpY`aPo=u0X&8WmR- z=u~=5?MkP_>7h=!)BQM*Qo%VTRYrB%ueBHTDn&5#;RSq+hRZfuuKhkw0!06`-Y0Pi zWf~EmJf~8GWO{j9CTQ#JFPjoLc!Wm2VQ!pmH(;=L;XrNA!CP-Ewm~Q@uo-Z@rlHnI zop5@tF;;>blu>hTe#jp#DU*|e5wS+ZaLT~0b>oB2WrS-ypDM{X52iQr*hZ(QZr)FK zuM8@-6|KrcF(>}}?~{pFU!`B8nyVlFzF0h;Bwzv`mRS9PkdABH$GTwEszM^rNJV}v z0cNX{#}_sWq@3Luwx!s`*6`yg9Z43XRtdC!>9QSwt~Z~a{kw5nmHj*-sCHEp7HQHb8-bqrRr zO21+0hFUnyqrjeIKQx8cF#>zAw&3^0uQ0s+e+-;w=37OsYhh4L6ZFXZ(m?n-(PRht z{X6fxqrP_K%5kMV9g;y?kt247y3GF5wlCMnVLb-SkBKRYEtFJN%yLcoL=eZv1kPZ_ z>V%OSkyR*(7pQ|O&zM=EPIR!9_9X_bX^alSs=V$TgxVFejZk}lQRrpp8vQsJ))3>$ z;i3^0Lv#5KGw0N(G=tDR!8Mn)Ij7Sh)HVj=pK1Cogj}#YxM7Cjk7t2Nh~d`aay+m* z$I*hRE3g5QP@ynal}UvdN(-b!+POmoZlIAkv1+sR%o`ghYU5)grJ_F9i{oF2cI;4e;0iyu$E74mx ztuu8`k@_YDtLFiRQc6zl;EBa8T1v>4>DYW~P3&uFdQE0511yLM>OlpkI2Pce+Yo{9 zJm5gQky*b-Z4>f!e331!wr16GUAe1kn+eqDTE0~J>jjRH(S9piBx*L7db`bJ2W$Ks zFWe5Y#Gw zv-ys|#BWxcE|xw3A?IiJD>XdO$1w@`P;)y!dW`k$I&{A^ta^-G4dljq$#>`uvX|c3pO+dqHjjfRm2e4g zc$?);E5{vjalEavk+7|zj4I1tiR;>YNU;yoCwE9&jU5V`fxZJl|11u3f!H52%vC!c z2fM(xEah5+W3Zy@o!qe%WZ8XXvNXQ0zp^I@%=2*gCHUKoZQ)Qj{6IS;pzl@Ee~sNo z|8<{?Cv^=(Yy2CXHcdKrA56i(Myqz1f~o62 zHLME~36FwAf}T5YcU>Z(0NijJ#cPhTp`u1K`8cRR;cRKmmPRJmi$j-v02C6&8B7^_ z?H2;3%rp|Qs7gS;5G{%Q!eqUV82gyO3=Xs~O+}pRVrsFu>kJ!aL6D>V^B9)!^|=)` z+LK(E&pUtgqy76?&pbo4FTC*Zm%se-6FI3$S&maeo+l?%(l6mJ%WsdSzMm4xr7#XA zU|Ygm>7StH7J{8mAXfS#@c9jJ zp~WoC@#Du&g_%EkA_z+kim-{R+}~3hb7`1~>Fy3PvL|)GBLm2C-8?mVSHnC(pb6uk zJ<`0o0phArA^tP-!1HIOj~D|s41gKlVvK+8%6*ZmMlLNBoIm-={{7TfzCv`*JoDsL zSAFmCf<&RpM_}-%rIRn<(w7$sgaa=7bkwCMdF%*(lg!e$U)R;e@hdwrW}Y54Qgs9z zrmmRGC5xr2m;Q$)N>VR=%tRNXd<_dCGQhq9R_URKAKrm^en09fO?|N z_6a@4Oj;ArW^x<~do(;XY`U<3AC^91v3Z6m#caH!GN2E>x!)!N$;#lS0tG1B3v&Hv9q`~TaR z$$IS!e)H3TNp2mOq>LF*+7N{Ja_NIN;;$d#_8j^#(n)`loY&cG$aMk(CDE>-_mMUb z7m0}VoH$!Y?&}~Fi_hXVi&(5?5HBY@qma$wN;ygaSIrS=VOJ2nvt4H9b#lxnAQW~^ zR~Hpgr}7riF|uSk%szc0Eb&W1aeBh<8m(wTnw}A-NUxSPcd`{~gXr9p$g`vuG&9P> zF2T3b2Peqz{tR`o)LiIPOSIX1$B8E%*|LT7ZQh)%e*eSH2gbj&+yV_X!_diqZaJi` zX`9TpjDFz1n|TzwnI+^3<5mz;v*kp3VKbY{;~On3x7=FMs}22hvGc*|dt{HIefxR` zBwv;lo7HyvP_M~l8W{3LQwLoNsVfN(x3&~ip`vl5Tuv9suBmEdRZ zhf$f)MJ)l`mN&nU2X)mN_$8v3OmdD;7D8IJ#Jvt_&1K{DiW@5J#ta4?q(*-gCp#L) zXP#~T#r*7vRCkHa6+$?(%qDNrHYctzxusZqq*#0^tt}5Zf&JRjpCb}YzRv+{M-Y|L zoeQE2oF2BO@7MT?{u!vWUGoQbbfZ0HS@lSp>%=HmCx~vM9oTQhKnbITP6_NIVCUFs zgHZx*H-H)eF!hXX7yGSul~}^v0|TsZuq~JX>Eyo?5&d_W!O`8N1j?B#ma&>s5gAP6 zDAOeyxk0IFlj#)E>eG?PbS!qftu08uV0SCS;NsibUB)&kGz6t#!f$k7y9c2ITkGgF zR{DYZam^3c__rJgmuxT}GL^o{0MCn49-O_Y?FGkRxeC_#oWm@+LgcZ2a~act2{HXi zVru~cACPNWKsm1_YsqB2jWTM1q5dxck~*baKIk$Rm2PEWFDA=wN>cqGN$#bmuDJNw zfBy3<@?M$VUnr;K-9D}fWMN3!XYE$CD$9xvamK?l3ET<#ryw=NhcfJ37rJtgE-grqVo~OtP#e0tuK>Q& zp;eTv`X)Jj@7@iagw0`hG;^Bi!yTY@;)FR~doe}A>RbgCQXIWGjp6jun|JJ>PokDr zkMy2DNGnRTNgF-2TCojB6Aqi%TQak#yp*-Ma~ge!|8#fDDOQ zd=NSiBCpsM@W}K$2S=qk+rtG;e?a1V8CD3C^M-_}Sn00m*Uq=tVL8ztY$^naml`)X z3-t>mSgw!mhAMRN6kTl&98=>8B*sXIK&grgp&!U>8W_h*3Kqq9%Dm7S_=wTsAQS^B+BSfuv> zEs6O0ue&f337>cMrY?2C&9@8PnYRVPpu_?TBK7g|eqzUMAj6fwg1QaHBc5&g zCb)R8w!QvBtF!C93P82spCBA38`O)rVP)oAgz6&^FeWqi6G`R-e9}rX#`a)dJPlB< z;@kumIvOgJ1Z7uy83+GhfaJ9TZ_o+hvADWY%+8td36D z$R%Wp%`#DYPL~Lrl!O@w%K9uRj0M%V1;qw-n63XHF4A(^+1hHz@0lLdg>(axUa?81 zgyDGHOLa-7IIw&KAdbN)pXf)KJEzH#Tl3UgTbW;}Uvb2Jmqj7}5AJSF(=FuJ2@^d* zlF5nW(k`-6>|bY>X*0!Ryw>$jzH>u|B(~MnEMR#z{f+MwvgBf3IB(a**E(RFfE$u? zAn$ADvLEAv$cj-d8Qc&vjot`UISD7M(g`gBzJ$loiQUt7iEW0wBDPfYGDGhlyx!Rv zd!%LM8s8ky4wLiu!yZ%^u*UIF%+|RO(sG#Y0UH=}$-mATsK*X$jJRMvcVV_Z0p4YP zNc7&ON8yAua`t)z!D0#zK{BT1F7z7^U*=Cz-S?1B>~z90n@d0%r{*)0iAMdlFqvS$ z)4B)(Mklg@T9cyg3 z-yBf-_(6dOHbO6>@2otU3r@fiBPOfN$;TzCM80~>+xL%G9_MqAO zDj5}s==4CB47Zr&n4!AMfvGjSgl83v%(M!Bp1pgTjNehDzMFuw!VYN#N1|c#&f))m z*4_imt?F6>^*%>BI;uy#mr?H;jWjBwIvPo%>EqsQ-0|4PxZp~0!CzSckXvku);~C+~jmK8!qLk0fjFz4ogA`j^llR0%@> zdm-t4L(}xpc&N&g3Luli|Keo7GmwsZ z9({BM48|M1=jd%!A<&BfuL8ezM5Te;j@T#?K1hlI$RwA$A-n^FbRV>JW0ArA#Ms$r z;Js3S!k;_N5pxifQllO3wkdZ{d2q^0Fc|T}DW6XH$CR&;05QmbLMVy)(G0WzYB(*! z^o_4vUI3I9_EsBZn8py@M6-<_hUwz00QbMg3qpjaxI)GNSj@0G8lR+l@}e7-A?$?U z{2g|Luywx4?g{|vlvlHTJgxfICnzwh`Wuu9YjIz27nZbd==tM^Yp zrTE{!KZb^L?=OJ&M?dKjgR&x(XT)R{0T4#64MHbqNbG{aRxhwwlCaf(=fTra->6B{ zqKrUs2l_Ls15St8o=OF=-G~sW#ls_i5VW5 zj_2cRp>;|{dP(Ij=;D=8I$+rl!(2UDPV)^GQB<8W$Qfi>3B!UTF&&;9Ce}!Vo{%Ek zHt10*ka0hZtSyzz8Lvnb5Z)b=X!xBx4O00edVYYX6}qJ=(nG4Yhbb-i{P5-syag>6 z@bxCTLlXn4SkoB1ceGPSwB9?c2-ya`fB-Qb;1N9)bKWBqAs@IHx~!VfW;F_RT&Ynd z^m;&rn;0*$yI1)wUbJ4SvPdLyyYm6hDlhwvQc30VQo!9p30(+GBZNSdNVgeGIh{?F z``TyeDd+W3$6P3QHRe-87KPKx_dNQ@ED@)dZ|Ba1iv$dyDW?(Zic_d5 zRR~k>AZ;8*#t4=LCkm&`z}Fcb{1Y3~2gM3hDu3#{Idf*`Mb#T;|}MPhUPVkhy;Q2p(GVz`9lrBU{{%|;9G zj6q0XLw*!pK?W?Thysd6OfageODm|r-U3~=zlZWb0zULH(%mc+;HLT<7fOvl$p_G^ zGcdW5vp}Y}kJlg&QMVXGT5704rU=hyq#-??Rx1r&6n-Utau}>l;zV_mwGN;XpKSE-IRmHgUx&c2hB?fxsW~tl=^BKFz&BrfBGi|0! zLTNS5E1TMSiyE^A+}$JOuH$8CFoz=m-1N7R!(1zurCEo; zd`XxsiIWcSP$zN(K;oa^q7Km2C&&l(XYnsAOE^4LwUSLurQL<;q|d?_z;uw13oMKDxda9p&qxYhcHX!a5 z21tJ8Sp6$Yn-E6XdKr)+206r#bSqghI>O6yhEADd2R3Kx^qJ1z_4N0!KP?bHt+Lkv zA2PxIi`;E!8#G%iqmVYotN-yhmY0EPm2R%ofzxZas)zy8O)m+-SDf91V7lQ!Pk2fA zI|#bK6mhKkoCDU79GqMK-)$g4qcHns^Kk%^&>(xvQORqI>aOm0OUB+|r_dpB50?Bz zeR*n-gn9D$mCR@C=U>a2cJrtkvS^y1OH%JZLH6yvHJOUrXxbVV%CF)!diFh47^x$V z>ary(#LGs=d84zZO}lW$45XYoHOspFUUf7AS=5ei<~vfGd=e84+!;pG$xoqT$?Aw8&lOrc#{uOfd^IK3IH!$t+0XeX|SH) zE&^Pu*apShDUi+KfFoFlzzdixcA$?=n4AbjqgD&;H)^*S^@X>+6;UBv?S&jm1B(l9 z%27W-6X%K3DX_*%6z+HoDy0wIUTVix*++UAt)`X)x(k0vEEXJ9GLhhxG}y_uo{Z|^ zKDn841l&S71CE)S;i)_hfxp8KqdpXD_T!JybzFo56$~*hJORlNOpgEQPdxyyzN*Fq z1C&-P^tr{z+Aq_p%N;-<>B<8BiNfUqt%L~%Va`V~t5*cv?0cQBrK|D&IBH{$b-mZco`?3|7FoN}kEgV{XV3RS zm%6D92KX_J=@v8`MGzG118^*uslJiRD1z+cI_$D38=a(e0G)`>ukrMv;z(Fs{{h)MR3GiX0Z(sx3~OC<{gB#ZoK*%YbXO@VlnMU?3fH+{ zc?^y;ICscUzphi|6Q@L8ba6uM5vN5S(x`9i)@lsZg8{kU$3*4+(1*44({pN|t5Za) zi^K+q0<`+dzL2T|*z8~iR`+| zL4vO{T|nCI;1jt4zlP6ODFr68jLg#D=!$+1aK0a-!x>v4CM`;$IrL17CsV3K8IeY< zxIU2}E%sD^fsCib8v*CelAPbG7eJ$uCO=iIi-tWCkzFba#u9pVe=0?qJT)DyfghUQ z7u%Ix3YYW&_V>VU37HU>O#!GObSy46t7)7!(3-mzcb;`tr$8npqZ`&o4#{l&y(WdJ zHgHQ)W0u%O5=JE8QH+$d4U7P9OTxF}RPfb_PonJon*2rkI*c9XUjnfoPCGxzfoJi6 z84R3lfGOsH30un%vT(I}oQyod8sPvf(aH>-a38Tf=L!t)^_%Tn-~*ru&RhW&pGF`y z{v8h6CeiAGNl({-t6tOgj0`n|5?d&s5{dz#z>?Mc_pK` znzXf6Th<`k{TPOl0NE~*39L~8!`|V7DfPhCWV6x&2ko`<7=gw0wL=uN19zp>?;aS4 zxdoOsfts@0X!iZ;>oxW}2dYGgAo-<->vi1X%?Cm?a33fk3duW+MPsLi(C{7DaEbI( z+q9WZVV-@of2Mf3eUxgfY=%q=Ud=g4)JXPE37E3FpjmR!P->-vFxH?(3E zA)BD(1w|VNm3udLTDS$=4Lt=og@{u*a5pDi!)80jcnzH!P~LDgz)&_7B~*kOb$~_0 zVEsXK&ZtIjoLwRrp*vBA(V~HZ605J3zP1 zTy|V$Dr%M5a_O;c+hAc?5W~j8aKSPJ8Vl3LOxXqtYsC&&JK#m0l>P$XITHZC@$kI4 zz#E8%>-|AeI$FPUI7x0eehB@mPpYTvK8HXC(HG27b9gCV#6$T)$`>ngUo8c*+31d< zTUH%pY=RMinLV$uOiu;f#rmNmZ4I%bSI54k5D`2Wzo=KsyiOE&LR%~s;0CKHMSEvd ziRv=Q?xReWqFT3EfWnrBQxy&4BV?ap2b!Z(6zDJ;2q3GH= zI2|ZsP8H+Z!g-CY_N~@r7u@rKC%ec9NN2d={bW1@`n2(M^w6-}ESN@_*uCV!p?X)p z7%gXSytcQOA66IoJpc@)y+hqIME;1EjtE_Tw**CcO|u}V&@f^A+Jm&BLe6&;G0=}$=nzqmX*0akJLo_hKg!3tprjjjiDTUXw#;d zm6z)MgoGKn>AZ*#8tJ?{56OkW4gj>vW66jN=Eu)IoC2yYe)JOd4Q=SurA~`$`Pgf; z(I_IFMrn5X;&wxM-_~|QAdymCdL!eK&=Mg<5xd)$&$5cWG8Zsi!44O}JAb^H5w&uZ z;JEz;MtzzZtx?a&_hE8u34Ojg7JQbUS`& z0e6aQbPnNImROO8U|*k6D>S*+_3o-sZyH+m874No?>=C2PC&ly$hhzrnwmNX)qGsZ zUxAJJiQ>ayWnn!W>}|q8HykLuQ0!Z^Q~{LzaH6e+t!@+z{FeVt3l(IR$Dl%wRi73c z*iW*Ssq;hlf>n3XfQsFU_As*c+uKQ>GZ%FNU64rF z7L1$V3dUgL9SZZwn8oODxLzGA(3 zS5aaV_ed=kbP2l&lBp|eb#E2z7=kN1O6g#k=N#XQ4h;<%^RA^EHp9Ghr7*Q=-J)yk zOE&FDL-^XYw#y|hMx8A6 zd%4jD_fP6=n%wq+8!7M{z>NUm;j%3P&U0#jJ+OYm5A26QIP7#ceRcS=0H$m-yPY^O zZ_4?2D9q;s9mmlCot>mNupqZ8!*em~i{s^&|MBdzviINrGamX&qNmuNM=F)`0XX__ za6_IdUgvmx=wK1%JsGC`Dr2|~B5>UNIPXJ?QB-g1>ouFr zwSg%-u+F$~6C;aV9BUW1r~C#+R4#brzS|CM3ost3cinl{-u`{|!=WjBxO8`uufs=_;2;ll7dS{9GLySP_{6|@ zp74Su`AXxTz1j3V;SyAb?aMah1O^CvPoJ;Aq?7g$O?uTdJdt*2VTT-T8e{FY@lGOO>~vj#&XD96%m?D4_Ddpb9+U+#fs zFv>N1(c|!V5UB9OUM}SeO+esRZKn#EwSA$Jw z!u=a3ex6t(N~ZikYE{4_u`6j>>43gEkxWKev!PD+={q6A zBuQ;wJEzmRbp56TOsneLuy)bkGmh!goMFeb;q%&-Zb-ne@x;azF4Fi~epZhCRq?7D zt|-8CUlO+BU{;n5slAmHOqf#g744ad$v3un?R2#oUl@r)f(UqKW#RHgdW)@?P)MvI zNhGzf%~s5GC?MpN1v;~@hxD?S=Rx_FB*e--9h z?T6OAd4ME^bo`|4#j>1$U!3Z~>I-i-Jir$NgA%32^Yr6GkGN9aMB5%87XTr9cl7|R zkNPM*NJ2a!05p#C78`FmWxFO1p_0D z1eC#tr^X8;BK|c6p1D%uYeiidEgIVQLkwsjJ?uNBYmZ!Az=3w|;wvu6qrltwg?B&v z@XJ>g3WdvyMX{V3+XEEbIPngXR$u}VkA~6j%ZE?Bdv8$MCiHB++WP6I-RxzsMNSx; z)tD00*dpxP%?EbpWzaJY+;S(CL>;h12;hO0HPlTxpXHmn97`P5R0LOj3Ii&t zBk_v|>7KnQq9bn~ws&e{;hTKE1v7!CY{mk1YcIOFul}r$_Y7t-M#q1$G;B)sgxd7^emB68CSYwf3_OKafdbe0FDWP-3?W!`W=R#0qsJnNLm`G6{&5yQ6fvWb&dP46-*7N9unn z6JOM$L<(kcT@SMf>%(TN#8@tflw{v*mp-2+?uS77&=eYqi}%6@ErHgT0uBK)t5v4- z;Sv(gYK*4?brjL?T1ZtxfD0#!bx&9xI*TaQpGEs~`dC2PEe>?BUkypZGisEe}s+I_$9bbHb7C!cv`Q!ZN%(6T| zQX;sdN_jizPTJs?z>E-zrby!Ig0d?kG)t0khTWHZvA!vj+0xNLY^tz<3h~bIKf!V= z#8H`of7gc>^)pHa^dup5g290dn^@d?;J3Gb#6G?1Coe1zY3MnRJ+t82$$KfDQUDox z3-V$uVb?%>7XvpA$9JPA6?<+^AzRY2%9s_b5uxCvHIm-AE{8Y21+Ok7e#L&eBcI=$ zOn!y?@wT8ZSsLwz@TvajAtcCE6o|MHx3%Y2D}UUd7p!S7b9gZ-YZv-vQd zcI32+&|g?hM-Q#mh)R$mCa#%S#wy~AeEk{N@$(TG4I zcEG?uN^PWQ;)?pm_@0CSLAaY#mgX1UWv|X0xa7Pvuz!%X@7^=;$m^^I{iP$z9wt6p z{=!4oozd;@4N47kdDMXln{R&MgSXl5se#6q$ML_5z&0#_bkGCMa24a68Wj7uCv6c> z^KzCIyL5bvM1rM)AOO=i$U8YiSCbM%Ll zggm9FxMLX+6t`uyQbQpJ6hF6K^uuSCXNmVpC9Pm&MOq?-nf2I7AqXB{*uJp;0>8}b z1tMpkA8be(cv7ANbwxt-k0~&5p`ZYYdS*jWPa>oejE}A2(j{DU0-A<1qFArB_N0YD z#u-Z3JlJmZHrmVfp_`@Bv?gup(MRQf8WlSG&sr)lN*8P@TFxETmb+-ZUgYj{vky#C zhliq;Y+N3f#WMw%yV=%hEmztIrR9_}YeKbBuqNd$dbiA)LT4lx?TYP zc<{UHVL!YOFTT*+4=t#h9;o^^3euc7ab5&xsam~G{E6TUSCFIMa$*~jmWp$?4kwGC zs~9dFc6?h*!Fc=b1d#eaiS51l*LPtqrrj?LdY~o7r>fLn8lts+2W2n_170Z-^dgd$ zio`~>BJThKg0_@cETbr>CT$udW21|r8Z}SikW0YV4^sTZ0@}$`pP=`1n5?Kz0a%lwl$P9-nSs zG+f{M`i*lEWwDB1D4R;#Zh2Z$Lwon_d+GBx!6+r5C;JI*?;70>(Wav|r36wknL!8E z+sgNk$FR*z92PPxTIA%t0eb=5RgFjeRbn?dA3FwA4%*id600Ch0IY>#o;K*E9HF3{ zigv2s9u|j&w$8%*m?LX?+%F9iiK+Dn%1@n&wwFqq%H=)>Ai&c8BA2U{Ri$7tN}$#gKbF5`F?_#V6B_!qW8 z)zmxe=iBr7bCStC$?OYrOeLicseO3q0UzhZyI8Hu9+70xz4U<3IXf}|a8o&JV<$mu+|m4Mc4YP|8A zO+fsB52i7^jJvzq^qnJrV70xylNY%gX!6Y+O0iX}ihWot zbU#tsxoXr5M$@)(-z@emwOE--Q(_^}({EA)Txby*D6yS@kX#DZpa=2{n38nDTQETF z6CV>EQT&Zv!1^7VO8g5S4?Y^~jg3PZ#-ppA#Ov(wjo>YIcFrfl^*1lX%;@-WJ*I;> zqgF$%zCK7D^yZXVMYi&blD?KOfp9^m(-pWZuI|5iVCYaB_$Amqeuoy>ihGZs= zuS&#cb$Nb})&(7)iiJU7-^Peo^g{g$j<8My;n&O|V#P?EKr@Dhh*Xh1GhXf{cD^4y zebd^IKq2F&&)c6#l*=1Sr4IJv&)Evuw`-OFM~-WH?V2PPmMLD2-@Vx6dOnG4 z;Orki^1ztG8t-`qoZb52rsB~I*E_Y$P5gvE3pd!Wf`Q$oZXX_w7+Y*V(V6O7U zJ5s4DGq=qlp_l28L8(zgMJTPF{YjqIg*`yID2Rq6SKR*EKmUn5B~ZFzxs;^%1YgGR zDV;;3wJL-pdLbnUP@Ax;dV+wFL=UU_IWRhja}vGiNwH&e$Re{2PbChsk@%(!0Q!+h zd9ghgmbTt^UzUBB=v(vB{a2n=9@u{KQ*Y(3|M=s_i;$2kK``?S z)Y}?Y3RgEP$2 zvPa@XPyMOaE3{TC>J#g=eJH?Qj*hWIZ^8^6#Ii&H=#c0hp$eg|>z_|v`Uc{YV>_XZ z!%X`Z%xVK5FMI3!`RP}r>?Ty|Qc%$OV_(>l15qeKK=CsOnfbV?X~+n`tqm`NT_|&YC4Hc2(8fipgxz?b?9>iIDHS?_=iEEYNuE^OV{G1p9ZO` zbugL?f=z3ynAUJ=T7^fh?!&oBT(mpcMVf5axhM?pCp@7Qe_)J5Vgk|MdPkx-01*Co z#->z|zyVI_0``vS-R-7rep^`?Q1t{ zQy!M6_|;Kc<*d72TIiGk)txf(yzJ8VdNJiv@nxhcmmdzVIc;@FAeE7+edi|8TkF@~ z`>UtfO{vFH>;J3)xgbTDR7ZTTI5@*fDfy;8r3T7H22BPwxd@wl4>?&od0^5tj&d;u z1S0wwCuBdcUc&Aow$u|_1|b_ZUf75w0NKbXuStJKO?H%)Btqij{G&%v@bSm5!~mM4 zpO6SF5tvqO@9uWL_~L;B7d-KVDVsI^`q#JKie_JR)z2o&*luE5DwTTr_y-(Z29U+T zdPka%Urw%PAIiSXT9Z%0(6F=F$GYA^uVvoOq5+63x*wO8=JsX#AvlcU9caKUWtTeU&+qPzj6O}zsvp-eaZrN z=PPV78@MS6Q+qO$`Gj2|ol5UWuaQ!!_|Bzw#)`48+1pRaftNFf{SwGO0PDwLHUZr( zxa#Vk{xtVUC%PcTUW#_K4{J;X!1|SdXazIN;xS8@?+{zq0GO#(?G-Z~;)%kSPPu-{ zJyRZq{Tg>sTGs{iZ3-|!IRDd%(LmKUHxd{}$CcD%E6l0uZ(hLGwd39f+reg)+siqQ zCp6e_4KRX++YV2}RbSAA%~?%u3Ru0!KXw~y(*m?kW%OC8oAzE(}c)%s#z)o1(a+DlyZw<=x8qFZ+nG!8#Ak9UQzJ6M$S$ z5Ha$w1Mq%2k3cd#st=1|qTtgBb-FETNj}xC3(y@x-(T@yCACOk_b@Q&%&t<~?j=YB zkUzB=2?RXGsb#9uot^pp6^#Ztk(?kGZ_Js{&($5P7Q4h2+CFR1E1KkbH;@VIa@|l@ zA=v_vDg0Qp=IJuN|Jl0-1n0hTbpjuIcpvwF zVW{YK5TUCvH{Un(O7oIo(}pjP7k>pg!jDPXyeS5aWICkL#zj!q{0WCO;S43N=3`is z05VP(1JKB?jQ4~&CS_tkY*bu)JRTksiOyHquOS1qwX<^&4;AMVi|V%-k(&Jkf_^s9 zM#$@*txP6&4Gesh^ItF(#^?%0ce7V!3zvnFkRMz;>j{Uo ztZ}L*nO4{5Kr_9fIrpfiO5CcGYvBOXDH98ID zqxFDU-DAt>^jU8xq!M%{B{Z}%!B{K;kvu`99qn55{r#gWg=$_hZ&-NvN1#l4z}a~c zWC91{6TF%@M>fhq3{C|cC>~#R0HDJl4HJGjj`c7v2zGw3cEI|CyVN*S);#BiLgvDF zE?UIdL@1Rur^Qc{>^NJ66~eb(+sF-px&ZJ3r{@zGK@4vrBeqVs`t19}U4!*c`n{MP z9uafu-$lRg?mnDjtg@KI!u~ob*74JnCWvQVf0C!5zgfqJS)#N}$}`(3iw*vl>@4u@ zr8JcIqA4SLaj|%HPHvUPB+$@~UkyaBK6HrPaC#9i4N0C>6pri9%@zp&p^DW!z5&<+ z$b892M#jc&f9AXF2>U}|)Bf)lV%-Vij@vI+>BG>#8Alp*hti;m*D{*zFgy@?Y{a~@ zN7`oDk({1Ui>)*h>VD(qL-1^cLKP!4ny6B*jMus}$(cDd=oxvW6g-p>>J89oXFjXT z7>6;7CaZi3LeszgfY?u(;RG9~faa|#5QJ*Bu2^YnD`g_gbf!I5b-4z*NwX<&&N*Gt zu~iFQ3IEvUZRx_L`yqJif*9y&(hahJTUuJliwtB3a4j5q(i3pb?&jCl$P?_lHO?7q z3VaVI)k-S^-6H$}QUy4bj1LW;eFKItDY?`7K_juK1MH&W?~{$oIyNN8aE0((RQaG(5@t|pO$$(J+13GwvUF{*#&49 z7a@E1j`E*is_DDM$lcy)LuDgy|MT_fV#!9#`MW{QBN!(zM`@$pzy6Ow17pb@jX%LQ zMj;-01ak4M$Q;iW^+Q2&2JlI9sMc1zfW0yFjcskAIyr;^ry@_XhmEaj?qSQh#+%#t zL7Loo{QPc$trPbS4WX$+L#+G@_5%QX{sAwh6a91k5JVqLwqEO8%4g(xSR5a zRrmLNUOoin^cedpVP4er)2>CCH|js_R0d#hpgI_+!lW6mRN@dz-9chxt6EM%A0PCg zsY33}+thMMJiGC%wy+2CgIFPbk1JXUrx+ooz>aP&>>V~m+$7c$Jv**t9NVMu1P3Rh z6S;g3_D05Y`4d^J9~BDwQ21{-#B>QIQnvv~Xr+k~K8)6}SGv*Be)ji$cJvs~#oXM7 z5MQd4Ni14rH?;N(9XYX7P6=fa{@({FeRMPrU9){74zhN9jCilYrU?mKQ=4%K!YL8m zUq-9h(}CmsD7m7iM@w%w&?ke$Jk+)rE@3JVb?;rnbZ;G--6pjPUF-M57No!teh?hI z2>~)eNF9f}jRR#aSXRJ#;Vw4yEOzPf-GjQ}2|gMJKqN3H7J9$_b7D*V;9d^lwq-zW zCP&pu$w83PH40+ymw2b)##k+KYG~PPrhV*?kDLN(u9Zo zssszTxNF}9dlI-37TbFE&IDTU>h}7_c)~Jy&4lPpUOqHuCBf%=W75fBMTCd$PUEUy z*w5Ps+)_6I6En8%j^Z$LFG zh~vbX{BOMQn=vc?$2HCeDwVU5_pcc=rHhtHT}C7k;M=+j7>7Ph2lf{f2_+j zwyglUt<2`-JGw&$kFBQEqUGP)$1ZN0-7a$vIMp_Dx5}z2{UzmIxw#8ol-#f^Q@gwj z%n8*iM)H{k4W}4rIBD4swP zxbu@Y9$j6pp{w-aA)Qc1%Y4za!P^5!Pm_>o&xVYd*%_szO)QHKp}S-eLs%D5KjVTn zAD`6q6GLFAsD&i2I#uPx@@n7-HVhWP^LQ7abQCEzKy)BQ-t_D8h%u~-!0V(=sh@G5 z2T#xerxf=DXcqFO!G`|cVj$M#$Wp`sfw05J#^aWK7@o5_3Sl$+t)n@0v$j|0ea zS?}iGHF}=`2*aH%AlKl^g0>ky#s=MSqi75_<^Fz$1r)4sq3DPtwGhfL5 z1%*G$qchM~tYAgAsI5D}SF7oG&O&c3NOgRR(3I9Vb<`^6HIMW_`Nphq!e!ixhl66Z0uWitCRnct(! z+4YzoqC5yF?kPA%`O|joa7**;H zg-+4wQyXDUvN~~q(I!+Xb=r>gZ;=INU$zM70|6hS4@5*)>Q+V(WYmhVL!t99azzLb zYF_ZNpJ^6A8Hmbpd8E-eKNSk7~?~NONIO3I5O&!T6lQQBrpdIiE17Y z7ox%Oz#BMm39E7H4V#7~p(PQ-uX4E~P|exZ+qFIS*EFiJUu01*D`c3U9f>HNof7ca zL)aNI=6Odw8KHNE*J60l#b?CQD*O@mQdM)ofr+>@`z zE|nVNyU|&&MVDsxeE1>zhyJdAq0YZ(&Cpj2DhymKiuit^!2ULU;h}>WijfhiJ?EX1 zM4RQNUW3}uSAP{+j|leoi?L#YJQD~8-(x?G{h%v-M?BL7xx+Z9x@XBMc-l@5`iF<@ zEQcn>%|I)^7e>upgon+QPNI;St~B0_Z@EsmIRQgLCR$(NFD7t9tthvZ_G$_G1c0cu z!JJ*?a9qSlugWIyw)=%j1+X!D7@peiqHF<^3^~ZW{CHEZPgfpnu`=dOwF~kVue4*Ybc{VI$VE(4aAOfZo=~_nWkSe53 zyHxI$F^tErQ9GeCEWjR7r1u8Z0m-tbo);Tc1SBALMCX9ALs)2<=7s08p2UctBPr zbOZv5{@|Jfqhbi}`y@GhO58v~>VU8G8D+^zFE9$;G+nNdL!-47B7^1Ix~=H7vdSs! zThC$_krP2qzA`J5W4fu;^tV$VpNCa=`H!`zaBSnVp8l zXd__#Ejn=w2>5KXZp|WEB7=@QHRFbkJDOrYrp;y%&uy0V%pXhm*1s|gc_|r{(|h3w zFqTPJQij)hG{&A93TYhEhAal_@bs0m$;`cJM`fzdo;q!r5Bfx9{4Tu~UL?ft`T=dW zz`I&xJqy>S0t1)q>g3)wZ}c->38Rq;E2hwxyUkeY1?j=O5a0in^sMGGRkuv}{*;HN zJp2E@^t8Mo_x~rUX_fjWWO$PN0AWB_Towm!9W?YdB(5frcW{yfy`%91w92_Wtxlie<4Z(5-#WDX|0+SRY8+Ds z%m&NQv=#q%xpA9p1HC4@sedq~&Yu&cBqB1f4dQIvQ}YNHXXAO~xGfk=5W);YFpnu++JR%3sgIdItpK=LIg zlV|VS1?Es?Dd}~F3cC_!^7Q~Y$cz8@7xBJf`7LQ0*vahk#?P7d_=o;M zfy!-#JrkOt{QzCuD+!LCyPT&NpR%LoHkV~)L5(sZRKwg+c}P^Wbp?b{A-f%O{t%b| z4dL%hfEBW|cOX!`hR_Tnoqg6&k0;9cxZeONoVYqd*a z71~bOeD;r&`iw@a&9N@_39AL>uS&UD3D7MjLX~7XmhAvW@AZ%-w}Y?o0%?LWN&`X_ z=2(wrah1324PSdAN7cwaahn1g3_b>UV_>nGRm+qB0Dl=?3M9t~ct23q%}s6i62R)* z)HFmYF>dEDLIxLbIbg|o=p%Mf89iT-Yczdb1hkS?#1i50Kfm+N;9V~rl}UrT-OKqJ zwQ$LH)j{iu^S`r1k{_AcEvFmH>d3 z5k(SeQ+r@>Sgw_$j~;sH?6U)ys-j%qM7&YoXTzK@NXn7IKuaC5w*1R-nGpYy{cA6+ zQt`UKdhXn@eN_VjT_CYeyLty&A$QNQs%`VTm7!&Jg}&I$en>;*m9*<+qhm>))VAQx zJc8!#dF)4B-%Yc3!d}||dHND*;i4Q3Tu+>*!8}uVH0|<6%HrgE3PYYJb`|fK7i2L7 z4;6?wN63V)E0@G*HPBDqtoVpi?d9I`Cheak7*!t@zEuzw;V z`RQr*Uwo>A(9~+55#{=mE&^sJPDRt%b?6tY58WHc-}K!P;1(IW?W%efc9fDi<>F|U z#u5#$jKYqR!t!q_6+-eW*f8ja=XZbk-0n5!)=U5q22*L9e(m-h>@%LiZ}RB9eftXR z*WNC%QbfQ=OHv|VB+%(;(yn7h)+G6owuN`(v5n?(`1eA-#{l}Qfe`5CIx28gZ#{N^ zqv~4}L^t{4MY9K4%ANCVmpMm#imT9Qd6-aUR(c(Iz}8h0l+{Sodfg;yg7&~izY zjLfE25BZT)6dYn?3W1oB@ZTyUisF@d(1ZEwKhTfAk38(x=;}U#adg8t2BWarqdg7X z2BW7(?tJoYMi#N|ykj|5j7yJfFtRT@x81rzY7w4#+fFZ1^h+#OFh~{?nlEAaTQ47$ zGnlB1ko#mLK?DeI`b3cf3f%3o*q(l z-G?`{Lysaqc*$!Qn0CB-XFE`}Chq^^xk#GavC$vexE-9+6vWxjK@z3GtJ)yZp9*g3 z=EioO95U{WnKMUYV77JIwNoHa0|<{Gy3F!wr3S|EE$DE%ZnE9 zDfmEw2=l`ok|9l|&a}h(;k907>`p?46b)=4*ynxXuI{%c;b~2ha-%!?>W^ zK*5BK2#AV(B9VkImNSAYGcb9NpXJk(@UDAgXCMB>W2C$YtvZZaCNZlO={AfvPf8#l zfM-)z=1Cz<1UnZBP=`gR{eQX;utG5M7@({8CO}5*_sQ*ML6A1K zNt4oGn9_@UZV{TTr?+1|q+no7A;O!CfOVzsqK%(N*Dm*Xm#=*!k6gEOv%mQc1QXk@ z097CXO~80K!4=mIZu~5|X1Uw5V(g(ja@<~Ie~nBqx37L1abx`nJZ^_4^I|F=Il9Fd zTspta;as#F?R{|YmK$nftDyUmLp^}L!g#c`EUDNvJh7<3 z{T+AfC%9N9h?2QX0iYiE4Q?%*Z$M`B1Y6Of=h@s($SubYqAP}mo=J?C6ERjj9`UB5RlJsvv$x&cU04qm-yYaip54=a7>F`+amaVh$MR)HO9KHd~~ zBygM#i?vTIR)squCST@8oenND)ajbmnTwV{C}Ef2P4I>ORz4E`9`F1l*L2*rw_+}c z_c@@6YP=ZH$t6HO!qc@_7Cp{Z`(!R=MCnD3)6%5KB<&L_8UE4&l>Q_lol@3mLbSjf z5sDq#Z?Sk`6u1E5lnvxtmiWecqrS-Z0}uMvoOy^7Av2W=f2PG9D-JD05A z_&4pmut-C7EHn~xQ|EW0`y-1)?WekZ>v_V&<_@uauvgC>R8h6ER0Mhm&>j{sXl_28 z>5+yjaRp30mbw#AW*9NjMp{!GNgib%MSiWiLk;s4!Wu)nT&3!Kw4JqNH>`i}uC&x>B$%Xp8l%-Xx3=j|U_MYafL5e0SRM71m%#nfwqtaCK3PG>m2IQ z`ZVQ1VtviE_|#6JRTf<_ucObgbVG)=$&zaq<_BG;9hgR2WE&q~W8y$O?iD6sBxcAb zB{o;Km+JK^tWKa11rQE_ROmjEx#ss37(qpOwp=yitYF7!9+(F(h^QzN2&z)5NH}kb z&KtG>u**=L{(&*Qa%LO&aK_;Ue=_u+v%)EJh(kAiD$Dfu=@Vk{f@ayBEmK%xM)Uu zpMCyVQfQNRu9%%2cCNi(s?aPu{b=2YZef1>mNw{nxe)pM=!tr zdWL-x5?cBCVTg<^;O`tIFA1OZ1)w5mg%BJP6&H(|DRvozs@k|68c*>F z$Vdo^J&Dc&4>3KCxl21pAfOA+9~JjnN9TojQik$Qt9I7Nf#2bx5_(Xk>>&8$>4#V4 z%)-tfLS~DUV0;Wu*_QBrxo|dZ&aXZ~j2UxVPW1`RFb8bza-=Ya=8jl#FPE`8$X;F} z>JO9ET8%UkG`Z)geRETG2s7H|&8B6%sVkG}o|Mv;Kjq*H(87&bkT7RVYlZlZHf|;- zCMQ{A%R4~ol70TN4w8{mk@-^vCoHC)9QqJ57e|P>^}7%S9XA_H@Ofd{75=;{km$tE zJ3!Qrk(q(|`Gdqi>Yb3%vVazTcKlOe7+)DcozMe3i7e(DyAN((^EjH^CSadi=aa&j zpvE7dje+ExL-IcyMyi+S`=DQFN(2FmD)e{gXe+vp9Yt3%lBjjhv2}czf?o069Y*%Q zY-`$fD3q@9akNatfnLLP%YZ)leFs9&P~@^3?b?IXF+Q`kyul zM0Ao0XgU)uN+hJJIp(d1@ff9`eZi=Bz&dqdI}c7bFuk`24)k?Ak8a;|O{&;Nn_&c2 zHvXp(T_ord&k@=E;m3!iMlF9jU!^CunM&uJ9u!(^wCj|0NMMdGo9n=$X&sr(Uer(2 zpCN707Zqz21Mjab3|K0+=Mm+203s;-j<4DIo&$sV+;!NBscGlD9xrnp$xvi^##o8!v z&N~%NF$U(2z?d)%W$qnfZz}TZj}S+43riXa5ckG5P=4qW#!^)W7zbCFCa+WoV|++Dw#(jOHSX| zFDYoUW1~vkd90ha6}tmivA!~Xur1dBcY^c)rsqFgbC6){6<}qH(_mN`0YJm4g41Xi zIWUOLu3ALp+h#6mCxOEvIA=&)G7rrP@E~^gjFgjAqV@=pt3R(IR@M(k@F4UBXn=ia zE`jP_zdtZ=yD~TI2Q+?oYPWXQkfL+i7NC<-(ZiYwiC$z%d|f3c&N?0=IG z)W4!}TUL-*UB8yVzilrltxyg$quv2+yCx$w8;%VQ4h#@uhV0f;p()EOj9rET=HT4X zahr3XpR7MchN|pyl}%Ojv#L{PEa^=8a!Ti&YSw5vlV}GECVe$Hg?Iq+cgD3=JJ+4q zn&|i+P98j;aRm$Qx`0YeLIFjLE2 zRkH6leF6=1nL~=c&7-73n9%}#hh6YowR#r1pqH(*VObEOH2V_5!@=Olvs+hj>pqFG z?Ir4ukQ>>b7Oy;f1%R@FLK8 zGf5V(L6>7;u+U8hzvArm&>cj6Qc* z1;akH&>g1Wc$}YwdmtIV2Pp^@a9=kj30ym6CkKK!A29rrcBo~}a3IiZ2WmzQ<9;&6 z=p_?e6oyk15HDy1Nsp)H9k;$>d>-dAa8?5kn*(ucSP*VlFu2Az;f~QKKdNeTJ#C=l zDN82iC>hIxZcNSCxy;#v%0%dsPZUVOe!8V5RjUdSB&C6+TS&3y4uM=H?v!YhbK7C8 zQ4I0v1!0+cB*|;MoGr z^O-=fUN)%oD6nEeZ*C{i{$Y&%b-9C#$u_9XLI&f zj4)nTU+6ZnJ2!2*W5b3nb{k+}?g#JD3@N2&xIBuKt0ILkm&Od(AucRw?ly$C1eV+r z3UD}ocfxRG+*E-RckrteMlaUHb@*wNkFV{OGOfj>;r()JG5`lW{^FS0 z3UjCohMw9DP@}vjfAHdSlMqty0G4`o8cna~qco2K)*IyzAj$cb?xZxp&;p^D*0u-1 z`#N#)xbB*O;O(T#Z>eM~nkU(Y$wQ{c_kr68uE)d+8*#M1|CI5KxF;&NXsI}*H6i;9 zO-Kz$L(O1wOYDUhrPhvb2_=O&IU==$PXjRu=85K!Jh@cjR08jpK;f3bAfA7_D{re} z>s(4xwRS~cAN$+njx#q#fEk(}T)uWq2WqQ-KSDv7f~Qo#{)iQPODQ4K7-`6-ifC=f z$9eHM!o^uO+=zi={}|M~ut~%EYy5hR`=66FJkF4DDh@wwk|3dnRN0J*BN?VLM1bMN$-JH7X^(|h0Pv%Msn-W#cqLI{L} z5_%1x*B}Cd^cH%NYD57MsRGg!K~NO^&`&a#|2=nRb~ho!|Nq4$VRsYAIp^)q`#fy5 z*n0KseIoy;KE(GXQ$e8?)T#J7y#RD8LKLvE1<7nlcS_z`&d7?gROw$8$6%4}l@BtyNW2T6Isw^{KEZDGnxoR?v2vNJw8j%sAm|zG=qm z%$*Zjv83(#O^vcv4+i`?vu^j-N)esQ1M4@ZF=ztp@*mXRMGNd6^Z2}#ZcQq!@@Z1p zn$9_U+-9)NoP$2@y&M;(-QVqlCdDYYH`6pskCSXu{%-=f^63E8WXA?9uNDq#@c$|E zEj;LJ&jPWhn=(r|Ac@B_75J4fZh(D_AF#fO`nKH&?ZleLfO};zv3m%XJC!gDQPOoc zjI^93F*KY6GO~Fwkdv(@{?I(}+o2&v+_&@60a7mNNCKzOF;PojMIBd_dr_dr)+o?bS+3rEuB>f@ z%9ex={Uei6Q^Ui+Oo|Xk;s8P~PM4t4d+tEyvD+El`^xBy0u78-;%E(>sgea@X)xqa z8RH6tD*H@$mD9b7*>ROpC=LXBmGBU%>(@-GirevlQbYWHI zi0q2oD{v}6oUan+@TtV`sifdkIF8B{RfZ}PPcv_st$bKOcL6>cHmwBcF#ug=A_{?; zlm{cK=5PP^G4_9)g{}0gZKF}OsRlt7P6_-GzR72&_@iK(GGZKxgCD$0Fs&&E!>*Ba zvJMWbj0GmxSp(>l0j#42Pj%f#5sP zFM_!_FWGqTnFYWbTitcmRv>Er3jo9J1|U~j?WS_1>-M}{-&O3=e$@-rbWvh4cAi7$ z52`ZNOIkf-_!PVp|rxR#yudIOskpqnG1^ldR}81Fc^%335jLI zNSj87RNiruQk6=>Idy;c9CXa8?PVE^>~cZIHJ#O7XB`p-#=-KP9GCc-@KUK5=#|3i-ECbW*Z3R##B(JAobF--lnDwIJrRA@9L0so>IhLC=IA+vB$ zALe%_QvneW&T_;a8HD{H4*LNrThwk!n94b2N|7s}coEY})v)h)yrQiI%jUS3IP=%J z`S0YJqw<8n^rK5|fsOd*P#~$zrB!8hp~&2NjZ!2D0Fs-NEorb{aHwJtx|@zCWCq*x z5vv90B}2N*cE8Kei%V}Cxb9~`U#c~GfzorD8+yz=EMfLBuuRt4G{L6=A2>#_$>`); z!n`fG2{@6&0x1&S3&s(?z37VfSq~z7`=J9wVJ!8RFO?oBm6(fwX={H!0S`+ikGqkG z2b2$DM#O3+s_TUtA6ZQ5MAfr*ZYXU2U^(cMEPsE;zCmpOR$Ajep++Ml_&7vrBLUK% z$@s}sL9-=c?8z!pbfyP|4&j%HAII{{%dqqMGAd=6&(U<|A6gJ>;;`!s!gEvTMQ3tB zpH^%W$^w}RSsT^}oigLRvE~yUZ%jeXg}w284$#n}z4B;GaR_gW`Lmyac6Dn>AFpyb zpd!eD{jP#(`*wWht#w44SK%{n)$wdwA16+n7E=z}#Z|P%;2wCu-%B`Js}SEm>sB2> zn9#<7_xo&s+j@stiptE>M`HG^SNi19Wn-`bJ2J0Zw5*}5I6>oza_26Vq#hf#SK=EQ=21?eo>8Nx-98NXwsfnFI zW8D~X5nlsW_a^3ooei|Jw7v4lde4F-3q8tMS}Y)%T8I9z+f*j^YC+EGw0FU`}$2F&aY%fJ=Lba0NrUs%Q{GuB3rq6cW}n)g>UC11r9aijea-?I6}xM9vRVoTM< z+(q;zRdy`}MDdVUmOlt@SmT8n0nd^1V zTRhhVMCjI`u>lKnFQf4Pzx9*L-XK-fbV6{zSpVoFO_qRYI8 zKuo=XK5fuy^+*xcdxAqEk&rnXjWPFSzW%xu+epvyWiEw%!IG%OTrX?fx@zwk5F9Ax zePn0eCl<(TLv_8>&^II!JLj0?mU+8t``_ej*#CvaN%6bHUH~)k0RaWnZF$Ii@Q@OB z2B$6w;z1>*Zv{!DO50iBLabG7VW-{V_2@v`Q>jCB6IdTUACu>Ei4Dz5e~K0}KQRK! zp%(fz`?{|<3KKJ|-^HBP+dC^p2xX$ANG{%+5GnzH-6d6^E0BwMmw2zX zufbeU18%5qU^nO+=1t~$picadxJG=#zh~fDs~@(|afZX|UUP(3?p$_6Mq(ds=v0RO z(RDTGk@z5XKLhmd9YlZ={9_7G0W(>g=4G(neCxFP;E&smNmKkIHe3$0II*EkLLxK= z{WB*Hb_)3+8>&1Z4hcLoQ~!AqsB%CI`@c#8(68ah?!hW-VPZ>j_fKjfcYhB|56M)? z$|sgZbyRSKixGt^rYcl8SoHGWY2RAUIT;*CSDM|#q%0kL*%Z&sy zRF#lBOJTlk95$j9Xc`{q0s zm|5@UAeV=);HIH$OUzpJVMK0F@L&m+RO%V|^(vvn9}-A7P`t?fo_jsYXqXPsvA9fU z9~-rp%wywmeJe>B0Z)$iI-r%qJ_jxAb$H>ecXVShDIJ#Qg%^*LIC%9_h9i)7;F|~g zhA$;Sn3Km-vNu0L+sH|Enr>`s8?wPeSqB@4uSNGWBah^AA5=({*Up93qQx!e<;xE& z;mp0Geyty};x`%uNJ4=23y+6j_ms!g!t}>1;iC0nDfB6$(6Ig0i{D_wXP&IpX2lSY z$)~`A?g6(V=On;_eh1@{S2)({^6OBAxhQwm`KP6@DrEflohPN4lXyyDPN?RizkT`Y zt3+tSul8PYWKS0g40OZfy=&%7l|Zoa#@Cw+S8N{{G)YWDqo{H7%{k^%Vtw1%R(V)! z6WfP-bqf8!sI3IYYXztBEMz0t+Gw_f4}$t}5hl!d>v%0@If0fJOF+jO78?yGf7U@F zb;v7l#xj`>lC06-bkNfZnk@@G)G4F;-+U8U{`_a=%_^O7a#bq6Glnu1S<;Hbp*^%8 z8XMB2B!$djLtYk@WtlRuqwwpixA9^ZJ*29fybh?# z`Kyl0$e2dGJ|j&CX;Dr@i}ysu;Ng>8T1Wi7*i*bpJa&14Cl+@_&+ZqGUKGba4WF^Y zq$_J2+N$2H&Z!;h9_Hu$C{mE=x4I)WLYNZ9?@wuhPT1mh_?apY zdYcqk+N^!@(BTw_i+7_fB}VqSlMcc}M;;0vmp-w7`x2`_N9o7cGn<~LMY2eYFX0r* zI+@4$hQ&4p0!1^W2ItICv(-F(j$i4TJKN?okIp1c>>Tky0TwW2!S5c0j=LS4MG(fS z6~HTv0(Nl@#1EWdpE~V)h#~h)`x(d*P0ij8aPVvpz^|3)tO<62{+-4We#8gm=dIWM z{}F!(O@~qm;?ZRMLDm67oFB^PV^A#$38)r%nplvE0pTrKsA$pNzLDR3dn#-L^UwU> z-!Q-NnrcO*Pf@6$?L|#AAgM}x;pTNEP1#$}hukOvq3I4{ym@zo*xo$*=DNtmh9)Xi zgwV7mrps%*+U(gn>p)GTRo4cOPU>velBpB+>(@A}Ys}he?}#?A#^q6Gi|{rVA|`Wx=E@oF>C*?TBrW3_%Z-}l z4|CwmN`>~Xyp==k|91(C`fMEF zDcoifWROgDIrlH65+@*!^;n=~Y3Yf7hUPK1o>d0L9$Bnlrt|`HAjgGt6?p;P$&SU?byMxgBqw`FE?L>#qRk}ED2p*$D1$Tk5tz%|ouns!$!E$BE! zl3f(TS91XGEc6IjNO~)(wT~YvG!FY+(608trNZPqm4@k5!tG|~?5%t5w9tqHdeR3t zk&Xxdp6l31^fe!SyHBX+4RSRbfnQ-Argi#dKc19_37C|pU{e0$nsM01Q>*xnUNn?} zs}kjfo?x>QEdV!~(nOooQ6nr6nW7RUs2&)4m&A30vta5cbkFFkC(VmiMYtMaaK#+i zVOvheMqq}gjwwqGlsy_BQXm7Rp6`5L`cQX$L$vcPqj{IxLUGIC|^Ykl6yP)_|iu z)(5X)5L~?NyO*H8Z^4G~;(`M}>bP|^2&4C9(@tY6{Oj=}nAx_+POoHg#=sW%9ouCe zfT#TcI%o=D$eFOncEwNp_kzC@Fgo);#6sISo;1$x&a6~=_;%1M4pU}_MF^yTsWK3y zP?ka*J&nnwPODa*FX(%RT^MPVIr5UAZKMJH()#cvMZ@5XZmv?n_l-5Ki(rkA7(|U28UtW>W4fcdhWn$O?$C*12|8@aTDJH7!YhuPlXj>mpsvRgRjDUu}fC)-IHIy|L{W% z`PQ|5&&#%c1-nrQ-+>twL59WcP9kvN;Ld?Ox+SmON~7_l3w{fBv4~KjI`ae*zxghJukfQsYK{AZQMPBs}c;Hu}b%CRUQgr=3YizBCmnv%+(;^}q~JWj1{+y_mif1``sk+q!P%i0gx^mTT3~lbV>Fa&Og;&S{ z`w9#8cm>nU%oN%AJfmsVk3^7|X0&mUNno%@kvmims?zzKKCUnHWB}-9{_X|X2FJ?7 zm>bePu?^nJ)v;LO>C-Nlb|oe?!v#K`(6EyTcK(3lGQ0UP33+9!efDZGh7Er^0GbbC zO`imrz;{eE2;?B8`@^pbdIr!Ep7iSN-0U?B5ZwINy@glvn61nN+)4l!70h$2+m;cT zsm%6`9?@{>jvbJjZMpugmtQ7deHF!edakHQ6pC6LiAi@sC?NNLgw-ecUwx%WTr?!? zJtw=UR)ekaFyEibghYT8Cd4jjmo^+A!-XQenWA>PABst300-=7!CcEJ%JN*Lc~6h3 z*j+S+UBq2!XN-9RT6k~4)Q`u3g?)-oKzxbH02M}O8jhH#v?T}}T<&$u8=+9}lRtdN zyr$LxTQx|q0CN+G-pF5^c~0a}rc^#T`kYxIIpu1lNaS+!p%sx*$-3Q_`)EK3MPz{x zp@Vs|$z&Lw9@nO}`R#_@AqdW1fX`sWlMu?=N$OeLS7-@2b~5S~%#}^2I;pP*^0cYC zLD(u=DK);%sV=x>^dMpPgKnX9aR<8vBAK?%S{R`8;=qC#S6Tz}ryJeI;ko}piI&0#`MDAAk){^HytD~6_OPA;Tw}uGcQBxdyP?kFp~?5bXp+t2Kpy$ zG(bj+#W0mEYftdmMtZe=b?*oY!9C>_Wjb4F-rcz;wA>}pt4OGPNu}240|g9WSg6yy z>~!|IT)XV{ZrEd-9=|H)IOcX>L4Jue5A+(Px>~PL>>SrCOtYEn)lgcw+#rk`Ppf1; z*VQ4~?~^BF!4T3~M+c2&BV39my~A%a_KiSm#{uE;?g_VzX>42iX<1k*!RS)VQ--<1 z&jq7n4Gu#9aOj+zk6;%L{p7R;Uqm~Y9;%n4X+&Lb*KSBLqCm4Eg*=A0d}xQB2|;cPcP5q*+n^aS=q^ z(mqh@V87$N_Yjq;C;M^)UmaL7+s@ZhmKn3-d1e*5reI}uq2Eh@ZG=|!pi2%6pfc-V zO{;-yu3r|?`L$u?(+$^XD$2B#^tOQGc*(vc{e(fnD-S&(!Pm!LXy?cF6?PgH2-isMI;n%B z?sQLa1jh-prxlu$*H$VsCi0S>#Dq#2t{s(7i`|b@EwA7M`#!clG8%Y81U3kWX_213}-G!?$l`4)tNsN&IUjt=8 ztILBAGY#>@(@s{flftPDK44AzV98=j8KHB)&^90^Gt16*{eRSt|HJNKfzYp~#!8;3 zR1}0*t{XkiWTChGW3;=${BPBaMwz`#{=4tuP+{Ifhb0@1R&Mdof*MjO`Uo1eGh5GCQn zSeJJR#37#y$04M%j0~8-<&7n^spD}R8fKyNoeH6Ydupjy<=f&2D}YAjIDpfib!dA* zZCijVW%E&d#So9!pR?BpS!Am~gb+5d;@-LJPU$%L6?T6YeocoKsM9mQrcxP0J@c#x0qN_W{kz}lC)Rml{$9%K$u?Y(~POI z1S~88mwlnAL60YCx2#+0IMuI9$7KQFR~65#aKSHov9K8I@eyLs%7tqDrT(>S$eFsa2J5 zGaNF9mw@mFO9-m~O5U}{~AUwR@eO{pEy zc%K)4zy*TM9uSLwk+?k{#Mi5V?;_jZ&8|7Lzs7zK`!DDuDi|y9L-oj^GsbP`Y-alr zIe}e4Sw#xdn-Q6jOz`x~ZDoPQiYXmUdg`9L?z-!949YkL_KamQ7ZURfUJy4X1_U%e z&y&20e#$IZ{yF|1^A=Y6zHnHm6ck9Qx5v3I##K7 z7eQXSgf9Lfa?EDH9tsHGsx`r`RBCZD>HCvnAFTw@GT6`nU05D^m(m90d__2%xI2?s zp36O(PWzd=(WR8uC+E{)W~<4Pq4`?AJkE8AZ8oV-;&g1eP9>6tB7AXIzO03cV|RcK z_+>G9Fr-%6r;nI)rm=CKCfzn}C2SDk@&U`3Vn*Z^dDo;OY#xLtYw&31u_)9FI(QH4 zojXs2trx%?4_IqyKOZbRkHa0-vYVQY#_@YNAYuJ~e+M;mEpvn#XD@Rz5(AYdb-%00 z?J(Oi|NOJhJ_Bd~B%&u2gfzFdHX!6WkrP78H@QwU~a7$s2 z4)`TtAQ8O$GPiropIWzD}o`o z&Tv$NuhXnO;5v1nJoXfbPk~tU z@xx7VI#>O@;tj5reF_k;Crz6KyKOZh*sI6E9Df}@8Ay0BuEaG_GD08Ydr#rO+NHIf ziC5tz?N#eE;tb)6A)AkgF?1LVvP&Ba@gwDOl+0Ch*JW(I$~<%fK&mDalb58CO!K^= zDucTLE_5D#2EFJ{jP9jU$(wU5uaa6pagn0?)GI(6m)Cpc*#V{u7{n{9Uw@6h`f3G! zB-LW^3jovYtN&~TTJmuJ;{Zq8mb9+~E&xiOPhH*(fJ?PcRjj{-9PrFqA2;IXxfr%* zUqd>P&|z76?5U+L8CBT6ai0E1rvkvx&$3$=)KahOG?T8Pwd?9)ouOLNnzfaB!W1~t zYtvQg=mW2{d)0K*BkUfu@S#yr4(okpiZTcVuDB(a-WThOAz#+WoQifb@fBP-KP6O< zMDQHuJgwFbxFeEOY1J?p)C*h!gYi0zCa>2Yr&hb(CUky3L3bB}X1)Lvd9==$1=dfT z022WIc5nw+p9AyC^+OkMQ!74TkzN&~Zg9KpmVQSLx`X$G2+|^gpmC-uV;PM50ty~f@AU>(<7Et0Y9?3ypge;I9Md)00#Zdk? zmtgk33->ke;qdnVCo)8-eGZ;l11i5lw0BtP$<*CyRhP&m=CX=?bL}y1ZWj< zfUn(?a;k;gqtmJLul>;=5^?*kzH}#}!edGUv8%ZiIY(%<3Yfkme0NO%JcqJ+ee*{z zTs!}Wxlr_tFY}j=z5dy^xmf_1h%iPn4{QIgayQQwj$T*hqA>H@lX|5Jx)6ajkQKHfDPn2!7bpr` zgI6)1^>NI-%u|poJf}C2Kxu{fw8huT?GMpxucp8Z6nxc4TpFL!>*C3+x853;ZvC z_H6?)wX!dbB$T%z5KKm|N()hs{ZIl}^hm%>7lqxhKxIiX#~V#q=ER1)N|1b&ZgL`?_|{;0&>f z+dFQrpLoYhpMEHLiur5-usM)ph(sS*^>v+F-}mXP%&F&|RTSx|%n2tQmpJ#o-}~gA z2_9@<9^q)~xY&Ee1tD7$0-a{NwmS?`#NA zKl8|W12UzeoIvdJR1lX9NtAT1n-KGi&`tw{{*CBYRc0UY@@1C|FmFF1i^E+cm4|qv z0Qdi$1=jI6a<>fV0Fjh+WP97ovUt}=0sEI(mXLQki~}Z~Et`(DGj-4Ro-lYU9G%%L z9fLvJ@A+_t07&3XM1S)U67w89)zkBSOrMk_#EJ9zV5Q&T0iXf_kC>};m~3gkRW15Y z0S1?pSriP2(2M2B-gB_j#d&w^f93E`_k-$R89nitQB%~|wB?~)%xgcI-9IW)^6F#u z`boFH^v5Um)-E_B2Ma;T?I#zm5dEC_WC5P6jzbhb+|%W=F00iWB-t3yY3`P%Jl?6J zYz!{>zj_=;6QSm-cH-#fg=^|^0B`hCCL8LXsR)Ht4OP$!icWf`I#BQ8+bB|f0nbJ>_FhN2?#|oOW~^4WB0&gXGO;`Xl{bh8aJKQ8q7fm8YZbU zxM!I8v2(!Ia(!#39FGGJa#OVO|EOpLzFZ)myK>zRY~6D;=|9 z%qX_=we{J{v&`2rn!_Oo4o5DLH$r@x>zgUJiMc$A4;*$#eYi(~8C4$P+y@>4Tapsk zBrvNCM$XQI_9n|8jG3of0=untR*@wPPPcf4Ic&D<_JAG1A*!*e0*jr16ai}H_G1F) z;W*U!Iq zD&%+F*)MVgj5sOwCcSB0Dk{xM!%61eMuT}he!-xmc1{MSRLpl9t5RsE!NfPoz(${;P4 zK(gh5LIblh&tc)RE1)^WdMUQIz@8KfhGo;L&T#o4hYLE+hkbzUdSo)u*o<{C-)s0T zUxiuwmY-oq=XGa0==JesxonlJ5V!aQi&L z^q*9?D8amRazmn^d%^(JvnDB^n_L3AcK7@0bqA)_K(GLHFCnSiC_DGfUQ(kX3(uhe zQ({(G4I4ouogS1%<$-8ilhMQzVdhe1JHUb{km<&|jS^sWj~g2}F*!uGijK+WfKYo@ zVlWBs5)U3IGc262;J-L{28B~}DA#fF3YtdkAHk^|{wTKq zVerceO!ea+7Bz3$)sD^YCeg+H%>D)%QI-GHTPw2 zoFy2!ro_cCyo0m%&q}?;!OExkMP;;sSr7WpKP3#_;j)ScT|MpKf(W{pzvnOa6#0Nc zNZs%rbCx^?$$b3K$-IPRLYmz3P{SKbLKN(Q6|r^D1lbNvkPBNUgL89yGOYEoudP#= zu=a=ffbj-wCm6DXT^jf`*ut?$bGsf+Op#QCZgsno>*RljI?_q=CLTgu=3B{Up9N8a zd3>-z_jvKjSa-Tn5h>}s4a{BRIN9xCL{6TLR<-|&O%aIf<` z2ffEO{Sa=+LSN>;6r*SjF|&CWn%39nNE^nN$3Uf{cOgKHmRy7 ztg`b#w!^q!V=lj8zCqxU*jJxWMX&~}CYK#sgzYeVuo62gbiuzUxpBePHTUici%eAa zi9Zf}@=1-kYTn`FxeK($?%<4p*OWqK5@4HLSRQWEv~4h~oC2mGaYJLmJGKir_SloI zLpaDuYldQ$oo=~W!;SAN{d(G2H!wPP+{Ef!=_hy3gstzfTP}aU(fGJa9rj@t8ct}r z%zX{MK8(kB{76W`oS3^|mSA{Kk&8Uc+uM32v@GKTrB-8zqR7_?V;{4*f#MYka84Ej zPiO~WRYG8w18CUDvpPg`dqp~4KTp$B=BR_Cg)XfiRrk>7i-gjmCSfz2QiBMKkC=AE zgXe({(h4Gbo-v}qU5elGK6vmT!Q_K1lP4g)zG&ux zwI|bJAb+=jey!YN`%0qCs%Uj#eqwswFBLlkLQAm7KKHxXR%7cP@N;jCsj!p<9#c)L zOgwJfL78l<91z8D=JW&E6Pt6f*%O{g5ud307lZ`{D!zC~$2^JoC;z7=8$Ep)0j%tE zw>5r^g;S4U=jJdw_t$~wq+V}&^0&?rj9m|*KFa*&pm_BV=2#(~a+E<&#U_^b4Ew^B z+XanNkM!`>N}g@mrf(}V^8LNOlzf{E5n3nn?j zZ0dDL(N{sdIt`f0c6UHrxN`HfA6W;O(;1X@RxVO054=@)r|k-xMd>BeX$WKR=-OWb zu37l!Hh>Rwyi}5|11Ea`AURaznmk&x8>0{4#r`jmtuTEhv?~fr6XKZIAN9aiUPP9Z zMv~0OB}Fu;EP-ZR!Dn+=t7Oz5tRqN#*s&i^3sgCp2WPz z7J*zE@}XNf++(j@k<{(01LP#(foxUpCq>P>593gXzn89H{$csa+O?at`eIIP(iBP$ zSak3+m!?pTsi2*#!P17-*`JUa9T0wr_}y8HGdymFS1ja(=`NvFKmftjHJ}nf5lR{5 zPL=K5y~p?nE=Y<+R3foW(8cTGa@-$l3={086J}%dX2y1e>qn>By&eubPiXWheFYoFNi=G)s5(!$MQ_xVfr(EoUwT zmLpK+weo!s9=>@1ch* z^?I$gKv|m?7ewMh4os*Gqml7iLO~R{?nswHK?STc3i{fB6IMk@XK#rpsInz15RYDT zNm}QNQ#b6x4@}-t&|XMR?mTiPoPVbX{I6xn`yey41^t?dFMzSz=ci&8QU}XJDQ;jP zDBxcqLH`AanGn}kyZ4ECh|evbcgEHm?W>Q8L2om@b)8#YPTaBzqsPm~E^a=3IQJrM zG~#z4GRf>p*3wW(KWs9QKy$%XZa_+Nc1SGeBM_-YT!9!p?3dt^9*7W_Wn9xvQSd~s{o+}{qgLV53C1Zp z?J={XU-+FA9l@iH0e~HKDyde$z|rLGjLfL&%7Z-QvKT2$@|S1%Mo@1QDRd+OfkCJe zQVzGUMu*~hkxYc_y9rLEZbndjNX!a>Cla9x=D`_0TG3^F1=^kcb0eCY!eTu)%GF+0 z;Tnnsu3Amy3))c>VqSg!luJ()i@mD3+lMf~{HQC8zgA?17A1ui{=hM_^siNg7K^wd zHJkQ-5;?bzuAGtKfA`($s#q$EIw8tv-J}FPCv%MU8F@EQTYLilFzc=9T{}=Siep^S(yzXKTL#Ehfo@A6_2?*)VP$ai5WnUw6SK zhrljL?S1cfq)F{Ky4$~HJF{F-uvE+i9lEfNMEjpMSOgSIv|xB4g#_0FjMtB~o7~#K19Ci6 zqA(d~H0)bTf>VWc0kj=9FWetpS9@JZMO1MkED?afw@l_!A^~6J5vxTKQ9Nyl(v0lu zulMdfDMLFgQ~^{ve@2;p$Ki8Emc%uMq%I=L2*b?rhw*?9aX@2Cpsp(QO2V5*y7K-n zIkUP9)yqbQPlyKw<)B-Fs|g4EC*k>K%osjqWd4oSB(tRl1d!LNe9Pup_4WnJzbqP8 zNUTCv$ROq9ZK|}|1EP4fANGj>Kq8Z*(+Z5xi=`SZj25s;%%f0t;5MQODq4)<#@ZFL zppCcyD%rjdodfU5;>g-fJ#HFIhgA|g6@^xmgf(EO=AnI~bLYoi>L_tD@@_8t$U9=Y0 zBm+E6yaHvu;vNtUz*DT&b=lb2Wea+bdq|kbap1pQ7|tVb(uS`I{~WG?rB=Z-+8i7Y z*_bG2HRL?;i-yJZ^Rhxr_OYRk&)rW5DRY?QQ;)zR6ya&U9R;Q06OS#G(CSj@k$Szi z_jYtCvjIN*gueMH8vF7~l$0lpHA70>Iz$ua*NaAuZBN&1N34_|VLV4T~{hgPVQI|k06li2(KL{=I)G+E6c98-;=fS$f zpLXD>sV(N@{o&u|)VTWeqCQOQJ$I3N9nYAUS0!nhTc4LQ@tQlsr_{wgI}*arKVMn_ z7$NNS33(b9DMsqN#6%WJ1Mz7OR5oZ@8T!C~e1LQHyZs;n!tME`yiib)^N!4kgza7h z3ojvKN6aMVi)P()QJPe!xUti&SYL5)cD{bkd1?CrTk>xL#vM-1S^&$fd@fv(fUbTg*zq-yQnMdxO4>Y*Xw z$|q6}{JX=QPE??fU;I!7%BCJ{1v-&>5Ii)*Jc#0Tf+rLTjS6|jjKCz~B7qo2L|p{) zdPU+1YIs1WW6wp-|0Uux|6T%D|cx`u~O9(EnhsOR1pqjCy15X%f=IvB4t;GLvv6*ucnUM-7f{qHbJnxDh?^A zoOASCnSb`Mi6@nIc{e|@abx_APZG)GKbe<7TNNruy9mc1v^D@Vy%dO6!NQS9hV%;S zbhFwtem1Qwr~x}_6uE~Dq`XUCd6n-10S^J`N*Z0={W?M*B|{3n$RYqDW$w*9jgC*K zpl(fHvP3|5BaKMLOnBRu~1` zhL*qnI`dOV@$Z(xJpGO1s+bn=QM)mplsRRI-1>~vDviKg?B{Wrp)1MNp;rrt!xK{+ zE|({fa5)OIN@E1&$ZdJbm=58!V1GhKHRm5Dc_2P2GlmMm@8wkXR0t>Y!CTC7*a3?l zdz8oR-E{mhboWfNT$Rr7B<6mD%rN-ajBCz6W^T00TXFH#GTHapwy_hxgLJ z4L4p@p}@Hmc3*L6<@q1Z93WM&!^H7%s8w<7X>|!YixsVk3X@cJTqRsY$5nQ6tz;U1 za!P>d1fR(aVban&M(b+dn7!wgIsCEf$^z8Qymi8W1m<3T=!ipeQFbS>x_Ql|s0NZo zHD)V%oAK!0ej8an{+M~ACW*n0y@s*{P^`+=+m$>>!Y!U}Qrf6ECyXLP0+0Y{aRQ~K zAzecoR}6eLAatkd4*%0~ZWlfy5^!h4d=I&J*zx^8!FTtcHE8iRwPxu0-2Z zbl{=DJ+WX1$a-5x2t)-K+|}}Cogdj`7ra|%Yq_(aaQId*F!%%isRMn)SdM_WbsVc& zc$ZY{jh#^doVjbXq5e%>rPGaNIa1PE@KYkbuP!lg`?=bI9!i8tNO(?5&D4Rd9fuhsG>|laZsm_|fpdj1>nCX1t!s#Y3-Z@2Rc>JF^4W0k~k%y1UIdn8zW7E#B{==jRhrMaUhOt8P#wI zBol(YU0y>rCih8WS!qT+=!ehw>P>&*(qVDq0?5>8=C9jpa+)s30mI|U2?W$X(K~hK z&Z-Zc%$$ZnX=sfik&6`(-{KpiBe7)zaRrZh?WcAJOfl zLqSlR4u#P?N&oh4fu3}&@AlD=h$5nj#+J*f$9mx#ovZ#tr%VkaBzf#$eIKAaz=p75 zC&Z4$%ygKYUW^2(RcWH3P6VZtS*S=A^sJfe<@^f#Jnkl_VB0(dtUg$(a|7u1UOnvw z*aUeP-w)(sU=kBS9Zpfh=4UupV}Hh)Ob6;fw!a2<1=rbXj(K4J8-B)0FW?lQrC?bk zLIjQ-t!fkgE$wP^qS%b5u-!rHqR2_3j(?ky3U>S(*yiaW*x5IFjpYLKW=822v zX05+Isw&njAOc4kOSwo)H#En`Q}aFJ{im1J32jPdHP7rZVVyJ?w0KUqMC9=6Ak69l zHsMuCy+gs{N`S&&&o{_`mP2X+ZC(-*4X(_@{N%Qydae)(0s@^*?9of)3XMRAa{(bu zNkGe0;}+0zDVOPwp4%_3oR${u-@m*nmdWB?D4z5_iX@3{udT1DcY+cUAb8CEI;~-F zb8)ZH(34S701S`?;+sw08T~qFD=UhFL`e}^W>;uR<(rhg(V8ANjBLwp9=PHZAE;17 zcHJW5@Bu0QAaI8x!nF&Icqt(?xjn7rA-lUK?>C^fkX~? zB8Z~8HNN#dj^W|Do~g;=hPpo9Zkax3vpG+< zos}896NhteOd>f2A4Z&DMS+di?*j~IG@X)o|8;scuO+OwHf#|Wkz5o=Gae!vx2 zydp%Dn$Mu445JJE0xjiRINiv+^2j4-;Dr~MM<09;_5I=(=&iSOg#z=77hk+5pP!lW z-?Sd|uDh0A@pp_4XP!Mwlar(FnbTvk6v7gL4LI%lTn}Y3nMO8~t!6;7#d{O`cj7zg zHmI|;TB`e!=II5r_HYvrIs2%7%^6{1HJ0&+L5Ycv46ofThDf~;2HjYw5*Y7c62el0 zX{J7})*t<#&rB4DouG{U3_jad{J=rG70f4tH}-O%3wnqXZn+uUjqW^M;w3o0lZdU& zT@1TV=72&_=Y>K5(IpWrPk8{eX%0~mW_eNNWs@7FuRbCllE_&x3^v*l0diWsK zT;?dxD=D31m9$?_RCw(C3g6~paut!;MpyN5=9%=KG4a5qJwiNn+1`*T=n}LGDQ6lY z%U7?wVgZ(tappPnTq(_*uF-)@0a;s?X6!jZCb*Rs%b#447oi#U184V6B@-{ji zLp~@WF`mgVb%-07-|K03`*>Ll^IT&U7VHf$P62Z-W9AYJtvR(F>EVpI?X!pe;iQ*{ zu{9)SnE2s<&Qh$y)5qV14PUVv8&1Z5qjthtPlqld={lnHicAO5!ZVG~5M>;HVPQ&K9@5?Wl zSIf#Gh<++5R|XY}s+yZ`6M2dZ6VPX5VQCuKx(!9SU)IBH@9p)Y>zQQ)`?spWUe;>$ zeUu%XtxMlKpIL%qHc;5JF`F2EZaJNShz5zwMFCBZ2q0olHXdW&KJ1Klo92T=^WnEK#Vga2c182M!@0kZ-_KEc3jre^^Gj%*5zB9bA%`@o_2{A-IEn};LsJ@3=*v6FP|%@D z>)ra?W{x7(4}bs-De5kGn422LUv~l9N*j3T!VJ-j5|(zJYJOQDzWB>un76i{etP~}V&?w0NmzSYblRLn~XWI)!N7W-r*q;vv%Hwt%< z)H`tN`AH+LQ`yW2?=!f;3I3eZBK*hUzeRe0aVwZQueD;i6D;crpwPRc9mn96V}3~vEVMHhU-;8Xo+mTwx`1>EnA2?^e6TMklG5>RBqU8CN_tc{JpaQF zi4Q+S1|(zt_D^WAK)otZNrf&2;zOf{glhy^yG!z1Ln^@23fv)0I7QjClvSWND!*a= zi%#xgkZ04Jhn zdZi(KMH^C}T_ErTJy=7KzN^|@ zQ0yu@W$l56gbP^qtMDBY2@5W%;QCktZoA}GlEX@JlGw=cQ#w=>ZQU+AR?h^toKi&# z@9#q!kc9bK92cn+U70SKYFkN6%kzGSch&@-PcnS8fcdEaH`m=sk%E)v(2o_QHc1%x zLEpi|d%B=l(-q;UP&6qviv5&KdRwJpk46{AA}OL4alGS00K z1SPBVa5p%}b()`WUu>`ge|N98m>vdzV7a}S04;XaiK;JL|E_#n~5QM7v z#dBc7e<6;jGNw`xGpb?XKEF?l3btK~1sZb2#jd~mt^FpOGU#W{=9qp?p!#?~#UrGY z*i_M3bt~P=lic8JFQv1MYN2tCj?EbJoL49n`7(+@#aPn=B>gh%7oRgu zg8KO!b(Xm+8H$Ed#6}?8;9j|U_30PKcN`bt$|RiNy7j@qf%R%Id*g|-wB2fl#3|65 z-i&D@BC|lDmGHYjy@G2np2c}gM8m9>uag9%M$y$yzERvQvP3*mE$ILl>IrUAspba+ zY7H11Hot>A*A{TcDYm4T1uGhB*uK-LEO-vPo<+F8%Za1z%Fk)-+cVw*?S|RX?CR3$$yUI^o)Z9Gq*kkC% z(@tX+KlYe5o4q5O{ZIO`G49~*0b3ghEs=U88iqOLX&})bax;?NYk^jG+)D$#{2vuP9?A!c*40lnW3SJ(Q8bwk(Z!^058<5jtDZJp)7K zXs&xTbM&9pkic?877^m{KHsq6rknDgbGEHqx#yv4mWP?Qktxf36-FENbdWa6Bg`iU zc+>-KjWs&Vygqf;}u370v57SYv|5 zJGVxVg8JLLy}hreQupO@S^z#4i?^1P0Y!}N9_yjqzzgSMu8Au>f+XLahbb^nks9`- zFQ0)1cjXDMP~cFFA64Wk`I%M2^o`2irCG>Kb1VAQ&2wYt4~nZ83<)*M#yX5uvJiAz zxQeDP8!!8z#AZHCA|jrMp7u7Mc??qJrJSp7y6L7pv^lS$HKjc=V?rrWE%AV>Z$X03GH-Yi1QY2RsEAj5Fcla1g{7+1eO{ zAI+HZlki}-hW}y%B=&mnIp__;XR!4^D+e=|VjIIOrjr}d*yvEltl*p3w%JsZf}t}` zk069PphFxh60`Bbw+TJM^mEWJnaomHpm`SUV9xpi*quFmk0h0$k%=7~!tjtl$1&%L za_T-W2KTv3UYy}ng6EgZ%|}a@l$o#A7Gd%9nRN__oS({e0(0=VpYfF~56K79n zZ!&=d5@tdIAt4Yl*dbwt74|AnD6@=0TRMPV+Cm3~doSfecXar_-;rcHtoHXORgy}! zVtwPC&-*;ho*CWP(eFeA;Lr$z5gQ)25hklcbuc1?QWBzm>pR@a#`|#_fBr}B&ms=~ z{rl4(f_Gdlr%+ zE?-VldLu8PiW}r|WLi%U;e?KhF$X%az#mpboYMjdC1E^BaEYE?OScEo7{Bn5DC8$V zqlCiv%>yJTib<4k=ap9nIT8`A=Zgd!LdfMy`COfz7gdJg%}uLG0wzc(cwVT7_l_vT zju`ufy%LzY%xVW_=Hosjj{SWF3|0i@x{` zPrtR6lq%>mUVr3D=Iqe^2j5r=Nfq~uHy%Bl`17#JsGpJL$oTe58*J|6ybh*OGN{;5?%fYv&Q40og(6uRtwktSqax%lQT!PwdOhN_0%i`1m}~Nffnr zFUl}|f3?|R##H8(;`T2eoy%!8bok-Rc@l3xjovpz=MI>8KxwTnk3d#y15nsAkUx>r4kCbFM|}5*)dlj;)$QhD$Qk3OAv z0zB`@SIeq-x9z}~vh$A4d1!1a-P<)4@S(QE1HHnf|n{ZN&6fB6Uyy7faBUID?{_*hjJ_;Jk1Im%{46Z-Jr zY8&-h@X3v>!a5HV3EReS`NV0t489c@B8K_Cv8yLNr`3@mns%a|f#{Lt;B|SU`_3ay z_SHV9UXNnTksoPsv&F;}>pE5q7cI6Tkh{_t%pmdiBqqyDrGQKY23Q zFU@ZS0JWU!Tf5AKt+vBmz7k@p7fIE|p?l z_OH(n$<^&sIyY+`BC(7k*A^+Uz zJ-UdlXWAU*^MW+chSKg<4Oh}4;ekK_^K!Y*M4U>!5s$_DlPI5Ievl(}|Jna8pOOpW zd?k(ezZT3dZymMs;aD3cFC~Pzb@@E0IP1afZWs=M1gF@5f= z3m;MI1hO{2KujjOK)13L4z?5Q((7cUVXZMQ!|6z=`m*EJ)O0`q)d@=3#mAv2{zZei z0b4|~)f`xO9K+xY1oy5n)E!rQ@P^c58=RTcU&GITgN*`gL>>R&c0&-{NI#l2gE{D3 z#=Q}Vm@n|S@s7wvSNEeeKN+&(q3^^s*Bm;Ogpkvk&ofsi5?|miOCE&(4DtBZWD+S- zsprrn=CfP#lJa>gI5H(~@j3b3MOk}S3m5E@Gwzcs3abWS0(N+HL0LQG-D)E!5 zm3K2!d!bAz72MooU!e2F({J6M#EL_JTfKAl|9vmUcZjnuBXo7`Bc2XOUi3mJa0xqv zYCgD92V@j4l9L;oqk-myj|F7aPd_XmUgV}l2O11`23*M39BZ>K_A~4@ZzRt-wHqDp z@BgUVGBdz~YaALmLM}aZ194%0?Aj;ZSdGu_njb#6kJ)v)7k$4+Zln8Y3!0Z-SA?TQ zp}(rqYu$L%!nqioU+{vz>MuMA@BdMl;^ zeb0q}Z(^$qY%0p$SM9hH^T4sFUt|2CAv$JD3OM<}7874?XyLJ+w7vk4<*+jnB+jIW zvr#wmq^2zKrM;M$!WnTq)uWxde*-C%)2lA&Kdc!#cP1Vao^#$59rIA3a8ChA%FG$b zsxsCAfINOABz;4mevlM!^MkEQE(x=)Vn>fmZ;-?GKhI={E4#lG&bjMgCoCu(*>TMQ z>JH{#Kd8_!`_=XE=jZSK^w9{69Sc%FV6H~IFDJe7;Devuy(4nw2H^aVa(s)I`kDVJ zm{-BDi#KAHg85Wae6Jm9L(hm5S~dD>4oso*%l`styyjuRu<~&r39b^4S_8F$ z-Hmtx?j62+9#{f4cYt+*dDez=0=GiLI^zC4dxM*KqX!fzaYRwKe_;Na`3rkx;jQph z$Ck8SWEcx6oa6hJK^vGW(T(rFzw?}PPNFXvv^MWQz8s^4mL7SfHMnG!vCS}ZF?ueM z*x1pL$Ud+D&Az*ccDr>Eu}2(PTR`SEjaWzuj6#mmstc6?wV#mNfSlBVaHYY6Q;TEd zoKv@>9YaG09)IFc*|Bi*)=q(j8aRGsSj|s|4&E`DluGF-$1f*7Pi+ie6S^*zkeq!_ z8~{L6`}JCnsi)f2?~6Bbp^XxkKUaxa6Lx&M05X33sSh{BVz6 z(I$tAPHk=Eu8!vtNcAN;+16%k_n7%Gu`CN0J$iMp5|%?xn=AHVaa1Q%RDZxiDNk1& z7+@;^EF@z*xvPhDbc>dYaQ4V%kaAoJgUy4!;#YZnxvXpmEPk^K2J@|K;1`b*pH-`G zwmApX?W+E)Uk?&FK?v9K=w%_($s9%+=3{u=1%<7Z_hmBO1!;RwT$nzyDz{n1q^L#0 zH6%Oej_Pnvgsu!)F3pSVnJ5>oOE6*L$9u&_A?VJMT{RhTaX_8cMzpyHfyv%2>yUYT zFV8N_L8^7@j;&prX3j;+neWM%mw<0XXtjYvTOh1dv`Jz8Lm#^$CP#~7P~`txvLA^9CkX20cm z;>`a3+Ncg)%v?F8>)4ngC&!b9I=JP2!fh%}^OzQQ?QrHEfP)`a8apQ?8EmM{098aMoMs#6BAM|4JK+~9m`mO z2`p^Aj30$1uKyqK?cek)aaLbn?IrRYF8COo&zOqI1JaJvTW(`lT<(>}(nox{j&`XZ zFr#Xq3J*y9;y@&98FYY(i2WtP%NUAQ;)dGNy*)jM92~s446vXS6!<6@oRTnqFBGmQ zzg1;!GrOr4Cr3eB?Nl3Sz#x8;l@uaQ3+1+R6qMP)^^+D84cwu25~j(S+m3c*Vn6dq zTrO$5)a~*61!jvlBC%P~TOq#DECI4(^NFCqVwFavHX9Ra*^u-{*M(4T2ej7z5&6*T z^=|tY6ay$iWP%1MNFa1EhY9!b<8R#%nrQ~Rp&cm4rzk-$3m0LOtd(Hn zU5rG4os`p{J_6PD7?26U{k!hLN@aaIxb>ng5cBTbvYPpQHz?YHxeB(585-TsOg3U& z5q{#T+olfRbX95un1pUX$C%Mj<@PG`qpdwXJy0k||E$=dWqc^Ec9}(hixOF#lbM(1 zoVWXVHwf+6D0#q0E40@G`FDe$F2e#s`FUAn_(p+{i_|@x=4Sn88tnaMN<4WYP z7%Dl9eza^^;-_Bb1CogCxclyFQ>g8i@4N#ckQ+|J3k{^b7Mg7J^5Q)3+!xnR0=}5w zo0}FMRARsrXd%%D_P7N2Ylv=G_gp8Bb2#dyfHAN=J}vdPfM5vY7D(+x8Z}3Q)JB78 z)S7+>J&2p3TmSrLV?|(z1vpAI9gE0*)lJbtXm&|?94=z`ppb=(P%H2XQ+%%=p*jz+0fnnWZTMBi+p^Ik{dpAYy5F0@1wXBM=F(;+CV1L*clW$#WV#oXxrPlKN{V#U`#$F5> znjN(Va|#!LBAs`joy_*b_uaP-OeB{l=8Fs}m{x>|E@Qh;Af_lj%_SbLs=6{TD4&eW zh{paK~J3$GU_&{eHFqlolo2nOecZ+4z zwi9d8z$gMlb#gaLLdA=(IDYnHzZtpvwtkR_DPMD4_ayG5GUy(@K>VeVph%%%JPEYD zV&S8l!z-`6!u%Pt%me9wkon7Ja=DKnI(mX8F(>FD z94@zllmej0UMC#ypR*}i5Ddj&1*=d`!1%5&{fPnkPmRTBk1#4a#f!IyNU9}k~ z0DQ{#_Vp3>gM+)Q2mQ0Jc4mg)*8T;Lld!Z4U1jK@tUdnn4}XUq-LT<7v}@|r{Uake z<|thE3gmGQu>U-!@Wr)^LADo!x#Zbgu1P-AJWHs4!r*plDNdbhAeLysH=dhlyj0h6 z8K<0~K@fRD^jIO+o;pZO?{rV=*QfLYQ<*=P>@Gq~PA2XX+k^qNNnj5h7Wp-qxDj5o(>p(U4j05wc`W(Tjor1?n;#h4I zU7h;5%{oxkyN!JVXqi?OR~nUZ#t!rP0Ax@K+X}-0*P^`Y!mSovt&`Qh*^@2fZ*9Cg&&dbhY=xf$S(ki zX~feR`5d*sg|@f)?Nq2k$y`>@$3!Kb$w}xchNQkrm#nQNSD!kJ_6!Ux8WOgR>=@;U zrSz<`d)#}8G?0B@`JoQt+Wy+VdWls>6NBpc@rHb0ry~AdES)p)J6c-5r;Uy7@TFu5;PGLM37qko+ zRc7gtJfZDMb7cx%yhAzhHs1z(g|oHZIa91E`}8?NdCRoPR+VjJ`rmuB%(b94iCG2+ zzCfIC^OYQLMJ88p2q3nn00xd$Z+_rzO zvS{nR6b=QLc$K7HK;f`KFpKhpQ^S_6)?ujse6$DV&-O53LR0&AB=O}lKvGZbcvI26SxPSOrWR79_+d z|49W%i4su@2~Y{Vl`L;I!EKaEpyF9S^;jGR?|JiU8Y1m1zao1Vun|1%v*I^{&;e~F z)ZE%9SLCR0|D1qYMheU#uDZq2wSG2m4JD&DJTjLApF8(~tC=N4U+q!UQxK{tmzyUN zQAlVP6LPzmGCNINmq&7A0mK||m>knKQmV#IWC5fT67daZ4(f{=?ks&&;7f zQXu0byL1D)9$sR~%`a$ZEpUA%r!t@BjsKJjBmu0?o5<*7Ugtln8)p?Xz-LY=V?Cq5 zy)?dl#9vw^9(hpS3T~he?C^7>fpr5|q@~We-%QE_=A>| zkd7%a*TLNVFUfxD$X}i=LrIXEx&IFbCj8`ZhTGXV(FO$t<%AXl=6Id742&IITG+g% zfgA50O=LyDVF?7oY_+VJ8WUXi&XdbUdV1wUd;F-kU`*>f^=an4$)<~+IuqCbHr#*K z+XPvw!Q+17Xl>CVa_gx}PgK#>eYIcp#*A6uNzXiz7>)>_XduZfEJkgngwm+V^b1z( z9Mtl4dRms>fPPXatk35|%%?-ijgLI?ry-|4qw;F_D*Q>9l57qGgQpk1hJaQT^H$v7fwNZN_N<+CcQy9(xgjjNc+rA0l`P zwNz}@$kTQtw4L#vY?Rpo&%^Gsu?=2>UBn-2dQ=%2Vm>9d4l~XHH({&&22(sCuVd-i z=cQ?-jGNxRWrf?EOI-ip9G*@z^W-6B3%ZF}{AhnadaJ+xB)Wr{P5eE7<%i6}fWPoD zZ~rzqm`04LBLG}ITCG6ri)S50M`A&@PT~@)GE+Ae4uF))BIYO(6<5~u&rhs3EtPf5uGr z%lMLfLYQkG62{u^lf=dSjH34~3*%jjp=I{9jGuq430-=rDvO8u7i9!Ds5S!@jkjUtp;VW?rpd>WN^aNEBvJ;dJ8O5OzS=`+_rX zjF00amp#$!Np8d`@OP+-oNkKYyD{z!y@r-C*Pope0^r>StW&@-BE0YTr?1KY zy>u=FSTUF|7E(XYcsA@T^Nixsg=@39n`Vhkyty}582OKWw10o&j!${+Id?Wo41_{Aq?EPNgy|E18%PQRhdd%h`{W;zRgAnY4GDPRk9bY zV6NTE&X?>h7OVNxvB%~E6kzs)*Y&RY%_^aRTJ^!^_puNv`oG$97;($PiL4hAGA{Em z_-Yyfwh9Z1+L=EZ4VcyqfRnIL_XYmw|L?%>KSzu$GLlgNUxz&2OT@d>LZ?*MSGcuO z*;Xzmn4kPH6k_gz#mWLi^)7Y>O9K5#C*UG6IJI6g!d;IQ^`pgJb=D$4+o)Nw#D8O- zJ8cHU1IMU2O`TvD2QLyhetfoYTHt8}0(Cqk9=4V{2_@FE(q_%0tekdi#=K6)rUGpe zmR8=<4)VF!Y9BTNCnnqKTZn(8vx(_oW~e|;@rJW%Cn0xrzD!wPkr$H&roJVS}udX~c+{tjq?U5<&#r{W)<-CWiY zep@#Mf2waM^kKtfY=uZR)`GtQl;$)rdc9P~ehE}Rnio!O|K+nE5I}%-0;`yP*ewgR zijqBj8JXQKAw?e0)k-DkwoED0MpydHuVKb})K=ySBtjt+%Q`^Bn`a6Lgkla~#N#|v zC1swzES$Gw!69O*J&u(VFAcxOQ#$P03-Yl#;c#Lt7@DgW%bXE(3Bydi^D3F~}$)0uUJl=0VS0ux9d==NXL_n(D!$z)zW9&8Wp68!GZ<-Uh8Ek!%hh1n}G`chr>G%?S z{lp*-2e3v~PV-w$fB&^Z1=|9ZPu4lGA>1SAL1qZy-yZMoejk0=%Us#beDF}eZ6oWLJgy0N^X3d@q;X_B5RVwUq7d`aQ zL!SY+&5s!Aop-KXOI&)XC!I$98C9W*d)2wL{OlxvJU|;)E-CYz9tUWn+FW+QmN4iX zlQBTOX^Lc|z#Kk!@YMqc(oBFjyLMI=q54A!Ev-37J#+K&7ayI>1Lc;U6OYV$LgAV^ zWR_S*rZNWv(XJ?H-Nw5*r0BT7w_t`vW}mr`-MW*|ei~}50}yDkZTjYndEJpWE){k? z>;|#Ei8ZWHqaK?i$E84a=f3K+7ZWpUCvE_GynAswvX|g6xf1##CMJ%9Mj34kP!i^o zvfM^>(`M_9Kf{A^%*NMW-?y*so{8V&*Uy`mc(pUnT#g=L4(LsQ{zqcF7>UV}%F<)d z8v1J2EnFCXo%r2^{f6MFkDUgsBVKT84eJ@yndor#QJ-TvRQD)2q-t&$n_c0J9E+_J z77lDF$Md!QZ=}vNm>%FgXR~fFs~E2brnLe5s{16GonLe`T~wA##Nfb?Gz>KnB5XbH zFBVTEWo8X0%~2asJ}=Z8L@}XWeQ#Kqu6m&1WG^Kb2wU2NE;`D$dwot(?clxlZrsSZ z>MDGQ$fQ0jPK(0c0|(AGOxx0D9~`uC1zf_vCQ@2EJ+BMtL}ty(UI4?;KRpuD#HL6Vg!%3BEa-UgY9-6{@r0lw2 zy-V66wvC=)7De;W?1#MIme)~RVwRXaufq9NkZnI zoc$9az5cy4&~$R*&tH=7Qsj9Q#*&aCDL>g=P?CJ9t~%JQ4pA` z_8nIdSp(3BvhjD|sHzF6o{uhO&cC??6lwg{{tUpq5(TIF-9P^#hX@Ly0)t!{v+zLv z1cCyv>eQ>)C#s6tfi_C1;RVY-ENMpf%?Bnu`jT6(b=`8IP)}cShp+Y-ZWUH7Cne5>JM|f5Y|!$n^+8*tj%B(blG6S2<#I7vwP=7(4;U^fH*(PeE;L* zNQSsos%(`hWkE3F18g6!01J;x*;Yv3@Qmg{Sn%_JZQ{yFw@kWs(zBCZoAlF3znJu1 z{T4OBkWCoLcytCK>$s& zu9N1))iLklc8qMl18VcR0U&k#JO~CcL|aaPbO=wuql{KzT$?t@VMJpWS4hUwIt*P0 z_`5I=Rd#yj2k|TL-9&c4udLnq_~RE{~E+SBlH?+SUD6M3F#3w<(k&12pnz?n#Mj zx=CT4RfIQyX$^imtVCkD6Ms=aDaLOgpic6Dolgs}^Vw~h-b=%PdZz%@FN97a2(v(i z^qedq$kk-%?GhZx0Wj`A1-nouFvCFWW>*i(BH^w<9kC0?sagFWukqDO3poB|bEL0& zEO2-evAo3GX>yySTWtE67_L3A9xY&wFUniytnI=ur_L2qA2Li`9D%r~W7!N-tXgG+ zAAE4rP3VOeT*V@~iH-Sj++ShNLT@txvQJ=&s|31EhECs+Mm%Y5?JOG&=yBt~!p_M2 z0WDBum}aa_E@R^4F!pEMUt#a=B2vlZs#NMHiA0pS0s@#ST+idAjkSy8_}OtGYBqqu z_Np0iH3Jzo`Dxg)Z+eaJwh4S-?sTVP+H@f;0z)p|}MBNWiJArUal$mH@;l&rDX~1K%&S%a@{nE4`0aP?8+Hou;w{SBY zvr8!Qnl4?+)d{*5m8B@@j_kbpPzedB(t-Wkd3op?MPv@!^?1dcSS7=gB7u`T#pUz< z*rh55K%zn~%ptPu`3Ptmu%MubqA zc?v&F=={>Z^7+62{qK+t!nhf;3Kc+RHp~3LjJB2jRw(@SuYYA;gKE=dKgn&%qkYg{ z+QeK&>=_+BvS2})Iq=im#sd57W_b2;_Sr7x0AR>**6|u!EWkEE3k?&@v{hj%j2L0M zvcaK;sSF_&z;^+Mu;UDO(E4g%Ch*yTV}TD0V4NEVtT|jhc7hr;$L4v#0S4PFf;YwG z8BhJ3#?YEy{Nf@=Yu~<*Fx7sC=4pDDgAyp6Up1hMl_*Q)!ev0$JbGr<;DvUXcG~JR z@IJ(r3@Bgl*~`j+qJ&=X0jZE(+15J6Z|k!;RH0za-@anLwcR{-W$mfwpTGEG;?`Te z`8*V#p^%Kau`<}s653E9R;2DJEXt$bRnA>t;M+vjRhL5fci#S$y;`78S7qm%ho%$q z;fv;*;QZ*Ot}m={D&rcDCV8XR5K=hAj+V(@L%ZB5vb&f<7?@|Zacwe5yjELSBJ_VM zqV+Y3_)Ax&Yv=2)|L}(pBJ_dw^*Cx7TcIF}TJ8g`Gt6Lk=A`r4P~jj<(VeL80?rU{ zRK@NDzRiGE!6+v-NW=aciZu`zKnyURfU{Q>?6`J3HmhghV7~z{HBR5rGzHB+VTbUZ zLUmEw01Ojf+dLeY;P?>#)3{2BW-3y-Ie@+~k0 zO3Aepq#*!pK^L`qSA~Gzs%`$^ur8(Z>r)R3{E$l1?tqY4ToxERe1I0^MoDRo0 zYF@y*%WLis2SiavMIa}8Ny!D#5LDy<%s^_^Aqp@+y4n@r|Ney+k~iP%gUX~W$rFp6 zIwa)E^gye-wBwl!vopz?paox{Vu7F=R#nLW>g&Lc;*dHF`#w&F^isoP*ORe#8bnKY5M z@Y^Tifd1i{OdI?fJMg6`)FO1tgfxq=+^dB8A0aXVaR{Ha>-WJlO&MBRc$&t*vL^OI ztEbM2Ti0R0(maz2W4p=5;jokV65(?J=YzHQY;TjjlXz%@-KB|hQ1Q6itsT3zdsxEiJtn zC2$%`Vnt%*gsmcN@4WNQ>nh+vRw^SM9JO`Os51@2CgFnqn`}Y99!%jh%gJ73T-2Wj zRoBgvwgI6rF0~z-bPo_?KhC;kHXXtnR=>;`Z~=KR>9NN= zICjBsJI80G@YEWP%GeZ~eUq|b;$ zUA#2UiDE8mRn?;GHdZw4s-!Z&eAuc?WzE2rY04xA`7WP>Zxw~3GPE;noV`BH(~HyV zX4Pabys&E*dE0GpjgkAc*M8T5z!CFQQlVD^%mOe63(SHrW^#L+Yl;E^3BR-b!njZ; zjEQud;!NUKk!ZLhx+RP*eR4EtG8HdcX@}_Av}7Bkm*ai( zV?h`M&16J89;A~7J`@T$bVpYuwxG|**Kq9{<~yrKb5F7jE;tV2zDKq-g1CAOt?mNq zAvkUbEd)o5)gxIa9E---Q-b?IP2bsk4%bV@o$#1-`05G3I0raztcAewARHj}W;cy~ z({0m@YmWB(`q#JJhTePcx4*T4&ve6N5cA4Qppx;SNZ6vCeO3{Ov%1!dsBW_Dm-Gt6L3}Y^n(YZG3u+^XrhtJjc zM$KyTC_46VbnwYoR|5D|W$4cjLEn8~LNe|yBX_c8JM_o|s^@{C&k5o%LD1~afM_?5N#ZI`PeP6x`twPgS0DXGV z6@%$<_hb-EFYcSH2S(@m^yycVoe9H?I7Y7DWjv4oJA{Kh_%rd9Ke_ng!u15UiN+$2 zJL~2%Xlz@cjSF8qzAgCw2Z;?&KYh_fIF89=0O$i?84ZkB32J|J5|eB9w-Q&?)}sha zxfP4Als6tb_C;yK(W9T0HyuCDyp@pV{j`?nNg$^VQ<=xm^rR%y3L2m87}sIWD;&xk zGsC^0gA%DH%*l(l4;9L_A=6r|TW(9;vprj>gn`z{!DP5n(rim+Bl%42yN-6Y< zw1S;34#0zaLZja;RniVn+}iAe2@763PpO#1friHYK>bWW;4OpdimTD<$LF67YUqR- zVr{U7_zBWeAs3uFj-DJ!-0;j9@J_syPh3S04i3U7%y}8UPQ}Y^-@K%SBnH~ei=Q}} z62L4{?C^bqgQ(^r#o2A^=Rve*6uOq3duauZ3s%j1nFSrRH2RSRI3{eV7p~;j`zCde z9ag@Dt{HaEaDw0mYlO~qlMPZ7pW~jHV?bcF@O`m(0GJ#^9En#>>60;DAe9c#iL4%d zub;V+S&UQ3V|{&`PKhttX{8MUb3EjpCiF*Jd96T3;S-~Ks%U?0ve7Iw_7nwj&cIxc zE|Vl4VN&S)TooBlts<_GXLg>y&LeY+U5hrJ)yww+47nr=McTvw|G}`|`go}mu=lv- zRc6OY*$)YwKMayO4M<2fCT%1fe6F*cx-kh7r+r?$GvwIky&22-B2HDL=IYEa2Oy;o z4`U$}9v5YCny8jm+0s5lX~NS>0*9qD|xqM2)x% zXb87C26+w-Ogiu^b}OHlTOD8)>cqNAHzno+%+;w3`bg`%S6_ej&b-9LPaS>q`R|)7 zjuEpPBK39Mh=x@;A&H#cTLJr#4eC8KKd)!N8Kr;ega2M0}A=e)I>Q=lrq@7%b0jxP~A>&)fu zv}4KUEzIGxw%ser3cW#?^ByQCl$1s-&}0Xu`-#Ec3sz6ht0is`NI}m#gS58IwVSo+ zEHhkwvGzB#&=8(IlvN9~8lEEFJ%mbOWhfrkb?Oqyj-T2L*|gRLGM=y!Mz{k_-FguS zN19h2^kpLt3G5x>U8G%*LORZg4G z-PU2`h~fA~+nmD_jxT@#7Be?FdMJgHOT^uja0%EpY zVA-i3-^`Bl)-;drCdq{3TdG2u+aEh?>$)JV0JPv`SLV?p71&BF6NR@DkC@gEb*6Es z@lnPfk)s8dQ~y|OgwaSf#+Cu!c(~WN#{-C}MwU;J<;8~Iy4Gr-7q^ep6zPzc{q)C1CO43Gko;hj}0pM*KN=7XWri}$MCqdy)u=m7yd{|LB zoq+gJFNgs2>6Sk!O@*vpqsy0|hUfqgF4lX%aLoEA#$vNr0dPJfG5_Xsv!;bT3GA7G z6EQx>?rDU{*u3C$m;~E{O%q(e|6oNPB;2)kf0wh*S{4KT0=i?-2ug&^-Q8BNrMvtS z-N@!1uu4?lnbS;EPUhkjY5N|o>Bj^`_RWrH1jT8jKtxHL#O|hzJ#DRo;857L0*7*- zJE$8vbU_#(>vZepUF8mIDGQzBeD`^0zk7F>2in%j$3MR4Zz|`AS!UhCCOX?Qc zd^!nwpIO>3G@Avq!vf|AADwGYTSz?o-vQHa-?4~I=o*HB;7kM;2Pc>-R%7NrSS{oN zwWBN1lT7zx{rx{jZ!+8a(IeeL5W@m)Rm$AP1I^fPUW$pw=G}YlDKc-_YImd8tIX?Y z8}pvQEZ~tKf&vbUO9Q|v1g`ga7OPJKC0qyF9i0hfuGLsO2VW7KoYn()Y#w08$D_`A zNu)8pa@u@1w~;nAXP>zZchoFip#~IT3F$obUuZ>tza#70eq}Enu&C}m`>sKilMcj! zLeRk_#4ygK33zB{u-!q2VwyMlb>&OelQ6Ql?3|2>`DN<%8T_Fea#p`N6O#p{9U1g} zdwAu1yWO^6Mc#-pn_~W{9UfiK2V5`K zBCQJe{?LL6G!>yJS|SQ05&=51_r* z3}{Fefq~(DIHkphi^57<7+hJeH2`KqMxS=#pd6e4>Ydki7YaZpW^WDaVCsj`w)<8_rJr6Zm5Hz59d@Y}= zw*#9wcV;^+61w!zE>amN{(o>HQLr#I_fzKb)UG`j$6ykL6FGbPw!~Y%00#TN$MVb# z#3yr~e)y(y$~`fOkw08Ub8r1GL_NXWriA_}R|0SuB!Ix*&KmUyYvM4#7{^RlkYEZ7 zLoS1GVH+;Zj-6gu!FoM_J$~4k5sBuBP zv?;BRD;cIDQK~X+P(*jdvDkQ*ec^@#7g)lQtLHF$w<*)9a4Qm7UyCW1WdAm3uJ+pl z!BrvDl?h&Y;}9iR@CUEovEQ+1^SJ;`kx}VwkdGiv@e*b=xhAzgjW`@vV8jemk#c`n zy}DKAZ&kE|98sQ>h8Eit*4aMA3B3t;!dTWpioQqDKE14m#yX|x>|GJ#=?vnO*l64r z;cI@l6+AH> zB%TRfmJOIH`#U@`F5iG5VtFIj4a7$rFE>tRW4N3;?zk}05njT(Jgz1Uw*`Ma8_9sT zf@6MGp}-9ZEbf37{5Pd;b(wm2c8?A6R(u^^`SjE6U0t&yi7Si1+}Ap5=&cN`a$BHy zMVXv3E?W59bE2%MC1i!%k2beiAL0vJ1ty0Q$cr_+g%VG$U8tiv%03CFOX#SiF$ywo zfeTVW6!!Ge&h1-Q)II&|m1`6eJbfl(teqgY#&vF?&;9UN+2|Z?S*dHa zx~8Oz)gChkR5)azSV*3k?J;;|Qg53s6q>af29Z9x2u9l#rBbbe+mq*4DnvkN_qFSA z7^V&SY(qR-i1fkXP6~T+OhP=k8EizfJ)~F@9 zB;N#I43iTki>Aeyb{0E(h!w@-%)bzaIaO(d9P;#q+Zt7g(K9w^*iDNmAUuyGgzQ$~g0v0VudOYI`)i}pZwy#Du!ye$q%F+#o`t2DESrr&v zUM+M?)GbyW?>Y?7+)^x30cm@tg$o0srbw%Ux%&3ogSdYhSse0*M}+ zYvF>Yj&{Ic3guXG&JIKs?=GV-hv#3su$32BJlD$Tx<6(@NE$JK@QsRi>)UQaxTCy2KI3p_|9f?oGlVGE;t*yf{(OtCN^zIHeiL@uf;WAHe~(w zmBitH{WRB^h|ptL>)6!I)A^ma1`zOzKdd5^%@@>4C8W>}bQ&!dUnTC*UK&uhOM>EH zZ+G&IJseo`-9M-iSO8-W$?gN0CJ1K40`@OuUG71CvdN|+$_KGy%HE& zI`utO@UNl zH3lRWU@hvjNzkl%cgG4MF2Y8KDFs(ov~( zbIqu&g#IU=2f^MmlAs!lfOtV<1H}lyut%0n+q~?~ivs{m^qhH3>)UTay3ySZ%ws|UMD39a$F&6B~tTBtU#uVy~FxUA|-(FS3-T}oR1mEV?U9?4vB^_~o_^D(G^zp? zyN!=NmPWg}+J$YB_CzWy^9@LbFIhrD-EsETGTEc`PBy8b3cfk}oBWC#Iy?OkjNja$ zH|BL_ed+RVzT0fx3r+~~Ugj~LI~a8HbCN(bG>Xfl2dY)nCTKolRPMimxVZyPfOIR3#S*fEyQ2%5U^ zX9p@W&+Plo8qrZAT6^QSRl}6k1+G-a%Pj6OKwI}&%$IT%v8Z-5k3P=Nh|i2o&-@38 z)hC5x%HAutxAC+p+PCrIKWyLL^#yZF0WD&F^acALL@2m2^l$?rQUA~whmK89UD$pa zjOqW|58rg4c$1rGG}bC%yAO}AGtNXYOzw*BT#A38pD;mbNz>oX1)a6Fq8)QREkSPP zU4)JNKEhx7*&28UXSw`;Mf2Bk#rx$%r%|4JH4B1^T#nLOSJOl$Ogm!5weq ziXD}X?gIK}orAVrLy~M)W%}CbM z1H>~B&h9K0k+N94JmFltsf%Zjq&F?BeTtdwFYWFo0#K3+8E}TL3;ONDFx=*(L(rnlK&e;3Km?|t{(f2ed_8|FDAHlcZB z=@s3zQ|pQQ6rJatv#JIAJlnk0>k!`;@(DU*p^l*F!~B}g&cxy&J+0OVEHhW8*n@`2 z@#@OV^@D~hXL!K24~9iCjSNs0efurL$Eta>fZ+sqhMS=Rd-vD`5GU@9gpPpWdbo-3 zz-x{T(|=H4dmnv|sVMPK(@dhL_V~+4A!1&W`F0$iMk}c4w_FySlQi_tYNOSB|1=10 zMFL0Yn)_#R6}%bu?DH`5N@!c9R{OA2B1@(J;PAZ@O+|7EBGVxY4@SfSr&yYrnYz%> zI+)jroP1TXXeOQIWfis9C6HxiB|clT=ETd7GcPkUz;Ii@a6dP}aAR)0`h6XQ+yyaE##OB&B*KnIYx6OS)wWRj!?o@SI7o>x>nj&1py9!QsR+1s;rs zb@1hqTjO#y(TUVOfeq*9sM!xxi1ppb3fBFgBz@8LH4xg09ShcPvhsuRpdc=bcZS7R zl~>82Z~_b~)90bbPCai0Wmihl3Nqq60V(Ld>8h);%;z?Rch-naZl69|CJn4|%iOEp z;_1wig2pe0lW7LT!Yfek#M*i`_8Mb^$pBk98U^W?O#t?+2NAH00K6JIV{GQYp1g4a zTYN^x&n6Ch$1A0DLJM|a3}S*U!8gYoq$cgznx*xk)aI#a+uSo!v{o2jIU`Z%cycqP z74=-O^mtx35}}}>6793V0NM`?s-Z2z0zEZ(>#*j!RLYvw6$V;Ksf==0I@1{sO<^^a4hR^;=9pRaSYs7Z;KR=TYEGQ@61PJq@Lbu>Dl4G!r5A*CvpHNNho z67YAj_RKQv@LDU3hRb5T#M_dY*T(P!PWxVCMjKf@+Xy7U*2Nnmql}68t9g;dKo-4O z#y06Au#Gj0>5z0nIl7lcK(nwb*5lwT1D1V)VlHbp!Pequ>s#=ZoCB{tl(BK)x|tQi zC1}>I;oAu6siz1`6LICeA7P&}FJ<3U1u8eXyegMUJ(Wt;oWPUt!rn^d8)7>L6~ssf z7)5>dS>~y3XS+CFt|Y|zyaLgLwBQzZR?AU3S+OQC-wd%nxux^`?c3vjM2|?9pGZQP zm5Lle=&7fkx)Mit>xo+wP-ggQJPheYJ|^3ic&>JK(97jWJR%NhDJF?~icoBDfPrXo z71ph7J(tU}r+VY0y3W}lEQ0mzHkVB_8UZqPUu;a%tp2cf;Tz|f>d7?b<-<3nIqJlA zhv53K1=l)Ya-7(TX5TePM4-d*GwjO(LYuFxUX%vQ(u>>gw4Y~zE*d&ktu>zFIEss+AiL{+d4 zO$(^hr29QYlfz5mhPw;{9*MPN6)Xr2?n z=v+|26IuCOiu)uew9$l4$q!_!E>n2HbSJ?V(-E~2V9zi(O?kDwp0urGKy#diiq0eR zx5b^Vvfgg!f74~Im|Fo!&*nl8L6>hDTLPD2H5e$4;F&_~U@@sORP(mLHp01Qqmg=I zIbnRQSrOsF7qQ#KRz=3^BV(K-W5Ei}1?r`%=8$Y2OIo140|U@o0zy1wWiK(i}wDc>N#-{Mhk7Z{)uR0&3sGLx?uHhv#v$! zHz#na9^Z7vyxq11o6gHZ6F7IlmL<-QpRM5=Sc5|LW^(S+o&B9xN6+070Tdc1uwq5q zD^hh>p-{y7OD84sZ|TIU>5;3#fwlbdSK}TRhhhaV=cNJa6dt>?L`%!s zQiXu0lx&rV+){ZY+wVt~`SYXCLvCq+EA@7xErye&db-|>mMcL2ISX9H4!BSg?fU7S z7h4@zTx_*iyMz}SKd_BzW}=P0Sba7C+6>Um!Oa|)2dFpK96>TZ0nS3k!lzC_VUBL) z<6<9I%~N?Ch91gj(Q~0TWdL*j*w20j1LEMa?U>#2>U{ocG@H3YhuWDRpOeilh)PXV zoH8KN=>+tJOOfqa6_+}sL4jI@99@86q@*G)k3;edd{SsI>Fg>nY&*L6`Y;G#C}>YW zLyh@qQ3|Yji`Xu7j&9gw037x`=E34e#TH<92*~ZjCZ&1u z)PSLoH-MO6=~f-E$l-MNnj`NYnd7yDGZwy{8k}M_=g+wD=b%UVQt5_UZzxbQ8JXLE z5)*AU#|kD4(I>tvHL#F$ep$)%EtOboCv!hk2Xi*$3w|x+=Oef?6Yh^ z5v~Q%n2`6tEdWawBt20iWSU9?a zD$s?;KEd<-X9N|=ato#4J94ohz9-Pa^ReI>H0k~KiLA&Ovfz0{PDvhq&Y?}}&AztBL=0n~mFsF3n2RGc1X8zYG zOP#gMCUywTGnbP5*07)7A#aZc#OS*GXTs@s9O}d@{~f!oxr}!M^Uv3+&~D%sp8flh zo?DLX3xkFwFLCg;TgqT~9Iy!wG{VtlY+tV&<{=rHgNrbyZ2(?Cz$G=nBhBm59EWRU z(D;&IPMwJzI9z3Dg6!)szIZ&0^PdZgMIs=uvYi{~F}1qQz0kR_g3rL68w3~=)YJ1f zB2{6AO4q}5$)o5>Wniq|pe4k^LpI$WCgRAny1On)`3 zaTN6`Lob|O6SUf!l*-Lq5(7Ky5a$t=A`c^-u-$+M&SS76#z7`_#^V!TkSUJ$vi^NB zkTpW=nZ-~I^ci$d$Vx>9Bc8jElKCGOE@sJzRP80SR8^iC5gB+L^Qzio-9mddN*P6g zn1TNbA4r|I$`Z8_rb4-ljf0#}%?8LE1=VcFNVCR;efCTET~ocH;)balk&Ifune6%S z!(TCPF=vvc^wBKPVx!I8?wACox0S^ip(n4jcb7AIk%g~}B$Ik{t5f2ZdSpJf>++r9 z(3j~rx#)_;cAi>8xvznMzFyQBPdo7}Z5KQIu^y<3ub6c0q?41rH|fnu?@s#fNqXY7-Y)4_5&C-LTm$tfM?F7;12xvXD~a)Im@@k|*O+dW#^gN$3?yWPXq<;dakx z*Dx>RcU1)~vcl9k-oWgq=Svh~vSoQYS0Sgv3&-#DX`rEr zce-X(MZ#*QCK|m%ZR*zR4LwG^xz}hm^{;@YH=hvlDSNxY=__kNM~v6524-=PG2?JJ zFA2ONLL{J^VT0A%qsJm=L8Tl-{dh1h&ZRXv9x3AUToHrG*KZ(%ph2b(!k{>p$K@~& zP&y-!%1UTkC}nNWE_J}jn*dm4bceC@@u;qCx|xWcTZY$;EnE*VDWM~a@NDjl;>j{ia(V(Z9Qi15NJyJzag5FSWLrC8< z;-l1j&v5x4#$_<;FX6hXSvB+fq#-Iw3&Utp+K@3sdHCi zoO5;MoVvO?PtJ+SJvj%4Fbp~A01^d3P$Z};CKOa;SC_>_1u@{NhzU`2RWj@{b?1NH zTUFgn829^qGZa13Y5Kn5iRU>dr*aC50@s{_FgL27dk`2=hH|8CAH1_b=^IS+m-l{# z{-q_dbcCHftxUM{Tg`l}UZ@*h9QuaUGHS7#$BXvhGMiPKFEX!dEG>h<*hW%DmioJJ zliglLm%WMr_zCC72E^wlAwGT8yjwv)F>fooNYFb#Zc8ST`LH2cte2X^Ac$13yea=2 zV#)rrn2t3yXndlwkYOq2*lrxg!e?w342gyy_4;XA-!jSAF~tv0mpQ{3V?a@&eKe^tid|x%RKVk4 z?m<99)ILAqSJcl7QGAJX)rYpIgyM89D^9D+jhuqr=`V5~W&@%w?GUM_k0Bmi*DG}H z0m$nJb{lfI4dT-=_lIF&4%1Irh8k*Oo7cwVu^bt^wd7)J5^{iB2J~MN2BJQJOXLZ9#s5PX0492o>JDoePQ60m#Ney0Z^68hTWw;GX*K`Ax95b7)HD13Mf~D5@O&_SLHu z&Zbde8o44*U9V_e1bz=S*SAYm{i7nbX1)m`kGj^Pr)B1*US({3LEsDkn-48RznCso z@A|{SX>!?EG@Tkvz|hY@U$E$^rE{NC{(Lq= z4%~O2vnqADxhf6cZWY~E!p+8Hr-Dp&@_AYZpD!Vkor`N2DovYZQd)$8D7DKJoya*J z$U2XV@Jyoi-lX4LQUz5d<`Yek(I_60m~_+}g0_Vs?FaXB6A{MyZab$dJ)(_VES3-$%FT1jesp86| zC-yznZoftchnO{u!LkNTW}%xp)K+d+Nr7NRCw&*~FNBkWi1`=lSIH^t(oVPGi#+6Gl)v=rmcj;6?Pu z=fc{%48v3CC7qae^}HMYS=>Sr|Mz!j$@@NVXW6N2#4hi4*2?-(%^hH~!=@sc^btj-1Zx1~7m~%+%c0zGY zfX#WFpkTxzpn=!yNLS3m0)3CLX_s^W|1?SVhM5M%h)&ASm1&_4+`iSc8%uIJ#eU9;x3 zzv}%FKY~E-&HWG~NJ{(!r#K@r)4wPEJgI+Q)EEjSVb>rPWqxw91>GxBTOe>k9*I9l zZNb3@D%52Y-a{|yJaj(cK+857A8R%*&1nXs7-i*0qROomZBW<{_^I@Wc2HZAS}iNH z0vXq0<%;>V09Mm%9>A2)K*;*Zs!&QbDbW>Gm6JcjvtCrthFqeG&=p`-)ifnX#a^m{ z!Z=RrJ1@`O%5%|x1?0i8W==T*xR38unJ*`)+fSZ6$saTo(psKG%u$CTYHD0-ZW)ZG z;f&TjW>l*ZN#=Ju#JmAWt_*0^rU3ILZeX2V9}zEq3L?&;_nL3XegSgBq`HA=4Hg%C0bb_+!i zK-7hNwmQLv^1BJfX)yGhqPB}gPRHhRFR626yz=?`*I1aL*Ix(A%yGZbcl6UDp~JFf zPmZhPr>2+bs;|CEYm-}7IZcV{Zx@LirZxKtJUKr-y;R3cQhY=r=HmIZCOwgqgWNEOJ|?Y6B6$$TLpbmd`tnhs%^&LG z)`A|}7+6Sczy+Ee7U8ph``aUrP?oA#$+zP`NRd!OiP@#*JA771KPWi!?)}<>w4>Q! zN=0Zj)nj+-kLrPtlIqs1r?3 zc8Hna+K@D4BpG$No>!dsLvinmOw6q10H`FUIhsTO7t9Hp`2)@ryCr>_S!SsZ`r;YK zKz?xbypR5KSJ&_O=s(cy$9Bw?jOLP__AMwWdJ~U0a~;{sgxlASF(F;Tr9NBDggYo$lO3L?|k-+vPhvAbc65D7y#+e>54=y$6ujf zAL2`xLp6X78{!C+88&7OB~XqrpMLsj>glJ~6{VViDo1@uNoLXx)cCGT$|}E8R2SO4 z%<_t2&{Q!FCcpb#SGn9Zm8ckE*7$ zYvU02=ov>+$NlgdMeZ8)W9&m3ijR||gM9&Y5p(fQdR6CsBkdbzHVs`wU{rX0occVo z^p1v1KhPS`c796QLYER`me>_a0GzDAAY;%uiMb$GZ;+9CmcTYRqt86^%(dmeq?nxz z`g{<)z20sgZnaX(?~uRgvl^wQ!0R1*%=-3c_s=2d*x4aQN?gI}5I9R8Qq@1^WU8(^ zjzE}tSYh2IXMI}YL1xwqQi5bvP&pyz7H5)tly$5s%SFgpd_g$ZY>S)i~hC>l`G(iH``1?m^f z?{d_VM;`gh5$2KKTN#v74X9!pZ6IQm#`-6$(ezo^ixFkHna8NnfGAr`caY} zX)5`W_Zp2{R{&vVzVAI2C6{E?5x9M4-h2B`DiUjPUf&@!W%pEcOMy}o$0w<%AuGom zAH}VxM}njq9I8n|?)iqWZa%Y#E_9y!RY_{#)duu`a;+Ye`xkodElHH}T#y#=>@k7t z@n>;hUF(waz+&&el*CE}J|gDYVnW#yKm955cbjcQYt@c)?A8&jUDNJdL^$qIrJ&|7Zh)0V} z_>c@ADS9PtX-MW%x-s<_kO$rUD^H*I89gvG4OeM)`Dvg31XMhl)Jl*r;T?$R2 zzEZ@H^L%vUHur+w2oV zwt6}xw1|^iS6pUVu_G(d^K!daTdBiLg_^Ft0RuTb+on8r6$kQtRT4DYm@$Am|CZky_WA5PDR?0Zw2DT^;ScY@LdQ zp_1r|colN%h?OK2sctPEpaNhI$nP#Dl?~pIDDl&9@Z{~Rqn}Bw@D2Wn%h^c+t!tW1 zO4DpYPaeA26^IIst{UQN{0=f^5b%m0t)8qi%`9JIR%VnY-IkP8L1pFZlWHe$2)1Q| zDwi4Uag+1UO{sohn4{}F#=_{4M2A_Q#5SwqLFc%@iPk_^U~!^+@f;;%UgOZU%YXEv zAI0nERo{6xzW2b+2s!`*xy!FC+=#L@&3xCRv5z)Qc0+YY$O~=p@I6~XlHew{%)L3G zvNUT(y{R!o4=D^K(T`IPof?nOY?l_he4%6_o@&DyOcF!L|tfQ+4ebT!4>|$ua7#h;!WT z(8QwP`-*CEst{Om?T1GJN8mSicn2KM4A5h%2lWryGUx5{*xh@NckU;lIwsDju+ZWS zla>xo8}OJ%`8Jn@7vdXjW&w3wyFL8uvpZ=a7~6GCokd6gKErGZQ@15E1!|F5olrZ} zY3AkdvSFP7@(_#8NnZK;_+_{GO>vb&;`Y)HYwcB?#xTVEShnoS2p@Ac-h-W2a*!s1 z%QVV`4}y^pG}JoKefEd;6y-}!?D2`nu+E0P2YJFsIwHy_llg@7sb7@Bj74bF3%CXg zh>gz^tJJt}4%CB5<7Spcup7N4U{Cuxc1IA1U(RlBH~GYhlY2*AWF~-1A~*6vRRK)B z-AtFpN8d9$Kb!FMuV4S#^*!bXvuCou)RnYlh}qsq+;YqDQt8HG@tdS^(tF)aSok-g zsE}XX8qf(Btqz{5fZNGrGxMYpE(Ja10cVg);&ZoOwmPH#gwQA+G-7CjXNZTKZGk7?ffSnXoK4@ z>%e;VtKTM{{YYPxe&!=Hpo#v5e6Xo9%lg>gy#Cw1JA|Y{?uRT|%0d#>NwHje`OUWg~w`3ao1Trh_?&mY+Ym&H3}nNeGCq zQ`-tUwXSx|qswc9a$yF5%mIlRXRlbsu zF<&<%){GfsPNAkgpT5{+tmtgII@3`Z3o5;~Y*Fg-YOSWoyyzdVXy7^x?WJMZYI2nc zpAfmq-Af!siKC0R=?XHfXU7~bMo#^4T<4x`CU$zx5FVW&ev}w-sHd>AJ+qze?rbEo z4)*qU0XxKDe#p%whpCs7kk$;?WZw54j-TGw5*vA=T-|>X4#8wopbL9I+yts!@jB|~ zOmH{lXMW+M_O)LcD%G(PVekp~M{sBu8f*MwYUl%)+km%!-~{lG8rgpFJUUmJ8**!fhq!0B~~ zI3=+rtyHKpeoRn3TDyu@&9j9_Wt&k*?b5faO6XW6l`LcChRuyb7cO-Z9SO$)umxITabw=GHGZv`j?LB zQ3KPINA$vQGAxYC6PdUKw2@Ah8gHW4v?B_0U0pJQrs}dr?Lv*2wC=7zIr46n?)BSU zZ`@0>dvOhXtQ!s29t#A@S;V)_g=n%#5F%kxUGD85G;HumdUnfu9Il|X^kZ{%x|}YD z#EDOMTk&@&age)D{^TWR2q!~H`m*F4%v3~Yd%ODH0VK-F-7lji=v|$gZS=LBBVQn$ z_?Mf_zYn2lHKy`WS%EkqGD#ak5Q%}B9!KMXV)1B9X67fjraz|?Hfd05S=Nw67PWXV zETdkrn;K#seC?+{{d$&k`9QGYkW)Oa!oZjE(BnIr78Du-T46DvNh*pioHuZ{$6E&GBk6~jN2#Dv6;o+dgF%fkqE;aUcx=>? zPe+yLzsbCzkcw`{|C&fBd6UpfM;0YS!h{yTKu{f#HrJYkpqv={wkWc|#Mki#A8S$^ zQec&pPQseVz&i?Kq7V%h2gOMkleBEF%2vq&0L+ue^8-fnu+eH9dD7KV@eLyVVn3M+ zL51R5Y#~mDvK*m*Ch+RPp5d6!PB87j@ggz6)gT4G7YB=Y{+^k~rlTBzxZCaRz3n<7 zWJ)ui(RVSV;>Om1W-~mBl)9!`S|%<2{5UTR^p`54%odrCKmR=Ce)U!6&vjMa0eXL- zBSl4P@{}El=mJ~x^q?*-PD&z_A!f|T6Y}(4+lIYqiCLK5yUC@k`F0#FL#D8JXiMjL zQaCyStY#D}8}LLjl;DFt3p|mB;5kTdmwGDwwsd5l7gG>i+q&;BU!H#KniVTjj~xsu z1~oBl`U1h!5ifWyxc1Fq$bW>C5y-^Qzbry|PF^`2vi(W!;w5DC*a(kv&ORIx(y&aa z(6H?DO#UlpgtakB9DxWsDG83zCB56<-$d3Oz@S%YLOsG`ApsZ>;9|eJnHTbHQlpx+ zA2sS?=A!+NJ~|P#R?!>)K9FbeTW>-eZF}1I1-552L3i_0xRG~gA+3@fu%6wEEGN(R+>Ed^p zZ!Hn()VxW`|NHuZr|yh{#6X@QD%u5ssY7JcRG56zdDL=*RY?p}gYwd3%U0Vz^o zBBTI)8P{=kXm1btcI3#xdL4yOqLV>Ci`yG^!}5{-SNybUvGnT1z71Ws;b^# zYCr+Hy=G7%A;cnbqI$^TikENRwBWi!ez9HX+HwKCS?FvS#HQAnc~estPfq5T?;6dj zh{C3bQ+NLz;?+PgNjS7R;=OkWdNItGIjRf4cAlHeE?D>6y(72e>Ma%s7>WkJe~S9! z^?_B(oO}>FT3aIygw8Q`Bj?W`TKXdNOW7oK58AIcB4~bK-k0ZnZQi%%eTTJS*oq_? z11#G)(i4}9-3m5ug`s*6%OcKK&quvyD~Lhr#ZR*U1-x%|6UnW?Vd3%TqFA!o4`;#e zdS6Uh_i9Y6ckX#fQtjoKsslp4ozK?^C=M+!hy_l8)h_-k$zhj0^2oCgH?bYM4dT|K zMc3~#J?XpWkjTJ4_uh!QDvv~n>GONVOo5UxZ*YiWo4Hn-q`qHaK3|+58hiJ~%!}4W zpf5HMS~i{zMG`W(M&{Cs%u;|@6lS4V#g~f3sO^~NuM7+*1^%Vu`G9TBwiE{t(Jjlr z9P})7+jW`bKD(`6R6A9m;{P7?5@Y&iRc7WjxyI{jHIDsNh~m+}m7on2cHdK`eu#gb zqdNED3w;u|$bRrs+u|2|GbD7$l0WE#!D3Pq&(i#ZtF zOLvu%!(NlxhuW`=~vCJt_0J3+ zi>B6Q9_Ac4ecd&*3#dc;n8Ki6P{y9w^8w&q-qtAM{!QCcJcA&*ezA$VvvK3qgT76> zcg1te3mNK^1bDTF)~OX}9#I^z4U>43RKE5LSA8OTzFX{3dKLaVF^gl6`Xwek&9D5X zQ22MF8R!jGO_t&dsLX)J5cNt0I=;l|S0PU^v*fRR2$~$ZN)gOhq};HYo#Z->4EJ`7 z?|o|CXXkyPYkT`qEc>?SW=I?hkl2S~3t9bfY*63u&cq~GcEr20%MPRw%dgul?}9uU zHWnc*LSypJXd(5d?ZMN5LGSik`W-6r!`wo(nQ!bPQ|m`DtNITwbs=+UrllGz*kMZr zsP6;$z!OQ85{XT#D%r7Hj+{gy2YOU08eslh<4WZ+aLg*?(&@N5B2I`y&X_hK8I;7R zY0AO;_MN6wr7VUhG0!^4mqVlWX(majQs!(_3b1;Hd5h+Y2E;lEh$fVyx=hw2Q_3hW zm4qbO{>$5TRij}fUCUHS9}`tXkug$#rhn9AepR7lHRhvrP?=YbYzq+Lo!njD1UB)O zXD%6)E9G6~TAJnw#jT5;x|Y2v-@D875|g=Q zvKZT)3rmPTBcN^gUav8%#PBy^?r5??)!j+@E9QL+$Kzhu@`vX=I`1)zH@r0O@AKZ7 zcbXD*Qy$iU_pCKJBr|m=Vo6CEs!NXEN1#Dw#*0Y<8Jnlz3Zk`!UGIjPtU<=@#ED>a zW7*R)`VvL!IZDKf=|EYAx$dw+ei*((oe<(|8I$POL@!mO1keh173q+JNmeB&CoG5QB*a zkoWIZL~5?f%@>P!ln^$?>f@T7W-fHs-E~2D%_7u-#umBvfp88QqLJ^^O=C%+8Q+rg zcjmRX0CLhP0exjr=1@oh!@kj6ea~xBm1_rBGpk`ghnScG!NAOvbMJQCO`* z0T}0x%MrT(4l=DeB~qwvj!>f3p?Ti{7r@FBgbhPM(;qh9p+YA11)p z3M8&!WbFRSVTzWn6PE`}GH2s6D zm`4hziP#;Us@yMIb$h1VDPtTG0k9>O9%hTg z46`M*oUMyo{vG{LXOWWL+_`fS0zkJd81)^l@bv~^Z7*${#7fBwO0j?vThZJNc?YdB z9wR3~`i+^)+qA9DY^b`ZUoqaN{mN|BF`yDy%jq^$Cc_xa4#Y!J`qg5okS|lm)yqGg z;h~z9IQ5T3cV4xGG%h3&LdP;5hJKQRXfnX=`mwpSV z-%;&Hy)4@(K7|TD@dTxrQ0uhgIU01x;bAbBZI(%*%GSm*NRaTOAn7wW2e9G_6ae0 zM7R(sp_ES1k_(=`Gern+gV#N}eea3ie<6v9Bys8SH?KAMOUHnYoLuy|q|6&o7FEIE znT*8cQIwTFPv;%qu46fW`oQiu(n$ZAuOM`+;r^;wi2^T1)pIy4z2L7;IX?50I1VI| z0Hpw1NM)C%N-qvuN@+z@o-U3=%*70%)KpQR!N5~l6^ZMpFHRlG9^D+tAD z(%wUJVm8*&Wl4zpp3^}8V9Zj3Qft7&gc@oWzr}O>8;Mmp^YWA5`r(f@0nD)R2Ty*! za}JA)`}$Qp+UniDpouBbEXN(&p*NI|AkVwlY%9*`(COrt(Id2)>&cTOCB?9z1H zS}$t-`s&bfrT{84!GOX~SfmMrdjqXn_0eq(AoKaARma=xmOsq72a7hl<#8<9*|)q0 z!R^PK>|(LEV{yb<&Z=Ulkc@_HV7-khb2X7JmDZKi@uZ&0QKLX!{x_qcM%vEdqGDW8 zXfkgsFf_(I0;5UnA1-r*X{pDjEUNHqqbqC3qj9O%8EKN9KgEoVUmOarUOr}s>)T7$0ALKd z1(R6pH*dXc9GPwF!u1An#NA$HMdkP5h~p{cWd)w{9sllg3*pS6z41LmoYd*tIj++$ z(78}}%k;)TDzJIS_Qx>3uDR&xk0)hrap=@HcCiopC~)@enTPFC9~962u%t6W94ecN zkes|{&8qa0K}$8KO2g!g#q7<3DxoSgM0yA^RyBiZ!;cBa*^MNAT1x1>-kF$KF<(Ei zdyT?@7oolzdP~hB=hf@`6G75y@ebuq4-endYB7%vQ3>Xwr-rB&N1T@71Qu}unbQR^ z%uh|>b$8zO?>d?f5EIF{+OYJ2n~EZbT{L*{$7-j41@Wi_^p`t79-$j8y3@o%)RBGP z$AUmK=z+%AQuGM&!$Wu=_FT<1Dj@uRk4fp9o>?Y;Vwz^o=iEx#oE~*QH|UBA?WTmx z+ti*(nMPfVKtaWp63CCqByrQG6YT+zu{RE{)KZUE?4u+0sIA?6#d-LSwS>=q-6xKE znP=#oom=em*A{gCIQe4T*eF8~fuApEKUWj$xWLu(r6Nk?lyV(To-63$x%~?Ih5Bci z6Bav2zvX^X@|RJ1j(W*Ot1TkbHMLW_o8_3fkWu@!`HE)r!ZkWrDUo^lqf0x{28hg7 zQ(J*_yrAT4lyxW{52#}aL-CjtMLoWl0~_bCqmJQ+VBilp<@X%)Jo?HT0hyXPChvE_ zv6lCo1l( z2go3XFt=~hb@t82%2K1Ce0z~1wUq3n_U3F=ED zU+Dafv!&HK65X`MEzs$>_K_*~p+B?bM@-|aXR1HC7X=-P_|`5(Q81Bo<3h^kU@tm}FnTcsj?_%o2hHSO zuV^OAC#*5ErL-&&2=F2?A|LOUYx>@neJ4E9Mf9&b?gnS~>6_@hd+)_nLLgtgm zm}YGMojXW#;v)}FznixgiSNTPEt7$P%Z(z_Tr2b}$!MZG1j0b&=46FI4N>-hz9?LIoV^oZh1= zoJy(UgPI~n;D6_~=QR$wF92uYIrCM{{knsvLUO_W--1+b2^>p7pRPe`8ke4Xw8txI_6z^ zVuBeReYUL&3&sV3w}_r6-N{KjUPTQq{7hcrbj$1T;Ecw*?O=8=xo0{`mxqmryg+$3 zpa{z`+sqfy|MoAtc2O3kbFo!pUCNk-@r1rJkKGXI2bcD`Mq@9nImlH=odP**a?@k)}R zC5|vF^#qhvbuhr-S==6FO^I_)`*$BNM6-wX#i>2RKW|Yr=J)i1>FIm7Zmly%FooiQ zC3%uV++9CUAU}EuZf-NHy?NN$h+{W>%n9JmT>Ie<0H{60pD zlOv6L00R6ybF(RItrcJl3bi$1D-3l+g?SKN9#U)w)Qk_2VZI`XV5mbk-+aTw1Vv}k zmtJ>63lc5OQ&%3XjbN9QYN^z!Q`NoTaq!e+U__B=h0HHXt}R43P9?}6*k~N*+e+K! z^GxEAHEHA9V^XWMEw!E>Odr|qj5xL(raLJ`IHD}7qp>sdQZipaQB)u*GI_Ti$R-AN zZ;#MlZ9ZQgt0cyvxT}tpWU*+ zBm`Tmw!Qq-kqf66S*32Vp}lI?qSPK=aL-$Vre@1hw2ri4nLKB{3*Ly#`*wyLDuP1& zz`;@@x+UQhIauV5kS;d|&<8cH4~v1oLCatQ2zY$LZlK&4ur({{AO`B!25haWI)FPg zU@VqR8GWu``T@PQbBBYz9@<*hjE?RZ8yorR=;%u?-FfGpyYK!Z-N_@oSJYrk&&ZYS4f-;O9})o7>E=A{10{GRz=s8aJ@d8P9%rlG3L-K}2?4gI1;ZGaQ= zpaM@Q^yVHt@_2QC>Ob&!{X~^K9nOBjMWqTu}6y@LG zv($=8pE_S%<+IjGYCj@k+K?|9GYE@KPtiL%w^A+=;4?oYXDds1kO?vO^HWn#jcS(H ziFd0`)XeKnObNpId>lARJ{|w~y6dOiWF=g%ABupNIb9?Mq@nP57^4pcB$?d1J;sUG z7;%%@S$l%{5(tY-r*8`UuXx9OIX5PyM&V+|0HF$v5j(K-NU;jgm5|EHsyf?X9vp zqAs;)Q@Lg;V3Ew!Q)6S4+nv7r#+zHTgg1QS^(Xi(g)gWk(VxBazcr;@FvPR{tfG%d z>Y_-K-qyMObkVtKKWG*;!rcCi=Q}nY%%V2J%kJOg;_%Y40EX7pk>I;osn@Tns9>+? z08%Dmq++zZ^CIV>rre-}1gKXE#tXwCm2bhgg^K~p;6Ak~upZQZ8$=Myb(`Fqe?IKd zH%{zu3lX4N*B{L1_N^t&S+Q%!g;f|gI~yhubqMV|JIq=Z%Q*rl36ZNg0hH1yoU>Uo zMBFsaPk(tq2GA=i^nG=&6OL2Xg^12nKBF(m-S%r_ z#SLx3^**_^qUikQjW?)O<8rO0Hb~3(t~{jkn(hOqCZW19b?UH>^3-DcV}tf~gE^>> z#?0#uRk=!yptK9)lP?uC5m8wjpsvs9;76 z5qM%vN|P;6=B=MRzS1Uji%gR{Pbmz+#WtNbTd+@^zYKa#I+10|snyhX>z`+CAz1`R z=0n856TDfNp05>q2s)TAO7}KwTQ5 z4dn_(;_^ik{cJ3C;+l_Qa+p`Y`trj}lwRGr?|;U|I0f(S3#vr>r*i(zbKJYmD}Wb~ zS2%aK?{83deT(`Jrjnqq?i`zAE1A=I5{}kLR$%l_v$k@3lyfXA(a3}xiBrrG$yB#i z?l}ETYMZXOdj&97TE2dAeJHkO6lg27z?W~!V$keAicbz#+0b>CSjfm$K=Z819^tw{ z=-PmlXRrL+pp-qQvrf2gEJ(AT6#jY^rf+Pi-rxIIqW^yS+i$#~BBB`w#-timB}_{N z_M}k2XKooWHpjeNh?qJW`B2je;ne}Tg72Sdwc6CkZB?~HKQP46**r3bT~ZTUta3&W zHWyQh2mrUa5UE@s38)CP;DySnqj4Qa(f;~Klrh*{A`wC`1vyWgoH4p#r5i_wZ(q3d zQ@Z*kha-?i68N_qxNVs3JjU_rJd5YsjQ06UJI4Zhju+e+SQgFz2A2ZLoGKW4H-)yl zvY-qGI{!m*0Z-=O-WaTIH;kK_vA?7WGY9}uWA?c9S3=qIw!{sQ-(;cTn%*}S-L=1K zB93NB8B-Da>KLx5W3aErYR#NC02o6}k=`wNJxJfw+3lhik1^Gewbb2X%qt@&nkt8| z&3ABkDY=ienxX$iX6aXf_`}~hLkdkX@@yyq9I2c?#NmDI&>?B(J5-0^a7J|Y35&@x zAI8rINBcBlJOVEgV}6bF4~R$(p~%>XX7`cqVL>*HX+DCehr#Ots6(PAsPTf@~bgoSq zvvGM=7SGfMjk%;EB~Rpdx^!A!)+Ca8PV@5@4gCs}$>JB77e@prAJor0aoNr*M$DAJ zY!=&>-hQ6vsi!FZlTQwH9-xXyjQAX=)6e)EGH6LoAoVfoD&}13+);`rQOP7$t*Y)u80;=e zKuRLQKmzmTXzKYH!2TgSIAvB_K_O|^HN)ZYv3Scs3q+~r|D6pQvHoJUZ;lgu@ZGi>S$Yz*Z;Y6$c_n_f%Bm2$8YsUN z>a?LyH0Jc#oQe8XE_YcvO$pO!bq$0Y(m|0?`wH*{1GxeFZM2(lwrKvaT&Eq$f#Nkf-C<+_i{r z78MRoFEul7HsuaMn{PXzw77J>wRP9x#SY*oDP_J|(2Q&hnIm#3N^;rglAQ#l{t<}6 z=to96=O)Oh8-#XE3%PX#%oLTO0rODHnlshvR_Y%F?@m33VI9^l{>+1+%!|<}v1ak&+G(Pl1 zf?-DH+jTrY$lmD45bKd10lH@He5D2FkIYuC!om`SO?P3j04(bgG;eY4$Z=!+49?*P zpaI>&@B44?%*oB^`5YKWE-{b+ssJL)m85=o!_7B)TdgZAm9gZ-*NyVG{O3aI<1LAX zYjl|SQbn=;`7M%3nV> zNnJ5T|81x_1b6dJ=Z^yFOH7cf5L?}W8Q22&Hrp@Psih=sLO%)B&KTa!rURhZl z2r(JC$Adq41D$tKEiMGIhxa9@hsSG^wEp$isn=h}?e(8|7-4al_2y~}VVLLn5g2!U z4H<=;nK+&~lr(W7-2pA!*={3j#%-K^#cb@z3^AkhT84aU`Zb8GmK zZpi#a&I9jhKSV)}L}vKeGuQ8q_oKZ2>FKr>i5(*%u*AxJ5WLcL;iziO%xsf-i;|6~ zh|O$7jJbpiB2?LI*ql#6Hg~Wf(nKPv0_L{V)UQcvIZfC%71a9n&xR<#<+&22RAkmD za(3`N+EOC13^an`foF#Xu&ziOb44R_&r?rba}E8_L+*N=BS|2_Rpr#7;Qu1l4JvcW zaIo{Pf9Fv|xCeGe&l%#RF>%Rkr&chZ;Y{oK`>z_45y~}Eq9T-QqQ=RclBKtvACfqP zo?VxXc6JZb!e0+l+dEbmLQ;=-GB|&2{ox9&P*ys4HI!HycSRlLvNu!-&vX??aU=jxk)q7=BSO-&Pj}Y ztBOjG^LK6VJdN}0sPMu7sVeGdDR! zqW9RuRlcVy&4wp<=WIOPkEZ*u&w)NXg;X9sETdiKg*j4rRr%_K$5_d$J*r%VLjA^& z(4)IWg{*`7cX@2??FY{X0fwJ?N-PT7H%yaZw&2DUhR!SW7ds25XiMis0WA;?NX<$~ zs%&h4p=*u?I0IRk*CVT<8*nBsbGxK9G-Mftf5)+WGJRlAjCv|6G+QJYsoi!%Iz3=@ zh?bNF>FVqGh%gUi{cU*)wbl zF@fYYOAm^Q<7}9t%c0LhaQeuAy2h2*3sQ5P=@re)oizZXN#gD&3&?iM8RWg`vREAs zE6a#j)U=S0M%u}seTXQMEoo~<6PW22#_Ov_WIEFBkqZ1(v6y$ILKbtb4f9PRV>%*( zP!$+8E*>7{r$zQ)4C91Ks51I(ONFkW69cA1iHajk$^9hj4Fyl5oZZWRnXYx%zb8g_ zM)wRoI85)9ZTw<|jQ`~BX0B(hv^jAc!05oXerUmfGqT(!HVKr`gy!G~Wx>$b$K@qV zdqZf3o%TNDhbBQ7ngpqALV_ZW4-*l@TXmP7jDeCN&_3VH*=)x9{5yfmcKtiCq_Dzl z@rF%}@R{8zCM1b-Y+9;yE(CrhrzH55k+8kNy6d`B3)B+Ij&U6g_8c?M74Yye97Urp z#q%ck{)C?wj47WP8gfxTWg^sd%z-V$;dw>`#(02dFo^t79sfsQdAy(cB(sqtm<6~1 z=j2r);Pj%Hu=7~X$AX(Q%!E!RaXTSw-b^S%K59Gj5VRToSpNj|6Yw_tsd3vqx7N8b z38!-1E!S73ckeF!0oH{i>OTYwge2-dr06X)b-PQo9aL`@umm$~U5BLV1VH|Nd}Mc# z-g7$NQ}LOtZq7;aRXK8AfkNm`#hq=5KY6Qu`zx=!@wGUKR^co{rw57Q%HfV62-|bK=+7SBo8ZLi@PWQFpN9|ZpJp#R zs6|T36Udy9cAm`#5}%jB@Aq`%x#TDln?dTt_ypF%^c9F_^S?6zC}-nqjRSS&Yn4+UyS4y?)<6~_qlF2^ zOCProkx|WHYHQ`12DQ~>8#CIBlbg5Rwto>(WaXNNH(Z5~)rXmILV-@;d|jm}0%FZ0 zUtft(pS0Q8=Z>KY*)5s%125tj$-4AOIN0ltgGw4%eNdktHWxF%u)&;}s>v*tjjd}g zj0ach2W6?^aLl(*m(VUyX%k5e))E-T?F7CUC$rx#Bz#Nfo07)KWlvYD!C(FA?z^dA z8!6{#239vPBoYg59vv{|w=U$GM5C(*HOxE1mhlw{h=B1y8`VI8lOq_^mQ8sjV3{d3 z%EyKxigd6E0A=opaommnZv8#1%Ya8fn=3GXAo=La`E&1Q_FC;i{s4s$W7f)YnhP%4 zIAWA|M4Hl)y>-p92W~FHRSHv=+zcA_PLRz32!C>NjzdeL{4vSSCv0HF>CSSC$w_3f zR=wU2u#pJ!aR_4^;ODy_U;+(hp~B>IScisfU~5aOLxdb53=rs4&{Bgd0eTL@Ed@gc zPi6cZaYC1)&=yq;R@^9!3p}+XbyDiVXcR^*jPamD!o14rz5B>ayzm~dp+2<}vtnX!?8W!kt-7k~v^C@!#A@yDE)IJ7ip4PsQeC zxb(9km24TFUFklN#m1<)2&ovX^s=y-WSppqb9C99KC4ZpjFgD_ccwg_o*rhLLsYEf z-*a9C(~-Q=k!_)DB%|Y+wCaFe8qiPzp*|>87(_BPM-}~vy4ZFLwQ9b*UDjMvbT3`v zNqCknd_C^oaVX8xijoJmP7eAHUtR^kv2w|Q^bkdBvIzlZj3FKUx9op`cz%J!ltpnhA;M$y$JIk7El4ll0V#=4O7W1uJ zQ7kM@OmsG*l)x4cs^cGG*l7_NRk&ef>Q=dU#>_@=yBqud<`n^5aN)14r zRj?xj>Ub7Q(l^b0-=-(-3@_N?ULdURIX67IPVXll0lit#38cc`sPvV_DB==cz( zz*mqI5U_+&gR9Sz;$S9gLZ}|C!pTIwAMq+qRX4jryC8Y{fbRuBY*qVuKyZz zjNAO0c!ZI(`1**K48FNT8t#QiXSiZ*LvPV>%-L2P`AA+nGW>STlKV}y?W&ZmQ1_I`k+70vry`FizdgE=^mv}N6 zr*OqbuPWh(gCHYljb37YD^Y8OD3=4=p|dC@SZEKz;HNM|GdBZ?qD3&wvXqn4d)9>} z=9rBQ@PD$%oSD+iY=MXEGxro2-z&_DFWyM{YD&^qTZMS4fXZvWMqwlzlctG5!{4bl z8SxVO&d%nSsD_w1b$PqJGk*Kyn?-v5mVdh^yM4&AWMdL#$M~8Fbi^g0=p~e|8yZD72j!;q{hTeH!Q%<@J;LAsxkU|}r$^0saF{OcE) zt8$1Q2wd-RHj+@yvmiz$tt=9Nk)G#{UIu>6JaB+@kFC%5{!-4YIw%`^;reH@T_Ty; z)y#DnX6C%3UnJ|A=NQcv!m+gYlrBbqo}H!P^xSA8YRtr?aqUzyL^_;NDd}aum&yrlB_z_)%18WQ3&UawP9Ym=fij6t}J|fkiKQ5%X{2 zsk=~(=jX4dR+h^g?b;i*yHMP-Y`A2Kxvx^;sLy-oh*RPcnRneeO;Mnlii1lmG00r* zG!9$6s#uivpZ+?1tQA(J5A5FvmLgg3_?6V&g3_WBN*ofQ!NS}r3?p64DN?zFl+Dy1 z2I2MG8HOkjL1eCH>AY=_hPb%Dv$2`+^qE)@cA4Ch{@5ciP%PjH9$?n|^lTHT-tgfM zCQAJh{Clymxn!n+HgyuNYLHFbv&slis}fBN!g9)BL_?Wge%V0Sum3Zt@$xc!7sv}B z+V%F^PVfmuJUwH?+m;o3br^=yJ18URMSQZYP^&A0n0IvNgkr%RMY%!4DRWeYC#yn? zf!P7>)O&bhjs)dAKgxNb;JYa@SWy7piDa8c$(HSo(dzP&YEvHF=}~!i(!jB)3W33&$-g>*V6~ z%&+yP9xX2=?nRpS&p2IDZ?>`o6;)iinPDqp_pzRAjL5R+Vr|J*z)=#oc7M3Miz)6# z_+5ky24mk7`9qJV+J&*v?WrjWfX%PtKkO3(?mE6GMC zY~F%}A=x+1BpZCN1REp*2ds#E2rsr)kK;^$dTLJ`ITRx6a)zBPhK&VS}n&}(*CUizwheZs#od?JCev+LC_822F- z1a3-lKw^J!MdysY5P)`X5zlg>zyyc6Mk{?~=lBiOZssQPx{m&MXZj>{g1JNiLgwA= z_BV!x&P$ud=DSD<%{A4gl9q*w9U`O9wq&urbH@i)O3kiR7%TNcy|bf2-<%!FjnvMs z(m(H~st1+X5;aqUxR1V|bJ;f1!8tB-OU-Fx-u{v{=?$f)Nj;zMhie^rWQktk0r

    WL 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

    cNfXZ^3RIwi&DEsT{MTZ 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

    YCFsXf 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 +#include +#include + +#define SCREEN_WIDTH 800 +#define SCREEN_HEIGHT 450 + +Font LoadUnicodeFont(const char* fileName, int fontSize, int textureFilter) +{ + int* cp = NULL; // Array to store Unicode codepoints + int capacity = 65536; // Initial capacity + int count = 0; // Counter for codepoints + + // Allocate initial array + cp = (int*)malloc(capacity * sizeof(int)); + if (!cp) return GetFontDefault(); + + // Helper function to add a range of Unicode codepoints + void AddRange(int start, int stop) + { + while (start <= stop) + { + // Expand array if needed + if (count >= capacity) + { + capacity += 1024; + int* newCp = (int*)realloc(cp, capacity * sizeof(int)); + if (!newCp) + { + free(cp); + return GetFontDefault(); + } + cp = newCp; + } + + // Add current codepoint and increment + cp[count] = start; + count++; + start++; + } + } + + // -------------------------------------------------- + // 1. BASIC ASCII CHARACTERS + // -------------------------------------------------- + AddRange(32, 126); // Basic Latin (letters, digits, punctuation) + + // -------------------------------------------------- + // 2. EUROPEAN LANGUAGES (LATIN SCRIPT) + // -------------------------------------------------- + AddRange(0xC0, 0x17F); // Latin-1 Supplement + Latin Extended-A + AddRange(0x180, 0x24F); // Latin Extended-B + AddRange(0x1E00, 0x1EFF); // Latin Extended Additional + AddRange(0x2C60, 0x2C7F); // Latin Extended-C + + // -------------------------------------------------- + // 3. GREEK AND COPTIC + // -------------------------------------------------- + AddRange(0x370, 0x3FF); // Greek and Coptic + AddRange(0x1F00, 0x1FFF); // Greek Extended + + // -------------------------------------------------- + // 4. CYRILLIC SCRIPTS + // -------------------------------------------------- + AddRange(0x400, 0x4FF); // Basic Cyrillic + AddRange(0x500, 0x52F); // Cyrillic Supplement + AddRange(0x2DE0, 0x2DFF); // Cyrillic Extended-A + AddRange(0xA640, 0xA69F); // Cyrillic Extended-B + + // -------------------------------------------------- + // 5. CJK LANGUAGES (CHINESE, JAPANESE, KOREAN) + // -------------------------------------------------- + AddRange(0x4E00, 0x9FFF); // CJK Unified Ideographs + AddRange(0x3400, 0x4DBF); // CJK Extension A + AddRange(0x3000, 0x303F); // CJK Symbols and Punctuation + AddRange(0x3040, 0x309F); // Hiragana (Japanese) + AddRange(0x30A0, 0x30FF); // Katakana (Japanese) + AddRange(0x31F0, 0x31FF); // Katakana Phonetic Extensions + AddRange(0xFF00, 0xFFEF); // Halfwidth and Fullwidth Forms + AddRange(0xAC00, 0xD7AF); // Hangul Syllables (Korean) + AddRange(0x1100, 0x11FF); // Hangul Jamo + + // -------------------------------------------------- + // 6. SOUTHEAST ASIAN LANGUAGES + // -------------------------------------------------- + AddRange(0x0E00, 0x0E7F); // Thai + AddRange(0x0E80, 0x0EFF); // Lao + AddRange(0x1780, 0x17FF); // Khmer + AddRange(0x1000, 0x109F); // Myanmar + AddRange(0x1980, 0x19DF); // New Tai Lue + + // -------------------------------------------------- + // 7. INDIAN SUBCONTINENT LANGUAGES + // -------------------------------------------------- + AddRange(0x900, 0x97F); // Devanagari (Hindi, Sanskrit) + AddRange(0x980, 0x9FF); // Bengali + AddRange(0xA00, 0xA7F); // Gurmukhi (Punjabi) + AddRange(0xA80, 0xAFF); // Gujarati + AddRange(0xB00, 0xB7F); // Oriya + AddRange(0xB80, 0xBFF); // Tamil + AddRange(0xC00, 0xC7F); // Telugu + AddRange(0xC80, 0xCFF); // Kannada + AddRange(0xD00, 0xD7F); // Malayalam + AddRange(0xD80, 0xDFF); // Sinhala + + // -------------------------------------------------- + // 8. MIDDLE EASTERN LANGUAGES + // -------------------------------------------------- + AddRange(0x600, 0x6FF); // Arabic + AddRange(0x750, 0x77F); // Arabic Supplement + AddRange(0x8A0, 0x8FF); // Arabic Extended-A + AddRange(0xFB50, 0xFDFF); // Arabic Presentation Forms-A + AddRange(0x5D0, 0x5EA); // Hebrew + AddRange(0x591, 0x5C7); // Hebrew Extended + AddRange(0x7C0, 0x7FF); // N'Ko + AddRange(0x640, 0x6FF); // Syriac + + // -------------------------------------------------- + // 9. AFRICAN LANGUAGES + // -------------------------------------------------- + AddRange(0x2C80, 0x2CFF); // Coptic + AddRange(0x2D30, 0x2D7F); // Tifinagh + AddRange(0xA6A0, 0xA6FF); // Bamum + AddRange(0xAB00, 0xAB2F); // Ethiopic Extended + + // -------------------------------------------------- + // 10. SPECIAL CHARACTERS AND SYMBOLS + // -------------------------------------------------- + AddRange(0x300, 0x36F); // Combining Diacritical Marks + AddRange(0x1DC0, 0x1DFF); // Combining Diacritical Marks Supplement + AddRange(0x2000, 0x206F); // General Punctuation + AddRange(0x20A0, 0x20CF); // Currency Symbols + AddRange(0x2100, 0x214F); // Letterlike Symbols + AddRange(0x2190, 0x21FF); // Arrows + AddRange(0x2200, 0x22FF); // Mathematical Operators + + + Font result = {0}; + + if (FileExists(fileName)) + result = LoadFontEx(fileName, fontSize, cp, count); + + if (result.texture.id == 0) + result = GetFontDefault(); + + SetTextureFilter(result.texture, textureFilter); + free(cp); + return result; +} + +int main(void) +{ + // Initialization + InitWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "Unicode Font Example"); + SetTargetFPS(60); + + // Load font with Unicode support + Font myFont = LoadUnicodeFont("resources/NotoSansTC-Regular.ttf", 36, TEXTURE_FILTER_BILINEAR); + + // Main game loop + while (!WindowShouldClose()) + { + BeginDrawing(); + ClearBackground(RAYWHITE); + + // Draw text + DrawTextEx(myFont, "English: Hello World!", (Vector2){50, 50}, 36, 1, DARKGRAY); + DrawTextEx(myFont, "Русский: Привет мир!", (Vector2){50, 100}, 36, 0, DARKGRAY); + DrawTextEx(myFont, "中文: 你好世界!", (Vector2){50, 150}, 36, 1, DARKGRAY); + DrawTextEx(myFont, "日本語: こんにちは世界!", (Vector2){50, 200}, 36, 1, DARKGRAY); + + + DrawText("Font: Noto Sans TC Thin. © 2014-2020 Adobe(http://www.adobe.com/). License: SIL Open Font License 1.1", 10, SCREEN_HEIGHT - 20, 10, GRAY); + + EndDrawing(); + } + + // Cleanup + UnloadFont(myFont); + CloseWindow(); + + return 0; +} From 4184a5b25140366974bd039ba4876ff7e4cf9c79 Mon Sep 17 00:00:00 2001 From: Gunko Vadim Date: Fri, 11 Apr 2025 18:43:12 +0500 Subject: [PATCH 003/328] Update text_unicode_font_example.c --- examples/text/text_unicode_font_example.c | 196 +++++++++++----------- 1 file changed, 98 insertions(+), 98 deletions(-) diff --git a/examples/text/text_unicode_font_example.c b/examples/text/text_unicode_font_example.c index 486b1058c..494ce159e 100644 --- a/examples/text/text_unicode_font_example.c +++ b/examples/text/text_unicode_font_example.c @@ -4,178 +4,178 @@ #define SCREEN_WIDTH 800 #define SCREEN_HEIGHT 450 +#define INITIAL_CAPACITY 65536 // 2^16 - sufficient for most Unicode BMP characters + + +static int AddCodeRange(int* codePoints, int* count, int start, int stop) +{ + // Verify we have enough capacity for this range + if (*count + (stop - start + 1) > INITIAL_CAPACITY) { + return 0; // Not enough space + } + + // Add all code points in the range + while (start <= stop) { + codePoints[*count] = start; + (*count)++; + start++; + } + return 1; // Success +} Font LoadUnicodeFont(const char* fileName, int fontSize, int textureFilter) { - int* cp = NULL; // Array to store Unicode codepoints - int capacity = 65536; // Initial capacity - int count = 0; // Counter for codepoints - - // Allocate initial array - cp = (int*)malloc(capacity * sizeof(int)); - if (!cp) return GetFontDefault(); - - // Helper function to add a range of Unicode codepoints - void AddRange(int start, int stop) - { - while (start <= stop) - { - // Expand array if needed - if (count >= capacity) - { - capacity += 1024; - int* newCp = (int*)realloc(cp, capacity * sizeof(int)); - if (!newCp) - { - free(cp); - return GetFontDefault(); - } - cp = newCp; - } - - // Add current codepoint and increment - cp[count] = start; - count++; - start++; - } - } + // Allocate memory for code points (fixed size - no reallocation needed) + int* codePoints = (int*)malloc(INITIAL_CAPACITY * sizeof(int)); + if (!codePoints) return GetFontDefault(); + int count = 0; // Tracks number of added code points + // -------------------------------------------------- // 1. BASIC ASCII CHARACTERS // -------------------------------------------------- - AddRange(32, 126); // Basic Latin (letters, digits, punctuation) + AddCodeRange(codePoints, &count, 32, 126); // Basic Latin (letters, digits, punctuation) // -------------------------------------------------- // 2. EUROPEAN LANGUAGES (LATIN SCRIPT) // -------------------------------------------------- - AddRange(0xC0, 0x17F); // Latin-1 Supplement + Latin Extended-A - AddRange(0x180, 0x24F); // Latin Extended-B - AddRange(0x1E00, 0x1EFF); // Latin Extended Additional - AddRange(0x2C60, 0x2C7F); // Latin Extended-C + AddCodeRange(codePoints, &count, 0xC0, 0x17F); // Latin-1 Supplement + Latin Extended-A + AddCodeRange(codePoints, &count, 0x180, 0x24F); // Latin Extended-B + AddCodeRange(codePoints, &count, 0x1E00, 0x1EFF); // Latin Extended Additional + AddCodeRange(codePoints, &count, 0x2C60, 0x2C7F); // Latin Extended-C // -------------------------------------------------- // 3. GREEK AND COPTIC // -------------------------------------------------- - AddRange(0x370, 0x3FF); // Greek and Coptic - AddRange(0x1F00, 0x1FFF); // Greek Extended + AddCodeRange(codePoints, &count, 0x370, 0x3FF); // Greek and Coptic + AddCodeRange(codePoints, &count, 0x1F00, 0x1FFF); // Greek Extended // -------------------------------------------------- // 4. CYRILLIC SCRIPTS // -------------------------------------------------- - AddRange(0x400, 0x4FF); // Basic Cyrillic - AddRange(0x500, 0x52F); // Cyrillic Supplement - AddRange(0x2DE0, 0x2DFF); // Cyrillic Extended-A - AddRange(0xA640, 0xA69F); // Cyrillic Extended-B + AddCodeRange(codePoints, &count, 0x400, 0x4FF); // Basic Cyrillic + AddCodeRange(codePoints, &count, 0x500, 0x52F); // Cyrillic Supplement + AddCodeRange(codePoints, &count, 0x2DE0, 0x2DFF); // Cyrillic Extended-A + AddCodeRange(codePoints, &count, 0xA640, 0xA69F); // Cyrillic Extended-B // -------------------------------------------------- // 5. CJK LANGUAGES (CHINESE, JAPANESE, KOREAN) // -------------------------------------------------- - AddRange(0x4E00, 0x9FFF); // CJK Unified Ideographs - AddRange(0x3400, 0x4DBF); // CJK Extension A - AddRange(0x3000, 0x303F); // CJK Symbols and Punctuation - AddRange(0x3040, 0x309F); // Hiragana (Japanese) - AddRange(0x30A0, 0x30FF); // Katakana (Japanese) - AddRange(0x31F0, 0x31FF); // Katakana Phonetic Extensions - AddRange(0xFF00, 0xFFEF); // Halfwidth and Fullwidth Forms - AddRange(0xAC00, 0xD7AF); // Hangul Syllables (Korean) - AddRange(0x1100, 0x11FF); // Hangul Jamo + AddCodeRange(codePoints, &count, 0x4E00, 0x9FFF); // CJK Unified Ideographs + AddCodeRange(codePoints, &count, 0x3400, 0x4DBF); // CJK Extension A + AddCodeRange(codePoints, &count, 0x3000, 0x303F); // CJK Symbols and Punctuation + AddCodeRange(codePoints, &count, 0x3040, 0x309F); // Hiragana (Japanese) + AddCodeRange(codePoints, &count, 0x30A0, 0x30FF); // Katakana (Japanese) + AddCodeRange(codePoints, &count, 0x31F0, 0x31FF); // Katakana Phonetic Extensions + AddCodeRange(codePoints, &count, 0xFF00, 0xFFEF); // Halfwidth and Fullwidth Forms + AddCodeRange(codePoints, &count, 0xAC00, 0xD7AF); // Hangul Syllables (Korean) + AddCodeRange(codePoints, &count, 0x1100, 0x11FF); // Hangul Jamo // -------------------------------------------------- // 6. SOUTHEAST ASIAN LANGUAGES // -------------------------------------------------- - AddRange(0x0E00, 0x0E7F); // Thai - AddRange(0x0E80, 0x0EFF); // Lao - AddRange(0x1780, 0x17FF); // Khmer - AddRange(0x1000, 0x109F); // Myanmar - AddRange(0x1980, 0x19DF); // New Tai Lue + AddCodeRange(codePoints, &count, 0x0E00, 0x0E7F); // Thai + AddCodeRange(codePoints, &count, 0x0E80, 0x0EFF); // Lao + AddCodeRange(codePoints, &count, 0x1780, 0x17FF); // Khmer + AddCodeRange(codePoints, &count, 0x1000, 0x109F); // Myanmar + AddCodeRange(codePoints, &count, 0x1980, 0x19DF); // New Tai Lue // -------------------------------------------------- // 7. INDIAN SUBCONTINENT LANGUAGES // -------------------------------------------------- - AddRange(0x900, 0x97F); // Devanagari (Hindi, Sanskrit) - AddRange(0x980, 0x9FF); // Bengali - AddRange(0xA00, 0xA7F); // Gurmukhi (Punjabi) - AddRange(0xA80, 0xAFF); // Gujarati - AddRange(0xB00, 0xB7F); // Oriya - AddRange(0xB80, 0xBFF); // Tamil - AddRange(0xC00, 0xC7F); // Telugu - AddRange(0xC80, 0xCFF); // Kannada - AddRange(0xD00, 0xD7F); // Malayalam - AddRange(0xD80, 0xDFF); // Sinhala + AddCodeRange(codePoints, &count, 0x900, 0x97F); // Devanagari (Hindi, Sanskrit) + AddCodeRange(codePoints, &count, 0x980, 0x9FF); // Bengali + AddCodeRange(codePoints, &count, 0xA00, 0xA7F); // Gurmukhi (Punjabi) + AddCodeRange(codePoints, &count, 0xA80, 0xAFF); // Gujarati + AddCodeRange(codePoints, &count, 0xB00, 0xB7F); // Oriya + AddCodeRange(codePoints, &count, 0xB80, 0xBFF); // Tamil + AddCodeRange(codePoints, &count, 0xC00, 0xC7F); // Telugu + AddCodeRange(codePoints, &count, 0xC80, 0xCFF); // Kannada + AddCodeRange(codePoints, &count, 0xD00, 0xD7F); // Malayalam + AddCodeRange(codePoints, &count, 0xD80, 0xDFF); // Sinhala // -------------------------------------------------- // 8. MIDDLE EASTERN LANGUAGES // -------------------------------------------------- - AddRange(0x600, 0x6FF); // Arabic - AddRange(0x750, 0x77F); // Arabic Supplement - AddRange(0x8A0, 0x8FF); // Arabic Extended-A - AddRange(0xFB50, 0xFDFF); // Arabic Presentation Forms-A - AddRange(0x5D0, 0x5EA); // Hebrew - AddRange(0x591, 0x5C7); // Hebrew Extended - AddRange(0x7C0, 0x7FF); // N'Ko - AddRange(0x640, 0x6FF); // Syriac + AddCodeRange(codePoints, &count, 0x600, 0x6FF); // Arabic + AddCodeRange(codePoints, &count, 0x750, 0x77F); // Arabic Supplement + AddCodeRange(codePoints, &count, 0x8A0, 0x8FF); // Arabic Extended-A + AddCodeRange(codePoints, &count, 0xFB50, 0xFDFF); // Arabic Presentation Forms-A + AddCodeRange(codePoints, &count, 0x5D0, 0x5EA); // Hebrew + AddCodeRange(codePoints, &count, 0x591, 0x5C7); // Hebrew Extended + AddCodeRange(codePoints, &count, 0x7C0, 0x7FF); // N'Ko + AddCodeRange(codePoints, &count, 0x640, 0x6FF); // Syriac // -------------------------------------------------- // 9. AFRICAN LANGUAGES // -------------------------------------------------- - AddRange(0x2C80, 0x2CFF); // Coptic - AddRange(0x2D30, 0x2D7F); // Tifinagh - AddRange(0xA6A0, 0xA6FF); // Bamum - AddRange(0xAB00, 0xAB2F); // Ethiopic Extended + AddCodeRange(codePoints, &count, 0x2C80, 0x2CFF); // Coptic + AddCodeRange(codePoints, &count, 0x2D30, 0x2D7F); // Tifinagh + AddCodeRange(codePoints, &count, 0xA6A0, 0xA6FF); // Bamum + AddCodeRange(codePoints, &count, 0xAB00, 0xAB2F); // Ethiopic Extended // -------------------------------------------------- // 10. SPECIAL CHARACTERS AND SYMBOLS // -------------------------------------------------- - AddRange(0x300, 0x36F); // Combining Diacritical Marks - AddRange(0x1DC0, 0x1DFF); // Combining Diacritical Marks Supplement - AddRange(0x2000, 0x206F); // General Punctuation - AddRange(0x20A0, 0x20CF); // Currency Symbols - AddRange(0x2100, 0x214F); // Letterlike Symbols - AddRange(0x2190, 0x21FF); // Arrows - AddRange(0x2200, 0x22FF); // Mathematical Operators + AddCodeRange(codePoints, &count, 0x300, 0x36F); // Combining Diacritical Marks + AddCodeRange(codePoints, &count, 0x1DC0, 0x1DFF); // Combining Diacritical Marks Supplement + AddCodeRange(codePoints, &count, 0x2000, 0x206F); // General Punctuation + AddCodeRange(codePoints, &count, 0x20A0, 0x20CF); // Currency Symbols + AddCodeRange(codePoints, &count, 0x2100, 0x214F); // Letterlike Symbols + AddCodeRange(codePoints, &count, 0x2190, 0x21FF); // Arrows + AddCodeRange(codePoints, &count, 0x2200, 0x22FF); // Mathematical Operators - Font result = {0}; - if (FileExists(fileName)) - result = LoadFontEx(fileName, fontSize, cp, count); + // Attempt to load the font with collected code points + if (FileExists(fileName)) { + result = LoadFontEx(fileName, fontSize, codePoints, count); + } - if (result.texture.id == 0) + // Fallback to default font if loading fails + if (result.texture.id == 0) { result = GetFontDefault(); + } + // Apply texture filtering SetTextureFilter(result.texture, textureFilter); - free(cp); + + // Clean up + free(codePoints); return result; } +/** + * Main entry point + */ int main(void) { - // Initialization + // Initialize window InitWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "Unicode Font Example"); SetTargetFPS(60); // Load font with Unicode support Font myFont = LoadUnicodeFont("resources/NotoSansTC-Regular.ttf", 36, TEXTURE_FILTER_BILINEAR); - // Main game loop + // Main render loop while (!WindowShouldClose()) { BeginDrawing(); ClearBackground(RAYWHITE); - // Draw text + // Render test strings in different languages DrawTextEx(myFont, "English: Hello World!", (Vector2){50, 50}, 36, 1, DARKGRAY); DrawTextEx(myFont, "Русский: Привет мир!", (Vector2){50, 100}, 36, 0, DARKGRAY); DrawTextEx(myFont, "中文: 你好世界!", (Vector2){50, 150}, 36, 1, DARKGRAY); DrawTextEx(myFont, "日本語: こんにちは世界!", (Vector2){50, 200}, 36, 1, DARKGRAY); - - DrawText("Font: Noto Sans TC Thin. © 2014-2020 Adobe(http://www.adobe.com/). License: SIL Open Font License 1.1", 10, SCREEN_HEIGHT - 20, 10, GRAY); - + // Display font attribution + DrawText("Font: Noto Sans TC. License: SIL Open Font License 1.1", + 10, SCREEN_HEIGHT - 20, 10, GRAY); EndDrawing(); } - // Cleanup + // Cleanup resources UnloadFont(myFont); CloseWindow(); From 0d8608470964a88eee1f586f3e3fbed8829ff742 Mon Sep 17 00:00:00 2001 From: Gunko Vadim Date: Sat, 12 Apr 2025 07:07:14 +0500 Subject: [PATCH 004/328] Update text_unicode_font_example.c The creation of the array has been rewritten, the size of the example has been reduced --- examples/text/text_unicode_font_example.c | 194 ++++++++-------------- 1 file changed, 69 insertions(+), 125 deletions(-) diff --git a/examples/text/text_unicode_font_example.c b/examples/text/text_unicode_font_example.c index 494ce159e..316d8c874 100644 --- a/examples/text/text_unicode_font_example.c +++ b/examples/text/text_unicode_font_example.c @@ -1,148 +1,92 @@ #include -#include #include #define SCREEN_WIDTH 800 #define SCREEN_HEIGHT 450 -#define INITIAL_CAPACITY 65536 // 2^16 - sufficient for most Unicode BMP characters +typedef struct { + int* data; + int count; + int capacity; +} CodepointsArray; -static int AddCodeRange(int* codePoints, int* count, int start, int stop) -{ - // Verify we have enough capacity for this range - if (*count + (stop - start + 1) > INITIAL_CAPACITY) { - return 0; // Not enough space +static void AddRange(CodepointsArray* array, int start, int stop) { + int rangeSize = stop - start + 1; + + if (array->count + rangeSize > array->capacity) { + array->capacity = array->count + rangeSize + 1024; + array->data = (int*)MemRealloc(array->data, array->capacity * sizeof(int)); + if (!array->data) { + TraceLog(LOG_ERROR, "FONTUTIL: Memory allocation failed"); + exit(1); + } } - - // Add all code points in the range - while (start <= stop) { - codePoints[*count] = start; - (*count)++; - start++; + + for (int i = start; i <= stop; i++) { + array->data[array->count++] = i; } - return 1; // Success } -Font LoadUnicodeFont(const char* fileName, int fontSize, int textureFilter) -{ - // Allocate memory for code points (fixed size - no reallocation needed) - int* codePoints = (int*)malloc(INITIAL_CAPACITY * sizeof(int)); - if (!codePoints) return GetFontDefault(); - - int count = 0; // Tracks number of added code points +Font LoadUnicodeFont(const char* fileName, int fontSize, int textureFilter) { + CodepointsArray cp = {0}; + cp.capacity = 2048; + cp.data = (int*)MemAlloc(cp.capacity * sizeof(int)); - // -------------------------------------------------- - // 1. BASIC ASCII CHARACTERS - // -------------------------------------------------- - AddCodeRange(codePoints, &count, 32, 126); // Basic Latin (letters, digits, punctuation) - - // -------------------------------------------------- - // 2. EUROPEAN LANGUAGES (LATIN SCRIPT) - // -------------------------------------------------- - AddCodeRange(codePoints, &count, 0xC0, 0x17F); // Latin-1 Supplement + Latin Extended-A - AddCodeRange(codePoints, &count, 0x180, 0x24F); // Latin Extended-B - AddCodeRange(codePoints, &count, 0x1E00, 0x1EFF); // Latin Extended Additional - AddCodeRange(codePoints, &count, 0x2C60, 0x2C7F); // Latin Extended-C - - // -------------------------------------------------- - // 3. GREEK AND COPTIC - // -------------------------------------------------- - AddCodeRange(codePoints, &count, 0x370, 0x3FF); // Greek and Coptic - AddCodeRange(codePoints, &count, 0x1F00, 0x1FFF); // Greek Extended - - // -------------------------------------------------- - // 4. CYRILLIC SCRIPTS - // -------------------------------------------------- - AddCodeRange(codePoints, &count, 0x400, 0x4FF); // Basic Cyrillic - AddCodeRange(codePoints, &count, 0x500, 0x52F); // Cyrillic Supplement - AddCodeRange(codePoints, &count, 0x2DE0, 0x2DFF); // Cyrillic Extended-A - AddCodeRange(codePoints, &count, 0xA640, 0xA69F); // Cyrillic Extended-B - - // -------------------------------------------------- - // 5. CJK LANGUAGES (CHINESE, JAPANESE, KOREAN) - // -------------------------------------------------- - AddCodeRange(codePoints, &count, 0x4E00, 0x9FFF); // CJK Unified Ideographs - AddCodeRange(codePoints, &count, 0x3400, 0x4DBF); // CJK Extension A - AddCodeRange(codePoints, &count, 0x3000, 0x303F); // CJK Symbols and Punctuation - AddCodeRange(codePoints, &count, 0x3040, 0x309F); // Hiragana (Japanese) - AddCodeRange(codePoints, &count, 0x30A0, 0x30FF); // Katakana (Japanese) - AddCodeRange(codePoints, &count, 0x31F0, 0x31FF); // Katakana Phonetic Extensions - AddCodeRange(codePoints, &count, 0xFF00, 0xFFEF); // Halfwidth and Fullwidth Forms - AddCodeRange(codePoints, &count, 0xAC00, 0xD7AF); // Hangul Syllables (Korean) - AddCodeRange(codePoints, &count, 0x1100, 0x11FF); // Hangul Jamo - - // -------------------------------------------------- - // 6. SOUTHEAST ASIAN LANGUAGES - // -------------------------------------------------- - AddCodeRange(codePoints, &count, 0x0E00, 0x0E7F); // Thai - AddCodeRange(codePoints, &count, 0x0E80, 0x0EFF); // Lao - AddCodeRange(codePoints, &count, 0x1780, 0x17FF); // Khmer - AddCodeRange(codePoints, &count, 0x1000, 0x109F); // Myanmar - AddCodeRange(codePoints, &count, 0x1980, 0x19DF); // New Tai Lue - - // -------------------------------------------------- - // 7. INDIAN SUBCONTINENT LANGUAGES - // -------------------------------------------------- - AddCodeRange(codePoints, &count, 0x900, 0x97F); // Devanagari (Hindi, Sanskrit) - AddCodeRange(codePoints, &count, 0x980, 0x9FF); // Bengali - AddCodeRange(codePoints, &count, 0xA00, 0xA7F); // Gurmukhi (Punjabi) - AddCodeRange(codePoints, &count, 0xA80, 0xAFF); // Gujarati - AddCodeRange(codePoints, &count, 0xB00, 0xB7F); // Oriya - AddCodeRange(codePoints, &count, 0xB80, 0xBFF); // Tamil - AddCodeRange(codePoints, &count, 0xC00, 0xC7F); // Telugu - AddCodeRange(codePoints, &count, 0xC80, 0xCFF); // Kannada - AddCodeRange(codePoints, &count, 0xD00, 0xD7F); // Malayalam - AddCodeRange(codePoints, &count, 0xD80, 0xDFF); // Sinhala - - // -------------------------------------------------- - // 8. MIDDLE EASTERN LANGUAGES - // -------------------------------------------------- - AddCodeRange(codePoints, &count, 0x600, 0x6FF); // Arabic - AddCodeRange(codePoints, &count, 0x750, 0x77F); // Arabic Supplement - AddCodeRange(codePoints, &count, 0x8A0, 0x8FF); // Arabic Extended-A - AddCodeRange(codePoints, &count, 0xFB50, 0xFDFF); // Arabic Presentation Forms-A - AddCodeRange(codePoints, &count, 0x5D0, 0x5EA); // Hebrew - AddCodeRange(codePoints, &count, 0x591, 0x5C7); // Hebrew Extended - AddCodeRange(codePoints, &count, 0x7C0, 0x7FF); // N'Ko - AddCodeRange(codePoints, &count, 0x640, 0x6FF); // Syriac - - // -------------------------------------------------- - // 9. AFRICAN LANGUAGES - // -------------------------------------------------- - AddCodeRange(codePoints, &count, 0x2C80, 0x2CFF); // Coptic - AddCodeRange(codePoints, &count, 0x2D30, 0x2D7F); // Tifinagh - AddCodeRange(codePoints, &count, 0xA6A0, 0xA6FF); // Bamum - AddCodeRange(codePoints, &count, 0xAB00, 0xAB2F); // Ethiopic Extended - - // -------------------------------------------------- - // 10. SPECIAL CHARACTERS AND SYMBOLS - // -------------------------------------------------- - AddCodeRange(codePoints, &count, 0x300, 0x36F); // Combining Diacritical Marks - AddCodeRange(codePoints, &count, 0x1DC0, 0x1DFF); // Combining Diacritical Marks Supplement - AddCodeRange(codePoints, &count, 0x2000, 0x206F); // General Punctuation - AddCodeRange(codePoints, &count, 0x20A0, 0x20CF); // Currency Symbols - AddCodeRange(codePoints, &count, 0x2100, 0x214F); // Letterlike Symbols - AddCodeRange(codePoints, &count, 0x2190, 0x21FF); // Arrows - AddCodeRange(codePoints, &count, 0x2200, 0x22FF); // Mathematical Operators + if (!cp.data) { + TraceLog(LOG_ERROR, "FONTUTIL: Initial allocation failed"); + return GetFontDefault(); + } - Font result = {0}; + // Basic ASCII + AddRange(&cp, 32, 126); + + // European Languages + AddRange(&cp, 0xC0, 0x17F); + AddRange(&cp, 0x180, 0x24F); + AddRange(&cp, 0x1E00, 0x1EFF); + AddRange(&cp, 0x2C60, 0x2C7F); + + // Greek + AddRange(&cp, 0x370, 0x3FF); + AddRange(&cp, 0x1F00, 0x1FFF); + + // Cyrillic + AddRange(&cp, 0x400, 0x4FF); + AddRange(&cp, 0x500, 0x52F); + AddRange(&cp, 0x2DE0, 0x2DFF); + AddRange(&cp, 0xA640, 0xA69F); + + // CJK + AddRange(&cp, 0x4E00, 0x9FFF); + AddRange(&cp, 0x3400, 0x4DBF); + AddRange(&cp, 0x3000, 0x303F); + AddRange(&cp, 0x3040, 0x309F); + AddRange(&cp, 0x30A0, 0x30FF); + AddRange(&cp, 0x31F0, 0x31FF); + AddRange(&cp, 0xFF00, 0xFFEF); + AddRange(&cp, 0xAC00, 0xD7AF); + AddRange(&cp, 0x1100, 0x11FF); + + // Other + AddRange(&cp, 0x900, 0x97F); // Devanagari + AddRange(&cp, 0x600, 0x6FF); // Arabic + AddRange(&cp, 0x5D0, 0x5EA); // Hebrew + + Font font = {0}; - // Attempt to load the font with collected code points if (FileExists(fileName)) { - result = LoadFontEx(fileName, fontSize, codePoints, count); + font = LoadFontEx(fileName, fontSize, cp.data, cp.count); } - // Fallback to default font if loading fails - if (result.texture.id == 0) { - result = GetFontDefault(); + if (font.texture.id == 0) { + font = GetFontDefault(); + TraceLog(LOG_WARNING, "FONTUTIL: Using default font"); } - // Apply texture filtering - SetTextureFilter(result.texture, textureFilter); + SetTextureFilter(font.texture, textureFilter); + MemFree(cp.data); - // Clean up - free(codePoints); - return result; + return font; } /** From 53cbd3cb11ca0e40f7b22fa25dceb9f8cb897a5b Mon Sep 17 00:00:00 2001 From: Gunko Vadim Date: Sat, 12 Apr 2025 07:10:14 +0500 Subject: [PATCH 005/328] rename --- .../text/{text_unicode_font_example.c => text_unicode_font.c} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename examples/text/{text_unicode_font_example.c => text_unicode_font.c} (100%) diff --git a/examples/text/text_unicode_font_example.c b/examples/text/text_unicode_font.c similarity index 100% rename from examples/text/text_unicode_font_example.c rename to examples/text/text_unicode_font.c From b618d7b35bebc095b16af98a47acfa45f32d6f3d Mon Sep 17 00:00:00 2001 From: Moros Smith Date: Sat, 17 May 2025 21:08:07 -0400 Subject: [PATCH 006/328] use parentElement's dimensions for width/height --- src/platforms/rcore_web.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/platforms/rcore_web.c b/src/platforms/rcore_web.c index bf5a6ba5a..cf2ce0065 100644 --- a/src/platforms/rcore_web.c +++ b/src/platforms/rcore_web.c @@ -1681,9 +1681,9 @@ static EM_BOOL EmscriptenResizeCallback(int eventType, const EmscriptenUiEvent * // This event is called whenever the window changes sizes, // so the size of the canvas object is explicitly retrieved below - int width = EM_ASM_INT( return window.innerWidth; ); - int height = EM_ASM_INT( return window.innerHeight; ); - + int width = EM_ASM_INT( return (!!document.fullscreenElement) ? window.innerWidth : Module.canvas.parentElement.clientWidth; ); + int height = EM_ASM_INT( return (!!document.fullscreenElement) ? window.innerHeight : Module.canvas.parentElement.clientHeight; ); + if (width < (int)CORE.Window.screenMin.width) width = CORE.Window.screenMin.width; else if ((width > (int)CORE.Window.screenMax.width) && (CORE.Window.screenMax.width > 0)) width = CORE.Window.screenMax.width; From d0d42e78ead76e870ae571e81978e67ce231c2d4 Mon Sep 17 00:00:00 2001 From: Moros Smith Date: Sat, 17 May 2025 21:08:35 -0400 Subject: [PATCH 007/328] inform glfw that a change of window size has taken place --- src/platforms/rcore_web.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/platforms/rcore_web.c b/src/platforms/rcore_web.c index cf2ce0065..ad64a2595 100644 --- a/src/platforms/rcore_web.c +++ b/src/platforms/rcore_web.c @@ -1692,6 +1692,8 @@ static EM_BOOL EmscriptenResizeCallback(int eventType, const EmscriptenUiEvent * emscripten_set_canvas_element_size(GetCanvasId(), width, height); + glfwSetWindowSize(platform.handle, width, height); // inform glfw of the new size + SetupViewport(width, height); // Reset viewport and projection matrix for new size CORE.Window.currentFbo.width = width; From 358917ffc3103fc0baba29fc4a7bce2ab4ba4bf0 Mon Sep 17 00:00:00 2001 From: Moros Smith Date: Sat, 17 May 2025 21:08:57 -0400 Subject: [PATCH 008/328] trigger resize event when going into and out of fullscreen mode --- src/platforms/rcore_web.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/platforms/rcore_web.c b/src/platforms/rcore_web.c index ad64a2595..cb77a8575 100644 --- a/src/platforms/rcore_web.c +++ b/src/platforms/rcore_web.c @@ -1662,6 +1662,9 @@ static EM_BOOL EmscriptenFullscreenChangeCallback(int eventType, const Emscripte } } + // trigger resize event after a brief pause to ensure the canvas exists to resize + EM_ASM({ setTimeout(function() { window.dispatchEvent(new Event("resize")); }, 50); }); + return 1; // The event was consumed by the callback handler } From cf2099f18a59116e545e15db3e67aa3aee9b2770 Mon Sep 17 00:00:00 2001 From: Moros Smith Date: Sat, 24 May 2025 20:33:27 -0400 Subject: [PATCH 009/328] the holy grail --- src/platforms/rcore_web.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/platforms/rcore_web.c b/src/platforms/rcore_web.c index cb77a8575..117a2348e 100644 --- a/src/platforms/rcore_web.c +++ b/src/platforms/rcore_web.c @@ -1131,7 +1131,15 @@ int InitPlatform(void) if ((CORE.Window.flags & FLAG_WINDOW_UNDECORATED) > 0) glfwWindowHint(GLFW_DECORATED, GLFW_FALSE); // Border and buttons on Window else glfwWindowHint(GLFW_DECORATED, GLFW_TRUE); // Decorated window - if ((CORE.Window.flags & FLAG_WINDOW_RESIZABLE) > 0) glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE); // Resizable window + if ((CORE.Window.flags & FLAG_WINDOW_RESIZABLE) > 0) + { + glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE); // Resizable window + + // bypass hidpi code block in libglfw.js + // https://github.com/raysan5/raylib/pull/4945#issuecomment-2906956170 + //------------------------------------------------------------------------ + glfwWindowHint(GLFW_SCALE_TO_MONITOR, GLFW_TRUE); + } else glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE); // Avoid window being resizable // Disable FLAG_WINDOW_MINIMIZED, not supported on initialization From 8ef6473d33f3b81e0c31bcc467c4ab6c594299e3 Mon Sep 17 00:00:00 2001 From: Moros Smith Date: Sun, 25 May 2025 18:58:19 -0400 Subject: [PATCH 010/328] return to ray's expected resize behavior --- src/platforms/rcore_web.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/platforms/rcore_web.c b/src/platforms/rcore_web.c index 117a2348e..2e3ba9a17 100644 --- a/src/platforms/rcore_web.c +++ b/src/platforms/rcore_web.c @@ -1692,8 +1692,8 @@ static EM_BOOL EmscriptenResizeCallback(int eventType, const EmscriptenUiEvent * // This event is called whenever the window changes sizes, // so the size of the canvas object is explicitly retrieved below - int width = EM_ASM_INT( return (!!document.fullscreenElement) ? window.innerWidth : Module.canvas.parentElement.clientWidth; ); - int height = EM_ASM_INT( return (!!document.fullscreenElement) ? window.innerHeight : Module.canvas.parentElement.clientHeight; ); + int width = EM_ASM_INT( return window.innerWidth; ); + int height = EM_ASM_INT( return window.innerHeight; ); if (width < (int)CORE.Window.screenMin.width) width = CORE.Window.screenMin.width; else if ((width > (int)CORE.Window.screenMax.width) && (CORE.Window.screenMax.width > 0)) width = CORE.Window.screenMax.width; From f7fe8b88cbed5bba641588f5750f83ffca0d271d Mon Sep 17 00:00:00 2001 From: Moros Smith Date: Wed, 28 May 2025 17:46:32 -0400 Subject: [PATCH 011/328] add EmscriptenKeyboardCallback to consume key events --- src/platforms/rcore_web.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/platforms/rcore_web.c b/src/platforms/rcore_web.c index bf5a6ba5a..1c61052a9 100644 --- a/src/platforms/rcore_web.c +++ b/src/platforms/rcore_web.c @@ -137,6 +137,7 @@ static EM_BOOL EmscriptenFocusCallback(int eventType, const EmscriptenFocusEvent static EM_BOOL EmscriptenVisibilityChangeCallback(int eventType, const EmscriptenVisibilityChangeEvent *visibilityChangeEvent, void *userData); // Emscripten input callback events +static EM_BOOL EmscriptenKeyboardCallback(int eventType, const EmscriptenKeyboardEvent *keyboardEvent, void *userData); static EM_BOOL EmscriptenMouseMoveCallback(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData); static EM_BOOL EmscriptenMouseCallback(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData); static EM_BOOL EmscriptenPointerlockCallback(int eventType, const EmscriptenPointerlockChangeEvent *pointerlockChangeEvent, void *userData); @@ -1362,9 +1363,11 @@ int InitPlatform(void) // Trigger this once to get initial window sizing EmscriptenResizeCallback(EMSCRIPTEN_EVENT_RESIZE, NULL, NULL); - // Support keyboard events -> Not used, GLFW.JS takes care of that - // emscripten_set_keypress_callback("#canvas", NULL, 1, EmscriptenKeyboardCallback); - // emscripten_set_keydown_callback("#canvas", NULL, 1, EmscriptenKeyboardCallback); + // Support keyboard events + // NOTE: used only to consume keyboard events. GLFW.JS takes care of + // the actual input. + emscripten_set_keypress_callback(GetCanvasId(), NULL, 1, EmscriptenKeyboardCallback); + emscripten_set_keydown_callback(GetCanvasId(), NULL, 1, EmscriptenKeyboardCallback); // Support mouse events emscripten_set_click_callback(GetCanvasId(), NULL, 1, EmscriptenMouseCallback); @@ -1620,6 +1623,14 @@ static void MouseCursorPosCallback(GLFWwindow *window, double x, double y) #endif } +static EM_BOOL EmscriptenKeyboardCallback(int eventType, const EmscriptenKeyboardEvent *keyboardEvent, void *userData) +{ + // NOTE: handled by GLFW, this is only to consume the keyboard events so we + // make use of F-keys and other shortcuts without triggering browser + // functions. + return 1; // The event was consumed by the callback handler +} + static EM_BOOL EmscriptenMouseMoveCallback(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData) { // To emulate the GLFW_RAW_MOUSE_MOTION property. From 060bd787b1051e1974b8efd7ca048a9c320f8c63 Mon Sep 17 00:00:00 2001 From: katonar Date: Thu, 5 Jun 2025 15:50:07 +0200 Subject: [PATCH 012/328] Refactor: Replace DRM swap buffer implementation with asynchronous page-flipping and framebuffer caching The original implementation created/destroyed framebuffers (FBs) per-frame, leading to kernel overhead and screen tearing. This commit replaces it with a different approach using: - Asynchronous `drmModePageFlip()` with vblank sync - Framebuffer caching to reduce repeated FB creation/removal operations - Proper resource management through BO callbacks and buffer release synchronization - Added error handling for busy displays, cache overflows, and flip failures - Event-driven cleanup via page_flip_handler to prevent GPU/scanout conflicts Co-authored-by: rob-bits --- src/platforms/rcore_drm.c | 245 ++++++++++++++++++++++++++++++++++---- 1 file changed, 220 insertions(+), 25 deletions(-) diff --git a/src/platforms/rcore_drm.c b/src/platforms/rcore_drm.c index 3ec3135e1..9aebe6cf0 100644 --- a/src/platforms/rcore_drm.c +++ b/src/platforms/rcore_drm.c @@ -71,6 +71,21 @@ #include "EGL/egl.h" // Native platform windowing system interface #include "EGL/eglext.h" // EGL extensions +#include // for drmHandleEvent poll +#include //for EBUSY, EAGAIN + +#define MAX_CACHED_BOS 3 + +typedef struct { + struct gbm_bo *bo; + uint32_t fb_id; // DRM framebuffer ID +} FramebufferCache; + +static FramebufferCache fbCache[MAX_CACHED_BOS]; +static volatile int fbCacheCount = 0; +static volatile bool pendingFlip = false; +static bool crtcSet = false; + #ifndef EGL_OPENGL_ES3_BIT #define EGL_OPENGL_ES3_BIT 0x40 #endif @@ -217,6 +232,7 @@ static const short linuxToRaylibMap[KEYMAP_SIZE] = { //---------------------------------------------------------------------------------- // Module Internal Functions Declaration //---------------------------------------------------------------------------------- +int InitSwapScreenBuffer(void); int InitPlatform(void); // Initialize platform (graphics, inputs and more) void ClosePlatform(void); // Close platform @@ -551,34 +567,207 @@ void DisableCursor(void) CORE.Input.Mouse.cursorHidden = true; } -// Swap back buffer with front buffer (screen drawing) -void SwapScreenBuffer(void) -{ - eglSwapBuffers(platform.device, platform.surface); +static void drm_fb_destroy_callback(struct gbm_bo *bo, void *data) { + uint32_t fb_id = (uintptr_t)data; + // Remove from cache + for (int i = 0; i < fbCacheCount; i++) { + if (fbCache[i].bo == bo) { + TRACELOG(LOG_INFO, "DRM: fb removed %u", (uintptr_t)fb_id); + drmModeRmFB(platform.fd, fbCache[i].fb_id); // Release DRM FB + // Shift remaining entries + for (int j = i; j < fbCacheCount - 1; j++) { + fbCache[j] = fbCache[j + 1]; + } + fbCacheCount--; + break; + } + } +} - if (!platform.gbmSurface || (-1 == platform.fd) || !platform.connector || !platform.crtc) TRACELOG(LOG_ERROR, "DISPLAY: DRM initialization failed to swap"); - - struct gbm_bo *bo = gbm_surface_lock_front_buffer(platform.gbmSurface); - if (!bo) TRACELOG(LOG_ERROR, "DISPLAY: Failed GBM to lock front buffer"); - - uint32_t fb = 0; - int result = drmModeAddFB(platform.fd, platform.connector->modes[platform.modeIndex].hdisplay, platform.connector->modes[platform.modeIndex].vdisplay, 24, 32, gbm_bo_get_stride(bo), gbm_bo_get_handle(bo).u32, &fb); - if (result != 0) TRACELOG(LOG_ERROR, "DISPLAY: drmModeAddFB() failed with result: %d", result); - - result = drmModeSetCrtc(platform.fd, platform.crtc->crtc_id, fb, 0, 0, &platform.connector->connector_id, 1, &platform.connector->modes[platform.modeIndex]); - if (result != 0) TRACELOG(LOG_ERROR, "DISPLAY: drmModeSetCrtc() failed with result: %d", result); - - if (platform.prevFB) - { - result = drmModeRmFB(platform.fd, platform.prevFB); - if (result != 0) TRACELOG(LOG_ERROR, "DISPLAY: drmModeRmFB() failed with result: %d", result); +// Create or retrieve cached DRM FB for BO +static uint32_t get_or_create_fb_for_bo(struct gbm_bo *bo) { + // Try to find existing cache entry + for (int i = 0; i < fbCacheCount; i++) { + if (fbCache[i].bo == bo) { + return fbCache[i].fb_id; + } } - platform.prevFB = fb; + // Create new entry if cache not full + if (fbCacheCount >= MAX_CACHED_BOS) { + //FB cache full! + return 0; + } - if (platform.prevBO) gbm_surface_release_buffer(platform.gbmSurface, platform.prevBO); + uint32_t handle = gbm_bo_get_handle(bo).u32; + uint32_t stride = gbm_bo_get_stride(bo); + uint32_t width = gbm_bo_get_width(bo); + uint32_t height = gbm_bo_get_height(bo); + uint32_t fb_id; + if (drmModeAddFB(platform.fd, width, height, 24, 32, stride, handle, &fb_id)) { + //rmModeAddFB failed + return 0; + } + + // Store in cache + fbCache[fbCacheCount] = (FramebufferCache){ .bo = bo, .fb_id = fb_id }; + fbCacheCount++; + + // Set destroy callback to auto-cleanup + gbm_bo_set_user_data(bo, (void*)(uintptr_t)fb_id, drm_fb_destroy_callback); + + TRACELOG(LOG_INFO, "DRM: added new bo %u" , (uintptr_t)fb_id); + return fb_id; +} + +// Renders a blank frame to allocate initial buffers +void RenderBlankFrame() { + glClearColor(0, 0, 0, 1); + glClear(GL_COLOR_BUFFER_BIT); + eglSwapBuffers(platform.device, platform.surface); + + // Ensure the buffer is processed + glFinish(); +} + +// Initialize with first buffer only +int InitSwapScreenBuffer() { + if (!platform.gbmSurface || platform.fd < 0) { + TRACELOG(LOG_ERROR, "DRM not initialized"); + return -1; + } + + // Render a blank frame to allocate buffers + RenderBlankFrame(); + + // Get first buffer + struct gbm_bo *bo = gbm_surface_lock_front_buffer(platform.gbmSurface); + if (!bo) { + TRACELOG(LOG_ERROR, "Failed to lock initial buffer"); + return -1; + } + + // Create FB for first buffer + uint32_t fb_id = get_or_create_fb_for_bo(bo); + if (!fb_id) { + gbm_surface_release_buffer(platform.gbmSurface, bo); + return -1; + } + + // Initial CRTC setup + if (drmModeSetCrtc(platform.fd, platform.crtc->crtc_id, fb_id, + 0, 0, &platform.connector->connector_id, 1, + &platform.connector->modes[platform.modeIndex])) { + TRACELOG(LOG_ERROR, "Initial CRTC setup failed: %s", strerror(errno)); + gbm_surface_release_buffer(platform.gbmSurface, bo); + return -1; + } + + // Keep first buffer locked until flipped platform.prevBO = bo; + crtcSet = true; + return 0; +} + +// Static page flip handler +// this will be called once the drmModePageFlip() finished from the drmHandleEvent(platform.fd, &evctx); context +static void page_flip_handler(int fd, unsigned int frame, + unsigned int sec, unsigned int usec, + void *data) { + (void)fd; (void)frame; (void)sec; (void)usec; // Unused + pendingFlip = false; + struct gbm_bo *bo_to_release = (struct gbm_bo *)data; + //Buffers are released after the flip completes (via page_flip_handler), ensuring they're no longer in use. + // Prevents the GPU from writing to a buffer being scanned out + if (bo_to_release) { + gbm_surface_release_buffer(platform.gbmSurface, bo_to_release); + } +} + +// Swap implementation with proper caching +void SwapScreenBuffer() { + static int loopCnt = 0; + loopCnt++; + static int errCnt[5] = {0}; + if (!crtcSet || !platform.gbmSurface) return; + + //call this only, if pendingFlip is not set + eglSwapBuffers(platform.device, platform.surface); + + // Process pending events non-blocking + drmEventContext evctx = { + .version = DRM_EVENT_CONTEXT_VERSION, + .page_flip_handler = page_flip_handler + }; + + struct pollfd pfd = { .fd = platform.fd, .events = POLLIN }; + //polling for event for 0ms + while (poll(&pfd, 1, 0) > 0) { + drmHandleEvent(platform.fd, &evctx); + } + + // Skip if previous flip pending + if (pendingFlip) { + //Skip frame: flip pending + errCnt[0]++; + return; + } + + // Get new front buffer + struct gbm_bo *next_bo = gbm_surface_lock_front_buffer(platform.gbmSurface); + if (!next_bo) { + //Failed to lock front buffer + errCnt[1]++; + return; + } + + // Get FB ID (creates new one if needed) + uint32_t fb_id = get_or_create_fb_for_bo(next_bo); + if (!fb_id) { + gbm_surface_release_buffer(platform.gbmSurface, next_bo); + errCnt[2]++; + return; + } + + // Attempt page flip + /* rmModePageFlip() schedules a buffer-flip for the next vblank and then + * notifies us about it. It takes a CRTC-id, fb-id and an arbitrary + * data-pointer and then schedules the page-flip. This is fully asynchronous and + * When the page-flip happens, the DRM-fd will become readable and we can call + * drmHandleEvent(). This will read all vblank/page-flip events and call our + * modeset_page_flip_event() callback with the data-pointer that we passed to + * drmModePageFlip(). We simply call modeset_draw_dev() then so the next frame + * is rendered.. + * returns immediately. + */ + if (drmModePageFlip(platform.fd, platform.crtc->crtc_id, fb_id, + DRM_MODE_PAGE_FLIP_EVENT, platform.prevBO)) { + if (errno == EBUSY) { + //Display busy - skip flip + errCnt[3]++; + } else { + //Page flip failed + errCnt[4]++; + } + gbm_surface_release_buffer(platform.gbmSurface, next_bo); + return; + } + + // Success: update state + pendingFlip = true; + + platform.prevBO = next_bo; + //successful usage, do benchmarking + //in every 10 sec, at 60FPS 60*10 -> 600 + if(loopCnt >= 600) { + TRACELOG(LOG_INFO, "DRM err counters: %d, %d, %d, %d, %d, %d",errCnt[0],errCnt[1],errCnt[2],errCnt[3],errCnt[4], loopCnt); + //reinit the errors + for(int i=0;i<5;i++) { + errCnt[i] = 0; + } + loopCnt = 0; + } } //---------------------------------------------------------------------------------- @@ -910,7 +1099,8 @@ int InitPlatform(void) EGL_BLUE_SIZE, 8, // BLUE color bit depth (alternative: 5) EGL_ALPHA_SIZE, 8, // ALPHA bit depth (required for transparent framebuffer) //EGL_TRANSPARENT_TYPE, EGL_NONE, // Request transparent framebuffer (EGL_TRANSPARENT_RGB does not work on RPI) - EGL_DEPTH_SIZE, 24, // Depth buffer size (Required to use Depth testing!) + //ToDo: verify this. In 5.5 it is 16, in master it was 24 + EGL_DEPTH_SIZE, 16, // Depth buffer size (Required to use Depth testing!) //EGL_STENCIL_SIZE, 8, // Stencil buffer size EGL_SAMPLE_BUFFERS, sampleBuffer, // Activate MSAA EGL_SAMPLES, samples, // 4x Antialiasing if activated (Free on MALI GPUs) @@ -1083,9 +1273,14 @@ int InitPlatform(void) CORE.Storage.basePath = GetWorkingDirectory(); //---------------------------------------------------------------------------- - TRACELOG(LOG_INFO, "PLATFORM: DRM: Initialized successfully"); + if(InitSwapScreenBuffer() == 0) { + TRACELOG(LOG_INFO, "PLATFORM: DRM: Initialized successfully"); + return 0; + } else { + TRACELOG(LOG_INFO, "PLATFORM: DRM: Initialized failed"); + return -1; + } - return 0; } // Close platform From eee9dd8c944331dd804752383692076ab4d2790e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agnis=20Aldi=C5=86=C5=A1=20=22NeZv=C4=93rs?= Date: Mon, 23 Jun 2025 13:03:35 +0300 Subject: [PATCH 013/328] Example: core_3d_fps_controller Quake like camera animations and strafe jump movement --- examples/Makefile | 1 + examples/Makefile.Web | 4 + examples/core/core_3d_fps_controller.c | 360 +++++++++++++++++++++++++ examples/core/resources/huh_jump.wav | Bin 0 -> 19050 bytes 4 files changed, 365 insertions(+) create mode 100644 examples/core/core_3d_fps_controller.c create mode 100644 examples/core/resources/huh_jump.wav diff --git a/examples/Makefile b/examples/Makefile index 32a3a75ab..edd2eb399 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -500,6 +500,7 @@ CORE = \ core/core_3d_camera_free \ core/core_3d_camera_mode \ core/core_3d_camera_split_screen \ + core/core_3d_fps_controller \ core/core_3d_picking \ core/core_automation_events \ core/core_basic_screen_manager \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 35ae70a18..5ba550eb0 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -382,6 +382,7 @@ CORE = \ core/core_3d_camera_free \ core/core_3d_camera_mode \ core/core_3d_camera_split_screen \ + core/core_3d_fps_controller \ core/core_3d_picking \ core/core_automation_events \ core/core_basic_screen_manager \ @@ -587,6 +588,9 @@ core/core_3d_camera_mode: core/core_3d_camera_mode.c core/core_3d_camera_split_screen: core/core_3d_camera_split_screen.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) +core/core_3d_fps_controller: core/core_3d_fps_controller.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + core/core_3d_picking: core/core_3d_picking.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) diff --git a/examples/core/core_3d_fps_controller.c b/examples/core/core_3d_fps_controller.c new file mode 100644 index 000000000..56d8c4543 --- /dev/null +++ b/examples/core/core_3d_fps_controller.c @@ -0,0 +1,360 @@ +/******************************************************************************************* +* +* raylib [core] example - Input Gestures for Web +* +* Example complexity rating: [★★★☆] 3/4 +* +* Example originally created with raylib 5.5 +* +* Example contributed by Agnis Aldins (@nezvers) 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-2025 Agnis Aldins (@nezvers) +* +********************************************************************************************/ + +#include "raylib.h" +#include "raymath.h" +#include "rcamera.h" + +//#define PLATFORM_WEB + +#if defined(PLATFORM_WEB) +#include +#endif + +#if defined(PLATFORM_DESKTOP) +#define GLSL_VERSION 330 +#else // PLATFORM_ANDROID, PLATFORM_WEB +#define GLSL_VERSION 100 +#endif + + +/* Movement constants */ +#define GRAVITY 32.f +#define MAX_SPEED 20.f +#define CROUCH_SPEED 5.f +#define JUMP_FORCE 12.f +#define MAX_ACCEL 150.f +/* Grounded drag */ +#define FRICTION 0.86f +/* Increasing air drag, increases strafing speed */ +#define AIR_DRAG 0.98f +/* Responsiveness for turning movement direction to looked direction */ +#define CONTROL 15.f +#define CROUCH_HEIGHT 0.f +#define STAND_HEIGHT 1.f +#define BOTTOM_HEIGHT 0.5f + +#define NORMALIZE_INPUT 0 + +typedef struct { + Vector3 position; + Vector3 velocity; + Vector3 dir; + bool isGrounded; + Sound soundJump; +}Body; + +const int screenWidth = 1280; +const int screenHeight = 720; +Vector2 sensitivity = { 0.001f, 0.001f }; + +Body player; +Camera camera; +Vector2 lookRotation = { 0 }; +float headTimer; +float walkLerp; +float headLerp; +Vector2 lean; + +void UpdateDrawFrame(void); // Update and Draw one frame + +void DrawLevel(); + +void UpdateCameraAngle(Camera* camera, Vector2* rot, float headTimer, float walkLerp, Vector2 lean); + +void UpdateBody(Body* body, float rot, char side, char forward, bool jumpPressed, bool crouchHold); + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + InitWindow(screenWidth, screenHeight, "Raylib Quake-like controller"); + InitAudioDevice(); + + player = (Body){ Vector3Zero(), Vector3Zero(), Vector3Zero(), false, LoadSound("resources/huh_jump.wav")}; + camera = (Camera){ 0 }; + camera.fovy = 60.f; // Camera field-of-view Y + camera.projection = CAMERA_PERSPECTIVE; // Camera projection type + + lookRotation = Vector2Zero(); + headTimer = 0.f; + walkLerp = 0.f; + headLerp = STAND_HEIGHT; + lean = Vector2Zero(); + + camera.position = (Vector3){ + player.position.x, + player.position.y + (BOTTOM_HEIGHT + headLerp), + player.position.z, + }; + UpdateCameraAngle(&camera, &lookRotation, headTimer, walkLerp, lean); + + DisableCursor(); // Limit cursor to relative movement inside the window + +#if defined(PLATFORM_WEB) + emscripten_set_main_loop(UpdateDrawFrame, 0, 1); +#else + + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + UpdateDrawFrame(); + } +#endif + + // De-Initialization + //-------------------------------------------------------------------------------------- + UnloadSound(player.soundJump); + CloseAudioDevice(); + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} + +void UpdateDrawFrame(void) +{ + // Update + //---------------------------------------------------------------------------------- + + Vector2 mouse_delta = GetMouseDelta(); + lookRotation.x -= mouse_delta.x * sensitivity.x; + lookRotation.y += mouse_delta.y * sensitivity.y; + + char sideway = (IsKeyDown(KEY_D) - IsKeyDown(KEY_A)); + char forward = (IsKeyDown(KEY_W) - IsKeyDown(KEY_S)); + bool crouching = IsKeyDown(KEY_LEFT_CONTROL); + UpdateBody(&player, lookRotation.x, sideway, forward, IsKeyPressed(KEY_SPACE), crouching); + + float delta = GetFrameTime(); + headLerp = Lerp(headLerp, (crouching ? CROUCH_HEIGHT : STAND_HEIGHT), 20.f * delta); + camera.position = (Vector3){ + player.position.x, + player.position.y + (BOTTOM_HEIGHT + headLerp), + player.position.z, + }; + + if (player.isGrounded && (forward != 0 || sideway != 0)) { + headTimer += delta * 3.f; + walkLerp = Lerp(walkLerp, 1.f, 10.f * delta); + camera.fovy = Lerp(camera.fovy, 55.f, 5.f * delta); + } + else { + walkLerp = Lerp(walkLerp, 0.f, 10.f * delta); + camera.fovy = Lerp(camera.fovy, 60.f, 5.f * delta); + } + + lean.x = Lerp(lean.x, sideway * 0.02f, 10.f * delta); + lean.y = Lerp(lean.y, forward * 0.015f, 10.f * delta); + + UpdateCameraAngle(&camera, &lookRotation, headTimer, walkLerp, lean); + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + BeginMode3D(camera); + + DrawLevel(); + + EndMode3D(); + + // Draw info box + DrawRectangle(5, 5, 330, 100, Fade(SKYBLUE, 0.5f)); + DrawRectangleLines(5, 5, 330, 100, BLUE); + + DrawText("Camera controls:", 15, 15, 10, BLACK); + DrawText("- Move keys: W, A, S, D, Space, Left-Ctrl", 15, 30, 10, BLACK); + DrawText("- Look around: arrow keys or mouse", 15, 45, 10, BLACK); + DrawText(TextFormat("- Velocity Len: (%06.3f)", Vector2Length((Vector2) { player.velocity.x, player.velocity.z })), 15, 60, 10, BLACK); + + + EndDrawing(); + //---------------------------------------------------------------------------------- +} + +void UpdateBody(Body* body, float rot, char side, char forward, bool jumpPressed, bool crouchHold) +{ + Vector2 input = (Vector2){ (float)side, (float)-forward }; +#if defined(NORMALIZE_INPUT) + // Slow down diagonal movement + if (side != 0 & forward != 0) + { + input = Vector2Normalize(input); + } +#endif + + float delta = GetFrameTime(); + + if (!body->isGrounded) + { + body->velocity.y -= GRAVITY * delta; + } + if (body->isGrounded && jumpPressed) + { + body->velocity.y = JUMP_FORCE; + body->isGrounded = false; + SetSoundPitch(body->soundJump, 1.f + (GetRandomValue(-100, 100) * 0.001)); + PlaySound(body->soundJump); + } + + Vector3 front_vec = (Vector3){ sin(rot), 0.f, cos(rot) }; + Vector3 right_vec = (Vector3){ cos(-rot), 0.f, sin(-rot) }; + + Vector3 desired_dir = (Vector3){ + input.x * right_vec.x + input.y * front_vec.x, + 0.f, + input.x * right_vec.z + input.y * front_vec.z, + }; + + body->dir = Vector3Lerp(body->dir, desired_dir, CONTROL * delta); + + float decel = body->isGrounded ? FRICTION : AIR_DRAG; + Vector3 hvel = (Vector3){ + body->velocity.x * decel, + 0.f, + body->velocity.z * decel + }; + + float hvel_length = Vector3Length(hvel); // a.k.a. magnitude + if (hvel_length < MAX_SPEED * 0.01f) { + hvel = (Vector3){ 0 }; + } + + /* This is what creates strafing */ + float speed = Vector3DotProduct(hvel, body->dir); + + /* + Whenever the amount of acceleration to add is clamped by the maximum acceleration constant, + a Player can make the speed faster by bringing the direction closer to horizontal velocity angle + More info here: https://youtu.be/v3zT3Z5apaM?t=165 + */ + float max_speed = crouchHold ? CROUCH_SPEED : MAX_SPEED; + float accel = Clamp(max_speed - speed, 0.f, MAX_ACCEL * delta); + hvel.x += body->dir.x * accel; + hvel.z += body->dir.z * accel; + + body->velocity.x = hvel.x; + body->velocity.z = hvel.z; + + body->position.x += body->velocity.x * delta; + body->position.y += body->velocity.y * delta; + body->position.z += body->velocity.z * delta; + + /* Fancy collision system against "THE FLOOR" */ + if (body->position.y <= 0.f) + { + body->position.y = 0.f; + body->velocity.y = 0.f; + body->isGrounded = true; // <= enables jumping + } +} + +void UpdateCameraAngle(Camera* camera, Vector2* rot, float headTimer, float walkLerp, Vector2 lean) +{ + const Vector3 up = (Vector3){ 0.f, 1.f, 0.f }; + const Vector3 targetOffset = (Vector3){ 0.f, 0.f, -1.f }; + + /* Left & Right */ + Vector3 yaw = Vector3RotateByAxisAngle(targetOffset, up, rot->x); + + // Clamp view up + float maxAngleUp = Vector3Angle(up, yaw); + maxAngleUp -= 0.001f; // avoid numerical errors + if ( -(rot->y) > maxAngleUp) { rot->y = -maxAngleUp; } + + // Clamp view down + float maxAngleDown = Vector3Angle(Vector3Negate(up), yaw); + maxAngleDown *= -1.0f; // downwards angle is negative + maxAngleDown += 0.001f; // avoid numerical errors + if ( -(rot->y) < maxAngleDown) { rot->y = -maxAngleDown; } + + /* Up & Down */ + Vector3 right = Vector3Normalize(Vector3CrossProduct(yaw, up)); + + // Rotate view vector around right axis + Vector3 pitch = Vector3RotateByAxisAngle(yaw, right, -rot->y - lean.y); + + // Head animation + // Rotate up direction around forward axis + float _sin = sin(headTimer * PI); + float _cos = cos(headTimer * PI); + const float stepRotation = 0.01f; + camera->up = Vector3RotateByAxisAngle(up, pitch, _sin * stepRotation + lean.x); + + /* BOB */ + const float bobSide = 0.1f; + const float bobUp = 0.15f; + Vector3 bobbing = Vector3Scale(right, _sin * bobSide); + bobbing.y = fabsf(_cos * bobUp); + camera->position = Vector3Add(camera->position, Vector3Scale(bobbing, walkLerp)); + + camera->target = Vector3Add(camera->position, pitch); +} + + +void DrawLevel() +{ + const int floorExtent = 25; + const float tileSize = 5.f; + const Color tileColor1 = (Color){ 150, 200, 200, 255 }; + // Floor tiles + for (int y = -floorExtent; y < floorExtent; y++) + { + for (int x = -floorExtent; x < floorExtent; x++) + { + if ((y & 1) && (x & 1)) + { + DrawPlane((Vector3) { x * tileSize, 0.f, y * tileSize}, + (Vector2) {tileSize, tileSize}, tileColor1); + } + else if(!(y & 1) && !(x & 1)) + { + DrawPlane((Vector3) { x * tileSize, 0.f, y * tileSize}, + (Vector2) {tileSize, tileSize}, LIGHTGRAY); + } + } + } + + const Vector3 towerSize = (Vector3){ 16.f, 32.f, 16.f }; + const Color towerColor = (Color){ 150, 200, 200, 255 }; + + Vector3 towerPos = (Vector3){ 16.f, 16.f, 16.f }; + DrawCubeV(towerPos, towerSize, towerColor); + DrawCubeWiresV(towerPos, towerSize, DARKBLUE); + + towerPos.x *= -1; + DrawCubeV(towerPos, towerSize, towerColor); + DrawCubeWiresV(towerPos, towerSize, DARKBLUE); + + towerPos.z *= -1; + DrawCubeV(towerPos, towerSize, towerColor); + DrawCubeWiresV(towerPos, towerSize, DARKBLUE); + + towerPos.x *= -1; + DrawCubeV(towerPos, towerSize, towerColor); + DrawCubeWiresV(towerPos, towerSize, DARKBLUE); +} + diff --git a/examples/core/resources/huh_jump.wav b/examples/core/resources/huh_jump.wav new file mode 100644 index 0000000000000000000000000000000000000000..9ca8a2e683ef87d19f594be54d04a40dd0bade10 GIT binary patch literal 19050 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 Gd;ABC^mEGq literal 0 HcmV?d00001 From 4d5a56a5f89d37f96ca72d245e39679c2ffc4b46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agnis=20Aldi=C5=86=C5=A1=20=22NeZv=C4=93rs?= Date: Mon, 23 Jun 2025 13:15:14 +0300 Subject: [PATCH 014/328] change game's resolution --- examples/core/core_3d_fps_controller.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/core/core_3d_fps_controller.c b/examples/core/core_3d_fps_controller.c index 56d8c4543..ff348daef 100644 --- a/examples/core/core_3d_fps_controller.c +++ b/examples/core/core_3d_fps_controller.c @@ -58,8 +58,8 @@ typedef struct { Sound soundJump; }Body; -const int screenWidth = 1280; -const int screenHeight = 720; +const int screenWidth = 800; +const int screenHeight = 450; Vector2 sensitivity = { 0.001f, 0.001f }; Body player; From 4233544670c9a2ef9a30e4dcbe747395efea7c85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agnis=20Aldi=C5=86=C5=A1=20=22NeZv=C4=93rs?= Date: Mon, 23 Jun 2025 13:32:08 +0300 Subject: [PATCH 015/328] Update core_3d_fps_controller.c --- examples/core/core_3d_fps_controller.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/core/core_3d_fps_controller.c b/examples/core/core_3d_fps_controller.c index ff348daef..d4936388b 100644 --- a/examples/core/core_3d_fps_controller.c +++ b/examples/core/core_3d_fps_controller.c @@ -356,5 +356,7 @@ void DrawLevel() towerPos.x *= -1; DrawCubeV(towerPos, towerSize, towerColor); DrawCubeWiresV(towerPos, towerSize, DARKBLUE); -} + // Red sun + DrawSphere((Vector3) { 300.f, 300.f, 0.f }, 100.f, (Color) { 255, 0, 0, 255 }); +} From a2cf878190569f2d37c90ff475594d90205eafb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agnis=20Aldi=C5=86=C5=A1=20=22NeZv=C4=93rs?= Date: Mon, 23 Jun 2025 13:43:38 +0300 Subject: [PATCH 016/328] cleanup variable shadowing --- examples/core/core_3d_fps_controller.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/examples/core/core_3d_fps_controller.c b/examples/core/core_3d_fps_controller.c index d4936388b..3a21ac2dd 100644 --- a/examples/core/core_3d_fps_controller.c +++ b/examples/core/core_3d_fps_controller.c @@ -74,7 +74,7 @@ void UpdateDrawFrame(void); // Update and Draw one frame void DrawLevel(); -void UpdateCameraAngle(Camera* camera, Vector2* rot, float headTimer, float walkLerp, Vector2 lean); +void UpdateCameraAngle(); void UpdateBody(Body* body, float rot, char side, char forward, bool jumpPressed, bool crouchHold); @@ -167,7 +167,7 @@ void UpdateDrawFrame(void) lean.x = Lerp(lean.x, sideway * 0.02f, 10.f * delta); lean.y = Lerp(lean.y, forward * 0.015f, 10.f * delta); - UpdateCameraAngle(&camera, &lookRotation, headTimer, walkLerp, lean); + UpdateCameraAngle(); // Draw //---------------------------------------------------------------------------------- @@ -272,46 +272,46 @@ void UpdateBody(Body* body, float rot, char side, char forward, bool jumpPressed } } -void UpdateCameraAngle(Camera* camera, Vector2* rot, float headTimer, float walkLerp, Vector2 lean) +void UpdateCameraAngle() { const Vector3 up = (Vector3){ 0.f, 1.f, 0.f }; const Vector3 targetOffset = (Vector3){ 0.f, 0.f, -1.f }; /* Left & Right */ - Vector3 yaw = Vector3RotateByAxisAngle(targetOffset, up, rot->x); + Vector3 yaw = Vector3RotateByAxisAngle(targetOffset, up, lookRotation.x); // Clamp view up float maxAngleUp = Vector3Angle(up, yaw); maxAngleUp -= 0.001f; // avoid numerical errors - if ( -(rot->y) > maxAngleUp) { rot->y = -maxAngleUp; } + if ( -(lookRotation.y) > maxAngleUp) { lookRotation.y = -maxAngleUp; } // Clamp view down float maxAngleDown = Vector3Angle(Vector3Negate(up), yaw); maxAngleDown *= -1.0f; // downwards angle is negative maxAngleDown += 0.001f; // avoid numerical errors - if ( -(rot->y) < maxAngleDown) { rot->y = -maxAngleDown; } + if ( -(lookRotation.y) < maxAngleDown) { lookRotation.y = -maxAngleDown; } /* Up & Down */ Vector3 right = Vector3Normalize(Vector3CrossProduct(yaw, up)); // Rotate view vector around right axis - Vector3 pitch = Vector3RotateByAxisAngle(yaw, right, -rot->y - lean.y); + Vector3 pitch = Vector3RotateByAxisAngle(yaw, right, -lookRotation.y - lean.y); // Head animation // Rotate up direction around forward axis float _sin = sin(headTimer * PI); float _cos = cos(headTimer * PI); const float stepRotation = 0.01f; - camera->up = Vector3RotateByAxisAngle(up, pitch, _sin * stepRotation + lean.x); + camera.up = Vector3RotateByAxisAngle(up, pitch, _sin * stepRotation + lean.x); /* BOB */ const float bobSide = 0.1f; const float bobUp = 0.15f; Vector3 bobbing = Vector3Scale(right, _sin * bobSide); bobbing.y = fabsf(_cos * bobUp); - camera->position = Vector3Add(camera->position, Vector3Scale(bobbing, walkLerp)); + camera.position = Vector3Add(camera.position, Vector3Scale(bobbing, walkLerp)); - camera->target = Vector3Add(camera->position, pitch); + camera.target = Vector3Add(camera.position, pitch); } From fca2317640dc32e231316e33a0967cee70382c02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agnis=20Aldi=C5=86=C5=A1=20=22NeZv=C4=93rs?= Date: Mon, 23 Jun 2025 13:44:50 +0300 Subject: [PATCH 017/328] remove //#define PLATFORM_WEB --- examples/core/core_3d_fps_controller.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/examples/core/core_3d_fps_controller.c b/examples/core/core_3d_fps_controller.c index 3a21ac2dd..ddb25ba8a 100644 --- a/examples/core/core_3d_fps_controller.c +++ b/examples/core/core_3d_fps_controller.c @@ -19,8 +19,6 @@ #include "raymath.h" #include "rcamera.h" -//#define PLATFORM_WEB - #if defined(PLATFORM_WEB) #include #endif From fa9653d179b56a1c663f0e34a7167c2f6f3c299d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agnis=20Aldi=C5=86=C5=A1=20=22NeZv=C4=93rs?= Date: Mon, 23 Jun 2025 13:50:24 +0300 Subject: [PATCH 018/328] Fix function call --- examples/core/core_3d_fps_controller.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/core/core_3d_fps_controller.c b/examples/core/core_3d_fps_controller.c index ddb25ba8a..c4ef367e9 100644 --- a/examples/core/core_3d_fps_controller.c +++ b/examples/core/core_3d_fps_controller.c @@ -102,7 +102,7 @@ int main(void) player.position.y + (BOTTOM_HEIGHT + headLerp), player.position.z, }; - UpdateCameraAngle(&camera, &lookRotation, headTimer, walkLerp, lean); + UpdateCameraAngle(); DisableCursor(); // Limit cursor to relative movement inside the window From f6b7168ed4c2c70d15c01ed9f3710e8c976b7452 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agnis=20Aldi=C5=86=C5=A1=20=22NeZv=C4=93rs?= Date: Mon, 23 Jun 2025 16:06:46 +0300 Subject: [PATCH 019/328] Add preview image --- examples/core/core_3d_fps_controller.png | Bin 0 -> 16483 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/core/core_3d_fps_controller.png diff --git a/examples/core/core_3d_fps_controller.png b/examples/core/core_3d_fps_controller.png new file mode 100644 index 0000000000000000000000000000000000000000..65a908d529e5eeb82682af2230caf35d1877b4b2 GIT binary patch literal 16483 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 a_X6v}toVg7jH&UmNmWtnezm-1`2Pd$cN=8@ literal 0 HcmV?d00001 From ed022e89e5aabd91c80288df0c671efb4c7e9492 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agnis=20Aldi=C5=86=C5=A1=20=22NeZv=C4=93rs?= Date: Mon, 23 Jun 2025 16:22:14 +0300 Subject: [PATCH 020/328] fix preview crop --- examples/core/core_3d_fps_controller.png | Bin 16483 -> 9083 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/core/core_3d_fps_controller.png b/examples/core/core_3d_fps_controller.png index 65a908d529e5eeb82682af2230caf35d1877b4b2..d4f83482ffbc77da8353983100d6590071719d23 100644 GIT binary patch literal 9083 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 literal 16483 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 a_X6v}toVg7jH&UmNmWtnezm-1`2Pd$cN=8@ From 910f4083e180df6d3d49584131665f0e9e61049b Mon Sep 17 00:00:00 2001 From: EmilSylveon Date: Sat, 5 Jul 2025 00:53:01 +0300 Subject: [PATCH 021/328] update dr_libs --- src/external/dr_flac.h | 462 +++++++++++---------- src/external/dr_mp3.h | 899 ++++++++++++++++++++++++++++++++--------- src/external/dr_wav.h | 492 +++++++++++++++------- 3 files changed, 1282 insertions(+), 571 deletions(-) diff --git a/src/external/dr_flac.h b/src/external/dr_flac.h index 14324cf37..497fcddd5 100644 --- a/src/external/dr_flac.h +++ b/src/external/dr_flac.h @@ -1,121 +1,12 @@ /* FLAC audio decoder. Choice of public domain or MIT-0. See license statements at the end of this file. -dr_flac - v0.12.42 - 2023-11-02 +dr_flac - v0.13.0 - TBD David Reid - mackron@gmail.com GitHub: https://github.com/mackron/dr_libs */ -/* -RELEASE NOTES - v0.12.0 -======================= -Version 0.12.0 has breaking API changes including changes to the existing API and the removal of deprecated APIs. - - -Improved Client-Defined Memory Allocation ------------------------------------------ -The main change with this release is the addition of a more flexible way of implementing custom memory allocation routines. The -existing system of DRFLAC_MALLOC, DRFLAC_REALLOC and DRFLAC_FREE are still in place and will be used by default when no custom -allocation callbacks are specified. - -To use the new system, you pass in a pointer to a drflac_allocation_callbacks object to drflac_open() and family, like this: - - void* my_malloc(size_t sz, void* pUserData) - { - return malloc(sz); - } - void* my_realloc(void* p, size_t sz, void* pUserData) - { - return realloc(p, sz); - } - void my_free(void* p, void* pUserData) - { - free(p); - } - - ... - - drflac_allocation_callbacks allocationCallbacks; - allocationCallbacks.pUserData = &myData; - allocationCallbacks.onMalloc = my_malloc; - allocationCallbacks.onRealloc = my_realloc; - allocationCallbacks.onFree = my_free; - drflac* pFlac = drflac_open_file("my_file.flac", &allocationCallbacks); - -The advantage of this new system is that it allows you to specify user data which will be passed in to the allocation routines. - -Passing in null for the allocation callbacks object will cause dr_flac to use defaults which is the same as DRFLAC_MALLOC, -DRFLAC_REALLOC and DRFLAC_FREE and the equivalent of how it worked in previous versions. - -Every API that opens a drflac object now takes this extra parameter. These include the following: - - drflac_open() - drflac_open_relaxed() - drflac_open_with_metadata() - drflac_open_with_metadata_relaxed() - drflac_open_file() - drflac_open_file_with_metadata() - drflac_open_memory() - drflac_open_memory_with_metadata() - drflac_open_and_read_pcm_frames_s32() - drflac_open_and_read_pcm_frames_s16() - drflac_open_and_read_pcm_frames_f32() - drflac_open_file_and_read_pcm_frames_s32() - drflac_open_file_and_read_pcm_frames_s16() - drflac_open_file_and_read_pcm_frames_f32() - drflac_open_memory_and_read_pcm_frames_s32() - drflac_open_memory_and_read_pcm_frames_s16() - drflac_open_memory_and_read_pcm_frames_f32() - - - -Optimizations -------------- -Seeking performance has been greatly improved. A new binary search based seeking algorithm has been introduced which significantly -improves performance over the brute force method which was used when no seek table was present. Seek table based seeking also takes -advantage of the new binary search seeking system to further improve performance there as well. Note that this depends on CRC which -means it will be disabled when DR_FLAC_NO_CRC is used. - -The SSE4.1 pipeline has been cleaned up and optimized. You should see some improvements with decoding speed of 24-bit files in -particular. 16-bit streams should also see some improvement. - -drflac_read_pcm_frames_s16() has been optimized. Previously this sat on top of drflac_read_pcm_frames_s32() and performed it's s32 -to s16 conversion in a second pass. This is now all done in a single pass. This includes SSE2 and ARM NEON optimized paths. - -A minor optimization has been implemented for drflac_read_pcm_frames_s32(). This will now use an SSE2 optimized pipeline for stereo -channel reconstruction which is the last part of the decoding process. - -The ARM build has seen a few improvements. The CLZ (count leading zeroes) and REV (byte swap) instructions are now used when -compiling with GCC and Clang which is achieved using inline assembly. The CLZ instruction requires ARM architecture version 5 at -compile time and the REV instruction requires ARM architecture version 6. - -An ARM NEON optimized pipeline has been implemented. To enable this you'll need to add -mfpu=neon to the command line when compiling. - - -Removed APIs ------------- -The following APIs were deprecated in version 0.11.0 and have been completely removed in version 0.12.0: - - drflac_read_s32() -> drflac_read_pcm_frames_s32() - drflac_read_s16() -> drflac_read_pcm_frames_s16() - drflac_read_f32() -> drflac_read_pcm_frames_f32() - drflac_seek_to_sample() -> drflac_seek_to_pcm_frame() - drflac_open_and_decode_s32() -> drflac_open_and_read_pcm_frames_s32() - drflac_open_and_decode_s16() -> drflac_open_and_read_pcm_frames_s16() - drflac_open_and_decode_f32() -> drflac_open_and_read_pcm_frames_f32() - drflac_open_and_decode_file_s32() -> drflac_open_file_and_read_pcm_frames_s32() - drflac_open_and_decode_file_s16() -> drflac_open_file_and_read_pcm_frames_s16() - drflac_open_and_decode_file_f32() -> drflac_open_file_and_read_pcm_frames_f32() - drflac_open_and_decode_memory_s32() -> drflac_open_memory_and_read_pcm_frames_s32() - drflac_open_and_decode_memory_s16() -> drflac_open_memory_and_read_pcm_frames_s16() - drflac_open_and_decode_memory_f32() -> drflac_open_memroy_and_read_pcm_frames_f32() - -Prior versions of dr_flac operated on a per-sample basis whereas now it operates on PCM frames. The removed APIs all relate -to the old per-sample APIs. You now need to use the "pcm_frame" versions. -*/ - - /* Introduction ============ @@ -179,7 +70,7 @@ reports metadata to the application through the use of a callback, and every met The main opening APIs (`drflac_open()`, etc.) will fail if the header is not present. The presents a problem in certain scenarios such as broadcast style streams or internet radio where the header may not be present because the user has started playback mid-stream. To handle this, use the relaxed APIs: - + `drflac_open_relaxed()` `drflac_open_with_metadata_relaxed()` @@ -234,8 +125,8 @@ extern "C" { #define DRFLAC_XSTRINGIFY(x) DRFLAC_STRINGIFY(x) #define DRFLAC_VERSION_MAJOR 0 -#define DRFLAC_VERSION_MINOR 12 -#define DRFLAC_VERSION_REVISION 42 +#define DRFLAC_VERSION_MINOR 13 +#define DRFLAC_VERSION_REVISION 0 #define DRFLAC_VERSION_STRING DRFLAC_XSTRINGIFY(DRFLAC_VERSION_MAJOR) "." DRFLAC_XSTRINGIFY(DRFLAC_VERSION_MINOR) "." DRFLAC_XSTRINGIFY(DRFLAC_VERSION_REVISION) #include /* For size_t. */ @@ -348,11 +239,11 @@ but also more memory. In my testing there is diminishing returns after about 4KB #define DRFLAC_64BIT #endif -#if defined(__x86_64__) || defined(_M_X64) +#if defined(__x86_64__) || (defined(_M_X64) && !defined(_M_ARM64EC)) #define DRFLAC_X64 #elif defined(__i386) || defined(_M_IX86) #define DRFLAC_X86 -#elif defined(__arm__) || defined(_M_ARM) || defined(__arm64) || defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64) +#elif defined(__arm__) || defined(_M_ARM) || defined(__arm64) || defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) #define DRFLAC_ARM #endif /* End Architecture Detection */ @@ -406,8 +297,9 @@ typedef enum typedef enum { - drflac_seek_origin_start, - drflac_seek_origin_current + DRFLAC_SEEK_SET, + DRFLAC_SEEK_CUR, + DRFLAC_SEEK_END } drflac_seek_origin; /* The order of members in this structure is important because we map this directly to the raw data within the SEEKTABLE metadata block. */ @@ -547,7 +439,7 @@ offset (in) The number of bytes to move, relative to the origin. Will never be negative. origin (in) - The origin of the seek - the current position or the start of the stream. + The origin of the seek - the current position, the start of the stream, or the end of the stream. Return Value @@ -557,14 +449,32 @@ Whether or not the seek was successful. Remarks ------- -The offset will never be negative. Whether or not it is relative to the beginning or current position is determined by the "origin" parameter which will be -either drflac_seek_origin_start or drflac_seek_origin_current. +Seeking relative to the start and the current position must always be supported. If seeking from the end of the stream is not supported, return DRFLAC_FALSE. When seeking to a PCM frame using drflac_seek_to_pcm_frame(), dr_flac may call this with an offset beyond the end of the FLAC stream. This needs to be detected and handled by returning DRFLAC_FALSE. */ typedef drflac_bool32 (* drflac_seek_proc)(void* pUserData, int offset, drflac_seek_origin origin); +/* +Callback for when the current position in the stream needs to be retrieved. + + +Parameters +---------- +pUserData (in) + The user data that was passed to drflac_open() and family. + +pCursor (out) + A pointer to a variable to receive the current position in the stream. + + +Return Value +------------ +Whether or not the operation was successful. +*/ +typedef drflac_bool32 (* drflac_tell_proc)(void* pUserData, drflac_int64* pCursor); + /* Callback for when a metadata block is read. @@ -603,6 +513,9 @@ typedef struct /* The function to call when the current read position needs to be moved. */ drflac_seek_proc onSeek; + /* The function to call when the current read position needs to be retrieved. */ + drflac_tell_proc onTell; + /* The user data to pass around to onRead and onSeek. */ void* pUserData; @@ -828,7 +741,7 @@ drflac_open_memory() drflac_open_with_metadata() drflac_close() */ -DRFLAC_API drflac* drflac_open(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks); +DRFLAC_API drflac* drflac_open(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks); /* Opens a FLAC stream with relaxed validation of the header block. @@ -869,7 +782,7 @@ force your `onRead` callback to return 0, which dr_flac will use as an indicator Use `drflac_open_with_metadata_relaxed()` if you need access to metadata. */ -DRFLAC_API drflac* drflac_open_relaxed(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_container container, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks); +DRFLAC_API drflac* drflac_open_relaxed(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, drflac_container container, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks); /* Opens a FLAC decoder and notifies the caller of the metadata chunks (album art, etc.). @@ -926,7 +839,7 @@ drflac_open_memory_with_metadata() drflac_open() drflac_close() */ -DRFLAC_API drflac* drflac_open_with_metadata(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks); +DRFLAC_API drflac* drflac_open_with_metadata(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, drflac_meta_proc onMeta, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks); /* The same as drflac_open_with_metadata(), except attempts to open the stream even when a header block is not present. @@ -936,7 +849,7 @@ See Also drflac_open_with_metadata() drflac_open_relaxed() */ -DRFLAC_API drflac* drflac_open_with_metadata_relaxed(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, drflac_container container, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks); +DRFLAC_API drflac* drflac_open_with_metadata_relaxed(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, drflac_meta_proc onMeta, drflac_container container, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks); /* Closes the given FLAC decoder. @@ -1234,13 +1147,13 @@ read samples into a dynamically sized buffer on the heap until no samples are le Do not call this function on a broadcast type of stream (like internet radio streams and whatnot). */ -DRFLAC_API drflac_int32* drflac_open_and_read_pcm_frames_s32(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks); +DRFLAC_API drflac_int32* drflac_open_and_read_pcm_frames_s32(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks); /* Same as drflac_open_and_read_pcm_frames_s32(), except returns signed 16-bit integer samples. */ -DRFLAC_API drflac_int16* drflac_open_and_read_pcm_frames_s16(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks); +DRFLAC_API drflac_int16* drflac_open_and_read_pcm_frames_s16(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks); /* Same as drflac_open_and_read_pcm_frames_s32(), except returns 32-bit floating-point samples. */ -DRFLAC_API float* drflac_open_and_read_pcm_frames_f32(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks); +DRFLAC_API float* drflac_open_and_read_pcm_frames_f32(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks); #ifndef DR_FLAC_NO_STDIO /* Same as drflac_open_and_read_pcm_frames_s32() except opens the decoder from a file. */ @@ -2960,25 +2873,25 @@ static drflac_bool32 drflac__seek_to_byte(drflac_bs* bs, drflac_uint64 offsetFro */ if (offsetFromStart > 0x7FFFFFFF) { drflac_uint64 bytesRemaining = offsetFromStart; - if (!bs->onSeek(bs->pUserData, 0x7FFFFFFF, drflac_seek_origin_start)) { + if (!bs->onSeek(bs->pUserData, 0x7FFFFFFF, DRFLAC_SEEK_SET)) { return DRFLAC_FALSE; } bytesRemaining -= 0x7FFFFFFF; while (bytesRemaining > 0x7FFFFFFF) { - if (!bs->onSeek(bs->pUserData, 0x7FFFFFFF, drflac_seek_origin_current)) { + if (!bs->onSeek(bs->pUserData, 0x7FFFFFFF, DRFLAC_SEEK_CUR)) { return DRFLAC_FALSE; } bytesRemaining -= 0x7FFFFFFF; } if (bytesRemaining > 0) { - if (!bs->onSeek(bs->pUserData, (int)bytesRemaining, drflac_seek_origin_current)) { + if (!bs->onSeek(bs->pUserData, (int)bytesRemaining, DRFLAC_SEEK_CUR)) { return DRFLAC_FALSE; } } } else { - if (!bs->onSeek(bs->pUserData, (int)offsetFromStart, drflac_seek_origin_start)) { + if (!bs->onSeek(bs->pUserData, (int)offsetFromStart, DRFLAC_SEEK_SET)) { return DRFLAC_FALSE; } } @@ -5393,6 +5306,12 @@ static drflac_bool32 drflac__read_subframe_header(drflac_bs* bs, drflac_subframe return DRFLAC_FALSE; } + /* + Default to 0 for the LPC order. It's important that we always set this to 0 for non LPC + and FIXED subframes because we'll be using it in a generic validation check later. + */ + pSubframe->lpcOrder = 0; + type = (header & 0x7E) >> 1; if (type == 0) { pSubframe->subframeType = DRFLAC_SUBFRAME_CONSTANT; @@ -5465,6 +5384,18 @@ static drflac_bool32 drflac__decode_subframe(drflac_bs* bs, drflac_frame* frame, pSubframe->pSamplesS32 = pDecodedSamplesOut; + /* + pDecodedSamplesOut will be pointing to a buffer that was allocated with enough memory to store + maxBlockSizeInPCMFrames samples (as specified in the FLAC header). We need to guard against an + overflow here. At a higher level we are checking maxBlockSizeInPCMFrames from the header, but + here we need to do an additional check to ensure this frame's block size fully encompasses any + warmup samples which is determined by the LPC order. For non LPC and FIXED subframes, the LPC + order will be have been set to 0 in drflac__read_subframe_header(). + */ + if (frame->header.blockSizeInPCMFrames < pSubframe->lpcOrder) { + return DRFLAC_FALSE; + } + switch (pSubframe->subframeType) { case DRFLAC_SUBFRAME_CONSTANT: @@ -6312,6 +6243,7 @@ typedef struct { drflac_read_proc onRead; drflac_seek_proc onSeek; + drflac_tell_proc onTell; drflac_meta_proc onMeta; drflac_container container; void* pUserData; @@ -6479,7 +6411,7 @@ static void drflac__free_from_callbacks(void* p, const drflac_allocation_callbac } -static drflac_bool32 drflac__read_and_decode_metadata(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, void* pUserData, void* pUserDataMD, drflac_uint64* pFirstFramePos, drflac_uint64* pSeektablePos, drflac_uint32* pSeekpointCount, drflac_allocation_callbacks* pAllocationCallbacks) +static drflac_bool32 drflac__read_and_decode_metadata(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, drflac_meta_proc onMeta, void* pUserData, void* pUserDataMD, drflac_uint64* pFirstFramePos, drflac_uint64* pSeektablePos, drflac_uint32* pSeekpointCount, drflac_allocation_callbacks* pAllocationCallbacks) { /* We want to keep track of the byte position in the stream of the seektable. At the time of calling this function we know that @@ -6489,6 +6421,8 @@ static drflac_bool32 drflac__read_and_decode_metadata(drflac_read_proc onRead, d drflac_uint64 seektablePos = 0; drflac_uint32 seektableSize = 0; + (void)onTell; + for (;;) { drflac_metadata metadata; drflac_uint8 isLastBlock = 0; @@ -6702,10 +6636,10 @@ static drflac_bool32 drflac__read_and_decode_metadata(drflac_read_proc onRead, d /* Skip to the index point count */ pRunningData += 35; - + indexCount = pRunningData[0]; pRunningData += 1; - + bufferSize += indexCount * sizeof(drflac_cuesheet_track_index); /* Quick validation check. */ @@ -6840,7 +6774,7 @@ static drflac_bool32 drflac__read_and_decode_metadata(drflac_read_proc onRead, d metadata.data.padding.unused = 0; /* Padding doesn't have anything meaningful in it, so just skip over it, but make sure the caller is aware of it by firing the callback. */ - if (!onSeek(pUserData, blockSize, drflac_seek_origin_current)) { + if (!onSeek(pUserData, blockSize, DRFLAC_SEEK_CUR)) { isLastBlock = DRFLAC_TRUE; /* An error occurred while seeking. Attempt to recover by treating this as the last block which will in turn terminate the loop. */ } else { onMeta(pUserDataMD, &metadata); @@ -6852,7 +6786,7 @@ static drflac_bool32 drflac__read_and_decode_metadata(drflac_read_proc onRead, d { /* Invalid chunk. Just skip over this one. */ if (onMeta) { - if (!onSeek(pUserData, blockSize, drflac_seek_origin_current)) { + if (!onSeek(pUserData, blockSize, DRFLAC_SEEK_CUR)) { isLastBlock = DRFLAC_TRUE; /* An error occurred while seeking. Attempt to recover by treating this as the last block which will in turn terminate the loop. */ } } @@ -6886,7 +6820,7 @@ static drflac_bool32 drflac__read_and_decode_metadata(drflac_read_proc onRead, d /* If we're not handling metadata, just skip over the block. If we are, it will have been handled earlier in the switch statement above. */ if (onMeta == NULL && blockSize > 0) { - if (!onSeek(pUserData, blockSize, drflac_seek_origin_current)) { + if (!onSeek(pUserData, blockSize, DRFLAC_SEEK_CUR)) { isLastBlock = DRFLAC_TRUE; } } @@ -7220,6 +7154,7 @@ typedef struct { drflac_read_proc onRead; /* The original onRead callback from drflac_open() and family. */ drflac_seek_proc onSeek; /* The original onSeek callback from drflac_open() and family. */ + drflac_tell_proc onTell; /* The original onTell callback from drflac_open() and family. */ void* pUserData; /* The user data passed on onRead and onSeek. This is the user data that was passed on drflac_open() and family. */ drflac_uint64 currentBytePos; /* The position of the byte we are sitting on in the physical byte stream. Used for efficient seeking. */ drflac_uint64 firstBytePos; /* The position of the first byte in the physical bitstream. Points to the start of the "OggS" identifier of the FLAC bos page. */ @@ -7241,32 +7176,32 @@ static size_t drflac_oggbs__read_physical(drflac_oggbs* oggbs, void* bufferOut, static drflac_bool32 drflac_oggbs__seek_physical(drflac_oggbs* oggbs, drflac_uint64 offset, drflac_seek_origin origin) { - if (origin == drflac_seek_origin_start) { + if (origin == DRFLAC_SEEK_SET) { if (offset <= 0x7FFFFFFF) { - if (!oggbs->onSeek(oggbs->pUserData, (int)offset, drflac_seek_origin_start)) { + if (!oggbs->onSeek(oggbs->pUserData, (int)offset, DRFLAC_SEEK_SET)) { return DRFLAC_FALSE; } oggbs->currentBytePos = offset; return DRFLAC_TRUE; } else { - if (!oggbs->onSeek(oggbs->pUserData, 0x7FFFFFFF, drflac_seek_origin_start)) { + if (!oggbs->onSeek(oggbs->pUserData, 0x7FFFFFFF, DRFLAC_SEEK_SET)) { return DRFLAC_FALSE; } oggbs->currentBytePos = offset; - return drflac_oggbs__seek_physical(oggbs, offset - 0x7FFFFFFF, drflac_seek_origin_current); + return drflac_oggbs__seek_physical(oggbs, offset - 0x7FFFFFFF, DRFLAC_SEEK_CUR); } } else { while (offset > 0x7FFFFFFF) { - if (!oggbs->onSeek(oggbs->pUserData, 0x7FFFFFFF, drflac_seek_origin_current)) { + if (!oggbs->onSeek(oggbs->pUserData, 0x7FFFFFFF, DRFLAC_SEEK_CUR)) { return DRFLAC_FALSE; } oggbs->currentBytePos += 0x7FFFFFFF; offset -= 0x7FFFFFFF; } - if (!oggbs->onSeek(oggbs->pUserData, (int)offset, drflac_seek_origin_current)) { /* <-- Safe cast thanks to the loop above. */ + if (!oggbs->onSeek(oggbs->pUserData, (int)offset, DRFLAC_SEEK_CUR)) { /* <-- Safe cast thanks to the loop above. */ return DRFLAC_FALSE; } oggbs->currentBytePos += offset; @@ -7298,7 +7233,7 @@ static drflac_bool32 drflac_oggbs__goto_next_page(drflac_oggbs* oggbs, drflac_og if (header.serialNumber != oggbs->serialNumber) { /* It's not a FLAC page. Skip it. */ - if (pageBodySize > 0 && !drflac_oggbs__seek_physical(oggbs, pageBodySize, drflac_seek_origin_current)) { + if (pageBodySize > 0 && !drflac_oggbs__seek_physical(oggbs, pageBodySize, DRFLAC_SEEK_CUR)) { return DRFLAC_FALSE; } continue; @@ -7384,7 +7319,7 @@ static drflac_bool32 drflac_oggbs__seek_to_next_packet(drflac_oggbs* oggbs) At this point we will have found either the packet or the end of the page. If were at the end of the page we'll want to load the next page and keep searching for the end of the packet. */ - drflac_oggbs__seek_physical(oggbs, bytesToEndOfPacketOrPage, drflac_seek_origin_current); + drflac_oggbs__seek_physical(oggbs, bytesToEndOfPacketOrPage, DRFLAC_SEEK_CUR); oggbs->bytesRemainingInPage -= bytesToEndOfPacketOrPage; if (atEndOfPage) { @@ -7462,8 +7397,8 @@ static drflac_bool32 drflac__on_seek_ogg(void* pUserData, int offset, drflac_see DRFLAC_ASSERT(offset >= 0); /* <-- Never seek backwards. */ /* Seeking is always forward which makes things a lot simpler. */ - if (origin == drflac_seek_origin_start) { - if (!drflac_oggbs__seek_physical(oggbs, (int)oggbs->firstBytePos, drflac_seek_origin_start)) { + if (origin == DRFLAC_SEEK_SET) { + if (!drflac_oggbs__seek_physical(oggbs, (int)oggbs->firstBytePos, DRFLAC_SEEK_SET)) { return DRFLAC_FALSE; } @@ -7471,38 +7406,50 @@ static drflac_bool32 drflac__on_seek_ogg(void* pUserData, int offset, drflac_see return DRFLAC_FALSE; } - return drflac__on_seek_ogg(pUserData, offset, drflac_seek_origin_current); - } + return drflac__on_seek_ogg(pUserData, offset, DRFLAC_SEEK_CUR); + } else if (origin == DRFLAC_SEEK_CUR) { + while (bytesSeeked < offset) { + int bytesRemainingToSeek = offset - bytesSeeked; + DRFLAC_ASSERT(bytesRemainingToSeek >= 0); - DRFLAC_ASSERT(origin == drflac_seek_origin_current); + if (oggbs->bytesRemainingInPage >= (size_t)bytesRemainingToSeek) { + bytesSeeked += bytesRemainingToSeek; + (void)bytesSeeked; /* <-- Silence a dead store warning emitted by Clang Static Analyzer. */ + oggbs->bytesRemainingInPage -= bytesRemainingToSeek; + break; + } - while (bytesSeeked < offset) { - int bytesRemainingToSeek = offset - bytesSeeked; - DRFLAC_ASSERT(bytesRemainingToSeek >= 0); + /* If we get here it means some of the requested data is contained in the next pages. */ + if (oggbs->bytesRemainingInPage > 0) { + bytesSeeked += (int)oggbs->bytesRemainingInPage; + oggbs->bytesRemainingInPage = 0; + } - if (oggbs->bytesRemainingInPage >= (size_t)bytesRemainingToSeek) { - bytesSeeked += bytesRemainingToSeek; - (void)bytesSeeked; /* <-- Silence a dead store warning emitted by Clang Static Analyzer. */ - oggbs->bytesRemainingInPage -= bytesRemainingToSeek; - break; - } - - /* If we get here it means some of the requested data is contained in the next pages. */ - if (oggbs->bytesRemainingInPage > 0) { - bytesSeeked += (int)oggbs->bytesRemainingInPage; - oggbs->bytesRemainingInPage = 0; - } - - DRFLAC_ASSERT(bytesRemainingToSeek > 0); - if (!drflac_oggbs__goto_next_page(oggbs, drflac_ogg_fail_on_crc_mismatch)) { - /* Failed to go to the next page. We either hit the end of the stream or had a CRC mismatch. */ - return DRFLAC_FALSE; + DRFLAC_ASSERT(bytesRemainingToSeek > 0); + if (!drflac_oggbs__goto_next_page(oggbs, drflac_ogg_fail_on_crc_mismatch)) { + /* Failed to go to the next page. We either hit the end of the stream or had a CRC mismatch. */ + return DRFLAC_FALSE; + } } + } else if (origin == DRFLAC_SEEK_END) { + /* Seeking to the end is not supported. */ + return DRFLAC_FALSE; } return DRFLAC_TRUE; } +static drflac_bool32 drflac__on_tell_ogg(void* pUserData, drflac_int64* pCursor) +{ + /* + Not implemented for Ogg containers because we don't currently track the byte position of the logical bitstream. To support this, we'll need + to track the position in drflac__on_read_ogg and drflac__on_seek_ogg. + */ + (void)pUserData; + (void)pCursor; + return DRFLAC_FALSE; +} + static drflac_bool32 drflac_ogg__seek_to_pcm_frame(drflac* pFlac, drflac_uint64 pcmFrameIndex) { @@ -7525,7 +7472,7 @@ static drflac_bool32 drflac_ogg__seek_to_pcm_frame(drflac* pFlac, drflac_uint64 runningGranulePosition = 0; for (;;) { if (!drflac_oggbs__goto_next_page(oggbs, drflac_ogg_recover_on_crc_mismatch)) { - drflac_oggbs__seek_physical(oggbs, originalBytePos, drflac_seek_origin_start); + drflac_oggbs__seek_physical(oggbs, originalBytePos, DRFLAC_SEEK_SET); return DRFLAC_FALSE; /* Never did find that sample... */ } @@ -7559,7 +7506,7 @@ static drflac_bool32 drflac_ogg__seek_to_pcm_frame(drflac* pFlac, drflac_uint64 a new frame. This property means that after we've seeked to the page we can immediately start looping over frames until we find the one containing the target sample. */ - if (!drflac_oggbs__seek_physical(oggbs, runningFrameBytePos, drflac_seek_origin_start)) { + if (!drflac_oggbs__seek_physical(oggbs, runningFrameBytePos, DRFLAC_SEEK_SET)) { return DRFLAC_FALSE; } if (!drflac_oggbs__goto_next_page(oggbs, drflac_ogg_recover_on_crc_mismatch)) { @@ -7726,7 +7673,7 @@ static drflac_bool32 drflac__init_private__ogg(drflac_init_info* pInit, drflac_r The next 2 bytes are the non-audio packets, not including this one. We don't care about this because we're going to be handling it in a generic way based on the serial number and packet types. */ - if (!onSeek(pUserData, 2, drflac_seek_origin_current)) { + if (!onSeek(pUserData, 2, DRFLAC_SEEK_CUR)) { return DRFLAC_FALSE; } @@ -7783,18 +7730,18 @@ static drflac_bool32 drflac__init_private__ogg(drflac_init_info* pInit, drflac_r } } else { /* Not a FLAC header. Skip it. */ - if (!onSeek(pUserData, bytesRemainingInPage, drflac_seek_origin_current)) { + if (!onSeek(pUserData, bytesRemainingInPage, DRFLAC_SEEK_CUR)) { return DRFLAC_FALSE; } } } else { /* Not a FLAC header. Seek past the entire page and move on to the next. */ - if (!onSeek(pUserData, bytesRemainingInPage, drflac_seek_origin_current)) { + if (!onSeek(pUserData, bytesRemainingInPage, DRFLAC_SEEK_CUR)) { return DRFLAC_FALSE; } } } else { - if (!onSeek(pUserData, pageBodySize, drflac_seek_origin_current)) { + if (!onSeek(pUserData, pageBodySize, DRFLAC_SEEK_CUR)) { return DRFLAC_FALSE; } } @@ -7819,18 +7766,19 @@ static drflac_bool32 drflac__init_private__ogg(drflac_init_info* pInit, drflac_r } #endif -static drflac_bool32 drflac__init_private(drflac_init_info* pInit, drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, drflac_container container, void* pUserData, void* pUserDataMD) +static drflac_bool32 drflac__init_private(drflac_init_info* pInit, drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, drflac_meta_proc onMeta, drflac_container container, void* pUserData, void* pUserDataMD) { drflac_bool32 relaxed; drflac_uint8 id[4]; - if (pInit == NULL || onRead == NULL || onSeek == NULL) { + if (pInit == NULL || onRead == NULL || onSeek == NULL) { /* <-- onTell is optional. */ return DRFLAC_FALSE; } DRFLAC_ZERO_MEMORY(pInit, sizeof(*pInit)); pInit->onRead = onRead; pInit->onSeek = onSeek; + pInit->onTell = onTell; pInit->onMeta = onMeta; pInit->container = container; pInit->pUserData = pUserData; @@ -7838,6 +7786,7 @@ static drflac_bool32 drflac__init_private(drflac_init_info* pInit, drflac_read_p pInit->bs.onRead = onRead; pInit->bs.onSeek = onSeek; + pInit->bs.onTell = onTell; pInit->bs.pUserData = pUserData; drflac__reset_cache(&pInit->bs); @@ -7870,7 +7819,7 @@ static drflac_bool32 drflac__init_private(drflac_init_info* pInit, drflac_read_p headerSize += 10; } - if (!onSeek(pUserData, headerSize, drflac_seek_origin_current)) { + if (!onSeek(pUserData, headerSize, DRFLAC_SEEK_CUR)) { return DRFLAC_FALSE; /* Failed to seek past the tag. */ } pInit->runningFilePos += headerSize; @@ -7922,7 +7871,7 @@ static void drflac__init_from_info(drflac* pFlac, const drflac_init_info* pInit) } -static drflac* drflac_open_with_metadata_private(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, drflac_container container, void* pUserData, void* pUserDataMD, const drflac_allocation_callbacks* pAllocationCallbacks) +static drflac* drflac_open_with_metadata_private(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, drflac_meta_proc onMeta, drflac_container container, void* pUserData, void* pUserDataMD, const drflac_allocation_callbacks* pAllocationCallbacks) { drflac_init_info init; drflac_uint32 allocationSize; @@ -7940,7 +7889,7 @@ static drflac* drflac_open_with_metadata_private(drflac_read_proc onRead, drflac /* CPU support first. */ drflac__init_cpu_caps(); - if (!drflac__init_private(&init, onRead, onSeek, onMeta, container, pUserData, pUserDataMD)) { + if (!drflac__init_private(&init, onRead, onSeek, onTell, onMeta, container, pUserData, pUserDataMD)) { return NULL; } @@ -7996,6 +7945,7 @@ static drflac* drflac_open_with_metadata_private(drflac_read_proc onRead, drflac DRFLAC_ZERO_MEMORY(pOggbs, sizeof(*pOggbs)); pOggbs->onRead = onRead; pOggbs->onSeek = onSeek; + pOggbs->onTell = onTell; pOggbs->pUserData = pUserData; pOggbs->currentBytePos = init.oggFirstBytePos; pOggbs->firstBytePos = init.oggFirstBytePos; @@ -8016,17 +7966,19 @@ static drflac* drflac_open_with_metadata_private(drflac_read_proc onRead, drflac if (init.hasMetadataBlocks) { drflac_read_proc onReadOverride = onRead; drflac_seek_proc onSeekOverride = onSeek; + drflac_tell_proc onTellOverride = onTell; void* pUserDataOverride = pUserData; #ifndef DR_FLAC_NO_OGG if (init.container == drflac_container_ogg) { onReadOverride = drflac__on_read_ogg; onSeekOverride = drflac__on_seek_ogg; + onTellOverride = drflac__on_tell_ogg; pUserDataOverride = (void*)pOggbs; } #endif - if (!drflac__read_and_decode_metadata(onReadOverride, onSeekOverride, onMeta, pUserDataOverride, pUserDataMD, &firstFramePos, &seektablePos, &seekpointCount, &allocationCallbacks)) { + if (!drflac__read_and_decode_metadata(onReadOverride, onSeekOverride, onTellOverride, onMeta, pUserDataOverride, pUserDataMD, &firstFramePos, &seektablePos, &seekpointCount, &allocationCallbacks)) { #ifndef DR_FLAC_NO_OGG drflac__free_from_callbacks(pOggbs, &allocationCallbacks); #endif @@ -8061,6 +8013,7 @@ static drflac* drflac_open_with_metadata_private(drflac_read_proc onRead, drflac /* The Ogg bistream needs to be layered on top of the original bitstream. */ pFlac->bs.onRead = drflac__on_read_ogg; pFlac->bs.onSeek = drflac__on_seek_ogg; + pFlac->bs.onTell = drflac__on_tell_ogg; pFlac->bs.pUserData = (void*)pInternalOggbs; pFlac->_oggbs = (void*)pInternalOggbs; } @@ -8087,7 +8040,7 @@ static drflac* drflac_open_with_metadata_private(drflac_read_proc onRead, drflac DRFLAC_ASSERT(pFlac->bs.onRead != NULL); /* Seek to the seektable, then just read directly into our seektable buffer. */ - if (pFlac->bs.onSeek(pFlac->bs.pUserData, (int)seektablePos, drflac_seek_origin_start)) { + if (pFlac->bs.onSeek(pFlac->bs.pUserData, (int)seektablePos, DRFLAC_SEEK_SET)) { drflac_uint32 iSeekpoint; for (iSeekpoint = 0; iSeekpoint < seekpointCount; iSeekpoint += 1) { @@ -8105,7 +8058,7 @@ static drflac* drflac_open_with_metadata_private(drflac_read_proc onRead, drflac } /* We need to seek back to where we were. If this fails it's a critical error. */ - if (!pFlac->bs.onSeek(pFlac->bs.pUserData, (int)pFlac->firstFLACFramePosInBytes, drflac_seek_origin_start)) { + if (!pFlac->bs.onSeek(pFlac->bs.pUserData, (int)pFlac->firstFLACFramePosInBytes, DRFLAC_SEEK_SET)) { drflac__free_from_callbacks(pFlac, &allocationCallbacks); return NULL; } @@ -8276,7 +8229,7 @@ static drflac_result drflac_result_from_errno(int e) #ifdef ENOSYS case ENOSYS: return DRFLAC_NOT_IMPLEMENTED; #endif - #ifdef ENOTEMPTY + #if defined(ENOTEMPTY) && ENOTEMPTY != EEXIST /* In AIX, ENOTEMPTY and EEXIST use the same value. */ case ENOTEMPTY: return DRFLAC_DIRECTORY_NOT_EMPTY; #endif #ifdef ELOOP @@ -8727,11 +8680,41 @@ static size_t drflac__on_read_stdio(void* pUserData, void* bufferOut, size_t byt static drflac_bool32 drflac__on_seek_stdio(void* pUserData, int offset, drflac_seek_origin origin) { - DRFLAC_ASSERT(offset >= 0); /* <-- Never seek backwards. */ + int whence = SEEK_SET; + if (origin == DRFLAC_SEEK_CUR) { + whence = SEEK_CUR; + } else if (origin == DRFLAC_SEEK_END) { + whence = SEEK_END; + } - return fseek((FILE*)pUserData, offset, (origin == drflac_seek_origin_current) ? SEEK_CUR : SEEK_SET) == 0; + return fseek((FILE*)pUserData, offset, whence) == 0; } +static drflac_bool32 drflac__on_tell_stdio(void* pUserData, drflac_int64* pCursor) +{ + FILE* pFileStdio = (FILE*)pUserData; + drflac_int64 result; + + /* These were all validated at a higher level. */ + DRFLAC_ASSERT(pFileStdio != NULL); + DRFLAC_ASSERT(pCursor != NULL); + +#if defined(_WIN32) + #if defined(_MSC_VER) && _MSC_VER > 1200 + result = _ftelli64(pFileStdio); + #else + result = ftell(pFileStdio); + #endif +#else + result = ftell(pFileStdio); +#endif + + *pCursor = result; + + return DRFLAC_TRUE; +} + + DRFLAC_API drflac* drflac_open_file(const char* pFileName, const drflac_allocation_callbacks* pAllocationCallbacks) { @@ -8742,7 +8725,7 @@ DRFLAC_API drflac* drflac_open_file(const char* pFileName, const drflac_allocati return NULL; } - pFlac = drflac_open(drflac__on_read_stdio, drflac__on_seek_stdio, (void*)pFile, pAllocationCallbacks); + pFlac = drflac_open(drflac__on_read_stdio, drflac__on_seek_stdio, drflac__on_tell_stdio, (void*)pFile, pAllocationCallbacks); if (pFlac == NULL) { fclose(pFile); return NULL; @@ -8761,7 +8744,7 @@ DRFLAC_API drflac* drflac_open_file_w(const wchar_t* pFileName, const drflac_all return NULL; } - pFlac = drflac_open(drflac__on_read_stdio, drflac__on_seek_stdio, (void*)pFile, pAllocationCallbacks); + pFlac = drflac_open(drflac__on_read_stdio, drflac__on_seek_stdio, drflac__on_tell_stdio, (void*)pFile, pAllocationCallbacks); if (pFlac == NULL) { fclose(pFile); return NULL; @@ -8780,7 +8763,7 @@ DRFLAC_API drflac* drflac_open_file_with_metadata(const char* pFileName, drflac_ return NULL; } - pFlac = drflac_open_with_metadata_private(drflac__on_read_stdio, drflac__on_seek_stdio, onMeta, drflac_container_unknown, (void*)pFile, pUserData, pAllocationCallbacks); + pFlac = drflac_open_with_metadata_private(drflac__on_read_stdio, drflac__on_seek_stdio, drflac__on_tell_stdio, onMeta, drflac_container_unknown, (void*)pFile, pUserData, pAllocationCallbacks); if (pFlac == NULL) { fclose(pFile); return pFlac; @@ -8799,7 +8782,7 @@ DRFLAC_API drflac* drflac_open_file_with_metadata_w(const wchar_t* pFileName, dr return NULL; } - pFlac = drflac_open_with_metadata_private(drflac__on_read_stdio, drflac__on_seek_stdio, onMeta, drflac_container_unknown, (void*)pFile, pUserData, pAllocationCallbacks); + pFlac = drflac_open_with_metadata_private(drflac__on_read_stdio, drflac__on_seek_stdio, drflac__on_tell_stdio, onMeta, drflac_container_unknown, (void*)pFile, pUserData, pAllocationCallbacks); if (pFlac == NULL) { fclose(pFile); return pFlac; @@ -8834,28 +8817,45 @@ static size_t drflac__on_read_memory(void* pUserData, void* bufferOut, size_t by static drflac_bool32 drflac__on_seek_memory(void* pUserData, int offset, drflac_seek_origin origin) { drflac__memory_stream* memoryStream = (drflac__memory_stream*)pUserData; + drflac_int64 newCursor; DRFLAC_ASSERT(memoryStream != NULL); - DRFLAC_ASSERT(offset >= 0); /* <-- Never seek backwards. */ - if (offset > (drflac_int64)memoryStream->dataSize) { + newCursor = memoryStream->currentReadPos; + + if (origin == DRFLAC_SEEK_SET) { + newCursor = 0; + } else if (origin == DRFLAC_SEEK_CUR) { + newCursor = (drflac_int64)memoryStream->currentReadPos; + } else if (origin == DRFLAC_SEEK_END) { + newCursor = (drflac_int64)memoryStream->dataSize; + } else { + DRFLAC_ASSERT(!"Invalid seek origin"); return DRFLAC_FALSE; } - if (origin == drflac_seek_origin_current) { - if (memoryStream->currentReadPos + offset <= memoryStream->dataSize) { - memoryStream->currentReadPos += offset; - } else { - return DRFLAC_FALSE; /* Trying to seek too far forward. */ - } - } else { - if ((drflac_uint32)offset <= memoryStream->dataSize) { - memoryStream->currentReadPos = offset; - } else { - return DRFLAC_FALSE; /* Trying to seek too far forward. */ - } + newCursor += offset; + + if (newCursor < 0) { + return DRFLAC_FALSE; /* Trying to seek prior to the start of the buffer. */ + } + if ((size_t)newCursor > memoryStream->dataSize) { + return DRFLAC_FALSE; /* Trying to seek beyond the end of the buffer. */ } + memoryStream->currentReadPos = (size_t)newCursor; + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__on_tell_memory(void* pUserData, drflac_int64* pCursor) +{ + drflac__memory_stream* memoryStream = (drflac__memory_stream*)pUserData; + + DRFLAC_ASSERT(memoryStream != NULL); + DRFLAC_ASSERT(pCursor != NULL); + + *pCursor = (drflac_int64)memoryStream->currentReadPos; return DRFLAC_TRUE; } @@ -8867,7 +8867,7 @@ DRFLAC_API drflac* drflac_open_memory(const void* pData, size_t dataSize, const memoryStream.data = (const drflac_uint8*)pData; memoryStream.dataSize = dataSize; memoryStream.currentReadPos = 0; - pFlac = drflac_open(drflac__on_read_memory, drflac__on_seek_memory, &memoryStream, pAllocationCallbacks); + pFlac = drflac_open(drflac__on_read_memory, drflac__on_seek_memory, drflac__on_tell_memory, &memoryStream, pAllocationCallbacks); if (pFlac == NULL) { return NULL; } @@ -8898,7 +8898,7 @@ DRFLAC_API drflac* drflac_open_memory_with_metadata(const void* pData, size_t da memoryStream.data = (const drflac_uint8*)pData; memoryStream.dataSize = dataSize; memoryStream.currentReadPos = 0; - pFlac = drflac_open_with_metadata_private(drflac__on_read_memory, drflac__on_seek_memory, onMeta, drflac_container_unknown, &memoryStream, pUserData, pAllocationCallbacks); + pFlac = drflac_open_with_metadata_private(drflac__on_read_memory, drflac__on_seek_memory, drflac__on_tell_memory, onMeta, drflac_container_unknown, &memoryStream, pUserData, pAllocationCallbacks); if (pFlac == NULL) { return NULL; } @@ -8923,22 +8923,22 @@ DRFLAC_API drflac* drflac_open_memory_with_metadata(const void* pData, size_t da -DRFLAC_API drflac* drflac_open(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks) +DRFLAC_API drflac* drflac_open(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks) { - return drflac_open_with_metadata_private(onRead, onSeek, NULL, drflac_container_unknown, pUserData, pUserData, pAllocationCallbacks); + return drflac_open_with_metadata_private(onRead, onSeek, onTell, NULL, drflac_container_unknown, pUserData, pUserData, pAllocationCallbacks); } -DRFLAC_API drflac* drflac_open_relaxed(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_container container, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks) +DRFLAC_API drflac* drflac_open_relaxed(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, drflac_container container, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks) { - return drflac_open_with_metadata_private(onRead, onSeek, NULL, container, pUserData, pUserData, pAllocationCallbacks); + return drflac_open_with_metadata_private(onRead, onSeek, onTell, NULL, container, pUserData, pUserData, pAllocationCallbacks); } -DRFLAC_API drflac* drflac_open_with_metadata(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks) +DRFLAC_API drflac* drflac_open_with_metadata(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, drflac_meta_proc onMeta, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks) { - return drflac_open_with_metadata_private(onRead, onSeek, onMeta, drflac_container_unknown, pUserData, pUserData, pAllocationCallbacks); + return drflac_open_with_metadata_private(onRead, onSeek, onTell, onMeta, drflac_container_unknown, pUserData, pUserData, pAllocationCallbacks); } -DRFLAC_API drflac* drflac_open_with_metadata_relaxed(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, drflac_container container, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks) +DRFLAC_API drflac* drflac_open_with_metadata_relaxed(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, drflac_meta_proc onMeta, drflac_container container, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks) { - return drflac_open_with_metadata_private(onRead, onSeek, onMeta, container, pUserData, pUserData, pAllocationCallbacks); + return drflac_open_with_metadata_private(onRead, onSeek, onTell, onMeta, container, pUserData, pUserData, pAllocationCallbacks); } DRFLAC_API void drflac_close(drflac* pFlac) @@ -11770,7 +11770,7 @@ DRFLAC_DEFINE_FULL_READ_AND_CLOSE(s32, drflac_int32) DRFLAC_DEFINE_FULL_READ_AND_CLOSE(s16, drflac_int16) DRFLAC_DEFINE_FULL_READ_AND_CLOSE(f32, float) -DRFLAC_API drflac_int32* drflac_open_and_read_pcm_frames_s32(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalPCMFrameCountOut, const drflac_allocation_callbacks* pAllocationCallbacks) +DRFLAC_API drflac_int32* drflac_open_and_read_pcm_frames_s32(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalPCMFrameCountOut, const drflac_allocation_callbacks* pAllocationCallbacks) { drflac* pFlac; @@ -11784,7 +11784,7 @@ DRFLAC_API drflac_int32* drflac_open_and_read_pcm_frames_s32(drflac_read_proc on *totalPCMFrameCountOut = 0; } - pFlac = drflac_open(onRead, onSeek, pUserData, pAllocationCallbacks); + pFlac = drflac_open(onRead, onSeek, onTell, pUserData, pAllocationCallbacks); if (pFlac == NULL) { return NULL; } @@ -11792,7 +11792,7 @@ DRFLAC_API drflac_int32* drflac_open_and_read_pcm_frames_s32(drflac_read_proc on return drflac__full_read_and_close_s32(pFlac, channelsOut, sampleRateOut, totalPCMFrameCountOut); } -DRFLAC_API drflac_int16* drflac_open_and_read_pcm_frames_s16(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalPCMFrameCountOut, const drflac_allocation_callbacks* pAllocationCallbacks) +DRFLAC_API drflac_int16* drflac_open_and_read_pcm_frames_s16(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalPCMFrameCountOut, const drflac_allocation_callbacks* pAllocationCallbacks) { drflac* pFlac; @@ -11806,7 +11806,7 @@ DRFLAC_API drflac_int16* drflac_open_and_read_pcm_frames_s16(drflac_read_proc on *totalPCMFrameCountOut = 0; } - pFlac = drflac_open(onRead, onSeek, pUserData, pAllocationCallbacks); + pFlac = drflac_open(onRead, onSeek, onTell, pUserData, pAllocationCallbacks); if (pFlac == NULL) { return NULL; } @@ -11814,7 +11814,7 @@ DRFLAC_API drflac_int16* drflac_open_and_read_pcm_frames_s16(drflac_read_proc on return drflac__full_read_and_close_s16(pFlac, channelsOut, sampleRateOut, totalPCMFrameCountOut); } -DRFLAC_API float* drflac_open_and_read_pcm_frames_f32(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalPCMFrameCountOut, const drflac_allocation_callbacks* pAllocationCallbacks) +DRFLAC_API float* drflac_open_and_read_pcm_frames_f32(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_tell_proc onTell, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalPCMFrameCountOut, const drflac_allocation_callbacks* pAllocationCallbacks) { drflac* pFlac; @@ -11828,7 +11828,7 @@ DRFLAC_API float* drflac_open_and_read_pcm_frames_f32(drflac_read_proc onRead, d *totalPCMFrameCountOut = 0; } - pFlac = drflac_open(onRead, onSeek, pUserData, pAllocationCallbacks); + pFlac = drflac_open(onRead, onSeek, onTell, pUserData, pAllocationCallbacks); if (pFlac == NULL) { return NULL; } @@ -12077,6 +12077,26 @@ DRFLAC_API drflac_bool32 drflac_next_cuesheet_track(drflac_cuesheet_track_iterat /* REVISION HISTORY ================ +v0.13.0 - TBD + - API CHANGE: Seek origin enums have been renamed to match the naming convention used by other dr_libs libraries: + - drflac_seek_origin_start -> DRFLAC_SEEK_SET + - drflac_seek_origin_current -> DRFLAC_SEEK_CUR + - DRFLAC_SEEK_END (new) + - API CHANGE: A new seek origin has been added to allow seeking from the end of the file. If you implement your own `onSeek` callback, you should now detect and handle `DRFLAC_SEEK_END`. If seeking to the end is not supported, return `DRFLAC_FALSE`. If you only use `*_open_file()` or `*_open_memory()`, you need not change anything. + - API CHANGE: An `onTell` callback has been added to the following functions: + - drflac_open() + - drflac_open_relaxed() + - drflac_open_with_metadata() + - drflac_open_with_metadata_relaxed() + - drflac_open_and_read_pcm_frames_s32() + - drflac_open_and_read_pcm_frames_s16() + - drflac_open_and_read_pcm_frames_f32() + - Fix compilation for AIX OS. + +v0.12.43 - 2024-12-17 + - Fix a possible buffer overflow during decoding. + - Improve detection of ARM64EC + v0.12.42 - 2023-11-02 - Fix build for ARMv6-M. - Fix a compilation warning with GCC. diff --git a/src/external/dr_mp3.h b/src/external/dr_mp3.h index e1a66d99c..cc033ce87 100644 --- a/src/external/dr_mp3.h +++ b/src/external/dr_mp3.h @@ -1,6 +1,6 @@ /* MP3 audio decoder. Choice of public domain or MIT-0. See license statements at the end of this file. -dr_mp3 - v0.6.39 - 2024-02-27 +dr_mp3 - v0.7.0 - TBD David Reid - mackron@gmail.com @@ -10,30 +10,7 @@ Based on minimp3 (https://github.com/lieff/minimp3) which is where the real work */ /* -RELEASE NOTES - VERSION 0.6 -=========================== -Version 0.6 includes breaking changes with the configuration of decoders. The ability to customize the number of output channels and the sample rate has been -removed. You must now use the channel count and sample rate reported by the MP3 stream itself, and all channel and sample rate conversion must be done -yourself. - - -Changes to Initialization -------------------------- -Previously, `drmp3_init()`, etc. took a pointer to a `drmp3_config` object that allowed you to customize the output channels and sample rate. This has been -removed. If you need the old behaviour you will need to convert the data yourself or just not upgrade. The following APIs have changed. - - `drmp3_init()` - `drmp3_init_memory()` - `drmp3_init_file()` - - -Miscellaneous Changes ---------------------- -Support for loading a file from a `wchar_t` string has been added via the `drmp3_init_file_w()` API. -*/ - -/* -Introducation +Introduction ============= dr_mp3 is a single file library. To use it, do something like the following in one .c file. @@ -94,8 +71,8 @@ extern "C" { #define DRMP3_XSTRINGIFY(x) DRMP3_STRINGIFY(x) #define DRMP3_VERSION_MAJOR 0 -#define DRMP3_VERSION_MINOR 6 -#define DRMP3_VERSION_REVISION 39 +#define DRMP3_VERSION_MINOR 7 +#define DRMP3_VERSION_REVISION 0 #define DRMP3_VERSION_STRING DRMP3_XSTRINGIFY(DRMP3_VERSION_MAJOR) "." DRMP3_XSTRINGIFY(DRMP3_VERSION_MINOR) "." DRMP3_XSTRINGIFY(DRMP3_VERSION_REVISION) #include /* For size_t. */ @@ -124,7 +101,7 @@ typedef unsigned int drmp3_uint32; #pragma GCC diagnostic pop #endif #endif -#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__)) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(_M_ARM64) || defined(__powerpc64__) +#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__)) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(__powerpc64__) typedef drmp3_uint64 drmp3_uintptr; #else typedef drmp3_uint32 drmp3_uintptr; @@ -133,6 +110,9 @@ typedef drmp3_uint8 drmp3_bool8; typedef drmp3_uint32 drmp3_bool32; #define DRMP3_TRUE 1 #define DRMP3_FALSE 0 + +/* Weird shifting syntax is for VC6 compatibility. */ +#define DRMP3_UINT64_MAX (((drmp3_uint64)0xFFFFFFFF << 32) | (drmp3_uint64)0xFFFFFFFF) /* End Sized Types */ /* Decorations */ @@ -154,7 +134,7 @@ typedef drmp3_uint32 drmp3_bool32; #endif #endif - #if defined(DR_MP3_IMPLEMENTATION) || defined(DRMP3_IMPLEMENTATION) + #if defined(DR_MP3_IMPLEMENTATION) #define DRMP3_API DRMP3_DLL_EXPORT #else #define DRMP3_API DRMP3_DLL_IMPORT @@ -279,7 +259,7 @@ Low Level Push API */ typedef struct { - int frame_bytes, channels, hz, layer, bitrate_kbps; + int frame_bytes, channels, sample_rate, layer, bitrate_kbps; } drmp3dec_frame_info; typedef struct @@ -306,8 +286,9 @@ Main API (Pull API) */ typedef enum { - drmp3_seek_origin_start, - drmp3_seek_origin_current + DRMP3_SEEK_SET, + DRMP3_SEEK_CUR, + DRMP3_SEEK_END } drmp3_seek_origin; typedef struct @@ -318,10 +299,27 @@ typedef struct drmp3_uint16 pcmFramesToDiscard; /* The number of leading samples to read and discard. These are discarded after mp3FramesToDiscard. */ } drmp3_seek_point; +typedef enum +{ + DRMP3_METADATA_TYPE_ID3V1, + DRMP3_METADATA_TYPE_ID3V2, + DRMP3_METADATA_TYPE_APE, + DRMP3_METADATA_TYPE_XING, + DRMP3_METADATA_TYPE_VBRI +} drmp3_metadata_type; + +typedef struct +{ + drmp3_metadata_type type; + const void* pRawData; /* A pointer to the raw data. */ + size_t rawDataSize; +} drmp3_metadata; + + /* Callback for when data is read. Return value is the number of bytes actually read. -pUserData [in] The user data that was passed to drmp3_init(), drmp3_open() and family. +pUserData [in] The user data that was passed to drmp3_init(), and family. pBufferOut [out] The output buffer. bytesToRead [in] The number of bytes to read. @@ -335,17 +333,33 @@ typedef size_t (* drmp3_read_proc)(void* pUserData, void* pBufferOut, size_t byt /* Callback for when data needs to be seeked. -pUserData [in] The user data that was passed to drmp3_init(), drmp3_open() and family. -offset [in] The number of bytes to move, relative to the origin. Will never be negative. -origin [in] The origin of the seek - the current position or the start of the stream. +pUserData [in] The user data that was passed to drmp3_init(), and family. +offset [in] The number of bytes to move, relative to the origin. Can be negative. +origin [in] The origin of the seek. Returns whether or not the seek was successful. - -Whether or not it is relative to the beginning or current position is determined by the "origin" parameter which -will be either drmp3_seek_origin_start or drmp3_seek_origin_current. */ typedef drmp3_bool32 (* drmp3_seek_proc)(void* pUserData, int offset, drmp3_seek_origin origin); +/* +Callback for retrieving the current cursor position. + +pUserData [in] The user data that was passed to drmp3_init(), and family. +pCursor [out] The cursor position in bytes from the start of the stream. + +Returns whether or not the cursor position was successfully retrieved. +*/ +typedef drmp3_bool32 (* drmp3_tell_proc)(void* pUserData, drmp3_int64* pCursor); + + +/* +Callback for when metadata is read. + +Only the raw data is provided. The client is responsible for parsing the contents of the data themsevles. +*/ +typedef void (* drmp3_meta_proc)(void* pUserData, const drmp3_metadata* pMetadata); + + typedef struct { drmp3_uint32 channels; @@ -359,22 +373,31 @@ typedef struct drmp3_uint32 sampleRate; drmp3_read_proc onRead; drmp3_seek_proc onSeek; + drmp3_meta_proc onMeta; void* pUserData; + void* pUserDataMeta; drmp3_allocation_callbacks allocationCallbacks; drmp3_uint32 mp3FrameChannels; /* The number of channels in the currently loaded MP3 frame. Internal use only. */ drmp3_uint32 mp3FrameSampleRate; /* The sample rate of the currently loaded MP3 frame. Internal use only. */ drmp3_uint32 pcmFramesConsumedInMP3Frame; drmp3_uint32 pcmFramesRemainingInMP3Frame; drmp3_uint8 pcmFrames[sizeof(float)*DRMP3_MAX_SAMPLES_PER_FRAME]; /* <-- Multipled by sizeof(float) to ensure there's enough room for DR_MP3_FLOAT_OUTPUT. */ - drmp3_uint64 currentPCMFrame; /* The current PCM frame, globally, based on the output sample rate. Mainly used for seeking. */ + drmp3_uint64 currentPCMFrame; /* The current PCM frame, globally. */ drmp3_uint64 streamCursor; /* The current byte the decoder is sitting on in the raw stream. */ + drmp3_uint64 streamLength; /* The length of the stream in bytes. dr_mp3 will not read beyond this. If a ID3v1 or APE tag is present, this will be set to the first byte of the tag. */ + drmp3_uint64 streamStartOffset; /* The offset of the start of the MP3 data. This is used for skipping ID3v2 and VBR tags. */ drmp3_seek_point* pSeekPoints; /* NULL by default. Set with drmp3_bind_seek_table(). Memory is owned by the client. dr_mp3 will never attempt to free this pointer. */ drmp3_uint32 seekPointCount; /* The number of items in pSeekPoints. When set to 0 assumes to no seek table. Defaults to zero. */ + drmp3_uint32 delayInPCMFrames; + drmp3_uint32 paddingInPCMFrames; + drmp3_uint64 totalPCMFrameCount; /* Set to DRMP3_UINT64_MAX if the length is unknown. Includes delay and padding. */ + drmp3_bool32 isVBR; + drmp3_bool32 isCBR; size_t dataSize; size_t dataCapacity; size_t dataConsumed; drmp3_uint8* pData; - drmp3_bool32 atEnd : 1; + drmp3_bool32 atEnd; struct { const drmp3_uint8* pData; @@ -388,6 +411,7 @@ Initializes an MP3 decoder. onRead [in] The function to call when data needs to be read from the client. onSeek [in] The function to call when the read position of the client data needs to move. +onTell [in] The function to call when the read position of the client data needs to be retrieved. pUserData [in, optional] A pointer to application defined data that will be passed to onRead and onSeek. Returns true if successful; false otherwise. @@ -396,7 +420,7 @@ Close the loader with drmp3_uninit(). See also: drmp3_init_file(), drmp3_init_memory(), drmp3_uninit() */ -DRMP3_API drmp3_bool32 drmp3_init(drmp3* pMP3, drmp3_read_proc onRead, drmp3_seek_proc onSeek, void* pUserData, const drmp3_allocation_callbacks* pAllocationCallbacks); +DRMP3_API drmp3_bool32 drmp3_init(drmp3* pMP3, drmp3_read_proc onRead, drmp3_seek_proc onSeek, drmp3_tell_proc onTell, drmp3_meta_proc onMeta, void* pUserData, const drmp3_allocation_callbacks* pAllocationCallbacks); /* Initializes an MP3 decoder from a block of memory. @@ -406,6 +430,7 @@ the lifetime of the drmp3 object. The buffer should contain the contents of the entire MP3 file. */ +DRMP3_API drmp3_bool32 drmp3_init_memory_with_metadata(drmp3* pMP3, const void* pData, size_t dataSize, drmp3_meta_proc onMeta, void* pUserDataMeta, const drmp3_allocation_callbacks* pAllocationCallbacks); DRMP3_API drmp3_bool32 drmp3_init_memory(drmp3* pMP3, const void* pData, size_t dataSize, const drmp3_allocation_callbacks* pAllocationCallbacks); #ifndef DR_MP3_NO_STDIO @@ -416,6 +441,9 @@ This holds the internal FILE object until drmp3_uninit() is called. Keep this in objects because the operating system may restrict the number of file handles an application can have open at any given time. */ +DRMP3_API drmp3_bool32 drmp3_init_file_with_metadata(drmp3* pMP3, const char* pFilePath, drmp3_meta_proc onMeta, void* pUserDataMeta, const drmp3_allocation_callbacks* pAllocationCallbacks); +DRMP3_API drmp3_bool32 drmp3_init_file_with_metadata_w(drmp3* pMP3, const wchar_t* pFilePath, drmp3_meta_proc onMeta, void* pUserDataMeta, const drmp3_allocation_callbacks* pAllocationCallbacks); + DRMP3_API drmp3_bool32 drmp3_init_file(drmp3* pMP3, const char* pFilePath, const drmp3_allocation_callbacks* pAllocationCallbacks); DRMP3_API drmp3_bool32 drmp3_init_file_w(drmp3* pMP3, const wchar_t* pFilePath, const drmp3_allocation_callbacks* pAllocationCallbacks); #endif @@ -495,8 +523,8 @@ On output pConfig will receive the channel count and sample rate of the stream. Free the returned pointer with drmp3_free(). */ -DRMP3_API float* drmp3_open_and_read_pcm_frames_f32(drmp3_read_proc onRead, drmp3_seek_proc onSeek, void* pUserData, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount, const drmp3_allocation_callbacks* pAllocationCallbacks); -DRMP3_API drmp3_int16* drmp3_open_and_read_pcm_frames_s16(drmp3_read_proc onRead, drmp3_seek_proc onSeek, void* pUserData, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount, const drmp3_allocation_callbacks* pAllocationCallbacks); +DRMP3_API float* drmp3_open_and_read_pcm_frames_f32(drmp3_read_proc onRead, drmp3_seek_proc onSeek, drmp3_tell_proc onTell, void* pUserData, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount, const drmp3_allocation_callbacks* pAllocationCallbacks); +DRMP3_API drmp3_int16* drmp3_open_and_read_pcm_frames_s16(drmp3_read_proc onRead, drmp3_seek_proc onSeek, drmp3_tell_proc onTell, void* pUserData, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount, const drmp3_allocation_callbacks* pAllocationCallbacks); DRMP3_API float* drmp3_open_memory_and_read_pcm_frames_f32(const void* pData, size_t dataSize, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount, const drmp3_allocation_callbacks* pAllocationCallbacks); DRMP3_API drmp3_int16* drmp3_open_memory_and_read_pcm_frames_s16(const void* pData, size_t dataSize, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount, const drmp3_allocation_callbacks* pAllocationCallbacks); @@ -529,7 +557,7 @@ DRMP3_API void drmp3_free(void* p, const drmp3_allocation_callbacks* pAllocation ************************************************************************************************************************************************************ ************************************************************************************************************************************************************/ -#if defined(DR_MP3_IMPLEMENTATION) || defined(DRMP3_IMPLEMENTATION) +#if defined(DR_MP3_IMPLEMENTATION) #ifndef dr_mp3_c #define dr_mp3_c @@ -604,7 +632,7 @@ DRMP3_API const char* drmp3_version_string(void) #if !defined(DR_MP3_NO_SIMD) -#if !defined(DR_MP3_ONLY_SIMD) && (defined(_M_X64) || defined(__x86_64__) || defined(__aarch64__) || defined(_M_ARM64)) +#if !defined(DR_MP3_ONLY_SIMD) && (defined(_M_X64) || defined(__x86_64__) || defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)) /* x64 always have SSE2, arm64 always have neon, no need for generic code */ #define DR_MP3_ONLY_SIMD #endif @@ -680,7 +708,7 @@ end: return g_have_simd - 1; #endif } -#elif defined(__ARM_NEON) || defined(__aarch64__) || defined(_M_ARM64) +#elif defined(__ARM_NEON) || defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) #include #define DRMP3_HAVE_SSE 0 #define DRMP3_HAVE_SIMD 1 @@ -713,7 +741,7 @@ static int drmp3_have_simd(void) #endif -#if defined(__ARM_ARCH) && (__ARM_ARCH >= 6) && !defined(__aarch64__) && !defined(_M_ARM64) && !defined(__ARM_ARCH_6M__) +#if defined(__ARM_ARCH) && (__ARM_ARCH >= 6) && !defined(__aarch64__) && !defined(_M_ARM64) && !defined(_M_ARM64EC) && !defined(__ARM_ARCH_6M__) #define DRMP3_HAVE_ARMV6 1 static __inline__ __attribute__((always_inline)) drmp3_int32 drmp3_clip_int16_arm(drmp3_int32 a) { @@ -2296,7 +2324,7 @@ DRMP3_API int drmp3dec_decode_frame(drmp3dec *dec, const drmp3_uint8 *mp3, int m DRMP3_COPY_MEMORY(dec->header, hdr, DRMP3_HDR_SIZE); info->frame_bytes = i + frame_size; info->channels = DRMP3_HDR_IS_MONO(hdr) ? 1 : 2; - info->hz = drmp3_hdr_sample_rate_hz(hdr); + info->sample_rate = drmp3_hdr_sample_rate_hz(hdr); info->layer = 4 - DRMP3_HDR_GET_LAYER(hdr); info->bitrate_kbps = drmp3_hdr_bitrate_kbps(hdr); @@ -2589,22 +2617,56 @@ static drmp3_allocation_callbacks drmp3_copy_allocation_callbacks_or_defaults(co static size_t drmp3__on_read(drmp3* pMP3, void* pBufferOut, size_t bytesToRead) { - size_t bytesRead = pMP3->onRead(pMP3->pUserData, pBufferOut, bytesToRead); + size_t bytesRead; + + DRMP3_ASSERT(pMP3 != NULL); + DRMP3_ASSERT(pMP3->onRead != NULL); + + /* + Don't try reading 0 bytes from the callback. This can happen when the stream is clamped against + ID3v1 or APE tags at the end of the stream. + */ + if (bytesToRead == 0) { + return 0; + } + + bytesRead = pMP3->onRead(pMP3->pUserData, pBufferOut, bytesToRead); pMP3->streamCursor += bytesRead; + return bytesRead; } +static size_t drmp3__on_read_clamped(drmp3* pMP3, void* pBufferOut, size_t bytesToRead) +{ + DRMP3_ASSERT(pMP3 != NULL); + DRMP3_ASSERT(pMP3->onRead != NULL); + + if (pMP3->streamLength == DRMP3_UINT64_MAX) { + return drmp3__on_read(pMP3, pBufferOut, bytesToRead); + } else { + drmp3_uint64 bytesRemaining; + + bytesRemaining = (pMP3->streamLength - pMP3->streamCursor); + if (bytesToRead > bytesRemaining) { + bytesToRead = (size_t)bytesRemaining; + } + + return drmp3__on_read(pMP3, pBufferOut, bytesToRead); + } +} + static drmp3_bool32 drmp3__on_seek(drmp3* pMP3, int offset, drmp3_seek_origin origin) { DRMP3_ASSERT(offset >= 0); + DRMP3_ASSERT(origin == DRMP3_SEEK_SET || origin == DRMP3_SEEK_CUR); if (!pMP3->onSeek(pMP3->pUserData, offset, origin)) { return DRMP3_FALSE; } - if (origin == drmp3_seek_origin_start) { + if (origin == DRMP3_SEEK_SET) { pMP3->streamCursor = (drmp3_uint64)offset; - } else { + } else{ pMP3->streamCursor += offset; } @@ -2617,21 +2679,20 @@ static drmp3_bool32 drmp3__on_seek_64(drmp3* pMP3, drmp3_uint64 offset, drmp3_se return drmp3__on_seek(pMP3, (int)offset, origin); } - /* Getting here "offset" is too large for a 32-bit integer. We just keep seeking forward until we hit the offset. */ - if (!drmp3__on_seek(pMP3, 0x7FFFFFFF, drmp3_seek_origin_start)) { + if (!drmp3__on_seek(pMP3, 0x7FFFFFFF, DRMP3_SEEK_SET)) { return DRMP3_FALSE; } offset -= 0x7FFFFFFF; while (offset > 0) { if (offset <= 0x7FFFFFFF) { - if (!drmp3__on_seek(pMP3, (int)offset, drmp3_seek_origin_current)) { + if (!drmp3__on_seek(pMP3, (int)offset, DRMP3_SEEK_CUR)) { return DRMP3_FALSE; } offset = 0; } else { - if (!drmp3__on_seek(pMP3, 0x7FFFFFFF, drmp3_seek_origin_current)) { + if (!drmp3__on_seek(pMP3, 0x7FFFFFFF, DRMP3_SEEK_CUR)) { return DRMP3_FALSE; } offset -= 0x7FFFFFFF; @@ -2641,8 +2702,22 @@ static drmp3_bool32 drmp3__on_seek_64(drmp3* pMP3, drmp3_uint64 offset, drmp3_se return DRMP3_TRUE; } +static void drmp3__on_meta(drmp3* pMP3, drmp3_metadata_type type, const void* pRawData, size_t rawDataSize) +{ + if (pMP3->onMeta) { + drmp3_metadata metadata; -static drmp3_uint32 drmp3_decode_next_frame_ex__callbacks(drmp3* pMP3, drmp3d_sample_t* pPCMFrames) + DRMP3_ZERO_OBJECT(&metadata); + metadata.type = type; + metadata.pRawData = pRawData; + metadata.rawDataSize = rawDataSize; + + pMP3->onMeta(pMP3->pUserDataMeta, &metadata); + } +} + + +static drmp3_uint32 drmp3_decode_next_frame_ex__callbacks(drmp3* pMP3, drmp3d_sample_t* pPCMFrames, drmp3dec_frame_info* pMP3FrameInfo, const drmp3_uint8** ppMP3FrameData) { drmp3_uint32 pcmFramesRead = 0; @@ -2682,7 +2757,7 @@ static drmp3_uint32 drmp3_decode_next_frame_ex__callbacks(drmp3* pMP3, drmp3d_sa pMP3->dataCapacity = newDataCap; } - bytesRead = drmp3__on_read(pMP3, pMP3->pData + pMP3->dataSize, (pMP3->dataCapacity - pMP3->dataSize)); + bytesRead = drmp3__on_read_clamped(pMP3, pMP3->pData + pMP3->dataSize, (pMP3->dataCapacity - pMP3->dataSize)); if (bytesRead == 0) { if (pMP3->dataSize == 0) { pMP3->atEnd = DRMP3_TRUE; @@ -2709,10 +2784,8 @@ static drmp3_uint32 drmp3_decode_next_frame_ex__callbacks(drmp3* pMP3, drmp3d_sa pcmFramesRead = drmp3dec_decode_frame(&pMP3->decoder, pMP3->pData + pMP3->dataConsumed, (int)pMP3->dataSize, pPCMFrames, &info); /* <-- Safe size_t -> int conversion thanks to the check above. */ /* Consume the data. */ - if (info.frame_bytes > 0) { - pMP3->dataConsumed += (size_t)info.frame_bytes; - pMP3->dataSize -= (size_t)info.frame_bytes; - } + pMP3->dataConsumed += (size_t)info.frame_bytes; + pMP3->dataSize -= (size_t)info.frame_bytes; /* pcmFramesRead will be equal to 0 if decoding failed. If it is zero and info.frame_bytes > 0 then we have successfully decoded the frame. */ if (pcmFramesRead > 0) { @@ -2720,7 +2793,16 @@ static drmp3_uint32 drmp3_decode_next_frame_ex__callbacks(drmp3* pMP3, drmp3d_sa pMP3->pcmFramesConsumedInMP3Frame = 0; pMP3->pcmFramesRemainingInMP3Frame = pcmFramesRead; pMP3->mp3FrameChannels = info.channels; - pMP3->mp3FrameSampleRate = info.hz; + pMP3->mp3FrameSampleRate = info.sample_rate; + + if (pMP3FrameInfo != NULL) { + *pMP3FrameInfo = info; + } + + if (ppMP3FrameData != NULL) { + *ppMP3FrameData = pMP3->pData + pMP3->dataConsumed - (size_t)info.frame_bytes; + } + break; } else if (info.frame_bytes == 0) { /* Need more data. minimp3 recommends doing data submission in 16K chunks. */ @@ -2747,7 +2829,7 @@ static drmp3_uint32 drmp3_decode_next_frame_ex__callbacks(drmp3* pMP3, drmp3d_sa } /* Fill in a chunk. */ - bytesRead = drmp3__on_read(pMP3, pMP3->pData + pMP3->dataSize, (pMP3->dataCapacity - pMP3->dataSize)); + bytesRead = drmp3__on_read_clamped(pMP3, pMP3->pData + pMP3->dataSize, (pMP3->dataCapacity - pMP3->dataSize)); if (bytesRead == 0) { pMP3->atEnd = DRMP3_TRUE; return 0; /* Error reading more data. */ @@ -2760,7 +2842,7 @@ static drmp3_uint32 drmp3_decode_next_frame_ex__callbacks(drmp3* pMP3, drmp3d_sa return pcmFramesRead; } -static drmp3_uint32 drmp3_decode_next_frame_ex__memory(drmp3* pMP3, drmp3d_sample_t* pPCMFrames) +static drmp3_uint32 drmp3_decode_next_frame_ex__memory(drmp3* pMP3, drmp3d_sample_t* pPCMFrames, drmp3dec_frame_info* pMP3FrameInfo, const drmp3_uint8** ppMP3FrameData) { drmp3_uint32 pcmFramesRead = 0; drmp3dec_frame_info info; @@ -2779,11 +2861,21 @@ static drmp3_uint32 drmp3_decode_next_frame_ex__memory(drmp3* pMP3, drmp3d_sampl pMP3->pcmFramesConsumedInMP3Frame = 0; pMP3->pcmFramesRemainingInMP3Frame = pcmFramesRead; pMP3->mp3FrameChannels = info.channels; - pMP3->mp3FrameSampleRate = info.hz; + pMP3->mp3FrameSampleRate = info.sample_rate; + + if (pMP3FrameInfo != NULL) { + *pMP3FrameInfo = info; + } + + if (ppMP3FrameData != NULL) { + *ppMP3FrameData = pMP3->memory.pData + pMP3->memory.currentReadPos; + } + break; } else if (info.frame_bytes > 0) { /* No frames were read, but it looks like we skipped past one. Read the next MP3 frame. */ pMP3->memory.currentReadPos += (size_t)info.frame_bytes; + pMP3->streamCursor += (size_t)info.frame_bytes; } else { /* Nothing at all was read. Abort. */ break; @@ -2792,23 +2884,24 @@ static drmp3_uint32 drmp3_decode_next_frame_ex__memory(drmp3* pMP3, drmp3d_sampl /* Consume the data. */ pMP3->memory.currentReadPos += (size_t)info.frame_bytes; + pMP3->streamCursor += (size_t)info.frame_bytes; return pcmFramesRead; } -static drmp3_uint32 drmp3_decode_next_frame_ex(drmp3* pMP3, drmp3d_sample_t* pPCMFrames) +static drmp3_uint32 drmp3_decode_next_frame_ex(drmp3* pMP3, drmp3d_sample_t* pPCMFrames, drmp3dec_frame_info* pMP3FrameInfo, const drmp3_uint8** ppMP3FrameData) { if (pMP3->memory.pData != NULL && pMP3->memory.dataSize > 0) { - return drmp3_decode_next_frame_ex__memory(pMP3, pPCMFrames); + return drmp3_decode_next_frame_ex__memory(pMP3, pPCMFrames, pMP3FrameInfo, ppMP3FrameData); } else { - return drmp3_decode_next_frame_ex__callbacks(pMP3, pPCMFrames); + return drmp3_decode_next_frame_ex__callbacks(pMP3, pPCMFrames, pMP3FrameInfo, ppMP3FrameData); } } static drmp3_uint32 drmp3_decode_next_frame(drmp3* pMP3) { DRMP3_ASSERT(pMP3 != NULL); - return drmp3_decode_next_frame_ex(pMP3, (drmp3d_sample_t*)pMP3->pcmFrames); + return drmp3_decode_next_frame_ex(pMP3, (drmp3d_sample_t*)pMP3->pcmFrames, NULL, NULL); } #if 0 @@ -2818,7 +2911,7 @@ static drmp3_uint32 drmp3_seek_next_frame(drmp3* pMP3) DRMP3_ASSERT(pMP3 != NULL); - pcmFrameCount = drmp3_decode_next_frame_ex(pMP3, NULL); + pcmFrameCount = drmp3_decode_next_frame_ex(pMP3, NULL, NULL, NULL); if (pcmFrameCount == 0) { return 0; } @@ -2832,8 +2925,13 @@ static drmp3_uint32 drmp3_seek_next_frame(drmp3* pMP3) } #endif -static drmp3_bool32 drmp3_init_internal(drmp3* pMP3, drmp3_read_proc onRead, drmp3_seek_proc onSeek, void* pUserData, const drmp3_allocation_callbacks* pAllocationCallbacks) +static drmp3_bool32 drmp3_init_internal(drmp3* pMP3, drmp3_read_proc onRead, drmp3_seek_proc onSeek, drmp3_tell_proc onTell, drmp3_meta_proc onMeta, void* pUserData, void* pUserDataMeta, const drmp3_allocation_callbacks* pAllocationCallbacks) { + drmp3dec_frame_info firstFrameInfo; + const drmp3_uint8* pFirstFrameData; + drmp3_uint32 firstFramePCMFrameCount; + drmp3_uint32 detectedMP3FrameCount = 0xFFFFFFFF; + DRMP3_ASSERT(pMP3 != NULL); DRMP3_ASSERT(onRead != NULL); @@ -2842,17 +2940,326 @@ static drmp3_bool32 drmp3_init_internal(drmp3* pMP3, drmp3_read_proc onRead, drm pMP3->onRead = onRead; pMP3->onSeek = onSeek; + pMP3->onMeta = onMeta; pMP3->pUserData = pUserData; + pMP3->pUserDataMeta = pUserDataMeta; pMP3->allocationCallbacks = drmp3_copy_allocation_callbacks_or_defaults(pAllocationCallbacks); if (pMP3->allocationCallbacks.onFree == NULL || (pMP3->allocationCallbacks.onMalloc == NULL && pMP3->allocationCallbacks.onRealloc == NULL)) { return DRMP3_FALSE; /* Invalid allocation callbacks. */ } - /* Decode the first frame to confirm that it is indeed a valid MP3 stream. */ - if (drmp3_decode_next_frame(pMP3) == 0) { + pMP3->streamCursor = 0; + pMP3->streamLength = DRMP3_UINT64_MAX; + pMP3->streamStartOffset = 0; + pMP3->delayInPCMFrames = 0; + pMP3->paddingInPCMFrames = 0; + pMP3->totalPCMFrameCount = DRMP3_UINT64_MAX; + + /* We'll first check for any ID3v1 or APE tags. */ + #if 1 + if (onSeek != NULL && onTell != NULL) { + if (onSeek(pUserData, 0, DRMP3_SEEK_END)) { + drmp3_int64 streamLen; + int streamEndOffset = 0; + + /* First get the length of the stream. We need this so we can ensure the stream is big enough to store the tags. */ + if (onTell(pUserData, &streamLen)) { + /* ID3v1 */ + if (streamLen > 128) { + char id3[3]; + if (onSeek(pUserData, streamEndOffset - 128, DRMP3_SEEK_END)) { + if (onRead(pUserData, id3, 3) == 3 && id3[0] == 'T' && id3[1] == 'A' && id3[2] == 'G') { + /* We have an ID3v1 tag. */ + streamEndOffset -= 128; + streamLen -= 128; + + /* Fire a metadata callback for the TAG data. */ + if (onMeta != NULL) { + drmp3_uint8 tag[128]; + tag[0] = 'T'; tag[1] = 'A'; tag[2] = 'G'; + + if (onRead(pUserData, tag + 3, 125) == 125) { + drmp3__on_meta(pMP3, DRMP3_METADATA_TYPE_ID3V1, tag, 128); + } + } + } else { + /* No ID3v1 tag. */ + } + } else { + /* Failed to seek to the ID3v1 tag. */ + } + } else { + /* Stream too short. No ID3v1 tag. */ + } + + /* APE */ + if (streamLen > 32) { + char ape[32]; /* The footer. */ + if (onSeek(pUserData, streamEndOffset - 32, DRMP3_SEEK_END)) { + if (onRead(pUserData, ape, 32) == 32 && ape[0] == 'A' && ape[1] == 'P' && ape[2] == 'E' && ape[3] == 'T' && ape[4] == 'A' && ape[5] == 'G' && ape[6] == 'E' && ape[7] == 'X') { + /* We have an APE tag. */ + drmp3_uint32 tagSize = + ((drmp3_uint32)ape[24] << 0) | + ((drmp3_uint32)ape[25] << 8) | + ((drmp3_uint32)ape[26] << 16) | + ((drmp3_uint32)ape[27] << 24); + + streamEndOffset -= 32 + tagSize; + streamLen -= 32 + tagSize; + + /* Fire a metadata callback for the APE data. Must include both the main content and footer. */ + if (onMeta != NULL) { + /* We first need to seek to the start of the APE tag. */ + if (onSeek(pUserData, streamEndOffset, DRMP3_SEEK_END)) { + size_t apeTagSize = (size_t)tagSize + 32; + drmp3_uint8* pTagData = (drmp3_uint8*)drmp3_malloc(apeTagSize, pAllocationCallbacks); + if (pTagData != NULL) { + if (onRead(pUserData, pTagData, apeTagSize) == apeTagSize) { + drmp3__on_meta(pMP3, DRMP3_METADATA_TYPE_APE, pTagData, apeTagSize); + } + + drmp3_free(pTagData, pAllocationCallbacks); + } + } + } + } + } + } else { + /* Stream too short. No APE tag. */ + } + + /* Seek back to the start. */ + if (!onSeek(pUserData, 0, DRMP3_SEEK_SET)) { + return DRMP3_FALSE; /* Failed to seek back to the start. */ + } + + pMP3->streamLength = (drmp3_uint64)streamLen; + + if (pMP3->memory.pData != NULL) { + pMP3->memory.dataSize = (size_t)pMP3->streamLength; + } + } else { + /* Failed to get the length of the stream. ID3v1 and APE tags cannot be skipped. */ + if (!onSeek(pUserData, 0, DRMP3_SEEK_SET)) { + return DRMP3_FALSE; /* Failed to seek back to the start. */ + } + } + } else { + /* Failed to seek to the end. Cannot skip ID3v1 or APE tags. */ + } + } else { + /* No onSeek or onTell callback. Cannot skip ID3v1 or APE tags. */ + } + #endif + + + /* ID3v2 tags */ + #if 1 + { + char header[10]; + if (onRead(pUserData, header, 10) == 10) { + if (header[0] == 'I' && header[1] == 'D' && header[2] == '3') { + drmp3_uint32 tagSize = + (((drmp3_uint32)header[6] & 0x7F) << 21) | + (((drmp3_uint32)header[7] & 0x7F) << 14) | + (((drmp3_uint32)header[8] & 0x7F) << 7) | + (((drmp3_uint32)header[9] & 0x7F) << 0); + + /* Account for the footer. */ + if (header[5] & 0x10) { + tagSize += 10; + } + + /* Read the tag content and fire a metadata callback. */ + if (onMeta != NULL) { + size_t tagSizeWithHeader = 10 + tagSize; + drmp3_uint8* pTagData = (drmp3_uint8*)drmp3_malloc(tagSizeWithHeader, pAllocationCallbacks); + if (pTagData != NULL) { + DRMP3_COPY_MEMORY(pTagData, header, 10); + + if (onRead(pUserData, pTagData + 10, tagSize) == tagSize) { + drmp3__on_meta(pMP3, DRMP3_METADATA_TYPE_ID3V2, pTagData, tagSizeWithHeader); + } + + drmp3_free(pTagData, pAllocationCallbacks); + } + } else { + /* Don't have a metadata callback, so just skip the tag. */ + if (onSeek != NULL) { + if (!onSeek(pUserData, tagSize, DRMP3_SEEK_CUR)) { + return DRMP3_FALSE; /* Failed to seek past the ID3v2 tag. */ + } + } else { + /* Don't have a seek callback. Read and discard. */ + char discard[1024]; + + while (tagSize > 0) { + size_t bytesToRead = tagSize; + if (bytesToRead > sizeof(discard)) { + bytesToRead = sizeof(discard); + } + + if (onRead(pUserData, discard, bytesToRead) != bytesToRead) { + return DRMP3_FALSE; /* Failed to read data. */ + } + + tagSize -= (drmp3_uint32)bytesToRead; + } + } + } + + pMP3->streamStartOffset += 10 + tagSize; /* +10 for the header. */ + pMP3->streamCursor = pMP3->streamStartOffset; + } else { + /* Not an ID3v2 tag. Seek back to the start. */ + if (onSeek != NULL) { + if (!onSeek(pUserData, 0, DRMP3_SEEK_SET)) { + return DRMP3_FALSE; /* Failed to seek back to the start. */ + } + } else { + /* Don't have a seek callback to move backwards. We'll just fall through and let the decoding process re-sync. The ideal solution here would be to read into the cache. */ + + /* + TODO: Copy the header into the cache. Will need to allocate space. See drmp3_decode_next_frame_ex__callbacks. There is not need + to handle the memory case because that will always have a seek implementation and will never hit this code path. + */ + } + } + } else { + /* Failed to read the header. We can return false here. If we couldn't read 10 bytes there's no way we'll have a valid MP3 stream. */ + return DRMP3_FALSE; + } + } + #endif + + /* + Decode the first frame to confirm that it is indeed a valid MP3 stream. Note that it's possible the first frame + is actually a Xing/LAME/VBRI header. If this is the case we need to skip over it. + */ + firstFramePCMFrameCount = drmp3_decode_next_frame_ex(pMP3, (drmp3d_sample_t*)pMP3->pcmFrames, &firstFrameInfo, &pFirstFrameData); + if (firstFramePCMFrameCount > 0) { + DRMP3_ASSERT(pFirstFrameData != NULL); + + /* + It might be a header. If so, we need to clear out the cached PCM frames in order to trigger a reload of fresh + data when decoding starts. We can assume all validation has already been performed to check if this is a valid + MP3 frame and that there is more than 0 bytes making up the frame. + + We're going to be basing this parsing code off the minimp3_ex implementation. + */ + #if 1 + DRMP3_ASSERT(firstFrameInfo.frame_bytes > 0); + { + drmp3_bs bs; + drmp3_L3_gr_info grInfo[4]; + const drmp3_uint8* pTagData = pFirstFrameData; + + drmp3_bs_init(&bs, pFirstFrameData + DRMP3_HDR_SIZE, firstFrameInfo.frame_bytes - DRMP3_HDR_SIZE); + + if (DRMP3_HDR_IS_CRC(pFirstFrameData)) { + drmp3_bs_get_bits(&bs, 16); /* CRC. */ + } + + if (drmp3_L3_read_side_info(&bs, grInfo, pFirstFrameData) >= 0) { + drmp3_bool32 isXing = DRMP3_FALSE; + drmp3_bool32 isInfo = DRMP3_FALSE; + const drmp3_uint8* pTagDataBeg; + + pTagDataBeg = pFirstFrameData + DRMP3_HDR_SIZE + (bs.pos/8); + pTagData = pTagDataBeg; + + /* Check for both "Xing" and "Info" identifiers. */ + isXing = (pTagData[0] == 'X' && pTagData[1] == 'i' && pTagData[2] == 'n' && pTagData[3] == 'g'); + isInfo = (pTagData[0] == 'I' && pTagData[1] == 'n' && pTagData[2] == 'f' && pTagData[3] == 'o'); + + if (isXing || isInfo) { + drmp3_uint32 bytes = 0; + drmp3_uint32 flags = pTagData[7]; + + pTagData += 8; /* Skip past the ID and flags. */ + + if (flags & 0x01) { /* FRAMES flag. */ + detectedMP3FrameCount = (drmp3_uint32)pTagData[0] << 24 | (drmp3_uint32)pTagData[1] << 16 | (drmp3_uint32)pTagData[2] << 8 | (drmp3_uint32)pTagData[3]; + pTagData += 4; + } + + if (flags & 0x02) { /* BYTES flag. */ + bytes = (drmp3_uint32)pTagData[0] << 24 | (drmp3_uint32)pTagData[1] << 16 | (drmp3_uint32)pTagData[2] << 8 | (drmp3_uint32)pTagData[3]; + (void)bytes; /* <-- Just to silence a warning about `bytes` being assigned but unused. Want to leave this here in case I want to make use of it later. */ + pTagData += 4; + } + + if (flags & 0x04) { /* TOC flag. */ + /* TODO: Extract and bind seek points. */ + pTagData += 100; + } + + if (flags & 0x08) { /* SCALE flag. */ + pTagData += 4; + } + + /* At this point we're done with the Xing/Info header. Now we can look at the LAME data. */ + if (pTagData[0]) { + pTagData += 21; + + if (pTagData - pFirstFrameData + 14 < firstFrameInfo.frame_bytes) { + int delayInPCMFrames; + int paddingInPCMFrames; + + delayInPCMFrames = (( (drmp3_uint32)pTagData[0] << 4) | ((drmp3_uint32)pTagData[1] >> 4)) + (528 + 1); + paddingInPCMFrames = ((((drmp3_uint32)pTagData[1] & 0xF) << 8) | ((drmp3_uint32)pTagData[2] )) - (528 + 1); + if (paddingInPCMFrames < 0) { + paddingInPCMFrames = 0; /* Padding cannot be negative. Probably a malformed file. Ignore. */ + } + + pMP3->delayInPCMFrames = (drmp3_uint32)delayInPCMFrames; + pMP3->paddingInPCMFrames = (drmp3_uint32)paddingInPCMFrames; + } + } + + /* + My understanding is that if the "Xing" header is present we can consider this to be a VBR stream and if the "Info" header is + present it's a CBR stream. If this is not the case let me know! I'm just tracking this for the time being in case I want to + look at doing some CBR optimizations later on, such as faster seeking. + */ + if (isXing) { + pMP3->isVBR = DRMP3_TRUE; + } else if (isInfo) { + pMP3->isCBR = DRMP3_TRUE; + } + + /* Post the raw data of the tag to the metadata callback. */ + if (onMeta != NULL) { + drmp3_metadata_type metadataType = isXing ? DRMP3_METADATA_TYPE_XING : DRMP3_METADATA_TYPE_VBRI; + size_t tagDataSize; + + tagDataSize = (size_t)firstFrameInfo.frame_bytes; + tagDataSize -= (size_t)(pTagDataBeg - pFirstFrameData); + + drmp3__on_meta(pMP3, metadataType, pTagDataBeg, tagDataSize); + } + + /* Since this was identified as a tag, we don't want to treat it as audio. We need to clear out the PCM cache. */ + pMP3->pcmFramesRemainingInMP3Frame = 0; + + /* The start offset needs to be moved to the end of this frame so it's not included in any audio processing after seeking. */ + pMP3->streamStartOffset += (drmp3_uint32)(firstFrameInfo.frame_bytes); + pMP3->streamCursor = pMP3->streamStartOffset; + } + } else { + /* Failed to read the side info. */ + } + } + #endif + } else { + /* Not a valid MP3 stream. */ drmp3__free_from_callbacks(pMP3->pData, &pMP3->allocationCallbacks); /* The call above may have allocated memory. Need to make sure it's freed before aborting. */ - return DRMP3_FALSE; /* Not a valid MP3 stream. */ + return DRMP3_FALSE; + } + + if (detectedMP3FrameCount != 0xFFFFFFFF) { + pMP3->totalPCMFrameCount = detectedMP3FrameCount * firstFramePCMFrameCount; } pMP3->channels = pMP3->mp3FrameChannels; @@ -2861,14 +3268,14 @@ static drmp3_bool32 drmp3_init_internal(drmp3* pMP3, drmp3_read_proc onRead, drm return DRMP3_TRUE; } -DRMP3_API drmp3_bool32 drmp3_init(drmp3* pMP3, drmp3_read_proc onRead, drmp3_seek_proc onSeek, void* pUserData, const drmp3_allocation_callbacks* pAllocationCallbacks) +DRMP3_API drmp3_bool32 drmp3_init(drmp3* pMP3, drmp3_read_proc onRead, drmp3_seek_proc onSeek, drmp3_tell_proc onTell, drmp3_meta_proc onMeta, void* pUserData, const drmp3_allocation_callbacks* pAllocationCallbacks) { if (pMP3 == NULL || onRead == NULL) { return DRMP3_FALSE; } DRMP3_ZERO_OBJECT(pMP3); - return drmp3_init_internal(pMP3, onRead, onSeek, pUserData, pAllocationCallbacks); + return drmp3_init_internal(pMP3, onRead, onSeek, onTell, onMeta, pUserData, pUserData, pAllocationCallbacks); } @@ -2896,35 +3303,52 @@ static size_t drmp3__on_read_memory(void* pUserData, void* pBufferOut, size_t by static drmp3_bool32 drmp3__on_seek_memory(void* pUserData, int byteOffset, drmp3_seek_origin origin) { drmp3* pMP3 = (drmp3*)pUserData; + drmp3_int64 newCursor; DRMP3_ASSERT(pMP3 != NULL); - if (origin == drmp3_seek_origin_current) { - if (byteOffset > 0) { - if (pMP3->memory.currentReadPos + byteOffset > pMP3->memory.dataSize) { - byteOffset = (int)(pMP3->memory.dataSize - pMP3->memory.currentReadPos); /* Trying to seek too far forward. */ - } - } else { - if (pMP3->memory.currentReadPos < (size_t)-byteOffset) { - byteOffset = -(int)pMP3->memory.currentReadPos; /* Trying to seek too far backwards. */ - } - } + newCursor = pMP3->memory.currentReadPos; - /* This will never underflow thanks to the clamps above. */ - pMP3->memory.currentReadPos += byteOffset; + if (origin == DRMP3_SEEK_SET) { + newCursor = 0; + } else if (origin == DRMP3_SEEK_CUR) { + newCursor = (drmp3_int64)pMP3->memory.currentReadPos; + } else if (origin == DRMP3_SEEK_END) { + newCursor = (drmp3_int64)pMP3->memory.dataSize; } else { - if ((drmp3_uint32)byteOffset <= pMP3->memory.dataSize) { - pMP3->memory.currentReadPos = byteOffset; - } else { - pMP3->memory.currentReadPos = pMP3->memory.dataSize; /* Trying to seek too far forward. */ - } + DRMP3_ASSERT(!"Invalid seek origin"); + return DRMP3_FALSE; } + newCursor += byteOffset; + + if (newCursor < 0) { + return DRMP3_FALSE; /* Trying to seek prior to the start of the buffer. */ + } + if ((size_t)newCursor > pMP3->memory.dataSize) { + return DRMP3_FALSE; /* Trying to seek beyond the end of the buffer. */ + } + + pMP3->memory.currentReadPos = (size_t)newCursor; + return DRMP3_TRUE; } -DRMP3_API drmp3_bool32 drmp3_init_memory(drmp3* pMP3, const void* pData, size_t dataSize, const drmp3_allocation_callbacks* pAllocationCallbacks) +static drmp3_bool32 drmp3__on_tell_memory(void* pUserData, drmp3_int64* pCursor) { + drmp3* pMP3 = (drmp3*)pUserData; + + DRMP3_ASSERT(pMP3 != NULL); + DRMP3_ASSERT(pCursor != NULL); + + *pCursor = (drmp3_int64)pMP3->memory.currentReadPos; + return DRMP3_TRUE; +} + +DRMP3_API drmp3_bool32 drmp3_init_memory_with_metadata(drmp3* pMP3, const void* pData, size_t dataSize, drmp3_meta_proc onMeta, void* pUserDataMeta, const drmp3_allocation_callbacks* pAllocationCallbacks) +{ + drmp3_bool32 result; + if (pMP3 == NULL) { return DRMP3_FALSE; } @@ -2939,7 +3363,26 @@ DRMP3_API drmp3_bool32 drmp3_init_memory(drmp3* pMP3, const void* pData, size_t pMP3->memory.dataSize = dataSize; pMP3->memory.currentReadPos = 0; - return drmp3_init_internal(pMP3, drmp3__on_read_memory, drmp3__on_seek_memory, pMP3, pAllocationCallbacks); + result = drmp3_init_internal(pMP3, drmp3__on_read_memory, drmp3__on_seek_memory, drmp3__on_tell_memory, onMeta, pMP3, pUserDataMeta, pAllocationCallbacks); + if (result == DRMP3_FALSE) { + return DRMP3_FALSE; + } + + /* Adjust the length of the memory stream to account for ID3v1 and APE tags. */ + if (pMP3->streamLength <= (drmp3_uint64)DRMP3_SIZE_MAX) { + pMP3->memory.dataSize = (size_t)pMP3->streamLength; /* Safe cast. */ + } + + if (pMP3->streamStartOffset > (drmp3_uint64)DRMP3_SIZE_MAX) { + return DRMP3_FALSE; /* Tags too big. */ + } + + return DRMP3_TRUE; +} + +DRMP3_API drmp3_bool32 drmp3_init_memory(drmp3* pMP3, const void* pData, size_t dataSize, const drmp3_allocation_callbacks* pAllocationCallbacks) +{ + return drmp3_init_memory_with_metadata(pMP3, pData, dataSize, NULL, NULL, pAllocationCallbacks); } @@ -3069,7 +3512,7 @@ static drmp3_result drmp3_result_from_errno(int e) #ifdef ENOSYS case ENOSYS: return DRMP3_NOT_IMPLEMENTED; #endif - #ifdef ENOTEMPTY + #if defined(ENOTEMPTY) && ENOTEMPTY != EEXIST /* In AIX, ENOTEMPTY and EEXIST use the same value. */ case ENOTEMPTY: return DRMP3_DIRECTORY_NOT_EMPTY; #endif #ifdef ELOOP @@ -3519,19 +3962,56 @@ static size_t drmp3__on_read_stdio(void* pUserData, void* pBufferOut, size_t byt static drmp3_bool32 drmp3__on_seek_stdio(void* pUserData, int offset, drmp3_seek_origin origin) { - return fseek((FILE*)pUserData, offset, (origin == drmp3_seek_origin_current) ? SEEK_CUR : SEEK_SET) == 0; + int whence = SEEK_SET; + if (origin == DRMP3_SEEK_CUR) { + whence = SEEK_CUR; + } else if (origin == DRMP3_SEEK_END) { + whence = SEEK_END; + } + + return fseek((FILE*)pUserData, offset, whence) == 0; } -DRMP3_API drmp3_bool32 drmp3_init_file(drmp3* pMP3, const char* pFilePath, const drmp3_allocation_callbacks* pAllocationCallbacks) +static drmp3_bool32 drmp3__on_tell_stdio(void* pUserData, drmp3_int64* pCursor) +{ + FILE* pFileStdio = (FILE*)pUserData; + drmp3_int64 result; + + /* These were all validated at a higher level. */ + DRMP3_ASSERT(pFileStdio != NULL); + DRMP3_ASSERT(pCursor != NULL); + +#if defined(_WIN32) + #if defined(_MSC_VER) && _MSC_VER > 1200 + result = _ftelli64(pFileStdio); + #else + result = ftell(pFileStdio); + #endif +#else + result = ftell(pFileStdio); +#endif + + *pCursor = result; + + return DRMP3_TRUE; +} + +DRMP3_API drmp3_bool32 drmp3_init_file_with_metadata(drmp3* pMP3, const char* pFilePath, drmp3_meta_proc onMeta, void* pUserDataMeta, const drmp3_allocation_callbacks* pAllocationCallbacks) { drmp3_bool32 result; FILE* pFile; + if (pMP3 == NULL) { + return DRMP3_FALSE; + } + + DRMP3_ZERO_OBJECT(pMP3); + if (drmp3_fopen(&pFile, pFilePath, "rb") != DRMP3_SUCCESS) { return DRMP3_FALSE; } - result = drmp3_init(pMP3, drmp3__on_read_stdio, drmp3__on_seek_stdio, (void*)pFile, pAllocationCallbacks); + result = drmp3_init_internal(pMP3, drmp3__on_read_stdio, drmp3__on_seek_stdio, drmp3__on_tell_stdio, onMeta, (void*)pFile, pUserDataMeta, pAllocationCallbacks); if (result != DRMP3_TRUE) { fclose(pFile); return result; @@ -3540,16 +4020,22 @@ DRMP3_API drmp3_bool32 drmp3_init_file(drmp3* pMP3, const char* pFilePath, const return DRMP3_TRUE; } -DRMP3_API drmp3_bool32 drmp3_init_file_w(drmp3* pMP3, const wchar_t* pFilePath, const drmp3_allocation_callbacks* pAllocationCallbacks) +DRMP3_API drmp3_bool32 drmp3_init_file_with_metadata_w(drmp3* pMP3, const wchar_t* pFilePath, drmp3_meta_proc onMeta, void* pUserDataMeta, const drmp3_allocation_callbacks* pAllocationCallbacks) { drmp3_bool32 result; FILE* pFile; + if (pMP3 == NULL) { + return DRMP3_FALSE; + } + + DRMP3_ZERO_OBJECT(pMP3); + if (drmp3_wfopen(&pFile, pFilePath, L"rb", pAllocationCallbacks) != DRMP3_SUCCESS) { return DRMP3_FALSE; } - result = drmp3_init(pMP3, drmp3__on_read_stdio, drmp3__on_seek_stdio, (void*)pFile, pAllocationCallbacks); + result = drmp3_init_internal(pMP3, drmp3__on_read_stdio, drmp3__on_seek_stdio, drmp3__on_tell_stdio, onMeta, (void*)pFile, pUserDataMeta, pAllocationCallbacks); if (result != DRMP3_TRUE) { fclose(pFile); return result; @@ -3557,6 +4043,16 @@ DRMP3_API drmp3_bool32 drmp3_init_file_w(drmp3* pMP3, const wchar_t* pFilePath, return DRMP3_TRUE; } + +DRMP3_API drmp3_bool32 drmp3_init_file(drmp3* pMP3, const char* pFilePath, const drmp3_allocation_callbacks* pAllocationCallbacks) +{ + return drmp3_init_file_with_metadata(pMP3, pFilePath, NULL, NULL, pAllocationCallbacks); +} + +DRMP3_API drmp3_bool32 drmp3_init_file_w(drmp3* pMP3, const wchar_t* pFilePath, const drmp3_allocation_callbacks* pAllocationCallbacks) +{ + return drmp3_init_file_with_metadata_w(pMP3, pFilePath, NULL, NULL, pAllocationCallbacks); +} #endif DRMP3_API void drmp3_uninit(drmp3* pMP3) @@ -3564,7 +4060,7 @@ DRMP3_API void drmp3_uninit(drmp3* pMP3) if (pMP3 == NULL) { return; } - + #ifndef DR_MP3_NO_STDIO if (pMP3->onRead == drmp3__on_read_stdio) { FILE* pFile = (FILE*)pMP3->pUserData; @@ -3644,19 +4140,48 @@ static drmp3_uint64 drmp3_read_pcm_frames_raw(drmp3* pMP3, drmp3_uint64 framesTo DRMP3_ASSERT(pMP3->onRead != NULL); while (framesToRead > 0) { - drmp3_uint32 framesToConsume = (drmp3_uint32)DRMP3_MIN(pMP3->pcmFramesRemainingInMP3Frame, framesToRead); + drmp3_uint32 framesToConsume; + + /* Skip frames if necessary. */ + if (pMP3->currentPCMFrame < pMP3->delayInPCMFrames) { + drmp3_uint32 framesToSkip = (drmp3_uint32)DRMP3_MIN(pMP3->pcmFramesRemainingInMP3Frame, pMP3->delayInPCMFrames - pMP3->currentPCMFrame); + + pMP3->currentPCMFrame += framesToSkip; + pMP3->pcmFramesConsumedInMP3Frame += framesToSkip; + pMP3->pcmFramesRemainingInMP3Frame -= framesToSkip; + } + + framesToConsume = (drmp3_uint32)DRMP3_MIN(pMP3->pcmFramesRemainingInMP3Frame, framesToRead); + + /* Clamp the number of frames to read to the padding. */ + if (pMP3->totalPCMFrameCount != DRMP3_UINT64_MAX && pMP3->totalPCMFrameCount > pMP3->paddingInPCMFrames) { + if (pMP3->currentPCMFrame < (pMP3->totalPCMFrameCount - pMP3->paddingInPCMFrames)) { + drmp3_uint64 framesRemainigToPadding = (pMP3->totalPCMFrameCount - pMP3->paddingInPCMFrames) - pMP3->currentPCMFrame; + if (framesToConsume > framesRemainigToPadding) { + framesToConsume = (drmp3_uint32)framesRemainigToPadding; + } + } else { + /* We're into the padding. Abort. */ + break; + } + } + if (pBufferOut != NULL) { - #if defined(DR_MP3_FLOAT_OUTPUT) - /* f32 */ - float* pFramesOutF32 = (float*)DRMP3_OFFSET_PTR(pBufferOut, sizeof(float) * totalFramesRead * pMP3->channels); - float* pFramesInF32 = (float*)DRMP3_OFFSET_PTR(&pMP3->pcmFrames[0], sizeof(float) * pMP3->pcmFramesConsumedInMP3Frame * pMP3->mp3FrameChannels); - DRMP3_COPY_MEMORY(pFramesOutF32, pFramesInF32, sizeof(float) * framesToConsume * pMP3->channels); - #else - /* s16 */ - drmp3_int16* pFramesOutS16 = (drmp3_int16*)DRMP3_OFFSET_PTR(pBufferOut, sizeof(drmp3_int16) * totalFramesRead * pMP3->channels); - drmp3_int16* pFramesInS16 = (drmp3_int16*)DRMP3_OFFSET_PTR(&pMP3->pcmFrames[0], sizeof(drmp3_int16) * pMP3->pcmFramesConsumedInMP3Frame * pMP3->mp3FrameChannels); - DRMP3_COPY_MEMORY(pFramesOutS16, pFramesInS16, sizeof(drmp3_int16) * framesToConsume * pMP3->channels); - #endif + #if defined(DR_MP3_FLOAT_OUTPUT) + { + /* f32 */ + float* pFramesOutF32 = (float*)DRMP3_OFFSET_PTR(pBufferOut, sizeof(float) * totalFramesRead * pMP3->channels); + float* pFramesInF32 = (float*)DRMP3_OFFSET_PTR(&pMP3->pcmFrames[0], sizeof(float) * pMP3->pcmFramesConsumedInMP3Frame * pMP3->mp3FrameChannels); + DRMP3_COPY_MEMORY(pFramesOutF32, pFramesInF32, sizeof(float) * framesToConsume * pMP3->channels); + } + #else + { + /* s16 */ + drmp3_int16* pFramesOutS16 = (drmp3_int16*)DRMP3_OFFSET_PTR(pBufferOut, sizeof(drmp3_int16) * totalFramesRead * pMP3->channels); + drmp3_int16* pFramesInS16 = (drmp3_int16*)DRMP3_OFFSET_PTR(&pMP3->pcmFrames[0], sizeof(drmp3_int16) * pMP3->pcmFramesConsumedInMP3Frame * pMP3->mp3FrameChannels); + DRMP3_COPY_MEMORY(pFramesOutS16, pFramesInS16, sizeof(drmp3_int16) * framesToConsume * pMP3->channels); + } + #endif } pMP3->currentPCMFrame += framesToConsume; @@ -3669,12 +4194,14 @@ static drmp3_uint64 drmp3_read_pcm_frames_raw(drmp3* pMP3, drmp3_uint64 framesTo break; } + /* If the cursor is already at the padding we need to abort. */ + if (pMP3->totalPCMFrameCount != DRMP3_UINT64_MAX && pMP3->totalPCMFrameCount > pMP3->paddingInPCMFrames && pMP3->currentPCMFrame >= (pMP3->totalPCMFrameCount - pMP3->paddingInPCMFrames)) { + break; + } + DRMP3_ASSERT(pMP3->pcmFramesRemainingInMP3Frame == 0); - /* - At this point we have exhausted our in-memory buffer so we need to re-fill. Note that the sample rate may have changed - at this point which means we'll also need to update our sample rate conversion pipeline. - */ + /* At this point we have exhausted our in-memory buffer so we need to re-fill. */ if (drmp3_decode_next_frame(pMP3) == 0) { break; } @@ -3776,7 +4303,7 @@ static drmp3_bool32 drmp3_seek_to_start_of_stream(drmp3* pMP3) DRMP3_ASSERT(pMP3->onSeek != NULL); /* Seek to the start of the stream to begin with. */ - if (!drmp3__on_seek(pMP3, 0, drmp3_seek_origin_start)) { + if (!drmp3__on_seek_64(pMP3, pMP3->streamStartOffset, DRMP3_SEEK_SET)) { return DRMP3_FALSE; } @@ -3876,7 +4403,7 @@ static drmp3_bool32 drmp3_seek_to_pcm_frame__seek_table(drmp3* pMP3, drmp3_uint6 } /* First thing to do is seek to the first byte of the relevant MP3 frame. */ - if (!drmp3__on_seek_64(pMP3, seekPoint.seekPosInBytes, drmp3_seek_origin_start)) { + if (!drmp3__on_seek_64(pMP3, seekPoint.seekPosInBytes, DRMP3_SEEK_SET)) { return DRMP3_FALSE; /* Failed to seek. */ } @@ -3895,7 +4422,7 @@ static drmp3_bool32 drmp3_seek_to_pcm_frame__seek_table(drmp3* pMP3, drmp3_uint6 } /* We first need to decode the next frame. */ - pcmFramesRead = drmp3_decode_next_frame_ex(pMP3, pPCMFrames); + pcmFramesRead = drmp3_decode_next_frame_ex(pMP3, pPCMFrames, NULL, NULL); if (pcmFramesRead == 0) { return DRMP3_FALSE; } @@ -3952,7 +4479,7 @@ DRMP3_API drmp3_bool32 drmp3_get_mp3_and_pcm_frame_count(drmp3* pMP3, drmp3_uint /* We'll need to seek back to where we were, so grab the PCM frame we're currently sitting on so we can restore later. */ currentPCMFrame = pMP3->currentPCMFrame; - + if (!drmp3_seek_to_start_of_stream(pMP3)) { return DRMP3_FALSE; } @@ -3963,7 +4490,7 @@ DRMP3_API drmp3_bool32 drmp3_get_mp3_and_pcm_frame_count(drmp3* pMP3, drmp3_uint for (;;) { drmp3_uint32 pcmFramesInCurrentMP3Frame; - pcmFramesInCurrentMP3Frame = drmp3_decode_next_frame_ex(pMP3, NULL); + pcmFramesInCurrentMP3Frame = drmp3_decode_next_frame_ex(pMP3, NULL, NULL, NULL); if (pcmFramesInCurrentMP3Frame == 0) { break; } @@ -3994,11 +4521,35 @@ DRMP3_API drmp3_bool32 drmp3_get_mp3_and_pcm_frame_count(drmp3* pMP3, drmp3_uint DRMP3_API drmp3_uint64 drmp3_get_pcm_frame_count(drmp3* pMP3) { drmp3_uint64 totalPCMFrameCount; - if (!drmp3_get_mp3_and_pcm_frame_count(pMP3, NULL, &totalPCMFrameCount)) { + + if (pMP3 == NULL) { return 0; } - return totalPCMFrameCount; + if (pMP3->totalPCMFrameCount != DRMP3_UINT64_MAX) { + totalPCMFrameCount = pMP3->totalPCMFrameCount; + + if (totalPCMFrameCount >= pMP3->delayInPCMFrames) { + totalPCMFrameCount -= pMP3->delayInPCMFrames; + } else { + /* The delay is greater than the frame count reported by the Xing/Info tag. Assume it's invalid and ignore. */ + } + + if (totalPCMFrameCount >= pMP3->paddingInPCMFrames) { + totalPCMFrameCount -= pMP3->paddingInPCMFrames; + } else { + /* The padding is greater than the frame count reported by the Xing/Info tag. Assume it's invalid and ignore. */ + } + + return totalPCMFrameCount; + } else { + /* Unknown frame count. Need to calculate it. */ + if (!drmp3_get_mp3_and_pcm_frame_count(pMP3, NULL, &totalPCMFrameCount)) { + return 0; + } + + return totalPCMFrameCount; + } } DRMP3_API drmp3_uint64 drmp3_get_mp3_frame_count(drmp3* pMP3) @@ -4050,7 +4601,7 @@ DRMP3_API drmp3_bool32 drmp3_calculate_seek_points(drmp3* pMP3, drmp3_uint32* pS /* We'll need to seek back to the current sample after calculating the seekpoints so we need to go ahead and grab the current location at the top. */ currentPCMFrame = pMP3->currentPCMFrame; - + /* We never do more than the total number of MP3 frames and we limit it to 32-bits. */ if (!drmp3_get_mp3_and_pcm_frame_count(pMP3, &totalMP3FrameCount, &totalPCMFrameCount)) { return DRMP3_FALSE; @@ -4101,7 +4652,7 @@ DRMP3_API drmp3_bool32 drmp3_calculate_seek_points(drmp3* pMP3, drmp3_uint32* pS mp3FrameInfo[iMP3Frame].pcmFrameIndex = runningPCMFrameCount; /* We need to get information about this frame so we can know how many samples it contained. */ - pcmFramesInCurrentMP3FrameIn = drmp3_decode_next_frame_ex(pMP3, NULL); + pcmFramesInCurrentMP3FrameIn = drmp3_decode_next_frame_ex(pMP3, NULL, NULL, NULL); if (pcmFramesInCurrentMP3FrameIn == 0) { return DRMP3_FALSE; /* This should never happen. */ } @@ -4145,7 +4696,7 @@ DRMP3_API drmp3_bool32 drmp3_calculate_seek_points(drmp3* pMP3, drmp3_uint32* pS Go to the next MP3 frame. This shouldn't ever fail, but just in case it does we just set the seek point and break. If it happens, it should only ever do it for the last seek point. */ - pcmFramesInCurrentMP3FrameIn = drmp3_decode_next_frame_ex(pMP3, NULL); + pcmFramesInCurrentMP3FrameIn = drmp3_decode_next_frame_ex(pMP3, NULL, NULL, NULL); if (pcmFramesInCurrentMP3FrameIn == 0) { pSeekPoints[iSeekPoint].seekPosInBytes = mp3FrameInfo[0].bytePos; pSeekPoints[iSeekPoint].pcmFrameIndex = nextTargetPCMFrame; @@ -4327,20 +4878,20 @@ static drmp3_int16* drmp3__full_read_and_close_s16(drmp3* pMP3, drmp3_config* pC } -DRMP3_API float* drmp3_open_and_read_pcm_frames_f32(drmp3_read_proc onRead, drmp3_seek_proc onSeek, void* pUserData, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount, const drmp3_allocation_callbacks* pAllocationCallbacks) +DRMP3_API float* drmp3_open_and_read_pcm_frames_f32(drmp3_read_proc onRead, drmp3_seek_proc onSeek, drmp3_tell_proc onTell, void* pUserData, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount, const drmp3_allocation_callbacks* pAllocationCallbacks) { drmp3 mp3; - if (!drmp3_init(&mp3, onRead, onSeek, pUserData, pAllocationCallbacks)) { + if (!drmp3_init(&mp3, onRead, onSeek, onTell, NULL, pUserData, pAllocationCallbacks)) { return NULL; } return drmp3__full_read_and_close_f32(&mp3, pConfig, pTotalFrameCount); } -DRMP3_API drmp3_int16* drmp3_open_and_read_pcm_frames_s16(drmp3_read_proc onRead, drmp3_seek_proc onSeek, void* pUserData, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount, const drmp3_allocation_callbacks* pAllocationCallbacks) +DRMP3_API drmp3_int16* drmp3_open_and_read_pcm_frames_s16(drmp3_read_proc onRead, drmp3_seek_proc onSeek, drmp3_tell_proc onTell, void* pUserData, drmp3_config* pConfig, drmp3_uint64* pTotalFrameCount, const drmp3_allocation_callbacks* pAllocationCallbacks) { drmp3 mp3; - if (!drmp3_init(&mp3, onRead, onSeek, pUserData, pAllocationCallbacks)) { + if (!drmp3_init(&mp3, onRead, onSeek, onTell, NULL, pUserData, pAllocationCallbacks)) { return NULL; } @@ -4427,74 +4978,26 @@ DIFFERENCES BETWEEN minimp3 AND dr_mp3 using minimp3 in conjunction with stb_vorbis. dr_mp3 addresses this. */ -/* -RELEASE NOTES - v0.5.0 -======================= -Version 0.5.0 has breaking API changes. - -Improved Client-Defined Memory Allocation ------------------------------------------ -The main change with this release is the addition of a more flexible way of implementing custom memory allocation routines. The -existing system of DRMP3_MALLOC, DRMP3_REALLOC and DRMP3_FREE are still in place and will be used by default when no custom -allocation callbacks are specified. - -To use the new system, you pass in a pointer to a drmp3_allocation_callbacks object to drmp3_init() and family, like this: - - void* my_malloc(size_t sz, void* pUserData) - { - return malloc(sz); - } - void* my_realloc(void* p, size_t sz, void* pUserData) - { - return realloc(p, sz); - } - void my_free(void* p, void* pUserData) - { - free(p); - } - - ... - - drmp3_allocation_callbacks allocationCallbacks; - allocationCallbacks.pUserData = &myData; - allocationCallbacks.onMalloc = my_malloc; - allocationCallbacks.onRealloc = my_realloc; - allocationCallbacks.onFree = my_free; - drmp3_init_file(&mp3, "my_file.mp3", NULL, &allocationCallbacks); - -The advantage of this new system is that it allows you to specify user data which will be passed in to the allocation routines. - -Passing in null for the allocation callbacks object will cause dr_mp3 to use defaults which is the same as DRMP3_MALLOC, -DRMP3_REALLOC and DRMP3_FREE and the equivalent of how it worked in previous versions. - -Every API that opens a drmp3 object now takes this extra parameter. These include the following: - - drmp3_init() - drmp3_init_file() - drmp3_init_memory() - drmp3_open_and_read_pcm_frames_f32() - drmp3_open_and_read_pcm_frames_s16() - drmp3_open_memory_and_read_pcm_frames_f32() - drmp3_open_memory_and_read_pcm_frames_s16() - drmp3_open_file_and_read_pcm_frames_f32() - drmp3_open_file_and_read_pcm_frames_s16() - -Renamed APIs ------------- -The following APIs have been renamed for consistency with other dr_* libraries and to make it clear that they return PCM frame -counts rather than sample counts. - - drmp3_open_and_read_f32() -> drmp3_open_and_read_pcm_frames_f32() - drmp3_open_and_read_s16() -> drmp3_open_and_read_pcm_frames_s16() - drmp3_open_memory_and_read_f32() -> drmp3_open_memory_and_read_pcm_frames_f32() - drmp3_open_memory_and_read_s16() -> drmp3_open_memory_and_read_pcm_frames_s16() - drmp3_open_file_and_read_f32() -> drmp3_open_file_and_read_pcm_frames_f32() - drmp3_open_file_and_read_s16() -> drmp3_open_file_and_read_pcm_frames_s16() -*/ - /* REVISION HISTORY ================ +v0.7.0 - TBD + - The old `DRMP3_IMPLEMENTATION` has been removed. Use `DR_MP3_IMPLEMENTATION` instead. The reason for this change is that in the future everything will eventually be using the underscored naming convention in the future, so `drmp3` will become `dr_mp3`. + - API CHANGE: Seek origins have been renamed to match the naming convention used by dr_wav and my other libraries. + - drmp3_seek_origin_start -> DRMP3_SEEK_SET + - drmp3_seek_origin_current -> DRMP3_SEEK_CUR + - DRMP3_SEEK_END (new) + - API CHANGE: Add DRMP3_SEEK_END as a seek origin for the seek callback. This is required for detection of ID3v1 and APE tags. + - API CHANGE: Add onTell callback to `drmp3_init()`. This is needed in order to track the location of ID3v1 and APE tags. + - API CHANGE: Add onMeta callback to `drmp3_init()`. This is used for reporting tag data back to the caller. Currently this only reports the raw tag data which means applications need to parse the data themselves. + - API CHANGE: Rename `drmp3dec_frame_info.hz` to `drmp3dec_frame_info.sample_rate`. + - Add detection of ID3v2, ID3v1, APE and Xing/VBRI tags. This should fix errors with some files where the decoder was reading tags as audio data. + - Delay and padding samples from LAME tags are now handled. + - Fix compilation for AIX OS. + +v0.6.40 - 2024-12-17 + - Improve detection of ARM64EC + v0.6.39 - 2024-02-27 - Fix a Wdouble-promotion warning. diff --git a/src/external/dr_wav.h b/src/external/dr_wav.h index a8207ab90..7a7e02246 100644 --- a/src/external/dr_wav.h +++ b/src/external/dr_wav.h @@ -1,6 +1,6 @@ /* WAV audio loader and writer. Choice of public domain or MIT-0. See license statements at the end of this file. -dr_wav - v0.13.16 - 2024-02-27 +dr_wav - v0.14.0 - TBD David Reid - mackron@gmail.com @@ -146,8 +146,8 @@ extern "C" { #define DRWAV_XSTRINGIFY(x) DRWAV_STRINGIFY(x) #define DRWAV_VERSION_MAJOR 0 -#define DRWAV_VERSION_MINOR 13 -#define DRWAV_VERSION_REVISION 16 +#define DRWAV_VERSION_MINOR 14 +#define DRWAV_VERSION_REVISION 0 #define DRWAV_VERSION_STRING DRWAV_XSTRINGIFY(DRWAV_VERSION_MAJOR) "." DRWAV_XSTRINGIFY(DRWAV_VERSION_MINOR) "." DRWAV_XSTRINGIFY(DRWAV_VERSION_REVISION) #include /* For size_t. */ @@ -176,7 +176,7 @@ typedef unsigned int drwav_uint32; #pragma GCC diagnostic pop #endif #endif -#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__)) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(_M_ARM64) || defined(__powerpc64__) +#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__)) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(__powerpc64__) typedef drwav_uint64 drwav_uintptr; #else typedef drwav_uint32 drwav_uintptr; @@ -305,8 +305,9 @@ typedef struct typedef enum { - drwav_seek_origin_start, - drwav_seek_origin_current + DRWAV_SEEK_SET, + DRWAV_SEEK_CUR, + DRWAV_SEEK_END } drwav_seek_origin; typedef enum @@ -415,11 +416,21 @@ origin [in] The origin of the seek - the current position or the start of the Returns whether or not the seek was successful. -Whether or not it is relative to the beginning or current position is determined by the "origin" parameter which will be either drwav_seek_origin_start or -drwav_seek_origin_current. +Whether or not it is relative to the beginning or current position is determined by the "origin" parameter which will be either DRWAV_SEEK_SET or +DRWAV_SEEK_CUR. */ typedef drwav_bool32 (* drwav_seek_proc)(void* pUserData, int offset, drwav_seek_origin origin); +/* +Callback for when the current position in the stream needs to be retrieved. + +pUserData [in] The user data that was passed to drwav_init() and family. +pCursor [out] A pointer to a variable to receive the current position in the stream. + +Returns whether or not the operation was successful. +*/ +typedef drwav_bool32 (* drwav_tell_proc)(void* pUserData, drwav_int64* pCursor); + /* Callback for when drwav_init_ex() finds a chunk. @@ -514,6 +525,11 @@ typedef enum drwav_metadata_type_list_info_genre = 1 << 15, drwav_metadata_type_list_info_album = 1 << 16, drwav_metadata_type_list_info_tracknumber = 1 << 17, + drwav_metadata_type_list_info_location = 1 << 18, + drwav_metadata_type_list_info_organization = 1 << 19, + drwav_metadata_type_list_info_keywords = 1 << 20, + drwav_metadata_type_list_info_medium = 1 << 21, + drwav_metadata_type_list_info_description = 1 << 22, /* Other type constants for convenience. */ drwav_metadata_type_list_all_info_strings = drwav_metadata_type_list_info_software @@ -524,7 +540,12 @@ typedef enum | drwav_metadata_type_list_info_date | drwav_metadata_type_list_info_genre | drwav_metadata_type_list_info_album - | drwav_metadata_type_list_info_tracknumber, + | drwav_metadata_type_list_info_tracknumber + | drwav_metadata_type_list_info_location + | drwav_metadata_type_list_info_organization + | drwav_metadata_type_list_info_keywords + | drwav_metadata_type_list_info_medium + | drwav_metadata_type_list_info_description, drwav_metadata_type_list_all_adtl = drwav_metadata_type_list_label | drwav_metadata_type_list_note @@ -555,11 +576,11 @@ typedef struct /* See drwav_smpl_loop_type. */ drwav_uint32 type; - /* The byte offset of the first sample to be played in the loop. */ - drwav_uint32 firstSampleByteOffset; + /* The offset of the first sample to be played in the loop. */ + drwav_uint32 firstSampleOffset; - /* The byte offset into the audio data of the last sample to be played in the loop. */ - drwav_uint32 lastSampleByteOffset; + /* The offset into the audio data of the last sample to be played in the loop. */ + drwav_uint32 lastSampleOffset; /* A value to represent that playback should occur at a point between samples. This value ranges from 0 to UINT32_MAX. Where a value of 0 means no fraction, and a value of (UINT32_MAX / 2) would mean half a sample. */ drwav_uint32 sampleFraction; @@ -637,8 +658,8 @@ typedef struct /* Set to 0 for uncompressed formats. Else the last byte in compressed wave data where decompression can begin to find the value of the corresponding sample value. */ drwav_uint32 blockStart; - /* For uncompressed formats this is the byte offset of the cue point into the audio data. For compressed formats this is relative to the block specified with blockStart. */ - drwav_uint32 sampleByteOffset; + /* For uncompressed formats this is the offset of the cue point into the audio data. For compressed formats this is relative to the block specified with blockStart. */ + drwav_uint32 sampleOffset; } drwav_cue_point; typedef struct @@ -846,6 +867,9 @@ typedef struct /* A pointer to the function to call when the wav file needs to be seeked. */ drwav_seek_proc onSeek; + /* A pointer to the function to call when the position of the stream needs to be retrieved. */ + drwav_tell_proc onTell; + /* The user data to pass to callbacks. */ void* pUserData; @@ -968,9 +992,9 @@ after the function returns. See also: drwav_init_file(), drwav_init_memory(), drwav_uninit() */ -DRWAV_API drwav_bool32 drwav_init(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, const drwav_allocation_callbacks* pAllocationCallbacks); -DRWAV_API drwav_bool32 drwav_init_ex(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_chunk_proc onChunk, void* pReadSeekUserData, void* pChunkUserData, drwav_uint32 flags, const drwav_allocation_callbacks* pAllocationCallbacks); -DRWAV_API drwav_bool32 drwav_init_with_metadata(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, drwav_uint32 flags, const drwav_allocation_callbacks* pAllocationCallbacks); +DRWAV_API drwav_bool32 drwav_init(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_tell_proc onTell, void* pUserData, const drwav_allocation_callbacks* pAllocationCallbacks); +DRWAV_API drwav_bool32 drwav_init_ex(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_tell_proc onTell, drwav_chunk_proc onChunk, void* pReadSeekTellUserData, void* pChunkUserData, drwav_uint32 flags, const drwav_allocation_callbacks* pAllocationCallbacks); +DRWAV_API drwav_bool32 drwav_init_with_metadata(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_tell_proc onTell, void* pUserData, drwav_uint32 flags, const drwav_allocation_callbacks* pAllocationCallbacks); /* Initializes a pre-allocated drwav object for writing. @@ -1273,9 +1297,9 @@ Opens and reads an entire wav file in a single operation. The return value is a heap-allocated buffer containing the audio data. Use drwav_free() to free the buffer. */ -DRWAV_API drwav_int16* drwav_open_and_read_pcm_frames_s16(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut, const drwav_allocation_callbacks* pAllocationCallbacks); -DRWAV_API float* drwav_open_and_read_pcm_frames_f32(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut, const drwav_allocation_callbacks* pAllocationCallbacks); -DRWAV_API drwav_int32* drwav_open_and_read_pcm_frames_s32(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut, const drwav_allocation_callbacks* pAllocationCallbacks); +DRWAV_API drwav_int16* drwav_open_and_read_pcm_frames_s16(drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_tell_proc onTell, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut, const drwav_allocation_callbacks* pAllocationCallbacks); +DRWAV_API float* drwav_open_and_read_pcm_frames_f32(drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_tell_proc onTell, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut, const drwav_allocation_callbacks* pAllocationCallbacks); +DRWAV_API drwav_int32* drwav_open_and_read_pcm_frames_s32(drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_tell_proc onTell, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut, const drwav_allocation_callbacks* pAllocationCallbacks); #ifndef DR_WAV_NO_STDIO /* Opens and decodes an entire wav file in a single operation. @@ -1384,7 +1408,7 @@ DRWAV_API drwav_bool32 drwav_fourcc_equal(const drwav_uint8* a, const char* b); #define DRWAV_MAX_SIMD_VECTOR_SIZE 32 /* Architecture Detection */ -#if defined(__x86_64__) || defined(_M_X64) +#if defined(__x86_64__) || (defined(_M_X64) && !defined(_M_ARM64EC)) #define DRWAV_X64 #elif defined(__i386) || defined(_M_IX86) #define DRWAV_X86 @@ -1962,12 +1986,12 @@ DRWAV_PRIVATE drwav_bool32 drwav__seek_forward(drwav_seek_proc onSeek, drwav_uin drwav_uint64 bytesRemainingToSeek = offset; while (bytesRemainingToSeek > 0) { if (bytesRemainingToSeek > 0x7FFFFFFF) { - if (!onSeek(pUserData, 0x7FFFFFFF, drwav_seek_origin_current)) { + if (!onSeek(pUserData, 0x7FFFFFFF, DRWAV_SEEK_CUR)) { return DRWAV_FALSE; } bytesRemainingToSeek -= 0x7FFFFFFF; } else { - if (!onSeek(pUserData, (int)bytesRemainingToSeek, drwav_seek_origin_current)) { + if (!onSeek(pUserData, (int)bytesRemainingToSeek, DRWAV_SEEK_CUR)) { return DRWAV_FALSE; } bytesRemainingToSeek = 0; @@ -1980,21 +2004,21 @@ DRWAV_PRIVATE drwav_bool32 drwav__seek_forward(drwav_seek_proc onSeek, drwav_uin DRWAV_PRIVATE drwav_bool32 drwav__seek_from_start(drwav_seek_proc onSeek, drwav_uint64 offset, void* pUserData) { if (offset <= 0x7FFFFFFF) { - return onSeek(pUserData, (int)offset, drwav_seek_origin_start); + return onSeek(pUserData, (int)offset, DRWAV_SEEK_SET); } /* Larger than 32-bit seek. */ - if (!onSeek(pUserData, 0x7FFFFFFF, drwav_seek_origin_start)) { + if (!onSeek(pUserData, 0x7FFFFFFF, DRWAV_SEEK_SET)) { return DRWAV_FALSE; } offset -= 0x7FFFFFFF; for (;;) { if (offset <= 0x7FFFFFFF) { - return onSeek(pUserData, (int)offset, drwav_seek_origin_current); + return onSeek(pUserData, (int)offset, DRWAV_SEEK_CUR); } - if (!onSeek(pUserData, 0x7FFFFFFF, drwav_seek_origin_current)) { + if (!onSeek(pUserData, 0x7FFFFFFF, DRWAV_SEEK_CUR)) { return DRWAV_FALSE; } offset -= 0x7FFFFFFF; @@ -2028,7 +2052,7 @@ DRWAV_PRIVATE drwav_bool32 drwav__on_seek(drwav_seek_proc onSeek, void* pUserDat return DRWAV_FALSE; } - if (origin == drwav_seek_origin_start) { + if (origin == DRWAV_SEEK_SET) { *pCursor = offset; } else { *pCursor += offset; @@ -2096,7 +2120,7 @@ DRWAV_PRIVATE drwav_uint8* drwav__metadata_get_memory(drwav__metadata_parser* pP pParser->pDataCursor += align - modulo; } } - + pResult = pParser->pDataCursor; /* @@ -2189,12 +2213,12 @@ DRWAV_PRIVATE drwav_uint64 drwav__read_smpl_to_metadata_obj(drwav__metadata_pars bytesJustRead = drwav__metadata_parser_read(pParser, smplLoopData, sizeof(smplLoopData), &totalBytesRead); if (bytesJustRead == sizeof(smplLoopData)) { - pMetadata->data.smpl.pLoops[iSampleLoop].cuePointId = drwav_bytes_to_u32(smplLoopData + 0); - pMetadata->data.smpl.pLoops[iSampleLoop].type = drwav_bytes_to_u32(smplLoopData + 4); - pMetadata->data.smpl.pLoops[iSampleLoop].firstSampleByteOffset = drwav_bytes_to_u32(smplLoopData + 8); - pMetadata->data.smpl.pLoops[iSampleLoop].lastSampleByteOffset = drwav_bytes_to_u32(smplLoopData + 12); - pMetadata->data.smpl.pLoops[iSampleLoop].sampleFraction = drwav_bytes_to_u32(smplLoopData + 16); - pMetadata->data.smpl.pLoops[iSampleLoop].playCount = drwav_bytes_to_u32(smplLoopData + 20); + pMetadata->data.smpl.pLoops[iSampleLoop].cuePointId = drwav_bytes_to_u32(smplLoopData + 0); + pMetadata->data.smpl.pLoops[iSampleLoop].type = drwav_bytes_to_u32(smplLoopData + 4); + pMetadata->data.smpl.pLoops[iSampleLoop].firstSampleOffset = drwav_bytes_to_u32(smplLoopData + 8); + pMetadata->data.smpl.pLoops[iSampleLoop].lastSampleOffset = drwav_bytes_to_u32(smplLoopData + 12); + pMetadata->data.smpl.pLoops[iSampleLoop].sampleFraction = drwav_bytes_to_u32(smplLoopData + 16); + pMetadata->data.smpl.pLoops[iSampleLoop].playCount = drwav_bytes_to_u32(smplLoopData + 20); } else { break; } @@ -2254,7 +2278,7 @@ DRWAV_PRIVATE drwav_uint64 drwav__read_cue_to_metadata_obj(drwav__metadata_parse pMetadata->data.cue.pCuePoints[iCuePoint].dataChunkId[3] = cuePointData[11]; pMetadata->data.cue.pCuePoints[iCuePoint].chunkStart = drwav_bytes_to_u32(cuePointData + 12); pMetadata->data.cue.pCuePoints[iCuePoint].blockStart = drwav_bytes_to_u32(cuePointData + 16); - pMetadata->data.cue.pCuePoints[iCuePoint].sampleByteOffset = drwav_bytes_to_u32(cuePointData + 20); + pMetadata->data.cue.pCuePoints[iCuePoint].sampleOffset = drwav_bytes_to_u32(cuePointData + 20); } else { break; } @@ -2407,7 +2431,7 @@ DRWAV_PRIVATE drwav_result drwav_buffer_reader_read(drwav_buffer_reader* pReader size_t bytesRemaining; DRWAV_ASSERT(pReader != NULL); - + if (pBytesRead != NULL) { *pBytesRead = 0; } @@ -2487,7 +2511,7 @@ DRWAV_PRIVATE drwav_uint64 drwav__read_bext_to_metadata_obj(drwav__metadata_pars size_t bytesRead = drwav__metadata_parser_read(pParser, bextData, sizeof(bextData), NULL); DRWAV_ASSERT(pParser->stage == drwav__metadata_parser_stage_read); - + if (bytesRead == sizeof(bextData)) { drwav_buffer_reader reader; drwav_uint32 timeReferenceLow; @@ -2549,7 +2573,7 @@ DRWAV_PRIVATE drwav_uint64 drwav__read_list_label_or_note_to_metadata_obj(drwav_ drwav_uint64 totalBytesRead = 0; size_t bytesJustRead = drwav__metadata_parser_read(pParser, cueIDBuffer, sizeof(cueIDBuffer), &totalBytesRead); - DRWAV_ASSERT(pParser->stage == drwav__metadata_parser_stage_read); + DRWAV_ASSERT(pParser->stage == drwav__metadata_parser_stage_read); if (bytesJustRead == sizeof(cueIDBuffer)) { drwav_uint32 sizeIncludingNullTerminator; @@ -2698,7 +2722,7 @@ DRWAV_PRIVATE drwav_uint64 drwav__metadata_process_chunk(drwav__metadata_parser* drwav_uint8 buffer[4]; size_t bytesJustRead; - if (!pParser->onSeek(pParser->pReadSeekUserData, 28, drwav_seek_origin_current)) { + if (!pParser->onSeek(pParser->pReadSeekUserData, 28, DRWAV_SEEK_CUR)) { return bytesRead; } bytesRead += 28; @@ -2721,7 +2745,7 @@ DRWAV_PRIVATE drwav_uint64 drwav__metadata_process_chunk(drwav__metadata_parser* } } else { /* Loop count in header does not match the size of the chunk. */ - } + } } } else { bytesRead = drwav__read_smpl_to_metadata_obj(pParser, pChunkHeader, &pParser->pMetadata[pParser->metadataCursor]); @@ -2811,7 +2835,7 @@ DRWAV_PRIVATE drwav_uint64 drwav__metadata_process_chunk(drwav__metadata_parser* return bytesRead; } allocSizeNeeded += drwav__strlen(buffer) + 1; - allocSizeNeeded += (size_t)pChunkHeader->sizeInBytes - DRWAV_BEXT_BYTES; /* Coding history. */ + allocSizeNeeded += (size_t)pChunkHeader->sizeInBytes - DRWAV_BEXT_BYTES + 1; /* Coding history. */ drwav__metadata_request_extra_memory_for_stage_2(pParser, allocSizeNeeded, 1); @@ -2916,6 +2940,16 @@ DRWAV_PRIVATE drwav_uint64 drwav__metadata_process_chunk(drwav__metadata_parser* subchunkBytesRead = drwav__metadata_process_info_text_chunk(pParser, subchunkDataSize, drwav_metadata_type_list_info_album); } else if (drwav__chunk_matches(allowedMetadataTypes, subchunkId, drwav_metadata_type_list_info_tracknumber, "ITRK")) { subchunkBytesRead = drwav__metadata_process_info_text_chunk(pParser, subchunkDataSize, drwav_metadata_type_list_info_tracknumber); + } else if (drwav__chunk_matches(allowedMetadataTypes, subchunkId, drwav_metadata_type_list_info_location, "IARL")) { + subchunkBytesRead = drwav__metadata_process_info_text_chunk(pParser, subchunkDataSize, drwav_metadata_type_list_info_location); + } else if (drwav__chunk_matches(allowedMetadataTypes, subchunkId, drwav_metadata_type_list_info_organization, "ICMS")) { + subchunkBytesRead = drwav__metadata_process_info_text_chunk(pParser, subchunkDataSize, drwav_metadata_type_list_info_organization); + } else if (drwav__chunk_matches(allowedMetadataTypes, subchunkId, drwav_metadata_type_list_info_keywords, "IKEY")) { + subchunkBytesRead = drwav__metadata_process_info_text_chunk(pParser, subchunkDataSize, drwav_metadata_type_list_info_keywords); + } else if (drwav__chunk_matches(allowedMetadataTypes, subchunkId, drwav_metadata_type_list_info_medium, "IMED")) { + subchunkBytesRead = drwav__metadata_process_info_text_chunk(pParser, subchunkDataSize, drwav_metadata_type_list_info_medium); + } else if (drwav__chunk_matches(allowedMetadataTypes, subchunkId, drwav_metadata_type_list_info_description, "ISBJ")) { + subchunkBytesRead = drwav__metadata_process_info_text_chunk(pParser, subchunkDataSize, drwav_metadata_type_list_info_description); } else if ((allowedMetadataTypes & drwav_metadata_type_unknown) != 0) { subchunkBytesRead = drwav__metadata_process_unknown_chunk(pParser, subchunkId, subchunkDataSize, listType); } @@ -2926,14 +2960,14 @@ DRWAV_PRIVATE drwav_uint64 drwav__metadata_process_chunk(drwav__metadata_parser* if (subchunkBytesRead < subchunkDataSize) { drwav_uint64 bytesToSeek = subchunkDataSize - subchunkBytesRead; - if (!pParser->onSeek(pParser->pReadSeekUserData, (int)bytesToSeek, drwav_seek_origin_current)) { + if (!pParser->onSeek(pParser->pReadSeekUserData, (int)bytesToSeek, DRWAV_SEEK_CUR)) { break; } bytesRead += bytesToSeek; } if ((subchunkDataSize % 2) == 1) { - if (!pParser->onSeek(pParser->pReadSeekUserData, 1, drwav_seek_origin_current)) { + if (!pParser->onSeek(pParser->pReadSeekUserData, 1, DRWAV_SEEK_CUR)) { break; } bytesRead += 1; @@ -2985,16 +3019,17 @@ DRWAV_API drwav_uint16 drwav_fmt_get_format(const drwav_fmt* pFMT) } } -DRWAV_PRIVATE drwav_bool32 drwav_preinit(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, void* pReadSeekUserData, const drwav_allocation_callbacks* pAllocationCallbacks) +DRWAV_PRIVATE drwav_bool32 drwav_preinit(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_tell_proc onTell, void* pReadSeekTellUserData, const drwav_allocation_callbacks* pAllocationCallbacks) { - if (pWav == NULL || onRead == NULL || onSeek == NULL) { + if (pWav == NULL || onRead == NULL || onSeek == NULL) { /* <-- onTell is optional. */ return DRWAV_FALSE; } DRWAV_ZERO_MEMORY(pWav, sizeof(*pWav)); pWav->onRead = onRead; pWav->onSeek = onSeek; - pWav->pUserData = pReadSeekUserData; + pWav->onTell = onTell; + pWav->pUserData = pReadSeekTellUserData; pWav->allocationCallbacks = drwav_copy_allocation_callbacks_or_defaults(pAllocationCallbacks); if (pWav->allocationCallbacks.onFree == NULL || (pWav->allocationCallbacks.onMalloc == NULL && pWav->allocationCallbacks.onRealloc == NULL)) { @@ -3311,7 +3346,7 @@ DRWAV_PRIVATE drwav_bool32 drwav_init__internal(drwav* pWav, drwav_chunk_proc on fmt.channelMask = drwav_bytes_to_u32_ex(fmtext + 2, pWav->container); drwav_bytes_to_guid(fmtext + 6, fmt.subFormat); } else { - if (pWav->onSeek(pWav->pUserData, fmt.extendedSize, drwav_seek_origin_current) == DRWAV_FALSE) { + if (pWav->onSeek(pWav->pUserData, fmt.extendedSize, DRWAV_SEEK_CUR) == DRWAV_FALSE) { return DRWAV_FALSE; } } @@ -3321,7 +3356,7 @@ DRWAV_PRIVATE drwav_bool32 drwav_init__internal(drwav* pWav, drwav_chunk_proc on } /* Seek past any leftover bytes. For w64 the leftover will be defined based on the chunk size. */ - if (pWav->onSeek(pWav->pUserData, (int)(header.sizeInBytes - bytesReadSoFar), drwav_seek_origin_current) == DRWAV_FALSE) { + if (pWav->onSeek(pWav->pUserData, (int)(header.sizeInBytes - bytesReadSoFar), DRWAV_SEEK_CUR) == DRWAV_FALSE) { return DRWAV_FALSE; } cursor += (header.sizeInBytes - bytesReadSoFar); @@ -3342,7 +3377,7 @@ DRWAV_PRIVATE drwav_bool32 drwav_init__internal(drwav* pWav, drwav_chunk_proc on if (((pWav->container == drwav_container_riff || pWav->container == drwav_container_rifx || pWav->container == drwav_container_rf64) && drwav_fourcc_equal(header.id.fourcc, "data")) || ((pWav->container == drwav_container_w64) && drwav_guid_equal(header.id.guid, drwavGUID_W64_DATA))) { foundChunk_data = DRWAV_TRUE; - + pWav->dataChunkDataPos = cursor; if (pWav->container != drwav_container_rf64) { /* The data chunk size for RF64 will always be set to 0xFFFFFFFF here. It was set to it's true value earlier. */ @@ -3432,7 +3467,7 @@ DRWAV_PRIVATE drwav_bool32 drwav_init__internal(drwav* pWav, drwav_chunk_proc on return DRWAV_FALSE; } - + channels = drwav_bytes_to_u16_ex (commData + 0, pWav->container); frameCount = drwav_bytes_to_u32_ex (commData + 2, pWav->container); sampleSizeInBits = drwav_bytes_to_u16_ex (commData + 6, pWav->container); @@ -3465,12 +3500,15 @@ DRWAV_PRIVATE drwav_bool32 drwav_init__internal(drwav* pWav, drwav_chunk_proc on compressionFormat = DR_WAVE_FORMAT_MULAW; } else if (drwav_fourcc_equal(type, "ima4")) { compressionFormat = DR_WAVE_FORMAT_DVI_ADPCM; - sampleSizeInBits = 4; + sampleSizeInBits = 4; /* I haven't been able to figure out how to get correct decoding for IMA ADPCM. Until this is figured out we'll need to abort when we encounter such an encoding. Advice welcome! */ + (void)compressionFormat; + (void)sampleSizeInBits; + return DRWAV_FALSE; } else { return DRWAV_FALSE; /* Unknown or unsupported compression format. Need to abort. */ @@ -3507,7 +3545,7 @@ DRWAV_PRIVATE drwav_bool32 drwav_init__internal(drwav* pWav, drwav_chunk_proc on /* In AIFF, samples are padded to 8 byte boundaries. We need to round up our bits per sample here. */ fmt.bitsPerSample += (fmt.bitsPerSample & 7); - + /* If the form type is AIFC there will be some additional data in the chunk. We need to seek past it. */ if (isAIFCFormType) { @@ -3533,20 +3571,46 @@ DRWAV_PRIVATE drwav_bool32 drwav_init__internal(drwav* pWav, drwav_chunk_proc on return DRWAV_FALSE; } - /* We need to seek forward by the offset. */ + /* The position of the audio data starts at an offset. */ offset = drwav_bytes_to_u32_ex(offsetAndBlockSizeData + 0, pWav->container); - if (drwav__seek_forward(pWav->onSeek, offset, pWav->pUserData) == DRWAV_FALSE) { - return DRWAV_FALSE; - } - cursor += offset; + pWav->dataChunkDataPos = cursor + offset; - pWav->dataChunkDataPos = cursor; + /* The data chunk size needs to be reduced by the offset or else seeking will break. */ dataChunkSize = chunkSize; - - /* If we're running in sequential mode, or we're not reading metadata, we have enough now that we can get out of the loop. */ - if (sequential || !isProcessingMetadata) { - break; /* No need to keep reading beyond the data chunk. */ + if (dataChunkSize > offset) { + dataChunkSize -= offset; } else { + dataChunkSize = 0; + } + + if (sequential) { + if (foundChunk_fmt) { /* <-- Name is misleading, but will be set to true if the COMM chunk has been parsed. */ + /* + Getting here means we're opening in sequential mode and we've found the SSND (data) and COMM (fmt) chunks. We need + to get out of the loop here or else we'll end up going past the data chunk and will have no way of getting back to + it since we're not allowed to seek backwards. + + One subtle detail here is that there is an offset with the SSND chunk. We need to make sure we seek past this offset + so we're left sitting on the first byte of actual audio data. + */ + if (drwav__seek_forward(pWav->onSeek, offset, pWav->pUserData) == DRWAV_FALSE) { + return DRWAV_FALSE; + } + cursor += offset; + + break; + } else { + /* + Getting here means the COMM chunk was not found. In sequential mode, if we haven't yet found the COMM chunk + we'll need to abort because we can't be doing a backwards seek back to the SSND chunk in order to read the + data. For this reason, this configuration of AIFF files are not supported with sequential mode. + */ + return DRWAV_FALSE; + } + } else { + chunkSize += header.paddingSize; /* <-- Make sure we seek past the padding. */ + chunkSize -= sizeof(offsetAndBlockSizeData); /* <-- This was read earlier. */ + if (drwav__seek_forward(pWav->onSeek, chunkSize, pWav->pUserData) == DRWAV_FALSE) { break; } @@ -3557,7 +3621,6 @@ DRWAV_PRIVATE drwav_bool32 drwav_init__internal(drwav* pWav, drwav_chunk_proc on } - /* Getting here means it's not a chunk that we care about internally, but might need to be handled as metadata by the caller. */ if (isProcessingMetadata) { drwav__metadata_process_chunk(&metadataParser, &header, drwav_metadata_type_all_including_unknown); @@ -3647,8 +3710,26 @@ DRWAV_PRIVATE drwav_bool32 drwav_init__internal(drwav* pWav, drwav_chunk_proc on pWav->metadataCount = metadataParser.metadataCount; } - - /* At this point we should be sitting on the first byte of the raw audio data. */ + /* + It's possible for the size reported in the data chunk to be greater than that of the file. We + need to do a validation check here to make sure we don't exceed the file size. To skip this + check, set the onTell callback to NULL. + */ + if (pWav->onTell != NULL && pWav->onSeek != NULL) { + if (pWav->onSeek(pWav->pUserData, 0, DRWAV_SEEK_END) == DRWAV_TRUE) { + drwav_int64 fileSize; + if (pWav->onTell(pWav->pUserData, &fileSize)) { + if (dataChunkSize + pWav->dataChunkDataPos > (drwav_uint64)fileSize) { + dataChunkSize = (drwav_uint64)fileSize - pWav->dataChunkDataPos; + } + } + } else { + /* + Failed to seek to the end of the file. It might not be supported by the backend so in + this case we cannot perform the validation check. + */ + } + } /* I've seen a WAV file in the wild where a RIFF-ecapsulated file has the size of it's "RIFF" and @@ -3670,6 +3751,7 @@ DRWAV_PRIVATE drwav_bool32 drwav_init__internal(drwav* pWav, drwav_chunk_proc on } } + /* At this point we want to be sitting on the first byte of the raw audio data. */ if (drwav__seek_from_start(pWav->onSeek, pWav->dataChunkDataPos, pWav->pUserData) == DRWAV_FALSE) { drwav_free(pWav->pMetadata, &pWav->allocationCallbacks); return DRWAV_FALSE; @@ -3680,8 +3762,26 @@ DRWAV_PRIVATE drwav_bool32 drwav_init__internal(drwav* pWav, drwav_chunk_proc on pWav->sampleRate = fmt.sampleRate; pWav->channels = fmt.channels; pWav->bitsPerSample = fmt.bitsPerSample; - pWav->bytesRemaining = dataChunkSize; pWav->translatedFormatTag = translatedFormatTag; + + /* + I've had a report where files would start glitching after seeking. The reason for this is the data + chunk is not a clean multiple of the PCM frame size in bytes. Where this becomes a problem is when + seeking, because the number of bytes remaining in the data chunk is used to calculate the current + byte position. If this byte position is not aligned to the number of bytes in a PCM frame, it will + result in the seek not being cleanly positioned at the start of the PCM frame thereby resulting in + all decoded frames after that being corrupted. + + To address this, we need to round the data chunk size down to the nearest multiple of the frame size. + */ + if (!drwav__is_compressed_format_tag(translatedFormatTag)) { + drwav_uint32 bytesPerFrame = drwav_get_bytes_per_pcm_frame(pWav); + if (bytesPerFrame > 0) { + dataChunkSize -= (dataChunkSize % bytesPerFrame); + } + } + + pWav->bytesRemaining = dataChunkSize; pWav->dataChunkDataSize = dataChunkSize; if (sampleCountFromFactChunk != 0) { @@ -3764,23 +3864,23 @@ DRWAV_PRIVATE drwav_bool32 drwav_init__internal(drwav* pWav, drwav_chunk_proc on return DRWAV_TRUE; } -DRWAV_API drwav_bool32 drwav_init(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, const drwav_allocation_callbacks* pAllocationCallbacks) +DRWAV_API drwav_bool32 drwav_init(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_tell_proc onTell, void* pUserData, const drwav_allocation_callbacks* pAllocationCallbacks) { - return drwav_init_ex(pWav, onRead, onSeek, NULL, pUserData, NULL, 0, pAllocationCallbacks); + return drwav_init_ex(pWav, onRead, onSeek, onTell, NULL, pUserData, NULL, 0, pAllocationCallbacks); } -DRWAV_API drwav_bool32 drwav_init_ex(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_chunk_proc onChunk, void* pReadSeekUserData, void* pChunkUserData, drwav_uint32 flags, const drwav_allocation_callbacks* pAllocationCallbacks) +DRWAV_API drwav_bool32 drwav_init_ex(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_tell_proc onTell, drwav_chunk_proc onChunk, void* pReadSeekTellUserData, void* pChunkUserData, drwav_uint32 flags, const drwav_allocation_callbacks* pAllocationCallbacks) { - if (!drwav_preinit(pWav, onRead, onSeek, pReadSeekUserData, pAllocationCallbacks)) { + if (!drwav_preinit(pWav, onRead, onSeek, onTell, pReadSeekTellUserData, pAllocationCallbacks)) { return DRWAV_FALSE; } return drwav_init__internal(pWav, onChunk, pChunkUserData, flags); } -DRWAV_API drwav_bool32 drwav_init_with_metadata(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, drwav_uint32 flags, const drwav_allocation_callbacks* pAllocationCallbacks) +DRWAV_API drwav_bool32 drwav_init_with_metadata(drwav* pWav, drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_tell_proc onTell, void* pUserData, drwav_uint32 flags, const drwav_allocation_callbacks* pAllocationCallbacks) { - if (!drwav_preinit(pWav, onRead, onSeek, pUserData, pAllocationCallbacks)) { + if (!drwav_preinit(pWav, onRead, onSeek, onTell, pUserData, pAllocationCallbacks)) { return DRWAV_FALSE; } @@ -3995,8 +4095,8 @@ DRWAV_PRIVATE size_t drwav__write_or_count_metadata(drwav* pWav, drwav_metadata* for (iLoop = 0; iLoop < pMetadata->data.smpl.sampleLoopCount; ++iLoop) { bytesWritten += drwav__write_or_count_u32ne_to_le(pWav, pMetadata->data.smpl.pLoops[iLoop].cuePointId); bytesWritten += drwav__write_or_count_u32ne_to_le(pWav, pMetadata->data.smpl.pLoops[iLoop].type); - bytesWritten += drwav__write_or_count_u32ne_to_le(pWav, pMetadata->data.smpl.pLoops[iLoop].firstSampleByteOffset); - bytesWritten += drwav__write_or_count_u32ne_to_le(pWav, pMetadata->data.smpl.pLoops[iLoop].lastSampleByteOffset); + bytesWritten += drwav__write_or_count_u32ne_to_le(pWav, pMetadata->data.smpl.pLoops[iLoop].firstSampleOffset); + bytesWritten += drwav__write_or_count_u32ne_to_le(pWav, pMetadata->data.smpl.pLoops[iLoop].lastSampleOffset); bytesWritten += drwav__write_or_count_u32ne_to_le(pWav, pMetadata->data.smpl.pLoops[iLoop].sampleFraction); bytesWritten += drwav__write_or_count_u32ne_to_le(pWav, pMetadata->data.smpl.pLoops[iLoop].playCount); } @@ -4036,7 +4136,7 @@ DRWAV_PRIVATE size_t drwav__write_or_count_metadata(drwav* pWav, drwav_metadata* bytesWritten += drwav__write_or_count(pWav, pMetadata->data.cue.pCuePoints[iCuePoint].dataChunkId, 4); bytesWritten += drwav__write_or_count_u32ne_to_le(pWav, pMetadata->data.cue.pCuePoints[iCuePoint].chunkStart); bytesWritten += drwav__write_or_count_u32ne_to_le(pWav, pMetadata->data.cue.pCuePoints[iCuePoint].blockStart); - bytesWritten += drwav__write_or_count_u32ne_to_le(pWav, pMetadata->data.cue.pCuePoints[iCuePoint].sampleByteOffset); + bytesWritten += drwav__write_or_count_u32ne_to_le(pWav, pMetadata->data.cue.pCuePoints[iCuePoint].sampleOffset); } } break; @@ -4142,15 +4242,20 @@ DRWAV_PRIVATE size_t drwav__write_or_count_metadata(drwav* pWav, drwav_metadata* const char* pID = NULL; switch (pMetadata->type) { - case drwav_metadata_type_list_info_software: pID = "ISFT"; break; - case drwav_metadata_type_list_info_copyright: pID = "ICOP"; break; - case drwav_metadata_type_list_info_title: pID = "INAM"; break; - case drwav_metadata_type_list_info_artist: pID = "IART"; break; - case drwav_metadata_type_list_info_comment: pID = "ICMT"; break; - case drwav_metadata_type_list_info_date: pID = "ICRD"; break; - case drwav_metadata_type_list_info_genre: pID = "IGNR"; break; - case drwav_metadata_type_list_info_album: pID = "IPRD"; break; - case drwav_metadata_type_list_info_tracknumber: pID = "ITRK"; break; + case drwav_metadata_type_list_info_software: pID = "ISFT"; break; + case drwav_metadata_type_list_info_copyright: pID = "ICOP"; break; + case drwav_metadata_type_list_info_title: pID = "INAM"; break; + case drwav_metadata_type_list_info_artist: pID = "IART"; break; + case drwav_metadata_type_list_info_comment: pID = "ICMT"; break; + case drwav_metadata_type_list_info_date: pID = "ICRD"; break; + case drwav_metadata_type_list_info_genre: pID = "IGNR"; break; + case drwav_metadata_type_list_info_album: pID = "IPRD"; break; + case drwav_metadata_type_list_info_tracknumber: pID = "ITRK"; break; + case drwav_metadata_type_list_info_location: pID = "IARL"; break; + case drwav_metadata_type_list_info_organization: pID = "ICMS"; break; + case drwav_metadata_type_list_info_keywords: pID = "IKEY"; break; + case drwav_metadata_type_list_info_medium: pID = "IMED"; break; + case drwav_metadata_type_list_info_description: pID = "ISBJ"; break; default: break; } @@ -4195,7 +4300,7 @@ DRWAV_PRIVATE size_t drwav__write_or_count_metadata(drwav* pWav, drwav_metadata* if (pMetadata->data.labelOrNote.stringLength > 0) { chunkSize += pMetadata->data.labelOrNote.stringLength + 1; - } + } } break; case drwav_metadata_type_list_labelled_cue_region: @@ -4434,7 +4539,7 @@ DRWAV_PRIVATE drwav_bool32 drwav_init_write__internal(drwav* pWav, const drwav_d /* "RIFF" chunk. */ if (pFormat->container == drwav_container_riff) { - drwav_uint32 chunkSizeRIFF = 28 + (drwav_uint32)initialDataChunkSize; /* +28 = "WAVE" + [sizeof "fmt " chunk] */ + drwav_uint32 chunkSizeRIFF = 36 + (drwav_uint32)initialDataChunkSize; /* +36 = "WAVE" + [sizeof "fmt " chunk] + [data chunk header] */ runningPos += drwav__write(pWav, "RIFF", 4); runningPos += drwav__write_u32ne_to_le(pWav, chunkSizeRIFF); runningPos += drwav__write(pWav, "WAVE", 4); @@ -4704,7 +4809,7 @@ DRWAV_PRIVATE drwav_result drwav_result_from_errno(int e) #ifdef ENOSYS case ENOSYS: return DRWAV_NOT_IMPLEMENTED; #endif - #ifdef ENOTEMPTY + #if defined(ENOTEMPTY) && ENOTEMPTY != EEXIST /* In AIX, ENOTEMPTY and EEXIST use the same value. */ case ENOTEMPTY: return DRWAV_DIRECTORY_NOT_EMPTY; #endif #ifdef ELOOP @@ -5161,7 +5266,38 @@ DRWAV_PRIVATE size_t drwav__on_write_stdio(void* pUserData, const void* pData, s DRWAV_PRIVATE drwav_bool32 drwav__on_seek_stdio(void* pUserData, int offset, drwav_seek_origin origin) { - return fseek((FILE*)pUserData, offset, (origin == drwav_seek_origin_current) ? SEEK_CUR : SEEK_SET) == 0; + int whence = SEEK_SET; + if (origin == DRWAV_SEEK_CUR) { + whence = SEEK_CUR; + } else if (origin == DRWAV_SEEK_END) { + whence = SEEK_END; + } + + return fseek((FILE*)pUserData, offset, whence) == 0; +} + +DRWAV_PRIVATE drwav_bool32 drwav__on_tell_stdio(void* pUserData, drwav_int64* pCursor) +{ + FILE* pFileStdio = (FILE*)pUserData; + drwav_int64 result; + + /* These were all validated at a higher level. */ + DRWAV_ASSERT(pFileStdio != NULL); + DRWAV_ASSERT(pCursor != NULL); + +#if defined(_WIN32) + #if defined(_MSC_VER) && _MSC_VER > 1200 + result = _ftelli64(pFileStdio); + #else + result = ftell(pFileStdio); + #endif +#else + result = ftell(pFileStdio); +#endif + + *pCursor = result; + + return DRWAV_TRUE; } DRWAV_API drwav_bool32 drwav_init_file(drwav* pWav, const char* filename, const drwav_allocation_callbacks* pAllocationCallbacks) @@ -5174,12 +5310,12 @@ DRWAV_PRIVATE drwav_bool32 drwav_init_file__internal_FILE(drwav* pWav, FILE* pFi { drwav_bool32 result; - result = drwav_preinit(pWav, drwav__on_read_stdio, drwav__on_seek_stdio, (void*)pFile, pAllocationCallbacks); + result = drwav_preinit(pWav, drwav__on_read_stdio, drwav__on_seek_stdio, drwav__on_tell_stdio, (void*)pFile, pAllocationCallbacks); if (result != DRWAV_TRUE) { fclose(pFile); return result; } - + result = drwav_init__internal(pWav, onChunk, pChunkUserData, flags); if (result != DRWAV_TRUE) { fclose(pFile); @@ -5352,29 +5488,34 @@ DRWAV_PRIVATE size_t drwav__on_read_memory(void* pUserData, void* pBufferOut, si DRWAV_PRIVATE drwav_bool32 drwav__on_seek_memory(void* pUserData, int offset, drwav_seek_origin origin) { drwav* pWav = (drwav*)pUserData; + drwav_int64 newCursor; + DRWAV_ASSERT(pWav != NULL); - if (origin == drwav_seek_origin_current) { - if (offset > 0) { - if (pWav->memoryStream.currentReadPos + offset > pWav->memoryStream.dataSize) { - return DRWAV_FALSE; /* Trying to seek too far forward. */ - } - } else { - if (pWav->memoryStream.currentReadPos < (size_t)-offset) { - return DRWAV_FALSE; /* Trying to seek too far backwards. */ - } - } + newCursor = pWav->memoryStream.currentReadPos; - /* This will never underflow thanks to the clamps above. */ - pWav->memoryStream.currentReadPos += offset; + if (origin == DRWAV_SEEK_SET) { + newCursor = 0; + } else if (origin == DRWAV_SEEK_CUR) { + newCursor = (drwav_int64)pWav->memoryStream.currentReadPos; + } else if (origin == DRWAV_SEEK_END) { + newCursor = (drwav_int64)pWav->memoryStream.dataSize; } else { - if ((drwav_uint32)offset <= pWav->memoryStream.dataSize) { - pWav->memoryStream.currentReadPos = offset; - } else { - return DRWAV_FALSE; /* Trying to seek too far forward. */ - } + DRWAV_ASSERT(!"Invalid seek origin"); + return DRWAV_FALSE; } + newCursor += offset; + + if (newCursor < 0) { + return DRWAV_FALSE; /* Trying to seek prior to the start of the buffer. */ + } + if ((size_t)newCursor > pWav->memoryStream.dataSize) { + return DRWAV_FALSE; /* Trying to seek beyond the end of the buffer. */ + } + + pWav->memoryStream.currentReadPos = (size_t)newCursor; + return DRWAV_TRUE; } @@ -5421,29 +5562,45 @@ DRWAV_PRIVATE size_t drwav__on_write_memory(void* pUserData, const void* pDataIn DRWAV_PRIVATE drwav_bool32 drwav__on_seek_memory_write(void* pUserData, int offset, drwav_seek_origin origin) { drwav* pWav = (drwav*)pUserData; + drwav_int64 newCursor; + DRWAV_ASSERT(pWav != NULL); - if (origin == drwav_seek_origin_current) { - if (offset > 0) { - if (pWav->memoryStreamWrite.currentWritePos + offset > pWav->memoryStreamWrite.dataSize) { - offset = (int)(pWav->memoryStreamWrite.dataSize - pWav->memoryStreamWrite.currentWritePos); /* Trying to seek too far forward. */ - } - } else { - if (pWav->memoryStreamWrite.currentWritePos < (size_t)-offset) { - offset = -(int)pWav->memoryStreamWrite.currentWritePos; /* Trying to seek too far backwards. */ - } - } + newCursor = pWav->memoryStreamWrite.currentWritePos; - /* This will never underflow thanks to the clamps above. */ - pWav->memoryStreamWrite.currentWritePos += offset; + if (origin == DRWAV_SEEK_SET) { + newCursor = 0; + } else if (origin == DRWAV_SEEK_CUR) { + newCursor = (drwav_int64)pWav->memoryStreamWrite.currentWritePos; + } else if (origin == DRWAV_SEEK_END) { + newCursor = (drwav_int64)pWav->memoryStreamWrite.dataSize; } else { - if ((drwav_uint32)offset <= pWav->memoryStreamWrite.dataSize) { - pWav->memoryStreamWrite.currentWritePos = offset; - } else { - pWav->memoryStreamWrite.currentWritePos = pWav->memoryStreamWrite.dataSize; /* Trying to seek too far forward. */ - } + DRWAV_ASSERT(!"Invalid seek origin"); + return DRWAV_INVALID_ARGS; } + newCursor += offset; + + if (newCursor < 0) { + return DRWAV_FALSE; /* Trying to seek prior to the start of the buffer. */ + } + if ((size_t)newCursor > pWav->memoryStreamWrite.dataSize) { + return DRWAV_FALSE; /* Trying to seek beyond the end of the buffer. */ + } + + pWav->memoryStreamWrite.currentWritePos = (size_t)newCursor; + + return DRWAV_TRUE; +} + +DRWAV_PRIVATE drwav_bool32 drwav__on_tell_memory(void* pUserData, drwav_int64* pCursor) +{ + drwav* pWav = (drwav*)pUserData; + + DRWAV_ASSERT(pWav != NULL); + DRWAV_ASSERT(pCursor != NULL); + + *pCursor = (drwav_int64)pWav->memoryStream.currentReadPos; return DRWAV_TRUE; } @@ -5458,7 +5615,7 @@ DRWAV_API drwav_bool32 drwav_init_memory_ex(drwav* pWav, const void* data, size_ return DRWAV_FALSE; } - if (!drwav_preinit(pWav, drwav__on_read_memory, drwav__on_seek_memory, pWav, pAllocationCallbacks)) { + if (!drwav_preinit(pWav, drwav__on_read_memory, drwav__on_seek_memory, drwav__on_tell_memory, pWav, pAllocationCallbacks)) { return DRWAV_FALSE; } @@ -5475,7 +5632,7 @@ DRWAV_API drwav_bool32 drwav_init_memory_with_metadata(drwav* pWav, const void* return DRWAV_FALSE; } - if (!drwav_preinit(pWav, drwav__on_read_memory, drwav__on_seek_memory, pWav, pAllocationCallbacks)) { + if (!drwav_preinit(pWav, drwav__on_read_memory, drwav__on_seek_memory, drwav__on_tell_memory, pWav, pAllocationCallbacks)) { return DRWAV_FALSE; } @@ -5565,25 +5722,25 @@ DRWAV_API drwav_result drwav_uninit(drwav* pWav) if (pWav->onSeek && !pWav->isSequentialWrite) { if (pWav->container == drwav_container_riff) { /* The "RIFF" chunk size. */ - if (pWav->onSeek(pWav->pUserData, 4, drwav_seek_origin_start)) { + if (pWav->onSeek(pWav->pUserData, 4, DRWAV_SEEK_SET)) { drwav_uint32 riffChunkSize = drwav__riff_chunk_size_riff(pWav->dataChunkDataSize, pWav->pMetadata, pWav->metadataCount); drwav__write_u32ne_to_le(pWav, riffChunkSize); } /* The "data" chunk size. */ - if (pWav->onSeek(pWav->pUserData, (int)pWav->dataChunkDataPos - 4, drwav_seek_origin_start)) { + if (pWav->onSeek(pWav->pUserData, (int)pWav->dataChunkDataPos - 4, DRWAV_SEEK_SET)) { drwav_uint32 dataChunkSize = drwav__data_chunk_size_riff(pWav->dataChunkDataSize); drwav__write_u32ne_to_le(pWav, dataChunkSize); } } else if (pWav->container == drwav_container_w64) { /* The "RIFF" chunk size. */ - if (pWav->onSeek(pWav->pUserData, 16, drwav_seek_origin_start)) { + if (pWav->onSeek(pWav->pUserData, 16, DRWAV_SEEK_SET)) { drwav_uint64 riffChunkSize = drwav__riff_chunk_size_w64(pWav->dataChunkDataSize); drwav__write_u64ne_to_le(pWav, riffChunkSize); } /* The "data" chunk size. */ - if (pWav->onSeek(pWav->pUserData, (int)pWav->dataChunkDataPos - 8, drwav_seek_origin_start)) { + if (pWav->onSeek(pWav->pUserData, (int)pWav->dataChunkDataPos - 8, DRWAV_SEEK_SET)) { drwav_uint64 dataChunkSize = drwav__data_chunk_size_w64(pWav->dataChunkDataSize); drwav__write_u64ne_to_le(pWav, dataChunkSize); } @@ -5592,13 +5749,13 @@ DRWAV_API drwav_result drwav_uninit(drwav* pWav) int ds64BodyPos = 12 + 8; /* The "RIFF" chunk size. */ - if (pWav->onSeek(pWav->pUserData, ds64BodyPos + 0, drwav_seek_origin_start)) { + if (pWav->onSeek(pWav->pUserData, ds64BodyPos + 0, DRWAV_SEEK_SET)) { drwav_uint64 riffChunkSize = drwav__riff_chunk_size_rf64(pWav->dataChunkDataSize, pWav->pMetadata, pWav->metadataCount); drwav__write_u64ne_to_le(pWav, riffChunkSize); } /* The "data" chunk size. */ - if (pWav->onSeek(pWav->pUserData, ds64BodyPos + 8, drwav_seek_origin_start)) { + if (pWav->onSeek(pWav->pUserData, ds64BodyPos + 8, DRWAV_SEEK_SET)) { drwav_uint64 dataChunkSize = drwav__data_chunk_size_rf64(pWav->dataChunkDataSize); drwav__write_u64ne_to_le(pWav, dataChunkSize); } @@ -5663,7 +5820,7 @@ DRWAV_API size_t drwav_read_raw(drwav* pWav, size_t bytesToRead, void* pBufferOu bytesToSeek = 0x7FFFFFFF; } - if (pWav->onSeek(pWav->pUserData, (int)bytesToSeek, drwav_seek_origin_current) == DRWAV_FALSE) { + if (pWav->onSeek(pWav->pUserData, (int)bytesToSeek, DRWAV_SEEK_CUR) == DRWAV_FALSE) { break; } @@ -5810,7 +5967,7 @@ DRWAV_PRIVATE drwav_bool32 drwav_seek_to_first_pcm_frame(drwav* pWav) return DRWAV_FALSE; /* No seeking in write mode. */ } - if (!pWav->onSeek(pWav->pUserData, (int)pWav->dataChunkDataPos, drwav_seek_origin_start)) { + if (!pWav->onSeek(pWav->pUserData, (int)pWav->dataChunkDataPos, DRWAV_SEEK_SET)) { return DRWAV_FALSE; } @@ -5928,7 +6085,7 @@ DRWAV_API drwav_bool32 drwav_seek_to_pcm_frame(drwav* pWav, drwav_uint64 targetF while (offset > 0) { int offset32 = ((offset > INT_MAX) ? INT_MAX : (int)offset); - if (!pWav->onSeek(pWav->pUserData, offset32, drwav_seek_origin_current)) { + if (!pWav->onSeek(pWav->pUserData, offset32, DRWAV_SEEK_CUR)) { return DRWAV_FALSE; } @@ -6101,6 +6258,13 @@ DRWAV_PRIVATE drwav_uint64 drwav_read_pcm_frames_s16__msadpcm(drwav* pWav, drwav { drwav_uint64 totalFramesRead = 0; + static drwav_int32 adaptationTable[] = { + 230, 230, 230, 230, 307, 409, 512, 614, + 768, 614, 512, 409, 307, 230, 230, 230 + }; + static drwav_int32 coeff1Table[] = { 256, 512, 0, 192, 240, 460, 392 }; + static drwav_int32 coeff2Table[] = { 0, -256, 0, 64, 0, -208, -232 }; + DRWAV_ASSERT(pWav != NULL); DRWAV_ASSERT(framesToRead > 0); @@ -6126,6 +6290,11 @@ DRWAV_PRIVATE drwav_uint64 drwav_read_pcm_frames_s16__msadpcm(drwav* pWav, drwav pWav->msadpcm.cachedFrames[2] = pWav->msadpcm.prevFrames[0][0]; pWav->msadpcm.cachedFrames[3] = pWav->msadpcm.prevFrames[0][1]; pWav->msadpcm.cachedFrameCount = 2; + + /* The predictor is used as an index into coeff1Table so we'll need to validate to ensure it never overflows. */ + if (pWav->msadpcm.predictor[0] >= drwav_countof(coeff1Table)) { + return totalFramesRead; /* Invalid file. */ + } } else { /* Stereo. */ drwav_uint8 header[14]; @@ -6148,6 +6317,11 @@ DRWAV_PRIVATE drwav_uint64 drwav_read_pcm_frames_s16__msadpcm(drwav* pWav, drwav pWav->msadpcm.cachedFrames[2] = pWav->msadpcm.prevFrames[0][1]; pWav->msadpcm.cachedFrames[3] = pWav->msadpcm.prevFrames[1][1]; pWav->msadpcm.cachedFrameCount = 2; + + /* The predictor is used as an index into coeff1Table so we'll need to validate to ensure it never overflows. */ + if (pWav->msadpcm.predictor[0] >= drwav_countof(coeff1Table) || pWav->msadpcm.predictor[1] >= drwav_countof(coeff2Table)) { + return totalFramesRead; /* Invalid file. */ + } } } @@ -6181,13 +6355,6 @@ DRWAV_PRIVATE drwav_uint64 drwav_read_pcm_frames_s16__msadpcm(drwav* pWav, drwav if (pWav->msadpcm.bytesRemainingInBlock == 0) { continue; } else { - static drwav_int32 adaptationTable[] = { - 230, 230, 230, 230, 307, 409, 512, 614, - 768, 614, 512, 409, 307, 230, 230, 230 - }; - static drwav_int32 coeff1Table[] = { 256, 512, 0, 192, 240, 460, 392 }; - static drwav_int32 coeff2Table[] = { 0, -256, 0, 64, 0, -208, -232 }; - drwav_uint8 nibbles; drwav_int32 nibble0; drwav_int32 nibble1; @@ -6320,7 +6487,7 @@ DRWAV_PRIVATE drwav_uint64 drwav_read_pcm_frames_s16__ima(drwav* pWav, drwav_uin pWav->ima.bytesRemainingInBlock = pWav->fmt.blockAlign - sizeof(header); if (header[2] >= drwav_countof(stepTable)) { - pWav->onSeek(pWav->pUserData, pWav->ima.bytesRemainingInBlock, drwav_seek_origin_current); + pWav->onSeek(pWav->pUserData, pWav->ima.bytesRemainingInBlock, DRWAV_SEEK_CUR); pWav->ima.bytesRemainingInBlock = 0; return totalFramesRead; /* Invalid data. */ } @@ -6338,7 +6505,7 @@ DRWAV_PRIVATE drwav_uint64 drwav_read_pcm_frames_s16__ima(drwav* pWav, drwav_uin pWav->ima.bytesRemainingInBlock = pWav->fmt.blockAlign - sizeof(header); if (header[2] >= drwav_countof(stepTable) || header[6] >= drwav_countof(stepTable)) { - pWav->onSeek(pWav->pUserData, pWav->ima.bytesRemainingInBlock, drwav_seek_origin_current); + pWav->onSeek(pWav->pUserData, pWav->ima.bytesRemainingInBlock, DRWAV_SEEK_CUR); pWav->ima.bytesRemainingInBlock = 0; return totalFramesRead; /* Invalid data. */ } @@ -8006,7 +8173,7 @@ DRWAV_PRIVATE drwav_int32* drwav__read_pcm_frames_and_close_s32(drwav* pWav, uns -DRWAV_API drwav_int16* drwav_open_and_read_pcm_frames_s16(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut, const drwav_allocation_callbacks* pAllocationCallbacks) +DRWAV_API drwav_int16* drwav_open_and_read_pcm_frames_s16(drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_tell_proc onTell, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut, const drwav_allocation_callbacks* pAllocationCallbacks) { drwav wav; @@ -8020,14 +8187,14 @@ DRWAV_API drwav_int16* drwav_open_and_read_pcm_frames_s16(drwav_read_proc onRead *totalFrameCountOut = 0; } - if (!drwav_init(&wav, onRead, onSeek, pUserData, pAllocationCallbacks)) { + if (!drwav_init(&wav, onRead, onSeek, onTell, pUserData, pAllocationCallbacks)) { return NULL; } return drwav__read_pcm_frames_and_close_s16(&wav, channelsOut, sampleRateOut, totalFrameCountOut); } -DRWAV_API float* drwav_open_and_read_pcm_frames_f32(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut, const drwav_allocation_callbacks* pAllocationCallbacks) +DRWAV_API float* drwav_open_and_read_pcm_frames_f32(drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_tell_proc onTell, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut, const drwav_allocation_callbacks* pAllocationCallbacks) { drwav wav; @@ -8041,14 +8208,14 @@ DRWAV_API float* drwav_open_and_read_pcm_frames_f32(drwav_read_proc onRead, drwa *totalFrameCountOut = 0; } - if (!drwav_init(&wav, onRead, onSeek, pUserData, pAllocationCallbacks)) { + if (!drwav_init(&wav, onRead, onSeek, onTell, pUserData, pAllocationCallbacks)) { return NULL; } return drwav__read_pcm_frames_and_close_f32(&wav, channelsOut, sampleRateOut, totalFrameCountOut); } -DRWAV_API drwav_int32* drwav_open_and_read_pcm_frames_s32(drwav_read_proc onRead, drwav_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut, const drwav_allocation_callbacks* pAllocationCallbacks) +DRWAV_API drwav_int32* drwav_open_and_read_pcm_frames_s32(drwav_read_proc onRead, drwav_seek_proc onSeek, drwav_tell_proc onTell, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drwav_uint64* totalFrameCountOut, const drwav_allocation_callbacks* pAllocationCallbacks) { drwav wav; @@ -8062,7 +8229,7 @@ DRWAV_API drwav_int32* drwav_open_and_read_pcm_frames_s32(drwav_read_proc onRead *totalFrameCountOut = 0; } - if (!drwav_init(&wav, onRead, onSeek, pUserData, pAllocationCallbacks)) { + if (!drwav_init(&wav, onRead, onSeek, onTell, pUserData, pAllocationCallbacks)) { return NULL; } @@ -8350,6 +8517,27 @@ DRWAV_API drwav_bool32 drwav_fourcc_equal(const drwav_uint8* a, const char* b) /* REVISION HISTORY ================ +v0.14.0 - TBD + - API CHANGE: Seek origin enums have been renamed to the following: + - drwav_seek_origin_start -> DRWAV_SEEK_SET + - drwav_seek_origin_current -> DRWAV_SEEK_CUR + - DRWAV_SEEK_END (new) + - API CHANGE: A new seek origin has been added to allow seeking from the end of the file. If you implement your own `onSeek` callback, you must now handle `DRWAV_SEEK_END`. If you only use `*_init_file()` or `*_init_memory()`, you need not change anything. + - API CHANGE: An `onTell` callback has been added to the following functions: + - drwav_init() + - drwav_init_ex() + - drwav_init_with_metadata() + - drwav_open_and_read_pcm_frames_s16() + - drwav_open_and_read_pcm_frames_f32() + - drwav_open_and_read_pcm_frames_s32() + - API CHANGE: The `firstSampleByteOffset`, `lastSampleByteOffset` and `sampleByteOffset` members of `drwav_cue_point` have been renamed to `firstSampleOffset`, `lastSampleOffset` and `sampleOffset`, respectively. + - Fix a static analysis warning. + - Fix compilation for AIX OS. + +v0.13.17 - 2024-12-17 + - Fix a possible crash when reading from MS-ADPCM encoded files. + - Improve detection of ARM64EC + v0.13.16 - 2024-02-27 - Fix a Wdouble-promotion warning. From e91a3697ffce4c51c5805278a1703bf90286f3bf Mon Sep 17 00:00:00 2001 From: Jordan Zedeck <98184287+zedeckj@users.noreply.github.com> Date: Sun, 6 Jul 2025 01:59:03 -0400 Subject: [PATCH 022/328] Fixed typo --- examples/text/text_codepoints_loading.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/text/text_codepoints_loading.c b/examples/text/text_codepoints_loading.c index aa9f7bb76..a176148ea 100644 --- a/examples/text/text_codepoints_loading.c +++ b/examples/text/text_codepoints_loading.c @@ -108,7 +108,7 @@ int main(void) } else { - // Draw provided text with laoded font, containing all required codepoint glyphs + // Draw provided text with loaded font, containing all required codepoint glyphs DrawTextEx(font, text, (Vector2) { 160, 110 }, 48, 5, BLACK); } From 79c29cbe247a3977ff5c5327b9b8d4f4d79ea51c Mon Sep 17 00:00:00 2001 From: jonathandw743 Date: Sun, 6 Jul 2025 11:36:44 +0100 Subject: [PATCH 023/328] fixed compile error for PLATFORM sdl --- src/platforms/rcore_desktop_sdl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platforms/rcore_desktop_sdl.c b/src/platforms/rcore_desktop_sdl.c index 60753caf4..59f286307 100644 --- a/src/platforms/rcore_desktop_sdl.c +++ b/src/platforms/rcore_desktop_sdl.c @@ -1612,7 +1612,7 @@ void PollInputEvents(void) unsigned int codepoint = (unsigned int)SDL_StepUTF8(&event.text.text, textLen); #else int codepointSize = 0; - codepoint = GetCodepointNextSDL(event.text.text, &codepointSize); + int codepoint = GetCodepointNextSDL(event.text.text, &codepointSize); #endif CORE.Input.Keyboard.charPressedQueue[CORE.Input.Keyboard.charPressedQueueCount] = codepoint; CORE.Input.Keyboard.charPressedQueueCount++; From de62be0ec5695e849a0f0c56aa72b7c64b2442ab Mon Sep 17 00:00:00 2001 From: katonar Date: Mon, 7 Jul 2025 17:28:23 +0200 Subject: [PATCH 024/328] - created complier flag SUPPORT_DRM_CACHE, to enable triple buffered DRM caching --- src/config.h | 5 +++++ src/platforms/rcore_drm.c | 42 ++++++++++++++++++++++++++++++++++++--- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/src/config.h b/src/config.h index dc6cc5893..0fd685e7a 100644 --- a/src/config.h +++ b/src/config.h @@ -299,4 +299,9 @@ //------------------------------------------------------------------------------------ #define MAX_TRACELOG_MSG_LENGTH 256 // Max length of one trace-log message +//DRM configuration +#if defined(PLATFORM_DRM) +//#define SUPPORT_DRM_CACHE 1 //enable triple buffered DRM caching +#endif //PLATFORM_DRM + #endif // CONFIG_H diff --git a/src/platforms/rcore_drm.c b/src/platforms/rcore_drm.c index 9aebe6cf0..33b5e2a05 100644 --- a/src/platforms/rcore_drm.c +++ b/src/platforms/rcore_drm.c @@ -71,6 +71,7 @@ #include "EGL/egl.h" // Native platform windowing system interface #include "EGL/eglext.h" // EGL extensions +#if defined(SUPPORT_DRM_CACHE) #include // for drmHandleEvent poll #include //for EBUSY, EAGAIN @@ -86,6 +87,8 @@ static volatile int fbCacheCount = 0; static volatile bool pendingFlip = false; static bool crtcSet = false; +#endif //SUPPORT_DRM_CACHE + #ifndef EGL_OPENGL_ES3_BIT #define EGL_OPENGL_ES3_BIT 0x40 #endif @@ -232,7 +235,6 @@ static const short linuxToRaylibMap[KEYMAP_SIZE] = { //---------------------------------------------------------------------------------- // Module Internal Functions Declaration //---------------------------------------------------------------------------------- -int InitSwapScreenBuffer(void); int InitPlatform(void); // Initialize platform (graphics, inputs and more) void ClosePlatform(void); // Close platform @@ -567,6 +569,7 @@ void DisableCursor(void) CORE.Input.Mouse.cursorHidden = true; } +#if defined(SUPPORT_DRM_CACHE) static void drm_fb_destroy_callback(struct gbm_bo *bo, void *data) { uint32_t fb_id = (uintptr_t)data; // Remove from cache @@ -769,7 +772,37 @@ void SwapScreenBuffer() { loopCnt = 0; } } +#else //SUPPORT_DRM_CACHE is not defined +// Swap back buffer with front buffer (screen drawing) +void SwapScreenBuffer(void) +{ + eglSwapBuffers(platform.device, platform.surface); + if (!platform.gbmSurface || (-1 == platform.fd) || !platform.connector || !platform.crtc) TRACELOG(LOG_ERROR, "DISPLAY: DRM initialization failed to swap"); + + struct gbm_bo *bo = gbm_surface_lock_front_buffer(platform.gbmSurface); + if (!bo) TRACELOG(LOG_ERROR, "DISPLAY: Failed GBM to lock front buffer"); + + uint32_t fb = 0; + int result = drmModeAddFB(platform.fd, platform.connector->modes[platform.modeIndex].hdisplay, platform.connector->modes[platform.modeIndex].vdisplay, 24, 32, gbm_bo_get_stride(bo), gbm_bo_get_handle(bo).u32, &fb); + if (result != 0) TRACELOG(LOG_ERROR, "DISPLAY: drmModeAddFB() failed with result: %d", result); + + result = drmModeSetCrtc(platform.fd, platform.crtc->crtc_id, fb, 0, 0, &platform.connector->connector_id, 1, &platform.connector->modes[platform.modeIndex]); + if (result != 0) TRACELOG(LOG_ERROR, "DISPLAY: drmModeSetCrtc() failed with result: %d", result); + + if (platform.prevFB) + { + result = drmModeRmFB(platform.fd, platform.prevFB); + if (result != 0) TRACELOG(LOG_ERROR, "DISPLAY: drmModeRmFB() failed with result: %d", result); + } + + platform.prevFB = fb; + + if (platform.prevBO) gbm_surface_release_buffer(platform.gbmSurface, platform.prevBO); + + platform.prevBO = bo; +} +#endif //SUPPORT_DRM_CACHE //---------------------------------------------------------------------------------- // Module Functions Definition: Misc //---------------------------------------------------------------------------------- @@ -1099,8 +1132,7 @@ int InitPlatform(void) EGL_BLUE_SIZE, 8, // BLUE color bit depth (alternative: 5) EGL_ALPHA_SIZE, 8, // ALPHA bit depth (required for transparent framebuffer) //EGL_TRANSPARENT_TYPE, EGL_NONE, // Request transparent framebuffer (EGL_TRANSPARENT_RGB does not work on RPI) - //ToDo: verify this. In 5.5 it is 16, in master it was 24 - EGL_DEPTH_SIZE, 16, // Depth buffer size (Required to use Depth testing!) + EGL_DEPTH_SIZE, 24, // Depth buffer size (Required to use Depth testing!) //EGL_STENCIL_SIZE, 8, // Stencil buffer size EGL_SAMPLE_BUFFERS, sampleBuffer, // Activate MSAA EGL_SAMPLES, samples, // 4x Antialiasing if activated (Free on MALI GPUs) @@ -1273,13 +1305,17 @@ int InitPlatform(void) CORE.Storage.basePath = GetWorkingDirectory(); //---------------------------------------------------------------------------- +#if defined(SUPPORT_DRM_CACHE) if(InitSwapScreenBuffer() == 0) { TRACELOG(LOG_INFO, "PLATFORM: DRM: Initialized successfully"); return 0; } else { +#endif//SUPPORT_DRM_CACHE TRACELOG(LOG_INFO, "PLATFORM: DRM: Initialized failed"); +#if defined(SUPPORT_DRM_CACHE) return -1; } +#endif //SUPPORT_DRM_CACHE } From 5b182139ae3e3223398af825fec8082e5a98f748 Mon Sep 17 00:00:00 2001 From: katonar Date: Mon, 7 Jul 2025 17:55:32 +0200 Subject: [PATCH 025/328] - implementing Raylib coding convention --- src/platforms/rcore_drm.c | 45 ++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/platforms/rcore_drm.c b/src/platforms/rcore_drm.c index 33b5e2a05..09684291c 100644 --- a/src/platforms/rcore_drm.c +++ b/src/platforms/rcore_drm.c @@ -79,10 +79,10 @@ typedef struct { struct gbm_bo *bo; - uint32_t fb_id; // DRM framebuffer ID + uint32_t fbId; // DRM framebuffer ID } FramebufferCache; -static FramebufferCache fbCache[MAX_CACHED_BOS]; +static FramebufferCache fbCache[MAX_CACHED_BOS] = {0}; static volatile int fbCacheCount = 0; static volatile bool pendingFlip = false; static bool crtcSet = false; @@ -570,13 +570,14 @@ void DisableCursor(void) } #if defined(SUPPORT_DRM_CACHE) -static void drm_fb_destroy_callback(struct gbm_bo *bo, void *data) { - uint32_t fb_id = (uintptr_t)data; +//callback to destroy cached framebuffer, set by gbm_bo_set_user_data() +static void DestroyFrameBufferCallback(struct gbm_bo *bo, void *data) { + uint32_t fbId = (uintptr_t)data; // Remove from cache for (int i = 0; i < fbCacheCount; i++) { if (fbCache[i].bo == bo) { - TRACELOG(LOG_INFO, "DRM: fb removed %u", (uintptr_t)fb_id); - drmModeRmFB(platform.fd, fbCache[i].fb_id); // Release DRM FB + TRACELOG(LOG_INFO, "DRM: fb removed %u", (uintptr_t)fbId); + drmModeRmFB(platform.fd, fbCache[i].fbId); // Release DRM FB // Shift remaining entries for (int j = i; j < fbCacheCount - 1; j++) { fbCache[j] = fbCache[j + 1]; @@ -588,11 +589,11 @@ static void drm_fb_destroy_callback(struct gbm_bo *bo, void *data) { } // Create or retrieve cached DRM FB for BO -static uint32_t get_or_create_fb_for_bo(struct gbm_bo *bo) { +static uint32_t GetOrCreateFbForBo(struct gbm_bo *bo) { // Try to find existing cache entry for (int i = 0; i < fbCacheCount; i++) { if (fbCache[i].bo == bo) { - return fbCache[i].fb_id; + return fbCache[i].fbId; } } @@ -607,21 +608,21 @@ static uint32_t get_or_create_fb_for_bo(struct gbm_bo *bo) { uint32_t width = gbm_bo_get_width(bo); uint32_t height = gbm_bo_get_height(bo); - uint32_t fb_id; - if (drmModeAddFB(platform.fd, width, height, 24, 32, stride, handle, &fb_id)) { + uint32_t fbId; + if (drmModeAddFB(platform.fd, width, height, 24, 32, stride, handle, &fbId)) { //rmModeAddFB failed return 0; } // Store in cache - fbCache[fbCacheCount] = (FramebufferCache){ .bo = bo, .fb_id = fb_id }; + fbCache[fbCacheCount] = (FramebufferCache){ .bo = bo, .fbId = fbId }; fbCacheCount++; // Set destroy callback to auto-cleanup - gbm_bo_set_user_data(bo, (void*)(uintptr_t)fb_id, drm_fb_destroy_callback); + gbm_bo_set_user_data(bo, (void*)(uintptr_t)fbId, DestroyFrameBufferCallback); - TRACELOG(LOG_INFO, "DRM: added new bo %u" , (uintptr_t)fb_id); - return fb_id; + TRACELOG(LOG_INFO, "DRM: added new bo %u" , (uintptr_t)fbId); + return fbId; } // Renders a blank frame to allocate initial buffers @@ -652,14 +653,14 @@ int InitSwapScreenBuffer() { } // Create FB for first buffer - uint32_t fb_id = get_or_create_fb_for_bo(bo); - if (!fb_id) { + uint32_t fbId = GetOrCreateFbForBo(bo); + if (!fbId) { gbm_surface_release_buffer(platform.gbmSurface, bo); return -1; } // Initial CRTC setup - if (drmModeSetCrtc(platform.fd, platform.crtc->crtc_id, fb_id, + if (drmModeSetCrtc(platform.fd, platform.crtc->crtc_id, fbId, 0, 0, &platform.connector->connector_id, 1, &platform.connector->modes[platform.modeIndex])) { TRACELOG(LOG_ERROR, "Initial CRTC setup failed: %s", strerror(errno)); @@ -675,7 +676,7 @@ int InitSwapScreenBuffer() { // Static page flip handler // this will be called once the drmModePageFlip() finished from the drmHandleEvent(platform.fd, &evctx); context -static void page_flip_handler(int fd, unsigned int frame, +static void PageFlipHandler(int fd, unsigned int frame, unsigned int sec, unsigned int usec, void *data) { (void)fd; (void)frame; (void)sec; (void)usec; // Unused @@ -701,7 +702,7 @@ void SwapScreenBuffer() { // Process pending events non-blocking drmEventContext evctx = { .version = DRM_EVENT_CONTEXT_VERSION, - .page_flip_handler = page_flip_handler + .page_flip_handler = PageFlipHandler }; struct pollfd pfd = { .fd = platform.fd, .events = POLLIN }; @@ -726,8 +727,8 @@ void SwapScreenBuffer() { } // Get FB ID (creates new one if needed) - uint32_t fb_id = get_or_create_fb_for_bo(next_bo); - if (!fb_id) { + uint32_t fbId = GetOrCreateFbForBo(next_bo); + if (!fbId) { gbm_surface_release_buffer(platform.gbmSurface, next_bo); errCnt[2]++; return; @@ -744,7 +745,7 @@ void SwapScreenBuffer() { * is rendered.. * returns immediately. */ - if (drmModePageFlip(platform.fd, platform.crtc->crtc_id, fb_id, + if (drmModePageFlip(platform.fd, platform.crtc->crtc_id, fbId, DRM_MODE_PAGE_FLIP_EVENT, platform.prevBO)) { if (errno == EBUSY) { //Display busy - skip flip From d4f09984acb427f5ab67ee49235546b01ad09199 Mon Sep 17 00:00:00 2001 From: Amy Wilder Date: Mon, 7 Jul 2025 21:51:27 -0400 Subject: [PATCH 026/328] Add safety notes to 'Update_' functions --- src/raudio.c | 2 ++ src/raylib.h | 6 +++--- src/rtextures.c | 7 +++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/raudio.c b/src/raudio.c index 2b6628a24..8929c9ef9 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -1033,6 +1033,8 @@ void UnloadSoundAlias(Sound alias) } // Update sound buffer with new data +// NOTE 1: data format must match sound.stream.sampleSize +// NOTE 2: frameCount must not exceed sound.frameCount void UpdateSound(Sound sound, const void *data, int frameCount) { if (sound.stream.buffer != NULL) diff --git a/src/raylib.h b/src/raylib.h index 7919db775..38b703e98 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -1422,8 +1422,8 @@ RLAPI bool IsTextureValid(Texture2D texture); RLAPI void UnloadTexture(Texture2D texture); // Unload texture from GPU memory (VRAM) RLAPI bool IsRenderTextureValid(RenderTexture2D target); // Check if a render texture is valid (loaded in GPU) RLAPI void UnloadRenderTexture(RenderTexture2D target); // Unload render texture from GPU memory (VRAM) -RLAPI void UpdateTexture(Texture2D texture, const void *pixels); // Update GPU texture with new data -RLAPI void UpdateTextureRec(Texture2D texture, Rectangle rec, const void *pixels); // Update GPU texture rectangle with new data +RLAPI void UpdateTexture(Texture2D texture, const void *pixels); // Update GPU texture with new data (pixels should be able to fill texture) +RLAPI void UpdateTextureRec(Texture2D texture, Rectangle rec, const void *pixels); // Update GPU texture rectangle with new data (pixels and rec should fit in texture) // Texture configuration functions RLAPI void GenTextureMipmaps(Texture2D *texture); // Generate GPU mipmaps for a texture @@ -1644,7 +1644,7 @@ RLAPI Sound LoadSound(const char *fileName); // Load so RLAPI Sound LoadSoundFromWave(Wave wave); // Load sound from wave data RLAPI Sound LoadSoundAlias(Sound source); // Create a new sound that shares the same sample data as the source sound, does not own the sound data RLAPI bool IsSoundValid(Sound sound); // Checks if a sound is valid (data loaded and buffers initialized) -RLAPI void UpdateSound(Sound sound, const void *data, int sampleCount); // Update sound buffer with new data +RLAPI void UpdateSound(Sound sound, const void *data, int sampleCount); // Update sound buffer with new data (data and frame count should fit in sound) RLAPI void UnloadWave(Wave wave); // Unload wave data RLAPI void UnloadSound(Sound sound); // Unload sound RLAPI void UnloadSoundAlias(Sound alias); // Unload a sound alias (does not deallocate sample data) diff --git a/src/rtextures.c b/src/rtextures.c index ee116b0e5..337d01b1d 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -4337,14 +4337,17 @@ void UnloadRenderTexture(RenderTexture2D target) } // Update GPU texture with new data -// NOTE: pixels data must match texture.format +// NOTE 1: pixels data must match texture.format +// NOTE 2: pixels data must contain at least as many pixels as texture void UpdateTexture(Texture2D texture, const void *pixels) { rlUpdateTexture(texture.id, 0, 0, texture.width, texture.height, texture.format, pixels); } // Update GPU texture rectangle with new data -// NOTE: pixels data must match texture.format +// NOTE 1: pixels data must match texture.format +// NOTE 2: pixels data must contain as many pixels as rec contains +// NOTE 3: rec must fit completely within texture's width and height void UpdateTextureRec(Texture2D texture, Rectangle rec, const void *pixels) { rlUpdateTexture(texture.id, (int)rec.x, (int)rec.y, (int)rec.width, (int)rec.height, texture.format, pixels); From 9f6d37ecb4774a5f1f00c53fd85dfc15db69467b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 8 Jul 2025 01:51:52 +0000 Subject: [PATCH 027/328] Update raylib_api.* by CI --- parser/output/raylib_api.json | 6 +++--- parser/output/raylib_api.lua | 6 +++--- parser/output/raylib_api.txt | 6 +++--- parser/output/raylib_api.xml | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/parser/output/raylib_api.json b/parser/output/raylib_api.json index f5872ec8a..2fddc75e7 100644 --- a/parser/output/raylib_api.json +++ b/parser/output/raylib_api.json @@ -8483,7 +8483,7 @@ }, { "name": "UpdateTexture", - "description": "Update GPU texture with new data", + "description": "Update GPU texture with new data (pixels should be able to fill texture)", "returnType": "void", "params": [ { @@ -8498,7 +8498,7 @@ }, { "name": "UpdateTextureRec", - "description": "Update GPU texture rectangle with new data", + "description": "Update GPU texture rectangle with new data (pixels and rec should fit in texture)", "returnType": "void", "params": [ { @@ -11465,7 +11465,7 @@ }, { "name": "UpdateSound", - "description": "Update sound buffer with new data", + "description": "Update sound buffer with new data (data and frame count should fit in sound)", "returnType": "void", "params": [ { diff --git a/parser/output/raylib_api.lua b/parser/output/raylib_api.lua index 81dd7f932..49e2e1f47 100644 --- a/parser/output/raylib_api.lua +++ b/parser/output/raylib_api.lua @@ -6242,7 +6242,7 @@ return { }, { name = "UpdateTexture", - description = "Update GPU texture with new data", + description = "Update GPU texture with new data (pixels should be able to fill texture)", returnType = "void", params = { {type = "Texture2D", name = "texture"}, @@ -6251,7 +6251,7 @@ return { }, { name = "UpdateTextureRec", - description = "Update GPU texture rectangle with new data", + description = "Update GPU texture rectangle with new data (pixels and rec should fit in texture)", returnType = "void", params = { {type = "Texture2D", name = "texture"}, @@ -7850,7 +7850,7 @@ return { }, { name = "UpdateSound", - description = "Update sound buffer with new data", + description = "Update sound buffer with new data (data and frame count should fit in sound)", returnType = "void", params = { {type = "Sound", name = "sound"}, diff --git a/parser/output/raylib_api.txt b/parser/output/raylib_api.txt index c74a79a5f..a92a96de3 100644 --- a/parser/output/raylib_api.txt +++ b/parser/output/raylib_api.txt @@ -3255,13 +3255,13 @@ Function 362: UnloadRenderTexture() (1 input parameters) Function 363: UpdateTexture() (2 input parameters) Name: UpdateTexture Return type: void - Description: Update GPU texture with new data + Description: Update GPU texture with new data (pixels should be able to fill texture) Param[1]: texture (type: Texture2D) Param[2]: pixels (type: const void *) Function 364: UpdateTextureRec() (3 input parameters) Name: UpdateTextureRec Return type: void - Description: Update GPU texture rectangle with new data + Description: Update GPU texture rectangle with new data (pixels and rec should fit in texture) Param[1]: texture (type: Texture2D) Param[2]: rec (type: Rectangle) Param[3]: pixels (type: const void *) @@ -4383,7 +4383,7 @@ Function 528: IsSoundValid() (1 input parameters) Function 529: UpdateSound() (3 input parameters) Name: UpdateSound Return type: void - Description: Update sound buffer with new data + Description: Update sound buffer with new data (data and frame count should fit in sound) Param[1]: sound (type: Sound) Param[2]: data (type: const void *) Param[3]: sampleCount (type: int) diff --git a/parser/output/raylib_api.xml b/parser/output/raylib_api.xml index b7af0c41a..e9c83ad9c 100644 --- a/parser/output/raylib_api.xml +++ b/parser/output/raylib_api.xml @@ -2138,11 +2138,11 @@ - + - + @@ -2928,7 +2928,7 @@ - + From 510dc763e98edf494b01d8c0e8d7318b593375e6 Mon Sep 17 00:00:00 2001 From: sir-irk Date: Tue, 8 Jul 2025 05:05:30 -0500 Subject: [PATCH 028/328] adding normal map example --- examples/Makefile | 1 + examples/Makefile.Web | 1 + .../resources/shaders/glsl100/normalmap.fs | 64 +++++++ .../resources/shaders/glsl100/normalmap.vs | 76 ++++++++ .../resources/shaders/glsl120/normalmap.fs | 62 +++++++ .../resources/shaders/glsl120/normalmap.vs | 76 ++++++++ .../resources/shaders/glsl330/normalmap.fs | 67 +++++++ .../resources/shaders/glsl330/normalmap.vs | 48 +++++ examples/shaders/resources/tiles_diffuse.png | Bin 0 -> 540633 bytes examples/shaders/resources/tiles_normal.png | Bin 0 -> 679312 bytes examples/shaders/shaders_normalmap.c | 171 ++++++++++++++++++ 11 files changed, 566 insertions(+) create mode 100644 examples/shaders/resources/shaders/glsl100/normalmap.fs create mode 100644 examples/shaders/resources/shaders/glsl100/normalmap.vs create mode 100644 examples/shaders/resources/shaders/glsl120/normalmap.fs create mode 100644 examples/shaders/resources/shaders/glsl120/normalmap.vs create mode 100644 examples/shaders/resources/shaders/glsl330/normalmap.fs create mode 100644 examples/shaders/resources/shaders/glsl330/normalmap.vs create mode 100644 examples/shaders/resources/tiles_diffuse.png create mode 100644 examples/shaders/resources/tiles_normal.png create mode 100644 examples/shaders/shaders_normalmap.c diff --git a/examples/Makefile b/examples/Makefile index 32a3a75ab..a77a7ce65 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -631,6 +631,7 @@ SHADERS = \ shaders/shaders_mesh_instancing \ shaders/shaders_model_shader \ shaders/shaders_multi_sample2d \ + shaders/shaders_normalmap \ shaders/shaders_palette_switch \ shaders/shaders_postprocessing \ shaders/shaders_raymarching \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 35ae70a18..267832d25 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -513,6 +513,7 @@ SHADERS = \ shaders/shaders_mesh_instancing \ shaders/shaders_model_shader \ shaders/shaders_multi_sample2d \ + shaders/shaders_normalmap \ shaders/shaders_palette_switch \ shaders/shaders_postprocessing \ shaders/shaders_raymarching \ diff --git a/examples/shaders/resources/shaders/glsl100/normalmap.fs b/examples/shaders/resources/shaders/glsl100/normalmap.fs new file mode 100644 index 000000000..02902a61f --- /dev/null +++ b/examples/shaders/resources/shaders/glsl100/normalmap.fs @@ -0,0 +1,64 @@ +#version 100 + +precision mediump float; + +// Input vertex attributes (from vertex shader) +varying vec3 fragPosition; +varying vec2 fragTexCoord; +varying vec3 fragNormal; //used for when normal mapping is toggled off +varying vec4 fragColor; +varying mat3 TBN; + +// Input uniform values +uniform sampler2D texture0; +uniform sampler2D normalMap; +uniform vec4 colDiffuse; +uniform vec3 viewPos; + +// NOTE: Add your custom variables here + +uniform vec3 lightPos; +uniform bool useNormalMap; +uniform float specularExponent; + +void main() +{ + vec4 texelColor = texture(texture0, vec2(fragTexCoord.x, fragTexCoord.y)); + vec3 specular = vec3(0.0); + vec3 viewDir = normalize(viewPos - fragPosition); + vec3 lightDir = normalize(lightPos - fragPosition); + + vec3 normal; + if (useNormalMap) + { + normal = texture(normalMap, vec2(fragTexCoord.x, fragTexCoord.y)).rgb; + + //Transform normal values to the range -1.0 ... 1.0 + normal = normalize(normal * 2.0 - 1.0); + + //Transform the normal from tangent-space to world-space for lighting calculation + normal = normalize(normal * TBN); + } + else + { + normal = normalize(fragNormal); + } + + vec4 tint = colDiffuse * fragColor; + + vec3 lightColor = vec3(1.0, 1.0, 1.0); + float NdotL = max(dot(normal, lightDir), 0.0); + vec3 lightDot = lightColor * NdotL; + + float specCo = 0.0; + + if (NdotL > 0.0) specCo = pow(max(0.0, dot(viewDir, reflect(-lightDir, normal))), specularExponent); // 16 refers to shine + + specular += specCo; + + finalColor = (texelColor * ((tint + vec4(specular, 1.0)) * vec4(lightDot, 1.0))); + finalColor += texelColor * (vec4(1.0, 1.0, 1.0, 1.0) / 40.0) * tint; + + // Gamma correction + gl_FragColor = pow(finalColor, vec4(1.0 / 2.2)); +} diff --git a/examples/shaders/resources/shaders/glsl100/normalmap.vs b/examples/shaders/resources/shaders/glsl100/normalmap.vs new file mode 100644 index 000000000..072e0a6c2 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl100/normalmap.vs @@ -0,0 +1,76 @@ +#version 100 + +// Input vertex attributes +attribute vec3 vertexPosition; +attribute vec2 vertexTexCoord; +attribute vec3 vertexNormal; +attribute vec4 vertexTangent; +attribute vec4 vertexColor; + +// Input uniform values +uniform mat4 mvp; +uniform mat4 matModel; + +// Output vertex attributes (to fragment shader) +varying vec3 fragPosition; +varying vec2 fragTexCoord; +varying vec3 fragNormal; //used for when normal mapping is toggled off +varying vec4 fragColor; +varying mat3 TBN; + +// NOTE: Add your custom variables here + +// https://github.com/glslify/glsl-inverse +mat3 inverse(mat3 m) +{ + float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2]; + float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2]; + float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2]; + + float b01 = a22 * a11 - a12 * a21; + float b11 = -a22 * a10 + a12 * a20; + float b21 = a21 * a10 - a11 * a20; + + float det = a00 * b01 + a01 * b11 + a02 * b21; + + return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11), + b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10), + b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det; +} + +// https://github.com/glslify/glsl-transpose +mat3 transpose(mat3 m) +{ + return mat3(m[0][0], m[1][0], m[2][0], + m[0][1], m[1][1], m[2][1], + m[0][2], m[1][2], m[2][2]); +} + +void main() +{ + // Compute binormal from vertex normal and tangent. W component is the tangent handedness + vec3 vertexBinormal = cross(vertexNormal, vertexTangent.xyz) * vertexTangent.w; + + // Compute fragment normal based on normal transformations + mat3 normalMatrix = transpose(inverse(mat3(matModel))); + + // Compute fragment position based on model transformations + fragPosition = vec3(matModel * vec4(vertexPosition, 1.0)); + + //Create TBN matrix for transforming the normal map values from tangent-space to world-space + fragNormal = normalize(normalMatrix * vertexNormal); + + vec3 fragTangent = normalize(normalMatrix * vertexTangent.xyz); + fragTangent = normalize(fragTangent - dot(fragTangent, fragNormal) * fragNormal); + + vec3 fragBinormal = normalize(normalMatrix * vertexBinormal); + fragBinormal = cross(fragNormal, fragTangent); + + TBN = transpose(mat3(fragTangent, fragBinormal, fragNormal)); + + fragColor = vertexColor; + + fragTexCoord = vertexTexCoord; + + gl_Position = mvp * vec4(vertexPosition, 1.0); +} diff --git a/examples/shaders/resources/shaders/glsl120/normalmap.fs b/examples/shaders/resources/shaders/glsl120/normalmap.fs new file mode 100644 index 000000000..caeb4d5c1 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/normalmap.fs @@ -0,0 +1,62 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec3 fragPosition; +varying vec2 fragTexCoord; +varying vec3 fragNormal; //used for when normal mapping is toggled off +varying vec4 fragColor; +varying mat3 TBN; + +// Input uniform values +uniform sampler2D texture0; +uniform sampler2D normalMap; +uniform vec4 colDiffuse; +uniform vec3 viewPos; + +// NOTE: Add your custom variables here + +uniform vec3 lightPos; +uniform bool useNormalMap; +uniform float specularExponent; + +void main() +{ + vec4 texelColor = texture(texture0, vec2(fragTexCoord.x, fragTexCoord.y)); + vec3 specular = vec3(0.0); + vec3 viewDir = normalize(viewPos - fragPosition); + vec3 lightDir = normalize(lightPos - fragPosition); + + vec3 normal; + if (useNormalMap) + { + normal = texture(normalMap, vec2(fragTexCoord.x, fragTexCoord.y)).rgb; + + //Transform normal values to the range -1.0 ... 1.0 + normal = normalize(normal * 2.0 - 1.0); + + //Transform the normal from tangent-space to world-space for lighting calculation + normal = normalize(normal * TBN); + } + else + { + normal = normalize(fragNormal); + } + + vec4 tint = colDiffuse * fragColor; + + vec3 lightColor = vec3(1.0, 1.0, 1.0); + float NdotL = max(dot(normal, lightDir), 0.0); + vec3 lightDot = lightColor * NdotL; + + float specCo = 0.0; + + if (NdotL > 0.0) specCo = pow(max(0.0, dot(viewDir, reflect(-lightDir, normal))), specularExponent); // 16 refers to shine + + specular += specCo; + + finalColor = (texelColor * ((tint + vec4(specular, 1.0)) * vec4(lightDot, 1.0))); + finalColor += texelColor * (vec4(1.0, 1.0, 1.0, 1.0) / 40.0) * tint; + + // Gamma correction + gl_FragColor = pow(finalColor, vec4(1.0 / 2.2)); +} diff --git a/examples/shaders/resources/shaders/glsl120/normalmap.vs b/examples/shaders/resources/shaders/glsl120/normalmap.vs new file mode 100644 index 000000000..d8921a68f --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/normalmap.vs @@ -0,0 +1,76 @@ +#version 120 + +// Input vertex attributes +attribute vec3 vertexPosition; +attribute vec2 vertexTexCoord; +attribute vec3 vertexNormal; +attribute vec4 vertexTangent; +attribute vec4 vertexColor; + +// Input uniform values +uniform mat4 mvp; +uniform mat4 matModel; + +// Output vertex attributes (to fragment shader) +varying vec3 fragPosition; +varying vec2 fragTexCoord; +varying vec3 fragNormal; //used for when normal mapping is toggled off +varying vec4 fragColor; +varying mat3 TBN; + +// NOTE: Add your custom variables here + +// https://github.com/glslify/glsl-inverse +mat3 inverse(mat3 m) +{ + float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2]; + float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2]; + float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2]; + + float b01 = a22 * a11 - a12 * a21; + float b11 = -a22 * a10 + a12 * a20; + float b21 = a21 * a10 - a11 * a20; + + float det = a00 * b01 + a01 * b11 + a02 * b21; + + return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11), + b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10), + b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det; +} + +// https://github.com/glslify/glsl-transpose +mat3 transpose(mat3 m) +{ + return mat3(m[0][0], m[1][0], m[2][0], + m[0][1], m[1][1], m[2][1], + m[0][2], m[1][2], m[2][2]); +} + +void main() +{ + // Compute binormal from vertex normal and tangent. W component is the tangent handedness + vec3 vertexBinormal = cross(vertexNormal, vertexTangent.xyz) * vertexTangent.w; + + // Compute fragment normal based on normal transformations + mat3 normalMatrix = transpose(inverse(mat3(matModel))); + + // Compute fragment position based on model transformations + fragPosition = vec3(matModel * vec4(vertexPosition, 1.0)); + + //Create TBN matrix for transforming the normal map values from tangent-space to world-space + fragNormal = normalize(normalMatrix * vertexNormal); + + vec3 fragTangent = normalize(normalMatrix * vertexTangent.xyz); + fragTangent = normalize(fragTangent - dot(fragTangent, fragNormal) * fragNormal); + + vec3 fragBinormal = normalize(normalMatrix * vertexBinormal); + fragBinormal = cross(fragNormal, fragTangent); + + TBN = transpose(mat3(fragTangent, fragBinormal, fragNormal)); + + fragColor = vertexColor; + + fragTexCoord = vertexTexCoord; + + gl_Position = mvp * vec4(vertexPosition, 1.0); +} diff --git a/examples/shaders/resources/shaders/glsl330/normalmap.fs b/examples/shaders/resources/shaders/glsl330/normalmap.fs new file mode 100644 index 000000000..644130ab6 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl330/normalmap.fs @@ -0,0 +1,67 @@ +#version 330 + +// Input vertex attributes (from vertex shader) +in vec3 fragPosition; +in vec2 fragTexCoord; +in vec3 fragNormal; //used for when normal mapping is toggled off +in vec4 fragColor; + +// Input uniform values +uniform sampler2D texture0; +uniform sampler2D normalMap; +uniform vec4 colDiffuse; + +uniform vec3 viewPos; +uniform vec4 tintColor; + +uniform vec3 lightPos; +uniform bool useNormalMap; +uniform float specularExponent; + +// Output fragment color +out vec4 finalColor; + +in mat3 TBN; + +void main() +{ + vec4 texelColor = texture(texture0, vec2(fragTexCoord.x, fragTexCoord.y)); + vec3 specular = vec3(0.0); + vec3 viewDir = normalize(viewPos - fragPosition); + vec3 lightDir = normalize(lightPos - fragPosition); + + vec3 normal; + if (useNormalMap) + { + normal = texture(normalMap, vec2(fragTexCoord.x, fragTexCoord.y)).rgb; + + //Transform normal values to the range -1.0 ... 1.0 + normal = normalize(normal * 2.0 - 1.0); + + //Transform the normal from tangent-space to world-space for lighting calculation + normal = normalize(normal * TBN); + } + else + { + normal = normalize(fragNormal); + } + + vec4 tint = colDiffuse * fragColor; + + vec3 lightColor = vec3(1.0, 1.0, 1.0); + float NdotL = max(dot(normal, lightDir), 0.0); + vec3 lightDot = lightColor * NdotL; + + float specCo = 0.0; + + if (NdotL > 0.0) specCo = pow(max(0.0, dot(viewDir, reflect(-lightDir, normal))), specularExponent); // 16 refers to shine + + specular += specCo; + + finalColor = (texelColor * ((tint + vec4(specular, 1.0)) * vec4(lightDot, 1.0))); + finalColor += texelColor * (vec4(1.0, 1.0, 1.0, 1.0) / 40.0) * tint; + + // Gamma correction + finalColor = pow(finalColor, vec4(1.0 / 2.2)); + //finalColor = vec4(normal, 1.0); +} diff --git a/examples/shaders/resources/shaders/glsl330/normalmap.vs b/examples/shaders/resources/shaders/glsl330/normalmap.vs new file mode 100644 index 000000000..1e0a161b8 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl330/normalmap.vs @@ -0,0 +1,48 @@ +#version 330 + +// Input vertex attributes +in vec3 vertexPosition; +in vec2 vertexTexCoord; +in vec3 vertexNormal; +in vec4 vertexTangent; +in vec4 vertexColor; + +// Input uniform values +uniform mat4 mvp; +uniform mat4 matModel; + +// Output vertex attributes (to fragment shader) +out vec3 fragPosition; +out vec2 fragTexCoord; +out vec3 fragNormal; //used for when normal mapping is toggled off +out vec4 fragColor; +out mat3 TBN; + +void main() +{ + // Compute binormal from vertex normal and tangent. W component is the tangent handedness + vec3 vertexBinormal = cross(vertexNormal, vertexTangent.xyz) * vertexTangent.w; + + // Compute fragment normal based on normal transformations + mat3 normalMatrix = transpose(inverse(mat3(matModel))); + + // Compute fragment position based on model transformations + fragPosition = vec3(matModel * vec4(vertexPosition, 1.0)); + + //Create TBN matrix for transforming the normal map values from tangent-space to world-space + fragNormal = normalize(normalMatrix * vertexNormal); + + vec3 fragTangent = normalize(normalMatrix * vertexTangent.xyz); + fragTangent = normalize(fragTangent - dot(fragTangent, fragNormal) * fragNormal); + + vec3 fragBinormal = normalize(normalMatrix * vertexBinormal); + fragBinormal = cross(fragNormal, fragTangent); + + TBN = transpose(mat3(fragTangent, fragBinormal, fragNormal)); + + fragColor = vertexColor; + + fragTexCoord = vertexTexCoord; + + gl_Position = mvp * vec4(vertexPosition, 1.0); +} diff --git a/examples/shaders/resources/tiles_diffuse.png b/examples/shaders/resources/tiles_diffuse.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7b840354fc248d99d46eee19cbaa776b6fd130 GIT binary patch literal 540633 zcmV)BK*PU@P)guLjAFFL!?KUgjZk6IN(rUfd&{vwqPIVWlpGK8suG{6Jbv|gAA|-LGIF9vksuc!- z#=g@ybPA(bZ7+>es2~V5jH7mUJJq+FrZCa{(}VJ?)b;SL-@pE@EDp3RV~s)L_dgsO z1;L~&OO=;}nzq(3Od9)9MHVZJLbd&*FiO<*ogzg_vP755Swr6|2ttKnpspJvg&Kxd z%hg6fI7w5WaU7K-k)KWDs5nm4_J97_LH*c!UBh60{w#@9H?5*DQV>c}6nQO!z#pe^ zU@r#o2jevPcgJy3UL<0}7OR!&s`4Ir zSv)FXyjmc>GK z(`mWPHDIfn)O4c)j5UzoWwBWLnVPm$-w%qD*#GbQ-fNkqk@(?hX!Ly7>v#%us1xO} z6o;{fDG)oBrip?{-bdau%`z>Dg`b0c9Qszbs`0b3_I&1|NOU-zyzj%ncMJ;RP+=4) z3RwFu`t{deeBN320lQnR^&kHy|49GxU;OWSfBD^Kt|&7_VWK?Cl_ZJw=Zo?zRoC8Z zcU^r^8i(qqKw*@sZU?n(ulwCvZ8zw8xu_ool{sf#x;52zd+n9yneuX}JdORVhr>x} zoakC}7Dk0(XuI32SIYBLm&?sIfqk@9t)fUZg|SkeEu7R(k*0C5Zz-eRKIBr5ijqX* z7%D3=^T=V^$5G=r z*uLX5@!rQlsKfcAiXzjssuYE> zqA29ZdOwGu_d4*-m^l6jyPL*o_7j0LjDwEX#?Qo>F3ZC9m8O~Y`-93NpY0+D<~1Eh z75q#$sOv}Dwf88Eb*UTm!=y4#)DDBs?}QIlV4rZib!tcUcc->#{rUKY^|DY_X2Sf^ zG_(!iCxU>_4;&vp4mTzFLP?e@W8LtZ-DLabnfU+leDU+}%={Hcp&HKTIBLCKs&8A3 zL2O&evUrXSQLF@Ch>v3bgFsEwC`m%^cZ3g5GRGR?&^UG~<5AJ{u0xe8h?nZRTE|Oe zAN+8)v!AM}o4Sse7AQ|MEf$%gB=xhWAET{YQ>kk!HBGC!Zv5Xi+pYTQpfU+m)i;Q4{X%yS>U9MMUX>13I zQEWC_#bc+#rBYQ@S}m8lT`y{FkdcZc@`r!y-}U+Vvj#<)hECVI_hEnEALj!S$NoNI zM>O>srpX&ZfPOt5^|&sy+in$U^mh}~hmqJnutLhy)XxVX!1>v~V)Vn{!-B($!$1Ki zfk4e$<1}cu+i4nbT&032 z(&&R6_+4P#o!ey7;gxip-#|x?T*XaDIFV2kLyj8T1eca0pe^ z_bJDDb)jIL$0(W0dAN&sH5yxGeo=bzLh5WcR%RM4n}~)yws!DB|-{+cY*=wT&G^ z7KgTZ7CBU_I4un-yXI;T&EXHC7)0dX#r6gOOV{~32m-txe-R+6rqlUWD@zi^;iMR+ z6ohuvfOLXC;2U26Am~7_;p}9CDD~R2jy%==c=DbH0nl^uK1?GkIB5%rzElpB{8^Hw z-d}*k!~IrG-Ptw?q}T>P6r1AAWLcu29~=N#=c?@#2hw)Cu`RJ~r_(`~YwbPftYHxZ zl50C^QIx7~SLH>lG|hFs+-CbIO9!f9>eaTLZl{BTApn8jXAd|_L4@<{{5$wTYzu%1 z$O4q&kO{gCXRIi6t7}!wppTEef~3$7pLSXmiI!!qcA8XQZVq%wo-0=Gv&9}yfRU+F z4=79$MbqeW&G%JRt3{FOdcE0K_Cv2UD-7=QtZ<@&e?uzFJ}Xk~KaT#c?RsGV#+grIsi|9^G1mUy z`v?C}fBfVBV!u%}mBKW2lF2?2AMtC%5rDcA1;58h@&0hsKl)GqL;by70%Aqw*xx<$87iTr5FnjRK6KZj}{< z0v5IJl_i17vao~dyB1gL!~Q@2@n7m+|LcFHWsz&SUTCqtcd#Jaw*e8ny3T=_XC`11 zWU5=`&j*DQeAzHiAK4^}fTJN$kzr$)L7b|=P&wqmoF&9*tbhRBeGi6FsOnnjWB;MM zy9a}hVd(VV{}2D8R;z{n;-??H39Btx{?(iKC4gPvxiUNWu4`4~i5&naos6%m8?Dx> z`5l_hfg_kesFlGK8TV$h(GNfVXz&Ayi&*dLNsGlwIp~nz8v_+ZV&j0x$ns3r+eKqH zYO~(xc)e=>e$cHQ^dJ2P|E|{Cdqv+f*`p8q{>1k~H^P0xXhbc4VLfa1RGHiPrPWp#`{~zef)4ddC{%=ivQmUCw$pd2Pz*-?zPZ?e=fPxbBVi~iXk|8MWtm#3|M z_~DCIWo{e4T&~*Q@00_GY)_LNF`&KbI&C)_bv((0*WX{%29f^y=V$%Z zU;XI!F7iTMQ+w|S9t10xrLM(it&}CH>bg=yFdHY`u9a4sr9nQ-Uk3n-BGtD_m+QrA z4{)8cvS?;thTaYwkQ;}g&NucWRgxBFC}A4guJM_M^?7;us>A-^z_Bhf{q^7cL1|X{ z+ycM>H-HinhP%5v-7Z(QQ9Xe+FLXW~l|)iq;~!Fi1UlHTVfdazkmw{DgJ+*VfaUS< zu7`&w+cee1804`nP*GOfX?rK{{gFo6isW^7Ny^WcJGd z%C2n;oQRu%-rMD-^=@UmpZLA{U2EV4`XAn6@W_i`EUQ9ztgqpZ3mwpw_21dZFgIZA$~73Fm{3s=xREZt5RJv zI!;YprH=KDLhr%H`_VoVKC=JApaqFVKj?k`p@-ep&-J!H>X%=BQ(ay3fBuXAL;wEY z|0`W@u+h@P(oXez_ zmv=qf?-b(A0;xXT1X72F16}|848W%;n6zB2jDEb~000O6nc{^m%F5+;XEM{h9O#+8t+d_U>3X~BcD*_i`}F0D z)=*mjnJ`qGY)rotd9L+(BTyg<48T~e);gZf&SF1(`K-(NZ0C47pH!BqmK*3_GR;i= z2&PJvQ6}kU>NCkxXIcs)8wV#B8f%(L?@65IS}Y261Nm;FMFRB)&A(Jkpqm0^MWARg z=}Jk1ENd8?b&fcm$uo}fetGsYlKxRfsX!-nTM&bGKQ9}^w zd9ilR5vQpZDb#0grYg!(JEu$2=;8T`0R_wiwh$#Nolj@2cUyyxe7R7T7j|y-_3FKY zs>`!j-@d)+ho65k2!NSe@9ykaC`*vh609RYU7Bj06@I_$aPgT5f>h5>k1lcDZFV{w zKAhPvc6a`{cATB?a2_V+QVJ}w!PV?T-3Up4mw_Hzt7#nCtXe_E!RuEy}oF( zyHgrd(wY=SsRJM&s#vcTJJ82U%Z0|S)iT%^m>rKt@6~#{b{Xf_mp5mf_#iUhOVcVN z;CGV)nJMC7)b{>Pbu*|seyHgu17}*wI-{v!&a#r$8%|PIQf$4qD0AKh=n5}l0Y|E^VqEu;FXvyc4rGq?vn5Z0P zg?;bwa&}TT1ybKk$`^|{_)EH8t|}G_`-CZ&>3IULqQro!TrB+zQLr@FjN@E2&y?rt zM?mdlzbZxAf1FgVcSds>>PBl#cFA?C#;gr6PdHzFd000^&fH>f>_Lr^kEcc`gO9V%Y1Z)%nsY zDM}Rp`Xp37l`eUabe(QEhyQ*5&6L7BhD{nlR0E@U-ZzSq|d{>@(^T;^fzP;*vzUblc!CB?@{=vcX@bTdQa({oP zp=;FKu6DfCnP4se7Gx=8iPSg!%mKCaP@B!#NVKC4-?T~%1STKGq$t#PgW3jtfXpIL z?}Y_`cIIH1+UPsigZ8g4rh#|&kEV@bTzJ4g2VydD_|?8?6n2BrWy*o877T?DD)+TVGWa3$Jlrln!La zk9Yn0_MxK8HIex)N*xciCbSb8X9pWa>c&CIIC?!!=h;awK(u{p`ze#9vjk@+)cK-F z%SCA#wTmVPQm8x-{SC(!MCvIc#hKDH^1I()tCG~no`XbPakXO)YlAve51rSCJs=yN z)HJn&7F6qMwUU{yBKAJBNt_wzLYN22Aw?QHsPN}wSL?Jts$4BiX|K1`5qXb6b$jza zV-qlLXJ<2k?(TL5U_brzlh569yVLRQRb@qR}M=_Pf%&RCB#3T`Xq?jv6#{{c5dG4^L`NM;%Wm z4H^WSsF0d?=l2bxObPYcfNVWdtU+)4gFb)xqUw5f{gf;nb`I7NU$ES5eV)*r+^W`0 z!W1Q?A_h1$At5M}*tl*al& z+dNm6Pi8a-Zq(CZT#_VLbeFsAI8YZ)les(-M`rUlH)t|okl0UHjJg}NDhnqad}nnz zYy0$BQ`e}QU>2qG;a%IuXZs^4A6O~MmlfrcEYss^?Vx`+9<^94%n-pu@#6SIN>k0y zxeNn1SZr2G&?2GJN@M$sr{_=lXaD?vGcaTgN&2YY!;IYB?=(TfPm_}<05$P|GF=Av z%TsF%u&J~tU5aVYbYz8r@_GN^HEsIQU<}^`>q+c6$C1*V^t7Fm&ZsEt`|vxPMd<|7 z4ivnh z7S%zMMm7)-A9Zcek&$#a3!TU)c@Uh`aes78n9rj;K)r6Y+s)5WF7^2QS-Xb^)AH0v z3?$h6D`K+7hX8S#X&P!wJX-+8)7f#7^+UJuyX9)FBo1^rolSR{lC|h*ejk_#gdx

    %_%-d|o_JM-acTW=mO4|V74AqJiCv%_4wj#C}p4?ggx^F?*r8?95%1`vTl z`L4S=Xq;KFG>p9|cT3J(8rKG`ut@ljqFm3-fC*ah}JH?U%FIh^GpGb)BjXU!=aAV9H*WZT>x?Tz>q{hG3ufP22b$J_@=3v_n z3n=PY)C9ZJ^^KysOf zwTV*yJVBW60xto!u${glV;Yo|9M;@U39SSG3D2*o`i>YaPZDz>xcj^1fONOuqg9-xoQ7#Fsne~K)DdMDby@R z9??PN_|jepK=yi@{o8tNIvF+&CXN7sJ)(7Jhf&wVhq_7n^7P{NBt z>2$Jv!aPtiVm~NhEf=|RsBx@s>~;LuyIzky!G^*<0#G^Au5V-W(yZ+odL7S|Gtk*L z#`bYI6as$THf9+j&e+fz5Mj@VkkfMGq=-WX2q~8&khKF~eL2pIM}SZ}@!C?-eEIs# zzLJt7&yuCYnMjM(QtQ>yU=;=mo15$Jy?+1tqL2NXKHfk4vmdXo`uh7{6nVUYsqumAFAmCJ>8yE}g_!gaKDlx}g0>^J{FTtd7}jh}Lq;zZAs zW0ou1O_&zi+&y@`C=pWjz?ZD=?)=$^N-5i&4|@$^r2EZs783`PHVevzy%VVO@$47@ zYkfVQ%pzn_pv&cC|3(5IhgohB6q^A30cD3maE0N7i5Czxd{x!npsGedfjTj>5tGHD zVz%HRFC1tP{6txyhhnZ_a>#>$+J2%gY)sQ)OwO7rYI=jS8xSZ+@a2wEf!=>SM{Iv$M{`zBSFXZ{_O zoG4?{EH*;K2@w>Zo}P5NoGgs7jsRtR6ewS={aI`**%#z1#)4je44#9zyW7qN)AtTY ztQo<6xmxRbK4}Ss4qelA4)D;crta#-2Mv7!)HuN)3vy?%pvifi0yTZ7<=wrmhl33e z_5mhfwb`m{YTeFfBWuvLGu|jr8qcCgv;rJhP^be+f&i=2<#baH{Z-QSLB0Ro9U|1$ zv#fBPm5h(fo_b+2A@m;|MCv$HQIuZW5fU0mu2~R?viNp6+t}~!?{(hq)r@j|8d@<7 zVk_nWO|I3t1~@tpf$;f0o|PK9nV=+9MKGEI)1@#r02%@^A}xM~fQM7&z@nW%k#9j3 z*%EpNNoNj*0)yS5ZPf;WDP1xnK)~1Ee$(T2YsYbVdo$R8a>aR|-Ubj6R4H3*A0M>4 zzqgY{p`GGkchyQza!GCf>3c9>3Y1_X%XBoYU=;n zyRG*UpvwNzii0?7Q53d&+h5OKrFOnVQfU1AyK>s!Q50rd*z>p7i`SN4KESRNiNRjj zcUENQ)cxt&Nbm)*sm#TCtt>zzgU(>kdbQB&?ag})1;5zcTZl>53+qcTeEIcP3s8CA zB8+vcd$WXmuSI#z;zmtDqGGjFlFYpr)OgWe3`r~+BglMKX|5uhJ0D)ZeRHX3YFh8n z=HbaY9E6UI1$?nir;BDDb8;{yaj4v}5nBfWLxZr8V14Xb+Y!Jkj&RtVmq<4Ne~d<= z^)vHMBm{sOYeq;o$cFQo<$)2P?oF2m*_eS>o~o-u>lLUsAHq3^;+rVDwRL0=j*ypU zhow87&$emwDhd)UHye%hRm~WfImLId50~57=ivVF!TaTI8$evJR(u-z3hLnY3*DfpZS=DLP5E+bz=n3nHUG9!l&lTr;w-ZN|KX>f zbUGYnT?1toN)liJliJ%&={j?{ zX}wwb8PO>5jF;=l02I9gv^Rmbs;*jWHmgJ9D0&p9}T5ocnIkZ>!LXtIrMC;OTXa9>B6>S**9sh$S1}g^Kg=ws&>diuZ z`tc|A2=(aJBA&o@U0a_+fCZWQ$J^^1Pr^u9o+_APi(vs1ic_tZ02lV9ox%AyXkC{2 z`pYj$R%;8!=T5K5$>JJ)PgPkw9`?j6go}e>UIgb!7L5v&FT}Xd(EoXAQ3(q0Eec9n z?xMNg&Oa}ULe=*`(lxEAr4E{dPJ^y9g%`$%Z=i`X2hqxG*8l(@07*naR6T@TdAU|r zly2oi4T<{la5^i`YX=IPJzqcowUJnTns{MP$D7LpWS&s!h=1y)mP{+rmV^p)@&*ye zZs*3vPbdKCfq<8Y5}`{2Xj~MVF|vNOw_2|+CvCUeSyesCbg0{Cx0}xl%5xHpx*h$!^)Tt_)3f$(FK&U$)@$25PLx*5{rlcbUT*DBZ{a1j z2usCxv;Ldy+Vy8jl5w`Q{jr{jnXk}xvcKHy58?zyjZO>N%sNxx54)W~I0Cih_D(}x zDWpRLy@uJ*UaO}kuUqr}u5%D*w_bXk2g~(6cbgfAqnn~V72t?ayKXcFjeQD?2kxFW z(c9(ZauN0NB!&T)ORq2{fB1|BjPA0;i7GTc{&Tn6s=1vVNZ~)o-Z_5;Kq1>xi?B@BZ7r{aZaeJ=!uJI1*S%_ARiG6b6w}IE?eyH3nwmFvpjWU~@hm z-K$F-j+!KOPuD}Cd;kR0pT}XYJ5wq^^g>@N%GvKhie!&3T|#HxZf+j-oe z+s;Sb-QU@P(U}1C0-7c8!eHc!(&}KIgBb_`&b#mZfBGqLvaSQuK1Bw{=6AJq33LO{ zQxEEdk?^Kb0qr|yS<~34?ppo$ho7x5ryUS+B$*xcFoGyGFX***>hu$3hTn{i566p{ zl;g+unorxh#fY+rg=7dZ$t25Er}J6wFW;=N1~sBc&lW4KHY)=*P$XhXYEYogrw-0=j{gz1TJg zWexD71Y(xTpLsFhqP_));XvTjP{Fdk%QXt|xkU#`dAHjbEE%B1bC5*4!l9y^06^s5 z5ong{wb>zPc>?KbvvX~e^ALrpKaaYz+bd~P?b^97p1NhovzG3Xp|n5{udX*ALP|O~ zb*MvvIOl}#$EE?qfEMbJ_xA{g8dIZ)TLDAZR9jUBq%b-JaOh3MU6f()sMs$+2pgtO ziIe8sQr>{31jLYqa&U2``~A^@l-U^sfV!_(9KLjv0CWXv?|wIuM_1V zKu$RJF8cv+9H>Z+`%bqSz=;@-c@LA8W#;qKR5xcY%=Z8UBGlzQ0FQ{1DQUG$uk&rr z%F*=@3@+#@!q5W5kB<)>ZnaAyP_&3X$uPScb3_o!E?fq~H^o`ub4O{DzHOMG&p&)N z1Nip#ZO-O3TA)_0@3r3E>GSg^e`W?)A4fet-MMYg!eYU+WZpwEbo>|(ISyYqVpuK^m^v3>41 z>Hg`H&kdqQm@EJYf!j6lywJnLPMFBeA}8FVHoYl!ebXXMkA?Fyj23cjXMx zO^1I$EID(4^Q?ei7|di4!_YXf#=rmatCLXL3okb`WRyNh_-V5pN7rc8HF`f(x_`L0 zz^=PpRS^J^*di7JFFo-fB9QQUNqbGGIHz>bxQDoh&Z{aP#=G^}2ZqcIM+~L1-fh%X zwULaK?BCm*SfHe!CwCs^LS5~AnjBm~Tx{5SM0~>VjoOaO+5vir3Bx{|GQ~?4M8G>8 z=2-)%eL-kEH$9pB1%SZm)oty}na^RfaMA>C3=xfj>p!E^Tu-K^Q0#JmL6xZPalD{C zWHOWwj)#K*0|A+gEczaF`7Qth&x*sv0I2`Y!(Qm}9<;mP8nw^DM+U=yXD1_E$^|CV z$$V;htiLPV)6$tR2Dn%-fM@UlhPH~z($7HOIEG32BEZo=yD`v-OuJ{!!C7~^ol6rl z9fejQR5&q2WoI^r9%upx?L|0600C&3&H;cLbXKuknq}#l%E5iHTx*QxHm$Iy#gbPC z#NmUP5x{pa+-NYZMjA#>G#MkGjq|3P!krCdD1ZRyH1r-gjwI6QaGgs}ax+>?dmehYPE63Xynem7jr{U#~NhMoEB-7AHh^4b=Z{fBKU$gtZ1uGpz`~rL=@-3T*>JhX4~6 zi6MM-+wIK`f;uv5kkWETU~gqA^IFZN5yV~C8S6{!4~NdW(q_h)!TG~3#R~*hglRe= z=trIhO|8}&x34jPX0=)>Kp0nF9gvUb&Z0p?W0aW)J}`eZO7Nypb3MD>%CHi$l@^8f z1f!9=)=3gzrUX_A;n>)#>KU-L@Ngr zdv`$ajsQLEu^Uj^zq^HTptt;da!sCK!MSK^Ix;#nw7iw2j`hu~%U}Hbv#t#pA^u|U zJ^-GeX88NfEvTinKLF5_flkdVcJ*usSjz8nFZ4aDY}!HFr%yB8OG{Z>=?v{^0hxS0 zm6gh1OvzMlCkFsN9~}WS`|IngR?D@^A^;qi5`f6t{^Twz%5-tUjFZ8=-(^laUhlI^ z$st;mYHpOdaxFImwOqSL`~f11(eDnG4PdQ%N?P*_7fMIyh4OSx#>#SO=A?Oh@gN|Y zx0nggH_V-gTo%RNNU9Jx;$X7A)u+#&3~pd8@Mpz(qoBI#c0Q<`!nvl+90ZqB&`*goG>xxfB(23_lTSocV-)o9I)6=I}RF0UJc2dVb1^~I&Kh|b<@0l$h9|u$F zE=Q9LW+cG-xdh1@!(6(n-Y7fPm8MX4^;ri7J1@HhH%ug6NSFE17i(q%(g97Y_LlvZ2^1L!(3B~S>C6skG? zUMqyAXCMQM#(`)MrV)%lG^eA*7dV*2LM{3|QJJE)CIh5)7|rO|R8i+_662vq@_Ie1 zx}B}8H!ht92Rsh-g`WC}Ol$5Bx0WDaXalVtbKf~=h#DxR0uIOiNQOBNvcVA&U=aVX ziSROPB&}C40cBoVR7QIrnIM0TiXAjg&3Nu7oCn=(cDs3KizjA9I-k#`bqHuf+v(%& z#eovaZnNDOWRPt`_t4Ss_V#Y%h2y;Y^vP@f_I@z>hmJR(Xe*=R=jSIK-`;gXz=U%n z^P@#4hc=wdsL*0F4(K2*4q_I|v87hzYew-*$lBc-MbATy5L5wLpt>%uEmQ756;2J4 zb{+q)Cbgh4mfI+YzOD9Vsdx!FaodKYMo&hzN(}&gR3{bMTYM>V%anxjb9%PQ) z0ES>62!doZbb+u|?B!ewXJTKk^WjCu_ZJ-zT#cP+at@#Ym|Odx70G7F#2XFu)q+Xr zV3q<#gLlO#LCN9BUH+k`ceymMn=`L@A{^x%_JH<8=tzWoXj`yFo)7j0n+El>J_Kum z^VkhW-js$obdOI@78#LEW8a)Dm!ZC%RR*#?baDPARgsQ8~*PAZK51*-U>ij#DdVc-8|JQ=E-4>A* zWwT7}t#SrR83Q1IqZ&kKM5^X;wxEvpWWPAF04M&>q|PYG&4iF>z<#)wS}8GD#dXtORouD6uiCgL)}yYDz2^!|wjU`+?*1yY>v^N_9K!%_@*_!nlzI`do#n z+W<*gplk6#IBHM3WX=flOYj*C0IE>Pch2GrcB6SpC;k&a1kH=DTdvpgDj<4|V%ekF{-wZu#TfM)$xGZx2_~_rI1WUq@77X=a zD&yeKpUVTqJejT?^!n}9*(Qn{Cxc03!DPNzTcv(GAH82OV1!>af`T0P%iU!{o>0z=wX7PsOX9Bh9I=xSB{YKyZ~#^u@_^8kP{)!{2M-M(!0XJ2hAK0| zXG-^1Lw^|c;B2$pj*6g$7v>-$f-p*I$i{kAu1Aa(2qEG^WJ3LR>gnM|c{=HKf-an? zW1Js{nZ=-<3?&H#%0@G(F7*^ZXkXcJvcT)*YOcc#lWAmzO5lJ&mK^#&`&h{v8H(YtyV%q%c~1`65eZL@MOI!<`KEUj?9d%D-t=T9ovj6x=W#%?v@&|%n&UZ(Q` zg8~GxSL}s*otbjx;L6g1?x7Xu;Y%D`YSgsZ^Uh@WjM=?j4xZS?XK`Q|;R*`?4GfsV z>3BSGU%T!`y%odD5`sF14AnCG5g45wj|U5KK<7L&0!jWG`U8~GfJm}Jj1%#jJ1Zu} z=YmdYmE?CA>;xs*8^yXMi1i1Abc1WgbX<^;Vs|_%N?GV{`si^E9D0oT>FM6z4?T_g z7dztc_}Q?HjCRk3#aAAr0gKSqwjVo|16f4jer%jBwoWkS&k%NYfEDVI2=i#0ipaok zW(lA|Z|E_g8F3RHYSL@J|FGKHfxYhxE*E)jMu`#-S#(xX1fF#ZoD=MlcVKTA;`8?M z;$ZIJ1kFds4HRTd_XQ;|zzjo)poAIjG!M$+xp5lM!srR8wQ`uC(*a}%^e7Q+R!cKp zv~&V4(UibEkV#|zaaL+~_o(&m(+q0Q2UVAoE{D0Kh4$jx?=KdLo%ioPfBYWc6L|^= z0=0F36E+Hvp=5}*0;X-VUYcgc9+*c$S?yd=u8dWZ-Xc6j{qCpQ&r(Q1l~b$pPP6VwMtc%0$4s z$LE=a!e%^tjLw-r@B6*ymH_e?~+ zy`)5ja1I|!hK(o>P{`RMV`c~r{)f@y{B=5>3?i^wG(~1X09&Vv*;H!m2(uBGGac}N zVxN)Ul&t8~DHayy!Ge)2-S7z{SrL;VXEp*NhVmi|BJ2QDKk=)yaT9xH@P&Xob9se# z4Pj~ME(oIej1nARR`Fkpg}X8M?@Wi~y9m5=b1XbUnDO6}?(XjWJeOiab&qNbes9XEte$pe3-N@9u74hXcC75x>8DHA>;Y5fq#OHHfqr zxI$eyR~s^>*CUl&d+xhQtCEau(B*hD@}owB(N?$G{qu~%h58~RAlt&x|9PQM(GwJy zV3iFhV0)dfSN|S^RB(nxl6ihO)MhetJ`}w8^?G$yk3$B@(W^=Aif3U#pxUW15eylK z!Qc6BAbLjXvcY%vsgZ2Os9!RGyf7t2W=WvnbK@d+4=&#cn#B<#{PA=zMs+f|5J&6x zo}Dc1Js2Eg(AhUyaj3IH@xyYEd3Q~3@gbm!)=j8K3>$TA zQ&B(WyXMT4Y||6Y-0RPDFOUogN~rE~uxg%KC36jME@bdc*!bO`B->G1EK3U>X{lk| zQ4doC$3cN+woKpx>@st|ZcSC<*b{UyIC!#gL|@=Mu=7$4fRcp2mJuVHwq|+Kw0*^yH(K6u#bRl=KT9^f{{sqb9Q~bHhTKB z@i=7c0+0g`u=A!Zv&Uf$PFS#QaaRWS9*hV~X@8tYV&f3WwgLP+KdO2R1FQ!Czi_X> zVy$Rse2zEwcY6NxWX6r4!suyy1)?>aG7KKI*>I|?7+>!0{m$*c7-Qy}(0u~a5}FOW zo<3X-&!J}=FW@r;*rHkBthZ#+^Bo5SpO&Fx z5n@{IjcBBi;ck?G1LYBbnwH&8dlE&mbL^Ojk|E=7sqLq#&qs{|!-zsBLx5M5{s3*h zpAsHpzDY!Q-z)Y+vfvTr%(6&*-e~XT%+r$S!CsV4LRyz|#|?ZL;!V!n)8{V+MF1VL zeJFg`Mb?CwIe=8&gR_0TwfeHV_i!nav(s^}yN7$TWhAHoAF_X1A4z5bi0I;ic-F!J zg0XSRaExy*)5ud@d)6joHVWwjYzE+MZkJ^a3NW6bQPlTGn5y&HB3ELIhFV{L*=xCA z-HAs`yL40c+yhB~VLmzWnpz_Wl3FTp0viAH@opmoEfd_KJ3(nsaX1(L&*DMx669D^ zE6bZ&hr?0ZyE_Nb!~2^TlVLeH9GC$DTo=y=ne3YS2jB#Y5 zs{F-*(Q$x+lXe^!6AbSD{=o}8)7BrZtJ1g4IGc1BP{ zkycwSV&S;JPQ;#U#&}i6L$cb;G4KO2_0a;IIWwFn|In|@{Pw(5785+?@&q-hx!yYu zVuBUvDhOVT6tU5a)&W$^+CJEMfq*9^3=rY|1YdG8%>$sE0Z^`?ZH8XpK-=xof}~s1 zD(8TrN~bnP9U3hNEk5jfINBCEYThwoxOq-D4!U7wJZpSXKoDY35yOO-tpE*TokC=R zDOw5Yk~|}WpRW54J3$Gx*Xp+U)@0 zb8j+}SQ$nGn8P8O#*didm|721`o0brJ_h-`o9#mt4d?+-!+tH3P*p&gVyBg>hy84s2EC{x~qX4&sH<}6VORnP1>TR0mK3<8Sa7# zoZfgQTQ-xQuqK6^SvTXo4+m zzkm&V18YSRg<~vo5`dX$?%KIT03%1yi1*&V5|CHw0%n{nTrOzn&Oor-yt-75KQV{x zb$^;^Hn+5rbu$=cUUVERMh9KX3)cg^+odzdhx>UNAFW?(5QiSsqbGxLc}&X9PN~t1 zGc7Ja;3A74@qiA3E_ETC3)Cct*c3TxeMayaQO$k+7$*UiHYS`FKgYo%%L3YSco13a z?jHUvLW4b6Rdn|!9jXaR%ff?*(ofDK?Wl}i%qwdvo@-PZ3#TSqX^iihxJ<>SX9C z7QSt4J{VAe-Y>g|KwUl8HWv#VJs>kwUthe>wBgVJ;JVs(Dw4q!9Bi@y-i3?~`X8{$ zI)A*sI18e$dj0t5n+AC&${andiBaNFyHJQ^(DfCBz3@Icv+TLyk3cx9r5Q%T$Xl`y zSS?yTixNjmYt_}azj+1%r6RBn9SKM7f5=q?x!E%8AI1dcBNp0%O4qv4v&C0CVtN{S* zGln(HmmX(|IQg{y@GSil2YjlXRpXoynB`Mm=mh`(AOJ~3K~%*jGm-R{xm}9^UB`o4 znwd1{payV^B7HDA7x7?ylY8tu_kL!GigIOb0;L8@1b|~0sXinyVegDGZnS@U*TrRs zSu+qnJs(@jFGl>)<#{sTyUtg6kR!*K^2Pae1t*+cY zxZRjdbeRF5b7s0>=9@ABEMZYN@KYXnc)B;6%2`WOMnR)tDK(7qt(ydAe1++25+o-O zOxBxOBCS>L~XGr;lfkkO>uIM1AC>^tX` z4uiEKRduh2O{OA3mosZynhSonb>Ot_V+^#;BCnr)J%I_G1)@?~OA9)5QVqeR-NWMy zqA8;t4%%*EvCgi`pe@owXB!tCRi305UoWQo19TGTOorBFTe4yTKV1q8m#XM^K@gb2 zjxs>5(dCTDj+;#EiiDTIirxv3Z9q)77l{<$o#ANQ1>=i{D%BMOkmliR z>=`;V*h9)M-SuRKhmJ40yWBZ~fEI0uB+A6qm4s#1)^XV){nZU>9vm~bWQ7U`9Fm?0Rv@A{;hs|f=UYig!U(VkMyR8+sUS_W1_PHDK@2tTHEff#N+VWg2xo9o*VR=>fWv1O4gC55AQUCk_2bpbagInT1?2mmSeh z4h!{tzCF)~fR9<~+!4TmgMPO_&J_)&qOBo$tnFY}kdZx|5y9vSNDyfP?x4z`^Ke9$ zJu~p<;Ujc)5SR(_fB`aM4k)uN7*s?z3G2;TK+SU(1gs8S3xGcKDzhkvITJY0O6~3H zdOBl2JO37hP>vo+r;V!NC(CX93e;f7BJFwKLCozzMZM zY>`1bZexPY$qIuW1fn>10FZBi4CY!O035cCi-10TMz}b)E0JO1l;}1gqlFS@Enq^p zM;ojX7W78P4T~9|1^~GQuDjkM~me+i>Gn0s)n8j(7?wIY) zt(a@?F}@QvgJcGQwCm517`>{4%ov`@^?z^B?5~eCuMfGZ5w65hCuNpZ)Jy6gt_W%Zs*9#KG(hppkE* z@11gEU0?j11{T%{%vYGF9z8$%9hVHh*Z*N(VGjWq+^jM`8ZJsjpT zSDIPh0Fc_hzqwa&%7TGUoRN6e)_`A_<+-7{o{XwN8owaC8fF?(pEQ z7$>0scuKXal`kC|dlJ{tBdtl45X7^Gu-*LJh)6$Q`IbmPBKwMedH?+viy{Ghv}ywI zV)_jknMttY(1C)-aJ~xDKge{zc)lz8dSkvZf}qq2>3q4h^4eEZt}}fcKNR+@s6nF^ zr6mw*5}KZ1$>IBRu!Fb4kyH2QAc11YUKx7E#?Atz`Px;$1`9|=GLAQc17Fb@(k8UA zu@cCShrPv0h$riMP=Gjs&V#ygxq%J=g4y+Yv514svJ-_y#zAmHn4Q`@^^AjwD2#dz z&3>l}LB)1fs`K-8ququK^7{nDy7B=8EO00=enel4lf~g-C`?9Uwt(p#u5&~<6a~rv zUcN4wt4C7@BM>1B3Dg&k0#*TZhXW?7YTHVuBU9L6^jK+*vkc}CZjm8cYzK<>VBT|)is`rKX4@|!0bL&UMzKUk9OzzGWvUq0Ixkz|$MZ5WUP+s63@ zfMJ*HKMW|r|L%c3WbhNEoVj#FAZF$P`v%~JRRiF&zI=wehNj3uU3_)Jy$>n($dFZE zokXB50-Q1YX3HgMp231PAyap`nKerBFU%uA>(a*d-LP3>#La-Q1;%9GBqNkEEs~^@ zi+2kGx3**RBsFHaST8Q*y4&e+Jn8=F$w8Re912RUmkR@ZVgqGom?{hu(Ii2e&I0xz zNw`LNj+u0oAbvhp7uykR86`w)mxL;#Ox@3OGKed#*BekHKBnYW%`pPd2Wx1QMyvHr zBSOPqE?ZCW);G20BVz57;|FC&;x=oX!oE~9ivjzaj9iel(DCr0I9=H8C(1~a*cfER zLC4Xf0w!BUQ~;8o#>`6~yMe+1dAVN~`u98SPCp^pFO&qmlpY=1jY^pl?w_Bpl%-}# zAck6D;Sg~U5TU4{v~ghkJee`bk$bI~c7$peIvy$y6h$vD88*R+popkJgNLF}Z{NOsr;^DgX$3@_Lgp1|x4rZ4LgRARIVxpm4cWW~M(YG* zix8jO zFp)8my;18WqnodOoy8r98Foyz)ivafLK3Sgg{^8EFmj~sn zH+IU4a;Y^lt{K(J_rnfVomH^bflOq!WZ?*+EG+q|U4_3v1 z%$H{2cxfAg@`L4?87rI(hmOy;K+wz-|4v3jx5B7$bLRujoC?}&0fl51w7S9U;CKOj}34`V!ZeeQWz~54uqZN3O`FlVA_y?DVU?V*pl^F$fC)%t4 zWYF{<2PW0gZkf9~igF?T3aa;)U;bp8ySgIoOw4@Yucm-HaN*1jAXstX+TDZl<;JRg zN{IkGgE)X6J?Q(r&ob}BzQAnYHx2No$OE&^XS7HNkk2lSEnuF~)FWgGJY=Bt<>sMY z^!ei-3Dk%R|MYi%a!|t`AiOh637f~|GYmH3CO(ok63;lch?2lbA_U8a@Q)fg{t8>- zELz-2#{E?O9e@4|4gf+hBKR0|3LXjLK^+ZaJ^=yH6!QcqkPk?ci+cET8z%Lf>&*|u zb-y?x_u#gS=1o0KaJ!}6J&%^3aSt;{Be-r@1uhx8`S=>`1>UtzIF*60%09D0+Zp+WGDM&038HmStd$z+66|7HY)GR4v*u znYz_-s5&1`fF1k{nH&rfh7Z+aqzo(qDdFIm{0GW)dr#`1h7of43(!WeRMA=kg6tNC8mL!0uQVuk@h zutYXTwn-m4`-*{(=`m%J&XEaqKF{&JjqqbX&x^nwD1#9snQ+JOB3jER1EM`ZfD6dy zv$@cQ=e*tkFSKig2KaW^<9tUtfsJg5^@6Rq-)&5rPa_v3k)6R^ka_hpy*;$PZ4l=N z&;gX;^a)yXn`-F(_Aw}QI=mXlqXFSu(sJgBj0l@!x;B{bNS%0YNAtC@2;;~axg`~m zF@5ZeO6Nqt0AhoSrI|JS1+*&x%s_;D0&v*Olt2s`h1zbm>W9GZ#CfHEoX)Dt@u1gV z{xqKtz(TRm!>32}Bqq;4Dozk#16XQpR$B`Sd2asQqh%4umUJN?@TDWA@H1Fw2c5mz zIvK;4U?Y@@@S}iP7*H;^;h%kJ7Tr4Ry}>(^GP$=QbaH@ZhyaK!e|)^VG)8j7+!$2r zoD13?*DGeKkhxbn9N$$}h^-?7c+aLHD)}x2B%io;hQNInAI7OWpjfX!%toOd8`c!z z9M|ch#z!lYdEXFZ0;*xf_;Y;soJfpLn()_@wwV{>wm{g32LBs*JT%`;!ik;$eF7J2 zVZ-=u)-TBuzXyJl38w51YsHKV&xP<9`+3TzK~huc+wb4pm;de%%lL$bE38Wr zG0MW7HB4_a+^Zp%B}8g1|Iy)liamQnYpT<1gYP5&ZD2}i?} zz!Q|T`w;2vg}TiwnsLvr$F4%zzyy$GkkLa)($CFIZ6^MKaAK>Fsn$@V;$UYBzAF_u z1sMa*6|eyFKo-CjVKm%t&G$l^gZ6MPAY!OE6q|^kYS*&K-DfchXcGsCp4z`<5`)bfGCRt@ag%{>;s#5K2ld@;0n|;<^;tH z%TZWhh0u+wfN{Pvt=1ZG7t4iNg{D5bB!UCtMI&eRvoaYqH0^B|GF=f&D7ze9{oFWp zjFZHW=R^;HVc~2i>auaCkC)$c|M^FQDNFk~%(Uqc;QRSzJKm4k$z&g{ue$?e(in`+ zYPWYguNQS!s40L7*<@F8z+g3KwOoj+S1H-B|70~dD0c5~crys#u#sUsLh)bE78Npn z8g_&CfNcoE?E8HcF9t=h5U@G`8!i+f`^6dY?@Y);xW<@M*c2!`4k`!v%3T3dpw&9{ zyH}RAj6m8%mPNhs6h@_wnpDODJ+nKqMI`W7#&2Uz6mm$ZJg1n&Q^wbfDb}i zgpxPFsoYvAKL!$V8ELyHj&vOmXrO?ubvYdM^SX0=X(RPl#JCmWb!2JLO zTZUY@6jp2bu=C!s7i8@ysHvxVDn=M-ch9snhJ5v=;zuHL-?x{qW*rTtV6GTq2AG5XZ3CB0#&Mod$PgAXM%IF=71tmmxWi|y z7O4(LvgN>nW-|vcp9pFZBr?bS0kw5yri#uF7#-NV{hl^P%AAQsiJ3*Ykux-W4YzS} zEYYmskDN$-d^qSMGR4jT#rQnLsQ@+@Ls-cL-40~52)y#rbzcS#Wz@yHQPpL>_k(d6 zFf9aPrT}vB5M>g|B`~D`cw7WCPzbQS1!#bO*cRzhF+hue%De(}P@VlFzoW6$*kqsFJq>b+=c9XaFaTvnzeI}NE>0fyuJ|2*B-lAKwVCFbK= zhYkRVtSr$rJ;sYM8qFw-!&}~x&%irAER~Tx)6+eoMWq4)Av|1b58Ag*Wan5r!w{ubXU`Xz3L|nUMW^qRCjVCD__>_prI4n_# zojc{!@fptV(nnIgMp-O)*3@mQ$L+REAv^0u8C~5a&-DA&7q4Ot^x@_@=0m?pe6y`E z%@`tmCzjF>j2A^Kl!Orw*f_sQvObxGa>u(!r>BaLAd2;bVID5ySj2`?a+UhXwCV~V41nD1_xXO;#gs&KtLV*#=x7hE+ixQ5YR&gGT#$EsS(5@>uEi)t|9;lKOtN1HAX zTFTREW)-O9Oj?ArW%dQ;YB6+x7`%6b5}t#ia~%#XXF+hY{HRx!>vg%{q}Ddas-!+M zYsN@<4(GQdOB@04EQt$q5AY%bjNDWww6pLt^AcR^1voc@6u$^7(f^ zq|gEV>EqXI5mR{S%)#5x8&I=nc-&d9IZG#?Q<(^s z`T+AXXOd|~n*$i5AkVyxJP;QzF2-eiIZ5(SGz6u>cpoT2cUc3xdVMbY?L1rZBq&My znKH$>rj|*^YY#w0m=G-0#JZKN>4q{uc33v_{65#xEmYt!9WO$z~Fu`Bs27)YpU zYn9>;(^PhYp+kw zxqsfBfC}*wfR6(A%S&K%-vi=@Z4TZJf`Q}mj_^4rnb*31?zBwA|9oG$N$xf81EYwN zjeWYyx<^5|pnKN&f%sF5pHAia!>97$``-n1(tYRMuNNUO1DmgI?otqS+Px?+jQ<2p z=hs+369A&stoYvEn{9J}q0{K>V~ADH3*s_K;wmW76-(t-v)tU?<$Nl7Z*M-cKFKgW5l(;G!{M;59f z1J&D^5}t@^fpHB3pylG7@K(u?nk1w@an#00W3iC052uU^6f2h(mub?BLMf~Kr#q`@ zay}{&QrEKUypc|Et9)nqLHrU!OS2R17khXdw9nuFkivqgPa4qUx%~X|FZnzDz0jXZ z4nJlrqOi^gVzo{lko^7H*MT4!{%UcQg+xG`1-L`{xsi-61HMx&+>6pIzZ&h_C?8#I0akfb>;oVR0n z`1MPfFBetKhFEQ+N)_f^uqPh%(`Yuy2H2Huy+|a9cWtBKr6Z8AtxCjPH4k(Vz|>iV zXvUhw7yCND&!4YJXgKJU&FNGwudd@NHD9h1P$j$dip8x?%4`SpSZ9v9vk6g^G8!_-)l?v&a6OZ!u`hJ2BM!9O*{{~ft*{mR9_5wb|APqsSQTpAwsSWYa zidli*i**f2jQn0qUv70So@8p?3rWY?1xaxcT(36e`syME8oCG_h&|s`uE)%&jwQl& zUe|4Z{*Kq@=LB2tP4R>12ik12a*ieCE}ew}4$Q?tDkMEj+T|SzMx>>_GStT9ap4ttFV9bbE4^dg1Y#QZ z#dKR1qs$lKHwX;SkDPl2GIYuowjNoU#Z=YW(^48|2-FFYavpvER*PNnRX(R5=rTsx z@$RUo7|1`(cd4z7WV6>mzb{XUhPto9JQ4Rsp!Ku8AH{`&1GFr-OOT|h8MFBtTm0l} z5`j8-uA9X&NSoO@M>4+-<B*Z(ozP(O?jp45m z@cd>^4?%APOtbzzV<^FwglfA?FoMc~JL^1OVYRO#u~tY@4D1&Wy} za~8jN(M$1I+SnBq$|uuV-fO7-~X{ z%6Lp*u(u)!lzb^(%ve23=Mb+5u?|dZUhjKumtuF4T8 z8NOBHTzZqsGDd*&xx2O5;ka2hxY3_i)dUy0*?d#_7q?lQvw8WJ(HKkaD1LUj&i?y? zo=Ko*aU~l7J9TBY%(B|-Gm6oeIgh@xu2s{fC|5M_qF@GBT^1p+8ntuIp1mMhRoy6M zHk&5KYNo_c?uo3IonM4m5?>3vpudQwiD9R6nLa+0S2Fa&HibDpg{4^vMDf!7G)hDi zmly1+kYtTNok3Q{2)ll7n#4}GG}vNaUFOb_+IfFwNY|oba7ch9ou?*Hl8NpZL^M8Jrgm3Q5Bw9qvdu& z$loHLHfE93W8OoR6zL!y!zQS&&nnMw`{V!!ArX&56eN#in?8LkUw;1QGJAO}4`04! z+-60&LUg;|6qdkpWh>3gsr>x&*WBZ#0N`KPWvt6|2ztG`oysM8T`VhUAaGKnOs=o8 zle|Kq0$T0ZRd%Wv!NC^+aU|H%Yd705=~4Bl1bZqVIJ>NQ@iiBue7NQoY)axmhC$$8#_15S*XEioaFAJd1hwM z5|Oh*dIYNU+&s(QF04WTf*|;Mr!Mc|7*;?opa3B_gJTtYA<~_&-_7gnb>JY`%G@96 zCeJ?l*=-V}%Qky{PGHUGNs+o(~~Qx7<@te!aGXfZIllmKg3_c{WSu6e715MYE=^4B~Wg3 z{?l`#yznmke!B|3`}m;-@DPQa(ncB$KT8LXgVOHX>}V8I35NVENTA!zPC0CrK`xzB z#l2(>@rfnx8L}iHBDwBz-*n}XD0g}9^CGdikeb5NbVrQ!8d>wLizh`5@2F2@Qi7K0 zwvBf@OC~v<<*CsLa_CO_e#pE^cgX;UCSD3{bM#T%KNSd&E+$0&9-TAIKLY0Rl~U#$ zrIzzye4+>wtB*&%nf4a!%f?K3w+@u-jD--MyigORJ1scn9&@L&!+^rd7!FLup8N8u z+~3{h*K2Zal=0PFx_xo|-0YM~jc#%-^ig6!%BV%RCym)CVH zYj)3vMxz8J@^mtusQ$2a7eF+^3JAvnm#h-yqCipUozLNZ;7j3ph2U-;TAJCah`GU^ z;^E6<3TZ{S+@lyFgQV*h55y~l;&1sQ{wX?fyeYh>@Fz5SZ)G$YVNj6O|A-bjY=b@YAy05g!7>Rh0wk`z@g8Hu*#Af_(X2)}vxC(l_pMc^xp_ zgzCuw)ujt;F&6PF(aWFmGaTA*4YC=jTXx5{bb6{KusUd>J3zcCfw#d=-8MF5U0tYp zG{f;TF|h?9Gbo2qf|YnwqAXum%SE8-nyN}11_dU2z0C;y_q=#}?K|CgNrQ_VF3@ph zz&9&QmANj6xON1(2LC-Q{75caIjGp70)poT8VrA-)kyb=$o11tKjmV$EG~nvCHYw> z^W%>{Rw!pDu`vw6mL0?*a&j>#^sK(GBu8(pWA64RA^JH4(curP{KutH!A`KSEt+Xm zSsr&l2Q>3WF!pj@q1CX%-}S!O>N{&WyLq3wjL1u9&q>Uf$VAS!%Vk7rV|;_`^YHbT zvRcma96`?#gB7N#W9Lfe zv5JvNI=n%Gu8RXz&11j2Dqw(EJmKV3i6!x@SpO}iVmx^pb>?zhXx znvfh_YM((81T*GNaEk-mvD&q^w1dRD4hm0kpVQy#9ePj3H%3#6Q=N^Z0;PZe<=uPaygKHqaAzcBcg^G7 zuf0PBOm!TCNceSykfKt@!=g018A#Fg`)K7;2(P#4b_HZIJgA7`gjU~95y+u#jKtS2 z3ulZXgHptM1EEuFxQE_1W^)Q&4vWx}_X57(Lj)`3Vx-&O<-RD41W3uufA<*>&q!9E zpB^(qH^#xq34aE$86+$4k&v0e$Hh%Y)lLCy3nS-E=24#Su-h&Vzy1976owEJiD%I1)OQgD%S}+U(dAXp0qD%zkwe_B40`R{gL2%I^$yW@ zon!}wzvwGks-t2OW^AlA7LAO?oZlck(dM^uf4yUO(0C~XNd@8gl(CU!3)&RB>RvBg z8)RpNys@W*%d5a10PioOEyYNdrQsl1C4R^4tYs*5iH8mqRQdeyEl`Tz?||Fbm+``hRigzC${t% z3j}oq0ur2mu+m*-yak)w)|-8*VHK(~5L2KX;-T>bVikTvy)b;}9em&0?+4jSGQKY+ zEBG20!CF>ogw^7;Odr400*xsR=Q4U>WGAQd3?*5-cg0nWAd!Wa5IBy{dtEx?b3-F8 zuE@(4IXh4ig^8bK=F6c`qJ$)<&~=#3h2Z4x0^O-kn)nLfMV%Fh+?@X5*Hq*_kFE(~ zuEK88BOj|W26U^_v+CCVc(9^?Dw%Sb3kh*keJ708yf0_KnfDp!y+3^ZoZs))+$9n* zh!KP;v)&Y3pxkBd24#Smqq7o1CWtw{?`~gZN9&4obSY#YK>QTOh^~vkpne^*SaIZD znDyrJo0UTq>@vvcrb7IlAH-;7wRcO$Hcvr^^a0gCpe2tL>_E%zrF*Ps^DfMUy<-MH z3iNYW`4ZZ(tmnoXH0!;L2E`9!1M^~|6-iH_5$azgi;L`A0E4er^T63=@6ajR;3OT1 z$^ZF0&TV`n8t053k$9nV8iwIy93>Exgu5o`vcC(2y53qERtq%+siN02P+X8jmrlRj zUtg5jD=(B@yaU$jS=k>!*QsxlOlbSX00oMTiQQ8!JwCDEBNCw9Npm@ya+a_@~P+;ND--9724{UYteWMXl9ppp7EiRw;n~<1~ zr+pf-pss#~o%c3yS~z4J0FrOF>xfQ?(`ckfaF=V6R}>!etTXQE)ZZ(91d$kyf=&W? zG*k*8$f0IHtdt`a^+=$SE+iSEic~Yi5qYt58PhmE z9gWgltTuru%u@q@k)nlswW$kG04utwm_t}4*h^9{hjTzlvoM?m6yTT3p_^4@ArakN z4$5Y`N>Ct~0axq5IfZ%Ih+K51E08A#H#1kz&_&%pt+S%R1?9Qiq);lK3I}fjneSGR zh)sA25)3pzqOf1UoLr@d zWzAowVawYE?a-;BG5l?`yR~orbSl%AX^2*8B=5=PVIk@Jfgxw}S!_H5V}?@RPB$#c zsajihBk&x^>SY}bUAuL^Bw24E&PhxHjhV9GT+yF-iXj%c0zc=m{$vtz3)IbXwpmTr ztm2k9!YbD(W>c3LRVn>0C5Q!2qs%rB$1o~$&|O}^#K-nN{5?7=g;3s~4U!n-q;30p znVk{nPW?Y)gjJ+Ix`4s37gj3O`gl$hfn4658qey$a)d<#shVhJZGPyx^n6E zYbUDsAQ6MS=p@XCbppm0G}a(P-wP~@h?js7=)75pOp+drx%~|d%RcNlNARkIC+|_P z^G@+DU?l1$~Y{M4$6%+hZ#Usnupf zURNBa>uWaiPRzZ>7n01lcCw6+)~hlalE^Wn!J@AYph;4FtC>eJ6H;XUt3UoO4tMsT zxVwY?q_jAKiYdcE<)tWeHk{z<&x}$c&$Ox{%*(BSmMA3)Ec1S+jxU`{1q|flu(NQC zSI8BOS$?*k2`bK5=eUb>RWU9e`E^CXaD0=yz>7iB+n*%C61(i#3<-=&;X3xzd@(dx zX6)fF_}m&TuAsA7d1L;QaSc_AVy6*qiu-7{eE;3g1CN4(VhX@_--!A1bM7Tln&M$# z&F^v*bV0(OK0RhE$3b&6vRxBGgjaM(_wHvJsv(fi>l~W(J9lz|_oWC& zMh=*01o*zBM{Hq(ZWgcbm4n1;rP-EH4=T;ajSJWroGKL75!pk!BfH$j?}Q#MsXOccrZLKmBzh;k{x~`4+-#TokN0J>n5J31y!{k}n#-o5Nn9f@AM`pQlRqQpo-HpLrJ%$A zfgm=oZ)|wd@qh>?nUyfXF+1S#ExCg(1T&Y`dPs1wDnz36q;)!}FkJ%slG%Y`=-MoW zv20zefHfG#j73#gVbtFg1pbajWs91FkVY*Q<>9f~i6Z|w@Gi0HT9xOp+BpEBV9&}* z7I{VWq|1>2bp$RoXyxi+m;>W;UFx&_Y5qSq9BK}bj?I%D>an3Dj~aIE$a#r_*A=)2&;(S z-MBcYd3Gvv9j-#ecWZS>G3yA)_f`;LWJ5iSU?c{K*YAAE%?*43hGsh}6{1t6GDlF}I?ag8o+lAt7i5cmDv zZAeqjjCW%0Y?iH9o&=86$uoMfT!)`N=5h5eK#~&31aadd@4)@>zTJBWhwtnEFaa0S z*PJP6mmr@JuV8>DHZ5$d`)HXLa8)1NUAOblI!0&FmG7@3VA_d*Y+e zuH2j5v9x=m{2XT-F_7F@L}YLThnk3I2cL~TJmamuI*^a{OOFRa=9 zTE2bxH3=?>jmuqwI)HRBgQ1)WvCY5l3@$SgWChLu2_HB6&Jzj{@&RfpXx0Lmcrxa z_G7pTo8>g06)NCtV%husqcO$SF=XxI(deU@F@UD2->vrL{;4y2{EcSV??RH~oMs3L*JpC@^Q!ldRK`9*+O zIi03S2*H~BYO9@1r_c*U=(+Ujxwi=Ma4Pe~E-t8^6J88NwQbh#2S}_m-KxJnShvLu z?^r&5xC`te(fW$KzH1M|c0|4{zlzxgi->b{(p0n$h}c(%}Bp6V?Glu0FHvCq_vVdQFS zz$?D|dQsi$y1i!E%x9%(p+^hkb&-cT>0bpRiDMzSGS-Y%DK5(&|NQ&d>VgSV1iS}R zkfXri0yAkS$Y0bDV$Z|^hTKb|GYZY8N0nZKPg&juww#(i*+uKo7@CWmGE^fd?6^9Bj(oW6ZA zw{9iS8Iwo`;9DdUKl^q1l;?_sqhK-LhxR1d#dHIa2?=mp4(mnfk1tX{?KfusgCqw` z?9-k`y|UINhvj^kr6#-OEOR+?F2p)TpK9NQRrLG@XXL3Uh%Fe9!8^TDC5s=x8>sEIvuJ1j_r&^?X37S=R@t}CI9tyT0VUI6jVkr1|Fw$ z@VRj%oSzu}yt`YnEtPZ?OA7GG_$xGl5UI>o5s4Hv_9ImKWg zVWXZ61w{4eA5SI;)|2b|@K0v5*Pva`Uw%s0H@f*)*0WiXry^7FY5#ybqi|aCFW4-~ z;O2)i9<f99=Vk49&jZd+Q zejZu&^N&xF9x4>MTlzDDp}h|0%)ljHiI!R{l_LL^PTf`CABid5EHgS-hyIS0sdezvDc_YrIc(2my|tOPlDBage)#BFL&L`BETj=9-nph68x#-uu zAqq@qR|7Vm?*jMZwLzmLbm+iPj$1Bsu6D~R{oJ3p&sLw0g<_Dg+@M!po?bI@RMZ$R z9(NGGnhz8sDpy>9*XNfqz8vS>qhXR8Q-DD+6b(1okh@56sYG?o{T)d2iaBFU%C8XY zkJhYLG}(xEZ8W-fzOI87wJxCH)qS_IU6;2OC)j;i$50Tm(kSgnh_g7P+7+7nVfm^c zZLrHju{4BX$bO&If_FF934ZxtG3Y6Qlz9cbzD)D*wyQ<4sYz8Md4Ta>r!QqR=Euz~ z>X_LoGRMVaoP<{Yj$Jkxr4tc+a0d|VHjB(Eb>@(VLbGzM$TyFP;?kv zysytxsVZ1>h5|Vmpel;&@QO(gC%tuLWvfP2>Iw)1rKu$`K?x`Vx?#$iXJ0a)C_mPp z$qjMq#q3icnfue`gPt zo$T)EDI2%IOZWt!@>a__PWifeAeiTlCxak0s#u!_`-7LXcsi&^;ZnJt%51R+yri-> zwh5U>N2`K_K%5VGm&e_qye<}HGOQz@)6Uq(9Ip{Zxnkh)@iB+dbMw9&NMjL+MY4)Z zo$*NC1)XxgtX8u)JqjA;h34JhFHmsi=1q&IXqc=0C3L05TmOycwYl@EtftkDRU7sA z_1E{{!YIcsfvd2meZD!E{mt{r{;NQc5<|f7xRsI783VB>ehX1eaMmH=Fd~l|jXeDP zmogk*CsFIHQz$5MN+~ZduPJ5(SpE*ko15i25V$$Lv4!pwYxsmsZq8}PyH1)Z(*Yd4 z4*CM(6#SZlVZ6P^JkELNlSrOj{9)=?!Oxvu4IDPTg#9j3#w2xq^AG)WNq6dd1u{8&0+fmgo@1sj5~qK!(#-7q%M0k?I< zJPDfZGJ&L#k#Qqztkazj154Wi#~E`M2SCL%R1Ku!^PkRSs`o*{j488d%HNIrdaMqM z?7{td2Rq;D^y#Z%PuADoe*BbTTvKH{vYow@?(niS8a(y=nmc?^F0bq8wcUku9!ul6 zEsqbJA*(Ff^P|#IWPiNBO|nk{91hB1cgnAeQyJai9>i_2R|dyJ8Y_hja&eH_#jN_# z<3eQ783eQ$*&&x$=cu&%g$5=b5N7Oc4brYmu5TE`R5LYm_(mh605SEHQ9)pS)w8Am^fAZ*~_O^Y+~39>b#sq4F|vR!SG zf0oFt!+z;<>_jY;dmy~~x`7Z1nsId&=WWVhXs669@!ETac0}sfZKde8KSzOjZ6!M% z#PlU97}7%TM69QHa{d(Ok~Y-ajt%!xY|``^i)?1IGM%r= z-e%<4ZG`|$ZRR~5j>|HiLRMH%-;_SY)`rQD_s^v{9CRZE5_lyk6}ihoGwwnn|4pA? zQ^E2Z=ZK}chZG2Msyf61m6V5zY3=fYCT-Kby9k2D0gQ?4ffppq&Oyn>;sTs*^OE@pvRGt&r)+35 zK6j~EL_6E*m?NL7vKi-U0^;m2j9MqSyZ91Kzhhiu+*3EQNrHF;3LcfZj>YJwXG5Dl zif2S0C*nHygUnUOu2}MJuz?dquW!n5%woHr-{<=|D^}!=FUHXgn^79kr7L=Si*d~2 zF#&Ia9C5>ScZMe82mbfdkho5uD-C1aXq;Yruv3$6{&slL6 zjerDS=#%1bK7EdB-KcMu0L$Jwipu$&KE@LItsKH@605vpJe}vSU*n-5VJftIMrLMF zubAh)ont%Aq85yNadqubr-L>Yl57<1-U&2<+o*)FT}@+=ZA%;_2lWK2*S59D4MpFk zLb&hx_?O3*n7}NSi#(GUK-sf0xCnx@50A7H3-=#?`ZZ_US#8ERt-6OwV15mPwu~aG zx>=G|YTR%xoF#=qP?D8Ro7Gl4#h+1drN&&x=bqHJ`L;&Hj6VYdZx5d?)y zS*&5-K7W3fAD2do2^^$~c+QfL-*~08NQrqgFp+9kbT|qcPO`fcuDCcUews#2*Y8M` z;;zE%3bhWxako>Z)7LuEKmvb9myOWG&k#ymRjwX1z<08B)t@E(?cohnPLG}%w?vWT z{)pdDD8JWpxSUMN4}bovAPZC~8bNvD_5-Kb+Ra1AojGVG8*n3(&Ccf6QSL7k6>2JO z0B}H$zZiGPg?uEkI|r|WG~K4l9%arTe{XkmmBm)#;Rs);*(kR+S9uogho@=z>;LMn z;|JfLT$Vi+hKJYy03ZNKL_t))YL|bvE*n;@Ee{RTx{?Gje2*?@A4=ehv4k|^m4FYW ztBNxBgdWh_8!pCBNN*{|)!Cf~6TfG&r!GT{w?Og|ojI)+>*oVSk&+IeC@&Dy*JzdP z4(s|Xu)e~c`!Di(BaU|B%}cOmL~om`AR zdhdj#YI}?D;q!5+ySkW^!*&_eLSobRgw)q+2J$mA;xpjlE4*|QJ~u+jYIBH=*pe3S z!v1VJ;OT5tF0Ll!WE)hRwW{2&R$=+K%D#G*AFBl{l8r#8D>nP{eCd}d z7>trYoT-$N9QDaz=Yz*PWxsq4Qjw0)d9c7Dn;@$MPeu+bDIrGXF)Zf|k8?|wn8?&+ zO`SJT*uFGotw@Ljae-E`|W#AXK@aLq$+>>^t<0j6+rTozi;{+WQP|#E-lP1e&{3Tat0$46iBNIM-iQQdc5B|8809%lI=NLM^ebasO%t5a{Sr& zW*ri*_ryI;fhGW_TSWQ_O2L-6pR?gJDu_Xu9nTqj!uok{mwDZeSPudv&TmUuhNU53 zCT?Kolc!ZPEBA$b&OExId%O8i$^o=)w%RM>Vf9d;yBE){t}EZd4hjZP_xIiM{5ma{ zqh5XA)DcjPX1kol2y^+}q5SgmmvVK(pvK~@YCn!;?YUZo?v8OT%?k1q=jS}%Jx%za z8-y@Coy)7z+HJ~WvnyAZoZUJxYhk!H+Z@aN?Pb~QCuP`Zm8*+U`Q^tS1NrLkPP%Wk`h^x693i<`^5cZrb2HW$~fVxb(fT~$K`8FV&=W67x!3E%JshMvbNh@p2O zIbU9kGygYw`S$pj-_sxVN`vET4+2(ql=yR!TUAt4VjW1ntr+h#gJ{VQ;@*DDN*NK= zCerQuncbGFySuRFo$qY&q?kIML%tO8WYQ*-E^xndo!TPmiT%!)kBsn`XTfC7XIog@ z`h}e~cJzt+obsw>_4@z*w~8y^G_+QNKKV`86CW=hrx5n-SVJ-%Ur) zIBYoRmHF$uF3M}R%JX7TZm+Mx&+-H1!yNCRe~tWJ&mMZ>u8RR;*Lr&>{h*BJf||RV z&8kcqV%i^O4BqK;yIllLGp>mXY_nM=!(N%aKBoZ_kC8Xs4~wb9MEp1E6%FT0Tqf-e zA-m-S+p=)QoUBUmbQ(wzff(D}Y;udgd)(Zbf&DNEk*&Ze90DaE@R?0l*PNHSy|Ue! z?SlX8lO81jIGiAOnrO^RGny6>OK*^wn@SNJij8^vwOSl{db+;OfJQQsOU3O zm<2ww^(bo^6(W4{Nl@B#fsmyok{jvFKmX_doQksDy-SzOB@l5$7vb~T0j_ca!*n4D z(`ots`|ne&A|tx&gD}Ud%*4yog$VFqpWX4CYMHd`WjYJ9+YDDg(~SwPJiwVQDYP=; zC~xIuwkTsxe=aWA6$W$MmDef9scxA~&HHc;`Wa{NpzgHS(TIY3BxNwZm(1Nvq4jp! zObDntqVeCdtDlP(BN_%=+qifLDkRpeIlW2_sg(1igc-Con(@eO8x43``LL(LPLNj1& za_cPpoh*?3r({3s55kT&Lk2ynsF4{FIUNEp9?$)BE=*?Ppvb1Rx|8YHpbjpE!{!~U z`pwt`4*?J~$8D09ncZ^XO?!4C;f*9z)o?lOIP z&TJ5QR$x;^3T(fj1)F!15(OKiNiq*&)L=+Lr2;i+MAoQl#%F2auDmZh(V_Y8;9ck9 zXxgg7=9JfKlwW@OOBoqs9gPBPoMWrYGrZdRBJugW?l%&c^LsepDv*krY189Z+266* zEaUfCt=YHE3%Y@@1Qqgk3U-UVT@Du^7`~8_4#(v(?`j+9{c2Q+qo~D#r_p1^4@vgb z8rs;Y)zm?il_j1gq-%6uBEFDT4=#X{U*3u>cO!Iq<2Q3}r zt#1{&B5`M1ASm0N+2QS+N;meky7gTg7dLOKkiK${0XT1!nXc;$Ss4j69w!oP?Ut9X zv%F6UAcVWsqHK)Z6cpWIxi-E#k}Y@2Yfz7F8HbBgiKOQ>b+^imeJWlcHAxoifXFxH4;7o--lfTfrfZT0V;1{^#HGhCza+;}b!aM#4WYWmVM4W7WW;SJjWLvbYOF#v zqKJn=SuSSg?`}aO{FxM?7nuHVwM72>40pNHwa9H3zZ1F9h`6m{*zcC*)EK3^e|mkb z`bsc=!>;Peh^%maC1hCJ%2Qrfgb4(i% zSl60`foEG32n=JaNPK-wu*IMx3GsK3T}j{$xCaYv>v7Hk3p4B4?aE*N@t-og$5f8r zGM7Iyr_0Oo;X|*EGnVVXw4f>vM9?Rjsc>CIz zY89-z5EwX7oh%D+AnB&bQ|$bW!>%2AM;;;zAKc0*1EBXIuf&bQTmRMm|OW+igvn6d;j1nxCH! zWwo|0y9Q;ACe%z9r$grmhS)kDx!CV|cH7%-ZZmHMeLLr#C8*F@aW6T=L1#QW#VFVm zvKLgPlyrOk0kL+CpxT`TXq}m0uAudMopFc_V%UCPT@=@Q#x8HAwb_^1@-?U;{=}h; zBVe3;Dz_iM%U!~?SuP|AoEu14v$T7Svb7@~YLd-t+n9-&g|;lbIq!qs7~j;`-%IB&~%FiufX$$5?NbI#jUnXeb+ z-0GFf>+6`n9PElvARD)ZXXCR&^(+EwCjmliz}ykce@T8r%?*!WxO=5*Ko!j+?*@x~99>EEnbW{$o`M>Gmh1nAR}(Iv+M=x!RV0 z{_&@p!c@j@X7Lh#Hz?5dT}}&0GLn+7j5{@X;sTTja^qZS#ynSzEEFK{x$(C5a9YPt z!tXQM5KD2=+=<6ue=Tj6_!9oR!{hVQx7_R7yW6__hfI>p*jnyzvGyq>${UBpX}P$) zE3=o^D3OeY-8uKhhD8hAZm$MGgz@EG9=;^@O|Gu;&R)NLE&WS>kCE`Y^hblTi|pB0 z^)>Rsa4X0(DJuq}a(y+4f+R%}1w=M59)oso7q5A@v*}9;X5-bidBSSFE1$F5c^i3! zfKy@G%CuIUbVPXpjeO_gqO6yjY=a97d_0#A-+g)~K?oQsVI)7~o$AWwV&V)WLF)Xo z{t!V5G$tWe$1&14@Y&Bl{gM}A2#{GxoWfX(>J+zuPCUrfhBFyWbGpNH zUL3%5SMTJK!`oY=f4BrTQ(=o^U(Tn~avgU#l~~nY`%I@(D-dbs|GLRo>iT}9keVhN z?53qZxvJgte3sw4YggyQ(|#TpNHFH|Cn>x>Kc&cks*ot25shLjvCa|+q(g>2l4wYC zOpGqZwbNd2VjHPTt!z`Hl)vtCLK2>5?rZT;C&&c!1}ej;&6%Xjjg-~->{`lk2qI)0pvZD|5pI~8 z=mh*s1US;LX!sHNBn4xHPPd{}HgTDA+QDFp9tLt$2c0r~dC6rB)1IAaNR;m@WS8r5 zb#s%;3Ni(Ab_$L1D83Ld3bSjT?9M>5(=70i^_l@suRJ||3p_d=>D0PG-mb21g8=E2 zoefDq5ZBp*GbM@n{58_2`gtpPRyXbr+}+>j*ZX~BN}lnpB>z_SbTms7!81u=RmN9W zLHQQcJL5qaQW>>L+-Bvl*_8e0vW!Q_Ylku%+qwt(J%oup8nnw{V;f*%V&xDVwq?B( zqb>sLgTvRnAwZdJ$+c4^V;jugRxk6{oUstDkO0Z9TTG4? zf%p{*?ZKp6UySo^%(gunN&dIOy3y%Xc~*)xgwRE~yS~cLY_~}&SEXS_j!^fe0PE+x z?w(#!6hb#B5THj*u6V~1&xoRk$GLcGhNMP*+#!YAAL4o98SBW8I5{!3Le4vv<69#O zmvq%)sN!Pr__e&@dZaKlS`%yBM6q0xWS@OW0(J&E!|K0+(eI4d6LWRpuMcnG2`St^ ze*Tz|gZQf{L3HKBH+z09`_>^d_U-&RBN!q4q?L6I#Udg*yx;fbLX(P>Da5j(GSwS zcsbyIu%?-!4!Cc|fzYGNSS`yob7`~Bk_xiZ;;vLTJ3(pux{IEQKg%q@yvQ6`XqrU` zgHgZCzrB?9ki5o9)l<2;zAH};Us8o54(gyh;dT=IHs6bJ1G0s&h^jGFA6r|h1IPw8 z@bKcD6M(5KawA}A9VLMVbmjcWsunFLE&o%IL<&&J>p+v>3`6|Td{^N%{Q{C@ghhw=^mY>j8 zv(~kht5rT-T}1)ltWW~@Zjh~F+0S;B5pIzWg+!v6#gNmF7jty&gKFh9o?^6IVVxwbbFx6{UiIV5~;lo`;6S$gLl*Nv@ zhd;B8mYbqRH!3Je5SjlQXP+1*HOk@i?sT}{<~y1Tn>$N{{?8eJ)RjiJG>ne+vr<~U z(jQLBe*ISVr){8aXHAhU(cq(mqmUJ;&*k#^Pi5F{rig~#84*$w%~$NFD+1{G+6&PO z1Ug8Aq64K4(W!FDQ*aH(P#pSaBPb+XcFpV3K6R3m@4x$;gyB4l#@EqT8%>QahLIqH zsV$G9vQe}#jZ(sbXpg?PO>HEMBz*f*Ic#i?bf(_QWZWpjUv{f`Vy(E- zY+jV6-4rqEIhAvxokEb}=D6QP0deA>cl$AguDd=QHp}Hjzbqfj>UlME%b-)qoX)j| zhgS>oGJ>z-M7NBeBB47gU5lHbZ?{}G4@s1g^X&MP72H?Xn!{R{-QL}m*T=^)#&Oy6 z`WPoaApdD#5LFvA{iJY~9a#tz-bY=bjn^RqI}^szKI7yXlH$B}Gb(<1tP*cL20I9P z{pxZGEfD%=&kyP9#i$;1xN$CDfBC80-rfHT@5a5*X!Rzym33yU+wGLg-c`oO{yQE0 z<(2j6R4{c9hg`P{ny8qnW@=v_o-@W7{rRtI%xgBwAMQVfGk_clNk@tf0=iw7>DOQK zxx_JK^~(>R%Io8_46eEH-n{1+O&g1gM*}<;^l%tTk-r9<{ocd?ZVUQ}EWQf~9DmRm#ig!K>>T^A|2!I&6Pl zLRXcN6;+UlGn(qR6WGJgNfioqX>m`ZpTACZ46e?c&zur-wo&!+Brc`dO;WIfK(_HS z5u^li`pd_!U&F9SsNXQ-M{fr^e+BGGl2HD-lmmQNsB@zuATY#2!iOIl_)3OG<3 zQp$EY3(IwUbCYh;ch0VbcPmH@wD;??O2UApS|-7I$>@ABuc=#4G}^Se*bmVrE; z=j5FrkD7;jzN%qd2p7&~zWolVv&zkM*nH;cWX--~#sO9@b$0?XjKT}al2MalW%}hS z6s|hdskC=o5{*QhgVb?h7@HYk=qsk636QK5rE$@!FzVH9-2{n9=QBeFx`R>10|JfZ zK{|Wg88phXg;0UmL5Qq;<1k5L=YSYh?Dl~)&DwQh?uM=qs^k1vx)b9UoBm#3v!RiL zoq~5UUE~}Kf_2wKH<0i1x36`J9Lr#4E=i*ATIyE2eDq!}N9FSJD&ryv-`Y@xh&iuY z=zAc>F<+6`1uLqIadFvio7uQ0hc zF*7lKqM-5bdy`SvbZ4vemPWLwLAn<7W)X zs_Mg>+yz}M*VT*t>NYb}rdB-Dvzy?|(XuYZ5?{ohr-!eBotwROnMl|@65dS`Iqg4$ z(Q`=ABIZOD@>W)yNI5pY>1JDL6t1rk93=a;NQsS+3^g`S~%kc;gV~Cdv(;7m}AnPE}Sr;g3JQhzT7+ufl``kDr5P z#T_!QMFw zVqSJ$;PkZHF~>ugmqRoP?vGfinAz-&f~vZz?c}ITa)_t16aiuQ;|8c!W{WtG3GQZg zVqS;{pqkfNpikX^Dvyzm*-A@*C-vi^lw{e7yl%H!)#W>T8@0CO=K7{q*ER?qjv+3Y zlf{J$df>BxY|QhwyV5iNwIf-ltu{ZN%k|w|UE`_)n7A;d>;+NG=XalX2a7NLVUVwz1o7`-{vhgtID*vgQ~p1XL5O{YWE- z{eT^9Csv*5+Lr8t=b8CR9uB#e!;>J8xLMV9SGG^jxsYBu9|H;6`_ScqgauKM5$8g4 zG|;X?z~<8GPM)6*iHPr+vY^egSgy+H!(BNZ=ubJ|{nm-IkxgWaBnA?IvjLjU(j!Pk zrxk}pGbJ!2BxpF|a90;J`5skIUK5Q%Mr6k?5%6_USg@@QQsz2xN2ZfxX@^6rjI8d= zj)z7V$Lrm$eBxBc-yWaDCQAM@*53|#W%e?QVa8NPU|U+)b2f4zsBLqZUZ>MCxv0<9 z=Y~|Y8&%_b^WkIZC;-T{S+tTvn$2BsQLM~m1(XFF)5pgYCm%k3OsC*7XY<;2TV_@U zpU$!Lj1(3FJeJhe?QZru4>EQ8;X{x#NSVaUD9T94Ifj}DCM}#`gzFB%0$Ho#Z z=-R6E2IsQRaxBFWR{Jp>Zlk5>nK(vL@1Hbmjoez8(~4x zbU}(R$qoADPWty=o$VE;dZx4nU%}_(hQ+IQ(PNoc=wJr9>BK8Lm9n0yM-{^qd4jXF{85pH( zBBCrc#u6sF-vjh z!rAveJloCtrcm+5dxdQ2%E|5&{Hx`rbO*hRS0r4L?&a%K8C_oFxf-DerYYj&ha_9v zsAJil>PlzD<=nm(TPe4zxS%4QihKSYsqBaEzKc6&h>1sp->UA33W)E=c$7Fhy0}a; z0I3vTC3(oVyW;)k!)VN)#&(bFC>9{EyLSyf^w#n7?+!?6ZKVuJ@Sn718An0l6RnvUr3!g5<_kEZWqb&f5jEhuk*@QB;E&^P%`Mn`ggF zlPHngR6msjMUM-LsVj7c6EI<2$^t&~6r)QvS=FV*#mvUFsvwYX5c6~gDp2q?h}4{s z#4FI_#U$ONz_pd!NaV7xqG~Qxkj5A0J%W5`uqp26p@W=tpPB1gf2&%|CbbGvd9h&m ztVLG6NvfE_{ptaqp+|nc8D*n9e0fUogWalI^Rt-vKpg~dzt^Gq@Zm#(ks!iZ(M6V= zYX!<eA0CIFrMlK_kwT?nu#s^*N+MAG3&c7oXoyQ}JaB2z%Zdba zo^$8BR(<@jJUzYUa(L&1Za2IN%VQK(=E_^f7#GZSZ1b{ogiUQHuqKT+2o1AbbuV~1 z-?ZrDoPyBwd0G`MB%o*AY(IZLds5G7&4&4c0ZFGUUSFy%|7^@wHQ&4>D!-!|C6Oz- z7oMLp=l!bMbrWXkO3TYDUIjj9s}{W~`oSP)QvqI;4hV(jqXOt#iYDmAn$*uo#OxQ+ z7Yl2!Hq#>thjj{2vM$eBf{=)vK`=kG$@V&Dc^G0~<;l1c5D=EGLk@k}uvxne@#6aG zDpFuSKa##iHNlbI&2K$_g`mROXs;H+hqBso3p|Gu3RO}tBf713NNL?NxxUM~-`4&B z03ZNKL_t)z%JUHqNQ}of_bL7~0t(OVsxFOU2(+F}vp>P{!pPP^eS3T<_n&_#yUijy zE9lVQ3b}J7#Kzj!{h_uv){TS?JC4Y!EsHG0x#l6!#n^>9g?+ElXS-bAUMI#BBxcCw zsd~#lfBP0hkWH-FbxUj=jI+WOR|IlrU3Zi=?)!XNPTNH|JczS4{(brB$Fh0;5)$@d zzb@_mB<4Va(RC>&Y80C*jcuFd_T%ShX!`lhsx}Q7-L|sG3F6l4+ToxG zt6pH`Yt%w=Lvosi0_>Rq$BUA3old{m#FI zdVq>=lc-L|efjyH|B}nm9gpJ)O|FG&V2&<1`CQNim&Nw9+fN@;L|`q)AOqC1Sd^Rl zPoViR@u^)*`uMLSjQ&JIDY8N0)@fjm__3I^fwGBz za7k)Vbg?2I2alx_WlyU3I99)bj*VO0Bm`Z7!p?Uay$6K&ho6qIDUS5A*Dn*Z-c7w! zA3uMe1neES;69_SMF95w{rT$tHA>e^I;8jYK3qm5FV%4$WVT~I)JR}<9z!yFxApw+ z`D0K9MU>BB{_f`JuFBh6yYxEr`I{uLyAK~K1dEiogX0o4*Um^Fjp>j1 z+;p1vFOf)KKAWXN?qIiT2Z6;bP?BR=Y&TgQtpI)7yp{3YWr|*BTvyr5c0VlnU6p)t z%;OX|97Msxy-kp87+EmcvUSAhs zy&pU)69gOu>%+4=rIL*`6_UInSy6HUy?TAkOjpsb2$f(2PFBE(Pu>9+JqSympTu@s zj<^JNctk0{J#kw;{O+=Bx3jWX?8^A+HfX?hGcRw=N%{DPKc{e-KR=coZUaPfJT8lu zhjRVtbEL-Ev(DO_&1^`QhZNj2)z<0Sp0{4_%dxLOAD7*#a$L;H#}la9q4WpLU9>iu zmulKIzPw2AcTRX%T-|`fH#z@&BbuYDa+7tsb@aO5RPU7~Mb>DX;^4U3loH%Ke8Ak!7C_o3dUX%6jz@{?o*WW3^6<(^W$pIPg`Z&;63j&XGyt z)!a@I2Me`fZ&!WMSEU*C-#q`!0yfe6gyHbI6Ca zo7c2RzRraI*E*5%$v;eY*w)r=KPFn#M}EF$Ei0hwNO?yFic@B9#$=K+Ln`ibX}UB5 z&Wt96&;HdlpN;wqj8$x^ytujw55ZPQ`O9a5QbIDtM|Y`NxKl#t4)G9iE-555l+K&@ z%z#G&0$ngJVEE)q;}Aho_a}OLXj(4?Iwg~$Lk?RoFN0nfpK9Q2Rb}Cw#>)BGm+f*I z=Tn4eqtDe2^V|r1Q0CJwQPDs-$Rx$^zQU>uQ`9J=_UmP=&X4=If*+8jdN%sO#!B%_zBoNi?azkScmy@+x|e zm$TiLu4;!g&Y^f;=n=S`B`2ehcR7-ZUPqH10*q?tsvA1zSs4C&2(0L2E}{Ukk06k_ zU}{b1Z|h3C-BhjE$2wVE;ONrcZWZ1+l^HnI=hva=HXXbRGrJ^bzvq4Zt;(E5Daj`Lu;6P-Btoc!!? z$RRiL>klpizmYwySUpB&Im|P*!Az2N@RtYPeU&vXaJtm9#jIRhjROO=yNx=c0fRd5 z>GZnM%Nu*xu&p8Vo$w=g(pAnKC2kkgJN1v}0&e9jX1tVVfvm(U;Ov=U zQ>(%crM=%KX_J|?nsr@giWSavSo+?1vr)GDx9}Tu7D%d|hgmpOg2QFz%FrDyan5P> znA6;E^PKnukOzIZ|B&a`>7CLErd#ZF-W@LYrMZP{4RX=noX4kW*0-K5-Z`J+2)2Kj zrt8unNX9y5m3=ygo$tql$r{m9HlaE55EihtyCU%##X&9nK0#1XtIHNx#>0MOyriF! z{w0^REj_#U&`M`++$1O|${+wFNCK|;tml`a*}Y?d8rf|#j)#y5NhT&E+!rq|%Ih-{ z*iDeS>&r=4{NlF?VEOus#r@$F67AuA^i)g&qbRaq{xC%lkp z*{}mI=FzS228{EJr6d^l$GvJ4#nQZ7+}xJ_?RTYrv?><4Z;%m!hGVgTf;Gyg?|&%I z4__0j$QRue-K+PAG$~GSf`qh*uf_xTBSV`K?dS-*y_5K_$iK+Gc~VxTBju2lxaX|& zl?TkcQ|NR%<@w<;F`1S86fa8mzN-5c+)uH7bXk31{JrAqaeYei+8;NO4~Hj23eCS| zP)B83jVO8Hgk%%PLf2o5``A*q+Q}P)*G4|Zg^E?p#&~Si`l_6Fr|@DHt3_!njOgTw zMO029k7}Gu>(5;LkXWmwH|~(TP=C)MF~PmlX|pg_@j>)1#(iLSif=qGsF|FUJrJ6l z;V|bN!j|G*oV~mbmjP<1@a2@t*CmMEk?UczET*#*O>*sO5j}7jUw;bv#=s7@&X~Cc zNgDM^+XATLAs!OG2V=WlS2U^v;ErSs= zo$3({w#LZsBSKhWz|IqVFChvdU~ETIZ{G1E0={KLyD3X3)4|q%~uIT{t1+FeoJSeqHGO)zN&Z-h?$^t z+c*F6_o`uHWSi-k1s~C$5nxS z`}S1Ef-2@RXekT|h;Qs<@JXFj56$ zT_*Tmp|c7zlw)G%am!WgOpFQ*w+=B z5|RL77AYa|K#){CJFuu~{n#?|mW0j8AtuA}^7x!J(<=Sf=jT-G5Tt#huH?=9`BdeL zibI8Ht8t1}SB2(6n$bhp`j|9r+K|oUI8VxiWS5YyzpkIIe5@m#B_x$*^TwmY47XeH=&aw9lMA|d=UY7kg zfk&Y>Od(g^+=qQRsx(cOV&HNrLnO5&)a+Qc7{Tsa46C4Z=OA>tUjOLKL~o<46AuPu zOuCeH*xiH4C>)H@q%KSv8|f(gPB;oQ&=nFTv8troUeK&2x6d>EdpGp=1>}~Y7z#1&*i3FV${_<@1s&#Z!E78@VjyT{PZ2xKf*MVM#alz{3OKY%bVK-{lm5f zlkH}i&KrW^`A}v!2h5e+HHKiKFo!xFG)d~q!$TY!jo&uNh={K3cJ+eT8RbP<6okdk zwXznEEO*l`lip3tbofckU!POZ#R1dUOkrfdh&-T}u^K&u;%?rJ(bn$kL&iZ0-I-C& zdlR4`;WDUDX05DXLv|bWMj0h36yz4gdpuUe;C3^G*4O>M%u{$fd)yLjJ!P|d3@XQa zz-}4^gxxAo+$fX~54{&Q)NJTi)z{zn&HcX|4f2i=V{@NQtr*tT#7^!C-LCh+8CPg` z2jjZB_;nFagQjj>bJpo*BxM8&DUk!@6DlcWMg<$6%HddzLY`PbjxcdqT&hT$<@s?_B~qtz zxuFflGf00`cY?n>KW0Wl2fJ5XU`Fo`*>Ujv@|ugJqIW6GTsP}Q`KSN%&td!?1I=b(d$Hzs+5Q?_SzOJ(%Gr0t4CM60Y-E5qp*f^8hRdUy2 z{aV_+N$K}(aBBt5GD^ns7SKww6Za`2qNj&h62q}c5>{E|mlvbRoxr@#gPX&g7@t$R_XPu$MVrPXbg*XMn?yT6Uf#n1P5V*iqXF<#*xU?uj& z1&6S0SZ*BtYyop z*o<^OO`$lkf5T{yjC46K-yWwy9!S}GoF|XXa_)A^l(A29`!P5l5l6UZE5zp<#9SMoxl842Ibt!`ssQy3r_?6U$scXsrYfUn~q@c9sqZ_pf2U3R{B;`XBEcq{??5+! zNL9sPG8*}IBqiX)B<3tbvAhA~S1WxppUJvbeV4;=|SD;gjmA{q4ukrgc#uPF?lURJ4c!GnGeXcAlvD)hNs zR3n9u+1|$xM(KWTSjJhyt6*uQ`*VrS8A;3h9Dn!aB@>Q)edkutb{gg8YLfTQIOpkQ z9uS3WzE7v#{{@tGwc2_;?68f;ySpcD)qkXYr; z__M|$zAFa4fQqm#BPKdRwiX2fgkWZ1oozCTA!kFoly>27?b2R~>naiJAVVTP_Cq>Gz`MJ<&D>aw(&%Nb?mI<3SQn*LWJR)XrfBYV z?OBm1Z6m6taEP&D{&wdHBJz3H?TmBqj3TwfKiD73@ajHR?7x2f8uz=#d7m8z{+#_C zI27yLZRT3!kB2JdJsrxw{x|=o{P~Z6DqkPIr5k?u`fIh!e$$Ycy>IfqDMNZ)oxf&> zbKyng<$f0a5vUx>;e5#-8bbe!29Sz*`H%nbkh`y`y1!=1M5!}~!=z#a*U5bV>w9M7 z>$^0ZfA{bICX2Qtd*>Mnp({p@h@)bN**?_4XK)U@>tUA7RW+N~R}1aRWilEX zQBMi8Mugj4dEqtVO!IWWDSA@8PO|&{!&ND*S`kYY zn2~o^SE)A7%|?h3&Bi{}(Q2d08kSGreJJw=wiJKnUE6|C|p3c9ZO&_6GghgC;+SRbiZWCl6YSOwHM)b`-({T^F|(?Wr*^wT#M$}9E}G7B!EAJ&tE&# zdI5Xob+#;2XepYiUBbUu{=UAh$~Zg$iL+Jy`+xgy%dbEGSY{S6trx{C&r4gc<|(pW zV!^?Mg#6fl5i;KCm@Qz}*B^uO{N#qJiV zi)8j+|2O|#`H%nMZ^F&FyflV7$KU)AHxUG#esqmBJnML z`t@r@I)dNT)ui-|rYJF@lBi@V=2gx&^BiO*$c!NS^8ApleRps=EIH~VP%|*GY^Q!- z#HV(7n!ZNMZ2v;EFdXu-!u1r0cfH$`F&;uJl*#$XNNYfr49518WK$`FBs`2wkTBx` z@BHnwFN0A5oPZE?61@`!ju+T-iE7TQGiA}k>7?Dq& z376%q6~@T0&N)~b(UldiCQH%eX?y-^%2B_%lD^DVN$O_jK`{-QIXNi zVRufUh~x%}ClP1ThKu8#>2i%loIM2}()en3D3h!E@UtevZh3tCR<qRe#wnaOIng=3zrBv3mAHbN zG3j@++IPNMm&s^ct}ln>pMUx(65(qrh5Ms4JYSJ(ZFKE1_oA#Y0<-JHdu^r|k}vwh zPLv#S0JW3cB5-iTjqQGN0$-adCvW}#MBUkTqgi$><_!=n0RkjJ2BXWS8Z~D~I+lIu zNARuR`uNKBkxFe1>FD_A$EOGQ&>yD4N(f5Ksyi&E-Z`(tB;K#-|jyYBnfJ^z0x*4h3^L86AVF zG}jPtjRNhTU!2#Ah@q_>Ymt;~OkE2JQ6|J0BiC)il!xT7M49y% zTaNTQR~9)DAT>UG46wA?(|#{|SOi{9re)UooJ?jNr1SOuA^Y_1%_PoH1_k|r_HcwE z;cz-!&b?k>0z3zFsf9S!4_iBDW4{lfP1b@*4Bb%QQ|@w(pa94{_Q3!Yllf#Q9K++& zL&#{1uRrIIWTl9r&@E)9Up{{>7nAdh7A1btCd|}PV^gLYUhOj| zO7Jmzo`o2xWtwo(#bgpEim`1kxg7Af000uRTraaPdjC0-+ZzUa5)?>hijsydky7d` zcUkJ!&o||#Up__Q^T+Q$dN^XF&O?$r8+(31sd*Kn@`r!=_hP=e|IV0k+GK(^ z`%=F9Si3>AcDfs)J%LPJDtmBTR;!w6Ia}@pWX8SKyM1~-4tE87j31*NQMU`>l+T~8 z%dcNPC(wF(bzZI}=g9_TMaXFC$NMAQDO!2=W5V&Jijc{zl}eH^w{oDpG5v@C!t_F zpd=6yLAY}$l69v!N{;(aKm8niiogENhd2{u6^5RJQ^q0J{qs-1Bq6(doRyCs-k0C~ z=0mx?dyLTA*{~n@cs0<*)-SF`;pElCrYPS5;Pz%5J?VqqFmnDs?(R zj35!tF!Uf3R`JY&!1hvBQf?E_@r43DXD5h-ZkNrr{OdnCvna9v03ZNKL_t*lbD6I= z{-g50{o_9*z*kan#*stW3jmKmaK9WbiAL)BeVP^PlvSJu{D<@LsC>P-jo;A8#Ln?6 zIAstEhL)XFmeqv-J&0^e^4+TL+<@q$_qz9l9b)&FPn04K8o-7!@vF$?ntkE z|J{djF*(hl(eh;x7Anmr9MEI-Q!Z_eLmuLq|DAznzGd z=6gsR%VoK_xzA>T?Edi|{w~}Ej+`^$3^_YYbks}~fgfARjQf80S zNP3>1pT^k>(0ra?1UxOv{g40nDQorc*eq`^&dPV+y$@NLu7x zyHDMf21Qzg_i+wCfBqWhr;fha^veJ8-~S;*AOYLW!=Q|Z$5~%>W!cQ%|F^#>b9xJ- zlNj%l(Q%oq&T1FLeqYA2@ZF}~E19i*NmpYXEX2qQ5@T3j*D>CLE6RvfavO`lZ z)nTGFILe|rjyj$4vD+&5_mD$&_`s)8Z{P0@9Gzwv%@^h3;xfv99HV^~s5*zTcO^tf zg5dY_?L*pQfBf->@{j*mpP%-8ltJ-I$bN(BTg?!q+1ra@KS3%x1Dcocv1@6Ud?o5L z%Xc*Jgp}hzlZQ{PTH|Jok{jw|j#EKvX=9*=38JYE> z_D3U@ghg6*X_-@p;WBE*w@Ixyttud{#VSr?*agdJYpIUfY-_Du7Mnx*CdeTupa#g& zGvuT3xXhlPW5^VKA~dm9?=c6w!hAkg#+Ab<9z`l#(L?B_SCsP`4#$DhzTVuYznj>N z&H}$gyO`rz4rOYbbMILHZIw4I%{pqd*5rpV@KSF5;d;&;4k}bKWxDL3dD*|{*2R*I zLnQDa@_Uk`JxtNcns+Hr$0z0Ta#B{C|IFvBzxxh9gM6p6g9BF+=7{=jgspYpdQQnS zLkN(8CP$eW-wugRZO%ny`~`pvu7fG!q}Hfa(E2owOv!7N<4zp{gQbgE+wQmPe1qrb za&~c*z{(5?hKf|^&tLB2%Gs|UoBrh%(@(;d7 zhIzEh>}6Z7&QGe$tZoP!p`~mvNHlCn)Ya8hvTi64gMc@{Ksg773#HU>Hi^SC5mTV4 zH07M0UcSxbJ3J8tDy>1z6#*qGWLmERS0BV~WX1d4rYxSHgA$~~1&Poin;=*_W7XWZ zhO$xo9Pq8ZGer-&WYltk#OU*5%kRnnALP)(Env{4^Kbw9hXlEwKmS_ZUH*N!d^4%_ zmPR{7A#(#f!*R!2nMKhmFU#lBKXEoo{@c5E@5%|TLdFy8mF@@KC`ZoZs(ku#UEY0o zU*?aGr9t53Wu8&GN?i%Io6RzP(rHwc5ZggxD0XVYZKfkcmc#J+`{^@px5{vQk)W3f z-qnW>$z&h}GXqV!MrA*iUJ2ph`mT(Ig9O_3+|*V% z=fQIbSUR0;8J~?~uh~r*wm+A}3-knYcaMUDZaLAWc^Edt`3gXv5XTS>FW-b&&enjH z1=rnvBX$Pd&OT?KAaGj8-&{pB3-_lYGP^Pw4|Cr8!(sRh=2F~U-zErmch=Tx`Vh52 z-~IK=*D`%7<>KtD{PdS!3U(x9%$XjYo`jn;n?B|INz|;BL`5mY{h+0R6XnC*GcCZZ zvW_k#5%&tYou88k%F1P9$`gKwj{{aEV9%helDP^Jn^_P;9cRM?OH?n@ig=i((dks4 z1EC;u10W`Y;YlESh>p&x`O7?srl9PobRsGSv4sFMI_)y*oW}16uH=hsth3+Ptb~zY(HwBr^#1D_Lt^E}H&Dcvmol9hv2N1Q0O71o$|7lN zxWL&()iZxkm(%lah)=JZi1~H?l0iV)cmx44n5`-`2_ErxK{E(sZT*bVXCCCUDa&2F z!RCD}fBDl-XTp5*goU7}yk#WbzaU|jlrOzjHuSEgr`Zxls3 zc-q<2w$wyZEUH8Yj*>v;yrXek2;7;&s$ax+`R!1%QX54CGsq%0h< zqxrnd;XfYM;Xa$iI+^wT-DBWzLroln(l&Z^QI=EVf(L;k&(9}`IMvYz*4QWk3pV=O z_wQ1_;Yp`vjYek| zAsWftr&>Tedabu*LitWB;mJw37^6Waz5e!$W34Tm!lFuS4C$!U(n<_L#=2H0+2w2@ zh$1W^rVO-)afVdvYOP(Ch{$0@gv{eSgiyEyENWDK}C_s==`7A_Ifd|N5=4sH6NS|sQ zy@J<`_Cf)s8ZLrp&9)khR}>f#e;`)-7#tUwK7hJu9Tz-INdrC;a#m`Wf|F)yrtjar zEr0yeueC+$bR1*m!n_)#jI^nQC(zT1Q!;n< zG0LR$+-aaxq>e*Z)_RQKSg)*>n*=Mm43;Zs6VhQNJu>uECdsZsV@^ih!2MJ92UR_+9R<|@4vm{J@mdtlsCcashr_C-MOgN|<$u-TqTi7iP6*8c(S1h#N){LIW4YUI0 z={cY`?9S$8SvJk1+>M=8GZOfxN9_#d;Xoz5504M!&BdDp+8i&3jhLuh z!&W<=Q!IULdeITkVO|HUJwHyfju3&gnD<*L;oW@sn)Q_U47$g)y|nCuma;zr!|Cif z2sfk$Qalm84^&wtd&s%Wr(!3n;||Kxv7q!FID8^0uEA> z^}X1`+tRqRn7i`yte&wi$78*eVtT!AB%D!}eYUsxh6+!9zCL&Sz1n z69EVMp_zT6exi21jU?xOcoKsz`gRCp6^yGIHy;k3kp+Ob9lT7P!dPzi;v5`!m-p#m znjTC^b6PBaGhO&;_rOp-L3yQ5YVRwOLngOvI2>!i`GEJtw<~;By$h3qBnrAa`X>$3tOio7`f+XXz z-r5ESC&zIlg0#+foKnU#bIn2emC%|o%loPVNTCgE>byZ^W*MWa#8mYroP*g^`_wK_ zxzg8itwnhh!6fH791@N_Qox(CZFEDnyAK3>l-~Px?>OYy6x>!-|6_Pci~qjNAfY+h ziED2ZwdD%SAGC&G?#J@mj1ep>NLz8~_^UraF?!KTyDV3dVv}EL^ zJZj&3-IlX+BeqG_cgpRTPeBfqVARMV97?Qu-~C>;&M%omgU=Gjf8a0(9tG$+*AR75 zMnS|=R@7FwSd{&K5p;Dx%&G}>I7y&`Gow||y9IqT<@PY^qm*80MNCeBTgi_6gI`%2 zX5Y}KqDx>A*>=8`J=MN?GU%1(psEr-Xd>cbw+_!@E1}ZLU?~L<5Yqa)$p9js>K!ay|oJdmW}@S)Q zfECd!q{F^_%fR*2o6W$OFwzXHh#u=6i4t5_K&P3YI4FbD^FXmCTp4J?feD-(#J09e z`@u=Y2?ABNfvRx}e5ON>``|*$njl3c2U3iK7C3J*3x~~~%c4CG!{>N9%oJnJuN>&GkSTFCj-xDmUYJgCV77cwhO=3U|SyQuIUcE0Tr<1gAAptQe0_12F zWa=ONfoZw^`Xv|3_ofe-uoASwdr{6aw1(tuqmfJ}q*LpeDTm&N?CCcxhEAN?VqLit z?w|7s*+P(HP#6ejlJU|HE%WYlD;J{O5r8B77zjfL0>Z=i*Z%1Q;)Zb%BC@hH!!Y0^_C!+s|Q0M|G@u6zziZbAw_yk)xDSkOl?# zoIhhoW$*E68q|Pj%K6!-EM8U#TEDF?M9w-f_IqU;gH2>h&SSSiu8dl)BN^LY;zi*9S~K{MmrZ2L4UV|29mH{*GZ_)Gh|pOpR(vY>r@pJE28!^ zeXQLGM9YYD9Y%gz2X+dtM7c+amh+6UPf}JDEFJJ54H0;&vqV7a_9Yy!Lw5#_4HSU_ zopL2)7Ss;j@3wof6%E<}?W1xs9;Sq-RoyJ!}sw;&>ZJhBIaJ)-y4wA ztnH}gFRWiPTjk5AUviJlpWv{)7XmItN`3=R%KEsA0vz^=z4vD>p11SoGIVH0vge>G z{gg%tr#VZ;z4IT*#@QqjFZsrX0au){ZVlw`smx1L`Hbq9;gG||H3nm;$FPqjo8uwl^40Uy&r$d)6rK1vMw@=XC_G-8+zbFWEG$~Xis>O8(f zRt`zwaKbQ<@iK%Q`Vz0A6Zo5P9gjxk^prZAOuPzCI1K9if(dLV+zT+V`lQ3bajIEE zRMhzxLj;#9i`huILY-G20eXb2a7+j@{*G2Dr581?dH5m#fJ(%}Ti{q2P69)|!%ZHZ zUIeDsgU%ph5g!ve3FOS|sKYl?O5wOi2s~<#hrt+-B$=o8RI?^u%Av25ot-Dca^VF7I1z)B(*!k~rLGtE z6p2!1E(qa3!%NU=;NQT;rIEP>&a;&j*gLn*V;JzQR>~rq#XOEzTdlx=(ZT$er7Ook zsMIqBZq8l}Rw|^)sQC|9le4h(D=}=F#Dd&7?gsnv^!Si7VRt;w`DBvXx}VqG0m^k( zwHgYN$Y;sC>;oBa?V*Ao=j0pd55bFrz>rt^Vd!FmWIB+wgMs$l?z1e^d;{%devirC z6(lAT?j?8PQNekpwpNBMboT0khl;%l7Q^T~N^kWwF%&U(1pM)T_0;@tgRlT2mGx?~LWVQ1O; zhWRQ}lW!plHNoJ>LHd$9wm>qer0BC`<$}MH;V@)Kj#@bj-j81r&5CdyYNrPK^Rk#F z;o%1%oo_A$uXQ4z;7el7A40F$5XCx3o8+l=DBD0iP|A==C1vvH!ntEC6Ngy@?YHkt3DL=Hu^bnAK9cdTdvO1Weq2RU)(ct?6RfDyW8@Z8e_lgm(Y>3I81?eqh06J>j?)*LWPu; zWC7RLH$hCglm#2z5IkcH)~o!t%kE`Rn?RN3Cd@&=dbc~}bTTOq=Cf-qeW5i_oty7w zyksV7=&z!5h((irftICR-a(K+aZn~Hk~ljvXi9ImK*azdU)@OS;BS8XA%TeJb~YFY z$caf}jMPaN(qT#*Sl_&Iy}PnBt)hrX{hY->jJtiDXU_a`86-kB%%KXxMg1Ia-J?yi zne1T#+$z4}zP&~etCq9GeJ8_ynBCMm1wT+E+>57&+XN7A-@XYl^*oy;=;GvpyvQ!n zI=jjlgSavJ=Na_G@S5tUtDw%W`26K-vMBX?!@jh93B(d)&gTgr1XzAX5E}xO`_*hG zQ^RhT{Ft&>HFkv`Jz*YyqW*M=VclaaP&ocQ>`NxD) znkE&k5b$h{dm*dR^M8ZjiZ?(@K^vURQTZriTx+++)9j^mnlkD)bs*CaBDYR}bUx7b z22n(K-ergk{e5QxN9K6gOLu~V2FXq`W#QXLyYli(s$Ex)BuN709ja_?V0B$ZCnvc- z>gbMG5ZYc%EVP(fAJYq?Wf0OF6}~~(=*kPzr^oX6^cO5E`=z{0XF*qRN1P9~S~+W>B=R)Ry%ZEsJ;dyThByb% z+FrW8o^vMg*(9RAuk4TWtWX3&b9@A{_@0wzw@VPcRu9q)Ha7v68YrPK0&uNjGN;56 z;;baNT|&t=L1B`3Xb(nG&&1c~GCD;#pQg=S&<0TxU~7G41O!SC4|iDu35WoAFl?3E zo3AMcvGKSWl8PW>uXW}NlClm3HYX(A*(_vzzVm^G0lDD*unZ5pCAK8N4SD^!;7u$1 zQE8rxN4bcy(o8;*ot+RQ=%*GU^As&Z0YprCy%`{po8K@>E&_-1ZQuiEi&zA%;2;Cf zif-ENawg)Bu!4u*m)qN$MBB^dqGp1o|AB!sM%u+t4(QZ@L%xesRqv5$iDn~{I}f`P z(L}^ZNy~T1;?>(2d(Y?luD^WEBr6Nb$TI4jhYSL`!Kqtm0n0Z6l>b$8e0;i3c4Cu2 zznq`LZ}vG(gffY>lW{vNva!`-Qy%Vaa(MM&s@Z~71S*7n&?clUt@$e@E;?E`kTk_B=dqamB|e#7x;CT`_@MeB#e^+O|+0Cq%Ss)AtxnFAVO6EZo_$srSa5IW(Y9U|zLHFaS* zHRnoOuAs%bK;B$z0SPER88Wh#dEX)p`VLUGV`Ys_p`XtPaPri`oGVD6zyR{(JO+U} z^hU>6r2IzGdzqOBz8_K4y2^N!bwJBtUfHF#%mGmqll{P{M+kBKWH3qsIzUJnLr4Uz z--1486ncj!$!U3h62!!BFw^bRJHRm^r$*!VQEyy@J4B`SR6tGSL!dfaz<8Q*$( zdYZscAk`p3vsxvSv<}cBR^QY~@2?awpz5c^mTY$l%S5Ln6Sd|%9#zzaU1aOo6YJnv zw8w73Zm-S`Vy7G;f=~{Y#X3J`dpPgj&mDFa1O*7S?k4*xKu#(1NcYPiq-Z5RsFNgz z4VPdc#zDF|ZAl2!Y>`a+>zALCWxIFIs`s-7?3ti3*>+d3Q(O0j0$cZ>(<$eZi>wPr z3t8l|bTv5}h671TWZBL}&<@I^=7=onG)$k1hqGK#+|#C9$&WN)s=WCw!4<(Swq7a0 zupoQ!@i#xl*3`X`6cRwI^2*0Sh$|u|XktGED=8iAcUe>R#`#m@*NG-65Ijjl=hMeS z38a!`oi~5S)n;?UHz3j9A4Dh!Sl&bc)D{~XgM_^;`zDgIIRXfmgwc46$iX7`ZOf6G zEzSDq_}7RFoMv-HUpC&RxUHGhy+3FMIB?Bo4x$U9o_$LH-UwY0PsDXd(#1py_4b@?OQQU`$qwrsQ#ag!lVmie+s7Aeq3My~{MsL9BrWLliH|K=UE zZoGYa6$67C00McqzYjbwg3^Tm`c@MHt#N>|S`Hcf^XBc_Jh#KgfmMHNdd8FR6r5DhN46e+Ff%LgrTR@|Jfp|Q&2uyE}pdqp;5&YH!#2#*hv9QNs$_6G%pYQg+N-!>5Z*UT0 zaW=UqQ^Razx+Ika73)=?*{8=@nJe$?b_pyf4GKg!TG6MLK-nY1!uhz&jGpX_unXpM zJez)dC5vccKOEMn3ZE=x_*zPpVY08Su)E)V_g$PeN1(@DiAs=CFM%=w_WoIHn6OTy6MPtaBZ&0=%(;u6x_>mu zmlaKN9z6>&sf;%@aHncLFb3+~?peP-42h2urXmQLP+DOu0v&ctZ>u#*C>diRLt!lZ zyC7LsAk!gO1IA?dW-rglHk7O`E-$mr&8|5UM4IZfJv<$EG#4_Qg+@wddh@}#zTYpI zEQr+rEC0=B2*7;L`|p1!??1i`uK+0)zu+V@*cWA_grK}czy9_*!Jaz1^PmM*wkK=n z00c|V>9nae%{Nz9NuFi6=)a>6Mo4cy;+4U-H;VvJy|FeE}sQ`k%gK%O7p&1NrKQU37&Zu0zW}52jc$WVA*s3PRg28tUX1hRN9J` z0aSflGStc&f_!C#io7Y;Ipferwi#*%l3vZH>E2R; zV-40d7rQbUH=Sl#&7NaZM4*gaYRA~% z48H*=y-w=+f&x&XUvVb0m%v1UXrG@75e$9&4*g1mL*H74wcp1`a_rqf9bhDDom^bR zL8d0S*#wS4451g`fC*HReW!heAzLMq69{1Aub1;2*t^@?^7g}rWH}r-c$%X*AL%2X zr=#KV?mnf7iemIiV_&mWht;89>+f$>B|wW|Q$f3+&M6|3s14)%kfEx%%Mz^v*;VW8 zg6e$+Ps#EGDlP}Mb_SpHd*$or&*gYH3X)=fK7IaDzt8Ajq|3!iS+8r&n~GhW;QTo? zMotzXFZ;nr-`v#txT#x&FH(cKfkBPh zITNqoUL-*f`CjXf-hWUWL_yuTwg9P%o?X1j;2)03v$=$_;p33HO!Y(18D-#*T0F%$ z`xwGkcn~1CS{@PDaq7-x09rut{2?AEdc zy}TgbQIsqhG7*fwYUh?MK&T{86F5$RDDGER26F6Sg)1^cw($#y^7XZTHTcw9bS zU4$$)pU%pBvkCH2qfR0(tI}(0OYD@FXC%X6*|%B=-c5|0&08sx;?6uNf10{UU2i+9 zgvRwM>U7$PM`x3?3d``w>T`%R12}h%9w&rdRCeukDSjSiFl;4R$C0>3u(QX;^|}Y_ zvS$^1Dpfk4t>&&w@9*Py@IS1NHrQ61j{UCeUJW`Up2LZe2CoxE{SrJ%Fh2kMmz=jp z0hoIINJr5!NRJLPc9#6Nq!Pi}T@`ppm|nMya{2Zu>zFg%?v$tLG@s2DAtvIS9W^(_ zR6!*Rs%Op$$BgM>uTRD&v5SIjQ&yE2d~eEUX_3XUA6SM2yK30?%3uj%Uy>y16!UWu zTm$T;$eLP|yS0NMogSTb=}U+uyeB8+d2WuvY2mLVFmyDuuR04z%>q`zz!ujCs-dGs zBG71s=q~V)h&?{smDT5Ux(ae8bf7hAOK>i=+aof3goe=^sL*`l-ty-qgYg%llg2BQ5488A!-;RKEv(Sz(Eqmt;u zr6sW%nBNB10~+Xt(F2wD)h+j>+a4uTr(7l)Vo*U**$8lm2pXyI^(9*VgZ_OEG-pT1 z#NSm%WF&pBi$qXFonC7lcIh#}mOLNvhoeAzH50Dw8w>=rfLyB01kEyvvSF~0-~+q| zo}}m}vR&-wH9I;Vm+fv-mWy424_S+6;}lJX()QyLFc{DPBS2*wzLWC@8*v7*Le5*Q z5+j*llFdXI9zm4BpuBzeE(V|0 zzX0ds_urN4+xtYK46AHbEtN{xpP!$~>Bx)*LLVTvZZ4})6pXUKf&sC{cQ-eIW?d$K zh8Tzu>lt^itMc^x6vssZ)H;j8U#5@cbACz<>bs9K+Wm;A-O@bl3z$`a5vPhZysASwK;^^1Nt_YLdC`!$ zw8BuR6P7RcCqHLV7h z<0!ji8+7+a_^vj^CZ!RRDG*Ch$-%si+qV~A0npM$Vp-QG53G$>kO!^XY`e@9>DfKy#7`n*vyZKjcnKt}H}q$|-UOB5 z;MsXUC;0yI>1&2^(NSUB+4aSeh!0eC7%qWlU~6=ufP4MD$>l}8f3MX0UeYPyy%sO* zBQ|^ulK0JB0{Y3DtNJcm+5znlAECwKAe^7(UI48sf1B1$$Y=@34bK$!+{Uf9o6KB2Fc5! z>L9d0cD>=aF0xFuSq-;n!l7n_L|NJ!TvA5e<~n%kT@QP`vL z&T*~TG>zX}zaF5YVfutk52Pw6s!@*;#cDefaL6VYKbtG_+P`kfYxBUi2MZq==%C ziHZnnI3cGrLNMzn16rephlld!%~ghN;Ba_O#bIlxcAoLQBxT1Zc@{8G4Sw1o7q;oe zuc{t_>|F2x_7o|~{y0|8DoT%IMvC0kU}cPC^6(HCPFtU#NJb$`ri7@ZV*pMv48e;a zFYnn4OB>3;@L*m069J)UKc0Cn;8541#I=rGC`g!N6_k25q$oTRU(oF|%VzhQ?D+-h zF2qk+LhU_PqfBt3za8PFX*L|~{W?%YT~$B<8chkHZBk=J4mduB-28gacYNHfLL7(Z zg&>VCCgt^?|Fax5yScQoDYa3sr(gzoCtU;xhO=pq3(&T*O-7_BX{{GA5;BT!S0Ar8B6M(=^Vxa#a{KY;zfiz#wftsngGrWeaj*#PM9z_La9FY)Gi>b~1u) z&z)~3v!w{<&T#-|7Z>S4UU+Vsi5qm>Pw(~F`B^e~#6Q83X^}^baXB81@(hB%XCssu zzn6KQ-x_l0So-d&`t*FUDZOr^e7e3#>lShS? zFOBDjskGWAnfA+m+s}OaPQOte3{xS(GwhYc;>b+E7-T__vX!6$tUupEI0liC{pF{h zV$3IR-esbj!72OoqRd{qrQO(;}vS{5X&8?C| zC5bOzrcvjV-5w84YLLnaF7S8i$X^o1kVu~?=$l+##$GI*=d~SjI7-QOMYDcQSWA6> zmBg`sc9y%KC!cVs%fP9p#6bICS-Xq$=?j{!-o1@;4r11oph~*5lxpi7me<^$O;ii1 zuHwB2@{~E)Wm93D!^kWv5j7ei593sT=YRdnT^VW1W`ozu@-!uibr#|=d8u22Wc~cz&2>l# z$;y1dJAxY=2Y)Vtdc41j0}(L_2xQ3EpVr8YPu*QR9WC+sqM{-h z>xx}zAW%g$7-Y_vv2^h4URzx#Oz>um0Eywz2wX+FwsJ6RoVF)j5lCIi9R8fQcaQ}+ zAZQsI7JR#BTAvZOi-=4(JfJz3CQhq)l$K0Hq;MS|K1f(<*5+8xUsCH5#Cc~y#q9C1 z+}zv**>JfLe2|);I(QMHU8h-;>3IboP!GQs&708Y3|KdT3OKB?aVxu)(X@BE7Z@V@ zAI?JqVlq#i(Zv%~i1a-aC{cY&-4fZ%^9zz>x`~Pp)C7%>mj6*1=wazU{qC z24dpxArjhGL@pP6bT&#o4T2KGI$Ol>Uc9+F5Sg0cw%BtSl7PuQ0FJR+&;%@FHCq3S z&y=F}AtQ&lvk%kBK394dS?g-xE$FCqOp(Bcb?J$_zFEy>&NOQ;lw5# zB@n3DhE9X3)aWi~SrXhMRC-R&m=1{$VRs?VS>KT7Fo>aYvXSUJw1S8!q16tKl5T;M zlR?hk!`(y3Zvr^&l1gloi_5(4`Nc&P*7U1$SHJx9m-6}3=d8(Oa*=17_?%=(mBIe_ zJS{6(m%SB)?a4Aj`Hq70umgg<=O>*$N*02v5;RS~BkqU12qKgomea>_dwpA8*NX(F z_J#tSTBnxaa0mu?FsJ3+55G-~TJDM z&O%I$@ik29aavX{bIL@167JRs4&dkwXx5aU3?4b;cj9O>h5uu%z%ggi9mprTy zMK@*C@06#zyV&dZmvtPuzb{MXK)UTt0=1j3*O~q(;QD%fTgK;Sxr<6|fu&^`py@-I zQT9n%SsC$9|MBm!gJ+T5eac#mM&oD`bP)m58Ksk|io=+WUDpneL5%v zjg&s!=?94j*je zgm9IBZlR=}-)~~ah_xxP>5kEv&^S!{gC0vd-4$mn{FH+Z1Eht`=1ZZ!N3Lbw3dj+K!^?|VXHhZ45BeWf`jkZ2~~@igQJq6_cC$M z&&g;QwBcx6>q4bjrVn?C;AA-rGFX#=OSIN%#6dtHHZz2r`gz#j9FIdU!$lyXTE*F~ zRxha;x)_NJQwP$cUBw}cYWy|#xw zFlXn0g+zk2s>7kxOm_eSbT&E9cka`sSo>5T9;ewGtZN7R@$M#N3Wrdjpj2buo$NXn z0UX&+E&TH0B2l`MNB#SZ`$f0`oDX={MMu&c3gP1v>(4fg4g4gDL313E69*BXO#(D0^oB7#W<8b(N#uY?h^G?grNM z^Sq4XFsq~In6=RfT&)2E1Ras!(c1?%V-X(@kpuUobKH-y^;rU3ZMzgB-8UI1B*1gX z5>KL&@ijp`WJmdm^H%SaRoz|RL@pRfj4@^8t$+KND44z8r%T0qgNl^`Iz8A+E&VuZ z0uL}cLrJN!1LB;`Qi3}_Jb@}7J{6{$_ zSH31czAYa;f z7nELJRg&wg&VkxKd9>e`fBC0>DL?-1_vP%&dEb_Y+nb<`90!SGL4r1C&Q@FkiD?K?xc1%L{d}jQu5Lnc6M6s zZ>|$eJA0&a!PpgxDK<$1~Fzm#K~A8lb(G-(?Zy5@crJl4`Lj_ z-HMOjvQppc;8mEcA5Lth6I#Eu7Ncou`Lb~nwStW38UQhER^{owPVLgEaH5}gSEp@> ziW8N-YS}qT#^t+S(&o3QGRUika0rs2bb!mdeEx>O3F+Y&(KLzpWYZ-`Gr@%{D z9j%j*4mzFk_4;c$8JH=)3;)8inJniy4D)DfrEFC><9ey88e^P0l9bZcW>e18;}03L z_hqPzxwWQi!Z$STb%w|uw8g3&-aTZk7t6;OFe5?Pf$=FpCt^dVDd#AuxbQe446||* zgUGqN6Eb!>0*GB4ne)hr*h?@UBOD<+V8xNk{r7% z`_pYBpzFNW5z!NU>>xiSir3eJ2ER^)PRdkjsZg(ezfl?F5{&t*98qjrt%Bsp{In0s zUfy3_C1`|_KpVzmyHQQ`%(no)I(4d1>_qfq+kYlVtZf?}t`2zb-D$%Y3;E^!!(U^H;h5+f6fF zLOL5bCpLDRZiZc;+$e(5pKmuxbElgE*Qd@G;mjc_%BeDANFn6Ppf|h$@0oHz&LL9T zFz`KOi_H!vO1FSSuk6bEAAeh(AMPXK0g3CfKdUMc&$f;Fz1Z&B5-PY0s!mj}J>}*_7l;JQ4x_JUE zkp7u@_T5elqs#bhcCiOnqmm8EvKePz#DK_3ksDWn`v9dW35a$D1W0=fx`j58Z~pX9+M_BB z?2zhllx-jgs%Kds5xn<-P#_Rqyph?ivml@n@8!iDR+}d(_8kHSPUH6Lby`_CJxGUX zaHCPpDn#~-=jp{oMK83LtzXO8*)S?pqDarGJ!yY(5{HPC!ETn&HqUN z61{TFS!jlUB1ni0Ne4F5g{+@MV8GEsA&gz}pExvuCmn znR~mECK+(|!YU%|X#jmdg1-UUwgRyoN?4fx;C!W>UTJLU2-KMiN84>#DuIj%c0JIpa<#d%2H#v@4HfTkapGArhC~w%pu3R#Xzra4?$tDSJp= za1Wg_4pzy5N@c5C-hTYC+}+zvYgG5H4A{}^L1&o*5&=j59RLW zE<$B8S;X9wv7EznTXez!z_&qq-ES5l(Q*$rDZvs_Gff@p-ayc-1QpfkZy9d~PaQXoP) zJpN<9OE9ya&r5>>BDq@~UX!!(;kyq>xCA2q{+~bRPB`CeGcMKX#btO%8_+tfe1X5t zB1q_y;a?ZAi4Z^j2m^%HL7X!&v|X#bd3%*!ddS7o({pLDvpO-{sYuWd%iZHN_c~>r z7T!QN1XZO_wgpPQ?e~%ZxOb1s)oqus@8=HbBZ*b3e_>VJo2O0;T24s_Yx9tYK>JQU1h> zxlTLxPKil7tTxfwliV!F*!(0A4Y2Y1^p7@k>Gh6-gLq{bj|pa2*x*3g^`?u-w!lP* zzIS!96sNA#w{F3ZvbfR6YsxcvO$-11jI{x*weEIyT zvXf8GLWHtGoSdjt#`VgoVgVb9@nqUntq02RTsTf1e139#oON;;{k>@A>)T(<%WOJ} z1hD_EK8ygTM_91r`}9sPXVW-v*=}lYvH&eoE1x%wqlKangK)r}9v*VwwM9kUE2}D7 zF%8RLo?hDT)Gz6=hgniebP;3@rl0wHGQvOq@sC+6a2-S5&;hXDCg5h0EAsRUFe`;>t|0yqYH2j)ullh!1sOF~v1Bj`(3a(^QrY3JN=qOvJ*n-Numoi6Y zpdYv$VB(xvb^k+4CbX<+KVPP4v-Bovmk=D^1+o`dK?f2T$#i8Y0%e)NYEk8l7mG6J z53@f4O~{Tr%CHC+YJh}$Qn@l})dF1bX6lp~I?{^67j*d*BI|mYtj?^1$@y7=0jQNW zC->OhV5HnXC=OP!%-2@y{;7@#XNFje)>LJRYE(HsJccO2!FaY*9Pg`v8dlu}>YD_P zCKr?P_T&2uwxUMJVW=;2@X9^b>ZsFCAnm*GU?36rJ_LTO8AHm6u{+Qn1THAw-Q8V+ z)&`yV4h~4Cc13_>1w&h{q7^-{p2s~AaI360%Rs?b7w17Xsn!XoPbU|p+i8?fUvA4j z!>eY=&by{*&gKc&mHjv;htPS%Nl}V(-;r@;&-(5ct9AMA$KRCm^KqHHxr{U{6{s#jM6JUoz)H{s3YE%fY9{QHU>RjQ$&2U zX3LW6R6};@_*iRSl?0b05fb9;IbuG59Tw2AbMz;=X1}z$AssstGUU_qNt{bWbdn_1 zI<~ToL<=GqQgUGJbr26CI}lI-PRkf-a=H-9PAj$l1daLmUHSa^I(FFkfLvM&fv12N zw9PiT3+*GetQ&vg-3U=3jM@}ux*a5F9Uck0LZB;75kZ#ExP8bwary@D;6ShepTB%g zFl$ZMQ1bPj)~r_TyKX5GsgBSHx?$5Y`0ISholJq-^pM^sr>& z=KN)qd+eMj%O!z<3XL%()r&zw`A~uqn`GQB*a?Wyy!h7|nYc_Gnv5KL99`w-Su!Dn zIt)mT7lBMfXwhZ=7}*wpBa$&^HoXaOUp`g#=s_bLG|8CBT)|5=UwPhPba{y*hy)Ww zy}o8-r|it4JG@W@#0j+^PD7Bu>3eRDM#LpEp=8I%-90`8o*#m6^|)i28VSq@$?h)5 z&DI&x9F{-@#IJ@gP>T0KiaJ1oE)-4!c=pq;ztn(9JKqu* zGX}J1+=XSOLsFuO)#)aZR1>i`!&}ZOhsKcs7%gD662qvr#RxtRnx-Te?fhgT@7(m6|Nh>E~;vGSNE(XJG-=81v z%UCyx@yZ8s4I`ateht^Miaa4Sk#BW5oh=*%5TSK7?BngnkEww|894KYr)dl}C{+gS zW;$1Q*I&xR^=+*O2E8DVrM^9jqh&DshB~4wmh*JZ>U)!0Hmv6))BCjbxVUP$-V-{& z0MzW7-u^5*CBAc2szJ(94 zHwiwpc9KLL_}@x|()#DS1)0QIs#wY*NPrR6P!ng<-U~dQ1lT7hu`_~E*^#>{pdhwI z1+EHS_2ZDWjE0kA*b!)cu`b7>)1XoFbrr7i{p<+`28KU|A}(hs;XFS*mQTNut9^>n z9#kRan#d>9P1yxOa%b7k7<8PBaUzFXNB=vF1!pgJWPq3_8NATz#3o6-nKi?ro+#~6|3o6k=5T8s! zq7C^qW!O3@7&7;UjXeYrY%ZsWh>JkXiL-?g2o0`g7qG#&4A!B81nz!qYgrkGNd^pM z$SCxuY06+ep9mAZmtEN=6K7+z97^WQqhWgpLpfI*KR?0NwVYRfH&VUT?(vOx*I$E9 zE9JVEn`IqmOrtD(* zKmS}-+o}#44H4(&sQQEB6H{MxRtOG8DLFbX&YH=)$~w*xq~PjeQnpb^-Ia}UlR%Kr zT@OqzDqgJ8SAWzW)(FnUC*KPi+P#)RhlW1m-2fX@xzRw2?HnY~Gs75CM9W-ib*35t zVd9!;D67``5W$#;0Bx1m1BIXd?cr) z+d=lgA&Ht#Iq@iLRiYb1$k;vJ=sL*$X9J=+eqed}u5UGcP`-;S>yL;Hjr7$rk>>T6 zFByCxf^QE8Wp(#hmikB!P*Fw!?|0??d!6}x^Yqd*XP5PkKkd{71y4On`u&*xNqZ`qW^r|ud@sUQW*3Jb!vRi?R`QYk> zl=8M~K?XxM3aq9!tTs>Vh=Ye%Xd{#j>-{yN7{3IWO6E$Y7);sNt&*jyy)tkz`$pPH z*QtMFD9c6`5G#X$($@A5}3?Z?RBP(%3;ZJ zWFXJA69IZ7yKq-Zr;@c~1OjO)nBRgZfrNfzr%ZiW9nx%t{kD;y+F7!`&HxohcT@8- zxEbWw)#|udBxAL{vL|I90Rhy2!!SOSBaOzv39iL!>c0yETgC!JLFh6ipCbX8E`tNi zi$?;XTFhR{roGNU7I#O&p)GB@T_hV*HW2tQq=F44z6__)8@_D>0;hDwA+ie$Hk8po z7bT=|qY)c}DEz#BEUnW{xy}gaWe~)pZm&$|iyF++v|lXpuH?4e!#ABqdAhqzKyrRM z&iSJ&AgJ)({n4O2Jl&Vk`P0#U7EB%(?K4go@q{~cKSyOreo>wpZ^YSG`QYdT2@5*|qD;_B|ta84f zD}s-Elp+$k-Z^Wa<(BeQ-SHuQ|+pMpjzu?fGeW zT^*Gfd0KN2+TGZW=f`E8Lr*$ef<@i$AmAjCI~koMpy&Jy?STZ6H9p?&%Y8hU1Eb9ymE96Sx z^_19rpC$0+q#5MfyZdr=c@|WZdLTXoM}2;AnZ!u)W0bK`+7gEG#H<=RHYEvAeT>?= zeN^fwccljj3hr08S34UdaC|yjWD@4=(55Lcq|<^hFX3uZ8k^qVhIC|rgUCr%!4ZQ+ zD*G3yrOK2hJHw{#^eeMpO^J%0$Rm+m)wh=gih^(o3?KnnBFKn@KzheLFkh*?+Vt_U zlrxf&(jU3dDnw!N0!5F`%F&UUcRQnkIcg7kc{$1VBI<=`MnNsQ%itAEOa~4mQk{9H zS3hrjex88BGpmh@D%VT%3Od=~=jW$d)&NOGTxeewt3?jy*I$1rcegizrF@5j5w@nb z3+p+ZrUv}}-ouC5XRgM2+Z7#>s;cz%z?y^L{4?RxnV$w~da46sc0?D9N^ zI006-8$EN8C-D@hfa7;cCbG*uAjFG zihxx!`81<%QxyZ#h z+fKb*3)Cj{VC=((p9mHn9lQ*Wb8>YPc}$N?dJM((955H`p?)LW233ZfjgBZ z=g*J%ESY?SbIdc@t;@gt%fFW;x!d_Ht+HRQZ<2{dpWYC!y-bn3@2;W+NC!(`6PhUoXAm5`QNlC)ae(%#k#qaD~`?H9}11tdTpou3BDa~6z{ zb%tpWjEt++E@y5B(W+*twdZhgNRd+#B|rmVT9@0epOPrZ9wlD>@lFD58z9*CztBuc z$b7j-u&DDvV#3j?lS42^lk+%MS`A8~#~9|2Or*l-%fFT{UvE=Bz@Se++pKp~HjG;^ ze}Trd%5t+yhmqhwTV+a4%2menc1f^zQi`(n&Zg3$`y~66L|Bhm0yIo86{@boj-Sn(TjI>9bS3b?bYm%&N zv|ZAwyafgVsmsho6^t)~&8UDhMGfE(A_8EBv|s3XS8wT62kjDrmq5=p6?w>KU?}Ph zw@HCVkB-XQH|IGpjLtWQrM_n2)CgzB^J<+z;5+W;Il)yTDH}4K$*hKn4m<5`411t8 zeUtlrbvm+;2w}_Ib4;T7&?0D zpdA^nSqc528lS+U#5ph?54YC|VzeMZS{MSKDRcy{a)g2mPR&90-PSKKbJ(jQ&3V1( zik_6qg=6y zbya}%d>`nLQIS<3If3CAt31y!VrQK%?~=Jp&hYekngKD9O6H`@U2iFeRPw3-3G+BZ zY@k7$TS%JZLzf{YaRk=iT3Am(r+spEtdUt4eoqtLuW$pDF`S1m&1>m`TBU$Rc}&e* z@Wdg>DUrHX}7vC$FO zmHX@KOt~{z&t9clDCADrc{6omcEm50ECXo*krHW%!X({-+Ky;kcu+-#bT$jT{_^yY zt_(@Xiw+&78SRKqq`8+N?GZ$BwgpOHQS5!)7`g2Roij%JJYdP_btf1YS(W z;g7t7;7E#ES{cbRLkg4!kd5o$A*CUDAY_Vtc4NOSPxtrr?62{zDk=qPk6sBi)Qm>1 zv*$TWcmM6%w^>&~p7Twn8V9O3JT2!JZ{pCQ6vSc#1_mKnYYx)@Gy|xhZ|^>SA5>Fj zEbw3#i}Tm+mJdICUzRV=aqR8{RG@b2jtDR?ej?aM(reyf7&0Ck5a_+uSMkfaF)cGiEv=&esjfI$D8CBDkNF`dy}%pEol4BweTE4k zH%burCZv1Fw0~!_qI`)H(Q22M*;4{!B|bKe4e>+DnSw<~jCa)H&W|YzLcu7xHnB1< zPEC0NA(%+FC|xzrMyde?LEwWiKu%(uI5|#4CW0)6s3S{!e0q%YS3|k|@-@y% z9Xy8WFz6#au*ehhDywR=3GM;?W<;dN=jSq=*S=uJO$H$#q3pyVnePnp1gkQnX+_+V zmBq3wWjG$^5E)ylCPSKckhZ?pY_#DmqSwJ_5ZGKjoDn7m=>WElz{O-CuX4E=8kfRU zwmR3D@|FY3z}9v+hT4QJWfe||PPk3-o_BY*<@w<$*%4zmxjYXu8G0fs@b|l^r($le z69}ZVAj_0pY_{e8_C6Qhr82`D0g6Fk_+-;+*}2$S&wBkF*x~pjb!)~_w&l`ub{sJS z!l8RNnY9b(yRJWfilH%*(>w%_puO~uEYt-O^xWRwC75`8cuN1c$Wq3v+w__htO-4F~3o zJCF9&yD?J067LEsBme_4cfZ!lO0H6ZNr%f$ANEW325bvyN?jNU(-h3%NzN+NLg@tY z3vy#W!=i4t%ZIBs$uK+zB9rG5RLSx&zB7dBz;$pA8P}9dmSFgkJQtrW^8oKFA99fC zmlhZ>Zi8V;0TczHhB92NXJ`$xCd(D6uoG&>*4r;y0D>*+!Zs0gk$~t%kR1w!lm}9F zG{@l8d9HdQ0&Y<3mrtL=jR-MR=S+u2Mn#OAyXn*@<3W@N1%GPv-9|~th-2lfk$Ib) zUP?`0zI?4glmHA`6y1i`h{-71aNN3EWDqaU)OtxCs`cy?}`a|+eJ=`Qf zclMxN?uDd4_RcADE(zjHPdyz6ZPgI~t=l*Cl0%FP`l<;F+X2p&@p@-n70#MOCFg&= zify9?Nl0zA*@c;JZJ{N!<)Mnu6^@opgO+d7%FY?2=;Ox^DHl2~uPaVa5BeguQvKa% zc*tB3J$x@(5ic)AQmK;)e4mo!a2Wd!6{4LG2iNH**l`a)=zP-I<=gD7AWPz7-Q8DZ zRnp?n&fBk_tKF5o9q!lO0HsweW8{4GdgbxqHfJDRJN!oEir3}o@i}Ou&XT1hDbKno zi`Unn9D)nB!OtNiDitg1Arg|c-@R55x7mD|;4s}j?M}+LlB``hDhn;ABP71iP{`%Bs~Q-iYd}k8TCdYLxocDwA{baE!BB{BTpSMCK~m?rczcxv!M3Gt1@}*n z?7C{pgEbrqFu!O9c`A+>L`5{`(CUY5h3ui$3!Z$-_51PB3*_0-(M^sOYO+4D3;n6vK> z5J5$wi+nzV&iTn)I0w%P!e418LZDF}XY5S`RM$GdbOIK=va&Jf!uol4GSB{(gQmd` zbxO-**{4;|kRt|_*MO)Pt!(%Z*07*O>lIR{44I>vK0QY#9VzT}Jqr?`?=~ofE)7J; z!=$r7-no2uES?(sxD{l^FPWlJgtO^f`MU`=(pzty_$)-mkjxCr;y^^?32LhGi!ciW zM_`vOmr{D2<792Cjo@w-W1{6%q#-yC+JJ<(<&Y5k%vz^i-U+&f+u;rh=w&vC~XNC%+8=0|6pDM==%ujPzQ3gcIyNz zIu@K~Ss9x#dwz;TJ2n!Trn?y$fpklGdvz6C8`?#tQ5 zBxi&gomR`cySoVd=!Vc$AUnp#8lR40Ly?zB;Nl|ra{&Xww6mi;cGOiGt8LZpF4&)n zE$2u}LI5La^Ze{5f-rQ#yUXS!WbTqHW?g(Y-w?8I^f$=S(@@Z{au%^QE!GC_wDxr$ z1RImnarQ*e=f20EAcH0?HMsX*#NAkbQ%4r#epdmdT2>ucX1X*P~Xoj}YCK*l&N*KVLu;?K*&BJ6e znM)sOh@l8c%g~^9Sd%h?ERbwL?bn#z`Mko)ApP(IX4z>py>fGVU*<@H z$bkfnu;nxBpiaVsX3+n@DcWTA0XF|8sG@VB{meee+HRHm65Q&2HpLN2xkw-`zye=y z*V{TiHSBGZ@!GLH6aD0?MVxB)NNeMl5Z7=|*fQkf@Qd6VsAzLnuJ4{gTGre8~gmrpFwPC!MnJ66QY@W?z8C^C@Tqc-R&ci)TU^9jhuGHeFXHIReYb|6k5_Q<}N^nn^{Xq7zA6_7EXj9hhS9%?vOo++`Vqf=mf&z zTvT;emnhQFJ3hjF*X7mDz%Y|{ljyvz%fsDuSwRvG+OX|GrmTaqhY2>NYau>EJNm>$xS__yB~v>^mM4J_2#7jCW9~f1W4!;tTQR zAj9!X-F}b*@2Z70fxwo1Z}>^^DVyU8O$w?7&gXYNTZZe5v(A%gxZH04_Q7 zg`W6MhBPoxGFmViTEBXZ|Bll$p{=HnF^Hf`M#DuwFiE(m{mxk6<*J+=9i`qqq$Id! zm_Zdb08xt4Fm(Mr3vNLyVkKb_>Oq{V)6^I&nU0I^5IcyR5SFCui{oo-+tE_?_v5Hy ztTz$T@b|q#qcC~~pHwBg4DCez57z_dB z#h@fc(IKkSusAPSPiHrGJKO+HrqPbU6V)nvcut2utk&^DyB?FZpXRdQ%6DWAS zdQ3(}yB$;|kkWbJ`$ptSGq>DqgUJrknxxK!Y}jc!35{f7455nx=`ct{of&E%s>V-A zS4z51h&5Gi16rQ$5Jrf2M*aO+=?!}2>GCS*05nG}u69u{x>b0FvDrVU>W?vyeX`Ef z(Uy@6M!51$5C*;BdTsCSOg=Q@qMfqAVxcFys-F2CcSyD%Qy1hixGw9{!#rIgjEjv~I#8W1mie=_H5|L%qgl(y` zOm^--4ce8}+|T{P!t%P>vnhF{3A$`1*$@mT0l>}sik4DF^!h*U(kolQuk_6UJY za?tN~0vRipxy$qAsvL}Tdlo5IMqHlGj;T^%x4!t zrjCzKl4*Ya_$5v+ftprT3U3=y(BtxLyPLE7 zUw>03EA{_66o);!eRwSE$s{dg&Vuz9z#H>Be|jpbO{-jg`COWq{jKMafFJJ>JnLji z0mS6-CZ8ER$kadMyL)??B>?T3FJH>}+qZFCDe>u{UM0=j6;WCEU2oKCaqL_HfNJjfI3yStRuUS{t5tgM^u zNNDemYWbwesc)WVQ4DkFZM5hfw2FZXes%zCq|Jzaum=cK+DR5BO7!Pyk>EUkZV-bh zc_7T8jGDsUQu_u%4(M_ngXQ}eQX62=I3)GFySv-c>D1|EgR%Z@A|(C5xq=0k4&49x z-Md`Q(^qf8=6CT4A~?)S5DXbbv>eEnb-BBLN-bJ;DVnp3e$EDiSrMN^)!yI5;QUAX zo}ZCiqz?IW9W(*Ma~*!;nMH`|J)mob2LvdKMnDvl_!-VdoyNhFnjk?Ts;T$<95sVR z)0#=MK%eqt8o0(9r8Q}}ier^U>e2U(UQpn|;p>~`Y`uppGX$vgAlsWN#Vmtw?a&F1 z9XlARvD9yzJt=|ltpj4=)x|}iLUk*0q_V$|<+S7YKWmwK8VOr%def+NF;omTWC)Q( zNu;y47h}&^)jF9vI_0)Sq+U50QNQ11Xedr<6%$m*++~tJQzXvFaey@vSHEngN4!ol ztU^X=oyb$1G6P7uRCa9N8R5u?-rm-k66&<+Jzhn%O#ND9j#EOt%LUvt2psLzXDQg7%p%c2H|5{eFfG z`GuS_9_^LSA3h}NzPq^&b8Dh_PO9%Sy4?W!j6;Fm z0x}?+lmJl6<-YITGr*?SOlk8E9ct}S6Kw8A$eIZl?A6Ole%AZrPPnK@ksQjSHapoy zS{I)KxjN@E00Ck|aCYNcqqE=dCb*;@L308!BYU)lt&SG2+J=doqjy=)K2(O`7R)+- z0#bV75F6`22nEs4+6yxM98`v$fZQ(B^A&x$qczGWO z!r{o`{1xMop(?)H8G~Ty1cEYnclA@Y!q0QynExDtU_faob;t-fRi1(pm;K*1E0Ok_ zUwjjhB4;+_q`;-UtTj7imd4%fZAfi`o;UB_oB4 zg8(d`1Nk~vt=NaEHi;a@rU+2oQ{!sg`P4xey=^0;L!XPcQJSXjO=91{#hnNlQNCN{ ztg>CADM8fpf{s8pzJaG^&!Lf?OVFiV&RJ2yrAcBY2s94gMba=XQa?Fy6lvyG#3`r&7y-d09=K3P%P{JvQbDw0tNS*?4wv9ci^4EIeHwi==jY_2D z7(F~+z!6I7WX}E@cYw20j#5%1BINVjG2?tCPi#1del#8=0P`99!%=ybbUG(H-jVY! zNQpmKZ{m!fGgxSt?@6gscY>DqF{Dfz;9Vh_#Z$&F4Wd1fu5AgwfKh ziIafES#Z8PNSn^KFB)K>upe>tjeN@SY@f;cH|)$q0D!++Ln#p zN*etUMcK;HwDB8%PLPofqOCvBjI5|!>uI7mJpjKow zEvFs>#!;-+<*?h!=YpVSi)oBC2-ZPI{*m=#=Nih8Nlf<-`5A|lg?F%I!-RM^|L_B{ z_*Df^WQcgj5cy0Qv?;?FuE)nmIcOqbQK*Y4OJp>9>v~A3Or4&clpD-@BsD=0h(7uZ zjW9q(*~!XxEi>IluQWO9PCLwZ3nrieC0jQ}Q>TJpZ%>`5Y@=7MZrdD=^YdzDqI)fv zFRL2i${smflLucGNPFu<#0;zYKPU%`FZvaLd0&|&BM_MQrS@eD6xNM(IXXCukPXMV zHy#Bh^Nux`;t*X5Wd^KTa-#jLqcvW2stVxbsTo2M-Uw$ZENV6o+DQrgmY&7j8dN5zpt ztb#SrkOYQlfs1_zb6lqHVk^5j6aAqQ85mTTO)KO%L9q*M{W&22Tr6j0e0Z3>o=-Rw z!-Hzcg>%?!UrN6}%znE+31kRn?OG1|ne9FJU%&!P?a{f-k@JT{P2Ac6q%+j4#Z)O(H?9dnGhdR zyEoU_|G}sk;$3OJl<9n(08(HpyE{J8MRORtb9#Ifw94I%7*dmb>T?1$oXTYPI~B#C zb-_q#8?*sjM+f5!-H2Z#Hmv(c8=3wKEHri{au%x4B+ zA=DlOks+=%dDI>!YlSpXJ00d7+(j+W0{XpPyFAQiWkKG!*(=AVM}g&?3B!+|6(`3h zdFRLb>*zMnbRbmb&X}bkz;R!j6gdU6ybr2O5`xSo;dGaK3|{ zb?9~IgnB8br>7aWj8M!UBDFSmoVm?Sa!t~YtUXnKfv2$`?6q2p>;Zc>{6y>OmgU%>gP4t@@-)KxKhzPs711j$a(wgQHYoprc;xf?b zTMiT4fD%NrY3kq%Ese`KC=larB&uM8fdS#1MZFF5(=0;+erTk(9lma9b}Q5)8b|mm zYB;1rnHF`##WZ3LnYxvp`ffRUb)L)~d~5OMbL|>>tj`mqL`D)s-fScyTWvQv)F2@W zN`eTz*8&@WUUGlN>8de?*an5r1#x?wV98WAebjx~ zszD}Z7-alyJ4T)}5zQVR9M-ICvxzjS0Zo@*E)wy_xZK~B!?Rb3{9QXOk((`H97Ywp zx+*?e3nC!(R}FeNVnH8Hhf7ewZ8Ai`B$1)up`hC9ST_6J7Q+Z^<0xlC7p^GK*> z{y52f5GYd0qdReTb&=LK=ZyKs01L z8Eu&@r=zyWfZ=ik9T6D{EIGOzVHWi5yi3P?P6#}0t*Y}p3quJ(10oE@2er)9ZkA!Y zI$otHh8kPlK2xv^Q74^>ji`))T?H`^m1|kfe%0uIxO>Q%9v>a&t~1oB=|;e0mGfvF z-4&fa?L#d6$7D+q1x}cOFP}3-4;-q+Ey+gdl*MvgFv#28o2;!&2-%lY zO;?Mch|tl~Q^_D=|#`**M9u(2+$-n=e9{qTJm?;F;& zjQ{xb`E&XD-MeJa`@1f#X0KPy-@MH`@39*?gQklzyZ9WUa^<&Fgz{j26yYTH)o5(3 za)K{5PW!Mm)oQ1^;`sb5?S}$rL8s@POmzh9=l(#csU(hfz9wzfSC>g{(g`M$&(N!O zkUiZ3s+>sAN`{acF^=F>cb7Fx!m`_)m zlfVMk1rl<8b`l$^G-qVF(i0J~bd06r!K{voLZ{rc?M9~o*MUt)nX*&c$~(YfxJN!9$`}Mhrqx5e2Q(mL zFfb%&8RjmBjKQi0pG2)JQb6RH7-n+HYSWxA$VjB8W8w1ZD%oNf(jeo0zg(L|FdW3_ zin4JCWR3oAxMIXH*oX;r{EZIrc;yS1a zLP;JU?~+N0ga^Y`xw-rtf)%zf6+oBNr2?CBpj6wSDc;}Z)s{mGKn8;0>-q69JfFWO zAkvvKpQ}+<1VEinHe_!F7Mz3kb3tXK&gav^ECD5$Qa2)fh3T5$%rxRr(3DQET@FV_ z*?a7HwN8Ps&$@ej%&;gCxb;yRwKiZ=917>rMhR3vZk&g8ahCnlxd$n_+=8JQJpyFL zF#eHoMuCkXGZA^x7Btt^+0LbHcg>7YRfqJZrTqMn9xt1{VvP%y{)}&na?=WX^ojqg>3LpgZ!ro1=J@cKHR31Lj>byL#vhxpuXA7}4AfA}e6G>%32 zO8EuR?dr=#xCgy~*=kP2Cn}NsBtY80PEPd5_YwJhsQ~}7&b~;G@LU3VOr+VOKFwE zv$ITwyuW=cCv-7LCR4YaYniQ`YavqeQyHw(Ob{bsplQOlT3?A5C!A7mi1JlCqITqH z|Gvw*o}Zrup@pWJec=pH#AJin5W$&t*z@=A%Ir~ViU7u$5H*o)M^D+vOpv--6w#RNw%px4=0&xnxJ)84wRCLV7^_{4 z662PUcgRFjoat&ljlnk&%Vx+*Xc;@m2qZEA2i@Yf4E4ZH%?yEN`oTE>fI=9)K3hhB z=xVg?;eLz)CoVfVfAcC4Btvli>O6slHaHoyj7g>|+gC5b(my{xO*up6J9&J{MuEHU zwSBlKE)MY>MxRV7Inc*RoJ|4;%-Fu!3gYJyhYdEmf4EIc2FKrO^Tkg;a z>`;zIMl0w7p{XfaN6!qEV5nUhYw!0$Or$0z8weUv;b`8}-Z>}4d=MUS9%?Xzcv#vbWSc8iqhXPk-2WS)|Y+2LNEQ zGvz!(e;_w93)!IWeZ0F*mq4?-S7xB#NDJd5G*hEgO4>gPOabb1S+0a_0b(LLlZcOzPxEVa2X?>LE(bC)uv|qufP69TAZnI z(iwQTy2|;L5y~!=6eBdYUgd1Gx5%0p>GLvsyf3ZcQ8WSWr}LDN2+lw>v~Hy)KAVOE z1I_c@h|kwtt(u{(hmSRptmH;6Uup0Oigi48~+b;*hVFEM)S<+xZh5gC<-`?gdIuvYR zyZ`_o07*naR7c=*h$iI0*;1$GjJ2p4?&AzgVss8D3$(kn)Fr^+2-$r49D*|>L85em zLbBq>&%^zrS_(jXZPoH8f1_Ik`iqD++&|2EuuYsXrw37So);;1Yn!GqveW_)2P$;6 zkH!cKf+Q^Nm%Hw)#x@=uh9@B=9UdH1CBxM!L6St3&E$_{;Lfs0l6_JlB_XQRjKG_K zc`=V>zy5sz@b#BZb=04de)uVl5Da#-Ut8tO-##L>IioIC#cQyh12L6a7xO*I9L%ealktevF>yw| zmyrf#Gg^L6bmidU7PyoQk^`eo34IXJLN2_EL+{V8udd3+j~_x@`h#D58$*Jmm5ol% zu69NapL!vI91{t(qUbwCVB1UWEu4i;E0=}y^Y4NTnY|6QM#>oKgxXBh&P>Ad{N7RK z1ww}+fXig7ATJlWs(~${ny0UNIP91Auc~aQXG`md*$HX2sxu&x8KozA9sO>jU?u;u zH^H3e@%a#qPHP)sCQk1D_O9&bKz5RKwYvSmB{ zUDXu7``r)a_+V7dPET^-)IzVWIV;X+l)#G%BmxF|nY%f&w#`_Y zEw8i!Vs7>K5>R1%yZeQE=CWj6WoCP!fv-_v|UN1vo)Lisn@% zG^G}qDBBSp)stHIOM<`_Hov>F3#KI}0wATKC!%z^uNs^3{_U%jHhhM_1!87690%uK z2@-WsB>Bo@!%jMx?r!gr_-ONkXh}Note}maGl*37Q^yvb!63FkX9!i-xrv+tx3sJ; z!hJG`Eo4>t8Jjw;`}^Pj6yC|v{wRnM+lH`b-#jzhq{Qgi+=<)U`}h?{#0245UM98{)CjnFNBpzqt$&orA4EBC%k|}gDBOi6Qf)>5$Vm%b!E+q{dWcqLSO^2BWr{yDm@6iW#MAr z(z^@R-izW?9R04ZF;2%UXYFPEZh{R;avZXZ4b($Nx>Vq|F#y)=vWa+;-DSh5PpCe!#JR>xOapMqdkO<7BiOA5) zOEOPUD&x$#AvO6~hk1`GqPnkH0IBoImMSwFNm32?UjKd2i^Fnwau{U8XV?qIAVCY( z@`~2`D$mFnaA>kf*}~B=!647SACeD8jU}J?(mjk=b?HsyHSOomPEiL3XQOTM;pQfh zy+Dsh1%VFrX<3O8u1H!4Lbo^fal{7)X3AICmtnWAYOV-65dfi0Z$hL?wk5HwpA}L; zE23Wx=-H=dy`m*X>IO#dxKP`$av2}dr%MigJvlQit&&b3&xi0MI`=bb-7^2Q?!3IDLqy5OP!RB#sM8QqD%(4a;oCfztnPNV&xT8;H8jtHFU{pcKk z<{<$IV`;u4e9fv-;>o!IE>%Gd*~l{^z(D~Rb=jvb4ZZ&YMd(_(XO#KON$B^|3s2NZ z9bUJM-xpB7|K{8Byn@*6g=B;j%AmXRM)uZqsAVQWg7c^D7$r`_OiCkAbVUQ}^gDs| ztJC9@uF|4})ccG_LR5(ID2|S)o^?MZ1H*2+OrGwuKh8ZgYBGBYuLbo2yBXxF?NnBp za^n0cC?~^9^8&w!<7OZ^xpq?x9fzh){`5i6r}^Zme7U>|>V<42>!S5fV_gv99SNWf z_LLl&Wq&kCi2-lKFC~sU($WIT%{t}1mf&P>P+q@%Q~E8WYFr@!=S%6eHnDlVUR4Ec z8ZN~F>A08>4%?PC_CMQ!pD>@5E0WmFR-6)zeCRBvESsc_aC38?_l2mvY;_K`%i)2+ zLL98Fr%pICxI00E7V|RHMWh|O*($f>fh88JW!hxfbA9zj8$*`ZNze8CJT2WO(q6la z4k-9RizSg&wN!BL^TOSjO`?$4>kZ2DY#FI$sDai}>)GuM)B63ZKmCjNoY&{)N$dpE z?jEUN0q@h(EU-8m7$nme<|i$*(*%A@tzJ3l3+LSh(ET6i&`Br+n!H%VodORap(SfRR=1(HhvvXK7 zIMIwRCQpcIZo@=c;8lwRlD7#Q5$8D=4Pxl&1c_E1DwoTJ5-_Ost&LGNp$X)+Gaz0P zT*(;>#)r9B&;*-Cf|DbL0wDev@&iIw3u3s`c^G&-M^>M|ZR&peawYq^Xk*-*~N?syiT1rdR+IBc?JksHV8_jN0Xgk^PF77cG9 z%Aua*z%fu9qQeSGaiPhOzIpp94!_-~f+r$B&++E%o9w05Ca}9!FggK9OPQlEu3}0U z_Vl>hnW;c`U>#>G*kS~0@G`1w=zi_k;B+`D=m4@8$0%wBBQyB^u9~AhX3v7~qQ+0U z7);MwaMI3Ho&7+RWR#2gaC?_}YJ_S$3z4I+TWh56!ucP^2^Q+$Guxj?#q4p;te^=lH&f?1Gd?c+B} z+uEhnw^If5-jEg!Kn>n>y^AlOLy#2A;7S}sJOvT5&TFS+D465qa4sbp+35O50>wGy6ufoSvLUR#xx@`Xw-P`syqJoDdGLM(2*;MQh#Z>3M=_WjslR zWI=Y9(c;@x$f-vM&VV@v!x&y&A@1Sn`J31aB4kpX2tzr_S$@C$?Wh(6LlJ8wDrsd10k0Az|CqZq~{$5>cZLSi%_D+i-Nhjw7 zItiJ2_3EVbyNz;savTzx0P6DcG6Q^Y8)|~Zam>OQ(mKY`nDHXmV>2a2Y@9ki_+N13 zt~^gCNhAbJ2I>f;@lu9;W3FYLt^%=QSOBG^k+&}9Ijvyr$M6UTnfn78Plwcw@!;*)CF}jAXvs;n_vs6 zVkd?o<@(~Xy#MB#_%J@1?c~RtM`eYptJ_^b+K>IhcVk;`~k8d4^RrZxyHweya-bG z<>xWyMarD8+8oCSDiajsl8pwbsjKVQAcqtiR^;!0pePTf&h$^e`Av-WzzE-{Pboi$ zI=6|`)L1zpPDK`FmVsy}hAksDsRwp)utY^56h8p|VGO++5}K?|bjOLx5@j`vtb>cV zAtHoD$7!e6yw2RF{YWghonI~iEjKVq#CV84w~OXLLvM>A7SfRU607&8clHMhnBk?7!v8Ub$!MxX?%^8F9r=jS-{ z_ix|k@>vUzvx^|;5VW{N9OHafgBQJOlk(pO2jlYeI4%2!<1$V5pnOdb$9x2P@R9*I zvQdZ5x>M3hEt=+$sdMXff4# zWG)wP#fuzA{xgelrIspI7x4%)8fmX}0r_5m z1d`(fTwbVsIwR1x-2_ClN=l=Q2YcBkqePB-bZ2XAOGohX_*w9|KjU+<;>Vzj=i^6Xz6Dxu*rDyc|>KN zAZ4v?>6TT_=F#zKRef7)on98RoW=vKt}kf^RI0PKFS>9-WF7@Zccy03$2bx}PmFz+ zK1a135FO)Tm1(UR6!eD=AIsD1rJNiN%9}T@vwv)^@`b>e?YzIcsR)sCwO0wzf-8xP zJMZpsLe8!%lfCC`1TD_5vRcr~AXJ2B>a2-TpI{j-kJ1FY zt!x2-5a_tiO1b<1LLkv8MDPq7GxLUSjPu@VBw%qa1>DD{r{SOo;0!=Ac($B2mV}%k}pbPX zgD`fPhw-9}JVOJI0OxAi2uurd-*FZM5*&g<15U<*75Ovv7^^bJ^r$*mZY#8*qGZ)T z854_L{qPtk3`!G(+-sZC>EOa)-y)5${4re1WPvHKq}D}ct!5$)H9;bC4hT(fU}Yuh zdPhY(*%c%^y4sUS?k%&%C&uWdA1Sz>- zrH-yih!rWZcMh1@^oTY(NgO|okp-NaOm5#HSdBUzQM;10 z5vVe(h-@yDATUTkr;!LgQ2jF$XB^m#5p>FB7v9x#ab!0)H+gQ3j+3Q1@pGxd8Nf~! zB&l`U7a5oIffLfkH-9!%<}lfsU=<^oaWz_7XNX$3j)BynmsBh}Wxkq}#l16L$(EDn zr@)5$hyC(T|MZ)@o4{cGY~ac`1g+WAea?_h4rh-|%TqDzo=rx8|Ah*6$} zWHp#nAm=W6hD~d^6Dd*37(_kNV4UgWRXPcDE0j24LrOLYjs#~uhaBu!55Ce-vlS91 zJ2BcUoD6Y`?c0rzmIEa!XmQtsxE_C{%~ z+d%@@v)SC5*Vz`$)jX|}50h#6@aekpRgU$q%Gh@*M_x!Is;{&+-GE4>tVX9pj zi258On&3srF}4zEn<%vrC1s3og)13g^}y$cn`B#hkd0mC;QTuW)^4e*Qisy|H^^o% zn9U8c*dnZ2?Lsnh6R{jV4g>LI{X!dDy|7tc)Y>vBX|FU)^IJS8`yrjEZf;VV#e^t; z)xqrg`5{)KQWqMLXYy106GRkOmB<{)gMXwKjer48@s0CF~> zQc7lYMu%Aq>+hr`8rQaFExO3PP!#IPRo6D>#@{o2r{lPc4ghpx&9Rr*3R(gRv$y5cB zF2w$*c5(<31po+{0y0B?T2u9Va{*>C>UaaR^AWzZ+?fsULj)GkAx29ZBodcEl9K>+ z`fU3)A|m%ZW4L)wYB$)q&f%LFsvUq}~cjw|B4sgEP_L5LV2zlQtctN}g-L#)3T z;YVP~2oA>w$%w>;Y54;YZmJZuXYQLK*-+vku7tcQYcRH=Jy4>hP{9+L)7dI%62&qTq&!wZmWgzly z*wAVRT`CE75Sl>0)3CT1?G|#Yc3d2k48EC^)pAmXeTX5^B@_7O32c=WOy=wk$K~na zHd)TgVxDs;DzaLN>YmQdVl)gKh|J$~K#A zt2{j3r&aXicwF?93kr`;PvdA9Zvn{haqTpEnoUc;*G`+EOVS-o%E9q@N(4qp>%c;8 z1>wI;$(pw_gF$w$Jy`NFeR_za1`jtHl~-d^M+0^2hq9Rd+}ScKC#R?3gWzjH2@VfO z36`Bx9U)+B^G?`Mc7>>tJ%rv2oe}(*#wKM0B}B=TU|DB^pNFgfpu$z3|c7g*F0yvn64%lUbo?09u`9X)(PUhM>Ph{Uzuo{YWj zp}`m#kpH;NI_w{w#@0MW?z~xg?K<4b{yR&a6CGZ;5r-lrN+o8}-cNOY2HPg6dwN_I zodrf&Yd=nBkQLn#*24=*se2oLg>#~$+}a|i56bH0IeI+DJK1`+nEe!dK<(URer~mr zobHvLlJ;_)Sv6-J?dSdYx^@TGmw`f-0(lLG<>~IWY|<|%YpgPmqGHbG@yWmlZ0Hil zX4Api44q9_KCelYWFdGwpNYJ%eR(d8#$M)WQ@3-u{JBGhjr?)FQN#)qQ$;P8Rs))p_~u_a71w zLzEyfvij?*%kt*^HzB=Xd8;*xpw$y)1GBkyOis2&`z|{LO94hmJsHJZYu=uTQ3~JU z>7leT{|kBUFzSB&p1~i^Xw6ih0G=C~l1#p>JD?kQQKrKH87yP8te)&Z*^LU@Dlgy$ z2N*ZA6mqgeUUvzzhVGOoka3ZX)tM>);ebWWF~U)Jlg z-|uJtTb*I{fU~AvhNTWRRyq^t4Jdo2Y-DsTQKOeY<-P7GJPM) zAW*>ut%61Q@a3}n@|S-Q`RJEzDcxB&2K4m&ES)c8t2s;Dl16J&t{)c>n9;r_*y(hQ z53brA&-V|dw>K=;*Ei+(=rF-r$hz)WgMLFNoSxzSega=;T3HCXOg|iy-rhEW1ISe> znN~M~U4vnHn#{{$wJHDdmw#RcJ*~R)w7ns9NiLqBC#7`j$Z}2{xppvEl*j3^eEZcO zM|T}@;IHBGcCCj^?Eh$=Q4kUvemM$fJ}nNLg*%WPFJ$>Qxyeci=im&rR2$Z zq?8E-v*$oh$s}T*I(34D9*A1k)^oCEM7)bnpCc5uwg-JPJ}Rpou@USKGB>5M*2c#P zq_>SuzTaB-a!maYBi+5Nc?}?NL#w7a`=sG1@+nI%mh?JWK~$f^Hy8v3GSYodaE>rt zHs$_qk{K{GFd(naD}F=eu~k*n^_m#ip!5$1`Tn%lk=fm>f^5bI5bz2RyeWsr`{nlf zDoC%c4u2M3XLK=?uiHyIV5?Wl@9ahsq6rzjx(aIYcynEb%D;Da8BE5WOrq8B82jYA z*mvYo0b+Mgxu~{;Z(eXRBz=oGe?Qmy@Bf>>`0Mvyf0GMiu^lTa2qHR>vEE4{2C@JK zmeG<4@K_w^%{9IIDnjD}4bBm9`%-m$1hdps`}%&3WhD%97YM5D;_sN00t#&}U_t2t zsolT-^>50b{qfhS)!ICfqs^0zC#&obWO#3g^6UMK3}KT`3@1OKyrF_pL4)@${=KSvIQeu zSDRJ&&;Rh71Y~bszlw69K!oa*;8gHYKNA}si@TJrP8FZi>O^2DwR}*&E`Z37s&AIs zv5|no?^o!}nx)?w35g0G!fJ-3EaMcMPl4^vQFnUz7tiSqx%m94{Pf{VX}23;R!5Do z*+@MX|3x-x&F#4sEzo1syAXF%Zw2!%VvrqsfeDTbV6n3w)rdex$j7)_H$*A z1Rs++LYGsPZQ(cw3XhM*<;%r&IX^us7Z+DK>qw03g^^8Fet497dVYFd9`3Kp^P(bO z$^#5A-iO}$^|oD3PF^J&_U^h{z~chsL7%*^cFAS=?sq?h4EEKVv!IKT4071VXD8WT z^Aw!nARpwv+s!f_9wZn;{tF7wQqQe3N@Qs6Iw37~OF)Q(#t!`4q6O+k0`%v8-u(>B z9bU$Bd3<_I`R?>^KM4~1Hobi+zy94%W&dDQ9w#^jTCRvzJ%`(aT!-7Fol(Dg>bhHF zj5%`G*<5z*yLD{1dx#Tq`Q>v6g5X~5z-$$s!{bzGYFO^?uEY5Wsae7$gKus!0(E`Q^uX9=O1TEpr`CdI1a(nFe`i{fkV*jW+Ss~ByjGjvj-8R z*O1bjva_K}5A-zze*DBi&>&^H`}?P?5C4&_s&*?x&iQgtwlAA|<4D9W+8AA;gunM|tcrXWd>W&O>-z;|OO`C=M1l1g`r z4?te^OwK9}0{ib7X3B^Jzwq(WHg3*^_0*oC&Q=}i+LWS2vvVbz5Gap5zjL`}MnI&>%{e6x1(Bp)$tFQCHF%0;Y}nS!!78 zz;6f?l+0WP1{Bj-w0IBF-f3MsbPT40j@V|n0+JDCD0IL)lTTgXA&^?5Qa7a~#t9|2IDe*&GV$hWdTAXu* zba$MIRx`-Q>}dg*Pu&@-eY2jGUw`)@dgX_sae4pM+XNHZuCsuXha9@B2^24~N9ZwJ1UP`C38uD|3`c5$>vg%j_*CA# ze^;Jo&p8|4{r30e>h`XD`!!@jOXxTTSlv3L#b*PUsNLOVYMI~)Nyng&SLa9N)$6yZ ze~QR)HnerA1>%*cK|8PRh?xU>d*c`b_3@3Ybz>k@tNi*Oe;WszySr^f%|;c#j_%1324<~XA7C?v~;_}a(sSLI-6zr z@#BY#vz2v2CaoXm?|;Z*oFijPXbX>kBY%CS3t||f2_mI`+z=w%*5SGIRm4d+l7|v{(z@ z9nP7>RN6{#1|eAox>Xtjx63#waE4l8Tx~Qv>bwzoj-VH*Ou*_q16ioLi4-xuk!oF9 z&nPqJC1wmf|Ii=6dHfZa|&)4PE+jlvuN|KOz zqGm}3Y44{$z8z61a5?k=DzR9+Wc+wN&UGrPfpC(;l(BFbL|` z{#)DSGW-E&-#PaELBt9Cq!qNJ9HCTte0oxDt}b?ay{>u^X-5Xb(cniyZU)s*7GxLg zqdPL_bjn;1mUV&LRkc%hyWRA2HE4tg^SSJeHt&=NwIgOg!}dn8mi5dfVeuWmu{!JAH9%vq>(y3x0QZ zMe4tFwEmc0*Qg^FN4;%nb!kOYDVnFI!Voi#$>w)L7ao+M)kAIrjYbBGI!8&j>m!I0G!FY>$HG0^!CbHX#y{V086(ORB1lBFU@u@=ZPW4H}P)Hh&B86+po)azyEzu1HHmB z3YnWbY`cgAb=r;mytRP*i15R>*KOj5b_Ua#)ftdhIHN8nmzKs}VaED2tH^UQT z7pv!RUv#@DJ@|`img(nKJKQm^?YqHAkS5P7Kw(&+YO-wS!51OAa)QZV!~QmO3B%ox zmVRo;kR&i~_JN^N#)}$fRT&fX3aqqt<+-(Hr4wkK;7MizAO>m6IGm5%;UY6M>a`LZ zjU9DHd=G3GbA{$UKG=uVS5J^a#pbK!PiHl zy>d&)47qGTAEi+?4c!T?vOnyW!*re0`$~B0@c1ACIc?B3MttOlTRB_Aeq_XPNH3c@ zX9WTz6E>;T8PxJhI(i3L`=>i}fX^|4icKO-+ck}JIw|)zcjff-D1%=F3ht3J0Wng3 zWSgdw+uUJx_V!_(a)r{Ooq_h)7cb9tK_($2&LV**`@Q-uN zWY!jq(}V9JR&b-?%r*(SrK*T5v?)<0a61kmhLKRPL9xC1|Df{0I?M(1kmNXSP|D zfAPzI5pIA$L_4g6=gZYaY!_i8Hu~b?GN?zRQA;EJcJ2J2#m^2LjSUhrZ>L-Oqd|zx z)?HaxM;0!V+B~&RsH?LM(lEll+_XuQ=DTn<|IUILV zvb=vH40IR?^{Z>6mJyO0<;}@(7d$pgI z?*(RzQ(6b~i?JGwkIK!>RW9D)SZxup4(#a=RHZc0zUb66KpXb;H{Yh7O9D|uEV}{& zgH9ML4o8yKEUR*LeOVg)!?IpdWqU~$=tj%lK;3$P8N6Pfx}L*5D~G4Y>G4;8CpRja zl5O7K-UR+}xfdZW)=bbPdv$smlGN?(ZCVt=2QcJjuNOg$7Z4jqUKkT~Vm-I?2HNG# zyZ7bl%ZI3MeYyA)h=o&0^lfO&^K%Za8ZbC;xYv%1@9mR7hfcz%w989*e$iW7rB{c8 zZeZ!Jzy3v}ED_h}DS)PzCi008cVkaMp&YNtZ3tb52cz=&9m97Fqo?yw_$&DP~~4`;rIgEbr~at^?G53yL18r z88;?tyq~BjbPWh z35qHLP>Ewu1I+v3-mpB)i~yaMlkt8G0dWsC+a2dJBXnJUf!)pBeMNI*k6jG;gLEtS zMbwI;L2NS)o1yjnsk1&W>vXx*s_Y+}rXBOsr;jm&GAoFH84ZF@8FlSMr~%~hm{FXU z((IPYo14<_nUnAm;-{a_Sv(k*soChy>oOeBD~Eiw%U55&D_=feB+G}AFx-sT$?;*t zdp=zf7(!HhiGy&zho*_{`jR11vUO+T{FD*WA%eV0EQ=hj%%x5ujcl&|Y>_3wqjopE zr2B`b((g1vq_sW}EB8>Kig; z)@XTTvmgLULC>XGj*slkI@%l*5|vO|FN<<{V_Yj<1dhy0fu}#cLj+X zucDUgOo3E#+?1a_elE}EB^-=n`)HN8cmCWtbXT;dc`kP0oA+PExnEvi2Ss#;luTsm z`~e#vAhPD*dwc;r3$!ZMm4i_~1KJ=HN)m!#64z!Gtk=&; z#ECT_uWp;|^6{r1OXL6e-~Qcpf1fizG@0gdGU#&-7eg8xj9x4-^% z;GsYH!>=>`(?xlBn1#UN^AGm-Qqz>>dFJoF`+e$G*rusLgV#yG7W{%*-{xr4jy#V` zB`Op}f?)hRrzF#2cvJUQdsN~u;+)^v2TVUM|YX(P5?sx?o`8O6mf+ z)~R5!A5M+25w$YbItE-ib@LCOJ|=Sg>fPJGT}^09+8%2Qr8PiuWU#>YE=jlu76zHA z+ez(7kr~7F-J3V5KgrfO2bqJ+7Ao@Y&Fj=0tK;4=v3tf1>kzW>hg=;mwxtG(ZzL*|Wy=bgHd z&{Yf6mkX-YVnYvr=J_nnCkRVky%A>&`V$;*PV?zg`gSj`9?Gx(>9^(U*N5d#{`AiS z!OA`oG%Xq2Va|n~Y5D-x5_(}h83B&hb3?S8K>N)4D64??plNFN0*d{^lLTv!5AwW7 zphQFjN`fDsiBu)ahg7KR3&fO47!+jHzxnrnA0@f>uTRRa{_M}v5~(yLV1@itr?M`H zOzw}49|A%CJ^jUyw-qw4J=HZpOJP6Xkpkall|b)jE{zPv*^l1DlSD#jSu=kI9DCoL z;G_{nwIm|yne6xf{fA$d!TzZH>KE^$x~6@Tqvkkjiymm4@RL?tVnWEswHICRNyA-c z>aGj=1yur3XAROv_VszPNxz^v_(h0=$`_OS>m6^Y+Hh%^AcEtcBSPaTK|z9y zHOkV6MIs6=AJ?_ZN_~0FJ_4NEzxx2keu;H!< zA_SF^CTNW_DjRRLwn2qG6TW~u;S5&+w>sKg(j<`3z#`9J@!|GP9g?Xo}E zEC2dm|Euttv_$$o@2nM&nUm1s+6mMIO-O*ymybXFlu`_h6rE^FGtMrX?0NWT^KR7r z`ITsF>;!(20O2?Jf|q4fKiNj-4Kje+1_AHxK($Tc{@~wZCqb|iNPcjDykRNf+C&v!FUw0lc-hgRKKcTF=J)m$tVz0 z6&_mUd(v{aIxdIDkL5St{Sbz#I`7fxS)8viuSkaD10+7MXDgAe9$=8x*J`mL&$kmL zPoEysC#*ff6g7vE^Sr&hEXSwksRIgNQv0-UfJnw*xhT!Cdg>^37ZI-6>m0^cUws_| zLSpkj{O#YDuiw2bfBvujtgIt*Sp|g7U!TT-xFF52d8=ZT0E;2hVnlLMHY`f#2pnFH z7qsKj*lgq+eafI!!I%sNd!G^T&axCJhs_6*S)ah~ z`0O-MGWNVOg!7TCdp1ugMn(_r)T##tt)+}oCQpxfXA-g6DXl}NVGW=q##yLJr=E>Rw!h(s-YLS47qd6w4s#8PVP;YtUZjDdvmR3`FYnXe5 zfFzJ|x7xTW11gyM=pT0@XSeBT9-G5~X!L@pw=C^8;#M{IjWxKkl92E%)U(}R=*Qiy zEI{^bRQ73A4m4C~@|f=tlrt7MD&()#3k1dfnXb%!)tWyFBfFrd1o zyrixPQqFWmWvyj7dHt$9-aW*jcu&FZU`+P|%voExWSy?z;nB8ij9OK4Obz@cSz+LN zZNBSL8S(3#irji#j*rjscV*En$lq|BK*ZTp-$lG_wS^zffC+Zp!2S>(PK{8Ky_T3z z(UY>?RXsfl?1wNMKZuB;$HtC2rCE6 z!H;z#BR}qF;gak1%K^K_%fT1L_<3$+PyfeHSGl8uAk4^ab_5;5|1vp&?NvpIm-x2|5Rq!i8=|BaW?I59S8(|(O z%+1YhYy^KM@S%aiIrFJ(+TIxISP>ZP&&@^&RA4AUT$bC(Q`%_xAX&fXY{eI>GR#V; z1g8kkh0PEM8=z#JC8u}-&W!W$vhgM)E24XjtYa~vY_-~HXM6R5Ve%sKe4 zC~E=lGs&-$5wS9nYFv7O>9<-a4612hR1Zq0^FG;;vu&Ub=4p)djzr=D?~nH)TgmYH zIS$GtWF#uF&_)ePXGhApxw0rzynhrDjSLan zmGglxsJ-3XUYGm3`ve;{kWP9=GcGD=!|&-$2X#^F0(FAi#zuK!93!-d&b$l<&?-@T z68uO!H=9+~f%CDxp6}r3IGOm<+l_|Nd3W%XomZ+ZI<<}7aam4yXWMbSAtlaFlM_f4G|K= zuGL6Zl#UVP$J8qaF#??fN^-*l6dZ_mL!KqPa{1x=a(I58bDH{OV;ia4kkU4FI-_25 z9V^Z+B!$|hK3-Y2T6NAMLTiRfP0KoJcbjtd>TO6%GHn?&t&Ns7-Jva_edkS(YX_;! zts!o^373qocFaJL2g(B_ds-nw@O(dPe};oGY_&%!=6pOb|OY6X@d ztKqZsI=SnD5$8icw^m8#-kDUVPD!3XOt(`WZ|`a;QExTbV6vx%HMQy3LmyXBG4$WJ zSDX#PW#zJ%MV|nqY|GKBS6LfvjhNkZOVr$#i)r?nGsj+6ei)O;2KQ{)h}r_Yk*?$T zkcpj7V)L9a@caYt$I@*XiqL z+aLlQsaXVr(SDpdTZdm{?V&@Qh&|8>i%{+4LSfyBV_XFG2v4a~%Ag2>D?%z*P=;K- z%u9QNqhrOlK?v2h+xx9DpUi?lC@Ztg>f4eRfgu#jpfU~@F`6ETXBJQiSOveB{O+N8 zd`exM@geRaxi{CXvTeJ%TH7hvcFJnHLa608`=W*v#jDOsuWw;PtE@G#Z5>s?_QncAm-riAuyDn0WPt+ywByZY?Vm0LaV#l6gFhC1|%Qk zp3078Pz5rKl|FILl`K2P0E}DZb{QhZ+5rHgxOg(84uB zzYEOI;H9?qtS6aa$h8e=4YUNVQzyNj)UwAP{o)sKnBFsn6&Qu_Y><*xJ+PSGbu~3D zJEOhSv8lshY71igU58ON77?CZFS!emjLrDn)Zt6|YdMtj^Yg%1jGZzEgPcIoJa1hL zA$4xcZ1Gf{iyS#fw&f>y~y+&}*xeQkI$I)`mlonaT{Tvq0Gc++JUljrwVm zV2kq(My#!-?x~F3Wp{4uEeD*o-bN`G7Z>I3VII`wo3GyIuB1In8i%5A#raSw z>GmtCQc9i2;qw@w`8)_i6a$kjRq`)GFUxU{(mf*(&)Jos)HWso^&;;NHNXNV!;Sc7 zZ&iDJL^Ci24ROw6t_ha0Hcm>(+AmqgGF~)c~pO#<$=7*qaXXCwSo-q8@ zp!Uz#Ss((}pj?m}1Dp`NAWn#xnF84f$0;aC(Ly~*z%zNg%Ng*!I;J>i+5-Y6t)T4P z>-XQ3$NQVK#Uh#geD2sHfjGM<#>XzdyGIuM5=8KuufIvzNZAEiDUcF0BnuYu+Y`YF zzQOLCfs?c5CeMw=IXBLVv&a#pwr+UW(b4W5g$8bs5-WLdex~vu1hh)PDTydBkoP7m z#NMvg<2NCG<=A7qbwShuUB(g3fHz63-h0Q?xboi_hM!(WvH|Q$@ ze93GGgkeaZWSPH{B)eNakFDA?>6HxXl*RR`Twe9G9b*6hAOJ~3K~!Fs`=@zngE(Xm zGRx9fSK$Ukx!E*Xp)LUJKn}3Ogq5td51GJ(B(+^pR114n)+e$T?WHG~<7*8D<>9ur zj1mEoxw;Qv{DWu)%oBuL14@IsaNIQkhz!eJU(D*n!CtpI7rN%wIB;^-8opF=uNi9U zlL(rW(w=T_0x9o}>a@-^lt{+1lj=rBMSx|Xxq=wtI2eP*N;nYlHkbh!!))M_c^l5i zB1Rj+;*1H9vEZjq)11#Gu0?MzqDGm+fE0=I(}ge&!bwrufOxU}-bGfZ1z3RN_a!up zrHq&yH!>_#1B9*?i@`5D7lhD8Kt6MJe-1!AcONNNYNcy{BzNhQ{^%eiP16T`zVorx z8kk9h^-SUFShw1hBp}#U4#BFj-UT!EK=3g>Ixfv^Rcy2war8~PDuj@r3{|mJiJ%#@ z6H2-*$LFt;^+MnvQ0nfuL-&vO#Rv((O3H|f=LEpeML~&@YXW+KN)LIpTQ>7)IuNGQ zNwQ^oEW6yU>|>|2$}BRtPTY9Py%I( zNGOM<%mby)QQ0gJ$O)O%nE(=k^@`N}pw8Zas!?_fcce<93yjPvk?jv54cn5zX4<7C z0r*%5hbL!e$-wz4fueHra5T=yb{#%^jts?P*?WG(8Idd+U`NmhQoLN?h}Cj2f1+I! zx-AGx5I38Zha@|upK8yp6Kx@+62nIM`*e#m^%R=GrhNwlC<>wH&p^iM=fZZA(Q-mA z@xlHuk=)?mAjF2@sGp6qn0nOJv0ZRcE9q7lp_;d>jA1|=GJ5g#`*-;>hbZvMsxLlp}^~ZDEwXX;b?47rzMF zk?gY7&B2tJc{e{BRd?PmlF^8y9y9f}@%m8Qf^&VG262_?;1VA<=0Kz8#MLOIrHKJy+v`i4I0woAe zL5=2=xsH-yrJQ7jy5S$-W-WTy)*%%c^w9{nf^+p=3>=5xdpHaZ)(k>f>=E!O|Mq@&$tt}>#1QmD`4C>R}b(!AZ zWlgMq!WaGP*^hqUdfX5hUkIp1pJHQodx7FPL@=-Vs~~2xUWBiayCl2mAb;%$r#lun zL!i5+)$4>L6}8Ww;cl&l9l8&9X|>~6kr652#Ze331pN2+ajYpbY>YrYtaCethRkfr zc<9_}e_aIvRys*$)6vN?$(k|x)(^BR0C1)`Ylc~QCe!0qs}LJyg~umnahT3FRMMGn z#vmeU@`6eMUxK;iGS0@&F|d%LoT*+v_sd%Q{uYeE>uh);MtX_+>e|SK~$uJDUQ|w zNQ6^o_6GYwYB+QXjd(S~!-L#MZKB>CTIG&Pww!&X91bJdyYK2&r!Gi0 zB39{=eSVzG!$4;rIN0I-VgAfrsLxu5i+OgR!KtxynDzo9cDN25>V`NPM9j>2iI4lF zPTyg3AW&w6K&aT8I>bkItJ6pT(e6|Ub`EcEG^`v9eft89)WY2-vgMM`WfD?zGJ-an zy19DZiOW?!2m64Bq%#NaLa6`}htuP}vnB4n4m1G{#9E-i{`zwPof0$dPWUnD%Bo~& zr7ool>j^FQxt=lF1(^o|K{JKa*{oUtO2Jwdp~1>N_GUg8PVHv3#IYl)&dSlzak{f& zTeb#iLuu)O-NL%<`2+x99D25lE&y-o`32G#q zO_0IRWT#du!Y*Ep!jnTp&CjN~4uKZd+Xz*N#w?b0GQ)zFi>j<9)0DOKN283;bdl8U z92%Dobi^@$tQlj5KxXQD^k6ceG19p>+hpxI;El%a+3Lbk^K!sIHKKUL2vr&vBM>g> zNoWGid!jYrH@MK8fat91f_Hi@Y!&-43YnA9gK9$$j>wFTf?NnPls}*bEa~`^(RtcCeq|OIwwC z@VXow9);t8SxsC8smY-fP=Su(96)&HsH-t$k43V}as@r;G|TC0Bsq0GQ7=ES&gVHV z)(mr2I`-xBr(~gcAK*OiNomU^7AVP(hk}OrQycbzUxMa!KI}jz}`WVh)tZe?jYw{u$jR|;7dfna7bv~ zUzFA2DL=nj&C7D-eznqq#-S@A9quEWJNAfJW4*d1qBRqVGCAV7H1O-x* zG{9hhd7HQSVEkqS=tVCBXaoqNy4l_8t|cooWA}ac!S7s8vZO|_tFt29|Nnc*qhy|e2Ncj3!z0OJl^$&WYLK4&=ZATct*Ui-4!GFL zv;vo_*u!cqxhs+peF=p>z>+)Czf3Uq?1+jf=Buc;l~zi6-=lHH@$`PRSE}7^RikIL zlD)c05FohV>7WI$3rO~ZF+fCp*W*z@mAjn8pKjt_A*VItxHfn993silSUXa z$=uU8w->O0K)Q@#yi5fwG5Oi*8`Zs7q3f%)_w?_2SurO0x*)$;!0TU=wMDVxiy0OZ=H@EsHa65=84T%aD4>@z!W zavtClhr}!kv!I9uhn~h~q1mFTGI^tr^naW1a6YPApLp}NMWF!kziG*cvqqqe*ZX&u z^Xl0mu3b&810n!i`+=Pg0GIHRe#f)LJo;tMvYiOtEsq7C-PwxI4OhW{r+$8iTqvgc z_lA?Zv_%!slkuQ51$P^uAhV$Ki<+2GLjH5|As4D)6$y)1qLAvW=Q0r27G zAV&dNz(mIIGA$9R-2#m3y86jtaq)I!Zva70gw_)u& zOYbpAR3Dt{723$W?@pyxMTZ(aGs{StmHKqC94x(HpWQ<;qkM5S%C@eI9i4lAF0n3` z-nh@_;Opg@tG=EL%Vsvq@6{_4Tm+KWXMtxHTAojVAYj3Uiq8&kzSCL%dDcq^k@gKP1jlhxY$RgCn zGmd13h^7P#0>-?z9@n~;+G9$qq&jy&p`MlHJJxjy^8Ri#Q0qc~Ha~1EMdbh>W;aA8 z8?ZFp^87LjZ3S$gL-k=*3j(`wDuER$cXEdol8nrVXTj5 zxBjv{4L}wkYuN@+sfrUEfkfb-w0Z##o$jDCx>uz)xGuw+H|Yu5>a|-umxo{fT=uKy zuvRX!Kucec(L8je3M|ft{QwE?9MjRixC&jkn7(EfJ`QWgV|jUa3{^88ZVSy^}^;ro^ZQcW7 z1Tq?t&C*I?EE-{+EuDIvJQg}(O)O&pCNVXDCXg_ny(DmYj_wsu|Md>Xo1xcBFO(h# z`1c+KL*sAaz-W9M5NaQYn2-Q2xiVQ&v79wW1a;nxDT?QZ$HV{$K>#+_51=@=k}mqT z_V63A>$Zi@nPhr`fy5A@s{!xp>$*z&n%yu_?1{lm-9O^JXs_`9a9#%eei@A>>6g1J z`Evq2!?44y9JZ@GQ}2#mA=3mIx3m56p-fCCF~y3ovI1tnX}?+57_!^s4vk~?tSYt) zZ4l9BpI#@{+?|XtqVD}1fP{`n;(5M*NJ5}NQZV?S3M_7(sAKIa_ap$F;MZi()vyf5 z)jC?y0Jver(9$$M?3Kj`72}He8v!h9VB@5vWUl}~k?+eXG*d{}wyK#>(0%&(r|PXB z7#yAF*Tg7AjM%M+bC;i=UlMaLMqwYWhQ(Q*T#o`~R@jMSBWK0?1@Oe)RH_VrW-kE* zCSkl2XGiQqcQ0Nal8<8lytC8bkczuDu8v_Gh~wy(oN>=pK3Xs5xvP*07skYp{kE)E zi|Cg)yQX-h5y)0sIy395kNFwi5f+KxhZpL8U;+rMv2)@zM%=x&yvmu9)O~InPHCku zJ**!H?B#bkp24a3t3JK?j)wd064Jw!~5 z{6|D8SD#9^H0_=C2OXY_H#|IK)PX`)p%FxAgnjQYFZHXdbFdi!$-xB3f#2MY5!Z=XpN|0PW(U=-(N0V=t_SixSkU z72qU4K}q$Z5)pyWX%Yd-&?VtA2UST>RzphEs@u@#j7J*n^pXX4{{ay6vM~zS4)m;K zr8VG!sn#RTyBw6;xBCBRx4IBRvW!jWcAYUb8=_oT%!UI3*#S9hEgb}hD`Qux9zBSt z(5wIZa`u$%dlbO+a9W_UN`k+;dlLXdCYv8%kWN{Q52R);sQCmc2z{ZJEK0V(mvUE1gc@v(5Ng`~? zd$T{D>zV&vX;Fw7u*!L8cT-7uFThfiwL_~>DQs=;YsJ14Sc8ha-}LfaPEvB*kvo=()@@}1vtLwYchxRGGZ8pn#4I-RT7T=)gTW2e0XW1Aez*H%2W1+L?L!2QD z3MPtU;^X~q2~^l1KVv+;DR1As%e!T6RjsO6We>x)crFpgqJ&%8d#&>P`kVkJFiRH0 zp^9>y&n97~`Dl&p>^ba*$_V)rlQxLfVfw^7K}&x*o%|S3rK;58;QnYV zb#zlYU1CLApK;tC1!^o-3K4+j>9PFu%g3r0xdblUC60%s8UX3(5|YlCs+iB7m1WvX zyg!b0RWY%d$qgVQqTf2ngLNZ9BPJF21w1FW_~>O8A?meR=WMBJbn4CJl}uGyKsN}4)2TQ zH_#45OPW!}pSQSb+hPC#c}Y6SwrjGbGDl)(-^7ZU_u(k4MJL(`?{bi8oN<}l0dSa_ zP<3nh5m>eYB(xL>n3siB0=<#H-n@Ae*2X(G;Xu?36k^K4zMQ98#2fcZBBV2Oc7Q{B zAiQ(&#rd{f7ULr3JDHLReH9`4YG%@=`Y^~b+C*B5Dt7``W@1{`Vo(?kCR%5m&+O$f zxobsW2|VeyH*KX=%o>%itLB|4p9L7>YaR!0d0 zFtn(@Bzvl7eWg$t0(Q1r=_$QL;P?KU59j`?J`VxduH4+c$;;6$;8T1&U1mlYWn!EQ z@{}N{mc6LrAlb0Tq@&X>$IUjXTM1!*+@%_!K$X0`oFhtUHBaJ}?DcUvUBVa!E(|}~ zNvxS(7*xAn3BFdz`kW|q69D!GK==AO?Ksjwy#zZ^fpU&fEsscC1Wxx*5 z@@S_$Rd76*TjkV2tLlx{RzLz~r&BJP)wkXlnP)&aHX2 zJqNN4;>!aea2@y1ltA)7fj1y`P7G{pB;l!4^!k4L`7fz%ojsWiOSIx?Z$ZfTw!FMPrqV_8hkj(6YtrCiQo83=sJ)AE z`j03)fXH$A|nKWvNw_OP#41E^*uP=JtJU59|ekWBT(}nNl%_H4_evrp}F7QgKJJ9O2L7 zuh$XiITvZ6@r6i$x9dT#bdv9;qNNOPoCwquzlOqe;raj9-hKay z$kKXp_h(oE!hu`nzA#SHPSNUE%+{&sJ!`BM{=;}Ds=Pg5&wY_efnw9&fxo{BRP{&& zl0y^4`Ejq|L7)T<-!Q>{&^hcVb$#tHb zbLaef?(T{f1)y=kZS>+IQwjovi7+VPd zJx8Oa5_i4Ut$-oV)|rs&oG+Aq{@&r;&o^RIo}ORI-~W9-KNA~4(?v9BT21cEUX)mg zS9^E&&F=xGu#|p>++vhboPKs}Hc)>b%>wSQWv6ax(0O<>dW$La!Z7?c!B zkb^?~nYN=c?H4_sBTzf5R=rGXcn8C3B7(M3wHirsqcTdj&zxhgxO}awiiJuc6%W|_ zGKw}2>1ZL4{qa^a+9|(GuQUDA&AQB9o~x>rXp56n*2dP+G=~V?LfkbOjmwY&Szf16 zl4imDVi6=tl(rX^>K0|xJjHy0f4!wNzK{OeV!DXIh6g);eay?~Uz!`WIOCLR{%UL_ zr;arG%KEQ&@4rd1_kCAu*2R-3Zf)gKZQo9=(qjZhJbYpzXb@#5Sv%C(l7+&tyvV`z zGF~mUz#`P%wD02}LYydJR+}h!6+x#fLFhx4971D@=p*h{sw@}Vv)DIKU&k_A%mOHU zCZZL{(KGLK--Leh>s2uGXLR6YC`IAVK6h(fq5k>HQ$XD9-G^LC0flND(;xvw1|D4<5$l) z5rvjBd1_Q9#kyVEgm`uD)ANRkp>ZJR_NIzzJP$!c@)o=&le?TREJm$-Ds^wNLeK($ z34of-URo1^n&0W%F}A_}_*s6afUPq2EKqyBmI;YdSxrBOo!ae}rCFKUD5ssLyhLlC zU!U?>T~73&?S+>tZ1sv)v$(+lIs{V!OuxlMga>+cC+i=E31B|gu?f%u1P=-H5I?}@ z9ZQPNNCc-C6RV;37N!U~t5m-NvxI^|+^uV`P!D~*n3iX)kKHlz<(LnFULhbJNQ@>3 z%*Xx>nQ5777?U8_J3m04cB3F}unIk`4d5^L(K=p< zkk&i^bh6#`Op8QOnTR0mG;K;v_-U`BAO*^uFI7o z9t_*rD$C8XjPBl*kpd#IfVuoCPN!DBkE zu5SXEX*j~fa)qT^ko1k4pEVFz!k_P_rR}oiVHwj)pxi_yzduk#wqt0ce~iL*cp&5c zXp&vSHiEH*&33ZVh=@x74b9tXq>7EOhKe_?PbmIbF1mwS#a_*fo*DZiGP^`ys$>On zG!BCi0-nCMg9S0`ay=Op%n0F?WTv`Ti8&Z)D{ylu~vzzGqF zWFblGr=U>Qj5W?P@_wJg6OiHnPi{gr`PpdpsG1vm-G}APyY~r<`h95eMxUi{C)6x7 z3b{KB1ajzG^Zf!Tdr{P)p1zSRCNn_4WGc9;EWB9AGDzC8BHrw2i!?)Zs}l6b9U9fV zYTW1y+ti=M;0v%gT&wbdbLT<2o>cW5s*n?;!|)|qcM?sU<+EEoM%dT0rZ zVdo9KL2RU1&sEh z6CH%?ONu4S|B76WDUz?G=A|u47Wh#14B)miFaxcwIjJ_0Q$@-TOiv zZIl!JZF!aeN<@lPLi;^c`*i>S4ZsuX-0&b25_K zXTQqnPNJ*K6>61&+R_+RI71Sa-k1o%O8d&s7)@@Y(*e?XF?3i&Z%vk<=&P;tsLPeD zGH~v(iqcsFzMUO~gY&RC9de$c?Xdb)!r30m=yqIQpC5B?h``XmDq;QxVg&#a75UN1 zXg|A@x%I$AN*4V@u+=D+H{;UboS605^gXPSYvp_zVI0}tQj53C_2eecw?VL}VxTT> zb;@91dZb+%nJVA}w+&0?e0^n9OdqswDC-}K9}=pX=hx^v#J0mt)}HNA}_$V zRbI=H*TdQHMJ&oWBIeznvK!&~u_iS=YpovD`~BmrbX%R=O+}XX|GfWF#ckQ4u!y#! z(PVtn%_1X?bI!dx;#~MW;)cnp-kBNqg)bBU03ZNKL_t(k>0(d8lk3~t=$3x___6d` zoyzw5ZkLzk{?n(@YSWo8D61pXt!DMz@G~)^+P>~cVm7^(ez`=~Ikr1xa&w!QX?47J=b5K%0vHoRMIKa~5_~!BFT$R;Jx)uQnYc7>f# zEG`H%ge4FKAMWoX9E4s}lae<(N#hw1ufIZrWN!DE5toQ!7!A!Su>jgUAC73AyMT*1Fg~Pe zN-KjPEqlk!pw!;hU^vM|02R>u`tN?fR4^D?>&j~a6T&_h65eI^xeE7 z#jnqwLiec<{crRTC`9Lz`Hc7OJbw4%@5Y^WKP|pQ}p^^%{53pPGVkE3#X_bCFx667bRc#W8;==Z} z)n*@Wjmgb*+JT;#v@b@(>paL$sYMUuWk&tIdl5xib>TEx$6;%TNNY5-!rJCp}iw)TP; zvzUif@E*ioMG3GKMzPxt)79-=hDOKK$y0t+{2wl>?}z)k-PVzCcilJ~p{8P1LVxq- zZ5d7O%I)1o zibV-nob?%i@HaQtnWR&YIw0bz+yN*n^nf<31HhV5*-mZi$O{1yN7Gis*-!c0&bX0a zLh{-Ut}LE&Cl1(b zs()4wvfiPjV+$FeVyw@FP@$-%YjUfukE)-yS``N)pDLC^EMN6^ZOCG?ss~QMWWkC6 zAV5rbmz!$Phl}~gE`4^Wc{sQ#my)dg@G)trtB`>UfDi~2fWr_O>#|ywAg);}ME_fQ zsj)!4${7Iy(>D|7B9IZ}2BneBbOcc9(t0L0D-#W~*gLy8glVc2EK;f_I*n#0LPay! z!0C8G1+Rbp8j9M!0LfdRr)~yz0299Wn>A)i!e%D4D!mJ%vMMRn7m-gD#bJJcP;=xG ztBDsPSBttNXJEy-6@>W-`1mSpY1y~X$y>CK0Q6;Zp~+l^7{N-&r8Q!fBg8=>{MDlpul-r?!juSR!X5WLC0ViOs~>~50?!Oq z*%GO^Mn?n?T=uIiF2Ep3`5j^eGcZZ>deo1Sf70hIFb&{fv}Nn0GsM$Bm29gQA)=~H zHC!ED>y8Zf&~pY5qj^G4156k@R_EG*Kw^)<&?N2FP`0OL*>9?@%4lJ~-$|SrU5%2E zImg+lp_n@oGqbyn)@f7z_=kUqw(9BOQ(7aQwW%mA66XcMW`BcNDxrL}@+Pz+u5%tK zT*U&dO)Vj3N}P2r6<0*#K$oqd?w#<-+y>)giV5HYLILmy)#kIX&b>}ECOQ(Uf&)b# zW~9^1XsLExK=pa`w(8p`x6f?)XS-VmuE9K~xx)I-CAZ(RyjsiVNMIHN?9JD`gKrLhI5q zloRBQ#JzZr^h=}DDc^keT_$UYF#}rSTf}EzSvEj&3c6j|qo!9F1JS`?OaTen9?Tcx zIu9i}IJrR)O#BySv|$X;7O=Wg-UE#qR{uM+&nAf`7f|94+N?hqx=V6*8TuD7MsQFf z4C~ed0L>DcBxPor02SLQv)MG45Ry~bqj$VWbKU9jZg-h$M@hQ4K9it&dt(I79A`Ha zs)s0Wxun(4z9J(DY&5>fMbu-4pi%f<6cJW>s;J1!@>hFGh8yUfmxnK9Ie*P1Fs|rC zsHzvsX?c43lFN8^cUMLn3-xO9c`kE#1U;fVNzebS|1E)8B4mt+fKkP;T}?~buM>=8 zx^teP)%w`4w`omqRm`E=>er$<_c?UFuM6aR`5i7A4}H}?zXNHiG621>Is(vS!V=Up z!zqA7kX7A4x4?om#H#FETH}eTGfMF3ELE&3R*ow>M=pye>Q5<6N&U_~4rlH>SDCzI5-*zX#N~AViVW z|IQD91(3P$-a`yq_#FU3X8`0~=rDr;v{P*?G|2!NwXU1h=`=;Cr5k)F%y zy-G~zJwe&s_-gy=J3T+#r%HFnXlmROx(zDmP`sXioniLBnIx+RXf-kort_ypv@ zpN`RmWR9Bp(X)zilZvJ$Kvk`OuTGfE!vNJ*UY*ItrubZ*L%)BOgc^WP4Eg$Uu6U{l z*t2#f;$44cj(~jBEImS2oC}5)Gp)>7&oljE@5RmS+X$fDFL8^B%Z^@R4m@vTH|>lO z_F}h){f-Cgo7bgi8z~;rN(HjIN&e0PrpkFsyfT7CG|4mvOQf`Iw&DYEYM$yQxbu`$ z<8;W@KX=4;G3{b>6tzs;>;8VVR8NsYL`-Erdnwx`|BULFuQ!i6#>P>dJL@05{U%Hb zaN)kk?8}HSbEWAt^Zz_o0J+M1G($@}TPtQ?ajDxS8Aq7Pzue$FTM4c<1ZOQ*#v#7;vBt7{av@cq-w(r$ZVSz_gu2>OI2<(Zz#SeeRUK?y}ja$vMB262Z{aNBj99uZien4SPuv?4Q0lgxPMs&EN&YrbH+Wh1awPr^gvu1$T~@- z(J4K~L&hFX$Luf`Oh(r?K`|19%!>vNOxCyM!5;NIBLrKi=J|OlE|-W=jk#RZpCm82 z`TRs}P?J@VdLmjKK8v5>5(u_}lJy&`Q6;?%6YUSxp5FVuJMF~0tv=`9j?c4YH ztUkZhrJkA314M)}&&)0MLgK8u4+K3Zbt{lJ+vS2E^k$o%=iRoO?J_ifjcz+vN1m5W zU<50^|0PS)%-lE1khuh10w3~)F~MmLrbNA%JqIOA3O1r8S%8W$4RX%xG4Kw&T{H6+ zWt=Tvm1*+*U3YYsB~n14pW)8|j*N16DxlfIGM&-7F)o!Yg)>hJtcdT(=iV9MTS0)8 zK&nBG_0*>3Jf z%#}I>ZLF_*IYauuwuHs#1W@q>8kPQa51yP+TMsX7YBNt<0j1#Vj(zw2j|o)9$b1gZ zmLU!r5y$83)2A5yQMrhNKu<=);vlCNU1A0k`q|56o)eFUb&?FQCQxakN%$&PNt5md zix)v%TYq1bROh}i4@_x@IZ@pbh6>+z3h-}X=Pq*JJl9QttCFv-8Ge3x3==S&zNU9P z7~hur$L9cr#z_mV&V%b2+u*pEy~c;%xRt62wXgpSAXSxjb%K0`g zw`5GCbr4MprS`h+zYs&*W%jk=Q?v;Y==$9kDX@G_xsaI-_EL+DZzS5;yW}APyaRJs zL7&f`Ljf~5a}R6JyJ{WG)dSBQDitD^goejmX?J~Q{u?$hRxL`D?*OP49ntfAmd`42 z_PbW+c2X=j`$TQ-0Wq)h>AcIj_FT}=u&h8|1S%llH8L^IrwfVh4-#2-Q3GPS7%N zA613hoa?)x$nBP>PI_6jeJ(2U^9YU6HHUrTxDiZ1A`GGR%k5VA{P|N^tT*ML&re{O z@6(T{S1hb;lS!DKY4%DS(uxKYfLrE3;)6oYo*nEsz{5NVKmy#@TpM8oMu3&vQGgAz z9vkVZ2}ALxU5Zx8=xf{TcbF7;!ufTV+{0$Wn98{l7M2MpP<;^@Wd`?bitzN9zEee_ z#~eO8+96ttepCpkb@Rn$v(r=e5SYC5&LX(QEHmdAf|dSe3>B)tMxsN(pn&vn{Hz=_ zRMw?~T0sfw8b#*idzlU$)F%jdn3WRNE1Cs$U20`aZp!%VA_eFOQcy0tR<})10>V)! z)7PgguaSH>T%lVXESIm{uVYfEIpu+>QxMUMiV;%N0-fr`?7%n}db##=qdGI|xtN7M z6y!Vo%T$LhSnVJAxreep0R@sFyHGvncE;;W26!gWxqg@6Drve@^Z?aEp^?Lr^uoH%rljr_g7W0>~oV|up#mo>&GRh#la}Xs`&jUjiIogKu`jeb7i44YK}*JXfKGn0$HCxDK*ifw(1 zv@vSlA-p4yy2x4ZTwG$8ABpl zi|MpnkFLT#t+5qZoT4wSQaT4x8_L?lN%HSI;b*Q*vol@Z~jCWzKk zvsIp6xSDOVG1A&+l_;7P7_hMtDDhk+b@$hM?p<7EW2fG!Kj&X2Z5YAzB2^|3%d}}Ud6QO*X97$~9QGlg z+;W10Pa)!bdabUX+coVdNa+(H8 zb8Qr?nrEzKC^-*frfp(`->e^(r_Z=}DkQ5pRq&1MZ-XO&)PZS?6q~qd6x6?(@%dbA3r^m@y$2o_U(7su@HfzcKY#Dp6;K| zMQHuq&UFPr3eR?!MXU{01KUpe_Y0fW3LTm;6 zb{nk@i-M}J%ESGqvT|1V{2xmhT}?{&(%5hvnN>*KOs?~u#XY0hCXDDk#AYle@R{eQ z&9GXQC3dxc9xdh?x~LkqusuF^+;eNeCl826-jRJ9z=}MkZOstP=k@33ug?(`idA+* z0B8Y7{8&(`swEdxp!8y08o>}9D>1uNXa+8O4jhUGy{$USpKUjay6NTdDLt{}td6$% zBIrj4T41rGI}})asC&7Hq3ZN)v&78$SQfmO?nZ!snSX!A2i6z$!X#dP#sXRnCjpk_ z5&eq*FB#unj7jHhFQ3~CDvZ64lt^uo|k#FKuWgyIEMfs|^k&S`5s2uv;@0~U!C6HuvI zl`NE4%FE+pkSkLQ_L+i#kvrA6=b!>q5kiO%AhDdl1JJoVenygEPnFs#FOOe}6}!r!r~8k8&cW706!3jUhXRX(PW2_3-C#w~?5I9kg^ndP4r#XNZ8A;Z zbJ9V~%&?l}UoOkT!%Ka~n{@(?7K!i4mCgIC(-8XzyZ}QWh#86VqmPB95MZ25??Cc@ zWm41WhjBuy0-mZwzaM3}Uc8hQe+1Jem)bVikosOS4tc4ns2lK92@MIjp{s^fJd~|| zpmn5qZH)w1(*hjT=oq*tE>;$D9CC400e)^Se`xA$f-#V4rg?n(ww&w*Z#2sI`Zgv= zRR5XlZ>!Yk0Z{JMYaOUvFJ800_4R>6nUP7J;HYG;r;eXhT@8x6?z&HP(Bam2QQH|& z6klaSBY=ka(bEQO1v>Xl62KfhJ$y+esLDl~qa6tw-D&lOvx;(8bpjlNt6}b;O5B8z zd%QnboKv5df7df7NJO7!E`7+YZj$7wTBI5AZY9k0&D-7FJAqDu`S9Hj>76>4;*=QX z>UHp9vt=&$U7Htgp%8lN1ycT6m^5BFt4K zSH@6$v7cU?xTc?K)m7Q1INUu+U7QggjYb2$5UO(k2>0WFXGFMKm%E!peGGB#-n>ci zMF^*tE6%jrjq>s1FXgaZM9FW0NUTZ~64C7{!JQb9HpY8&U(n7Mb~RXctPF7X0=WZZQhariDh<;MUM?=wF8$3wvSO1mLvZeOj=^PTtQ zw_kp$E{f-(5Ma8yorEc!FJ|Q#)8q6;N248dS$_E4kFkyZ+kgKb^4Z-ZCT|4b;)nBU zB-z<@Hwo8e7+_*LpO@FyMOdOdZ+Zk3%h}djoTsk$j567A-kv9UVpqg6&me4U*p|9o z(V4|+VG;=OJRfHlyY2m^XjsqFgFiKhA+OT*(5AS#xeoJ()mzxBGMk6>aHpJ;Fe0WD zw1wKOfN06P}?e8{I>(Va{5hfV3PGC>$f;&=W#L z9C4-?Q9=Gae_jQycNF#@eKC}0HGzrHh>vlvpFi`*KmNJAd-tYHuB+8&=Fd}c6TDSW z;&7;vT@*;q|L(;aff`-kCfE|0U<}x8`m@e8#Os2j!m}`AO2k-$AOs6J+2q7&?Cbhs zE{48?pAG5%{$Ku-OY^tC`!Up;zXXS@SY=6UbDVK6Moa$+9`>nF9L}hc&$Fg930}T- z43Q3@hneszQv{GRQH{Oc`m3W+f&)P0xvHo$iGd1TaB8aoFgl0Lru^v-e<;%>@#L|5 z`{6_S^r$Q166o{cWmXyul+dP}cI)!W4Nd=9u!!kQRRrrr3HlN=2Q4VpL6QnkSAr28 z9%^j6uWpA>ZK^S=c4Gx=+hgtNt858;WYl(cF8m+DY2 z%hm8Y!B-$iKT(j{P$UzMovCvh^Henve-fL`%4%y1pPd2wjB8Rbo3IE-qG*m!H(}y= zrSQd76!obxPjxgW-$hlhcrHKvY$fz_+8FP+L1H8_8Pm)=b0@GU*cNw+IM4G-)z_(K zY%myxc2B@DYDc+y$s7N&T;INp@Dlq#kOwHM9-K>wL|X>snt5QL&W?C3usr}@=Y$0y zmB`EMYx&F1pUZG`S^nMM{w|*fdy})n3OITeLa$YlI1pnZLFE)toT?Mdafb|G=%-44S3wuF;v^Bv7t*&WdEC zHQ`QR3M3MMPRt8?L_eme1PYBM6QG(1aL4$tU}rhi87sWLj;03yxf+j>NSmi)DDVIN z|NXz^*Dntlek1EJR&wU=sZTPQ>#vwhaUs#5jopgFxw0S1-t3%i^G zstVfw&27o01{}N)Jy^fTp_hoz^)Qvhf;sr*PruLq?gGiouTK`USXYVWTIApbLB=0o z6b}ME1VLj)UY-S-X5Geg-k@hbUbXtmufOF1-@Um>&(jAK{Ib56FM6k)@e{~VPhN!& z#i8{96rVpMn6GtGLC_3pAB^+NIVws_=0RigD&d|*SXv6SF$9)T8FL+rfbvv^Ktg(P z^GXj=i|&msF&JT6d>15b_w|SGe^(BtR^2b(DrItgSGpIYEQitCYe!qqDqU3}HsNI4 zsFR-qtmsMc2Cs*+pQ_!4Pl-X2$I1W_Mwg5Msk(tU&l_N)$d)wgE@x%4U4(X3F*@S_DQi?{{^qXk z9bYerk8FE;%{$S`@-tLab+i}tihW|9_w%KKJQPfKecz*nn-vQ7YJyVfUhkMq3FIIq%*c>*nB!2mP&S2sI)qD(%v=eBX zE|RbT874u%h;s{cV;(B_ru^oY-%jAQoJ^7wcV=`#J9pIk;?`F^{O3!pkX_o3#@O_n zZ{EBOP5hShX1q7Mt`Om=?4E03ZNKL_t(pMvI*(3;~u1U{HzM4IvH#3ho*PK;PK?&89(n zJ1|Eh1sLXUpXVxpd$E3|_#P3aaY%X_7QI>}0TZXhDajWw4?sH{>RyQR;xtns;+)@o z+Er`kuz-61Y3-owflepq7@bDsBPWXZx|B{UNsHBUvu4}Rv%{uuuL2QgmOo*wJ7-M` z0Nsj$K7JTsl|A^Y_Z^J^Het3 z-PF#;6;V`t;hILS?-Ko9!2EUR$X0R#{H=#W5Mwp^(knF6_RjkDi( zs*Pj$umA0z%Qqk1Wg(Ck7JWcgiBhz>j8*Zi$0|DLHwokbfX}F!@~~XMi;H2zeGyK4 z^;C`>WG_@CL~0eQ-eBgX&n*hJvQU^qTq^+qbf53>I-h5}<-HkxebMpcY_Zu&9~;^S z`v4XwT9rlsWXzFnK;ZJy0DM4$zg#kh0eb6RUSu{M%5y1rZo8l=U&$V5P(kVa)E;&9 zi-%tQbI-wej_2jTauYN{^Z7x`pjp0qe;c8u8U2WcA|#|{uj+R}+uS!KooY29NlxZv zUaQW0uc)yFh+bF^fiJrs*7Lj@!ZBdc=fS#UW1~wPP(!zI3?=2@yWkR_-$w-XGFz87 zx5HfasBbsgR9Zk)h~?e-ncgjTD=52fRy>>R^jIee0My4{dtJbzKOgYnUo*`>32gaB zJn^q$eH^vynZ8v0dhV()XT>=ez%W`q)33jNF3-zVnG7$|qg91rx7-cql-d_XO>hSQ z3LJuyXAq4{mP*ypy3L9SPNf%(?qJgVGkr0bl3CXV%$=9qML?sm$N!{Hp{zSOZZmX zTKLlG=N$sA$3q1Z0**5POaXx~H~>SG3!L5FzR8{PP8Aj^&J+bU2)?|OXHI6#M)~pk z4>?09diSJ**~qg%f!A?EMS}Arh+_qai2+9Y6#{nL_l$^AVAr;ev*Y0(0 zFrq6UkaP9}JcVWq$UdWQewVW~Th7Xt`^SjVt}eUPSW3&nxTX>1xUA9!`M+&?Y?ey_ zA49gs44{??(iAp+o3qi6$l3W7k0p7duX+Ebh_ae@UJf)sjboTXU!a1rNbyT6lSS?e zF?B!ZQL_G*Km1Fa2^reFd;dP~+PM=~)~kBQmVEkEoN*Qu!%c^kuuHrEoTu7LuPr78 zjyocLg(b~&PIZk`C>VpqR@HlhwL1d^W6b-yAWG~KbDf7&vW-&izdV-vr`HsZdA7r0 zv`iR>$~v1aFxhdLJjH1*K$>tEW3sQJJ(aUKtZnT*yBmH!2GP5B7crtNo?l+4Su3oS zIxy`MCs!t0t-LES*K?E){H3)9aEVEuK0gKwXye>YMga)kA*LX}DEX@TNI0*alkcnY zR}A@CiYh`>#jyTA=7xVjUB7L7kMGXe91H8tFD32dI`v|dGt5*ZQtWOccGZ>0f%N4$n&U_WBT2`^)R1R+1`x)Jdn49!JZ;%uN11RgZ@t z0Z6KXSO21$U?lK-ohz247^--vE;(Z!h!)y62#h9${sEGk>$f?KseZQWa?z`9T!eOB z8o`JlvKESsA~+7jkyy}wi9=rO8P+rL70vm0)Gh8DccT@E9pVxbDy><`uQH>f_;wP#x= zOkxN`(A2EGH2*u`6h}LrYzP~%=0=L`!RGzWvrFjVu0s2b0xxOv)IeTf$3)OXfwyj>Jj+^a^Ksgj- z`oV;47&aA&ySQAY1$X`SLv$;i12DskMc^)bw5ZczOq2Q0Ha6WY9s>+^j+Dw`!N0W) z1fiTgZh`Af_B@C;y>6wzoomTYa;!AvMUn}x4=#&K^lEy?{eUY>#$xtTI>%N5_2gy} zV=T$oU35q;;sLJ}wM%=&Jz_a5xuJ7CSM%xI)g)xW*UD_kAuM8x%V#y}LYV^1T4mxZ zk))Ow@J^pYkv^N&xqUtt7Z;;)ZGn&FM|47aIsi1h-5c}+`d`9iG&d@#rJ`2u8CxBN>6Ia|fBh{9ttqD|*yD}P1 z%Fn<4T9%vI8Uv<)VF?H;yO?dV)J*F~ob%7MFff%W$o+m@meXl^-?3sQ{A2h2@*Dt$ z6_tGaJ9I;b-C4}LT!t3+_vM%SsL!1j=hSE_=Ce`yrP;yuow9$%oibibya>E`_=<~t z+QlX|=FzOVOBlQ9^J7{gJOVnl;?0a__R4&_&6;_1y8NNir(Y9uF}nN07>>ZUo0!SD zl$OO>cz}S<1eObnh;hJDRq)UXQ(*iWs|28D@}r5(;=(w{-)A%6r3%IyY=a4$#RI}& z#zN6tZPNy#`FMVL4y)K4)V0)r3lQTOVMS;hoOOSp{8I$c1Yo|?3Zeb#h2^fgAlbWG z8q*rNpTMx%3Rn=G7vk^` zMBKi8m)@k8_35|Y60|_<`hrgh2Ix(JOHx?8Rxf}g+VeC3F;1$)W+#X0_NK1pRJjFE zY<4kQLCqMIfI3xOE(=ta&mv%CKY^L<+FSF|q(BK6qH<_~8UIXw7d<%8L)+~#qQSE9 z{`0R9LB#|k&Pzs!unTqHe3%91H>*0oEi_8}lAek|wdZFGh#Xac3CePRPT;G3AoH?< zoIXBJc?WbFqZxn&Vlz9>hQ@yfP#`)9OM;KiB7V|W`Q0i@$&T2h(z#ZI0t$jww~Pi? z`COP2Gq6caM1pL9n>L|6C6Qte^sxqmQKkuOA`}SFgQ}1Oe7!Kjl<73H(VkJeO_5#V zks#PQm{vUN-TVH#y_Lw9Ni@9TfBDN_Q*k>Z1d!2Z5a(>F%9c(-;MJEDaOZP0e4T}@ zeh~z47j@*W-AKRRJo~3lza=^Py_gOGa})q4N3>(G;U`K?L|#5L?SwV~?FE$0qg#?T zArck-1>i6bDi@PbeRIJV*gLnc_!AIXLH(FBKhJn#EgYiL25OBzMe#F7v+|*+d1%M)*eOqACVNv^#(dbbO{J8g*qWD`tRo{!;g6c&0XCj?e9` z-#-0PH8z5!C1&eQo{RekgqZNaFbImxZoj%CTK~$QJ;ew|(tVaMi2-?cMxW2N%3-fe zF?2eKaqg>fUwOQ%M&1i6-i-+IQ}DhekPB^m27ux>u9(;m5xz zV{UJjZ9P4g&%b>Pt0vxN=6ho)lC`fyXj&I`h%9n8FEY_!1QV5C^%|HQ&p|R4@O^%} z0502|sN}<>p!D~3Wv+IHeNaCWIeeHV$-gh8dGZNB4=VJfSNXT_e` z>nw~$ikpi;?y&!xUxlSaG%niAtk?a8p;UZoCFuXVuK<6j{G+?p&D!AW$s`38(Jhum zRqQ)r0HQlE=buGZbtWV5V;h-IqkDM=C-Ui`?L};C|E7P$)Al# zT))fz(eVo|(29~`-3%rR+qbRI{O%VNO9JyTbKmNh})QQ zoN7>#5c5(|rF@ommXh=%t}?d_EciL0=uXu|kB|!8d;9J~0;7PSl92Q~6R2KrL1nRW z^@e<}RL1dNZb#e#rFmwt`9$Fv4O2x9u96h2Kh|b(IGe4yHqu22P24PHHhalIFh1ha zua*pi4z&kOEZFS?2<*<^!)TUj&SygleRYVNE{sPK%B@m`84DpkV*g4w#Joi|%=|Vd zsjYU6q@a2=jX}L!4JZU6Vm6d)f=C2mRot?tm=$nV)X=^3H6I`E^ZrHxaJ<^}dhH%x zl<}3yzFBuKpuFbBuQoYzfErL%d(+w=$8vo=PQX)3QtBmo3IYfo4aC+jxmzH^Fc2^Ui#=n1~JE&&}d`0ZvduU;_wgO z1Au3IeV6m$cWsuhNt8f?cm48e8e|&ACyAonF4s420@l&qFHiSn6X(QJo-YxXWT$8B zEU8?+eEAf&O+WAH@xCgsEkf${>pE2omG*{njOl7u#l6CTU^2imxR- zF9O)@n|A>$bVFJ&(Hv3y^O9e1scVJV@z+iEOVmCm0VxK@vs3NZu=e!&oF1<#+EN<@ zKty+@c{0hcNM#CBg( zy9~9(D9PfPi)d@GqyDV86dET*c;vJj8cqK?u zn1)dDC+|k9s98ogH~BjTf?h%F47+zYmB-JYGjfMX{r0=>a;_}4p<#jWu$BG-ELn-~ zw`V4!w5zz92Zv>KXZBVR<~&~5g>$yarXfjjWuAY32*8kE=*FB;xngO8C1S%)G$HwS z1=EQ1>IO;d)gj(a@{~!nDx@^_y+1VK;i4t3uy)U#2|1Kj02AijC{7ecVjKX&p4%A| zqn%~{9I|pwJuf?7Foy2v^cjnqQM62pwFL@8sLdJ_J4S}ZAZ;Za*=T7$%E zuSZ`l;DlYPHH~|gtY*Dc3F8EL0bT{=z($>Wc~zbt?^C@25_+QD&X*wNiwmQ3W~L8i zYy;hVQ5N$$PU5qp;n1tTo3TL@y!777yHR&+ zJLr0E5@7?%2%jo+ykDD?a z-IT+2R(76wr&s53Q{`6*ikS~F*G0do!vR7`Oq*pm9+k(ZFQs!iEJF;KzQ6f=MoOJ+ z)cC3l3`Q>8mYA$vuCC0#_RIFTFQ4z9%6A|5meZXa(x1a35Fp)J9A!86hA@b~_G@~t zHIblPYo%|G10j~+!vp={{v8q3uu^n3Gd^nc$6WnQ9JmC_<66Z<8C_NHstbKu zq8ea85(2a=PSP?74SOunz(@>6tNNF!LOTH(0UxthYm3bZAB(N@C%Yi%Ews#*tJ1${ z#tetcgdkw^d4ARg~3B+h@{Ioi`KIN<1vqai)#LEqS+1bB#8R6sawk9Gfh zMsoN0^B9B;1DdO0m=ghB#XlL2W3B=`VPa5_m+=Fsi-GiC<3Vq7fHBL6;8l;cy1gkL zt}s%Ki=1E2#l(+yNK|)Hu`r_1$8B8{%u4LXd);z(cbn%dcqtHAGymO>-)Hv)J%f8J zK0V!k3P2=41RM_;6RqxQ0IH;=#sa`S00~Siz(&1Hjma7(>xL2r6a@R(auI+bnA7U` zxvIdgs(;kKYD}V0sVj_t7cmi+WK_@ZXl84n+4Q=5f`FN09FLIYdRh)xtqFwLE`x46 z%bbjWe%)iA)z~ydD=DDrntG#AtwcM6m~hRfPyec4xta{4_`e*DBRs?4_)bOzMSH~$ zHpiJU5{rS&(kQFa%dt#fB_TzUXI1;+)cDu{tO>v&KX@MAvoT_^Qe4_Lj#Ws>X58eE z{SCGs_Ue{8j;zFZ&LA+QjfvU^44o@Pq=JRn7O}Ge;bk^2H+Q472fl7)1O!wp#Gubl zU#)FB@fxT)C#%Y3s#7^OSPq+?U*>yhIR&6GPuf%#$8!P3up=f2fYa4!8Mao-A!C3I z?GNn->{Ok~;{K=AM#OnFY9*IB6NGxEY^JkixqEY4E-p=z*`-qrjJTc>1p>Uzo%}Oj zV?6iq0IBRM;8{iViFr017S(+f(!&_;JJ3#R7OhfP@2atCHngxT3Tl*w_q<%@j?Z3R z{&mGSiHY+puZoqd&|Cla|Mh?T)6MlH)uZYa$`l+}3pz}pDdUzW@UaE8N4b+925sju zl~Z|qe9Qq7%shMt&&Y+p7;WeeIfT%T%i}`R1VGIWK`5N{Dm|MEm*#jVzyJLo%bPcE z%H7Q*lpdY;O#g1%&r=bD=^v6GyrzwlxZTav9wRM$)giXOT2z+{FRGzgBVpiBo zYUIL(Qp(=?T1~htk{?Q*S&SEM1JrION!GCx)wM+H0He~URHgPmL;khJp63z3lWC5+ zti)&j^6-+2@b~}lkDnThtO`&sLHM=0C*^F#WwjSg)^RhMfO zxR_xTB7Uu{0~Md(rGn6_9b8TFecS^+5wqpGjEHEz`4C~|_Dl&J2PZqOHItnHRS_Ndl@OML#1yYv+8z{Y$@9%C)e^`TaOM#Jb%toe;0(jE< zZe{5VmQjm~4rYaFw!M++zuhSh50!lhO>IO`>ms9VKt^plNzUSxHj~y=5~;0u>vg%g zy~%T-uW_E{uP^nSmuC6vPk$}jeYIeI`}S=L1(`!Z!dn2S^N`8!+ zXYTOnvwN;uGFYO-FUcI(zrIbJ@xGl|?boNrhx$&wPH)*?Zvm2pLGp`)*zmrvlIz5i zm+2zUYCQIA>Yb73fflhDJLBhJh5>iX64puU)AOZusi21+zp>GbTIA1)#{hU*czN5E zQC3J}aX73xn_`+Tp`|9SCk7`mSGP-rug~!L%VX*E?bSJyw~FE&wziq)8fLfC4FJ%- z@mv*Y?uNLx3%f%IX;Pt%paQV;T|5SyeMPODD!)kfz>mA8WjK9#%J1MCAdj+zSE$Ec z|D3~sYJz`vQ@e7u*_Y;@fBGE69r~+R7tpAHE&1?r9GZyUD3;BM6D3g^Lze_bDCEsL zRe!)im*L1Dh!%oZDfvJIHF+UP{`#(U83QVWF+%!GJ7yKVvZ9Pt1+YR*FVPDyN~q$h zVlD?>;Ace}#Q!y@+An|Hl_gu+^*n|Wz`}Sq3}x*QoBig<=OOA{N%Yjc0VApEYB0l8 zSe>bgyMOo+P~l)beEJkBjIC=wOF?eSg(}TV_L?Bk8pl;Gqu!_kD}v}R3$Fe*iJJkD zzaUUQ`0?p6MlwK(1NHFfOWF!r4SKIGdntOpt#be6bF6xyVm%|mOiOPB5J^^mb6J6z zr$@bgfpVBbSG8Pz#+Qr*HCvuRb#fCBX>9exT(HIS=d#}}%4HX;y(ov(OF8ZZ&q28! zPm+i|NS80acUi}&B+7`w`U7=-{+wkndcZ1HwxU>#>+4aFuOOzne|dfm4LlrNW-mA( zVbdUQbBSy?zRg5J66Z-}x6eGg3%gYD=Mw83ud*0LKUq?=P|7nURBWI7@~V-|cAtMo z(4syM`-8F!T|X=1YvNBmHSSwz;Obnd*N+KM-ATN40T5cw#zZvjec7#Nsj{vow^_&P zy|V#@&b`msbRPE0go<9HH>e8Yb&sMa(4;@`J}_JamP?Z=i)sEn_sw&7e)<@2;{5si zsw=-MRaSqHO5~AKU9m2eGh@FjXSK4^s=zkUc3cwUqAg=7x=exuxByb?b$xCO9@YVv zyX;%9ZDAFk_I-JNeN3(fexAh4bZZuqD}9Im zty?axu4^G+EHgm6m!#`w0q=9*CWd2mS&qBtcPP-DbNY#9(+v8iwlvQA4`Ml0-e5S+ zYH#+)+K;v=YO?@k&JEEbe**szJ1~GogTD&ROdVt#8=%eTXx*NtFtXT+L!{9-tvX4` zI%@j{+)3|5q7`TOLwH`^VS4fy)DgDIyWdA`p9Gz;ULN62dnu#QRe8MsoY(@8`|c7p zwm{JtpnH%*HhJ&vpCSddPuWc;1|)%L;;Fkq3z5Z4838q+Q}sp}x9nC?q&raU#SS?m z?j!*z9YW6Q!9+P`+DM*pS1c^B->o9Tt!;yZrkpbABkC9`7KX=*7L%MozaXwmZm)Ac zxy%9r%;r2xfPr@FW^x^{;O=P|RD&+2K+j<=>1(3-pjqknlM5zyZ}R)JWO_vV&AJ;z zp3`D5-LTs3%V<0SNQksrS)+JJ-=LKW-Gx;}cmM)`kr&h$CpEK(@4rQXGEP`07^(8t ztJlnbs!XBJtMOGR!Q-yZ#zN%AE9^dwu!>EkWi7-y83U^-O^51fwg`f%54WG*l0%?J zOqCiD1bC8vuWp%AIZ@imwh+Bm0J~1?gM*@4)CWJcs?Y>22?VI(=L@~Yx)jEXF-I+c zdJ(81K@u{%8dh_h?e4b(?Qh@SCV@z}JijxVn0|UQFWhr;*a0T}M(7kPfI=gH0(c}& zbgMp(zQ2m<+wXoXF z<?)N2GxBt>UQ(p;{2oSOwlZ_X2h_(Kro66+oho3KKvf`Gto zKdX(kbG+xf>zgth@zCD}Yz>T}_WNn$JUo2LIajLtY&RgL|*#csS^X*M(fX`*#LGSG!6I$k^!*!khXGbr zZt!QS-lm(D#i`LQliLsFcHGUTQ|&sBN%5t{=I0*Pbrc%V(^@6^v?T8O`Zn*M6}ho? zKc9vRcmdvWSFuqR4RPL7{KQm?mxF1M%ktuxf8Dj95NuR7UOSry&gJ-~>{f@eZ#K%+ z#bx=g|LqT@`EFFz^7_Wl_YVoUc35*8BbM=|1Z|ax3pTvIiQ=DNry|LH`V0~T^rYWS zDSw^)*{#rmE=&@XginldJq}WgFTi3RWb@_o=WJY4AwJ!IsR^oaERT;*v5ZuCqj#d_ zR)ydHmPD^tZIKJA#K9Cm^;t5r9dSj83Q`hum@x!>R*2`R01pT zN$D!lV?`Sfddg`PuK-z)ZbZOjfWbsY@OZj^IFI-oWAj^ELDk6U z>G?6hu2v_F2p9DOt8td)Idv%x;i)@9!OR$|BIh~}@4aga@HYS^x$mi71C|7*gC0Jh zP}v}89S{moY*@N=Dx>Q+rAP+RG*q*v!)X_5ZpwM>G(Zp-@lN7-U`%!~O+}H4)yBj0 zCYxF4<3141IolVkPn&>8KX=W@mlllRC~= z$eLU&&ef`p#EynxDN)77#AtlHSLfT=5U2c(IMog8?w~KI_o6M98g1i^k#({bI4$CG z2*|o?*gNOJ?*`6xv6k*f7)W3(HVkjBa7^zL8jlzXCzvs&IS1Gr5 zZxUC0AK=?}0h9sj$NT#*hXJjdWqEl87VFf>^tG;52VNC?epXmWTlh>J0hxAk1n3;j z?W;OotJouy6sG_RpH06%fNZr0kaAXlpXj>?#yN6gBKsFvL9eI-)U_T>iqQvQ3$T*( zB4Q|}@@jl@-Y|(}t%a@Dm4#Lt%#5>-y^1!jj+!dCvJb%I+Icnjc6TZdpFfulKOC*- z#;IHlx}|LslVqZ@kS%2SWcF5~?^L8fkn(qm}^Ku~CUNaNvE`S|I#GJB~Tln$sizoUa1Iwjy= zUNp+xyKf?<5&$71Jxhm7Wh;3@;%10@eOs)CSs$so22LyovZvjJXq8TavLqTnv)gCu zT;^6)p8N-(wGZ=&lcZdXPe}_5rsj;n`5(d#^0CyZdopRY>GXCMj2ec zO(3yB%^@EQF)+=%Uwy%>0NyOC*a!&QnQ=b`dQ{YPCt2w z$qHqtD!~ejC%oi4spe6CR;TLKIcsm;zD<9d!4#Fh?PNVIn$oEYcp9g&TA1D;Ce&)K zYGUK7eqWW3}b@2X6mhII0D{l5eugASnK|%M^$0*qrT3J5;#a+}Z zzckis@?#gPyxR7(yh)H1S$w~%t5l)u#X4sb-ONZW%5U$K$r&FGF9+GpVC}$daTs84 zO)jcC-UU2ehJ#Sb?xklzdC%X)We2h_mJ)qTXpA`<6Qxm9wOh`0+?V-YkKS|Vo5Jq7 zuJPrcaO~~M?0Ft0Am?N{i_))e4=6#q zn*zd;ibMFsO(uHk^CY>!wrN**7g`Ke4`h-6@U^}kGp^lK85g6@7|*QuzU*h6{D*fp z(Yj$|q-Z%oJc?#!SppQbf0=Xvc3Nq2CLtu2%7QlWMA4?OGXlO}tut}gXjX3k>*B3l z#*~>75CRy-O_X^mP?`^BP@*s(r(YbYp6^m zeU*_mFBgTPDus?HcA??n#OOvhG^T#KUq1I?&*OteZ=g|!%Za+VxlQ1K+8t_)0o5t> zt0d-uy!-G?>0g?6XUsFIlxNm8)?SsWB=lc=11iPuFQ{(2v6gmTo*!zZTN<4*Th6mC zbTYXOT1|z1ImlsWj^j{E+Ndso;qtBd%t}8 zlFN$`5-0>h)z+uapEB!elH$Q$AI((qIpp8jCgtaT-IwVPHiAN z5Gp1ym3iM6}v<&KLrm>?DK{iom3I#XS{bNl@%G2UGQjNLf~O@yt!r7A)~B981oDaZ%^a-7*bB1POoxoMNgf*)lGSL>*JEo+@&P z#dZE%v=CYdd<0@m&#s!HNV6tiB@BW1rD(-mnRrnQdJm@5j1#w7)jK5i^y&Y@%ZIdZ zF|T3%=m7`~PqsXc)86zBv7XKiKqz)vkBw1SO`nrH=m60FejiW|YyndKyn9Bpi&?uG z4O2k>^-sSqoB6ane0~nA|22ncaee#kcPY@?mz`#rjE4y{E}aiY6hRO*xviD*bh?O- zwSy#~Lg%Zc*=1vX&8%5axvSe7@evoLs^|=e$kK;Sxqo;(SBf+Y6#V?v^=GG1gj1wL zLaJ$fSdWW`GDf%=3a!RZ0TF^!cGoZr|0HOTdMO z%BC}GfnQQB*MzG&GQFXCmZXoV6kG}wsqamgq^~7F7-boa`l4&uYG$564j7YGqU3Agq*eP#fh0R>0HmYn>Vqf2x91BJ-CorPnp;LuAx1&ySze|G((@ zbBnCl#Z=8_J~N?X_5Sznfs^rQR5$o-mtkzYBbV_`FRjy!TDEsFD!bymtn=BN`GW;N zuw$cL-o3p`b%DV`e_|@pZ`9jB&7pNH^Qkd2{X0tHGp!8aYX{8dWvR8KiX7C6L3K44 zXqBxh6}wr6isw>HB+=agBB=P7{^OcpDyp$E(oUCObJBV$w~ zvGwLuhK*L4nmjNMkAht;Gf|La_RSCJ!Ey_|y{qgFVV-2;%&viC?8|vCz4z!dr(Nay zYP)voFer!3A{Aj;9-VHPp2xd~Y^vv+2HAdVKT0&s z(l~pxhzk-hP%pu_!x&8W)7Yo`!co!B^p}K#?gxyzz0CTCfdy(5B%zM=zb$HG#55d+ zmFSAUR=G3a*==Kc4P0bpy{)B5#uzQ03yT^nwLkR4(dg%U4xFRG55$b70gNmzra8Y@ zj0iwmS`Gy0)u0WdYrCtvAlD2=#xa zC3m3pkN@t+f0|6jnN>txQEIC$9CB!^QmE}1pm?znDWUAn#tR+@*EEO((u3?hIErr7 ztK|LZ=bs`HGj}K%>VrC9Nw^-j@v!U#;1ex?+RisCfB5|$(-(gK?k1XpTG7~Yw)r;$ z4=QOEpj@F?MBPICI5`i*E!f*t`(uvcN{WoH>l?X3m*pDB5V-FI^t zGE-{dM(j!n8u#Vf@4qdJDcV$mk@73*2W$ka^k?H6P0_7aRyS1<2dR90cY)03ge)Ps z^y&2v^|TtLOkW;DO$iK8pU>lG0c-kgo(XG5t&6}*y`d;w8|CroITW4C_~FC5^bl1% zDxA=YQV+#>rxUaay#s76u_Wl{%Z!4<7S&hKR zm?3I(7Zxhi+ork%)(W6e+YV>s?9cjqCXI5Pf#Bx6n$Yo|D&(v|8heyKo7R&)C8hJG42P3^AD^9>5XCz%_S?ft66NoH z{4wWEwVE+VO6OS0Rtr*NT@px$9OqTCOuG)Hc+7k6UybVbwWSac)Pg$JT^{Iu&&eH2 z;POdMrRocIMsH~xs!OByAOK2G?jVOz$@VY*>#tFQ|IPP5gk1sXoqhL2j6p{OKDpnR zpYvW4=2Vh|@0<1<)`%OY_sL95U{zEcve(AZV`?SxfROacE@M|UOoGM(z z5y=hc@bCTMU;dQwO4AYEv!dbR>i;L|&VFRi(=(xeW6xM}U(Qz5)pps~V}=>4JrXb) zmXVN<;F=4>4H7p88-nLKplT8^rMqZAKn62e?;&~|`F%=a5vZyo z(tr5jhw}8?F2_g1a(Q{4^O-t-vra;E_i^h4L%!G>pNa6w7YbSgC(u_2qx0Yy5tJD_ zXDMZbJ?A9>TqOGmPt~p;&+7L;P_+?uTC{M8wl%|zVS9f1?YFsSx06|Emce1NmoL!p z(XoL6+qChG4*L<3QL{^JZ&T$x9mqr@YYfWm-xBo%5FQReLhDUW6pi6~be#4P%v3J` zYBW@WgL9xb9HK1m1&s0Cf9T6CwfFhS{On`&& zT1x^pdYgcPfoGV&a6ZqS6*Pf7J-Y*JJs21lMYIS8hOU5d1Tik4web!D0Y+;PsoK3$ zjsn>#7e;{L0?I(}3>+xXGTF?BhiQd^pVgTAArZQi4tG!+LM<}l>>fij3<{#v%^uS1 zmi>yvIdUZogfu~fLnyNXlMCi@j#2}+KC-0< z1Z^mkMYSS|V$Kht6q!EfL2Ybd2-1EqPU`E6MY={z0^BuaO6O(QM6zs#oMsP%OxlI4 zIaFXWeM|s2o0IUZL99%4baYmpK;f%OOSi5UR~M-lgC+9?CAc_CyJDQZOmH#Jyl>|Z z!`KXS0S*J>GBb({taFd(7#L)O%pKtxko@jXf+F2#5}EzQob9G|@` z-Giejiy;Ud42i)!#RzJxoz3d783B$?iAo;YODX%jOa!ZpZphJ-md0cf6}A*$gtL%; z8s|)_eVYu<-!a;N8JUr+QXN?k>wS@S)h1=Hg6tYR8^}^6Tm?1Op>lY(<>vZ2fr>SP zCW5Nfve}-7;3IdXt{q8O$0J!foelFn_C!3vrv7U|9{b^JNf4^)TJ4|^Kr`Se5j~8n zoOC*x3_?SYGBf=!;$(WTgM67SFsQ+5L|vkVQKwG|#<#mhIlp)jLagtF4uH3gBAjV?Q#~y69Wj-N?tJI{kpmKz2&_(mX+1Dy{6eXXk zJ21_WFIXyoQj3`R0f+UT!Z+Src0Bunm z1yTy96^Oa9E7QlvTpF77OG7n8&$59{)okXhZK!NPE14Ra150=UDM@dx;Gx||R;j(X zsZG(gmW5`r9^GU{%`_irLBO@-zvaZn*An6*%U{vkAX23{_hII6Y$+YzJ zUXSl1r7SZO{pwY>HqF*5%6&Qu)Zz?}ahYX-M`tg~=Z`;x6zMQA1l3?bIJUXKDO>Dz z(ccdPdAr+_trn%(G7eX-I@wpXv2HmzISrA@;ae>jbn0RAvXtpYOsKNwT^0m02E;!P zN5gV^`>wX|93Gcv0Y&O->$0VJ-|j^(e7BXcugkXGDvuAwmR9khMiX3Y0;Aw`kg>i3 zycTjDX<3;RQW^!l=|ciatajv74oPbpgV1)l^k8>78UKnvIDeug&Br&gecj#l2N17_YsicQOIHhTZ7S2*-Rc{n4ROsrfNF~9z*1% z-Z>bS2~|1w-CT%`F}YP0P6Q_~wAZ{5Zcl~ln*}HFX-$|%kg-f3vg}m3=KS(yx`9IU zBSSlrK+pxjLjTes<4yRtvIq;nyHLztan)@ z6ip3RFxhD!KjXTnrI(Prl0Y=f3F$`H0J6qbAwfLOrU`l*)&!a*sMHC8<1!xCdcX3P zAbQkINltby_|opVe6lv1^4*6|S-Zgy=cpBODHYbB9vO)%SS`_|V88rFW^I7fH=F#s zGC%~$x^>9Z`Q=s3ocl_RbT9BMOcdRg>BAx&5aCYjhw->W6;b6E+)X?qf#9MB21*`f zQ*I_Y6>1pIj3eM~cKf}udft`UYE_Pp zPhuCk^V<1hQ6MzW&yPV<40b|5cUSlv8)qND{$K8zmSyiJfZ*S{&jgk>Nu-S}fHZ&6 zuMph22Z9L+m3!^1u*GKP1Xb)06G$to2#ERlySrIw(wJua`bK`X+u;Lf`w*RAwqiGC zBLdqPO?sGvfMvN@tuhS8NY*&MwA?TXjXDl<^IS%ee;j7PMfD;?j=*K51UDKOuZXE% zr`-h-o<5ezn6A0jB%^{IOa%yz4;z1*5`b}$#)gWX1SvL?&`-n4 zTY(ih?5z=?>TMuHkWa=&ZfZ76Q=BMGw9mnFl-nrtX(Q4a_f;StQKed^h~5{&nM~bb z1VbW6GDiD=2ZuxLoKl>FB_lXGF>19Ai!o|e5MccsKCIAoW1IgyZ;(?U68fDtAUd+@*5cWd<@H&Im7o zKf<)kIyck$jF5QCxqsAT3Gd)|XyKl|)#rgbx-BFnvTGtmse zu909$rsw@?P`M|{Q9_H<>Y$vSkx6#udgWl)kARWZryN@%GqPayPw3WO8W_?*P|N44 zNrDXTk@|8*82V*e95K2NK+?~QA67pWbJc6`UIcoQL8bEpZ>B=!=vvMvIQm4ezj!Rm z#k8EBU1e>cQb9KaQQg|{;tq3y&cDpi8J|oIhtm34iBIM!R4z8I&QSsvWhoh@V3}dZ zDG=z&m}5V-yC5@zOi7ffKIC4vy6rexy+)ifM~&dB#+_PtMwC;Ut4Nm2*m)FyyND1p za^Zw`{M}+%JD--*S@=|(KPI~ga<|vl$;fmC@V=m3fu|(NMj?hdOWHx5aqpP2R;hmn zy|dtcAAJz}@9aC5k_DMBy9DNE$9se7*f}P_ufU8`7ZjQIp-xSoz!|~KK%Pu(Sr+Wi zAc;h1o))#lw_azS2vlP-okrJ$jg)n=Q#xumW}F2`iM!1Lvx#h5MfY{rDymORbYK4WTZ=R)QG;o%@Tp$(hnDA%bMh1pskCj=$(; z9k6#k#|uUA))1vVQCKjPa|Px|xdJj~@DteoAkXNo@Vk;YU15S5_R?99JW!C-%$-iK zoDl?7x;pJL9^c14@}D8m;+pNtcaje8seIPKJL6n-jZOxtXxCY;)mIvUsh5w_u#Umb z+5$z2ScvULRed`e$%*!wWqf;= zj1|P6!;lO~&2&{v093!xC+fn3`UB6XX$%I*&~j?_bB-Ar3}tmVqiaP_>Sp8dUHN=_ z_qT%>m;=AZ!CS6O7eq+v7DbHKp1~{2_1QWGESh#i#@?aUp60M}Otnh@F>#gm1#c0J zU`*9x9CGlmx+=!4p%5-A`K>@lnUTFLk*OM)hu2qBiMJr8l?P z4)QbT%Z^GV7WNI#SS2cVxV*an4=-1sAaiqpDq*V*;L+bIT8|PL=ewWyi11@OgAPP1 zpz7{(G(lO?>4EA{2h{i;@T1w@;hqo`na`4ai{5pvB*-)YQ9Ga^Q40+6r!t!_%fsz` z;7VuM9;qurn<~)=F|=Izm2#3ZuJtS}S$f^U#nm`MY`$;{oWUS!#*UtyB?uFY z$;kXX<4x%+XG0lca8!Gb)3tDr_cs_xKm_elj>{L0!qZboj*QjW*=aJe%8O|vUe#O$&(0M`qqUeufV>qVs1!%xu0Im+4HBFP&aEvnsWn093o6m> zgaC?QCRi0rN(AhQj7Et=x60Yoi)89DD0fMMfn4b4d-}jQ2ZBsbi*QVWDsVW1elqOb z837XZ^yn}`Hul>(GxUru8z!JoPLRnHl~Q70Tm^-A48uN$Gpg#L;PU;94qTam5#^Db z6*yH=CWbv|S6d)$4yc<%NUJNG1qpD*IbQ#>PM%A~pJKe39Y)zk{&$gn_dxqP7u*R` z2(`=ZHTZS2SQBga`s<%Wn8?})(mK6CIXo6P!WVFzs#uQ_Mvx6`fA#RyQ=NF(rxDXk zNdrndn=KQ}(6`W;(;4U}lROUd-ynD;$<&LS_&o{MTEqz&#zv$_$>#VdC`ZWFhez=( z*Pm~5{->Fg%GVecRBQc8c^td|TOeO(@HZrHNbBoGKj3;s@vJa^>sE)5HkcdSI_}D)8M-YM=Vcm!B z$=((Sc9dBjrjOx)_&hd>@6u-2R!gBGwNw-8cFNW%`NuNrldA#4Jx*Js6ff0>aE{>%tpMx)lO zOj6WVCF%#eyFeK1dYDD(E2AzkxTA@#J*rh6rsG;;$JF2VdP5^jf?`-#lZUkK;6I3L zLnL{A&H;ZIKLkzTc*-*}A6Rvfph^u8qH=Qib=hvIcpYU=WC+N7?e-!U7%QLAk?lbN zT7xRU<2i|noSmOXMNg@w-7x&cOaVW_nQE=6taay1M9X1x`iJWrEuhjsUeXcS~KD^Xt@d(_E|IDCnHh6C`dn zc}TF`ADpH?`tzsviTartwQyNvj9^ZvVy52iR)W@Qj4KP-Ib{@E?N#=y-5q5eolizu z;O}gae$|s~y^C2ONmiy zr9jZx%K{zyQiF34CO;VRuW^z9q+63cDM1-;oFq_X(G^lideu3f$=Po1BiscJuT-NkvrXTJRHQ{ zg~!tA#kWDea4X!0&)4s>=GxO88$vv6tE8=efXNTR7!(pYkhO@7QE{DB(zkc>1$B}n z9rilq{Pd)}c>Ox}mMx`60`QYucn(O1z~}txBJU!o98V_UF(~n_AFHi^9v6Gl)z#Ha z3n{{2P?QGg`eBl3$PzV4K`exXth+mXarHWZuRD}G$%lu#P{s0;JlZc`y(}Nze=H}5 zqGfa7dpWrIcj`?>;Qb)zw8Z3Wk-@6gjGk$u=1<874h?8-8+r6{yn4T}DO}RvMc`tG+lLJ-i2p zr;#@GzDQQj?OnOK{*ZP?@|=uj;8@JsRx^<#g{samhw>Qm2SFqcOBGSH=u-5C`netc zPNLqY>l)lF7Ms9IA>m=|GsZ^7Mm=nnG6YA=P+wnvNI(JVvyV5QKg9rW1`MPiF3zpl zEKiMH>9zV58WRonhh_cr7y_X{i|PYOU=invBSqMheX6HT@1y$YaKC>2Du@Ryd2LQZ z1|$JYDGMABqA{r_KIcN~|L+eDtMS>xst&X-eXWb9Ix&mH4Wo|>aWl1#jWs9q)$}Ji6=uFI#eY6_u@Kpju8dkJ?D(l@QaH}&;I~{Z>TLH`a zYPZZjubC^NINaV zWsY?D)#f2NGCySm+6Hx~ip)uH7-1$s%z>WqgE*(OJ27}N#Ep95FlZK@2^Mpgpia|t z&cpKE_upkO31X=l?rbuRK}%sRjQ!eD2ep&o3rsj3cN_X(%&7DlKG)bTVu_ zn(YP@FOc6x^vLgKu-3~;QhM&v)xgTv*1Qd|4LmAnPxg}bH@*I=pkEUrRtS+s2h;zj zCqXH#)sAk6K&x2{Xc}dW*(uIcCdEdi?hG0gL_dr}f^+@_8@YcBbNe}lQ|2Uah!#eO zx{WeAIgZmxG9yFX_q8_=9up8z7^M1Ff;#A=P@173U?1^_C__TmVw|1{&KN{QTfWL@ z=jiK?r}L2ZvQ>h+hx_{kqtnM(2xpL_)8o^usrS(dKm;u1oI&lhf%Ju>ia422&@}62 z%9mizmUWj0q@YnPLgv+#7{`1d8V;XyA6?aj???$kl=>)I_6DRL#` zc92ER-6jdF-8=rS4Yf_Vr=5fwdfp(!Wt#5uwwzvGmiF!EoATztW z43<2qJ^3C2ylxNzgATS7M1T+(VtwfjiAV>nQxxBL*78SA6B(w?NoROvz9L%2=jF@S zmHDoAvH-g^%lX-PvK84U!^=pB^2rfnuRhYmA268hkN_E_WK`yIA07u9gHC80`TXu} zB29;guKvr*%QBtL%X(XxpcgML%JOkhE{;!P@CaXQrv_%s!kj-oI?kbamJxTmG3Jlc zRXM*n50Ak+-rjsF#}`+bEw4VsxjvUw-ZhBK<1CZS7-QMX#Y_FI>oV+h6BWv`)CWI* zz78p>(;sDBrw@1KFaP3Qn9>M&FJ8XPyV68QrURW>+sFAsSuQ_h2+ZN3On04{r1DLt zDWuan^qk05^b0~8WI)cQe0X=0j3QkZ(@6~V*~wu@iyX8s0iH8*WIA7JbnWu#=B})^ z0<>_qtBG;{0THy$&;2B}`?$>YJ&lriHSS zZvOlizbIEP%xA9|7RPpT{V8KTQzz^8%Jqlel*6;La(t*=_B%75~| z{FCx~zyEvbH)jMKdh(ep=Mtmu;>k(0qy#|EA61QYltySX{S@=nAr-9e$NCF_V)rgJR0zDM@uts ze&@W_IUaK}Lv+ySFJCUp&CR&1pDQACd-qWO<)8dKqo*?)AQR(+(z|l^!>6eB;eG0Z zhkliEp8&!XKtb7VGD-5Kw8@|gFlDvF(V*OXzAdMxr76?WE@UXSyW-4 z4VgyjnF@ z5DMAYkMBQ+tjixt8+y%B{`6n}qI~-JF>5P0fAi*b0zHIUB3c3tfxS|mgv5Za&#O)O z`1wBV%|yT?Aso5ZdE?B-lX2OtG5qI2a|PvW6(vJKeIWh*C^JFsAI7mczxB;m<(b_Z zKa^o?kGA7}hIS#DKiof*#(()={3pAnT4UNNdU+}Es`e4tg@8cqH}I* z&QFhWP{3dgHL?TeetcR-$oiZb@ncTbfeRKG$xPdjdM8o}Ujl|z<21_~`6BFG^{&k} zMn={nw`fN<9Fay%Tx3TGhJ5LB`TqMKb0Hmq^V7rd1=Jo56ga?#maHaq`>M52nWq)rRx=G-oRg_xen>GgkBf_o^6J&Aa(8!M?(c45 zKt%8WWzQhXlciWQFmpv0Y9M9*IC{jV^s(=Zu&!m6xH#FzzBZUvLs_{%i3(x*rD>m5 zsZwN~@CbHLqsl)}asUn_3u^4j>FG&%^VQc0QsxiiK#I}l-Ydv?W_P9%%MgUD)2;?t zoI|HV{Pse?3u5)T-qRk0aEkZP>6Ig7yy#C<9)VJZbHcC*s%k*x^Cbd;Eb5ikm%ps% zgzCrt>wYPpox>V0+2IRp0Ng@C=WEq8b01PK+D%TLA5AW``| zZIc2dK?ehGT?87kEN9MQI>VrT&#WwgY$#mz+$pw*6Nv`A(bA^;?Ip#X4|fl%pB-V) zy?X)-ZJ_%hK<02H5Q$Xqup*$DT3YYimV%u-vMXgcpx$~==8Ni_odphcN6~Qi9Q^^j z584p+)H?bst$CJ<3gp(k329Y%xM~#mJI-Drg7=V8477`wS~{~V$i56`n(4mXj}2u= z*iad$Y+3*l%c^ZLWpS zS2p(N&TzGDkQS&ed2@Tt-r^Pw#lV16)<56k+5C7eNwVU1DX6z|q#lvJ##(FqA&5)SBdU0OvuRoMlQ%jcY>#Q7; z8hm`H8I~z?t8tkx$k@IJ$z=63DP{Lm2E$jS*%_4Ye|TR`jz*biHfT4?a-%J1RgQ-G za+m3|We8fmlQKL&hv}3TFJ6_KPw&fYRS6yDcoQaaK{JR3RAG8Z%f8(Suvd(DZ&`B(80JI($r|-c?ex1T!xNQ^Y;j&{!AQ$ z@vLqtixVszXd~5z8ZzE4NRP8%7!`y4G&e_K6ST;_s@*Y~wPaDHVU=T`5Hg}s|Da|? zcoH20NmdDDZG?#b<>h(#@Zo*tC@><>nz*xuwj2a3kIAW5$05qMK9DtrG>*X>@cCmo z=y%Fm|FKph!N}23f}MpvamJJUui;Lsb@>PX&cBy#4CR-XuU@B)OD^<}|Hc24vnTL& zuAv}n1SYlSy;zCt)LEHL=jG%CLdHQ+e;br72=nf~JluWGUjFQl{wPSn?e(WzDgTdF zL}iELGAOTX!V9vOUxHc24A~b$o-sQ;Jx-r6_*-@^1U2#+B<-^}9)XW%=H%T6^M%VP6NmPRdHmJ(!uJbx=;v&&v1?hoT0R7T+GjoQLbD)>Cc5d1pNyyZJa^^I z%hzGXtN%k>)Nez~>i5g5*RN7K;n;=d+R)rd-3M~(8%PvP4^EUMMnU++Zq5tULvDQ>nsanF z{+s{>DV80$zq_l!`*R(|EeO@#`a9qLw4#SZn#yw$#X#}T>kRm5wt8i@oR?lhX>l33 zUrtL2>gB6fA?wi$`E>m$=s-w>2AmmH-7p5el&3A2y;Y8nPLf4GEvDtg<$1Zeg8)#| z`~L$pi7Fn1(v5xdjGGN*$XPi)9hG6vWXF^8;rgMRpAO24i<9#9?YlBxwaf9v%akaz zGBbEMJ-__(pXW2LE>6nr?Kt-=XxOeMM6!0ii9KrX<_U6ktwH(W-RJnS+}{MrMxKk} z4Grp+>zmt*wntt@9_;jLD>?hX?#*Yl)s(&ABb6)IC&-zA_n^Hgqkb#x-V%?-fB)b7 z=R1ep1+>80@Q$>RAdSgF8pt)vWRYfSbGU{FnJRU0ewLn3hQIN=E|bSaWw9D*svWP} zEt99`((iRrE0wiRZg0x)pqtjPhsh+p*u73Oli5T}N5|&J%d$K+o&UqKn%t$Xqz)%i z#|zN0peD`uC1Q+Br{OkF<>>gRM((R{`k^z4{MGGc1E~{g@k!>2=;X51@6nlUAt4f? zQ0rmg{4UOxs+J4$!@KKfmVfotn?z_xgBO=C%JuDa**?`;C9w>V@))yJjV26l?BPbp zjiP)|YKSLZ%Ebbs86cu3wL>LP9eUqxLbDuFvE7s&`ANp~X;GGwNemuC?e}q>sokmT zZ;W_pmLJ}|FTeHG%kuiGZ$j32_rv!II40w}7(p}ZFJHVaKmO*|iR!=k>2H@$pWf!3 z?{BVawz}^)Naoq?q%M`fXv+Yc#PL8I^wyi&<~beO)U=wVTwhL(%gX)hCy${J-5E`6Y7gwgcvuR}(1Ic4E#wdu4I6s3fr z!^70dhgqWSi?ic$HtI&Yw>KQ-dp`X5o0OOkqMT3Vt<&?%h;+Po`MO+x`dHq*{XT#0 zJYr|FfPwNekZ4h^F0ZnNl)Ge3zxnRFWW53r&ic2${oV5ULIf91Cw zqB{3;t$c=}J*BgtX7Uvg6+j-z+Go@9N9FwTRT*|6Au`>HI4Y~*NOXGbK=B~*&8{le;n)a}1gsH^)M{$L5Gb9H zSF;h`LL`QvUM+$`)gjgvw?$-bA$$CS@~x79fRd;UTS?WGEx_v<>AY(9%D?;<|5sVe z7Ug%o`6_Cm+BzS`laxiZp(A$-@C8`zGTj9wOLuy?Fq#~vM3ZM+`TzhR07*naRQs>a zAYyRyBstn%d;Q7{Lzcx)(~irA3j8Fbm*?lX%d&6x@Al?CXU5tOqufUmL5EX68ZK`? z-G`k&e;mjEb?E7w9K{|#&2e8U!iq2%+ash*mJg56ro1gz7w2UfHN%>4L5X-mTruxM zYb8N1U7cv{P=YkLiVAPl3{i}Tpci|+-NfeleG&@6#BaX)o1*#YZ@&AkH2&NF`aj$K z><|Bb>C-7+t;*}yUnSDhGUD>8i-@Yz-XSx_lr^;G{34koSVj#cFbrs4hR(5iIhQ#k zpW46ZAjpUbaRicj-b9c1;^H(&fI}{lmr?%tpZ|IJmw)n$@;krtZTb4;S-HBrOw{%z zxB&IVW$(6Slva)km-uXCLSNb+kfXrCAu1ivjOS--pDOVW0f9f`DD`r4SnCakG>S9v zykMJT)O(p;7x#bt-~W%Wn}7dze>cI4b-Oq_kNA$R4;L8TaZ~?1gZWJtvPUsr?W>F=0wDaQ*qZ zj3W$XZVa6)g?(+H5$8z=JP5JpR{;Yhw zxh-FR^>z8`_3P5t%N`-AO3Y()7$VJpkJE8TXc*9eNds3B9>VMw99B8&v$M0*R`u4( zq-5}l=GBllTkc_PNUib-oZ9SBVWPCj2cED3+Dz>K=5c*wG9NT z=?SMi_>>Y29t|TXuo4)#@6LdXhVlR5hj-ajKm3RPZZao~bJ=pn$tqjn zf+)#A&lr1C_Sl~lB3eJhV-5kaEnJIE?cav{AcL7o3JwLoBNjr#z}e2Q=aU2|(;@7! zW2sX&Tjlolb7Y&{H>lWO{@KsVKmXIeELWE&OhG-WQsgR0hm2ex5t~+^srV0& z6&m@*_z(}+eHvi5KOoj=H)BfwUY+N^ArH2%rbZqugdo(oEqaWcrt z&@@v84|>_F@!ehE{gm~T13Gmk488$UDq=6j{gGhhiInnjV8LDUi6oVbByeYz6+NXQrC;akn{-!)mO+>{+Uo6V`Pkvgu)WW8- zL~820tv$1FK3~_tCTf-$K2kOIr*kSrjYOtiP}JF6%U&nR0PzAGOf6J0GZ(WztUaH4 z*+qWcX1mP~ z7XZ86MUhRX6;a!t#geORv^dsjU|oH@M<>~2jQh$~Rx<>R3pOf5?qYCeBEV0dZp-QL zu>9DbT0_S=raH&y*P5^_hh;va4ys$P-UgdPe7}68yAJ{e;WwRS7QF72bE{LaZj&Azt#tqr^) zf}?w3&t|tSySB4Vad8?n(q}`A)N3Pv6HWa(P8zGFcIqz9N;3rIgR%~PVVmsoX;GCD!9+F5OU_jhI~nj^ z4%yvT$`ufeZ;U=4CBQ@Ah3Y_FG77uZ$-A-zGXDz*m(CZQCi_Fqd$TTAFJG5UYzXcY zqAUf^$MW*co9sD<$)9kjh`rmCPKRY{Dk*1e#IFE#zVB2+-rn#h1hFXS(RDZpHzB3N zz0eLMfKAc!e@yCF7n?On0B0~%yG$RK31ZgmPEeGzN^ZC1`qQTbIhW^`<>ZtYk~m(g zv)?V4*P2_)a%pFWQs({|$39Gey?!=YT`8~5+vxXeFclP+@~*MiO?Rc*E%#mU!cO?Y z6@nPMvl5zU6_~YPSQfD$L$r3ya(eZ$JpILArYzd}hyV89{~y2k`sF^OHrjn~1oicsH#z8@MR_98XIK5EN-`3Eu->3an`omflJB9pE)Za# zd_JVr!f;Nxu#9KlV3``gAk@izcwsPajDq0NEc5lIh=Bd~Ek(W7LAf|PEU#X_Nk$ui zp63dQ=?e$ zuRI~66!r7E5ET9G26D&%l|c}9K93*D#mP~*d~p?{mF!9HeIi{-dtlJ23t%lAxJ0Ui z5t79yYwSn7%9QpBSw>h|FYSR0Zpe)h6X{0W1vKS3+z9{7{%h%aS|zgfb3V(vtIPfH zoA1lx-1{7qSFc~jNw^T;S{VYSc7iv-B0U50%b5>P&Cm3~D(u6ED+zc9&O~rx<76qa zJ&wlzJgX>MBrfO`9B@E>hpb#Z+3f@m%B~*A_sI}lXlM2M_P(4QjmptTOJ!ADb74Vu z{;Afl93wk*?vyXo<(#b$^stISjC+DlGKG{bEN7hx=bi{67%N6kKqdgRPXb_wio2F~ z+mC$~_%Tf0(KCF$xhb>7rktPGRx)H(oD1n=m6pxPt8Ib;kbP$4%jZ~I4vcsW*t|Y7 zE=`>X>i)?{+&>%>$Op6rn!t$$K@&z>P6**M$g|FKz(B|GP)hQB?#*}K{}?px>#tr` z;w^)pGL*SWt2z)%IXKR7fpxSEB^9_yeSw!>Qbp8S(g zT7W>xsOGujq#WkYIF2~Wc5MmuhwOoK559(C*@qf1Rto6gw*iMw{U; zfAt-9NH`-eUcHKqbQVmigH|N@sNqQNF6h~x*+*y&goO`C4L#jA+MB0A00lknass)n zK6NEb>VG&ey_^+m>6zIsXMkOGFTM~)1%&>a1N-a0`pfdfNd|@4mVRHKzbtl;zyaCO z@34o*r!)deMKjmi^7t?=FRrcv_1C-A$eDofN*vjf*v38c-@SsSK|63BTuu;u2)6hE z+B%asO7QAbMO>TlgINf=Z%X;apZ&Z%Jyi+!aGB^H?Co?2f5BcT8UnPcja8n&7m)}! zuijsR=)KtIdZ((gC3{gB|2SJNl25E1D0~Y}kn@QI4Hb6gJS$&f4-lS}Q~m6x_wUM` zNtqG1Xm!i+Xb{5G{dios)6QU64hMts@!gMUlVfNx%^m*D{He4K5A!ew5hrOzf7mZ_ z2pF-ZfB+Yu<>DDGqAjgv5jN3H&?Cz+rv+!Tj#H&*c6xSPZf}28$u2#c{uCIAbDL;= z!34zsE}ZEo^QbwWZodu^$wWNLP$oWgDcoBW<%c?ef#dgkMereDt%&sK7ax?}8k{t* zPJ6Q|i^p{|0J=jpLSzcl%63u70z>r2^Z0>;Y*M>wPz+TI%uL& zSule@5F>^N`?J+9gTqk_xB8~hyPPGfCEE91an9|k`X`cJVD!4BnAcG(tn;~-ro%m% z_g-}ez-O{>>o0Jy=A-_gw9hZ{>@rw^)24uynz?*N_X_kpXGm9$T%cZp6P@rIz|Iab z<5f@{cAL^9H@U5|+pQO;CNmHKVJ&0S`#DC(!dSZ?3w^SolX7-aRQDvpAz2b7CYOBFNg;$l)uMCR+&Iwu2| z_M_dl93G$6x_)yHf9@x|F@pN+Jv)7h81zmnZC(NjSq9^6Fo`oChgV8DJU&i8u?$Tq zWVe@8Zg-Xu-g@!kvO&f+D9`*~f^ij0rR-Stn7I@i^J5 z?<>^U!a=FCH@G)hKQ!lQrjEI&*|{uD`%;@?TPx5kL(c%J6We#~fXW;MR+K7yE`uoW zamNHvjO1fldd=;qBc2n$C4gy%E5sSfyah<^h_Sfp+f!2sBY@P3G1m#=JS}I7=zko>ip{8(+D zZX|ZZXFG?^rc6>W!7;Oe*1ivs*mp!M=WO{VcQslR3xlT~^WSX0?CN>7h^?N3==+0m zc5xZ!O14-cCYhwe57}L>8)ZbK?Vwl7Ny9-BL6-f%J2qSCZt!(>aZ%oU^V0-HI0Wph z-h8E1&hF#8x3S+2351pd9#1FvjC6(=8YN*eI=J5}pWnX?cOb!$#DGnlFY{UKW7Z*E z5vv6LkfyoPTS~I6NWW)j)Se4)(4{KNZZtB)==J8Q?3AbsKzp#4y1^(kwrYaY)4>D* zU6$Rpw&Oa_=a*NJ5=O3<_;_aMmmo_JCSelPH*r~!-*GVz7m+TavG7#7qh8LcKmzKH zpSN7>M}|{-G@r#ltS9%o*$x?NxkfTMEk|I6z39c=?M)@7Y&NO45?D!H%VCeq>^|E) zFwsebJ1;k%KZmVP-~)4)4*L;;*wdocH5@=wtJ=+Sa(-41XM&ksTJv7M(vy7<*y!rz ztFm72!i49%wjUHMF_yAIhn37FV`Q^MaQvri z%7iNpM$J#QkWI+H*8vwIRTt5^i4HM7Ib}jIE{A$K(G;1YOGJRghs#pHyVoB+1QtYq zlEEY+2wYQZY78;hkU_Zq@G-=X9QKF%AOPS}4pptIMgI|ut_ z;q?&eaxQ?(jO-~jM1)2e6XPTZVVD_W5x#eg#B;h1DiLNdH0ty)`~fAG+|)CfNV}IlYKA)owA+qhsO;iZv>}{3-#gL85vDys z6YsOB=!Oy$N15rCb@Z+KcXmRxOi8Mu9ykn)W>OaG0D)^(;vQ0)_i+xcUcL;&URHK| za+LL%O=zlXvo!zUIIUdj)3QtiB8JC#cUA?6HOnJMYH-(m9K68XJvrzQIl^IZCXZ_} zKy8rf;a;&V@O!#%1mhKf(3U2c*D59mw1XwJEgXa|F zoEeb0>2Xj*XFw3|-K6@h_3$K6q$VG|OpL3oKVWw2G9MoK;y(g1NJ zLv6pm?42Yk_Z*5usj*kvUV~gL&6=pBPIuQk;piL^L!u$Wt}CHEPSef~6%>#)!6@n| zpx*J#`!e?Ll>gML==yWChQ1uAdsbltC+e^M{O5_dJrLtXa#sDJeb6mOr^ls#c$jR5 zA&tiW`Z<@5Q)=p|UD4h?&gV0xE|n62jkkfsO^j|7<>;|Kpa5tnN+!{*Q%@z-!tlfx zs;h_avn(5JYn@7lvAFq}eYDGUJF$GOB%owKU3Y!Ux>UiUJ5SchTz0SEPb!NAF z8|c=+6QI@yH6YrdWPv+fBF-Yf;*88tNLgw>raEFQN>ek#Y-qN-S7vF{E*F`+^-61_ zpp9CaUU&C+KTyOM0}b}8q&k8twJ)F1`t>jWI!a|6kW5w3(rT+cBPhulAM$5fxCFz_ zF(U^ZL-KVuO)i|w7m_Rs@xxW96=7)F~C#ao^b6*x7l9 zy%HZs#CdZ(>b4B04h?$&U0E8&)PefQe0nK$EextbR^E3o5X_;yPdRilc?iczFvA$T z-`Y^!ciQuJ@Oto-<0IFpTuGz)YshS$GynPNx zpC@)EV@&D*x5a9iz>NXhELX9`{KPJa%%>zhf<>sGSGzd72r|Y=ahfKsvUe`|*~M8P z>dY}{wt^6AuMPnd#@;k&>$of)7YSTAe+UfJ2x{@^{fF#<#Dxu)92^~v!qH&!B(jnv zp7BMSY`6h_v{>8v>NCKQhhpw}1X-QhQ!i9`JjeS{z z49x{btaDC$uRRvs3h)FH2HtQUh;?-IeYXE|!N_0Al4QqVWR6pS0_EVq*)|9TO?1wV zgVN6AaNEmAK_{b$XRtNjdz`Eka$~*i3mxyPmv3su<~@lk`TjjDULiox@}lfotz1~^ zcl#NFqjhJPAwvCO?IrH@M|JFN;5Btjfr-|{Ub&^ZXqG_(k7OH?nLTrn7;n$TaX6=t z1Z%1NOnnsV+?sf4d&D@-sI4uR5%K`tk*yX?ffZAeRa((mv#k=drpQHqVzZ9(%Xx9; z4hDgU!H@22p0Skj`TBDRR%BA0YnuH|g69f%p=tfqCZS!_^<**Yw7-HXoiC+9-^-B& z3hx~xfJeL(tU0glHzbK;&pYRQR_+5Eqjqn<1nd3@ruI7-!qLe|*%<~zm&DI(>9EUg z5Wd!V9%uv7qpV3#!zOvwgV9k2H02&46tu4J z++zWugh#nYfT+dIyHjK(ICM82*SktX!wmb)s;rlf35t%6aAm;fb@HD3=)cXyfTq}2 zC`S#_s;-1Rz5V9c|8rD@Z>@Elroo`BfO4CZ9 zg6GPqh%!R#wtyXc4~1UQq$noRvI(7Xq}^Bo*;W1_m5*DtNGZyGUtGM(#MNi*fcsWH ziITIUG-!uX^4Qb?LGCiY;a&U=HrE()Xo4Yg&KsZ9>r%^YmY;t6Z^YLK&Q8zHYm0nC z`BKY%+h9M@^fre8%)`)NIRhKWi7;9&y7m_ASFLc#fOjP`;9tJ^x=ioy@-twF?d~9b z{-54o2X5cAyJe)td3T*d&S{=pURAM(ey_|XRgzKkqD4%deX~+0!@UBLZt9}y{cf8+ zwvD`@T$9m6_7DlmggG@A_4S*tayiA)2o?^s?{yK?hWt6>DGSmoyDYV>h3uk(fIw$^ zyE~Cn?J?yvO407ttG(42m@O0KCOI&z=Vo9T4%yHNzt7J&T+_!%qB87dkfMXkiQ@^FlSp_232Bv}%tV9>y^i+W%~M~ zl>n(~x6AG9G2$($&F))PkzqI%YXjAi?SV#Jp2=ifM#pC<3AGm0(ShYgojQpSYntKe zWa1vyZ8t%HV8(v=TyQZ}!qc;tc{Vr4es;RU7*w}jgsvO{x*LoJ$%r{;O}$-U&>?7uHP*Xm&ptK6S(D_ zD*SKn=eu1pa3MLalpx;PC1D5|m((2&%ypI z9`56(+5eRB%cit*`1Y{+{d87F&%20OSU6c5qjY;yf03TY&gh_$|Gq$X;tW|lu?3OZ zfhk|p^7T)?i8BDjs67;mFup5oq`k-^Vt1|+dFoHJITYbI;AXd5zW?>Flf9`wgX%?> z;~O=iY1%}#&)pn$5E$o2F;4*Uyz2#$6CFbUL~NeP0{M(+R6p0LPc~6W!r|wTZJgua;tSngACAaT|y|*%UY9?U7$y>>0$+{ zSF=Kd*@PgJ+Mg+8rrOD5`=c^C?!<_FeE%-*zy&ahC#RgmCZsseGMP_vag{HeAqUPo zcxSMbOj{qYfJasUbU=&0;LjLRL^A=7OcAWBUsqPy?&$H>Vm2)6Pd5n!Ye|EQQC>Mt z-?JmR(G;+bcok}e43o2g=;)C_$0B`56Gt(d8De5u-%&CU#>eN#M(mdXE@1Y>WRgqi za(LhK^RqZourn#^z-Xj4q7GRHB;h4Md}Jox+hraewn|H#ZgiS#C!#u~l%Y<6Tv~I+ zH_40^%SJ8xDD`BHdoSw<1u|z`2|?i9Zr4FUjI1@I?$$gUmiwEV{CQ5AKmZE~_f#=r5b-LS%; z&M2ekY)TFiIA%yuohKhi{AnE+Q;^{KWid)9cmo15*$ARit3hywoy7J&NG7D#PMLIL zKnWb<)45BCRQZpO(_5M57$8VUs12f>Dbr`7MJ zBgws$=vW5?XubX=pa99FI8t)h4Lw$BrCPwj~9Kq%Z?hgG!bpK|#_HbXG;%E@)rsekjKAA4YwYE$9ZK|3KN5p=A z^D+DnK@;Z>qC({H{pl7_iqWzn)86++b1+a5&}pLUeWu0Oh2Xs>9nrt`!}iam6GU)2 z*2(@0_Dtb2*-*U=Z0zFtoe+_X^aX`l^8VENHDADNWtyhaOxxY=s*aGOTtd1m8gR>cyG5RuLuk%R8T4UL|7>0XG3poofOCavq?c zh`AD~*wVD2wabf_uM!xhRd`>E=4kz#bAZFc9@9QiGQzcxg_~bua8BAs5v2QrpbHS4 zr34to%odS9A5 zIz7prB7-xgKHuJ-ot)-pIZ5`R#m8fHMcvuBMNL*?Ic^;G%VV6d`oSzYwXvNt~ z?mh<&pFZ4_Z%%)=EZ37nV<+dQMUNzSd24?0!7$KgTc7yivFz51^5*r+7}rygn_wfb zFXs55Jlx-vLkpAM@5;!v$TZw#^_*p`vj_$@YF~~ytDn;z`MTL++ zXsHqHb+Dg9P^r~Y4 z1~oD$0+>5BU3vpYbwCS}ii1BHW3>(vtjJEf$H(C|FcN+@1C2y!+M>ujmoq{rqGiry z8-X3~cm2VXt;%54Tf13d?zYQvI?jPkpd!=2P~M9gjc>1mE(op$-NQiGE`p0jyeVG@ zhsIZ(m@HPVj& zg{7m!r8E^UQ?crlNWa#5IK$SL!FL&qHf3mKfCirkCK>0dvCg3&Zy|S$lA&@0vJlTo zL6Ad{m2(oyCwWLot=7L7G9o+0F81E`(#&mvvWPz!D>&V#WYf~JHWhkynL*G3PtGv! z9OQ!nT%CT$s5&Q4D;Z%`FFQHA%OA$v6``;=oS3!Y zFa%giJd6ERoy7iieo(O#iGJ3{W%W3!M~S&JE~lFzA&@h=tn7`laI> zB2Ec5!gZO&xIaX22P7Hi59dcY3GB~4IKO!h2%#Zw`|<|6h)3ak&L-nT zS;Vn8!^xz!YO_O7oTH4cP_c;@Y zfbO#y1qk8nh;U5#3*xLRr1`wb^vubkc1!twzREqm`S@|qxkB2m^7RrAyqcgk6fK{Y zr44md`#wD_H#ax+_b5r>D;Ur;ItYoARzDsKJH)3LXCIB0RxK3-a>s{r|BO+mU(=|n zl#*2M2MKUKBp9!*zOHw<+b$PJ+CV4qPXd$6s~5Rf(@3ya{={qDZd6?PS!j$qlXg%8 zk7!EN`=^CGiEt9&I=D>P2Y)OHu}QnbgPQOOsM1BC9a{%nzsy$K=#>Znl?9b!+C+5J z{1fq|?6)bKr)3|5nr@i_k_TT5-r`i>GoJ zlG89+`QQEe*X8SPz6lJ16$-|5FtuNRUOT;hHNeO*6SKhAX?YRN+MND~_E-r4$ptP& z9kLDwLXHYy0~uy6BYP+p7guqLZsKgu;1r>YmShJNmZ0HrIZ4T3Fgnch@+B^?-zho;ZN&gLo8|bBav{+r60yCE z;MJq-{l9$wb`Rr~O}n&qtz>LI17s(l0RQPLHCaxEE!*Sdlo94LjYT7mA_T8eO<2LnTgc6Fj+M2@Onw#Z)4hXvfEbFbTi1hrn_Cjq20LXd=ksE}uBqBHsr zRf<@Uc7A?b9_9j_M(H8Hg7Tbc0fnqy%c~YPN_NU8NN#~^4O^N=LGPg7EG;P0t{DTS z?(b|N79PpqpX-1nhHJN}Qo5W;+Uyv61C@})w9cMX+0SGw0t>;E5|I+mW?jY)_ch?# zX#3>Ymk9=RmI#gnkoF@e&cif%{*m!jlQaOT#o?$w>-6Zw=n47+DnaQY=Zk9qnQEqO zHAu#ulqpaiK?!6n8MZ>iq*=~R&$B)u?RFV9!c8UI3N?C!WThNIteUxiEJP>Dq=dBA zf{9+vT!JKb9NK1jow4H3w>_E6S#W*Q6`n<}6LF#2+xrZfNw8*M zln$n)p+!mvRTo5SEIt)J6z5|u0d9?86`H53%RVaoQT;^;P}qL_NDB>Yr`+a!ju+iL5$`bUq_*uKCzv`$ijq93I)8&SV-9Oo(3(EnmlrQy zhqY?57=v(magoSQMEkTBEFh|^^1#F|K&q4oMRnR7)GU<_Y=-|u0yG9nzc6XxgE%n+ zBi#TH35FgTz=@=dYO{`^Qo|RNuqD>OF#b_3M_`M8q<^eE0duF}o zk|hKt)GmqjPhcpM|282A`5sO~CZHD1`9lo+cS(lCJ8*2b<8t|U=2W~)*aM~^-K0r=%yZ@ zo0Rw5mb=fN;{Y9g>#oiPP4KgVmg->Ypc?B-2VgL&Whchb=UC6Q|Li#!)-sokBxm+o zXNka|vfTx~WSH%db}?v1^au=*BJ?tyl<^p2e_IayjA9+7uIF9u27|zfy1cx$=T-0C zzgP@tveveiGbNjK0tquH7+QPjS;2s^7nfO!kl+klLug7ntaW98TCH9=J-sZ4N7~#r zxsQ6@)tjx4y@|$_)+s8O`zN8r?&qVT+3l8(@84(rWj*dm_9>9E7ER7}nXTdM(#aAH z2X0=9pvj{S#*uy4M*=cR5rXO5GhII?X9=>9Lm4X_4Ql6pkKYO6w%+cL;0lXh#xH}j zX3jG)C6n6L@gupFJ8<_xnz+7FeSyaSRj$4LVr_E+t?s~h1k_EPYnB+8z# zU50zP1NKIOV13geBOp%EU>9G2BOrhfr04A6IXqO+vb<0R>~zcB!!)1G&&+1aOdoYN zGxR8mc2#-Q)JSDr!G%Bfxe`c%Qr6koiw%uvm{L#e;_#fF!x?mz*!0-N3<$%wsN`eW zb4ADCPmPF>X+@NcYm;?P*jHx{dZvBdRne8?+3gj?F18nOItYn@NR&exg{FbE^6n5h zNupqhZi)L``FLMSGfo{K!rANAMETiJt?IYDgfpeY;>PlU$~*2g^x|o|E33sSzK^lYF@5Cea@fncAIi@^EnS=wBu?qPv(1daax{N2G?kLT9uX|Fd^a9 z0S6SIM2iozS&X$h*(sfQjPTMd$7kos4lTaS!3+Ws9A_-@yOmvsuu$toE<@@}i5{tk zttt#HdXxQy1R=9K2!twta5xKKg;GR8qJwSH*|eGZj~JD(r! zK&|tKR2ZQK!ZqutCssqg3mFM?)XF3$t$KAHyoj5#VyIH0Abr^echjc!RWFe5ligRI zflK@xmOq$Kkl-LVv<^4}!Js-0^vxM4Mpfi|a4@XM3WllP=Uh;&oSP8Cpe`ceWTwx? zu-?U}t8tG`&O_LHqETs>0FG6K*a*o{6#EB_ne1d~Ob&cTWwCgQVg(jzePz z)Vp?(2HqtbbEiPD+9E~PX(Qrlb}nkI*;yoO4$^0=t)F&4(Y1@~0x)h440OkSXsML7 zaV*xx|2)4an?sc`$T%2ZI^)QmkK=KECJqT(zE#H)bDBCHhJDcDJQ*yf9kzU?x>Z7$ ze|ORRF4>j8@AmZEKh~^B8(gy;<0{Lu_sSU-)bE0Ra7-poGML6;YkiW9YNu3hggh`B zW&+^o2;S_`mwN$yld<{TI(I@Kl$mGk5Kr|f55izx1mQs%Lq;9u{CRdi8{^m3+LuB^ zoCPS^*+T+t@;=llPfqf)_AlA1_P5a}`;4I-vLSIDL0szg>y+>+k*XEME5UCBp$wOL zPSRjj@ zjJ_54HxM#T5B1cDdC{J?B~=&0v#=4~&F@P9E-N;WXR!#^MU9(t069y_pnlG>a}D`X z-m?B$!}84g;F%+5GlIGzg(b;>zB(b&-)8n$QYA4!IOd=@O<$flzgPFg&d{+c3Wt;7 z&y{@%6a{@u$A}=ZjyZ=8LqG%w&d7BB7<=aD2$r$k)=qzry+g)!&I}MD#-)83vH{^p zy}hF>v##Am60vqWqGQT*5LDj-jfJStwSibjgq#iNAJoB~#o3dhr@UHrnQ|*AB4DS? zjYR7iojLrbW&^Plx2*(K5tuo1r{@>B8wlXt&LCYO_LZG-uZ@d_0)@jNI6glMm&RR8 z8JM4n)b%<6j5792g3Rmaf(KgI@SsXnuf17DhqXt%L+cz=oVnsP$=ype$jtiCUXGU>%*yk&Xg^402gUkuK7jXx#@BYcCojDFeIm})1?txzg;?1gf z=*~t7)aSKohXWN;_t0o^&uFcX#vn}sBWp|7#NyZkuq~%9U}RSWWcUy2xqB;F7NL5aG)Hx`(7FDk=I=A60DvSFoG z;yVyb!4m|FPvHl2LkWJNXZBW7P`NF2w#Sl|2h9d#U3K_93T0feApdDKD}+X&#LkK5 z&=sY8A(7^z1~g)qGju_UuKhOj6_-l^nDZOzyR)H zrY_5nDpt20sNP}H8YVmC%o#)vtbN2`2JLt`Q7;|n(eZP6`*MMjaPgK8lQkSyyqLt1M*^Qh650dmZ;9k%+MYl;abqX zbv%KD6{@-_!u|h`*kbLq*9QM7DLAMupq^7iX9kR1tMRa_wLvEBG8|3IaM~y@vw69? zMj#>e_)vz!Nu0P#fq3U4GR`gy<0ieFJq7YLVcM=^F-`sFK7Xq%Y_H4gk*tFwpw{-XS!V45KXPD#8^co4Euu?8 zG~bJ^ynEm;Ek7KN=$_HC=7aN#WMs~?GX?>`tq{z(zt&9~k-L|6QzRdCWNk;ivoO1T z&g0W_8ISuhB%9NiZ|7#rAX}spXF*WGfeSQXkb-~(wXvbBNC%4Szf~reS0S0v?EfAV zcvs&Wl|IDO%yDp!jlwN)8tw*z#1ZH1#u{VN9nOa)y-1!Q~ly18h2O^{NGuB@>SA<|Ts{{+SDM15u z%~q>CuAj44lgUNU3yaQf`W-0C)%8srnbMB$f>vs6_73aqOP(Eh&N>Q~AQRUg-e-RV zfIe%@;gRme(^xOcLZ_0wk5El7!;?~8ISGP=$SvDly~U;s&JJ;eoaK{YH6f55%MxMG z{1h4pbn=_EbVX<2aIAX$WTQF9^UJGb&;m9>WkwY1|WO9DG@DT$$^e>jWtR zSs5p!kzLwv8(9w{mL zAD+tX=g)~&%!gLTlZxqi6{TQ4vQ~sH=Fj(K{`9RpeES>{3F%Y)Q92L4eEB7%fWWUZ z;x5q@%vg1=T`m@Kii_mJ`EC&vQU~W#VOh-Yel(vQYSREiuo4subre*H@bU3J#vMHF zQpylqWT*tkBJe==Q3nf@O9Uo5;B_#E48p}A6!Y|?e9{Ub&xWW`%HlYC%fx62azygl z(SW~#1P(fmT)QLqpV*I9BT}zX_^Sa0L%^YnMmMMSB~YRF233jtzr$D#4`)M4Q|+0d zK`3He0^y!CACPs94zk{S5Ls_fCYSHSGDr5~oMexjW{gloGkWD5k3%oCG6?DA)1V>_ z6igdOkTM1Gp0SiQ7&739L({IPB@I6T3SxiM!|k_q!#|NBM+}J~Sy!*8b7Q>vCsk^g=-=$SOpm|{G$lyVqBdLwWZU*{1$Pi8$to4JCb%Ty*p{jhEyZgJ;F=d6aCbeOX#rXg``{P|94F0?C zf^vXg4fWE2A^>H887$db5I_v}=|nl%bpv44!e zQpkF-O29px4C4r)HSQ_y0l^)$cL!#qOZ}RHkso1Q7O>LzFOa*a9b{LP3-uWIlUNa$y~j z16QxqRdI62bDL#?H*uPO5&3lE3~B-=2@t$PblhD?928N;Ii6G^EgOg1;^Lw4w3}3d-pCoWs9zC_9#?ePQT(F}AT)9gEJe(|dQQhA<{_xX}Ro=PT zD(4rMNhGyB>I~ZLE5AVNbI=}LOa!_HXXWbVeYv=LmvtA=Yx9!;QwMckbS(+gcE=Mx zEbZMDL7ALi#ICvjX6!`pC}LED+M>+1xjzsA$P2zh@1!%a+LY_7tDK2M-wvS709zfE z1*Vtf{QNxPC?E}`K=Ph05rKrDq`WD`%$Pz@HSC^L=73sUblhM@3K&dX1b`7wnLug?g0)da{_v-z-92i^y zMw1ivJAo5zQVX0sO6wN0<}-t)ASN2#fK@-9r0&L$DVc~EwQ~4bYukwO9GTcEQe$6S zYR1g-g3^R*>bfpH5}5WnFk2jBrxT+gi{zkX$g+^hIh8|WYrENp0|KDIC;hXKne_Tc z^`%+c?qv9$3AFE$rDaS;Iv8ZwhIQvG8Oe~lP6QmVD`RSd{N3digapb&c5&fC*6Nq# zY8$eGDDP5tT1I4DD_*TtPsiwzGKWIBAB8Dqge&jQ^d)_+s0Srq>~m`R|-l z`t%8aoLWa2)WEhnFAPIERGtAC*)wy(_zE1vPQ6jSW_0rDInn{5n*gLHtJKEm{*d~7 zeJM{5-^zBgNEQ*C8 z##nTZBxFw_PkrK?R5YQK>+7p@k2o8HJ`%59=~1$5P_2xrBpZh=)uAcU1#5(9PmoK1 zJb!)7{TW3mRB45C-y|SGY`XpWHGc_$-Ftiu*^cLS7V?~Cunz}81`^yk!!3~QBIlT~ zwYJXr)6-LsG0pa00T_8-4qPkB}k*Syu%<&I930i=CRb&lA*)&h)2us-A&oW|UX! z*v;o>6Y!kBLu{6xx8|M^vb5f=1N(Y@NsqH6sAV^tf4coHEdyR1eGLk&i~ERQqeYKK z1p8wT1QY^UokEk#%j`*P*_&*!4w~|Qo+-jy2#3mw=BeoRBH%_1(!1-TI+FXYL!sOc z>u0|`mpc}2l=j#pUag#8aJv63Q1q~Mt)Ph&p;J~&Jv#(nvkOKMPLpsdcRtP@%eUKy zpcB@K5r7K)@Z*np?(@s*@`UV1M5xN(8Dxwt%!%~i&zWzj)0 zd|?ivF;GWv<_^r}^Slo(m-81&e(1LNkHdrK0LmZ=3=8KRB!Aiq674_bKwdW<19uS+;cXWM1$W#80fNlo0TuW z{JFe5K18bb=I5WvhaY~-MG7o++?U7OuUUk*8CH6`w1?;A^4+^Y%*Ph(V*S0n((0L< zRx=l32p5xSE*OU-b5dqtz=A4VTqP6J7UvR)z}2~Ak9xxWjOcPYy~wj7eK0tlN$?=z zUd5qTs0E}al5S`xJ2@;7UJNc}z(?(coiclT$oHu?J5>I1fdxlD{pPoE1ZgojMfu4r zWhE|G>M?_qL_p4rH6!D|`Oeg#&50MiVb~(tH0s;{7eSP6KfX%{3ph9~7wh5iF@{r* zD9F}3%AiK$^Eh@8s4ffwJB+FCbLrL77#p(1KFeoYV~9ftQroJM7-LD9jI=1FGzx)liD)@2!==u~m!;hsmG;2IG7QyPD-P@(5f+o_ z>U%sMeB*uD1WMt6GB@tk8T%3*IQ7L7A^xg!PYK8|w7i{^HtU6r*GBdoA zN)lw?v2|%7KuMZZ(YzZd{N<&rGO&jVn3)A{Cnv&)R9*+UQjneCQ_WpaDoaqZG62h7 zdKs6sacq^FlfX*KGuA$}$xTLmstYrGIh!Z>>ap1pGUgM+DKK>x1VrD@6T|A~-Gz{i zWPQs;5G&6E9%Xd=vp^%?9UX*qT0OrT?ilrxPC($|vnt+`;LskN;fwU+FeM0r2h+!7 ztJZorFtMx#gYKxdK1P^)tU%TsVpFu^nJFQtb{{z82y*FGfeaPQac5| z$$4vy9hAFow;3j6Eg4kxWozP`I)j|z`Q=5N*LXTfz25mXi$j3m83HR)@Z$irIp!Wz z=%1afEwEK=#~l!KYc-V!Bv@5vUJxGISAn8tBLq7Lg+PD<5ro+f+u-hx^pl5&R09{2 z^OEKF5VUIt1{=smnB+-=#DT>(V56KH*}PyND8lhH2Kh+%?d62*37KW_b%>336CT@d zYhZozF6&jYU~BGw>p(C)(3#jC3?$pQSs`9Z=!oZF?z=-E`q#z0TwI(darI7+N#ygF z$ETco&nfwI4wRR`^12`-b}zHX@-lmkSdwzJy*6tB|EPAOaLmd*RhHa2OC!)0(fX{G zizT|m@iL0nR8nL@2w9ba=fuDK^_SRHe#|o}6Dut{Hv(A+qTp3B0r7xrIoAZn$osNA z>ikL>hHv>p=3VJMh;KS$YPp{MhR8_*z4OJzb&^|2=Ih(KoSA=92$d~!wp#z&|NP(m z$M-i^i7YLugYKfc^fsqIaNsMM2;_)}7ufOC6DgYXGcQ!pjwNC|Pxp_d(HSK24AhIL zx2{gi)T=l=m-^IpCo)V#oHmqgzDGOGKmPMSm-koGa&dkh_{ITpSvW_1&NeDhG`L!8 z;)z_t@qo=@05i`Vq`gfB^qmkysKz^Lxv)^6N*9uVkEjYPthESaZ&M*1U_j9!L;vvj zTyAgg%Wr@4Qw*1bULo&&>O2qvQL|`Kjoa27bfddr7QX1*vc$zKB#blHb%(4sY{FEx1>Q{q$ zFtaDnjOsXizCehhk+s_|20-@B>B~eMRzD+9QGeqQkXWp}cZ$dkW1yU%gmG#yQ|t0R zvJUSbMt^CR&wu?~mfL+GRS+tJD?nw$e2(97;2BKD4k?ada7GzRMk&wjtm;_c%+uc2 zj$zc@Ac&L|D7Ao!J!=9t=)lPU<_sw{MIV6-aaCw^`JIgn&1$sLsx&$~D_7^^tfRoM z22=(q(cEq)t3nWE?9FlDbOkFGT@aPBuF?k*9u{*CS&vW&F(ODo6^aq0xpzu%0<>hG zVG`HgcI%O|%6NKC2$qh5cB_2*dY3um6gy2wW2~JK#2Z1AOp@bd(B02Lw?gGPo2usN zt*>G=I3n&qoZNUE$TaWiY-V_vK~(CICE_m^r#ilK<=F&eAZz={=D2rk3L>kLz@Ps3 z=Q4j=l;K&geERtQgceoyJNpx-*pNR}1kW91KMdP3?o==;X!pzzCVfvb_KBKKt+dMKZQcP4qSP z#RW;p<3x(%?EEvEA$YI>^*bDH#7L@%wH3`>$GZ0{p3&!XP}b1ec?X;cnJgB*`yh#9 ze?Z$lPe8?){^?JDNo(iDbW(o&;Zxox!DW!TI*MB$KnKI!hJGl039fv%ZY1}eB4mO; z>YyNM#7U*NAf@ft6OI__7n>EHR%P5*(13mI=KI;BWT*x&4M&+LA?U`l`TFH9;x_-` z-~WgFyfT9X%Dn}pYi)fAaj+X(3-t_dgG4dX-i8_;f^Mz(bK<_^Y%(qTjka$|Lmj)z zo(V90FXRzoU=KLw?|UzJaeko#dEb*}j&u8u|KC4_u`lpD>$PJK*o!1pP-4>4co~CU ze3d`|M?;VTJ(JM!8=h6E$3AS=yPAwqv`i9L)%=`!r3wMYQYn+f@$)P`(NHsX%R88g z>D+iPU*6IRxZaenpZ}WjHl>+zOdYhDF^9*FHk)l(MS`{$u>eFhf)MIi6w;`$kW+lP z{k3$HT_4NkyH9ag!|5ajg@IyJT+Gtxmva+~L@;k^^82#jkdYVWvy%a=Y-aWPc2~>V zHZ34m*B@bjf%g%lFytL@&XV&ML3I(}WYl{yky<>Ka+qIk(9+G zC#)e5paY=Rj5{D;VZdV;iqZj10;mFr4YQik+@{PCK0<`4B&Xx4HwQ(NuS?9cqrs_j?wQp!d#&8w^V0pk7^j@AZ6JM}i+5y!CRi1r*-bA#*msqs)#A z#_14~a;ryY!^}TdTT}ZRjH+R75*A7~28UW}xiQjOHcO+tF5gOPbIK~HfN@4EEp+|r zprXHUmW=fkTs{a1iP@LuS=QxT z_Nn&hGsfezfpS*uI?OL?jga&F{1CAoX9VJ7AV{)oq_Z&n8Qv;lvU=H+=|ycf(t0;R&~JyxZ-n?EC$6J23jbGo`JN^q?-M85;IJ16c$%#H-XT8wr91 z8ta#J9Os80f6nv!9?bHc&Yo>2pRJ8bf{*~u0G4h)Gd4I=j_Ymnl0fWYdRf~@Ar9fk z)RsVBMpdGJq>p?0rl^S9WW$*7WNNyf4Th<1zRyj)&h#9lyh{Ds(v zUlGY```sgUb*!p&hbpKhS>Z4R1e8qO5w?Zepo9vMjAKIjMAS8EcDH#BTH{_xdhlU5 zA4x=sm=T-JCd*iLL?Ks$>y4x3?9Woh>kmyrG>oW1(gN)>@b+Y!b$|e}e}0~wK;*Pm zKG&Xgrsp+C@3zbF%s6z8(0q(-_RQJU+Q+8E?j%sJQ}#H?!WTr3dQd*xY|)M@N=yM31Dy??yVdfHEe=z@l5O(l`-eDAgqEfUbUPuAMATwGu0 zY;v}(NO7-Y4{B@k_LOYa`n~(kUSyVq0HIk+7QcS`QqC{NL7$+c&VzEx>kFGW2ocgucM~4`xWLA-#bijJamKY3?2FPr+c`L)o zMc}g0`E?@ez$cjn-7JF$1>VUaA-;zpC8)|wc|gv+VXHWQo#DsQOKiPr1X zGUJhDPutX|Wi&Nvl|^uTSg0cByQfyUdYJ_})0^-47;qZ(2FQS@9X1k@ne%>Pxh7M@ zLkNR^kurv?DbIc=X@yf;6_nHq-^n_u6DoD+(PnTMa}&ONHp5l}rYd788^YD#JY;vA zsw}*69!Mm2QbrJPaHKU0sD1a453-iN!@u_omp2!gY2W}bipH9fa1GgUI?bh5qi?Mb zrKRo)Y3Nmw(AO`Y%f;1A0zRmd^Zz<~%;%^%a;S!)%-572sXVHIPIDI+F;1!++GR4O zwV=O$685sS2G0rTTFuI|UY*FJ_KHEW4uqD@_PgwNWwC>0w>e`(jb2`#Q|rZPd7*}A zT(|bwR)y9X2s$w?q0xI_@du*NfS$9#?rJvB4K%OwXT_aB!W`lYKFAreDSZKu_-pwvxrhz0hwfqmg|tle%dsh# zs)&KJ>t~cgAWq}SIA>{fTx31$sprwwWo>bwo@P(U=6qj*Oj;bszKE&)Dp(|u@yyUB z>q{+9Fs-Zy!bX-Oauc;Z2E9ons9i>*UfR%PgNNp^?C=3d+n(CiGCfbA?<}5X*xO@! zkN93p}3y_8iX70!VBYuaCR;8gP}pFz8}azG6%jIrL9Gi`)n{J-T4 zYAvQa!M>++WH1QQtd>vf!oO!T1qKkPq2BnGpi#oM&b@_*xJztvT00Fj>Q&7SNtZ-c zAS^L+&cbJbyds4|*35(G4T35`mj#h*5u}8T@ZSaOI9TkE8vXLHjxwq{hJ)sgN_vhv zU0H+j{4`H_B1vaM5LSh$l4N4#J0IGH(-DU2rM0#dLN!EZyK9tD_%_XQ`|WeyubUEL z9Wn*!pol2Rd`*XgfVkRZ|L*Z+UD_cAP0y1hzGc?+p637^GVJ+@dJk!TJ60I*HATb=BC3|EnAuaV8Okk_p z3q=OfuX7n#Fp!c9hA62{>$yBUL%*W1c%&#+$y9qa-?V8p%I)p9e^c24Z#f%CG@$FW zo>lTq(QcUDepyr{E+Q>){G5+ziyYVl~O_#7*E_+x>n}9|!;C`6(SKqH~u$ zkuui4-8x{>kJDE#`xQ8X0I}>DN6~rCjdIMI^j&OUL5_G&mik9@U&-8;$dgJ{r5;JDN^kD%$wUrEL+ z+hvdhtY#d9Jzviu-VoGB{@NT3;{dviIxS8hxdWl9zxys(GE$r_irGtk zllY8GxRLfTXI3D@*gKb))b`f1c^;Xn$$9R?cyeAkM$CrLwh!q`?byBGq&OZr6TMa^ zNeAx05pj);YL*NX5{L-c>=U5t^;P+jR5rx1Q(o2ZgWeOBLd>c>6K7IZ=FB1~D&;WP z$i;p?9IF!%RR6fh-*X|z3cdyA%5w;kNOgn$sJv3eOk!0fbGzmZXszR{w0?nk6O5_< zI#)9KRazz4SnuKtisP&mXUDEVC87gDm2_jO>NFWIMA7(4+e*AP3axG*+5asuAe*{~CYI|G*QSF9RBfn_`@nVqwKt7D~G z78!C;oK z7g8~MxUcovOwg+m)!s$>l)9nJB=408lQOf{%-iT<>?5c?&r>%PBzWF;?>?LY1*L;p zTNmINzM>Sts4yK_SU9sT)^X6XYEIX=&_)URHkbxlzz8$2Id}bjx%qIDbB>Ir1cu|msQ>1- ze;fP3xz7-0&jtVhAOJ~3K~$;GMRBo|^Q)WM-qda<5D?8U@XCX8WJDSfr@rJ9KA^P>unO{s5b%WJF>Y3R)$LWnm0B{(v)uprw@e?b~gTk>$E_c+!rHfu5|i z?xB8m&#Tz}U!cwSUQ=&Z6%K6TpqrC4JoG88$=HB+m~Ncr(h6%`0U$vs%1}VBN&%d2dY0=H zD~8U2LaazgPn0rgY$?;pxIElH#94m(^>e1tK_o2lsNXAt9{rI}Pht zNSA;yQ5Wy`>2j`r(ti$| zg=NTI8Q2y?rk0)<72gL&OQ!kunzdsX8M<6j_0N#YDhU)!hb+~i|6nZiX->A5E9uGQ z96uZeFJEfJ)FR|6yK z$S@IXHcK`p`;+NgKzbX_B%~=^nlS!Xc?OO|P)H*|fFR%&fXR43#r4)|p-51xs?0RZWuzgts#&N#>YhnJLu99k>`ClOme?+j_xHI20&vW0K{@0@ zaANIcJU*8$hr4A>+`Xd`5_}v|QL2=(z><@%YH1V;d!>Dva^{{v31=_MVnlIZX?7fM z1L;lJ0-8US)9guaSBHRQWa>#N@PG#}A~pM(Y@98TZ3!M}060e`@cEpeb%b#q?o#H2 zFc3;{#=Mi@$2&rU++6_mOpUVpr(kd4ZZ)=2Alt?yT4j06+ybbi&5>8 zI3Y<|e_bK8Wc&^US;E&DjN-_l0Z?;+*yQ{&$h>X?Hb?8Oq|($z$z6!GtwuR(_fzr` z#DptBz>dyE6k4~Xw7TW;Vp87biv-_FXg&Ms2OhqCEAO=bg)q_xG$vAixce4|NofpO z1-XcZeT^Jt)U7h?*SdJoE3OBX%&hNg5r$Zo)wWT7{=2^`-A?}m1rN(PLe}L~9L3A) zOPNfra#%oHc;k4SQvwHdCo^LD%QK7lerfyBf$$%>iw~dUV z)(sIiNTs>rJfRzvFyf-v^ksDC^;REGn$B7Z)fs6Y^vZ{KA5yxAky%yfSI_O2FZbo+ zr=QE{d=iGY$y4gh;Ngh<&|TMdcz<6elSxnk2Y#rX=rogk{kAFXMmMmjGJ=aDYW8Qd zT~vpYmO8zuB}Un^optNjU+nF(_BgfOvabY65vogl0Gp?Cpl0lb$1rAr_4fpKOw~fb ztVW2TYV?tllqqWT%jt$mElA@00&$uHA@tQU*h}CeGJd$f%>kaAomKf-HNf%nE2FCRItnbk&6GJo5E!1p(;1<@3G#QbZ9F(ywxbW& z&$6C@XOEq<#t^Cs{M%}myW4L;vp5nLuw6vgT1ETGAk+h86v+rqt&w5)?++2$u#RJ> zmGcNSI1yAC6q3GRcru<0)z#%y42sOn^h?2)TbTVMN(6Nh44tM$DrcnaQ$W{jB+#I{ z(P{T`E}%-?PL&dNz&Wr3*tF3s<59oNqUu@uemOuW%kAB58J=~@`olXkoU&hOjosuN zTkE%lY}tUPR%y#76F}$zCzwRLz!0NBN;QmFj129J1lPvVBC(e6anAbV81rN2)FMjq zcu=+fow>U&e=S2y>?19YWf=9ccIW`2u07^q1n;{CGc3jlhy{N%CzKEpRD1HwGpNIK zBmn{l!5{0LY)#8B#Ztszd7z4tlvLoAxo;z0MA2w+Z ztYwTq!&(%Z<;Nd>I>~f*%WA()fCV*EHc=-Q(Bf@%lf{UtN|b~|=i=acmnJf~LwRy7-}h2VmKl_bO81&0{s0ta@x0ga2oA)8udfZ3Qv zrxkn020&8z8R%cST}YLWM+p>PXS1|8&)2v~6+weW!1t6z1hhoS7B92d8H7wqfY!-< zM$Y3{oei7-K{CWn;Cy%YrL@|${aMg0@KX*-i9-iT0&2XDR%XfYGZ1Da7v+!3i;J>t zLbM0v`Ti+r9bSz&92e7Jc}w?^g!Y)gNss`&fMod|S-W$=Uiq6l4s}K#mk{3F-X_q7 zrt2D#piV}^+-azWvG)QKNUh*ZAnQFKmG&mdmw-k`M!FVir_0^f+mPh#ox5z$+Z@!p zkDsEz)FOzIHmXK0=Jef7S-q`ta8v(1?8}y%At48md8;zW8M{MgSpMec9}{7lCCxyM zFUDnjIAkD0gMl)2?fEINhU})>9hCEn>(rQ#U|Nx&?L<}1yktG?4^J=U!zYg1ta*9> zgVd8aSnfw}vz8{1I>=ZrH|KA(aA|GJ?rob^5kwNqZ!eAQY!UXQPREMTJR7EECmBO( zwhVXe)sD7x*x7ZSJr+F2#F%@}`+D`X0 zh$9ePokhTrg>Rv*mzJ|bS%7LKa~YaZqe_O%<&?2-^qd}oB$l!F7kps-8yKTq>18o1 zyJJ;PlL=w!Pp__PU0nNLYTLC>R~9JiaTfOai3h_3O)<()2qYo3>DhA(w4lYqAW4E3 z?S-Flv8)5G3_1jjTQ*BPf;%4Ywa zELY10f(AYN*24P8{L%-`(H`k_H%r@uv{PqC7t?k)jBzU4L$WgO(rOu*jF|IKrZRNM z8A9se7=oems4u-gFgKy3)p5QsRETkCmtQ}BE}wqsQw5h^U3cWU}V6 zJU*)rPEKpmh*9MbaXSPPGzv^AgJ#5mpYDUw9tAsVKA84TVobGOE_;=&nD3!n7xtUuFyLzTG><_C4`1psCoy zWG~sa?9zEn`|+}Y-f>^vlzHUfNCME`6iX@voAI7@$6EAfjg+2~dEfBK4|`q}CWfm}+n~ z@Zzv554Xr^?FhZp%e<`%rlo?QLu7Xk<@|D(%OzS79ePN0iPmwS=v219TGPjuskXy2 zFhQ=_lA-O2#+HU)K@C@(``9Rh$tWTxF70YrN2tnz5vdSRT86pIo@;xYI*NK9BYcn% zG{P~MOh&nIqR8s(j-}fMc_O1#crI{$X^h}J$ zQCr>1yo}GMQEL-8x>z7X!Ikb72#|nHhLrV5FYz#Adj*Dz)jDlC>TfhD1Y?3mdyp}} zry1@Hyo>G(Jv}_;85yS4>pXJ2W?p1USHGM4f{>@tC-cv#{hge>y=Is>UCso77BsGX zPq4>HdOy#qbb%K_pv7oyL4e4>z6j1_uMmtQ<@}u*Kh`wlK;Jk9bTcF_K`Yqz>iW98 zJip}JID6emx7Ct-gU?bl>w0tv{5wcCJq{ohIL ztWo-DdtIl+7R$RrqK~)Va-JH8Dy@8Z`Jvo>Lns|4L;CW|FL4If*VjQfoR{5cNK>N& zvOVT($exs=AcPe<bVlV9ZMf^xeGUqCIHVK<^+f389I8WvYHgEjNpK`>TBOyDB@y;tpuc>6 z%o#%Pa^CvweiR&Qn^`MNb7VZ_HEqj+(kKl=LImimOfySIllhP{pf}P%&y+wmqZsL!&b=ZZ@+!b=dveArGhoj5@ZEB3^hkyE&>A@7XU2WnRz7@ zClRZJLGwtUsm_;~6zsISaNJf-)tkGJnGUtZamklxgG{?%)_M7%S2GImDm!5QFuOF6tqnxK! zAX-AcF#cDR#9$|?2LVv2(%;TFT8l<2b+O@Ol)C(KKFbC&YG8k27#66}vSe!7>WQ_U zLf5_Dr5vUASZ(PLy?|eT{Zeipp3A2XKa}A}3(m3hdhL9!x|bS_NK3|;iDGMY)+&c9 zqFt@^wKhVY0vjTk$xw%5)1-`~w4t4H_xKn{N?Adj81w~(bs^Q=txsD-P06d>2_X_$ ziISSKM8rj+@Kqze{p>k)QJ16Ls=EJz8uegsAEU^KGX#N|MSxCIt6g4Rsy=@Q6sdn7 z%YQg7Z>!fB)zneJrPiMlKpu2h$NgglE!r*efd%su^}uNkI2^^9Yor-l%**Q$UL)l99GW<&gx-ApR;w zf_RyXISg(Z8KVS8wF{&=YncMWCX)j{BTdpRpopkbgB2(||AbhD0rmSGia3ZfW$e4FY@ zk6FXLG1e(Z)d5^ud1dB)#@S0S(XQp3>D5&N;IqCifjT#U#)H62u#KC+0f17SHJlinBpN~81$)sX<%`|TUa?OO74|HBh8EJjIwOVTxN*cktNnrzGoJa5DtyKF=RjxXY{SoF{?2 zd(SaLW2ibNEA98{q{_5ZQ`Us;?UK<-tjNDZ29~Q`4b*q__lIN1>T~ua18GveXxE=7 zKktmKWz&^RSI>VVB{0GNM%PEPk|q7V64~V9GVPeL`2xn8LI;gy6DMP(C9T{nxmi09 z$V2(~=~LkI`}_OcYwrME#0fysWuw+h*>@#YvxTy4zKb178D%uiIj$)2Hjb1XF?>s~ zq?ByvmX<+ltxPHN7JPUd@8El_X-g&!jZEONiV7^>3XLV*Yy&PLU&iB$kSP7To9oN0o3-8PnlP|yz9{p>sR6<#6_M)#-roE1AFKEL9i?}b}|B#Kda7Qp@r%?{AZW;HhRH0r>Ft~o#u=zpm zAc(zzB+rp=jZsz~77obh{kJDG=bL%>QNLS$_~FMmW}6_&!f0Hlr?E0OwHyWVmeCw* z6b7o&UT4-lBcN@;b0 zN!H0{O=XZzPdOwmmNgUcGyDt(2T!h-F%#T67&c?8&s5vScAIsQA&Zi=X_W3Ekv_D- zp^?QoIKD3}b3TjO7e=td@cI_$P7o(RkTs6RMzd=7vigUR%b*nA(P68tiVRw}w3^%0 z(+Fa?K#XAJV^nCpql*9{)KR9P&t7ZW_Efa2ZfcFa%a-0h=CL(D!F)1GM$cJLLh<~_ zWio_{Y7Asl!K!IWzK|9C9dHy^VvKGW_qCbEIuRtB!U zry@rpcTSf>q;sy0%!q-$n{6y_14HVbTRRuK45}ashw0swpg2hFrhof4KbJ2Lk0E&( z3w^~P5)l#As~@+TsY`;}1VbFWnmea3xw^_(RLgX(1#3uhdvn!a=W%EP9GRYVmS(sc zf}?JKl)4`w7e-njCF^1&6nP;stxi>OR2#LX*H_o&%PrWns!G29_^Ix#vI$Zl4UJ{( zZ)W(wpU$Y3Ue1bBSE~<^FYUY)y_1z+UR|c75F+Gy9ikdI6UxAt39hm2k;r6rP#Sf5 z&mH3N#d*%Gee+HNASI}a!6awYJ6i+6hkIAsxJZCc%W78H(*hMJBd8zKStOa`10*(dQN_S1UXOC^fzte@L%6Kt>rN>biaw~wU8{r8>h)ZN`( z-XDQeIlx{hL-zW+GQGSGA7C^Yoe)L(u{v5h`CO=`vxY}y`YStvy99Oc2j4<4hr=|w zsDeI7iu5C#BYVfLJ>1_X_~U$uyA8T}`3a0|%OF3G!%^kM)uAN^0&B?S;jqq`fw;WL z+O_RQ)_73&z-Z_YdDYWwUaGJ0A$$N^&ve0 z9UjARzIQ*@+dmDdT5#b#1!)2k*O;$@8nEM@MbJ)zhy7D_)N%Lm$4_aGMA(E~Zui8+ zjC${jd4ePgxY;(Gyu;q;_eJi1P^FBj*9EW!UL~=UP`Fn#Jm`{Ko=?hnbXMB0E_2IZ zN>Jl-;3e&0f$A7~oB)%H)H3F?(%2haxhdz@ACiry7VlzjYDRxpFUrOQzD6f-`(Vh> zGZwqj*fj&8s5y&}5Ju>^r_~`fja3#&*0kBy9?{LVLS)#`U`>!mw^^r5Ib6MgDO_Ns zI`5j)tEf$e4?nKm~7o#@0L-H%S2@k$mUo_F3M0+zh2L4jr;8-nTqbzZl}U% z;}J;A5_9B+VbrO2veS^j%DxOn=P`VNcV(;OC^21^i<3O$CjXm(VmM?+fmj*f0im0- zMA2kTWi=pZgo|#!LfEN+wptr!WZqT39g2zwuY;aIoWkk5(n>~>!)_e zIdd?X&jI26_|s2;m@%cHG<38%wZXttE<;`FsACRUkO%|S7RMnmuz}R2r zpMENT`OCjV`t!Fx|6KO#w~VsJZ{Wzz&o7dVf=6YE&barINqTot83^0(6#)}+qJRv< zd)7C8n;=OiOl^DH#!_#P8LrBM16l=)wbrr4BF@5|agt`*_Z$7Pg@Tk)=C9AEAas{t zkul)pI27{;I8R1tO*lnI4B}#peI-H(tbh5-U&{2-xz@uiV0S0FW&CjxCv_o25j;W-Jo11{b}J^))p?#^mQ}O`a&XiNUzqK_Q&QePQBmK3D7GC zvqr)PG8wfx2o9aof({^q{o~hf$u2q1v(dDSb?I51l~YpecgmSoP&_ASUpd4{3J#{zX`pGpQ!~~|eq(oNyhLLp!@zL2 z%!}C9$((_gb>UQp{GLEmx%cMgeFAhu#FSv5Nc1aAiOo4WBY` zPJK%7B-v7G){^Qog9e(FqOCLN`8LC_e*Jb^e*W=?(kh#rw;h{q0>87o+*GQ<{8AQX(047kbmP+}|Ww)NqkMlW<55=Mg6x479`65#Fty zNvoam`0Y0Spc&=B+JR!!^^4@Qeb^?;^#}RE#3vhWnwN)n5c+AQS?6NUUru9EJB@OG zcbCJSzQR+>nEF(wSs`144D@QMhkz(JL@h^Z+qn>#fnLW}s&`_flFp2p-d1a(30IS9 z3^uiQG_}s{CeR}|QM(|61$4g8oAsmYs}#Lj6~ppc4Y42%#sYpe~;s~ z_zaa9;i?%(F|tL6tz+cmw!A(+C6c5l#WBhbL6|aNk*I@7z=V*9Z}5&j-#RNSOh%Ky zb0T%dRQ4cKGVxAED`0X-IZCQ}GAFR2dX@JVP$-9JCnPlVa980~4Akexr$AfCf-)G! zh4JwR3@s~;fyT7OsMcu_0j6R3>tBD#_d-1|UhU6tASBv0v(04`C~+!+4!zH) zox|M#03ZNKL_t&xv;Q`lR+(cL*fc!CQ6GQ&F?*f*-Ub4I;8*f{P_Mvy+8n{G+p3-h zvNq;aKx5r8e;GUNP2R6K8#m=5wTx1_*&mi^$aR_}nBD4did*b^r9>PBidF_$r z&}F)UAps@h#}RQfoXl+gQnveT3?K9Mg4<2`^7*eRPpY|d zhLfp4NM>rDL@$91yWp-P>v|@4-DkLWlk-UeB7tg+wq-|dgj z5ct?9=IK;Js8^7Q3LY6cBx zhVO(M;~nO+rzB3wxGDc=ds~wDt@qEF$^AN1^oqULZs{DjPyV~LgtFp)xIeRpho~J2 z#z#?SOrfz7wKtnG8l9E(Vx6-Gp_8n5{+o9nf?6=g{KQIPd0<1U1hsV(Y(N4ffA-40 z2!ter3^ZhhQmgWv9{6hSsO(h|s`Z`EU!saBSh2?7eRfm;1`$!~XLI~cr&|^H-hcR* z0AA9@rVARJ3uP}eHV*68^84TY*W5vgEfS!hLW?9aC**{UK|Z{gjPtvj^`fk{>^xa) zq`+;?NbXU$mv<95UY<{rz)46r3wvb9kv*_hbZGcwJQ{xc^<^HhDhY4M=mH@V7)_2e zM!VB2{nnv0pBGxeOe8XiN~EnTY?o1&7?I%7#r&=8^;?Ucj6Tiy*;N*IZOU5 zN?;-_7cZQCb)EtW1Um;sO9g?47)R{Jm)9J&y*lJpTg)k1mDK#H+O@R5KtRAkY+Hql9en?+2B(%OYD9Vw`NlDxCaeXHjMxYWbCtKX4Pi$th$QA8x)4|1R-6Zp<6x`0uwhOQ)}oZ%7?pJ4dY26;F}YagMG6OeTV zJ8`~{VUEWzm91Y5ybk3|7OVER*`>vYVF>r4gACJ5&%d=)1IP?_3dcz#wl`r4E z1%h+F3<_b8oEL$i3`Gq%&atnJvW`3Tv-BjK6W{4_`{yvNQ-gMaA94<5?DkzI0tNcR zAAVmBM*~_Yk{yEXBx+w*8B{^4GbjMzoES8j31h2NC5Y1w$H*dFs&zxHo*y1!q>!Mn zq0|x=OAPHnoRW1_5{qYRHp-_@Kjoi6uJ(^*kOjy2E)9v%j`o@|hv3O)ame=H9raFv zxYU6KQ<2m)scfCrNTmem5#4m?9m9iz0}=F>GKl-(FMsmSr(_^|t`A-yzg`C2;YBWnhS>I*O!;+cp+*>; zozI>1yUKME23iEJgJ9D=#mw`5>yF zpm4l5?!m&SK^Xsz} zs6fKKcdxvA|2}qzJ)(sJA(}lt2Q9FlxG^|%)GT!@K$M<4;v6O?hO_z@2(RA*xm2+X zBrCcFHdQe5eD_#p_YW~@0tnCQqKm==2L88=ll?NZoSTf~>ESlU$wh<>1&$)4Nq|MW z&38?4qAb+ui2NYCxbRWGlHse5%gptGo+j^s+|vKkL zjBOl@=IRI#OiIj!i7 z03_pH7YVHGi`qEn;d|UOe|MLhj~ZBWbenoNwB3#B`eMJcD*|l}#XSMzKR!Lh$m+)@ z7G(Ck^MRBoU^BeMGect3qphjEu@rNhuk54lo^pwK6k1Tz7F>BeY=mrG5+vJpu9QuJIz*FxlYoXp_P+%X&WU~D@WVtm zL}Y&;_CnaPwA%5Xyr=0UuJ-r?Hp%h(VwT|7aUD(?uA^y!D6gGhb-`X$*e zyO#(N@^xwlcE%8K*|qy`-@;*$=n=MpaJhTXWTjU32s7RqKx8hiOrSkP-dF;%f^bV* z1%TRkY2tJ%LNmR*tf*S%#L)SuD6@A*7&WrK*6wivYI5Q3LWQ-=3zYDF*lcIz`u&HT zv&UJT+u}ZO;*d*aV#u#Gl1yxOtDuur!W-eRmc95|`=;zYI3b=PRl1X1=dPal_93!` zRl|QYZk4CUyQnAGur{VT!dMn)SdOySZomAX)?@ID56PT!4&V^SVY4Gd&^(5iN4bhY zQx_-jF@I%XhNaQMq_5;2o9$<)Cv`d|&taZ+V(9OmUP1yn8+6M`k9}(Xq&_#L+d?9# z>Rp^4C9W6)29z_)yl`2@FqdT^q74*OXLWL+REL8z%7xYnq(&CUG08;>Bna+-fXr*_pv=eY@MyNDEvb>2 z){KgG(rfPGn|@PBm?B@#SpbiR( z4nRkwNU5!MdVtUkSxTE9J%NdO?<#ZZ8O3Dz0+_}zPFT4o7EvZnX|O$v;nJ4I9?hO# zB67rt33fcE7Dh^jZk`P9cy!qNf$j5#Ay`s8%F^-GMw@(hCtvq6g(_n6UVjwQ ztMRmVH`MYrw9A6Rt$E!$Y!L@bY)mfWhVnpnwt==*xBqMXOTb&`NuCF+HyV zmaOM{FT65DE$jyMWXJ_$f==({u5zD#-*+f^$*T56KxnJT#ny4wen+yT#;gU?xfYOF zYbe6Y+)yRb)~&Pv3PyA#SVK-t_TL*0%1*|~(D%C);H!4C=x&(&y+oB-q+zfbxz%}^fUKFfOkyRFX7?z{hYt7i|4NkTWytp zw$A$%)Y*R2t^g-q3oSbi>Q?vWz}X`2AgJ4G@zgDmY*|aSZ?0uv0gqtG{SBczGWV-! zdO%6=b-Wv-%Ki%0E-Y3@pOPKlG3uEvyDo1!G1~3iqpQoy5RglEP%=xksihrP zqyBk#dJ2C}umG#Ff6Ap-H={Dc6+-4+Ez4qaC@+f^Zjk{MAntydkuN2eNyd_LmT61l zaoW$a5!$h|e$Af4knJcL0ME2^trp1uk6Rhp5D&2qnHhT7YV51{4T#F+Y^R=M;lWU9 zJB;8CJA1t@v!{n-;G=OrFtTHhsz^M@A=dNA@tQO!(?G(L*^27*Uam0Xd$nB;e6HOt z5#MH?%Pw=3A;e+j|2HbBt<)C5?XVgctzR)%!*R_n+O;(c9Lh1v5E&zZfk@N8b5R5& zM$9_2p3ihdPCE`H8S*aeC7dzH)um-v#*<-reKV)Nwu*4}4g=#*Cw#q@!`q4EpFsPN!zNwg1-I3LF?XhQKeMUrZAexlq=nqh6g%P*7&g-bz378W7V! zoE7G4_s??q8HoM}r^Ix^U7$RB=d3%g+ifonf!bbpC%s-d8wt#Ks~XJEBE94;ygOwz6X@aFbc|sf=sP~L`{~9@D~Jq5CbG24v^7<#IOX; zLE4&-4fTEZjMHW=N`hf1QuHiNwes))7TMoG&tCX`=SZEu+83Fa+C6#IDkQ|< z;xf1^)(GOX;l$>fuWrKtWs1q5SMDDk!mR+2E*JC~v<=tEhJxDga6;e#_G*i#slp<%dhH!;@VzTTF}kYI~~YGlf1KfWN(q?{FU z*|N4x6D%7J62L$N*v7Oozs^t2zlw}$``)ej0l z2OkIm1&t+OclYgUl1zKrI#b3Hj8m6<&3ihR*4ugUAC$R~+U=+0t=}K!Ztb_L@_fH4 z!}If$F$5~l4>T4Kh$*wyE)9R!aGA8yfd6)JK~j7X6vQ3r_J=8%;af@m=m*$)L5rMx z{`{OIkn?Z1t86wWEr6Jg>db@hca2Tvv?UdgN#_HBHun{xEZL&_;=i{$ zfkV($Ne%x<#gl*X_v?$RvZap7z<~=~e1<}G%7*k(3&FnJB*O8x>Ci&t#QFTxxcl5JC|nu2v}P@W;b|*KL?7U>3{RUr{D_5v1g$hm&zc z4HzvKibJW!27J!I4Fc&P;q|)YRO{dxhm-O3`N|BSO~wqQq(x7F0M4pTjCM|96~TLXX824hBLHz?O(7j^1$<)~zg z2$UqDt%-fxfOy+AI|d1RUWQrJ?4KDC&e~bDrZ^Aw3(_P|`;K%di=@W27Chl8n1#^G zpd-#lw#V_iGJ=-pITVVVsZr03WNMK`Eyu{KI)}|BIIo*MCk|Bya5%$N4NmQw^r(Qv zcX*GWLF)B_1hW)4ZCPfzHmq44KP%gCSNvh9ypMasxcVJI#I2rnq_-uge-`Dl+0#>u zqySVmM(ya>C5v#ExcZb6WQ(Hu#ao%b5K^LTUfXEZ=%GsqGKm?zEpwkA9v{o|<8w%2 z);?&CZV_kM*ws@#+1jW}JHs3SGO3Km`o@4NZz0#x35iw&RnA?IjkJc9QZCz3M)V~9%L>3b`kKoj9jutQM~Ty1U0rmDeS-dxuf!##&>0MN4T zQ+Nf9@^E*TED-D}OXomFXXCKeAw|xM^}4#g3i6P022M|AflR|m@Lh2-cn2AyTiY15 zVI^?YX7*yl_NF>#?XCt{nO)$_kiDHut1uMNth84;54w2-#&4P70By5hN~2H-c9v?V zEZ+Wcw(b{1%~|{I0Cbgb2nc7$q>P_HLNF_6k)#NqgGQb@b#}*UfBid-M%mVTc-Gi$ zf;O*j<%vQcNIp(l;={ln;uGwcz~}8`L)c?MTzEfkxIZrm9{mhI;a-Eqai+qf>erx7 z0Px*bI)C2F8eUu~=Yp&|;d`;|_Q&~Avf&Ir{P3xaFQ$2RX9;rYz7ueBj&+^b=Nc?i zA zO3iwY=@+K@Byhm+wiymF?SE0}_Xw@ir#5E3dovN4+EeQP>MVM!8;$bgPd}E&r&*ZO zB0o{Smt)}f$2zCHecY8j`3ehhQd@GdGWxSyTWqNLIk21p$L6qFpb)I0v)&Bh!{KrW z&xYNy(vKVk#CBS;@|-WTa{caoIUW~TSdJeFV>n>=W#=!IaSt->srSyybaxd;EAlxu zYrm+2$)F?lg~7es#Au0N)#6-8&aWn|jRYu+U)scIQL81Uy^mPNiQp4aiGG|fWP%=o zgQ29b)Ur1km51AJ35Ylxe=*9pce4EwAs7aVp+}w+fIt^04GIcCmsM@9Rj9A|*~Qzu z)(Hh}8JeU%sV+M%yOx$v^{r+ZUAjnk8-9Ki=g8oDKU@m6LlF|Z9Q zVxV*`=xa23v zp3>3A*ji4Z*-x#~enHmoF34|l(m|;h4kKe#2L<)ZI((%yrub*lXRlmFFQY!Q{q_6q zhUXiPCS^LkDlhY=oKfWnMv~>{NCbAIPnYXOnRF)!RKEw9vhiN#*AHrTwnJ#E4uzxQ z@Hl?_8Xw6ExXXfRr5~9r!=>HqX*P>ZahGLOF`{kdx|8G<&MuP-D z%27G@5rV0M%G{}ZFEj(OvyatY0|CK0N9j+k-<~)%hdRf@pWM^+Is#Ze-|w=GY$4|j zeNbLXnJq|;nl+N?vD|$480W5z%#p@P27%~OdCD1dCj8zWU*aU>Wp8Ae4w&E#0$Ymn zuLYR?OQ$s4G3ld?gGM=HMrq?x$iVrHjrxA=T4DvftN8$w@YqOyv??p92(;9-k;K_5 z`{(`(JdkQz_(359Z?dNp@E~Z;2w8T%z&S^yf%qu{3$i%V`@4sHKD*`2;$oanui}Fw z6Xm!{@ZNyZo}EQJO>N%KJ0o-e7HgA02XXL%lgq1{^5x6dAS~>72Oooa?P=Wl*d$y6 zR2`${*X6R0WDR+T?$I=<{10Mci?JvL=T##YM4 zu|Lf#2P1=&)Mb58`X_~yb+cV2hA1SVsDstH%MOi*NhDv5q7Y9uQ+s})r!tWm)tlJ$ zR{r>x&*hA8izrJbBA^gm&R=3QF)NXykOxgK^SMM7f;@!ORwtx^xNU^sLXSLHHV#ns z0n%w(^hMRNC$X4TrgkkooFszAMZ4Qf1CABXp+;~Hq52TL>(tpWIXk^%f}OsS$DvLMv(2W^*%MGxrx(EsP@RB) z!B>kF6p2=~MVTf4?b}`8G=rMnUth&}&!0`Ys%>G`CMSp^&p6;Z7z3GUyIhpjD~9sF z2_YGw$tZ)f!UYhR$Pki6w97$sPYLcsvf+fnIWV_9b-qO$O?1t3AeE5_Hx0`_{Fi@> zfW;3#e2hXJV;`6{WWP#`gXwT&L_2UEG-qa3z(D|2d)vKJyCF&^Li3OdqvmMKIqCeK z=LOASdA}`_{mGh;Y&dI&Qi`gb>%f$oN~wU=62Vdz`U z%1N<4P%#8A>nKo5=C)$U!P!ueTIw-c*xu0*ko9{mmp`O1LG0^m&JC1C&@h?Svn?|b zqcnkBH*(SFMY52xVtTRa+cjE z_QJiWfp{I?>*vL4%C^cs_7yzNj>=92003X_uD2a>NpvmSlfbc}eHJhowvye+vFkqi z^Ity4R{ZqwL(Zz;XSb!gih~5bMYL23Vf!0Fk|7xGnR_Q-7EpM0HpzXk$2ca+9(e{W z*s^?q4OAJS6v@u~ix6OIQfJ-md2EPsWrFT{E}XmH|NeKS(=iX>sx*SEBP24}$j(~e zAqPs&?F0^~7)JA7Ii_9hOvaF#a#&~D$m}7|f@2AYeFy^7Y-NUyb8PRtgQP_7KkWqX zM>#YIDWukLB$ft(yIht(|LISWA8-8M|JVOGsqPWI(L{ipw2{_el|Z%e09jSDFAeAo{$WA;+((x9HjYE%C1-~A>J&RL6o z$@&t}@Dj%ZhHkT5-<$_Jyt}`z&hK?r{-6K+yYc~}`>@NQO3D+5paEF-AnD0RHQL{)cig9hAXz zT86!|^6A671QOtHELH}P<9m2~DxZJ(Yx#G-{cRj7)Inqmjt66%;L(Tx03ZNKL_t)C zt$gZ@_VY9+EDj?Fkr1prJv^0ewap2(G)v~r@VyutP=v|a#NIFNfugWZ+XY-JYIFH-= zhXl9p-`}K`Yag|v8S_lyRnQDheVxtA?c;s<>Bpav0l7~MN3RZWRhSsU${&ArNr84mwhjqhn4-d^*Yfa%hmltVi0>GBaaS=O3)rxl2$K zfdNvcG94rX3;ES3=1%3T5SUWe91R9#mKM=PkTGY26TbU)pZ$@=pLMmm4a#PJ$Y;x3 zBp)2MED_B7w?F?-8h9>BcI|fg{OhmzT_coJDrvTZzP)?*zVc5DPGM7C7iBygMN1$K z$XyB#qLd}3dkCpj&RD04^D#zProq2nCX1%aZVxf5&!-pV29Y<&QkB6LOs(E1(p6PZ zLQ(4XYQ9<(=?yUAvNyf#%4~vSJQrm*LD%)wW%>5)w#;JV`jHZb%*X)!zO`YaIYHTM zN-djRxB_5p&n;WOzr8KL|HEH$N8)=Eb`rrtJXAV359@tCo0sY2EPI!7rMVe9mQFH{q<}89HMMcvu@Spczk|J0sz@z_u}}? zX*iKS1vg*6emkv2Z6iECzbgOq&%cja>c-LF}0Z|_4gzPi55 zxxc;rn!sOB5c_&km8GB>f@Oie5M-*z21hFh_PnA7{qq8M!Gn%CHFd3|kQN#u(**H^>xw$PE$&zd!R{d5=k5aK(^ITD7qw`G|<8uZ*N5`wKm9}b zFg=vU|M|cFkH^*eSk_VNi#sWo(|*w%@H$_Y+1sjox~O$@y@c|9j)Jk#@3`Jn0gmmV z9j)c|@wt5a_FRb&+VGB>a@;(W=hv$I)@~h>DS<^B&0bk<$cO631)ijV}vQrdS;KyYR}``Rx1lm@efgq)`57x zPIhAK9hhoZ)cvz3IS{Gi(EyN%>I0perKDn$A0A|q*^pcgWW#MGSER<-X?!PrX^}+a z^e$Qxbuob3wa|gA2s0sXsRQ=Q-TgyV>^gNkc+S;Q&Ac9LaA{y?q!Q~KCApe~4*RwB z@J-}>s06Hm;VGw?0dj#5E=_uDSAytvU3Cuvd!Kd7oMK{QS^lTLpOi1Rhw{5WK8Fc@ zaXu=qZ>usIbj$neNqLy>%H#7q#9YO)s_0eK(`Q^{pbUnxj{k!|co)wKm6E+V7|ygzVLI)U<+9dm*K5<@YQM3w z%1JwxSmd&y{eDx}Fu`98lp9Cpk9`(OT3X|`%l zb~2L$D{8dWH3+)gb7w+!imQQ>ql_0r3KGr#mZfOhQzn%CB3M;ItbLPZ+k@{X--a@D z$sElc0L5~+kh1+YZIjp67pdPOO1gi8{-GR?-Lg5f5=^J9Y_luRvzMA(p5|LnfHPm> zd^)M6m%|~lw&Zc2zuo3;`B`NYf=#kWwg#VAIU&z!df(Mm$~d?8cWL87T=k6Zh0(2o zS{avsSN3MT{X2;R1d%Wc)l^xq7gpA@sydIpx4fCTB3Q#S`tG7VHWOb7$D)QGO?s>(4UrV^@W zek*5#mva9KrEJDuMe2RMEvFY}xwFuWW)rD?TpF8Zx_|ZujWU^+a(Qu4=C41O=4MhF z|N4LVpSG`W!~>eienk_F)pP3atL9mG(Q>sKmrcVg@@6?XJugppf2#Ey8FPDB?p`P5 z%isQs^40Za`T4v5tI#cBP?qzT((i9eV_V0&HZ}+g`(-qqmA!p6piE#lFUq!aRhFw}qS?on*OV4yOwH}8biCkdUN%k8RU`1Wx<1E#N+E39EHAIG z**p=MK4!*5K%k~4Q+;>!E>X0Mjh6Q_p`l3U&ZAUju!wo{YGxeRY_UlO`Q;by!@6`a zMX)l7o12GZF){>MzY(Pzp(s4YZNV8NB4_S}QCzQ`tL^V*y3!dkaL+^MGzBB>j# ziXEIM6GmR+#GEf^i!6!brThloCO7Q&paL!%l;Hgr?{mh+vsrn#x!q+I^)tTu;>+^g z_urTQ>c9E#%isN<|9b+)Ne8**Dy7Bh;IN?8Jg~sv>nVEsANqJi_i`OE>2L+Nmc_bT2vPG zdUjh*&fb-~dvg*_s(LBn-HR!QwVz*opBT*X!HKeHxx2l~xpIb68cC*E$zV!=(20*9 zK4zFt7}KNI8br4cZ3jUBDjGJ+{&6^hIHw5r!+GQRbpZ$-?cez6K5BN_c5iP##z`{F zF~-PtDVx#Es50D;6O4a#WU#$^1q~4388nq_-i(9wG9<;d_N}*3?lhQ0b_ba@t7R}$ z!Wm{54TMLj0kN(P)+T_Xwk$i}*On;r7Rcd>w8~I>*mzQ|ug=T;{as2yG&@EwZz*w3 z-d`>l^AH^OPm=PW zu1~>rh=^RvD5RqyUlWqvjXG@Ya1R-?nNek~`5 zdu8fuFScda>*T&3;DpRJ;foNSGLC(-T$GcOi|pNUIZM~uaL_A@sd*u_vn=&}L4R7+ zE1|j5g=DU&NR`c2!p9HP?i#9z;gxhd{B?A3eT*5l@)waC9u0kt!H$UZ2AV6%j z7PT8yHBdAs66@cu0@^F-8hBj9f>l zki6^RzG!co&6XXWonOTGk%pBPAWtCv2zF9$YPQM`KmAz#_z(XOUckx0VQKgJ<@D^h z*5Nyyv@vo1oEFkMlF-yl1BX{FXU_Sk?XOZxcBwcD&)k5FVCr)oY4sYH^Ru%A8~6{% zmK?Qcoe@dRmR9s`0LLDtH*IxL?%8P~_J8|t|6L&Mzxw^}%iX8D^1I*vCjI@O*vt3V zIoQ@hy|zkjRt*KFP90k9u@{oyw9J=vfX}e6cDl(se)X%b17jlac{gOwOpPQ$k%3Gv zVLuaYf+$oGrP^ksr7%HHqgnp&hd-59z20O%o6YiH|Lx!GNSI(v_3%kKySzxC!TB@T z-doQvu88SxNIP0!YU`C?2LjM4Zy;MESIHY&L1d?$fYPZp9+IkBKuv60>O!f)Mo622 z3dVt6f3h`b&uUfv?*IOWtOt>yzy7Ol!oHT_bMOXnaPp8PMo!r(=oRgUaqY(ygmH9q z2p}i^U7MOZKdl3#rnNDwebSw@w`l3hCZyr+=J72VY*CpT*cK0}%0YmSn6r6rEiySQal}^G?WSKm7P(8BOM?MPHsB zBvWlR)j@UgP@y!arJ^A?9)gUg`@5PI_WL1rV)Q$}Cc$Ohl_SUFlrUueg4oPoXmxT| zbuYQ!>*Y4}aRGpRILB)Mq3={E*$s8&)WO^B^8Jq=@;|}u+3^7)Q~B%v?4Osj%d5&O zLVQ;L-hi*@^!04`7i(WU!;~V0CR5;APoV6B)2>L5d8!e zCRGYZA0J*ye?WHG5F9eV>yT)n5zTfZXal50Y3G=XE)ry5#%)Tdl0*Nk^UL1#jAI`u zU72Tr;8^l!?113y_Tz{0@BZ%ZOTW`BzxwJ|<=4OZCZne%a`yAh^u5t@x&Gpda(7>s|bhpz;(7Rk$iDf~Bv&IH5 zHrvvqQ2911?=DV~l)k=oktogarN!O5w0GP>o;40z%pqE4-Gbj#O)uQ2-^_~~?1nw>#p9Pu@N`u;EF z=;X2x4>FVbZSYzi|MFex8E*s`+U;`k)mL$fAlS5EeDh7}8G;B#m-948g3=ww=z!_z zKRZ2%^E~@!zt4qILwY2tEB|7YwSJ4d)gSB?B{#k7Gz677>c* zBlhXJeM=o%yBn3Vy~E>73d3S{AUJ&cgyAW&4;opc~QCpoe3{lHzG0MNr%_OGsIA}%D|2?5_SCDkQ0PW zYFMY|XL-jsU-0C7nM*2*57F!DIwcvzCX9BlsJf?1C|g%v|Cpe+)6}-9bEgic z$?Obg4q|~c)Tv`z*#brvGNV+aoi^Pu30!9x4&%?sJIC2=x8;(Y@9S$hyE2>w6MIs| z26Z(n)1N{kXAvmfq&=;DIzSqY5aRywg>3@|MH96N9XV`{o$l@`&ANru`B~}tj$Jh!3W0|Wq7bx z9&hi<*~v-T6`hBF;$_g$==ICRA>P1i+87~PM4s>mk|8R=K$}d(J3Nl^o8XaiQG!>=#4mUE;j17j?+p*i*~M8o&YXHS{X7brh_UWT%4UM&h7OCfs6{Fz3aYzE z!~2Kji?2IzuxIC&6)xW!mZ#gha{P_4&Es-L;3x0zbU7uM`dq#ROWahM9vJsi9SOmB7@+eu(6G+b-B3eCRyT~ zSKC$T9rWtBYNealEv3J8(8bivBXCqpA<7(2?42$jEq3cV(NeG|P*tMlY~4wva!EpW zU?7_o>-sb9u_1fIgQE}@@o28M*SSkNp`1}<@ZQlNPJbAsRzyGIRL)*))%N^@Jv^*1NZ#mdE3e>3F+8giEfDXae2rU?}f&lNw;6#HxO#Edf?S-gU zTZO*+{)h6r-~BFGrAvK#b5kAtY@Ri=Q5-cxpU4=LwbOKGTs(6azR?b^`u}c#C?0Ih zsEg{=iY! z1yrtYSeDKKASP)&^ZUt=0y#PkwQ~R>WCXLos_Kk$8iy%$IKR$4XMqT%G>%`vsS+&u z@Z(QmDgV`Pe^U+)4+6V7SAq_I$C?RrWDxe6kxO=Gh>u9!zNV{#sL?iiVO<17f)eda zYO>CQE(>Sa&&VnmCZt+x&0zU^VAoo|R{^Np2DMYaoM|dyaZFJjYy@pUI3g(IJlS&w z$GbUO9Hjsx=a3w#NpHKhM(gKXSRds+XU17fFfQ1oiWrndhE`=vG3lKXf3G^_sujWR zIHyO4P_$wB{>LB6!^2BP*1rGh>w-&Eb$O{dul|mfr!%^v4jDwK>~c4nPq7$AA2D z?lUL++u!{zwe6H`^kxf`IUz(n0qIT}+_M}UA;#9}g32U_$)3+1t25h!T8po3({;8$ zKN&eIPtw-2Bw9&mR9m&36Lv}>Az0VyDsz^A{qZ0ESVl%TpB$CxLGoHnqDxS{ zD*P2&oy=dDLp8Eje);8>a3k0Z=U2Nd9t6aT-GU;rqt*Vj<2$sN`z+25iB3D6$cgpBL57PUxSX#HKdnpPk|@vhvWOW+$+4}LyJ*hX%C~INW?h92z~Wg<1ARK{ zKp&KnL~ahq=%tQD1%HdEL|WzsWHWaXr-pyrfBKk9B1kwsI}ao*@@;kM#&d|%#Vm|T z#Hdz=4J}LCB)9$j7}wK_%Va<8OuW;PKt!U>ySD=|;vjcXV^7QBH1+?t-Mo1bqMvbq z92$|VzdJUeYAB%Ekrp}lg&{DjGDt=O7OU)XSql}r5EvIkSlan4bu*+9PVZ>%AQ>=d zCl18Cg15J<38w|(v-VH~?Ek0=swK+EsC21)hJaWlOc`hq%5*%95r-Oh7sf*UmIG54 z(?KB`B@yc4cuw$<+8!h2GN`jdJs2u*H^c8tScm7==bRs8ErXCm&KyOEM#f9i(ci4Y zZr$XDN7-9pHny^6e0qqb-06WYsl)2>vBA!}at1pmfU!2@-6fmK z)T4?0sq+pJh~ZBO8l!kiRu|vPB-N^_*=TozekH-vF*Bc*{=rE!O`sFFDMRgqO0q?{ z7Z1uTkbcguk>wm^oZ zKLBmkAwNB1TEQHLM|o&+x#|oug}YCmLU=+9TCJpAploVQ%`Ak2HF|nXMsG8wqvw#0 z8V$k{GKMN>!KzzyMpJZTVFJkv4oY`#zkK!UZ7qVZ2;qnHwwH?6k`1pbX_x6`xvOi$jS~t~MQ56O`7W@V4DeKP~?+hMRwa=r@Xzx8A2ZG6^ z&Zm{jcdPdbHV$0^K^rHHUokbtv=Ze6Ac9swhnjZYhYFZXU*Gs~t>JkGTob_qauNgY z9K^{8Vgy8{VNyp-pj(3`!dceC^E2igi|iF?%VKei&I5jevxK7nO_PDjk2zjh1{F4E znZxiboV7KR!KC*>;DN{mC9_|<>3(60x2<74)3SAUiW5+C=PVgIWgP@I!GnO&cQDMI zRwGbpt)1>B=w)KwJdh$MY#qSy&L{$s|Bm6+3bi*#ndo(7%=cS@34u%kO~KP@5u)LG zg$JaEe4f4YjP9ZLczbzCaOND?Yi+AIE1VFrmven|h@{tx1_k*a!LJNX9T@^?t&L$8 zunHvIS4P-(;6FeZ1gx?qXr#YyNLcp6B)SZz5l{>OQ8Rf`*)v1i z=^$V;J-?txl7mx08BYm7VB!6&|Brw9K4lSi5t%mMZB~V#eKt?2Ps_6R4*I!V#HI(W zfz^f4pfR5Sh^E<=kUv9^&WIC}MHezao-V4~5~EB>6kY+SVT-6dz8Y5`=i+okmgf zV{`ZxlGYSV*=y3>lb7cRb~*F$A6!POUCz!=!ugOmyyE-xdf}z9zq(DFw?2;ETit8O zIJ?qZMfOx5=_U`y@X1cWkPcc>0rJ4RajJBuEc$9TE4^mz!7SQh=A!Lc864~dmJ%?y zxN6FxEWYh+RBL>l23WLCr%F4;ntbLY3+56pX0@+W6x-E$rq9>P0rp$3Pp|pe z>v!)XpyDD}KpW2)IH`gO2k1gQz1s^b7+k}!IaD$*&V`PEy12u5e|uN%?{4zFDSc=c zYGdh&?z-uB_JXo!J+t6rhes_;HXsYnfS^R!L^QNFRVN_QRBPf$M2nmO(x7MI#K7b- zctb&M?{3rQj@akfWDhPM=jL5Gs<6k62{nL(lxb?Q!w{_)V3`)UU9YnPh^XYOAYD33 z0tN3On#C!I@!w?^vL}HI=#)_f>&u|9b~))v!u0cX+LgkWz49)iV1a-D733vbVb}z& zf&=fs(0C^^5bVM6N#zqzepI4jkOEbLHVGK5S9uSSIe4E#WfXOU*e7c;%5<-)Oz5)9 zI-M1nBTk5QM||_y95)<;N*>2pkC~v7NK8$+tuF~?Vk?Zc+I%2LZO1nDW z_m2-{Jgppxqr-z_j_SmIRv^SU3SxPKdLkZ!^X#5@mXqV7 z*bn==+_n8NlAK$Ry7{bJzx%R$@%7hyO2~iCX#(Kbid9Hp81Lifhw|yCpUYwi=`;7C zB5FDwIAizTnFe>uyeN96v?mxwWFw6AIe6b2tf8~ap@Z`YA$|R;U)9Xq z2-ry#QeqoZmO|X@cT*E~A2>@vk6-SeGnFK#QL1Vlr=UDbCuP^oM9;$E@n?qzhiMyh z29yu{{AZysx)BmRWLdt#_d?txd=f*y7I+^c^D^pPwLacYkG{L9EH*e8CfQ(nA*gJH zvKgmu&2V9ySwudz$H1Rt?>m`gB`@d})Qt^v*R7f0*WH&asjIUKX0!NSJ_A2Wd0ICI z+vpBRA_P$W0)N5Q3VH=2&Vc>rpEzCXfvD`ySCkc}kn#PLpy*p0__2402;F9W7{G1I65SEF28Ajy@kdFa1 z>|Nwik4`e%UDoGdi>`4Gv?eCY%th28D$@9K>d>@J4m#Z%MOlnLCj(n#p4Kw zkYj{ETa$5WjW`f(Xh9HzMY;a!i;Pxf*qaTt!kQg>8=FRVhk-IjUX+SiD{}T7IugvF z_E`=z<0p!CSTRlmkB&!)96Q~M1QdbJ_y#c8Xq5fYkL)=i0m>Ej&D1OgTxMw=f&&|P zl5$~-w!onDr*-@7Q!3E~>Uh&qsZYgY$g8%jISy8Bq|WcV|58D|Eyf z+Y`UXfp9u%%^0)33%k|++Ys5nXKn!a%K9*txp0I;UdHL)FIuY1r4`0jK$!SG;QhJh&RZ`g1U9#K5=d|C91i#C)Re z)($U#kP)LI*j0yh2av%8s)Jrt2kZ{O`NS4*EQsUOb401p*-%Q+<1Ogm5U{=pcR4$L zPf`Kd@-DKO)^M2239H^+5g35tw=*n!Mz@|zXPi+cETdZoV&(HO_}Q(H7zI++e>6&c zRS>7NhLp;Xu7}EC%kpsd7-FZouYhhn+$()r49IQ{1q1@n(`c0ESD&>?*UW&DXseZ) z``dP$l83*)cW9(5-a)-{k_{+~c1O-7@a)^TOj6U|FZVYegM@O{oI8{gom%%y(-0sn zlI(|B0}_Uj?08!G2&LL~l>lB}a<>Q}AxyIm0whk`8sLXGpMKv&KuLo;X`YDW=>U0f zI?ovkl7!60(RF(%52(w>QSFh=9mP5NJonexbFZyM$f7$nLnR{Lczk{l`!Dl$7oih_ z!~M+3fEEeFl2By|C7w(-+zO7`8F_hm%?t#nvUL-z=ML%qI#kkou6J5FYdp?$(}q^( z=`_It-{n4W?$)s=e*|He^?;feq0A_3APt=`_@WOBmiBO8t`$tf-Sa9*9C&0;DT>dmUf@kJ06e?qd*GjbdKzu zKvHl(lR{!;=+o)Dt75#mWM_qgGJPw{7t=hogAdC7aSix9zd*;ma?XxA1dpaE9rnqg z<0mQlJde~R+F^8p#nP%Xsqg|)&|5O6TKktRxL6D%V>O$rb=P^#sj=?rx&3}8f0rW) zIj4hgHw%<6O11h7wXBZgRabLaz+C1qgJEU=*^K#H?fKm4!24MToiSc65TL+!?QFPU z1eEBoW@h_hRwj(5gJCJP1&%mp&@e{tX$+mi-~c9iZq(jb&iLy6`xqiH^lyIm+te9F z#!@x_4o`^jS|jg%*1$8k-~y8z!YF#pgFb)<)tl5}^pkR&6 zTm>vHudEIO7)$o@>MDW5;lWY<3<|=TiTpS^Kg*fQb{D$=DPB~2;{L&2f*uTfP8ma0 zu;8-o4XR?{r<>bkP3Ai=qUuYGI;6z<1%fn`q}48`nFoIm7CvZ-LvR2MwXx4RY=VT$ z6QI4_NN|N%B}1{M`Mu>ltnL^`BrgG&nFxIZtf%ZbSlB)xP}%z@!Yj>M))CCeGLU09 z9>HQrMuxZT2JJjQKSgUl5x6O5yY?r6j_2g4z>tTB`zcv?X1{0gVhjegUC(zhSjbfr z?5z2=tm2>q7YL9t8d?e1_yQ&8)@4@L10`z(5;S3b$B8+Y1g+YwswEF)rHRc7dv zh0Gc7y$QTF6d3O-|D-QL5WMKpF+s2rjG!lR9?+>ahIH*}V1#_8Y)dfX^PEQkMC6b+ z)hX-J03kDix{=%$_J&Z8^-*(YhpaoB19@UAIH`-X^RV32KXaE;GhURt+xtNMXBSs7 zvVwKlpx{(j5nCX`{_)4}0%Oaj*bff(;20Tin#`GqOG=Q-MQw321#no)Kz6>vPqiyMP2XnaBlKd9@LbUZ>j4#UFLY7aFL#T7 zkUHX;7F!uo(#<4>jAl^`q$H&K%qd8oD?qE2Kt$=7Ha9zxD9|W0#Y=MI$ z#zIF;C%Zbw(On3-7@L^P8G+eN^al2Du;O4qQjKOJI0n7du4Mxo4f>Sjk)TW

    `v>1npaX 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 DF`OT7 literal 0 HcmV?d00001 diff --git a/examples/shaders/resources/tiles_normal.png b/examples/shaders/resources/tiles_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..719cb2e0d09a0b6234798bc276c2e274f3bb9c79 GIT binary patch literal 679312 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

    &hICl--PYMpFnu|$>s$+tkBb|@jYfW~Q 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%0DxUoAUnr*kMOh8=$!S(M~{ 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

    ZrMwb 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

    XsKoMRgbz0hg5ynwV0!&+c^#*gYjp)E;NrH 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 z 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:crqD=Lq>rVLVBTmxPaC4|HFu{?c^03r>VFA5d>KvvVjeD%xugF+snSo1SMG zc@FOinTq(#ww5o`fR_q>bi^8{h>YQ^$k;gnzt;|jaL=z*$ga$Y`eM^GD7{C|;Q7LI zV3I~AT$Sdz-*EKNLB~5LQOfp(Z~`38eqW;_{dEkh8kX<&9V}}7q9B?W z+MVWcl=0?BvCR6NX86pn`MIijdypG;OB;qbiNmoi8PzFw7cTE!SaKsEoRC>vq8BY` z*mU;8a+P7NrXFd$qULye;OVuCGxFI#8D@J4=4qx&!{J^r_&#TKQSp+RyW^HxY?}fQ zI#bGlZwgI z;X5zn?xEl{mQTBc-f=|hdV*mm^%`bRCHugmebrFR4L`UQKdl=4#3dJec+YYn0y1G1 zgf33mvQ%LAK1aUg`GaOUY^d)IPZCHBJifhg`79wj<+2eDMka<&g?X%TUdq}_^VjK~ zr+U;Oh99GhavSjC*6{56^sIO_1TUjI?!HIPeo$ey9-?hEVpdHu#sauHX>qRPnbY7l za#^fsTuZuixloFA){@(XU+NYATsmCH?foy}y!GkNEjRm`c2EA^ujJ2*G53RQ*Wx&l3!i5@L0BAF_Mz!`0?CPox%QYBa+%n3Ny$zGV)r5Y z?_g|vsvM$zD}u!?dsWHG_~0>FUD z2C0UB7QxRRJM%h*iYR(Fb;B;wyooJWz^P6<=7j&CsT1)w?D#avNb8Cd`JMK5BtD!} za*4>eAG#c`0|tK1eLp1#1D<+fPYl@<9&@<}p}ABkAA>38SO5Nh`(2V1OqzhO7G$OT z+++Hy2KNtpK6{GOBahrPjEv%ovAo2RZ7hu^31f|tm({7o^Bh9EV_%Dw&>`G3s0WRa zG-VIo%t}7`ihAH7{?qfdxaCt8CoNuXaL!9A!Cr1%E^e26x*T#&bRa=VkF?(~_@r3ZImb!B z?hMjM(<>|5g&`K*Xs~1N2$@cEkW}lf=|*||q@b4ISELCm`QjEFhczRA$#>9nmqTk_!?`r1WH;3iSL?WJ7(zoKw%$UkQs zEgWu7Ovmn)L*Zd)>0N5hgNnPG2BkvGT3*NwVdmi97u>fR=h!llL8|a`6Uwxlh?@hTEF$R%6audS7a0mxhgCa@`jH zZ&UWZ+!QSR2eBoU^xw4HGy)tdh_jG-=CP22NzstqXgF^>`yn3!a;K&VT70jdIF&AR zO!Xwh#)dGpc&)>6x#3?6NeIUzRmG{JyIr8$EBI0yrX#u?b>GyKnI#*!yq3S;V}>VY zxx!}`DBiko?^zgE-PqASMyz|9%d$q*n&qsfXXy-OZLh`@y35xrQm?y_w@3=V>TbdL z(8GxYXRF~znp{$+vdo`L_5+tcZw!aFCcB5 zWN4Y&8#m(*p&%iQk{ zTM`5n8*7sU%v?itSg{teoZMJHxA=oTiR18L)-Wk!W{2zqQ=^EgIb1s_q<`Ro)4zdX@MFvhJ`f0qXUo<}xq1 zH!>+O^r=|g*NjIV`4@=CB3+aHxr=k>^D57{DN7CkSh+CNF1pmTmp;*;#`JQU?+Z#Z z;G}LjF$eyTPq^D=6vi@I^a#(Pc~oe>rROUiCz_L+mgI#(3v}-!q`for9n0<{Wi-)L zjYDm1cQ`H^S=af@@`Mj(OSY05IFIqy0f)dP9x1A&(@i_>GZ$wOb`;hxd5eGUGWB(L z;29Pz%Nn9x$b2cG)P%=og8A)#_|Lz4^!FTX6xmdBTm-1C znw6M|c8b-zUD)oIm<@eY8xZeZLTgwGQgrifTlxy(%1^rux=HPM22E1d(Y|(ZP7-tw!-)n+d&Bn7FEiCu*mKcZWamCX# z!I}^wH`ZIjD1h`*k*;gTh09Z9JGhDj_YOT5Gq2DKjrm*?#)4Fpy?jM{ZV2OsLt^2J z{4z_@?swy0rwUa!I1`7}t@MpOW`}~69`JjW6IFg^L_CsOldahtYN~$7Y$a2Lmgmyp z>)-Oo4=-ZY$Ph z%ehuu4Rg-phVova#Q?a1{##AEYsp12l5I)6pc`}RZPT&8<6OicHTPA?Fmv&aYo1z1 zE(U~01wWrFoOR5JOskJ8nkU6Raq0OkQDfK~0#2Hgy0MI0%O1nOw&HEg`9289`unbT zek;@2#v@JL4nlJ(IA||tx!N%~PO`Q+kw?5)v}~_y{J!E|Rg9%dCWmkLi67gN=d7XZ zhvZ(x8wYY@I>Vgwm~(ulWyYt0!*s2?B=e1o%f&Sy`HEd8&F{{1cb@rt78l2f;rm0$ zt$Z%V8hhgstTpzf?EC<9K#RYB}CV7aDDnq2<|-|gPK|C(+m|~1`Xd{8a{9OTo^;zw5XY75!KjZ zk0YhfpBj$ygq03>c6`2A(E*nX7csrMB<}Co+@#&uJa}0V>^+uo%W*$rrDX~d;2T5e zX0X$&_W|F%bNQTB^lw_!R^%`~&UH%?IGC{MAV;F2zA*wCQUrGm*T)cSWAv&e_6Ml- zJx(sDYfbW34dX_$-&wwiWa`lHKn2zOQ&c|7tMZM|B6l zbH!$vIQ-LGSQiD}URorA#1=B9ixpqO#L_D?*$0<-xTjY){N5dPa5(=_(Thrwhq?m* zt!vBq){tinnS^I=wSZQ+Sh}RHri@$c`?#w_i%xvFY>{l94q`^0WpkD=asrx0V?Q|z z)q#sVWsw(b&vJ&_A;my38pCR;8A<){!LZ+G&U-bFLB&Z^F}$lfmG;GM%OBb~=CA(U z-~TQ*Yl6RaIKLZkwkr7lNP3eUNwO?W@4NTPEIO;&pf>p!Q)XpW7P_m^Xn;g-2oNB^ zeS_~nuE<`n7YRNXxgeS~cU5LoMnr~(Pv&m3&Z;sGmpI}t5N@y#6S?=C|Np-0WKUrt z>c<{oPx{}YtJEClE&F9nlr{9il*gfiV-3Z>YiQCw1*vl4lAZ!4ESsx8lkecX47(&o&5tynj< zJ4F@~ji)Wny`}k_qRa&Q$)SH-ql{uXXo)}9sIvf7``Eqiu)ccO;w6%t&WLgceXMzC zAod-&ux#&qPF7XtwHMQzj4mZ5yO0yHQhe)`JV^K3YOb~6SJ8$=-s5{)V3cLJ2cgUCo z!YpX$M?RU8(#*cdP~_#X?gh*aia>t8GUv@s5j`^;k6^vkjP`IlYM9R*mZ9ORV8=R- z_@k1D%#Qh~kMkJe)Rti2GWo$`odZi@t!IYEnZv{=)_I=`Rq%1!P&EPlDnkX9gJ3*+ zHNgWchb>WSJ0Mmb8Tzs2zHym+a>+l#WL~kj^qCIcaewPG5RQWhn5mM-bA_81#F0xX z#K2|4cy-{RKI89488Tsh?supBv5^m!)44E`-czJA|yPxWb|0Zm5{A6(4&(rz?3O$sw&}6DVHK8aAVf z{mODWYRTkTTbJ|$p9G)JMtt%W$0F2>u+ab!K~@oxu4lWNRH*xSTw1`H(42*D|g5*jcy= z8g4f}{l<1A%7d{8us1CO{JBOS$&OckAlvQwy>De#uNkE&Z-)je_PY~99=FUK_+)BE zVik-UvL{RNTT5gt@lnlQQ0#Xt@^rZRj-us1jgNNt@Mt zywtq9cUYXuZhXsj7&5+Z(PcreFJWgz@}W-{2lOX~sej-@GvV$~Q|?nFm@PKOVOC;1 z5$Tj&cz5BYQflF@RUFqXNfW~|AsYuo0>&9T^kYTVQv{X4_#P@ysEML|RGm-ddC#yK z)$}%sreAY*x90Gj$F6NTze(BXpvy=lqlAmn<#5uFFGA)8+#gGwIAqR-N7dt9dO)4J z9Wl~5Z81BGTYD6Z%gz{H?7ePfHgUr)t^bow_}$KDI|C~t`kfZnIC<_6-?ylsQDxVp(4N4Apq1+Iu%VDpR$;lE6@1ta zF@OEP{O8|4wg*oCbwC@tm=`Ykh13QV6G_fLwzS6OM1TrzgB@GUMAL*G!|jd_weFJ6 z)4Zh`DMHh-Kb0GiL%h;t>xN?s^)6vqI+S(D)j~*Nx(nd-bj8Z^x{%C?Rpe)e!J%ec z7W_f?I2@$}rPq<#=Bt)RuN1okCn&CkZ!8s|ZNu6&M3JFh$eyZ4dWbp6#RFb&GccT5 zx9he#yISh!j832UTuwT^cdw8gQp>4Mx&4a-CvF&vd%h@mC?W(}HXj5EdS7t#R&K+=XEo z=x$t{RGRPhD<0hu|I(I>bU>L1S$CkUBcDO+ zbDM=s!v+%iCee>$zaR11|1r-nSDH zr{UI37zZBqqv70FSf_$!hu>(HLe@(hc2eVv4USV0c$(p+;+l#}T6Pl3l!MCN<*?QC zV%yy+?a!K`Zut~zF8VJ1p(Xj*p~*vPX*r9geAlvyG>F~veMnill&Q;P(9+IRswU== zEmiAt?|Zx<>2g{x-4UteJ&a{*HC|BQ^!L;c1^Ys7q?+63inC3~_NigMY`D)`f~KJH zW1O^PjeJ<4zi+wON1eWQuqxOaAGdaxHwXUpSjrZ(ZNbHtL0er`Bcmc?+-(Mol;zs8f0p3BO!3|3Hz$frta z@R)e8l*8^aU~^QXc48yd94-q?YH6PY(X24yN|11F>a!UczFsP>wIY^j#H!_CV$hNt zHw6RFWl}fXBp&mA$*t})dR=p@Yx>tUKR+8{zW(?B+wUb_s4rY5n~>qA<^D-zEfL2O zIExJFz95-7^egZW4Z2aRpA7CZP3-y14>>|fvFIz4nx6W!&gw=KH>qJgF#*PM7;{t)!pJ>(R&=9w3RaLHd(41|GgbE3N* zlTUTG6PAyy*?p;#AbQtb+j*^knzA7}vUn#c{exk#3K`{!&jCz(X%{HD4&n4e zk56rni?*ei8rtZIYS(8G!&vLi4S(L>51Hk!$MODUtvVYm8bckl3W2oIm?uA&r7GCuVyjzXa@8nU(Mh+9^>6?da2OdD_~l)RNoF1Zj9XNclds}5~ie|9;c>3}Zz&Shm4 zXO~U4vuk8MU`&$CmTG&-{7H+p@yEYMA`wl8R$|T6MhltCNJs zbjVNQ4>x;;+qg3VPBxl4$XPB8gRzHu$ca}T&2ffZl(?^YtUeenRzACjrtAMFvLlv! z=iE|6ikEwlgYM8jXVi&@AG)ZI2lCe*`y)7WJsyvsox|Cx;&G#R^#pexEThl5v*$H4 z%Un!@Zq5+}x63I%r)f9+8NCoBZisU(9*i8b5c)vLOW4tkir#>P&^l@KCndK>b5Q!tq1e6}N2nc==k=-re=GlyUec_hzg#C2LT5IuQj z@$$NJUW9=~3AbeA(T*LQxkHc_?7LP))oE^h8P~@xQ>lGY;;WeKUs8rqfqw4d?@Jzh z#c<@Yof@X=l1-2?_I;GK95y9A*WupvI(NmZa^F>OpOS!&iBy|wMv3KQ=+Klo#zL@k zNcS2pO6CtfcV*q#xPwY>G^W-r?Y#SMy6^B zmsWGo1<6s28}@MS4ZW--%xad#rJ8%_6QAHzYRf6x%IBmK(&4VVr2XP#WMRWACDcWQ z|5~GQyH)RUDMY`h`xaGh%k*K-;jHa4Mf;vZ(Kg+`DHEBYggz$?siPUr3Jz&N&q#Px zV>S)3*KluJ#$mzcBE)SS!l5C#9TF~l^xl#jS&lxJti~Q_r&|l!Qb>TiuJ-;@HDXy; z9MS`a6PRxYY_AmGh9y7cn#pUpT5r2`QxMhYGasADVYp^cx}7RLm-S)pvlBC;Uo%^` zw69xsev215C<(pi89%u@A~$C4mTdDB^}4|S5Oxr%1B&L2q8fy}G8ym01F%Uje=z9O zd1BViII0iP~J8QZ5$8cwx`c_{G)2kyR; z@Lj;*dc%|GJ&!%Kmrz#?sc%qgaOG!z=dgKnIra(`S9OO}^^E*+G<;A#N3GAdRm%UD z?KtxcPAxB|h^gGH_YLJ%Xm^(Bp};+bAH5zQ^_Caq2o+fl4~AoB$gWp$wAI+s;qG(E z#%AH+`y#`OJ;mge8#DC{xzZ8vTRK=hiH}3v<}sc!Q=+> zxhDO_ax9RcA6mjPq!#4p)bdSJ^5e^v%XQmLa-It)3C&l|fgj5w-a7~CDSWk#Sw;;e zl5wX);%Ukg$)dCzi34HSu&WfuYs2+f$!yW$imE!VaE)fwE1A`%3)%Up!4Y?S16u>9 zA2(c|8_u;%55?urlc8aIX*=p+d}0Wtf9^Oey^51*N&8Wl z8kXC}!N2j)pMay5WUDxx$@8-%KXN&3+b)ljOO{FS+P^dG-59gcBqx5is~!t8;GxBt z7zy%p8s~QEbMi9fE=xGoqOG>Lp+nzP+}l0}FC%Sg26{xWk}0pjMg_C6!%d)>9ERkw z!s}aN$(OhlgPCUYy-VN8=u%|xXf zQLQwisG_X)ghv6lBSW;2DHH5-#Y3yn=(?Pr3na57XIp+?JV1k>3pUakif2jB+b9g{Abqs^d z(mrdj%Kws)Lh(bc@h1+wAN#a_AyXi_7F08~j8w_{laeU&iB!O-ZaB;joVNw<1`+0W z|I>f@y+6u1d1`rkA)V!r&DwSkc+(a*J5Bvu!V9Vk(1cT;_s1Dg78AXo=k>-VIg$X0!+2h?w3>b(YYgcq>yDFt>U%u81+MEbwp$93?Q9ah5x?|G z^G*%9i}sjO!XN{pX-U?XLqf~kZ7F+-2Z5brE%CTu|83eq8!9ajmJ;ohFgM&d4Zqnp zo#E~DRDRbLt#}wpk0!T>Ireo~avjO2FYa!4N@QU{*sTKkm141Nxrj27?_2y{fa8`t zOe!u^ORuO%Rm?w_f{7n;KC1aFBk!Y-lhU&F9qO~1F%|c+9|?SPzhItv+}0K^v;KLo61S5Omd|3^GLBvD@`m$eN;!~_pCXEUg4VJ>cThhXY!TxB&SBSB#v&A2xbzy2 zRnpL!km6A|1`zBmermbZBmS&5TvjeRG#r|ilR&7EIXlsCK3FD)oc7Y;x-FQrG0xX5 z`m@3t!_!2328ud?=1xYg7NuRVM>H1mq4h}@N?DC$b!C0 zQfe-XFU|>pr+l;ax*l&D)|_ujZdJt3TC-hm`OT)sDriu1xp`|IgMxVwu{I?|C_VU+ z`lHlqYeuq{UQ3A3Wjj(FHyVG~kUc7TuFKPDNvvD4z2)^LWvL?G+JbL?=~J(y23cd? zHQgS6eQdef8&*nyAR0$Zb*Svos##m z&^(=P_^XZPkE-SDUJl(J`e&EkUu4*)9_~%f@~mPiq2W-t^aZ=ZV>r+(g}R4Bn<@?) z(@BZEQAim#=w}&r;L`Xm{TmTXHPj+e@#)6bpOT9C!ohA~XcMx+<6kAj=T}@lI>^{* zG;m1ej38LqC&TU64bxn)GXZ_uqJ)iMd=l-_{Md4K(ohd#9vdOtd1Mpe0krri%2N;j z!6AIr@=?&~gV;@wcUIl;7GCqN|JuKwtaJvQ5xk%rZ# zpg!(#vev8}7%5F1OG0W-^4#ZaX?f=eU!q`=S$08!^U3Gw>`SZYC{*N4&al`}9|S*c zDD#|N(D1S>cx$ITB@Ja87zOO8OIHGS5oO4ec7GomVU3|rd6oI>nw%RqWat_ z26>2S#5~mE%g(>&@}k}IeealMly~90<1EHI2oJ%dw=3}*pTkROO=uQR4wtRweq3|5 zX?R-8w^UItT-tq3`@*BAYWlc*`jz7HrY5@+QVSfmwiC#04=#g7nlg%L<#w{Wv!Y_* ztvbZ`!%8TQnv;80@lw~QY>ym`yrZ}#}hA-WO&xTbdME=*BXHS1d10lMRc+rI89O)qv8e|Wv-bnK&( zkoeJdRin>apR=u|u4^7jmn%taJBmlQ;yiH~)&--s;QL3>row1D!b}vt?DhsN^^?=> zT}Gcb}t$4$YpI5Jpu-ww;Zg4i5iCEg0e9kvh=5Fz%S*R=QGpcAD_txd|Pl*yA-*m z=s65b%3uM%NUHV0Wl?E@CwSZi94W8!&g(_MmXi8PoZvpIp5e@Cx_x#0Bs}RHKZ|L5 zE)u5`46)xD+(Xrgb-taIEW(889~u_VLI$-aYceK#pXC^SRc?7=$bXZxaisWmeh)I~*FX5o;!v7LRF5tvQ}~GGR6=UqZrdlCDwet8vV_M?*)b5> zV2k_GFuT0_jO=(@lMX7G`CSSfZX&#d<3scPe+VeRZbE|3`RZ|RwXA!WD zgc;*?l+^1{OPqSFZWZU#nxa*Ve$v?alG_gv!)-`4E787>yVf+hqT6K;HD2Aazmq(J z;c{N{y>*#MC_8P?Lzm2}I}gj|kWrq7Uks3adBI7})!?-yu~YEr(%~E3FxXZ6$b<)V zV0%>YmurJ{3JPhS&HEHt!RQHmKcEuAVBw;lEK@J%ZMVnwd2Vao1hx~>?Ttk{5xJ9c z^2}jhxYVMopY>^^MNy@+uBCDnFT$FCjvFrWfT1@0COcIizt_WtY2h%pZeZ>dC+1`&ZrtN5JR{oG; z%Pgt8KB&kI9=BjqLn=4!O^F&ql18xgX{IgSz%p8u-1bXmVZ=^$b)I1tS`wp(bDv<- z&^s@=bXWX8uFs7rd0kq_0){uRP7Ke+cO0Uaq}PDJFYaaM-(c5thur#Oe~RoPV}_BT*%VQS#9r+6Ne?9b$3a9LIg`^hlSn&9vSvHGWD#WOdcv_5mG zx+D&7oFU8Js_XAhikMglve9zWWPCkp`Mhtqiap*A8=m_;o+=;pWEf0ac2Abx8rHvp z!MNnT;8wRDPwkF)p+NZjOU3Gi=?r6Pqu3ujf_{mYO1-9psf?o)Z{J(KKGj`Y;C@-- zc@f3T!4K+ARv|8cl^yY?CZ{@7eDf=jgeZDni{&rItXtBgB~q5Box^-qcRcUeIO=x$ z)-UK^))a-q!BdPGn175R*W!aYpw@o>-#hnjk$I1Lo$EyOivn;*5S{_BR!<(G~hQF zo<<7qNOAw%a<=fhBzX3qDaRIpu}MAoI?Q3O7$?HUY0Xz_1LKFu_f#{iWX zMoG(U+i-f+@F}%jAXuuvwE(cza=|IPpyDuTv7y)bP~@53Unx#5VP{+}^?~g&=Gt>v z)O%ix``nnEixXMH1Z>~R-*<(cwj7Fp_-#QVYV4IFZ9U3<&cio`^P4`>sV#>Y+0Zb% z3%ebD<9gVCu86gVH-e4)z9lPTD$3Ul%SG7T?Don>bQ`G=X-~;Q_WO&5W)N_gX~wIF z(fb{))!a|V+>=99cKGSp%YdqN(1L2#itOhYe+t2%C37u{UPJVF#L>!hQ_yH>sKzo? z(_J>|$}}tlfjrUdD!0=+*SCIGUy~-&$4$um%H<%Rj#HQ3qawN2oMwhpdhDS~&?ufY zJFaD2o4M$N!&jdd{M^pS1*{rW6jBG5{J~b^R|(n3$KE)M$A&O(`EynAbu5rCm(j;Q z$;iWA4MA>*92~frj2RrQ93tf|y{Mp@sok=!|KLsWv2jz~i~g`7eef zZ>g;uA{9+gqAzRiW-ceG%d15~TPgk+jJTBq%faWw2`D1Vl8CE?OuM$!p2KaUaK?(S zD$ARp%WM|lTqd-C*6fB`PGw!y7syh`$>P8+Q-r?+I5wsBT=EA+P?T(^E>o#DC$bXt zy7j6Ep#%wiWOq1k6%WIJ`DM!wLznQ_CqA{rPd<}T$$dV?{15-}zx@8E4}1FOaCxM; zX*B&m4+tj*4yzEqFvP+iUS(Zx*J+*ZHk}4Lbm}t<8WxpeF!j2zb1sWNFQAzyD#xJ3 zcIH~Xx~*BZ4o@?&%$&ej}xIrMS@!0^R0vsm-5R^**qC)>oD$BBjz1P--sP(?Xs<8#~gOTr_tPi zzwLID595?`$8fu8xi~ct!HsPRbC@`cCYnf`gJ*VGl)Tw4=rMv5QJH_F|Frehm zHeyxg9W4i1Of_*U2J#iHmoK!Uh6R$9=e^Ybu7AW=*6ZB%OqAY*J3=g>{Ia& zIb>FMV4$K`GpG&KeNA>Mj&{Se(HzQ(Mm6+Pg;0f+Cly4gV`}mrp`K`Zi9vl%82wd> zxOkkz=WoN7{5auP2r;DK@ClmdG4+R_Gowik<03D4{7@6+6@fr%9yHr!P4HXLO-#MA zsA)m6lG~ml*eE_dTKa#|RKtdoe#^VP&#PwzKO7XVw9_?R5?^uY<*3;5zBHWHf@XC{ zOZd*_{L^W|XgA_{ub_DB@wbhf{#_z}p>8^?Y};?TQTzQ%+j-J&X9X7~ zLmwJ;lLnJ`Or|yNIAM3{chtfr@#r5XxZ9BJuqBsi-HR4`8qh|Hd04Sk1yv^Rh`ehU z#80s3xl9G$8+wE?yIr^FmvFpU^Dd0p`8m4vIXblDOHJZCsHJAOk155Y5eq}O=_X>* zsu2Q_Ad-I^7M%Hel3Z@=2i94F+2`CGc^qwEm?`q3C7U?la$a$_NSPgLR$U3=%Sz}Z zD`qO{Jg6eH&7~{ zsurEI$C>XC@9+2!HC$Y1HcEBvfI-l(40{ZcidN-V$7gc3$6i|YZIAD(grlKF4Hc7n zhhDGcsi&9*3U6dd@5C=3aR@7V*B*Kjaxu%fd2G79@-lRpR0j(AIbxqtmD7K6NQ1ij z&@=WihE8WJH}`U*8Eq};yP9HB5)BkZE*8Otg{rwwTkgC`_q%Cp#dKdY)uINU@yQY2 zM@7}v9G4}Y+n~-4RF%tEcmq4jl^i;6EWx$>!?pRo-gD4Fu zpX!Yzd|Bf7VHd*B2M)6yUFEs<_xKMbX>3?cTaIjr<7wP|(+St+M?2mgd4zW!+s4CN zXf8jM?6w(W$06F3d@n)s|M2hruix*Fw;UFlm(7GYX-RzHa<{aDfL>eDR37Jc+wC@- zs^I~}nN}oOO=>JvqzH_Q8fKLLKI8a@icKZz*iy97gr!4KYr(X0vS~RalFSei8#tM! zSingFw{=6ml*)p@Iuib75K$$N{k2HBqmoavG);e7es#@&~*R6{GJQ zg34i2=S+;l^~&ev)^PYxVzeeI3%03YR#=i@fpG(p%40lTaOPF~OiumI$3J!X&QE!N zlhc%a4hzec|J6MHl`c02{y624<@~M|$<^eMOb&3dIASP8y zbX4-G${1x4&bFj7E_)jY5}gNM6NXYxlv+>4Mr?9v(CwMay1|v&&RV8g4&%6_a0{A` z4tiFSK9=|=J}S`oGBrTKjU;e2MX5>8YN|5e*g!rz5Zw(pQ5ALL@_%O;z0?wnUFMGg z&ZuVn&~h2JynT@}S`YA#7{=!BXWn*N$G!# zcuE^8*TwW}MoXU$VZmPnmUp)all_q3&k3#*kv--F0yfHPD%YVtSoAlR;S&@Zin{MwEb;fvY_!zXzhXLEQ z{CxyGMGdb4&AVaDuU7JcPxvH<`gTmQHdNvx7#Q~NY{%IUv)=S`Nii?FkNTi4snQIQNa#zq8F5^*qafJBVQSFg zlKAM;bC>LzUPmB2J}kI3F4TPnY08mc5k3^G81v_1OR%eXDH5WnAxM4vx@P#UVXZ8K zSwLY9>~n{?2y@=b2Tj=iDVv$$xYF!f4v;9PSU)tIU31YI+gF@H;^xq?%dQNJNuR^(OOt?WNVmREVnFP_I&hn9!0N?z^_x4i}@@(5(=>1VvE zGu~euVgA$q{D1uZUAAD->l1A}cE^^NUd?(^pwbA>E4%8-`gzQ^LCYToa5Q%5IX6G?M5?n3M$dE%1LvgNLoPu6#xJk4oO5o zR5lGkT~c`-j;^T#AMXL0v|$)&c9|$|ZP(+z(g`~o^C!8TP702`3>=cTK5gT3EHC#*!|q_%?^}ld zF~hwmIXpMGo+i~kr)$AHCv4H^7$$ET9>+1`$C`Aa=&u#6skoT!d7sSqx!83`)7~Iv zR9MzciyL_88}OU}<$@ROsmic}xI~K`br04znznYCIv&@xM4(c zQ!<*hJd8!qqL~j3w;y3rN^)CMZ(D*_24zi$@{LywYe|_X3u%a4#g2vrx-k5WV>=G| z)z5tzNpcT;E=6-2u5cble4XYz{dnlm(SLDmxhspVMtPX~M0cjEmHBwhs7z>pioPW?m~E+KRsK67QO>emG16D$%71w%LW_o<|wDtg8xN zrhjLa!CDS;KCKYg1muL~{SPNIsc(47xLU@Wp9KaVxH?_6GF758Jqug5ii97;IS<>*qe zUJRHO4eA6IpEdd`k6snC{zlZ#vWnf|Rx#mS!@DNuGVF1!;iz^nw^Cz>xi1^e1wLdn z!&1<@3L^riv?jJ8hl9d7_ZgSs3xVyq!#J%NL^a>HBXZ$&sG3NCPnRCkhoS@9_@{NJ zO5Pt5l$Zw-!@{ZQISyMZR(FS^z3oD4JaG~)2EV&qq=b0$+95{6-}&}wmI3? zfb}~`kP(U15#+lsmb$`eXl06HqK;rHmzv?-8hckW*_XWCkGXX!n!cjH_bC#wGs>h; zz7s8zrRDwUfp7XXi%*)NdtkJ3*q>SUm4mvB*q1KzO+gcTXr;)u8a0Q>O60aJ2%7#e zWw~~lrH1CI=z`-5nKnd0CtEunx82mkXhY~XRE0x*T`=Ek);~2|cr}i-++D={)Rg=t zukhD~)kcDrRfkLtD~ElVVbX|T?c(%nHl^sUOJWHlrttn8=268e>Mv0#C(V+d@6=x!bh7IPs}gHS29nxaf7Vt6{t5LvES0AxHZb zcb9X!KgRs`fAN3*{!Nh4v>umXL|YY9`+!3FsC$LiYuJbbUg{moh7X}7s$ATqr8+8U zA2rmHPOQ4#=l@^RnJveWWa;^f@YphPM`9yDf@Cc{Rn^@#HX~VI%oEJL9z}P$(Y%75 zY0M-WO{=GiT?<*8Gn8KNiR`330@F}@jOZn}U3xQ?3p?jl zM&W-KaX%8sPK??qdOw7$Uih3I2FyPNT;)(56xE_;xVM~?9e?e{Tn{q7H$Ee|fQJUZ z3V8i}%ky`ZDvC&J3D(`CBqZ4R0=!P~qjgL2wb&=WsEOn29{IY@bYU<>kJ0-E@9c|Z@L{BQT*?0{#oH*(k23O= zVjL;rJ2<&7c$J>;At;HBaY41Tl-)!?aM#hBiI6HG>DF!vQi?l#r5QZ4Ft0dVCOoP; z?pwpGA5auN&o?v zx1M-xP%{&lj!cAn$ozt_v_qt#xd`yZ5Z77uUW0$C zU2U`8NU&L9r*fE)+{lXdF67ZrQEVy}X~J_aWV7^0H;_*($8AOL(4sw`ztw%pS{@jN zGYNJ|Jyj_@iC>?5D&Z({DfoXG<8ttC7jV8|T)xAkK# zKNRR)LB6%r-=*Zsis>OldmUBM5{Zg>R3F*~LnCgUTZ(N3BaBPX@hUp~WUgGFQ%>ECC zW9zXTHJsQGU&4jY=6o^%=ec6{*vDU|%+@8l)R4|=HsOFYv$V64X3}F;Dw;#dI_xuR zOHR%@b_0)#q2;qAuHh|Avm-&{T`!z#bV%dQ3ot#gSf66cIVXL?*)r~+wiamc|^j!G0X(|q*ESdHA!jR6gr_I z+xIvdE7n7yCc<{PCreUhK|-?;YiCE|t@trIM*aT3{P%xZl@+Hi4cUX`tbx67?0X%% zP}4{+cB|1V@E%8Ovxpz=O5WF&XRD51`Yq2UG26nTT8}g{Y%UeP@p;mA+_sv@vZWr> z94!hqwMY3_{sD?;E8{FpX)}hSn5HxiQ+iT*oVF|e=c67MpNCvut@x9i?t_eM=ri#| z?ql4|*pFj^-#WMFnJUZjy8!FA1hWADaX=zqlgz{OEyul*xa6?}?n&LQ=W4WPkk-t#5VbU2m=ioo zFt+yfMtvy>o#}PGEZ$ z&=nphmAt`ezV!-Tmo1M%QJ7|^aUUIO?!SX+mbhJUkTvKq$D13PCS`ayu>88_YLfGt zK4w`pH1Y;g^%y6XrqrB|GCuk-kBngv#f-JQ@fl{5l5C%{{R2Gx+)-B*nIDquGA2?L z{kGwxYv3j%NEG*xc3cCY-Nj+ex>5`UjASL>(h&)6wd*(-!%=s@FJaI&+!hr@?Qw1m zRRiC28MR6HUjvWgTSM zZEKFUn$f^RWtL^&^R(66?`ndLCD?WN)+g9i>>qVZ?|d?;lbtHOn+L|8LU$f|52p4o zO-(;)scnajapQZxZ;A8HiFuCiYxiYqy~<%=FNLRkQ!z}9yVgE;DR;r1OKG4~5m74- zEJafn9B(q_sn4TL#O8@lm|FZgpc#}7v)zphXX8D$K}Ry}DDE}0Fy=Z|j>cMifwa2k*15r+*z(}H@ploMt15zY`aL~M?PK`F?zS97CwnkWVfPT?x=Ia zNr=NOU#l?(VO|UcD5X)d$1gifsnBtYe-WWG#Yl{qUCSg9zz{IcT(eBtDxR!bN}onv zLX(CwfmpRZ7oujqmPwzycq+P&4e@0}kZ4vtjqk;TJ7FjUgsNo`dR)zGO4CASX}T{N zE=kQkKR;0BKDQTr3L{Px&#C919EUVvL=)$n4Pbd06Qq{3A2|QQ!te0!OU{#&#fzLr z)0FEsmdm(dhb6oUXp+Qffk#)CMg&Ps%e1YW&t`C<*}W?1orcb|cyem7Tg$TZI3KmV zJG2~MNRBUdhphcLbeW#S`214LQ2+GL|LtFnR*K}ioOZaQd81riLM^NlXv_pXx-Xp% zy;#8S_BFS+nyWhJ=i7?01V!H09D9m`CkVrw?#AH1-r=ndjQd|gA^p^lPhu+BGZjz@ zA74HY(@}W=CvR)aszgVMXk$1&-Sg&mK4UN9t=@C_%2HI~U=Jy`iot%%vOADU+UY1n zH7UzupRX5|-K`)vL%NSW!c3CZigJxpb;>^1uPpsH71w*Ic%}4J$IVK5!#(D+A;a4* z2a4oXLtiemU5S(#Tta#kFIM}s>!(VQ$D2?k1u1|+nnb~k3)B$eo!1e z6zt}WvkTr$TP`jw58J*&tY$W)$t=^fqev{{_jBG&J^rY2mg^zGgM|+{gBJzcl@C?K zGK-ky8ol?)-p20B^Y!bTXFrDY<}LemO(r(J$P#>S3B<%?Af5}PN%OKiqA(hx8^%RU zk#|I*`L)t0X)x=8Ttb_%LP==G#7JkCn-(SE#uNFym=is+tfBX7$!3_)B{9>yVJUzg z={q;?XtS7VtErDml-u>nSWt0N8NwzfIC$g_9)l4q`x-xqIbPR}12NoenTJRGERBb` z<{z#*KHrphKUw^B%u$h({RVcg=${5IvF=SX4u92*Pg2_Bfa6KQ;!c1p3H5!>q%kZW zDL2J5t98Tpr-mvE z(aVm_b;tCRrCx8t*rdfH*Sb~W!aZgl+hnPst$T)XH#6I8dN z_o^n>hT)`#|33JC)0`MHS7<+G&}r6L$9QFEe_9Y{p_`iQrKwX6*xoms?E2%q!duz!)%iFmj{&7xRCEVTl%r=&n&vU+c$f)iN)dNhjn&8crW>pZZWA~6w?ko0z zMcs9TwxFNgV{bwKymRs&{|&CSV&5)Ex0?J@ORE)CrU*t2!LDXM_qn*vC|B08T^4T# zeBNu$cZ&G6A-Zj-uQSYR#iLcr;@?WFsM?E)=){u#T2XF0s+$A-P~p9+xQ|-LpXin? z!?zWmK5AxjP5wqGyo%v{#c~)i`rm7+&mGByV)GJ4jbiYr;#E=ebfvic(7I}8bDdHy zG=)*F8eA8a!PMu+(+KZ>{MUp154GpX9)~)tiO{yeHa^dE!%|z?fg)}#wJ}7Yr4IX? z3~SmnrubC3ALc}RRK^l3;X-TYncu|_R~?-|Q1S+CJ>=@DTjMaUv#CHrKy5UUjHRWY z?{y3kMLS9OH0gNymF3|tl2VU|JVTagY5uW2jY(IKdotGP+(f`i$S<($w9gTmgHe*p zMsoknAS65(D$mf5Jhbe_5WT1Tuzl*pquRD^w0H<4#BQ*1@~q`og9MJX`SPY{gOKh? z!glnCv3Fo`eV|)sq>le4V}Hv=U?J{s<1-P4z^Uc7F|M{ZjVy1pPplhG<-tb4T?1F4 z&!@;|SQ%<#F`cGXA!7l6IBOU#2`i(@ap-Zw7kFB0YT7KK34CTrO|zA_f)KwFk_f&Y zEB^IQr#!Mb_rC}=Q9F&Z3885Wj|0QUAZF_M>~+Od`mtU}=mEaM8u4Kp_ePcXLc+Eo zavTULlnM01I!8d%^VuuQpfOk@guqUKoe;{n&STODPF_|S;TM{mU!n3AAqa@uy%p5x zO!3RpORoAAtJiZPv2M{~B~avvbi;D*`2so9;~E=m87S|)$S9-iX;q) zp2n=cdrWkw*x%d}ZCWZ(jSACu-=Go?6)306u0;?f52e26>aV@5#!CYRZAWc=I?to% zDMm$&FgQC5O&kzb8YA}X#)HbDLrai~bWX{K^Cg%i_Z61fGp^-vI`Fu54IM+$lMrP> zHH?{`N1T@x^R+ZRv@@#ZrQtDR%Z#u|NM!66em(&Q-*7JV-cBxq#(g$s?Ylat3Jix- z8XlI-L^Dej_1>3e8LH^$`j%wd(n(&UFm4)F%AQ)-17UzKhdQAM>XySO!tW*YgbN=i z2L@Z8rCe4W^Zkb2eZ#1;Zgn!!9$M~b<#7-ysr4{*g%-(|^5}{B+4%U@5cC517+t4) zA1cm!9t#=c1~ATR)^X@sAp#!LB5)EeTu7Jh;VtG-w`qgcB7hM?)>lE>DDK!SK$yU#N$t;_aQ zm2uAb>W@=C_s2ZnuGzfIFc!R4L`6pSr0#_*LOE&IK|w$CF)E<7mbBI!q(v0_B&uU0 zB+<^gH*|pz?zCK^9Rt;%<$KKw#HfuOdki|CdH;(x+&cWOmahd&>>~k{xRP|cM^XDE z+AUj0)z+l&*LqjzD!r_-XUo79x7zf)K6&3pjX*#v&e)Ecr-!bUNyN+&?`txN9e4ALWUHwn`P2gfdG5uMV;Z|qw8-q_(9tsk4mKc+3|-SP z5`to5sOdOUicEP#HRJ-TD#h_)cv5w2nudN0>$1i6eaB(>rs~+*fX;^Wy_U?kOolbx rE_Tn{-mt{vJ%Yr;|9Z-wRlxrRD} +#include + +#if defined(PLATFORM_DESKTOP) +#define GLSL_VERSION 330 +#else // PLATFORM_ANDROID, PLATFORM_WEB +#define GLSL_VERSION 100 +#endif + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int +main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + + SetConfigFlags(FLAG_MSAA_4X_HINT); + InitWindow(800, 450, "Normal Map"); + + Camera camera = {0}; + camera.position = (Vector3){0.0f, 2.0f, -4.0f}; + camera.target = (Vector3){0.0f, 0.0f, 0.0f}; + camera.up = (Vector3){0.0f, 1.0f, 0.0f}; + camera.fovy = 45.0f; + camera.projection = CAMERA_PERSPECTIVE; + + // Load basic normal map lighting shader + Shader shader = LoadShader(TextFormat("resources/shaders/glsl%i/normalmap.vs", GLSL_VERSION), + TextFormat("resources/shaders/glsl%i/normalmap.fs", GLSL_VERSION)); + + // Get some required shader locations + shader.locs[SHADER_LOC_MAP_NORMAL] = GetShaderLocation(shader, "normalMap"); + shader.locs[SHADER_LOC_VECTOR_VIEW] = GetShaderLocation(shader, "viewPos"); + // NOTE: "matModel" location name is automatically assigned on shader loading, + // no need to get the location again if using that uniform name + // shader.locs[SHADER_LOC_MATRIX_MODEL] = GetShaderLocation(shader, "matModel"); + + // This example uses just 1 point light. + Vector3 lightPosition = {0.0f, 1.0f, 0.0f}; + int lightPosLoc = GetShaderLocation(shader, "lightPos"); + + // Load a plane model that has proper normals and tangents + Model plane = LoadModel("resources/models/plane.glb"); + + // Set the plane model's shader and texture maps + plane.materials[0].shader = shader; + plane.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = LoadTexture("resources/tiles_diffuse.png"); + plane.materials[0].maps[MATERIAL_MAP_NORMAL].texture = LoadTexture("resources/tiles_normal.png"); + + // Generate Mipmaps and use TRILINEAR filtering to help with texture aliasing + GenTextureMipmaps(&plane.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture); + GenTextureMipmaps(&plane.materials[0].maps[MATERIAL_MAP_NORMAL].texture); + + SetTextureFilter(plane.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture, TEXTURE_FILTER_TRILINEAR); + SetTextureFilter(plane.materials[0].maps[MATERIAL_MAP_NORMAL].texture, TEXTURE_FILTER_TRILINEAR); + + // Specular exponent AKA shininess of the material. + float specularExponent = 8.0f; + int specularExponentLoc = GetShaderLocation(shader, "specularExponent"); + + // Allow toggling the normal map on and off for comparison purposes + int useNormalMap = 1; + int useNormalMapLoc = GetShaderLocation(shader, "useNormalMap"); + + 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 + //---------------------------------------------------------------------------------- + + // Move the light around on the X and Z axis using WASD keys + Vector3 direction = {0}; + if (IsKeyDown(KEY_W)) direction = Vector3Add(direction, (Vector3){0.0f, 0.0f, 1.0f}); + if (IsKeyDown(KEY_S)) direction = Vector3Add(direction, (Vector3){0.0f, 0.0f, -1.0f}); + if (IsKeyDown(KEY_D)) direction = Vector3Add(direction, (Vector3){-1.0f, 0.0f, 0.0f}); + if (IsKeyDown(KEY_A)) direction = Vector3Add(direction, (Vector3){1.0f, 0.0f, 0.0f}); + + direction = Vector3Normalize(direction); + lightPosition = Vector3Add(lightPosition, Vector3Scale(direction, GetFrameTime() * 3.0f)); + + // Increase/Decrease the specular exponent(shininess) + if (IsKeyDown(KEY_UP)) specularExponent = Clamp(specularExponent + 40.0f * GetFrameTime(), 2.0f, 128.0f); + if (IsKeyDown(KEY_DOWN)) specularExponent = Clamp(specularExponent - 40.0f * GetFrameTime(), 2.0f, 128.0f); + + // Toggle normal map on and off + if (IsKeyPressed(KEY_N)) useNormalMap = !useNormalMap; + + // Spin plane model at a constant rate + plane.transform = MatrixRotateY(GetTime() * 0.5f); + + // Update shader values + float lightPos[3] = {lightPosition.x, lightPosition.y, lightPosition.z}; + SetShaderValue(shader, lightPosLoc, lightPos, SHADER_UNIFORM_VEC3); + + float camPos[3] = {camera.position.x, camera.position.y, camera.position.z}; + SetShaderValue(shader, shader.locs[SHADER_LOC_VECTOR_VIEW], camPos, SHADER_UNIFORM_VEC3); + + SetShaderValue(shader, specularExponentLoc, &specularExponent, SHADER_UNIFORM_FLOAT); + + SetShaderValue(shader, useNormalMapLoc, &useNormalMap, SHADER_UNIFORM_INT); + //-------------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + BeginMode3D(camera); + + BeginShaderMode(shader); + + DrawModel(plane, Vector3Zero(), 2.0f, WHITE); + + EndShaderMode(); + + //Draw sphere to show light position + DrawSphereWires(lightPosition, 0.2f, 8, 8, ORANGE); + + EndMode3D(); + + Color textColor = (useNormalMap) ? DARKGREEN : RED; + const char *toggleStr = (useNormalMap) ? "On" : "Off"; + DrawText(TextFormat("Use key [N] to toggle normal map: %s", toggleStr), 10, 30, 20, textColor); + + int yOffset = 24; + DrawText("Use keys [W][A][S][D] to move the light", 10, 30 + yOffset * 1, 20, BLACK); + DrawText("Use kyes [Up][Down] to change specular exponent", 10, 30 + yOffset * 2, 20, BLACK); + DrawText(TextFormat("Specular Exponent: %.2f", specularExponent), 10, 30 + yOffset * 3, 20, BLUE); + + DrawFPS(10, 10); + + EndDrawing(); + //-------------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + UnloadShader(shader); + UnloadModel(plane); + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} From 897a8fbc9ffd24be13d808e8e0b0af90a529a5a7 Mon Sep 17 00:00:00 2001 From: sir-irk Date: Tue, 8 Jul 2025 05:28:15 -0500 Subject: [PATCH 029/328] adding preview image --- examples/shaders/shader_normalmap.png | Bin 0 -> 276980 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/shaders/shader_normalmap.png diff --git a/examples/shaders/shader_normalmap.png b/examples/shaders/shader_normalmap.png new file mode 100644 index 0000000000000000000000000000000000000000..b8aa428aa9b9c0d33410b502bd7eefd5a03e3808 GIT binary patch literal 276980 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 z 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 literal 0 HcmV?d00001 From a94feef6d0534ca8c351d43d92d26cbfe3f01c79 Mon Sep 17 00:00:00 2001 From: sir-irk Date: Tue, 8 Jul 2025 05:36:39 -0500 Subject: [PATCH 030/328] update readme --- examples/README.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/examples/README.md b/examples/README.md index 7553ad113..f29362ef6 100644 --- a/examples/README.md +++ b/examples/README.md @@ -202,6 +202,7 @@ Examples using raylib shaders functionality, including shaders loading, paramete | 141 | [shaders_lightmap](shaders/shaders_lightmap.c) | shaders_lightmap | ⭐️⭐️⭐️☆ | 4.5 | 4.5 | [Jussi Viitala](https://github.com/nullstare) | | 142 | [shaders_rounded_rectangle](shaders/shaders_rounded_rectangle.c) | shaders_rounded_rectangle | ⭐️⭐️⭐️☆ | 5.5 | 5.5 | [Anstro Pleuton](https://github.com/anstropleuton) | | 143 | [shaders_view_depth](shaders/shaders_view_depth.c) | shaders_view_depth | ⭐️⭐️⭐️☆ | 5.6-dev | 5.6-dev | [Luís Almeida](https://github.com/luis605) | +| 144 | [shaders_normalmap](shaders/shaders_normalmap.c) | shaders_normalmap | ⭐️⭐️⭐️⭐️ | 5.6-dev | 5.6-dev | [Jeremy Montgomery](https://github.com/Sir-Irk) | ### category: audio @@ -209,14 +210,14 @@ Examples using raylib audio functionality, including sound/music loading and pla | ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | |----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| 144 | [audio_module_playing](audio/audio_module_playing.c) | audio_module_playing | ⭐️☆☆☆ | 1.5 | 3.5 | [Ray](https://github.com/raysan5) | -| 145 | [audio_music_stream](audio/audio_music_stream.c) | audio_music_stream | ⭐️☆☆☆ | 1.3 | 4.2 | [Ray](https://github.com/raysan5) | -| 146 | [audio_raw_stream](audio/audio_raw_stream.c) | audio_raw_stream | ⭐️⭐️⭐️☆ | 1.6 | 4.2 | [Ray](https://github.com/raysan5) | -| 147 | [audio_sound_loading](audio/audio_sound_loading.c) | audio_sound_loading | ⭐️☆☆☆ | 1.1 | 3.5 | [Ray](https://github.com/raysan5) | -| 148 | [audio_mixed_processor](audio/audio_mixed_processor.c) | audio_mixed_processor | ⭐️⭐️⭐️⭐️ | 4.2 | 4.2 | [hkc](https://github.com/hatkidchan) | -| 149 | [audio_stream_effects](audio/audio_stream_effects.c) | audio_stream_effects | ⭐️⭐️⭐️⭐️ | 4.2 | 5.0 | [Ray](https://github.com/raysan5) | -| 150 [audio_sound_multi](audio/audio_sound_multi.c) | audio_sound_multi | ⭐️⭐️☆☆ | 4.6 | 4.6 | [Jeffery Myers](https://github.com/JeffM2501) | -| 151 | [audio_sound_positioning](audio/audio_sound_positioning.c) | audio_sound_positioning | ⭐️⭐️☆☆ | 5.5 | 5.5 | [Le Juez Victor](https://github.com/Bigfoot71) | +| 145 | [audio_module_playing](audio/audio_module_playing.c) | audio_module_playing | ⭐️☆☆☆ | 1.5 | 3.5 | [Ray](https://github.com/raysan5) | +| 146 | [audio_music_stream](audio/audio_music_stream.c) | audio_music_stream | ⭐️☆☆☆ | 1.3 | 4.2 | [Ray](https://github.com/raysan5) | +| 147 | [audio_raw_stream](audio/audio_raw_stream.c) | audio_raw_stream | ⭐️⭐️⭐️☆ | 1.6 | 4.2 | [Ray](https://github.com/raysan5) | +| 148 | [audio_sound_loading](audio/audio_sound_loading.c) | audio_sound_loading | ⭐️☆☆☆ | 1.1 | 3.5 | [Ray](https://github.com/raysan5) | +| 149 | [audio_mixed_processor](audio/audio_mixed_processor.c) | audio_mixed_processor | ⭐️⭐️⭐️⭐️ | 4.2 | 4.2 | [hkc](https://github.com/hatkidchan) | +| 150 | [audio_stream_effects](audio/audio_stream_effects.c) | audio_stream_effects | ⭐️⭐️⭐️⭐️ | 4.2 | 5.0 | [Ray](https://github.com/raysan5) | +| 151 | [audio_sound_multi](audio/audio_sound_multi.c) | audio_sound_multi | ⭐️⭐️☆☆ | 4.6 | 4.6 | [Jeffery Myers](https://github.com/JeffM2501) | +| 152 | [audio_sound_positioning](audio/audio_sound_positioning.c) | audio_sound_positioning | ⭐️⭐️☆☆ | 5.5 | 5.5 | [Le Juez Victor](https://github.com/Bigfoot71) | ### category: others @@ -224,11 +225,11 @@ Ex150amples showing raylib misc functionality that does not fit in other categor | ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | |----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| 152 | [rlgl_standalone](others/rlgl_standalone.c) | rlgl_standalone | ⭐️⭐️⭐️⭐️ | 1.6 | 4.0 | [Ray](https://github.com/raysan5) | -| 153 | [rlgl_compute_shader](others/rlgl_compute_shader.c) | rlgl_compute_shader | ⭐️⭐️⭐️⭐️ | 4.0 | 4.0 | [Teddy Astie](https://github.com/tsnake41) | -| 154 | [easings_testbed](others/easings_testbed.c) | easings_testbed | ⭐️⭐️⭐️☆ | 2.5 | 3.0 | [Juan Miguel López](https://github.com/flashback-fx) | -| 155 | [raylib_opengl_interop](others/raylib_opengl_interop.c) | raylib_opengl_interop | ⭐️⭐️⭐️⭐️ | 3.8 | 4.0 | [Stephan Soller](https://github.com/arkanis) | -| 156 | [embedded_files_loading](others/embedded_files_loading.c) | embedded_files_loading | ⭐️⭐️☆☆ | 3.0 | 3.5 | [Kristian Holmgren](https://github.com/defutura) | -| 157 | [raymath_vector_angle](others/raymath_vector_angle.c) | raymath_vector_angle | ⭐️⭐️☆☆ | 1.0 | 4.6 | [Ray](https://github.com/raysan5) | +| 153 | [rlgl_standalone](others/rlgl_standalone.c) | rlgl_standalone | ⭐️⭐️⭐️⭐️ | 1.6 | 4.0 | [Ray](https://github.com/raysan5) | +| 154 | [rlgl_compute_shader](others/rlgl_compute_shader.c) | rlgl_compute_shader | ⭐️⭐️⭐️⭐️ | 4.0 | 4.0 | [Teddy Astie](https://github.com/tsnake41) | +| 155 | [easings_testbed](others/easings_testbed.c) | easings_testbed | ⭐️⭐️⭐️☆ | 2.5 | 3.0 | [Juan Miguel López](https://github.com/flashback-fx) | +| 156 | [raylib_opengl_interop](others/raylib_opengl_interop.c) | raylib_opengl_interop | ⭐️⭐️⭐️⭐️ | 3.8 | 4.0 | [Stephan Soller](https://github.com/arkanis) | +| 157 | [embedded_files_loading](others/embedded_files_loading.c) | embedded_files_loading | ⭐️⭐️☆☆ | 3.0 | 3.5 | [Kristian Holmgren](https://github.com/defutura) | +| 158 | [raymath_vector_angle](others/raymath_vector_angle.c) | raymath_vector_angle | ⭐️⭐️☆☆ | 1.0 | 4.6 | [Ray](https://github.com/raysan5) | As always contributions are welcome, feel free to send new examples! Here is an [examples template](examples_template.c) to start with! From 9a578dbce0dcee78b05afa57fd6c959323129f38 Mon Sep 17 00:00:00 2001 From: sir-irk Date: Tue, 8 Jul 2025 05:47:11 -0500 Subject: [PATCH 031/328] fix formatting --- examples/shaders/shaders_normalmap.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/shaders/shaders_normalmap.c b/examples/shaders/shaders_normalmap.c index f71093109..3e92567b0 100644 --- a/examples/shaders/shaders_normalmap.c +++ b/examples/shaders/shaders_normalmap.c @@ -30,8 +30,7 @@ //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ -int -main(void) +int main(void) { // Initialization //-------------------------------------------------------------------------------------- From 86d2db2aa921f51d41887cb49cbba0feb5a0a37d Mon Sep 17 00:00:00 2001 From: sir-irk Date: Tue, 8 Jul 2025 05:51:14 -0500 Subject: [PATCH 032/328] fix typo on UI and preview image --- examples/shaders/shader_normalmap.png | Bin 276980 -> 267835 bytes examples/shaders/shaders_normalmap.c | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/shaders/shader_normalmap.png b/examples/shaders/shader_normalmap.png index b8aa428aa9b9c0d33410b502bd7eefd5a03e3808..b2db75eeceb02020ad430ad7c017540d445f5b81 100644 GIT binary patch literal 267835 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%0AHf}Jt;7rA>8Ppiz?fT?{IObtC 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

    (^g^(7+DP21t1zYI=Ng_4bWg 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 U=I*2-CIA2c07*qoM6N<$g3RZuEC2ui literal 276980 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 z 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 diff --git a/examples/shaders/shaders_normalmap.c b/examples/shaders/shaders_normalmap.c index 3e92567b0..96cbf414a 100644 --- a/examples/shaders/shaders_normalmap.c +++ b/examples/shaders/shaders_normalmap.c @@ -149,7 +149,7 @@ int main(void) int yOffset = 24; DrawText("Use keys [W][A][S][D] to move the light", 10, 30 + yOffset * 1, 20, BLACK); - DrawText("Use kyes [Up][Down] to change specular exponent", 10, 30 + yOffset * 2, 20, BLACK); + DrawText("Use keys [Up][Down] to change specular exponent", 10, 30 + yOffset * 2, 20, BLACK); DrawText(TextFormat("Specular Exponent: %.2f", specularExponent), 10, 30 + yOffset * 3, 20, BLUE); DrawFPS(10, 10); From 32026ca78b644c07275e85c4364e99d981e88582 Mon Sep 17 00:00:00 2001 From: sir-irk Date: Tue, 8 Jul 2025 06:34:25 -0500 Subject: [PATCH 033/328] fix preview image file name --- .../{shader_normalmap.png => shaders_normalmap.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename examples/shaders/{shader_normalmap.png => shaders_normalmap.png} (100%) diff --git a/examples/shaders/shader_normalmap.png b/examples/shaders/shaders_normalmap.png similarity index 100% rename from examples/shaders/shader_normalmap.png rename to examples/shaders/shaders_normalmap.png From 8ef51850bf86424180505824f75530e92ed5d9ca Mon Sep 17 00:00:00 2001 From: wwderw <24878362+wwderw@users.noreply.github.com> Date: Tue, 8 Jul 2025 08:51:33 -0500 Subject: [PATCH 034/328] Update raudio.c Allow for the use of raudio stand alone --- src/raudio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/raudio.c b/src/raudio.c index 368a8c18a..40db999ea 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -81,7 +81,7 @@ #include "utils.h" // Required for: fopen() Android mapping #endif -#if defined(SUPPORT_MODULE_RAUDIO) +#if defined(SUPPORT_MODULE_RAUDIO) || defined(RAUDIO_STANDALONE) #if defined(_WIN32) // To avoid conflicting windows.h symbols with raylib, some flags are defined From 930890555c46c43cd55a1b5c1ee42d2042182157 Mon Sep 17 00:00:00 2001 From: sleeptightAnsiC <91839286+sleeptightAnsiC@users.noreply.github.com> Date: Thu, 10 Jul 2025 01:37:25 +0200 Subject: [PATCH 035/328] [glfw] update mappings.h using GenerateMappings.cmake I did this with the intention of fixing https://github.com/raysan5/raylib/issues/5027 but it's hard to tell if it will help in that case or not. Anyway, bumping the header with mappings should be done once in a while. I haven't found any Raylib script for doing this, so here's how I did it step-by-step with CMake rule provided by GLFW (I'm on Linux, but this should be similar on any other POSIX system): ```sh $ git clone https://github.com/raysan5/raylib.git $ cd raylib/src/external/glfw/ $ cmake -B ./build -DGLFW_BUILD_EXAMPLES=OFF -DGLFW_BUILD_TESTS=OFF -DGLFW_BUILD_DOCS=OFF -G "Unix Makefiles" $ make -C ./build update_mappings $ rm -fr ./build ``` then I checked, if any mappings were deleted (without updating) with following shell one-liner: ```sh # you must be at 'raylib/src/external/glfw/' when executing this $ for i in $(git diff ./src/mappings.h | sed -n -e 's/^-"\([0-9a-z]*\),.*$/\1/p'); do grep <./src/mappings.h "$i" > /dev/null || echo "$i"; done; ``` which gave me the following IDs: ```txt 0300000066f700000500000000000000 030000000d0f00001600000000007803 03000000efbe0000edfe000000000000 03000000786901006e70000000000000 050000005e040000e002000030110000 03000000790000000600000010010000 030000000d0f00000d00000000010000 030000000d0f0000d800000072056800 03000000c0160000dc27000001010000 030000008916000000fd000024010000 ``` I have checked all those IDs with `git log -p` against https://github.com/mdqinc/SDL_GameControllerDB and it seems that all of them were deleted by upstream (I was afraid that maybe some mappings were added manually by a Raylib contributor and then overwritten by my patch, but they weren't; All good!) --- src/external/glfw/src/mappings.h | 2107 +++++++++++++++++++++--------- 1 file changed, 1503 insertions(+), 604 deletions(-) diff --git a/src/external/glfw/src/mappings.h b/src/external/glfw/src/mappings.h index 7b0f35a26..ccba5924a 100644 --- a/src/external/glfw/src/mappings.h +++ b/src/external/glfw/src/mappings.h @@ -61,53 +61,94 @@ const char* _glfwDefaultMappings[] = { #if defined(_GLFW_WIN32) -"03000000fa2d00000100000000000000,3DRUDDER,leftx:a0,lefty:a1,rightx:a5,righty:a2,platform:Windows,", -"03000000c82d00002038000000000000,8bitdo,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", -"03000000c82d00000951000000000000,8BitDo Dogbone Modkit,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b11,platform:Windows,", -"03000000c82d000011ab000000000000,8BitDo F30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000300f00000a01000000000000,3 In 1 Conversion Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b8,x:b3,y:b0,platform:Windows,", +"03000000fa190000918d000000000000,3 In 1 Conversion Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b8,x:b3,y:b0,platform:Windows,", +"03000000fa2d00000100000000000000,3dRudder Foot Motion Controller,leftx:a0,lefty:a1,rightx:a5,righty:a2,platform:Windows,", +"03000000d0160000040d000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows,", +"03000000d0160000050d000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows,", +"03000000d0160000060d000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows,", +"03000000d0160000070d000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows,", +"03000000d0160000600a000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows,", +"03000000c82d00000031000000000000,8BitDo Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00000531000000000000,8BitDo Adapter 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00000951000000000000,8BitDo Dogbone,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a2,rightx:a3,righty:a5,start:b11,platform:Windows,", +"03000000008000000210000000000000,8BitDo F30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", +"030000003512000011ab000000000000,8BitDo F30 Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000c82d00001028000000000000,8BitDo F30 Arcade Joystick,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d000011ab000000000000,8BitDo F30 Arcade Joystick,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000801000000900000000000000,8BitDo F30 Arcade Stick,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", "03000000c82d00001038000000000000,8BitDo F30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,", "03000000c82d00000090000000000000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", -"03000000c82d00000650000000000000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Windows,", -"03000000c82d00005106000000000000,8BitDo M30 Gamepad,a:b1,b:b0,back:b10,guide:b2,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,start:b11,x:b4,y:b3,platform:Windows,", -"03000000c82d00000151000000000000,8BitDo M30 ModKit,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00006a28000000000000,8BitDo GameCube,a:b0,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b9,paddle2:b8,rightshoulder:b10,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b1,y:b4,platform:Windows,", +"03000000c82d00001251000000000000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00001151000000000000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000150000000000000,8BitDo M30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a5,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000151000000000000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a2,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00000650000000000000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00005106000000000000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,guide:b2,leftshoulder:b8,lefttrigger:b9,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00002090000000000000,8BitDo Micro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", "03000000c82d00000310000000000000,8BitDo N30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00000451000000000000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a2,rightx:a3,righty:a5,start:b11,platform:Windows,", "03000000c82d00002028000000000000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,", "03000000c82d00008010000000000000,8BitDo N30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows,", -"03000000c82d00000451000000000000,8BitDo N30 Modkit,a:b1,b:b0,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,start:b11,platform:Windows,", +"03000000c82d0000e002000000000000,8BitDo N30,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,start:b6,platform:Windows,", "03000000c82d00000190000000000000,8BitDo N30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", "03000000c82d00001590000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,", "03000000c82d00006528000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", -"03000000022000000090000000000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", -"03000000203800000900000000000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000290000000000000,8BitDo N64,+rightx:b9,+righty:b3,-rightx:b4,-righty:b8,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,platform:Windows,", +"03000000c82d00003038000000000000,8BitDo N64,+rightx:b9,+righty:b3,-rightx:b4,-righty:b8,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,platform:Windows,", +"03000000c82d00006928000000000000,8BitDo N64,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b11,platform:Windows,", +"03000000c82d00002590000000000000,8BitDo NEOGEO,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"030000003512000012ab000000000000,8BitDo NES30,a:b2,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Windows,", +"03000000c82d000012ab000000000000,8BitDo NES30,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", +"03000000022000000090000000000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000203800000900000000000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00002038000000000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000751000000000000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00000851000000000000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", "03000000c82d00000360000000000000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", -"03000000c82d00002867000000000000,8BitDo S30 Modkit,a:b0,b:b1,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b8,lefttrigger:b9,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00000361000000000000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000660000000000000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000131000000000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000231000000000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000331000000000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000431000000000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00002867000000000000,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a2,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a5,start:b10,x:b3,y:b4,platform:Windows,", "03000000c82d00000130000000000000,8BitDo SF30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,", -"03000000c82d00000060000000000000,8Bitdo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", -"03000000c82d00000061000000000000,8Bitdo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", -"03000000c82d000021ab000000000000,8BitDo SFC30,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", -"03000000102800000900000000000000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", -"03000000c82d00003028000000000000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", -"03000000c82d00000030000000000000,8BitDo SN30,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000060000000000000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000061000000000000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", +"03000000102800000900000000000000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d000021ab000000000000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00003028000000000000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", +"030000003512000020ab000000000000,8BitDo SN30,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000030000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000351000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a2,rightshoulder:b7,rightx:a3,righty:a5,start:b11,x:b4,y:b3,platform:Windows,", "03000000c82d00001290000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", "03000000c82d000020ab000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,", "03000000c82d00004028000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,", "03000000c82d00006228000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", -"03000000c82d00000351000000000000,8BitDo SN30 Modkit,a:b1,b:b0,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000021000000000000,8BitDo SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", "03000000c82d00000160000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", "03000000c82d00000161000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", -"03000000c82d00000121000000000000,8BitDo SN30 Pro for Android,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", -"03000000c82d00000260000000000000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", -"03000000c82d00000261000000000000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", -"03000000c82d00000031000000000000,8BitDo Wireless Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", -"03000000c82d00001890000000000000,8BitDo Zero 2,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000260000000000000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00000261000000000000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", +"03000000c82d00001230000000000000,8BitDo Ultimate,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b2,paddle2:b5,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00001b30000000000000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00001d30000000000000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00001530000000000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00001630000000000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00001730000000000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00001130000000000000,8BitDo Ultimate Wired,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b26,paddle1:b24,paddle2:b25,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00001330000000000000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00000121000000000000,8BitDo Xbox One SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000a00500003232000000000000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c82d00001890000000000000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,", "03000000c82d00003032000000000000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,", -"03000000a00500003232000000000000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows,", -"03000000a30c00002700000000000000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows,", -"03000000a30c00002800000000000000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows,", -"030000008f0e00001200000000000000,Acme GA-02,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows,", -"03000000c01100000355000011010000,ACRUX USB GAME PAD,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000fa190000f0ff000000000000,Acteck AGJ-3200,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", -"030000006f0e00001413000000000000,Afterglow,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000008f0e00001200000000000000,Acme GA02,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows,", +"03000000c01100000355000000000000,Acrux,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000fa190000f0ff000000000000,Acteck AGJ 3200,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000d1180000402c000000000000,ADT1,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a3,rightx:a2,righty:a5,x:b3,y:b4,platform:Windows,", +"030000006f0e00008801000000000000,Afterglow Deluxe Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "03000000341a00003608000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "030000006f0e00000263000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "030000006f0e00001101000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", @@ -115,310 +156,746 @@ const char* _glfwDefaultMappings[] = "030000006f0e00001402000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "030000006f0e00001901000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "030000006f0e00001a01000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000d62000001d57000000000000,Airflo PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00001301000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000006f0e00001302000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000006f0e00001304000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000006f0e00001413000000000000,Afterglow Xbox Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00003901000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000ab1200000103000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000ad1b000000f9000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000100000008200000000000000,Akishop Customs PS360,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000007c1800000006000000000000,Alienware Dual Compatible PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows,", "03000000491900001904000000000000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows,", "03000000710100001904000000000000,Amazon Luna Controller,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b8,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b4,rightstick:b7,rightx:a3,righty:a4,start:b6,x:b3,y:b2,platform:Windows,", -"03000000ef0500000300000000000000,AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows,", -"03000000d6200000e557000000000000,Batarang,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"0300000008100000e501000000000000,Anbernic Game Pad,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000020500000913000000000000,Anbernic RG P01,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", +"03000000373500000710000000000000,Anbernic RG P01,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000373500004610000000000000,Anbernic RG P01,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000190e00000110000000000000,Aquaplus Piece,a:b1,b:b0,back:b3,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b2,platform:Windows,", +"03000000830500000160000000000000,Arcade,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b3,x:b4,y:b4,platform:Windows,", +"03000000120c0000100e000000000000,Armor 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000490b00004406000000000000,ASCII Seamic Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows,", +"03000000869800002500000000000000,Astro C40 TR PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000a30c00002700000000000000,Astro City Mini,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows,", +"03000000a30c00002800000000000000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows,", +"03000000050b00000579000000000000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000050b00000679000000000000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000503200000110000000000000,Atari VCS Classic Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,start:b3,platform:Windows,", +"03000000503200000210000000000000,Atari VCS Modern Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows,", +"03000000380800001889000000000000,AtGames Legends Gamer Pro,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b13,lefttrigger:b14,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000008a3500000102000000000000,Backbone One,a:b4,b:b5,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b10,leftstick:b17,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b18,righttrigger:b13,rightx:a3,righty:a4,start:b15,x:b7,y:b8,platform:Windows,", +"030000008a3500000201000000000000,Backbone One,a:b4,b:b5,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b10,leftstick:b17,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b18,righttrigger:b13,rightx:a3,righty:a4,start:b15,x:b7,y:b8,platform:Windows,", +"030000008a3500000302000000000000,Backbone One,a:b4,b:b5,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b10,leftstick:b17,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b18,righttrigger:b13,rightx:a3,righty:a4,start:b15,x:b7,y:b8,platform:Windows,", +"030000008a3500000402000000000000,Backbone One,a:b4,b:b5,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b10,leftstick:b17,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b18,righttrigger:b13,rightx:a3,righty:a4,start:b15,x:b7,y:b8,platform:Windows,", +"03000000e4150000103f000000000000,Batarang,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000d6200000e557000000000000,Batarang PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "03000000c01100001352000000000000,Battalife Joystick,a:b6,b:b7,back:b2,leftshoulder:b0,leftx:a0,lefty:a1,rightshoulder:b1,start:b3,x:b4,y:b5,platform:Windows,", "030000006f0e00003201000000000000,Battlefield 4 PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000d62000002a79000000000000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000ad1b000001f9000000000000,BB 070,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000d62000002a79000000000000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000bc2000005250000000000000,Beitong G3,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b5,righttrigger:b9,rightx:a3,righty:a4,start:b15,x:b3,y:b4,platform:Windows,", +"030000000d0500000208000000000000,Belkin Nostromo N40,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows,", "03000000bc2000006012000000000000,Betop 2126F,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", -"03000000bc2000000055000000000000,Betop BFM Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000bc2000000055000000000000,Betop BFM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000790000000700000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,", +"03000000808300000300000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,", "03000000bc2000006312000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", -"03000000bc2000006321000000000000,BETOP CONTROLLER,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000bc2000006321000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", "03000000bc2000006412000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", "03000000c01100000555000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", "03000000c01100000655000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", -"03000000790000000700000000000000,Betop Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,", -"03000000808300000300000000000000,Betop Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,", +"030000006f0e00006401000000000000,BF One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows,", +"03000000300f00000202000000000000,Bigben,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a5,righty:a2,start:b7,x:b2,y:b3,platform:Windows,", +"030000006b1400000209000000000000,Bigben,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "030000006b1400000055000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", "030000006b1400000103000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows,", -"03000000120c0000210e000000000000,Brook Mars,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"0300000066f700000500000000000000,BrutalLegendTest,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows,", -"03000000d81d00000b00000000000000,BUFFALO BSGP1601 Series ,a:b5,b:b3,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b4,y:b2,platform:Windows,", +"03000000120c0000200e000000000000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c0000210e000000000000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c0000f10e000000000000,Brook PS2 Adapter,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000120c0000310c000000000000,Brook Super Converter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows,", +"03000000d81d00000b00000000000000,Buffalo BSGP1601 Series,a:b5,b:b3,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b4,y:b2,platform:Windows,", +"030000005a1c00002400000000000000,Capcom Home Arcade Controller,a:b3,b:b4,back:b7,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b6,x:b0,y:b1,platform:Windows,", +"030000005b1c00002400000000000000,Capcom Home Arcade Controller,a:b3,b:b4,back:b7,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b6,x:b0,y:b1,platform:Windows,", +"030000005b1c00002500000000000000,Capcom Home Arcade Controller,a:b3,b:b4,back:b7,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b6,x:b0,y:b1,platform:Windows,", +"030000006d04000042c2000000000000,ChillStream,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", "03000000e82000006058000000000000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", "03000000457500000401000000000000,Cobra,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"030000005e0400008e02000000000000,Controller (XBOX 360 For Windows),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", -"030000005e040000a102000000000000,Controller (Xbox 360 Wireless Receiver for Windows),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", -"030000005e040000ff02000000000000,Controller (Xbox One For Windows) - Wired,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", -"030000005e040000ea02000000000000,Controller (Xbox One For Windows) - Wireless,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000000b0400003365000000000000,Competition Pro,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Windows,", +"030000004c050000c505000000000000,CronusMax Adapter,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000d814000007cd000000000000,Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000d8140000cefa000000000000,Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", "03000000260900008888000000000000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a4,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Windows,", -"03000000a306000022f6000000000000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"030000003807000002cb000000000000,Cyborg,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000a306000022f6000000000000,Cyborg V.3 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000f806000000a3000000000000,DA Leader,a:b7,b:b6,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b0,leftstick:b8,lefttrigger:b1,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:b3,rightx:a2,righty:a3,start:b12,x:b4,y:b5,platform:Windows,", +"030000001a1c00000001000000000000,Datel Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", "03000000451300000830000000000000,Defender Game Racer X7,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", -"030000007d0400000840000000000000,Destroyer Tiltpad,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,x:b0,y:b3,platform:Windows,", -"03000000791d00000103000000000000,Dual Box WII,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", -"03000000bd12000002e0000000000000,Dual USB Vibration Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Windows,", -"030000008f0e00000910000000000000,DualShock 2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Windows,", -"030000006f0e00003001000000000000,EA SPORTS PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000791d00000103000000000000,Dual Box Wii,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000c0160000e105000000000000,Dual Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"030000004f040000070f000000000000,Dual Power,a:b8,b:b9,back:b4,dpdown:b1,dpleft:b2,dpright:b3,dpup:b0,leftshoulder:b13,leftstick:b6,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b12,rightstick:b7,righttrigger:b15,start:b5,x:b10,y:b11,platform:Windows,", +"030000004f04000012b3000000000000,Dual Power 3,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows,", +"030000004f04000020b3000000000000,Dual Trigger,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows,", +"03000000bd12000002e0000000000000,Dual Vibration Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Windows,", +"03000000ff1100003133000000000000,DualForce,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b1,platform:Windows,", +"030000006f0e00003001000000000000,EA Sports PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000fc0400000250000000000000,Easy Grip,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows,", +"03000000bc2000000091000000000000,EasySMX Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"030000006e0500000a20000000000000,Elecom DUX60 MMO,a:b2,b:b3,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b14,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b15,righttrigger:b13,rightx:a3,righty:a4,start:b20,x:b0,y:b1,platform:Windows,", "03000000b80500000410000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows,", "03000000b80500000610000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows,", +"03000095090000010000000000000000,Elecom JC-U609,a:b0,b:b1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,start:b8,x:b3,y:b4,platform:Windows,", +"0300004112000000e500000000000000,Elecom JC-U909Z,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,start:b8,x:b3,y:b4,platform:Windows,", +"03000041120000001050000000000000,Elecom JC-U911,a:b1,b:b2,back:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,start:b0,x:b4,y:b5,platform:Windows,", +"030000006e0500000520000000000000,Elecom P301U PlayStation Controller Adapter,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows,", +"03000000411200004450000000000000,Elecom U1012,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows,", +"030000006e0500000320000000000000,Elecom U3613M,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows,", +"030000006e0500000e20000000000000,Elecom U3912T,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows,", +"030000006e0500000f20000000000000,Elecom U4013S,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows,", +"030000006e0500001320000000000000,Elecom U4113,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006e0500001020000000000000,Elecom U4113S,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows,", +"030000006e0500000720000000000000,Elecom W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows,", +"030000007d0400000640000000000000,Eliminator AfterShock,a:b1,b:b2,back:b9,dpdown:+a3,dpleft:-a5,dpright:+a5,dpup:-a3,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a4,righty:a2,start:b8,x:b0,y:b3,platform:Windows,", "03000000120c0000f61c000000000000,Elite,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000430b00000300000000000000,EMS Production PS2 Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"03000000062000001801000000000000,EMS TrioLinker Plus II,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b2,y:b3,platform:Windows,", +"03000000242f000000b7000000000000,ESM 9110,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Windows,", +"03000000101c0000181c000000000000,Essential,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b4,leftx:a1,lefty:a0,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", "030000008f0e00000f31000000000000,EXEQ,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows,", -"03000000341a00000108000000000000,EXEQ RF USB Gamepad 8206,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", -"030000006f0e00008401000000000000,Faceoff Deluxe+ Audio Wired Controller for Nintendo Switch,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000006f0e00008001000000000000,Faceoff Wired Pro Controller for Nintendo Switch,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000852100000201000000000000,FF-GP1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00008500000000000000,Fighting Commander 2016 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00008400000000000000,Fighting Commander 5,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00008700000000000000,Fighting Stick mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00008800000000000000,Fighting Stick mini 4,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,platform:Windows,", -"030000000d0f00002700000000000000,FIGHTING STICK V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", -"78696e70757403000000000000000000,Fightstick TES,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Windows,", -"03000000790000002201000000000000,Game Controller for PC,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000341a00000108000000000000,EXEQ RF Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"030000006f0e00008401000000000000,Faceoff Deluxe Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00008101000000000000,Faceoff Deluxe Pro Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00008001000000000000,Faceoff Pro Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000021000000090000000000000,FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,", +"0300000011040000c600000000000000,FC801,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows,", +"03000000852100000201000000000000,FF GP1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000ad1b000028f0000000000000,Fightpad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000ad1b00002ef0000000000000,Fightpad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000ad1b000038f0000000000000,Fightpad TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows,", +"03005036852100000000000000000000,Final Fantasy XIV Online Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000f806000001a3000000000000,Firestorm,a:b9,b:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b0,leftstick:b10,lefttrigger:b1,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b11,righttrigger:b3,start:b12,x:b8,y:b4,platform:Windows,", +"03000000b50700000399000000000000,Firestorm 2,a:b2,b:b4,back:b10,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,righttrigger:b9,start:b11,x:b3,y:b5,platform:Windows,", +"03000000b50700001302000000000000,Firestorm D3,a:b0,b:b2,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,x:b1,y:b3,platform:Windows,", +"03000000b40400001024000000000000,Flydigi Apex,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", +"03000000151900004000000000000000,Flydigi Vader 2,a:b27,b:b26,back:b19,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b23,leftstick:b17,lefttrigger:b21,leftx:a0,lefty:a1,rightshoulder:b22,rightstick:b16,righttrigger:b20,rightx:a3,righty:a4,start:b18,x:b25,y:b24,platform:Windows,", +"03000000b40400001124000000000000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b14,paddle1:b4,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b2,y:b3,platform:Windows,", +"03000000b40400001224000000000000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b2,paddle1:b16,paddle2:b17,paddle3:b14,paddle4:b15,rightshoulder:b7,rightstick:b13,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"030000008305000000a0000000000000,G08XU,a:b0,b:b1,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b5,x:b2,y:b3,platform:Windows,", "0300000066f700000100000000000000,Game VIB Joystick,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows,", -"03000000260900002625000000000000,Gamecube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,lefttrigger:a4,leftx:a0,lefty:a1,righttrigger:a5,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Windows,", -"03000000790000004618000000000000,GameCube Controller Adapter,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows,", -"030000008f0e00000d31000000000000,GAMEPAD 3 TURBO,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000280400000140000000000000,GamePad Pro USB,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", -"03000000ac0500003d03000000000000,GameSir,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", -"03000000ac0500004d04000000000000,GameSir,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", -"03000000ffff00000000000000000000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", -"03000000c01100000140000000000000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"030000009b2800003200000000000000,GC/N64 to USB v3.4,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:+a2,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows,", -"030000009b2800006000000000000000,GC/N64 to USB v3.6,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:+a2,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows,", +"03000000260900002625000000000000,GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,lefttrigger:a4,leftx:a0,lefty:a1,righttrigger:a5,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Windows,", +"03000000341a000005f7000000000000,GameCube Controller,a:b2,b:b3,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b1,y:b0,platform:Windows,", +"03000000430b00000500000000000000,GameCube Controller,a:b0,b:b2,dpdown:b10,dpleft:b8,dpright:b9,dpup:b11,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a3,rightx:a5,righty:a2,start:b7,x:b1,y:b3,platform:Windows,", +"03000000790000004718000000000000,GameCube Controller,a:b1,b:b0,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows,", +"03000000790000004618000000000000,GameCube Controller Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows,", +"030000008f0e00000d31000000000000,Gamepad 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000ac0500003d03000000000000,GameSir G3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000ac0500005b05000000000000,GameSir G3w,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000ac0500002d02000000000000,GameSir G4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", +"03000000ac0500004d04000000000000,GameSir G4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000ac0500001a06000000000000,GameSir T3 2.02,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000373500009410000000000000,GameSir Tegenaria Lite,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"030000004c0e00001035000000000000,Gamester,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows,", +"030000000d0f00001110000000000000,GameStick Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", +"0300000047530000616d000000000000,GameStop,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"03000000c01100000140000000000000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000b62500000100000000000000,Gametel GT004 01,a:b3,b:b0,dpdown:b10,dpleft:b9,dpright:b8,dpup:b11,leftshoulder:b4,rightshoulder:b5,start:b7,x:b1,y:b2,platform:Windows,", +"030000008f0e00001411000000000000,Gamo2 Divaller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000120c0000a857000000000000,Gator Claw,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000c9110000f055000000000000,GC100XF,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", "030000008305000009a0000000000000,Genius,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", "030000008305000031b0000000000000,Genius Maxfire Blaze 3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", "03000000451300000010000000000000,Genius Maxfire Grandias 12,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", "030000005c1a00003330000000000000,Genius MaxFire Grandias 12V,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows,", -"03000000300f00000b01000000000000,GGE909 Recoil Pad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", -"03000000f0250000c283000000000000,Gioteck,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000300f00000b01000000000000,GGE909 Recoil,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"03000000f0250000c283000000000000,Gioteck PlayStation Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", "03000000f025000021c1000000000000,Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", -"03000000f0250000c383000000000000,Gioteck VX2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", -"03000000f0250000c483000000000000,Gioteck VX2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", -"030000007d0400000540000000000000,Gravis Eliminator GamePad Pro,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"03000000f025000031c1000000000000,Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000f0250000c383000000000000,Gioteck VX2 PlayStation Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000f0250000c483000000000000,Gioteck VX2 PlayStation Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000d11800000094000000000000,Google Stadia Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b11,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows,", +"030000004f04000026b3000000000000,GP XID,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"0300000079000000d418000000000000,GPD Win,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000c6240000025b000000000000,GPX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000007d0400000840000000000000,Gravis Destroyer Tilt,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,x:b0,y:b3,platform:Windows,", +"030000007d0400000540000000000000,Gravis Eliminator Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"03000000280400000140000000000000,Gravis GamePad Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a3,dpup:-a4,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000008f0e00000610000000000000,GreenAsia,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a5,righty:a2,start:b11,x:b3,y:b0,platform:Windows,", +"03000000ac0500006b05000000000000,GT2a,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", "03000000341a00000302000000000000,Hama Scorpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00004900000000000000,Hatsune Miku Sho Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000001008000001e1000000000000,Havit HV-G60,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b0,platform:Windows,", -"03000000d81400000862000000000000,HitBox Edition Cthulhu+,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows,", -"03000000632500002605000000000000,HJD-X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"030000000d0f00004900000000000000,Hatsune Miku Sho PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000001008000001e1000000000000,Havit HV G60,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b0,platform:Windows,", +"030000000d0f00000c00000000000000,HEXT,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000d81400000862000000000000,HitBox Edition Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows,", +"03000000632500002605000000000000,HJD X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"030000000d0f00000a00000000000000,Hori DOA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000000d0f00008500000000000000,Hori Fighting Commander 2016 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00002500000000000000,Hori Fighting Commander 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", "030000000d0f00002d00000000000000,Hori Fighting Commander 3 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00005f00000000000000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00005e00000000000000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00004000000000000000,Hori Fighting Stick Mini 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00005f00000000000000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00005e00000000000000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"030000000d0f00008400000000000000,Hori Fighting Commander 5,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00006201000000000000,Hori Fighting Commander Octa,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00006401000000000000,Hori Fighting Commander Octa,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,start:b7,x:b2,y:b3,platform:Windows,", +"030000000d0f00005100000000000000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00008600000000000000,Hori Fighting Commander Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000000d0f0000ba00000000000000,Hori Fighting Commander Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000000d0f00008800000000000000,Hori Fighting Stick mini 4 PS3,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,platform:Windows,", +"030000000d0f00008700000000000000,Hori Fighting Stick mini 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"030000000d0f00001000000000000000,Hori Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00003200000000000000,Hori Fightstick 3W,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f0000c000000000000000,Hori Fightstick 4,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000000d0f00000d00000000000000,Hori Fightstick EX2,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows,", +"030000000d0f00003701000000000000,Hori Fightstick Mini,a:b1,b:b0,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Windows,", +"030000000d0f00004000000000000000,Hori Fightstick Mini 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00002100000000000000,Hori Fightstick V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00002700000000000000,Hori Fightstick V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f0000a000000000000000,Hori Grip TAC4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b13,x:b0,y:b3,platform:Windows,", +"030000000d0f0000a500000000000000,Hori Miku Project Diva X HD PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"030000000d0f0000a600000000000000,Hori Miku Project Diva X HD PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"030000000d0f00000101000000000000,Hori Mini Hatsune Miku FT,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "030000000d0f00005400000000000000,Hori Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "030000000d0f00000900000000000000,Hori Pad 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "030000000d0f00004d00000000000000,Hori Pad A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00009200000000000000,Hori Pokken Tournament DX Pro Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00001600000000007803,HORI Real Arcade Pro EX-SE (Xbox 360),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Windows,", +"030000000d0f00003801000000000000,Hori PC Engine Mini Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,platform:Windows,", +"030000000d0f00009200000000000000,Hori Pokken Tournament DX Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00002301000000000000,Hori PS4 Controller Light,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", +"030000000d0f00001100000000000000,Hori Real Arcade Pro 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00002600000000000000,Hori Real Arcade Pro 3P,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00004b00000000000000,Hori Real Arcade Pro 3W,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00006a00000000000000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00006b00000000000000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00008a00000000000000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00008b00000000000000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00006f00000000000000,Hori Real Arcade Pro 4 VLX,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00007000000000000000,Hori Real Arcade Pro 4 VLX,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00003d00000000000000,Hori Real Arcade Pro N3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b10,leftstick:b4,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b6,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f0000ae00000000000000,Hori Real Arcade Pro N4,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000000d0f00008c00000000000000,Hori Real Arcade Pro P4,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000000d0f0000aa00000000000000,Hori Real Arcade Pro S,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f0000d800000000000000,Hori Real Arcade Pro S,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Windows,", +"030000000d0f00002200000000000000,Hori Real Arcade Pro V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00005b00000000000000,Hori Real Arcade Pro V4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00005c00000000000000,Hori Real Arcade Pro V4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f0000af00000000000000,Hori Real Arcade Pro VHS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00001b00000000000000,Hori Real Arcade Pro VX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000ad1b000002f5000000000000,Hori Real Arcade Pro VX,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b11,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Windows,", "030000000d0f00009c00000000000000,Hori TAC Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f0000c100000000000000,Horipad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00006e00000000000000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00006600000000000000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f0000c900000000000000,Hori Taiko Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00006400000000000000,Horipad 3TP,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00001300000000000000,Horipad 3W,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", "030000000d0f00005500000000000000,Horipad 4 FPS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f0000ee00000000000000,HORIPAD mini4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"03000000250900000017000000000000,HRAP2 on PS/SS/N64 Joypad to USB BOX,a:b2,b:b1,back:b9,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b8,x:b3,y:b0,platform:Windows,", -"030000008f0e00001330000000000000,HuiJia SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b9,x:b3,y:b0,platform:Windows,", -"03000000d81d00000f00000000000000,iBUFFALO BSGP1204 Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", -"03000000d81d00001000000000000000,iBUFFALO BSGP1204P Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", -"03000000830500006020000000000000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Windows,", +"030000000d0f00006e00000000000000,Horipad 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f00006600000000000000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"030000000d0f00004200000000000000,Horipad A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000ad1b000001f5000000000000,Horipad EXT2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000000d0f0000ee00000000000000,Horipad Mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f0000c100000000000000,Horipad Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000000d0f0000f600000000000000,Horipad Nintendo Switch Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"030000000d0f00000202000000000000,Horipad O Nintendo Switch 2 Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,misc2:b14,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows,", +"030000000d0f00006700000000000000,Horipad One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000000d0f00009601000000000000,Horipad Steam,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc2:b2,paddle1:b5,paddle2:b15,paddle3:b18,paddle4:b19,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"030000000d0f0000dc00000000000000,Horipad Switch,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000242e00000b20000000000000,Hyperkin Admiral N64 Controller,+rightx:b11,+righty:b13,-rightx:b8,-righty:b12,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,platform:Windows,", +"03000000242e0000ff0b000000000000,Hyperkin N64 Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,platform:Windows,", +"03000000790000004e95000000000000,Hyperkin N64 Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a5,righty:a2,start:b9,platform:Windows,", +"03000000242e00006a48000000000000,Hyperkin RetroN Sq,a:b3,b:b7,back:b5,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,leftshoulder:b0,rightshoulder:b1,start:b4,x:b2,y:b6,platform:Windows,", +"03000000242f00000a20000000000000,Hyperkin Scout,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows,", +"03000000242e00000a20000000000000,Hyperkin Scout Premium SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows,", +"03000000242e00006a38000000000000,Hyperkin Trooper 2,a:b0,b:b1,back:b4,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b3,start:b5,platform:Windows,", +"03000000f00300008d04000000000000,HyperX Clutch,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:-a2,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:+a5,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000d81d00000e00000000000000,iBuffalo AC02 Arcade Joystick,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b11,righttrigger:b3,rightx:a2,righty:a5,start:b8,x:b4,y:b5,platform:Windows,", +"03000000d81d00000f00000000000000,iBuffalo BSGP1204 Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000d81d00001000000000000000,iBuffalo BSGP1204P Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"030000005c0a00000285000000000000,iDroidCon,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b6,platform:Windows,", +"03000000696400006964000000000000,iDroidCon Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000511d00000230000000000000,iGUGU Gamecore,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b1,leftstick:b4,lefttrigger:b3,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b2,platform:Windows,", "03000000b50700001403000000000000,Impact Black,a:b2,b:b3,back:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,", -"030000006f0e00002401000000000000,INJUSTICE FightStick PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", -"03000000ac0500002c02000000000000,IPEGA,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", -"03000000491900000204000000000000,Ipega PG-9023,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", -"03000000491900000304000000000000,Ipega PG-9087 - Bluetooth Gamepad,+righty:+a5,-righty:-a4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,start:b11,x:b3,y:b4,platform:Windows,", -"030000006e0500000a20000000000000,JC-DUX60 ELECOM MMO Gamepad,a:b2,b:b3,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b14,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b15,righttrigger:b13,rightx:a3,righty:a4,start:b20,x:b0,y:b1,platform:Windows,", -"030000006e0500000520000000000000,JC-P301U,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows,", -"030000006e0500000320000000000000,JC-U3613M (DInput),a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows,", -"030000006e0500000720000000000000,JC-W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows,", +"030000006f0e00002401000000000000,Injustice Fightstick PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"03000000830500005130000000000000,InterAct ActionPad,a:b0,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows,", +"03000000ef0500000300000000000000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows,", +"03000000fd0500000230000000000000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a5,start:b11,x:b0,y:b1,platform:Windows,", +"03000000fd0500000030000000000000,Interact GoPad,a:b3,b:b4,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,x:b0,y:b1,platform:Windows,", +"03000000fd0500003902000000000000,InterAct Hammerhead,a:b3,b:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b2,lefttrigger:b8,rightshoulder:b7,rightstick:b5,righttrigger:b9,start:b10,x:b0,y:b1,platform:Windows,", +"03000000fd0500002a26000000000000,InterAct Hammerhead FX,a:b3,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b0,y:b1,platform:Windows,", +"03000000fd0500002f26000000000000,InterAct Hammerhead FX,a:b4,b:b5,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b1,y:b2,platform:Windows,", +"03000000fd0500005302000000000000,InterAct ProPad,a:b3,b:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,x:b0,y:b1,platform:Windows,", +"03000000ac0500002c02000000000000,Ipega Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000491900000204000000000000,Ipega PG9023,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000491900000304000000000000,Ipega PG9087,+righty:+a5,-righty:-a4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,start:b11,x:b3,y:b4,platform:Windows,", "030000007e0500000620000000000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Windows,", -"030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Windows,", "030000007e0500000720000000000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows,", -"030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows,", -"03000000bd12000003c0000010010000,Joypad Alpha Shock,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000bd12000003c0000000000000,JY-P70UR,a:b1,b:b0,back:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b11,righttrigger:b9,rightx:a3,righty:a2,start:b4,x:b3,y:b2,platform:Windows,", -"03000000242f00002d00000000000000,JYS Wireless Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", -"03000000242f00008a00000000000000,JYS Wireless Adapter,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows,", +"03000000250900000017000000000000,Joypad Adapter,a:b2,b:b1,back:b9,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b8,x:b3,y:b0,platform:Windows,", +"03000000bd12000003c0000000000000,Joypad Alpha Shock,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000ff1100004033000000000000,JPD FFB,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a2,start:b15,x:b3,y:b0,platform:Windows,", +"03000000242f00002d00000000000000,JYS Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000242f00008a00000000000000,JYS Adapter,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows,", +"03000000c4100000c082000000000000,KADE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000828200000180000000000000,Keio,a:b4,b:b5,back:b8,leftshoulder:b2,lefttrigger:b3,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b9,x:b0,y:b1,platform:Windows,", "03000000790000000200000000000000,King PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,", +"03000000bd12000001e0000000000000,Leadership,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"030000006f0e00000103000000000000,Logic3,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000006f0e00000104000000000000,Logic3,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000008f0e00001300000000000000,Logic3,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", "030000006d040000d1ca000000000000,Logitech ChillStream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "030000006d040000d2ca000000000000,Logitech Cordless Precision,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "030000006d04000011c2000000000000,Logitech Cordless Wingman,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b5,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b2,righttrigger:b7,rightx:a3,righty:a4,x:b4,platform:Windows,", "030000006d04000016c2000000000000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000006d04000018c2000000000000,Logitech F510 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000006d04000019c2000000000000,Logitech F710 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000006d0400001ac2000000000000,Logitech Precision Gamepad,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000006d0400001dc2000000000000,Logitech F310,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000006d04000018c2000000000000,Logitech F510,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006d0400001ec2000000000000,Logitech F510,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000006d04000019c2000000000000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006d0400001fc2000000000000,Logitech F710,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000006d0400001ac2000000000000,Logitech Precision,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000006d04000009c2000000000000,Logitech WingMan,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows,", +"030000006d0400000bc2000000000000,Logitech WingMan Action Pad,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b8,lefttrigger:a5~,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b5,righttrigger:a2~,start:b8,x:b3,y:b4,platform:Windows,", "030000006d0400000ac2000000000000,Logitech WingMan RumblePad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,rightx:a3,righty:a4,x:b3,y:b4,platform:Windows,", -"03000000380700006652000000000000,Mad Catz C.T.R.L.R,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", -"03000000380700005032000000000000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000380700005082000000000000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"03000000380700008433000000000000,Mad Catz FightStick TE S+ (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000380700008483000000000000,Mad Catz FightStick TE S+ (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"03000000380700008134000000000000,Mad Catz FightStick TE2+ PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b4,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000380700008184000000000000,Mad Catz FightStick TE2+ PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,leftstick:b10,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"03000000380700006252000000000000,Mad Catz Micro C.T.R.L.R,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700005645000000000000,Lynx,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000222200006000000000000000,Macally,a:b1,b:b2,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b33,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700003888000000000000,Mad Catz Arcade Fightstick TE S Plus PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700008532000000000000,Mad Catz Arcade Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700006352000000000000,Mad Catz CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700006652000000000000,Mad Catz CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700005032000000000000,Mad Catz Fightpad Pro PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700005082000000000000,Mad Catz Fightpad Pro PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000380700008031000000000000,Mad Catz FightStick Alpha PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000003807000038b7000000000000,Mad Catz Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows,", +"03000000380700008433000000000000,Mad Catz Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700008483000000000000,Mad Catz Fightstick TE S PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000380700008134000000000000,Mad Catz Fightstick TE2 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b4,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700008184000000000000,Mad Catz Fightstick TE2 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,leftstick:b10,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000380700006252000000000000,Mad Catz Micro CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700008232000000000000,Mad Catz PlayStation Brawlpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700008731000000000000,Mad Catz PlayStation Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000003807000056a8000000000000,Mad Catz PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700001888000000000000,Mad Catz SFIV Fightstick PS3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b6,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"03000000380700008081000000000000,Mad Catz SFV Arcade Fightstick Alpha PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000380700001847000000000000,Mad Catz Street Fighter 4 Xbox 360 FightStick,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows,", "03000000380700008034000000000000,Mad Catz TE2 PS3 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000380700008084000000000000,Mad Catz TE2 PS4 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"03000000380700008532000000000000,Madcatz Arcade Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000380700003888000000000000,Madcatz Arcade Fightstick TE S+ PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000380700001888000000000000,MadCatz SFIV FightStick PS3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b6,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", -"03000000380700008081000000000000,MADCATZ SFV Arcade FightStick Alpha PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700008084000000000000,Mad Catz TE2 PS4 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", "030000002a0600001024000000000000,Matricom,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows,", "030000009f000000adbb000000000000,MaxJoypad Virtual Controller,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", "03000000250900000128000000000000,Mayflash Arcade Stick,a:b1,b:b2,back:b8,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b5,y:b6,platform:Windows,", +"030000008f0e00001330000000000000,Mayflash Controller Adapter,a:b1,b:b2,back:b8,dpdown:h0.8,dpleft:h0.2,dpright:h0.1,dpup:h0.4,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a3~,righty:a2,start:b9,x:b0,y:b3,platform:Windows,", +"03000000242f00003700000000000000,Mayflash F101,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"03000000790000003018000000000000,Mayflash F300 Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"03000000242f00003900000000000000,Mayflash F300 Elite Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", "03000000790000004418000000000000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows,", -"03000000790000004318000000000000,Mayflash GameCube Controller Adapter,a:b1,b:b2,back:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b0,leftshoulder:b4,leftstick:b0,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b0,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows,", +"03000000790000004318000000000000,Mayflash GameCube Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows,", "03000000242f00007300000000000000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows,", "0300000079000000d218000000000000,Mayflash Magic NS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", "03000000d620000010a7000000000000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000008f0e00001030000000000000,Mayflash USB Adapter for original Sega Saturn controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b5,rightshoulder:b2,righttrigger:b7,start:b9,x:b3,y:b4,platform:Windows,", -"0300000025090000e803000000000000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:b13,dpleft:b12,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows,", -"03000000790000000018000000000000,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000790000002418000000000000,Mega Drive,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b2,start:b9,x:b3,y:b4,platform:Windows,", -"03000000380700006382000000000000,MLG GamePad PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000c62400002a89000000000000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", -"03000000c62400002b89000000000000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", -"03000000c62400001a89000000000000,MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", -"03000000c62400001b89000000000000,MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", -"03000000efbe0000edfe000000000000,Monect Virtual Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Windows,", +"03000000242f0000f500000000000000,Mayflash N64 Adapter,a:b2,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a5,start:b9,platform:Windows,", +"03000000242f0000f400000000000000,Mayflash N64 Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a5,start:b9,platform:Windows,", +"03000000790000007918000000000000,Mayflash N64 Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,righttrigger:b7,rightx:a3,righty:a2,start:b8,platform:Windows,", +"030000008f0e00001030000000000000,Mayflash Saturn Adapter,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:b7,rightshoulder:b6,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows,", +"0300000025090000e803000000000000,Mayflash Wii Classic Adapter,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:a5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows,", +"03000000790000000318000000000000,Mayflash Wii DolphinBar,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows,", +"03000000790000000018000000000000,Mayflash Wii U Pro Adapter,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000790000002418000000000000,Mega Drive Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b2,start:b9,x:b3,y:b4,platform:Windows,", +"0300000079000000ae18000000000000,Mega Drive Controller,a:b0,b:b1,back:b7,dpdown:b14,dpleft:b15,dpright:b13,dpup:b2,rightshoulder:b6,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows,", +"03000000c0160000990a000000000000,Mega Drive Controller,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,righttrigger:b2,start:b3,platform:Windows,", +"030000005e0400002800000000000000,Microsoft Dual Strike,a:b3,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,rightx:a0,righty:a1~,start:b5,x:b1,y:b0,platform:Windows,", +"030000005e0400000300000000000000,Microsoft SideWinder,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows,", +"030000005e0400000700000000000000,Microsoft SideWinder,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows,", +"030000005e0400000e00000000000000,Microsoft SideWinder Freestyle Pro,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,start:b8,x:b3,y:b4,platform:Windows,", +"030000005e0400002700000000000000,Microsoft SideWinder Plug and Play,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,righttrigger:b5,x:b2,y:b3,platform:Windows,", +"03000000280d00000202000000000000,Miller Lite Cantroller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,start:b5,x:b2,y:b3,platform:Windows,", +"03000000ad1b000023f0000000000000,MLG,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a6,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows,", +"03000000ad1b00003ef0000000000000,MLG Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows,", +"03000000380700006382000000000000,MLG PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000004523000015e0000000000000,Mobapad Chitu HD,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"03000000491900000904000000000000,Mobapad Chitu HD,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000ffff00000000000000000000,Mocute M053,a:b3,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b11,leftstick:b7,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b6,righttrigger:b4,rightx:a3,righty:a4,start:b8,x:b1,y:b0,platform:Windows,", +"03000000d6200000e589000000000000,Moga 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows,", +"03000000d62000007162000000000000,Moga Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows,", +"03000000d6200000ad0d000000000000,Moga Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000c62400002a89000000000000,Moga XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c62400002b89000000000000,Moga XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c62400001a89000000000000,Moga XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c62400001b89000000000000,Moga XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", "03000000250900006688000000000000,MP-8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", -"030000006b140000010c000000000000,NACON GC-400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", -"03000000921200004b46000000000000,NES 2-port Adapter,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b11,platform:Windows,", -"03000000790000004518000000000000,NEXILUX GAMECUBE Controller Adapter,platform:Windows,a:b1,b:b0,x:b2,y:b3,start:b9,rightshoulder:b7,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a5,righty:a2,lefttrigger:a3,righttrigger:a4,", +"03000000091200004488000000000000,MUSIA PlayStation 2 Input Display,a:b0,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b6,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b7,righttrigger:b11,rightx:a2,righty:a3,start:b5,x:b1,y:b3,platform:Windows,", +"03000000f70600000100000000000000,N64 Adaptoid,+rightx:b2,+righty:b1,-rightx:b4,-righty:b5,a:b0,b:b3,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,platform:Windows,", +"030000006b140000010c000000000000,Nacon GC 400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"030000006b1400001106000000000000,Nacon Revolution 3 PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"0300000085320000170d000000000000,Nacon Revolution 5 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"0300000085320000190d000000000000,Nacon Revolution 5 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"030000006b140000100d000000000000,Nacon Revolution Infinity PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"030000006b140000080d000000000000,Nacon Revolution Unlimited Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000bd12000001c0000000000000,Nebular,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"03000000eb0300000000000000000000,NeGcon Adapter,a:a2,b:b13,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,lefttrigger:a4,leftx:a1,righttrigger:b11,start:b3,x:a3,y:b12,platform:Windows,", +"0300000038070000efbe000000000000,NEO SE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"0300000092120000474e000000000000,NeoGeo X Arcade Stick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b3,y:b2,platform:Windows,", +"03000000921200004b46000000000000,NES 2 port Adapter,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b11,platform:Windows,", +"03000000000f00000100000000000000,NES Controller,a:b1,b:b0,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Windows,", +"03000000921200004346000000000000,NES Controller,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Windows,", +"03000000790000004518000000000000,NEXILUX GameCube Controller Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows,", "030000001008000001e5000000000000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Windows,", +"03000000050b00000045000000000000,Nexus,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Windows,", "03000000152000000182000000000000,NGDS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Windows,", -"03000000bd12000015d0000000000000,Nintendo Retrolink USB Super SNES Classic Controller,a:b2,b:b1,back:b8,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Windows,", -"030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"030000007e0500006920000000000000,Nintendo Switch 2 Pro Controller,a:b0,b:b1,back:b14,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b12,leftstick:b15,lefttrigger:b13,leftx:a0,lefty:a1~,misc1:b17,misc2:b20,paddle1:b18,paddle2:b19,rightshoulder:b4,rightstick:b7,righttrigger:b5,rightx:a2,righty:a3~,start:b6,x:b2,y:b3,platform:Windows,", +"030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", "030000000d0500000308000000000000,Nostromo N45,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Windows,", -"03000000550900001472000000000000,NVIDIA Controller v01.04,a:b11,b:b10,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b5,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b4,righttrigger:a5,rightx:a3,righty:a6,start:b3,x:b9,y:b8,platform:Windows,", -"030000004b120000014d000000000000,NYKO AIRFLO,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a3,leftstick:a0,lefttrigger:b6,rightshoulder:b5,rightstick:a2,righttrigger:b7,start:b9,x:b2,y:b3,platform:Windows,", -"03000000d620000013a7000000000000,NSW wired controller,platform:Windows,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,", -"03000000782300000a10000000000000,Onlive Wireless Controller,a:b15,b:b14,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b11,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b13,y:b12,platform:Windows,", +"030000007e0500007320000000000000,NSO GameCube Controller,a:b1,b:b3,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b13,lefttrigger:b12,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b4,rightx:a2,righty:a3~,start:b6,x:b0,y:b2,platform:Windows,", +"030000007e0500001920000000000000,NSO N64 Controller,+rightx:b8,+righty:b2,-rightx:b3,-righty:b7,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,righttrigger:b10,start:b9,platform:Windows,", +"030000007e0500001720000000000000,NSO SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b15,start:b9,x:b2,y:b3,platform:Windows,", +"03000000550900001472000000000000,NVIDIA Controller,a:b11,b:b10,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b5,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b4,righttrigger:a5,rightx:a3,righty:a6,start:b3,x:b9,y:b8,platform:Windows,", +"03000000550900001072000000000000,NVIDIA Shield,a:b9,b:b8,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b3,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b2,righttrigger:a4,rightx:a2,righty:a5,start:b0,x:b7,y:b6,platform:Windows,", +"030000005509000000b4000000000000,NVIDIA Virtual,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000120c00000288000000000000,Nyko Air Flo Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows,", +"030000004b120000014d000000000000,NYKO Airflo EX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows,", +"03000000d62000001d57000000000000,Nyko Airflo PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000791d00000900000000000000,Nyko Playpad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", +"03000000782300000a10000000000000,Onlive Controller,a:b15,b:b14,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b11,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b13,y:b12,platform:Windows,", +"030000000d0f00000401000000000000,Onyx,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000008916000001fd000000000000,Onza CE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a3,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000008916000000fd000000000000,Onza TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", "03000000d62000006d57000000000000,OPP PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "030000006b14000001a1000000000000,Orange Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows,", -"03000000362800000100000000000000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a3,righty:a4,x:b1,y:b2,platform:Windows,", -"03000000120c0000f60e000000000000,P4 Wired Gamepad,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b7,rightshoulder:b4,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows,", -"030000006f0e00000901000000000000,PDP Versus Fighting Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", -"030000008f0e00000300000000000000,Piranha xtreme,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", -"030000004c050000da0c000000000000,PlayStation Classic Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows,", -"030000004c0500003713000000000000,PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"0300000009120000072f000000000000,OrangeFox86 DreamPicoPort,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:-a2,leftx:a0,lefty:a1,righttrigger:-a5,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000362800000100000000000000,OUYA Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Windows,", +"03000000120c0000f60e000000000000,P4 Gamepad,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b7,rightshoulder:b4,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows,", +"03000000790000002201000000000000,PC Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"030000006f0e00008501000000000000,PDP Fightpad Pro GameCube Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"030000006f0e00000901000000000000,PDP PS3 Versus Fighting,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00008901000000000000,PDP Realmz Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000008f0e00004100000000000000,PlaySega,a:b1,b:b0,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b8,x:b4,y:b3,platform:Windows,", +"03000000d620000011a7000000000000,PowerA Core Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000dd62000015a7000000000000,PowerA Fusion Nintendo Switch Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000d620000012a7000000000000,PowerA Fusion Nintendo Switch Fight Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000dd62000016a7000000000000,PowerA Fusion Pro Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000d620000013a7000000000000,PowerA Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000d62000003340000000000000,PowerA OPS Pro Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000d62000002640000000000000,PowerA OPS Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", "03000000d62000006dca000000000000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"0300000062060000d570000000000000,PowerA PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000d620000014a7000000000000,PowerA Spectra Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006d04000084ca000000000000,Precision,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows,", "03000000d62000009557000000000000,Pro Elite PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000c62400001a53000000000000,Pro Ex Mini,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", "03000000d62000009f31000000000000,Pro Ex mini PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "03000000d6200000c757000000000000,Pro Ex mini PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000632500002306000000000000,PS Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows,", -"03000000e30500009605000000000000,PS to USB convert cable,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", +"03000000120c0000110e000000000000,Pro5,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", "03000000100800000100000000000000,PS1 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", "030000008f0e00007530000000000000,PS1 Controller,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b1,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "03000000100800000300000000000000,PS2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"03000000250900000088000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", +"03000000250900006888000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b6,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", "03000000250900008888000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", -"03000000666600006706000000000000,PS2 Controller,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Windows,", "030000006b1400000303000000000000,PS2 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", "030000009d0d00001330000000000000,PS2 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"03000000151a00006222000000000000,PS2 Dual Plus Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", +"03000000120a00000100000000000000,PS3 Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", +"03000000120c00001307000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000120c00001cf1000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000120c0000f90e000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000250900000118000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", +"03000000250900000218000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", "03000000250900000500000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,platform:Windows,", "030000004c0500006802000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b10,lefttrigger:a3~,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:a4~,rightx:a2,righty:a5,start:b8,x:b3,y:b0,platform:Windows,", +"030000004f1f00000800000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", "03000000632500007505000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", -"03000000888800000803000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows,", +"03000000888800000803000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b0,platform:Windows,", +"03000000888800000804000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Windows,", +"030000008f0e00000300000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows,", "030000008f0e00001431000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000003807000056a8000000000000,PS3 RF pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000100000008200000000000000,PS360+ v1.66,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:h0.4,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", -"030000004c050000a00b000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"030000004c050000cc09000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"030000004c050000e60c000000000000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"03000000ff000000cb01000000000000,PSP,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows,", -"03000000300f00000011000000000000,QanBa Arcade JoyStick 1008,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b10,x:b0,y:b3,platform:Windows,", -"03000000300f00001611000000000000,QanBa Arcade JoyStick 4018,a:b1,b:b2,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,platform:Windows,", -"03000000222c00000020000000000000,QANBA DRONE ARCADE JOYSTICK,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,x:b0,y:b3,platform:Windows,", -"03000000300f00001210000000000000,QanBa Joystick Plus,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows,", -"03000000341a00000104000000000000,QanBa Joystick Q4RAF,a:b5,b:b6,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b1,y:b2,platform:Windows,", -"03000000222c00000223000000000000,Qanba Obsidian Arcade Joystick PS3 Mode,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000222c00000023000000000000,Qanba Obsidian Arcade Joystick PS4 Mode,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000ba2200002010000000000000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b3,y:b2,platform:Windows,", +"03000000120c00000807000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c0000111e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c0000121e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c0000130e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c0000150e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c0000180e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c0000181e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c0000191e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c00001e0e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c0000a957000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c0000aa57000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c0000f21c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c0000f31c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c0000f41c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c0000f51c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120c0000f70e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000120e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000160e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"030000001a1e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"030000004c050000a00b000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"030000004c050000cc09000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"030000004c0500005f0e000000000000,PS5 Access Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"030000004c050000e60c000000000000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"030000004c050000f20d000000000000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000830500005020000000000000,PSX,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b2,y:b3,platform:Windows,", +"03000000300f00000111000000000000,Qanba 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000300f00000211000000000000,Qanba 2P,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"03000000300f00000011000000000000,Qanba Arcade Stick 1008,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b10,x:b0,y:b3,platform:Windows,", +"03000000300f00001611000000000000,Qanba Arcade Stick 4018,a:b1,b:b2,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,platform:Windows,", +"03000000222c00000025000000000000,Qanba Dragon Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000222c00000020000000000000,Qanba Drone Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000300f00001211000000000000,Qanba Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000300f00001210000000000000,Qanba Joystick Plus,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows,", +"03000000341a00000104000000000000,Qanba Joystick Q4RAF,a:b5,b:b6,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b1,y:b2,platform:Windows,", +"03000000222c00000223000000000000,Qanba Obsidian Arcade Stick PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000222c00000023000000000000,Qanba Obsidian Arcade Stick PS4,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"030000008a2400006682000000000000,R1 Mobile Controller,a:b3,b:b1,back:b7,leftx:a0,lefty:a1,start:b6,x:b4,y:b0,platform:Windows,", +"03000000086700006626000000000000,RadioShack,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows,", +"03000000ff1100004733000000000000,Ramox FPS Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b0,platform:Windows,", +"030000009b2800002300000000000000,Raphnet 3DO Adapter,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b2,start:b3,platform:Windows,", +"030000009b2800006900000000000000,Raphnet 3DO Adapter,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b2,start:b3,platform:Windows,", +"030000009b2800000800000000000000,Raphnet Dreamcast Adapter,a:b2,b:b1,dpdown:b5,dpleft:b6,dpright:b7,dpup:b4,lefttrigger:a2,leftx:a0,righttrigger:a3,righty:a1,start:b3,x:b10,y:b9,platform:Windows,", +"030000009b280000d000000000000000,Raphnet Dreamcast Adapter,a:b1,b:b0,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,lefttrigger:+a5,leftx:a0,lefty:a1,righttrigger:+a2,start:b3,x:b5,y:b4,platform:Windows,", +"030000009b2800006200000000000000,Raphnet GameCube Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows,", +"030000009b2800003200000000000000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:+a2,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows,", +"030000009b2800006000000000000000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:+a2,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows,", +"030000009b2800001800000000000000,Raphnet Jaguar Adapter,a:b2,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b10,start:b3,x:b11,y:b12,platform:Windows,", +"030000009b2800003c00000000000000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Windows,", +"030000009b2800006100000000000000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Windows,", +"030000009b2800006300000000000000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Windows,", +"030000009b2800006400000000000000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Windows,", +"030000009b2800000200000000000000,Raphnet NES Adapter,a:b7,b:b6,back:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,start:b4,platform:Windows,", +"030000009b2800004400000000000000,Raphnet PS1 and PS2 Adapter,a:b1,b:b2,back:b5,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b9,rightx:a3,righty:a4,start:b4,x:b0,y:b3,platform:Windows,", +"030000009b2800004300000000000000,Raphnet Saturn,a:b0,b:b1,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows,", +"030000009b2800000500000000000000,Raphnet Saturn Adapter 2.0,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows,", +"030000009b2800000300000000000000,Raphnet SNES Adapter,a:b0,b:b4,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows,", +"030000009b2800002600000000000000,Raphnet SNES Adapter,a:b1,b:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Windows,", +"030000009b2800002e00000000000000,Raphnet SNES Adapter,a:b1,b:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Windows,", +"030000009b2800002f00000000000000,Raphnet SNES Adapter,a:b1,b:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Windows,", +"030000009b2800005600000000000000,Raphnet SNES Adapter,a:b1,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Windows,", +"030000009b2800005700000000000000,Raphnet SNES Adapter,a:b1,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Windows,", +"030000009b2800001e00000000000000,Raphnet Vectrex Adapter,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a1,lefty:a2,x:b2,y:b3,platform:Windows,", +"030000009b2800002b00000000000000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b3,x:b0,y:b5,platform:Windows,", +"030000009b2800002c00000000000000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b3,x:b0,y:b5,platform:Windows,", +"030000009b2800008000000000000000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b3,x:b0,y:b5,platform:Windows,", +"03000000790000008f18000000000000,Rapoo Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows,", +"0300000032150000a602000000000000,Razer Huntsman V3 Pro,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b12,dpright:b13,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", "03000000321500000003000000000000,Razer Hydra,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", -"03000000321500000204000000000000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000321500000104000000000000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000f8270000bf0b000000000000,Razer Kishi,a:b6,b:b7,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b18,leftshoulder:b12,leftstick:b19,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b13,rightstick:b20,righttrigger:b15,rightx:a3,righty:a4,start:b17,x:b9,y:b10,platform:Windows,", +"03000000321500000204000000000000,Razer Panthera PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000321500000104000000000000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000321500000010000000000000,Razer Raiju,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", "03000000321500000507000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", "03000000321500000707000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", -"03000000321500000011000000000000,Razer Raion Fightpad for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000321500000710000000000000,Razer Raiju TE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000321500000a10000000000000,Razer Raiju TE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000321500000410000000000000,Razer Raiju UE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000321500000910000000000000,Razer Raiju UE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000321500000011000000000000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", "03000000321500000009000000000000,Razer Serval,+lefty:+a2,-lefty:-a1,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,leftx:a0,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", -"030000000d0f00001100000000000000,REAL ARCADE PRO.3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00006a00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00006b00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00008a00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00008b00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00007000000000000000,REAL ARCADE PRO.4 VLX,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00002200000000000000,REAL ARCADE Pro.V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00005b00000000000000,Real Arcade Pro.V4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"030000000d0f00005c00000000000000,Real Arcade Pro.V4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000790000001100000000000000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Windows,", -"03000000bd12000013d0000000000000,Retrolink USB SEGA Saturn Classic,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b5,lefttrigger:b6,rightshoulder:b2,righttrigger:b7,start:b8,x:b3,y:b4,platform:Windows,", -"0300000000f000000300000000000000,RetroUSB.com RetroPad,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Windows,", -"0300000000f00000f100000000000000,RetroUSB.com Super RetroPort,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Windows,", +"03000000921200004547000000000000,Retro Bit Sega Genesis Controller Adapter,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b6,x:b3,y:b4,platform:Windows,", +"03000000790000001100000000000000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000830500006020000000000000,Retro Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b8,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows,", +"03000000632500007805000000000000,Retro Fighters Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"0300000003040000c197000000000000,Retrode Adapter,a:b0,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows,", +"03000000bd12000013d0000000000000,Retrolink Sega Saturn Classic Controller,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b5,lefttrigger:b6,rightshoulder:b2,righttrigger:b7,start:b8,x:b3,y:b4,platform:Windows,", +"03000000bd12000015d0000000000000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Windows,", +"03000000341200000400000000000000,RetroUSB N64 RetroPort,+rightx:b8,+righty:b10,-rightx:b9,-righty:b11,a:b7,b:b6,dpdown:b2,dpleft:b1,dpright:b0,dpup:b3,leftshoulder:b13,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b12,start:b4,platform:Windows,", +"0300000000f000000300000000000000,RetroUSB RetroPad,a:b1,b:b5,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Windows,", +"0300000000f00000f100000000000000,RetroUSB Super RetroPort,a:b1,b:b5,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Windows,", +"03000000830500000960000000000000,Revenger,a:b0,b:b1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b3,x:b4,y:b5,platform:Windows,", "030000006b140000010d000000000000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"030000006b140000020d000000000000,Revolution Pro Controller 2(1/2),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000006b140000020d000000000000,Revolution Pro Controller 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", "030000006b140000130d000000000000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00001f01000000000000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000006f0e00004601000000000000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000c6240000fefa000000000000,Rock Candy Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000006f0e00008701000000000000,Rock Candy Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "030000006f0e00001e01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "030000006f0e00002801000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "030000006f0e00002f01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000004f04000003d0000000000000,run'n'drive,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b7,leftshoulder:a3,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:a4,rightstick:b11,righttrigger:b5,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000830500007030000000000000,Rockfire Space Ranger,a:b0,b:b1,back:b5,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b9,righttrigger:b8,start:b2,x:b3,y:b4,platform:Windows,", +"03000000050b0000e318000000000000,ROG Chakram,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows,", +"03000000050b0000e518000000000000,ROG Chakram,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows,", +"03000000050b00005819000000000000,ROG Chakram Core,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows,", +"03000000050b0000181a000000000000,ROG Chakram X,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows,", +"03000000050b00001a1a000000000000,ROG Chakram X,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows,", +"03000000050b00001c1a000000000000,ROG Chakram X,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows,", +"030000004f04000001d0000000000000,Rumble Force,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows,", +"030000000d0f0000ad00000000000000,RX Gamepad,a:b0,b:b4,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,rightshoulder:b6,start:b9,x:b2,y:b1,platform:Windows,", +"030000008916000000fe000000000000,Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000c6240000045d000000000000,Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000006f0e00001311000000000000,Saffun Controller,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b0,platform:Windows,", "03000000a30600001af5000000000000,Saitek Cyborg,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", -"03000000a306000023f6000000000000,Saitek Cyborg V.1 Game pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", -"03000000300f00001201000000000000,Saitek Dual Analog Pad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,", +"03000000a306000023f6000000000000,Saitek Cyborg,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000300f00001201000000000000,Saitek Dual Analog,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,", "03000000a30600000701000000000000,Saitek P220,a:b2,b:b3,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,x:b0,y:b1,platform:Windows,", -"03000000a30600000cff000000000000,Saitek P2500 Force Rumble Pad,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b0,y:b1,platform:Windows,", +"03000000a30600000cff000000000000,Saitek P2500 Force Rumble,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b0,y:b1,platform:Windows,", +"03000000a30600000d5f000000000000,Saitek P2600,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Windows,", +"03000000a30600000dff000000000000,Saitek P2600,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b8,x:b0,y:b3,platform:Windows,", "03000000a30600000c04000000000000,Saitek P2900,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows,", -"03000000300f00001001000000000000,Saitek P480 Rumble Pad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,", +"03000000a306000018f5000000000000,Saitek P3200,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000300f00001001000000000000,Saitek P480 Rumble,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,", +"03000000a30600000901000000000000,Saitek P880,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b8,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b5,rightx:a3,righty:a2,x:b0,y:b1,platform:Windows,", "03000000a30600000b04000000000000,Saitek P990,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows,", -"03000000a30600000b04000000010000,Saitek P990 Dual Analog Pad,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Windows,", -"03000000a30600002106000000000000,Saitek PS1000,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", -"03000000a306000020f6000000000000,Saitek PS2700,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", -"03000000300f00001101000000000000,Saitek Rumble Pad,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,", -"03000000730700000401000000000000,Sanwa PlayOnline Mobile,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Windows,", -"0300000000050000289b000000000000,Saturn_Adapter_2.0,a:b1,b:b2,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows,", -"030000009b2800000500000000000000,Saturn_Adapter_2.0,a:b1,b:b2,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows,", -"03000000a30c00002500000000000000,Sega Genesis Mini 3B controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,righttrigger:b5,start:b9,platform:Windows,", -"03000000a30c00002400000000000000,Sega Mega Drive Mini 6B controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows,", -"03000000341a00000208000000000000,SL-6555-SBK,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:-a4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a3,righty:a2,start:b7,x:b2,y:b3,platform:Windows,", -"03000000341a00000908000000000000,SL-6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", -"030000008f0e00000800000000000000,SpeedLink Strike FX,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000a30600002106000000000000,Saitek PS1000 PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000a306000020f6000000000000,Saitek PS2700 PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000300f00001101000000000000,Saitek Rumble,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,", +"03000000e804000000a0000000000000,Samsung EIGP20,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000c01100000252000000000000,Sanwa Easy Grip,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows,", +"03000000c01100004350000000000000,Sanwa Micro Grip P3,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,x:b3,y:b2,platform:Windows,", +"03000000411200004550000000000000,Sanwa Micro Grip Pro,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a1,righty:a2,start:b9,x:b1,y:b3,platform:Windows,", +"03000000c01100004150000000000000,Sanwa Micro Grip Pro,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows,", +"03000000c01100004450000000000000,Sanwa Online Grip,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b11,righttrigger:b9,rightx:a3,righty:a2,start:b14,x:b3,y:b4,platform:Windows,", +"03000000730700000401000000000000,Sanwa PlayOnline Mobile,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Windows,", +"03000000830500006120000000000000,Sanwa Smart Grip II,a:b0,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,x:b1,y:b3,platform:Windows,", +"03000000c01100000051000000000000,Satechi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", +"030000004f04000028b3000000000000,Score A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000952e00002577000000000000,Scuf PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000a30c00002500000000000000,Sega Genesis Mini 3B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,righttrigger:b5,start:b9,platform:Windows,", +"03000000a30c00002400000000000000,Sega Mega Drive Mini 6B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows,", +"03000000d804000086e6000000000000,Sega Multi Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:a2,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows,", +"0300000000050000289b000000000000,Sega Saturn Adapter,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows,", +"0300000000f000000800000000000000,Sega Saturn Controller,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b7,righttrigger:b3,start:b0,x:b5,y:b6,platform:Windows,", +"03000000730700000601000000000000,Sega Saturn Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows,", +"03000000b40400000a01000000000000,Sega Saturn Controller,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows,", +"030000003b07000004a1000000000000,SFX,a:b0,b:b2,back:b7,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b5,start:b8,x:b1,y:b3,platform:Windows,", +"03000000f82100001900000000000000,Shogun Bros Chameleon X1,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", +"03000000120c00001c1e000000000000,SnakeByte 4S PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"03000000140300000918000000000000,SNES Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows,", +"0300000081170000960a000000000000,SNES Controller,a:b4,b:b0,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b5,y:b1,platform:Windows,", +"03000000811700009d0a000000000000,SNES Controller,a:b0,b:b4,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows,", +"030000008b2800000300000000000000,SNES Controller,a:b0,b:b4,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows,", +"03000000921200004653000000000000,SNES Controller,a:b0,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows,", +"030000008f0e00000910000000000000,Sony DualShock 2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Windows,", +"03000000317300000100000000000000,Sony DualShock 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", +"03000000666600006706000000000000,Sony PlayStation Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Windows,", +"03000000e30500009605000000000000,Sony PlayStation Adapter,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", +"03000000fe1400002a23000000000000,Sony PlayStation Adapter,a:b0,b:b1,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,x:b2,y:b3,platform:Windows,", +"030000004c050000da0c000000000000,Sony PlayStation Classic Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows,", +"03000000632500002306000000000000,Sony PlayStation Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows,", +"03000000f0250000c183000000000000,Sony PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000d9040000160f000000000000,Sony PlayStation Controller Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"03000000ff000000cb01000000000000,Sony PlayStation Portable,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows,", +"030000004c0500003713000000000000,Sony PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,", +"03000000341a00000208000000000000,Speedlink 6555,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:-a4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a3,righty:a2,start:b7,x:b2,y:b3,platform:Windows,", +"03000000341a00000908000000000000,Speedlink 6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"03000000380700001722000000000000,Speedlink Competition Pro,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,x:b2,y:b3,platform:Windows,", +"030000008f0e00000800000000000000,Speedlink Strike FX,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", "03000000c01100000591000000000000,Speedlink Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", -"03000000d11800000094000000000000,Stadia Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b11,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows,", +"03000000de280000fc11000000000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000de280000ff11000000000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000120c0000160e000000000000,Steel Play Metaltech PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", "03000000110100001914000000000000,SteelSeries,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", "03000000381000001214000000000000,SteelSeries Free,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows,", "03000000110100003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000381000003014000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000381000003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", "03000000381000001814000000000000,SteelSeries Stratus XL,a:b0,b:b1,back:b18,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b19,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b2,y:b3,platform:Windows,", -"03000000790000001c18000000000000,STK-7024X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", -"03000000ff1100003133000000000000,SVEN X-PAD,a:b2,b:b3,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a4,start:b5,x:b0,y:b1,platform:Windows,", -"03000000d620000011a7000000000000,Switch,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000457500002211000000000000,SZMY-POWER PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000004f04000007d0000000000000,T Mini Wireless,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"030000004f0400000ab1000000000000,T.16000M,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b10,x:b2,y:b3,platform:Windows,", +"03000000380700003847000000000000,Street Fighter Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b11,start:b7,x:b2,y:b3,platform:Windows,", +"030000001f08000001e4000000000000,Super Famicom Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Windows,", +"03000000790000000418000000000000,Super Famicom Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b33,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows,", +"03000000341200001300000000000000,Super Racer,a:b2,b:b3,back:b8,leftshoulder:b5,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b7,x:b0,y:b1,platform:Windows,", +"03000000457500002211000000000000,Szmy Power PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000004f0400000ab1000000000000,T16000M,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b10,x:b2,y:b3,platform:Windows,", +"030000000d0f00007b00000000000000,TAC GEAR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000e40a00000307000000000000,Taito Egret II Mini Control Panel,a:b4,b:b2,back:b6,guide:b9,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b1,start:b7,x:b8,y:b3,platform:Windows,", +"03000000e40a00000207000000000000,Taito Egret II Mini Controller,a:b4,b:b2,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b9,rightshoulder:b0,righttrigger:b1,start:b7,x:b8,y:b3,platform:Windows,", +"03000000d814000001a0000000000000,TE Kitty,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "03000000fa1900000706000000000000,Team 5,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", "03000000b50700001203000000000000,Techmobility X6-38V,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,", +"03000000ba2200000701000000000000,Technology Innovation PS2 Adapter,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b2,platform:Windows,", +"03000000c61100001000000000000000,Tencent Xianyou Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,x:b3,y:b4,platform:Windows,", +"03000000790000001c18000000000000,TGZ Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000790000002601000000000000,TGZ Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows,", +"03000000591c00002400000000000000,THEC64 Joystick,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows,", +"03000000591c00002600000000000000,THEGamepad,a:b2,b:b1,back:b6,leftx:a0,lefty:a1,start:b7,x:b3,y:b0,platform:Windows,", "030000004f04000015b3000000000000,Thrustmaster Dual Analog 4,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows,", -"030000004f04000023b3000000000000,Thrustmaster Dual Trigger 3-in-1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", -"030000004f0400000ed0000000000000,ThrustMaster eSwap PRO Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000004f04000023b3000000000000,Thrustmaster Dual Trigger PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000004f0400000ed0000000000000,Thrustmaster eSwap Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000004f04000008d0000000000000,Thrustmaster Ferrari 150 PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", "030000004f04000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Windows,", -"030000004f04000004b3000000000000,Thrustmaster Firestorm Dual Power 3,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows,", -"03000000666600000488000000000000,TigerGame PS/PS2 Game Controller Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", +"030000004f04000004b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows,", +"030000004f04000003d0000000000000,Thrustmaster Run N Drive PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b7,leftshoulder:a3,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:a4,rightstick:b11,righttrigger:b5,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000004f04000009d0000000000000,Thrustmaster Run N Drive PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000006d04000088ca000000000000,Thunderpad,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows,", +"03000000666600000288000000000000,TigerGame PlayStation Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", +"03000000666600000488000000000000,TigerGame PlayStation Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", +"030000004f04000007d0000000000000,TMini,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000571d00002100000000000000,Tomee NES Controller Adapter,a:b1,b:b0,back:b2,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,start:b3,platform:Windows,", +"03000000571d00002000000000000000,Tomee SNES Controller Adapter,a:b0,b:b1,back:b6,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows,", "03000000d62000006000000000000000,Tournament PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000c01100000055000000000000,Tronsmart,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", "030000005f140000c501000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", "03000000b80500000210000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", "030000004f04000087b6000000000000,TWCS Throttle,dpdown:b8,dpleft:b9,dpright:b7,dpup:b6,leftstick:b5,lefttrigger:-a5,leftx:a0,lefty:a1,righttrigger:+a5,platform:Windows,", -"03000000d90400000200000000000000,TwinShock PS2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", -"030000006e0500001320000000000000,U4113,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000411200000450000000000000,Twin Shock,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a4,start:b11,x:b3,y:b0,platform:Windows,", +"03000000d90400000200000000000000,TwinShock PS2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"03000000151900005678000000000000,Uniplay U6,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", "03000000101c0000171c000000000000,uRage Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", -"03000000300f00000701000000000000,USB 4-Axis 12-Button Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", -"03000000341a00002308000000000000,USB gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", -"030000005509000000b4000000000000,USB gamepad,a:b10,b:b11,back:b5,dpdown:b1,dpleft:b2,dpright:b3,dpup:b0,guide:b14,leftshoulder:b8,leftstick:b6,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b7,righttrigger:a5,rightx:a2,righty:a3,start:b4,x:b12,y:b13,platform:Windows,", -"030000006b1400000203000000000000,USB gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", -"03000000790000000a00000000000000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,", -"03000000f0250000c183000000000000,USB gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000ff1100004133000000000000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", -"03000000632500002305000000000000,USB Vibration Joystick (BM),a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", -"03000000790000001a18000000000000,Venom,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", -"03000000790000001b18000000000000,Venom Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", -"030000006f0e00000302000000000000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", -"030000006f0e00000702000000000000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", +"030000000b0400003065000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows,", +"03000000242f00006e00000000000000,USB Controller,a:b1,b:b4,back:b10,leftshoulder:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b7,rightx:a2,righty:a5,start:b11,x:b0,y:b3,platform:Windows,", +"03000000300f00000701000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"03000000341a00002308000000000000,USB Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"03000000666600000188000000000000,USB Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,", +"030000006b1400000203000000000000,USB Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"03000000790000000a00000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,", +"03000000b404000081c6000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows,", +"03000000b50700001503000000000000,USB Controller,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b0,y:b1,platform:Windows,", +"03000000bd12000012d0000000000000,USB Controller,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows,", +"03000000ff1100004133000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"03000000632500002305000000000000,USB Vibration Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", +"03000000882800000305000000000000,V5 Game Pad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,x:b2,y:b3,platform:Windows,", +"03000000790000001a18000000000000,Venom PS4 Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"03000000790000001b18000000000000,Venom PS4 Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000006f0e00000302000000000000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", +"030000006f0e00000702000000000000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows,", "0300000034120000adbe000000000000,vJoy Device,a:b0,b:b1,back:b15,dpdown:b6,dpleft:b7,dpright:b8,dpup:b5,guide:b16,leftshoulder:b9,leftstick:b13,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b14,righttrigger:b12,rightx:a3,righty:a4,start:b4,x:b2,y:b3,platform:Windows,", +"03000000120c0000ab57000000000000,Warrior Joypad JS083,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"030000007e0500003003000000000000,Wii U Pro,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,leftshoulder:b6,leftstick:b11,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b12,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows,", +"0300000032150000030a000000000000,Wildcat,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"0300000032150000140a000000000000,Wolverine,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000002e160000efbe000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,rightshoulder:b5,righttrigger:b11,start:b7,x:b2,y:b3,platform:Windows,", +"03000000380700001647000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000380700002045000000000000,Xbox 360 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000380700002644000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a2,righty:a5,start:b8,x:b2,y:b3,platform:Windows,", +"03000000380700002647000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000003807000026b7000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000380700003647000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a7,righty:a5,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e0400001907000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e0400008e02000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e0400009102000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000ad1b000000fd000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000ad1b000001fd000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000ad1b000016f0000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000ad1b00008e02000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000c62400000053000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000c6240000fdfa000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000380700002847000000000000,Xbox 360 Fightpad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e040000a102000000000000,Xbox 360 Wireless Receiver,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", "030000005e0400000a0b000000000000,Xbox Adaptive Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000120c00000a88000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a2,righty:a4,start:b6,x:b2,y:b3,platform:Windows,", +"03000000120c00001088000000000000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2~,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5~,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000002a0600002000000000000000,Xbox Controller,a:b0,b:b1,back:b13,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftshoulder:b5,leftstick:b14,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b15,righttrigger:b7,rightx:a2,righty:a5,start:b12,x:b2,y:b3,platform:Windows,", +"03000000380700001645000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows,", +"03000000380700002645000000000000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000380700003645000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows,", +"03000000380700008645000000000000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e0400000202000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows,", +"030000005e0400008502000000000000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e0400008702000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b7,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows,", +"030000005e0400008902000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b10,leftstick:b8,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b9,righttrigger:b4,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows,", +"030000005e0400000c0b000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e040000d102000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e040000dd02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e040000e002000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e040000e302000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e040000ea02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e040000fd02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000005e040000ff02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000006f0e0000a802000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"030000006f0e0000c802000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", +"03000000c62400003a54000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", "030000005e040000130b000000000000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", "03000000341a00000608000000000000,Xeox,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", -"03000000450c00002043000000000000,XEOX Gamepad SL-6556-BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", -"03000000ac0500005b05000000000000,Xiaoji Gamesir-G3w,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,", -"03000000172700004431000000000000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a7,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", -"03000000786901006e70000000000000,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", -"03000000790000004f18000000000000,ZD-T Android,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", -"03000000120c0000101e000000000000,ZEROPLUS P4 Wired Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", +"03000000450c00002043000000000000,Xeox SL6556BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,", +"030000006f0e00000300000000000000,XGear,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a5,righty:a2,start:b9,x:b3,y:b0,platform:Windows,", +"03000000e0ff00000201000000000000,Xiaomi Black Shark (L),back:b0,dpdown:b11,dpleft:b9,dpright:b10,dpup:b8,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,platform:Windows,", +"03000000172700004431000000000000,Xiaomi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a7,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", +"03000000172700003350000000000000,Xiaomi XMGP01YM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000bc2000005060000000000000,Xiaomi XMGP01YM,+lefty:+a2,+righty:+a5,-lefty:-a1,-righty:-a4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,start:b11,x:b3,y:b4,platform:Windows,", +"030000007d0400000340000000000000,Xterminator Digital Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:-a4,lefttrigger:+a4,leftx:a0,lefty:a1,paddle1:b7,paddle2:b6,rightshoulder:b5,rightstick:b9,righttrigger:b2,rightx:a3,righty:a5,start:b8,x:b3,y:b4,platform:Windows,", +"030000002c3600000100000000000000,Yawman Arrow,+rightx:h0.2,+righty:h0.4,-rightx:h0.8,-righty:h0.1,a:b4,b:b5,back:b6,dpdown:b15,dpleft:b14,dpright:b16,dpup:b13,leftshoulder:b10,leftstick:b0,lefttrigger:-a4,leftx:a0,lefty:a1,paddle1:b11,paddle2:b12,rightshoulder:b8,rightstick:b9,righttrigger:+a4,start:b3,x:b1,y:b2,platform:Windows,", +"03000000790000004f18000000000000,ZDT Android Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,", +"03000000120c00000500000000000000,Zeroplus Adapter,a:b2,b:b1,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b0,righttrigger:b5,rightx:a3,righty:a2,start:b8,x:b3,y:b0,platform:Windows,", +"03000000120c0000101e000000000000,Zeroplus P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,", "78696e70757401000000000000000000,XInput Gamepad (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", "78696e70757402000000000000000000,XInput Wheel (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", "78696e70757403000000000000000000,XInput Arcade Stick (GLFW),platform:Windows,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", @@ -429,423 +906,740 @@ const char* _glfwDefaultMappings[] = #endif // _GLFW_WIN32 #if defined(_GLFW_COCOA) -"030000008f0e00000300000009010000,2In1 USB Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", +"030000008f0e00000300000009010000,2 In 1 Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000c82d00000031000001000000,8BitDo Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00000531000000020000,8BitDo Adapter 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00000951000000010000,8BitDo Dogbone,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Mac OS X,", "03000000c82d00000090000001000000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", "03000000c82d00001038000000010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", -"03000000c82d00000650000001000000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Mac OS X,", -"03000000c82d00005106000000010000,8BitDo M30 Gamepad,a:b1,b:b0,back:b10,guide:b2,leftshoulder:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00006a28000000010000,8BitDo GameCube,a:b0,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b9,paddle2:b8,rightshoulder:b10,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b1,y:b4,platform:Mac OS X,", +"03000000c82d00001251000000010000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00001251000000020000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00001151000000010000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00001151000000020000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000a30c00002400000006020000,8BitDo M30,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,guide:b9,leftshoulder:b6,lefttrigger:b5,rightshoulder:b4,righttrigger:b7,start:b8,x:b3,y:b0,platform:Mac OS X,", +"03000000c82d00000151000000010000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00000650000001000000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00005106000000010000,8BitDo M30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b2,leftshoulder:b6,lefttrigger:a5,rightshoulder:b7,righttrigger:a4,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00002090000000010000,8BitDo Micro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000451000000010000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Mac OS X,", "03000000c82d00001590000001000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", "03000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", -"030000003512000012ab000001000000,8BitDo NES30 Gamepad,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", -"03000000022000000090000001000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", -"03000000203800000900000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", -"03000000c82d00000190000001000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", -"03000000102800000900000000000000,8Bitdo SFC30 GamePad Joystick,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", -"03000000c82d00001290000001000000,8BitDo SN30 Gamepad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", -"03000000c82d00004028000000010000,8Bitdo SN30 GamePad,a:b1,b:b0,x:b4,y:b3,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,dpup:-a1,dpdown:+a1,dpleft:-a0,dpright:+a0,platform:Mac OS X,", +"03000000c82d00006928000000010000,8BitDo N64,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,platform:Mac OS X,", +"03000000c82d00002590000000010000,8BitDo NEOGEO,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00002590000001000000,8BitDo NEOGEO,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00002690000000010000,8BitDo NEOGEO,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b10,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000003512000012ab000001000000,8BitDo NES30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d000012ab000001000000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00002028000000010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000022000000090000001000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000203800000900000000010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000190000001000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000751000000010000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00000851000000010000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00000660000000010000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000660000000020000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000131000001000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000231000001000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000331000001000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000431000001000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00002867000000010000,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00003028000000010000,8Bitdo SFC30 Gamepad,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000102800000900000000000000,8BitDo SFC30 Joystick,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000351000000010000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00001290000001000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00004028000000010000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", "03000000c82d00000160000001000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", "03000000c82d00000161000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Mac OS X,", -"03000000c82d00000260000001000000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", -"03000000c82d00000261000000010000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", -"03000000c82d00000031000001000000,8BitDo Wireless Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", -"03000000c82d00001890000001000000,8BitDo Zero 2,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000260000001000000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00000261000000010000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000c82d00001230000000010000,8BitDo Ultimate,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b2,paddle2:b5,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00001b30000001000000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00001d30000001000000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00001530000001000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00001630000001000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00001730000001000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00001130000000020000,8BitDo Ultimate Wired,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b24,paddle2:b25,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00001330000000020000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00001330000001000000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000a00500003232000008010000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000a00500003232000009010000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c82d00001890000001000000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", "03000000c82d00003032000000010000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a31,start:b11,x:b4,y:b3,platform:Mac OS X,", -"03000000a00500003232000008010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X,", -"03000000a00500003232000009010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X,", -"03000000a30c00002700000003030000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", -"03000000a30c00002800000003030000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", -"03000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,", -"03000000ef0500000300000000020000,AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Mac OS X,", "03000000491900001904000001010000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Mac OS X,", "03000000710100001904000000010000,Amazon Luna Controller,a:b0,b:b1,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Mac OS X,", +"0300000008100000e501000019040000,Anbernic Handheld,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a4,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000373500004610000001000000,Anbernic RG P01,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000a30c00002700000003030000,Astro City Mini,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000a30c00002800000003030000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,", +"03000000050b00000579000000010000,ASUS ROG Kunai 3,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b42,paddle1:b9,paddle2:b11,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,platform:Mac OS X,", +"03000000050b00000679000000010000,ASUS ROG Kunai 3,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b23,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,platform:Mac OS X,", +"03000000503200000110000045010000,Atari VCS Classic,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b3,start:b2,platform:Mac OS X,", +"03000000503200000110000047010000,Atari VCS Classic Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b3,start:b2,platform:Mac OS X,", +"03000000503200000210000047010000,Atari VCS Modern Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a2,righty:a3,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000008a3500000102000000010000,Backbone One,a:b0,b:b1,back:b16,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b17,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b15,x:b2,y:b3,platform:Mac OS X,", +"030000008a3500000201000000010000,Backbone One,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000008a3500000202000000010000,Backbone One,a:b0,b:b1,back:b16,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b17,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b15,x:b2,y:b3,platform:Mac OS X,", +"030000008a3500000402000000010000,Backbone One,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000008a3500000302000000010000,Backbone One PlayStation Edition,a:b0,b:b1,back:b16,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b17,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b15,x:b2,y:b3,platform:Mac OS X,", "03000000c62400001a89000000010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,platform:Mac OS X,", "03000000c62400001b89000000010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", -"03000000d62000002a79000000010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"03000000120c0000200e000000010000,Brook Mars,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"03000000120c0000210e000000010000,Brook Mars,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000d62000002a79000000010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"03000000120c0000200e000000010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"03000000120c0000210e000000010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", "030000008305000031b0000000000000,Cideko AK08b,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000d8140000cecf000000000000,Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", "03000000260900008888000088020000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Mac OS X,", -"03000000a306000022f6000001030000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000a306000022f6000001030000,Cyborg V3 Rumble Pad PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000791d00000103000009010000,Dual Box Wii Classic Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", +"030000006e0500000720000010020000,Elecom JC-W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Mac OS X,", +"030000006f0e00008401000003010000,Faceoff Deluxe Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b13,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000151900004000000001000000,Flydigi Vader 2,a:b14,b:b15,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b2,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Mac OS X,", +"03000000b40400001124000001040000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b14,paddle1:b2,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000b40400001224000003030000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b2,paddle1:b16,paddle2:b17,paddle3:b14,paddle4:b15,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", "03000000790000004618000000010000,GameCube Controller Adapter,a:b4,b:b0,dpdown:b56,dpleft:b60,dpright:b52,dpup:b48,lefttrigger:a12,leftx:a0,lefty:a4,rightshoulder:b28,righttrigger:a16,rightx:a20,righty:a8,start:b36,x:b8,y:b12,platform:Mac OS X,", -"03000000ad1b000001f9000000000000,Gamestop BB-070 X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"03000000ac0500001a06000002020000,GameSir T3 2.02,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000373500000411000023000000,GameSir X4A Xbox Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000ad1b000001f9000000000000,Gamestop BB070 X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", "0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,", -"03000000c01100000140000000010000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000006f0e00000102000000000000,GameStop Xbox 360 Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", -"030000007d0400000540000001010000,Gravis Eliminator GamePad Pro,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", -"03000000280400000140000000020000,Gravis Gamepad Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000008f0e00000300000007010000,GreenAsia Inc. USB Joystick,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Mac OS X,", +"03000000c01100000140000000010000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"030000006f0e00000102000000000000,GameStop Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"03000000ff1100003133000007010000,GameWare PC Control Pad,a:b2,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b0,platform:Mac OS X,", +"03000000d11800000094000000010000,Google Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X,", +"030000007d0400000540000001010000,Gravis Eliminator Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000280400000140000000020000,Gravis GamePad Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000008f0e00000300000007010000,GreenAsia Joystick,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Mac OS X,", "030000000d0f00002d00000000100000,Hori Fighting Commander 3 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000000d0f00005f00000000010000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000000d0f00005e00000000010000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000000d0f00005f00000000000000,HORI Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000000d0f00005e00000000000000,HORI Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000000d0f00004d00000000000000,HORI Gem Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000000d0f00009200000000010000,Hori Pokken Tournament DX Pro Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000000d0f00006e00000000010000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000000d0f00006600000000010000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000000d0f00006600000000000000,HORIPAD FPS PLUS 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000000d0f0000ee00000000010000,HORIPAD mini4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000008f0e00001330000011010000,HuiJia SNES Controller,a:b4,b:b2,back:b16,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b12,rightshoulder:b14,start:b18,x:b6,y:b0,platform:Mac OS X,", -"03000000830500006020000000010000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Mac OS X,", -"03000000830500006020000000000000,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Mac OS X,", +"030000000d0f00005f00000000000000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00005f00000000010000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00005e00000000000000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00005e00000000010000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00008400000000010000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00008500000000010000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000341a00000302000014010000,Hori Fighting Stick Mini,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00008800000000010000,Hori Fighting Stick mini 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00008700000000010000,Hori Fighting Stick mini 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00004d00000000000000,Hori Gem Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00003801000008010000,Hori PC Engine Mini Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,platform:Mac OS X,", +"030000000d0f00009200000000010000,Hori Pokken Tournament DX Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f0000aa00000072050000,Hori Real Arcade Pro for Nintendo Switch,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", +"030000000d0f00000002000017010000,Hori Split Pad Fit,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00000002000015010000,Hori Switch Split Pad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00006e00000000010000,Horipad 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00006600000000010000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f00006600000000000000,Horipad FPS Plus 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f0000ee00000000010000,Horipad Mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f0000c100000072050000,Horipad Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000242e0000ff0b000000010000,Hyperkin N64 Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,platform:Mac OS X,", +"03000000790000004e95000000010000,Hyperkin N64 Controller Adapter,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a5,righty:a2,start:b9,platform:Mac OS X,", +"03000000830500006020000000000000,iBuffalo Super Famicom Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Mac OS X,", +"03000000ef0500000300000000020000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Mac OS X,", +"03000000fd0500000030000010010000,Interact GoPad,a:b3,b:b4,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,x:b0,y:b1,platform:Mac OS X,", "030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Mac OS X,", "030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Mac OS X,", -"03000000242f00002d00000007010000,JYS Wireless Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000242f00002d00000007010000,JYS Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", +"030000006d04000019c2000000000000,Logitech Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", "030000006d04000016c2000000020000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", "030000006d04000016c2000000030000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", "030000006d04000016c2000014040000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000006d04000016c2000000000000,Logitech F310 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000006d04000018c2000000000000,Logitech F510 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000006d04000016c2000000000000,Logitech F310,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000006d04000018c2000000000000,Logitech F510,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", "030000006d04000019c2000005030000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000006d0400001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", -"030000006d04000018c2000000010000,Logitech RumblePad 2 USB,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3~,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000006d04000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", -"03000000380700005032000000010000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", -"03000000380700005082000000010000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"03000000380700008433000000010000,Mad Catz FightStick TE S+ (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", -"03000000380700008483000000010000,Mad Catz FightStick TE S+ (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"03000000790000000600000007010000,Marvo GT-004,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Mac OS X,", +"030000006d0400001fc2000000000000,Logitech F710,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000006d04000018c2000000010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3~,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000380700005032000000010000,Mad Catz PS3 Fightpad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000380700008433000000010000,Mad Catz PS3 Fightstick TE S Plus,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000380700005082000000010000,Mad Catz PS4 Fightpad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"03000000380700008483000000010000,Mad Catz PS4 Fightstick TE S Plus,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"0300000049190000020400001b010000,Manba One,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b22,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000790000000600000007010000,Marvo GT-004,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", +"030000008f0e00001330000011010000,Mayflash Controller Adapter,a:b2,b:b4,back:b16,dpdown:h0.8,dpleft:h0.2,dpright:h0.1,dpup:h0.4,leftshoulder:b12,lefttrigger:b16,leftx:a0,lefty:a2,rightshoulder:b14,rightx:a6~,righty:a4,start:b18,x:b0,y:b6,platform:Mac OS X,", +"03000000790000004318000000010000,Mayflash GameCube Adapter,a:b4,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a12,leftx:a0,lefty:a4,rightshoulder:b28,righttrigger:a16,rightx:a20,righty:a8,start:b36,x:b8,y:b12,platform:Mac OS X,", "03000000790000004418000000010000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Mac OS X,", "03000000242f00007300000000020000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Mac OS X,", "0300000079000000d218000026010000,Mayflash Magic NS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", "03000000d620000010a7000003010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", -"0300000025090000e803000000000000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:b13,dpleft:b12,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Mac OS X,", -"03000000790000000018000000010000,Mayflash Wii U Pro Controller Adapter,a:b4,b:b8,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b16,leftstick:b40,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,rightstick:b44,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b12,platform:Mac OS X,", -"03000000790000000018000000000000,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b4,b:b8,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b16,leftstick:b40,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,rightstick:b44,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b12,platform:Mac OS X,", -"03000000d8140000cecf000000000000,MC Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000005e0400002700000001010000,Microsoft SideWinder Plug & Play Game Pad,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,leftx:a0,lefty:a1,righttrigger:b5,x:b2,y:b3,platform:Mac OS X,", -"03000000d62000007162000001000000,Moga Pro 2 HID,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Mac OS X,", -"03000000c62400002a89000000010000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", -"03000000c62400002b89000000010000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", -"03000000632500007505000000020000,NEOGEO mini PAD Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b2,y:b3,platform:Mac OS X,", +"030000008f0e00001030000011010000,Mayflash Saturn Adapter,a:b0,b:b2,dpdown:b28,dpleft:b30,dpright:b26,dpup:b24,leftshoulder:b10,lefttrigger:b14,rightshoulder:b12,righttrigger:b4,start:b18,x:b6,y:b8,platform:Mac OS X,", +"0300000025090000e803000000000000,Mayflash Wii Classic Adapter,a:b1,b:b0,back:b8,dpdown:b13,dpleft:b12,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Mac OS X,", +"03000000790000000318000000010000,Mayflash Wii DolphinBar,a:b8,b:b12,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b44,leftshoulder:b16,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b4,platform:Mac OS X,", +"03000000790000000018000000000000,Mayflash Wii U Pro Adapter,a:b4,b:b8,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b16,leftstick:b40,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,rightstick:b44,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b12,platform:Mac OS X,", +"03000000790000000018000000010000,Mayflash Wii U Pro Adapter,a:b4,b:b8,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b16,leftstick:b40,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,rightstick:b44,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b12,platform:Mac OS X,", +"030000005e0400002800000002010000,Microsoft Dual Strike,a:b3,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,rightx:a0,righty:a1~,start:b5,x:b1,y:b0,platform:Mac OS X,", +"030000005e0400000300000006010000,Microsoft SideWinder,a:b0,b:b1,back:b9,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Mac OS X,", +"030000005e0400000700000006010000,Microsoft SideWinder,a:b0,b:b1,back:b8,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Mac OS X,", +"030000005e0400002700000001010000,Microsoft SideWinder Plug and Play,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,righttrigger:b5,x:b2,y:b3,platform:Mac OS X,", +"030000004523000015e0000072050000,Mobapad Chitu HD,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,", +"03000000d62000007162000001000000,Moga Pro 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Mac OS X,", +"03000000c62400002a89000000010000,MOGA XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c62400002b89000000010000,MOGA XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000853200008906000000010000,Nacon Revolution X Unlimited,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000632500007505000000020000,NeoGeo mini PAD Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b2,y:b3,platform:Mac OS X,", "03000000921200004b46000003020000,NES 2-port Adapter,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b11,platform:Mac OS X,", "030000001008000001e5000006010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Mac OS X,", -"03000000d620000011a7000000020000,Nintendo Switch Core (Plus) Wired Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", -"03000000d620000011a7000010050000,Nintendo Switch PowerA Wired Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000007e0500006920000001010000,Nintendo Switch 2 Pro Controller,a:b0,b:b1,back:b14,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b12,leftstick:b15,lefttrigger:b13,leftx:a0,lefty:a1~,misc1:b17,misc2:b20,paddle1:b18,paddle2:b19,rightshoulder:b4,rightstick:b7,righttrigger:b5,rightx:a2,righty:a3~,start:b6,x:b2,y:b3,platform:Mac OS X,", "030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,", "030000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,", -"03000000550900001472000025050000,NVIDIA Controller v01.04,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Mac OS X,", -"030000006f0e00000901000002010000,PDP Versus Fighting Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000008f0e00000300000000000000,Piranha xtreme,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Mac OS X,", -"030000004c050000da0c000000010000,Playstation Classic Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", -"030000004c0500003713000000010000,PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000007e0500000920000010020000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:Mac OS X,", +"050000007e05000009200000ff070000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:Mac OS X,", +"030000007e0500007320000001010000,NSO GameCube Controller,a:b1,b:b3,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b13,lefttrigger:b12,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b4,rightx:a2,righty:a3~,start:b6,x:b0,y:b2,platform:Mac OS X,", +"030000007e0500001920000001000000,NSO N64 Controller,+rightx:b8,+righty:b7,-rightx:b3,-righty:b2,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,righttrigger:b10,start:b9,platform:Mac OS X,", +"030000007e0500001720000001000000,NSO SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b15,start:b9,x:b2,y:b3,platform:Mac OS X,", +"03000000550900001472000025050000,NVIDIA Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Mac OS X,", +"030000004b120000014d000000010000,Nyko Airflo EX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Mac OS X,", +"0300000009120000072f000000010000,OrangeFox86 DreamPicoPort,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a2,leftx:a0,lefty:a1,righttrigger:a5,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000006f0e00000901000002010000,PDP PS3 Versus Fighting,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000008f0e00000300000000000000,Piranha Xtreme PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000d620000011a7000000020000,PowerA Core Plus Gamecube Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,", +"03000000d620000011a7000010050000,PowerA Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", "03000000d62000006dca000000010000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", "03000000100800000300000006010000,PS2 Adapter,a:b2,b:b1,back:b8,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", "030000004c0500006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X,", "030000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X,", -"030000004c050000a00b000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"050000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000004c0500006802000072050000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X,", +"030000004c050000a00b000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"030000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"0300004b4c0500005f0e000000010000,PS5 Access Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"030000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"030000004c050000f20d000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"050000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"050000004c050000f20d000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"030000005e040000e002000001000000,PXN P30 Pro Mobile,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Mac OS X,", +"03000000222c00000225000000010000,Qanba Dragon Arcade Joystick PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000222c00000020000000010000,Qanba Drone Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000009b2800005600000020020000,Raphnet SNES Adapter,a:b1,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Mac OS X,", +"030000009b2800008000000022020000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b3,x:b0,y:b5,platform:Mac OS X,", "030000008916000000fd000000000000,Razer Onza TE,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", -"03000000321500000204000000010000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", -"03000000321500000104000000010000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"03000000321500000010000000010000,Razer RAIJU,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000321500000204000000010000,Razer Panthera PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000321500000104000000010000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"03000000321500000010000000010000,Razer Raiju,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", "03000000321500000507000001010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", -"03000000321500000011000000010000,Razer Raion Fightpad for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000321500000011000000010000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", "03000000321500000009000000020000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X,", "030000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X,", "0300000032150000030a000000000000,Razer Wildcat,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", -"03000000790000001100000000000000,Retrolink Classic Controller,a:b2,b:b1,back:b8,leftshoulder:b4,leftx:a3,lefty:a4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000632500008005000000010000,Redgear,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000632500002305000000010000,Redragon Saturn,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000921200004547000000020000,Retro Bit Sega Genesis Controller Adapter,a:b0,b:b2,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,lefttrigger:b14,rightshoulder:b10,righttrigger:b4,start:b12,x:b6,y:b8,platform:Mac OS X,", +"03000000790000001100000000000000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000790000001100000005010000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b4,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000830500006020000000010000,Retro Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b8,righttrigger:b9,start:b7,x:b2,y:b3,platform:Mac OS X,", +"0300000003040000c197000000000000,Retrode Adapter,a:b0,b:b4,back:b2,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,leftshoulder:b6,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Mac OS X,", "03000000790000001100000006010000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000341200000400000000000000,RetroUSB N64 RetroPort,+rightx:b8,+righty:b10,-rightx:b9,-righty:b11,a:b7,b:b6,dpdown:b2,dpleft:b1,dpright:b0,dpup:b3,leftshoulder:b13,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b12,start:b4,platform:Mac OS X,", "030000006b140000010d000000010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", "030000006b140000130d000000010000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"03000000c6240000fefa000000000000,Rock Candy Gamepad for PS3,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", -"03000000730700000401000000010000,Sanwa PlayOnline Mobile,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Mac OS X,", +"030000004c0500006802000002100000,Rii RK707,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b2,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b3,righttrigger:b9,rightx:a2,righty:a3,start:b1,x:b15,y:b12,platform:Mac OS X,", +"030000006f0e00008701000005010000,Rock Candy Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000c6240000fefa000000000000,Rock Candy PS3,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"03000000e804000000a000001b010000,Samsung EIGP20,a:b1,b:b3,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b11,leftx:a1,lefty:a3,rightshoulder:b12,rightx:a4,righty:a5,start:b16,x:b7,y:b9,platform:Mac OS X,", +"03000000730700000401000000010000,Sanwa PlayOnline Mobile,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Mac OS X,", +"03000000a30c00002500000006020000,Sega Genesis Mini 3B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,righttrigger:b5,start:b9,platform:Mac OS X,", "03000000811700007e05000000000000,Sega Saturn,a:b2,b:b4,dpdown:b16,dpleft:b15,dpright:b14,dpup:b17,leftshoulder:b8,lefttrigger:a5,leftx:a0,lefty:a2,rightshoulder:b9,righttrigger:a4,start:b13,x:b0,y:b6,platform:Mac OS X,", -"03000000b40400000a01000000000000,Sega Saturn USB Gamepad,a:b0,b:b1,back:b5,guide:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Mac OS X,", -"030000003512000021ab000000000000,SFC30 Joystick,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", +"03000000b40400000a01000000000000,Sega Saturn,a:b0,b:b1,back:b5,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b2,leftshoulder:b6,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Mac OS X,", +"030000003512000021ab000000000000,SFC30 Joystick,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,", "0300000000f00000f100000000000000,SNES RetroPort,a:b2,b:b3,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b5,rightshoulder:b7,start:b6,x:b0,y:b1,platform:Mac OS X,", -"030000004c050000e60c000000010000,Sony DualSense,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000004c050000cc09000000000000,Sony DualShock 4 V2,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000004c050000a00b000000000000,Sony DualShock 4 Wireless Adaptor,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"03000000d11800000094000000010000,Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X,", +"030000004c050000a00b000000000000,Sony DualShock 4 Adapter,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"030000004c050000cc09000000000000,Sony DualShock 4 V2,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"03000000666600006706000088020000,Sony PlayStation Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Mac OS X,", +"030000004c050000da0c000000010000,Sony PlayStation Classic Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", +"030000004c0500003713000000010000,Sony PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Mac OS X,", "030000005e0400008e02000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", -"03000000110100002014000000000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b12,x:b2,y:b3,platform:Mac OS X,", +"03000000110100002014000000000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X,", "03000000110100002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X,", "03000000381000002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X,", +"05000000484944204465766963650000,SteelSeries Nimbus Plus,a:b0,b:b1,back:b15,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b16,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b14,x:b2,y:b3,platform:Mac OS X,", "050000004e696d6275732b0000000000,SteelSeries Nimbus Plus,a:b0,b:b1,back:b15,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b16,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b14,x:b2,y:b3,platform:Mac OS X,", +"03000000381000003014000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"03000000381000003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", "03000000110100001714000000000000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b12,x:b2,y:b3,platform:Mac OS X,", "03000000110100001714000020010000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b12,x:b2,y:b3,platform:Mac OS X,", -"03000000457500002211000000010000,SZMY-POWER PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000000d0f0000f600000000010000,Switch Hori Pad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,", +"03000000457500002211000000010000,SZMY Power PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000e40a00000307000001000000,Taito Egret II Mini Control Panel,a:b4,b:b2,back:b6,guide:b9,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b1,start:b7,x:b8,y:b3,platform:Mac OS X,", +"03000000e40a00000207000001000000,Taito Egret II Mini Controller,a:b4,b:b2,back:b6,guide:b9,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b1,start:b7,x:b8,y:b3,platform:Mac OS X,", +"03000000790000001c18000000010000,TGZ Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000790000001c18000003100000,TGZ Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000591c00002400000021000000,THEC64 Joystick,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Mac OS X,", +"03000000591c00002600000021000000,THEGamepad,a:b2,b:b1,back:b6,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Mac OS X,", "030000004f04000015b3000000000000,Thrustmaster Dual Analog 3.2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Mac OS X,", -"030000004f0400000ed0000000020000,ThrustMaster eSwap PRO Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000004f0400000ed0000000020000,Thrustmaster eSwap Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", "030000004f04000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Mac OS X,", -"03000000bd12000015d0000000000000,Tomee SNES USB Controller,a:b2,b:b1,back:b8,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", -"03000000bd12000015d0000000010000,Tomee SNES USB Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000571d00002100000021000000,Tomee NES Controller Adapter,a:b1,b:b0,back:b2,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,start:b3,platform:Mac OS X,", +"03000000bd12000015d0000000010000,Tomee Retro Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000bd12000015d0000000000000,Tomee SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000571d00002000000021000000,Tomee SNES Controller Adapter,a:b0,b:b1,back:b6,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Mac OS X,", +"030000005f140000c501000000020000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", "03000000100800000100000000000000,Twin USB Joystick,a:b4,b:b2,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b12,leftstick:b20,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b14,rightstick:b22,righttrigger:b10,rightx:a6,righty:a4,start:b18,x:b6,y:b0,platform:Mac OS X,", -"030000006f0e00000302000025040000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", -"030000006f0e00000702000003060000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,", -"03000000791d00000103000009010000,Wii Classic Controller,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,", +"03000000632500002605000000010000,Uberwith Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000151900005678000010010000,Uniplay U6,a:b3,b:b6,back:b25,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b17,leftstick:b31,lefttrigger:b21,leftx:a1,lefty:a3,rightshoulder:b19,rightstick:b33,righttrigger:b23,rightx:a4,righty:a5,start:b27,x:b11,y:b13,platform:Mac OS X,", +"030000006f0e00000302000025040000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", +"030000006f0e00000702000003060000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X,", "050000005769696d6f74652028303000,Wii Remote,a:b4,b:b5,back:b7,dpdown:b3,dpleft:b0,dpright:b1,dpup:b2,guide:b8,leftshoulder:b11,lefttrigger:b12,leftx:a0,lefty:a1,start:b6,x:b10,y:b9,platform:Mac OS X,", "050000005769696d6f74652028313800,Wii U Pro Controller,a:b16,b:b15,back:b7,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b8,leftshoulder:b19,leftstick:b23,lefttrigger:b21,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b24,righttrigger:b22,rightx:a2,righty:a3,start:b6,x:b18,y:b17,platform:Mac OS X,", -"030000005e0400008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", -"030000006f0e00000104000000000000,Xbox 360 Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", -"03000000c6240000045d000000000000,Xbox 360 Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000005e0400008e02000000000000,Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000005e0400008e02000010010000,Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4~,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000006f0e00000104000000000000,Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"03000000c6240000045d000000000000,Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", "030000005e0400000a0b000000000000,Xbox Adaptive Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", -"030000005e040000050b000003090000,Xbox Elite Wireless Controller Series 2,a:b0,b:b1,back:b31,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b53,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", -"03000000c62400003a54000000000000,Xbox One PowerA Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", -"030000005e040000d102000000000000,Xbox One Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", -"030000005e040000dd02000000000000,Xbox One Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", -"030000005e040000e302000000000000,Xbox One Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000005e040000050b000003090000,Xbox Elite Controller Series 2,a:b0,b:b1,back:b31,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b53,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000005e040000130b000011050000,Xbox One Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000005e040000200b000011050000,Xbox One Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000005e040000200b000013050000,Xbox One Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000005e040000200b000015050000,Xbox One Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000005e040000d102000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000005e040000dd02000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000005e040000e002000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Mac OS X,", +"030000005e040000e002000003090000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Mac OS X,", +"030000005e040000e302000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000005e040000ea02000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", +"030000005e040000fd02000003090000,Xbox One Controller,a:b0,b:b1,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000c62400003a54000000000000,Xbox One PowerA Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", "030000005e040000130b000001050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", "030000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", -"030000005e040000e002000000000000,Xbox Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Mac OS X,", -"030000005e040000e002000003090000,Xbox Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Mac OS X,", -"030000005e040000ea02000000000000,Xbox Wireless Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", -"030000005e040000fd02000003090000,Xbox Wireless Controller,a:b0,b:b1,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", -"03000000172700004431000029010000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Mac OS X,", -"03000000120c0000100e000000010000,ZEROPLUS P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", -"03000000120c0000101e000000010000,ZEROPLUS P4 Wired Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"030000005e040000130b000009050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000005e040000130b000013050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000005e040000130b000015050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000005e040000130b000007050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000005e040000130b000017050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000005e040000130b000022050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000005e040000220b000017050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000172700004431000029010000,XiaoMi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Mac OS X,", +"03000000120c0000100e000000010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", +"03000000120c0000101e000000010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,", #endif // _GLFW_COCOA #if defined(GLFW_BUILD_LINUX_JOYSTICK) +"03000000c82d00000031000011010000,8BitDo Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c82d00000631000000010000,8BitDo Adapter 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c82d00000951000000010000,8BitDo Dogbone,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Linux,", +"03000000021000000090000011010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", "03000000c82d00000090000011010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", -"05000000c82d00001038000000010000,8Bitdo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00001038000000010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00006a28000000010000,8BitDo GameCube,a:b0,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b9,paddle2:b8,rightshoulder:b10,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b1,y:b4,platform:Linux,", +"03000000c82d00001251000011010000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00001251000000010000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00001151000011010000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00001151000000010000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00000151000000010000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c82d00000650000011010000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", "05000000c82d00005106000000010000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c82d00000a20000000020000,8BitDo M30 Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c82d00002090000011010000,8BitDo Micro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00002090000000010000,8BitDo Micro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00000451000000010000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Linux,", "03000000c82d00001590000011010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", "05000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00006928000011010000,8BitDo N64,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,platform:Linux,", +"05000000c82d00006928000000010000,8BitDo N64,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,platform:Linux,", +"05000000c82d00002590000001000000,8BitDo NEOGEO,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000008000000210000011010000,8BitDo NES30,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", "03000000c82d00000310000011010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b9,righttrigger:b8,start:b11,x:b3,y:b4,platform:Linux,", "05000000c82d00008010000000010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b9,righttrigger:b8,start:b11,x:b3,y:b4,platform:Linux,", -"03000000022000000090000011010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", -"05000000203800000900000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", -"05000000c82d00002038000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", -"03000000c82d00000190000011010000,8Bitdo NES30 Pro 8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000022000000090000011010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00000190000011010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000203800000900000000010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00002038000000010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00000751000000010000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:a8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000c82d00000851000000010000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:a8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c82d00000660000011010000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00001030000011010000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00000660000000010000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00000020000000000000,8BitDo Pro 2 for Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"06000000c82d00000020000006010000,8BitDo Pro 2 for Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c82d00000131000011010000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00000231000011010000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00000331000011010000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00000431000011010000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00002867000000010000,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b3,y:b4,platform:Linux,", +"03000000c82d00000060000011010000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", "05000000c82d00000060000000010000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", -"05000000c82d00000061000000010000,8Bitdo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", -"03000000c82d000021ab000010010000,8BitDo SFC30,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,", -"030000003512000012ab000010010000,8Bitdo SFC30 GamePad,a:b2,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Linux,", -"05000000102800000900000000010000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,", -"05000000c82d00003028000000010000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00000061000000010000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"030000003512000012ab000010010000,8BitDo SFC30,a:b2,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Linux,", +"030000003512000021ab000010010000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d000021ab000010010000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,", +"05000000102800000900000000010000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00003028000000010000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00000351000000010000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", "03000000c82d00000160000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux,", "03000000c82d00000160000011010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", "03000000c82d00000161000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux,", "03000000c82d00001290000011010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux,", "05000000c82d00000161000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", "05000000c82d00006228000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", -"03000000c82d00000260000011010000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", -"05000000c82d00000261000000010000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", -"05000000202800000900000000010000,8BitDo SNES30 Gamepad,a:b1,b:b0,back:b10,dpdown:b122,dpleft:b119,dpright:b120,dpup:b117,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,", -"03000000c82d00000031000011010000,8BitDo Wireless Adapter (DInput),a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"030000005e0400008e02000020010000,8BitDo Wireless Adapter (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"03000000c82d00001890000011010000,8BitDo Zero 2,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00000260000011010000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00000261000000010000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"05000000202800000900000000010000,8BitDo SNES30,a:b1,b:b0,back:b10,dpdown:b122,dpleft:b119,dpright:b120,dpup:b117,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,", +"05000000c82d00001230000000010000,8BitDo Ultimate,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c82d00000a31000014010000,8BitDo Ultimate 2C,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c82d00001d30000011010000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000c82d00001b30000001000000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c82d00001530000011010000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c82d00001630000011010000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c82d00001730000011010000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c82d00001130000011010000,8BitDo Ultimate Wired,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b24,paddle2:b25,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c82d00000631000010010000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c82d00000631000014010000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c82d00000760000011010000,8BitDo Ultimate Wireless,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", +"03000000c82d00001230000011010000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b2,paddle2:b5,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c82d00001330000011010000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c82d00000121000011010000,8BitDo Xbox One SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000c82d00000121000000010000,8BitDo Xbox One SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000a00500003232000001000000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux,", +"05000000a00500003232000008010000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c82d00001890000011010000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,", "05000000c82d00003032000000010000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,", -"050000005e040000e002000030110000,8BitDo Zero 2 (XInput),a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux,", -"05000000a00500003232000001000000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux,", -"05000000a00500003232000008010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux,", -"03000000c01100000355000011010000,ACRUX USB GAME PAD,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"030000006f0e00001302000000010000,Afterglow,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000006f0e00003901000020060000,Afterglow Controller for Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c01100000355000011010000,Acrux Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006f0e00008801000011010000,Afterglow Deluxe Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", "030000006f0e00003901000000430000,Afterglow Prismatic Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000006f0e00003901000013020000,Afterglow Prismatic Wired Controller 048-007-NA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"03000000100000008200000011010000,Akishop Customs PS360+ v1.66,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", -"030000007c1800000006000010010000,Alienware Dual Compatible Game Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Linux,", -"05000000491900000204000021000000,Amazon Fire Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b17,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b12,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"030000006f0e00003901000013020000,Afterglow Prismatic Controller 048-007-NA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e00001302000000010000,Afterglow Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e00003901000020060000,Afterglow Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000100000008200000011010000,Akishop Customs PS360,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"030000007c1800000006000010010000,Alienware Dual Compatible Game PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Linux,", +"05000000491900000204000021000000,Amazon Fire Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b17,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b12,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", "03000000491900001904000011010000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Linux,", "05000000710100001904000000010000,Amazon Luna Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux,", +"0300000008100000e501000001010000,Anbernic Handheld,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a4,start:b11,x:b3,y:b4,platform:Linux,", +"03000000020500000913000010010000,Anbernic RG P01,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000373500000710000010010000,Anbernic RG P01,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000373500004610000001000000,Anbernic RG P01,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000190e00000110000010010000,Aquaplus Piece,a:b1,b:b0,back:b3,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b2,platform:Linux,", "03000000790000003018000011010000,Arcade Fightstick F300,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", -"03000000a30c00002700000011010000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,", +"03000000a30c00002700000011010000,Astro City Mini,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,", "03000000a30c00002800000011010000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,", "05000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Linux,", "05000000050b00000045000040000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Linux,", -"03000000503200000110000000000000,Atari Classic Controller,a:b0,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,x:b1,platform:Linux,", -"05000000503200000110000000000000,Atari Classic Controller,a:b0,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,x:b1,platform:Linux,", -"03000000503200000210000000000000,Atari Game Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux,", -"05000000503200000210000000000000,Atari Game Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux,", -"03000000120c00000500000010010000,AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Linux,", -"03000000ef0500000300000000010000,AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Linux,", -"03000000c62400001b89000011010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"03000000d62000002a79000011010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"03000000c21100000791000011010000,Be1 GC101 Controller 1.03 mode,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"03000000c31100000791000011010000,Be1 GC101 GAMEPAD 1.03 mode,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"030000005e0400008e02000003030000,Be1 GC101 Xbox 360 Controller mode,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"05000000bc2000000055000001000000,BETOP AX1 BFM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"03000000666600006706000000010000,boom PSX to PC Converter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Linux,", -"03000000120c0000200e000011010000,Brook Mars,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"03000000120c0000210e000011010000,Brook Mars,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000050b00000579000011010000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b36,paddle1:b52,paddle2:b53,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000050b00000679000000010000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b21,paddle1:b22,paddle2:b23,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000503200000110000000000000,Atari VCS Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux,", +"03000000503200000110000011010000,Atari VCS Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux,", +"05000000503200000110000000000000,Atari VCS Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux,", +"05000000503200000110000044010000,Atari VCS Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux,", +"05000000503200000110000046010000,Atari VCS Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux,", +"03000000503200000210000000000000,Atari VCS Modern Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a2,righty:a3,start:b8,x:b2,y:b3,platform:Linux,", +"03000000503200000210000011010000,Atari VCS Modern Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux,", +"05000000503200000210000000000000,Atari VCS Modern Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux,", +"05000000503200000210000045010000,Atari VCS Modern Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux,", +"05000000503200000210000046010000,Atari VCS Modern Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux,", +"05000000503200000210000047010000,Atari VCS Modern Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:-a4,rightx:a2,righty:a3,start:b8,x:b2,y:b3,platform:Linux,", +"030000008a3500000201000011010000,Backbone One,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"030000008a3500000202000011010000,Backbone One,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"030000008a3500000302000011010000,Backbone One,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"030000008a3500000402000011010000,Backbone One,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c62400001b89000011010000,BDA MOGA XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000d62000002a79000011010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"03000000c21100000791000011010000,Be1 GC101 Controller 1.03,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"03000000c31100000791000011010000,Be1 GC101 Controller 1.03,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"030000005e0400008e02000003030000,Be1 GC101 Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000bc2000004d50000011010000,Beitong A1T2 BFM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000bc2000000055000001000000,Betop AX1 BFM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000bc2000006412000011010000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b30,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"030000006b1400000209000011010000,Bigben,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000120c0000300e000011010000,Brook Audio Fighting Board PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000120c0000310e000011010000,Brook Audio Fighting Board PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"03000000120c0000200e000011010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"03000000120c0000210e000011010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", "03000000120c0000f70e000011010000,Brook Universal Fighting Board,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", -"03000000ffff0000ffff000000010000,Chinese-made Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux,", +"03000000d81d00000b00000010010000,Buffalo BSGP1601,a:b5,b:b3,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b8,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b9,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b4,y:b2,platform:Linux,", "03000000e82000006058000001010000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"03000000af1e00002400000010010000,Clockwork Pi DevTerm,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b9,x:b3,y:b0,platform:Linux,", "030000000b0400003365000000010000,Competition Pro,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Linux,", "03000000260900008888000000010000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Linux,", -"03000000a306000022f6000011010000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux,", -"03000000b40400000a01000000010000,CYPRESS USB Gamepad,a:b0,b:b1,back:b5,guide:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Linux,", -"03000000790000000600000010010000,DragonRise Inc. Generic USB Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Linux,", -"030000004f04000004b3000010010000,Dual Power 2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux,", +"03000000a306000022f6000011010000,Cyborg V3 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux,", +"030000005e0400008e02000002010000,Data Frog S80,a:b1,b:b0,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux,", +"03000000791d00000103000010010000,Dual Box Wii Classic Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", "030000006f0e00003001000001010000,EA Sports PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"03000000341a000005f7000010010000,GameCube {HuiJia USB box},a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Linux,", +"03000000c11100000191000011010000,EasySMX,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"03000000242f00009100000000010000,EasySMX ESM-9101,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006e0500000320000010010000,Elecom U3613M,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Linux,", +"030000006e0500000720000010010000,Elecom W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Linux,", +"030000007d0400000640000010010000,Eliminator AfterShock,a:b1,b:b2,back:b9,dpdown:+a3,dpleft:-a5,dpright:+a5,dpup:-a3,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a4,righty:a2,start:b8,x:b0,y:b3,platform:Linux,", +"03000000430b00000300000000010000,EMS Production PS2 Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a5,righty:a2,start:b9,x:b3,y:b0,platform:Linux,", +"030000006f0e00008401000011010000,Faceoff Deluxe Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006f0e00008101000011010000,Faceoff Deluxe Pro Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006f0e00008001000011010000,Faceoff Pro Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000852100000201000010010000,FF GP1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"05000000b40400001224000001010000,Flydigi APEX 4,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b4,leftstick:b10,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b20,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"03000000b40400001124000011010000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b14,paddle1:b2,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000b40400001224000011010000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b2,paddle1:b16,paddle2:b17,paddle3:b14,paddle4:b15,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000151900004000000001000000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b14,paddle1:b2,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"030000007e0500003703000000000000,GameCube Adapter,a:b0,b:b1,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux,", +"19000000030000000300000002030000,GameForce Controller,a:b1,b:b0,back:b8,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,guide:b16,leftshoulder:b4,leftstick:b14,lefttrigger:b6,leftx:a1,lefty:a0,rightshoulder:b5,rightstick:b15,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux,", +"03000000ac0500005b05000010010000,GameSir G3w,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", "03000000bc2000000055000011010000,GameSir G3w,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000558500001b06000010010000,GameSir G4 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000ac0500002d0200001b010000,GameSir G4s,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b33,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000ac0500007a05000011010000,GameSir G5,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b16,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000373500009710000001020000,GameSir Kaleid Flux,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000ac0500001a06000011010000,GameSir T3 2.02,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000bc2000005656000011010000,GameSir T4w,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000373500009410000010010000,GameSir Tegenaria Lite,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", "0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", "030000006f0e00000104000000010000,Gamestop Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000008f0e00000800000010010000,Gasia Co. Ltd PS(R) Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"030000006f0e00001304000000010000,Generic X-Box pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000008f0e00000800000010010000,Gasia PlayStation Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", "03000000451300000010000010010000,Genius Maxfire Grandias 12,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", -"03000000f0250000c183000010010000,Goodbetterbest Ltd USB Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000f0250000c283000010010000,Gioteck VX2 PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"190000004b4800000010000000010000,GO-Advance Controller,a:b1,b:b0,back:b10,dpdown:b7,dpleft:b8,dpright:b9,dpup:b6,leftshoulder:b4,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b13,start:b15,x:b2,y:b3,platform:Linux,", +"190000004b4800000010000001010000,GO-Advance Controller,a:b1,b:b0,back:b12,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftshoulder:b4,leftstick:b13,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b16,righttrigger:b15,start:b17,x:b2,y:b3,platform:Linux,", +"190000004b4800000011000000010000,GO-Super Gamepad,a:b0,b:b1,back:b12,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b16,leftshoulder:b4,leftstick:b14,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b15,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b3,y:b2,platform:Linux,", +"03000000f0250000c183000010010000,Goodbetterbest Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000d11800000094000011010000,Google Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,", +"05000000d11800000094000000010000,Google Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,", "0300000079000000d418000000010000,GPD Win 2 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000007d0400000540000000010000,Gravis Eliminator GamePad Pro,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", -"03000000280400000140000000010000,Gravis GamePad Pro USB ,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", -"030000008f0e00000610000000010000,GreenAsia Electronics 4Axes 12Keys GamePad ,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Linux,", -"030000008f0e00001200000010010000,GreenAsia Inc. USB Joystick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux,", +"030000005e0400008e02000001010000,GPD Win Max 2 6800U Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000007d0400000540000000010000,Gravis Eliminator Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"03000000280400000140000000010000,Gravis GamePad Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"030000008f0e00000610000000010000,GreenAsia Electronics Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Linux,", +"030000008f0e00001200000010010000,GreenAsia Joystick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux,", "0500000047532067616d657061640000,GS gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", "03000000f0250000c383000010010000,GT VX2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"06000000adde0000efbe000002010000,Hidromancer Game Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"03000000d81400000862000011010000,HitBox (PS3/PC) Analog Mode,a:b1,b:b2,back:b8,guide:b9,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b12,x:b0,y:b3,platform:Linux,", -"03000000c9110000f055000011010000,HJC Game GAMEPAD,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", -"03000000632500002605000010010000,HJD-X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"030000000d0f00000d00000000010000,hori,a:b0,b:b6,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b3,leftx:b4,lefty:b5,rightshoulder:b7,start:b9,x:b1,y:b2,platform:Linux,", -"030000000d0f00001000000011010000,HORI CO. LTD. FIGHTING STICK 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", -"030000000d0f0000c100000011010000,HORI CO. LTD. HORIPAD S,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"030000000d0f00006a00000011010000,HORI CO. LTD. Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"030000000d0f00006b00000011010000,HORI CO. LTD. Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"030000000d0f00002200000011010000,HORI CO. LTD. REAL ARCADE Pro.V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", -"030000000d0f00008500000010010000,HORI Fighting Commander,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"030000000d0f00008600000002010000,Hori Fighting Commander,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", -"030000000d0f00005f00000011010000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"030000000d0f00005e00000011010000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"06000000adde0000efbe000002010000,Hidromancer Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000d81400000862000011010000,HitBox PS3 PC Analog Mode,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b12,x:b0,y:b3,platform:Linux,", +"03000000c9110000f055000011010000,HJC Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"030000000d0f00006d00000020010000,Hori EDGE 301,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:+a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000000d0f00008400000011010000,Hori Fighting Commander,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00005f00000011010000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00005e00000011010000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"030000000d0f00005001000009040000,Hori Fighting Commander Octa Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000000d0f00008500000010010000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00008600000002010000,Hori Fighting Commander Xbox 360,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"030000000d0f00003701000013010000,Hori Fighting Stick Mini,a:b1,b:b0,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b3,y:b2,platform:Linux,", +"030000000d0f00008800000011010000,Hori Fighting Stick mini 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00008700000011010000,Hori Fighting Stick mini 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,rightshoulder:b5,rightstick:b11,righttrigger:a4,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"030000000d0f00001000000011010000,Hori Fightstick 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"03000000ad1b000003f5000033050000,Hori Fightstick VX,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b8,guide:b10,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux,", +"030000000d0f00004d00000011010000,Hori Gem Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", "03000000ad1b000001f5000033050000,Hori Pad EX Turbo 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000000d0f00009200000011010000,Hori Pokken Tournament DX Pro Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", -"030000000d0f0000aa00000011010000,HORI Real Arcade Pro,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"030000000d0f0000d800000072056800,HORI Real Arcade Pro S,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux,", -"030000000d0f00001600000000010000,Hori Real Arcade Pro.EX-SE (Xbox 360),a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux,", -"030000000d0f00006e00000011010000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"030000000d0f00006600000011010000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"030000000d0f0000ee00000011010000,HORIPAD mini4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"030000000d0f00006700000001010000,HORIPAD ONE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000008f0e00001330000010010000,HuiJia SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b9,x:b3,y:b0,platform:Linux,", +"030000000d0f00003801000011010000,Hori PC Engine Mini Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,platform:Linux,", +"030000000d0f00009200000011010000,Hori Pokken Tournament DX Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00001100000011010000,Hori Real Arcade Pro 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00002200000011010000,Hori Real Arcade Pro 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00006a00000011010000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00006b00000011010000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00001600000000010000,Hori Real Arcade Pro EXSE,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux,", +"030000000d0f0000aa00000011010000,Hori Real Arcade Pro for Nintendo Switch,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"030000000d0f00008501000017010000,Hori Split Pad Fit,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000000d0f00008501000015010000,Hori Switch Split Pad Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000000d0f00006e00000011010000,Horipad 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00006600000011010000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"030000000d0f0000ee00000011010000,Horipad Mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f0000c100000011010000,Horipad Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f00006700000001010000,Horipad One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000000d0f0000ab01000011010000,Horipad Steam,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc2:b2,paddle1:b19,paddle2:b18,paddle3:b15,paddle4:b5,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000000d0f00009601000091000000,Horipad Steam,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc2:b2,paddle1:b19,paddle2:b18,paddle3:b15,paddle4:b5,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000000d0f0000f600000001000000,Horipad Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"03000000341a000005f7000010010000,HuiJia GameCube Controller Adapter,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Linux,", +"05000000242e00000b20000001000000,Hyperkin Admiral N64 Controller,+rightx:b11,+righty:b13,-rightx:b8,-righty:b12,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,platform:Linux,", +"03000000242e0000ff0b000011010000,Hyperkin N64 Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,platform:Linux,", +"03000000242e00006a38000010010000,Hyperkin Trooper 2,a:b0,b:b1,back:b4,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b3,start:b5,platform:Linux,", "03000000242e00008816000001010000,Hyperkin X91,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"03000000830500006020000010010000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Linux,", -"050000006964726f69643a636f6e0000,idroid:con,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"03000000b50700001503000010010000,impact,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux,", -"03000000d80400008200000003000000,IMS PCU#0 Gamepad Interface,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b5,x:b3,y:b2,platform:Linux,", -"03000000fd0500000030000000010000,InterAct GoPad I-73000 (Fighting Game Layout),a:b3,b:b4,back:b6,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,start:b7,x:b0,y:b1,platform:Linux,", -"0500000049190000020400001b010000,Ipega PG-9069 - Bluetooth Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b161,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"03000000632500007505000011010000,Ipega PG-9099 - Bluetooth Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"030000006e0500000320000010010000,JC-U3613M - DirectInput Mode,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Linux,", -"03000000300f00001001000010010000,Jess Tech Dual Analog Rumble Pad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux,", -"03000000300f00000b01000010010000,Jess Tech GGE909 PC Recoil Pad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,", -"03000000ba2200002010000001010000,Jess Technology USB Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,", +"03000000f00300008d03000011010000,HyperX Clutch,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000830500006020000010010000,iBuffalo Super Famicom Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Linux,", +"030000008f0e00001330000001010000,iCode Retro Adapter,b:b3,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b9,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b1,start:b7,x:b2,y:b0,platform:Linux,", +"050000006964726f69643a636f6e0000,idroidcon Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000b50700001503000010010000,Impact,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux,", +"03000000d80400008200000003000000,IMS PCU0,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b5,x:b3,y:b2,platform:Linux,", +"03000000120c00000500000010010000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Linux,", +"03000000ef0500000300000000010000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Linux,", +"03000000fd0500000030000000010000,InterAct GoPad,a:b3,b:b4,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,x:b0,y:b1,platform:Linux,", +"03000000fd0500002a26000000010000,InterAct HammerHead FX,a:b3,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b2,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b5,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Linux,", +"0500000049190000020400001b010000,Ipega PG 9069,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b161,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000632500007505000011010000,Ipega PG 9099,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"0500000049190000030400001b010000,Ipega PG9099,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000491900000204000000000000,Ipega PG9118,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000300f00001101000010010000,Jess Tech Colour Rumble Pad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux,", +"03000000300f00001001000010010000,Jess Tech Dual Analog Rumble,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux,", +"03000000300f00000b01000010010000,Jess Tech GGE909 PC Recoil,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,", +"03000000ba2200002010000001010000,Jess Technology Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,", "030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Linux,", "050000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Linux,", "030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Linux,", "050000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Linux,", "03000000bd12000003c0000010010000,Joypad Alpha Shock,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"03000000242f00002d00000011010000,JYS Wireless Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"03000000242f00008a00000011010000,JYS Wireless Adapter,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Linux,", +"03000000242f00002d00000011010000,JYS Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"03000000242f00008a00000011010000,JYS Adapter,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Linux,", "030000006f0e00000103000000020000,Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000006d040000d1ca000000000000,Logitech ChillStream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006d040000d1ca000000000000,Logitech Chillstream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006d040000d1ca000011010000,Logitech Chillstream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", "030000006d04000019c2000010010000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", "030000006d04000016c2000010010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", "030000006d04000016c2000011010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"030000006d0400001dc2000014400000,Logitech F310 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000006d0400001ec2000019200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000006d0400001ec2000020200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000006d04000019c2000011010000,Logitech F710 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"030000006d0400001fc2000005030000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000006d0400000ac2000010010000,Logitech Inc. WingMan RumblePad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,rightx:a3,righty:a4,x:b3,y:b4,platform:Linux,", +"030000006d0400001dc2000014400000,Logitech F310,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006d0400001ec2000019200000,Logitech F510,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006d0400001ec2000020200000,Logitech F510,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006d04000019c2000011010000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006d0400001fc2000005030000,Logitech F710,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "030000006d04000018c2000010010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", "030000006d04000011c2000010010000,Logitech WingMan Cordless RumblePad,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b10,rightx:a3,righty:a4,start:b8,x:b3,y:b4,platform:Linux,", -"050000004d4f435554452d3035305800,M54-PC,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"05000000380700006652000025010000,Mad Catz C.T.R.L.R ,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"03000000380700005032000011010000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"03000000380700005082000011010000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000006d0400000ac2000010010000,Logitech WingMan RumblePad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,rightx:a3,righty:a4,x:b3,y:b4,platform:Linux,", +"05000000380700006652000025010000,Mad Catz CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000380700008532000010010000,Mad Catz Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"03000000380700005032000011010000,Mad Catz Fightpad Pro PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000380700005082000011010000,Mad Catz Fightpad Pro PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", "03000000ad1b00002ef0000090040000,Mad Catz Fightpad SFxT,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Linux,", -"03000000380700008034000011010000,Mad Catz fightstick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"03000000380700008084000011010000,Mad Catz fightstick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"03000000380700008433000011010000,Mad Catz FightStick TE S+ (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"03000000380700008483000011010000,Mad Catz FightStick TE S+ (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"03000000380700001647000010040000,Mad Catz Wired Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"03000000380700003847000090040000,Mad Catz Wired Xbox 360 Controller (SFIV),a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"03000000380700008031000011010000,Mad Catz FightStick Alpha PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000380700008081000011010000,Mad Catz FightStick Alpha PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000380700008034000011010000,Mad Catz Fightstick PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000380700008084000011010000,Mad Catz Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"03000000380700008433000011010000,Mad Catz Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000380700008483000011010000,Mad Catz Fightstick TE S PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"03000000380700001888000010010000,Mad Catz Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000380700003888000010010000,Mad Catz Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:a0,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000380700001647000010040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000380700003847000090040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", "03000000ad1b000016f0000090040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"03000000380700001888000010010000,MadCatz PC USB Wired Stick 8818,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"03000000380700003888000010010000,MadCatz PC USB Wired Stick 8838,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:a0,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"03000000242f0000f700000001010000,Magic-S Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"03000000120c00000500000000010000,Manta Dualshock 2,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux,", +"03000000120c00000500000000010000,Manta DualShock 2,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux,", +"030000008f0e00001330000010010000,Mayflash Controller Adapter,a:b1,b:b2,back:b8,dpdown:h0.8,dpleft:h0.2,dpright:h0.1,dpup:h0.4,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a3~,righty:a2,start:b9,x:b0,y:b3,platform:Linux,", +"03000000790000004318000010010000,Mayflash GameCube Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Linux,", "03000000790000004418000010010000,Mayflash GameCube Controller,a:b1,b:b0,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Linux,", -"03000000790000004318000010010000,Mayflash GameCube Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Linux,", "03000000242f00007300000011010000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Linux,", "0300000079000000d218000011010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", "03000000d620000010a7000011010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"0300000025090000e803000001010000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:a5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux,", -"03000000780000000600000010010000,Microntek USB Joystick,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,", -"030000005e0400000e00000000010000,Microsoft SideWinder,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Linux,", -"030000005e0400008e02000004010000,Microsoft X-Box 360 pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000005e0400008e02000062230000,Microsoft X-Box 360 pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"050000005e040000050b000003090000,Microsoft X-Box One Elite 2 pad,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"030000005e040000e302000003020000,Microsoft X-Box One Elite pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000005e040000d102000001010000,Microsoft X-Box One pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000005e040000dd02000003020000,Microsoft X-Box One pad (Firmware 2015),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000005e040000d102000003020000,Microsoft X-Box One pad v2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000005e0400008502000000010000,Microsoft X-Box pad (Japan),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux,", -"030000005e0400008902000021010000,Microsoft X-Box pad v2 (US),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux,", -"030000005e040000000b000008040000,Microsoft Xbox One Elite 2 pad - Wired,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000005e040000ea02000008040000,Microsoft Xbox One S pad - Wired,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"03000000c62400001a53000000010000,Mini PE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000242f0000f700000001010000,Mayflash Magic S Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000008f0e00001030000010010000,Mayflash Saturn Adapter,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:b7,rightshoulder:b6,righttrigger:b2,start:b9,x:b3,y:b4,platform:Linux,", +"0300000025090000e803000001010000,Mayflash Wii Classic Adapter,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:a5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux,", +"03000000790000000318000011010000,Mayflash Wii DolphinBar,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Linux,", +"03000000790000000018000011010000,Mayflash Wii U Pro Adapter,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000b50700001203000010010000,Mega World Logic 3 Controller,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux,", +"03000000b50700004f00000000010000,Mega World Logic 3 Controller,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Linux,", +"03000000780000000600000010010000,Microntek Joystick,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,", +"030000005e0400002800000000010000,Microsoft Dual Strike,a:b3,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,rightx:a0,righty:a1~,start:b5,x:b1,y:b0,platform:Linux,", +"030000005e0400000300000000010000,Microsoft SideWinder,a:b0,b:b1,back:b9,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Linux,", +"030000005e0400000700000000010000,Microsoft SideWinder,a:b0,b:b1,back:b8,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Linux,", +"030000005e0400000e00000000010000,Microsoft SideWinder Freestyle Pro,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Linux,", +"030000005e0400002700000000010000,Microsoft SideWinder Plug and Play,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,righttrigger:b5,x:b2,y:b3,platform:Linux,", +"030000005e0400008502000000010000,Microsoft Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux,", +"030000005e0400008902000021010000,Microsoft Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux,", +"030000005e0400008e02000001000000,Microsoft Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.1,dpleft:h0.2,dpright:h0.8,dpup:h0.4,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e0400008e02000004010000,Microsoft Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e0400008e02000056210000,Microsoft Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e0400008e02000062230000,Microsoft Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000d102000001010000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000d102000003020000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000dd02000003020000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000ea02000008040000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000ea0200000f050000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"060000005e040000120b000009050000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000e302000003020000,Microsoft Xbox One Elite,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000000b000007040000,Microsoft Xbox One Elite 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b12,paddle2:b14,paddle3:b13,paddle4:b15,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000000b000008040000,Microsoft Xbox One Elite 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b12,paddle2:b14,paddle3:b13,paddle4:b15,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"050000005e040000050b000003090000,Microsoft Xbox One Elite 2,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000005e0400008e02000030110000,Microsoft Xbox One Elite 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b13,paddle3:b12,paddle4:b14,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000120b00000b050000,Microsoft Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000120b000016050000,Microsoft Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000120b000017050000,Microsoft Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"060000005e040000120b000001050000,Microsoft Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "03000000030000000300000002000000,Miroof,a:b1,b:b0,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Linux,", -"05000000d6200000e589000001000000,Moga 2 HID,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux,", +"03000000790000001c18000010010000,Mobapad Chitu HD,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000004d4f435554452d3035335800,Mocute 053X,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"05000000e80400006e0400001b010000,Mocute 053X M59,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000004d4f435554452d3035305800,Mocute 054X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000d6200000e589000001000000,Moga 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux,", "05000000d6200000ad0d000001000000,Moga Pro,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux,", -"05000000d62000007162000001000000,Moga Pro 2 HID,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux,", -"03000000c62400002b89000011010000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"05000000c62400002a89000000010000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b22,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"05000000c62400001a89000000010000,MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"03000000250900006688000000010000,MP-8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux,", -"030000006b140000010c000010010000,NACON GC-400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"05000000d62000007162000001000000,Moga Pro 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux,", +"03000000c62400002b89000011010000,MOGA XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000c62400002a89000000010000,MOGA XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b22,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"05000000c62400001a89000000010000,MOGA XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000250900006688000000010000,MP8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux,", +"030000005e0400008e02000010020000,MSI GC20 V2,a:b0,b:b1,back:b6,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000f70600000100000000010000,N64 Adaptoid,+rightx:b2,+righty:b1,-rightx:b4,-righty:b5,a:b0,b:b3,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,platform:Linux,", +"030000006b1400000906000014010000,Nacon Asymmetric Wireless PS4 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006b140000010c000010010000,Nacon GC 400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"03000000853200000706000012010000,Nacon GC-100,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"05000000853200000503000000010000,Nacon MG-X Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"0300000085320000170d000011010000,Nacon Revolution 5 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"0300000085320000190d000011010000,Nacon Revolution 5 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", "030000000d0f00000900000010010000,Natec Genesis P44,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"03000000790000004518000010010000,NEXILUX GAMECUBE Controller Adapter,a:b1,b:b0,x:b2,y:b3,start:b9,rightshoulder:b7,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a5,righty:a2,lefttrigger:a3,righttrigger:a4,platform:Linux,", +"030000004f1f00000800000011010000,NeoGeo PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"0300000092120000474e000000010000,NeoGeo X Arcade Stick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b3,y:b2,platform:Linux,", +"03000000790000004518000010010000,Nexilux GameCube Controller Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Linux,", "030000001008000001e5000010010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Linux,", "060000007e0500003713000000000000,Nintendo 3DS,a:b0,b:b1,back:b8,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux,", -"060000007e0500000820000000000000,Nintendo Combined Joy-Cons (joycond),a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux,", "030000007e0500003703000000016800,Nintendo GameCube Controller,a:b0,b:b2,dpdown:b6,dpleft:b4,dpright:b5,dpup:b7,lefttrigger:a4,leftx:a0,lefty:a1~,rightshoulder:b9,righttrigger:a5,rightx:a2,righty:a3~,start:b8,x:b1,y:b3,platform:Linux,", "03000000790000004618000010010000,Nintendo GameCube Controller Adapter,a:b1,b:b0,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a5~,righty:a2~,start:b9,x:b2,y:b3,platform:Linux,", -"050000007e0500000620000001800000,Nintendo Switch Left Joy-Con,a:b9,b:b8,back:b5,leftshoulder:b2,leftstick:b6,leftx:a1,lefty:a0~,rightshoulder:b4,start:b0,x:b7,y:b10,platform:Linux,", -"030000007e0500000920000011810000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux,", -"050000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", -"050000007e0500000920000001800000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux,", -"050000007e0500000720000001800000,Nintendo Switch Right Joy-Con,a:b1,b:b2,back:b9,leftshoulder:b4,leftstick:b10,leftx:a1~,lefty:a0~,rightshoulder:b6,start:b8,x:b0,y:b3,platform:Linux,", -"050000007e0500001720000001000000,Nintendo Switch SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Linux,", -"050000007e0500003003000001000000,Nintendo Wii Remote Pro Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux,", -"05000000010000000100000003000000,Nintendo Wiimote,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", -"030000000d0500000308000010010000,Nostromo n45 Dual Analog Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Linux,", +"030000007e0500006920000011010000,Nintendo Switch 2 Pro Controller,a:b0,b:b1,back:b14,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b12,leftstick:b15,lefttrigger:b13,leftx:a0,lefty:a1~,misc1:b17,misc2:b20,paddle1:b18,paddle2:b19,rightshoulder:b4,rightstick:b7,righttrigger:b5,rightx:a2,righty:a3~,start:b6,x:b2,y:b3,platform:Linux,", +"060000004e696e74656e646f20537700,Nintendo Switch Combined Joy-Cons,a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux,", +"060000007e0500000620000000000000,Nintendo Switch Combined Joy-Cons,a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux,", +"060000007e0500000820000000000000,Nintendo Switch Combined Joy-Cons,a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux,", +"050000004c69632050726f20436f6e00,Nintendo Switch Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"050000007e0500000620000001800000,Nintendo Switch Left Joy-Con,a:b16,b:b15,back:b4,leftshoulder:b6,leftstick:b12,leftx:a1,lefty:a0~,rightshoulder:b8,start:b9,x:b14,y:b17,platform:Linux,", +"030000007e0500000920000000026803,Nintendo Switch Pro Controller,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Linux,", +"030000007e0500000920000011810000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux,", +"050000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"050000007e0500000920000001800000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux,", +"050000007e0500000720000001800000,Nintendo Switch Right Joy-Con,a:b1,b:b2,back:b9,leftshoulder:b4,leftstick:b10,leftx:a1~,lefty:a0,rightshoulder:b6,start:b8,x:b0,y:b3,platform:Linux,", +"05000000010000000100000003000000,Nintendo Wii Remote,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"050000007e0500003003000001000000,Nintendo Wii U Pro Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux,", +"050000005a1d00000218000003000000,Nokia GC 5000,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"030000000d0500000308000010010000,Nostromo n45 Dual Analog,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Linux,", +"030000007e0500007320000011010000,NSO GameCube Controller,a:b1,b:b3,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b13,lefttrigger:b12,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b4,rightx:a2,righty:a3~,start:b6,x:b0,y:b2,platform:Linux,", +"030000007e0500001920000011810000,NSO N64 Controller,+rightx:b2,+righty:b3,-rightx:b4,-righty:b10,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b5,rightshoulder:b7,righttrigger:b9,start:b11,platform:Linux,", +"050000007e0500001920000001000000,NSO N64 Controller,+rightx:b8,+righty:b7,-rightx:b3,-righty:b2,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,righttrigger:b10,start:b9,platform:Linux,", +"050000007e0500001920000001800000,NSO N64 Controller,+rightx:b2,+righty:b3,-rightx:b4,-righty:b10,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b5,rightshoulder:b7,righttrigger:b9,start:b11,platform:Linux,", +"030000007e0500001e20000011810000,NSO Sega Genesis Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,misc1:b3,rightshoulder:b2,righttrigger:b4,start:b5,platform:Linux,", +"030000007e0500001720000011810000,NSO SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux,", +"050000007e0500001720000001000000,NSO SNES Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:b7,rightshoulder:b6,righttrigger:b8,start:b10,x:b3,y:b2,platform:Linux,", +"050000007e0500001720000001800000,NSO SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux,", "03000000550900001072000011010000,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b8,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,", -"03000000550900001472000011010000,NVIDIA Controller v01.04,a:b0,b:b1,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Linux,", -"05000000550900001472000001000000,NVIDIA Controller v01.04,a:b0,b:b1,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Linux,", +"03000000550900001472000011010000,NVIDIA Controller,a:b0,b:b1,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b8,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Linux,", +"05000000550900001472000001000000,NVIDIA Controller,a:b0,b:b1,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b8,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Linux,", +"030000004b120000014d000000010000,NYKO Airflo EX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux,", "03000000451300000830000010010000,NYKO CORE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"19000000010000000100000001010000,odroidgo2_joypad,a:b1,b:b0,dpdown:b7,dpleft:b8,dpright:b9,dpup:b6,guide:b10,leftshoulder:b4,leftstick:b12,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b13,righttrigger:b14,start:b15,x:b2,y:b3,platform:Linux,", -"19000000010000000200000011000000,odroidgo2_joypad_v11,a:b1,b:b0,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b12,leftshoulder:b4,leftstick:b14,lefttrigger:b13,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b15,righttrigger:b16,start:b17,x:b2,y:b3,platform:Linux,", -"030000005e0400000202000000010000,Old Xbox pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux,", -"03000000c0160000dc27000001010000,OnyxSoft Dual JoyDivision,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b6,x:b2,y:b3,platform:Linux,", -"05000000362800000100000002010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Linux,", -"05000000362800000100000003010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Linux,", -"03000000830500005020000010010000,Padix Co. Ltd. Rockfire PSX/USB Bridge,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b2,y:b3,platform:Linux,", -"03000000790000001c18000011010000,PC Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"03000000ff1100003133000010010000,PC Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"030000006f0e0000b802000001010000,PDP AFTERGLOW Wired Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000006f0e0000b802000013020000,PDP AFTERGLOW Wired Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"19000000010000000100000001010000,ODROID Go 2,a:b1,b:b0,dpdown:b7,dpleft:b8,dpright:b9,dpup:b6,guide:b10,leftshoulder:b4,leftstick:b12,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b13,righttrigger:b14,start:b15,x:b2,y:b3,platform:Linux,", +"19000000010000000200000011000000,ODROID Go 2,a:b1,b:b0,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b12,leftshoulder:b4,leftstick:b14,lefttrigger:b13,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b15,righttrigger:b16,start:b17,x:b2,y:b3,platform:Linux,", +"05000000362800000100000002010000,OUYA Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Linux,", +"05000000362800000100000003010000,OUYA Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Linux,", +"05000000362800000100000004010000,OUYA Controller,a:b0,b:b3,back:b14,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a3,righty:a4,start:b16,x:b1,y:b2,platform:Linux,", +"03000000830500005020000010010000,Padix Rockfire PlayStation Bridge,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b2,y:b3,platform:Linux,", +"03000000ff1100003133000010010000,PC Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"030000006f0e0000b802000001010000,PDP Afterglow Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e0000b802000013020000,PDP Afterglow Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "030000006f0e00006401000001010000,PDP Battlefield One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000006f0e00008001000011010000,PDP CO. LTD. Faceoff Wired Pro Controller for Nintendo Switch,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006f0e0000d702000006640000,PDP Black Camo Wired Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:b13,dpleft:b14,dpright:b13,dpup:b14,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "030000006f0e00003101000000010000,PDP EA Sports Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e00008501000011010000,PDP Fightpad Pro Gamecube Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", "030000006f0e0000c802000012010000,PDP Kingdom Hearts Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000006f0e00008701000011010000,PDP Rock Candy Wired Controller for Nintendo Switch,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"030000006f0e00000901000011010000,PDP Versus Fighting Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", -"030000006f0e0000a802000023020000,PDP Wired Controller for Xbox One,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", -"030000006f0e00008501000011010000,PDP Wired Fight Pad Pro for Nintendo Switch,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"0500000049190000030400001b010000,PG-9099,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"05000000491900000204000000000000,PG-9118,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"030000004c050000da0c000011010000,Playstation Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,", -"030000004c0500003713000011010000,PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Linux,", +"030000006f0e00002801000011010000,PDP PS3 Rock Candy Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000006f0e00000901000011010000,PDP PS3 Versus Fighting,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"030000006f0e00002f01000011010000,PDP Wired PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000ad1b000004f9000000010000,PDP Xbox 360 Versus Fighting,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e0000f102000000000000,PDP Xbox Atomic,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e0000a802000023020000,PDP Xbox One Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"030000006f0e0000a702000023020000,PDP Xbox One Raven Black,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e0000d802000006640000,PDP Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e0000ef02000007640000,PDP Xbox Series Kinetic Wired Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "03000000c62400000053000000010000,PowerA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "03000000c62400003a54000001010000,PowerA 1428124-01,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000d62000000540000001010000,PowerA Advantage Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000d620000011a7000011010000,PowerA Core Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000dd62000015a7000011010000,PowerA Fusion Nintendo Switch Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000d620000012a7000011010000,PowerA Fusion Nintendo Switch Fight Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000d62000000140000001010000,PowerA Fusion Pro 2 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000dd62000016a7000000000000,PowerA Fusion Pro Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000c62400001a53000000010000,PowerA Mini Pro Ex,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000d620000013a7000011010000,PowerA Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", "03000000d62000006dca000011010000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"03000000d62000000228000001010000,PowerA Wired Controller for Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"03000000c62400001a58000001010000,PowerA Xbox One Cabled,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"03000000c62400001a54000001010000,PowerA Xbox One Mini Wired Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000d620000014a7000011010000,PowerA Spectra Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000c62400001a58000001010000,PowerA Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000d62000000220000001010000,PowerA Xbox One Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Linux,", +"03000000d62000000228000001010000,PowerA Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c62400001a54000001010000,PowerA Xbox One Mini Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000d62000000240000001010000,PowerA Xbox One Spectra Infinity,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000d62000000520000050010000,PowerA Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000d62000000b20000001010000,PowerA Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000d62000000f20000001010000,PowerA Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b7,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "030000006d040000d2ca000011010000,Precision Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000250900000017000010010000,PS/SS/N64 Adapter,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b5,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2~,righty:a3,start:b8,platform:Linux,", "03000000ff1100004133000010010000,PS2 Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,", "03000000341a00003608000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", "030000004c0500006802000010010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,", "030000004c0500006802000010810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", "030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,", "030000004c0500006802000011810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"030000005f1400003102000010010000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", "030000006f0e00001402000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", "030000008f0e00000300000010010000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", "050000004c0500006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,", @@ -854,149 +1648,254 @@ const char* _glfwDefaultMappings[] = "050000004c0500006802000000810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", "05000000504c415953544154494f4e00,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,", "060000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,", -"030000004c050000a00b000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000004c050000a00b000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", "030000004c050000a00b000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", -"030000004c050000c405000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000004c050000c405000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"030000004c050000c405000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", "030000004c050000c405000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", -"030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"030000004c050000cc09000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"030000004c050000cc09000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", "030000004c050000cc09000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", -"03000000c01100000140000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"050000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000c01100000140000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"050000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", "050000004c050000c405000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", "050000004c050000c405000001800000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", -"050000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"050000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", "050000004c050000cc09000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", "050000004c050000cc09000001800000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", -"030000004c050000e60c000011010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"050000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"03000000ff000000cb01000010010000,PSP,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux,", -"03000000300f00001211000011010000,QanBa Arcade JoyStick,a:b2,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b9,x:b1,y:b3,platform:Linux,", -"030000009b2800004200000001010000,Raphnet Technologies Dual NES to USB v2.0,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Linux,", -"030000009b2800003200000001010000,Raphnet Technologies GC/N64 to USB v3.4,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux,", -"030000009b2800006000000001010000,Raphnet Technologies GC/N64 to USB v3.6,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux,", -"030000009b2800000300000001010000,raphnet.net 4nes4snes v1.5,a:b0,b:b4,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Linux,", +"0300004b4c0500005f0e000011010000,PS5 Access Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"030000004c050000e60c000011010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"030000004c050000e60c000011810000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"030000004c050000f20d000011010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"030000004c050000f20d000011810000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"050000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"050000004c050000e60c000000810000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"050000004c050000f20d000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"050000004c050000f20d000000810000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", +"03000000300f00001211000011010000,Qanba Arcade Joystick,a:b2,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b9,x:b1,y:b3,platform:Linux,", +"03000000222c00000225000011010000,Qanba Dragon Arcade Joystick PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000222c00000025000011010000,Qanba Dragon Arcade Joystick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"03000000222c00001220000011010000,Qanba Drone 2 Arcade Joystick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000222c00001020000011010000,Qanba Drone 2 Arcade Joystick PS5,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000222c00000020000011010000,Qanba Drone Arcade PS4 Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"03000000300f00001210000010010000,Qanba Joystick Plus,a:b0,b:b1,back:b8,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b6,start:b9,x:b2,y:b3,platform:Linux,", +"03000000222c00000223000011010000,Qanba Obsidian Arcade Joystick PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000222c00000023000011010000,Qanba Obsidian Arcade Joystick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"030000009b2800000300000001010000,Raphnet 4nes4snes,a:b0,b:b4,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Linux,", +"030000009b2800004200000001010000,Raphnet Dual NES Adapter,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Linux,", +"0300132d9b2800006500000000000000,Raphnet GameCube Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux,", +"0300132d9b2800006500000001010000,Raphnet GameCube Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux,", +"030000009b2800003200000001010000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux,", +"030000009b2800006000000001010000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux,", +"030000009b2800006100000001010000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Linux,", +"030000009b2800006400000001010000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Linux,", +"030000009b2800008000000020020000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Linux,", +"030000009b2800008000000001010000,Raphnet Wii Classic Adapter V3,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Linux,", +"03000000f8270000bf0b000011010000,Razer Kishi,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", "030000008916000001fd000024010000,Razer Onza Classic Edition,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000008916000000fd000024010000,Razer Onza Tournament Edition,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"03000000321500000204000011010000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"03000000321500000104000011010000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"03000000321500000810000011010000,Razer Panthera Evo Arcade Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"03000000321500000010000011010000,Razer RAIJU,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000321500000204000011010000,Razer Panthera PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000321500000104000011010000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"03000000321500000810000011010000,Razer Panthera PS4 Evo Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"03000000321500000010000011010000,Razer Raiju,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", "03000000321500000507000000010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"03000000321500000011000011010000,Razer Raion Fightpad for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"05000000321500000a10000001000000,Razer Raiju Tournament Edition,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000321500000011000011010000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", "030000008916000000fe000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "03000000c6240000045d000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "03000000c6240000045d000025010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "03000000321500000009000011010000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,", "050000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,", "0300000032150000030a000001010000,Razer Wildcat,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"03000000790000001100000010010000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux,", +"03000000321500000b10000011010000,Razer Wolverine PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"0300000032150000140a000001010000,Razer Wolverine Ultimate Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000000d0f0000c100000010010000,Retro Bit Legacy16,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b12,leftshoulder:b4,lefttrigger:b6,misc1:b13,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", +"030000000d0f0000c100000072056800,Retro Bit Legacy16,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b5,leftshoulder:b9,lefttrigger:+a4,misc1:b11,rightshoulder:b10,righttrigger:+a5,start:b6,x:b3,y:b2,platform:Linux,", +"03000000790000001100000010010000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,start:b9,x:b0,y:b3,platform:Linux,", +"0300000003040000c197000011010000,Retrode Adapter,a:b0,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Linux,", +"190000004b4800000111000000010000,RetroGame Joypad,a:b1,b:b0,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", "0300000081170000990a000001010000,Retronic Adapter,a:b0,leftx:a0,lefty:a1,platform:Linux,", "0300000000f000000300000000010000,RetroPad,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux,", +"00000000526574726f53746f6e653200,RetroStone 2 Controller,a:b1,b:b0,back:b10,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,righttrigger:b9,start:b11,x:b4,y:b3,platform:Linux,", +"03000000341200000400000000010000,RetroUSB N64 RetroPort,+rightx:b8,+righty:b10,-rightx:b9,-righty:b11,a:b7,b:b6,dpdown:b2,dpleft:b1,dpright:b0,dpup:b3,leftshoulder:b13,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b12,start:b4,platform:Linux,", "030000006b140000010d000011010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", "030000006b140000130d000011010000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", "030000006f0e00001f01000000010000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e00008701000011010000,Rock Candy Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", "030000006f0e00001e01000011010000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000c6240000fefa000000010000,Rock Candy Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "030000006f0e00004601000001010000,Rock Candy Xbox One Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"03000000a306000023f6000011010000,Saitek Cyborg V.1 Game Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux,", +"030000006f0e00001311000011010000,Saffun Controller,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b0,platform:Linux,", +"03000000a306000023f6000011010000,Saitek Cyborg PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux,", "03000000a30600001005000000010000,Saitek P150,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b2,righttrigger:b5,x:b3,y:b4,platform:Linux,", "03000000a30600000701000000010000,Saitek P220,a:b2,b:b3,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,x:b0,y:b1,platform:Linux,", -"03000000a30600000cff000010010000,Saitek P2500 Force Rumble Pad,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b0,y:b1,platform:Linux,", -"03000000a30600000c04000011010000,Saitek P2900 Wireless Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b12,x:b0,y:b3,platform:Linux,", +"03000000a30600000cff000010010000,Saitek P2500 Force Rumble,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b0,y:b1,platform:Linux,", +"03000000a30600000d5f000010010000,Saitek P2600,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Linux,", +"03000000a30600000c04000011010000,Saitek P2900,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b12,x:b0,y:b3,platform:Linux,", +"03000000a306000018f5000010010000,Saitek P3200 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Linux,", "03000000300f00001201000010010000,Saitek P380,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux,", "03000000a30600000901000000010000,Saitek P880,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,x:b0,y:b1,platform:Linux,", -"03000000a30600000b04000000010000,Saitek P990 Dual Analog Pad,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Linux,", -"03000000a306000018f5000010010000,Saitek PLC Saitek P3200 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Linux,", -"03000000a306000020f6000011010000,Saitek PS2700 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux,", +"03000000a30600000b04000000010000,Saitek P990 Dual Analog,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Linux,", +"03000000a306000020f6000011010000,Saitek PS2700 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux,", +"05000000e804000000a000001b010000,Samsung EIGP20,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", "03000000d81d00000e00000010010000,Savior,a:b0,b:b1,back:b8,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b11,righttrigger:b3,start:b9,x:b4,y:b5,platform:Linux,", -"03000000f025000021c1000010010000,ShanWan Gioteck PS3 Wired Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"03000000632500007505000010010000,SHANWAN PS3/PC Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"03000000bc2000000055000010010000,ShanWan PS3/PC Wired GamePad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"030000005f140000c501000010010000,SHANWAN Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"03000000632500002305000010010000,ShanWan USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"03000000341a00000908000010010000,SL-6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", -"030000004c050000e60c000011810000,Sony DualSense,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", -"050000004c050000e60c000000810000,Sony DualSense ,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,", -"03000000250900000500000000010000,Sony PS2 pad with SmartJoy adapter,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux,", -"030000005e0400008e02000073050000,Speedlink TORID Wireless Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000005e0400008e02000020200000,SpeedLink XEOX Pro Analog Gamepad pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"03000000d11800000094000011010000,Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,", +"03000000952e00004b43000011010000,Scuf Envision,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Linux,", +"03000000952e00004d43000011010000,Scuf Envision,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Linux,", +"03000000952e00004e43000011010000,Scuf Envision,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Linux,", +"03000000a30c00002500000011010000,Sega Genesis Mini 3B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,righttrigger:b5,start:b9,platform:Linux,", +"03000000790000001100000011010000,Sega Saturn,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b4,start:b9,x:b0,y:b3,platform:Linux,", +"03000000790000002201000011010000,Sega Saturn,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux,", +"03000000b40400000a01000000010000,Sega Saturn,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Linux,", +"03000000632500002305000010010000,ShanWan Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"03000000632500002605000010010000,Shanwan Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000632500007505000010010000,Shanwan Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"03000000bc2000000055000010010000,Shanwan Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000f025000021c1000010010000,Shanwan Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"03000000341a00000908000010010000,SL6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"030000004b2900000430000011000000,Snakebyte Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"050000004c050000cc09000001000000,Sony DualShock 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"03000000666600006706000000010000,Sony PlayStation Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Linux,", +"030000004c050000da0c000011010000,Sony PlayStation Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,", +"03000000d9040000160f000000010000,Sony PlayStation Controller Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,", +"03000000ff000000cb01000010010000,Sony PlayStation Portable,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux,", +"030000004c0500003713000011010000,Sony PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Linux,", +"03000000250900000500000000010000,Sony PS2 pad with SmartJoy Adapter,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux,", +"030000005e0400008e02000073050000,Speedlink Torid,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e0400008e02000020200000,SpeedLink Xeox Pro Analog,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "03000000de2800000112000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,", +"03000000de2800000112000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:+a5,dpleft:-a4,dpright:+a4,dpup:-a5,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,paddle1:b15,paddle2:b16,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux,", "03000000de2800000211000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,", -"03000000de2800000211000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:b18,dpleft:b19,dpright:b20,dpup:b17,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b15,paddle2:b16,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux,", +"03000000de2800000211000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:b18,dpleft:b19,dpright:b20,dpup:b17,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b16,paddle2:b15,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux,", "03000000de2800004211000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,", -"03000000de2800004211000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:b18,dpleft:b19,dpright:b20,dpup:b17,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b15,paddle2:b16,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux,", +"03000000de2800004211000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:b18,dpleft:b19,dpright:b20,dpup:b17,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,paddle1:b16,paddle2:b15,rightshoulder:b7,righttrigger:a6,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux,", "03000000de280000fc11000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "05000000de2800000212000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,", "05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,", "05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,", +"03000000de2800000512000010010000,Steam Deck,a:b3,b:b4,back:b11,dpdown:b17,dpleft:b18,dpright:b19,dpup:b16,guide:b13,leftshoulder:b7,leftstick:b14,lefttrigger:a9,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b15,righttrigger:a8,rightx:a2,righty:a3,start:b12,x:b5,y:b6,platform:Linux,", +"03000000de2800000512000011010000,Steam Deck,a:b3,b:b4,back:b11,dpdown:b17,dpleft:b18,dpright:b19,dpup:b16,guide:b13,leftshoulder:b7,leftstick:b14,lefttrigger:a9,leftx:a0,lefty:a1,misc1:b2,paddle1:b21,paddle2:b20,paddle3:b23,paddle4:b22,rightshoulder:b8,rightstick:b15,righttrigger:a8,rightx:a2,righty:a3,start:b12,x:b5,y:b6,platform:Linux,", "03000000de280000ff11000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"050000004e696d6275732b0000000000,SteelSeries Nimbus Plus,a:b0,b:b1,back:b10,guide:b11,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b12,x:b2,y:b3,platform:Linux,", "03000000381000003014000075010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "03000000381000003114000075010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "0500000011010000311400001b010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b32,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", "05000000110100001914000009010000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"03000000ad1b000038f0000090040000,Street Fighter IV FightStick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000003b07000004a1000000010000,Suncom SFX Plus for USB,a:b0,b:b2,back:b7,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b5,start:b8,x:b1,y:b3,platform:Linux,", +"03000000ad1b000038f0000090040000,Street Fighter IV Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000003b07000004a1000000010000,Suncom SFX Plus,a:b0,b:b2,back:b7,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b9,righttrigger:b5,start:b8,x:b1,y:b3,platform:Linux,", +"030000001f08000001e4000010010000,Super Famicom Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux,", "03000000666600000488000000010000,Super Joy Box 5 Pro,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux,", -"0300000000f00000f100000000010000,Super RetroPort,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux,", -"03000000457500002211000010010000,SZMY-POWER CO. LTD. GAMEPAD,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"030000008f0e00000d31000010010000,SZMY-POWER CO. LTD. GAMEPAD 3 TURBO,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"030000008f0e00001431000010010000,SZMY-POWER CO. LTD. PS3 gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"030000004f04000020b3000010010000,Thrustmaster 2 in 1 DT,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux,", +"0300000000f00000f100000000010000,Super RetroPort,a:b1,b:b5,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux,", +"030000008f0e00000d31000010010000,SZMY Power 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000457500000401000011010000,SZMY Power DS4 Wired Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000457500002211000010010000,SZMY Power Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"030000008f0e00001431000010010000,SZMY Power PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000e40a00000307000011010000,Taito Egret II Mini Control Panel,a:b4,b:b2,back:b6,guide:b9,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b1,start:b7,x:b8,y:b3,platform:Linux,", +"03000000e40a00000207000011010000,Taito Egret II Mini Controller,a:b4,b:b2,back:b6,guide:b9,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b1,start:b7,x:b8,y:b3,platform:Linux,", +"03000000ba2200000701000001010000,Technology Innovation PS2 Adapter,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b3,y:b2,platform:Linux,", +"03000000790000001c18000011010000,TGZ Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000591c00002400000010010000,THEC64 Joystick,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux,", +"03000000591c00002600000010010000,THEGamepad,a:b2,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Linux,", +"030000004f04000015b3000001010000,Thrustmaster Dual Analog 3.2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux,", "030000004f04000015b3000010010000,Thrustmaster Dual Analog 4,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux,", -"030000004f04000023b3000000010000,Thrustmaster Dual Trigger 3-in-1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"030000004f0400000ed0000011010000,ThrustMaster eSwap PRO Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000004f04000020b3000010010000,Thrustmaster Dual Trigger,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux,", +"030000004f04000023b3000000010000,Thrustmaster Dual Trigger PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000004f0400000ed0000011010000,Thrustmaster eSwap Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", "03000000b50700000399000000010000,Thrustmaster Firestorm Digital 2,a:b2,b:b4,back:b11,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b0,righttrigger:b9,start:b1,x:b3,y:b5,platform:Linux,", "030000004f04000003b3000010010000,Thrustmaster Firestorm Dual Analog 2,a:b0,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b9,rightx:a2,righty:a3,x:b1,y:b3,platform:Linux,", "030000004f04000000b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Linux,", -"030000004f04000026b3000002040000,Thrustmaster Gamepad GP XID,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"03000000c6240000025b000002020000,Thrustmaster GPX Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000004f04000008d0000000010000,Thrustmaster Run N Drive Wireless,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"030000004f04000009d0000000010000,Thrustmaster Run N Drive Wireless PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"030000004f04000007d0000000010000,Thrustmaster T Mini Wireless,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", -"030000004f04000012b3000010010000,Thrustmaster vibrating gamepad,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux,", -"03000000bd12000015d0000010010000,Tomee SNES USB Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux,", -"03000000d814000007cd000011010000,Toodles 2008 Chimp PC/PS3,a:b0,b:b1,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux,", +"030000004f04000004b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux,", +"030000004f04000026b3000002040000,Thrustmaster GP XID,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000c6240000025b000002020000,Thrustmaster GPX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000004f04000008d0000000010000,Thrustmaster Run N Drive PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000004f04000009d0000000010000,Thrustmaster Run N Drive PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000004f04000007d0000000010000,Thrustmaster T Mini,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"030000004f04000012b3000010010000,Thrustmaster Vibrating Gamepad,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux,", +"03000000571d00002000000010010000,Tomee SNES Adapter,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux,", +"03000000bd12000015d0000010010000,Tomee SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux,", +"03000000d814000007cd000011010000,Toodles 2008 Chimp PC PS3,a:b0,b:b1,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux,", "030000005e0400008e02000070050000,Torid,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "03000000c01100000591000011010000,Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"03000000100800000100000010010000,Twin USB PS2 Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,", +"03000000680a00000300000003000000,TRBot Virtual Joypad,a:b11,b:b12,back:b15,dpdown:b6,dpleft:b3,dpright:b4,dpup:b5,leftshoulder:b17,leftstick:b21,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b22,righttrigger:a2,rightx:a3,righty:a4,start:b16,x:b13,y:b14,platform:Linux,", +"03000000780300000300000003000000,TRBot Virtual Joypad,a:b11,b:b12,back:b15,dpdown:b6,dpleft:b3,dpright:b4,dpup:b5,leftshoulder:b17,leftstick:b21,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b22,righttrigger:a2,rightx:a3,righty:a4,start:b16,x:b13,y:b14,platform:Linux,", +"03000000e00d00000300000003000000,TRBot Virtual Joypad,a:b11,b:b12,back:b15,dpdown:b6,dpleft:b3,dpright:b4,dpup:b5,leftshoulder:b17,leftstick:b21,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b22,righttrigger:a2,rightx:a3,righty:a4,start:b16,x:b13,y:b14,platform:Linux,", +"03000000f00600000300000003000000,TRBot Virtual Joypad,a:b11,b:b12,back:b15,dpdown:b6,dpleft:b3,dpright:b4,dpup:b5,leftshoulder:b17,leftstick:b21,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b22,righttrigger:a2,rightx:a3,righty:a4,start:b16,x:b13,y:b14,platform:Linux,", +"030000005f140000c501000010010000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"06000000f51000000870000003010000,Turtle Beach Recon,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000100800000100000010010000,Twin PS2 Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,", +"03000000151900005678000010010000,Uniplay U6,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", "03000000100800000300000010010000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,", "03000000790000000600000007010000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Linux,", -"03000000790000001100000000010000,USB Gamepad1,a:b2,b:b1,back:b8,dpdown:a0,dpleft:a1,dpright:a2,dpup:a4,start:b9,platform:Linux,", -"030000006f0e00000302000011010000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", -"030000006f0e00000702000011010000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,", -"05000000ac0500003232000001000000,VR-BOX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux,", -"03000000791d00000103000010010000,Wii Classic Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"050000000d0f0000f600000001000000,Wireless HORIPAD Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", -"030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000005e0400008e02000014010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000005e0400001907000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000005e0400009102000007010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000005e040000a102000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000005e040000a102000007010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"0000000058626f782033363020576900,Xbox 360 Wireless Controller,a:b0,b:b1,back:b14,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,guide:b7,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Linux,", -"030000005e040000a102000014010000,Xbox 360 Wireless Receiver (XBOX),a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"0000000058626f782047616d65706100,Xbox Gamepad (userspace driver),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,", +"03000000790000001100000000010000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:a0,dpleft:a1,dpright:a2,dpup:a4,start:b9,platform:Linux,", +"03000000790000001a18000011010000,Venom PS4 Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,", +"03000000790000001b18000011010000,Venom PS4 Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"030000006f0e00000302000011010000,Victrix Pro Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"030000006f0e00000702000011010000,Victrix Pro Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux,", +"05000000ac0500003232000001000000,VR Box Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux,", +"05000000434f4d4d414e440000000000,VX Gaming Command Series,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"0000000058626f782033363020576900,Xbox 360 Controller,a:b0,b:b1,back:b14,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,guide:b7,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Linux,", +"030000005e0400001907000000010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e0400008e02000010010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e0400008e02000014010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e0400009102000007010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000a102000000010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000a102000007010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000a102000030060000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e00001503000000020000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e0400008e02000000010000,Xbox 360 EasySMX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000a102000014010000,Xbox 360 Receiver,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"0000000058626f782047616d65706100,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e0400000202000000010000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux,", +"030000005e0400008e02000072050000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000006f0e00001304000000010000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000ffff0000ffff000000010000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux,", +"030000005e0400000a0b000005040000,Xbox One Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux,", "030000005e040000d102000002010000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000ea02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000ea02000001030000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"050000005e040000e002000003090000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"050000005e040000fd02000003090000,Xbox One Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", "050000005e040000fd02000030110000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"060000005e040000dd02000003020000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"050000005e040000e302000002090000,Xbox One Elite,a:b0,b:b1,back:b136,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000005e040000220b000013050000,Xbox One Elite 2 Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", "050000005e040000050b000002090000,Xbox One Elite Series 2,a:b0,b:b1,back:b136,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"030000005e040000ea02000000000000,Xbox One Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"050000005e040000e002000003090000,Xbox One Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"050000005e040000fd02000003090000,Xbox One Wireless Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"030000005e040000ea02000001030000,Xbox One Wireless Controller (Model 1708),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000ea02000011050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000ea02000015050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"060000005e040000ea0200000b050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"060000005e040000ea0200000d050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"060000005e040000ea02000016050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "030000005e040000120b000001050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000120b000005050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000120b000007050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000120b000009050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000120b00000d050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000120b00000f050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000120b000011050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000120b000014050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000120b000015050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "030000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", "050000005e040000130b000001050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", "050000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", -"030000005e040000120b000005050000,XBox Series pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"030000005e0400008e02000000010000,xbox360 Wireless EasySMX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", -"03000000450c00002043000010010000,XEOX Gamepad SL-6556-BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", -"03000000ac0500005b05000010010000,Xiaoji Gamesir-G3w,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", -"05000000172700004431000029010000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Linux,", -"03000000c0160000e105000001010000,Xin-Mo Xin-Mo Dual Arcade,a:b4,b:b3,back:b6,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b9,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b1,y:b0,platform:Linux,", -"03000000120c0000100e000011010000,ZEROPLUS P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"03000000120c0000101e000011010000,ZEROPLUS P4 Wired Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", -"03000000af1e00002400000010010000,Clockwork Pi DevTerm,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b9,x:b3,y:b0,platform:Linux,", +"050000005e040000130b000007050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000005e040000130b000009050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000005e040000130b000011050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000005e040000130b000013050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000005e040000130b000015050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000005e040000130b000017050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"060000005e040000120b000007050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"060000005e040000120b00000b050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"060000005e040000120b00000d050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"060000005e040000120b00000f050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"050000005e040000130b000022050000,Xbox Series X Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000005e040000200b000013050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000005e040000200b000017050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000005e040000220b000017050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"03000000450c00002043000010010000,XEOX SL6556 BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", +"05000000172700004431000029010000,XiaoMi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Linux,", +"03000000c0160000e105000001010000,XinMo Dual Arcade,a:b4,b:b3,back:b6,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b9,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b1,y:b0,platform:Linux,", +"030000005e0400008e02000020010000,XInput Adapter,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"03000000120c0000100e000011010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000120c0000101e000011010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", +"03000000120c0000182e000011010000,Zeroplus PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,", #endif // GLFW_BUILD_LINUX_JOYSTICK }; From 8dbacafbe6e78e7fcb93d637945b286b0743e163 Mon Sep 17 00:00:00 2001 From: garrisonhh Date: Thu, 10 Jul 2025 12:48:29 -0400 Subject: [PATCH 036/328] fix overflow in cast for ImageBlurGaussian --- src/rtextures.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/rtextures.c b/src/rtextures.c index 87aa900a3..3c0ed10f7 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -2217,9 +2217,9 @@ void ImageBlurGaussian(Image *image, int blurSize) else if (pixelsCopy1[i].w <= 255.0f) { float alpha = (float)pixelsCopy1[i].w/255.0f; - pixels[i].r = (unsigned char)((float)pixelsCopy1[i].x/alpha); - pixels[i].g = (unsigned char)((float)pixelsCopy1[i].y/alpha); - pixels[i].b = (unsigned char)((float)pixelsCopy1[i].z/alpha); + pixels[i].r = (unsigned char)fminf((float)pixelsCopy1[i].x/alpha, 255.0); + pixels[i].g = (unsigned char)fminf((float)pixelsCopy1[i].y/alpha, 255.0); + pixels[i].b = (unsigned char)fminf((float)pixelsCopy1[i].z/alpha, 255.0); pixels[i].a = (unsigned char) pixelsCopy1[i].w; } } From 9e908e4a76958c6922ceab4e788ccca647e68853 Mon Sep 17 00:00:00 2001 From: PanicTitan <66186142+PanicTitan@users.noreply.github.com> Date: Mon, 14 Jul 2025 00:27:56 -0300 Subject: [PATCH 037/328] Update core_custom_frame_control.c to work properly on web --- examples/core/core_custom_frame_control.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/examples/core/core_custom_frame_control.c b/examples/core/core_custom_frame_control.c index a9b98b039..2e9595e98 100644 --- a/examples/core/core_custom_frame_control.c +++ b/examples/core/core_custom_frame_control.c @@ -61,7 +61,9 @@ int main(void) { // Update //---------------------------------------------------------------------------------- - PollInputEvents(); // Poll input events (SUPPORT_CUSTOM_FRAME_CONTROL) + #ifndef PLATFORM_WEB // NOTE: On non web platforms the PollInputEvents just works before the inputs checks + PollInputEvents(); // Poll input events (SUPPORT_CUSTOM_FRAME_CONTROL) + #endif if (IsKeyPressed(KEY_SPACE)) pause = !pause; @@ -76,6 +78,10 @@ int main(void) if (position >= GetScreenWidth()) position = 0; timeCounter += deltaTime; // We count time (seconds) } + + #ifdef PLATFORM_WEB // NOTE: On web platform for some reason the PollInputEvents only works after the inputs check, so just call it after check all your inputs (on web) + PollInputEvents(); // Poll input events (SUPPORT_CUSTOM_FRAME_CONTROL) + #endif //---------------------------------------------------------------------------------- // Draw From 0c69c43c3a125f2850b0ae3af6144577a2e7ad86 Mon Sep 17 00:00:00 2001 From: sir-irk Date: Sun, 13 Jul 2025 22:37:41 -0500 Subject: [PATCH 038/328] fix ImageDrawLineEx to be able to draw even numbered thicknesses --- src/rtextures.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/rtextures.c b/src/rtextures.c index 3c0ed10f7..a153bb318 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -3565,34 +3565,39 @@ void ImageDrawLineEx(Image *dst, Vector2 start, Vector2 end, int thick, Color co int dx = x2 - x1; int dy = y2 - y1; - // Draw the main line between (x1, y1) and (x2, y2) - ImageDrawLine(dst, x1, y1, x2, y2, color); - // Determine if the line is more horizontal or vertical if ((dx != 0) && (abs(dy/dx) < 1)) { // Line is more horizontal - // Calculate half the width of the line - int wy = (thick - 1)*(int)sqrtf((float)(dx*dx + dy*dy))/(2*abs(dx)); + int wy = thick - 1; - // Draw additional lines above and below the main line - for (int i = 1; i <= wy; i++) + //Draw the main line and lower half + for (int i = 0; i <= ((wy+1)/2); i++) + { + ImageDrawLine(dst, x1, y1 + i, x2, y2 + i, color); // Draw below the main line + } + + //Draw the upper half + for (int i = 1; i <= (wy/2); i++) { ImageDrawLine(dst, x1, y1 - i, x2, y2 - i, color); // Draw above the main line - ImageDrawLine(dst, x1, y1 + i, x2, y2 + i, color); // Draw below the main line } } else if (dy != 0) { // Line is more vertical or perfectly horizontal - // Calculate half the width of the line - int wx = (thick - 1)*(int)sqrtf((float)(dx*dx + dy*dy))/(2*abs(dy)); + int wx = thick - 1; - // Draw additional lines to the left and right of the main line - for (int i = 1; i <= wx; i++) + //Draw the main line and right half + for (int i = 0; i <= ((wx+1)/2); i++) + { + ImageDrawLine(dst, x1 + i, y1, x2 + i, y2, color); // Draw right of the main line + } + + //Draw the the left half + for (int i = 1; i <= (wx/2); i++) { ImageDrawLine(dst, x1 - i, y1, x2 - i, y2, color); // Draw left of the main line - ImageDrawLine(dst, x1 + i, y1, x2 + i, y2, color); // Draw right of the main line } } } From 9f03d7c426239fb6065cff76852caa417edff00f Mon Sep 17 00:00:00 2001 From: sir-irk Date: Sun, 13 Jul 2025 23:02:02 -0500 Subject: [PATCH 039/328] fixing comments --- src/rtextures.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/rtextures.c b/src/rtextures.c index a153bb318..72ad68c40 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -3569,15 +3569,17 @@ void ImageDrawLineEx(Image *dst, Vector2 start, Vector2 end, int thick, Color co if ((dx != 0) && (abs(dy/dx) < 1)) { // Line is more horizontal + + // How many additional lines to draw int wy = thick - 1; - //Draw the main line and lower half + // Draw the main line and lower half for (int i = 0; i <= ((wy+1)/2); i++) { ImageDrawLine(dst, x1, y1 + i, x2, y2 + i, color); // Draw below the main line } - //Draw the upper half + // Draw the upper half for (int i = 1; i <= (wy/2); i++) { ImageDrawLine(dst, x1, y1 - i, x2, y2 - i, color); // Draw above the main line @@ -3586,6 +3588,8 @@ void ImageDrawLineEx(Image *dst, Vector2 start, Vector2 end, int thick, Color co else if (dy != 0) { // Line is more vertical or perfectly horizontal + + // How many additional lines to draw int wx = thick - 1; //Draw the main line and right half @@ -3594,7 +3598,7 @@ void ImageDrawLineEx(Image *dst, Vector2 start, Vector2 end, int thick, Color co ImageDrawLine(dst, x1 + i, y1, x2 + i, y2, color); // Draw right of the main line } - //Draw the the left half + // Draw the left half for (int i = 1; i <= (wx/2); i++) { ImageDrawLine(dst, x1 - i, y1, x2 - i, y2, color); // Draw left of the main line From fce3102f1c98c8e8758df92e2f07fcdc39470d15 Mon Sep 17 00:00:00 2001 From: Jeremy Montgomery Date: Mon, 14 Jul 2025 00:11:17 -0500 Subject: [PATCH 040/328] Remove excess comments --- src/rtextures.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/rtextures.c b/src/rtextures.c index 72ad68c40..02845b40b 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -3576,13 +3576,13 @@ void ImageDrawLineEx(Image *dst, Vector2 start, Vector2 end, int thick, Color co // Draw the main line and lower half for (int i = 0; i <= ((wy+1)/2); i++) { - ImageDrawLine(dst, x1, y1 + i, x2, y2 + i, color); // Draw below the main line + ImageDrawLine(dst, x1, y1 + i, x2, y2 + i, color); } // Draw the upper half for (int i = 1; i <= (wy/2); i++) { - ImageDrawLine(dst, x1, y1 - i, x2, y2 - i, color); // Draw above the main line + ImageDrawLine(dst, x1, y1 - i, x2, y2 - i, color); } } else if (dy != 0) @@ -3595,13 +3595,13 @@ void ImageDrawLineEx(Image *dst, Vector2 start, Vector2 end, int thick, Color co //Draw the main line and right half for (int i = 0; i <= ((wx+1)/2); i++) { - ImageDrawLine(dst, x1 + i, y1, x2 + i, y2, color); // Draw right of the main line + ImageDrawLine(dst, x1 + i, y1, x2 + i, y2, color); } // Draw the left half for (int i = 1; i <= (wx/2); i++) { - ImageDrawLine(dst, x1 - i, y1, x2 - i, y2, color); // Draw left of the main line + ImageDrawLine(dst, x1 - i, y1, x2 - i, y2, color); } } } From 901afadbf1c629aabb66749cc2c72301d3729321 Mon Sep 17 00:00:00 2001 From: Daniel Vincent Horgan Date: Mon, 14 Jul 2025 15:36:02 +0200 Subject: [PATCH 041/328] fix warning log macro in rlgl --- src/rlgl.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/rlgl.h b/src/rlgl.h index 2562ad45d..b6703c923 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -1885,7 +1885,7 @@ void rlActiveDrawBuffers(int count) if (count > 0) { - if (count > 8) TRACELOG(LOG_WARNING, "GL: Max color buffers limited to 8"); + if (count > 8) TRACELOG(RL_LOG_WARNING, "GL: Max color buffers limited to 8"); else { unsigned int buffers[8] = { @@ -1902,7 +1902,7 @@ void rlActiveDrawBuffers(int count) glDrawBuffers(count, buffers); } } - else TRACELOG(LOG_WARNING, "GL: One color buffer active by default"); + else TRACELOG(RL_LOG_WARNING, "GL: One color buffer active by default"); #endif } @@ -2219,10 +2219,10 @@ static void GLAPIENTRY rlDebugMessageCallback(GLenum source, GLenum type, GLuint default: break; } - TRACELOG(LOG_WARNING, "GL: OpenGL debug message: %s", message); - TRACELOG(LOG_WARNING, " > Type: %s", msgType); - TRACELOG(LOG_WARNING, " > Source = %s", msgSource); - TRACELOG(LOG_WARNING, " > Severity = %s", msgSeverity); + TRACELOG(RL_LOG_WARNING, "GL: OpenGL debug message: %s", message); + TRACELOG(RL_LOG_WARNING, " > Type: %s", msgType); + TRACELOG(RL_LOG_WARNING, " > Source = %s", msgSource); + TRACELOG(RL_LOG_WARNING, " > Severity = %s", msgSeverity); } #endif @@ -4178,7 +4178,7 @@ unsigned int rlCompileShader(const char *shaderCode, int type) RL_FREE(log); } - // Unload object allocated by glCreateShader(), + // Unload object allocated by glCreateShader(), // despite failing in the compilation process glDeleteShader(shader); shader = 0; From 44ebf32389997677570b4d16aea48bf244fb441e Mon Sep 17 00:00:00 2001 From: backspaceoverload <220821874+backspaceoverload@users.noreply.github.com> Date: Tue, 15 Jul 2025 00:52:47 -0300 Subject: [PATCH 042/328] Fix HalfToFloat Mantissa hex value --- src/rtextures.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/rtextures.c b/src/rtextures.c index 02845b40b..90938fe6a 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -3576,32 +3576,32 @@ void ImageDrawLineEx(Image *dst, Vector2 start, Vector2 end, int thick, Color co // Draw the main line and lower half for (int i = 0; i <= ((wy+1)/2); i++) { - ImageDrawLine(dst, x1, y1 + i, x2, y2 + i, color); + ImageDrawLine(dst, x1, y1 + i, x2, y2 + i, color); } // Draw the upper half for (int i = 1; i <= (wy/2); i++) { - ImageDrawLine(dst, x1, y1 - i, x2, y2 - i, color); + ImageDrawLine(dst, x1, y1 - i, x2, y2 - i, color); } } else if (dy != 0) { // Line is more vertical or perfectly horizontal - + // How many additional lines to draw int wx = thick - 1; //Draw the main line and right half for (int i = 0; i <= ((wx+1)/2); i++) { - ImageDrawLine(dst, x1 + i, y1, x2 + i, y2, color); + ImageDrawLine(dst, x1 + i, y1, x2 + i, y2, color); } // Draw the left half for (int i = 1; i <= (wx/2); i++) { - ImageDrawLine(dst, x1 - i, y1, x2 - i, y2, color); + ImageDrawLine(dst, x1 - i, y1, x2 - i, y2, color); } } } @@ -5409,7 +5409,7 @@ static float HalfToFloat(unsigned short x) } uni; const unsigned int e = (x & 0x7c00) >> 10; // Exponent - const unsigned int m = (x & 0x03cc) << 13; // Mantissa + const unsigned int m = (x & 0x03ff) << 13; // Mantissa uni.fm = (float)m; const unsigned int v = uni.ui >> 23; // Evil log2 bit hack to count leading zeros in denormalized format uni.ui = (x & 0x8000) << 16 | (e != 0)*((e + 112) << 23 | m) | ((e == 0)&(m != 0))*((v - 37) << 23 | ((m << (150 - v)) & 0x007fe000)); // sign : normalized : denormalized From 85bf04c7bf01b226fb413a1bdcebfa271e83d216 Mon Sep 17 00:00:00 2001 From: sleeptightAnsiC <91839286+sleeptightAnsiC@users.noreply.github.com> Date: Tue, 15 Jul 2025 07:53:50 +0200 Subject: [PATCH 043/328] [rl_gputex] fix: decouple logging and memory allocation from Raylib - make sure that src/external/rl_gputex.h uses it's own macros for printing warnings and allocating memory - add few additional macros in order to decouple rl_gputex from headers that are being included by Raylib (e.g. *_MEMSET, *_NULL and so on) - make sure that rl_gputex uses RL_*ALLOC, TRACELOG and RLAPI macros when (and only when) being included by src/rtextures.c - replace LOG() and RL_GPUTEX_SHOW_LOG_INFO macros with: RL_GPUTEX_WARN and RL_GPUTEX_SHOW_WARN_INFO (this is a breaking change, but it was broken and unusable anyway, see: https://github.com/raysan5/raylib/issues/5039#issuecomment-3065732596 ) - fixes issue all issues mentioned in: https://github.com/raysan5/raylib/issues/5039#issuecomment-3065732596 - remove logging upon successfully saving a file; Raylib does this anyway and we want rl_gputex to only print WARNings upon failures; see: https://discord.com/channels/426912293134270465/541710686468702250/1394406734306480352 - add additional condition when saving a file; now checks for both fwrite() and fclose() failures; before it would warn about both, but only return result based on fclose() - add some notes about the current state of compiling rl_gputex without depending on Raylib (spoiler: it's still broken...) - bump rl_gputex version to 1.1 since this is a potential breaking change (only for people attempting to use it without Raylib) Fixes: https://github.com/raysan5/raylib/issues/5039 Reference: https://discord.com/channels/426912293134270465/541710686468702250/1394403611852931255 --- src/external/rl_gputex.h | 225 +++++++++++++++++++++++++++------------ src/rtextures.c | 12 +++ 2 files changed, 168 insertions(+), 69 deletions(-) diff --git a/src/external/rl_gputex.h b/src/external/rl_gputex.h index 4043a9239..4b4e9beb4 100644 --- a/src/external/rl_gputex.h +++ b/src/external/rl_gputex.h @@ -1,6 +1,6 @@ /********************************************************************************************** * -* rl_gputex v1.0 - GPU compressed textures loading and saving +* rl_gputex v1.1 - GPU compressed textures loading and saving * * DESCRIPTION: * @@ -10,8 +10,15 @@ * Note that some file formats (DDS, PVR, KTX) also support uncompressed data storage. * In those cases data is loaded uncompressed and format is returned. * +* FIXME: This library still depends on Raylib due to the following reasons: +* - rl_save_ktx_to_memory() requires rlGetGlTextureFormats() from rlgl.h +* though this is not a problem, if you don't need KTX support +* - all constants starting with PIXELFORMAT_* come from raylib.h +* this one is pretty hard to change, because it depends on exact ABI of 'enum PixelFormat' +* however, you can copy-paste said enum or include the header without Raylib sources +* - (probably) few minor issues that are hidden by Raylib inclusion and haven't been spotted yet +* * TODO: -* - Implement raylib function: rlGetGlTextureFormats(), required by rl_save_ktx_to_memory() * - Review rl_load_ktx_from_memory() to support KTX v2.2 specs * * CONFIGURATION: @@ -23,6 +30,40 @@ * #define RL_GPUTEX_SUPPORT_ASTC * Define desired file formats to be supported * +* #define RL_GPUTEX_SHOW_WARN_INFO +* Define, if you wish to see warnings generated by the library +* This will include unless you provide your own RL_GPUTEX_WARN +* #define RL_GPUTEX_WARN +* Define, if you wish to provide your own warning function +* Make sure that this macro puts newline character '\n' at the end +* +* #define RL_GPUTEX_MALLOC +* #define RL_GPUTEX_CALLOC +* #define RL_GPUTEX_REALLOC +* #define RL_GPUTEX_FREE +* Define those macros in order to provide your own libc-compliant allocator; +* not doing so will include +* If you're providing any of those, you must provide ALL of them, +* otherwise the code will (most likely) crash... +* +* #define RL_GPUTEX_NULL +* Define in order to provide your own libc-compliant NULL pointer; +* not doing so will include +* +* #define RL_GPUTEX_MEMCPY +* Define in order to provide your own libc-compliant 'memcpy' function; +* not doing so will include +* +* #define RLGPUTEXAPI +* Define to compiler-specific intrinsic, if you wish to export public functions +* There is no need to do so when statically linking +* +* VERSIONS HISTORY: +* 1.0 (17-Sep-2022) First version has been created by migrating part of compressed-texture-loading +* functionality from Raylib src/rtextures.c into self-contained library +* 1.1 (15-Jul-2025) Several minor fixes related to specific image formats; some work has been done +* in order to decouple the library from Raylib by introducing few new macros; library still +* requires Raylib in order to function properly * * LICENSE: zlib/libpng * @@ -48,8 +89,8 @@ #ifndef RL_GPUTEX_H #define RL_GPUTEX_H -#ifndef RLAPI - #define RLAPI // Functions defined as 'extern' by default (implicit specifiers) +#ifndef RLGPUTEXAPI + #define RLGPUTEXAPI // Functions defined as 'extern' by default (implicit specifiers) #endif //---------------------------------------------------------------------------------- @@ -60,13 +101,13 @@ extern "C" { // Prevents name mangling of functions #endif // Load image data from memory data files -RLAPI void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips); -RLAPI void *rl_load_pkm_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips); -RLAPI void *rl_load_ktx_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips); -RLAPI void *rl_load_pvr_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips); -RLAPI void *rl_load_astc_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips); +RLGPUTEXAPI void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips); +RLGPUTEXAPI void *rl_load_pkm_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips); +RLGPUTEXAPI void *rl_load_ktx_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips); +RLGPUTEXAPI void *rl_load_pvr_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips); +RLGPUTEXAPI void *rl_load_astc_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips); -RLAPI int rl_save_ktx_to_memory(const char *fileName, void *data, int width, int height, int format, int mipmaps); // Save image data as KTX file +RLGPUTEXAPI int rl_save_ktx_to_memory(const char *fileName, void *data, int width, int height, int format, int mipmaps); // Save image data as KTX file #if defined(__cplusplus) } @@ -83,13 +124,57 @@ RLAPI int rl_save_ktx_to_memory(const char *fileName, void *data, int width, int #if defined(RL_GPUTEX_IMPLEMENTATION) -// Simple log system to avoid RPNG_LOG() calls if required +#if defined(RL_GPUTEX_SHOW_WARN_INFO) && !defined(RL_GPUTEX_WARN) + #include // Required for: printf() +#endif + +#if !defined(RL_GPUTEX_MALLOC) || !defined(RL_GPUTEX_NULL) + #include // Required for: NULL, malloc(), calloc(), free(), realloc() +#endif + +#if !defined(RL_GPUTEX_MEMCPY) + #include // Required for: memcpy() +#endif + +#if defined(RL_GPUTEX_SUPPORT_KTX) && !defined(RAYLIB_H) + #error "FIXME: RL_GPUTEX_SUPPORT_KTX require Raylib function: rlGetGlTextureFormats()" +#endif + +#if defined(RL_GPUTEX_MALLOC) || defined(RL_GPUTEX_CALLOC) || defined(RL_GPUTEX_REALLOC) || defined(RL_GPUTEX_FREE) + #if !defined(RL_GPUTEX_MALLOC) || !defined(RL_GPUTEX_CALLOC) || !defined(RL_GPUTEX_REALLOC) || !defined(RL_GPUTEX_FREE) + #error "You must provide all RL_GPUTEX_* allocating functions - not just few!" + #endif +#endif + +#if !defined(RL_GPUTEX_MALLOC) + #define RL_GPUTEX_MALLOC(sz) malloc(sz) + #define RL_GPUTEX_CALLOC(num, sz) calloc(num, sz) + #define RL_GPUTEX_REALLOC(ptr, sz) realloc(ptr, sz) + #define RL_GPUTEX_FREE(ptr) free(ptr) +#endif + +#if !defined(RL_GPUTEX_NULL) + #define RL_GPUTEX_NULL NULL +#endif + +#if !defined(RL_GPUTEX_MEMCPY) + #define RL_GPUTEX_MEMCPY(dest, src, num) memcpy(dest, src, num) +#endif + +// Simple warning system to avoid RPNG_LOG() calls if required // NOTE: Avoiding those calls, also avoids const strings memory usage -#define RL_GPUTEX_SHOW_LOG_INFO -#if defined(RL_GPUTEX_SHOW_LOG_INFO) && !defined(LOG) -#define LOG(...) printf(__VA_ARGS__) +// WARN: This macro expects that newline character is added automatically +// in order to match the functionality of Raylib's TRACELOG() +#if defined(RL_GPUTEX_SHOW_WARN_INFO) + #if !defined(RL_GPUTEX_WARN) + #define RL_GPUTEX_WARN(...) (void)(printf("RL_GPUTEX: WARNING: " __VA_ARGS__), printf("\n")) + #endif #else -#define LOG(...) + #if defined(RL_GPUTEX_WARN) + // undefine it first in order to supress warnings about macro redefinition + #undef RL_GPUTEX_WARN + #endif + #define RL_GPUTEX_WARN(...) #endif //---------------------------------------------------------------------------------- @@ -105,8 +190,8 @@ static int get_pixel_data_size(int width, int height, int format); // Loading DDS from memory image data (compressed or uncompressed) void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips) { - void *image_data = NULL; // Image data pointer - int image_pixel_size = 0; // Image pixel size + void *image_data = RL_GPUTEX_NULL; // Image data pointer + int image_pixel_size = 0; // Image pixel size unsigned char *file_data_ptr = (unsigned char *)file_data; @@ -153,7 +238,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ unsigned int reserved2; } dds_header; - if (file_data_ptr != NULL) + if (file_data_ptr != RL_GPUTEX_NULL) { // Verify the type of file unsigned char *dds_header_id = file_data_ptr; @@ -161,7 +246,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ if ((dds_header_id[0] != 'D') || (dds_header_id[1] != 'D') || (dds_header_id[2] != 'S') || (dds_header_id[3] != ' ')) { - LOG("WARNING: IMAGE: DDS file data not valid"); + RL_GPUTEX_WARN("DDS file data not valid"); } else { @@ -172,8 +257,8 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ *width = header->width; *height = header->height; - if (*width % 4 != 0) LOG("WARNING: IMAGE: DDS file width must be multiple of 4. Image will not display correctly"); - if (*height % 4 != 0) LOG("WARNING: IMAGE: DDS file height must be multiple of 4. Image will not display correctly"); + if (*width % 4 != 0) RL_GPUTEX_WARN("DDS file width must be multiple of 4. Image will not display correctly"); + if (*height % 4 != 0) RL_GPUTEX_WARN("DDS file height must be multiple of 4. Image will not display correctly"); image_pixel_size = header->width*header->height; @@ -186,9 +271,9 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ { int data_size = image_pixel_size*sizeof(unsigned short); if (header->mipmap_count > 1) data_size = data_size + data_size / 3; - image_data = RL_MALLOC(data_size); + image_data = RL_GPUTEX_MALLOC(data_size); - memcpy(image_data, file_data_ptr, data_size); + RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); *format = PIXELFORMAT_UNCOMPRESSED_R5G6B5; } @@ -198,9 +283,9 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ { int data_size = image_pixel_size*sizeof(unsigned short); if (header->mipmap_count > 1) data_size = data_size + data_size / 3; - image_data = RL_MALLOC(data_size); + image_data = RL_GPUTEX_MALLOC(data_size); - memcpy(image_data, file_data_ptr, data_size); + RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); unsigned char alpha = 0; @@ -218,9 +303,9 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ { int data_size = image_pixel_size*sizeof(unsigned short); if (header->mipmap_count > 1) data_size = data_size + data_size / 3; - image_data = RL_MALLOC(data_size); + image_data = RL_GPUTEX_MALLOC(data_size); - memcpy(image_data, file_data_ptr, data_size); + RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); unsigned char alpha = 0; @@ -240,9 +325,9 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ { int data_size = image_pixel_size*3*sizeof(unsigned char); if (header->mipmap_count > 1) data_size = data_size + data_size / 3; - image_data = RL_MALLOC(data_size); + image_data = RL_GPUTEX_MALLOC(data_size); - memcpy(image_data, file_data_ptr, data_size); + RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); *format = PIXELFORMAT_UNCOMPRESSED_R8G8B8; } @@ -250,9 +335,9 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ { int data_size = image_pixel_size*4*sizeof(unsigned char); if (header->mipmap_count > 1) data_size = data_size + data_size / 3; - image_data = RL_MALLOC(data_size); + image_data = RL_GPUTEX_MALLOC(data_size); - memcpy(image_data, file_data_ptr, data_size); + RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); unsigned char blue = 0; @@ -276,9 +361,9 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ if (header->mipmap_count > 1) data_size = header->pitch_or_linear_size + header->pitch_or_linear_size / 3; else data_size = header->pitch_or_linear_size; - image_data = RL_MALLOC(data_size*sizeof(unsigned char)); + image_data = RL_GPUTEX_MALLOC(data_size*sizeof(unsigned char)); - memcpy(image_data, file_data_ptr, data_size); + RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); switch (header->ddspf.fourcc) { @@ -305,7 +390,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ // PKM is a much simpler file format used mainly to contain a single ETC1/ETC2 compressed image (no mipmaps) void *rl_load_pkm_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips) { - void *image_data = NULL; // Image data pointer + void *image_data = RL_GPUTEX_NULL; // Image data pointer unsigned char *file_data_ptr = (unsigned char *)file_data; @@ -336,13 +421,13 @@ void *rl_load_pkm_from_memory(const unsigned char *file_data, unsigned int file_ // NOTE: The extended width and height are the widths rounded up to a multiple of 4. // NOTE: ETC is always 4bit per pixel (64 bit for each 4x4 block of pixels) - if (file_data_ptr != NULL) + if (file_data_ptr != RL_GPUTEX_NULL) { pkm_header *header = (pkm_header *)file_data_ptr; if ((header->id[0] != 'P') || (header->id[1] != 'K') || (header->id[2] != 'M') || (header->id[3] != ' ')) { - LOG("WARNING: IMAGE: PKM file data not valid"); + RL_GPUTEX_WARN("PKM file data not valid"); } else { @@ -362,9 +447,9 @@ void *rl_load_pkm_from_memory(const unsigned char *file_data, unsigned int file_ int data_size = (*width)*(*height)*bpp/8; // Total data size in bytes - image_data = RL_MALLOC(data_size*sizeof(unsigned char)); + image_data = RL_GPUTEX_MALLOC(data_size*sizeof(unsigned char)); - memcpy(image_data, file_data_ptr, data_size); + RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); if (header->format == 0) *format = PIXELFORMAT_COMPRESSED_ETC1_RGB; else if (header->format == 1) *format = PIXELFORMAT_COMPRESSED_ETC2_RGB; @@ -381,7 +466,7 @@ void *rl_load_pkm_from_memory(const unsigned char *file_data, unsigned int file_ // TODO: Review KTX loading, many things changed! void *rl_load_ktx_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips) { - void *image_data = NULL; // Image data pointer + void *image_data = RL_GPUTEX_NULL; // Image data pointer unsigned char *file_data_ptr = (unsigned char *)file_data; @@ -419,14 +504,14 @@ void *rl_load_ktx_from_memory(const unsigned char *file_data, unsigned int file_ // NOTE: Before start of every mipmap data block, we have: unsigned int data_size - if (file_data_ptr != NULL) + if (file_data_ptr != RL_GPUTEX_NULL) { ktx_header *header = (ktx_header *)file_data_ptr; if ((header->id[1] != 'K') || (header->id[2] != 'T') || (header->id[3] != 'X') || (header->id[4] != ' ') || (header->id[5] != '1') || (header->id[6] != '1')) { - LOG("WARNING: IMAGE: KTX file data not valid"); + RL_GPUTEX_WARN("KTX file data not valid"); } else { @@ -441,9 +526,9 @@ void *rl_load_ktx_from_memory(const unsigned char *file_data, unsigned int file_ int data_size = ((int *)file_data_ptr)[0]; file_data_ptr += sizeof(int); - image_data = RL_MALLOC(data_size*sizeof(unsigned char)); + image_data = RL_GPUTEX_MALLOC(data_size*sizeof(unsigned char)); - memcpy(image_data, file_data_ptr, data_size); + RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); if (header->gl_internal_format == 0x8D64) *format = PIXELFORMAT_COMPRESSED_ETC1_RGB; else if (header->gl_internal_format == 0x9274) *format = PIXELFORMAT_COMPRESSED_ETC2_RGB; @@ -492,7 +577,7 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo w /= 2; h /= 2; } - unsigned char *file_data = RL_CALLOC(data_size, 1); + unsigned char *file_data = RL_GPUTEX_CALLOC(data_size, 1); unsigned char *file_data_ptr = file_data; ktx_header header = { 0 }; @@ -504,7 +589,7 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo const char ktx_identifier[12] = { 0xAB, 'K', 'T', 'X', ' ', '1', '1', 0xBB, '\r', '\n', 0x1A, '\n' }; // Get the image header - memcpy(header.id, ktx_identifier, 12); // KTX 1.1 signature + RL_GPUTEX_MEMCPY(header.id, ktx_identifier, 12); // KTX 1.1 signature header.endianness = 0; header.gl_type = 0; // Obtained from format header.gl_type_size = 1; @@ -524,10 +609,10 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo // NOTE: We can save into a .ktx all PixelFormats supported by raylib, including compressed formats like DXT, ETC or ASTC - if (header.gl_format == -1) LOG("WARNING: IMAGE: GL format not supported for KTX export (%i)", header.gl_format); + if (header.gl_format == -1) RL_GPUTEX_WARN("GL format not supported for KTX export (%i)", header.gl_format); else { - memcpy(file_data_ptr, &header, sizeof(ktx_header)); + RL_GPUTEX_MEMCPY(file_data_ptr, &header, sizeof(ktx_header)); file_data_ptr += sizeof(ktx_header); int temp_width = width; @@ -539,8 +624,8 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo { unsigned int data_size = get_pixel_data_size(temp_width, temp_height, format); - memcpy(file_data_ptr, &data_size, sizeof(unsigned int)); - memcpy(file_data_ptr + 4, (unsigned char *)data + data_offset, data_size); + RL_GPUTEX_MEMCPY(file_data_ptr, &data_size, sizeof(unsigned int)); + RL_GPUTEX_MEMCPY(file_data_ptr + 4, (unsigned char *)data + data_offset, data_size); temp_width /= 2; temp_height /= 2; @@ -553,20 +638,22 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo int success = false; FILE *file = fopen(file_name, "wb"); - if (file != NULL) + if (file != RL_GPUTEX_NULL) { unsigned int count = (unsigned int)fwrite(file_data, sizeof(unsigned char), data_size, file); - if (count == 0) LOG("WARNING: FILEIO: [%s] Failed to write file", file_name); - else if (count != data_size) LOG("WARNING: FILEIO: [%s] File partially written", file_name); - else LOG("INFO: FILEIO: [%s] File saved successfully", file_name); + if (count == 0) RL_GPUTEX_WARN("FILEIO: [%s] Failed to write file", file_name); + else if (count != data_size) RL_GPUTEX_WARN("FILEIO: [%s] File partially written", file_name); + else (void)0; // WARN: this branch is handled by Raylib, since rl_gputex only prints warnings int result = fclose(file); - if (result == 0) success = true; - } - else LOG("WARNING: FILEIO: [%s] Failed to open file", file_name); + if (result != 0) RL_GPUTEX_WARN("FILEIO: [%s] Failed to close file", file_name); - RL_FREE(file_data); // Free file data buffer + if (result == 0 && count == data_size) success = true; + } + else RL_GPUTEX_WARN("FILEIO: [%s] Failed to open file", file_name); + + RL_GPUTEX_FREE(file_data); // Free file data buffer // If all data has been written correctly to file, success = 1 return success; @@ -578,7 +665,7 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo // NOTE: PVR v2 not supported, use PVR v3 instead void *rl_load_pvr_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips) { - void *image_data = NULL; // Image data pointer + void *image_data = RL_GPUTEX_NULL; // Image data pointer unsigned char *file_data_ptr = (unsigned char *)file_data; @@ -636,7 +723,7 @@ void *rl_load_pvr_from_memory(const unsigned char *file_data, unsigned int file_ } PVRMetadata; #endif - if (file_data_ptr != NULL) + if (file_data_ptr != RL_GPUTEX_NULL) { // Check PVR image version unsigned char pvr_version = file_data_ptr[0]; @@ -648,7 +735,7 @@ void *rl_load_pvr_from_memory(const unsigned char *file_data, unsigned int file_ if ((header->id[0] != 'P') || (header->id[1] != 'V') || (header->id[2] != 'R') || (header->id[3] != 3)) { - LOG("WARNING: IMAGE: PVR file data not valid"); + RL_GPUTEX_WARN("PVR file data not valid"); } else { @@ -697,12 +784,12 @@ void *rl_load_pvr_from_memory(const unsigned char *file_data, unsigned int file_ } int data_size = (*width)*(*height)*bpp/8; // Total data size in bytes - image_data = RL_MALLOC(data_size*sizeof(unsigned char)); + image_data = RL_GPUTEX_MALLOC(data_size*sizeof(unsigned char)); - memcpy(image_data, file_data_ptr, data_size); + RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); } } - else if (pvr_version == 52) LOG("INFO: IMAGE: PVRv2 format not supported, update your files to PVRv3"); + else if (pvr_version == 52) RL_GPUTEX_WARN("PVRv2 format not supported, update your files to PVRv3"); } return image_data; @@ -713,7 +800,7 @@ void *rl_load_pvr_from_memory(const unsigned char *file_data, unsigned int file_ // Load ASTC compressed image data (ASTC compression) void *rl_load_astc_from_memory(const unsigned char *file_data, unsigned int file_size, int *width, int *height, int *format, int *mips) { - void *image_data = NULL; // Image data pointer + void *image_data = RL_GPUTEX_NULL; // Image data pointer unsigned char *file_data_ptr = (unsigned char *)file_data; @@ -736,13 +823,13 @@ void *rl_load_astc_from_memory(const unsigned char *file_data, unsigned int file unsigned char length[3]; // void *Z-size (1 for 2D images) } astc_header; - if (file_data_ptr != NULL) + if (file_data_ptr != RL_GPUTEX_NULL) { astc_header *header = (astc_header *)file_data_ptr; if ((header->id[3] != 0x5c) || (header->id[2] != 0xa1) || (header->id[1] != 0xab) || (header->id[0] != 0x13)) { - LOG("WARNING: IMAGE: ASTC file data not valid"); + RL_GPUTEX_WARN("ASTC file data not valid"); } else { @@ -761,14 +848,14 @@ void *rl_load_astc_from_memory(const unsigned char *file_data, unsigned int file { int data_size = (*width)*(*height)*bpp/8; // Data size in bytes - image_data = RL_MALLOC(data_size*sizeof(unsigned char)); + image_data = RL_GPUTEX_MALLOC(data_size*sizeof(unsigned char)); - memcpy(image_data, file_data_ptr, data_size); + RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); if (bpp == 8) *format = PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA; else if (bpp == 2) *format = PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA; } - else LOG("WARNING: IMAGE: ASTC block size configuration not supported"); + else RL_GPUTEX_WARN("ASTC block size configuration not supported"); } } diff --git a/src/rtextures.c b/src/rtextures.c index 02845b40b..a8cf1e70a 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -168,6 +168,18 @@ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-function" #endif + + + #define RL_GPUTEX_MALLOC RL_MALLOC + #define RL_GPUTEX_CALLOC RL_CALLOC + #define RL_GPUTEX_REALLOC RL_REALLOC + #define RL_GPUTEX_FREE RL_FREE + #define RL_GPUTEX_WARN(...) TRACELOG(LOG_WARNING, "IMAGE: " __VA_ARGS__) + #define RL_GPUTEX_SHOW_WARN_INFO + + // FIXME: probably, we should NOT export public functions from rl_gputex + // but this is how it always worked... so let's keep it this way + #define RLGPUTEXAPI RLAPI #define RL_GPUTEX_IMPLEMENTATION #include "external/rl_gputex.h" // Required for: rl_load_xxx_from_memory() From 8388160c32bda047c9a9ff079ff90b3f803ef8dd Mon Sep 17 00:00:00 2001 From: katonar Date: Tue, 15 Jul 2025 13:58:23 +0200 Subject: [PATCH 044/328] - fixing SUPPORT_DRM_CACHE define check at the end of InitPlatform() --- src/platforms/rcore_drm.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/platforms/rcore_drm.c b/src/platforms/rcore_drm.c index 09684291c..fc945d71f 100644 --- a/src/platforms/rcore_drm.c +++ b/src/platforms/rcore_drm.c @@ -1308,12 +1308,12 @@ int InitPlatform(void) #if defined(SUPPORT_DRM_CACHE) if(InitSwapScreenBuffer() == 0) { +#endif//SUPPORT_DRM_CACHE TRACELOG(LOG_INFO, "PLATFORM: DRM: Initialized successfully"); return 0; - } else { -#endif//SUPPORT_DRM_CACHE - TRACELOG(LOG_INFO, "PLATFORM: DRM: Initialized failed"); #if defined(SUPPORT_DRM_CACHE) + } else { + TRACELOG(LOG_INFO, "PLATFORM: DRM: Initialized failed"); return -1; } #endif //SUPPORT_DRM_CACHE From 3320a2c837897c13fd4f97405f82785b5983e425 Mon Sep 17 00:00:00 2001 From: Maicon Santana Date: Tue, 15 Jul 2025 19:07:15 +0100 Subject: [PATCH 045/328] Fix to prevent UpdateMusicStream to run without music playing --- src/raudio.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/raudio.c b/src/raudio.c index 40db999ea..d71fd1012 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -1871,6 +1871,7 @@ void SeekMusicStream(Music music, float position) void UpdateMusicStream(Music music) { if (music.stream.buffer == NULL) return; + if (!music.stream.buffer->playing) return; ma_mutex_lock(&AUDIO.System.lock); From 34af70866c93530e2360761c31f9a322d8d01ccb Mon Sep 17 00:00:00 2001 From: Romain Plumaugat Date: Tue, 15 Jul 2025 23:19:39 +0200 Subject: [PATCH 046/328] [rtextures] Fix ImageColorReplace() alpha issue #5009 --- src/rtextures.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/rtextures.c b/src/rtextures.c index 90938fe6a..e872985b3 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -2921,13 +2921,27 @@ void ImageColorReplace(Image *image, Color color, Color replace) } } - int format = image->format; + const int format = image->format; RL_FREE(image->data); image->data = pixels; image->format = PIXELFORMAT_UNCOMPRESSED_R8G8B8A8; - ImageFormat(image, format); + const bool formatHasNoAlpha = (format == PIXELFORMAT_UNCOMPRESSED_R8G8B8) || + (format == PIXELFORMAT_UNCOMPRESSED_R5G6B5) || + (format == PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) || + (format == PIXELFORMAT_UNCOMPRESSED_R32G32B32) || + (format == PIXELFORMAT_UNCOMPRESSED_R16G16B16) || + (format == PIXELFORMAT_COMPRESSED_DXT1_RGB) || + (format == PIXELFORMAT_COMPRESSED_ETC1_RGB) || + (format == PIXELFORMAT_COMPRESSED_ETC2_RGB) || + (format == PIXELFORMAT_COMPRESSED_PVRT_RGB); + + // Only convert back to original format if it supported alpha + if (!formatHasNoAlpha) + { + ImageFormat(image, format); + } } #endif // SUPPORT_IMAGE_MANIPULATION From d03ac97effc77e7cb3a3d7033f6c1f2eab36b3c8 Mon Sep 17 00:00:00 2001 From: veins1 <19636663+veins1@users.noreply.github.com> Date: Wed, 16 Jul 2025 14:18:38 +0000 Subject: [PATCH 047/328] GetMusicTimePlayed fix for music shorter than buffer size --- src/raudio.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/raudio.c b/src/raudio.c index d71fd1012..0502cf481 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -2086,8 +2086,12 @@ float GetMusicTimePlayed(Music music) int subBufferSize = (int)music.stream.buffer->sizeInFrames/2; int framesInFirstBuffer = music.stream.buffer->isSubBufferProcessed[0]? 0 : subBufferSize; int framesInSecondBuffer = music.stream.buffer->isSubBufferProcessed[1]? 0 : subBufferSize; + int framesInBuffers = framesInFirstBuffer + framesInSecondBuffer; + if (framesInBuffers > music.frameCount) { + if (!music.looping) framesInBuffers = music.frameCount; + } int framesSentToMix = music.stream.buffer->frameCursorPos%subBufferSize; - int framesPlayed = (framesProcessed - framesInFirstBuffer - framesInSecondBuffer + framesSentToMix)%(int)music.frameCount; + int framesPlayed = (framesProcessed - framesInBuffers + framesSentToMix)%(int)music.frameCount; if (framesPlayed < 0) framesPlayed += music.frameCount; secondsPlayed = (float)framesPlayed/music.stream.sampleRate; ma_mutex_unlock(&AUDIO.System.lock); From 0405de794ad9b542c73b4fee76e8ff90c8b9e8cc Mon Sep 17 00:00:00 2001 From: veins1 <19636663+veins1@users.noreply.github.com> Date: Wed, 16 Jul 2025 14:22:57 +0000 Subject: [PATCH 048/328] Fix for music stopping too early --- src/raudio.c | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/src/raudio.c b/src/raudio.c index 0502cf481..bf3745ff2 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -1891,14 +1891,26 @@ void UpdateMusicStream(Music music) // Check both sub-buffers to check if they require refilling for (int i = 0; i < 2; i++) { - if (!music.stream.buffer->isSubBufferProcessed[i]) continue; // No refilling required, move to next sub-buffer - unsigned int framesLeft = music.frameCount - music.stream.buffer->framesProcessed; // Frames left to be processed unsigned int framesToStream = 0; // Total frames to be streamed if ((framesLeft >= subBufferSizeInFrames) || music.looping) framesToStream = subBufferSizeInFrames; else framesToStream = framesLeft; + if (framesToStream == 0) { + bool framesInBufferPlayed = music.stream.buffer->isSubBufferProcessed[0] && music.stream.buffer->isSubBufferProcessed[1]; + if (framesInBufferPlayed) { + + ma_mutex_unlock(&AUDIO.System.lock); + StopMusicStream(music); + return; + } + ma_mutex_unlock(&AUDIO.System.lock); + return; + } + + if (!music.stream.buffer->isSubBufferProcessed[i]) continue; // No refilling required, move to next sub-buffer + int frameCountStillNeeded = framesToStream; int frameCountReadTotal = 0; @@ -2009,21 +2021,7 @@ void UpdateMusicStream(Music music) #endif default: break; } - UpdateAudioStreamInLockedState(music.stream, AUDIO.System.pcmBuffer, framesToStream); - - music.stream.buffer->framesProcessed = music.stream.buffer->framesProcessed%music.frameCount; - - if (framesLeft <= subBufferSizeInFrames) - { - if (!music.looping) - { - ma_mutex_unlock(&AUDIO.System.lock); - // Streaming is ending, we filled latest frames from input - StopMusicStream(music); - return; - } - } } ma_mutex_unlock(&AUDIO.System.lock); @@ -2688,8 +2686,7 @@ static void UpdateAudioStreamInLockedState(AudioStream stream, const void *data, ma_uint32 subBufferSizeInFrames = stream.buffer->sizeInFrames/2; unsigned char *subBuffer = stream.buffer->data + ((subBufferSizeInFrames*stream.channels*(stream.sampleSize/8))*subBufferToUpdate); - // Total frames processed in buffer is always the complete size, filled with 0 if required - stream.buffer->framesProcessed += subBufferSizeInFrames; + stream.buffer->framesProcessed += frameCount; // Does this API expect a whole buffer to be updated in one go? // Assuming so, but if not will need to change this logic From 093e5200d034b365323f7c9dadcb003c28945d1d Mon Sep 17 00:00:00 2001 From: wwderw <24878362+wwderw@users.noreply.github.com> Date: Thu, 17 Jul 2025 05:19:39 -0500 Subject: [PATCH 049/328] Update Makefile Clean up library build for the web --- src/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Makefile b/src/Makefile index 833f955a9..5b42237ef 100644 --- a/src/Makefile +++ b/src/Makefile @@ -868,7 +868,7 @@ clean: clean_shell_$(PLATFORM_SHELL) @echo "removed all generated files!" clean_shell_sh: - rm -fv *.o $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).a $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).bc $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).so* raygui.c $(RAYLIB_RELEASE_PATH)/*-protocol.h $(RAYLIB_RELEASE_PATH)/*-protocol-code.h + rm -fv *.o $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).a $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).web.a $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).bc $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).so* raygui.c $(RAYLIB_RELEASE_PATH)/*-protocol.h $(RAYLIB_RELEASE_PATH)/*-protocol-code.h ifeq ($(TARGET_PLATFORM),PLATFORM_ANDROID) rm -fv $(NATIVE_APP_GLUE)/android_native_app_glue.o endif @@ -879,6 +879,7 @@ clean_shell_cmd: del *.o /s cd $(RAYLIB_RELEASE_PATH) & \ del lib$(RAYLIB_LIB_NAME).a /s & \ + del lib$(RAYLIB_LIB_NAME).web.a /s & \ del lib$(RAYLIB_LIB_NAME)dll.a /s & \ del $(RAYLIB_LIB_NAME).dll /s & \ del raygui.c /s & \ From 8823aba9df6c83cf3f6cef36288a180c0e7a77f6 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 17 Jul 2025 18:49:34 +0200 Subject: [PATCH 050/328] Update rprand.h --- src/external/rprand.h | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/external/rprand.h b/src/external/rprand.h index ba8368726..95147d270 100644 --- a/src/external/rprand.h +++ b/src/external/rprand.h @@ -15,15 +15,15 @@ * - Support 64 bits generation * * ADDITIONAL NOTES: -* This library implements two pseudo-random number generation algorithms: +* This library implements two pseudo-random number generation algorithms: * * - Xoshiro128** : https://prng.di.unimi.it/xoshiro128starstar.c * - SplitMix64 : https://prng.di.unimi.it/splitmix64.c * * SplitMix64 is used to initialize the Xoshiro128** state, from a provided seed * -* It's suggested to use SplitMix64 to initialize the state of the generators starting from -* a 64-bit seed, as research has shown that initialization must be performed with a generator +* It's suggested to use SplitMix64 to initialize the state of the generators starting from +* a 64-bit seed, as research has shown that initialization must be performed with a generator * radically different in nature from the one initialized to avoid correlation on similar seeds. * * CONFIGURATION: @@ -31,7 +31,7 @@ * Generates the implementation of the library into the included file. * If not defined, the library is in header only mode and can be included in other headers * or source files without problems. But only ONE file should hold the implementation. -* +* * DEPENDENCIES: none * * VERSIONS HISTORY: @@ -153,7 +153,7 @@ static uint32_t rprand_state[4] = { // Xoshiro128** state, initializ 0x218b21e5, 0xaa91febd, 0x976414d4 -}; +}; //---------------------------------------------------------------------------------- // Module internal functions declaration @@ -190,8 +190,8 @@ int rprand_get_value(int min, int max) int *rprand_load_sequence(unsigned int count, int min, int max) { int *sequence = NULL; - - if (count > (unsigned int)(abs(max - min) + 1)) + + if (count > (unsigned int)(abs(max - min) + 1)) { RPRAND_LOG("WARNING: Sequence count required is greater than range provided\n"); //count = (max - min); @@ -244,26 +244,26 @@ static inline uint32_t rprand_rotate_left(const uint32_t x, int k) } // Xoshiro128** generator info: -// +// // Written in 2018 by David Blackman and Sebastiano Vigna (vigna@acm.org) -// +// // To the extent possible under law, the author has dedicated all copyright // and related and neighboring rights to this software to the public domain // worldwide. This software is distributed without any warranty. -// +// // See . -// +// // This is xoshiro128** 1.1, one of our 32-bit all-purpose, rock-solid // generators. It has excellent speed, a state size (128 bits) that is // large enough for mild parallelism, and it passes all tests we are aware // of. -// +// // Note that version 1.0 had mistakenly s[0] instead of s[1] as state // word passed to the scrambler. -// +// // For generating just single-precision (i.e., 32-bit) floating-point // numbers, xoshiro128+ is even faster. -// +// // The state must be seeded so that it is not everywhere zero. // uint32_t rprand_xoshiro(void) @@ -275,29 +275,29 @@ uint32_t rprand_xoshiro(void) rprand_state[3] ^= rprand_state[1]; rprand_state[1] ^= rprand_state[2]; rprand_state[0] ^= rprand_state[3]; - + rprand_state[2] ^= t; - + rprand_state[3] = rprand_rotate_left(rprand_state[3], 11); return result; } // SplitMix64 generator info: -// +// // Written in 2015 by Sebastiano Vigna (vigna@acm.org) -// +// // To the extent possible under law, the author has dedicated all copyright // and related and neighboring rights to this software to the public domain // worldwide. This software is distributed without any warranty. -// +// // See . -// +// // // This is a fixed-increment version of Java 8's SplittableRandom generator // See http://dx.doi.org/10.1145/2714064.2660195 and // http://docs.oracle.com/javase/8/docs/api/java/util/SplittableRandom.html -// +// // It is a very fast generator passing BigCrush, and it can be useful if // for some reason you absolutely want 64 bits of state. uint64_t rprand_splitmix64() From 71b302846a0354274f5584adabcfa042f6519e03 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 17 Jul 2025 18:49:54 +0200 Subject: [PATCH 051/328] Review formatting, avoid variable --- src/raudio.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/raudio.c b/src/raudio.c index bf3745ff2..ba1fba081 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -1897,14 +1897,16 @@ void UpdateMusicStream(Music music) if ((framesLeft >= subBufferSizeInFrames) || music.looping) framesToStream = subBufferSizeInFrames; else framesToStream = framesLeft; - if (framesToStream == 0) { - bool framesInBufferPlayed = music.stream.buffer->isSubBufferProcessed[0] && music.stream.buffer->isSubBufferProcessed[1]; - if (framesInBufferPlayed) { - + if (framesToStream == 0) + { + // Check if both buffers have been processed + if (music.stream.buffer->isSubBufferProcessed[0] && music.stream.buffer->isSubBufferProcessed[1]) + { ma_mutex_unlock(&AUDIO.System.lock); StopMusicStream(music); return; } + ma_mutex_unlock(&AUDIO.System.lock); return; } @@ -2021,6 +2023,7 @@ void UpdateMusicStream(Music music) #endif default: break; } + UpdateAudioStreamInLockedState(music.stream, AUDIO.System.pcmBuffer, framesToStream); } From 82b80a6998d16a6be51b40868c6c436faebec86d Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 17 Jul 2025 18:49:58 +0200 Subject: [PATCH 052/328] Review formatting, avoid variable --- src/rtextures.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/rtextures.c b/src/rtextures.c index e872985b3..771702306 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -2921,27 +2921,22 @@ void ImageColorReplace(Image *image, Color color, Color replace) } } - const int format = image->format; + int format = image->format; RL_FREE(image->data); image->data = pixels; image->format = PIXELFORMAT_UNCOMPRESSED_R8G8B8A8; - const bool formatHasNoAlpha = (format == PIXELFORMAT_UNCOMPRESSED_R8G8B8) || - (format == PIXELFORMAT_UNCOMPRESSED_R5G6B5) || - (format == PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) || - (format == PIXELFORMAT_UNCOMPRESSED_R32G32B32) || - (format == PIXELFORMAT_UNCOMPRESSED_R16G16B16) || - (format == PIXELFORMAT_COMPRESSED_DXT1_RGB) || - (format == PIXELFORMAT_COMPRESSED_ETC1_RGB) || - (format == PIXELFORMAT_COMPRESSED_ETC2_RGB) || - (format == PIXELFORMAT_COMPRESSED_PVRT_RGB); - // Only convert back to original format if it supported alpha - if (!formatHasNoAlpha) - { - ImageFormat(image, format); - } + if ((format == PIXELFORMAT_UNCOMPRESSED_R8G8B8) || + (format == PIXELFORMAT_UNCOMPRESSED_R5G6B5) || + (format == PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) || + (format == PIXELFORMAT_UNCOMPRESSED_R32G32B32) || + (format == PIXELFORMAT_UNCOMPRESSED_R16G16B16) || + (format == PIXELFORMAT_COMPRESSED_DXT1_RGB) || + (format == PIXELFORMAT_COMPRESSED_ETC1_RGB) || + (format == PIXELFORMAT_COMPRESSED_ETC2_RGB) || + (format == PIXELFORMAT_COMPRESSED_PVRT_RGB)) ImageFormat(image, format); } #endif // SUPPORT_IMAGE_MANIPULATION From 3d93b30262020367414cf7ecc57be30a8133b371 Mon Sep 17 00:00:00 2001 From: Catania <79325830+katanya04@users.noreply.github.com> Date: Fri, 18 Jul 2025 15:20:38 +0200 Subject: [PATCH 053/328] Update font load message --- src/rtext.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rtext.c b/src/rtext.c index d7818d2db..769b4783c 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -391,7 +391,7 @@ Font LoadFont(const char *fileName) else { SetTextureFilter(font.texture, TEXTURE_FILTER_POINT); // By default, we set point filter (the best performance) - TRACELOG(LOG_INFO, "FONT: Data loaded successfully (%i pixel size | %i glyphs)", FONT_TTF_DEFAULT_SIZE, FONT_TTF_DEFAULT_NUMCHARS); + TRACELOG(LOG_INFO, "FONT: Data loaded successfully (%i pixel size | %i glyphs)", font.baseSize, font.glyphCount); } } From 0b125a5fd78feb3a5ad76bfb0c0d61528e684854 Mon Sep 17 00:00:00 2001 From: wwderw <24878362+wwderw@users.noreply.github.com> Date: Sat, 19 Jul 2025 04:54:05 -0500 Subject: [PATCH 054/328] Update Makefile Remove .bc file removal from clean shell for windows configuration. --- src/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile b/src/Makefile index 5b42237ef..9a06be576 100644 --- a/src/Makefile +++ b/src/Makefile @@ -868,7 +868,7 @@ clean: clean_shell_$(PLATFORM_SHELL) @echo "removed all generated files!" clean_shell_sh: - rm -fv *.o $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).a $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).web.a $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).bc $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).so* raygui.c $(RAYLIB_RELEASE_PATH)/*-protocol.h $(RAYLIB_RELEASE_PATH)/*-protocol-code.h + rm -fv *.o $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).a $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).web.a $(RAYLIB_RELEASE_PATH)/lib$(RAYLIB_LIB_NAME).so* raygui.c $(RAYLIB_RELEASE_PATH)/*-protocol.h $(RAYLIB_RELEASE_PATH)/*-protocol-code.h ifeq ($(TARGET_PLATFORM),PLATFORM_ANDROID) rm -fv $(NATIVE_APP_GLUE)/android_native_app_glue.o endif From 36364192d59212dc48102e8ccb6d9162bf7fa78f Mon Sep 17 00:00:00 2001 From: Didas72 Date: Sat, 19 Jul 2025 22:29:08 +0100 Subject: [PATCH 055/328] Fixes GetWindowHandle returning a bad handle under Linux X11 --- src/platforms/rcore_desktop_glfw.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index 9bbd6559a..038e1c649 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -74,9 +74,14 @@ #if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) #include // Required for: timespec, nanosleep(), select() - POSIX - //#define GLFW_EXPOSE_NATIVE_X11 // WARNING: Exposing Xlib.h > X.h results in dup symbols for Font type //#define GLFW_EXPOSE_NATIVE_WAYLAND + #define GLFW_EXPOSE_NATIVE_X11 + #define Font X11Font // Hack to fix 'Font' name collision + // The definition and references to the X11 Font type will be replaced by 'X11Font' + // Works as long as the current file consistently references any X11 Font as X11Font + // Since it is never referenced (as of writting), this does not pose an issue #include "GLFW/glfw3native.h" // Required for: glfwGetX11Window() + #undef Font // Revert hack and allow normal raylib Font usage #endif #if defined(__APPLE__) #include // Required for: usleep() @@ -705,6 +710,12 @@ void SetWindowFocused(void) glfwFocusWindow(platform.handle); } +#if defined(__linux__) +// Local storage for the window handle returned by glfwGetX11Window +// This is needed as X11 handles are integers and may not fit inside a pointer depending on platform +// Storing the handle locally and returning a pointer in GetWindowHandle allows the code to work regardless of pointer width +static XID X11WindowHandle; +#endif // Get native window handle void *GetWindowHandle(void) { @@ -713,12 +724,10 @@ void *GetWindowHandle(void) return glfwGetWin32Window(platform.handle); #endif #if defined(__linux__) - // NOTE: Returned handle is: unsigned long Window (X.h) - // typedef unsigned long XID; - // typedef XID Window; - //unsigned long id = (unsigned long)glfwGetX11Window(platform.handle); - //return NULL; // TODO: Find a way to return value... cast to void *? - return (void *)platform.handle; + // Store the window handle localy and return a pointer to the variable instead. + // Reasoning detailed in the declaration of X11WindowHandle + X11WindowHandle = glfwGetX11Window(platform.handle); + return &X11WindowHandle; #endif #if defined(__APPLE__) // NOTE: Returned handle is: (objc_object *) From 7b017b60d9fa05c1d386c449ce2de07282ea689a Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 21 Jul 2025 10:57:21 +0200 Subject: [PATCH 056/328] Move global variable to right code section --- src/rtext.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rtext.c b/src/rtext.c index 769b4783c..1330c5906 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -130,6 +130,7 @@ extern bool isGpuReady; // NOTE: Default font is loaded on InitWindow() and disposed on CloseWindow() [module: core] static Font defaultFont = { 0 }; #endif +static int textLineSpacing = 2; // Text vertical line spacing in pixels (between lines) //---------------------------------------------------------------------------------- // Other Modules Functions Declaration (required by text) @@ -145,7 +146,6 @@ static Font LoadBMFont(const char *fileName); // Load a BMFont file (AngelCode #if defined(SUPPORT_FILEFORMAT_BDF) static GlyphInfo *LoadFontDataBDF(const unsigned char *fileData, int dataSize, int *codepoints, int codepointCount, int *outFontSize); #endif -static int textLineSpacing = 2; // Text vertical line spacing in pixels (between lines) #if defined(SUPPORT_DEFAULT_FONT) extern void LoadFontDefault(void); From f1714a6234dcccdd5d4b293262cf07d5f99a42b8 Mon Sep 17 00:00:00 2001 From: Joecheong2006 Date: Mon, 21 Jul 2025 14:59:51 -0700 Subject: [PATCH 057/328] [examples]: New shapes example - double pendulum --- examples/Makefile | 3 +- examples/Makefile.Web | 6 +- examples/README.md | 209 +++++++++++---------- examples/shapes/shapes_double_pendulum.c | 188 ++++++++++++++++++ examples/shapes/shapes_double_pendulum.png | Bin 0 -> 291645 bytes 5 files changed, 300 insertions(+), 106 deletions(-) create mode 100644 examples/shapes/shapes_double_pendulum.c create mode 100644 examples/shapes/shapes_double_pendulum.png diff --git a/examples/Makefile b/examples/Makefile index 32a3a75ab..2f32f654f 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -548,7 +548,8 @@ SHAPES = \ shapes/shapes_rectangle_scaling \ shapes/shapes_splines_drawing \ shapes/shapes_top_down_lights \ - shapes/shapes_digital_clock + shapes/shapes_digital_clock \ + shapes/shapes_dobule_pendulum TEXTURES = \ textures/textures_background_scrolling \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 35ae70a18..ee5564599 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -430,7 +430,8 @@ SHAPES = \ shapes/shapes_rectangle_scaling \ shapes/shapes_splines_drawing \ shapes/shapes_top_down_lights \ - shapes/shapes_digital_clock + shapes/shapes_digital_clock \ + shapes/shapes_double_pendulum TEXTURES = \ textures/textures_background_scrolling \ @@ -731,6 +732,9 @@ shapes/shapes_top_down_lights: shapes/shapes_top_down_lights.c shapes/shapes_rectangle_advanced: shapes/shapes_rectangle_advanced.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) +shapes/shapes_double_pendulum: shapes/shapes_double_pendulum.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + # Compile TEXTURES examples textures/textures_background_scrolling: textures/textures_background_scrolling.c diff --git a/examples/README.md b/examples/README.md index 7553ad113..e075facbe 100644 --- a/examples/README.md +++ b/examples/README.md @@ -86,38 +86,39 @@ Examples using raylib shapes drawing functionality, provided by raylib [shapes]( | 52 | [shapes_rectangle_advanced](shapes/shapes_rectangle_advanced.c) | shapes_rectangle_advanced | ⭐️⭐️⭐️⭐️ | 5.5 | 5.5 | [Everton Jr.](https://github.com/evertonse) | | 53 | [shapes_splines_drawing](shapes/shapes_splines_drawing.c) | shapes_splines_drawing | ⭐️⭐️⭐️☆ | 5.0 | 5.0 | [Ray](https://github.com/raysan5) | | 54 | [shapes_digital_clock](shapes/shapes_digital_clock.c) | shapes_digital_clock | ⭐️⭐️☆☆ | 5.5 | 5.5 | [Hamza RAHAL](https://github.com/rhmz-rhl) | +| 55 | [shapes_double_pendulum](shapes/shapes_double_pendulum.c) | shapes_double_pendulum | ⭐️⭐️☆☆ | 5.5 | 5.5 | [JoeCheong](https://github.com/Joecheong2006) | ### category: textures Examples using raylib textures functionality, including image/textures loading/generation and drawing, provided by raylib [textures](../src/textures.c) modul | ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | |----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| 55 | [textures_logo_raylib](textures/textures_logo_raylib.c) | textures_logo_raylib | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | -| 56 | [textures_srcrec_dstrec](textures/textures_srcrec_dstrec.c) | textures_srcrec_dstrec | ⭐️⭐️⭐️☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) | -| 57 | [textures_image_drawing](textures/textures_image_drawing.c) | textures_image_drawing | ⭐️⭐️☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) | -| 58 | [textures_image_generation](textures/textures_image_generation.c) | textures_image_generation | ⭐️⭐️☆☆ | 1.8 | 1.8 | [Wilhem Barbier](https://github.com/nounoursheureux) | -| 59 | [textures_image_loading](textures/textures_image_loading.c) | textures_image_loading | ⭐️☆☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) | -| 60 | [textures_image_processing](textures/textures_image_processing.c) | textures_image_processing | ⭐️⭐️⭐️☆ | 1.4 | 3.5 | [Ray](https://github.com/raysan5) | -| 61 | [textures_image_text](textures/textures_image_text.c) | textures_image_text | ⭐️⭐️☆☆ | 1.8 | 4.0 | [Ray](https://github.com/raysan5) | -| 62 | [textures_to_image](textures/textures_to_image.c) | textures_to_image | ⭐️☆☆☆ | 1.3 | 4.0 | [Ray](https://github.com/raysan5) | -| 63 | [textures_raw_data](textures/textures_raw_data.c) | textures_raw_data | ⭐️⭐️⭐️☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) | -| 64 | [textures_particles_blending](textures/textures_particles_blending.c) | textures_particles_blending | ⭐️☆☆☆ | 1.7 | 3.5 | [Ray](https://github.com/raysan5) | -| 65 | [textures_npatch_drawing](textures/textures_npatch_drawing.c) | textures_npatch_drawing | ⭐️⭐️⭐️☆ | 2.0 | 2.5 | [Jorge A. Gomes](https://github.com/overdev) | -| 66 | [textures_background_scrolling](textures/textures_background_scrolling.c) | textures_background_scrolling | ⭐️☆☆☆ | 2.0 | 2.5 | [Ray](https://github.com/raysan5) | -| 67 | [textures_sprite_anim](textures/textures_sprite_anim.c) | textures_sprite_anim | ⭐️⭐️☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) | -| 68 | [textures_sprite_button](textures/textures_sprite_button.c) | textures_sprite_button | ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) | -| 69 | [textures_sprite_explosion](textures/textures_sprite_explosion.c) | textures_sprite_explosion | ⭐️⭐️☆☆ | 2.5 | 3.5 | [Ray](https://github.com/raysan5) | -| 70 | [textures_bunnymark](textures/textures_bunnymark.c) | textures_bunnymark | ⭐️⭐️⭐️☆ | 1.6 | 2.5 | [Ray](https://github.com/raysan5) | -| 71 | [textures_mouse_painting](textures/textures_mouse_painting.c) | textures_mouse_painting | ⭐️⭐️⭐️☆ | 3.0 | 3.0 | [Chris Dill](https://github.com/MysteriousSpace) | -| 72 | [textures_blend_modes](textures/textures_blend_modes.c) | textures_blend_modes | ⭐️☆☆☆ | 3.5 | 3.5 | [Karlo Licudine](https://github.com/accidentalrebel) | -| 73 | [textures_draw_tiled](textures/textures_draw_tiled.c) | textures_draw_tiled | ⭐️⭐️⭐️☆ | 3.0 | 4.2 | [Vlad Adrian](https://github.com/demizdor) | -| 74 | [textures_polygon](textures/textures_polygon.c) | textures_polygon | ⭐️☆☆☆ | 3.7 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | -| 75 | [textures_fog_of_war](textures/textures_fog_of_war.c) | textures_fog_of_war | ⭐️⭐️⭐️☆ | 4.2 | 4.2 | [Ray](https://github.com/raysan5) | -| 76 | [textures_gif_player](textures/textures_gif_player.c) | textures_gif_player | ⭐️⭐️⭐️☆ | 4.2 | 4.2 | [Ray](https://github.com/raysan5) | -| 77 | [textures_image_kernel](textures/textures_image_kernel.c) | textures_image_kernel | ⭐️⭐️⭐️⭐️ | 1.3 | 1.3 | [Karim Salem](https://github.com/kimo-s) | -| 78 | [textures_image_channel](textures/textures_image_channel.c) | textures_image_channel | ⭐️⭐️☆☆ | 5.1-dev | 5.1-dev | [Bruno Cabral](https://github.com/brccabral) | -| 79 | [textures_image_rotate](textures/textures_image_rotate.c) | textures_image_rotate | ⭐️⭐️☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | -| 80 | [textures_textured_curve](textures/textures_textured_curve.c) | textures_textured_curve | ⭐️⭐️⭐️☆ | 4.5 | 4.5 | [Jeffery Myers](https://github.com/JeffM2501) | +| 56 | [textures_logo_raylib](textures/textures_logo_raylib.c) | textures_logo_raylib | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | +| 57 | [textures_srcrec_dstrec](textures/textures_srcrec_dstrec.c) | textures_srcrec_dstrec | ⭐️⭐️⭐️☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) | +| 58 | [textures_image_drawing](textures/textures_image_drawing.c) | textures_image_drawing | ⭐️⭐️☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) | +| 59 | [textures_image_generation](textures/textures_image_generation.c) | textures_image_generation | ⭐️⭐️☆☆ | 1.8 | 1.8 | [Wilhem Barbier](https://github.com/nounoursheureux) | +| 60 | [textures_image_loading](textures/textures_image_loading.c) | textures_image_loading | ⭐️☆☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) | +| 61 | [textures_image_processing](textures/textures_image_processing.c) | textures_image_processing | ⭐️⭐️⭐️☆ | 1.4 | 3.5 | [Ray](https://github.com/raysan5) | +| 62 | [textures_image_text](textures/textures_image_text.c) | textures_image_text | ⭐️⭐️☆☆ | 1.8 | 4.0 | [Ray](https://github.com/raysan5) | +| 63 | [textures_to_image](textures/textures_to_image.c) | textures_to_image | ⭐️☆☆☆ | 1.3 | 4.0 | [Ray](https://github.com/raysan5) | +| 64 | [textures_raw_data](textures/textures_raw_data.c) | textures_raw_data | ⭐️⭐️⭐️☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) | +| 65 | [textures_particles_blending](textures/textures_particles_blending.c) | textures_particles_blending | ⭐️☆☆☆ | 1.7 | 3.5 | [Ray](https://github.com/raysan5) | +| 66 | [textures_npatch_drawing](textures/textures_npatch_drawing.c) | textures_npatch_drawing | ⭐️⭐️⭐️☆ | 2.0 | 2.5 | [Jorge A. Gomes](https://github.com/overdev) | +| 67 | [textures_background_scrolling](textures/textures_background_scrolling.c) | textures_background_scrolling | ⭐️☆☆☆ | 2.0 | 2.5 | [Ray](https://github.com/raysan5) | +| 68 | [textures_sprite_anim](textures/textures_sprite_anim.c) | textures_sprite_anim | ⭐️⭐️☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) | +| 69 | [textures_sprite_button](textures/textures_sprite_button.c) | textures_sprite_button | ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) | +| 70 | [textures_sprite_explosion](textures/textures_sprite_explosion.c) | textures_sprite_explosion | ⭐️⭐️☆☆ | 2.5 | 3.5 | [Ray](https://github.com/raysan5) | +| 71 | [textures_bunnymark](textures/textures_bunnymark.c) | textures_bunnymark | ⭐️⭐️⭐️☆ | 1.6 | 2.5 | [Ray](https://github.com/raysan5) | +| 72 | [textures_mouse_painting](textures/textures_mouse_painting.c) | textures_mouse_painting | ⭐️⭐️⭐️☆ | 3.0 | 3.0 | [Chris Dill](https://github.com/MysteriousSpace) | +| 73 | [textures_blend_modes](textures/textures_blend_modes.c) | textures_blend_modes | ⭐️☆☆☆ | 3.5 | 3.5 | [Karlo Licudine](https://github.com/accidentalrebel) | +| 74 | [textures_draw_tiled](textures/textures_draw_tiled.c) | textures_draw_tiled | ⭐️⭐️⭐️☆ | 3.0 | 4.2 | [Vlad Adrian](https://github.com/demizdor) | +| 75 | [textures_polygon](textures/textures_polygon.c) | textures_polygon | ⭐️☆☆☆ | 3.7 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | +| 76 | [textures_fog_of_war](textures/textures_fog_of_war.c) | textures_fog_of_war | ⭐️⭐️⭐️☆ | 4.2 | 4.2 | [Ray](https://github.com/raysan5) | +| 77 | [textures_gif_player](textures/textures_gif_player.c) | textures_gif_player | ⭐️⭐️⭐️☆ | 4.2 | 4.2 | [Ray](https://github.com/raysan5) | +| 78 | [textures_image_kernel](textures/textures_image_kernel.c) | textures_image_kernel | ⭐️⭐️⭐️⭐️ | 1.3 | 1.3 | [Karim Salem](https://github.com/kimo-s) | +| 79 | [textures_image_channel](textures/textures_image_channel.c) | textures_image_channel | ⭐️⭐️☆☆ | 5.1-dev | 5.1-dev | [Bruno Cabral](https://github.com/brccabral) | +| 80 | [textures_image_rotate](textures/textures_image_rotate.c) | textures_image_rotate | ⭐️⭐️☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | +| 81 | [textures_textured_curve](textures/textures_textured_curve.c) | textures_textured_curve | ⭐️⭐️⭐️☆ | 4.5 | 4.5 | [Jeffery Myers](https://github.com/JeffM2501) | ### category: text @@ -125,18 +126,18 @@ Examples using raylib text functionality, including sprite fonts loading/generat | ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | |----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| 81 | [text_raylib_fonts](text/text_raylib_fonts.c) | text_raylib_fonts | ⭐️☆☆☆ | 1.7 | 3.7 | [Ray](https://github.com/raysan5) | -| 82 | [text_font_spritefont](text/text_font_spritefont.c) | text_font_spritefont | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | -| 83 | [text_font_filters](text/text_font_filters.c) | text_font_filters | ⭐️⭐️☆☆ | 1.3 | 4.2 | [Ray](https://github.com/raysan5) | -| 84 | [text_font_loading](text/text_font_loading.c) | text_font_loading | ⭐️☆☆☆ | 1.4 | 3.0 | [Ray](https://github.com/raysan5) | -| 85 | [text_font_sdf](text/text_font_sdf.c) | text_font_sdf | ⭐️⭐️⭐️☆ | 1.3 | 4.0 | [Ray](https://github.com/raysan5) | -| 86 | [text_format_text](text/text_format_text.c) | text_format_text | ⭐️☆☆☆ | 1.1 | 3.0 | [Ray](https://github.com/raysan5) | -| 87 | [text_input_box](text/text_input_box.c) | text_input_box | ⭐️⭐️☆☆ | 1.7 | 3.5 | [Ray](https://github.com/raysan5) | -| 88 | [text_writing_anim](text/text_writing_anim.c) | text_writing_anim | ⭐️⭐️☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) | -| 89 | [text_rectangle_bounds](text/text_rectangle_bounds.c) | text_rectangle_bounds | ⭐️⭐️⭐️⭐️ | 2.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | -| 90 | [text_unicode](text/text_unicode.c) | text_unicode | ⭐️⭐️⭐️⭐️ | 2.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | -| 91 | [text_draw_3d](text/text_draw_3d.c) | text_draw_3d | ⭐️⭐️⭐️⭐️ | 3.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | -| 92 | [text_codepoints_loading](text/text_codepoints_loading.c) | text_codepoints_loading | ⭐️⭐️⭐️☆ | 4.2 | 4.2 | [Ray](https://github.com/raysan5) | +| 82 | [text_raylib_fonts](text/text_raylib_fonts.c) | text_raylib_fonts | ⭐️☆☆☆ | 1.7 | 3.7 | [Ray](https://github.com/raysan5) | +| 83 | [text_font_spritefont](text/text_font_spritefont.c) | text_font_spritefont | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | +| 84 | [text_font_filters](text/text_font_filters.c) | text_font_filters | ⭐️⭐️☆☆ | 1.3 | 4.2 | [Ray](https://github.com/raysan5) | +| 85 | [text_font_loading](text/text_font_loading.c) | text_font_loading | ⭐️☆☆☆ | 1.4 | 3.0 | [Ray](https://github.com/raysan5) | +| 86 | [text_font_sdf](text/text_font_sdf.c) | text_font_sdf | ⭐️⭐️⭐️☆ | 1.3 | 4.0 | [Ray](https://github.com/raysan5) | +| 87 | [text_format_text](text/text_format_text.c) | text_format_text | ⭐️☆☆☆ | 1.1 | 3.0 | [Ray](https://github.com/raysan5) | +| 88 | [text_input_box](text/text_input_box.c) | text_input_box | ⭐️⭐️☆☆ | 1.7 | 3.5 | [Ray](https://github.com/raysan5) | +| 89 | [text_writing_anim](text/text_writing_anim.c) | text_writing_anim | ⭐️⭐️☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) | +| 90 | [text_rectangle_bounds](text/text_rectangle_bounds.c) | text_rectangle_bounds | ⭐️⭐️⭐️⭐️ | 2.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | +| 91 | [text_unicode](text/text_unicode.c) | text_unicode | ⭐️⭐️⭐️⭐️ | 2.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | +| 92 | [text_draw_3d](text/text_draw_3d.c) | text_draw_3d | ⭐️⭐️⭐️⭐️ | 3.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | +| 93 | [text_codepoints_loading](text/text_codepoints_loading.c) | text_codepoints_loading | ⭐️⭐️⭐️☆ | 4.2 | 4.2 | [Ray](https://github.com/raysan5) | ### category: models @@ -144,29 +145,29 @@ Examples using raylib models functionality, including models loading/generation | ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | |----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| 93 | [models_animation](models/models_animation.c) | models_animation | ⭐️⭐️☆☆ | 2.5 | 3.5 | [Culacant](https://github.com/culacant) | -| 94 | [models_billboard](models/models_billboard.c) | models_billboard | ⭐️⭐️⭐️☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) | -| 95 | [models_box_collisions](models/models_box_collisions.c) | models_box_collisions | ⭐️☆☆☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) | -| 96 | [models_cubicmap](models/models_cubicmap.c) | models_cubicmap | ⭐️⭐️☆☆ | 1.8 | 3.5 | [Ray](https://github.com/raysan5) | -| 97 | [models_first_person_maze](models/models_first_person_maze.c) | models_first_person_maze | ⭐️⭐️☆☆ | 2.5 | 3.5 | [Ray](https://github.com/raysan5) | -| 98 | [models_geometric_shapes](models/models_geometric_shapes.c) | models_geometric_shapes | ⭐️☆☆☆ | 1.0 | 3.5 | [Ray](https://github.com/raysan5) | -| 99 | [models_mesh_generation](models/models_mesh_generation.c) | models_mesh_generation | ⭐️⭐️☆☆ | 1.8 | 4.0 | [Ray](https://github.com/raysan5) | -| 100 | [models_mesh_picking](models/models_mesh_picking.c) | models_mesh_picking | ⭐️⭐️⭐️☆ | 1.7 | 4.0 | [Joel Davis](https://github.com/joeld42) | -| 101 | [models_loading](models/models_loading.c) | models_loading | ⭐️☆☆☆ | 2.0 | 4.2 | [Ray](https://github.com/raysan5) | -| 102 | [models_loading_gltf](models/models_loading_gltf.c) | models_loading_gltf | ⭐️☆☆☆ | 3.7 | 4.2 | [Ray](https://github.com/raysan5) | -| 103 | [models_loading_vox](models/models_loading_vox.c) | models_loading_vox | ⭐️☆☆☆ | 4.0 | 4.0 | [Johann Nadalutti](https://github.com/procfxgen) | -| 104 | [models_loading_m3d](models/models_loading_m3d.c) | models_loading_m3d | ⭐️⭐️☆☆ | 4.5 | 4.5 | [bzt](https://bztsrc.gitlab.io/model3d) | -| 105 | [models_orthographic_projection](models/models_orthographic_projection.c) | models_orthographic_projection | ⭐️☆☆☆ | 2.0 | 3.7 | [Max Danielsson](https://github.com/autious) | -| 106 | [models_point_rendering](models/models_point_rendering.c) | models_point_rendering | ⭐️⭐️⭐️☆ | 5.0 | 5.0 | [Reese Gallagher](https://github.com/satchelfrost) | -| 107 | [models_rlgl_solar_system](models/models_rlgl_solar_system.c) | models_rlgl_solar_system | ⭐️⭐️⭐️⭐️ | 2.5 | 4.0 | [Ray](https://github.com/raysan5) | -| 108 | [models_yaw_pitch_roll](models/models_yaw_pitch_roll.c) | models_yaw_pitch_roll | ⭐️⭐️☆☆ | 1.8 | 4.0 | [Berni](https://github.com/Berni8k) | -| 109 | [models_waving_cubes](models/models_waving_cubes.c) | models_waving_cubes | ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [Codecat](https://github.com/codecat) | -| 110 | [models_heightmap](models/models_heightmap.c) | models_heightmap | ⭐️☆☆☆ | 1.8 | 3.5 | [Ray](https://github.com/raysan5) | -| 111 | [models_skybox](models/models_skybox.c) | models_skybox | ⭐️⭐️☆☆ | 1.8 | 4.0 | [Ray](https://github.com/raysan5) | -| 112 | [models_draw_cube_texture](models/models_draw_cube_texture.c) | models_draw_cube_texture | ⭐️⭐️☆☆ | 4.5 | 4.5 | [Ray](https://github.com/raysan5) | -| 113 | [models_gpu_skinning](models/models_gpu_skinning.c) | models_gpu_skinning | ⭐️⭐️⭐️☆ | 4.5 | 4.5 | [Daniel Holden](https://github.com/orangeduck) | -| 114 | [models_bone_socket](models/models_bone_socket.c) | models_bone_socket | ⭐️⭐️⭐️⭐️ | 4.5 | 4.5 | [iP](https://github.com/ipzaur) | -| 115 | [models_tesseract_view](models/models_tesseract_view.c) | models_tesseract_view | ⭐️⭐️☆☆ | 5.6-dev | 5.6-dev | [Timothy van der Valk](https://github.com/arceryz) | +| 94 | [models_animation](models/models_animation.c) | models_animation | ⭐️⭐️☆☆ | 2.5 | 3.5 | [Culacant](https://github.com/culacant) | +| 95 | [models_billboard](models/models_billboard.c) | models_billboard | ⭐️⭐️⭐️☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) | +| 96 | [models_box_collisions](models/models_box_collisions.c) | models_box_collisions | ⭐️☆☆☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) | +| 97 | [models_cubicmap](models/models_cubicmap.c) | models_cubicmap | ⭐️⭐️☆☆ | 1.8 | 3.5 | [Ray](https://github.com/raysan5) | +| 98 | [models_first_person_maze](models/models_first_person_maze.c) | models_first_person_maze | ⭐️⭐️☆☆ | 2.5 | 3.5 | [Ray](https://github.com/raysan5) | +| 99 | [models_geometric_shapes](models/models_geometric_shapes.c) | models_geometric_shapes | ⭐️☆☆☆ | 1.0 | 3.5 | [Ray](https://github.com/raysan5) | +| 100 | [models_mesh_generation](models/models_mesh_generation.c) | models_mesh_generation | ⭐️⭐️☆☆ | 1.8 | 4.0 | [Ray](https://github.com/raysan5) | +| 101 | [models_mesh_picking](models/models_mesh_picking.c) | models_mesh_picking | ⭐️⭐️⭐️☆ | 1.7 | 4.0 | [Joel Davis](https://github.com/joeld42) | +| 102 | [models_loading](models/models_loading.c) | models_loading | ⭐️☆☆☆ | 2.0 | 4.2 | [Ray](https://github.com/raysan5) | +| 103 | [models_loading_gltf](models/models_loading_gltf.c) | models_loading_gltf | ⭐️☆☆☆ | 3.7 | 4.2 | [Ray](https://github.com/raysan5) | +| 104 | [models_loading_vox](models/models_loading_vox.c) | models_loading_vox | ⭐️☆☆☆ | 4.0 | 4.0 | [Johann Nadalutti](https://github.com/procfxgen) | +| 105 | [models_loading_m3d](models/models_loading_m3d.c) | models_loading_m3d | ⭐️⭐️☆☆ | 4.5 | 4.5 | [bzt](https://bztsrc.gitlab.io/model3d) | +| 106 | [models_orthographic_projection](models/models_orthographic_projection.c) | models_orthographic_projection | ⭐️☆☆☆ | 2.0 | 3.7 | [Max Danielsson](https://github.com/autious) | +| 107 | [models_point_rendering](models/models_point_rendering.c) | models_point_rendering | ⭐️⭐️⭐️☆ | 5.0 | 5.0 | [Reese Gallagher](https://github.com/satchelfrost) | +| 108 | [models_rlgl_solar_system](models/models_rlgl_solar_system.c) | models_rlgl_solar_system | ⭐️⭐️⭐️⭐️ | 2.5 | 4.0 | [Ray](https://github.com/raysan5) | +| 109 | [models_yaw_pitch_roll](models/models_yaw_pitch_roll.c) | models_yaw_pitch_roll | ⭐️⭐️☆☆ | 1.8 | 4.0 | [Berni](https://github.com/Berni8k) | +| 110 | [models_waving_cubes](models/models_waving_cubes.c) | models_waving_cubes | ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [Codecat](https://github.com/codecat) | +| 111 | [models_heightmap](models/models_heightmap.c) | models_heightmap | ⭐️☆☆☆ | 1.8 | 3.5 | [Ray](https://github.com/raysan5) | +| 112 | [models_skybox](models/models_skybox.c) | models_skybox | ⭐️⭐️☆☆ | 1.8 | 4.0 | [Ray](https://github.com/raysan5) | +| 113 | [models_draw_cube_texture](models/models_draw_cube_texture.c) | models_draw_cube_texture | ⭐️⭐️☆☆ | 4.5 | 4.5 | [Ray](https://github.com/raysan5) | +| 114 | [models_gpu_skinning](models/models_gpu_skinning.c) | models_gpu_skinning | ⭐️⭐️⭐️☆ | 4.5 | 4.5 | [Daniel Holden](https://github.com/orangeduck) | +| 115 | [models_bone_socket](models/models_bone_socket.c) | models_bone_socket | ⭐️⭐️⭐️⭐️ | 4.5 | 4.5 | [iP](https://github.com/ipzaur) | +| 116 | [models_tesseract_view](models/models_tesseract_view.c) | models_tesseract_view | ⭐️⭐️☆☆ | 5.6-dev | 5.6-dev | [Timothy van der Valk](https://github.com/arceryz) | ### category: shaders @@ -174,34 +175,34 @@ Examples using raylib shaders functionality, including shaders loading, paramete | ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | |----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| 116 | [shaders_basic_lighting](shaders/shaders_basic_lighting.c) | shaders_basic_lighting | ⭐️⭐️⭐️⭐️ | 3.0 | 4.2 | [Chris Camacho](https://github.com/chriscamacho) | -| 117 | [shaders_model_shader](shaders/shaders_model_shader.c) | shaders_model_shader | ⭐️⭐️☆☆ | 1.3 | 3.7 | [Ray](https://github.com/raysan5) | -| 118 | [shaders_shapes_textures](shaders/shaders_shapes_textures.c) | shaders_shapes_textures | ⭐️⭐️☆☆ | 1.7 | 3.7 | [Ray](https://github.com/raysan5) | -| 119 | [shaders_custom_uniform](shaders/shaders_custom_uniform.c) | shaders_custom_uniform | ⭐️⭐️☆☆ | 1.3 | 4.0 | [Ray](https://github.com/raysan5) | -| 120 | [shaders_postprocessing](shaders/shaders_postprocessing.c) | shaders_postprocessing | ⭐️⭐️⭐️☆ | 1.3 | 4.0 | [Ray](https://github.com/raysan5) | -| 121 | [shaders_palette_switch](shaders/shaders_palette_switch.c) | shaders_palette_switch | ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [Marco Lizza](https://github.com/MarcoLizza) | -| 122 | [shaders_raymarching](shaders/shaders_raymarching.c) | shaders_raymarching | ⭐️⭐️⭐️⭐️ | 2.0 | 4.2 | [Ray](https://github.com/raysan5) | -| 123 | [shaders_texture_drawing](shaders/shaders_texture_drawing.c) | shaders_texture_drawing | ⭐️⭐️☆☆ | 2.0 | 3.7 | [Michał Ciesielski](https://github.com/ciessielski) | -| 124 | [shaders_texture_outline](shaders/shaders_texture_outline.c) | shaders_texture_outline | ⭐️⭐️⭐️☆ | 4.0 | 4.0 | [Samuel Skiff](https://github.com/GoldenThumbs) | -| 125 | [shaders_texture_waves](shaders/shaders_texture_waves.c) | shaders_texture_waves | ⭐️⭐️☆☆ | 2.5 | 3.7 | [Anata](https://github.com/anatagawa) | -| 126 | [shaders_julia_set](shaders/shaders_julia_set.c) | shaders_julia_set | ⭐️⭐️⭐️☆ | 2.5 | 4.0 | [Josh Colclough](https://github.com/joshcol9232) | -| 127 | [shaders_eratosthenes](shaders/shaders_eratosthenes.c) | shaders_eratosthenes | ⭐️⭐️⭐️☆ | 2.5 | 4.0 | [ProfJski](https://github.com/ProfJski) | -| 128 | [shaders_fog](shaders/shaders_fog.c) | shaders_fog | ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | -| 129 | [shaders_simple_mask](shaders/shaders_simple_mask.c) | shaders_simple_mask | ⭐️⭐️☆☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | -| 130 | [shaders_hot_reloading](shaders/shaders_hot_reloading.c) | shaders_hot_reloading | ⭐️⭐️⭐️☆ | 3.0 | 3.5 | [Ray](https://github.com/raysan5) | -| 131 | [shaders_mesh_instancing](shaders/shaders_mesh_instancing.c) | shaders_mesh_instancing | ⭐️⭐️⭐️⭐️ | 3.7 | 4.2 | [seanpringle](https://github.com/seanpringle) | -| 132 | [shaders_multi_sample2d](shaders/shaders_multi_sample2d.c) | shaders_multi_sample2d | ⭐️⭐️☆☆ | 3.5 | 3.5 | [Ray](https://github.com/raysan5) | -| 133 | [shaders_spotlight](shaders/shaders_spotlight.c) | shaders_spotlight | ⭐️⭐️☆☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | -| 134 | [shaders_deferred_render](shaders/shaders_deferred_render.c) | shaders_deferred_render | ⭐️⭐️⭐️⭐️ | 4.5 | 4.5 | [Justin Andreas Lacoste](https://github.com/27justin) | -| 135 | [shaders_hybrid_render](shaders/shaders_hybrid_render.c) | shaders_hybrid_render | ⭐️⭐️⭐️⭐️ | 4.2 | 4.2 | [Buğra Alptekin Sarı](https://github.com/BugraAlptekinSari) | -| 136 | [shaders_texture_tiling](shaders/shaders_texture_tiling.c) | shaders_texture_tiling | ⭐️⭐️☆☆ | 4.5 | 4.5 | [Luis Almeida](https://github.com/luis605) | -| 137 | [shaders_shadowmap](shaders/shaders_shadowmap.c) | shaders_shadowmap | ⭐️⭐️⭐️⭐️ | 5.0 | 5.0 | [TheManTheMythTheGameDev](https://github.com/TheManTheMythTheGameDev) | -| 138 | [shaders_vertex_displacement](shaders/shaders_vertex_displacement.c) | shaders_vertex_displacement | ⭐️⭐️⭐️☆ | 5.0 | 4.5 | [Alex ZH](https://github.com/ZzzhHe) | -| 139 | [shaders_write_depth](shaders/shaders_write_depth.c) | shaders_write_depth | ⭐️⭐️☆☆ | 4.2 | 4.2 | [Buğra Alptekin Sarı](https://github.com/BugraAlptekinSari) | -| 140 | [shaders_basic_pbr](shaders/shaders_basic_pbr.c) | shaders_basic_pbr | ⭐️⭐️⭐️⭐️ | 5.0 | 5.1-dev | [Afan OLOVCIC](https://github.com/_DevDad) | -| 141 | [shaders_lightmap](shaders/shaders_lightmap.c) | shaders_lightmap | ⭐️⭐️⭐️☆ | 4.5 | 4.5 | [Jussi Viitala](https://github.com/nullstare) | -| 142 | [shaders_rounded_rectangle](shaders/shaders_rounded_rectangle.c) | shaders_rounded_rectangle | ⭐️⭐️⭐️☆ | 5.5 | 5.5 | [Anstro Pleuton](https://github.com/anstropleuton) | -| 143 | [shaders_view_depth](shaders/shaders_view_depth.c) | shaders_view_depth | ⭐️⭐️⭐️☆ | 5.6-dev | 5.6-dev | [Luís Almeida](https://github.com/luis605) | +| 117 | [shaders_basic_lighting](shaders/shaders_basic_lighting.c) | shaders_basic_lighting | ⭐️⭐️⭐️⭐️ | 3.0 | 4.2 | [Chris Camacho](https://github.com/chriscamacho) | +| 118 | [shaders_model_shader](shaders/shaders_model_shader.c) | shaders_model_shader | ⭐️⭐️☆☆ | 1.3 | 3.7 | [Ray](https://github.com/raysan5) | +| 119 | [shaders_shapes_textures](shaders/shaders_shapes_textures.c) | shaders_shapes_textures | ⭐️⭐️☆☆ | 1.7 | 3.7 | [Ray](https://github.com/raysan5) | +| 120 | [shaders_custom_uniform](shaders/shaders_custom_uniform.c) | shaders_custom_uniform | ⭐️⭐️☆☆ | 1.3 | 4.0 | [Ray](https://github.com/raysan5) | +| 121 | [shaders_postprocessing](shaders/shaders_postprocessing.c) | shaders_postprocessing | ⭐️⭐️⭐️☆ | 1.3 | 4.0 | [Ray](https://github.com/raysan5) | +| 122 | [shaders_palette_switch](shaders/shaders_palette_switch.c) | shaders_palette_switch | ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [Marco Lizza](https://github.com/MarcoLizza) | +| 123 | [shaders_raymarching](shaders/shaders_raymarching.c) | shaders_raymarching | ⭐️⭐️⭐️⭐️ | 2.0 | 4.2 | [Ray](https://github.com/raysan5) | +| 124 | [shaders_texture_drawing](shaders/shaders_texture_drawing.c) | shaders_texture_drawing | ⭐️⭐️☆☆ | 2.0 | 3.7 | [Michał Ciesielski](https://github.com/ciessielski) | +| 125 | [shaders_texture_outline](shaders/shaders_texture_outline.c) | shaders_texture_outline | ⭐️⭐️⭐️☆ | 4.0 | 4.0 | [Samuel Skiff](https://github.com/GoldenThumbs) | +| 126 | [shaders_texture_waves](shaders/shaders_texture_waves.c) | shaders_texture_waves | ⭐️⭐️☆☆ | 2.5 | 3.7 | [Anata](https://github.com/anatagawa) | +| 127 | [shaders_julia_set](shaders/shaders_julia_set.c) | shaders_julia_set | ⭐️⭐️⭐️☆ | 2.5 | 4.0 | [Josh Colclough](https://github.com/joshcol9232) | +| 128 | [shaders_eratosthenes](shaders/shaders_eratosthenes.c) | shaders_eratosthenes | ⭐️⭐️⭐️☆ | 2.5 | 4.0 | [ProfJski](https://github.com/ProfJski) | +| 129 | [shaders_fog](shaders/shaders_fog.c) | shaders_fog | ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | +| 130 | [shaders_simple_mask](shaders/shaders_simple_mask.c) | shaders_simple_mask | ⭐️⭐️☆☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | +| 131 | [shaders_hot_reloading](shaders/shaders_hot_reloading.c) | shaders_hot_reloading | ⭐️⭐️⭐️☆ | 3.0 | 3.5 | [Ray](https://github.com/raysan5) | +| 132 | [shaders_mesh_instancing](shaders/shaders_mesh_instancing.c) | shaders_mesh_instancing | ⭐️⭐️⭐️⭐️ | 3.7 | 4.2 | [seanpringle](https://github.com/seanpringle) | +| 133 | [shaders_multi_sample2d](shaders/shaders_multi_sample2d.c) | shaders_multi_sample2d | ⭐️⭐️☆☆ | 3.5 | 3.5 | [Ray](https://github.com/raysan5) | +| 134 | [shaders_spotlight](shaders/shaders_spotlight.c) | shaders_spotlight | ⭐️⭐️☆☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | +| 135 | [shaders_deferred_render](shaders/shaders_deferred_render.c) | shaders_deferred_render | ⭐️⭐️⭐️⭐️ | 4.5 | 4.5 | [Justin Andreas Lacoste](https://github.com/27justin) | +| 136 | [shaders_hybrid_render](shaders/shaders_hybrid_render.c) | shaders_hybrid_render | ⭐️⭐️⭐️⭐️ | 4.2 | 4.2 | [Buğra Alptekin Sarı](https://github.com/BugraAlptekinSari) | +| 137 | [shaders_texture_tiling](shaders/shaders_texture_tiling.c) | shaders_texture_tiling | ⭐️⭐️☆☆ | 4.5 | 4.5 | [Luis Almeida](https://github.com/luis605) | +| 138 | [shaders_shadowmap](shaders/shaders_shadowmap.c) | shaders_shadowmap | ⭐️⭐️⭐️⭐️ | 5.0 | 5.0 | [TheManTheMythTheGameDev](https://github.com/TheManTheMythTheGameDev) | +| 139 | [shaders_vertex_displacement](shaders/shaders_vertex_displacement.c) | shaders_vertex_displacement | ⭐️⭐️⭐️☆ | 5.0 | 4.5 | [Alex ZH](https://github.com/ZzzhHe) | +| 140 | [shaders_write_depth](shaders/shaders_write_depth.c) | shaders_write_depth | ⭐️⭐️☆☆ | 4.2 | 4.2 | [Buğra Alptekin Sarı](https://github.com/BugraAlptekinSari) | +| 141 | [shaders_basic_pbr](shaders/shaders_basic_pbr.c) | shaders_basic_pbr | ⭐️⭐️⭐️⭐️ | 5.0 | 5.1-dev | [Afan OLOVCIC](https://github.com/_DevDad) | +| 142 | [shaders_lightmap](shaders/shaders_lightmap.c) | shaders_lightmap | ⭐️⭐️⭐️☆ | 4.5 | 4.5 | [Jussi Viitala](https://github.com/nullstare) | +| 143 | [shaders_rounded_rectangle](shaders/shaders_rounded_rectangle.c) | shaders_rounded_rectangle | ⭐️⭐️⭐️☆ | 5.5 | 5.5 | [Anstro Pleuton](https://github.com/anstropleuton) | +| 144 | [shaders_view_depth](shaders/shaders_view_depth.c) | shaders_view_depth | ⭐️⭐️⭐️☆ | 5.6-dev | 5.6-dev | [Luís Almeida](https://github.com/luis605) | ### category: audio @@ -209,26 +210,26 @@ Examples using raylib audio functionality, including sound/music loading and pla | ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | |----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| 144 | [audio_module_playing](audio/audio_module_playing.c) | audio_module_playing | ⭐️☆☆☆ | 1.5 | 3.5 | [Ray](https://github.com/raysan5) | -| 145 | [audio_music_stream](audio/audio_music_stream.c) | audio_music_stream | ⭐️☆☆☆ | 1.3 | 4.2 | [Ray](https://github.com/raysan5) | -| 146 | [audio_raw_stream](audio/audio_raw_stream.c) | audio_raw_stream | ⭐️⭐️⭐️☆ | 1.6 | 4.2 | [Ray](https://github.com/raysan5) | -| 147 | [audio_sound_loading](audio/audio_sound_loading.c) | audio_sound_loading | ⭐️☆☆☆ | 1.1 | 3.5 | [Ray](https://github.com/raysan5) | -| 148 | [audio_mixed_processor](audio/audio_mixed_processor.c) | audio_mixed_processor | ⭐️⭐️⭐️⭐️ | 4.2 | 4.2 | [hkc](https://github.com/hatkidchan) | -| 149 | [audio_stream_effects](audio/audio_stream_effects.c) | audio_stream_effects | ⭐️⭐️⭐️⭐️ | 4.2 | 5.0 | [Ray](https://github.com/raysan5) | -| 150 [audio_sound_multi](audio/audio_sound_multi.c) | audio_sound_multi | ⭐️⭐️☆☆ | 4.6 | 4.6 | [Jeffery Myers](https://github.com/JeffM2501) | -| 151 | [audio_sound_positioning](audio/audio_sound_positioning.c) | audio_sound_positioning | ⭐️⭐️☆☆ | 5.5 | 5.5 | [Le Juez Victor](https://github.com/Bigfoot71) | +| 145 | [audio_module_playing](audio/audio_module_playing.c) | audio_module_playing | ⭐️☆☆☆ | 1.5 | 3.5 | [Ray](https://github.com/raysan5) | +| 146 | [audio_music_stream](audio/audio_music_stream.c) | audio_music_stream | ⭐️☆☆☆ | 1.3 | 4.2 | [Ray](https://github.com/raysan5) | +| 147 | [audio_raw_stream](audio/audio_raw_stream.c) | audio_raw_stream | ⭐️⭐️⭐️☆ | 1.6 | 4.2 | [Ray](https://github.com/raysan5) | +| 148 | [audio_sound_loading](audio/audio_sound_loading.c) | audio_sound_loading | ⭐️☆☆☆ | 1.1 | 3.5 | [Ray](https://github.com/raysan5) | +| 149 | [audio_mixed_processor](audio/audio_mixed_processor.c) | audio_mixed_processor | ⭐️⭐️⭐️⭐️ | 4.2 | 4.2 | [hkc](https://github.com/hatkidchan) | +| 150 | [audio_stream_effects](audio/audio_stream_effects.c) | audio_stream_effects | ⭐️⭐️⭐️⭐️ | 4.2 | 5.0 | [Ray](https://github.com/raysan5) | +| 151 [audio_sound_multi](audio/audio_sound_multi.c) | audio_sound_multi | ⭐️⭐️☆☆ | 4.6 | 4.6 | [Jeffery Myers](https://github.com/JeffM2501) | +| 152 | [audio_sound_positioning](audio/audio_sound_positioning.c) | audio_sound_positioning | ⭐️⭐️☆☆ | 5.5 | 5.5 | [Le Juez Victor](https://github.com/Bigfoot71) | ### category: others -Ex150amples showing raylib misc functionality that does not fit in other categories, like standalone modules usage or examples integrating external libraries. +Ex151amples showing raylib misc functionality that does not fit in other categories, like standalone modules usage or examples integrating external libraries. | ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | |----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| 152 | [rlgl_standalone](others/rlgl_standalone.c) | rlgl_standalone | ⭐️⭐️⭐️⭐️ | 1.6 | 4.0 | [Ray](https://github.com/raysan5) | -| 153 | [rlgl_compute_shader](others/rlgl_compute_shader.c) | rlgl_compute_shader | ⭐️⭐️⭐️⭐️ | 4.0 | 4.0 | [Teddy Astie](https://github.com/tsnake41) | -| 154 | [easings_testbed](others/easings_testbed.c) | easings_testbed | ⭐️⭐️⭐️☆ | 2.5 | 3.0 | [Juan Miguel López](https://github.com/flashback-fx) | -| 155 | [raylib_opengl_interop](others/raylib_opengl_interop.c) | raylib_opengl_interop | ⭐️⭐️⭐️⭐️ | 3.8 | 4.0 | [Stephan Soller](https://github.com/arkanis) | -| 156 | [embedded_files_loading](others/embedded_files_loading.c) | embedded_files_loading | ⭐️⭐️☆☆ | 3.0 | 3.5 | [Kristian Holmgren](https://github.com/defutura) | -| 157 | [raymath_vector_angle](others/raymath_vector_angle.c) | raymath_vector_angle | ⭐️⭐️☆☆ | 1.0 | 4.6 | [Ray](https://github.com/raysan5) | +| 153 | [rlgl_standalone](others/rlgl_standalone.c) | rlgl_standalone | ⭐️⭐️⭐️⭐️ | 1.6 | 4.0 | [Ray](https://github.com/raysan5) | +| 154 | [rlgl_compute_shader](others/rlgl_compute_shader.c) | rlgl_compute_shader | ⭐️⭐️⭐️⭐️ | 4.0 | 4.0 | [Teddy Astie](https://github.com/tsnake41) | +| 155 | [easings_testbed](others/easings_testbed.c) | easings_testbed | ⭐️⭐️⭐️☆ | 2.5 | 3.0 | [Juan Miguel López](https://github.com/flashback-fx) | +| 156 | [raylib_opengl_interop](others/raylib_opengl_interop.c) | raylib_opengl_interop | ⭐️⭐️⭐️⭐️ | 3.8 | 4.0 | [Stephan Soller](https://github.com/arkanis) | +| 157 | [embedded_files_loading](others/embedded_files_loading.c) | embedded_files_loading | ⭐️⭐️☆☆ | 3.0 | 3.5 | [Kristian Holmgren](https://github.com/defutura) | +| 158 | [raymath_vector_angle](others/raymath_vector_angle.c) | raymath_vector_angle | ⭐️⭐️☆☆ | 1.0 | 4.6 | [Ray](https://github.com/raysan5) | As always contributions are welcome, feel free to send new examples! Here is an [examples template](examples_template.c) to start with! diff --git a/examples/shapes/shapes_double_pendulum.c b/examples/shapes/shapes_double_pendulum.c new file mode 100644 index 000000000..b4c080be2 --- /dev/null +++ b/examples/shapes/shapes_double_pendulum.c @@ -0,0 +1,188 @@ +/******************************************************************************************* +* +* raylib [shapes] example - Double Pendulum +* +* Example complexity rating: [★★☆☆] 2/4 +* +* Example originally created with raylib 5.5, last time updated with raylib 5.5 +* +* Example contributed by JoeCheong (@Joecheong2006) 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 JoeCheong (@Joecheong2006) +* +********************************************************************************************/ + +#include "raylib.h" + +#include // Required for: sin(), cos(), PI + +//---------------------------------------------------------------------------------- +// Macro Helpers +//---------------------------------------------------------------------------------- +#define SCREEN_WIDTH 800 +#define SCREEN_HEIGHT 450 + +#define CENTER_X SCREEN_WIDTH * 0.5 +#define CENTER_Y SCREEN_HEIGHT * 0.5 - 100 + +// Constant for Simulation +#define SIMULATION_STEPS 30 +#define G 9.81 + +// Helpers for Angles Conversion +#define RAD(x) x * PI / 180.0 +#define DEG(x) x * 180.0 / PI + +#define scalar float + +//---------------------------------------------------------------------------------- +// Module Functions Declaration +//---------------------------------------------------------------------------------- +static Vector2 CalculatePendulumEndPoint(scalar l, scalar theta); +static Vector2 CalculateDoublePendulumEndPoint(scalar l1, scalar theta1, scalar l2, scalar theta2); + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + SetConfigFlags(FLAG_WINDOW_HIGHDPI); + InitWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [shapes] example - Double Pendulum"); + + // Simulation Paramters + //-------------------------------------------------------------------------------------- + scalar l1 = 15, m1 = 0.2, theta1 = RAD(170), w1 = 0; + scalar l2 = 15, m2 = 0.1, theta2 = RAD(0), w2 = 0; + scalar lengthScaler = 0.1; + scalar totalM = m1 + m2; + + Vector2 previousPosition = CalculateDoublePendulumEndPoint(l1, theta1, l2, theta2); + previousPosition.x += CENTER_X; + previousPosition.y += CENTER_Y; + + // Scale length + scalar L1 = l1 * lengthScaler; + scalar L2 = l2 * lengthScaler; + + // Draw Parameters + //-------------------------------------------------------------------------------------- + int lineThick = 20, trailThick = 2; + float fateAlpha = 0.01; + + // Create Framebuffer + //-------------------------------------------------------------------------------------- + RenderTexture2D target = LoadRenderTexture(SCREEN_WIDTH, SCREEN_HEIGHT); + SetTextureFilter(target.texture, TEXTURE_FILTER_BILINEAR); + + SetTargetFPS(60); + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + scalar dt = GetFrameTime(); + scalar step = dt / SIMULATION_STEPS, step2 = step * step; + + // Update Physics - larger steps = better approximation + //---------------------------------------------------------------------------------- + for (int i = 0; i < SIMULATION_STEPS; ++i) + { + scalar delta = theta1 - theta2; + scalar sinD = sin(delta), cosD = cos(delta), cos2D = cos(2 * delta); + scalar ww1 = w1 * w1, ww2 = w2 * w2; + + // Calculate a1 + scalar a1 = (-G * (2 * m1 + m2) * sin(theta1) + - m2 * G * sin(theta1 - 2 * theta2) + - 2 * sinD * m2 * (ww2 * L2 + ww1 * L1 * cosD)) + / (L1 * (2 * m1 + m2 - m2 * cos2D)); + + // Calculate a2 + scalar a2 = (2 * sinD * (ww1 * L1 * totalM + + G * totalM * cos(theta1) + + ww2 * L2 * m2 * cosD)) + / (L2 * (2 * m1 + m2 - m2 * cos2D)); + + // Update thetas + theta1 += w1 * step + 0.5 * a1 * step2; + theta2 += w2 * step + 0.5 * a2 * step2; + + // Update omegas + w1 += a1 * step; + w2 += a2 * step; + } + //---------------------------------------------------------------------------------- + + // Calculate position + Vector2 currentPosition = CalculateDoublePendulumEndPoint(l1, theta1, l2, theta2); + currentPosition.x += CENTER_X; + currentPosition.y += CENTER_Y; + + // Draw to framebuffer + //---------------------------------------------------------------------------------- + BeginTextureMode(target); + + // Draw a transparent rectangle - smaller alpha = longer trails + DrawRectangle(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, Fade(BLACK, fateAlpha)); + + // Draw trail + DrawCircleV(previousPosition, trailThick, RED); + DrawLineEx(previousPosition, currentPosition, trailThick * 2, RED); + + EndTextureMode(); + //---------------------------------------------------------------------------------- + + // Update previous position + previousPosition = currentPosition; + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(BLACK); + + // Draw Trails Texture + DrawTextureRec(target.texture, (Rectangle){ 0, 0, target.texture.width, -target.texture.height }, + (Vector2){ 0, 0 }, WHITE); + + // Draw Double Pendulum + DrawRectanglePro((Rectangle){ CENTER_X, CENTER_Y, 10 * l1, lineThick }, + (Vector2){0, lineThick * 0.5}, 90 - DEG(theta1), RAYWHITE); + + Vector2 endpoint1 = CalculatePendulumEndPoint(l1, theta1); + DrawRectanglePro((Rectangle){ CENTER_X + endpoint1.x, CENTER_Y + endpoint1.y, 10 * l2, lineThick }, + (Vector2){0, lineThick * 0.5}, 90 - DEG(theta2), RAYWHITE); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + UnloadRenderTexture(target); + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} + +// Calculate Pendulum End Point +static Vector2 CalculatePendulumEndPoint(scalar l, scalar theta) +{ + return (Vector2){ 10 * l * sin(theta), 10 * l * cos(theta) }; +} + +// Calculate Double Pendulum End Point +static Vector2 CalculateDoublePendulumEndPoint(scalar l1, scalar theta1, scalar l2, scalar theta2) +{ + Vector2 endpoint1 = CalculatePendulumEndPoint(l1, theta1); + Vector2 endpoint2 = CalculatePendulumEndPoint(l2, theta2); + return (Vector2){ endpoint1.x + endpoint2.x, endpoint1.y + endpoint2.y }; +} diff --git a/examples/shapes/shapes_double_pendulum.png b/examples/shapes/shapes_double_pendulum.png new file mode 100644 index 0000000000000000000000000000000000000000..bee7c6a5e7a42a385116d88e1778e5005171125e GIT binary patch literal 291645 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%0A(o!~iM} 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Ü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 literal 0 HcmV?d00001 From f3854cb4061273f7a40a627a41df7723bbac788a Mon Sep 17 00:00:00 2001 From: JoeCheong <95924085+Joecheong2006@users.noreply.github.com> Date: Tue, 22 Jul 2025 11:39:24 -0700 Subject: [PATCH 058/328] Fixed typo --- examples/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/Makefile b/examples/Makefile index 2f32f654f..b5b6ef2bc 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -549,7 +549,7 @@ SHAPES = \ shapes/shapes_splines_drawing \ shapes/shapes_top_down_lights \ shapes/shapes_digital_clock \ - shapes/shapes_dobule_pendulum + shapes/shapes_double_pendulum TEXTURES = \ textures/textures_background_scrolling \ From 8a0ab163d3da1ea3fde0b85e7c705c39127cc6f8 Mon Sep 17 00:00:00 2001 From: Joecheong2006 Date: Tue, 22 Jul 2025 11:50:48 -0700 Subject: [PATCH 059/328] Changed to 4 spaces --- examples/shapes/shapes_double_pendulum.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/shapes/shapes_double_pendulum.c b/examples/shapes/shapes_double_pendulum.c index b4c080be2..301022da6 100644 --- a/examples/shapes/shapes_double_pendulum.c +++ b/examples/shapes/shapes_double_pendulum.c @@ -51,7 +51,7 @@ int main(void) { // Initialization //-------------------------------------------------------------------------------------- - SetConfigFlags(FLAG_WINDOW_HIGHDPI); + SetConfigFlags(FLAG_WINDOW_HIGHDPI); InitWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [shapes] example - Double Pendulum"); // Simulation Paramters From b6ae5af4e360d71ae3df8db1d5a92202c5d3ae0c Mon Sep 17 00:00:00 2001 From: Joecheong2006 Date: Tue, 22 Jul 2025 11:57:16 -0700 Subject: [PATCH 060/328] Removed redefined RAD and DEG --- examples/shapes/shapes_double_pendulum.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/examples/shapes/shapes_double_pendulum.c b/examples/shapes/shapes_double_pendulum.c index 301022da6..cf94c8747 100644 --- a/examples/shapes/shapes_double_pendulum.c +++ b/examples/shapes/shapes_double_pendulum.c @@ -32,10 +32,6 @@ #define SIMULATION_STEPS 30 #define G 9.81 -// Helpers for Angles Conversion -#define RAD(x) x * PI / 180.0 -#define DEG(x) x * 180.0 / PI - #define scalar float //---------------------------------------------------------------------------------- @@ -56,8 +52,8 @@ int main(void) // Simulation Paramters //-------------------------------------------------------------------------------------- - scalar l1 = 15, m1 = 0.2, theta1 = RAD(170), w1 = 0; - scalar l2 = 15, m2 = 0.1, theta2 = RAD(0), w2 = 0; + scalar l1 = 15, m1 = 0.2, theta1 = DEG2RAD * 170, w1 = 0; + scalar l2 = 15, m2 = 0.1, theta2 = DEG2RAD * 0, w2 = 0; scalar lengthScaler = 0.1; scalar totalM = m1 + m2; @@ -153,11 +149,11 @@ int main(void) // Draw Double Pendulum DrawRectanglePro((Rectangle){ CENTER_X, CENTER_Y, 10 * l1, lineThick }, - (Vector2){0, lineThick * 0.5}, 90 - DEG(theta1), RAYWHITE); + (Vector2){0, lineThick * 0.5}, 90 - RAD2DEG * theta1, RAYWHITE); Vector2 endpoint1 = CalculatePendulumEndPoint(l1, theta1); DrawRectanglePro((Rectangle){ CENTER_X + endpoint1.x, CENTER_Y + endpoint1.y, 10 * l2, lineThick }, - (Vector2){0, lineThick * 0.5}, 90 - DEG(theta2), RAYWHITE); + (Vector2){0, lineThick * 0.5}, 90 - RAD2DEG * theta2, RAYWHITE); EndDrawing(); //---------------------------------------------------------------------------------- From 10fadd91856b682ad45c9626f65ad6614c5f4268 Mon Sep 17 00:00:00 2001 From: Joecheong2006 Date: Tue, 22 Jul 2025 11:59:46 -0700 Subject: [PATCH 061/328] Replaced scalar to float --- examples/shapes/shapes_double_pendulum.c | 36 +++++++++++------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/examples/shapes/shapes_double_pendulum.c b/examples/shapes/shapes_double_pendulum.c index cf94c8747..85ca4af66 100644 --- a/examples/shapes/shapes_double_pendulum.c +++ b/examples/shapes/shapes_double_pendulum.c @@ -32,13 +32,11 @@ #define SIMULATION_STEPS 30 #define G 9.81 -#define scalar float - //---------------------------------------------------------------------------------- // Module Functions Declaration //---------------------------------------------------------------------------------- -static Vector2 CalculatePendulumEndPoint(scalar l, scalar theta); -static Vector2 CalculateDoublePendulumEndPoint(scalar l1, scalar theta1, scalar l2, scalar theta2); +static Vector2 CalculatePendulumEndPoint(float l, float theta); +static Vector2 CalculateDoublePendulumEndPoint(float l1, float theta1, float l2, float theta2); //------------------------------------------------------------------------------------ // Program main entry point @@ -52,18 +50,18 @@ int main(void) // Simulation Paramters //-------------------------------------------------------------------------------------- - scalar l1 = 15, m1 = 0.2, theta1 = DEG2RAD * 170, w1 = 0; - scalar l2 = 15, m2 = 0.1, theta2 = DEG2RAD * 0, w2 = 0; - scalar lengthScaler = 0.1; - scalar totalM = m1 + m2; + float l1 = 15, m1 = 0.2, theta1 = DEG2RAD * 170, w1 = 0; + float l2 = 15, m2 = 0.1, theta2 = DEG2RAD * 0, w2 = 0; + float lengthScaler = 0.1; + float totalM = m1 + m2; Vector2 previousPosition = CalculateDoublePendulumEndPoint(l1, theta1, l2, theta2); previousPosition.x += CENTER_X; previousPosition.y += CENTER_Y; // Scale length - scalar L1 = l1 * lengthScaler; - scalar L2 = l2 * lengthScaler; + float L1 = l1 * lengthScaler; + float L2 = l2 * lengthScaler; // Draw Parameters //-------------------------------------------------------------------------------------- @@ -82,25 +80,25 @@ int main(void) while (!WindowShouldClose()) // Detect window close button or ESC key { // Update - scalar dt = GetFrameTime(); - scalar step = dt / SIMULATION_STEPS, step2 = step * step; + float dt = GetFrameTime(); + float step = dt / SIMULATION_STEPS, step2 = step * step; // Update Physics - larger steps = better approximation //---------------------------------------------------------------------------------- for (int i = 0; i < SIMULATION_STEPS; ++i) { - scalar delta = theta1 - theta2; - scalar sinD = sin(delta), cosD = cos(delta), cos2D = cos(2 * delta); - scalar ww1 = w1 * w1, ww2 = w2 * w2; + float delta = theta1 - theta2; + float sinD = sin(delta), cosD = cos(delta), cos2D = cos(2 * delta); + float ww1 = w1 * w1, ww2 = w2 * w2; // Calculate a1 - scalar a1 = (-G * (2 * m1 + m2) * sin(theta1) + float a1 = (-G * (2 * m1 + m2) * sin(theta1) - m2 * G * sin(theta1 - 2 * theta2) - 2 * sinD * m2 * (ww2 * L2 + ww1 * L1 * cosD)) / (L1 * (2 * m1 + m2 - m2 * cos2D)); // Calculate a2 - scalar a2 = (2 * sinD * (ww1 * L1 * totalM + float a2 = (2 * sinD * (ww1 * L1 * totalM + G * totalM * cos(theta1) + ww2 * L2 * m2 * cosD)) / (L2 * (2 * m1 + m2 - m2 * cos2D)); @@ -170,13 +168,13 @@ int main(void) } // Calculate Pendulum End Point -static Vector2 CalculatePendulumEndPoint(scalar l, scalar theta) +static Vector2 CalculatePendulumEndPoint(float l, float theta) { return (Vector2){ 10 * l * sin(theta), 10 * l * cos(theta) }; } // Calculate Double Pendulum End Point -static Vector2 CalculateDoublePendulumEndPoint(scalar l1, scalar theta1, scalar l2, scalar theta2) +static Vector2 CalculateDoublePendulumEndPoint(float l1, float theta1, float l2, float theta2) { Vector2 endpoint1 = CalculatePendulumEndPoint(l1, theta1); Vector2 endpoint2 = CalculatePendulumEndPoint(l2, theta2); From dfa21c2d1f83f7327a484837a9345db58aaeb110 Mon Sep 17 00:00:00 2001 From: Mike Will Date: Wed, 23 Jul 2025 11:56:36 -0400 Subject: [PATCH 062/328] [build][zig] use `addLibrary()` and set root modules manually These changes will be required by Zig version 0.15.0. --- build.zig | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/build.zig b/build.zig index 501d7a229..409c57ab5 100644 --- a/build.zig +++ b/build.zig @@ -153,18 +153,14 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std. try raylib_flags_arr.appendSlice(&config_h_flags); } - const raylib = if (options.shared) - b.addSharedLibrary(.{ - .name = "raylib", + const raylib = b.addLibrary(.{ + .name = "raylib", + .linkage = if (options.shared) .dynamic else .static, + .root_module = b.createModule(.{ .target = target, .optimize = optimize, - }) - else - b.addStaticLibrary(.{ - .name = "raylib", - .target = target, - .optimize = optimize, - }); + }), + }); raylib.linkLibC(); // No GLFW required on PLATFORM_DRM @@ -550,10 +546,13 @@ fn addExamples( if (std.mem.eql(u8, "core_loading_thread", name) and target.result.os.tag == .windows) continue; if (target.result.os.tag == .emscripten) { - const exe_lib = b.addStaticLibrary(.{ + const exe_lib = b.addLibrary(.{ .name = name, - .target = target, - .optimize = optimize, + .linkage = .static, + .root_module = b.createModule(.{ + .target = target, + .optimize = optimize, + }), }); exe_lib.addCSourceFile(.{ .file = b.path(path), @@ -633,8 +632,10 @@ fn addExamples( } else { const exe = b.addExecutable(.{ .name = name, - .target = target, - .optimize = optimize, + .root_module = b.createModule(.{ + .target = target, + .optimize = optimize, + }), }); exe.addCSourceFile(.{ .file = b.path(path), .flags = &.{} }); exe.linkLibC(); From d6a897e5519a346825dd7109c642abddab734b9b Mon Sep 17 00:00:00 2001 From: danil <61111955+danilwhale@users.noreply.github.com> Date: Wed, 23 Jul 2025 21:41:45 +0300 Subject: [PATCH 063/328] [rlgl]: Add rlGetProcAddress --- src/rlgl.h | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/rlgl.h b/src/rlgl.h index b6703c923..2adf1753d 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -710,6 +710,7 @@ RLAPI void rlSetBlendFactorsSeparate(int glSrcRGB, int glDstRGB, int glSrcAlpha, RLAPI void rlglInit(int width, int height); // Initialize rlgl (buffers, shaders, textures, states) RLAPI void rlglClose(void); // De-initialize rlgl (buffers, shaders, textures) RLAPI void rlLoadExtensions(void *loader); // Load OpenGL extensions (loader function required) +RLAPI void *rlGetProcAddress(const char *procName); // Get OpenGL procedure address RLAPI int rlGetVersion(void); // Get current OpenGL version RLAPI void rlSetFramebufferWidth(int width); // Set current framebuffer width RLAPI int rlGetFramebufferWidth(void); // Get default framebuffer width @@ -1041,10 +1042,15 @@ RLAPI void rlLoadDrawQuad(void); // Load and draw a quad // Types and Structures Definition //---------------------------------------------------------------------------------- #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + +typedef void *(*rlglLoadProc)(const char *name); // OpenGL extension functions loader signature (same as GLADloadproc) + typedef struct rlglData { rlRenderBatch *currentBatch; // Current render batch rlRenderBatch defaultBatch; // Default internal render batch + rlglLoadProc loader; // OpenGL function loader + struct { int vertexCounter; // Current active render batch vertex counter (generic, used for all batches) float texcoordx, texcoordy; // Current active texture coordinate (added on glVertex*()) @@ -1114,8 +1120,6 @@ typedef struct rlglData { } ExtSupported; // Extensions supported flags } rlglData; -typedef void *(*rlglLoadProc)(const char *name); // OpenGL extension functions loader signature (same as GLADloadproc) - #endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2 //---------------------------------------------------------------------------------- @@ -2567,6 +2571,8 @@ void rlLoadExtensions(void *loader) TRACELOG(RL_LOG_INFO, " > Version: %s", glGetString(GL_VERSION)); TRACELOG(RL_LOG_INFO, " > GLSL: %s", glGetString(GL_SHADING_LANGUAGE_VERSION)); + RLGL.loader = (rlglLoadProc)loader; + #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // NOTE: Anisotropy levels capability is an extension #ifndef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT @@ -2625,6 +2631,11 @@ void rlLoadExtensions(void *loader) #endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2 } +// Get OpenGL procedure address +void *rlGetProcAddress(const char *procName) { + return RLGL.loader(procName); +} + // Get current OpenGL version int rlGetVersion(void) { From 32960af1dc3905f046fe64a56dbb50d32375990e Mon Sep 17 00:00:00 2001 From: Karim Ahmed Date: Thu, 24 Jul 2025 09:48:52 +0100 Subject: [PATCH 064/328] Fixed: Added CMake support for SDL3. Now supports including SDL2 or SDL3 as a subdirectory within the project. The system will first check for SDL3, then SDL2. If neither is found, it will attempt find_package(SDL3), followed by find_package(SDL2). If all these checks fail, the process will terminate with an error. --- cmake/LibraryConfigurations.cmake | 33 ++++++++++++++++++++++++++++--- src/platforms/rcore_desktop_sdl.c | 18 +++++++++++++++-- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/cmake/LibraryConfigurations.cmake b/cmake/LibraryConfigurations.cmake index 00dda033a..e4655500e 100644 --- a/cmake/LibraryConfigurations.cmake +++ b/cmake/LibraryConfigurations.cmake @@ -101,10 +101,37 @@ elseif ("${PLATFORM}" MATCHES "DRM") set(LIBS_PRIVATE ${GLESV2} ${EGL} ${DRM} ${GBM} atomic pthread m dl) elseif ("${PLATFORM}" MATCHES "SDL") - find_package(SDL2 REQUIRED) - set(PLATFORM_CPP "PLATFORM_DESKTOP_SDL") - set(LIBS_PRIVATE SDL2::SDL2) + # First, check if SDL is included as a subdirectory + if(TARGET SDL3::SDL3) + message(STATUS "Using SDL3 from subdirectory") + set(PLATFORM_CPP "PLATFORM_DESKTOP_SDL") + set(LIBS_PRIVATE SDL3::SDL3) + add_compile_definitions(USING_SDL3_PROJECT) + elseif(TARGET SDL2::SDL2) + message(STATUS "Using SDL2 from subdirectory") + set(PLATFORM_CPP "PLATFORM_DESKTOP_SDL") + set(LIBS_PRIVATE SDL2::SDL2) + add_compile_definitions(USING_SDL2_PROJECT) + else() + # No SDL added via add_subdirectory(), try find_package() + message(STATUS "No SDL target from subdirectory, searching via find_package()...") + # First try SDL3 + find_package(SDL3 QUIET) + if(SDL3_FOUND) + message(STATUS "Found SDL3 via find_package()") + set(PLATFORM_CPP "PLATFORM_DESKTOP_SDL") + set(LIBS_PRIVATE SDL3::SDL3) + add_compile_definitions(USING_SDL3_PACKAGE) + else() + # Fallback to SDL2 + find_package(SDL2 REQUIRED) + message(STATUS "Found SDL2 via find_package()") + set(PLATFORM_CPP "PLATFORM_DESKTOP_SDL") + set(LIBS_PRIVATE SDL2::SDL2) + add_compile_definitions(USING_SDL2_PACKAGE) + endif() + endif() endif () if (NOT ${OPENGL_VERSION} MATCHES "OFF") diff --git a/src/platforms/rcore_desktop_sdl.c b/src/platforms/rcore_desktop_sdl.c index 59f286307..82337dd4e 100644 --- a/src/platforms/rcore_desktop_sdl.c +++ b/src/platforms/rcore_desktop_sdl.c @@ -52,13 +52,27 @@ #ifndef SDL_ENABLE_OLD_NAMES #define SDL_ENABLE_OLD_NAMES // Just in case we're on SDL3, we need some in-between compatibily #endif -#include "SDL.h" // SDL base library (window/rendered, input, timing... functionality) +// SDL base library (window/rendered, input, timing... functionality) +#ifdef USING_SDL3_PROJECT + #include "SDL3/SDL.h" +#elif USING_SDL2_PROJECT + #include "SDL2/SDL.h" +#else + #include "SDL.h" +#endif #if defined(GRAPHICS_API_OPENGL_ES2) // It seems it does not need to be included to work //#include "SDL_opengles2.h" #else - #include "SDL_opengl.h" // SDL OpenGL functionality (if required, instead of internal renderer) + // SDL OpenGL functionality (if required, instead of internal renderer) + #ifdef USING_SDL3_PROJECT + #include "SDL3/SDL_opengl.h" + #elif USING_SDL2_PROJECT + #include "SDL2/SDL_opengl.h" + #else + #include "SDL_opengl.h" + #endif #endif //---------------------------------------------------------------------------------- From d7893141f3d8ec4d8ce525bad02a8a12cce4e84b Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 26 Jul 2025 11:44:36 +0200 Subject: [PATCH 065/328] REVIEWED: `rl_gputex.h` library to be usable standalone --- src/external/rl_gputex.h | 209 ++++++++++++++++++++++----------------- src/rtextures.c | 18 +--- 2 files changed, 125 insertions(+), 102 deletions(-) diff --git a/src/external/rl_gputex.h b/src/external/rl_gputex.h index 4b4e9beb4..276791430 100644 --- a/src/external/rl_gputex.h +++ b/src/external/rl_gputex.h @@ -30,10 +30,10 @@ * #define RL_GPUTEX_SUPPORT_ASTC * Define desired file formats to be supported * -* #define RL_GPUTEX_SHOW_WARN_INFO +* #define RL_GPUTEX_SHOW_LOG_INFO * Define, if you wish to see warnings generated by the library -* This will include unless you provide your own RL_GPUTEX_WARN -* #define RL_GPUTEX_WARN +* This will include unless you provide your own RL_GPUTEX_LOG +* #define RL_GPUTEX_LOG * Define, if you wish to provide your own warning function * Make sure that this macro puts newline character '\n' at the end * @@ -59,15 +59,16 @@ * There is no need to do so when statically linking * * VERSIONS HISTORY: -* 1.0 (17-Sep-2022) First version has been created by migrating part of compressed-texture-loading -* functionality from Raylib src/rtextures.c into self-contained library * 1.1 (15-Jul-2025) Several minor fixes related to specific image formats; some work has been done * in order to decouple the library from Raylib by introducing few new macros; library still * requires Raylib in order to function properly * +* 1.0 (17-Sep-2022) First version has been created by migrating part of compressed-texture-loading +* functionality from Raylib src/rtextures.c into self-contained library +* * LICENSE: zlib/libpng * -* Copyright (c) 2013-2022 Ramon Santamaria (@raysan5) +* Copyright (c) 2013-2025 Ramon Santamaria (@raysan5) * * 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. @@ -93,6 +94,37 @@ #define RLGPUTEXAPI // Functions defined as 'extern' by default (implicit specifiers) #endif +// Texture pixel formats +// NOTE: Support depends on OpenGL version +// WARNING: Enum values aligned with raylib/rlgl equivalent PixelFormat/rlPixelFormat enum, +// to avoid value mapping between the 3 libraries format values +typedef enum { + RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1, // 8 bit per pixel (no alpha) + RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA, // 8*2 bpp (2 channels) + RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G6B5, // 16 bpp + RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8, // 24 bpp + RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1, // 16 bpp (1 bit alpha) + RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4, // 16 bpp (4 bit alpha) + RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, // 32 bpp + RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32, // 32 bpp (1 channel - float) + RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32, // 32*3 bpp (3 channels - float) + RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32, // 32*4 bpp (4 channels - float) + RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16, // 16 bpp (1 channel - half float) + RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16, // 16*3 bpp (3 channels - half float) + RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16, // 16*4 bpp (4 channels - half float) + RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGB, // 4 bpp (no alpha) + RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha) + RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT3_RGBA, // 8 bpp + RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT5_RGBA, // 8 bpp + RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC1_RGB, // 4 bpp + RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_RGB, // 4 bpp + RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA, // 8 bpp + RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGB, // 4 bpp + RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGBA, // 4 bpp + RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA, // 8 bpp + RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA // 2 bpp +} rlGpuTexPixelFormat; + //---------------------------------------------------------------------------------- // Module Functions Declaration //---------------------------------------------------------------------------------- @@ -124,12 +156,12 @@ RLGPUTEXAPI int rl_save_ktx_to_memory(const char *fileName, void *data, int widt #if defined(RL_GPUTEX_IMPLEMENTATION) -#if defined(RL_GPUTEX_SHOW_WARN_INFO) && !defined(RL_GPUTEX_WARN) +#if defined(RL_GPUTEX_SHOW_LOG_INFO) && !defined(RL_GPUTEX_LOG) #include // Required for: printf() #endif #if !defined(RL_GPUTEX_MALLOC) || !defined(RL_GPUTEX_NULL) - #include // Required for: NULL, malloc(), calloc(), free(), realloc() + #include // Required for: NULL, malloc(), calloc(), free() #endif #if !defined(RL_GPUTEX_MEMCPY) @@ -149,7 +181,6 @@ RLGPUTEXAPI int rl_save_ktx_to_memory(const char *fileName, void *data, int widt #if !defined(RL_GPUTEX_MALLOC) #define RL_GPUTEX_MALLOC(sz) malloc(sz) #define RL_GPUTEX_CALLOC(num, sz) calloc(num, sz) - #define RL_GPUTEX_REALLOC(ptr, sz) realloc(ptr, sz) #define RL_GPUTEX_FREE(ptr) free(ptr) #endif @@ -161,20 +192,20 @@ RLGPUTEXAPI int rl_save_ktx_to_memory(const char *fileName, void *data, int widt #define RL_GPUTEX_MEMCPY(dest, src, num) memcpy(dest, src, num) #endif -// Simple warning system to avoid RPNG_LOG() calls if required +// Simple warning logging system to avoid LOG() calls if required // NOTE: Avoiding those calls, also avoids const strings memory usage // WARN: This macro expects that newline character is added automatically // in order to match the functionality of Raylib's TRACELOG() -#if defined(RL_GPUTEX_SHOW_WARN_INFO) - #if !defined(RL_GPUTEX_WARN) - #define RL_GPUTEX_WARN(...) (void)(printf("RL_GPUTEX: WARNING: " __VA_ARGS__), printf("\n")) +#if defined(RL_GPUTEX_SHOW_LOG_INFO) + #if !defined(RL_GPUTEX_LOG) + #define RL_GPUTEX_LOG(...) (void)(printf("RL_GPUTEX: WARNING: " __VA_ARGS__), printf("\n")) #endif #else - #if defined(RL_GPUTEX_WARN) - // undefine it first in order to supress warnings about macro redefinition - #undef RL_GPUTEX_WARN + #if defined(RL_GPUTEX_LOG) + // Undefine it first in order to supress warnings about macro redefinition + #undef RL_GPUTEX_LOG #endif - #define RL_GPUTEX_WARN(...) + #define RL_GPUTEX_LOG(...) #endif //---------------------------------------------------------------------------------- @@ -246,7 +277,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ if ((dds_header_id[0] != 'D') || (dds_header_id[1] != 'D') || (dds_header_id[2] != 'S') || (dds_header_id[3] != ' ')) { - RL_GPUTEX_WARN("DDS file data not valid"); + RL_GPUTEX_LOG("DDS file data not valid"); } else { @@ -257,8 +288,8 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ *width = header->width; *height = header->height; - if (*width % 4 != 0) RL_GPUTEX_WARN("DDS file width must be multiple of 4. Image will not display correctly"); - if (*height % 4 != 0) RL_GPUTEX_WARN("DDS file height must be multiple of 4. Image will not display correctly"); + if (*width % 4 != 0) RL_GPUTEX_LOG("DDS file width must be multiple of 4. Image will not display correctly"); + if (*height % 4 != 0) RL_GPUTEX_LOG("DDS file height must be multiple of 4. Image will not display correctly"); image_pixel_size = header->width*header->height; @@ -275,7 +306,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); - *format = PIXELFORMAT_UNCOMPRESSED_R5G6B5; + *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G6B5; } else if (header->ddspf.flags == 0x41) // With alpha channel { @@ -297,7 +328,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ ((unsigned short *)image_data)[i] += alpha; } - *format = PIXELFORMAT_UNCOMPRESSED_R5G5B5A1; + *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1; } else if (header->ddspf.a_bit_mask == 0xf000) // 4bit alpha { @@ -317,7 +348,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ ((unsigned short *)image_data)[i] += alpha; } - *format = PIXELFORMAT_UNCOMPRESSED_R4G4B4A4; + *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4; } } } @@ -329,7 +360,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); - *format = PIXELFORMAT_UNCOMPRESSED_R8G8B8; + *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8; } else if ((header->ddspf.flags == 0x41) && (header->ddspf.rgb_bit_count == 32)) // DDS_RGBA, no compressed { @@ -351,7 +382,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ ((unsigned char *)image_data)[i + 2] = blue; } - *format = PIXELFORMAT_UNCOMPRESSED_R8G8B8A8; + *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8; } else if (((header->ddspf.flags == 0x04) || (header->ddspf.flags == 0x05)) && (header->ddspf.fourcc > 0)) // Compressed { @@ -369,11 +400,11 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ { case FOURCC_DXT1: { - if (header->ddspf.flags == 0x04) *format = PIXELFORMAT_COMPRESSED_DXT1_RGB; - else *format = PIXELFORMAT_COMPRESSED_DXT1_RGBA; + if (header->ddspf.flags == 0x04) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGB; + else *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGBA; } break; - case FOURCC_DXT3: *format = PIXELFORMAT_COMPRESSED_DXT3_RGBA; break; - case FOURCC_DXT5: *format = PIXELFORMAT_COMPRESSED_DXT5_RGBA; break; + case FOURCC_DXT3: *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT3_RGBA; break; + case FOURCC_DXT5: *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT5_RGBA; break; default: break; } } @@ -427,7 +458,7 @@ void *rl_load_pkm_from_memory(const unsigned char *file_data, unsigned int file_ if ((header->id[0] != 'P') || (header->id[1] != 'K') || (header->id[2] != 'M') || (header->id[3] != ' ')) { - RL_GPUTEX_WARN("PKM file data not valid"); + RL_GPUTEX_LOG("PKM file data not valid"); } else { @@ -451,9 +482,9 @@ void *rl_load_pkm_from_memory(const unsigned char *file_data, unsigned int file_ RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); - if (header->format == 0) *format = PIXELFORMAT_COMPRESSED_ETC1_RGB; - else if (header->format == 1) *format = PIXELFORMAT_COMPRESSED_ETC2_RGB; - else if (header->format == 3) *format = PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA; + if (header->format == 0) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC1_RGB; + else if (header->format == 1) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_RGB; + else if (header->format == 3) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA; } } @@ -511,7 +542,7 @@ void *rl_load_ktx_from_memory(const unsigned char *file_data, unsigned int file_ if ((header->id[1] != 'K') || (header->id[2] != 'T') || (header->id[3] != 'X') || (header->id[4] != ' ') || (header->id[5] != '1') || (header->id[6] != '1')) { - RL_GPUTEX_WARN("KTX file data not valid"); + RL_GPUTEX_LOG("KTX file data not valid"); } else { @@ -530,9 +561,9 @@ void *rl_load_ktx_from_memory(const unsigned char *file_data, unsigned int file_ RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); - if (header->gl_internal_format == 0x8D64) *format = PIXELFORMAT_COMPRESSED_ETC1_RGB; - else if (header->gl_internal_format == 0x9274) *format = PIXELFORMAT_COMPRESSED_ETC2_RGB; - else if (header->gl_internal_format == 0x9278) *format = PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA; + if (header->gl_internal_format == 0x8D64) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC1_RGB; + else if (header->gl_internal_format == 0x9274) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_RGB; + else if (header->gl_internal_format == 0x9278) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA; // TODO: Support uncompressed data formats? Right now it returns format = 0! } @@ -609,7 +640,7 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo // NOTE: We can save into a .ktx all PixelFormats supported by raylib, including compressed formats like DXT, ETC or ASTC - if (header.gl_format == -1) RL_GPUTEX_WARN("GL format not supported for KTX export (%i)", header.gl_format); + if (header.gl_format == -1) RL_GPUTEX_LOG("GL format not supported for KTX export (%i)", header.gl_format); else { RL_GPUTEX_MEMCPY(file_data_ptr, &header, sizeof(ktx_header)); @@ -642,16 +673,16 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo { unsigned int count = (unsigned int)fwrite(file_data, sizeof(unsigned char), data_size, file); - if (count == 0) RL_GPUTEX_WARN("FILEIO: [%s] Failed to write file", file_name); - else if (count != data_size) RL_GPUTEX_WARN("FILEIO: [%s] File partially written", file_name); + if (count == 0) RL_GPUTEX_LOG("FILEIO: [%s] Failed to write file", file_name); + else if (count != data_size) RL_GPUTEX_LOG("FILEIO: [%s] File partially written", file_name); else (void)0; // WARN: this branch is handled by Raylib, since rl_gputex only prints warnings int result = fclose(file); - if (result != 0) RL_GPUTEX_WARN("FILEIO: [%s] Failed to close file", file_name); + if (result != 0) RL_GPUTEX_LOG("FILEIO: [%s] Failed to close file", file_name); if (result == 0 && count == data_size) success = true; } - else RL_GPUTEX_WARN("FILEIO: [%s] Failed to open file", file_name); + else RL_GPUTEX_LOG("FILEIO: [%s] Failed to open file", file_name); RL_GPUTEX_FREE(file_data); // Free file data buffer @@ -735,7 +766,7 @@ void *rl_load_pvr_from_memory(const unsigned char *file_data, unsigned int file_ if ((header->id[0] != 'P') || (header->id[1] != 'V') || (header->id[2] != 'R') || (header->id[3] != 3)) { - RL_GPUTEX_WARN("PVR file data not valid"); + RL_GPUTEX_LOG("PVR file data not valid"); } else { @@ -746,24 +777,24 @@ void *rl_load_pvr_from_memory(const unsigned char *file_data, unsigned int file_ *mips = header->num_mipmaps; // Check data format - if (((header->channels[0] == 'l') && (header->channels[1] == 0)) && (header->channel_depth[0] == 8)) *format = PIXELFORMAT_UNCOMPRESSED_GRAYSCALE; - else if (((header->channels[0] == 'l') && (header->channels[1] == 'a')) && ((header->channel_depth[0] == 8) && (header->channel_depth[1] == 8))) *format = PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA; + if (((header->channels[0] == 'l') && (header->channels[1] == 0)) && (header->channel_depth[0] == 8)) *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE; + else if (((header->channels[0] == 'l') && (header->channels[1] == 'a')) && ((header->channel_depth[0] == 8) && (header->channel_depth[1] == 8))) *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA; else if ((header->channels[0] == 'r') && (header->channels[1] == 'g') && (header->channels[2] == 'b')) { if (header->channels[3] == 'a') { - if ((header->channel_depth[0] == 5) && (header->channel_depth[1] == 5) && (header->channel_depth[2] == 5) && (header->channel_depth[3] == 1)) *format = PIXELFORMAT_UNCOMPRESSED_R5G5B5A1; - else if ((header->channel_depth[0] == 4) && (header->channel_depth[1] == 4) && (header->channel_depth[2] == 4) && (header->channel_depth[3] == 4)) *format = PIXELFORMAT_UNCOMPRESSED_R4G4B4A4; - else if ((header->channel_depth[0] == 8) && (header->channel_depth[1] == 8) && (header->channel_depth[2] == 8) && (header->channel_depth[3] == 8)) *format = PIXELFORMAT_UNCOMPRESSED_R8G8B8A8; + if ((header->channel_depth[0] == 5) && (header->channel_depth[1] == 5) && (header->channel_depth[2] == 5) && (header->channel_depth[3] == 1)) *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1; + else if ((header->channel_depth[0] == 4) && (header->channel_depth[1] == 4) && (header->channel_depth[2] == 4) && (header->channel_depth[3] == 4)) *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4; + else if ((header->channel_depth[0] == 8) && (header->channel_depth[1] == 8) && (header->channel_depth[2] == 8) && (header->channel_depth[3] == 8)) *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8; } else if (header->channels[3] == 0) { - if ((header->channel_depth[0] == 5) && (header->channel_depth[1] == 6) && (header->channel_depth[2] == 5)) *format = PIXELFORMAT_UNCOMPRESSED_R5G6B5; - else if ((header->channel_depth[0] == 8) && (header->channel_depth[1] == 8) && (header->channel_depth[2] == 8)) *format = PIXELFORMAT_UNCOMPRESSED_R8G8B8; + if ((header->channel_depth[0] == 5) && (header->channel_depth[1] == 6) && (header->channel_depth[2] == 5)) *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G6B5; + else if ((header->channel_depth[0] == 8) && (header->channel_depth[1] == 8) && (header->channel_depth[2] == 8)) *format = RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8; } } - else if (header->channels[0] == 2) *format = PIXELFORMAT_COMPRESSED_PVRT_RGB; - else if (header->channels[0] == 3) *format = PIXELFORMAT_COMPRESSED_PVRT_RGBA; + else if (header->channels[0] == 2) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGB; + else if (header->channels[0] == 3) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGBA; file_data_ptr += header->metadata_size; // Skip meta data header @@ -771,15 +802,15 @@ void *rl_load_pvr_from_memory(const unsigned char *file_data, unsigned int file_ int bpp = 0; switch (*format) { - case PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: bpp = 8; break; - case PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: - case PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: - case PIXELFORMAT_UNCOMPRESSED_R5G6B5: - case PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: bpp = 16; break; - case PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: bpp = 32; break; - case PIXELFORMAT_UNCOMPRESSED_R8G8B8: bpp = 24; break; - case PIXELFORMAT_COMPRESSED_PVRT_RGB: - case PIXELFORMAT_COMPRESSED_PVRT_RGBA: bpp = 4; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: bpp = 8; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G6B5: + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: bpp = 16; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: bpp = 32; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8: bpp = 24; break; + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGB: + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGBA: bpp = 4; break; default: break; } @@ -789,7 +820,7 @@ void *rl_load_pvr_from_memory(const unsigned char *file_data, unsigned int file_ RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); } } - else if (pvr_version == 52) RL_GPUTEX_WARN("PVRv2 format not supported, update your files to PVRv3"); + else if (pvr_version == 52) RL_GPUTEX_LOG("PVRv2 format not supported, update your files to PVRv3"); } return image_data; @@ -829,7 +860,7 @@ void *rl_load_astc_from_memory(const unsigned char *file_data, unsigned int file if ((header->id[3] != 0x5c) || (header->id[2] != 0xa1) || (header->id[1] != 0xab) || (header->id[0] != 0x13)) { - RL_GPUTEX_WARN("ASTC file data not valid"); + RL_GPUTEX_LOG("ASTC file data not valid"); } else { @@ -852,10 +883,10 @@ void *rl_load_astc_from_memory(const unsigned char *file_data, unsigned int file RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); - if (bpp == 8) *format = PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA; - else if (bpp == 2) *format = PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA; + if (bpp == 8) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA; + else if (bpp == 2) *format = RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA; } - else RL_GPUTEX_WARN("ASTC block size configuration not supported"); + else RL_GPUTEX_LOG("ASTC block size configuration not supported"); } } @@ -874,27 +905,27 @@ static int get_pixel_data_size(int width, int height, int format) switch (format) { - case PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: bpp = 8; break; - case PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: - case PIXELFORMAT_UNCOMPRESSED_R5G6B5: - case PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: - case PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: bpp = 16; break; - case PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: bpp = 32; break; - case PIXELFORMAT_UNCOMPRESSED_R8G8B8: bpp = 24; break; - case PIXELFORMAT_UNCOMPRESSED_R32: bpp = 32; break; - case PIXELFORMAT_UNCOMPRESSED_R32G32B32: bpp = 32*3; break; - case PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: bpp = 32*4; break; - case PIXELFORMAT_COMPRESSED_DXT1_RGB: - case PIXELFORMAT_COMPRESSED_DXT1_RGBA: - case PIXELFORMAT_COMPRESSED_ETC1_RGB: - case PIXELFORMAT_COMPRESSED_ETC2_RGB: - case PIXELFORMAT_COMPRESSED_PVRT_RGB: - case PIXELFORMAT_COMPRESSED_PVRT_RGBA: bpp = 4; break; - case PIXELFORMAT_COMPRESSED_DXT3_RGBA: - case PIXELFORMAT_COMPRESSED_DXT5_RGBA: - case PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: - case PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: bpp = 8; break; - case PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: bpp = 2; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: bpp = 8; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G6B5: + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: bpp = 16; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: bpp = 32; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8: bpp = 24; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32: bpp = 32; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32: bpp = 32*3; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: bpp = 32*4; break; + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGB: + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGBA: + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC1_RGB: + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_RGB: + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGB: + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGBA: bpp = 4; break; + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT3_RGBA: + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT5_RGBA: + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: bpp = 8; break; + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: bpp = 2; break; default: break; } @@ -904,8 +935,8 @@ static int get_pixel_data_size(int width, int height, int format) // if texture is smaller, minimum dataSize is 8 or 16 if ((width < 4) && (height < 4)) { - if ((format >= PIXELFORMAT_COMPRESSED_DXT1_RGB) && (format < PIXELFORMAT_COMPRESSED_DXT3_RGBA)) data_size = 8; - else if ((format >= PIXELFORMAT_COMPRESSED_DXT3_RGBA) && (format < PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA)) data_size = 16; + if ((format >= RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGB) && (format < RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT3_RGBA)) data_size = 8; + else if ((format >= RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT3_RGBA) && (format < RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA)) data_size = 16; } return data_size; diff --git a/src/rtextures.c b/src/rtextures.c index 7dfdc8b8d..022991531 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -169,22 +169,14 @@ #pragma GCC diagnostic ignored "-Wunused-function" #endif - - #define RL_GPUTEX_MALLOC RL_MALLOC - #define RL_GPUTEX_CALLOC RL_CALLOC - #define RL_GPUTEX_REALLOC RL_REALLOC - #define RL_GPUTEX_FREE RL_FREE - #define RL_GPUTEX_WARN(...) TRACELOG(LOG_WARNING, "IMAGE: " __VA_ARGS__) - #define RL_GPUTEX_SHOW_WARN_INFO - - // FIXME: probably, we should NOT export public functions from rl_gputex - // but this is how it always worked... so let's keep it this way - #define RLGPUTEXAPI RLAPI - + #define RL_GPUTEX_MALLOC RL_MALLOC + #define RL_GPUTEX_CALLOC RL_CALLOC + #define RL_GPUTEX_FREE RL_FREE + #define RL_GPUTEX_LOG(...) TRACELOG(LOG_WARNING, "IMAGE: " __VA_ARGS__) + #define RL_GPUTEX_SHOW_LOG_INFO #define RL_GPUTEX_IMPLEMENTATION #include "external/rl_gputex.h" // Required for: rl_load_xxx_from_memory() // NOTE: Used to read compressed textures data (multiple formats support) - #if defined(__GNUC__) // GCC and Clang #pragma GCC diagnostic pop #endif From 7262be85fdfa46cbf22899a776b40a7ccd8fad29 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 26 Jul 2025 12:06:24 +0200 Subject: [PATCH 066/328] Minor format tweaks --- src/platforms/rcore_desktop_sdl.c | 13 ++++++------- src/rcore.c | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/platforms/rcore_desktop_sdl.c b/src/platforms/rcore_desktop_sdl.c index 82337dd4e..98bbda76c 100644 --- a/src/platforms/rcore_desktop_sdl.c +++ b/src/platforms/rcore_desktop_sdl.c @@ -252,8 +252,7 @@ static const int CursorsLUT[] = { //SDL_SYSTEM_CURSOR_WAITARROW, // No equivalent implemented on MouseCursor enum on raylib.h }; - -// SDL3 Migration Layer made to avoid `ifdefs` inside functions when we can. +// SDL3 Migration Layer made to avoid 'ifdefs' inside functions when we can. #if defined(PLATFORM_DESKTOP_SDL3) // SDL3 Migration: @@ -304,13 +303,13 @@ int SDL_GetNumVideoDisplays(void) int monitorCount = 0; SDL_DisplayID *displays = SDL_GetDisplays(&monitorCount); - // Safe because If `mem` is NULL, SDL_free does nothing + // Safe because If 'mem' is NULL, SDL_free does nothing SDL_free(displays); return monitorCount; } -// SLD3 Migration: To emulate SDL2 this function should return `SDL_DISABLE` or `SDL_ENABLE` +// SLD3 Migration: To emulate SDL2 this function should return 'SDL_DISABLE' or 'SDL_ENABLE' // representing the *processing state* of the event before this function makes any changes to it Uint8 SDL_EventState(Uint32 type, int state) { @@ -581,7 +580,7 @@ void SetWindowState(unsigned int flags) if (flags & FLAG_WINDOW_UNFOCUSED) { // NOTE: To be able to implement this part it seems that we should - // do it ourselves, via `Windows.h`, `X11/Xlib.h` or even `Cocoa.h` + // do it ourselves, via 'windows.h', 'X11/Xlib.h' or even 'Cocoa.h' TRACELOG(LOG_WARNING, "SetWindowState() - FLAG_WINDOW_UNFOCUSED is not supported on PLATFORM_DESKTOP_SDL"); } if (flags & FLAG_WINDOW_TOPMOST) @@ -1169,13 +1168,13 @@ Image GetClipboardImage(void) image = LoadImageFromMemory(imageExtensions[i], fileData, dataSize); if (IsImageValid(image)) { - TRACELOG(LOG_INFO, "Clipboard image: Got image from clipboard as a `%s` successfully", imageExtensions[i]); + TRACELOG(LOG_INFO, "Clipboard: Got image from clipboard successfully: %s", imageExtensions[i]); return image; } } } - if (!IsImageValid(image)) TRACELOG(LOG_WARNING, "Clipboard image: Couldn't get clipboard data. Error: %s", SDL_GetError()); + if (!IsImageValid(image)) TRACELOG(LOG_WARNING, "Clipboard: Couldn't get clipboard data. ERROR: %s", SDL_GetError()); #endif return image; diff --git a/src/rcore.c b/src/rcore.c index e97ef357c..c0af6654a 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -539,7 +539,7 @@ const char *TextFormat(const char *text, ...); // Formatting of tex #pragma message ("WARNING: Getting image from the clipboard might not work without SUPPORT_FILEFORMAT_PNG or SUPPORT_FILEFORMAT_JPG") #endif - // Not needed because `rtexture.c` will automatically defined STBI_REQUIRED when any SUPPORT_FILEFORMAT_* is defined + // Not needed because 'rtexture.c' will automatically defined STBI_REQUIRED when any SUPPORT_FILEFORMAT_* is defined // #if !defined(STBI_REQUIRED) // #pragma message ("WARNING: "STBI_REQUIRED is not defined, that means we can't load images from clipbard" // #endif From 5c680739bd7077c318b316503004137b7edcc79d Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 26 Jul 2025 12:49:03 +0200 Subject: [PATCH 067/328] Removed platform-specific flag from config.h #4988 --- src/config.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/config.h b/src/config.h index 8b8e1074d..ef01013b3 100644 --- a/src/config.h +++ b/src/config.h @@ -299,9 +299,4 @@ //------------------------------------------------------------------------------------ #define MAX_TRACELOG_MSG_LENGTH 256 // Max length of one trace-log message -//DRM configuration -#if defined(PLATFORM_DRM) -//#define SUPPORT_DRM_CACHE 1 //enable triple buffered DRM caching -#endif //PLATFORM_DRM - #endif // CONFIG_H From c9f9219fa62d117eedb146d216f11f63aade30a7 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 26 Jul 2025 12:49:49 +0200 Subject: [PATCH 068/328] REVIEWED: DRM cache buffers support #4988 --- src/platforms/rcore_drm.c | 269 +++++++++++++++++++------------------- 1 file changed, 137 insertions(+), 132 deletions(-) diff --git a/src/platforms/rcore_drm.c b/src/platforms/rcore_drm.c index a5c36977e..a3051f485 100644 --- a/src/platforms/rcore_drm.c +++ b/src/platforms/rcore_drm.c @@ -48,11 +48,11 @@ * **********************************************************************************************/ -#include // POSIX file control definitions - open(), creat(), fcntl() -#include // POSIX standard function definitions - read(), close(), STDIN_FILENO -#include // POSIX terminal control definitions - tcgetattr(), tcsetattr() -#include // POSIX threads management (inputs reading) -#include // POSIX directory browsing +#include // POSIX file control definitions - open(), creat(), fcntl() +#include // POSIX standard function definitions - read(), close(), STDIN_FILENO +#include // POSIX terminal control definitions - tcgetattr(), tcsetattr() +#include // POSIX threads management (inputs reading) +#include // POSIX directory browsing #include // Required for: ioctl() - UNIX System call for device-specific input/output operations #include // Linux: KDSKBMODE, K_MEDIUMRAM constants definition @@ -71,23 +71,13 @@ #include "EGL/egl.h" // Native platform windowing system interface #include "EGL/eglext.h" // EGL extensions +// NOTE: DRM cache enables triple buffered DRM caching #if defined(SUPPORT_DRM_CACHE) -#include // for drmHandleEvent poll -#include //for EBUSY, EAGAIN + #include // Required for: drmHandleEvent() poll + #include // Required for: EBUSY, EAGAIN -#define MAX_CACHED_BOS 3 - -typedef struct { - struct gbm_bo *bo; - uint32_t fbId; // DRM framebuffer ID -} FramebufferCache; - -static FramebufferCache fbCache[MAX_CACHED_BOS] = {0}; -static volatile int fbCacheCount = 0; -static volatile bool pendingFlip = false; -static bool crtcSet = false; - -#endif //SUPPORT_DRM_CACHE + #define MAX_DRM_CACHED_BUFFERS 3 +#endif // SUPPORT_DRM_CACHE #ifndef EGL_OPENGL_ES3_BIT #define EGL_OPENGL_ES3_BIT 0x40 @@ -96,18 +86,16 @@ static bool crtcSet = false; //---------------------------------------------------------------------------------- // Defines and Macros //---------------------------------------------------------------------------------- -#define USE_LAST_TOUCH_DEVICE // When multiple touchscreens are connected, only use the one with the highest event number +#define USE_LAST_TOUCH_DEVICE // When multiple touchscreens are connected, only use the one with the highest event number -#define DEFAULT_EVDEV_PATH "/dev/input/" // Path to the linux input events +#define DEFAULT_EVDEV_PATH "/dev/input/" // Path to the linux input events -// So actually the biggest key is KEY_CNT but we only really map the keys up to -// KEY_ALS_TOGGLE +// Actually biggest key is KEY_CNT but we only really map the keys up to KEY_ALS_TOGGLE #define KEYMAP_SIZE KEY_ALS_TOGGLE //---------------------------------------------------------------------------------- // Types and Structures Definition //---------------------------------------------------------------------------------- - typedef struct { // Display data int fd; // File descriptor for /dev/dri/... @@ -147,6 +135,18 @@ typedef struct { int gamepadCount; // The number of gamepads registered } PlatformData; +#if defined(SUPPORT_DRM_CACHE) +typedef struct { + struct gbm_bo *bo; // Graphics buffer object + uint32_t fbId; // DRM framebuffer ID +} FramebufferCache; + +static FramebufferCache fbCache[MAX_DRM_CACHED_BUFFERS] = { 0 }; +static volatile int fbCacheCount = 0; +static volatile bool pendingFlip = false; +static bool crtcSet = false; +#endif // SUPPORT_DRM_CACHE + //---------------------------------------------------------------------------------- // Global Variables Definition //---------------------------------------------------------------------------------- @@ -570,18 +570,23 @@ void DisableCursor(void) } #if defined(SUPPORT_DRM_CACHE) -//callback to destroy cached framebuffer, set by gbm_bo_set_user_data() -static void DestroyFrameBufferCallback(struct gbm_bo *bo, void *data) { + +// Destroy cached framebuffer callback, set by gbm_bo_set_user_data() +static void DestroyFrameBufferCallback(struct gbm_bo *bo, void *data) +{ uint32_t fbId = (uintptr_t)data; + // Remove from cache - for (int i = 0; i < fbCacheCount; i++) { - if (fbCache[i].bo == bo) { - TRACELOG(LOG_INFO, "DRM: fb removed %u", (uintptr_t)fbId); + for (int i = 0; i < fbCacheCount; i++) + { + if (fbCache[i].bo == bo) + { + TRACELOG(LOG_INFO, "DISPLAY: DRM: Framebuffer removed [%u]", (uintptr_t)fbId); drmModeRmFB(platform.fd, fbCache[i].fbId); // Release DRM FB + // Shift remaining entries - for (int j = i; j < fbCacheCount - 1; j++) { - fbCache[j] = fbCache[j + 1]; - } + for (int j = i; j < fbCacheCount - 1; j++) fbCache[j] = fbCache[j + 1]; + fbCacheCount--; break; } @@ -589,56 +594,53 @@ static void DestroyFrameBufferCallback(struct gbm_bo *bo, void *data) { } // Create or retrieve cached DRM FB for BO -static uint32_t GetOrCreateFbForBo(struct gbm_bo *bo) { +static uint32_t GetOrCreateFbForBo(struct gbm_bo *bo) +{ // Try to find existing cache entry - for (int i = 0; i < fbCacheCount; i++) { - if (fbCache[i].bo == bo) { - return fbCache[i].fbId; - } + for (int i = 0; i < fbCacheCount; i++) + { + if (fbCache[i].bo == bo) return fbCache[i].fbId; } // Create new entry if cache not full - if (fbCacheCount >= MAX_CACHED_BOS) { - //FB cache full! - return 0; - } + if (fbCacheCount >= MAX_DRM_CACHED_BUFFERS) return 0; // FB cache full uint32_t handle = gbm_bo_get_handle(bo).u32; uint32_t stride = gbm_bo_get_stride(bo); uint32_t width = gbm_bo_get_width(bo); uint32_t height = gbm_bo_get_height(bo); - uint32_t fbId; - if (drmModeAddFB(platform.fd, width, height, 24, 32, stride, handle, &fbId)) { - //rmModeAddFB failed - return 0; - } + uint32_t fbId = 0; + if (drmModeAddFB(platform.fd, width, height, 24, 32, stride, handle, &fbId)) return 0; // Store in cache fbCache[fbCacheCount] = (FramebufferCache){ .bo = bo, .fbId = fbId }; fbCacheCount++; // Set destroy callback to auto-cleanup - gbm_bo_set_user_data(bo, (void*)(uintptr_t)fbId, DestroyFrameBufferCallback); + gbm_bo_set_user_data(bo, (void *)(uintptr_t)fbId, DestroyFrameBufferCallback); + + TRACELOG(LOG_INFO, "DISPLAY: DRM: Added new buffer object [%u]" , (uintptr_t)fbId); - TRACELOG(LOG_INFO, "DRM: added new bo %u" , (uintptr_t)fbId); return fbId; } // Renders a blank frame to allocate initial buffers -void RenderBlankFrame() { +// TODO: WARNING: Platform layers do not include OpenGL code! +void RenderBlankFrame() +{ glClearColor(0, 0, 0, 1); glClear(GL_COLOR_BUFFER_BIT); eglSwapBuffers(platform.device, platform.surface); - - // Ensure the buffer is processed - glFinish(); + glFinish(); // Ensure the buffer is processed } // Initialize with first buffer only -int InitSwapScreenBuffer() { - if (!platform.gbmSurface || platform.fd < 0) { - TRACELOG(LOG_ERROR, "DRM not initialized"); +int InitSwapScreenBuffer() +{ + if (!platform.gbmSurface || (platform.fd < 0)) + { + TRACELOG(LOG_ERROR, "DISPLAY: DRM: Swap buffers can not be initialized"); return -1; } @@ -647,23 +649,24 @@ int InitSwapScreenBuffer() { // Get first buffer struct gbm_bo *bo = gbm_surface_lock_front_buffer(platform.gbmSurface); - if (!bo) { - TRACELOG(LOG_ERROR, "Failed to lock initial buffer"); + if (!bo) + { + TRACELOG(LOG_ERROR, "DISPLAY: DRM: Failed to lock initial swap buffer"); return -1; } // Create FB for first buffer uint32_t fbId = GetOrCreateFbForBo(bo); - if (!fbId) { + if (!fbId) + { gbm_surface_release_buffer(platform.gbmSurface, bo); return -1; } // Initial CRTC setup - if (drmModeSetCrtc(platform.fd, platform.crtc->crtc_id, fbId, - 0, 0, &platform.connector->connector_id, 1, - &platform.connector->modes[platform.modeIndex])) { - TRACELOG(LOG_ERROR, "Initial CRTC setup failed: %s", strerror(errno)); + if (drmModeSetCrtc(platform.fd, platform.crtc->crtc_id, fbId, 0, 0, &platform.connector->connector_id, 1, &platform.connector->modes[platform.modeIndex])) + { + TRACELOG(LOG_ERROR, "DISPLAY: DRM: Failed to initialize CRTC setup. ERROR: %s", strerror(errno)); gbm_surface_release_buffer(platform.gbmSurface, bo); return -1; } @@ -671,32 +674,38 @@ int InitSwapScreenBuffer() { // Keep first buffer locked until flipped platform.prevBO = bo; crtcSet = true; + return 0; } -// Static page flip handler -// this will be called once the drmModePageFlip() finished from the drmHandleEvent(platform.fd, &evctx); context -static void PageFlipHandler(int fd, unsigned int frame, - unsigned int sec, unsigned int usec, - void *data) { - (void)fd; (void)frame; (void)sec; (void)usec; // Unused +// Static page flip handler +// NOTE: Called once the drmModePageFlip() finished from the drmHandleEvent() context +static void PageFlipHandler(int fd, unsigned int frame, unsigned int sec, unsigned int usec, void *data) +{ + // Unused inputs + (void)fd; + (void)frame; + (void)sec; + (void)usec; + pendingFlip = false; - struct gbm_bo *bo_to_release = (struct gbm_bo *)data; - //Buffers are released after the flip completes (via page_flip_handler), ensuring they're no longer in use. + struct gbm_bo *boToRelease = (struct gbm_bo *)data; + + // Buffers are released after the flip completes (via page_flip_handler), ensuring they're no longer in use // Prevents the GPU from writing to a buffer being scanned out - if (bo_to_release) { - gbm_surface_release_buffer(platform.gbmSurface, bo_to_release); - } + if (boToRelease) gbm_surface_release_buffer(platform.gbmSurface, boToRelease); } // Swap implementation with proper caching -void SwapScreenBuffer() { - static int loopCnt = 0; - loopCnt++; - static int errCnt[5] = {0}; +void SwapScreenBuffer() +{ if (!crtcSet || !platform.gbmSurface) return; - //call this only, if pendingFlip is not set + static int loopCnt = 0; + static int errCnt[5] = {0}; + loopCnt++; + + // Call this only, if pendingFlip is not set eglSwapBuffers(platform.device, platform.surface); // Process pending events non-blocking @@ -704,76 +713,68 @@ void SwapScreenBuffer() { .version = DRM_EVENT_CONTEXT_VERSION, .page_flip_handler = PageFlipHandler }; - + struct pollfd pfd = { .fd = platform.fd, .events = POLLIN }; - //polling for event for 0ms - while (poll(&pfd, 1, 0) > 0) { - drmHandleEvent(platform.fd, &evctx); - } + + // Polling for event for 0ms + while (poll(&pfd, 1, 0) > 0) drmHandleEvent(platform.fd, &evctx); // Skip if previous flip pending - if (pendingFlip) { - //Skip frame: flip pending - errCnt[0]++; + if (pendingFlip) + { + errCnt[0]++; // Skip frame: flip pending return; - } + } // Get new front buffer - struct gbm_bo *next_bo = gbm_surface_lock_front_buffer(platform.gbmSurface); - if (!next_bo) { - //Failed to lock front buffer + struct gbm_bo *nextBO = gbm_surface_lock_front_buffer(platform.gbmSurface); + if (!nextBO) // Failed to lock front buffer + { errCnt[1]++; return; } // Get FB ID (creates new one if needed) - uint32_t fbId = GetOrCreateFbForBo(next_bo); - if (!fbId) { - gbm_surface_release_buffer(platform.gbmSurface, next_bo); + uint32_t fbId = GetOrCreateFbForBo(nextBO); + if (!fbId) + { + gbm_surface_release_buffer(platform.gbmSurface, nextBO); errCnt[2]++; return; } // Attempt page flip - /* rmModePageFlip() schedules a buffer-flip for the next vblank and then - * notifies us about it. It takes a CRTC-id, fb-id and an arbitrary - * data-pointer and then schedules the page-flip. This is fully asynchronous and - * When the page-flip happens, the DRM-fd will become readable and we can call - * drmHandleEvent(). This will read all vblank/page-flip events and call our - * modeset_page_flip_event() callback with the data-pointer that we passed to - * drmModePageFlip(). We simply call modeset_draw_dev() then so the next frame - * is rendered.. - * returns immediately. - */ - if (drmModePageFlip(platform.fd, platform.crtc->crtc_id, fbId, - DRM_MODE_PAGE_FLIP_EVENT, platform.prevBO)) { - if (errno == EBUSY) { - //Display busy - skip flip - errCnt[3]++; - } else { - //Page flip failed - errCnt[4]++; - } - gbm_surface_release_buffer(platform.gbmSurface, next_bo); + // NOTE: rmModePageFlip() schedules a buffer-flip for the next vblank and then notifies us about it. + // It takes a CRTC-id, fb-id and an arbitrary data-pointer and then schedules the page-flip. + // This is fully asynchronous and when the page-flip happens, the DRM-fd will become readable and we can call drmHandleEvent(). + // This will read all vblank/page-flip events and call our modeset_page_flip_event() callback with the data-pointer that we passed to drmModePageFlip(). + // We simply call modeset_draw_dev() then so the next frame is rendered... returns immediately. + if (drmModePageFlip(platform.fd, platform.crtc->crtc_id, fbId, DRM_MODE_PAGE_FLIP_EVENT, platform.prevBO)) + { + if (errno == EBUSY) errCnt[3]++; // Display busy - skip flip + else errCnt[4]++; // Page flip failed + + gbm_surface_release_buffer(platform.gbmSurface, nextBO); return; } // Success: update state pendingFlip = true; - - platform.prevBO = next_bo; - //successful usage, do benchmarking - //in every 10 sec, at 60FPS 60*10 -> 600 - if(loopCnt >= 600) { - TRACELOG(LOG_INFO, "DRM err counters: %d, %d, %d, %d, %d, %d",errCnt[0],errCnt[1],errCnt[2],errCnt[3],errCnt[4], loopCnt); - //reinit the errors - for(int i=0;i<5;i++) { - errCnt[i] = 0; - } + platform.prevBO = nextBO; + +/* + // Some benchmarking code + if (loopCnt >= 600) + { + TRACELOG(LOG_INFO, "DRM: Error counters: %d, %d, %d, %d, %d, %d", errCnt[0], errCnt[1], errCnt[2], errCnt[3], errCnt[4], loopCnt); + for (int i = 0; i < 5; i++) errCnt[i] = 0; loopCnt = 0; } +*/ } -#else //SUPPORT_DRM_CACHE is not defined + +#else // !SUPPORT_DRM_CACHE + // Swap back buffer with front buffer (screen drawing) void SwapScreenBuffer(void) { @@ -803,7 +804,8 @@ void SwapScreenBuffer(void) platform.prevBO = bo; } -#endif //SUPPORT_DRM_CACHE +#endif // SUPPORT_DRM_CACHE + //---------------------------------------------------------------------------------- // Module Functions Definition: Misc //---------------------------------------------------------------------------------- @@ -1307,17 +1309,20 @@ int InitPlatform(void) //---------------------------------------------------------------------------- #if defined(SUPPORT_DRM_CACHE) - if(InitSwapScreenBuffer() == 0) { -#endif//SUPPORT_DRM_CACHE + if (InitSwapScreenBuffer() == 0) + { TRACELOG(LOG_INFO, "PLATFORM: DRM: Initialized successfully"); return 0; -#if defined(SUPPORT_DRM_CACHE) - } else { + } + else + { TRACELOG(LOG_INFO, "PLATFORM: DRM: Initialized failed"); return -1; } -#endif //SUPPORT_DRM_CACHE - +#else // !SUPPORT_DRM_CACHE + TRACELOG(LOG_INFO, "PLATFORM: DRM: Initialized successfully"); + return 0; +#endif } // Close platform From 8343aed4f6e7a52e2483b1103bf43287807b64b8 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 26 Jul 2025 12:50:12 +0200 Subject: [PATCH 069/328] Avoid fatal errors on OBJ model loading --- src/rmodels.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rmodels.c b/src/rmodels.c index ac6f4c594..0dc7572f1 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -4292,7 +4292,7 @@ static Model LoadOBJ(const char *fileName) if (fileText == NULL) { - TRACELOG(LOG_ERROR, "MODEL: [%s] Unable to read obj file", fileName); + TRACELOG(LOG_WARNING, "MODEL: [%s] Unable to read obj file", fileName); return model; } @@ -4308,7 +4308,7 @@ static Model LoadOBJ(const char *fileName) if (ret != TINYOBJ_SUCCESS) { - TRACELOG(LOG_ERROR, "MODEL: Unable to read obj data %s", fileName); + TRACELOG(LOG_WARNING, "MODEL: Unable to read obj data %s", fileName); return model; } From eb7f8912f8d735c9d078744839659b73598fdb24 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 26 Jul 2025 12:50:29 +0200 Subject: [PATCH 070/328] Minor format tweaks --- src/platforms/rcore_desktop_glfw.c | 4 ++-- src/platforms/rcore_desktop_sdl.c | 14 +++++++------- src/raudio.c | 3 ++- src/rtextures.c | 2 +- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index 038e1c649..d701691a1 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -1862,8 +1862,8 @@ static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, i // WARNING: GLFW could return GLFW_REPEAT, we need to consider it as 1 // to work properly with our implementation (IsKeyDown/IsKeyUp checks) if (action == GLFW_RELEASE) CORE.Input.Keyboard.currentKeyState[key] = 0; - else if(action == GLFW_PRESS) CORE.Input.Keyboard.currentKeyState[key] = 1; - else if(action == GLFW_REPEAT) CORE.Input.Keyboard.keyRepeatInFrame[key] = 1; + else if (action == GLFW_PRESS) CORE.Input.Keyboard.currentKeyState[key] = 1; + else if (action == GLFW_REPEAT) CORE.Input.Keyboard.keyRepeatInFrame[key] = 1; // WARNING: Check if CAPS/NUM key modifiers are enabled and force down state for those keys if (((key == KEY_CAPS_LOCK) && ((mods & GLFW_MOD_CAPS_LOCK) > 0)) || diff --git a/src/platforms/rcore_desktop_sdl.c b/src/platforms/rcore_desktop_sdl.c index 98bbda76c..374acd72b 100644 --- a/src/platforms/rcore_desktop_sdl.c +++ b/src/platforms/rcore_desktop_sdl.c @@ -57,8 +57,8 @@ #include "SDL3/SDL.h" #elif USING_SDL2_PROJECT #include "SDL2/SDL.h" -#else - #include "SDL.h" +#else + #include "SDL.h" #endif #if defined(GRAPHICS_API_OPENGL_ES2) @@ -66,12 +66,12 @@ //#include "SDL_opengles2.h" #else // SDL OpenGL functionality (if required, instead of internal renderer) - #ifdef USING_SDL3_PROJECT - #include "SDL3/SDL_opengl.h" + #ifdef USING_SDL3_PROJECT + #include "SDL3/SDL_opengl.h" #elif USING_SDL2_PROJECT - #include "SDL2/SDL_opengl.h" - #else - #include "SDL_opengl.h" + #include "SDL2/SDL_opengl.h" + #else + #include "SDL_opengl.h" #endif #endif diff --git a/src/raudio.c b/src/raudio.c index ba1fba081..3301d7009 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -1547,7 +1547,8 @@ Music LoadMusicStreamFromMemory(const char *fileType, const unsigned char *data, music.looping = true; // Looping enabled by default musicLoaded = true; } - else { + else + { drwav_uninit(ctxWav); RL_FREE(ctxWav); } diff --git a/src/rtextures.c b/src/rtextures.c index 022991531..bdfe83c71 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -168,7 +168,7 @@ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-function" #endif - + #define RL_GPUTEX_MALLOC RL_MALLOC #define RL_GPUTEX_CALLOC RL_CALLOC #define RL_GPUTEX_FREE RL_FREE From 1fc0b4955fb9ad0defc4fb0473358f0b59afb9e9 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 26 Jul 2025 13:36:03 +0200 Subject: [PATCH 071/328] REVIEWED: `rl_gputex.h`, added some info for future improvements --- src/external/rl_gputex.h | 602 +++++++++++++++++++++++++++++++++++++-- src/rtextures.c | 1 - 2 files changed, 574 insertions(+), 29 deletions(-) diff --git a/src/external/rl_gputex.h b/src/external/rl_gputex.h index 276791430..07ff773a5 100644 --- a/src/external/rl_gputex.h +++ b/src/external/rl_gputex.h @@ -13,10 +13,6 @@ * FIXME: This library still depends on Raylib due to the following reasons: * - rl_save_ktx_to_memory() requires rlGetGlTextureFormats() from rlgl.h * though this is not a problem, if you don't need KTX support -* - all constants starting with PIXELFORMAT_* come from raylib.h -* this one is pretty hard to change, because it depends on exact ABI of 'enum PixelFormat' -* however, you can copy-paste said enum or include the header without Raylib sources -* - (probably) few minor issues that are hidden by Raylib inclusion and haven't been spotted yet * * TODO: * - Review rl_load_ktx_from_memory() to support KTX v2.2 specs @@ -38,8 +34,6 @@ * Make sure that this macro puts newline character '\n' at the end * * #define RL_GPUTEX_MALLOC -* #define RL_GPUTEX_CALLOC -* #define RL_GPUTEX_REALLOC * #define RL_GPUTEX_FREE * Define those macros in order to provide your own libc-compliant allocator; * not doing so will include @@ -157,37 +151,28 @@ RLGPUTEXAPI int rl_save_ktx_to_memory(const char *fileName, void *data, int widt #if defined(RL_GPUTEX_IMPLEMENTATION) #if defined(RL_GPUTEX_SHOW_LOG_INFO) && !defined(RL_GPUTEX_LOG) - #include // Required for: printf() + #include // Required for: printf() #endif - #if !defined(RL_GPUTEX_MALLOC) || !defined(RL_GPUTEX_NULL) - #include // Required for: NULL, malloc(), calloc(), free() + #include // Required for: NULL, malloc(), calloc(), free() #endif - #if !defined(RL_GPUTEX_MEMCPY) - #include // Required for: memcpy() + #include // Required for: memcpy() #endif -#if defined(RL_GPUTEX_SUPPORT_KTX) && !defined(RAYLIB_H) - #error "FIXME: RL_GPUTEX_SUPPORT_KTX require Raylib function: rlGetGlTextureFormats()" -#endif - -#if defined(RL_GPUTEX_MALLOC) || defined(RL_GPUTEX_CALLOC) || defined(RL_GPUTEX_REALLOC) || defined(RL_GPUTEX_FREE) - #if !defined(RL_GPUTEX_MALLOC) || !defined(RL_GPUTEX_CALLOC) || !defined(RL_GPUTEX_REALLOC) || !defined(RL_GPUTEX_FREE) - #error "You must provide all RL_GPUTEX_* allocating functions - not just few!" +#if defined(RL_GPUTEX_MALLOC) || defined(RL_GPUTEX_FREE) + #if !defined(RL_GPUTEX_MALLOC) || !defined(RL_GPUTEX_FREE) + #warning "RL_GPUTEX_MALLOC and RL_GPUTEX_FREE allocation functions are required to be provided" #endif #endif - #if !defined(RL_GPUTEX_MALLOC) #define RL_GPUTEX_MALLOC(sz) malloc(sz) - #define RL_GPUTEX_CALLOC(num, sz) calloc(num, sz) #define RL_GPUTEX_FREE(ptr) free(ptr) #endif #if !defined(RL_GPUTEX_NULL) #define RL_GPUTEX_NULL NULL #endif - #if !defined(RL_GPUTEX_MEMCPY) #define RL_GPUTEX_MEMCPY(dest, src, num) memcpy(dest, src, num) #endif @@ -214,6 +199,9 @@ RLGPUTEXAPI int rl_save_ktx_to_memory(const char *fileName, void *data, int widt // Get pixel data size in bytes for certain pixel format static int get_pixel_data_size(int width, int height, int format); +// Get OpenGL internal formats and data type from rlGpuTexPixelFormat +void get_gl_texture_formats(int format, unsigned int *gl_internal_format, unsigned int *gl_format, unsigned int *gl_type); + //---------------------------------------------------------------------------------- // Module Functions Definition //---------------------------------------------------------------------------------- @@ -579,9 +567,9 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo { // KTX file Header (64 bytes) // v1.1 - https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/ - // v2.0 - http://github.khronos.org/KTX-Specification/ - Final specs by 2021-04-18 + // v2.0 - https://github.khronos.org/KTX-Specification/ktxspec.v2.html typedef struct { - char id[12]; // Identifier: "«KTX 11»\r\n\x1A\n" // KTX 2.0: "«KTX 22»\r\n\x1A\n" + char id[12]; // Identifier: "«KTX 11»\r\n\x1A\n" // KTX 2.0: "«KTX 20»\r\n\x1A\n" unsigned int endianness; // Little endian: 0x01 0x02 0x03 0x04 unsigned int gl_type; // For compressed textures, glType must equal 0 unsigned int gl_type_size; // For compressed texture data, usually 1 @@ -598,6 +586,17 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo // KTX 2.0: UInt32 supercompressionScheme - 0 (None), 1 (Crunch CRN), 2 (Zlib DEFLATE)... // KTX 2.0 defines additional header elements... } ktx_header; + + Byte[12] identifier + UInt32 vkFormat + UInt32 typeSize + UInt32 pixelWidth + UInt32 pixelHeight + UInt32 pixelDepth + UInt32 layerCount + UInt32 faceCount + UInt32 levelCount + UInt32 supercompressionScheme // Calculate file data_size required int data_size = sizeof(ktx_header); @@ -608,7 +607,7 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo w /= 2; h /= 2; } - unsigned char *file_data = RL_GPUTEX_CALLOC(data_size, 1); + unsigned char *file_data = RL_GPUTEX_MALLOC(data_size); unsigned char *file_data_ptr = file_data; ktx_header header = { 0 }; @@ -634,13 +633,15 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo header.faces = 1; header.mipmap_levels = mipmaps; // If it was 0, it means mipmaps should be generated on loading (not for compressed formats) header.key_value_data_size = 0; // No extra data after the header - - rlGetGlTextureFormats(format, &header.gl_internal_format, &header.gl_format, &header.gl_type); // rlgl module function - header.gl_base_internal_format = header.gl_format; // KTX 1.1 only + + // TODO: WARNING: Function dependant on rlgl library! + rlGetGlTextureFormats(format, &header.gl_internal_format, &header.gl_format, &header.gl_type); // rlgl module function + + header.gl_base_internal_format = header.gl_format; // TODO: WARNING: KTX 1.1 only // NOTE: We can save into a .ktx all PixelFormats supported by raylib, including compressed formats like DXT, ETC or ASTC - if (header.gl_format == -1) RL_GPUTEX_LOG("GL format not supported for KTX export (%i)", header.gl_format); + if (header.gl_format == -1) RL_GPUTEX_LOG("RL_GPUTEX: GL format not supported for KTX export (%i)", header.gl_format); else { RL_GPUTEX_MEMCPY(file_data_ptr, &header, sizeof(ktx_header)); @@ -941,4 +942,549 @@ static int get_pixel_data_size(int width, int height, int format) return data_size; } + +// Get OpenGL internal formats and data type from rlGpuTexPixelFormat +void get_gl_texture_formats(int format, unsigned int *gl_internal_format, unsigned int *gl_format, unsigned int *gl_type) +{ + // KTX 1.1 uses OpenGL formats on header info but KTX 2.0 uses Vulkan texture formats, + // if this library is being improved to support KTX 2.0, it requires those formats to be provided -> View list at the end! + + /* + *glInternalFormat = 0; + *glFormat = 0; + *glType = 0; + + switch (format) + { + #if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_21) || defined(GRAPHICS_API_OPENGL_ES2) + // NOTE: on OpenGL ES 2.0 (WebGL), internalFormat must match format and options allowed are: GL_LUMINANCE, GL_RGB, GL_RGBA + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: *gl_internal_format = GL_LUMINANCE; *gl_format = GL_LUMINANCE; *gl_type = GL_UNSIGNED_BYTE; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: *gl_internal_format = GL_LUMINANCE_ALPHA; *gl_format = GL_LUMINANCE_ALPHA; *gl_type = GL_UNSIGNED_BYTE; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G6B5: *gl_internal_format = GL_RGB; *gl_format = GL_RGB; *gl_type = GL_UNSIGNED_SHORT_5_6_5; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8: *gl_internal_format = GL_RGB; *gl_format = GL_RGB; *gl_type = GL_UNSIGNED_BYTE; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_SHORT_5_5_5_1; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_SHORT_4_4_4_4; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_BYTE; break; + #if !defined(GRAPHICS_API_OPENGL_11) + #if defined(GRAPHICS_API_OPENGL_ES3) + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32: *gl_internal_format = GL_R32F_EXT; *gl_format = GL_RED_EXT; *gl_type = GL_FLOAT; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32: *gl_internal_format = GL_RGB32F_EXT; *gl_format = GL_RGB; *gl_type = GL_FLOAT; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: *gl_internal_format = GL_RGBA32F_EXT; *gl_format = GL_RGBA; *gl_type = GL_FLOAT; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16: *gl_internal_format = GL_R16F_EXT; *gl_format = GL_RED_EXT; *gl_type = GL_HALF_FLOAT; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16: *gl_internal_format = GL_RGB16F_EXT; *gl_format = GL_RGB; *gl_type = GL_HALF_FLOAT; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: *gl_internal_format = GL_RGBA16F_EXT; *gl_format = GL_RGBA; *gl_type = GL_HALF_FLOAT; break; + #else + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32: *gl_internal_format = GL_LUMINANCE; *gl_format = GL_LUMINANCE; *gl_type = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32: *gl_internal_format = GL_RGB; *gl_format = GL_RGB; *gl_type = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float + #if defined(GRAPHICS_API_OPENGL_21) + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16: *gl_internal_format = GL_LUMINANCE; *gl_format = GL_LUMINANCE; *gl_type = GL_HALF_FLOAT_ARB; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16: *gl_internal_format = GL_RGB; *gl_format = GL_RGB; *gl_type = GL_HALF_FLOAT_ARB; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_HALF_FLOAT_ARB; break; + #else // defined(GRAPHICS_API_OPENGL_ES2) + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16: *gl_internal_format = GL_LUMINANCE; *gl_format = GL_LUMINANCE; *gl_type = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16: *gl_internal_format = GL_RGB; *gl_format = GL_RGB; *gl_type = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: *gl_internal_format = GL_RGBA; *gl_format = GL_RGBA; *gl_type = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float + #endif + #endif + #endif + #elif defined(GRAPHICS_API_OPENGL_33) + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: *gl_internal_format = GL_R8; *gl_format = GL_RED; *gl_type = GL_UNSIGNED_BYTE; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: *gl_internal_format = GL_RG8; *gl_format = GL_RG; *gl_type = GL_UNSIGNED_BYTE; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G6B5: *gl_internal_format = GL_RGB565; *gl_format = GL_RGB; *gl_type = GL_UNSIGNED_SHORT_5_6_5; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8: *gl_internal_format = GL_RGB8; *gl_format = GL_RGB; *gl_type = GL_UNSIGNED_BYTE; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: *gl_internal_format = GL_RGB5_A1; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_SHORT_5_5_5_1; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: *gl_internal_format = GL_RGBA4; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_SHORT_4_4_4_4; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: *gl_internal_format = GL_RGBA8; *gl_format = GL_RGBA; *gl_type = GL_UNSIGNED_BYTE; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32: *gl_internal_format = GL_R32F; *gl_format = GL_RED; *gl_type = GL_FLOAT; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32: *gl_internal_format = GL_RGB32F; *gl_format = GL_RGB; *gl_type = GL_FLOAT; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: *gl_internal_format = GL_RGBA32F; *gl_format = GL_RGBA; *gl_type = GL_FLOAT; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16: *gl_internal_format = GL_R16F; *gl_format = GL_RED; *gl_type = GL_HALF_FLOAT; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16: *gl_internal_format = GL_RGB16F; *gl_format = GL_RGB; *gl_type = GL_HALF_FLOAT; break; + case RL_GPUTEX_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: *gl_internal_format = GL_RGBA16F; *gl_format = GL_RGBA; *gl_type = GL_HALF_FLOAT; break; + #endif + #if !defined(GRAPHICS_API_OPENGL_11) + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGB: *gl_internal_format = GL_COMPRESSED_RGB_S3TC_DXT1_EXT; break; + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT1_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; break; + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT3_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; break; + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_DXT5_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; break; + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC1_RGB: *gl_internal_format = GL_ETC1_RGB8_OES; break; // NOTE: Requires OpenGL ES 2.0 or OpenGL 4.3 + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_RGB: *gl_internal_format = GL_COMPRESSED_RGB8_ETC2; break; // NOTE: Requires OpenGL ES 3.0 or OpenGL 4.3 + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA8_ETC2_EAC; break; // NOTE: Requires OpenGL ES 3.0 or OpenGL 4.3 + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGB: *gl_internal_format = GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG; break; // NOTE: Requires PowerVR GPU + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_PVRT_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; break; // NOTE: Requires PowerVR GPU + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_ASTC_4x4_KHR; break; // NOTE: Requires OpenGL ES 3.1 or OpenGL 4.3 + case RL_GPUTEX_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: *gl_internal_format = GL_COMPRESSED_RGBA_ASTC_8x8_KHR; break; // NOTE: Requires OpenGL ES 3.1 or OpenGL 4.3 + #endif + default: RL_GPUTEX_LOG("GPUTEX: Current format not supported (%i)", format); break; + } + */ +} #endif // RL_GPUTEX_IMPLEMENTATION + +/* +// Vulkan texture formats +typedef enum VkFormat { + // Provided by VK_VERSION_1_0 + VK_FORMAT_UNDEFINED = 0, + VK_FORMAT_R4G4_UNORM_PACK8 = 1, + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2, + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3, + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4, + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5, + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6, + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7, + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8, + VK_FORMAT_R8_UNORM = 9, + VK_FORMAT_R8_SNORM = 10, + VK_FORMAT_R8_USCALED = 11, + VK_FORMAT_R8_SSCALED = 12, + VK_FORMAT_R8_UINT = 13, + VK_FORMAT_R8_SINT = 14, + VK_FORMAT_R8_SRGB = 15, + VK_FORMAT_R8G8_UNORM = 16, + VK_FORMAT_R8G8_SNORM = 17, + VK_FORMAT_R8G8_USCALED = 18, + VK_FORMAT_R8G8_SSCALED = 19, + VK_FORMAT_R8G8_UINT = 20, + VK_FORMAT_R8G8_SINT = 21, + VK_FORMAT_R8G8_SRGB = 22, + VK_FORMAT_R8G8B8_UNORM = 23, + VK_FORMAT_R8G8B8_SNORM = 24, + VK_FORMAT_R8G8B8_USCALED = 25, + VK_FORMAT_R8G8B8_SSCALED = 26, + VK_FORMAT_R8G8B8_UINT = 27, + VK_FORMAT_R8G8B8_SINT = 28, + VK_FORMAT_R8G8B8_SRGB = 29, + VK_FORMAT_B8G8R8_UNORM = 30, + VK_FORMAT_B8G8R8_SNORM = 31, + VK_FORMAT_B8G8R8_USCALED = 32, + VK_FORMAT_B8G8R8_SSCALED = 33, + VK_FORMAT_B8G8R8_UINT = 34, + VK_FORMAT_B8G8R8_SINT = 35, + VK_FORMAT_B8G8R8_SRGB = 36, + VK_FORMAT_R8G8B8A8_UNORM = 37, + VK_FORMAT_R8G8B8A8_SNORM = 38, + VK_FORMAT_R8G8B8A8_USCALED = 39, + VK_FORMAT_R8G8B8A8_SSCALED = 40, + VK_FORMAT_R8G8B8A8_UINT = 41, + VK_FORMAT_R8G8B8A8_SINT = 42, + VK_FORMAT_R8G8B8A8_SRGB = 43, + VK_FORMAT_B8G8R8A8_UNORM = 44, + VK_FORMAT_B8G8R8A8_SNORM = 45, + VK_FORMAT_B8G8R8A8_USCALED = 46, + VK_FORMAT_B8G8R8A8_SSCALED = 47, + VK_FORMAT_B8G8R8A8_UINT = 48, + VK_FORMAT_B8G8R8A8_SINT = 49, + VK_FORMAT_B8G8R8A8_SRGB = 50, + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51, + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52, + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53, + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54, + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55, + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56, + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57, + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58, + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59, + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60, + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61, + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62, + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63, + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64, + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65, + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66, + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67, + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68, + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69, + VK_FORMAT_R16_UNORM = 70, + VK_FORMAT_R16_SNORM = 71, + VK_FORMAT_R16_USCALED = 72, + VK_FORMAT_R16_SSCALED = 73, + VK_FORMAT_R16_UINT = 74, + VK_FORMAT_R16_SINT = 75, + VK_FORMAT_R16_SFLOAT = 76, + VK_FORMAT_R16G16_UNORM = 77, + VK_FORMAT_R16G16_SNORM = 78, + VK_FORMAT_R16G16_USCALED = 79, + VK_FORMAT_R16G16_SSCALED = 80, + VK_FORMAT_R16G16_UINT = 81, + VK_FORMAT_R16G16_SINT = 82, + VK_FORMAT_R16G16_SFLOAT = 83, + VK_FORMAT_R16G16B16_UNORM = 84, + VK_FORMAT_R16G16B16_SNORM = 85, + VK_FORMAT_R16G16B16_USCALED = 86, + VK_FORMAT_R16G16B16_SSCALED = 87, + VK_FORMAT_R16G16B16_UINT = 88, + VK_FORMAT_R16G16B16_SINT = 89, + VK_FORMAT_R16G16B16_SFLOAT = 90, + VK_FORMAT_R16G16B16A16_UNORM = 91, + VK_FORMAT_R16G16B16A16_SNORM = 92, + VK_FORMAT_R16G16B16A16_USCALED = 93, + VK_FORMAT_R16G16B16A16_SSCALED = 94, + VK_FORMAT_R16G16B16A16_UINT = 95, + VK_FORMAT_R16G16B16A16_SINT = 96, + VK_FORMAT_R16G16B16A16_SFLOAT = 97, + VK_FORMAT_R32_UINT = 98, + VK_FORMAT_R32_SINT = 99, + VK_FORMAT_R32_SFLOAT = 100, + VK_FORMAT_R32G32_UINT = 101, + VK_FORMAT_R32G32_SINT = 102, + VK_FORMAT_R32G32_SFLOAT = 103, + VK_FORMAT_R32G32B32_UINT = 104, + VK_FORMAT_R32G32B32_SINT = 105, + VK_FORMAT_R32G32B32_SFLOAT = 106, + VK_FORMAT_R32G32B32A32_UINT = 107, + VK_FORMAT_R32G32B32A32_SINT = 108, + VK_FORMAT_R32G32B32A32_SFLOAT = 109, + VK_FORMAT_R64_UINT = 110, + VK_FORMAT_R64_SINT = 111, + VK_FORMAT_R64_SFLOAT = 112, + VK_FORMAT_R64G64_UINT = 113, + VK_FORMAT_R64G64_SINT = 114, + VK_FORMAT_R64G64_SFLOAT = 115, + VK_FORMAT_R64G64B64_UINT = 116, + VK_FORMAT_R64G64B64_SINT = 117, + VK_FORMAT_R64G64B64_SFLOAT = 118, + VK_FORMAT_R64G64B64A64_UINT = 119, + VK_FORMAT_R64G64B64A64_SINT = 120, + VK_FORMAT_R64G64B64A64_SFLOAT = 121, + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122, + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123, + VK_FORMAT_D16_UNORM = 124, + VK_FORMAT_X8_D24_UNORM_PACK32 = 125, + VK_FORMAT_D32_SFLOAT = 126, + VK_FORMAT_S8_UINT = 127, + VK_FORMAT_D16_UNORM_S8_UINT = 128, + VK_FORMAT_D24_UNORM_S8_UINT = 129, + VK_FORMAT_D32_SFLOAT_S8_UINT = 130, + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131, + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132, + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133, + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134, + VK_FORMAT_BC2_UNORM_BLOCK = 135, + VK_FORMAT_BC2_SRGB_BLOCK = 136, + VK_FORMAT_BC3_UNORM_BLOCK = 137, + VK_FORMAT_BC3_SRGB_BLOCK = 138, + VK_FORMAT_BC4_UNORM_BLOCK = 139, + VK_FORMAT_BC4_SNORM_BLOCK = 140, + VK_FORMAT_BC5_UNORM_BLOCK = 141, + VK_FORMAT_BC5_SNORM_BLOCK = 142, + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143, + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144, + VK_FORMAT_BC7_UNORM_BLOCK = 145, + VK_FORMAT_BC7_SRGB_BLOCK = 146, + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147, + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148, + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149, + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150, + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151, + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152, + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153, + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154, + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155, + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156, + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157, + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158, + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159, + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160, + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161, + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162, + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163, + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164, + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165, + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166, + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167, + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168, + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169, + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170, + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171, + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172, + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173, + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174, + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175, + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176, + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177, + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178, + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179, + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180, + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181, + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182, + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183, + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000, + // Provided by VK_VERSION_1_1 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006, + // Provided by VK_VERSION_1_1 + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007, + // Provided by VK_VERSION_1_1 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008, + // Provided by VK_VERSION_1_1 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010, + // Provided by VK_VERSION_1_1 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016, + // Provided by VK_VERSION_1_1 + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017, + // Provided by VK_VERSION_1_1 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018, + // Provided by VK_VERSION_1_1 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020, + // Provided by VK_VERSION_1_1 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027, + // Provided by VK_VERSION_1_1 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032, + // Provided by VK_VERSION_1_1 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033, + // Provided by VK_VERSION_1_3 + VK_FORMAT_G8_B8R8_2PLANE_444_UNORM = 1000330000, + // Provided by VK_VERSION_1_3 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 = 1000330001, + // Provided by VK_VERSION_1_3 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 = 1000330002, + // Provided by VK_VERSION_1_3 + VK_FORMAT_G16_B16R16_2PLANE_444_UNORM = 1000330003, + // Provided by VK_VERSION_1_3 + VK_FORMAT_A4R4G4B4_UNORM_PACK16 = 1000340000, + // Provided by VK_VERSION_1_3 + VK_FORMAT_A4B4G4R4_UNORM_PACK16 = 1000340001, + // Provided by VK_VERSION_1_3 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK = 1000066000, + // Provided by VK_VERSION_1_3 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK = 1000066001, + // Provided by VK_VERSION_1_3 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK = 1000066002, + // Provided by VK_VERSION_1_3 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK = 1000066003, + // Provided by VK_VERSION_1_3 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK = 1000066004, + // Provided by VK_VERSION_1_3 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK = 1000066005, + // Provided by VK_VERSION_1_3 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK = 1000066006, + // Provided by VK_VERSION_1_3 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK = 1000066007, + // Provided by VK_VERSION_1_3 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK = 1000066008, + // Provided by VK_VERSION_1_3 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK = 1000066009, + // Provided by VK_VERSION_1_3 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK = 1000066010, + // Provided by VK_VERSION_1_3 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011, + // Provided by VK_VERSION_1_3 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012, + // Provided by VK_VERSION_1_3 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013, + // Provided by VK_VERSION_1_4 + VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000, + // Provided by VK_VERSION_1_4 + VK_FORMAT_A8_UNORM = 1000470001, + // Provided by VK_IMG_format_pvrtc + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000, + // Provided by VK_IMG_format_pvrtc + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001, + // Provided by VK_IMG_format_pvrtc + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002, + // Provided by VK_IMG_format_pvrtc + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003, + // Provided by VK_IMG_format_pvrtc + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004, + // Provided by VK_IMG_format_pvrtc + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005, + // Provided by VK_IMG_format_pvrtc + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006, + // Provided by VK_IMG_format_pvrtc + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007, + // Provided by VK_ARM_tensors + VK_FORMAT_R8_BOOL_ARM = 1000460000, + // Provided by VK_NV_optical_flow + VK_FORMAT_R16G16_SFIXED5_NV = 1000464000, + // Provided by VK_ARM_format_pack + VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000, + // Provided by VK_ARM_format_pack + VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001, + // Provided by VK_ARM_format_pack + VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002, + // Provided by VK_ARM_format_pack + VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003, + // Provided by VK_ARM_format_pack + VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004, + // Provided by VK_ARM_format_pack + VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005, + // Provided by VK_ARM_format_pack + VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006, + // Provided by VK_ARM_format_pack + VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007, + // Provided by VK_ARM_format_pack + VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008, + // Provided by VK_ARM_format_pack + VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009, + // Provided by VK_ARM_format_pack + VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010, + // Provided by VK_ARM_format_pack + VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011, + // Provided by VK_ARM_format_pack + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012, + // Provided by VK_ARM_format_pack + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013, + // Provided by VK_EXT_texture_compression_astc_hdr + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK, + // Provided by VK_EXT_texture_compression_astc_hdr + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK, + // Provided by VK_EXT_texture_compression_astc_hdr + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK, + // Provided by VK_EXT_texture_compression_astc_hdr + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK, + // Provided by VK_EXT_texture_compression_astc_hdr + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK, + // Provided by VK_EXT_texture_compression_astc_hdr + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK, + // Provided by VK_EXT_texture_compression_astc_hdr + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK, + // Provided by VK_EXT_texture_compression_astc_hdr + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK, + // Provided by VK_EXT_texture_compression_astc_hdr + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK, + // Provided by VK_EXT_texture_compression_astc_hdr + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK, + // Provided by VK_EXT_texture_compression_astc_hdr + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK, + // Provided by VK_EXT_texture_compression_astc_hdr + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK, + // Provided by VK_EXT_texture_compression_astc_hdr + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK, + // Provided by VK_EXT_texture_compression_astc_hdr + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = VK_FORMAT_G8B8G8R8_422_UNORM, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VK_FORMAT_B8G8R8G8_422_UNORM, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_R10X6_UNORM_PACK16_KHR = VK_FORMAT_R10X6_UNORM_PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_R12X4_UNORM_PACK16_KHR = VK_FORMAT_R12X4_UNORM_PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = VK_FORMAT_G16B16G16R16_422_UNORM, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = VK_FORMAT_B16G16R16G16_422_UNORM, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM, + // Provided by VK_KHR_sampler_ycbcr_conversion + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, + // Provided by VK_EXT_ycbcr_2plane_444_formats + VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = VK_FORMAT_G8_B8R8_2PLANE_444_UNORM, + // Provided by VK_EXT_ycbcr_2plane_444_formats + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16, + // Provided by VK_EXT_ycbcr_2plane_444_formats + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16, + // Provided by VK_EXT_ycbcr_2plane_444_formats + VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = VK_FORMAT_G16_B16R16_2PLANE_444_UNORM, + // Provided by VK_EXT_4444_formats + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = VK_FORMAT_A4R4G4B4_UNORM_PACK16, + // Provided by VK_EXT_4444_formats + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = VK_FORMAT_A4B4G4R4_UNORM_PACK16, + // Provided by VK_NV_optical_flow + // VK_FORMAT_R16G16_S10_5_NV is a deprecated alias + VK_FORMAT_R16G16_S10_5_NV = VK_FORMAT_R16G16_SFIXED5_NV, + // Provided by VK_KHR_maintenance5 + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = VK_FORMAT_A1B5G5R5_UNORM_PACK16, + // Provided by VK_KHR_maintenance5 + VK_FORMAT_A8_UNORM_KHR = VK_FORMAT_A8_UNORM, +} VkFormat; +*/ \ No newline at end of file diff --git a/src/rtextures.c b/src/rtextures.c index bdfe83c71..b798caed6 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -170,7 +170,6 @@ #endif #define RL_GPUTEX_MALLOC RL_MALLOC - #define RL_GPUTEX_CALLOC RL_CALLOC #define RL_GPUTEX_FREE RL_FREE #define RL_GPUTEX_LOG(...) TRACELOG(LOG_WARNING, "IMAGE: " __VA_ARGS__) #define RL_GPUTEX_SHOW_LOG_INFO From 1da6b281de21fc41a33daae41f53841a2a8b002b Mon Sep 17 00:00:00 2001 From: lepasona <223069396+lepasona@users.noreply.github.com> Date: Sun, 27 Jul 2025 07:37:07 +0000 Subject: [PATCH 072/328] Update glfw `mappings.h` --- src/external/glfw/src/mappings.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/external/glfw/src/mappings.h b/src/external/glfw/src/mappings.h index ccba5924a..5d8b9e1e1 100644 --- a/src/external/glfw/src/mappings.h +++ b/src/external/glfw/src/mappings.h @@ -321,6 +321,8 @@ const char* _glfwDefaultMappings[] = "030000008f0e00000610000000000000,GreenAsia,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a5,righty:a2,start:b11,x:b3,y:b0,platform:Windows,", "03000000ac0500006b05000000000000,GT2a,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,", "03000000341a00000302000000000000,Hama Scorpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", +"030000008a2e0000dd10000000000000,Hand Held Legend GC Ultimate,a:b0,b:b2,back:b17,dpdown:b5,dpleft:b6,dpright:b7,dpup:b4,guide:b18,leftshoulder:b10,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b19,misc2:b24,paddle1:b13,paddle2:b12,rightshoulder:b11,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b1,y:b3,platform:Windows,", +"030000008a2e0000df10000000000000,Hand Held Legend ProGCC,a:b1,b:b0,back:b17,dpdown:b5,dpleft:b6,dpright:b7,dpup:b4,guide:b18,leftshoulder:b10,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b19,paddle1:b13,paddle2:b12,rightshoulder:b11,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b3,y:b2,platform:Windows,", "030000000d0f00004900000000000000,Hatsune Miku Sho PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "030000001008000001e1000000000000,Havit HV G60,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b0,platform:Windows,", "030000000d0f00000c00000000000000,HEXT,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,", @@ -1196,6 +1198,7 @@ const char* _glfwDefaultMappings[] = "030000005e040000e302000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", "030000005e040000ea02000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", "030000005e040000fd02000003090000,Xbox One Controller,a:b0,b:b1,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", +"030000005e040000220b000013050000,Xbox One Elite 2 Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,paddle1:b11,paddle2:b13,paddle3:b12,paddle4:b14,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Mac OS X,", "03000000c62400003a54000000000000,Xbox One PowerA Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", "030000005e040000130b000001050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", "030000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,", @@ -1396,6 +1399,8 @@ const char* _glfwDefaultMappings[] = "030000008f0e00001200000010010000,GreenAsia Joystick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux,", "0500000047532067616d657061640000,GS gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", "03000000f0250000c383000010010000,GT VX2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,", +"030000008a2e0000dd10000011010000,Hand Held Legend GC Ultimate,a:b0,b:b2,back:b17,dpdown:b5,dpleft:b6,dpright:b7,dpup:b4,guide:b18,leftshoulder:b10,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b19,misc2:b24,paddle1:b13,paddle2:b12,rightshoulder:b11,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b1,y:b3,platform:Linux,", +"030000008a2e0000df10000011010000,Hand Held Legend ProGCC,a:b1,b:b0,back:b17,dpdown:b5,dpleft:b6,dpright:b7,dpup:b4,guide:b18,leftshoulder:b10,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b19,paddle1:b13,paddle2:b12,rightshoulder:b11,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b3,y:b2,platform:Linux,", "06000000adde0000efbe000002010000,Hidromancer Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "03000000d81400000862000011010000,HitBox PS3 PC Analog Mode,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b12,x:b0,y:b3,platform:Linux,", "03000000c9110000f055000011010000,HJC Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", @@ -1860,6 +1865,7 @@ const char* _glfwDefaultMappings[] = "050000005e040000050b000002090000,Xbox One Elite Series 2,a:b0,b:b1,back:b136,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", "030000005e040000ea02000011050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "030000005e040000ea02000015050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"030000005e040000ea02000017050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "060000005e040000ea0200000b050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "060000005e040000ea0200000d050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "060000005e040000ea02000016050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", @@ -1885,9 +1891,11 @@ const char* _glfwDefaultMappings[] = "060000005e040000120b00000b050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "060000005e040000120b00000d050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "060000005e040000120b00000f050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", +"060000005e040000120b000011050000,Xbox Series X Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,", "050000005e040000130b000022050000,Xbox Series X Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", "050000005e040000200b000013050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", "050000005e040000200b000017050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", +"050000005e040000200b000023050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", "050000005e040000220b000017050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,", "03000000450c00002043000010010000,XEOX SL6556 BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,", "05000000172700004431000029010000,XiaoMi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Linux,", From b23072084248c578a6930d757b9bcc1d9a20a3b6 Mon Sep 17 00:00:00 2001 From: lepasona <223069396+lepasona@users.noreply.github.com> Date: Sun, 27 Jul 2025 14:35:38 +0000 Subject: [PATCH 073/328] example core_input_gamepad.c: fix hardcoded gamepad 0 --- examples/core/core_input_gamepad.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/core/core_input_gamepad.c b/examples/core/core_input_gamepad.c index 6df29f8c8..1ab6b55ae 100644 --- a/examples/core/core_input_gamepad.c +++ b/examples/core/core_input_gamepad.c @@ -256,11 +256,11 @@ int main(void) } - DrawText(TextFormat("DETECTED AXIS [%i]:", GetGamepadAxisCount(0)), 10, 50, 10, MAROON); + DrawText(TextFormat("DETECTED AXIS [%i]:", GetGamepadAxisCount(gamepad)), 10, 50, 10, MAROON); - for (int i = 0; i < GetGamepadAxisCount(0); i++) + for (int i = 0; i < GetGamepadAxisCount(gamepad); i++) { - DrawText(TextFormat("AXIS %i: %.02f", i, GetGamepadAxisMovement(0, i)), 20, 70 + 20*i, 10, DARKGRAY); + DrawText(TextFormat("AXIS %i: %.02f", i, GetGamepadAxisMovement(gamepad, i)), 20, 70 + 20*i, 10, DARKGRAY); } if (GetGamepadButtonPressed() != GAMEPAD_BUTTON_UNKNOWN) DrawText(TextFormat("DETECTED BUTTON: %i", GetGamepadButtonPressed()), 10, 430, 10, RED); From 5ca6bff8ca4cad096413703365cc84aba4fe2a80 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 28 Jul 2025 23:37:48 +0200 Subject: [PATCH 074/328] Update rl_gputex.h --- src/external/rl_gputex.h | 65 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 62 insertions(+), 3 deletions(-) diff --git a/src/external/rl_gputex.h b/src/external/rl_gputex.h index 07ff773a5..c8d1c6aba 100644 --- a/src/external/rl_gputex.h +++ b/src/external/rl_gputex.h @@ -950,9 +950,9 @@ void get_gl_texture_formats(int format, unsigned int *gl_internal_format, unsign // if this library is being improved to support KTX 2.0, it requires those formats to be provided -> View list at the end! /* - *glInternalFormat = 0; - *glFormat = 0; - *glType = 0; + *gl_internal_format = 0; + *gl_format = 0; + *gl_type = 0; switch (format) { @@ -1022,6 +1022,65 @@ void get_gl_texture_formats(int format, unsigned int *gl_internal_format, unsign } #endif // RL_GPUTEX_IMPLEMENTATION +/* +// OpenGL texture data formats +// NOTE: Those values can be useful for KTX 1.1 saving, +// probably only the latest OpenGL ones, not the extensions ones +// So, there is no need to include full OpenGL headers +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_FLOAT 0x1406 +#define GL_HALF_FLOAT 0x140b +#define GL_HALF_FLOAT_ARB 0x140b +#define GL_HALF_FLOAT_OES 0x8d61 + +#define GL_RED_EXT 0x1903 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_R8 0x8229 +#define GL_RG8 0x822b +#define GL_RGB565 0x8d62 +#define GL_RGB8 0x8051 +#define GL_RGB5_A1 0x8057 +#define GL_RGBA4 0x8056 +#define GL_RGBA8 0x8058 +#define GL_R16F 0x822d +#define GL_RGB16F 0x881b +#define GL_RGBA16F 0x881a +#define GL_R32F 0x822e +#define GL_RGB32F 0x8815 +#define GL_RGBA32F 0x8814 + +#define GL_R32F_EXT 0x822e +#define GL_RGB32F_EXT 0x8815 +#define GL_RGBA32F_EXT 0x8814 +#define GL_R16F_EXT 0x822d +#define GL_RGB16F_EXT 0x881b +#define GL_RGBA16F_EXT 0x881a + +// S3TC (DXT) compression +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83f0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83f1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83f2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83f3 + +// ETC formats +#define GL_ETC1_RGB8_OES 0x8d64 +#define GL_COMPRESSED_RGB8_ETC2 0x9274 +#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 + +// PVRTC +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8c00 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8c02 + +// ASTC +#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93b0 +#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93b7 +*/ + /* // Vulkan texture formats typedef enum VkFormat { From 37104195b4991e9286c82c7ba541358465860bff Mon Sep 17 00:00:00 2001 From: RANDRIA Luca Date: Wed, 30 Jul 2025 16:54:06 +0300 Subject: [PATCH 075/328] add screenshot core_basic_window_web There are no screenshot for this and the alt is seen --- examples/core/core_basic_window_web.png | Bin 0 -> 4402 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/core/core_basic_window_web.png diff --git a/examples/core/core_basic_window_web.png b/examples/core/core_basic_window_web.png new file mode 100644 index 0000000000000000000000000000000000000000..c01b78748e9480c2d20f18c94601e04b0b8356b5 GIT binary patch literal 4402 zcmZWsd0bOh7Je#I7_EY}?h7f*XsZ>Y6j_Hz1zCfWSalhOJ;CL>(7wtvFVS zKv-N5$wEMks1Q;C#Wi$xv|O|!tTDYs2N!&fq=n(oFQMhV|<@ixK#9WdFKj{m(d(akS$S8P~f zGCe*N3y+D74qcrP5+52Glkkt&#DQrNXZ+A=bZBFIC_OPEHiqOK5gm&8hVCO-lSzM1 ziXyEeud^YMzjLr5JJ_rzZTBR(xp?1ypMhU(_R|(u7w;5Kf177)fFkL$=OW=Z+|7Ua zDeJPU+Oqtm+VXnT#kuP29Zv@ryeymYY{#K%|2!xiGko*%WgZ*Ca=T# zlN&Z2`Z9X?mcKpnK|c$(n&VGWmmPGN7H}q48~8;^BaJaI{EQ*g zOvNyhlmT}NSJWH7`oNpp#v#H#Vc5Ajsj7=J>k2LKZCAcWvB)8{ba}`cBYelag?c)h zgs)$+al!w-r>2U?!*~b>N8Wa1uF|lA(zd#x^@TCYQtlV7_=Xdli#%+CVW;JPnvG$5 zjnKQ<3Y6A3c(u;e(4204jTY<+TE)90Ng6J?qbn*VM$X>D7Cs|?p8DzzzCB0}br8sU zum1Sa8cCJr_$xYmgm5T=DieiG!LSfBbh#b6JU#NS$h0M_TnU6LFWbz(umy(_;E)P! zyNIu$-_cuE@MhovZP>27IUPOE(UU&<9H#gd!$^-x{qc407Gj@+F0X%DGat8ibRixe zNqS$6@1I4#BS}xi29H{134}Kr#X=S!-#BvQrx&V3`mWjd9h*q#$POvI z7ZS0fTaQFM#{VaF>0!vgY!eG)0ByQzpn#KBj@Tn7O&CQe5Wr(i2FUp zVdXInpGQBq)dQY>$6xI63w|@1fJX2m$PSSy%ZW^dY(kYyIEDLerbsTGKy*65!wAZh z-sfl_5Dci~XMy8Y1WqBWS|S!2ss<5@w*n!s3(V94GEYMqF4@%K zupjrHn+&<~V*n7Yl}d3kRm&PY)(H5hsN3o^wsk@PX5Y~7D>ta&o`R0*5bAg zr1aj&Qn&VsXbV_4=6?Hdqx|ilTJpggnk7N9bn8SVxQ@S@Vc6zzsQy2ap>;Y4RDBAJ zv%esi+O0rPj`M<6vkIu$V|eqrN_LF?GGq-d6z5FC8#yI2R0=BU8ctR6fc)p5XQCFp z=g)p|baXh`KqK6G{pt^<{*gaGStZSL)Vy#vhq}oBebf?_?sP)$yKbgxH=B;ide1-K ztFJ53A80fZ=zzq}f@T#FEGolUVMDv7PtiB3=?hsiZEvD}*}6tR4VTJ0T0VbD$kYC| zV&B01-3NW*Z?v)V@9Ia)la?M26>s~gJb#<8v;9&*WwA#0LTCI9RJJUz$fEWDtJ(1t z7P9}T^86UPp{IM6zWM`)Z0e2TBU@X%$zE1HIDBR9nXv-xC5pbrm@*Jokabq&{W@*clN&9H{zBz^W6fAu%fgbnclwlbVrPl5F2VV|E_qC&?He$05=1F+ z0x3z^=4zrebMhsq|XrBrx z8LGJOwZo&S%eth_WkC>9S*gX;g6@d^{GD?8+Jqt#30wf07S~dz1~P7bQ09PhGZ1M#RI6iD3PD~VC|$sv zcQ+8fj!dx%s@W4Rmjfm__xJ6T7&3+4xH3^byuf|W7|^KE*%Z5|&r_3pVvDG7lynkzD zCGY9E47c)21v0gom>jFwotvVgqCiga(Qf_Fv-VnFbWQLxq7uQQ(&Mn>LF35@A$Sxf z9*yz=cm?B-9x1!(BuH4bf`GliU)X|c4Ki_tM$HA&@=LFf8XAf6*x+q3H4}8~T6-0^ zH1rycb0k4@5V6fbGfyp3laqwRa>MVc{Osne`~Vn{INQR->t9RZU^tH()7Ao@Eo^6W zY}kk!DG~MSSTNw+Ma{k;kVn*J=PKhxxK+CNy2_QfMXSC(fO~c3)M~5dSm9D=PtG$qU1E3Q>j>}*gj|*MnlFBj!0={zWK|*h(^aksiD3aZHUi5E{F8 Date: Wed, 30 Jul 2025 16:06:43 +0200 Subject: [PATCH 076/328] Update shaders_multi_sample2d.c --- examples/shaders/shaders_multi_sample2d.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/examples/shaders/shaders_multi_sample2d.c b/examples/shaders/shaders_multi_sample2d.c index 8409e35cb..c13864607 100644 --- a/examples/shaders/shaders_multi_sample2d.c +++ b/examples/shaders/shaders_multi_sample2d.c @@ -82,16 +82,18 @@ int main(void) BeginShaderMode(shader); - // WARNING: Additional samplers are enabled for all draw calls in the batch, - // EndShaderMode() forces batch drawing and consequently resets active textures - // to let other sampler2D to be activated on consequent drawings (if required) + // WARNING: Additional textures (sampler2D) are enabled for ALL draw calls in the batch, + // but EndShaderMode() forces batch drawing and resets active textures, this way + // other textures (sampler2D) can be activated on consequent drawings (if required) + // The downside of this approach is that SetShaderValue() must be called inside the loop, + // to be set again after every EndShaderMode() reset SetShaderValueTexture(shader, texBlueLoc, texBlue); - // We are drawing texRed using default sampler2D texture0 but - // an additional texture units is enabled for texBlue (sampler2D texture1) + // We are drawing texRed using default [sampler2D texture0] but + // an additional texture units is enabled for texBlue [sampler2D texture1] DrawTexture(texRed, 0, 0, WHITE); - EndShaderMode(); + EndShaderMode(); // Texture sampler2D is reseted, needs to be set again for next frame DrawText("Use KEY_LEFT/KEY_RIGHT to move texture mixing in shader!", 80, GetScreenHeight() - 40, 20, RAYWHITE); From b40e53f11c90f9ccf5e57077928c46c4a74d0998 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 30 Jul 2025 16:07:08 +0200 Subject: [PATCH 077/328] Remove double line spacing --- src/config.h | 6 ------ src/external/rl_gputex.h | 1 - src/raudio.c | 3 --- 3 files changed, 10 deletions(-) diff --git a/src/config.h b/src/config.h index ef01013b3..bfd1fad13 100644 --- a/src/config.h +++ b/src/config.h @@ -95,7 +95,6 @@ #endif #endif - // rcore: Configuration values //------------------------------------------------------------------------------------ #define MAX_FILEPATH_CAPACITY 8192 // Maximum file paths capacity @@ -153,7 +152,6 @@ #endif #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_INSTANCE_TX 9 - // Default shader vertex attribute names to set location points // NOTE: When a new shader is loaded, the following locations are tried to be set for convenience #define RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION "vertexPosition" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION @@ -173,7 +171,6 @@ #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE1 "texture1" // texture1 (texture slot active 1) #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE2 "texture2" // texture2 (texture slot active 2) - //------------------------------------------------------------------------------------ // Module: rshapes - Configuration Flags //------------------------------------------------------------------------------------ @@ -185,7 +182,6 @@ //------------------------------------------------------------------------------------ #define SPLINE_SEGMENT_DIVISIONS 24 // Spline segments subdivisions - //------------------------------------------------------------------------------------ // Module: rtextures - Configuration Flags //------------------------------------------------------------------------------------ @@ -213,7 +209,6 @@ // If not defined, still some functions are supported: ImageFormat(), ImageCrop(), ImageToPOT() #define SUPPORT_IMAGE_MANIPULATION 1 - //------------------------------------------------------------------------------------ // Module: rtext - Configuration Flags //------------------------------------------------------------------------------------ @@ -240,7 +235,6 @@ // TextFormat(), TextSubtext(), TextToUpper(), TextToLower(), TextToPascal(), TextSplit() #define MAX_TEXTSPLIT_COUNT 128 // Maximum number of substrings to split: TextSplit() - //------------------------------------------------------------------------------------ // Module: rmodels - Configuration Flags //------------------------------------------------------------------------------------ diff --git a/src/external/rl_gputex.h b/src/external/rl_gputex.h index c8d1c6aba..1f0575300 100644 --- a/src/external/rl_gputex.h +++ b/src/external/rl_gputex.h @@ -141,7 +141,6 @@ RLGPUTEXAPI int rl_save_ktx_to_memory(const char *fileName, void *data, int widt #endif // RL_GPUTEX_H - /*********************************************************************************** * * RL_GPUTEX IMPLEMENTATION diff --git a/src/raudio.c b/src/raudio.c index 3301d7009..eb159beeb 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -451,7 +451,6 @@ void SetAudioBufferPan(AudioBuffer *buffer, float pan); void TrackAudioBuffer(AudioBuffer *buffer); void UntrackAudioBuffer(AudioBuffer *buffer); - //---------------------------------------------------------------------------------- // Module Functions Definition - Audio Device initialization and Closing //---------------------------------------------------------------------------------- @@ -996,7 +995,6 @@ Sound LoadSoundAlias(Sound source) return sound; } - // Checks if a sound is valid (data loaded and buffers initialized) bool IsSoundValid(Sound sound) { @@ -2349,7 +2347,6 @@ void DetachAudioMixedProcessor(AudioCallback process) ma_mutex_unlock(&AUDIO.System.lock); } - //---------------------------------------------------------------------------------- // Module specific Functions Definition //---------------------------------------------------------------------------------- From 12f0943bd9e32fe840d5bab4c69ceba913cdf504 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 30 Jul 2025 16:07:14 +0200 Subject: [PATCH 078/328] Update rcore.c --- src/rcore.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rcore.c b/src/rcore.c index c0af6654a..013ea434a 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -1889,7 +1889,7 @@ void TakeScreenshot(const char *fileName) char path[512] = { 0 }; strcpy(path, TextFormat("%s/%s", CORE.Storage.basePath, fileName)); - ExportImage(image, path); // WARNING: Module required: rtextures + ExportImage(image, path); // WARNING: Module required: rtextures RL_FREE(imgData); if (FileExists(path)) TRACELOG(LOG_INFO, "SYSTEM: [%s] Screenshot taken successfully", path); @@ -1936,7 +1936,7 @@ bool FileExists(const char *fileName) } // Check file extension -// NOTE: Extensions checking is not case-sensitive +// TODO: Avoid [rtext] module dependency bool IsFileExtension(const char *fileName, const char *ext) { #define MAX_FILE_EXTENSION_LENGTH 16 From 50acba3ce838c5eeae1509491a4266a0443c8ece Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 30 Jul 2025 17:31:49 +0200 Subject: [PATCH 079/328] REVIEWED: `rcore_web`, cleaning and reorganizing --- src/platforms/rcore_web.c | 315 ++++++++++++++++++-------------------- 1 file changed, 148 insertions(+), 167 deletions(-) diff --git a/src/platforms/rcore_web.c b/src/platforms/rcore_web.c index 1a763a84a..3107c30e4 100644 --- a/src/platforms/rcore_web.c +++ b/src/platforms/rcore_web.c @@ -111,23 +111,23 @@ int InitPlatform(void); // Initialize platform (graphics, inputs and mo void ClosePlatform(void); // Close platform // Error callback event -static void ErrorCallback(int error, const char *description); // GLFW3 Error Callback, runs on GLFW3 error +static void ErrorCallback(int error, const char *description); // GLFW3 Error Callback, runs on GLFW3 error // Window callbacks events -static void WindowSizeCallback(GLFWwindow *window, int width, int height); // GLFW3 WindowSize Callback, runs when window is resized -static void WindowIconifyCallback(GLFWwindow *window, int iconified); // GLFW3 WindowIconify Callback, runs when window is minimized/restored +static void WindowSizeCallback(GLFWwindow *window, int width, int height); // GLFW3 Window Size Callback, runs when window is resized +static void WindowIconifyCallback(GLFWwindow *window, int iconified); // GLFW3 Window Iconify Callback, runs when window is minimized/restored //static void WindowMaximizeCallback(GLFWwindow *window, int maximized); // GLFW3 Window Maximize Callback, runs when window is maximized -static void WindowFocusCallback(GLFWwindow *window, int focused); // GLFW3 WindowFocus Callback, runs when window get/lose focus +static void WindowFocusCallback(GLFWwindow *window, int focused); // GLFW3 Window Focus Callback, runs when window get/lose focus static void WindowDropCallback(GLFWwindow *window, int count, const char **paths); // GLFW3 Window Drop Callback, runs when drop files into window static void WindowContentScaleCallback(GLFWwindow *window, float scalex, float scaley); // GLFW3 Window Content Scale Callback, runs when window changes scale // Input callbacks events static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, int mods); // GLFW3 Keyboard Callback, runs on key pressed -static void CharCallback(GLFWwindow *window, unsigned int key); // GLFW3 Char Key Callback, runs on key pressed (get char value) -static void MouseButtonCallback(GLFWwindow *window, int button, int action, int mods); // GLFW3 Mouse Button Callback, runs on mouse button pressed -static void MouseCursorPosCallback(GLFWwindow *window, double x, double y); // GLFW3 Cursor Position Callback, runs on mouse move -static void MouseScrollCallback(GLFWwindow *window, double xoffset, double yoffset); // GLFW3 Srolling Callback, runs on mouse wheel -static void CursorEnterCallback(GLFWwindow *window, int enter); // GLFW3 Cursor Enter Callback, cursor enters client area +static void CharCallback(GLFWwindow *window, unsigned int key); // GLFW3 Char Key Callback, runs on key pressed (get char value) +static void MouseButtonCallback(GLFWwindow *window, int button, int action, int mods); // GLFW3 Mouse Button Callback, runs on mouse button pressed +static void MouseMoveCallback(GLFWwindow *window, double x, double y); // GLFW3 Mouse Move Callback, runs on mouse move +static void MouseScrollCallback(GLFWwindow *window, double xoffset, double yoffset); // GLFW3 Mouse Scrolling Callback, runs on mouse wheel +static void MouseEnterCallback(GLFWwindow *window, int enter); // GLFW3 Mouse Enter Callback, cursor enters client area // Emscripten window callback events static EM_BOOL EmscriptenFullscreenChangeCallback(int eventType, const EmscriptenFullscreenChangeEvent *event, void *userData); @@ -1293,23 +1293,24 @@ int InitPlatform(void) emscripten_set_window_title((CORE.Window.title != 0)? CORE.Window.title : " "); // Set window callback events - glfwSetWindowSizeCallback(platform.handle, WindowSizeCallback); // NOTE: Resizing not allowed by default! + glfwSetWindowSizeCallback(platform.handle, WindowSizeCallback); glfwSetWindowIconifyCallback(platform.handle, WindowIconifyCallback); glfwSetWindowFocusCallback(platform.handle, WindowFocusCallback); glfwSetDropCallback(platform.handle, WindowDropCallback); if ((CORE.Window.flags & FLAG_WINDOW_HIGHDPI) > 0) { - glfwSetWindowContentScaleCallback(platform.handle, WindowContentScaleCallback); + // Window content (framebuffer) scale callback + glfwSetWindowContentScaleCallback(platform.handle, WindowContentScaleCallback); } // Set input callback events glfwSetKeyCallback(platform.handle, KeyCallback); glfwSetCharCallback(platform.handle, CharCallback); glfwSetMouseButtonCallback(platform.handle, MouseButtonCallback); - glfwSetCursorPosCallback(platform.handle, MouseCursorPosCallback); // Track mouse position changes + glfwSetCursorPosCallback(platform.handle, MouseMoveCallback); glfwSetScrollCallback(platform.handle, MouseScrollCallback); - glfwSetCursorEnterCallback(platform.handle, CursorEnterCallback); + glfwSetCursorEnterCallback(platform.handle, MouseEnterCallback); glfwMakeContextCurrent(platform.handle); result = true; // TODO: WARNING: glfwGetError(NULL); symbol can not be found in Web @@ -1349,50 +1350,36 @@ int InitPlatform(void) rlLoadExtensions(glfwGetProcAddress); //---------------------------------------------------------------------------- - // Initialize input events callbacks + // Initialize events callbacks //---------------------------------------------------------------------------- - // Setup callback functions for the DOM events + // Setup window events callbacks emscripten_set_fullscreenchange_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, 1, EmscriptenFullscreenChangeCallback); - + emscripten_set_blur_callback(GetCanvasId(), platform.handle, 1, EmscriptenFocusCallback); + emscripten_set_focus_callback(GetCanvasId(), platform.handle, 1, EmscriptenFocusCallback); + emscripten_set_visibilitychange_callback(NULL, 1, EmscriptenVisibilityChangeCallback); + // WARNING: Below resize code was breaking fullscreen mode for sample games and examples, it needs review // Check fullscreen change events(note this is done on the window since most browsers don't support this on #canvas) // emscripten_set_fullscreenchange_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, 1, EmscriptenResizeCallback); // Check Resize event (note this is done on the window since most browsers don't support this on #canvas) emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, 1, EmscriptenResizeCallback); - // Trigger this once to get initial window sizing + // Trigger resize callback to force initial size EmscriptenResizeCallback(EMSCRIPTEN_EVENT_RESIZE, NULL, NULL); - // Support keyboard events - // NOTE: used only to consume keyboard events. GLFW.JS takes care of - // the actual input. + // Setup input events + // NOTE: Keyboard callbacks only used to consume some events, libglfw.js takes care of the actual input emscripten_set_keypress_callback(GetCanvasId(), NULL, 1, EmscriptenKeyboardCallback); emscripten_set_keydown_callback(GetCanvasId(), NULL, 1, EmscriptenKeyboardCallback); - - // Support mouse events emscripten_set_click_callback(GetCanvasId(), NULL, 1, EmscriptenMouseCallback); emscripten_set_pointerlockchange_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, 1, EmscriptenPointerlockCallback); - - // Following the mouse delta when the mouse is locked emscripten_set_mousemove_callback(GetCanvasId(), NULL, 1, EmscriptenMouseMoveCallback); - - // Support touch events emscripten_set_touchstart_callback(GetCanvasId(), NULL, 1, EmscriptenTouchCallback); emscripten_set_touchend_callback(GetCanvasId(), NULL, 1, EmscriptenTouchCallback); emscripten_set_touchmove_callback(GetCanvasId(), NULL, 1, EmscriptenTouchCallback); emscripten_set_touchcancel_callback(GetCanvasId(), NULL, 1, EmscriptenTouchCallback); - - // Support gamepad events (not provided by GLFW3 on emscripten) emscripten_set_gamepadconnected_callback(NULL, 1, EmscriptenGamepadCallback); emscripten_set_gamepaddisconnected_callback(NULL, 1, EmscriptenGamepadCallback); - - // Support focus events - emscripten_set_blur_callback(GetCanvasId(), platform.handle, 1, EmscriptenFocusCallback); - emscripten_set_focus_callback(GetCanvasId(), platform.handle, 1, EmscriptenFocusCallback); - - // Support visibility events - emscripten_set_visibilitychange_callback(NULL, 1, EmscriptenVisibilityChangeCallback); - //---------------------------------------------------------------------------- // Initialize timing system @@ -1417,14 +1404,15 @@ void ClosePlatform(void) glfwTerminate(); } -// GLFW3 Error Callback, runs on GLFW3 error +// GLFW3 callback functions, called on GLFW registered events +//------------------------------------------------------------------------------------------------------- +// GLFW3: Called on errors static void ErrorCallback(int error, const char *description) { TRACELOG(LOG_WARNING, "GLFW: Error: %i Description: %s", error, description); } -// GLFW3 WindowSize Callback, runs when window is resizedLastFrame -// NOTE: Window resizing not allowed by default +// GLFW3: Called on window resizing, runs when window is resizedLastFrame static void WindowSizeCallback(GLFWwindow *window, int width, int height) { // Reset viewport and projection matrix for new size @@ -1453,34 +1441,27 @@ static void WindowSizeCallback(GLFWwindow *window, int width, int height) // NOTE: Postprocessing texture is not scaled to new size } +// GLFW3: Called on window content (framebuffer) scaled static void WindowContentScaleCallback(GLFWwindow *window, float scalex, float scaley) { CORE.Window.screenScale = MatrixScale(scalex, scaley, 1.0f); } -// GLFW3 WindowIconify Callback, runs when window is minimized/restored +// GLFW3: Called on windows minimized/restored static void WindowIconifyCallback(GLFWwindow *window, int iconified) { if (iconified) CORE.Window.flags |= FLAG_WINDOW_MINIMIZED; // The window was iconified else CORE.Window.flags &= ~FLAG_WINDOW_MINIMIZED; // The window was restored } -/* -// GLFW3 Window Maximize Callback, runs when window is maximized -static void WindowMaximizeCallback(GLFWwindow *window, int maximized) -{ - // TODO. -} -*/ - -// GLFW3 WindowFocus Callback, runs when window get/lose focus +// GLFW3: Called on windows get/lose focus static void WindowFocusCallback(GLFWwindow *window, int focused) { if (focused) CORE.Window.flags &= ~FLAG_WINDOW_UNFOCUSED; // The window was focused else CORE.Window.flags |= FLAG_WINDOW_UNFOCUSED; // The window lost focus } -// GLFW3 Window Drop Callback, runs when drop files into window +// GLFW3: Called on file-drop over the window static void WindowDropCallback(GLFWwindow *window, int count, const char **paths) { if (count > 0) @@ -1508,7 +1489,7 @@ static void WindowDropCallback(GLFWwindow *window, int count, const char **paths } } -// GLFW3 Keyboard Callback, runs on key pressed +// GLFW3: Called on keyboard interaction static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, int mods) { if (key < 0) return; // Security check, macOS fn key generates -1 @@ -1531,7 +1512,7 @@ static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, i if ((key == CORE.Input.Keyboard.exitKey) && (action == GLFW_PRESS)) glfwSetWindowShouldClose(platform.handle, GLFW_TRUE); } -// GLFW3 Char Key Callback, runs on key down (gets equivalent unicode char value) +// GLFW3: Called on key down interaction, gets equivalent unicode char value for the key static void CharCallback(GLFWwindow *window, unsigned int key) { //TRACELOG(LOG_DEBUG, "Char Callback: KEY:%i(%c)", key, key); @@ -1550,7 +1531,7 @@ static void CharCallback(GLFWwindow *window, unsigned int key) } } -// GLFW3 Mouse Button Callback, runs on mouse button pressed +// GLFW3: Called on mouse button interaction static void MouseButtonCallback(GLFWwindow *window, int button, int action, int mods) { // WARNING: GLFW could only return GLFW_PRESS (1) or GLFW_RELEASE (0) for now, @@ -1566,7 +1547,7 @@ static void MouseButtonCallback(GLFWwindow *window, int button, int action, int if ((CORE.Input.Mouse.currentButtonState[button] == 1) && (CORE.Input.Mouse.previousButtonState[button] == 0)) gestureEvent.touchAction = TOUCH_ACTION_DOWN; else if ((CORE.Input.Mouse.currentButtonState[button] == 0) && (CORE.Input.Mouse.previousButtonState[button] == 1)) gestureEvent.touchAction = TOUCH_ACTION_UP; - // NOTE: TOUCH_ACTION_MOVE event is registered in MouseCursorPosCallback() + // NOTE: TOUCH_ACTION_MOVE event is registered in MouseMoveCallback() // Assign a pointer ID gestureEvent.pointId[0] = 0; @@ -1588,8 +1569,8 @@ static void MouseButtonCallback(GLFWwindow *window, int button, int action, int #endif } -// GLFW3 Cursor Position Callback, runs on mouse move -static void MouseCursorPosCallback(GLFWwindow *window, double x, double y) +// GLFW3: Called on mouse move +static void MouseMoveCallback(GLFWwindow *window, double x, double y) { // If the pointer is not locked, follow the position if (!CORE.Input.Mouse.cursorHidden) @@ -1623,14 +1604,39 @@ static void MouseCursorPosCallback(GLFWwindow *window, double x, double y) #endif } +// GLFW3: Called on mouse wheel scrolling +static void MouseScrollCallback(GLFWwindow *window, double xoffset, double yoffset) +{ + CORE.Input.Mouse.currentWheelMove = (Vector2){ (float)xoffset, (float)yoffset }; +} + +// GLFW3: Called on mouse entering the window +static void MouseEnterCallback(GLFWwindow *window, int enter) +{ + if (enter) CORE.Input.Mouse.cursorOnScreen = true; + else CORE.Input.Mouse.cursorOnScreen = false; +} +//------------------------------------------------------------------------------------------------------- + +// Emscripten callback functions, called on specific browser events +//------------------------------------------------------------------------------------------------------- +// Emscripten: Called on key events static EM_BOOL EmscriptenKeyboardCallback(int eventType, const EmscriptenKeyboardEvent *keyboardEvent, void *userData) { - // NOTE: handled by GLFW, this is only to consume the keyboard events so we - // make use of F-keys and other shortcuts without triggering browser - // functions. + // NOTE: Only used to consume some keyboard events without triggering browser functions + return 1; // The event was consumed by the callback handler } +// Emscripten: Called on mouse input events +static EM_BOOL EmscriptenMouseCallback(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData) +{ + // This is only for registering mouse click events with emscripten and doesn't need to do anything + + return 1; // The event was consumed by the callback handler +} + +// Emscripten: Called on mouse move events static EM_BOOL EmscriptenMouseMoveCallback(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData) { // To emulate the GLFW_RAW_MOUSE_MOTION property. @@ -1643,92 +1649,7 @@ static EM_BOOL EmscriptenMouseMoveCallback(int eventType, const EmscriptenMouseE return 1; // The event was consumed by the callback handler } -// GLFW3 Scrolling Callback, runs on mouse wheel -static void MouseScrollCallback(GLFWwindow *window, double xoffset, double yoffset) -{ - CORE.Input.Mouse.currentWheelMove = (Vector2){ (float)xoffset, (float)yoffset }; -} - -// GLFW3 CursorEnter Callback, when cursor enters the window -static void CursorEnterCallback(GLFWwindow *window, int enter) -{ - if (enter) CORE.Input.Mouse.cursorOnScreen = true; - else CORE.Input.Mouse.cursorOnScreen = false; -} - -// Register fullscreen change events -static EM_BOOL EmscriptenFullscreenChangeCallback(int eventType, const EmscriptenFullscreenChangeEvent *event, void *userData) -{ - // NOTE: 1. Reset the fullscreen flags if the user left fullscreen manually by pressing the Escape key - // 2. Which is a necessary safeguard because that case will bypass the toggles CORE.Window.flags resets - if (platform.ourFullscreen) platform.ourFullscreen = false; - else - { - const bool wasFullscreen = EM_ASM_INT( { if (document.fullscreenElement) return 1; }, 0); - if (!wasFullscreen) - { - CORE.Window.fullscreen = false; - CORE.Window.flags &= ~FLAG_FULLSCREEN_MODE; - CORE.Window.flags &= ~FLAG_BORDERLESS_WINDOWED_MODE; - } - } - - return 1; // The event was consumed by the callback handler -} - -// Register window resize event -// static EM_BOOL EmscriptenWindowResizedCallback(int eventType, const EmscriptenUiEvent *event, void *userData) -// { -// // TODO: Implement EmscriptenWindowResizedCallback()? - -// return 1; // The event was consumed by the callback handler -// } - -// Register DOM element resize event -static EM_BOOL EmscriptenResizeCallback(int eventType, const EmscriptenUiEvent *event, void *userData) -{ - // Don't resize non-resizeable windows - if ((CORE.Window.flags & FLAG_WINDOW_RESIZABLE) == 0) return 1; - - // This event is called whenever the window changes sizes, - // so the size of the canvas object is explicitly retrieved below - int width = EM_ASM_INT( return window.innerWidth; ); - int height = EM_ASM_INT( return window.innerHeight; ); - - if (width < (int)CORE.Window.screenMin.width) width = CORE.Window.screenMin.width; - else if ((width > (int)CORE.Window.screenMax.width) && (CORE.Window.screenMax.width > 0)) width = CORE.Window.screenMax.width; - - if (height < (int)CORE.Window.screenMin.height) height = CORE.Window.screenMin.height; - else if ((height > (int)CORE.Window.screenMax.height) && (CORE.Window.screenMax.height > 0)) height = CORE.Window.screenMax.height; - - emscripten_set_canvas_element_size(GetCanvasId(), width, height); - - SetupViewport(width, height); // Reset viewport and projection matrix for new size - - CORE.Window.currentFbo.width = width; - CORE.Window.currentFbo.height = height; - CORE.Window.resizedLastFrame = true; - - if (IsWindowFullscreen()) return 1; - - // Set current screen size - CORE.Window.screen.width = width; - CORE.Window.screen.height = height; - - // NOTE: Postprocessing texture is not scaled to new size - - return 0; -} - -// Register mouse input events -static EM_BOOL EmscriptenMouseCallback(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData) -{ - // This is only for registering mouse click events with emscripten and doesn't need to do anything - - return 1; // The event was consumed by the callback handler -} - -// Register pointer lock events +// Emscripten: Called on pointer lock events static EM_BOOL EmscriptenPointerlockCallback(int eventType, const EmscriptenPointerlockChangeEvent *pointerlockChangeEvent, void *userData) { CORE.Input.Mouse.cursorHidden = EM_ASM_INT( { if (document.pointerLockElement) return 1; }, 0); @@ -1742,7 +1663,7 @@ static EM_BOOL EmscriptenPointerlockCallback(int eventType, const EmscriptenPoin return 1; // The event was consumed by the callback handler } -// Register connected/disconnected gamepads events +// Emscripten: Called on connect/disconnect gamepads events static EM_BOOL EmscriptenGamepadCallback(int eventType, const EmscriptenGamepadEvent *gamepadEvent, void *userData) { /* @@ -1764,26 +1685,7 @@ static EM_BOOL EmscriptenGamepadCallback(int eventType, const EmscriptenGamepadE return 1; // The event was consumed by the callback handler } -static EM_BOOL EmscriptenFocusCallback(int eventType, const EmscriptenFocusEvent *focusEvent, void *userData) -{ - EM_BOOL consumed = 1; - switch (eventType) - { - case EMSCRIPTEN_EVENT_BLUR: WindowFocusCallback(userData, 0); break; - case EMSCRIPTEN_EVENT_FOCUS: WindowFocusCallback(userData, 1); break; - default: consumed = 0; break; - } - return consumed; -} - -static EM_BOOL EmscriptenVisibilityChangeCallback(int eventType, const EmscriptenVisibilityChangeEvent *visibilityChangeEvent, void *userData) -{ - if (visibilityChangeEvent->hidden) CORE.Window.flags |= FLAG_WINDOW_HIDDEN; // The window was hidden - else CORE.Window.flags &= ~FLAG_WINDOW_HIDDEN; // The window was restored - return 1; // The event was consumed by the callback handler -} - -// Register touch input events +// Emscripten: Called on touch input events static EM_BOOL EmscriptenTouchCallback(int eventType, const EmscriptenTouchEvent *touchEvent, void *userData) { // Register touch points count @@ -1869,7 +1771,85 @@ static EM_BOOL EmscriptenTouchCallback(int eventType, const EmscriptenTouchEvent return 1; // The event was consumed by the callback handler } -// obtaining the canvas id provided by the module configuration +// Emscripten: Called on fullscreen change events +static EM_BOOL EmscriptenFullscreenChangeCallback(int eventType, const EmscriptenFullscreenChangeEvent *event, void *userData) +{ + // NOTE: 1. Reset the fullscreen flags if the user left fullscreen manually by pressing the Escape key + // 2. Which is a necessary safeguard because that case will bypass the toggles CORE.Window.flags resets + if (platform.ourFullscreen) platform.ourFullscreen = false; + else + { + const bool wasFullscreen = EM_ASM_INT( { if (document.fullscreenElement) return 1; }, 0); + if (!wasFullscreen) + { + CORE.Window.fullscreen = false; + CORE.Window.flags &= ~FLAG_FULLSCREEN_MODE; + CORE.Window.flags &= ~FLAG_BORDERLESS_WINDOWED_MODE; + } + } + + return 1; // The event was consumed by the callback handler +} + +// Emscripten: Called on resize event +static EM_BOOL EmscriptenResizeCallback(int eventType, const EmscriptenUiEvent *event, void *userData) +{ + // Don't resize non-resizeable windows + if ((CORE.Window.flags & FLAG_WINDOW_RESIZABLE) == 0) return 1; + + // This event is called whenever the window changes sizes, + // so the size of the canvas object is explicitly retrieved below + int width = EM_ASM_INT( return window.innerWidth; ); + int height = EM_ASM_INT( return window.innerHeight; ); + + if (width < (int)CORE.Window.screenMin.width) width = CORE.Window.screenMin.width; + else if ((width > (int)CORE.Window.screenMax.width) && (CORE.Window.screenMax.width > 0)) width = CORE.Window.screenMax.width; + + if (height < (int)CORE.Window.screenMin.height) height = CORE.Window.screenMin.height; + else if ((height > (int)CORE.Window.screenMax.height) && (CORE.Window.screenMax.height > 0)) height = CORE.Window.screenMax.height; + + emscripten_set_canvas_element_size(GetCanvasId(), width, height); + + SetupViewport(width, height); // Reset viewport and projection matrix for new size + + CORE.Window.currentFbo.width = width; + CORE.Window.currentFbo.height = height; + CORE.Window.resizedLastFrame = true; + + if (IsWindowFullscreen()) return 1; + + // Set current screen size + CORE.Window.screen.width = width; + CORE.Window.screen.height = height; + + // NOTE: Postprocessing texture is not scaled to new size + + return 0; +} + +// Emscripten: Called on windows focus change events +static EM_BOOL EmscriptenFocusCallback(int eventType, const EmscriptenFocusEvent *focusEvent, void *userData) +{ + EM_BOOL consumed = 1; + switch (eventType) + { + case EMSCRIPTEN_EVENT_BLUR: WindowFocusCallback(userData, 0); break; + case EMSCRIPTEN_EVENT_FOCUS: WindowFocusCallback(userData, 1); break; + default: consumed = 0; break; + } + return consumed; +} + +// Emscripten: Called on visibility change events +static EM_BOOL EmscriptenVisibilityChangeCallback(int eventType, const EmscriptenVisibilityChangeEvent *visibilityChangeEvent, void *userData) +{ + if (visibilityChangeEvent->hidden) CORE.Window.flags |= FLAG_WINDOW_HIDDEN; // The window was hidden + else CORE.Window.flags &= ~FLAG_WINDOW_HIDDEN; // The window was restored + return 1; // The event was consumed by the callback handler +} +//------------------------------------------------------------------------------------------------------- + +// JS: Get the canvas id provided by the module configuration EM_JS(char*, GetCanvasIdJs, (), { var canvasId = "#" + Module.canvas.id; var lengthBytes = lengthBytesUTF8(canvasId) + 1; @@ -1878,6 +1858,7 @@ EM_JS(char*, GetCanvasIdJs, (), { return stringOnWasmHeap; }); +// Get canvas id (using embedded JS function) static const char *GetCanvasId(void) { static char *canvasId = NULL; From b273ba930b431bd834acd381d219837cbb8d56e9 Mon Sep 17 00:00:00 2001 From: RANDRIA Luca Date: Thu, 31 Jul 2025 01:05:00 +0300 Subject: [PATCH 080/328] Add screenshot for core_basic_window_web The veritable screenshot is this --- examples/core/core_basic_window_web.png | Bin 4402 -> 15144 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/core/core_basic_window_web.png b/examples/core/core_basic_window_web.png index c01b78748e9480c2d20f18c94601e04b0b8356b5..6cf44a0c87340dcc7e216ed531216a4e649241eb 100644 GIT binary patch literal 15144 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYU_8XZ1{4ubUVDOp!Ro!Ii(^PdT=Jh^Utia^ z1sX^(Emp)qlyEREyBHwH+jvnx0xQ8-)p{U5u-U`G)Ii)2=qSoXt^+2 zE{v87qvgVAxqxl_bF_3EEgeTo$I;ReZ|UgpU0_GePa|fIezw1`Lgb5pgf74P=K~%* zjTiY&WbBg1IyVEHv{?|%v7x8!D^TAN0fo{pvEkv<6II$TJN%Xxi*LE(xMtVI82=a! zo{);ZW6G79Q|>)9i@AI}<0upl>C4JB1o^686!yGY_VybXr zs9n-~W3RG7t#hocPR515j+r|yXkVNt{cnd`glDX@oz(vohQ3+*6wKxdbcvT#MlI(K zI;(zd{*rf%i%NefZ>v#wVqf&Q|JqX>z5fqC@$af$5!%-ib_r;=jB`Q>TZ&0+KXSr@ zg)B(yf-Z|&I&jYFb_T};L8cbBZ5MiFG`=3$#k`E~ddEt=iOU;aUiz`cAj!Q%lea!A zoh#^YYt*ZYhr4eGmIPhq^|4)h*>dlr);lF`c{?ud5|CT*#eLm=kGYvk!hb27)-ImD zdYAGS6IbxOTZ9wXDUq;30NE8_F(jw-ED%_5?S$Ss1?3dGoyrYIUM=4GpDjB`@!EZ6 z+5d}Mc~cb~UiFCW+;&k*zW>;Ns7VJP7U&XV!2?dlqU%ch-yBrSb&d7vC+^ywP@-#6 z8qBfwThD}7r!H13%{{lg^v9%G{qEZQuUZad?348MR5k>M)n$0nL=RMkyAUUA?0q4i zQ11IDAl}=5)o;$ZeXi>&zuda*sQZ7??8uD0%jSiAUMc&3L&3tW)*P+&Yah?N_OosQ zcXH8R_Z2k?*WzD1yI{5F<=nV}o9x2!b2%k*C-g3XB&YXyk`v>x_3``v$@9JkPaQ54 zWLm78x>&Q+gvEouapAmtx6gkwRzdPk9wen z*^FIM&>Xl>6r3eA%dqDdH|GYRO}l^-rno07k>eaaG@&I0P(LruDCOA?37D&R0tQ@c zBuV2bHo&vCKo8=wX4DCwkQohy(NKWp(b2RpnifXW0&-h+G)Ii)h|wG|nj_F#k)!3p zXt^+2E{v87qvZm&?)7NtI9fW6mX4#P<7nwPS~`MC!qHF|4F%9t!)PdshQjEq3}{Mw oG!#Zd0lXcRU|ImqJ~J@H^+w%v&e6>S?to?RboFyt=akR{0D#NXK>z>% literal 4402 zcmZWsd0bOh7Je#I7_EY}?h7f*XsZ>Y6j_Hz1zCfWSalhOJ;CL>(7wtvFVS zKv-N5$wEMks1Q;C#Wi$xv|O|!tTDYs2N!&fq=n(oFQMhV|<@ixK#9WdFKj{m(d(akS$S8P~f zGCe*N3y+D74qcrP5+52Glkkt&#DQrNXZ+A=bZBFIC_OPEHiqOK5gm&8hVCO-lSzM1 ziXyEeud^YMzjLr5JJ_rzZTBR(xp?1ypMhU(_R|(u7w;5Kf177)fFkL$=OW=Z+|7Ua zDeJPU+Oqtm+VXnT#kuP29Zv@ryeymYY{#K%|2!xiGko*%WgZ*Ca=T# zlN&Z2`Z9X?mcKpnK|c$(n&VGWmmPGN7H}q48~8;^BaJaI{EQ*g zOvNyhlmT}NSJWH7`oNpp#v#H#Vc5Ajsj7=J>k2LKZCAcWvB)8{ba}`cBYelag?c)h zgs)$+al!w-r>2U?!*~b>N8Wa1uF|lA(zd#x^@TCYQtlV7_=Xdli#%+CVW;JPnvG$5 zjnKQ<3Y6A3c(u;e(4204jTY<+TE)90Ng6J?qbn*VM$X>D7Cs|?p8DzzzCB0}br8sU zum1Sa8cCJr_$xYmgm5T=DieiG!LSfBbh#b6JU#NS$h0M_TnU6LFWbz(umy(_;E)P! zyNIu$-_cuE@MhovZP>27IUPOE(UU&<9H#gd!$^-x{qc407Gj@+F0X%DGat8ibRixe zNqS$6@1I4#BS}xi29H{134}Kr#X=S!-#BvQrx&V3`mWjd9h*q#$POvI z7ZS0fTaQFM#{VaF>0!vgY!eG)0ByQzpn#KBj@Tn7O&CQe5Wr(i2FUp zVdXInpGQBq)dQY>$6xI63w|@1fJX2m$PSSy%ZW^dY(kYyIEDLerbsTGKy*65!wAZh z-sfl_5Dci~XMy8Y1WqBWS|S!2ss<5@w*n!s3(V94GEYMqF4@%K zupjrHn+&<~V*n7Yl}d3kRm&PY)(H5hsN3o^wsk@PX5Y~7D>ta&o`R0*5bAg zr1aj&Qn&VsXbV_4=6?Hdqx|ilTJpggnk7N9bn8SVxQ@S@Vc6zzsQy2ap>;Y4RDBAJ zv%esi+O0rPj`M<6vkIu$V|eqrN_LF?GGq-d6z5FC8#yI2R0=BU8ctR6fc)p5XQCFp z=g)p|baXh`KqK6G{pt^<{*gaGStZSL)Vy#vhq}oBebf?_?sP)$yKbgxH=B;ide1-K ztFJ53A80fZ=zzq}f@T#FEGolUVMDv7PtiB3=?hsiZEvD}*}6tR4VTJ0T0VbD$kYC| zV&B01-3NW*Z?v)V@9Ia)la?M26>s~gJb#<8v;9&*WwA#0LTCI9RJJUz$fEWDtJ(1t z7P9}T^86UPp{IM6zWM`)Z0e2TBU@X%$zE1HIDBR9nXv-xC5pbrm@*Jokabq&{W@*clN&9H{zBz^W6fAu%fgbnclwlbVrPl5F2VV|E_qC&?He$05=1F+ z0x3z^=4zrebMhsq|XrBrx z8LGJOwZo&S%eth_WkC>9S*gX;g6@d^{GD?8+Jqt#30wf07S~dz1~P7bQ09PhGZ1M#RI6iD3PD~VC|$sv zcQ+8fj!dx%s@W4Rmjfm__xJ6T7&3+4xH3^byuf|W7|^KE*%Z5|&r_3pVvDG7lynkzD zCGY9E47c)21v0gom>jFwotvVgqCiga(Qf_Fv-VnFbWQLxq7uQQ(&Mn>LF35@A$Sxf z9*yz=cm?B-9x1!(BuH4bf`GliU)X|c4Ki_tM$HA&@=LFf8XAf6*x+q3H4}8~T6-0^ zH1rycb0k4@5V6fbGfyp3laqwRa>MVc{Osne`~Vn{INQR->t9RZU^tH()7Ao@Eo^6W zY}kk!DG~MSSTNw+Ma{k;kVn*J=PKhxxK+CNy2_QfMXSC(fO~c3)M~5dSm9D=PtG$qU1E3Q>j>}*gj|*MnlFBj!0={zWK|*h(^aksiD3aZHUi5E{F8 Date: Wed, 30 Jul 2025 22:40:54 -0600 Subject: [PATCH 081/328] [build] Add ARM64 support to Linux builds - Add ubuntu-24.04-arm runner for native ARM64 compilation - Support building both static and shared libraries for ARM64 - Maintain backwards compatibility with existing x86/x64 builds - Addresses issue #5051 for ARM64 pre-compiled binaries Expected output: raylib-X.X-linux_arm64.tar.gz in releases --- .github/workflows/linux.yml | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index a4ce5329b..a4879841c 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -22,22 +22,28 @@ jobs: build: permissions: contents: write # for actions/upload-release-asset to upload release asset - runs-on: ubuntu-latest strategy: fail-fast: false max-parallel: 1 matrix: - bits: [32, 64] include: - bits: 32 ARCH: "i386" ARCH_NAME: "i386" COMPILER_PATH: "/user/bin" + runner: "ubuntu-latest" - bits: 64 ARCH: "x86_64" ARCH_NAME: "amd64" COMPILER_PATH: "/user/bin" + runner: "ubuntu-latest" + - bits: 64 + ARCH: "aarch64" + ARCH_NAME: "arm64" + COMPILER_PATH: "/user/bin" + runner: "ubuntu-24.04-arm" + runs-on: ${{ matrix.runner }} env: RELEASE_NAME: raylib-dev_linux_${{ matrix.ARCH_NAME }} @@ -66,7 +72,7 @@ jobs: # ${{ matrix.ARCH }}-linux-gnu-gcc -v # TODO: Support 32bit (i386) static/shared library building - - name: Build Library + - name: Build Library (32-bit) run: | cd src make PLATFORM=PLATFORM_DESKTOP CC=gcc RAYLIB_LIBTYPE=STATIC RAYLIB_RELEASE_PATH="../build/${{ env.RELEASE_NAME }}/lib" CUSTOM_CFLAGS="-m32" -B @@ -74,13 +80,21 @@ jobs: cd .. if: matrix.bits == 32 - - name: Build Library + - name: Build Library (64-bit x86) run: | cd src make PLATFORM=PLATFORM_DESKTOP CC=gcc RAYLIB_LIBTYPE=STATIC RAYLIB_RELEASE_PATH="../build/${{ env.RELEASE_NAME }}/lib" -B make PLATFORM=PLATFORM_DESKTOP CC=gcc RAYLIB_LIBTYPE=SHARED RAYLIB_RELEASE_PATH="../build/${{ env.RELEASE_NAME }}/lib" -B cd .. - if: matrix.bits == 64 + if: matrix.bits == 64 && matrix.ARCH == 'x86_64' + + - name: Build Library (64-bit ARM) + run: | + cd src + make PLATFORM=PLATFORM_DESKTOP CC=gcc RAYLIB_LIBTYPE=STATIC RAYLIB_RELEASE_PATH="../build/${{ env.RELEASE_NAME }}/lib" -B + make PLATFORM=PLATFORM_DESKTOP CC=gcc RAYLIB_LIBTYPE=SHARED RAYLIB_RELEASE_PATH="../build/${{ env.RELEASE_NAME }}/lib" -B + cd .. + if: matrix.bits == 64 && matrix.ARCH == 'aarch64' - name: Generate Artifacts run: | From 38ff5d00a028f29ff53be881a910517883cb0f7d Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 31 Jul 2025 23:55:26 +0200 Subject: [PATCH 082/328] Create build_example_web.bat --- examples/build_example_web.bat | 43 ++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 examples/build_example_web.bat diff --git a/examples/build_example_web.bat b/examples/build_example_web.bat new file mode 100644 index 000000000..b04439c8a --- /dev/null +++ b/examples/build_example_web.bat @@ -0,0 +1,43 @@ +::@echo off +:: . +:: Compile your examples for web using: build_example_web.bat \ +:: . +set "INPUT_FILE=%1" +:: Change delimiter for the FOR loop +for /f "tokens=1-10 delims=\" %%a in ("%INPUT_FILE%") do ( + set CATEGORY=%%a + set FILENAME=%%b +) +:: > Setup required Environment +:: ------------------------------------- +set RAYLIB_PATH=C:\GitHub\raylib +set EMSDK_PATH=C:\raylib\emsdk +echo +:: Set required web compilation options +:: ------------------------------------- +set CC=%EMSDK_PATH%\upstream\emscripten\emcc +set CFLAGS=-Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces -Wunused-result -O3 -I. -Iexternal -I%RAYLIB_PATH%\src -I%RAYLIB_PATH%\external -DPLATFORM_WEB +set LDFLAGS=-L. -L$(RAYLIB_PATH)\src -sUSE_GLFW=3 -sEXPORTED_RUNTIME_METHODS=ccall -sASYNCIFY --shell-file %RAYLIB_PATH%\src\shell.html +set LDLIBS=%RAYLIB_PATH%\src\libraylib.web.a +:: TODO: If using some resources/assets, set the directory path as shown in the commented line! +set RESOURCES= +::set RESOURCES=--preload-file $(RESOURCES_PATH) +cd %RAYLIB_PATH%\examples\%CATEGORY% +echo +:: Clean latest build +:: ------------------------ +cmd /c if exist %FILENAME%.html del /F %FILENAME%.html +cmd /c if exist %FILENAME%.wasm del /F %FILENAME%.wasm +cmd /c if exist %FILENAME%.js del /F %FILENAME%.js +cmd /c if exist %FILENAME%.data del /F %FILENAME%.data +echo +:: Setup emsdk environment +:: -------------------------- +cmd /c %EMSDK_PATH%\emsdk_env.bat +echo +:: Compile program +:: ----------------------- +cmd /c %CC% --version +cmd /c %CC% -o %FILENAME%.html %FILENAME%.c %CFLAGS% %LDFLAGS% %LDLIBS% %RESOURCES% +cd .. +echo From 968385b5f4b38096c42b38eb741feddd54e8afd2 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 31 Jul 2025 23:55:46 +0200 Subject: [PATCH 083/328] Update examples_template.c --- examples/examples_template.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/examples_template.c b/examples/examples_template.c index 49136a4d4..6ef7214eb 100644 --- a/examples/examples_template.c +++ b/examples/examples_template.c @@ -41,7 +41,7 @@ - raylib/examples//_example_name.c - raylib/examples//_example_name.png - - raylib/examples//resources/*.* + - raylib/examples//resources/.. - raylib/examples/Makefile - raylib/examples/Makefile.Web - raylib/examples/README.md @@ -104,9 +104,11 @@ int main(void) ClearBackground(RAYWHITE); - // TODO: Draw everything that requires to be drawn at this point: + // TODO: Draw everything that requires to be drawn at this point - DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY); // Example + DrawLineEx((Vector2){ 0, 0 }, (Vector2){ screenWidth, screenHeight }, 2.0f, RED); + DrawLineEx((Vector2){ 0, screenHeight }, (Vector2){ screenWidth, 0 }, 2.0f, RED); + DrawText("example base code template", 260, 400, 20, LIGHTGRAY); EndDrawing(); //---------------------------------------------------------------------------------- From 4b2654f85109df88d558a6fb2d2884dd4ca7b952 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 31 Jul 2025 23:55:50 +0200 Subject: [PATCH 084/328] Create examples_template.png --- examples/examples_template.png | Bin 0 -> 17323 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/examples_template.png diff --git a/examples/examples_template.png b/examples/examples_template.png new file mode 100644 index 0000000000000000000000000000000000000000..da99bbb0d97118eef3ca41c16b62182acced63f9 GIT binary patch literal 17323 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 aXx{Fh`%kLYY!czW3FF=h-xU_U{Qm(sHl%3) literal 0 HcmV?d00001 From d88f27f08d160edaae89a04828aee6cc3650fa04 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 1 Aug 2025 00:30:01 +0200 Subject: [PATCH 085/328] NEW: ADDED: `rexm` - A simple command-line tool to manage raylib examples -WIP- --- examples/rexm.c | 349 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 349 insertions(+) create mode 100644 examples/rexm.c diff --git a/examples/rexm.c b/examples/rexm.c new file mode 100644 index 000000000..d40c2ce1c --- /dev/null +++ b/examples/rexm.c @@ -0,0 +1,349 @@ +/******************************************************************************************* +* +* rexm [raylib examples manager] - A simple command-line tool to manage raylib examples +* +* Supported processes: +* - create +* - add +* - rename +* - remove +* +* Files involved in the processes: +* - raylib/examples//_example_name.c +* - raylib/examples//_example_name.png +* - raylib/examples//resources/.. +* - raylib/examples/Makefile +* - raylib/examples/Makefile.Web +* - raylib/examples/README.md +* - raylib/projects/VS2022/examples/_example_name.vcxproj +* - raylib/projects/VS2022/raylib.sln +* - raylib.com/common/examples.js +* - raylib.com/examples//_example_name.html +* - raylib.com/examples//_example_name.data +* - raylib.com/examples//_example_name.wasm +* - raylib.com/examples//_example_name.js +* +* LICENSE: zlib/libpng +* +* Copyright (c) 2025 Ramon Santamaria (@raysan5) +* +* 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 "raylib.h" + +#include +#include // Required for: rename(), remove() +#include // Required for: strcmp(), strcpy() + +#define SUPPORT_LOG_INFO +#if defined(SUPPORT_LOG_INFO) && defined(_DEBUG) + #define LOG(...) printf(__VA_ARGS__) +#else + #define LOG(...) +#endif + +//---------------------------------------------------------------------------------- +// Types and Structures Definition +//---------------------------------------------------------------------------------- +// Example management operations +typedef enum { + OP_NONE = 0, + OP_CREATE = 1, + OP_ADD = 2, + OP_RENAME = 3, + OP_REMOVE = 4 +} ExampleOperation; + +//---------------------------------------------------------------------------------- +// Module specific functions declaration +//---------------------------------------------------------------------------------- +static int FileTextReplace(const char *fileName, const char *textLookUp, const char *textReplace); +static int FileCopy(const char *srcPath, const char *dstPath); +static int FileRename(const char *fileName, const char *fileRename); // TODO: Implement, make sure to deal with paths moving +static int FileRemove(const char *fileName); // TODO: Implement + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(int argc, char *argv[]) +{ + // Examples path for building + // TODO: Avoid hardcoding path values... + char *exBasePath = "C:/GitHub/raylib/examples"; + char *exWebPath = "C:/GitHub/raylib.com/examples"; + char *exTemplateFilePath = "C:/GitHub/raylib/examples/examples_template.c"; + + char inFileName[1024] = { 0 }; // Example input filename + + char exName[1024] = { 0 }; // Example name, without extension: core_basic_window + char exCategory[32] = { 0 }; // Example category: core + char exRename[1024] = { 0 }; // Example re-name, without extension + char exPath[1024] = { 0 }; // Example path -NOT USED- + char exFullPath[1024] = { 0 }; // Example full path -NOT USED- + + int opCode = OP_NONE; // Operation code: 0-None(Help), 1-Create, 2-Add, 3-Rename, 4-Remove + + // Command-line usage mode + //-------------------------------------------------------------------------------------- + if (argc > 1) + { + // Supported commands: + // help : Provides command-line usage information (default) + // create : Creates an empty example, from internal template + // add : Add existing example, category extracted from name + // rename : Rename an existing example + // remove : Remove an existing example + if (strcmp(argv[1], "create") == 0) + { + // Check for valid upcoming argument + if (argc == 2) LOG("WARNING: No filename provided to create\n"); + else if (argc > 3) LOG("WARNING: Too many arguments provided\n"); + else + { + // TODO: Additional security checks for file name? + + strcpy(inFileName, argv[2]); // Register filename for creation + opCode = 1; + } + } + else if (strcmp(argv[1], "add") == 0) + { + // Check for valid upcoming argument + if (argc == 2) LOG("WARNING: No filename provided to create\n"); + else if (argc > 3) LOG("WARNING: Too many arguments provided\n"); + else + { + if (IsFileExtension(argv[2], ".c")) // Check for valid file extension: input + { + // TODO: Parse category name from filename provided! + + strcpy(inFileName, argv[2]); // Register filename for creation + opCode = 2; + } + else LOG("WARNING: Input file extension not recognized (.c)\n"); + } + } + else if (strcmp(argv[1], "rename") == 0) + { + if (argc == 2) LOG("WARNING: No filename provided to create\n"); + else if (argc == 3) LOG("WARNING: No enough arguments provided\n"); + else if (argc > 4) LOG("WARNING: Too many arguments provided\n"); + else + { + // TODO: Register exName, exCategory and exRename + + opCode = 3; + } + } + else if (strcmp(argv[1], "remove") == 0) + { + // Check for valid upcoming argument + if (argc == 2) LOG("WARNING: No filename provided to create\n"); + else if (argc > 3) LOG("WARNING: Too many arguments provided\n"); + else + { + strcpy(inFileName, argv[2]); // Register filename for removal + opCode = 4; + } + } + } + + switch (opCode) + { + case 1: // Create: New example from template + { + // Copy template file as new example + FileCopy(exTemplateFilePath, TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + } + case 2: // Add: Example from command-line input filename + { + if ((opCode != 1) && FileExists(inFileName)) + { + FileCopy(inFileName, TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + } + + // Generate all required files + //-------------------------------------------------------------------------------- + // Create: raylib/examples//_example_name.c + // Create: raylib/examples//_example_name.png + FileCopy("C:/GitHub/raylib/examples/examples_template.png", + TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); // To be updated manually! + + // Copy: raylib/examples//resources/*.* ---> To be updated manually! + + // TODO: Update the required files to add new example in the required position (ordered by category and name), + // it could require some logic to make it possible... + + // Edit: raylib/examples/Makefile --> Add new example + // Edit: raylib/examples/Makefile.Web --> Add new example + // Edit: raylib/examples/README.md --> Add new example + + // Create: raylib/projects/VS2022/examples/_example_name.vcxproj + // Edit: raylib/projects/VS2022/raylib.sln --> Add new example + // Edit: raylib.com/common/examples.js --> Add new example + + // Compile to: raylib.com/examples//_example_name.html + // Compile to: raylib.com/examples//_example_name.data + // Compile to: raylib.com/examples//_example_name.wasm + // Compile to: raylib.com/examples//_example_name.js + + // Recompile example (on raylib side) + // NOTE: Tools requirements: emscripten, w64devkit + system(TextFormat("%s/../build_example_web.bat %s\%s", exBasePath, exCategory, exName)); + + // Copy results to web side + FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.html", exWebPath, exCategory, exName)); + FileCopy(TextFormat("%s/%s/%s.data", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.data", exWebPath, exCategory, exName)); + FileCopy(TextFormat("%s/%s/%s.wasm", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.wasm", exWebPath, exCategory, exName)); + FileCopy(TextFormat("%s/%s/%s.js", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.js", exWebPath, exCategory, exName)); + } break; + case 3: // Rename + { + // Rename all required files + rename(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.c", exBasePath, exCategory, exRename)); + rename(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.png", exBasePath, exCategory, exRename)); + + FileTextReplace(TextFormat("%s/Makefile", exBasePath), exName, exRename); + FileTextReplace(TextFormat("%s/Makefile.Web", exBasePath), exName, exRename); + FileTextReplace(TextFormat("%s/README.md", exBasePath), exName, exRename); + + rename(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), + TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exRename)); + FileTextReplace(TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath), exName, exRename); + + // Remove old web compilation + FileTextReplace(TextFormat("%s/../common/examples.js", exWebPath), exName, exRename); + remove(TextFormat("%s/%s/%s.html", exWebPath, exCategory, exName)); + remove(TextFormat("%s/%s/%s.data", exWebPath, exCategory, exName)); + remove(TextFormat("%s/%s/%s.wasm", exWebPath, exCategory, exName)); + remove(TextFormat("%s/%s/%s.js", exWebPath, exCategory, exName)); + + // Recompile example (on raylib side) + // NOTE: Tools requirements: emscripten, w64devkit + system(TextFormat("%s/../build_example_web.bat %s\%s", exBasePath, exCategory, exName)); + + // Copy results to web side + FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.html", exWebPath, exCategory, exName)); + FileCopy(TextFormat("%s/%s/%s.data", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.data", exWebPath, exCategory, exName)); + FileCopy(TextFormat("%s/%s/%s.wasm", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.wasm", exWebPath, exCategory, exName)); + FileCopy(TextFormat("%s/%s/%s.js", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.js", exWebPath, exCategory, exName)); + } break; + case 4: // Remove + { + // TODO: Remove and update all required files... + + } break; + default: // Help + { + // Supported commands: + // help : Provides command-line usage information + // create : Creates an empty example, from internal template + // add : Add existing example, category extracted from name + // rename : Rename an existing example + // remove : Remove an existing example + + printf("\n////////////////////////////////////////////////////////////////////////////////////////////\n"); + printf("// //\n"); + printf("// rem [raylib examples manager] - A simple command-line tool to manage raylib examples //\n"); + printf("// powered by raylib v5.6-dev //\n"); + printf("// //\n"); + printf("// Copyright (c) 2025 Ramon Santamaria (@raysan5) //\n"); + printf("// //\n"); + printf("////////////////////////////////////////////////////////////////////////////////////////////\n\n"); + + printf("USAGE:\n\n"); + printf(" > rem help|create|add|rename|remove []\n"); + + printf("\nOPTIONS:\n\n"); + printf(" help : Provides command-line usage information\n"); + printf(" create : Creates an empty example, from internal template\n"); + printf(" add : Add existing example, category extracted from name\n"); + printf(" Supported categories: core, shapes, textures, text, models\n\n"); + printf(" rename : Rename an existing example\n"); + printf(" remove : Remove an existing example\n\n"); + printf("\nEXAMPLES:\n\n"); + printf(" > rem rename core_basic_window core_cool_window\n"); + printf(" Renames and updates example to \n\n"); + printf(" > rem add shapes_custom_stars\n"); + printf(" Add and updates new example provided \n\n"); + } break; + } + + return 0; +} + +//---------------------------------------------------------------------------------- +// Module specific functions definition +//---------------------------------------------------------------------------------- +static int FileTextReplace(const char *fileName, const char *textLookUp, const char *textReplace) +{ + int result = 0; + char *fileText = NULL; + char *fileTextUpdated = { 0 }; + + fileText = LoadFileText(fileName); + fileTextUpdated = TextReplace(fileText, textLookUp, textReplace); + result = SaveFileText(fileName, fileTextUpdated); + MemFree(fileTextUpdated); + UnloadFileText(fileText); + + return result; +} + +static int FileCopy(const char *srcPath, const char *dstPath) +{ + int result = 0; + int srcDataSize = 0; + unsigned char *srcFileData = LoadFileData(srcPath, &srcDataSize); + + if ((srcFileData != NULL) && (srcDataSize > 0)) result = SaveFileData(dstPath, srcFileData, srcDataSize); + + UnloadFileData(srcFileData); + + return result; +} + +static int FileRename(const char *fileName, const char *fileRename) +{ + int result = 0; + + // TODO: Make sure to deal with paths properly for file moving if required + + if (FileExists(fileName)) rename(fileName, TextFormat("%s/%s", GetDirectoryPath(fileName), fileRename)); + + return result; +} + +static int FileRemove(const char *fileName) +{ + int result = 0; + + if (FileExists(fileName)) remove(fileName); + + return result; +} From e0b58b7eee8a794110af496e19394cdc7085fe8a Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 1 Aug 2025 01:08:31 +0200 Subject: [PATCH 086/328] Update rexm.c --- examples/rexm.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index d40c2ce1c..ef22411d5 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -269,7 +269,7 @@ int main(int argc, char *argv[]) printf("\n////////////////////////////////////////////////////////////////////////////////////////////\n"); printf("// //\n"); - printf("// rem [raylib examples manager] - A simple command-line tool to manage raylib examples //\n"); + printf("// rexm [raylib examples manager] - A simple command-line tool to manage raylib examples //\n"); printf("// powered by raylib v5.6-dev //\n"); printf("// //\n"); printf("// Copyright (c) 2025 Ramon Santamaria (@raysan5) //\n"); @@ -277,20 +277,20 @@ int main(int argc, char *argv[]) printf("////////////////////////////////////////////////////////////////////////////////////////////\n\n"); printf("USAGE:\n\n"); - printf(" > rem help|create|add|rename|remove []\n"); + printf(" > rexm help|create|add|rename|remove []\n"); printf("\nOPTIONS:\n\n"); printf(" help : Provides command-line usage information\n"); printf(" create : Creates an empty example, from internal template\n"); printf(" add : Add existing example, category extracted from name\n"); - printf(" Supported categories: core, shapes, textures, text, models\n\n"); + printf(" Supported categories: core, shapes, textures, text, models\n"); printf(" rename : Rename an existing example\n"); printf(" remove : Remove an existing example\n\n"); printf("\nEXAMPLES:\n\n"); - printf(" > rem rename core_basic_window core_cool_window\n"); - printf(" Renames and updates example to \n\n"); - printf(" > rem add shapes_custom_stars\n"); + printf(" > rexm add shapes_custom_stars\n"); printf(" Add and updates new example provided \n\n"); + printf(" > rexm rename core_basic_window core_cool_window\n"); + printf(" Renames and updates example to \n\n"); } break; } From 58e3c8604a37e0b8ed1546af3615ddeb3e6f0349 Mon Sep 17 00:00:00 2001 From: lpow100 Date: Thu, 31 Jul 2025 16:16:07 -0700 Subject: [PATCH 087/328] Added setup for the rename command (NOT TESTED) --- examples/rexm.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index d40c2ce1c..21f26ceb2 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -141,12 +141,18 @@ int main(int argc, char *argv[]) else if (strcmp(argv[1], "rename") == 0) { if (argc == 2) LOG("WARNING: No filename provided to create\n"); - else if (argc == 3) LOG("WARNING: No enough arguments provided\n"); - else if (argc > 4) LOG("WARNING: Too many arguments provided\n"); + //else if (argc == 3) LOG("WARNING: No enough arguments provided\n"); All the documentation says 3 args but I don't mind being wrong + else if (argc > 3) LOG("WARNING: Too many arguments provided\n"); else { - // TODO: Register exName, exCategory and exRename - + strcpy(exName, argv[2]); + for (int index = 0; index < 32; index++) + { + if (exName[index] == '_') break; + exCategory[index] = exName[index]; + } + strcpy(exRename, argv[3]); + opCode = 3; } } From 121c996c6e51ab6e03c42543c8704876863a0f69 Mon Sep 17 00:00:00 2001 From: Eike Decker Date: Fri, 1 Aug 2025 08:40:28 +0200 Subject: [PATCH 088/328] fixing OBJ loading crash when there are no normals present --- src/rmodels.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/rmodels.c b/src/rmodels.c index 0dc7572f1..246c2b0a3 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -4473,9 +4473,17 @@ static Model LoadOBJ(const char *fileName) for (int i = 0; i < 3; i++) model.meshes[meshIndex].vertices[localMeshVertexCount*3 + i] = objAttributes.vertices[vertIndex*3 + i]; - for (int i = 0; i < 3; i++) model.meshes[meshIndex].normals[localMeshVertexCount*3 + i] = objAttributes.normals[normalIndex*3 + i]; - for (int i = 0; i < 2; i++) model.meshes[meshIndex].texcoords[localMeshVertexCount*2 + i] = objAttributes.texcoords[texcordIndex*2 + i]; + if (objAttributes.normals != NULL && normalIndex != TINYOBJ_INVALID_INDEX && normalIndex >= 0) + { + for (int i = 0; i < 3; i++) model.meshes[meshIndex].normals[localMeshVertexCount*3 + i] = objAttributes.normals[normalIndex*3 + i]; + } + else + { + model.meshes[meshIndex].normals[localMeshVertexCount*3 + 0] = 0.0f; + model.meshes[meshIndex].normals[localMeshVertexCount*3 + 1] = 1.0f; + model.meshes[meshIndex].normals[localMeshVertexCount*3 + 2] = 0.0f; + } model.meshes[meshIndex].texcoords[localMeshVertexCount*2 + 1] = 1.0f - model.meshes[meshIndex].texcoords[localMeshVertexCount*2 + 1]; From 43bc00379c7586c1acc1097b3ddee8f44513b7ad Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 1 Aug 2025 10:26:28 +0200 Subject: [PATCH 089/328] removed trailing spaces --- src/external/rl_gputex.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/external/rl_gputex.h b/src/external/rl_gputex.h index 1f0575300..906a863b1 100644 --- a/src/external/rl_gputex.h +++ b/src/external/rl_gputex.h @@ -585,7 +585,7 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo // KTX 2.0: UInt32 supercompressionScheme - 0 (None), 1 (Crunch CRN), 2 (Zlib DEFLATE)... // KTX 2.0 defines additional header elements... } ktx_header; - + Byte[12] identifier UInt32 vkFormat UInt32 typeSize @@ -632,10 +632,10 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo header.faces = 1; header.mipmap_levels = mipmaps; // If it was 0, it means mipmaps should be generated on loading (not for compressed formats) header.key_value_data_size = 0; // No extra data after the header - + // TODO: WARNING: Function dependant on rlgl library! rlGetGlTextureFormats(format, &header.gl_internal_format, &header.gl_format, &header.gl_type); // rlgl module function - + header.gl_base_internal_format = header.gl_format; // TODO: WARNING: KTX 1.1 only // NOTE: We can save into a .ktx all PixelFormats supported by raylib, including compressed formats like DXT, ETC or ASTC @@ -947,7 +947,7 @@ void get_gl_texture_formats(int format, unsigned int *gl_internal_format, unsign { // KTX 1.1 uses OpenGL formats on header info but KTX 2.0 uses Vulkan texture formats, // if this library is being improved to support KTX 2.0, it requires those formats to be provided -> View list at the end! - + /* *gl_internal_format = 0; *gl_format = 0; @@ -1023,7 +1023,7 @@ void get_gl_texture_formats(int format, unsigned int *gl_internal_format, unsign /* // OpenGL texture data formats -// NOTE: Those values can be useful for KTX 1.1 saving, +// NOTE: Those values can be useful for KTX 1.1 saving, // probably only the latest OpenGL ones, not the extensions ones // So, there is no need to include full OpenGL headers #define GL_UNSIGNED_BYTE 0x1401 From 9fa53aac6f9edaab0fe246328423e14e690e6fcf Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 1 Aug 2025 18:56:54 +0200 Subject: [PATCH 090/328] Update examples_template.c --- examples/examples_template.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/examples_template.c b/examples/examples_template.c index 6ef7214eb..2ee806b54 100644 --- a/examples/examples_template.c +++ b/examples/examples_template.c @@ -60,7 +60,7 @@ * * Example complexity rating: [★☆??] ?/4 * -* Example originally created with raylib 5.5, last time updated with raylib 5.5 +* Example originally created with raylib 5.5, last time updated with raylib 5.6-dev * * Example contributed by (@) and reviewed by Ramon Santamaria (@raysan5) * From 6b0174d0348350e328e8ce5dbda7780cf9532bae Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 1 Aug 2025 18:58:05 +0200 Subject: [PATCH 091/328] REVIEWED: Examples Makefile to locate examples list: `#EXAMPLES_LIST_*` --- examples/Makefile | 45 +++++----- examples/Makefile.Web | 198 +++++++++++++++++++++++++++++++++--------- 2 files changed, 182 insertions(+), 61 deletions(-) diff --git a/examples/Makefile b/examples/Makefile index b5b6ef2bc..33a9d1327 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -106,6 +106,9 @@ BUILD_WEB_SHELL ?= $(RAYLIB_PATH)/src/minshell.html BUILD_WEB_HEAP_SIZE ?= 134217728 BUILD_WEB_RESOURCES ?= TRUE BUILD_WEB_RESOURCES_PATH ?= $(dir $<)resources@resources +# Use WebGL2 backend (OpenGL 3.0) +# WARNING: Requires raylib compiled with GRAPHICS_API_OPENGL_ES3 +BUILD_WEB_WEBGL2 ?= FALSE # Determine PLATFORM_OS when required ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW PLATFORM_DESKTOP_SDL PLATFORM_DESKTOP_RGFW PLATFORM_WEB PLATFORM_WEB_RGFW)) @@ -186,7 +189,7 @@ ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) endif endif ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) - # HTML5 emscripten compiler + # HTML5 emscripten compiler # WARNING: To compile to HTML5, code must be redesigned # to use emscripten.h and emscripten_set_main_loop() CC = emcc @@ -269,8 +272,8 @@ endif # NOTE: Some external/extras libraries could be required (stb, easings...) #------------------------------------------------------------------------------------------------ INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external $(EXTRA_INCLUDE_PATHS) -# Define additional directories containing required header files +# Define additional directories containing required header files ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) ifeq ($(PLATFORM_OS),BSD) INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH) -I/usr/pkg/include -I/usr/X11R7/include @@ -287,11 +290,6 @@ ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) INCLUDE_PATHS += -I/usr/include/libdrm endif -# Include GLFW required for examples/others/rlgl_standalone.c -ifeq ($(USE_EXTERNAL_GLFW),FALSE) -all others: INCLUDE_PATHS += -I$(RAYLIB_PATH)/src/external/glfw/include -endif - # Define library paths containing required libs: LDFLAGS #------------------------------------------------------------------------------------------------ LDFLAGS = -L. -L$(RAYLIB_RELEASE_PATH) -L$(RAYLIB_PATH)/src @@ -340,18 +338,24 @@ ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_R # --preload-file resources # specify a resources folder for data compilation # --source-map-base # allow debugging in browser with source map # --shell-file shell.html # define a custom shell .html and output extension - LDFLAGS += -sTOTAL_MEMORY=$(BUILD_WEB_HEAP_SIZE) -sFORCE_FILESYSTEM=1 -sMINIFY_HTML=0 + LDFLAGS += -sTOTAL_MEMORY=$(BUILD_WEB_HEAP_SIZE) -sFORCE_FILESYSTEM=1 -sEXPORTED_RUNTIME_METHODS=ccall -sMINIFY_HTML=0 # Using GLFW3 library (instead of RGFW) ifeq ($(TARGET_PLATFORM),PLATFORM_WEB) LDFLAGS += -sUSE_GLFW=3 endif - # Build using asyncify + # Build using asyncify ifeq ($(BUILD_WEB_ASYNCIFY),TRUE) LDFLAGS += -sASYNCIFY endif + # NOTE: Flags required for WebGL 2.0 (OpenGL ES 3.0) + # WARNING: Requires raylib compiled with GRAPHICS_API_OPENGL_ES3 + ifeq ($(BUILD_WEB_WEBGL2),TRUE) + LDFLAGS += -sMIN_WEBGL_VERSION=2 -sMAX_WEBGL_VERSION=2 + endif + # Add resources building if required ifeq ($(BUILD_WEB_RESOURCES),TRUE) LDFLAGS += --preload-file $(BUILD_WEB_RESOURCES_PATH) @@ -491,6 +495,7 @@ endif # Define source code object files required #------------------------------------------------------------------------------------------------ +#EXAMPLES_LIST_START CORE = \ core/core_2d_camera \ core/core_2d_camera_mouse_zoom \ @@ -534,6 +539,8 @@ SHAPES = \ shapes/shapes_bouncing_ball \ shapes/shapes_collision_area \ shapes/shapes_colors_palette \ + shapes/shapes_digital_clock \ + shapes/shapes_double_pendulum \ shapes/shapes_draw_circle_sector \ shapes/shapes_draw_rectangle_rounded \ shapes/shapes_draw_ring \ @@ -547,9 +554,7 @@ SHAPES = \ shapes/shapes_rectangle_advanced \ shapes/shapes_rectangle_scaling \ shapes/shapes_splines_drawing \ - shapes/shapes_top_down_lights \ - shapes/shapes_digital_clock \ - shapes/shapes_double_pendulum + shapes/shapes_top_down_lights TEXTURES = \ textures/textures_background_scrolling \ @@ -644,9 +649,9 @@ SHADERS = \ shaders/shaders_texture_outline \ shaders/shaders_texture_tiling \ shaders/shaders_texture_waves \ + shaders/shaders_vertex_displacement \ shaders/shaders_view_depth \ - shaders/shaders_write_depth \ - shaders/shaders_vertex_displacement + shaders/shaders_write_depth AUDIO = \ audio/audio_mixed_processor \ @@ -663,18 +668,16 @@ OTHERS = \ others/embedded_files_loading \ others/raylib_opengl_interop \ others/raymath_vector_angle \ - others/rlgl_compute_shader - -ifeq ($(TARGET_PLATFORM), PLATFORM_DESKTOP_GFLW) - OTHERS += others/rlgl_standalone -endif + others/rlgl_compute_shader \ + others/rlgl_standalone +#EXAMPLES_LIST_END CURRENT_MAKEFILE = $(lastword $(MAKEFILE_LIST)) # Define processes to execute #------------------------------------------------------------------------------------------------ # Default target entry -all: $(CORE) $(SHAPES) $(TEXT) $(TEXTURES) $(MODELS) $(SHADERS) $(AUDIO) $(OTHERS) +all: $(CORE) $(SHAPES) $(TEXT) $(TEXTURES) $(MODELS) $(SHADERS) $(AUDIO) core: $(CORE) shapes: $(SHAPES) @@ -683,7 +686,7 @@ text: $(TEXT) models: $(MODELS) shaders: $(SHADERS) audio: $(AUDIO) -others: $(OTHERS) + # Generic compilation pattern # NOTE: Examples must be ready for Android compilation! diff --git a/examples/Makefile.Web b/examples/Makefile.Web index ee5564599..c0969dfeb 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -1,6 +1,34 @@ #************************************************************************************************** # -# raylib makefile for Web platform +# raylib makefile for multiple platforms +# +# This file supports building raylib examples for the following platforms: +# +# > PLATFORM_DESKTOP +# - Defaults to PLATFORM_DESKTOP_GLFW +# > PLATFORM_DESKTOP_GFLW (GLFW backend): +# - Windows (Win32, Win64) +# - Linux (X11/Wayland desktop mode) +# - macOS/OSX (x64, arm64) +# - FreeBSD, OpenBSD, NetBSD, DragonFly (X11 desktop) +# > PLATFORM_DESKTOP_SDL (SDL backend): +# - Windows (Win32, Win64) +# - Linux (X11/Wayland desktop mode) +# - Others (not tested) +# > PLATFORM_DESKTOP_RGFW (RGFW backend): +# - Windows (Win32, Win64) +# - Linux (X11 desktop mode) +# - macOS/OSX (x64, arm64 (not tested)) +# - Others (not tested) +# > PLATFORM_WEB_RGFW: +# - HTML5 (WebAssembly) +# > PLATFORM_WEB: +# - HTML5 (WebAssembly) +# > PLATFORM_DRM: +# - Raspberry Pi 0-5 (DRM/KMS) +# - Linux DRM subsystem (KMS mode) +# > PLATFORM_ANDROID: +# - Android (ARM, ARM64) # # Copyright (c) 2013-2025 Ramon Santamaria (@raysan5) # @@ -25,9 +53,20 @@ # Define required environment variables #------------------------------------------------------------------------------------------------ -# Define target platform: PLATFORM_DESKTOP, PLATFORM_DRM, PLATFORM_ANDROID, PLATFORM_WEB +# Define target platform: PLATFORM_DESKTOP, PLATFORM_DESKTOP_SDL, PLATFORM_DRM, PLATFORM_ANDROID, PLATFORM_WEB, PLATFORM_WEB_RGFW PLATFORM ?= PLATFORM_WEB +ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_DESKTOP_GLFW PLATFORM_DESKTOP_SDL PLATFORM_DESKTOP_RGFW)) + TARGET_PLATFORM := $(PLATFORM) + override PLATFORM = PLATFORM_DESKTOP +else + ifeq ($(PLATFORM), PLATFORM_DESKTOP) + TARGET_PLATFORM = PLATFORM_DESKTOP_GLFW + else + TARGET_PLATFORM = $(PLATFORM) + endif +endif + # Define required raylib variables PROJECT_NAME ?= raylib_examples RAYLIB_VERSION ?= 5.5.0 @@ -51,6 +90,12 @@ BUILD_MODE ?= RELEASE # Use external GLFW library instead of rglfw module USE_EXTERNAL_GLFW ?= FALSE +# PLATFORM_DESKTOP_SDL: It requires SDL library to be provided externally +# WARNING: Library is not included in raylib, it MUST be configured by users +SDL_INCLUDE_PATH ?= $(RAYLIB_SRC_PATH)/external/SDL2/include +SDL_LIBRARY_PATH ?= $(RAYLIB_SRC_PATH)/external/SDL2/lib +SDL_LIBRARIES ?= -lSDL2 -lSDL2main + # Use Wayland display server protocol on Linux desktop (by default it uses X11 windowing system) # NOTE: This variable is only used for PLATFORM_OS: LINUX USE_WAYLAND_DISPLAY ?= FALSE @@ -59,13 +104,14 @@ USE_WAYLAND_DISPLAY ?= FALSE BUILD_WEB_ASYNCIFY ?= TRUE BUILD_WEB_SHELL ?= $(RAYLIB_PATH)/src/shell.html BUILD_WEB_HEAP_SIZE ?= 134217728 - +BUILD_WEB_RESOURCES ?= TRUE +BUILD_WEB_RESOURCES_PATH ?= $(dir $<)resources@resources # Use WebGL2 backend (OpenGL 3.0) # WARNING: Requires raylib compiled with GRAPHICS_API_OPENGL_ES3 -USE_WEBGL2 ?= FALSE +BUILD_WEB_WEBGL2 ?= FALSE -# Determine PLATFORM_OS in case PLATFORM_DESKTOP or PLATFORM_WEB selected -ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_DESKTOP PLATFORM_WEB PLATFORM_WEB_RGFW)) +# Determine PLATFORM_OS when required +ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW PLATFORM_DESKTOP_SDL PLATFORM_DESKTOP_RGFW PLATFORM_WEB PLATFORM_WEB_RGFW)) # No uname.exe on MinGW!, but OS=Windows_NT on Windows! # ifeq ($(UNAME),Msys) -> Windows ifeq ($(OS),Windows_NT) @@ -92,7 +138,7 @@ ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_DESKTOP PLATFORM_WEB PLATFORM_WE endif endif endif -ifeq ($(PLATFORM),PLATFORM_DRM) +ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) UNAMEOS = $(shell uname) ifeq ($(UNAMEOS),Linux) PLATFORM_OS = LINUX @@ -101,7 +147,7 @@ endif # RAYLIB_PATH adjustment for LINUX platform # TODO: Do we really need this? -ifeq ($(PLATFORM),PLATFORM_DESKTOP) +ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) ifeq ($(PLATFORM_OS),LINUX) RAYLIB_PREFIX ?= .. RAYLIB_PATH = $(realpath $(RAYLIB_PREFIX)) @@ -109,14 +155,14 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) endif # Default path for raylib on Raspberry Pi -ifeq ($(PLATFORM),PLATFORM_DRM) +ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) RAYLIB_PATH ?= /home/pi/raylib endif # Define raylib release directory for compiled library RAYLIB_RELEASE_PATH ?= $(RAYLIB_PATH)/src -ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) +ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) ifeq ($(PLATFORM_OS),WINDOWS) # Emscripten required variables EMSDK_PATH ?= C:/raylib/emsdk @@ -132,7 +178,7 @@ endif #------------------------------------------------------------------------------------------------ CC = gcc -ifeq ($(PLATFORM),PLATFORM_DESKTOP) +ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) ifeq ($(PLATFORM_OS),OSX) # OSX default compiler CC = clang @@ -142,7 +188,7 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) CC = clang endif endif -ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) +ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) # HTML5 emscripten compiler # WARNING: To compile to HTML5, code must be redesigned # to use emscripten.h and emscripten_set_main_loop() @@ -153,15 +199,15 @@ endif #------------------------------------------------------------------------------------------------ MAKE ?= make -ifeq ($(PLATFORM),PLATFORM_DESKTOP) +ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) ifeq ($(PLATFORM_OS),WINDOWS) MAKE = mingw32-make endif endif -ifeq ($(PLATFORM),PLATFORM_ANDROID) +ifeq ($(TARGET_PLATFORM),PLATFORM_ANDROID) MAKE = mingw32-make endif -ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) +ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) ifeq ($(OS),Windows_NT) MAKE = mingw32-make else @@ -190,14 +236,14 @@ CFLAGS = -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces -Wunused-result ifeq ($(BUILD_MODE),DEBUG) CFLAGS += -g -D_DEBUG else - ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) + ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) ifeq ($(BUILD_WEB_ASYNCIFY),TRUE) CFLAGS += -O3 else CFLAGS += -Os endif else - CFLAGS += -s -O2 + CFLAGS += -O2 endif endif @@ -207,7 +253,7 @@ endif # -Wstrict-prototypes warn if a function is declared or defined without specifying the argument types # -Werror=implicit-function-declaration catch function calls without prior declaration #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes -ifeq ($(PLATFORM),PLATFORM_DESKTOP) +ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) ifeq ($(PLATFORM_OS),LINUX) ifeq ($(RAYLIB_LIBTYPE),STATIC) CFLAGS += -D_DEFAULT_SOURCE @@ -218,25 +264,29 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) endif endif endif -ifeq ($(PLATFORM),PLATFORM_DRM) +ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) CFLAGS += -std=gnu99 -DEGL_NO_X11 endif # Define include paths for required headers: INCLUDE_PATHS # NOTE: Some external/extras libraries could be required (stb, easings...) #------------------------------------------------------------------------------------------------ -INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external +INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external $(EXTRA_INCLUDE_PATHS) # Define additional directories containing required header files -ifeq ($(PLATFORM),PLATFORM_DESKTOP) +ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) ifeq ($(PLATFORM_OS),BSD) - INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH) + INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH) -I/usr/pkg/include -I/usr/X11R7/include endif ifeq ($(PLATFORM_OS),LINUX) INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH) endif endif -ifeq ($(PLATFORM),PLATFORM_DRM) +ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_SDL) + INCLUDE_PATHS += -I$(SDL_INCLUDE_PATH) +endif +ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) + INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH) INCLUDE_PATHS += -I/usr/include/libdrm endif @@ -244,7 +294,7 @@ endif #------------------------------------------------------------------------------------------------ LDFLAGS = -L. -L$(RAYLIB_RELEASE_PATH) -L$(RAYLIB_PATH)/src -ifeq ($(PLATFORM),PLATFORM_DESKTOP) +ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) ifeq ($(PLATFORM_OS),WINDOWS) # NOTE: The resource .rc file contains windows executable icon and properties LDFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data @@ -260,7 +310,18 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) LDFLAGS += -Lsrc -L$(RAYLIB_LIB_PATH) endif endif -ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) +ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_SDL) + ifeq ($(PLATFORM_OS),WINDOWS) + # NOTE: The resource .rc file contains windows executable icon and properties + LDFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data + # -Wl,--subsystem,windows hides the console window + ifeq ($(BUILD_MODE), RELEASE) + LDFLAGS += -Wl,--subsystem,windows + endif + endif + LDFLAGS += -L$(SDL_LIBRARY_PATH) +endif +ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) # -Os # size optimization # -O2 # optimization level 2, if used, also set --memory-init-file 0 # -sUSE_GLFW=3 # Use glfw3 library (context/input management) @@ -277,10 +338,10 @@ ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) # --preload-file resources # specify a resources folder for data compilation # --source-map-base # allow debugging in browser with source map # --shell-file shell.html # define a custom shell .html and output extension - LDFLAGS += -sTOTAL_MEMORY=$(BUILD_WEB_HEAP_SIZE) -sFORCE_FILESYSTEM=1 -sEXPORTED_RUNTIME_METHODS=ccall -sMINIFY_HTML=0 + LDFLAGS += -sTOTAL_MEMORY=$(BUILD_WEB_HEAP_SIZE) -sFORCE_FILESYSTEM=1 -sEXPORTED_RUNTIME_METHODS=ccall -sMINIFY_HTML=0 # Using GLFW3 library (instead of RGFW) - ifeq ($(PLATFORM),PLATFORM_WEB) + ifeq ($(TARGET_PLATFORM),PLATFORM_WEB) LDFLAGS += -sUSE_GLFW=3 endif @@ -291,9 +352,14 @@ ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) # NOTE: Flags required for WebGL 2.0 (OpenGL ES 3.0) # WARNING: Requires raylib compiled with GRAPHICS_API_OPENGL_ES3 - ifeq ($(USE_WEBGL2),TRUE) + ifeq ($(BUILD_WEB_WEBGL2),TRUE) LDFLAGS += -sMIN_WEBGL_VERSION=2 -sMAX_WEBGL_VERSION=2 endif + + # Add resources building if required + ifeq ($(BUILD_WEB_RESOURCES),TRUE) + LDFLAGS += --preload-file $(BUILD_WEB_RESOURCES_PATH) + endif # Add debug mode flags if required ifeq ($(BUILD_MODE),DEBUG) @@ -314,7 +380,7 @@ endif # Define libraries required on linking: LDLIBS # NOTE: To link libraries (lib.so or lib.a), use -l #------------------------------------------------------------------------------------------------ -ifeq ($(PLATFORM),PLATFORM_DESKTOP) +ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) ifeq ($(PLATFORM_OS),WINDOWS) # Libraries for Windows desktop compilation # NOTE: WinMM library required to set high-res timer resolution @@ -361,18 +427,75 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) LDLIBS += -lglfw endif endif -ifeq ($(PLATFORM),PLATFORM_DRM) +ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_SDL) + ifeq ($(PLATFORM_OS),WINDOWS) + # Libraries for Windows desktop compilation + LDLIBS = -lraylib $(SDL_LIBRARIES) -lopengl32 -lgdi32 + endif + ifeq ($(PLATFORM_OS),LINUX) + # Libraries for Debian GNU/Linux desktop compiling + # NOTE: Required packages: libegl1-mesa-dev + LDLIBS = -lraylib $(SDL_LIBRARIES) -lGL -lm -lpthread -ldl -lrt + + # On X11 requires also below libraries + LDLIBS += -lX11 + # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them + #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor + + # On Wayland windowing system, additional libraries requires + ifeq ($(USE_WAYLAND_DISPLAY),TRUE) + LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon + endif + # Explicit link to libc + ifeq ($(RAYLIB_LIBTYPE),SHARED) + LDLIBS += -lc + endif + + # NOTE: On ARM 32bit arch, miniaudio requires atomics library + LDLIBS += -latomic + endif +endif +ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_RGFW) + ifeq ($(PLATFORM_OS),WINDOWS) + # Libraries for Windows desktop compilation + LDFLAGS += -L..\src + LDLIBS = -lraylib -lgdi32 -lwinmm -lopengl32 + endif + ifeq ($(PLATFORM_OS),LINUX) + # Libraries for Debian GNU/Linux desktop compipling + # NOTE: Required packages: libegl1-mesa-dev + LDFLAGS += -L../src + LDLIBS = -lraylib -lGL -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor -lm -lpthread -ldl -lrt + + # Explicit link to libc + ifeq ($(RAYLIB_LIBTYPE),SHARED) + LDLIBS += -lc + endif + + # NOTE: On ARM 32bit arch, miniaudio requires atomics library + LDLIBS += -latomic + endif + ifeq ($(PLATFORM_OS),OSX) + # Libraries for Debian GNU/Linux desktop compiling + # NOTE: Required packages: libegl1-mesa-dev + LDFLAGS += -L../src + LDLIBS = -lraylib -lm + LDLIBS += -framework Foundation -framework AppKit -framework IOKit -framework OpenGL -framework CoreVideo + endif +endif +ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) # Libraries for DRM compiling # NOTE: Required packages: libasound2-dev (ALSA) LDLIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lgbm -ldrm -ldl -latomic endif -ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) +ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) # Libraries for web (HTML5) compiling LDLIBS = $(RAYLIB_RELEASE_PATH)/libraylib.web.a endif # Define source code object files required #------------------------------------------------------------------------------------------------ +#EXAMPLES_LIST_START CORE = \ core/core_2d_camera \ core/core_2d_camera_mouse_zoom \ @@ -416,6 +539,8 @@ SHAPES = \ shapes/shapes_bouncing_ball \ shapes/shapes_collision_area \ shapes/shapes_colors_palette \ + shapes/shapes_digital_clock \ + shapes/shapes_double_pendulum \ shapes/shapes_draw_circle_sector \ shapes/shapes_draw_rectangle_rounded \ shapes/shapes_draw_ring \ @@ -429,9 +554,7 @@ SHAPES = \ shapes/shapes_rectangle_advanced \ shapes/shapes_rectangle_scaling \ shapes/shapes_splines_drawing \ - shapes/shapes_top_down_lights \ - shapes/shapes_digital_clock \ - shapes/shapes_double_pendulum + shapes/shapes_top_down_lights TEXTURES = \ textures/textures_background_scrolling \ @@ -547,6 +670,7 @@ OTHERS = \ others/raymath_vector_angle \ others/rlgl_compute_shader \ others/rlgl_standalone +#EXAMPLES_LIST_END CURRENT_MAKEFILE = $(lastword $(MAKEFILE_LIST)) @@ -676,7 +800,6 @@ core/core_window_should_close: core/core_window_should_close.c core/core_world_screen: core/core_world_screen.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - # Compile SHAPES examples shapes/shapes_basic_shapes: shapes/shapes_basic_shapes.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) @@ -735,7 +858,6 @@ shapes/shapes_rectangle_advanced: shapes/shapes_rectangle_advanced.c shapes/shapes_double_pendulum: shapes/shapes_double_pendulum.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - # Compile TEXTURES examples textures/textures_background_scrolling: textures/textures_background_scrolling.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ @@ -846,7 +968,6 @@ textures/textures_to_image: textures/textures_to_image.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file textures/resources/raylib_logo.png@resources/raylib_logo.png - # Compile TEXT examples text/text_codepoints_loading: text/text_codepoints_loading.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ @@ -1014,7 +1135,6 @@ models/models_yaw_pitch_roll: models/models_yaw_pitch_roll.c --preload-file models/resources/models/obj/plane.obj@resources/models/obj/plane.obj \ --preload-file models/resources/models/obj/plane_diffuse.png@resources/models/obj/plane_diffuse.png - # Compile SHADER examples shaders/shaders_basic_lighting: shaders/shaders_basic_lighting.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ @@ -1172,7 +1292,6 @@ shaders/shaders_vertex_displacement: shaders/shaders_vertex_displacement.c --preload-file shaders/resources/shaders/glsl100/vertex_displacement.fs@resources/shaders/glsl100/vertex_displacement.fs \ --preload-file shaders/resources/shaders/glsl330/vertex_displacement.fs@resources/shaders/glsl330/vertex_displacement.fs - # Compile AUDIO examples audio/audio_mixed_processor: audio/audio_mixed_processor.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ @@ -1203,7 +1322,6 @@ audio/audio_stream_effects: audio/audio_stream_effects.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ --preload-file audio/resources/country.mp3@resources/country.mp3 - # Compile OTHERS examples others/easings_testbed: others/easings_testbed.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) From 10079e4e65fadcea33aa10d1b701b690c838994d Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 1 Aug 2025 18:58:24 +0200 Subject: [PATCH 092/328] Reviewed minor formating issues --- examples/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/README.md b/examples/README.md index e075facbe..666fda04b 100644 --- a/examples/README.md +++ b/examples/README.md @@ -216,12 +216,12 @@ Examples using raylib audio functionality, including sound/music loading and pla | 148 | [audio_sound_loading](audio/audio_sound_loading.c) | audio_sound_loading | ⭐️☆☆☆ | 1.1 | 3.5 | [Ray](https://github.com/raysan5) | | 149 | [audio_mixed_processor](audio/audio_mixed_processor.c) | audio_mixed_processor | ⭐️⭐️⭐️⭐️ | 4.2 | 4.2 | [hkc](https://github.com/hatkidchan) | | 150 | [audio_stream_effects](audio/audio_stream_effects.c) | audio_stream_effects | ⭐️⭐️⭐️⭐️ | 4.2 | 5.0 | [Ray](https://github.com/raysan5) | -| 151 [audio_sound_multi](audio/audio_sound_multi.c) | audio_sound_multi | ⭐️⭐️☆☆ | 4.6 | 4.6 | [Jeffery Myers](https://github.com/JeffM2501) | +| 151 | [audio_sound_multi](audio/audio_sound_multi.c) | audio_sound_multi | ⭐️⭐️☆☆ | 4.6 | 4.6 | [Jeffery Myers](https://github.com/JeffM2501) | | 152 | [audio_sound_positioning](audio/audio_sound_positioning.c) | audio_sound_positioning | ⭐️⭐️☆☆ | 5.5 | 5.5 | [Le Juez Victor](https://github.com/Bigfoot71) | ### category: others -Ex151amples showing raylib misc functionality that does not fit in other categories, like standalone modules usage or examples integrating external libraries. +Examples showing raylib misc functionality that does not fit in other categories, like standalone modules usage or examples integrating external libraries. | ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | |----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| From 234f4b2b10f3e405c591a88035f86a4cbae993cd Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 1 Aug 2025 19:38:02 +0200 Subject: [PATCH 093/328] Update raylib.h --- src/raylib.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/raylib.h b/src/raylib.h index 0ea0df316..6b8b4acf3 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -1514,7 +1514,7 @@ RLAPI const char *TextSubtext(const char *text, int position, int length); RLAPI char *TextReplace(const char *text, const char *replace, const char *by); // Replace text string (WARNING: memory must be freed!) RLAPI char *TextInsert(const char *text, const char *insert, int position); // Insert text in a position (WARNING: memory must be freed!) RLAPI char *TextJoin(char **textList, int count, const char *delimiter); // Join text strings with delimiter -RLAPI char **TextSplit(const char *text, char delimiter, int *count); // Split text into multiple strings +RLAPI char **TextSplit(const char *text, char delimiter, int *count); // Split text into multiple strings, using MAX_TEXTSPLIT_COUNT static strings RLAPI void TextAppend(char *text, const char *append, int *position); // Append text at specific position and move cursor! RLAPI int TextFindIndex(const char *text, const char *find); // Find first text occurrence within a string RLAPI char *TextToUpper(const char *text); // Get upper case version of provided string From 9d07be6bded1912f098d94b7741a8d4cb68fc082 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 1 Aug 2025 17:38:20 +0000 Subject: [PATCH 094/328] Update raylib_api.* by CI --- parser/output/raylib_api.json | 2 +- parser/output/raylib_api.lua | 2 +- parser/output/raylib_api.txt | 2 +- parser/output/raylib_api.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/parser/output/raylib_api.json b/parser/output/raylib_api.json index 9d85c3135..cf32ce524 100644 --- a/parser/output/raylib_api.json +++ b/parser/output/raylib_api.json @@ -9739,7 +9739,7 @@ }, { "name": "TextSplit", - "description": "Split text into multiple strings", + "description": "Split text into multiple strings, using MAX_TEXTSPLIT_COUNT static strings", "returnType": "char **", "params": [ { diff --git a/parser/output/raylib_api.lua b/parser/output/raylib_api.lua index 985a62c8b..cb6cf9db3 100644 --- a/parser/output/raylib_api.lua +++ b/parser/output/raylib_api.lua @@ -6922,7 +6922,7 @@ return { }, { name = "TextSplit", - description = "Split text into multiple strings", + description = "Split text into multiple strings, using MAX_TEXTSPLIT_COUNT static strings", returnType = "char **", params = { {type = "const char *", name = "text"}, diff --git a/parser/output/raylib_api.txt b/parser/output/raylib_api.txt index 2f9268cbf..9f8ab8ef5 100644 --- a/parser/output/raylib_api.txt +++ b/parser/output/raylib_api.txt @@ -3728,7 +3728,7 @@ Function 432: TextJoin() (3 input parameters) Function 433: TextSplit() (3 input parameters) Name: TextSplit Return type: char ** - Description: Split text into multiple strings + Description: Split text into multiple strings, using MAX_TEXTSPLIT_COUNT static strings Param[1]: text (type: const char *) Param[2]: delimiter (type: char) Param[3]: count (type: int *) diff --git a/parser/output/raylib_api.xml b/parser/output/raylib_api.xml index 8125824e7..f3ebb74be 100644 --- a/parser/output/raylib_api.xml +++ b/parser/output/raylib_api.xml @@ -2470,7 +2470,7 @@ - + From a872de82edf8f070810b3157fe87e8ed154bf17a Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 1 Aug 2025 19:39:30 +0200 Subject: [PATCH 095/328] Create `examples_list`, to be used by `rexm` or other tools for reference NOTE: This file should be the source of truth for raylib examples collection, everything will be generated using this file as primary reference. --- examples/examples_list.txt | 168 +++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 examples/examples_list.txt diff --git a/examples/examples_list.txt b/examples/examples_list.txt new file mode 100644 index 000000000..f25097a56 --- /dev/null +++ b/examples/examples_list.txt @@ -0,0 +1,168 @@ +# +# raylib examples list used to generate/update collection +# examples must be provided as: ;;;;;""; +# +# This list is used as the main reference by [rexm] tool for examples collection validation and management +# New examples must be added to this list and any possible rename must be made on this list first +# +# WARNING: List is not ordered by example name but by the display order on web +# +core;core_basic_window;⭐️☆☆☆;1.0;1.0;"Ray";@raysan5 +core;core_input_keys;⭐️☆☆☆;1.0;1.0;"Ray";@raysan5 +core;core_input_mouse;⭐️☆☆☆;1.0;5.5;"Ray";@raysan5 +core;core_input_mouse_wheel;⭐️☆☆☆;1.1;1.3;"Ray";@raysan5 +core;core_input_gamepad;⭐️☆☆☆;1.1;4.2;"Ray";@raysan5 +core;core_input_multitouch;⭐️☆☆☆;2.1;2.5;"Berni";@Berni8k +core;core_input_gestures;⭐️⭐️☆☆;1.4;4.2;"Ray";@raysan5 +core;core_input_virtual_controls;⭐️⭐️☆☆;5.0;5.0;"oblerion";@oblerion +core;core_2d_camera;⭐️⭐️☆☆;1.5;3.0;"Ray";@raysan5 +core;core_2d_camera_mouse_zoom;⭐️⭐️☆☆;4.2;4.2;"Jeffery Myers";@JeffM2501 +core;core_2d_camera_platformer;⭐️⭐️⭐️☆;2.5;3.0;"arvyy";@arvyy +core;core_2d_camera_split_screen;⭐️⭐️⭐️⭐️;4.5;4.5;"Gabriel dos Santos Sanches";@gabrielssanches +core;core_3d_camera_mode;⭐️☆☆☆;1.0;1.0;"Ray";@raysan5 +core;core_3d_camera_free;⭐️☆☆☆;1.3;1.3;"Ray";@raysan5 +core;core_3d_camera_first_person;⭐️⭐️☆☆;1.3;1.3;"Ray";@raysan5 +core;core_3d_camera_split_screen;⭐️⭐️⭐️☆;3.7;4.0;"Jeffery Myers";@JeffM2501 +core;core_3d_picking;⭐️⭐️☆☆;1.3;4.0;"Ray";@raysan5 +core;core_world_screen;⭐️⭐️☆☆;1.3;1.4;"Ray";@raysan5 +core;core_custom_logging;⭐️⭐️⭐️☆;2.5;2.5;"Pablo Marcos Oltra";@pamarcos +core;core_window_flags;⭐️⭐️⭐️☆;3.5;3.5;"Ray";@raysan5 +core;core_window_letterbox;⭐️⭐️☆☆;2.5;4.0;"Anata";@anatagawa +core;core_window_should_close;⭐️☆☆☆;4.2;4.2;"Ray";@raysan5 +core;core_drop_files;⭐️⭐️☆☆;1.3;4.2;"Ray";@raysan5 +core;core_random_values;⭐️☆☆☆;1.1;1.1;"Ray";@raysan5 +core;core_storage_values;⭐️⭐️☆☆;1.4;4.2;"Ray";@raysan5 +core;core_vr_simulator;⭐️⭐️⭐️☆;2.5;4.0;"Ray";@raysan5 +core;core_loading_thread;⭐️⭐️⭐️☆;2.5;3.0;"Ray";@raysan5 +core;core_scissor_test;⭐️☆☆☆;2.5;3.0;"Chris Dill";@MysteriousSpace +core;core_basic_screen_manager;⭐️☆☆☆;4.0;4.0;"Ray";@raysan5 +core;core_custom_frame_control;⭐️⭐️⭐️⭐️;4.0;4.0;"Ray";@raysan5 +core;core_smooth_pixelperfect;⭐️⭐️⭐️☆;3.7;4.0;"Giancamillo Alessandroni";@NotManyIdeasDev +core;core_random_sequence;⭐️☆☆☆;5.0;5.0;"Dalton Overmyer";@REDl3east +core;core_basic_window_web;⭐️☆☆☆;1.3;1.3;"Ray";@raysan5 +core;core_input_gestures_web;⭐️⭐️☆☆;4.6-dev;4.6-dev;"ubkp";@ubkp +core;core_automation_events;⭐️⭐️⭐️☆;5.0;5.0;"Ray";@raysan5 +core;core_high_dpi;⭐️☆☆☆;5.0;5.0;"Jonathan Marler";@marler8997 +shapes;shapes_basic_shapes;⭐️☆☆☆;1.0;4.2;"Ray";@raysan5 +shapes;shapes_bouncing_ball;⭐️☆☆☆;2.5;2.5;"Ray";@raysan5 +shapes;shapes_colors_palette;⭐️⭐️☆☆;1.0;2.5;"Ray";@raysan5 +shapes;shapes_logo_raylib;⭐️☆☆☆;1.0;1.0;"Ray";@raysan5 +shapes;shapes_logo_raylib_anim;⭐️⭐️☆☆;2.5;4.0;"Ray";@raysan5 +shapes;shapes_rectangle_scaling;⭐️⭐️☆☆;2.5;2.5;"Vlad Adrian";@demizdor +shapes;shapes_lines_bezier;⭐️☆☆☆;1.7;1.7;"Ray";@raysan5 +shapes;shapes_collision_area;⭐️⭐️☆☆;2.5;2.5;"Ray";@raysan5 +shapes;shapes_following_eyes;⭐️⭐️☆☆;2.5;2.5;"Ray";@raysan5 +shapes;shapes_easings_ball_anim;⭐️⭐️☆☆;2.5;2.5;"Ray";@raysan5 +shapes;shapes_easings_box_anim;⭐️⭐️☆☆;2.5;2.5;"Ray";@raysan5 +shapes;shapes_easings_rectangle_array;⭐️⭐️⭐️☆;2.0;2.5;"Ray";@raysan5 +shapes;shapes_draw_ring;⭐️⭐️⭐️☆;2.5;2.5;"Vlad Adrian";@demizdor +shapes;shapes_draw_circle_sector;⭐️⭐️⭐️☆;2.5;2.5;"Vlad Adrian";@demizdor +shapes;shapes_draw_rectangle_rounded;⭐️⭐️⭐️☆;2.5;2.5;"Vlad Adrian";@demizdor +shapes;shapes_top_down_lights;⭐️⭐️⭐️⭐️;4.2;4.2;"Jeffery Myers";@JeffM2501 +shapes;shapes_rectangle_advanced;⭐️⭐️⭐️⭐️;5.5;5.5;"Everton Jr.";@evertonse +shapes;shapes_splines_drawing;⭐️⭐️⭐️☆;5.0;5.0;"Ray";@raysan5 +shapes;shapes_digital_clock;⭐️⭐️☆☆;5.5;5.5;"Hamza RAHAL";@rhmz-rhl +shapes;shapes_double_pendulum;⭐️⭐️☆☆;5.5;5.5;"JoeCheong";@Joecheong2006 +textures;textures_logo_raylib;⭐️☆☆☆;1.0;1.0;"Ray";@raysan5 +textures;textures_srcrec_dstrec;⭐️⭐️⭐️☆;1.3;1.3;"Ray";@raysan5 +textures;textures_image_drawing;⭐️⭐️☆☆;1.4;1.4;"Ray";@raysan5 +textures;textures_image_generation;⭐️⭐️☆☆;1.8;1.8;"Wilhem Barbier";@nounoursheureux +textures;textures_image_loading;⭐️☆☆☆;1.3;1.3;"Ray";@raysan5 +textures;textures_image_processing;⭐️⭐️⭐️☆;1.4;3.5;"Ray";@raysan5 +textures;textures_image_text;⭐️⭐️☆☆;1.8;4.0;"Ray";@raysan5 +textures;textures_to_image;⭐️☆☆☆;1.3;4.0;"Ray";@raysan5 +textures;textures_raw_data;⭐️⭐️⭐️☆;1.3;3.5;"Ray";@raysan5 +textures;textures_particles_blending;⭐️☆☆☆;1.7;3.5;"Ray";@raysan5 +textures;textures_npatch_drawing;⭐️⭐️⭐️☆;2.0;2.5;"Jorge A. Gomes";@overdev +textures;textures_background_scrolling;⭐️☆☆☆;2.0;2.5;"Ray";@raysan5 +textures;textures_sprite_anim;⭐️⭐️☆☆;1.3;1.3;"Ray";@raysan5 +textures;textures_sprite_button;⭐️⭐️☆☆;2.5;2.5;"Ray";@raysan5 +textures;textures_sprite_explosion;⭐️⭐️☆☆;2.5;3.5;"Ray";@raysan5 +textures;textures_bunnymark;⭐️⭐️⭐️☆;1.6;2.5;"Ray";@raysan5 +textures;textures_mouse_painting;⭐️⭐️⭐️☆;3.0;3.0;"Chris Dill";@MysteriousSpace +textures;textures_blend_modes;⭐️☆☆☆;3.5;3.5;"Karlo Licudine";@accidentalrebel +textures;textures_draw_tiled;⭐️⭐️⭐️☆;3.0;4.2;"Vlad Adrian";@demizdor +textures;textures_polygon;⭐️☆☆☆;3.7;3.7;"Chris Camacho";@chriscamacho +textures;textures_fog_of_war;⭐️⭐️⭐️☆;4.2;4.2;"Ray";@raysan5 +textures;textures_gif_player;⭐️⭐️⭐️☆;4.2;4.2;"Ray";@raysan5 +textures;textures_image_kernel;⭐️⭐️⭐️⭐️;1.3;1.3;"Karim Salem";@kimo-s +textures;textures_image_channel;⭐️⭐️☆☆;5.1-dev;5.1-dev;"Bruno Cabral";@brccabral +textures;textures_image_rotate;⭐️⭐️☆☆;1.0;1.0;"Ray";@raysan5 +textures;textures_textured_curve;⭐️⭐️⭐️☆;4.5;4.5;"Jeffery Myers";@JeffM2501 +text;text_raylib_fonts;⭐️☆☆☆;1.7;3.7;"Ray";@raysan5 +text;text_font_spritefont;⭐️☆☆☆;1.0;1.0;"Ray";@raysan5 +text;text_font_filters;⭐️⭐️☆☆;1.3;4.2;"Ray";@raysan5 +text;text_font_loading;⭐️☆☆☆;1.4;3.0;"Ray";@raysan5 +text;text_font_sdf;⭐️⭐️⭐️☆;1.3;4.0;"Ray";@raysan5 +text;text_format_text;⭐️☆☆☆;1.1;3.0;"Ray";@raysan5 +text;text_input_box;⭐️⭐️☆☆;1.7;3.5;"Ray";@raysan5 +text;text_writing_anim;⭐️⭐️☆☆;1.4;1.4;"Ray";@raysan5 +text;text_rectangle_bounds;⭐️⭐️⭐️⭐️;2.5;4.0;"Vlad Adrian";@demizdor +text;text_unicode;⭐️⭐️⭐️⭐️;2.5;4.0;"Vlad Adrian";@demizdor +text;text_draw_3d;⭐️⭐️⭐️⭐️;3.5;4.0;"Vlad Adrian";@demizdor +text;text_codepoints_loading;⭐️⭐️⭐️☆;4.2;4.2;"Ray";@raysan5 +models;models_animation;⭐️⭐️☆☆;2.5;3.5;"Culacant";@culacant +models;models_billboard;⭐️⭐️⭐️☆;1.3;3.5;"Ray";@raysan5 +models;models_box_collisions;⭐️☆☆☆;1.3;3.5;"Ray";@raysan5 +models;models_cubicmap;⭐️⭐️☆☆;1.8;3.5;"Ray";@raysan5 +models;models_first_person_maze;⭐️⭐️☆☆;2.5;3.5;"Ray";@raysan5 +models;models_geometric_shapes;⭐️☆☆☆;1.0;3.5;"Ray";@raysan5 +models;models_mesh_generation;⭐️⭐️☆☆;1.8;4.0;"Ray";@raysan5 +models;models_mesh_picking;⭐️⭐️⭐️☆;1.7;4.0;"Joel Davis";@joeld42 +models;models_loading;⭐️☆☆☆;2.0;4.2;"Ray";@raysan5 +models;models_loading_gltf;⭐️☆☆☆;3.7;4.2;"Ray";@raysan5 +models;models_loading_vox;⭐️☆☆☆;4.0;4.0;"Johann Nadalutti";@procfxgen +models;models_loading_m3d;⭐️⭐️☆☆;4.5;4.5;"bzt";@model3d +models;models_orthographic_projection;⭐️☆☆☆;2.0;3.7;"Max Danielsson";@autious +models;models_point_rendering;⭐️⭐️⭐️☆;5.0;5.0;"Reese Gallagher";@satchelfrost +models;models_rlgl_solar_system;⭐️⭐️⭐️⭐️;2.5;4.0;"Ray";@raysan5 +models;models_yaw_pitch_roll;⭐️⭐️☆☆;1.8;4.0;"Berni";@Berni8k +models;models_waving_cubes;⭐️⭐️⭐️☆;2.5;3.7;"Codecat";@codecat +models;models_heightmap;⭐️☆☆☆;1.8;3.5;"Ray";@raysan5 +models;models_skybox;⭐️⭐️☆☆;1.8;4.0;"Ray";@raysan5 +models;models_draw_cube_texture;⭐️⭐️☆☆;4.5;4.5;"Ray";@raysan5 +models;models_gpu_skinning;⭐️⭐️⭐️☆;4.5;4.5;"Daniel Holden";@orangeduck +models;models_bone_socket;⭐️⭐️⭐️⭐️;4.5;4.5;"iP";@ipzaur +models;models_tesseract_view;⭐️⭐️☆☆;5.6-dev;5.6-dev;"Timothy van der Valk";@arceryz +shaders;shaders_basic_lighting;⭐️⭐️⭐️⭐️;3.0;4.2;"Chris Camacho";@chriscamacho +shaders;shaders_model_shader;⭐️⭐️☆☆;1.3;3.7;"Ray";@raysan5 +shaders;shaders_shapes_textures;⭐️⭐️☆☆;1.7;3.7;"Ray";@raysan5 +shaders;shaders_custom_uniform;⭐️⭐️☆☆;1.3;4.0;"Ray";@raysan5 +shaders;shaders_postprocessing;⭐️⭐️⭐️☆;1.3;4.0;"Ray";@raysan5 +shaders;shaders_palette_switch;⭐️⭐️⭐️☆;2.5;3.7;"Marco Lizza";@MarcoLizza +shaders;shaders_raymarching;⭐️⭐️⭐️⭐️;2.0;4.2;"Ray";@raysan5 +shaders;shaders_texture_drawing;⭐️⭐️☆☆;2.0;3.7;"Michał Ciesielski";@ciessielski +shaders;shaders_texture_outline;⭐️⭐️⭐️☆;4.0;4.0;"Samuel Skiff";@GoldenThumbs +shaders;shaders_texture_waves;⭐️⭐️☆☆;2.5;3.7;"Anata";@anatagawa +shaders;shaders_julia_set;⭐️⭐️⭐️☆;2.5;4.0;"Josh Colclough";@joshcol9232 +shaders;shaders_eratosthenes;⭐️⭐️⭐️☆;2.5;4.0;"ProfJski";@ProfJski +shaders;shaders_fog;⭐️⭐️⭐️☆;2.5;3.7;"Chris Camacho";@chriscamacho +shaders;shaders_simple_mask;⭐️⭐️☆☆;2.5;3.7;"Chris Camacho";@chriscamacho +shaders;shaders_hot_reloading;⭐️⭐️⭐️☆;3.0;3.5;"Ray";@raysan5 +shaders;shaders_mesh_instancing;⭐️⭐️⭐️⭐️;3.7;4.2;"seanpringle";@seanpringle +shaders;shaders_multi_sample2d;⭐️⭐️☆☆;3.5;3.5;"Ray";@raysan5 +shaders;shaders_spotlight;⭐️⭐️☆☆;2.5;3.7;"Chris Camacho";@chriscamacho +shaders;shaders_deferred_render;⭐️⭐️⭐️⭐️;4.5;4.5;"Justin Andreas Lacoste";@27justin +shaders;shaders_hybrid_render;⭐️⭐️⭐️⭐️;4.2;4.2;"Buğra Alptekin Sarı";@BugraAlptekinSari +shaders;shaders_texture_tiling;⭐️⭐️☆☆;4.5;4.5;"Luis Almeida";@luis605 +shaders;shaders_shadowmap;⭐️⭐️⭐️⭐️;5.0;5.0;"TheManTheMythTheGameDev";@TheManTheMythTheGameDev +shaders;shaders_vertex_displacement;⭐️⭐️⭐️☆;5.0;4.5;"Alex ZH";@ZzzhHe +shaders;shaders_write_depth;⭐️⭐️☆☆;4.2;4.2;"Buğra Alptekin Sarı";@BugraAlptekinSari +shaders;shaders_basic_pbr;⭐️⭐️⭐️⭐️;5.0;5.1-dev;"Afan OLOVCIC";@_DevDad +shaders;shaders_lightmap;⭐️⭐️⭐️☆;4.5;4.5;"Jussi Viitala";@nullstare +shaders;shaders_rounded_rectangle;⭐️⭐️⭐️☆;5.5;5.5;"Anstro Pleuton";@anstropleuton +shaders;shaders_view_depth;⭐️⭐️⭐️☆;5.6-dev;5.6-dev;"Luís Almeida";@luis605 +audio;audio_module_playing;⭐️☆☆☆;1.5;3.5;"Ray";@raysan5 +audio;audio_music_stream;⭐️☆☆☆;1.3;4.2;"Ray";@raysan5 +audio;audio_raw_stream;⭐️⭐️⭐️☆;1.6;4.2;"Ray";@raysan5 +audio;audio_sound_loading;⭐️☆☆☆;1.1;3.5;"Ray";@raysan5 +audio;audio_mixed_processor;⭐️⭐️⭐️⭐️;4.2;4.2;"hkc";@hatkidchan +audio;audio_stream_effects;⭐️⭐️⭐️⭐️;4.2;5.0;"Ray";@raysan5 +audio;audio_sound_multi;⭐️⭐️☆☆;4.6;4.6;"Jeffery Myers";@JeffM2501 +audio;audio_sound_positioning;⭐️⭐️☆☆;5.5;5.5;"Le Juez Victor";@Bigfoot71 +others;rlgl_standalone;⭐️⭐️⭐️⭐️;1.6;4.0;"Ray";@raysan5 +others;rlgl_compute_shader;⭐️⭐️⭐️⭐️;4.0;4.0;"Teddy Astie";@tsnake41 +others;easings_testbed;⭐️⭐️⭐️☆;2.5;3.0;"Juan Miguel López";@flashback-fx +others;raylib_opengl_interop;⭐️⭐️⭐️⭐️;3.8;4.0;"Stephan Soller";@arkanis +others;embedded_files_loading;⭐️⭐️☆☆;3.0;3.5;"Kristian Holmgren";@defutura +others;raymath_vector_angle;⭐️⭐️☆☆;1.0;4.6;"Ray";@raysan5 From 947783819381ccb48caeb477b7d21e013bba16ea Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 1 Aug 2025 19:40:44 +0200 Subject: [PATCH 096/328] ADDED: Some useful functions for examples info loading, using `examples_list` --- examples/rexm.c | 294 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 240 insertions(+), 54 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index 8440188c9..6a1c27826 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -7,6 +7,7 @@ * - add * - rename * - remove +* - validate * * Files involved in the processes: * - raylib/examples//_example_name.c @@ -60,22 +61,50 @@ //---------------------------------------------------------------------------------- // Types and Structures Definition //---------------------------------------------------------------------------------- +// raylib example info struct +typedef struct { + char category[16]; + char name[64]; + char stars; + float verCreated; + float verUpdated; + char author[64]; + char authorGitHub[32]; +} rlExampleInfo; + // Example management operations typedef enum { - OP_NONE = 0, - OP_CREATE = 1, - OP_ADD = 2, - OP_RENAME = 3, - OP_REMOVE = 4 -} ExampleOperation; + OP_NONE = 0, // No process to do + OP_CREATE = 1, // Create new example, using default template + OP_ADD = 2, // Add existing examples (hopefully following template) + OP_RENAME = 3, // Rename existing example + OP_REMOVE = 4, // Remove existing example + OP_VALIDATE = 5, // Validate examples, using [examples_list.txt] as main source by default +} rlExampleOperation; //---------------------------------------------------------------------------------- // Module specific functions declaration //---------------------------------------------------------------------------------- static int FileTextReplace(const char *fileName, const char *textLookUp, const char *textReplace); static int FileCopy(const char *srcPath, const char *dstPath); -static int FileRename(const char *fileName, const char *fileRename); // TODO: Implement, make sure to deal with paths moving -static int FileRemove(const char *fileName); // TODO: Implement +static int FileRename(const char *fileName, const char *fileRename); +static int FileRemove(const char *fileName); + +// Load examples collection information +static rlExampleInfo *LoadExamplesData(const char *fileName, int *exCount); +static void UnloadExamplesData(rlExampleInfo *exInfo); + +// Get text lines (by line-breaks '\n') +// WARNING: It does not copy text data, just returns line pointers +static const char **GetTextLines(const char *text, int *count); + +// raylib example line info parser +// Parses following line format: core/core_basic_window;⭐️☆☆☆;1.0;1.0;"Ray"/@raysan5 +static int ParseExampleInfoLine(const char *line, rlExampleInfo *entry); + +// Sort array of strings by name +// WARNING: items[] pointers are reorganized +static void SortStringsByName(char **items, int count); //------------------------------------------------------------------------------------ // Program main entry point @@ -87,15 +116,14 @@ int main(int argc, char *argv[]) char *exBasePath = "C:/GitHub/raylib/examples"; char *exWebPath = "C:/GitHub/raylib.com/examples"; char *exTemplateFilePath = "C:/GitHub/raylib/examples/examples_template.c"; - + char *exCollectionList = "C:/GitHub/raylib/examples/examples_list.txt"; + char inFileName[1024] = { 0 }; // Example input filename - char exName[1024] = { 0 }; // Example name, without extension: core_basic_window + char exName[64] = { 0 }; // Example name, without extension: core_basic_window char exCategory[32] = { 0 }; // Example category: core - char exRename[1024] = { 0 }; // Example re-name, without extension - char exPath[1024] = { 0 }; // Example path -NOT USED- - char exFullPath[1024] = { 0 }; // Example full path -NOT USED- - + char exRename[64] = { 0 }; // Example re-name, without extension + int opCode = OP_NONE; // Operation code: 0-None(Help), 1-Create, 2-Add, 3-Rename, 4-Remove // Command-line usage mode @@ -108,6 +136,7 @@ int main(int argc, char *argv[]) // add : Add existing example, category extracted from name // rename : Rename an existing example // remove : Remove an existing example + // validate : Validate examples collection if (strcmp(argv[1], "create") == 0) { // Check for valid upcoming argument @@ -116,7 +145,7 @@ int main(int argc, char *argv[]) else { // TODO: Additional security checks for file name? - + strcpy(inFileName, argv[2]); // Register filename for creation opCode = 1; } @@ -131,7 +160,7 @@ int main(int argc, char *argv[]) if (IsFileExtension(argv[2], ".c")) // Check for valid file extension: input { // TODO: Parse category name from filename provided! - + strcpy(inFileName, argv[2]); // Register filename for creation opCode = 2; } @@ -141,17 +170,11 @@ int main(int argc, char *argv[]) else if (strcmp(argv[1], "rename") == 0) { if (argc == 2) LOG("WARNING: No filename provided to create\n"); - //else if (argc == 3) LOG("WARNING: No enough arguments provided\n"); All the documentation says 3 args but I don't mind being wrong - else if (argc > 3) LOG("WARNING: Too many arguments provided\n"); + else if (argc == 3) LOG("WARNING: No enough arguments provided\n"); + else if (argc > 4) LOG("WARNING: Too many arguments provided\n"); else { - strcpy(exName, argv[2]); - for (int index = 0; index < 32; index++) - { - if (exName[index] == '_') break; - exCategory[index] = exName[index]; - } - strcpy(exRename, argv[3]); + // TODO: Register exName, exCategory and exRename opCode = 3; } @@ -167,8 +190,12 @@ int main(int argc, char *argv[]) opCode = 4; } } + else if (strcmp(argv[1], "validate") == 0) + { + opCode = 5; + } } - + switch (opCode) { case 1: // Create: New example from template @@ -181,33 +208,33 @@ int main(int argc, char *argv[]) if ((opCode != 1) && FileExists(inFileName)) { FileCopy(inFileName, TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); - } - + } + // Generate all required files //-------------------------------------------------------------------------------- // Create: raylib/examples//_example_name.c // Create: raylib/examples//_example_name.png - FileCopy("C:/GitHub/raylib/examples/examples_template.png", + FileCopy("C:/GitHub/raylib/examples/examples_template.png", TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); // To be updated manually! - + // Copy: raylib/examples//resources/*.* ---> To be updated manually! - + // TODO: Update the required files to add new example in the required position (ordered by category and name), // it could require some logic to make it possible... - + // Edit: raylib/examples/Makefile --> Add new example // Edit: raylib/examples/Makefile.Web --> Add new example // Edit: raylib/examples/README.md --> Add new example - + // Create: raylib/projects/VS2022/examples/_example_name.vcxproj // Edit: raylib/projects/VS2022/raylib.sln --> Add new example // Edit: raylib.com/common/examples.js --> Add new example - + // Compile to: raylib.com/examples//_example_name.html // Compile to: raylib.com/examples//_example_name.data // Compile to: raylib.com/examples//_example_name.wasm // Compile to: raylib.com/examples//_example_name.js - + // Recompile example (on raylib side) // NOTE: Tools requirements: emscripten, w64devkit system(TextFormat("%s/../build_example_web.bat %s\%s", exBasePath, exCategory, exName)); @@ -225,19 +252,19 @@ int main(int argc, char *argv[]) case 3: // Rename { // Rename all required files - rename(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName), + rename(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName), TextFormat("%s/%s/%s.c", exBasePath, exCategory, exRename)); - rename(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName), + rename(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName), TextFormat("%s/%s/%s.png", exBasePath, exCategory, exRename)); - + FileTextReplace(TextFormat("%s/Makefile", exBasePath), exName, exRename); FileTextReplace(TextFormat("%s/Makefile.Web", exBasePath), exName, exRename); FileTextReplace(TextFormat("%s/README.md", exBasePath), exName, exRename); - - rename(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), + + rename(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exRename)); FileTextReplace(TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath), exName, exRename); - + // Remove old web compilation FileTextReplace(TextFormat("%s/../common/examples.js", exWebPath), exName, exRename); remove(TextFormat("%s/%s/%s.html", exWebPath, exCategory, exName)); @@ -263,6 +290,25 @@ int main(int argc, char *argv[]) { // TODO: Remove and update all required files... + } break; + case 5: // Validate + { + // TODO: Validate examples collection against [examples_list.txt] + + // Validate: raylib/examples//_example_name.c + // Validate: raylib/examples//_example_name.png + // Validate: raylib/examples//resources/.. -> Not possible for now... + // Validate: raylib/examples/Makefile + // Validate: raylib/examples/Makefile.Web + // Validate: raylib/examples/README.md + // Validate: raylib/projects/VS2022/examples/_example_name.vcxproj + // Validate: raylib/projects/VS2022/raylib.sln + // Validate: raylib.com/common/examples.js + // Validate: raylib.com/examples//_example_name.html + // Validate: raylib.com/examples//_example_name.data + // Validate: raylib.com/examples//_example_name.wasm + // Validate: raylib.com/examples//_example_name.js + } break; default: // Help { @@ -272,7 +318,7 @@ int main(int argc, char *argv[]) // add : Add existing example, category extracted from name // rename : Rename an existing example // remove : Remove an existing example - + printf("\n////////////////////////////////////////////////////////////////////////////////////////////\n"); printf("// //\n"); printf("// rexm [raylib examples manager] - A simple command-line tool to manage raylib examples //\n"); @@ -299,57 +345,197 @@ int main(int argc, char *argv[]) printf(" Renames and updates example to \n\n"); } break; } - + return 0; } //---------------------------------------------------------------------------------- // Module specific functions definition //---------------------------------------------------------------------------------- +// Load examples collection information +static rlExampleInfo *LoadExamplesData(const char *fileName, int *exCount) +{ + #define MAX_EXAMPLES_INFO 256 + + *exCount = 0; + rlExampleInfo *exInfo = (rlExampleInfo *)RL_CALLOC(MAX_EXAMPLES_INFO, sizeof(rlExampleInfo)); + + const char *text = LoadFileText(fileName); + + if (text != NULL) + { + int lineCount = 0; + const char **linePtrs = GetTextLines(text, &lineCount); + + for (int i = 0; i < lineCount; i++) + { + // Basic validation for lines start categories + if ((linePtrs[i][0] != '#') && + ((linePtrs[i][0] == 'c') || // core + (linePtrs[i][0] == 's') || // shapes, shaders + (linePtrs[i][0] == 't') || // textures, text + (linePtrs[i][0] == 'm') || // models + (linePtrs[i][0] == 'a') || // audio + (linePtrs[i][0] == 'o'))) // others + { + if (ParseExampleInfoLine(linePtrs[i], &exInfo[*exCount]) == 0) *exCount += 1; + } + } + } + + return exInfo; +} + +// Unload examples collection data +static void UnloadExamplesData(rlExampleInfo *exInfo) +{ + RL_FREE(exInfo); +} + +// Replace text in an existing file static int FileTextReplace(const char *fileName, const char *textLookUp, const char *textReplace) { int result = 0; char *fileText = NULL; char *fileTextUpdated = { 0 }; - - fileText = LoadFileText(fileName); - fileTextUpdated = TextReplace(fileText, textLookUp, textReplace); - result = SaveFileText(fileName, fileTextUpdated); - MemFree(fileTextUpdated); - UnloadFileText(fileText); + if (FileExists(fileName)) + { + fileText = LoadFileText(fileName); + fileTextUpdated = TextReplace(fileText, textLookUp, textReplace); + result = SaveFileText(fileName, fileTextUpdated); + MemFree(fileTextUpdated); + UnloadFileText(fileText); + } + return result; } +// Copy file from one path to another +// WARNING: Destination path must exist static int FileCopy(const char *srcPath, const char *dstPath) { int result = 0; int srcDataSize = 0; unsigned char *srcFileData = LoadFileData(srcPath, &srcDataSize); + // TODO: Create required paths if they do not exist + if ((srcFileData != NULL) && (srcDataSize > 0)) result = SaveFileData(dstPath, srcFileData, srcDataSize); UnloadFileData(srcFileData); - + return result; } +// Rename file (if exists) +// NOTE: Only rename file name required, not full path static int FileRename(const char *fileName, const char *fileRename) { int result = 0; - - // TODO: Make sure to deal with paths properly for file moving if required - + if (FileExists(fileName)) rename(fileName, TextFormat("%s/%s", GetDirectoryPath(fileName), fileRename)); return result; } +// Remove file (if exists) static int FileRemove(const char *fileName) { int result = 0; - + if (FileExists(fileName)) remove(fileName); return result; } + +// Get text lines (by line-breaks '\n') +// WARNING: It does not copy text data, just returns line pointers +static const char **GetTextLines(const char *text, int *count) +{ + #define MAX_TEXT_LINE_PTRS 128 + + static const char *linePtrs[MAX_TEXT_LINE_PTRS] = { 0 }; + for (int i = 0; i < MAX_TEXT_LINE_PTRS; i++) linePtrs[i] = NULL; // Init NULL pointers to substrings + + int textSize = (int)strlen(text); + + linePtrs[0] = text; + int len = 0; + *count = 1; + + for (int i = 0, k = 0; (i < textSize) && (*count < MAX_TEXT_LINE_PTRS); i++) + { + if (text[i] == '\n') + { + k++; + linePtrs[k] = &text[i + 1]; // WARNING: next value is valid? + len = 0; + *count += 1; + } + else len++; + } + + return linePtrs; +} + +// raylib example line info parser +// Parses following line format: core/core_basic_window;⭐️☆☆☆;1.0;1.0;"Ray"/@raysan5 +static int ParseExampleInfoLine(const char *line, rlExampleInfo *entry) +{ + #define MAX_EXAMPLE_INFO_LINE_LEN 512 + + char temp[MAX_EXAMPLE_INFO_LINE_LEN] = { 0 }; + strncpy(temp, line, MAX_EXAMPLE_INFO_LINE_LEN); // WARNING: Copy is needed because strtok() modifies string, adds '\0' + temp[MAX_EXAMPLE_INFO_LINE_LEN - 1] = '\0'; // Ensure null termination + + int tokenCount = 0; + char **tokens = TextSplit(line, ';', &tokenCount); + + // Get category and name + strncpy(entry->category, tokens[0], sizeof(entry->category)); + strncpy(entry->name, tokens[1], sizeof(entry->name)); + + // Parsing stars + // NOTE: Counting the unicode char occurrences: ⭐️ + const char *ptr = tokens[2]; + while (*ptr) + { + if (((unsigned char)ptr[0] == 0xE2) && + ((unsigned char)ptr[1] == 0xAD) && + ((unsigned char)ptr[2] == 0x90)) + { + entry->stars++; + ptr += 3; // Advance past multibyte character + } + else ptr++; + } + + // Get raylib creation/update versions + entry->verCreated = strtof(tokens[3], NULL); + entry->verUpdated = strtof(tokens[4], NULL); + + // Get author and github + char *quote1 = strchr(tokens[5], '"'); + char *quote2 = quote1? strchr(quote1 + 1, '"') : NULL; + if (quote1 && quote2) strncpy(entry->author, quote1 + 1, sizeof(entry->author)); + strncpy(entry->authorGitHub, tokens[6], sizeof(entry->authorGitHub)); + + return 1; +} + +// Text compare, required for qsort() function +static int SortTextCompare(const void *a, const void *b) +{ + const char *str1 = *(const char **)a; + const char *str2 = *(const char **)b; + + return strcmp(str1, str2); +} + +// Sort array of strings by name +// WARNING: items[] pointers are reorganized +static void SortStringsByName(char **items, int count) +{ + qsort(items, count, sizeof(char *), SortTextCompare); +} From 8adccfd521acea3f42d5b894e64bf10a52abca7c Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 1 Aug 2025 20:09:49 +0200 Subject: [PATCH 097/328] Update windows.yml --- .github/workflows/windows.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 2f0fbdbd0..a7d4a412b 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -22,7 +22,6 @@ jobs: build: permissions: contents: write # for actions/upload-release-asset to upload release asset - runs-on: windows-latest strategy: fail-fast: false max-parallel: 1 @@ -54,7 +53,6 @@ jobs: - compiler: mingw-w64 ziptarget: winarm64 # We don't build arm64 with mingw-w64 yet - env: RELEASE_NAME: raylib-dev_${{ matrix.ziptarget }}_${{ matrix.compiler }} GNUTARGET: default From 3e65b23f8952d5567a624cadd97b19ef75b918f6 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 1 Aug 2025 20:10:35 +0200 Subject: [PATCH 098/328] Update windows.yml --- .github/workflows/windows.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index a7d4a412b..876338de1 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -22,6 +22,7 @@ jobs: build: permissions: contents: write # for actions/upload-release-asset to upload release asset + runs-on: windows-latest strategy: fail-fast: false max-parallel: 1 From a36905607c178b5486cc1dc24e5b40efd330d602 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 1 Aug 2025 20:19:35 +0200 Subject: [PATCH 099/328] Update linux.yml --- .github/workflows/linux.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index a4879841c..222e2b289 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -60,7 +60,6 @@ jobs: - name: Setup Environment run: | sudo apt-get update -qq - sudo apt-get install gcc-multilib sudo apt-get install -y --no-install-recommends libglfw3 libglfw3-dev libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev libxext-dev libxfixes-dev libwayland-dev libxkbcommon-dev mkdir build cd build @@ -70,6 +69,11 @@ jobs: mkdir lib cd ../../../raylib # ${{ matrix.ARCH }}-linux-gnu-gcc -v + + - name: Setup Environment (x86) + run : | + sudo apt-get install gcc-multilib + if: matrix.bits == 32 && matrix.ARCH == 'i386' # TODO: Support 32bit (i386) static/shared library building - name: Build Library (32-bit) From b01c8a7a906bd653035a1eec88fa65f76af5a365 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 2 Aug 2025 00:36:17 +0200 Subject: [PATCH 100/328] UPDATE: Implementing examples commands -WIP- --- examples/rexm.c | 89 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 59 insertions(+), 30 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index 6a1c27826..0ee60245e 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -111,14 +111,15 @@ static void SortStringsByName(char **items, int count); //------------------------------------------------------------------------------------ int main(int argc, char *argv[]) { - // Examples path for building + // Paths required for examples management // TODO: Avoid hardcoding path values... char *exBasePath = "C:/GitHub/raylib/examples"; char *exWebPath = "C:/GitHub/raylib.com/examples"; char *exTemplateFilePath = "C:/GitHub/raylib/examples/examples_template.c"; + char *exTemplateScreenshot = "C:/GitHub/raylib/examples/examples_template.png"; char *exCollectionList = "C:/GitHub/raylib/examples/examples_list.txt"; - char inFileName[1024] = { 0 }; // Example input filename + char inFileName[1024] = { 0 }; // Example input filename (to be added) char exName[64] = { 0 }; // Example name, without extension: core_basic_window char exCategory[32] = { 0 }; // Example category: core @@ -146,7 +147,8 @@ int main(int argc, char *argv[]) { // TODO: Additional security checks for file name? - strcpy(inFileName, argv[2]); // Register filename for creation + strcpy(exName, argv[2]); // Register filename for new example creation + strncpy(exCategory, exName, TextFindIndex(exName, "_")); opCode = 1; } } @@ -159,23 +161,28 @@ int main(int argc, char *argv[]) { if (IsFileExtension(argv[2], ".c")) // Check for valid file extension: input { - // TODO: Parse category name from filename provided! - - strcpy(inFileName, argv[2]); // Register filename for creation - opCode = 2; + if (FileExists(inFileName)) + { + strcpy(inFileName, argv[2]); // Register filename for addition + strcpy(exName, GetFileNameWithoutExt(argv[2])); // Register example name + strncpy(exCategory, exName, TextFindIndex(exName, "_")); + opCode = 2; + } + else LOG("WARNING: Input file not found, include path\n"); } else LOG("WARNING: Input file extension not recognized (.c)\n"); } } else if (strcmp(argv[1], "rename") == 0) { - if (argc == 2) LOG("WARNING: No filename provided to create\n"); - else if (argc == 3) LOG("WARNING: No enough arguments provided\n"); + if (argc == 2) LOG("WARNING: No filename provided to be renamed\n"); else if (argc > 4) LOG("WARNING: Too many arguments provided\n"); else { - // TODO: Register exName, exCategory and exRename - + strcpy(exName, argv[2]); // Register example name + strncpy(exCategory, exName, TextFindIndex(exName, "_")); + strcpy(exRename, argv[3]); + // TODO: Consider rename with change of category opCode = 3; } } @@ -186,13 +193,13 @@ int main(int argc, char *argv[]) else if (argc > 3) LOG("WARNING: Too many arguments provided\n"); else { - strcpy(inFileName, argv[2]); // Register filename for removal + strcpy(exName, argv[2]); // Register filename for removal opCode = 4; } } else if (strcmp(argv[1], "validate") == 0) { - opCode = 5; + opCode = 5; } } @@ -200,43 +207,65 @@ int main(int argc, char *argv[]) { case 1: // Create: New example from template { - // Copy template file as new example + // Create: raylib/examples//_example_name.c FileCopy(exTemplateFilePath, TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); } case 2: // Add: Example from command-line input filename { - if ((opCode != 1) && FileExists(inFileName)) - { - FileCopy(inFileName, TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); - } - - // Generate all required files - //-------------------------------------------------------------------------------- // Create: raylib/examples//_example_name.c - // Create: raylib/examples//_example_name.png - FileCopy("C:/GitHub/raylib/examples/examples_template.png", - TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); // To be updated manually! + if (opCode != 1) FileCopy(inFileName, TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); - // Copy: raylib/examples//resources/*.* ---> To be updated manually! + // Create: raylib/examples//_example_name.png + FileCopy(exTemplateScreenshot, TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); // WARNING: To be updated manually! + + // Copy: raylib/examples//resources/... // WARNING: To be updated manually! + + // Check if example is already listed + + // If not, add to the main examples_list // TODO: Update the required files to add new example in the required position (ordered by category and name), // it could require some logic to make it possible... // Edit: raylib/examples/Makefile --> Add new example + char *mkText = LoadFileText(TextFormat("%s/Makefile", exBasePath)); + int exListStartIndex = TextFindIndex(mkText, "#EXAMPLES_LIST_START"); + int exListEndIndex = TextFindIndex(mkText, "#EXAMPLES_LIST_END"); + char *mkTextUpdate = (char *)RL_CALLOC(2*1024*1024, 1); // 2MB + memcpy(mkTextUpdate, mkText, exListStartIndex); + // TODO: Update required lines... + //SaveFileText(TextFormat("%s/Makefile", exBasePath), mkTextUpdate); + UnloadFileText(mkText); + RL_FREE(mkTextUpdate); + // Edit: raylib/examples/Makefile.Web --> Add new example + // Edit: raylib/examples/README.md --> Add new example - + // TODO: Use [examples_list.txt] to update/regen README.md + // Create: raylib/projects/VS2022/examples/_example_name.vcxproj - // Edit: raylib/projects/VS2022/raylib.sln --> Add new example + FileCopy(TextFormat("%s/../projects/VS2022/examples/core_basic_window.vcxproj", exBasePath), + TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName)); + FileTextReplace(, "core_basic_window", exName); + FileTextReplace(, "..\..\examples\core", TextFormat("..\..\examples\%s", exCategory)); + + // Edit: raylib/projects/VS2022/raylib.sln --> Add new example project + system(TextFormat("dotnet solution raylib.sln add %s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName)); + // Edit: raylib.com/common/examples.js --> Add new example + //Entries format: exampleEntry('⭐️☆☆☆' , 'core' , 'basic_window'), + char *jsText = LoadFileText(TextFormat("%s/../common/examples.js", exWebPath)); + int exListStartIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_START"); + int exListEndIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_END"); + UnloadFileText(jsText); + + // Recompile example (on raylib side) + // NOTE: Tools requirements: emscripten, w64devkit // Compile to: raylib.com/examples//_example_name.html // Compile to: raylib.com/examples//_example_name.data // Compile to: raylib.com/examples//_example_name.wasm // Compile to: raylib.com/examples//_example_name.js - - // Recompile example (on raylib side) - // NOTE: Tools requirements: emscripten, w64devkit system(TextFormat("%s/../build_example_web.bat %s\%s", exBasePath, exCategory, exName)); // Copy results to web side From bf536d68e129762e21ecdb1a6f722d3d1ce6b7dd Mon Sep 17 00:00:00 2001 From: Jeffery Myers Date: Sat, 2 Aug 2025 08:37:11 -0700 Subject: [PATCH 101/328] Make GetRenderWidth and GetREnderHeight return the FBO size if one is active. --- src/rcore.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/rcore.c b/src/rcore.c index 013ea434a..099bbe9c8 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -827,6 +827,8 @@ int GetScreenHeight(void) // Get current render width which is equal to screen width*dpi scale int GetRenderWidth(void) { + if (CORE.Window.usingFbo) return CORE.Window.currentFbo.width; + int width = 0; #if defined(__APPLE__) Vector2 scale = GetWindowScaleDPI(); @@ -840,6 +842,8 @@ int GetRenderWidth(void) // Get current screen height which is equal to screen height*dpi scale int GetRenderHeight(void) { + if (CORE.Window.usingFbo) return CORE.Window.currentFbo.height; + int height = 0; #if defined(__APPLE__) Vector2 scale = GetWindowScaleDPI(); From 159a9eac4a743bb8ddb829c1071dc3d3af103b49 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 2 Aug 2025 17:58:44 +0200 Subject: [PATCH 102/328] Update build_example_web.bat --- examples/build_example_web.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/build_example_web.bat b/examples/build_example_web.bat index b04439c8a..f09cbcc0b 100644 --- a/examples/build_example_web.bat +++ b/examples/build_example_web.bat @@ -1,10 +1,10 @@ ::@echo off :: . -:: Compile your examples for web using: build_example_web.bat \ +:: Compile your examples for web using: build_example_web.bat / :: . set "INPUT_FILE=%1" :: Change delimiter for the FOR loop -for /f "tokens=1-10 delims=\" %%a in ("%INPUT_FILE%") do ( +for /f "tokens=1-10 delims=/" %%a in ("%INPUT_FILE%") do ( set CATEGORY=%%a set FILENAME=%%b ) From 1c8eef9b0b9a0dd456af3c602e33f046a482b295 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 2 Aug 2025 17:59:34 +0200 Subject: [PATCH 103/328] Update raylib and generate `ARM64` libraries for Windows, Linux, macOS --- src/raylib.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/raylib.h b/src/raylib.h index 6b8b4acf3..4517cbcac 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -1516,7 +1516,7 @@ RLAPI char *TextInsert(const char *text, const char *insert, int position); RLAPI char *TextJoin(char **textList, int count, const char *delimiter); // Join text strings with delimiter RLAPI char **TextSplit(const char *text, char delimiter, int *count); // Split text into multiple strings, using MAX_TEXTSPLIT_COUNT static strings RLAPI void TextAppend(char *text, const char *append, int *position); // Append text at specific position and move cursor! -RLAPI int TextFindIndex(const char *text, const char *find); // Find first text occurrence within a string +RLAPI int TextFindIndex(const char *text, const char *find); // Find first text occurrence within a string, -1 if not found RLAPI char *TextToUpper(const char *text); // Get upper case version of provided string RLAPI char *TextToLower(const char *text); // Get lower case version of provided string RLAPI char *TextToPascal(const char *text); // Get Pascal case notation version of provided string From c60763d19ef352287118d48e372b2c75d4e62d8b Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 2 Aug 2025 18:00:41 +0200 Subject: [PATCH 104/328] UPDATED: `LoadExamplesData()` to support filtering and sorting --- examples/rexm.c | 247 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 206 insertions(+), 41 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index 0ee60245e..70d2b8151 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -64,12 +64,12 @@ // raylib example info struct typedef struct { char category[16]; - char name[64]; + char name[128]; char stars; float verCreated; float verUpdated; char author[64]; - char authorGitHub[32]; + char authorGitHub[64]; } rlExampleInfo; // Example management operations @@ -82,6 +82,10 @@ typedef enum { OP_VALIDATE = 5, // Validate examples, using [examples_list.txt] as main source by default } rlExampleOperation; +#define MAX_EXAMPLE_CATEGORIES 8 + +static const char *exCategories[MAX_EXAMPLE_CATEGORIES] = { "core", "shapes", "textures", "text", "models", "shaders", "audio", "others" }; + //---------------------------------------------------------------------------------- // Module specific functions declaration //---------------------------------------------------------------------------------- @@ -91,7 +95,9 @@ static int FileRename(const char *fileName, const char *fileRename); static int FileRemove(const char *fileName); // Load examples collection information -static rlExampleInfo *LoadExamplesData(const char *fileName, int *exCount); +// NOTE 1: Load by category: "ALL", "core", "shapes", "textures", "text", "models", "shaders", others" +// NOTE 2: Sort examples list on request flag +static rlExampleInfo *LoadExamplesData(const char *fileName, const char *category, bool sort, int *exCount); static void UnloadExamplesData(rlExampleInfo *exInfo); // Get text lines (by line-breaks '\n') @@ -104,7 +110,7 @@ static int ParseExampleInfoLine(const char *line, rlExampleInfo *entry); // Sort array of strings by name // WARNING: items[] pointers are reorganized -static void SortStringsByName(char **items, int count); +static void SortExampleByName(rlExampleInfo *items, int count); //------------------------------------------------------------------------------------ // Program main entry point @@ -117,8 +123,8 @@ int main(int argc, char *argv[]) char *exWebPath = "C:/GitHub/raylib.com/examples"; char *exTemplateFilePath = "C:/GitHub/raylib/examples/examples_template.c"; char *exTemplateScreenshot = "C:/GitHub/raylib/examples/examples_template.png"; - char *exCollectionList = "C:/GitHub/raylib/examples/examples_list.txt"; - + char *exCollectionListPath = "C:/GitHub/raylib/examples/examples_list.txt"; + char inFileName[1024] = { 0 }; // Example input filename (to be added) char exName[64] = { 0 }; // Example name, without extension: core_basic_window @@ -203,12 +209,29 @@ int main(int argc, char *argv[]) } } + // Load examples collection information + //exInfo = LoadExamplesData(exCollectionListPath, "core", true, &exInfoCount); + //for (int i = 0; i < exInfoCount; i++) printf("%i - %s [%i]\n", i + 1, exInfo[i].name, exInfo[i].stars); + switch (opCode) { case 1: // Create: New example from template { // Create: raylib/examples//_example_name.c - FileCopy(exTemplateFilePath, TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + char *exText = LoadFileText(exTemplateFilePath); + char *exTextUpdated[6] = { 0 }; + int exIndex = TextFindIndex(exText, "/****************"); + + exTextUpdated[0] = TextReplace(exText + exIndex, "", exCategory); + exTextUpdated[1] = TextReplace(exTextUpdated[0], "", exName + strlen(exCategory) + 1); + //TextReplace(newExample, "", "Ray"); + //TextReplace(newExample, "@", "@raysan5"); + //TextReplace(newExample, "", 2025); + //TextReplace(newExample, "", 2025); + + SaveFileText(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName), exTextUpdated[1]); + for (int i = 0; i < 6; i++) { MemFree(exTextUpdated[i]); exTextUpdated[i] = NULL; } + UnloadFileText(exText); } case 2: // Add: Example from command-line input filename { @@ -220,45 +243,163 @@ int main(int argc, char *argv[]) // Copy: raylib/examples//resources/... // WARNING: To be updated manually! - // Check if example is already listed - - // If not, add to the main examples_list - - // TODO: Update the required files to add new example in the required position (ordered by category and name), - // it could require some logic to make it possible... + // Add example to the main collection list, if not already there + // NOTE: Required format: shapes;shapes_basic_shapes;⭐️☆☆☆;1.0;4.2;"Ray";@raysan5 + //------------------------------------------------------------------------------------------------ + char *exColInfo = LoadFileText(exCollectionListPath); + if (TextFindIndex(exColInfo, exName) == -1) // Example not found + { + char *exColInfoUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated list copy, 2MB + + // Add example to the main list, by category + // by default add it last in the category list + // NOTE: When populating to other files, lists are sorted by name + int nextCatIndex = 0; + if (strcmp(exCategory, "core") == 0) nextCatIndex = 1; + else if (strcmp(exCategory, "shapes") == 0) nextCatIndex = 2; + else if (strcmp(exCategory, "textures") == 0) nextCatIndex = 3; + else if (strcmp(exCategory, "text") == 0) nextCatIndex = 4; + else if (strcmp(exCategory, "models") == 0) nextCatIndex = 5; + else if (strcmp(exCategory, "shaders") == 0) nextCatIndex = 6; + else if (strcmp(exCategory, "audio") == 0) nextCatIndex = 7; + else if (strcmp(exCategory, "others") == 0) nextCatIndex = -1; // Add to EOF + + if (nextCatIndex == -1) + { + // Add example to the end of the list + int endIndex = strlen(exColInfo); + memcpy(exColInfoUpdated, exColInfo, endIndex); + sprintf(exColInfoUpdated + endIndex, TextFormat("\n%s/%s\n", exCategory, exName)); + } + else + { + // Add example to the end of the category list + // TODO: Get required example info from example file header (if provided) + // NOTE: If no example info is provided (other than category/name), just using some default values + int catIndex = TextFindIndex(exColInfo, exCategories[nextCatIndex]); + memcpy(exColInfoUpdated, exColInfo, catIndex); + int textWritenSize = sprintf(exColInfoUpdated + catIndex, TextFormat("%s;%s;⭐️☆☆☆;6.0;6.0;\"Ray\";@raysan5\n", exCategory, exName)); + memcpy(exColInfoUpdated + catIndex + textWritenSize, exColInfo + catIndex, strlen(exColInfo) - catIndex); + } + + SaveFileText(exCollectionListPath, exColInfoUpdated); + RL_FREE(exColInfoUpdated); + } + UnloadFileText(exColInfo); + //------------------------------------------------------------------------------------------------ // Edit: raylib/examples/Makefile --> Add new example + //------------------------------------------------------------------------------------------------ char *mkText = LoadFileText(TextFormat("%s/Makefile", exBasePath)); + char *mkTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated Makefile copy, 2MB + int exListStartIndex = TextFindIndex(mkText, "#EXAMPLES_LIST_START"); int exListEndIndex = TextFindIndex(mkText, "#EXAMPLES_LIST_END"); - char *mkTextUpdate = (char *)RL_CALLOC(2*1024*1024, 1); // 2MB - memcpy(mkTextUpdate, mkText, exListStartIndex); - // TODO: Update required lines... - //SaveFileText(TextFormat("%s/Makefile", exBasePath), mkTextUpdate); + + int mkIndex = exListStartIndex; + memcpy(mkTextUpdated, mkText, exListStartIndex); + TextAppend(mkTextUpdated + mkIndex, "#EXAMPLES_LIST_START\n", &mkIndex); + + for (int i = 0, exCount = 0; i < MAX_EXAMPLE_CATEGORIES; i++) + { + TextAppend(mkTextUpdated + mkIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i])), &mkIndex); // Category Makefile object ("CORE = \") + + rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], true, &exCount); + + printf("loaded category: %s\n", exCategories[i]); + + for (int x = 0; x < exCount - 1; x++) + TextAppend(mkTextUpdated + mkIndex, TextFormat(" %s/%s \\\n", exCatList[x].category, exCatList[x].name), &mkIndex); + + TextAppend(mkTextUpdated + mkIndex, TextFormat(" %s/%s\n\n", exCatList[exCount - 1].category, exCatList[exCount - 1].name), &mkIndex); + + UnloadExamplesData(exCatList); + } + + printf("got1\n"); + + // Add the remaining part of the original file + TextAppend(mkTextUpdated + mkIndex, mkText + exListEndIndex, &mkIndex); + + printf("got2\n"); + + // Save updated file + SaveFileText(TextFormat("%s/Makefile", exBasePath), mkTextUpdated); UnloadFileText(mkText); - RL_FREE(mkTextUpdate); + RL_FREE(mkTextUpdated); + + printf("got3\n"); + //------------------------------------------------------------------------------------------------ // Edit: raylib/examples/Makefile.Web --> Add new example - + //------------------------------------------------------------------------------------------------ + + // TODO. + + //------------------------------------------------------------------------------------------------ + // Edit: raylib/examples/README.md --> Add new example + //------------------------------------------------------------------------------------------------ + // TODO: Use [examples_list.txt] to update/regen README.md + //------------------------------------------------------------------------------------------------ + // Create: raylib/projects/VS2022/examples/_example_name.vcxproj + //------------------------------------------------------------------------------------------------ FileCopy(TextFormat("%s/../projects/VS2022/examples/core_basic_window.vcxproj", exBasePath), TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName)); - FileTextReplace(, "core_basic_window", exName); - FileTextReplace(, "..\..\examples\core", TextFormat("..\..\examples\%s", exCategory)); + FileTextReplace(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), + "core_basic_window", exName); + FileTextReplace(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), + "..\\..\\examples\\core", TextFormat("..\\..\\examples\\%s", exCategory)); // Edit: raylib/projects/VS2022/raylib.sln --> Add new example project system(TextFormat("dotnet solution raylib.sln add %s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName)); + //------------------------------------------------------------------------------------------------ // Edit: raylib.com/common/examples.js --> Add new example - //Entries format: exampleEntry('⭐️☆☆☆' , 'core' , 'basic_window'), + // NOTE: Entries format: exampleEntry('⭐️☆☆☆' , 'core' , 'basic_window'), + //------------------------------------------------------------------------------------------------ char *jsText = LoadFileText(TextFormat("%s/../common/examples.js", exWebPath)); - int exListStartIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_START"); - int exListEndIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_END"); + char *jsTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated examples.js copy, 2MB + + exListStartIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_START"); + exListEndIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_END"); + + int jsIndex = exListStartIndex; + memcpy(jsTextUpdated, jsText, exListStartIndex); + TextAppend(jsTextUpdated + jsIndex, "//EXAMPLE_DATA_LIST_START\n", &jsIndex); + TextAppend(jsTextUpdated + jsIndex, "var exampleData = [\n", &jsIndex); + // NOTE: We avoid "others" category + for (int i = 0, exCount = 0; i < MAX_EXAMPLE_CATEGORIES - 1; i++) + { + rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], true, &exCount); + for (int x = 0; x < exCount; x++) + { + //char stars[16] = { 0 }; + //for (int s = 0; s < 4; s++) strcpy(stars + 3) + + TextAppend(jsTextUpdated + mkIndex, + TextFormat(" exampleEntry('%s%s%s%s' , '%s' , '%s'),\n", + "⭐️", "☆", "☆", "☆", + exCatList[x].category, + exCatList[x].name + strlen(exCatList[x].category) + 1), + &jsIndex); + } + + UnloadExamplesData(exCatList); + } + + // Add the remaining part of the original file + TextAppend(jsTextUpdated + jsIndex, jsText + exListEndIndex, &jsIndex); + + // Save updated file + SaveFileText(TextFormat("%s/Makefile", exBasePath), jsTextUpdated); UnloadFileText(jsText); + RL_FREE(jsTextUpdated); + //------------------------------------------------------------------------------------------------ // Recompile example (on raylib side) // NOTE: Tools requirements: emscripten, w64devkit @@ -266,7 +407,9 @@ int main(int argc, char *argv[]) // Compile to: raylib.com/examples//_example_name.data // Compile to: raylib.com/examples//_example_name.wasm // Compile to: raylib.com/examples//_example_name.js - system(TextFormat("%s/../build_example_web.bat %s\%s", exBasePath, exCategory, exName)); + // TODO: WARNING: This .BAT is not portable and it does not consider RESOURCES for Web properly, + // Makefile.Web should be used... but it requires proper editing first! + system(TextFormat("%s/../build_example_web.bat %s/%s", exBasePath, exCategory, exName)); // Copy results to web side FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), @@ -303,7 +446,7 @@ int main(int argc, char *argv[]) // Recompile example (on raylib side) // NOTE: Tools requirements: emscripten, w64devkit - system(TextFormat("%s/../build_example_web.bat %s\%s", exBasePath, exCategory, exName)); + system(TextFormat("%s/../build_example_web.bat %s/%s", exBasePath, exCategory, exName)); // Copy results to web side FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), @@ -382,14 +525,14 @@ int main(int argc, char *argv[]) // Module specific functions definition //---------------------------------------------------------------------------------- // Load examples collection information -static rlExampleInfo *LoadExamplesData(const char *fileName, int *exCount) +static rlExampleInfo *LoadExamplesData(const char *fileName, const char *category, bool sort, int *exCount) { #define MAX_EXAMPLES_INFO 256 - *exCount = 0; rlExampleInfo *exInfo = (rlExampleInfo *)RL_CALLOC(MAX_EXAMPLES_INFO, sizeof(rlExampleInfo)); + int exCounter = 0; - const char *text = LoadFileText(fileName); + char *text = LoadFileText(fileName); if (text != NULL) { @@ -407,11 +550,33 @@ static rlExampleInfo *LoadExamplesData(const char *fileName, int *exCount) (linePtrs[i][0] == 'a') || // audio (linePtrs[i][0] == 'o'))) // others { - if (ParseExampleInfoLine(linePtrs[i], &exInfo[*exCount]) == 0) *exCount += 1; + rlExampleInfo info = { 0 }; + int result = ParseExampleInfoLine(linePtrs[i], &info); + if (result == 1) // Success on parsing + { + if (strcmp(category, "ALL") == 0) + { + // Add all examples to the list + memcpy(&exInfo[exCounter], &info, sizeof(rlExampleInfo)); + exCounter++; + } + else if (strcmp(info.category, category) == 0) + { + // Get only specific category examples + memcpy(&exInfo[exCounter], &info, sizeof(rlExampleInfo)); + exCounter++; + } + } } } + + UnloadFileText(text); } + // Sorting required + if (sort) SortExampleByName(exInfo, exCounter); + + *exCount = exCounter; return exInfo; } @@ -509,7 +674,7 @@ static const char **GetTextLines(const char *text, int *count) } // raylib example line info parser -// Parses following line format: core/core_basic_window;⭐️☆☆☆;1.0;1.0;"Ray"/@raysan5 +// Parses following line format: core;core_basic_window;⭐️☆☆☆;1.0;1.0;"Ray";@raysan5 static int ParseExampleInfoLine(const char *line, rlExampleInfo *entry) { #define MAX_EXAMPLE_INFO_LINE_LEN 512 @@ -522,8 +687,8 @@ static int ParseExampleInfoLine(const char *line, rlExampleInfo *entry) char **tokens = TextSplit(line, ';', &tokenCount); // Get category and name - strncpy(entry->category, tokens[0], sizeof(entry->category)); - strncpy(entry->name, tokens[1], sizeof(entry->name)); + strcpy(entry->category, tokens[0]); + strcpy(entry->name, tokens[1]); // Parsing stars // NOTE: Counting the unicode char occurrences: ⭐️ @@ -547,24 +712,24 @@ static int ParseExampleInfoLine(const char *line, rlExampleInfo *entry) // Get author and github char *quote1 = strchr(tokens[5], '"'); char *quote2 = quote1? strchr(quote1 + 1, '"') : NULL; - if (quote1 && quote2) strncpy(entry->author, quote1 + 1, sizeof(entry->author)); - strncpy(entry->authorGitHub, tokens[6], sizeof(entry->authorGitHub)); + if (quote1 && quote2) strcpy(entry->author, quote1 + 1); + strcpy(entry->authorGitHub, tokens[6]); return 1; } // Text compare, required for qsort() function -static int SortTextCompare(const void *a, const void *b) +static int rlExampleInfoCompare(const void *a, const void *b) { - const char *str1 = *(const char **)a; - const char *str2 = *(const char **)b; + const rlExampleInfo *ex1 = (const rlExampleInfo *)a; + const rlExampleInfo *ex2 = (const rlExampleInfo *)b; - return strcmp(str1, str2); + return strcmp(ex1->name, ex2->name); } // Sort array of strings by name // WARNING: items[] pointers are reorganized -static void SortStringsByName(char **items, int count) +static void SortExampleByName(rlExampleInfo *items, int count) { - qsort(items, count, sizeof(char *), SortTextCompare); + qsort(items, count, sizeof(rlExampleInfo), rlExampleInfoCompare); } From 42619ea2dfb3493975518c61c4b13b76180b6a11 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 2 Aug 2025 16:01:00 +0000 Subject: [PATCH 105/328] Update raylib_api.* by CI --- parser/output/raylib_api.json | 2 +- parser/output/raylib_api.lua | 2 +- parser/output/raylib_api.txt | 2 +- parser/output/raylib_api.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/parser/output/raylib_api.json b/parser/output/raylib_api.json index cf32ce524..c2a4a1827 100644 --- a/parser/output/raylib_api.json +++ b/parser/output/raylib_api.json @@ -9777,7 +9777,7 @@ }, { "name": "TextFindIndex", - "description": "Find first text occurrence within a string", + "description": "Find first text occurrence within a string, -1 if not found", "returnType": "int", "params": [ { diff --git a/parser/output/raylib_api.lua b/parser/output/raylib_api.lua index cb6cf9db3..23547d9f1 100644 --- a/parser/output/raylib_api.lua +++ b/parser/output/raylib_api.lua @@ -6942,7 +6942,7 @@ return { }, { name = "TextFindIndex", - description = "Find first text occurrence within a string", + description = "Find first text occurrence within a string, -1 if not found", returnType = "int", params = { {type = "const char *", name = "text"}, diff --git a/parser/output/raylib_api.txt b/parser/output/raylib_api.txt index 9f8ab8ef5..9539d72a5 100644 --- a/parser/output/raylib_api.txt +++ b/parser/output/raylib_api.txt @@ -3742,7 +3742,7 @@ Function 434: TextAppend() (3 input parameters) Function 435: TextFindIndex() (2 input parameters) Name: TextFindIndex Return type: int - Description: Find first text occurrence within a string + Description: Find first text occurrence within a string, -1 if not found Param[1]: text (type: const char *) Param[2]: find (type: const char *) Function 436: TextToUpper() (1 input parameters) diff --git a/parser/output/raylib_api.xml b/parser/output/raylib_api.xml index f3ebb74be..d99187adf 100644 --- a/parser/output/raylib_api.xml +++ b/parser/output/raylib_api.xml @@ -2480,7 +2480,7 @@ - + From e01f3f158ea950b5793d451a7816214195f8ade9 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 2 Aug 2025 18:01:23 +0200 Subject: [PATCH 106/328] Remove some testing code --- examples/rexm.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index 70d2b8151..d01e291cd 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -315,20 +315,14 @@ int main(int argc, char *argv[]) UnloadExamplesData(exCatList); } - - printf("got1\n"); - + // Add the remaining part of the original file TextAppend(mkTextUpdated + mkIndex, mkText + exListEndIndex, &mkIndex); - - printf("got2\n"); - + // Save updated file SaveFileText(TextFormat("%s/Makefile", exBasePath), mkTextUpdated); UnloadFileText(mkText); RL_FREE(mkTextUpdated); - - printf("got3\n"); //------------------------------------------------------------------------------------------------ // Edit: raylib/examples/Makefile.Web --> Add new example From e76c5f7d64dfc8e23509af7777862c88f207a606 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 2 Aug 2025 18:11:30 +0200 Subject: [PATCH 107/328] Update rexm.c --- examples/rexm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/rexm.c b/examples/rexm.c index d01e291cd..c50aae08d 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -334,8 +334,10 @@ int main(int argc, char *argv[]) // Edit: raylib/examples/README.md --> Add new example //------------------------------------------------------------------------------------------------ - // TODO: Use [examples_list.txt] to update/regen README.md + //Look for "| 01 | " + // Lines format: | 01 | [core_basic_window](core/core_basic_window.c) | core_basic_window | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | + //------------------------------------------------------------------------------------------------ From 528ad4964d440e74ca55983b629c256e6873dc00 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 2 Aug 2025 19:21:36 +0200 Subject: [PATCH 108/328] UPDATE: `Makefile` example addition working --- examples/rexm.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index c50aae08d..5906c3ae7 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -267,7 +267,7 @@ int main(int argc, char *argv[]) if (nextCatIndex == -1) { // Add example to the end of the list - int endIndex = strlen(exColInfo); + int endIndex = (int)strlen(exColInfo); memcpy(exColInfoUpdated, exColInfo, endIndex); sprintf(exColInfoUpdated + endIndex, TextFormat("\n%s/%s\n", exCategory, exName)); } @@ -296,28 +296,25 @@ int main(int argc, char *argv[]) int exListStartIndex = TextFindIndex(mkText, "#EXAMPLES_LIST_START"); int exListEndIndex = TextFindIndex(mkText, "#EXAMPLES_LIST_END"); - int mkIndex = exListStartIndex; + int mkIndex = 0; memcpy(mkTextUpdated, mkText, exListStartIndex); - TextAppend(mkTextUpdated + mkIndex, "#EXAMPLES_LIST_START\n", &mkIndex); - - for (int i = 0, exCount = 0; i < MAX_EXAMPLE_CATEGORIES; i++) + mkIndex = sprintf(mkTextUpdated + exListStartIndex, "#EXAMPLES_LIST_START\n"); + + for (int i = 0; i < MAX_EXAMPLE_CATEGORIES; i++) { - TextAppend(mkTextUpdated + mkIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i])), &mkIndex); // Category Makefile object ("CORE = \") + mkIndex += sprintf(mkTextUpdated + exListStartIndex + mkIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i]))); + + int exCount = 0; + rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], true, &exCount); - rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], true, &exCount); - - printf("loaded category: %s\n", exCategories[i]); - - for (int x = 0; x < exCount - 1; x++) - TextAppend(mkTextUpdated + mkIndex, TextFormat(" %s/%s \\\n", exCatList[x].category, exCatList[x].name), &mkIndex); - - TextAppend(mkTextUpdated + mkIndex, TextFormat(" %s/%s\n\n", exCatList[exCount - 1].category, exCatList[exCount - 1].name), &mkIndex); + for (int x = 0; x < exCount - 1; x++) mkIndex += sprintf(mkTextUpdated + exListStartIndex + mkIndex, TextFormat(" %s/%s \\\n", exCatList[x].category, exCatList[x].name)); + mkIndex += sprintf(mkTextUpdated + exListStartIndex + mkIndex, TextFormat(" %s/%s\n\n", exCatList[exCount - 1].category, exCatList[exCount - 1].name)); UnloadExamplesData(exCatList); } // Add the remaining part of the original file - TextAppend(mkTextUpdated + mkIndex, mkText + exListEndIndex, &mkIndex); + memcpy(mkTextUpdated + exListStartIndex + mkIndex, mkText + exListEndIndex, strlen(mkText) - exListEndIndex); // Save updated file SaveFileText(TextFormat("%s/Makefile", exBasePath), mkTextUpdated); @@ -351,12 +348,13 @@ int main(int argc, char *argv[]) "..\\..\\examples\\core", TextFormat("..\\..\\examples\\%s", exCategory)); // Edit: raylib/projects/VS2022/raylib.sln --> Add new example project - system(TextFormat("dotnet solution raylib.sln add %s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName)); + system(TextFormat("dotnet solution %s/../projects/VS2022/raylib.sln add %s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exBasePath, exName)); //------------------------------------------------------------------------------------------------ // Edit: raylib.com/common/examples.js --> Add new example // NOTE: Entries format: exampleEntry('⭐️☆☆☆' , 'core' , 'basic_window'), //------------------------------------------------------------------------------------------------ + /* char *jsText = LoadFileText(TextFormat("%s/../common/examples.js", exWebPath)); char *jsTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated examples.js copy, 2MB @@ -377,7 +375,7 @@ int main(int argc, char *argv[]) //char stars[16] = { 0 }; //for (int s = 0; s < 4; s++) strcpy(stars + 3) - TextAppend(jsTextUpdated + mkIndex, + TextAppend(jsTextUpdated + jsIndex, TextFormat(" exampleEntry('%s%s%s%s' , '%s' , '%s'),\n", "⭐️", "☆", "☆", "☆", exCatList[x].category, @@ -392,9 +390,10 @@ int main(int argc, char *argv[]) TextAppend(jsTextUpdated + jsIndex, jsText + exListEndIndex, &jsIndex); // Save updated file - SaveFileText(TextFormat("%s/Makefile", exBasePath), jsTextUpdated); + SaveFileText(TextFormat("%s/../common/examples.js", exWebPath), jsTextUpdated); UnloadFileText(jsText); RL_FREE(jsTextUpdated); + */ //------------------------------------------------------------------------------------------------ // Recompile example (on raylib side) @@ -405,7 +404,7 @@ int main(int argc, char *argv[]) // Compile to: raylib.com/examples//_example_name.js // TODO: WARNING: This .BAT is not portable and it does not consider RESOURCES for Web properly, // Makefile.Web should be used... but it requires proper editing first! - system(TextFormat("%s/../build_example_web.bat %s/%s", exBasePath, exCategory, exName)); + system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exCategory, exName)); // Copy results to web side FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), @@ -527,6 +526,7 @@ static rlExampleInfo *LoadExamplesData(const char *fileName, const char *categor rlExampleInfo *exInfo = (rlExampleInfo *)RL_CALLOC(MAX_EXAMPLES_INFO, sizeof(rlExampleInfo)); int exCounter = 0; + *exCount = 0; char *text = LoadFileText(fileName); @@ -643,7 +643,7 @@ static int FileRemove(const char *fileName) // WARNING: It does not copy text data, just returns line pointers static const char **GetTextLines(const char *text, int *count) { - #define MAX_TEXT_LINE_PTRS 128 + #define MAX_TEXT_LINE_PTRS 512 static const char *linePtrs[MAX_TEXT_LINE_PTRS] = { 0 }; for (int i = 0; i < MAX_TEXT_LINE_PTRS; i++) linePtrs[i] = NULL; // Init NULL pointers to substrings From b044b5295540e230ee380a69105aea16e3076d17 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 2 Aug 2025 19:43:27 +0200 Subject: [PATCH 109/328] UPDATED: `examples.js` example addition working --- examples/rexm.c | 52 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index 5906c3ae7..be7f22325 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -290,6 +290,7 @@ int main(int argc, char *argv[]) // Edit: raylib/examples/Makefile --> Add new example //------------------------------------------------------------------------------------------------ + /* char *mkText = LoadFileText(TextFormat("%s/Makefile", exBasePath)); char *mkTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated Makefile copy, 2MB @@ -320,6 +321,7 @@ int main(int argc, char *argv[]) SaveFileText(TextFormat("%s/Makefile", exBasePath), mkTextUpdated); UnloadFileText(mkText); RL_FREE(mkTextUpdated); + */ //------------------------------------------------------------------------------------------------ // Edit: raylib/examples/Makefile.Web --> Add new example @@ -354,46 +356,60 @@ int main(int argc, char *argv[]) // Edit: raylib.com/common/examples.js --> Add new example // NOTE: Entries format: exampleEntry('⭐️☆☆☆' , 'core' , 'basic_window'), //------------------------------------------------------------------------------------------------ - /* + char *jsText = LoadFileText(TextFormat("%s/../common/examples.js", exWebPath)); char *jsTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated examples.js copy, 2MB - exListStartIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_START"); - exListEndIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_END"); + int exListStartIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_START"); + int exListEndIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_END"); - int jsIndex = exListStartIndex; + int mkIndex = 0; memcpy(jsTextUpdated, jsText, exListStartIndex); - TextAppend(jsTextUpdated + jsIndex, "//EXAMPLE_DATA_LIST_START\n", &jsIndex); - TextAppend(jsTextUpdated + jsIndex, "var exampleData = [\n", &jsIndex); + mkIndex = sprintf(jsTextUpdated + exListStartIndex, "#EXAMPLES_LIST_START\n"); + + int jsIndex = 0; + memcpy(jsTextUpdated, jsText, exListStartIndex); + jsIndex = sprintf(jsTextUpdated + exListStartIndex, "//EXAMPLE_DATA_LIST_START\n"); + jsIndex += sprintf(jsTextUpdated + exListStartIndex + jsIndex, " var exampleData = [\n"); // NOTE: We avoid "others" category for (int i = 0, exCount = 0; i < MAX_EXAMPLE_CATEGORIES - 1; i++) { - rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], true, &exCount); + rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], false, &exCount); for (int x = 0; x < exCount; x++) { - //char stars[16] = { 0 }; - //for (int s = 0; s < 4; s++) strcpy(stars + 3) - - TextAppend(jsTextUpdated + jsIndex, - TextFormat(" exampleEntry('%s%s%s%s' , '%s' , '%s'),\n", - "⭐️", "☆", "☆", "☆", - exCatList[x].category, - exCatList[x].name + strlen(exCatList[x].category) + 1), - &jsIndex); + char stars[16] = { 0 }; + for (int s = 0; s < 4; s++) + { + if (s < exCatList[x].stars) strcpy(stars + 3*s, "⭐️"); + else strcpy(stars + 3*s, "☆"); + } + + if ((i == 6) && (x == (exCount - 1))) + { + // Last line to add, special case to consider + jsIndex += sprintf(jsTextUpdated + exListStartIndex + jsIndex, + TextFormat(" exampleEntry('%s', '%s', '%s')];\n", stars, exCatList[x].category, exCatList[x].name + strlen(exCatList[x].category) + 1)); + } + else + { + jsIndex += sprintf(jsTextUpdated + exListStartIndex + jsIndex, + TextFormat(" exampleEntry('%s', '%s', '%s'),\n", stars, exCatList[x].category, exCatList[x].name + strlen(exCatList[x].category) + 1)); + + } } UnloadExamplesData(exCatList); } // Add the remaining part of the original file - TextAppend(jsTextUpdated + jsIndex, jsText + exListEndIndex, &jsIndex); + memcpy(jsTextUpdated + exListStartIndex + jsIndex, jsText + exListEndIndex, strlen(jsText) - exListEndIndex); // Save updated file SaveFileText(TextFormat("%s/../common/examples.js", exWebPath), jsTextUpdated); UnloadFileText(jsText); RL_FREE(jsTextUpdated); - */ + //------------------------------------------------------------------------------------------------ // Recompile example (on raylib side) From 19484533947cf2bbbb83a2bec6dae2dfa0221471 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 2 Aug 2025 20:11:31 +0200 Subject: [PATCH 110/328] Update README.md --- examples/README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/examples/README.md b/examples/README.md index 666fda04b..42a3a3de0 100644 --- a/examples/README.md +++ b/examples/README.md @@ -20,7 +20,7 @@ You may find it easier to use than other toolchains, especially when it comes to ### category: core -Examples using raylib core platform functionality like window creation, inputs, drawing modes and system functionality. +Examples using raylib [core](../src/rcore.c) platform functionality like window creation, inputs, drawing modes and system functionality. | ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | |----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| @@ -63,7 +63,7 @@ Examples using raylib core platform functionality like window creation, inputs, ### category: shapes -Examples using raylib shapes drawing functionality, provided by raylib [shapes](../src/shapes.c) module. +Examples using raylib shapes drawing functionality, provided by raylib [shapes](../src/rshapes.c) module. | ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | |----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| @@ -87,9 +87,10 @@ Examples using raylib shapes drawing functionality, provided by raylib [shapes]( | 53 | [shapes_splines_drawing](shapes/shapes_splines_drawing.c) | shapes_splines_drawing | ⭐️⭐️⭐️☆ | 5.0 | 5.0 | [Ray](https://github.com/raysan5) | | 54 | [shapes_digital_clock](shapes/shapes_digital_clock.c) | shapes_digital_clock | ⭐️⭐️☆☆ | 5.5 | 5.5 | [Hamza RAHAL](https://github.com/rhmz-rhl) | | 55 | [shapes_double_pendulum](shapes/shapes_double_pendulum.c) | shapes_double_pendulum | ⭐️⭐️☆☆ | 5.5 | 5.5 | [JoeCheong](https://github.com/Joecheong2006) | + ### category: textures -Examples using raylib textures functionality, including image/textures loading/generation and drawing, provided by raylib [textures](../src/textures.c) modul +Examples using raylib textures functionality, including image/textures loading/generation and drawing, provided by raylib [textures](../src/rtextures.c) module. | ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | |----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| @@ -122,7 +123,7 @@ Examples using raylib textures functionality, including image/textures loading/g ### category: text -Examples using raylib text functionality, including sprite fonts loading/generation and text drawing, provided by raylib [text](../src/text.c) module. +Examples using raylib text functionality, including sprite fonts loading/generation and text drawing, provided by raylib [text](../src/rtext.c) module. | ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | |----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| @@ -141,7 +142,7 @@ Examples using raylib text functionality, including sprite fonts loading/generat ### category: models -Examples using raylib models functionality, including models loading/generation and drawing, provided by raylib [models](../src/models.c) module. +Examples using raylib models functionality, including models loading/generation and drawing, provided by raylib [models](../src/rmodels.c) module. | ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | |----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| @@ -206,7 +207,7 @@ Examples using raylib shaders functionality, including shaders loading, paramete ### category: audio -Examples using raylib audio functionality, including sound/music loading and playing. This functionality is provided by raylib [raudio](../src/raudio.c) module. Note this module can be used standalone independently of raylib, check [raudio_standalone](others/raudio_standalone.c) example. +Examples using raylib audio functionality, including sound/music loading and playing. This functionality is provided by raylib [raudio](../src/raudio.c) module. Note this module can be used standalone independently of raylib. | ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | |----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| From ffe76a4b670716c5ff32626dfa0448729884b03f Mon Sep 17 00:00:00 2001 From: Jeff Myers Date: Sat, 2 Aug 2025 14:58:05 -0700 Subject: [PATCH 111/328] Don't Upload Meshes in LoadObj, LoadModel will upload them. None of the other interchange format readers upload --- src/rmodels.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/rmodels.c b/src/rmodels.c index 246c2b0a3..1a181c843 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -4501,8 +4501,6 @@ static Model LoadOBJ(const char *fileName) tinyobj_shapes_free(objShapes, objShapeCount); tinyobj_materials_free(objMaterials, objMaterialCount); - for (int i = 0; i < model.meshCount; i++) UploadMesh(model.meshes + i, true); - // Restore current working directory if (CHDIR(currentDir) != 0) { From 73baaeeb2e09b0e3b6ae9e69c9d813e7980f33a4 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 3 Aug 2025 01:17:50 +0200 Subject: [PATCH 112/328] REVIEWED: `LoadTextLines()` --- examples/rexm.c | 71 ++++++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index be7f22325..db9792e92 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -102,7 +102,8 @@ static void UnloadExamplesData(rlExampleInfo *exInfo); // Get text lines (by line-breaks '\n') // WARNING: It does not copy text data, just returns line pointers -static const char **GetTextLines(const char *text, int *count); +static char **LoadTextLines(const char *text, int *count); +static void UnloadTextLines(char **text); // raylib example line info parser // Parses following line format: core/core_basic_window;⭐️☆☆☆;1.0;1.0;"Ray"/@raysan5 @@ -356,7 +357,7 @@ int main(int argc, char *argv[]) // Edit: raylib.com/common/examples.js --> Add new example // NOTE: Entries format: exampleEntry('⭐️☆☆☆' , 'core' , 'basic_window'), //------------------------------------------------------------------------------------------------ - + /* char *jsText = LoadFileText(TextFormat("%s/../common/examples.js", exWebPath)); char *jsTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated examples.js copy, 2MB @@ -395,7 +396,6 @@ int main(int argc, char *argv[]) { jsIndex += sprintf(jsTextUpdated + exListStartIndex + jsIndex, TextFormat(" exampleEntry('%s', '%s', '%s'),\n", stars, exCatList[x].category, exCatList[x].name + strlen(exCatList[x].category) + 1)); - } } @@ -409,7 +409,7 @@ int main(int argc, char *argv[]) SaveFileText(TextFormat("%s/../common/examples.js", exWebPath), jsTextUpdated); UnloadFileText(jsText); RL_FREE(jsTextUpdated); - + */ //------------------------------------------------------------------------------------------------ // Recompile example (on raylib side) @@ -549,21 +549,21 @@ static rlExampleInfo *LoadExamplesData(const char *fileName, const char *categor if (text != NULL) { int lineCount = 0; - const char **linePtrs = GetTextLines(text, &lineCount); + const char **lines = LoadTextLines(text, &lineCount); for (int i = 0; i < lineCount; i++) { // Basic validation for lines start categories - if ((linePtrs[i][0] != '#') && - ((linePtrs[i][0] == 'c') || // core - (linePtrs[i][0] == 's') || // shapes, shaders - (linePtrs[i][0] == 't') || // textures, text - (linePtrs[i][0] == 'm') || // models - (linePtrs[i][0] == 'a') || // audio - (linePtrs[i][0] == 'o'))) // others + if ((lines[i][0] != '#') && + ((lines[i][0] == 'c') || // core + (lines[i][0] == 's') || // shapes, shaders + (lines[i][0] == 't') || // textures, text + (lines[i][0] == 'm') || // models + (lines[i][0] == 'a') || // audio + (lines[i][0] == 'o'))) // others { rlExampleInfo info = { 0 }; - int result = ParseExampleInfoLine(linePtrs[i], &info); + int result = ParseExampleInfoLine(lines[i], &info); if (result == 1) // Success on parsing { if (strcmp(category, "ALL") == 0) @@ -655,34 +655,37 @@ static int FileRemove(const char *fileName) return result; } -// Get text lines (by line-breaks '\n') -// WARNING: It does not copy text data, just returns line pointers -static const char **GetTextLines(const char *text, int *count) +// Load text lines +static char **LoadTextLines(const char *text, int *count) { - #define MAX_TEXT_LINE_PTRS 512 - - static const char *linePtrs[MAX_TEXT_LINE_PTRS] = { 0 }; - for (int i = 0; i < MAX_TEXT_LINE_PTRS; i++) linePtrs[i] = NULL; // Init NULL pointers to substrings + #define MAX_TEXT_LINES 512 + #define MAX_TEXT_LINE_LEN 256 + char **lines = (char **)RL_CALLOC(MAX_TEXT_LINES, sizeof(char *)); + for (int i = 0; i < MAX_TEXT_LINES; i++) lines[i] = (char *)RL_CALLOC(MAX_TEXT_LINE_LEN, 1); int textSize = (int)strlen(text); + int k = 0; - linePtrs[0] = text; - int len = 0; - *count = 1; - - for (int i = 0, k = 0; (i < textSize) && (*count < MAX_TEXT_LINE_PTRS); i++) + for (int i = 0, len = 0; (i < textSize) && (k < MAX_TEXT_LINES); i++) { if (text[i] == '\n') { - k++; - linePtrs[k] = &text[i + 1]; // WARNING: next value is valid? + strncpy(lines[k], &text[i - len], len); len = 0; - *count += 1; + k++; } else len++; } - return linePtrs; + *count += k; + return lines; +} + +// Unload text lines +static void UnloadTextLines(char **lines) +{ + for (int i = 0; i < MAX_TEXT_LINES; i++) RL_FREE(lines[i]); + RL_FREE(lines); } // raylib example line info parser @@ -692,7 +695,7 @@ static int ParseExampleInfoLine(const char *line, rlExampleInfo *entry) #define MAX_EXAMPLE_INFO_LINE_LEN 512 char temp[MAX_EXAMPLE_INFO_LINE_LEN] = { 0 }; - strncpy(temp, line, MAX_EXAMPLE_INFO_LINE_LEN); // WARNING: Copy is needed because strtok() modifies string, adds '\0' + strncpy(temp, line, MAX_EXAMPLE_INFO_LINE_LEN); temp[MAX_EXAMPLE_INFO_LINE_LEN - 1] = '\0'; // Ensure null termination int tokenCount = 0; @@ -721,10 +724,10 @@ static int ParseExampleInfoLine(const char *line, rlExampleInfo *entry) entry->verCreated = strtof(tokens[3], NULL); entry->verUpdated = strtof(tokens[4], NULL); - // Get author and github - char *quote1 = strchr(tokens[5], '"'); - char *quote2 = quote1? strchr(quote1 + 1, '"') : NULL; - if (quote1 && quote2) strcpy(entry->author, quote1 + 1); + // Get author and github + if (tokens[5][0] == '"') tokens[5] += 1; + if (tokens[5][strlen(tokens[5]) - 1] == '"') tokens[5][strlen(tokens[5]) - 1] = '\0'; + strcpy(entry->author, tokens[5]); strcpy(entry->authorGitHub, tokens[6]); return 1; From 6ddc9251c209a67cc733a0c81d63d6f988a0fc32 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 3 Aug 2025 01:18:19 +0200 Subject: [PATCH 113/328] UPDATE: `README.md` example addition working --- examples/rexm.c | 91 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 88 insertions(+), 3 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index db9792e92..19c6124b6 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -334,11 +334,96 @@ int main(int argc, char *argv[]) // Edit: raylib/examples/README.md --> Add new example //------------------------------------------------------------------------------------------------ - // TODO: Use [examples_list.txt] to update/regen README.md - //Look for "| 01 | " + // NOTE: Using [examples_list.txt] to update/regen README.md // Lines format: | 01 | [core_basic_window](core/core_basic_window.c) | core_basic_window | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | - + char *mdText = LoadFileText(TextFormat("%s/README.md", exBasePath)); + char *mdTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated examples.js copy, 2MB + int mdListStartIndex = TextFindIndex(mdText, "| 01 | "); + + int mdIndex = 0; + memcpy(mdTextUpdated, mdText, mdListStartIndex); + + // NOTE: We keep a global examples counter + for (int i = 0, catCount = 0, gCount = 0; i < MAX_EXAMPLE_CATEGORIES; i++) + { + // Every category includes some introductory text, as it is quite short, just copying it here + // NOTE: "core" text already placed in the file + if (i == 1) // "shapes" + { + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: shapes\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "Examples using raylib shapes drawing functionality, provided by raylib [shapes](../src/rshapes.c) module.\n\n"); + } + else if (i == 2) // "textures" + { + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: textures\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "Examples using raylib textures functionality, including image/textures loading/generation and drawing, provided by raylib [textures](../src/rtextures.c) module.\n\n"); + } + else if (i == 3) // "text" + { + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: text\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "Examples using raylib text functionality, including sprite fonts loading/generation and text drawing, provided by raylib [text](../src/rtext.c) module.\n\n"); + } + else if (i == 4) // "models" + { + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: models\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "Examples using raylib models functionality, including models loading/generation and drawing, provided by raylib [models](../src/rmodels.c) module.\n\n"); + } + else if (i == 5) // "shaders" + { + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: shaders\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "Examples using raylib shaders functionality, including shaders loading, parameters configuration and drawing using them (model shaders and postprocessing shaders). This functionality is directly provided by raylib [rlgl](../src/rlgl.c) module.\n\n"); + } + else if (i == 6) // "audio" + { + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: audio\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "Examples using raylib audio functionality, including sound/music loading and playing. This functionality is provided by raylib [raudio](../src/raudio.c) module. Note this module can be used standalone independently of raylib.\n\n"); + } + else if (i == 7) // "others" + { + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: others\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "Examples showing raylib misc functionality that does not fit in other categories, like standalone modules usage or examples integrating external libraries.\n\n"); + } + + if (i > 0) + { + // Table header required + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "| ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer |\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "|----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------|\n"); + } + + rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], false, &catCount); + for (int x = 0; x < catCount; x++) + { + char stars[16] = { 0 }; + for (int s = 0; s < 4; s++) + { + if (s < exCatList[x].stars) strcpy(stars + 3*s, "⭐️"); + else strcpy(stars + 3*s, "☆"); + } + + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + TextFormat("| %02i | [%s](%s/%s.c) | \"%s\" | %s | %.1f | %.1f | [%s](https://github.com/%s) |\n", + gCount + 1, exCatList[x].name, exCatList[x].category, exCatList[x].name, exCatList[x].category, exCatList[x].name, exCatList[x].name, + stars, exCatList[x].verCreated, exCatList[x].verUpdated, exCatList[x].author, exCatList[x].authorGitHub + 1)); + + gCount++; + } + + UnloadExamplesData(exCatList); + } + + // Save updated file + SaveFileText(TextFormat("%s/README.md", exBasePath), mdTextUpdated); + UnloadFileText(mdText); + RL_FREE(mdTextUpdated); //------------------------------------------------------------------------------------------------ // Create: raylib/projects/VS2022/examples/_example_name.vcxproj From c146be16cb9a5c93b0d80a1ffc2a312db2a8b696 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 3 Aug 2025 09:43:38 +0200 Subject: [PATCH 114/328] Update rexm.c --- examples/rexm.c | 89 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 60 insertions(+), 29 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index 19c6124b6..6804546f5 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -223,6 +223,7 @@ int main(int argc, char *argv[]) char *exTextUpdated[6] = { 0 }; int exIndex = TextFindIndex(exText, "/****************"); + // Update required info with some defaults exTextUpdated[0] = TextReplace(exText + exIndex, "", exCategory); exTextUpdated[1] = TextReplace(exTextUpdated[0], "", exName + strlen(exCategory) + 1); //TextReplace(newExample, "", "Ray"); @@ -236,13 +237,21 @@ int main(int argc, char *argv[]) } case 2: // Add: Example from command-line input filename { - // Create: raylib/examples//_example_name.c + // Add: raylib/examples//_example_name.c if (opCode != 1) FileCopy(inFileName, TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + // TODO: Example to be added could be provided as a .zip, containing resources! + // Create: raylib/examples//_example_name.png FileCopy(exTemplateScreenshot, TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); // WARNING: To be updated manually! // Copy: raylib/examples//resources/... // WARNING: To be updated manually! + + // TODO: Copy provided resources to respective directories + // Possible strategy: + // 1. Scan code file for resources paths -> Resources list + // 2. Verify paths: resource files exist + // 3. Copy files to required resource dir // Add example to the main collection list, if not already there // NOTE: Required format: shapes;shapes_basic_shapes;⭐️☆☆☆;1.0;4.2;"Ray";@raysan5 @@ -291,45 +300,72 @@ int main(int argc, char *argv[]) // Edit: raylib/examples/Makefile --> Add new example //------------------------------------------------------------------------------------------------ - /* char *mkText = LoadFileText(TextFormat("%s/Makefile", exBasePath)); char *mkTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated Makefile copy, 2MB - int exListStartIndex = TextFindIndex(mkText, "#EXAMPLES_LIST_START"); - int exListEndIndex = TextFindIndex(mkText, "#EXAMPLES_LIST_END"); + int mkListStartIndex = TextFindIndex(mkText, "#EXAMPLES_LIST_START"); + int mkListEndIndex = TextFindIndex(mkText, "#EXAMPLES_LIST_END"); int mkIndex = 0; - memcpy(mkTextUpdated, mkText, exListStartIndex); - mkIndex = sprintf(mkTextUpdated + exListStartIndex, "#EXAMPLES_LIST_START\n"); + memcpy(mkTextUpdated, mkText, mkListStartIndex); + mkIndex = sprintf(mkTextUpdated + mkListStartIndex, "#EXAMPLES_LIST_START\n"); for (int i = 0; i < MAX_EXAMPLE_CATEGORIES; i++) { - mkIndex += sprintf(mkTextUpdated + exListStartIndex + mkIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i]))); + mkIndex += sprintf(mkTextUpdated + mkListStartIndex + mkIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i]))); int exCount = 0; rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], true, &exCount); - for (int x = 0; x < exCount - 1; x++) mkIndex += sprintf(mkTextUpdated + exListStartIndex + mkIndex, TextFormat(" %s/%s \\\n", exCatList[x].category, exCatList[x].name)); - mkIndex += sprintf(mkTextUpdated + exListStartIndex + mkIndex, TextFormat(" %s/%s\n\n", exCatList[exCount - 1].category, exCatList[exCount - 1].name)); + for (int x = 0; x < exCount - 1; x++) mkIndex += sprintf(mkTextUpdated + mkListStartIndex + mkIndex, TextFormat(" %s/%s \\\n", exCatList[x].category, exCatList[x].name)); + mkIndex += sprintf(mkTextUpdated + mkListStartIndex + mkIndex, TextFormat(" %s/%s\n\n", exCatList[exCount - 1].category, exCatList[exCount - 1].name)); UnloadExamplesData(exCatList); } // Add the remaining part of the original file - memcpy(mkTextUpdated + exListStartIndex + mkIndex, mkText + exListEndIndex, strlen(mkText) - exListEndIndex); + memcpy(mkTextUpdated + mkListStartIndex + mkIndex, mkText + mkListEndIndex, strlen(mkText) - mkListEndIndex); // Save updated file SaveFileText(TextFormat("%s/Makefile", exBasePath), mkTextUpdated); UnloadFileText(mkText); RL_FREE(mkTextUpdated); - */ //------------------------------------------------------------------------------------------------ // Edit: raylib/examples/Makefile.Web --> Add new example //------------------------------------------------------------------------------------------------ - - // TODO. - + char *mkwText = LoadFileText(TextFormat("%s/Makefile.Web", exBasePath)); + char *mkwTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated Makefile copy, 2MB + + int mkwListStartIndex = TextFindIndex(mkwText, "#EXAMPLES_LIST_START"); + int mkwListEndIndex = TextFindIndex(mkwText, "#EXAMPLES_LIST_END"); + + int mkwIndex = 0; + memcpy(mkwTextUpdated, mkwText, mkwListStartIndex); + mkwIndex = sprintf(mkwTextUpdated + mkwListStartIndex, "#EXAMPLES_LIST_START\n"); + + for (int i = 0; i < MAX_EXAMPLE_CATEGORIES; i++) + { + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i]))); + + int exCount = 0; + rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], true, &exCount); + + for (int x = 0; x < exCount - 1; x++) mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat(" %s/%s \\\n", exCatList[x].category, exCatList[x].name)); + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat(" %s/%s\n\n", exCatList[exCount - 1].category, exCatList[exCount - 1].name)); + + UnloadExamplesData(exCatList); + } + + // Add the remaining part of the original file + memcpy(mkwTextUpdated + mkwListStartIndex + mkwIndex, mkwText + mkwListEndIndex, strlen(mkwText) - mkwListEndIndex); + + // TODO: Add new example target, considering resources + + // Save updated file + SaveFileText(TextFormat("%s/Makefile.Web", exBasePath), mkwTextUpdated); + UnloadFileText(mkwText); + RL_FREE(mkwTextUpdated); //------------------------------------------------------------------------------------------------ // Edit: raylib/examples/README.md --> Add new example @@ -442,21 +478,16 @@ int main(int argc, char *argv[]) // Edit: raylib.com/common/examples.js --> Add new example // NOTE: Entries format: exampleEntry('⭐️☆☆☆' , 'core' , 'basic_window'), //------------------------------------------------------------------------------------------------ - /* char *jsText = LoadFileText(TextFormat("%s/../common/examples.js", exWebPath)); char *jsTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated examples.js copy, 2MB - int exListStartIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_START"); - int exListEndIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_END"); - - int mkIndex = 0; - memcpy(jsTextUpdated, jsText, exListStartIndex); - mkIndex = sprintf(jsTextUpdated + exListStartIndex, "#EXAMPLES_LIST_START\n"); + int jsListStartIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_START"); + int jsListEndIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_END"); int jsIndex = 0; - memcpy(jsTextUpdated, jsText, exListStartIndex); - jsIndex = sprintf(jsTextUpdated + exListStartIndex, "//EXAMPLE_DATA_LIST_START\n"); - jsIndex += sprintf(jsTextUpdated + exListStartIndex + jsIndex, " var exampleData = [\n"); + memcpy(jsTextUpdated, jsText, jsListStartIndex); + jsIndex = sprintf(jsTextUpdated + jsListStartIndex, "//EXAMPLE_DATA_LIST_START\n"); + jsIndex += sprintf(jsTextUpdated + jsListStartIndex + jsIndex, " var exampleData = [\n"); // NOTE: We avoid "others" category for (int i = 0, exCount = 0; i < MAX_EXAMPLE_CATEGORIES - 1; i++) @@ -474,12 +505,12 @@ int main(int argc, char *argv[]) if ((i == 6) && (x == (exCount - 1))) { // Last line to add, special case to consider - jsIndex += sprintf(jsTextUpdated + exListStartIndex + jsIndex, + jsIndex += sprintf(jsTextUpdated + jsListStartIndex + jsIndex, TextFormat(" exampleEntry('%s', '%s', '%s')];\n", stars, exCatList[x].category, exCatList[x].name + strlen(exCatList[x].category) + 1)); } else { - jsIndex += sprintf(jsTextUpdated + exListStartIndex + jsIndex, + jsIndex += sprintf(jsTextUpdated + jsListStartIndex + jsIndex, TextFormat(" exampleEntry('%s', '%s', '%s'),\n", stars, exCatList[x].category, exCatList[x].name + strlen(exCatList[x].category) + 1)); } } @@ -488,13 +519,12 @@ int main(int argc, char *argv[]) } // Add the remaining part of the original file - memcpy(jsTextUpdated + exListStartIndex + jsIndex, jsText + exListEndIndex, strlen(jsText) - exListEndIndex); + memcpy(jsTextUpdated + jsListStartIndex + jsIndex, jsText + jsListEndIndex, strlen(jsText) - jsListEndIndex); // Save updated file SaveFileText(TextFormat("%s/../common/examples.js", exWebPath), jsTextUpdated); UnloadFileText(jsText); RL_FREE(jsTextUpdated); - */ //------------------------------------------------------------------------------------------------ // Recompile example (on raylib side) @@ -542,7 +572,8 @@ int main(int argc, char *argv[]) // Recompile example (on raylib side) // NOTE: Tools requirements: emscripten, w64devkit - system(TextFormat("%s/../build_example_web.bat %s/%s", exBasePath, exCategory, exName)); + // TODO: Avoid platform-specific .BAT file + system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exCategory, exName)); // Copy results to web side FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), From 603219d6d644993bc21af0bd1ceb1b18451daf4b Mon Sep 17 00:00:00 2001 From: Karim Ahmed Date: Sun, 3 Aug 2025 18:48:24 +0100 Subject: [PATCH 115/328] Removed verbose logging on SDL3. Happens every time the property is read! --- src/platforms/rcore_desktop_sdl.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/platforms/rcore_desktop_sdl.c b/src/platforms/rcore_desktop_sdl.c index 82337dd4e..6126b80d1 100644 --- a/src/platforms/rcore_desktop_sdl.c +++ b/src/platforms/rcore_desktop_sdl.c @@ -1104,8 +1104,7 @@ Vector2 GetWindowScaleDPI(void) TRACELOG(LOG_WARNING, "GetWindowScaleDPI() not implemented on target platform"); #else scale.x = SDL_GetWindowDisplayScale(platform.window); - scale.y = scale.x; - TRACELOG(LOG_INFO, "WindowScaleDPI is %f", scale.x); + scale.y = scale.x; #endif return scale; From 8f8a5ada60868953d0f9e911ead91bddca2a9f70 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 3 Aug 2025 21:19:55 +0200 Subject: [PATCH 116/328] REVIEWED: Make sure environment is set in same process and not a child one --- examples/build_example_web.bat | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/build_example_web.bat b/examples/build_example_web.bat index f09cbcc0b..0fcdc6413 100644 --- a/examples/build_example_web.bat +++ b/examples/build_example_web.bat @@ -33,11 +33,11 @@ cmd /c if exist %FILENAME%.data del /F %FILENAME%.data echo :: Setup emsdk environment :: -------------------------- -cmd /c %EMSDK_PATH%\emsdk_env.bat -echo +call %EMSDK_PATH%\emsdk_env.bat +echo on :: Compile program :: ----------------------- -cmd /c %CC% --version -cmd /c %CC% -o %FILENAME%.html %FILENAME%.c %CFLAGS% %LDFLAGS% %LDLIBS% %RESOURCES% +C: +%CC% -o %FILENAME%.html %FILENAME%.c %CFLAGS% %LDFLAGS% %LDLIBS% %RESOURCES% cd .. echo From d194b8d5036270d03d1a093a9e33e7282dfbb8cc Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 3 Aug 2025 21:20:35 +0200 Subject: [PATCH 117/328] ADDED: Some security checks to verify examples categories provided --- examples/rexm.c | 108 +++++++++++++++++++++++++++++++++++++----------- 1 file changed, 84 insertions(+), 24 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index 6804546f5..c090b69f9 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -152,11 +152,27 @@ int main(int argc, char *argv[]) else if (argc > 3) LOG("WARNING: Too many arguments provided\n"); else { - // TODO: Additional security checks for file name? + // Security checks for file name to verify category is included + int catIndex = TextFindIndex(argv[2], "_"); + if (catIndex > 3) + { + char cat[12] = { 0 }; + strncpy(cat, argv[2], catIndex); + bool catFound = false; + for (int i = 0; i < MAX_EXAMPLE_CATEGORIES; i++) + { + if (TextIsEqual(cat, exCategories[i])) { catFound = true; break; } + } - strcpy(exName, argv[2]); // Register filename for new example creation - strncpy(exCategory, exName, TextFindIndex(exName, "_")); - opCode = 1; + if (catFound) + { + strcpy(exName, argv[2]); // Register filename for new example creation + strncpy(exCategory, exName, TextFindIndex(exName, "_")); + opCode = OP_CREATE; + } + else LOG("WARNING: Example category is not valid\n"); + } + else LOG("WARNING: Example name does not include category\n"); } } else if (strcmp(argv[1], "add") == 0) @@ -170,10 +186,28 @@ int main(int argc, char *argv[]) { if (FileExists(inFileName)) { - strcpy(inFileName, argv[2]); // Register filename for addition - strcpy(exName, GetFileNameWithoutExt(argv[2])); // Register example name - strncpy(exCategory, exName, TextFindIndex(exName, "_")); - opCode = 2; + // Security checks for file name to verify category is included + int catIndex = TextFindIndex(argv[2], "_"); + if (catIndex > 3) + { + char cat[12] = { 0 }; + strncpy(cat, argv[2], catIndex); + bool catFound = false; + for (int i = 0; i < MAX_EXAMPLE_CATEGORIES; i++) + { + if (TextIsEqual(cat, exCategories[i])) { catFound = true; break; } + } + + if (catFound) + { + strcpy(inFileName, argv[2]); // Register filename for addition + strcpy(exName, GetFileNameWithoutExt(argv[2])); // Register example name + strncpy(exCategory, exName, TextFindIndex(exName, "_")); + opCode = OP_ADD; + } + else LOG("WARNING: Example category is not valid\n"); + } + else LOG("WARNING: Example name does not include category\n"); } else LOG("WARNING: Input file not found, include path\n"); } @@ -186,11 +220,27 @@ int main(int argc, char *argv[]) else if (argc > 4) LOG("WARNING: Too many arguments provided\n"); else { - strcpy(exName, argv[2]); // Register example name - strncpy(exCategory, exName, TextFindIndex(exName, "_")); - strcpy(exRename, argv[3]); - // TODO: Consider rename with change of category - opCode = 3; + // Verify example exists in collection to be removed + char *exColInfo = LoadFileText(exCollectionListPath); + if (TextFindIndex(exColInfo, argv[2]) != -1) // Example in the collection + { + strcpy(exName, argv[2]); // Register example name + strncpy(exCategory, exName, TextFindIndex(exName, "_")); + strcpy(exRename, argv[3]); + char exReCategory[32] = { 0 }; + strncpy(exReCategory, exRename, TextFindIndex(exRename, "_")); + + if (strcmp(exCategory, exReCategory) != 0) + { + // TODO: Consider rename with change of category + // Remove previous one from collection + // Add new one (copy) to collection + } + + opCode = OP_RENAME; + } + else LOG("WARNING: RENAME: Example not available in the collection\n"); + UnloadFileText(exColInfo); } } else if (strcmp(argv[1], "remove") == 0) @@ -200,20 +250,26 @@ int main(int argc, char *argv[]) else if (argc > 3) LOG("WARNING: Too many arguments provided\n"); else { - strcpy(exName, argv[2]); // Register filename for removal - opCode = 4; + // Verify example exists in collection to be removed + char *exColInfo = LoadFileText(exCollectionListPath); + if (TextFindIndex(exColInfo, argv[2]) != -1) // Example in the collection + { + strcpy(exName, argv[2]); // Register filename for removal + opCode = OP_REMOVE; + } + else LOG("WARNING: REMOVE: Example not available in the collection\n"); + UnloadFileText(exColInfo); } } else if (strcmp(argv[1], "validate") == 0) { - opCode = 5; + // Validate examples in collection + // All examples in collection match all requirements on required files + + opCode = OP_VALIDATE; } } - // Load examples collection information - //exInfo = LoadExamplesData(exCollectionListPath, "core", true, &exInfoCount); - //for (int i = 0; i < exInfoCount; i++) printf("%i - %s [%i]\n", i + 1, exInfo[i].name, exInfo[i].stars); - switch (opCode) { case 1: // Create: New example from template @@ -240,16 +296,18 @@ int main(int argc, char *argv[]) // Add: raylib/examples//_example_name.c if (opCode != 1) FileCopy(inFileName, TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); - // TODO: Example to be added could be provided as a .zip, containing resources! - // Create: raylib/examples//_example_name.png FileCopy(exTemplateScreenshot, TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); // WARNING: To be updated manually! // Copy: raylib/examples//resources/... // WARNING: To be updated manually! + // TODO: Example to be added could be provided as a .zip, containing resources! // TODO: Copy provided resources to respective directories // Possible strategy: // 1. Scan code file for resources paths -> Resources list + // Look for specific text: '.png"' + // Look for full path, previous '"' + // Be careful with shaders: '.vs"', '.fs"' -> Reconstruct path manually? // 2. Verify paths: resource files exist // 3. Copy files to required resource dir @@ -295,6 +353,8 @@ int main(int argc, char *argv[]) SaveFileText(exCollectionListPath, exColInfoUpdated); RL_FREE(exColInfoUpdated); } + else LOG("WARNING: ADD: Example is already on the collection\n"); + UnloadFileText(exColInfo); //------------------------------------------------------------------------------------------------ @@ -374,7 +434,7 @@ int main(int argc, char *argv[]) // Lines format: | 01 | [core_basic_window](core/core_basic_window.c) | core_basic_window | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | char *mdText = LoadFileText(TextFormat("%s/README.md", exBasePath)); char *mdTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated examples.js copy, 2MB - + int mdListStartIndex = TextFindIndex(mdText, "| 01 | "); int mdIndex = 0; @@ -504,7 +564,7 @@ int main(int argc, char *argv[]) if ((i == 6) && (x == (exCount - 1))) { - // Last line to add, special case to consider + // NOTE: Last line to add, special case to consider jsIndex += sprintf(jsTextUpdated + jsListStartIndex + jsIndex, TextFormat(" exampleEntry('%s', '%s', '%s')];\n", stars, exCatList[x].category, exCatList[x].name + strlen(exCatList[x].category) + 1)); } From b11d0892028fc3ef28b0914ab43d3cb14577cfd9 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 3 Aug 2025 22:56:15 +0200 Subject: [PATCH 118/328] UPDATED: Implementing file rename requirements Moved files update from collection to separate function --- examples/rexm.c | 597 ++++++++++++++++++++++++++++-------------------- 1 file changed, 345 insertions(+), 252 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index c090b69f9..88dd22cc8 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -86,6 +86,14 @@ typedef enum { static const char *exCategories[MAX_EXAMPLE_CATEGORIES] = { "core", "shapes", "textures", "text", "models", "shaders", "audio", "others" }; +// Paths required for examples management +// TODO: Avoid hardcoding path values... +static const char *exBasePath = "C:/GitHub/raylib/examples"; +static const char *exWebPath = "C:/GitHub/raylib.com/examples"; +static const char *exTemplateFilePath = "C:/GitHub/raylib/examples/examples_template.c"; +static const char *exTemplateScreenshot = "C:/GitHub/raylib/examples/examples_template.png"; +static const char *exCollectionListPath = "C:/GitHub/raylib/examples/examples_list.txt"; + //---------------------------------------------------------------------------------- // Module specific functions declaration //---------------------------------------------------------------------------------- @@ -94,6 +102,10 @@ static int FileCopy(const char *srcPath, const char *dstPath); static int FileRename(const char *fileName, const char *fileRename); static int FileRemove(const char *fileName); +// Update required files from examples collection +// UPDATES: Makefile, Makefile.Web, README.md, examples.js +static int UpdateRequiredFiles(void); + // Load examples collection information // NOTE 1: Load by category: "ALL", "core", "shapes", "textures", "text", "models", "shaders", others" // NOTE 2: Sort examples list on request flag @@ -118,18 +130,11 @@ static void SortExampleByName(rlExampleInfo *items, int count); //------------------------------------------------------------------------------------ int main(int argc, char *argv[]) { - // Paths required for examples management - // TODO: Avoid hardcoding path values... - char *exBasePath = "C:/GitHub/raylib/examples"; - char *exWebPath = "C:/GitHub/raylib.com/examples"; - char *exTemplateFilePath = "C:/GitHub/raylib/examples/examples_template.c"; - char *exTemplateScreenshot = "C:/GitHub/raylib/examples/examples_template.png"; - char *exCollectionListPath = "C:/GitHub/raylib/examples/examples_list.txt"; - char inFileName[1024] = { 0 }; // Example input filename (to be added) char exName[64] = { 0 }; // Example name, without extension: core_basic_window char exCategory[32] = { 0 }; // Example category: core + char exRecategory[32] = { 0 }; // Example re-name category: shapes char exRename[64] = { 0 }; // Example re-name, without extension int opCode = OP_NONE; // Operation code: 0-None(Help), 1-Create, 2-Add, 3-Rename, 4-Remove @@ -227,16 +232,7 @@ int main(int argc, char *argv[]) strcpy(exName, argv[2]); // Register example name strncpy(exCategory, exName, TextFindIndex(exName, "_")); strcpy(exRename, argv[3]); - char exReCategory[32] = { 0 }; - strncpy(exReCategory, exRename, TextFindIndex(exRename, "_")); - - if (strcmp(exCategory, exReCategory) != 0) - { - // TODO: Consider rename with change of category - // Remove previous one from collection - // Add new one (copy) to collection - } - + strncpy(exRecategory, exRename, TextFindIndex(exRename, "_")); opCode = OP_RENAME; } else LOG("WARNING: RENAME: Example not available in the collection\n"); @@ -358,168 +354,9 @@ int main(int argc, char *argv[]) UnloadFileText(exColInfo); //------------------------------------------------------------------------------------------------ - // Edit: raylib/examples/Makefile --> Add new example + // Update: Makefile, Makefile.Web, README.md, examples.js //------------------------------------------------------------------------------------------------ - char *mkText = LoadFileText(TextFormat("%s/Makefile", exBasePath)); - char *mkTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated Makefile copy, 2MB - - int mkListStartIndex = TextFindIndex(mkText, "#EXAMPLES_LIST_START"); - int mkListEndIndex = TextFindIndex(mkText, "#EXAMPLES_LIST_END"); - - int mkIndex = 0; - memcpy(mkTextUpdated, mkText, mkListStartIndex); - mkIndex = sprintf(mkTextUpdated + mkListStartIndex, "#EXAMPLES_LIST_START\n"); - - for (int i = 0; i < MAX_EXAMPLE_CATEGORIES; i++) - { - mkIndex += sprintf(mkTextUpdated + mkListStartIndex + mkIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i]))); - - int exCount = 0; - rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], true, &exCount); - - for (int x = 0; x < exCount - 1; x++) mkIndex += sprintf(mkTextUpdated + mkListStartIndex + mkIndex, TextFormat(" %s/%s \\\n", exCatList[x].category, exCatList[x].name)); - mkIndex += sprintf(mkTextUpdated + mkListStartIndex + mkIndex, TextFormat(" %s/%s\n\n", exCatList[exCount - 1].category, exCatList[exCount - 1].name)); - - UnloadExamplesData(exCatList); - } - - // Add the remaining part of the original file - memcpy(mkTextUpdated + mkListStartIndex + mkIndex, mkText + mkListEndIndex, strlen(mkText) - mkListEndIndex); - - // Save updated file - SaveFileText(TextFormat("%s/Makefile", exBasePath), mkTextUpdated); - UnloadFileText(mkText); - RL_FREE(mkTextUpdated); - //------------------------------------------------------------------------------------------------ - - // Edit: raylib/examples/Makefile.Web --> Add new example - //------------------------------------------------------------------------------------------------ - char *mkwText = LoadFileText(TextFormat("%s/Makefile.Web", exBasePath)); - char *mkwTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated Makefile copy, 2MB - - int mkwListStartIndex = TextFindIndex(mkwText, "#EXAMPLES_LIST_START"); - int mkwListEndIndex = TextFindIndex(mkwText, "#EXAMPLES_LIST_END"); - - int mkwIndex = 0; - memcpy(mkwTextUpdated, mkwText, mkwListStartIndex); - mkwIndex = sprintf(mkwTextUpdated + mkwListStartIndex, "#EXAMPLES_LIST_START\n"); - - for (int i = 0; i < MAX_EXAMPLE_CATEGORIES; i++) - { - mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i]))); - - int exCount = 0; - rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], true, &exCount); - - for (int x = 0; x < exCount - 1; x++) mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat(" %s/%s \\\n", exCatList[x].category, exCatList[x].name)); - mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat(" %s/%s\n\n", exCatList[exCount - 1].category, exCatList[exCount - 1].name)); - - UnloadExamplesData(exCatList); - } - - // Add the remaining part of the original file - memcpy(mkwTextUpdated + mkwListStartIndex + mkwIndex, mkwText + mkwListEndIndex, strlen(mkwText) - mkwListEndIndex); - - // TODO: Add new example target, considering resources - - // Save updated file - SaveFileText(TextFormat("%s/Makefile.Web", exBasePath), mkwTextUpdated); - UnloadFileText(mkwText); - RL_FREE(mkwTextUpdated); - //------------------------------------------------------------------------------------------------ - - // Edit: raylib/examples/README.md --> Add new example - //------------------------------------------------------------------------------------------------ - // NOTE: Using [examples_list.txt] to update/regen README.md - // Lines format: | 01 | [core_basic_window](core/core_basic_window.c) | core_basic_window | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | - char *mdText = LoadFileText(TextFormat("%s/README.md", exBasePath)); - char *mdTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated examples.js copy, 2MB - - int mdListStartIndex = TextFindIndex(mdText, "| 01 | "); - - int mdIndex = 0; - memcpy(mdTextUpdated, mdText, mdListStartIndex); - - // NOTE: We keep a global examples counter - for (int i = 0, catCount = 0, gCount = 0; i < MAX_EXAMPLE_CATEGORIES; i++) - { - // Every category includes some introductory text, as it is quite short, just copying it here - // NOTE: "core" text already placed in the file - if (i == 1) // "shapes" - { - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: shapes\n\n"); - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, - "Examples using raylib shapes drawing functionality, provided by raylib [shapes](../src/rshapes.c) module.\n\n"); - } - else if (i == 2) // "textures" - { - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: textures\n\n"); - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, - "Examples using raylib textures functionality, including image/textures loading/generation and drawing, provided by raylib [textures](../src/rtextures.c) module.\n\n"); - } - else if (i == 3) // "text" - { - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: text\n\n"); - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, - "Examples using raylib text functionality, including sprite fonts loading/generation and text drawing, provided by raylib [text](../src/rtext.c) module.\n\n"); - } - else if (i == 4) // "models" - { - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: models\n\n"); - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, - "Examples using raylib models functionality, including models loading/generation and drawing, provided by raylib [models](../src/rmodels.c) module.\n\n"); - } - else if (i == 5) // "shaders" - { - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: shaders\n\n"); - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, - "Examples using raylib shaders functionality, including shaders loading, parameters configuration and drawing using them (model shaders and postprocessing shaders). This functionality is directly provided by raylib [rlgl](../src/rlgl.c) module.\n\n"); - } - else if (i == 6) // "audio" - { - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: audio\n\n"); - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, - "Examples using raylib audio functionality, including sound/music loading and playing. This functionality is provided by raylib [raudio](../src/raudio.c) module. Note this module can be used standalone independently of raylib.\n\n"); - } - else if (i == 7) // "others" - { - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: others\n\n"); - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, - "Examples showing raylib misc functionality that does not fit in other categories, like standalone modules usage or examples integrating external libraries.\n\n"); - } - - if (i > 0) - { - // Table header required - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "| ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer |\n"); - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "|----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------|\n"); - } - - rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], false, &catCount); - for (int x = 0; x < catCount; x++) - { - char stars[16] = { 0 }; - for (int s = 0; s < 4; s++) - { - if (s < exCatList[x].stars) strcpy(stars + 3*s, "⭐️"); - else strcpy(stars + 3*s, "☆"); - } - - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, - TextFormat("| %02i | [%s](%s/%s.c) | \"%s\" | %s | %.1f | %.1f | [%s](https://github.com/%s) |\n", - gCount + 1, exCatList[x].name, exCatList[x].category, exCatList[x].name, exCatList[x].category, exCatList[x].name, exCatList[x].name, - stars, exCatList[x].verCreated, exCatList[x].verUpdated, exCatList[x].author, exCatList[x].authorGitHub + 1)); - - gCount++; - } - - UnloadExamplesData(exCatList); - } - - // Save updated file - SaveFileText(TextFormat("%s/README.md", exBasePath), mdTextUpdated); - UnloadFileText(mdText); - RL_FREE(mdTextUpdated); + UpdateRequiredFiles(); //------------------------------------------------------------------------------------------------ // Create: raylib/projects/VS2022/examples/_example_name.vcxproj @@ -534,58 +371,6 @@ int main(int argc, char *argv[]) // Edit: raylib/projects/VS2022/raylib.sln --> Add new example project system(TextFormat("dotnet solution %s/../projects/VS2022/raylib.sln add %s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exBasePath, exName)); //------------------------------------------------------------------------------------------------ - - // Edit: raylib.com/common/examples.js --> Add new example - // NOTE: Entries format: exampleEntry('⭐️☆☆☆' , 'core' , 'basic_window'), - //------------------------------------------------------------------------------------------------ - char *jsText = LoadFileText(TextFormat("%s/../common/examples.js", exWebPath)); - char *jsTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated examples.js copy, 2MB - - int jsListStartIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_START"); - int jsListEndIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_END"); - - int jsIndex = 0; - memcpy(jsTextUpdated, jsText, jsListStartIndex); - jsIndex = sprintf(jsTextUpdated + jsListStartIndex, "//EXAMPLE_DATA_LIST_START\n"); - jsIndex += sprintf(jsTextUpdated + jsListStartIndex + jsIndex, " var exampleData = [\n"); - - // NOTE: We avoid "others" category - for (int i = 0, exCount = 0; i < MAX_EXAMPLE_CATEGORIES - 1; i++) - { - rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], false, &exCount); - for (int x = 0; x < exCount; x++) - { - char stars[16] = { 0 }; - for (int s = 0; s < 4; s++) - { - if (s < exCatList[x].stars) strcpy(stars + 3*s, "⭐️"); - else strcpy(stars + 3*s, "☆"); - } - - if ((i == 6) && (x == (exCount - 1))) - { - // NOTE: Last line to add, special case to consider - jsIndex += sprintf(jsTextUpdated + jsListStartIndex + jsIndex, - TextFormat(" exampleEntry('%s', '%s', '%s')];\n", stars, exCatList[x].category, exCatList[x].name + strlen(exCatList[x].category) + 1)); - } - else - { - jsIndex += sprintf(jsTextUpdated + jsListStartIndex + jsIndex, - TextFormat(" exampleEntry('%s', '%s', '%s'),\n", stars, exCatList[x].category, exCatList[x].name + strlen(exCatList[x].category) + 1)); - } - } - - UnloadExamplesData(exCatList); - } - - // Add the remaining part of the original file - memcpy(jsTextUpdated + jsListStartIndex + jsIndex, jsText + jsListEndIndex, strlen(jsText) - jsListEndIndex); - - // Save updated file - SaveFileText(TextFormat("%s/../common/examples.js", exWebPath), jsTextUpdated); - UnloadFileText(jsText); - RL_FREE(jsTextUpdated); - //------------------------------------------------------------------------------------------------ // Recompile example (on raylib side) // NOTE: Tools requirements: emscripten, w64devkit @@ -593,6 +378,7 @@ int main(int argc, char *argv[]) // Compile to: raylib.com/examples//_example_name.data // Compile to: raylib.com/examples//_example_name.wasm // Compile to: raylib.com/examples//_example_name.js + //------------------------------------------------------------------------------------------------ // TODO: WARNING: This .BAT is not portable and it does not consider RESOURCES for Web properly, // Makefile.Web should be used... but it requires proper editing first! system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exCategory, exName)); @@ -606,25 +392,56 @@ int main(int argc, char *argv[]) TextFormat("%s/%s/%s.wasm", exWebPath, exCategory, exName)); FileCopy(TextFormat("%s/%s/%s.js", exBasePath, exCategory, exName), TextFormat("%s/%s/%s.js", exWebPath, exCategory, exName)); + //------------------------------------------------------------------------------------------------ + } break; case 3: // Rename { - // Rename all required files - rename(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName), - TextFormat("%s/%s/%s.c", exBasePath, exCategory, exRename)); - rename(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName), - TextFormat("%s/%s/%s.png", exBasePath, exCategory, exRename)); + // NOTE: At this point provided values have been validated: + // exName, exCategory, exRename, exRecategory + if (strcmp(exCategory, exRecategory) == 0) + { + // Rename example on collection + FileTextReplace(exCollectionListPath, TextFormat("%s;%s", exCategory, exName), + TextFormat("%s;%s", exRecategory, exRename)); - FileTextReplace(TextFormat("%s/Makefile", exBasePath), exName, exRename); - FileTextReplace(TextFormat("%s/Makefile.Web", exBasePath), exName, exRename); - FileTextReplace(TextFormat("%s/README.md", exBasePath), exName, exRename); + // Rename all required files + rename(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.c", exBasePath, exCategory, exRename)); + rename(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.png", exBasePath, exCategory, exRename)); - rename(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), - TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exRename)); - FileTextReplace(TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath), exName, exRename); + // Rename example on required files + FileTextReplace(TextFormat("%s/Makefile", exBasePath), exName, exRename); + FileTextReplace(TextFormat("%s/Makefile.Web", exBasePath), exName, exRename); + FileTextReplace(TextFormat("%s/README.md", exBasePath), exName, exRename); + FileTextReplace(TextFormat("%s/../common/examples.js", exWebPath), exName, exRename); + + // Rename example project and solution + rename(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), + TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exRename)); + FileTextReplace(TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath), exName, exRename); + } + else + { + // Rename with change of category + // TODO: Reorder collection as required + FileTextReplace(exCollectionListPath, TextFormat("%s;%s", exCategory, exName), + TextFormat("%s;%s", exRecategory, exRename)); + + // Rename all required files + FileCopy(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.c", exBasePath, exCategory, exRename)); + remove(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + + FileCopy(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.png", exBasePath, exCategory, exRename)); + remove(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); + + UpdateRequiredFiles(); + } // Remove old web compilation - FileTextReplace(TextFormat("%s/../common/examples.js", exWebPath), exName, exRename); remove(TextFormat("%s/%s/%s.html", exWebPath, exCategory, exName)); remove(TextFormat("%s/%s/%s.data", exWebPath, exCategory, exName)); remove(TextFormat("%s/%s/%s.wasm", exWebPath, exCategory, exName)); @@ -633,22 +450,72 @@ int main(int argc, char *argv[]) // Recompile example (on raylib side) // NOTE: Tools requirements: emscripten, w64devkit // TODO: Avoid platform-specific .BAT file - system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exCategory, exName)); + system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exRecategory, exRename)); // Copy results to web side - FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), - TextFormat("%s/%s/%s.html", exWebPath, exCategory, exName)); - FileCopy(TextFormat("%s/%s/%s.data", exBasePath, exCategory, exName), - TextFormat("%s/%s/%s.data", exWebPath, exCategory, exName)); - FileCopy(TextFormat("%s/%s/%s.wasm", exBasePath, exCategory, exName), - TextFormat("%s/%s/%s.wasm", exWebPath, exCategory, exName)); - FileCopy(TextFormat("%s/%s/%s.js", exBasePath, exCategory, exName), - TextFormat("%s/%s/%s.js", exWebPath, exCategory, exName)); + FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exRecategory, exRename), + TextFormat("%s/%s/%s.html", exWebPath, exRecategory, exRename)); + FileCopy(TextFormat("%s/%s/%s.data", exBasePath, exRecategory, exRename), + TextFormat("%s/%s/%s.data", exWebPath, exRecategory, exRename)); + FileCopy(TextFormat("%s/%s/%s.wasm", exBasePath, exRecategory, exRename), + TextFormat("%s/%s/%s.wasm", exWebPath, exRecategory, exRename)); + FileCopy(TextFormat("%s/%s/%s.js", exBasePath, exRecategory, exRename), + TextFormat("%s/%s/%s.js", exWebPath, exRecategory, exRename)); + } break; case 4: // Remove { // TODO: Remove and update all required files... + // Remove: raylib/examples//_example_name.c + // Remove: raylib/examples//_example_name.png + remove(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + remove(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); + + // TODO: Remove: raylib/examples//resources/.. + + // Edit: raylib/examples/Makefile + //--------------------------------------------------------------------------- + // + // + //--------------------------------------------------------------------------- + + // Edit: raylib/examples/Makefile.Web + //--------------------------------------------------------------------------- + // + // + //--------------------------------------------------------------------------- + + // Edit: raylib/examples/README.md + //--------------------------------------------------------------------------- + // + // + //--------------------------------------------------------------------------- + + // Remove: raylib/projects/VS2022/examples/_example_name.vcxproj + remove(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName)); + + // Edit: raylib/projects/VS2022/raylib.sln + //--------------------------------------------------------------------------- + // + // + //--------------------------------------------------------------------------- + + // Edit: raylib.com/common/examples.js + //--------------------------------------------------------------------------- + + + //--------------------------------------------------------------------------- + + // Remove: raylib.com/examples//_example_name.html + // Remove: raylib.com/examples//_example_name.data + // Remove: raylib.com/examples//_example_name.wasm + // Remove: raylib.com/examples//_example_name.js + remove(TextFormat("%s/%s/%s.html", exWebPath, exCategory, exName)); + remove(TextFormat("%s/%s/%s.data", exWebPath, exCategory, exName)); + remove(TextFormat("%s/%s/%s.wasm", exWebPath, exCategory, exName)); + remove(TextFormat("%s/%s/%s.js", exWebPath, exCategory, exName)); + } break; case 5: // Validate { @@ -711,6 +578,232 @@ int main(int argc, char *argv[]) //---------------------------------------------------------------------------------- // Module specific functions definition //---------------------------------------------------------------------------------- + +// Update required files from examples collection +static int UpdateRequiredFiles(void) +{ + int result = 0; + + // Edit: raylib/examples/Makefile --> Update from collection + //------------------------------------------------------------------------------------------------ + char *mkText = LoadFileText(TextFormat("%s/Makefile", exBasePath)); + char *mkTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated Makefile copy, 2MB + + int mkListStartIndex = TextFindIndex(mkText, "#EXAMPLES_LIST_START"); + int mkListEndIndex = TextFindIndex(mkText, "#EXAMPLES_LIST_END"); + + int mkIndex = 0; + memcpy(mkTextUpdated, mkText, mkListStartIndex); + mkIndex = sprintf(mkTextUpdated + mkListStartIndex, "#EXAMPLES_LIST_START\n"); + + for (int i = 0; i < MAX_EXAMPLE_CATEGORIES; i++) + { + mkIndex += sprintf(mkTextUpdated + mkListStartIndex + mkIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i]))); + + int exCount = 0; + rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], true, &exCount); + + for (int x = 0; x < exCount - 1; x++) mkIndex += sprintf(mkTextUpdated + mkListStartIndex + mkIndex, TextFormat(" %s/%s \\\n", exCatList[x].category, exCatList[x].name)); + mkIndex += sprintf(mkTextUpdated + mkListStartIndex + mkIndex, TextFormat(" %s/%s\n\n", exCatList[exCount - 1].category, exCatList[exCount - 1].name)); + + UnloadExamplesData(exCatList); + } + + // Add the remaining part of the original file + memcpy(mkTextUpdated + mkListStartIndex + mkIndex, mkText + mkListEndIndex, strlen(mkText) - mkListEndIndex); + + // Save updated file + SaveFileText(TextFormat("%s/Makefile", exBasePath), mkTextUpdated); + UnloadFileText(mkText); + RL_FREE(mkTextUpdated); + //------------------------------------------------------------------------------------------------ + + // Edit: raylib/examples/Makefile.Web --> Update from collection + //------------------------------------------------------------------------------------------------ + char *mkwText = LoadFileText(TextFormat("%s/Makefile.Web", exBasePath)); + char *mkwTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated Makefile copy, 2MB + + int mkwListStartIndex = TextFindIndex(mkwText, "#EXAMPLES_LIST_START"); + int mkwListEndIndex = TextFindIndex(mkwText, "#EXAMPLES_LIST_END"); + + int mkwIndex = 0; + memcpy(mkwTextUpdated, mkwText, mkwListStartIndex); + mkwIndex = sprintf(mkwTextUpdated + mkwListStartIndex, "#EXAMPLES_LIST_START\n"); + + for (int i = 0; i < MAX_EXAMPLE_CATEGORIES; i++) + { + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i]))); + + int exCount = 0; + rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], true, &exCount); + + for (int x = 0; x < exCount - 1; x++) mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat(" %s/%s \\\n", exCatList[x].category, exCatList[x].name)); + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat(" %s/%s\n\n", exCatList[exCount - 1].category, exCatList[exCount - 1].name)); + + UnloadExamplesData(exCatList); + } + + // Add the remaining part of the original file + memcpy(mkwTextUpdated + mkwListStartIndex + mkwIndex, mkwText + mkwListEndIndex, strlen(mkwText) - mkwListEndIndex); + + // TODO: Add new example target, considering resources + + // Save updated file + SaveFileText(TextFormat("%s/Makefile.Web", exBasePath), mkwTextUpdated); + UnloadFileText(mkwText); + RL_FREE(mkwTextUpdated); + //------------------------------------------------------------------------------------------------ + + // Edit: raylib/examples/README.md --> Update from collection + //------------------------------------------------------------------------------------------------ + // NOTE: Using [examples_list.txt] to update/regen README.md + // Lines format: | 01 | [core_basic_window](core/core_basic_window.c) | core_basic_window | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | + char *mdText = LoadFileText(TextFormat("%s/README.md", exBasePath)); + char *mdTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated examples.js copy, 2MB + + int mdListStartIndex = TextFindIndex(mdText, "| 01 | "); + + int mdIndex = 0; + memcpy(mdTextUpdated, mdText, mdListStartIndex); + + // NOTE: We keep a global examples counter + for (int i = 0, catCount = 0, gCount = 0; i < MAX_EXAMPLE_CATEGORIES; i++) + { + // Every category includes some introductory text, as it is quite short, just copying it here + // NOTE: "core" text already placed in the file + if (i == 1) // "shapes" + { + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: shapes\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "Examples using raylib shapes drawing functionality, provided by raylib [shapes](../src/rshapes.c) module.\n\n"); + } + else if (i == 2) // "textures" + { + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: textures\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "Examples using raylib textures functionality, including image/textures loading/generation and drawing, provided by raylib [textures](../src/rtextures.c) module.\n\n"); + } + else if (i == 3) // "text" + { + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: text\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "Examples using raylib text functionality, including sprite fonts loading/generation and text drawing, provided by raylib [text](../src/rtext.c) module.\n\n"); + } + else if (i == 4) // "models" + { + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: models\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "Examples using raylib models functionality, including models loading/generation and drawing, provided by raylib [models](../src/rmodels.c) module.\n\n"); + } + else if (i == 5) // "shaders" + { + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: shaders\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "Examples using raylib shaders functionality, including shaders loading, parameters configuration and drawing using them (model shaders and postprocessing shaders). This functionality is directly provided by raylib [rlgl](../src/rlgl.c) module.\n\n"); + } + else if (i == 6) // "audio" + { + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: audio\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "Examples using raylib audio functionality, including sound/music loading and playing. This functionality is provided by raylib [raudio](../src/raudio.c) module. Note this module can be used standalone independently of raylib.\n\n"); + } + else if (i == 7) // "others" + { + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: others\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "Examples showing raylib misc functionality that does not fit in other categories, like standalone modules usage or examples integrating external libraries.\n\n"); + } + + if (i > 0) + { + // Table header required + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "| ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer |\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "|----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------|\n"); + } + + rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], false, &catCount); + for (int x = 0; x < catCount; x++) + { + char stars[16] = { 0 }; + for (int s = 0; s < 4; s++) + { + if (s < exCatList[x].stars) strcpy(stars + 3*s, "⭐️"); + else strcpy(stars + 3*s, "☆"); + } + + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + TextFormat("| %02i | [%s](%s/%s.c) | \"%s\" | %s | %.1f | %.1f | [%s](https://github.com/%s) |\n", + gCount + 1, exCatList[x].name, exCatList[x].category, exCatList[x].name, exCatList[x].category, exCatList[x].name, exCatList[x].name, + stars, exCatList[x].verCreated, exCatList[x].verUpdated, exCatList[x].author, exCatList[x].authorGitHub + 1)); + + gCount++; + } + + UnloadExamplesData(exCatList); + } + + // Save updated file + SaveFileText(TextFormat("%s/README.md", exBasePath), mdTextUpdated); + UnloadFileText(mdText); + RL_FREE(mdTextUpdated); + //------------------------------------------------------------------------------------------------ + + // Edit: raylib.com/common/examples.js --> Update from collection + // NOTE: Entries format: exampleEntry('⭐️☆☆☆' , 'core' , 'basic_window'), + //------------------------------------------------------------------------------------------------ + char *jsText = LoadFileText(TextFormat("%s/../common/examples.js", exWebPath)); + char *jsTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated examples.js copy, 2MB + + int jsListStartIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_START"); + int jsListEndIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_END"); + + int jsIndex = 0; + memcpy(jsTextUpdated, jsText, jsListStartIndex); + jsIndex = sprintf(jsTextUpdated + jsListStartIndex, "//EXAMPLE_DATA_LIST_START\n"); + jsIndex += sprintf(jsTextUpdated + jsListStartIndex + jsIndex, " var exampleData = [\n"); + + // NOTE: We avoid "others" category + for (int i = 0, exCount = 0; i < MAX_EXAMPLE_CATEGORIES - 1; i++) + { + rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], false, &exCount); + for (int x = 0; x < exCount; x++) + { + char stars[16] = { 0 }; + for (int s = 0; s < 4; s++) + { + if (s < exCatList[x].stars) strcpy(stars + 3*s, "⭐️"); + else strcpy(stars + 3*s, "☆"); + } + + if ((i == 6) && (x == (exCount - 1))) + { + // NOTE: Last line to add, special case to consider + jsIndex += sprintf(jsTextUpdated + jsListStartIndex + jsIndex, + TextFormat(" exampleEntry('%s', '%s', '%s')];\n", stars, exCatList[x].category, exCatList[x].name + strlen(exCatList[x].category) + 1)); + } + else + { + jsIndex += sprintf(jsTextUpdated + jsListStartIndex + jsIndex, + TextFormat(" exampleEntry('%s', '%s', '%s'),\n", stars, exCatList[x].category, exCatList[x].name + strlen(exCatList[x].category) + 1)); + } + } + + UnloadExamplesData(exCatList); + } + + // Add the remaining part of the original file + memcpy(jsTextUpdated + jsListStartIndex + jsIndex, jsText + jsListEndIndex, strlen(jsText) - jsListEndIndex); + + // Save updated file + SaveFileText(TextFormat("%s/../common/examples.js", exWebPath), jsTextUpdated); + UnloadFileText(jsText); + RL_FREE(jsTextUpdated); + //------------------------------------------------------------------------------------------------ + + return result; +} + + // Load examples collection information static rlExampleInfo *LoadExamplesData(const char *fileName, const char *category, bool sort, int *exCount) { From d182ae783751f7a37cde1a4495419a4678a919a0 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 3 Aug 2025 23:32:54 +0200 Subject: [PATCH 119/328] UPDATED: Support example removal --- examples/rexm.c | 58 +++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index 88dd22cc8..557bb1b9e 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -251,6 +251,7 @@ int main(int argc, char *argv[]) if (TextFindIndex(exColInfo, argv[2]) != -1) // Example in the collection { strcpy(exName, argv[2]); // Register filename for removal + strncpy(exCategory, exName, TextFindIndex(exName, "_")); opCode = OP_REMOVE; } else LOG("WARNING: REMOVE: Example not available in the collection\n"); @@ -350,7 +351,6 @@ int main(int argc, char *argv[]) RL_FREE(exColInfoUpdated); } else LOG("WARNING: ADD: Example is already on the collection\n"); - UnloadFileText(exColInfo); //------------------------------------------------------------------------------------------------ @@ -465,7 +465,26 @@ int main(int argc, char *argv[]) } break; case 4: // Remove { - // TODO: Remove and update all required files... + // Remove example from collection for files update + //------------------------------------------------------------------------------------------------ + char *exColInfo = LoadFileText(exCollectionListPath); + int exIndex = TextFindIndex(exColInfo, TextFormat("%s;%s", exCategory, exName)); + if (exIndex > 0) // Example found + { + char *exColInfoUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated list copy, 2MB + + memcpy(exColInfoUpdated, exColInfo, exIndex); + int lineLen = 0; + for (int i = exIndex; (exColInfo[i] != '\n') && (exColInfo[i] != '\0'); i++) lineLen++; + // Remove line and copy the rest next + memcpy(exColInfoUpdated + exIndex, exColInfo + exIndex + lineLen + 1, strlen(exColInfo) - exIndex - lineLen); + + SaveFileText(exCollectionListPath, exColInfoUpdated); + RL_FREE(exColInfoUpdated); + } + else LOG("WARNING: REMOVE: Example not found in the collection\n"); + UnloadFileText(exColInfo); + //------------------------------------------------------------------------------------------------ // Remove: raylib/examples//_example_name.c // Remove: raylib/examples//_example_name.png @@ -474,37 +493,15 @@ int main(int argc, char *argv[]) // TODO: Remove: raylib/examples//resources/.. - // Edit: raylib/examples/Makefile - //--------------------------------------------------------------------------- - // - // - //--------------------------------------------------------------------------- - - // Edit: raylib/examples/Makefile.Web - //--------------------------------------------------------------------------- - // - // - //--------------------------------------------------------------------------- - - // Edit: raylib/examples/README.md - //--------------------------------------------------------------------------- - // - // - //--------------------------------------------------------------------------- + UpdateRequiredFiles(); // Remove: raylib/projects/VS2022/examples/_example_name.vcxproj remove(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName)); - // Edit: raylib/projects/VS2022/raylib.sln + // Edit: raylib/projects/VS2022/raylib.sln --> Remove example project //--------------------------------------------------------------------------- - // - // - //--------------------------------------------------------------------------- - - // Edit: raylib.com/common/examples.js - //--------------------------------------------------------------------------- - - + system(TextFormat("dotnet solution %s/../projects/VS2022/raylib.sln remove %s/../projects/VS2022/examples/%s.vcxproj", + exBasePath, exBasePath, exName)); //--------------------------------------------------------------------------- // Remove: raylib.com/examples//_example_name.html @@ -610,7 +607,7 @@ static int UpdateRequiredFiles(void) } // Add the remaining part of the original file - memcpy(mkTextUpdated + mkListStartIndex + mkIndex, mkText + mkListEndIndex, strlen(mkText) - mkListEndIndex); + memcpy(mkTextUpdated + mkListStartIndex + mkIndex - 1, mkText + mkListEndIndex, strlen(mkText) - mkListEndIndex); // Save updated file SaveFileText(TextFormat("%s/Makefile", exBasePath), mkTextUpdated); @@ -644,7 +641,7 @@ static int UpdateRequiredFiles(void) } // Add the remaining part of the original file - memcpy(mkwTextUpdated + mkwListStartIndex + mkwIndex, mkwText + mkwListEndIndex, strlen(mkwText) - mkwListEndIndex); + memcpy(mkwTextUpdated + mkwListStartIndex + mkwIndex - 1, mkwText + mkwListEndIndex, strlen(mkwText) - mkwListEndIndex); // TODO: Add new example target, considering resources @@ -802,7 +799,6 @@ static int UpdateRequiredFiles(void) return result; } - // Load examples collection information static rlExampleInfo *LoadExamplesData(const char *fileName, const char *category, bool sort, int *exCount) From d43470a3d4248044811e2ba0a962337707e04039 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 3 Aug 2025 23:49:52 +0200 Subject: [PATCH 120/328] Minor comment reviews --- examples/rexm.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index 557bb1b9e..9ee37fa31 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -297,7 +297,7 @@ int main(int argc, char *argv[]) FileCopy(exTemplateScreenshot, TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); // WARNING: To be updated manually! // Copy: raylib/examples//resources/... // WARNING: To be updated manually! - // TODO: Example to be added could be provided as a .zip, containing resources! + // IDEA: Example to be added could be provided as a .zip, containing resources! // TODO: Copy provided resources to respective directories // Possible strategy: @@ -308,7 +308,7 @@ int main(int argc, char *argv[]) // 2. Verify paths: resource files exist // 3. Copy files to required resource dir - // Add example to the main collection list, if not already there + // Add example to the collection list, if not already there // NOTE: Required format: shapes;shapes_basic_shapes;⭐️☆☆☆;1.0;4.2;"Ray";@raysan5 //------------------------------------------------------------------------------------------------ char *exColInfo = LoadFileText(exCollectionListPath); @@ -328,19 +328,20 @@ int main(int argc, char *argv[]) else if (strcmp(exCategory, "shaders") == 0) nextCatIndex = 6; else if (strcmp(exCategory, "audio") == 0) nextCatIndex = 7; else if (strcmp(exCategory, "others") == 0) nextCatIndex = -1; // Add to EOF + + // TODO: Get required example info from example file header (if provided) + // NOTE: If no example info is provided (other than category/name), just using some default values if (nextCatIndex == -1) { - // Add example to the end of the list + // Add example to collection at the EOF int endIndex = (int)strlen(exColInfo); memcpy(exColInfoUpdated, exColInfo, endIndex); - sprintf(exColInfoUpdated + endIndex, TextFormat("\n%s/%s\n", exCategory, exName)); + sprintf(exColInfoUpdated + endIndex, TextFormat("%s;%s;⭐️☆☆☆;6.0;6.0;\"Ray\";@raysan5\n", exCategory, exName)); } else { - // Add example to the end of the category list - // TODO: Get required example info from example file header (if provided) - // NOTE: If no example info is provided (other than category/name), just using some default values + // Add example to collection, at the end of the category list int catIndex = TextFindIndex(exColInfo, exCategories[nextCatIndex]); memcpy(exColInfoUpdated, exColInfo, catIndex); int textWritenSize = sprintf(exColInfoUpdated + catIndex, TextFormat("%s;%s;⭐️☆☆☆;6.0;6.0;\"Ray\";@raysan5\n", exCategory, exName)); @@ -379,7 +380,7 @@ int main(int argc, char *argv[]) // Compile to: raylib.com/examples//_example_name.wasm // Compile to: raylib.com/examples//_example_name.js //------------------------------------------------------------------------------------------------ - // TODO: WARNING: This .BAT is not portable and it does not consider RESOURCES for Web properly, + // TODO: Avoid platform-specific .BAT, not portable and it does not consider RESOURCES for Web properly, // Makefile.Web should be used... but it requires proper editing first! system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exCategory, exName)); @@ -492,6 +493,7 @@ int main(int argc, char *argv[]) remove(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); // TODO: Remove: raylib/examples//resources/.. + // Get list of resources from Makefile.Web or examples ResourcesScan() UpdateRequiredFiles(); @@ -890,9 +892,12 @@ static int FileCopy(const char *srcPath, const char *dstPath) int srcDataSize = 0; unsigned char *srcFileData = LoadFileData(srcPath, &srcDataSize); - // TODO: Create required paths if they do not exist + // Create required paths if they do not exist + if (!DirectoryExists(GetDirectoryPath(dstPath))) + MakeDirectory(GetDirectoryPath(dstPath)); - if ((srcFileData != NULL) && (srcDataSize > 0)) result = SaveFileData(dstPath, srcFileData, srcDataSize); + if ((srcFileData != NULL) && (srcDataSize > 0)) + result = SaveFileData(dstPath, srcFileData, srcDataSize); UnloadFileData(srcFileData); From 72de562542280e442f0eccb0a7019506eda28162 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 4 Aug 2025 13:23:04 +0200 Subject: [PATCH 121/328] REVIEWED: Examples for automation processes --- examples/core/core_vr_simulator.c | 2 +- .../glsl100/distortion.fs} | 0 .../glsl330/distortion.fs} | 0 examples/models/models_mesh_generation.c | 11 +---------- 4 files changed, 2 insertions(+), 11 deletions(-) rename examples/core/resources/{distortion100.fs => shaders/glsl100/distortion.fs} (100%) rename examples/core/resources/{distortion330.fs => shaders/glsl330/distortion.fs} (100%) diff --git a/examples/core/core_vr_simulator.c b/examples/core/core_vr_simulator.c index a793e62f4..43b1ec471 100644 --- a/examples/core/core_vr_simulator.c +++ b/examples/core/core_vr_simulator.c @@ -61,7 +61,7 @@ int main(void) VrStereoConfig config = LoadVrStereoConfig(device); // Distortion shader (uses device lens distortion and chroma) - Shader distortion = LoadShader(0, TextFormat("resources/distortion%i.fs", GLSL_VERSION)); + Shader distortion = LoadShader(0, TextFormat("resources/shaders/glsl%i/distortion.fs", GLSL_VERSION)); // Update distortion shader with lens and distortion-scale parameters SetShaderValue(distortion, GetShaderLocation(distortion, "leftLensCenter"), diff --git a/examples/core/resources/distortion100.fs b/examples/core/resources/shaders/glsl100/distortion.fs similarity index 100% rename from examples/core/resources/distortion100.fs rename to examples/core/resources/shaders/glsl100/distortion.fs diff --git a/examples/core/resources/distortion330.fs b/examples/core/resources/shaders/glsl330/distortion.fs similarity index 100% rename from examples/core/resources/distortion330.fs rename to examples/core/resources/shaders/glsl330/distortion.fs diff --git a/examples/models/models_mesh_generation.c b/examples/models/models_mesh_generation.c index bc92873c2..e268085b0 100644 --- a/examples/models/models_mesh_generation.c +++ b/examples/models/models_mesh_generation.c @@ -48,16 +48,7 @@ int main(void) models[7] = LoadModelFromMesh(GenMeshPoly(5, 2.0f)); models[8] = LoadModelFromMesh(GenMeshCustom()); - // Generated meshes could be exported as .obj files - //ExportMesh(models[0].meshes[0], "plane.obj"); - //ExportMesh(models[1].meshes[0], "cube.obj"); - //ExportMesh(models[2].meshes[0], "sphere.obj"); - //ExportMesh(models[3].meshes[0], "hemisphere.obj"); - //ExportMesh(models[4].meshes[0], "cylinder.obj"); - //ExportMesh(models[5].meshes[0], "torus.obj"); - //ExportMesh(models[6].meshes[0], "knot.obj"); - //ExportMesh(models[7].meshes[0], "poly.obj"); - //ExportMesh(models[8].meshes[0], "custom.obj"); + // NOTE: Generated meshes could be exported using ExportMesh() // Set checked texture as default diffuse component for all models material for (int i = 0; i < NUM_MODELS; i++) models[i].materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; From d8952958db1c5ede9ba3d1aaa43955e2c62c2e6e Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 4 Aug 2025 13:23:14 +0200 Subject: [PATCH 122/328] Update Makefile --- examples/Makefile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/examples/Makefile b/examples/Makefile index 33a9d1327..39638d371 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -493,6 +493,8 @@ ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_R LDLIBS = $(RAYLIB_RELEASE_PATH)/libraylib.web.a endif +CURRENT_MAKEFILE = $(lastword $(MAKEFILE_LIST)) + # Define source code object files required #------------------------------------------------------------------------------------------------ #EXAMPLES_LIST_START @@ -672,8 +674,6 @@ OTHERS = \ others/rlgl_standalone #EXAMPLES_LIST_END -CURRENT_MAKEFILE = $(lastword $(MAKEFILE_LIST)) - # Define processes to execute #------------------------------------------------------------------------------------------------ # Default target entry @@ -687,7 +687,6 @@ models: $(MODELS) shaders: $(SHADERS) audio: $(AUDIO) - # Generic compilation pattern # NOTE: Examples must be ready for Android compilation! %: %.c From 80dd72ce128d69176645b946321ba58cde895db1 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 4 Aug 2025 13:23:57 +0200 Subject: [PATCH 123/328] REVIEWED: For automation simplification --- examples/Makefile.Web | 51 +++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/examples/Makefile.Web b/examples/Makefile.Web index c0969dfeb..5a5d74eb0 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -493,6 +493,8 @@ ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_R LDLIBS = $(RAYLIB_RELEASE_PATH)/libraylib.web.a endif +CURRENT_MAKEFILE = $(lastword $(MAKEFILE_LIST)) + # Define source code object files required #------------------------------------------------------------------------------------------------ #EXAMPLES_LIST_START @@ -670,12 +672,7 @@ OTHERS = \ others/raymath_vector_angle \ others/rlgl_compute_shader \ others/rlgl_standalone -#EXAMPLES_LIST_END -CURRENT_MAKEFILE = $(lastword $(MAKEFILE_LIST)) - -# Define processes to execute -#------------------------------------------------------------------------------------------------ # Default target entry all: $(CORE) $(SHAPES) $(TEXT) $(TEXTURES) $(MODELS) $(SHADERS) $(AUDIO) @@ -734,7 +731,7 @@ core/core_custom_logging: core/core_custom_logging.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) core/core_drop_files: core/core_drop_files.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 -sFORCE_FILESYSTEM=1 + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) core/core_input_gamepad: core/core_input_gamepad.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ @@ -896,7 +893,7 @@ textures/textures_image_drawing: textures/textures_image_drawing.c --preload-file textures/resources/cat.png@resources/cat.png textures/textures_image_generation: textures/textures_image_generation.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) textures/textures_image_kernel: textures/textures_image_kernel.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ @@ -915,7 +912,7 @@ textures/textures_image_rotate: textures/textures_image_rotate.c --preload-file textures/resources/raylib_logo.png textures/textures_image_text: textures/textures_image_text.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file textures/resources/parrots.png@resources/parrots.png \ --preload-file textures/resources/KAISG.ttf@resources/KAISG.ttf @@ -978,17 +975,17 @@ text/text_draw_3d: text/text_draw_3d.c --preload-file text/resources/shaders/glsl100/alpha_discard.fs@resources/shaders/glsl100/alpha_discard.fs text/text_font_filters: text/text_font_filters.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file text/resources/KAISG.ttf@resources/KAISG.ttf text/text_font_loading: text/text_font_loading.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file text/resources/pixantiqua.fnt@resources/pixantiqua.fnt \ --preload-file text/resources/pixantiqua.png@resources/pixantiqua.png \ --preload-file text/resources/pixantiqua.ttf@resources/pixantiqua.ttf text/text_font_sdf: text/text_font_sdf.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file text/resources/anonymous_pro_bold.ttf@resources/anonymous_pro_bold.ttf \ --preload-file text/resources/shaders/glsl100/sdf.fs@resources/shaders/glsl100/sdf.fs @@ -1019,7 +1016,7 @@ text/text_rectangle_bounds: text/text_rectangle_bounds.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) text/text_unicode: text/text_unicode.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file text/resources/dejavu.fnt@resources/dejavu.fnt \ --preload-file text/resources/dejavu.png@resources/dejavu.png \ --preload-file text/resources/noto_cjk.fnt@resources/noto_cjk.fnt \ @@ -1033,13 +1030,13 @@ text/text_writing_anim: text/text_writing_anim.c # Compile MODELS examples models/models_animation: models/models_animation.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file models/resources/models/iqm/guy.iqm@resources/models/iqm/guy.iqm \ --preload-file models/resources/models/iqm/guytex.png@resources/models/iqm/guytex.png \ --preload-file models/resources/models/iqm/guyanim.iqm@resources/models/iqm/guyanim.iqm models/models_gpu_skinning: models/models_gpu_skinning.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file models/resources/models/gltf/greenman.glb@resources/models/gltf/greenman.glb \ --preload-file models/resources/shaders/glsl100/skinning.vs@resources/shaders/glsl100/skinning.vs \ --preload-file models/resources/shaders/glsl100/skinning.fs@resources/shaders/glsl100/skinning.fs @@ -1080,20 +1077,20 @@ models/models_heightmap: models/models_heightmap.c --preload-file models/resources/heightmap.png@resources/heightmap.png models/models_loading: models/models_loading.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file models/resources/models/obj/castle.obj@resources/models/obj/castle.obj \ --preload-file models/resources/models/obj/castle_diffuse.png@resources/models/obj/castle_diffuse.png models/models_loading_gltf: models/models_loading_gltf.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file models/resources/models/gltf/robot.glb@resources/models/gltf/robot.glb models/models_loading_m3d: models/models_loading_m3d.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file models/resources/models/m3d/cesium_man.m3d@resources/models/m3d/cesium_man.m3d models/models_loading_vox: models/models_loading_vox.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file models/resources/models/vox/chr_knight.vox@resources/models/vox/chr_knight.vox \ --preload-file models/resources/models/vox/chr_sword.vox@resources/models/vox/chr_sword.vox \ --preload-file models/resources/models/vox/monu9.vox@resources/models/vox/monu9.vox @@ -1116,7 +1113,7 @@ models/models_rlgl_solar_system: models/models_rlgl_solar_system.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) models/models_skybox: models/models_skybox.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 -sFORCE_FILESYSTEM=1 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file models/resources/dresden_square_2k.hdr@resources/dresden_square_2k.hdr \ --preload-file models/resources/skybox.png@resources/skybox.png \ --preload-file models/resources/shaders/glsl100/skybox.vs@resources/shaders/glsl100/skybox.vs \ @@ -1131,7 +1128,7 @@ models/models_waving_cubes: models/models_waving_cubes.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) models/models_yaw_pitch_roll: models/models_yaw_pitch_roll.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file models/resources/models/obj/plane.obj@resources/models/obj/plane.obj \ --preload-file models/resources/models/obj/plane_diffuse.png@resources/models/obj/plane_diffuse.png @@ -1161,7 +1158,7 @@ shaders/shaders_basic_pbr: shaders/shaders_basic_pbr.c --preload-file shaders/resources/road_n.png@resources/road_n.png shaders/shaders_custom_uniform: shaders/shaders_custom_uniform.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/models/barracks.obj@resources/models/barracks.obj \ --preload-file shaders/resources/models/barracks_diffuse.png@resources/models/barracks_diffuse.png \ --preload-file shaders/resources/shaders/glsl100/swirl.fs@resources/shaders/glsl100/swirl.fs @@ -1210,7 +1207,7 @@ shaders/shaders_mesh_instancing: shaders/shaders_mesh_instancing.c --preload-file shaders/resources/shaders/glsl100/lighting.fs@resources/shaders/glsl100/lighting.fs shaders/shaders_model_shader: shaders/shaders_model_shader.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/models/watermill.obj@resources/models/watermill.obj \ --preload-file shaders/resources/models/watermill_diffuse.png@resources/models/watermill_diffuse.png \ --preload-file shaders/resources/shaders/glsl100/grayscale.fs@resources/shaders/glsl100/grayscale.fs @@ -1224,7 +1221,7 @@ shaders/shaders_palette_switch: shaders/shaders_palette_switch.c --preload-file shaders/resources/shaders/glsl100/palette_switch.fs@resources/shaders/glsl100/palette_switch.fs shaders/shaders_postprocessing: shaders/shaders_postprocessing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/models/church.obj@resources/models/church.obj \ --preload-file shaders/resources/models/church_diffuse.png@resources/models/church_diffuse.png \ --preload-file shaders/resources/shaders/glsl100@resources/shaders/glsl100 @@ -1294,7 +1291,7 @@ shaders/shaders_vertex_displacement: shaders/shaders_vertex_displacement.c # Compile AUDIO examples audio/audio_mixed_processor: audio/audio_mixed_processor.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file audio/resources/country.mp3@resources/country.mp3 \ --preload-file audio/resources/coin.wav@resources/coin.wav @@ -1303,7 +1300,7 @@ audio/audio_module_playing: audio/audio_module_playing.c --preload-file audio/resources/mini1111.xm@resources/mini1111.xm audio/audio_music_stream: audio/audio_music_stream.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file audio/resources/country.mp3@resources/country.mp3 audio/audio_raw_stream: audio/audio_raw_stream.c @@ -1319,7 +1316,7 @@ audio/audio_sound_multi: audio/audio_sound_multi.c --preload-file audio/resources/sound.wav@resources/sound.wav audio/audio_stream_effects: audio/audio_stream_effects.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file audio/resources/country.mp3@resources/country.mp3 # Compile OTHERS examples @@ -1341,6 +1338,8 @@ others/rlgl_compute_shader: others/rlgl_standalone: $(info Skipping_others_rlgl_standalone) +#EXAMPLES_LIST_END + # Clean everything clean: ifeq ($(PLATFORM),PLATFORM_DESKTOP) From e130775e0d6070c26a7a033c28ad9e7918db7dfa Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 4 Aug 2025 14:13:17 +0200 Subject: [PATCH 124/328] Updated for resources scanning system --- examples/text/text_draw_3d.c | 12 +++++++----- examples/textures/textures_mouse_painting.c | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/examples/text/text_draw_3d.c b/examples/text/text_draw_3d.c index 6fc0e6c5c..c06698b9f 100644 --- a/examples/text/text_draw_3d.c +++ b/examples/text/text_draw_3d.c @@ -34,8 +34,11 @@ #include // Required for: NULL #include // Required for: sinf() -// To make it work with the older RLGL module just comment the line below -#define RAYLIB_NEW_RLGL +#if defined(PLATFORM_DESKTOP) + #define GLSL_VERSION 330 +#else // PLATFORM_ANDROID, PLATFORM_WEB + #define GLSL_VERSION 100 +#endif //-------------------------------------------------------------------------------------- // Globals @@ -50,7 +53,6 @@ bool SHOW_TEXT_BOUNDRY = false; //-------------------------------------------------------------------------------------- // Data Types definition //-------------------------------------------------------------------------------------- - // Configuration structure for waving the text typedef struct WaveTextConfig { Vector3 waveRange; @@ -66,7 +68,7 @@ static void DrawTextCodepoint3D(Font font, int codepoint, Vector3 position, floa // Draw a 2D text in 3D space static void DrawText3D(Font font, const char *text, Vector3 position, float fontSize, float fontSpacing, float lineSpacing, bool backface, Color tint); -// Draw a 2D text in 3D space and wave the parts that start with `~~` and end with `~~`. +// Draw a 2D text in 3D space and wave the parts that start with '~~' and end with '~~' // This is a modified version of the original code by @Nighten found here https://github.com/NightenDushi/Raylib_DrawTextStyle static void DrawTextWave3D(Font font, const char *text, Vector3 position, float fontSize, float fontSpacing, float lineSpacing, bool backface, WaveTextConfig *config, float time, Color tint); // Measure a text in 3D ignoring the `~~` chars. @@ -128,7 +130,7 @@ int main(void) Color dark = RED; // Load the alpha discard shader - Shader alphaDiscard = LoadShader(NULL, "resources/shaders/glsl330/alpha_discard.fs"); + Shader alphaDiscard = LoadShader(NULL, TextFormat("resources/shaders/glsl%i/alpha_discard.fs", GLSL_VERSION)); // Array filled with multiple random colors (when multicolor mode is set) Color multi[TEXT_MAX_LAYERS] = {0}; diff --git a/examples/textures/textures_mouse_painting.c b/examples/textures/textures_mouse_painting.c index c0e426232..e2a2b6081 100644 --- a/examples/textures/textures_mouse_painting.c +++ b/examples/textures/textures_mouse_painting.c @@ -210,7 +210,7 @@ int main(void) { DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(RAYWHITE, 0.8f)); DrawRectangle(0, 150, GetScreenWidth(), 80, BLACK); - DrawText("IMAGE SAVED: my_amazing_texture_painting.png", 150, 180, 20, RAYWHITE); + DrawText("IMAGE SAVED!", 150, 180, 20, RAYWHITE); } EndDrawing(); From bc0f93baea936af33015e52b76d6a0e6429fb55f Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 4 Aug 2025 17:51:48 +0200 Subject: [PATCH 125/328] UPDATE: Added resources scanning from examples for automated copying --- examples/rexm.c | 157 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 146 insertions(+), 11 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index 9ee37fa31..a4148b646 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -58,6 +58,10 @@ #define LOG(...) #endif +#define REXM_MAX_BUFFER_SIZE (2*1024*1024) // 2MB + +#define REXM_MAX_RESOURCE_PATHS 256 + //---------------------------------------------------------------------------------- // Types and Structures Definition //---------------------------------------------------------------------------------- @@ -125,6 +129,12 @@ static int ParseExampleInfoLine(const char *line, rlExampleInfo *entry); // WARNING: items[] pointers are reorganized static void SortExampleByName(rlExampleInfo *items, int count); +// Scan resource paths in example file +static char **ScanExampleResources(const char *filePath, int *resPathCount); + +// Clear resource paths scanned +static void ClearExampleResources(char **resPaths); + //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ @@ -296,17 +306,68 @@ int main(int argc, char *argv[]) // Create: raylib/examples//_example_name.png FileCopy(exTemplateScreenshot, TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); // WARNING: To be updated manually! - // Copy: raylib/examples//resources/... // WARNING: To be updated manually! - // IDEA: Example to be added could be provided as a .zip, containing resources! + // Copy: raylib/examples//resources/... + // ----------------------------------------------------------------------------------------- + // Scan resources used in example to copy + int resPathCount = 0; + char **resPaths = ScanExampleResources(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName), &resPathCount); - // TODO: Copy provided resources to respective directories - // Possible strategy: - // 1. Scan code file for resources paths -> Resources list - // Look for specific text: '.png"' - // Look for full path, previous '"' - // Be careful with shaders: '.vs"', '.fs"' -> Reconstruct path manually? - // 2. Verify paths: resource files exist - // 3. Copy files to required resource dir + if (resPathCount > 0) + { + for (int r = 0; r < resPathCount; r++) + { + // WARNING: Special case to consider: shaders, resource paths could use conditions: "glsl%i" + // In this case, multiple resources are required: glsl100, glsl120, glsl330 + if (TextFindIndex(resPaths[r], "glsl%i") > -1) + { + int glslVer[3] = { 100, 120, 330 }; + + for (int v = 0; v < 3; v++) + { + char *resPathUpdated = TextReplace(resPaths[r], "glsl%i", TextFormat("glsl%i", glslVer[v])); + + LOG("INFO: Example resource required: %s\n", resPathUpdated); + + if (FileExists(TextFormat("%s/%s", GetDirectoryPath(inFileName), resPathUpdated))) + { + // Verify the resources are placed in "resources" directory + if (TextFindIndex(resPathUpdated, "resources/") > 0) + { + // NOTE: Look for resources in the path of the provided .c to be added + // To be copied to /resources directory, extra dirs are automatically created if required + FileCopy(TextFormat("%s/%s", GetDirectoryPath(inFileName), resPathUpdated), + TextFormat("%s/%s/%s", exBasePath, exCategory, resPathUpdated)); + } + else LOG("WARNING: Example resource must be placed in 'resources' directory next to .c file\n"); + } + else LOG("WARNING: Example resource can not be found in: %s\n", TextFormat("%s/%s", GetDirectoryPath(inFileName), resPathUpdated)); + + RL_FREE(resPathUpdated); + } + } + else + { + LOG("INFO: Example resource required: %s\n", resPaths[r]); + + if (FileExists(TextFormat("%s/%s", GetDirectoryPath(inFileName), resPaths[r]))) + { + // Verify the resources are placed in "resources" directory + if (TextFindIndex(resPaths[r], "resources/") > 0) + { + // NOTE: Look for resources in the path of the provided .c to be added + // To be copied to /resources directory, extra dirs are automatically created if required + FileCopy(TextFormat("%s/%s", GetDirectoryPath(inFileName), resPaths[r]), + TextFormat("%s/%s/%s", exBasePath, exCategory, resPaths[r])); + } + else LOG("WARNING: Example resource must be placed in 'resources' directory next to .c file\n"); + } + else LOG("WARNING: Example resource can not be found in: %s\n", TextFormat("%s/%s", GetDirectoryPath(inFileName), resPaths[r])); + } + } + } + + ClearExampleResources(resPaths); + // ----------------------------------------------------------------------------------------- // Add example to the collection list, if not already there // NOTE: Required format: shapes;shapes_basic_shapes;⭐️☆☆☆;1.0;4.2;"Ray";@raysan5 @@ -618,6 +679,7 @@ static int UpdateRequiredFiles(void) //------------------------------------------------------------------------------------------------ // Edit: raylib/examples/Makefile.Web --> Update from collection + // NOTE: We avoid the "others" category on web building //------------------------------------------------------------------------------------------------ char *mkwText = LoadFileText(TextFormat("%s/Makefile.Web", exBasePath)); char *mkwTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated Makefile copy, 2MB @@ -629,7 +691,8 @@ static int UpdateRequiredFiles(void) memcpy(mkwTextUpdated, mkwText, mkwListStartIndex); mkwIndex = sprintf(mkwTextUpdated + mkwListStartIndex, "#EXAMPLES_LIST_START\n"); - for (int i = 0; i < MAX_EXAMPLE_CATEGORIES; i++) + // NOTE: We avoid the "others" category on web building + for (int i = 0; i < MAX_EXAMPLE_CATEGORIES - 1; i++) { mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i]))); @@ -1018,3 +1081,75 @@ static void SortExampleByName(rlExampleInfo *items, int count) { qsort(items, count, sizeof(rlExampleInfo), rlExampleInfoCompare); } + +// Scan resource paths in example file +static char **ScanExampleResources(const char *filePath, int *resPathCount) +{ + #define MAX_RES_PATH_LEN 256 + + char **paths = (char **)RL_CALLOC(REXM_MAX_RESOURCE_PATHS, sizeof(char **)); + for (int i = 0; i < REXM_MAX_RESOURCE_PATHS; i++) paths[i] = (char *)RL_CALLOC(MAX_RES_PATH_LEN, sizeof(char)); + + int resCounter = 0; + char *code = LoadFileText(filePath); + + if (code != NULL) + { + // Resources extensions to check + const char *exts[] = { ".png", ".bmp", ".jpg", ".qoi", ".gif", ".raw", ".hdr", ".ttf", ".fnt", ".wav", ".ogg", ".mp3", ".flac", ".mod", ".qoa", ".qoa", ".obj", ".iqm", ".glb", ".m3d", ".vox", ".vs", ".fs" }; + const int extCount = sizeof(exts)/sizeof(exts[0]); + + char *ptr = code; + while ((ptr = strchr(ptr, '"')) != NULL) + { + char *start = ptr + 1; + char *end = strchr(start, '"'); + if (!end) break; + + int len = end - start; + if ((len > 0) && (len < MAX_RES_PATH_LEN)) + { + char buffer[MAX_RES_PATH_LEN] = { 0 }; + strncpy(buffer, start, len); + buffer[len] = '\0'; + + // Check for known extensions + for (int i = 0; i < extCount; i++) + { + if (IsFileExtension(buffer, exts[i])) + { + // Avoid duplicates + bool found = false; + for (int j = 0; j < resCounter; j++) + { + if (TextIsEqual(paths[j], buffer)) { found = true; break; } + } + + if (!found && (resCounter < REXM_MAX_RESOURCE_PATHS)) + { + strcpy(paths[resCounter], buffer); + resCounter++; + } + + break; + } + } + } + + ptr = end + 1; + } + + UnloadFileText(code); + } + + *resPathCount = resCounter; + return paths; +} + +// Clear resource paths scanned +static void ClearExampleResources(char **resPaths) +{ + for (int i = 0; i < REXM_MAX_RESOURCE_PATHS; i++) RL_FREE(resPaths[i]); + + RL_FREE(resPaths); +} From 1f5fec851dacd0ef85076c73ccaed0be3df6aa0e Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 4 Aug 2025 17:52:22 +0200 Subject: [PATCH 126/328] UPDATE: Added `Makefile.Web` per-example target generation including used resources --- examples/rexm.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 83 insertions(+), 2 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index a4148b646..9e7fbf899 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -705,11 +705,92 @@ static int UpdateRequiredFiles(void) UnloadExamplesData(exCatList); } + // Add examples individual targets, considering every example resources + // Some required makefile code... + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, "# Default target entry\n"); + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, "all: $(CORE) $(SHAPES) $(TEXT) $(TEXTURES) $(MODELS) $(SHADERS) $(AUDIO)\n\n"); + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, "core: $(CORE)\n"); + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, "shapes: $(SHAPES)\n"); + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, "textures: $(TEXTURES)\n"); + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, "text: $(TEXT)\n"); + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, "models: $(MODELS)\n"); + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, "shaders: $(SHADERS)\n"); + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, "audio: $(AUDIO)\n\n"); + + // NOTE: We avoid the "others" category on web building + for (int i = 0; i < MAX_EXAMPLE_CATEGORIES - 1; i++) + { + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat("# Compile %s examples\n", TextToUpper(exCategories[i]))); + + int exCount = 0; + rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], true, &exCount); + + for (int x = 0; x < exCount; x++) + { + // Scan resources used in example to list + int resPathCount = 0; + char **resPaths = ScanExampleResources(TextFormat("%s/%s/%s.c", exBasePath, exCatList[x].category, exCatList[x].name), &resPathCount); + + if (resPathCount > 0) + { + /* + // WARNING: Compilation line starts with [TAB] + shaders/shaders_vertex_displacement: shaders/shaders_vertex_displacement.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ + --preload-file shaders/resources/shaders/glsl100/vertex_displacement.vs@resources/shaders/glsl100/vertex_displacement.vs \ + --preload-file shaders/resources/shaders/glsl330/vertex_displacement.vs@resources/shaders/glsl330/vertex_displacement.vs \ + --preload-file shaders/resources/shaders/glsl100/vertex_displacement.fs@resources/shaders/glsl100/vertex_displacement.fs \ + --preload-file shaders/resources/shaders/glsl330/vertex_displacement.fs@resources/shaders/glsl330/vertex_displacement.fs + */ + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, + TextFormat("%s/%s: %s/%s.c\n", exCatList[x].category, exCatList[x].name, exCatList[x].category, exCatList[x].name)); + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, " $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \\\n"); + + for (int r = 0; r < resPathCount; r++) + { + // WARNING: Special case to consider: shaders, resource paths could use conditions: "glsl%i" + // In this case, we focus on web building for: glsl100 + if (TextFindIndex(resPaths[r], "glsl%i") > -1) + { + char *resPathUpdated = TextReplace(resPaths[r], "glsl%i", "glsl100"); + memset(resPaths[r], 0, 256); + strcpy(resPaths[r], resPathUpdated); + RL_FREE(resPathUpdated); + } + + if (r < (resPathCount - 1)) + { + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, + TextFormat(" --preload-file %s/%s@%s \\\n", exCatList[x].category, resPaths[r], resPaths[r])); + } + else + { + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, + TextFormat(" --preload-file %s/%s@%s\n\n", exCatList[x].category, resPaths[r], resPaths[r])); + } + } + } + else // Example does not require resources + { + /* + // WARNING: Compilation line starts with [TAB] + core/core_2d_camera: core/core_2d_camera.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + */ + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, + TextFormat("%s/%s: %s/%s.c\n", exCatList[x].category, exCatList[x].name, exCatList[x].category, exCatList[x].name)); + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, " $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)\n\n"); + } + + ClearExampleResources(resPaths); + } + + UnloadExamplesData(exCatList); + } + // Add the remaining part of the original file memcpy(mkwTextUpdated + mkwListStartIndex + mkwIndex - 1, mkwText + mkwListEndIndex, strlen(mkwText) - mkwListEndIndex); - // TODO: Add new example target, considering resources - // Save updated file SaveFileText(TextFormat("%s/Makefile.Web", exBasePath), mkwTextUpdated); UnloadFileText(mkwText); From a457ab154e7cc7ed675f0dd315216db100f340dd Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 4 Aug 2025 18:11:57 +0200 Subject: [PATCH 127/328] ADDED: Example resources for automatic removal WARNING: Some of those resources could be shared by other examples in the category so for now we leave removed manual by users... --- examples/rexm.c | 75 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 64 insertions(+), 11 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index 9e7fbf899..7a0f24dc9 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -310,7 +310,7 @@ int main(int argc, char *argv[]) // ----------------------------------------------------------------------------------------- // Scan resources used in example to copy int resPathCount = 0; - char **resPaths = ScanExampleResources(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName), &resPathCount); + char **resPaths = ScanExampleResources(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName), &resPathCount); if (resPathCount > 0) { @@ -467,39 +467,46 @@ int main(int argc, char *argv[]) FileTextReplace(exCollectionListPath, TextFormat("%s;%s", exCategory, exName), TextFormat("%s;%s", exRecategory, exRename)); - // Rename all required files + // Edit: Rename example code and screenshot files .c and .png rename(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName), TextFormat("%s/%s/%s.c", exBasePath, exCategory, exRename)); rename(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName), TextFormat("%s/%s/%s.png", exBasePath, exCategory, exRename)); - // Rename example on required files + // NOTE: Example resource files do not need to be changed... + // unless the example is moved from one caegory to another + + // Edit: Rename example on required files FileTextReplace(TextFormat("%s/Makefile", exBasePath), exName, exRename); FileTextReplace(TextFormat("%s/Makefile.Web", exBasePath), exName, exRename); FileTextReplace(TextFormat("%s/README.md", exBasePath), exName, exRename); FileTextReplace(TextFormat("%s/../common/examples.js", exWebPath), exName, exRename); - // Rename example project and solution + // Edit: Rename example project and solution rename(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exRename)); FileTextReplace(TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath), exName, exRename); } else { - // Rename with change of category - // TODO: Reorder collection as required + // WARNING: Rename with change of category + // TODO: Reorder collection to place renamed example at the end of category FileTextReplace(exCollectionListPath, TextFormat("%s;%s", exCategory, exName), TextFormat("%s;%s", exRecategory, exRename)); - // Rename all required files + // TODO: Move example resources from /resources to /resources + // WARNING: Resources can be shared with other examples in the category + + // Edit: Rename example code file (copy and remove) FileCopy(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName), TextFormat("%s/%s/%s.c", exBasePath, exCategory, exRename)); remove(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); - + // Edit: Rename example screenshot file (copy and remove) FileCopy(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName), TextFormat("%s/%s/%s.png", exBasePath, exCategory, exRename)); remove(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); + // Edit: Update required files: Makefile, Makefile.Web, README.md, examples.js UpdateRequiredFiles(); } @@ -547,15 +554,47 @@ int main(int argc, char *argv[]) else LOG("WARNING: REMOVE: Example not found in the collection\n"); UnloadFileText(exColInfo); //------------------------------------------------------------------------------------------------ + + // Remove: raylib/examples//resources/.. + // WARNING: Some of those resources could be used by other examples, + // just leave this process to manual update for now! + // ----------------------------------------------------------------------------------------- + /* + // Scan resources used in example to be removed + int resPathCount = 0; + char **resPaths = ScanExampleResources(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName), &resPathCount); + + if (resPathCount > 0) + { + for (int r = 0; r < resPathCount; r++) + { + // WARNING: Special case to consider: shaders, resource paths could use conditions: "glsl%i" + // In this case, multiple resources are required: glsl100, glsl120, glsl330 + if (TextFindIndex(resPaths[r], "glsl%i") > -1) + { + int glslVer[3] = { 100, 120, 330 }; + + for (int v = 0; v < 3; v++) + { + char *resPathUpdated = TextReplace(resPaths[r], "glsl%i", TextFormat("glsl%i", glslVer[v])); + remove(TextFormat("%s/%s/%s", exBasePath, exCategory, resPathUpdated)); + RL_FREE(resPathUpdated); + } + } + else remove(TextFormat("%s/%s/%s", exBasePath, exCategory, resPaths[r])); + } + } + + ClearExampleResources(resPaths); + */ + // ----------------------------------------------------------------------------------------- // Remove: raylib/examples//_example_name.c // Remove: raylib/examples//_example_name.png remove(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); remove(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); - // TODO: Remove: raylib/examples//resources/.. - // Get list of resources from Makefile.Web or examples ResourcesScan() - + // Edit: Update required files: Makefile, Makefile.Web, README.md, examples.js UpdateRequiredFiles(); // Remove: raylib/projects/VS2022/examples/_example_name.vcxproj @@ -1069,6 +1108,20 @@ static int FileRemove(const char *fileName) return result; } +// Move file from one directory to another +static int FileMove(const char *srcPath, const char *dstPath) +{ + int result = 0; + + if (FileExists(srcPath)) + { + FileCopy(srcPath, dstPath); + remove(srcPath); + } + + return result; +} + // Load text lines static char **LoadTextLines(const char *text, int *count) { From 1293461f5e1ee15bd4e196cb66c6734cc24929b4 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 4 Aug 2025 19:27:48 +0200 Subject: [PATCH 128/328] REXM: Some code reviews, `README.md` generation improvements --- examples/rexm.c | 158 +++++++++++++++++++++++++++--------------------- 1 file changed, 90 insertions(+), 68 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index 7a0f24dc9..2f95e4000 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -96,7 +96,10 @@ static const char *exBasePath = "C:/GitHub/raylib/examples"; static const char *exWebPath = "C:/GitHub/raylib.com/examples"; static const char *exTemplateFilePath = "C:/GitHub/raylib/examples/examples_template.c"; static const char *exTemplateScreenshot = "C:/GitHub/raylib/examples/examples_template.png"; -static const char *exCollectionListPath = "C:/GitHub/raylib/examples/examples_list.txt"; +static const char *exCollectionFilePath = "C:/GitHub/raylib/examples/examples_list.txt"; + +//const char *exBasePath = getenv("REXM_EXAMPLES_PATH"); +//if (!exBasePath) exBasePath = "default/path"; //---------------------------------------------------------------------------------- // Module specific functions declaration @@ -105,6 +108,7 @@ static int FileTextReplace(const char *fileName, const char *textLookUp, const c static int FileCopy(const char *srcPath, const char *dstPath); static int FileRename(const char *fileName, const char *fileRename); static int FileRemove(const char *fileName); +static int FileMove(const char *srcPath, const char *dstPath); // Update required files from examples collection // UPDATES: Makefile, Makefile.Web, README.md, examples.js @@ -236,7 +240,7 @@ int main(int argc, char *argv[]) else { // Verify example exists in collection to be removed - char *exColInfo = LoadFileText(exCollectionListPath); + char *exColInfo = LoadFileText(exCollectionFilePath); if (TextFindIndex(exColInfo, argv[2]) != -1) // Example in the collection { strcpy(exName, argv[2]); // Register example name @@ -257,7 +261,7 @@ int main(int argc, char *argv[]) else { // Verify example exists in collection to be removed - char *exColInfo = LoadFileText(exCollectionListPath); + char *exColInfo = LoadFileText(exCollectionFilePath); if (TextFindIndex(exColInfo, argv[2]) != -1) // Example in the collection { strcpy(exName, argv[2]); // Register filename for removal @@ -372,7 +376,7 @@ int main(int argc, char *argv[]) // Add example to the collection list, if not already there // NOTE: Required format: shapes;shapes_basic_shapes;⭐️☆☆☆;1.0;4.2;"Ray";@raysan5 //------------------------------------------------------------------------------------------------ - char *exColInfo = LoadFileText(exCollectionListPath); + char *exColInfo = LoadFileText(exCollectionFilePath); if (TextFindIndex(exColInfo, exName) == -1) // Example not found { char *exColInfoUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated list copy, 2MB @@ -409,7 +413,7 @@ int main(int argc, char *argv[]) memcpy(exColInfoUpdated + catIndex + textWritenSize, exColInfo + catIndex, strlen(exColInfo) - catIndex); } - SaveFileText(exCollectionListPath, exColInfoUpdated); + SaveFileText(exCollectionFilePath, exColInfoUpdated); RL_FREE(exColInfoUpdated); } else LOG("WARNING: ADD: Example is already on the collection\n"); @@ -464,7 +468,7 @@ int main(int argc, char *argv[]) if (strcmp(exCategory, exRecategory) == 0) { // Rename example on collection - FileTextReplace(exCollectionListPath, TextFormat("%s;%s", exCategory, exName), + FileTextReplace(exCollectionFilePath, TextFormat("%s;%s", exCategory, exName), TextFormat("%s;%s", exRecategory, exRename)); // Edit: Rename example code and screenshot files .c and .png @@ -491,7 +495,7 @@ int main(int argc, char *argv[]) { // WARNING: Rename with change of category // TODO: Reorder collection to place renamed example at the end of category - FileTextReplace(exCollectionListPath, TextFormat("%s;%s", exCategory, exName), + FileTextReplace(exCollectionFilePath, TextFormat("%s;%s", exCategory, exName), TextFormat("%s;%s", exRecategory, exRename)); // TODO: Move example resources from /resources to /resources @@ -536,7 +540,7 @@ int main(int argc, char *argv[]) { // Remove example from collection for files update //------------------------------------------------------------------------------------------------ - char *exColInfo = LoadFileText(exCollectionListPath); + char *exColInfo = LoadFileText(exCollectionFilePath); int exIndex = TextFindIndex(exColInfo, TextFormat("%s;%s", exCategory, exName)); if (exIndex > 0) // Example found { @@ -548,7 +552,7 @@ int main(int argc, char *argv[]) // Remove line and copy the rest next memcpy(exColInfoUpdated + exIndex, exColInfo + exIndex + lineLen + 1, strlen(exColInfo) - exIndex - lineLen); - SaveFileText(exCollectionListPath, exColInfoUpdated); + SaveFileText(exCollectionFilePath, exColInfoUpdated); RL_FREE(exColInfoUpdated); } else LOG("WARNING: REMOVE: Example not found in the collection\n"); @@ -699,13 +703,13 @@ static int UpdateRequiredFiles(void) { mkIndex += sprintf(mkTextUpdated + mkListStartIndex + mkIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i]))); - int exCount = 0; - rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], true, &exCount); + int exCollectionCount = 0; + rlExampleInfo *exCollection = LoadExamplesData(exCollectionFilePath, exCategories[i], true, &exCollectionCount); - for (int x = 0; x < exCount - 1; x++) mkIndex += sprintf(mkTextUpdated + mkListStartIndex + mkIndex, TextFormat(" %s/%s \\\n", exCatList[x].category, exCatList[x].name)); - mkIndex += sprintf(mkTextUpdated + mkListStartIndex + mkIndex, TextFormat(" %s/%s\n\n", exCatList[exCount - 1].category, exCatList[exCount - 1].name)); + for (int x = 0; x < exCollectionCount - 1; x++) mkIndex += sprintf(mkTextUpdated + mkListStartIndex + mkIndex, TextFormat(" %s/%s \\\n", exCollection[x].category, exCollection[x].name)); + mkIndex += sprintf(mkTextUpdated + mkListStartIndex + mkIndex, TextFormat(" %s/%s\n\n", exCollection[exCollectionCount - 1].category, exCollection[exCollectionCount - 1].name)); - UnloadExamplesData(exCatList); + UnloadExamplesData(exCollection); } // Add the remaining part of the original file @@ -735,13 +739,13 @@ static int UpdateRequiredFiles(void) { mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i]))); - int exCount = 0; - rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], true, &exCount); + int exCollectionCount = 0; + rlExampleInfo *exCollection = LoadExamplesData(exCollectionFilePath, exCategories[i], true, &exCollectionCount); - for (int x = 0; x < exCount - 1; x++) mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat(" %s/%s \\\n", exCatList[x].category, exCatList[x].name)); - mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat(" %s/%s\n\n", exCatList[exCount - 1].category, exCatList[exCount - 1].name)); + for (int x = 0; x < exCollectionCount - 1; x++) mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat(" %s/%s \\\n", exCollection[x].category, exCollection[x].name)); + mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat(" %s/%s\n\n", exCollection[exCollectionCount - 1].category, exCollection[exCollectionCount - 1].name)); - UnloadExamplesData(exCatList); + UnloadExamplesData(exCollection); } // Add examples individual targets, considering every example resources @@ -761,14 +765,14 @@ static int UpdateRequiredFiles(void) { mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat("# Compile %s examples\n", TextToUpper(exCategories[i]))); - int exCount = 0; - rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], true, &exCount); + int exCollectionCount = 0; + rlExampleInfo *exCollection = LoadExamplesData(exCollectionFilePath, exCategories[i], true, &exCollectionCount); - for (int x = 0; x < exCount; x++) + for (int x = 0; x < exCollectionCount; x++) { // Scan resources used in example to list int resPathCount = 0; - char **resPaths = ScanExampleResources(TextFormat("%s/%s/%s.c", exBasePath, exCatList[x].category, exCatList[x].name), &resPathCount); + char **resPaths = ScanExampleResources(TextFormat("%s/%s/%s.c", exBasePath, exCollection[x].category, exCollection[x].name), &resPathCount); if (resPathCount > 0) { @@ -782,7 +786,7 @@ static int UpdateRequiredFiles(void) --preload-file shaders/resources/shaders/glsl330/vertex_displacement.fs@resources/shaders/glsl330/vertex_displacement.fs */ mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, - TextFormat("%s/%s: %s/%s.c\n", exCatList[x].category, exCatList[x].name, exCatList[x].category, exCatList[x].name)); + TextFormat("%s/%s: %s/%s.c\n", exCollection[x].category, exCollection[x].name, exCollection[x].category, exCollection[x].name)); mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, " $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \\\n"); for (int r = 0; r < resPathCount; r++) @@ -800,12 +804,12 @@ static int UpdateRequiredFiles(void) if (r < (resPathCount - 1)) { mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, - TextFormat(" --preload-file %s/%s@%s \\\n", exCatList[x].category, resPaths[r], resPaths[r])); + TextFormat(" --preload-file %s/%s@%s \\\n", exCollection[x].category, resPaths[r], resPaths[r])); } else { mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, - TextFormat(" --preload-file %s/%s@%s\n\n", exCatList[x].category, resPaths[r], resPaths[r])); + TextFormat(" --preload-file %s/%s@%s\n\n", exCollection[x].category, resPaths[r], resPaths[r])); } } } @@ -817,14 +821,14 @@ static int UpdateRequiredFiles(void) $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) */ mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, - TextFormat("%s/%s: %s/%s.c\n", exCatList[x].category, exCatList[x].name, exCatList[x].category, exCatList[x].name)); + TextFormat("%s/%s: %s/%s.c\n", exCollection[x].category, exCollection[x].name, exCollection[x].category, exCollection[x].name)); mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, " $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)\n\n"); } ClearExampleResources(resPaths); } - UnloadExamplesData(exCatList); + UnloadExamplesData(exCollection); } // Add the remaining part of the original file @@ -843,87 +847,100 @@ static int UpdateRequiredFiles(void) char *mdText = LoadFileText(TextFormat("%s/README.md", exBasePath)); char *mdTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated examples.js copy, 2MB - int mdListStartIndex = TextFindIndex(mdText, "| 01 | "); + int mdListStartIndex = TextFindIndex(mdText, "## EXAMPLES COLLECTION"); int mdIndex = 0; memcpy(mdTextUpdated, mdText, mdListStartIndex); + int exCollectionFullCount = 0; + rlExampleInfo *exCollectionFull = LoadExamplesData(exCollectionFilePath, "ALL", false, &exCollectionFullCount); + UnloadExamplesData(exCollectionFull); + + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, TextFormat("## EXAMPLES COLLECTION [TOTAL: %i]\n\n", exCollectionFullCount)); + // NOTE: We keep a global examples counter - for (int i = 0, catCount = 0, gCount = 0; i < MAX_EXAMPLE_CATEGORIES; i++) + for (int i = 0; i < MAX_EXAMPLE_CATEGORIES; i++) { + int exCollectionCount = 0; + rlExampleInfo *exCollection = LoadExamplesData(exCollectionFilePath, exCategories[i], false, &exCollectionCount); + // Every category includes some introductory text, as it is quite short, just copying it here - // NOTE: "core" text already placed in the file - if (i == 1) // "shapes" + if (i == 0) // "core" { - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: shapes\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, TextFormat("\n### category: core [%i]\n\n", exCollectionCount)); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "Examples using raylib[core](../src/rcore.c) platform functionality like window creation, inputs, drawing modes and system functionality.\n\n"); + } + else if (i == 1) // "shapes" + { + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, TextFormat("\n### category: shapes [%i]\n\n", exCollectionCount)); mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "Examples using raylib shapes drawing functionality, provided by raylib [shapes](../src/rshapes.c) module.\n\n"); } else if (i == 2) // "textures" { - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: textures\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, TextFormat("\n### category: textures [%i]\n\n", exCollectionCount)); mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "Examples using raylib textures functionality, including image/textures loading/generation and drawing, provided by raylib [textures](../src/rtextures.c) module.\n\n"); } else if (i == 3) // "text" { - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: text\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, TextFormat("\n### category: text [%i]\n\n", exCollectionCount)); mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "Examples using raylib text functionality, including sprite fonts loading/generation and text drawing, provided by raylib [text](../src/rtext.c) module.\n\n"); } else if (i == 4) // "models" { - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: models\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, TextFormat("\n### category: models [%i]\n\n", exCollectionCount)); mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "Examples using raylib models functionality, including models loading/generation and drawing, provided by raylib [models](../src/rmodels.c) module.\n\n"); } else if (i == 5) // "shaders" { - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: shaders\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, TextFormat("\n### category: shaders [%i]\n\n", exCollectionCount)); mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "Examples using raylib shaders functionality, including shaders loading, parameters configuration and drawing using them (model shaders and postprocessing shaders). This functionality is directly provided by raylib [rlgl](../src/rlgl.c) module.\n\n"); } else if (i == 6) // "audio" { - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: audio\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, TextFormat("\n### category: audio [%i]\n\n", exCollectionCount)); mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "Examples using raylib audio functionality, including sound/music loading and playing. This functionality is provided by raylib [raudio](../src/raudio.c) module. Note this module can be used standalone independently of raylib.\n\n"); } else if (i == 7) // "others" { - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "\n### category: others\n\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, TextFormat("\n### category: others [%i]\n\n", exCollectionCount)); mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "Examples showing raylib misc functionality that does not fit in other categories, like standalone modules usage or examples integrating external libraries.\n\n"); } - if (i > 0) - { - // Table header required - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "| ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer |\n"); - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "|----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------|\n"); - } + // Table header required + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "| example | image | difficulty
    level | version
    created | last version
    updated | original
    developer |\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------|\n"); - rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], false, &catCount); - for (int x = 0; x < catCount; x++) + for (int x = 0; x < exCollectionCount; x++) { char stars[16] = { 0 }; for (int s = 0; s < 4; s++) { - if (s < exCatList[x].stars) strcpy(stars + 3*s, "⭐️"); + if (s < exCollection[x].stars) strcpy(stars + 3*s, "⭐️"); else strcpy(stars + 3*s, "☆"); } mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, - TextFormat("| %02i | [%s](%s/%s.c) | \"%s\" | %s | %.1f | %.1f | [%s](https://github.com/%s) |\n", - gCount + 1, exCatList[x].name, exCatList[x].category, exCatList[x].name, exCatList[x].category, exCatList[x].name, exCatList[x].name, - stars, exCatList[x].verCreated, exCatList[x].verUpdated, exCatList[x].author, exCatList[x].authorGitHub + 1)); - - gCount++; + TextFormat("| [%s](%s/%s.c) | \"%s\" | %s | %.1f | %.1f | [%s](https://github.com/%s) |\n", + exCollection[x].name, exCollection[x].category, exCollection[x].name, exCollection[x].category, exCollection[x].name, exCollection[x].name, + stars, exCollection[x].verCreated, exCollection[x].verUpdated, exCollection[x].author, exCollection[x].authorGitHub + 1)); } - UnloadExamplesData(exCatList); + UnloadExamplesData(exCollection); } + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "\nSome example missing? As always, contributions are welcome, feel free to send new examples!\n"); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, + "Here is an[examples template](examples_template.c) with instructions to start with!\n"); + // Save updated file SaveFileText(TextFormat("%s/README.md", exBasePath), mdTextUpdated); UnloadFileText(mdText); @@ -945,32 +962,33 @@ static int UpdateRequiredFiles(void) jsIndex += sprintf(jsTextUpdated + jsListStartIndex + jsIndex, " var exampleData = [\n"); // NOTE: We avoid "others" category - for (int i = 0, exCount = 0; i < MAX_EXAMPLE_CATEGORIES - 1; i++) + for (int i = 0; i < MAX_EXAMPLE_CATEGORIES - 1; i++) { - rlExampleInfo *exCatList = LoadExamplesData(exCollectionListPath, exCategories[i], false, &exCount); - for (int x = 0; x < exCount; x++) + int exCollectionCount = 0; + rlExampleInfo *exCollection = LoadExamplesData(exCollectionFilePath, exCategories[i], false, &exCollectionCount); + for (int x = 0; x < exCollectionCount; x++) { char stars[16] = { 0 }; for (int s = 0; s < 4; s++) { - if (s < exCatList[x].stars) strcpy(stars + 3*s, "⭐️"); + if (s < exCollection[x].stars) strcpy(stars + 3*s, "⭐️"); else strcpy(stars + 3*s, "☆"); } - if ((i == 6) && (x == (exCount - 1))) + if ((i == 6) && (x == (exCollectionCount - 1))) { // NOTE: Last line to add, special case to consider jsIndex += sprintf(jsTextUpdated + jsListStartIndex + jsIndex, - TextFormat(" exampleEntry('%s', '%s', '%s')];\n", stars, exCatList[x].category, exCatList[x].name + strlen(exCatList[x].category) + 1)); + TextFormat(" exampleEntry('%s', '%s', '%s')];\n", stars, exCollection[x].category, exCollection[x].name + strlen(exCollection[x].category) + 1)); } else { jsIndex += sprintf(jsTextUpdated + jsListStartIndex + jsIndex, - TextFormat(" exampleEntry('%s', '%s', '%s'),\n", stars, exCatList[x].category, exCatList[x].name + strlen(exCatList[x].category) + 1)); + TextFormat(" exampleEntry('%s', '%s', '%s'),\n", stars, exCollection[x].category, exCollection[x].name + strlen(exCollection[x].category) + 1)); } } - UnloadExamplesData(exCatList); + UnloadExamplesData(exCollection); } // Add the remaining part of the original file @@ -1109,6 +1127,7 @@ static int FileRemove(const char *fileName) } // Move file from one directory to another +// NOTE: If dst directories do not exists they are created static int FileMove(const char *srcPath, const char *dstPath) { int result = 0; @@ -1217,12 +1236,15 @@ static void SortExampleByName(rlExampleInfo *items, int count) } // Scan resource paths in example file +// WARNING: Supported resource file extensions is hardcoded by used file types +// but new examples could require other file extensions to be added, +// maybe it should look for '.xxx")' patterns instead static char **ScanExampleResources(const char *filePath, int *resPathCount) { - #define MAX_RES_PATH_LEN 256 + #define REXM_MAX_RESOURCE_PATH_LEN 256 char **paths = (char **)RL_CALLOC(REXM_MAX_RESOURCE_PATHS, sizeof(char **)); - for (int i = 0; i < REXM_MAX_RESOURCE_PATHS; i++) paths[i] = (char *)RL_CALLOC(MAX_RES_PATH_LEN, sizeof(char)); + for (int i = 0; i < REXM_MAX_RESOURCE_PATHS; i++) paths[i] = (char *)RL_CALLOC(REXM_MAX_RESOURCE_PATH_LEN, sizeof(char)); int resCounter = 0; char *code = LoadFileText(filePath); @@ -1230,8 +1252,8 @@ static char **ScanExampleResources(const char *filePath, int *resPathCount) if (code != NULL) { // Resources extensions to check - const char *exts[] = { ".png", ".bmp", ".jpg", ".qoi", ".gif", ".raw", ".hdr", ".ttf", ".fnt", ".wav", ".ogg", ".mp3", ".flac", ".mod", ".qoa", ".qoa", ".obj", ".iqm", ".glb", ".m3d", ".vox", ".vs", ".fs" }; - const int extCount = sizeof(exts)/sizeof(exts[0]); + const char *exts[] = { ".png", ".bmp", ".jpg", ".qoi", ".gif", ".raw", ".hdr", ".ttf", ".fnt", ".wav", ".ogg", ".mp3", ".flac", ".mod", ".qoa", ".qoa", ".obj", ".iqm", ".glb", ".m3d", ".vox", ".vs", ".fs", ".txt" }; + const int extCount = sizeof(exts)/sizeof(char *); char *ptr = code; while ((ptr = strchr(ptr, '"')) != NULL) @@ -1241,9 +1263,9 @@ static char **ScanExampleResources(const char *filePath, int *resPathCount) if (!end) break; int len = end - start; - if ((len > 0) && (len < MAX_RES_PATH_LEN)) + if ((len > 0) && (len < REXM_MAX_RESOURCE_PATH_LEN)) { - char buffer[MAX_RES_PATH_LEN] = { 0 }; + char buffer[REXM_MAX_RESOURCE_PATH_LEN] = { 0 }; strncpy(buffer, start, len); buffer[len] = '\0'; From a436d935f11bfb04f006590ccc829ec467578f7e Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 4 Aug 2025 19:28:07 +0200 Subject: [PATCH 129/328] Update README.md --- examples/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/README.md b/examples/README.md index 42a3a3de0..8a387596a 100644 --- a/examples/README.md +++ b/examples/README.md @@ -16,7 +16,7 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES LIST +## EXAMPLES COLLECTION [TOTAL: 158] ### category: core From cdfb9d7a0be1b45327b5da2dcbc2d44149222135 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 4 Aug 2025 19:29:28 +0200 Subject: [PATCH 130/328] Added some notes for example collection `validation` --- examples/rexm.c | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/examples/rexm.c b/examples/rexm.c index 2f95e4000..3ed90f20c 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -622,21 +622,29 @@ int main(int argc, char *argv[]) } break; case 5: // Validate { - // TODO: Validate examples collection against [examples_list.txt] - - // Validate: raylib/examples//_example_name.c - // Validate: raylib/examples//_example_name.png - // Validate: raylib/examples//resources/.. -> Not possible for now... - // Validate: raylib/examples/Makefile - // Validate: raylib/examples/Makefile.Web - // Validate: raylib/examples/README.md - // Validate: raylib/projects/VS2022/examples/_example_name.vcxproj - // Validate: raylib/projects/VS2022/raylib.sln - // Validate: raylib.com/common/examples.js - // Validate: raylib.com/examples//_example_name.html - // Validate: raylib.com/examples//_example_name.data - // Validate: raylib.com/examples//_example_name.wasm - // Validate: raylib.com/examples//_example_name.js + // TODO: Validate examples in collection list [examples_list.txt] -> Source of truth! + // Validate: raylib/examples//_example_name.c -> File exists? + // Validate: raylib/examples//_example_name.png -> File exists? + // Validate: raylib/examples//resources/.. -> Example resources available? + // Validate: raylib/examples/Makefile -> Example listed? + // Validate: raylib/examples/Makefile.Web -> Example listed? + // Validate: raylib/examples/README.md -> Example listed? + // Validate: raylib/projects/VS2022/examples/_example_name.vcxproj -> File exists? + // Validate: raylib/projects/VS2022/raylib.sln -> Example listed? + // Validate: raylib.com/common/examples.js -> Example listed? + // Validate: raylib.com/examples//_example_name.html -> File exists? + // Validate: raylib.com/examples//_example_name.data -> File exists? + // Validate: raylib.com/examples//_example_name.wasm -> File exists? + // Validate: raylib.com/examples//_example_name.js -> File exists? + + // Additional validation elements + // Validate: Example naming conventions: /_example_name + // Validate: Duplicate entries in collection list + // Validate: Example info (stars, author, github) missmatches with example content + + // After validation, update required files for consistency + // Update files: Makefile, Makefile.Web, README.md, examples.js + UpdateRequiredFiles(); } break; default: // Help From 47c186dd87c4c0d361a2f373ecace3e3098df904 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 4 Aug 2025 20:26:19 +0200 Subject: [PATCH 131/328] WARNING: **BREAKING**: Moved `raylib parser` to `tools/parser` directory --- .github/workflows/parse.yml | 4 ++-- {parser => tools/parser}/LICENSE | 0 {parser => tools/parser}/Makefile | 0 {parser => tools/parser}/README.md | 0 {parser => tools/parser}/output/raylib_api.json | 0 {parser => tools/parser}/output/raylib_api.lua | 0 {parser => tools/parser}/output/raylib_api.txt | 0 {parser => tools/parser}/output/raylib_api.xml | 0 {parser => tools/parser}/raylib_parser.c | 0 9 files changed, 2 insertions(+), 2 deletions(-) rename {parser => tools/parser}/LICENSE (100%) rename {parser => tools/parser}/Makefile (100%) rename {parser => tools/parser}/README.md (100%) rename {parser => tools/parser}/output/raylib_api.json (100%) rename {parser => tools/parser}/output/raylib_api.lua (100%) rename {parser => tools/parser}/output/raylib_api.txt (100%) rename {parser => tools/parser}/output/raylib_api.xml (100%) rename {parser => tools/parser}/raylib_parser.c (100%) diff --git a/.github/workflows/parse.yml b/.github/workflows/parse.yml index ee413d643..4491b142e 100644 --- a/.github/workflows/parse.yml +++ b/.github/workflows/parse.yml @@ -1,4 +1,4 @@ -name: Parse raylib_api +name: Parse raylib API on: workflow_dispatch: @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v4 - name: Update parse files - working-directory: parser + working-directory: tools/parser run: | make raylib_api mv raylib_api.* output diff --git a/parser/LICENSE b/tools/parser/LICENSE similarity index 100% rename from parser/LICENSE rename to tools/parser/LICENSE diff --git a/parser/Makefile b/tools/parser/Makefile similarity index 100% rename from parser/Makefile rename to tools/parser/Makefile diff --git a/parser/README.md b/tools/parser/README.md similarity index 100% rename from parser/README.md rename to tools/parser/README.md diff --git a/parser/output/raylib_api.json b/tools/parser/output/raylib_api.json similarity index 100% rename from parser/output/raylib_api.json rename to tools/parser/output/raylib_api.json diff --git a/parser/output/raylib_api.lua b/tools/parser/output/raylib_api.lua similarity index 100% rename from parser/output/raylib_api.lua rename to tools/parser/output/raylib_api.lua diff --git a/parser/output/raylib_api.txt b/tools/parser/output/raylib_api.txt similarity index 100% rename from parser/output/raylib_api.txt rename to tools/parser/output/raylib_api.txt diff --git a/parser/output/raylib_api.xml b/tools/parser/output/raylib_api.xml similarity index 100% rename from parser/output/raylib_api.xml rename to tools/parser/output/raylib_api.xml diff --git a/parser/raylib_parser.c b/tools/parser/raylib_parser.c similarity index 100% rename from parser/raylib_parser.c rename to tools/parser/raylib_parser.c From f5e95029b1d85761040c0073027cb0516e14ab18 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 4 Aug 2025 20:44:22 +0200 Subject: [PATCH 132/328] Update rexm.c --- examples/rexm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/rexm.c b/examples/rexm.c index 3ed90f20c..89c794a8a 100644 --- a/examples/rexm.c +++ b/examples/rexm.c @@ -1025,7 +1025,7 @@ static rlExampleInfo *LoadExamplesData(const char *fileName, const char *categor if (text != NULL) { int lineCount = 0; - const char **lines = LoadTextLines(text, &lineCount); + char **lines = LoadTextLines(text, &lineCount); for (int i = 0; i < lineCount; i++) { @@ -1058,6 +1058,7 @@ static rlExampleInfo *LoadExamplesData(const char *fileName, const char *categor } } + UnloadTextLines(lines); UnloadFileText(text); } From 945f1410d28f2505475300877d83ee0d2123b854 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 4 Aug 2025 23:24:43 +0200 Subject: [PATCH 133/328] MOVED: `rexm` to tools directory --- tools/rexm/LICENSE | 16 ++ tools/rexm/Makefile | 366 ++++++++++++++++++++++++++++++++ tools/rexm/README.md | 20 ++ {examples => tools/rexm}/rexm.c | 0 tools/rexm/rexm.ico | Bin 0 -> 9752 bytes tools/rexm/rexm.rc | 27 +++ 6 files changed, 429 insertions(+) create mode 100644 tools/rexm/LICENSE create mode 100644 tools/rexm/Makefile create mode 100644 tools/rexm/README.md rename {examples => tools/rexm}/rexm.c (100%) create mode 100644 tools/rexm/rexm.ico create mode 100644 tools/rexm/rexm.rc diff --git a/tools/rexm/LICENSE b/tools/rexm/LICENSE new file mode 100644 index 000000000..7d8c7bfc5 --- /dev/null +++ b/tools/rexm/LICENSE @@ -0,0 +1,16 @@ +Copyright (c) 2025 Ramon Santamaria (@raysan5) + +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. diff --git a/tools/rexm/Makefile b/tools/rexm/Makefile new file mode 100644 index 000000000..4ac96a1ab --- /dev/null +++ b/tools/rexm/Makefile @@ -0,0 +1,366 @@ +#************************************************************************************************** +# +# raylib makefile for Desktop platforms, Web (Wasm), Raspberry Pi (DRM mode) and Android +# +# Copyright (c) 2013-2025 Ramon Santamaria (@raysan5) +# +# 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. +# +#************************************************************************************************** + +.PHONY: all clean + +# Define required environment variables +#------------------------------------------------------------------------------------------------ +# Define target platform: PLATFORM_DESKTOP, PLATFORM_WEB, PLATFORM_DRM, PLATFORM_ANDROID +PLATFORM ?= PLATFORM_DESKTOP + +# Define project variables +PROJECT_NAME ?= rexm +PROJECT_VERSION ?= 1.0 +PROJECT_BUILD_PATH ?= . +PROJECT_SOURCE_FILES ?= rexm.c + +# raylib library variables +RAYLIB_SRC_PATH ?= C:\raylib\raylib\src +RAYLIB_INCLUDE_PATH ?= $(RAYLIB_SRC_PATH) +RAYLIB_LIB_PATH ?= $(RAYLIB_SRC_PATH) + +# Library type used for raylib: STATIC (.a) or SHARED (.so/.dll) +RAYLIB_LIBTYPE ?= STATIC + +# Define compiler path on Windows +COMPILER_PATH ?= C:\raylib\w64devkit\bin + +# Build mode for project: DEBUG or RELEASE +BUILD_MODE ?= RELEASE + +# PLATFORM_WEB: Default properties +BUILD_WEB_ASYNCIFY ?= FALSE +BUILD_WEB_SHELL ?= minshell.html +BUILD_WEB_HEAP_SIZE ?= 128MB +BUILD_WEB_STACK_SIZE ?= 1MB +BUILD_WEB_ASYNCIFY_STACK_SIZE ?= 1048576 +BUILD_WEB_RESOURCES ?= FALSE +BUILD_WEB_RESOURCES_PATH ?= resources + +# Determine PLATFORM_OS in case PLATFORM_DESKTOP selected +ifeq ($(PLATFORM),PLATFORM_DESKTOP) + # No uname.exe on MinGW!, but OS=Windows_NT on Windows! + # ifeq ($(UNAME),Msys) -> Windows + ifeq ($(OS),Windows_NT) + PLATFORM_OS = WINDOWS + export PATH := $(COMPILER_PATH):$(PATH) + else + UNAMEOS = $(shell uname) + ifeq ($(UNAMEOS),Linux) + PLATFORM_OS = LINUX + endif + ifeq ($(UNAMEOS),FreeBSD) + PLATFORM_OS = BSD + endif + ifeq ($(UNAMEOS),OpenBSD) + PLATFORM_OS = BSD + endif + ifeq ($(UNAMEOS),NetBSD) + PLATFORM_OS = BSD + endif + ifeq ($(UNAMEOS),DragonFly) + PLATFORM_OS = BSD + endif + ifeq ($(UNAMEOS),Darwin) + PLATFORM_OS = OSX + endif + endif +endif +ifeq ($(PLATFORM),PLATFORM_DRM) + UNAMEOS = $(shell uname) + ifeq ($(UNAMEOS),Linux) + PLATFORM_OS = LINUX + endif +endif + +ifeq ($(PLATFORM_OS),WINDOWS) + ifeq ($(PLATFORM),PLATFORM_WEB) + # Emscripten required variables + EMSDK_PATH ?= C:/raylib/emsdk + EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/upstream/emscripten + CLANG_PATH = $(EMSDK_PATH)/upstream/bin + PYTHON_PATH = $(EMSDK_PATH)/python/3.9.2-nuget_64bit + NODE_PATH = $(EMSDK_PATH)/node/20.18.0_64bit/bin + export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH):$$(PATH) + endif +endif + +# Define default C compiler: CC +#------------------------------------------------------------------------------------------------ +CC = gcc + +ifeq ($(PLATFORM),PLATFORM_DESKTOP) + ifeq ($(PLATFORM_OS),OSX) + # OSX default compiler + CC = clang + endif + ifeq ($(PLATFORM_OS),BSD) + # FreeBSD, OpenBSD, NetBSD, DragonFly default compiler + CC = clang + endif +endif +ifeq ($(PLATFORM),PLATFORM_WEB) + # HTML5 emscripten compiler + # WARNING: To compile to HTML5, code must be redesigned + # to use emscripten.h and emscripten_set_main_loop() + CC = emcc +endif +ifeq ($(PLATFORM),PLATFORM_DRM) + ifeq ($(USE_RPI_CROSS_COMPILER),TRUE) + # Define RPI cross-compiler + #CC = armv6j-hardfloat-linux-gnueabi-gcc + CC = $(RPI_TOOLCHAIN)/bin/arm-linux-gnueabihf-gcc + endif +endif + + +# Define default make program: MAKE +#------------------------------------------------------------------------------------------------ +MAKE ?= make + +ifeq ($(PLATFORM),PLATFORM_DESKTOP) + ifeq ($(PLATFORM_OS),WINDOWS) + MAKE = mingw32-make + endif +endif + +# Define compiler flags: CFLAGS +#------------------------------------------------------------------------------------------------ +# -O1 defines optimization level +# -g include debug information on compilation +# -s strip unnecessary data from build +# -Wall turns on most, but not all, compiler warnings +# -std=c99 defines C language mode (standard C from 1999 revision) +# -std=gnu99 defines C language mode (GNU C from 1999 revision) +# -Wno-missing-braces ignore invalid warning (GCC bug 53119) +# -Wno-unused-value ignore unused return values of some functions (i.e. fread()) +# -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec +CFLAGS = -std=c99 -Wall -Wno-missing-braces -Wno-unused-value -Wno-pointer-sign -D_DEFAULT_SOURCE $(PROJECT_CUSTOM_FLAGS) +#CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes + +ifeq ($(BUILD_MODE),DEBUG) + CFLAGS += -g -D_DEBUG +else + ifeq ($(PLATFORM),PLATFORM_WEB) + ifeq ($(BUILD_WEB_ASYNCIFY),TRUE) + CFLAGS += -O3 + else + CFLAGS += -Os + endif + else + ifeq ($(PLATFORM_OS),OSX) + CFLAGS += -O2 + else + CFLAGS += -s -O2 + endif + endif +endif +ifeq ($(PLATFORM),PLATFORM_DRM) + CFLAGS += -std=gnu99 -DEGL_NO_X11 +endif + +# Define include paths for required headers: INCLUDE_PATHS +#------------------------------------------------------------------------------------------------ +INCLUDE_PATHS += -I. -Iexternal -I$(RAYLIB_INCLUDE_PATH) + +# Define additional directories containing required header files +ifeq ($(PLATFORM),PLATFORM_DRM) + # DRM required libraries + INCLUDE_PATHS += -I/usr/include/libdrm +endif +ifeq ($(PLATFORM),PLATFORM_DESKTOP) + ifeq ($(PLATFORM_OS),BSD) + # Consider -L$(RAYLIB_H_INSTALL_PATH) + INCLUDE_PATHS += -I/usr/local/include + endif +endif + +# Define library paths containing required libs: LDFLAGS +#------------------------------------------------------------------------------------------------ +LDFLAGS = -L. -L$(RAYLIB_LIB_PATH) + +ifeq ($(PLATFORM),PLATFORM_DESKTOP) + ifeq ($(PLATFORM_OS),WINDOWS) + # NOTE: The resource .rc file contains windows executable icon and properties + LDFLAGS += $(PROJECT_NAME).rc.data + # -Wl,--subsystem,windows hides the console window + ifeq ($(BUILD_MODE), RELEASE) + LDFLAGS += -Wl,--subsystem,windows + endif + endif + ifeq ($(PLATFORM_OS),BSD) + # Consider -L$(RAYLIB_INSTALL_PATH) + LDFLAGS += -Lsrc -L/usr/local/lib + endif + ifeq ($(PLATFORM_OS),LINUX) + # Reset everything. + # Precedence: immediately local, installed version, raysan5 provided libs + #LDFLAGS += -L$(RAYLIB_RELEASE_PATH) + endif +endif +ifeq ($(PLATFORM),PLATFORM_WEB) + # -Os # size optimization + # -O2 # optimization level 2, if used, also set --memory-init-file 0 + # -sUSE_GLFW=3 # Use glfw3 library (context/input management) + # -sALLOW_MEMORY_GROWTH=1 # to allow memory resizing -> WARNING: Audio buffers could FAIL! + # -sTOTAL_MEMORY=16777216 # to specify heap memory size (default = 16MB) (67108864 = 64MB) + # -sUSE_PTHREADS=1 # multithreading support + # -sWASM=0 # disable Web Assembly, emitted by default + # -sASYNCIFY # lets synchronous C/C++ code interact with asynchronous JS + # -sFORCE_FILESYSTEM=1 # force filesystem to load/save files data + # -sASSERTIONS=1 # enable runtime checks for common memory allocation errors (-O1 and above turn it off) + # -sMINIFY_HTML=0 # minify generated html from shell.html + # --profiling # include information for code profiling + # --memory-init-file 0 # to avoid an external memory initialization code file (.mem) + # --preload-file resources # specify a resources folder for data compilation + # --source-map-base # allow debugging in browser with source map + # --shell-file shell.html # define a custom shell .html and output extension + LDFLAGS += -sUSE_GLFW=3 -sTOTAL_MEMORY=$(BUILD_WEB_HEAP_SIZE) -sSTACK_SIZE=$(BUILD_WEB_STACK_SIZE) -sFORCE_FILESYSTEM=1 -sMINIFY_HTML=0 + + # Build using asyncify + ifeq ($(BUILD_WEB_ASYNCIFY),TRUE) + LDFLAGS += -sASYNCIFY -sASYNCIFY_STACK_SIZE=$(BUILD_WEB_ASYNCIFY_STACK_SIZE) + endif + + # Add resources building if required + ifeq ($(BUILD_WEB_RESOURCES),TRUE) + LDFLAGS += --preload-file $(BUILD_WEB_RESOURCES_PATH) + endif + + # Add debug mode flags if required + ifeq ($(BUILD_MODE),DEBUG) + LDFLAGS += -sASSERTIONS=1 --profiling + endif + + # Define a custom shell .html and output extension + LDFLAGS += --shell-file $(BUILD_WEB_SHELL) + EXT = .html +endif + +# Define libraries required on linking: LDLIBS +# NOTE: To link libraries (lib.so or lib.a), use -l +#------------------------------------------------------------------------------------------------ +ifeq ($(PLATFORM),PLATFORM_DESKTOP) + ifeq ($(PLATFORM_OS),WINDOWS) + # Libraries for Windows desktop compilation + # NOTE: WinMM library required to set high-res timer resolution + LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm -lcomdlg32 -lole32 + # Required for physac examples + LDLIBS += -static -lpthread + endif + ifeq ($(PLATFORM_OS),LINUX) + # Libraries for Debian GNU/Linux desktop compiling + # NOTE: Required packages: libegl1-mesa-dev + LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt + + # On Wayland windowing system, additional libraries requires + ifeq ($(USE_WAYLAND_DISPLAY),TRUE) + LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon + else + # On X11 requires also below libraries + LDLIBS += -lX11 + # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them + #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor + endif + # Explicit link to libc + ifeq ($(RAYLIB_LIBTYPE),SHARED) + LDLIBS += -lc + endif + endif + ifeq ($(PLATFORM_OS),OSX) + # Libraries for OSX 10.9 desktop compiling + # NOTE: Required packages: libopenal-dev libegl1-mesa-dev + LDLIBS = -lraylib -framework OpenGL -framework Cocoa -framework IOKit -framework CoreAudio -framework CoreVideo + endif + ifeq ($(PLATFORM_OS),BSD) + # Libraries for FreeBSD, OpenBSD, NetBSD, DragonFly desktop compiling + # NOTE: Required packages: mesa-libs + LDLIBS = -lraylib -lGL -lpthread -lm + + # On XWindow requires also below libraries + LDLIBS += -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor + endif +endif +ifeq ($(PLATFORM),PLATFORM_WEB) + # Libraries for web (HTML5) compiling + LDLIBS = $(RAYLIB_LIB_PATH)/libraylib.a +endif +ifeq ($(PLATFORM),PLATFORM_DRM) + # Libraries for DRM compiling + # NOTE: Required packages: libasound2-dev (ALSA) + LDLIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lgbm -ldrm -ldl +endif + + +# Define all object files from source files +#------------------------------------------------------------------------------------------------ +OBJS = $(patsubst %.c, %.o, $(PROJECT_SOURCE_FILES)) + +# Define processes to execute +#------------------------------------------------------------------------------------------------ +# For Android platform we call a custom Makefile.Android +ifeq ($(PLATFORM),PLATFORM_ANDROID) + MAKEFILE_TARGET = -f Makefile.Android + export PROJECT_NAME + export PROJECT_SOURCE_FILES +else + MAKEFILE_TARGET = $(PROJECT_NAME) +endif + +# Default target entry +# NOTE: We call this Makefile target or Makefile.Android target +all: + $(MAKE) $(MAKEFILE_TARGET) + +# Project target defined by PROJECT_NAME +$(PROJECT_NAME): $(OBJS) + $(CC) -o $(PROJECT_BUILD_PATH)/$(PROJECT_NAME)$(EXT) $(OBJS) $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + +# Compile source files +# NOTE: This pattern will compile every module defined on $(OBJS) +%.o: %.c + $(CC) -c $< -o $@ $(CFLAGS) $(INCLUDE_PATHS) -D$(PLATFORM) + +# Clean everything +clean: +ifeq ($(PLATFORM),PLATFORM_DESKTOP) + ifeq ($(PLATFORM_OS),WINDOWS) + del *.o *.exe /s + endif + ifeq ($(PLATFORM_OS),LINUX) + find . -type f -executable -delete + rm -fv *.o + endif + ifeq ($(PLATFORM_OS),OSX) + rm -f *.o external/*.o $(PROJECT_NAME) + endif +endif +ifeq ($(PLATFORM),PLATFORM_DRM) + find . -type f -executable -delete + rm -fv *.o +endif +ifeq ($(PLATFORM),PLATFORM_WEB) + del *.o *.html *.js +endif + @echo Cleaning done + diff --git a/tools/rexm/README.md b/tools/rexm/README.md new file mode 100644 index 000000000..101a5b92e --- /dev/null +++ b/tools/rexm/README.md @@ -0,0 +1,20 @@ +## rexm + +### Description + +raylib examples manager + +### Features + + - $(Project Feature 01) + - $(Project Feature 02) + - $(Project Feature 03) + +### Command line + + +### License + +This project sources are licensed under an unmodified zlib/libpng license, which is an OSI-certified, BSD-like license that allows static linking with closed source software. Check [LICENSE](LICENSE) for further details. + +*Copyright (c) 2025 Ramon Santamaria (@raysan5)* diff --git a/examples/rexm.c b/tools/rexm/rexm.c similarity index 100% rename from examples/rexm.c rename to tools/rexm/rexm.c diff --git a/tools/rexm/rexm.ico b/tools/rexm/rexm.ico new file mode 100644 index 0000000000000000000000000000000000000000..0cedcc55cee7da0e5784256078a93f2901e5d734 GIT binary patch literal 9752 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 AR{#J2 literal 0 HcmV?d00001 diff --git a/tools/rexm/rexm.rc b/tools/rexm/rexm.rc new file mode 100644 index 000000000..ad125f796 --- /dev/null +++ b/tools/rexm/rexm.rc @@ -0,0 +1,27 @@ +GLFW_ICON ICON "rexm.ico" + +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + //BLOCK "080904E4" // English UK + BLOCK "040904E4" // English US + BEGIN + VALUE "CompanyName", "Ramon Santamaria" + VALUE "FileDescription", "rexm | raylib examples manager" + VALUE "FileVersion", "1.0" + VALUE "InternalName", "rexm" + VALUE "LegalCopyright", "(c) 2025 Ramon Santamaria" + //VALUE "OriginalFilename", "rexm.exe" + VALUE "rexm", "rexm" + VALUE "ProductVersion", "1.0" + END + END + BLOCK "VarFileInfo" + BEGIN + //VALUE "Translation", 0x809, 1252 // English UK + VALUE "Translation", 0x409, 1252 // English US + END +END From e09c9ce281caf23e3502bc6faa0ddd1686bef972 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 4 Aug 2025 23:36:07 +0200 Subject: [PATCH 134/328] Minor tweaks --- .gitignore | 5 +++-- src/raudio.c | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index d857bf2d4..b496d83a3 100644 --- a/.gitignore +++ b/.gitignore @@ -111,5 +111,6 @@ build/ build-*/ docgen_tmp/ -# Parser stuff -parser/raylib_parser +# Tools stuff +tools/parser/raylib_parser +tools/rexm/VS2022 diff --git a/src/raudio.c b/src/raudio.c index eb159beeb..93024722f 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -2087,7 +2087,7 @@ float GetMusicTimePlayed(Music music) int framesInFirstBuffer = music.stream.buffer->isSubBufferProcessed[0]? 0 : subBufferSize; int framesInSecondBuffer = music.stream.buffer->isSubBufferProcessed[1]? 0 : subBufferSize; int framesInBuffers = framesInFirstBuffer + framesInSecondBuffer; - if (framesInBuffers > music.frameCount) { + if ((unsigned int)framesInBuffers > music.frameCount) { if (!music.looping) framesInBuffers = music.frameCount; } int framesSentToMix = music.stream.buffer->frameCursorPos%subBufferSize; From 7267c1c8a11c05f7d9b98f2c9d05ef4f13d2d03c Mon Sep 17 00:00:00 2001 From: Nikolas Date: Tue, 5 Aug 2025 00:15:52 +0200 Subject: [PATCH 135/328] Make culling distances consistent across raylib --- src/config.h | 4 ++-- src/rcamera.h | 4 ++-- src/rcore.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/config.h b/src/config.h index bfd1fad13..9c6e334f7 100644 --- a/src/config.h +++ b/src/config.h @@ -135,8 +135,8 @@ #define RL_MAX_SHADER_LOCATIONS 32 // Maximum number of shader locations supported -#define RL_CULL_DISTANCE_NEAR 0.001 // Default projection matrix near cull distance -#define RL_CULL_DISTANCE_FAR 10000.0 // Default projection matrix far cull distance +#define RL_CULL_DISTANCE_NEAR 0.05 // Default projection matrix near cull distance +#define RL_CULL_DISTANCE_FAR 4000.0 // Default projection matrix far cull distance // Default shader vertex attribute locations #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION 0 diff --git a/src/rcamera.h b/src/rcamera.h index a598e1107..62c1225ec 100644 --- a/src/rcamera.h +++ b/src/rcamera.h @@ -65,8 +65,8 @@ #endif #if defined(RCAMERA_STANDALONE) - #define CAMERA_CULL_DISTANCE_NEAR 0.01 - #define CAMERA_CULL_DISTANCE_FAR 1000.0 + #define CAMERA_CULL_DISTANCE_NEAR 0.05 + #define CAMERA_CULL_DISTANCE_FAR 4000.0 #else #define CAMERA_CULL_DISTANCE_NEAR RL_CULL_DISTANCE_NEAR #define CAMERA_CULL_DISTANCE_FAR RL_CULL_DISTANCE_FAR diff --git a/src/rcore.c b/src/rcore.c index 099bbe9c8..46e39991f 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -1530,7 +1530,7 @@ Ray GetScreenToWorldRayEx(Vector2 position, Camera camera, int width, int height double right = top*aspect; // Calculate projection matrix from orthographic - matProj = MatrixOrtho(-right, right, -top, top, 0.01, 1000.0); + matProj = MatrixOrtho(-right, right, -top, top, rlGetCullDistanceNear(), rlGetCullDistanceFar()); } // Unproject far/near points From b683af298c3679925864faf8e76601d7ed1aa65a Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 5 Aug 2025 09:40:01 +0200 Subject: [PATCH 136/328] Update examples_template.c --- examples/examples_template.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/examples_template.c b/examples/examples_template.c index 2ee806b54..ac8747e82 100644 --- a/examples/examples_template.c +++ b/examples/examples_template.c @@ -58,9 +58,9 @@ * * raylib [] example - * -* Example complexity rating: [★☆??] ?/4 +* Example complexity rating: [★☆☆☆] 1/4 * -* Example originally created with raylib 5.5, last time updated with raylib 5.6-dev +* Example originally created with raylib 5.5, last time updated with raylib 5.6 * * Example contributed by (@) and reviewed by Ramon Santamaria (@raysan5) * From 02992ce63b4dc05608911d226d99bd1c9c2710c9 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 5 Aug 2025 09:54:17 +0200 Subject: [PATCH 137/328] UPDATE: Get example info from example header when added, to be added to collection --- tools/rexm/rexm.c | 102 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 78 insertions(+), 24 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 89c794a8a..9dc7740fd 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -376,48 +376,102 @@ int main(int argc, char *argv[]) // Add example to the collection list, if not already there // NOTE: Required format: shapes;shapes_basic_shapes;⭐️☆☆☆;1.0;4.2;"Ray";@raysan5 //------------------------------------------------------------------------------------------------ - char *exColInfo = LoadFileText(exCollectionFilePath); - if (TextFindIndex(exColInfo, exName) == -1) // Example not found + char *exCollectionList = LoadFileText(exCollectionFilePath); + if (TextFindIndex(exCollectionList, exName) == -1) // Example not found { - char *exColInfoUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated list copy, 2MB + char *exCollectionListUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated list copy, 2MB // Add example to the main list, by category // by default add it last in the category list // NOTE: When populating to other files, lists are sorted by name - int nextCatIndex = 0; - if (strcmp(exCategory, "core") == 0) nextCatIndex = 1; - else if (strcmp(exCategory, "shapes") == 0) nextCatIndex = 2; - else if (strcmp(exCategory, "textures") == 0) nextCatIndex = 3; - else if (strcmp(exCategory, "text") == 0) nextCatIndex = 4; - else if (strcmp(exCategory, "models") == 0) nextCatIndex = 5; - else if (strcmp(exCategory, "shaders") == 0) nextCatIndex = 6; - else if (strcmp(exCategory, "audio") == 0) nextCatIndex = 7; - else if (strcmp(exCategory, "others") == 0) nextCatIndex = -1; // Add to EOF + int nextCategoryIndex = 0; + if (strcmp(exCategory, "core") == 0) nextCategoryIndex = 1; + else if (strcmp(exCategory, "shapes") == 0) nextCategoryIndex = 2; + else if (strcmp(exCategory, "textures") == 0) nextCategoryIndex = 3; + else if (strcmp(exCategory, "text") == 0) nextCategoryIndex = 4; + else if (strcmp(exCategory, "models") == 0) nextCategoryIndex = 5; + else if (strcmp(exCategory, "shaders") == 0) nextCategoryIndex = 6; + else if (strcmp(exCategory, "audio") == 0) nextCategoryIndex = 7; + else if (strcmp(exCategory, "others") == 0) nextCategoryIndex = -1; // Add to EOF - // TODO: Get required example info from example file header (if provided) + // Get required example info from example file header (if provided) // NOTE: If no example info is provided (other than category/name), just using some default values + char *exText = LoadFileText(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + + rlExampleInfo exInfo = { 0 }; + strcpy(exInfo.category, exCategory); + strcpy(exInfo.name, exName); - if (nextCatIndex == -1) + // Get example difficulty stars + char starsText[16] = { 0 }; + int starsIndex = TextFindIndex(exText, "★"); + if (starsIndex > 0) strncpy(starsText, exText + starsIndex, 3*4); // NOTE: Every UTF-8 star are 3 bytes + else strcpy(starsText, "★☆☆☆"); + + // Get example create with raylib version + char verCreateText[4] = { 0 }; + int verCreateIndex = TextFindIndex(exText, "created with raylib "); // Version = index + 20 + if (verCreateIndex > 0) strncpy(verCreateText, exText + verCreateIndex + 20, 3); + else strncpy(verCreateText, RAYLIB_VERSION, 3); // Only pick MAJOR.MINOR + + // Get example update with raylib version + char verUpdateText[4] = { 0 }; + int verUpdateIndex = TextFindIndex(exText, "updated with raylib "); // Version = index + 20 + if (verUpdateIndex > 0) strncpy(verUpdateText, exText + verUpdateIndex + 20, 3); + else strncpy(verUpdateText, RAYLIB_VERSION, 3); // Only pick MAJOR.MINOR + + // Get example creator and github user + int authorIndex = TextFindIndex(exText, "Example contributed by "); // Author = index + 23 + int authorGitIndex = TextFindIndex(exText, "(@"); // Author GitHub user = index + 2 + if (authorIndex > 0) + { + int authorNameLen = 0; + if (authorGitIndex > 0) authorNameLen = (authorGitIndex - 1) - (authorIndex + 23); + else + { + int authorNameEndIndex = TextFindIndex(exText + authorIndex, " and reviewed by Ramon Santamaria"); + if (authorNameEndIndex == -1) authorNameEndIndex = TextFindIndex(exText + authorIndex, "\n"); + + authorNameLen = authorNameEndIndex - (authorIndex + 23); + } + strncpy(exInfo.author, exText + authorIndex + 23, authorNameLen); + } + else strcpy(exInfo.author, ""); + if (authorGitIndex > 0) + { + int authorGitEndIndex = TextFindIndex(exText + authorGitIndex, ")"); + if (authorGitEndIndex > 0) strncpy(exInfo.authorGitHub, exText + authorGitIndex + 2, authorGitEndIndex - (authorGitIndex + 2)); + } + else strcpy(exInfo.author, ""); + + // TODO: Verify copyright line + // Copyright (c) - (@) + + UnloadFileText(exText); + + if (nextCategoryIndex == -1) { // Add example to collection at the EOF - int endIndex = (int)strlen(exColInfo); - memcpy(exColInfoUpdated, exColInfo, endIndex); - sprintf(exColInfoUpdated + endIndex, TextFormat("%s;%s;⭐️☆☆☆;6.0;6.0;\"Ray\";@raysan5\n", exCategory, exName)); + int endIndex = (int)strlen(exCollectionList); + memcpy(exCollectionListUpdated, exCollectionList, endIndex); + sprintf(exCollectionListUpdated + endIndex, TextFormat("%s;%s;%s;%s;%s;\"%s\";@%s\n", + exInfo.category, exInfo.name, starsText, verCreateText, verUpdateText, exInfo.author, exInfo.authorGitHub)); } else { // Add example to collection, at the end of the category list - int catIndex = TextFindIndex(exColInfo, exCategories[nextCatIndex]); - memcpy(exColInfoUpdated, exColInfo, catIndex); - int textWritenSize = sprintf(exColInfoUpdated + catIndex, TextFormat("%s;%s;⭐️☆☆☆;6.0;6.0;\"Ray\";@raysan5\n", exCategory, exName)); - memcpy(exColInfoUpdated + catIndex + textWritenSize, exColInfo + catIndex, strlen(exColInfo) - catIndex); + int categoryIndex = TextFindIndex(exCollectionList, exCategories[nextCategoryIndex]); + memcpy(exCollectionListUpdated, exCollectionList, categoryIndex); + int textWritenSize = sprintf(exCollectionListUpdated + categoryIndex, TextFormat("%s;%s;%s;%s;%s;\"%s\";@%s\n", + exInfo.category, exInfo.name, starsText, verCreateText, verUpdateText, exInfo.author, exInfo.authorGitHub)); + memcpy(exCollectionListUpdated + categoryIndex + textWritenSize, exCollectionList + categoryIndex, strlen(exCollectionList) - categoryIndex); } - SaveFileText(exCollectionFilePath, exColInfoUpdated); - RL_FREE(exColInfoUpdated); + SaveFileText(exCollectionFilePath, exCollectionListUpdated); + RL_FREE(exCollectionListUpdated); } else LOG("WARNING: ADD: Example is already on the collection\n"); - UnloadFileText(exColInfo); + UnloadFileText(exCollectionList); //------------------------------------------------------------------------------------------------ // Update: Makefile, Makefile.Web, README.md, examples.js From 7b93591676f70daea9d80231e2f88165cfeadeec Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 5 Aug 2025 09:54:51 +0200 Subject: [PATCH 138/328] Added some notes to avoid platform-dependant .BAT scripts --- tools/rexm/rexm.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 9dc7740fd..9de591ad7 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -499,8 +499,24 @@ int main(int argc, char *argv[]) // Compile to: raylib.com/examples//_example_name.wasm // Compile to: raylib.com/examples//_example_name.js //------------------------------------------------------------------------------------------------ - // TODO: Avoid platform-specific .BAT, not portable and it does not consider RESOURCES for Web properly, - // Makefile.Web should be used... but it requires proper editing first! + // TODO: Avoid platform-specific .BAT file + /* + SET RAYLIB_PATH=C:\GitHub\raylib + SET COMPILER_PATH=C:\raylib\w64devkit\bin + ENV_SET PATH=$(COMPILER_PATH) + SET MAKE=mingw32-make + $(MAKE) -f Makefile.Web shaders/shaders_deferred_render PLATFORM=$(PLATFORM) -B + + //int putenv(char *string); // putenv takes a string of the form NAME=VALUE + //int setenv(const char *envname, const char *envval, int overwrite); + //int unsetenv(const char *name); //unset variable + putenv("RAYLIB_DIR=C:\\GitHub\\raylib"); + putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin"); + setenv("RAYLIB_DIR", "C:\\GitHub\\raylib", 1); + unsetenv("RAYLIB_DIR"); + getenv("RAYLIB_DIR"); + system(TextFormat("make -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exCategory, exName)); + */ system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exCategory, exName)); // Copy results to web side From 1f2b5d6282140a127e31fb737f0bd7beaa86a79a Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 5 Aug 2025 10:04:54 +0200 Subject: [PATCH 139/328] Update examples_template.c --- examples/examples_template.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/examples_template.c b/examples/examples_template.c index ac8747e82..e82bed065 100644 --- a/examples/examples_template.c +++ b/examples/examples_template.c @@ -62,12 +62,12 @@ * * Example originally created with raylib 5.5, last time updated with raylib 5.6 * -* Example contributed by (@) and reviewed by Ramon Santamaria (@raysan5) +* Example contributed by (@) 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) - (@) +* Copyright (c) - (@) * ********************************************************************************************/ From 90cf6a18da923b57736dab4e3c7df979ac16bffe Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 5 Aug 2025 12:37:11 +0200 Subject: [PATCH 140/328] REXM: Renamed some variables --- tools/rexm/rexm.c | 53 +++++++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 9de591ad7..e26f27269 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -58,9 +58,12 @@ #define LOG(...) #endif -#define REXM_MAX_BUFFER_SIZE (2*1024*1024) // 2MB +#define REXM_MAX_EXAMPLES 512 +#define REXM_MAX_EXAMPLE_CATEGORIES 8 -#define REXM_MAX_RESOURCE_PATHS 256 +#define REXM_MAX_BUFFER_SIZE (2*1024*1024) // 2MB + +#define REXM_MAX_RESOURCE_PATHS 256 //---------------------------------------------------------------------------------- // Types and Structures Definition @@ -178,7 +181,7 @@ int main(int argc, char *argv[]) char cat[12] = { 0 }; strncpy(cat, argv[2], catIndex); bool catFound = false; - for (int i = 0; i < MAX_EXAMPLE_CATEGORIES; i++) + for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES; i++) { if (TextIsEqual(cat, exCategories[i])) { catFound = true; break; } } @@ -212,7 +215,7 @@ int main(int argc, char *argv[]) char cat[12] = { 0 }; strncpy(cat, argv[2], catIndex); bool catFound = false; - for (int i = 0; i < MAX_EXAMPLE_CATEGORIES; i++) + for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES; i++) { if (TextIsEqual(cat, exCategories[i])) { catFound = true; break; } } @@ -274,8 +277,8 @@ int main(int argc, char *argv[]) } else if (strcmp(argv[1], "validate") == 0) { - // Validate examples in collection - // All examples in collection match all requirements on required files + // Validate examples in collection (report results) + // All examples in collection match all files requirements opCode = OP_VALIDATE; } @@ -283,7 +286,7 @@ int main(int argc, char *argv[]) switch (opCode) { - case 1: // Create: New example from template + case OP_CREATE: // Create: New example from template { // Create: raylib/examples//_example_name.c char *exText = LoadFileText(exTemplateFilePath); @@ -302,7 +305,7 @@ int main(int argc, char *argv[]) for (int i = 0; i < 6; i++) { MemFree(exTextUpdated[i]); exTextUpdated[i] = NULL; } UnloadFileText(exText); } - case 2: // Add: Example from command-line input filename + case OP_ADD: // Add: Example from command-line input filename { // Add: raylib/examples//_example_name.c if (opCode != 1) FileCopy(inFileName, TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); @@ -531,7 +534,7 @@ int main(int argc, char *argv[]) //------------------------------------------------------------------------------------------------ } break; - case 3: // Rename + case OP_RENAME: // Rename { // NOTE: At this point provided values have been validated: // exName, exCategory, exRename, exRecategory @@ -606,27 +609,27 @@ int main(int argc, char *argv[]) TextFormat("%s/%s/%s.js", exWebPath, exRecategory, exRename)); } break; - case 4: // Remove + case OP_REMOVE: // Remove { // Remove example from collection for files update //------------------------------------------------------------------------------------------------ - char *exColInfo = LoadFileText(exCollectionFilePath); - int exIndex = TextFindIndex(exColInfo, TextFormat("%s;%s", exCategory, exName)); + char *exCollectionList = LoadFileText(exCollectionFilePath); + int exIndex = TextFindIndex(exCollectionList, TextFormat("%s;%s", exCategory, exName)); if (exIndex > 0) // Example found { - char *exColInfoUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated list copy, 2MB + char *exCollectionListUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated list copy, 2MB - memcpy(exColInfoUpdated, exColInfo, exIndex); + memcpy(exCollectionListUpdated, exCollectionList, exIndex); int lineLen = 0; - for (int i = exIndex; (exColInfo[i] != '\n') && (exColInfo[i] != '\0'); i++) lineLen++; + for (int i = exIndex; (exCollectionList[i] != '\n') && (exCollectionList[i] != '\0'); i++) lineLen++; // Remove line and copy the rest next - memcpy(exColInfoUpdated + exIndex, exColInfo + exIndex + lineLen + 1, strlen(exColInfo) - exIndex - lineLen); + memcpy(exCollectionListUpdated + exIndex, exCollectionList + exIndex + lineLen + 1, strlen(exCollectionList) - exIndex - lineLen); - SaveFileText(exCollectionFilePath, exColInfoUpdated); - RL_FREE(exColInfoUpdated); + SaveFileText(exCollectionFilePath, exCollectionListUpdated); + RL_FREE(exCollectionListUpdated); } else LOG("WARNING: REMOVE: Example not found in the collection\n"); - UnloadFileText(exColInfo); + UnloadFileText(exCollectionList); //------------------------------------------------------------------------------------------------ // Remove: raylib/examples//resources/.. @@ -690,7 +693,7 @@ int main(int argc, char *argv[]) remove(TextFormat("%s/%s/%s.js", exWebPath, exCategory, exName)); } break; - case 5: // Validate + case OP_VALIDATE: // Validate: report and actions { // TODO: Validate examples in collection list [examples_list.txt] -> Source of truth! // Validate: raylib/examples//_example_name.c -> File exists? @@ -777,7 +780,7 @@ static int UpdateRequiredFiles(void) memcpy(mkTextUpdated, mkText, mkListStartIndex); mkIndex = sprintf(mkTextUpdated + mkListStartIndex, "#EXAMPLES_LIST_START\n"); - for (int i = 0; i < MAX_EXAMPLE_CATEGORIES; i++) + for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES; i++) { mkIndex += sprintf(mkTextUpdated + mkListStartIndex + mkIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i]))); @@ -813,7 +816,7 @@ static int UpdateRequiredFiles(void) mkwIndex = sprintf(mkwTextUpdated + mkwListStartIndex, "#EXAMPLES_LIST_START\n"); // NOTE: We avoid the "others" category on web building - for (int i = 0; i < MAX_EXAMPLE_CATEGORIES - 1; i++) + for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES - 1; i++) { mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i]))); @@ -839,7 +842,7 @@ static int UpdateRequiredFiles(void) mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, "audio: $(AUDIO)\n\n"); // NOTE: We avoid the "others" category on web building - for (int i = 0; i < MAX_EXAMPLE_CATEGORIES - 1; i++) + for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES - 1; i++) { mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat("# Compile %s examples\n", TextToUpper(exCategories[i]))); @@ -937,7 +940,7 @@ static int UpdateRequiredFiles(void) mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, TextFormat("## EXAMPLES COLLECTION [TOTAL: %i]\n\n", exCollectionFullCount)); // NOTE: We keep a global examples counter - for (int i = 0; i < MAX_EXAMPLE_CATEGORIES; i++) + for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES; i++) { int exCollectionCount = 0; rlExampleInfo *exCollection = LoadExamplesData(exCollectionFilePath, exCategories[i], false, &exCollectionCount); @@ -1040,7 +1043,7 @@ static int UpdateRequiredFiles(void) jsIndex += sprintf(jsTextUpdated + jsListStartIndex + jsIndex, " var exampleData = [\n"); // NOTE: We avoid "others" category - for (int i = 0; i < MAX_EXAMPLE_CATEGORIES - 1; i++) + for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES - 1; i++) { int exCollectionCount = 0; rlExampleInfo *exCollection = LoadExamplesData(exCollectionFilePath, exCategories[i], false, &exCollectionCount); From 99a43457e893632d7e28b0923208c512a986beef Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 5 Aug 2025 12:38:11 +0200 Subject: [PATCH 141/328] REXM: ADDED: Command; `update` to validate+update required files --- tools/rexm/rexm.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index e26f27269..c213ca1ec 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -8,6 +8,7 @@ * - rename * - remove * - validate +* - update * * Files involved in the processes: * - raylib/examples//_example_name.c @@ -81,12 +82,13 @@ typedef struct { // Example management operations typedef enum { - OP_NONE = 0, // No process to do - OP_CREATE = 1, // Create new example, using default template - OP_ADD = 2, // Add existing examples (hopefully following template) - OP_RENAME = 3, // Rename existing example - OP_REMOVE = 4, // Remove existing example - OP_VALIDATE = 5, // Validate examples, using [examples_list.txt] as main source by default + OP_NONE = 0, // No process to do + OP_CREATE = 1, // Create new example, using default template + OP_ADD = 2, // Add existing examples (hopefully following template) + OP_RENAME = 3, // Rename existing example + OP_REMOVE = 4, // Remove existing example + OP_VALIDATE = 5, // Validate examples, using [examples_list.txt] as main source by default + OP_UPDATE = 6, // Validate and update required examples (as far as possible) } rlExampleOperation; #define MAX_EXAMPLE_CATEGORIES 8 @@ -282,6 +284,13 @@ int main(int argc, char *argv[]) opCode = OP_VALIDATE; } + else if (strcmp(argv[1], "update") == 0) + { + // Validate and update examples in collection + // All examples in collection match all files requirements + + opCode = OP_UPDATE; + } } switch (opCode) @@ -694,6 +703,7 @@ int main(int argc, char *argv[]) } break; case OP_VALIDATE: // Validate: report and actions + case OP_UPDATE: { // TODO: Validate examples in collection list [examples_list.txt] -> Source of truth! // Validate: raylib/examples//_example_name.c -> File exists? From f3066854695f606fac714240fa45d13bc06c3227 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 5 Aug 2025 12:38:30 +0200 Subject: [PATCH 142/328] Update rexm.c --- tools/rexm/rexm.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index c213ca1ec..296ffc552 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -91,9 +91,7 @@ typedef enum { OP_UPDATE = 6, // Validate and update required examples (as far as possible) } rlExampleOperation; -#define MAX_EXAMPLE_CATEGORIES 8 - -static const char *exCategories[MAX_EXAMPLE_CATEGORIES] = { "core", "shapes", "textures", "text", "models", "shaders", "audio", "others" }; +static const char *exCategories[REXM_MAX_EXAMPLE_CATEGORIES] = { "core", "shapes", "textures", "text", "models", "shaders", "audio", "others" }; // Paths required for examples management // TODO: Avoid hardcoding path values... From 81eb48cad8f118385f7e23a2e075da029a55d62b Mon Sep 17 00:00:00 2001 From: Maicon Santana Date: Tue, 5 Aug 2025 11:44:41 +0100 Subject: [PATCH 143/328] Add compiled rexm to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index b496d83a3..3a9197be3 100644 --- a/.gitignore +++ b/.gitignore @@ -114,3 +114,4 @@ docgen_tmp/ # Tools stuff tools/parser/raylib_parser tools/rexm/VS2022 +tools/rexm/rexm From 68a1190bf2cb1754ee0050ad363ce2a833303858 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 6 Aug 2025 00:56:29 +0200 Subject: [PATCH 144/328] REXM: ADDED: Examples validation --- tools/rexm/rexm.c | 403 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 315 insertions(+), 88 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 296ffc552..d5f7f02ca 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -71,15 +71,36 @@ //---------------------------------------------------------------------------------- // raylib example info struct typedef struct { - char category[16]; - char name[128]; - char stars; - float verCreated; - float verUpdated; - char author[64]; - char authorGitHub[64]; + char category[16]; // Example category: core, shapes, textures, text, models, shaders, audio, others + char name[128]; // Example name: _name_part + int stars; // Example stars count: ★☆☆☆ + float verCreated; // Example raylib creation version + float verUpdated; // Example raylib last update version + char author[64]; // Example author + char authorGitHub[64]; // Example author, GitHub user name + int resCount; // Example resources counter + int status; // Example validation status info } rlExampleInfo; +// Validation status for a single example +typedef enum { + VALID_OK = 0, // All required files and entries are present + VALID_MISSING_C = 1 << 0, // Missing .c source file + VALID_MISSING_PNG = 1 << 1, // Missing screenshot .png + VALID_INVALID_PNG = 1 << 2, // Invalid screenshot .png (using template one) + VALID_MISSING_RESOURCES = 1 << 3, // Missing resources listed in the code + VALID_MISSING_VCXPROJ = 1 << 4, // Missing Visual Studio .vcxproj file + VALID_NOT_IN_VCXSOL = 1 << 5, // Project not included in solution file + VALID_NOT_IN_MAKEFILE = 1 << 6, // Not listed in Makefile + VALID_NOT_IN_MAKEFILE_WEB = 1 << 7, // Not listed in Makefile.Web + VALID_NOT_IN_README = 1 << 8, // Not listed in README.md + VALID_NOT_IN_JS = 1 << 9, // Not listed in examples.js + VALID_INCONSISTENT_INFO = 1 << 10, // Inconsistent info between collection and example header (stars, author...) + VALID_MISSING_WEB_OUTPUT = 1 << 11, // Missing .html/.data/.wasm/.js + VALID_INVALID_CATEGORY = 1 << 12, // Not a recognized category + VALID_UNKNOWN_ERROR = 1 << 13 // Unknown failure case (fallback) +} rlExampleValidationStatus; + // Example management operations typedef enum { OP_NONE = 0, // No process to do @@ -107,11 +128,12 @@ static const char *exCollectionFilePath = "C:/GitHub/raylib/examples/examples_li //---------------------------------------------------------------------------------- // Module specific functions declaration //---------------------------------------------------------------------------------- +static int FileTextFind(const char *fileName, const char *find); static int FileTextReplace(const char *fileName, const char *textLookUp, const char *textReplace); static int FileCopy(const char *srcPath, const char *dstPath); static int FileRename(const char *fileName, const char *fileRename); -static int FileRemove(const char *fileName); static int FileMove(const char *srcPath, const char *dstPath); +static int FileRemove(const char *fileName); // Update required files from examples collection // UPDATES: Makefile, Makefile.Web, README.md, examples.js @@ -128,6 +150,9 @@ static void UnloadExamplesData(rlExampleInfo *exInfo); static char **LoadTextLines(const char *text, int *count); static void UnloadTextLines(char **text); +// Get example info from file header +static rlExampleInfo *GetExampleInfo(const char *exFileName); + // raylib example line info parser // Parses following line format: core/core_basic_window;⭐️☆☆☆;1.0;1.0;"Ray"/@raysan5 static int ParseExampleInfoLine(const char *line, rlExampleInfo *entry); @@ -406,76 +431,36 @@ int main(int argc, char *argv[]) // Get required example info from example file header (if provided) // NOTE: If no example info is provided (other than category/name), just using some default values - char *exText = LoadFileText(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); - - rlExampleInfo exInfo = { 0 }; - strcpy(exInfo.category, exCategory); - strcpy(exInfo.name, exName); + rlExampleInfo *exInfo = GetExampleInfo(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); // Get example difficulty stars char starsText[16] = { 0 }; - int starsIndex = TextFindIndex(exText, "★"); - if (starsIndex > 0) strncpy(starsText, exText + starsIndex, 3*4); // NOTE: Every UTF-8 star are 3 bytes - else strcpy(starsText, "★☆☆☆"); - - // Get example create with raylib version - char verCreateText[4] = { 0 }; - int verCreateIndex = TextFindIndex(exText, "created with raylib "); // Version = index + 20 - if (verCreateIndex > 0) strncpy(verCreateText, exText + verCreateIndex + 20, 3); - else strncpy(verCreateText, RAYLIB_VERSION, 3); // Only pick MAJOR.MINOR - - // Get example update with raylib version - char verUpdateText[4] = { 0 }; - int verUpdateIndex = TextFindIndex(exText, "updated with raylib "); // Version = index + 20 - if (verUpdateIndex > 0) strncpy(verUpdateText, exText + verUpdateIndex + 20, 3); - else strncpy(verUpdateText, RAYLIB_VERSION, 3); // Only pick MAJOR.MINOR - - // Get example creator and github user - int authorIndex = TextFindIndex(exText, "Example contributed by "); // Author = index + 23 - int authorGitIndex = TextFindIndex(exText, "(@"); // Author GitHub user = index + 2 - if (authorIndex > 0) + for (int i = 0; i < 4; i++) { - int authorNameLen = 0; - if (authorGitIndex > 0) authorNameLen = (authorGitIndex - 1) - (authorIndex + 23); - else - { - int authorNameEndIndex = TextFindIndex(exText + authorIndex, " and reviewed by Ramon Santamaria"); - if (authorNameEndIndex == -1) authorNameEndIndex = TextFindIndex(exText + authorIndex, "\n"); - - authorNameLen = authorNameEndIndex - (authorIndex + 23); - } - strncpy(exInfo.author, exText + authorIndex + 23, authorNameLen); + // NOTE: Every UTF-8 star are 3 bytes + if (i < exInfo->stars) strncpy(starsText + 3*i, "★", 3); + else strncpy(starsText + 3*i, "☆", 3); } - else strcpy(exInfo.author, ""); - if (authorGitIndex > 0) - { - int authorGitEndIndex = TextFindIndex(exText + authorGitIndex, ")"); - if (authorGitEndIndex > 0) strncpy(exInfo.authorGitHub, exText + authorGitIndex + 2, authorGitEndIndex - (authorGitIndex + 2)); - } - else strcpy(exInfo.author, ""); - - // TODO: Verify copyright line - // Copyright (c) - (@) - UnloadFileText(exText); - if (nextCategoryIndex == -1) { // Add example to collection at the EOF int endIndex = (int)strlen(exCollectionList); memcpy(exCollectionListUpdated, exCollectionList, endIndex); - sprintf(exCollectionListUpdated + endIndex, TextFormat("%s;%s;%s;%s;%s;\"%s\";@%s\n", - exInfo.category, exInfo.name, starsText, verCreateText, verUpdateText, exInfo.author, exInfo.authorGitHub)); + sprintf(exCollectionListUpdated + endIndex, TextFormat("%s;%s;%s;%.2f;%.2f;\"%s\";@%s\n", + exInfo->category, exInfo->name, starsText, exInfo->verCreated, exInfo->verUpdated, exInfo->author, exInfo->authorGitHub)); } else { // Add example to collection, at the end of the category list int categoryIndex = TextFindIndex(exCollectionList, exCategories[nextCategoryIndex]); memcpy(exCollectionListUpdated, exCollectionList, categoryIndex); - int textWritenSize = sprintf(exCollectionListUpdated + categoryIndex, TextFormat("%s;%s;%s;%s;%s;\"%s\";@%s\n", - exInfo.category, exInfo.name, starsText, verCreateText, verUpdateText, exInfo.author, exInfo.authorGitHub)); + int textWritenSize = sprintf(exCollectionListUpdated + categoryIndex, TextFormat("%s;%s;%s;%.2f;%.2f;\"%s\";@%s\n", + exInfo->category, exInfo->name, starsText, exInfo->verCreated, exInfo->verUpdated, exInfo->author, exInfo->authorGitHub)); memcpy(exCollectionListUpdated + categoryIndex + textWritenSize, exCollectionList + categoryIndex, strlen(exCollectionList) - categoryIndex); } + + RL_FREE(exInfo); SaveFileText(exCollectionFilePath, exCollectionListUpdated); RL_FREE(exCollectionListUpdated); @@ -703,29 +688,178 @@ int main(int argc, char *argv[]) case OP_VALIDATE: // Validate: report and actions case OP_UPDATE: { - // TODO: Validate examples in collection list [examples_list.txt] -> Source of truth! - // Validate: raylib/examples//_example_name.c -> File exists? - // Validate: raylib/examples//_example_name.png -> File exists? - // Validate: raylib/examples//resources/.. -> Example resources available? - // Validate: raylib/examples/Makefile -> Example listed? - // Validate: raylib/examples/Makefile.Web -> Example listed? - // Validate: raylib/examples/README.md -> Example listed? - // Validate: raylib/projects/VS2022/examples/_example_name.vcxproj -> File exists? - // Validate: raylib/projects/VS2022/raylib.sln -> Example listed? - // Validate: raylib.com/common/examples.js -> Example listed? - // Validate: raylib.com/examples//_example_name.html -> File exists? - // Validate: raylib.com/examples//_example_name.data -> File exists? - // Validate: raylib.com/examples//_example_name.wasm -> File exists? - // Validate: raylib.com/examples//_example_name.js -> File exists? + /* + // Validation flags available: + VALID_MISSING_C + VALID_MISSING_PNG + VALID_INVALID_PNG + VALID_MISSING_RESOURCES + VALID_MISSING_VCXPROJ + VALID_NOT_IN_VCXSOL + VALID_NOT_IN_MAKEFILE + VALID_NOT_IN_MAKEFILE_WEB + VALID_NOT_IN_README + VALID_NOT_IN_JS + VALID_INCONSISTENT_INFO + VALID_MISSING_WEB_OUTPUT + VALID_INVALID_CATEGORY + */ - // Additional validation elements - // Validate: Example naming conventions: /_example_name - // Validate: Duplicate entries in collection list - // Validate: Example info (stars, author, github) missmatches with example content + // Check all examples in collection [examples_list.txt] -> Source of truth! + int exCollectionCount = 0; + rlExampleInfo *exCollection = LoadExamplesData(exCollectionFilePath, "ALL", true, &exCollectionCount); - // After validation, update required files for consistency - // Update files: Makefile, Makefile.Web, README.md, examples.js - UpdateRequiredFiles(); + // TODO: Validate: Duplicate entries in collection list? + + // Get status information for all examples, using "status" field in the struct + for (int i = 0; i < exCollectionCount; i++) + { + rlExampleInfo *exInfo = &exCollection[i]; + exInfo->status = 0; + + // Validate: raylib/examples//_example_name.c -> File exists? + if (!FileExists(TextFormat("%s/%s/%s.c", exBasePath, exInfo->category, exInfo->name))) exInfo->status |= VALID_MISSING_C; + + // Validate: raylib/examples//_example_name.png -> File exists? + if (!FileExists(TextFormat("%s/%s/%s.png", exBasePath, exInfo->category, exInfo->name))) exInfo->status |= VALID_MISSING_PNG; + + // Validate: example screenshot is not the template default one + Image imScreenshot = LoadImage(TextFormat("%s/%s/%s.png", exBasePath, exInfo->category, exInfo->name)); + Image imTemplate = LoadImage(TextFormat("%s/examples_template.png", exBasePath)); + if (memcmp(imScreenshot.data, imTemplate.data, GetPixelDataSize(imScreenshot.width, imScreenshot.height, imScreenshot.format)) != 0) exInfo->status |= VALID_INVALID_PNG; + UnloadImage(imTemplate); + UnloadImage(imScreenshot); + + // Validate: raylib/examples/Makefile -> Example listed? + if (FileTextFind(TextFormat("%s/Makefile", exBasePath), exInfo->name) == -1) exInfo->status |= VALID_NOT_IN_MAKEFILE; + + // Validate: raylib/examples/Makefile.Web -> Example listed? + if (FileTextFind(TextFormat("%s/Makefile.Web", exBasePath), exInfo->name) == -1) exInfo->status |= VALID_NOT_IN_MAKEFILE_WEB; + + // Validate: raylib/examples/README.md -> Example listed? + if (FileTextFind(TextFormat("%s/README.md", exBasePath), exInfo->name) == -1) exInfo->status |= VALID_NOT_IN_JS; + + // Validate: raylib.com/common/examples.js -> Example listed? + if (FileTextFind(TextFormat("%s/common/examples.js", exWebPath), exInfo->name) == -1) exInfo->status |= VALID_NOT_IN_README; + + // Validate: raylib/projects/VS2022/examples/_example_name.vcxproj -> File exists? + if (!FileExists(TextFormat("%s/../projects/VS2022/examples/%s.png", exBasePath, exInfo->name))) exInfo->status |= VALID_MISSING_VCXPROJ; + + // Validate: raylib/projects/VS2022/raylib.sln -> Example listed? + if (FileTextFind(TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath), exInfo->name) == -1) exInfo->status |= VALID_NOT_IN_VCXSOL; + + // Validate: raylib/examples//resources/.. -> Example resources available? + // Scan resources used in example to check for missing resource files + char **resPaths = ScanExampleResources(TextFormat("%s/%s/%s.c", exBasePath, exInfo->category, exInfo->name), &exInfo->resCount); + if (exInfo->resCount > 0) + { + for (int r = 0; r < exInfo->resCount; r++) + { + // WARNING: Special case to consider: shaders, resource paths could use conditions: "glsl%i" + // In this case, multiple resources are required: glsl100, glsl120, glsl330 + if (TextFindIndex(resPaths[r], "glsl%i") > -1) + { + int glslVer[3] = { 100, 120, 330 }; + + for (int v = 0; v < 3; v++) + { + char *resPathUpdated = TextReplace(resPaths[r], "glsl%i", TextFormat("glsl%i", glslVer[v])); + if (!FileExists(TextFormat("%s/%s/%s", exBasePath, exInfo->category, resPathUpdated))) exInfo->status |= VALID_MISSING_RESOURCES; + RL_FREE(resPathUpdated); + } + } + else + { + if (!FileExists(TextFormat("%s/%s/%s", exBasePath, exInfo->category, resPaths[r]))) exInfo->status |= VALID_MISSING_RESOURCES; + } + } + } + ClearExampleResources(resPaths); + + // Validate: raylib.com/examples//_example_name.html -> File exists? + // Validate: raylib.com/examples//_example_name.data -> File exists? + // Validate: raylib.com/examples//_example_name.wasm -> File exists? + // Validate: raylib.com/examples//_example_name.js -> File exists? + if ((!FileExists(TextFormat("%s/examples/%s/%s.html", exWebPath, exInfo->category, exInfo->name))) || + ((exInfo->resCount > 0) && !FileExists(TextFormat("%s/examples/%s/%s.data", exWebPath, exInfo->category, exInfo->name))) || + (!FileExists(TextFormat("%s/examples/%s/%s.wasm", exWebPath, exInfo->category, exInfo->name))) || + (!FileExists(TextFormat("%s/examples/%s/%s.js", exWebPath, exInfo->category, exInfo->name)))) exInfo->status |= VALID_MISSING_WEB_OUTPUT; + + // NOTE: Additional validation elements + // Validate: Example naming conventions: /_example_name, valid category + if ((TextFindIndex(exInfo->name, exInfo->category) == -1) || + (!TextIsEqual(exInfo->category, "core") || !TextIsEqual(exInfo->category, "shapes") || + !TextIsEqual(exInfo->category, "textures") || !TextIsEqual(exInfo->category, "text") || + !TextIsEqual(exInfo->category, "models") || !TextIsEqual(exInfo->category, "shaders") || + !TextIsEqual(exInfo->category, "audio") || !TextIsEqual(exInfo->category, "others"))) exInfo->status |= VALID_INVALID_CATEGORY; + + // Validate: Example info (stars, author, github) missmatches with example header content + rlExampleInfo *exInfoHeader = GetExampleInfo(TextFormat("%s/%s/%s.c", exBasePath, exInfo->category, exInfo->name)); + + if ((strcmp(exInfo->name, exInfoHeader->name) != 0) || // NOTE: Get it from example, not file + (strcmp(exInfo->category, exInfoHeader->category) != 0) || + (strcmp(exInfo->author, exInfoHeader->author) != 0) || + (strcmp(exInfo->authorGitHub, exInfoHeader->authorGitHub) != 0) || + (exInfo->stars != exInfoHeader->stars) || + (exInfo->verCreated != exInfoHeader->verCreated) || + (exInfo->verUpdated != exInfoHeader->verUpdated)) exInfo->status |= VALID_INCONSISTENT_INFO; + + RL_FREE(exInfoHeader); + + // TODO: Generate validation report/table with results (.md) + /* + //Status Description + //OK Everything found + //MISSING One or more files are missing, some can be solved automatically + //ERROR Serious inconsistencies + + Columns: + [C] VALID_MISSING_C // Missing .c source file + [PNG] VALID_MISSING_PNG // Missing screenshot .png + [WPNG] VALID_INVALID_PNG // Invalid png screenshot (using template one) + [RES] VALID_MISSING_RESOURCES // Missing resources listed in the code + [VCX] VALID_MISSING_VCXPROJ // Missing Visual Studio .vcxproj file + [SOL] VALID_NOT_IN_VCXSOL // Project not included in solution file + [MK] VALID_NOT_IN_MAKEFILE // Not listed in Makefile + [MKWEB] VALID_NOT_IN_MAKEFILE_WEB // Not listed in Makefile.Web + [RDME] VALID_NOT_IN_README // Not listed in README.md + [JS] VALID_NOT_IN_JS // Not listed in examples.js + [WOUT] VALID_MISSING_WEB_OUTPUT // Missing .html/.data/.wasm/.js + [INFO] VALID_INCONSISTENT_INFO // Inconsistent info between collection and example header (stars, author...) + [CAT] VALID_INVALID_CATEGORY // Not a recognized category + + [STATUS] [CATEGORY] [NAME] [C] [PNG] [WPNG] [RES] [VCX] [SOL] [MK] [MKWEB] [RDME] [JS] [WOUT] [INFO] [CAT] + ----------------------------------------------------------------------------------------------------------------------- + OK core basic_window ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ + MISSING shapes colorful_lines ✘ ✔ ✘ ✔ ✘ ✔ ✔ ✘ ✔ ✔ ✔ ✔ ✔ + ERROR text broken_shader ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✔ ✘ ✔ ✔ ✔ + */ + } + + UnloadExamplesData(exCollection); + //------------------------------------------------------------------------------------------------ + + if (opCode == OP_UPDATE) + { + // Actions to be performed to fix/review anything possible + //------------------------------------------------------------------------------------------------ + + // TODO: Process validation results and take actions to + // correct everything possible to make collection consistent + + // Review: Add/Remove: raylib/projects/VS2022/examples/_example_name.vcxproj + // Review: Add/remove: raylib/projects/VS2022/raylib.sln + + // Update files: Makefile, Makefile.Web, README.md, examples.js + UpdateRequiredFiles(); + + // Review examples + // Review: Add/Remove: raylib.com/examples//_example_name.html + // Review: Add/Remove: raylib.com/examples//_example_name.data + // Review: Add/Remove: raylib.com/examples//_example_name.wasm + // Review: Add/Remove: raylib.com/examples//_example_name.js + //------------------------------------------------------------------------------------------------ + } } break; default: // Help @@ -1156,6 +1290,21 @@ static void UnloadExamplesData(rlExampleInfo *exInfo) RL_FREE(exInfo); } +// Find text in existing file +static int FileTextFind(const char *fileName, const char *find) +{ + int result = -1; + + if (FileExists(fileName)) + { + char *fileText = LoadFileText(fileName); + result = TextFindIndex(fileText, find); + UnloadFileText(fileText); + } + + return result; +} + // Replace text in an existing file static int FileTextReplace(const char *fileName, const char *textLookUp, const char *textReplace) { @@ -1264,6 +1413,84 @@ static void UnloadTextLines(char **lines) RL_FREE(lines); } +// Get example info from file header +rlExampleInfo *GetExampleInfo(const char *exFileName) +{ + rlExampleInfo *exInfo = (rlExampleInfo *)RL_CALLOC(1, sizeof(rlExampleInfo)); + + if (IsFileExtension(exFileName, ".c")) + { + strcpy(exInfo->name, GetFileNameWithoutExt(exFileName)); + strncpy(exInfo->category, exInfo->name, TextFindIndex(exInfo->name, "_")); + + char *exText = LoadFileText(exFileName); + + // Get example difficulty stars + // NOTE: Counting the unicode char occurrences: ⭐️ + int starsIndex = TextFindIndex(exText, "★"); + if (starsIndex > 0) + { + const char *starPtr = exText + starsIndex; + while (*starPtr) + { + if (((unsigned char)starPtr[0] == 0xe2) && + ((unsigned char)starPtr[1] == 0xad) && + ((unsigned char)starPtr[2] == 0x90)) + { + exInfo->stars++; + starPtr += 3; // Advance past multibyte character + } + else starPtr++; + } + } + + // Get example create with raylib version + char verCreateText[4] = { 0 }; + int verCreateIndex = TextFindIndex(exText, "created with raylib "); // Version = index + 20 + if (verCreateIndex > 0) strncpy(verCreateText, exText + verCreateIndex + 20, 3); + else strncpy(verCreateText, RAYLIB_VERSION, 3); // Only pick MAJOR.MINOR + exInfo->verCreated = TextToFloat(verCreateText); + + // Get example update with raylib version + char verUpdateText[4] = { 0 }; + int verUpdateIndex = TextFindIndex(exText, "updated with raylib "); // Version = index + 20 + if (verUpdateIndex > 0) strncpy(verUpdateText, exText + verUpdateIndex + 20, 3); + else strncpy(verUpdateText, RAYLIB_VERSION, 3); // Only pick MAJOR.MINOR + exInfo->verUpdated = TextToFloat(verUpdateText); + + // Get example creator and github user + int authorIndex = TextFindIndex(exText, "Example contributed by "); // Author = index + 23 + int authorGitIndex = TextFindIndex(exText, "(@"); // Author GitHub user = index + 2 + if (authorIndex > 0) + { + int authorNameLen = 0; + if (authorGitIndex > 0) authorNameLen = (authorGitIndex - 1) - (authorIndex + 23); + else + { + int authorNameEndIndex = TextFindIndex(exText + authorIndex, " and reviewed by Ramon Santamaria"); + if (authorNameEndIndex == -1) authorNameEndIndex = TextFindIndex(exText + authorIndex, "\n"); + + authorNameLen = authorNameEndIndex - (authorIndex + 23); + } + strncpy(exInfo->author, exText + authorIndex + 23, authorNameLen); + } + else strcpy(exInfo->author, ""); + if (authorGitIndex > 0) + { + int authorGitEndIndex = TextFindIndex(exText + authorGitIndex, ")"); + if (authorGitEndIndex > 0) strncpy(exInfo->authorGitHub, exText + authorGitIndex + 2, authorGitEndIndex - (authorGitIndex + 2)); + } + else strcpy(exInfo->authorGitHub, ""); + + // TODO: Verify copyright line + // Copyright (c) - (@) + + UnloadFileText(exText); + } + + return exInfo; +} + // raylib example line info parser // Parses following line format: core;core_basic_window;⭐️☆☆☆;1.0;1.0;"Ray";@raysan5 static int ParseExampleInfoLine(const char *line, rlExampleInfo *entry) @@ -1283,17 +1510,17 @@ static int ParseExampleInfoLine(const char *line, rlExampleInfo *entry) // Parsing stars // NOTE: Counting the unicode char occurrences: ⭐️ - const char *ptr = tokens[2]; - while (*ptr) + const char *starPtr = tokens[2]; + while (*starPtr) { - if (((unsigned char)ptr[0] == 0xE2) && - ((unsigned char)ptr[1] == 0xAD) && - ((unsigned char)ptr[2] == 0x90)) + if (((unsigned char)starPtr[0] == 0xe2) && + ((unsigned char)starPtr[1] == 0xad) && + ((unsigned char)starPtr[2] == 0x90)) { entry->stars++; - ptr += 3; // Advance past multibyte character + starPtr += 3; // Advance past multibyte character } - else ptr++; + else starPtr++; } // Get raylib creation/update versions @@ -1352,7 +1579,7 @@ static char **ScanExampleResources(const char *filePath, int *resPathCount) char *end = strchr(start, '"'); if (!end) break; - int len = end - start; + int len = (int)(end - start); if ((len > 0) && (len < REXM_MAX_RESOURCE_PATH_LEN)) { char buffer[REXM_MAX_RESOURCE_PATH_LEN] = { 0 }; From 095319602c26cf5adfcfbae243c8a65692d43035 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 6 Aug 2025 13:09:56 +0200 Subject: [PATCH 145/328] REVIEWED: Compule for OpenGL 1.1 #5088 --- src/rlgl.h | 48 +++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/src/rlgl.h b/src/rlgl.h index 2adf1753d..e83cb55a7 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -1157,16 +1157,16 @@ static const char *rlGetCompressedFormatName(int format); // Get compressed form static int rlGetPixelDataSize(int width, int height, int format); // Get pixel data size in bytes (image or texture) +static Matrix rlMatrixIdentity(void); // Get identity matrix +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // Auxiliar matrix math functions -typedef struct rl_float16 { - float v[16]; -} rl_float16; +typedef struct rl_float16 { float v[16]; } rl_float16; static rl_float16 rlMatrixToFloatV(Matrix mat); // Get float array of matrix data #define rlMatrixToFloat(mat) (rlMatrixToFloatV(mat).v) // Get float vector for Matrix -static Matrix rlMatrixIdentity(void); // Get identity matrix static Matrix rlMatrixMultiply(Matrix left, Matrix right); // Multiply two matrices static Matrix rlMatrixTranspose(Matrix mat); // Transposes provided matrix static Matrix rlMatrixInvert(Matrix mat); // Invert provided matrix +#endif //---------------------------------------------------------------------------------- // Module Functions Definition - Matrix operations @@ -2571,9 +2571,9 @@ void rlLoadExtensions(void *loader) TRACELOG(RL_LOG_INFO, " > Version: %s", glGetString(GL_VERSION)); TRACELOG(RL_LOG_INFO, " > GLSL: %s", glGetString(GL_SHADING_LANGUAGE_VERSION)); - RLGL.loader = (rlglLoadProc)loader; - #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + RLGL.loader = (rlglLoadProc)loader; + // NOTE: Anisotropy levels capability is an extension #ifndef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF @@ -2632,8 +2632,13 @@ void rlLoadExtensions(void *loader) } // Get OpenGL procedure address -void *rlGetProcAddress(const char *procName) { - return RLGL.loader(procName); +void *rlGetProcAddress(const char *procName) +{ + void *func = NULL; +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + func = RLGL.loader(procName); +#endif + return func; } // Get current OpenGL version @@ -5140,7 +5145,20 @@ static int rlGetPixelDataSize(int width, int height, int format) } // Auxiliar math functions +//------------------------------------------------------------------------------- +// Get identity matrix +static Matrix rlMatrixIdentity(void) +{ + Matrix result = { + 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f + }; + return result; +} +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // Get float array of matrix data static rl_float16 rlMatrixToFloatV(Matrix mat) { @@ -5166,19 +5184,6 @@ static rl_float16 rlMatrixToFloatV(Matrix mat) return result; } -// Get identity matrix -static Matrix rlMatrixIdentity(void) -{ - Matrix result = { - 1.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 1.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 1.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 1.0f - }; - - return result; -} - // Get two matrix multiplication // NOTE: When multiplying matrices... the order matters! static Matrix rlMatrixMultiply(Matrix left, Matrix right) @@ -5276,5 +5281,6 @@ static Matrix rlMatrixInvert(Matrix mat) return result; } +#endif #endif // RLGL_IMPLEMENTATION From c3cad65d307e66307e118814ce695215967d1b12 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 6 Aug 2025 14:02:51 +0200 Subject: [PATCH 146/328] Update examples_list.txt --- examples/examples_list.txt | 174 ++++++++++++++++++------------------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/examples/examples_list.txt b/examples/examples_list.txt index f25097a56..964bae667 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -7,130 +7,130 @@ # # WARNING: List is not ordered by example name but by the display order on web # -core;core_basic_window;⭐️☆☆☆;1.0;1.0;"Ray";@raysan5 -core;core_input_keys;⭐️☆☆☆;1.0;1.0;"Ray";@raysan5 -core;core_input_mouse;⭐️☆☆☆;1.0;5.5;"Ray";@raysan5 -core;core_input_mouse_wheel;⭐️☆☆☆;1.1;1.3;"Ray";@raysan5 -core;core_input_gamepad;⭐️☆☆☆;1.1;4.2;"Ray";@raysan5 +core;core_basic_window;⭐️☆☆☆;1.0;1.0;"Ramon Santamaria";@raysan5 +core;core_input_keys;⭐️☆☆☆;1.0;1.0;"Ramon Santamaria";@raysan5 +core;core_input_mouse;⭐️☆☆☆;1.0;5.5;"Ramon Santamaria";@raysan5 +core;core_input_mouse_wheel;⭐️☆☆☆;1.1;1.3;"Ramon Santamaria";@raysan5 +core;core_input_gamepad;⭐️☆☆☆;1.1;4.2;"Ramon Santamaria";@raysan5 core;core_input_multitouch;⭐️☆☆☆;2.1;2.5;"Berni";@Berni8k -core;core_input_gestures;⭐️⭐️☆☆;1.4;4.2;"Ray";@raysan5 +core;core_input_gestures;⭐️⭐️☆☆;1.4;4.2;"Ramon Santamaria";@raysan5 core;core_input_virtual_controls;⭐️⭐️☆☆;5.0;5.0;"oblerion";@oblerion -core;core_2d_camera;⭐️⭐️☆☆;1.5;3.0;"Ray";@raysan5 +core;core_2d_camera;⭐️⭐️☆☆;1.5;3.0;"Ramon Santamaria";@raysan5 core;core_2d_camera_mouse_zoom;⭐️⭐️☆☆;4.2;4.2;"Jeffery Myers";@JeffM2501 core;core_2d_camera_platformer;⭐️⭐️⭐️☆;2.5;3.0;"arvyy";@arvyy core;core_2d_camera_split_screen;⭐️⭐️⭐️⭐️;4.5;4.5;"Gabriel dos Santos Sanches";@gabrielssanches -core;core_3d_camera_mode;⭐️☆☆☆;1.0;1.0;"Ray";@raysan5 -core;core_3d_camera_free;⭐️☆☆☆;1.3;1.3;"Ray";@raysan5 -core;core_3d_camera_first_person;⭐️⭐️☆☆;1.3;1.3;"Ray";@raysan5 +core;core_3d_camera_mode;⭐️☆☆☆;1.0;1.0;"Ramon Santamaria";@raysan5 +core;core_3d_camera_free;⭐️☆☆☆;1.3;1.3;"Ramon Santamaria";@raysan5 +core;core_3d_camera_first_person;⭐️⭐️☆☆;1.3;1.3;"Ramon Santamaria";@raysan5 core;core_3d_camera_split_screen;⭐️⭐️⭐️☆;3.7;4.0;"Jeffery Myers";@JeffM2501 -core;core_3d_picking;⭐️⭐️☆☆;1.3;4.0;"Ray";@raysan5 -core;core_world_screen;⭐️⭐️☆☆;1.3;1.4;"Ray";@raysan5 +core;core_3d_picking;⭐️⭐️☆☆;1.3;4.0;"Ramon Santamaria";@raysan5 +core;core_world_screen;⭐️⭐️☆☆;1.3;1.4;"Ramon Santamaria";@raysan5 core;core_custom_logging;⭐️⭐️⭐️☆;2.5;2.5;"Pablo Marcos Oltra";@pamarcos -core;core_window_flags;⭐️⭐️⭐️☆;3.5;3.5;"Ray";@raysan5 +core;core_window_flags;⭐️⭐️⭐️☆;3.5;3.5;"Ramon Santamaria";@raysan5 core;core_window_letterbox;⭐️⭐️☆☆;2.5;4.0;"Anata";@anatagawa -core;core_window_should_close;⭐️☆☆☆;4.2;4.2;"Ray";@raysan5 -core;core_drop_files;⭐️⭐️☆☆;1.3;4.2;"Ray";@raysan5 -core;core_random_values;⭐️☆☆☆;1.1;1.1;"Ray";@raysan5 -core;core_storage_values;⭐️⭐️☆☆;1.4;4.2;"Ray";@raysan5 -core;core_vr_simulator;⭐️⭐️⭐️☆;2.5;4.0;"Ray";@raysan5 -core;core_loading_thread;⭐️⭐️⭐️☆;2.5;3.0;"Ray";@raysan5 +core;core_window_should_close;⭐️☆☆☆;4.2;4.2;"Ramon Santamaria";@raysan5 +core;core_drop_files;⭐️⭐️☆☆;1.3;4.2;"Ramon Santamaria";@raysan5 +core;core_random_values;⭐️☆☆☆;1.1;1.1;"Ramon Santamaria";@raysan5 +core;core_storage_values;⭐️⭐️☆☆;1.4;4.2;"Ramon Santamaria";@raysan5 +core;core_vr_simulator;⭐️⭐️⭐️☆;2.5;4.0;"Ramon Santamaria";@raysan5 +core;core_loading_thread;⭐️⭐️⭐️☆;2.5;3.0;"Ramon Santamaria";@raysan5 core;core_scissor_test;⭐️☆☆☆;2.5;3.0;"Chris Dill";@MysteriousSpace -core;core_basic_screen_manager;⭐️☆☆☆;4.0;4.0;"Ray";@raysan5 -core;core_custom_frame_control;⭐️⭐️⭐️⭐️;4.0;4.0;"Ray";@raysan5 +core;core_basic_screen_manager;⭐️☆☆☆;4.0;4.0;"Ramon Santamaria";@raysan5 +core;core_custom_frame_control;⭐️⭐️⭐️⭐️;4.0;4.0;"Ramon Santamaria";@raysan5 core;core_smooth_pixelperfect;⭐️⭐️⭐️☆;3.7;4.0;"Giancamillo Alessandroni";@NotManyIdeasDev core;core_random_sequence;⭐️☆☆☆;5.0;5.0;"Dalton Overmyer";@REDl3east -core;core_basic_window_web;⭐️☆☆☆;1.3;1.3;"Ray";@raysan5 +core;core_basic_window_web;⭐️☆☆☆;1.3;1.3;"Ramon Santamaria";@raysan5 core;core_input_gestures_web;⭐️⭐️☆☆;4.6-dev;4.6-dev;"ubkp";@ubkp -core;core_automation_events;⭐️⭐️⭐️☆;5.0;5.0;"Ray";@raysan5 +core;core_automation_events;⭐️⭐️⭐️☆;5.0;5.0;"Ramon Santamaria";@raysan5 core;core_high_dpi;⭐️☆☆☆;5.0;5.0;"Jonathan Marler";@marler8997 -shapes;shapes_basic_shapes;⭐️☆☆☆;1.0;4.2;"Ray";@raysan5 -shapes;shapes_bouncing_ball;⭐️☆☆☆;2.5;2.5;"Ray";@raysan5 -shapes;shapes_colors_palette;⭐️⭐️☆☆;1.0;2.5;"Ray";@raysan5 -shapes;shapes_logo_raylib;⭐️☆☆☆;1.0;1.0;"Ray";@raysan5 -shapes;shapes_logo_raylib_anim;⭐️⭐️☆☆;2.5;4.0;"Ray";@raysan5 +shapes;shapes_basic_shapes;⭐️☆☆☆;1.0;4.2;"Ramon Santamaria";@raysan5 +shapes;shapes_bouncing_ball;⭐️☆☆☆;2.5;2.5;"Ramon Santamaria";@raysan5 +shapes;shapes_colors_palette;⭐️⭐️☆☆;1.0;2.5;"Ramon Santamaria";@raysan5 +shapes;shapes_logo_raylib;⭐️☆☆☆;1.0;1.0;"Ramon Santamaria";@raysan5 +shapes;shapes_logo_raylib_anim;⭐️⭐️☆☆;2.5;4.0;"Ramon Santamaria";@raysan5 shapes;shapes_rectangle_scaling;⭐️⭐️☆☆;2.5;2.5;"Vlad Adrian";@demizdor -shapes;shapes_lines_bezier;⭐️☆☆☆;1.7;1.7;"Ray";@raysan5 -shapes;shapes_collision_area;⭐️⭐️☆☆;2.5;2.5;"Ray";@raysan5 -shapes;shapes_following_eyes;⭐️⭐️☆☆;2.5;2.5;"Ray";@raysan5 -shapes;shapes_easings_ball_anim;⭐️⭐️☆☆;2.5;2.5;"Ray";@raysan5 -shapes;shapes_easings_box_anim;⭐️⭐️☆☆;2.5;2.5;"Ray";@raysan5 -shapes;shapes_easings_rectangle_array;⭐️⭐️⭐️☆;2.0;2.5;"Ray";@raysan5 +shapes;shapes_lines_bezier;⭐️☆☆☆;1.7;1.7;"Ramon Santamaria";@raysan5 +shapes;shapes_collision_area;⭐️⭐️☆☆;2.5;2.5;"Ramon Santamaria";@raysan5 +shapes;shapes_following_eyes;⭐️⭐️☆☆;2.5;2.5;"Ramon Santamaria";@raysan5 +shapes;shapes_easings_ball_anim;⭐️⭐️☆☆;2.5;2.5;"Ramon Santamaria";@raysan5 +shapes;shapes_easings_box_anim;⭐️⭐️☆☆;2.5;2.5;"Ramon Santamaria";@raysan5 +shapes;shapes_easings_rectangle_array;⭐️⭐️⭐️☆;2.0;2.5;"Ramon Santamaria";@raysan5 shapes;shapes_draw_ring;⭐️⭐️⭐️☆;2.5;2.5;"Vlad Adrian";@demizdor shapes;shapes_draw_circle_sector;⭐️⭐️⭐️☆;2.5;2.5;"Vlad Adrian";@demizdor shapes;shapes_draw_rectangle_rounded;⭐️⭐️⭐️☆;2.5;2.5;"Vlad Adrian";@demizdor shapes;shapes_top_down_lights;⭐️⭐️⭐️⭐️;4.2;4.2;"Jeffery Myers";@JeffM2501 shapes;shapes_rectangle_advanced;⭐️⭐️⭐️⭐️;5.5;5.5;"Everton Jr.";@evertonse -shapes;shapes_splines_drawing;⭐️⭐️⭐️☆;5.0;5.0;"Ray";@raysan5 +shapes;shapes_splines_drawing;⭐️⭐️⭐️☆;5.0;5.0;"Ramon Santamaria";@raysan5 shapes;shapes_digital_clock;⭐️⭐️☆☆;5.5;5.5;"Hamza RAHAL";@rhmz-rhl shapes;shapes_double_pendulum;⭐️⭐️☆☆;5.5;5.5;"JoeCheong";@Joecheong2006 -textures;textures_logo_raylib;⭐️☆☆☆;1.0;1.0;"Ray";@raysan5 -textures;textures_srcrec_dstrec;⭐️⭐️⭐️☆;1.3;1.3;"Ray";@raysan5 -textures;textures_image_drawing;⭐️⭐️☆☆;1.4;1.4;"Ray";@raysan5 +textures;textures_logo_raylib;⭐️☆☆☆;1.0;1.0;"Ramon Santamaria";@raysan5 +textures;textures_srcrec_dstrec;⭐️⭐️⭐️☆;1.3;1.3;"Ramon Santamaria";@raysan5 +textures;textures_image_drawing;⭐️⭐️☆☆;1.4;1.4;"Ramon Santamaria";@raysan5 textures;textures_image_generation;⭐️⭐️☆☆;1.8;1.8;"Wilhem Barbier";@nounoursheureux -textures;textures_image_loading;⭐️☆☆☆;1.3;1.3;"Ray";@raysan5 -textures;textures_image_processing;⭐️⭐️⭐️☆;1.4;3.5;"Ray";@raysan5 -textures;textures_image_text;⭐️⭐️☆☆;1.8;4.0;"Ray";@raysan5 -textures;textures_to_image;⭐️☆☆☆;1.3;4.0;"Ray";@raysan5 -textures;textures_raw_data;⭐️⭐️⭐️☆;1.3;3.5;"Ray";@raysan5 -textures;textures_particles_blending;⭐️☆☆☆;1.7;3.5;"Ray";@raysan5 +textures;textures_image_loading;⭐️☆☆☆;1.3;1.3;"Ramon Santamaria";@raysan5 +textures;textures_image_processing;⭐️⭐️⭐️☆;1.4;3.5;"Ramon Santamaria";@raysan5 +textures;textures_image_text;⭐️⭐️☆☆;1.8;4.0;"Ramon Santamaria";@raysan5 +textures;textures_to_image;⭐️☆☆☆;1.3;4.0;"Ramon Santamaria";@raysan5 +textures;textures_raw_data;⭐️⭐️⭐️☆;1.3;3.5;"Ramon Santamaria";@raysan5 +textures;textures_particles_blending;⭐️☆☆☆;1.7;3.5;"Ramon Santamaria";@raysan5 textures;textures_npatch_drawing;⭐️⭐️⭐️☆;2.0;2.5;"Jorge A. Gomes";@overdev -textures;textures_background_scrolling;⭐️☆☆☆;2.0;2.5;"Ray";@raysan5 -textures;textures_sprite_anim;⭐️⭐️☆☆;1.3;1.3;"Ray";@raysan5 -textures;textures_sprite_button;⭐️⭐️☆☆;2.5;2.5;"Ray";@raysan5 -textures;textures_sprite_explosion;⭐️⭐️☆☆;2.5;3.5;"Ray";@raysan5 -textures;textures_bunnymark;⭐️⭐️⭐️☆;1.6;2.5;"Ray";@raysan5 +textures;textures_background_scrolling;⭐️☆☆☆;2.0;2.5;"Ramon Santamaria";@raysan5 +textures;textures_sprite_anim;⭐️⭐️☆☆;1.3;1.3;"Ramon Santamaria";@raysan5 +textures;textures_sprite_button;⭐️⭐️☆☆;2.5;2.5;"Ramon Santamaria";@raysan5 +textures;textures_sprite_explosion;⭐️⭐️☆☆;2.5;3.5;"Ramon Santamaria";@raysan5 +textures;textures_bunnymark;⭐️⭐️⭐️☆;1.6;2.5;"Ramon Santamaria";@raysan5 textures;textures_mouse_painting;⭐️⭐️⭐️☆;3.0;3.0;"Chris Dill";@MysteriousSpace textures;textures_blend_modes;⭐️☆☆☆;3.5;3.5;"Karlo Licudine";@accidentalrebel textures;textures_draw_tiled;⭐️⭐️⭐️☆;3.0;4.2;"Vlad Adrian";@demizdor textures;textures_polygon;⭐️☆☆☆;3.7;3.7;"Chris Camacho";@chriscamacho -textures;textures_fog_of_war;⭐️⭐️⭐️☆;4.2;4.2;"Ray";@raysan5 -textures;textures_gif_player;⭐️⭐️⭐️☆;4.2;4.2;"Ray";@raysan5 +textures;textures_fog_of_war;⭐️⭐️⭐️☆;4.2;4.2;"Ramon Santamaria";@raysan5 +textures;textures_gif_player;⭐️⭐️⭐️☆;4.2;4.2;"Ramon Santamaria";@raysan5 textures;textures_image_kernel;⭐️⭐️⭐️⭐️;1.3;1.3;"Karim Salem";@kimo-s textures;textures_image_channel;⭐️⭐️☆☆;5.1-dev;5.1-dev;"Bruno Cabral";@brccabral -textures;textures_image_rotate;⭐️⭐️☆☆;1.0;1.0;"Ray";@raysan5 +textures;textures_image_rotate;⭐️⭐️☆☆;1.0;1.0;"Ramon Santamaria";@raysan5 textures;textures_textured_curve;⭐️⭐️⭐️☆;4.5;4.5;"Jeffery Myers";@JeffM2501 -text;text_raylib_fonts;⭐️☆☆☆;1.7;3.7;"Ray";@raysan5 -text;text_font_spritefont;⭐️☆☆☆;1.0;1.0;"Ray";@raysan5 -text;text_font_filters;⭐️⭐️☆☆;1.3;4.2;"Ray";@raysan5 -text;text_font_loading;⭐️☆☆☆;1.4;3.0;"Ray";@raysan5 -text;text_font_sdf;⭐️⭐️⭐️☆;1.3;4.0;"Ray";@raysan5 -text;text_format_text;⭐️☆☆☆;1.1;3.0;"Ray";@raysan5 -text;text_input_box;⭐️⭐️☆☆;1.7;3.5;"Ray";@raysan5 -text;text_writing_anim;⭐️⭐️☆☆;1.4;1.4;"Ray";@raysan5 +text;text_raylib_fonts;⭐️☆☆☆;1.7;3.7;"Ramon Santamaria";@raysan5 +text;text_font_spritefont;⭐️☆☆☆;1.0;1.0;"Ramon Santamaria";@raysan5 +text;text_font_filters;⭐️⭐️☆☆;1.3;4.2;"Ramon Santamaria";@raysan5 +text;text_font_loading;⭐️☆☆☆;1.4;3.0;"Ramon Santamaria";@raysan5 +text;text_font_sdf;⭐️⭐️⭐️☆;1.3;4.0;"Ramon Santamaria";@raysan5 +text;text_format_text;⭐️☆☆☆;1.1;3.0;"Ramon Santamaria";@raysan5 +text;text_input_box;⭐️⭐️☆☆;1.7;3.5;"Ramon Santamaria";@raysan5 +text;text_writing_anim;⭐️⭐️☆☆;1.4;1.4;"Ramon Santamaria";@raysan5 text;text_rectangle_bounds;⭐️⭐️⭐️⭐️;2.5;4.0;"Vlad Adrian";@demizdor text;text_unicode;⭐️⭐️⭐️⭐️;2.5;4.0;"Vlad Adrian";@demizdor text;text_draw_3d;⭐️⭐️⭐️⭐️;3.5;4.0;"Vlad Adrian";@demizdor -text;text_codepoints_loading;⭐️⭐️⭐️☆;4.2;4.2;"Ray";@raysan5 +text;text_codepoints_loading;⭐️⭐️⭐️☆;4.2;4.2;"Ramon Santamaria";@raysan5 models;models_animation;⭐️⭐️☆☆;2.5;3.5;"Culacant";@culacant -models;models_billboard;⭐️⭐️⭐️☆;1.3;3.5;"Ray";@raysan5 -models;models_box_collisions;⭐️☆☆☆;1.3;3.5;"Ray";@raysan5 -models;models_cubicmap;⭐️⭐️☆☆;1.8;3.5;"Ray";@raysan5 -models;models_first_person_maze;⭐️⭐️☆☆;2.5;3.5;"Ray";@raysan5 -models;models_geometric_shapes;⭐️☆☆☆;1.0;3.5;"Ray";@raysan5 -models;models_mesh_generation;⭐️⭐️☆☆;1.8;4.0;"Ray";@raysan5 +models;models_billboard;⭐️⭐️⭐️☆;1.3;3.5;"Ramon Santamaria";@raysan5 +models;models_box_collisions;⭐️☆☆☆;1.3;3.5;"Ramon Santamaria";@raysan5 +models;models_cubicmap;⭐️⭐️☆☆;1.8;3.5;"Ramon Santamaria";@raysan5 +models;models_first_person_maze;⭐️⭐️☆☆;2.5;3.5;"Ramon Santamaria";@raysan5 +models;models_geometric_shapes;⭐️☆☆☆;1.0;3.5;"Ramon Santamaria";@raysan5 +models;models_mesh_generation;⭐️⭐️☆☆;1.8;4.0;"Ramon Santamaria";@raysan5 models;models_mesh_picking;⭐️⭐️⭐️☆;1.7;4.0;"Joel Davis";@joeld42 -models;models_loading;⭐️☆☆☆;2.0;4.2;"Ray";@raysan5 -models;models_loading_gltf;⭐️☆☆☆;3.7;4.2;"Ray";@raysan5 +models;models_loading;⭐️☆☆☆;2.0;4.2;"Ramon Santamaria";@raysan5 +models;models_loading_gltf;⭐️☆☆☆;3.7;4.2;"Ramon Santamaria";@raysan5 models;models_loading_vox;⭐️☆☆☆;4.0;4.0;"Johann Nadalutti";@procfxgen models;models_loading_m3d;⭐️⭐️☆☆;4.5;4.5;"bzt";@model3d models;models_orthographic_projection;⭐️☆☆☆;2.0;3.7;"Max Danielsson";@autious models;models_point_rendering;⭐️⭐️⭐️☆;5.0;5.0;"Reese Gallagher";@satchelfrost -models;models_rlgl_solar_system;⭐️⭐️⭐️⭐️;2.5;4.0;"Ray";@raysan5 +models;models_rlgl_solar_system;⭐️⭐️⭐️⭐️;2.5;4.0;"Ramon Santamaria";@raysan5 models;models_yaw_pitch_roll;⭐️⭐️☆☆;1.8;4.0;"Berni";@Berni8k models;models_waving_cubes;⭐️⭐️⭐️☆;2.5;3.7;"Codecat";@codecat -models;models_heightmap;⭐️☆☆☆;1.8;3.5;"Ray";@raysan5 -models;models_skybox;⭐️⭐️☆☆;1.8;4.0;"Ray";@raysan5 -models;models_draw_cube_texture;⭐️⭐️☆☆;4.5;4.5;"Ray";@raysan5 +models;models_heightmap;⭐️☆☆☆;1.8;3.5;"Ramon Santamaria";@raysan5 +models;models_skybox;⭐️⭐️☆☆;1.8;4.0;"Ramon Santamaria";@raysan5 +models;models_draw_cube_texture;⭐️⭐️☆☆;4.5;4.5;"Ramon Santamaria";@raysan5 models;models_gpu_skinning;⭐️⭐️⭐️☆;4.5;4.5;"Daniel Holden";@orangeduck models;models_bone_socket;⭐️⭐️⭐️⭐️;4.5;4.5;"iP";@ipzaur models;models_tesseract_view;⭐️⭐️☆☆;5.6-dev;5.6-dev;"Timothy van der Valk";@arceryz shaders;shaders_basic_lighting;⭐️⭐️⭐️⭐️;3.0;4.2;"Chris Camacho";@chriscamacho -shaders;shaders_model_shader;⭐️⭐️☆☆;1.3;3.7;"Ray";@raysan5 -shaders;shaders_shapes_textures;⭐️⭐️☆☆;1.7;3.7;"Ray";@raysan5 -shaders;shaders_custom_uniform;⭐️⭐️☆☆;1.3;4.0;"Ray";@raysan5 -shaders;shaders_postprocessing;⭐️⭐️⭐️☆;1.3;4.0;"Ray";@raysan5 +shaders;shaders_model_shader;⭐️⭐️☆☆;1.3;3.7;"Ramon Santamaria";@raysan5 +shaders;shaders_shapes_textures;⭐️⭐️☆☆;1.7;3.7;"Ramon Santamaria";@raysan5 +shaders;shaders_custom_uniform;⭐️⭐️☆☆;1.3;4.0;"Ramon Santamaria";@raysan5 +shaders;shaders_postprocessing;⭐️⭐️⭐️☆;1.3;4.0;"Ramon Santamaria";@raysan5 shaders;shaders_palette_switch;⭐️⭐️⭐️☆;2.5;3.7;"Marco Lizza";@MarcoLizza -shaders;shaders_raymarching;⭐️⭐️⭐️⭐️;2.0;4.2;"Ray";@raysan5 +shaders;shaders_raymarching;⭐️⭐️⭐️⭐️;2.0;4.2;"Ramon Santamaria";@raysan5 shaders;shaders_texture_drawing;⭐️⭐️☆☆;2.0;3.7;"Michał Ciesielski";@ciessielski shaders;shaders_texture_outline;⭐️⭐️⭐️☆;4.0;4.0;"Samuel Skiff";@GoldenThumbs shaders;shaders_texture_waves;⭐️⭐️☆☆;2.5;3.7;"Anata";@anatagawa @@ -138,9 +138,9 @@ shaders;shaders_julia_set;⭐️⭐️⭐️☆;2.5;4.0;"Josh Colclough";@joshco shaders;shaders_eratosthenes;⭐️⭐️⭐️☆;2.5;4.0;"ProfJski";@ProfJski shaders;shaders_fog;⭐️⭐️⭐️☆;2.5;3.7;"Chris Camacho";@chriscamacho shaders;shaders_simple_mask;⭐️⭐️☆☆;2.5;3.7;"Chris Camacho";@chriscamacho -shaders;shaders_hot_reloading;⭐️⭐️⭐️☆;3.0;3.5;"Ray";@raysan5 +shaders;shaders_hot_reloading;⭐️⭐️⭐️☆;3.0;3.5;"Ramon Santamaria";@raysan5 shaders;shaders_mesh_instancing;⭐️⭐️⭐️⭐️;3.7;4.2;"seanpringle";@seanpringle -shaders;shaders_multi_sample2d;⭐️⭐️☆☆;3.5;3.5;"Ray";@raysan5 +shaders;shaders_multi_sample2d;⭐️⭐️☆☆;3.5;3.5;"Ramon Santamaria";@raysan5 shaders;shaders_spotlight;⭐️⭐️☆☆;2.5;3.7;"Chris Camacho";@chriscamacho shaders;shaders_deferred_render;⭐️⭐️⭐️⭐️;4.5;4.5;"Justin Andreas Lacoste";@27justin shaders;shaders_hybrid_render;⭐️⭐️⭐️⭐️;4.2;4.2;"Buğra Alptekin Sarı";@BugraAlptekinSari @@ -152,17 +152,17 @@ shaders;shaders_basic_pbr;⭐️⭐️⭐️⭐️;5.0;5.1-dev;"Afan OLOVCIC";@_ shaders;shaders_lightmap;⭐️⭐️⭐️☆;4.5;4.5;"Jussi Viitala";@nullstare shaders;shaders_rounded_rectangle;⭐️⭐️⭐️☆;5.5;5.5;"Anstro Pleuton";@anstropleuton shaders;shaders_view_depth;⭐️⭐️⭐️☆;5.6-dev;5.6-dev;"Luís Almeida";@luis605 -audio;audio_module_playing;⭐️☆☆☆;1.5;3.5;"Ray";@raysan5 -audio;audio_music_stream;⭐️☆☆☆;1.3;4.2;"Ray";@raysan5 -audio;audio_raw_stream;⭐️⭐️⭐️☆;1.6;4.2;"Ray";@raysan5 -audio;audio_sound_loading;⭐️☆☆☆;1.1;3.5;"Ray";@raysan5 +audio;audio_module_playing;⭐️☆☆☆;1.5;3.5;"Ramon Santamaria";@raysan5 +audio;audio_music_stream;⭐️☆☆☆;1.3;4.2;"Ramon Santamaria";@raysan5 +audio;audio_raw_stream;⭐️⭐️⭐️☆;1.6;4.2;"Ramon Santamaria";@raysan5 +audio;audio_sound_loading;⭐️☆☆☆;1.1;3.5;"Ramon Santamaria";@raysan5 audio;audio_mixed_processor;⭐️⭐️⭐️⭐️;4.2;4.2;"hkc";@hatkidchan -audio;audio_stream_effects;⭐️⭐️⭐️⭐️;4.2;5.0;"Ray";@raysan5 +audio;audio_stream_effects;⭐️⭐️⭐️⭐️;4.2;5.0;"Ramon Santamaria";@raysan5 audio;audio_sound_multi;⭐️⭐️☆☆;4.6;4.6;"Jeffery Myers";@JeffM2501 audio;audio_sound_positioning;⭐️⭐️☆☆;5.5;5.5;"Le Juez Victor";@Bigfoot71 -others;rlgl_standalone;⭐️⭐️⭐️⭐️;1.6;4.0;"Ray";@raysan5 +others;rlgl_standalone;⭐️⭐️⭐️⭐️;1.6;4.0;"Ramon Santamaria";@raysan5 others;rlgl_compute_shader;⭐️⭐️⭐️⭐️;4.0;4.0;"Teddy Astie";@tsnake41 others;easings_testbed;⭐️⭐️⭐️☆;2.5;3.0;"Juan Miguel López";@flashback-fx others;raylib_opengl_interop;⭐️⭐️⭐️⭐️;3.8;4.0;"Stephan Soller";@arkanis others;embedded_files_loading;⭐️⭐️☆☆;3.0;3.5;"Kristian Holmgren";@defutura -others;raymath_vector_angle;⭐️⭐️☆☆;1.0;4.6;"Ray";@raysan5 +others;raymath_vector_angle;⭐️⭐️☆☆;1.0;4.6;"Ramon Santamaria";@raysan5 From c95fd5a8034203c30f4371cd1873dc0a8e9d020e Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 6 Aug 2025 14:03:32 +0200 Subject: [PATCH 147/328] REXM: Support paths customization with environment variables --- tools/rexm/rexm.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index d5f7f02ca..fc6f646d3 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -116,14 +116,11 @@ static const char *exCategories[REXM_MAX_EXAMPLE_CATEGORIES] = { "core", "shapes // Paths required for examples management // TODO: Avoid hardcoding path values... -static const char *exBasePath = "C:/GitHub/raylib/examples"; -static const char *exWebPath = "C:/GitHub/raylib.com/examples"; -static const char *exTemplateFilePath = "C:/GitHub/raylib/examples/examples_template.c"; -static const char *exTemplateScreenshot = "C:/GitHub/raylib/examples/examples_template.png"; -static const char *exCollectionFilePath = "C:/GitHub/raylib/examples/examples_list.txt"; - -//const char *exBasePath = getenv("REXM_EXAMPLES_PATH"); -//if (!exBasePath) exBasePath = "default/path"; +static const char *exBasePath = NULL; //"C:/GitHub/raylib/examples"; +static const char *exWebPath = NULL; //"C:/GitHub/raylib.com/examples"; +static const char *exTemplateFilePath = NULL; //"C:/GitHub/raylib/examples/examples_template.c"; +static const char *exTemplateScreenshot = NULL; //"C:/GitHub/raylib/examples/examples_template.png"; +static const char *exCollectionFilePath = NULL; //"C:/GitHub/raylib/examples/examples_list.txt"; //---------------------------------------------------------------------------------- // Module specific functions declaration @@ -172,6 +169,19 @@ static void ClearExampleResources(char **resPaths); //------------------------------------------------------------------------------------ int main(int argc, char *argv[]) { + // Path values can be configured with environment variables + exBasePath = getenv("REXM_EXAMPLES_BASE_PATH"); + exWebPath = getenv("REXM_EXAMPLES_WEB_PATH"); + exTemplateFilePath = getenv("REXM_EXAMPLES_TEMPLATE_FILE_PATH"); + exTemplateScreenshot = getenv("REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH"); + exCollectionFilePath = getenv("REXM_EXAMPLES_COLLECTION_FILE_PATH"); + + if (!exBasePath) exBasePath = "C:/GitHub/raylib/examples"; + if (!exWebPath) exWebPath = "C:/GitHub/raylib.com/examples"; + if (!exTemplateFilePath) exTemplateFilePath = "C:/GitHub/raylib/examples/examples_template.c"; + if (!exTemplateScreenshot) exTemplateScreenshot = "C:/GitHub/raylib/examples/examples_template.png"; + if (!exCollectionFilePath) exCollectionFilePath = "C:/GitHub/raylib/examples/examples_list.txt"; + char inFileName[1024] = { 0 }; // Example input filename (to be added) char exName[64] = { 0 }; // Example name, without extension: core_basic_window From 59546eb54ad950eb882627670c759a595d338acf Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 6 Aug 2025 14:04:30 +0200 Subject: [PATCH 148/328] REXM: Support examples data `validation` and **report generation** --- tools/rexm/rexm.c | 247 +++++++++++++++++++++++++++++----------------- 1 file changed, 154 insertions(+), 93 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index fc6f646d3..702948d4d 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -147,8 +147,9 @@ static void UnloadExamplesData(rlExampleInfo *exInfo); static char **LoadTextLines(const char *text, int *count); static void UnloadTextLines(char **text); -// Get example info from file header -static rlExampleInfo *GetExampleInfo(const char *exFileName); +// Load example info from file header +static rlExampleInfo *LoadExampleInfo(const char *exFileName); +static void UnloadExampleInfo(rlExampleInfo *exInfo); // raylib example line info parser // Parses following line format: core/core_basic_window;⭐️☆☆☆;1.0;1.0;"Ray"/@raysan5 @@ -441,7 +442,7 @@ int main(int argc, char *argv[]) // Get required example info from example file header (if provided) // NOTE: If no example info is provided (other than category/name), just using some default values - rlExampleInfo *exInfo = GetExampleInfo(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + rlExampleInfo *exInfo = LoadExampleInfo(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); // Get example difficulty stars char starsText[16] = { 0 }; @@ -470,7 +471,7 @@ int main(int argc, char *argv[]) memcpy(exCollectionListUpdated + categoryIndex + textWritenSize, exCollectionList + categoryIndex, strlen(exCollectionList) - categoryIndex); } - RL_FREE(exInfo); + UnloadExampleInfo(exInfo); SaveFileText(exCollectionFilePath, exCollectionListUpdated); RL_FREE(exCollectionListUpdated); @@ -721,7 +722,7 @@ int main(int argc, char *argv[]) // TODO: Validate: Duplicate entries in collection list? - // Get status information for all examples, using "status" field in the struct + // Set status information for all examples, using "status" field in the struct for (int i = 0; i < exCollectionCount; i++) { rlExampleInfo *exInfo = &exCollection[i]; @@ -736,7 +737,8 @@ int main(int argc, char *argv[]) // Validate: example screenshot is not the template default one Image imScreenshot = LoadImage(TextFormat("%s/%s/%s.png", exBasePath, exInfo->category, exInfo->name)); Image imTemplate = LoadImage(TextFormat("%s/examples_template.png", exBasePath)); - if (memcmp(imScreenshot.data, imTemplate.data, GetPixelDataSize(imScreenshot.width, imScreenshot.height, imScreenshot.format)) != 0) exInfo->status |= VALID_INVALID_PNG; + if (memcmp(imScreenshot.data, imTemplate.data, GetPixelDataSize(imScreenshot.width, imScreenshot.height, imScreenshot.format)) == 0) + exInfo->status |= VALID_INVALID_PNG; UnloadImage(imTemplate); UnloadImage(imScreenshot); @@ -747,13 +749,13 @@ int main(int argc, char *argv[]) if (FileTextFind(TextFormat("%s/Makefile.Web", exBasePath), exInfo->name) == -1) exInfo->status |= VALID_NOT_IN_MAKEFILE_WEB; // Validate: raylib/examples/README.md -> Example listed? - if (FileTextFind(TextFormat("%s/README.md", exBasePath), exInfo->name) == -1) exInfo->status |= VALID_NOT_IN_JS; + if (FileTextFind(TextFormat("%s/README.md", exBasePath), exInfo->name) == -1) exInfo->status |= VALID_NOT_IN_README; // Validate: raylib.com/common/examples.js -> Example listed? - if (FileTextFind(TextFormat("%s/common/examples.js", exWebPath), exInfo->name) == -1) exInfo->status |= VALID_NOT_IN_README; + if (FileTextFind(TextFormat("%s/../common/examples.js", exWebPath), exInfo->name + TextFindIndex(exInfo->name, "_") + 1) == -1) exInfo->status |= VALID_NOT_IN_JS; // Validate: raylib/projects/VS2022/examples/_example_name.vcxproj -> File exists? - if (!FileExists(TextFormat("%s/../projects/VS2022/examples/%s.png", exBasePath, exInfo->name))) exInfo->status |= VALID_MISSING_VCXPROJ; + if (!FileExists(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name))) exInfo->status |= VALID_MISSING_VCXPROJ; // Validate: raylib/projects/VS2022/raylib.sln -> Example listed? if (FileTextFind(TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath), exInfo->name) == -1) exInfo->status |= VALID_NOT_IN_VCXSOL; @@ -774,13 +776,22 @@ int main(int argc, char *argv[]) for (int v = 0; v < 3; v++) { char *resPathUpdated = TextReplace(resPaths[r], "glsl%i", TextFormat("glsl%i", glslVer[v])); - if (!FileExists(TextFormat("%s/%s/%s", exBasePath, exInfo->category, resPathUpdated))) exInfo->status |= VALID_MISSING_RESOURCES; + if (!FileExists(TextFormat("%s/%s/%s", exBasePath, exInfo->category, resPathUpdated))) + { + exInfo->status |= VALID_MISSING_RESOURCES; + // Logging missing resources for convenience + LOG("WARNING: [%s] Missing resource: %s\n", exInfo->name, resPathUpdated); + } RL_FREE(resPathUpdated); } } else { - if (!FileExists(TextFormat("%s/%s/%s", exBasePath, exInfo->category, resPaths[r]))) exInfo->status |= VALID_MISSING_RESOURCES; + if (!FileExists(TextFormat("%s/%s/%s", exBasePath, exInfo->category, resPaths[r]))) + { + exInfo->status |= VALID_MISSING_RESOURCES; + LOG("WARNING: [%s] Missing resource: %s\n", exInfo->name, resPaths[r]); + } } } } @@ -790,21 +801,22 @@ int main(int argc, char *argv[]) // Validate: raylib.com/examples//_example_name.data -> File exists? // Validate: raylib.com/examples//_example_name.wasm -> File exists? // Validate: raylib.com/examples//_example_name.js -> File exists? - if ((!FileExists(TextFormat("%s/examples/%s/%s.html", exWebPath, exInfo->category, exInfo->name))) || - ((exInfo->resCount > 0) && !FileExists(TextFormat("%s/examples/%s/%s.data", exWebPath, exInfo->category, exInfo->name))) || - (!FileExists(TextFormat("%s/examples/%s/%s.wasm", exWebPath, exInfo->category, exInfo->name))) || - (!FileExists(TextFormat("%s/examples/%s/%s.js", exWebPath, exInfo->category, exInfo->name)))) exInfo->status |= VALID_MISSING_WEB_OUTPUT; + if (!FileExists(TextFormat("%s/%s/%s.html", exWebPath, exInfo->category, exInfo->name)) || + !FileExists(TextFormat("%s/%s/%s.wasm", exWebPath, exInfo->category, exInfo->name)) || + !FileExists(TextFormat("%s/%s/%s.js", exWebPath, exInfo->category, exInfo->name)) || + ((exInfo->resCount > 0) && !FileExists(TextFormat("%s/%s/%s.data", exWebPath, exInfo->category, exInfo->name)))) + exInfo->status |= VALID_MISSING_WEB_OUTPUT; // NOTE: Additional validation elements // Validate: Example naming conventions: /_example_name, valid category if ((TextFindIndex(exInfo->name, exInfo->category) == -1) || - (!TextIsEqual(exInfo->category, "core") || !TextIsEqual(exInfo->category, "shapes") || - !TextIsEqual(exInfo->category, "textures") || !TextIsEqual(exInfo->category, "text") || - !TextIsEqual(exInfo->category, "models") || !TextIsEqual(exInfo->category, "shaders") || - !TextIsEqual(exInfo->category, "audio") || !TextIsEqual(exInfo->category, "others"))) exInfo->status |= VALID_INVALID_CATEGORY; + (!TextIsEqual(exInfo->category, "core") && !TextIsEqual(exInfo->category, "shapes") && + !TextIsEqual(exInfo->category, "textures") && !TextIsEqual(exInfo->category, "text") && + !TextIsEqual(exInfo->category, "models") && !TextIsEqual(exInfo->category, "shaders") && + !TextIsEqual(exInfo->category, "audio") && !TextIsEqual(exInfo->category, "others"))) exInfo->status |= VALID_INVALID_CATEGORY; // Validate: Example info (stars, author, github) missmatches with example header content - rlExampleInfo *exInfoHeader = GetExampleInfo(TextFormat("%s/%s/%s.c", exBasePath, exInfo->category, exInfo->name)); + rlExampleInfo *exInfoHeader = LoadExampleInfo(TextFormat("%s/%s/%s.c", exBasePath, exInfo->category, exInfo->name)); if ((strcmp(exInfo->name, exInfoHeader->name) != 0) || // NOTE: Get it from example, not file (strcmp(exInfo->category, exInfoHeader->category) != 0) || @@ -814,62 +826,103 @@ int main(int argc, char *argv[]) (exInfo->verCreated != exInfoHeader->verCreated) || (exInfo->verUpdated != exInfoHeader->verUpdated)) exInfo->status |= VALID_INCONSISTENT_INFO; - RL_FREE(exInfoHeader); + UnloadExampleInfo(exInfoHeader); + } - // TODO: Generate validation report/table with results (.md) - /* - //Status Description - //OK Everything found - //MISSING One or more files are missing, some can be solved automatically - //ERROR Serious inconsistencies + // Generate validation report/table with results (.md) + /* + Columns: + [C] VALID_MISSING_C // Missing .c source file + [PNG] VALID_MISSING_PNG // Missing screenshot .png + [WPNG] VALID_INVALID_PNG // Invalid png screenshot (using template one) + [RES] VALID_MISSING_RESOURCES // Missing resources listed in the code + [VCX] VALID_MISSING_VCXPROJ // Missing Visual Studio .vcxproj file + [SOL] VALID_NOT_IN_VCXSOL // Project not included in solution file + [MK] VALID_NOT_IN_MAKEFILE // Not listed in Makefile + [MKWEB] VALID_NOT_IN_MAKEFILE_WEB // Not listed in Makefile.Web + [RDME] VALID_NOT_IN_README // Not listed in README.md + [JS] VALID_NOT_IN_JS // Not listed in examples.js + [WOUT] VALID_MISSING_WEB_OUTPUT // Missing .html/.data/.wasm/.js + [INFO] VALID_INCONSISTENT_INFO // Inconsistent info between collection and example header (stars, author...) + [CAT] VALID_INVALID_CATEGORY // Not a recognized category - Columns: - [C] VALID_MISSING_C // Missing .c source file - [PNG] VALID_MISSING_PNG // Missing screenshot .png - [WPNG] VALID_INVALID_PNG // Invalid png screenshot (using template one) - [RES] VALID_MISSING_RESOURCES // Missing resources listed in the code - [VCX] VALID_MISSING_VCXPROJ // Missing Visual Studio .vcxproj file - [SOL] VALID_NOT_IN_VCXSOL // Project not included in solution file - [MK] VALID_NOT_IN_MAKEFILE // Not listed in Makefile - [MKWEB] VALID_NOT_IN_MAKEFILE_WEB // Not listed in Makefile.Web - [RDME] VALID_NOT_IN_README // Not listed in README.md - [JS] VALID_NOT_IN_JS // Not listed in examples.js - [WOUT] VALID_MISSING_WEB_OUTPUT // Missing .html/.data/.wasm/.js - [INFO] VALID_INCONSISTENT_INFO // Inconsistent info between collection and example header (stars, author...) - [CAT] VALID_INVALID_CATEGORY // Not a recognized category + | [EXAMPLE NAME] | [C] |[CAT]|[INFO]|[PNG]|[WPNG]|[RES]|[MK] |[MKWEB]|[VCX]|[SOL]|[RDME]|[JS] |[WOUT]| + |:-----------------------------|:---:|:---:|:----:|:---:|:----:|:---:|:---:|:-----:|:---:|:---:|:----:|:---:|:----:| + | core_basic_window | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | + | shapes_colors_palette | ✘ | ✔ | ✘ | ✔ | ✘ | ✔ | ✔ | ✘ | ✔ | ✔ | ✔ | ✔ | ✔ | + | text_format_text | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✔ | ✘ | ✔ | ✔ | ✔ | + */ - [STATUS] [CATEGORY] [NAME] [C] [PNG] [WPNG] [RES] [VCX] [SOL] [MK] [MKWEB] [RDME] [JS] [WOUT] [INFO] [CAT] - ----------------------------------------------------------------------------------------------------------------------- - OK core basic_window ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ - MISSING shapes colorful_lines ✘ ✔ ✘ ✔ ✘ ✔ ✔ ✘ ✔ ✔ ✔ ✔ ✔ - ERROR text broken_shader ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✔ ✘ ✔ ✔ ✔ - */ + char *report = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); + + int repIndex = 0; + repIndex += sprintf(report + repIndex, "# EXAMPLES COLLECTION REPORT\n\n"); + repIndex += sprintf(report + repIndex, "| **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]|\n"); + repIndex += sprintf(report + repIndex, "|:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:|\n"); + + for (int i = 0; i < exCollectionCount; i++) + { + repIndex += sprintf(report + repIndex, "| %-32s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s |\n", + exCollection[i].name, + (exCollection[i].status & VALID_MISSING_C)? "❌" : "✔", + (exCollection[i].status & VALID_INVALID_CATEGORY)? "❌" : "✔", + (exCollection[i].status & VALID_INCONSISTENT_INFO)? "❌" : "✔", + (exCollection[i].status & VALID_MISSING_PNG)? "❌" : "✔", + (exCollection[i].status & VALID_INVALID_PNG)? "❌" : "✔", + (exCollection[i].status & VALID_MISSING_RESOURCES)? "❌" : "✔", + (exCollection[i].status & VALID_NOT_IN_MAKEFILE)? "❌" : "✔", + (exCollection[i].status & VALID_NOT_IN_MAKEFILE_WEB)? "❌" : "✔", + (exCollection[i].status & VALID_MISSING_VCXPROJ)? "❌" : "✔", + (exCollection[i].status & VALID_NOT_IN_VCXSOL)? "❌" : "✔", + (exCollection[i].status & VALID_NOT_IN_README)? "❌" : "✔", + (exCollection[i].status & VALID_NOT_IN_JS)? "❌" : "✔", + (exCollection[i].status & VALID_MISSING_WEB_OUTPUT)? "❌" : "✔"); + } + + SaveFileText(TextFormat("%s/../tools/rexm/%s", exBasePath, "examples_report.md"), report); + RL_FREE(report); + + //UnloadExamplesData(exCollection); // Done at the end, it can be required for fixing + + if (opCode == OP_UPDATE) + { + // Actions to fix/review anything possible from validation results + //------------------------------------------------------------------------------------------------ + // Check examples "status" information + for (int i = 0; i < exCollectionCount; i++) + { + rlExampleInfo *exInfo = &exCollection[i]; + + if (exInfo->status & VALID_MISSING_C) LOG("WARNING: [%s] Missing code file\n", exInfo->name); + else + { + // NOTE: Some issues can not be automatically fixed, only logged + //if (exInfo->status & VALID_MISSING_PNG) LOG("WARNING: [%s] Missing screenshot file\n", exInfo->name); + //if (exInfo->status & VALID_INVALID_PNG) LOG("WARNING: [%s] Invalid screenshot file (using template)\n", exInfo->name); + //if (exInfo->status & VALID_MISSING_RESOURCES) LOG("WARNING: [%s] Missing resources detected\n", exInfo->name); + //if (exInfo->status & VALID_INCONSISTENT_INFO) LOG("WARNING: [%s] Inconsistent example header info\n", exInfo->name); + //if (exInfo->status & VALID_INVALID_CATEGORY) LOG("WARNING: [%s] Invalid example category\n", exInfo->name); + + // Review: Add/Remove: raylib/projects/VS2022/examples/_example_name.vcxproj + // Review: Add/remove: raylib/projects/VS2022/raylib.sln + // Solves: VALID_MISSING_VCXPROJ, VALID_NOT_IN_VCXSOL + + // Review: Add/Remove: raylib.com/examples//_example_name.html + // Review: Add/Remove: raylib.com/examples//_example_name.data + // Review: Add/Remove: raylib.com/examples//_example_name.wasm + // Review: Add/Remove: raylib.com/examples//_example_name.js + // Solves: VALID_MISSING_WEB_OUTPUT + } + } + + // Update files: Makefile, Makefile.Web, README.md, examples.js + // Solves: VALID_NOT_IN_MAKEFILE, VALID_NOT_IN_MAKEFILE_WEB, VALID_NOT_IN_README, VALID_NOT_IN_JS + UpdateRequiredFiles(); + //------------------------------------------------------------------------------------------------ } UnloadExamplesData(exCollection); //------------------------------------------------------------------------------------------------ - - if (opCode == OP_UPDATE) - { - // Actions to be performed to fix/review anything possible - //------------------------------------------------------------------------------------------------ - - // TODO: Process validation results and take actions to - // correct everything possible to make collection consistent - - // Review: Add/Remove: raylib/projects/VS2022/examples/_example_name.vcxproj - // Review: Add/remove: raylib/projects/VS2022/raylib.sln - - // Update files: Makefile, Makefile.Web, README.md, examples.js - UpdateRequiredFiles(); - - // Review examples - // Review: Add/Remove: raylib.com/examples//_example_name.html - // Review: Add/Remove: raylib.com/examples//_example_name.data - // Review: Add/Remove: raylib.com/examples//_example_name.wasm - // Review: Add/Remove: raylib.com/examples//_example_name.js - //------------------------------------------------------------------------------------------------ - } } break; default: // Help @@ -1424,7 +1477,7 @@ static void UnloadTextLines(char **lines) } // Get example info from file header -rlExampleInfo *GetExampleInfo(const char *exFileName) +rlExampleInfo *LoadExampleInfo(const char *exFileName) { rlExampleInfo *exInfo = (rlExampleInfo *)RL_CALLOC(1, sizeof(rlExampleInfo)); @@ -1437,6 +1490,7 @@ rlExampleInfo *GetExampleInfo(const char *exFileName) // Get example difficulty stars // NOTE: Counting the unicode char occurrences: ⭐️ + // WARNING: The stars unicode in examples is not the same than in collection list!!! int starsIndex = TextFindIndex(exText, "★"); if (starsIndex > 0) { @@ -1444,8 +1498,8 @@ rlExampleInfo *GetExampleInfo(const char *exFileName) while (*starPtr) { if (((unsigned char)starPtr[0] == 0xe2) && - ((unsigned char)starPtr[1] == 0xad) && - ((unsigned char)starPtr[2] == 0x90)) + ((unsigned char)starPtr[1] == 0x98) && + ((unsigned char)starPtr[2] == 0x85)) { exInfo->stars++; starPtr += 3; // Advance past multibyte character @@ -1469,31 +1523,32 @@ rlExampleInfo *GetExampleInfo(const char *exFileName) exInfo->verUpdated = TextToFloat(verUpdateText); // Get example creator and github user - int authorIndex = TextFindIndex(exText, "Example contributed by "); // Author = index + 23 - int authorGitIndex = TextFindIndex(exText, "(@"); // Author GitHub user = index + 2 - if (authorIndex > 0) + // NOTE: Using copyright line instead of "Example contributed by " because + // most examples do not contain that line --> TODO: Review examples header formating? + // Expected format: Copyright (c) - (@) + // Alternatives: Copyright (c) (@) and (@) + int copyrightIndex = TextFindIndex(exText, "Copyright (c) "); + int yearStartIndex = copyrightIndex + 14; + int yearEndIndex = TextFindIndex(exText + yearStartIndex, " "); + int authorStartIndex = yearStartIndex + yearEndIndex + 1; + int authorEndIndex = TextFindIndex(exText + authorStartIndex, " (@"); + if (authorEndIndex != -1) // Github user also available { - int authorNameLen = 0; - if (authorGitIndex > 0) authorNameLen = (authorGitIndex - 1) - (authorIndex + 23); - else - { - int authorNameEndIndex = TextFindIndex(exText + authorIndex, " and reviewed by Ramon Santamaria"); - if (authorNameEndIndex == -1) authorNameEndIndex = TextFindIndex(exText + authorIndex, "\n"); + authorEndIndex += authorStartIndex; + strncpy(exInfo->author, exText + authorStartIndex, authorEndIndex - authorStartIndex); - authorNameLen = authorNameEndIndex - (authorIndex + 23); - } - strncpy(exInfo->author, exText + authorIndex + 23, authorNameLen); + // Get GitHub user + int userStartIndex = authorEndIndex + 3; + int userEndIndex = TextFindIndex(exText + userStartIndex, ")"); + userEndIndex += userStartIndex; + strncpy(exInfo->authorGitHub, exText + userStartIndex, userEndIndex - userStartIndex); } - else strcpy(exInfo->author, ""); - if (authorGitIndex > 0) + else // GitHub user not found to set end, using '\n' { - int authorGitEndIndex = TextFindIndex(exText + authorGitIndex, ")"); - if (authorGitEndIndex > 0) strncpy(exInfo->authorGitHub, exText + authorGitIndex + 2, authorGitEndIndex - (authorGitIndex + 2)); + authorEndIndex = TextFindIndex(exText + authorStartIndex, "\n"); + authorEndIndex += authorStartIndex; + strncpy(exInfo->author, exText + authorStartIndex, authorEndIndex - authorStartIndex); } - else strcpy(exInfo->authorGitHub, ""); - - // TODO: Verify copyright line - // Copyright (c) - (@) UnloadFileText(exText); } @@ -1501,6 +1556,12 @@ rlExampleInfo *GetExampleInfo(const char *exFileName) return exInfo; } +// Unload example information +static void UnloadExampleInfo(rlExampleInfo *exInfo) +{ + RL_FREE(exInfo); +} + // raylib example line info parser // Parses following line format: core;core_basic_window;⭐️☆☆☆;1.0;1.0;"Ray";@raysan5 static int ParseExampleInfoLine(const char *line, rlExampleInfo *entry) @@ -1541,7 +1602,7 @@ static int ParseExampleInfoLine(const char *line, rlExampleInfo *entry) if (tokens[5][0] == '"') tokens[5] += 1; if (tokens[5][strlen(tokens[5]) - 1] == '"') tokens[5][strlen(tokens[5]) - 1] = '\0'; strcpy(entry->author, tokens[5]); - strcpy(entry->authorGitHub, tokens[6]); + strcpy(entry->authorGitHub, tokens[6] + 1); // Skip '@' return 1; } From 8bc1d62e88c16c981ecffbfc0042436632cae240 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 6 Aug 2025 15:43:13 +0200 Subject: [PATCH 149/328] REXM: Added legend info to report --- tools/rexm/rexm.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 702948d4d..92554b4ab 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -718,7 +718,7 @@ int main(int argc, char *argv[]) // Check all examples in collection [examples_list.txt] -> Source of truth! int exCollectionCount = 0; - rlExampleInfo *exCollection = LoadExamplesData(exCollectionFilePath, "ALL", true, &exCollectionCount); + rlExampleInfo *exCollection = LoadExamplesData(exCollectionFilePath, "ALL", false, &exCollectionCount); // TODO: Validate: Duplicate entries in collection list? @@ -857,6 +857,22 @@ int main(int argc, char *argv[]) int repIndex = 0; repIndex += sprintf(report + repIndex, "# EXAMPLES COLLECTION REPORT\n\n"); + + repIndex += sprintf(report + repIndex, "```\nExample elements validated:\n\n"); + repIndex += sprintf(report + repIndex, " - [C] : Missing .c source file\n"); + repIndex += sprintf(report + repIndex, " - [CAT] : Not a recognized category\n"); + repIndex += sprintf(report + repIndex, " - [INFO] : Inconsistent example header info (stars, author...)\n"); + repIndex += sprintf(report + repIndex, " - [PNG] : Missing screenshot .png\n"); + repIndex += sprintf(report + repIndex, " - [WPNG] : Invalid png screenshot (using default one)\n"); + repIndex += sprintf(report + repIndex, " - [RES] : Missing resources listed in the code\n"); + repIndex += sprintf(report + repIndex, " - [MK] : Not listed in Makefile\n"); + repIndex += sprintf(report + repIndex, " - [MKWEB] : Not listed in Makefile.Web\n"); + repIndex += sprintf(report + repIndex, " - [VCX] : Missing Visual Studio project file\n"); + repIndex += sprintf(report + repIndex, " - [SOL] : Project not included in solution file\n"); + repIndex += sprintf(report + repIndex, " - [RDME] : Not listed in README.md\n"); + repIndex += sprintf(report + repIndex, " - [JS] : Not listed in Web (examples.js)\n"); + repIndex += sprintf(report + repIndex, " - [WOUT] : Missing Web build (.html/.data/.wasm/.js)\n```\n"); + repIndex += sprintf(report + repIndex, "| **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]|\n"); repIndex += sprintf(report + repIndex, "|:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:|\n"); From 2878f7db22fba739b1e65592fd2e70b1ff42311f Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 6 Aug 2025 15:43:15 +0200 Subject: [PATCH 150/328] Create examples_report.md --- tools/rexm/examples_report.md | 180 ++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 tools/rexm/examples_report.md diff --git a/tools/rexm/examples_report.md b/tools/rexm/examples_report.md new file mode 100644 index 000000000..0188c4a98 --- /dev/null +++ b/tools/rexm/examples_report.md @@ -0,0 +1,180 @@ +# EXAMPLES COLLECTION REPORT + +``` +Example elements validated: + + - [C] : Missing .c source file + - [CAT] : Not a recognized category + - [INFO] : Inconsistent example header info (stars, author...) + - [PNG] : Missing screenshot .png + - [WPNG] : Invalid png screenshot (using default one) + - [RES] : Missing resources listed in the code + - [MK] : Not listed in Makefile + - [MKWEB] : Not listed in Makefile.Web + - [VCX] : Missing Visual Studio project file + - [SOL] : Project not included in solution file + - [RDME] : Not listed in README.md + - [JS] : Not listed in Web (examples.js) + - [WOUT] : Missing Web build (.html/.data/.wasm/.js) +``` +| **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]| +|:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:| +| core_basic_window | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_input_keys | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_input_mouse | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_input_mouse_wheel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_input_gamepad | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_input_multitouch | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_input_gestures | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_input_virtual_controls | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | +| core_2d_camera | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_2d_camera_mouse_zoom | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_2d_camera_platformer | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_2d_camera_split_screen | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_3d_camera_mode | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_3d_camera_free | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_3d_camera_first_person | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_3d_camera_split_screen | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_3d_picking | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_world_screen | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_custom_logging | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_window_flags | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_window_letterbox | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_window_should_close | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_drop_files | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_random_values | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_storage_values | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_vr_simulator | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_loading_thread | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_scissor_test | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_basic_screen_manager | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_custom_frame_control | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_smooth_pixelperfect | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_random_sequence | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | +| core_basic_window_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ❌ | +| core_input_gestures_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ✔ | +| core_automation_events | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_high_dpi | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | +| shapes_basic_shapes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_bouncing_ball | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_colors_palette | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_logo_raylib | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_logo_raylib_anim | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_rectangle_scaling | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_lines_bezier | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_collision_area | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_following_eyes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_easings_ball_anim | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_easings_box_anim | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_easings_rectangle_array | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_draw_ring | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_draw_circle_sector | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_draw_rectangle_rounded | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_top_down_lights | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_rectangle_advanced | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | +| shapes_splines_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_digital_clock | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ❌ | +| shapes_double_pendulum | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ❌ | +| textures_logo_raylib | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_srcrec_dstrec | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_image_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_image_generation | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_image_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_image_processing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_image_text | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_to_image | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_raw_data | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_particles_blending | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_npatch_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_background_scrolling | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_sprite_anim | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_sprite_button | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_sprite_explosion | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_bunnymark | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_mouse_painting | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| textures_blend_modes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_draw_tiled | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_polygon | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_fog_of_war | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_gif_player | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_image_kernel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ✔ | +| textures_image_channel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | +| textures_image_rotate | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ✔ | +| textures_textured_curve | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_raylib_fonts | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_font_spritefont | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_font_filters | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_font_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_font_sdf | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_format_text | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_input_box | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_writing_anim | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_rectangle_bounds | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_unicode | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_draw_3d | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_codepoints_loading | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_animation | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_billboard | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_box_collisions | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_cubicmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_first_person_maze | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_geometric_shapes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_mesh_generation | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_mesh_picking | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_loading_gltf | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_loading_vox | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_loading_m3d | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_orthographic_projection | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_point_rendering | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | +| models_rlgl_solar_system | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_yaw_pitch_roll | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_waving_cubes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_heightmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_skybox | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_draw_cube_texture | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_gpu_skinning | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_bone_socket | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_tesseract_view | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | +| shaders_basic_lighting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_model_shader | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_shapes_textures | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_custom_uniform | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_postprocessing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_palette_switch | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_raymarching | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_texture_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_texture_outline | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_texture_waves | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_julia_set | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_eratosthenes | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_fog | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_simple_mask | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_hot_reloading | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_mesh_instancing | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_multi_sample2d | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_spotlight | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_deferred_render | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_hybrid_render | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_texture_tiling | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_shadowmap | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | +| shaders_vertex_displacement | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_write_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_basic_pbr | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | +| shaders_lightmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | +| shaders_rounded_rectangle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | +| shaders_view_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | +| audio_module_playing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| audio_music_stream | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| audio_raw_stream | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| audio_sound_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| audio_mixed_processor | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| audio_stream_effects | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| audio_sound_multi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ❌ | +| rlgl_standalone | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | +| rlgl_compute_shader | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | ❌ | +| easings_testbed | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | +| raylib_opengl_interop | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ❌ | +| embedded_files_loading | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | +| raymath_vector_angle | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ❌ | From c477c684193e4bcb65575bb80f79c452d21ba6c5 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 6 Aug 2025 18:14:52 +0200 Subject: [PATCH 151/328] REXM: Automatically fix not found VS2022 project / solution --- tools/rexm/rexm.c | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 92554b4ab..8a7ec80cd 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -115,18 +115,18 @@ typedef enum { static const char *exCategories[REXM_MAX_EXAMPLE_CATEGORIES] = { "core", "shapes", "textures", "text", "models", "shaders", "audio", "others" }; // Paths required for examples management -// TODO: Avoid hardcoding path values... -static const char *exBasePath = NULL; //"C:/GitHub/raylib/examples"; -static const char *exWebPath = NULL; //"C:/GitHub/raylib.com/examples"; -static const char *exTemplateFilePath = NULL; //"C:/GitHub/raylib/examples/examples_template.c"; -static const char *exTemplateScreenshot = NULL; //"C:/GitHub/raylib/examples/examples_template.png"; -static const char *exCollectionFilePath = NULL; //"C:/GitHub/raylib/examples/examples_list.txt"; +// NOTE: Paths can be provided with environment variables +static const char *exBasePath = NULL; // Env: REXM_EXAMPLES_BASE_PATH +static const char *exWebPath = NULL; // Env: REXM_EXAMPLES_WEB_PATH +static const char *exTemplateFilePath = NULL; // Env: REXM_EXAMPLES_TEMPLATE_FILE_PATH +static const char *exTemplateScreenshot = NULL; // Env: REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH +static const char *exCollectionFilePath = NULL; // Env: REXM_EXAMPLES_COLLECTION_FILE_PATH //---------------------------------------------------------------------------------- // Module specific functions declaration //---------------------------------------------------------------------------------- static int FileTextFind(const char *fileName, const char *find); -static int FileTextReplace(const char *fileName, const char *textLookUp, const char *textReplace); +static int FileTextReplace(const char *fileName, const char *find, const char *replace); static int FileCopy(const char *srcPath, const char *dstPath); static int FileRename(const char *fileName, const char *fileRename); static int FileMove(const char *srcPath, const char *dstPath); @@ -449,8 +449,8 @@ int main(int argc, char *argv[]) for (int i = 0; i < 4; i++) { // NOTE: Every UTF-8 star are 3 bytes - if (i < exInfo->stars) strncpy(starsText + 3*i, "★", 3); - else strncpy(starsText + 3*i, "☆", 3); + if (i < exInfo->stars) strcpy(starsText + 3*i, "★"); + else strcpy(starsText + 3*i, "☆"); } if (nextCategoryIndex == -1) @@ -856,7 +856,7 @@ int main(int argc, char *argv[]) char *report = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); int repIndex = 0; - repIndex += sprintf(report + repIndex, "# EXAMPLES COLLECTION REPORT\n\n"); + repIndex += sprintf(report + repIndex, "# EXAMPLES COLLECTION - VALIDATION REPORT\n\n"); repIndex += sprintf(report + repIndex, "```\nExample elements validated:\n\n"); repIndex += sprintf(report + repIndex, " - [C] : Missing .c source file\n"); @@ -919,15 +919,29 @@ int main(int argc, char *argv[]) //if (exInfo->status & VALID_INCONSISTENT_INFO) LOG("WARNING: [%s] Inconsistent example header info\n", exInfo->name); //if (exInfo->status & VALID_INVALID_CATEGORY) LOG("WARNING: [%s] Invalid example category\n", exInfo->name); - // Review: Add/Remove: raylib/projects/VS2022/examples/_example_name.vcxproj - // Review: Add/remove: raylib/projects/VS2022/raylib.sln + // Review: Add: raylib/projects/VS2022/examples/_example_name.vcxproj + // Review: Add: raylib/projects/VS2022/raylib.sln // Solves: VALID_MISSING_VCXPROJ, VALID_NOT_IN_VCXSOL + if (exInfo->status & VALID_MISSING_VCXPROJ) + { + FileCopy(TextFormat("%s/../projects/VS2022/examples/core_basic_window.vcxproj", exBasePath), + TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name)); + FileTextReplace(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), + "core_basic_window", exInfo->name); + FileTextReplace(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), + "..\\..\\examples\\core", TextFormat("..\\..\\examples\\%s", exInfo->category)); + } + if (exInfo->status & VALID_NOT_IN_VCXSOL) + system(TextFormat("dotnet solution %s/../projects/VS2022/raylib.sln add %s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exBasePath, exInfo->name)); + // Review: Add/Remove: raylib.com/examples//_example_name.html // Review: Add/Remove: raylib.com/examples//_example_name.data // Review: Add/Remove: raylib.com/examples//_example_name.wasm // Review: Add/Remove: raylib.com/examples//_example_name.js // Solves: VALID_MISSING_WEB_OUTPUT + if (exInfo->status & VALID_MISSING_WEB_OUTPUT) + system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); } } From f64d405ef30309f17494ed83cd9dacca85438d86 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 6 Aug 2025 18:18:39 +0200 Subject: [PATCH 152/328] Update Makefile.Web --- examples/Makefile.Web | 200 +++++++++++++++++++----------------------- 1 file changed, 90 insertions(+), 110 deletions(-) diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 5a5d74eb0..dc8c886dd 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -665,14 +665,6 @@ AUDIO = \ audio/audio_sound_positioning \ audio/audio_stream_effects -OTHERS = \ - others/easings_testbed \ - others/embedded_files_loading \ - others/raylib_opengl_interop \ - others/raymath_vector_angle \ - others/rlgl_compute_shader \ - others/rlgl_standalone - # Default target entry all: $(CORE) $(SHAPES) $(TEXT) $(TEXTURES) $(MODELS) $(SHADERS) $(AUDIO) @@ -712,7 +704,10 @@ core/core_3d_camera_split_screen: core/core_3d_camera_split_screen.c core/core_3d_picking: core/core_3d_picking.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -core/core_automation_events : core/core_automation_events.c +core/core_automation_events: core/core_automation_events.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + +core/core_basic_screen_manager: core/core_basic_screen_manager.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) core/core_basic_window: core/core_basic_window.c @@ -721,9 +716,6 @@ core/core_basic_window: core/core_basic_window.c core/core_basic_window_web: core/core_basic_window_web.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -core/core_basic_screen_manager: core/core_basic_screen_manager.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - core/core_custom_frame_control: core/core_custom_frame_control.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) @@ -733,6 +725,9 @@ core/core_custom_logging: core/core_custom_logging.c core/core_drop_files: core/core_drop_files.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) +core/core_high_dpi: core/core_high_dpi.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + core/core_input_gamepad: core/core_input_gamepad.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file core/resources/ps3.png@resources/ps3.png \ @@ -759,12 +754,8 @@ core/core_input_multitouch: core/core_input_multitouch.c core/core_input_virtual_controls: core/core_input_virtual_controls.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -# NOTE: To use multi-threading raylib must be compiled with multi-theading support (-sUSE_PTHREADS=1) -# WARNING: For security reasons multi-threading is not supported on browsers, it requires cross-origin isolation (Oct.2021) -# WARNING: It requires raylib to be compiled using -pthread, so atomic operations and thread-local data (if any) -# in its source were transformed to non-atomic operations and non-thread-local data core/core_loading_thread: core/core_loading_thread.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sUSE_PTHREADS=1 + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) core/core_random_sequence: core/core_random_sequence.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) @@ -779,11 +770,11 @@ core/core_smooth_pixelperfect: core/core_smooth_pixelperfect.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) core/core_storage_values: core/core_storage_values.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sFORCE_FILESYSTEM=1 + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) core/core_vr_simulator: core/core_vr_simulator.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file core/resources/distortion100.fs@resources/distortion100.fs + --preload-file core/resources/shaders/glsl100/distortion.fs@resources/shaders/glsl100/distortion.fs core/core_window_flags: core/core_window_flags.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) @@ -810,6 +801,12 @@ shapes/shapes_collision_area: shapes/shapes_collision_area.c shapes/shapes_colors_palette: shapes/shapes_colors_palette.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) +shapes/shapes_digital_clock: shapes/shapes_digital_clock.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + +shapes/shapes_double_pendulum: shapes/shapes_double_pendulum.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + shapes/shapes_draw_circle_sector: shapes/shapes_draw_circle_sector.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) @@ -840,6 +837,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_rectangle_advanced: shapes/shapes_rectangle_advanced.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + shapes/shapes_rectangle_scaling: shapes/shapes_rectangle_scaling.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) @@ -849,12 +849,6 @@ shapes/shapes_splines_drawing: shapes/shapes_splines_drawing.c shapes/shapes_top_down_lights: shapes/shapes_top_down_lights.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) - -shapes/shapes_double_pendulum: shapes/shapes_double_pendulum.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - # Compile TEXTURES examples textures/textures_background_scrolling: textures/textures_background_scrolling.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ @@ -888,16 +882,16 @@ textures/textures_image_channel: textures/textures_image_channel.c textures/textures_image_drawing: textures/textures_image_drawing.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/custom_jupiter_crash.png@resources/custom_jupiter_crash.png \ + --preload-file textures/resources/cat.png@resources/cat.png \ --preload-file textures/resources/parrots.png@resources/parrots.png \ - --preload-file textures/resources/cat.png@resources/cat.png + --preload-file textures/resources/custom_jupiter_crash.png@resources/custom_jupiter_crash.png textures/textures_image_generation: textures/textures_image_generation.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) textures/textures_image_kernel: textures/textures_image_kernel.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/cat.png@resources/cat.png + --preload-file textures/resources/cat.png@resources/cat.png textures/textures_image_loading: textures/textures_image_loading.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ @@ -909,7 +903,7 @@ textures/textures_image_processing: textures/textures_image_processing.c textures/textures_image_rotate: textures/textures_image_rotate.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/raylib_logo.png + --preload-file textures/resources/raylib_logo.png@resources/raylib_logo.png textures/textures_image_text: textures/textures_image_text.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ @@ -921,7 +915,8 @@ textures/textures_logo_raylib: textures/textures_logo_raylib.c --preload-file textures/resources/raylib_logo.png@resources/raylib_logo.png textures/textures_mouse_painting: textures/textures_mouse_painting.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ + --preload-file textures/my_amazing_texture_painting.png@my_amazing_texture_painting.png textures/textures_npatch_drawing: textures/textures_npatch_drawing.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ @@ -945,13 +940,13 @@ textures/textures_sprite_anim: textures/textures_sprite_anim.c textures/textures_sprite_button: textures/textures_sprite_button.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/button.png@resources/button.png \ - --preload-file textures/resources/buttonfx.wav@resources/buttonfx.wav + --preload-file textures/resources/buttonfx.wav@resources/buttonfx.wav \ + --preload-file textures/resources/button.png@resources/button.png textures/textures_sprite_explosion: textures/textures_sprite_explosion.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/resources/explosion.png@resources/explosion.png \ - --preload-file textures/resources/boom.wav@resources/boom.wav + --preload-file textures/resources/boom.wav@resources/boom.wav \ + --preload-file textures/resources/explosion.png@resources/explosion.png textures/textures_srcrec_dstrec: textures/textures_srcrec_dstrec.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ @@ -979,10 +974,7 @@ text/text_font_filters: text/text_font_filters.c --preload-file text/resources/KAISG.ttf@resources/KAISG.ttf text/text_font_loading: text/text_font_loading.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file text/resources/pixantiqua.fnt@resources/pixantiqua.fnt \ - --preload-file text/resources/pixantiqua.png@resources/pixantiqua.png \ - --preload-file text/resources/pixantiqua.ttf@resources/pixantiqua.ttf + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) text/text_font_sdf: text/text_font_sdf.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ @@ -1018,16 +1010,12 @@ text/text_rectangle_bounds: text/text_rectangle_bounds.c text/text_unicode: text/text_unicode.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file text/resources/dejavu.fnt@resources/dejavu.fnt \ - --preload-file text/resources/dejavu.png@resources/dejavu.png \ --preload-file text/resources/noto_cjk.fnt@resources/noto_cjk.fnt \ - --preload-file text/resources/noto_cjk.png@resources/noto_cjk.png \ - --preload-file text/resources/symbola.fnt@resources/symbola.fnt \ - --preload-file text/resources/symbola.png@resources/symbola.png + --preload-file text/resources/symbola.fnt@resources/symbola.fnt text/text_writing_anim: text/text_writing_anim.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - # Compile MODELS examples models/models_animation: models/models_animation.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ @@ -1035,12 +1023,6 @@ models/models_animation: models/models_animation.c --preload-file models/resources/models/iqm/guytex.png@resources/models/iqm/guytex.png \ --preload-file models/resources/models/iqm/guyanim.iqm@resources/models/iqm/guyanim.iqm -models/models_gpu_skinning: models/models_gpu_skinning.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/models/gltf/greenman.glb@resources/models/gltf/greenman.glb \ - --preload-file models/resources/shaders/glsl100/skinning.vs@resources/shaders/glsl100/skinning.vs \ - --preload-file models/resources/shaders/glsl100/skinning.fs@resources/shaders/glsl100/skinning.fs - models/models_billboard: models/models_billboard.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file models/resources/billboard.png@resources/billboard.png @@ -1072,6 +1054,12 @@ models/models_first_person_maze: models/models_first_person_maze.c models/models_geometric_shapes: models/models_geometric_shapes.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) +models/models_gpu_skinning: models/models_gpu_skinning.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ + --preload-file models/resources/models/gltf/greenman.glb@resources/models/gltf/greenman.glb \ + --preload-file models/resources/shaders/glsl100/skinning.vs@resources/shaders/glsl100/skinning.vs \ + --preload-file models/resources/shaders/glsl100/skinning.fs@resources/shaders/glsl100/skinning.fs + models/models_heightmap: models/models_heightmap.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file models/resources/heightmap.png@resources/heightmap.png @@ -1093,7 +1081,10 @@ models/models_loading_vox: models/models_loading_vox.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file models/resources/models/vox/chr_knight.vox@resources/models/vox/chr_knight.vox \ --preload-file models/resources/models/vox/chr_sword.vox@resources/models/vox/chr_sword.vox \ - --preload-file models/resources/models/vox/monu9.vox@resources/models/vox/monu9.vox + --preload-file models/resources/models/vox/monu9.vox@resources/models/vox/monu9.vox \ + --preload-file models/resources/models/vox/fez.vox@resources/models/vox/fez.vox \ + --preload-file models/resources/shaders/glsl100/voxel_lighting.vs@resources/shaders/glsl100/voxel_lighting.vs \ + --preload-file models/resources/shaders/glsl100/voxel_lighting.fs@resources/shaders/glsl100/voxel_lighting.fs models/models_mesh_generation: models/models_mesh_generation.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) @@ -1114,12 +1105,12 @@ models/models_rlgl_solar_system: models/models_rlgl_solar_system.c models/models_skybox: models/models_skybox.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file models/resources/dresden_square_2k.hdr@resources/dresden_square_2k.hdr \ - --preload-file models/resources/skybox.png@resources/skybox.png \ --preload-file models/resources/shaders/glsl100/skybox.vs@resources/shaders/glsl100/skybox.vs \ --preload-file models/resources/shaders/glsl100/skybox.fs@resources/shaders/glsl100/skybox.fs \ --preload-file models/resources/shaders/glsl100/cubemap.vs@resources/shaders/glsl100/cubemap.vs \ - --preload-file models/resources/shaders/glsl100/cubemap.fs@resources/shaders/glsl100/cubemap.fs + --preload-file models/resources/shaders/glsl100/cubemap.fs@resources/shaders/glsl100/cubemap.fs \ + --preload-file models/resources/dresden_square_2k.hdr@resources/dresden_square_2k.hdr \ + --preload-file models/resources/skybox.png@resources/skybox.png models/models_tesseract_view: models/models_tesseract_view.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) @@ -1132,21 +1123,16 @@ models/models_yaw_pitch_roll: models/models_yaw_pitch_roll.c --preload-file models/resources/models/obj/plane.obj@resources/models/obj/plane.obj \ --preload-file models/resources/models/obj/plane_diffuse.png@resources/models/obj/plane_diffuse.png -# Compile SHADER examples +# Compile SHADERS examples shaders/shaders_basic_lighting: shaders/shaders_basic_lighting.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/texel_checker.png@resources/texel_checker.png \ - --preload-file shaders/resources/shaders/glsl100/lighting.fs@resources/shaders/glsl100/lighting.fs \ - --preload-file shaders/resources/shaders/glsl100/lighting.vs@resources/shaders/glsl100/lighting.vs + --preload-file shaders/resources/shaders/glsl100/lighting.vs@resources/shaders/glsl100/lighting.vs \ + --preload-file shaders/resources/shaders/glsl100/lighting.fs@resources/shaders/glsl100/lighting.fs shaders/shaders_basic_pbr: shaders/shaders_basic_pbr.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/shaders/glsl100/pbr.vs@resources/shaders/glsl100/pbr.vs \ - --preload-file shaders/resources/shaders/glsl120/pbr.vs@resources/shaders/glsl120/pbr.vs \ - --preload-file shaders/resources/shaders/glsl330/pbr.vs@resources/shaders/glsl330/pbr.vs \ --preload-file shaders/resources/shaders/glsl100/pbr.fs@resources/shaders/glsl100/pbr.fs \ - --preload-file shaders/resources/shaders/glsl120/pbr.fs@resources/shaders/glsl120/pbr.fs \ - --preload-file shaders/resources/shaders/glsl330/pbr.fs@resources/shaders/glsl330/pbr.fs \ --preload-file shaders/resources/models/old_car_new.glb@resources/models/old_car_new.glb \ --preload-file shaders/resources/old_car_d.png@resources/old_car_d.png \ --preload-file shaders/resources/old_car_mra.png@resources/old_car_mra.png \ @@ -1165,7 +1151,6 @@ shaders/shaders_custom_uniform: shaders/shaders_custom_uniform.c shaders/shaders_deferred_render: shaders/shaders_deferred_render.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/fudesumi.png@resources/fudesumi.png \ --preload-file shaders/resources/shaders/glsl100/gbuffer.vs@resources/shaders/glsl100/gbuffer.vs \ --preload-file shaders/resources/shaders/glsl100/gbuffer.fs@resources/shaders/glsl100/gbuffer.fs \ --preload-file shaders/resources/shaders/glsl100/deferred_shading.vs@resources/shaders/glsl100/deferred_shading.vs \ @@ -1178,11 +1163,11 @@ shaders/shaders_eratosthenes: shaders/shaders_eratosthenes.c shaders/shaders_fog: shaders/shaders_fog.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/texel_checker.png@resources/texel_checker.png \ - --preload-file shaders/resources/shaders/glsl100/fog.fs@resources/shaders/glsl100/fog.fs \ - --preload-file shaders/resources/shaders/glsl100/lighting.vs@resources/shaders/glsl100/lighting.vs + --preload-file shaders/resources/shaders/glsl100/lighting.vs@resources/shaders/glsl100/lighting.vs \ + --preload-file shaders/resources/shaders/glsl100/fog.fs@resources/shaders/glsl100/fog.fs shaders/shaders_hot_reloading: shaders/shaders_hot_reloading.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sFORCE_FILESYSTEM=1 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/shaders/glsl100/reload.fs@resources/shaders/glsl100/reload.fs shaders/shaders_hybrid_render: shaders/shaders_hybrid_render.c @@ -1195,7 +1180,7 @@ shaders/shaders_julia_set: shaders/shaders_julia_set.c --preload-file shaders/resources/shaders/glsl100/julia_set.fs@resources/shaders/glsl100/julia_set.fs shaders/shaders_lightmap: shaders/shaders_lightmap.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sFORCE_FILESYSTEM=1 \ + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/shaders/glsl100/lightmap.vs@resources/shaders/glsl100/lightmap.vs \ --preload-file shaders/resources/shaders/glsl100/lightmap.fs@resources/shaders/glsl100/lightmap.fs \ --preload-file shaders/resources/cubicmap_atlas.png@resources/cubicmap_atlas.png \ @@ -1224,31 +1209,45 @@ shaders/shaders_postprocessing: shaders/shaders_postprocessing.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/models/church.obj@resources/models/church.obj \ --preload-file shaders/resources/models/church_diffuse.png@resources/models/church_diffuse.png \ - --preload-file shaders/resources/shaders/glsl100@resources/shaders/glsl100 + --preload-file shaders/resources/shaders/glsl100/grayscale.fs@resources/shaders/glsl100/grayscale.fs \ + --preload-file shaders/resources/shaders/glsl100/posterization.fs@resources/shaders/glsl100/posterization.fs \ + --preload-file shaders/resources/shaders/glsl100/dream_vision.fs@resources/shaders/glsl100/dream_vision.fs \ + --preload-file shaders/resources/shaders/glsl100/pixelizer.fs@resources/shaders/glsl100/pixelizer.fs \ + --preload-file shaders/resources/shaders/glsl100/cross_hatching.fs@resources/shaders/glsl100/cross_hatching.fs \ + --preload-file shaders/resources/shaders/glsl100/cross_stitching.fs@resources/shaders/glsl100/cross_stitching.fs \ + --preload-file shaders/resources/shaders/glsl100/predator.fs@resources/shaders/glsl100/predator.fs \ + --preload-file shaders/resources/shaders/glsl100/scanlines.fs@resources/shaders/glsl100/scanlines.fs \ + --preload-file shaders/resources/shaders/glsl100/fisheye.fs@resources/shaders/glsl100/fisheye.fs \ + --preload-file shaders/resources/shaders/glsl100/sobel.fs@resources/shaders/glsl100/sobel.fs \ + --preload-file shaders/resources/shaders/glsl100/bloom.fs@resources/shaders/glsl100/bloom.fs \ + --preload-file shaders/resources/shaders/glsl100/blur.fs@resources/shaders/glsl100/blur.fs shaders/shaders_raymarching: shaders/shaders_raymarching.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/shaders/glsl100/raymarching.fs@resources/shaders/glsl100/raymarching.fs +shaders/shaders_rounded_rectangle: shaders/shaders_rounded_rectangle.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ + --preload-file shaders/resources/shaders/glsl100/base.vs@resources/shaders/glsl100/base.vs \ + --preload-file shaders/resources/shaders/glsl100/rounded_rectangle.fs@resources/shaders/glsl100/rounded_rectangle.fs + shaders/shaders_shadowmap: shaders/shaders_shadowmap.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl120/shadowmap.vs@resources/shaders/glsl120/shadowmap.vs \ - --preload-file shaders/resources/shaders/glsl330/shadowmap.vs@resources/shaders/glsl330/shadowmap.vs \ - --preload-file shaders/resources/shaders/glsl120/shadowmap.fs@resources/shaders/glsl120/shadowmap.fs \ - --preload-file shaders/resources/shaders/glsl330/shadowmap.fs@resources/shaders/glsl330/shadowmap.fs \ - --preload-file shaders/resources/models/robot.glb@resources/models/robot.glb + --preload-file shaders/resources/shaders/glsl100/shadowmap.vs@resources/shaders/glsl100/shadowmap.vs \ + --preload-file shaders/resources/shaders/glsl100/shadowmap.fs@resources/shaders/glsl100/shadowmap.fs \ + --preload-file shaders/resources/models/robot.glb@resources/models/robot.glb \ + --preload-file shaders/shaders_shadowmap.png@shaders_shadowmap.png shaders/shaders_shapes_textures: shaders/shaders_shapes_textures.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/fudesumi.png@resources/fudesumi.png \ - --preload-file shaders/resources/shaders/glsl100/base.vs@resources/shaders/glsl100/base.vs \ --preload-file shaders/resources/shaders/glsl100/grayscale.fs@resources/shaders/glsl100/grayscale.fs shaders/shaders_simple_mask: shaders/shaders_simple_mask.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ + --preload-file shaders/resources/shaders/glsl100/mask.fs@resources/shaders/glsl100/mask.fs \ --preload-file shaders/resources/plasma.png@resources/plasma.png \ - --preload-file shaders/resources/mask.png@resources/mask.png \ - --preload-file shaders/resources/shaders/glsl100/mask.fs@resources/shaders/glsl100/mask.fs + --preload-file shaders/resources/mask.png@resources/mask.png shaders/shaders_spotlight: shaders/shaders_spotlight.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ @@ -1261,34 +1260,32 @@ shaders/shaders_texture_drawing: shaders/shaders_texture_drawing.c shaders/shaders_texture_outline: shaders/shaders_texture_outline.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/outline.fs@resources/shaders/glsl100/outline.fs \ - --preload-file shaders/resources/fudesumi.png@resources/fudesumi.png + --preload-file shaders/resources/fudesumi.png@resources/fudesumi.png \ + --preload-file shaders/resources/shaders/glsl100/outline.fs@resources/shaders/glsl100/outline.fs shaders/shaders_texture_tiling: shaders/shaders_texture_tiling.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/tiling.fs@resources/shaders/glsl100/tiling.fs \ - --preload-file shaders/resources/cubicmap_atlas.png@resources/cubicmap_atlas.png + --preload-file shaders/resources/cubicmap_atlas.png@resources/cubicmap_atlas.png \ + --preload-file shaders/resources/shaders/glsl100/tiling.fs@resources/shaders/glsl100/tiling.fs shaders/shaders_texture_waves: shaders/shaders_texture_waves.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/space.png@resources/space.png \ --preload-file shaders/resources/shaders/glsl100/wave.fs@resources/shaders/glsl100/wave.fs +shaders/shaders_vertex_displacement: shaders/shaders_vertex_displacement.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ + --preload-file shaders/resources/shaders/glsl100/vertex_displacement.vs@resources/shaders/glsl100/vertex_displacement.vs \ + --preload-file shaders/resources/shaders/glsl100/vertex_displacement.fs@resources/shaders/glsl100/vertex_displacement.fs + shaders/shaders_view_depth: shaders/shaders_view_depth.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/write_depth.fs@resources/shaders/glsl100/write_depth.fs + --preload-file shaders/resources/shaders/glsl100/depth.fs@resources/shaders/glsl100/depth.fs shaders/shaders_write_depth: shaders/shaders_write_depth.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/shaders/glsl100/write_depth.fs@resources/shaders/glsl100/write_depth.fs -shaders/shaders_vertex_displacement: shaders/shaders_vertex_displacement.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file shaders/resources/shaders/glsl100/vertex_displacement.vs@resources/shaders/glsl100/vertex_displacement.vs \ - --preload-file shaders/resources/shaders/glsl330/vertex_displacement.vs@resources/shaders/glsl330/vertex_displacement.vs \ - --preload-file shaders/resources/shaders/glsl100/vertex_displacement.fs@resources/shaders/glsl100/vertex_displacement.fs \ - --preload-file shaders/resources/shaders/glsl330/vertex_displacement.fs@resources/shaders/glsl330/vertex_displacement.fs - # Compile AUDIO examples audio/audio_mixed_processor: audio/audio_mixed_processor.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ @@ -1296,15 +1293,14 @@ audio/audio_mixed_processor: audio/audio_mixed_processor.c --preload-file audio/resources/coin.wav@resources/coin.wav audio/audio_module_playing: audio/audio_module_playing.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file audio/resources/mini1111.xm@resources/mini1111.xm + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) audio/audio_music_stream: audio/audio_music_stream.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file audio/resources/country.mp3@resources/country.mp3 audio/audio_raw_stream: audio/audio_raw_stream.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -sTOTAL_MEMORY=67108864 + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) audio/audio_sound_loading: audio/audio_sound_loading.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ @@ -1315,29 +1311,13 @@ audio/audio_sound_multi: audio/audio_sound_multi.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file audio/resources/sound.wav@resources/sound.wav +audio/audio_sound_positioning: audio/audio_sound_positioning.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ + --preload-file audio/resources/coin.wav@resources/coin.wav + audio/audio_stream_effects: audio/audio_stream_effects.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file audio/resources/country.mp3@resources/country.mp3 - -# Compile OTHERS examples -others/easings_testbed: others/easings_testbed.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -others/embedded_files_loading: others/embedded_files_loading.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -others/raylib_opengl_interop: - $(info Skipping_others_raylib_opengl_interop) - -others/raymath_vector_angle: others/raymath_vector_angle.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) - -others/rlgl_compute_shader: - $(info Skipping_others_rlgl_compute_shader) - -others/rlgl_standalone: - $(info Skipping_others_rlgl_standalone) - #EXAMPLES_LIST_END # Clean everything From c6f8f06f7ec9ee3e83c0ec771f5ff6da07646381 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 6 Aug 2025 18:20:34 +0200 Subject: [PATCH 153/328] Update rexm.c --- tools/rexm/rexm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 8a7ec80cd..2e78d23d0 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -1246,7 +1246,7 @@ static int UpdateRequiredFiles(void) mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, TextFormat("| [%s](%s/%s.c) | \"%s\" | %s | %.1f | %.1f | [%s](https://github.com/%s) |\n", exCollection[x].name, exCollection[x].category, exCollection[x].name, exCollection[x].category, exCollection[x].name, exCollection[x].name, - stars, exCollection[x].verCreated, exCollection[x].verUpdated, exCollection[x].author, exCollection[x].authorGitHub + 1)); + stars, exCollection[x].verCreated, exCollection[x].verUpdated, exCollection[x].author, exCollection[x].authorGitHub)); } UnloadExamplesData(exCollection); From 533f06109de725b70be2ec2e60a7c022abb8ead2 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 6 Aug 2025 18:23:42 +0200 Subject: [PATCH 154/328] Update README.md --- examples/README.md | 374 +++++++++++++++++++++++---------------------- 1 file changed, 188 insertions(+), 186 deletions(-) diff --git a/examples/README.md b/examples/README.md index 8a387596a..59e2f3d34 100644 --- a/examples/README.md +++ b/examples/README.md @@ -16,221 +16,223 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 158] +## EXAMPLES COLLECTION [TOTAL: 159] -### category: core -Examples using raylib [core](../src/rcore.c) platform functionality like window creation, inputs, drawing modes and system functionality. +### category: core [36] -| ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | -|----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| 01 | [core_basic_window](core/core_basic_window.c) | core_basic_window | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | -| 02 | [core_input_keys](core/core_input_keys.c) | core_input_keys | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | -| 03 | [core_input_mouse](core/core_input_mouse.c) | core_input_mouse | ⭐️☆☆☆ | 1.0 | 5.5 | [Ray](https://github.com/raysan5) | -| 04 | [core_input_mouse_wheel](core/core_input_mouse_wheel.c) | core_input_mouse_wheel | ⭐️☆☆☆ | 1.1 | 1.3 | [Ray](https://github.com/raysan5) | -| 05 | [core_input_gamepad](core/core_input_gamepad.c) | core_input_gamepad | ⭐️☆☆☆ | 1.1 | 4.2 | [Ray](https://github.com/raysan5) | -| 06 | [core_input_multitouch](core/core_input_multitouch.c) | core_input_multitouch | ⭐️☆☆☆ | 2.1 | 2.5 | [Berni](https://github.com/Berni8k) | -| 07 | [core_input_gestures](core/core_input_gestures.c) | core_input_gestures | ⭐️⭐️☆☆ | 1.4 | 4.2 | [Ray](https://github.com/raysan5) | -| 08 | [core_input_virtual_controls](core/core_input_virtual_controls.c) | core_input_virtual_controls | ⭐️⭐️☆☆ | 5.0 | 5.0 | [oblerion](https://github.com/oblerion) | -| 09 | [core_2d_camera](core/core_2d_camera.c) | core_2d_camera | ⭐️⭐️☆☆ | 1.5 | 3.0 | [Ray](https://github.com/raysan5) | -| 10 | [core_2d_camera_mouse_zoom](core/core_2d_camera_mouse_zoom.c) | core_2d_camera_mouse_zoom | ⭐️⭐️☆☆ | 4.2 | 4.2 | [Jeffery Myers](https://github.com/JeffM2501) | -| 11 | [core_2d_camera_platformer](core/core_2d_camera_platformer.c) | core_2d_camera_platformer | ⭐️⭐️⭐️☆ | 2.5 | 3.0 | [arvyy](https://github.com/arvyy) | -| 12 | [core_2d_camera_split_screen](core/core_2d_camera_split_screen.c) | core_2d_camera_split_screen | ⭐️⭐️⭐️⭐️ | 4.5 | 4.5 | [Gabriel dos Santos Sanches](https://github.com/gabrielssanches) | -| 13 | [core_3d_camera_mode](core/core_3d_camera_mode.c) | core_3d_camera_mode | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | -| 14 | [core_3d_camera_free](core/core_3d_camera_free.c) | core_3d_camera_free | ⭐️☆☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) | -| 15 | [core_3d_camera_first_person](core/core_3d_camera_first_person.c) | core_3d_camera_first_person | ⭐️⭐️☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) | -| 16 | [core_3d_camera_split_screen](core/core_3d_camera_split_screen.c) | core_3d_camera_split_screen | ⭐️⭐️⭐️☆ | 3.7 | 4.0 | [Jeffery Myers](https://github.com/JeffM2501) | -| 17 | [core_3d_picking](core/core_3d_picking.c) | core_3d_picking | ⭐️⭐️☆☆ | 1.3 | 4.0 | [Ray](https://github.com/raysan5) | -| 18 | [core_world_screen](core/core_world_screen.c) | core_world_screen | ⭐️⭐️☆☆ | 1.3 | 1.4 | [Ray](https://github.com/raysan5) | -| 19 | [core_custom_logging](core/core_custom_logging.c) | core_custom_logging | ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Pablo Marcos Oltra](https://github.com/pamarcos) | -| 20 | [core_window_flags](core/core_window_flags.c) | core_window_flags | ⭐️⭐️⭐️☆ | 3.5 | 3.5 | [Ray](https://github.com/raysan5) | -| 21 | [core_window_letterbox](core/core_window_letterbox.c) | core_window_letterbox | ⭐️⭐️☆☆ | 2.5 | 4.0 | [Anata](https://github.com/anatagawa) | -| 22 | [core_window_should_close](core/core_window_should_close.c) | core_window_should_close | ⭐️☆☆☆ | 4.2 | 4.2 | [Ray](https://github.com/raysan5) | -| 23 | [core_drop_files](core/core_drop_files.c) | core_drop_files | ⭐️⭐️☆☆ | 1.3 | 4.2 | [Ray](https://github.com/raysan5) | -| 24 | [core_random_values](core/core_random_values.c) | core_random_values | ⭐️☆☆☆ | 1.1 | 1.1 | [Ray](https://github.com/raysan5) | -| 25 | [core_storage_values](core/core_storage_values.c) | core_storage_values | ⭐️⭐️☆☆ | 1.4 | 4.2 | [Ray](https://github.com/raysan5) | -| 26 | [core_vr_simulator](core/core_vr_simulator.c) | core_vr_simulator | ⭐️⭐️⭐️☆ | 2.5 | 4.0 | [Ray](https://github.com/raysan5) | -| 27 | [core_loading_thread](core/core_loading_thread.c) | core_loading_thread | ⭐️⭐️⭐️☆ | 2.5 | 3.0 | [Ray](https://github.com/raysan5) | -| 28 | [core_scissor_test](core/core_scissor_test.c) | core_scissor_test | ⭐️☆☆☆ | 2.5 | 3.0 | [Chris Dill](https://github.com/MysteriousSpace) | -| 29 | [core_basic_screen_manager](core/core_basic_screen_manager.c) | core_basic_screen_manager | ⭐️☆☆☆ | 4.0 | 4.0 | [Ray](https://github.com/raysan5) | -| 30 | [core_custom_frame_control](core/core_custom_frame_control.c) | core_custom_frame_control | ⭐️⭐️⭐️⭐️ | 4.0 | 4.0 | [Ray](https://github.com/raysan5) | -| 31 | [core_smooth_pixelperfect](core/core_smooth_pixelperfect.c) | core_smooth_pixelperfect | ⭐️⭐️⭐️☆ | 3.7 | 4.0 | [Giancamillo Alessandroni](https://github.com/NotManyIdeasDev) | -| 32 | [core_random_sequence](core/core_random_sequence.c) | core_random_sequence | ⭐️☆☆☆ | 5.0 | 5.0 | [Dalton Overmyer](https://github.com/REDl3east) | -| 33 | [core_basic_window_web](core/core_basic_window_web.c) | core_basic_window_web | ⭐️☆☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) | -| 34 | [core_input_gestures_web](core/core_input_gestures_web.c) | core_input_gestures_web | ⭐️⭐️☆☆ | 4.6-dev | 4.6-dev | [ubkp](https://github.com/ubkp) | -| 35 | [core_automation_events](core/core_automation_events.c) | core_automation_events | ⭐️⭐️⭐️☆ | 5.0 | 5.0 | [Ray](https://github.com/raysan5) | -| 36 | [core_high_dpi](core/core_high_dpi.c) | core_high_dpi | ⭐️☆☆☆ | 5.0 | 5.0 | [Jonathan Marler](https://github.com/marler8997) | +Examples using raylib[core](../src/rcore.c) platform functionality like window creation, inputs, drawing modes and system functionality. -### category: shapes +| example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | +|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| +| [core_basic_window](core/core_basic_window.c) | core_basic_window | ⭐☆☆☆ | 1.0 | 1.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_input_keys](core/core_input_keys.c) | core_input_keys | ⭐☆☆☆ | 1.0 | 1.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_input_mouse](core/core_input_mouse.c) | core_input_mouse | ⭐☆☆☆ | 1.0 | 5.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_input_mouse_wheel](core/core_input_mouse_wheel.c) | core_input_mouse_wheel | ⭐☆☆☆ | 1.1 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_input_gamepad](core/core_input_gamepad.c) | core_input_gamepad | ⭐☆☆☆ | 1.1 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_input_multitouch](core/core_input_multitouch.c) | core_input_multitouch | ⭐☆☆☆ | 2.1 | 2.5 | [Berni](https://github.com/Berni8k) | +| [core_input_gestures](core/core_input_gestures.c) | core_input_gestures | ⭐⭐☆☆ | 1.4 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_input_virtual_controls](core/core_input_virtual_controls.c) | core_input_virtual_controls | ⭐⭐☆☆ | 5.0 | 5.0 | [oblerion](https://github.com/oblerion) | +| [core_2d_camera](core/core_2d_camera.c) | core_2d_camera | ⭐⭐☆☆ | 1.5 | 3.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_2d_camera_mouse_zoom](core/core_2d_camera_mouse_zoom.c) | core_2d_camera_mouse_zoom | ⭐⭐☆☆ | 4.2 | 4.2 | [Jeffery Myers](https://github.com/JeffM2501) | +| [core_2d_camera_platformer](core/core_2d_camera_platformer.c) | core_2d_camera_platformer | ⭐⭐⭐☆ | 2.5 | 3.0 | [arvyy](https://github.com/arvyy) | +| [core_2d_camera_split_screen](core/core_2d_camera_split_screen.c) | core_2d_camera_split_screen | ⭐⭐⭐⭐️ | 4.5 | 4.5 | [Gabriel dos Santos Sanches](https://github.com/gabrielssanches) | +| [core_3d_camera_mode](core/core_3d_camera_mode.c) | core_3d_camera_mode | ⭐☆☆☆ | 1.0 | 1.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_3d_camera_free](core/core_3d_camera_free.c) | core_3d_camera_free | ⭐☆☆☆ | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_3d_camera_first_person](core/core_3d_camera_first_person.c) | core_3d_camera_first_person | ⭐⭐☆☆ | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_3d_camera_split_screen](core/core_3d_camera_split_screen.c) | core_3d_camera_split_screen | ⭐⭐⭐☆ | 3.7 | 4.0 | [Jeffery Myers](https://github.com/JeffM2501) | +| [core_3d_picking](core/core_3d_picking.c) | core_3d_picking | ⭐⭐☆☆ | 1.3 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_world_screen](core/core_world_screen.c) | core_world_screen | ⭐⭐☆☆ | 1.3 | 1.4 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_custom_logging](core/core_custom_logging.c) | core_custom_logging | ⭐⭐⭐☆ | 2.5 | 2.5 | [Pablo Marcos Oltra](https://github.com/pamarcos) | +| [core_window_flags](core/core_window_flags.c) | core_window_flags | ⭐⭐⭐☆ | 3.5 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_window_letterbox](core/core_window_letterbox.c) | core_window_letterbox | ⭐⭐☆☆ | 2.5 | 4.0 | [Anata](https://github.com/anatagawa) | +| [core_window_should_close](core/core_window_should_close.c) | core_window_should_close | ⭐☆☆☆ | 4.2 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_drop_files](core/core_drop_files.c) | core_drop_files | ⭐⭐☆☆ | 1.3 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_random_values](core/core_random_values.c) | core_random_values | ⭐☆☆☆ | 1.1 | 1.1 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_storage_values](core/core_storage_values.c) | core_storage_values | ⭐⭐☆☆ | 1.4 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_vr_simulator](core/core_vr_simulator.c) | core_vr_simulator | ⭐⭐⭐☆ | 2.5 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_loading_thread](core/core_loading_thread.c) | core_loading_thread | ⭐⭐⭐☆ | 2.5 | 3.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_scissor_test](core/core_scissor_test.c) | core_scissor_test | ⭐☆☆☆ | 2.5 | 3.0 | [Chris Dill](https://github.com/MysteriousSpace) | +| [core_basic_screen_manager](core/core_basic_screen_manager.c) | core_basic_screen_manager | ⭐☆☆☆ | 4.0 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_custom_frame_control](core/core_custom_frame_control.c) | core_custom_frame_control | ⭐⭐⭐⭐️ | 4.0 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_smooth_pixelperfect](core/core_smooth_pixelperfect.c) | core_smooth_pixelperfect | ⭐⭐⭐☆ | 3.7 | 4.0 | [Giancamillo Alessandroni](https://github.com/NotManyIdeasDev) | +| [core_random_sequence](core/core_random_sequence.c) | core_random_sequence | ⭐☆☆☆ | 5.0 | 5.0 | [Dalton Overmyer](https://github.com/REDl3east) | +| [core_basic_window_web](core/core_basic_window_web.c) | core_basic_window_web | ⭐☆☆☆ | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_input_gestures_web](core/core_input_gestures_web.c) | core_input_gestures_web | ⭐⭐☆☆ | 4.6 | 4.6 | [ubkp](https://github.com/ubkp) | +| [core_automation_events](core/core_automation_events.c) | core_automation_events | ⭐⭐⭐☆ | 5.0 | 5.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_high_dpi](core/core_high_dpi.c) | core_high_dpi | ⭐☆☆☆ | 5.0 | 5.0 | [Jonathan Marler](https://github.com/marler8997) | + +### category: shapes [20] Examples using raylib shapes drawing functionality, provided by raylib [shapes](../src/rshapes.c) module. -| ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | -|----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| 36 | [shapes_basic_shapes](shapes/shapes_basic_shapes.c) | shapes_basic_shapes | ⭐️☆☆☆ | 1.0 | 4.2 | [Ray](https://github.com/raysan5) | -| 37 | [shapes_bouncing_ball](shapes/shapes_bouncing_ball.c) | shapes_bouncing_ball | ⭐️☆☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) | -| 38 | [shapes_colors_palette](shapes/shapes_colors_palette.c) | shapes_colors_palette | ⭐️⭐️☆☆ | 1.0 | 2.5 | [Ray](https://github.com/raysan5) | -| 39 | [shapes_logo_raylib](shapes/shapes_logo_raylib.c) | shapes_logo_raylib | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | -| 40 | [shapes_logo_raylib_anim](shapes/shapes_logo_raylib_anim.c) | shapes_logo_raylib_anim | ⭐️⭐️☆☆ | 2.5 | 4.0 | [Ray](https://github.com/raysan5) | -| 41 | [shapes_rectangle_scaling](shapes/shapes_rectangle_scaling.c) | shapes_rectangle_scaling | ⭐️⭐️☆☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) | -| 42 | [shapes_lines_bezier](shapes/shapes_lines_bezier.c) | shapes_lines_bezier | ⭐️☆☆☆ | 1.7 | 1.7 | [Ray](https://github.com/raysan5) | -| 43 | [shapes_collision_area](shapes/shapes_collision_area.c) | shapes_collision_area | ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) | -| 44 | [shapes_following_eyes](shapes/shapes_following_eyes.c) | shapes_following_eyes | ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) | -| 45 | [shapes_easings_ball_anim](shapes/shapes_easings_ball_anim.c) | shapes_easings_ball_anim | ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) | -| 46 | [shapes_easings_box_anim](shapes/shapes_easings_box_anim.c) | shapes_easings_box_anim | ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) | -| 47 | [shapes_easings_rectangle_array](shapes/shapes_easings_rectangle_array.c) | shapes_easings_rectangle_array | ⭐️⭐️⭐️☆ | 2.0 | 2.5 | [Ray](https://github.com/raysan5) | -| 48 | [shapes_draw_ring](shapes/shapes_draw_ring.c) | shapes_draw_ring | ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) | -| 49 | [shapes_draw_circle_sector](shapes/shapes_draw_circle_sector.c) | shapes_draw_circle_sector | ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) | -| 50 | [shapes_draw_rectangle_rounded](shapes/shapes_draw_rectangle_rounded.c) | shapes_draw_rectangle_rounded | ⭐️⭐️⭐️☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) | -| 51 | [shapes_top_down_lights](shapes/shapes_top_down_lights.c) | shapes_top_down_lights | ⭐️⭐️⭐️⭐️ | 4.2 | 4.2 | [Jeffery Myers](https://github.com/JeffM2501) | -| 52 | [shapes_rectangle_advanced](shapes/shapes_rectangle_advanced.c) | shapes_rectangle_advanced | ⭐️⭐️⭐️⭐️ | 5.5 | 5.5 | [Everton Jr.](https://github.com/evertonse) | -| 53 | [shapes_splines_drawing](shapes/shapes_splines_drawing.c) | shapes_splines_drawing | ⭐️⭐️⭐️☆ | 5.0 | 5.0 | [Ray](https://github.com/raysan5) | -| 54 | [shapes_digital_clock](shapes/shapes_digital_clock.c) | shapes_digital_clock | ⭐️⭐️☆☆ | 5.5 | 5.5 | [Hamza RAHAL](https://github.com/rhmz-rhl) | -| 55 | [shapes_double_pendulum](shapes/shapes_double_pendulum.c) | shapes_double_pendulum | ⭐️⭐️☆☆ | 5.5 | 5.5 | [JoeCheong](https://github.com/Joecheong2006) | +| example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | +|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| +| [shapes_basic_shapes](shapes/shapes_basic_shapes.c) | shapes_basic_shapes | ⭐☆☆☆ | 1.0 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | +| [shapes_bouncing_ball](shapes/shapes_bouncing_ball.c) | shapes_bouncing_ball | ⭐☆☆☆ | 2.5 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [shapes_colors_palette](shapes/shapes_colors_palette.c) | shapes_colors_palette | ⭐⭐☆☆ | 1.0 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [shapes_logo_raylib](shapes/shapes_logo_raylib.c) | shapes_logo_raylib | ⭐☆☆☆ | 1.0 | 1.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [shapes_logo_raylib_anim](shapes/shapes_logo_raylib_anim.c) | shapes_logo_raylib_anim | ⭐⭐☆☆ | 2.5 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [shapes_rectangle_scaling](shapes/shapes_rectangle_scaling.c) | shapes_rectangle_scaling | ⭐⭐☆☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) | +| [shapes_lines_bezier](shapes/shapes_lines_bezier.c) | shapes_lines_bezier | ⭐☆☆☆ | 1.7 | 1.7 | [Ramon Santamaria](https://github.com/raysan5) | +| [shapes_collision_area](shapes/shapes_collision_area.c) | shapes_collision_area | ⭐⭐☆☆ | 2.5 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [shapes_following_eyes](shapes/shapes_following_eyes.c) | shapes_following_eyes | ⭐⭐☆☆ | 2.5 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [shapes_easings_ball_anim](shapes/shapes_easings_ball_anim.c) | shapes_easings_ball_anim | ⭐⭐☆☆ | 2.5 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [shapes_easings_box_anim](shapes/shapes_easings_box_anim.c) | shapes_easings_box_anim | ⭐⭐☆☆ | 2.5 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [shapes_easings_rectangle_array](shapes/shapes_easings_rectangle_array.c) | shapes_easings_rectangle_array | ⭐⭐⭐☆ | 2.0 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [shapes_draw_ring](shapes/shapes_draw_ring.c) | shapes_draw_ring | ⭐⭐⭐☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) | +| [shapes_draw_circle_sector](shapes/shapes_draw_circle_sector.c) | shapes_draw_circle_sector | ⭐⭐⭐☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) | +| [shapes_draw_rectangle_rounded](shapes/shapes_draw_rectangle_rounded.c) | shapes_draw_rectangle_rounded | ⭐⭐⭐☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) | +| [shapes_top_down_lights](shapes/shapes_top_down_lights.c) | shapes_top_down_lights | ⭐⭐⭐⭐️ | 4.2 | 4.2 | [Jeffery Myers](https://github.com/JeffM2501) | +| [shapes_rectangle_advanced](shapes/shapes_rectangle_advanced.c) | shapes_rectangle_advanced | ⭐⭐⭐⭐️ | 5.5 | 5.5 | [Everton Jr.](https://github.com/evertonse) | +| [shapes_splines_drawing](shapes/shapes_splines_drawing.c) | shapes_splines_drawing | ⭐⭐⭐☆ | 5.0 | 5.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [shapes_digital_clock](shapes/shapes_digital_clock.c) | shapes_digital_clock | ⭐⭐☆☆ | 5.5 | 5.5 | [Hamza RAHAL](https://github.com/rhmz-rhl) | +| [shapes_double_pendulum](shapes/shapes_double_pendulum.c) | shapes_double_pendulum | ⭐⭐☆☆ | 5.5 | 5.5 | [JoeCheong](https://github.com/Joecheong2006) | -### category: textures +### category: textures [26] Examples using raylib textures functionality, including image/textures loading/generation and drawing, provided by raylib [textures](../src/rtextures.c) module. -| ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | -|----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| 56 | [textures_logo_raylib](textures/textures_logo_raylib.c) | textures_logo_raylib | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | -| 57 | [textures_srcrec_dstrec](textures/textures_srcrec_dstrec.c) | textures_srcrec_dstrec | ⭐️⭐️⭐️☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) | -| 58 | [textures_image_drawing](textures/textures_image_drawing.c) | textures_image_drawing | ⭐️⭐️☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) | -| 59 | [textures_image_generation](textures/textures_image_generation.c) | textures_image_generation | ⭐️⭐️☆☆ | 1.8 | 1.8 | [Wilhem Barbier](https://github.com/nounoursheureux) | -| 60 | [textures_image_loading](textures/textures_image_loading.c) | textures_image_loading | ⭐️☆☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) | -| 61 | [textures_image_processing](textures/textures_image_processing.c) | textures_image_processing | ⭐️⭐️⭐️☆ | 1.4 | 3.5 | [Ray](https://github.com/raysan5) | -| 62 | [textures_image_text](textures/textures_image_text.c) | textures_image_text | ⭐️⭐️☆☆ | 1.8 | 4.0 | [Ray](https://github.com/raysan5) | -| 63 | [textures_to_image](textures/textures_to_image.c) | textures_to_image | ⭐️☆☆☆ | 1.3 | 4.0 | [Ray](https://github.com/raysan5) | -| 64 | [textures_raw_data](textures/textures_raw_data.c) | textures_raw_data | ⭐️⭐️⭐️☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) | -| 65 | [textures_particles_blending](textures/textures_particles_blending.c) | textures_particles_blending | ⭐️☆☆☆ | 1.7 | 3.5 | [Ray](https://github.com/raysan5) | -| 66 | [textures_npatch_drawing](textures/textures_npatch_drawing.c) | textures_npatch_drawing | ⭐️⭐️⭐️☆ | 2.0 | 2.5 | [Jorge A. Gomes](https://github.com/overdev) | -| 67 | [textures_background_scrolling](textures/textures_background_scrolling.c) | textures_background_scrolling | ⭐️☆☆☆ | 2.0 | 2.5 | [Ray](https://github.com/raysan5) | -| 68 | [textures_sprite_anim](textures/textures_sprite_anim.c) | textures_sprite_anim | ⭐️⭐️☆☆ | 1.3 | 1.3 | [Ray](https://github.com/raysan5) | -| 69 | [textures_sprite_button](textures/textures_sprite_button.c) | textures_sprite_button | ⭐️⭐️☆☆ | 2.5 | 2.5 | [Ray](https://github.com/raysan5) | -| 70 | [textures_sprite_explosion](textures/textures_sprite_explosion.c) | textures_sprite_explosion | ⭐️⭐️☆☆ | 2.5 | 3.5 | [Ray](https://github.com/raysan5) | -| 71 | [textures_bunnymark](textures/textures_bunnymark.c) | textures_bunnymark | ⭐️⭐️⭐️☆ | 1.6 | 2.5 | [Ray](https://github.com/raysan5) | -| 72 | [textures_mouse_painting](textures/textures_mouse_painting.c) | textures_mouse_painting | ⭐️⭐️⭐️☆ | 3.0 | 3.0 | [Chris Dill](https://github.com/MysteriousSpace) | -| 73 | [textures_blend_modes](textures/textures_blend_modes.c) | textures_blend_modes | ⭐️☆☆☆ | 3.5 | 3.5 | [Karlo Licudine](https://github.com/accidentalrebel) | -| 74 | [textures_draw_tiled](textures/textures_draw_tiled.c) | textures_draw_tiled | ⭐️⭐️⭐️☆ | 3.0 | 4.2 | [Vlad Adrian](https://github.com/demizdor) | -| 75 | [textures_polygon](textures/textures_polygon.c) | textures_polygon | ⭐️☆☆☆ | 3.7 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | -| 76 | [textures_fog_of_war](textures/textures_fog_of_war.c) | textures_fog_of_war | ⭐️⭐️⭐️☆ | 4.2 | 4.2 | [Ray](https://github.com/raysan5) | -| 77 | [textures_gif_player](textures/textures_gif_player.c) | textures_gif_player | ⭐️⭐️⭐️☆ | 4.2 | 4.2 | [Ray](https://github.com/raysan5) | -| 78 | [textures_image_kernel](textures/textures_image_kernel.c) | textures_image_kernel | ⭐️⭐️⭐️⭐️ | 1.3 | 1.3 | [Karim Salem](https://github.com/kimo-s) | -| 79 | [textures_image_channel](textures/textures_image_channel.c) | textures_image_channel | ⭐️⭐️☆☆ | 5.1-dev | 5.1-dev | [Bruno Cabral](https://github.com/brccabral) | -| 80 | [textures_image_rotate](textures/textures_image_rotate.c) | textures_image_rotate | ⭐️⭐️☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | -| 81 | [textures_textured_curve](textures/textures_textured_curve.c) | textures_textured_curve | ⭐️⭐️⭐️☆ | 4.5 | 4.5 | [Jeffery Myers](https://github.com/JeffM2501) | +| example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | +|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| +| [textures_logo_raylib](textures/textures_logo_raylib.c) | textures_logo_raylib | ⭐☆☆☆ | 1.0 | 1.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_srcrec_dstrec](textures/textures_srcrec_dstrec.c) | textures_srcrec_dstrec | ⭐⭐⭐☆ | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_image_drawing](textures/textures_image_drawing.c) | textures_image_drawing | ⭐⭐☆☆ | 1.4 | 1.4 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_image_generation](textures/textures_image_generation.c) | textures_image_generation | ⭐⭐☆☆ | 1.8 | 1.8 | [Wilhem Barbier](https://github.com/nounoursheureux) | +| [textures_image_loading](textures/textures_image_loading.c) | textures_image_loading | ⭐☆☆☆ | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_image_processing](textures/textures_image_processing.c) | textures_image_processing | ⭐⭐⭐☆ | 1.4 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_image_text](textures/textures_image_text.c) | textures_image_text | ⭐⭐☆☆ | 1.8 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_to_image](textures/textures_to_image.c) | textures_to_image | ⭐☆☆☆ | 1.3 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_raw_data](textures/textures_raw_data.c) | textures_raw_data | ⭐⭐⭐☆ | 1.3 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_particles_blending](textures/textures_particles_blending.c) | textures_particles_blending | ⭐☆☆☆ | 1.7 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_npatch_drawing](textures/textures_npatch_drawing.c) | textures_npatch_drawing | ⭐⭐⭐☆ | 2.0 | 2.5 | [Jorge A. Gomes](https://github.com/overdev) | +| [textures_background_scrolling](textures/textures_background_scrolling.c) | textures_background_scrolling | ⭐☆☆☆ | 2.0 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_sprite_anim](textures/textures_sprite_anim.c) | textures_sprite_anim | ⭐⭐☆☆ | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_sprite_button](textures/textures_sprite_button.c) | textures_sprite_button | ⭐⭐☆☆ | 2.5 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_sprite_explosion](textures/textures_sprite_explosion.c) | textures_sprite_explosion | ⭐⭐☆☆ | 2.5 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_bunnymark](textures/textures_bunnymark.c) | textures_bunnymark | ⭐⭐⭐☆ | 1.6 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_mouse_painting](textures/textures_mouse_painting.c) | textures_mouse_painting | ⭐⭐⭐☆ | 3.0 | 3.0 | [Chris Dill](https://github.com/MysteriousSpace) | +| [textures_blend_modes](textures/textures_blend_modes.c) | textures_blend_modes | ⭐☆☆☆ | 3.5 | 3.5 | [Karlo Licudine](https://github.com/accidentalrebel) | +| [textures_draw_tiled](textures/textures_draw_tiled.c) | textures_draw_tiled | ⭐⭐⭐☆ | 3.0 | 4.2 | [Vlad Adrian](https://github.com/demizdor) | +| [textures_polygon](textures/textures_polygon.c) | textures_polygon | ⭐☆☆☆ | 3.7 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | +| [textures_fog_of_war](textures/textures_fog_of_war.c) | textures_fog_of_war | ⭐⭐⭐☆ | 4.2 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_gif_player](textures/textures_gif_player.c) | textures_gif_player | ⭐⭐⭐☆ | 4.2 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_image_kernel](textures/textures_image_kernel.c) | textures_image_kernel | ⭐⭐⭐⭐️ | 1.3 | 1.3 | [Karim Salem](https://github.com/kimo-s) | +| [textures_image_channel](textures/textures_image_channel.c) | textures_image_channel | ⭐⭐☆☆ | 5.1 | 5.1 | [Bruno Cabral](https://github.com/brccabral) | +| [textures_image_rotate](textures/textures_image_rotate.c) | textures_image_rotate | ⭐⭐☆☆ | 1.0 | 1.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [textures_textured_curve](textures/textures_textured_curve.c) | textures_textured_curve | ⭐⭐⭐☆ | 4.5 | 4.5 | [Jeffery Myers](https://github.com/JeffM2501) | -### category: text +### category: text [12] Examples using raylib text functionality, including sprite fonts loading/generation and text drawing, provided by raylib [text](../src/rtext.c) module. -| ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | -|----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| 82 | [text_raylib_fonts](text/text_raylib_fonts.c) | text_raylib_fonts | ⭐️☆☆☆ | 1.7 | 3.7 | [Ray](https://github.com/raysan5) | -| 83 | [text_font_spritefont](text/text_font_spritefont.c) | text_font_spritefont | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | -| 84 | [text_font_filters](text/text_font_filters.c) | text_font_filters | ⭐️⭐️☆☆ | 1.3 | 4.2 | [Ray](https://github.com/raysan5) | -| 85 | [text_font_loading](text/text_font_loading.c) | text_font_loading | ⭐️☆☆☆ | 1.4 | 3.0 | [Ray](https://github.com/raysan5) | -| 86 | [text_font_sdf](text/text_font_sdf.c) | text_font_sdf | ⭐️⭐️⭐️☆ | 1.3 | 4.0 | [Ray](https://github.com/raysan5) | -| 87 | [text_format_text](text/text_format_text.c) | text_format_text | ⭐️☆☆☆ | 1.1 | 3.0 | [Ray](https://github.com/raysan5) | -| 88 | [text_input_box](text/text_input_box.c) | text_input_box | ⭐️⭐️☆☆ | 1.7 | 3.5 | [Ray](https://github.com/raysan5) | -| 89 | [text_writing_anim](text/text_writing_anim.c) | text_writing_anim | ⭐️⭐️☆☆ | 1.4 | 1.4 | [Ray](https://github.com/raysan5) | -| 90 | [text_rectangle_bounds](text/text_rectangle_bounds.c) | text_rectangle_bounds | ⭐️⭐️⭐️⭐️ | 2.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | -| 91 | [text_unicode](text/text_unicode.c) | text_unicode | ⭐️⭐️⭐️⭐️ | 2.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | -| 92 | [text_draw_3d](text/text_draw_3d.c) | text_draw_3d | ⭐️⭐️⭐️⭐️ | 3.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | -| 93 | [text_codepoints_loading](text/text_codepoints_loading.c) | text_codepoints_loading | ⭐️⭐️⭐️☆ | 4.2 | 4.2 | [Ray](https://github.com/raysan5) | +| example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | +|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| +| [text_raylib_fonts](text/text_raylib_fonts.c) | text_raylib_fonts | ⭐☆☆☆ | 1.7 | 3.7 | [Ramon Santamaria](https://github.com/raysan5) | +| [text_font_spritefont](text/text_font_spritefont.c) | text_font_spritefont | ⭐☆☆☆ | 1.0 | 1.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [text_font_filters](text/text_font_filters.c) | text_font_filters | ⭐⭐☆☆ | 1.3 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | +| [text_font_loading](text/text_font_loading.c) | text_font_loading | ⭐☆☆☆ | 1.4 | 3.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [text_font_sdf](text/text_font_sdf.c) | text_font_sdf | ⭐⭐⭐☆ | 1.3 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [text_format_text](text/text_format_text.c) | text_format_text | ⭐☆☆☆ | 1.1 | 3.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [text_input_box](text/text_input_box.c) | text_input_box | ⭐⭐☆☆ | 1.7 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [text_writing_anim](text/text_writing_anim.c) | text_writing_anim | ⭐⭐☆☆ | 1.4 | 1.4 | [Ramon Santamaria](https://github.com/raysan5) | +| [text_rectangle_bounds](text/text_rectangle_bounds.c) | text_rectangle_bounds | ⭐⭐⭐⭐️ | 2.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | +| [text_unicode](text/text_unicode.c) | text_unicode | ⭐⭐⭐⭐️ | 2.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | +| [text_draw_3d](text/text_draw_3d.c) | text_draw_3d | ⭐⭐⭐⭐️ | 3.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | +| [text_codepoints_loading](text/text_codepoints_loading.c) | text_codepoints_loading | ⭐⭐⭐☆ | 4.2 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | -### category: models +### category: models [23] Examples using raylib models functionality, including models loading/generation and drawing, provided by raylib [models](../src/rmodels.c) module. -| ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | -|----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| 94 | [models_animation](models/models_animation.c) | models_animation | ⭐️⭐️☆☆ | 2.5 | 3.5 | [Culacant](https://github.com/culacant) | -| 95 | [models_billboard](models/models_billboard.c) | models_billboard | ⭐️⭐️⭐️☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) | -| 96 | [models_box_collisions](models/models_box_collisions.c) | models_box_collisions | ⭐️☆☆☆ | 1.3 | 3.5 | [Ray](https://github.com/raysan5) | -| 97 | [models_cubicmap](models/models_cubicmap.c) | models_cubicmap | ⭐️⭐️☆☆ | 1.8 | 3.5 | [Ray](https://github.com/raysan5) | -| 98 | [models_first_person_maze](models/models_first_person_maze.c) | models_first_person_maze | ⭐️⭐️☆☆ | 2.5 | 3.5 | [Ray](https://github.com/raysan5) | -| 99 | [models_geometric_shapes](models/models_geometric_shapes.c) | models_geometric_shapes | ⭐️☆☆☆ | 1.0 | 3.5 | [Ray](https://github.com/raysan5) | -| 100 | [models_mesh_generation](models/models_mesh_generation.c) | models_mesh_generation | ⭐️⭐️☆☆ | 1.8 | 4.0 | [Ray](https://github.com/raysan5) | -| 101 | [models_mesh_picking](models/models_mesh_picking.c) | models_mesh_picking | ⭐️⭐️⭐️☆ | 1.7 | 4.0 | [Joel Davis](https://github.com/joeld42) | -| 102 | [models_loading](models/models_loading.c) | models_loading | ⭐️☆☆☆ | 2.0 | 4.2 | [Ray](https://github.com/raysan5) | -| 103 | [models_loading_gltf](models/models_loading_gltf.c) | models_loading_gltf | ⭐️☆☆☆ | 3.7 | 4.2 | [Ray](https://github.com/raysan5) | -| 104 | [models_loading_vox](models/models_loading_vox.c) | models_loading_vox | ⭐️☆☆☆ | 4.0 | 4.0 | [Johann Nadalutti](https://github.com/procfxgen) | -| 105 | [models_loading_m3d](models/models_loading_m3d.c) | models_loading_m3d | ⭐️⭐️☆☆ | 4.5 | 4.5 | [bzt](https://bztsrc.gitlab.io/model3d) | -| 106 | [models_orthographic_projection](models/models_orthographic_projection.c) | models_orthographic_projection | ⭐️☆☆☆ | 2.0 | 3.7 | [Max Danielsson](https://github.com/autious) | -| 107 | [models_point_rendering](models/models_point_rendering.c) | models_point_rendering | ⭐️⭐️⭐️☆ | 5.0 | 5.0 | [Reese Gallagher](https://github.com/satchelfrost) | -| 108 | [models_rlgl_solar_system](models/models_rlgl_solar_system.c) | models_rlgl_solar_system | ⭐️⭐️⭐️⭐️ | 2.5 | 4.0 | [Ray](https://github.com/raysan5) | -| 109 | [models_yaw_pitch_roll](models/models_yaw_pitch_roll.c) | models_yaw_pitch_roll | ⭐️⭐️☆☆ | 1.8 | 4.0 | [Berni](https://github.com/Berni8k) | -| 110 | [models_waving_cubes](models/models_waving_cubes.c) | models_waving_cubes | ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [Codecat](https://github.com/codecat) | -| 111 | [models_heightmap](models/models_heightmap.c) | models_heightmap | ⭐️☆☆☆ | 1.8 | 3.5 | [Ray](https://github.com/raysan5) | -| 112 | [models_skybox](models/models_skybox.c) | models_skybox | ⭐️⭐️☆☆ | 1.8 | 4.0 | [Ray](https://github.com/raysan5) | -| 113 | [models_draw_cube_texture](models/models_draw_cube_texture.c) | models_draw_cube_texture | ⭐️⭐️☆☆ | 4.5 | 4.5 | [Ray](https://github.com/raysan5) | -| 114 | [models_gpu_skinning](models/models_gpu_skinning.c) | models_gpu_skinning | ⭐️⭐️⭐️☆ | 4.5 | 4.5 | [Daniel Holden](https://github.com/orangeduck) | -| 115 | [models_bone_socket](models/models_bone_socket.c) | models_bone_socket | ⭐️⭐️⭐️⭐️ | 4.5 | 4.5 | [iP](https://github.com/ipzaur) | -| 116 | [models_tesseract_view](models/models_tesseract_view.c) | models_tesseract_view | ⭐️⭐️☆☆ | 5.6-dev | 5.6-dev | [Timothy van der Valk](https://github.com/arceryz) | +| example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | +|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| +| [models_animation](models/models_animation.c) | models_animation | ⭐⭐☆☆ | 2.5 | 3.5 | [Culacant](https://github.com/culacant) | +| [models_billboard](models/models_billboard.c) | models_billboard | ⭐⭐⭐☆ | 1.3 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [models_box_collisions](models/models_box_collisions.c) | models_box_collisions | ⭐☆☆☆ | 1.3 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [models_cubicmap](models/models_cubicmap.c) | models_cubicmap | ⭐⭐☆☆ | 1.8 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [models_first_person_maze](models/models_first_person_maze.c) | models_first_person_maze | ⭐⭐☆☆ | 2.5 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [models_geometric_shapes](models/models_geometric_shapes.c) | models_geometric_shapes | ⭐☆☆☆ | 1.0 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [models_mesh_generation](models/models_mesh_generation.c) | models_mesh_generation | ⭐⭐☆☆ | 1.8 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [models_mesh_picking](models/models_mesh_picking.c) | models_mesh_picking | ⭐⭐⭐☆ | 1.7 | 4.0 | [Joel Davis](https://github.com/joeld42) | +| [models_loading](models/models_loading.c) | models_loading | ⭐☆☆☆ | 2.0 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | +| [models_loading_gltf](models/models_loading_gltf.c) | models_loading_gltf | ⭐☆☆☆ | 3.7 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | +| [models_loading_vox](models/models_loading_vox.c) | models_loading_vox | ⭐☆☆☆ | 4.0 | 4.0 | [Johann Nadalutti](https://github.com/procfxgen) | +| [models_loading_m3d](models/models_loading_m3d.c) | models_loading_m3d | ⭐⭐☆☆ | 4.5 | 4.5 | [bzt](https://github.com/model3d) | +| [models_orthographic_projection](models/models_orthographic_projection.c) | models_orthographic_projection | ⭐☆☆☆ | 2.0 | 3.7 | [Max Danielsson](https://github.com/autious) | +| [models_point_rendering](models/models_point_rendering.c) | models_point_rendering | ⭐⭐⭐☆ | 5.0 | 5.0 | [Reese Gallagher](https://github.com/satchelfrost) | +| [models_rlgl_solar_system](models/models_rlgl_solar_system.c) | models_rlgl_solar_system | ⭐⭐⭐⭐️ | 2.5 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [models_yaw_pitch_roll](models/models_yaw_pitch_roll.c) | models_yaw_pitch_roll | ⭐⭐☆☆ | 1.8 | 4.0 | [Berni](https://github.com/Berni8k) | +| [models_waving_cubes](models/models_waving_cubes.c) | models_waving_cubes | ⭐⭐⭐☆ | 2.5 | 3.7 | [Codecat](https://github.com/codecat) | +| [models_heightmap](models/models_heightmap.c) | models_heightmap | ⭐☆☆☆ | 1.8 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [models_skybox](models/models_skybox.c) | models_skybox | ⭐⭐☆☆ | 1.8 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [models_draw_cube_texture](models/models_draw_cube_texture.c) | models_draw_cube_texture | ⭐⭐☆☆ | 4.5 | 4.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [models_gpu_skinning](models/models_gpu_skinning.c) | models_gpu_skinning | ⭐⭐⭐☆ | 4.5 | 4.5 | [Daniel Holden](https://github.com/orangeduck) | +| [models_bone_socket](models/models_bone_socket.c) | models_bone_socket | ⭐⭐⭐⭐️ | 4.5 | 4.5 | [iP](https://github.com/ipzaur) | +| [models_tesseract_view](models/models_tesseract_view.c) | models_tesseract_view | ⭐⭐☆☆ | 5.6 | 5.6 | [Timothy van der Valk](https://github.com/arceryz) | -### category: shaders +### category: shaders [28] Examples using raylib shaders functionality, including shaders loading, parameters configuration and drawing using them (model shaders and postprocessing shaders). This functionality is directly provided by raylib [rlgl](../src/rlgl.c) module. -| ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | -|----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| 117 | [shaders_basic_lighting](shaders/shaders_basic_lighting.c) | shaders_basic_lighting | ⭐️⭐️⭐️⭐️ | 3.0 | 4.2 | [Chris Camacho](https://github.com/chriscamacho) | -| 118 | [shaders_model_shader](shaders/shaders_model_shader.c) | shaders_model_shader | ⭐️⭐️☆☆ | 1.3 | 3.7 | [Ray](https://github.com/raysan5) | -| 119 | [shaders_shapes_textures](shaders/shaders_shapes_textures.c) | shaders_shapes_textures | ⭐️⭐️☆☆ | 1.7 | 3.7 | [Ray](https://github.com/raysan5) | -| 120 | [shaders_custom_uniform](shaders/shaders_custom_uniform.c) | shaders_custom_uniform | ⭐️⭐️☆☆ | 1.3 | 4.0 | [Ray](https://github.com/raysan5) | -| 121 | [shaders_postprocessing](shaders/shaders_postprocessing.c) | shaders_postprocessing | ⭐️⭐️⭐️☆ | 1.3 | 4.0 | [Ray](https://github.com/raysan5) | -| 122 | [shaders_palette_switch](shaders/shaders_palette_switch.c) | shaders_palette_switch | ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [Marco Lizza](https://github.com/MarcoLizza) | -| 123 | [shaders_raymarching](shaders/shaders_raymarching.c) | shaders_raymarching | ⭐️⭐️⭐️⭐️ | 2.0 | 4.2 | [Ray](https://github.com/raysan5) | -| 124 | [shaders_texture_drawing](shaders/shaders_texture_drawing.c) | shaders_texture_drawing | ⭐️⭐️☆☆ | 2.0 | 3.7 | [Michał Ciesielski](https://github.com/ciessielski) | -| 125 | [shaders_texture_outline](shaders/shaders_texture_outline.c) | shaders_texture_outline | ⭐️⭐️⭐️☆ | 4.0 | 4.0 | [Samuel Skiff](https://github.com/GoldenThumbs) | -| 126 | [shaders_texture_waves](shaders/shaders_texture_waves.c) | shaders_texture_waves | ⭐️⭐️☆☆ | 2.5 | 3.7 | [Anata](https://github.com/anatagawa) | -| 127 | [shaders_julia_set](shaders/shaders_julia_set.c) | shaders_julia_set | ⭐️⭐️⭐️☆ | 2.5 | 4.0 | [Josh Colclough](https://github.com/joshcol9232) | -| 128 | [shaders_eratosthenes](shaders/shaders_eratosthenes.c) | shaders_eratosthenes | ⭐️⭐️⭐️☆ | 2.5 | 4.0 | [ProfJski](https://github.com/ProfJski) | -| 129 | [shaders_fog](shaders/shaders_fog.c) | shaders_fog | ⭐️⭐️⭐️☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | -| 130 | [shaders_simple_mask](shaders/shaders_simple_mask.c) | shaders_simple_mask | ⭐️⭐️☆☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | -| 131 | [shaders_hot_reloading](shaders/shaders_hot_reloading.c) | shaders_hot_reloading | ⭐️⭐️⭐️☆ | 3.0 | 3.5 | [Ray](https://github.com/raysan5) | -| 132 | [shaders_mesh_instancing](shaders/shaders_mesh_instancing.c) | shaders_mesh_instancing | ⭐️⭐️⭐️⭐️ | 3.7 | 4.2 | [seanpringle](https://github.com/seanpringle) | -| 133 | [shaders_multi_sample2d](shaders/shaders_multi_sample2d.c) | shaders_multi_sample2d | ⭐️⭐️☆☆ | 3.5 | 3.5 | [Ray](https://github.com/raysan5) | -| 134 | [shaders_spotlight](shaders/shaders_spotlight.c) | shaders_spotlight | ⭐️⭐️☆☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | -| 135 | [shaders_deferred_render](shaders/shaders_deferred_render.c) | shaders_deferred_render | ⭐️⭐️⭐️⭐️ | 4.5 | 4.5 | [Justin Andreas Lacoste](https://github.com/27justin) | -| 136 | [shaders_hybrid_render](shaders/shaders_hybrid_render.c) | shaders_hybrid_render | ⭐️⭐️⭐️⭐️ | 4.2 | 4.2 | [Buğra Alptekin Sarı](https://github.com/BugraAlptekinSari) | -| 137 | [shaders_texture_tiling](shaders/shaders_texture_tiling.c) | shaders_texture_tiling | ⭐️⭐️☆☆ | 4.5 | 4.5 | [Luis Almeida](https://github.com/luis605) | -| 138 | [shaders_shadowmap](shaders/shaders_shadowmap.c) | shaders_shadowmap | ⭐️⭐️⭐️⭐️ | 5.0 | 5.0 | [TheManTheMythTheGameDev](https://github.com/TheManTheMythTheGameDev) | -| 139 | [shaders_vertex_displacement](shaders/shaders_vertex_displacement.c) | shaders_vertex_displacement | ⭐️⭐️⭐️☆ | 5.0 | 4.5 | [Alex ZH](https://github.com/ZzzhHe) | -| 140 | [shaders_write_depth](shaders/shaders_write_depth.c) | shaders_write_depth | ⭐️⭐️☆☆ | 4.2 | 4.2 | [Buğra Alptekin Sarı](https://github.com/BugraAlptekinSari) | -| 141 | [shaders_basic_pbr](shaders/shaders_basic_pbr.c) | shaders_basic_pbr | ⭐️⭐️⭐️⭐️ | 5.0 | 5.1-dev | [Afan OLOVCIC](https://github.com/_DevDad) | -| 142 | [shaders_lightmap](shaders/shaders_lightmap.c) | shaders_lightmap | ⭐️⭐️⭐️☆ | 4.5 | 4.5 | [Jussi Viitala](https://github.com/nullstare) | -| 143 | [shaders_rounded_rectangle](shaders/shaders_rounded_rectangle.c) | shaders_rounded_rectangle | ⭐️⭐️⭐️☆ | 5.5 | 5.5 | [Anstro Pleuton](https://github.com/anstropleuton) | -| 144 | [shaders_view_depth](shaders/shaders_view_depth.c) | shaders_view_depth | ⭐️⭐️⭐️☆ | 5.6-dev | 5.6-dev | [Luís Almeida](https://github.com/luis605) | +| example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | +|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| +| [shaders_basic_lighting](shaders/shaders_basic_lighting.c) | shaders_basic_lighting | ⭐⭐⭐⭐️ | 3.0 | 4.2 | [Chris Camacho](https://github.com/chriscamacho) | +| [shaders_model_shader](shaders/shaders_model_shader.c) | shaders_model_shader | ⭐⭐☆☆ | 1.3 | 3.7 | [Ramon Santamaria](https://github.com/raysan5) | +| [shaders_shapes_textures](shaders/shaders_shapes_textures.c) | shaders_shapes_textures | ⭐⭐☆☆ | 1.7 | 3.7 | [Ramon Santamaria](https://github.com/raysan5) | +| [shaders_custom_uniform](shaders/shaders_custom_uniform.c) | shaders_custom_uniform | ⭐⭐☆☆ | 1.3 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [shaders_postprocessing](shaders/shaders_postprocessing.c) | shaders_postprocessing | ⭐⭐⭐☆ | 1.3 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [shaders_palette_switch](shaders/shaders_palette_switch.c) | shaders_palette_switch | ⭐⭐⭐☆ | 2.5 | 3.7 | [Marco Lizza](https://github.com/MarcoLizza) | +| [shaders_raymarching](shaders/shaders_raymarching.c) | shaders_raymarching | ⭐⭐⭐⭐️ | 2.0 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | +| [shaders_texture_drawing](shaders/shaders_texture_drawing.c) | shaders_texture_drawing | ⭐⭐☆☆ | 2.0 | 3.7 | [Michał Ciesielski](https://github.com/ciessielski) | +| [shaders_texture_outline](shaders/shaders_texture_outline.c) | shaders_texture_outline | ⭐⭐⭐☆ | 4.0 | 4.0 | [Samuel Skiff](https://github.com/GoldenThumbs) | +| [shaders_texture_waves](shaders/shaders_texture_waves.c) | shaders_texture_waves | ⭐⭐☆☆ | 2.5 | 3.7 | [Anata](https://github.com/anatagawa) | +| [shaders_julia_set](shaders/shaders_julia_set.c) | shaders_julia_set | ⭐⭐⭐☆ | 2.5 | 4.0 | [Josh Colclough](https://github.com/joshcol9232) | +| [shaders_eratosthenes](shaders/shaders_eratosthenes.c) | shaders_eratosthenes | ⭐⭐⭐☆ | 2.5 | 4.0 | [ProfJski](https://github.com/ProfJski) | +| [shaders_fog](shaders/shaders_fog.c) | shaders_fog | ⭐⭐⭐☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | +| [shaders_simple_mask](shaders/shaders_simple_mask.c) | shaders_simple_mask | ⭐⭐☆☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | +| [shaders_hot_reloading](shaders/shaders_hot_reloading.c) | shaders_hot_reloading | ⭐⭐⭐☆ | 3.0 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [shaders_mesh_instancing](shaders/shaders_mesh_instancing.c) | shaders_mesh_instancing | ⭐⭐⭐⭐️ | 3.7 | 4.2 | [seanpringle](https://github.com/seanpringle) | +| [shaders_multi_sample2d](shaders/shaders_multi_sample2d.c) | shaders_multi_sample2d | ⭐⭐☆☆ | 3.5 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [shaders_spotlight](shaders/shaders_spotlight.c) | shaders_spotlight | ⭐⭐☆☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | +| [shaders_deferred_render](shaders/shaders_deferred_render.c) | shaders_deferred_render | ⭐⭐⭐⭐️ | 4.5 | 4.5 | [Justin Andreas Lacoste](https://github.com/27justin) | +| [shaders_hybrid_render](shaders/shaders_hybrid_render.c) | shaders_hybrid_render | ⭐⭐⭐⭐️ | 4.2 | 4.2 | [Buğra Alptekin Sarı](https://github.com/BugraAlptekinSari) | +| [shaders_texture_tiling](shaders/shaders_texture_tiling.c) | shaders_texture_tiling | ⭐⭐☆☆ | 4.5 | 4.5 | [Luis Almeida](https://github.com/luis605) | +| [shaders_shadowmap](shaders/shaders_shadowmap.c) | shaders_shadowmap | ⭐⭐⭐⭐️ | 5.0 | 5.0 | [TheManTheMythTheGameDev](https://github.com/TheManTheMythTheGameDev) | +| [shaders_vertex_displacement](shaders/shaders_vertex_displacement.c) | shaders_vertex_displacement | ⭐⭐⭐☆ | 5.0 | 4.5 | [Alex ZH](https://github.com/ZzzhHe) | +| [shaders_write_depth](shaders/shaders_write_depth.c) | shaders_write_depth | ⭐⭐☆☆ | 4.2 | 4.2 | [Buğra Alptekin Sarı](https://github.com/BugraAlptekinSari) | +| [shaders_basic_pbr](shaders/shaders_basic_pbr.c) | shaders_basic_pbr | ⭐⭐⭐⭐️ | 5.0 | 5.1 | [Afan OLOVCIC](https://github.com/_DevDad) | +| [shaders_lightmap](shaders/shaders_lightmap.c) | shaders_lightmap | ⭐⭐⭐☆ | 4.5 | 4.5 | [Jussi Viitala](https://github.com/nullstare) | +| [shaders_rounded_rectangle](shaders/shaders_rounded_rectangle.c) | shaders_rounded_rectangle | ⭐⭐⭐☆ | 5.5 | 5.5 | [Anstro Pleuton](https://github.com/anstropleuton) | +| [shaders_view_depth](shaders/shaders_view_depth.c) | shaders_view_depth | ⭐⭐⭐☆ | 5.6 | 5.6 | [Luís Almeida](https://github.com/luis605) | -### category: audio +### category: audio [8] Examples using raylib audio functionality, including sound/music loading and playing. This functionality is provided by raylib [raudio](../src/raudio.c) module. Note this module can be used standalone independently of raylib. -| ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | -|----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| 145 | [audio_module_playing](audio/audio_module_playing.c) | audio_module_playing | ⭐️☆☆☆ | 1.5 | 3.5 | [Ray](https://github.com/raysan5) | -| 146 | [audio_music_stream](audio/audio_music_stream.c) | audio_music_stream | ⭐️☆☆☆ | 1.3 | 4.2 | [Ray](https://github.com/raysan5) | -| 147 | [audio_raw_stream](audio/audio_raw_stream.c) | audio_raw_stream | ⭐️⭐️⭐️☆ | 1.6 | 4.2 | [Ray](https://github.com/raysan5) | -| 148 | [audio_sound_loading](audio/audio_sound_loading.c) | audio_sound_loading | ⭐️☆☆☆ | 1.1 | 3.5 | [Ray](https://github.com/raysan5) | -| 149 | [audio_mixed_processor](audio/audio_mixed_processor.c) | audio_mixed_processor | ⭐️⭐️⭐️⭐️ | 4.2 | 4.2 | [hkc](https://github.com/hatkidchan) | -| 150 | [audio_stream_effects](audio/audio_stream_effects.c) | audio_stream_effects | ⭐️⭐️⭐️⭐️ | 4.2 | 5.0 | [Ray](https://github.com/raysan5) | -| 151 | [audio_sound_multi](audio/audio_sound_multi.c) | audio_sound_multi | ⭐️⭐️☆☆ | 4.6 | 4.6 | [Jeffery Myers](https://github.com/JeffM2501) | -| 152 | [audio_sound_positioning](audio/audio_sound_positioning.c) | audio_sound_positioning | ⭐️⭐️☆☆ | 5.5 | 5.5 | [Le Juez Victor](https://github.com/Bigfoot71) | +| example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | +|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| +| [audio_module_playing](audio/audio_module_playing.c) | audio_module_playing | ⭐☆☆☆ | 1.5 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [audio_music_stream](audio/audio_music_stream.c) | audio_music_stream | ⭐☆☆☆ | 1.3 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | +| [audio_raw_stream](audio/audio_raw_stream.c) | audio_raw_stream | ⭐⭐⭐☆ | 1.6 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | +| [audio_sound_loading](audio/audio_sound_loading.c) | audio_sound_loading | ⭐☆☆☆ | 1.1 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [audio_mixed_processor](audio/audio_mixed_processor.c) | audio_mixed_processor | ⭐⭐⭐⭐️ | 4.2 | 4.2 | [hkc](https://github.com/hatkidchan) | +| [audio_stream_effects](audio/audio_stream_effects.c) | audio_stream_effects | ⭐⭐⭐⭐️ | 4.2 | 5.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [audio_sound_multi](audio/audio_sound_multi.c) | audio_sound_multi | ⭐⭐☆☆ | 4.6 | 4.6 | [Jeffery Myers](https://github.com/JeffM2501) | +| [audio_sound_positioning](audio/audio_sound_positioning.c) | audio_sound_positioning | ⭐⭐☆☆ | 5.5 | 5.5 | [Le Juez Victor](https://github.com/Bigfoot71) | -### category: others +### category: others [6] Examples showing raylib misc functionality that does not fit in other categories, like standalone modules usage or examples integrating external libraries. -| ## | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | -|----|----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| 153 | [rlgl_standalone](others/rlgl_standalone.c) | rlgl_standalone | ⭐️⭐️⭐️⭐️ | 1.6 | 4.0 | [Ray](https://github.com/raysan5) | -| 154 | [rlgl_compute_shader](others/rlgl_compute_shader.c) | rlgl_compute_shader | ⭐️⭐️⭐️⭐️ | 4.0 | 4.0 | [Teddy Astie](https://github.com/tsnake41) | -| 155 | [easings_testbed](others/easings_testbed.c) | easings_testbed | ⭐️⭐️⭐️☆ | 2.5 | 3.0 | [Juan Miguel López](https://github.com/flashback-fx) | -| 156 | [raylib_opengl_interop](others/raylib_opengl_interop.c) | raylib_opengl_interop | ⭐️⭐️⭐️⭐️ | 3.8 | 4.0 | [Stephan Soller](https://github.com/arkanis) | -| 157 | [embedded_files_loading](others/embedded_files_loading.c) | embedded_files_loading | ⭐️⭐️☆☆ | 3.0 | 3.5 | [Kristian Holmgren](https://github.com/defutura) | -| 158 | [raymath_vector_angle](others/raymath_vector_angle.c) | raymath_vector_angle | ⭐️⭐️☆☆ | 1.0 | 4.6 | [Ray](https://github.com/raysan5) | +| example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | +|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| +| [rlgl_standalone](others/rlgl_standalone.c) | rlgl_standalone | ⭐⭐⭐⭐️ | 1.6 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [rlgl_compute_shader](others/rlgl_compute_shader.c) | rlgl_compute_shader | ⭐⭐⭐⭐️ | 4.0 | 4.0 | [Teddy Astie](https://github.com/tsnake41) | +| [easings_testbed](others/easings_testbed.c) | easings_testbed | ⭐⭐⭐☆ | 2.5 | 3.0 | [Juan Miguel López](https://github.com/flashback-fx) | +| [raylib_opengl_interop](others/raylib_opengl_interop.c) | raylib_opengl_interop | ⭐⭐⭐⭐️ | 3.8 | 4.0 | [Stephan Soller](https://github.com/arkanis) | +| [embedded_files_loading](others/embedded_files_loading.c) | embedded_files_loading | ⭐⭐☆☆ | 3.0 | 3.5 | [Kristian Holmgren](https://github.com/defutura) | +| [raymath_vector_angle](others/raymath_vector_angle.c) | raymath_vector_angle | ⭐⭐☆☆ | 1.0 | 4.6 | [Ramon Santamaria](https://github.com/raysan5) | -As always contributions are welcome, feel free to send new examples! Here is an [examples template](examples_template.c) to start with! +Some example missing? As always, contributions are welcome, feel free to send new examples! +Here is an[examples template](examples_template.c) with instructions to start with! From c3a4217148fb2eef0af42302e476e9ef80da09bc Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 6 Aug 2025 18:25:58 +0200 Subject: [PATCH 155/328] Update rexm.c --- tools/rexm/rexm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 2e78d23d0..a7facdaf9 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -1172,7 +1172,7 @@ static int UpdateRequiredFiles(void) rlExampleInfo *exCollectionFull = LoadExamplesData(exCollectionFilePath, "ALL", false, &exCollectionFullCount); UnloadExamplesData(exCollectionFull); - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, TextFormat("## EXAMPLES COLLECTION [TOTAL: %i]\n\n", exCollectionFullCount)); + mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, TextFormat("## EXAMPLES COLLECTION [TOTAL: %i]\n", exCollectionFullCount)); // NOTE: We keep a global examples counter for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES; i++) From b3513e4719e874c8df661b7dcda64cc2ea246b1b Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 6 Aug 2025 18:42:27 +0200 Subject: [PATCH 156/328] ADDED: Missing example VS2022 projects --- .../examples/audio_sound_positioning.vcxproj | 569 ++++++++++++++++++ .../examples/core_basic_window_web.vcxproj | 569 ++++++++++++++++++ .../examples/core_input_gestures_web.vcxproj | 569 ++++++++++++++++++ .../examples/models_point_rendering.vcxproj | 569 ++++++++++++++++++ .../examples/models_tesseract_view.vcxproj | 569 ++++++++++++++++++ .../examples/raylib_opengl_interop.vcxproj | 569 ++++++++++++++++++ .../examples/raymath_vector_angle.vcxproj | 569 ++++++++++++++++++ .../examples/rlgl_compute_shader.vcxproj | 569 ++++++++++++++++++ .../VS2022/examples/shaders_basic_pbr.vcxproj | 569 ++++++++++++++++++ .../VS2022/examples/shaders_lightmap.vcxproj | 569 ++++++++++++++++++ .../examples/shapes_digital_clock.vcxproj | 569 ++++++++++++++++++ .../examples/shapes_double_pendulum.vcxproj | 569 ++++++++++++++++++ .../examples/textures_image_channel.vcxproj | 569 ++++++++++++++++++ .../examples/textures_image_kernel.vcxproj | 569 ++++++++++++++++++ .../examples/textures_image_rotate.vcxproj | 569 ++++++++++++++++++ 15 files changed, 8535 insertions(+) create mode 100644 projects/VS2022/examples/audio_sound_positioning.vcxproj create mode 100644 projects/VS2022/examples/core_basic_window_web.vcxproj create mode 100644 projects/VS2022/examples/core_input_gestures_web.vcxproj create mode 100644 projects/VS2022/examples/models_point_rendering.vcxproj create mode 100644 projects/VS2022/examples/models_tesseract_view.vcxproj create mode 100644 projects/VS2022/examples/raylib_opengl_interop.vcxproj create mode 100644 projects/VS2022/examples/raymath_vector_angle.vcxproj create mode 100644 projects/VS2022/examples/rlgl_compute_shader.vcxproj create mode 100644 projects/VS2022/examples/shaders_basic_pbr.vcxproj create mode 100644 projects/VS2022/examples/shaders_lightmap.vcxproj create mode 100644 projects/VS2022/examples/shapes_digital_clock.vcxproj create mode 100644 projects/VS2022/examples/shapes_double_pendulum.vcxproj create mode 100644 projects/VS2022/examples/textures_image_channel.vcxproj create mode 100644 projects/VS2022/examples/textures_image_kernel.vcxproj create mode 100644 projects/VS2022/examples/textures_image_rotate.vcxproj diff --git a/projects/VS2022/examples/audio_sound_positioning.vcxproj b/projects/VS2022/examples/audio_sound_positioning.vcxproj new file mode 100644 index 000000000..96c8fef5e --- /dev/null +++ b/projects/VS2022/examples/audio_sound_positioning.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + audio_sound_positioning + 10.0 + audio_sound_positioning + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\audio + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\audio + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\audio + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\audio + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\audio + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\audio + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\audio + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\audio + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\audio + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\audio + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\audio + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\audio + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/core_basic_window_web.vcxproj b/projects/VS2022/examples/core_basic_window_web.vcxproj new file mode 100644 index 000000000..7d9d0efb4 --- /dev/null +++ b/projects/VS2022/examples/core_basic_window_web.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + core_basic_window_web + 10.0 + core_basic_window_web + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/core_input_gestures_web.vcxproj b/projects/VS2022/examples/core_input_gestures_web.vcxproj new file mode 100644 index 000000000..bcccc57d0 --- /dev/null +++ b/projects/VS2022/examples/core_input_gestures_web.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + core_input_gestures_web + 10.0 + core_input_gestures_web + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/models_point_rendering.vcxproj b/projects/VS2022/examples/models_point_rendering.vcxproj new file mode 100644 index 000000000..ba66e9baa --- /dev/null +++ b/projects/VS2022/examples/models_point_rendering.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + models_point_rendering + 10.0 + models_point_rendering + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/models_tesseract_view.vcxproj b/projects/VS2022/examples/models_tesseract_view.vcxproj new file mode 100644 index 000000000..b49094ac7 --- /dev/null +++ b/projects/VS2022/examples/models_tesseract_view.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + models_tesseract_view + 10.0 + models_tesseract_view + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/raylib_opengl_interop.vcxproj b/projects/VS2022/examples/raylib_opengl_interop.vcxproj new file mode 100644 index 000000000..a1b05153a --- /dev/null +++ b/projects/VS2022/examples/raylib_opengl_interop.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + raylib_opengl_interop + 10.0 + raylib_opengl_interop + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/raymath_vector_angle.vcxproj b/projects/VS2022/examples/raymath_vector_angle.vcxproj new file mode 100644 index 000000000..fd650d93c --- /dev/null +++ b/projects/VS2022/examples/raymath_vector_angle.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + raymath_vector_angle + 10.0 + raymath_vector_angle + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/rlgl_compute_shader.vcxproj b/projects/VS2022/examples/rlgl_compute_shader.vcxproj new file mode 100644 index 000000000..84e267623 --- /dev/null +++ b/projects/VS2022/examples/rlgl_compute_shader.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + rlgl_compute_shader + 10.0 + rlgl_compute_shader + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\others + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/shaders_basic_pbr.vcxproj b/projects/VS2022/examples/shaders_basic_pbr.vcxproj new file mode 100644 index 000000000..49744ed0e --- /dev/null +++ b/projects/VS2022/examples/shaders_basic_pbr.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + shaders_basic_pbr + 10.0 + shaders_basic_pbr + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/shaders_lightmap.vcxproj b/projects/VS2022/examples/shaders_lightmap.vcxproj new file mode 100644 index 000000000..392f35b71 --- /dev/null +++ b/projects/VS2022/examples/shaders_lightmap.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + shaders_lightmap + 10.0 + shaders_lightmap + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/shapes_digital_clock.vcxproj b/projects/VS2022/examples/shapes_digital_clock.vcxproj new file mode 100644 index 000000000..d14448393 --- /dev/null +++ b/projects/VS2022/examples/shapes_digital_clock.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + shapes_digital_clock + 10.0 + shapes_digital_clock + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/shapes_double_pendulum.vcxproj b/projects/VS2022/examples/shapes_double_pendulum.vcxproj new file mode 100644 index 000000000..57f7d458b --- /dev/null +++ b/projects/VS2022/examples/shapes_double_pendulum.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + shapes_double_pendulum + 10.0 + shapes_double_pendulum + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/textures_image_channel.vcxproj b/projects/VS2022/examples/textures_image_channel.vcxproj new file mode 100644 index 000000000..c480f869d --- /dev/null +++ b/projects/VS2022/examples/textures_image_channel.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + textures_image_channel + 10.0 + textures_image_channel + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/textures_image_kernel.vcxproj b/projects/VS2022/examples/textures_image_kernel.vcxproj new file mode 100644 index 000000000..20cb60d6a --- /dev/null +++ b/projects/VS2022/examples/textures_image_kernel.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + textures_image_kernel + 10.0 + textures_image_kernel + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/textures_image_rotate.vcxproj b/projects/VS2022/examples/textures_image_rotate.vcxproj new file mode 100644 index 000000000..98179299a --- /dev/null +++ b/projects/VS2022/examples/textures_image_rotate.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + textures_image_rotate + 10.0 + textures_image_rotate + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\textures + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file From a6f29e4f1901b54406dfdaabdff979ff31c14c57 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 6 Aug 2025 18:42:33 +0200 Subject: [PATCH 157/328] Update examples_report.md --- tools/rexm/examples_report.md | 52 +++++++++++++++++------------------ 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/tools/rexm/examples_report.md b/tools/rexm/examples_report.md index 0188c4a98..97bc7c52a 100644 --- a/tools/rexm/examples_report.md +++ b/tools/rexm/examples_report.md @@ -1,4 +1,4 @@ -# EXAMPLES COLLECTION REPORT +# EXAMPLES COLLECTION - VALIDATION REPORT ``` Example elements validated: @@ -26,7 +26,7 @@ Example elements validated: | core_input_gamepad | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_input_multitouch | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_input_gestures | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_input_virtual_controls | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | +| core_input_virtual_controls | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_2d_camera | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_2d_camera_mouse_zoom | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_2d_camera_platformer | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -50,11 +50,11 @@ Example elements validated: | core_basic_screen_manager | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_custom_frame_control | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_smooth_pixelperfect | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_random_sequence | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | -| core_basic_window_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ❌ | -| core_input_gestures_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ✔ | +| core_random_sequence | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_basic_window_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | +| core_input_gestures_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | | core_automation_events | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_high_dpi | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | +| core_high_dpi | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | | shapes_basic_shapes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_bouncing_ball | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_colors_palette | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -71,10 +71,10 @@ Example elements validated: | shapes_draw_circle_sector | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_draw_rectangle_rounded | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_top_down_lights | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_rectangle_advanced | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | +| shapes_rectangle_advanced | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_splines_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_digital_clock | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ❌ | -| shapes_double_pendulum | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ❌ | +| shapes_digital_clock | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | +| shapes_double_pendulum | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | | textures_logo_raylib | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_srcrec_dstrec | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_image_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -97,9 +97,9 @@ Example elements validated: | textures_polygon | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_fog_of_war | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_gif_player | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_image_kernel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ✔ | -| textures_image_channel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | -| textures_image_rotate | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ✔ | +| textures_image_kernel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | +| textures_image_channel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | +| textures_image_rotate | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | | textures_textured_curve | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | text_raylib_fonts | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | text_font_spritefont | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -126,7 +126,7 @@ Example elements validated: | models_loading_vox | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_loading_m3d | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_orthographic_projection | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_point_rendering | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | +| models_point_rendering | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | | models_rlgl_solar_system | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_yaw_pitch_roll | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_waving_cubes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -135,7 +135,7 @@ Example elements validated: | models_draw_cube_texture | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_gpu_skinning | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_bone_socket | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_tesseract_view | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | +| models_tesseract_view | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | | shaders_basic_lighting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_model_shader | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_shapes_textures | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -157,13 +157,13 @@ Example elements validated: | shaders_deferred_render | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_hybrid_render | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_texture_tiling | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_shadowmap | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | +| shaders_shadowmap | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_vertex_displacement | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_write_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_basic_pbr | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | -| shaders_lightmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | -| shaders_rounded_rectangle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | -| shaders_view_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | +| shaders_basic_pbr | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | +| shaders_lightmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | +| shaders_rounded_rectangle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| shaders_view_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | | audio_module_playing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_music_stream | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_raw_stream | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -171,10 +171,10 @@ Example elements validated: | audio_mixed_processor | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_stream_effects | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_sound_multi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ❌ | -| rlgl_standalone | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | -| rlgl_compute_shader | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | ❌ | -| easings_testbed | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | -| raylib_opengl_interop | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ❌ | -| embedded_files_loading | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | -| raymath_vector_angle | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ❌ | ❌ | +| audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | +| rlgl_standalone | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ❌ | +| rlgl_compute_shader | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ❌ | +| easings_testbed | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ❌ | +| raylib_opengl_interop | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ❌ | ✔ | ❌ | ✔ | ❌ | ❌ | +| embedded_files_loading | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ❌ | +| raymath_vector_angle | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ❌ | ✔ | ❌ | ❌ | From 5dc304b5a7e8fbe717a2056661d94e31773e9ce8 Mon Sep 17 00:00:00 2001 From: Connor O'Connor Date: Wed, 6 Aug 2025 22:41:37 -0400 Subject: [PATCH 158/328] Remove binding link for https://github.com/Rabios/raylib-v7 This repo (and user) does not exist. Remove it. --- BINDINGS.md | 1 - 1 file changed, 1 deletion(-) diff --git a/BINDINGS.md b/BINDINGS.md index 719a902a0..e60638ac1 100644 --- a/BINDINGS.md +++ b/BINDINGS.md @@ -145,7 +145,6 @@ These are older raylib bindings that are more than 2 versions old or have not be | [clj-raylib](https://github.com/lsevero/clj-raylib) | 3.0 | [Clojure](https://clojure.org) | | [QuickJS-raylib](https://github.com/sntg-p/QuickJS-raylib) | 3.0 | [QuickJS](https://bellard.org/quickjs) | | [raylib-duktape](https://github.com/RobLoach/raylib-duktape) | 2.6 | [JavaScript (Duktape)](https://en.wikipedia.org/wiki/JavaScript) | -| [raylib-v7](https://github.com/Rabios/raylib-v7) | 3.5 | [JavaScript (v7)](https://en.wikipedia.org/wiki/JavaScript) | | [raylib-chaiscript](https://github.com/RobLoach/raylib-chaiscript) | 2.6 | [ChaiScript](http://chaiscript.com) | | [raylib-squirrel](https://github.com/RobLoach/raylib-squirrel) | 2.5 | [Squirrel](http://www.squirrel-lang.org) | | [racket-raylib-2d](https://github.com/arvyy/racket-raylib-2d) | 2.5 | [Racket](https://racket-lang.org) | From 1c2ecfd6ab914b8aa077ae347d99c0e7156427a7 Mon Sep 17 00:00:00 2001 From: Connor O'Connor Date: Wed, 6 Aug 2025 23:13:05 -0400 Subject: [PATCH 159/328] fix: buffer overflow in jar_mod.h memcopy --- src/external/jar_mod.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/external/jar_mod.h b/src/external/jar_mod.h index eacd3b7d6..2a220f8af 100644 --- a/src/external/jar_mod.h +++ b/src/external/jar_mod.h @@ -1130,7 +1130,7 @@ static bool jar_mod_load( jar_mod_context_t * modctx, void * mod_data, int mod_d { if( modctx ) { - memcopy(&(modctx->song.title),modmemory,1084); + memcopy(&(modctx->song), modmemory, 1084); i = 0; modctx->number_of_channels = 0; @@ -1593,4 +1593,4 @@ void jar_mod_seek_start(jar_mod_context_t * ctx) //------------------------------------------------------------------------------- -#endif //end of header file \ No newline at end of file +#endif //end of header file From 36dc70443ae9c084c4f83ebe25a0dafe1f1ac319 Mon Sep 17 00:00:00 2001 From: Maicon Santana Date: Thu, 7 Aug 2025 12:01:21 +0100 Subject: [PATCH 160/328] Add warning for missing new name to avoid segmentation fault --- tools/rexm/rexm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index a7facdaf9..874859f61 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -275,6 +275,7 @@ int main(int argc, char *argv[]) else if (strcmp(argv[1], "rename") == 0) { if (argc == 2) LOG("WARNING: No filename provided to be renamed\n"); + else if (argc == 3) LOG("WARNING: No new filename provided to be renamed\n"); else if (argc > 4) LOG("WARNING: Too many arguments provided\n"); else { From fa5560881e98cce2b00828caa84650b2b37a5d88 Mon Sep 17 00:00:00 2001 From: Maicon Santana Date: Thu, 7 Aug 2025 12:39:12 +0100 Subject: [PATCH 161/328] Check for category on new name --- tools/rexm/rexm.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index a7facdaf9..9eebccaf3 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -282,11 +282,29 @@ int main(int argc, char *argv[]) char *exColInfo = LoadFileText(exCollectionFilePath); if (TextFindIndex(exColInfo, argv[2]) != -1) // Example in the collection { - strcpy(exName, argv[2]); // Register example name - strncpy(exCategory, exName, TextFindIndex(exName, "_")); - strcpy(exRename, argv[3]); - strncpy(exRecategory, exRename, TextFindIndex(exRename, "_")); - opCode = OP_RENAME; + // Security checks for new file name to verify category is included + int newCatIndex = TextFindIndex(argv[3], "_"); + if (newCatIndex > 3) + { + char cat[12] = { 0 }; + strncpy(cat, argv[3], newCatIndex); + bool newCatFound = false; + for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES; i++) + { + if (TextIsEqual(cat, exCategories[i])) { newCatFound = true; break; } + } + + if (newCatFound) + { + strcpy(exName, argv[2]); // Register example name + strncpy(exCategory, exName, TextFindIndex(exName, "_")); + strcpy(exRename, argv[3]); + strncpy(exRecategory, exRename, TextFindIndex(exRename, "_")); + opCode = OP_RENAME; + } + else LOG("WARNING: Example new category is not valid\n"); + } + else LOG("WARNING: Example new name does not include category\n"); } else LOG("WARNING: RENAME: Example not available in the collection\n"); UnloadFileText(exColInfo); From 89e6ed269713ffb262b3a9e379c667f7eb3d8d71 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:03:54 +0200 Subject: [PATCH 162/328] REXM: Reviewed VS project adding to solution, no tool to do it! -WIP- --- tools/rexm/rexm.c | 82 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 74 insertions(+), 8 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index a7facdaf9..07606da86 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -165,6 +165,9 @@ static char **ScanExampleResources(const char *filePath, int *resPathCount); // Clear resource paths scanned static void ClearExampleResources(char **resPaths); +// Add VS project (.vcxproj) to existing VS solution (.sol) +static int AddVSProjectToSolution(const char *projFile, const char *solFile); + //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ @@ -487,6 +490,7 @@ int main(int argc, char *argv[]) // Create: raylib/projects/VS2022/examples/_example_name.vcxproj //------------------------------------------------------------------------------------------------ + // WARNING: When adding new project a unique UUID should be assigned! FileCopy(TextFormat("%s/../projects/VS2022/examples/core_basic_window.vcxproj", exBasePath), TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName)); FileTextReplace(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), @@ -495,7 +499,8 @@ int main(int argc, char *argv[]) "..\\..\\examples\\core", TextFormat("..\\..\\examples\\%s", exCategory)); // Edit: raylib/projects/VS2022/raylib.sln --> Add new example project - system(TextFormat("dotnet solution %s/../projects/VS2022/raylib.sln add %s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exBasePath, exName)); + AddVSProjectToSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), + TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath)); //------------------------------------------------------------------------------------------------ // Recompile example (on raylib side) @@ -680,10 +685,10 @@ int main(int argc, char *argv[]) // Remove: raylib/projects/VS2022/examples/_example_name.vcxproj remove(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName)); - // Edit: raylib/projects/VS2022/raylib.sln --> Remove example project + // TODO: Edit: raylib/projects/VS2022/raylib.sln --> Remove example project //--------------------------------------------------------------------------- - system(TextFormat("dotnet solution %s/../projects/VS2022/raylib.sln remove %s/../projects/VS2022/examples/%s.vcxproj", - exBasePath, exBasePath, exName)); + //RemoveVSProjectFromSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), + // TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath)); //--------------------------------------------------------------------------- // Remove: raylib.com/examples//_example_name.html @@ -932,16 +937,23 @@ int main(int argc, char *argv[]) "..\\..\\examples\\core", TextFormat("..\\..\\examples\\%s", exInfo->category)); } + // WARNING: Adding a .vcxproj to .sln can not be automated with + // "dotnet" tool (C# projects only) + // "devenv" tool (no adding support, only building) + // It must be done manually editing the .sln file if (exInfo->status & VALID_NOT_IN_VCXSOL) - system(TextFormat("dotnet solution %s/../projects/VS2022/raylib.sln add %s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exBasePath, exInfo->name)); - + { + AddVSProjectToSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), + TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath)); + } + // Review: Add/Remove: raylib.com/examples//_example_name.html // Review: Add/Remove: raylib.com/examples//_example_name.data // Review: Add/Remove: raylib.com/examples//_example_name.wasm // Review: Add/Remove: raylib.com/examples//_example_name.js // Solves: VALID_MISSING_WEB_OUTPUT - if (exInfo->status & VALID_MISSING_WEB_OUTPUT) - system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); + //if (exInfo->status & VALID_MISSING_WEB_OUTPUT) + // system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); } } @@ -1727,3 +1739,57 @@ static void ClearExampleResources(char **resPaths) RL_FREE(resPaths); } + +// TODO: Add VS project (.vcxproj) to existing VS solution (.sol) +static int AddVSProjectToSolution(const char *projFile, const char *solFile) +{ + int result = 0; + + // Generate unique UUID: + // C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\uuidgen.exe > saved_uuid.txt + + // Add project to the list: + // Format: Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "", "examples\.vcxproj", "{}" + /* + Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_window", "examples\core_basic_window.vcxproj", "{0981CA98-E4A5-4DF1-987F-A41D09131EFC}" + EndProject + */ + + // Update project config: + /* + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|ARM64.Build.0 = Debug|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x64.ActiveCfg = Debug|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x64.Build.0 = Debug|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x86.ActiveCfg = Debug|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x86.Build.0 = Debug|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|ARM64.ActiveCfg = Release|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|ARM64.Build.0 = Release|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x64.ActiveCfg = Release|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x64.Build.0 = Release|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x86.ActiveCfg = Release|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x86.Build.0 = Release|Win32 + */ + + // Update projects to folders: + // {project_uuid} = {solution_folder_uuid} + /* + GlobalSection(NestedProjects) = preSolution + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + */ + + return result; +} From c91c185221847407f1b3c54597e9b337bc640bb7 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:04:22 +0200 Subject: [PATCH 163/328] Update examples_report.md --- tools/rexm/examples_report.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/tools/rexm/examples_report.md b/tools/rexm/examples_report.md index 97bc7c52a..ef1aca64b 100644 --- a/tools/rexm/examples_report.md +++ b/tools/rexm/examples_report.md @@ -44,7 +44,7 @@ Example elements validated: | core_drop_files | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_random_values | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_storage_values | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_vr_simulator | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_vr_simulator | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_loading_thread | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_scissor_test | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_basic_screen_manager | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -73,8 +73,8 @@ Example elements validated: | shapes_top_down_lights | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_rectangle_advanced | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_splines_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_digital_clock | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | -| shapes_double_pendulum | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | +| shapes_digital_clock | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| shapes_double_pendulum | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | | textures_logo_raylib | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_srcrec_dstrec | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_image_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -97,9 +97,9 @@ Example elements validated: | textures_polygon | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_fog_of_war | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_gif_player | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_image_kernel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | -| textures_image_channel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | -| textures_image_rotate | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | +| textures_image_kernel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_image_channel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_image_rotate | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_textured_curve | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | text_raylib_fonts | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | text_font_spritefont | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -126,16 +126,16 @@ Example elements validated: | models_loading_vox | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_loading_m3d | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_orthographic_projection | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_point_rendering | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | +| models_point_rendering | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_rlgl_solar_system | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_yaw_pitch_roll | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_waving_cubes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_heightmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_skybox | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_skybox | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_draw_cube_texture | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_gpu_skinning | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_gpu_skinning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_bone_socket | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_tesseract_view | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | +| models_tesseract_view | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_basic_lighting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_model_shader | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_shapes_textures | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -160,10 +160,10 @@ Example elements validated: | shaders_shadowmap | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_vertex_displacement | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_write_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_basic_pbr | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | -| shaders_lightmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | +| shaders_basic_pbr | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_lightmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_rounded_rectangle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | -| shaders_view_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| shaders_view_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | | audio_module_playing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_music_stream | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_raw_stream | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -171,7 +171,7 @@ Example elements validated: | audio_mixed_processor | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_stream_effects | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_sound_multi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | +| audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | | rlgl_standalone | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ❌ | | rlgl_compute_shader | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ❌ | | easings_testbed | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ❌ | From ff1087480cbf0d613494eb567cc0f926fdfa9d76 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:04:49 +0200 Subject: [PATCH 164/328] ADDED: New projects to VS2022 solution --- .../examples/audio_sound_positioning.vcxproj | 2 +- .../examples/models_point_rendering.vcxproj | 2 +- .../examples/models_tesseract_view.vcxproj | 2 +- .../VS2022/examples/shaders_basic_pbr.vcxproj | 2 +- .../VS2022/examples/shaders_lightmap.vcxproj | 2 +- .../examples/shapes_digital_clock.vcxproj | 2 +- .../examples/shapes_double_pendulum.vcxproj | 2 +- .../examples/textures_image_channel.vcxproj | 2 +- .../examples/textures_image_kernel.vcxproj | 2 +- .../examples/textures_image_rotate.vcxproj | 2 +- projects/VS2022/raylib.sln | 320 ++++++++++++++++-- 11 files changed, 306 insertions(+), 34 deletions(-) diff --git a/projects/VS2022/examples/audio_sound_positioning.vcxproj b/projects/VS2022/examples/audio_sound_positioning.vcxproj index 96c8fef5e..7a241ea30 100644 --- a/projects/VS2022/examples/audio_sound_positioning.vcxproj +++ b/projects/VS2022/examples/audio_sound_positioning.vcxproj @@ -51,7 +51,7 @@ - {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + {9CD8BCAD-F212-4BCC-BA98-899743CE3279} Win32Proj audio_sound_positioning 10.0 diff --git a/projects/VS2022/examples/models_point_rendering.vcxproj b/projects/VS2022/examples/models_point_rendering.vcxproj index ba66e9baa..ce32a3415 100644 --- a/projects/VS2022/examples/models_point_rendering.vcxproj +++ b/projects/VS2022/examples/models_point_rendering.vcxproj @@ -51,7 +51,7 @@ - {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + {921391C6-7626-4212-9928-BC82BC785461} Win32Proj models_point_rendering 10.0 diff --git a/projects/VS2022/examples/models_tesseract_view.vcxproj b/projects/VS2022/examples/models_tesseract_view.vcxproj index b49094ac7..f64344044 100644 --- a/projects/VS2022/examples/models_tesseract_view.vcxproj +++ b/projects/VS2022/examples/models_tesseract_view.vcxproj @@ -51,7 +51,7 @@ - {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F} Win32Proj models_tesseract_view 10.0 diff --git a/projects/VS2022/examples/shaders_basic_pbr.vcxproj b/projects/VS2022/examples/shaders_basic_pbr.vcxproj index 49744ed0e..a17b0de3b 100644 --- a/projects/VS2022/examples/shaders_basic_pbr.vcxproj +++ b/projects/VS2022/examples/shaders_basic_pbr.vcxproj @@ -51,7 +51,7 @@ - {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8} Win32Proj shaders_basic_pbr 10.0 diff --git a/projects/VS2022/examples/shaders_lightmap.vcxproj b/projects/VS2022/examples/shaders_lightmap.vcxproj index 392f35b71..d1be94f1c 100644 --- a/projects/VS2022/examples/shaders_lightmap.vcxproj +++ b/projects/VS2022/examples/shaders_lightmap.vcxproj @@ -51,7 +51,7 @@ - {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + {C54703BF-D68A-480D-BE27-49B62E45D582} Win32Proj shaders_lightmap 10.0 diff --git a/projects/VS2022/examples/shapes_digital_clock.vcxproj b/projects/VS2022/examples/shapes_digital_clock.vcxproj index d14448393..e361eb190 100644 --- a/projects/VS2022/examples/shapes_digital_clock.vcxproj +++ b/projects/VS2022/examples/shapes_digital_clock.vcxproj @@ -51,7 +51,7 @@ - {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + {3384C257-3CFE-4A8F-838C-19DAC5C955DA} Win32Proj shapes_digital_clock 10.0 diff --git a/projects/VS2022/examples/shapes_double_pendulum.vcxproj b/projects/VS2022/examples/shapes_double_pendulum.vcxproj index 57f7d458b..775b25335 100644 --- a/projects/VS2022/examples/shapes_double_pendulum.vcxproj +++ b/projects/VS2022/examples/shapes_double_pendulum.vcxproj @@ -51,7 +51,7 @@ - {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + {2B140378-125F-4DE9-AC37-2CC1B73D7254} Win32Proj shapes_double_pendulum 10.0 diff --git a/projects/VS2022/examples/textures_image_channel.vcxproj b/projects/VS2022/examples/textures_image_channel.vcxproj index c480f869d..90c09fc54 100644 --- a/projects/VS2022/examples/textures_image_channel.vcxproj +++ b/projects/VS2022/examples/textures_image_channel.vcxproj @@ -51,7 +51,7 @@ - {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F} Win32Proj textures_image_channel 10.0 diff --git a/projects/VS2022/examples/textures_image_kernel.vcxproj b/projects/VS2022/examples/textures_image_kernel.vcxproj index 20cb60d6a..b0012e4d6 100644 --- a/projects/VS2022/examples/textures_image_kernel.vcxproj +++ b/projects/VS2022/examples/textures_image_kernel.vcxproj @@ -51,7 +51,7 @@ - {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6} Win32Proj textures_image_kernel 10.0 diff --git a/projects/VS2022/examples/textures_image_rotate.vcxproj b/projects/VS2022/examples/textures_image_rotate.vcxproj index 98179299a..8345b42a7 100644 --- a/projects/VS2022/examples/textures_image_rotate.vcxproj +++ b/projects/VS2022/examples/textures_image_rotate.vcxproj @@ -51,7 +51,7 @@ - {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + {2AA91EED-2D32-4B09-84A3-53D41EED1005} Win32Proj textures_image_rotate 10.0 diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 4f8c3beea..452ba39c5 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -7,6 +7,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raylib", "raylib\raylib.vcx EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "core", "core", "{6C82BAAE-BDDF-457D-8FA8-7E2490B07035}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shapes", "shapes", "{278D8859-20B1-428F-8448-064F46E1F021}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "textures", "textures", "{DA049009-21FF-4AC0-84E4-830DD1BCD0CE}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "text", "text", "{8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "models", "models", "{AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shaders", "shaders", "{5317807F-61D4-4E0F-B6DC-2D9F12621ED9}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "audio", "audio", "{CC132A4D-D081-4C26-BFB9-AB11984054F8}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "other", "other", "{E9D708A5-9C1F-4B84-A795-C5F191801762}" +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_window", "examples\core_basic_window.vcxproj", "{0981CA98-E4A5-4DF1-987F-A41D09131EFC}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_anim", "examples\textures_sprite_anim.vcxproj", "{C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}" @@ -79,18 +95,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_box_collisions", "ex EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_cubicmap", "examples\models_cubicmap.vcxproj", "{82F3D34B-8DB2-4C6A-98B1-132245DD9D99}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "core", "core", "{6C82BAAE-BDDF-457D-8FA8-7E2490B07035}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "audio", "audio", "{CC132A4D-D081-4C26-BFB9-AB11984054F8}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "models", "models", "{AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "textures", "textures", "{DA049009-21FF-4AC0-84E4-830DD1BCD0CE}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shapes", "shapes", "{278D8859-20B1-428F-8448-064F46E1F021}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shaders", "shaders", "{5317807F-61D4-4E0F-B6DC-2D9F12621ED9}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_first_person_maze", "examples\models_first_person_maze.vcxproj", "{CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_geometric_shapes", "examples\models_geometric_shapes.vcxproj", "{14BA7F98-02CC-4648-9236-676BFF9458AF}" @@ -145,10 +149,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_blend_modes", "exa EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_background_scrolling", "examples\textures_background_scrolling.vcxproj", "{8DD0EB7E-668E-452D-91D7-906C64A9C8AC}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "text", "text", "{8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "other", "other", "{E9D708A5-9C1F-4B84-A795-C5F191801762}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_writing_anim", "examples\text_writing_anim.vcxproj", "{F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_unicode", "examples\text_unicode.vcxproj", "{1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}" @@ -313,6 +313,26 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_vertex_displacement EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_rounded_rectangle", "examples\shaders_rounded_rectangle.vcxproj", "{D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_digital_clock", "examples\shapes_digital_clock.vcxproj", "{3384C257-3CFE-4A8F-838C-19DAC5C955DA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_double_pendulum", "examples\shapes_double_pendulum.vcxproj", "{2B140378-125F-4DE9-AC37-2CC1B73D7254}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_kernel", "examples\textures_image_kernel.vcxproj", "{F4C55B99-E1C5-496A-8AC2-40188C38F4F6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_rotate", "examples\textures_image_rotate.vcxproj", "{2AA91EED-2D32-4B09-84A3-53D41EED1005}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_channel", "examples\textures_image_channel.vcxproj", "{EC0910F6-8D66-4509-BF57-A5EE7AE9485F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_point_rendering", "examples\models_point_rendering.vcxproj", "{921391C6-7626-4212-9928-BC82BC785461}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_tesseract_view", "examples\models_tesseract_view.vcxproj", "{6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_basic_pbr", "examples\shaders_basic_pbr.vcxproj", "{4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_lightmap", "examples\shaders_lightmap.vcxproj", "{C54703BF-D68A-480D-BE27-49B62E45D582}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_positioning", "examples\audio_sound_positioning.vcxproj", "{9CD8BCAD-F212-4BCC-BA98-899743CE3279}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -3821,11 +3841,259 @@ Global {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x64.Build.0 = Release|x64 {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x86.ActiveCfg = Release|Win32 {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x86.Build.0 = Release|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|ARM64.Build.0 = Debug|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x64.ActiveCfg = Debug|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x64.Build.0 = Debug|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x86.ActiveCfg = Debug|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x86.Build.0 = Debug|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|ARM64.ActiveCfg = Release|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|ARM64.Build.0 = Release|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x64.ActiveCfg = Release|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x64.Build.0 = Release|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x86.ActiveCfg = Release|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x86.Build.0 = Release|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|ARM64.Build.0 = Debug|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x64.ActiveCfg = Debug|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x64.Build.0 = Debug|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x86.ActiveCfg = Debug|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x86.Build.0 = Debug|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|ARM64.ActiveCfg = Release|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|ARM64.Build.0 = Release|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x64.ActiveCfg = Release|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x64.Build.0 = Release|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x86.ActiveCfg = Release|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x86.Build.0 = Release|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|ARM64.Build.0 = Debug|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x64.ActiveCfg = Debug|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x64.Build.0 = Debug|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x86.ActiveCfg = Debug|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x86.Build.0 = Debug|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|ARM64.ActiveCfg = Release|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|ARM64.Build.0 = Release|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x64.ActiveCfg = Release|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x64.Build.0 = Release|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x86.ActiveCfg = Release|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x86.Build.0 = Release|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|ARM64.Build.0 = Debug|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x64.ActiveCfg = Debug|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x64.Build.0 = Debug|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x86.ActiveCfg = Debug|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x86.Build.0 = Debug|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|ARM64.ActiveCfg = Release|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|ARM64.Build.0 = Release|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x64.ActiveCfg = Release|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x64.Build.0 = Release|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x86.ActiveCfg = Release|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x86.Build.0 = Release|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|ARM64.Build.0 = Debug|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x64.ActiveCfg = Debug|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x64.Build.0 = Debug|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x86.ActiveCfg = Debug|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x86.Build.0 = Debug|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|ARM64.ActiveCfg = Release|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|ARM64.Build.0 = Release|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x64.ActiveCfg = Release|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x64.Build.0 = Release|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x86.ActiveCfg = Release|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x86.Build.0 = Release|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|ARM64.Build.0 = Debug|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|x64.ActiveCfg = Debug|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|x64.Build.0 = Debug|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|x86.ActiveCfg = Debug|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|x86.Build.0 = Debug|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Release|ARM64.ActiveCfg = Release|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Release|ARM64.Build.0 = Release|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Release|x64.ActiveCfg = Release|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Release|x64.Build.0 = Release|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Release|x86.ActiveCfg = Release|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Release|x86.Build.0 = Release|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x64.ActiveCfg = Debug|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x64.Build.0 = Debug|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x86.ActiveCfg = Debug|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x86.Build.0 = Debug|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|ARM64.Build.0 = Release|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x64.ActiveCfg = Release|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x64.Build.0 = Release|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x86.ActiveCfg = Release|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x86.Build.0 = Release|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|ARM64.Build.0 = Debug|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x64.ActiveCfg = Debug|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x64.Build.0 = Debug|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x86.ActiveCfg = Debug|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x86.Build.0 = Debug|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|ARM64.ActiveCfg = Release|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|ARM64.Build.0 = Release|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x64.ActiveCfg = Release|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x64.Build.0 = Release|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x86.ActiveCfg = Release|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x86.Build.0 = Release|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|ARM64.Build.0 = Debug|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x64.ActiveCfg = Debug|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x64.Build.0 = Debug|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x86.ActiveCfg = Debug|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x86.Build.0 = Debug|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|ARM64.ActiveCfg = Release|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|ARM64.Build.0 = Release|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x64.ActiveCfg = Release|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x64.Build.0 = Release|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x86.ActiveCfg = Release|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x86.Build.0 = Release|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|ARM64.Build.0 = Debug|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x64.ActiveCfg = Debug|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x64.Build.0 = Debug|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x86.ActiveCfg = Debug|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x86.Build.0 = Debug|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|ARM64.ActiveCfg = Release|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|ARM64.Build.0 = Release|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x64.ActiveCfg = Release|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x64.Build.0 = Release|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x86.ActiveCfg = Release|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution + {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {278D8859-20B1-428F-8448-064F46E1F021} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {CC132A4D-D081-4C26-BFB9-AB11984054F8} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {E9D708A5-9C1F-4B84-A795-C5F191801762} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} {0981CA98-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} {103B292B-049B-4B15-85A1-9F902840DB2C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} @@ -3843,6 +4111,7 @@ Global {FD193822-3D5C-4161-A147-884C2ABDE483} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {20AD0AC9-9159-4744-99CC-6AC5779D6B87} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {0199E349-0701-40BC-8A7F-06A54FFA3E7C} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {8F19E3DA-8929-4000-87B5-3CA6929636CC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {51A00565-5787-4911-9CC0-28403AA4909D} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {92B64AE7-D773-4F05-89F1-CE59BBF4F053} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} @@ -3861,12 +4130,6 @@ Global {B7812167-50FB-4934-996F-DF6FE4CBBFDF} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {39DB56C7-05F8-492C-A8D4-F19E40FECB59} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {82F3D34B-8DB2-4C6A-98B1-132245DD9D99} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {CC132A4D-D081-4C26-BFB9-AB11984054F8} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {278D8859-20B1-428F-8448-064F46E1F021} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {14BA7F98-02CC-4648-9236-676BFF9458AF} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {0859A973-E4FE-4688-8D16-0253163FDE24} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} @@ -3894,8 +4157,6 @@ Global {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} {6D75CD88-1A03-4955-B8C7-ACFC3742154F} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} {8DD0EB7E-668E-452D-91D7-906C64A9C8AC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {E9D708A5-9C1F-4B84-A795-C5F191801762} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} {25BCB876-B60A-499B-9046-E9801CFD7780} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} @@ -3957,6 +4218,7 @@ Global {769FF0C1-4424-4FA3-BC44-D7A7DA312A06} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} {6D9E00D8-2893-45E4-9363-3F7F61D416BD} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {70B35F59-AFC2-4D8F-8833-5314D2047A81} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {3755E9F4-CB48-4EC3-B561-3B85964EBDEF} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {F81C5819-85B4-4D2E-B6DC-104A7634461B} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} {CC62F7DB-D089-4677-8575-CAB7A7815C43} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} @@ -3977,6 +4239,16 @@ Global {3A7FE53D-35F7-49DC-9C9A-A5204A53523F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {CCA63A76-D9FC-4130-9F67-4D97F9770D53} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {3384C257-3CFE-4A8F-838C-19DAC5C955DA} = {278D8859-20B1-428F-8448-064F46E1F021} + {2B140378-125F-4DE9-AC37-2CC1B73D7254} = {278D8859-20B1-428F-8448-064F46E1F021} + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {2AA91EED-2D32-4B09-84A3-53D41EED1005} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {921391C6-7626-4212-9928-BC82BC785461} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {C54703BF-D68A-480D-BE27-49B62E45D582} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {9CD8BCAD-F212-4BCC-BA98-899743CE3279} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} From 1fadc67fb36a5959be05ee4f33c21bcb12937313 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:05:25 +0200 Subject: [PATCH 165/328] ADDED: Missing resources on some examples --- .../resources/shaders/glsl120/cubemap.fs | 27 +++++++++ .../resources/shaders/glsl120/cubemap.vs | 20 +++++++ .../resources/shaders/glsl120/skinning.fs | 18 ++++++ .../resources/shaders/glsl120/skinning.vs | 59 +++++++++++++++++++ .../resources/shaders/glsl120/skybox.fs | 29 +++++++++ .../resources/shaders/glsl120/skybox.vs | 24 ++++++++ .../resources/shaders/glsl120/depth.fs | 28 +++++++++ 7 files changed, 205 insertions(+) create mode 100644 examples/models/resources/shaders/glsl120/cubemap.fs create mode 100644 examples/models/resources/shaders/glsl120/cubemap.vs create mode 100644 examples/models/resources/shaders/glsl120/skinning.fs create mode 100644 examples/models/resources/shaders/glsl120/skinning.vs create mode 100644 examples/models/resources/shaders/glsl120/skybox.fs create mode 100644 examples/models/resources/shaders/glsl120/skybox.vs create mode 100644 examples/shaders/resources/shaders/glsl120/depth.fs diff --git a/examples/models/resources/shaders/glsl120/cubemap.fs b/examples/models/resources/shaders/glsl120/cubemap.fs new file mode 100644 index 000000000..529ee4ab9 --- /dev/null +++ b/examples/models/resources/shaders/glsl120/cubemap.fs @@ -0,0 +1,27 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec3 fragPosition; + +// Input uniform values +uniform sampler2D equirectangularMap; + +vec2 SampleSphericalMap(vec3 v) +{ + vec2 uv = vec2(atan(v.z, v.x), asin(v.y)); + uv *= vec2(0.1591, 0.3183); + uv += 0.5; + return uv; +} + +void main() +{ + // Normalize local position + vec2 uv = SampleSphericalMap(normalize(fragPosition)); + + // Fetch color from texture map + vec3 color = texture2D(equirectangularMap, uv).rgb; + + // Calculate final fragment color + gl_FragColor = vec4(color, 1.0); +} diff --git a/examples/models/resources/shaders/glsl120/cubemap.vs b/examples/models/resources/shaders/glsl120/cubemap.vs new file mode 100644 index 000000000..8ce230503 --- /dev/null +++ b/examples/models/resources/shaders/glsl120/cubemap.vs @@ -0,0 +1,20 @@ +#version 120 + +// Input vertex attributes +attribute vec3 vertexPosition; + +// Input uniform values +uniform mat4 matProjection; +uniform mat4 matView; + +// Output vertex attributes (to fragment shader) +varying vec3 fragPosition; + +void main() +{ + // Calculate fragment position based on model transformations + fragPosition = vertexPosition; + + // Calculate final vertex position + gl_Position = matProjection*matView*vec4(vertexPosition, 1.0); +} diff --git a/examples/models/resources/shaders/glsl120/skinning.fs b/examples/models/resources/shaders/glsl120/skinning.fs new file mode 100644 index 000000000..44c6314d1 --- /dev/null +++ b/examples/models/resources/shaders/glsl120/skinning.fs @@ -0,0 +1,18 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; +varying vec4 fragColor; + +// Input uniform values +uniform sampler2D texture0; +uniform vec4 colDiffuse; + +void main() +{ + // Fetch color from texture sampler + vec4 texelColor = texture2D(texture0, fragTexCoord); + + // Calculate final fragment color + gl_FragColor = texelColor*colDiffuse*fragColor; +} diff --git a/examples/models/resources/shaders/glsl120/skinning.vs b/examples/models/resources/shaders/glsl120/skinning.vs new file mode 100644 index 000000000..c08840b54 --- /dev/null +++ b/examples/models/resources/shaders/glsl120/skinning.vs @@ -0,0 +1,59 @@ +#version 120 + +#define MAX_BONE_NUM 64 + +// Input vertex attributes +attribute vec3 vertexPosition; +attribute vec2 vertexTexCoord; +attribute vec4 vertexColor; +attribute vec4 vertexBoneIds; +attribute vec4 vertexBoneWeights; + +// Input uniform values +uniform mat4 mvp; +uniform mat4 boneMatrices[MAX_BONE_NUM]; + +// Output vertex attributes (to fragment shader) +varying vec2 fragTexCoord; +varying vec4 fragColor; + +void main() +{ + int boneIndex0 = int(vertexBoneIds.x); + int boneIndex1 = int(vertexBoneIds.y); + int boneIndex2 = int(vertexBoneIds.z); + int boneIndex3 = int(vertexBoneIds.w); + + // WARNING: OpenGL ES 2.0 does not support automatic matrix transposing, neither transpose() function + mat4 boneMatrixTransposed0 = mat4( + vec4(boneMatrices[boneIndex0][0].x, boneMatrices[boneIndex0][1].x, boneMatrices[boneIndex0][2].x, boneMatrices[boneIndex0][3].x), + vec4(boneMatrices[boneIndex0][0].y, boneMatrices[boneIndex0][1].y, boneMatrices[boneIndex0][2].y, boneMatrices[boneIndex0][3].y), + vec4(boneMatrices[boneIndex0][0].z, boneMatrices[boneIndex0][1].z, boneMatrices[boneIndex0][2].z, boneMatrices[boneIndex0][3].z), + vec4(boneMatrices[boneIndex0][0].w, boneMatrices[boneIndex0][1].w, boneMatrices[boneIndex0][2].w, boneMatrices[boneIndex0][3].w)); + mat4 boneMatrixTransposed1 = mat4( + vec4(boneMatrices[boneIndex1][0].x, boneMatrices[boneIndex1][1].x, boneMatrices[boneIndex1][2].x, boneMatrices[boneIndex1][3].x), + vec4(boneMatrices[boneIndex1][0].y, boneMatrices[boneIndex1][1].y, boneMatrices[boneIndex1][2].y, boneMatrices[boneIndex1][3].y), + vec4(boneMatrices[boneIndex1][0].z, boneMatrices[boneIndex1][1].z, boneMatrices[boneIndex1][2].z, boneMatrices[boneIndex1][3].z), + vec4(boneMatrices[boneIndex1][0].w, boneMatrices[boneIndex1][1].w, boneMatrices[boneIndex1][2].w, boneMatrices[boneIndex1][3].w)); + mat4 boneMatrixTransposed2 = mat4( + vec4(boneMatrices[boneIndex2][0].x, boneMatrices[boneIndex2][1].x, boneMatrices[boneIndex2][2].x, boneMatrices[boneIndex2][3].x), + vec4(boneMatrices[boneIndex2][0].y, boneMatrices[boneIndex2][1].y, boneMatrices[boneIndex2][2].y, boneMatrices[boneIndex2][3].y), + vec4(boneMatrices[boneIndex2][0].z, boneMatrices[boneIndex2][1].z, boneMatrices[boneIndex2][2].z, boneMatrices[boneIndex2][3].z), + vec4(boneMatrices[boneIndex2][0].w, boneMatrices[boneIndex2][1].w, boneMatrices[boneIndex2][2].w, boneMatrices[boneIndex2][3].w)); + mat4 boneMatrixTransposed3 = mat4( + vec4(boneMatrices[boneIndex3][0].x, boneMatrices[boneIndex3][1].x, boneMatrices[boneIndex3][2].x, boneMatrices[boneIndex3][3].x), + vec4(boneMatrices[boneIndex3][0].y, boneMatrices[boneIndex3][1].y, boneMatrices[boneIndex3][2].y, boneMatrices[boneIndex3][3].y), + vec4(boneMatrices[boneIndex3][0].z, boneMatrices[boneIndex3][1].z, boneMatrices[boneIndex3][2].z, boneMatrices[boneIndex3][3].z), + vec4(boneMatrices[boneIndex3][0].w, boneMatrices[boneIndex3][1].w, boneMatrices[boneIndex3][2].w, boneMatrices[boneIndex3][3].w)); + + vec4 skinnedPosition = + vertexBoneWeights.x*(boneMatrixTransposed0*vec4(vertexPosition, 1.0)) + + vertexBoneWeights.y*(boneMatrixTransposed1*vec4(vertexPosition, 1.0)) + + vertexBoneWeights.z*(boneMatrixTransposed2*vec4(vertexPosition, 1.0)) + + vertexBoneWeights.w*(boneMatrixTransposed3*vec4(vertexPosition, 1.0)); + + fragTexCoord = vertexTexCoord; + fragColor = vertexColor; + + gl_Position = mvp*skinnedPosition; +} \ No newline at end of file diff --git a/examples/models/resources/shaders/glsl120/skybox.fs b/examples/models/resources/shaders/glsl120/skybox.fs new file mode 100644 index 000000000..ec9a3c274 --- /dev/null +++ b/examples/models/resources/shaders/glsl120/skybox.fs @@ -0,0 +1,29 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec3 fragPosition; + +// Input uniform values +uniform samplerCube environmentMap; +uniform bool vflipped; +uniform bool doGamma; + +void main() +{ + // Fetch color from texture map + vec4 texelColor = vec4(0.0); + + if (vflipped) texelColor = textureCube(environmentMap, vec3(fragPosition.x, -fragPosition.y, fragPosition.z)); + else texelColor = textureCube(environmentMap, fragPosition); + + vec3 color = vec3(texelColor.x, texelColor.y, texelColor.z); + + if (doGamma) // Apply gamma correction + { + color = color/(color + vec3(1.0)); + color = pow(color, vec3(1.0/2.2)); + } + + // Calculate final fragment color + gl_FragColor = vec4(color, 1.0); +} diff --git a/examples/models/resources/shaders/glsl120/skybox.vs b/examples/models/resources/shaders/glsl120/skybox.vs new file mode 100644 index 000000000..71c933ea5 --- /dev/null +++ b/examples/models/resources/shaders/glsl120/skybox.vs @@ -0,0 +1,24 @@ +#version 120 + +// Input vertex attributes +attribute vec3 vertexPosition; + +// Input uniform values +uniform mat4 matProjection; +uniform mat4 matView; + +// Output vertex attributes (to fragment shader) +varying vec3 fragPosition; + +void main() +{ + // Calculate fragment position based on model transformations + fragPosition = vertexPosition; + + // Remove translation from the view matrix + mat4 rotView = mat4(mat3(matView)); + vec4 clipPos = matProjection*rotView*vec4(vertexPosition, 1.0); + + // Calculate final vertex position + gl_Position = clipPos; +} diff --git a/examples/shaders/resources/shaders/glsl120/depth.fs b/examples/shaders/resources/shaders/glsl120/depth.fs new file mode 100644 index 000000000..5cf6ef71b --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/depth.fs @@ -0,0 +1,28 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; + +// Input uniform values +uniform sampler2D depthTexture; +uniform bool flipY; + +float nearPlane = 0.1; +float farPlane = 100.0; + +void main() +{ + // Handle potential Y-flipping + vec2 texCoord = fragTexCoord; + if (flipY) + texCoord.y = 1.0 - texCoord.y; + + // Sample depth texture + float depth = texture2D(depthTexture, texCoord).r; + + // Linearize depth + float linearDepth = (2.0*nearPlane)/(farPlane + nearPlane - depth*(farPlane - nearPlane)); + + // Output final color + gl_FragColor = vec4(vec3(linearDepth), 1.0); +} \ No newline at end of file From 5eacc872c77032f5679b051807d8498a12dce5a8 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:05:45 +0200 Subject: [PATCH 166/328] Update README.md --- examples/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/README.md b/examples/README.md index 59e2f3d34..1c169d25a 100644 --- a/examples/README.md +++ b/examples/README.md @@ -18,7 +18,6 @@ You may find it easier to use than other toolchains, especially when it comes to ## EXAMPLES COLLECTION [TOTAL: 159] - ### category: core [36] Examples using raylib[core](../src/rcore.c) platform functionality like window creation, inputs, drawing modes and system functionality. From fd79b44920e817f5c0e3f31be0e0bb2450138c65 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:05:50 +0200 Subject: [PATCH 167/328] Create distortion.fs --- .../resources/shaders/glsl120/distortion.fs | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 examples/core/resources/shaders/glsl120/distortion.fs diff --git a/examples/core/resources/shaders/glsl120/distortion.fs b/examples/core/resources/shaders/glsl120/distortion.fs new file mode 100644 index 000000000..496557b07 --- /dev/null +++ b/examples/core/resources/shaders/glsl120/distortion.fs @@ -0,0 +1,50 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; +varying vec4 fragColor; + +// Input uniform values +uniform sampler2D texture0; +uniform vec4 colDiffuse; + +// NOTE: Add your custom variables here +uniform vec2 leftLensCenter; +uniform vec2 rightLensCenter; +uniform vec2 leftScreenCenter; +uniform vec2 rightScreenCenter; +uniform vec2 scale; +uniform vec2 scaleIn; +uniform vec4 deviceWarpParam; +uniform vec4 chromaAbParam; + +void main() +{ + // Compute lens distortion + vec2 lensCenter = fragTexCoord.x < 0.5? leftLensCenter : rightLensCenter; + vec2 screenCenter = fragTexCoord.x < 0.5? leftScreenCenter : rightScreenCenter; + vec2 theta = (fragTexCoord - lensCenter)*scaleIn; + float rSq = theta.x*theta.x + theta.y*theta.y; + vec2 theta1 = theta*(deviceWarpParam.x + deviceWarpParam.y*rSq + deviceWarpParam.z*rSq*rSq + deviceWarpParam.w*rSq*rSq*rSq); + vec2 thetaBlue = theta1*(chromaAbParam.z + chromaAbParam.w*rSq); + vec2 tcBlue = lensCenter + scale*thetaBlue; + + if (any(bvec2(clamp(tcBlue, screenCenter - vec2(0.25, 0.5), screenCenter + vec2(0.25, 0.5)) - tcBlue))) + { + // Set black fragment for everything outside the lens border + gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); + } + else + { + // Compute color chroma aberration + float blue = texture2D(texture0, tcBlue).b; + vec2 tcGreen = lensCenter + scale*theta1; + float green = texture2D(texture0, tcGreen).g; + + vec2 thetaRed = theta1*(chromaAbParam.x + chromaAbParam.y*rSq); + vec2 tcRed = lensCenter + scale*thetaRed; + + float red = texture2D(texture0, tcRed).r; + gl_FragColor = vec4(red, green, blue, 1.0); + } +} From 5d4a233f525207d64e4aa877fd6bd5d8d5df3ac7 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:05:57 +0200 Subject: [PATCH 168/328] Update examples_template.c --- examples/examples_template.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/examples_template.c b/examples/examples_template.c index e82bed065..433fe57bd 100644 --- a/examples/examples_template.c +++ b/examples/examples_template.c @@ -56,7 +56,7 @@ /******************************************************************************************* * -* raylib [] example - +* raylib [] example - * * Example complexity rating: [★☆☆☆] 1/4 * From 64fbf07e7b1b3d16a6d47067f3a53f22d6f0a882 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:06:11 +0200 Subject: [PATCH 169/328] Update audio_sound_multi.c --- examples/audio/audio_sound_multi.c | 38 +++++++++++++++--------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/examples/audio/audio_sound_multi.c b/examples/audio/audio_sound_multi.c index 243ca7bd8..6f9aea3f9 100644 --- a/examples/audio/audio_sound_multi.c +++ b/examples/audio/audio_sound_multi.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [audio] example - Playing sound multiple times +* raylib [audio] example - sound alias * * Example complexity rating: [★★☆☆] 2/4 * @@ -31,18 +31,18 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [audio] example - playing sound multiple times"); + InitWindow(screenWidth, screenHeight, "raylib [audio] example - sound alias"); InitAudioDevice(); // Initialize audio device - // load the sound list - soundArray[0] = LoadSound("resources/sound.wav"); // Load WAV audio file into the first slot as the 'source' sound - // this sound owns the sample data - for (int i = 1; i < MAX_SOUNDS; i++) - { - soundArray[i] = LoadSoundAlias(soundArray[0]); // Load an alias of the sound into slots 1-9. These do not own the sound data, but can be played - } - currentSound = 0; // set the sound list to the start + // Load audio file into the first slot as the 'source' sound, + // this sound owns the sample data + soundArray[0] = LoadSound("resources/sound.wav"); + + // Load an alias of the sound into slots 1-9. These do not own the sound data, but can be played + for (int i = 1; i < MAX_SOUNDS; i++) soundArray[i] = LoadSoundAlias(soundArray[0]); + + currentSound = 0; // Set the sound list to the start SetTargetFPS(60); // Set our game to run at 60 frames-per-second //-------------------------------------------------------------------------------------- @@ -54,14 +54,15 @@ int main(void) //---------------------------------------------------------------------------------- if (IsKeyPressed(KEY_SPACE)) { - PlaySound(soundArray[currentSound]); // play the next open sound slot - currentSound++; // increment the sound slot - if (currentSound >= MAX_SOUNDS) // if the sound slot is out of bounds, go back to 0 - currentSound = 0; + PlaySound(soundArray[currentSound]); // Play the next open sound slot + currentSound++; // Increment the sound slot - // Note: a better way would be to look at the list for the first sound that is not playing and use that slot + // If the sound slot is out of bounds, go back to 0 + if (currentSound >= MAX_SOUNDS) currentSound = 0; + + // NOTE: Another approach would be to look at the list for the first sound + // that is not playing and use that slot } - //---------------------------------------------------------------------------------- // Draw @@ -78,9 +79,8 @@ int main(void) // De-Initialization //-------------------------------------------------------------------------------------- - for (int i = 1; i < MAX_SOUNDS; i++) - UnloadSoundAlias(soundArray[i]); // Unload sound aliases - UnloadSound(soundArray[0]); // Unload source sound data + for (int i = 1; i < MAX_SOUNDS; i++) UnloadSoundAlias(soundArray[i]); // Unload sound aliases + UnloadSound(soundArray[0]); // Unload source sound data CloseAudioDevice(); // Close audio device From 366887b863f49e8e6b67e1cdb115861890c231e6 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:06:39 +0200 Subject: [PATCH 170/328] Update models_loading_vox.c --- examples/models/models_loading_vox.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/examples/models/models_loading_vox.c b/examples/models/models_loading_vox.c index 75b975f94..f8917ecf2 100644 --- a/examples/models/models_loading_vox.c +++ b/examples/models/models_loading_vox.c @@ -40,7 +40,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - const char* voxFileNames[] = { + const char *voxFileNames[] = { "resources/models/vox/chr_knight.vox", "resources/models/vox/chr_sword.vox", "resources/models/vox/monu9.vox", @@ -57,24 +57,23 @@ int main(void) camera.fovy = 45.0f; // Camera field-of-view Y camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - //-------------------------------------------------------------------------------------- // Load MagicaVoxel files Model models[MAX_VOX_FILES] = { 0 }; for (int i = 0; i < MAX_VOX_FILES; i++) { // Load VOX file and measure time - double t0 = GetTime() * 1000.0; + double t0 = GetTime()*1000.0; models[i] = LoadModel(voxFileNames[i]); - double t1 = GetTime() * 1000.0; + double t1 = GetTime()*1000.0; TraceLog(LOG_WARNING, TextFormat("[%s] File loaded in %.3f ms", voxFileNames[i], t1 - t0)); // Compute model translation matrix to center model on draw position (0, 0 , 0) BoundingBox bb = GetModelBoundingBox(models[i]); Vector3 center = { 0 }; - center.x = bb.min.x + (((bb.max.x - bb.min.x) / 2)); - center.z = bb.min.z + (((bb.max.z - bb.min.z) / 2)); + center.x = bb.min.x + (((bb.max.x - bb.min.x)/2)); + center.z = bb.min.z + (((bb.max.z - bb.min.z)/2)); Matrix matTranslate = MatrixTranslate(-center.x, 0, -center.z); models[i].transform = matTranslate; @@ -82,14 +81,13 @@ int main(void) int currentModel = 0; - //-------------------------------------------------------------------------------------- // Load voxel shader Shader shader = LoadShader(TextFormat("resources/shaders/glsl%i/voxel_lighting.vs", GLSL_VERSION), TextFormat("resources/shaders/glsl%i/voxel_lighting.fs", GLSL_VERSION)); // Get some required shader locations shader.locs[SHADER_LOC_VECTOR_VIEW] = GetShaderLocation(shader, "viewPos"); - // NOTE: "matModel" location name is automatically assigned on shader loading, + // NOTE: "matModel" location name is automatically assigned on shader loading, // no need to get the location again if using that uniform name //shader.locs[SHADER_LOC_MATRIX_MODEL] = GetShaderLocation(shader, "matModel"); From 9003cd32ba41834612986a69a092031e347b1e09 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:06:50 +0200 Subject: [PATCH 171/328] Update models_rlgl_solar_system.c --- examples/models/models_rlgl_solar_system.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/models/models_rlgl_solar_system.c b/examples/models/models_rlgl_solar_system.c index 81f3e0f75..ee1e713c2 100644 --- a/examples/models/models_rlgl_solar_system.c +++ b/examples/models/models_rlgl_solar_system.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - rlgl module usage with push/pop matrix transformations +* raylib [models] example - rlgl solar system * * Example complexity rating: [★★★★] 4/4 * @@ -41,7 +41,7 @@ int main(void) const float moonRadius = 0.16f; const float moonOrbitRadius = 1.5f; - InitWindow(screenWidth, screenHeight, "raylib [models] example - rlgl module usage with push/pop matrix transformations"); + InitWindow(screenWidth, screenHeight, "raylib [models] example - rlgl solar system"); // Define the camera to look into our 3d world Camera camera = { 0 }; From 7e597dd574d29e6e466ceaa8c6a2296bb6a9855b Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:07:10 +0200 Subject: [PATCH 172/328] Update rlgl_compute_shader.c --- examples/others/rlgl_compute_shader.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/examples/others/rlgl_compute_shader.c b/examples/others/rlgl_compute_shader.c index b17ba711a..74a776d29 100644 --- a/examples/others/rlgl_compute_shader.c +++ b/examples/others/rlgl_compute_shader.c @@ -51,9 +51,12 @@ int main(void) { // Initialization //-------------------------------------------------------------------------------------- - InitWindow(GOL_WIDTH, GOL_WIDTH, "raylib [rlgl] example - compute shader - game of life"); + const int screenWidth = GOL_WIDTH; + const int screenHeight = GOL_WIDTH; - const Vector2 resolution = { GOL_WIDTH, GOL_WIDTH }; + InitWindow(screenWidth, screenHeight, "raylib [rlgl] example - compute shader - game of life"); + + const Vector2 resolution = { screenWidth, screenHeight }; unsigned int brushSize = 8; // Game of Life logic compute shader From d45b00b191662c40fb8df2977a7f50d72301ebe1 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:07:26 +0200 Subject: [PATCH 173/328] Update shaders_rounded_rectangle.c --- examples/shaders/shaders_rounded_rectangle.c | 22 +++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/examples/shaders/shaders_rounded_rectangle.c b/examples/shaders/shaders_rounded_rectangle.c index 2256db6c3..654fba49b 100644 --- a/examples/shaders/shaders_rounded_rectangle.c +++ b/examples/shaders/shaders_rounded_rectangle.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Rounded Rectangle +* raylib [shaders] example - rounded rectangle * * Example complexity rating: [★★★☆] 3/4 * @@ -24,9 +24,8 @@ #endif //------------------------------------------------------------------------------------ -// Declare custom Structs +// Structs definition //------------------------------------------------------------------------------------ - // Rounded rectangle data typedef struct { Vector4 cornerRadius; // Individual corner radius (top-left, top-right, bottom-left, bottom-right) @@ -54,7 +53,6 @@ typedef struct { //------------------------------------------------------------------------------------ // Module Functions Declaration //------------------------------------------------------------------------------------ - // Create a rounded rectangle and set uniform locations static RoundedRectangle CreateRoundedRectangle(Vector4 cornerRadius, float shadowRadius, Vector2 shadowOffset, float shadowScale, float borderThickness, Shader shader); @@ -71,11 +69,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - const Color rectangleColor = BLUE; - const Color shadowColor = DARKBLUE; - const Color borderColor = SKYBLUE; - - InitWindow(screenWidth, screenHeight, "raylib [shaders] example - Rounded Rectangle"); + InitWindow(screenWidth, screenHeight, "raylib [shaders] example - rounded rectangle"); // Load the shader Shader shader = LoadShader(TextFormat("resources/shaders/glsl%i/base.vs", GLSL_VERSION), @@ -94,6 +88,10 @@ int main(void) // Update shader uniforms UpdateRoundedRectangle(roundedRectangle, shader); + const Color rectangleColor = BLUE; + const Color shadowColor = DARKBLUE; + const Color borderColor = SKYBLUE; + SetTargetFPS(60); //-------------------------------------------------------------------------------------- @@ -124,8 +122,6 @@ int main(void) DrawRectangle(0, 0, screenWidth, screenHeight, WHITE); EndShaderMode(); - - // Draw rectangle shadow using shader rec = (Rectangle){ 50, 200, 110, 60 }; DrawRectangleLines((int)rec.x - 20, (int)rec.y - 20, (int)rec.width + 40, (int)rec.height + 40, DARKGRAY); @@ -143,8 +139,6 @@ int main(void) DrawRectangle(0, 0, screenWidth, screenHeight, WHITE); EndShaderMode(); - - // Draw rectangle's border using shader rec = (Rectangle){ 50, 330, 110, 60 }; DrawRectangleLines((int)rec.x - 20, (int)rec.y - 20, (int)rec.width + 40, (int)rec.height + 40, DARKGRAY); @@ -162,8 +156,6 @@ int main(void) DrawRectangle(0, 0, screenWidth, screenHeight, WHITE); EndShaderMode(); - - // Draw one more rectangle with all three colors rec = (Rectangle){ 240, 80, 500, 300 }; DrawRectangleLines((int)rec.x - 30, (int)rec.y - 30, (int)rec.width + 60, (int)rec.height + 60, DARKGRAY); From f02c7fca8a75c55eaee7e82cb7d560df30f3146b Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:07:45 +0200 Subject: [PATCH 174/328] Update shapes_double_pendulum.c --- examples/shapes/shapes_double_pendulum.c | 85 +++++++++++------------- 1 file changed, 37 insertions(+), 48 deletions(-) diff --git a/examples/shapes/shapes_double_pendulum.c b/examples/shapes/shapes_double_pendulum.c index 85ca4af66..8cf0c5c68 100644 --- a/examples/shapes/shapes_double_pendulum.c +++ b/examples/shapes/shapes_double_pendulum.c @@ -22,12 +22,6 @@ //---------------------------------------------------------------------------------- // Macro Helpers //---------------------------------------------------------------------------------- -#define SCREEN_WIDTH 800 -#define SCREEN_HEIGHT 450 - -#define CENTER_X SCREEN_WIDTH * 0.5 -#define CENTER_Y SCREEN_HEIGHT * 0.5 - 100 - // Constant for Simulation #define SIMULATION_STEPS 30 #define G 9.81 @@ -45,32 +39,32 @@ int main(void) { // Initialization //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + SetConfigFlags(FLAG_WINDOW_HIGHDPI); - InitWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [shapes] example - Double Pendulum"); + InitWindow(screenWidth, screenHeight, "raylib [shapes] example - double pendulum"); // Simulation Paramters - //-------------------------------------------------------------------------------------- float l1 = 15, m1 = 0.2, theta1 = DEG2RAD * 170, w1 = 0; float l2 = 15, m2 = 0.1, theta2 = DEG2RAD * 0, w2 = 0; float lengthScaler = 0.1; float totalM = m1 + m2; Vector2 previousPosition = CalculateDoublePendulumEndPoint(l1, theta1, l2, theta2); - previousPosition.x += CENTER_X; - previousPosition.y += CENTER_Y; + previousPosition.x += (screenWidth/2); + previousPosition.y += (screenHeight/2 - 100); // Scale length float L1 = l1 * lengthScaler; float L2 = l2 * lengthScaler; - // Draw Parameters - //-------------------------------------------------------------------------------------- + // Draw parameters int lineThick = 20, trailThick = 2; float fateAlpha = 0.01; - - // Create Framebuffer - //-------------------------------------------------------------------------------------- - RenderTexture2D target = LoadRenderTexture(SCREEN_WIDTH, SCREEN_HEIGHT); + + // Create framebuffer + RenderTexture2D target = LoadRenderTexture(screenWidth, screenHeight); SetTextureFilter(target.texture, TEXTURE_FILTER_BILINEAR); SetTargetFPS(60); @@ -80,60 +74,56 @@ int main(void) while (!WindowShouldClose()) // Detect window close button or ESC key { // Update + //---------------------------------------------------------------------------------- float dt = GetFrameTime(); float step = dt / SIMULATION_STEPS, step2 = step * step; // Update Physics - larger steps = better approximation - //---------------------------------------------------------------------------------- for (int i = 0; i < SIMULATION_STEPS; ++i) { float delta = theta1 - theta2; - float sinD = sin(delta), cosD = cos(delta), cos2D = cos(2 * delta); + float sinD = sinf(delta), cosD = cosf(delta), cos2D = cosf(2*delta); float ww1 = w1 * w1, ww2 = w2 * w2; // Calculate a1 - float a1 = (-G * (2 * m1 + m2) * sin(theta1) - - m2 * G * sin(theta1 - 2 * theta2) - - 2 * sinD * m2 * (ww2 * L2 + ww1 * L1 * cosD)) - / (L1 * (2 * m1 + m2 - m2 * cos2D)); + float a1 = (-G*(2*m1 + m2)*sinf(theta1) + - m2*G*sinf(theta1 - 2*theta2) + - 2*sinD*m2*(ww2*L2 + ww1*L1*cosD)) + / (L1*(2*m1 + m2 - m2*cos2D)); // Calculate a2 - float a2 = (2 * sinD * (ww1 * L1 * totalM - + G * totalM * cos(theta1) - + ww2 * L2 * m2 * cosD)) - / (L2 * (2 * m1 + m2 - m2 * cos2D)); + float a2 = (2*sinD*(ww1*L1*totalM + + G*totalM*cosf(theta1) + + ww2*L2*m2*cosD)) + / (L2*(2*m1 + m2 - m2*cos2D)); // Update thetas - theta1 += w1 * step + 0.5 * a1 * step2; - theta2 += w2 * step + 0.5 * a2 * step2; + theta1 += w1*step + 0.5f*a1*step2; + theta2 += w2*step + 0.5f*a2*step2; // Update omegas - w1 += a1 * step; - w2 += a2 * step; + w1 += a1*step; + w2 += a2*step; } - //---------------------------------------------------------------------------------- // Calculate position Vector2 currentPosition = CalculateDoublePendulumEndPoint(l1, theta1, l2, theta2); - currentPosition.x += CENTER_X; - currentPosition.y += CENTER_Y; + currentPosition.x += screenWidth/2; + currentPosition.y += screenHeight/2 - 100; - // Draw to framebuffer - //---------------------------------------------------------------------------------- + // Draw to render texture BeginTextureMode(target); - // Draw a transparent rectangle - smaller alpha = longer trails - DrawRectangle(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, Fade(BLACK, fateAlpha)); - + DrawRectangle(0, 0, screenWidth, screenHeight, Fade(BLACK, fateAlpha)); + // Draw trail DrawCircleV(previousPosition, trailThick, RED); DrawLineEx(previousPosition, currentPosition, trailThick * 2, RED); - EndTextureMode(); - //---------------------------------------------------------------------------------- // Update previous position previousPosition = currentPosition; + //---------------------------------------------------------------------------------- // Draw //---------------------------------------------------------------------------------- @@ -141,17 +131,16 @@ int main(void) ClearBackground(BLACK); - // Draw Trails Texture - DrawTextureRec(target.texture, (Rectangle){ 0, 0, target.texture.width, -target.texture.height }, - (Vector2){ 0, 0 }, WHITE); + // Draw trails texture + DrawTextureRec(target.texture, (Rectangle){ 0, 0, target.texture.width, -target.texture.height }, (Vector2){ 0, 0 }, WHITE); - // Draw Double Pendulum - DrawRectanglePro((Rectangle){ CENTER_X, CENTER_Y, 10 * l1, lineThick }, - (Vector2){0, lineThick * 0.5}, 90 - RAD2DEG * theta1, RAYWHITE); + // Draw double pendulum + DrawRectanglePro((Rectangle){ screenWidth/2, screenHeight/2 - 100, 10 * l1, lineThick }, + (Vector2){0, lineThick * 0.5}, 90 - RAD2DEG * theta1, RAYWHITE); Vector2 endpoint1 = CalculatePendulumEndPoint(l1, theta1); - DrawRectanglePro((Rectangle){ CENTER_X + endpoint1.x, CENTER_Y + endpoint1.y, 10 * l2, lineThick }, - (Vector2){0, lineThick * 0.5}, 90 - RAD2DEG * theta2, RAYWHITE); + DrawRectanglePro((Rectangle){ screenWidth/2 + endpoint1.x, screenHeight/2 - 100 + endpoint1.y, 10 * l2, lineThick }, + (Vector2){0, lineThick * 0.5}, 90 - RAD2DEG * theta2, RAYWHITE); EndDrawing(); //---------------------------------------------------------------------------------- From 9f07cfe0b7e152b3c30e435e9c82426230dccb71 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:08:02 +0200 Subject: [PATCH 175/328] Update textures_image_kernel.c --- examples/textures/textures_image_kernel.c | 57 ++++++++++++++--------- 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/examples/textures/textures_image_kernel.c b/examples/textures/textures_image_kernel.c index 456cd1c18..fa1bc92c7 100644 --- a/examples/textures/textures_image_kernel.c +++ b/examples/textures/textures_image_kernel.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Image loading and texture creation +* raylib [textures] example - image kernel convolution * * Example complexity rating: [★★★★] 4/4 * @@ -19,20 +19,14 @@ #include "raylib.h" +//------------------------------------------------------------------------------------ +// Module functions declaration +//------------------------------------------------------------------------------------ +void NormalizeKernel(float *kernel, int size); + //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ -void NormalizeKernel(float *kernel, int size) -{ - float sum = 0.0f; - for (int i = 0; i < size; i++) sum += kernel[i]; - - if (sum != 0.0f) - { - for (int i = 0; i < size; i++) kernel[i] /= sum; - } -} - int main(void) { // Initialization @@ -41,23 +35,26 @@ int main(void) const int screenHeight = 450; InitWindow(screenWidth, screenHeight, "raylib [textures] example - image convolution"); - - Image image = LoadImage("resources/cat.png"); // Loaded in CPU memory (RAM) - float gaussiankernel[] = { + Image image = LoadImage("resources/cat.png"); // Loaded in CPU memory (RAM) + + float gaussiankernel[] = { 1.0f, 2.0f, 1.0f, 2.0f, 4.0f, 2.0f, - 1.0f, 2.0f, 1.0f }; + 1.0f, 2.0f, 1.0f + }; float sobelkernel[] = { 1.0f, 0.0f, -1.0f, 2.0f, 0.0f, -2.0f, - 1.0f, 0.0f, -1.0f }; + 1.0f, 0.0f, -1.0f + }; float sharpenkernel[] = { 0.0f, -1.0f, 0.0f, -1.0f, 5.0f, -1.0f, - 0.0f, -1.0f, 0.0f }; + 0.0f, -1.0f, 0.0f + }; NormalizeKernel(gaussiankernel, 9); NormalizeKernel(sharpenkernel, 9); @@ -65,12 +62,12 @@ int main(void) Image catSharpend = ImageCopy(image); ImageKernelConvolution(&catSharpend, sharpenkernel, 9); - + Image catSobel = ImageCopy(image); ImageKernelConvolution(&catSobel, sobelkernel, 9); Image catGaussian = ImageCopy(image); - + for (int i = 0; i < 6; i++) { ImageKernelConvolution(&catGaussian, gaussiankernel, 9); @@ -80,14 +77,14 @@ int main(void) ImageCrop(&catGaussian, (Rectangle){ 0, 0, (float)200, (float)450 }); ImageCrop(&catSobel, (Rectangle){ 0, 0, (float)200, (float)450 }); ImageCrop(&catSharpend, (Rectangle){ 0, 0, (float)200, (float)450 }); - + // Images converted to texture, GPU memory (VRAM) Texture2D texture = LoadTextureFromImage(image); Texture2D catSharpendTexture = LoadTextureFromImage(catSharpend); Texture2D catSobelTexture = LoadTextureFromImage(catSobel); Texture2D catGaussianTexture = LoadTextureFromImage(catGaussian); - - // Once images have been converted to texture and uploaded to VRAM, + + // Once images have been converted to texture and uploaded to VRAM, // they can be unloaded from RAM UnloadImage(image); UnloadImage(catGaussian); @@ -132,3 +129,17 @@ int main(void) return 0; } + +//------------------------------------------------------------------------------------ +// Module functions definition +//------------------------------------------------------------------------------------ +static void NormalizeKernel(float *kernel, int size) +{ + float sum = 0.0f; + for (int i = 0; i < size; i++) sum += kernel[i]; + + if (sum != 0.0f) + { + for (int i = 0; i < size; i++) kernel[i] /= sum; + } +} From f0889a74fe23c44d869d2876dd19ed580d142e53 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:08:22 +0200 Subject: [PATCH 176/328] EXAMPLES: Format tweaks --- examples/audio/audio_mixed_processor.c | 2 +- examples/audio/audio_music_stream.c | 2 +- examples/audio/audio_sound_positioning.c | 24 ++--- examples/audio/audio_stream_effects.c | 6 +- examples/core/core_2d_camera_mouse_zoom.c | 16 +-- examples/core/core_2d_camera_platformer.c | 2 +- examples/core/core_2d_camera_split_screen.c | 24 ++--- examples/core/core_3d_camera_first_person.c | 2 +- examples/core/core_3d_camera_split_screen.c | 26 ++--- examples/core/core_automation_events.c | 28 ++--- examples/core/core_custom_frame_control.c | 26 ++--- examples/core/core_high_dpi.c | 101 ++++++++++-------- examples/core/core_input_mouse.c | 2 +- examples/core/core_input_multitouch.c | 2 +- examples/core/core_input_virtual_controls.c | 2 +- examples/core/core_loading_thread.c | 2 +- examples/core/core_random_sequence.c | 26 ++--- examples/core/core_random_values.c | 4 +- examples/core/core_smooth_pixelperfect.c | 2 +- examples/core/core_vr_simulator.c | 2 +- examples/core/core_window_letterbox.c | 2 +- examples/core/core_window_should_close.c | 8 +- examples/core/core_world_screen.c | 2 +- examples/models/models_animation.c | 4 +- examples/models/models_billboard.c | 6 +- examples/models/models_bone_socket.c | 20 ++-- examples/models/models_draw_cube_texture.c | 8 +- examples/models/models_gpu_skinning.c | 18 ++-- examples/models/models_loading_gltf.c | 2 +- examples/models/models_mesh_generation.c | 2 +- examples/models/models_mesh_picking.c | 4 +- examples/models/models_point_rendering.c | 26 ++--- examples/models/models_skybox.c | 10 +- examples/models/models_tesseract_view.c | 20 ++-- examples/models/models_waving_cubes.c | 2 +- examples/others/raylib_opengl_interop.c | 26 ++--- examples/others/raymath_vector_angle.c | 18 ++-- examples/others/rlgl_standalone.c | 2 +- examples/shaders/shaders_basic_lighting.c | 8 +- examples/shaders/shaders_basic_pbr.c | 46 ++++---- examples/shaders/shaders_custom_uniform.c | 2 +- examples/shaders/shaders_deferred_render.c | 26 ++--- examples/shaders/shaders_eratosthenes.c | 4 +- examples/shaders/shaders_hot_reloading.c | 2 +- examples/shaders/shaders_hybrid_render.c | 18 ++-- examples/shaders/shaders_julia_set.c | 2 +- examples/shaders/shaders_lightmap.c | 6 +- examples/shaders/shaders_mesh_instancing.c | 2 +- examples/shaders/shaders_multi_sample2d.c | 6 +- examples/shaders/shaders_postprocessing.c | 2 +- examples/shaders/shaders_shadowmap.c | 2 +- examples/shaders/shaders_simple_mask.c | 2 +- examples/shaders/shaders_texture_outline.c | 4 +- examples/shaders/shaders_texture_tiling.c | 10 +- .../shaders/shaders_vertex_displacement.c | 4 +- examples/shaders/shaders_view_depth.c | 6 +- examples/shaders/shaders_write_depth.c | 10 +- examples/shapes/shapes_lines_bezier.c | 2 +- examples/shapes/shapes_logo_raylib.c | 2 +- examples/shapes/shapes_rectangle_advanced.c | 14 +-- examples/shapes/shapes_rectangle_scaling.c | 2 +- examples/shapes/shapes_splines_drawing.c | 40 +++---- examples/shapes/shapes_top_down_lights.c | 16 +-- examples/text/text_codepoints_loading.c | 2 +- examples/text/text_draw_3d.c | 8 +- examples/text/text_font_filters.c | 4 +- examples/text/text_font_sdf.c | 2 +- examples/text/text_font_spritefont.c | 2 +- examples/text/text_format_text.c | 2 +- examples/text/text_input_box.c | 2 +- examples/text/text_rectangle_bounds.c | 2 +- examples/text/text_unicode.c | 4 +- examples/text/text_writing_anim.c | 2 +- .../textures/textures_background_scrolling.c | 2 +- examples/textures/textures_bunnymark.c | 2 +- examples/textures/textures_draw_tiled.c | 4 +- examples/textures/textures_fog_of_war.c | 2 +- examples/textures/textures_image_channel.c | 5 +- examples/textures/textures_image_drawing.c | 2 +- examples/textures/textures_image_generation.c | 2 +- examples/textures/textures_image_loading.c | 2 +- examples/textures/textures_image_rotate.c | 4 +- examples/textures/textures_image_text.c | 2 +- examples/textures/textures_logo_raylib.c | 2 +- examples/textures/textures_mouse_painting.c | 2 +- examples/textures/textures_polygon.c | 8 +- examples/textures/textures_raw_data.c | 2 +- examples/textures/textures_sprite_anim.c | 2 +- examples/textures/textures_srcrec_dstrec.c | 2 +- examples/textures/textures_textured_curve.c | 10 +- examples/textures/textures_to_image.c | 2 +- 91 files changed, 409 insertions(+), 397 deletions(-) diff --git a/examples/audio/audio_mixed_processor.c b/examples/audio/audio_mixed_processor.c index fc9785bc8..e761993ff 100644 --- a/examples/audio/audio_mixed_processor.c +++ b/examples/audio/audio_mixed_processor.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [audio] example - Mixed audio processing +* raylib [audio] example - mixed audio processing * * Example complexity rating: [★★★★] 4/4 * diff --git a/examples/audio/audio_music_stream.c b/examples/audio/audio_music_stream.c index 609b12333..b6efb3d2e 100644 --- a/examples/audio/audio_music_stream.c +++ b/examples/audio/audio_music_stream.c @@ -45,7 +45,7 @@ int main(void) // Update //---------------------------------------------------------------------------------- UpdateMusicStream(music); // Update music buffer with new stream data - + // Restart music playing (stop and play) if (IsKeyPressed(KEY_SPACE)) { diff --git a/examples/audio/audio_sound_positioning.c b/examples/audio/audio_sound_positioning.c index aad558672..4102a97f6 100644 --- a/examples/audio/audio_sound_positioning.c +++ b/examples/audio/audio_sound_positioning.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [audio] example - Playing spatialized 3D sound +* raylib [audio] example - spatialized 3D sound * * Example complexity rating: [★★☆☆] 2/4 * @@ -31,9 +31,9 @@ int main(void) //-------------------------------------------------------------------------------------- const int screenWidth = 800; const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [audio] example - Playing spatialized 3D sound"); - + + InitWindow(screenWidth, screenHeight, "raylib [audio] example - spatialized 3D sound"); + InitAudioDevice(); Sound sound = LoadSound("resources/coin.wav"); @@ -45,9 +45,9 @@ int main(void) .fovy = 60, .projection = CAMERA_PERSPECTIVE }; - + DisableCursor(); - + SetTargetFPS(60); //-------------------------------------------------------------------------------------- @@ -89,7 +89,7 @@ int main(void) //-------------------------------------------------------------------------------------- UnloadSound(sound); CloseAudioDevice(); // Close audio device - + CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- } @@ -100,23 +100,23 @@ static void SetSoundPosition(Camera listener, Sound sound, Vector3 position, flo // Calculate direction vector and distance between listener and sound source Vector3 direction = Vector3Subtract(position, listener.position); float distance = Vector3Length(direction); - + // Apply logarithmic distance attenuation and clamp between 0-1 float attenuation = 1.0f/(1.0f + (distance/maxDist)); attenuation = Clamp(attenuation, 0.0f, 1.0f); - + // Calculate normalized vectors for spatial positioning Vector3 normalizedDirection = Vector3Normalize(direction); Vector3 forward = Vector3Normalize(Vector3Subtract(listener.target, listener.position)); Vector3 right = Vector3Normalize(Vector3CrossProduct(listener.up, forward)); - + // Reduce volume for sounds behind the listener float dotProduct = Vector3DotProduct(forward, normalizedDirection); if (dotProduct < 0.0f) attenuation *= (1.0f + dotProduct*0.5f); - + // Set stereo panning based on sound position relative to listener float pan = 0.5f + 0.5f*Vector3DotProduct(normalizedDirection, right); - + // Apply final sound properties SetSoundVolume(sound, attenuation); SetSoundPan(sound, pan); diff --git a/examples/audio/audio_stream_effects.c b/examples/audio/audio_stream_effects.c index 4a34d3030..435e7b878 100644 --- a/examples/audio/audio_stream_effects.c +++ b/examples/audio/audio_stream_effects.c @@ -53,7 +53,7 @@ int main(void) float timePlayed = 0.0f; // Time played normalized [0.0f..1.0f] bool pause = false; // Music playing paused - + bool enableEffectLPF = false; // Enable effect low-pass-filter bool enableEffectDelay = false; // Enable effect delay (1 second) @@ -98,7 +98,7 @@ int main(void) if (enableEffectDelay) AttachAudioStreamProcessor(music.stream, AudioProcessEffectDelay); else DetachAudioStreamProcessor(music.stream, AudioProcessEffectDelay); } - + // Get normalized time played for current music stream timePlayed = GetMusicTimePlayed(music)/GetMusicTimeLength(music); @@ -119,7 +119,7 @@ int main(void) DrawText("PRESS SPACE TO RESTART MUSIC", 215, 230, 20, LIGHTGRAY); DrawText("PRESS P TO PAUSE/RESUME MUSIC", 208, 260, 20, LIGHTGRAY); - + DrawText(TextFormat("PRESS F TO TOGGLE LPF EFFECT: %s", enableEffectLPF? "ON" : "OFF"), 200, 320, 20, GRAY); DrawText(TextFormat("PRESS D TO TOGGLE DELAY EFFECT: %s", enableEffectDelay? "ON" : "OFF"), 180, 350, 20, GRAY); diff --git a/examples/core/core_2d_camera_mouse_zoom.c b/examples/core/core_2d_camera_mouse_zoom.c index 31aa7bc6b..6cb6dcfa2 100644 --- a/examples/core/core_2d_camera_mouse_zoom.c +++ b/examples/core/core_2d_camera_mouse_zoom.c @@ -47,7 +47,7 @@ int main () //---------------------------------------------------------------------------------- if (IsKeyPressed(KEY_ONE)) zoomMode = 0; else if (IsKeyPressed(KEY_TWO)) zoomMode = 1; - + // Translate based on mouse right click if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) { @@ -68,7 +68,7 @@ int main () // Set the offset to where the mouse is camera.offset = GetMousePosition(); - // Set the target to match, so that the camera maps the world space point + // Set the target to match, so that the camera maps the world space point // under the cursor to the screen space point under the cursor at any zoom camera.target = mouseWorldPos; @@ -89,7 +89,7 @@ int main () // Set the offset to where the mouse is camera.offset = GetMousePosition(); - // Set the target to match, so that the camera maps the world space point + // Set the target to match, so that the camera maps the world space point // under the cursor to the screen space point under the cursor at any zoom camera.target = mouseWorldPos; } @@ -111,7 +111,7 @@ int main () BeginMode2D(camera); - // Draw the 3d grid, rotated 90 degrees and centered around 0,0 + // Draw the 3d grid, rotated 90 degrees and centered around 0,0 // just so we have something in the XY plane rlPushMatrix(); rlTranslatef(0, 25*50, 0); @@ -121,19 +121,19 @@ int main () // Draw a reference circle DrawCircle(GetScreenWidth()/2, GetScreenHeight()/2, 50, MAROON); - + EndMode2D(); - + // Draw mouse reference //Vector2 mousePos = GetWorldToScreen2D(GetMousePosition(), camera) DrawCircleV(GetMousePosition(), 4, DARKGRAY); - DrawTextEx(GetFontDefault(), TextFormat("[%i, %i]", GetMouseX(), GetMouseY()), + DrawTextEx(GetFontDefault(), TextFormat("[%i, %i]", GetMouseX(), GetMouseY()), Vector2Add(GetMousePosition(), (Vector2){ -44, -24 }), 20, 2, BLACK); DrawText("[1][2] Select mouse zoom mode (Wheel or Move)", 20, 20, 20, DARKGRAY); if (zoomMode == 0) DrawText("Mouse left button drag to move, mouse wheel to zoom", 20, 50, 20, DARKGRAY); else DrawText("Mouse left button drag to move, mouse press and move to zoom", 20, 50, 20, DARKGRAY); - + EndDrawing(); //---------------------------------------------------------------------------------- } diff --git a/examples/core/core_2d_camera_platformer.c b/examples/core/core_2d_camera_platformer.c index 1ccb35167..d4d46e295 100644 --- a/examples/core/core_2d_camera_platformer.c +++ b/examples/core/core_2d_camera_platformer.c @@ -137,7 +137,7 @@ int main(void) Rectangle playerRect = { player.position.x - 20, player.position.y - 40, 40.0f, 40.0f }; DrawRectangleRec(playerRect, RED); - + DrawCircleV(player.position, 5.0f, GOLD); EndMode2D(); diff --git a/examples/core/core_2d_camera_split_screen.c b/examples/core/core_2d_camera_split_screen.c index 900db450e..169465f9d 100644 --- a/examples/core/core_2d_camera_split_screen.c +++ b/examples/core/core_2d_camera_split_screen.c @@ -4,7 +4,7 @@ * * Example complexity rating: [★★★★] 4/4 * -* Addapted from the core_3d_camera_split_screen example: +* Addapted from the core_3d_camera_split_screen example: * https://github.com/raysan5/raylib/blob/master/examples/core/core_3d_camera_split_screen.c * * Example originally created with raylib 4.5, last time updated with raylib 4.5 @@ -81,9 +81,9 @@ int main(void) //---------------------------------------------------------------------------------- BeginTextureMode(screenCamera1); ClearBackground(RAYWHITE); - + BeginMode2D(camera1); - + // Draw full scene with first camera for (int i = 0; i < screenWidth/PLAYER_SIZE + 1; i++) { @@ -106,17 +106,17 @@ int main(void) DrawRectangleRec(player1, RED); DrawRectangleRec(player2, BLUE); EndMode2D(); - + DrawRectangle(0, 0, GetScreenWidth()/2, 30, Fade(RAYWHITE, 0.6f)); DrawText("PLAYER1: W/S/A/D to move", 10, 10, 10, MAROON); - + EndTextureMode(); BeginTextureMode(screenCamera2); ClearBackground(RAYWHITE); - + BeginMode2D(camera2); - + // Draw full scene with second camera for (int i = 0; i < screenWidth/PLAYER_SIZE + 1; i++) { @@ -138,21 +138,21 @@ int main(void) DrawRectangleRec(player1, RED); DrawRectangleRec(player2, BLUE); - + EndMode2D(); - + DrawRectangle(0, 0, GetScreenWidth()/2, 30, Fade(RAYWHITE, 0.6f)); DrawText("PLAYER2: UP/DOWN/LEFT/RIGHT to move", 10, 10, 10, DARKBLUE); - + EndTextureMode(); // Draw both views render textures to the screen side by side BeginDrawing(); ClearBackground(BLACK); - + DrawTextureRec(screenCamera1.texture, splitScreenRect, (Vector2){ 0, 0 }, WHITE); DrawTextureRec(screenCamera2.texture, splitScreenRect, (Vector2){ screenWidth/2.0f, 0 }, WHITE); - + DrawRectangle(GetScreenWidth()/2 - 2, 0, 4, GetScreenHeight(), LIGHTGRAY); EndDrawing(); } diff --git a/examples/core/core_3d_camera_first_person.c b/examples/core/core_3d_camera_first_person.c index c26fe827c..42e85d0d8 100644 --- a/examples/core/core_3d_camera_first_person.c +++ b/examples/core/core_3d_camera_first_person.c @@ -127,7 +127,7 @@ int main(void) UpdateCameraPro(&camera, (Vector3){ (IsKeyDown(KEY_W) || IsKeyDown(KEY_UP))*0.1f - // Move forward-backward - (IsKeyDown(KEY_S) || IsKeyDown(KEY_DOWN))*0.1f, + (IsKeyDown(KEY_S) || IsKeyDown(KEY_DOWN))*0.1f, (IsKeyDown(KEY_D) || IsKeyDown(KEY_RIGHT))*0.1f - // Move right-left (IsKeyDown(KEY_A) || IsKeyDown(KEY_LEFT))*0.1f, 0.0f // Move up-down diff --git a/examples/core/core_3d_camera_split_screen.c b/examples/core/core_3d_camera_split_screen.c index f825a52f9..b0cb0a18d 100644 --- a/examples/core/core_3d_camera_split_screen.c +++ b/examples/core/core_3d_camera_split_screen.c @@ -51,7 +51,7 @@ int main(void) // Build a flipped rectangle the size of the split view to use for drawing later Rectangle splitScreenRect = { 0.0f, 0.0f, (float)screenPlayer1.texture.width, (float)-screenPlayer1.texture.height }; - + // Grid data int count = 5; float spacing = 4; @@ -98,9 +98,9 @@ int main(void) // Draw Player1 view to the render texture BeginTextureMode(screenPlayer1); ClearBackground(SKYBLUE); - + BeginMode3D(cameraPlayer1); - + // Draw scene: grid of cube trees on a plane to make a "world" DrawPlane((Vector3){ 0, 0, 0 }, (Vector2){ 50, 50 }, BEIGE); // Simple world plane @@ -116,20 +116,20 @@ int main(void) // Draw a cube at each player's position DrawCube(cameraPlayer1.position, 1, 1, 1, RED); DrawCube(cameraPlayer2.position, 1, 1, 1, BLUE); - + EndMode3D(); - + DrawRectangle(0, 0, GetScreenWidth()/2, 40, Fade(RAYWHITE, 0.8f)); DrawText("PLAYER1: W/S to move", 10, 10, 20, MAROON); - + EndTextureMode(); // Draw Player2 view to the render texture BeginTextureMode(screenPlayer2); ClearBackground(SKYBLUE); - + BeginMode3D(cameraPlayer2); - + // Draw scene: grid of cube trees on a plane to make a "world" DrawPlane((Vector3){ 0, 0, 0 }, (Vector2){ 50, 50 }, BEIGE); // Simple world plane @@ -145,21 +145,21 @@ int main(void) // Draw a cube at each player's position DrawCube(cameraPlayer1.position, 1, 1, 1, RED); DrawCube(cameraPlayer2.position, 1, 1, 1, BLUE); - + EndMode3D(); - + DrawRectangle(0, 0, GetScreenWidth()/2, 40, Fade(RAYWHITE, 0.8f)); DrawText("PLAYER2: UP/DOWN to move", 10, 10, 20, DARKBLUE); - + EndTextureMode(); // Draw both views render textures to the screen side by side BeginDrawing(); ClearBackground(BLACK); - + DrawTextureRec(screenPlayer1.texture, splitScreenRect, (Vector2){ 0, 0 }, WHITE); DrawTextureRec(screenPlayer2.texture, splitScreenRect, (Vector2){ screenWidth/2.0f, 0 }, WHITE); - + DrawRectangle(GetScreenWidth()/2 - 2, 0, 4, GetScreenHeight(), LIGHTGRAY); EndDrawing(); } diff --git a/examples/core/core_automation_events.c b/examples/core/core_automation_events.c index fab363d58..6ae0a4336 100644 --- a/examples/core/core_automation_events.c +++ b/examples/core/core_automation_events.c @@ -54,7 +54,7 @@ int main(void) player.position = (Vector2){ 400, 280 }; player.speed = 0; player.canJump = false; - + // Define environment elements (platforms) EnvElement envElements[MAX_ENVIRONMENT_ELEMENTS] = { {{ 0, 0, 1000, 400 }, 0, LIGHTGRAY }, @@ -70,13 +70,13 @@ int main(void) camera.offset = (Vector2){ screenWidth/2.0f, screenHeight/2.0f }; camera.rotation = 0.0f; camera.zoom = 1.0f; - + // Automation events AutomationEventList aelist = LoadAutomationEventList(0); // Initialize list of automation events to record new events SetAutomationEventList(&aelist); bool eventRecording = false; bool eventPlaying = false; - + unsigned int frameCounter = 0; unsigned int playFrameCounter = 0; unsigned int currentPlayFrame = 0; @@ -90,7 +90,7 @@ int main(void) // Update //---------------------------------------------------------------------------------- float deltaTime = 0.015f;//GetFrameTime(); - + // Dropped files logic //---------------------------------------------------------------------------------- if (IsFileDropped()) @@ -102,14 +102,14 @@ int main(void) { UnloadAutomationEventList(aelist); aelist = LoadAutomationEventList(droppedFiles.paths[0]); - + eventRecording = false; - + // Reset scene state to play eventPlaying = true; playFrameCounter = 0; currentPlayFrame = 0; - + player.position = (Vector2){ 400, 280 }; player.speed = 0; player.canJump = false; @@ -174,7 +174,7 @@ int main(void) //---------------------------------------------------------------------------------- // Events playing - // NOTE: Logic must be before Camera update because it depends on mouse-wheel value, + // NOTE: Logic must be before Camera update because it depends on mouse-wheel value, // that can be set by the played event... but some other inputs could be affected //---------------------------------------------------------------------------------- if (eventPlaying) @@ -228,7 +228,7 @@ int main(void) if (min.x > 0) camera.offset.x = screenWidth/2 - min.x; if (min.y > 0) camera.offset.y = screenHeight/2 - min.y; //---------------------------------------------------------------------------------- - + // Events management if (IsKeyPressed(KEY_S)) // Toggle events recording { @@ -238,12 +238,12 @@ int main(void) { StopAutomationEventRecording(); eventRecording = false; - + ExportAutomationEventList(aelist, "automation.rae"); - + TraceLog(LOG_INFO, "RECORDED FRAMES: %i", aelist.count); } - else + else { SetAutomationEventBaseFrame(180); StartAutomationEventRecording(); @@ -293,7 +293,7 @@ int main(void) DrawRectangleRec((Rectangle){ player.position.x - 20, player.position.y - 40, 40, 40 }, RED); EndMode2D(); - + // Draw game controls DrawRectangle(10, 10, 290, 145, Fade(SKYBLUE, 0.5f)); DrawRectangleLines(10, 10, 290, 145, Fade(BLUE, 0.8f)); @@ -323,7 +323,7 @@ int main(void) if (((frameCounter/15)%2) == 1) DrawText(TextFormat("PLAYING RECORDED EVENTS... [%i]", currentPlayFrame), 50, 170, 10, DARKGREEN); } - + EndDrawing(); //---------------------------------------------------------------------------------- diff --git a/examples/core/core_custom_frame_control.c b/examples/core/core_custom_frame_control.c index 2e9595e98..ed08f8e87 100644 --- a/examples/core/core_custom_frame_control.c +++ b/examples/core/core_custom_frame_control.c @@ -39,7 +39,7 @@ int main(void) //-------------------------------------------------------------------------------------- const int screenWidth = 800; const int screenHeight = 450; - + InitWindow(screenWidth, screenHeight, "raylib [core] example - custom frame control"); // Custom timming variables @@ -48,11 +48,11 @@ int main(void) double updateDrawTime = 0.0; // Update + Draw time double waitTime = 0.0; // Wait time (if target fps required) float deltaTime = 0.0f; // Frame time (Update + Draw + Wait time) - + float timeCounter = 0.0f; // Accumulative time counter (seconds) float position = 0.0f; // Circle position bool pause = false; // Pause control flag - + int targetFPS = 60; // Our initial target fps //-------------------------------------------------------------------------------------- @@ -64,12 +64,12 @@ int main(void) #ifndef PLATFORM_WEB // NOTE: On non web platforms the PollInputEvents just works before the inputs checks PollInputEvents(); // Poll input events (SUPPORT_CUSTOM_FRAME_CONTROL) #endif - + if (IsKeyPressed(KEY_SPACE)) pause = !pause; - + if (IsKeyPressed(KEY_UP)) targetFPS += 20; else if (IsKeyPressed(KEY_DOWN)) targetFPS -= 20; - + if (targetFPS < 0) targetFPS = 0; if (!pause) @@ -91,12 +91,12 @@ int main(void) ClearBackground(RAYWHITE); for (int i = 0; i < GetScreenWidth()/200; i++) DrawRectangle(200*i, 0, 1, GetScreenHeight(), SKYBLUE); - + DrawCircle((int)position, GetScreenHeight()/2 - 25, 50, RED); - + DrawText(TextFormat("%03.0f ms", timeCounter*1000.0f), (int)position - 40, GetScreenHeight()/2 - 100, 20, MAROON); DrawText(TextFormat("PosX: %03.0f", position), (int)position - 50, GetScreenHeight()/2 + 40, 20, BLACK); - + DrawText("Circle is moving at a constant 200 pixels/sec,\nindependently of the frame rate.", 10, 10, 20, DARKGRAY); DrawText("PRESS SPACE to PAUSE MOVEMENT", 10, GetScreenHeight() - 60, 20, GRAY); DrawText("PRESS UP | DOWN to CHANGE TARGET FPS", 10, GetScreenHeight() - 30, 20, GRAY); @@ -108,18 +108,18 @@ int main(void) EndDrawing(); - // NOTE: In case raylib is configured to SUPPORT_CUSTOM_FRAME_CONTROL, + // NOTE: In case raylib is configured to SUPPORT_CUSTOM_FRAME_CONTROL, // Events polling, screen buffer swap and frame time control must be managed by the user SwapScreenBuffer(); // Flip the back buffer to screen (front buffer) - + currentTime = GetTime(); updateDrawTime = currentTime - previousTime; - + if (targetFPS > 0) // We want a fixed frame rate { waitTime = (1.0f/(float)targetFPS) - updateDrawTime; - if (waitTime > 0.0) + if (waitTime > 0.0) { WaitTime((float)waitTime); currentTime = GetTime(); diff --git a/examples/core/core_high_dpi.c b/examples/core/core_high_dpi.c index b9417bd63..05661f50e 100644 --- a/examples/core/core_high_dpi.c +++ b/examples/core/core_high_dpi.c @@ -13,12 +13,10 @@ #include "raylib.h" -static void DrawTextCenter(const char *text, int x, int y, int fontSize, Color color) -{ - Vector2 size = MeasureTextEx(GetFontDefault(), text, (float)fontSize, 3); - Vector2 pos = (Vector2){x - size.x/2, y - size.y/2 }; - DrawTextEx(GetFontDefault(), text, pos, (float)fontSize, 3, color); -} +//------------------------------------------------------------------------------------ +// Module functions declaration +//------------------------------------------------------------------------------------ +static void DrawTextCenter(const char *text, int x, int y, int fontSize, Color color); //------------------------------------------------------------------------------------ // Program main entry point @@ -31,10 +29,20 @@ int main(void) const int screenHeight = 450; SetConfigFlags(FLAG_WINDOW_HIGHDPI | FLAG_WINDOW_RESIZABLE); - InitWindow(screenWidth, screenHeight, "raylib [core] example - highdpi"); SetWindowMinSize(450, 450); + int logicalGridDescY = 120; + int logicalGridLabelY = logicalGridDescY + 30; + int logicalGridTop = logicalGridLabelY + 30; + int logicalGridBottom = logicalGridTop + 80; + int pixelGridTop = logicalGridBottom - 20; + int pixelGridBottom = pixelGridTop + 80; + int pixelGridLabelY = pixelGridBottom + 30; + int pixelGridDescY = pixelGridLabelY + 30; + int cellSize = 50; + float cellSizePx = (float)cellSize; + SetTargetFPS(60); // Set our game to run at 60 frames-per-second //-------------------------------------------------------------------------------------- @@ -44,67 +52,60 @@ int main(void) // Update //---------------------------------------------------------------------------------- int monitorCount = GetMonitorCount(); - if (monitorCount > 1 && IsKeyPressed(KEY_N)) { - SetWindowMonitor((GetCurrentMonitor() + 1) % monitorCount); + + if ((monitorCount > 1) && IsKeyPressed(KEY_N)) + { + SetWindowMonitor((GetCurrentMonitor() + 1)%monitorCount); } + int currentMonitor = GetCurrentMonitor(); + Vector2 dpiScale = GetWindowScaleDPI(); + cellSizePx = ((float)cellSize)/dpiScale.x; + //---------------------------------------------------------------------------------- // Draw //---------------------------------------------------------------------------------- BeginDrawing(); - Vector2 dpiScale = GetWindowScaleDPI(); ClearBackground(RAYWHITE); - int windowCenter = GetScreenWidth() / 2; + int windowCenter = GetScreenWidth()/2; DrawTextCenter(TextFormat("Dpi Scale: %f", dpiScale.x), windowCenter, 30, 40, DARKGRAY); - DrawTextCenter(TextFormat("Monitor: %d/%d ([N] next monitor)", currentMonitor+1, monitorCount), windowCenter, 70, 16, LIGHTGRAY); - - const int logicalGridDescY = 120; - const int logicalGridLabelY = logicalGridDescY + 30; - const int logicalGridTop = logicalGridLabelY + 30; - const int logicalGridBottom = logicalGridTop + 80; - const int pixelGridTop = logicalGridBottom - 20; - const int pixelGridBottom = pixelGridTop + 80; - const int pixelGridLabelY = pixelGridBottom + 30; - const int pixelGridDescY = pixelGridLabelY + 30; - - const int cellSize = 50; - const float cellSizePx = ((float)cellSize) / dpiScale.x; - + DrawTextCenter(TextFormat("Monitor: %d/%d ([N] next monitor)", currentMonitor+1, monitorCount), windowCenter, 70, 20, LIGHTGRAY); DrawTextCenter(TextFormat("Window is %d \"logical points\" wide", GetScreenWidth()), windowCenter, logicalGridDescY, 20, ORANGE); + bool odd = true; - for (int i = cellSize; i < GetScreenWidth(); i += cellSize, odd = !odd) { - if (odd) { - DrawRectangle(i, logicalGridTop, cellSize, logicalGridBottom-logicalGridTop, ORANGE); - } - DrawTextCenter(TextFormat("%d", i), i, logicalGridLabelY, 12, LIGHTGRAY); + for (int i = cellSize; i < GetScreenWidth(); i += cellSize, odd = !odd) + { + if (odd) DrawRectangle(i, logicalGridTop, cellSize, logicalGridBottom-logicalGridTop, ORANGE); + + DrawTextCenter(TextFormat("%d", i), i, logicalGridLabelY, 10, LIGHTGRAY); DrawLine(i, logicalGridLabelY + 10, i, logicalGridBottom, GRAY); } odd = true; const int minTextSpace = 30; - int last_text_x = -minTextSpace; - for (int i = cellSize; i < GetRenderWidth(); i += cellSize, odd = !odd) { - int x = (int)(((float)i) / dpiScale.x); - if (odd) { - DrawRectangle(x, pixelGridTop, (int)cellSizePx, pixelGridBottom-pixelGridTop, CLITERAL(Color){ 0, 121, 241, 100 }); - } + int lastTextX = -minTextSpace; + for (int i = cellSize; i < GetRenderWidth(); i += cellSize, odd = !odd) + { + int x = (int)(((float)i)/dpiScale.x); + if (odd) DrawRectangle(x, pixelGridTop, (int)cellSizePx, pixelGridBottom - pixelGridTop, CLITERAL(Color){ 0, 121, 241, 100 }); + DrawLine(x, pixelGridTop, (int)(((float)i) / dpiScale.x), pixelGridLabelY - 10, GRAY); - if (x - last_text_x >= minTextSpace) { - DrawTextCenter(TextFormat("%d", i), x, pixelGridLabelY, 12, LIGHTGRAY); - last_text_x = x; + + if ((x - lastTextX) >= minTextSpace) + { + DrawTextCenter(TextFormat("%d", i), x, pixelGridLabelY, 10, LIGHTGRAY); + lastTextX = x; } } DrawTextCenter(TextFormat("Window is %d \"physical pixels\" wide", GetRenderWidth()), windowCenter, pixelGridDescY, 20, BLUE); - { - const char *text = "Can you see this?"; - Vector2 size = MeasureTextEx(GetFontDefault(), text, 16, 3); - Vector2 pos = (Vector2){GetScreenWidth() - size.x - 5, GetScreenHeight() - size.y - 5}; - DrawTextEx(GetFontDefault(), text, pos, 16, 3, LIGHTGRAY); - } + const char *text = "Can you see this?"; + Vector2 size = MeasureTextEx(GetFontDefault(), text, 20, 3); + Vector2 pos = (Vector2){ GetScreenWidth() - size.x - 5, GetScreenHeight() - size.y - 5 }; + DrawTextEx(GetFontDefault(), text, pos, 20, 3, LIGHTGRAY); EndDrawing(); //---------------------------------------------------------------------------------- @@ -117,3 +118,13 @@ int main(void) return 0; } + +//------------------------------------------------------------------------------------ +// Module functions definition +//------------------------------------------------------------------------------------ +static void DrawTextCenter(const char *text, int x, int y, int fontSize, Color color) +{ + Vector2 size = MeasureTextEx(GetFontDefault(), text, (float)fontSize, 3); + Vector2 pos = (Vector2){ x - size.x/2, y - size.y/2 }; + DrawTextEx(GetFontDefault(), text, pos, (float)fontSize, 3, color); +} diff --git a/examples/core/core_input_mouse.c b/examples/core/core_input_mouse.c index 6091ded45..58c1c4035 100644 --- a/examples/core/core_input_mouse.c +++ b/examples/core/core_input_mouse.c @@ -52,7 +52,7 @@ int main(void) isCursorHidden = 0; } } - + ballPosition = GetMousePosition(); if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) ballColor = MAROON; diff --git a/examples/core/core_input_multitouch.c b/examples/core/core_input_multitouch.c index 55015235c..136c603cc 100644 --- a/examples/core/core_input_multitouch.c +++ b/examples/core/core_input_multitouch.c @@ -54,7 +54,7 @@ int main(void) BeginDrawing(); ClearBackground(RAYWHITE); - + for (int i = 0; i < tCount; ++i) { // Make sure point is not (0, 0) as this means there is no touch for it diff --git a/examples/core/core_input_virtual_controls.c b/examples/core/core_input_virtual_controls.c index 80d9f0b3b..6a4946655 100644 --- a/examples/core/core_input_virtual_controls.c +++ b/examples/core/core_input_virtual_controls.c @@ -7,7 +7,7 @@ * Example originally created with raylib 5.0, last time updated with raylib 5.0 * * Example create by GreenSnakeLinux (@GreenSnakeLinux), -* lighter by oblerion (@oblerion) and +* lighter by oblerion (@oblerion) and * reviewed by Ramon Santamaria (@raysan5) and * improved by danilwhale (@danilwhale) * diff --git a/examples/core/core_loading_thread.c b/examples/core/core_loading_thread.c index cd3d5a744..1fa84640d 100644 --- a/examples/core/core_loading_thread.c +++ b/examples/core/core_loading_thread.c @@ -4,7 +4,7 @@ * * Example complexity rating: [★★★☆] 3/4 * -* NOTE: This example requires linking with pthreads library on MinGW, +* NOTE: This example requires linking with pthreads library on MinGW, * it can be accomplished passing -static parameter to compiler * * Example originally created with raylib 2.5, last time updated with raylib 3.0 diff --git a/examples/core/core_random_sequence.c b/examples/core/core_random_sequence.c index 1aa0a068c..b92eaba88 100644 --- a/examples/core/core_random_sequence.c +++ b/examples/core/core_random_sequence.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Generates a random sequence +* raylib [core] example - generate random sequence * * Example complexity rating: [★☆☆☆] 1/4 * @@ -43,7 +43,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [core] example - Generates a random sequence"); + InitWindow(screenWidth, screenHeight, "raylib [core] example - generate random sequence"); int rectCount = 20; float rectSize = (float)screenWidth/rectCount; @@ -118,8 +118,8 @@ int main(void) //------------------------------------------------------------------------------------ static Color GenerateRandomColor() { - Color color = { - GetRandomValue(0, 255), + Color color = { + GetRandomValue(0, 255), GetRandomValue(0, 255), GetRandomValue(0, 255), 255 @@ -138,20 +138,20 @@ static ColorRect *GenerateRandomColorRectSequence(float rectCount, float rectWid for (int i = 0; i < rectCount; i++) { int rectHeight = (int)Remap((float)seq[i], 0, rectCount - 1, 0, screenHeight); - + rectangles[i].c = GenerateRandomColor(); rectangles[i].r = CLITERAL(Rectangle){ startX + i*rectWidth, screenHeight - rectHeight, rectWidth, (float)rectHeight }; } - + UnloadRandomSequence(seq); - + return rectangles; } static void ShuffleColorRectSequence(ColorRect *rectangles, int rectCount) { int *seq = LoadRandomSequence(rectCount, 0, rectCount - 1); - + for (int i1 = 0; i1 < rectCount; i1++) { ColorRect *r1 = &rectangles[i1]; @@ -166,16 +166,16 @@ static void ShuffleColorRectSequence(ColorRect *rectangles, int rectCount) r2->r.height = tmp.r.height; r2->r.y = tmp.r.y; } - + UnloadRandomSequence(seq); } static void DrawTextCenterKeyHelp(const char *key, const char *text, int posX, int posY, int fontSize, Color color) { - int spaceSize = MeasureText(" ", fontSize); - int pressSize = MeasureText("Press", fontSize); - int keySize = MeasureText(key, fontSize); - int textSize = MeasureText(text, fontSize); + int spaceSize = MeasureText(" ", fontSize); + int pressSize = MeasureText("Press", fontSize); + int keySize = MeasureText(key, fontSize); + int textSize = MeasureText(text, fontSize); int textSizeCurrent = 0; DrawText("Press", posX, posY, fontSize, color); diff --git a/examples/core/core_random_values.c b/examples/core/core_random_values.c index 4abc87694..16b89e700 100644 --- a/examples/core/core_random_values.c +++ b/examples/core/core_random_values.c @@ -30,9 +30,9 @@ int main(void) // SetRandomSeed(0xaabbccff); // Set a custom random seed if desired, by default: "time(NULL)" int randValue = GetRandomValue(-8, 5); // Get a random integer number between -8 and 5 (both included) - + unsigned int framesCounter = 0; // Variable used to count frames - + SetTargetFPS(60); // Set our game to run at 60 frames-per-second //-------------------------------------------------------------------------------------- diff --git a/examples/core/core_smooth_pixelperfect.c b/examples/core/core_smooth_pixelperfect.c index 964bacdb3..0bd82db43 100644 --- a/examples/core/core_smooth_pixelperfect.c +++ b/examples/core/core_smooth_pixelperfect.c @@ -5,7 +5,7 @@ * Example complexity rating: [★★★☆] 3/4 * * Example originally created with raylib 3.7, last time updated with raylib 4.0 -* +* * Example contributed by Giancamillo Alessandroni (@NotManyIdeasDev) and * reviewed by Ramon Santamaria (@raysan5) * diff --git a/examples/core/core_vr_simulator.c b/examples/core/core_vr_simulator.c index 43b1ec471..34b556e99 100644 --- a/examples/core/core_vr_simulator.c +++ b/examples/core/core_vr_simulator.c @@ -127,7 +127,7 @@ int main(void) EndMode3D(); EndVrStereoMode(); EndTextureMode(); - + BeginDrawing(); ClearBackground(RAYWHITE); BeginShaderMode(distortion); diff --git a/examples/core/core_window_letterbox.c b/examples/core/core_window_letterbox.c index b3622c8b9..a46e9eec6 100644 --- a/examples/core/core_window_letterbox.c +++ b/examples/core/core_window_letterbox.c @@ -86,7 +86,7 @@ int main(void) DrawText(TextFormat("Default Mouse: [%i , %i]", (int)mouse.x, (int)mouse.y), 350, 25, 20, GREEN); DrawText(TextFormat("Virtual Mouse: [%i , %i]", (int)virtualMouse.x, (int)virtualMouse.y), 350, 55, 20, YELLOW); EndTextureMode(); - + BeginDrawing(); ClearBackground(BLACK); // Clear screen background diff --git a/examples/core/core_window_should_close.c b/examples/core/core_window_should_close.c index 56561795d..274891ef3 100644 --- a/examples/core/core_window_should_close.c +++ b/examples/core/core_window_should_close.c @@ -26,9 +26,9 @@ int main() const int screenHeight = 450; InitWindow(screenWidth, screenHeight, "raylib [core] example - window should close"); - + SetExitKey(KEY_NULL); // Disable KEY_ESCAPE to close window, X-button still works - + bool exitWindowRequested = false; // Flag to request window to exit bool exitWindow = false; // Flag to set window to exit @@ -42,12 +42,12 @@ int main() //---------------------------------------------------------------------------------- // Detect if X-button or KEY_ESCAPE have been pressed to close window if (WindowShouldClose() || IsKeyPressed(KEY_ESCAPE)) exitWindowRequested = true; - + if (exitWindowRequested) { // A request for close window has been issued, we can save data before closing // or just show a message asking for confirmation - + if (IsKeyPressed(KEY_Y)) exitWindow = true; else if (IsKeyPressed(KEY_N)) exitWindowRequested = false; } diff --git a/examples/core/core_world_screen.c b/examples/core/core_world_screen.c index f302c3b27..6e065ca34 100644 --- a/examples/core/core_world_screen.c +++ b/examples/core/core_world_screen.c @@ -70,7 +70,7 @@ int main(void) EndMode3D(); DrawText("Enemy: 100 / 100", (int)cubeScreenPosition.x - MeasureText("Enemy: 100/100", 20)/2, (int)cubeScreenPosition.y, 20, BLACK); - + DrawText(TextFormat("Cube position in screen space coordinates: [%i, %i]", (int)cubeScreenPosition.x, (int)cubeScreenPosition.y), 10, 10, 20, LIME); DrawText("Text 2d should be always on top of the cube", 10, 40, 20, GRAY); diff --git a/examples/models/models_animation.c b/examples/models/models_animation.c index b334e17ea..a0f514ad2 100644 --- a/examples/models/models_animation.c +++ b/examples/models/models_animation.c @@ -15,8 +15,8 @@ * ******************************************************************************************** * -* NOTE: To export a model from blender, make sure it is not posed, the vertices need to be -* in the same position as they would be in edit mode and the scale of your models is +* NOTE: To export a model from blender, make sure it is not posed, the vertices need to be +* in the same position as they would be in edit mode and the scale of your models is * set to 0. Scaling can be done from the export menu. * ********************************************************************************************/ diff --git a/examples/models/models_billboard.c b/examples/models/models_billboard.c index 1d49ab89e..84c02ea23 100644 --- a/examples/models/models_billboard.c +++ b/examples/models/models_billboard.c @@ -85,17 +85,17 @@ int main(void) DrawGrid(10, 1.0f); // Draw a grid // Draw order matters! - if (distanceStatic > distanceRotating) + if (distanceStatic > distanceRotating) { DrawBillboard(camera, bill, billPositionStatic, 2.0f, WHITE); DrawBillboardPro(camera, bill, source, billPositionRotating, billUp, size, origin, rotation, WHITE); - } + } else { DrawBillboardPro(camera, bill, source, billPositionRotating, billUp, size, origin, rotation, WHITE); DrawBillboard(camera, bill, billPositionStatic, 2.0f, WHITE); } - + EndMode3D(); DrawFPS(10, 10); diff --git a/examples/models/models_bone_socket.c b/examples/models/models_bone_socket.c index ceea21b8c..cdad46738 100644 --- a/examples/models/models_bone_socket.c +++ b/examples/models/models_bone_socket.c @@ -3,7 +3,7 @@ * raylib [core] example - Using bones as socket for calculating the positioning of something * * Example complexity rating: [★★★★] 4/4 -* +* * Example originally created with raylib 4.5, last time updated with raylib 4.5 * * Example contributed by iP (@ipzaur) and reviewed by Ramon Santamaria (@raysan5) @@ -51,7 +51,7 @@ int main(void) LoadModel("resources/models/gltf/greenman_sword.glb"), // Index for the sword model is the same as BONE_SOCKET_HAND_R LoadModel("resources/models/gltf/greenman_shield.glb") // Index for the shield model is the same as BONE_SOCKET_HAND_L }; - + bool showEquip[3] = { true, true, true }; // Toggle on/off equip // Load gltf model animations @@ -63,7 +63,7 @@ int main(void) // indices of bones for sockets int boneSocketIndex[BONE_SOCKETS] = { -1, -1, -1 }; - // search bones for sockets + // search bones for sockets for (int i = 0; i < characterModel.boneCount; i++) { if (TextIsEqual(characterModel.bones[i].name, "socket_hat")) @@ -71,13 +71,13 @@ int main(void) boneSocketIndex[BONE_SOCKET_HAT] = i; continue; } - + if (TextIsEqual(characterModel.bones[i].name, "socket_hand_R")) { boneSocketIndex[BONE_SOCKET_HAND_R] = i; continue; } - + if (TextIsEqual(characterModel.bones[i].name, "socket_hand_L")) { boneSocketIndex[BONE_SOCKET_HAND_L] = i; @@ -99,7 +99,7 @@ int main(void) // Update //---------------------------------------------------------------------------------- UpdateCamera(&camera, CAMERA_THIRD_PERSON); - + // Rotate character if (IsKeyDown(KEY_F)) angle = (angle + 1)%360; else if (IsKeyDown(KEY_H)) angle = (360 + angle - 1)%360; @@ -112,7 +112,7 @@ int main(void) if (IsKeyPressed(KEY_ONE)) showEquip[BONE_SOCKET_HAT] = !showEquip[BONE_SOCKET_HAT]; if (IsKeyPressed(KEY_TWO)) showEquip[BONE_SOCKET_HAND_R] = !showEquip[BONE_SOCKET_HAND_R]; if (IsKeyPressed(KEY_THREE)) showEquip[BONE_SOCKET_HAND_L] = !showEquip[BONE_SOCKET_HAND_L]; - + // Update model animation ModelAnimation anim = modelAnimations[animIndex]; animCurrentFrame = (animCurrentFrame + 1)%anim.frameCount; @@ -140,7 +140,7 @@ int main(void) Transform *transform = &anim.framePoses[animCurrentFrame][boneSocketIndex[i]]; Quaternion inRotation = characterModel.bindPose[boneSocketIndex[i]].rotation; Quaternion outRotation = transform->rotation; - + // Calculate socket rotation (angle between bone in initial pose and same bone in current animation frame) Quaternion rotate = QuaternionMultiply(outRotation, QuaternionInvert(inRotation)); Matrix matrixTransform = QuaternionToMatrix(rotate); @@ -148,7 +148,7 @@ int main(void) matrixTransform = MatrixMultiply(matrixTransform, MatrixTranslate(transform->translation.x, transform->translation.y, transform->translation.z)); // Transform the socket using the transform of the character (angle and translate) matrixTransform = MatrixMultiply(matrixTransform, characterModel.transform); - + // Draw mesh at socket position with socket angle rotation DrawMesh(equipModel[i].meshes[0], equipModel[i].materials[1], matrixTransform); } @@ -168,7 +168,7 @@ int main(void) //-------------------------------------------------------------------------------------- UnloadModelAnimations(modelAnimations, animsCount); UnloadModel(characterModel); // Unload character model and meshes/material - + // Unload equipment model and meshes/material for (int i = 0; i < BONE_SOCKETS; i++) UnloadModel(equipModel[i]); diff --git a/examples/models/models_draw_cube_texture.c b/examples/models/models_draw_cube_texture.c index 172a50394..650f80aee 100644 --- a/examples/models/models_draw_cube_texture.c +++ b/examples/models/models_draw_cube_texture.c @@ -42,7 +42,7 @@ int main(void) camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; camera.fovy = 45.0f; camera.projection = CAMERA_PERSPECTIVE; - + // Load texture to be applied to the cubes sides Texture2D texture = LoadTexture("resources/cubicmap_atlas.png"); @@ -69,7 +69,7 @@ int main(void) DrawCubeTexture(texture, (Vector3){ -2.0f, 2.0f, 0.0f }, 2.0f, 4.0f, 2.0f, WHITE); // Draw cube with an applied texture, but only a defined rectangle piece of the texture - DrawCubeTextureRec(texture, (Rectangle){ 0.0f, texture.height/2.0f, texture.width/2.0f, texture.height/2.0f }, + DrawCubeTextureRec(texture, (Rectangle){ 0.0f, texture.height/2.0f, texture.width/2.0f, texture.height/2.0f }, (Vector3){ 2.0f, 1.0f, 0.0f }, 2.0f, 2.0f, 2.0f, WHITE); DrawGrid(10, 1.0f); // Draw a grid @@ -85,7 +85,7 @@ int main(void) // De-Initialization //-------------------------------------------------------------------------------------- UnloadTexture(texture); // Unload texture - + CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- @@ -171,7 +171,7 @@ void DrawCubeTextureRec(Texture2D texture, Rectangle source, Vector3 position, f rlSetTexture(texture.id); // We calculate the normalized texture coordinates for the desired texture-source-rectangle - // It means converting from (tex.width, tex.height) coordinates to [0.0f, 1.0f] equivalent + // It means converting from (tex.width, tex.height) coordinates to [0.0f, 1.0f] equivalent rlBegin(RL_QUADS); rlColor4ub(color.r, color.g, color.b, color.a); diff --git a/examples/models/models_gpu_skinning.c b/examples/models/models_gpu_skinning.c index c268d25d1..d1b8c097a 100644 --- a/examples/models/models_gpu_skinning.c +++ b/examples/models/models_gpu_skinning.c @@ -3,7 +3,7 @@ * raylib [core] example - Doing skinning on the gpu using a vertex shader * * Example complexity rating: [★★★☆] 3/4 -* +* * Example originally created with raylib 4.5, last time updated with raylib 4.5 * * Example contributed by Daniel Holden (@orangeduck) and reviewed by Ramon Santamaria (@raysan5) @@ -12,7 +12,7 @@ * BSD-like license that allows static linking with closed source software * * Copyright (c) 2024-2025 Daniel Holden (@orangeduck) -* +* * Note: Due to limitations in the Apple OpenGL driver, this feature does not work on MacOS * ********************************************************************************************/ @@ -49,13 +49,13 @@ int main(void) // Load gltf model Model characterModel = LoadModel("resources/models/gltf/greenman.glb"); // Load character model - + // Load skinning shader Shader skinningShader = LoadShader(TextFormat("resources/shaders/glsl%i/skinning.vs", GLSL_VERSION), TextFormat("resources/shaders/glsl%i/skinning.fs", GLSL_VERSION)); - + characterModel.materials[1].shader = skinningShader; - + // Load gltf model animations int animsCount = 0; unsigned int animIndex = 0; @@ -75,7 +75,7 @@ int main(void) // Update //---------------------------------------------------------------------------------- UpdateCamera(&camera, CAMERA_THIRD_PERSON); - + // Select current animation if (IsKeyPressed(KEY_T)) animIndex = (animIndex + 1)%animsCount; else if (IsKeyPressed(KEY_G)) animIndex = (animIndex + animsCount - 1)%animsCount; @@ -94,12 +94,12 @@ int main(void) ClearBackground(RAYWHITE); BeginMode3D(camera); - + // Draw character mesh, pose calculation is done in shader (GPU skinning) DrawMesh(characterModel.meshes[0], characterModel.materials[1], characterModel.transform); DrawGrid(10, 1.0f); - + EndMode3D(); DrawText("Use the T/G to switch animation", 10, 10, 20, GRAY); @@ -113,7 +113,7 @@ int main(void) UnloadModelAnimations(modelAnimations, animsCount); // Unload model animation UnloadModel(characterModel); // Unload model and meshes/material UnloadShader(skinningShader); // Unload GPU skinning shader - + CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- diff --git a/examples/models/models_loading_gltf.c b/examples/models/models_loading_gltf.c index 6309af84c..e3a5b5bcb 100644 --- a/examples/models/models_loading_gltf.c +++ b/examples/models/models_loading_gltf.c @@ -45,7 +45,7 @@ int main(void) // Load gltf model Model model = LoadModel("resources/models/gltf/robot.glb"); Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position - + // Load gltf model animations int animsCount = 0; unsigned int animIndex = 0; diff --git a/examples/models/models_mesh_generation.c b/examples/models/models_mesh_generation.c index e268085b0..828c9809d 100644 --- a/examples/models/models_mesh_generation.c +++ b/examples/models/models_mesh_generation.c @@ -47,7 +47,7 @@ int main(void) models[6] = LoadModelFromMesh(GenMeshKnot(1.0f, 2.0f, 16, 128)); models[7] = LoadModelFromMesh(GenMeshPoly(5, 2.0f)); models[8] = LoadModelFromMesh(GenMeshCustom()); - + // NOTE: Generated meshes could be exported using ExportMesh() // Set checked texture as default diffuse component for all models material diff --git a/examples/models/models_mesh_picking.c b/examples/models/models_mesh_picking.c index f6fffd907..6e2c03473 100644 --- a/examples/models/models_mesh_picking.c +++ b/examples/models/models_mesh_picking.c @@ -137,7 +137,7 @@ int main(void) RayCollision meshHitInfo = { 0 }; for (int m = 0; m < tower.meshCount; m++) { - // NOTE: We consider the model.transform for the collision check but + // NOTE: We consider the model.transform for the collision check but // it can be checked against any transform Matrix, used when checking against same // model drawn multiple times with multiple transforms meshHitInfo = GetRayCollisionMesh(ray, tower.meshes[m], tower.transform); @@ -145,7 +145,7 @@ int main(void) { // Save the closest hit mesh if ((!collision.hit) || (collision.distance > meshHitInfo.distance)) collision = meshHitInfo; - + break; // Stop once one mesh collision is detected, the colliding mesh is m } } diff --git a/examples/models/models_point_rendering.c b/examples/models/models_point_rendering.c index b7bf96742..bbe335bb2 100644 --- a/examples/models/models_point_rendering.c +++ b/examples/models/models_point_rendering.c @@ -35,7 +35,7 @@ int main() //-------------------------------------------------------------------------------------- const int screenWidth = 800; const int screenHeight = 450; - + InitWindow(screenWidth, screenHeight, "raylib [models] example - point rendering"); Camera camera = { @@ -50,10 +50,10 @@ int main() bool useDrawModelPoints = true; bool numPointsChanged = false; int numPoints = 1000; - + Mesh mesh = GenMeshPoints(numPoints); Model model = LoadModelFromMesh(mesh); - + //SetTargetFPS(60); //-------------------------------------------------------------------------------------- @@ -114,14 +114,14 @@ int main() .b = mesh.colors[i*4 + 2], .a = mesh.colors[i*4 + 3], }; - + DrawPoint3D(pos, color); } } // Draw a unit sphere for reference DrawSphereWires(position, 1.0f, 10, 10, YELLOW); - + EndMode3D(); // Draw UI text @@ -129,12 +129,12 @@ int main() DrawText("Up - increase points", 20, 70, 20, WHITE); DrawText("Down - decrease points", 20, 100, 20, WHITE); DrawText("Space - drawing function", 20, 130, 20, WHITE); - + if (useDrawModelPoints) DrawText("Using: DrawModelPoints()", 20, 160, 20, GREEN); else DrawText("Using: DrawPoint3D()", 20, 160, 20, RED); - + DrawFPS(10, 10); - + EndDrawing(); //---------------------------------------------------------------------------------- } @@ -151,7 +151,7 @@ int main() // Generate a spherical point cloud static Mesh GenMeshPoints(int numPoints) { - Mesh mesh = { + Mesh mesh = { .triangleCount = 1, .vertexCount = numPoints, .vertices = (float *)MemAlloc(numPoints*3*sizeof(float)), @@ -164,13 +164,13 @@ static Mesh GenMeshPoints(int numPoints) float theta = ((float)PI*rand())/RAND_MAX; float phi = (2.0f*PI*rand())/RAND_MAX; float r = (10.0f*rand())/RAND_MAX; - + mesh.vertices[i*3 + 0] = r*sinf(theta)*cosf(phi); mesh.vertices[i*3 + 1] = r*sinf(theta)*sinf(phi); mesh.vertices[i*3 + 2] = r*cosf(theta); - + Color color = ColorFromHSV(r*360.0f, 1.0f, 1.0f); - + mesh.colors[i*4 + 0] = color.r; mesh.colors[i*4 + 1] = color.g; mesh.colors[i*4 + 2] = color.b; @@ -179,6 +179,6 @@ static Mesh GenMeshPoints(int numPoints) // Upload mesh data from CPU (RAM) to GPU (VRAM) memory UploadMesh(&mesh, false); - + return mesh; } diff --git a/examples/models/models_skybox.c b/examples/models/models_skybox.c index e816b27e1..a5304a93d 100644 --- a/examples/models/models_skybox.c +++ b/examples/models/models_skybox.c @@ -70,7 +70,7 @@ int main(void) SetShaderValue(shdrCubemap, GetShaderLocation(shdrCubemap, "equirectangularMap"), (int[1]){ 0 }, SHADER_UNIFORM_INT); char skyboxFileName[256] = { 0 }; - + if (useHDR) { TextCopy(skyboxFileName, "resources/dresden_square_2k.hdr"); @@ -116,7 +116,7 @@ int main(void) { // Unload current cubemap texture to load new one UnloadTexture(skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture); - + if (useHDR) { // Load HDR panorama (sphere) texture @@ -124,7 +124,7 @@ int main(void) // Generate cubemap from panorama texture skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture = GenTextureCubemap(shdrCubemap, panorama, 1024, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8); - + UnloadTexture(panorama); // Texture not required anymore, cubemap already generated } else @@ -223,7 +223,7 @@ static TextureCubemap GenTextureCubemap(Shader shader, Texture2D panorama, int s }; rlViewport(0, 0, size, size); // Set viewport to current fbo dimensions - + // Activate and enable texture for drawing to cubemap faces rlActiveTextureSlot(0); rlEnableTexture(panorama.id); @@ -232,7 +232,7 @@ static TextureCubemap GenTextureCubemap(Shader shader, Texture2D panorama, int s { // Set the view matrix for the current cube face rlSetUniformMatrix(shader.locs[SHADER_LOC_MATRIX_VIEW], fboViews[i]); - + // Select the current cubemap face attachment for the fbo // WARNING: This function by default enables->attach->disables fbo!!! rlFramebufferAttach(fbo, cubemap.id, RL_ATTACHMENT_COLOR_CHANNEL0, RL_ATTACHMENT_CUBEMAP_POSITIVE_X + i, 0); diff --git a/examples/models/models_tesseract_view.c b/examples/models/models_tesseract_view.c index 44484ca5b..661d078b4 100644 --- a/examples/models/models_tesseract_view.c +++ b/examples/models/models_tesseract_view.c @@ -32,7 +32,7 @@ int main(void) const int screenHeight = 450; InitWindow(screenWidth, screenHeight, "raylib [models] example - tesseract view"); - + // Define the camera to look into our 3d world Camera camera = { 0 }; camera.position = (Vector3){ 4.0f, 4.0f, 4.0f }; // Camera position @@ -43,16 +43,16 @@ int main(void) // Find the coordinates by setting XYZW to +-1 Vector4 tesseract[16] = { - { 1, 1, 1, 1 }, { 1, 1, 1, -1 }, + { 1, 1, 1, 1 }, { 1, 1, 1, -1 }, { 1, 1, -1, 1 }, { 1, 1, -1, -1 }, - { 1, -1, 1, 1 }, { 1, -1, 1, -1 }, + { 1, -1, 1, 1 }, { 1, -1, 1, -1 }, { 1, -1, -1, 1 }, { 1, -1, -1, -1 }, - { -1, 1, 1, 1 }, { -1, 1, 1, -1 }, + { -1, 1, 1, 1 }, { -1, 1, 1, -1 }, { -1, 1, -1, 1 }, { -1, 1, -1, -1 }, - { -1, -1, 1, 1 }, { -1, -1, 1, -1 }, + { -1, -1, 1, 1 }, { -1, -1, 1, -1 }, { -1, -1, -1, 1 }, { -1, -1, -1, -1 }, }; - + float rotation = 0.0f; Vector3 transformed[16] = { 0 }; float wValues[16] = { 0 }; @@ -66,7 +66,7 @@ int main(void) // Update //---------------------------------------------------------------------------------- rotation = DEG2RAD*45.0f*GetTime(); - + for (int i = 0; i < 16; i++) { Vector4 p = tesseract[i]; @@ -92,9 +92,9 @@ int main(void) // Draw //---------------------------------------------------------------------------------- BeginDrawing(); - + ClearBackground(RAYWHITE); - + BeginMode3D(camera); for (int i = 0; i < 16; i++) { @@ -114,7 +114,7 @@ int main(void) } } EndMode3D(); - + EndDrawing(); //---------------------------------------------------------------------------------- } diff --git a/examples/models/models_waving_cubes.c b/examples/models/models_waving_cubes.c index 6608eba48..455d85e18 100644 --- a/examples/models/models_waving_cubes.c +++ b/examples/models/models_waving_cubes.c @@ -91,7 +91,7 @@ int main() }; // Pick a color with a hue depending on cube position for the rainbow color effect - // NOTE: This function is quite costly to be done per cube and frame, + // NOTE: This function is quite costly to be done per cube and frame, // pre-catching the results into a separate array could improve performance Color cubeColor = ColorFromHSV((float)(((x + y + z)*18)%360), 0.75f, 0.9f); diff --git a/examples/others/raylib_opengl_interop.c b/examples/others/raylib_opengl_interop.c index 9ab2bb220..53fc744db 100644 --- a/examples/others/raylib_opengl_interop.c +++ b/examples/others/raylib_opengl_interop.c @@ -30,18 +30,18 @@ #if defined(PLATFORM_DESKTOP) || defined(PLATFORM_DESKTOP_SDL) #if defined(GRAPHICS_API_OPENGL_ES2) - #include "glad_gles2.h" // Required for: OpenGL functionality + #include "glad_gles2.h" // Required for: OpenGL functionality #define glGenVertexArrays glGenVertexArraysOES #define glBindVertexArray glBindVertexArrayOES #define glDeleteVertexArrays glDeleteVertexArraysOES #define GLSL_VERSION 100 #else #if defined(__APPLE__) - #define GL_SILENCE_DEPRECATION // Silence Opengl API deprecation warnings + #define GL_SILENCE_DEPRECATION // Silence Opengl API deprecation warnings #include // OpenGL 3 library for OSX #include // OpenGL 3 extensions library for OSX #else - #include "glad.h" // Required for: OpenGL functionality + #include "glad.h" // Required for: OpenGL functionality #endif #define GLSL_VERSION 330 #endif @@ -71,7 +71,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib - point particles"); + InitWindow(screenWidth, screenHeight, "raylib [shaders] example - point particles"); Shader shader = LoadShader(TextFormat("resources/shaders/glsl%i/point_particle.vs", GLSL_VERSION), TextFormat("resources/shaders/glsl%i/point_particle.fs", GLSL_VERSION)); @@ -86,13 +86,13 @@ int main(void) { particles[i].x = (float)GetRandomValue(20, screenWidth - 20); particles[i].y = (float)GetRandomValue(50, screenHeight - 20); - - // Give each particle a slightly different period. But don't spread it to much. + + // Give each particle a slightly different period. But don't spread it to much. // This way the particles line up every so often and you get a glimps of what is going on. particles[i].period = (float)GetRandomValue(10, 30)/10.0f; } - // Create a plain OpenGL vertex buffer with the data and an vertex array object + // Create a plain OpenGL vertex buffer with the data and an vertex array object // that feeds the data from the buffer into the vertexPosition shader attribute. GLuint vao = 0; GLuint vbo = 0; @@ -125,13 +125,13 @@ int main(void) DrawRectangle(10, 10, 210, 30, MAROON); DrawText(TextFormat("%zu particles in one vertex buffer", MAX_PARTICLES), 20, 20, 10, RAYWHITE); - + rlDrawRenderBatchActive(); // Draw iternal buffers data (previous draw calls) // Switch to plain OpenGL //------------------------------------------------------------------------------ glUseProgram(shader.id); - + glUniform1f(currentTimeLoc, GetTime()); Vector4 color = ColorNormalize((Color){ 255, 0, 0, 128 }); @@ -139,18 +139,18 @@ int main(void) // Get the current modelview and projection matrix so the particle system is displayed and transformed Matrix modelViewProjection = MatrixMultiply(rlGetMatrixModelview(), rlGetMatrixProjection()); - + glUniformMatrix4fv(shader.locs[SHADER_LOC_MATRIX_MVP], 1, false, MatrixToFloat(modelViewProjection)); glBindVertexArray(vao); glDrawArrays(GL_POINTS, 0, MAX_PARTICLES); glBindVertexArray(0); - + glUseProgram(0); //------------------------------------------------------------------------------ - + DrawFPS(screenWidth - 100, 10); - + EndDrawing(); //---------------------------------------------------------------------------------- } diff --git a/examples/others/raymath_vector_angle.c b/examples/others/raymath_vector_angle.c index 414546ac6..1d49cec66 100644 --- a/examples/others/raymath_vector_angle.c +++ b/examples/others/raymath_vector_angle.c @@ -12,7 +12,7 @@ * Copyright (c) 2023-2025 Ramon Santamaria (@raysan5) * ********************************************************************************************/ - + #include "raylib.h" #include "raymath.h" @@ -32,7 +32,7 @@ int main(void) Vector2 v0 = { screenWidth/2, screenHeight/2 }; Vector2 v1 = Vector2Add(v0, (Vector2){ 100.0f, 80.0f }); Vector2 v2 = { 0 }; // Updated with mouse position - + float angle = 0.0f; // Angle in degrees int angleMode = 0; // 0-Vector2Angle(), 1-Vector2LineAngle() @@ -47,12 +47,12 @@ int main(void) float startangle = 0.0f; if (angleMode == 0) startangle = -Vector2LineAngle(v0, v1)*RAD2DEG; - if (angleMode == 1) startangle = 0.0f; + if (angleMode == 1) startangle = 0.0f; v2 = GetMousePosition(); if (IsKeyPressed(KEY_SPACE)) angleMode = !angleMode; - + if ((angleMode == 0) && IsMouseButtonDown(MOUSE_BUTTON_RIGHT)) v1 = GetMousePosition(); if (angleMode == 0) @@ -75,12 +75,12 @@ int main(void) BeginDrawing(); ClearBackground(RAYWHITE); - + if (angleMode == 0) { DrawText("MODE 0: Angle between V1 and V2", 10, 10, 20, BLACK); DrawText("Right Click to Move V2", 10, 30, 20, DARKGRAY); - + DrawLineEx(v0, v1, 2.0f, BLACK); DrawLineEx(v0, v2, 2.0f, RED); @@ -89,13 +89,13 @@ int main(void) else if (angleMode == 1) { DrawText("MODE 1: Angle formed by line V1 to V2", 10, 10, 20, BLACK); - + DrawLine(0, screenHeight/2, screenWidth, screenHeight/2, LIGHTGRAY); DrawLineEx(v0, v2, 2.0f, RED); DrawCircleSector(v0, 40.0f, startangle, startangle - angle, 32, Fade(GREEN, 0.6f)); } - + DrawText("v0", v0.x, v0.y, 10, DARKGRAY); // If the line from v0 to v1 would overlap the text, move it's position up 10 @@ -110,7 +110,7 @@ int main(void) DrawText("Press SPACE to change MODE", 460, 10, 20, DARKGRAY); DrawText(TextFormat("ANGLE: %2.2f", angle), 10, 70, 20, LIME); - + EndDrawing(); //---------------------------------------------------------------------------------- } diff --git a/examples/others/rlgl_standalone.c b/examples/others/rlgl_standalone.c index 713d1b908..e74ca0f6c 100644 --- a/examples/others/rlgl_standalone.c +++ b/examples/others/rlgl_standalone.c @@ -137,7 +137,7 @@ int main(void) glfwWindowHint(GLFW_SAMPLES, 4); glfwWindowHint(GLFW_DEPTH_BITS, 16); - + // WARNING: OpenGL 3.3 Core profile only glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); diff --git a/examples/shaders/shaders_basic_lighting.c b/examples/shaders/shaders_basic_lighting.c index f115338a5..913e4aeeb 100644 --- a/examples/shaders/shaders_basic_lighting.c +++ b/examples/shaders/shaders_basic_lighting.c @@ -59,10 +59,10 @@ int main(void) TextFormat("resources/shaders/glsl%i/lighting.fs", GLSL_VERSION)); // Get some required shader locations shader.locs[SHADER_LOC_VECTOR_VIEW] = GetShaderLocation(shader, "viewPos"); - // NOTE: "matModel" location name is automatically assigned on shader loading, + // NOTE: "matModel" location name is automatically assigned on shader loading, // no need to get the location again if using that uniform name //shader.locs[SHADER_LOC_MATRIX_MODEL] = GetShaderLocation(shader, "matModel"); - + // Ambient light level (some basic lighting) int ambientLoc = GetShaderLocation(shader, "ambient"); SetShaderValue(shader, ambientLoc, (float[4]){ 0.1f, 0.1f, 0.1f, 1.0f }, SHADER_UNIFORM_VEC4); @@ -87,13 +87,13 @@ int main(void) // Update the shader with the camera view vector (points towards { 0.0f, 0.0f, 0.0f }) float cameraPos[3] = { camera.position.x, camera.position.y, camera.position.z }; SetShaderValue(shader, shader.locs[SHADER_LOC_VECTOR_VIEW], cameraPos, SHADER_UNIFORM_VEC3); - + // Check key inputs to enable/disable lights if (IsKeyPressed(KEY_Y)) { lights[0].enabled = !lights[0].enabled; } if (IsKeyPressed(KEY_R)) { lights[1].enabled = !lights[1].enabled; } if (IsKeyPressed(KEY_G)) { lights[2].enabled = !lights[2].enabled; } if (IsKeyPressed(KEY_B)) { lights[3].enabled = !lights[3].enabled; } - + // Update light values (actually, only enable/disable them) for (int i = 0; i < MAX_LIGHTS; i++) UpdateLightValues(shader, lights[i]); //---------------------------------------------------------------------------------- diff --git a/examples/shaders/shaders_basic_pbr.c b/examples/shaders/shaders_basic_pbr.c index b375c4fa1..39db430ab 100644 --- a/examples/shaders/shaders_basic_pbr.c +++ b/examples/shaders/shaders_basic_pbr.c @@ -13,8 +13,8 @@ * * Copyright (c) 2023-2025 Afan OLOVCIC (@_DevDad) * -* Model: "Old Rusty Car" (https://skfb.ly/LxRy) by Renafox, -* licensed under Creative Commons Attribution-NonCommercial +* Model: "Old Rusty Car" (https://skfb.ly/LxRy) by Renafox, +* licensed under Creative Commons Attribution-NonCommercial * (http://creativecommons.org/licenses/by-nc/4.0/) * ********************************************************************************************/ @@ -105,7 +105,7 @@ int main() // shader already takes care of it accordingly shader.locs[SHADER_LOC_MAP_METALNESS] = GetShaderLocation(shader, "mraMap"); shader.locs[SHADER_LOC_MAP_NORMAL] = GetShaderLocation(shader, "normalMap"); - // WARNING: Similar to the MRA map, the emissive map packs different information + // WARNING: Similar to the MRA map, the emissive map packs different information // into a single texture: it stores height and emission data // It is binded to SHADER_LOC_MAP_EMISSION location an properly processed on shader shader.locs[SHADER_LOC_MAP_EMISSION] = GetShaderLocation(shader, "emissiveMap"); @@ -153,7 +153,7 @@ int main() car.materials[0].maps[MATERIAL_MAP_METALNESS].texture = LoadTexture("resources/old_car_mra.png"); car.materials[0].maps[MATERIAL_MAP_NORMAL].texture = LoadTexture("resources/old_car_n.png"); car.materials[0].maps[MATERIAL_MAP_EMISSION].texture = LoadTexture("resources/old_car_e.png"); - + // Load floor model mesh and assign material parameters // NOTE: A basic plane shape can be generated instead of being loaded from a model file Model floor = LoadModel("resources/models/plane.glb"); @@ -161,9 +161,9 @@ int main() //GenMeshTangents(&floorMesh); // TODO: Review tangents generation //Model floor = LoadModelFromMesh(floorMesh); - // Assign material shader for our floor model, same PBR shader + // Assign material shader for our floor model, same PBR shader floor.materials[0].shader = shader; - + floor.materials[0].maps[MATERIAL_MAP_ALBEDO].color = WHITE; floor.materials[0].maps[MATERIAL_MAP_METALNESS].value = 0.8f; floor.materials[0].maps[MATERIAL_MAP_ROUGHNESS].value = 0.1f; @@ -193,7 +193,7 @@ int main() SetShaderValue(shader, GetShaderLocation(shader, "useTexNormal"), &usage, SHADER_UNIFORM_INT); SetShaderValue(shader, GetShaderLocation(shader, "useTexMRA"), &usage, SHADER_UNIFORM_INT); SetShaderValue(shader, GetShaderLocation(shader, "useTexEmissive"), &usage, SHADER_UNIFORM_INT); - + SetTargetFPS(60); // Set our game to run at 60 frames-per-second //--------------------------------------------------------------------------------------- @@ -221,11 +221,11 @@ int main() // Draw //---------------------------------------------------------------------------------- BeginDrawing(); - + ClearBackground(BLACK); - + BeginMode3D(camera); - + // Set floor model texture tiling and emissive color parameters on shader SetShaderValue(shader, textureTilingLoc, &floorTextureTiling, SHADER_UNIFORM_VEC2); Vector4 floorEmissiveColor = ColorNormalize(floor.materials[0].maps[MATERIAL_MAP_EMISSION].color); @@ -234,7 +234,7 @@ int main() // Set floor metallic and roughness values SetShaderValue(shader, metallicValueLoc, &floor.materials[0].maps[MATERIAL_MAP_METALNESS].value, SHADER_UNIFORM_FLOAT); SetShaderValue(shader, roughnessValueLoc, &floor.materials[0].maps[MATERIAL_MAP_ROUGHNESS].value, SHADER_UNIFORM_FLOAT); - + DrawModel(floor, (Vector3){ 0.0f, 0.0f, 0.0f }, 5.0f, WHITE); // Draw floor model // Set old car model texture tiling, emissive color and emissive intensity parameters on shader @@ -247,24 +247,24 @@ int main() // Set old car metallic and roughness values SetShaderValue(shader, metallicValueLoc, &car.materials[0].maps[MATERIAL_MAP_METALNESS].value, SHADER_UNIFORM_FLOAT); SetShaderValue(shader, roughnessValueLoc, &car.materials[0].maps[MATERIAL_MAP_ROUGHNESS].value, SHADER_UNIFORM_FLOAT); - + DrawModel(car, (Vector3){ 0.0f, 0.0f, 0.0f }, 0.25f, WHITE); // Draw car model // Draw spheres to show the lights positions for (int i = 0; i < MAX_LIGHTS; i++) { Color lightColor = (Color){ lights[i].color[0]*255, lights[i].color[1]*255, lights[i].color[2]*255, lights[i].color[3]*255 }; - + if (lights[i].enabled) DrawSphereEx(lights[i].position, 0.2f, 8, 8, lightColor); else DrawSphereWires(lights[i].position, 0.2f, 8, 8, ColorAlpha(lightColor, 0.3f)); } - + EndMode3D(); - + DrawText("Toggle lights: [1][2][3][4]", 10, 40, 20, LIGHTGRAY); DrawText("(c) Old Rusty Car model by Renafox (https://skfb.ly/LxRy)", screenWidth - 320, screenHeight - 20, 10, LIGHTGRAY); - + DrawFPS(10, 10); EndDrawing(); @@ -273,20 +273,20 @@ int main() // De-Initialization //-------------------------------------------------------------------------------------- - // Unbind (disconnect) shader from car.material[0] + // Unbind (disconnect) shader from car.material[0] // to avoid UnloadMaterial() trying to unload it automatically car.materials[0].shader = (Shader){ 0 }; UnloadMaterial(car.materials[0]); car.materials[0].maps = NULL; UnloadModel(car); - + floor.materials[0].shader = (Shader){ 0 }; UnloadMaterial(floor.materials[0]); floor.materials[0].maps = NULL; UnloadModel(floor); - + UnloadShader(shader); // Unload Shader - + CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- @@ -310,7 +310,7 @@ static Light CreateLight(int type, Vector3 position, Vector3 target, Color color light.color[2] = (float)color.b/255.0f; light.color[3] = (float)color.a/255.0f; light.intensity = intensity; - + // NOTE: Shader parameters names for lights must match the requested ones light.enabledLoc = GetShaderLocation(shader, TextFormat("lights[%i].enabled", lightCount)); light.typeLoc = GetShaderLocation(shader, TextFormat("lights[%i].type", lightCount)); @@ -318,7 +318,7 @@ static Light CreateLight(int type, Vector3 position, Vector3 target, Color color light.targetLoc = GetShaderLocation(shader, TextFormat("lights[%i].target", lightCount)); light.colorLoc = GetShaderLocation(shader, TextFormat("lights[%i].color", lightCount)); light.intensityLoc = GetShaderLocation(shader, TextFormat("lights[%i].intensity", lightCount)); - + UpdateLight(shader, light); lightCount++; @@ -333,7 +333,7 @@ static void UpdateLight(Shader shader, Light light) { SetShaderValue(shader, light.enabledLoc, &light.enabled, SHADER_UNIFORM_INT); SetShaderValue(shader, light.typeLoc, &light.type, SHADER_UNIFORM_INT); - + // Send to shader light position values float position[3] = { light.position.x, light.position.y, light.position.z }; SetShaderValue(shader, light.positionLoc, position, SHADER_UNIFORM_VEC3); diff --git a/examples/shaders/shaders_custom_uniform.c b/examples/shaders/shaders_custom_uniform.c index 432b240ee..951759079 100644 --- a/examples/shaders/shaders_custom_uniform.c +++ b/examples/shaders/shaders_custom_uniform.c @@ -78,7 +78,7 @@ int main(void) // Update //---------------------------------------------------------------------------------- UpdateCamera(&camera, CAMERA_ORBITAL); - + Vector2 mousePosition = GetMousePosition(); swirlCenter[0] = mousePosition.x; diff --git a/examples/shaders/shaders_deferred_render.c b/examples/shaders/shaders_deferred_render.c index 879f9a68b..1fe6d3a0c 100644 --- a/examples/shaders/shaders_deferred_render.c +++ b/examples/shaders/shaders_deferred_render.c @@ -42,7 +42,7 @@ typedef struct GBuffer { unsigned int positionTexture; unsigned int normalTexture; unsigned int albedoSpecTexture; - + unsigned int depthRenderbuffer; } GBuffer; @@ -94,14 +94,14 @@ int main(void) TraceLog(LOG_WARNING, "Failed to create framebuffer"); exit(1); } - + rlEnableFramebuffer(gBuffer.framebuffer); // NOTE: Vertex positions are stored in a texture for simplicity. A better approach would use a depth texture - // (instead of a detph renderbuffer) to reconstruct world positions in the final render shader via clip-space position, + // (instead of a detph renderbuffer) to reconstruct world positions in the final render shader via clip-space position, // depth, and the inverse view/projection matrices. - // 16-bit precision ensures OpenGL ES 3 compatibility, though it may lack precision for real scenarios. + // 16-bit precision ensures OpenGL ES 3 compatibility, though it may lack precision for real scenarios. // But as mentioned above, the positions could be reconstructed instead of stored. If not targeting OpenGL ES // and you wish to maintain this approach, consider using `RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32`. gBuffer.positionTexture = rlLoadTexture(NULL, screenWidth, screenHeight, RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16, 1); @@ -161,7 +161,7 @@ int main(void) const float CUBE_SCALE = 0.25; Vector3 cubePositions[MAX_CUBES] = { 0 }; float cubeRotations[MAX_CUBES] = { 0 }; - + for (int i = 0; i < MAX_CUBES; i++) { cubePositions[i] = (Vector3){ @@ -169,7 +169,7 @@ int main(void) .y = (float)(rand()%5), .z = (float)(rand()%10) - 5, }; - + cubeRotations[i] = (float)(rand()%360); } @@ -190,7 +190,7 @@ int main(void) // Update the shader with the camera view vector (points towards { 0.0f, 0.0f, 0.0f }) float cameraPos[3] = { camera.position.x, camera.position.y, camera.position.z }; SetShaderValue(deferredShader, deferredShader.locs[SHADER_LOC_VECTOR_VIEW], cameraPos, SHADER_UNIFORM_VEC3); - + // Check key inputs to enable/disable lights if (IsKeyPressed(KEY_Y)) { lights[0].enabled = !lights[0].enabled; } if (IsKeyPressed(KEY_R)) { lights[1].enabled = !lights[1].enabled; } @@ -215,7 +215,7 @@ int main(void) rlEnableFramebuffer(gBuffer.framebuffer); rlClearColor(0, 0, 0, 0); rlClearScreenBuffers(); // Clear color and depth buffer - + rlDisableColorBlend(); BeginMode3D(camera); // NOTE: We have to use rlEnableShader here. `BeginShaderMode` or thus `rlSetShader` @@ -281,7 +281,7 @@ int main(void) } rlDisableShader(); EndMode3D(); - + DrawText("FINAL RESULT", 10, screenHeight - 30, 20, DARKGREEN); } break; case DEFERRED_POSITION: @@ -291,7 +291,7 @@ int main(void) .width = screenWidth, .height = screenHeight, }, (Rectangle) { 0, 0, (float)screenWidth, (float)-screenHeight }, Vector2Zero(), RAYWHITE); - + DrawText("POSITION TEXTURE", 10, screenHeight - 30, 20, DARKGREEN); } break; case DEFERRED_NORMAL: @@ -301,7 +301,7 @@ int main(void) .width = screenWidth, .height = screenHeight, }, (Rectangle) { 0, 0, (float)screenWidth, (float)-screenHeight }, Vector2Zero(), RAYWHITE); - + DrawText("NORMAL TEXTURE", 10, screenHeight - 30, 20, DARKGREEN); } break; case DEFERRED_ALBEDO: @@ -311,7 +311,7 @@ int main(void) .width = screenWidth, .height = screenHeight, }, (Rectangle) { 0, 0, (float)screenWidth, (float)-screenHeight }, Vector2Zero(), RAYWHITE); - + DrawText("ALBEDO TEXTURE", 10, screenHeight - 30, 20, DARKGREEN); } break; default: break; @@ -321,7 +321,7 @@ int main(void) DrawText("Switch G-buffer textures: [1][2][3][4]", 10, 70, 20, DARKGRAY); DrawFPS(10, 10); - + EndDrawing(); // ----------------------------------------------------------------------------- } diff --git a/examples/shaders/shaders_eratosthenes.c b/examples/shaders/shaders_eratosthenes.c index 26075706e..03dfc2125 100644 --- a/examples/shaders/shaders_eratosthenes.c +++ b/examples/shaders/shaders_eratosthenes.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Sieve of Eratosthenes +* raylib [shaders] example - sieve of Eratosthenes * * Example complexity rating: [★★★☆] 3/4 * @@ -45,7 +45,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [shaders] example - Sieve of Eratosthenes"); + InitWindow(screenWidth, screenHeight, "raylib [shaders] example - sieve of Eratosthenes"); RenderTexture2D target = LoadRenderTexture(screenWidth, screenHeight); diff --git a/examples/shaders/shaders_hot_reloading.c b/examples/shaders/shaders_hot_reloading.c index 1005c0913..b11245dcc 100644 --- a/examples/shaders/shaders_hot_reloading.c +++ b/examples/shaders/shaders_hot_reloading.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Hot reloading +* raylib [shaders] example - hot reloading * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/shaders/shaders_hybrid_render.c b/examples/shaders/shaders_hybrid_render.c index 4c9f5c978..0c7e789fd 100644 --- a/examples/shaders/shaders_hybrid_render.c +++ b/examples/shaders/shaders_hybrid_render.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Hybrid Rendering +* raylib [shaders] example - hybrid rendering * * Example complexity rating: [★★★★] 4/4 * @@ -69,7 +69,7 @@ int main(void) marchLocs.camDir = GetShaderLocation(shdrRaymarch, "camDir"); marchLocs.screenCenter = GetShaderLocation(shdrRaymarch, "screenCenter"); - // Transfer screenCenter position to shader. Which is used to calculate ray direction. + // Transfer screenCenter position to shader. Which is used to calculate ray direction. Vector2 screenCenter = {.x = screenWidth/2.0f, .y = screenHeight/2.0f}; SetShaderValue(shdrRaymarch, marchLocs.screenCenter , &screenCenter , SHADER_UNIFORM_VEC2); @@ -84,10 +84,10 @@ int main(void) .fovy = 45.0f, // Camera field-of-view Y .projection = CAMERA_PERSPECTIVE // Camera projection type }; - + // Camera FOV is pre-calculated in the camera Distance. float camDist = 1.0f/(tanf(camera.fovy*0.5f*DEG2RAD)); - + SetTargetFPS(60); // Set our game to run at 60 frames-per-second //-------------------------------------------------------------------------------------- @@ -100,12 +100,12 @@ int main(void) // Update Camera Postion in the ray march shader. SetShaderValue(shdrRaymarch, marchLocs.camPos, &(camera.position), RL_SHADER_UNIFORM_VEC3); - + // Update Camera Looking Vector. Vector length determines FOV. Vector3 camDir = Vector3Scale( Vector3Normalize( Vector3Subtract(camera.target, camera.position)) , camDist); SetShaderValue(shdrRaymarch, marchLocs.camDir, &(camDir), RL_SHADER_UNIFORM_VEC3); //---------------------------------------------------------------------------------- - + // Draw //---------------------------------------------------------------------------------- // Draw into our custom render texture (framebuffer) @@ -117,7 +117,7 @@ int main(void) BeginShaderMode(shdrRaymarch); DrawRectangleRec((Rectangle){0,0, (float)screenWidth, (float)screenHeight},WHITE); EndShaderMode(); - + // Rasterize Scene BeginMode3D(camera); BeginShaderMode(shdrRaster); @@ -130,10 +130,10 @@ int main(void) EndMode3D(); EndTextureMode(); - // Draw into screen our custom render texture + // Draw into screen our custom render texture BeginDrawing(); ClearBackground(RAYWHITE); - + DrawTextureRec(target.texture, (Rectangle) { 0, 0, (float)screenWidth, (float)-screenHeight }, (Vector2) { 0, 0 }, WHITE); DrawFPS(10, 10); EndDrawing(); diff --git a/examples/shaders/shaders_julia_set.c b/examples/shaders/shaders_julia_set.c index c1be3f325..72ff31ad7 100644 --- a/examples/shaders/shaders_julia_set.c +++ b/examples/shaders/shaders_julia_set.c @@ -167,7 +167,7 @@ int main(void) // do not represent full screen coordinates (space where want to apply shader) DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), BLACK); EndTextureMode(); - + BeginDrawing(); ClearBackground(BLACK); // Clear screen background diff --git a/examples/shaders/shaders_lightmap.c b/examples/shaders/shaders_lightmap.c index 0d26e54c8..a393c1afe 100644 --- a/examples/shaders/shaders_lightmap.c +++ b/examples/shaders/shaders_lightmap.c @@ -70,7 +70,7 @@ int main(void) // Load a new texcoords2 attributes buffer mesh.vboId[SHADER_LOC_VERTEX_TEXCOORD02] = rlLoadVertexBuffer(mesh.texcoords2, mesh.vertexCount*2*sizeof(float), false); rlEnableVertexArray(mesh.vaoId); - + // Index 5 is for texcoords2 rlSetVertexAttribute(5, 2, RL_FLOAT, 0, 0, 0); rlEnableVertexAttribute(5); @@ -156,10 +156,10 @@ int main(void) (Vector2){ 0.0, 0.0 }, 0.0, WHITE); - + DrawText("lightmap", GetRenderWidth() - 66, 16 + MAP_SIZE*8, 10, GRAY); DrawText("10x10 pixels", GetRenderWidth() - 76, 30 + MAP_SIZE*8, 10, GRAY); - + EndDrawing(); //---------------------------------------------------------------------------------- } diff --git a/examples/shaders/shaders_mesh_instancing.c b/examples/shaders/shaders_mesh_instancing.c index 17b2da33d..6142a825e 100644 --- a/examples/shaders/shaders_mesh_instancing.c +++ b/examples/shaders/shaders_mesh_instancing.c @@ -64,7 +64,7 @@ int main(void) Vector3 axis = Vector3Normalize((Vector3){ (float)GetRandomValue(0, 360), (float)GetRandomValue(0, 360), (float)GetRandomValue(0, 360) }); float angle = (float)GetRandomValue(0, 180)*DEG2RAD; Matrix rotation = MatrixRotate(axis, angle); - + transforms[i] = MatrixMultiply(rotation, translation); } diff --git a/examples/shaders/shaders_multi_sample2d.c b/examples/shaders/shaders_multi_sample2d.c index c13864607..67cfb2058 100644 --- a/examples/shaders/shaders_multi_sample2d.c +++ b/examples/shaders/shaders_multi_sample2d.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Multiple sample2D with default batch system +* raylib [shaders] example - multi sample2D * * Example complexity rating: [★★☆☆] 2/4 * @@ -38,7 +38,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib - multiple sample2D"); + InitWindow(screenWidth, screenHeight, "raylib [shaders] example - multi sample2D"); Image imRed = GenImageColor(800, 450, (Color){ 255, 0, 0, 255 }); Texture texRed = LoadTextureFromImage(imRed); @@ -93,7 +93,7 @@ int main(void) // an additional texture units is enabled for texBlue [sampler2D texture1] DrawTexture(texRed, 0, 0, WHITE); - EndShaderMode(); // Texture sampler2D is reseted, needs to be set again for next frame + EndShaderMode(); // Texture sampler2D is reseted, needs to be set again for next frame DrawText("Use KEY_LEFT/KEY_RIGHT to move texture mixing in shader!", 80, GetScreenHeight() - 40, 20, RAYWHITE); diff --git a/examples/shaders/shaders_postprocessing.c b/examples/shaders/shaders_postprocessing.c index ea55c9ca4..156474e60 100644 --- a/examples/shaders/shaders_postprocessing.c +++ b/examples/shaders/shaders_postprocessing.c @@ -141,7 +141,7 @@ int main(void) DrawGrid(10, 1.0f); // Draw a grid EndMode3D(); // End 3d mode drawing, returns to orthographic 2d mode EndTextureMode(); // End drawing to texture (now we have a texture available for next passes) - + BeginDrawing(); ClearBackground(RAYWHITE); // Clear screen background diff --git a/examples/shaders/shaders_shadowmap.c b/examples/shaders/shaders_shadowmap.c index 4910b0908..7f98a25fe 100644 --- a/examples/shaders/shaders_shadowmap.c +++ b/examples/shaders/shaders_shadowmap.c @@ -173,7 +173,7 @@ int main(void) // Draw the same exact things as we drew in the shadowmap! DrawScene(cube, robot); - + EndMode3D(); DrawText("Shadows in raylib using the shadowmapping algorithm!", screenWidth - 320, screenHeight - 20, 10, GRAY); diff --git a/examples/shaders/shaders_simple_mask.c b/examples/shaders/shaders_simple_mask.c index f12230373..2e6e83a61 100644 --- a/examples/shaders/shaders_simple_mask.c +++ b/examples/shaders/shaders_simple_mask.c @@ -97,7 +97,7 @@ int main(void) // Update //---------------------------------------------------------------------------------- UpdateCamera(&camera, CAMERA_FIRST_PERSON); - + framesCounter++; rotation.x += 0.01f; rotation.y += 0.005f; diff --git a/examples/shaders/shaders_texture_outline.c b/examples/shaders/shaders_texture_outline.c index b2172aef9..68db65188 100644 --- a/examples/shaders/shaders_texture_outline.c +++ b/examples/shaders/shaders_texture_outline.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Apply an shdrOutline to a texture +* raylib [shaders] example - texture outline * * Example complexity rating: [★★★☆] 3/4 * @@ -36,7 +36,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [shaders] example - Apply an outline to a texture"); + InitWindow(screenWidth, screenHeight, "raylib [shaders] example - texture outline"); Texture2D texture = LoadTexture("resources/fudesumi.png"); diff --git a/examples/shaders/shaders_texture_tiling.c b/examples/shaders/shaders_texture_tiling.c index d811e30ec..9752b871f 100644 --- a/examples/shaders/shaders_texture_tiling.c +++ b/examples/shaders/shaders_texture_tiling.c @@ -48,7 +48,7 @@ int main(void) // Load a cube model Mesh cube = GenMeshCube(1.0f, 1.0f, 1.0f); Model model = LoadModelFromMesh(cube); - + // Load a texture and assign to cube model Texture2D texture = LoadTexture("resources/cubicmap_atlas.png"); model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; @@ -77,17 +77,17 @@ int main(void) // Draw //---------------------------------------------------------------------------------- BeginDrawing(); - + ClearBackground(RAYWHITE); BeginMode3D(camera); - + BeginShaderMode(shader); DrawModel(model, (Vector3){ 0.0f, 0.0f, 0.0f }, 2.0f, WHITE); EndShaderMode(); DrawGrid(10, 1.0f); - + EndMode3D(); DrawText("Use mouse to rotate the camera", 10, 10, 20, DARKGRAY); @@ -104,6 +104,6 @@ int main(void) CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- - + return 0; } diff --git a/examples/shaders/shaders_vertex_displacement.c b/examples/shaders/shaders_vertex_displacement.c index 8008bc004..1a163f9b7 100644 --- a/examples/shaders/shaders_vertex_displacement.c +++ b/examples/shaders/shaders_vertex_displacement.c @@ -52,7 +52,7 @@ int main(void) Shader shader = LoadShader( TextFormat("resources/shaders/glsl%i/vertex_displacement.vs", GLSL_VERSION), TextFormat("resources/shaders/glsl%i/vertex_displacement.fs", GLSL_VERSION)); - + // Load perlin noise texture Image perlinNoiseImage = GenImagePerlinNoise(512, 512, 0, 0, 1.0f); Texture perlinNoiseMap = LoadTextureFromImage(perlinNoiseImage); @@ -64,7 +64,7 @@ int main(void) rlActiveTextureSlot(1); rlEnableTexture(perlinNoiseMap.id); rlSetUniformSampler(perlinNoiseMapLoc, 1); - + // Create a plane mesh and model Mesh planeMesh = GenMeshPlane(50, 50, 50, 50); Model planeModel = LoadModelFromMesh(planeMesh); diff --git a/examples/shaders/shaders_view_depth.c b/examples/shaders/shaders_view_depth.c index 4f141acb9..f4eecf7e2 100644 --- a/examples/shaders/shaders_view_depth.c +++ b/examples/shaders/shaders_view_depth.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shader] example - render depth texture +* raylib [shaders] example - render depth texture * * Example complexity rating: [★★★☆] 3/4 * @@ -36,7 +36,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [shader] example - render depth texture"); + InitWindow(screenWidth, screenHeight, "raylib [shaders] example - render depth texture"); // Init camera Camera camera = { 0 }; @@ -76,7 +76,7 @@ int main(void) //---------------------------------------------------------------------------------- BeginTextureMode(target); ClearBackground(WHITE); - + BeginMode3D(camera); DrawModel(cube, (Vector3){ 0.0f, 0.0f, 0.0f }, 3.0f, YELLOW); DrawModel(floor, (Vector3){ 10.0f, 0.0f, 2.0f }, 2.0f, RED); diff --git a/examples/shaders/shaders_write_depth.c b/examples/shaders/shaders_write_depth.c index 2d24dcaed..7a0e01968 100644 --- a/examples/shaders/shaders_write_depth.c +++ b/examples/shaders/shaders_write_depth.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Depth buffer writing +* raylib [shaders] example - depth buffer writing * * Example complexity rating: [★★☆☆] 2/4 * @@ -60,7 +60,7 @@ int main(void) .fovy = 45.0f, // Camera field-of-view Y .projection = CAMERA_PERSPECTIVE // Camera projection type }; - + SetTargetFPS(60); // Set our game to run at 60 frames-per-second //-------------------------------------------------------------------------------------- @@ -71,13 +71,13 @@ int main(void) //---------------------------------------------------------------------------------- UpdateCamera(&camera, CAMERA_ORBITAL); //---------------------------------------------------------------------------------- - + // Draw //---------------------------------------------------------------------------------- // Draw into our custom render texture (framebuffer) BeginTextureMode(target); ClearBackground(WHITE); - + BeginMode3D(camera); BeginShaderMode(shader); DrawCubeWiresV((Vector3){ 0.0f, 0.5f, 1.0f }, (Vector3){ 1.0f, 1.0f, 1.0f }, RED); @@ -89,7 +89,7 @@ int main(void) EndMode3D(); EndTextureMode(); - // Draw into screen our custom render texture + // Draw into screen our custom render texture BeginDrawing(); ClearBackground(RAYWHITE); DrawTextureRec(target.texture, (Rectangle) { 0, 0, (float)screenWidth, (float)-screenHeight }, (Vector2) { 0, 0 }, WHITE); diff --git a/examples/shapes/shapes_lines_bezier.c b/examples/shapes/shapes_lines_bezier.c index f963cd4de..3e8f68a7f 100644 --- a/examples/shapes/shapes_lines_bezier.c +++ b/examples/shapes/shapes_lines_bezier.c @@ -69,7 +69,7 @@ int main(void) // Draw line Cubic Bezier, in-out interpolation (easing), no control points DrawLineBezier(startPoint, endPoint, 4.0f, BLUE); - + // Draw start-end spline circles with some details DrawCircleV(startPoint, CheckCollisionPointCircle(mouse, startPoint, 10.0f)? 14.0f : 8.0f, moveStartPoint? RED : BLUE); DrawCircleV(endPoint, CheckCollisionPointCircle(mouse, endPoint, 10.0f)? 14.0f : 8.0f, moveEndPoint? RED : BLUE); diff --git a/examples/shapes/shapes_logo_raylib.c b/examples/shapes/shapes_logo_raylib.c index d26db5ce6..f2974ddb4 100644 --- a/examples/shapes/shapes_logo_raylib.c +++ b/examples/shapes/shapes_logo_raylib.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shapes] example - Draw raylib logo using basic shapes +* raylib [shapes] example - draw raylib logo using basic shapes * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/shapes/shapes_rectangle_advanced.c b/examples/shapes/shapes_rectangle_advanced.c index 0c20c9e8b..d0366f616 100644 --- a/examples/shapes/shapes_rectangle_advanced.c +++ b/examples/shapes/shapes_rectangle_advanced.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shapes] example - Rectangle advanced +* raylib [shapes] example - advanced rectangle drawing * * Example complexity rating: [★★★★] 4/4 * @@ -33,9 +33,9 @@ int main(void) //-------------------------------------------------------------------------------------- const int screenWidth = 800; const int screenHeight = 450; - + InitWindow(screenWidth, screenHeight, "raylib [shapes] example - rectangle avanced"); - + SetTargetFPS(60); // Set our game to run at 60 frames-per-second //-------------------------------------------------------------------------------------- @@ -195,7 +195,7 @@ static void DrawRectangleRoundedGradientH(Rectangle rec, float roundnessLeft, fl } // Here we use the 'Diagram' to guide ourselves to which point receives what color - // By choosing the color correctly associated with a pointe the gradient effect + // By choosing the color correctly associated with a pointe the gradient effect // will naturally come from OpenGL interpolation // [2] Upper Rectangle @@ -266,7 +266,7 @@ static void DrawRectangleRoundedGradientH(Rectangle rec, float roundnessLeft, fl #else // Here we use the 'Diagram' to guide ourselves to which point receives what color. - // By choosing the color correctly associated with a pointe the gradient effect + // By choosing the color correctly associated with a pointe the gradient effect // will naturally come from OpenGL interpolation. // But this time instead of Quad, we think in triangles. @@ -280,10 +280,10 @@ static void DrawRectangleRoundedGradientH(Rectangle rec, float roundnessLeft, fl if (k == 1) color = right, radius = radiusRight; // [3] Upper Right Corner if (k == 2) color = right, radius = radiusRight; // [5] Lower Right Corner if (k == 3) color = left, radius = radiusLeft; // [7] Lower Left Corner - + float angle = angles[k]; const Vector2 center = centers[k]; - + for (int i = 0; i < segments; i++) { rlColor4ub(color.r, color.g, color.b, color.a); diff --git a/examples/shapes/shapes_rectangle_scaling.c b/examples/shapes/shapes_rectangle_scaling.c index b5c778317..7426e54d5 100644 --- a/examples/shapes/shapes_rectangle_scaling.c +++ b/examples/shapes/shapes_rectangle_scaling.c @@ -65,7 +65,7 @@ int main(void) // Check minimum rec size if (rec.width < MOUSE_SCALE_MARK_SIZE) rec.width = MOUSE_SCALE_MARK_SIZE; if (rec.height < MOUSE_SCALE_MARK_SIZE) rec.height = MOUSE_SCALE_MARK_SIZE; - + // Check maximum rec size if (rec.width > (GetScreenWidth() - rec.x)) rec.width = GetScreenWidth() - rec.x; if (rec.height > (GetScreenHeight() - rec.y)) rec.height = GetScreenHeight() - rec.y; diff --git a/examples/shapes/shapes_splines_drawing.c b/examples/shapes/shapes_splines_drawing.c index 3b4c9c284..88cfe688b 100644 --- a/examples/shapes/shapes_splines_drawing.c +++ b/examples/shapes/shapes_splines_drawing.c @@ -23,7 +23,7 @@ #define MAX_SPLINE_POINTS 32 // Cubic Bezier spline control points -// NOTE: Every segment has two control points +// NOTE: Every segment has two control points typedef struct { Vector2 start; Vector2 end; @@ -57,17 +57,17 @@ int main(void) { 520.0f, 60.0f }, { 710.0f, 260.0f }, }; - - // Array required for spline bezier-cubic, + + // Array required for spline bezier-cubic, // including control points interleaved with start-end segment points Vector2 pointsInterleaved[3*(MAX_SPLINE_POINTS - 1) + 1] = { 0 }; - + int pointCount = 5; int selectedPoint = -1; int focusedPoint = -1; Vector2 *selectedControlPoint = NULL; Vector2 *focusedControlPoint = NULL; - + // Cubic Bezier control points initialization ControlPoint control[MAX_SPLINE_POINTS-1] = { 0 }; for (int i = 0; i < pointCount - 1; i++) @@ -79,9 +79,9 @@ int main(void) // Spline config variables float splineThickness = 8.0f; int splineTypeActive = SPLINE_LINEAR; // 0-Linear, 1-BSpline, 2-CatmullRom, 3-Bezier - bool splineTypeEditMode = false; + bool splineTypeEditMode = false; bool splineHelpersActive = true; - + SetTargetFPS(60); // Set our game to run at 60 frames-per-second //-------------------------------------------------------------------------------------- @@ -114,14 +114,14 @@ int main(void) } if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) selectedPoint = focusedPoint; } - + // Spline point movement logic if (selectedPoint >= 0) { points[selectedPoint] = GetMousePosition(); if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) selectedPoint = -1; } - + // Cubic Bezier spline control points logic if ((splineTypeActive == SPLINE_BEZIER) && (focusedPoint == -1)) { @@ -144,7 +144,7 @@ int main(void) } if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) selectedControlPoint = focusedControlPoint; } - + // Spline control point movement logic if (selectedControlPoint != NULL) { @@ -152,7 +152,7 @@ int main(void) if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) selectedControlPoint = NULL; } } - + // Spline selection logic if (IsKeyPressed(KEY_ONE)) splineTypeActive = 0; else if (IsKeyPressed(KEY_TWO)) splineTypeActive = 1; @@ -168,7 +168,7 @@ int main(void) BeginDrawing(); ClearBackground(RAYWHITE); - + if (splineTypeActive == SPLINE_LINEAR) { // Draw spline: linear @@ -191,7 +191,7 @@ int main(void) { // Draw spline: catmull-rom DrawSplineCatmullRom(points, pointCount, splineThickness, RED); // Provide connected points array - + /* for (int i = 0; i < (pointCount - 3); i++) { @@ -202,20 +202,20 @@ int main(void) } else if (splineTypeActive == SPLINE_BEZIER) { - // NOTE: Cubic-bezier spline requires the 2 control points of each segnment to be + // NOTE: Cubic-bezier spline requires the 2 control points of each segnment to be // provided interleaved with the start and end point of every segment - for (int i = 0; i < (pointCount - 1); i++) + for (int i = 0; i < (pointCount - 1); i++) { pointsInterleaved[3*i] = points[i]; pointsInterleaved[3*i + 1] = control[i].start; pointsInterleaved[3*i + 2] = control[i].end; } - + pointsInterleaved[3*(pointCount - 1)] = points[pointCount - 1]; // Draw spline: cubic-bezier (with control points) DrawSplineBezierCubic(pointsInterleaved, 3*(pointCount - 1) + 1, splineThickness, RED); - + /* for (int i = 0; i < 3*(pointCount - 1); i += 3) { @@ -234,7 +234,7 @@ int main(void) else if (focusedControlPoint == &control[i].end) DrawCircleV(control[i].end, 8, GREEN); DrawLineEx(points[i], control[i].start, 1.0f, LIGHTGRAY); DrawLineEx(points[i + 1], control[i].end, 1.0f, LIGHTGRAY); - + // Draw spline control lines DrawLineV(points[i], control[i].start, GRAY); //DrawLineV(control[i].start, control[i].end, LIGHTGRAY); @@ -258,7 +258,7 @@ int main(void) // Check all possible UI states that require controls lock if (splineTypeEditMode || (selectedPoint != -1) || (selectedControlPoint != NULL)) GuiLock(); - + // Draw spline config GuiLabel((Rectangle){ 12, 62, 140, 24 }, TextFormat("Spline thickness: %i", (int)splineThickness)); GuiSliderBar((Rectangle){ 12, 60 + 24, 140, 16 }, NULL, NULL, &splineThickness, 1.0f, 40.0f); @@ -269,7 +269,7 @@ int main(void) GuiLabel((Rectangle){ 12, 10, 140, 24 }, "Spline type:"); if (GuiDropdownBox((Rectangle){ 12, 8 + 24, 140, 28 }, "LINEAR;BSPLINE;CATMULLROM;BEZIER", &splineTypeActive, splineTypeEditMode)) splineTypeEditMode = !splineTypeEditMode; - + GuiUnlock(); EndDrawing(); diff --git a/examples/shapes/shapes_top_down_lights.c b/examples/shapes/shapes_top_down_lights.c index 7e2640117..3c62b602a 100644 --- a/examples/shapes/shapes_top_down_lights.c +++ b/examples/shapes/shapes_top_down_lights.c @@ -55,7 +55,7 @@ LightInfo lights[MAX_LIGHTS] = { 0 }; void MoveLight(int slot, float x, float y) { lights[slot].dirty = true; - lights[slot].position.x = x; + lights[slot].position.x = x; lights[slot].position.y = y; // update the cached bounds @@ -99,7 +99,7 @@ void DrawLightMask(int slot) // If we are valid, then draw the light radius to the alpha mask if (lights[slot].valid) DrawCircleGradient((int)lights[slot].position.x, (int)lights[slot].position.y, lights[slot].outerRadius, ColorAlpha(WHITE, 0), WHITE); - + rlDrawRenderBatchActive(); // Cut out the shadows from the light radius by forcing the alpha to maximum @@ -114,7 +114,7 @@ void DrawLightMask(int slot) } rlDrawRenderBatchActive(); - + // Go back to normal blend mode rlSetBlendMode(BLEND_ALPHA); @@ -156,7 +156,7 @@ bool UpdateLight(int slot, Rectangle* boxes, int count) if (!CheckCollisionRecs(lights[slot].bounds, boxes[i])) continue; // Check the edges that are on the same side we are, and cast shadow volumes out from them - + // Top Vector2 sp = (Vector2){ boxes[i].x, boxes[i].y }; Vector2 ep = (Vector2){ boxes[i].x + boxes[i].width, boxes[i].y }; @@ -219,7 +219,7 @@ int main(void) //-------------------------------------------------------------------------------------- const int screenWidth = 800; const int screenHeight = 450; - + InitWindow(screenWidth, screenHeight, "raylib [shapes] example - top down lights"); // Initialize our 'world' of boxes @@ -274,7 +274,7 @@ int main(void) { // Build up the light mask BeginTextureMode(lightMask); - + ClearBackground(BLACK); // Force the blend mode to only set the alpha of the destination @@ -300,10 +300,10 @@ int main(void) BeginDrawing(); ClearBackground(BLACK); - + // Draw the tile background DrawTextureRec(backgroundTexture, (Rectangle){ 0, 0, (float)GetScreenWidth(), (float)GetScreenHeight() }, Vector2Zero(), WHITE); - + // Overlay the shadows from all the lights DrawTextureRec(lightMask.texture, (Rectangle){ 0, 0, (float)GetScreenWidth(), -(float)GetScreenHeight() }, Vector2Zero(), ColorAlpha(WHITE, showLines? 0.75f : 1.0f)); diff --git a/examples/text/text_codepoints_loading.c b/examples/text/text_codepoints_loading.c index a176148ea..1cbd80ac9 100644 --- a/examples/text/text_codepoints_loading.c +++ b/examples/text/text_codepoints_loading.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - Codepoints loading +* raylib [text] example - text codepoints loading * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/text/text_draw_3d.c b/examples/text/text_draw_3d.c index c06698b9f..734d9d744 100644 --- a/examples/text/text_draw_3d.c +++ b/examples/text/text_draw_3d.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - Draw 3d +* raylib [text] example - drawing 3d text * * Example complexity rating: [★★★★] 4/4 * @@ -12,7 +12,7 @@ * map that texture to a plane and render that, or maybe a shader but my method allows more * flexibility...for example to change position of each letter individually to make somethink * like a wavy text effect. -* +* * Special thanks to: * @Nighten for the DrawTextStyle() code https://github.com/NightenDushi/Raylib_DrawTextStyle * Chris Camacho (codifies - http://bedroomcoders.co.uk/) for the alpha discard shader @@ -146,7 +146,7 @@ int main(void) // Update //---------------------------------------------------------------------------------- UpdateCamera(&camera, camera_mode); - + // Handle font files dropped if (IsFileDropped()) { @@ -164,7 +164,7 @@ int main(void) font = LoadFont(droppedFiles.paths[0]); fontSize = (float)font.baseSize; } - + UnloadDroppedFiles(droppedFiles); // Unload filepaths from memory } diff --git a/examples/text/text_font_filters.c b/examples/text/text_font_filters.c index f3293e6be..f75ae26b2 100644 --- a/examples/text/text_font_filters.c +++ b/examples/text/text_font_filters.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - Font filters +* raylib [text] example - font texture filters * * Example complexity rating: [★★☆☆] 2/4 * @@ -94,7 +94,7 @@ int main(void) UnloadFont(font); font = LoadFontEx(droppedFiles.paths[0], (int)fontSize, 0, 0); } - + UnloadDroppedFiles(droppedFiles); // Unload filepaths from memory } //---------------------------------------------------------------------------------- diff --git a/examples/text/text_font_sdf.c b/examples/text/text_font_sdf.c index 7a051710b..fd3b2f776 100644 --- a/examples/text/text_font_sdf.c +++ b/examples/text/text_font_sdf.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - Font SDF loading +* raylib [text] example - font SDF loading * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/text/text_font_spritefont.c b/examples/text/text_font_spritefont.c index 95b5cfee5..d3200a9ae 100644 --- a/examples/text/text_font_spritefont.c +++ b/examples/text/text_font_spritefont.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - Sprite font loading +* raylib [text] example - sprite font loading * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/text/text_format_text.c b/examples/text/text_format_text.c index eca6500e3..a5c2a2331 100644 --- a/examples/text/text_format_text.c +++ b/examples/text/text_format_text.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - Text formatting +* raylib [text] example - text formating * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/text/text_input_box.c b/examples/text/text_input_box.c index 24672b2ad..2e55e8b74 100644 --- a/examples/text/text_input_box.c +++ b/examples/text/text_input_box.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - Input Box +* raylib [text] example - text input box * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/text/text_rectangle_bounds.c b/examples/text/text_rectangle_bounds.c index c9dad5f9e..a05dfbd17 100644 --- a/examples/text/text_rectangle_bounds.c +++ b/examples/text/text_rectangle_bounds.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - Rectangle bounds +* raylib [text] example - rectangle bounds * * Example complexity rating: [★★★★] 4/4 * diff --git a/examples/text/text_unicode.c b/examples/text/text_unicode.c index 31faafade..c3ca39d69 100644 --- a/examples/text/text_unicode.c +++ b/examples/text/text_unicode.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - Unicode +* raylib [text] example - unicode text drawing * * Example complexity rating: [★★★★] 4/4 * @@ -284,7 +284,7 @@ int main(void) int length = GetCodepointCount(messages[message].text); const char *info = TextFormat("%s %u characters %i bytes", messages[message].language, length, size); sz = MeasureTextEx(GetFontDefault(), info, 10, 1.0f); - + DrawText(info, (int)(textRect.x + textRect.width - sz.x), (int)(msgRect.y + msgRect.height - sz.y - 2), 10, RAYWHITE); } //------------------------------------------------------------------------------ diff --git a/examples/text/text_writing_anim.c b/examples/text/text_writing_anim.c index 3455cec33..5d5b8ea7d 100644 --- a/examples/text/text_writing_anim.c +++ b/examples/text/text_writing_anim.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - Text Writing Animation +* raylib [text] example - text writing animation * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/textures/textures_background_scrolling.c b/examples/textures/textures_background_scrolling.c index 48ba314d4..d942caa54 100644 --- a/examples/textures/textures_background_scrolling.c +++ b/examples/textures/textures_background_scrolling.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Background scrolling +* raylib [textures] example - background scrolling * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/textures/textures_bunnymark.c b/examples/textures/textures_bunnymark.c index 6f58e8281..a26f175ca 100644 --- a/examples/textures/textures_bunnymark.c +++ b/examples/textures/textures_bunnymark.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Bunnymark +* raylib [textures] example - bunnymark * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/textures/textures_draw_tiled.c b/examples/textures/textures_draw_tiled.c index 801a7c15a..3c5cb7199 100644 --- a/examples/textures/textures_draw_tiled.c +++ b/examples/textures/textures_draw_tiled.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Draw part of the texture tiled +* raylib [textures] example - draw texture tiled * * Example complexity rating: [★★★☆] 3/4 * @@ -36,7 +36,7 @@ int main(void) const int screenHeight = 450; SetConfigFlags(FLAG_WINDOW_RESIZABLE); // Make the window resizable - InitWindow(screenWidth, screenHeight, "raylib [textures] example - Draw part of a texture tiled"); + InitWindow(screenWidth, screenHeight, "raylib [textures] example - draw texture tiled"); // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) Texture texPattern = LoadTexture("resources/patterns.png"); diff --git a/examples/textures/textures_fog_of_war.c b/examples/textures/textures_fog_of_war.c index e9296f3f4..41a332272 100644 --- a/examples/textures/textures_fog_of_war.c +++ b/examples/textures/textures_fog_of_war.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Fog of war +* raylib [textures] example - fog of war * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/textures/textures_image_channel.c b/examples/textures/textures_image_channel.c index 5e159b984..35ef0c7f5 100644 --- a/examples/textures/textures_image_channel.c +++ b/examples/textures/textures_image_channel.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Retrive image channel (mask) +* raylib [textures] example - extract image channel * * NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM) * @@ -79,7 +79,7 @@ int main(void) //---------------------------------------------------------------------------------- // TODO... //---------------------------------------------------------------------------------- - + // Draw //---------------------------------------------------------------------------------- BeginDrawing(); @@ -104,6 +104,7 @@ int main(void) UnloadTexture(textureGreen); UnloadTexture(textureBlue); UnloadTexture(textureAlpha); + CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- diff --git a/examples/textures/textures_image_drawing.c b/examples/textures/textures_image_drawing.c index 05f40df9b..cc2340d82 100644 --- a/examples/textures/textures_image_drawing.c +++ b/examples/textures/textures_image_drawing.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Image loading and drawing on it +* raylib [textures] example - image loading and drawing * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/textures/textures_image_generation.c b/examples/textures/textures_image_generation.c index 2372af9c3..f616c6bfe 100644 --- a/examples/textures/textures_image_generation.c +++ b/examples/textures/textures_image_generation.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Procedural images generation +* raylib [textures] example - procedural images generation * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/textures/textures_image_loading.c b/examples/textures/textures_image_loading.c index 267216332..9ed864db5 100644 --- a/examples/textures/textures_image_loading.c +++ b/examples/textures/textures_image_loading.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Image loading and texture creation +* raylib [textures] example - image loading and texture creation * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/textures/textures_image_rotate.c b/examples/textures/textures_image_rotate.c index 4921dc8ac..cf3278d22 100644 --- a/examples/textures/textures_image_rotate.c +++ b/examples/textures/textures_image_rotate.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Image Rotation +* raylib [textures] example - image rotation * * Example complexity rating: [★★☆☆] 2/4 * @@ -27,7 +27,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [textures] example - texture rotation"); + InitWindow(screenWidth, screenHeight, "raylib [textures] example - image rotation"); // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) Image image45 = LoadImage("resources/raylib_logo.png"); diff --git a/examples/textures/textures_image_text.c b/examples/textures/textures_image_text.c index a0a41404a..6c8720315 100644 --- a/examples/textures/textures_image_text.c +++ b/examples/textures/textures_image_text.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Image text drawing using TTF generated font +* raylib [textures] example - image text drawing using TTF generated font * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/textures/textures_logo_raylib.c b/examples/textures/textures_logo_raylib.c index bd402baec..4fb176217 100644 --- a/examples/textures/textures_logo_raylib.c +++ b/examples/textures/textures_logo_raylib.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Texture loading and drawing +* raylib [textures] example - texture loading and drawing * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/textures/textures_mouse_painting.c b/examples/textures/textures_mouse_painting.c index e2a2b6081..2575c4450 100644 --- a/examples/textures/textures_mouse_painting.c +++ b/examples/textures/textures_mouse_painting.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Mouse painting +* raylib [textures] example - mouse painting * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/textures/textures_polygon.c b/examples/textures/textures_polygon.c index 1cde29a4b..414b91350 100644 --- a/examples/textures/textures_polygon.c +++ b/examples/textures/textures_polygon.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Draw Textured Polygon +* raylib [textures] example - draw textured polygon * * Example complexity rating: [★☆☆☆] 1/4 * @@ -34,7 +34,7 @@ int main(void) //-------------------------------------------------------------------------------------- const int screenWidth = 800; const int screenHeight = 450; - + InitWindow(screenWidth, screenHeight, "raylib [textures] example - textured polygon"); // Define texture coordinates to map our texture to poly @@ -60,7 +60,7 @@ int main(void) points[i].x = (texcoords[i].x - 0.5f)*256.0f; points[i].y = (texcoords[i].y - 0.5f)*256.0f; } - + // Define the vertices drawing position // NOTE: Initially same as points but updated every frame Vector2 positions[MAX_POINTS] = { 0 }; @@ -116,7 +116,7 @@ int main(void) void DrawTexturePoly(Texture2D texture, Vector2 center, Vector2 *points, Vector2 *texcoords, int pointCount, Color tint) { rlBegin(RL_TRIANGLES); - + rlSetTexture(texture.id); rlColor4ub(tint.r, tint.g, tint.b, tint.a); diff --git a/examples/textures/textures_raw_data.c b/examples/textures/textures_raw_data.c index 01248e979..76be8593a 100644 --- a/examples/textures/textures_raw_data.c +++ b/examples/textures/textures_raw_data.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Load textures from raw data +* raylib [textures] example - load textures from raw data * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/textures/textures_sprite_anim.c b/examples/textures/textures_sprite_anim.c index c8b401522..032b1f621 100644 --- a/examples/textures/textures_sprite_anim.c +++ b/examples/textures/textures_sprite_anim.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Sprite animation +* raylib [textures] example - sprite animation * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/textures/textures_srcrec_dstrec.c b/examples/textures/textures_srcrec_dstrec.c index cf3686d15..6c5ba1b36 100644 --- a/examples/textures/textures_srcrec_dstrec.c +++ b/examples/textures/textures_srcrec_dstrec.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Texture source and destination rectangles +* raylib [textures] example - texture source and destination rectangles * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/textures/textures_textured_curve.c b/examples/textures/textures_textured_curve.c index 00417b038..0102e8d5c 100644 --- a/examples/textures/textures_textured_curve.c +++ b/examples/textures/textures_textured_curve.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Draw a texture along a segmented curve +* raylib [textures] example - draw texture along segmented curve * * Example complexity rating: [★★★☆] 3/4 * @@ -112,7 +112,7 @@ int main() ClearBackground(RAYWHITE); DrawTexturedCurve(); // Draw a textured Spline Cubic Bezier - + // Draw spline for reference if (showCurve) DrawSplineSegmentBezierCubic(curveStartPosition, curveEndPosition, curveStartPositionTangent, curveEndPositionTangent, 2, BLUE); @@ -120,7 +120,7 @@ int main() DrawLineV(curveStartPosition, curveStartPositionTangent, SKYBLUE); DrawLineV(curveStartPositionTangent, curveEndPositionTangent, Fade(LIGHTGRAY, 0.4f)); DrawLineV(curveEndPosition, curveEndPositionTangent, PURPLE); - + if (CheckCollisionPointCircle(mouse, curveStartPosition, 6)) DrawCircleV(curveStartPosition, 7, YELLOW); DrawCircleV(curveStartPosition, 5, RED); @@ -137,7 +137,7 @@ int main() DrawText("Drag points to move curve, press SPACE to show/hide base curve", 10, 10, 10, DARKGRAY); DrawText(TextFormat("Curve width: %2.0f (Use + and - to adjust)", curveWidth), 10, 30, 10, DARKGRAY); DrawText(TextFormat("Curve segments: %d (Use LEFT and RIGHT to adjust)", curveSegments), 10, 50, 10, DARKGRAY); - + EndDrawing(); //---------------------------------------------------------------------------------- } @@ -145,7 +145,7 @@ int main() // De-Initialization //-------------------------------------------------------------------------------------- UnloadTexture(texRoad); - + CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- diff --git a/examples/textures/textures_to_image.c b/examples/textures/textures_to_image.c index 84b4a72be..16d55f84c 100644 --- a/examples/textures/textures_to_image.c +++ b/examples/textures/textures_to_image.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Retrieve image data from texture: LoadImageFromTexture() +* raylib [textures] example - texture to image * * Example complexity rating: [★☆☆☆] 1/4 * From 8da4887c2dd7171d57556bed6c7401d4cc7d8d5a Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:19:27 +0200 Subject: [PATCH 177/328] Update examples_list.txt --- examples/examples_list.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/examples_list.txt b/examples/examples_list.txt index 964bae667..230656000 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -141,6 +141,7 @@ shaders;shaders_simple_mask;⭐️⭐️☆☆;2.5;3.7;"Chris Camacho";@chriscam shaders;shaders_hot_reloading;⭐️⭐️⭐️☆;3.0;3.5;"Ramon Santamaria";@raysan5 shaders;shaders_mesh_instancing;⭐️⭐️⭐️⭐️;3.7;4.2;"seanpringle";@seanpringle shaders;shaders_multi_sample2d;⭐️⭐️☆☆;3.5;3.5;"Ramon Santamaria";@raysan5 +shaders;shaders_normalmap;⭐️⭐️⭐️⭐️;5.6;5.6;"Jeremy Montgomery";@Sir_Irk shaders;shaders_spotlight;⭐️⭐️☆☆;2.5;3.7;"Chris Camacho";@chriscamacho shaders;shaders_deferred_render;⭐️⭐️⭐️⭐️;4.5;4.5;"Justin Andreas Lacoste";@27justin shaders;shaders_hybrid_render;⭐️⭐️⭐️⭐️;4.2;4.2;"Buğra Alptekin Sarı";@BugraAlptekinSari From 54473e2c2b6162d2a5446b853b816e51da3b8f5b Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:28:25 +0200 Subject: [PATCH 178/328] REVIEWED: Example `shaders_normalmap`, it crashes #5032 --- examples/shaders/shaders_normalmap.c | 53 ++++++++++++----------- examples/textures/textures_image_kernel.c | 2 +- 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/examples/shaders/shaders_normalmap.c b/examples/shaders/shaders_normalmap.c index 96cbf414a..58c7deb48 100644 --- a/examples/shaders/shaders_normalmap.c +++ b/examples/shaders/shaders_normalmap.c @@ -19,12 +19,13 @@ ********************************************************************************************/ #include + #include #if defined(PLATFORM_DESKTOP) -#define GLSL_VERSION 330 -#else // PLATFORM_ANDROID, PLATFORM_WEB -#define GLSL_VERSION 100 + #define GLSL_VERSION 330 +#else // PLATFORM_ANDROID, PLATFORM_WEB + #define GLSL_VERSION 100 #endif //------------------------------------------------------------------------------------ @@ -34,14 +35,16 @@ int main(void) { // Initialization //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; SetConfigFlags(FLAG_MSAA_4X_HINT); - InitWindow(800, 450, "Normal Map"); + InitWindow(screenWidth, screenHeight, "raylib [shaders] example - normal map"); - Camera camera = {0}; - camera.position = (Vector3){0.0f, 2.0f, -4.0f}; - camera.target = (Vector3){0.0f, 0.0f, 0.0f}; - camera.up = (Vector3){0.0f, 1.0f, 0.0f}; + Camera camera = { 0 }; + camera.position = (Vector3){ 0.0f, 2.0f, -4.0f }; + camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; + camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; camera.fovy = 45.0f; camera.projection = CAMERA_PERSPECTIVE; @@ -52,12 +55,13 @@ int main(void) // Get some required shader locations shader.locs[SHADER_LOC_MAP_NORMAL] = GetShaderLocation(shader, "normalMap"); shader.locs[SHADER_LOC_VECTOR_VIEW] = GetShaderLocation(shader, "viewPos"); + // NOTE: "matModel" location name is automatically assigned on shader loading, // no need to get the location again if using that uniform name // shader.locs[SHADER_LOC_MATRIX_MODEL] = GetShaderLocation(shader, "matModel"); - // This example uses just 1 point light. - Vector3 lightPosition = {0.0f, 1.0f, 0.0f}; + // This example uses just 1 point light + Vector3 lightPosition = { 0.0f, 1.0f, 0.0f }; int lightPosLoc = GetShaderLocation(shader, "lightPos"); // Load a plane model that has proper normals and tangents @@ -91,26 +95,25 @@ int main(void) { // Update //---------------------------------------------------------------------------------- - // Move the light around on the X and Z axis using WASD keys - Vector3 direction = {0}; - if (IsKeyDown(KEY_W)) direction = Vector3Add(direction, (Vector3){0.0f, 0.0f, 1.0f}); - if (IsKeyDown(KEY_S)) direction = Vector3Add(direction, (Vector3){0.0f, 0.0f, -1.0f}); - if (IsKeyDown(KEY_D)) direction = Vector3Add(direction, (Vector3){-1.0f, 0.0f, 0.0f}); - if (IsKeyDown(KEY_A)) direction = Vector3Add(direction, (Vector3){1.0f, 0.0f, 0.0f}); + Vector3 direction = { 0 }; + if (IsKeyDown(KEY_W)) direction = Vector3Add(direction, (Vector3){ 0.0f, 0.0f, 1.0f }); + if (IsKeyDown(KEY_S)) direction = Vector3Add(direction, (Vector3){ 0.0f, 0.0f, -1.0f }); + if (IsKeyDown(KEY_D)) direction = Vector3Add(direction, (Vector3){ -1.0f, 0.0f, 0.0f }); + if (IsKeyDown(KEY_A)) direction = Vector3Add(direction, (Vector3){ 1.0f, 0.0f, 0.0f }); direction = Vector3Normalize(direction); - lightPosition = Vector3Add(lightPosition, Vector3Scale(direction, GetFrameTime() * 3.0f)); + lightPosition = Vector3Add(lightPosition, Vector3Scale(direction, GetFrameTime()*3.0f)); // Increase/Decrease the specular exponent(shininess) - if (IsKeyDown(KEY_UP)) specularExponent = Clamp(specularExponent + 40.0f * GetFrameTime(), 2.0f, 128.0f); - if (IsKeyDown(KEY_DOWN)) specularExponent = Clamp(specularExponent - 40.0f * GetFrameTime(), 2.0f, 128.0f); + if (IsKeyDown(KEY_UP)) specularExponent = Clamp(specularExponent + 40.0f*GetFrameTime(), 2.0f, 128.0f); + if (IsKeyDown(KEY_DOWN)) specularExponent = Clamp(specularExponent - 40.0f*GetFrameTime(), 2.0f, 128.0f); // Toggle normal map on and off if (IsKeyPressed(KEY_N)) useNormalMap = !useNormalMap; // Spin plane model at a constant rate - plane.transform = MatrixRotateY(GetTime() * 0.5f); + plane.transform = MatrixRotateY(GetTime()*0.5f); // Update shader values float lightPos[3] = {lightPosition.x, lightPosition.y, lightPosition.z}; @@ -138,19 +141,19 @@ int main(void) EndShaderMode(); - //Draw sphere to show light position + // Draw sphere to show light position DrawSphereWires(lightPosition, 0.2f, 8, 8, ORANGE); EndMode3D(); Color textColor = (useNormalMap) ? DARKGREEN : RED; const char *toggleStr = (useNormalMap) ? "On" : "Off"; - DrawText(TextFormat("Use key [N] to toggle normal map: %s", toggleStr), 10, 30, 20, textColor); + DrawText(TextFormat("Use key [N] to toggle normal map: %s", toggleStr), 10, 30, 10, textColor); int yOffset = 24; - DrawText("Use keys [W][A][S][D] to move the light", 10, 30 + yOffset * 1, 20, BLACK); - DrawText("Use keys [Up][Down] to change specular exponent", 10, 30 + yOffset * 2, 20, BLACK); - DrawText(TextFormat("Specular Exponent: %.2f", specularExponent), 10, 30 + yOffset * 3, 20, BLUE); + DrawText("Use keys [W][A][S][D] to move the light", 10, 30 + yOffset*1, 10, BLACK); + DrawText("Use keys [Up][Down] to change specular exponent", 10, 30 + yOffset*2, 10, BLACK); + DrawText(TextFormat("Specular Exponent: %.2f", specularExponent), 10, 30 + yOffset*3, 10, BLUE); DrawFPS(10, 10); diff --git a/examples/textures/textures_image_kernel.c b/examples/textures/textures_image_kernel.c index fa1bc92c7..cfd05092a 100644 --- a/examples/textures/textures_image_kernel.c +++ b/examples/textures/textures_image_kernel.c @@ -22,7 +22,7 @@ //------------------------------------------------------------------------------------ // Module functions declaration //------------------------------------------------------------------------------------ -void NormalizeKernel(float *kernel, int size); +static void NormalizeKernel(float *kernel, int size); //------------------------------------------------------------------------------------ // Program main entry point From 2365ac8defd2bc82b93ab6399e6513ef5e253e8d Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:31:11 +0200 Subject: [PATCH 179/328] REVIEWED: Example `shaders_normalmap` #5032 --- examples/shaders/shaders_normalmap.c | 10 +++++----- examples/shaders/shaders_normalmap.png | Bin 267835 -> 382358 bytes 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/shaders/shaders_normalmap.c b/examples/shaders/shaders_normalmap.c index 58c7deb48..fcbf6135d 100644 --- a/examples/shaders/shaders_normalmap.c +++ b/examples/shaders/shaders_normalmap.c @@ -148,14 +148,14 @@ int main(void) Color textColor = (useNormalMap) ? DARKGREEN : RED; const char *toggleStr = (useNormalMap) ? "On" : "Off"; - DrawText(TextFormat("Use key [N] to toggle normal map: %s", toggleStr), 10, 30, 10, textColor); + DrawText(TextFormat("Use key [N] to toggle normal map: %s", toggleStr), 10, 10, 10, textColor); int yOffset = 24; - DrawText("Use keys [W][A][S][D] to move the light", 10, 30 + yOffset*1, 10, BLACK); - DrawText("Use keys [Up][Down] to change specular exponent", 10, 30 + yOffset*2, 10, BLACK); - DrawText(TextFormat("Specular Exponent: %.2f", specularExponent), 10, 30 + yOffset*3, 10, BLUE); + DrawText("Use keys [W][A][S][D] to move the light", 10, 10 + yOffset*1, 10, BLACK); + DrawText("Use keys [Up][Down] to change specular exponent", 10, 10 + yOffset*2, 10, BLACK); + DrawText(TextFormat("Specular Exponent: %.2f", specularExponent), 10, 10 + yOffset*3, 10, BLUE); - DrawFPS(10, 10); + DrawFPS(screenWidth - 80, 10); EndDrawing(); //-------------------------------------------------------------------------------------- diff --git a/examples/shaders/shaders_normalmap.png b/examples/shaders/shaders_normalmap.png index b2db75eeceb02020ad430ad7c017540d445f5b81..f6057479ddfbb2689e3bccdd6c58fb7d4006df67 100644 GIT binary patch literal 382358 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

    W{G@`1927g({@bKa+FS|b2j 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≦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

    6ah>nQJbzR@fh- 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%0AHf}Jt;7rA>8Ppiz?fT?{IObtC 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

    (^g^(7+DP21t1zYI=Ng_4bWg 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 U=I*2-CIA2c07*qoM6N<$g3RZuEC2ui From 6792e6e2dd8b4a3f056e50e30d9ac2ed9fd440f7 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 17:50:18 +0200 Subject: [PATCH 180/328] Updated required files for new example: `shaders_normalmap` --- examples/Makefile.Web | 8 + examples/README.md | 5 +- .../VS2022/examples/shaders_normalmap.vcxproj | 569 ++++++++++++++++++ tools/rexm/examples_report.md | 1 + 4 files changed, 581 insertions(+), 2 deletions(-) create mode 100644 projects/VS2022/examples/shaders_normalmap.vcxproj diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 20483e4e6..ef10840ee 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -1202,6 +1202,14 @@ shaders/shaders_multi_sample2d: shaders/shaders_multi_sample2d.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/shaders/glsl100/color_mix.fs@resources/shaders/glsl100/color_mix.fs +shaders/shaders_normalmap: shaders/shaders_normalmap.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ + --preload-file shaders/resources/shaders/glsl100/normalmap.vs@resources/shaders/glsl100/normalmap.vs \ + --preload-file shaders/resources/shaders/glsl100/normalmap.fs@resources/shaders/glsl100/normalmap.fs \ + --preload-file shaders/resources/models/plane.glb@resources/models/plane.glb \ + --preload-file shaders/resources/tiles_diffuse.png@resources/tiles_diffuse.png \ + --preload-file shaders/resources/tiles_normal.png@resources/tiles_normal.png + shaders/shaders_palette_switch: shaders/shaders_palette_switch.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/shaders/glsl100/palette_switch.fs@resources/shaders/glsl100/palette_switch.fs diff --git a/examples/README.md b/examples/README.md index 1c169d25a..cb17f8e84 100644 --- a/examples/README.md +++ b/examples/README.md @@ -16,7 +16,7 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 159] +## EXAMPLES COLLECTION [TOTAL: 160] ### category: core [36] @@ -170,7 +170,7 @@ Examples using raylib models functionality, including models loading/generation | [models_bone_socket](models/models_bone_socket.c) | models_bone_socket | ⭐⭐⭐⭐️ | 4.5 | 4.5 | [iP](https://github.com/ipzaur) | | [models_tesseract_view](models/models_tesseract_view.c) | models_tesseract_view | ⭐⭐☆☆ | 5.6 | 5.6 | [Timothy van der Valk](https://github.com/arceryz) | -### category: shaders [28] +### category: shaders [29] Examples using raylib shaders functionality, including shaders loading, parameters configuration and drawing using them (model shaders and postprocessing shaders). This functionality is directly provided by raylib [rlgl](../src/rlgl.c) module. @@ -193,6 +193,7 @@ Examples using raylib shaders functionality, including shaders loading, paramete | [shaders_hot_reloading](shaders/shaders_hot_reloading.c) | shaders_hot_reloading | ⭐⭐⭐☆ | 3.0 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | | [shaders_mesh_instancing](shaders/shaders_mesh_instancing.c) | shaders_mesh_instancing | ⭐⭐⭐⭐️ | 3.7 | 4.2 | [seanpringle](https://github.com/seanpringle) | | [shaders_multi_sample2d](shaders/shaders_multi_sample2d.c) | shaders_multi_sample2d | ⭐⭐☆☆ | 3.5 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [shaders_normalmap](shaders/shaders_normalmap.c) | shaders_normalmap | ⭐⭐⭐⭐️ | 5.6 | 5.6 | [Jeremy Montgomery](https://github.com/Sir_Irk) | | [shaders_spotlight](shaders/shaders_spotlight.c) | shaders_spotlight | ⭐⭐☆☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | | [shaders_deferred_render](shaders/shaders_deferred_render.c) | shaders_deferred_render | ⭐⭐⭐⭐️ | 4.5 | 4.5 | [Justin Andreas Lacoste](https://github.com/27justin) | | [shaders_hybrid_render](shaders/shaders_hybrid_render.c) | shaders_hybrid_render | ⭐⭐⭐⭐️ | 4.2 | 4.2 | [Buğra Alptekin Sarı](https://github.com/BugraAlptekinSari) | diff --git a/projects/VS2022/examples/shaders_normalmap.vcxproj b/projects/VS2022/examples/shaders_normalmap.vcxproj new file mode 100644 index 000000000..79f976102 --- /dev/null +++ b/projects/VS2022/examples/shaders_normalmap.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + shaders_normalmap + 10.0 + shaders_normalmap + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/tools/rexm/examples_report.md b/tools/rexm/examples_report.md index ef1aca64b..6fa79bd50 100644 --- a/tools/rexm/examples_report.md +++ b/tools/rexm/examples_report.md @@ -153,6 +153,7 @@ Example elements validated: | shaders_hot_reloading | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_mesh_instancing | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_multi_sample2d | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_normalmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ❌ | ❌ | ❌ | | shaders_spotlight | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_deferred_render | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_hybrid_render | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | From 570082deba05e7d9f87041481f2b7ca0ea3d4baf Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 18:23:20 +0200 Subject: [PATCH 181/328] `WARNING`: **NEW** raylib code CONVENTION: Comments do not end with '.' --- CONVENTIONS.md | 4 ++ examples/audio/audio_raw_stream.c | 4 +- examples/core/core_custom_frame_control.c | 2 +- examples/core/core_smooth_pixelperfect.c | 3 +- examples/examples_template.c | 24 ++++---- examples/models/models_animation.c | 2 +- examples/models/models_billboard.c | 4 +- examples/models/models_loading.c | 6 +- examples/models/models_loading_m3d.c | 2 +- examples/others/easings_testbed.c | 6 +- examples/others/raylib_opengl_interop.c | 12 ++-- examples/others/rlgl_compute_shader.c | 8 +-- examples/others/rlgl_standalone.c | 4 +- examples/shaders/shaders_basic_lighting.c | 4 +- examples/shaders/shaders_custom_uniform.c | 2 +- examples/shaders/shaders_deferred_render.c | 34 ++++++------ examples/shaders/shaders_eratosthenes.c | 6 +- examples/shaders/shaders_fog.c | 4 +- examples/shaders/shaders_hot_reloading.c | 2 +- examples/shaders/shaders_hybrid_render.c | 14 ++--- examples/shaders/shaders_julia_set.c | 13 ++--- examples/shaders/shaders_lightmap.c | 4 +- examples/shaders/shaders_model_shader.c | 2 +- examples/shaders/shaders_multi_sample2d.c | 2 +- examples/shaders/shaders_normalmap.c | 4 +- examples/shaders/shaders_palette_switch.c | 2 +- examples/shaders/shaders_postprocessing.c | 2 +- examples/shaders/shaders_raymarching.c | 2 +- examples/shaders/shaders_shadowmap.c | 2 +- examples/shaders/shaders_shapes_textures.c | 2 +- examples/shaders/shaders_spotlight.c | 8 +-- examples/shaders/shaders_texture_outline.c | 2 +- examples/shaders/shaders_texture_tiling.c | 2 +- examples/shaders/shaders_texture_waves.c | 2 +- .../shapes/shapes_easings_rectangle_array.c | 2 +- examples/shapes/shapes_rectangle_advanced.c | 6 +- examples/text/text_codepoints_loading.c | 2 +- examples/text/text_draw_3d.c | 10 ++-- examples/text/text_font_spritefont.c | 2 +- examples/text/text_input_box.c | 2 +- examples/text/text_rectangle_bounds.c | 4 +- examples/text/text_unicode.c | 4 +- examples/textures/textures_draw_tiled.c | 4 +- examples/textures/textures_image_channel.c | 4 +- .../textures/textures_particles_blending.c | 2 +- src/external/rl_gputex.h | 6 +- src/platforms/rcore_desktop_glfw.c | 55 ++++++++++--------- src/platforms/rcore_desktop_sdl.c | 35 ++++++------ src/platforms/rcore_drm.c | 32 +++++------ src/raudio.c | 14 ++--- src/raylib.h | 2 +- src/rmodels.c | 22 ++++---- src/rshapes.c | 6 +- src/rtext.c | 6 +- src/rtextures.c | 2 +- 55 files changed, 210 insertions(+), 208 deletions(-) diff --git a/CONVENTIONS.md b/CONVENTIONS.md index b7ace0275..17c02e216 100644 --- a/CONVENTIONS.md +++ b/CONVENTIONS.md @@ -28,6 +28,10 @@ Some other conventions to follow: - **ALWAYS** initialize all defined variables. - **Do not use TABS**, use 4 spaces instead. - Avoid trailing spaces, please, avoid them + - Comments always start with space + capital letter and never end with a '.', place them **before** the line(s) they refer to +```c +// This is a comment in raylib or raylib examples +``` - Control flow statements always are followed **by a space**: ```c if (condition) value = 0; diff --git a/examples/audio/audio_raw_stream.c b/examples/audio/audio_raw_stream.c index fb36830ce..84c8963e3 100644 --- a/examples/audio/audio_raw_stream.c +++ b/examples/audio/audio_raw_stream.c @@ -108,8 +108,6 @@ int main(void) { // Update //---------------------------------------------------------------------------------- - - // Sample mouse input. mousePosition = GetMousePosition(); if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) @@ -125,7 +123,7 @@ int main(void) // Compute two cycles to allow the buffer padding, simplifying any modulation, resampling, etc. if (frequency != oldFrequency) { - // Compute wavelength. Limit size in both directions. + // Compute wavelength. Limit size in both directions //int oldWavelength = waveLength; waveLength = (int)(22050/frequency); if (waveLength > MAX_SAMPLES/2) waveLength = MAX_SAMPLES/2; diff --git a/examples/core/core_custom_frame_control.c b/examples/core/core_custom_frame_control.c index ed08f8e87..40af52f41 100644 --- a/examples/core/core_custom_frame_control.c +++ b/examples/core/core_custom_frame_control.c @@ -12,7 +12,7 @@ * 4. PollInputEvents() * * To avoid steps 2, 3 and 4, flag SUPPORT_CUSTOM_FRAME_CONTROL can be enabled in -* config.h (it requires recompiling raylib). This way those steps are up to the user. +* config.h (it requires recompiling raylib). This way those steps are up to the user * * Note that enabling this flag invalidates some functions: * - GetFrameTime() diff --git a/examples/core/core_smooth_pixelperfect.c b/examples/core/core_smooth_pixelperfect.c index 0bd82db43..697b2ff09 100644 --- a/examples/core/core_smooth_pixelperfect.c +++ b/examples/core/core_smooth_pixelperfect.c @@ -43,7 +43,8 @@ int main(void) Camera2D screenSpaceCamera = { 0 }; // Smoothing camera screenSpaceCamera.zoom = 1.0f; - RenderTexture2D target = LoadRenderTexture(virtualScreenWidth, virtualScreenHeight); // This is where we'll draw all our objects. + // Load render texture to draw all our objects + RenderTexture2D target = LoadRenderTexture(virtualScreenWidth, virtualScreenHeight); Rectangle rec01 = { 70.0f, 35.0f, 20.0f, 20.0f }; Rectangle rec02 = { 90.0f, 55.0f, 30.0f, 10.0f }; diff --git a/examples/examples_template.c b/examples/examples_template.c index 433fe57bd..2bb223a9c 100644 --- a/examples/examples_template.c +++ b/examples/examples_template.c @@ -6,30 +6,30 @@ 1. File naming: _ - Lower case filename, words separated by underscore, no more than 3-4 words in total to describe the example. referes to the primary - raylib module the example is more related with (code, shapes, textures, models, shaders, raudio). + raylib module the example is more related with (code, shapes, textures, models, shaders, raudio) i.e: core_input_multitouch, shapes_lines_bezier, shaders_palette_switch 2. Follow below template structure, example info should list the module, the short description - and the author of the example, twitter or github info could be also provided for the author. - Short description should also be used on the title of the window. + and the author of the example, twitter or github info could be also provided for the author + Short description should also be used on the title of the window 3. Code should be organized by sections:[Initialization]- [Update] - [Draw] - [De-Initialization] Place your code between the dotted lines for every section, please don't mix update logic with drawing - and remember to unload all loaded resources. + and remember to unload all loaded resources 4. Code should follow raylib conventions: https://github.com/raysan5/raylib/wiki/raylib-coding-conventions - Try to be very organized, using line-breaks appropiately. + Try to be very organized, using line-breaks appropiately - 5. Add comments to the specific parts of code the example is focus on. - Don't abuse with comments, try to be clear and impersonal on the comments. + 5. Add comments to the specific parts of code the example is focus on + Don't abuse with comments, try to be clear and impersonal on the comments - 6. Try to keep the example simple, under 300 code lines if possible. Try to avoid external dependencies. - Try to avoid defining functions outside the main(). Example should be as self-contained as possible. + 6. Try to keep the example simple, under 300 code lines if possible. Try to avoid external dependencies + Try to avoid defining functions outside the main(). Example should be as self-contained as possible 7. About external resources, they should be placed in a [resources] folder and those resources - should be open and free for use and distribution. Avoid propietary content. + should be open and free for use and distribution. Avoid propietary content - 8. Try to keep the example simple but with a creative touch. + 8. Try to keep the example simple but with a creative touch Simple but beautiful examples are more appealing to users! 9. In case of additional information is required, just come to raylib Discord channel: example-contributions @@ -37,7 +37,7 @@ 10. Have fun! The following files should be updated when adding a new example, it's planned to create some - script to automatize this process but not available yet. + script to automatize this process but not available yet - raylib/examples//_example_name.c - raylib/examples//_example_name.png diff --git a/examples/models/models_animation.c b/examples/models/models_animation.c index a0f514ad2..2d98cb5ed 100644 --- a/examples/models/models_animation.c +++ b/examples/models/models_animation.c @@ -17,7 +17,7 @@ * * NOTE: To export a model from blender, make sure it is not posed, the vertices need to be * in the same position as they would be in edit mode and the scale of your models is -* set to 0. Scaling can be done from the export menu. +* set to 0. Scaling can be done from the export menu * ********************************************************************************************/ diff --git a/examples/models/models_billboard.c b/examples/models/models_billboard.c index 84c02ea23..82610a4df 100644 --- a/examples/models/models_billboard.c +++ b/examples/models/models_billboard.c @@ -40,7 +40,7 @@ int main(void) Vector3 billPositionStatic = { 0.0f, 2.0f, 0.0f }; // Position of static billboard Vector3 billPositionRotating = { 1.0f, 2.0f, 1.0f }; // Position of rotating billboard - // Entire billboard texture, source is used to take a segment from a larger texture. + // Entire billboard texture, source is used to take a segment from a larger texture Rectangle source = { 0.0f, 0.0f, (float)bill.width, (float)bill.height }; // NOTE: Billboard locked on axis-Y @@ -54,7 +54,7 @@ int main(void) Vector2 origin = Vector2Scale(size, 0.5f); // Distance is needed for the correct billboard draw order - // Larger distance (further away from the camera) should be drawn prior to smaller distance. + // Larger distance (further away from the camera) should be drawn prior to smaller distance float distanceStatic; float distanceRotating; float rotation = 0.0f; diff --git a/examples/models/models_loading.c b/examples/models/models_loading.c index 2a674eeaa..82ae40dc4 100644 --- a/examples/models/models_loading.c +++ b/examples/models/models_loading.c @@ -7,11 +7,11 @@ * NOTE: raylib supports multiple models file formats: * * - OBJ > Text file format. Must include vertex position-texcoords-normals information, -* if files references some .mtl materials file, it will be loaded (or try to). +* if files references some .mtl materials file, it will be loaded (or try to) * - GLTF > Text/binary file format. Includes lot of information and it could -* also reference external files, raylib will try loading mesh and materials data. +* also reference external files, raylib will try loading mesh and materials data * - IQM > Binary file format. Includes mesh vertex data but also animation data, -* raylib can load .iqm animations. +* raylib can load .iqm animations * - VOX > Binary file format. MagikaVoxel mesh format: * https://github.com/ephtracy/voxel-model/blob/master/MagicaVoxel-file-format-vox.txt * - M3D > Binary file format. Model 3D format: diff --git a/examples/models/models_loading_m3d.c b/examples/models/models_loading_m3d.c index 38dfbd51e..871bb54dd 100644 --- a/examples/models/models_loading_m3d.c +++ b/examples/models/models_loading_m3d.c @@ -119,7 +119,7 @@ int main(void) // without a -1, we would always draw a cube at the origin for (int i = 0; i < model.boneCount - 1; i++) { - // By default the model is loaded in bind-pose by LoadModel(). + // By default the model is loaded in bind-pose by LoadModel() // But if UpdateModelAnimation() has been called at least once // then the model is already in animation pose, so we need the animated skeleton if (!animPlaying || !animsCount) diff --git a/examples/others/easings_testbed.c b/examples/others/easings_testbed.c index e3fa0e84b..31daeecee 100644 --- a/examples/others/easings_testbed.c +++ b/examples/others/easings_testbed.c @@ -221,10 +221,12 @@ int main(void) } -// NoEase function, used when "no easing" is selected for any axis. It just ignores all parameters besides b. +// NoEase function, used when "no easing" is selected for any axis +// It just ignores all parameters besides b static float NoEase(float t, float b, float c, float d) { - float burn = t + b + c + d; // Hack to avoid compiler warning (about unused variables) + // Hack to avoid compiler warning (about unused variables) + float burn = t + b + c + d; d += burn; return b; diff --git a/examples/others/raylib_opengl_interop.c b/examples/others/raylib_opengl_interop.c index 53fc744db..4dc534d12 100644 --- a/examples/others/raylib_opengl_interop.c +++ b/examples/others/raylib_opengl_interop.c @@ -16,13 +16,13 @@ ******************************************************************************************** * * Mixes raylib and plain OpenGL code to draw a GL_POINTS based particle system. The -* primary point is to demonstrate raylib and OpenGL interop. +* primary point is to demonstrate raylib and OpenGL interop * * rlgl batched draw operations internally so we have to flush the current batch before -* doing our own OpenGL work (rlDrawRenderBatchActive()). +* doing our own OpenGL work (rlDrawRenderBatchActive()) * * The example also demonstrates how to get the current model view projection matrix of -* raylib. That way raylib cameras and so on work as expected. +* raylib. That way raylib cameras and so on work as expected * ********************************************************************************************/ @@ -87,13 +87,13 @@ int main(void) particles[i].x = (float)GetRandomValue(20, screenWidth - 20); particles[i].y = (float)GetRandomValue(50, screenHeight - 20); - // Give each particle a slightly different period. But don't spread it to much. - // This way the particles line up every so often and you get a glimps of what is going on. + // Give each particle a slightly different period. But don't spread it to much + // This way the particles line up every so often and you get a glimps of what is going on particles[i].period = (float)GetRandomValue(10, 30)/10.0f; } // Create a plain OpenGL vertex buffer with the data and an vertex array object - // that feeds the data from the buffer into the vertexPosition shader attribute. + // that feeds the data from the buffer into the vertexPosition shader attribute GLuint vao = 0; GLuint vbo = 0; glGenVertexArrays(1, &vao); diff --git a/examples/others/rlgl_compute_shader.c b/examples/others/rlgl_compute_shader.c index 74a776d29..07a10b1d5 100644 --- a/examples/others/rlgl_compute_shader.c +++ b/examples/others/rlgl_compute_shader.c @@ -23,11 +23,11 @@ #include -// IMPORTANT: This must match gol*.glsl GOL_WIDTH constant. -// This must be a multiple of 16 (check golLogic compute dispatch). +// IMPORTANT: This must match gol*.glsl GOL_WIDTH constant +// This must be a multiple of 16 (check golLogic compute dispatch) #define GOL_WIDTH 768 -// Maximum amount of queued draw commands (squares draw from mouse down events). +// Maximum amount of queued draw commands (squares draw from mouse down events) #define MAX_BUFFERED_TRANSFERTS 48 // Game Of Life Update Command @@ -160,7 +160,7 @@ int main(void) // De-Initialization //-------------------------------------------------------------------------------------- - // Unload shader buffers objects. + // Unload shader buffers objects rlUnloadShaderBuffer(ssboA); rlUnloadShaderBuffer(ssboB); rlUnloadShaderBuffer(ssboTransfert); diff --git a/examples/others/rlgl_standalone.c b/examples/others/rlgl_standalone.c index e74ca0f6c..631699a5d 100644 --- a/examples/others/rlgl_standalone.c +++ b/examples/others/rlgl_standalone.c @@ -9,7 +9,7 @@ * * Example originally created with raylib 1.6, last time updated with raylib 4.0 * -* WARNING: This example is intended only for PLATFORM_DESKTOP and OpenGL 3.3 Core profile. +* WARNING: This example is intended only for PLATFORM_DESKTOP and OpenGL 3.3 Core profile * It could work on other platforms if redesigned for those platforms (out-of-scope) * * DEPENDENCIES: @@ -48,7 +48,7 @@ * 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. +* 3. This notice may not be removed or altered from any source distribution * ********************************************************************************************/ diff --git a/examples/shaders/shaders_basic_lighting.c b/examples/shaders/shaders_basic_lighting.c index 913e4aeeb..a2a392126 100644 --- a/examples/shaders/shaders_basic_lighting.c +++ b/examples/shaders/shaders_basic_lighting.c @@ -5,9 +5,9 @@ * Example complexity rating: [★★★★] 4/4 * * NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, -* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version. +* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version * -* NOTE: Shaders used in this example are #version 330 (OpenGL 3.3). +* NOTE: Shaders used in this example are #version 330 (OpenGL 3.3) * * Example originally created with raylib 3.0, last time updated with raylib 4.2 * diff --git a/examples/shaders/shaders_custom_uniform.c b/examples/shaders/shaders_custom_uniform.c index 951759079..d6738cf57 100644 --- a/examples/shaders/shaders_custom_uniform.c +++ b/examples/shaders/shaders_custom_uniform.c @@ -5,7 +5,7 @@ * Example complexity rating: [★★☆☆] 2/4 * * NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, -* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version. +* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version * * NOTE: Shaders used in this example are #version 330 (OpenGL 3.3), to test this example * on OpenGL ES 2.0 platforms (Android, Raspberry Pi, HTML5), use #version 100 shaders diff --git a/examples/shaders/shaders_deferred_render.c b/examples/shaders/shaders_deferred_render.c index 1fe6d3a0c..96c118c61 100644 --- a/examples/shaders/shaders_deferred_render.c +++ b/examples/shaders/shaders_deferred_render.c @@ -99,44 +99,44 @@ int main(void) // NOTE: Vertex positions are stored in a texture for simplicity. A better approach would use a depth texture // (instead of a detph renderbuffer) to reconstruct world positions in the final render shader via clip-space position, - // depth, and the inverse view/projection matrices. + // depth, and the inverse view/projection matrices - // 16-bit precision ensures OpenGL ES 3 compatibility, though it may lack precision for real scenarios. + // 16-bit precision ensures OpenGL ES 3 compatibility, though it may lack precision for real scenarios // But as mentioned above, the positions could be reconstructed instead of stored. If not targeting OpenGL ES - // and you wish to maintain this approach, consider using `RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32`. + // and you wish to maintain this approach, consider using `RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32` gBuffer.positionTexture = rlLoadTexture(NULL, screenWidth, screenHeight, RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16, 1); - // Similarly, 16-bit precision is used for normals ensures OpenGL ES 3 compatibility. - // This is generally sufficient, but a 16-bit fixed-point format offer a better uniform precision in all orientations. + // Similarly, 16-bit precision is used for normals ensures OpenGL ES 3 compatibility + // This is generally sufficient, but a 16-bit fixed-point format offer a better uniform precision in all orientations gBuffer.normalTexture = rlLoadTexture(NULL, screenWidth, screenHeight, RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16, 1); - // Albedo (diffuse color) and specular strength can be combined into one texture. - // The color in RGB, and the specular strength in the alpha channel. + // Albedo (diffuse color) and specular strength can be combined into one texture + // The color in RGB, and the specular strength in the alpha channel gBuffer.albedoSpecTexture = rlLoadTexture(NULL, screenWidth, screenHeight, RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, 1); // Activate the draw buffers for our framebuffer rlActiveDrawBuffers(3); - // Now we attach our textures to the framebuffer. + // Now we attach our textures to the framebuffer rlFramebufferAttach(gBuffer.framebuffer, gBuffer.positionTexture, RL_ATTACHMENT_COLOR_CHANNEL0, RL_ATTACHMENT_TEXTURE2D, 0); rlFramebufferAttach(gBuffer.framebuffer, gBuffer.normalTexture, RL_ATTACHMENT_COLOR_CHANNEL1, RL_ATTACHMENT_TEXTURE2D, 0); rlFramebufferAttach(gBuffer.framebuffer, gBuffer.albedoSpecTexture, RL_ATTACHMENT_COLOR_CHANNEL2, RL_ATTACHMENT_TEXTURE2D, 0); - // Finally we attach the depth buffer. + // Finally we attach the depth buffer gBuffer.depthRenderbuffer = rlLoadTextureDepth(screenWidth, screenHeight, true); rlFramebufferAttach(gBuffer.framebuffer, gBuffer.depthRenderbuffer, RL_ATTACHMENT_DEPTH, RL_ATTACHMENT_RENDERBUFFER, 0); - // Make sure our framebuffer is complete. + // Make sure our framebuffer is complete // NOTE: rlFramebufferComplete() automatically unbinds the framebuffer, so we don't have - // to rlDisableFramebuffer() here. + // to rlDisableFramebuffer() here if (!rlFramebufferComplete(gBuffer.framebuffer)) { TraceLog(LOG_WARNING, "Framebuffer is not complete"); } - // Now we initialize the sampler2D uniform's in the deferred shader. + // Now we initialize the sampler2D uniform's in the deferred shader // We do this by setting the uniform's values to the texture units that - // we later bind our g-buffer textures to. + // we later bind our g-buffer textures to rlEnableShader(deferredShader.id); int texUnitPosition = 0; int texUnitNormal = 1; @@ -219,7 +219,7 @@ int main(void) rlDisableColorBlend(); BeginMode3D(camera); // NOTE: We have to use rlEnableShader here. `BeginShaderMode` or thus `rlSetShader` - // will not work, as they won't immediately load the shader program. + // will not work, as they won't immediately load the shader program rlEnableShader(gbufferShader.id); // When drawing a model here, make sure that the material's shaders // are set to the gbuffer shader! @@ -236,7 +236,7 @@ int main(void) EndMode3D(); rlEnableColorBlend(); - // Go back to the default framebuffer (0) and draw our deferred shading. + // Go back to the default framebuffer (0) and draw our deferred shading rlDisableFramebuffer(); rlClearScreenBuffers(); // Clear color & depth buffer @@ -264,10 +264,10 @@ int main(void) rlEnableColorBlend(); EndMode3D(); - // As a last step, we now copy over the depth buffer from our g-buffer to the default framebuffer. + // As a last step, we now copy over the depth buffer from our g-buffer to the default framebuffer rlBindFramebuffer(RL_READ_FRAMEBUFFER, gBuffer.framebuffer); rlBindFramebuffer(RL_DRAW_FRAMEBUFFER, 0); - rlBlitFramebuffer(0, 0, screenWidth, screenHeight, 0, 0, screenWidth, screenHeight, 0x00000100); // GL_DEPTH_BUFFER_BIT + rlBlitFramebuffer(0, 0, screenWidth, screenHeight, 0, 0, screenWidth, screenHeight, 0x00000100); // GL_DEPTH_BUFFER_BIT rlDisableFramebuffer(); // Since our shader is now done and disabled, we can draw spheres diff --git a/examples/shaders/shaders_eratosthenes.c b/examples/shaders/shaders_eratosthenes.c index 03dfc2125..4a974c9c8 100644 --- a/examples/shaders/shaders_eratosthenes.c +++ b/examples/shaders/shaders_eratosthenes.c @@ -4,7 +4,7 @@ * * Example complexity rating: [★★★☆] 3/4 * -* NOTE: Sieve of Eratosthenes, the earliest known (ancient Greek) prime number sieve. +* NOTE: Sieve of Eratosthenes, the earliest known (ancient Greek) prime number sieve * * "Sift the twos and sift the threes, * The Sieve of Eratosthenes. @@ -12,9 +12,9 @@ * the numbers that are left are prime." * * NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, -* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version. +* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version * -* NOTE: Shaders used in this example are #version 330 (OpenGL 3.3). +* NOTE: Shaders used in this example are #version 330 (OpenGL 3.3) * * Example originally created with raylib 2.5, last time updated with raylib 4.0 * diff --git a/examples/shaders/shaders_fog.c b/examples/shaders/shaders_fog.c index 2e589eec4..3307f88f4 100644 --- a/examples/shaders/shaders_fog.c +++ b/examples/shaders/shaders_fog.c @@ -5,9 +5,9 @@ * Example complexity rating: [★★★☆] 3/4 * * NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, -* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version. +* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version * -* NOTE: Shaders used in this example are #version 330 (OpenGL 3.3). +* NOTE: Shaders used in this example are #version 330 (OpenGL 3.3) * * Example originally created with raylib 2.5, last time updated with raylib 3.7 * diff --git a/examples/shaders/shaders_hot_reloading.c b/examples/shaders/shaders_hot_reloading.c index b11245dcc..ef46e9ecf 100644 --- a/examples/shaders/shaders_hot_reloading.c +++ b/examples/shaders/shaders_hot_reloading.c @@ -5,7 +5,7 @@ * Example complexity rating: [★★★☆] 3/4 * * NOTE: This example requires raylib OpenGL 3.3 for shaders support and only #version 330 -* is currently supported. OpenGL ES 2.0 platforms are not supported at the moment. +* is currently supported. OpenGL ES 2.0 platforms are not supported at the moment * * Example originally created with raylib 3.0, last time updated with raylib 3.5 * diff --git a/examples/shaders/shaders_hybrid_render.c b/examples/shaders/shaders_hybrid_render.c index 0c7e789fd..5d4f8aba1 100644 --- a/examples/shaders/shaders_hybrid_render.c +++ b/examples/shaders/shaders_hybrid_render.c @@ -61,15 +61,15 @@ int main(void) // You are required to write depth for all shaders if one shader does it Shader shdrRaster = LoadShader(0, TextFormat("resources/shaders/glsl%i/hybrid_raster.fs", GLSL_VERSION)); - // Declare Struct used to store camera locs. + // Declare Struct used to store camera locs RayLocs marchLocs = {0}; - // Fill the struct with shader locs. + // Fill the struct with shader locs marchLocs.camPos = GetShaderLocation(shdrRaymarch, "camPos"); marchLocs.camDir = GetShaderLocation(shdrRaymarch, "camDir"); marchLocs.screenCenter = GetShaderLocation(shdrRaymarch, "screenCenter"); - // Transfer screenCenter position to shader. Which is used to calculate ray direction. + // Transfer screenCenter position to shader. Which is used to calculate ray direction Vector2 screenCenter = {.x = screenWidth/2.0f, .y = screenHeight/2.0f}; SetShaderValue(shdrRaymarch, marchLocs.screenCenter , &screenCenter , SHADER_UNIFORM_VEC2); @@ -85,7 +85,7 @@ int main(void) .projection = CAMERA_PERSPECTIVE // Camera projection type }; - // Camera FOV is pre-calculated in the camera Distance. + // Camera FOV is pre-calculated in the camera distance float camDist = 1.0f/(tanf(camera.fovy*0.5f*DEG2RAD)); SetTargetFPS(60); // Set our game to run at 60 frames-per-second @@ -98,10 +98,10 @@ int main(void) //---------------------------------------------------------------------------------- UpdateCamera(&camera, CAMERA_ORBITAL); - // Update Camera Postion in the ray march shader. + // Update Camera Postion in the ray march shader SetShaderValue(shdrRaymarch, marchLocs.camPos, &(camera.position), RL_SHADER_UNIFORM_VEC3); - // Update Camera Looking Vector. Vector length determines FOV. + // Update Camera Looking Vector. Vector length determines FOV Vector3 camDir = Vector3Scale( Vector3Normalize( Vector3Subtract(camera.target, camera.position)) , camDist); SetShaderValue(shdrRaymarch, marchLocs.camDir, &(camDir), RL_SHADER_UNIFORM_VEC3); //---------------------------------------------------------------------------------- @@ -113,7 +113,7 @@ int main(void) ClearBackground(WHITE); // Raymarch Scene - rlEnableDepthTest(); //Manually enable Depth Test to handle multiple rendering methods. + rlEnableDepthTest(); // Manually enable Depth Test to handle multiple rendering methods BeginShaderMode(shdrRaymarch); DrawRectangleRec((Rectangle){0,0, (float)screenWidth, (float)screenHeight},WHITE); EndShaderMode(); diff --git a/examples/shaders/shaders_julia_set.c b/examples/shaders/shaders_julia_set.c index 72ff31ad7..da5564321 100644 --- a/examples/shaders/shaders_julia_set.c +++ b/examples/shaders/shaders_julia_set.c @@ -5,9 +5,9 @@ * Example complexity rating: [★★★☆] 3/4 * * NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, -* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version. +* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version * -* NOTE: Shaders used in this example are #version 330 (OpenGL 3.3). +* NOTE: Shaders used in this example are #version 330 (OpenGL 3.3) * * Example originally created with raylib 2.5, last time updated with raylib 4.0 * @@ -109,7 +109,7 @@ int main(void) SetShaderValue(shader, cLoc, c, SHADER_UNIFORM_VEC2); } - // If "R" is pressed, reset zoom and offset. + // If "R" is pressed, reset zoom and offset if (IsKeyPressed(KEY_R)) { zoom = startingZoom; @@ -125,17 +125,16 @@ int main(void) if (IsKeyPressed(KEY_RIGHT)) incrementSpeed++; else if (IsKeyPressed(KEY_LEFT)) incrementSpeed--; - // If either left or right button is pressed, zoom in/out. + // If either left or right button is pressed, zoom in/out if (IsMouseButtonDown(MOUSE_BUTTON_LEFT) || IsMouseButtonDown(MOUSE_BUTTON_RIGHT)) { - // Change zoom. If Mouse left -> zoom in. Mouse right -> zoom out. + // Change zoom. If Mouse left -> zoom in. Mouse right -> zoom out zoom *= IsMouseButtonDown(MOUSE_BUTTON_LEFT)? zoomSpeed : 1.0f/zoomSpeed; const Vector2 mousePos = GetMousePosition(); Vector2 offsetVelocity; // Find the velocity at which to change the camera. Take the distance of the mouse - // from the center of the screen as the direction, and adjust magnitude based on - // the current zoom. + // from the center of the screen as the direction, and adjust magnitude based on the current zoom offsetVelocity.x = (mousePos.x/(float)screenWidth - 0.5f)*offsetSpeedMul/zoom; offsetVelocity.y = (mousePos.y/(float)screenHeight - 0.5f)*offsetSpeedMul/zoom; diff --git a/examples/shaders/shaders_lightmap.c b/examples/shaders/shaders_lightmap.c index a393c1afe..3da900921 100644 --- a/examples/shaders/shaders_lightmap.c +++ b/examples/shaders/shaders_lightmap.c @@ -5,9 +5,9 @@ * Example complexity rating: [★★★☆] 3/4 * * NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, -* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version. +* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version * -* NOTE: Shaders used in this example are #version 330 (OpenGL 3.3). +* NOTE: Shaders used in this example are #version 330 (OpenGL 3.3) * * Example originally created with raylib 4.5, last time updated with raylib 4.5 * diff --git a/examples/shaders/shaders_model_shader.c b/examples/shaders/shaders_model_shader.c index b448bece0..42cfff4aa 100644 --- a/examples/shaders/shaders_model_shader.c +++ b/examples/shaders/shaders_model_shader.c @@ -5,7 +5,7 @@ * Example complexity rating: [★★☆☆] 2/4 * * NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, -* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version. +* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version * * NOTE: Shaders used in this example are #version 330 (OpenGL 3.3), to test this example * on OpenGL ES 2.0 platforms (Android, Raspberry Pi, HTML5), use #version 100 shaders diff --git a/examples/shaders/shaders_multi_sample2d.c b/examples/shaders/shaders_multi_sample2d.c index 67cfb2058..4e732ce1a 100644 --- a/examples/shaders/shaders_multi_sample2d.c +++ b/examples/shaders/shaders_multi_sample2d.c @@ -5,7 +5,7 @@ * Example complexity rating: [★★☆☆] 2/4 * * NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, -* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version. +* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version * * NOTE: Shaders used in this example are #version 330 (OpenGL 3.3), to test this example * on OpenGL ES 2.0 platforms (Android, Raspberry Pi, HTML5), use #version 100 shaders diff --git a/examples/shaders/shaders_normalmap.c b/examples/shaders/shaders_normalmap.c index fcbf6135d..656c8597e 100644 --- a/examples/shaders/shaders_normalmap.c +++ b/examples/shaders/shaders_normalmap.c @@ -5,7 +5,7 @@ * Example complexity rating: [★★★★] 4/4 * * NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, - * OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version. + * OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version * * Example originally created with raylib 5.6, last time updated with raylib 5.6 * @@ -79,7 +79,7 @@ int main(void) SetTextureFilter(plane.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture, TEXTURE_FILTER_TRILINEAR); SetTextureFilter(plane.materials[0].maps[MATERIAL_MAP_NORMAL].texture, TEXTURE_FILTER_TRILINEAR); - // Specular exponent AKA shininess of the material. + // Specular exponent AKA shininess of the material float specularExponent = 8.0f; int specularExponentLoc = GetShaderLocation(shader, "specularExponent"); diff --git a/examples/shaders/shaders_palette_switch.c b/examples/shaders/shaders_palette_switch.c index 50f80b8f0..df35db447 100644 --- a/examples/shaders/shaders_palette_switch.c +++ b/examples/shaders/shaders_palette_switch.c @@ -5,7 +5,7 @@ * Example complexity rating: [★★★☆] 3/4 * * NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, -* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version. +* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version * * NOTE: Shaders used in this example are #version 330 (OpenGL 3.3), to test this example * on OpenGL ES 2.0 platforms (Android, Raspberry Pi, HTML5), use #version 100 shaders diff --git a/examples/shaders/shaders_postprocessing.c b/examples/shaders/shaders_postprocessing.c index 156474e60..fade145ff 100644 --- a/examples/shaders/shaders_postprocessing.c +++ b/examples/shaders/shaders_postprocessing.c @@ -5,7 +5,7 @@ * Example complexity rating: [★★★☆] 3/4 * * NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, -* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version. +* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version * * NOTE: Shaders used in this example are #version 330 (OpenGL 3.3), to test this example * on OpenGL ES 2.0 platforms (Android, Raspberry Pi, HTML5), use #version 100 shaders diff --git a/examples/shaders/shaders_raymarching.c b/examples/shaders/shaders_raymarching.c index ab69fe69a..cc1badb9f 100644 --- a/examples/shaders/shaders_raymarching.c +++ b/examples/shaders/shaders_raymarching.c @@ -5,7 +5,7 @@ * Example complexity rating: [★★★★] 4/4 * * NOTE: This example requires raylib OpenGL 3.3 for shaders support and only #version 330 -* is currently supported. OpenGL ES 2.0 platforms are not supported at the moment. +* is currently supported. OpenGL ES 2.0 platforms are not supported at the moment * * Example originally created with raylib 2.0, last time updated with raylib 4.2 * diff --git a/examples/shaders/shaders_shadowmap.c b/examples/shaders/shaders_shadowmap.c index 7f98a25fe..9c7111a8b 100644 --- a/examples/shaders/shaders_shadowmap.c +++ b/examples/shaders/shaders_shadowmap.c @@ -44,7 +44,7 @@ int main(void) SetConfigFlags(FLAG_MSAA_4X_HINT); // Shadows are a HUGE topic, and this example shows an extremely simple implementation of the shadowmapping algorithm, // which is the industry standard for shadows. This algorithm can be extended in a ridiculous number of ways to improve - // realism and also adapt it for different scenes. This is pretty much the simplest possible implementation. + // realism and also adapt it for different scenes. This is pretty much the simplest possible implementation InitWindow(screenWidth, screenHeight, "raylib [shaders] example - shadowmap"); Camera3D cam = (Camera3D){ 0 }; diff --git a/examples/shaders/shaders_shapes_textures.c b/examples/shaders/shaders_shapes_textures.c index 107b09c03..b0f7752ac 100644 --- a/examples/shaders/shaders_shapes_textures.c +++ b/examples/shaders/shaders_shapes_textures.c @@ -5,7 +5,7 @@ * Example complexity rating: [★★☆☆] 2/4 * * NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, -* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version. +* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version * * NOTE: Shaders used in this example are #version 330 (OpenGL 3.3), to test this example * on OpenGL ES 2.0 platforms (Android, Raspberry Pi, HTML5), use #version 100 shaders diff --git a/examples/shaders/shaders_spotlight.c b/examples/shaders/shaders_spotlight.c index 288292cb6..a0ee7a421 100644 --- a/examples/shaders/shaders_spotlight.c +++ b/examples/shaders/shaders_spotlight.c @@ -20,13 +20,13 @@ * * The right hand side of the screen there is just enough light to see whats * going on without the spot light, great for a stealth type game where you -* have to avoid the spotlights. +* have to avoid the spotlights * -* The left hand side of the screen is in pitch dark except for where the spotlights are. +* The left hand side of the screen is in pitch dark except for where the spotlights are * * Although this example doesn't scale like the letterbox example, you could integrate * the two techniques, but by scaling the actual colour of the render texture rather -* than using alpha as a mask. +* than using alpha as a mask * ********************************************************************************************/ @@ -115,7 +115,7 @@ int main(void) } // Tell the shader how wide the screen is so we can have - // a pitch black half and a dimly lit half. + // a pitch black half and a dimly lit half unsigned int wLoc = GetShaderLocation(shdrSpot, "screenWidth"); float sw = (float)GetScreenWidth(); SetShaderValue(shdrSpot, wLoc, &sw, SHADER_UNIFORM_FLOAT); diff --git a/examples/shaders/shaders_texture_outline.c b/examples/shaders/shaders_texture_outline.c index 68db65188..d7a3a1a07 100644 --- a/examples/shaders/shaders_texture_outline.c +++ b/examples/shaders/shaders_texture_outline.c @@ -5,7 +5,7 @@ * Example complexity rating: [★★★☆] 3/4 * * NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, -* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version. +* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version * * Example originally created with raylib 4.0, last time updated with raylib 4.0 * diff --git a/examples/shaders/shaders_texture_tiling.c b/examples/shaders/shaders_texture_tiling.c index 9752b871f..14e15b8b2 100644 --- a/examples/shaders/shaders_texture_tiling.c +++ b/examples/shaders/shaders_texture_tiling.c @@ -4,7 +4,7 @@ * * Example complexity rating: [★★☆☆] 2/4 * -* Example demonstrates how to tile a texture on a 3D model using raylib. +* Example demonstrates how to tile a texture on a 3D model using raylib * * Example originally created with raylib 4.5, last time updated with raylib 4.5 * diff --git a/examples/shaders/shaders_texture_waves.c b/examples/shaders/shaders_texture_waves.c index 73ba738c6..c957635c4 100644 --- a/examples/shaders/shaders_texture_waves.c +++ b/examples/shaders/shaders_texture_waves.c @@ -5,7 +5,7 @@ * Example complexity rating: [★★☆☆] 2/4 * * NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, -* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version. +* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version * * NOTE: Shaders used in this example are #version 330 (OpenGL 3.3), to test this example * on OpenGL ES 2.0 platforms (Android, Raspberry Pi, HTML5), use #version 100 shaders diff --git a/examples/shapes/shapes_easings_rectangle_array.c b/examples/shapes/shapes_easings_rectangle_array.c index 912926ea4..c55c07979 100644 --- a/examples/shapes/shapes_easings_rectangle_array.c +++ b/examples/shapes/shapes_easings_rectangle_array.c @@ -5,7 +5,7 @@ * Example complexity rating: [★★★☆] 3/4 * * NOTE: This example requires 'easings.h' library, provided on raylib/src. Just copy -* the library to same directory as example or make sure it's available on include path. +* the library to same directory as example or make sure it's available on include path * * Example originally created with raylib 2.0, last time updated with raylib 2.5 * diff --git a/examples/shapes/shapes_rectangle_advanced.c b/examples/shapes/shapes_rectangle_advanced.c index d0366f616..a3f8adf84 100644 --- a/examples/shapes/shapes_rectangle_advanced.c +++ b/examples/shapes/shapes_rectangle_advanced.c @@ -265,10 +265,10 @@ static void DrawRectangleRoundedGradientH(Rectangle rec, float roundnessLeft, fl rlSetTexture(0); #else - // Here we use the 'Diagram' to guide ourselves to which point receives what color. + // Here we use the 'Diagram' to guide ourselves to which point receives what color // By choosing the color correctly associated with a pointe the gradient effect - // will naturally come from OpenGL interpolation. - // But this time instead of Quad, we think in triangles. + // will naturally come from OpenGL interpolation + // But this time instead of Quad, we think in triangles rlBegin(RL_TRIANGLES); // Draw all of the 4 corners: [1] Upper Left Corner, [3] Upper Right Corner, [5] Lower Right Corner, [7] Lower Left Corner diff --git a/examples/text/text_codepoints_loading.c b/examples/text/text_codepoints_loading.c index 1cbd80ac9..28d15c33f 100644 --- a/examples/text/text_codepoints_loading.c +++ b/examples/text/text_codepoints_loading.c @@ -39,7 +39,7 @@ int main(void) InitWindow(screenWidth, screenHeight, "raylib [text] example - codepoints loading"); // Convert each utf-8 character into its - // corresponding codepoint in the font file. + // corresponding codepoint in the font file int codepointCount = 0; int *codepoints = LoadCodepoints(text, &codepointCount); diff --git a/examples/text/text_draw_3d.c b/examples/text/text_draw_3d.c index 734d9d744..d87fb2b86 100644 --- a/examples/text/text_draw_3d.c +++ b/examples/text/text_draw_3d.c @@ -6,12 +6,12 @@ * * NOTE: Draw a 2D text in 3D space, each letter is drawn in a quad (or 2 quads if backface is set) * where the texture coodinates of each quad map to the texture coordinates of the glyphs -* inside the font texture. +* inside the font texture * * A more efficient approach, i believe, would be to render the text in a render texture and * map that texture to a plane and render that, or maybe a shader but my method allows more * flexibility...for example to change position of each letter individually to make somethink -* like a wavy text effect. +* like a wavy text effect * * Special thanks to: * @Nighten for the DrawTextStyle() code https://github.com/NightenDushi/Raylib_DrawTextStyle @@ -71,7 +71,7 @@ static void DrawText3D(Font font, const char *text, Vector3 position, float font // Draw a 2D text in 3D space and wave the parts that start with '~~' and end with '~~' // This is a modified version of the original code by @Nighten found here https://github.com/NightenDushi/Raylib_DrawTextStyle static void DrawTextWave3D(Font font, const char *text, Vector3 position, float fontSize, float fontSpacing, float lineSpacing, bool backface, WaveTextConfig *config, float time, Color tint); -// Measure a text in 3D ignoring the `~~` chars. +// Measure a text in 3D ignoring the `~~` chars static Vector3 MeasureTextWave3D(Font font, const char *text, float fontSize, float fontSpacing, float lineSpacing); // Generates a nice color with a random hue static Color GenerateRandomColor(float s, float v); @@ -562,7 +562,7 @@ static void DrawText3D(Font font, const char *text, Vector3 position, float font } } -// Draw a 2D text in 3D space and wave the parts that start with `~~` and end with `~~`. +// Draw a 2D text in 3D space and wave the parts that start with `~~` and end with `~~` // This is a modified version of the original code by @Nighten found here https://github.com/NightenDushi/Raylib_DrawTextStyle static void DrawTextWave3D(Font font, const char *text, Vector3 position, float fontSize, float fontSpacing, float lineSpacing, bool backface, WaveTextConfig* config, float time, Color tint) { @@ -625,7 +625,7 @@ static void DrawTextWave3D(Font font, const char *text, Vector3 position, float } } -// Measure a text in 3D ignoring the `~~` chars. +// Measure a text in 3D ignoring the `~~` chars static Vector3 MeasureTextWave3D(Font font, const char* text, float fontSize, float fontSpacing, float lineSpacing) { int len = TextLength(text); diff --git a/examples/text/text_font_spritefont.c b/examples/text/text_font_spritefont.c index d3200a9ae..8c1a3b102 100644 --- a/examples/text/text_font_spritefont.c +++ b/examples/text/text_font_spritefont.c @@ -12,7 +12,7 @@ * - Rectangles must be defined by a MAGENTA color background * * Following those constraints, a font can be provided just by an image, -* this is quite handy to avoid additional font descriptor files (like BMFonts use). +* this is quite handy to avoid additional font descriptor files (like BMFonts use) * * Example originally created with raylib 1.0, last time updated with raylib 1.0 * diff --git a/examples/text/text_input_box.c b/examples/text/text_input_box.c index 2e55e8b74..77c04d55a 100644 --- a/examples/text/text_input_box.c +++ b/examples/text/text_input_box.c @@ -63,7 +63,7 @@ int main(void) if ((key >= 32) && (key <= 125) && (letterCount < MAX_INPUT_CHARS)) { name[letterCount] = (char)key; - name[letterCount+1] = '\0'; // Add null terminator at the end of the string. + name[letterCount+1] = '\0'; // Add null terminator at the end of the string letterCount++; } diff --git a/examples/text/text_rectangle_bounds.c b/examples/text/text_rectangle_bounds.c index a05dfbd17..75ac65b49 100644 --- a/examples/text/text_rectangle_bounds.c +++ b/examples/text/text_rectangle_bounds.c @@ -179,9 +179,9 @@ static void DrawTextBoxedSelectable(Font font, const char *text, Rectangle rec, // NOTE: When wordWrap is ON we first measure how much of the text we can draw before going outside of the rec container // We store this info in startLine and endLine, then we change states, draw the text between those two variables - // and change states again and again recursively until the end of the text (or until we get outside of the container). + // and change states again and again recursively until the end of the text (or until we get outside of the container) // When wordWrap is OFF we don't need the measure state so we go to the drawing state immediately - // and begin drawing on the next line before we can get outside the container. + // and begin drawing on the next line before we can get outside the container if (state == MEASURE_STATE) { // TODO: There are multiple types of spaces in UNICODE, maybe it's a good idea to add support for more diff --git a/examples/text/text_unicode.c b/examples/text/text_unicode.c index c3ca39d69..fbf579772 100644 --- a/examples/text/text_unicode.c +++ b/examples/text/text_unicode.c @@ -378,9 +378,9 @@ static void DrawTextBoxedSelectable(Font font, const char *text, Rectangle rec, // NOTE: When wordWrap is ON we first measure how much of the text we can draw before going outside of the rec container // We store this info in startLine and endLine, then we change states, draw the text between those two variables - // and change states again and again recursively until the end of the text (or until we get outside of the container). + // and change states again and again recursively until the end of the text (or until we get outside of the container) // When wordWrap is OFF we don't need the measure state so we go to the drawing state immediately - // and begin drawing on the next line before we can get outside the container. + // and begin drawing on the next line before we can get outside the container if (state == MEASURE_STATE) { // TODO: There are multiple types of spaces in UNICODE, maybe it's a good idea to add support for more diff --git a/examples/textures/textures_draw_tiled.c b/examples/textures/textures_draw_tiled.c index 3c5cb7199..c6bf3f835 100644 --- a/examples/textures/textures_draw_tiled.c +++ b/examples/textures/textures_draw_tiled.c @@ -22,7 +22,7 @@ #define MARGIN_SIZE 8 // Size for the margins #define COLOR_SIZE 16 // Size of the color select buttons -// Draw part of a texture (defined by a rectangle) with rotation and scale tiled into dest. +// Draw part of a texture (defined by a rectangle) with rotation and scale tiled into dest void DrawTextureTiled(Texture2D texture, Rectangle source, Rectangle dest, Vector2 origin, float rotation, float scale, Color tint); //------------------------------------------------------------------------------------ @@ -173,7 +173,7 @@ int main(void) return 0; } -// Draw part of a texture (defined by a rectangle) with rotation and scale tiled into dest. +// Draw part of a texture (defined by a rectangle) with rotation and scale tiled into dest void DrawTextureTiled(Texture2D texture, Rectangle source, Rectangle dest, Vector2 origin, float rotation, float scale, Color tint) { if ((texture.id <= 0) || (scale <= 0.0f)) return; // Wanna see a infinite loop?!...just delete this line! diff --git a/examples/textures/textures_image_channel.c b/examples/textures/textures_image_channel.c index 35ef0c7f5..b11fb5cd6 100644 --- a/examples/textures/textures_image_channel.c +++ b/examples/textures/textures_image_channel.c @@ -75,9 +75,9 @@ int main(void) // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { - // Draw + // Update //---------------------------------------------------------------------------------- - // TODO... + // Nothing to update... //---------------------------------------------------------------------------------- // Draw diff --git a/examples/textures/textures_particles_blending.c b/examples/textures/textures_particles_blending.c index 65a55f30a..537d7f312 100644 --- a/examples/textures/textures_particles_blending.c +++ b/examples/textures/textures_particles_blending.c @@ -71,7 +71,7 @@ int main(void) // Activate one particle every frame and Update active particles // NOTE: Particles initial position should be mouse position when activated // NOTE: Particles fall down with gravity and rotation... and disappear after 2 seconds (alpha = 0) - // NOTE: When a particle disappears, active = false and it can be reused. + // NOTE: When a particle disappears, active = false and it can be reused for (int i = 0; i < MAX_PARTICLES; i++) { if (!mouseTail[i].active) diff --git a/src/external/rl_gputex.h b/src/external/rl_gputex.h index 906a863b1..9773268f5 100644 --- a/src/external/rl_gputex.h +++ b/src/external/rl_gputex.h @@ -5,10 +5,10 @@ * DESCRIPTION: * * Load GPU compressed image data from image files provided as memory data arrays, -* data is loaded compressed, ready to be loaded into GPU. +* data is loaded compressed, ready to be loaded into GPU * * Note that some file formats (DDS, PVR, KTX) also support uncompressed data storage. -* In those cases data is loaded uncompressed and format is returned. +* In those cases data is loaded uncompressed and format is returned * * FIXME: This library still depends on Raylib due to the following reasons: * - rl_save_ktx_to_memory() requires rlGetGlTextureFormats() from rlgl.h @@ -436,7 +436,7 @@ void *rl_load_pkm_from_memory(const unsigned char *file_data, unsigned int file_ // version 10: format: 0=ETC1_RGB, [1=ETC1_RGBA, 2=ETC1_RGB_MIP, 3=ETC1_RGBA_MIP] (not used) // version 20: format: 0=ETC1_RGB, 1=ETC2_RGB, 2=ETC2_RGBA_OLD, 3=ETC2_RGBA, 4=ETC2_RGBA1, 5=ETC2_R, 6=ETC2_RG, 7=ETC2_SIGNED_R, 8=ETC2_SIGNED_R - // NOTE: The extended width and height are the widths rounded up to a multiple of 4. + // NOTE: The extended width and height are the widths rounded up to a multiple of 4 // NOTE: ETC is always 4bit per pixel (64 bit for each 4x4 block of pixels) if (file_data_ptr != RL_GPUTEX_NULL) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index d701691a1..c23b570d3 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -724,7 +724,7 @@ void *GetWindowHandle(void) return glfwGetWin32Window(platform.handle); #endif #if defined(__linux__) - // Store the window handle localy and return a pointer to the variable instead. + // Store the window handle localy and return a pointer to the variable instead // Reasoning detailed in the declaration of X11WindowHandle X11WindowHandle = glfwGetX11Window(platform.handle); return &X11WindowHandle; @@ -1066,9 +1066,9 @@ double GetTime(void) } // Open URL with default system browser (if available) -// NOTE: This function is only safe to use if you control the URL given. -// A user could craft a malicious string performing another action. -// Only call this function yourself not with user input or make sure to check the string yourself. +// NOTE: This function is only safe to use if you control the URL given +// A user could craft a malicious string performing another action +// Only call this function yourself not with user input or make sure to check the string yourself // Ref: https://github.com/raysan5/raylib/issues/686 void OpenURL(const char *url) { @@ -1130,7 +1130,7 @@ void SetMouseCursor(int cursor) } } -// Get physical key name. +// Get physical key name const char *GetKeyName(int key) { return glfwGetKeyName(key, glfwGetKeyScancode(key)); @@ -1306,8 +1306,8 @@ static void SetDimensionsFromMonitor(GLFWmonitor *monitor) } // Function wrappers around RL_*alloc macros, used by glfwInitAllocator() inside of InitPlatform() -// We need to provide these because GLFWallocator expects function pointers with specific signatures. -// Similar wrappers exist in utils.c but we cannot reuse them here due to declaration mismatch. +// We need to provide these because GLFWallocator expects function pointers with specific signatures +// Similar wrappers exist in utils.c but we cannot reuse them here due to declaration mismatch // https://www.glfw.org/docs/latest/intro_guide.html#init_allocator static void *AllocateWrapper(size_t size, void *user) { @@ -1394,15 +1394,15 @@ int InitPlatform(void) // HACK: Most of this was written before GLFW_SCALE_FRAMEBUFFER existed and // was enabled by default. Disabling it gets back the old behavior. A // complete fix will require removing a lot of CORE.Window.render - // manipulation code. + // manipulation code glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_FALSE); if ((CORE.Window.flags & FLAG_WINDOW_HIGHDPI) > 0) { - // Resize window content area based on the monitor content scale. - // NOTE: This hint only has an effect on platforms where screen coordinates and pixels always map 1:1 such as Windows and X11. - // On platforms like macOS the resolution of the framebuffer is changed independently of the window size. - glfwWindowHint(GLFW_SCALE_TO_MONITOR, GLFW_TRUE); // Scale content area based on the monitor content scale where window is placed on + // Resize window content area based on the monitor content scale + // NOTE: This hint only has an effect on platforms where screen coordinates and pixels always map 1:1 such as Windows and X11 + // On platforms like macOS the resolution of the framebuffer is changed independently of the window size + glfwWindowHint(GLFW_SCALE_TO_MONITOR, GLFW_TRUE); // Scale content area based on the monitor content scale where window is placed on #if defined(__APPLE__) glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_TRUE); #endif @@ -1421,8 +1421,8 @@ int InitPlatform(void) } // NOTE: When asking for an OpenGL context version, most drivers provide the highest supported version - // with backward compatibility to older OpenGL versions. - // For example, if using OpenGL 1.1, driver can provide a 4.3 backwards compatible context. + // with backward compatibility to older OpenGL versions + // For example, if using OpenGL 1.1, driver can provide a 4.3 backwards compatible context // Check selection OpenGL version if (rlGetVersion() == RL_OPENGL_21) @@ -1468,9 +1468,9 @@ int InitPlatform(void) glfwWindowHint(GLFW_CONTEXT_CREATION_API, GLFW_EGL_CONTEXT_API); } - // NOTE: GLFW 3.4+ defers initialization of the Joystick subsystem on the first call to any Joystick related functions. - // Forcing this initialization here avoids doing it on PollInputEvents() called by EndDrawing() after first frame has been just drawn. - // The initialization will still happen and possible delays still occur, but before the window is shown, which is a nicer experience. + // NOTE: GLFW 3.4+ defers initialization of the Joystick subsystem on the first call to any Joystick related functions + // Forcing this initialization here avoids doing it on PollInputEvents() called by EndDrawing() after first frame has been just drawn + // The initialization will still happen and possible delays still occur, but before the window is shown, which is a nicer experience // REF: https://github.com/raysan5/raylib/issues/1554 glfwSetJoystickCallback(NULL); @@ -1478,7 +1478,7 @@ int InitPlatform(void) if (CORE.Window.fullscreen) { // According to glfwCreateWindow(), if the user does not have a choice, fullscreen applications - // should default to the primary monitor. + // should default to the primary monitor monitor = glfwGetPrimaryMonitor(); if (!monitor) @@ -1492,8 +1492,8 @@ int InitPlatform(void) // Remember center for switching from fullscreen to window if ((CORE.Window.screen.height == CORE.Window.display.height) && (CORE.Window.screen.width == CORE.Window.display.width)) { - // If screen width/height equal to the display, we can't calculate the window pos for toggling full-screened/windowed. - // Toggling full-screened/windowed with pos(0, 0) can cause problems in some platforms, such as X11. + // If screen width/height equal to the display, we can't calculate the window pos for toggling full-screened/windowed + // Toggling full-screened/windowed with pos(0, 0) can cause problems in some platforms, such as X11 CORE.Window.position.x = CORE.Window.display.width/4; CORE.Window.position.y = CORE.Window.display.height/4; } @@ -1554,7 +1554,7 @@ int InitPlatform(void) // No-fullscreen window creation bool requestWindowedFullscreen = (CORE.Window.screen.height == 0) && (CORE.Window.screen.width == 0); - // Default to at least one pixel in size, as creation with a zero dimension is not allowed. + // Default to at least one pixel in size, as creation with a zero dimension is not allowed int creationWidth = CORE.Window.screen.width != 0 ? CORE.Window.screen.width : 1; int creationHeight = CORE.Window.screen.height != 0 ? CORE.Window.screen.height : 1; @@ -1566,8 +1566,8 @@ int InitPlatform(void) return -1; } - // After the window was created, determine the monitor that the window manager assigned. - // Derive display sizes, and, if possible, window size in case it was zero at beginning. + // After the window was created, determine the monitor that the window manager assigned + // Derive display sizes, and, if possible, window size in case it was zero at beginning int monitorCount = 0; int monitorIndex = GetCurrentMonitor(); @@ -1582,7 +1582,7 @@ int InitPlatform(void) } else { - // The monitor for the window-manager-created window can not be determined, so it can not be centered. + // The monitor for the window-manager-created window can not be determined, so it can not be centered glfwTerminate(); TRACELOG(LOG_WARNING, "GLFW: Failed to determine Monitor to center Window"); return -1; @@ -1604,7 +1604,7 @@ int InitPlatform(void) // Try to enable GPU V-Sync, so frames are limited to screen refresh rate (60Hz -> 60 FPS) // NOTE: V-Sync can be enabled by graphic driver configuration, it doesn't need - // to be activated on web platforms since VSync is enforced there. + // to be activated on web platforms since VSync is enforced there if (CORE.Window.flags & FLAG_VSYNC_HINT) { // WARNING: It seems to hit a critical render path in Intel HD Graphics @@ -1617,7 +1617,7 @@ int InitPlatform(void) if ((CORE.Window.flags & FLAG_WINDOW_HIGHDPI) > 0) { - // NOTE: On APPLE platforms system should manage window/input scaling and also framebuffer scaling. + // NOTE: On APPLE platforms system should manage window/input scaling and also framebuffer scaling // Framebuffer scaling should be activated with: glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_TRUE); #if !defined(__APPLE__) glfwGetFramebufferSize(platform.handle, &fbWidth, &fbHeight); @@ -1660,7 +1660,8 @@ int InitPlatform(void) int monitorHeight = 0; glfwGetMonitorWorkarea(monitor, &monitorX, &monitorY, &monitorWidth, &monitorHeight); - // Here CORE.Window.render.width/height should be used instead of CORE.Window.screen.width/height to center the window correctly when the high dpi flag is enabled. + // Here CORE.Window.render.width/height should be used instead of + // CORE.Window.screen.width/height to center the window correctly when the high dpi flag is enabled int posX = monitorX + (monitorWidth - (int)CORE.Window.render.width)/2; int posY = monitorY + (monitorHeight - (int)CORE.Window.render.height)/2; if (posX < monitorX) posX = monitorX; diff --git a/src/platforms/rcore_desktop_sdl.c b/src/platforms/rcore_desktop_sdl.c index bc7889140..5a62fa629 100644 --- a/src/platforms/rcore_desktop_sdl.c +++ b/src/platforms/rcore_desktop_sdl.c @@ -252,7 +252,7 @@ static const int CursorsLUT[] = { //SDL_SYSTEM_CURSOR_WAITARROW, // No equivalent implemented on MouseCursor enum on raylib.h }; -// SDL3 Migration Layer made to avoid 'ifdefs' inside functions when we can. +// SDL3 Migration Layer made to avoid 'ifdefs' inside functions when we can #if defined(PLATFORM_DESKTOP_SDL3) // SDL3 Migration: @@ -269,7 +269,7 @@ static const int CursorsLUT[] = { // SDL3 Migration: SDL_INIT_TIMER - no longer needed before calling SDL_AddTimer() #define SDL_INIT_TIMER 0x0 // It's a flag, so no problem in setting it to zero if we use in a bitor (|) -// SDL3 Migration: The SDL_WINDOW_SHOWN flag has been removed. Windows are shown by default and can be created hidden by using the SDL_WINDOW_HIDDEN flag. +// SDL3 Migration: The SDL_WINDOW_SHOWN flag has been removed. Windows are shown by default and can be created hidden by using the SDL_WINDOW_HIDDEN flag #define SDL_WINDOW_SHOWN 0x0 // It's a flag, so no problem in setting it to zero if we use in a bitor (|) // SDL3 Migration: Renamed @@ -344,7 +344,7 @@ SDL_Surface *SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth // SDL3 Migration: // SDL_GetDisplayDPI() - // not reliable across platforms, approximately replaced by multiplying -// SDL_GetWindowDisplayScale() times 160 on iPhone and Android, and 96 on other platforms. +// SDL_GetWindowDisplayScale() times 160 on iPhone and Android, and 96 on other platforms // returns 0 on success or a negative error code on failure int SDL_GetDisplayDPI(int displayIndex, float *ddpi, float *hdpi, float *vdpi) { @@ -382,7 +382,7 @@ int SDL_NumJoysticks(void) // SDL_SetRelativeMouseMode // returns 0 on success or a negative error code on failure -// If relative mode is not supported, this returns -1. +// If relative mode is not supported, this returns -1 int SDL_SetRelativeMouseMode_Adapter(SDL_bool enabled) { // SDL_SetWindowRelativeMouseMode(SDL_Window *window, bool enabled) @@ -841,7 +841,7 @@ void SetWindowMonitor(int monitor) // NOTE: // 1. SDL started supporting moving exclusive fullscreen windows between displays on SDL3, // see commit https://github.com/libsdl-org/SDL/commit/3f5ef7dd422057edbcf3e736107e34be4b75d9ba - // 2. A workaround for SDL2 is leaving fullscreen, moving the window, then entering full screen again. + // 2. A workaround for SDL2 is leaving fullscreen, moving the window, then entering full screen again const bool wasFullscreen = ((CORE.Window.flags & FLAG_FULLSCREEN_MODE) > 0)? true : false; const int screenWidth = CORE.Window.screen.width; @@ -854,7 +854,7 @@ void SetWindowMonitor(int monitor) if (SDL_GetDisplayUsableBounds(monitor, &usableBounds) == 0) #endif { - if (wasFullscreen == 1) ToggleFullscreen(); // Leave fullscreen. + if (wasFullscreen == 1) ToggleFullscreen(); // Leave fullscreen // If the screen size is larger than the monitor usable area, anchor it on the top left corner, otherwise, center it if ((screenWidth >= usableBounds.w) || (screenHeight >= usableBounds.h)) @@ -862,11 +862,11 @@ void SetWindowMonitor(int monitor) // NOTE: // 1. There's a known issue where if the window larger than the target display bounds, // when moving the windows to that display, the window could be clipped back - // ending up positioned partly outside the target display. + // ending up positioned partly outside the target display // 2. The workaround for that is, previously to moving the window, - // setting the window size to the target display size, so they match. + // setting the window size to the target display size, so they match // 3. It wasn't done here because we can't assume changing the window size automatically - // is acceptable behavior by the user. + // is acceptable behavior by the user SDL_SetWindowPosition(platform.window, usableBounds.x, usableBounds.y); CORE.Window.position.x = usableBounds.x; CORE.Window.position.y = usableBounds.y; @@ -1099,7 +1099,7 @@ Vector2 GetWindowScaleDPI(void) #ifndef PLATFORM_DESKTOP_SDL3 // NOTE: SDL_GetWindowDisplayScale was only added on SDL3 // see https://wiki.libsdl.org/SDL3/SDL_GetWindowDisplayScale - // TODO: Implement the window scale factor calculation manually. + // TODO: Implement the window scale factor calculation manually TRACELOG(LOG_WARNING, "GetWindowScaleDPI() not implemented on target platform"); #else scale.x = SDL_GetWindowDisplayScale(platform.window); @@ -1245,9 +1245,9 @@ double GetTime(void) } // Open URL with default system browser (if available) -// NOTE: This function is only safe to use if you control the URL given. -// A user could craft a malicious string performing another action. -// Only call this function yourself not with user input or make sure to check the string yourself. +// NOTE: This function is only safe to use if you control the URL given +// A user could craft a malicious string performing another action +// Only call this function yourself not with user input or make sure to check the string yourself // Ref: https://github.com/raysan5/raylib/issues/686 void OpenURL(const char *url) { @@ -1299,7 +1299,7 @@ void SetMouseCursor(int cursor) CORE.Input.Mouse.cursor = cursor; } -// Get physical key name. +// Get physical key name const char *GetKeyName(int key) { return SDL_GetKeyName(key); @@ -1466,10 +1466,9 @@ void PollInputEvents(void) #ifndef PLATFORM_DESKTOP_SDL3 // SDL3 states: - // The SDL_WINDOWEVENT_* events have been moved to top level events, - // and SDL_WINDOWEVENT has been removed. - // In general, handling this change just means checking for the individual events instead of first checking for SDL_WINDOWEVENT - // and then checking for window events. You can compare the event >= SDL_EVENT_WINDOW_FIRST and <= SDL_EVENT_WINDOW_LAST if you need to see whether it's a window event. + // The SDL_WINDOWEVENT_* events have been moved to top level events, and SDL_WINDOWEVENT has been removed + // In general, handling this change just means checking for the individual events instead of first checking for SDL_WINDOWEVENT + // and then checking for window events. You can compare the event >= SDL_EVENT_WINDOW_FIRST and <= SDL_EVENT_WINDOW_LAST if you need to see whether it's a window event. case SDL_WINDOWEVENT: { switch (event.window.event) diff --git a/src/platforms/rcore_drm.c b/src/platforms/rcore_drm.c index a3051f485..79769eee7 100644 --- a/src/platforms/rcore_drm.c +++ b/src/platforms/rcore_drm.c @@ -18,9 +18,9 @@ * * CONFIGURATION: * #define SUPPORT_SSH_KEYBOARD_RPI (Raspberry Pi only) -* Reconfigure standard input to receive key inputs, works with SSH connection. +* Reconfigure standard input to receive key inputs, works with SSH connection * WARNING: Reconfiguring standard input could lead to undesired effects, like breaking other -* running processes orblocking the device if not restored properly. Use with care. +* running processes orblocking the device if not restored properly. Use with care * * DEPENDENCIES: * - DRM and GLM: System libraries for display initialization and configuration @@ -744,11 +744,11 @@ void SwapScreenBuffer() } // Attempt page flip - // NOTE: rmModePageFlip() schedules a buffer-flip for the next vblank and then notifies us about it. - // It takes a CRTC-id, fb-id and an arbitrary data-pointer and then schedules the page-flip. - // This is fully asynchronous and when the page-flip happens, the DRM-fd will become readable and we can call drmHandleEvent(). - // This will read all vblank/page-flip events and call our modeset_page_flip_event() callback with the data-pointer that we passed to drmModePageFlip(). - // We simply call modeset_draw_dev() then so the next frame is rendered... returns immediately. + // NOTE: rmModePageFlip() schedules a buffer-flip for the next vblank and then notifies us about it + // It takes a CRTC-id, fb-id and an arbitrary data-pointer and then schedules the page-flip + // This is fully asynchronous and when the page-flip happens, the DRM-fd will become readable and we can call drmHandleEvent() + // This will read all vblank/page-flip events and call our modeset_page_flip_event() callback with the data-pointer that we passed to drmModePageFlip() + // We simply call modeset_draw_dev() then so the next frame is rendered... returns immediately if (drmModePageFlip(platform.fd, platform.crtc->crtc_id, fbId, DRM_MODE_PAGE_FLIP_EVENT, platform.prevBO)) { if (errno == EBUSY) errCnt[3]++; // Display busy - skip flip @@ -824,9 +824,9 @@ double GetTime(void) } // Open URL with default system browser (if available) -// NOTE: This function is only safe to use if you control the URL given. -// A user could craft a malicious string performing another action. -// Only call this function yourself not with user input or make sure to check the string yourself. +// NOTE: This function is only safe to use if you control the URL given +// A user could craft a malicious string performing another action +// Only call this function yourself not with user input or make sure to check the string yourself // Ref: https://github.com/raysan5/raylib/issues/686 void OpenURL(const char *url) { @@ -863,7 +863,7 @@ void SetMouseCursor(int cursor) TRACELOG(LOG_WARNING, "SetMouseCursor() not implemented on target platform"); } -// Get physical key name. +// Get physical key name const char *GetKeyName(int key) { TRACELOG(LOG_WARNING, "GetKeyName() not implemented on target platform"); @@ -897,7 +897,7 @@ void PollInputEvents(void) PollKeyboardEvents(); #if defined(SUPPORT_SSH_KEYBOARD_RPI) - // NOTE: Keyboard reading could be done using input_event(s) or just read from stdin, both methods are used here. + // NOTE: Keyboard reading could be done using input_event(s) or just read from stdin, both methods are used here // stdin reading is still used for legacy purposes, it allows keyboard input trough SSH console if (!platform.eventKeyboardMode) ProcessKeyboard(); #endif @@ -1003,8 +1003,8 @@ int InitPlatform(void) drmModeConnector *con = drmModeGetConnector(platform.fd, res->connectors[i]); TRACELOG(LOG_TRACE, "DISPLAY: Connector modes detected: %i", con->count_modes); - // In certain cases the status of the conneciton is reported as UKNOWN, but it is still connected. - // This might be a hardware or software limitation like on Raspberry Pi Zero with composite output. + // In certain cases the status of the conneciton is reported as UKNOWN, but it is still connected + // This might be a hardware or software limitation like on Raspberry Pi Zero with composite output if (((con->connection == DRM_MODE_CONNECTED) || (con->connection == DRM_MODE_UNKNOWNCONNECTION)) && (con->encoder_id)) { TRACELOG(LOG_TRACE, "DISPLAY: DRM mode connected"); @@ -1160,7 +1160,7 @@ int InitPlatform(void) // Initialize the EGL device connection if (eglInitialize(platform.device, NULL, NULL) == EGL_FALSE) { - // If all of the calls to eglInitialize returned EGL_FALSE then an error has occurred. + // If all of the calls to eglInitialize returned EGL_FALSE then an error has occurred TRACELOG(LOG_WARNING, "DISPLAY: Failed to initialize EGL device"); return -1; } @@ -1644,7 +1644,7 @@ static void ConfigureEvdevDevice(char *device) return; } - // At this point we have a connection to the device, but we don't yet know what the device is. + // At this point we have a connection to the device, but we don't yet know what the device is // It could be many things, even as simple as a power button... //------------------------------------------------------------------------------------------------------- diff --git a/src/raudio.c b/src/raudio.c index 93024722f..76fee2333 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -15,8 +15,8 @@ * raudio module is included in the build * * #define RAUDIO_STANDALONE -* Define to use the module as standalone library (independently of raylib). -* Required types and functions are defined in the same module. +* Define to use the module as standalone library (independently of raylib) +* Required types and functions are defined in the same module * * #define SUPPORT_FILEFORMAT_WAV * #define SUPPORT_FILEFORMAT_OGG @@ -89,7 +89,7 @@ // by user at some point and won't be included... //------------------------------------------------------------------------------------- -// If defined, the following flags inhibit definition of the indicated items. +// If defined, the following flags inhibit definition of the indicated items #define NOGDICAPMASKS // CC_*, LC_*, PC_*, CP_*, TC_*, RC_ #define NOVIRTUALKEYCODES // VK_* #define NOWINMESSAGES // WM_*, EM_*, LB_*, CB_* @@ -124,9 +124,9 @@ #define NOWH // SetWindowsHook and WH_* #define NOWINOFFSETS // GWL_*, GCL_*, associated routines #define NOCOMM // COMM driver routines -#define NOKANJI // Kanji support stuff. -#define NOHELP // Help engine interface. -#define NOPROFILER // Profiler interface. +#define NOKANJI // Kanji support stuff +#define NOHELP // Help engine interface +#define NOPROFILER // Profiler interface #define NODEFERWINDOWPOS // DeferWindowPos routines #define NOMCX // Modem Configuration Extensions @@ -1118,7 +1118,7 @@ bool ExportWaveAsCode(Wave wave, const char *fileName) // NOTE: Text data buffer size is estimated considering wave data size in bytes // and requiring 12 char bytes for every byte; the actual size varies, but - // the longest possible char being appended is "%.4ff,\n ", which is 12 bytes. + // the longest possible char being appended is "%.4ff,\n ", which is 12 bytes char *txtData = (char *)RL_CALLOC(waveDataSize*12 + 2000, sizeof(char)); int byteCount = 0; diff --git a/src/raylib.h b/src/raylib.h index 4517cbcac..0851905c1 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -5,7 +5,7 @@ * FEATURES: * - NO external dependencies, all required libraries included with raylib * - Multiplatform: Windows, Linux, FreeBSD, OpenBSD, NetBSD, DragonFly, -* MacOS, Haiku, Android, Raspberry Pi, DRM native, HTML5. +* MacOS, Haiku, Android, Raspberry Pi, DRM native, HTML5 * - Written in plain C code (C99) in PascalCase/camelCase notation * - Hardware accelerated with OpenGL (1.1, 2.1, 3.3, 4.3, ES2, ES3 - choose at compile) * - Unique OpenGL abstraction layer (usable as standalone module): [rlgl] diff --git a/src/rmodels.c b/src/rmodels.c index 1a181c843..c1a32058a 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -12,7 +12,7 @@ * #define SUPPORT_FILEFORMAT_GLTF * #define SUPPORT_FILEFORMAT_VOX * #define SUPPORT_FILEFORMAT_M3D -* Selected desired fileformats to be supported for model data loading. +* Selected desired fileformats to be supported for model data loading * * #define SUPPORT_MESH_GENERATION * Support procedural mesh generation functions, uses external par_shapes.h library @@ -2298,7 +2298,7 @@ void UpdateModelAnimationBones(Model model, ModelAnimation anim, int frame) if (firstMeshWithBones != -1) { - // Update all bones and boneMatrices of first mesh with bones. + // Update all bones and boneMatrices of first mesh with bones for (int boneId = 0; boneId < anim.boneCount; boneId++) { Transform *bindTransform = &model.bindPose[boneId]; @@ -5291,8 +5291,7 @@ static Model LoadGLTF(const char *fileName) > Texcoords: vec2: float > Colors: vec4: u8, u16, f32 (normalized) > Indices: u16, u32 (truncated to u16) - - Scenes defined in the glTF file are ignored. All nodes in the file - are used. + - Scenes defined in the glTF file are ignored. All nodes in the file are used ***********************************************************************************************/ @@ -5347,8 +5346,8 @@ static Model LoadGLTF(const char *fileName) int primitivesCount = 0; - // NOTE: We will load every primitive in the glTF as a separate raylib Mesh. - // Determine total number of meshes needed from the node hierarchy. + // NOTE: We will load every primitive in the glTF as a separate raylib Mesh + // Determine total number of meshes needed from the node hierarchy for (unsigned int i = 0; i < data->nodes_count; i++) { cgltf_node *node = &(data->nodes[i]); @@ -5490,14 +5489,13 @@ static Model LoadGLTF(const char *fileName) // has_clearcoat, has_transmission, has_volume, has_ior, has specular, has_sheen } - // Visit each node in the hierarchy and process any mesh linked from it. - // Each primitive within a glTF node becomes a Raylib Mesh. + // Visit each node in the hierarchy and process any mesh linked from it + // Each primitive within a glTF node becomes a Raylib Mesh // The local-to-world transform of each node is used to transform the - // points/normals/tangents of the created Mesh(es). + // points/normals/tangents of the created Mesh(es) // Any glTF mesh linked from more than one Node (i.e. instancing) - // is turned into multiple Mesh's, as each Node will have its own - // transform applied. - // NOTE: The code below disregards the scenes defined in the file, all nodes are used. + // is turned into multiple Mesh's, as each Node will have its own transform applied + // NOTE: The code below disregards the scenes defined in the file, all nodes are used //---------------------------------------------------------------------------------------------------- int meshIndex = 0; for (unsigned int i = 0; i < data->nodes_count; i++) diff --git a/src/rshapes.c b/src/rshapes.c index be28e6cad..38ad75c7d 100644 --- a/src/rshapes.c +++ b/src/rshapes.c @@ -3,17 +3,17 @@ * rshapes - Basic functions to draw 2d shapes and check collisions * * ADDITIONAL NOTES: -* Shapes can be draw using 3 types of primitives: LINES, TRIANGLES and QUADS. +* Shapes can be draw using 3 types of primitives: LINES, TRIANGLES and QUADS * Some functions implement two drawing options: TRIANGLES and QUADS, by default TRIANGLES * are used but QUADS implementation can be selected with SUPPORT_QUADS_DRAW_MODE define * * Some functions define texture coordinates (rlTexCoord2f()) for the shapes and use a * user-provided texture with SetShapesTexture(), the pourpouse of this implementation -* is allowing to reduce draw calls when combined with a texture-atlas. +* is allowing to reduce draw calls when combined with a texture-atlas * * By default, raylib sets the default texture and rectangle at InitWindow()[rcore] to one * white character of default font [rtext], this way, raylib text and shapes can be draw with -* a single draw call and it also allows users to configure it the same way with their own fonts. +* a single draw call and it also allows users to configure it the same way with their own fonts * * CONFIGURATION: * #define SUPPORT_MODULE_RSHAPES diff --git a/src/rtext.c b/src/rtext.c index 1330c5906..50ea6c883 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -7,8 +7,8 @@ * rtext module is included in the build * * #define SUPPORT_DEFAULT_FONT -* Load default raylib font on initialization to be used by DrawText() and MeasureText(). -* If no default font loaded, DrawTextEx() and MeasureTextEx() are required. +* Load default raylib font on initialization to be used by DrawText() and MeasureText() +* If no default font loaded, DrawTextEx() and MeasureTextEx() are required * * #define SUPPORT_FILEFORMAT_FNT * #define SUPPORT_FILEFORMAT_TTF @@ -19,7 +19,7 @@ * #define SUPPORT_FONT_ATLAS_WHITE_REC * On font atlas image generation [GenImageFontAtlas()], add a 3x3 pixels white rectangle * at the bottom-right corner of the atlas. It can be useful to for shapes drawing, to allow -* drawing text and shapes with a single draw call [SetShapesTexture()]. +* drawing text and shapes with a single draw call [SetShapesTexture()] * * #define TEXTSPLIT_MAX_TEXT_BUFFER_LENGTH * TextSplit() function static buffer max size diff --git a/src/rtextures.c b/src/rtextures.c index b798caed6..81d615c38 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -36,7 +36,7 @@ * * DEPENDENCIES: * stb_image - Multiple image formats loading (JPEG, PNG, BMP, TGA, PSD, GIF, PIC) -* NOTE: stb_image has been slightly modified to support Android platform. +* NOTE: stb_image has been slightly modified to support Android platform * stb_image_resize - Multiple image resize algorithms * * From df40357f190caf2e3c370a141540c7f805773579 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 7 Aug 2025 18:37:11 +0200 Subject: [PATCH 182/328] Update linux.yml --- .github/workflows/linux.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 222e2b289..d31acc854 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -30,17 +30,17 @@ jobs: - bits: 32 ARCH: "i386" ARCH_NAME: "i386" - COMPILER_PATH: "/user/bin" + COMPILER_PATH: "/usr/bin" runner: "ubuntu-latest" - bits: 64 ARCH: "x86_64" ARCH_NAME: "amd64" - COMPILER_PATH: "/user/bin" + COMPILER_PATH: "/usr/bin" runner: "ubuntu-latest" - bits: 64 ARCH: "aarch64" ARCH_NAME: "arm64" - COMPILER_PATH: "/user/bin" + COMPILER_PATH: "/usr/bin" runner: "ubuntu-24.04-arm" runs-on: ${{ matrix.runner }} From c6171d339ccdf611583b2a2b24f15f6266984a30 Mon Sep 17 00:00:00 2001 From: wileyanderssen Date: Thu, 7 Aug 2025 19:55:46 +0300 Subject: [PATCH 183/328] removed unneeded comma hope this gets merged --- src/raymath.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/raymath.h b/src/raymath.h index a531b3a14..f246f26d9 100644 --- a/src/raymath.h +++ b/src/raymath.h @@ -329,7 +329,7 @@ RMAPI float Vector2DistanceSqr(Vector2 v1, Vector2 v2) } // Calculate the signed angle from v1 to v2, relative to the origin (0, 0) -// NOTE: Coordinate system convention: positive X right, positive Y down, +// NOTE: Coordinate system convention: positive X right, positive Y down // positive angles appear clockwise, and negative angles appear counterclockwise RMAPI float Vector2Angle(Vector2 v1, Vector2 v2) { From c25e9f641d3811ff8ae13d3fcac085a82d666857 Mon Sep 17 00:00:00 2001 From: JohnnyCena123 Date: Fri, 8 Aug 2025 03:04:33 +0300 Subject: [PATCH 184/328] fix typo in 'Ramon Santamaria' --- src/raylib.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/raylib.h b/src/raylib.h index 4517cbcac..2bdbc4fa0 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -36,7 +36,7 @@ * [rcore] msf_gif (Miles Fogle) for GIF recording * [rcore] sinfl (Micha Mettke) for DEFLATE decompression algorithm * [rcore] sdefl (Micha Mettke) for DEFLATE compression algorithm -* [rcore] rprand (Ramon Snatamaria) for pseudo-random numbers generation +* [rcore] rprand (Ramon Santamaria) for pseudo-random numbers generation * [rtextures] qoi (Dominic Szablewski - https://phoboslab.org) for QOI image manage * [rtextures] stb_image (Sean Barret) for images loading (BMP, TGA, PNG, JPEG, HDR...) * [rtextures] stb_image_write (Sean Barret) for image writing (BMP, TGA, PNG, JPG) From d6f9988e8291da51858445dd493484e87798315e Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 8 Aug 2025 13:52:56 +0200 Subject: [PATCH 185/328] Update Makefile --- tools/parser/Makefile | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/tools/parser/Makefile b/tools/parser/Makefile index 165192463..3ff035d87 100644 --- a/tools/parser/Makefile +++ b/tools/parser/Makefile @@ -12,28 +12,22 @@ raylib_api: ../src/raylib.h raylib_parser FORMAT=XML EXTENSION=xml $(MAKE) raylib_api.xml FORMAT=LUA EXTENSION=lua $(MAKE) raylib_api.lua -raylib_api.$(EXTENSION): ../src/raylib.h raylib_parser - ./raylib_parser -i ../src/raylib.h -o raylib_api.$(EXTENSION) -f $(FORMAT) -d RLAPI +raylib_api.$(EXTENSION): ../../src/raylib.h raylib_parser + ./raylib_parser -i ../../src/raylib.h -o raylib_api.$(EXTENSION) -f $(FORMAT) -d RLAPI -raymath_api.$(EXTENSION): ../src/raymath.h raylib_parser - ./raylib_parser -i ../src/raymath.h -o raymath_api.$(EXTENSION) -f $(FORMAT) -d RMAPI +raymath_api.$(EXTENSION): ../../src/raymath.h raylib_parser + ./raylib_parser -i ../../src/raymath.h -o raymath_api.$(EXTENSION) -f $(FORMAT) -d RMAPI -rlgl_api.$(EXTENSION): ../src/rlgl.h raylib_parser - ./raylib_parser -i ../src/rlgl.h -o rlgl_api.$(EXTENSION) -f $(FORMAT) -d RLAPI -t "RLGL IMPLEMENTATION" +rlgl_api.$(EXTENSION): ../../src/rlgl.h raylib_parser + ./raylib_parser -i ../../src/rlgl.h -o rlgl_api.$(EXTENSION) -f $(FORMAT) -d RLAPI -t "RLGL IMPLEMENTATION" -reasings_api.$(EXTENSION): ../examples/others/reasings.h raylib_parser - ./raylib_parser -i ../examples/others/reasings.h -o reasings_api.$(EXTENSION) -f $(FORMAT) -d EASEDEF - -rmem_api.$(EXTENSION): ../rmem.h raylib_parser - ./raylib_parser -i ../rmem.h -o rmem_api.$(EXTENSION) -f $(FORMAT) -d RMEMAPI -t "RMEM IMPLEMENTATION" - -physac_api.$(EXTENSION): ../physac.h raylib_parser - ./raylib_parser -i ../physac.h -o physac_api.$(EXTENSION) -f $(FORMAT) -d PHYSACDEF -t "PHYSAC IMPLEMENTATION" +reasings_api.$(EXTENSION): ../../examples/others/reasings.h raylib_parser + ./raylib_parser -i ../../examples/others/reasings.h -o reasings_api.$(EXTENSION) -f $(FORMAT) -d EASEDEF raygui_api.$(EXTENSION): ../raygui.h raylib_parser ./raylib_parser -i ../raygui.h -o raygui_api.$(EXTENSION) -f $(FORMAT) -d RAYGUIAPI -t "RAYGUI IMPLEMENTATION" -parse: raylib_api.$(EXTENSION) raymath_api.$(EXTENSION) rlgl_api.$(EXTENSION) rmem_api.$(EXTENSION) physac_api.$(EXTENSION) raygui_api.$(EXTENSION) +parse: raylib_api.$(EXTENSION) raymath_api.$(EXTENSION) rlgl_api.$(EXTENSION) raygui_api.$(EXTENSION) # `make parse` (and therefore `make all) requires From f73b04c42c6376ce46e5bc70e4328354aa1ad69b Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 8 Aug 2025 21:54:15 +0200 Subject: [PATCH 186/328] REXM: Copy examples web-build files to `raylib.com` --- tools/rexm/rexm.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 7cdd6175e..adf3cb2c1 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -740,6 +740,8 @@ int main(int argc, char *argv[]) VALID_INVALID_CATEGORY */ + // TODO: Log more details about the validation process + // Check all examples in collection [examples_list.txt] -> Source of truth! int exCollectionCount = 0; rlExampleInfo *exCollection = LoadExamplesData(exCollectionFilePath, "ALL", false, &exCollectionCount); @@ -971,8 +973,20 @@ int main(int argc, char *argv[]) // Review: Add/Remove: raylib.com/examples//_example_name.wasm // Review: Add/Remove: raylib.com/examples//_example_name.js // Solves: VALID_MISSING_WEB_OUTPUT - //if (exInfo->status & VALID_MISSING_WEB_OUTPUT) - // system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); + if (exInfo->status & VALID_MISSING_WEB_OUTPUT) + { + system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); + + // Copy results to web side + FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exInfo->category, exInfo->name), + TextFormat("%s/%s/%s.html", exWebPath, exInfo->category, exInfo->name)); + FileCopy(TextFormat("%s/%s/%s.data", exBasePath, exInfo->category, exInfo->name), + TextFormat("%s/%s/%s.data", exWebPath, exInfo->category, exInfo->name)); + FileCopy(TextFormat("%s/%s/%s.wasm", exBasePath, exInfo->category, exInfo->name), + TextFormat("%s/%s/%s.wasm", exWebPath, exInfo->category, exInfo->name)); + FileCopy(TextFormat("%s/%s/%s.js", exBasePath, exInfo->category, exInfo->name), + TextFormat("%s/%s/%s.js", exWebPath, exInfo->category, exInfo->name)); + } } } From c6241b91a26b1a9918f3b3086001256ac916330d Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 8 Aug 2025 23:01:04 +0200 Subject: [PATCH 187/328] REVIEWED: `IsFileExtension()` to avoid other modules dependency #5071 --- src/raylib.h | 2 +- src/rcore.c | 53 +++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 41 insertions(+), 14 deletions(-) diff --git a/src/raylib.h b/src/raylib.h index d77fdaf4c..c9fdab553 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -1129,7 +1129,7 @@ RLAPI bool SaveFileText(const char *fileName, const char *text); // Save text d // File system functions RLAPI bool FileExists(const char *fileName); // Check if file exists RLAPI bool DirectoryExists(const char *dirPath); // Check if a directory path exists -RLAPI bool IsFileExtension(const char *fileName, const char *ext); // Check file extension (including point: .png, .wav) +RLAPI bool IsFileExtension(const char *fileName, const char *ext); // Check file extension (recommended include point: .png, .wav) RLAPI int GetFileLength(const char *fileName); // Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h) RLAPI const char *GetFileExtension(const char *fileName); // Get pointer to extension for a filename string (includes dot: '.png') RLAPI const char *GetFileName(const char *filePath); // Get pointer to filename for a path string diff --git a/src/rcore.c b/src/rcore.c index 46e39991f..7eef877e2 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -113,7 +113,7 @@ #include // Required for: srand(), rand(), atexit() #include // Required for: sprintf() [Used in OpenURL()] -#include // Required for: strrchr(), strcmp(), strlen(), memset() +#include // Required for: strlen(), strcpy(), strcmp(), strrchr(), memset() #include // Required for: time() [Used in InitTimer()] #include // Required for: tan() [Used in BeginMode3D()], atan2f() [Used in LoadVrStereoConfig()] @@ -1940,34 +1940,61 @@ bool FileExists(const char *fileName) } // Check file extension -// TODO: Avoid [rtext] module dependency bool IsFileExtension(const char *fileName, const char *ext) { - #define MAX_FILE_EXTENSION_LENGTH 16 + #define MAX_FILE_EXTENSIONS 32 bool result = false; const char *fileExt = GetFileExtension(fileName); if (fileExt != NULL) { -#if defined(SUPPORT_MODULE_RTEXT) && defined(SUPPORT_TEXT_MANIPULATION) - int extCount = 0; - char **checkExts = TextSplit(ext, ';', &extCount); // WARNING: Module required: rtext - - char fileExtLower[MAX_FILE_EXTENSION_LENGTH + 1] = { 0 }; - strncpy(fileExtLower, TextToLower(fileExt), MAX_FILE_EXTENSION_LENGTH); // WARNING: Module required: rtext + int fileExtLen = strlen(fileExt); + char fileExtLower[8] = { 0 }; + char *fileExtLowerPtr = fileExtLower; + for (int i = 0; i < fileExtLen; i++) + { + // Copy and convert to lower-case + if ((fileExt[i] >= 'A') && (fileExt[i] <= 'Z')) fileExtLower[i] = fileExt[i] + 32; + else fileExtLower[i] = fileExt[i]; + } + + int extCount = 1; + int extLen = strlen(ext); + char *extList = (char *)RL_CALLOC(extLen + 1, 1); + char *extListPtrs[MAX_FILE_EXTENSIONS] = { 0 }; + strcpy(extList, ext); + extListPtrs[0] = extList; + + for (int i = 0; i < extLen; i++) + { + // Convert to lower-case if extension is upper-case + if ((extList[i] >= 'A') && (extList[i] <= 'Z')) extList[i] += 32; + + // Get pointer to next extension and add null-terminator + if ((extList[i] == ';') && (extCount < (MAX_FILE_EXTENSIONS - 1))) + { + extList[i] = '\0'; + extListPtrs[extCount] = extList + i + 1; + extCount++; + } + } for (int i = 0; i < extCount; i++) { - if (strcmp(fileExtLower, TextToLower(checkExts[i])) == 0) + // Consider the case where extension provided + // does not start with the '.' + fileExtLowerPtr = fileExtLower; + if (extListPtrs[i][0] != '.') fileExtLowerPtr++; + + if (strcmp(fileExtLowerPtr, extListPtrs[i]) == 0) { result = true; break; } } -#else - if (strcmp(fileExt, ext) == 0) result = true; -#endif + + RL_FREE(extList); } return result; From e11bf1c9789d3f6ba3f18a02dcda3cefa2d46c4e Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 8 Aug 2025 23:07:08 +0200 Subject: [PATCH 188/328] Update Makefile --- tools/parser/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/parser/Makefile b/tools/parser/Makefile index 3ff035d87..ecfdb44ba 100644 --- a/tools/parser/Makefile +++ b/tools/parser/Makefile @@ -6,7 +6,7 @@ FORMAT?=DEFAULT raylib_parser: raylib_parser.c cc raylib_parser.c -o raylib_parser -raylib_api: ../src/raylib.h raylib_parser +raylib_api: ../../src/raylib.h raylib_parser FORMAT=DEFAULT EXTENSION=txt $(MAKE) raylib_api.txt FORMAT=JSON EXTENSION=json $(MAKE) raylib_api.json FORMAT=XML EXTENSION=xml $(MAKE) raylib_api.xml From 5daeffd91b3a6c46674bb510f5f2bd5d0a775c43 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 8 Aug 2025 23:08:42 +0200 Subject: [PATCH 189/328] Update parse.yml --- .github/workflows/parse.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/parse.yml b/.github/workflows/parse.yml index 4491b142e..4d5e25998 100644 --- a/.github/workflows/parse.yml +++ b/.github/workflows/parse.yml @@ -32,6 +32,7 @@ jobs: set -x git config user.email "github-actions[bot]@users.noreply.github.com" git config user.name "github-actions[bot]" - git add parser + git add tools/parser git commit -m "Update raylib_api.* by CI" git push + From 60826855c4df2f5fb3f1737531d1bd5fb25cdec4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 8 Aug 2025 21:09:03 +0000 Subject: [PATCH 190/328] Update raylib_api.* by CI --- tools/parser/output/raylib_api.json | 2 +- tools/parser/output/raylib_api.lua | 2 +- tools/parser/output/raylib_api.txt | 2 +- tools/parser/output/raylib_api.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/parser/output/raylib_api.json b/tools/parser/output/raylib_api.json index c2a4a1827..e0c732e5b 100644 --- a/tools/parser/output/raylib_api.json +++ b/tools/parser/output/raylib_api.json @@ -4438,7 +4438,7 @@ }, { "name": "IsFileExtension", - "description": "Check file extension (including point: .png, .wav)", + "description": "Check file extension (recommended include point: .png, .wav)", "returnType": "bool", "params": [ { diff --git a/tools/parser/output/raylib_api.lua b/tools/parser/output/raylib_api.lua index 23547d9f1..e62609b33 100644 --- a/tools/parser/output/raylib_api.lua +++ b/tools/parser/output/raylib_api.lua @@ -4027,7 +4027,7 @@ return { }, { name = "IsFileExtension", - description = "Check file extension (including point: .png, .wav)", + description = "Check file extension (recommended include point: .png, .wav)", returnType = "bool", params = { {type = "const char *", name = "fileName"}, diff --git a/tools/parser/output/raylib_api.txt b/tools/parser/output/raylib_api.txt index 9539d72a5..4bc67acd1 100644 --- a/tools/parser/output/raylib_api.txt +++ b/tools/parser/output/raylib_api.txt @@ -1670,7 +1670,7 @@ Function 125: DirectoryExists() (1 input parameters) Function 126: IsFileExtension() (2 input parameters) Name: IsFileExtension Return type: bool - Description: Check file extension (including point: .png, .wav) + Description: Check file extension (recommended include point: .png, .wav) Param[1]: fileName (type: const char *) Param[2]: ext (type: const char *) Function 127: GetFileLength() (1 input parameters) diff --git a/tools/parser/output/raylib_api.xml b/tools/parser/output/raylib_api.xml index d99187adf..f6fd1e2a1 100644 --- a/tools/parser/output/raylib_api.xml +++ b/tools/parser/output/raylib_api.xml @@ -1054,7 +1054,7 @@ - + From 7bc22f71bd5dc268ae69434196f2ab29bdab2b19 Mon Sep 17 00:00:00 2001 From: Nikolas Date: Sat, 9 Aug 2025 19:04:00 +0200 Subject: [PATCH 191/328] Update raylib-zig in BINDINGS.md --- BINDINGS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BINDINGS.md b/BINDINGS.md index e60638ac1..9d0fd5c5c 100644 --- a/BINDINGS.md +++ b/BINDINGS.md @@ -82,7 +82,7 @@ Some people ported raylib to other languages in the form of bindings or wrappers | [raylib.v](https://github.com/irishgreencitrus/raylib.v) | 4.2 | [V](https://vlang.io) | Zlib | | [raylib-vapi](https://github.com/lxmcf/raylib-vapi) | **5.0** | [Vala](https://vala.dev) | Zlib | | [raylib-wren](https://github.com/TSnake41/raylib-wren) | 4.5 | [Wren](http://wren.io) | ISC | -| [raylib-zig](https://github.com/Not-Nik/raylib-zig) | **5.5** | [Zig](https://ziglang.org) | MIT | +| [raylib-zig](https://github.com/raylib-zig/raylib-zig) | **5.6-dev** | [Zig](https://ziglang.org) | MIT | | [raylib.zig](https://github.com/ryupold/raylib.zig) | **5.1-dev** | [Zig](https://ziglang.org) | MIT | | [raylib-zig-bindings](https://github.com/L-Briand/raylib-zig-bindings) | **5.0** | [Zig](https://ziglang.org) | Zlib | | [hare-raylib](https://git.sr.ht/~evantj/hare-raylib) | **auto** | [Hare](https://harelang.org) | Zlib | From 9582d2521744a44a2bcd7fbe94d5ead8f078e7d5 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Sat, 9 Aug 2025 12:39:42 +0200 Subject: [PATCH 192/328] Fix backspace key in Rpi SSH keyboard There was a typo in the generated keycode. --- src/platforms/rcore_drm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platforms/rcore_drm.c b/src/platforms/rcore_drm.c index 79769eee7..930624fd2 100644 --- a/src/platforms/rcore_drm.c +++ b/src/platforms/rcore_drm.c @@ -1556,7 +1556,7 @@ static void ProcessKeyboard(void) { CORE.Input.Keyboard.currentKeyState[259] = 1; - CORE.Input.Keyboard.keyPressedQueue[CORE.Input.Keyboard.keyPressedQueueCount] = 257; // Add keys pressed into queue + CORE.Input.Keyboard.keyPressedQueue[CORE.Input.Keyboard.keyPressedQueueCount] = 259; // Add keys pressed into queue CORE.Input.Keyboard.keyPressedQueueCount++; } else From 27d7e61f2829ee8be1364ab672b96dd4c009f99b Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 10 Aug 2025 09:54:45 +0200 Subject: [PATCH 193/328] Update rexm.c --- tools/rexm/rexm.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index adf3cb2c1..0e69d8f9c 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -958,10 +958,7 @@ int main(int argc, char *argv[]) "..\\..\\examples\\core", TextFormat("..\\..\\examples\\%s", exInfo->category)); } - // WARNING: Adding a .vcxproj to .sln can not be automated with - // "dotnet" tool (C# projects only) - // "devenv" tool (no adding support, only building) - // It must be done manually editing the .sln file + // Add project (.vcxproj) to raylib solution (.sln) if (exInfo->status & VALID_NOT_IN_VCXSOL) { AddVSProjectToSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), @@ -1774,11 +1771,16 @@ static void ClearExampleResources(char **resPaths) } // TODO: Add VS project (.vcxproj) to existing VS solution (.sol) +// WARNING: Adding a .vcxproj to .sln can not be automated with: +// - "dotnet" tool (C# projects only) +// - "devenv" tool (no adding support, only building) +// It must be done manually editing the .sln file static int AddVSProjectToSolution(const char *projFile, const char *solFile) { int result = 0; // Generate unique UUID: + // Make sure the file is found and the UUID generated is valid // C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\uuidgen.exe > saved_uuid.txt // Add project to the list: From 71b7734ce403444c1b409ab3639272c888db0ebc Mon Sep 17 00:00:00 2001 From: Felipe Jorge Date: Sun, 10 Aug 2025 10:05:03 -0300 Subject: [PATCH 194/328] fix: QOA when using with LoadMusicStreamFromMemory, reduced the number of allocs and memcpy --- src/external/qoaplay.c | 46 ++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/src/external/qoaplay.c b/src/external/qoaplay.c index 039e27974..4378e5ebd 100644 --- a/src/external/qoaplay.c +++ b/src/external/qoaplay.c @@ -46,7 +46,6 @@ typedef struct { unsigned int sample_position; // Current streaming sample position unsigned char *buffer; // Buffer used to read samples from file/memory (used on decoding) - unsigned int buffer_len; // Buffer length to read samples for streaming short *sample_data; // Sample data decoded unsigned int sample_data_len; // Sample data decoded length @@ -111,7 +110,7 @@ qoaplay_desc *qoaplay_open(const char *path) qoa_ctx->file = file; qoa_ctx->file_data = NULL; qoa_ctx->file_data_size = 0; - qoa_ctx->file_data_offset = 0; + qoa_ctx->file_data_offset = first_frame_pos; qoa_ctx->first_frame_pos = first_frame_pos; // Setup data pointers to previously allocated data @@ -128,34 +127,30 @@ qoaplay_desc *qoaplay_open(const char *path) // Open QOA file from memory, no FILE pointer required qoaplay_desc *qoaplay_open_memory(const unsigned char *data, int data_size) { - // Read and decode the file header - unsigned char header[QOA_MIN_FILESIZE]; - memcpy(header, data, QOA_MIN_FILESIZE); - qoa_desc qoa; - unsigned int first_frame_pos = qoa_decode_header(header, QOA_MIN_FILESIZE, &qoa); + if (data_size < QOA_MIN_FILESIZE) return NULL; + unsigned int first_frame_pos = qoa_decode_header(data, QOA_MIN_FILESIZE, &qoa); if (!first_frame_pos) return NULL; // Allocate one chunk of memory for the qoaplay_desc struct // + the sample data for one frame // + a buffer to hold one frame of encoded data - unsigned int buffer_size = qoa_max_frame_size(&qoa); unsigned int sample_data_size = qoa.channels*QOA_FRAME_LEN*sizeof(short)*2; - qoaplay_desc *qoa_ctx = QOA_MALLOC(sizeof(qoaplay_desc) + buffer_size + sample_data_size); + qoaplay_desc *qoa_ctx = QOA_MALLOC(sizeof(qoaplay_desc) + sample_data_size + data_size); memset(qoa_ctx, 0, sizeof(qoaplay_desc)); qoa_ctx->file = NULL; // Keep a copy of file data provided to be managed internally - qoa_ctx->file_data = (unsigned char *)QOA_MALLOC(data_size); + qoa_ctx->file_data = (((unsigned char *)qoa_ctx) + sizeof(qoaplay_desc) + sample_data_size); memcpy(qoa_ctx->file_data, data, data_size); qoa_ctx->file_data_size = data_size; - qoa_ctx->file_data_offset = 0; + qoa_ctx->file_data_offset = first_frame_pos; qoa_ctx->first_frame_pos = first_frame_pos; // Setup data pointers to previously allocated data - qoa_ctx->buffer = ((unsigned char *)qoa_ctx) + sizeof(qoaplay_desc); - qoa_ctx->sample_data = (short *)(((unsigned char *)qoa_ctx) + sizeof(qoaplay_desc) + buffer_size); + qoa_ctx->buffer = NULL; + qoa_ctx->sample_data = (short *)(((unsigned char *)qoa_ctx) + sizeof(qoaplay_desc)); qoa_ctx->info.channels = qoa.channels; qoa_ctx->info.samplerate = qoa.samplerate; @@ -169,11 +164,7 @@ void qoaplay_close(qoaplay_desc *qoa_ctx) { if (qoa_ctx->file) fclose(qoa_ctx->file); - if ((qoa_ctx->file_data) && (qoa_ctx->file_data_size > 0)) - { - QOA_FREE(qoa_ctx->file_data); - qoa_ctx->file_data_size = 0; - } + qoa_ctx->file_data_size = 0; QOA_FREE(qoa_ctx); } @@ -181,16 +172,23 @@ void qoaplay_close(qoaplay_desc *qoa_ctx) // Decode one frame from QOA data unsigned int qoaplay_decode_frame(qoaplay_desc *qoa_ctx) { - if (qoa_ctx->file) qoa_ctx->buffer_len = fread(qoa_ctx->buffer, 1, qoa_max_frame_size(&qoa_ctx->info), qoa_ctx->file); + unsigned char *buffer; + unsigned int buffer_len; + + if (qoa_ctx->file) + { + buffer = qoa_ctx->buffer; + buffer_len = fread(buffer, 1, qoa_max_frame_size(&qoa_ctx->info), qoa_ctx->file); + } else { - qoa_ctx->buffer_len = qoa_max_frame_size(&qoa_ctx->info); - memcpy(qoa_ctx->buffer, qoa_ctx->file_data + qoa_ctx->file_data_offset, qoa_ctx->buffer_len); - qoa_ctx->file_data_offset += qoa_ctx->buffer_len; + buffer = qoa_ctx->file_data + qoa_ctx->file_data_offset; + buffer_len = qoa_max_frame_size(&qoa_ctx->info); + qoa_ctx->file_data_offset += buffer_len; } unsigned int frame_len; - qoa_decode_frame(qoa_ctx->buffer, qoa_ctx->buffer_len, &qoa_ctx->info, qoa_ctx->sample_data, &frame_len); + qoa_decode_frame(buffer, buffer_len, &qoa_ctx->info, qoa_ctx->sample_data, &frame_len); qoa_ctx->sample_data_pos = 0; qoa_ctx->sample_data_len = frame_len; @@ -201,7 +199,7 @@ unsigned int qoaplay_decode_frame(qoaplay_desc *qoa_ctx) void qoaplay_rewind(qoaplay_desc *qoa_ctx) { if (qoa_ctx->file) fseek(qoa_ctx->file, qoa_ctx->first_frame_pos, SEEK_SET); - else qoa_ctx->file_data_offset = 0; + else qoa_ctx->file_data_offset = qoa_ctx->first_frame_pos; qoa_ctx->sample_position = 0; qoa_ctx->sample_data_len = 0; From 705ce45a33007019fe5432d5833496468a6b79cd Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 10 Aug 2025 19:59:33 +0200 Subject: [PATCH 195/328] FIX: Added callback broke keyboard input on web... #5107 --- src/platforms/rcore_web.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/platforms/rcore_web.c b/src/platforms/rcore_web.c index 3107c30e4..9156f1599 100644 --- a/src/platforms/rcore_web.c +++ b/src/platforms/rcore_web.c @@ -137,7 +137,7 @@ static EM_BOOL EmscriptenFocusCallback(int eventType, const EmscriptenFocusEvent static EM_BOOL EmscriptenVisibilityChangeCallback(int eventType, const EmscriptenVisibilityChangeEvent *visibilityChangeEvent, void *userData); // Emscripten input callback events -static EM_BOOL EmscriptenKeyboardCallback(int eventType, const EmscriptenKeyboardEvent *keyboardEvent, void *userData); +//static EM_BOOL EmscriptenKeyboardCallback(int eventType, const EmscriptenKeyboardEvent *keyboardEvent, void *userData); static EM_BOOL EmscriptenMouseMoveCallback(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData); static EM_BOOL EmscriptenMouseCallback(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData); static EM_BOOL EmscriptenPointerlockCallback(int eventType, const EmscriptenPointerlockChangeEvent *pointerlockChangeEvent, void *userData); @@ -1369,8 +1369,8 @@ int InitPlatform(void) // Setup input events // NOTE: Keyboard callbacks only used to consume some events, libglfw.js takes care of the actual input - emscripten_set_keypress_callback(GetCanvasId(), NULL, 1, EmscriptenKeyboardCallback); - emscripten_set_keydown_callback(GetCanvasId(), NULL, 1, EmscriptenKeyboardCallback); + //emscripten_set_keypress_callback(GetCanvasId(), NULL, 1, EmscriptenKeyboardCallback); // WRNING: Breaks input + //emscripten_set_keydown_callback(GetCanvasId(), NULL, 1, EmscriptenKeyboardCallback); emscripten_set_click_callback(GetCanvasId(), NULL, 1, EmscriptenMouseCallback); emscripten_set_pointerlockchange_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, 1, EmscriptenPointerlockCallback); emscripten_set_mousemove_callback(GetCanvasId(), NULL, 1, EmscriptenMouseMoveCallback); @@ -1620,13 +1620,15 @@ static void MouseEnterCallback(GLFWwindow *window, int enter) // Emscripten callback functions, called on specific browser events //------------------------------------------------------------------------------------------------------- +/* // Emscripten: Called on key events static EM_BOOL EmscriptenKeyboardCallback(int eventType, const EmscriptenKeyboardEvent *keyboardEvent, void *userData) { - // NOTE: Only used to consume some keyboard events without triggering browser functions - + // WARNING: Keyboard inputs already processed through GLFW callback + return 1; // The event was consumed by the callback handler } +*/ // Emscripten: Called on mouse input events static EM_BOOL EmscriptenMouseCallback(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData) From 00f7121b1ceea4b9b1b6a34bf6d9829cb64ed2c1 Mon Sep 17 00:00:00 2001 From: Maicon Santana Date: Mon, 11 Aug 2025 18:16:00 +0100 Subject: [PATCH 196/328] Increasing maxInterations glsl100 to 255 to match with glsl330 and add glsl120 --- .../resources/shaders/glsl100/julia_set.fs | 4 +- .../resources/shaders/glsl120/julia_set.fs | 80 +++++++++++++++++++ 2 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 examples/shaders/resources/shaders/glsl120/julia_set.fs diff --git a/examples/shaders/resources/shaders/glsl100/julia_set.fs b/examples/shaders/resources/shaders/glsl100/julia_set.fs index 9ee8c6f4d..3a61ff5c5 100644 --- a/examples/shaders/resources/shaders/glsl100/julia_set.fs +++ b/examples/shaders/resources/shaders/glsl100/julia_set.fs @@ -12,7 +12,7 @@ uniform float zoom; // Zoom of the scale. // NOTE: Maximum number of shader for-loop iterations depend on GPU, // for example, on RasperryPi for this examply only supports up to 60 -const int maxIterations = 48; // Max iterations to do. +const int maxIterations = 255; // Max iterations to do. const float colorCycles = 1.0; // Number of times the color palette repeats. // Square a complex number @@ -57,7 +57,7 @@ void main() z.y += offset.y; int iter = 0; - for (int iterations = 0; iterations < 60; iterations++) + for (int iterations = 0; iterations < maxIterations; iterations++) { z = ComplexSquare(z) + c; // Iterate function if (dot(z, z) > 4.0) break; diff --git a/examples/shaders/resources/shaders/glsl120/julia_set.fs b/examples/shaders/resources/shaders/glsl120/julia_set.fs new file mode 100644 index 000000000..2f5361db6 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/julia_set.fs @@ -0,0 +1,80 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; +varying vec4 fragColor; + +uniform vec2 c; // c.x = real, c.y = imaginary component. Equation done is z^2 + c +uniform vec2 offset; // Offset of the scale. +uniform float zoom; // Zoom of the scale. + +// NOTE: Maximum number of shader for-loop iterations depend on GPU, +// for example, on RasperryPi for this examply only supports up to 60 +const int maxIterations = 255; // Max iterations to do. +const float colorCycles = 1.0; // Number of times the color palette repeats. + +// Square a complex number +vec2 ComplexSquare(vec2 z) +{ + return vec2(z.x*z.x - z.y*z.y, z.x*z.y*2.0); +} + +// Convert Hue Saturation Value (HSV) color into RGB +vec3 Hsv2rgb(vec3 c) +{ + vec4 K = vec4(1.0, 2.0/3.0, 1.0/3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz)*6.0 - K.www); + return c.z*mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +void main() +{ + /********************************************************************************************** + Julia sets use a function z^2 + c, where c is a constant. + This function is iterated until the nature of the point is determined. + + If the magnitude of the number becomes greater than 2, then from that point onward + the number will get bigger and bigger, and will never get smaller (tends towards infinity). + 2^2 = 4, 4^2 = 8 and so on. + So at 2 we stop iterating. + + If the number is below 2, we keep iterating. + But when do we stop iterating if the number is always below 2 (it converges)? + That is what maxIterations is for. + Then we can divide the iterations by the maxIterations value to get a normalized value that we can + then map to a color. + + We use dot product (z.x * z.x + z.y * z.y) to determine the magnitude (length) squared. + And once the magnitude squared is > 4, then magnitude > 2 is also true (saves computational power). + *************************************************************************************************/ + + // The pixel coordinates are scaled so they are on the mandelbrot scale + // NOTE: fragTexCoord already comes as normalized screen coordinates but offset must be normalized before scaling and zoom + vec2 z = vec2((fragTexCoord.x - 0.5)*2.5, (fragTexCoord.y - 0.5)*1.5)/zoom; + z.x += offset.x; + z.y += offset.y; + + int iter = 0; + for (int iterations = 0; iterations < maxIterations; iterations++) + { + z = ComplexSquare(z) + c; // Iterate function + if (dot(z, z) > 4.0) break; + + iter = iterations; + } + + // Another few iterations decreases errors in the smoothing calculation. + // See http://linas.org/art-gallery/escape/escape.html for more information. + z = ComplexSquare(z) + c; + z = ComplexSquare(z) + c; + + // This last part smooths the color (again see link above). + float smoothVal = float(iter) + 1.0 - (log(log(length(z)))/log(2.0)); + + // Normalize the value so it is between 0 and 1. + float norm = smoothVal/float(maxIterations); + + // If in set, color black. 0.999 allows for some float accuracy error. + if (norm > 0.999) gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); + else gl_FragColor = vec4(Hsv2rgb(vec3(norm*colorCycles, 1.0, 1.0)), 1.0); +} From 8dae39fbda7077e0aa913fa85fe003bedc095bea Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 11 Aug 2025 20:22:02 +0200 Subject: [PATCH 197/328] ADDED: Missing GLSL120 shaders --- .../resources/shaders/glsl100/shadowmap.fs | 86 ++++++ .../resources/shaders/glsl100/shadowmap.vs | 32 ++ .../resources/shaders/glsl120/color_mix.fs | 24 ++ .../shaders/glsl120/cubes_panning.fs | 58 ++++ .../shaders/glsl120/deferred_shading.fs | 57 ++++ .../shaders/glsl120/deferred_shading.vs | 16 + .../resources/shaders/glsl120/eratosthenes.fs | 58 ++++ .../resources/shaders/glsl120/gbuffer.fs | 34 ++ .../resources/shaders/glsl120/gbuffer.vs | 60 ++++ .../shaders/glsl120/hybrid_raster.fs | 17 + .../shaders/glsl120/hybrid_raymarch.fs | 291 ++++++++++++++++++ .../resources/shaders/glsl120/julia_set.fs | 80 +++++ .../shaders/glsl120/lighting_instancing.vs | 36 +++ .../shaders/resources/shaders/glsl120/mask.fs | 22 ++ .../resources/shaders/glsl120/outline.fs | 32 ++ .../resources/shaders/glsl120/reload.fs | 37 +++ .../resources/shaders/glsl120/spotlight.fs | 75 +++++ .../resources/shaders/glsl120/tiling.fs | 19 ++ .../shaders/glsl120/vertex_displacement.fs | 15 + .../shaders/glsl120/vertex_displacement.vs | 43 +++ .../shaders/resources/shaders/glsl120/wave.fs | 32 ++ .../resources/shaders/glsl120/write_depth.fs | 17 + 22 files changed, 1141 insertions(+) create mode 100644 examples/shaders/resources/shaders/glsl100/shadowmap.fs create mode 100644 examples/shaders/resources/shaders/glsl100/shadowmap.vs create mode 100644 examples/shaders/resources/shaders/glsl120/color_mix.fs create mode 100644 examples/shaders/resources/shaders/glsl120/cubes_panning.fs create mode 100644 examples/shaders/resources/shaders/glsl120/deferred_shading.fs create mode 100644 examples/shaders/resources/shaders/glsl120/deferred_shading.vs create mode 100644 examples/shaders/resources/shaders/glsl120/eratosthenes.fs create mode 100644 examples/shaders/resources/shaders/glsl120/gbuffer.fs create mode 100644 examples/shaders/resources/shaders/glsl120/gbuffer.vs create mode 100644 examples/shaders/resources/shaders/glsl120/hybrid_raster.fs create mode 100644 examples/shaders/resources/shaders/glsl120/hybrid_raymarch.fs create mode 100644 examples/shaders/resources/shaders/glsl120/julia_set.fs create mode 100644 examples/shaders/resources/shaders/glsl120/lighting_instancing.vs create mode 100644 examples/shaders/resources/shaders/glsl120/mask.fs create mode 100644 examples/shaders/resources/shaders/glsl120/outline.fs create mode 100644 examples/shaders/resources/shaders/glsl120/reload.fs create mode 100644 examples/shaders/resources/shaders/glsl120/spotlight.fs create mode 100644 examples/shaders/resources/shaders/glsl120/tiling.fs create mode 100644 examples/shaders/resources/shaders/glsl120/vertex_displacement.fs create mode 100644 examples/shaders/resources/shaders/glsl120/vertex_displacement.vs create mode 100644 examples/shaders/resources/shaders/glsl120/wave.fs create mode 100644 examples/shaders/resources/shaders/glsl120/write_depth.fs diff --git a/examples/shaders/resources/shaders/glsl100/shadowmap.fs b/examples/shaders/resources/shaders/glsl100/shadowmap.fs new file mode 100644 index 000000000..7a0e806a5 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl100/shadowmap.fs @@ -0,0 +1,86 @@ +#version 100 + +precision mediump float; + +// This shader is based on the basic lighting shader +// This only supports one light, which is directional, and it (of course) supports shadows + +// Input vertex attributes (from vertex shader) +varying vec3 fragPosition; +varying vec2 fragTexCoord; +//varying in vec4 fragColor; +varying vec3 fragNormal; + +// Input uniform values +uniform sampler2D texture0; +uniform vec4 colDiffuse; + +// Input lighting values +uniform vec3 lightDir; +uniform vec4 lightColor; +uniform vec4 ambient; +uniform vec3 viewPos; + +// Input shadowmapping values +uniform mat4 lightVP; // Light source view-projection matrix +uniform sampler2D shadowMap; + +uniform int shadowMapResolution; + +void main() +{ + // Texel color fetching from texture sampler + vec4 texelColor = texture2D(texture0, fragTexCoord); + vec3 lightDot = vec3(0.0); + vec3 normal = normalize(fragNormal); + vec3 viewD = normalize(viewPos - fragPosition); + vec3 specular = vec3(0.0); + + vec3 l = -lightDir; + + float NdotL = max(dot(normal, l), 0.0); + lightDot += lightColor.rgb*NdotL; + + float specCo = 0.0; + if (NdotL > 0.0) specCo = pow(max(0.0, dot(viewD, reflect(-(l), normal))), 16.0); // 16 refers to shine + specular += specCo; + + vec4 finalColor = (texelColor*((colDiffuse + vec4(specular, 1.0))*vec4(lightDot, 1.0))); + + // Shadow calculations + vec4 fragPosLightSpace = lightVP*vec4(fragPosition, 1); + fragPosLightSpace.xyz /= fragPosLightSpace.w; // Perform the perspective division + fragPosLightSpace.xyz = (fragPosLightSpace.xyz + 1.0)/2.0; // Transform from [-1, 1] range to [0, 1] range + vec2 sampleCoords = fragPosLightSpace.xy; + float curDepth = fragPosLightSpace.z; + + // Slope-scale depth bias: depth biasing reduces "shadow acne" artifacts, where dark stripes appear all over the scene + // The solution is adding a small bias to the depth + // In this case, the bias is proportional to the slope of the surface, relative to the light + float bias = max(0.0008*(1.0 - dot(normal, l)), 0.00008); + int shadowCounter = 0; + const int numSamples = 9; + + // PCF (percentage-closer filtering) algorithm: + // Instead of testing if just one point is closer to the current point, + // we test the surrounding points as well + // This blurs shadow edges, hiding aliasing artifacts + vec2 texelSize = vec2(1.0/float(shadowMapResolution)); + for (int x = -1; x <= 1; x++) + { + for (int y = -1; y <= 1; y++) + { + float sampleDepth = texture2D(shadowMap, sampleCoords + texelSize*vec2(x, y)).r; + if (curDepth - bias > sampleDepth) shadowCounter++; + } + } + + finalColor = mix(finalColor, vec4(0, 0, 0, 1), float(shadowCounter)/float(numSamples)); + + // Add ambient lighting whether in shadow or not + finalColor += texelColor*(ambient/10.0)*colDiffuse; + + // Gamma correction + finalColor = pow(finalColor, vec4(1.0/2.2)); + gl_FragColor = finalColor; +} diff --git a/examples/shaders/resources/shaders/glsl100/shadowmap.vs b/examples/shaders/resources/shaders/glsl100/shadowmap.vs new file mode 100644 index 000000000..0fb4d476f --- /dev/null +++ b/examples/shaders/resources/shaders/glsl100/shadowmap.vs @@ -0,0 +1,32 @@ +#version 100 + +// Input vertex attributes +attribute vec3 vertexPosition; +attribute vec2 vertexTexCoord; +attribute vec3 vertexNormal; +attribute vec4 vertexColor; + +// Input uniform values +uniform mat4 mvp; +uniform mat4 matModel; +uniform mat4 matNormal; + +// Output vertex attributes (to fragment shader) +varying vec3 fragPosition; +varying vec2 fragTexCoord; +varying vec4 fragColor; +varying vec3 fragNormal; + +// NOTE: Add your custom variables here + +void main() +{ + // Send vertex attributes to fragment shader + fragPosition = vec3(matModel*vec4(vertexPosition, 1.0)); + fragTexCoord = vertexTexCoord; + fragColor = vertexColor; + fragNormal = normalize(vec3(matNormal*vec4(vertexNormal, 1.0))); + + // Calculate final vertex position + gl_Position = mvp*vec4(vertexPosition, 1.0); +} diff --git a/examples/shaders/resources/shaders/glsl120/color_mix.fs b/examples/shaders/resources/shaders/glsl120/color_mix.fs new file mode 100644 index 000000000..999f61afc --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/color_mix.fs @@ -0,0 +1,24 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; +varying vec4 fragColor; + +// Input uniform values +uniform sampler2D texture0; +uniform sampler2D texture1; +uniform vec4 colDiffuse; + +uniform float divider; + +void main() +{ + // Texel color fetching from texture sampler + vec4 texelColor0 = texture2D(texture0, fragTexCoord); + vec4 texelColor1 = texture2D(texture1, fragTexCoord); + + float x = fract(fragTexCoord.s); + float final = smoothstep(divider - 0.1, divider + 0.1, x); + + gl_FragColor = mix(texelColor0, texelColor1, final); +} diff --git a/examples/shaders/resources/shaders/glsl120/cubes_panning.fs b/examples/shaders/resources/shaders/glsl120/cubes_panning.fs new file mode 100644 index 000000000..24c53d2ff --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/cubes_panning.fs @@ -0,0 +1,58 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; +varying vec4 fragColor; + +// Custom variables +const float PI = 3.14159265358979323846; +uniform float uTime; + +float divisions = 5.0; +float angle = 0.0; + +vec2 VectorRotateTime(vec2 v, float speed) +{ + float time = uTime*speed; + float localTime = fract(time); // The time domain this works on is 1 sec + + if ((localTime >= 0.0) && (localTime < 0.25)) angle = 0.0; + else if ((localTime >= 0.25) && (localTime < 0.50)) angle = PI/4.0*sin(2.0*PI*localTime - PI/2.0); + else if ((localTime >= 0.50) && (localTime < 0.75)) angle = PI*0.25; + else if ((localTime >= 0.75) && (localTime < 1.00)) angle = PI/4.0*sin(2.0*PI*localTime); + + // Rotate vector by angle + v -= 0.5; + v = mat2(cos(angle), -sin(angle), sin(angle), cos(angle))*v; + v += 0.5; + + return v; +} + +float Rectangle(in vec2 st, in float size, in float fill) +{ + float roundSize = 0.5 - size/2.0; + float left = step(roundSize, st.x); + float top = step(roundSize, st.y); + float bottom = step(roundSize, 1.0 - st.y); + float right = step(roundSize, 1.0 - st.x); + + return (left*bottom*right*top)*fill; +} + +void main() +{ + vec2 fragPos = fragTexCoord; + fragPos.xy += uTime/9.0; + + fragPos *= divisions; + vec2 ipos = floor(fragPos); // Get the integer coords + vec2 fpos = fract(fragPos); // Get the fractional coords + + fpos = VectorRotateTime(fpos, 0.2); + + float alpha = Rectangle(fpos, 0.216, 1.0); + vec3 color = vec3(0.3, 0.3, 0.3); + + gl_FragColor = vec4(color, alpha); +} \ No newline at end of file diff --git a/examples/shaders/resources/shaders/glsl120/deferred_shading.fs b/examples/shaders/resources/shaders/glsl120/deferred_shading.fs new file mode 100644 index 000000000..f52454d8c --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/deferred_shading.fs @@ -0,0 +1,57 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; +varying vec4 fragColor; + +// Input uniform values +uniform sampler2D gPosition; +uniform sampler2D gNormal; +uniform sampler2D gAlbedoSpec; + +struct Light { + int enabled; + int type; // Unused in this demo + vec3 position; + vec3 target; // Unused in this demo + vec4 color; +}; + +const int NR_LIGHTS = 4; +uniform Light lights[NR_LIGHTS]; +uniform vec3 viewPosition; + +const float QUADRATIC = 0.032; +const float LINEAR = 0.09; + +void main() +{ + vec3 fragPosition = texture2D(gPosition, fragTexCoord).rgb; + vec3 normal = texture2D(gNormal, fragTexCoord).rgb; + vec3 albedo = texture2D(gAlbedoSpec, fragTexCoord).rgb; + float specular = texture2D(gAlbedoSpec, fragTexCoord).a; + + vec3 ambient = albedo*vec3(0.1); + vec3 viewDirection = normalize(viewPosition - fragPosition); + + for (int i = 0; i < NR_LIGHTS; ++i) + { + if (lights[i].enabled == 0) continue; + vec3 lightDirection = lights[i].position - fragPosition; + vec3 diffuse = max(dot(normal, lightDirection), 0.0)*albedo*lights[i].color.xyz; + + vec3 halfwayDirection = normalize(lightDirection + viewDirection); + float spec = pow(max(dot(normal, halfwayDirection), 0.0), 32.0); + vec3 specular = specular*spec*lights[i].color.xyz; + + // Attenuation + float distance = length(lights[i].position - fragPosition); + float attenuation = 1.0/(1.0 + LINEAR*distance + QUADRATIC*distance*distance); + diffuse *= attenuation; + specular *= attenuation; + ambient += diffuse + specular; + } + + gl_FragColor = vec4(ambient, 1.0); +} + diff --git a/examples/shaders/resources/shaders/glsl120/deferred_shading.vs b/examples/shaders/resources/shaders/glsl120/deferred_shading.vs new file mode 100644 index 000000000..daece19e5 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/deferred_shading.vs @@ -0,0 +1,16 @@ +#version 120 + +// Input vertex attributes +attribute vec3 vertexPosition; +attribute vec2 vertexTexCoord; + +// Output vertex attributes (to fragment shader) +varying vec2 fragTexCoord; + +void main() +{ + fragTexCoord = vertexTexCoord; + + // Calculate final vertex position + gl_Position = vec4(vertexPosition, 1.0); +} diff --git a/examples/shaders/resources/shaders/glsl120/eratosthenes.fs b/examples/shaders/resources/shaders/glsl120/eratosthenes.fs new file mode 100644 index 000000000..d1623a67c --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/eratosthenes.fs @@ -0,0 +1,58 @@ +#version 120 + +/************************************************************************************* + + The Sieve of Eratosthenes -- a simple shader by ProfJski + An early prime number sieve: https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes + + The screen is divided into a square grid of boxes, each representing an integer value + Each integer is tested to see if it is a prime number. Primes are colored white + Non-primes are colored with a color that indicates the smallest factor which evenly divdes our integer + + You can change the scale variable to make a larger or smaller grid + Total number of integers displayed = scale squared, so scale = 100 tests the first 10,000 integers + + WARNING: If you make scale too large, your GPU may bog down! + +***************************************************************************************/ + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; +varying vec4 fragColor; + +// Make a nice spectrum of colors based on counter and maxSize +vec4 Colorizer(float counter, float maxSize) +{ + float red = 0.0, green = 0.0, blue = 0.0; + float normsize = counter/maxSize; + + red = smoothstep(0.3, 0.7, normsize); + green = sin(3.14159*normsize); + blue = 1.0 - smoothstep(0.0, 0.4, normsize); + + return vec4(0.8*red, 0.8*green, 0.8*blue, 1.0); +} + +void main() +{ + vec4 color = vec4(1.0); + float scale = 1000.0; // Makes 100x100 square grid. Change this variable to make a smaller or larger grid + float value = scale*floor(fragTexCoord.y*scale) + floor(fragTexCoord.x*scale); // Group pixels into boxes representing integer values + int valuei = int(value); + + //if ((valuei == 0) || (valuei == 1) || (valuei == 2)) gl_FragColor = vec4(1.0); + //else + { + //for (int i = 2; (i < int(max(2.0, sqrt(value) + 1.0))); i++) + // NOTE: On GLSL 100 for loops are restricted and loop condition must be a constant + // Tested on RPI, it seems loops are limited around 60 iteractions + for (int i = 2; i < 48; i++) + { + if ((value - float(i)*floor(value/float(i))) <= 0.0) + { + gl_FragColor = Colorizer(float(i), scale); + //break; // Uncomment to color by the largest factor instead + } + } + } +} diff --git a/examples/shaders/resources/shaders/glsl120/gbuffer.fs b/examples/shaders/resources/shaders/glsl120/gbuffer.fs new file mode 100644 index 000000000..a826d7916 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/gbuffer.fs @@ -0,0 +1,34 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec3 fragPosition; +varying vec2 fragTexCoord; +varying vec3 fragNormal; +varying vec4 fragColor; + +// TODO: Is there some alternative for GLSL100 +//layout (location = 0) out vec3 gPosition; +//layout (location = 1) out vec3 gNormal; +//layout (location = 2) out vec4 gAlbedoSpec; +//uniform vec3 gPosition; +//uniform vec3 gNormal; +//uniform vec4 gAlbedoSpec; + +// Input uniform values +uniform sampler2D texture0; // Diffuse texture +uniform sampler2D specularTexture; + +void main() +{ + // Store the fragment position vector in the first gbuffer texture + //gPosition = fragPosition; + + // Store the per-fragment normals into the gbuffer + //gNormal = normalize(fragNormal); + + // Store the diffuse per-fragment color + gl_FragColor.rgb = texture2D(texture0, fragTexCoord).rgb; + + // Store specular intensity in gAlbedoSpec's alpha component + gl_FragColor.a = texture2D(specularTexture, fragTexCoord).r; +} diff --git a/examples/shaders/resources/shaders/glsl120/gbuffer.vs b/examples/shaders/resources/shaders/glsl120/gbuffer.vs new file mode 100644 index 000000000..adc1dcd1a --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/gbuffer.vs @@ -0,0 +1,60 @@ +#version 120 + +// Input vertex attributes +attribute vec3 vertexPosition; +attribute vec2 vertexTexCoord; +attribute vec3 vertexNormal; +attribute vec4 vertexColor; + +// Input uniform values +uniform mat4 matModel; +uniform mat4 matView; +uniform mat4 matProjection; + +// Output vertex attributes (to fragment shader) +varying vec3 fragPosition; +varying vec2 fragTexCoord; +varying vec3 fragNormal; +varying vec4 fragColor; + + +// https://github.com/glslify/glsl-inverse +mat3 inverse(mat3 m) +{ + float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2]; + float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2]; + float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2]; + + float b01 = a22*a11 - a12*a21; + float b11 = -a22*a10 + a12*a20; + float b21 = a21*a10 - a11*a20; + + float det = a00*b01 + a01*b11 + a02*b21; + + return mat3(b01, (-a22*a01 + a02*a21), (a12*a01 - a02*a11), + b11, (a22*a00 - a02*a20), (-a12*a00 + a02*a10), + b21, (-a21*a00 + a01*a20), (a11*a00 - a01*a10))/det; +} + +// https://github.com/glslify/glsl-transpose +mat3 transpose(mat3 m) +{ + return mat3(m[0][0], m[1][0], m[2][0], + m[0][1], m[1][1], m[2][1], + m[0][2], m[1][2], m[2][2]); +} + +void main() +{ + // Calculate vertex attributes for fragment shader + vec4 worldPos = matModel*vec4(vertexPosition, 1.0); + fragPosition = worldPos.xyz; + fragTexCoord = vertexTexCoord; + fragColor = vertexColor; + + mat3 normalMatrix = transpose(inverse(mat3(matModel))); + fragNormal = normalMatrix*vertexNormal; + + // Calculate final vertex position + gl_Position = matProjection*matView*worldPos; +} diff --git a/examples/shaders/resources/shaders/glsl120/hybrid_raster.fs b/examples/shaders/resources/shaders/glsl120/hybrid_raster.fs new file mode 100644 index 000000000..e4c7e2eca --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/hybrid_raster.fs @@ -0,0 +1,17 @@ +#version 120 + +#extension GL_EXT_frag_depth : enable // Extension required for writing depth + +varying vec2 fragTexCoord; +varying vec4 fragColor; + +uniform sampler2D texture0; +uniform vec4 colDiffuse; + +void main() +{ + vec4 texelColor = texture2D(texture0, fragTexCoord); + + gl_FragColor = texelColor*colDiffuse*fragColor; + gl_FragDepthEXT = gl_FragCoord.z; +} \ No newline at end of file diff --git a/examples/shaders/resources/shaders/glsl120/hybrid_raymarch.fs b/examples/shaders/resources/shaders/glsl120/hybrid_raymarch.fs new file mode 100644 index 000000000..3118e1861 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/hybrid_raymarch.fs @@ -0,0 +1,291 @@ +#version 120 + +#extension GL_EXT_frag_depth : enable //Extension required for writing depth +#extension GL_OES_standard_derivatives : enable //Extension used for fwidth() + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; +varying vec4 fragColor; + +// Input uniform values +uniform sampler2D texture0; +uniform vec4 colDiffuse; + +// Custom Input Uniform +uniform vec3 camPos; +uniform vec3 camDir; +uniform vec2 screenCenter; + +#define ZERO 0 + +// SRC: https://learnopengl.com/Advanced-OpenGL/Depth-testing +float CalcDepth(in vec3 rd, in float Idist) +{ + float local_z = dot(normalize(camDir),rd)*Idist; + return (1.0/(local_z) - 1.0/0.01)/(1.0/1000.0 -1.0/0.01); +} + +// SRC: https://iquilezles.org/articles/distfunctions/ +float sdHorseshoe(in vec3 p, in vec2 c, in float r, in float le, vec2 w) +{ + p.x = abs(p.x); + float l = length(p.xy); + p.xy = mat2(-c.x, c.y, + c.y, c.x)*p.xy; + p.xy = vec2((p.y>0.0 || p.x>0.0)?p.x:l*sign(-c.x), + (p.x>0.0)?p.y:l); + p.xy = vec2(p.x,abs(p.y-r))-vec2(le,0.0); + + vec2 q = vec2(length(max(p.xy,0.0)) + min(0.0,max(p.x,p.y)),p.z); + vec2 d = abs(q) - w; + return min(max(d.x,d.y),0.0) + length(max(d,0.0)); +} + +// r = sphere's radius +// h = cutting's plane's position +// t = thickness +float sdSixWayCutHollowSphere(vec3 p, float r, float h, float t) +{ + // Six way symetry Transformation + vec3 ap = abs(p); + if (ap.x < max(ap.y, ap.z)){ + if (ap.y < ap.z) ap.xz = ap.zx; + else ap.xy = ap.yx; + } + + vec2 q = vec2(length(ap.yz), ap.x); + + float w = sqrt(r*r-h*h); + + return ((h*q.x0.0) + { + tmax = min(tmax, tp1); + res = vec2(tp1, 1.0); + } + + float t = tmin; + for (int i=0; i<70 ; i++) + { + if (t>tmax) break; + vec2 h = map(ro+rd*t); + if (abs(h.x) < (0.0001*t)) + { + res = vec2(t,h.y); + break; + } + t += h.x; + } + + return res; +} + + +// https://iquilezles.org/articles/rmshadows +float calcSoftshadow(in vec3 ro, in vec3 rd, in float mint, in float tmax) +{ + // bounding volume + float tp = (0.8-ro.y)/rd.y; if (tp>0.0) tmax = min(tmax, tp); + + float res = 1.0; + float t = mint; + for (int i=ZERO; i<24; i++) + { + float h = map(ro + rd*t).x; + float s = clamp(8.0*h/t,0.0,1.0); + res = min(res, s); + t += clamp(h, 0.01, 0.2); + if (res<0.004 || t>tmax) break; + } + res = clamp(res, 0.0, 1.0); + return res*res*(3.0-2.0*res); +} + + +// https://iquilezles.org/articles/normalsSDF +vec3 calcNormal(in vec3 pos) +{ + vec2 e = vec2(1.0, -1.0)*0.5773*0.0005; + return normalize(e.xyy*map(pos + e.xyy).x + + e.yyx*map(pos + e.yyx).x + + e.yxy*map(pos + e.yxy).x + + e.xxx*map(pos + e.xxx).x); +} + +// https://iquilezles.org/articles/nvscene2008/rwwtt.pdf +float calcAO(in vec3 pos, in vec3 nor) +{ + float occ = 0.0; + float sca = 1.0; + for (int i=ZERO; i<5; i++) + { + float h = 0.01 + 0.12*float(i)/4.0; + float d = map(pos + h*nor).x; + occ += (h-d)*sca; + sca *= 0.95; + if (occ>0.35) break; + } + return clamp(1.0 - 3.0*occ, 0.0, 1.0)*(0.5+0.5*nor.y); +} + +// https://iquilezles.org/articles/checkerfiltering +float checkersGradBox(in vec2 p) +{ + // filter kernel + vec2 w = fwidth(p) + 0.001; + // analytical integral (box filter) + vec2 i = 2.0*(abs(fract((p-0.5*w)*0.5)-0.5)-abs(fract((p+0.5*w)*0.5)-0.5))/w; + // xor pattern + return 0.5 - 0.5*i.x*i.y; +} + +// https://www.shadertoy.com/view/tdS3DG +vec4 render(in vec3 ro, in vec3 rd) +{ + // background + vec3 col = vec3(0.7, 0.7, 0.9) - max(rd.y,0.0)*0.3; + + // raycast scene + vec2 res = raycast(ro,rd); + float t = res.x; + float m = res.y; + if (m>-0.5) + { + vec3 pos = ro + t*rd; + vec3 nor = (m<1.5) ? vec3(0.0,1.0,0.0) : calcNormal(pos); + vec3 ref = reflect(rd, nor); + + // material + col = 0.2 + 0.2*sin(m*2.0 + vec3(0.0,1.0,2.0)); + float ks = 1.0; + + if (m<1.5) + { + float f = checkersGradBox(3.0*pos.xz); + col = 0.15 + f*vec3(0.05); + ks = 0.4; + } + + // lighting + float occ = calcAO(pos, nor); + + vec3 lin = vec3(0.0); + + // sun + { + vec3 lig = normalize(vec3(-0.5, 0.4, -0.6)); + vec3 hal = normalize(lig-rd); + float dif = clamp(dot(nor, lig), 0.0, 1.0); + //if (dif>0.0001) + dif *= calcSoftshadow(pos, lig, 0.02, 2.5); + float spe = pow(clamp(dot(nor, hal), 0.0, 1.0),16.0); + spe *= dif; + spe *= 0.04+0.96*pow(clamp(1.0-dot(hal,lig),0.0,1.0),5.0); + //spe *= 0.04+0.96*pow(clamp(1.0-sqrt(0.5*(1.0-dot(rd,lig))),0.0,1.0),5.0); + lin += col*2.20*dif*vec3(1.30,1.00,0.70); + lin += 5.00*spe*vec3(1.30,1.00,0.70)*ks; + } + // sky + { + float dif = sqrt(clamp(0.5+0.5*nor.y, 0.0, 1.0)); + dif *= occ; + float spe = smoothstep(-0.2, 0.2, ref.y); + spe *= dif; + spe *= 0.04+0.96*pow(clamp(1.0+dot(nor,rd),0.0,1.0), 5.0); + //if (spe>0.001) + spe *= calcSoftshadow(pos, ref, 0.02, 2.5); + lin += col*0.60*dif*vec3(0.40,0.60,1.15); + lin += 2.00*spe*vec3(0.40,0.60,1.30)*ks; + } + // back + { + float dif = clamp(dot(nor, normalize(vec3(0.5,0.0,0.6))), 0.0, 1.0)*clamp(1.0-pos.y,0.0,1.0); + dif *= occ; + lin += col*0.55*dif*vec3(0.25,0.25,0.25); + } + // sss + { + float dif = pow(clamp(1.0+dot(nor,rd),0.0,1.0),2.0); + dif *= occ; + lin += col*0.25*dif*vec3(1.00,1.00,1.00); + } + + col = lin; + + col = mix(col, vec3(0.7,0.7,0.9), 1.0-exp(-0.0001*t*t*t)); + } + + return vec4(vec3(clamp(col,0.0,1.0)),t); +} + +vec3 CalcRayDir(vec2 nCoord){ + vec3 horizontal = normalize(cross(camDir,vec3(.0 , 1.0, .0))); + vec3 vertical = normalize(cross(horizontal,camDir)); + return normalize(camDir + horizontal*nCoord.x + vertical*nCoord.y); +} + +mat3 setCamera() +{ + vec3 cw = normalize(camDir); + vec3 cp = vec3(0.0, 1.0 ,0.0); + vec3 cu = normalize(cross(cw,cp)); + vec3 cv = (cross(cu,cw)); + return mat3(cu, cv, cw); +} + +void main() +{ + vec2 nCoord = (gl_FragCoord.xy - screenCenter.xy)/screenCenter.y; + mat3 ca = setCamera(); + + // focal length + float fl = length(camDir); + vec3 rd = ca*normalize(vec3(nCoord,fl)); + vec3 color = vec3(nCoord/2.0 + 0.5, 0.0); + float depth = gl_FragCoord.z; + { + vec4 res = render(camPos - vec3(0.0, 0.0, 0.0) , rd); + color = res.xyz; + depth = CalcDepth(rd,res.w); + } + gl_FragColor = vec4(color , 1.0); + gl_FragDepthEXT = depth; +} \ No newline at end of file diff --git a/examples/shaders/resources/shaders/glsl120/julia_set.fs b/examples/shaders/resources/shaders/glsl120/julia_set.fs new file mode 100644 index 000000000..d5749c0f0 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/julia_set.fs @@ -0,0 +1,80 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; +varying vec4 fragColor; + +uniform vec2 c; // c.x = real, c.y = imaginary component. Equation done is z^2 + c +uniform vec2 offset; // Offset of the scale +uniform float zoom; // Zoom of the scale + +// NOTE: Maximum number of shader for-loop iterations depend on GPU, +// for example, on RasperryPi for this examply only supports up to 60 +const int maxIterations = 48; // Max iterations to do +const float colorCycles = 1.0; // Number of times the color palette repeats + +// Square a complex number +vec2 ComplexSquare(vec2 z) +{ + return vec2(z.x*z.x - z.y*z.y, z.x*z.y*2.0); +} + +// Convert Hue Saturation Value (HSV) color into RGB +vec3 Hsv2rgb(vec3 c) +{ + vec4 K = vec4(1.0, 2.0/3.0, 1.0/3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz)*6.0 - K.www); + return c.z*mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +void main() +{ + /********************************************************************************************** + Julia sets use a function z^2 + c, where c is a constant + This function is iterated until the nature of the point is determined + + If the magnitude of the number becomes greater than 2, then from that point onward + the number will get bigger and bigger, and will never get smaller (tends towards infinity) + 2^2 = 4, 4^2 = 8 and so on + So at 2 we stop iterating + + If the number is below 2, we keep iterating + But when do we stop iterating if the number is always below 2 (it converges)? + That is what maxIterations is for + Then we can divide the iterations by the maxIterations value to get a normalized value + that we can then map to a color + + We use dot product (z.x*z.x + z.y*z.y) to determine the magnitude (length) squared + And once the magnitude squared is > 4, then magnitude > 2 is also true (saves computational power) + *************************************************************************************************/ + + // The pixel coordinates are scaled so they are on the mandelbrot scale + // NOTE: fragTexCoord already comes as normalized screen coordinates but offset must be normalized before scaling and zoom + vec2 z = vec2((fragTexCoord.x - 0.5)*2.5, (fragTexCoord.y - 0.5)*1.5)/zoom; + z.x += offset.x; + z.y += offset.y; + + int iter = 0; + for (int iterations = 0; iterations < 60; iterations++) + { + z = ComplexSquare(z) + c; // Iterate function + if (dot(z, z) > 4.0) break; + + iter = iterations; + } + + // Another few iterations decreases errors in the smoothing calculation + // See http://linas.org/art-gallery/escape/escape.html for more information + z = ComplexSquare(z) + c; + z = ComplexSquare(z) + c; + + // This last part smooths the color (again see link above) + float smoothVal = float(iter) + 1.0 - (log(log(length(z)))/log(2.0)); + + // Normalize the value so it is between 0 and 1 + float norm = smoothVal/float(maxIterations); + + // If in set, color black. 0.999 allows for some float accuracy error + if (norm > 0.999) gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); + else gl_FragColor = vec4(Hsv2rgb(vec3(norm*colorCycles, 1.0, 1.0)), 1.0); +} diff --git a/examples/shaders/resources/shaders/glsl120/lighting_instancing.vs b/examples/shaders/resources/shaders/glsl120/lighting_instancing.vs new file mode 100644 index 000000000..4787bc57a --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/lighting_instancing.vs @@ -0,0 +1,36 @@ +#version 120 + +// Input vertex attributes +attribute vec3 vertexPosition; +attribute vec2 vertexTexCoord; +attribute vec3 vertexNormal; +attribute vec4 vertexColor; + +attribute mat4 instanceTransform; + +// Input uniform values +uniform mat4 mvp; +uniform mat4 matNormal; + +// Output vertex attributes (to fragment shader) +varying vec3 fragPosition; +varying vec2 fragTexCoord; +varying vec4 fragColor; +varying vec3 fragNormal; + +// NOTE: Add your custom variables here + +void main() +{ + // Compute MVP for current instance + mat4 mvpi = mvp*instanceTransform; + + // Send vertex attributes to fragment shader + fragPosition = vec3(mvpi*vec4(vertexPosition, 1.0)); + fragTexCoord = vertexTexCoord; + fragColor = vertexColor; + fragNormal = normalize(vec3(matNormal*vec4(vertexNormal, 1.0))); + + // Calculate final vertex position + gl_Position = mvpi*vec4(vertexPosition, 1.0); +} diff --git a/examples/shaders/resources/shaders/glsl120/mask.fs b/examples/shaders/resources/shaders/glsl120/mask.fs new file mode 100644 index 000000000..8203a7008 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/mask.fs @@ -0,0 +1,22 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; +varying vec4 fragColor; + +// Input uniform values +uniform sampler2D texture0; +uniform sampler2D mask; +uniform vec4 colDiffuse; +uniform int frame; + +// NOTE: Add your custom variables here + +void main() +{ + vec4 maskColour = texture2D(mask, fragTexCoord + vec2(sin(-float(frame)/150.0)/10.0, cos(-float(frame)/170.0)/10.0)); + if (maskColour.r < 0.25) discard; + vec4 texelColor = texture2D(texture0, fragTexCoord + vec2(sin(float(frame)/90.0)/8.0, cos(float(frame)/60.0)/8.0)); + + gl_FragColor = texelColor*maskColour; +} diff --git a/examples/shaders/resources/shaders/glsl120/outline.fs b/examples/shaders/resources/shaders/glsl120/outline.fs new file mode 100644 index 000000000..1d632caf6 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/outline.fs @@ -0,0 +1,32 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; +varying vec4 fragColor; + +// Input uniform values +uniform sampler2D texture0; +uniform vec4 colDiffuse; + +uniform vec2 textureSize; +uniform float outlineSize; +uniform vec4 outlineColor; + +void main() +{ + vec4 texel = texture2D(texture0, fragTexCoord); // Get texel color + vec2 texelScale = vec2(0.0); + texelScale.x = outlineSize/textureSize.x; + texelScale.y = outlineSize/textureSize.y; + + // We sample four corner texels, but only for the alpha channel (this is for the outline) + vec4 corners = vec4(0.0); + corners.x = texture2D(texture0, fragTexCoord + vec2(texelScale.x, texelScale.y)).a; + corners.y = texture2D(texture0, fragTexCoord + vec2(texelScale.x, -texelScale.y)).a; + corners.z = texture2D(texture0, fragTexCoord + vec2(-texelScale.x, texelScale.y)).a; + corners.w = texture2D(texture0, fragTexCoord + vec2(-texelScale.x, -texelScale.y)).a; + + float outline = min(dot(corners, vec4(1.0)), 1.0); + vec4 color = mix(vec4(0.0), outlineColor, outline); + gl_FragColor = mix(color, texel, texel.a); +} \ No newline at end of file diff --git a/examples/shaders/resources/shaders/glsl120/reload.fs b/examples/shaders/resources/shaders/glsl120/reload.fs new file mode 100644 index 000000000..9b5e12746 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/reload.fs @@ -0,0 +1,37 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; // Texture coordinates (sampler2D) +varying vec4 fragColor; // Tint color + +// Uniform inputs +uniform vec2 resolution; // Viewport resolution (in pixels) +uniform vec2 mouse; // Mouse pixel xy coordinates +uniform float time; // Total run time (in secods) + +// Draw circle +vec4 DrawCircle(vec2 fragCoord, vec2 position, float radius, vec3 color) +{ + float d = length(position - fragCoord) - radius; + float t = clamp(d, 0.0, 1.0); + return vec4(color, 1.0 - t); +} + +void main() +{ + vec2 fragCoord = gl_FragCoord.xy; + vec2 position = vec2(mouse.x, resolution.y - mouse.y); + float radius = 40.0; + + // Draw background layer + vec4 colorA = vec4(0.2,0.2,0.8, 1.0); + vec4 colorB = vec4(1.0,0.7,0.2, 1.0); + vec4 layer1 = mix(colorA, colorB, abs(sin(time*0.1))); + + // Draw circle layer + vec3 color = vec3(0.9, 0.16, 0.21); + vec4 layer2 = DrawCircle(fragCoord, position, radius, color); + + // Blend the two layers + gl_FragColor = mix(layer1, layer2, layer2.a); +} diff --git a/examples/shaders/resources/shaders/glsl120/spotlight.fs b/examples/shaders/resources/shaders/glsl120/spotlight.fs new file mode 100644 index 000000000..da15a8b39 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/spotlight.fs @@ -0,0 +1,75 @@ +#version 120 + +#define MAX_SPOTS 3 + +struct Spot { + vec2 pos; // window coords of spot + float inner; // inner fully transparent centre radius + float radius; // alpha fades out to this radius +}; + +uniform Spot spots[MAX_SPOTS]; // Spotlight positions array +uniform float screenWidth; // Width of the screen + +void main() +{ + float alpha = 1.0; + + // Get the position of the current fragment (screen coordinates!) + vec2 pos = vec2(gl_FragCoord.x, gl_FragCoord.y); + + // Find out which spotlight is nearest + float d = 65000.0; // some high value + int fi = -1; // found index + + for (int i = 0; i < MAX_SPOTS; i++) + { + for (int j = 0; j < MAX_SPOTS; j++) + { + float dj = distance(pos, spots[j].pos) - spots[j].radius + spots[i].radius; + + if (d > dj) + { + d = dj; + fi = i; + } + } + } + + // d now equals distance to nearest spot... + // allowing for the different radii of all spotlights + if (fi == 0) + { + if (d > spots[0].radius) alpha = 1.0; + else + { + if (d < spots[0].inner) alpha = 0.0; + else alpha = (d - spots[0].inner)/(spots[0].radius - spots[0].inner); + } + } + else if (fi == 1) + { + if (d > spots[1].radius) alpha = 1.0; + else + { + if (d < spots[1].inner) alpha = 0.0; + else alpha = (d - spots[1].inner)/(spots[1].radius - spots[1].inner); + } + } + else if (fi == 2) + { + if (d > spots[2].radius) alpha = 1.0; + else + { + if (d < spots[2].inner) alpha = 0.0; + else alpha = (d - spots[2].inner)/(spots[2].radius - spots[2].inner); + } + } + + // Right hand side of screen is dimly lit, + // could make the threshold value user definable + if ((pos.x > screenWidth/2.0) && (alpha > 0.9)) alpha = 0.9; + + // could make the black out colour user definable... + gl_FragColor = vec4(0, 0, 0, alpha); +} diff --git a/examples/shaders/resources/shaders/glsl120/tiling.fs b/examples/shaders/resources/shaders/glsl120/tiling.fs new file mode 100644 index 000000000..78902cf87 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/tiling.fs @@ -0,0 +1,19 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; +varying vec4 fragColor; + +// Input uniform values +uniform sampler2D texture0; +uniform vec4 colDiffuse; + +// NOTE: Add your custom variables here +uniform vec2 tiling; + +void main() +{ + vec2 texCoord = fragTexCoord*tiling; + + gl_FragColor = texture2D(texture0, texCoord)*colDiffuse; +} diff --git a/examples/shaders/resources/shaders/glsl120/vertex_displacement.fs b/examples/shaders/resources/shaders/glsl120/vertex_displacement.fs new file mode 100644 index 000000000..ac485050d --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/vertex_displacement.fs @@ -0,0 +1,15 @@ +#version 120 + +// Input vertex attributes (from fragment shader) +varying vec2 fragTexCoord; +varying float height; + +void main() +{ + vec4 darkblue = vec4(0.0, 0.13, 0.18, 1.0); + vec4 lightblue = vec4(1.0, 1.0, 1.0, 1.0); + // Interpolate between two colors based on height + vec4 finalColor = mix(darkblue, lightblue, height); + + gl_FragColor = finalColor; +} \ No newline at end of file diff --git a/examples/shaders/resources/shaders/glsl120/vertex_displacement.vs b/examples/shaders/resources/shaders/glsl120/vertex_displacement.vs new file mode 100644 index 000000000..db3c496d5 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/vertex_displacement.vs @@ -0,0 +1,43 @@ +#version 120 + +attribute vec3 vertexPosition; +attribute vec2 vertexTexCoord; +attribute vec3 vertexNormal; +attribute vec4 vertexColor; + +uniform mat4 mvp; +uniform mat4 matModel; +uniform mat4 matNormal; + +uniform float time; + +uniform sampler2D perlinNoiseMap; + +varying vec3 fragPosition; +varying vec2 fragTexCoord; +varying vec3 fragNormal; +varying float height; + +void main() +{ + // Calculate animated texture coordinates based on time and vertex position + vec2 animatedTexCoord = sin(vertexTexCoord + vec2(sin(time + vertexPosition.x*0.1), cos(time + vertexPosition.z*0.1))*0.3); + + // Normalize animated texture coordinates to range [0, 1] + animatedTexCoord = animatedTexCoord*0.5 + 0.5; + + // Fetch displacement from the perlin noise map + float displacement = texture2D(perlinNoiseMap, animatedTexCoord).r*7.0; // Amplified displacement + + // Displace vertex position + vec3 displacedPosition = vertexPosition + vec3(0.0, displacement, 0.0); + + // Send vertex attributes to fragment shader + fragPosition = vec3(matModel*vec4(displacedPosition, 1.0)); + fragTexCoord = vertexTexCoord; + fragNormal = normalize(vec3(matNormal*vec4(vertexNormal, 1.0))); + height = displacedPosition.y*0.2; // send height to fragment shader for coloring + + // Calculate final vertex position + gl_Position = mvp*vec4(displacedPosition, 1.0); +} diff --git a/examples/shaders/resources/shaders/glsl120/wave.fs b/examples/shaders/resources/shaders/glsl120/wave.fs new file mode 100644 index 000000000..dd6bb2e22 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/wave.fs @@ -0,0 +1,32 @@ +#version 120 + +// Input vertex attributes (from vertex shader) +varying vec2 fragTexCoord; +varying vec4 fragColor; + +// Input uniform values +uniform sampler2D texture0; +uniform vec4 colDiffuse; + +uniform float seconds; +uniform vec2 size; +uniform float freqX; +uniform float freqY; +uniform float ampX; +uniform float ampY; +uniform float speedX; +uniform float speedY; + +void main() { + float pixelWidth = 1.0/size.x; + float pixelHeight = 1.0/size.y; + float aspect = pixelHeight/pixelWidth; + float boxLeft = 0.0; + float boxTop = 0.0; + + vec2 p = fragTexCoord; + p.x += cos((fragTexCoord.y - boxTop)*freqX/(pixelWidth*750.0) + (seconds*speedX))*ampX*pixelWidth; + p.y += sin((fragTexCoord.x - boxLeft)*freqY*aspect/(pixelHeight*750.0) + (seconds*speedY))*ampY*pixelHeight; + + gl_FragColor = texture2D(texture0, p)*colDiffuse*fragColor; +} diff --git a/examples/shaders/resources/shaders/glsl120/write_depth.fs b/examples/shaders/resources/shaders/glsl120/write_depth.fs new file mode 100644 index 000000000..0d0e19da7 --- /dev/null +++ b/examples/shaders/resources/shaders/glsl120/write_depth.fs @@ -0,0 +1,17 @@ +#version 100 + +#extension GL_EXT_frag_depth : enable + +varying vec2 fragTexCoord; +varying vec4 fragColor; + +uniform sampler2D texture0; +uniform vec4 colDiffuse; + +void main() +{ + vec4 texelColor = texture2D(texture0, fragTexCoord); + + gl_FragColor = texelColor*colDiffuse*fragColor; + gl_FragDepthEXT = 1.0 - gl_FragCoord.z; +} \ No newline at end of file From 9b598f6bcf9b62935af42348d752cd8c0d423492 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 11 Aug 2025 20:22:31 +0200 Subject: [PATCH 198/328] REVIEWED: Shaders formating to follow raylib code conventions --- .../shaders/glsl100/point_particle.fs | 6 +- .../shaders/glsl100/point_particle.vs | 6 +- .../shaders/glsl330/point_particle.fs | 6 +- .../shaders/glsl330/point_particle.vs | 6 +- .../resources/shaders/glsl100/bloom.fs | 6 +- .../shaders/glsl100/cross_stitching.fs | 8 +- .../shaders/glsl100/cubes_panning.fs | 2 +- .../shaders/glsl100/deferred_shading.fs | 8 +- .../resources/shaders/glsl100/eratosthenes.fs | 12 +- .../resources/shaders/glsl100/fisheye.fs | 14 +- .../shaders/glsl100/hybrid_raster.fs | 6 +- .../shaders/glsl100/hybrid_raymarch.fs | 178 ++++++------ .../resources/shaders/glsl100/julia_set.fs | 44 ++- .../resources/shaders/glsl100/lighting.fs | 2 +- .../resources/shaders/glsl100/lightmap.fs | 2 +- .../shaders/resources/shaders/glsl100/mask.fs | 4 +- .../resources/shaders/glsl100/normalmap.fs | 14 +- .../resources/shaders/glsl100/normalmap.vs | 28 +- .../shaders/resources/shaders/glsl100/pbr.vs | 2 +- .../resources/shaders/glsl100/raymarching.fs | 258 +++++++++--------- .../shaders/glsl100/rounded_rectangle.fs | 4 +- .../resources/shaders/glsl100/scanlines.fs | 2 +- .../resources/shaders/glsl100/sobel.fs | 4 +- .../shaders/glsl100/vertex_displacement.fs | 1 - .../shaders/glsl100/vertex_displacement.vs | 14 +- .../shaders/resources/shaders/glsl100/wave.fs | 12 +- .../resources/shaders/glsl100/write_depth.fs | 5 +- .../shaders/glsl120/cross_stitching.fs | 8 +- .../resources/shaders/glsl120/fisheye.fs | 14 +- .../resources/shaders/glsl120/lighting.fs | 2 +- .../resources/shaders/glsl120/lightmap.fs | 2 +- .../resources/shaders/glsl120/normalmap.fs | 14 +- .../resources/shaders/glsl120/normalmap.vs | 28 +- .../shaders/glsl120/palette_switch.fs | 10 +- .../shaders/resources/shaders/glsl120/pbr.vs | 2 +- .../resources/shaders/glsl120/raymarching.fs | 258 +++++++++--------- .../shaders/glsl120/rounded_rectangle.fs | 4 +- .../resources/shaders/glsl120/scanlines.fs | 2 +- .../resources/shaders/glsl120/shadowmap.fs | 6 +- .../resources/shaders/glsl120/sobel.fs | 4 +- .../shaders/glsl330/cross_stitching.fs | 8 +- .../shaders/glsl330/cubes_panning.fs | 2 +- .../shaders/glsl330/deferred_shading.fs | 16 +- .../resources/shaders/glsl330/eratosthenes.fs | 12 +- .../resources/shaders/glsl330/fisheye.fs | 14 +- .../resources/shaders/glsl330/gbuffer.vs | 6 +- .../shaders/glsl330/hybrid_raster.fs | 2 +- .../shaders/glsl330/hybrid_raymarch.fs | 158 +++++------ .../resources/shaders/glsl330/julia_set.fs | 40 +-- .../resources/shaders/glsl330/lighting.fs | 2 +- .../resources/shaders/glsl330/lightmap.fs | 2 +- .../resources/shaders/glsl330/normalmap.fs | 14 +- .../resources/shaders/glsl330/normalmap.vs | 14 +- .../shaders/resources/shaders/glsl330/pbr.vs | 2 +- .../resources/shaders/glsl330/raymarching.fs | 258 +++++++++--------- .../resources/shaders/glsl330/scanlines.fs | 2 +- .../resources/shaders/glsl330/shadowmap.fs | 8 +- .../resources/shaders/glsl330/sobel.fs | 4 +- .../resources/shaders/glsl330/spotlight.fs | 2 +- .../shaders/glsl330/vertex_displacement.vs | 8 +- .../shaders/resources/shaders/glsl330/wave.fs | 10 +- .../shaders/glsl330/alpha_discard.fs | 2 +- 62 files changed, 797 insertions(+), 797 deletions(-) diff --git a/examples/others/resources/shaders/glsl100/point_particle.fs b/examples/others/resources/shaders/glsl100/point_particle.fs index b1c5103e6..d74d457a7 100644 --- a/examples/others/resources/shaders/glsl100/point_particle.fs +++ b/examples/others/resources/shaders/glsl100/point_particle.fs @@ -10,7 +10,7 @@ uniform vec4 color; void main() { // Each point is drawn as a screen space square of gl_PointSize size. gl_PointCoord contains where we are inside of - // it. (0, 0) is the top left, (1, 1) the bottom right corner. - // Draw each point as a colored circle with alpha 1.0 in the center and 0.0 at the outer edges. - gl_FragColor = vec4(color.rgb, color.a * (1.0 - length(gl_PointCoord.xy - vec2(0.5))*2.0)); + // it. (0, 0) is the top left, (1, 1) the bottom right corner + // Draw each point as a colored circle with alpha 1.0 in the center and 0.0 at the outer edges + gl_FragColor = vec4(color.rgb, color.a*(1.0 - length(gl_PointCoord.xy - vec2(0.5))*2.0)); } \ No newline at end of file diff --git a/examples/others/resources/shaders/glsl100/point_particle.vs b/examples/others/resources/shaders/glsl100/point_particle.vs index e1c4381ad..281ef6599 100644 --- a/examples/others/resources/shaders/glsl100/point_particle.vs +++ b/examples/others/resources/shaders/glsl100/point_particle.vs @@ -16,9 +16,9 @@ void main() float period = vertexPosition.z; // Calculate final vertex position (jiggle it around a bit horizontally) - pos += vec2(100.0, 0.0) * sin(period * currentTime); - gl_Position = mvp * vec4(pos.x, pos.y, 0.0, 1.0); + pos += vec2(100.0, 0.0)*sin(period*currentTime); + gl_Position = mvp*vec4(pos.x, pos.y, 0.0, 1.0); // Calculate the screen space size of this particle (also vary it over time) - gl_PointSize = 10.0 - 5.0 * abs(sin(period * currentTime)); + gl_PointSize = 10.0 - 5.0*abs(sin(period*currentTime)); } \ No newline at end of file diff --git a/examples/others/resources/shaders/glsl330/point_particle.fs b/examples/others/resources/shaders/glsl330/point_particle.fs index c8a834f9e..456345e4b 100644 --- a/examples/others/resources/shaders/glsl330/point_particle.fs +++ b/examples/others/resources/shaders/glsl330/point_particle.fs @@ -11,7 +11,7 @@ out vec4 finalColor; void main() { // Each point is drawn as a screen space square of gl_PointSize size. gl_PointCoord contains where we are inside of - // it. (0, 0) is the top left, (1, 1) the bottom right corner. - // Draw each point as a colored circle with alpha 1.0 in the center and 0.0 at the outer edges. - finalColor = vec4(color.rgb, color.a * (1 - length(gl_PointCoord.xy - vec2(0.5))*2)); + // it. (0, 0) is the top left, (1, 1) the bottom right corner + // Draw each point as a colored circle with alpha 1.0 in the center and 0.0 at the outer edges + finalColor = vec4(color.rgb, color.a*(1 - length(gl_PointCoord.xy - vec2(0.5))*2)); } \ No newline at end of file diff --git a/examples/others/resources/shaders/glsl330/point_particle.vs b/examples/others/resources/shaders/glsl330/point_particle.vs index 1d835a9bc..90ea53836 100644 --- a/examples/others/resources/shaders/glsl330/point_particle.vs +++ b/examples/others/resources/shaders/glsl330/point_particle.vs @@ -16,9 +16,9 @@ void main() float period = vertexPosition.z; // Calculate final vertex position (jiggle it around a bit horizontally) - pos += vec2(100, 0) * sin(period * currentTime); - gl_Position = mvp * vec4(pos, 0.0, 1.0); + pos += vec2(100, 0)*sin(period*currentTime); + gl_Position = mvp*vec4(pos, 0.0, 1.0); // Calculate the screen space size of this particle (also vary it over time) - gl_PointSize = 10 - 5 * abs(sin(period * currentTime)); + gl_PointSize = 10 - 5*abs(sin(period*currentTime)); } \ No newline at end of file diff --git a/examples/shaders/resources/shaders/glsl100/bloom.fs b/examples/shaders/resources/shaders/glsl100/bloom.fs index 65254a860..e0c2ecf3c 100644 --- a/examples/shaders/resources/shaders/glsl100/bloom.fs +++ b/examples/shaders/resources/shaders/glsl100/bloom.fs @@ -12,9 +12,9 @@ uniform vec4 colDiffuse; // NOTE: Add your custom variables here -const vec2 size = vec2(800, 450); // render size -const float samples = 5.0; // pixels per axis; higher = bigger glow, worse performance -const float quality = 2.5; // lower = smaller glow, better quality +const vec2 size = vec2(800, 450); // Framebuffer size +const float samples = 5.0; // Pixels per axis; higher = bigger glow, worse performance +const float quality = 2.5; // Defines size factor: Lower = smaller glow, better quality void main() { diff --git a/examples/shaders/resources/shaders/glsl100/cross_stitching.fs b/examples/shaders/resources/shaders/glsl100/cross_stitching.fs index f43f09c84..a098794d4 100644 --- a/examples/shaders/resources/shaders/glsl100/cross_stitching.fs +++ b/examples/shaders/resources/shaders/glsl100/cross_stitching.fs @@ -23,8 +23,8 @@ vec4 PostFX(sampler2D tex, vec2 uv) { vec4 c = vec4(0.0); float size = stitchingSize; - vec2 cPos = uv * vec2(renderWidth, renderHeight); - vec2 tlPos = floor(cPos / vec2(size, size)); + vec2 cPos = uv*vec2(renderWidth, renderHeight); + vec2 tlPos = floor(cPos/vec2(size, size)); tlPos *= size; int remX = int(mod(cPos.x, size)); @@ -38,11 +38,11 @@ vec4 PostFX(sampler2D tex, vec2 uv) if ((remX == remY) || (((int(cPos.x) - int(blPos.x)) == (int(blPos.y) - int(cPos.y))))) { if (invert == 1) c = vec4(0.2, 0.15, 0.05, 1.0); - else c = texture2D(tex, tlPos * vec2(1.0/renderWidth, 1.0/renderHeight)) * 1.4; + else c = texture2D(tex, tlPos*vec2(1.0/renderWidth, 1.0/renderHeight))*1.4; } else { - if (invert == 1) c = texture2D(tex, tlPos * vec2(1.0/renderWidth, 1.0/renderHeight)) * 1.4; + if (invert == 1) c = texture2D(tex, tlPos*vec2(1.0/renderWidth, 1.0/renderHeight))*1.4; else c = vec4(0.0, 0.0, 0.0, 1.0); } diff --git a/examples/shaders/resources/shaders/glsl100/cubes_panning.fs b/examples/shaders/resources/shaders/glsl100/cubes_panning.fs index 9e5eab0fe..ea05cadff 100644 --- a/examples/shaders/resources/shaders/glsl100/cubes_panning.fs +++ b/examples/shaders/resources/shaders/glsl100/cubes_panning.fs @@ -16,7 +16,7 @@ float angle = 0.0; vec2 VectorRotateTime(vec2 v, float speed) { float time = uTime*speed; - float localTime = fract(time); // The time domain this works on is 1 sec. + float localTime = fract(time); // The time domain this works on is 1 sec if ((localTime >= 0.0) && (localTime < 0.25)) angle = 0.0; else if ((localTime >= 0.25) && (localTime < 0.50)) angle = PI/4.0*sin(2.0*PI*localTime - PI/2.0); diff --git a/examples/shaders/resources/shaders/glsl100/deferred_shading.fs b/examples/shaders/resources/shaders/glsl100/deferred_shading.fs index d782792b9..63e9c5bea 100644 --- a/examples/shaders/resources/shaders/glsl100/deferred_shading.fs +++ b/examples/shaders/resources/shaders/glsl100/deferred_shading.fs @@ -13,9 +13,9 @@ uniform sampler2D gAlbedoSpec; struct Light { int enabled; - int type; // Unused in this demo. + int type; // Unused in this demo vec3 position; - vec3 target; // Unused in this demo. + vec3 target; // Unused in this demo vec4 color; }; @@ -38,7 +38,7 @@ void main() for (int i = 0; i < NR_LIGHTS; ++i) { - if(lights[i].enabled == 0) continue; + if (lights[i].enabled == 0) continue; vec3 lightDirection = lights[i].position - fragPosition; vec3 diffuse = max(dot(normal, lightDirection), 0.0)*albedo*lights[i].color.xyz; @@ -48,7 +48,7 @@ void main() // Attenuation float distance = length(lights[i].position - fragPosition); - float attenuation = 1.0/(1.0 + LINEAR * distance + QUADRATIC*distance*distance); + float attenuation = 1.0/(1.0 + LINEAR*distance + QUADRATIC*distance*distance); diffuse *= attenuation; specular *= attenuation; ambient += diffuse + specular; diff --git a/examples/shaders/resources/shaders/glsl100/eratosthenes.fs b/examples/shaders/resources/shaders/glsl100/eratosthenes.fs index 0d5fcc5a4..739d7b991 100644 --- a/examples/shaders/resources/shaders/glsl100/eratosthenes.fs +++ b/examples/shaders/resources/shaders/glsl100/eratosthenes.fs @@ -7,12 +7,12 @@ precision mediump float; The Sieve of Eratosthenes -- a simple shader by ProfJski An early prime number sieve: https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes - The screen is divided into a square grid of boxes, each representing an integer value. - Each integer is tested to see if it is a prime number. Primes are colored white. - Non-primes are colored with a color that indicates the smallest factor which evenly divdes our integer. + The screen is divided into a square grid of boxes, each representing an integer value + Each integer is tested to see if it is a prime number. Primes are colored white + Non-primes are colored with a color that indicates the smallest factor which evenly divdes our integer - You can change the scale variable to make a larger or smaller grid. - Total number of integers displayed = scale squared, so scale = 100 tests the first 10,000 integers. + You can change the scale variable to make a larger or smaller grid + Total number of integers displayed = scale squared, so scale = 100 tests the first 10,000 integers WARNING: If you make scale too large, your GPU may bog down! @@ -38,7 +38,7 @@ vec4 Colorizer(float counter, float maxSize) void main() { vec4 color = vec4(1.0); - float scale = 1000.0; // Makes 100x100 square grid. Change this variable to make a smaller or larger grid. + float scale = 1000.0; // Makes 100x100 square grid. Change this variable to make a smaller or larger grid float value = scale*floor(fragTexCoord.y*scale) + floor(fragTexCoord.x*scale); // Group pixels into boxes representing integer values int valuei = int(value); diff --git a/examples/shaders/resources/shaders/glsl100/fisheye.fs b/examples/shaders/resources/shaders/glsl100/fisheye.fs index 161c417c1..9c136a978 100644 --- a/examples/shaders/resources/shaders/glsl100/fisheye.fs +++ b/examples/shaders/resources/shaders/glsl100/fisheye.fs @@ -17,22 +17,22 @@ const float PI = 3.1415926535; void main() { float aperture = 178.0; - float apertureHalf = 0.5 * aperture * (PI / 180.0); + float apertureHalf = 0.5*aperture*(PI/180.0); float maxFactor = sin(apertureHalf); vec2 uv = vec2(0.0); - vec2 xy = 2.0 * fragTexCoord.xy - 1.0; + vec2 xy = 2.0*fragTexCoord.xy - 1.0; float d = length(xy); if (d < (2.0 - maxFactor)) { - d = length(xy * maxFactor); - float z = sqrt(1.0 - d * d); - float r = atan(d, z) / PI; + d = length(xy*maxFactor); + float z = sqrt(1.0 - d*d); + float r = atan(d, z)/PI; float phi = atan(xy.y, xy.x); - uv.x = r * cos(phi) + 0.5; - uv.y = r * sin(phi) + 0.5; + uv.x = r*cos(phi) + 0.5; + uv.y = r*sin(phi) + 0.5; } else { diff --git a/examples/shaders/resources/shaders/glsl100/hybrid_raster.fs b/examples/shaders/resources/shaders/glsl100/hybrid_raster.fs index 28188a454..35bc75d30 100644 --- a/examples/shaders/resources/shaders/glsl100/hybrid_raster.fs +++ b/examples/shaders/resources/shaders/glsl100/hybrid_raster.fs @@ -1,4 +1,5 @@ -#version 100 +#version 100 + #extension GL_EXT_frag_depth : enable // Extension required for writing depth precision mediump float; // Precision required for OpenGL ES2 (WebGL) @@ -11,6 +12,7 @@ uniform vec4 colDiffuse; void main() { vec4 texelColor = texture2D(texture0, fragTexCoord); + gl_FragColor = texelColor*colDiffuse*fragColor; - gl_FragDepthEXT = gl_FragCoord.z; + gl_FragDepthEXT = gl_FragCoord.z; } \ No newline at end of file diff --git a/examples/shaders/resources/shaders/glsl100/hybrid_raymarch.fs b/examples/shaders/resources/shaders/glsl100/hybrid_raymarch.fs index 6241186de..44233b3bb 100644 --- a/examples/shaders/resources/shaders/glsl100/hybrid_raymarch.fs +++ b/examples/shaders/resources/shaders/glsl100/hybrid_raymarch.fs @@ -1,9 +1,9 @@ -#version 100 +#version 100 + #extension GL_EXT_frag_depth : enable //Extension required for writing depth #extension GL_OES_standard_derivatives : enable //Extension used for fwidth() precision mediump float; // Precision required for OpenGL ES2 (WebGL) - // Input vertex attributes (from vertex shader) varying vec2 fragTexCoord; varying vec4 fragColor; @@ -19,21 +19,22 @@ uniform vec2 screenCenter; #define ZERO 0 -// https://learnopengl.com/Advanced-OpenGL/Depth-testing -float CalcDepth(in vec3 rd, in float Idist){ +// SRC: https://learnopengl.com/Advanced-OpenGL/Depth-testing +float CalcDepth(in vec3 rd, in float Idist) +{ float local_z = dot(normalize(camDir),rd)*Idist; return (1.0/(local_z) - 1.0/0.01)/(1.0/1000.0 -1.0/0.01); } -// https://iquilezles.org/articles/distfunctions/ -float sdHorseshoe( in vec3 p, in vec2 c, in float r, in float le, vec2 w ) +// SRC: https://iquilezles.org/articles/distfunctions/ +float sdHorseshoe(in vec3 p, in vec2 c, in float r, in float le, vec2 w) { p.x = abs(p.x); float l = length(p.xy); p.xy = mat2(-c.x, c.y, c.y, c.x)*p.xy; p.xy = vec2((p.y>0.0 || p.x>0.0)?p.x:l*sign(-c.x), - (p.x>0.0)?p.y:l ); + (p.x>0.0)?p.y:l); p.xy = vec2(p.x,abs(p.y-r))-vec2(le,0.0); vec2 q = vec2(length(max(p.xy,0.0)) + min(0.0,max(p.x,p.y)),p.z); @@ -44,67 +45,70 @@ float sdHorseshoe( in vec3 p, in vec2 c, in float r, in float le, vec2 w ) // r = sphere's radius // h = cutting's plane's position // t = thickness -float sdSixWayCutHollowSphere( vec3 p, float r, float h, float t ) +float sdSixWayCutHollowSphere(vec3 p, float r, float h, float t) { // Six way symetry Transformation vec3 ap = abs(p); - if(ap.x < max(ap.y, ap.z)){ - if(ap.y < ap.z) ap.xz = ap.zx; + if (ap.x < max(ap.y, ap.z)){ + if (ap.y < ap.z) ap.xz = ap.zx; else ap.xy = ap.yx; } - vec2 q = vec2( length(ap.yz), ap.x ); + vec2 q = vec2(length(ap.yz), ap.x); float w = sqrt(r*r-h*h); - return ((h*q.x0.0 ) + if (tp1>0.0) { - tmax = min( tmax, tp1 ); - res = vec2( tp1, 1.0 ); + tmax = min(tmax, tp1); + res = vec2(tp1, 1.0); } float t = tmin; - for( int i=0; i<70 ; i++ ) + for (int i=0; i<70 ; i++) { - if(t>tmax) break; - vec2 h = map( ro+rd*t ); - if( abs(h.x)<(0.0001*t) ) + if (t>tmax) break; + vec2 h = map(ro+rd*t); + if (abs(h.x) < (0.0001*t)) { res = vec2(t,h.y); break; @@ -117,54 +121,54 @@ vec2 raycast( in vec3 ro, in vec3 rd ){ // https://iquilezles.org/articles/rmshadows -float calcSoftshadow( in vec3 ro, in vec3 rd, in float mint, in float tmax ) +float calcSoftshadow(in vec3 ro, in vec3 rd, in float mint, in float tmax) { // bounding volume - float tp = (0.8-ro.y)/rd.y; if( tp>0.0 ) tmax = min( tmax, tp ); + float tp = (0.8-ro.y)/rd.y; if (tp>0.0) tmax = min(tmax, tp); float res = 1.0; float t = mint; - for( int i=ZERO; i<24; i++ ) + for (int i=ZERO; i<24; i++) { - float h = map( ro + rd*t ).x; + float h = map(ro + rd*t).x; float s = clamp(8.0*h/t,0.0,1.0); - res = min( res, s ); - t += clamp( h, 0.01, 0.2 ); - if( res<0.004 || t>tmax ) break; + res = min(res, s); + t += clamp(h, 0.01, 0.2); + if (res<0.004 || t>tmax) break; } - res = clamp( res, 0.0, 1.0 ); + res = clamp(res, 0.0, 1.0); return res*res*(3.0-2.0*res); } // https://iquilezles.org/articles/normalsSDF -vec3 calcNormal( in vec3 pos ) +vec3 calcNormal(in vec3 pos) { vec2 e = vec2(1.0,-1.0)*0.5773*0.0005; - return normalize( e.xyy*map( pos + e.xyy ).x + - e.yyx*map( pos + e.yyx ).x + - e.yxy*map( pos + e.yxy ).x + - e.xxx*map( pos + e.xxx ).x ); + return normalize(e.xyy*map(pos + e.xyy).x + + e.yyx*map(pos + e.yyx).x + + e.yxy*map(pos + e.yxy).x + + e.xxx*map(pos + e.xxx).x); } // https://iquilezles.org/articles/nvscene2008/rwwtt.pdf -float calcAO( in vec3 pos, in vec3 nor ) +float calcAO(in vec3 pos, in vec3 nor) { - float occ = 0.0; + float occ = 0.0; float sca = 1.0; - for( int i=ZERO; i<5; i++ ) + for (int i=ZERO; i<5; i++) { float h = 0.01 + 0.12*float(i)/4.0; - float d = map( pos + h*nor ).x; + float d = map(pos + h*nor).x; occ += (h-d)*sca; sca *= 0.95; - if( occ>0.35 ) break; + if (occ>0.35) break; } - return clamp( 1.0 - 3.0*occ, 0.0, 1.0 ) * (0.5+0.5*nor.y); + return clamp(1.0 - 3.0*occ, 0.0, 1.0)*(0.5+0.5*nor.y); } // https://iquilezles.org/articles/checkerfiltering -float checkersGradBox( in vec2 p ) +float checkersGradBox(in vec2 p) { // filter kernel vec2 w = fwidth(p) + 0.001; @@ -175,7 +179,7 @@ float checkersGradBox( in vec2 p ) } // https://www.shadertoy.com/view/tdS3DG -vec4 render( in vec3 ro, in vec3 rd) +vec4 render(in vec3 ro, in vec3 rd) { // background vec3 col = vec3(0.7, 0.7, 0.9) - max(rd.y,0.0)*0.3; @@ -183,37 +187,37 @@ vec4 render( in vec3 ro, in vec3 rd) // raycast scene vec2 res = raycast(ro,rd); float t = res.x; - float m = res.y; - if( m>-0.5 ) + float m = res.y; + if (m>-0.5) { vec3 pos = ro + t*rd; - vec3 nor = (m<1.5) ? vec3(0.0,1.0,0.0) : calcNormal( pos ); - vec3 ref = reflect( rd, nor ); + vec3 nor = (m<1.5) ? vec3(0.0,1.0,0.0) : calcNormal(pos); + vec3 ref = reflect(rd, nor); // material - col = 0.2 + 0.2*sin( m*2.0 + vec3(0.0,1.0,2.0) ); + col = 0.2 + 0.2*sin(m*2.0 + vec3(0.0,1.0,2.0)); float ks = 1.0; - if( m<1.5 ) + if (m<1.5) { - float f = checkersGradBox( 3.0*pos.xz); + float f = checkersGradBox(3.0*pos.xz); col = 0.15 + f*vec3(0.05); ks = 0.4; } // lighting - float occ = calcAO( pos, nor ); + float occ = calcAO(pos, nor); - vec3 lin = vec3(0.0); + vec3 lin = vec3(0.0); // sun { - vec3 lig = normalize( vec3(-0.5, 0.4, -0.6) ); - vec3 hal = normalize( lig-rd ); - float dif = clamp( dot( nor, lig ), 0.0, 1.0 ); - //if( dif>0.0001 ) - dif *= calcSoftshadow( pos, lig, 0.02, 2.5 ); - float spe = pow( clamp( dot( nor, hal ), 0.0, 1.0 ),16.0); + vec3 lig = normalize(vec3(-0.5, 0.4, -0.6)); + vec3 hal = normalize(lig-rd); + float dif = clamp(dot(nor, lig), 0.0, 1.0); + //if (dif>0.0001) + dif *= calcSoftshadow(pos, lig, 0.02, 2.5); + float spe = pow(clamp(dot(nor, hal), 0.0, 1.0),16.0); spe *= dif; spe *= 0.04+0.96*pow(clamp(1.0-dot(hal,lig),0.0,1.0),5.0); //spe *= 0.04+0.96*pow(clamp(1.0-sqrt(0.5*(1.0-dot(rd,lig))),0.0,1.0),5.0); @@ -222,35 +226,35 @@ vec4 render( in vec3 ro, in vec3 rd) } // sky { - float dif = sqrt(clamp( 0.5+0.5*nor.y, 0.0, 1.0 )); + float dif = sqrt(clamp(0.5+0.5*nor.y, 0.0, 1.0)); dif *= occ; - float spe = smoothstep( -0.2, 0.2, ref.y ); + float spe = smoothstep(-0.2, 0.2, ref.y); spe *= dif; - spe *= 0.04+0.96*pow(clamp(1.0+dot(nor,rd),0.0,1.0), 5.0 ); - //if( spe>0.001 ) - spe *= calcSoftshadow( pos, ref, 0.02, 2.5 ); + spe *= 0.04+0.96*pow(clamp(1.0+dot(nor,rd),0.0,1.0), 5.0); + //if (spe>0.001) + spe *= calcSoftshadow(pos, ref, 0.02, 2.5); lin += col*0.60*dif*vec3(0.40,0.60,1.15); lin += 2.00*spe*vec3(0.40,0.60,1.30)*ks; } // back { - float dif = clamp( dot( nor, normalize(vec3(0.5,0.0,0.6))), 0.0, 1.0 )*clamp( 1.0-pos.y,0.0,1.0); + float dif = clamp(dot(nor, normalize(vec3(0.5,0.0,0.6))), 0.0, 1.0)*clamp(1.0-pos.y,0.0,1.0); dif *= occ; - lin += col*0.55*dif*vec3(0.25,0.25,0.25); + lin += col*0.55*dif*vec3(0.25,0.25,0.25); } // sss { float dif = pow(clamp(1.0+dot(nor,rd),0.0,1.0),2.0); dif *= occ; - lin += col*0.25*dif*vec3(1.00,1.00,1.00); + lin += col*0.25*dif*vec3(1.00,1.00,1.00); } - col = lin; + col = lin; - col = mix( col, vec3(0.7,0.7,0.9), 1.0-exp( -0.0001*t*t*t ) ); + col = mix(col, vec3(0.7,0.7,0.9), 1.0-exp(-0.0001*t*t*t)); } - return vec4(vec3( clamp(col,0.0,1.0) ),t); + return vec4(vec3(clamp(col,0.0,1.0)),t); } vec3 CalcRayDir(vec2 nCoord){ @@ -261,11 +265,11 @@ vec3 CalcRayDir(vec2 nCoord){ mat3 setCamera() { - vec3 cw = normalize(camDir); - vec3 cp = vec3(0.0, 1.0 ,0.0); - vec3 cu = normalize( cross(cw,cp) ); - vec3 cv = ( cross(cu,cw) ); - return mat3( cu, cv, cw ); + vec3 cw = normalize(camDir); + vec3 cp = vec3(0.0, 1.0 ,0.0); + vec3 cu = normalize(cross(cw,cp)); + vec3 cv = (cross(cu,cw)); + return mat3(cu, cv, cw); } void main() @@ -275,14 +279,14 @@ void main() // focal length float fl = length(camDir); - vec3 rd = ca * normalize( vec3(nCoord,fl) ); + vec3 rd = ca*normalize(vec3(nCoord,fl)); vec3 color = vec3(nCoord/2.0 + 0.5, 0.0); float depth = gl_FragCoord.z; { - vec4 res = render( camPos - vec3(0.0, 0.0, 0.0) , rd ); + vec4 res = render(camPos - vec3(0.0, 0.0, 0.0) , rd); color = res.xyz; depth = CalcDepth(rd,res.w); } gl_FragColor = vec4(color , 1.0); - gl_FragDepthEXT = depth; + gl_FragDepthEXT = depth; } \ No newline at end of file diff --git a/examples/shaders/resources/shaders/glsl100/julia_set.fs b/examples/shaders/resources/shaders/glsl100/julia_set.fs index 9ee8c6f4d..d5749c0f0 100644 --- a/examples/shaders/resources/shaders/glsl100/julia_set.fs +++ b/examples/shaders/resources/shaders/glsl100/julia_set.fs @@ -1,19 +1,17 @@ -#version 100 - -precision mediump float; +#version 120 // Input vertex attributes (from vertex shader) varying vec2 fragTexCoord; varying vec4 fragColor; uniform vec2 c; // c.x = real, c.y = imaginary component. Equation done is z^2 + c -uniform vec2 offset; // Offset of the scale. -uniform float zoom; // Zoom of the scale. +uniform vec2 offset; // Offset of the scale +uniform float zoom; // Zoom of the scale // NOTE: Maximum number of shader for-loop iterations depend on GPU, // for example, on RasperryPi for this examply only supports up to 60 -const int maxIterations = 48; // Max iterations to do. -const float colorCycles = 1.0; // Number of times the color palette repeats. +const int maxIterations = 48; // Max iterations to do +const float colorCycles = 1.0; // Number of times the color palette repeats // Square a complex number vec2 ComplexSquare(vec2 z) @@ -32,22 +30,22 @@ vec3 Hsv2rgb(vec3 c) void main() { /********************************************************************************************** - Julia sets use a function z^2 + c, where c is a constant. - This function is iterated until the nature of the point is determined. + Julia sets use a function z^2 + c, where c is a constant + This function is iterated until the nature of the point is determined If the magnitude of the number becomes greater than 2, then from that point onward - the number will get bigger and bigger, and will never get smaller (tends towards infinity). - 2^2 = 4, 4^2 = 8 and so on. - So at 2 we stop iterating. + the number will get bigger and bigger, and will never get smaller (tends towards infinity) + 2^2 = 4, 4^2 = 8 and so on + So at 2 we stop iterating - If the number is below 2, we keep iterating. + If the number is below 2, we keep iterating But when do we stop iterating if the number is always below 2 (it converges)? - That is what maxIterations is for. - Then we can divide the iterations by the maxIterations value to get a normalized value that we can - then map to a color. + That is what maxIterations is for + Then we can divide the iterations by the maxIterations value to get a normalized value + that we can then map to a color - We use dot product (z.x * z.x + z.y * z.y) to determine the magnitude (length) squared. - And once the magnitude squared is > 4, then magnitude > 2 is also true (saves computational power). + We use dot product (z.x*z.x + z.y*z.y) to determine the magnitude (length) squared + And once the magnitude squared is > 4, then magnitude > 2 is also true (saves computational power) *************************************************************************************************/ // The pixel coordinates are scaled so they are on the mandelbrot scale @@ -65,18 +63,18 @@ void main() iter = iterations; } - // Another few iterations decreases errors in the smoothing calculation. - // See http://linas.org/art-gallery/escape/escape.html for more information. + // Another few iterations decreases errors in the smoothing calculation + // See http://linas.org/art-gallery/escape/escape.html for more information z = ComplexSquare(z) + c; z = ComplexSquare(z) + c; - // This last part smooths the color (again see link above). + // This last part smooths the color (again see link above) float smoothVal = float(iter) + 1.0 - (log(log(length(z)))/log(2.0)); - // Normalize the value so it is between 0 and 1. + // Normalize the value so it is between 0 and 1 float norm = smoothVal/float(maxIterations); - // If in set, color black. 0.999 allows for some float accuracy error. + // If in set, color black. 0.999 allows for some float accuracy error if (norm > 0.999) gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); else gl_FragColor = vec4(Hsv2rgb(vec3(norm*colorCycles, 1.0, 1.0)), 1.0); } diff --git a/examples/shaders/resources/shaders/glsl100/lighting.fs b/examples/shaders/resources/shaders/glsl100/lighting.fs index 596da0f6f..e36eb7ac0 100644 --- a/examples/shaders/resources/shaders/glsl100/lighting.fs +++ b/examples/shaders/resources/shaders/glsl100/lighting.fs @@ -40,7 +40,7 @@ void main() vec3 viewD = normalize(viewPos - fragPosition); vec3 specular = vec3(0.0); - vec4 tint = colDiffuse * fragColor; + vec4 tint = colDiffuse*fragColor; // NOTE: Implement here your fragment shader code diff --git a/examples/shaders/resources/shaders/glsl100/lightmap.fs b/examples/shaders/resources/shaders/glsl100/lightmap.fs index 9f0bcd27b..70ecad61b 100644 --- a/examples/shaders/resources/shaders/glsl100/lightmap.fs +++ b/examples/shaders/resources/shaders/glsl100/lightmap.fs @@ -18,5 +18,5 @@ void main() vec4 texelColor = texture2D(texture0, fragTexCoord); vec4 texelColor2 = texture2D(texture1, fragTexCoord2); - gl_FragColor = texelColor * texelColor2; + gl_FragColor = texelColor*texelColor2; } diff --git a/examples/shaders/resources/shaders/glsl100/mask.fs b/examples/shaders/resources/shaders/glsl100/mask.fs index 2136ec1d3..8203a7008 100644 --- a/examples/shaders/resources/shaders/glsl100/mask.fs +++ b/examples/shaders/resources/shaders/glsl100/mask.fs @@ -1,6 +1,4 @@ -#version 100 - -precision mediump float; +#version 120 // Input vertex attributes (from vertex shader) varying vec2 fragTexCoord; diff --git a/examples/shaders/resources/shaders/glsl100/normalmap.fs b/examples/shaders/resources/shaders/glsl100/normalmap.fs index 02902a61f..197e81ed1 100644 --- a/examples/shaders/resources/shaders/glsl100/normalmap.fs +++ b/examples/shaders/resources/shaders/glsl100/normalmap.fs @@ -34,21 +34,21 @@ void main() normal = texture(normalMap, vec2(fragTexCoord.x, fragTexCoord.y)).rgb; //Transform normal values to the range -1.0 ... 1.0 - normal = normalize(normal * 2.0 - 1.0); + normal = normalize(normal*2.0 - 1.0); //Transform the normal from tangent-space to world-space for lighting calculation - normal = normalize(normal * TBN); + normal = normalize(normal*TBN); } else { normal = normalize(fragNormal); } - vec4 tint = colDiffuse * fragColor; + vec4 tint = colDiffuse*fragColor; vec3 lightColor = vec3(1.0, 1.0, 1.0); float NdotL = max(dot(normal, lightDir), 0.0); - vec3 lightDot = lightColor * NdotL; + vec3 lightDot = lightColor*NdotL; float specCo = 0.0; @@ -56,9 +56,9 @@ void main() specular += specCo; - finalColor = (texelColor * ((tint + vec4(specular, 1.0)) * vec4(lightDot, 1.0))); - finalColor += texelColor * (vec4(1.0, 1.0, 1.0, 1.0) / 40.0) * tint; + finalColor = (texelColor*((tint + vec4(specular, 1.0))*vec4(lightDot, 1.0))); + finalColor += texelColor*(vec4(1.0, 1.0, 1.0, 1.0)/40.0)*tint; // Gamma correction - gl_FragColor = pow(finalColor, vec4(1.0 / 2.2)); + gl_FragColor = pow(finalColor, vec4(1.0/2.2)); } diff --git a/examples/shaders/resources/shaders/glsl100/normalmap.vs b/examples/shaders/resources/shaders/glsl100/normalmap.vs index 072e0a6c2..0426653ef 100644 --- a/examples/shaders/resources/shaders/glsl100/normalmap.vs +++ b/examples/shaders/resources/shaders/glsl100/normalmap.vs @@ -27,15 +27,15 @@ mat3 inverse(mat3 m) float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2]; float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2]; - float b01 = a22 * a11 - a12 * a21; - float b11 = -a22 * a10 + a12 * a20; - float b21 = a21 * a10 - a11 * a20; + float b01 = a22*a11 - a12*a21; + float b11 = -a22*a10 + a12*a20; + float b21 = a21*a10 - a11*a20; - float det = a00 * b01 + a01 * b11 + a02 * b21; + float det = a00*b01 + a01*b11 + a02*b21; - return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11), - b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10), - b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det; + return mat3(b01, (-a22*a01 + a02*a21), (a12*a01 - a02*a11), + b11, (a22*a00 - a02*a20), (-a12*a00 + a02*a10), + b21, (-a21*a00 + a01*a20), (a11*a00 - a01*a10))/det; } // https://github.com/glslify/glsl-transpose @@ -49,21 +49,21 @@ mat3 transpose(mat3 m) void main() { // Compute binormal from vertex normal and tangent. W component is the tangent handedness - vec3 vertexBinormal = cross(vertexNormal, vertexTangent.xyz) * vertexTangent.w; + vec3 vertexBinormal = cross(vertexNormal, vertexTangent.xyz)*vertexTangent.w; // Compute fragment normal based on normal transformations mat3 normalMatrix = transpose(inverse(mat3(matModel))); // Compute fragment position based on model transformations - fragPosition = vec3(matModel * vec4(vertexPosition, 1.0)); + fragPosition = vec3(matModel*vec4(vertexPosition, 1.0)); //Create TBN matrix for transforming the normal map values from tangent-space to world-space - fragNormal = normalize(normalMatrix * vertexNormal); + fragNormal = normalize(normalMatrix*vertexNormal); - vec3 fragTangent = normalize(normalMatrix * vertexTangent.xyz); - fragTangent = normalize(fragTangent - dot(fragTangent, fragNormal) * fragNormal); + vec3 fragTangent = normalize(normalMatrix*vertexTangent.xyz); + fragTangent = normalize(fragTangent - dot(fragTangent, fragNormal)*fragNormal); - vec3 fragBinormal = normalize(normalMatrix * vertexBinormal); + vec3 fragBinormal = normalize(normalMatrix*vertexBinormal); fragBinormal = cross(fragNormal, fragTangent); TBN = transpose(mat3(fragTangent, fragBinormal, fragNormal)); @@ -72,5 +72,5 @@ void main() fragTexCoord = vertexTexCoord; - gl_Position = mvp * vec4(vertexPosition, 1.0); + gl_Position = mvp*vec4(vertexPosition, 1.0); } diff --git a/examples/shaders/resources/shaders/glsl100/pbr.vs b/examples/shaders/resources/shaders/glsl100/pbr.vs index baf003842..1bd6e0e9f 100644 --- a/examples/shaders/resources/shaders/glsl100/pbr.vs +++ b/examples/shaders/resources/shaders/glsl100/pbr.vs @@ -52,7 +52,7 @@ mat3 transpose(mat3 m) void main() { // Compute binormal from vertex normal and tangent - vec3 vertexBinormal = cross(vertexNormal, vertexTangent.xyz) * vertexTangent.w; + vec3 vertexBinormal = cross(vertexNormal, vertexTangent.xyz)*vertexTangent.w; // Compute fragment normal based on normal transformations mat3 normalMatrix = transpose(inverse(mat3(matModel))); diff --git a/examples/shaders/resources/shaders/glsl100/raymarching.fs b/examples/shaders/resources/shaders/glsl100/raymarching.fs index a7339d216..ce9a2faca 100644 --- a/examples/shaders/resources/shaders/glsl100/raymarching.fs +++ b/examples/shaders/resources/shaders/glsl100/raymarching.fs @@ -34,7 +34,7 @@ uniform vec2 resolution; // SOFTWARE. // A list of useful distance function to simple primitives, and an example on how to -// do some interesting boolean operations, repetition and displacement. +// do some interesting boolean operations, repetition and displacement // // More info here: http://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm @@ -42,38 +42,38 @@ uniform vec2 resolution; //------------------------------------------------------------------ -float sdPlane( vec3 p ) +float sdPlane(vec3 p) { return p.y; } -float sdSphere( vec3 p, float s ) +float sdSphere(vec3 p, float s) { return length(p)-s; } -float sdBox( vec3 p, vec3 b ) +float sdBox(vec3 p, vec3 b) { vec3 d = abs(p) - b; return min(max(d.x,max(d.y,d.z)),0.0) + length(max(d,0.0)); } -float sdEllipsoid( in vec3 p, in vec3 r ) +float sdEllipsoid(in vec3 p, in vec3 r) { - return (length( p/r ) - 1.0) * min(min(r.x,r.y),r.z); + return (length(p/r) - 1.0)*min(min(r.x,r.y),r.z); } -float udRoundBox( vec3 p, vec3 b, float r ) +float udRoundBox(vec3 p, vec3 b, float r) { return length(max(abs(p)-b,0.0))-r; } -float sdTorus( vec3 p, vec2 t ) +float sdTorus(vec3 p, vec2 t) { - return length( vec2(length(p.xz)-t.x,p.y) )-t.y; + return length(vec2(length(p.xz)-t.x,p.y))-t.y; } -float sdHexPrism( vec3 p, vec2 h ) +float sdHexPrism(vec3 p, vec2 h) { vec3 q = abs(p); #if 0 @@ -85,24 +85,24 @@ float sdHexPrism( vec3 p, vec2 h ) #endif } -float sdCapsule( vec3 p, vec3 a, vec3 b, float r ) +float sdCapsule(vec3 p, vec3 a, vec3 b, float r) { vec3 pa = p-a, ba = b-a; - float h = clamp( dot(pa,ba)/dot(ba,ba), 0.0, 1.0 ); - return length( pa - ba*h ) - r; + float h = clamp(dot(pa,ba)/dot(ba,ba), 0.0, 1.0); + return length(pa - ba*h) - r; } -float sdEquilateralTriangle( in vec2 p ) +float sdEquilateralTriangle( in vec2 p) { const float k = sqrt(3.0); p.x = abs(p.x) - 1.0; p.y = p.y + 1.0/k; - if( p.x + k*p.y > 0.0 ) p = vec2( p.x - k*p.y, -k*p.x - p.y )/2.0; - p.x += 2.0 - 2.0*clamp( (p.x+2.0)/2.0, 0.0, 1.0 ); + if (p.x + k*p.y > 0.0) p = vec2(p.x - k*p.y, -k*p.x - p.y)/2.0; + p.x += 2.0 - 2.0*clamp((p.x+2.0)/2.0, 0.0, 1.0); return -length(p)*sign(p.y); } -float sdTriPrism( vec3 p, vec2 h ) +float sdTriPrism(vec3 p, vec2 h) { vec3 q = abs(p); float d1 = q.z-h.y; @@ -117,95 +117,95 @@ float sdTriPrism( vec3 p, vec2 h ) return length(max(vec2(d1,d2),0.0)) + min(max(d1,d2), 0.); } -float sdCylinder( vec3 p, vec2 h ) +float sdCylinder(vec3 p, vec2 h) { vec2 d = abs(vec2(length(p.xz),p.y)) - h; return min(max(d.x,d.y),0.0) + length(max(d,0.0)); } -float sdCone( in vec3 p, in vec3 c ) +float sdCone(in vec3 p, in vec3 c) { - vec2 q = vec2( length(p.xz), p.y ); + vec2 q = vec2(length(p.xz), p.y); float d1 = -q.y-c.z; - float d2 = max( dot(q,c.xy), q.y); + float d2 = max(dot(q,c.xy), q.y); return length(max(vec2(d1,d2),0.0)) + min(max(d1,d2), 0.); } -float sdConeSection( in vec3 p, in float h, in float r1, in float r2 ) +float sdConeSection(in vec3 p, in float h, in float r1, in float r2) { float d1 = -p.y - h; float q = p.y - h; float si = 0.5*(r1-r2)/h; - float d2 = max( sqrt( dot(p.xz,p.xz)*(1.0-si*si)) + q*si - r2, q ); + float d2 = max(sqrt(dot(p.xz,p.xz)*(1.0-si*si)) + q*si - r2, q); return length(max(vec2(d1,d2),0.0)) + min(max(d1,d2), 0.); } -float sdPryamid4(vec3 p, vec3 h ) // h = { cos a, sin a, height } +float sdPryamid4(vec3 p, vec3 h) // h = { cos a, sin a, height } { // Tetrahedron = Octahedron - Cube - float box = sdBox( p - vec3(0,-2.0*h.z,0), vec3(2.0*h.z) ); + float box = sdBox(p - vec3(0,-2.0*h.z,0), vec3(2.0*h.z)); float d = 0.0; - d = max( d, abs( dot(p, vec3( -h.x, h.y, 0 )) )); - d = max( d, abs( dot(p, vec3( h.x, h.y, 0 )) )); - d = max( d, abs( dot(p, vec3( 0, h.y, h.x )) )); - d = max( d, abs( dot(p, vec3( 0, h.y,-h.x )) )); + d = max(d, abs(dot(p, vec3(-h.x, h.y, 0)))); + d = max(d, abs(dot(p, vec3( h.x, h.y, 0)))); + d = max(d, abs(dot(p, vec3( 0, h.y, h.x)))); + d = max(d, abs(dot(p, vec3( 0, h.y,-h.x)))); float octa = d - h.z; return max(-box,octa); // Subtraction } -float length2( vec2 p ) +float length2(vec2 p) { - return sqrt( p.x*p.x + p.y*p.y ); + return sqrt(p.x*p.x + p.y*p.y); } -float length6( vec2 p ) +float length6(vec2 p) { p = p*p*p; p = p*p; - return pow( p.x + p.y, 1.0/6.0 ); + return pow(p.x + p.y, 1.0/6.0); } -float length8( vec2 p ) +float length8(vec2 p) { p = p*p; p = p*p; p = p*p; - return pow( p.x + p.y, 1.0/8.0 ); + return pow(p.x + p.y, 1.0/8.0); } -float sdTorus82( vec3 p, vec2 t ) +float sdTorus82(vec3 p, vec2 t) { vec2 q = vec2(length2(p.xz)-t.x,p.y); return length8(q)-t.y; } -float sdTorus88( vec3 p, vec2 t ) +float sdTorus88(vec3 p, vec2 t) { vec2 q = vec2(length8(p.xz)-t.x,p.y); return length8(q)-t.y; } -float sdCylinder6( vec3 p, vec2 h ) +float sdCylinder6(vec3 p, vec2 h) { - return max( length6(p.xz)-h.x, abs(p.y)-h.y ); + return max(length6(p.xz)-h.x, abs(p.y)-h.y); } //------------------------------------------------------------------ -float opS( float d1, float d2 ) +float opS(float d1, float d2) { return max(-d2,d1); } -vec2 opU( vec2 d1, vec2 d2 ) +vec2 opU(vec2 d1, vec2 d2) { return (d1.x0.0 ) tmax = min( tmax, tp1 ); - float tp2 = (1.6-ro.y)/rd.y; if( tp2>0.0 ) { if( ro.y>1.6 ) tmin = max( tmin, tp2 ); - else tmax = min( tmax, tp2 ); } + float tp1 = (0.0-ro.y)/rd.y; if (tp1>0.0) tmax = min(tmax, tp1); + float tp2 = (1.6-ro.y)/rd.y; if (tp2>0.0) { if (ro.y>1.6) tmin = max(tmin, tp2); + else tmax = min(tmax, tp2); } #endif float t = tmin; float m = -1.0; - for( int i=0; i<64; i++ ) + for (int i=0; i<64; i++) { float precis = 0.0005*t; - vec2 res = map( ro+rd*t ); - if( res.xtmax ) break; + vec2 res = map(ro+rd*t); + if (res.xtmax) break; t += res.x; m = res.y; } - if( t>tmax ) m=-1.0; - return vec2( t, m ); + if (t>tmax) m=-1.0; + return vec2(t, m); } -float calcSoftshadow( in vec3 ro, in vec3 rd, in float mint, in float tmax ) +float calcSoftshadow(in vec3 ro, in vec3 rd, in float mint, in float tmax) { float res = 1.0; float t = mint; - for( int i=0; i<16; i++ ) + for (int i=0; i<16; i++) { - float h = map( ro + rd*t ).x; - res = min( res, 8.0*h/t ); - t += clamp( h, 0.02, 0.10 ); - if( h<0.001 || t>tmax ) break; + float h = map(ro + rd*t).x; + res = min(res, 8.0*h/t); + t += clamp(h, 0.02, 0.10); + if (h<0.001 || t>tmax) break; } - return clamp( res, 0.0, 1.0 ); + return clamp(res, 0.0, 1.0); } -vec3 calcNormal( in vec3 pos ) +vec3 calcNormal(in vec3 pos) { vec2 e = vec2(1.0,-1.0)*0.5773*0.0005; - return normalize( e.xyy*map( pos + e.xyy ).x + - e.yyx*map( pos + e.yyx ).x + - e.yxy*map( pos + e.yxy ).x + - e.xxx*map( pos + e.xxx ).x ); + return normalize(e.xyy*map(pos + e.xyy).x + + e.yyx*map(pos + e.yyx).x + + e.yxy*map(pos + e.yxy).x + + e.xxx*map(pos + e.xxx).x); /* - vec3 eps = vec3( 0.0005, 0.0, 0.0 ); + vec3 eps = vec3(0.0005, 0.0, 0.0); vec3 nor = vec3( map(pos+eps.xyy).x - map(pos-eps.xyy).x, map(pos+eps.yxy).x - map(pos-eps.yxy).x, - map(pos+eps.yyx).x - map(pos-eps.yyx).x ); + map(pos+eps.yyx).x - map(pos-eps.yyx).x); return normalize(nor); */ } -float calcAO( in vec3 pos, in vec3 nor ) +float calcAO(in vec3 pos, in vec3 nor) { float occ = 0.0; float sca = 1.0; - for( int i=0; i<5; i++ ) + for (int i=0; i<5; i++) { float hr = 0.01 + 0.12*float(i)/4.0; - vec3 aopos = nor * hr + pos; - float dd = map( aopos ).x; + vec3 aopos = nor*hr + pos; + float dd = map(aopos).x; occ += -(dd-hr)*sca; sca *= 0.95; } - return clamp( 1.0 - 3.0*occ, 0.0, 1.0 ); + return clamp(1.0 - 3.0*occ, 0.0, 1.0); } // http://iquilezles.org/www/articles/checkerfiltering/checkerfiltering.htm -float checkersGradBox( in vec2 p ) +float checkersGradBox(in vec2 p) { // filter kernel vec2 w = fwidth(p) + 0.001; @@ -328,43 +328,43 @@ float checkersGradBox( in vec2 p ) return 0.5 - 0.5*i.x*i.y; } -vec3 render( in vec3 ro, in vec3 rd ) +vec3 render(in vec3 ro, in vec3 rd) { vec3 col = vec3(0.7, 0.9, 1.0) +rd.y*0.8; vec2 res = castRay(ro,rd); float t = res.x; float m = res.y; - if( m>-0.5 ) + if (m>-0.5) { vec3 pos = ro + t*rd; - vec3 nor = calcNormal( pos ); - vec3 ref = reflect( rd, nor ); + vec3 nor = calcNormal(pos); + vec3 ref = reflect(rd, nor); // material - col = 0.45 + 0.35*sin( vec3(0.05,0.08,0.10)*(m-1.0) ); - if( m<1.5 ) + col = 0.45 + 0.35*sin(vec3(0.05,0.08,0.10)*(m-1.0)); + if (m<1.5) { - float f = checkersGradBox( 5.0*pos.xz ); + float f = checkersGradBox(5.0*pos.xz); col = 0.3 + f*vec3(0.1); } // lighting - float occ = calcAO( pos, nor ); - vec3 lig = normalize( vec3(cos(-0.4 * runTime), sin(0.7 * runTime), -0.6) ); - vec3 hal = normalize( lig-rd ); - float amb = clamp( 0.5+0.5*nor.y, 0.0, 1.0 ); - float dif = clamp( dot( nor, lig ), 0.0, 1.0 ); - float bac = clamp( dot( nor, normalize(vec3(-lig.x,0.0,-lig.z))), 0.0, 1.0 )*clamp( 1.0-pos.y,0.0,1.0); - float dom = smoothstep( -0.1, 0.1, ref.y ); - float fre = pow( clamp(1.0+dot(nor,rd),0.0,1.0), 2.0 ); + float occ = calcAO(pos, nor); + vec3 lig = normalize(vec3(cos(-0.4*runTime), sin(0.7*runTime), -0.6)); + vec3 hal = normalize(lig-rd); + float amb = clamp(0.5+0.5*nor.y, 0.0, 1.0); + float dif = clamp(dot(nor, lig), 0.0, 1.0); + float bac = clamp(dot(nor, normalize(vec3(-lig.x,0.0,-lig.z))), 0.0, 1.0)*clamp(1.0-pos.y,0.0,1.0); + float dom = smoothstep(-0.1, 0.1, ref.y); + float fre = pow(clamp(1.0+dot(nor,rd),0.0,1.0), 2.0); - dif *= calcSoftshadow( pos, lig, 0.02, 2.5 ); - dom *= calcSoftshadow( pos, ref, 0.02, 2.5 ); + dif *= calcSoftshadow(pos, lig, 0.02, 2.5); + dom *= calcSoftshadow(pos, ref, 0.02, 2.5); - float spe = pow( clamp( dot( nor, hal ), 0.0, 1.0 ),16.0)* + float spe = pow(clamp(dot(nor, hal), 0.0, 1.0),16.0)* dif * - (0.04 + 0.96*pow( clamp(1.0+dot(hal,rd),0.0,1.0), 5.0 )); + (0.04 + 0.96*pow(clamp(1.0+dot(hal,rd),0.0,1.0), 5.0)); vec3 lin = vec3(0.0); lin += 1.30*dif*vec3(1.00,0.80,0.55); @@ -375,51 +375,51 @@ vec3 render( in vec3 ro, in vec3 rd ) col = col*lin; col += 10.00*spe*vec3(1.00,0.90,0.70); - col = mix( col, vec3(0.8,0.9,1.0), 1.0-exp( -0.0002*t*t*t ) ); + col = mix(col, vec3(0.8,0.9,1.0), 1.0-exp(-0.0002*t*t*t)); } - return vec3( clamp(col,0.0,1.0) ); + return vec3(clamp(col,0.0,1.0)); } -mat3 setCamera( in vec3 ro, in vec3 ta, float cr ) +mat3 setCamera(in vec3 ro, in vec3 ta, float cr) { vec3 cw = normalize(ta-ro); vec3 cp = vec3(sin(cr), cos(cr),0.0); - vec3 cu = normalize( cross(cw,cp) ); - vec3 cv = normalize( cross(cu,cw) ); - return mat3( cu, cv, cw ); + vec3 cu = normalize(cross(cw,cp)); + vec3 cv = normalize(cross(cu,cw)); + return mat3(cu, cv, cw); } void main() { vec3 tot = vec3(0.0); #if AA>1 - for( int m=0; m1 @@ -427,5 +427,5 @@ void main() tot /= float(AA*AA); #endif - gl_FragColor = vec4( tot, 1.0 ); + gl_FragColor = vec4(tot, 1.0); } diff --git a/examples/shaders/resources/shaders/glsl100/rounded_rectangle.fs b/examples/shaders/resources/shaders/glsl100/rounded_rectangle.fs index 3c8d07978..f714859de 100644 --- a/examples/shaders/resources/shaders/glsl100/rounded_rectangle.fs +++ b/examples/shaders/resources/shaders/glsl100/rounded_rectangle.fs @@ -1,9 +1,9 @@ -// Note: SDF by Iñigo Quilez is licensed under MIT License - #version 100 precision mediump float; +// NOTE: SDF by Iñigo Quilez, licensed under MIT License + // Input vertex attributes (from vertex shader) varying vec2 fragTexCoord; varying vec4 fragColor; diff --git a/examples/shaders/resources/shaders/glsl100/scanlines.fs b/examples/shaders/resources/shaders/glsl100/scanlines.fs index debfc7623..3d55b3fe5 100644 --- a/examples/shaders/resources/shaders/glsl100/scanlines.fs +++ b/examples/shaders/resources/shaders/glsl100/scanlines.fs @@ -35,7 +35,7 @@ void main() fragColor = color; */ // Scanlines method 2 - float globalPos = (fragTexCoord.y + offset) * frequency; + float globalPos = (fragTexCoord.y + offset)*frequency; float wavePos = cos((fract(globalPos) - 0.5)*3.14); vec4 color = texture2D(texture0, fragTexCoord); diff --git a/examples/shaders/resources/shaders/glsl100/sobel.fs b/examples/shaders/resources/shaders/glsl100/sobel.fs index f8f5b95bc..e0eb06129 100644 --- a/examples/shaders/resources/shaders/glsl100/sobel.fs +++ b/examples/shaders/resources/shaders/glsl100/sobel.fs @@ -20,10 +20,10 @@ void main() vec4 horizEdge = vec4(0.0); horizEdge -= texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y - y))*1.0; - horizEdge -= texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y ))*2.0; + horizEdge -= texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y ))*2.0; horizEdge -= texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y + y))*1.0; horizEdge += texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y - y))*1.0; - horizEdge += texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y ))*2.0; + horizEdge += texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y ))*2.0; horizEdge += texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y + y))*1.0; vec4 vertEdge = vec4(0.0); diff --git a/examples/shaders/resources/shaders/glsl100/vertex_displacement.fs b/examples/shaders/resources/shaders/glsl100/vertex_displacement.fs index 3328a91e7..c479e02a4 100644 --- a/examples/shaders/resources/shaders/glsl100/vertex_displacement.fs +++ b/examples/shaders/resources/shaders/glsl100/vertex_displacement.fs @@ -6,7 +6,6 @@ precision mediump float; varying vec2 fragTexCoord; varying float height; - void main() { vec4 darkblue = vec4(0.0, 0.13, 0.18, 1.0); diff --git a/examples/shaders/resources/shaders/glsl100/vertex_displacement.vs b/examples/shaders/resources/shaders/glsl100/vertex_displacement.vs index c7b926d4b..b83b6e966 100644 --- a/examples/shaders/resources/shaders/glsl100/vertex_displacement.vs +++ b/examples/shaders/resources/shaders/glsl100/vertex_displacement.vs @@ -23,23 +23,23 @@ varying float height; void main() { // Calculate animated texture coordinates based on time and vertex position - vec2 animatedTexCoord = sin(vertexTexCoord + vec2(sin(time + vertexPosition.x * 0.1), cos(time + vertexPosition.z * 0.1)) * 0.3); + vec2 animatedTexCoord = sin(vertexTexCoord + vec2(sin(time + vertexPosition.x*0.1), cos(time + vertexPosition.z*0.1))*0.3); // Normalize animated texture coordinates to range [0, 1] - animatedTexCoord = animatedTexCoord * 0.5 + 0.5; + animatedTexCoord = animatedTexCoord*0.5 + 0.5; // Fetch displacement from the perlin noise map - float displacement = texture2D(perlinNoiseMap, animatedTexCoord).r * 7.0; // Amplified displacement + float displacement = texture2D(perlinNoiseMap, animatedTexCoord).r*7.0; // Amplified displacement // Displace vertex position vec3 displacedPosition = vertexPosition + vec3(0.0, displacement, 0.0); // Send vertex attributes to fragment shader - fragPosition = vec3(matModel * vec4(displacedPosition, 1.0)); + fragPosition = vec3(matModel*vec4(displacedPosition, 1.0)); fragTexCoord = vertexTexCoord; - fragNormal = normalize(vec3(matNormal * vec4(vertexNormal, 1.0))); - height = displacedPosition.y * 0.2; // send height to fragment shader for coloring + fragNormal = normalize(vec3(matNormal*vec4(vertexNormal, 1.0))); + height = displacedPosition.y*0.2; // send height to fragment shader for coloring // Calculate final vertex position - gl_Position = mvp * vec4(displacedPosition, 1.0); + gl_Position = mvp*vec4(displacedPosition, 1.0); } diff --git a/examples/shaders/resources/shaders/glsl100/wave.fs b/examples/shaders/resources/shaders/glsl100/wave.fs index cd4ba9de4..df12df9ba 100644 --- a/examples/shaders/resources/shaders/glsl100/wave.fs +++ b/examples/shaders/resources/shaders/glsl100/wave.fs @@ -11,9 +11,7 @@ uniform sampler2D texture0; uniform vec4 colDiffuse; uniform float seconds; - uniform vec2 size; - uniform float freqX; uniform float freqY; uniform float ampX; @@ -22,15 +20,15 @@ uniform float speedX; uniform float speedY; void main() { - float pixelWidth = 1.0 / size.x; - float pixelHeight = 1.0 / size.y; - float aspect = pixelHeight / pixelWidth; + float pixelWidth = 1.0/size.x; + float pixelHeight = 1.0/size.y; + float aspect = pixelHeight/pixelWidth; float boxLeft = 0.0; float boxTop = 0.0; vec2 p = fragTexCoord; - p.x += cos((fragTexCoord.y - boxTop) * freqX / ( pixelWidth * 750.0) + (seconds * speedX)) * ampX * pixelWidth; - p.y += sin((fragTexCoord.x - boxLeft) * freqY * aspect / ( pixelHeight * 750.0) + (seconds * speedY)) * ampY * pixelHeight; + p.x += cos((fragTexCoord.y - boxTop)*freqX/(pixelWidth*750.0) + (seconds*speedX))*ampX*pixelWidth; + p.y += sin((fragTexCoord.x - boxLeft)*freqY*aspect/(pixelHeight*750.0) + (seconds*speedY))*ampY*pixelHeight; gl_FragColor = texture2D(texture0, p)*colDiffuse*fragColor; } diff --git a/examples/shaders/resources/shaders/glsl100/write_depth.fs b/examples/shaders/resources/shaders/glsl100/write_depth.fs index 341c6115f..6200bd23a 100644 --- a/examples/shaders/resources/shaders/glsl100/write_depth.fs +++ b/examples/shaders/resources/shaders/glsl100/write_depth.fs @@ -1,6 +1,7 @@ -#version 100 +#version 100 + #extension GL_EXT_frag_depth : enable -precision mediump float; // Precision required for OpenGL ES2 (WebGL) +precision mediump float; varying vec2 fragTexCoord; varying vec4 fragColor; diff --git a/examples/shaders/resources/shaders/glsl120/cross_stitching.fs b/examples/shaders/resources/shaders/glsl120/cross_stitching.fs index 532724635..e3ad3417e 100644 --- a/examples/shaders/resources/shaders/glsl120/cross_stitching.fs +++ b/examples/shaders/resources/shaders/glsl120/cross_stitching.fs @@ -21,8 +21,8 @@ vec4 PostFX(sampler2D tex, vec2 uv) { vec4 c = vec4(0.0); float size = stitchingSize; - vec2 cPos = uv * vec2(renderWidth, renderHeight); - vec2 tlPos = floor(cPos / vec2(size, size)); + vec2 cPos = uv*vec2(renderWidth, renderHeight); + vec2 tlPos = floor(cPos/vec2(size, size)); tlPos *= size; int remX = int(mod(cPos.x, size)); @@ -36,11 +36,11 @@ vec4 PostFX(sampler2D tex, vec2 uv) if ((remX == remY) || (((int(cPos.x) - int(blPos.x)) == (int(blPos.y) - int(cPos.y))))) { if (invert == 1) c = vec4(0.2, 0.15, 0.05, 1.0); - else c = texture2D(tex, tlPos * vec2(1.0/renderWidth, 1.0/renderHeight)) * 1.4; + else c = texture2D(tex, tlPos*vec2(1.0/renderWidth, 1.0/renderHeight))*1.4; } else { - if (invert == 1) c = texture2D(tex, tlPos * vec2(1.0/renderWidth, 1.0/renderHeight)) * 1.4; + if (invert == 1) c = texture2D(tex, tlPos*vec2(1.0/renderWidth, 1.0/renderHeight))*1.4; else c = vec4(0.0, 0.0, 0.0, 1.0); } diff --git a/examples/shaders/resources/shaders/glsl120/fisheye.fs b/examples/shaders/resources/shaders/glsl120/fisheye.fs index 5cc86b811..b88c5b790 100644 --- a/examples/shaders/resources/shaders/glsl120/fisheye.fs +++ b/examples/shaders/resources/shaders/glsl120/fisheye.fs @@ -15,22 +15,22 @@ const float PI = 3.1415926535; void main() { float aperture = 178.0; - float apertureHalf = 0.5 * aperture * (PI / 180.0); + float apertureHalf = 0.5*aperture*(PI/180.0); float maxFactor = sin(apertureHalf); vec2 uv = vec2(0.0); - vec2 xy = 2.0 * fragTexCoord.xy - 1.0; + vec2 xy = 2.0*fragTexCoord.xy - 1.0; float d = length(xy); if (d < (2.0 - maxFactor)) { - d = length(xy * maxFactor); - float z = sqrt(1.0 - d * d); - float r = atan(d, z) / PI; + d = length(xy*maxFactor); + float z = sqrt(1.0 - d*d); + float r = atan(d, z)/PI; float phi = atan(xy.y, xy.x); - uv.x = r * cos(phi) + 0.5; - uv.y = r * sin(phi) + 0.5; + uv.x = r*cos(phi) + 0.5; + uv.y = r*sin(phi) + 0.5; } else { diff --git a/examples/shaders/resources/shaders/glsl120/lighting.fs b/examples/shaders/resources/shaders/glsl120/lighting.fs index 508d0eb14..ef0dd65ac 100644 --- a/examples/shaders/resources/shaders/glsl120/lighting.fs +++ b/examples/shaders/resources/shaders/glsl120/lighting.fs @@ -38,7 +38,7 @@ void main() vec3 viewD = normalize(viewPos - fragPosition); vec3 specular = vec3(0.0); - vec4 tint = colDiffuse * fragColor; + vec4 tint = colDiffuse*fragColor; // NOTE: Implement here your fragment shader code diff --git a/examples/shaders/resources/shaders/glsl120/lightmap.fs b/examples/shaders/resources/shaders/glsl120/lightmap.fs index 93a0609e2..85fc6f7fe 100644 --- a/examples/shaders/resources/shaders/glsl120/lightmap.fs +++ b/examples/shaders/resources/shaders/glsl120/lightmap.fs @@ -16,5 +16,5 @@ void main() vec4 texelColor = texture2D(texture0, fragTexCoord); vec4 texelColor2 = texture2D(texture1, fragTexCoord2); - gl_FragColor = texelColor * texelColor2; + gl_FragColor = texelColor*texelColor2; } diff --git a/examples/shaders/resources/shaders/glsl120/normalmap.fs b/examples/shaders/resources/shaders/glsl120/normalmap.fs index caeb4d5c1..9e7ba5e19 100644 --- a/examples/shaders/resources/shaders/glsl120/normalmap.fs +++ b/examples/shaders/resources/shaders/glsl120/normalmap.fs @@ -32,21 +32,21 @@ void main() normal = texture(normalMap, vec2(fragTexCoord.x, fragTexCoord.y)).rgb; //Transform normal values to the range -1.0 ... 1.0 - normal = normalize(normal * 2.0 - 1.0); + normal = normalize(normal*2.0 - 1.0); //Transform the normal from tangent-space to world-space for lighting calculation - normal = normalize(normal * TBN); + normal = normalize(normal*TBN); } else { normal = normalize(fragNormal); } - vec4 tint = colDiffuse * fragColor; + vec4 tint = colDiffuse*fragColor; vec3 lightColor = vec3(1.0, 1.0, 1.0); float NdotL = max(dot(normal, lightDir), 0.0); - vec3 lightDot = lightColor * NdotL; + vec3 lightDot = lightColor*NdotL; float specCo = 0.0; @@ -54,9 +54,9 @@ void main() specular += specCo; - finalColor = (texelColor * ((tint + vec4(specular, 1.0)) * vec4(lightDot, 1.0))); - finalColor += texelColor * (vec4(1.0, 1.0, 1.0, 1.0) / 40.0) * tint; + finalColor = (texelColor*((tint + vec4(specular, 1.0))*vec4(lightDot, 1.0))); + finalColor += texelColor*(vec4(1.0, 1.0, 1.0, 1.0)/40.0)*tint; // Gamma correction - gl_FragColor = pow(finalColor, vec4(1.0 / 2.2)); + gl_FragColor = pow(finalColor, vec4(1.0/2.2)); } diff --git a/examples/shaders/resources/shaders/glsl120/normalmap.vs b/examples/shaders/resources/shaders/glsl120/normalmap.vs index d8921a68f..69fdc7e0f 100644 --- a/examples/shaders/resources/shaders/glsl120/normalmap.vs +++ b/examples/shaders/resources/shaders/glsl120/normalmap.vs @@ -27,15 +27,15 @@ mat3 inverse(mat3 m) float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2]; float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2]; - float b01 = a22 * a11 - a12 * a21; - float b11 = -a22 * a10 + a12 * a20; - float b21 = a21 * a10 - a11 * a20; + float b01 = a22*a11 - a12*a21; + float b11 = -a22*a10 + a12*a20; + float b21 = a21*a10 - a11*a20; - float det = a00 * b01 + a01 * b11 + a02 * b21; + float det = a00*b01 + a01*b11 + a02*b21; - return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11), - b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10), - b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det; + return mat3(b01, (-a22*a01 + a02*a21), (a12*a01 - a02*a11), + b11, (a22*a00 - a02*a20), (-a12*a00 + a02*a10), + b21, (-a21*a00 + a01*a20), (a11*a00 - a01*a10))/det; } // https://github.com/glslify/glsl-transpose @@ -49,21 +49,21 @@ mat3 transpose(mat3 m) void main() { // Compute binormal from vertex normal and tangent. W component is the tangent handedness - vec3 vertexBinormal = cross(vertexNormal, vertexTangent.xyz) * vertexTangent.w; + vec3 vertexBinormal = cross(vertexNormal, vertexTangent.xyz)*vertexTangent.w; // Compute fragment normal based on normal transformations mat3 normalMatrix = transpose(inverse(mat3(matModel))); // Compute fragment position based on model transformations - fragPosition = vec3(matModel * vec4(vertexPosition, 1.0)); + fragPosition = vec3(matModel*vec4(vertexPosition, 1.0)); //Create TBN matrix for transforming the normal map values from tangent-space to world-space - fragNormal = normalize(normalMatrix * vertexNormal); + fragNormal = normalize(normalMatrix*vertexNormal); - vec3 fragTangent = normalize(normalMatrix * vertexTangent.xyz); - fragTangent = normalize(fragTangent - dot(fragTangent, fragNormal) * fragNormal); + vec3 fragTangent = normalize(normalMatrix*vertexTangent.xyz); + fragTangent = normalize(fragTangent - dot(fragTangent, fragNormal)*fragNormal); - vec3 fragBinormal = normalize(normalMatrix * vertexBinormal); + vec3 fragBinormal = normalize(normalMatrix*vertexBinormal); fragBinormal = cross(fragNormal, fragTangent); TBN = transpose(mat3(fragTangent, fragBinormal, fragNormal)); @@ -72,5 +72,5 @@ void main() fragTexCoord = vertexTexCoord; - gl_Position = mvp * vec4(vertexPosition, 1.0); + gl_Position = mvp*vec4(vertexPosition, 1.0); } diff --git a/examples/shaders/resources/shaders/glsl120/palette_switch.fs b/examples/shaders/resources/shaders/glsl120/palette_switch.fs index ab3f79c78..9c60379bc 100644 --- a/examples/shaders/resources/shaders/glsl120/palette_switch.fs +++ b/examples/shaders/resources/shaders/glsl120/palette_switch.fs @@ -13,15 +13,15 @@ uniform ivec3 palette[colors]; void main() { // Texel color fetching from texture sampler - vec4 texelColor = texture(texture0, fragTexCoord) * fragColor; + vec4 texelColor = texture(texture0, fragTexCoord)*fragColor; // Convert the (normalized) texel color RED component (GB would work, too) - // to the palette index by scaling up from [0, 1] to [0, 255]. - int index = int(texelColor.r * 255.0); + // to the palette index by scaling up from [0, 1] to [0, 255] + int index = int(texelColor.r*255.0); ivec3 color = palette[index]; // Calculate final fragment color. Note that the palette color components // are defined in the range [0, 255] and need to be normalized to [0, 1] - // for OpenGL to work. - gl_FragColor = vec4(color / 255.0, texelColor.a); + // for OpenGL to work + gl_FragColor = vec4(color/255.0, texelColor.a); } diff --git a/examples/shaders/resources/shaders/glsl120/pbr.vs b/examples/shaders/resources/shaders/glsl120/pbr.vs index e9750a60a..4c61012cc 100644 --- a/examples/shaders/resources/shaders/glsl120/pbr.vs +++ b/examples/shaders/resources/shaders/glsl120/pbr.vs @@ -52,7 +52,7 @@ mat3 transpose(mat3 m) void main() { // Compute binormal from vertex normal and tangent - vec3 vertexBinormal = cross(vertexNormal, vertexTangent.xyz) * vertexTangent.w; + vec3 vertexBinormal = cross(vertexNormal, vertexTangent.xyz)*vertexTangent.w; // Compute fragment normal based on normal transformations mat3 normalMatrix = transpose(inverse(mat3(matModel))); diff --git a/examples/shaders/resources/shaders/glsl120/raymarching.fs b/examples/shaders/resources/shaders/glsl120/raymarching.fs index efe4fa108..6cc27e9d7 100644 --- a/examples/shaders/resources/shaders/glsl120/raymarching.fs +++ b/examples/shaders/resources/shaders/glsl120/raymarching.fs @@ -30,7 +30,7 @@ uniform vec2 resolution; // SOFTWARE. // A list of useful distance function to simple primitives, and an example on how to -// do some interesting boolean operations, repetition and displacement. +// do some interesting boolean operations, repetition and displacement // // More info here: http://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm @@ -38,38 +38,38 @@ uniform vec2 resolution; //------------------------------------------------------------------ -float sdPlane( vec3 p ) +float sdPlane(vec3 p) { return p.y; } -float sdSphere( vec3 p, float s ) +float sdSphere(vec3 p, float s) { return length(p)-s; } -float sdBox( vec3 p, vec3 b ) +float sdBox(vec3 p, vec3 b) { vec3 d = abs(p) - b; return min(max(d.x,max(d.y,d.z)),0.0) + length(max(d,0.0)); } -float sdEllipsoid( in vec3 p, in vec3 r ) +float sdEllipsoid(in vec3 p, in vec3 r) { - return (length( p/r ) - 1.0) * min(min(r.x,r.y),r.z); + return (length(p/r) - 1.0)*min(min(r.x,r.y),r.z); } -float udRoundBox( vec3 p, vec3 b, float r ) +float udRoundBox(vec3 p, vec3 b, float r) { return length(max(abs(p)-b,0.0))-r; } -float sdTorus( vec3 p, vec2 t ) +float sdTorus(vec3 p, vec2 t) { - return length( vec2(length(p.xz)-t.x,p.y) )-t.y; + return length(vec2(length(p.xz)-t.x,p.y))-t.y; } -float sdHexPrism( vec3 p, vec2 h ) +float sdHexPrism(vec3 p, vec2 h) { vec3 q = abs(p); #if 0 @@ -81,24 +81,24 @@ float sdHexPrism( vec3 p, vec2 h ) #endif } -float sdCapsule( vec3 p, vec3 a, vec3 b, float r ) +float sdCapsule(vec3 p, vec3 a, vec3 b, float r) { vec3 pa = p-a, ba = b-a; - float h = clamp( dot(pa,ba)/dot(ba,ba), 0.0, 1.0 ); - return length( pa - ba*h ) - r; + float h = clamp(dot(pa,ba)/dot(ba,ba), 0.0, 1.0); + return length(pa - ba*h) - r; } -float sdEquilateralTriangle( in vec2 p ) +float sdEquilateralTriangle( in vec2 p) { const float k = sqrt(3.0); p.x = abs(p.x) - 1.0; p.y = p.y + 1.0/k; - if( p.x + k*p.y > 0.0 ) p = vec2( p.x - k*p.y, -k*p.x - p.y )/2.0; - p.x += 2.0 - 2.0*clamp( (p.x+2.0)/2.0, 0.0, 1.0 ); + if (p.x + k*p.y > 0.0) p = vec2(p.x - k*p.y, -k*p.x - p.y)/2.0; + p.x += 2.0 - 2.0*clamp((p.x+2.0)/2.0, 0.0, 1.0); return -length(p)*sign(p.y); } -float sdTriPrism( vec3 p, vec2 h ) +float sdTriPrism(vec3 p, vec2 h) { vec3 q = abs(p); float d1 = q.z-h.y; @@ -113,95 +113,95 @@ float sdTriPrism( vec3 p, vec2 h ) return length(max(vec2(d1,d2),0.0)) + min(max(d1,d2), 0.); } -float sdCylinder( vec3 p, vec2 h ) +float sdCylinder(vec3 p, vec2 h) { vec2 d = abs(vec2(length(p.xz),p.y)) - h; return min(max(d.x,d.y),0.0) + length(max(d,0.0)); } -float sdCone( in vec3 p, in vec3 c ) +float sdCone(in vec3 p, in vec3 c) { - vec2 q = vec2( length(p.xz), p.y ); + vec2 q = vec2(length(p.xz), p.y); float d1 = -q.y-c.z; - float d2 = max( dot(q,c.xy), q.y); + float d2 = max(dot(q,c.xy), q.y); return length(max(vec2(d1,d2),0.0)) + min(max(d1,d2), 0.); } -float sdConeSection( in vec3 p, in float h, in float r1, in float r2 ) +float sdConeSection(in vec3 p, in float h, in float r1, in float r2) { float d1 = -p.y - h; float q = p.y - h; float si = 0.5*(r1-r2)/h; - float d2 = max( sqrt( dot(p.xz,p.xz)*(1.0-si*si)) + q*si - r2, q ); + float d2 = max(sqrt(dot(p.xz,p.xz)*(1.0-si*si)) + q*si - r2, q); return length(max(vec2(d1,d2),0.0)) + min(max(d1,d2), 0.); } -float sdPryamid4(vec3 p, vec3 h ) // h = { cos a, sin a, height } +float sdPryamid4(vec3 p, vec3 h) // h = { cos a, sin a, height } { // Tetrahedron = Octahedron - Cube - float box = sdBox( p - vec3(0,-2.0*h.z,0), vec3(2.0*h.z) ); + float box = sdBox(p - vec3(0,-2.0*h.z,0), vec3(2.0*h.z)); float d = 0.0; - d = max( d, abs( dot(p, vec3( -h.x, h.y, 0 )) )); - d = max( d, abs( dot(p, vec3( h.x, h.y, 0 )) )); - d = max( d, abs( dot(p, vec3( 0, h.y, h.x )) )); - d = max( d, abs( dot(p, vec3( 0, h.y,-h.x )) )); + d = max(d, abs(dot(p, vec3(-h.x, h.y, 0)))); + d = max(d, abs(dot(p, vec3( h.x, h.y, 0)))); + d = max(d, abs(dot(p, vec3( 0, h.y, h.x)))); + d = max(d, abs(dot(p, vec3( 0, h.y,-h.x)))); float octa = d - h.z; return max(-box,octa); // Subtraction } -float length2( vec2 p ) +float length2(vec2 p) { - return sqrt( p.x*p.x + p.y*p.y ); + return sqrt(p.x*p.x + p.y*p.y); } -float length6( vec2 p ) +float length6(vec2 p) { p = p*p*p; p = p*p; - return pow( p.x + p.y, 1.0/6.0 ); + return pow(p.x + p.y, 1.0/6.0); } -float length8( vec2 p ) +float length8(vec2 p) { p = p*p; p = p*p; p = p*p; - return pow( p.x + p.y, 1.0/8.0 ); + return pow(p.x + p.y, 1.0/8.0); } -float sdTorus82( vec3 p, vec2 t ) +float sdTorus82(vec3 p, vec2 t) { vec2 q = vec2(length2(p.xz)-t.x,p.y); return length8(q)-t.y; } -float sdTorus88( vec3 p, vec2 t ) +float sdTorus88(vec3 p, vec2 t) { vec2 q = vec2(length8(p.xz)-t.x,p.y); return length8(q)-t.y; } -float sdCylinder6( vec3 p, vec2 h ) +float sdCylinder6(vec3 p, vec2 h) { - return max( length6(p.xz)-h.x, abs(p.y)-h.y ); + return max(length6(p.xz)-h.x, abs(p.y)-h.y); } //------------------------------------------------------------------ -float opS( float d1, float d2 ) +float opS(float d1, float d2) { return max(-d2,d1); } -vec2 opU( vec2 d1, vec2 d2 ) +vec2 opU(vec2 d1, vec2 d2) { return (d1.x0.0 ) tmax = min( tmax, tp1 ); - float tp2 = (1.6-ro.y)/rd.y; if( tp2>0.0 ) { if( ro.y>1.6 ) tmin = max( tmin, tp2 ); - else tmax = min( tmax, tp2 ); } + float tp1 = (0.0-ro.y)/rd.y; if (tp1>0.0) tmax = min(tmax, tp1); + float tp2 = (1.6-ro.y)/rd.y; if (tp2>0.0) { if (ro.y>1.6) tmin = max(tmin, tp2); + else tmax = min(tmax, tp2); } #endif float t = tmin; float m = -1.0; - for( int i=0; i<64; i++ ) + for (int i=0; i<64; i++) { float precis = 0.0005*t; - vec2 res = map( ro+rd*t ); - if( res.xtmax ) break; + vec2 res = map(ro+rd*t); + if (res.xtmax) break; t += res.x; m = res.y; } - if( t>tmax ) m=-1.0; - return vec2( t, m ); + if (t>tmax) m=-1.0; + return vec2(t, m); } -float calcSoftshadow( in vec3 ro, in vec3 rd, in float mint, in float tmax ) +float calcSoftshadow(in vec3 ro, in vec3 rd, in float mint, in float tmax) { float res = 1.0; float t = mint; - for( int i=0; i<16; i++ ) + for (int i=0; i<16; i++) { - float h = map( ro + rd*t ).x; - res = min( res, 8.0*h/t ); - t += clamp( h, 0.02, 0.10 ); - if( h<0.001 || t>tmax ) break; + float h = map(ro + rd*t).x; + res = min(res, 8.0*h/t); + t += clamp(h, 0.02, 0.10); + if (h<0.001 || t>tmax) break; } - return clamp( res, 0.0, 1.0 ); + return clamp(res, 0.0, 1.0); } -vec3 calcNormal( in vec3 pos ) +vec3 calcNormal(in vec3 pos) { vec2 e = vec2(1.0,-1.0)*0.5773*0.0005; - return normalize( e.xyy*map( pos + e.xyy ).x + - e.yyx*map( pos + e.yyx ).x + - e.yxy*map( pos + e.yxy ).x + - e.xxx*map( pos + e.xxx ).x ); + return normalize(e.xyy*map(pos + e.xyy).x + + e.yyx*map(pos + e.yyx).x + + e.yxy*map(pos + e.yxy).x + + e.xxx*map(pos + e.xxx).x); /* - vec3 eps = vec3( 0.0005, 0.0, 0.0 ); + vec3 eps = vec3(0.0005, 0.0, 0.0); vec3 nor = vec3( map(pos+eps.xyy).x - map(pos-eps.xyy).x, map(pos+eps.yxy).x - map(pos-eps.yxy).x, - map(pos+eps.yyx).x - map(pos-eps.yyx).x ); + map(pos+eps.yyx).x - map(pos-eps.yyx).x); return normalize(nor); */ } -float calcAO( in vec3 pos, in vec3 nor ) +float calcAO(in vec3 pos, in vec3 nor) { float occ = 0.0; float sca = 1.0; - for( int i=0; i<5; i++ ) + for (int i=0; i<5; i++) { float hr = 0.01 + 0.12*float(i)/4.0; - vec3 aopos = nor * hr + pos; - float dd = map( aopos ).x; + vec3 aopos = nor*hr + pos; + float dd = map(aopos).x; occ += -(dd-hr)*sca; sca *= 0.95; } - return clamp( 1.0 - 3.0*occ, 0.0, 1.0 ); + return clamp(1.0 - 3.0*occ, 0.0, 1.0); } // http://iquilezles.org/www/articles/checkerfiltering/checkerfiltering.htm -float checkersGradBox( in vec2 p ) +float checkersGradBox(in vec2 p) { // filter kernel vec2 w = fwidth(p) + 0.001; @@ -324,43 +324,43 @@ float checkersGradBox( in vec2 p ) return 0.5 - 0.5*i.x*i.y; } -vec3 render( in vec3 ro, in vec3 rd ) +vec3 render(in vec3 ro, in vec3 rd) { vec3 col = vec3(0.7, 0.9, 1.0) +rd.y*0.8; vec2 res = castRay(ro,rd); float t = res.x; float m = res.y; - if( m>-0.5 ) + if (m>-0.5) { vec3 pos = ro + t*rd; - vec3 nor = calcNormal( pos ); - vec3 ref = reflect( rd, nor ); + vec3 nor = calcNormal(pos); + vec3 ref = reflect(rd, nor); // material - col = 0.45 + 0.35*sin( vec3(0.05,0.08,0.10)*(m-1.0) ); - if( m<1.5 ) + col = 0.45 + 0.35*sin(vec3(0.05,0.08,0.10)*(m-1.0)); + if (m<1.5) { - float f = checkersGradBox( 5.0*pos.xz ); + float f = checkersGradBox(5.0*pos.xz); col = 0.3 + f*vec3(0.1); } // lighting - float occ = calcAO( pos, nor ); - vec3 lig = normalize( vec3(cos(-0.4 * runTime), sin(0.7 * runTime), -0.6) ); - vec3 hal = normalize( lig-rd ); - float amb = clamp( 0.5+0.5*nor.y, 0.0, 1.0 ); - float dif = clamp( dot( nor, lig ), 0.0, 1.0 ); - float bac = clamp( dot( nor, normalize(vec3(-lig.x,0.0,-lig.z))), 0.0, 1.0 )*clamp( 1.0-pos.y,0.0,1.0); - float dom = smoothstep( -0.1, 0.1, ref.y ); - float fre = pow( clamp(1.0+dot(nor,rd),0.0,1.0), 2.0 ); + float occ = calcAO(pos, nor); + vec3 lig = normalize(vec3(cos(-0.4*runTime), sin(0.7*runTime), -0.6)); + vec3 hal = normalize(lig-rd); + float amb = clamp(0.5+0.5*nor.y, 0.0, 1.0); + float dif = clamp(dot(nor, lig), 0.0, 1.0); + float bac = clamp(dot(nor, normalize(vec3(-lig.x,0.0,-lig.z))), 0.0, 1.0)*clamp(1.0-pos.y,0.0,1.0); + float dom = smoothstep(-0.1, 0.1, ref.y); + float fre = pow(clamp(1.0+dot(nor,rd),0.0,1.0), 2.0); - dif *= calcSoftshadow( pos, lig, 0.02, 2.5 ); - dom *= calcSoftshadow( pos, ref, 0.02, 2.5 ); + dif *= calcSoftshadow(pos, lig, 0.02, 2.5); + dom *= calcSoftshadow(pos, ref, 0.02, 2.5); - float spe = pow( clamp( dot( nor, hal ), 0.0, 1.0 ),16.0)* + float spe = pow(clamp(dot(nor, hal), 0.0, 1.0),16.0)* dif * - (0.04 + 0.96*pow( clamp(1.0+dot(hal,rd),0.0,1.0), 5.0 )); + (0.04 + 0.96*pow(clamp(1.0+dot(hal,rd),0.0,1.0), 5.0)); vec3 lin = vec3(0.0); lin += 1.30*dif*vec3(1.00,0.80,0.55); @@ -371,51 +371,51 @@ vec3 render( in vec3 ro, in vec3 rd ) col = col*lin; col += 10.00*spe*vec3(1.00,0.90,0.70); - col = mix( col, vec3(0.8,0.9,1.0), 1.0-exp( -0.0002*t*t*t ) ); + col = mix(col, vec3(0.8,0.9,1.0), 1.0-exp(-0.0002*t*t*t)); } - return vec3( clamp(col,0.0,1.0) ); + return vec3(clamp(col,0.0,1.0)); } -mat3 setCamera( in vec3 ro, in vec3 ta, float cr ) +mat3 setCamera(in vec3 ro, in vec3 ta, float cr) { vec3 cw = normalize(ta-ro); vec3 cp = vec3(sin(cr), cos(cr),0.0); - vec3 cu = normalize( cross(cw,cp) ); - vec3 cv = normalize( cross(cu,cw) ); - return mat3( cu, cv, cw ); + vec3 cu = normalize(cross(cw,cp)); + vec3 cv = normalize(cross(cu,cw)); + return mat3(cu, cv, cw); } void main() { vec3 tot = vec3(0.0); #if AA>1 - for( int m=0; m1 @@ -423,5 +423,5 @@ void main() tot /= float(AA*AA); #endif - gl_FragColor = vec4( tot, 1.0 ); + gl_FragColor = vec4(tot, 1.0); } diff --git a/examples/shaders/resources/shaders/glsl120/rounded_rectangle.fs b/examples/shaders/resources/shaders/glsl120/rounded_rectangle.fs index eb96c28d3..627e7b1b6 100644 --- a/examples/shaders/resources/shaders/glsl120/rounded_rectangle.fs +++ b/examples/shaders/resources/shaders/glsl120/rounded_rectangle.fs @@ -1,7 +1,7 @@ -// Note: SDF by Iñigo Quilez is licensed under MIT License - #version 120 +// NOTE: SDF by Iñigo Quilez, licensed under MIT License + // Input vertex attributes (from vertex shader) varying vec2 fragTexCoord; varying vec4 fragColor; diff --git a/examples/shaders/resources/shaders/glsl120/scanlines.fs b/examples/shaders/resources/shaders/glsl120/scanlines.fs index 4125ed734..c9abc7856 100644 --- a/examples/shaders/resources/shaders/glsl120/scanlines.fs +++ b/examples/shaders/resources/shaders/glsl120/scanlines.fs @@ -33,7 +33,7 @@ void main() fragColor = color; */ // Scanlines method 2 - float globalPos = (fragTexCoord.y + offset) * frequency; + float globalPos = (fragTexCoord.y + offset)*frequency; float wavePos = cos((fract(globalPos) - 0.5)*3.14); vec4 color = texture2D(texture0, fragTexCoord); diff --git a/examples/shaders/resources/shaders/glsl120/shadowmap.fs b/examples/shaders/resources/shaders/glsl120/shadowmap.fs index 84f318591..354c4a2c5 100644 --- a/examples/shaders/resources/shaders/glsl120/shadowmap.fs +++ b/examples/shaders/resources/shaders/glsl120/shadowmap.fs @@ -52,7 +52,7 @@ void main() vec2 sampleCoords = fragPosLightSpace.xy; float curDepth = fragPosLightSpace.z; - // Slope-scale depth bias: depth biasing reduces "shadow acne" artifacts, where dark stripes appear all over the scene. + // Slope-scale depth bias: depth biasing reduces "shadow acne" artifacts, where dark stripes appear all over the scene // The solution is adding a small bias to the depth // In this case, the bias is proportional to the slope of the surface, relative to the light float bias = max(0.0008*(1.0 - dot(normal, l)), 0.00008); @@ -61,8 +61,8 @@ void main() // PCF (percentage-closer filtering) algorithm: // Instead of testing if just one point is closer to the current point, - // we test the surrounding points as well. - // This blurs shadow edges, hiding aliasing artifacts. + // we test the surrounding points as well + // This blurs shadow edges, hiding aliasing artifacts vec2 texelSize = vec2(1.0/float(shadowMapResolution)); for (int x = -1; x <= 1; x++) { diff --git a/examples/shaders/resources/shaders/glsl120/sobel.fs b/examples/shaders/resources/shaders/glsl120/sobel.fs index bfa19062b..c17cfd8a8 100644 --- a/examples/shaders/resources/shaders/glsl120/sobel.fs +++ b/examples/shaders/resources/shaders/glsl120/sobel.fs @@ -18,10 +18,10 @@ void main() vec4 horizEdge = vec4(0.0); horizEdge -= texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y - y))*1.0; - horizEdge -= texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y ))*2.0; + horizEdge -= texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y ))*2.0; horizEdge -= texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y + y))*1.0; horizEdge += texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y - y))*1.0; - horizEdge += texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y ))*2.0; + horizEdge += texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y ))*2.0; horizEdge += texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y + y))*1.0; vec4 vertEdge = vec4(0.0); diff --git a/examples/shaders/resources/shaders/glsl330/cross_stitching.fs b/examples/shaders/resources/shaders/glsl330/cross_stitching.fs index 7c76cf758..7c4bc9b53 100644 --- a/examples/shaders/resources/shaders/glsl330/cross_stitching.fs +++ b/examples/shaders/resources/shaders/glsl330/cross_stitching.fs @@ -25,8 +25,8 @@ vec4 PostFX(sampler2D tex, vec2 uv) { vec4 c = vec4(0.0); float size = stitchingSize; - vec2 cPos = uv * vec2(renderWidth, renderHeight); - vec2 tlPos = floor(cPos / vec2(size, size)); + vec2 cPos = uv*vec2(renderWidth, renderHeight); + vec2 tlPos = floor(cPos/vec2(size, size)); tlPos *= size; int remX = int(mod(cPos.x, size)); @@ -40,11 +40,11 @@ vec4 PostFX(sampler2D tex, vec2 uv) if ((remX == remY) || (((int(cPos.x) - int(blPos.x)) == (int(blPos.y) - int(cPos.y))))) { if (invert == 1) c = vec4(0.2, 0.15, 0.05, 1.0); - else c = texture(tex, tlPos * vec2(1.0/renderWidth, 1.0/renderHeight)) * 1.4; + else c = texture(tex, tlPos*vec2(1.0/renderWidth, 1.0/renderHeight))*1.4; } else { - if (invert == 1) c = texture(tex, tlPos * vec2(1.0/renderWidth, 1.0/renderHeight)) * 1.4; + if (invert == 1) c = texture(tex, tlPos*vec2(1.0/renderWidth, 1.0/renderHeight))*1.4; else c = vec4(0.0, 0.0, 0.0, 1.0); } diff --git a/examples/shaders/resources/shaders/glsl330/cubes_panning.fs b/examples/shaders/resources/shaders/glsl330/cubes_panning.fs index 1d75e4e8c..d58b7b196 100644 --- a/examples/shaders/resources/shaders/glsl330/cubes_panning.fs +++ b/examples/shaders/resources/shaders/glsl330/cubes_panning.fs @@ -17,7 +17,7 @@ float angle = 0.0; vec2 VectorRotateTime(vec2 v, float speed) { float time = uTime*speed; - float localTime = fract(time); // The time domain this works on is 1 sec. + float localTime = fract(time); // The time domain this works on is 1 sec if ((localTime >= 0.0) && (localTime < 0.25)) angle = 0.0; else if ((localTime >= 0.25) && (localTime < 0.50)) angle = PI/4*sin(2*PI*localTime - PI/2); diff --git a/examples/shaders/resources/shaders/glsl330/deferred_shading.fs b/examples/shaders/resources/shaders/glsl330/deferred_shading.fs index c9c6a313f..660db3244 100644 --- a/examples/shaders/resources/shaders/glsl330/deferred_shading.fs +++ b/examples/shaders/resources/shaders/glsl330/deferred_shading.fs @@ -10,9 +10,9 @@ uniform sampler2D gAlbedoSpec; struct Light { int enabled; - int type; // Unused in this demo. + int type; // Unused in this demo vec3 position; - vec3 target; // Unused in this demo. + vec3 target; // Unused in this demo vec4 color; }; @@ -29,22 +29,22 @@ void main() { vec3 albedo = texture(gAlbedoSpec, texCoord).rgb; float specular = texture(gAlbedoSpec, texCoord).a; - vec3 ambient = albedo * vec3(0.1f); + vec3 ambient = albedo*vec3(0.1f); vec3 viewDirection = normalize(viewPosition - fragPosition); - for(int i = 0; i < NR_LIGHTS; ++i) + for (int i = 0; i < NR_LIGHTS; ++i) { - if(lights[i].enabled == 0) continue; + if (lights[i].enabled == 0) continue; vec3 lightDirection = lights[i].position - fragPosition; - vec3 diffuse = max(dot(normal, lightDirection), 0.0) * albedo * lights[i].color.xyz; + vec3 diffuse = max(dot(normal, lightDirection), 0.0)*albedo*lights[i].color.xyz; vec3 halfwayDirection = normalize(lightDirection + viewDirection); float spec = pow(max(dot(normal, halfwayDirection), 0.0), 32.0); - vec3 specular = specular * spec * lights[i].color.xyz; + vec3 specular = specular*spec*lights[i].color.xyz; // Attenuation float distance = length(lights[i].position - fragPosition); - float attenuation = 1.0 / (1.0 + LINEAR * distance + QUADRATIC * distance * distance); + float attenuation = 1.0/(1.0 + LINEAR*distance + QUADRATIC*distance*distance); diffuse *= attenuation; specular *= attenuation; ambient += diffuse + specular; diff --git a/examples/shaders/resources/shaders/glsl330/eratosthenes.fs b/examples/shaders/resources/shaders/glsl330/eratosthenes.fs index 644e38d8c..3a5b7fe47 100644 --- a/examples/shaders/resources/shaders/glsl330/eratosthenes.fs +++ b/examples/shaders/resources/shaders/glsl330/eratosthenes.fs @@ -5,12 +5,12 @@ The Sieve of Eratosthenes -- a simple shader by ProfJski An early prime number sieve: https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes - The screen is divided into a square grid of boxes, each representing an integer value. - Each integer is tested to see if it is a prime number. Primes are colored white. - Non-primes are colored with a color that indicates the smallest factor which evenly divdes our integer. + The screen is divided into a square grid of boxes, each representing an integer value + Each integer is tested to see if it is a prime number. Primes are colored white + Non-primes are colored with a color that indicates the smallest factor which evenly divides our integer - You can change the scale variable to make a larger or smaller grid. - Total number of integers displayed = scale squared, so scale = 100 tests the first 10,000 integers. + You can change the scale variable to make a larger or smaller grid + Total number of integers displayed = scale squared, so scale = 100 tests the first 10,000 integers WARNING: If you make scale too large, your GPU may bog down! @@ -39,7 +39,7 @@ vec4 Colorizer(float counter, float maxSize) void main() { vec4 color = vec4(1.0); - float scale = 1000.0; // Makes 100x100 square grid. Change this variable to make a smaller or larger grid. + float scale = 1000.0; // Makes 100x100 square grid, change this variable to make a smaller or larger grid int value = int(scale*floor(fragTexCoord.y*scale)+floor(fragTexCoord.x*scale)); // Group pixels into boxes representing integer values if ((value == 0) || (value == 1) || (value == 2)) finalColor = vec4(1.0); diff --git a/examples/shaders/resources/shaders/glsl330/fisheye.fs b/examples/shaders/resources/shaders/glsl330/fisheye.fs index 51af4ed88..be81aeb23 100644 --- a/examples/shaders/resources/shaders/glsl330/fisheye.fs +++ b/examples/shaders/resources/shaders/glsl330/fisheye.fs @@ -14,22 +14,22 @@ const float PI = 3.1415926535; void main() { float aperture = 178.0; - float apertureHalf = 0.5 * aperture * (PI / 180.0); + float apertureHalf = 0.5*aperture*(PI/180.0); float maxFactor = sin(apertureHalf); vec2 uv = vec2(0); - vec2 xy = 2.0 * fragTexCoord.xy - 1.0; + vec2 xy = 2.0*fragTexCoord.xy - 1.0; float d = length(xy); if (d < (2.0 - maxFactor)) { - d = length(xy * maxFactor); - float z = sqrt(1.0 - d * d); - float r = atan(d, z) / PI; + d = length(xy*maxFactor); + float z = sqrt(1.0 - d*d); + float r = atan(d, z)/PI; float phi = atan(xy.y, xy.x); - uv.x = r * cos(phi) + 0.5; - uv.y = r * sin(phi) + 0.5; + uv.x = r*cos(phi) + 0.5; + uv.y = r*sin(phi) + 0.5; } else { diff --git a/examples/shaders/resources/shaders/glsl330/gbuffer.vs b/examples/shaders/resources/shaders/glsl330/gbuffer.vs index 7d264ba64..5af4448e6 100644 --- a/examples/shaders/resources/shaders/glsl330/gbuffer.vs +++ b/examples/shaders/resources/shaders/glsl330/gbuffer.vs @@ -13,12 +13,12 @@ uniform mat4 matProjection; void main() { - vec4 worldPos = matModel * vec4(vertexPosition, 1.0); + vec4 worldPos = matModel*vec4(vertexPosition, 1.0); fragPosition = worldPos.xyz; fragTexCoord = vertexTexCoord; mat3 normalMatrix = transpose(inverse(mat3(matModel))); - fragNormal = normalMatrix * vertexNormal; + fragNormal = normalMatrix*vertexNormal; - gl_Position = matProjection * matView * worldPos; + gl_Position = matProjection*matView*worldPos; } diff --git a/examples/shaders/resources/shaders/glsl330/hybrid_raster.fs b/examples/shaders/resources/shaders/glsl330/hybrid_raster.fs index ffd1b3648..12409d137 100644 --- a/examples/shaders/resources/shaders/glsl330/hybrid_raster.fs +++ b/examples/shaders/resources/shaders/glsl330/hybrid_raster.fs @@ -18,5 +18,5 @@ void main() vec4 texelColor = texture(texture0, fragTexCoord); gl_FragColor = texelColor*colDiffuse*fragColor; - gl_FragDepth = gl_FragCoord.z; + gl_FragDepth = gl_FragCoord.z; } \ No newline at end of file diff --git a/examples/shaders/resources/shaders/glsl330/hybrid_raymarch.fs b/examples/shaders/resources/shaders/glsl330/hybrid_raymarch.fs index 5b66dd71c..2edb625ad 100644 --- a/examples/shaders/resources/shaders/glsl330/hybrid_raymarch.fs +++ b/examples/shaders/resources/shaders/glsl330/hybrid_raymarch.fs @@ -22,14 +22,14 @@ float CalcDepth(in vec3 rd, in float Idist){ } // https://iquilezles.org/articles/distfunctions/ -float sdHorseshoe( in vec3 p, in vec2 c, in float r, in float le, vec2 w ) +float sdHorseshoe(in vec3 p, in vec2 c, in float r, in float le, vec2 w) { p.x = abs(p.x); float l = length(p.xy); p.xy = mat2(-c.x, c.y, c.y, c.x)*p.xy; p.xy = vec2((p.y>0.0 || p.x>0.0)?p.x:l*sign(-c.x), - (p.x>0.0)?p.y:l ); + (p.x>0.0)?p.y:l); p.xy = vec2(p.x,abs(p.y-r))-vec2(le,0.0); vec2 q = vec2(length(max(p.xy,0.0)) + min(0.0,max(p.x,p.y)),p.z); @@ -40,48 +40,48 @@ float sdHorseshoe( in vec3 p, in vec2 c, in float r, in float le, vec2 w ) // r = sphere's radius // h = cutting's plane's position // t = thickness -float sdSixWayCutHollowSphere( vec3 p, float r, float h, float t ) +float sdSixWayCutHollowSphere(vec3 p, float r, float h, float t) { // Six way symetry Transformation vec3 ap = abs(p); - if(ap.x < max(ap.y, ap.z)){ - if(ap.y < ap.z) ap.xz = ap.zx; + if (ap.x < max(ap.y, ap.z)){ + if (ap.y < ap.z) ap.xz = ap.zx; else ap.xy = ap.yx; } - vec2 q = vec2( length(ap.yz), ap.x ); + vec2 q = vec2(length(ap.yz), ap.x); float w = sqrt(r*r-h*h); return ((h*q.x0.0 ) + if (tp1>0.0) { - tmax = min( tmax, tp1 ); - res = vec2( tp1, 1.0 ); + tmax = min(tmax, tp1); + res = vec2(tp1, 1.0); } float t = tmin; - for( int i=0; i<70 ; i++ ) + for (int i=0; i<70 ; i++) { - if(t>tmax) break; - vec2 h = map( ro+rd*t ); - if( abs(h.x)<(0.0001*t) ) + if (t>tmax) break; + vec2 h = map(ro+rd*t); + if (abs(h.x)<(0.0001*t)) { res = vec2(t,h.y); break; @@ -113,54 +113,54 @@ vec2 raycast( in vec3 ro, in vec3 rd ){ // https://iquilezles.org/articles/rmshadows -float calcSoftshadow( in vec3 ro, in vec3 rd, in float mint, in float tmax ) +float calcSoftshadow(in vec3 ro, in vec3 rd, in float mint, in float tmax) { // bounding volume - float tp = (0.8-ro.y)/rd.y; if( tp>0.0 ) tmax = min( tmax, tp ); + float tp = (0.8-ro.y)/rd.y; if (tp>0.0) tmax = min(tmax, tp); float res = 1.0; float t = mint; - for( int i=ZERO; i<24; i++ ) + for (int i=ZERO; i<24; i++) { - float h = map( ro + rd*t ).x; + float h = map(ro + rd*t).x; float s = clamp(8.0*h/t,0.0,1.0); - res = min( res, s ); - t += clamp( h, 0.01, 0.2 ); - if( res<0.004 || t>tmax ) break; + res = min(res, s); + t += clamp(h, 0.01, 0.2); + if (res<0.004 || t>tmax) break; } - res = clamp( res, 0.0, 1.0 ); + res = clamp(res, 0.0, 1.0); return res*res*(3.0-2.0*res); } // https://iquilezles.org/articles/normalsSDF -vec3 calcNormal( in vec3 pos ) +vec3 calcNormal(in vec3 pos) { - vec2 e = vec2(1.0,-1.0)*0.5773*0.0005; - return normalize( e.xyy*map( pos + e.xyy ).x + - e.yyx*map( pos + e.yyx ).x + - e.yxy*map( pos + e.yxy ).x + - e.xxx*map( pos + e.xxx ).x ); + vec2 e = vec2(1.0, -1.0)*0.5773*0.0005; + return normalize(e.xyy*map(pos + e.xyy).x + + e.yyx*map(pos + e.yyx).x + + e.yxy*map(pos + e.yxy).x + + e.xxx*map(pos + e.xxx).x); } // https://iquilezles.org/articles/nvscene2008/rwwtt.pdf -float calcAO( in vec3 pos, in vec3 nor ) +float calcAO(in vec3 pos, in vec3 nor) { - float occ = 0.0; + float occ = 0.0; float sca = 1.0; - for( int i=ZERO; i<5; i++ ) + for (int i=ZERO; i<5; i++) { float h = 0.01 + 0.12*float(i)/4.0; - float d = map( pos + h*nor ).x; + float d = map(pos + h*nor).x; occ += (h-d)*sca; sca *= 0.95; - if( occ>0.35 ) break; + if (occ>0.35) break; } - return clamp( 1.0 - 3.0*occ, 0.0, 1.0 ) * (0.5+0.5*nor.y); + return clamp(1.0 - 3.0*occ, 0.0, 1.0)*(0.5+0.5*nor.y); } // https://iquilezles.org/articles/checkerfiltering -float checkersGradBox( in vec2 p ) +float checkersGradBox(in vec2 p) { // filter kernel vec2 w = fwidth(p) + 0.001; @@ -171,7 +171,7 @@ float checkersGradBox( in vec2 p ) } // https://www.shadertoy.com/view/tdS3DG -vec4 render( in vec3 ro, in vec3 rd) +vec4 render(in vec3 ro, in vec3 rd) { // background vec3 col = vec3(0.7, 0.7, 0.9) - max(rd.y,0.0)*0.3; @@ -179,37 +179,37 @@ vec4 render( in vec3 ro, in vec3 rd) // raycast scene vec2 res = raycast(ro,rd); float t = res.x; - float m = res.y; - if( m>-0.5 ) + float m = res.y; + if (m>-0.5) { vec3 pos = ro + t*rd; - vec3 nor = (m<1.5) ? vec3(0.0,1.0,0.0) : calcNormal( pos ); - vec3 ref = reflect( rd, nor ); + vec3 nor = (m<1.5) ? vec3(0.0,1.0,0.0) : calcNormal(pos); + vec3 ref = reflect(rd, nor); // material - col = 0.2 + 0.2*sin( m*2.0 + vec3(0.0,1.0,2.0) ); + col = 0.2 + 0.2*sin(m*2.0 + vec3(0.0,1.0,2.0)); float ks = 1.0; - if( m<1.5 ) + if (m<1.5) { - float f = checkersGradBox( 3.0*pos.xz); + float f = checkersGradBox(3.0*pos.xz); col = 0.15 + f*vec3(0.05); ks = 0.4; } // lighting - float occ = calcAO( pos, nor ); + float occ = calcAO(pos, nor); - vec3 lin = vec3(0.0); + vec3 lin = vec3(0.0); // sun { - vec3 lig = normalize( vec3(-0.5, 0.4, -0.6) ); - vec3 hal = normalize( lig-rd ); - float dif = clamp( dot( nor, lig ), 0.0, 1.0 ); - //if( dif>0.0001 ) - dif *= calcSoftshadow( pos, lig, 0.02, 2.5 ); - float spe = pow( clamp( dot( nor, hal ), 0.0, 1.0 ),16.0); + vec3 lig = normalize(vec3(-0.5, 0.4, -0.6)); + vec3 hal = normalize(lig-rd); + float dif = clamp(dot(nor, lig), 0.0, 1.0); + //if (dif>0.0001) + dif *= calcSoftshadow(pos, lig, 0.02, 2.5); + float spe = pow(clamp(dot(nor, hal), 0.0, 1.0),16.0); spe *= dif; spe *= 0.04+0.96*pow(clamp(1.0-dot(hal,lig),0.0,1.0),5.0); //spe *= 0.04+0.96*pow(clamp(1.0-sqrt(0.5*(1.0-dot(rd,lig))),0.0,1.0),5.0); @@ -218,35 +218,35 @@ vec4 render( in vec3 ro, in vec3 rd) } // sky { - float dif = sqrt(clamp( 0.5+0.5*nor.y, 0.0, 1.0 )); + float dif = sqrt(clamp(0.5+0.5*nor.y, 0.0, 1.0)); dif *= occ; - float spe = smoothstep( -0.2, 0.2, ref.y ); + float spe = smoothstep(-0.2, 0.2, ref.y); spe *= dif; - spe *= 0.04+0.96*pow(clamp(1.0+dot(nor,rd),0.0,1.0), 5.0 ); - //if( spe>0.001 ) - spe *= calcSoftshadow( pos, ref, 0.02, 2.5 ); + spe *= 0.04+0.96*pow(clamp(1.0+dot(nor,rd),0.0,1.0), 5.0); + //if (spe>0.001) + spe *= calcSoftshadow(pos, ref, 0.02, 2.5); lin += col*0.60*dif*vec3(0.40,0.60,1.15); lin += 2.00*spe*vec3(0.40,0.60,1.30)*ks; } // back { - float dif = clamp( dot( nor, normalize(vec3(0.5,0.0,0.6))), 0.0, 1.0 )*clamp( 1.0-pos.y,0.0,1.0); + float dif = clamp(dot(nor, normalize(vec3(0.5,0.0,0.6))), 0.0, 1.0)*clamp(1.0-pos.y,0.0,1.0); dif *= occ; - lin += col*0.55*dif*vec3(0.25,0.25,0.25); + lin += col*0.55*dif*vec3(0.25,0.25,0.25); } // sss { float dif = pow(clamp(1.0+dot(nor,rd),0.0,1.0),2.0); dif *= occ; - lin += col*0.25*dif*vec3(1.00,1.00,1.00); + lin += col*0.25*dif*vec3(1.00,1.00,1.00); } - col = lin; + col = lin; - col = mix( col, vec3(0.7,0.7,0.9), 1.0-exp( -0.0001*t*t*t ) ); + col = mix(col, vec3(0.7,0.7,0.9), 1.0-exp(-0.0001*t*t*t)); } - return vec4(vec3( clamp(col,0.0,1.0) ),t); + return vec4(vec3(clamp(col,0.0,1.0)),t); } vec3 CalcRayDir(vec2 nCoord){ @@ -257,11 +257,11 @@ vec3 CalcRayDir(vec2 nCoord){ mat3 setCamera() { - vec3 cw = normalize(camDir); - vec3 cp = vec3(0.0, 1.0 ,0.0); - vec3 cu = normalize( cross(cw,cp) ); - vec3 cv = ( cross(cu,cw) ); - return mat3( cu, cv, cw ); + vec3 cw = normalize(camDir); + vec3 cp = vec3(0.0, 1.0 ,0.0); + vec3 cu = normalize(cross(cw,cp)); + vec3 cv = (cross(cu,cw)); + return mat3(cu, cv, cw); } void main() @@ -271,14 +271,14 @@ void main() // focal length float fl = length(camDir); - vec3 rd = ca * normalize( vec3(nCoord,fl) ); + vec3 rd = ca*normalize(vec3(nCoord,fl)); vec3 color = vec3(nCoord/2.0 + 0.5, 0.0); float depth = gl_FragCoord.z; { - vec4 res = render( camPos - vec3(0.0, 0.0, 0.0) , rd ); + vec4 res = render(camPos - vec3(0.0, 0.0, 0.0) , rd); color = res.xyz; depth = CalcDepth(rd,res.w); } gl_FragColor = vec4(color , 1.0); - gl_FragDepth = depth; + gl_FragDepth = depth; } \ No newline at end of file diff --git a/examples/shaders/resources/shaders/glsl330/julia_set.fs b/examples/shaders/resources/shaders/glsl330/julia_set.fs index 3a8e25deb..a3e5bec56 100644 --- a/examples/shaders/resources/shaders/glsl330/julia_set.fs +++ b/examples/shaders/resources/shaders/glsl330/julia_set.fs @@ -8,11 +8,11 @@ in vec4 fragColor; out vec4 finalColor; uniform vec2 c; // c.x = real, c.y = imaginary component. Equation done is z^2 + c -uniform vec2 offset; // Offset of the scale. -uniform float zoom; // Zoom of the scale. +uniform vec2 offset; // Offset of the scale +uniform float zoom; // Zoom of the scale -const int maxIterations = 255; // Max iterations to do. -const float colorCycles = 2.0; // Number of times the color palette repeats. Can show higher detail for higher iteration numbers. +const int maxIterations = 255; // Max iterations to do +const float colorCycles = 2.0; // Number of times the color palette repeats. Can show higher detail for higher iteration numbers // Square a complex number vec2 ComplexSquare(vec2 z) @@ -31,22 +31,22 @@ vec3 Hsv2rgb(vec3 c) void main() { /********************************************************************************************** - Julia sets use a function z^2 + c, where c is a constant. - This function is iterated until the nature of the point is determined. + Julia sets use a function z^2 + c, where c is a constant + This function is iterated until the nature of the point is determined If the magnitude of the number becomes greater than 2, then from that point onward - the number will get bigger and bigger, and will never get smaller (tends towards infinity). - 2^2 = 4, 4^2 = 8 and so on. - So at 2 we stop iterating. + the number will get bigger and bigger, and will never get smaller (tends towards infinity) + 2^2 = 4, 4^2 = 8 and so on + So at 2 we stop iterating - If the number is below 2, we keep iterating. + If the number is below 2, we keep iterating But when do we stop iterating if the number is always below 2 (it converges)? - That is what maxIterations is for. - Then we can divide the iterations by the maxIterations value to get a normalized value that we can - then map to a color. + That is what maxIterations is for + Then we can divide the iterations by the maxIterations value to get a normalized value + that we can then map to a color - We use dot product (z.x * z.x + z.y * z.y) to determine the magnitude (length) squared. - And once the magnitude squared is > 4, then magnitude > 2 is also true (saves computational power). + We use dot product (z.x*z.x + z.y*z.y) to determine the magnitude (length) squared + And once the magnitude squared is > 4, then magnitude > 2 is also true (saves computational power) *************************************************************************************************/ // The pixel coordinates are scaled so they are on the mandelbrot scale @@ -63,18 +63,18 @@ void main() if (dot(z, z) > 4.0) break; } - // Another few iterations decreases errors in the smoothing calculation. - // See http://linas.org/art-gallery/escape/escape.html for more information. + // Another few iterations decreases errors in the smoothing calculation + // See http://linas.org/art-gallery/escape/escape.html for more information z = ComplexSquare(z) + c; z = ComplexSquare(z) + c; - // This last part smooths the color (again see link above). + // This last part smooths the color (again see link above) float smoothVal = float(iterations) + 1.0 - (log(log(length(z)))/log(2.0)); - // Normalize the value so it is between 0 and 1. + // Normalize the value so it is between 0 and 1 float norm = smoothVal/float(maxIterations); - // If in set, color black. 0.999 allows for some float accuracy error. + // If in set, color black. 0.999 allows for some float accuracy error if (norm > 0.999) finalColor = vec4(0.0, 0.0, 0.0, 1.0); else finalColor = vec4(Hsv2rgb(vec3(norm*colorCycles, 1.0, 1.0)), 1.0); } diff --git a/examples/shaders/resources/shaders/glsl330/lighting.fs b/examples/shaders/resources/shaders/glsl330/lighting.fs index 8f4a51e54..b9abfed77 100644 --- a/examples/shaders/resources/shaders/glsl330/lighting.fs +++ b/examples/shaders/resources/shaders/glsl330/lighting.fs @@ -41,7 +41,7 @@ void main() vec3 viewD = normalize(viewPos - fragPosition); vec3 specular = vec3(0.0); - vec4 tint = colDiffuse * fragColor; + vec4 tint = colDiffuse*fragColor; // NOTE: Implement here your fragment shader code diff --git a/examples/shaders/resources/shaders/glsl330/lightmap.fs b/examples/shaders/resources/shaders/glsl330/lightmap.fs index 827473d25..0685e84b1 100644 --- a/examples/shaders/resources/shaders/glsl330/lightmap.fs +++ b/examples/shaders/resources/shaders/glsl330/lightmap.fs @@ -19,5 +19,5 @@ void main() vec4 texelColor = texture(texture0, fragTexCoord); vec4 texelColor2 = texture(texture1, fragTexCoord2); - finalColor = texelColor * texelColor2; + finalColor = texelColor*texelColor2; } diff --git a/examples/shaders/resources/shaders/glsl330/normalmap.fs b/examples/shaders/resources/shaders/glsl330/normalmap.fs index 644130ab6..697423701 100644 --- a/examples/shaders/resources/shaders/glsl330/normalmap.fs +++ b/examples/shaders/resources/shaders/glsl330/normalmap.fs @@ -36,21 +36,21 @@ void main() normal = texture(normalMap, vec2(fragTexCoord.x, fragTexCoord.y)).rgb; //Transform normal values to the range -1.0 ... 1.0 - normal = normalize(normal * 2.0 - 1.0); + normal = normalize(normal*2.0 - 1.0); //Transform the normal from tangent-space to world-space for lighting calculation - normal = normalize(normal * TBN); + normal = normalize(normal*TBN); } else { normal = normalize(fragNormal); } - vec4 tint = colDiffuse * fragColor; + vec4 tint = colDiffuse*fragColor; vec3 lightColor = vec3(1.0, 1.0, 1.0); float NdotL = max(dot(normal, lightDir), 0.0); - vec3 lightDot = lightColor * NdotL; + vec3 lightDot = lightColor*NdotL; float specCo = 0.0; @@ -58,10 +58,10 @@ void main() specular += specCo; - finalColor = (texelColor * ((tint + vec4(specular, 1.0)) * vec4(lightDot, 1.0))); - finalColor += texelColor * (vec4(1.0, 1.0, 1.0, 1.0) / 40.0) * tint; + finalColor = (texelColor*((tint + vec4(specular, 1.0))*vec4(lightDot, 1.0))); + finalColor += texelColor*(vec4(1.0, 1.0, 1.0, 1.0)/40.0)*tint; // Gamma correction - finalColor = pow(finalColor, vec4(1.0 / 2.2)); + finalColor = pow(finalColor, vec4(1.0/2.2)); //finalColor = vec4(normal, 1.0); } diff --git a/examples/shaders/resources/shaders/glsl330/normalmap.vs b/examples/shaders/resources/shaders/glsl330/normalmap.vs index 1e0a161b8..58fff39b9 100644 --- a/examples/shaders/resources/shaders/glsl330/normalmap.vs +++ b/examples/shaders/resources/shaders/glsl330/normalmap.vs @@ -21,21 +21,21 @@ out mat3 TBN; void main() { // Compute binormal from vertex normal and tangent. W component is the tangent handedness - vec3 vertexBinormal = cross(vertexNormal, vertexTangent.xyz) * vertexTangent.w; + vec3 vertexBinormal = cross(vertexNormal, vertexTangent.xyz)*vertexTangent.w; // Compute fragment normal based on normal transformations mat3 normalMatrix = transpose(inverse(mat3(matModel))); // Compute fragment position based on model transformations - fragPosition = vec3(matModel * vec4(vertexPosition, 1.0)); + fragPosition = vec3(matModel*vec4(vertexPosition, 1.0)); //Create TBN matrix for transforming the normal map values from tangent-space to world-space - fragNormal = normalize(normalMatrix * vertexNormal); + fragNormal = normalize(normalMatrix*vertexNormal); - vec3 fragTangent = normalize(normalMatrix * vertexTangent.xyz); - fragTangent = normalize(fragTangent - dot(fragTangent, fragNormal) * fragNormal); + vec3 fragTangent = normalize(normalMatrix*vertexTangent.xyz); + fragTangent = normalize(fragTangent - dot(fragTangent, fragNormal)*fragNormal); - vec3 fragBinormal = normalize(normalMatrix * vertexBinormal); + vec3 fragBinormal = normalize(normalMatrix*vertexBinormal); fragBinormal = cross(fragNormal, fragTangent); TBN = transpose(mat3(fragTangent, fragBinormal, fragNormal)); @@ -44,5 +44,5 @@ void main() fragTexCoord = vertexTexCoord; - gl_Position = mvp * vec4(vertexPosition, 1.0); + gl_Position = mvp*vec4(vertexPosition, 1.0); } diff --git a/examples/shaders/resources/shaders/glsl330/pbr.vs b/examples/shaders/resources/shaders/glsl330/pbr.vs index 8aabb6baf..0fc7888d3 100644 --- a/examples/shaders/resources/shaders/glsl330/pbr.vs +++ b/examples/shaders/resources/shaders/glsl330/pbr.vs @@ -26,7 +26,7 @@ const float normalOffset = 0.1; void main() { // Compute binormal from vertex normal and tangent - vec3 vertexBinormal = cross(vertexNormal, vertexTangent.xyz) * vertexTangent.w; + vec3 vertexBinormal = cross(vertexNormal, vertexTangent.xyz)*vertexTangent.w; // Compute fragment normal based on normal transformations mat3 normalMatrix = transpose(inverse(mat3(matModel))); diff --git a/examples/shaders/resources/shaders/glsl330/raymarching.fs b/examples/shaders/resources/shaders/glsl330/raymarching.fs index 6a9eb4516..67446cdc8 100644 --- a/examples/shaders/resources/shaders/glsl330/raymarching.fs +++ b/examples/shaders/resources/shaders/glsl330/raymarching.fs @@ -33,7 +33,7 @@ uniform vec2 resolution; // SOFTWARE. // A list of useful distance function to simple primitives, and an example on how to -// do some interesting boolean operations, repetition and displacement. +// do some interesting boolean operations, repetition and displacement // // More info here: http://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm @@ -41,38 +41,38 @@ uniform vec2 resolution; //------------------------------------------------------------------ -float sdPlane( vec3 p ) +float sdPlane(vec3 p) { return p.y; } -float sdSphere( vec3 p, float s ) +float sdSphere(vec3 p, float s) { return length(p)-s; } -float sdBox( vec3 p, vec3 b ) +float sdBox(vec3 p, vec3 b) { vec3 d = abs(p) - b; return min(max(d.x,max(d.y,d.z)),0.0) + length(max(d,0.0)); } -float sdEllipsoid( in vec3 p, in vec3 r ) +float sdEllipsoid(in vec3 p, in vec3 r) { - return (length( p/r ) - 1.0) * min(min(r.x,r.y),r.z); + return (length(p/r) - 1.0)*min(min(r.x,r.y),r.z); } -float udRoundBox( vec3 p, vec3 b, float r ) +float udRoundBox(vec3 p, vec3 b, float r) { return length(max(abs(p)-b,0.0))-r; } -float sdTorus( vec3 p, vec2 t ) +float sdTorus(vec3 p, vec2 t) { - return length( vec2(length(p.xz)-t.x,p.y) )-t.y; + return length(vec2(length(p.xz)-t.x,p.y))-t.y; } -float sdHexPrism( vec3 p, vec2 h ) +float sdHexPrism(vec3 p, vec2 h) { vec3 q = abs(p); #if 0 @@ -84,24 +84,24 @@ float sdHexPrism( vec3 p, vec2 h ) #endif } -float sdCapsule( vec3 p, vec3 a, vec3 b, float r ) +float sdCapsule(vec3 p, vec3 a, vec3 b, float r) { vec3 pa = p-a, ba = b-a; - float h = clamp( dot(pa,ba)/dot(ba,ba), 0.0, 1.0 ); - return length( pa - ba*h ) - r; + float h = clamp(dot(pa,ba)/dot(ba,ba), 0.0, 1.0); + return length(pa - ba*h) - r; } -float sdEquilateralTriangle( in vec2 p ) +float sdEquilateralTriangle( in vec2 p) { const float k = sqrt(3.0); p.x = abs(p.x) - 1.0; p.y = p.y + 1.0/k; - if( p.x + k*p.y > 0.0 ) p = vec2( p.x - k*p.y, -k*p.x - p.y )/2.0; - p.x += 2.0 - 2.0*clamp( (p.x+2.0)/2.0, 0.0, 1.0 ); + if (p.x + k*p.y > 0.0) p = vec2(p.x - k*p.y, -k*p.x - p.y)/2.0; + p.x += 2.0 - 2.0*clamp((p.x+2.0)/2.0, 0.0, 1.0); return -length(p)*sign(p.y); } -float sdTriPrism( vec3 p, vec2 h ) +float sdTriPrism(vec3 p, vec2 h) { vec3 q = abs(p); float d1 = q.z-h.y; @@ -116,95 +116,95 @@ float sdTriPrism( vec3 p, vec2 h ) return length(max(vec2(d1,d2),0.0)) + min(max(d1,d2), 0.); } -float sdCylinder( vec3 p, vec2 h ) +float sdCylinder(vec3 p, vec2 h) { vec2 d = abs(vec2(length(p.xz),p.y)) - h; return min(max(d.x,d.y),0.0) + length(max(d,0.0)); } -float sdCone( in vec3 p, in vec3 c ) +float sdCone(in vec3 p, in vec3 c) { - vec2 q = vec2( length(p.xz), p.y ); + vec2 q = vec2(length(p.xz), p.y); float d1 = -q.y-c.z; - float d2 = max( dot(q,c.xy), q.y); + float d2 = max(dot(q,c.xy), q.y); return length(max(vec2(d1,d2),0.0)) + min(max(d1,d2), 0.); } -float sdConeSection( in vec3 p, in float h, in float r1, in float r2 ) +float sdConeSection(in vec3 p, in float h, in float r1, in float r2) { float d1 = -p.y - h; float q = p.y - h; float si = 0.5*(r1-r2)/h; - float d2 = max( sqrt( dot(p.xz,p.xz)*(1.0-si*si)) + q*si - r2, q ); + float d2 = max(sqrt(dot(p.xz,p.xz)*(1.0-si*si)) + q*si - r2, q); return length(max(vec2(d1,d2),0.0)) + min(max(d1,d2), 0.); } -float sdPryamid4(vec3 p, vec3 h ) // h = { cos a, sin a, height } +float sdPryamid4(vec3 p, vec3 h) // h = { cos a, sin a, height } { // Tetrahedron = Octahedron - Cube - float box = sdBox( p - vec3(0,-2.0*h.z,0), vec3(2.0*h.z) ); + float box = sdBox(p - vec3(0,-2.0*h.z,0), vec3(2.0*h.z)); float d = 0.0; - d = max( d, abs( dot(p, vec3( -h.x, h.y, 0 )) )); - d = max( d, abs( dot(p, vec3( h.x, h.y, 0 )) )); - d = max( d, abs( dot(p, vec3( 0, h.y, h.x )) )); - d = max( d, abs( dot(p, vec3( 0, h.y,-h.x )) )); + d = max(d, abs(dot(p, vec3(-h.x, h.y, 0)))); + d = max(d, abs(dot(p, vec3( h.x, h.y, 0)))); + d = max(d, abs(dot(p, vec3( 0, h.y, h.x)))); + d = max(d, abs(dot(p, vec3( 0, h.y,-h.x)))); float octa = d - h.z; return max(-box,octa); // Subtraction } -float length2( vec2 p ) +float length2(vec2 p) { - return sqrt( p.x*p.x + p.y*p.y ); + return sqrt(p.x*p.x + p.y*p.y); } -float length6( vec2 p ) +float length6(vec2 p) { p = p*p*p; p = p*p; - return pow( p.x + p.y, 1.0/6.0 ); + return pow(p.x + p.y, 1.0/6.0); } -float length8( vec2 p ) +float length8(vec2 p) { p = p*p; p = p*p; p = p*p; - return pow( p.x + p.y, 1.0/8.0 ); + return pow(p.x + p.y, 1.0/8.0); } -float sdTorus82( vec3 p, vec2 t ) +float sdTorus82(vec3 p, vec2 t) { vec2 q = vec2(length2(p.xz)-t.x,p.y); return length8(q)-t.y; } -float sdTorus88( vec3 p, vec2 t ) +float sdTorus88(vec3 p, vec2 t) { vec2 q = vec2(length8(p.xz)-t.x,p.y); return length8(q)-t.y; } -float sdCylinder6( vec3 p, vec2 h ) +float sdCylinder6(vec3 p, vec2 h) { - return max( length6(p.xz)-h.x, abs(p.y)-h.y ); + return max(length6(p.xz)-h.x, abs(p.y)-h.y); } //------------------------------------------------------------------ -float opS( float d1, float d2 ) +float opS(float d1, float d2) { return max(-d2,d1); } -vec2 opU( vec2 d1, vec2 d2 ) +vec2 opU(vec2 d1, vec2 d2) { return (d1.x0.0 ) tmax = min( tmax, tp1 ); - float tp2 = (1.6-ro.y)/rd.y; if( tp2>0.0 ) { if( ro.y>1.6 ) tmin = max( tmin, tp2 ); - else tmax = min( tmax, tp2 ); } + float tp1 = (0.0-ro.y)/rd.y; if (tp1>0.0) tmax = min(tmax, tp1); + float tp2 = (1.6-ro.y)/rd.y; if (tp2>0.0) { if (ro.y>1.6) tmin = max(tmin, tp2); + else tmax = min(tmax, tp2); } #endif float t = tmin; float m = -1.0; - for( int i=0; i<64; i++ ) + for (int i=0; i<64; i++) { float precis = 0.0005*t; - vec2 res = map( ro+rd*t ); - if( res.xtmax ) break; + vec2 res = map(ro+rd*t); + if (res.xtmax) break; t += res.x; m = res.y; } - if( t>tmax ) m=-1.0; - return vec2( t, m ); + if (t>tmax) m=-1.0; + return vec2(t, m); } -float calcSoftshadow( in vec3 ro, in vec3 rd, in float mint, in float tmax ) +float calcSoftshadow(in vec3 ro, in vec3 rd, in float mint, in float tmax) { float res = 1.0; float t = mint; - for( int i=0; i<16; i++ ) + for (int i=0; i<16; i++) { - float h = map( ro + rd*t ).x; - res = min( res, 8.0*h/t ); - t += clamp( h, 0.02, 0.10 ); - if( h<0.001 || t>tmax ) break; + float h = map(ro + rd*t).x; + res = min(res, 8.0*h/t); + t += clamp(h, 0.02, 0.10); + if (h<0.001 || t>tmax) break; } - return clamp( res, 0.0, 1.0 ); + return clamp(res, 0.0, 1.0); } -vec3 calcNormal( in vec3 pos ) +vec3 calcNormal(in vec3 pos) { vec2 e = vec2(1.0,-1.0)*0.5773*0.0005; - return normalize( e.xyy*map( pos + e.xyy ).x + - e.yyx*map( pos + e.yyx ).x + - e.yxy*map( pos + e.yxy ).x + - e.xxx*map( pos + e.xxx ).x ); + return normalize(e.xyy*map(pos + e.xyy).x + + e.yyx*map(pos + e.yyx).x + + e.yxy*map(pos + e.yxy).x + + e.xxx*map(pos + e.xxx).x); /* - vec3 eps = vec3( 0.0005, 0.0, 0.0 ); + vec3 eps = vec3(0.0005, 0.0, 0.0); vec3 nor = vec3( map(pos+eps.xyy).x - map(pos-eps.xyy).x, map(pos+eps.yxy).x - map(pos-eps.yxy).x, - map(pos+eps.yyx).x - map(pos-eps.yyx).x ); + map(pos+eps.yyx).x - map(pos-eps.yyx).x); return normalize(nor); */ } -float calcAO( in vec3 pos, in vec3 nor ) +float calcAO(in vec3 pos, in vec3 nor) { float occ = 0.0; float sca = 1.0; - for( int i=0; i<5; i++ ) + for (int i=0; i<5; i++) { float hr = 0.01 + 0.12*float(i)/4.0; - vec3 aopos = nor * hr + pos; - float dd = map( aopos ).x; + vec3 aopos = nor*hr + pos; + float dd = map(aopos).x; occ += -(dd-hr)*sca; sca *= 0.95; } - return clamp( 1.0 - 3.0*occ, 0.0, 1.0 ); + return clamp(1.0 - 3.0*occ, 0.0, 1.0); } // http://iquilezles.org/www/articles/checkerfiltering/checkerfiltering.htm -float checkersGradBox( in vec2 p ) +float checkersGradBox(in vec2 p) { // filter kernel vec2 w = fwidth(p) + 0.001; @@ -327,43 +327,43 @@ float checkersGradBox( in vec2 p ) return 0.5 - 0.5*i.x*i.y; } -vec3 render( in vec3 ro, in vec3 rd ) +vec3 render(in vec3 ro, in vec3 rd) { vec3 col = vec3(0.7, 0.9, 1.0) +rd.y*0.8; vec2 res = castRay(ro,rd); float t = res.x; float m = res.y; - if( m>-0.5 ) + if (m>-0.5) { vec3 pos = ro + t*rd; - vec3 nor = calcNormal( pos ); - vec3 ref = reflect( rd, nor ); + vec3 nor = calcNormal(pos); + vec3 ref = reflect(rd, nor); // material - col = 0.45 + 0.35*sin( vec3(0.05,0.08,0.10)*(m-1.0) ); - if( m<1.5 ) + col = 0.45 + 0.35*sin(vec3(0.05,0.08,0.10)*(m-1.0)); + if (m<1.5) { - float f = checkersGradBox( 5.0*pos.xz ); + float f = checkersGradBox(5.0*pos.xz); col = 0.3 + f*vec3(0.1); } // lighting - float occ = calcAO( pos, nor ); - vec3 lig = normalize( vec3(cos(-0.4 * runTime), sin(0.7 * runTime), -0.6) ); - vec3 hal = normalize( lig-rd ); - float amb = clamp( 0.5+0.5*nor.y, 0.0, 1.0 ); - float dif = clamp( dot( nor, lig ), 0.0, 1.0 ); - float bac = clamp( dot( nor, normalize(vec3(-lig.x,0.0,-lig.z))), 0.0, 1.0 )*clamp( 1.0-pos.y,0.0,1.0); - float dom = smoothstep( -0.1, 0.1, ref.y ); - float fre = pow( clamp(1.0+dot(nor,rd),0.0,1.0), 2.0 ); + float occ = calcAO(pos, nor); + vec3 lig = normalize(vec3(cos(-0.4*runTime), sin(0.7*runTime), -0.6)); + vec3 hal = normalize(lig-rd); + float amb = clamp(0.5+0.5*nor.y, 0.0, 1.0); + float dif = clamp(dot(nor, lig), 0.0, 1.0); + float bac = clamp(dot(nor, normalize(vec3(-lig.x,0.0,-lig.z))), 0.0, 1.0)*clamp(1.0-pos.y,0.0,1.0); + float dom = smoothstep(-0.1, 0.1, ref.y); + float fre = pow(clamp(1.0+dot(nor,rd),0.0,1.0), 2.0); - dif *= calcSoftshadow( pos, lig, 0.02, 2.5 ); - dom *= calcSoftshadow( pos, ref, 0.02, 2.5 ); + dif *= calcSoftshadow(pos, lig, 0.02, 2.5); + dom *= calcSoftshadow(pos, ref, 0.02, 2.5); - float spe = pow( clamp( dot( nor, hal ), 0.0, 1.0 ),16.0)* + float spe = pow(clamp(dot(nor, hal), 0.0, 1.0),16.0)* dif * - (0.04 + 0.96*pow( clamp(1.0+dot(hal,rd),0.0,1.0), 5.0 )); + (0.04 + 0.96*pow(clamp(1.0+dot(hal,rd),0.0,1.0), 5.0)); vec3 lin = vec3(0.0); lin += 1.30*dif*vec3(1.00,0.80,0.55); @@ -374,51 +374,51 @@ vec3 render( in vec3 ro, in vec3 rd ) col = col*lin; col += 10.00*spe*vec3(1.00,0.90,0.70); - col = mix( col, vec3(0.8,0.9,1.0), 1.0-exp( -0.0002*t*t*t ) ); + col = mix(col, vec3(0.8,0.9,1.0), 1.0-exp(-0.0002*t*t*t)); } - return vec3( clamp(col,0.0,1.0) ); + return vec3(clamp(col,0.0,1.0)); } -mat3 setCamera( in vec3 ro, in vec3 ta, float cr ) +mat3 setCamera(in vec3 ro, in vec3 ta, float cr) { vec3 cw = normalize(ta-ro); vec3 cp = vec3(sin(cr), cos(cr),0.0); - vec3 cu = normalize( cross(cw,cp) ); - vec3 cv = normalize( cross(cu,cw) ); - return mat3( cu, cv, cw ); + vec3 cu = normalize(cross(cw,cp)); + vec3 cv = normalize(cross(cu,cw)); + return mat3(cu, cv, cw); } void main() { vec3 tot = vec3(0.0); #if AA>1 - for( int m=0; m1 @@ -426,5 +426,5 @@ void main() tot /= float(AA*AA); #endif - finalColor = vec4( tot, 1.0 ); + finalColor = vec4(tot, 1.0); } diff --git a/examples/shaders/resources/shaders/glsl330/scanlines.fs b/examples/shaders/resources/shaders/glsl330/scanlines.fs index 4de19cf11..77d8f63bc 100644 --- a/examples/shaders/resources/shaders/glsl330/scanlines.fs +++ b/examples/shaders/resources/shaders/glsl330/scanlines.fs @@ -39,7 +39,7 @@ void main() fragColor = color; */ // Scanlines method 2 - float globalPos = (fragTexCoord.y + offset) * frequency; + float globalPos = (fragTexCoord.y + offset)*frequency; float wavePos = cos((fract(globalPos) - 0.5)*3.14); // Texel color fetching from texture sampler diff --git a/examples/shaders/resources/shaders/glsl330/shadowmap.fs b/examples/shaders/resources/shaders/glsl330/shadowmap.fs index d535de2bc..6ad41461c 100644 --- a/examples/shaders/resources/shaders/glsl330/shadowmap.fs +++ b/examples/shaders/resources/shaders/glsl330/shadowmap.fs @@ -49,13 +49,13 @@ void main() finalColor = (texelColor*((colDiffuse + vec4(specular, 1.0))*vec4(lightDot, 1.0))); // Shadow calculations - vec4 fragPosLightSpace = lightVP * vec4(fragPosition, 1); + vec4 fragPosLightSpace = lightVP*vec4(fragPosition, 1); fragPosLightSpace.xyz /= fragPosLightSpace.w; // Perform the perspective division fragPosLightSpace.xyz = (fragPosLightSpace.xyz + 1.0)/2.0; // Transform from [-1, 1] range to [0, 1] range vec2 sampleCoords = fragPosLightSpace.xy; float curDepth = fragPosLightSpace.z; - // Slope-scale depth bias: depth biasing reduces "shadow acne" artifacts, where dark stripes appear all over the scene. + // Slope-scale depth bias: depth biasing reduces "shadow acne" artifacts, where dark stripes appear all over the scene // The solution is adding a small bias to the depth // In this case, the bias is proportional to the slope of the surface, relative to the light float bias = max(0.0002*(1.0 - dot(normal, l)), 0.00002) + 0.00001; @@ -64,8 +64,8 @@ void main() // PCF (percentage-closer filtering) algorithm: // Instead of testing if just one point is closer to the current point, - // we test the surrounding points as well. - // This blurs shadow edges, hiding aliasing artifacts. + // we test the surrounding points as well + // This blurs shadow edges, hiding aliasing artifacts vec2 texelSize = vec2(1.0/float(shadowMapResolution)); for (int x = -1; x <= 1; x++) { diff --git a/examples/shaders/resources/shaders/glsl330/sobel.fs b/examples/shaders/resources/shaders/glsl330/sobel.fs index 590c84d70..a8005cb56 100644 --- a/examples/shaders/resources/shaders/glsl330/sobel.fs +++ b/examples/shaders/resources/shaders/glsl330/sobel.fs @@ -21,10 +21,10 @@ void main() vec4 horizEdge = vec4(0.0); horizEdge -= texture(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y - y))*1.0; - horizEdge -= texture(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y ))*2.0; + horizEdge -= texture(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y ))*2.0; horizEdge -= texture(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y + y))*1.0; horizEdge += texture(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y - y))*1.0; - horizEdge += texture(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y ))*2.0; + horizEdge += texture(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y ))*2.0; horizEdge += texture(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y + y))*1.0; vec4 vertEdge = vec4(0.0); diff --git a/examples/shaders/resources/shaders/glsl330/spotlight.fs b/examples/shaders/resources/shaders/glsl330/spotlight.fs index 9c0b70363..b3e89ebdf 100644 --- a/examples/shaders/resources/shaders/glsl330/spotlight.fs +++ b/examples/shaders/resources/shaders/glsl330/spotlight.fs @@ -53,7 +53,7 @@ void main() else { if (d < spots[fi].inner) alpha = 0.0; - else alpha = (d - spots[fi].inner) / (spots[fi].radius - spots[fi].inner); + else alpha = (d - spots[fi].inner)/(spots[fi].radius - spots[fi].inner); } } diff --git a/examples/shaders/resources/shaders/glsl330/vertex_displacement.vs b/examples/shaders/resources/shaders/glsl330/vertex_displacement.vs index 73cf16109..080ad473a 100644 --- a/examples/shaders/resources/shaders/glsl330/vertex_displacement.vs +++ b/examples/shaders/resources/shaders/glsl330/vertex_displacement.vs @@ -24,13 +24,13 @@ out float height; void main() { // Calculate animated texture coordinates based on time and vertex position - vec2 animatedTexCoord = sin(vertexTexCoord + vec2(sin(time + vertexPosition.x * 0.1), cos(time + vertexPosition.z * 0.1)) * 0.3); + vec2 animatedTexCoord = sin(vertexTexCoord + vec2(sin(time + vertexPosition.x*0.1), cos(time + vertexPosition.z*0.1))*0.3); // Normalize animated texture coordinates to range [0, 1] - animatedTexCoord = animatedTexCoord * 0.5 + 0.5; + animatedTexCoord = animatedTexCoord*0.5 + 0.5; // Fetch displacement from the perlin noise map - float displacement = texture(perlinNoiseMap, animatedTexCoord).r * 7; // Amplified displacement + float displacement = texture(perlinNoiseMap, animatedTexCoord).r*7; // Amplified displacement // Displace vertex position vec3 displacedPosition = vertexPosition + vec3(0.0, displacement, 0.0); @@ -39,7 +39,7 @@ void main() fragPosition = vec3(matModel*vec4(displacedPosition, 1.0)); fragTexCoord = vertexTexCoord; fragNormal = normalize(vec3(matNormal*vec4(vertexNormal, 1.0))); - height = displacedPosition.y * 0.2; // send height to fragment shader for coloring + height = displacedPosition.y*0.2; // send height to fragment shader for coloring // Calculate final vertex position gl_Position = mvp*vec4(displacedPosition , 1.0); diff --git a/examples/shaders/resources/shaders/glsl330/wave.fs b/examples/shaders/resources/shaders/glsl330/wave.fs index 1f22bee09..393f1bde2 100644 --- a/examples/shaders/resources/shaders/glsl330/wave.fs +++ b/examples/shaders/resources/shaders/glsl330/wave.fs @@ -23,15 +23,15 @@ uniform float speedX; uniform float speedY; void main() { - float pixelWidth = 1.0 / size.x; - float pixelHeight = 1.0 / size.y; - float aspect = pixelHeight / pixelWidth; + float pixelWidth = 1.0/size.x; + float pixelHeight = 1.0/size.y; + float aspect = pixelHeight/pixelWidth; float boxLeft = 0.0; float boxTop = 0.0; vec2 p = fragTexCoord; - p.x += cos((fragTexCoord.y - boxTop) * freqX / ( pixelWidth * 750.0) + (seconds * speedX)) * ampX * pixelWidth; - p.y += sin((fragTexCoord.x - boxLeft) * freqY * aspect / ( pixelHeight * 750.0) + (seconds * speedY)) * ampY * pixelHeight; + p.x += cos((fragTexCoord.y - boxTop)*freqX/(pixelWidth*750.0) + (seconds*speedX))*ampX*pixelWidth; + p.y += sin((fragTexCoord.x - boxLeft)*freqY*aspect/(pixelHeight*750.0) + (seconds*speedY))*ampY*pixelHeight; finalColor = texture(texture0, p)*colDiffuse*fragColor; } diff --git a/examples/text/resources/shaders/glsl330/alpha_discard.fs b/examples/text/resources/shaders/glsl330/alpha_discard.fs index d2134a688..3e2673d0d 100644 --- a/examples/text/resources/shaders/glsl330/alpha_discard.fs +++ b/examples/text/resources/shaders/glsl330/alpha_discard.fs @@ -15,5 +15,5 @@ void main() { vec4 texelColor = texture(texture0, fragTexCoord); if (texelColor.a == 0.0) discard; - finalColor = texelColor * fragColor * colDiffuse; + finalColor = texelColor*fragColor*colDiffuse; } From c4414fa1ed76d64fef8357a8c41644b5836780f8 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 12 Aug 2025 10:58:56 +0200 Subject: [PATCH 199/328] Revert "Merge pull request #4945 from Moros1138/master" This reverts commit bab234a1604a9d23538594bd3894bf13574612df, reversing changes made to 13e384ce7171cb0bb0e35fcb16d3cd569346d4f7. --- src/platforms/rcore_web.c | 66 ++------------------------------------- 1 file changed, 3 insertions(+), 63 deletions(-) diff --git a/src/platforms/rcore_web.c b/src/platforms/rcore_web.c index cc89098fb..9156f1599 100644 --- a/src/platforms/rcore_web.c +++ b/src/platforms/rcore_web.c @@ -1132,15 +1132,7 @@ int InitPlatform(void) if ((CORE.Window.flags & FLAG_WINDOW_UNDECORATED) > 0) glfwWindowHint(GLFW_DECORATED, GLFW_FALSE); // Border and buttons on Window else glfwWindowHint(GLFW_DECORATED, GLFW_TRUE); // Decorated window - if ((CORE.Window.flags & FLAG_WINDOW_RESIZABLE) > 0) - { - glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE); // Resizable window - - // bypass hidpi code block in libglfw.js - // https://github.com/raysan5/raylib/pull/4945#issuecomment-2906956170 - //------------------------------------------------------------------------ - glfwWindowHint(GLFW_SCALE_TO_MONITOR, GLFW_TRUE); - } + if ((CORE.Window.flags & FLAG_WINDOW_RESIZABLE) > 0) glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE); // Resizable window else glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE); // Avoid window being resizable // Disable FLAG_WINDOW_MINIMIZED, not supported on initialization @@ -1633,24 +1625,7 @@ static void MouseEnterCallback(GLFWwindow *window, int enter) static EM_BOOL EmscriptenKeyboardCallback(int eventType, const EmscriptenKeyboardEvent *keyboardEvent, void *userData) { // WARNING: Keyboard inputs already processed through GLFW callback - - // NOTE: 1. Reset the fullscreen flags if the user left fullscreen manually by pressing the Escape key - // 2. Which is a necessary safeguard because that case will bypass the toggles CORE.Window.flags resets - if (platform.ourFullscreen) platform.ourFullscreen = false; - else - { - const bool wasFullscreen = EM_ASM_INT( { if (document.fullscreenElement) return 1; }, 0); - if (!wasFullscreen) - { - CORE.Window.fullscreen = false; - CORE.Window.flags &= ~FLAG_FULLSCREEN_MODE; - CORE.Window.flags &= ~FLAG_BORDERLESS_WINDOWED_MODE; - } - } - - // Trigger resize event after a brief pause to ensure the canvas exists to resize - EM_ASM({ setTimeout(function() { window.dispatchEvent(new Event("resize")); }, 50); }); - + return 1; // The event was consumed by the callback handler } */ @@ -1658,42 +1633,7 @@ static EM_BOOL EmscriptenKeyboardCallback(int eventType, const EmscriptenKeyboar // Emscripten: Called on mouse input events static EM_BOOL EmscriptenMouseCallback(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData) { - // NOTE: Current code solves mouse position problems with the 3 possible approaches to canvas scaling - // 1. Canvas not scaled, framebuffer size is fixed - // 2. Canvas is scaled to 100% browser size, framebuffer size is fixed - // 3. Canvas is resized to browser size, framebuffer is resized - - // Don't resize non-resizeable windows - if ((CORE.Window.flags & FLAG_WINDOW_RESIZABLE) == 0) return 1; - - // This event is called whenever the window changes sizes, - // so the size of the canvas object is explicitly retrieved below - int width = EM_ASM_INT( return window.innerWidth; ); - int height = EM_ASM_INT( return window.innerHeight; ); - - if (width < (int)CORE.Window.screenMin.width) width = CORE.Window.screenMin.width; - else if ((width > (int)CORE.Window.screenMax.width) && (CORE.Window.screenMax.width > 0)) width = CORE.Window.screenMax.width; - - if (height < (int)CORE.Window.screenMin.height) height = CORE.Window.screenMin.height; - else if ((height > (int)CORE.Window.screenMax.height) && (CORE.Window.screenMax.height > 0)) height = CORE.Window.screenMax.height; - - emscripten_set_canvas_element_size(GetCanvasId(), width, height); - - glfwSetWindowSize(platform.handle, width, height); // Inform glfw of the new size - - SetupViewport(width, height); // Reset viewport and projection matrix for new size - - CORE.Window.currentFbo.width = width; - CORE.Window.currentFbo.height = height; - CORE.Window.resizedLastFrame = true; - - if (IsWindowFullscreen()) return 1; - - // Set current screen size - CORE.Window.screen.width = width; - CORE.Window.screen.height = height; - - // WARNING: RenderTextures are not scaled to new size + // This is only for registering mouse click events with emscripten and doesn't need to do anything return 1; // The event was consumed by the callback handler } From 95e4494cfe6d82ebb25e0c1a41b482cfda3c0391 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 12 Aug 2025 11:33:58 +0200 Subject: [PATCH 200/328] ADDED: `cursorLocked` variable and review required code #4940 #4955 --- src/platforms/rcore_android.c | 4 ++-- src/platforms/rcore_desktop_glfw.c | 4 ++-- src/platforms/rcore_desktop_sdl.c | 4 ++-- src/platforms/rcore_drm.c | 6 +++--- src/platforms/rcore_web.c | 28 +++++++++++++--------------- src/rcore.c | 2 ++ 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/platforms/rcore_android.c b/src/platforms/rcore_android.c index 03cb9741c..bfbdd30b3 100644 --- a/src/platforms/rcore_android.c +++ b/src/platforms/rcore_android.c @@ -560,7 +560,7 @@ void EnableCursor(void) // Set cursor position in the middle SetMousePosition(CORE.Window.screen.width/2, CORE.Window.screen.height/2); - CORE.Input.Mouse.cursorHidden = false; + CORE.Input.Mouse.cursorLocked = false; } // Disables cursor (lock cursor) @@ -569,7 +569,7 @@ void DisableCursor(void) // Set cursor position in the middle SetMousePosition(CORE.Window.screen.width/2, CORE.Window.screen.height/2); - CORE.Input.Mouse.cursorHidden = true; + CORE.Input.Mouse.cursorLocked = true; } // Swap back buffer with front buffer (screen drawing) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index c23b570d3..ca1ccebeb 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -1029,7 +1029,7 @@ void EnableCursor(void) if (glfwRawMouseMotionSupported()) glfwSetInputMode(platform.handle, GLFW_RAW_MOUSE_MOTION, GLFW_FALSE); - CORE.Input.Mouse.cursorHidden = false; + CORE.Input.Mouse.cursorLocked = false; } // Disables cursor (lock cursor) @@ -1045,7 +1045,7 @@ void DisableCursor(void) if (glfwRawMouseMotionSupported()) glfwSetInputMode(platform.handle, GLFW_RAW_MOUSE_MOTION, GLFW_TRUE); - CORE.Input.Mouse.cursorHidden = true; + CORE.Input.Mouse.cursorLocked = true; } // Swap back buffer with front buffer (screen drawing) diff --git a/src/platforms/rcore_desktop_sdl.c b/src/platforms/rcore_desktop_sdl.c index 5a62fa629..0dbe49436 100644 --- a/src/platforms/rcore_desktop_sdl.c +++ b/src/platforms/rcore_desktop_sdl.c @@ -1214,7 +1214,7 @@ void EnableCursor(void) #endif platform.cursorRelative = false; - CORE.Input.Mouse.cursorHidden = false; + CORE.Input.Mouse.cursorLocked = false; } // Disables cursor (lock cursor) @@ -1223,7 +1223,7 @@ void DisableCursor(void) SDL_SetRelativeMouseMode(SDL_TRUE); platform.cursorRelative = true; - CORE.Input.Mouse.cursorHidden = true; + CORE.Input.Mouse.cursorLocked = true; } // Swap back buffer with front buffer (screen drawing) diff --git a/src/platforms/rcore_drm.c b/src/platforms/rcore_drm.c index 930624fd2..2354bb3d2 100644 --- a/src/platforms/rcore_drm.c +++ b/src/platforms/rcore_drm.c @@ -556,7 +556,7 @@ void EnableCursor(void) SetMousePosition(CORE.Window.screen.width/2, CORE.Window.screen.height/2); platform.cursorRelative = false; - CORE.Input.Mouse.cursorHidden = false; + CORE.Input.Mouse.cursorLocked = false; } // Disables cursor (lock cursor) @@ -566,7 +566,7 @@ void DisableCursor(void) SetMousePosition(0, 0); platform.cursorRelative = true; - CORE.Input.Mouse.cursorHidden = true; + CORE.Input.Mouse.cursorLocked = true; } #if defined(SUPPORT_DRM_CACHE) @@ -2060,7 +2060,7 @@ static void PollMouseEvents(void) } // Screen confinement - if (!CORE.Input.Mouse.cursorHidden) + if (!CORE.Input.Mouse.cursorLocked) { if (CORE.Input.Mouse.currentPosition.x < 0) CORE.Input.Mouse.currentPosition.x = 0; if (CORE.Input.Mouse.currentPosition.x > CORE.Window.screen.width/CORE.Input.Mouse.scale.x) CORE.Input.Mouse.currentPosition.x = CORE.Window.screen.width/CORE.Input.Mouse.scale.x; diff --git a/src/platforms/rcore_web.c b/src/platforms/rcore_web.c index 9156f1599..93174b06d 100644 --- a/src/platforms/rcore_web.c +++ b/src/platforms/rcore_web.c @@ -102,8 +102,6 @@ static const char cursorLUT[11][12] = { "not-allowed" // 10 MOUSE_CURSOR_NOT_ALLOWED }; -Vector2 lockedMousePos = { 0 }; - //---------------------------------------------------------------------------------- // Module Internal Functions Declaration //---------------------------------------------------------------------------------- @@ -862,7 +860,7 @@ void EnableCursor(void) // Set cursor position in the middle SetMousePosition(CORE.Window.screen.width/2, CORE.Window.screen.height/2); - // NOTE: CORE.Input.Mouse.cursorHidden handled by EmscriptenPointerlockCallback() + // NOTE: CORE.Input.Mouse.cursorLocked handled by EmscriptenPointerlockCallback() } // Disables cursor (lock cursor) @@ -874,7 +872,7 @@ void DisableCursor(void) // Set cursor position in the middle SetMousePosition(CORE.Window.screen.width/2, CORE.Window.screen.height/2); - // NOTE: CORE.Input.Mouse.cursorHidden handled by EmscriptenPointerlockCallback() + // NOTE: CORE.Input.Mouse.cursorLocked handled by EmscriptenPointerlockCallback() } // Swap back buffer with front buffer (screen drawing) @@ -955,7 +953,7 @@ void SetMousePosition(int x, int y) CORE.Input.Mouse.currentPosition = (Vector2){ (float)x, (float)y }; CORE.Input.Mouse.previousPosition = CORE.Input.Mouse.currentPosition; - if (CORE.Input.Mouse.cursorHidden) lockedMousePos = CORE.Input.Mouse.currentPosition; + if (CORE.Input.Mouse.cursorLocked) CORE.Input.Mouse.lockedPosition = CORE.Input.Mouse.currentPosition; // NOTE: emscripten not implemented glfwSetCursorPos(platform.handle, CORE.Input.Mouse.currentPosition.x, CORE.Input.Mouse.currentPosition.y); @@ -966,7 +964,7 @@ void SetMouseCursor(int cursor) { if (CORE.Input.Mouse.cursor != cursor) { - if (!CORE.Input.Mouse.cursorHidden) EM_ASM( { Module.canvas.style.cursor = UTF8ToString($0); }, cursorLUT[cursor]); + if (!CORE.Input.Mouse.cursorLocked) EM_ASM( { Module.canvas.style.cursor = UTF8ToString($0); }, cursorLUT[cursor]); CORE.Input.Mouse.cursor = cursor; } @@ -1573,7 +1571,7 @@ static void MouseButtonCallback(GLFWwindow *window, int button, int action, int static void MouseMoveCallback(GLFWwindow *window, double x, double y) { // If the pointer is not locked, follow the position - if (!CORE.Input.Mouse.cursorHidden) + if (!CORE.Input.Mouse.cursorLocked) { CORE.Input.Mouse.currentPosition.x = (float)x; CORE.Input.Mouse.currentPosition.y = (float)y; @@ -1641,11 +1639,11 @@ static EM_BOOL EmscriptenMouseCallback(int eventType, const EmscriptenMouseEvent // Emscripten: Called on mouse move events static EM_BOOL EmscriptenMouseMoveCallback(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData) { - // To emulate the GLFW_RAW_MOUSE_MOTION property. - if (CORE.Input.Mouse.cursorHidden) + // To emulate the GLFW_RAW_MOUSE_MOTION property + if (CORE.Input.Mouse.cursorLocked) { - CORE.Input.Mouse.previousPosition.x = lockedMousePos.x - mouseEvent->movementX; - CORE.Input.Mouse.previousPosition.y = lockedMousePos.y - mouseEvent->movementY; + CORE.Input.Mouse.previousPosition.x = CORE.Input.Mouse.lockedPosition.x - mouseEvent->movementX; + CORE.Input.Mouse.previousPosition.y = CORE.Input.Mouse.lockedPosition.y - mouseEvent->movementY; } return 1; // The event was consumed by the callback handler @@ -1654,12 +1652,12 @@ static EM_BOOL EmscriptenMouseMoveCallback(int eventType, const EmscriptenMouseE // Emscripten: Called on pointer lock events static EM_BOOL EmscriptenPointerlockCallback(int eventType, const EmscriptenPointerlockChangeEvent *pointerlockChangeEvent, void *userData) { - CORE.Input.Mouse.cursorHidden = EM_ASM_INT( { if (document.pointerLockElement) return 1; }, 0); + CORE.Input.Mouse.cursorLocked = EM_ASM_INT( { if (document.pointerLockElement) return 1; }, 0); - if (CORE.Input.Mouse.cursorHidden) + if (CORE.Input.Mouse.cursorLocked) { - lockedMousePos = CORE.Input.Mouse.currentPosition; - CORE.Input.Mouse.previousPosition = lockedMousePos; + CORE.Input.Mouse.lockedPosition = CORE.Input.Mouse.currentPosition; + CORE.Input.Mouse.previousPosition = CORE.Input.Mouse.lockedPosition; } return 1; // The event was consumed by the callback handler diff --git a/src/rcore.c b/src/rcore.c index 7eef877e2..b06422bbb 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -333,9 +333,11 @@ typedef struct CoreData { Vector2 scale; // Mouse scaling Vector2 currentPosition; // Mouse position on screen Vector2 previousPosition; // Previous mouse position + Vector2 lockedPosition; // Mouse position when locked int cursor; // Tracks current mouse cursor bool cursorHidden; // Track if cursor is hidden + bool cursorLocked; // Track if cursor is locked (disabled) bool cursorOnScreen; // Tracks if cursor is inside client area char currentButtonState[MAX_MOUSE_BUTTONS]; // Registers current mouse button state From dd19b8d2c20a8bdeb2064683cbfce55cf5e1dd82 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 12 Aug 2025 11:44:20 +0200 Subject: [PATCH 201/328] REVIEWED: Requested window flags application after window initialization --- src/platforms/rcore_desktop_glfw.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index 87874897c..36ea830b9 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -1363,8 +1363,9 @@ int InitPlatform(void) // additionally auto iconify restores the hardware resolution of the monitor if the window that loses focus is a fullscreen window glfwWindowHint(GLFW_AUTO_ICONIFY, 0); - // Keep flags to restore after initialization (for flags not supported on initialization) - unsigned int originalCoreWindowFlags = CORE.Window.flags; + // Window flags requested before initialization to be applied after initialization + unsigned int requetedWindowFlags = CORE.Window.flags; + // Check window creation flags if ((CORE.Window.flags & FLAG_FULLSCREEN_MODE) > 0) CORE.Window.fullscreen = true; @@ -1674,6 +1675,9 @@ int InitPlatform(void) CORE.Window.position.x = posX; CORE.Window.position.y = posY; } + + // Apply window flags requested previous to initialization + SetWindowState(requetedWindowFlags); // Load OpenGL extensions // NOTE: GL procedures address loader is required to load extensions @@ -1727,15 +1731,12 @@ int InitPlatform(void) #if defined(__NetBSD__) // Workaround for NetBSD - char *glfwPlatform = "X11"; + char *glfwPlatform = "X11 (NetBSD)"; #else char *glfwPlatform = ""; switch (glfwGetPlatform()) { - case GLFW_PLATFORM_WIN32: - glfwPlatform = "Win32"; - SetWindowState(originalCoreWindowFlags); - break; + case GLFW_PLATFORM_WIN32: glfwPlatform = "Win32"; break; case GLFW_PLATFORM_COCOA: glfwPlatform = "Cocoa"; break; case GLFW_PLATFORM_WAYLAND: glfwPlatform = "Wayland"; break; case GLFW_PLATFORM_X11: glfwPlatform = "X11"; break; From 76284f1a16bc65316f8bd5a3dc565a0f9eca0005 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 13 Aug 2025 08:13:18 +0200 Subject: [PATCH 202/328] Corrected typo --- src/platforms/rcore_desktop_glfw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index 36ea830b9..92f77d3bc 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -1364,7 +1364,7 @@ int InitPlatform(void) glfwWindowHint(GLFW_AUTO_ICONIFY, 0); // Window flags requested before initialization to be applied after initialization - unsigned int requetedWindowFlags = CORE.Window.flags; + unsigned int requestedWindowFlags = CORE.Window.flags; // Check window creation flags if ((CORE.Window.flags & FLAG_FULLSCREEN_MODE) > 0) CORE.Window.fullscreen = true; @@ -1677,7 +1677,7 @@ int InitPlatform(void) } // Apply window flags requested previous to initialization - SetWindowState(requetedWindowFlags); + SetWindowState(requestedWindowFlags); // Load OpenGL extensions // NOTE: GL procedures address loader is required to load extensions From cd1c2066763b720356fb474374397f7f57cfeb58 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 13 Aug 2025 08:22:00 +0200 Subject: [PATCH 203/328] Update rl_gputex.h --- src/external/rl_gputex.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/external/rl_gputex.h b/src/external/rl_gputex.h index 9773268f5..5311cd119 100644 --- a/src/external/rl_gputex.h +++ b/src/external/rl_gputex.h @@ -585,7 +585,7 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo // KTX 2.0: UInt32 supercompressionScheme - 0 (None), 1 (Crunch CRN), 2 (Zlib DEFLATE)... // KTX 2.0 defines additional header elements... } ktx_header; - + /* Byte[12] identifier UInt32 vkFormat UInt32 typeSize @@ -596,7 +596,7 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo UInt32 faceCount UInt32 levelCount UInt32 supercompressionScheme - + */ // Calculate file data_size required int data_size = sizeof(ktx_header); From b7265c3df1fc3c6787e58dd73af43c1d9d9ca54a Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 13 Aug 2025 08:24:57 +0200 Subject: [PATCH 204/328] Update rexm.ico --- tools/rexm/rexm.ico | Bin 9752 -> 3098 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tools/rexm/rexm.ico b/tools/rexm/rexm.ico index 0cedcc55cee7da0e5784256078a93f2901e5d734..1f917e5dd36053b321b1360d3402947d87272bc3 100644 GIT binary patch literal 3098 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 AR{#J2 From 388bc5075e98c14affcc0dd6c8d83fc966a4c769 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 13 Aug 2025 08:56:50 +0200 Subject: [PATCH 205/328] Update raylib.sln --- projects/VS2022/raylib.sln | 54 +++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 452ba39c5..567602266 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -305,8 +305,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_gpu_skinning", "exam EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_shadowmap", "examples\shaders_shadowmap.vcxproj", "{41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_virtual_controls", "examples\core_input_virtual_controls.vcxproj", "{0981CA28-E4A5-4DF1-987F-A41D09131EFC}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_bone_socket", "examples\models_bone_socket.vcxproj", "{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_vertex_displacement", "examples\shaders_vertex_displacement.vcxproj", "{CCA63A76-D9FC-4130-9F67-4D97F9770D53}" @@ -333,6 +331,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_lightmap", "example EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_positioning", "examples\audio_sound_positioning.vcxproj", "{9CD8BCAD-F212-4BCC-BA98-899743CE3279}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_virtual_controls", "examples\core_input_virtual_controls.vcxproj", "{0981CA28-E4A5-4DF1-987F-A41D09131EFC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -3745,30 +3745,6 @@ Global {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x64.Build.0 = Release|x64 {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x86.ActiveCfg = Release|Win32 {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x86.Build.0 = Release|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.Build.0 = Debug|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.ActiveCfg = Debug|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.Build.0 = Debug|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.ActiveCfg = Debug|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.Build.0 = Debug|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.ActiveCfg = Release|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.Build.0 = Release|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.ActiveCfg = Release|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32 {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 @@ -4081,6 +4057,30 @@ Global {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x64.Build.0 = Release|x64 {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x86.ActiveCfg = Release|Win32 {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x86.Build.0 = Release|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.Build.0 = Debug|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.ActiveCfg = Debug|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.Build.0 = Debug|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.ActiveCfg = Debug|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.Build.0 = Debug|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.ActiveCfg = Release|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.Build.0 = Release|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.ActiveCfg = Release|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -4235,7 +4235,6 @@ Global {FAFEE2F9-24B0-4AF1-B512-433E9590033F} = {278D8859-20B1-428F-8448-064F46E1F021} {8245DAD9-D402-4D5C-8F45-32229CD3B263} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {0981CA28-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {3A7FE53D-35F7-49DC-9C9A-A5204A53523F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {CCA63A76-D9FC-4130-9F67-4D97F9770D53} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} @@ -4249,6 +4248,7 @@ Global {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {C54703BF-D68A-480D-BE27-49B62E45D582} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {9CD8BCAD-F212-4BCC-BA98-899743CE3279} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {0981CA28-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} From 601091b69e2cc0450e277c640b3eb16287af1e0c Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 13 Aug 2025 09:56:22 +0200 Subject: [PATCH 206/328] Update raylib.sln --- projects/VS2022/raylib.sln | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 567602266..03d89d718 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -21,7 +21,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shaders", "shaders", "{5317 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "audio", "audio", "{CC132A4D-D081-4C26-BFB9-AB11984054F8}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "other", "other", "{E9D708A5-9C1F-4B84-A795-C5F191801762}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "others", "others", "{E9D708A5-9C1F-4B84-A795-C5F191801762}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_window", "examples\core_basic_window.vcxproj", "{0981CA98-E4A5-4DF1-987F-A41D09131EFC}" EndProject From 8c7b3b73233f5a27b67bb989b8c876084543d6d0 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 13 Aug 2025 10:38:04 +0200 Subject: [PATCH 207/328] Update examples_report.md --- tools/rexm/examples_report.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/tools/rexm/examples_report.md b/tools/rexm/examples_report.md index 6fa79bd50..17a535dc6 100644 --- a/tools/rexm/examples_report.md +++ b/tools/rexm/examples_report.md @@ -143,24 +143,24 @@ Example elements validated: | shaders_postprocessing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_palette_switch | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_raymarching | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_texture_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_texture_outline | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_texture_waves | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_julia_set | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_eratosthenes | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_texture_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_texture_outline | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_texture_waves | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_julia_set | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_eratosthenes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_fog | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_simple_mask | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_hot_reloading | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_mesh_instancing | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_multi_sample2d | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_normalmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ❌ | ❌ | ❌ | ❌ | -| shaders_spotlight | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_deferred_render | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_hybrid_render | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_texture_tiling | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_shadowmap | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_vertex_displacement | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_write_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_simple_mask | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_hot_reloading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_mesh_instancing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_multi_sample2d | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_normalmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | +| shaders_spotlight | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_deferred_render | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_hybrid_render | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_texture_tiling | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_shadowmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_vertex_displacement | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_write_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_basic_pbr | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_lightmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_rounded_rectangle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | From 74339d2008e976c04856ee0b5adbc46c58d10058 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 13 Aug 2025 10:43:33 +0200 Subject: [PATCH 208/328] REVIEWED: `IsFileExtension()` --- src/rcore.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/rcore.c b/src/rcore.c index b06422bbb..1a961b5ad 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -1949,12 +1949,15 @@ bool IsFileExtension(const char *fileName, const char *ext) bool result = false; const char *fileExt = GetFileExtension(fileName); + // WARNING: fileExt points to last '.' on fileName string but it could happen + // that fileName is not correct: "myfile.png more text following\n" + if (fileExt != NULL) { - int fileExtLen = strlen(fileExt); - char fileExtLower[8] = { 0 }; + int fileExtLen = (int)strlen(fileExt); + char fileExtLower[16] = { 0 }; char *fileExtLowerPtr = fileExtLower; - for (int i = 0; i < fileExtLen; i++) + for (int i = 0; (i < fileExtLen) && (i < 16); i++) { // Copy and convert to lower-case if ((fileExt[i] >= 'A') && (fileExt[i] <= 'Z')) fileExtLower[i] = fileExt[i] + 32; @@ -1962,7 +1965,7 @@ bool IsFileExtension(const char *fileName, const char *ext) } int extCount = 1; - int extLen = strlen(ext); + int extLen = (int)strlen(ext); char *extList = (char *)RL_CALLOC(extLen + 1, 1); char *extListPtrs[MAX_FILE_EXTENSIONS] = { 0 }; strcpy(extList, ext); @@ -2047,11 +2050,12 @@ int GetFileLength(const char *fileName) } // Get pointer to extension for a filename string (includes the dot: .png) +// WARNING: We just get the ptr but not the extension as a separate string const char *GetFileExtension(const char *fileName) { - const char *dot = strrchr(fileName, '.'); + const char *dot = strrchr(fileName, '.'); - if (!dot || dot == fileName) return NULL; + if (!dot || (dot == fileName)) return NULL; return dot; } From ef811457768e5ef38593ec3df56faa3d92515218 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 13 Aug 2025 11:35:23 +0200 Subject: [PATCH 209/328] Update examples_list.txt --- examples/examples_list.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/examples_list.txt b/examples/examples_list.txt index 230656000..4c8dd308a 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -23,6 +23,7 @@ core;core_3d_camera_mode;⭐️☆☆☆;1.0;1.0;"Ramon Santamaria";@raysan5 core;core_3d_camera_free;⭐️☆☆☆;1.3;1.3;"Ramon Santamaria";@raysan5 core;core_3d_camera_first_person;⭐️⭐️☆☆;1.3;1.3;"Ramon Santamaria";@raysan5 core;core_3d_camera_split_screen;⭐️⭐️⭐️☆;3.7;4.0;"Jeffery Myers";@JeffM2501 +core;core_3d_fps_controller;⭐️⭐️⭐️☆;5.5;5.5;"Agnis Aldins";@nezvers core;core_3d_picking;⭐️⭐️☆☆;1.3;4.0;"Ramon Santamaria";@raysan5 core;core_world_screen;⭐️⭐️☆☆;1.3;1.4;"Ramon Santamaria";@raysan5 core;core_custom_logging;⭐️⭐️⭐️☆;2.5;2.5;"Pablo Marcos Oltra";@pamarcos From 800be084b6c4946466972c028563ed3cc2a3b3a0 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 13 Aug 2025 12:33:12 +0200 Subject: [PATCH 210/328] REXM: Implemented `AddVSProjectToSolution()` --- tools/rexm/rexm.c | 169 +++++++++++++++++++++++++++++++++------------- 1 file changed, 121 insertions(+), 48 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 0e69d8f9c..125815ee2 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -121,6 +121,7 @@ static const char *exWebPath = NULL; // Env: REXM_EXAMPLES_WEB_PATH static const char *exTemplateFilePath = NULL; // Env: REXM_EXAMPLES_TEMPLATE_FILE_PATH static const char *exTemplateScreenshot = NULL; // Env: REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH static const char *exCollectionFilePath = NULL; // Env: REXM_EXAMPLES_COLLECTION_FILE_PATH +static const char *exVSProjectSolutionFile = "C:/GitHub/raylib/projects/VS2022/raylib.sln"; //---------------------------------------------------------------------------------- // Module specific functions declaration @@ -166,7 +167,7 @@ static char **ScanExampleResources(const char *filePath, int *resPathCount); static void ClearExampleResources(char **resPaths); // Add VS project (.vcxproj) to existing VS solution (.sol) -static int AddVSProjectToSolution(const char *projFile, const char *solFile); +static int AddVSProjectToSolution(const char *projFile, const char *slnFile, const char *category); //------------------------------------------------------------------------------------ // Program main entry point @@ -518,8 +519,10 @@ int main(int argc, char *argv[]) "..\\..\\examples\\core", TextFormat("..\\..\\examples\\%s", exCategory)); // Edit: raylib/projects/VS2022/raylib.sln --> Add new example project + // WARNING: This function uses TextFormat() extensively inside, + // we must store provided file paths because pointers will be overwriten AddVSProjectToSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), - TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath)); + exVSProjectSolutionFile, exCategory); //------------------------------------------------------------------------------------------------ // Recompile example (on raylib side) @@ -644,7 +647,7 @@ int main(int argc, char *argv[]) int exIndex = TextFindIndex(exCollectionList, TextFormat("%s;%s", exCategory, exName)); if (exIndex > 0) // Example found { - char *exCollectionListUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated list copy, 2MB + char *exCollectionListUpdated = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); // Updated list copy, 2MB memcpy(exCollectionListUpdated, exCollectionList, exIndex); int lineLen = 0; @@ -961,8 +964,8 @@ int main(int argc, char *argv[]) // Add project (.vcxproj) to raylib solution (.sln) if (exInfo->status & VALID_NOT_IN_VCXSOL) { - AddVSProjectToSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), - TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath)); + AddVSProjectToSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), + exVSProjectSolutionFile, exInfo->category); } // Review: Add/Remove: raylib.com/examples//_example_name.html @@ -1775,56 +1778,126 @@ static void ClearExampleResources(char **resPaths) // - "dotnet" tool (C# projects only) // - "devenv" tool (no adding support, only building) // It must be done manually editing the .sln file -static int AddVSProjectToSolution(const char *projFile, const char *solFile) +static int AddVSProjectToSolution(const char *projFile, const char *slnFile, char *category) { int result = 0; - // Generate unique UUID: - // Make sure the file is found and the UUID generated is valid - // C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\uuidgen.exe > saved_uuid.txt + //WARNING: Function uses extensively TextFormat(), *projFile ptr will be overwriten after a while - // Add project to the list: + // Generate unique UUID + // WARNING: Make sure the file is found and the UUID generated is valid + const char *uuidGenPath = "C:/Program Files (x86)/Windows Kits/10/bin/10.0.26100.0/x64/uuidgen.exe"; + + char uuid[38] = { 0 }; + if (FileExists(uuidGenPath)) + { + system(TextFormat("\"%s\" > gen_uuid.txt", uuidGenPath)); + char *uuidText = LoadFileText("gen_uuid.txt"); + if (uuidText != NULL) strncpy(uuid, TextToUpper(uuidText), 36); + UnloadFileText(uuidText); + } + else LOG("WARNING: Tool not found: uuidgen.exe, UUID can not be generated\n"); + + // Replace default UUID (core_basic_window) on project file by new one + FileTextReplace(projFile, "0981CA98-E4A5-4DF1-987F-A41D09131EFC", uuid); + + char *slnText = LoadFileText(slnFile); + char *slnTextUpdated = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); + + // Add project to solution + //---------------------------------------------------------------------------------------- // Format: Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "", "examples\.vcxproj", "{}" - /* - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_window", "examples\core_basic_window.vcxproj", "{0981CA98-E4A5-4DF1-987F-A41D09131EFC}" - EndProject - */ + // NOTE: Find a position to insert new project: At the end of the projects list, same strategy as VS2022 "Add Project" + int prjStartIndex = TextFindIndex(slnText, "Global"); - // Update project config: - /* - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|ARM64.Build.0 = Debug|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x64.ActiveCfg = Debug|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x64.Build.0 = Debug|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x86.ActiveCfg = Debug|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x86.Build.0 = Debug|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|ARM64.ActiveCfg = Release|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|ARM64.Build.0 = Release|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x64.ActiveCfg = Release|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x64.Build.0 = Release|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x86.ActiveCfg = Release|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x86.Build.0 = Release|Win32 - */ + // Add new project info + // WARNING: UUID can actually be duplicated and it still works... + strncpy(slnTextUpdated, slnText, prjStartIndex); + int offsetIndex = sprintf(slnTextUpdated + prjStartIndex, + TextFormat("Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"%s\", \"examples\\%s\", \"{%s}\"\n", + GetFileNameWithoutExt(projFile), GetFileName(projFile), uuid)); + offsetIndex += prjStartIndex; + offsetIndex += sprintf(slnTextUpdated + offsetIndex, "EndProject\n"); + //---------------------------------------------------------------------------------------- + + // Update project config + //---------------------------------------------------------------------------------------- + // Find position to add project config: At the end of global section, same strategy as VS2022 "Add Project" + int projConfStartIndex = TextFindIndex(slnText, "GlobalSection(ProjectConfigurationPlatforms) = postSolution"); + strncpy(slnTextUpdated + offsetIndex, slnText + prjStartIndex, projConfStartIndex - prjStartIndex); + offsetIndex += (projConfStartIndex - prjStartIndex); - // Update projects to folders: - // {project_uuid} = {solution_folder_uuid} - /* - GlobalSection(NestedProjects) = preSolution - {0981CA98-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - */ + int projConfEndIndex = TextFindIndex(slnText + projConfStartIndex, "EndGlobalSection"); + projConfEndIndex += projConfStartIndex; + + strncpy(slnTextUpdated + offsetIndex, slnText + projConfStartIndex, projConfEndIndex - projConfStartIndex); + offsetIndex += (projConfEndIndex - projConfStartIndex); + + // Add project config lines + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t{%s}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Debug.DLL|x64.Build.0 = Debug.DLL|x64\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Debug|ARM64.ActiveCfg = Debug|ARM64\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Debug|ARM64.Build.0 = Debug|ARM64\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Debug|x64.ActiveCfg = Debug|x64\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Debug|x64.Build.0 = Debug|x64\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Debug|x86.ActiveCfg = Debug|Win32\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Debug|x86.Build.0 = Debug|Win32\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Release.DLL|x64.ActiveCfg = Release.DLL|x64\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Release.DLL|x64.Build.0 = Release.DLL|x64\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Release.DLL|x86.Build.0 = Release.DLL|Win32\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Release|ARM64.ActiveCfg = Release|ARM64\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Release|ARM64.Build.0 = Release|ARM64\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Release|x64.ActiveCfg = Release|x64\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Release|x64.Build.0 = Release|x64\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Release|x86.ActiveCfg = Release|Win32\n", uuid)); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s}.Release|x86.Build.0 = Release|Win32\n", uuid)); + // Write next section directly to avoid copy logic + offsetIndex += sprintf(slnTextUpdated + offsetIndex, "\tEndGlobalSection\n"); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, "\tGlobalSection(SolutionProperties) = preSolution\n"); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, "\t\tHideSolutionNode = FALSE\n"); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, "\tEndGlobalSection\n\t"); + //---------------------------------------------------------------------------------------- + + // Place project to explorer folder + //---------------------------------------------------------------------------------------- + // Find position to add project folder: At the end of global section, same strategy as VS2022 "Add Project" + int projFolderStartIndex = TextFindIndex(slnText, "GlobalSection(NestedProjects) = preSolution"); + int projFolderEndIndex = TextFindIndex(slnText + projFolderStartIndex, "\tEndGlobalSection"); + projFolderEndIndex += projFolderStartIndex; + + strncpy(slnTextUpdated + offsetIndex, slnText + projFolderStartIndex, projFolderEndIndex - projFolderStartIndex); + offsetIndex += (projFolderEndIndex - projFolderStartIndex); + + // Add project folder line + // NOTE: Folder uuid depends on category + if (strcmp(category, "core") == 0) offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035}\n", uuid)); + else if (strcmp(category, "shapes") == 0) offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s} = {278D8859-20B1-428F-8448-064F46E1F021}\n", uuid)); + else if (strcmp(category, "textures") == 0) offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE}\n", uuid)); + else if (strcmp(category, "text") == 0) offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A}\n", uuid)); + else if (strcmp(category, "models") == 0) offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C}\n", uuid)); + else if (strcmp(category, "shaders") == 0) offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9}\n", uuid)); + else if (strcmp(category, "audio") == 0) offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s} = {CC132A4D-D081-4C26-BFB9-AB11984054F8}\n", uuid)); + else if (strcmp(category, "other") == 0) offsetIndex += sprintf(slnTextUpdated + offsetIndex, TextFormat("\t\t{%s} = {E9D708A5-9C1F-4B84-A795-C5F191801762}\n", uuid)); + else LOG("WARNING: Provided category is not valid: %s\n", category); + //---------------------------------------------------------------------------------------- + + // Write end of file, no need to copy from original file + offsetIndex += sprintf(slnTextUpdated + offsetIndex, "\tEndGlobalSection\n"); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, "\tGlobalSection(ExtensibilityGlobals) = postSolution\n"); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, "\t\tSolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29}\n"); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, "\tEndGlobalSection\n"); + offsetIndex += sprintf(slnTextUpdated + offsetIndex, "EndGlobal\n"); + + SaveFileText(slnFile, slnTextUpdated); + UnloadFileText(slnText); + RL_FREE(slnTextUpdated); return result; } From a7e66df56d6c9f8d99cbcd21331964cadc7c7419 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 13 Aug 2025 12:33:38 +0200 Subject: [PATCH 211/328] Using define for buffers size --- tools/rexm/rexm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 125815ee2..761fca0ee 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -448,7 +448,7 @@ int main(int argc, char *argv[]) char *exCollectionList = LoadFileText(exCollectionFilePath); if (TextFindIndex(exCollectionList, exName) == -1) // Example not found { - char *exCollectionListUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated list copy, 2MB + char *exCollectionListUpdated = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); // Updated list copy, 2MB // Add example to the main list, by category // by default add it last in the category list @@ -1051,7 +1051,7 @@ static int UpdateRequiredFiles(void) // Edit: raylib/examples/Makefile --> Update from collection //------------------------------------------------------------------------------------------------ char *mkText = LoadFileText(TextFormat("%s/Makefile", exBasePath)); - char *mkTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated Makefile copy, 2MB + char *mkTextUpdated = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); // Updated Makefile copy, 2MB int mkListStartIndex = TextFindIndex(mkText, "#EXAMPLES_LIST_START"); int mkListEndIndex = TextFindIndex(mkText, "#EXAMPLES_LIST_END"); @@ -1086,7 +1086,7 @@ static int UpdateRequiredFiles(void) // NOTE: We avoid the "others" category on web building //------------------------------------------------------------------------------------------------ char *mkwText = LoadFileText(TextFormat("%s/Makefile.Web", exBasePath)); - char *mkwTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated Makefile copy, 2MB + char *mkwTextUpdated = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); // Updated Makefile copy, 2MB int mkwListStartIndex = TextFindIndex(mkwText, "#EXAMPLES_LIST_START"); int mkwListEndIndex = TextFindIndex(mkwText, "#EXAMPLES_LIST_END"); @@ -1206,7 +1206,7 @@ static int UpdateRequiredFiles(void) // NOTE: Using [examples_list.txt] to update/regen README.md // Lines format: | 01 | [core_basic_window](core/core_basic_window.c) | core_basic_window | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | char *mdText = LoadFileText(TextFormat("%s/README.md", exBasePath)); - char *mdTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated examples.js copy, 2MB + char *mdTextUpdated = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); // Updated examples.js copy, 2MB int mdListStartIndex = TextFindIndex(mdText, "## EXAMPLES COLLECTION"); @@ -1312,7 +1312,7 @@ static int UpdateRequiredFiles(void) // NOTE: Entries format: exampleEntry('⭐️☆☆☆' , 'core' , 'basic_window'), //------------------------------------------------------------------------------------------------ char *jsText = LoadFileText(TextFormat("%s/../common/examples.js", exWebPath)); - char *jsTextUpdated = (char *)RL_CALLOC(2*1024*1024, 1); // Updated examples.js copy, 2MB + char *jsTextUpdated = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); // Updated examples.js copy, 2MB int jsListStartIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_START"); int jsListEndIndex = TextFindIndex(jsText, "//EXAMPLE_DATA_LIST_END"); From ddebf5d7acc64fe8522de42013984ecc2d36a7c4 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 13 Aug 2025 12:34:55 +0200 Subject: [PATCH 212/328] Update Makefile.Web --- examples/Makefile.Web | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 41975c95d..6b0f9b225 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -704,7 +704,8 @@ core/core_3d_camera_split_screen: core/core_3d_camera_split_screen.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) core/core_3d_fps_controller: core/core_3d_fps_controller.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ + --preload-file core/resources/huh_jump.wav@resources/huh_jump.wav core/core_3d_picking: core/core_3d_picking.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) From b17f00b6d9f5a5b0a27519bf164ec06771adc08e Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 13 Aug 2025 13:25:27 +0200 Subject: [PATCH 213/328] REXM: Avoid external tool for UUIDv4 generation, implement custom function --- tools/rexm/rexm.c | 46 +++++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 761fca0ee..35f25bc54 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -169,6 +169,10 @@ static void ClearExampleResources(char **resPaths); // Add VS project (.vcxproj) to existing VS solution (.sol) static int AddVSProjectToSolution(const char *projFile, const char *slnFile, const char *category); +// Generate unique UUID v4 string +// Output format: {9A2F48CC-0DA8-47C0-884E-02E37F9BE6C1} +const char *GenerateUUIDv4(void); + //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ @@ -1782,21 +1786,11 @@ static int AddVSProjectToSolution(const char *projFile, const char *slnFile, cha { int result = 0; - //WARNING: Function uses extensively TextFormat(), *projFile ptr will be overwriten after a while + // WARNING: Function uses extensively TextFormat(), + // *projFile ptr will be overwriten after a while // Generate unique UUID - // WARNING: Make sure the file is found and the UUID generated is valid - const char *uuidGenPath = "C:/Program Files (x86)/Windows Kits/10/bin/10.0.26100.0/x64/uuidgen.exe"; - - char uuid[38] = { 0 }; - if (FileExists(uuidGenPath)) - { - system(TextFormat("\"%s\" > gen_uuid.txt", uuidGenPath)); - char *uuidText = LoadFileText("gen_uuid.txt"); - if (uuidText != NULL) strncpy(uuid, TextToUpper(uuidText), 36); - UnloadFileText(uuidText); - } - else LOG("WARNING: Tool not found: uuidgen.exe, UUID can not be generated\n"); + char *uuid = GenerateUUIDv4(); // Replace default UUID (core_basic_window) on project file by new one FileTextReplace(projFile, "0981CA98-E4A5-4DF1-987F-A41D09131EFC", uuid); @@ -1901,3 +1895,29 @@ static int AddVSProjectToSolution(const char *projFile, const char *slnFile, cha return result; } + +// Generate unique UUID v4 string +// Output format: {9A2F48CC-0DA8-47C0-884E-02E37F9BE6C1} +const char *GenerateUUIDv4(void) +{ + static char uuid[38] = { 0 }; + memset(uuid, 0, 38); + + unsigned char bytes[16] = { 0 }; + + for (int i = 0; i < 16; i++) bytes[i] = (unsigned char)GetRandomValue(0, 255); + + // Set version (4) and variant (RFC 4122) + bytes[6] = (bytes[6] & 0x0F) | 0x40; // Version + bytes[8] = (bytes[8] & 0x3F) | 0x80; // Variant + + snprintf(uuid, 38, + "%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X", + bytes[0], bytes[1], bytes[2], bytes[3], + bytes[4], bytes[5], + bytes[6], bytes[7], + bytes[8], bytes[9], + bytes[10], bytes[11], bytes[12], bytes[13], bytes[14], bytes[15]); + + return uuid; +} From f0131f6ee6233e8bc9960a2719b7bd0964d99a53 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 13 Aug 2025 23:53:35 +0200 Subject: [PATCH 214/328] Added missing project to solution --- .../examples/core_3d_fps_controller.vcxproj | 569 ++++++++++++++++++ projects/VS2022/raylib.sln | 27 + 2 files changed, 596 insertions(+) create mode 100644 projects/VS2022/examples/core_3d_fps_controller.vcxproj diff --git a/projects/VS2022/examples/core_3d_fps_controller.vcxproj b/projects/VS2022/examples/core_3d_fps_controller.vcxproj new file mode 100644 index 000000000..c0b8561a4 --- /dev/null +++ b/projects/VS2022/examples/core_3d_fps_controller.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {6B1A933E-71B8-4C1F-9E79-02D98830E671} + Win32Proj + core_3d_fps_controller + 10.0 + core_3d_fps_controller + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 03d89d718..bee8fcc42 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -333,6 +333,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_positioning", " EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_virtual_controls", "examples\core_input_virtual_controls.vcxproj", "{0981CA28-E4A5-4DF1-987F-A41D09131EFC}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_fps_controller", "examples\core_3d_fps_controller.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -4081,6 +4083,30 @@ Global {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64 {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32 {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -4249,6 +4275,7 @@ Global {C54703BF-D68A-480D-BE27-49B62E45D582} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {9CD8BCAD-F212-4BCC-BA98-899743CE3279} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} {0981CA28-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} From 3c9d3d9bef35ecd38cc2aa1fba28f9b43cb221e3 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 13 Aug 2025 23:54:44 +0200 Subject: [PATCH 215/328] REXM: REVIEWED: Update examples status report when examples Updated --- tools/rexm/rexm.c | 149 +++++++++++++++++++++++++--------------------- 1 file changed, 80 insertions(+), 69 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 35f25bc54..36ed414a1 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -862,6 +862,86 @@ int main(int argc, char *argv[]) UnloadExampleInfo(exInfoHeader); } + if (opCode == OP_UPDATE) + { + // Actions to fix/review anything possible from validation results + //------------------------------------------------------------------------------------------------ + // Check examples "status" information + for (int i = 0; i < exCollectionCount; i++) + { + rlExampleInfo *exInfo = &exCollection[i]; + + if (exInfo->status & VALID_MISSING_C) LOG("WARNING: [%s] Missing code file\n", exInfo->name); + else + { + // NOTE: Some issues can not be automatically fixed, only logged + //if (exInfo->status & VALID_MISSING_PNG) LOG("WARNING: [%s] Missing screenshot file\n", exInfo->name); + //if (exInfo->status & VALID_INVALID_PNG) LOG("WARNING: [%s] Invalid screenshot file (using template)\n", exInfo->name); + //if (exInfo->status & VALID_MISSING_RESOURCES) LOG("WARNING: [%s] Missing resources detected\n", exInfo->name); + //if (exInfo->status & VALID_INCONSISTENT_INFO) LOG("WARNING: [%s] Inconsistent example header info\n", exInfo->name); + //if (exInfo->status & VALID_INVALID_CATEGORY) LOG("WARNING: [%s] Invalid example category\n", exInfo->name); + + // Review: Add: raylib/projects/VS2022/examples/_example_name.vcxproj + // Review: Add: raylib/projects/VS2022/raylib.sln + // Solves: VALID_MISSING_VCXPROJ, VALID_NOT_IN_VCXSOL + if (exInfo->status & VALID_MISSING_VCXPROJ) + { + FileCopy(TextFormat("%s/../projects/VS2022/examples/core_basic_window.vcxproj", exBasePath), + TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name)); + FileTextReplace(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), + "core_basic_window", exInfo->name); + FileTextReplace(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), + "..\\..\\examples\\core", TextFormat("..\\..\\examples\\%s", exInfo->category)); + + exInfo->status |= VALID_MISSING_VCXPROJ; + } + + // Add project (.vcxproj) to raylib solution (.sln) + if (exInfo->status & VALID_NOT_IN_VCXSOL) + { + AddVSProjectToSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), + exVSProjectSolutionFile, exInfo->category); + + exInfo->status |= VALID_NOT_IN_VCXSOL; + } + + // Review: Add/Remove: raylib.com/examples//_example_name.html + // Review: Add/Remove: raylib.com/examples//_example_name.data + // Review: Add/Remove: raylib.com/examples//_example_name.wasm + // Review: Add/Remove: raylib.com/examples//_example_name.js + // Solves: VALID_MISSING_WEB_OUTPUT + if (exInfo->status & VALID_MISSING_WEB_OUTPUT) + { + system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); + + // Copy results to web side + FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exInfo->category, exInfo->name), + TextFormat("%s/%s/%s.html", exWebPath, exInfo->category, exInfo->name)); + FileCopy(TextFormat("%s/%s/%s.data", exBasePath, exInfo->category, exInfo->name), + TextFormat("%s/%s/%s.data", exWebPath, exInfo->category, exInfo->name)); + FileCopy(TextFormat("%s/%s/%s.wasm", exBasePath, exInfo->category, exInfo->name), + TextFormat("%s/%s/%s.wasm", exWebPath, exInfo->category, exInfo->name)); + FileCopy(TextFormat("%s/%s/%s.js", exBasePath, exInfo->category, exInfo->name), + TextFormat("%s/%s/%s.js", exWebPath, exInfo->category, exInfo->name)); + + exInfo->status |= VALID_MISSING_WEB_OUTPUT; + } + } + } + + // Update files: Makefile, Makefile.Web, README.md, examples.js + // Solves: VALID_NOT_IN_MAKEFILE, VALID_NOT_IN_MAKEFILE_WEB, VALID_NOT_IN_README, VALID_NOT_IN_JS + UpdateRequiredFiles(); + for (int i = 0; i < exCollectionCount; i++) + { + exCollection[i].status |= VALID_NOT_IN_MAKEFILE; + exCollection[i].status |= VALID_NOT_IN_MAKEFILE_WEB; + exCollection[i].status |= VALID_NOT_IN_README; + exCollection[i].status |= VALID_NOT_IN_JS; + } + //------------------------------------------------------------------------------------------------ + } + // Generate validation report/table with results (.md) /* Columns: @@ -931,75 +1011,6 @@ int main(int argc, char *argv[]) SaveFileText(TextFormat("%s/../tools/rexm/%s", exBasePath, "examples_report.md"), report); RL_FREE(report); - //UnloadExamplesData(exCollection); // Done at the end, it can be required for fixing - - if (opCode == OP_UPDATE) - { - // Actions to fix/review anything possible from validation results - //------------------------------------------------------------------------------------------------ - // Check examples "status" information - for (int i = 0; i < exCollectionCount; i++) - { - rlExampleInfo *exInfo = &exCollection[i]; - - if (exInfo->status & VALID_MISSING_C) LOG("WARNING: [%s] Missing code file\n", exInfo->name); - else - { - // NOTE: Some issues can not be automatically fixed, only logged - //if (exInfo->status & VALID_MISSING_PNG) LOG("WARNING: [%s] Missing screenshot file\n", exInfo->name); - //if (exInfo->status & VALID_INVALID_PNG) LOG("WARNING: [%s] Invalid screenshot file (using template)\n", exInfo->name); - //if (exInfo->status & VALID_MISSING_RESOURCES) LOG("WARNING: [%s] Missing resources detected\n", exInfo->name); - //if (exInfo->status & VALID_INCONSISTENT_INFO) LOG("WARNING: [%s] Inconsistent example header info\n", exInfo->name); - //if (exInfo->status & VALID_INVALID_CATEGORY) LOG("WARNING: [%s] Invalid example category\n", exInfo->name); - - // Review: Add: raylib/projects/VS2022/examples/_example_name.vcxproj - // Review: Add: raylib/projects/VS2022/raylib.sln - // Solves: VALID_MISSING_VCXPROJ, VALID_NOT_IN_VCXSOL - if (exInfo->status & VALID_MISSING_VCXPROJ) - { - FileCopy(TextFormat("%s/../projects/VS2022/examples/core_basic_window.vcxproj", exBasePath), - TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name)); - FileTextReplace(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), - "core_basic_window", exInfo->name); - FileTextReplace(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), - "..\\..\\examples\\core", TextFormat("..\\..\\examples\\%s", exInfo->category)); - } - - // Add project (.vcxproj) to raylib solution (.sln) - if (exInfo->status & VALID_NOT_IN_VCXSOL) - { - AddVSProjectToSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), - exVSProjectSolutionFile, exInfo->category); - } - - // Review: Add/Remove: raylib.com/examples//_example_name.html - // Review: Add/Remove: raylib.com/examples//_example_name.data - // Review: Add/Remove: raylib.com/examples//_example_name.wasm - // Review: Add/Remove: raylib.com/examples//_example_name.js - // Solves: VALID_MISSING_WEB_OUTPUT - if (exInfo->status & VALID_MISSING_WEB_OUTPUT) - { - system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); - - // Copy results to web side - FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exInfo->category, exInfo->name), - TextFormat("%s/%s/%s.html", exWebPath, exInfo->category, exInfo->name)); - FileCopy(TextFormat("%s/%s/%s.data", exBasePath, exInfo->category, exInfo->name), - TextFormat("%s/%s/%s.data", exWebPath, exInfo->category, exInfo->name)); - FileCopy(TextFormat("%s/%s/%s.wasm", exBasePath, exInfo->category, exInfo->name), - TextFormat("%s/%s/%s.wasm", exWebPath, exInfo->category, exInfo->name)); - FileCopy(TextFormat("%s/%s/%s.js", exBasePath, exInfo->category, exInfo->name), - TextFormat("%s/%s/%s.js", exWebPath, exInfo->category, exInfo->name)); - } - } - } - - // Update files: Makefile, Makefile.Web, README.md, examples.js - // Solves: VALID_NOT_IN_MAKEFILE, VALID_NOT_IN_MAKEFILE_WEB, VALID_NOT_IN_README, VALID_NOT_IN_JS - UpdateRequiredFiles(); - //------------------------------------------------------------------------------------------------ - } - UnloadExamplesData(exCollection); //------------------------------------------------------------------------------------------------ From 93f86fa07413709749e5bad2823e2553515df44d Mon Sep 17 00:00:00 2001 From: Didas72 Date: Thu, 14 Aug 2025 14:30:29 +0100 Subject: [PATCH 216/328] fixes #5110 Adds more filters for conditional build of GetWindowHandle with glfw --- src/platforms/rcore_desktop_glfw.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index 92f77d3bc..81a6a41f3 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -75,13 +75,15 @@ #include // Required for: timespec, nanosleep(), select() - POSIX //#define GLFW_EXPOSE_NATIVE_WAYLAND - #define GLFW_EXPOSE_NATIVE_X11 - #define Font X11Font // Hack to fix 'Font' name collision - // The definition and references to the X11 Font type will be replaced by 'X11Font' - // Works as long as the current file consistently references any X11 Font as X11Font - // Since it is never referenced (as of writting), this does not pose an issue - #include "GLFW/glfw3native.h" // Required for: glfwGetX11Window() - #undef Font // Revert hack and allow normal raylib Font usage + #ifdef _GLFW_X11 + #define GLFW_EXPOSE_NATIVE_X11 + #define Font X11Font // Hack to fix 'Font' name collision + // The definition and references to the X11 Font type will be replaced by 'X11Font' + // Works as long as the current file consistently references any X11 Font as X11Font + // Since it is never referenced (as of writting), this does not pose an issue + #include "GLFW/glfw3native.h" // Required for: glfwGetX11Window() + #undef Font // Revert hack and allow normal raylib Font usage + #endif #endif #if defined(__APPLE__) #include // Required for: usleep() @@ -710,7 +712,7 @@ void SetWindowFocused(void) glfwFocusWindow(platform.handle); } -#if defined(__linux__) +#if defined(__linux__) && defined(_GLFW_X11) // Local storage for the window handle returned by glfwGetX11Window // This is needed as X11 handles are integers and may not fit inside a pointer depending on platform // Storing the handle locally and returning a pointer in GetWindowHandle allows the code to work regardless of pointer width @@ -723,7 +725,7 @@ void *GetWindowHandle(void) // NOTE: Returned handle is: void *HWND (windows.h) return glfwGetWin32Window(platform.handle); #endif -#if defined(__linux__) +#if defined(__linux__) && defined(_GLFW_X11) // Store the window handle localy and return a pointer to the variable instead // Reasoning detailed in the declaration of X11WindowHandle X11WindowHandle = glfwGetX11Window(platform.handle); From 59c979a59d35215c4ca29a3c359dc9db2bc99ba4 Mon Sep 17 00:00:00 2001 From: Diogo Diniz Date: Thu, 14 Aug 2025 18:46:45 +0100 Subject: [PATCH 217/328] Added suggestions by planetis-m --- src/platforms/rcore_desktop_glfw.c | 43 ++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index 81a6a41f3..f903af741 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -74,17 +74,29 @@ #if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) #include // Required for: timespec, nanosleep(), select() - POSIX - //#define GLFW_EXPOSE_NATIVE_WAYLAND - #ifdef _GLFW_X11 +#if defined(_GLFW_X11) || defined(_GLFW_WAYLAND) + // Set appropriate expose macros based on available backends + #if defined(_GLFW_X11) #define GLFW_EXPOSE_NATIVE_X11 #define Font X11Font // Hack to fix 'Font' name collision // The definition and references to the X11 Font type will be replaced by 'X11Font' // Works as long as the current file consistently references any X11 Font as X11Font // Since it is never referenced (as of writting), this does not pose an issue - #include "GLFW/glfw3native.h" // Required for: glfwGetX11Window() + #endif + + #if defined(_GLFW_WAYLAND) + #define GLFW_EXPOSE_NATIVE_WAYLAND + #endif + + // Include native header only once, regardless of how many backends are defined + #include "GLFW/glfw3native.h" // Required for: glfwGetX11Window() and glfwGetWaylandWindow() + + // Clean up X11-specific hacks + #if defined(_GLFW_X11) #undef Font // Revert hack and allow normal raylib Font usage #endif #endif +#endif #if defined(__APPLE__) #include // Required for: usleep() @@ -725,11 +737,26 @@ void *GetWindowHandle(void) // NOTE: Returned handle is: void *HWND (windows.h) return glfwGetWin32Window(platform.handle); #endif -#if defined(__linux__) && defined(_GLFW_X11) - // Store the window handle localy and return a pointer to the variable instead - // Reasoning detailed in the declaration of X11WindowHandle - X11WindowHandle = glfwGetX11Window(platform.handle); - return &X11WindowHandle; +#if defined(__linux__) + #if defined(_GLFW_WAYLAND) + #if defined(_GLFW_X11) + int platformID = glfwGetPlatform(); + if (platformID == GLFW_PLATFORM_WAYLAND) { + return glfwGetWaylandWindow(platform.handle); + } + else { + X11WindowHandle = glfwGetX11Window(platform.handle); + return &X11WindowHandle; + } + #else + return glfwGetWaylandWindow(platform.handle); + #endif + #else if defined(_GLFW_X11) + // Store the window handle localy and return a pointer to the variable instead + // Reasoning detailed in the declaration of X11WindowHandle + X11WindowHandle = glfwGetX11Window(platform.handle); + return &X11WindowHandle; + #endif #endif #if defined(__APPLE__) // NOTE: Returned handle is: (objc_object *) From eae1296b08317e485320d722fc0f54ab5b91ba12 Mon Sep 17 00:00:00 2001 From: Diogo Diniz Date: Thu, 14 Aug 2025 18:56:31 +0100 Subject: [PATCH 218/328] Fixed bad macro logic --- src/platforms/rcore_desktop_glfw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index f903af741..46ced651c 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -751,7 +751,7 @@ void *GetWindowHandle(void) #else return glfwGetWaylandWindow(platform.handle); #endif - #else if defined(_GLFW_X11) + #elif defined(_GLFW_X11) // Store the window handle localy and return a pointer to the variable instead // Reasoning detailed in the declaration of X11WindowHandle X11WindowHandle = glfwGetX11Window(platform.handle); From be974bb67ee35fed0c0b8e1478ca3d165f8b1eeb Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 14 Aug 2025 20:36:08 +0200 Subject: [PATCH 219/328] Update CONVENTIONS.md --- CONVENTIONS.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CONVENTIONS.md b/CONVENTIONS.md index 17c02e216..58cfa6270 100644 --- a/CONVENTIONS.md +++ b/CONVENTIONS.md @@ -11,7 +11,7 @@ Local variables | lowerCase | `Vector2 playerPosition = { 0 };` Global variables | lowerCase | `bool windowReady = false;` Constants | lowerCase | `const int maxValue = 8;` Pointers | MyType *pointer | `Texture2D *array = NULL;` -float values | always x.xf | `float gravity = 10.0f` +float values | always x.xf | `float gravity = 10.0f` (avoid `10.f`) Operators | value1*value2 | `int product = value*6;` Operators | value1/value2 | `int division = value/4;` Operators | value1 + value2 | `int sum = value + 10;` @@ -72,19 +72,19 @@ void SomeFunction() **If proposing new functions, please try to use a clear naming for function-name and functions-parameters, in case of doubt, open an issue for discussion.** ## Files and Directories Naming Conventions - + - Directories will be named using `snake_case`: `resources/models`, `resources/fonts` - + - Files will be named using `snake_case`: `main_title.png`, `cubicmap.png`, `sound.wav` - + _NOTE: Avoid any space or special character in the files/dir naming!_ - + ## Games/Examples Directories Organization Conventions - + - Data files should be organized by context and usage in the game, think about the loading requirements for data and put all the resources that need to be loaded at the same time together. - Use descriptive names for the files, it would be perfect if just reading the name of the file, it was possible to know what is that file and where fits in the game. - Here is an example, note that some resources require to be loaded all at once while other require to be loaded only at initialization (gui, font). - + ``` resources/audio/fx/long_jump.wav resources/audio/music/main_theme.ogg From a9970484f34566d67484520f623f97172048ac1f Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 14 Aug 2025 20:37:18 +0200 Subject: [PATCH 220/328] Remove trailing spaces --- examples/examples_list.txt | 2 +- src/platforms/rcore_desktop_glfw.c | 6 +++--- src/platforms/rcore_desktop_sdl.c | 2 +- src/platforms/rcore_web.c | 4 ++-- src/rcore.c | 16 ++++++++-------- src/rlgl.h | 2 +- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/examples/examples_list.txt b/examples/examples_list.txt index 4c8dd308a..ca511cc61 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -3,7 +3,7 @@ # examples must be provided as: ;;;;;""; # # This list is used as the main reference by [rexm] tool for examples collection validation and management -# New examples must be added to this list and any possible rename must be made on this list first +# New examples must be added to this list and any possible rename must be made on this list first # # WARNING: List is not ordered by example name but by the display order on web # diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index 92f77d3bc..9c0921c47 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -1365,7 +1365,7 @@ int InitPlatform(void) // Window flags requested before initialization to be applied after initialization unsigned int requestedWindowFlags = CORE.Window.flags; - + // Check window creation flags if ((CORE.Window.flags & FLAG_FULLSCREEN_MODE) > 0) CORE.Window.fullscreen = true; @@ -1663,7 +1663,7 @@ int InitPlatform(void) int monitorHeight = 0; glfwGetMonitorWorkarea(monitor, &monitorX, &monitorY, &monitorWidth, &monitorHeight); - // Here CORE.Window.render.width/height should be used instead of + // Here CORE.Window.render.width/height should be used instead of // CORE.Window.screen.width/height to center the window correctly when the high dpi flag is enabled int posX = monitorX + (monitorWidth - (int)CORE.Window.render.width)/2; int posY = monitorY + (monitorHeight - (int)CORE.Window.render.height)/2; @@ -1675,7 +1675,7 @@ int InitPlatform(void) CORE.Window.position.x = posX; CORE.Window.position.y = posY; } - + // Apply window flags requested previous to initialization SetWindowState(requestedWindowFlags); diff --git a/src/platforms/rcore_desktop_sdl.c b/src/platforms/rcore_desktop_sdl.c index 0dbe49436..f5b5d70d4 100644 --- a/src/platforms/rcore_desktop_sdl.c +++ b/src/platforms/rcore_desktop_sdl.c @@ -1103,7 +1103,7 @@ Vector2 GetWindowScaleDPI(void) TRACELOG(LOG_WARNING, "GetWindowScaleDPI() not implemented on target platform"); #else scale.x = SDL_GetWindowDisplayScale(platform.window); - scale.y = scale.x; + scale.y = scale.x; #endif return scale; diff --git a/src/platforms/rcore_web.c b/src/platforms/rcore_web.c index 93174b06d..a50710da2 100644 --- a/src/platforms/rcore_web.c +++ b/src/platforms/rcore_web.c @@ -1355,7 +1355,7 @@ int InitPlatform(void) emscripten_set_blur_callback(GetCanvasId(), platform.handle, 1, EmscriptenFocusCallback); emscripten_set_focus_callback(GetCanvasId(), platform.handle, 1, EmscriptenFocusCallback); emscripten_set_visibilitychange_callback(NULL, 1, EmscriptenVisibilityChangeCallback); - + // WARNING: Below resize code was breaking fullscreen mode for sample games and examples, it needs review // Check fullscreen change events(note this is done on the window since most browsers don't support this on #canvas) // emscripten_set_fullscreenchange_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, 1, EmscriptenResizeCallback); @@ -1623,7 +1623,7 @@ static void MouseEnterCallback(GLFWwindow *window, int enter) static EM_BOOL EmscriptenKeyboardCallback(int eventType, const EmscriptenKeyboardEvent *keyboardEvent, void *userData) { // WARNING: Keyboard inputs already processed through GLFW callback - + return 1; // The event was consumed by the callback handler } */ diff --git a/src/rcore.c b/src/rcore.c index 1a961b5ad..edb6fca7d 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -1963,25 +1963,25 @@ bool IsFileExtension(const char *fileName, const char *ext) if ((fileExt[i] >= 'A') && (fileExt[i] <= 'Z')) fileExtLower[i] = fileExt[i] + 32; else fileExtLower[i] = fileExt[i]; } - + int extCount = 1; int extLen = (int)strlen(ext); char *extList = (char *)RL_CALLOC(extLen + 1, 1); char *extListPtrs[MAX_FILE_EXTENSIONS] = { 0 }; strcpy(extList, ext); extListPtrs[0] = extList; - - for (int i = 0; i < extLen; i++) + + for (int i = 0; i < extLen; i++) { // Convert to lower-case if extension is upper-case if ((extList[i] >= 'A') && (extList[i] <= 'Z')) extList[i] += 32; - + // Get pointer to next extension and add null-terminator if ((extList[i] == ';') && (extCount < (MAX_FILE_EXTENSIONS - 1))) { - extList[i] = '\0'; + extList[i] = '\0'; extListPtrs[extCount] = extList + i + 1; - extCount++; + extCount++; } } @@ -1991,7 +1991,7 @@ bool IsFileExtension(const char *fileName, const char *ext) // does not start with the '.' fileExtLowerPtr = fileExtLower; if (extListPtrs[i][0] != '.') fileExtLowerPtr++; - + if (strcmp(fileExtLowerPtr, extListPtrs[i]) == 0) { result = true; @@ -2053,7 +2053,7 @@ int GetFileLength(const char *fileName) // WARNING: We just get the ptr but not the extension as a separate string const char *GetFileExtension(const char *fileName) { - const char *dot = strrchr(fileName, '.'); + const char *dot = strrchr(fileName, '.'); if (!dot || (dot == fileName)) return NULL; diff --git a/src/rlgl.h b/src/rlgl.h index e83cb55a7..17c854f10 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -2573,7 +2573,7 @@ void rlLoadExtensions(void *loader) #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) RLGL.loader = (rlglLoadProc)loader; - + // NOTE: Anisotropy levels capability is an extension #ifndef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF From 7037f131dce990efbf838fe53eeef62408b61640 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 14 Aug 2025 20:37:52 +0200 Subject: [PATCH 221/328] REVIEWED: example: `core_3d_fps_controller` --- examples/core/core_3d_fps_controller.c | 419 ++++++++++++------------- examples/core/resources/huh_jump.wav | Bin 19050 -> 0 bytes tools/rexm/examples_report.md | 1 + 3 files changed, 194 insertions(+), 226 deletions(-) delete mode 100644 examples/core/resources/huh_jump.wav diff --git a/examples/core/core_3d_fps_controller.c b/examples/core/core_3d_fps_controller.c index c4ef367e9..68fec1af9 100644 --- a/examples/core/core_3d_fps_controller.c +++ b/examples/core/core_3d_fps_controller.c @@ -1,10 +1,10 @@ /******************************************************************************************* * -* raylib [core] example - Input Gestures for Web +* raylib [core] example - 3d first-person camera controller * * Example complexity rating: [★★★☆] 3/4 -* -* Example originally created with raylib 5.5 +* +* Example originally created with raylib 5.5, last time updated with raylib 5.5 * * Example contributed by Agnis Aldins (@nezvers) and reviewed by Ramon Santamaria (@raysan5) * @@ -16,65 +16,60 @@ ********************************************************************************************/ #include "raylib.h" + #include "raymath.h" #include "rcamera.h" -#if defined(PLATFORM_WEB) -#include -#endif +//---------------------------------------------------------------------------------- +// Defines and Macros +//---------------------------------------------------------------------------------- +// Movement constants +#define GRAVITY 32.0f +#define MAX_SPEED 20.0f +#define CROUCH_SPEED 5.0f +#define JUMP_FORCE 12.0f +#define MAX_ACCEL 150.0f +// Grounded drag +#define FRICTION 0.86f +// Increasing air drag, increases strafing speed +#define AIR_DRAG 0.98f +// Responsiveness for turning movement direction to looked direction +#define CONTROL 15.0f +#define CROUCH_HEIGHT 0.0f +#define STAND_HEIGHT 1.0f +#define BOTTOM_HEIGHT 0.5f -#if defined(PLATFORM_DESKTOP) -#define GLSL_VERSION 330 -#else // PLATFORM_ANDROID, PLATFORM_WEB -#define GLSL_VERSION 100 -#endif - - -/* Movement constants */ -#define GRAVITY 32.f -#define MAX_SPEED 20.f -#define CROUCH_SPEED 5.f -#define JUMP_FORCE 12.f -#define MAX_ACCEL 150.f -/* Grounded drag */ -#define FRICTION 0.86f -/* Increasing air drag, increases strafing speed */ -#define AIR_DRAG 0.98f -/* Responsiveness for turning movement direction to looked direction */ -#define CONTROL 15.f -#define CROUCH_HEIGHT 0.f -#define STAND_HEIGHT 1.f -#define BOTTOM_HEIGHT 0.5f - -#define NORMALIZE_INPUT 0 +#define NORMALIZE_INPUT 0 +//---------------------------------------------------------------------------------- +// Types and Structures Definition +//---------------------------------------------------------------------------------- +// Body structure typedef struct { Vector3 position; Vector3 velocity; Vector3 dir; bool isGrounded; - Sound soundJump; -}Body; +} Body; -const int screenWidth = 800; -const int screenHeight = 450; -Vector2 sensitivity = { 0.001f, 0.001f }; +//---------------------------------------------------------------------------------- +// Global Variables Definition +//---------------------------------------------------------------------------------- +static Vector2 sensitivity = { 0.001f, 0.001f }; -Body player; -Camera camera; -Vector2 lookRotation = { 0 }; -float headTimer; -float walkLerp; -float headLerp; -Vector2 lean; +static Body player = { 0 }; +static Vector2 lookRotation = { 0 }; +static float headTimer = 0.0f; +static float walkLerp = 0.0f; +static float headLerp = STAND_HEIGHT; +static Vector2 lean = { 0 }; -void UpdateDrawFrame(void); // Update and Draw one frame - -void DrawLevel(); - -void UpdateCameraAngle(); - -void UpdateBody(Body* body, float rot, char side, char forward, bool jumpPressed, bool crouchHold); +//---------------------------------------------------------------------------------- +// Module functions declaration +//---------------------------------------------------------------------------------- +static void DrawLevel(void); +static void UpdateCameraAngle(Camera *camera); +static void UpdateBody(Body *body, float rot, char side, char forward, bool jumpPressed, bool crouchHold); //------------------------------------------------------------------------------------ // Program main entry point @@ -83,213 +78,186 @@ int main(void) { // Initialization //-------------------------------------------------------------------------------------- - InitWindow(screenWidth, screenHeight, "Raylib Quake-like controller"); - InitAudioDevice(); + const int screenWidth = 800; + const int screenHeight = 450; - player = (Body){ Vector3Zero(), Vector3Zero(), Vector3Zero(), false, LoadSound("resources/huh_jump.wav")}; - camera = (Camera){ 0 }; - camera.fovy = 60.f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type + InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d first-person camera controller"); - lookRotation = Vector2Zero(); - headTimer = 0.f; - walkLerp = 0.f; - headLerp = STAND_HEIGHT; - lean = Vector2Zero(); - - camera.position = (Vector3){ - player.position.x, - player.position.y + (BOTTOM_HEIGHT + headLerp), - player.position.z, - }; - UpdateCameraAngle(); - - DisableCursor(); // Limit cursor to relative movement inside the window - -#if defined(PLATFORM_WEB) - emscripten_set_main_loop(UpdateDrawFrame, 0, 1); -#else - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - UpdateDrawFrame(); - } -#endif - - // De-Initialization - //-------------------------------------------------------------------------------------- - UnloadSound(player.soundJump); - CloseAudioDevice(); - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} - -void UpdateDrawFrame(void) -{ - // Update - //---------------------------------------------------------------------------------- - - Vector2 mouse_delta = GetMouseDelta(); - lookRotation.x -= mouse_delta.x * sensitivity.x; - lookRotation.y += mouse_delta.y * sensitivity.y; - - char sideway = (IsKeyDown(KEY_D) - IsKeyDown(KEY_A)); - char forward = (IsKeyDown(KEY_W) - IsKeyDown(KEY_S)); - bool crouching = IsKeyDown(KEY_LEFT_CONTROL); - UpdateBody(&player, lookRotation.x, sideway, forward, IsKeyPressed(KEY_SPACE), crouching); - - float delta = GetFrameTime(); - headLerp = Lerp(headLerp, (crouching ? CROUCH_HEIGHT : STAND_HEIGHT), 20.f * delta); + // Initialize camera variables + // NOTE: UpdateCameraAngle() takes care of the rest + Camera camera = { 0 }; + camera.fovy = 60.0f; + camera.projection = CAMERA_PERSPECTIVE; camera.position = (Vector3){ player.position.x, player.position.y + (BOTTOM_HEIGHT + headLerp), player.position.z, }; - if (player.isGrounded && (forward != 0 || sideway != 0)) { - headTimer += delta * 3.f; - walkLerp = Lerp(walkLerp, 1.f, 10.f * delta); - camera.fovy = Lerp(camera.fovy, 55.f, 5.f * delta); - } - else { - walkLerp = Lerp(walkLerp, 0.f, 10.f * delta); - camera.fovy = Lerp(camera.fovy, 60.f, 5.f * delta); + UpdateCameraAngle(&camera); // Update camera parameters + + DisableCursor(); // Limit cursor to relative movement inside the window + + 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 + //---------------------------------------------------------------------------------- + Vector2 mouse_delta = GetMouseDelta(); + lookRotation.x -= mouse_delta.x*sensitivity.x; + lookRotation.y += mouse_delta.y*sensitivity.y; + + char sideway = (IsKeyDown(KEY_D) - IsKeyDown(KEY_A)); + char forward = (IsKeyDown(KEY_W) - IsKeyDown(KEY_S)); + bool crouching = IsKeyDown(KEY_LEFT_CONTROL); + UpdateBody(&player, lookRotation.x, sideway, forward, IsKeyPressed(KEY_SPACE), crouching); + + float delta = GetFrameTime(); + headLerp = Lerp(headLerp, (crouching ? CROUCH_HEIGHT : STAND_HEIGHT), 20.0f*delta); + camera.position = (Vector3){ + player.position.x, + player.position.y + (BOTTOM_HEIGHT + headLerp), + player.position.z, + }; + + if (player.isGrounded && ((forward != 0) || (sideway != 0))) + { + headTimer += delta*3.0f; + walkLerp = Lerp(walkLerp, 1.0f, 10.0f*delta); + camera.fovy = Lerp(camera.fovy, 55.0f, 5.0f*delta); + } + else + { + walkLerp = Lerp(walkLerp, 0.0f, 10.0f*delta); + camera.fovy = Lerp(camera.fovy, 60.0f, 5.0f*delta); + } + + lean.x = Lerp(lean.x, sideway*0.02f, 10.0f*delta); + lean.y = Lerp(lean.y, forward*0.015f, 10.0f*delta); + + UpdateCameraAngle(&camera); + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + BeginMode3D(camera); + DrawLevel(); + EndMode3D(); + + // Draw info box + DrawRectangle(5, 5, 330, 75, Fade(SKYBLUE, 0.5f)); + DrawRectangleLines(5, 5, 330, 75, BLUE); + + DrawText("Camera controls:", 15, 15, 10, BLACK); + DrawText("- Move keys: W, A, S, D, Space, Left-Ctrl", 15, 30, 10, BLACK); + DrawText("- Look around: arrow keys or mouse", 15, 45, 10, BLACK); + DrawText(TextFormat("- Velocity Len: (%06.3f)", Vector2Length((Vector2){ player.velocity.x, player.velocity.z })), 15, 60, 10, BLACK); + + EndDrawing(); + //---------------------------------------------------------------------------------- } - lean.x = Lerp(lean.x, sideway * 0.02f, 10.f * delta); - lean.y = Lerp(lean.y, forward * 0.015f, 10.f * delta); + // De-Initialization + //-------------------------------------------------------------------------------------- + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- - UpdateCameraAngle(); - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawLevel(); - - EndMode3D(); - - // Draw info box - DrawRectangle(5, 5, 330, 100, Fade(SKYBLUE, 0.5f)); - DrawRectangleLines(5, 5, 330, 100, BLUE); - - DrawText("Camera controls:", 15, 15, 10, BLACK); - DrawText("- Move keys: W, A, S, D, Space, Left-Ctrl", 15, 30, 10, BLACK); - DrawText("- Look around: arrow keys or mouse", 15, 45, 10, BLACK); - DrawText(TextFormat("- Velocity Len: (%06.3f)", Vector2Length((Vector2) { player.velocity.x, player.velocity.z })), 15, 60, 10, BLACK); - - - EndDrawing(); - //---------------------------------------------------------------------------------- + return 0; } -void UpdateBody(Body* body, float rot, char side, char forward, bool jumpPressed, bool crouchHold) +//---------------------------------------------------------------------------------- +// Module functions definition +//---------------------------------------------------------------------------------- +void UpdateBody(Body* body, float rot, char side, char forward, bool jumpPressed, bool crouchHold) { Vector2 input = (Vector2){ (float)side, (float)-forward }; + #if defined(NORMALIZE_INPUT) // Slow down diagonal movement - if (side != 0 & forward != 0) - { - input = Vector2Normalize(input); - } + if ((side != 0) && (forward != 0)) input = Vector2Normalize(input); #endif float delta = GetFrameTime(); - if (!body->isGrounded) - { - body->velocity.y -= GRAVITY * delta; - } - if (body->isGrounded && jumpPressed) + if (!body->isGrounded) body->velocity.y -= GRAVITY*delta; + + if (body->isGrounded && jumpPressed) { body->velocity.y = JUMP_FORCE; body->isGrounded = false; - SetSoundPitch(body->soundJump, 1.f + (GetRandomValue(-100, 100) * 0.001)); - PlaySound(body->soundJump); + + // Sound can be played at this moment + //SetSoundPitch(fxJump, 1.0f + (GetRandomValue(-100, 100)*0.001)); + //PlaySound(fxJump); } - Vector3 front_vec = (Vector3){ sin(rot), 0.f, cos(rot) }; - Vector3 right_vec = (Vector3){ cos(-rot), 0.f, sin(-rot) }; + Vector3 front = (Vector3){ sin(rot), 0.f, cos(rot) }; + Vector3 right = (Vector3){ cos(-rot), 0.f, sin(-rot) }; - Vector3 desired_dir = (Vector3){ - input.x * right_vec.x + input.y * front_vec.x, - 0.f, - input.x * right_vec.z + input.y * front_vec.z, - }; + Vector3 desiredDir = (Vector3){ input.x*right.x + input.y*front.x, 0.0f, input.x*right.z + input.y*front.z, }; + body->dir = Vector3Lerp(body->dir, desiredDir, CONTROL*delta); - body->dir = Vector3Lerp(body->dir, desired_dir, CONTROL * delta); + float decel = (body->isGrounded ? FRICTION : AIR_DRAG); + Vector3 hvel = (Vector3){ body->velocity.x*decel, 0.0f, body->velocity.z*decel }; - float decel = body->isGrounded ? FRICTION : AIR_DRAG; - Vector3 hvel = (Vector3){ - body->velocity.x * decel, - 0.f, - body->velocity.z * decel - }; + float hvelLength = Vector3Length(hvel); // Magnitude + if (hvelLength < (MAX_SPEED*0.01f)) hvel = (Vector3){ 0 }; - float hvel_length = Vector3Length(hvel); // a.k.a. magnitude - if (hvel_length < MAX_SPEED * 0.01f) { - hvel = (Vector3){ 0 }; - } - - /* This is what creates strafing */ + // This is what creates strafing float speed = Vector3DotProduct(hvel, body->dir); - /* - Whenever the amount of acceleration to add is clamped by the maximum acceleration constant, - a Player can make the speed faster by bringing the direction closer to horizontal velocity angle - More info here: https://youtu.be/v3zT3Z5apaM?t=165 - */ - float max_speed = crouchHold ? CROUCH_SPEED : MAX_SPEED; - float accel = Clamp(max_speed - speed, 0.f, MAX_ACCEL * delta); - hvel.x += body->dir.x * accel; - hvel.z += body->dir.z * accel; + // Whenever the amount of acceleration to add is clamped by the maximum acceleration constant, + // a Player can make the speed faster by bringing the direction closer to horizontal velocity angle + // More info here: https://youtu.be/v3zT3Z5apaM?t=165 + float maxSpeed = (crouchHold? CROUCH_SPEED : MAX_SPEED); + float accel = Clamp(maxSpeed - speed, 0.f, MAX_ACCEL*delta); + hvel.x += body->dir.x*accel; + hvel.z += body->dir.z*accel; body->velocity.x = hvel.x; body->velocity.z = hvel.z; - body->position.x += body->velocity.x * delta; - body->position.y += body->velocity.y * delta; - body->position.z += body->velocity.z * delta; + body->position.x += body->velocity.x*delta; + body->position.y += body->velocity.y*delta; + body->position.z += body->velocity.z*delta; - /* Fancy collision system against "THE FLOOR" */ - if (body->position.y <= 0.f) + // Fancy collision system against the floor + if (body->position.y <= 0.0f) { - body->position.y = 0.f; - body->velocity.y = 0.f; - body->isGrounded = true; // <= enables jumping + body->position.y = 0.0f; + body->velocity.y = 0.0f; + body->isGrounded = true; // Enable jumping } } -void UpdateCameraAngle() +// Update camera +static void UpdateCameraAngle(Camera *camera) { - const Vector3 up = (Vector3){ 0.f, 1.f, 0.f }; - const Vector3 targetOffset = (Vector3){ 0.f, 0.f, -1.f }; + const Vector3 up = (Vector3){ 0.0f, 1.0f, 0.0f }; + const Vector3 targetOffset = (Vector3){ 0.0f, 0.0f, -1.0f }; - /* Left & Right */ + // Left and right Vector3 yaw = Vector3RotateByAxisAngle(targetOffset, up, lookRotation.x); // Clamp view up float maxAngleUp = Vector3Angle(up, yaw); - maxAngleUp -= 0.001f; // avoid numerical errors + maxAngleUp -= 0.001f; // Avoid numerical errors if ( -(lookRotation.y) > maxAngleUp) { lookRotation.y = -maxAngleUp; } // Clamp view down float maxAngleDown = Vector3Angle(Vector3Negate(up), yaw); - maxAngleDown *= -1.0f; // downwards angle is negative - maxAngleDown += 0.001f; // avoid numerical errors + maxAngleDown *= -1.0f; // Downwards angle is negative + maxAngleDown += 0.001f; // Avoid numerical errors if ( -(lookRotation.y) < maxAngleDown) { lookRotation.y = -maxAngleDown; } - /* Up & Down */ + // Up and down Vector3 right = Vector3Normalize(Vector3CrossProduct(yaw, up)); // Rotate view vector around right axis @@ -297,49 +265,48 @@ void UpdateCameraAngle() // Head animation // Rotate up direction around forward axis - float _sin = sin(headTimer * PI); - float _cos = cos(headTimer * PI); + float headSin = sin(headTimer*PI); + float headCos = cos(headTimer*PI); const float stepRotation = 0.01f; - camera.up = Vector3RotateByAxisAngle(up, pitch, _sin * stepRotation + lean.x); + camera->up = Vector3RotateByAxisAngle(up, pitch, headSin*stepRotation + lean.x); - /* BOB */ + // Camera BOB const float bobSide = 0.1f; const float bobUp = 0.15f; - Vector3 bobbing = Vector3Scale(right, _sin * bobSide); - bobbing.y = fabsf(_cos * bobUp); - camera.position = Vector3Add(camera.position, Vector3Scale(bobbing, walkLerp)); + Vector3 bobbing = Vector3Scale(right, headSin*bobSide); + bobbing.y = fabsf(headCos*bobUp); - camera.target = Vector3Add(camera.position, pitch); + camera->position = Vector3Add(camera->position, Vector3Scale(bobbing, walkLerp)); + camera->target = Vector3Add(camera->position, pitch); } - -void DrawLevel() +// Draw game level +static void DrawLevel(void) { const int floorExtent = 25; - const float tileSize = 5.f; + const float tileSize = 5.0f; const Color tileColor1 = (Color){ 150, 200, 200, 255 }; + // Floor tiles - for (int y = -floorExtent; y < floorExtent; y++) + for (int y = -floorExtent; y < floorExtent; y++) { - for (int x = -floorExtent; x < floorExtent; x++) + for (int x = -floorExtent; x < floorExtent; x++) { - if ((y & 1) && (x & 1)) + if ((y & 1) && (x & 1)) { - DrawPlane((Vector3) { x * tileSize, 0.f, y * tileSize}, - (Vector2) {tileSize, tileSize}, tileColor1); + DrawPlane((Vector3){ x*tileSize, 0.0f, y*tileSize}, (Vector2){ tileSize, tileSize }, tileColor1); } - else if(!(y & 1) && !(x & 1)) + else if (!(y & 1) && !(x & 1)) { - DrawPlane((Vector3) { x * tileSize, 0.f, y * tileSize}, - (Vector2) {tileSize, tileSize}, LIGHTGRAY); + DrawPlane((Vector3){ x*tileSize, 0.0f, y*tileSize}, (Vector2){ tileSize, tileSize }, LIGHTGRAY); } } } - - const Vector3 towerSize = (Vector3){ 16.f, 32.f, 16.f }; + + const Vector3 towerSize = (Vector3){ 16.0f, 32.0f, 16.0f }; const Color towerColor = (Color){ 150, 200, 200, 255 }; - Vector3 towerPos = (Vector3){ 16.f, 16.f, 16.f }; + Vector3 towerPos = (Vector3){ 16.0f, 16.0f, 16.0f }; DrawCubeV(towerPos, towerSize, towerColor); DrawCubeWiresV(towerPos, towerSize, DARKBLUE); @@ -356,5 +323,5 @@ void DrawLevel() DrawCubeWiresV(towerPos, towerSize, DARKBLUE); // Red sun - DrawSphere((Vector3) { 300.f, 300.f, 0.f }, 100.f, (Color) { 255, 0, 0, 255 }); + DrawSphere((Vector3){ 300.0f, 300.0f, 0.0f }, 100.0f, (Color){ 255, 0, 0, 255 }); } diff --git a/examples/core/resources/huh_jump.wav b/examples/core/resources/huh_jump.wav deleted file mode 100644 index 9ca8a2e683ef87d19f594be54d04a40dd0bade10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19050 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 Gd;ABC^mEGq diff --git a/tools/rexm/examples_report.md b/tools/rexm/examples_report.md index 17a535dc6..51c8a8862 100644 --- a/tools/rexm/examples_report.md +++ b/tools/rexm/examples_report.md @@ -35,6 +35,7 @@ Example elements validated: | core_3d_camera_free | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_3d_camera_first_person | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_3d_camera_split_screen | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_3d_fps_controller | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ❌ | | core_3d_picking | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_world_screen | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_custom_logging | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | From 28b804a6baafd55c6169f8ae6c1d60f20c1c99ed Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 14 Aug 2025 20:38:27 +0200 Subject: [PATCH 222/328] REXM: Validate examples list against existing examples in repo --- tools/rexm/rexm.c | 59 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 3 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 36ed414a1..00617fb7b 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -749,6 +749,53 @@ int main(int argc, char *argv[]) // TODO: Log more details about the validation process + // Scan available example .c files and add to collection missing ones + // NOTE: Source of truth is what we have in the examples directories (on validation/update) + FilePathList list = LoadDirectoryFilesEx(exBasePath, ".c", true); + + const char *exList = LoadFileText(exCollectionFilePath); + char *exListUpdated = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); + bool listUpdated = false; + + int exListLen = strlen(exList); + strcpy(exListUpdated, exList); + + for (int i = 0; i < list.count; i++) + { + if ((strcmp("examples_template", GetFileNameWithoutExt(list.paths[i])) != 0) && // HACK: Skip "examples_template" + (TextFindIndex(exList, GetFileNameWithoutExt(list.paths[i])) == -1)) + { + // Add example to the examples collection list + // WARNING: Added to the end of the list, order must be set by users and + // defines placement on raylib webpage + rlExampleInfo *exInfo = LoadExampleInfo(list.paths[i]); + + // Get example difficulty stars + char starsText[16] = { 0 }; + for (int i = 0; i < 4; i++) + { + // NOTE: Every UTF-8 star are 3 bytes + if (i < exInfo->stars) strcpy(starsText + 3*i, "★"); + else strcpy(starsText + 3*i, "☆"); + } + + exListLen += sprintf(exListUpdated + exListLen, + TextFormat("%s;%s;%s;%.2f;%.2f;\"%s\";@%s\n", + exInfo->category, exInfo->name, starsText, exInfo->verCreated, + exInfo->verUpdated, exInfo->author, exInfo->authorGitHub)); + + listUpdated = true; + UnloadExampleInfo(exInfo); + } + } + + if (listUpdated) SaveFileText(exCollectionFilePath, exListUpdated); + + UnloadFileText(exList); + RL_FREE(exListUpdated); + + UnloadDirectoryFiles(list); + // Check all examples in collection [examples_list.txt] -> Source of truth! int exCollectionCount = 0; rlExampleInfo *exCollection = LoadExamplesData(exCollectionFilePath, "ALL", false, &exCollectionCount); @@ -1566,12 +1613,13 @@ static void UnloadTextLines(char **lines) RL_FREE(lines); } -// Get example info from file header +// Get example info from example file header +// NOTE: Expecting the example to follow raylib_example_template.c rlExampleInfo *LoadExampleInfo(const char *exFileName) { rlExampleInfo *exInfo = (rlExampleInfo *)RL_CALLOC(1, sizeof(rlExampleInfo)); - if (IsFileExtension(exFileName, ".c")) + if (FileExists(exFileName) && IsFileExtension(exFileName, ".c")) { strcpy(exInfo->name, GetFileNameWithoutExt(exFileName)); strncpy(exInfo->category, exInfo->name, TextFindIndex(exInfo->name, "_")); @@ -1747,16 +1795,21 @@ static char **ScanExampleResources(const char *filePath, int *resPathCount) strncpy(buffer, start, len); buffer[len] = '\0'; + // TODO: Make sure buffer is a path (and not a Tracelog() text) + // Check for known extensions for (int i = 0; i < extCount; i++) { + // TODO: WARNING: IsFileExtension() expects a NULL terminated fileName, + // but in this case buffer can contain any kind of string, + // including not paths strings, for example TraceLog() string if (IsFileExtension(buffer, exts[i])) { // Avoid duplicates bool found = false; for (int j = 0; j < resCounter; j++) { - if (TextIsEqual(paths[j], buffer)) { found = true; break; } + if (strcmp(paths[j], buffer) == 0) { found = true; break; } } if (!found && (resCounter < REXM_MAX_RESOURCE_PATHS)) From 3ef5ee878c9da52f7fae46f957e45960e3ccc059 Mon Sep 17 00:00:00 2001 From: Diogo Diniz Date: Thu, 14 Aug 2025 19:58:22 +0100 Subject: [PATCH 223/328] Adjusted formatting to comply with contribution guidelines --- src/platforms/rcore_desktop_glfw.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index 46ced651c..082898915 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -75,25 +75,24 @@ #include // Required for: timespec, nanosleep(), select() - POSIX #if defined(_GLFW_X11) || defined(_GLFW_WAYLAND) - // Set appropriate expose macros based on available backends + // Set appropriate expose macros based on available backends #if defined(_GLFW_X11) #define GLFW_EXPOSE_NATIVE_X11 - #define Font X11Font // Hack to fix 'Font' name collision - // The definition and references to the X11 Font type will be replaced by 'X11Font' - // Works as long as the current file consistently references any X11 Font as X11Font - // Since it is never referenced (as of writting), this does not pose an issue + #define Font X11Font // Hack to fix 'Font' name collision + // The definition and references to the X11 Font type will be replaced by 'X11Font' + // Works as long as the current file consistently references any X11 Font as X11Font + // Since it is never referenced (as of writting), this does not pose an issue #endif #if defined(_GLFW_WAYLAND) #define GLFW_EXPOSE_NATIVE_WAYLAND #endif - - // Include native header only once, regardless of how many backends are defined - #include "GLFW/glfw3native.h" // Required for: glfwGetX11Window() and glfwGetWaylandWindow() - - // Clean up X11-specific hacks - #if defined(_GLFW_X11) - #undef Font // Revert hack and allow normal raylib Font usage + + #include "GLFW/glfw3native.h" // Include native header only once, regardless of how many backends are defined + // Required for: glfwGetX11Window() and glfwGetWaylandWindow() + + #if defined(_GLFW_X11) // Clean up X11-specific hacks + #undef Font // Revert hack and allow normal raylib Font usage #endif #endif #endif @@ -741,10 +740,12 @@ void *GetWindowHandle(void) #if defined(_GLFW_WAYLAND) #if defined(_GLFW_X11) int platformID = glfwGetPlatform(); - if (platformID == GLFW_PLATFORM_WAYLAND) { + if (platformID == GLFW_PLATFORM_WAYLAND) + { return glfwGetWaylandWindow(platform.handle); } - else { + else + { X11WindowHandle = glfwGetX11Window(platform.handle); return &X11WindowHandle; } From afdc7972d6c9eacb3b19f551281fee4d98a3a094 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 14 Aug 2025 21:07:10 +0200 Subject: [PATCH 224/328] REXM: Automatic validation and update of examples --- examples/Makefile.Web | 3 +-- examples/README.md | 5 ++-- .../VS2022/examples/shaders_normalmap.vcxproj | 2 +- projects/VS2022/raylib.sln | 27 +++++++++++++++++++ tools/rexm/examples_report.md | 16 +++++------ 5 files changed, 40 insertions(+), 13 deletions(-) diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 6b0f9b225..41975c95d 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -704,8 +704,7 @@ core/core_3d_camera_split_screen: core/core_3d_camera_split_screen.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) core/core_3d_fps_controller: core/core_3d_fps_controller.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file core/resources/huh_jump.wav@resources/huh_jump.wav + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) core/core_3d_picking: core/core_3d_picking.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) diff --git a/examples/README.md b/examples/README.md index cb17f8e84..d3ff720c9 100644 --- a/examples/README.md +++ b/examples/README.md @@ -16,9 +16,9 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 160] +## EXAMPLES COLLECTION [TOTAL: 161] -### category: core [36] +### category: core [37] Examples using raylib[core](../src/rcore.c) platform functionality like window creation, inputs, drawing modes and system functionality. @@ -40,6 +40,7 @@ Examples using raylib[core](../src/rcore.c) platform functionality like window c | [core_3d_camera_free](core/core_3d_camera_free.c) | core_3d_camera_free | ⭐☆☆☆ | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | | [core_3d_camera_first_person](core/core_3d_camera_first_person.c) | core_3d_camera_first_person | ⭐⭐☆☆ | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | | [core_3d_camera_split_screen](core/core_3d_camera_split_screen.c) | core_3d_camera_split_screen | ⭐⭐⭐☆ | 3.7 | 4.0 | [Jeffery Myers](https://github.com/JeffM2501) | +| [core_3d_fps_controller](core/core_3d_fps_controller.c) | core_3d_fps_controller | ⭐⭐⭐☆ | 5.5 | 5.5 | [Agnis Aldins](https://github.com/nezvers) | | [core_3d_picking](core/core_3d_picking.c) | core_3d_picking | ⭐⭐☆☆ | 1.3 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | | [core_world_screen](core/core_world_screen.c) | core_world_screen | ⭐⭐☆☆ | 1.3 | 1.4 | [Ramon Santamaria](https://github.com/raysan5) | | [core_custom_logging](core/core_custom_logging.c) | core_custom_logging | ⭐⭐⭐☆ | 2.5 | 2.5 | [Pablo Marcos Oltra](https://github.com/pamarcos) | diff --git a/projects/VS2022/examples/shaders_normalmap.vcxproj b/projects/VS2022/examples/shaders_normalmap.vcxproj index 79f976102..5af02f256 100644 --- a/projects/VS2022/examples/shaders_normalmap.vcxproj +++ b/projects/VS2022/examples/shaders_normalmap.vcxproj @@ -51,7 +51,7 @@ - {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} Win32Proj shaders_normalmap 10.0 diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index bee8fcc42..436795e2a 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -335,6 +335,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_virtual_controls EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_fps_controller", "examples\core_3d_fps_controller.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_normalmap", "examples\shaders_normalmap.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -4107,6 +4109,30 @@ Global {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -4276,6 +4302,7 @@ Global {9CD8BCAD-F212-4BCC-BA98-899743CE3279} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} {0981CA28-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} diff --git a/tools/rexm/examples_report.md b/tools/rexm/examples_report.md index 51c8a8862..5ae85714d 100644 --- a/tools/rexm/examples_report.md +++ b/tools/rexm/examples_report.md @@ -35,7 +35,7 @@ Example elements validated: | core_3d_camera_free | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_3d_camera_first_person | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_3d_camera_split_screen | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_3d_fps_controller | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ❌ | +| core_3d_fps_controller | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | | core_3d_picking | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_world_screen | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_custom_logging | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -154,7 +154,7 @@ Example elements validated: | shaders_hot_reloading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_mesh_instancing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_multi_sample2d | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_normalmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | +| shaders_normalmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | | shaders_spotlight | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_deferred_render | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_hybrid_render | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -174,9 +174,9 @@ Example elements validated: | audio_stream_effects | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_sound_multi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | -| rlgl_standalone | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ❌ | -| rlgl_compute_shader | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ❌ | -| easings_testbed | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ❌ | -| raylib_opengl_interop | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ❌ | ✔ | ❌ | ✔ | ❌ | ❌ | -| embedded_files_loading | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ❌ | -| raymath_vector_angle | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ❌ | ✔ | ❌ | ❌ | +| rlgl_standalone | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| rlgl_compute_shader | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| easings_testbed | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| raylib_opengl_interop | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | +| embedded_files_loading | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| raymath_vector_angle | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | From a65bdd6cca6175a809b7d829a22e01c74592900e Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 14 Aug 2025 21:07:36 +0200 Subject: [PATCH 225/328] REXM: Reviewed automatic validation and update -WIP- --- tools/rexm/rexm.c | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 00617fb7b..e6827e666 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -775,12 +775,12 @@ int main(int argc, char *argv[]) for (int i = 0; i < 4; i++) { // NOTE: Every UTF-8 star are 3 bytes - if (i < exInfo->stars) strcpy(starsText + 3*i, "★"); + if (i < exInfo->stars) strcpy(starsText + 3*i, "⭐️"); else strcpy(starsText + 3*i, "☆"); } exListLen += sprintf(exListUpdated + exListLen, - TextFormat("%s;%s;%s;%.2f;%.2f;\"%s\";@%s\n", + TextFormat("%s;%s;%s;%.1f;%.1f;\"%s\";@%s\n", exInfo->category, exInfo->name, starsText, exInfo->verCreated, exInfo->verUpdated, exInfo->author, exInfo->authorGitHub)); @@ -922,11 +922,18 @@ int main(int argc, char *argv[]) else { // NOTE: Some issues can not be automatically fixed, only logged - //if (exInfo->status & VALID_MISSING_PNG) LOG("WARNING: [%s] Missing screenshot file\n", exInfo->name); - //if (exInfo->status & VALID_INVALID_PNG) LOG("WARNING: [%s] Invalid screenshot file (using template)\n", exInfo->name); - //if (exInfo->status & VALID_MISSING_RESOURCES) LOG("WARNING: [%s] Missing resources detected\n", exInfo->name); - //if (exInfo->status & VALID_INCONSISTENT_INFO) LOG("WARNING: [%s] Inconsistent example header info\n", exInfo->name); - //if (exInfo->status & VALID_INVALID_CATEGORY) LOG("WARNING: [%s] Invalid example category\n", exInfo->name); + if (exInfo->status & VALID_MISSING_PNG) LOG("WARNING: [%s] Missing screenshot file\n", exInfo->name); + if (exInfo->status & VALID_INVALID_PNG) LOG("WARNING: [%s] Invalid screenshot file (using template)\n", exInfo->name); + if (exInfo->status & VALID_MISSING_RESOURCES) LOG("WARNING: [%s] Missing resources detected\n", exInfo->name); + if (exInfo->status & VALID_INCONSISTENT_INFO) LOG("WARNING: [%s] Inconsistent example header info\n", exInfo->name); + if (exInfo->status & VALID_INVALID_CATEGORY) LOG("WARNING: [%s] Invalid example category\n", exInfo->name); + + // NOTE: Some examples should be excluded from VS2022 solution because + // they have specific platform/linkage requirements: + if ((strcmp(exInfo->name, "core_basic_window_web") == 0) || + (strcmp(exInfo->name, "core_input_gestures_web") == 0) || + (strcmp(exInfo->name, "raylib_opengl_interop") == 0) || + (strcmp(exInfo->name, "raymath_vector_angle") == 0)) continue; // Review: Add: raylib/projects/VS2022/examples/_example_name.vcxproj // Review: Add: raylib/projects/VS2022/raylib.sln @@ -940,7 +947,7 @@ int main(int argc, char *argv[]) FileTextReplace(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), "..\\..\\examples\\core", TextFormat("..\\..\\examples\\%s", exInfo->category)); - exInfo->status |= VALID_MISSING_VCXPROJ; + exInfo->status &= ~VALID_MISSING_VCXPROJ; } // Add project (.vcxproj) to raylib solution (.sln) @@ -949,7 +956,7 @@ int main(int argc, char *argv[]) AddVSProjectToSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), exVSProjectSolutionFile, exInfo->category); - exInfo->status |= VALID_NOT_IN_VCXSOL; + exInfo->status &= ~VALID_NOT_IN_VCXSOL; } // Review: Add/Remove: raylib.com/examples//_example_name.html @@ -957,6 +964,7 @@ int main(int argc, char *argv[]) // Review: Add/Remove: raylib.com/examples//_example_name.wasm // Review: Add/Remove: raylib.com/examples//_example_name.js // Solves: VALID_MISSING_WEB_OUTPUT + /* if (exInfo->status & VALID_MISSING_WEB_OUTPUT) { system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); @@ -973,6 +981,7 @@ int main(int argc, char *argv[]) exInfo->status |= VALID_MISSING_WEB_OUTPUT; } + */ } } @@ -981,10 +990,10 @@ int main(int argc, char *argv[]) UpdateRequiredFiles(); for (int i = 0; i < exCollectionCount; i++) { - exCollection[i].status |= VALID_NOT_IN_MAKEFILE; - exCollection[i].status |= VALID_NOT_IN_MAKEFILE_WEB; - exCollection[i].status |= VALID_NOT_IN_README; - exCollection[i].status |= VALID_NOT_IN_JS; + exCollection[i].status &= ~VALID_NOT_IN_MAKEFILE; + exCollection[i].status &= ~VALID_NOT_IN_MAKEFILE_WEB; + exCollection[i].status &= ~VALID_NOT_IN_README; + exCollection[i].status &= ~VALID_NOT_IN_JS; } //------------------------------------------------------------------------------------------------ } From 6252d92f79bde2407227ca327c838a9445f8e1ae Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 14 Aug 2025 21:11:30 +0200 Subject: [PATCH 226/328] Update rexm.c --- tools/rexm/rexm.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index e6827e666..ee204bd4f 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -964,8 +964,8 @@ int main(int argc, char *argv[]) // Review: Add/Remove: raylib.com/examples//_example_name.wasm // Review: Add/Remove: raylib.com/examples//_example_name.js // Solves: VALID_MISSING_WEB_OUTPUT - /* - if (exInfo->status & VALID_MISSING_WEB_OUTPUT) + if ((strcmp(exInfo->category, "others") != 0) && // Skipping "others" category + exInfo->status & VALID_MISSING_WEB_OUTPUT) { system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); @@ -979,9 +979,8 @@ int main(int argc, char *argv[]) FileCopy(TextFormat("%s/%s/%s.js", exBasePath, exInfo->category, exInfo->name), TextFormat("%s/%s/%s.js", exWebPath, exInfo->category, exInfo->name)); - exInfo->status |= VALID_MISSING_WEB_OUTPUT; + exInfo->status &= ~VALID_MISSING_WEB_OUTPUT; } - */ } } From ed06cdbbe4e2238aca135c2346dca14f7767fbb7 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 14 Aug 2025 21:22:57 +0200 Subject: [PATCH 227/328] Update examples_report.md --- tools/rexm/examples_report.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tools/rexm/examples_report.md b/tools/rexm/examples_report.md index 5ae85714d..f18ca6d57 100644 --- a/tools/rexm/examples_report.md +++ b/tools/rexm/examples_report.md @@ -35,7 +35,7 @@ Example elements validated: | core_3d_camera_free | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_3d_camera_first_person | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_3d_camera_split_screen | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_3d_fps_controller | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| core_3d_fps_controller | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_3d_picking | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_world_screen | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_custom_logging | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -55,7 +55,7 @@ Example elements validated: | core_basic_window_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | | core_input_gestures_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | | core_automation_events | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_high_dpi | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| core_high_dpi | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_basic_shapes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_bouncing_ball | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_colors_palette | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -74,8 +74,8 @@ Example elements validated: | shapes_top_down_lights | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_rectangle_advanced | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_splines_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_digital_clock | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | -| shapes_double_pendulum | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| shapes_digital_clock | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_double_pendulum | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_logo_raylib | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_srcrec_dstrec | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_image_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -92,7 +92,7 @@ Example elements validated: | textures_sprite_button | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_sprite_explosion | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_bunnymark | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_mouse_painting | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| textures_mouse_painting | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_blend_modes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_draw_tiled | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_polygon | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -154,7 +154,7 @@ Example elements validated: | shaders_hot_reloading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_mesh_instancing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_multi_sample2d | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_normalmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| shaders_normalmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_spotlight | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_deferred_render | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_hybrid_render | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -164,8 +164,8 @@ Example elements validated: | shaders_write_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_basic_pbr | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_lightmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_rounded_rectangle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | -| shaders_view_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| shaders_rounded_rectangle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_view_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_module_playing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_music_stream | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_raw_stream | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -173,7 +173,7 @@ Example elements validated: | audio_mixed_processor | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_stream_effects | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_sound_multi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | rlgl_standalone | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | | rlgl_compute_shader | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | | easings_testbed | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | From 73950befca34527886f2b93e10d84a78583c220d Mon Sep 17 00:00:00 2001 From: Maicon Santana Date: Fri, 15 Aug 2025 10:57:44 +0100 Subject: [PATCH 228/328] Work around to fix mouse positioning on scaled window --- src/platforms/rcore_web.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/platforms/rcore_web.c b/src/platforms/rcore_web.c index 9156f1599..02aa54ee0 100644 --- a/src/platforms/rcore_web.c +++ b/src/platforms/rcore_web.c @@ -1824,6 +1824,8 @@ static EM_BOOL EmscriptenResizeCallback(int eventType, const EmscriptenUiEvent * CORE.Window.screen.width = width; CORE.Window.screen.height = height; + glfwSetWindowSize(platform.handle, CORE.Window.screen.width, CORE.Window.screen.height); + // NOTE: Postprocessing texture is not scaled to new size return 0; From 5236b2420a3bb8fb5a3013f386c3526ef27a9994 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 15 Aug 2025 12:43:45 +0200 Subject: [PATCH 229/328] Update rexm.c --- tools/rexm/rexm.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index ee204bd4f..bdfb98a92 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -1021,6 +1021,8 @@ int main(int argc, char *argv[]) | text_format_text | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✔ | ✘ | ✔ | ✔ | ✔ | */ + // TODO: Generate a report with only the examples missing some elements + char *report = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); int repIndex = 0; From e4dfb6dbb52289e5b71fa0c99be5079a6454c093 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 16 Aug 2025 20:24:54 +0200 Subject: [PATCH 230/328] Update rl_gputex.h --- src/external/rl_gputex.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/external/rl_gputex.h b/src/external/rl_gputex.h index 5311cd119..306f09808 100644 --- a/src/external/rl_gputex.h +++ b/src/external/rl_gputex.h @@ -585,6 +585,7 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo // KTX 2.0: UInt32 supercompressionScheme - 0 (None), 1 (Crunch CRN), 2 (Zlib DEFLATE)... // KTX 2.0 defines additional header elements... } ktx_header; + /* Byte[12] identifier UInt32 vkFormat @@ -597,6 +598,7 @@ int rl_save_ktx(const char *file_name, void *data, int width, int height, int fo UInt32 levelCount UInt32 supercompressionScheme */ + // Calculate file data_size required int data_size = sizeof(ktx_header); From 0dc4ba53dcc6ed2605c792647a33d58b12c23ee3 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 16 Aug 2025 21:06:13 +0200 Subject: [PATCH 231/328] Minor format tweak --- src/rcore.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rcore.c b/src/rcore.c index edb6fca7d..8ae4ee43c 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -514,11 +514,11 @@ static void RecordAutomationEvent(void); // Record frame events (to internal eve #if defined(_WIN32) && !defined(PLATFORM_DESKTOP_RGFW) // NOTE: We declare Sleep() function symbol to avoid including windows.h (kernel32.lib linkage required) -__declspec(dllimport) void __stdcall Sleep(unsigned long msTimeout); // Required for: WaitTime() +__declspec(dllimport) void __stdcall Sleep(unsigned long msTimeout); // Required for: WaitTime() #endif #if !defined(SUPPORT_MODULE_RTEXT) -const char *TextFormat(const char *text, ...); // Formatting of text with variables to 'embed' +const char *TextFormat(const char *text, ...); // Formatting of text with variables to 'embed' #endif // !SUPPORT_MODULE_RTEXT #if defined(PLATFORM_DESKTOP) From 16bd18070f1d76158a6c56eebeb5d97b2d1a718f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=BBxy=2Ex?= Date: Sun, 17 Aug 2025 11:04:27 +0300 Subject: [PATCH 232/328] Fix SDL3 build if using package --- src/platforms/rcore_desktop_sdl.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/platforms/rcore_desktop_sdl.c b/src/platforms/rcore_desktop_sdl.c index f5b5d70d4..1d57a52f8 100644 --- a/src/platforms/rcore_desktop_sdl.c +++ b/src/platforms/rcore_desktop_sdl.c @@ -48,7 +48,9 @@ * **********************************************************************************************/ - +#ifdef USING_SDL3_PACKAGE + #define USING_SDL3_PROJECT +#endif #ifndef SDL_ENABLE_OLD_NAMES #define SDL_ENABLE_OLD_NAMES // Just in case we're on SDL3, we need some in-between compatibily #endif @@ -1620,7 +1622,7 @@ void PollInputEvents(void) // Add character (codepoint) to the queue #if defined(PLATFORM_DESKTOP_SDL3) unsigned int textLen = strlen(event.text.text); - unsigned int codepoint = (unsigned int)SDL_StepUTF8(&event.text.text, textLen); + unsigned int codepoint = (unsigned int)SDL_StepUTF8(&event.text.text, &textLen); #else int codepointSize = 0; int codepoint = GetCodepointNextSDL(event.text.text, &codepointSize); From 6da0a180e66257e03001e69e277504d1d1121db0 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 17 Aug 2025 21:30:16 +0200 Subject: [PATCH 233/328] REXM: Using Makefile.Web for specific web versions generation, only with required resources for every example --- examples/Makefile.Web | 5 ++--- examples/build_example_web.bat | 39 +++++++++++++++++++--------------- tools/rexm/rexm.c | 12 +++++++---- 3 files changed, 32 insertions(+), 24 deletions(-) diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 41975c95d..d757b8c23 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -104,7 +104,7 @@ USE_WAYLAND_DISPLAY ?= FALSE BUILD_WEB_ASYNCIFY ?= TRUE BUILD_WEB_SHELL ?= $(RAYLIB_PATH)/src/shell.html BUILD_WEB_HEAP_SIZE ?= 134217728 -BUILD_WEB_RESOURCES ?= TRUE +BUILD_WEB_RESOURCES ?= FALSE BUILD_WEB_RESOURCES_PATH ?= $(dir $<)resources@resources # Use WebGL2 backend (OpenGL 3.0) # WARNING: Requires raylib compiled with GRAPHICS_API_OPENGL_ES3 @@ -920,8 +920,7 @@ textures/textures_logo_raylib: textures/textures_logo_raylib.c --preload-file textures/resources/raylib_logo.png@resources/raylib_logo.png textures/textures_mouse_painting: textures/textures_mouse_painting.c - $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file textures/my_amazing_texture_painting.png@my_amazing_texture_painting.png + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) textures/textures_npatch_drawing: textures/textures_npatch_drawing.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ diff --git a/examples/build_example_web.bat b/examples/build_example_web.bat index 0fcdc6413..403075dea 100644 --- a/examples/build_example_web.bat +++ b/examples/build_example_web.bat @@ -2,26 +2,29 @@ :: . :: Compile your examples for web using: build_example_web.bat / :: . -set "INPUT_FILE=%1" +SET "INPUT_FILE=%1" :: Change delimiter for the FOR loop -for /f "tokens=1-10 delims=/" %%a in ("%INPUT_FILE%") do ( - set CATEGORY=%%a - set FILENAME=%%b +FOR /f "tokens=1-10 delims=/" %%a IN ("%INPUT_FILE%") DO ( + SET CATEGORY=%%a + SET FILENAME=%%b ) -:: > Setup required Environment +:: > SETup required Environment :: ------------------------------------- -set RAYLIB_PATH=C:\GitHub\raylib -set EMSDK_PATH=C:\raylib\emsdk +SET RAYLIB_PATH=C:\GitHub\raylib +SET EMSDK_PATH=C:\raylib\emsdk +SET COMPILER_PATH=C:\raylib\w64devkit\bin +ENV_SET PATH=%COMPILER_PATH% +SET MAKE=mingw32-make echo -:: Set required web compilation options +:: SET required web compilation options :: ------------------------------------- -set CC=%EMSDK_PATH%\upstream\emscripten\emcc -set CFLAGS=-Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces -Wunused-result -O3 -I. -Iexternal -I%RAYLIB_PATH%\src -I%RAYLIB_PATH%\external -DPLATFORM_WEB -set LDFLAGS=-L. -L$(RAYLIB_PATH)\src -sUSE_GLFW=3 -sEXPORTED_RUNTIME_METHODS=ccall -sASYNCIFY --shell-file %RAYLIB_PATH%\src\shell.html -set LDLIBS=%RAYLIB_PATH%\src\libraylib.web.a -:: TODO: If using some resources/assets, set the directory path as shown in the commented line! -set RESOURCES= -::set RESOURCES=--preload-file $(RESOURCES_PATH) +SET CC=%EMSDK_PATH%\upstream\emscripten\emcc +SET CFLAGS=-Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces -Wunused-result -O3 -I. -Iexternal -I%RAYLIB_PATH%\src -I%RAYLIB_PATH%\external -DPLATFORM_WEB +SET LDFLAGS=-L. -L$(RAYLIB_PATH)\src -sUSE_GLFW=3 -sEXPORTED_RUNTIME_METHODS=ccall -sASYNCIFY --shell-file %RAYLIB_PATH%\src\shell.html +SET LDLIBS=%RAYLIB_PATH%\src\libraylib.web.a +:: TODO: If using some resources/asSETs, SET the directory path as shown in the commented line! +::SET RESOURCES= +::SET RESOURCES=--preload-file $(RESOURCES_PATH) cd %RAYLIB_PATH%\examples\%CATEGORY% echo :: Clean latest build @@ -31,13 +34,15 @@ cmd /c if exist %FILENAME%.wasm del /F %FILENAME%.wasm cmd /c if exist %FILENAME%.js del /F %FILENAME%.js cmd /c if exist %FILENAME%.data del /F %FILENAME%.data echo -:: Setup emsdk environment +:: SETup emsdk environment :: -------------------------- call %EMSDK_PATH%\emsdk_env.bat echo on :: Compile program :: ----------------------- C: -%CC% -o %FILENAME%.html %FILENAME%.c %CFLAGS% %LDFLAGS% %LDLIBS% %RESOURCES% +cd %RAYLIB_PATH%\examples +%MAKE% -f Makefile.Web %CATEGORY%/%FILENAME% PLATFORM=PLATFORM_WEB -B +::%CC% -o %FILENAME%.html %FILENAME%.c %CFLAGS% %LDFLAGS% %LDLIBS% %RESOURCES% cd .. echo diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index bdfb98a92..206e619c0 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -842,6 +842,7 @@ int main(int argc, char *argv[]) // Validate: raylib/examples//resources/.. -> Example resources available? // Scan resources used in example to check for missing resource files + // WARNING: Some paths could be for files to save, not files to load, verify it char **resPaths = ScanExampleResources(TextFormat("%s/%s/%s.c", exBasePath, exInfo->category, exInfo->name), &exInfo->resCount); if (exInfo->resCount > 0) { @@ -881,11 +882,14 @@ int main(int argc, char *argv[]) // Validate: raylib.com/examples//_example_name.data -> File exists? // Validate: raylib.com/examples//_example_name.wasm -> File exists? // Validate: raylib.com/examples//_example_name.js -> File exists? - if (!FileExists(TextFormat("%s/%s/%s.html", exWebPath, exInfo->category, exInfo->name)) || - !FileExists(TextFormat("%s/%s/%s.wasm", exWebPath, exInfo->category, exInfo->name)) || - !FileExists(TextFormat("%s/%s/%s.js", exWebPath, exInfo->category, exInfo->name)) || - ((exInfo->resCount > 0) && !FileExists(TextFormat("%s/%s/%s.data", exWebPath, exInfo->category, exInfo->name)))) + if (!TextIsEqual(exInfo->category, "others") && + (!FileExists(TextFormat("%s/%s/%s.html", exWebPath, exInfo->category, exInfo->name)) || + !FileExists(TextFormat("%s/%s/%s.wasm", exWebPath, exInfo->category, exInfo->name)) || + !FileExists(TextFormat("%s/%s/%s.js", exWebPath, exInfo->category, exInfo->name)) || + ((exInfo->resCount > 0) && !FileExists(TextFormat("%s/%s/%s.data", exWebPath, exInfo->category, exInfo->name))))) + { exInfo->status |= VALID_MISSING_WEB_OUTPUT; + } // NOTE: Additional validation elements // Validate: Example naming conventions: /_example_name, valid category From 24d1d644179572aaf9ce2e0885a5eb210bd4a386 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 17 Aug 2025 21:31:05 +0200 Subject: [PATCH 234/328] REXM: REVIEWED: `ScanExampleResources()` avoid resources to be saved by the program --- tools/rexm/rexm.c | 56 ++++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 206e619c0..c49d6883b 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -1802,37 +1802,43 @@ static char **ScanExampleResources(const char *filePath, int *resPathCount) char *end = strchr(start, '"'); if (!end) break; - int len = (int)(end - start); - if ((len > 0) && (len < REXM_MAX_RESOURCE_PATH_LEN)) + // TODO: WARNING: Some paths could be for files to save, not files to load, verify it + // HACK: Just check previous position from pointer for function name including the string... + // This is a horrible solution, the good one would be getting the data loading function names... + if (TextFindIndex(ptr - 40, "ExportImage") == -1) { - char buffer[REXM_MAX_RESOURCE_PATH_LEN] = { 0 }; - strncpy(buffer, start, len); - buffer[len] = '\0'; - - // TODO: Make sure buffer is a path (and not a Tracelog() text) - - // Check for known extensions - for (int i = 0; i < extCount; i++) + int len = (int)(end - start); + if ((len > 0) && (len < REXM_MAX_RESOURCE_PATH_LEN)) { - // TODO: WARNING: IsFileExtension() expects a NULL terminated fileName, - // but in this case buffer can contain any kind of string, - // including not paths strings, for example TraceLog() string - if (IsFileExtension(buffer, exts[i])) + char buffer[REXM_MAX_RESOURCE_PATH_LEN] = { 0 }; + strncpy(buffer, start, len); + buffer[len] = '\0'; + + // TODO: Make sure buffer is a path (and not a Tracelog() text) + + // Check for known extensions + for (int i = 0; i < extCount; i++) { - // Avoid duplicates - bool found = false; - for (int j = 0; j < resCounter; j++) + // TODO: WARNING: IsFileExtension() expects a NULL terminated fileName, + // but in this case buffer can contain any kind of string, + // including not paths strings, for example TraceLog() string + if (IsFileExtension(buffer, exts[i])) { - if (strcmp(paths[j], buffer) == 0) { found = true; break; } - } + // Avoid duplicates + bool found = false; + for (int j = 0; j < resCounter; j++) + { + if (strcmp(paths[j], buffer) == 0) { found = true; break; } + } - if (!found && (resCounter < REXM_MAX_RESOURCE_PATHS)) - { - strcpy(paths[resCounter], buffer); - resCounter++; - } + if (!found && (resCounter < REXM_MAX_RESOURCE_PATHS)) + { + strcpy(paths[resCounter], buffer); + resCounter++; + } - break; + break; + } } } } From dcd012e00f69ffd6fe38c0ce881db7d55bee63f5 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 17 Aug 2025 21:32:05 +0200 Subject: [PATCH 235/328] REXM: Generate second report with examples with issues --- tools/rexm/examples_report.md | 14 +++---- tools/rexm/examples_report_issues.md | 39 ++++++++++++++++++++ tools/rexm/rexm.c | 55 +++++++++++++++++++++++++++- 3 files changed, 99 insertions(+), 9 deletions(-) create mode 100644 tools/rexm/examples_report_issues.md diff --git a/tools/rexm/examples_report.md b/tools/rexm/examples_report.md index f18ca6d57..5e87c51b9 100644 --- a/tools/rexm/examples_report.md +++ b/tools/rexm/examples_report.md @@ -92,7 +92,7 @@ Example elements validated: | textures_sprite_button | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_sprite_explosion | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_bunnymark | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_mouse_painting | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_mouse_painting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_blend_modes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_draw_tiled | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_polygon | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -174,9 +174,9 @@ Example elements validated: | audio_stream_effects | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_sound_multi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| rlgl_standalone | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | -| rlgl_compute_shader | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | -| easings_testbed | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | -| raylib_opengl_interop | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | -| embedded_files_loading | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | -| raymath_vector_angle | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | +| rlgl_standalone | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| rlgl_compute_shader | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| easings_testbed | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| raylib_opengl_interop | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | +| embedded_files_loading | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| raymath_vector_angle | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | diff --git a/tools/rexm/examples_report_issues.md b/tools/rexm/examples_report_issues.md new file mode 100644 index 000000000..ab1347711 --- /dev/null +++ b/tools/rexm/examples_report_issues.md @@ -0,0 +1,39 @@ +# EXAMPLES COLLECTION - VALIDATION REPORT + +``` +Example elements validated: + + - [C] : Missing .c source file + - [CAT] : Not a recognized category + - [INFO] : Inconsistent example header info (stars, author...) + - [PNG] : Missing screenshot .png + - [WPNG] : Invalid png screenshot (using default one) + - [RES] : Missing resources listed in the code + - [MK] : Not listed in Makefile + - [MKWEB] : Not listed in Makefile.Web + - [VCX] : Missing Visual Studio project file + - [SOL] : Project not included in solution file + - [RDME] : Not listed in README.md + - [JS] : Not listed in Web (examples.js) + - [WOUT] : Missing Web build (.html/.data/.wasm/.js) +``` +| **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]| +|:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:| +| core_input_virtual_controls | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_basic_window_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | +| core_input_gestures_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | +| core_high_dpi | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_digital_clock | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_font_sdf | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_draw_3d | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_codepoints_loading | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_loading_vox | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_loading_m3d | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_texture_outline | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| audio_music_stream | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| rlgl_standalone | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| rlgl_compute_shader | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| easings_testbed | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| raylib_opengl_interop | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | +| embedded_files_loading | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| raymath_vector_angle | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index c49d6883b..2b936c9e3 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -1002,6 +1002,7 @@ int main(int argc, char *argv[]) } // Generate validation report/table with results (.md) + //----------------------------------------------------------------------------------------------------- /* Columns: [C] VALID_MISSING_C // Missing .c source file @@ -1025,8 +1026,6 @@ int main(int argc, char *argv[]) | text_format_text | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✔ | ✘ | ✔ | ✔ | ✔ | */ - // TODO: Generate a report with only the examples missing some elements - char *report = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); int repIndex = 0; @@ -1071,6 +1070,58 @@ int main(int argc, char *argv[]) SaveFileText(TextFormat("%s/../tools/rexm/%s", exBasePath, "examples_report.md"), report); RL_FREE(report); + //----------------------------------------------------------------------------------------------------- + + // Generate a report with only the examples missing some elements + //----------------------------------------------------------------------------------------------------- + char *reportIssues = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); + + repIndex = 0; + repIndex += sprintf(reportIssues + repIndex, "# EXAMPLES COLLECTION - VALIDATION REPORT\n\n"); + + repIndex += sprintf(reportIssues + repIndex, "```\nExample elements validated:\n\n"); + repIndex += sprintf(reportIssues + repIndex, " - [C] : Missing .c source file\n"); + repIndex += sprintf(reportIssues + repIndex, " - [CAT] : Not a recognized category\n"); + repIndex += sprintf(reportIssues + repIndex, " - [INFO] : Inconsistent example header info (stars, author...)\n"); + repIndex += sprintf(reportIssues + repIndex, " - [PNG] : Missing screenshot .png\n"); + repIndex += sprintf(reportIssues + repIndex, " - [WPNG] : Invalid png screenshot (using default one)\n"); + repIndex += sprintf(reportIssues + repIndex, " - [RES] : Missing resources listed in the code\n"); + repIndex += sprintf(reportIssues + repIndex, " - [MK] : Not listed in Makefile\n"); + repIndex += sprintf(reportIssues + repIndex, " - [MKWEB] : Not listed in Makefile.Web\n"); + repIndex += sprintf(reportIssues + repIndex, " - [VCX] : Missing Visual Studio project file\n"); + repIndex += sprintf(reportIssues + repIndex, " - [SOL] : Project not included in solution file\n"); + repIndex += sprintf(reportIssues + repIndex, " - [RDME] : Not listed in README.md\n"); + repIndex += sprintf(reportIssues + repIndex, " - [JS] : Not listed in Web (examples.js)\n"); + repIndex += sprintf(reportIssues + repIndex, " - [WOUT] : Missing Web build (.html/.data/.wasm/.js)\n```\n"); + + repIndex += sprintf(reportIssues + repIndex, "| **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]|\n"); + repIndex += sprintf(reportIssues + repIndex, "|:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:|\n"); + + for (int i = 0; i < exCollectionCount; i++) + { + if (exCollection[i].status > 0) + { + repIndex += sprintf(reportIssues + repIndex, "| %-32s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s |\n", + exCollection[i].name, + (exCollection[i].status & VALID_MISSING_C)? "❌" : "✔", + (exCollection[i].status & VALID_INVALID_CATEGORY)? "❌" : "✔", + (exCollection[i].status & VALID_INCONSISTENT_INFO)? "❌" : "✔", + (exCollection[i].status & VALID_MISSING_PNG)? "❌" : "✔", + (exCollection[i].status & VALID_INVALID_PNG)? "❌" : "✔", + (exCollection[i].status & VALID_MISSING_RESOURCES)? "❌" : "✔", + (exCollection[i].status & VALID_NOT_IN_MAKEFILE)? "❌" : "✔", + (exCollection[i].status & VALID_NOT_IN_MAKEFILE_WEB)? "❌" : "✔", + (exCollection[i].status & VALID_MISSING_VCXPROJ)? "❌" : "✔", + (exCollection[i].status & VALID_NOT_IN_VCXSOL)? "❌" : "✔", + (exCollection[i].status & VALID_NOT_IN_README)? "❌" : "✔", + (exCollection[i].status & VALID_NOT_IN_JS)? "❌" : "✔", + (exCollection[i].status & VALID_MISSING_WEB_OUTPUT)? "❌" : "✔"); + } + } + + SaveFileText(TextFormat("%s/../tools/rexm/%s", exBasePath, "examples_report_issues.md"), reportIssues); + RL_FREE(reportIssues); + //----------------------------------------------------------------------------------------------------- UnloadExamplesData(exCollection); //------------------------------------------------------------------------------------------------ From 8772b0287c67383ad3f3f8bd899dfd2a87e922a5 Mon Sep 17 00:00:00 2001 From: Jan Beukes Date: Sun, 17 Aug 2025 23:44:37 +0200 Subject: [PATCH 236/328] Fix SDL3 compilation error with gcc --- src/platforms/rcore_desktop_sdl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platforms/rcore_desktop_sdl.c b/src/platforms/rcore_desktop_sdl.c index 1d57a52f8..a2603b6e8 100644 --- a/src/platforms/rcore_desktop_sdl.c +++ b/src/platforms/rcore_desktop_sdl.c @@ -1621,7 +1621,7 @@ void PollInputEvents(void) { // Add character (codepoint) to the queue #if defined(PLATFORM_DESKTOP_SDL3) - unsigned int textLen = strlen(event.text.text); + size_t textLen = strlen(event.text.text); unsigned int codepoint = (unsigned int)SDL_StepUTF8(&event.text.text, &textLen); #else int codepointSize = 0; From a8dfd9db769556b22e4b8e13724eff6fbcccae30 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 18 Aug 2025 14:35:04 +0200 Subject: [PATCH 237/328] REXM: RENAMED: `shaders_normalmap` --> `shaders_normal_map` --- examples/Makefile | 2 +- examples/Makefile.Web | 4 ++-- examples/README.md | 2 +- examples/examples_list.txt | 2 +- .../{shaders_normalmap.c => shaders_normal_map.c} | 0 ...shaders_normalmap.png => shaders_normal_map.png} | Bin ...normalmap.vcxproj => shaders_normal_map.vcxproj} | 0 projects/VS2022/raylib.sln | 2 +- 8 files changed, 6 insertions(+), 6 deletions(-) rename examples/shaders/{shaders_normalmap.c => shaders_normal_map.c} (100%) rename examples/shaders/{shaders_normalmap.png => shaders_normal_map.png} (100%) rename projects/VS2022/examples/{shaders_normalmap.vcxproj => shaders_normal_map.vcxproj} (100%) diff --git a/examples/Makefile b/examples/Makefile index 2f7e4670c..c50a01798 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -640,7 +640,7 @@ SHADERS = \ shaders/shaders_mesh_instancing \ shaders/shaders_model_shader \ shaders/shaders_multi_sample2d \ - shaders/shaders_normalmap \ + shaders/shaders_normal_map \ shaders/shaders_palette_switch \ shaders/shaders_postprocessing \ shaders/shaders_raymarching \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index d757b8c23..e834ab71b 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -640,7 +640,7 @@ SHADERS = \ shaders/shaders_mesh_instancing \ shaders/shaders_model_shader \ shaders/shaders_multi_sample2d \ - shaders/shaders_normalmap \ + shaders/shaders_normal_map \ shaders/shaders_palette_switch \ shaders/shaders_postprocessing \ shaders/shaders_raymarching \ @@ -1205,7 +1205,7 @@ shaders/shaders_multi_sample2d: shaders/shaders_multi_sample2d.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/shaders/glsl100/color_mix.fs@resources/shaders/glsl100/color_mix.fs -shaders/shaders_normalmap: shaders/shaders_normalmap.c +shaders/shaders_normal_map: shaders/shaders_normal_map.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/shaders/glsl100/normalmap.vs@resources/shaders/glsl100/normalmap.vs \ --preload-file shaders/resources/shaders/glsl100/normalmap.fs@resources/shaders/glsl100/normalmap.fs \ diff --git a/examples/README.md b/examples/README.md index d3ff720c9..391f9e422 100644 --- a/examples/README.md +++ b/examples/README.md @@ -194,7 +194,7 @@ Examples using raylib shaders functionality, including shaders loading, paramete | [shaders_hot_reloading](shaders/shaders_hot_reloading.c) | shaders_hot_reloading | ⭐⭐⭐☆ | 3.0 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | | [shaders_mesh_instancing](shaders/shaders_mesh_instancing.c) | shaders_mesh_instancing | ⭐⭐⭐⭐️ | 3.7 | 4.2 | [seanpringle](https://github.com/seanpringle) | | [shaders_multi_sample2d](shaders/shaders_multi_sample2d.c) | shaders_multi_sample2d | ⭐⭐☆☆ | 3.5 | 3.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [shaders_normalmap](shaders/shaders_normalmap.c) | shaders_normalmap | ⭐⭐⭐⭐️ | 5.6 | 5.6 | [Jeremy Montgomery](https://github.com/Sir_Irk) | +| [shaders_normal_map](shaders/shaders_normal_map.c) | shaders_normal_map | ⭐⭐⭐⭐️ | 5.6 | 5.6 | [Jeremy Montgomery](https://github.com/Sir_Irk) | | [shaders_spotlight](shaders/shaders_spotlight.c) | shaders_spotlight | ⭐⭐☆☆ | 2.5 | 3.7 | [Chris Camacho](https://github.com/chriscamacho) | | [shaders_deferred_render](shaders/shaders_deferred_render.c) | shaders_deferred_render | ⭐⭐⭐⭐️ | 4.5 | 4.5 | [Justin Andreas Lacoste](https://github.com/27justin) | | [shaders_hybrid_render](shaders/shaders_hybrid_render.c) | shaders_hybrid_render | ⭐⭐⭐⭐️ | 4.2 | 4.2 | [Buğra Alptekin Sarı](https://github.com/BugraAlptekinSari) | diff --git a/examples/examples_list.txt b/examples/examples_list.txt index ca511cc61..ba329f995 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -142,7 +142,7 @@ shaders;shaders_simple_mask;⭐️⭐️☆☆;2.5;3.7;"Chris Camacho";@chriscam shaders;shaders_hot_reloading;⭐️⭐️⭐️☆;3.0;3.5;"Ramon Santamaria";@raysan5 shaders;shaders_mesh_instancing;⭐️⭐️⭐️⭐️;3.7;4.2;"seanpringle";@seanpringle shaders;shaders_multi_sample2d;⭐️⭐️☆☆;3.5;3.5;"Ramon Santamaria";@raysan5 -shaders;shaders_normalmap;⭐️⭐️⭐️⭐️;5.6;5.6;"Jeremy Montgomery";@Sir_Irk +shaders;shaders_normal_map;⭐️⭐️⭐️⭐️;5.6;5.6;"Jeremy Montgomery";@Sir_Irk shaders;shaders_spotlight;⭐️⭐️☆☆;2.5;3.7;"Chris Camacho";@chriscamacho shaders;shaders_deferred_render;⭐️⭐️⭐️⭐️;4.5;4.5;"Justin Andreas Lacoste";@27justin shaders;shaders_hybrid_render;⭐️⭐️⭐️⭐️;4.2;4.2;"Buğra Alptekin Sarı";@BugraAlptekinSari diff --git a/examples/shaders/shaders_normalmap.c b/examples/shaders/shaders_normal_map.c similarity index 100% rename from examples/shaders/shaders_normalmap.c rename to examples/shaders/shaders_normal_map.c diff --git a/examples/shaders/shaders_normalmap.png b/examples/shaders/shaders_normal_map.png similarity index 100% rename from examples/shaders/shaders_normalmap.png rename to examples/shaders/shaders_normal_map.png diff --git a/projects/VS2022/examples/shaders_normalmap.vcxproj b/projects/VS2022/examples/shaders_normal_map.vcxproj similarity index 100% rename from projects/VS2022/examples/shaders_normalmap.vcxproj rename to projects/VS2022/examples/shaders_normal_map.vcxproj diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 436795e2a..3d95eb44a 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -335,7 +335,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_virtual_controls EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_fps_controller", "examples\core_3d_fps_controller.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_normalmap", "examples\shaders_normalmap.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_normal_map", "examples\shaders_normal_map.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution From 6bf8249f7554711e54966e29330b27f510efbbb4 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 18 Aug 2025 15:00:24 +0200 Subject: [PATCH 238/328] Update examples_report.md --- tools/rexm/examples_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/rexm/examples_report.md b/tools/rexm/examples_report.md index 5e87c51b9..156ee3659 100644 --- a/tools/rexm/examples_report.md +++ b/tools/rexm/examples_report.md @@ -154,7 +154,7 @@ Example elements validated: | shaders_hot_reloading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_mesh_instancing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_multi_sample2d | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_normalmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_normal_map | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_spotlight | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_deferred_render | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_hybrid_render | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | From 60b46062c637a373c8eea8ff5b6226b055d3c942 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 18 Aug 2025 15:00:54 +0200 Subject: [PATCH 239/328] REXM: Reviewed example rename on `examples.js` --- tools/rexm/rexm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 2b936c9e3..24e9477ae 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -591,7 +591,8 @@ int main(int argc, char *argv[]) FileTextReplace(TextFormat("%s/Makefile", exBasePath), exName, exRename); FileTextReplace(TextFormat("%s/Makefile.Web", exBasePath), exName, exRename); FileTextReplace(TextFormat("%s/README.md", exBasePath), exName, exRename); - FileTextReplace(TextFormat("%s/../common/examples.js", exWebPath), exName, exRename); + FileTextReplace(TextFormat("%s/../common/examples.js", exWebPath), + exName + strlen(exCategory) + 1, exRename + strlen(exRecategory) + 1); // Skip category // Edit: Rename example project and solution rename(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), From 0a513e6fbed0b76287d7b6393cd7b433689f5f5a Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 18 Aug 2025 15:04:50 +0200 Subject: [PATCH 240/328] Comment unused script instructions... --- examples/build_example_web.bat | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/examples/build_example_web.bat b/examples/build_example_web.bat index 403075dea..db62f783d 100644 --- a/examples/build_example_web.bat +++ b/examples/build_example_web.bat @@ -18,14 +18,10 @@ SET MAKE=mingw32-make echo :: SET required web compilation options :: ------------------------------------- -SET CC=%EMSDK_PATH%\upstream\emscripten\emcc -SET CFLAGS=-Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces -Wunused-result -O3 -I. -Iexternal -I%RAYLIB_PATH%\src -I%RAYLIB_PATH%\external -DPLATFORM_WEB -SET LDFLAGS=-L. -L$(RAYLIB_PATH)\src -sUSE_GLFW=3 -sEXPORTED_RUNTIME_METHODS=ccall -sASYNCIFY --shell-file %RAYLIB_PATH%\src\shell.html -SET LDLIBS=%RAYLIB_PATH%\src\libraylib.web.a -:: TODO: If using some resources/asSETs, SET the directory path as shown in the commented line! -::SET RESOURCES= -::SET RESOURCES=--preload-file $(RESOURCES_PATH) -cd %RAYLIB_PATH%\examples\%CATEGORY% +::SET CC=%EMSDK_PATH%\upstream\emscripten\emcc +::SET CFLAGS=-Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces -Wunused-result -O3 -I. -Iexternal -I%RAYLIB_PATH%\src -I%RAYLIB_PATH%\external -DPLATFORM_WEB +::SET LDFLAGS=-L. -L$(RAYLIB_PATH)\src -sUSE_GLFW=3 -sEXPORTED_RUNTIME_METHODS=ccall -sASYNCIFY --shell-file %RAYLIB_PATH%\src\shell.html +::SET LDLIBS=%RAYLIB_PATH%\src\libraylib.web.a echo :: Clean latest build :: ------------------------ From 595befec40185340e859bb4847665125d26c8b78 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 18 Aug 2025 20:37:07 +0200 Subject: [PATCH 241/328] Update models_mesh_picking.c --- examples/models/models_mesh_picking.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/models/models_mesh_picking.c b/examples/models/models_mesh_picking.c index 6e2c03473..660017ac9 100644 --- a/examples/models/models_mesh_picking.c +++ b/examples/models/models_mesh_picking.c @@ -84,7 +84,7 @@ int main(void) // Display information about closest hit RayCollision collision = { 0 }; - char *hitObjectName = "None"; + const char *hitObjectName = "None"; collision.distance = FLT_MAX; collision.hit = false; Color cursorColor = WHITE; From 1098f4188500cd582eb0359ed0057f12e5279cd9 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 10:36:22 +0200 Subject: [PATCH 242/328] Update parse.yml --- .../workflows/{parse.yml => api_parse.yml} | 75 +++++++++---------- 1 file changed, 37 insertions(+), 38 deletions(-) rename .github/workflows/{parse.yml => api_parse.yml} (86%) diff --git a/.github/workflows/parse.yml b/.github/workflows/api_parse.yml similarity index 86% rename from .github/workflows/parse.yml rename to .github/workflows/api_parse.yml index 4d5e25998..ec76532ba 100644 --- a/.github/workflows/parse.yml +++ b/.github/workflows/api_parse.yml @@ -1,38 +1,37 @@ -name: Parse raylib API - -on: - workflow_dispatch: - push: - paths: - - "src/raylib.h" - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Update parse files - working-directory: tools/parser - run: | - make raylib_api - mv raylib_api.* output - - - name: Diff parse files - id: diff - run: | - git add -N parser - git diff --name-only --exit-code - continue-on-error: true - - - name: Commit parse files - if: steps.diff.outcome == 'failure' - run: | - set -x - git config user.email "github-actions[bot]@users.noreply.github.com" - git config user.name "github-actions[bot]" - git add tools/parser - git commit -m "Update raylib_api.* by CI" - git push - +name: Parse raylib API + +on: + workflow_dispatch: + push: + paths: + - "src/raylib.h" + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Update parse files + working-directory: tools/parser + run: | + make raylib_api + mv raylib_api.* output + + - name: Diff parse files + id: diff + run: | + git add -N parser + git diff --name-only --exit-code + continue-on-error: true + + - name: Commit parse files + if: steps.diff.outcome == 'failure' + run: | + set -x + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add tools/parser + git commit -m "Update raylib_api.* by CI" + git push From a338b9694ce6e9e762d4bb9ca3aeb5411905e570 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 10:36:31 +0200 Subject: [PATCH 243/328] Update build_example_web.bat --- examples/build_example_web.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/build_example_web.bat b/examples/build_example_web.bat index db62f783d..31625389f 100644 --- a/examples/build_example_web.bat +++ b/examples/build_example_web.bat @@ -16,7 +16,7 @@ SET COMPILER_PATH=C:\raylib\w64devkit\bin ENV_SET PATH=%COMPILER_PATH% SET MAKE=mingw32-make echo -:: SET required web compilation options +:: Set required web compilation options :: ------------------------------------- ::SET CC=%EMSDK_PATH%\upstream\emscripten\emcc ::SET CFLAGS=-Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces -Wunused-result -O3 -I. -Iexternal -I%RAYLIB_PATH%\src -I%RAYLIB_PATH%\external -DPLATFORM_WEB @@ -30,7 +30,7 @@ cmd /c if exist %FILENAME%.wasm del /F %FILENAME%.wasm cmd /c if exist %FILENAME%.js del /F %FILENAME%.js cmd /c if exist %FILENAME%.data del /F %FILENAME%.data echo -:: SETup emsdk environment +:: Setup emsdk environment :: -------------------------- call %EMSDK_PATH%\emsdk_env.bat echo on From cf1217f5c1d6b3c11e315ec575a2711b493c8da6 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 10:36:56 +0200 Subject: [PATCH 244/328] Update Makefile --- tools/rexm/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/rexm/Makefile b/tools/rexm/Makefile index 4ac96a1ab..f5e7d1fe4 100644 --- a/tools/rexm/Makefile +++ b/tools/rexm/Makefile @@ -35,7 +35,7 @@ PROJECT_BUILD_PATH ?= . PROJECT_SOURCE_FILES ?= rexm.c # raylib library variables -RAYLIB_SRC_PATH ?= C:\raylib\raylib\src +RAYLIB_SRC_PATH ?= ..\..\src RAYLIB_INCLUDE_PATH ?= $(RAYLIB_SRC_PATH) RAYLIB_LIB_PATH ?= $(RAYLIB_SRC_PATH) @@ -205,7 +205,7 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) LDFLAGS += $(PROJECT_NAME).rc.data # -Wl,--subsystem,windows hides the console window ifeq ($(BUILD_MODE), RELEASE) - LDFLAGS += -Wl,--subsystem,windows + #LDFLAGS += -Wl,--subsystem,windows endif endif ifeq ($(PLATFORM_OS),BSD) @@ -264,9 +264,9 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) ifeq ($(PLATFORM_OS),WINDOWS) # Libraries for Windows desktop compilation # NOTE: WinMM library required to set high-res timer resolution - LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm -lcomdlg32 -lole32 + LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm # Required for physac examples - LDLIBS += -static -lpthread + #LDLIBS += -static -lpthread endif ifeq ($(PLATFORM_OS),LINUX) # Libraries for Debian GNU/Linux desktop compiling From 87731e3db4c53fe29801b098b75787ee60c6f4b4 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 10:36:59 +0200 Subject: [PATCH 245/328] Create rexm.rc.data --- tools/rexm/rexm.rc.data | Bin 0 -> 4526 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tools/rexm/rexm.rc.data diff --git a/tools/rexm/rexm.rc.data b/tools/rexm/rexm.rc.data new file mode 100644 index 0000000000000000000000000000000000000000..2a44de6674426127ff32b01b1e132456d1d53824 GIT binary patch literal 4526 zcmc&23s@A@`k&na7G!aFm@A5|N(4xA zsSlvUXc()ARV?7S%G*N*zzI=Xlp#Y0FBW7h!JiKy2$3)c;PepMQ^4Ueh(L%yZHRa~ z2`DE(ZU#cKE(alvupFTV!XFW8B5Xydg;0cgL7zg!7amnQj}kpY$uIARU)2x4 zxgUOOKYSoT^cqULOh0_-3w)wB6Jzr4Cob6w@}x>+4cCu6i}Knq8GOJC-h}z!4esCv zzPyM2I2TWn-964=qAS$m%D_Y?tI-l|fB-c*1`BVbMsFCv*QZAvBDr7ezzQ6ILZei7MnvGaDUaB5b=4Z56gcvujJP75=W+FH{7wUdI6SpU!iBo&XAj>TEW?sPYA=?)7RsOTku+VdEb!|Ll6komEIp^tcLl(?w zc4M33*^q{Pm9D?p%t)M$JP|k2apSBaA_q9n9D9=gfF} zOzgCtI(~Lg;A)gILt~n(P!Q{QbPitPF*DBjB%5>`>C%lYZM`=;bYSO1(V@q`+<8)G zQCsmkkSA!)zqlLiSMM6deKp^Q8)OPV1Dkr_{oEkGEj84t=&D)~Xu4%~IA;w`KG>A} z4x9PRXq#7zu6Q(v{`t?`3uLn~0&E5WF^(Sq6mBuJ$-T_nra8N9$@iV7bmzf-y7S=pW*<%)WT$UTBAPx7YKu1v*1%UGCDG41FrwI&;(f^}o=`n(SFvZReiC}v zs}z0gCl*Cmz7DyO%NkLaad#cAREST?bl1x>Bx@WEWAHt8oqvx>_2%ZzI=)r%sD9D} zk2x0e=f1Y=%F}ysNq5HA>&>}~A7kghDSyi)6PE^S4^%Cpd|G~rIHst(MY)*V^vo#J zu+a}yu&=BQG&sj*?AGuaJ;it3X#LR3)Ltfgu-ja(0(~dY`578N1Xu$-<_%EDg1{ zQlUwE+|X3{t-7HS>orbYrH9Li)m|OmM_y$pBjfY>rr?iMB(8Mlb=PNNPNqw{hR}&- zS(w&+;lkQr14hHZP3O3~f8(_pGtUc2SMsx?4TKp7T?Bd>o;2p z&+B~WIJA7($T9Rs$urr|{56FPDXtZb)syOaaCj-H(9DVa$d3n6JnR4 zGcqXIg8BJvW}ScJDJD5c&!5S4P2Lyvj&}rT27_j~fD0SH{d#ocmbc>lNaw8;y-9wu1eO zFa%Z1eZ(ulX$c>1bG-9IBzASjyS;+M>uD!{G2WYglLD>IQqj!A{Og5PacxH@3`woD zND?loS!7vn{mZvQvb{D4myQ||qcd*9uJ4S`EFKub7;bfEj#-8@lFlZZ7_4&v9 z?ft(gI$M$Bv;$IHT@~Xtaaye_Ed(oU-;*BvrAQ*5Rr^`fY^p8Q`P?SS!*7Y3YI_pD z%?XEpDwC519!fYRMa~rh2o6?KU3rFGUMvemT#P^S0!?%t9D}I(lq+;L2E7z|Y5^bR_DI=H(PPlYp9~ zunI2)>RE|iMnVWuWQJIc;r)(9P84rVj?sjnEE(olf#-H+@%&gd{o`OPMh0MswW0Xf zm-8~wsA-8>R6TwWowLChWqnXCoR=b*h(W(dCc_~D{U>%8fCYMFgW7Gt4za(^iZSoQ zb4$-L04qKYf3&d_LSY4JUyeONqI@1rPb}n3N#QKXcTa|&R~5h%bpZt8EU8T_#wqWW zb8Y$>5m5ctAcS&?(4@C}{!b7>vx?XAp8;+RL601x!lWuprovbirv4ucQHY<9c>fPe CkmHB| literal 0 HcmV?d00001 From a3da39cd81440123bb59363dab66b978e4518e57 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 10:38:07 +0200 Subject: [PATCH 246/328] REXM: Store example resource paths, could be useful... --- tools/rexm/rexm.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 24e9477ae..26dca7846 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -78,8 +78,10 @@ typedef struct { float verUpdated; // Example raylib last update version char author[64]; // Example author char authorGitHub[64]; // Example author, GitHub user name - int resCount; // Example resources counter + int status; // Example validation status info + int resCount; // Example resources counter + char **resPaths; // Example resources paths (MAX: 256) } rlExampleInfo; // Validation status for a single example @@ -166,7 +168,7 @@ static char **ScanExampleResources(const char *filePath, int *resPathCount); // Clear resource paths scanned static void ClearExampleResources(char **resPaths); -// Add VS project (.vcxproj) to existing VS solution (.sol) +// Add VS project (.vcxproj) to existing VS solution (.sln) static int AddVSProjectToSolution(const char *projFile, const char *slnFile, const char *category); // Generate unique UUID v4 string @@ -630,7 +632,6 @@ int main(int argc, char *argv[]) // Recompile example (on raylib side) // NOTE: Tools requirements: emscripten, w64devkit - // TODO: Avoid platform-specific .BAT file system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exRecategory, exRename)); // Copy results to web side @@ -712,8 +713,9 @@ int main(int argc, char *argv[]) // Remove: raylib/projects/VS2022/examples/_example_name.vcxproj remove(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName)); - // TODO: Edit: raylib/projects/VS2022/raylib.sln --> Remove example project + // Edit: raylib/projects/VS2022/raylib.sln --> Remove example project //--------------------------------------------------------------------------- + // TODO: Remove project from solution //RemoveVSProjectFromSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), // TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath)); //--------------------------------------------------------------------------- @@ -754,7 +756,7 @@ int main(int argc, char *argv[]) // NOTE: Source of truth is what we have in the examples directories (on validation/update) FilePathList list = LoadDirectoryFilesEx(exBasePath, ".c", true); - const char *exList = LoadFileText(exCollectionFilePath); + char *exList = LoadFileText(exCollectionFilePath); char *exListUpdated = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); bool listUpdated = false; @@ -1755,6 +1757,8 @@ rlExampleInfo *LoadExampleInfo(const char *exFileName) } UnloadFileText(exText); + + exInfo->resPaths = ScanExampleResources(exFileName, &exInfo->resCount); } return exInfo; @@ -1763,6 +1767,7 @@ rlExampleInfo *LoadExampleInfo(const char *exFileName) // Unload example information static void UnloadExampleInfo(rlExampleInfo *exInfo) { + ClearExampleResources(exInfo->resPaths); RL_FREE(exInfo); } @@ -1854,9 +1859,9 @@ static char **ScanExampleResources(const char *filePath, int *resPathCount) char *end = strchr(start, '"'); if (!end) break; - // TODO: WARNING: Some paths could be for files to save, not files to load, verify it + // WARNING: Some paths could be for saving files, not loading, those "resource" files must be omitted // HACK: Just check previous position from pointer for function name including the string... - // This is a horrible solution, the good one would be getting the data loading function names... + // This is a dirty solution, the good one would be getting the data loading function names... if (TextFindIndex(ptr - 40, "ExportImage") == -1) { int len = (int)(end - start); @@ -1913,12 +1918,12 @@ static void ClearExampleResources(char **resPaths) RL_FREE(resPaths); } -// TODO: Add VS project (.vcxproj) to existing VS solution (.sol) +// Add VS project (.vcxproj) to existing VS solution (.sln) // WARNING: Adding a .vcxproj to .sln can not be automated with: // - "dotnet" tool (C# projects only) // - "devenv" tool (no adding support, only building) // It must be done manually editing the .sln file -static int AddVSProjectToSolution(const char *projFile, const char *slnFile, char *category) +static int AddVSProjectToSolution(const char *projFile, const char *slnFile, const char *category) { int result = 0; @@ -1926,7 +1931,7 @@ static int AddVSProjectToSolution(const char *projFile, const char *slnFile, cha // *projFile ptr will be overwriten after a while // Generate unique UUID - char *uuid = GenerateUUIDv4(); + const char *uuid = GenerateUUIDv4(); // Replace default UUID (core_basic_window) on project file by new one FileTextReplace(projFile, "0981CA98-E4A5-4DF1-987F-A41D09131EFC", uuid); From 304045c63ac38b7563865174114ce17af9e961bb Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 11:00:22 +0200 Subject: [PATCH 247/328] REXM: Allow external path definition for VS solution file --- tools/rexm/rexm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 26dca7846..64a253934 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -123,7 +123,7 @@ static const char *exWebPath = NULL; // Env: REXM_EXAMPLES_WEB_PATH static const char *exTemplateFilePath = NULL; // Env: REXM_EXAMPLES_TEMPLATE_FILE_PATH static const char *exTemplateScreenshot = NULL; // Env: REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH static const char *exCollectionFilePath = NULL; // Env: REXM_EXAMPLES_COLLECTION_FILE_PATH -static const char *exVSProjectSolutionFile = "C:/GitHub/raylib/projects/VS2022/raylib.sln"; +static const char *exVSProjectSolutionFile = NULL; // Env REXM_EXAMPLES_VS2022_SLN_FILE //---------------------------------------------------------------------------------- // Module specific functions declaration @@ -186,12 +186,14 @@ int main(int argc, char *argv[]) exTemplateFilePath = getenv("REXM_EXAMPLES_TEMPLATE_FILE_PATH"); exTemplateScreenshot = getenv("REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH"); exCollectionFilePath = getenv("REXM_EXAMPLES_COLLECTION_FILE_PATH"); + exVSProjectSolutionFile = getenv("REXM_EXAMPLES_VS2022_SLN_FILE"); if (!exBasePath) exBasePath = "C:/GitHub/raylib/examples"; if (!exWebPath) exWebPath = "C:/GitHub/raylib.com/examples"; if (!exTemplateFilePath) exTemplateFilePath = "C:/GitHub/raylib/examples/examples_template.c"; if (!exTemplateScreenshot) exTemplateScreenshot = "C:/GitHub/raylib/examples/examples_template.png"; if (!exCollectionFilePath) exCollectionFilePath = "C:/GitHub/raylib/examples/examples_list.txt"; + if (!exVSProjectSolutionFile) exVSProjectSolutionFile = "C:/GitHub/raylib/projects/VS2022/raylib.sln"; char inFileName[1024] = { 0 }; // Example input filename (to be added) From e9b1bb25aba6a4f90b7387332504ec1f3d720c53 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 11:02:01 +0200 Subject: [PATCH 248/328] Create examples_update.yml --- .github/workflows/examples_update.yml | 80 +++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 .github/workflows/examples_update.yml diff --git a/.github/workflows/examples_update.yml b/.github/workflows/examples_update.yml new file mode 100644 index 000000000..636a4016f --- /dev/null +++ b/.github/workflows/examples_update.yml @@ -0,0 +1,80 @@ +name: Update examples collection + +on: + workflow_dispatch: + push: + paths: + - 'examples/**' + - '.github/workflows/examples_update.yml' + pull_request: + paths: + - 'examples/**' + - '.github/workflows/examples_update.yml' + +jobs: + build: + runs-on: windows-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup emsdk + uses: mymindstorm/setup-emsdk@v14 + with: + version: 'latest' + actions-cache-folder: 'emsdk-cache' + + - name: Clone raylib.com repo to update files + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + git clone https://x-access-token:${GITHUB_TOKEN}@github.com/raysan5/raylib.com.git + shell: cmd + + - name: Build and run rexm tool (VS2022 solution) + # rexm should update all required files in raylib and even raylib.com repo, + # but not sure if it can do that from an Action, maybe it requires manual copy + run: | + cd tools/rexm/VS2022 + msbuild.exe rexm.sln /target:rexm /property:Configuration=Release /property:Platform=x64 + cd ../../.. + # Set required environment properties to be used by rexm + set REXM_EXAMPLES_BASE_PATH="examples" + set REXM_EXAMPLES_WEB_PATH="../raylib.com/examples" + set REXM_EXAMPLES_TEMPLATE_FILE_PATH="examples/examples_template.c" + set REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH="examples/examples_template.png" + set REXM_EXAMPLES_COLLECTION_FILE_PATH="examples/examples_list.txt" + set REXM_EXAMPLES_VS2022_SLN_FILE="projects/VS2022/raylib.sln" + # Set emsdk path for Makefile.Web examples building + set EMSDK_PATH="D:/a/raylib/raylib/emsdk-cache/emsdk-main" + # Run rexm to update required files + .\tools\rexm\VS2022\build\rexm\bin\x64\Release\rexm.exe update + cd ../.. + shell: cmd + + - name: Commit changes to raylib repo + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add -A + if git diff --cached --quiet; then + echo "No changes to commit" + exit 0 + fi + git commit -m "Update examples collection" + git push + + - name: Push changes to raylib.com repo + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add examples + if git diff --cached --quiet; then + echo "No changes to push" + exit 0 + fi + git commit -m "Update web examples" + git push origin From 8bc9f30d8728c73937f6f6df7f307249e7aec563 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 11:14:04 +0200 Subject: [PATCH 249/328] Update examples_update.yml --- .github/workflows/examples_update.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/examples_update.yml b/.github/workflows/examples_update.yml index 636a4016f..ef677133f 100644 --- a/.github/workflows/examples_update.yml +++ b/.github/workflows/examples_update.yml @@ -58,10 +58,6 @@ jobs: git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git add -A - if git diff --cached --quiet; then - echo "No changes to commit" - exit 0 - fi git commit -m "Update examples collection" git push @@ -72,9 +68,5 @@ jobs: git config --global user.name "github-actions[bot]" git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" git add examples - if git diff --cached --quiet; then - echo "No changes to push" - exit 0 - fi git commit -m "Update web examples" git push origin From 87d3066428664d8a4983585296d0303862155dff Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 19 Aug 2025 09:15:28 +0000 Subject: [PATCH 250/328] Update examples collection --- emsdk-cache/emsdk-main/.circleci/config.yml | 354 ++ emsdk-cache/emsdk-main/.dockerignore | 21 + emsdk-cache/emsdk-main/.flake8 | 24 + emsdk-cache/emsdk-main/.github/stale.yml | 18 + .../.github/workflows/create-release.yml | 40 + .../.github/workflows/tag-release.yml | 78 + emsdk-cache/emsdk-main/.gitignore | 35 + emsdk-cache/emsdk-main/LICENSE | 27 + emsdk-cache/emsdk-main/README.md | 245 ++ emsdk-cache/emsdk-main/SECURITY.md | 16 + emsdk-cache/emsdk-main/bazel/.bazelrc | 1 + emsdk-cache/emsdk-main/bazel/.gitignore | 1 + emsdk-cache/emsdk-main/bazel/MODULE.bazel | 79 + .../emsdk-main/bazel/MODULE.bazel.lock | 3696 ++++++++++++++++ emsdk-cache/emsdk-main/bazel/README.md | 90 + emsdk-cache/emsdk-main/bazel/bazelrc | 2 + .../bazel/emscripten_build_file.bzl | 93 + .../emsdk-main/bazel/emscripten_cache.bzl | 113 + .../emsdk-main/bazel/emscripten_deps.bzl | 99 + .../bazel/emscripten_toolchain/BUILD.bazel | 43 + .../bazel/emscripten_toolchain/default_config | 16 + .../bazel/emscripten_toolchain/emar.bat | 5 + .../bazel/emscripten_toolchain/emar.sh | 5 + .../bazel/emscripten_toolchain/emcc.bat | 5 + .../bazel/emscripten_toolchain/emcc.sh | 5 + .../bazel/emscripten_toolchain/emcc_link.bat | 5 + .../bazel/emscripten_toolchain/emcc_link.sh | 5 + .../bazel/emscripten_toolchain/env.bat | 6 + .../bazel/emscripten_toolchain/env.sh | 5 + .../emscripten_toolchain/link_wrapper.py | 167 + .../bazel/emscripten_toolchain/toolchain.bzl | 1158 +++++ .../bazel/emscripten_toolchain/wasm_binary.py | 56 + .../emscripten_toolchain/wasm_cc_binary.bzl | 231 + .../bazel/emscripten_toolchain/wasm_rules.bzl | 6 + .../bazel/hello-world/hello-world-simd.cc | 10 + .../bazel/hello-world/hello-world.cc | 6 + .../bazel/remote_emscripten_repository.bzl | 148 + emsdk-cache/emsdk-main/bazel/revisions.bzl | 805 ++++ .../emsdk-main/bazel/test_external/.bazelrc | 1 + .../emsdk-main/bazel/test_external/.gitignore | 4 + .../bazel/test_external/MODULE.bazel | 6 + .../bazel/test_external/MODULE.bazel.lock | 3696 ++++++++++++++++ .../test_external/hello-embind-externs.js | 2 + .../test_external/hello-embind-interface.js | 3 + .../bazel/test_external/hello-embind.cc | 16 + .../bazel/test_external/hello-world.cc | 6 + .../long_command_line/BUILD.bazel | 61 + .../include/long_command_line_file01.hh | 3 + .../include/long_command_line_file02.hh | 3 + .../include/long_command_line_file03.hh | 3 + .../include/long_command_line_file04.hh | 3 + .../include/long_command_line_file05.hh | 3 + .../include/long_command_line_file06.hh | 3 + .../include/long_command_line_file07.hh | 3 + .../include/long_command_line_file08.hh | 3 + .../include/long_command_line_file09.hh | 3 + .../include/long_command_line_file10.hh | 3 + .../include/long_command_line_file11.hh | 3 + .../include/long_command_line_file12.hh | 3 + .../include/long_command_line_file13.hh | 3 + .../include/long_command_line_file14.hh | 3 + .../include/long_command_line_file15.hh | 3 + .../include/long_command_line_file16.hh | 3 + .../include/long_command_line_file17.hh | 3 + .../include/long_command_line_file18.hh | 3 + .../include/long_command_line_file19.hh | 3 + .../include/long_command_line_file20.hh | 3 + .../long_command_line/long_command_line.cc | 43 + .../long_command_line_file01.cc | 5 + .../long_command_line_file02.cc | 5 + .../long_command_line_file03.cc | 5 + .../long_command_line_file04.cc | 5 + .../long_command_line_file05.cc | 5 + .../long_command_line_file06.cc | 5 + .../long_command_line_file07.cc | 5 + .../long_command_line_file08.cc | 5 + .../long_command_line_file09.cc | 5 + .../long_command_line_file10.cc | 5 + .../long_command_line_file11.cc | 5 + .../long_command_line_file12.cc | 5 + .../long_command_line_file13.cc | 5 + .../long_command_line_file14.cc | 5 + .../long_command_line_file15.cc | 5 + .../long_command_line_file16.cc | 5 + .../long_command_line_file17.cc | 5 + .../long_command_line_file18.cc | 5 + .../long_command_line_file19.cc | 5 + .../long_command_line_file20.cc | 5 + .../bazel/test_secondary_lto_cache/.bazelrc | 1 + .../bazel/test_secondary_lto_cache/.gitignore | 4 + .../test_secondary_lto_cache/MODULE.bazel | 26 + .../MODULE.bazel.lock | 3710 +++++++++++++++++ .../test_secondary_lto_cache/hello-world.cc | 6 + emsdk-cache/emsdk-main/docker/Dockerfile | 131 + emsdk-cache/emsdk-main/docker/Makefile | 31 + emsdk-cache/emsdk-main/docker/README.md | 125 + emsdk-cache/emsdk-main/docker/entrypoint.sh | 7 + .../emsdk-main/docker/test_dockerimage.sh | 29 + emsdk-cache/emsdk-main/emcmdprompt.bat | 1 + .../emsdk-main/emscripten-releases-tags.json | 279 ++ emsdk-cache/emsdk-main/emsdk.bat | 46 + emsdk-cache/emsdk-main/emsdk.ps1 | 36 + emsdk-cache/emsdk-main/emsdk.py | 3083 ++++++++++++++ emsdk-cache/emsdk-main/emsdk_env.bat | 1 + emsdk-cache/emsdk-main/emsdk_env.csh | 30 + emsdk-cache/emsdk-main/emsdk_env.fish | 14 + emsdk-cache/emsdk-main/emsdk_env.ps1 | 2 + emsdk-cache/emsdk-main/emsdk_env.sh | 73 + emsdk-cache/emsdk-main/emsdk_manifest.json | 493 +++ .../emsdk-main/legacy-binaryen-tags.txt | 86 + .../emsdk-main/legacy-emscripten-tags.txt | 159 + emsdk-cache/emsdk-main/llvm-tags-64bit.txt | 75 + .../emsdk-main/scripts/create_release.py | 92 + .../scripts/get_emscripten_revision_info.py | 44 + .../emsdk-main/scripts/get_release_info.py | 25 + .../scripts/update_bazel_workspace.py | 87 + emsdk-cache/emsdk-main/scripts/update_node.py | 58 + .../emsdk-main/scripts/update_python.py | 184 + emsdk-cache/emsdk-main/scripts/zip.py | 19 + emsdk-cache/emsdk-main/test/test.bat | 7 + emsdk-cache/emsdk-main/test/test.py | 279 ++ emsdk-cache/emsdk-main/test/test.sh | 47 + .../emsdk-main/test/test_activation.ps1 | 88 + emsdk-cache/emsdk-main/test/test_bazel.ps1 | 30 + emsdk-cache/emsdk-main/test/test_bazel.sh | 36 + emsdk-cache/emsdk-main/test/test_bazel_mac.sh | 31 + emsdk-cache/emsdk-main/test/test_node_path.sh | 35 + .../test/test_path_preservation.ps1 | 142 + .../emsdk-main/test/test_source_env.sh | 132 + raylib.com | 1 + 130 files changed, 21502 insertions(+) create mode 100644 emsdk-cache/emsdk-main/.circleci/config.yml create mode 100644 emsdk-cache/emsdk-main/.dockerignore create mode 100644 emsdk-cache/emsdk-main/.flake8 create mode 100644 emsdk-cache/emsdk-main/.github/stale.yml create mode 100644 emsdk-cache/emsdk-main/.github/workflows/create-release.yml create mode 100644 emsdk-cache/emsdk-main/.github/workflows/tag-release.yml create mode 100644 emsdk-cache/emsdk-main/.gitignore create mode 100644 emsdk-cache/emsdk-main/LICENSE create mode 100644 emsdk-cache/emsdk-main/README.md create mode 100644 emsdk-cache/emsdk-main/SECURITY.md create mode 100644 emsdk-cache/emsdk-main/bazel/.bazelrc create mode 100644 emsdk-cache/emsdk-main/bazel/.gitignore create mode 100644 emsdk-cache/emsdk-main/bazel/MODULE.bazel create mode 100644 emsdk-cache/emsdk-main/bazel/MODULE.bazel.lock create mode 100644 emsdk-cache/emsdk-main/bazel/README.md create mode 100644 emsdk-cache/emsdk-main/bazel/bazelrc create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_build_file.bzl create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_cache.bzl create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_deps.bzl create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/BUILD.bazel create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/default_config create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emar.bat create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emar.sh create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc.bat create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc.sh create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc_link.bat create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc_link.sh create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/env.bat create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/env.sh create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/link_wrapper.py create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/toolchain.bzl create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_binary.py create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_cc_binary.bzl create mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_rules.bzl create mode 100644 emsdk-cache/emsdk-main/bazel/hello-world/hello-world-simd.cc create mode 100644 emsdk-cache/emsdk-main/bazel/hello-world/hello-world.cc create mode 100644 emsdk-cache/emsdk-main/bazel/remote_emscripten_repository.bzl create mode 100644 emsdk-cache/emsdk-main/bazel/revisions.bzl create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/.bazelrc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/.gitignore create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/MODULE.bazel create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/MODULE.bazel.lock create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/hello-embind-externs.js create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/hello-embind-interface.js create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/hello-embind.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/hello-world.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/BUILD.bazel create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file01.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file02.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file03.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file04.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file05.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file06.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file07.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file08.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file09.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file10.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file11.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file12.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file13.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file14.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file15.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file16.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file17.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file18.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file19.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file20.hh create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file01.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file02.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file03.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file04.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file05.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file06.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file07.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file08.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file09.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file10.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file11.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file12.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file13.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file14.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file15.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file16.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file17.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file18.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file19.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file20.cc create mode 100644 emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/.bazelrc create mode 100644 emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/.gitignore create mode 100644 emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/MODULE.bazel create mode 100644 emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/MODULE.bazel.lock create mode 100644 emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/hello-world.cc create mode 100644 emsdk-cache/emsdk-main/docker/Dockerfile create mode 100644 emsdk-cache/emsdk-main/docker/Makefile create mode 100644 emsdk-cache/emsdk-main/docker/README.md create mode 100644 emsdk-cache/emsdk-main/docker/entrypoint.sh create mode 100644 emsdk-cache/emsdk-main/docker/test_dockerimage.sh create mode 100644 emsdk-cache/emsdk-main/emcmdprompt.bat create mode 100644 emsdk-cache/emsdk-main/emscripten-releases-tags.json create mode 100644 emsdk-cache/emsdk-main/emsdk.bat create mode 100644 emsdk-cache/emsdk-main/emsdk.ps1 create mode 100644 emsdk-cache/emsdk-main/emsdk.py create mode 100644 emsdk-cache/emsdk-main/emsdk_env.bat create mode 100644 emsdk-cache/emsdk-main/emsdk_env.csh create mode 100644 emsdk-cache/emsdk-main/emsdk_env.fish create mode 100644 emsdk-cache/emsdk-main/emsdk_env.ps1 create mode 100644 emsdk-cache/emsdk-main/emsdk_env.sh create mode 100644 emsdk-cache/emsdk-main/emsdk_manifest.json create mode 100644 emsdk-cache/emsdk-main/legacy-binaryen-tags.txt create mode 100644 emsdk-cache/emsdk-main/legacy-emscripten-tags.txt create mode 100644 emsdk-cache/emsdk-main/llvm-tags-64bit.txt create mode 100644 emsdk-cache/emsdk-main/scripts/create_release.py create mode 100644 emsdk-cache/emsdk-main/scripts/get_emscripten_revision_info.py create mode 100644 emsdk-cache/emsdk-main/scripts/get_release_info.py create mode 100644 emsdk-cache/emsdk-main/scripts/update_bazel_workspace.py create mode 100644 emsdk-cache/emsdk-main/scripts/update_node.py create mode 100644 emsdk-cache/emsdk-main/scripts/update_python.py create mode 100644 emsdk-cache/emsdk-main/scripts/zip.py create mode 100644 emsdk-cache/emsdk-main/test/test.bat create mode 100644 emsdk-cache/emsdk-main/test/test.py create mode 100644 emsdk-cache/emsdk-main/test/test.sh create mode 100644 emsdk-cache/emsdk-main/test/test_activation.ps1 create mode 100644 emsdk-cache/emsdk-main/test/test_bazel.ps1 create mode 100644 emsdk-cache/emsdk-main/test/test_bazel.sh create mode 100644 emsdk-cache/emsdk-main/test/test_bazel_mac.sh create mode 100644 emsdk-cache/emsdk-main/test/test_node_path.sh create mode 100644 emsdk-cache/emsdk-main/test/test_path_preservation.ps1 create mode 100644 emsdk-cache/emsdk-main/test/test_source_env.sh create mode 160000 raylib.com diff --git a/emsdk-cache/emsdk-main/.circleci/config.yml b/emsdk-cache/emsdk-main/.circleci/config.yml new file mode 100644 index 000000000..aebb7895e --- /dev/null +++ b/emsdk-cache/emsdk-main/.circleci/config.yml @@ -0,0 +1,354 @@ +version: 2.1 + +orbs: + win: circleci/windows@5.0 + +executors: + ubuntu: + docker: + - image: buildpack-deps:focal + mac_arm64: + environment: + EMSDK_NOTTY: "1" + # Without this, any `brew install` command will result in self-update of + # brew itself which takes more than 4 minutes. + HOMEBREW_NO_AUTO_UPDATE: "1" + macos: + xcode: "13.4.1" + resource_class: macos.m1.medium.gen1 + linux_arm64: + machine: + image: ubuntu-2004:2023.07.1 + resource_class: arm.medium + +commands: + setup-macos: + steps: + - checkout + - run: + name: Install CMake + command: brew install cmake + test-macos: + steps: + - run: + name: test.sh + command: test/test.sh + - run: + name: test.py + command: | + source emsdk_env.sh + test/test.py + test-bazel-linux: + steps: + - checkout + - run: + name: install bazelisk + command: | + wget https://github.com/bazelbuild/bazelisk/releases/download/v1.25.0/bazelisk-linux-amd64 + chmod +x bazelisk-linux-amd64 + mv bazelisk-linux-amd64 /usr/local/bin/bazel + - run: test/test_bazel.sh + test-bazel-mac: + steps: + - checkout + - run: + name: install bazelisk + command: | + brew install bazelisk + - run: test/test_bazel_mac.sh + test-bazel-windows: + steps: + - checkout + - run: + name: Download Bazelisk + shell: powershell.exe + command: | + $ProgressPreference = "SilentlyContinue" + Invoke-WebRequest -Uri https://github.com/bazelbuild/bazelisk/releases/download/v1.10.1/bazelisk-windows-amd64.exe -OutFile ( New-Item -Path "temp\bazel\bazel.exe" -Force ) + - run: + name: Run Tests + shell: powershell.exe + command: | + $env:Path += ";C:\Python27amd64;$pwd\temp\bazel" + .\test\test_bazel.ps1 + +jobs: + flake8: + executor: ubuntu + steps: + - checkout + - run: + name: install pip + command: | + apt-get update -q + apt-get install -q -y python3-pip + - run: python3 -m pip install --upgrade pip + - run: python3 -m pip install flake8==7.1.1 + - run: python3 -m flake8 --show-source --statistics --extend-exclude=./scripts + + test-linux: + executor: ubuntu + environment: + EMSDK_NOTTY: "1" + # This is needed because the old gcc-7 that is installed on debian/bionic + # generates warnings about unused variables when doing C++17 + # destructuring: + # https://github.com/WebAssembly/binaryen/issues/4353 + CXXFLAGS: "-Wno-unused-variable" + # I don't know why circleci VMs pretent to have 36 cores but its a lie. + EMSDK_NUM_CORES: "4" + steps: + - checkout + - run: + name: Install debian packages + command: apt-get update -q && apt-get install -q -y cmake build-essential openjdk-8-jre-headless ksh zsh + - run: test/test_node_path.sh + - run: test/test.sh + - run: test/test_source_env.sh + - run: + name: test.py + command: | + source emsdk_env.sh + test/test.py + test-linux-arm64: + executor: linux_arm64 + steps: + - checkout + - run: + name: Install debian packages + command: sudo apt-get update -q && sudo apt-get install -q cmake build-essential openjdk-8-jre-headless + - run: test/test.sh + test-mac-arm64: + executor: mac_arm64 + steps: + - setup-macos + - test-macos + test-windows: + executor: + name: win/server-2019 + shell: bash.exe + environment: + # We need python installed before we can test anytyhing. + # There seems to be undocument copy of python installed here. Hopefully + # if this disappears there will be another way of getting a re-installed + # version. + PYTHON_BIN: "C:\\Python27amd64" + PYTHONUNBUFFERED: "1" + EMSDK_NOTTY: "1" + steps: + - checkout + - run: + name: Add python to bash path + command: echo "export PATH=\"$PATH:/c/python27amd64/\"" >> $BASH_ENV + - run: + name: Install latest + shell: cmd.exe + command: test\test.bat + - run: + name: test.py + command: | + source emsdk_env.sh + python test/test.py + + - run: + name: flagless (process/shell) test + shell: powershell.exe + command: | + test/test_activation.ps1 + + - run: + name: --permanent test + shell: powershell.exe + command: | + $env:PERMANENT_FLAG="--permanent" + test/test_activation.ps1 + + - run: + name: --system test + shell: powershell.exe + command: | + $env:SYSTEM_FLAG="--system" + test/test_activation.ps1 + + - run: + name: Process/Shell PATH preservation test + shell: powershell.exe + command: | + test/test_path_preservation.ps1 + + - run: + name: User PATH preservation test + shell: powershell.exe + command: | + $env:PERMANENT_FLAG="--permanent" + test/test_path_preservation.ps1 + + - run: + name: System PATH preservation test + shell: powershell.exe + command: | + $env:SYSTEM_FLAG="--system" + test/test_path_preservation.ps1 + + build-docker-image-x64: + executor: ubuntu + steps: + - checkout + - run: + name: install docker + command: | + apt-get update -q + apt-get install -q -y ca-certificates curl gnupg lsb-release + mkdir -p /etc/apt/keyrings + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null + apt-get update -q + apt-get install -q -y docker-ce docker-ce-cli containerd.io docker-compose-plugin + - setup_remote_docker + # Build the `latest` version of EMSDK as docker image + - run: + name: build + command: make -C ./docker version=latest build + - run: + name: test + command: make -C ./docker version=latest test + + publish-docker-image-x64: + executor: ubuntu + steps: + - checkout + - run: + name: install docker + command: | + apt-get update -q + apt-get install -q -y ca-certificates curl gnupg lsb-release + mkdir -p /etc/apt/keyrings + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null + apt-get update -q + apt-get install -q -y docker-ce docker-ce-cli containerd.io docker-compose-plugin + - setup_remote_docker + - run: + name: build + command: make -C ./docker version=${CIRCLE_TAG} build + - run: + name: test + command: make -C ./docker version=${CIRCLE_TAG} test + - run: + name: push image + command: | + docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" + make -C ./docker version=${CIRCLE_TAG} alias=latest push + + publish-docker-image-arm64: + executor: linux_arm64 + steps: + - checkout + - run: + name: build + command: make -C ./docker version=${CIRCLE_TAG} build + - run: + name: test + command: make -C ./docker version=${CIRCLE_TAG} test + - run: + name: push image + command: | + docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" + make -C ./docker version=${CIRCLE_TAG} alias=${CIRCLE_TAG}-arm64 only_alias=true push + + test-bazel7-linux: + executor: ubuntu + environment: + USE_BAZEL_VERSION: "7.x" + steps: + - test-bazel-linux + + test-bazel-latest-linux: + executor: ubuntu + steps: + - test-bazel-linux + + test-bazel7-mac-arm64: + executor: mac_arm64 + environment: + USE_BAZEL_VERSION: "7.x" + steps: + - test-bazel-mac + + test-bazel-latest-mac-arm64: + executor: mac_arm64 + steps: + - test-bazel-mac + + test-bazel7-windows: + executor: + name: win/server-2019 + shell: powershell.exe -ExecutionPolicy Bypass + environment: + PYTHONUNBUFFERED: "1" + EMSDK_NOTTY: "1" + # For some reason version resolution with "7.x" does not work on Windows, + # so we have to specify a full version. + USE_BAZEL_VERSION: "7.6.1" + steps: + - test-bazel-windows + + test-bazel-latest-windows: + executor: + name: win/server-2019 + shell: powershell.exe -ExecutionPolicy Bypass + environment: + PYTHONUNBUFFERED: "1" + EMSDK_NOTTY: "1" + steps: + - test-bazel-windows + +workflows: + flake8: + jobs: + - flake8 + test-linux: + jobs: + - test-linux + test-linux-arm64: + jobs: + - test-linux-arm64 + test-mac-arm64: + jobs: + - test-mac-arm64 + test-windows: + jobs: + - test-windows + build-docker-image: + jobs: + - build-docker-image-x64 + - publish-docker-image-x64: + filters: + branches: + ignore: /.*/ + tags: + only: /.*/ + - publish-docker-image-arm64: + filters: + branches: + ignore: /.*/ + tags: + only: /.*/ + test-bazel7-linux: + jobs: + - test-bazel7-linux + test-bazel-latest-linux: + jobs: + - test-bazel-latest-linux + test-bazel7-mac-arm64: + jobs: + - test-bazel7-mac-arm64 + test-bazel-latest-mac-arm64: + jobs: + - test-bazel-latest-mac-arm64 + test-bazel7-windows: + jobs: + - test-bazel7-windows + test-bazel-latest-windows: + jobs: + - test-bazel-latest-windows diff --git a/emsdk-cache/emsdk-main/.dockerignore b/emsdk-cache/emsdk-main/.dockerignore new file mode 100644 index 000000000..cf12f58fd --- /dev/null +++ b/emsdk-cache/emsdk-main/.dockerignore @@ -0,0 +1,21 @@ +# Ignore everything +* + +# Allow the entrypoint/test script inside the Docker container +!/docker/entrypoint.sh +!/docker/test_dockerimage.sh + +# Allow license file +!LICENSE + +# Allow necessary build files in top-level directory +!emscripten-releases-tags.json +!emsdk +!emsdk.py +!emsdk_env.sh +!emsdk_manifest.json + +# Allow files required to install legacy versions +!legacy-binaryen-tags.txt +!legacy-emscripten-tags.txt +!llvm-tags-64bit.txt diff --git a/emsdk-cache/emsdk-main/.flake8 b/emsdk-cache/emsdk-main/.flake8 new file mode 100644 index 000000000..ec94dda99 --- /dev/null +++ b/emsdk-cache/emsdk-main/.flake8 @@ -0,0 +1,24 @@ +[flake8] +extend-exclude = + ./.*, + ./binaryen, + ./clang, + ./crunch, + ./downloads, + ./emscripten, + ./fastcomp-clang, + ./fastcomp, + ./git, + ./gnu, + ./llvm, + ./node, + ./python, + ./releases, + ./temp, + ./upstream, + +# E111: Indentation is not a multiple of four +# E114: Indentation is not a multiple of four (comment) +extend-ignore = E111, E114 + +max-line-length = 326 diff --git a/emsdk-cache/emsdk-main/.github/stale.yml b/emsdk-cache/emsdk-main/.github/stale.yml new file mode 100644 index 000000000..1807a00f7 --- /dev/null +++ b/emsdk-cache/emsdk-main/.github/stale.yml @@ -0,0 +1,18 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 365 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 30 +# Issues with these labels will never be considered stale +exemptLabels: + - pinned + - security +# Label to use when marking an issue as stale +staleLabel: wontfix +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because there has been no + activity in the past year. It will be closed automatically if no further + activity occurs in the next 30 days. Feel free to re-open at any time if this + issue is still relevant. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false diff --git a/emsdk-cache/emsdk-main/.github/workflows/create-release.yml b/emsdk-cache/emsdk-main/.github/workflows/create-release.yml new file mode 100644 index 000000000..265a3619d --- /dev/null +++ b/emsdk-cache/emsdk-main/.github/workflows/create-release.yml @@ -0,0 +1,40 @@ +name: Create Release PR + +on: + workflow_dispatch: + inputs: + lto-sha: + required: true + type: string + nonlto-sha: + required: true + type: string + +jobs: + create-release-pr: + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v4 + - name: Run create_release.py + run: python3 scripts/create_release.py -r ${{ inputs.lto-sha }} -a ${{ inputs.nonlto-sha }} --gh-action + - name: Create PR + id: cpr + uses: peter-evans/create-pull-request@v6 + with: + token: ${{ secrets.EMSCRIPTEN_BOT_TOKEN }} + title: Release ${{ env.RELEASE_VERSION }} + commit-message: | + Release ${{ env.RELEASE_VERSION }} + team-reviewers: release-reviewers + labels: release + body: | + With emscripten-releases revisions: + https://chromium.googlesource.com/emscripten-releases/+/${{ inputs.lto-sha }} (LTO) + https://chromium.googlesource.com/emscripten-releases/+/${{ inputs.nonlto-sha }} (asserts) + branch: release_${{ env.RELEASE_VERSION }} + delete-branch: true + - name: Enable auto-merge + run: gh pr merge --squash --auto "${{ steps.cpr.outputs.pull-request-number }}" + env: + GH_TOKEN: ${{ secrets.EMSCRIPTEN_BOT_TOKEN }} diff --git a/emsdk-cache/emsdk-main/.github/workflows/tag-release.yml b/emsdk-cache/emsdk-main/.github/workflows/tag-release.yml new file mode 100644 index 000000000..1475e879d --- /dev/null +++ b/emsdk-cache/emsdk-main/.github/workflows/tag-release.yml @@ -0,0 +1,78 @@ +# When a release commit created by create-release.yml is landed, create the +# corresponding tag. +name: Create release tag + +on: + push: + paths: + - emscripten-releases-tags.json + - .github/workflows/tag-release.yml + branches: + - main + workflow_dispatch: + +jobs: + tag-release: + # Only activate for commits created by the create-release.yml workflow. + # The assumption is that when manual changes happen, we want to handle + # tagging manually too. + name: Check for release commit and create tag + # The author is emscripten-bot when triggered from Chromium CI, and github-actions when manually triggered. + if: ${{ github.event.head_commit.author.username == 'github-actions[bot]' || github.event.head_commit.author.username == 'emscripten-bot' }} + runs-on: ubuntu-latest + outputs: + is_release: ${{ steps.create-tag.outputs.result }} + steps: + - name: Match message and create tag + id: create-tag + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.EMSCRIPTEN_BOT_TOKEN }} + # A commit with the message of the form 'Release X.Y.Z' is expected + # to have been created by create_release.py and update the latest + # release in emscripten-releases-tags.json + script: | + const message = `${{ github.event.head_commit.message }}` + const regex = /Release ([0-9]+.[0-9]+.[0-9]+)/; + const match = message.match(regex); + let is_release = false; + if (match) { + const release = match[1]; + console.log(`Matched release ${release}`); + await github.rest.git.createRef({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: `refs/tags/${release}`, + sha: context.sha + }); + is_release = true; + } else { + console.log(`Commit message: '${message}' did not match pattern`); + } + return is_release; + + dispatch-emscripten-tag: + name: Dispatch workflow to tag emscripten repo + runs-on: ubuntu-latest + needs: tag-release + if: ${{ needs.tag-release.outputs.is_release == 'true' }} + steps: + - name: Checkout repo + uses: actions/checkout@v4 + - name: Find emscripten revision + # get_emscripten_revision_info.py sets env.EMSCRIPTEN_HASH to the + # emscripten hash associated with the latest release in + # emscripten-releases-tags.json + run: python3 scripts/get_emscripten_revision_info.py + - name: Dispatch emscripten workflow + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.EMSCRIPTEN_BOT_TOKEN }} + script: | + await github.rest.actions.createWorkflowDispatch({ + owner: context.repo.owner, + repo: 'emscripten', + workflow_id: 'tag-release.yml', + ref: 'main', + inputs: { 'release-sha': '${{ env.EMSCRIPTEN_HASH }}' } + }); diff --git a/emsdk-cache/emsdk-main/.gitignore b/emsdk-cache/emsdk-main/.gitignore new file mode 100644 index 000000000..d181c30d5 --- /dev/null +++ b/emsdk-cache/emsdk-main/.gitignore @@ -0,0 +1,35 @@ +*.pyc +__pycache__ + +# Support for --embedded configs +/.emscripten +/.emscripten.old +/.emscripten_cache +/.emscripten_cache__last_clear +/.emscripten_sanity +/.emscripten_sanity_wasm + +# Tags files that get generated at runtime +/emscripten-releases-tot.txt + +# File that get download/extracted by emsdk itself +/ccache +/gnu +/upstream +/fastcomp +/fastcomp-clang/ +/llvm +/ninja +/releases +/clang +/emscripten +/git +/node +/python +/temp +/downloads +/crunch +/java +/mingw +/spidermonkey +/binaryen diff --git a/emsdk-cache/emsdk-main/LICENSE b/emsdk-cache/emsdk-main/LICENSE new file mode 100644 index 000000000..1b8cf86be --- /dev/null +++ b/emsdk-cache/emsdk-main/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2018 Emscripten authors (see AUTHORS in Emscripten) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +---------------------------------------------------------------------------- + +This is the MIT/Expat Licence. For more information see: + +1. http://www.opensource.org/licenses/mit-license.php + +2. http://en.wikipedia.org/wiki/MIT_License diff --git a/emsdk-cache/emsdk-main/README.md b/emsdk-cache/emsdk-main/README.md new file mode 100644 index 000000000..1eb318270 --- /dev/null +++ b/emsdk-cache/emsdk-main/README.md @@ -0,0 +1,245 @@ +Emscripten SDK +============== + +[![CircleCI](https://circleci.com/gh/emscripten-core/emsdk/tree/main.svg?style=svg)](https://circleci.com/gh/emscripten-core/emsdk/tree/main) + +The Emscripten toolchain is distributed as a standalone Emscripten SDK. The SDK +provides all the required tools, such as Clang, Python and Node.js along with an +update mechanism that enables migrating to newer Emscripten versions as they are +released. + +You can also set up Emscripten from source, without the pre-built SDK, see +"Installing from Source" below. + +## Downloads / How do I get the latest Emscripten build? + +To get started with Emscripten development, see the [Emscripten website +documentation](https://emscripten.org/docs/getting_started/downloads.html). + +That explains how to use the emsdk to get the latest binary builds (without +compiling from source). Basically, that amounts to + +``` +git pull +./emsdk install latest +./emsdk activate latest +``` + +## SDK Concepts + +The Emscripten SDK is effectively a small package manager for tools that are +used in conjunction with Emscripten. The following glossary highlights the +important concepts to help understanding the internals of the SDK: + +* **Tool**: The basic unit of software bundled in the SDK. A Tool has a name and + a version. For example, 'clang-3.2-32bit' is a Tool that contains the 32-bit + version of the Clang v3.2 compiler. +* **SDK**: A set of tools. For example, 'sdk-1.5.6-32bit' is an SDK consisting + of the tools `clang-3.2-32bit`, `node-0.10.17-32bit`, `python-2.7.5.1-32bit` + and `emscripten-1.5.6`. +* **Active Tool/SDK**: Emscripten SDK stores compiler configuration in a file + called `.emscripten` within the emsdk directory. This file points to paths + for Emscripten, Python, Clang and so on. If the configuration file points to a + Tool in a specific directory, then that tool is denoted as being + **active**. This mechanism allows switching between different installed + tools and SDKs. +* **emsdk**: This is the name of the manager script that Emscripten SDK is + accessed through. Most operations are of the form `emsdk `. + +## System Requirements + +Using the emsdk pre-compiled packages requires only the minimal set of +dependencies lists below. When building from source a wider set of tools +include git, cmake, and a host compiler are required. See: +https://emscripten.org/docs/building_from_source/toolchain_what_is_needed.html. + +### Mac OS X + +- For Intel-based Macs, macOS 10.13 or newer. For ARM64 M1 based Macs, macOS + 11.0 or newer. +- `java`: For running closure compiler (optional). After installing emscripten + via emsdk, typing 'emcc --help' should pop up a OS X dialog "Java is not + installed. To open java, you need a Java SE 6 runtime. Would you like to + install one now?" that will automatically download a Java runtime to the + system. + +### Linux + +- `python`: Version 3.8 or above. +- `java`: For running closure compiler (optional) + +The emsdk pre-compiled binaries are built against Ubuntu/Focal 20.04 LTS and +therefore depend on system libraries compatible with versions of `glibc` and +`libstdc++` present in that release. If your linux distribution is very old +you may not be able to use the pre-compiled binaries packages. + +### Windows + +- `java`: For running closure compiler (optional) + +## Uninstalling the Emscripten SDK + +To remove the Emscripten SDK, simply delete the emsdk directory. + +## SDK Maintenance + +The following tasks are common with the Emscripten SDK: + +### How do I work the emsdk utility? + +Run `emsdk help` or just `emsdk` to get information about all available commands. + +### How do I check the installation status and version of the SDK and tools? + +To get a list of all currently installed tools and SDK versions, and all +available tools, run `emsdk list`. +* A line will be printed for each tool/SDK that is available for installation. +* The text `INSTALLED` will be shown for each tool that has already been + installed. +* If a tool/SDK is currently active, a star * will be shown next to it. +* If a tool/SDK is currently active, but the terminal your are calling emsdk + from does not have `PATH` and environment set up to utilize that tool, a star + in parentheses (\*) will be shown next to it. Run `emsdk_env.bat` (Windows) or + `source ./emsdk_env.sh` (Linux and OS X) to set up the environment for the + calling terminal. + +### How do I install a tool/SDK version? + +Run the command `emsdk install ` to download and install a new +tool or an SDK version. + +### How do I remove a tool or an SDK? + +Run the command `emsdk uninstall ` to delete the given tool or +SDK from the local hard drive completely. + +### How do I check for updates to the Emscripten SDK? + +`emsdk update` will fetch package information for all the new tools and +SDK versions. After that, run `emsdk install ` to install a new +version. + +### How do I install an old Emscripten compiler version? + +Emsdk contains a history of old compiler versions that you can use to maintain +your migration path. Type `emsdk list --old` to get a list of archived tool and +SDK versions, and `emsdk install ` to install it. + +### I want to build from source! + +Some Emsdk Tool and SDK targets refer to packages that are precompiled, and +no compilation is needed when installing them. Other Emsdk Tools and SDK +targets come "from source", meaning that they will fetch the source repositories +using git, and compile the package on demand. + +When you run `emsdk list`, it will group the Tools and SDKs under these two +categories. + +To obtain and build latest wasm SDK from source, run + +``` +emsdk install sdk-main-64bit +emsdk activate sdk-main-64bit +``` + +You can use this target for example to bootstrap developing patches to LLVM, +Binaryen or Emscripten. (After initial installation, use `git remote add` +in the cloned tree to add your own fork to push changes as patches) + +If you only intend to contribute to Emscripten repository, and not to LLVM +or Binaryen, you can also use precompiled versions of them, and only git +clone the Emscripten repository. For more details, see + +https://emscripten.org/docs/contributing/developers_guide.html?highlight=developer#setting-up + +### When working on git branches compiled from source, how do I update to a newer compiler version? + +Unlike tags and precompiled versions, a few of the SDK packages are based on +"moving" git branches and compiled from source (e.g. sdk-main, +sdk-main, emscripten-main, binaryen-main). Because of that, the +compiled versions will eventually go out of date as new commits are introduced +to the development branches. To update an old compiled installation of one of +this branches, simply reissue the "emsdk install" command on that tool/SDK. This +will `git pull` the latest changes to the branch and issue an incremental +recompilation of the target in question. This way you can keep calling `emsdk +install` to keep an Emscripten installation up to date with a given git branch. + +Note though that if the previously compiled branch is very old, sometimes CMake +gets confused and is unable to properly rebuild a project. This has happened in +the past e.g. when LLVM migrated to requiring a newer CMake version. In cases of +any odd compilation errors, it is advised to try deleting the intermediate build +directory to clear the build (e.g. "emsdk/clang/fastcomp/build_xxx/") before +reissuing `emsdk install`. + +### How do I change the currently active SDK version? + +You can toggle between different tools and SDK versions by running `emsdk +activate `. Activating a tool will set up `~/.emscripten` to +point to that particular tool. On Windows, you can pass the option `--permanent` to +the `activate` command to register the environment permanently for the current user. Use `--system` to do this for all users. + +### How do I track the latest Emscripten development with the SDK? + +A common and supported use case of the Emscripten SDK is to enable the workflow +where you directly interact with the github repositories. This allows you to +obtain new features and latest fixes immediately as they are pushed to the +github repository, without having to wait for release to be tagged. You do not +need a github account or a fork of Emscripten to do this. To switch to using the +latest git development branch `main`, run the following: + + emsdk install git-1.9.4 # Install git. Skip if the system already has it. + emsdk install sdk-main-64bit # Clone+pull the latest emscripten-core/emscripten/main. + emsdk activate sdk-main-64bit # Set the main SDK as the currently active one. + +### How do I use my own Emscripten github fork with the SDK? + +It is also possible to use your own fork of the Emscripten repository via the +SDK. This is achieved with standard git machinery, so if you are already +acquainted with working on multiple remotes in a git clone, these steps should +be familiar to you. This is useful in the case when you want to make your own +modifications to the Emscripten toolchain, but still keep using the SDK +environment and tools. To set up your own fork as the currently active +Emscripten toolchain, first install the `sdk-main` SDK like shown in the +previous section, and then run the following commands in the emsdk directory: + + cd emscripten/main + # Add a git remote link to your own repository. + git remote add myremote https://github.com/mygituseraccount/emscripten.git + # Obtain the changes in your link. + git fetch myremote + # Switch the emscripten-main tool to use your fork. + git checkout -b mymain --track myremote/main + +In this way you can utilize the Emscripten SDK tools while using your own git +fork. You can switch back and forth between remotes via the `git checkout` +command as usual. + +### How do I use Emscripten SDK with a custom version of python, java, node.js or some other tool? + +The provided Emscripten SDK targets are metapackages that refer to a specific +set of tools that have been tested to work together. For example, +`sdk-1.35.0-64bit` is an alias to the individual packages `clang-e1.35.0-64bit`, +`node-4.1.1-64bit`, `python-2.7.5.3-64bit` and `emscripten-1.35.0`. This means +that if you install this version of the SDK, both python and node.js will be +installed inside emsdk as well. If you want to use your own/system python or +node.js instead, you can opt to install emsdk by specifying the individual set +of packages that you want to use. For example, `emsdk install +clang-e1.35.0-64bit emscripten-1.35.0` will only install the Emscripten +LLVM/Clang compiler and the Emscripten frontend without supplying python and +node.js. + +### My installation fails with "fatal error: ld terminated with signal 9 [Killed]"? + +This may happen if the system runs out of memory. If you are attempting to build +one of the packages from source and are running in a virtual OS or may have +relatively little RAM and disk space available, then the build might fail. Try +feeding your computer more memory. Another thing to try is to force emsdk +install to build in a singlethreaded mode, which will require less RAM +simultaneously. To do this, pass the `-j1` flag to the `emsdk install` command. + +### How do I run Emscripten on 32-bit systems or non-x86-64 systems? + +Emscripten SDK releases are no longer packaged or maintained for 32-bit systems. +If you want to run Emscripten on a 32-bit system, you can try manually building +the compiler. Follow the steps in the above section "Building an Emscripten tag +or branch from source" to get started. diff --git a/emsdk-cache/emsdk-main/SECURITY.md b/emsdk-cache/emsdk-main/SECURITY.md new file mode 100644 index 000000000..461772867 --- /dev/null +++ b/emsdk-cache/emsdk-main/SECURITY.md @@ -0,0 +1,16 @@ +# Security Policy + +If you have discovered a security vulnerability in this project, please report it +privately. **Do not disclose it as a public issue.** This gives us time to work with you +to fix the issue before public exposure, reducing the chance that the exploit will be +used before a patch is released. + +Please submit the report as a [security bug on the Chromium tracker](https://bugs.chromium.org/p/chromium/issues/entry?template=Security%20Bug). + +Please provide the following information in your report: + +- A description of the vulnerability and its impact +- How to reproduce the issue +- Make it clear that it's an Emscripten SDK bug. + +We ask that you give us 90 days to work on a fix before public exposure. diff --git a/emsdk-cache/emsdk-main/bazel/.bazelrc b/emsdk-cache/emsdk-main/bazel/.bazelrc new file mode 100644 index 000000000..fbd75a7ea --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/.bazelrc @@ -0,0 +1 @@ +build --incompatible_enable_cc_toolchain_resolution diff --git a/emsdk-cache/emsdk-main/bazel/.gitignore b/emsdk-cache/emsdk-main/bazel/.gitignore new file mode 100644 index 000000000..a6ef824c1 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/.gitignore @@ -0,0 +1 @@ +/bazel-* diff --git a/emsdk-cache/emsdk-main/bazel/MODULE.bazel b/emsdk-cache/emsdk-main/bazel/MODULE.bazel new file mode 100644 index 000000000..c35e86e1f --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/MODULE.bazel @@ -0,0 +1,79 @@ +module( + name = "emsdk", + version = "4.0.13", +) + +bazel_dep(name = "platforms", version = "0.0.11") +bazel_dep(name = "bazel_skylib", version = "1.7.1") +bazel_dep(name = "aspect_rules_js", version = "1.42.0") +bazel_dep(name = "rules_nodejs", version = "6.3.2") +bazel_dep(name = "rules_cc", version = "0.1.1") +bazel_dep(name = "rules_python", version = "1.3.0") + +python = use_extension("@rules_python//python/extensions:python.bzl", "python") +python.toolchain( + python_version = "3.13", +) + +node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node") +node.toolchain(node_version = "20.18.0") +use_repo(node, "nodejs") + +emscripten_deps = use_extension( + "//:emscripten_deps.bzl", + "emscripten_deps", +) +use_repo(emscripten_deps, "emscripten_bin_linux") +use_repo(emscripten_deps, "emscripten_bin_linux_arm64") +use_repo(emscripten_deps, "emscripten_bin_mac") +use_repo(emscripten_deps, "emscripten_bin_mac_arm64") +use_repo(emscripten_deps, "emscripten_bin_win") + +npm = use_extension( + "@aspect_rules_js//npm:extensions.bzl", + "npm", +) +npm.npm_translate_lock( + name = "emscripten_npm_linux", + data = ["@emscripten_bin_linux//:emscripten/package.json"], + npm_package_lock = "@emscripten_bin_linux//:emscripten/package-lock.json", +) +npm.npm_translate_lock( + name = "emscripten_npm_linux_arm64", + data = ["@emscripten_bin_linux_arm64//:emscripten/package.json"], + npm_package_lock = "@emscripten_bin_linux_arm64//:emscripten/package-lock.json", +) +npm.npm_translate_lock( + name = "emscripten_npm_mac", + data = ["@emscripten_bin_mac//:emscripten/package.json"], + npm_package_lock = "@emscripten_bin_mac//:emscripten/package-lock.json", +) +npm.npm_translate_lock( + name = "emscripten_npm_mac_arm64", + data = ["@emscripten_bin_mac_arm64//:emscripten/package.json"], + npm_package_lock = "@emscripten_bin_mac_arm64//:emscripten/package-lock.json", +) +npm.npm_translate_lock( + name = "emscripten_npm_win", + data = ["@emscripten_bin_win//:emscripten/package.json"], + npm_package_lock = "@emscripten_bin_win//:emscripten/package-lock.json", +) +use_repo( + npm, + "emscripten_npm_linux", + "emscripten_npm_linux_arm64", + "emscripten_npm_mac", + "emscripten_npm_mac_arm64", + "emscripten_npm_win", +) + +emscripten_cache = use_extension("//:emscripten_cache.bzl", "emscripten_cache") +use_repo(emscripten_cache, "emscripten_cache") + +register_toolchains( + "//emscripten_toolchain:cc-toolchain-wasm-emscripten_linux", + "//emscripten_toolchain:cc-toolchain-wasm-emscripten_linux_arm64", + "//emscripten_toolchain:cc-toolchain-wasm-emscripten_mac", + "//emscripten_toolchain:cc-toolchain-wasm-emscripten_mac_arm64", + "//emscripten_toolchain:cc-toolchain-wasm-emscripten_win", +) diff --git a/emsdk-cache/emsdk-main/bazel/MODULE.bazel.lock b/emsdk-cache/emsdk-main/bazel/MODULE.bazel.lock new file mode 100644 index 000000000..69ca244b7 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/MODULE.bazel.lock @@ -0,0 +1,3696 @@ +{ + "lockFileVersion": 18, + "registryFileHashes": { + "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", + "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", + "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", + "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/source.json": "9be551b8d4e3ef76875c0d744b5d6a504a27e3ae67bc6b28f46415fd2d2957da", + "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/MODULE.bazel": "e4529e12d8cd5b828e2b5960d07d3ec032541740d419d7d5b859cabbf5b056f9", + "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/source.json": "80cb66069ad626e0921555cd2bf278286fd7763fae2450e564e351792e8303f4", + "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/MODULE.bazel": "f19e6b4a16f77f8cf3728eac1f60dbfd8e043517fd4f4dbf17a75a6c50936d62", + "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/source.json": "abbb3eac3b6af76b8ce230a9a901c6d08d93f4f5ffd55314bf630827dddee57e", + "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", + "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", + "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", + "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", + "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", + "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", + "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", + "https://bcr.bazel.build/modules/bazel_features/1.21.0/source.json": "3e8379efaaef53ce35b7b8ba419df829315a880cb0a030e5bb45c96d6d5ecb5f", + "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", + "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", + "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", + "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", + "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", + "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", + "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", + "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953", + "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", + "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", + "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", + "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", + "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", + "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/source.json": "41e9e129f80d8c8bf103a7acc337b76e54fad1214ac0a7084bf24f4cd924b8b4", + "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", + "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", + "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", + "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", + "https://bcr.bazel.build/modules/platforms/0.0.11/source.json": "f7e188b79ebedebfe75e9e1d098b8845226c7992b307e28e1496f23112e8fc29", + "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", + "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", + "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", + "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", + "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", + "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", + "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", + "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", + "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", + "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", + "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", + "https://bcr.bazel.build/modules/protobuf/29.0/source.json": "b857f93c796750eef95f0d61ee378f3420d00ee1dd38627b27193aa482f4f981", + "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", + "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", + "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/source.json": "be4789e951dd5301282729fe3d4938995dc4c1a81c2ff150afc9f1b0504c6022", + "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", + "https://bcr.bazel.build/modules/re2/2023-09-01/source.json": "e044ce89c2883cd957a2969a43e79f7752f9656f6b20050b62f90ede21ec6eb4", + "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", + "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", + "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", + "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", + "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", + "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", + "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", + "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", + "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", + "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", + "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", + "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", + "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", + "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", + "https://bcr.bazel.build/modules/rules_cc/0.1.1/source.json": "d61627377bd7dd1da4652063e368d9366fc9a73920bfa396798ad92172cf645c", + "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", + "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", + "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", + "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", + "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", + "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", + "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", + "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", + "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", + "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", + "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", + "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", + "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", + "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", + "https://bcr.bazel.build/modules/rules_java/8.6.1/source.json": "f18d9ad3c4c54945bf422ad584fa6c5ca5b3116ff55a5b1bc77e5c1210be5960", + "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", + "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", + "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", + "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", + "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/source.json": "6f5f5a5a4419ae4e37c35a5bb0a6ae657ed40b7abc5a5189111b47fcebe43197", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", + "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", + "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", + "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", + "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", + "https://bcr.bazel.build/modules/rules_nodejs/5.8.2/MODULE.bazel": "6bc03c8f37f69401b888023bf511cb6ee4781433b0cb56236b2e55a21e3a026a", + "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/MODULE.bazel": "42e8d5254b6135f890fecca7c8d7f95a7d27a45f8275b276f66ec337767530ef", + "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/source.json": "80e0a68eb81772f1631f8b69014884eebc2474b3b3025fd19a5240ae4f76f9c9", + "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a", + "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", + "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", + "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", + "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", + "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", + "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", + "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", + "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", + "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", + "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", + "https://bcr.bazel.build/modules/rules_python/1.3.0/MODULE.bazel": "8361d57eafb67c09b75bf4bbe6be360e1b8f4f18118ab48037f2bd50aa2ccb13", + "https://bcr.bazel.build/modules/rules_python/1.3.0/source.json": "25932f917cd279c7baefa6cb1d3fa8750a7a29de522024449b19af6eab51f4a0", + "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", + "https://bcr.bazel.build/modules/rules_shell/0.2.0/source.json": "7f27af3c28037d9701487c4744b5448d26537cc66cdef0d8df7ae85411f8de95", + "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", + "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", + "https://bcr.bazel.build/modules/stardoc/0.5.4/MODULE.bazel": "6569966df04610b8520957cb8e97cf2e9faac2c0309657c537ab51c16c18a2a4", + "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", + "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", + "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", + "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", + "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", + "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", + "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d", + "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" + }, + "selectedYankedVersions": {}, + "moduleExtensions": { + "//:emscripten_cache.bzl%emscripten_cache": { + "general": { + "bzlTransitiveDigest": "uqDvXmpTNqW4+ie/Fk+xC3TrFrKvL+9hNtoP51Kt2oo=", + "usagesDigest": "hMVKvInxunfDgmxewLpCIKhgZsrX3FDbi457LYnniZ8=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "emscripten_cache": { + "repoRuleId": "@@//:emscripten_cache.bzl%_emscripten_cache_repository", + "attributes": { + "configuration": [], + "targets": [] + } + } + }, + "recordedRepoMappingEntries": [] + } + }, + "//:emscripten_deps.bzl%emscripten_deps": { + "general": { + "bzlTransitiveDigest": "h0wQ3PSRx/Q9n+izTifYO8L728OTd9B5YbLOWcobVYE=", + "usagesDigest": "/x8y7Sw52S7o089fbMUUat1GlyVBrfKFc31+LteokYI=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "emscripten_bin_linux": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", + "sha256": "27fc220a9ad98d323cad73531ff563e9838c9e1205f51ee2a5632bb4266a35d2", + "strip_prefix": "install", + "type": "tar.xz", + "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" + } + }, + "emscripten_bin_linux_arm64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", + "sha256": "2d03f8eb3f81dd94821658eefbb442a92b0b7601f4cfb08590590fd7bc467ef8", + "strip_prefix": "install", + "type": "tar.xz", + "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" + } + }, + "emscripten_bin_mac": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", + "sha256": "c06048915595726fc2e2da6a8db3134581a6287645fb818802a9734ff9785e77", + "strip_prefix": "install", + "type": "tar.xz", + "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" + } + }, + "emscripten_bin_mac_arm64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", + "sha256": "35d743453d0f91857b09f00d721037bb46753aaeae373bd7f64746338db11770", + "strip_prefix": "install", + "type": "tar.xz", + "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" + } + }, + "emscripten_bin_win": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/clang++.exe\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/llvm-ar.exe\",\n \"bin/llvm-dwarfdump.exe\",\n \"bin/llvm-nm.exe\",\n \"bin/llvm-objcopy.exe\",\n \"bin/wasm-ctor-eval.exe\",\n \"bin/wasm-emscripten-finalize.exe\",\n \"bin/wasm-ld.exe\",\n \"bin/wasm-metadce.exe\",\n \"bin/wasm-opt.exe\",\n \"bin/wasm-split.exe\",\n \"bin/wasm2js.exe\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar.exe\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", + "sha256": "3b576e825b26426bb72854ed98752df3fcb58cc3ab1dc116566e328b79a8abb3", + "strip_prefix": "install", + "type": "zip", + "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/win/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.zip" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "", + "bazel_tools", + "bazel_tools" + ], + [ + "bazel_tools", + "rules_cc", + "rules_cc+" + ] + ] + } + }, + "@@aspect_bazel_lib+//lib:extensions.bzl%toolchains": { + "general": { + "bzlTransitiveDigest": "nrCBrZBQH3Dq30TXMpPMV6lWpEDozX0S0kCia4Lrpj0=", + "usagesDigest": "1c7PNX163TGNqWzfejRnWpH/hiT4/GRG0kYxuez0Uz0=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "copy_directory_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "copy_directory_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "copy_directory_freebsd_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "freebsd_amd64" + } + }, + "copy_directory_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "copy_directory_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "copy_directory_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "windows_amd64" + } + }, + "copy_directory_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_toolchains_repo", + "attributes": { + "user_repository_name": "copy_directory" + } + }, + "copy_to_directory_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "copy_to_directory_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "copy_to_directory_freebsd_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "freebsd_amd64" + } + }, + "copy_to_directory_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "copy_to_directory_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "copy_to_directory_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "windows_amd64" + } + }, + "copy_to_directory_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_toolchains_repo", + "attributes": { + "user_repository_name": "copy_to_directory" + } + }, + "jq_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "darwin_amd64", + "version": "1.6" + } + }, + "jq_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "darwin_arm64", + "version": "1.6" + } + }, + "jq_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "linux_amd64", + "version": "1.6" + } + }, + "jq_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "windows_amd64", + "version": "1.6" + } + }, + "jq": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_host_alias_repo", + "attributes": {} + }, + "jq_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_toolchains_repo", + "attributes": { + "user_repository_name": "jq" + } + }, + "yq_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "darwin_amd64", + "version": "4.25.2" + } + }, + "yq_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "darwin_arm64", + "version": "4.25.2" + } + }, + "yq_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_amd64", + "version": "4.25.2" + } + }, + "yq_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_arm64", + "version": "4.25.2" + } + }, + "yq_linux_s390x": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_s390x", + "version": "4.25.2" + } + }, + "yq_linux_ppc64le": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_ppc64le", + "version": "4.25.2" + } + }, + "yq_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "windows_amd64", + "version": "4.25.2" + } + }, + "yq": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_host_alias_repo", + "attributes": {} + }, + "yq_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_toolchains_repo", + "attributes": { + "user_repository_name": "yq" + } + }, + "coreutils_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "darwin_amd64", + "version": "0.0.16" + } + }, + "coreutils_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "darwin_arm64", + "version": "0.0.16" + } + }, + "coreutils_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "linux_amd64", + "version": "0.0.16" + } + }, + "coreutils_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "linux_arm64", + "version": "0.0.16" + } + }, + "coreutils_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "windows_amd64", + "version": "0.0.16" + } + }, + "coreutils_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_toolchains_repo", + "attributes": { + "user_repository_name": "coreutils" + } + }, + "bsd_tar_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "bsd_tar_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "bsd_tar_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "bsd_tar_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "bsd_tar_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "windows_amd64" + } + }, + "bsd_tar_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%tar_toolchains_repo", + "attributes": { + "user_repository_name": "bsd_tar" + } + }, + "expand_template_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "expand_template_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "expand_template_freebsd_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "freebsd_amd64" + } + }, + "expand_template_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "expand_template_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "expand_template_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "windows_amd64" + } + }, + "expand_template_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_toolchains_repo", + "attributes": { + "user_repository_name": "expand_template" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_bazel_lib+", + "aspect_bazel_lib", + "aspect_bazel_lib+" + ], + [ + "aspect_bazel_lib+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_bazel_lib+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { + "general": { + "bzlTransitiveDigest": "poAa/2uyrVSr9Hel1HD6GfFwqId27yXfePnG+3Dmt90=", + "usagesDigest": "yxkJioaKxOYkZAdkGoq2Cm79s4pW36Xwx7a8awQOU2E=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "pnpm": { + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", + "attributes": { + "package": "pnpm", + "version": "8.6.7", + "root_package": "", + "link_workspace": "", + "link_packages": {}, + "integrity": "sha512-vRIWpD/L4phf9Bk2o/O2TDR8fFoJnpYrp2TKqTIZF/qZ2/rgL3qKXzHofHgbXsinwMoSEigz28sqk3pQ+yMEQQ==", + "url": "", + "commit": "", + "patch_args": [ + "-p0" + ], + "patches": [], + "custom_postinstall": "", + "npm_auth": "", + "npm_auth_basic": "", + "npm_auth_username": "", + "npm_auth_password": "", + "lifecycle_hooks": [], + "extra_build_content": "load(\"@aspect_rules_js//js:defs.bzl\", \"js_binary\")\njs_binary(name = \"pnpm\", data = glob([\"package/**\"]), entry_point = \"package/dist/pnpm.cjs\", visibility = [\"//visibility:public\"])", + "generate_bzl_library_targets": false, + "extract_full_archive": true + } + }, + "pnpm__links": { + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", + "attributes": { + "package": "pnpm", + "version": "8.6.7", + "dev": false, + "root_package": "", + "link_packages": {}, + "deps": {}, + "transitive_closure": {}, + "lifecycle_build_target": false, + "lifecycle_hooks_env": [], + "lifecycle_hooks_execution_requirements": [ + "no-sandbox" + ], + "lifecycle_hooks_use_default_shell_env": false, + "bins": {}, + "package_visibility": [ + "//visibility:public" + ], + "replace_package": "" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_bazel_lib+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_bazel_lib+", + "bazel_tools", + "bazel_tools" + ], + [ + "aspect_rules_js+", + "aspect_bazel_lib", + "aspect_bazel_lib+" + ], + [ + "aspect_rules_js+", + "bazel_features", + "bazel_features+" + ], + [ + "aspect_rules_js+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_rules_js+", + "bazel_tools", + "bazel_tools" + ], + [ + "bazel_features+", + "bazel_features_globals", + "bazel_features++version_extension+bazel_features_globals" + ], + [ + "bazel_features+", + "bazel_features_version", + "bazel_features++version_extension+bazel_features_version" + ], + [ + "bazel_features+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@pybind11_bazel+//:python_configure.bzl%extension": { + "general": { + "bzlTransitiveDigest": "d4N/SZrl3ONcmzE98rcV0Fsro0iUbjNQFTIiLiGuH+k=", + "usagesDigest": "fycyB39YnXIJkfWCIXLUKJMZzANcuLy9ZE73hRucjFk=", + "recordedFileInputs": { + "@@pybind11_bazel+//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e" + }, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "local_config_python": { + "repoRuleId": "@@pybind11_bazel+//:python_configure.bzl%python_configure", + "attributes": {} + }, + "pybind11": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file": "@@pybind11_bazel+//:pybind11.BUILD", + "strip_prefix": "pybind11-2.11.1", + "urls": [ + "https://github.com/pybind/pybind11/archive/v2.11.1.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "pybind11_bazel+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_fuzzing+//fuzzing/private:extensions.bzl%non_module_dependencies": { + "general": { + "bzlTransitiveDigest": "mGiTB79hRNjmeDTQdzkpCHyzXhErMbufeAmySBt7s5s=", + "usagesDigest": "wy6ISK6UOcBEjj/mvJ/S3WeXoO67X+1llb9yPyFtPgc=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "platforms": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz", + "https://github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz" + ], + "sha256": "8150406605389ececb6da07cbcb509d5637a3ab9a24bc69b1101531367d89d74" + } + }, + "rules_python": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8", + "strip_prefix": "rules_python-0.28.0", + "url": "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz" + } + }, + "bazel_skylib": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" + ] + } + }, + "com_google_absl": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.1.zip" + ], + "strip_prefix": "abseil-cpp-20240116.1", + "integrity": "sha256-7capMWOvWyoYbUaHF/b+I2U6XLMaHmky8KugWvfXYuk=" + } + }, + "rules_fuzzing_oss_fuzz": { + "repoRuleId": "@@rules_fuzzing+//fuzzing/private/oss_fuzz:repository.bzl%oss_fuzz_repository", + "attributes": {} + }, + "honggfuzz": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file": "@@rules_fuzzing+//:honggfuzz.BUILD", + "sha256": "6b18ba13bc1f36b7b950c72d80f19ea67fbadc0ac0bb297ec89ad91f2eaa423e", + "url": "https://github.com/google/honggfuzz/archive/2.5.zip", + "strip_prefix": "honggfuzz-2.5" + } + }, + "rules_fuzzing_jazzer": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", + "attributes": { + "sha256": "ee6feb569d88962d59cb59e8a31eb9d007c82683f3ebc64955fd5b96f277eec2", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer/0.20.1/jazzer-0.20.1.jar" + } + }, + "rules_fuzzing_jazzer_api": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", + "attributes": { + "sha256": "f5a60242bc408f7fa20fccf10d6c5c5ea1fcb3c6f44642fec5af88373ae7aa1b", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer-api/0.20.1/jazzer-api-0.20.1.jar" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_fuzzing+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_java+//java:rules_java_deps.bzl%compatibility_proxy": { + "general": { + "bzlTransitiveDigest": "84xJEZ1jnXXwo8BXMprvBm++rRt4jsTu9liBxz0ivps=", + "usagesDigest": "jTQDdLDxsS43zuRmg1faAjIEPWdLAbDAowI1pInQSoo=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "compatibility_proxy": { + "repoRuleId": "@@rules_java+//java:rules_java_deps.bzl%_compatibility_proxy_repo_rule", + "attributes": {} + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_java+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { + "general": { + "bzlTransitiveDigest": "sFhcgPbDQehmbD1EOXzX4H1q/CD5df8zwG4kp4jbvr8=", + "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_github_jetbrains_kotlin_git": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", + "attributes": { + "urls": [ + "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" + ], + "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" + } + }, + "com_github_jetbrains_kotlin": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", + "attributes": { + "git_repository_name": "com_github_jetbrains_kotlin_git", + "compiler_version": "1.9.23" + } + }, + "com_github_google_ksp": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", + "attributes": { + "urls": [ + "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" + ], + "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", + "strip_version": "1.9.23-1.0.20" + } + }, + "com_github_pinterest_ktlint": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", + "urls": [ + "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" + ], + "executable": true + } + }, + "rules_android": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", + "strip_prefix": "rules_android-0.1.1", + "urls": [ + "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_kotlin+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_nodejs+//nodejs:extensions.bzl%node": { + "general": { + "bzlTransitiveDigest": "rphcryfYrOY/P3emfTskC/GY5YuHcwMl2B2ncjaM8lY=", + "usagesDigest": "02fIHVSGNmq3/4pf3KaxTES2ZYYjuW75/2q5dmj9+p0=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "nodejs_linux_amd64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "linux_amd64" + } + }, + "nodejs_linux_arm64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "linux_arm64" + } + }, + "nodejs_linux_s390x": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "linux_s390x" + } + }, + "nodejs_linux_ppc64le": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "linux_ppc64le" + } + }, + "nodejs_darwin_amd64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "darwin_amd64" + } + }, + "nodejs_darwin_arm64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "darwin_arm64" + } + }, + "nodejs_windows_amd64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "windows_amd64" + } + }, + "nodejs": { + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", + "attributes": { + "user_node_repository_name": "nodejs" + } + }, + "nodejs_host": { + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", + "attributes": { + "user_node_repository_name": "nodejs" + } + }, + "nodejs_toolchains": { + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl%nodejs_toolchains_repo", + "attributes": { + "user_node_repository_name": "nodejs" + } + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@rules_python+//python/extensions:pip.bzl%pip": { + "general": { + "bzlTransitiveDigest": "Y1+Nq7F10jItATWoJUqrIUjUtsCs4cqQw9XXIyl9S3A=", + "usagesDigest": "F5jSeup4ZspeKK83+fXZFbblRp0MSGdobyZdSKc8xP8=", + "recordedFileInputs": { + "@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", + "@@rules_fuzzing+//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", + "@@rules_python+//tools/publish/requirements_darwin.txt": "095d4a4f3d639dce831cd493367631cd51b53665292ab20194bac2c0c6458fa8", + "@@rules_python+//tools/publish/requirements_linux.txt": "d576e0d8542df61396a9b38deeaa183c24135ed5e8e73bb9622f298f2671811e", + "@@rules_python+//tools/publish/requirements_windows.txt": "d18538a3982beab378fd5687f4db33162ee1ece69801f9a451661b1b64286b76" + }, + "recordedDirentsInputs": {}, + "envVariables": { + "RULES_PYTHON_REPO_DEBUG": null, + "RULES_PYTHON_REPO_DEBUG_VERBOSITY": null + }, + "generatedRepoSpecs": { + "pip_deps_310_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "pip_deps_310", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_310_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "pip_deps_310", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_311_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "pip_deps_311", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_311_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "pip_deps_311", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_312_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "pip_deps_312", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_312_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "pip_deps_312", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_38_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "pip_deps_38", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_38_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "pip_deps_38", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_39_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "pip_deps_39", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_39_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "pip_deps_39", + "requirement": "setuptools<=70.3.0" + } + }, + "rules_fuzzing_py_deps_310_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "rules_fuzzing_py_deps_310", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_310_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "rules_fuzzing_py_deps_310", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_311_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_fuzzing_py_deps_311", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_311_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_fuzzing_py_deps_311", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_312_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "rules_fuzzing_py_deps_312", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_312_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "rules_fuzzing_py_deps_312", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_38_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "rules_fuzzing_py_deps_38", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_38_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "rules_fuzzing_py_deps_38", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_39_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "rules_fuzzing_py_deps_39", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_39_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "rules_fuzzing_py_deps_39", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "backports.tarfile-1.2.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "backports-tarfile==1.2.0", + "sha256": "77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", + "urls": [ + "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "backports_tarfile-1.2.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "backports-tarfile==1.2.0", + "sha256": "d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", + "urls": [ + "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_certifi_py3_none_any_922820b5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "certifi-2024.8.30-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "certifi==2024.8.30", + "sha256": "922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", + "urls": [ + "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_certifi_sdist_bec941d2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "certifi-2024.8.30.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "certifi==2024.8.30", + "sha256": "bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", + "urls": [ + "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", + "urls": [ + "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", + "urls": [ + "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", + "urls": [ + "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", + "urls": [ + "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", + "urls": [ + "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_sdist_1c39c601": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "cffi-1.17.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", + "urls": [ + "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", + "urls": [ + "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", + "urls": [ + "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", + "urls": [ + "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", + "urls": [ + "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", + "urls": [ + "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", + "urls": [ + "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", + "urls": [ + "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", + "urls": [ + "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", + "urls": [ + "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", + "urls": [ + "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", + "urls": [ + "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_sdist_223217c3": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "charset_normalizer-3.4.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", + "urls": [ + "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", + "urls": [ + "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", + "urls": [ + "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", + "urls": [ + "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", + "urls": [ + "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", + "urls": [ + "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", + "urls": [ + "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_sdist_315b9001": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "cryptography-43.0.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", + "urls": [ + "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "docutils-0.21.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "docutils==0.21.2", + "sha256": "dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", + "urls": [ + "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_docutils_sdist_3a6b1873": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "docutils-0.21.2.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "docutils==0.21.2", + "sha256": "3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", + "urls": [ + "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_idna_py3_none_any_946d195a": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "idna-3.10-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "idna==3.10", + "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", + "urls": [ + "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_idna_sdist_12f65c9b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "idna-3.10.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "idna==3.10", + "sha256": "12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", + "urls": [ + "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "importlib_metadata-8.5.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "importlib-metadata==8.5.0", + "sha256": "45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", + "urls": [ + "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_importlib_metadata_sdist_71522656": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "importlib_metadata-8.5.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "importlib-metadata==8.5.0", + "sha256": "71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", + "urls": [ + "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.classes-3.4.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-classes==3.4.0", + "sha256": "f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", + "urls": [ + "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco.classes-3.4.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-classes==3.4.0", + "sha256": "47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", + "urls": [ + "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.context-6.0.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-context==6.0.1", + "sha256": "f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", + "urls": [ + "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco_context-6.0.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-context==6.0.1", + "sha256": "9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", + "urls": [ + "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.functools-4.1.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-functools==4.1.0", + "sha256": "ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649", + "urls": [ + "https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco_functools-4.1.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-functools==4.1.0", + "sha256": "70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d", + "urls": [ + "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "jeepney-0.8.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jeepney==0.8.0", + "sha256": "c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", + "urls": [ + "https://files.pythonhosted.org/packages/ae/72/2a1e2290f1ab1e06f71f3d0f1646c9e4634e70e1d37491535e19266e8dc9/jeepney-0.8.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jeepney_sdist_5efe48d2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jeepney-0.8.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jeepney==0.8.0", + "sha256": "5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", + "urls": [ + "https://files.pythonhosted.org/packages/d6/f4/154cf374c2daf2020e05c3c6a03c91348d59b23c5366e968feb198306fdf/jeepney-0.8.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_keyring_py3_none_any_5426f817": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "keyring-25.4.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "keyring==25.4.1", + "sha256": "5426f817cf7f6f007ba5ec722b1bcad95a75b27d780343772ad76b17cb47b0bf", + "urls": [ + "https://files.pythonhosted.org/packages/83/25/e6d59e5f0a0508d0dca8bb98c7f7fd3772fc943ac3f53d5ab18a218d32c0/keyring-25.4.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_keyring_sdist_b07ebc55": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "keyring-25.4.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "keyring==25.4.1", + "sha256": "b07ebc55f3e8ed86ac81dd31ef14e81ace9dd9c3d4b5d77a6e9a2016d0d71a1b", + "urls": [ + "https://files.pythonhosted.org/packages/a5/1c/2bdbcfd5d59dc6274ffb175bc29aa07ecbfab196830e0cfbde7bd861a2ea/keyring-25.4.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "markdown_it_py-3.0.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "markdown-it-py==3.0.0", + "sha256": "355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", + "urls": [ + "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "markdown-it-py-3.0.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "markdown-it-py==3.0.0", + "sha256": "e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", + "urls": [ + "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_mdurl_py3_none_any_84008a41": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "mdurl-0.1.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "mdurl==0.1.2", + "sha256": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", + "urls": [ + "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_mdurl_sdist_bb413d29": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "mdurl-0.1.2.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "mdurl==0.1.2", + "sha256": "bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", + "urls": [ + "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "more_itertools-10.5.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "more-itertools==10.5.0", + "sha256": "037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", + "urls": [ + "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_more_itertools_sdist_5482bfef": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "more-itertools-10.5.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "more-itertools==10.5.0", + "sha256": "5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", + "urls": [ + "https://files.pythonhosted.org/packages/51/78/65922308c4248e0eb08ebcbe67c95d48615cc6f27854b6f2e57143e9178f/more-itertools-10.5.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86", + "urls": [ + "https://files.pythonhosted.org/packages/b3/89/1daff5d9ba5a95a157c092c7c5f39b8dd2b1ddb4559966f808d31cfb67e0/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811", + "urls": [ + "https://files.pythonhosted.org/packages/2c/b6/42fc3c69cabf86b6b81e4c051a9b6e249c5ba9f8155590222c2622961f58/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200", + "urls": [ + "https://files.pythonhosted.org/packages/45/b9/833f385403abaf0023c6547389ec7a7acf141ddd9d1f21573723a6eab39a/nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164", + "urls": [ + "https://files.pythonhosted.org/packages/05/2b/85977d9e11713b5747595ee61f381bc820749daf83f07b90b6c9964cf932/nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189", + "urls": [ + "https://files.pythonhosted.org/packages/72/f2/5c894d5265ab80a97c68ca36f25c8f6f0308abac649aaf152b74e7e854a8/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b", + "urls": [ + "https://files.pythonhosted.org/packages/c2/a8/3bb02d0c60a03ad3a112b76c46971e9480efa98a8946677b5a59f60130ca/nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307", + "urls": [ + "https://files.pythonhosted.org/packages/1b/63/6ab90d0e5225ab9780f6c9fb52254fa36b52bb7c188df9201d05b647e5e1/nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe", + "urls": [ + "https://files.pythonhosted.org/packages/a3/da/0c4e282bc3cff4a0adf37005fa1fb42257673fbc1bbf7d1ff639ec3d255a/nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a", + "urls": [ + "https://files.pythonhosted.org/packages/de/81/c291231463d21da5f8bba82c8167a6d6893cc5419b0639801ee5d3aeb8a9/nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204", + "urls": [ + "https://files.pythonhosted.org/packages/eb/61/73a007c74c37895fdf66e0edcd881f5eaa17a348ff02f4bb4bc906d61085/nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-win_amd64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844", + "urls": [ + "https://files.pythonhosted.org/packages/26/8d/53c5b19c4999bdc6ba95f246f4ef35ca83d7d7423e5e38be43ad66544e5d/nh3-0.2.18-cp37-abi3-win_amd64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_sdist_94a16692": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "nh3-0.2.18.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4", + "urls": [ + "https://files.pythonhosted.org/packages/62/73/10df50b42ddb547a907deeb2f3c9823022580a7a47281e8eae8e003a9639/nh3-0.2.18.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "pkginfo-1.10.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pkginfo==1.10.0", + "sha256": "889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097", + "urls": [ + "https://files.pythonhosted.org/packages/56/09/054aea9b7534a15ad38a363a2bd974c20646ab1582a387a95b8df1bfea1c/pkginfo-1.10.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pkginfo_sdist_5df73835": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pkginfo-1.10.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pkginfo==1.10.0", + "sha256": "5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297", + "urls": [ + "https://files.pythonhosted.org/packages/2f/72/347ec5be4adc85c182ed2823d8d1c7b51e13b9a6b0c1aae59582eca652df/pkginfo-1.10.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "pycparser-2.22-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pycparser==2.22", + "sha256": "c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", + "urls": [ + "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pycparser_sdist_491c8be9": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pycparser-2.22.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pycparser==2.22", + "sha256": "491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", + "urls": [ + "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "pygments-2.18.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pygments==2.18.0", + "sha256": "b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", + "urls": [ + "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pygments_sdist_786ff802": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pygments-2.18.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pygments==2.18.0", + "sha256": "786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", + "urls": [ + "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_windows_x86_64" + ], + "filename": "pywin32_ctypes-0.2.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pywin32-ctypes==0.2.3", + "sha256": "8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", + "urls": [ + "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pywin32-ctypes-0.2.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pywin32-ctypes==0.2.3", + "sha256": "d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", + "urls": [ + "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "readme_renderer-44.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "readme-renderer==44.0", + "sha256": "2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", + "urls": [ + "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_readme_renderer_sdist_8712034e": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "readme_renderer-44.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "readme-renderer==44.0", + "sha256": "8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", + "urls": [ + "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_requests_py3_none_any_70761cfe": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "requests-2.32.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests==2.32.3", + "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", + "urls": [ + "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_requests_sdist_55365417": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "requests-2.32.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests==2.32.3", + "sha256": "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", + "urls": [ + "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "requests_toolbelt-1.0.0-py2.py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests-toolbelt==1.0.0", + "sha256": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", + "urls": [ + "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "requests-toolbelt-1.0.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests-toolbelt==1.0.0", + "sha256": "7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", + "urls": [ + "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "rfc3986-2.0.0-py2.py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rfc3986==2.0.0", + "sha256": "50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", + "urls": [ + "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_rfc3986_sdist_97aacf9d": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "rfc3986-2.0.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rfc3986==2.0.0", + "sha256": "97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", + "urls": [ + "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_rich_py3_none_any_6049d5e6": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "rich-13.9.4-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rich==13.9.4", + "sha256": "6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", + "urls": [ + "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_rich_sdist_43959497": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "rich-13.9.4.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rich==13.9.4", + "sha256": "439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", + "urls": [ + "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "SecretStorage-3.3.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "secretstorage==3.3.3", + "sha256": "f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", + "urls": [ + "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_secretstorage_sdist_2403533e": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "SecretStorage-3.3.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "secretstorage==3.3.3", + "sha256": "2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", + "urls": [ + "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_twine_py3_none_any_215dbe7b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "twine-5.1.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "twine==5.1.1", + "sha256": "215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997", + "urls": [ + "https://files.pythonhosted.org/packages/5d/ec/00f9d5fd040ae29867355e559a94e9a8429225a0284a3f5f091a3878bfc0/twine-5.1.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_twine_sdist_9aa08251": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "twine-5.1.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "twine==5.1.1", + "sha256": "9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db", + "urls": [ + "https://files.pythonhosted.org/packages/77/68/bd982e5e949ef8334e6f7dcf76ae40922a8750aa2e347291ae1477a4782b/twine-5.1.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "urllib3-2.2.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "urllib3==2.2.3", + "sha256": "ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", + "urls": [ + "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_urllib3_sdist_e7d814a8": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "urllib3-2.2.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "urllib3==2.2.3", + "sha256": "e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", + "urls": [ + "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_zipp_py3_none_any_a817ac80": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "zipp-3.20.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "zipp==3.20.2", + "sha256": "a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", + "urls": [ + "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_zipp_sdist_bc9eb26f": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "zipp-3.20.2.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "zipp==3.20.2", + "sha256": "bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", + "urls": [ + "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz" + ] + } + }, + "pip_deps": { + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", + "attributes": { + "repo_name": "pip_deps", + "extra_hub_aliases": {}, + "whl_map": { + "numpy": "{\"pip_deps_310_numpy\":[{\"version\":\"3.10\"}],\"pip_deps_311_numpy\":[{\"version\":\"3.11\"}],\"pip_deps_312_numpy\":[{\"version\":\"3.12\"}],\"pip_deps_38_numpy\":[{\"version\":\"3.8\"}],\"pip_deps_39_numpy\":[{\"version\":\"3.9\"}]}", + "setuptools": "{\"pip_deps_310_setuptools\":[{\"version\":\"3.10\"}],\"pip_deps_311_setuptools\":[{\"version\":\"3.11\"}],\"pip_deps_312_setuptools\":[{\"version\":\"3.12\"}],\"pip_deps_38_setuptools\":[{\"version\":\"3.8\"}],\"pip_deps_39_setuptools\":[{\"version\":\"3.9\"}]}" + }, + "packages": [ + "numpy", + "setuptools" + ], + "groups": {} + } + }, + "rules_fuzzing_py_deps": { + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", + "attributes": { + "repo_name": "rules_fuzzing_py_deps", + "extra_hub_aliases": {}, + "whl_map": { + "absl_py": "{\"rules_fuzzing_py_deps_310_absl_py\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_absl_py\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_absl_py\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_absl_py\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_absl_py\":[{\"version\":\"3.9\"}]}", + "six": "{\"rules_fuzzing_py_deps_310_six\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_six\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_six\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_six\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_six\":[{\"version\":\"3.9\"}]}" + }, + "packages": [ + "absl_py", + "six" + ], + "groups": {} + } + }, + "rules_python_publish_deps": { + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", + "attributes": { + "repo_name": "rules_python_publish_deps", + "extra_hub_aliases": {}, + "whl_map": { + "backports_tarfile": "{\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\":[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\":[{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"version\":\"3.11\"}]}", + "certifi": "{\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\":[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_certifi_sdist_bec941d2\":[{\"filename\":\"certifi-2024.8.30.tar.gz\",\"version\":\"3.11\"}]}", + "cffi": "{\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_sdist_1c39c601\":[{\"filename\":\"cffi-1.17.1.tar.gz\",\"version\":\"3.11\"}]}", + "charset_normalizer": "{\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\":[{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\":[{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", + "cryptography": "{\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_sdist_315b9001\":[{\"filename\":\"cryptography-43.0.3.tar.gz\",\"version\":\"3.11\"}]}", + "docutils": "{\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\":[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\":[{\"filename\":\"docutils-0.21.2.tar.gz\",\"version\":\"3.11\"}]}", + "idna": "{\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\":[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_idna_sdist_12f65c9b\":[{\"filename\":\"idna-3.10.tar.gz\",\"version\":\"3.11\"}]}", + "importlib_metadata": "{\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\":[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\":[{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_classes": "{\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\":[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\":[{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_context": "{\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\":[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\":[{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_functools": "{\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\":[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\":[{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"version\":\"3.11\"}]}", + "jeepney": "{\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\":[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\":[{\"filename\":\"jeepney-0.8.0.tar.gz\",\"version\":\"3.11\"}]}", + "keyring": "{\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\":[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\":[{\"filename\":\"keyring-25.4.1.tar.gz\",\"version\":\"3.11\"}]}", + "markdown_it_py": "{\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\":[{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\":[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "mdurl": "{\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\":[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\":[{\"filename\":\"mdurl-0.1.2.tar.gz\",\"version\":\"3.11\"}]}", + "more_itertools": "{\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\":[{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\":[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"version\":\"3.11\"}]}", + "nh3": "{\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_sdist_94a16692\":[{\"filename\":\"nh3-0.2.18.tar.gz\",\"version\":\"3.11\"}]}", + "pkginfo": "{\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\":[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\":[{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"version\":\"3.11\"}]}", + "pycparser": "{\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\":[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\":[{\"filename\":\"pycparser-2.22.tar.gz\",\"version\":\"3.11\"}]}", + "pygments": "{\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\":[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pygments_sdist_786ff802\":[{\"filename\":\"pygments-2.18.0.tar.gz\",\"version\":\"3.11\"}]}", + "pywin32_ctypes": "{\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\":[{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\":[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"version\":\"3.11\"}]}", + "readme_renderer": "{\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\":[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\":[{\"filename\":\"readme_renderer-44.0.tar.gz\",\"version\":\"3.11\"}]}", + "requests": "{\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\":[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_sdist_55365417\":[{\"filename\":\"requests-2.32.3.tar.gz\",\"version\":\"3.11\"}]}", + "requests_toolbelt": "{\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\":[{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\":[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "rfc3986": "{\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\":[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\":[{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "rich": "{\"rules_python_publish_deps_311_rich_py3_none_any_6049d5e6\":[{\"filename\":\"rich-13.9.4-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rich_sdist_43959497\":[{\"filename\":\"rich-13.9.4.tar.gz\",\"version\":\"3.11\"}]}", + "secretstorage": "{\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\":[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\":[{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"version\":\"3.11\"}]}", + "twine": "{\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\":[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_twine_sdist_9aa08251\":[{\"filename\":\"twine-5.1.1.tar.gz\",\"version\":\"3.11\"}]}", + "urllib3": "{\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\":[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\":[{\"filename\":\"urllib3-2.2.3.tar.gz\",\"version\":\"3.11\"}]}", + "zipp": "{\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\":[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\":[{\"filename\":\"zipp-3.20.2.tar.gz\",\"version\":\"3.11\"}]}" + }, + "packages": [ + "backports_tarfile", + "certifi", + "charset_normalizer", + "docutils", + "idna", + "importlib_metadata", + "jaraco_classes", + "jaraco_context", + "jaraco_functools", + "keyring", + "markdown_it_py", + "mdurl", + "more_itertools", + "nh3", + "pkginfo", + "pygments", + "readme_renderer", + "requests", + "requests_toolbelt", + "rfc3986", + "rich", + "twine", + "urllib3", + "zipp" + ], + "groups": {} + } + } + }, + "moduleExtensionMetadata": { + "useAllRepos": "NO", + "reproducible": false + }, + "recordedRepoMappingEntries": [ + [ + "bazel_features+", + "bazel_features_globals", + "bazel_features++version_extension+bazel_features_globals" + ], + [ + "bazel_features+", + "bazel_features_version", + "bazel_features++version_extension+bazel_features_version" + ], + [ + "rules_python+", + "bazel_features", + "bazel_features+" + ], + [ + "rules_python+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "rules_python+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_python+", + "pypi__build", + "rules_python++internal_deps+pypi__build" + ], + [ + "rules_python+", + "pypi__click", + "rules_python++internal_deps+pypi__click" + ], + [ + "rules_python+", + "pypi__colorama", + "rules_python++internal_deps+pypi__colorama" + ], + [ + "rules_python+", + "pypi__importlib_metadata", + "rules_python++internal_deps+pypi__importlib_metadata" + ], + [ + "rules_python+", + "pypi__installer", + "rules_python++internal_deps+pypi__installer" + ], + [ + "rules_python+", + "pypi__more_itertools", + "rules_python++internal_deps+pypi__more_itertools" + ], + [ + "rules_python+", + "pypi__packaging", + "rules_python++internal_deps+pypi__packaging" + ], + [ + "rules_python+", + "pypi__pep517", + "rules_python++internal_deps+pypi__pep517" + ], + [ + "rules_python+", + "pypi__pip", + "rules_python++internal_deps+pypi__pip" + ], + [ + "rules_python+", + "pypi__pip_tools", + "rules_python++internal_deps+pypi__pip_tools" + ], + [ + "rules_python+", + "pypi__pyproject_hooks", + "rules_python++internal_deps+pypi__pyproject_hooks" + ], + [ + "rules_python+", + "pypi__setuptools", + "rules_python++internal_deps+pypi__setuptools" + ], + [ + "rules_python+", + "pypi__tomli", + "rules_python++internal_deps+pypi__tomli" + ], + [ + "rules_python+", + "pypi__wheel", + "rules_python++internal_deps+pypi__wheel" + ], + [ + "rules_python+", + "pypi__zipp", + "rules_python++internal_deps+pypi__zipp" + ], + [ + "rules_python+", + "pythons_hub", + "rules_python++python+pythons_hub" + ], + [ + "rules_python++python+pythons_hub", + "python_3_10_host", + "rules_python++python+python_3_10_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_11_host", + "rules_python++python+python_3_11_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_12_host", + "rules_python++python+python_3_12_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_13_host", + "rules_python++python+python_3_13_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_8_host", + "rules_python++python+python_3_8_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_9_host", + "rules_python++python+python_3_9_host" + ] + ] + } + }, + "@@rules_python+//python/uv:uv.bzl%uv": { + "general": { + "bzlTransitiveDigest": "Xpqjnjzy6zZ90Es9Wa888ZLHhn7IsNGbph/e6qoxzw8=", + "usagesDigest": "vJ5RHUxAnV24M5swNGiAnkdxMx3Hp/iOLmNANTC5Xc8=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "uv": { + "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", + "attributes": { + "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'", + "toolchain_names": [ + "none" + ], + "toolchain_implementations": { + "none": "'@@rules_python+//python:none'" + }, + "toolchain_compatible_with": { + "none": [ + "@platforms//:incompatible" + ] + }, + "toolchain_target_settings": {} + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_python+", + "platforms", + "platforms" + ] + ] + } + } + } +} diff --git a/emsdk-cache/emsdk-main/bazel/README.md b/emsdk-cache/emsdk-main/bazel/README.md new file mode 100644 index 000000000..b53e6ece4 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/README.md @@ -0,0 +1,90 @@ +# Bazel Emscripten toolchain + +## Setup Instructions + +Support for depending on emsdk with a WORKSPACE file was removed and last available in [emsdk version 4.0.6](https://github.com/emscripten-core/emsdk/tree/24fc909c0da13ef641d5ae75e89b5a97f25e37aa). Now we only support inclusion as a bzlmod module. + +In your `MODULE.bazel` file, put: +```starlark +emsdk_version = "4.0.6" +bazel_dep(name = "emsdk", version = emsdk_version) +git_override( + module_name = "emsdk", + remote = "https://github.com/emscripten-core/emsdk.git", + strip_prefix = "bazel", + tag = emsdk_version, +) +``` + +You can use a different version of this SDK by changing it in your `MODULE.bazel` file. The Emscripten version is by default the same as the SDK version, but you can use a different one as well by adding to your `MODULE.bazel`: + +``` +emscripten_deps = use_extension( + "@emsdk//:emscripten_deps.bzl", + "emscripten_deps", +) +emscripten_deps.config(version = "4.0.1") +``` + +## Building + +Put the following line into your `.bazelrc`: + +``` +build --incompatible_enable_cc_toolchain_resolution +``` + +Then write a new rule wrapping your `cc_binary`. + +```starlark +load("@rules_cc//cc:defs.bzl", "cc_binary") +load("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary") + +cc_binary( + name = "hello-world", + srcs = ["hello-world.cc"], +) + +wasm_cc_binary( + name = "hello-world-wasm", + cc_target = ":hello-world", +) +``` + +Now you can run `bazel build :hello-world-wasm`. The result of this build will +be the individual files produced by emscripten. Note that some of these files +may be empty. This is because bazel has no concept of optional outputs for +rules. + +`wasm_cc_binary` uses transition to use emscripten toolchain on `cc_target` +and all of its dependencies, and does not require amending `.bazelrc`. This +is the preferred way, since it also unpacks the resulting tarball. + +The Emscripten cache shipped by default does not include LTO, 64-bit or PIC +builds of the system libraries and ports. If you wish to use these features you +will need to declare the cache in your `MODULE.bazel` as follows. Note +that the configuration consists of the same flags that can be passed to +embuilder. If `targets` is not set, all system libraries and ports will be +built, i.e., the `ALL` option to embuilder. + +```starlark +emscripten_cache = use_extension( + "@emsdk//:emscripten_cache.bzl", + "emscripten_cache", +) +emscripten_cache.configuration(flags = ["--lto"]) +emscripten_cache.targets(targets = [ + "crtbegin", + "libprintf_long_double-debug", + "libstubs-debug", + "libnoexit", + "libc-debug", + "libdlmalloc", + "libcompiler_rt", + "libc++-noexcept", + "libc++abi-debug-noexcept", + "libsockets" +]) +``` + +See `test_external/` for an example using [embind](https://emscripten.org/docs/porting/connecting_cpp_and_javascript/embind.html). diff --git a/emsdk-cache/emsdk-main/bazel/bazelrc b/emsdk-cache/emsdk-main/bazel/bazelrc new file mode 100644 index 000000000..d1c8aef22 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/bazelrc @@ -0,0 +1,2 @@ +build:wasm --incompatible_enable_cc_toolchain_resolution +build:wasm --platforms=@emsdk//:platform_wasm diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_build_file.bzl b/emsdk-cache/emsdk-main/bazel/emscripten_build_file.bzl new file mode 100644 index 000000000..0d7aff28c --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_build_file.bzl @@ -0,0 +1,93 @@ +"""A templated build file for emscripten repositories""" + +EMSCRIPTEN_BUILD_FILE_CONTENT_TEMPLATE = """ +package(default_visibility = ['//visibility:public']) + +filegroup( + name = "all", + srcs = glob(["**"]), +) + +filegroup( + name = "includes", + srcs = glob([ + "emscripten/cache/sysroot/include/c++/v1/**", + "emscripten/cache/sysroot/include/compat/**", + "emscripten/cache/sysroot/include/**", + "lib/clang/**/include/**", + ]), +) + +filegroup( + name = "emcc_common", + srcs = [ + "emscripten/emcc.py", + "emscripten/embuilder.py", + "emscripten/emscripten-version.txt", + "emscripten/cache/sysroot_install.stamp", + "emscripten/src/settings.js", + "emscripten/src/settings_internal.js", + ] + glob( + include = [ + "emscripten/third_party/**", + "emscripten/tools/**", + ], + exclude = [ + "**/__pycache__/**", + ], + ), +) + +filegroup( + name = "compiler_files", + srcs = [ + "bin/clang{bin_extension}", + "bin/clang++{bin_extension}", + ":emcc_common", + ":includes", + ], +) + +filegroup( + name = "linker_files", + srcs = [ + "bin/clang{bin_extension}", + "bin/llvm-ar{bin_extension}", + "bin/llvm-dwarfdump{bin_extension}", + "bin/llvm-nm{bin_extension}", + "bin/llvm-objcopy{bin_extension}", + "bin/wasm-ctor-eval{bin_extension}", + "bin/wasm-emscripten-finalize{bin_extension}", + "bin/wasm-ld{bin_extension}", + "bin/wasm-metadce{bin_extension}", + "bin/wasm-opt{bin_extension}", + "bin/wasm-split{bin_extension}", + "bin/wasm2js{bin_extension}", + ":emcc_common", + ] + glob( + include = [ + "emscripten/cache/sysroot/lib/**", + "emscripten/node_modules/**", + "emscripten/src/**", + ], + ), +) + +filegroup( + name = "ar_files", + srcs = [ + "bin/llvm-ar{bin_extension}", + "emscripten/emar.py", + "emscripten/emscripten-version.txt", + "emscripten/src/settings.js", + "emscripten/src/settings_internal.js", + ] + glob( + include = [ + "emscripten/tools/**", + ], + exclude = [ + "**/__pycache__/**", + ], + ), +) +""" diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_cache.bzl b/emsdk-cache/emsdk-main/bazel/emscripten_cache.bzl new file mode 100644 index 000000000..945c19c01 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_cache.bzl @@ -0,0 +1,113 @@ +BUILD_FILE_CONTENT_TEMPLATE = """ +package(default_visibility = ['//visibility:public']) +exports_files(['emscripten_config']) +""" + +EMBUILDER_CONFIG_TEMPLATE = """ +CACHE = '{cache}' +BINARYEN_ROOT = '{binaryen_root}' +LLVM_ROOT = '{llvm_root}' +""" + +def get_root_and_script_ext(repository_ctx): + if repository_ctx.os.name.startswith("linux"): + if "amd64" in repository_ctx.os.arch or "x86_64" in repository_ctx.os.arch: + return (repository_ctx.path(Label("@emscripten_bin_linux//:BUILD.bazel")).dirname, "") + elif "aarch64" in repository_ctx.os.arch: + return (repository_ctx.path(Label("@emscripten_bin_linux_arm64//:BUILD.bazel")).dirname, "") + else: + fail("Unsupported architecture for Linux") + elif repository_ctx.os.name.startswith("mac"): + if "amd64" in repository_ctx.os.arch or "x86_64" in repository_ctx.os.arch: + return (repository_ctx.path(Label("@emscripten_bin_mac//:BUILD.bazel")).dirname, "") + elif "aarch64" in repository_ctx.os.arch: + return (repository_ctx.path(Label("@emscripten_bin_mac_arm64//:BUILD.bazel")).dirname, "") + else: + fail("Unsupported architecture for MacOS") + elif repository_ctx.os.name.startswith("windows"): + return (repository_ctx.path(Label("@emscripten_bin_win//:BUILD.bazel")).dirname, ".bat") + else: + fail("Unsupported operating system") + +def _emscripten_cache_repository_impl(repository_ctx): + # Read the default emscripten configuration file + default_config = repository_ctx.read( + repository_ctx.path( + Label("@emsdk//emscripten_toolchain:default_config"), + ), + ) + + if repository_ctx.attr.targets or repository_ctx.attr.configuration: + root, script_ext = get_root_and_script_ext(repository_ctx) + llvm_root = root.get_child("bin") + cache = repository_ctx.path("cache") + + # Create configuration file + embuilder_config_content = EMBUILDER_CONFIG_TEMPLATE.format( + cache = cache, + binaryen_root = root, + llvm_root = llvm_root, + ) + repository_ctx.file("embuilder_config", embuilder_config_content) + embuilder_config_path = repository_ctx.path("embuilder_config") + embuilder_path = "{}{}".format(root.get_child("emscripten").get_child("embuilder"), script_ext) + + # Prepare the command line + if repository_ctx.attr.targets: + targets = repository_ctx.attr.targets + else: + # If no targets are requested, build everything + targets = ["ALL"] + flags = ["--em-config", embuilder_config_path] + repository_ctx.attr.configuration + embuilder_args = [embuilder_path] + flags + ["build"] + targets + + # Run embuilder + repository_ctx.report_progress("Building secondary cache") + result = repository_ctx.execute( + embuilder_args, + quiet = True, + environment = { + "EM_IGNORE_SANITY": "1", + "EM_NODE_JS": "empty", + }, + ) + if result.return_code != 0: + fail("Embuilder exited with a non-zero return code") + + # Override Emscripten's cache with the secondary cache + default_config += "CACHE = '{}'\n".format(cache) + + # Create the configuration file for the toolchain and export + repository_ctx.file("emscripten_config", default_config) + repository_ctx.file("BUILD.bazel", BUILD_FILE_CONTENT_TEMPLATE) + +_emscripten_cache_repository = repository_rule( + implementation = _emscripten_cache_repository_impl, + attrs = { + "configuration": attr.string_list(), + "targets": attr.string_list(), + }, +) + +def _emscripten_cache_impl(ctx): + all_configuration = [] + all_targets = [] + for mod in ctx.modules: + for configuration in mod.tags.configuration: + all_configuration += configuration.flags + for targets in mod.tags.targets: + all_targets += targets.targets + + _emscripten_cache_repository( + name = "emscripten_cache", + configuration = all_configuration, + targets = all_targets, + ) + +emscripten_cache = module_extension( + tag_classes = { + "configuration": tag_class(attrs = {"flags": attr.string_list()}), + "targets": tag_class(attrs = {"targets": attr.string_list()}), + }, + implementation = _emscripten_cache_impl, +) diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_deps.bzl b/emsdk-cache/emsdk-main/bazel/emscripten_deps.bzl new file mode 100644 index 000000000..79dca5279 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_deps.bzl @@ -0,0 +1,99 @@ +load(":remote_emscripten_repository.bzl", "remote_emscripten_repository") +load(":revisions.bzl", "EMSCRIPTEN_TAGS") + +def _parse_version(v): + return [int(u) for u in v.split(".")] + +def _empty_repository_impl(ctx): + ctx.file("MODULE.bazel", """module(name = "{}")""".format(ctx.name)) + ctx.file("BUILD.bazel", "") + +_empty_repository = repository_rule( + implementation = _empty_repository_impl, +) + +def emscripten_repo_name(name): + return "emscripten_bin_{}".format(name) + +def _emscripten_deps_impl(ctx): + version = None + + for mod in ctx.modules: + for config in mod.tags.config: + if config.version and version != None: + fail("More than one emscripten version specified!") + version = config.version + if version == None: + version = "latest" + + if version == "latest": + version = reversed(sorted(EMSCRIPTEN_TAGS.keys(), key = _parse_version))[0] + + revision = EMSCRIPTEN_TAGS[version] + + emscripten_url = "https://storage.googleapis.com/webassembly/emscripten-releases-builds/{}/{}/wasm-binaries{}.{}" + + remote_emscripten_repository( + name = emscripten_repo_name("linux"), + bin_extension = "", + sha256 = revision.sha_linux, + strip_prefix = "install", + type = "tar.xz", + url = emscripten_url.format("linux", revision.hash, "", "tar.xz"), + ) + + # Not all versions have a linux/arm64 release: https://github.com/emscripten-core/emsdk/issues/547 + if hasattr(revision, "sha_linux_arm64"): + remote_emscripten_repository( + name = emscripten_repo_name("linux_arm64"), + bin_extension = "", + sha256 = revision.sha_linux_arm64, + strip_prefix = "install", + type = "tar.xz", + url = emscripten_url.format("linux", revision.hash, "-arm64", "tar.xz"), + ) + else: + _empty_repository( + name = emscripten_repo_name("linux_arm64"), + ) + + remote_emscripten_repository( + name = emscripten_repo_name("mac"), + bin_extension = "", + sha256 = revision.sha_mac, + strip_prefix = "install", + type = "tar.xz", + url = emscripten_url.format("mac", revision.hash, "", "tar.xz"), + ) + + remote_emscripten_repository( + name = emscripten_repo_name("mac_arm64"), + bin_extension = "", + sha256 = revision.sha_mac_arm64, + strip_prefix = "install", + type = "tar.xz", + url = emscripten_url.format("mac", revision.hash, "-arm64", "tar.xz"), + ) + + remote_emscripten_repository( + name = emscripten_repo_name("win"), + bin_extension = ".exe", + sha256 = revision.sha_win, + strip_prefix = "install", + type = "zip", + url = emscripten_url.format("win", revision.hash, "", "zip"), + ) + +emscripten_deps = module_extension( + tag_classes = { + "config": tag_class( + attrs = { + "version": attr.string( + doc = "Version to use. 'latest' to use latest.", + values = ["latest"] + EMSCRIPTEN_TAGS.keys(), + ), + }, + ), + }, + implementation = _emscripten_deps_impl, +) diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/BUILD.bazel b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/BUILD.bazel new file mode 100644 index 000000000..ebbc2e996 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/BUILD.bazel @@ -0,0 +1,43 @@ +load("//:emscripten_deps.bzl", "emscripten_repo_name") +load("//:remote_emscripten_repository.bzl", "create_toolchains", "emscripten_toolchain_name") +load("@rules_python//python:py_binary.bzl", "py_binary") + +package(default_visibility = ["//visibility:public"]) + +# dlmalloc.bc is implicitly added by the emscripten toolchain +cc_library(name = "malloc") + +create_toolchains( + name = emscripten_toolchain_name("linux"), + repo_name = emscripten_repo_name("linux"), + exec_compatible_with = [ "@platforms//os:linux", "@platforms//cpu:x86_64"], +) + +create_toolchains( + name = emscripten_toolchain_name("linux_arm64"), + repo_name = emscripten_repo_name("linux_arm64"), + exec_compatible_with = ["@platforms//os:linux", "@platforms//cpu:arm64"], +) + +create_toolchains( + name = emscripten_toolchain_name("mac"), + repo_name = emscripten_repo_name("mac"), + exec_compatible_with = ["@platforms//os:macos", "@platforms//cpu:x86_64"], +) + +create_toolchains( + name = emscripten_toolchain_name("mac_arm64"), + repo_name = emscripten_repo_name("mac_arm64"), + exec_compatible_with = ["@platforms//os:macos", "@platforms//cpu:arm64"], +) + +create_toolchains( + name = emscripten_toolchain_name("win"), + repo_name = emscripten_repo_name("win"), + exec_compatible_with = ["@platforms//os:windows", "@platforms//cpu:x86_64"], +) + +py_binary( + name = "wasm_binary", + srcs = ["wasm_binary.py"], +) diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/default_config b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/default_config new file mode 100644 index 000000000..8107fe4a2 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/default_config @@ -0,0 +1,16 @@ +import os +import platform + +ROOT_DIR = os.environ["ROOT_DIR"] +EMSCRIPTEN_ROOT = os.environ["EMSCRIPTEN"] +BINARYEN_ROOT = os.path.join(ROOT_DIR, os.environ["EM_BIN_PATH"]) +LLVM_ROOT = os.path.join(BINARYEN_ROOT, "bin") +NODE_JS = os.path.join(ROOT_DIR, os.environ["NODE_JS_PATH"]) +FROZEN_CACHE = True + +# This works around an issue with Bazel RBE where the symlinks in node_modules/.bin +# are uploaded as the linked files, which means the cli.js cannot load its +# dependencies from the expected locations. +# See https://github.com/emscripten-core/emscripten/pull/16640 for more +CLOSURE_COMPILER = [NODE_JS, os.path.join(EMSCRIPTEN_ROOT, "node_modules", + "google-closure-compiler", "cli.js")] diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emar.bat b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emar.bat new file mode 100644 index 000000000..c8068089f --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emar.bat @@ -0,0 +1,5 @@ +@ECHO OFF + +call %~dp0\env.bat + +py -3 %EMSCRIPTEN%\emar.py %* diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emar.sh b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emar.sh new file mode 100644 index 000000000..b4ead6ef9 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emar.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +source $(dirname $0)/env.sh + +exec python3 $EMSCRIPTEN/emar.py "$@" diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc.bat b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc.bat new file mode 100644 index 000000000..4088bc4ae --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc.bat @@ -0,0 +1,5 @@ +@ECHO OFF + +call %~dp0\env.bat + +py -3 %EMSCRIPTEN%\emcc.py %* diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc.sh b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc.sh new file mode 100644 index 000000000..5fdaf9c29 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +source $(dirname $0)/env.sh + +exec python3 $EMSCRIPTEN/emcc.py "$@" diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc_link.bat b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc_link.bat new file mode 100644 index 000000000..f49cb0d58 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc_link.bat @@ -0,0 +1,5 @@ +@ECHO OFF + +call %~dp0\env.bat + +py -3 %~dp0\link_wrapper.py %* diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc_link.sh b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc_link.sh new file mode 100644 index 000000000..44f32353b --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc_link.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +source $(dirname $0)/env.sh + +exec python3 $(dirname $0)/link_wrapper.py "$@" diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/env.bat b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/env.bat new file mode 100644 index 000000000..c791ff771 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/env.bat @@ -0,0 +1,6 @@ +@ECHO OFF + +set ROOT_DIR=%EXT_BUILD_ROOT% +if "%ROOT_DIR%"=="" set ROOT_DIR=%CD% +set EMSCRIPTEN=%ROOT_DIR%\%EM_BIN_PATH%\emscripten +set EM_CONFIG=%ROOT_DIR%\%EM_CONFIG_PATH% diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/env.sh b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/env.sh new file mode 100644 index 000000000..b2a6bd60b --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/env.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +export ROOT_DIR=${EXT_BUILD_ROOT:-$(pwd -P)} +export EMSCRIPTEN=$ROOT_DIR/$EM_BIN_PATH/emscripten +export EM_CONFIG=$ROOT_DIR/$EM_CONFIG_PATH diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/link_wrapper.py b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/link_wrapper.py new file mode 100644 index 000000000..6a6fe2f87 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/link_wrapper.py @@ -0,0 +1,167 @@ +#!/usr/bin/env python +"""wrapper around emcc link step. + +This wrapper currently serves the following purposes. + +1. When building with --config=wasm the final output is multiple files, usually + at least one .js and one .wasm file. Since the cc_binary link step only + allows a single output, we must tar up the outputs into a single file. + +2. Add quotes around arguments that need them in the response file to work + around a bazel quirk. + +3. Ensure the external_debug_info section of the wasm points at the correct + bazel path. +""" + +from __future__ import print_function + +import argparse +import os +import subprocess +import sys + +# Only argument should be @path/to/parameter/file +assert sys.argv[1][0] == '@', sys.argv +param_filename = sys.argv[1][1:] +param_file_args = [line.strip() for line in open(param_filename, 'r').readlines()] + +# Re-write response file if needed. +if any(' ' in a for a in param_file_args): + new_param_filename = param_filename + '.modified' + with open(new_param_filename, 'w') as f: + for param in param_file_args: + if ' ' in param: + f.write('"%s"' % param) + else: + f.write(param) + f.write('\n') + sys.argv[1] = '@' + new_param_filename + +emcc_py = os.path.join(os.environ['EMSCRIPTEN'], 'emcc.py') +rtn = subprocess.call([sys.executable, emcc_py] + sys.argv[1:]) +if rtn != 0: + sys.exit(1) + +# Parse the arguments that we gave to the linker to determine what the output +# file is named and what the output format is. +parser = argparse.ArgumentParser(add_help=False) +parser.add_argument('-o') +parser.add_argument('--oformat') +options = parser.parse_known_args(param_file_args)[0] +output_file = options.o +oformat = options.oformat +outdir = os.path.normpath(os.path.dirname(output_file)) +base_name = os.path.basename(output_file) + +# The output file name is the name of the build rule that was built. +# Add an appropriate file extension based on --oformat. +if oformat is not None: + base_name_split = os.path.splitext(base_name) + + # If the output name has no extension, give it the appropriate extension. + if not base_name_split[1]: + os.replace(output_file, output_file + '.' + oformat) + + # If the output name does have an extension and it matches the output format, + # change the base_name so it doesn't have an extension. + elif base_name_split[1] == '.' + oformat: + base_name = base_name_split[0] + + # If the output name does have an extension and it does not match the output + # format, change the base_name so it doesn't have an extension and rename + # the output_file so it has the proper extension. + # Note that if you do something like name your build rule "foo.js" and pass + # "--oformat=html", emscripten will write to the same file for both the js and + # html output, overwriting the js output entirely with the html. + # Please don't do that. + else: + base_name = base_name_split[0] + os.replace(output_file, os.path.join(outdir, base_name + '.' + oformat)) + +files = [] +extensions = [ + '.js', + '.wasm', + '.wasm.map', + '.js.mem', + '.fetch.js', + '.worker.js', + '.data', + '.js.symbols', + '.wasm.debug.wasm', + '.html', + '.aw.js' +] + +for ext in extensions: + filename = base_name + ext + if os.path.exists(os.path.join(outdir, filename)): + files.append(filename) + +wasm_base = os.path.join(outdir, base_name + '.wasm') +if os.path.exists(wasm_base + '.debug.wasm') and os.path.exists(wasm_base): + # If we have a .wasm.debug.wasm file and a .wasm file, we need to rewrite the + # section in the .wasm file that refers to it. The path that's in there + # is the blaze output path; we want it to be just the filename. + + llvm_objcopy = os.path.join( + os.environ['EM_BIN_PATH'], 'bin/llvm-objcopy') + # First, check to make sure the .wasm file has the header that needs to be + # rewritten. + rtn = subprocess.call([ + llvm_objcopy, + '--dump-section=external_debug_info=/dev/null', + wasm_base], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + if rtn == 0: + # If llvm-objcopy did not return an error, the external_debug_info section + # must exist, so we're good to continue. + + # Next we need to convert length of the filename to LEB128. + # Start by converting the length of the filename to a bit string. + bit_string = '{0:b}'.format(len(base_name + '.wasm.debug.wasm')) + + # Pad the bit string with 0s so that its length is a multiple of 7. + while len(bit_string) % 7 != 0: + bit_string = '0' + bit_string + + # Break up our bit string into chunks of 7. + # We do this backwards because the final format is little-endian. + final_bytes = bytearray() + for i in reversed(range(0, len(bit_string), 7)): + binary_part = bit_string[i:i + 7] + if i != 0: + # Every chunk except the last one needs to be prepended with '1'. + # The length of each chunk is 7, so that one has an implicit '0'. + binary_part = '1' + binary_part + final_bytes.append(int(binary_part, 2)) + # Finally, add the actual filename. + final_bytes.extend((base_name + '.wasm.debug.wasm').encode()) + + # Write our length + filename bytes to a temp file. + with open(base_name + '_debugsection.tmp', 'wb+') as f: + f.write(final_bytes) + f.close() + + # First delete the old section. + subprocess.check_call([ + llvm_objcopy, + wasm_base, + '--remove-section=external_debug_info']) + # Rewrite section with the new size and filename from the temp file. + subprocess.check_call([ + llvm_objcopy, + wasm_base, + '--add-section=external_debug_info=' + base_name + '_debugsection.tmp']) + +# Make sure we have at least one output file. +if not len(files): + print('emcc.py did not appear to output any known files!') + sys.exit(1) + +# cc_binary must output exactly one file; put all the output files in a tarball. +cmd = ['tar', 'cf', base_name + '.tar'] + files +subprocess.check_call(cmd, cwd=outdir) +os.replace(os.path.join(outdir, base_name + '.tar'), output_file) + +sys.exit(0) diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/toolchain.bzl b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/toolchain.bzl new file mode 100644 index 000000000..1f2692cdf --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/toolchain.bzl @@ -0,0 +1,1158 @@ +"""This module encapsulates logic to create emscripten_cc_toolchain_config rule.""" + +load( + "@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl", + "action_config", + "env_entry", + "env_set", + "feature", + "feature_set", + "flag_group", + "tool", + "tool_path", + "variable_with_value", + "with_feature_set", + _flag_set = "flag_set", +) +load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES") + +def flag_set(flags = None, features = None, not_features = None, **kwargs): + """Extension to flag_set which allows for a "simple" form. + + The simple form allows specifying flags as a simple list instead of a flag_group + if enable_if or expand_if semantics are not required. + + Similarly, the simple form allows passing features/not_features if they are a simple + list of semantically "and" features. + (i.e. "asan" and "dbg", rather than "asan" or "dbg") + + Args: + flags: list, set of flags + features: list, set of features required to be enabled. + not_features: list, set of features required to not be enabled. + **kwargs: The rest of the args for flag_set. + + Returns: + flag_set + """ + if flags: + if kwargs.get("flag_groups"): + fail("Cannot set flags and flag_groups") + else: + kwargs["flag_groups"] = [flag_group(flags = flags)] + + if features or not_features: + if kwargs.get("with_features"): + fail("Cannot set features/not_feature and with_features") + kwargs["with_features"] = [with_feature_set( + features = features or [], + not_features = not_features or [], + )] + return _flag_set(**kwargs) + +CROSSTOOL_DEFAULT_WARNINGS = [ + "-Wall", +] + +def _impl(ctx): + target_cpu = ctx.attr.cpu + toolchain_identifier = "emscripten-" + target_cpu + target_system_name = target_cpu + "-unknown-emscripten" + + host_system_name = "i686-unknown-linux-gnu" + + target_libc = "musl/js" + + abi_version = "emscripten_syscalls" + + compiler = "emscripten" + abi_libc_version = "default" + + cc_target_os = "emscripten" + + emscripten_dir = ctx.attr.emscripten_binaries.label.workspace_root + + nodejs_path = ctx.file.nodejs_bin.path + + builtin_sysroot = emscripten_dir + "/emscripten/cache/sysroot" + + emcc_script = "emcc.%s" % ctx.attr.script_extension + emcc_link_script = "emcc_link.%s" % ctx.attr.script_extension + emar_script = "emar.%s" % ctx.attr.script_extension + + ################################################################ + # Tools + ################################################################ + clang_tool = tool(path = emcc_script) + clif_match_tool = tool(path = "dummy_clif_matcher") + link_tool = tool(path = emcc_link_script) + archive_tool = tool(path = emar_script) + strip_tool = tool(path = "NOT_USED_STRIP_TOOL") + + #### Legacy tool paths (much of this is redundant with action_configs, but + #### these are still used for some things) + tool_paths = [ + tool_path(name = "ar", path = emar_script), + tool_path(name = "cpp", path = "/bin/false"), + tool_path(name = "gcc", path = emcc_script), + tool_path(name = "gcov", path = "/bin/false"), + tool_path(name = "ld", path = emcc_link_script), + tool_path(name = "nm", path = "NOT_USED"), + tool_path(name = "objdump", path = "/bin/false"), + tool_path(name = "strip", path = "NOT_USED"), + ] + + ################################################################ + # Action Configs + ################################################################ + + cpp_compile_action = action_config( + action_name = ACTION_NAMES.cpp_compile, + tools = [clang_tool], + ) + + cpp_module_compile_action = action_config( + action_name = ACTION_NAMES.cpp_module_compile, + tools = [clang_tool], + ) + + cpp_module_codegen_action = action_config( + action_name = ACTION_NAMES.cpp_module_codegen, + tools = [clang_tool], + ) + + clif_match_action = action_config( + action_name = ACTION_NAMES.clif_match, + tools = [clif_match_tool], + ) + + cpp_link_dynamic_library_action = action_config( + action_name = ACTION_NAMES.cpp_link_dynamic_library, + tools = [link_tool], + ) + + strip_action = action_config( + action_name = ACTION_NAMES.strip, + tools = [strip_tool], + ) + + preprocess_assemble_action = action_config( + action_name = ACTION_NAMES.preprocess_assemble, + tools = [clang_tool], + ) + + cpp_header_parsing_action = action_config( + action_name = ACTION_NAMES.cpp_header_parsing, + tools = [clang_tool], + ) + + cpp_link_static_library_action = action_config( + action_name = ACTION_NAMES.cpp_link_static_library, + enabled = True, + flag_sets = [ + flag_set( + flag_groups = [ + flag_group( + flags = ["rcsD", "%{output_execpath}"], + expand_if_available = "output_execpath", + ), + ], + ), + flag_set( + flag_groups = [ + flag_group( + iterate_over = "libraries_to_link", + flag_groups = [ + flag_group( + flags = ["%{libraries_to_link.name}"], + expand_if_equal = variable_with_value( + name = "libraries_to_link.type", + value = "object_file", + ), + ), + flag_group( + flags = ["%{libraries_to_link.object_files}"], + iterate_over = "libraries_to_link.object_files", + expand_if_equal = variable_with_value( + name = "libraries_to_link.type", + value = "object_file_group", + ), + ), + ], + expand_if_available = "libraries_to_link", + ), + ], + ), + flag_set( + flag_groups = [ + flag_group( + flags = ["@%{linker_param_file}"], + expand_if_available = "linker_param_file", + ), + ], + ), + ], + tools = [archive_tool], + ) + + c_compile_action = action_config( + action_name = ACTION_NAMES.c_compile, + tools = [clang_tool], + ) + + linkstamp_compile_action = action_config( + action_name = ACTION_NAMES.linkstamp_compile, + tools = [clang_tool], + ) + + assemble_action = action_config( + action_name = ACTION_NAMES.assemble, + tools = [clang_tool], + ) + + cpp_link_executable_action = action_config( + action_name = ACTION_NAMES.cpp_link_executable, + tools = [link_tool], + ) + + cpp_link_nodeps_dynamic_library_action = action_config( + action_name = ACTION_NAMES.cpp_link_nodeps_dynamic_library, + tools = [link_tool], + ) + + action_configs = [ + strip_action, + c_compile_action, + cpp_compile_action, + linkstamp_compile_action, + assemble_action, + preprocess_assemble_action, + cpp_header_parsing_action, + cpp_module_compile_action, + cpp_module_codegen_action, + cpp_link_executable_action, + cpp_link_dynamic_library_action, + cpp_link_nodeps_dynamic_library_action, + cpp_link_static_library_action, + clif_match_action, + ] + + all_compile_actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.clif_match, + ACTION_NAMES.lto_backend, + ] + + all_cpp_compile_actions = [ + ACTION_NAMES.cpp_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.clif_match, + ] + + preprocessor_compile_actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.clif_match, + ] + + all_link_actions = [ + ACTION_NAMES.cpp_link_executable, + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ] + + ################################################################ + # Features + ################################################################ + + features = [ + # This set of magic "feature"s are important configuration information for blaze. + feature(name = "no_legacy_features", enabled = True), + feature( + name = "has_configured_linker_path", + enabled = True, + ), + + # Blaze requests this feature by default, but we don't care. + feature(name = "dependency_file"), + + # Blaze requests this feature by default, but we don't care. + feature(name = "random_seed"), + + # Formerly "needsPic" attribute + feature(name = "supports_pic", enabled = False), + + # Blaze requests this feature by default. + # Blaze also tests if this feature is supported, before setting the "pic" build-variable. + feature(name = "pic"), + + # Blaze requests this feature by default. + # Blaze also tests if this feature is supported before setting preprocessor_defines + # (...but why?) + feature(name = "preprocessor_defines"), + + # Blaze requests this feature by default. + # Blaze also tests if this feature is supported before setting includes. (...but why?) + feature(name = "include_paths"), + + # Blaze tests if this feature is enabled in order to create implicit + # "nodeps" .so outputs from cc_library rules. + feature(name = "supports_dynamic_linker", enabled = False), + + # Blaze requests this feature when linking a cc_binary which is + # "dynamic" aka linked against nodeps-dynamic-library cc_library + # outputs. + feature(name = "dynamic_linking_mode"), + + #### Configuration features + feature( + name = "crosstool_cpu", + enabled = True, + implies = ["crosstool_cpu_" + target_cpu], + ), + feature( + name = "crosstool_cpu_asmjs", + provides = ["variant:crosstool_cpu"], + ), + feature( + name = "crosstool_cpu_wasm", + provides = ["variant:crosstool_cpu"], + ), + + # These 3 features will be automatically enabled by blaze in the + # corresponding build mode. + feature( + name = "opt", + provides = ["variant:crosstool_build_mode"], + ), + feature( + name = "dbg", + provides = ["variant:crosstool_build_mode"], + ), + feature( + name = "fastbuild", + provides = ["variant:crosstool_build_mode"], + ), + + # Feature to prevent 'command line too long' issues + feature( + name = "archive_param_file", + enabled = True, + ), + feature( + name = "compiler_param_file", + enabled = True, + ), + + #### User-settable features + + # Set if enabling exceptions. + feature(name = "exceptions"), + + # Set if enabling wasm_exceptions. + feature(name = "wasm_exceptions"), + + # This feature overrides the default optimization to prefer execution speed + # over binary size (like clang -O3). + feature( + name = "optimized_for_speed", + provides = ["variant:crosstool_optimization_mode"], + ), + + # This feature overrides the default optimization to prefer binary size over + # execution speed (like clang -Oz). + feature( + name = "optimized_for_size", + provides = ["variant:crosstool_optimization_mode"], + ), + + # Convenience aliases / alt-spellings. + feature( + name = "optimize_for_speed", + implies = ["optimized_for_speed"], + ), + feature( + name = "optimize_for_size", + implies = ["optimized_for_size"], + ), + + # This feature allows easier use of profiling tools by preserving mangled + # C++ names. This does everything profiling_funcs does and more. + feature(name = "profiling"), + + # This feature emits only enough debug info for function names to appear + # in profiles. + feature(name = "profiling_funcs"), + + # This feature allows source maps to be generated. + feature( + name = "source_maps", + implies = ["full_debug_info"], + ), + feature( + name = "dwarf_debug_info", + implies = ["profiling"], + ), + + # Turns on full debug info (-g4). + feature(name = "full_debug_info"), + + # Enables the use of "Emscripten" Pthread implementation. + # https://kripken.github.io/emscripten-site/docs/porting/pthreads.html + # https://github.com/kripken/emscripten/wiki/Pthreads-with-WebAssembly + feature(name = "use_pthreads"), + + # If enabled, the runtime will exit when main() completes. + feature(name = "exit_runtime"), + + # Primarily for toolchain maintainers: + feature(name = "emcc_debug"), + feature(name = "emcc_debug_link"), + feature( + name = "llvm_backend", + requires = [feature_set(features = ["crosstool_cpu_wasm"])], + enabled = True, + ), + + # Remove once flag is flipped. + # See https://github.com/bazelbuild/bazel/issues/7687 + feature( + name = "do_not_split_linking_cmdline", + ), + + # Adds simd support, only available with the llvm backend. + feature( + name = "wasm_simd", + requires = [feature_set(features = ["llvm_backend"])], + ), + # Adds relaxed-simd support, only available with the llvm backend. + feature( + name = "wasm_relaxed_simd", + requires = [feature_set(features = ["llvm_backend"])], + ), + feature( + name = "precise_long_double_printf", + enabled = True, + ), + feature( + name = "wasm_warnings_as_errors", + enabled = False, + ), + + # ASan and UBSan. See also: + # https://emscripten.org/docs/debugging/Sanitizers.html + feature(name = "wasm_asan"), + feature(name = "wasm_ubsan"), + feature( + name = "output_format_js", + enabled = True, + ), + feature( + name = "wasm_standalone", + ), + ] + + crosstool_default_flag_sets = [ + # Compile, Link, and CC_FLAGS make variable + flag_set( + actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.clif_match, + ACTION_NAMES.cpp_link_executable, + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ], + flag_groups = [ + flag_group( + flags = ["--sysroot=%{sysroot}"], + expand_if_available = "sysroot", + ), + ], + ), + # Compile + Link + flag_set( + actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.clif_match, + ACTION_NAMES.cpp_link_executable, + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ], + # This forces color diagnostics even on Forge (where we don't have an + # attached terminal). + flags = [ + "-fdiagnostics-color", + ], + ), + # C++ compiles (and implicitly link) + flag_set( + actions = all_cpp_compile_actions, + flags = [ + "-fno-exceptions", + ], + not_features = ["exceptions", "wasm_exceptions"], + ), + flag_set( + actions = all_cpp_compile_actions, + flags = [ + "-fexceptions", + ], + features = ["exceptions"], + ), + flag_set( + actions = all_cpp_compile_actions + + all_link_actions, + flags = [ + "-fwasm-exceptions", + ], + features = ["wasm_exceptions"], + ), + # All compiles (and implicitly link) + flag_set( + actions = all_compile_actions + + all_link_actions, + flags = [ + "-fno-strict-aliasing", + "-funsigned-char", + "-no-canonical-prefixes", + ], + ), + # Language Features + flag_set( + actions = all_cpp_compile_actions, + flags = ["-std=gnu++17", "-nostdinc", "-nostdinc++"], + ), + + # Emscripten-specific settings: + flag_set( + actions = all_compile_actions + all_link_actions, + flags = ["-s", "WASM=0"], + features = ["crosstool_cpu_asmjs"], + ), + flag_set( + actions = all_compile_actions + + all_link_actions, + flags = ["-s", "USE_PTHREADS=1"], + features = ["use_pthreads"], + ), + flag_set( + actions = all_link_actions, + flags = ["-s", "EXIT_RUNTIME=1"], + features = ["exit_runtime"], + ), + flag_set( + actions = all_compile_actions + all_link_actions, + flags = ["-pthread"], + features = ["llvm_backend", "use_pthreads"], + ), + flag_set( + actions = all_compile_actions + all_link_actions, + flags = ["-msimd128"], + features = ["wasm_simd"], + ), + flag_set( + actions = all_compile_actions + all_link_actions, + flags = ["-msimd128", "-mrelaxed-simd"], + features = ["wasm_relaxed_simd"], + ), + flag_set( + actions = all_link_actions, + flags = ["-s", "PRINTF_LONG_DOUBLE=1"], + features = ["precise_long_double_printf"], + ), + flag_set( + actions = all_link_actions, + flags = ["--oformat=js"], + features = ["output_format_js"], + ), + + # Opt + flag_set( + actions = preprocessor_compile_actions, + flags = ["-DNDEBUG"], + features = ["opt"], + ), + flag_set( + actions = all_compile_actions, + flags = ["-fomit-frame-pointer"], + features = ["opt"], + ), + flag_set( + actions = all_compile_actions + + all_link_actions, + flags = ["-O2"], + features = ["opt"], + ), + + # Users can override opt-level with semantic names... + flag_set( + actions = all_compile_actions + + all_link_actions, + flags = ["-Oz"], + features = ["optimized_for_size", "opt"], + ), + flag_set( + actions = all_compile_actions + + all_link_actions, + flags = ["-O3"], + features = ["optimized_for_speed", "opt"], + ), + + # Fastbuild + flag_set( + actions = all_compile_actions, + flags = ["-fomit-frame-pointer"], + features = ["fastbuild"], + ), + flag_set( + actions = all_compile_actions + + all_link_actions, + flags = ["-O0"], + features = ["fastbuild"], + ), + + # Dbg + flag_set( + actions = all_compile_actions, + flags = ["-fno-omit-frame-pointer"], + features = ["dbg"], + ), + flag_set( + actions = all_compile_actions + + all_link_actions, + flags = ["-g", "-O0"], + features = ["dbg"], + ), + flag_set( + actions = all_compile_actions + + all_link_actions, + flags = [ + "-g", + "-fsanitize=address", + "-O1", + "-DADDRESS_SANITIZER=1", + "-fno-omit-frame-pointer", + ], + features = ["wasm_asan"], + ), + flag_set( + actions = all_compile_actions + + all_link_actions, + flags = [ + "-g4", + "-fsanitize=undefined", + "-O1", + "-DUNDEFINED_BEHAVIOR_SANITIZER=1", + "-fno-omit-frame-pointer", + "-fno-sanitize=vptr", + ], + features = ["wasm_ubsan"], + ), + + # Profiling provides full debug info and a special --profiling flag + # to control name mangling + flag_set( + actions = all_link_actions, + flags = ["--profiling"], + features = ["profiling"], + ), + flag_set( + actions = all_link_actions, + flags = ["--profiling_funcs"], + features = ["profiling_funcs"], + ), + flag_set( + actions = all_compile_actions + + all_link_actions, + flags = ["-g4"], + features = ["full_debug_info"], + ), + flag_set( + actions = all_link_actions, + flags = ["-gseparate-dwarf"], + features = ["dwarf_debug_info"], + ), + flag_set( + actions = all_compile_actions + + all_link_actions, + flags = ["-fdebug-compilation-dir=."], + features = ["dwarf_debug_info"], + ), + # Generic warning flag list + flag_set( + actions = all_compile_actions, + flags = CROSSTOOL_DEFAULT_WARNINGS, + ), + + # Defines and Includes and Paths and such + flag_set( + actions = all_compile_actions, + flag_groups = [ + flag_group(flags = ["-fPIC"], expand_if_available = "pic"), + ], + ), + flag_set( + actions = preprocessor_compile_actions, + flag_groups = [ + flag_group( + flags = ["-D%{preprocessor_defines}"], + iterate_over = "preprocessor_defines", + ), + ], + ), + flag_set( + actions = preprocessor_compile_actions, + flag_groups = [ + flag_group( + flags = ["-include", "%{includes}"], + iterate_over = "includes", + expand_if_available = "includes", + ), + ], + ), + flag_set( + actions = preprocessor_compile_actions, + flag_groups = [ + flag_group( + flags = ["-iquote", "%{quote_include_paths}"], + iterate_over = "quote_include_paths", + ), + flag_group( + flags = ["-I%{include_paths}"], + iterate_over = "include_paths", + ), + flag_group( + flags = ["-isystem", "%{system_include_paths}"], + iterate_over = "system_include_paths", + ), + ], + ), + + ## Linking options (not libs -- those go last) + + # Generic link options + flag_set( + actions = [ + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ], + flags = ["-shared"], + ), + + # Linker search paths and objects: + flag_set( + actions = all_link_actions, + flag_groups = [ + flag_group( + iterate_over = "runtime_library_search_directories", + flag_groups = [ + flag_group( + flags = [ + "-Wl,-rpath,$EXEC_ORIGIN/%{runtime_library_search_directories}", + ], + expand_if_true = "is_cc_test", + ), + flag_group( + flags = [ + "-Wl,-rpath,$ORIGIN/%{runtime_library_search_directories}", + ], + expand_if_false = "is_cc_test", + ), + ], + expand_if_available = "runtime_library_search_directories", + ), + ], + ), + flag_set( + actions = all_link_actions, + flag_groups = [ + flag_group( + flags = ["-L%{library_search_directories}"], + iterate_over = "library_search_directories", + expand_if_available = "library_search_directories", + ), + ], + ), + flag_set( + actions = all_link_actions, + flag_groups = [ + flag_group( + # This is actually a list of object files from the linkstamp steps + flags = ["%{linkstamp_paths}"], + iterate_over = "linkstamp_paths", + expand_if_available = "linkstamp_paths", + ), + ], + ), + flag_set( + actions = all_link_actions, + flag_groups = [ + flag_group( + flags = ["@%{thinlto_param_file}"], + expand_if_available = "libraries_to_link", + expand_if_true = "thinlto_param_file", + ), + flag_group( + iterate_over = "libraries_to_link", + flag_groups = [ + flag_group( + flags = ["-Wl,--start-lib"], + expand_if_equal = variable_with_value( + name = "libraries_to_link.type", + value = "object_file_group", + ), + ), + flag_group( + flags = ["-Wl,-whole-archive"], + expand_if_true = "libraries_to_link.is_whole_archive", + ), + flag_group( + flags = ["%{libraries_to_link.object_files}"], + iterate_over = "libraries_to_link.object_files", + expand_if_equal = variable_with_value( + name = "libraries_to_link.type", + value = "object_file_group", + ), + ), + flag_group( + flags = ["%{libraries_to_link.name}"], + expand_if_equal = variable_with_value( + name = "libraries_to_link.type", + value = "object_file", + ), + ), + flag_group( + flags = ["%{libraries_to_link.name}"], + expand_if_equal = variable_with_value( + name = "libraries_to_link.type", + value = "interface_library", + ), + ), + flag_group( + flags = ["%{libraries_to_link.name}"], + expand_if_equal = variable_with_value( + name = "libraries_to_link.type", + value = "static_library", + ), + ), + flag_group( + flags = ["-l%{libraries_to_link.name}"], + expand_if_equal = variable_with_value( + name = "libraries_to_link.type", + value = "dynamic_library", + ), + ), + flag_group( + flags = ["-l:%{libraries_to_link.name}"], + expand_if_equal = variable_with_value( + name = "libraries_to_link.type", + value = "versioned_dynamic_library", + ), + ), + flag_group( + flags = ["-Wl,-no-whole-archive"], + expand_if_true = "libraries_to_link.is_whole_archive", + ), + flag_group( + flags = ["-Wl,--end-lib"], + expand_if_equal = variable_with_value( + name = "libraries_to_link.type", + value = "object_file_group", + ), + ), + ], + expand_if_available = "libraries_to_link", + ), + ], + ), + + # Configure the header parsing and preprocessing. + flag_set( + actions = [ACTION_NAMES.cpp_header_parsing], + flags = ["-xc++-header", "-fsyntax-only"], + features = ["parse_headers"], + ), + + # Note: user compile flags should be nearly last -- you probably + # don't want to put any more features after this! + flag_set( + actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.clif_match, + ], + flag_groups = [ + flag_group( + flags = ["%{user_compile_flags}"], + iterate_over = "user_compile_flags", + expand_if_available = "user_compile_flags", + ), + ], + ), + flag_set( + actions = all_link_actions, + flag_groups = [ + flag_group( + flags = ["%{user_link_flags}"], + iterate_over = "user_link_flags", + expand_if_available = "user_link_flags", + ), + ], + ), + ## Options which need to go late -- after all the user options -- go here. + flag_set( + # One might hope that these options would only be needed for C++ + # compiles. But, sadly, users compile ".c" files with custom + # copts=["-x", "c++"], and expect that to be able to find C++ stdlib + # headers. It might be worth pondering how blaze could support this sort + # of use-case better. + actions = preprocessor_compile_actions + + [ACTION_NAMES.cc_flags_make_variable], + flags = [ + "-iwithsysroot" + "/include/c++/v1", + "-iwithsysroot" + "/include/compat", + "-iwithsysroot" + "/include", + "-isystem", + emscripten_dir + "/lib/clang/22/include", + ], + ), + # Inputs and outputs + flag_set( + actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.clif_match, + ], + flag_groups = [ + flag_group( + flags = ["-MD", "-MF", "%{dependency_file}"], + expand_if_available = "dependency_file", + ), + ], + ), + flag_set( + actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.clif_match, + ], + flag_groups = [ + flag_group( + flags = ["-c", "%{source_file}"], + expand_if_available = "source_file", + ), + ], + ), + flag_set( + actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.clif_match, + ], + flag_groups = [ + flag_group( + flags = ["-S"], + expand_if_available = "output_assembly_file", + ), + flag_group( + flags = ["-E"], + expand_if_available = "output_preprocess_file", + ), + flag_group( + flags = ["-o", "%{output_file}"], + expand_if_available = "output_file", + ), + ], + ), + flag_set( + actions = all_link_actions, + flag_groups = [ + flag_group( + flags = ["-o", "%{output_execpath}"], + expand_if_available = "output_execpath", + ), + ], + ), + # And finally, the params file! + flag_set( + actions = all_link_actions, + flag_groups = [ + flag_group( + flags = ["@%{linker_param_file}"], + expand_if_available = "linker_param_file", + ), + ], + ), + flag_set( + actions = all_compile_actions, + flags = [ + "-Wno-builtin-macro-redefined", + # Genrules may not escape quotes enough for these, so + # don't put them into $(CC_FLAGS): + '-D__DATE__="redacted"', + '-D__TIMESTAMP__="redacted"', + '-D__TIME__="redacted"', + ], + ), + flag_set( + actions = all_compile_actions, + flags = ["-Werror"], + features = ["wasm_warnings_as_errors"], + ), + flag_set( + actions = all_link_actions, + flags = ["-sSTANDALONE_WASM"], + features = ["wasm_standalone"], + ), + ] + + crosstool_default_env_sets = [ + # Globals + env_set( + actions = all_compile_actions + + all_link_actions + + [ACTION_NAMES.cpp_link_static_library], + env_entries = [ + env_entry( + key = "EM_BIN_PATH", + value = emscripten_dir, + ), + env_entry( + key = "EM_CONFIG_PATH", + value = ctx.file.em_config.path, + ), + env_entry( + key = "NODE_JS_PATH", + value = nodejs_path, + ), + ], + ), + # Use llvm backend. Off by default, enabled via --features=llvm_backend + env_set( + actions = all_compile_actions + + all_link_actions + + [ACTION_NAMES.cpp_link_static_library], + env_entries = [env_entry(key = "EMCC_WASM_BACKEND", value = "1")], + with_features = [with_feature_set(features = ["llvm_backend"])], + ), + # Debug compile and link. Off by default, enabled via --features=emcc_debug + env_set( + actions = all_compile_actions, + env_entries = [env_entry(key = "EMCC_DEBUG", value = "1")], + with_features = [with_feature_set(features = ["emcc_debug"])], + ), + + # Debug only link step. Off by default, enabled via --features=emcc_debug_link + env_set( + actions = all_link_actions, + env_entries = [env_entry(key = "EMCC_DEBUG", value = "1")], + with_features = [ + with_feature_set(features = ["emcc_debug"]), + with_feature_set(features = ["emcc_debug_link"]), + ], + ), + ] + + crosstool_default_flags_feature = feature( + name = "crosstool_default_flags", + enabled = True, + flag_sets = crosstool_default_flag_sets, + env_sets = crosstool_default_env_sets, + ) + + features.append(crosstool_default_flags_feature) + + cxx_builtin_include_directories = [ + emscripten_dir + "/emscripten/cache/sysroot/include/c++/v1", + emscripten_dir + "/emscripten/cache/sysroot/include/compat", + emscripten_dir + "/emscripten/cache/sysroot/include", + emscripten_dir + "/lib/clang/21/include", + ] + + artifact_name_patterns = [] + + make_variables = [] + + return cc_common.create_cc_toolchain_config_info( + ctx = ctx, + features = features, + action_configs = action_configs, + artifact_name_patterns = artifact_name_patterns, + cxx_builtin_include_directories = cxx_builtin_include_directories, + toolchain_identifier = toolchain_identifier, + host_system_name = host_system_name, + target_system_name = target_system_name, + target_cpu = target_cpu, + target_libc = target_libc, + compiler = compiler, + abi_version = abi_version, + abi_libc_version = abi_libc_version, + tool_paths = tool_paths, + make_variables = make_variables, + builtin_sysroot = builtin_sysroot, + cc_target_os = cc_target_os, + ) + +emscripten_cc_toolchain_config_rule = rule( + implementation = _impl, + attrs = { + "cpu": attr.string(mandatory = True, values = ["asmjs", "wasm"]), + "em_config": attr.label(mandatory = True, allow_single_file = True), + "emscripten_binaries": attr.label(mandatory = True, cfg = "exec"), + "nodejs_bin": attr.label(mandatory = True, allow_single_file = True), + "script_extension": attr.string(mandatory = True, values = ["sh", "bat"]), + }, + provides = [CcToolchainConfigInfo], +) diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_binary.py b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_binary.py new file mode 100644 index 000000000..d7d614237 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_binary.py @@ -0,0 +1,56 @@ +"""Unpackages a bazel emscripten archive for use in a bazel BUILD rule. + +This script will take a tar archive containing the output of the emscripten +toolchain. This file contains any output files produced by a wasm_cc_binary or a +cc_binary built with --config=wasm. The files are extracted into the given +output paths. + +The contents of the archive are expected to match the given outputs extnames. + +This script and its accompanying Bazel rule should allow you to extract a +WebAssembly binary into a larger web application. +""" + +import argparse +import os +import tarfile + + +def ensure(f): + if not os.path.exists(f): + with open(f, 'w'): + pass + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('--archive', help='The archive to extract from.') + parser.add_argument('--outputs', help='Comma separated list of files that should be extracted from the archive. Only the extname has to match a file in the archive.') + parser.add_argument('--allow_empty_outputs', help='If an output listed in --outputs does not exist, create it anyways.', action='store_true') + args = parser.parse_args() + + args.archive = os.path.normpath(args.archive) + args.outputs = args.outputs.split(",") + + tar = tarfile.open(args.archive) + + for member in tar.getmembers(): + extname = '.' + member.name.split('.', 1)[1] + for idx, output in enumerate(args.outputs): + if output.endswith(extname): + member_file = tar.extractfile(member) + with open(output, "wb") as output_file: + output_file.write(member_file.read()) + args.outputs.pop(idx) + break + + for output in args.outputs: + extname = '.' + output.split('.', 1)[1] + if args.allow_empty_outputs: + ensure(output) + else: + print("[ERROR] Archive does not contain file with extname: %s" % extname) + + +if __name__ == '__main__': + main() diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_cc_binary.bzl b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_cc_binary.bzl new file mode 100644 index 000000000..3cc601485 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_cc_binary.bzl @@ -0,0 +1,231 @@ +"""wasm_cc_binary rule for compiling C++ targets to WebAssembly. +""" + +def _wasm_transition_impl(settings, attr): + _ignore = (settings, attr) + + features = list(settings["//command_line_option:features"]) + linkopts = list(settings["//command_line_option:linkopt"]) + + if attr.threads == "emscripten": + # threads enabled + features.append("use_pthreads") + elif attr.threads == "off": + # threads disabled + features.append("-use_pthreads") + + if attr.exit_runtime == True: + features.append("exit_runtime") + + if attr.backend == "llvm": + features.append("llvm_backend") + elif attr.backend == "emscripten": + features.append("-llvm_backend") + + if attr.simd: + features.append("wasm_simd") + + platform = "@emsdk//:platform_wasm" + if attr.standalone: + platform = "@emsdk//:platform_wasi" + features.append("wasm_standalone") + + return { + "//command_line_option:compiler": "emscripten", + "//command_line_option:cpu": "wasm", + "//command_line_option:features": features, + "//command_line_option:dynamic_mode": "off", + "//command_line_option:linkopt": linkopts, + "//command_line_option:platforms": [platform], + # This is hardcoded to an empty cc_library because the malloc library + # is implicitly added by the emscripten toolchain + "//command_line_option:custom_malloc": "@emsdk//emscripten_toolchain:malloc", + } + +_wasm_transition = transition( + implementation = _wasm_transition_impl, + inputs = [ + "//command_line_option:features", + "//command_line_option:linkopt", + ], + outputs = [ + "//command_line_option:compiler", + "//command_line_option:cpu", + "//command_line_option:features", + "//command_line_option:dynamic_mode", + "//command_line_option:linkopt", + "//command_line_option:platforms", + "//command_line_option:custom_malloc", + ], +) + +_ALLOW_OUTPUT_EXTNAMES = [ + ".js", + ".wasm", + ".wasm.map", + ".worker.js", + ".js.mem", + ".data", + ".fetch.js", + ".js.symbols", + ".wasm.debug.wasm", + ".html", + ".aw.js", +] + +_WASM_BINARY_COMMON_ATTRS = { + "backend": attr.string( + default = "_default", + values = ["_default", "emscripten", "llvm"], + ), + "cc_target": attr.label( + cfg = _wasm_transition, + mandatory = True, + ), + "exit_runtime": attr.bool( + default = False, + ), + "threads": attr.string( + default = "_default", + values = ["_default", "emscripten", "off"], + ), + "simd": attr.bool( + default = False, + ), + "standalone": attr.bool( + default = False, + ), + "_allowlist_function_transition": attr.label( + default = "@bazel_tools//tools/allowlists/function_transition_allowlist", + ), + "_wasm_binary_extractor": attr.label( + executable = True, + allow_files = True, + cfg = "exec", + default = Label("@emsdk//emscripten_toolchain:wasm_binary"), + ), +} + +def _wasm_cc_binary_impl(ctx): + args = ctx.actions.args() + cc_target = ctx.attr.cc_target[0] + + for output in ctx.outputs.outputs: + valid_extname = False + for allowed_extname in _ALLOW_OUTPUT_EXTNAMES: + if output.path.endswith(allowed_extname): + valid_extname = True + break + if not valid_extname: + fail("Invalid output '{}'. Allowed extnames: {}".format(output.basename, ", ".join(_ALLOW_OUTPUT_EXTNAMES))) + + args.add_all("--archive", ctx.files.cc_target) + args.add_joined("--outputs", ctx.outputs.outputs, join_with = ",") + + ctx.actions.run( + inputs = ctx.files.cc_target, + outputs = ctx.outputs.outputs, + arguments = [args], + executable = ctx.executable._wasm_binary_extractor, + ) + + return [ + DefaultInfo( + files = depset(ctx.outputs.outputs), + # This is needed since rules like web_test usually have a data + # dependency on this target. + data_runfiles = ctx.runfiles(transitive_files = depset(ctx.outputs.outputs)), + ), + OutputGroupInfo(_wasm_tar = cc_target.files), + ] + +def _wasm_cc_binary_legacy_impl(ctx): + cc_target = ctx.attr.cc_target[0] + outputs = [ + ctx.outputs.loader, + ctx.outputs.wasm, + ctx.outputs.map, + ctx.outputs.mem, + ctx.outputs.fetch, + ctx.outputs.worker, + ctx.outputs.data, + ctx.outputs.symbols, + ctx.outputs.dwarf, + ctx.outputs.html, + ctx.outputs.audio_worklet, + ] + + args = ctx.actions.args() + args.add("--allow_empty_outputs") + args.add_all("--archive", ctx.files.cc_target) + args.add_joined("--outputs", outputs, join_with = ",") + + ctx.actions.run( + inputs = ctx.files.cc_target, + outputs = outputs, + arguments = [args], + executable = ctx.executable._wasm_binary_extractor, + ) + + return [ + DefaultInfo( + executable = ctx.outputs.wasm, + files = depset(outputs), + # This is needed since rules like web_test usually have a data + # dependency on this target. + data_runfiles = ctx.runfiles(transitive_files = depset(outputs)), + ), + OutputGroupInfo(_wasm_tar = cc_target.files), + ] + +_wasm_cc_binary = rule( + implementation = _wasm_cc_binary_impl, + attrs = dict( + _WASM_BINARY_COMMON_ATTRS, + outputs = attr.output_list( + allow_empty = False, + mandatory = True, + ), + ), +) + +def _wasm_binary_legacy_outputs(name, cc_target): + basename = cc_target.name + basename = basename.split(".")[0] + outputs = { + "loader": "{}/{}.js".format(name, basename), + "wasm": "{}/{}.wasm".format(name, basename), + "map": "{}/{}.wasm.map".format(name, basename), + "mem": "{}/{}.js.mem".format(name, basename), + "fetch": "{}/{}.fetch.js".format(name, basename), + "worker": "{}/{}.worker.js".format(name, basename), + "data": "{}/{}.data".format(name, basename), + "symbols": "{}/{}.js.symbols".format(name, basename), + "dwarf": "{}/{}.wasm.debug.wasm".format(name, basename), + "html": "{}/{}.html".format(name, basename), + "audio_worklet": "{}/{}.aw.js".format(name, basename) + } + + return outputs + +_wasm_cc_binary_legacy = rule( + implementation = _wasm_cc_binary_legacy_impl, + attrs = _WASM_BINARY_COMMON_ATTRS, + outputs = _wasm_binary_legacy_outputs, +) + +# Wraps a C++ Blaze target, extracting the appropriate files. +# +# This rule will transition to the emscripten toolchain in order +# to build the the cc_target as a WebAssembly binary. +# +# Args: +# name: The name of the rule. +# cc_target: The cc_binary or cc_library to extract files from. +def wasm_cc_binary(outputs = None, **kwargs): + # for backwards compatibility if no outputs are set the deprecated + # implementation is used. + if not outputs: + _wasm_cc_binary_legacy(**kwargs) + else: + _wasm_cc_binary(outputs = outputs, **kwargs) diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_rules.bzl b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_rules.bzl new file mode 100644 index 000000000..f8dce22ee --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_rules.bzl @@ -0,0 +1,6 @@ +"""Rules related to C++ and WebAssembly. +""" + +load(":wasm_cc_binary.bzl", _wasm_cc_binary = "wasm_cc_binary") + +wasm_cc_binary = _wasm_cc_binary diff --git a/emsdk-cache/emsdk-main/bazel/hello-world/hello-world-simd.cc b/emsdk-cache/emsdk-main/bazel/hello-world/hello-world-simd.cc new file mode 100644 index 000000000..649adab20 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/hello-world/hello-world-simd.cc @@ -0,0 +1,10 @@ +#include + +void multiply_arrays(int* out, int* in_a, int* in_b, int size) { + for (int i = 0; i < size; i += 4) { + v128_t a = wasm_v128_load(&in_a[i]); + v128_t b = wasm_v128_load(&in_b[i]); + v128_t prod = wasm_i32x4_mul(a, b); + wasm_v128_store(&out[i], prod); + } +} diff --git a/emsdk-cache/emsdk-main/bazel/hello-world/hello-world.cc b/emsdk-cache/emsdk-main/bazel/hello-world/hello-world.cc new file mode 100644 index 000000000..ee72c5317 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/hello-world/hello-world.cc @@ -0,0 +1,6 @@ +#include + +int main(int argc, char** argv) { + std::cout << "hello world!" << std::endl; + return 0; +} diff --git a/emsdk-cache/emsdk-main/bazel/remote_emscripten_repository.bzl b/emsdk-cache/emsdk-main/bazel/remote_emscripten_repository.bzl new file mode 100644 index 000000000..819a04808 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/remote_emscripten_repository.bzl @@ -0,0 +1,148 @@ +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +load(":emscripten_build_file.bzl", "EMSCRIPTEN_BUILD_FILE_CONTENT_TEMPLATE") +load(":revisions.bzl", "EMSCRIPTEN_TAGS") +load("//emscripten_toolchain:toolchain.bzl", "emscripten_cc_toolchain_config_rule") + +def remote_emscripten_repository( + name, + bin_extension, + **kwargs, +): + """Imports an Emscripten from an http archive + + Args: + name: A unique name for this Emscripten repository. + bin_extension: Extension for the binaries in this Emscripten repository + **kwargs: Args for http_archive. Refer to http_archive documentation for more info. + """ + http_archive( + name = name, + build_file_content = EMSCRIPTEN_BUILD_FILE_CONTENT_TEMPLATE.format(bin_extension = bin_extension), + **kwargs + ) + +def emscripten_toolchain_name(name): + return "emscripten_{}".format(name) + +def _get_name_and_target(name): + return name, ":" + name + +def create_toolchains(name, repo_name, exec_compatible_with): + """Creates toolchain definition for an Emscripten + + Register the toolchains defined by this macro via + `register_toolchains("//:cc-toolchain-wasm-")` + + Args: + name: A unique name for this Emscripten toolchain + repo_name: The name of the Emscripten repository for this toolchain + exec_compatible_with: Execute platform constraints for the Emscripten toolchain associated + with this repository. + **kwargs: Args for http_archive. Refer to http_archive documentation for more info. + """ + common_files_name, common_files_target = _get_name_and_target("common_files_" + name) + compiler_files_name, compiler_files_target = _get_name_and_target("compiler_files_" + name) + linker_files_name, linker_files_target = _get_name_and_target("linker_files_" + name) + ar_files_name, ar_files_target = _get_name_and_target("ar_files_" + name) + all_files_name, all_files_target = _get_name_and_target("all_files_" + name) + cc_wasm_name, cc_wasm_target = _get_name_and_target("cc-compiler-wasm-" + name) + + wasm_name = "wasm-" + name + + # These are file groups defined by the build_file_content on the Emscripten http_archive + remote_repo = "@{}//".format(repo_name) + repo_compiler_files_target = remote_repo + ":compiler_files" + repo_linker_files_target = remote_repo + ":linker_files" + repo_ar_files_target = remote_repo + ":ar_files" + + native.filegroup( + name = common_files_name, + srcs = [ + "@emscripten_cache//:emscripten_config", + "@emsdk//emscripten_toolchain:env.sh", + "@emsdk//emscripten_toolchain:env.bat", + "@nodejs//:node_files", + ], + ) + + native.filegroup( + name = compiler_files_name, + srcs = [ + "@emsdk//emscripten_toolchain:emcc.sh", + "@emsdk//emscripten_toolchain:emcc.bat", + repo_compiler_files_target, + common_files_target, + ], + ) + + native.filegroup( + name = linker_files_name, + srcs = [ + "@emsdk//emscripten_toolchain:emcc_link.sh", + "@emsdk//emscripten_toolchain:emcc_link.bat", + "link_wrapper.py", + repo_linker_files_target, + common_files_target, + ], + ) + + native.filegroup( + name = ar_files_name, + srcs = [ + "@emsdk//emscripten_toolchain:emar.sh", + "@emsdk//emscripten_toolchain:emar.bat", + repo_ar_files_target, + common_files_target, + ], + ) + + native.filegroup( + name = all_files_name, + srcs = [ + ar_files_target, + compiler_files_target, + linker_files_target, + ], + ) + + emscripten_cc_toolchain_config_rule( + name = wasm_name, + cpu = "wasm", + em_config = "@emscripten_cache//:emscripten_config", + emscripten_binaries = repo_compiler_files_target, + nodejs_bin = "@nodejs//:node", + script_extension = select({ + "@bazel_tools//src/conditions:host_windows": "bat", + "//conditions:default": "sh", + }), + ) + + native.cc_toolchain( + name = cc_wasm_name, + all_files = all_files_target, + ar_files = ar_files_target, + as_files = ":empty", + compiler_files = compiler_files_target, + dwp_files = ":empty", + linker_files = linker_files_target, + objcopy_files = ":empty", + strip_files = ":empty", + toolchain_config = wasm_name, + toolchain_identifier = "emscripten-wasm-" + name, + ) + + native.toolchain( + name = "cc-toolchain-wasm-" + name, + target_compatible_with = ["@platforms//cpu:wasm32"], + exec_compatible_with = exec_compatible_with, + toolchain = cc_wasm_target, + toolchain_type = "@bazel_tools//tools/cpp:toolchain_type", + ) + + native.cc_toolchain_suite( + name = "everything-" + name, + toolchains = { + "wasm": cc_wasm_target, + "wasm|emscripten": cc_wasm_target, + }, + ) diff --git a/emsdk-cache/emsdk-main/bazel/revisions.bzl b/emsdk-cache/emsdk-main/bazel/revisions.bzl new file mode 100644 index 000000000..4f6ca9648 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/revisions.bzl @@ -0,0 +1,805 @@ +# This file is automatically updated by emsdk/scripts/update_bazel_workspace.py +# DO NOT MODIFY + +EMSCRIPTEN_TAGS = { + "4.0.13": struct( + hash = "32b8ae819674cb42b8ac2191afeb9571e33ad5e2", + sha_linux = "2ad887035e3e5cac78abcaeca3b3881897f03b9919d008cbc0ef41d7641247c9", + sha_linux_arm64 = "675156bd626c7b19d4f2271ea8ffa77a235d9b0a031116632e53b374cf23754c", + sha_mac = "657cbd01e84f0a33cb7a1379baecd18a7d96883222a3a99b43919d8bb2374f55", + sha_mac_arm64 = "12ac26e298ef973207eba9332e28da375ec2ba1d32e68e0d8b32de3c886a2e39", + sha_win = "a363d6e92dcaf0024d378f1faabb61a139d9152a796f66a475a48e33e90f6adb", + ), + "4.0.12": struct( + hash = "209b886304498eff50dd835850dc5715803401ed", + sha_linux = "1c303712707a91b88f743b0ad6dd1544c289e614844396698a2510a66c5608f1", + sha_linux_arm64 = "2c503d031d2ad2b13c6e4fe09f104fe50c5d1319feaa2b3d19d4e4608435fbb8", + sha_mac = "c85830f151ec8eebec6bb2344e3eed942bc7b5dc91b146326635f9f71af459f2", + sha_mac_arm64 = "853dff1a8451b54ff7cdd95f923851dd9b58ab36873b7b600d16243a5fb6d907", + sha_win = "7b7e58fbd35a78ddf9a2a4a3f6215857bf2342942c429cdf540a2251540cb845", + ), + "4.0.11": struct( + hash = "7033fec38817ec01909b044ea0193ddd5057255c", + sha_linux = "f38e70b53be587e7c757f375b3452e259c70130d4b40db3213c95b7ae321f5d7", + sha_linux_arm64 = "42020e4db200ac366a3e91ac2fccc04ee0ffc090cd2d5986c892b27f39172bb9", + sha_mac = "4169811f9682f54ae5c9d0662d0a4dd4318abab5d3d0473fa54007f515a8cdea", + sha_mac_arm64 = "09554371e3941306d047d67618532e5366ba6c9b5bda1a504a917bfbabc5d414", + sha_win = "bd2094ca9bde5df25020a46ece7f56b622d1d22214fbd12950b01b952dd40084", + ), + "4.0.10": struct( + hash = "8103ffedfb0c42d231c6af6859a5a1a832260b43", + sha_linux = "0183f887b56c3f8d4b45826cb49856a3324afb66236ad3c13944c0fd2550cbbc", + sha_linux_arm64 = "0679f459118d80163d0712b0abda00cbc97a90cddf1dcefa9efb1bf89f67baed", + sha_mac = "02f3179f703b4d196a679897b430c1eeeb1d5f9aeba9b435b04ba3f526f7e8e0", + sha_mac_arm64 = "c744ffe06ffed55cd8dae42862b7646f15550c7decd47a48d09a474af83732b0", + sha_win = "1a66825e85fda039f57d39c98ae2bdb96a18e53745159e9599f69679be18439f", + ), + "4.0.9": struct( + hash = "cb2a69bce627bd2247624c71fc12907cb8785d2f", + sha_linux = "c6fd245138e6bbdd8349963cb4045c557d657e4be0ea44155375633c689c8be9", + sha_linux_arm64 = "872d7f5870f1bfc523a446ca66ab1b47009a96be33c398dbbb12a56597e46ab5", + sha_mac = "7efb0a6ddcb915aeca9f8685db909ae7799452894876fc1223a78d5c3288ff2d", + sha_mac_arm64 = "b97f3cda61211dd83b31ef9ea92e83d416a9422192cf3ee484fffe11e5d6e5b9", + sha_win = "e6e409ae564c041691f2fecd690431a9935401f8ab6afe284b222546887e84c5", + ), + "4.0.8": struct( + hash = "56f86607aeb458086e72f23188789be2ee0e971a", + sha_linux = "7b50b2b40f80d4531ae29a0a5b902eca41552e04815f59880a122ac81e8f269d", + sha_linux_arm64 = "d6e3ab0cdec2e6983235322f600f248d313bfce4a6a69ef16cdfdc330ff748b8", + sha_mac = "e1b2e6d4797338ed884f9d8a8419f93fc42cfcdea5e8a8b29fe13c6fd3fe7f7a", + sha_mac_arm64 = "115b207304d5471b77fc7649904111f3bb5ed7998ad192cba6cfc5fd0b2d78cb", + sha_win = "9ca65cb49287f448216c2eac12dacff9808ae827d5de267aaf2bd65f6d4f233e", + ), + "4.0.7": struct( + hash = "ef4e9cedeac3332e4738087567552063f4f250d3", + sha_linux = "60079078b1ecc4e96ab01c4189aceeff9049a1bb2544123295e9841b91a9410d", + sha_linux_arm64 = "caa10ae2d2b01eb290957e96636f0a6861e7305c8d991c762379542208415793", + sha_mac = "d588cc31b7db0d876f1d45f4d0c656d5e205d049c0bb27209cad04cfebe19309", + sha_mac_arm64 = "c0153cc053d8961e094447c3e706cb8f379c263bee64202fd78251fe018fb014", + sha_win = "7974b6e11164c2c94ddb252c9728d21de321094421f5d0856702e65c06751e54", + ), + "4.0.6": struct( + hash = "14767574a5c37ff9526a253a65ddbe0811cb3667", + sha_linux = "27fc220a9ad98d323cad73531ff563e9838c9e1205f51ee2a5632bb4266a35d2", + sha_linux_arm64 = "2d03f8eb3f81dd94821658eefbb442a92b0b7601f4cfb08590590fd7bc467ef8", + sha_mac = "c06048915595726fc2e2da6a8db3134581a6287645fb818802a9734ff9785e77", + sha_mac_arm64 = "35d743453d0f91857b09f00d721037bb46753aaeae373bd7f64746338db11770", + sha_win = "3b576e825b26426bb72854ed98752df3fcb58cc3ab1dc116566e328b79a8abb3", + ), + "4.0.5": struct( + hash = "d7f8ff5e2ca3539c33fae81e98f7c56ef9fa1239", + sha_linux = "fdd4d9d6b37e845039b207baaef60cd98fb594ea13a3e6d622c2dcd8f2a48ac6", + sha_linux_arm64 = "0007aec32eee609b91f35c32481ec060ea7dac7151e36344bbcae419907f9240", + sha_mac = "f4e5a6c57ad9de59bff73463972213a299af2bb419dafbdd3959947fa801a342", + sha_mac_arm64 = "b8b93190fa17afe32a5eaa7120b807767b1c9d6e1d4ae6b9a2c6adb231758683", + sha_win = "3b8ed9e298a6d58fee841f5c3f1d3e7b2dff104cc7df314cd329f4c05d470be0", + ), + "4.0.4": struct( + hash = "ea71afcf5a172125179a07ff1731de6e81c92222", + sha_linux = "f05dab4a6a13a5fe6972e95e918d1483e687faf468e1a653deaa8d7956a97a3a", + sha_linux_arm64 = "95a421f304a7209c6f259754ad15aea5bbbbb1838139b51837aeb2c184fa4a89", + sha_mac = "d8b44aae37224ae76572ad84b60a2adaa126826332864fb689944d5130705d8d", + sha_mac_arm64 = "ade1c1a0c2e5893c6f74079beeae8b7e2a0c3f3b7ae88891064104fd985dfc2b", + sha_win = "342cf9dfb83e95bf678d07e460e093ea61a609d34b4603d9be06d4f31784409d", + ), + "4.0.3": struct( + hash = "de2109f0e5e7278d470da11de526aed16c527722", + sha_linux = "6480f51d0c24130424c696bf83e9774f42246a0109c8d48b59f4520fdfadb928", + sha_linux_arm64 = "76b1511d550b4f47276b93581ae5122063acbca7c960703637657388cf178636", + sha_mac = "f40851b816b31b3ca3214ebf61cc152625a05c24f43e2b13c2ad9b9e5dca73c0", + sha_mac_arm64 = "6d8ac5ad1f59f71de0927eb2c595dab2f21d9946ca293434359a6db2ab06a138", + sha_win = "3702e4a518057520d4ad9e7cd63a01a829770d090551e00f19f417f55b0170d3", + ), + "4.0.2": struct( + hash = "cc8eba40de8235f9c33d92463018f87b3edaa09e", + sha_linux = "3c0e3940240709388c24a4262680c18bb1d5979f2337abe53db00fb039606c44", + sha_linux_arm64 = "21ed0c31c1fc972e3509fcb140e0323061b5f2b173fe56d1f8961df2a37e4c11", + sha_mac = "e1bd96ec790968adf583d348158375b76ee0287e348954c3393c82565475b07b", + sha_mac_arm64 = "e5bf9a5efabc114b42636abcea07a1e02d3a9406cd399a29ccbc730586dce465", + sha_win = "78010f8e2f7bb6868bb20e3fc32e24d45e6fca749c388c2d25bea9845512338d", + ), + "4.0.1": struct( + hash = "5ff495a591978fdf8a16f2d172be3616f3150d1e", + sha_linux = "7b2b64b1bc15555696f78cbcb54c8d75832222d1578270ff5f56a8024c9a0dbc", + sha_linux_arm64 = "5c046a22b933de14be6b2522b75796afffe3940a19422eee483b7f3f1a226d66", + sha_mac = "d089eba9c3cad675bbd7d3318aec166ebe5ba984a6c5291136c09c68324d9818", + sha_mac_arm64 = "c8359b334bad71719e8d29e796ca7b63891e0305987b2572eb5a2f020e34f773", + sha_win = "9cf861339327f3657281c5c8c18aa723323acffe3b3d1c3807b9d4576d097e0e", + ), + "4.0.0": struct( + hash = "3ebc04a3dab24522a5bf8ced3ce3caea816558f6", + sha_linux = "6836988f0b7ee6ce3df5192dd4375b9eee55be78847ce31cf1d2abfb00f1e991", + sha_linux_arm64 = "d4e6e04b7e2fa1bdffc9c07ab4e0a3f66bde75adb06ebf9cc66a341907b17db4", + sha_mac = "4123e9ff6a699dac303c4fe22529ae0d618c118fcd8267df590363b0fc98c91d", + sha_mac_arm64 = "4b5fb7cc4f5f8526aaa41c8560a00ad6782b97cd3894d856beb635f05a825613", + sha_win = "6b1e5aee4b4a4274712566c845888bdf4eced09a5aaa64c1796cda57cd2854c4", + ), + "3.1.74": struct( + hash = "c2655005234810c7c42e02a18e4696554abe0352", + sha_linux = "a987bb4cded4f29437e8589accac204ce3c134feaaaf251bb97d0fdf450dce65", + sha_linux_arm64 = "c7fcc532eb7ee1dc7df0eacb49128ded12e4d55a973b8a2a5215da8bb6c4027c", + sha_mac = "04f848f40bd19220a43abde2dd1012d95bf1f89c618c0f631b83d18357e2bb65", + sha_mac_arm64 = "fc71758a5bfb02b8a5c2dd21d6bfc34aa3c64698f6105e204a1f4d11f6d67603", + sha_win = "603b0515e0367ee2718b2f360ef0194663d23a91236910d5f4a90ac4d745a4f2", + ), + "3.1.73": struct( + hash = "b363a836e75a245c548b7a6a021822d8c9e4c6df", + sha_linux = "4f3bc91cffec9096c3d3ccb11c222e1c2cb7734a0ff9a92d192e171849e68f28", + sha_linux_arm64 = "e6fb8a32889d4e4a3ac3e45d8012641369251ddd1255ada132ff6c70ab62b932", + sha_mac = "8d52ec080834f49996534de26772800dee048ec9bf148bb508be95887e267735", + sha_mac_arm64 = "58e6c984c5a1fb71e0871f0c3bb9e32d41e7553260c6eeb38800a4612623a99d", + sha_win = "d76003fad2146ad1f2289e8b251fbc359406ced0857f141a41f15149c2138302", + ), + "3.1.72": struct( + hash = "7a360458327cd24c2a7aab428bdbcb5bca8810e4", + sha_linux = "be094d6dd27c27a64116e9c0165d6cade5d329f5137e56696773e98e1df83fa7", + sha_linux_arm64 = "5dba64454809d72d53c432f3c91830d69d413ebd9dcd0ce18df5a79a3af235a6", + sha_mac = "52f713c118717814d2371912ab9019a3605b7d6acc627f3842e6aa7d3ffff7bf", + sha_mac_arm64 = "644593539684f59c635c7eae2e743f5e4e27b1d665f9c71c23dcefd4c2448b3c", + sha_win = "c72623fb68f109d8f122036f25b9fc75353bd1ce28995d9920277d4be4a1d99c", + ), + "3.1.71": struct( + hash = "7ee0f9488f152e9e9cf0d4d243970e03742f1a5c", + sha_linux = "43f87aa84a73697b905d2a13c89d016af8ec66bed792f37dd5a0059529abee12", + sha_linux_arm64 = "d25f5e57b2e7557df39cd9dec3b0283fb086f66c800af3d9a3f70f36c5fc6b14", + sha_mac = "8dac015c03c4f2e594d8bca25fe35d1e4d808aea81705121e852aff0464c4a9d", + sha_mac_arm64 = "a7797c3d210eda29f88eede261fc8f0aabf22c7b05214916b5b50a1271e9f0b8", + sha_win = "dfe77eaf22278ca975519f0497c8b336c86e52461c478060418fe67b39b6e87c", + ), + "3.1.70": struct( + hash = "6fa6145af41e835f3d13edf7d308c08e4573357a", + sha_linux = "c29b4a2c6addd5aafa613768d34273a23d8fcd1753c685ff61099506710cd8d7", + sha_linux_arm64 = "b13386975023a06f19057daef3896d480229b144d1e97f8764ed2f3e0fcb7d37", + sha_mac = "bc0edcaaaa19daeda9164d38d36c5f7d7b4b4e1eb7695ad58e776336c571fcc4", + sha_mac_arm64 = "e470d5eeb570850d66a79bd4c06064b9b3a1e90c7c2101e1a444ebcd6466fe5a", + sha_win = "f0118d71fd67583ddcfd39af2ed8bec3d18152fb6aadee085ebec5bcaf4ac4f5", + ), + "3.1.69": struct( + hash = "8fe01288bc35668c13316324336ea00195dfb814", + sha_linux = "24a786666e6f48ed3c3944b44df5cf146c45cf4faece4cb2686312a3d052a00c", + sha_linux_arm64 = "48e670501d215ac5b6b2680c900c517d9028dbc4de43be5dd6f25211a3640f2b", + sha_mac = "8503fe87dd2f30abff2550e9d6eb8aadeaf30fd3c6972d635b31e67f82e155f7", + sha_mac_arm64 = "995c7b3c84458edf6b8945e81405320c64a25dfe79eaa427fc1fe9a680f56b4f", + sha_win = "3839e0a581ae7b19156f004762a8221585e9a0d6237e468b13a878d1947636c5", + ), + "3.1.68": struct( + hash = "b52d8c9150dc7d4c8e4a7a08c7a9b4006c9abe49", + sha_linux = "1f2bcb47d85eb31d90fa797b3513221adc50f0656bb37f0962a40fd0f49fcf6a", + sha_linux_arm64 = "de346e7a489aa27a442215945d154d58a0d35c608b6150b2992af0e70c04e1c5", + sha_mac = "b180711544d783121370d2c894703f99d370a864ab147730f82fd59b88fa3481", + sha_mac_arm64 = "5e9b6242b56edc8cb404cbaf6c8bd7eb1f0f168b55b580bd92652f98c5d286f4", + sha_win = "824d37e8a0845f44e4c1111e8365640eea28944f1bdbd1e9e3fea0279b68baea", + ), + "3.1.67": struct( + hash = "4ae62984ea36ef0e5bfcbd0ed9b62f04bee6426a", + sha_linux = "535b64822916c80124363a5c7a5bd0cafd703f166d5155c0ad0e464e4a879091", + sha_linux_arm64 = "04c5f959702d8c1e5c000752b562271c224dee593e81144280840fed06e36cd9", + sha_mac = "692b8fdc79a47332ba9881966c72517eedf15b2da7bed37a535dfec55e6bbd9c", + sha_mac_arm64 = "ac26753f59fa9c8e92be9c91666014ad9400c91fbd37064105d1b5fcae503985", + sha_win = "8c6af8046ed47386018e42d18b53f57fad0926306dd4315d7f09dfae844b3dd3", + ), + "3.1.66": struct( + hash = "243eae09cf5c20c4fde51a620b92f483255c8214", + sha_linux = "b10eac37c978b28da2f1f34cdd8a7759c0ed5e5a2d8eb4f4e6790209de33dbf7", + sha_linux_arm64 = "9c78a470f74c24fc1fde2c8d86583ed98847b6cbdd87cd0b36ff2d6b4799d950", + sha_mac = "64fd0603ccbf949967cb0dfd8f1b0b25e018abf8bfe813b53596c4fc78751027", + sha_mac_arm64 = "fd6250f25101957f56086d292263379880c4b3329819a021008b2058f92ef67b", + sha_win = "b24f65a1a1111d8ace6ba47b55e07681cd0620f7bf711d1018ee262c9501defc", + ), + "3.1.65": struct( + hash = "fdcf56c75a1d27fdff6525a7e03423595485ca19", + sha_linux = "b2b7de13d37c4c5126e6c6a077e6019ebacc78ef1fb1b35b9035f03975f5ffaa", + sha_linux_arm64 = "f838af6495408f3c0a14d233171b4919b62e445c62805a22dea1875cb709a116", + sha_mac = "cc50b829a21a041979e0941cfd2047d30a06e3c4a8fd9f662ecdc12a0ab40535", + sha_mac_arm64 = "db4430db6a085d6ed5284917e632541dad3ce0a9464659fb674055247ad059d0", + sha_win = "e72ae4ec3231d9a492eadbf77ff28c13efd90307a69df04234792e67a001d05e", + ), + "3.1.64": struct( + hash = "fd61bacaf40131f74987e649a135f1dd559aff60", + sha_linux = "c39de24beca60fd580f6dff0eca0e275016042a30234588b19eda82397e299f3", + sha_linux_arm64 = "61b412135630a60c5517278dc83930e06f80fa286fcc2bb6366c4f620c86e4e0", + sha_mac = "2644772be398c8095621b3d0fe9ff2d122b18b7b0963c0eb702639d94dfb8e90", + sha_mac_arm64 = "47449057c345a09aa8750be1a357c364ffea9f8a066066cb341a7a2a14bac96a", + sha_win = "eb5b59afb420915daab4c383e5f73d456cc14776dce02fdc852c46522cda5531", + ), + "3.1.63": struct( + hash = "aeb36a44b29e8ca9f4c7efbb4735b69003ac2bb9", + sha_linux = "2a38ac1ea2fe3b7169879f0f666ea278f344cbb5db6e34421b9554939559109c", + sha_linux_arm64 = "f1dd5fe4cd22e89b1f5bfd216f1245f9f40f6ea76651a7f66e925a68ff6f18b8", + sha_mac = "7e192b84aecfade22817b5b38f0c69d1f795a9b990308188d39ed1d218692cd3", + sha_mac_arm64 = "751ef26a3682f5f23dfdc1c2f80cd0604a32cad61e6373c823de774722ecb9af", + sha_win = "947f8e867e781750d374d659644897f2345a133ad3d0f9ade23afcb81eeaddd3", + ), + "3.1.62": struct( + hash = "d52176ac8e07c47c1773bb2776ebd91e3886c3af", + sha_linux = "fd303a2b2a85c4b3ab8aa29595d70c5fde9df71c5254d56ed19d54e9ee98e881", + sha_linux_arm64 = "233c0df77644472cd322b45b2d7cf709e6c338799b46f6ec5d5f39ca4dbe8aef", + sha_mac = "d9cfef7ba8f44bf21be715244d0d5f909f1ccc2a481a301b3c01d12d1babc049", + sha_mac_arm64 = "de5484d60c858aaa8b93ba6485924adffe734cf4f8296765c089900cf9ce0701", + sha_win = "7455680bf9c19a26fe4868111ac01401023b0f92e862d3cabadf7950b87707fd", + ), + "3.1.61": struct( + hash = "28e4a74b579b4157bda5fc34f23c7d3905a8bd6c", + sha_linux = "e3e20e09219fd47a0019bb3252e17db4a00ded39b39b41634bc73f840a8ff2be", + sha_linux_arm64 = "a6b858601ca09fb7bb6ddf1a5ffb1a4130454c936ad046d45fef183037828c46", + sha_mac = "1fe69a3c42fb2857b80c8e77bfab780cb212ed7cf81ae57c0c4d235504df5269", + sha_mac_arm64 = "4ba702eea409e2d4bfabc73a68919217d3993e7585d95734e3e40a3c9ce1bd21", + sha_win = "bbafba849ff072a61dd34a8ffc0c85eed20a417854a3ca751b092e3565a92581", + ), + "3.1.60": struct( + hash = "87709b5747de5b1993fe314285528bf4b65c23e1", + sha_linux = "ff5eb062165920c7cb69935d396f13e9f8ca5b13f2d7f3af2759bcacb5e877e2", + sha_linux_arm64 = "2c291942df4868d3f65b31dd964bda9736bfddcd6a7886158963f797d1b45cf5", + sha_mac = "45586fab1bad65a4293ea8939dafb5ec711ba92ae7b4d1edbaae3b4486f398b5", + sha_mac_arm64 = "8dc27416a378ad07285d380f68717cfe0db1ea6252fdb1ad012af95e4d3f342e", + sha_win = "f3147ef2d4ca48ea2624039969fd0529d0bacb63bf49ee4809c681902768b973", + ), + "3.1.59": struct( + hash = "e20ee09a8a740544c4bc6de5d4ba5f81f74b74d6", + sha_linux = "ae59d1946cb92e1651cbb904fe824b3f07b39f42fa25f582116b5aaa226fa239", + sha_linux_arm64 = "25b918d6d5ee2af7ef6b28e089dc21d2dc419dca76c8079bb638cb20459eb9e5", + sha_mac = "af175bd559cb80459749e504da314af0163291f195461bf4d376d6980c4c60c3", + sha_mac_arm64 = "e17553bca5d00b30c920595e785281627e973f9e7e14c5dc0a73c355ccafe113", + sha_win = "bb54256fc3b7824cb75d5474f887d9bf8e1e63c15b351bdfbed898aa293ee4ab", + ), + "3.1.58": struct( + hash = "a4d4afb626c5010f6ccda4638b8d77579a63782e", + sha_linux = "b188249ecb939dadc679aaf2d3d9afd0fe19ab942f91b7bc926b4f252915dd1a", + sha_linux_arm64 = "4aedc8ca641b40d9bd82d85b1dc3458fe1afc9a132da06a09384a5f89c058969", + sha_mac = "2092aa4bef3b9f88d3f343b042a417ba617d4e04454656d8f2e101ba53f854e8", + sha_mac_arm64 = "7a9a15845257629b7602d15bdf7633a8e10472b0fa9b3d9ee7149938aa2f2039", + sha_win = "9fe76b6189566d56f0cf9aecbd23a006778530aa87184a900f5662e39ce7272a", + ), + "3.1.57": struct( + hash = "523b29e1b99a61069a2fa9f9d3cc9be1c4c53d4d", + sha_linux = "5bc444132258d4404d396f2044a4a334064ad0f1022555cad5ec72804a98ba5a", + sha_linux_arm64 = "f0022413afcc1610deff10921b3f5938bf4d01eba46ce96655f2295bdd84bd6a", + sha_mac = "31ddccb68c86f0a45332982938c49505158860ed4f7e8ccef72a48382e0e3c96", + sha_mac_arm64 = "cc5fdb65b339464f99b9c731cc63c233ec9577268886a856fa49f227ca2a56d1", + sha_win = "b53555420bb9b6e31c153e4c59427000ec692be17ae900f659a9b774d1ecebed", + ), + "3.1.56": struct( + hash = "9d106be887796484c4aaffc9dc45f48a8810f336", + sha_linux = "52338cca556002251e5e7d738adb1870d14331ddf463e613af02028b64e05a82", + sha_mac = "fc5cca6a9db571ecb2974bf0d4e12f1bc6068726271464586cf7e8723004b4c6", + sha_mac_arm64 = "aed728d09d801c4a33210505874ce066269292e7809a7d6a6414146be01545f1", + sha_win = "cd5fbe94fb0bcf01badc10eace48eddbca22b34f31229e3d70c68ade7bcdd571", + ), + "3.1.55": struct( + hash = "f5557e3b7166d05bddb5977e363ec48cd06e9d32", + sha_linux = "2a1cccc2f6db801219eb966d00af78a026af7822055064092387e7eba18e75ad", + sha_mac = "f1f8f4ebd086d0cd8bd54c41c6a0e86bbb26d7b8020484fef3dba67cd9e6906c", + sha_mac_arm64 = "7533b7a1beaa692a4f1e57b91c456b13e6bcc367dc9a414cb066350e8a2058c7", + sha_win = "204984cbb755f9aa09c21b49129d908f59617a60d5aebd8742097a9a2c196abb", + ), + "3.1.54": struct( + hash = "aa1588cd28c250a60457b5ed342557c762f416e3", + sha_linux = "5c8db804abe1ac7ddaa99a6997683cf9fa9004de655b32b5b612d59a94bd59d0", + sha_mac = "e6d2b8c6983767c7ced83d40b87081a221f05bab08d0fa4f0c6de652547c8a9f", + sha_mac_arm64 = "83764751ee5c7b42529e1df168695d4a51a23c9c165f3f90693baa9bd9256efa", + sha_win = "c0a1c9f3e1dfc9bb2e600501aea999f53b34a16f82da387317fdcae7e9c2a79b", + ), + "3.1.53": struct( + hash = "e5523d57a0e0dcf80f3b101bbc23613fcc3101aa", + sha_linux = "1025c0c738fbaedf3f8fcffee23bef71c8d04a95b30ea8a69a47231fb35d1c8b", + sha_mac = "318dc0cc51a237040bc1cb0a9e7d6c214196c8a100b50d0e298cf3ea7c365dbe", + sha_mac_arm64 = "e346ef588f7cfe1e41623de2257a11ecf8381fbd3bde63a8773b3a663411ea12", + sha_win = "af7f7175ab0b3c1e9121c713764e8ac1d970b6dbee8a84602b4a69cc5ec5940d", + ), + "3.1.52": struct( + hash = "ce2097fb81953331e65543c20b437475f218127c", + sha_linux = "1c0cd572067c6348cea5e347b9ef7c5460493ca3f0d84bb991689731d0e140ef", + sha_mac = "5d9c801f9cfe81337d65969e174e0b3ef4cf2b47eb548ff4695abe3a2e69ba70", + sha_mac_arm64 = "7ce8fef7542437c85412143cb59b13b8804bb06243a106d2d342c7d9132edc8e", + sha_win = "82ed01d965f5c2765191c67da5baecd2d3ce3f82a8cf30fc47fcd56d47826cf6", + ), + "3.1.51": struct( + hash = "4f416d92fbff66ce79901cfc8263768f1b25dd3e", + sha_linux = "09af08eb562cccf85770e4b8e368acb5accb1759fe3bc436b8fad80c27f90c79", + sha_mac = "b12201caf9ff2b981349edebd2d2c022ff000c74241ef96305b831abbd4f9450", + sha_mac_arm64 = "65fbee020cf965f9216607bad56215795529cbe8cef318fadcb33141dd6b5e82", + sha_win = "65c2d005a6be80723fa795ea724d4db9960601cf7d59d880f2882ecd45c8ad2b", + ), + "3.1.50": struct( + hash = "2ce4170cef5ce46f337f9fd907b614a8db772c7d", + sha_linux = "8822050b999286694cd4ffc7d959a8ea3137e3a910121d78b5377439ede9b598", + sha_mac = "39ce2f689be348b558df9c2c988b03472d43f8ac0827624397f7c0bb56a1e893", + sha_mac_arm64 = "5a9fa8de121db400bb46e716d861283b938ad87257d7c48f99dd5557100bd3ea", + sha_win = "29096f5596d93dbf620a9547fd1ecec8f54f3f52d49b13f09959d852310220db", + ), + "3.1.49": struct( + hash = "bd0a2e230466dadb36efc71aa7271f17c6c35420", + sha_linux = "18f452f8bdcd13e0d3a65c569180d1b83579775eadb8069cb32bca1f2e751751", + sha_mac = "c5275eab15e42abb3a42bbe1cfe38ee1b852febc78f65f5605b8972a7bee672f", + sha_mac_arm64 = "10a722e2c7dcc97236f70f2d68b23a7975800ebf27ec4fdf76deddf483b1c6d6", + sha_win = "4361fc18faaf70a2dc342c219b13c39a8196e9a48e6897d08c7b0dca6ba6525d", + ), + "3.1.48": struct( + hash = "694434b6d47c5f6eff2c8fbd9eeb016c977ae9dc", + sha_linux = "689fffcb60f93a60a7bb52cc205ead43ab31f252753cfef39ae2074f6a442634", + sha_mac = "8ac2a3f32b4cba0d84ca5a1fe1db883dbfc2731432833ab5a7e6967c5f4ab7dc", + sha_mac_arm64 = "10dd40f94fe5c5f8c4efc838d1623cafe98c629d4c7872ad8c15cd7b0836f281", + sha_win = "9276435ea7c402c18572a4301d6a26426eac73414b0ed5cb3e721044a50f651d", + ), + "3.1.47": struct( + hash = "39ade279e75e6d17dd6b7eb9fba2006e61fe966b", + sha_linux = "bdc50abe5c7d4b4f14acea4ec36b270e86770cea2da4b0c393b80a692dc7eb7a", + sha_mac = "6a3a116707037d75a967a7d971894d8ace74a2a230aa50ba55e88e7cd7b94953", + sha_mac_arm64 = "b13d228e6a1c89c13a1500fff07dcf093fb01fa621d458496d4a6d7f05cfd600", + sha_win = "66a6c4f0cda4ace14a86d3e59d20685d35211854d21670632b0566ac73638245", + ), + "3.1.46": struct( + hash = "21644188d5c473e92f1d7df2f9f60c758a78a486", + sha_linux = "75cbf14629b06e417b597d3f897ad7d881c53762380aca2f0dd85f1b15891511", + sha_mac = "06f45608381203d501141be632cab960aa105626c3a0f7a48657b79728103880", + sha_mac_arm64 = "c2a85b509a91663b390f77d51fba775421d42456211466fd3757f9dede7af9e4", + sha_win = "1ed3a3f36dee5d373ebea213fc723b3eeb7d6ba4c43da6a951ea0d76f265f234", + ), + "3.1.45": struct( + hash = "2b7c5fb8ffeac3315deb1f82ab7bf8da544f84a1", + sha_linux = "1c0576765f8b34603eead6f2bd4bc77bf68ea2f0a39ed4c144514103e85bc7d9", + sha_mac = "87f63ebb2f9807435016b238bbf46ccb94c919ec0786b46463cd788634391b0c", + sha_mac_arm64 = "29e698772c0e00c21ce120dd1db1586f5c65507168babff148c2e628add6e72a", + sha_win = "891d49f8828f715ef621d55fe202de4929bbdc89b69101fd33963571458a7f47", + ), + "3.1.44": struct( + hash = "b90507fcf011da61bacfca613569d882f7749552", + sha_linux = "5ffa2bab560a9cda6db6ee041a635d10e1ef26c8fc63675d682917b8d3d53263", + sha_mac = "291b2653f7576f8354f0267047e47a5ddef11223c89d5be399d04618f13b3832", + sha_mac_arm64 = "ad1625821b49ccbbe733596223fdf99fd786470d679f2c9dfabd4a1a7b929282", + sha_win = "8b61f60ef169b1c20207361067c40192c83b96cdbdb2f4cff21dfb20b9ee528d", + ), + "3.1.43": struct( + hash = "bf3c159888633d232c0507f4c76cc156a43c32dc", + sha_linux = "147a67a3454783b8c351780ec0111329d1e6fbb1d2fcdfe1c035e1c0997e0701", + sha_mac = "d84896c6d1ba0fbd9a5e5c5830b3ac4a02da5e683e9d8c7172f4c3ffdfaa0392", + sha_mac_arm64 = "d684f0bfc655f61e76cec29fdaad1668f3d21a229fdd908267f400691468328d", + sha_win = "a335f5f5b070cf354f1ca8e0afb23c06ae5f9ffb2c501124da7fcaea09a7db6d", + ), + "3.1.42": struct( + hash = "9d73bf4bd5b5c9ce6e51be0ed5ce6599fcb28e9e", + sha_linux = "aaa076e64dd511b0d874c348f8dab80a2f9ade0887ba74845fd02c40bbf9e68f", + sha_mac = "4715002394c5d444243c77ca231883eb999cf3313c4869cf0ae288d911f80f89", + sha_mac_arm64 = "84dede714edd81362ed2a2f79b91b1bd9cd544f219f937582e616d73bf0ea7f9", + sha_win = "4c704f4a4927aa537c2815a72915b7591c163ae8f0dbaedc167e810dd2a4a83d", + ), + "3.1.41": struct( + hash = "eb71265ef0ab905620015adbfedacf88c5dbf021", + sha_linux = "493ec8bd3f3ea3d6d616de01d6dac9c2af696978c6c44d453757ab2f8a666656", + sha_mac = "bb088e7b8f83b6bae02a0992eae61351e4e97bd033f8c8937cdaea0cb961ac9e", + sha_mac_arm64 = "aaba2de03a6dcc0db90e61e5e405a52aa47124e5ef21953d052ca015ce5ee773", + sha_win = "c7afbf2dfb6040990bd40bd72c726ada36e3e6f1985c4b62db7296465dd0778f", + ), + "3.1.40": struct( + hash = "c3122846bb040798aab975f61008c37eb19476de", + sha_linux = "5501e750c92f5a54b27ee101f6816e7416f154cb4181b73fd0be3faae947016c", + sha_mac = "052d6236ce49eaf3aa02b3c4d367b5ed4fb78209c1f1e64d48beb79e9c0b7131", + sha_mac_arm64 = "c8af68f904367938bac255f5e64ed271021b289bb135dc77ab3b58b87e1ea5b2", + sha_win = "3ec21ca18b56f7d3953da2e0d468154fcaaf30b5ac663d9ad00c41540923a099", + ), + "3.1.39": struct( + hash = "1b56b171b627af0841cf8d4d8c0160c6cb6d855f", + sha_linux = "7ec6e15a2da2701243f89af7744403ee011211e59e4f0a6fd8ced544e72e917d", + sha_mac = "dad7d270207aaffb8b8ef584cf0579bbad144879ea6f00ec9a8080adf22130dc", + sha_mac_arm64 = "c5e474ca661348d0339c785e25ad81845d49dab19d5e3e84eef2393e623e0bac", + sha_win = "a04f898b9d54dd2dc95fb697a92a1b65d07102a4cc36a02dea44c448fad83472", + ), + "3.1.38": struct( + hash = "03ecb526947f6a3702a0d083083799fe410d3893", + sha_linux = "e2812859fa32b6019f688dd66f2fa48efbfb5594da9a43b876fd4fe4ca474c20", + sha_mac = "a88c4b9eeb5dedb0d9af3b6b84bd45c486de567fbeba1675edb2d7d196e0013b", + sha_mac_arm64 = "0e5d1519ccc1163c13ee93d85f70ef6a520464f59ca3795c47cc7c44ab0f5f49", + sha_win = "bcdea031961a4f3c23008d53e083770d19751dd2a2aa71cacdea8462d09548be", + ), + "3.1.37": struct( + hash = "7c905cfc1ca6699f6ccb288ae174902cfbdcf0a2", + sha_linux = "9ff44ef69d3f389adcacbb9b95331da72cffdf6e9431c8beb6ebf7aedb77499c", + sha_mac = "accfe90322b6449933c3d8e1346024e2e2e3bef7b101942294f995b2c8e1b60f", + sha_mac_arm64 = "a0461e234c08bd7ddd7a86b49b52ccc853ebe4ce0fb5b4314e9de0193c32514a", + sha_win = "e026ea2570e747d0640829c62abddcdc14a4acffe31180110971750b80042d7a", + ), + "3.1.36": struct( + hash = "adedc0750c4a89b65bee866edab24298cb8d6677", + sha_linux = "55d3cc557a83716f7a7fe121a07dbd59ed4b5d425051e22c902570e3e0ea6c4c", + sha_mac = "6643fcef0f928cd730b894f0c2c3343eeef870576e43e56428a7a8247c7bc921", + sha_mac_arm64 = "2e8d9103cd0ba7a2b143927196a630b091b981006c908d7d36995a210a04d73b", + sha_win = "69a197f6fc153d9f98ced539564683cb13ff0ef144d3d4fbddf643e33b5f860c", + ), + "3.1.35": struct( + hash = "671550b5bdceee7bdb21493714f9a815aa5149a9", + sha_linux = "9d4b5dcb719d39e59b646ecf7c409db20c5cb6b9575f5362ffb49a9e66290819", + sha_mac = "01ea06c1f4a6c980bfdc812f9599a8ef424a975c89d5c288c9e6f2fa5e5ef5ad", + sha_mac_arm64 = "f6480ee21c80fe062e0f9d8555f8bdef621601634b9bd1e5ad07b90777ff5e4b", + sha_win = "cd26088365433ce1263a11898406c2f9284e55c2c7f23b26170c2a172c52f0b1", + ), + "3.1.34": struct( + hash = "2fdd6b9e5b67d5b62f84d0501a876513ff118ef1", + sha_linux = "dd3713f077072dcdb811f934d6685187daa47c424039e31cba83633c8d1681b1", + sha_mac = "3824609ee9b7c9919e29b19775d495a16778adb981867901f4bc503fe2f65d7d", + sha_mac_arm64 = "72728637171df46e7cd22f90537dd6faf1d4809ed1befc504ff96768c82f0e0f", + sha_win = "7538d1a1e0d586bd0723f595557551b05d724a5803132949a6fafb8b056af995", + ), + "3.1.33": struct( + hash = "49b960bd03b3a9da478a08541ce6eafe792a58a8", + sha_linux = "eab02b3f4b7c076974452ba602f908a36adf597afa15b16095b441f191ede1bb", + sha_linux_arm64 = "5e15af6affcf37c9ce6c304b4aeccb87a2758e1ef029dbc996f9d77d7444378e", + sha_mac = "b8dad3cddb19c1daf9dae99020bd17b903ae9649cfc58e433ea4951e758804de", + sha_mac_arm64 = "fbf03d06c7503f091191e440b8ea577d65b3261167cdb47359d053f12888974b", + sha_win = "031f951668eaeea39bd9363abb3f514efc3401506374984fa9b1d7ba3130a62f", + ), + "3.1.32": struct( + hash = "29ad1037cd6b99e5d8a1bd75bc188c1e9a6fda8d", + sha_linux = "25fa252e9fc674d1bcef35b3a10dd85024aa93c843b8067f8d917e5151968ffc", + sha_mac = "7881714e7738eb183b5a421bb2b907e96359e791ad0a622be6e7f5690a16b9d6", + sha_mac_arm64 = "04eede7352aca4b6fc1c111a8b31d00e8aa40547c3cd062ff9be4ffe1ed98d95", + sha_win = "22c3429eb1e6051bda46e9c02c14eca1ae3749ba8c411fbd5a3b51e3b9623161", + ), + "3.1.31": struct( + hash = "1eec24930cb2f56f6d9cd10ffcb031e27ea4157a", + sha_linux = "5952523c0c58cfc7c8839c1d3fe42ff34af5d8721231306ee432063dfacf96ca", + sha_mac = "13482cf3cb29f423f2037b9dc2b9e4ff72d0a49fcd471bbaa9b76d9f86f31d82", + sha_mac_arm64 = "654a35af16be5eeb2082e68fb36190fe76de28fa2da75ac0d2197482a203f39a", + sha_win = "493c29f5a505ccd9687036ee4c580d190b1c32b286be0e751a78e68997cec8b2", + ), + "3.1.30": struct( + hash = "dc1fdcfd3f5b9d29cb1ebdf15e6e845bef9b0cc1", + sha_linux = "151d7afdfb728e1e55ed1d100e4d3fbd20925fd65f3c3b9e093061a2c89dcac7", + sha_mac = "f0cdbc676c58bce7a65572418fb1521665ed522d7d05ae90f0764b77801982bb", + sha_mac_arm64 = "fca4eaf8ff528bb9308e5e8d0cf2709713b99fc19d55c6578a6c8f3e66182f55", + sha_win = "3001101622d98b2af3e5209154f60bbe341d32f6178307c6c723e84b5fe08bdc", + ), + "3.1.29": struct( + hash = "d949f1b99a477d4b0b54d95413df3688afa69d0a", + sha_linux = "d3f274446924c27082603170fab60ba78a2fb51360e5578fab4d9b5adab0fa9a", + sha_mac = "ed224c296efd22437f298f0fe0852613b0b1d48810b1b6d87b6b7e6beb589fe2", + sha_mac_arm64 = "af9bb86a7996bbbb36820e93dbc7f537ac23070e8730439b1e49792c4fc008e9", + sha_win = "6203f80273565a2ee6734bd33ad7bc6940ef709cbd593e70d6489e96c02ced25", + ), + "3.1.28": struct( + hash = "30b9e46ddcea66e91530559379089002d8b692cf", + sha_linux = "c23426d8b6d94cea702542c39e3bcef9439425dd4bd03bcc172e291dbbe5ed0d", + sha_mac = "4cfb918fe3233a2b31e5734e85b2a365e634f4e8a83c4390e8595cb98ae6bd8c", + sha_mac_arm64 = "a47f1f09bc7bbd4952cf54445d4fbfae53623ecbfecee0506a637665c7b4ea4c", + sha_win = "4388d230871d5b1e15c2fd0db21a792ab2836f23d860475fe183c03c5db75c8c", + ), + "3.1.27": struct( + hash = "48ce0b44015d0182fc8c27aa9fbc0a4474b55982", + sha_linux = "4dc872260c8f42a8e20c8612b2255adbd466fec54cfbe37b46eca4eb34a2b03f", + sha_mac = "40c3326147b162b8357efdc72476faaa6686338cff3e176680e361c2511453e8", + sha_mac_arm64 = "7b87610de966b84353c8c1ded8e12c034b5b913c093210ebd3b26320e2ac2990", + sha_win = "39bbfcb09ba7feb214518a67b1ff6d38bae065b416b4483834e4fdaef2316f8c", + ), + "3.1.26": struct( + hash = "4f68bb2a505c727bcf58195cf4da20592a6e92c8", + sha_linux = "82d24d5619c814ae99ef7243de428600c02e96dfc49c36e44753b1fce626766e", + sha_mac = "7b645979d8901f3153507561bbec10ecfeb197dca5914228715a74b760cf7eec", + sha_mac_arm64 = "d9c647fd70588bae71303a6c923df8a44ffe63e168b375d35bf6ceda21258fa1", + sha_win = "1ad49d69634ce2d1fe04614c18060a903c102e1dbc9dfdef3a03e52c189b4c92", + ), + "3.1.25": struct( + hash = "ff6babb041d0f31575cc16d15ef82c6222ca99b8", + sha_linux = "c5ae6b4525845ea36bde89cbf4e1d03de87a2658862d76c6a53bbf8de7c67ff5", + sha_mac = "d2581aaa7207f0d9dd9949247f0706bda8561e805d67aec166ed4f3b39c3a3fa", + sha_mac_arm64 = "dbcb76036a09248c2a839872c27b87b6d4ccc81e57add4e2a6f5e560a2c530fc", + sha_win = "3a86d98d934456a74ed06388c1487d95a0d5a3f31777636453f22e61d57d7fb1", + ), + "3.1.24": struct( + hash = "54217a0950bb1dafe8808cc6207d378e323f9d74", + sha_linux = "20e8e5bd745e3ad69c03bb877091d2fbb0c7db1eab309de8f185e9821aea40f4", + sha_mac = "cfb897a980dd51fceb02ff143ad0fd8e5d299db640c5646d1547d522194545f2", + sha_mac_arm64 = "e87b0727343051312f82a6653cad4682a518dd9cb6575844c0cd6505d520fab6", + sha_win = "a0ea07f9014a912f13176fdbbc1ee7ab08104d45e7ca7e1c237505579b63d530", + ), + "3.1.23": struct( + hash = "bfd5e63a44ba4c8568cd8ac87c27b35e40732bf4", + sha_linux = "3b8d9e163d6afc8569deca0ba1d4042f80da7a31e23cee006c3faa9cbf2fbc31", + sha_mac = "fd1c79475e47fd2f06ee9ba189e68309e443c2d3c56fd28163d1cd6f77047075", + sha_mac_arm64 = "66e57ee0962ec31056674b5681f91bd62f85b0bf1238a8d5b160660c0bf47292", + sha_win = "7c30b281abcc0ffb9e7575197f1ac0598a94c6cec36547b81554a97b792a9e75", + ), + "3.1.22": struct( + hash = "990cee04a21caafc75955d736fb45791a7f2aeee", + sha_linux = "a310ed9f16c97a91c72564ca5f85c412cb99429d8001825663fda1b28c00346e", + sha_mac = "b19afaf414178781c4c91ee711ec4d9063b9736719e45ca2e8b45c2258df16be", + sha_mac_arm64 = "7c8212abf77f0307b6ff848bf9c6212f870506df6d074349f76401f30f9fcefe", + sha_win = "2c0cfe267d47f390d7e35a83545b1d5043e4a7fb77b838ee19b0fce65035f55d", + ), + "3.1.21": struct( + hash = "a16a8bca2466eb144f7c93fa899c0272c8815dc3", + sha_linux = "7045ddb3b37a2cc63cb1cf976019a6a3b7f8dbdc71254db0eee5b0452f94e9e7", + sha_linux_arm64 = "2852c8b108ec748d52d31dab3f4854bc6022df008019daff1c7e31ac00363b3f", + sha_mac = "2a8d3d3ad721fec81ca1a4a581e4183b6e732e9905beb874531851846a05a367", + sha_mac_arm64 = "cf788a7bdc38bb40d01f94b2d46acafb0e2f02d8ee3b3d69541c114e467ee37f", + sha_win = "81518bba13f41717ffe6990b6d4a5af635d0c9d0f71a8d3bc0980cd0bc8f5f66", + ), + "3.1.20": struct( + hash = "d92c8639f406582d70a5dde27855f74ecf602f45", + sha_linux = "3b606d133489aac8cdfff4f99ff14a35563b1fafe658aa23f83694f77ed9467a", + sha_mac = "cc9ea1696bdb3f28778bac1cf4587a34e90830e1c64976cd205fd73e77566cd8", + sha_mac_arm64 = "b976410bf4fa1af9896be1c736634bfb56b2ef0f3386cd3cf39616ce47445cc0", + sha_win = "1e6806ee240ab838ae7eee618c57efc793195c62e4d167136507efcfa66d6c6d", + ), + "3.1.19": struct( + hash = "4c3772879a04140298c3abde90962d5567b5e2fc", + sha_linux = "18d4a5bb93371fe1d4586db9804f673fff0c510d98713ec25b6bda1a8457230d", + sha_mac = "6adb721340cb93b7a3efafbfd1d283842a39bb6f1390630b0806c8af26b66840", + sha_mac_arm64 = "429c9e3a79d32380f3dfee52b1001963edaa2e3035fce9f52ca87b08e1a2f26e", + sha_win = "0368eefb28f42799ce897020d0d10a4a27e1b69b650575d94deb268e402a3632", + ), + "3.1.18": struct( + hash = "49d45744895c7d7e28acd94a385d7ee361653b4a", + sha_linux = "6ef373c4ff3cdf33d7beecea47d4eaee7795693f8ca9469f33785cb9c54f40bb", + sha_mac = "ad0e645abdb6d3f0b6c6ad0ee70761010a712949c9b0b193aefc78ecbc3f1710", + sha_mac_arm64 = "68d0a1ec3e83e0415e24133c59e64206b83686712434c8c2e6792547cf654b1c", + sha_win = "96829a228f7c08fabd37833f7361614785aa39aa865beef06890ee8ede58dc66", + ), + "3.1.17": struct( + hash = "d27fef2070c86a218965da8b8b5df8b4425aa3bb", + sha_linux = "562b3ba75ce77a917317bc697febb38194e85cfe07f4fec308c3b29c621f8f13", + sha_mac = "8a2bee8ea434049e40663a6d78d1c3584e5c32196fd85d6a10f3192d2e3aba4e", + sha_mac_arm64 = "5f60d3f351d06d862e853a294642d24243d6cb197e34c2f2602d80555c2eb014", + sha_win = "90b2ade825e07bb05831090dd64b5f5b01a4169a84a3ddec85fcd60be3b246a5", + ), + "3.1.16": struct( + hash = "fb1baf00423818052359cf9126e94bc71c39feb5", + sha_linux = "bdce7e58833069a98d7e0b4fd9d6fea7394770ec10339cc95ed9fe52ba39f3a7", + sha_mac = "d05f4e997324d7f7d8561436677687d296893d6414f53930184fab272e4c6158", + sha_mac_arm64 = "36ab8da30698558a567c5c1c0e130b59f08cf4b29c9c5242f4ea60b449ecff17", + sha_win = "e1324c22c914ab7f62fe6d38a550de25b2232a723c80393fa8884a260c07766d", + ), + "3.1.15": struct( + hash = "568a46a9fb7e1f1686a6f7216b3dc976f28d2a79", + sha_linux = "737db513047d12e95a12f4fbe05314f3af79ac955d1ea43fc83626337e307edc", + sha_mac = "f8993371a1ff713203023f0283054a31df5342ca287debc4e16d04d97e069aee", + sha_mac_arm64 = "c61a8efa8543a6c44e394a0685e7d4facb4c7dbb210c4c32d311b0002c4dec99", + sha_win = "235592467a0be6a537e03fb587aaee230aa2c889f2785cb9754eb44bfbf747ed", + ), + "3.1.14": struct( + hash = "ade9d780ff17c88d81aa13860361743e3c1e1396", + sha_linux = "e2c43068fb1985592db42183a13f85bbd9518b3747746e0003d70c7d770a0b2f", + sha_mac = "567e9548f3fa7c1aa717821af4aaa7849a0f7217cb55eb7f66a06c898808fd96", + sha_mac_arm64 = "df8319aba8bc0d0c40ebec3c8f45e507c2a51a57df24826d4cab6f6cd75017ac", + sha_win = "6bfec6bf6a01e483a57e91f7223340a425f6ff711cbd32a08ed78002810d7882", + ), + "3.1.13": struct( + hash = "bc44364b561cfde15c243a54e3b96ea12d7ea284", + sha_linux = "290f04300465cbb7c8e920f9986128b3f287b14b93627b0c6d069d534860c1b4", + sha_mac = "72b209a3e5800be155cf5b29bdaceb18aefceeba68f35ac719a483bd27d85705", + sha_mac_arm64 = "2bf90ed73454f58b810e09a776a34ddf7395f9ee45580f3a8fea53f74ba7ede2", + sha_win = "07fd730289c26f72ae4037fd25f608f6b9d36f1950677229b6c7d392957db3d2", + ), + "3.1.12": struct( + hash = "a8c3b314d61e2bb98581d522f858132b2fc21488", + sha_linux = "ac8ae46b2fe2fbef07077cdeefc8288d2a73e3189958f32b36f2d17d868275d0", + sha_mac = "c33afddd7c8f7a5293cb427ef26eb65f51fa3121d0577568824174227aa37ef3", + sha_mac_arm64 = "253feff779385d2499764cd988175446e21db8cbb9952746e96969c2a763924c", + sha_win = "04015fb6a1b4ad4d7c16587a7eeaabf19c5b35097f3e28efa029c0c67547067c", + ), + "3.1.11": struct( + hash = "8c3a799341c01148692c52fda73bbba5e89c5727", + sha_linux = "ba52cfd784362530866c9d554ddc62cfa3f0690f44007c0b3b36e189bb579d5e", + sha_mac = "c46548425e0bf4acd3c4275aff6a463c90ff1faf283ae7f5237d8c17bf84d779", + sha_mac_arm64 = "c5ae40c468955ed02b86c54061278d2b4075b1230612bae5910f836aa9c200b3", + sha_win = "74481a1998236fd9d296f367584934d5ab8bbf174446ceb647f714031671de98", + ), + "3.1.10": struct( + hash = "8bd05c7221b4ce34d4bedec40b672d94e681a765", + sha_linux = "f5a937383b5c9fa15071a31d679a2ddd5c03bc8952cbbd5bfbf7c0a86c2dae5a", + sha_mac = "e73491f2787cbda75e718c3947916b57259164eddd9b2db16b9c876d3deb16a9", + sha_mac_arm64 = "d7485ce3b13f183484af5163d7bec79ece9a1fdc5845f8152e36270e6f90cfd9", + sha_win = "dd75061405bc902ecd983bd3e4cfd6931a866e1c9de602c4458280cbeb271720", + ), + "3.1.9": struct( + hash = "edabe25af34554d19c046078f853999b074259ca", + sha_linux = "89fa75c981e47ad19942b8236d2604b2666dfd516a08626aaa1bfb0d657c87bf", + sha_mac = "6c7f59dd84d1484f1dfa041d71cc79fc97db8d15834b6220e5868bd9bd373a24", + sha_mac_arm64 = "13a258de0daaa3c09a53e21a67414cbf5fa5706f955767fe791a059ed5eb90bf", + sha_win = "0857b03919b948558f9a57d15cf2b220852cc070359c386da0e6e4831c7ac5e0", + ), + "3.1.8": struct( + hash = "8c9e0a76ebed2c5e88a718d43e8b62452def3771", + sha_linux = "6b170777eb523e62972ad458e533b1853cd0c4e02f6f2cf4cd68e109499ccd9b", + sha_mac = "ede01fe160c3b8443f53f94dbad530e0e7e8197a1b874c7bb9038b187279080c", + sha_mac_arm64 = "9ecc8678f948875e7f64defeababc0320f98e103547f395c390c01d76e5a1d64", + sha_win = "039d27d4ae43b50d0858dbc4dcf412f572351e98e1056d7fdcdf2aab1740557e", + ), + "3.1.7": struct( + hash = "d0e637fe48197587d981f79e8114757731d0c2a9", + sha_linux = "d941738a3c755d6d530bab66d38325515b9dbaa588d2db2b8a63b2a8a1961e52", + sha_mac = "597aacdb25d422094427014d3a97e8b91ec80df2255a66e0986414bf71aaf37d", + sha_mac_arm64 = "a0b2db0269c55e854d1007a59f95b8e5f14d32309e76f985ea9afe481b2bd6e6", + sha_win = "cb44339db27b694862efb37539d41eaff7253c93c0882cf7d9aaf4afeaa82912", + ), + "3.1.6": struct( + hash = "8791c3e936141cbc2dd72d76290ea9b2726d39f3", + sha_linux = "f43dfe707dff18fa7a08dbfe2fa3f8d46afb65ccba9bbe554465d83d5d80e388", + sha_mac = "13a01080ff042560b9a9b1b2c9fc5f8c154710bc41db8bbd907a9e53c286afd0", + sha_mac_arm64 = "7ae97e85593b037c345b539e7f8b8952b82c001be982219060c83f0834bb6827", + sha_win = "e7005c0a5439e532cb64f34ba90405792288a1ed8845cdafcedd3de5af6fd3f2", + ), + "3.1.5": struct( + hash = "2dee36c7163f7394ab9341854ef5281501dd97d0", + sha_linux = "6641703b7da1805aa5a8488d231ae7fedfe27f1a5a33e7d05a2ee5902ab84180", + sha_mac = "9dba57f09702a7eed53f3f71cdd8a4ed1202ca5a5f4449249c2d98a285b26f75", + sha_mac_arm64 = "0093b4d47c9eb9c8bab5b3048c68855255b5e5a8bfd78f4183424009489327e6", + sha_win = "849edc42b494f670df4763dbc8ebbb5464ac28787482668c3f6e27588a77cb3a", + ), + "3.1.4": struct( + hash = "39e60dda6945cfcd6487725bdb1361ae7975173f", + sha_linux = "4a57c0d60eeb4e021de61c8497f0b595a0a9db0235f1640a528de752409f4fcf", + sha_mac = "f28a9a4f42f67de1d5c4d8a288f29e5082bbf4fcb172e0c6e248695163372478", + sha_mac_arm64 = "be35043edad7a7022f7b174e8efc90e2db54ba4fd71288760bea4db082835f56", + sha_win = "d97ff247bdfc7e839610cbcd87d30a65018f964d183d5b852b6021d43c5d199a", + ), + "3.1.3": struct( + hash = "2ddc66235392b37e5b33477fd86cbe01a14b8aa2", + sha_linux = "8b840819eb88f9178c11bad25859ce448a0559e485823a863a6add21380636ca", + sha_mac = "0cb3f9bfbcc744233eae9d20036155738409405eacf8a3d4f9beefc5919d809a", + sha_mac_arm64 = "ee2772f380419df17d154e00388a16bcddc78c7af035c16a2ee534d6ecf099aa", + sha_win = "c0549e1dbaa581ae66934c38beebd4250cd450cc2778e9a602cd9431bc81bc37", + ), + "3.1.2": struct( + hash = "6626e25d6d866cf283147ca68d54ac9326fe399f", + sha_linux = "4fb53364a2ba1de8978445aa26b2204bfd215b41da5d7df04f231040b197010a", + sha_mac = "a8e347accb1ff402d96a128912ac8cda1731611c9f89095fee0ad39a6a18bbc3", + sha_mac_arm64 = "4374f5c852d0403b0a3b0e9dc8a3856a340e9d82ecf0f20aa8b36c6179d31fc8", + sha_win = "e96f6ab8252fefa42f461676311d4c4e2d96fdc2e876ece07d9d7a49ef31aef0", + ), + "3.1.1": struct( + hash = "5ee64de9809592480da01372880ea11debd6c740", + sha_linux = "ba94c5ecabacbedc89665a742c37c4c132c739aea46aa66fd744cb72b260c870", + sha_mac = "8b5f8cec55af0e6816a08d8d1e8b873f96d0e0504fdd6e8deb2fc024957d1aa7", + sha_win = "6cbe976aff6155cf1c48707f0520b5aa6a7770860e9b1964bfca3e5923ce7225", + ), + "3.1.0": struct( + hash = "562e3a0af169e6dea5e6dbecac2255d67c2c8b94", + sha_linux = "0714344e32e244e6d44d9ea75937633ab1338e417a232fb66d6dcd7d4b704e8c", + sha_mac = "f6c1cad729ed799e1df09eacf5aa80cce9861d69ec6d9581c17e4ba8d9b064ce", + sha_win = "756c41cbcab4ae6077cca30834d16151392b8c19ab186c13d42d7d05d6d727cc", + ), + "3.0.1": struct( + hash = "91b7a67a486d2430e73423a38d950d8a550826ed", + sha_linux = "25fd430268596229c4ac38e188d7c2b31f75c2ec8172b1351d763e37c830c6af", + sha_mac = "52ec2204115b727cc4de38b5eeae147eead12b299b98e5a88653d12958cae4d4", + sha_win = "0e072736b471c9a07cdf534ba4da46b3b6545b63c8a6cbb0ef7d544251e15092", + ), + "3.0.0": struct( + hash = "7fbe748230f2ce99abbf975d9ad997699efb3153", + sha_linux = "10646b64daea15354f14f89f7e79937f420b77f31bda7c4b174de2474835950f", + sha_mac = "ebb17bc91c6a72ca06d17337d27aa1a2be4c9af4c68644c221712123f663b8ab", + sha_win = "0d4f2ff5d88a8eef5ed769ee4ffc5d5574143911d2e0079325cdc5206c9e9bb1", + ), + "2.0.34": struct( + hash = "d8fc1b92dbc0ce8d740a7adb937c5137ba4755e0", + sha_linux = "a6304e3a52c172eb178c6f9817d74aa3ee411e97ef00bcae0884377799c49954", + sha_mac = "975ae11000100362baf19d161fec04d82e1f7c9fb7d43c43864ddd65a47f1780", + sha_win = "8167a44bb895a0fdc153836bed91bf387be57f2dc1b8f103bf70e68923b61d39", + ), + "2.0.33": struct( + hash = "cef8850d57278271766fb2163eebcb07354018e7", + sha_linux = "958a0f4b1533e877c1a5ed3c13cb8baabc80e791d45858c2c94ac62325ada953", + sha_mac = "8ecb248653d44c3748e23c089cb9f0e3d4eee7cda13fdec27ec0113b896e34c4", + sha_mac_arm64 = "1ec6f3d7afa5e10f3af996e26d9c3a66f02ae49e48e512a4b5d6b7165c61290f", + sha_win = "6b6b2831f8b338488f787b4a8c34700277bf3988358dbb54426f017155603ac9", + ), + "2.0.32": struct( + hash = "74646397e3c5010824ad60d1de86c6bcbe334dff", + sha_linux = "236b3954e71d3bb30d347c655b9f47f2a091aa2e61046e1912c8da90152f4ca1", + sha_mac = "6a03267574534948e3b041e5d3e31bd757751ef17912eb6e90b96a47da03afb6", + sha_win = "2f8fbf0db097d67d0c364946faceec27c569c5c2d7b22068eef8db55645aba36", + ), + "2.0.31": struct( + hash = "597724ca3f6cd6e84bea73f1f519a3953b5c273d", + sha_linux = "ef70c7733aa0df41cb4c812f5a89bf6b2ed13ca8aa252872396c0be271156d9e", + sha_mac = "77e57c3e98758488ef676f8f58a85faa0bd65a1d326a91771ad83d7cb0e373ca", + sha_win = "541605b740afccd08a39f5ae815978f699f350d621a1b2dfba0763970b56aee4", + ), + "2.0.30": struct( + hash = "c69458f1bbf3ef5b8da4e934de210659cc9bca04", + sha_linux = "ee1c8270096a728966ae38af548047d1f64c18318e06ba75952e657136f02537", + sha_mac = "574a5819308eba6c8be6a780e26dff415a0e7178d3f44162dd8dca87eb40d4a7", + sha_win = "242d244f4f5f5af08e6e6ac9c143aebf1b7bb2a23fd2992350731e59acfee07c", + ), + "2.0.29": struct( + hash = "c2369dc425725fff86ba90a9007a4603ddf7941b", + sha_linux = "7df4a8f3e25820becadfa7f1fe0d78e764102ec3ee50c474ca1634ed90d48890", + sha_mac = "d998521ba95882a27792f0113ea2c972fbb891c240649f4c994f0260c0e1a213", + sha_win = "c64aa3f2af6503f6711b2322986a45784e00d7c7fe13ec3f5c4f740472d065a0", + ), + "2.0.28": struct( + hash = "866055ea639d64dfedc625d28ec981e47ce37168", + sha_linux = "7dca7704eb14e367bb67e9abc9eaf59e75f59b74e32422e04556de10897a9a86", + sha_mac = "370f76493e3805e2538290b698a381f04b6d78a77771e48fc0099cf89dad985f", + sha_win = "e913c50ea5f196d36971f7cf5b1cf9a9ca27ce0818aba56be3a66e31e95c0e5b", + ), + "2.0.27": struct( + hash = "1ac46e3b84955231ab4a4f4cbe0c7ac28c86b8cc", + sha_linux = "3e124e278de168cf22e03b93b2f14a65a86777e428cdaab7e5e1c2289eb41605", + sha_mac = "388262b9e1042ef9a3a1945d5a23dcd634c8042a225e8fdf80bcc2c1cb7e05cc", + sha_win = "762276a332432e717afb988310d21ae10e36facc1e05bfd77042a364fb43cc3c", + ), + "2.0.26": struct( + hash = "823d37b15d1ab61bc9ac0665ceef6951d3703842", + sha_linux = "996e16d368a99dd4dd12126acbcb8bea9a607b5257cc7b747c4afc2f036fd8cf", + sha_mac = "8b2d7e84cc449531e88034beb31da89a0b61ccaeaa1584ffb6da7842c6348fdc", + sha_win = "095e772764d7f8c0f8228bda4b8500ae43aac2303567da5cdc9f8623f70a5743", + ), + "2.0.25": struct( + hash = "f6f001b08fbb67935379cf13d17fd9bfdbaff791", + sha_linux = "06d8e2f3d4f4b35a57de9c15e62a559c941cfba1dd7ec02353d815904d912c3b", + sha_mac = "6541bf3a648aae7df84de424ff392dd1513ab5450203c84f72a6a03e321a301b", + sha_win = "267fbfa809ec0eb911c1962b1b9768675cb82228e694a5f9ef570232ee71db76", + ), + "2.0.24": struct( + hash = "6ab7fc5622a67e6111d07c4ba61c8d3c8fc33ed2", + sha_linux = "e5daa0e87f3afd2197e7975297cb0cd4c245edccb964ca5f1f32ee7d985bf440", + sha_mac = "e4b7f2a7b71d6ac4610ee7b14743570e0dfba3668dc6b4f984cbe7a135888527", + sha_win = "db2aad422a3ca2295be6101b0151eeee55dcea29ba1f31b4594c02ba46591cbe", + ), + "2.0.23": struct( + hash = "77b065ace39e6ab21446e13f92897f956c80476a", + sha_linux = "7713a9a5572d839aea9eaa84a7c4779d11c6c8818ee64a0f443b62081fae6d47", + sha_mac = "b793087462d581e25c8c267fca9d30519619e3272480862a56cc316a32c7afab", + sha_win = "b8885cbb41a39e4734861462e05ee58c7ff7562016a842bcee2603f229940e8b", + ), + "2.0.22": struct( + hash = "6465a9acb820207acf7da44661a7de52d0a1ae3c", + sha_linux = "c079781124e763c53c9fc73781fcee40296ce3314276836bc694f07bd331a859", + sha_mac = "ab95574dfc685b0300e37bea36aba413045bbfa2ab06b93eceb881670489eec1", + sha_win = "ba142e7e380596cba763e3a414de6511bcb86de48e4b48cf393b1ea449a24aaa", + ), + "2.0.21": struct( + hash = "72f4ec97fbc7ec16c15ae68a75b0a257b2835160", + sha_linux = "741264f33f96ba4b785ed0b133861ebdfefbaefab76ddcfe7bde6522829d6f70", + sha_mac = "b07c0d65ee7e2799170c6f3b2aacebfe070c2e4975088bcd1b3a4140fecd8418", + sha_win = "dc3cbf47aa4be52a92526f1790a013734ecbd407f7f36286ed0283c96355999a", + ), + "2.0.20": struct( + hash = "e0c15cd14170f407a9eb27fcbad22931dc67feb7", + sha_linux = "a196504fd1095836ca3961208338ff9e292be7729ea529bc19800aa7c966d34a", + sha_mac = "6cdbf17ed61486b38ea79d3f31d74483e7388d1e7468518dccba3f24e0ddd4c4", + sha_win = "4d22a32c219dbe18c55b635d014b9eaf7da60536171b7af37d9a8099fd33794b", + ), + "2.0.19": struct( + hash = "9b9ff2dabfb4a7fbacbc004c0bead12a60f9d05c", + sha_linux = "bd7c2a38ac88d219a1ab5003ddbf8fdc66a6ba55bc69f99077346edf2753b4ea", + sha_mac = "6cc44029c9052855a55938eb6496b5659da4b1ce9cb34502b740af5993a94f93", + sha_win = "a1fa8b1c387b9307f9b87c43dc83c0ff1bc04b9f29fbe4f39aff2dd946ca4b70", + ), + "2.0.18": struct( + hash = "c2ac7520fad29a7937ed60ab6a95b08eb374c7ba", + sha_linux = "e9f777de592f606b10104b2efe5179a7a8f44e3a9dffa1e3aaf73e05eb8893d7", + sha_mac = "86b1dd62e424e3788bf132292a694a25ca9b0875d06f50d0f5d424593697452c", + sha_win = "49ce07bda6be070251db44a08fcc05cae21ffdbd7522423a0c79bde635e87e28", + ), + "2.0.17": struct( + hash = "f5c45e60392b82f603e3a8039c62db294fab02d2", + sha_linux = "b40a4874057e4cace600f8ee9787dcbe236e3dc5b2fff5c2ecb0e867e426f99c", + sha_mac = "081f61abf7d5ac0ec31aaffc5550013d4093ea4ea39520b7a32b7448d2a6ee70", + sha_win = "45d06e597e6a1185a76200bd0481495e7298800a4805045d9cdbcce6311c91b2", + ), + "2.0.16": struct( + hash = "80d9674f2fafa6b9346d735c42d5c52b8cc8aa8e", + sha_linux = "e527638b224d9a30dc7e5fa4b9bd2eb2ab76ad306739ba8cacf5a5e333933a2a", + sha_mac = "061020eb0e3ee0611dc5a0008ccc7778168a4f838d49ca41c0aad8c52c1a01c9", + sha_win = "99364ed0388f928e0594f790662bf3a30c2894b0eff81797e1b64f62128561cb", + ), + "2.0.15": struct( + hash = "89202930a98fe7f9ed59b574469a9471b0bda7dd", + sha_linux = "7ff49fc63adf29970f6e7af1df445d7f554bdbbb2606db1cb5d3567ce69df1db", + sha_mac = "e35cced1514ad0da40584f8dd6f76aabf847ce0fa82c6dc8dd9442fb74ed6d0d", + sha_win = "31d5f8107c87833cea57edc57613bba4b36b16152772f744c5ad204594b4e666", + ), + "2.0.14": struct( + hash = "fc5562126762ab26c4757147a3b4c24e85a7289e", + sha_linux = "e466cd47ddd4bf0acd645412fdf08eda6d232484e48e5a2643e08062a7a4cf56", + sha_mac = "1c554c08459b7025638ca4eddba0d35babe8c26b202a70a74e9442d577896211", + sha_win = "428bc6094671937af96f26d803871fc5cd83d4d2b1c1df45fa6873a9bc5cac51", + ), + "2.0.13": struct( + hash = "ce0e4a4d1cab395ee5082a60ebb4f3891a94b256", + sha_linux = "8986ed886e111c661099c5147126b8a379a4040aab6a1f572fe01f0f9b99a343", + sha_mac = "88c91332c8c76fed14ebf0edc9a08f586012f54f04ad61e5b1b6d02bf96bdeab", + sha_win = "9fb3b945b7bd56e34d17ec04de4cce475f26c49d161aee9d9c0b8b1434591f88", + ), +} diff --git a/emsdk-cache/emsdk-main/bazel/test_external/.bazelrc b/emsdk-cache/emsdk-main/bazel/test_external/.bazelrc new file mode 100644 index 000000000..fbd75a7ea --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/.bazelrc @@ -0,0 +1 @@ +build --incompatible_enable_cc_toolchain_resolution diff --git a/emsdk-cache/emsdk-main/bazel/test_external/.gitignore b/emsdk-cache/emsdk-main/bazel/test_external/.gitignore new file mode 100644 index 000000000..3e67f7873 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/.gitignore @@ -0,0 +1,4 @@ +bazel-bin +bazel-out +bazel-test_external +bazel-testlogs \ No newline at end of file diff --git a/emsdk-cache/emsdk-main/bazel/test_external/MODULE.bazel b/emsdk-cache/emsdk-main/bazel/test_external/MODULE.bazel new file mode 100644 index 000000000..78fdaeb7d --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/MODULE.bazel @@ -0,0 +1,6 @@ +bazel_dep(name = "rules_cc", version = "0.1.1") +bazel_dep(name = "emsdk") +local_path_override( + module_name = "emsdk", + path = "..", +) diff --git a/emsdk-cache/emsdk-main/bazel/test_external/MODULE.bazel.lock b/emsdk-cache/emsdk-main/bazel/test_external/MODULE.bazel.lock new file mode 100644 index 000000000..f3742587c --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/MODULE.bazel.lock @@ -0,0 +1,3696 @@ +{ + "lockFileVersion": 18, + "registryFileHashes": { + "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", + "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", + "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", + "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/source.json": "9be551b8d4e3ef76875c0d744b5d6a504a27e3ae67bc6b28f46415fd2d2957da", + "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/MODULE.bazel": "e4529e12d8cd5b828e2b5960d07d3ec032541740d419d7d5b859cabbf5b056f9", + "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/source.json": "80cb66069ad626e0921555cd2bf278286fd7763fae2450e564e351792e8303f4", + "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/MODULE.bazel": "f19e6b4a16f77f8cf3728eac1f60dbfd8e043517fd4f4dbf17a75a6c50936d62", + "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/source.json": "abbb3eac3b6af76b8ce230a9a901c6d08d93f4f5ffd55314bf630827dddee57e", + "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", + "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", + "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", + "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", + "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", + "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", + "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", + "https://bcr.bazel.build/modules/bazel_features/1.21.0/source.json": "3e8379efaaef53ce35b7b8ba419df829315a880cb0a030e5bb45c96d6d5ecb5f", + "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", + "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", + "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", + "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", + "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", + "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", + "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", + "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953", + "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", + "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", + "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", + "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", + "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", + "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/source.json": "41e9e129f80d8c8bf103a7acc337b76e54fad1214ac0a7084bf24f4cd924b8b4", + "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", + "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", + "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", + "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", + "https://bcr.bazel.build/modules/platforms/0.0.11/source.json": "f7e188b79ebedebfe75e9e1d098b8845226c7992b307e28e1496f23112e8fc29", + "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", + "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", + "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", + "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", + "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", + "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", + "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", + "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", + "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", + "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", + "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", + "https://bcr.bazel.build/modules/protobuf/29.0/source.json": "b857f93c796750eef95f0d61ee378f3420d00ee1dd38627b27193aa482f4f981", + "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", + "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", + "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/source.json": "be4789e951dd5301282729fe3d4938995dc4c1a81c2ff150afc9f1b0504c6022", + "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", + "https://bcr.bazel.build/modules/re2/2023-09-01/source.json": "e044ce89c2883cd957a2969a43e79f7752f9656f6b20050b62f90ede21ec6eb4", + "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", + "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", + "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", + "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", + "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", + "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", + "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", + "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", + "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", + "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", + "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", + "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", + "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", + "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", + "https://bcr.bazel.build/modules/rules_cc/0.1.1/source.json": "d61627377bd7dd1da4652063e368d9366fc9a73920bfa396798ad92172cf645c", + "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", + "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", + "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", + "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", + "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", + "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", + "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", + "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", + "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", + "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", + "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", + "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", + "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", + "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", + "https://bcr.bazel.build/modules/rules_java/8.6.1/source.json": "f18d9ad3c4c54945bf422ad584fa6c5ca5b3116ff55a5b1bc77e5c1210be5960", + "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", + "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", + "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", + "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", + "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/source.json": "6f5f5a5a4419ae4e37c35a5bb0a6ae657ed40b7abc5a5189111b47fcebe43197", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", + "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", + "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", + "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", + "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", + "https://bcr.bazel.build/modules/rules_nodejs/5.8.2/MODULE.bazel": "6bc03c8f37f69401b888023bf511cb6ee4781433b0cb56236b2e55a21e3a026a", + "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/MODULE.bazel": "42e8d5254b6135f890fecca7c8d7f95a7d27a45f8275b276f66ec337767530ef", + "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/source.json": "80e0a68eb81772f1631f8b69014884eebc2474b3b3025fd19a5240ae4f76f9c9", + "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a", + "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", + "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", + "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", + "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", + "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", + "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", + "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", + "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", + "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", + "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", + "https://bcr.bazel.build/modules/rules_python/1.3.0/MODULE.bazel": "8361d57eafb67c09b75bf4bbe6be360e1b8f4f18118ab48037f2bd50aa2ccb13", + "https://bcr.bazel.build/modules/rules_python/1.3.0/source.json": "25932f917cd279c7baefa6cb1d3fa8750a7a29de522024449b19af6eab51f4a0", + "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", + "https://bcr.bazel.build/modules/rules_shell/0.2.0/source.json": "7f27af3c28037d9701487c4744b5448d26537cc66cdef0d8df7ae85411f8de95", + "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", + "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", + "https://bcr.bazel.build/modules/stardoc/0.5.4/MODULE.bazel": "6569966df04610b8520957cb8e97cf2e9faac2c0309657c537ab51c16c18a2a4", + "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", + "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", + "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", + "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", + "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", + "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", + "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d", + "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" + }, + "selectedYankedVersions": {}, + "moduleExtensions": { + "@@aspect_bazel_lib+//lib:extensions.bzl%toolchains": { + "general": { + "bzlTransitiveDigest": "nrCBrZBQH3Dq30TXMpPMV6lWpEDozX0S0kCia4Lrpj0=", + "usagesDigest": "1c7PNX163TGNqWzfejRnWpH/hiT4/GRG0kYxuez0Uz0=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "copy_directory_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "copy_directory_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "copy_directory_freebsd_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "freebsd_amd64" + } + }, + "copy_directory_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "copy_directory_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "copy_directory_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "windows_amd64" + } + }, + "copy_directory_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_toolchains_repo", + "attributes": { + "user_repository_name": "copy_directory" + } + }, + "copy_to_directory_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "copy_to_directory_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "copy_to_directory_freebsd_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "freebsd_amd64" + } + }, + "copy_to_directory_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "copy_to_directory_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "copy_to_directory_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "windows_amd64" + } + }, + "copy_to_directory_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_toolchains_repo", + "attributes": { + "user_repository_name": "copy_to_directory" + } + }, + "jq_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "darwin_amd64", + "version": "1.6" + } + }, + "jq_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "darwin_arm64", + "version": "1.6" + } + }, + "jq_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "linux_amd64", + "version": "1.6" + } + }, + "jq_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "windows_amd64", + "version": "1.6" + } + }, + "jq": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_host_alias_repo", + "attributes": {} + }, + "jq_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_toolchains_repo", + "attributes": { + "user_repository_name": "jq" + } + }, + "yq_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "darwin_amd64", + "version": "4.25.2" + } + }, + "yq_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "darwin_arm64", + "version": "4.25.2" + } + }, + "yq_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_amd64", + "version": "4.25.2" + } + }, + "yq_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_arm64", + "version": "4.25.2" + } + }, + "yq_linux_s390x": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_s390x", + "version": "4.25.2" + } + }, + "yq_linux_ppc64le": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_ppc64le", + "version": "4.25.2" + } + }, + "yq_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "windows_amd64", + "version": "4.25.2" + } + }, + "yq": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_host_alias_repo", + "attributes": {} + }, + "yq_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_toolchains_repo", + "attributes": { + "user_repository_name": "yq" + } + }, + "coreutils_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "darwin_amd64", + "version": "0.0.16" + } + }, + "coreutils_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "darwin_arm64", + "version": "0.0.16" + } + }, + "coreutils_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "linux_amd64", + "version": "0.0.16" + } + }, + "coreutils_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "linux_arm64", + "version": "0.0.16" + } + }, + "coreutils_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "windows_amd64", + "version": "0.0.16" + } + }, + "coreutils_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_toolchains_repo", + "attributes": { + "user_repository_name": "coreutils" + } + }, + "bsd_tar_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "bsd_tar_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "bsd_tar_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "bsd_tar_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "bsd_tar_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "windows_amd64" + } + }, + "bsd_tar_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%tar_toolchains_repo", + "attributes": { + "user_repository_name": "bsd_tar" + } + }, + "expand_template_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "expand_template_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "expand_template_freebsd_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "freebsd_amd64" + } + }, + "expand_template_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "expand_template_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "expand_template_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "windows_amd64" + } + }, + "expand_template_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_toolchains_repo", + "attributes": { + "user_repository_name": "expand_template" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_bazel_lib+", + "aspect_bazel_lib", + "aspect_bazel_lib+" + ], + [ + "aspect_bazel_lib+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_bazel_lib+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { + "general": { + "bzlTransitiveDigest": "poAa/2uyrVSr9Hel1HD6GfFwqId27yXfePnG+3Dmt90=", + "usagesDigest": "yxkJioaKxOYkZAdkGoq2Cm79s4pW36Xwx7a8awQOU2E=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "pnpm": { + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", + "attributes": { + "package": "pnpm", + "version": "8.6.7", + "root_package": "", + "link_workspace": "", + "link_packages": {}, + "integrity": "sha512-vRIWpD/L4phf9Bk2o/O2TDR8fFoJnpYrp2TKqTIZF/qZ2/rgL3qKXzHofHgbXsinwMoSEigz28sqk3pQ+yMEQQ==", + "url": "", + "commit": "", + "patch_args": [ + "-p0" + ], + "patches": [], + "custom_postinstall": "", + "npm_auth": "", + "npm_auth_basic": "", + "npm_auth_username": "", + "npm_auth_password": "", + "lifecycle_hooks": [], + "extra_build_content": "load(\"@aspect_rules_js//js:defs.bzl\", \"js_binary\")\njs_binary(name = \"pnpm\", data = glob([\"package/**\"]), entry_point = \"package/dist/pnpm.cjs\", visibility = [\"//visibility:public\"])", + "generate_bzl_library_targets": false, + "extract_full_archive": true + } + }, + "pnpm__links": { + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", + "attributes": { + "package": "pnpm", + "version": "8.6.7", + "dev": false, + "root_package": "", + "link_packages": {}, + "deps": {}, + "transitive_closure": {}, + "lifecycle_build_target": false, + "lifecycle_hooks_env": [], + "lifecycle_hooks_execution_requirements": [ + "no-sandbox" + ], + "lifecycle_hooks_use_default_shell_env": false, + "bins": {}, + "package_visibility": [ + "//visibility:public" + ], + "replace_package": "" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_bazel_lib+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_bazel_lib+", + "bazel_tools", + "bazel_tools" + ], + [ + "aspect_rules_js+", + "aspect_bazel_lib", + "aspect_bazel_lib+" + ], + [ + "aspect_rules_js+", + "bazel_features", + "bazel_features+" + ], + [ + "aspect_rules_js+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_rules_js+", + "bazel_tools", + "bazel_tools" + ], + [ + "bazel_features+", + "bazel_features_globals", + "bazel_features++version_extension+bazel_features_globals" + ], + [ + "bazel_features+", + "bazel_features_version", + "bazel_features++version_extension+bazel_features_version" + ], + [ + "bazel_features+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@emsdk+//:emscripten_cache.bzl%emscripten_cache": { + "general": { + "bzlTransitiveDigest": "uqDvXmpTNqW4+ie/Fk+xC3TrFrKvL+9hNtoP51Kt2oo=", + "usagesDigest": "d45w3mu98tmYO95D//utIzVG+p8OPeGUpN0TgQMnLHA=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "emscripten_cache": { + "repoRuleId": "@@emsdk+//:emscripten_cache.bzl%_emscripten_cache_repository", + "attributes": { + "configuration": [], + "targets": [] + } + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@emsdk+//:emscripten_deps.bzl%emscripten_deps": { + "general": { + "bzlTransitiveDigest": "h0wQ3PSRx/Q9n+izTifYO8L728OTd9B5YbLOWcobVYE=", + "usagesDigest": "eqaMlu1tts7n29bG5zUl3DtA/9ARE+6aHrSK4X7kNno=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "emscripten_bin_linux": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", + "sha256": "27fc220a9ad98d323cad73531ff563e9838c9e1205f51ee2a5632bb4266a35d2", + "strip_prefix": "install", + "type": "tar.xz", + "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" + } + }, + "emscripten_bin_linux_arm64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", + "sha256": "2d03f8eb3f81dd94821658eefbb442a92b0b7601f4cfb08590590fd7bc467ef8", + "strip_prefix": "install", + "type": "tar.xz", + "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" + } + }, + "emscripten_bin_mac": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", + "sha256": "c06048915595726fc2e2da6a8db3134581a6287645fb818802a9734ff9785e77", + "strip_prefix": "install", + "type": "tar.xz", + "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" + } + }, + "emscripten_bin_mac_arm64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", + "sha256": "35d743453d0f91857b09f00d721037bb46753aaeae373bd7f64746338db11770", + "strip_prefix": "install", + "type": "tar.xz", + "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" + } + }, + "emscripten_bin_win": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/clang++.exe\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/llvm-ar.exe\",\n \"bin/llvm-dwarfdump.exe\",\n \"bin/llvm-nm.exe\",\n \"bin/llvm-objcopy.exe\",\n \"bin/wasm-ctor-eval.exe\",\n \"bin/wasm-emscripten-finalize.exe\",\n \"bin/wasm-ld.exe\",\n \"bin/wasm-metadce.exe\",\n \"bin/wasm-opt.exe\",\n \"bin/wasm-split.exe\",\n \"bin/wasm2js.exe\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar.exe\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", + "sha256": "3b576e825b26426bb72854ed98752df3fcb58cc3ab1dc116566e328b79a8abb3", + "strip_prefix": "install", + "type": "zip", + "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/win/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.zip" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "bazel_tools", + "rules_cc", + "rules_cc+" + ], + [ + "emsdk+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@pybind11_bazel+//:python_configure.bzl%extension": { + "general": { + "bzlTransitiveDigest": "d4N/SZrl3ONcmzE98rcV0Fsro0iUbjNQFTIiLiGuH+k=", + "usagesDigest": "fycyB39YnXIJkfWCIXLUKJMZzANcuLy9ZE73hRucjFk=", + "recordedFileInputs": { + "@@pybind11_bazel+//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e" + }, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "local_config_python": { + "repoRuleId": "@@pybind11_bazel+//:python_configure.bzl%python_configure", + "attributes": {} + }, + "pybind11": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file": "@@pybind11_bazel+//:pybind11.BUILD", + "strip_prefix": "pybind11-2.11.1", + "urls": [ + "https://github.com/pybind/pybind11/archive/v2.11.1.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "pybind11_bazel+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_fuzzing+//fuzzing/private:extensions.bzl%non_module_dependencies": { + "general": { + "bzlTransitiveDigest": "mGiTB79hRNjmeDTQdzkpCHyzXhErMbufeAmySBt7s5s=", + "usagesDigest": "wy6ISK6UOcBEjj/mvJ/S3WeXoO67X+1llb9yPyFtPgc=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "platforms": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz", + "https://github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz" + ], + "sha256": "8150406605389ececb6da07cbcb509d5637a3ab9a24bc69b1101531367d89d74" + } + }, + "rules_python": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8", + "strip_prefix": "rules_python-0.28.0", + "url": "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz" + } + }, + "bazel_skylib": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" + ] + } + }, + "com_google_absl": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.1.zip" + ], + "strip_prefix": "abseil-cpp-20240116.1", + "integrity": "sha256-7capMWOvWyoYbUaHF/b+I2U6XLMaHmky8KugWvfXYuk=" + } + }, + "rules_fuzzing_oss_fuzz": { + "repoRuleId": "@@rules_fuzzing+//fuzzing/private/oss_fuzz:repository.bzl%oss_fuzz_repository", + "attributes": {} + }, + "honggfuzz": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file": "@@rules_fuzzing+//:honggfuzz.BUILD", + "sha256": "6b18ba13bc1f36b7b950c72d80f19ea67fbadc0ac0bb297ec89ad91f2eaa423e", + "url": "https://github.com/google/honggfuzz/archive/2.5.zip", + "strip_prefix": "honggfuzz-2.5" + } + }, + "rules_fuzzing_jazzer": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", + "attributes": { + "sha256": "ee6feb569d88962d59cb59e8a31eb9d007c82683f3ebc64955fd5b96f277eec2", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer/0.20.1/jazzer-0.20.1.jar" + } + }, + "rules_fuzzing_jazzer_api": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", + "attributes": { + "sha256": "f5a60242bc408f7fa20fccf10d6c5c5ea1fcb3c6f44642fec5af88373ae7aa1b", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer-api/0.20.1/jazzer-api-0.20.1.jar" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_fuzzing+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_java+//java:rules_java_deps.bzl%compatibility_proxy": { + "general": { + "bzlTransitiveDigest": "84xJEZ1jnXXwo8BXMprvBm++rRt4jsTu9liBxz0ivps=", + "usagesDigest": "jTQDdLDxsS43zuRmg1faAjIEPWdLAbDAowI1pInQSoo=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "compatibility_proxy": { + "repoRuleId": "@@rules_java+//java:rules_java_deps.bzl%_compatibility_proxy_repo_rule", + "attributes": {} + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_java+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { + "general": { + "bzlTransitiveDigest": "sFhcgPbDQehmbD1EOXzX4H1q/CD5df8zwG4kp4jbvr8=", + "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_github_jetbrains_kotlin_git": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", + "attributes": { + "urls": [ + "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" + ], + "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" + } + }, + "com_github_jetbrains_kotlin": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", + "attributes": { + "git_repository_name": "com_github_jetbrains_kotlin_git", + "compiler_version": "1.9.23" + } + }, + "com_github_google_ksp": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", + "attributes": { + "urls": [ + "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" + ], + "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", + "strip_version": "1.9.23-1.0.20" + } + }, + "com_github_pinterest_ktlint": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", + "urls": [ + "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" + ], + "executable": true + } + }, + "rules_android": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", + "strip_prefix": "rules_android-0.1.1", + "urls": [ + "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_kotlin+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_nodejs+//nodejs:extensions.bzl%node": { + "general": { + "bzlTransitiveDigest": "rphcryfYrOY/P3emfTskC/GY5YuHcwMl2B2ncjaM8lY=", + "usagesDigest": "m7d0VXcsX/qS6DKMUBtdgjQzP2eMRHqsE4wv7dzr71I=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "nodejs_linux_amd64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "linux_amd64" + } + }, + "nodejs_linux_arm64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "linux_arm64" + } + }, + "nodejs_linux_s390x": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "linux_s390x" + } + }, + "nodejs_linux_ppc64le": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "linux_ppc64le" + } + }, + "nodejs_darwin_amd64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "darwin_amd64" + } + }, + "nodejs_darwin_arm64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "darwin_arm64" + } + }, + "nodejs_windows_amd64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "windows_amd64" + } + }, + "nodejs": { + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", + "attributes": { + "user_node_repository_name": "nodejs" + } + }, + "nodejs_host": { + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", + "attributes": { + "user_node_repository_name": "nodejs" + } + }, + "nodejs_toolchains": { + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl%nodejs_toolchains_repo", + "attributes": { + "user_node_repository_name": "nodejs" + } + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@rules_python+//python/extensions:pip.bzl%pip": { + "general": { + "bzlTransitiveDigest": "Jbed6zJUJ6E78XRyOlnG1ryhBDvVeikdntPW1D40S/E=", + "usagesDigest": "fztm9ST3ki9E77tct2ZwJe0w38LvfMY8mRYp+YHxXQE=", + "recordedFileInputs": { + "@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", + "@@rules_fuzzing+//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", + "@@rules_python+//tools/publish/requirements_darwin.txt": "095d4a4f3d639dce831cd493367631cd51b53665292ab20194bac2c0c6458fa8", + "@@rules_python+//tools/publish/requirements_linux.txt": "d576e0d8542df61396a9b38deeaa183c24135ed5e8e73bb9622f298f2671811e", + "@@rules_python+//tools/publish/requirements_windows.txt": "d18538a3982beab378fd5687f4db33162ee1ece69801f9a451661b1b64286b76" + }, + "recordedDirentsInputs": {}, + "envVariables": { + "RULES_PYTHON_REPO_DEBUG": null, + "RULES_PYTHON_REPO_DEBUG_VERBOSITY": null + }, + "generatedRepoSpecs": { + "pip_deps_310_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "pip_deps_310", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_310_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "pip_deps_310", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_311_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "pip_deps_311", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_311_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "pip_deps_311", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_312_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "pip_deps_312", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_312_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "pip_deps_312", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_38_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "pip_deps_38", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_38_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "pip_deps_38", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_39_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "pip_deps_39", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_39_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "pip_deps_39", + "requirement": "setuptools<=70.3.0" + } + }, + "rules_fuzzing_py_deps_310_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "rules_fuzzing_py_deps_310", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_310_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "rules_fuzzing_py_deps_310", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_311_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_fuzzing_py_deps_311", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_311_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_fuzzing_py_deps_311", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_312_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "rules_fuzzing_py_deps_312", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_312_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "rules_fuzzing_py_deps_312", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_38_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "rules_fuzzing_py_deps_38", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_38_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "rules_fuzzing_py_deps_38", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_39_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "rules_fuzzing_py_deps_39", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_39_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "rules_fuzzing_py_deps_39", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "backports.tarfile-1.2.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "backports-tarfile==1.2.0", + "sha256": "77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", + "urls": [ + "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "backports_tarfile-1.2.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "backports-tarfile==1.2.0", + "sha256": "d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", + "urls": [ + "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_certifi_py3_none_any_922820b5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "certifi-2024.8.30-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "certifi==2024.8.30", + "sha256": "922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", + "urls": [ + "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_certifi_sdist_bec941d2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "certifi-2024.8.30.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "certifi==2024.8.30", + "sha256": "bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", + "urls": [ + "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", + "urls": [ + "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", + "urls": [ + "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", + "urls": [ + "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", + "urls": [ + "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", + "urls": [ + "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_sdist_1c39c601": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "cffi-1.17.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", + "urls": [ + "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", + "urls": [ + "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", + "urls": [ + "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", + "urls": [ + "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", + "urls": [ + "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", + "urls": [ + "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", + "urls": [ + "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", + "urls": [ + "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", + "urls": [ + "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", + "urls": [ + "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", + "urls": [ + "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", + "urls": [ + "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_sdist_223217c3": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "charset_normalizer-3.4.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", + "urls": [ + "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", + "urls": [ + "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", + "urls": [ + "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", + "urls": [ + "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", + "urls": [ + "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", + "urls": [ + "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", + "urls": [ + "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_sdist_315b9001": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "cryptography-43.0.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", + "urls": [ + "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "docutils-0.21.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "docutils==0.21.2", + "sha256": "dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", + "urls": [ + "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_docutils_sdist_3a6b1873": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "docutils-0.21.2.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "docutils==0.21.2", + "sha256": "3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", + "urls": [ + "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_idna_py3_none_any_946d195a": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "idna-3.10-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "idna==3.10", + "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", + "urls": [ + "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_idna_sdist_12f65c9b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "idna-3.10.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "idna==3.10", + "sha256": "12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", + "urls": [ + "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "importlib_metadata-8.5.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "importlib-metadata==8.5.0", + "sha256": "45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", + "urls": [ + "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_importlib_metadata_sdist_71522656": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "importlib_metadata-8.5.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "importlib-metadata==8.5.0", + "sha256": "71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", + "urls": [ + "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.classes-3.4.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-classes==3.4.0", + "sha256": "f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", + "urls": [ + "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco.classes-3.4.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-classes==3.4.0", + "sha256": "47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", + "urls": [ + "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.context-6.0.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-context==6.0.1", + "sha256": "f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", + "urls": [ + "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco_context-6.0.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-context==6.0.1", + "sha256": "9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", + "urls": [ + "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.functools-4.1.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-functools==4.1.0", + "sha256": "ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649", + "urls": [ + "https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco_functools-4.1.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-functools==4.1.0", + "sha256": "70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d", + "urls": [ + "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "jeepney-0.8.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jeepney==0.8.0", + "sha256": "c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", + "urls": [ + "https://files.pythonhosted.org/packages/ae/72/2a1e2290f1ab1e06f71f3d0f1646c9e4634e70e1d37491535e19266e8dc9/jeepney-0.8.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jeepney_sdist_5efe48d2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jeepney-0.8.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jeepney==0.8.0", + "sha256": "5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", + "urls": [ + "https://files.pythonhosted.org/packages/d6/f4/154cf374c2daf2020e05c3c6a03c91348d59b23c5366e968feb198306fdf/jeepney-0.8.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_keyring_py3_none_any_5426f817": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "keyring-25.4.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "keyring==25.4.1", + "sha256": "5426f817cf7f6f007ba5ec722b1bcad95a75b27d780343772ad76b17cb47b0bf", + "urls": [ + "https://files.pythonhosted.org/packages/83/25/e6d59e5f0a0508d0dca8bb98c7f7fd3772fc943ac3f53d5ab18a218d32c0/keyring-25.4.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_keyring_sdist_b07ebc55": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "keyring-25.4.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "keyring==25.4.1", + "sha256": "b07ebc55f3e8ed86ac81dd31ef14e81ace9dd9c3d4b5d77a6e9a2016d0d71a1b", + "urls": [ + "https://files.pythonhosted.org/packages/a5/1c/2bdbcfd5d59dc6274ffb175bc29aa07ecbfab196830e0cfbde7bd861a2ea/keyring-25.4.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "markdown_it_py-3.0.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "markdown-it-py==3.0.0", + "sha256": "355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", + "urls": [ + "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "markdown-it-py-3.0.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "markdown-it-py==3.0.0", + "sha256": "e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", + "urls": [ + "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_mdurl_py3_none_any_84008a41": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "mdurl-0.1.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "mdurl==0.1.2", + "sha256": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", + "urls": [ + "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_mdurl_sdist_bb413d29": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "mdurl-0.1.2.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "mdurl==0.1.2", + "sha256": "bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", + "urls": [ + "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "more_itertools-10.5.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "more-itertools==10.5.0", + "sha256": "037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", + "urls": [ + "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_more_itertools_sdist_5482bfef": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "more-itertools-10.5.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "more-itertools==10.5.0", + "sha256": "5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", + "urls": [ + "https://files.pythonhosted.org/packages/51/78/65922308c4248e0eb08ebcbe67c95d48615cc6f27854b6f2e57143e9178f/more-itertools-10.5.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86", + "urls": [ + "https://files.pythonhosted.org/packages/b3/89/1daff5d9ba5a95a157c092c7c5f39b8dd2b1ddb4559966f808d31cfb67e0/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811", + "urls": [ + "https://files.pythonhosted.org/packages/2c/b6/42fc3c69cabf86b6b81e4c051a9b6e249c5ba9f8155590222c2622961f58/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200", + "urls": [ + "https://files.pythonhosted.org/packages/45/b9/833f385403abaf0023c6547389ec7a7acf141ddd9d1f21573723a6eab39a/nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164", + "urls": [ + "https://files.pythonhosted.org/packages/05/2b/85977d9e11713b5747595ee61f381bc820749daf83f07b90b6c9964cf932/nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189", + "urls": [ + "https://files.pythonhosted.org/packages/72/f2/5c894d5265ab80a97c68ca36f25c8f6f0308abac649aaf152b74e7e854a8/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b", + "urls": [ + "https://files.pythonhosted.org/packages/c2/a8/3bb02d0c60a03ad3a112b76c46971e9480efa98a8946677b5a59f60130ca/nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307", + "urls": [ + "https://files.pythonhosted.org/packages/1b/63/6ab90d0e5225ab9780f6c9fb52254fa36b52bb7c188df9201d05b647e5e1/nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe", + "urls": [ + "https://files.pythonhosted.org/packages/a3/da/0c4e282bc3cff4a0adf37005fa1fb42257673fbc1bbf7d1ff639ec3d255a/nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a", + "urls": [ + "https://files.pythonhosted.org/packages/de/81/c291231463d21da5f8bba82c8167a6d6893cc5419b0639801ee5d3aeb8a9/nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204", + "urls": [ + "https://files.pythonhosted.org/packages/eb/61/73a007c74c37895fdf66e0edcd881f5eaa17a348ff02f4bb4bc906d61085/nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-win_amd64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844", + "urls": [ + "https://files.pythonhosted.org/packages/26/8d/53c5b19c4999bdc6ba95f246f4ef35ca83d7d7423e5e38be43ad66544e5d/nh3-0.2.18-cp37-abi3-win_amd64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_sdist_94a16692": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "nh3-0.2.18.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4", + "urls": [ + "https://files.pythonhosted.org/packages/62/73/10df50b42ddb547a907deeb2f3c9823022580a7a47281e8eae8e003a9639/nh3-0.2.18.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "pkginfo-1.10.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pkginfo==1.10.0", + "sha256": "889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097", + "urls": [ + "https://files.pythonhosted.org/packages/56/09/054aea9b7534a15ad38a363a2bd974c20646ab1582a387a95b8df1bfea1c/pkginfo-1.10.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pkginfo_sdist_5df73835": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pkginfo-1.10.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pkginfo==1.10.0", + "sha256": "5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297", + "urls": [ + "https://files.pythonhosted.org/packages/2f/72/347ec5be4adc85c182ed2823d8d1c7b51e13b9a6b0c1aae59582eca652df/pkginfo-1.10.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "pycparser-2.22-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pycparser==2.22", + "sha256": "c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", + "urls": [ + "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pycparser_sdist_491c8be9": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pycparser-2.22.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pycparser==2.22", + "sha256": "491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", + "urls": [ + "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "pygments-2.18.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pygments==2.18.0", + "sha256": "b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", + "urls": [ + "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pygments_sdist_786ff802": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pygments-2.18.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pygments==2.18.0", + "sha256": "786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", + "urls": [ + "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_windows_x86_64" + ], + "filename": "pywin32_ctypes-0.2.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pywin32-ctypes==0.2.3", + "sha256": "8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", + "urls": [ + "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pywin32-ctypes-0.2.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pywin32-ctypes==0.2.3", + "sha256": "d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", + "urls": [ + "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "readme_renderer-44.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "readme-renderer==44.0", + "sha256": "2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", + "urls": [ + "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_readme_renderer_sdist_8712034e": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "readme_renderer-44.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "readme-renderer==44.0", + "sha256": "8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", + "urls": [ + "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_requests_py3_none_any_70761cfe": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "requests-2.32.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests==2.32.3", + "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", + "urls": [ + "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_requests_sdist_55365417": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "requests-2.32.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests==2.32.3", + "sha256": "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", + "urls": [ + "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "requests_toolbelt-1.0.0-py2.py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests-toolbelt==1.0.0", + "sha256": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", + "urls": [ + "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "requests-toolbelt-1.0.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests-toolbelt==1.0.0", + "sha256": "7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", + "urls": [ + "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "rfc3986-2.0.0-py2.py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rfc3986==2.0.0", + "sha256": "50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", + "urls": [ + "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_rfc3986_sdist_97aacf9d": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "rfc3986-2.0.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rfc3986==2.0.0", + "sha256": "97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", + "urls": [ + "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_rich_py3_none_any_6049d5e6": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "rich-13.9.4-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rich==13.9.4", + "sha256": "6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", + "urls": [ + "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_rich_sdist_43959497": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "rich-13.9.4.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rich==13.9.4", + "sha256": "439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", + "urls": [ + "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "SecretStorage-3.3.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "secretstorage==3.3.3", + "sha256": "f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", + "urls": [ + "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_secretstorage_sdist_2403533e": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "SecretStorage-3.3.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "secretstorage==3.3.3", + "sha256": "2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", + "urls": [ + "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_twine_py3_none_any_215dbe7b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "twine-5.1.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "twine==5.1.1", + "sha256": "215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997", + "urls": [ + "https://files.pythonhosted.org/packages/5d/ec/00f9d5fd040ae29867355e559a94e9a8429225a0284a3f5f091a3878bfc0/twine-5.1.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_twine_sdist_9aa08251": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "twine-5.1.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "twine==5.1.1", + "sha256": "9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db", + "urls": [ + "https://files.pythonhosted.org/packages/77/68/bd982e5e949ef8334e6f7dcf76ae40922a8750aa2e347291ae1477a4782b/twine-5.1.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "urllib3-2.2.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "urllib3==2.2.3", + "sha256": "ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", + "urls": [ + "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_urllib3_sdist_e7d814a8": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "urllib3-2.2.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "urllib3==2.2.3", + "sha256": "e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", + "urls": [ + "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_zipp_py3_none_any_a817ac80": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "zipp-3.20.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "zipp==3.20.2", + "sha256": "a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", + "urls": [ + "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_zipp_sdist_bc9eb26f": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "zipp-3.20.2.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "zipp==3.20.2", + "sha256": "bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", + "urls": [ + "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz" + ] + } + }, + "pip_deps": { + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", + "attributes": { + "repo_name": "pip_deps", + "extra_hub_aliases": {}, + "whl_map": { + "numpy": "{\"pip_deps_310_numpy\":[{\"version\":\"3.10\"}],\"pip_deps_311_numpy\":[{\"version\":\"3.11\"}],\"pip_deps_312_numpy\":[{\"version\":\"3.12\"}],\"pip_deps_38_numpy\":[{\"version\":\"3.8\"}],\"pip_deps_39_numpy\":[{\"version\":\"3.9\"}]}", + "setuptools": "{\"pip_deps_310_setuptools\":[{\"version\":\"3.10\"}],\"pip_deps_311_setuptools\":[{\"version\":\"3.11\"}],\"pip_deps_312_setuptools\":[{\"version\":\"3.12\"}],\"pip_deps_38_setuptools\":[{\"version\":\"3.8\"}],\"pip_deps_39_setuptools\":[{\"version\":\"3.9\"}]}" + }, + "packages": [ + "numpy", + "setuptools" + ], + "groups": {} + } + }, + "rules_fuzzing_py_deps": { + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", + "attributes": { + "repo_name": "rules_fuzzing_py_deps", + "extra_hub_aliases": {}, + "whl_map": { + "absl_py": "{\"rules_fuzzing_py_deps_310_absl_py\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_absl_py\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_absl_py\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_absl_py\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_absl_py\":[{\"version\":\"3.9\"}]}", + "six": "{\"rules_fuzzing_py_deps_310_six\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_six\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_six\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_six\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_six\":[{\"version\":\"3.9\"}]}" + }, + "packages": [ + "absl_py", + "six" + ], + "groups": {} + } + }, + "rules_python_publish_deps": { + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", + "attributes": { + "repo_name": "rules_python_publish_deps", + "extra_hub_aliases": {}, + "whl_map": { + "backports_tarfile": "{\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\":[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\":[{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"version\":\"3.11\"}]}", + "certifi": "{\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\":[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_certifi_sdist_bec941d2\":[{\"filename\":\"certifi-2024.8.30.tar.gz\",\"version\":\"3.11\"}]}", + "cffi": "{\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_sdist_1c39c601\":[{\"filename\":\"cffi-1.17.1.tar.gz\",\"version\":\"3.11\"}]}", + "charset_normalizer": "{\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\":[{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\":[{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", + "cryptography": "{\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_sdist_315b9001\":[{\"filename\":\"cryptography-43.0.3.tar.gz\",\"version\":\"3.11\"}]}", + "docutils": "{\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\":[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\":[{\"filename\":\"docutils-0.21.2.tar.gz\",\"version\":\"3.11\"}]}", + "idna": "{\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\":[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_idna_sdist_12f65c9b\":[{\"filename\":\"idna-3.10.tar.gz\",\"version\":\"3.11\"}]}", + "importlib_metadata": "{\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\":[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\":[{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_classes": "{\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\":[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\":[{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_context": "{\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\":[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\":[{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_functools": "{\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\":[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\":[{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"version\":\"3.11\"}]}", + "jeepney": "{\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\":[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\":[{\"filename\":\"jeepney-0.8.0.tar.gz\",\"version\":\"3.11\"}]}", + "keyring": "{\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\":[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\":[{\"filename\":\"keyring-25.4.1.tar.gz\",\"version\":\"3.11\"}]}", + "markdown_it_py": "{\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\":[{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\":[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "mdurl": "{\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\":[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\":[{\"filename\":\"mdurl-0.1.2.tar.gz\",\"version\":\"3.11\"}]}", + "more_itertools": "{\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\":[{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\":[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"version\":\"3.11\"}]}", + "nh3": "{\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_sdist_94a16692\":[{\"filename\":\"nh3-0.2.18.tar.gz\",\"version\":\"3.11\"}]}", + "pkginfo": "{\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\":[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\":[{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"version\":\"3.11\"}]}", + "pycparser": "{\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\":[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\":[{\"filename\":\"pycparser-2.22.tar.gz\",\"version\":\"3.11\"}]}", + "pygments": "{\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\":[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pygments_sdist_786ff802\":[{\"filename\":\"pygments-2.18.0.tar.gz\",\"version\":\"3.11\"}]}", + "pywin32_ctypes": "{\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\":[{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\":[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"version\":\"3.11\"}]}", + "readme_renderer": "{\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\":[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\":[{\"filename\":\"readme_renderer-44.0.tar.gz\",\"version\":\"3.11\"}]}", + "requests": "{\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\":[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_sdist_55365417\":[{\"filename\":\"requests-2.32.3.tar.gz\",\"version\":\"3.11\"}]}", + "requests_toolbelt": "{\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\":[{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\":[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "rfc3986": "{\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\":[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\":[{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "rich": "{\"rules_python_publish_deps_311_rich_py3_none_any_6049d5e6\":[{\"filename\":\"rich-13.9.4-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rich_sdist_43959497\":[{\"filename\":\"rich-13.9.4.tar.gz\",\"version\":\"3.11\"}]}", + "secretstorage": "{\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\":[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\":[{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"version\":\"3.11\"}]}", + "twine": "{\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\":[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_twine_sdist_9aa08251\":[{\"filename\":\"twine-5.1.1.tar.gz\",\"version\":\"3.11\"}]}", + "urllib3": "{\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\":[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\":[{\"filename\":\"urllib3-2.2.3.tar.gz\",\"version\":\"3.11\"}]}", + "zipp": "{\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\":[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\":[{\"filename\":\"zipp-3.20.2.tar.gz\",\"version\":\"3.11\"}]}" + }, + "packages": [ + "backports_tarfile", + "certifi", + "charset_normalizer", + "docutils", + "idna", + "importlib_metadata", + "jaraco_classes", + "jaraco_context", + "jaraco_functools", + "keyring", + "markdown_it_py", + "mdurl", + "more_itertools", + "nh3", + "pkginfo", + "pygments", + "readme_renderer", + "requests", + "requests_toolbelt", + "rfc3986", + "rich", + "twine", + "urllib3", + "zipp" + ], + "groups": {} + } + } + }, + "moduleExtensionMetadata": { + "useAllRepos": "NO", + "reproducible": false + }, + "recordedRepoMappingEntries": [ + [ + "bazel_features+", + "bazel_features_globals", + "bazel_features++version_extension+bazel_features_globals" + ], + [ + "bazel_features+", + "bazel_features_version", + "bazel_features++version_extension+bazel_features_version" + ], + [ + "rules_python+", + "bazel_features", + "bazel_features+" + ], + [ + "rules_python+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "rules_python+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_python+", + "pypi__build", + "rules_python++internal_deps+pypi__build" + ], + [ + "rules_python+", + "pypi__click", + "rules_python++internal_deps+pypi__click" + ], + [ + "rules_python+", + "pypi__colorama", + "rules_python++internal_deps+pypi__colorama" + ], + [ + "rules_python+", + "pypi__importlib_metadata", + "rules_python++internal_deps+pypi__importlib_metadata" + ], + [ + "rules_python+", + "pypi__installer", + "rules_python++internal_deps+pypi__installer" + ], + [ + "rules_python+", + "pypi__more_itertools", + "rules_python++internal_deps+pypi__more_itertools" + ], + [ + "rules_python+", + "pypi__packaging", + "rules_python++internal_deps+pypi__packaging" + ], + [ + "rules_python+", + "pypi__pep517", + "rules_python++internal_deps+pypi__pep517" + ], + [ + "rules_python+", + "pypi__pip", + "rules_python++internal_deps+pypi__pip" + ], + [ + "rules_python+", + "pypi__pip_tools", + "rules_python++internal_deps+pypi__pip_tools" + ], + [ + "rules_python+", + "pypi__pyproject_hooks", + "rules_python++internal_deps+pypi__pyproject_hooks" + ], + [ + "rules_python+", + "pypi__setuptools", + "rules_python++internal_deps+pypi__setuptools" + ], + [ + "rules_python+", + "pypi__tomli", + "rules_python++internal_deps+pypi__tomli" + ], + [ + "rules_python+", + "pypi__wheel", + "rules_python++internal_deps+pypi__wheel" + ], + [ + "rules_python+", + "pypi__zipp", + "rules_python++internal_deps+pypi__zipp" + ], + [ + "rules_python+", + "pythons_hub", + "rules_python++python+pythons_hub" + ], + [ + "rules_python++python+pythons_hub", + "python_3_10_host", + "rules_python++python+python_3_10_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_11_host", + "rules_python++python+python_3_11_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_12_host", + "rules_python++python+python_3_12_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_13_host", + "rules_python++python+python_3_13_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_8_host", + "rules_python++python+python_3_8_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_9_host", + "rules_python++python+python_3_9_host" + ] + ] + } + }, + "@@rules_python+//python/uv:uv.bzl%uv": { + "general": { + "bzlTransitiveDigest": "Xpqjnjzy6zZ90Es9Wa888ZLHhn7IsNGbph/e6qoxzw8=", + "usagesDigest": "vJ5RHUxAnV24M5swNGiAnkdxMx3Hp/iOLmNANTC5Xc8=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "uv": { + "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", + "attributes": { + "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'", + "toolchain_names": [ + "none" + ], + "toolchain_implementations": { + "none": "'@@rules_python+//python:none'" + }, + "toolchain_compatible_with": { + "none": [ + "@platforms//:incompatible" + ] + }, + "toolchain_target_settings": {} + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_python+", + "platforms", + "platforms" + ] + ] + } + } + } +} diff --git a/emsdk-cache/emsdk-main/bazel/test_external/hello-embind-externs.js b/emsdk-cache/emsdk-main/bazel/test_external/hello-embind-externs.js new file mode 100644 index 000000000..864d22089 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/hello-embind-externs.js @@ -0,0 +1,2 @@ +// This file prevents customJSFunctionToTestClosure from being minified by the Closure compiler. +Module.customJSFunctionToTestClosure = function() {} \ No newline at end of file diff --git a/emsdk-cache/emsdk-main/bazel/test_external/hello-embind-interface.js b/emsdk-cache/emsdk-main/bazel/test_external/hello-embind-interface.js new file mode 100644 index 000000000..ddc4d2f3d --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/hello-embind-interface.js @@ -0,0 +1,3 @@ +Module.customJSFunctionToTestClosure = function(firstParam, secondParam) { + console.log("This function adds two numbers to get", firstParam + secondParam); +} \ No newline at end of file diff --git a/emsdk-cache/emsdk-main/bazel/test_external/hello-embind.cc b/emsdk-cache/emsdk-main/bazel/test_external/hello-embind.cc new file mode 100644 index 000000000..d5bff5f08 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/hello-embind.cc @@ -0,0 +1,16 @@ +#include + +using namespace emscripten; + +class HelloClass { + public: + static std::string SayHello(const std::string &name) { + return "Yo! " + name; + }; +}; + +EMSCRIPTEN_BINDINGS(Hello) { + emscripten::class_("HelloClass") + .constructor<>() + .class_function("SayHello", &HelloClass::SayHello); +} diff --git a/emsdk-cache/emsdk-main/bazel/test_external/hello-world.cc b/emsdk-cache/emsdk-main/bazel/test_external/hello-world.cc new file mode 100644 index 000000000..ee72c5317 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/hello-world.cc @@ -0,0 +1,6 @@ +#include + +int main(int argc, char** argv) { + std::cout << "hello world!" << std::endl; + return 0; +} diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/BUILD.bazel b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/BUILD.bazel new file mode 100644 index 000000000..4ffe24760 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/BUILD.bazel @@ -0,0 +1,61 @@ +load("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary") + +_TEST_TARGETS = [ + "long_command_line_file01", + "long_command_line_file02", + "long_command_line_file03", + "long_command_line_file04", + "long_command_line_file05", + "long_command_line_file06", + "long_command_line_file07", + "long_command_line_file08", + "long_command_line_file09", + "long_command_line_file10", + "long_command_line_file11", + "long_command_line_file12", + "long_command_line_file13", + "long_command_line_file14", + "long_command_line_file15", + "long_command_line_file16", + "long_command_line_file17", + "long_command_line_file18", + "long_command_line_file19", + "long_command_line_file20", +] + +_TEST_TARGET_SUFFIXES = [ + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", +] + +[cc_library( + name = "{}_{}".format(target, suffix), + hdrs = ["include/{}.hh".format(target)], + # stripping include prefix to create more flags passed to emcc + strip_include_prefix = "include", + srcs = ["{}.cc".format(target)], +) for target in _TEST_TARGETS for suffix in _TEST_TARGET_SUFFIXES] + +cc_binary( + name = "long_command_line", + linkshared = True, + srcs = ["long_command_line.cc"], + deps = [":{}_{}".format(target, suffix) for target in _TEST_TARGETS for suffix in _TEST_TARGET_SUFFIXES], +) + +wasm_cc_binary( + name = "long_command_line_wasm", + cc_target = ":long_command_line", + outputs = [ + "long_command_line.js", + "long_command_line.wasm", + ], +) diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file01.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file01.hh new file mode 100644 index 000000000..8dd06bad8 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file01.hh @@ -0,0 +1,3 @@ +#pragma once + +void f1(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file02.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file02.hh new file mode 100644 index 000000000..7a3a0ff11 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file02.hh @@ -0,0 +1,3 @@ +#pragma once + +void f2(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file03.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file03.hh new file mode 100644 index 000000000..16880553f --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file03.hh @@ -0,0 +1,3 @@ +#pragma once + +void f3(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file04.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file04.hh new file mode 100644 index 000000000..45ef1fca9 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file04.hh @@ -0,0 +1,3 @@ +#pragma once + +void f4(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file05.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file05.hh new file mode 100644 index 000000000..707ad5028 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file05.hh @@ -0,0 +1,3 @@ +#pragma once + +void f5(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file06.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file06.hh new file mode 100644 index 000000000..5d9145006 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file06.hh @@ -0,0 +1,3 @@ +#pragma once + +void f6(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file07.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file07.hh new file mode 100644 index 000000000..b0bf81186 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file07.hh @@ -0,0 +1,3 @@ +#pragma once + +void f7(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file08.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file08.hh new file mode 100644 index 000000000..994b7ea7c --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file08.hh @@ -0,0 +1,3 @@ +#pragma once + +void f8(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file09.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file09.hh new file mode 100644 index 000000000..90c19583c --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file09.hh @@ -0,0 +1,3 @@ +#pragma once + +void f9(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file10.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file10.hh new file mode 100644 index 000000000..6a4388182 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file10.hh @@ -0,0 +1,3 @@ +#pragma once + +void f10(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file11.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file11.hh new file mode 100644 index 000000000..878c9396b --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file11.hh @@ -0,0 +1,3 @@ +#pragma once + +void f11(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file12.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file12.hh new file mode 100644 index 000000000..b5e0bc3e9 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file12.hh @@ -0,0 +1,3 @@ +#pragma once + +void f12(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file13.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file13.hh new file mode 100644 index 000000000..634dcef13 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file13.hh @@ -0,0 +1,3 @@ +#pragma once + +void f13(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file14.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file14.hh new file mode 100644 index 000000000..8fa966621 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file14.hh @@ -0,0 +1,3 @@ +#pragma once + +void f14(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file15.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file15.hh new file mode 100644 index 000000000..1f7b7706a --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file15.hh @@ -0,0 +1,3 @@ +#pragma once + +void f15(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file16.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file16.hh new file mode 100644 index 000000000..c9fa2fcef --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file16.hh @@ -0,0 +1,3 @@ +#pragma once + +void f16(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file17.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file17.hh new file mode 100644 index 000000000..b959207b7 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file17.hh @@ -0,0 +1,3 @@ +#pragma once + +void f17(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file18.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file18.hh new file mode 100644 index 000000000..af0bacf55 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file18.hh @@ -0,0 +1,3 @@ +#pragma once + +void f18(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file19.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file19.hh new file mode 100644 index 000000000..0ac9b4b02 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file19.hh @@ -0,0 +1,3 @@ +#pragma once + +void f19(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file20.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file20.hh new file mode 100644 index 000000000..0f10c733b --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file20.hh @@ -0,0 +1,3 @@ +#pragma once + +void f20(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line.cc new file mode 100644 index 000000000..1ae13abec --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line.cc @@ -0,0 +1,43 @@ +#include "long_command_line_file01.hh" +#include "long_command_line_file02.hh" +#include "long_command_line_file03.hh" +#include "long_command_line_file04.hh" +#include "long_command_line_file05.hh" +#include "long_command_line_file06.hh" +#include "long_command_line_file07.hh" +#include "long_command_line_file08.hh" +#include "long_command_line_file09.hh" +#include "long_command_line_file10.hh" +#include "long_command_line_file11.hh" +#include "long_command_line_file12.hh" +#include "long_command_line_file13.hh" +#include "long_command_line_file14.hh" +#include "long_command_line_file15.hh" +#include "long_command_line_file16.hh" +#include "long_command_line_file17.hh" +#include "long_command_line_file18.hh" +#include "long_command_line_file19.hh" +#include "long_command_line_file20.hh" + +int main() { + f1(); + f2(); + f3(); + f4(); + f5(); + f6(); + f7(); + f8(); + f9(); + f10(); + f11(); + f12(); + f13(); + f14(); + f15(); + f16(); + f17(); + f18(); + f19(); + f20(); +} diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file01.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file01.cc new file mode 100644 index 000000000..3bf8d4aa0 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file01.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file01.hh" + +#include + +void f1() { std::cout << "hello from f1()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file02.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file02.cc new file mode 100644 index 000000000..b8ac8141c --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file02.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file02.hh" + +#include + +void f2() { std::cout << "hello from f2()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file03.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file03.cc new file mode 100644 index 000000000..294e77741 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file03.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file03.hh" + +#include + +void f3() { std::cout << "hello from f3()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file04.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file04.cc new file mode 100644 index 000000000..c0d537d1b --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file04.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file04.hh" + +#include + +void f4() { std::cout << "hello from f4()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file05.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file05.cc new file mode 100644 index 000000000..310e3e04c --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file05.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file05.hh" + +#include + +void f5() { std::cout << "hello from f5()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file06.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file06.cc new file mode 100644 index 000000000..2c218fdcc --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file06.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file06.hh" + +#include + +void f6() { std::cout << "hello from f6()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file07.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file07.cc new file mode 100644 index 000000000..c78dc400c --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file07.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file07.hh" + +#include + +void f7() { std::cout << "hello from f7()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file08.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file08.cc new file mode 100644 index 000000000..1c2e10f88 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file08.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file08.hh" + +#include + +void f8() { std::cout << "hello from f8()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file09.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file09.cc new file mode 100644 index 000000000..6c0028dc3 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file09.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file09.hh" + +#include + +void f9() { std::cout << "hello from f9()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file10.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file10.cc new file mode 100644 index 000000000..9f0be9cf4 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file10.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file10.hh" + +#include + +void f10() { std::cout << "hello from f10()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file11.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file11.cc new file mode 100644 index 000000000..2ef8f96e2 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file11.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file11.hh" + +#include + +void f11() { std::cout << "hello from f11()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file12.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file12.cc new file mode 100644 index 000000000..76349962b --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file12.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file12.hh" + +#include + +void f12() { std::cout << "hello from f12()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file13.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file13.cc new file mode 100644 index 000000000..bca66d0cd --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file13.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file13.hh" + +#include + +void f13() { std::cout << "hello from f13()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file14.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file14.cc new file mode 100644 index 000000000..543179f6c --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file14.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file14.hh" + +#include + +void f14() { std::cout << "hello from f14()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file15.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file15.cc new file mode 100644 index 000000000..28767ef84 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file15.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file15.hh" + +#include + +void f15() { std::cout << "hello from f15()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file16.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file16.cc new file mode 100644 index 000000000..ca7ff99b6 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file16.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file16.hh" + +#include + +void f16() { std::cout << "hello from f16()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file17.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file17.cc new file mode 100644 index 000000000..2230d36fa --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file17.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file17.hh" + +#include + +void f17() { std::cout << "hello from f17()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file18.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file18.cc new file mode 100644 index 000000000..822cd1484 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file18.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file18.hh" + +#include + +void f18() { std::cout << "hello from f18()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file19.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file19.cc new file mode 100644 index 000000000..b8640642f --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file19.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file19.hh" + +#include + +void f19() { std::cout << "hello from f19()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file20.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file20.cc new file mode 100644 index 000000000..0562be6dd --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file20.cc @@ -0,0 +1,5 @@ +#include "long_command_line_file20.hh" + +#include + +void f20() { std::cout << "hello from f20()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/.bazelrc b/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/.bazelrc new file mode 100644 index 000000000..fbd75a7ea --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/.bazelrc @@ -0,0 +1 @@ +build --incompatible_enable_cc_toolchain_resolution diff --git a/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/.gitignore b/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/.gitignore new file mode 100644 index 000000000..9d50f0bb1 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/.gitignore @@ -0,0 +1,4 @@ +bazel-bin +bazel-out +bazel-test_secondary_lto_cache +bazel-testlogs \ No newline at end of file diff --git a/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/MODULE.bazel b/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/MODULE.bazel new file mode 100644 index 000000000..0f5d9dc6c --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/MODULE.bazel @@ -0,0 +1,26 @@ +bazel_dep(name = "rules_cc", version = "0.1.1") +bazel_dep(name = "emsdk") +local_path_override( + module_name = "emsdk", + path = "..", +) + +emscripten_cache = use_extension( + "@emsdk//:emscripten_cache.bzl", + "emscripten_cache", +) +emscripten_cache.configuration(flags = ["--lto"]) +emscripten_cache.targets(targets = [ + "crtbegin", + "libprintf_long_double-debug", + "libstubs-debug", + "libnoexit", + "libc-debug", + "libdlmalloc", + "libcompiler_rt", + "libc++-noexcept", + "libc++-debug-noexcept", + "libc++abi-debug-noexcept", + "libsockets", + "libdlmalloc-debug", +]) diff --git a/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/MODULE.bazel.lock b/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/MODULE.bazel.lock new file mode 100644 index 000000000..a340fd7b8 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/MODULE.bazel.lock @@ -0,0 +1,3710 @@ +{ + "lockFileVersion": 18, + "registryFileHashes": { + "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", + "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", + "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", + "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/source.json": "9be551b8d4e3ef76875c0d744b5d6a504a27e3ae67bc6b28f46415fd2d2957da", + "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/MODULE.bazel": "e4529e12d8cd5b828e2b5960d07d3ec032541740d419d7d5b859cabbf5b056f9", + "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/source.json": "80cb66069ad626e0921555cd2bf278286fd7763fae2450e564e351792e8303f4", + "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/MODULE.bazel": "f19e6b4a16f77f8cf3728eac1f60dbfd8e043517fd4f4dbf17a75a6c50936d62", + "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/source.json": "abbb3eac3b6af76b8ce230a9a901c6d08d93f4f5ffd55314bf630827dddee57e", + "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", + "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", + "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", + "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", + "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", + "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", + "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", + "https://bcr.bazel.build/modules/bazel_features/1.21.0/source.json": "3e8379efaaef53ce35b7b8ba419df829315a880cb0a030e5bb45c96d6d5ecb5f", + "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", + "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", + "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", + "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", + "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", + "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", + "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", + "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953", + "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", + "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", + "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", + "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", + "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", + "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/source.json": "41e9e129f80d8c8bf103a7acc337b76e54fad1214ac0a7084bf24f4cd924b8b4", + "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", + "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", + "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", + "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", + "https://bcr.bazel.build/modules/platforms/0.0.11/source.json": "f7e188b79ebedebfe75e9e1d098b8845226c7992b307e28e1496f23112e8fc29", + "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", + "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", + "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", + "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", + "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", + "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", + "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", + "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", + "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", + "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", + "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", + "https://bcr.bazel.build/modules/protobuf/29.0/source.json": "b857f93c796750eef95f0d61ee378f3420d00ee1dd38627b27193aa482f4f981", + "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", + "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", + "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/source.json": "be4789e951dd5301282729fe3d4938995dc4c1a81c2ff150afc9f1b0504c6022", + "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", + "https://bcr.bazel.build/modules/re2/2023-09-01/source.json": "e044ce89c2883cd957a2969a43e79f7752f9656f6b20050b62f90ede21ec6eb4", + "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", + "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", + "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", + "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", + "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", + "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", + "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", + "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", + "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", + "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", + "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", + "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", + "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", + "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", + "https://bcr.bazel.build/modules/rules_cc/0.1.1/source.json": "d61627377bd7dd1da4652063e368d9366fc9a73920bfa396798ad92172cf645c", + "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", + "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", + "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", + "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", + "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", + "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", + "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", + "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", + "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", + "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", + "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", + "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", + "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", + "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", + "https://bcr.bazel.build/modules/rules_java/8.6.1/source.json": "f18d9ad3c4c54945bf422ad584fa6c5ca5b3116ff55a5b1bc77e5c1210be5960", + "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", + "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", + "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", + "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", + "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/source.json": "6f5f5a5a4419ae4e37c35a5bb0a6ae657ed40b7abc5a5189111b47fcebe43197", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", + "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", + "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", + "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", + "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", + "https://bcr.bazel.build/modules/rules_nodejs/5.8.2/MODULE.bazel": "6bc03c8f37f69401b888023bf511cb6ee4781433b0cb56236b2e55a21e3a026a", + "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/MODULE.bazel": "42e8d5254b6135f890fecca7c8d7f95a7d27a45f8275b276f66ec337767530ef", + "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/source.json": "80e0a68eb81772f1631f8b69014884eebc2474b3b3025fd19a5240ae4f76f9c9", + "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a", + "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", + "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", + "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", + "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", + "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", + "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", + "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", + "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", + "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", + "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", + "https://bcr.bazel.build/modules/rules_python/1.3.0/MODULE.bazel": "8361d57eafb67c09b75bf4bbe6be360e1b8f4f18118ab48037f2bd50aa2ccb13", + "https://bcr.bazel.build/modules/rules_python/1.3.0/source.json": "25932f917cd279c7baefa6cb1d3fa8750a7a29de522024449b19af6eab51f4a0", + "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", + "https://bcr.bazel.build/modules/rules_shell/0.2.0/source.json": "7f27af3c28037d9701487c4744b5448d26537cc66cdef0d8df7ae85411f8de95", + "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", + "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", + "https://bcr.bazel.build/modules/stardoc/0.5.4/MODULE.bazel": "6569966df04610b8520957cb8e97cf2e9faac2c0309657c537ab51c16c18a2a4", + "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", + "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", + "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", + "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", + "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", + "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", + "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d", + "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" + }, + "selectedYankedVersions": {}, + "moduleExtensions": { + "@@aspect_bazel_lib+//lib:extensions.bzl%toolchains": { + "general": { + "bzlTransitiveDigest": "nrCBrZBQH3Dq30TXMpPMV6lWpEDozX0S0kCia4Lrpj0=", + "usagesDigest": "1c7PNX163TGNqWzfejRnWpH/hiT4/GRG0kYxuez0Uz0=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "copy_directory_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "copy_directory_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "copy_directory_freebsd_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "freebsd_amd64" + } + }, + "copy_directory_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "copy_directory_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "copy_directory_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", + "attributes": { + "platform": "windows_amd64" + } + }, + "copy_directory_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_toolchains_repo", + "attributes": { + "user_repository_name": "copy_directory" + } + }, + "copy_to_directory_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "copy_to_directory_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "copy_to_directory_freebsd_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "freebsd_amd64" + } + }, + "copy_to_directory_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "copy_to_directory_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "copy_to_directory_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "windows_amd64" + } + }, + "copy_to_directory_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_toolchains_repo", + "attributes": { + "user_repository_name": "copy_to_directory" + } + }, + "jq_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "darwin_amd64", + "version": "1.6" + } + }, + "jq_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "darwin_arm64", + "version": "1.6" + } + }, + "jq_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "linux_amd64", + "version": "1.6" + } + }, + "jq_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "windows_amd64", + "version": "1.6" + } + }, + "jq": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_host_alias_repo", + "attributes": {} + }, + "jq_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_toolchains_repo", + "attributes": { + "user_repository_name": "jq" + } + }, + "yq_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "darwin_amd64", + "version": "4.25.2" + } + }, + "yq_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "darwin_arm64", + "version": "4.25.2" + } + }, + "yq_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_amd64", + "version": "4.25.2" + } + }, + "yq_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_arm64", + "version": "4.25.2" + } + }, + "yq_linux_s390x": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_s390x", + "version": "4.25.2" + } + }, + "yq_linux_ppc64le": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_ppc64le", + "version": "4.25.2" + } + }, + "yq_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "windows_amd64", + "version": "4.25.2" + } + }, + "yq": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_host_alias_repo", + "attributes": {} + }, + "yq_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_toolchains_repo", + "attributes": { + "user_repository_name": "yq" + } + }, + "coreutils_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "darwin_amd64", + "version": "0.0.16" + } + }, + "coreutils_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "darwin_arm64", + "version": "0.0.16" + } + }, + "coreutils_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "linux_amd64", + "version": "0.0.16" + } + }, + "coreutils_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "linux_arm64", + "version": "0.0.16" + } + }, + "coreutils_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "windows_amd64", + "version": "0.0.16" + } + }, + "coreutils_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_toolchains_repo", + "attributes": { + "user_repository_name": "coreutils" + } + }, + "bsd_tar_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "bsd_tar_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "bsd_tar_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "bsd_tar_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "bsd_tar_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "windows_amd64" + } + }, + "bsd_tar_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%tar_toolchains_repo", + "attributes": { + "user_repository_name": "bsd_tar" + } + }, + "expand_template_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "expand_template_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "expand_template_freebsd_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "freebsd_amd64" + } + }, + "expand_template_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "expand_template_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "expand_template_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", + "attributes": { + "platform": "windows_amd64" + } + }, + "expand_template_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_toolchains_repo", + "attributes": { + "user_repository_name": "expand_template" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_bazel_lib+", + "aspect_bazel_lib", + "aspect_bazel_lib+" + ], + [ + "aspect_bazel_lib+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_bazel_lib+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { + "general": { + "bzlTransitiveDigest": "poAa/2uyrVSr9Hel1HD6GfFwqId27yXfePnG+3Dmt90=", + "usagesDigest": "yxkJioaKxOYkZAdkGoq2Cm79s4pW36Xwx7a8awQOU2E=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "pnpm": { + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", + "attributes": { + "package": "pnpm", + "version": "8.6.7", + "root_package": "", + "link_workspace": "", + "link_packages": {}, + "integrity": "sha512-vRIWpD/L4phf9Bk2o/O2TDR8fFoJnpYrp2TKqTIZF/qZ2/rgL3qKXzHofHgbXsinwMoSEigz28sqk3pQ+yMEQQ==", + "url": "", + "commit": "", + "patch_args": [ + "-p0" + ], + "patches": [], + "custom_postinstall": "", + "npm_auth": "", + "npm_auth_basic": "", + "npm_auth_username": "", + "npm_auth_password": "", + "lifecycle_hooks": [], + "extra_build_content": "load(\"@aspect_rules_js//js:defs.bzl\", \"js_binary\")\njs_binary(name = \"pnpm\", data = glob([\"package/**\"]), entry_point = \"package/dist/pnpm.cjs\", visibility = [\"//visibility:public\"])", + "generate_bzl_library_targets": false, + "extract_full_archive": true + } + }, + "pnpm__links": { + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", + "attributes": { + "package": "pnpm", + "version": "8.6.7", + "dev": false, + "root_package": "", + "link_packages": {}, + "deps": {}, + "transitive_closure": {}, + "lifecycle_build_target": false, + "lifecycle_hooks_env": [], + "lifecycle_hooks_execution_requirements": [ + "no-sandbox" + ], + "lifecycle_hooks_use_default_shell_env": false, + "bins": {}, + "package_visibility": [ + "//visibility:public" + ], + "replace_package": "" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_bazel_lib+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_bazel_lib+", + "bazel_tools", + "bazel_tools" + ], + [ + "aspect_rules_js+", + "aspect_bazel_lib", + "aspect_bazel_lib+" + ], + [ + "aspect_rules_js+", + "bazel_features", + "bazel_features+" + ], + [ + "aspect_rules_js+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_rules_js+", + "bazel_tools", + "bazel_tools" + ], + [ + "bazel_features+", + "bazel_features_globals", + "bazel_features++version_extension+bazel_features_globals" + ], + [ + "bazel_features+", + "bazel_features_version", + "bazel_features++version_extension+bazel_features_version" + ], + [ + "bazel_features+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@emsdk+//:emscripten_cache.bzl%emscripten_cache": { + "general": { + "bzlTransitiveDigest": "uqDvXmpTNqW4+ie/Fk+xC3TrFrKvL+9hNtoP51Kt2oo=", + "usagesDigest": "Es3QEMexQ1KNtrNtX+vNCqjkgkmUNeW2FQd1xCVcWs8=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "emscripten_cache": { + "repoRuleId": "@@emsdk+//:emscripten_cache.bzl%_emscripten_cache_repository", + "attributes": { + "configuration": [ + "--lto" + ], + "targets": [ + "crtbegin", + "libprintf_long_double-debug", + "libstubs-debug", + "libnoexit", + "libc-debug", + "libdlmalloc", + "libcompiler_rt", + "libc++-noexcept", + "libc++abi-debug-noexcept", + "libsockets", + "libdlmalloc-debug" + ] + } + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@emsdk+//:emscripten_deps.bzl%emscripten_deps": { + "general": { + "bzlTransitiveDigest": "h0wQ3PSRx/Q9n+izTifYO8L728OTd9B5YbLOWcobVYE=", + "usagesDigest": "eqaMlu1tts7n29bG5zUl3DtA/9ARE+6aHrSK4X7kNno=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "emscripten_bin_linux": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", + "sha256": "27fc220a9ad98d323cad73531ff563e9838c9e1205f51ee2a5632bb4266a35d2", + "strip_prefix": "install", + "type": "tar.xz", + "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" + } + }, + "emscripten_bin_linux_arm64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", + "sha256": "2d03f8eb3f81dd94821658eefbb442a92b0b7601f4cfb08590590fd7bc467ef8", + "strip_prefix": "install", + "type": "tar.xz", + "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" + } + }, + "emscripten_bin_mac": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", + "sha256": "c06048915595726fc2e2da6a8db3134581a6287645fb818802a9734ff9785e77", + "strip_prefix": "install", + "type": "tar.xz", + "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" + } + }, + "emscripten_bin_mac_arm64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", + "sha256": "35d743453d0f91857b09f00d721037bb46753aaeae373bd7f64746338db11770", + "strip_prefix": "install", + "type": "tar.xz", + "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" + } + }, + "emscripten_bin_win": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/clang++.exe\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/llvm-ar.exe\",\n \"bin/llvm-dwarfdump.exe\",\n \"bin/llvm-nm.exe\",\n \"bin/llvm-objcopy.exe\",\n \"bin/wasm-ctor-eval.exe\",\n \"bin/wasm-emscripten-finalize.exe\",\n \"bin/wasm-ld.exe\",\n \"bin/wasm-metadce.exe\",\n \"bin/wasm-opt.exe\",\n \"bin/wasm-split.exe\",\n \"bin/wasm2js.exe\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar.exe\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", + "sha256": "3b576e825b26426bb72854ed98752df3fcb58cc3ab1dc116566e328b79a8abb3", + "strip_prefix": "install", + "type": "zip", + "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/win/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.zip" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "bazel_tools", + "rules_cc", + "rules_cc+" + ], + [ + "emsdk+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@pybind11_bazel+//:python_configure.bzl%extension": { + "general": { + "bzlTransitiveDigest": "d4N/SZrl3ONcmzE98rcV0Fsro0iUbjNQFTIiLiGuH+k=", + "usagesDigest": "fycyB39YnXIJkfWCIXLUKJMZzANcuLy9ZE73hRucjFk=", + "recordedFileInputs": { + "@@pybind11_bazel+//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e" + }, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "local_config_python": { + "repoRuleId": "@@pybind11_bazel+//:python_configure.bzl%python_configure", + "attributes": {} + }, + "pybind11": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file": "@@pybind11_bazel+//:pybind11.BUILD", + "strip_prefix": "pybind11-2.11.1", + "urls": [ + "https://github.com/pybind/pybind11/archive/v2.11.1.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "pybind11_bazel+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_fuzzing+//fuzzing/private:extensions.bzl%non_module_dependencies": { + "general": { + "bzlTransitiveDigest": "mGiTB79hRNjmeDTQdzkpCHyzXhErMbufeAmySBt7s5s=", + "usagesDigest": "wy6ISK6UOcBEjj/mvJ/S3WeXoO67X+1llb9yPyFtPgc=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "platforms": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz", + "https://github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz" + ], + "sha256": "8150406605389ececb6da07cbcb509d5637a3ab9a24bc69b1101531367d89d74" + } + }, + "rules_python": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8", + "strip_prefix": "rules_python-0.28.0", + "url": "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz" + } + }, + "bazel_skylib": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" + ] + } + }, + "com_google_absl": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.1.zip" + ], + "strip_prefix": "abseil-cpp-20240116.1", + "integrity": "sha256-7capMWOvWyoYbUaHF/b+I2U6XLMaHmky8KugWvfXYuk=" + } + }, + "rules_fuzzing_oss_fuzz": { + "repoRuleId": "@@rules_fuzzing+//fuzzing/private/oss_fuzz:repository.bzl%oss_fuzz_repository", + "attributes": {} + }, + "honggfuzz": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file": "@@rules_fuzzing+//:honggfuzz.BUILD", + "sha256": "6b18ba13bc1f36b7b950c72d80f19ea67fbadc0ac0bb297ec89ad91f2eaa423e", + "url": "https://github.com/google/honggfuzz/archive/2.5.zip", + "strip_prefix": "honggfuzz-2.5" + } + }, + "rules_fuzzing_jazzer": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", + "attributes": { + "sha256": "ee6feb569d88962d59cb59e8a31eb9d007c82683f3ebc64955fd5b96f277eec2", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer/0.20.1/jazzer-0.20.1.jar" + } + }, + "rules_fuzzing_jazzer_api": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", + "attributes": { + "sha256": "f5a60242bc408f7fa20fccf10d6c5c5ea1fcb3c6f44642fec5af88373ae7aa1b", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer-api/0.20.1/jazzer-api-0.20.1.jar" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_fuzzing+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_java+//java:rules_java_deps.bzl%compatibility_proxy": { + "general": { + "bzlTransitiveDigest": "84xJEZ1jnXXwo8BXMprvBm++rRt4jsTu9liBxz0ivps=", + "usagesDigest": "jTQDdLDxsS43zuRmg1faAjIEPWdLAbDAowI1pInQSoo=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "compatibility_proxy": { + "repoRuleId": "@@rules_java+//java:rules_java_deps.bzl%_compatibility_proxy_repo_rule", + "attributes": {} + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_java+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { + "general": { + "bzlTransitiveDigest": "sFhcgPbDQehmbD1EOXzX4H1q/CD5df8zwG4kp4jbvr8=", + "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_github_jetbrains_kotlin_git": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", + "attributes": { + "urls": [ + "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" + ], + "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" + } + }, + "com_github_jetbrains_kotlin": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", + "attributes": { + "git_repository_name": "com_github_jetbrains_kotlin_git", + "compiler_version": "1.9.23" + } + }, + "com_github_google_ksp": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", + "attributes": { + "urls": [ + "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" + ], + "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", + "strip_version": "1.9.23-1.0.20" + } + }, + "com_github_pinterest_ktlint": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", + "urls": [ + "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" + ], + "executable": true + } + }, + "rules_android": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", + "strip_prefix": "rules_android-0.1.1", + "urls": [ + "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_kotlin+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_nodejs+//nodejs:extensions.bzl%node": { + "general": { + "bzlTransitiveDigest": "rphcryfYrOY/P3emfTskC/GY5YuHcwMl2B2ncjaM8lY=", + "usagesDigest": "m7d0VXcsX/qS6DKMUBtdgjQzP2eMRHqsE4wv7dzr71I=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "nodejs_linux_amd64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "linux_amd64" + } + }, + "nodejs_linux_arm64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "linux_arm64" + } + }, + "nodejs_linux_s390x": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "linux_s390x" + } + }, + "nodejs_linux_ppc64le": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "linux_ppc64le" + } + }, + "nodejs_darwin_amd64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "darwin_amd64" + } + }, + "nodejs_darwin_arm64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "darwin_arm64" + } + }, + "nodejs_windows_amd64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.18.0", + "include_headers": false, + "platform": "windows_amd64" + } + }, + "nodejs": { + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", + "attributes": { + "user_node_repository_name": "nodejs" + } + }, + "nodejs_host": { + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", + "attributes": { + "user_node_repository_name": "nodejs" + } + }, + "nodejs_toolchains": { + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl%nodejs_toolchains_repo", + "attributes": { + "user_node_repository_name": "nodejs" + } + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@rules_python+//python/extensions:pip.bzl%pip": { + "general": { + "bzlTransitiveDigest": "Jbed6zJUJ6E78XRyOlnG1ryhBDvVeikdntPW1D40S/E=", + "usagesDigest": "fztm9ST3ki9E77tct2ZwJe0w38LvfMY8mRYp+YHxXQE=", + "recordedFileInputs": { + "@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", + "@@rules_fuzzing+//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", + "@@rules_python+//tools/publish/requirements_darwin.txt": "095d4a4f3d639dce831cd493367631cd51b53665292ab20194bac2c0c6458fa8", + "@@rules_python+//tools/publish/requirements_linux.txt": "d576e0d8542df61396a9b38deeaa183c24135ed5e8e73bb9622f298f2671811e", + "@@rules_python+//tools/publish/requirements_windows.txt": "d18538a3982beab378fd5687f4db33162ee1ece69801f9a451661b1b64286b76" + }, + "recordedDirentsInputs": {}, + "envVariables": { + "RULES_PYTHON_REPO_DEBUG": null, + "RULES_PYTHON_REPO_DEBUG_VERBOSITY": null + }, + "generatedRepoSpecs": { + "pip_deps_310_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "pip_deps_310", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_310_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "pip_deps_310", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_311_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "pip_deps_311", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_311_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "pip_deps_311", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_312_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "pip_deps_312", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_312_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "pip_deps_312", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_38_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "pip_deps_38", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_38_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "pip_deps_38", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_39_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "pip_deps_39", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_39_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "pip_deps_39", + "requirement": "setuptools<=70.3.0" + } + }, + "rules_fuzzing_py_deps_310_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "rules_fuzzing_py_deps_310", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_310_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "rules_fuzzing_py_deps_310", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_311_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_fuzzing_py_deps_311", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_311_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_fuzzing_py_deps_311", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_312_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "rules_fuzzing_py_deps_312", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_312_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "rules_fuzzing_py_deps_312", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_38_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "rules_fuzzing_py_deps_38", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_38_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "rules_fuzzing_py_deps_38", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_39_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "rules_fuzzing_py_deps_39", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_39_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "rules_fuzzing_py_deps_39", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "backports.tarfile-1.2.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "backports-tarfile==1.2.0", + "sha256": "77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", + "urls": [ + "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "backports_tarfile-1.2.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "backports-tarfile==1.2.0", + "sha256": "d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", + "urls": [ + "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_certifi_py3_none_any_922820b5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "certifi-2024.8.30-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "certifi==2024.8.30", + "sha256": "922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", + "urls": [ + "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_certifi_sdist_bec941d2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "certifi-2024.8.30.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "certifi==2024.8.30", + "sha256": "bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", + "urls": [ + "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", + "urls": [ + "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", + "urls": [ + "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", + "urls": [ + "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", + "urls": [ + "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", + "urls": [ + "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_sdist_1c39c601": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "cffi-1.17.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", + "urls": [ + "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", + "urls": [ + "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", + "urls": [ + "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", + "urls": [ + "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", + "urls": [ + "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", + "urls": [ + "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", + "urls": [ + "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", + "urls": [ + "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", + "urls": [ + "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", + "urls": [ + "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", + "urls": [ + "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", + "urls": [ + "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_sdist_223217c3": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "charset_normalizer-3.4.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", + "urls": [ + "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", + "urls": [ + "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", + "urls": [ + "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", + "urls": [ + "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", + "urls": [ + "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", + "urls": [ + "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", + "urls": [ + "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_sdist_315b9001": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "cryptography-43.0.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", + "urls": [ + "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "docutils-0.21.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "docutils==0.21.2", + "sha256": "dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", + "urls": [ + "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_docutils_sdist_3a6b1873": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "docutils-0.21.2.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "docutils==0.21.2", + "sha256": "3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", + "urls": [ + "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_idna_py3_none_any_946d195a": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "idna-3.10-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "idna==3.10", + "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", + "urls": [ + "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_idna_sdist_12f65c9b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "idna-3.10.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "idna==3.10", + "sha256": "12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", + "urls": [ + "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "importlib_metadata-8.5.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "importlib-metadata==8.5.0", + "sha256": "45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", + "urls": [ + "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_importlib_metadata_sdist_71522656": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "importlib_metadata-8.5.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "importlib-metadata==8.5.0", + "sha256": "71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", + "urls": [ + "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.classes-3.4.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-classes==3.4.0", + "sha256": "f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", + "urls": [ + "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco.classes-3.4.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-classes==3.4.0", + "sha256": "47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", + "urls": [ + "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.context-6.0.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-context==6.0.1", + "sha256": "f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", + "urls": [ + "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco_context-6.0.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-context==6.0.1", + "sha256": "9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", + "urls": [ + "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.functools-4.1.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-functools==4.1.0", + "sha256": "ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649", + "urls": [ + "https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco_functools-4.1.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-functools==4.1.0", + "sha256": "70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d", + "urls": [ + "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "jeepney-0.8.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jeepney==0.8.0", + "sha256": "c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", + "urls": [ + "https://files.pythonhosted.org/packages/ae/72/2a1e2290f1ab1e06f71f3d0f1646c9e4634e70e1d37491535e19266e8dc9/jeepney-0.8.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jeepney_sdist_5efe48d2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jeepney-0.8.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jeepney==0.8.0", + "sha256": "5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", + "urls": [ + "https://files.pythonhosted.org/packages/d6/f4/154cf374c2daf2020e05c3c6a03c91348d59b23c5366e968feb198306fdf/jeepney-0.8.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_keyring_py3_none_any_5426f817": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "keyring-25.4.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "keyring==25.4.1", + "sha256": "5426f817cf7f6f007ba5ec722b1bcad95a75b27d780343772ad76b17cb47b0bf", + "urls": [ + "https://files.pythonhosted.org/packages/83/25/e6d59e5f0a0508d0dca8bb98c7f7fd3772fc943ac3f53d5ab18a218d32c0/keyring-25.4.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_keyring_sdist_b07ebc55": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "keyring-25.4.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "keyring==25.4.1", + "sha256": "b07ebc55f3e8ed86ac81dd31ef14e81ace9dd9c3d4b5d77a6e9a2016d0d71a1b", + "urls": [ + "https://files.pythonhosted.org/packages/a5/1c/2bdbcfd5d59dc6274ffb175bc29aa07ecbfab196830e0cfbde7bd861a2ea/keyring-25.4.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "markdown_it_py-3.0.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "markdown-it-py==3.0.0", + "sha256": "355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", + "urls": [ + "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "markdown-it-py-3.0.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "markdown-it-py==3.0.0", + "sha256": "e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", + "urls": [ + "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_mdurl_py3_none_any_84008a41": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "mdurl-0.1.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "mdurl==0.1.2", + "sha256": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", + "urls": [ + "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_mdurl_sdist_bb413d29": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "mdurl-0.1.2.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "mdurl==0.1.2", + "sha256": "bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", + "urls": [ + "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "more_itertools-10.5.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "more-itertools==10.5.0", + "sha256": "037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", + "urls": [ + "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_more_itertools_sdist_5482bfef": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "more-itertools-10.5.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "more-itertools==10.5.0", + "sha256": "5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", + "urls": [ + "https://files.pythonhosted.org/packages/51/78/65922308c4248e0eb08ebcbe67c95d48615cc6f27854b6f2e57143e9178f/more-itertools-10.5.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86", + "urls": [ + "https://files.pythonhosted.org/packages/b3/89/1daff5d9ba5a95a157c092c7c5f39b8dd2b1ddb4559966f808d31cfb67e0/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811", + "urls": [ + "https://files.pythonhosted.org/packages/2c/b6/42fc3c69cabf86b6b81e4c051a9b6e249c5ba9f8155590222c2622961f58/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200", + "urls": [ + "https://files.pythonhosted.org/packages/45/b9/833f385403abaf0023c6547389ec7a7acf141ddd9d1f21573723a6eab39a/nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164", + "urls": [ + "https://files.pythonhosted.org/packages/05/2b/85977d9e11713b5747595ee61f381bc820749daf83f07b90b6c9964cf932/nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189", + "urls": [ + "https://files.pythonhosted.org/packages/72/f2/5c894d5265ab80a97c68ca36f25c8f6f0308abac649aaf152b74e7e854a8/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b", + "urls": [ + "https://files.pythonhosted.org/packages/c2/a8/3bb02d0c60a03ad3a112b76c46971e9480efa98a8946677b5a59f60130ca/nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307", + "urls": [ + "https://files.pythonhosted.org/packages/1b/63/6ab90d0e5225ab9780f6c9fb52254fa36b52bb7c188df9201d05b647e5e1/nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe", + "urls": [ + "https://files.pythonhosted.org/packages/a3/da/0c4e282bc3cff4a0adf37005fa1fb42257673fbc1bbf7d1ff639ec3d255a/nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a", + "urls": [ + "https://files.pythonhosted.org/packages/de/81/c291231463d21da5f8bba82c8167a6d6893cc5419b0639801ee5d3aeb8a9/nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204", + "urls": [ + "https://files.pythonhosted.org/packages/eb/61/73a007c74c37895fdf66e0edcd881f5eaa17a348ff02f4bb4bc906d61085/nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-win_amd64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844", + "urls": [ + "https://files.pythonhosted.org/packages/26/8d/53c5b19c4999bdc6ba95f246f4ef35ca83d7d7423e5e38be43ad66544e5d/nh3-0.2.18-cp37-abi3-win_amd64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_sdist_94a16692": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "nh3-0.2.18.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4", + "urls": [ + "https://files.pythonhosted.org/packages/62/73/10df50b42ddb547a907deeb2f3c9823022580a7a47281e8eae8e003a9639/nh3-0.2.18.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "pkginfo-1.10.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pkginfo==1.10.0", + "sha256": "889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097", + "urls": [ + "https://files.pythonhosted.org/packages/56/09/054aea9b7534a15ad38a363a2bd974c20646ab1582a387a95b8df1bfea1c/pkginfo-1.10.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pkginfo_sdist_5df73835": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pkginfo-1.10.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pkginfo==1.10.0", + "sha256": "5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297", + "urls": [ + "https://files.pythonhosted.org/packages/2f/72/347ec5be4adc85c182ed2823d8d1c7b51e13b9a6b0c1aae59582eca652df/pkginfo-1.10.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "pycparser-2.22-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pycparser==2.22", + "sha256": "c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", + "urls": [ + "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pycparser_sdist_491c8be9": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pycparser-2.22.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pycparser==2.22", + "sha256": "491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", + "urls": [ + "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "pygments-2.18.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pygments==2.18.0", + "sha256": "b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", + "urls": [ + "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pygments_sdist_786ff802": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pygments-2.18.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pygments==2.18.0", + "sha256": "786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", + "urls": [ + "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_windows_x86_64" + ], + "filename": "pywin32_ctypes-0.2.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pywin32-ctypes==0.2.3", + "sha256": "8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", + "urls": [ + "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pywin32-ctypes-0.2.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pywin32-ctypes==0.2.3", + "sha256": "d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", + "urls": [ + "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "readme_renderer-44.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "readme-renderer==44.0", + "sha256": "2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", + "urls": [ + "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_readme_renderer_sdist_8712034e": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "readme_renderer-44.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "readme-renderer==44.0", + "sha256": "8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", + "urls": [ + "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_requests_py3_none_any_70761cfe": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "requests-2.32.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests==2.32.3", + "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", + "urls": [ + "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_requests_sdist_55365417": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "requests-2.32.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests==2.32.3", + "sha256": "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", + "urls": [ + "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "requests_toolbelt-1.0.0-py2.py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests-toolbelt==1.0.0", + "sha256": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", + "urls": [ + "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "requests-toolbelt-1.0.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests-toolbelt==1.0.0", + "sha256": "7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", + "urls": [ + "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "rfc3986-2.0.0-py2.py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rfc3986==2.0.0", + "sha256": "50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", + "urls": [ + "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_rfc3986_sdist_97aacf9d": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "rfc3986-2.0.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rfc3986==2.0.0", + "sha256": "97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", + "urls": [ + "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_rich_py3_none_any_6049d5e6": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "rich-13.9.4-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rich==13.9.4", + "sha256": "6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", + "urls": [ + "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_rich_sdist_43959497": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "rich-13.9.4.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rich==13.9.4", + "sha256": "439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", + "urls": [ + "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "SecretStorage-3.3.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "secretstorage==3.3.3", + "sha256": "f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", + "urls": [ + "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_secretstorage_sdist_2403533e": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "SecretStorage-3.3.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "secretstorage==3.3.3", + "sha256": "2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", + "urls": [ + "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_twine_py3_none_any_215dbe7b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "twine-5.1.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "twine==5.1.1", + "sha256": "215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997", + "urls": [ + "https://files.pythonhosted.org/packages/5d/ec/00f9d5fd040ae29867355e559a94e9a8429225a0284a3f5f091a3878bfc0/twine-5.1.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_twine_sdist_9aa08251": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "twine-5.1.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "twine==5.1.1", + "sha256": "9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db", + "urls": [ + "https://files.pythonhosted.org/packages/77/68/bd982e5e949ef8334e6f7dcf76ae40922a8750aa2e347291ae1477a4782b/twine-5.1.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "urllib3-2.2.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "urllib3==2.2.3", + "sha256": "ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", + "urls": [ + "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_urllib3_sdist_e7d814a8": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "urllib3-2.2.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "urllib3==2.2.3", + "sha256": "e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", + "urls": [ + "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_zipp_py3_none_any_a817ac80": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "zipp-3.20.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "zipp==3.20.2", + "sha256": "a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", + "urls": [ + "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_zipp_sdist_bc9eb26f": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "zipp-3.20.2.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "zipp==3.20.2", + "sha256": "bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", + "urls": [ + "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz" + ] + } + }, + "pip_deps": { + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", + "attributes": { + "repo_name": "pip_deps", + "extra_hub_aliases": {}, + "whl_map": { + "numpy": "{\"pip_deps_310_numpy\":[{\"version\":\"3.10\"}],\"pip_deps_311_numpy\":[{\"version\":\"3.11\"}],\"pip_deps_312_numpy\":[{\"version\":\"3.12\"}],\"pip_deps_38_numpy\":[{\"version\":\"3.8\"}],\"pip_deps_39_numpy\":[{\"version\":\"3.9\"}]}", + "setuptools": "{\"pip_deps_310_setuptools\":[{\"version\":\"3.10\"}],\"pip_deps_311_setuptools\":[{\"version\":\"3.11\"}],\"pip_deps_312_setuptools\":[{\"version\":\"3.12\"}],\"pip_deps_38_setuptools\":[{\"version\":\"3.8\"}],\"pip_deps_39_setuptools\":[{\"version\":\"3.9\"}]}" + }, + "packages": [ + "numpy", + "setuptools" + ], + "groups": {} + } + }, + "rules_fuzzing_py_deps": { + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", + "attributes": { + "repo_name": "rules_fuzzing_py_deps", + "extra_hub_aliases": {}, + "whl_map": { + "absl_py": "{\"rules_fuzzing_py_deps_310_absl_py\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_absl_py\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_absl_py\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_absl_py\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_absl_py\":[{\"version\":\"3.9\"}]}", + "six": "{\"rules_fuzzing_py_deps_310_six\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_six\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_six\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_six\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_six\":[{\"version\":\"3.9\"}]}" + }, + "packages": [ + "absl_py", + "six" + ], + "groups": {} + } + }, + "rules_python_publish_deps": { + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", + "attributes": { + "repo_name": "rules_python_publish_deps", + "extra_hub_aliases": {}, + "whl_map": { + "backports_tarfile": "{\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\":[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\":[{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"version\":\"3.11\"}]}", + "certifi": "{\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\":[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_certifi_sdist_bec941d2\":[{\"filename\":\"certifi-2024.8.30.tar.gz\",\"version\":\"3.11\"}]}", + "cffi": "{\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_sdist_1c39c601\":[{\"filename\":\"cffi-1.17.1.tar.gz\",\"version\":\"3.11\"}]}", + "charset_normalizer": "{\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\":[{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\":[{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", + "cryptography": "{\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_sdist_315b9001\":[{\"filename\":\"cryptography-43.0.3.tar.gz\",\"version\":\"3.11\"}]}", + "docutils": "{\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\":[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\":[{\"filename\":\"docutils-0.21.2.tar.gz\",\"version\":\"3.11\"}]}", + "idna": "{\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\":[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_idna_sdist_12f65c9b\":[{\"filename\":\"idna-3.10.tar.gz\",\"version\":\"3.11\"}]}", + "importlib_metadata": "{\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\":[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\":[{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_classes": "{\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\":[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\":[{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_context": "{\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\":[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\":[{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_functools": "{\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\":[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\":[{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"version\":\"3.11\"}]}", + "jeepney": "{\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\":[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\":[{\"filename\":\"jeepney-0.8.0.tar.gz\",\"version\":\"3.11\"}]}", + "keyring": "{\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\":[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\":[{\"filename\":\"keyring-25.4.1.tar.gz\",\"version\":\"3.11\"}]}", + "markdown_it_py": "{\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\":[{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\":[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "mdurl": "{\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\":[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\":[{\"filename\":\"mdurl-0.1.2.tar.gz\",\"version\":\"3.11\"}]}", + "more_itertools": "{\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\":[{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\":[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"version\":\"3.11\"}]}", + "nh3": "{\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_sdist_94a16692\":[{\"filename\":\"nh3-0.2.18.tar.gz\",\"version\":\"3.11\"}]}", + "pkginfo": "{\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\":[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\":[{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"version\":\"3.11\"}]}", + "pycparser": "{\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\":[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\":[{\"filename\":\"pycparser-2.22.tar.gz\",\"version\":\"3.11\"}]}", + "pygments": "{\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\":[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pygments_sdist_786ff802\":[{\"filename\":\"pygments-2.18.0.tar.gz\",\"version\":\"3.11\"}]}", + "pywin32_ctypes": "{\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\":[{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\":[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"version\":\"3.11\"}]}", + "readme_renderer": "{\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\":[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\":[{\"filename\":\"readme_renderer-44.0.tar.gz\",\"version\":\"3.11\"}]}", + "requests": "{\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\":[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_sdist_55365417\":[{\"filename\":\"requests-2.32.3.tar.gz\",\"version\":\"3.11\"}]}", + "requests_toolbelt": "{\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\":[{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\":[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "rfc3986": "{\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\":[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\":[{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "rich": "{\"rules_python_publish_deps_311_rich_py3_none_any_6049d5e6\":[{\"filename\":\"rich-13.9.4-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rich_sdist_43959497\":[{\"filename\":\"rich-13.9.4.tar.gz\",\"version\":\"3.11\"}]}", + "secretstorage": "{\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\":[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\":[{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"version\":\"3.11\"}]}", + "twine": "{\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\":[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_twine_sdist_9aa08251\":[{\"filename\":\"twine-5.1.1.tar.gz\",\"version\":\"3.11\"}]}", + "urllib3": "{\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\":[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\":[{\"filename\":\"urllib3-2.2.3.tar.gz\",\"version\":\"3.11\"}]}", + "zipp": "{\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\":[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\":[{\"filename\":\"zipp-3.20.2.tar.gz\",\"version\":\"3.11\"}]}" + }, + "packages": [ + "backports_tarfile", + "certifi", + "charset_normalizer", + "docutils", + "idna", + "importlib_metadata", + "jaraco_classes", + "jaraco_context", + "jaraco_functools", + "keyring", + "markdown_it_py", + "mdurl", + "more_itertools", + "nh3", + "pkginfo", + "pygments", + "readme_renderer", + "requests", + "requests_toolbelt", + "rfc3986", + "rich", + "twine", + "urllib3", + "zipp" + ], + "groups": {} + } + } + }, + "moduleExtensionMetadata": { + "useAllRepos": "NO", + "reproducible": false + }, + "recordedRepoMappingEntries": [ + [ + "bazel_features+", + "bazel_features_globals", + "bazel_features++version_extension+bazel_features_globals" + ], + [ + "bazel_features+", + "bazel_features_version", + "bazel_features++version_extension+bazel_features_version" + ], + [ + "rules_python+", + "bazel_features", + "bazel_features+" + ], + [ + "rules_python+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "rules_python+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_python+", + "pypi__build", + "rules_python++internal_deps+pypi__build" + ], + [ + "rules_python+", + "pypi__click", + "rules_python++internal_deps+pypi__click" + ], + [ + "rules_python+", + "pypi__colorama", + "rules_python++internal_deps+pypi__colorama" + ], + [ + "rules_python+", + "pypi__importlib_metadata", + "rules_python++internal_deps+pypi__importlib_metadata" + ], + [ + "rules_python+", + "pypi__installer", + "rules_python++internal_deps+pypi__installer" + ], + [ + "rules_python+", + "pypi__more_itertools", + "rules_python++internal_deps+pypi__more_itertools" + ], + [ + "rules_python+", + "pypi__packaging", + "rules_python++internal_deps+pypi__packaging" + ], + [ + "rules_python+", + "pypi__pep517", + "rules_python++internal_deps+pypi__pep517" + ], + [ + "rules_python+", + "pypi__pip", + "rules_python++internal_deps+pypi__pip" + ], + [ + "rules_python+", + "pypi__pip_tools", + "rules_python++internal_deps+pypi__pip_tools" + ], + [ + "rules_python+", + "pypi__pyproject_hooks", + "rules_python++internal_deps+pypi__pyproject_hooks" + ], + [ + "rules_python+", + "pypi__setuptools", + "rules_python++internal_deps+pypi__setuptools" + ], + [ + "rules_python+", + "pypi__tomli", + "rules_python++internal_deps+pypi__tomli" + ], + [ + "rules_python+", + "pypi__wheel", + "rules_python++internal_deps+pypi__wheel" + ], + [ + "rules_python+", + "pypi__zipp", + "rules_python++internal_deps+pypi__zipp" + ], + [ + "rules_python+", + "pythons_hub", + "rules_python++python+pythons_hub" + ], + [ + "rules_python++python+pythons_hub", + "python_3_10_host", + "rules_python++python+python_3_10_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_11_host", + "rules_python++python+python_3_11_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_12_host", + "rules_python++python+python_3_12_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_13_host", + "rules_python++python+python_3_13_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_8_host", + "rules_python++python+python_3_8_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_9_host", + "rules_python++python+python_3_9_host" + ] + ] + } + }, + "@@rules_python+//python/uv:uv.bzl%uv": { + "general": { + "bzlTransitiveDigest": "Xpqjnjzy6zZ90Es9Wa888ZLHhn7IsNGbph/e6qoxzw8=", + "usagesDigest": "vJ5RHUxAnV24M5swNGiAnkdxMx3Hp/iOLmNANTC5Xc8=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "uv": { + "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", + "attributes": { + "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'", + "toolchain_names": [ + "none" + ], + "toolchain_implementations": { + "none": "'@@rules_python+//python:none'" + }, + "toolchain_compatible_with": { + "none": [ + "@platforms//:incompatible" + ] + }, + "toolchain_target_settings": {} + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_python+", + "platforms", + "platforms" + ] + ] + } + } + } +} diff --git a/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/hello-world.cc b/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/hello-world.cc new file mode 100644 index 000000000..ee72c5317 --- /dev/null +++ b/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/hello-world.cc @@ -0,0 +1,6 @@ +#include + +int main(int argc, char** argv) { + std::cout << "hello world!" << std::endl; + return 0; +} diff --git a/emsdk-cache/emsdk-main/docker/Dockerfile b/emsdk-cache/emsdk-main/docker/Dockerfile new file mode 100644 index 000000000..2c63a4a11 --- /dev/null +++ b/emsdk-cache/emsdk-main/docker/Dockerfile @@ -0,0 +1,131 @@ +FROM ubuntu:jammy AS stage_build + +ARG EMSCRIPTEN_VERSION=tot +ENV EMSDK /emsdk + +# ------------------------------------------------------------------------------ + +RUN echo "## Start building" \ + && echo "## Update and install packages" \ + && apt-get -qq -y update \ + && apt-get -qq install -y --no-install-recommends \ + binutils \ + build-essential \ + ca-certificates \ + file \ + git \ + python3 \ + python3-pip \ + && echo "## Done" + +# Copy the contents of this repository to the container +COPY . ${EMSDK} + +RUN echo "## Install Emscripten" \ + && cd ${EMSDK} \ + && ./emsdk install ${EMSCRIPTEN_VERSION} \ + && echo "## Done" + +# This generates configuration that contains all valid paths according to installed SDK +# TODO(sbc): We should be able to use just emcc -v here but it doesn't +# currently create the sanity file. +RUN cd ${EMSDK} \ + && echo "## Generate standard configuration" \ + && ./emsdk activate ${EMSCRIPTEN_VERSION} \ + && chmod 777 ${EMSDK}/upstream/emscripten \ + && chmod -R 777 ${EMSDK}/upstream/emscripten/cache \ + && echo "int main() { return 0; }" > hello.c \ + && ${EMSDK}/upstream/emscripten/emcc -c hello.c \ + && cat ${EMSDK}/upstream/emscripten/cache/sanity.txt \ + && echo "## Done" + +# Cleanup Emscripten installation and strip some symbols +RUN echo "## Aggressive optimization: Remove debug symbols" \ + && cd ${EMSDK} && . ./emsdk_env.sh \ + # Remove debugging symbols from embedded node (extra 7MB) + && strip -s `which node` \ + # Tests consume ~80MB disc space + && rm -fr ${EMSDK}/upstream/emscripten/tests \ + # strip out symbols from clang (~extra 50MB disc space) + && find ${EMSDK}/upstream/bin -type f -exec strip -s {} + || true \ + && echo "## Done" + +# ------------------------------------------------------------------------------ +# -------------------------------- STAGE DEPLOY -------------------------------- +# ------------------------------------------------------------------------------ + +FROM ubuntu:jammy AS stage_deploy + +COPY --from=stage_build /emsdk /emsdk + +# These fallback environment variables are intended for situations where the +# entrypoint is not utilized (as in a derived image) or overridden (e.g. when +# using `--entrypoint /bin/bash` in CLI). +# This corresponds to the env variables set during: `source ./emsdk_env.sh` +ENV EMSDK=/emsdk \ + PATH="/emsdk:/emsdk/upstream/emscripten:/emsdk/node/22.16.0_64bit/bin:${PATH}" + +# ------------------------------------------------------------------------------ +# Create a 'standard` 1000:1000 user +# Thanks to that this image can be executed as non-root user and created files +# will not require root access level on host machine Please note that this +# solution even if widely spread (i.e. Node.js uses it) is far from perfect as +# user 1000:1000 might not exist on host machine, and in this case running any +# docker image will cause other random problems (mostly due `$HOME` pointing to +# `/`) +RUN echo "## Create emscripten user (1000:1000)" \ + && groupadd --gid 1000 emscripten \ + && useradd --uid 1000 --gid emscripten --shell /bin/bash --create-home emscripten \ + && echo "## Done" + +# ------------------------------------------------------------------------------ + +RUN echo "## Update and install packages" \ + && apt-get -qq -y update \ + # Somewhere in here apt sets up tzdata which asks for your time zone and blocks + # waiting for the answer which you can't give as docker build doesn't read from + # the terminal. The env vars set here avoid the interactive prompt and set the TZ. + && DEBIAN_FRONTEND="noninteractive" TZ="America/San_Francisco" apt-get -qq install -y --no-install-recommends \ + sudo \ + libxml2 \ + ca-certificates \ + python3 \ + python3-pip \ + wget \ + curl \ + zip \ + unzip \ + git \ + git-lfs \ + ssh-client \ + build-essential \ + make \ + ant \ + libidn12 \ + cmake \ + openjdk-11-jre-headless \ + # Standard Cleanup on Debian images + && apt-get -y clean \ + && apt-get -y autoclean \ + && apt-get -y autoremove \ + && rm -rf /var/lib/apt/lists/* \ + && rm -rf /var/cache/debconf/*-old \ + && rm -rf /usr/share/doc/* \ + && rm -rf /usr/share/man/?? \ + && rm -rf /usr/share/man/??_* \ + && echo "## Done" + +# ------------------------------------------------------------------------------ +# Use commonly used /src as working directory +WORKDIR /src + +ENTRYPOINT ["/emsdk/docker/entrypoint.sh"] + +LABEL maintainer="kontakt@trzeci.eu" \ + org.label-schema.name="emscripten" \ + org.label-schema.description="The official container with Emscripten SDK" \ + org.label-schema.url="https://emscripten.org" \ + org.label-schema.vcs-url="https://github.com/emscripten-core/emsdk" \ + org.label-schema.docker.dockerfile="/docker/Dockerfile" + +# ------------------------------------------------------------------------------ diff --git a/emsdk-cache/emsdk-main/docker/Makefile b/emsdk-cache/emsdk-main/docker/Makefile new file mode 100644 index 000000000..749ecfe94 --- /dev/null +++ b/emsdk-cache/emsdk-main/docker/Makefile @@ -0,0 +1,31 @@ +# A Makefile to build, test, tag and publish the Emscripten SDK Docker container. + +# Emscripten version to build: Should match the version that has been already released. +# i.e.: 1.39.18 +version = +alias = +only_alias = + +image_name ?= emscripten/emsdk + +.TEST: +ifndef version + $(error argument 'version' is not set. Please call `make version=SOME_VERSION ...`) +endif + +build: Dockerfile .TEST + cd .. && docker build --progress=plain --network host --build-arg=EMSCRIPTEN_VERSION=${version} -t ${image_name}:${version} -f docker/$< . + +test: test_dockerimage.sh .TEST + # test as non-root + # test fallback env variables by overriding the entrypoint + docker run --rm -u `id -u`:`id -g` -w /emsdk/docker --net=host --entrypoint /bin/bash ${image_name}:${version} $< + +push: .TEST +ifndef only_alias + docker push ${image_name}:${version} +endif +ifdef alias + docker tag ${image_name}:${version} ${image_name}:${alias} + docker push ${image_name}:${alias} +endif diff --git a/emsdk-cache/emsdk-main/docker/README.md b/emsdk-cache/emsdk-main/docker/README.md new file mode 100644 index 000000000..62e6c022a --- /dev/null +++ b/emsdk-cache/emsdk-main/docker/README.md @@ -0,0 +1,125 @@ +# Dockerfile for EMSDK + +This Dockerfile builds a self-contained version of Emscripten SDK that enables Emscripten to be used without any +other installation on the host system. + +It is published at https://hub.docker.com/r/emscripten/emsdk. + +### Usage + +Simple usage of this container to compile a hello-world +```bash +# create helloworld.cpp +cat << EOF > helloworld.cpp +#include +int main() { + std::cout << "Hello World!" << std::endl; + return 0; +} +EOF +``` + +```bash +# compile with docker image +docker run \ + --rm \ + -v "$(pwd):$(pwd)" \ + -u $(id -u):$(id -g) \ + emscripten/emsdk \ + emcc helloworld.cpp -o helloworld.js + +# execute on host machine +node helloworld.js +``` + +Teardown of compilation command: + +|part|description| +|---|---| +|`docker run`| A standard command to run a command in a container| +|`--rm`|remove a container after execution (optimization)| +|`-v "$(pwd):$(pwd)"`|Mounting current folder from the host system into mirrored path on the container
    TIP: This helps to investigate possible problem as we preserve exactly the same paths like in host. In such case modern editors (like Sublime, Atom, VS Code) let us to CTRL+Click on a problematic file | +|`-u $(id -u):$(id -g)`| Run the container as a non-root user with the same UID and GID as local user. Hence all files produced by this are accessible to non-root users| +|`emscripten/emsdk`|Get the latest tag of this container| +|`emcc helloworld.cpp -o helloworld.js`|Execute `emcc` command with following arguments inside container, effectively compile our source code| + + + +### Building Dockerfile + +This image has following optional arguments + +| arg | default value | description | +| --- | --- | --- | +| `EMSCRIPTEN_VERSION` | `tot`
    (special case, tip-of-tree) | One of released version of Emscripten. For example `2.0.0`
    Minimal supported version is **1.39.0** | + +**Building** + +This step will build Dockerfile as given tag on local machine +```bash +# using docker +docker build \ + --network host \ + --build-arg=EMSCRIPTEN_VERSION=1.39.17 \ + -t emscripten/emsdk:1.39.17 \ + -f docker/Dockerfile \ + . +``` +```bash +# using predefined make target +make version=1.39.17 build test +``` + +**Tagging** + +In case of using `docker build` command directly, given `--tag` should match version of released Emscripten (you can see list of non-legacy versions by executing `emsdk list`). + +**Pushing** + +This step will take local image and push to default docker registry. You need to make sure that you logged in docker cli (`docker login`) and you have rights to push to that registry. + +```bash +# using docker +docker push emscripten/emsdk:1.39.17 +``` +```bash +# using predefined make target +make version=1.39.17 push +``` + +In case of pushing the most recent version, this version should be also tagged as `latest` and pushed. +```bash +# using docker cli +docker tag emscripten/emsdk:1.39.17 emscripten/emsdk:latest +docker push emscripten/emsdk:latest + +```bash +# using make +make version=1.39.17 alias=latest push +``` + +### Extending + +If your project uses packages that this image doesn't provide you might want to: +* Contribute to this repo: Maybe your dependency is either non-intrusive or could be useful for other people +* Create custom image that bases on this image + +1. create own Dockerfile that holds: + ```dockerfile + # Point at any base image that you find suitable to extend. + FROM emscripten/emsdk:1.39.17 + + # Install required tools that are useful for your project i.e. ninja-build + RUN apt update && apt install -y ninja-build + ``` + +2. build it + ```bash + docker build -t extended_emscripten . + ``` + +3. test + ```bash + docker run --rm extended_emscripten ninja --version + # 1.10.0 + ``` diff --git a/emsdk-cache/emsdk-main/docker/entrypoint.sh b/emsdk-cache/emsdk-main/docker/entrypoint.sh new file mode 100644 index 000000000..ceadfc438 --- /dev/null +++ b/emsdk-cache/emsdk-main/docker/entrypoint.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -e + +# Set-up PATH and other environment variables +EMSDK_QUIET=1 source /emsdk/emsdk_env.sh + +exec "$@" diff --git a/emsdk-cache/emsdk-main/docker/test_dockerimage.sh b/emsdk-cache/emsdk-main/docker/test_dockerimage.sh new file mode 100644 index 000000000..09648206b --- /dev/null +++ b/emsdk-cache/emsdk-main/docker/test_dockerimage.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +set -ex + +if [ $EUID -eq 0 ]; then + sudo -u nobody `which emcc` --version +fi + +which emsdk +node --version +npm --version +python3 --version +pip3 --version +em++ --version +emcc --version +java -version +cmake --version + +exit_code=0 + +# test emcc compilation +echo 'int main() { return 0; }' | emcc -o /tmp/main.js -xc - +node /tmp/main.js || exit_code=$? +if [ $exit_code -ne 0 ]; then + echo "Node exited with non-zero exit code: $exit_code" + exit $exit_code +fi + +# test embuilder +embuilder build zlib --force diff --git a/emsdk-cache/emsdk-main/emcmdprompt.bat b/emsdk-cache/emsdk-main/emcmdprompt.bat new file mode 100644 index 000000000..89803aef7 --- /dev/null +++ b/emsdk-cache/emsdk-main/emcmdprompt.bat @@ -0,0 +1 @@ +@cmd /k call emsdk_env.bat \ No newline at end of file diff --git a/emsdk-cache/emsdk-main/emscripten-releases-tags.json b/emsdk-cache/emsdk-main/emscripten-releases-tags.json new file mode 100644 index 000000000..de1e5f4bd --- /dev/null +++ b/emsdk-cache/emsdk-main/emscripten-releases-tags.json @@ -0,0 +1,279 @@ +{ + "aliases": { + "latest": "4.0.13", + "latest-sdk": "latest", + "latest-arm64-linux": "latest", + "latest-64bit": "latest", + "sdk-latest-64bit": "latest", + "latest-upstream": "latest", + "latest-clang-upstream": "latest", + "latest-releases-upstream": "latest" + }, + "releases": { + "4.0.13": "32b8ae819674cb42b8ac2191afeb9571e33ad5e2", + "4.0.13-asserts": "17d4746128fd81d192c1685da52332c5221799bb", + "4.0.12": "209b886304498eff50dd835850dc5715803401ed", + "4.0.12-asserts": "a9e9ee083503b842a14d31db764e31d65afb8910", + "4.0.11": "7033fec38817ec01909b044ea0193ddd5057255c", + "4.0.11-asserts": "0eacb0d6", + "4.0.10": "8103ffedfb0c42d231c6af6859a5a1a832260b43", + "4.0.10-asserts": "ccf48a673362f11ddb6c3656405bb6a03b344052", + "4.0.9": "cb2a69bce627bd2247624c71fc12907cb8785d2f", + "4.0.9-asserts": "27f1e0801c6ec5ea4d9a9e1d573eb1fead3525f1", + "4.0.8": "56f86607aeb458086e72f23188789be2ee0e971a", + "4.0.8-asserts": "ab275365d4057cf92d698ef99744d66cd8c7cba9", + "4.0.7": "ef4e9cedeac3332e4738087567552063f4f250d3", + "4.0.7-asserts": "4bef8973dc12f5f38022f323d67c16237bbd2962", + "4.0.6": "14767574a5c37ff9526a253a65ddbe0811cb3667", + "4.0.6-asserts": "4050eaf1fd8e1c191198ec4ba8c346c4f3da0dc8", + "4.0.5": "d7f8ff5e2ca3539c33fae81e98f7c56ef9fa1239", + "4.0.5-asserts": "71269375282224b2e662bbe009e2e3ebc40db67f", + "4.0.4": "ea71afcf5a172125179a07ff1731de6e81c92222", + "4.0.4-asserts": "5121692126f7c96d86a13dc8462e758813e30123", + "4.0.3": "de2109f0e5e7278d470da11de526aed16c527722", + "4.0.3-asserts": "bae6703fb819bd84fb4dfb5e87b41cf93b6d3f2b", + "4.0.2": "cc8eba40de8235f9c33d92463018f87b3edaa09e", + "4.0.2-asserts": "dc575ac9a214463b2b3503c11a1a31db665b4414", + "4.0.1": "5ff495a591978fdf8a16f2d172be3616f3150d1e", + "4.0.1-asserts": "c2e46b78d3dde701187d685f8c175f17425bee68", + "4.0.0": "3ebc04a3dab24522a5bf8ced3ce3caea816558f6", + "4.0.0-asserts": "912ac2d711bb343205f314564ed287d883a7d888", + "3.1.74": "c2655005234810c7c42e02a18e4696554abe0352", + "3.1.74-asserts": "88e95307accc1f4b247b86b7a0c0e6beaf07f844", + "3.1.73": "b363a836e75a245c548b7a6a021822d8c9e4c6df", + "3.1.73-asserts": "86f3e54628089634c6b73039955388296e920291", + "3.1.72": "7a360458327cd24c2a7aab428bdbcb5bca8810e4", + "3.1.72-asserts": "92d39398c0016e73821548a4cd9df3df1358f6d9", + "3.1.71": "7ee0f9488f152e9e9cf0d4d243970e03742f1a5c", + "3.1.71-asserts": "15b142643065fe241138c6785cb8e384504f76e8", + "3.1.70": "6fa6145af41e835f3d13edf7d308c08e4573357a", + "3.1.70-asserts": "11444ec05e2cc64ef42c4f33c6e3a2a7534694f2", + "3.1.69": "8fe01288bc35668c13316324336ea00195dfb814", + "3.1.69-asserts": "cf6f9d1b4026ec7aec33aceb68077c704b52b068", + "3.1.68": "b52d8c9150dc7d4c8e4a7a08c7a9b4006c9abe49", + "3.1.68-asserts": "1565c9e5a4547215a1b63013607bf7a1cbb3d9d3", + "3.1.67": "4ae62984ea36ef0e5bfcbd0ed9b62f04bee6426a", + "3.1.67-asserts": "7cfc00962efe07f2e2ff3383f59519dc5bea4f82", + "3.1.66": "243eae09cf5c20c4fde51a620b92f483255c8214", + "3.1.66-asserts": "c5d25114210455d19cb9232171824292005a5080", + "3.1.65": "fdcf56c75a1d27fdff6525a7e03423595485ca19", + "3.1.65-asserts": "3231fb47481b2248c31002cdd7324a9155135ce0", + "3.1.64": "fd61bacaf40131f74987e649a135f1dd559aff60", + "3.1.64-asserts": "42c1d51ceb8e41e70ce1d8dc1bc534c0f609c196", + "3.1.63": "aeb36a44b29e8ca9f4c7efbb4735b69003ac2bb9", + "3.1.63-asserts": "b0275806047b42f2f88998c5c8159aec90e195ab", + "3.1.62": "d52176ac8e07c47c1773bb2776ebd91e3886c3af", + "3.1.62-asserts": "9d9e7deac8b91fbdd8804045595e807f9d774a53", + "3.1.61": "28e4a74b579b4157bda5fc34f23c7d3905a8bd6c", + "3.1.61-asserts": "7fc912687ba2077b3aeae472b51c238b3d201c46", + "3.1.60": "87709b5747de5b1993fe314285528bf4b65c23e1", + "3.1.60-asserts": "e2388e8a528890b8f3ff7b9ab4f52dbe2aeb38b9", + "3.1.59": "e20ee09a8a740544c4bc6de5d4ba5f81f74b74d6", + "3.1.59-asserts": "10ae1e83ccce9f4a363bb2e3090ba8fc32d25851", + "3.1.58": "a4d4afb626c5010f6ccda4638b8d77579a63782e", + "3.1.58-asserts": "5bc1c7108d4d91db316b24a75593a37c1117c266", + "3.1.57": "523b29e1b99a61069a2fa9f9d3cc9be1c4c53d4d", + "3.1.57-asserts": "10b736eeeac0dae3fd5bc29c6b3e32f7f7adf941", + "3.1.56": "9d106be887796484c4aaffc9dc45f48a8810f336", + "3.1.56-asserts": "2b9c4b912b611dc51f9019e11371e3cdd36fa64e", + "3.1.55": "f5557e3b7166d05bddb5977e363ec48cd06e9d32", + "3.1.55-asserts": "eb23cc30563325fd6dc97fcf85ddf26489ab9110", + "3.1.54": "aa1588cd28c250a60457b5ed342557c762f416e3", + "3.1.54-asserts": "d525f56cb765ed6884a0c443dbb906b63b148915", + "3.1.53": "e5523d57a0e0dcf80f3b101bbc23613fcc3101aa", + "3.1.53-asserts": "152cef4e00fc17776576bcc57f53badd21b92509", + "3.1.52": "ce2097fb81953331e65543c20b437475f218127c", + "3.1.52-asserts": "49e9a37dd6d1d65aa92472d8908cb8b88092dfaf", + "3.1.51": "4f416d92fbff66ce79901cfc8263768f1b25dd3e", + "3.1.51-asserts": "9035c99beb760aa0ea381bdf11abf440d88bb451", + "3.1.50": "2ce4170cef5ce46f337f9fd907b614a8db772c7d", + "3.1.50-asserts": "0a6fe6ef5880bf5b035d396f3875fda9b7c4bb60", + "3.1.49": "bd0a2e230466dadb36efc71aa7271f17c6c35420", + "3.1.49-asserts": "4ea035c5bbd6168dae34c970b5f56d7aa4dcf952", + "3.1.48": "694434b6d47c5f6eff2c8fbd9eeb016c977ae9dc", + "3.1.48-asserts": "6e2b8a97c6db82089c3a405bc88ea9fb125deb16", + "3.1.47": "39ade279e75e6d17dd6b7eb9fba2006e61fe966b", + "3.1.47-asserts": "dc49d84ed226a5a30a5117cefc07c781f6c0d16e", + "3.1.46": "21644188d5c473e92f1d7df2f9f60c758a78a486", + "3.1.46-asserts": "3e09b252d0d5a8e045d2ca92c606bfb9874bddf8", + "3.1.45": "2b7c5fb8ffeac3315deb1f82ab7bf8da544f84a1", + "3.1.45-asserts": "2aec03dfd8ce68c95316116dafbe30e273f32a81", + "3.1.44": "b90507fcf011da61bacfca613569d882f7749552", + "3.1.44-asserts": "06d00b0c62e435b743aa37c67b4ab76bc8568c79", + "3.1.43": "bf3c159888633d232c0507f4c76cc156a43c32dc", + "3.1.43-asserts": "3ec53a819a5958665d6bb0ac895c99546921b6ef", + "3.1.42": "9d73bf4bd5b5c9ce6e51be0ed5ce6599fcb28e9e", + "3.1.42-asserts": "7a622e0b66ee095aea9766375a2774b68c8bd8ef", + "3.1.41": "eb71265ef0ab905620015adbfedacf88c5dbf021", + "3.1.41-asserts": "064607aeccaffd93175bb40c072271c0393d71a5", + "3.1.40": "c3122846bb040798aab975f61008c37eb19476de", + "3.1.40-asserts": "5b5daaaabaf7292736454e4f8a73fa79bd455af4", + "3.1.39": "1b56b171b627af0841cf8d4d8c0160c6cb6d855f", + "3.1.39-asserts": "5e237cc9d9f6020af9ba908692361aa71744af1d", + "3.1.38": "03ecb526947f6a3702a0d083083799fe410d3893", + "3.1.38-asserts": "f771c7a0b55bc5d89ecceedfe9521c2c04aa43ae", + "3.1.37": "7c905cfc1ca6699f6ccb288ae174902cfbdcf0a2", + "3.1.37-asserts": "323607efbcdf84886dab55a18d758fe4c7d71d1e", + "3.1.36": "adedc0750c4a89b65bee866edab24298cb8d6677", + "3.1.36-asserts": "fdd2824226a8b001df5697146b88be98920fc215", + "3.1.35": "671550b5bdceee7bdb21493714f9a815aa5149a9", + "3.1.35-asserts": "42481a713ae805eda34f6e3e7170384c426b1d73", + "3.1.34": "2fdd6b9e5b67d5b62f84d0501a876513ff118ef1", + "3.1.34-asserts": "385382932c18a1312fff88000c4f83c2b9d1bb44", + "3.1.33": "49b960bd03b3a9da478a08541ce6eafe792a58a8", + "3.1.33-asserts": "e3ca2c6756b75cf6c6daa40276de0f25218e04a7", + "3.1.32": "29ad1037cd6b99e5d8a1bd75bc188c1e9a6fda8d", + "3.1.32-asserts": "2811c849256ec5b62b4ec32fb8369e5f3c9a54b1", + "3.1.31": "1eec24930cb2f56f6d9cd10ffcb031e27ea4157a", + "3.1.31-asserts": "48488847a38bb9cfb36e7397bea21ab2bb062680", + "3.1.30": "dc1fdcfd3f5b9d29cb1ebdf15e6e845bef9b0cc1", + "3.1.30-asserts": "21cca44e843267533c3d0b258b46c37bd142a2d7", + "3.1.29": "d949f1b99a477d4b0b54d95413df3688afa69d0a", + "3.1.29-asserts": "9d1e32e66e4b5921efc1a45cdc68e8c522c42c32", + "3.1.28": "30b9e46ddcea66e91530559379089002d8b692cf", + "3.1.28-asserts": "19871a9ea4914d63749b8d4d170e27a8854cb565", + "3.1.27": "48ce0b44015d0182fc8c27aa9fbc0a4474b55982", + "3.1.27-asserts": "630810e5a312f57d17efbe384ed7e4299f796bc1", + "3.1.26": "4f68bb2a505c727bcf58195cf4da20592a6e92c8", + "3.1.26-asserts": "4e2ffe94b04dbadfbca1687ab458d306b3414d13", + "3.1.25": "ff6babb041d0f31575cc16d15ef82c6222ca99b8", + "3.1.25-asserts": "6b19d6a8c30d7b83ba2193625fc12cce9ae0206b", + "3.1.24": "54217a0950bb1dafe8808cc6207d378e323f9d74", + "3.1.24-asserts": "4c20c7393ca208c740c16a97dbf305ba52fea2bb", + "3.1.23": "bfd5e63a44ba4c8568cd8ac87c27b35e40732bf4", + "3.1.23-asserts": "77d2c744fe37fe0e22a51329fa23bab4b8ffa656", + "3.1.22": "990cee04a21caafc75955d736fb45791a7f2aeee", + "3.1.22-asserts": "d94fe69a037e93562d0bbe9d0372ce23f4ab1089", + "3.1.21": "a16a8bca2466eb144f7c93fa899c0272c8815dc3", + "3.1.21-asserts": "c7a387161b029621eb4d3dd57363b1393b4c50b2", + "3.1.20": "d92c8639f406582d70a5dde27855f74ecf602f45", + "3.1.20-asserts": "db0fd1cb7316675317d527b6ed4f4cc7005df9ec", + "3.1.19": "4c3772879a04140298c3abde90962d5567b5e2fc", + "3.1.19-asserts": "83c2ba526ec47139d29e1417ac23d15b37ead98a", + "3.1.18": "49d45744895c7d7e28acd94a385d7ee361653b4a", + "3.1.18-asserts": "cb7fa1dce4b04e35b78ec43499a7759f24c1e64d", + "3.1.17": "d27fef2070c86a218965da8b8b5df8b4425aa3bb", + "3.1.17-asserts": "19aab28a81be09863e86aba8ee4e20feaee31f6b", + "3.1.16": "fb1baf00423818052359cf9126e94bc71c39feb5", + "3.1.16-asserts": "61848bee5b330db5ad5f827352d453b5557757fa", + "3.1.15": "568a46a9fb7e1f1686a6f7216b3dc976f28d2a79", + "3.1.15-asserts": "a8a770a0a23d2279270bd28004c8c60b02d91fbb", + "3.1.14": "ade9d780ff17c88d81aa13860361743e3c1e1396", + "3.1.14-asserts": "b55548282b553fc0b922b82d97b80f256bf01d20", + "3.1.13": "bc44364b561cfde15c243a54e3b96ea12d7ea284", + "3.1.13-asserts": "6b8f75967b5d37fa898d217b560d571694eb5b13", + "3.1.12": "a8c3b314d61e2bb98581d522f858132b2fc21488", + "3.1.12-asserts": "0ec1936aa3cb809d96abfebcc5356cd0cb15f6b8", + "3.1.11": "8c3a799341c01148692c52fda73bbba5e89c5727", + "3.1.11-asserts": "4d27b98351e021e9b7d2681a84cbab5a0ddc7a88", + "3.1.10": "8bd05c7221b4ce34d4bedec40b672d94e681a765", + "3.1.10-asserts": "d9b20effb2d660936fb5be525744e941fd900bc6", + "3.1.9": "edabe25af34554d19c046078f853999b074259ca", + "3.1.9-asserts": "c751721b1dfa47c03ede0f0da89be453c79b34ef", + "3.1.8": "8c9e0a76ebed2c5e88a718d43e8b62452def3771", + "3.1.8-asserts": "d33ae3c8d16f04b004b76c1d7c1989d637aa36e0", + "3.1.7": "d0e637fe48197587d981f79e8114757731d0c2a9", + "3.1.7-asserts": "88f0cab4e7db846e171cbbbbf20cc1a51b8c779f", + "3.1.6": "8791c3e936141cbc2dd72d76290ea9b2726d39f3", + "3.1.6-asserts": "84fa976d87a29ea1734601b042f3c6809ecb89f0", + "3.1.5": "2dee36c7163f7394ab9341854ef5281501dd97d0", + "3.1.5-asserts": "e9b96739e70faf11bbb2f63addcef59f2b2c7b48", + "3.1.4": "39e60dda6945cfcd6487725bdb1361ae7975173f", + "3.1.4-asserts": "05edbd634e300fc79ce0f635251bd5bef375328b", + "3.1.3": "2ddc66235392b37e5b33477fd86cbe01a14b8aa2", + "3.1.3-asserts": "66aaf7da980346898a84e3e1b70477286e225eec", + "3.1.2": "6626e25d6d866cf283147ca68d54ac9326fe399f", + "3.1.2-asserts": "b5cb3731eeaf127ae73d5e24b56cf5f0cdbf16a6", + "3.1.1": "5ee64de9809592480da01372880ea11debd6c740", + "3.1.1-asserts": "9455ce6306d97c0b3854e88e1e2f66d4b8565daf", + "3.1.0": "562e3a0af169e6dea5e6dbecac2255d67c2c8b94", + "3.1.0-asserts": "1de2db691103282dad6b2037018db6ece54f57c6", + "3.0.1": "91b7a67a486d2430e73423a38d950d8a550826ed", + "3.0.1-asserts": "2a84a08e92ce8748015dfc3eee40ee35a853fed0", + "3.0.0": "7fbe748230f2ce99abbf975d9ad997699efb3153", + "3.0.0-asserts": "f1d65c26f502220e278d31e7621e99b673e28093", + "2.0.34": "d8fc1b92dbc0ce8d740a7adb937c5137ba4755e0", + "2.0.33": "cef8850d57278271766fb2163eebcb07354018e7", + "2.0.32": "74646397e3c5010824ad60d1de86c6bcbe334dff", + "2.0.31": "597724ca3f6cd6e84bea73f1f519a3953b5c273d", + "2.0.31-asserts": "c1065389ccf4a81e3c1af080316afd444788bc46", + "2.0.30": "c69458f1bbf3ef5b8da4e934de210659cc9bca04", + "2.0.30-asserts": "e13a2d74c5fa5f175ae7cffd4197fe7f78bea304", + "2.0.29": "c2369dc425725fff86ba90a9007a4603ddf7941b", + "2.0.29-lto": "439b7bd7da11e99065c84a60766e427b03be4206", + "2.0.28": "866055ea639d64dfedc625d28ec981e47ce37168", + "2.0.28-lto": "ac6ac36f7a02cec857bc1e543e55c686c5bd1256", + "2.0.27": "1ac46e3b84955231ab4a4f4cbe0c7ac28c86b8cc", + "2.0.27-lto": "79509f70be89d66b8441383de94b3e5a91dedc68", + "2.0.26": "823d37b15d1ab61bc9ac0665ceef6951d3703842", + "2.0.26-lto": "b92ba43f3ac92ab6f1ce6136a8c5969b68ba6968", + "2.0.25": "f6f001b08fbb67935379cf13d17fd9bfdbaff791", + "2.0.24": "6ab7fc5622a67e6111d07c4ba61c8d3c8fc33ed2", + "2.0.23": "77b065ace39e6ab21446e13f92897f956c80476a", + "2.0.23-lto": "3f6dbb899f61fab52e4574beb4f7c8382658aa20", + "2.0.22": "6465a9acb820207acf7da44661a7de52d0a1ae3c", + "2.0.21": "72f4ec97fbc7ec16c15ae68a75b0a257b2835160", + "2.0.20": "e0c15cd14170f407a9eb27fcbad22931dc67feb7", + "2.0.20-lto": "d1b26cd17e51c5c705eea69b9545975e3705c058", + "2.0.19": "9b9ff2dabfb4a7fbacbc004c0bead12a60f9d05c", + "2.0.19-lto": "4487f6c5107e7882ae2bad6d26c34ffdceb713f0", + "2.0.18": "c2ac7520fad29a7937ed60ab6a95b08eb374c7ba", + "2.0.17": "f5c45e60392b82f603e3a8039c62db294fab02d2", + "2.0.16": "80d9674f2fafa6b9346d735c42d5c52b8cc8aa8e", + "2.0.15": "89202930a98fe7f9ed59b574469a9471b0bda7dd", + "2.0.14": "fc5562126762ab26c4757147a3b4c24e85a7289e", + "2.0.13": "ce0e4a4d1cab395ee5082a60ebb4f3891a94b256", + "2.0.12": "dcf819a7821f8db0c8f15ac336fea8960ec204f5", + "2.0.11": "4764c5c323a474f7ba28ae991b0c9024fccca43c", + "2.0.10": "37fc7647c754ac9a28ad588c143b82286de0ef71", + "2.0.9": "d8e430f9a9b6e87502f826c39e7684852f59624f", + "2.0.8": "e4ed6c79f4db8b175d9bbe55869b697aba9bcf2a", + "2.0.7": "d7a29d82b320e471203b69d43aaf03b560eedc54", + "2.0.6": "4ba921c8c8fe2e8cae071ca9889d5c27f5debd87", + "2.0.5": "461f0f118d8d8e6cfd84e077f3eb010c17a39032", + "2.0.4": "eefeb3e623af023844ac477d70d1fd8a668f5110", + "2.0.3": "7a7f38ca19da152d4cd6da4776921a0f1e3f3e3f", + "2.0.2": "ede25d889a0abe63360d4c5d420087c8753b8bbe", + "2.0.1": "13e29bd55185e3c12802bc090b4507901856b2ba", + "2.0.0": "5974288502aab433d45f53511e961aaca4079d86", + "1.40.1": "536568644fd67d53778f6111fdd5f64ad3f4c539", + "1.40.0": "edf24e7233e0def312a08cc8dcec63a461155da1", + "1.39.20": "e7e39da9c81faecd9ecf44065cee864d76e4e34d", + "1.39.19": "665121d026cafc46c29b30d6d4c45ed73eedbb7e", + "1.39.18": "1914a1543f08cd8e41f44c2bb05f7a90d1920275", + "1.39.17": "9bc968c0e49b1c795ecddb87391b265911e2adcb", + "1.39.16": "ae5001fac3849895a873e422a2a80afc90f3b798", + "1.39.15": "3880c744c068986d4ee781a61f7b2e820043e11f", + "1.39.14": "574ad04affb82cc36a32dd89b2a87bea4fb30eba", + "1.39.13": "7b3cd38017f7c582cfa3ac24a9f12aa6a8dca51f", + "1.39.12": "e13b86d4dbd9a986525ef27d4ad8157949b9bc3a", + "1.39.11": "6584e2d88570ee55914db92a3bad84f99e5bdd82", + "1.39.10": "65d33d604d3fa0ebe03548378b898fc6608e9cb8", + "1.39.9": "122396dfad60e1b2a83ccefa74a1425a2e05b5cb", + "1.39.8": "9e60f34accb4627d7358223862a7e74291886ab6", + "1.39.7": "9a89fff28cc6f75e17976fce1904b280e4beb25d", + "1.39.6": "967836071d96d9b7894e492382f5fcb96423fc07", + "1.39.5": "b3ddcab6efd749d3ed937fb452ace4e39a825842", + "1.39.4": "8bb7b0bbbca74cc58741416cc955011f22ff5ccb", + "1.39.3": "b024b71038d1291ed7ec23ecd553bf2c0c8d6da6", + "1.39.2": "c630da9163a64e08de3dd948be0a0f7a175d285b", + "1.39.1": "40f3caabcef7b52bdde63d3883462414d7a25bec", + "1.39.0": "d57bfdd6d43181501bbd3fab502d57c9073ceb49", + "1.38.48": "1290d9deb93d67c4649999a8f2c8d9167d38dc04", + "1.38.47": "bc367c257409d676e71c5511383228b7aabf1689", + "1.38.46": "c89919d252f7cea00d944bdf3bd630cd3c7e7388", + "1.38.45": "f3030d9fffcc9e1287cb6b8e72982e94ece31d71", + "1.38.44": "e5fd171371c3dcb8806a337f2dfa9b70f598f456", + "1.38.43": "737d4a07be76c15124adf3c6ef2c218123f7a67f", + "1.38.42": "05f8c01394ddd0838d3cb484ba8ca97a3efc1ac9", + "1.38.41": "5c6785a63993ae7a4d5362b32b0be9c85138fb96", + "1.38.40": "7b4b328af02eafbc857b8ca1e3d9b12dddc56ef7", + "1.38.39": "f42b12c45fd3f4c20de1321402fbc28f8fd21df1", + "1.38.38": "80bff2784f8500c1305ca69ba1d9fc84df0e401c", + "1.38.37": "0ca6c49e30bc09c3ccefc867df4196a4b4183441", + "1.38.36": "d46be49c2aab975333423122239892bd46f52bba", + "1.38.35": "98f49919f25e06fa557cbcb1321d4c10e60c87ca", + "1.38.34": "048cf9424790cc525a7ea6da340820aae226f3b9", + "1.38.33": "3b8cff670e9233a6623563add831647e8689a86b" + } +} diff --git a/emsdk-cache/emsdk-main/emsdk.bat b/emsdk-cache/emsdk-main/emsdk.bat new file mode 100644 index 000000000..ba697c288 --- /dev/null +++ b/emsdk-cache/emsdk-main/emsdk.bat @@ -0,0 +1,46 @@ +@echo off + +:: Find python from an explicit location relative to the Emscripten SDK. + +setlocal + +:: When using our bundled python we never want the users +:: PYTHONHOME or PYTHONPATH +:: https://github.com/emscripten-core/emsdk/issues/598 + +if exist "%~dp0python\3.13.3_64bit\python.exe" ( + set EMSDK_PY="%~dp0python\3.13.3_64bit\python.exe" + set PYTHONHOME= + set PYTHONPATH= + goto end +) + +if exist "%~dp0python\3.9.2_64bit\python.exe" ( + set EMSDK_PY="%~dp0python\3.9.2_64bit\python.exe" + set PYTHONHOME= + set PYTHONPATH= + goto end +) + +if exist "%~dp0python\3.9.2-nuget_64bit\python.exe" ( + set EMSDK_PY="%~dp0python\3.9.2-nuget_64bit\python.exe" + set PYTHONHOME= + set PYTHONPATH= + goto end +) + +:: As a last resort, access from PATH. +set EMSDK_PY=python + +:end +call %EMSDK_PY% "%~dp0\emsdk.py" %* + +endlocal + +:: python is not able to set environment variables to the parent calling +:: process, so therefore have it craft a .bat file, which we invoke after +:: finishing python execution, to set up the environment variables +if exist "%~dp0\emsdk_set_env.bat" ( + call "%~dp0\emsdk_set_env.bat" > nul + del /F /Q "%~dp0\emsdk_set_env.bat" +) diff --git a/emsdk-cache/emsdk-main/emsdk.ps1 b/emsdk-cache/emsdk-main/emsdk.ps1 new file mode 100644 index 000000000..81b798a2c --- /dev/null +++ b/emsdk-cache/emsdk-main/emsdk.ps1 @@ -0,0 +1,36 @@ +$ScriptDirectory = Split-Path -parent $PSCommandPath + +$PythonLocations = $( + "python\3.13.3-0_64bit\python.exe", + "python\3.9.2-1_64bit\python.exe", + "python\3.9.2-nuget_64bit\python.exe" +) + +# Find python from an explicit location relative to the Emscripten SDK. +foreach ($Location in $PythonLocations) { + $FullLocation = Join-Path $ScriptDirectory $Location + if (Test-Path $FullLocation) { + $EMSDK_PY = $FullLocation + break + } +} + +# As a last resort, access from PATH. +if (-Not $EMSDK_PY) { + $EMSDK_PY = "python" +} + +# Tell EMSDK to create environment variable setter as a .ps1 file +$env:EMSDK_POWERSHELL = 1 + +& $EMSDK_PY "$ScriptDirectory/emsdk.py" $args + +# python is not able to set environment variables to the parent calling process, so +# therefore have it craft a .ps1 file, which we invoke after finishing python execution, +# to set up the environment variables +if (Test-Path $ScriptDirectory/emsdk_set_env.ps1) { + & $ScriptDirectory/emsdk_set_env.ps1 + Remove-Item $ScriptDirectory/emsdk_set_env.ps1 +} + +Remove-Item Env:\EMSDK_POWERSHELL diff --git a/emsdk-cache/emsdk-main/emsdk.py b/emsdk-cache/emsdk-main/emsdk.py new file mode 100644 index 000000000..22c08386d --- /dev/null +++ b/emsdk-cache/emsdk-main/emsdk.py @@ -0,0 +1,3083 @@ +#!/usr/bin/env python +# Copyright 2019 The Emscripten Authors. All rights reserved. +# Emscripten is available under two separate licenses, the MIT license and the +# University of Illinois/NCSA Open Source License. Both these licenses can be +# found in the LICENSE file. + +from __future__ import print_function + +import copy +from collections import OrderedDict +import errno +import json +import multiprocessing +import os +import os.path +import platform +import re +import shutil +import stat +import subprocess +import sys +import sysconfig +import zipfile +if os.name == 'nt': + try: + import winreg + except ImportError: + # old python 2 name + import _winreg as winreg + import ctypes.wintypes + +if sys.version_info >= (3,): + from urllib.parse import urljoin + from urllib.request import urlopen + import functools +else: + from urlparse import urljoin + from urllib2 import urlopen + + +emsdk_packages_url = 'https://storage.googleapis.com/webassembly/emscripten-releases-builds/deps/' + +emscripten_releases_repo = 'https://chromium.googlesource.com/emscripten-releases' + +emscripten_releases_download_url_template = "https://storage.googleapis.com/webassembly/emscripten-releases-builds/%s/%s/wasm-binaries%s.%s" + +# This was previously `master.zip` but we are transitioning to `main` and +# `HEAD.zip` works for both cases. In future we could switch this to +# `main.zip` perhaps. +emsdk_zip_download_url = 'https://github.com/emscripten-core/emsdk/archive/HEAD.zip' + +download_dir = 'downloads/' + +extra_release_tag = None + +# Enable this to do very verbose printing about the different steps that are +# being run. Useful for debugging. +VERBOSE = int(os.getenv('EMSDK_VERBOSE', '0')) +QUIET = int(os.getenv('EMSDK_QUIET', '0')) +TTY_OUTPUT = not os.getenv('EMSDK_NOTTY', not sys.stdout.isatty()) + + +def info(msg): + if not QUIET: + print(msg, file=sys.stderr) + + +def errlog(msg): + print(msg, file=sys.stderr) + + +def exit_with_error(msg): + errlog('error: %s' % msg) + sys.exit(1) + + +WINDOWS = False +MINGW = False +MSYS = False +MACOS = False +LINUX = False + +if 'EMSDK_OS' in os.environ: + EMSDK_OS = os.environ['EMSDK_OS'] + if EMSDK_OS == 'windows': + WINDOWS = True + elif EMSDK_OS == 'linux': + LINUX = True + elif EMSDK_OS == 'macos': + MACOS = True + else: + assert False, 'EMSDK_OS must be one of: windows, linux, macos' +else: + if os.name == 'nt' or ('windows' in os.getenv('SYSTEMROOT', '').lower()) or ('windows' in os.getenv('COMSPEC', '').lower()): + WINDOWS = True + + if os.getenv('MSYSTEM'): + MSYS = True + # Some functions like os.path.normpath() exhibit different behavior between + # different versions of Python, so we need to distinguish between the MinGW + # and MSYS versions of Python + if sysconfig.get_platform() == 'mingw': + MINGW = True + if os.getenv('MSYSTEM') != 'MSYS' and os.getenv('MSYSTEM') != 'MINGW64': + # https://stackoverflow.com/questions/37460073/msys-vs-mingw-internal-environment-variables + errlog('Warning: MSYSTEM environment variable is present, and is set to "' + os.getenv('MSYSTEM') + '". This shell has not been tested with emsdk and may not work.') + + if platform.mac_ver()[0] != '': + MACOS = True + + if not MACOS and (platform.system() == 'Linux'): + LINUX = True + +UNIX = (MACOS or LINUX) + + +# Pick which shell of 4 shells to use +POWERSHELL = bool(os.getenv('EMSDK_POWERSHELL')) +CSH = bool(os.getenv('EMSDK_CSH')) +CMD = bool(os.getenv('EMSDK_CMD')) +BASH = bool(os.getenv('EMSDK_BASH')) +FISH = bool(os.getenv('EMSDK_FISH')) + +if WINDOWS and BASH: + MSYS = True + +if not CSH and not POWERSHELL and not BASH and not CMD and not FISH: + # Fall back to default of `cmd` on windows and `bash` otherwise + if WINDOWS and not MSYS: + CMD = True + else: + BASH = True + +if WINDOWS: + ENVPATH_SEPARATOR = ';' +else: + ENVPATH_SEPARATOR = ':' + +# platform.machine() may return AMD64 on windows, so standardize the case. +machine = os.getenv('EMSDK_ARCH', platform.machine().lower()) +if machine.startswith('x64') or machine.startswith('amd64') or machine.startswith('x86_64'): + ARCH = 'x86_64' +elif machine.endswith('86'): + ARCH = 'x86' +elif machine.startswith('aarch64') or machine.lower().startswith('arm64'): + ARCH = 'arm64' +elif machine.startswith('arm'): + ARCH = 'arm' +else: + exit_with_error('unknown machine architecture: ' + machine) + + +# Don't saturate all cores to not steal the whole system, but be aggressive. +CPU_CORES = int(os.getenv('EMSDK_NUM_CORES', max(multiprocessing.cpu_count() - 1, 1))) + +CMAKE_BUILD_TYPE_OVERRIDE = None + +# If true, perform a --shallow clone of git. +GIT_CLONE_SHALLOW = False + +# If true, LLVM backend is built with tests enabled, and Binaryen is built with +# Visual Studio static analyzer enabled. +BUILD_FOR_TESTING = False + +# If 'auto', assertions are decided by the build type +# (Release&MinSizeRel=disabled, Debug&RelWithDebInfo=enabled) +# Other valid values are 'ON' and 'OFF' +ENABLE_LLVM_ASSERTIONS = 'auto' + +# If true, keeps the downloaded archive files. +KEEP_DOWNLOADS = bool(os.getenv('EMSDK_KEEP_DOWNLOADS')) + + +def os_name(): + if WINDOWS: + return 'win' + elif LINUX: + return 'linux' + elif MACOS: + return 'mac' + else: + raise Exception('unknown OS') + + +def debug_print(msg): + if VERBOSE: + errlog(msg) + + +def to_unix_path(p): + return p.replace('\\', '/') + + +EMSDK_PATH = to_unix_path(os.path.dirname(os.path.realpath(__file__))) + +EMSDK_SET_ENV = "" +if POWERSHELL: + EMSDK_SET_ENV = os.path.join(EMSDK_PATH, 'emsdk_set_env.ps1') +else: + EMSDK_SET_ENV = os.path.join(EMSDK_PATH, 'emsdk_set_env.bat') + + +# Parses https://github.com/emscripten-core/emscripten/tree/d6aced8 to a pair (https://github.com/emscripten-core/emscripten, d6aced8) +def parse_github_url_and_refspec(url): + if not url: + return ('', '') + + if url.endswith(('/tree/', '/tree', '/commit/', '/commit')): + raise Exception('Malformed git URL and refspec ' + url + '!') + + if '/tree/' in url: + if url.endswith('/'): + raise Exception('Malformed git URL and refspec ' + url + '!') + return url.split('/tree/') + elif '/commit/' in url: + if url.endswith('/'): + raise Exception('Malformed git URL and refspec ' + url + '!') + return url.split('/commit/') + else: + return (url, 'main') # Assume the default branch is main in the absence of a refspec + + +ARCHIVE_SUFFIXES = ('zip', '.tar', '.gz', '.xz', '.tbz2', '.bz2') + + +# Finds the given executable 'program' in PATH. Operates like the Unix tool 'which'. +def which(program): + def is_exe(fpath): + return os.path.isfile(fpath) and (WINDOWS or os.access(fpath, os.X_OK)) + + fpath, fname = os.path.split(program) + if fpath: + if is_exe(program): + return program + else: + for path in os.environ["PATH"].split(os.pathsep): + path = path.strip('"') + exe_file = os.path.join(path, program) + if is_exe(exe_file): + return exe_file + + if WINDOWS and '.' not in fname: + if is_exe(exe_file + '.exe'): + return exe_file + '.exe' + if is_exe(exe_file + '.cmd'): + return exe_file + '.cmd' + if is_exe(exe_file + '.bat'): + return exe_file + '.bat' + + return None + + +def vswhere(version): + try: + program_files = os.getenv('ProgramFiles(x86)') + if not program_files: + program_files = os.environ['ProgramFiles'] + vswhere_path = os.path.join(program_files, 'Microsoft Visual Studio', 'Installer', 'vswhere.exe') + # Source: https://learn.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2022 + tools_arch = 'ARM64' if ARCH == 'arm64' else 'x86.x64' + # The "-products *" allows detection of Build Tools, the "-prerelease" allows detection of Preview version + # of Visual Studio and Build Tools. + output = json.loads(subprocess.check_output([vswhere_path, '-latest', '-products', '*', '-prerelease', '-version', '[%s.0,%s.0)' % (version, version + 1), '-requires', 'Microsoft.VisualStudio.Component.VC.Tools.' + tools_arch, '-property', 'installationPath', '-format', 'json'])) + return str(output[0]['installationPath']) + except Exception: + return '' + + +def vs_filewhere(installation_path, platform, file): + try: + vcvarsall = os.path.join(installation_path, 'VC\\Auxiliary\\Build\\vcvarsall.bat') + env = subprocess.check_output('cmd /c "%s" %s & where %s' % (vcvarsall, platform, file)) + paths = [path[:-len(file)] for path in env.split('\r\n') if path.endswith(file)] + return paths[0] + except Exception: + return '' + + +CMAKE_GENERATOR = 'Unix Makefiles' +if WINDOWS: + # Detect which CMake generator to use when building on Windows + if '--mingw' in sys.argv: + CMAKE_GENERATOR = 'MinGW Makefiles' + elif '--vs2022' in sys.argv: + CMAKE_GENERATOR = 'Visual Studio 17' + elif '--vs2019' in sys.argv: + CMAKE_GENERATOR = 'Visual Studio 16' + elif len(vswhere(17)) > 0: + CMAKE_GENERATOR = 'Visual Studio 17' + elif len(vswhere(16)) > 0: + CMAKE_GENERATOR = 'Visual Studio 16' + elif which('mingw32-make') is not None and which('g++') is not None: + CMAKE_GENERATOR = 'MinGW Makefiles' + else: + # No detected generator + CMAKE_GENERATOR = '' + + +sys.argv = [a for a in sys.argv if a not in ('--mingw', '--vs2019', '--vs2022')] + + +# Computes a suitable path prefix to use when building with a given generator. +def cmake_generator_prefix(): + if CMAKE_GENERATOR == 'Visual Studio 17': + return '_vs2022' + if CMAKE_GENERATOR == 'Visual Studio 16': + return '_vs2019' + elif CMAKE_GENERATOR == 'MinGW Makefiles': + return '_mingw' + # Unix Makefiles do not specify a path prefix for backwards path compatibility + return '' + + +# Removes a directory tree even if it was readonly, and doesn't throw exception +# on failure. +def remove_tree(d): + debug_print('remove_tree(' + str(d) + ')') + if not os.path.exists(d): + return + try: + def remove_readonly_and_try_again(func, path, exc_info): + if not (os.stat(path).st_mode & stat.S_IWRITE): + os.chmod(path, stat.S_IWRITE) + func(path) + else: + raise + shutil.rmtree(d, onerror=remove_readonly_and_try_again) + except Exception as e: + debug_print('remove_tree threw an exception, ignoring: ' + str(e)) + + +def win_set_environment_variable_direct(key, value, system=True): + folder = None + try: + if system: + # Read globally from ALL USERS section. + folder = winreg.OpenKeyEx(winreg.HKEY_LOCAL_MACHINE, 'SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment', 0, winreg.KEY_ALL_ACCESS) + else: + # Register locally from CURRENT USER section. + folder = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, 'Environment', 0, winreg.KEY_ALL_ACCESS) + winreg.SetValueEx(folder, key, 0, winreg.REG_EXPAND_SZ, value) + debug_print('Set key=' + key + ' with value ' + value + ' in registry.') + return True + except Exception as e: + # 'Access is denied.' + if e.args[3] == 5: + exit_with_error('failed to set the environment variable \'' + key + '\'! Setting environment variables permanently requires administrator access. Please rerun this command with administrative privileges. This can be done for example by holding down the Ctrl and Shift keys while opening a command prompt in start menu.') + errlog('Failed to write environment variable ' + key + ':') + errlog(str(e)) + return False + finally: + if folder is not None: + folder.Close() + + +def win_get_environment_variable(key, system=True, user=True, fallback=True): + if (not system and not user and fallback): + # if no --system or --permanent flag is provided use shell's value + return os.environ[key] + try: + folder = None + try: + if system: + # Read globally from ALL USERS section. + folder = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, 'SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment') + else: + # Register locally from CURRENT USER section. + folder = winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'Environment') + value = str(winreg.QueryValueEx(folder, key)[0]) + except Exception: + # If reading registry fails for some reason - read via os.environ. This has the drawback + # that expansion items such as %PROGRAMFILES% will have been expanded, so + # need to be precise not to set these back to system registry, or + # expansion items would be lost. + if fallback: + return os.environ[key] + return None + finally: + if folder is not None: + folder.Close() + + except Exception as e: + # this catch is if both the registry key threw an exception and the key is not in os.environ + if e.args[0] != 2: + # 'The system cannot find the file specified.' + errlog('Failed to read environment variable ' + key + ':') + errlog(str(e)) + return None + return value + + +def win_set_environment_variable(key, value, system, user): + debug_print('set ' + str(key) + '=' + str(value) + ', in system=' + str(system)) + previous_value = win_get_environment_variable(key, system=system, user=user) + if previous_value == value: + debug_print(' no need to set, since same value already exists.') + # No need to elevate UAC for nothing to set the same value, skip. + return False + + if not value: + try: + if system: + cmd = ['REG', 'DELETE', 'SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment', '/V', key, '/f'] + else: + cmd = ['REG', 'DELETE', 'HKCU\\Environment', '/V', key, '/f'] + debug_print(str(cmd)) + value = subprocess.call(cmd, stdout=subprocess.PIPE) + except Exception: + return False + return True + + try: + if win_set_environment_variable_direct(key, value, system): + return True + # Escape % signs so that we don't expand references to environment variables. + value = value.replace('%', '^%') + if len(value) >= 1024: + exit_with_error('the new environment variable ' + key + ' is more than 1024 characters long! A value this long cannot be set via command line: please add the environment variable specified above to system environment manually via Control Panel.') + cmd = ['SETX', key, value] + debug_print(str(cmd)) + retcode = subprocess.call(cmd, stdout=subprocess.PIPE) + if retcode != 0: + errlog('ERROR! Failed to set environment variable ' + key + '=' + value + '. You may need to set it manually.') + else: + return True + except Exception as e: + errlog('ERROR! Failed to set environment variable ' + key + '=' + value + ':') + errlog(str(e)) + errlog('You may need to set it manually.') + + return False + + +def win_set_environment_variables(env_vars_to_add, system, user): + if not env_vars_to_add: + return + + changed = False + + for key, value in env_vars_to_add: + if win_set_environment_variable(key, value, system, user): + if not changed: + changed = True + print('Setting global environment variables:') + + print(key + ' = ' + value) + + if not changed: + print('Global environment variables up to date') + return + + # if changes were made then we need to notify other processes + try: + HWND_BROADCAST = ctypes.wintypes.HWND(0xFFFF) # win32con.HWND_BROADCAST == 65535 + WM_SETTINGCHANGE = 0x001A # win32con.WM_SETTINGCHANGE == 26 + SMTO_BLOCK = 0x0001 # win32con.SMTO_BLOCK == 1 + ctypes.windll.user32.SendMessageTimeoutA( + HWND_BROADCAST, # hWnd: notify everyone + WM_SETTINGCHANGE, # Msg: registry changed + 0, # wParam: Must be 0 when setting changed is sent by users + 'Environment', # lParam: Specifically environment variables changed + SMTO_BLOCK, # fuFlags: Wait for message to be sent or timeout + 100) # uTimeout: 100ms + except Exception as e: + errlog('SendMessageTimeout failed with error: ' + str(e)) + + +def win_delete_environment_variable(key, system=True, user=True): + debug_print('win_delete_environment_variable(key=' + key + ', system=' + str(system) + ')') + return win_set_environment_variable(key, None, system, user) + + +# Returns the absolute pathname to the given path inside the Emscripten SDK. +def sdk_path(path): + if os.path.isabs(path): + return path + + return to_unix_path(os.path.join(EMSDK_PATH, path)) + + +# Removes a single file, suppressing exceptions on failure. +def rmfile(filename): + debug_print('rmfile(' + filename + ')') + if os.path.lexists(filename): + os.remove(filename) + + +# http://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python +def mkdir_p(path): + debug_print('mkdir_p(' + path + ')') + try: + os.makedirs(path) + except OSError as exc: # Python >2.5 + if exc.errno != errno.EEXIST or not os.path.isdir(path): + raise + + +def is_nonempty_directory(path): + if not os.path.isdir(path): + return False + return len(os.listdir(path)) != 0 + + +def run(cmd, cwd=None, quiet=False): + debug_print('run(cmd=' + str(cmd) + ', cwd=' + str(cwd) + ')') + process = subprocess.Popen(cmd, cwd=cwd, env=os.environ.copy()) + process.communicate() + if process.returncode != 0 and not quiet: + errlog(str(cmd) + ' failed with error code ' + str(process.returncode) + '!') + return process.returncode + + +# http://pythonicprose.blogspot.fi/2009/10/python-extract-targz-archive.html +def untargz(source_filename, dest_dir): + print("Unpacking '" + source_filename + "' to '" + dest_dir + "'") + mkdir_p(dest_dir) + returncode = run(['tar', '-xvf' if VERBOSE else '-xf', sdk_path(source_filename), '--strip', '1'], cwd=dest_dir) + # tfile = tarfile.open(source_filename, 'r:gz') + # tfile.extractall(dest_dir) + return returncode == 0 + + +# On Windows, it is not possible to reference path names that are longer than +# ~260 characters, unless the path is referenced via a "\\?\" prefix. +# See https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath and http://stackoverflow.com/questions/3555527/python-win32-filename-length-workaround +# In that mode, forward slashes cannot be used as delimiters. +def fix_potentially_long_windows_pathname(pathname): + if not WINDOWS or MSYS: + return pathname + # Test if emsdk calls fix_potentially_long_windows_pathname() with long + # relative paths (which is problematic) + if not os.path.isabs(pathname) and len(pathname) > 200: + errlog('Warning: Seeing a relative path "' + pathname + '" which is dangerously long for being referenced as a short Windows path name. Refactor emsdk to be able to handle this!') + if pathname.startswith('\\\\?\\'): + return pathname + pathname = os.path.normpath(pathname.replace('/', '\\')) + if MINGW: + # MinGW versions of Python return normalized paths with backslashes + # converted to forward slashes, so we must use forward slashes in our + # prefix + return '//?/' + pathname + return '\\\\?\\' + pathname + + +# On windows, rename/move will fail if the destination exists, and there is no +# race-free way to do it. This method removes the destination if it exists, so +# the move always works +def move_with_overwrite(src, dest): + if os.path.exists(dest): + os.remove(dest) + os.rename(src, dest) + + +# http://stackoverflow.com/questions/12886768/simple-way-to-unzip-file-in-python-on-all-oses +def unzip(source_filename, dest_dir): + print("Unpacking '" + source_filename + "' to '" + dest_dir + "'") + mkdir_p(dest_dir) + common_subdir = None + try: + with zipfile.ZipFile(source_filename) as zf: + # Implement '--strip 1' behavior to unzipping by testing if all the files + # in the zip reside in a common subdirectory, and if so, we move the + # output tree at the end of uncompression step. + for member in zf.infolist(): + words = member.filename.split('/') + if len(words) > 1: # If there is a directory component? + if common_subdir is None: + common_subdir = words[0] + elif common_subdir != words[0]: + common_subdir = None + break + else: + common_subdir = None + break + + unzip_to_dir = dest_dir + if common_subdir: + unzip_to_dir = os.path.join(os.path.dirname(dest_dir), 'unzip_temp') + + # Now do the actual decompress. + for member in zf.infolist(): + zf.extract(member, fix_potentially_long_windows_pathname(unzip_to_dir)) + dst_filename = os.path.join(unzip_to_dir, member.filename) + + # See: https://stackoverflow.com/questions/42326428/zipfile-in-python-file-permission + unix_attributes = member.external_attr >> 16 + if unix_attributes: + os.chmod(dst_filename, unix_attributes) + + # Move the extracted file to its final location without the base + # directory name, if we are stripping that away. + if common_subdir: + if not member.filename.startswith(common_subdir): + raise Exception('Unexpected filename "' + member.filename + '"!') + stripped_filename = '.' + member.filename[len(common_subdir):] + final_dst_filename = os.path.join(dest_dir, stripped_filename) + # Check if a directory + if stripped_filename.endswith('/'): + d = fix_potentially_long_windows_pathname(final_dst_filename) + if not os.path.isdir(d): + os.mkdir(d) + else: + parent_dir = os.path.dirname(fix_potentially_long_windows_pathname(final_dst_filename)) + if parent_dir and not os.path.exists(parent_dir): + os.makedirs(parent_dir) + move_with_overwrite(fix_potentially_long_windows_pathname(dst_filename), fix_potentially_long_windows_pathname(final_dst_filename)) + + if common_subdir: + remove_tree(unzip_to_dir) + except zipfile.BadZipfile as e: + errlog("Unzipping file '" + source_filename + "' failed due to reason: " + str(e) + "! Removing the corrupted zip file.") + rmfile(source_filename) + return False + except Exception as e: + errlog("Unzipping file '" + source_filename + "' failed due to reason: " + str(e)) + return False + + return True + + +# This function interprets whether the given string looks like a path to a +# directory instead of a file, without looking at the actual filesystem. +# 'a/b/c' points to directory, so does 'a/b/c/', but 'a/b/c.x' is parsed as a +# filename +def path_points_to_directory(path): + if path == '.': + return True + last_slash = max(path.rfind('/'), path.rfind('\\')) + last_dot = path.rfind('.') + no_suffix = last_dot < last_slash or last_dot == -1 + if no_suffix: + return True + suffix = path[last_dot:] + # Very simple logic for the only file suffixes used by emsdk downloader. Other + # suffixes, like 'clang-3.2' are treated as dirs. + if suffix in ('.exe', '.zip', '.txt'): + return False + else: + return True + + +def get_content_length(download): + try: + meta = download.info() + if hasattr(meta, "getheaders") and hasattr(meta.getheaders, "Content-Length"): + return int(meta.getheaders("Content-Length")[0]) + elif hasattr(download, "getheader") and download.getheader('Content-Length'): + return int(download.getheader('Content-Length')) + elif hasattr(meta, "getheader") and meta.getheader('Content-Length'): + return int(meta.getheader('Content-Length')) + except Exception: + pass + + return 0 + + +def get_download_target(url, dstpath, filename_prefix=''): + file_name = filename_prefix + url.split('/')[-1] + if path_points_to_directory(dstpath): + file_name = os.path.join(dstpath, file_name) + else: + file_name = dstpath + + # Treat all relative destination paths as relative to the SDK root directory, + # not the current working directory. + file_name = sdk_path(file_name) + + return file_name + + +def download_with_curl(url, file_name): + print("Downloading: %s from %s" % (file_name, url)) + if not which('curl'): + exit_with_error('curl not found in PATH') + # -#: show progress bar + # -L: Follow HTTP 3XX redirections + # -f: Fail on HTTP errors + subprocess.check_call(['curl', '-#', '-f', '-L', '-o', file_name, url]) + + +def download_with_urllib(url, file_name): + u = urlopen(url) + file_size = get_content_length(u) + if file_size > 0: + print("Downloading: %s from %s, %s Bytes" % (file_name, url, file_size)) + else: + print("Downloading: %s from %s" % (file_name, url)) + + file_size_dl = 0 + # Draw a progress bar 80 chars wide (in non-TTY mode) + progress_max = 80 - 4 + progress_shown = 0 + block_sz = 256 * 1024 + if not TTY_OUTPUT: + print(' [', end='') + + with open(file_name, 'wb') as f: + while True: + buffer = u.read(block_sz) + if not buffer: + break + + file_size_dl += len(buffer) + f.write(buffer) + if file_size: + percent = file_size_dl * 100.0 / file_size + if TTY_OUTPUT: + status = r" %10d [%3.02f%%]" % (file_size_dl, percent) + print(status, end='\r') + else: + while progress_shown < progress_max * percent / 100: + print('-', end='') + sys.stdout.flush() + progress_shown += 1 + + if not TTY_OUTPUT: + print(']') + sys.stdout.flush() + + debug_print('finished downloading (%d bytes)' % file_size_dl) + + +# On success, returns the filename on the disk pointing to the destination file that was produced +# On failure, returns None. +def download_file(url, dstpath, download_even_if_exists=False, + filename_prefix='', silent=False): + debug_print('download_file(url=' + url + ', dstpath=' + dstpath + ')') + file_name = get_download_target(url, dstpath, filename_prefix) + + if os.path.exists(file_name) and not download_even_if_exists: + print("File '" + file_name + "' already downloaded, skipping.") + return file_name + + mkdir_p(os.path.dirname(file_name)) + + try: + # Use curl on macOS to avoid CERTIFICATE_VERIFY_FAILED issue with + # python's urllib: + # https://stackoverflow.com/questions/40684543/how-to-make-python-use-ca-certificates-from-mac-os-truststore + # Unlike on linux or windows, curl is always available on macOS systems. + if MACOS: + download_with_curl(url, file_name) + else: + download_with_urllib(url, file_name) + except Exception as e: + errlog("Error: Downloading URL '" + url + "': " + str(e)) + return None + except KeyboardInterrupt: + rmfile(file_name) + raise + + return file_name + + +def run_get_output(cmd, cwd=None): + debug_print('run_get_output(cmd=' + str(cmd) + ', cwd=' + str(cwd) + ')') + process = subprocess.Popen(cmd, cwd=cwd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, env=os.environ.copy(), universal_newlines=True) + stdout, stderr = process.communicate() + return (process.returncode, stdout, stderr) + + +cached_git_executable = None + + +# must_succeed: If false, the search is performed silently without printing out +# errors if not found. Empty string is returned if git is not found. +# If true, the search is required to succeed, and the execution +# will terminate with sys.exit(1) if not found. +def GIT(must_succeed=True): + global cached_git_executable + if cached_git_executable is not None: + return cached_git_executable + # The order in the following is important, and specifies the preferred order + # of using the git tools. Primarily use git from emsdk if installed. If not, + # use system git. + gits = ['git/1.9.4/bin/git.exe', which('git')] + for git in gits: + try: + ret, stdout, stderr = run_get_output([git, '--version']) + if ret == 0: + cached_git_executable = git + return git + except Exception: + pass + if must_succeed: + if WINDOWS: + msg = "git executable was not found. Please install it by typing 'emsdk install git-1.9.4', or alternatively by installing it manually from http://git-scm.com/downloads . If you install git manually, remember to add it to PATH" + elif MACOS: + msg = "git executable was not found. Please install git for this operation! This can be done from http://git-scm.com/ , or by installing XCode and then the XCode Command Line Tools (see http://stackoverflow.com/questions/9329243/xcode-4-4-command-line-tools )" + elif LINUX: + msg = "git executable was not found. Please install git for this operation! This can be probably be done using your package manager, see http://git-scm.com/book/en/Getting-Started-Installing-Git" + else: + msg = "git executable was not found. Please install git for this operation!" + exit_with_error(msg) + # Not found + return '' + + +def git_repo_version(repo_path): + returncode, stdout, stderr = run_get_output([GIT(), 'log', '-n', '1', '--pretty="%aD %H"'], cwd=repo_path) + if returncode == 0: + return stdout.strip() + else: + return "" + + +def git_recent_commits(repo_path, n=20): + returncode, stdout, stderr = run_get_output([GIT(), 'log', '-n', str(n), '--pretty="%H"'], cwd=repo_path) + if returncode == 0: + return stdout.strip().replace('\r', '').replace('"', '').split('\n') + else: + return [] + + +def git_clone(url, dstpath, branch): + debug_print('git_clone(url=' + url + ', dstpath=' + dstpath + ')') + if os.path.isdir(os.path.join(dstpath, '.git')): + debug_print("Repository '" + url + "' already cloned to directory '" + dstpath + "', skipping.") + return True + mkdir_p(dstpath) + git_clone_args = ['--recurse-submodules', '--branch', branch] # Do not check out a branch (installer will issue a checkout command right after) + if GIT_CLONE_SHALLOW: + git_clone_args += ['--depth', '1'] + print('Cloning from ' + url + '...') + return run([GIT(), 'clone'] + git_clone_args + [url, dstpath]) == 0 + + +def git_pull(repo_path, branch_or_tag): + debug_print('git_pull(repo_path=' + repo_path + ', branch/tag=' + branch_or_tag + ')') + ret = run([GIT(), 'fetch', '--quiet', 'origin'], repo_path) + if ret != 0: + return False + try: + print("Fetching latest changes to the branch/tag '" + branch_or_tag + "' for '" + repo_path + "'...") + ret = run([GIT(), 'fetch', '--quiet', 'origin'], repo_path) + if ret != 0: + return False + # this line assumes that the user has not gone and manually messed with the + # repo and added new remotes to ambiguate the checkout. + ret = run([GIT(), 'checkout', '--recurse-submodules', '--quiet', branch_or_tag], repo_path) + if ret != 0: + return False + # Test if branch_or_tag is a branch, or if it is a tag that needs to be updated + target_is_tag = run([GIT(), 'symbolic-ref', '-q', 'HEAD'], repo_path, quiet=True) + if not target_is_tag: + # update branch to latest (not needed for tags) + # this line assumes that the user has not gone and made local changes to the repo + ret = run([GIT(), 'merge', '--ff-only', 'origin/' + branch_or_tag], repo_path) + if ret != 0: + return False + run([GIT(), 'submodule', 'update', '--init'], repo_path, quiet=True) + except Exception: + errlog('git operation failed!') + return False + print("Successfully updated and checked out branch/tag '" + branch_or_tag + "' on repository '" + repo_path + "'") + print("Current repository version: " + git_repo_version(repo_path)) + return True + + +def git_clone_checkout_and_pull(url, dstpath, branch): + debug_print('git_clone_checkout_and_pull(url=' + url + ', dstpath=' + dstpath + ', branch=' + branch + ')') + + # If the repository has already been cloned before, issue a pull operation. Otherwise do a new clone. + if os.path.isdir(os.path.join(dstpath, '.git')): + return git_pull(dstpath, branch) + else: + return git_clone(url, dstpath, branch) + + +# Each tool can have its own build type, or it can be overridden on the command +# line. +def decide_cmake_build_type(tool): + if CMAKE_BUILD_TYPE_OVERRIDE: + return CMAKE_BUILD_TYPE_OVERRIDE + else: + return tool.cmake_build_type + + +# The root directory of the build. +def llvm_build_dir(tool): + generator_suffix = cmake_generator_prefix() + bitness_suffix = '_32' if tool.bitness == 32 else '_64' + + if hasattr(tool, 'git_branch'): + build_dir = 'build_' + tool.git_branch.replace(os.sep, '-') + generator_suffix + bitness_suffix + else: + build_dir = 'build_' + tool.version + generator_suffix + bitness_suffix + return build_dir + + +def exe_suffix(filename): + if WINDOWS and not filename.endswith('.exe'): + filename += '.exe' + return filename + + +# The directory where the binaries are produced. (relative to the installation +# root directory of the tool) +def llvm_build_bin_dir(tool): + build_dir = llvm_build_dir(tool) + if WINDOWS and 'Visual Studio' in CMAKE_GENERATOR: + old_llvm_bin_dir = os.path.join(build_dir, 'bin', decide_cmake_build_type(tool)) + + new_llvm_bin_dir = None + default_cmake_build_type = decide_cmake_build_type(tool) + cmake_build_types = [default_cmake_build_type, 'Release', 'RelWithDebInfo', 'MinSizeRel', 'Debug'] + for build_type in cmake_build_types: + d = os.path.join(build_dir, build_type, 'bin') + if os.path.isfile(os.path.join(tool.installation_path(), d, exe_suffix('clang'))): + new_llvm_bin_dir = d + break + + if new_llvm_bin_dir and os.path.exists(os.path.join(tool.installation_path(), new_llvm_bin_dir)): + return new_llvm_bin_dir + elif os.path.exists(os.path.join(tool.installation_path(), old_llvm_bin_dir)): + return old_llvm_bin_dir + return os.path.join(build_dir, default_cmake_build_type, 'bin') + else: + return os.path.join(build_dir, 'bin') + + +def build_env(generator): + build_env = os.environ.copy() + + # To work around a build issue with older Mac OS X builds, add -stdlib=libc++ to all builds. + # See https://groups.google.com/forum/#!topic/emscripten-discuss/5Or6QIzkqf0 + if MACOS: + build_env['CXXFLAGS'] = ((build_env['CXXFLAGS'] + ' ') if hasattr(build_env, 'CXXFLAGS') else '') + '-stdlib=libc++' + if WINDOWS: + # MSBuild.exe has an internal mechanism to avoid N^2 oversubscription of threads in its two-tier build model, see + # https://devblogs.microsoft.com/cppblog/improved-parallelism-in-msbuild/ + build_env['UseMultiToolTask'] = 'true' + build_env['EnforceProcessCountAcrossBuilds'] = 'true' + return build_env + + +def make_build(build_root, build_type): + debug_print('make_build(build_root=' + build_root + ', build_type=' + build_type + ')') + if CPU_CORES > 1: + print('Performing a parallel build with ' + str(CPU_CORES) + ' cores.') + else: + print('Performing a singlethreaded build.') + + make = ['cmake', '--build', '.', '--config', build_type] + if 'Visual Studio' in CMAKE_GENERATOR: + # Visual Studio historically has had a two-tier problem in its build system design. A single MSBuild.exe instance only governs + # the build of a single project (.exe/.lib/.dll) in a solution. Passing the -j parameter above will only enable multiple MSBuild.exe + # instances to be spawned to build multiple projects in parallel, but each MSBuild.exe is still singlethreaded. + # To enable each MSBuild.exe instance to also compile several .cpp files in parallel inside a single project, pass the extra + # MSBuild.exe specific "Multi-ToolTask" (MTT) setting /p:CL_MPCount. This enables each MSBuild.exe to parallelize builds wide. + # This requires CMake 3.12 or newer. + make += ['-j', str(CPU_CORES), '--', '/p:CL_MPCount=' + str(CPU_CORES)] + else: + # Pass -j to native make, CMake might not support -j option. + make += ['--', '-j', str(CPU_CORES)] + + # Build + try: + print('Running build: ' + str(make)) + ret = subprocess.check_call(make, cwd=build_root, env=build_env(CMAKE_GENERATOR)) + if ret != 0: + errlog('Build failed with exit code ' + ret + '!') + errlog('Working directory: ' + build_root) + return False + except Exception as e: + errlog('Build failed due to exception!') + errlog('Working directory: ' + build_root) + errlog(str(e)) + return False + + return True + + +def cmake_configure(generator, build_root, src_root, build_type, extra_cmake_args=[]): + debug_print('cmake_configure(generator=' + str(generator) + ', build_root=' + str(build_root) + ', src_root=' + str(src_root) + ', build_type=' + str(build_type) + ', extra_cmake_args=' + str(extra_cmake_args) + ')') + # Configure + if not os.path.isdir(build_root): + # Create build output directory if it doesn't yet exist. + os.mkdir(build_root) + try: + if generator: + generator = ['-G', generator] + else: + generator = [] + + cmdline = ['cmake'] + generator + ['-DCMAKE_BUILD_TYPE=' + build_type, '-DPYTHON_EXECUTABLE=' + sys.executable] + # Target macOS 11.0 Big Sur at minimum, to support older Mac devices. + # See https://en.wikipedia.org/wiki/MacOS#Hardware_compatibility for min-spec details. + cmdline += ['-DCMAKE_OSX_DEPLOYMENT_TARGET=11.0'] + cmdline += extra_cmake_args + [src_root] + + print('Running CMake: ' + str(cmdline)) + + # Specify the deployment target also as an env. var, since some Xcode versions + # read this instead of the CMake field. + os.environ['MACOSX_DEPLOYMENT_TARGET'] = '11.0' + + def quote_parens(x): + if ' ' in x: + return '"' + x.replace('"', '\\"') + '"' + else: + return x + + # Create a file 'recmake.bat/sh' in the build root that user can call to + # manually recmake the build tree with the previous build params + open(os.path.join(build_root, 'recmake.' + ('bat' if WINDOWS else 'sh')), 'w').write(' '.join(map(quote_parens, cmdline))) + ret = subprocess.check_call(cmdline, cwd=build_root, env=build_env(CMAKE_GENERATOR)) + if ret != 0: + errlog('CMake invocation failed with exit code ' + ret + '!') + errlog('Working directory: ' + build_root) + return False + except OSError as e: + if e.errno == errno.ENOENT: + errlog(str(e)) + errlog('Could not run CMake, perhaps it has not been installed?') + if WINDOWS: + errlog('Installing this package requires CMake. Get it from http://www.cmake.org/') + elif LINUX: + errlog('Installing this package requires CMake. Get it via your system package manager (e.g. sudo apt-get install cmake), or from http://www.cmake.org/') + elif MACOS: + errlog('Installing this package requires CMake. Get it via a macOS package manager (Homebrew: "brew install cmake", or MacPorts: "sudo port install cmake"), or from http://www.cmake.org/') + return False + raise + except Exception as e: + errlog('CMake invocation failed due to exception!') + errlog('Working directory: ' + build_root) + errlog(str(e)) + return False + + return True + + +def xcode_sdk_version(): + try: + output = subprocess.check_output(['xcrun', '--show-sdk-version']) + if sys.version_info >= (3,): + output = output.decode('utf8') + return output.strip().split('.') + except Exception: + return subprocess.checkplatform.mac_ver()[0].split('.') + + +def cmake_target_platform(tool): + # Source: https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2017%202022.html#platform-selection + if hasattr(tool, 'arch'): + if tool.arch == 'arm64': + return 'ARM64' + elif tool.arch == 'x86_64': + return 'x64' + elif tool.arch == 'x86': + return 'Win32' + if ARCH == 'arm64': + return 'ARM64' + else: + return 'x64' if tool.bitness == 64 else 'Win32' + + +def cmake_host_platform(): + # Source: https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2017%202022.html#toolset-selection + arch_to_cmake_host_platform = { + 'arm64': 'ARM64', + 'arm': 'ARM', + 'x86_64': 'x64', + 'x86': 'x86' + } + return arch_to_cmake_host_platform[ARCH] + + +def get_generator_and_config_args(tool): + args = [] + cmake_generator = CMAKE_GENERATOR + if 'Visual Studio 16' in CMAKE_GENERATOR or 'Visual Studio 17' in CMAKE_GENERATOR: # VS2019 or VS2022 + # With Visual Studio 16 2019, CMake changed the way they specify target arch. + # Instead of appending it into the CMake generator line, it is specified + # with a -A arch parameter. + args += ['-A', cmake_target_platform(tool)] + args += ['-Thost=' + cmake_host_platform()] + elif 'Visual Studio' in CMAKE_GENERATOR and tool.bitness == 64: + cmake_generator += ' Win64' + args += ['-Thost=x64'] + return (cmake_generator, args) + + +def build_llvm(tool): + debug_print('build_llvm(' + str(tool) + ')') + llvm_root = tool.installation_path() + llvm_src_root = os.path.join(llvm_root, 'src') + success = git_clone_checkout_and_pull(tool.download_url(), llvm_src_root, tool.git_branch) + if not success: + return False + + build_dir = llvm_build_dir(tool) + build_root = os.path.join(llvm_root, build_dir) + + build_type = decide_cmake_build_type(tool) + + # Configure + tests_arg = 'ON' if BUILD_FOR_TESTING else 'OFF' + + enable_assertions = ENABLE_LLVM_ASSERTIONS.lower() == 'on' or (ENABLE_LLVM_ASSERTIONS == 'auto' and build_type.lower() != 'release' and build_type.lower() != 'minsizerel') + + if ARCH == 'x86' or ARCH == 'x86_64': + targets_to_build = 'WebAssembly;X86' + elif ARCH == 'arm': + targets_to_build = 'WebAssembly;ARM' + elif ARCH == 'arm64': + targets_to_build = 'WebAssembly;AArch64' + else: + targets_to_build = 'WebAssembly' + cmake_generator, args = get_generator_and_config_args(tool) + args += ['-DLLVM_TARGETS_TO_BUILD=' + targets_to_build, + '-DLLVM_INCLUDE_EXAMPLES=OFF', + '-DLLVM_INCLUDE_TESTS=' + tests_arg, + '-DCLANG_INCLUDE_TESTS=' + tests_arg, + '-DLLVM_ENABLE_ASSERTIONS=' + ('ON' if enable_assertions else 'OFF'), + # Disable optional LLVM dependencies, these can cause unwanted .so dependencies + # that prevent distributing the generated compiler for end users. + '-DLLVM_ENABLE_LIBXML2=OFF', '-DLLVM_ENABLE_TERMINFO=OFF', '-DLLDB_ENABLE_LIBEDIT=OFF', + '-DLLVM_ENABLE_LIBEDIT=OFF', '-DLLVM_ENABLE_LIBPFM=OFF'] + # LLVM build system bug: compiler-rt does not build on Windows. It insists on performing a CMake install step that writes to C:\Program Files. Attempting + # to reroute that to build_root directory then fails on an error + # file INSTALL cannot find + # "C:/code/emsdk/llvm/git/build_master_vs2017_64/$(Configuration)/lib/clang/10.0.0/lib/windows/clang_rt.ubsan_standalone-x86_64.lib". + # (there instead of $(Configuration), one would need ${CMAKE_BUILD_TYPE} ?) + # It looks like compiler-rt is not compatible to build on Windows? + args += ['-DLLVM_ENABLE_PROJECTS=clang;lld'] + # To enable widest possible chance of success for building, let the code + # compile through with older toolchains that are about to be deprecated by + # upstream LLVM. + args += ['-DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON'] + + if os.getenv('LLVM_CMAKE_ARGS'): + extra_args = os.environ['LLVM_CMAKE_ARGS'].split(',') + print('Passing the following extra arguments to LLVM CMake configuration: ' + str(extra_args)) + args += extra_args + + cmakelists_dir = os.path.join(llvm_src_root, 'llvm') + success = cmake_configure(cmake_generator, build_root, cmakelists_dir, build_type, args) + if not success: + return False + + # Make + success = make_build(build_root, build_type) + return success + + +def build_ninja(tool): + debug_print('build_ninja(' + str(tool) + ')') + root = os.path.normpath(tool.installation_path()) + src_root = os.path.join(root, 'src') + success = git_clone_checkout_and_pull(tool.download_url(), src_root, tool.git_branch) + if not success: + return False + + build_dir = llvm_build_dir(tool) + build_root = os.path.join(root, build_dir) + + build_type = decide_cmake_build_type(tool) + + # Configure + cmake_generator, args = get_generator_and_config_args(tool) + + cmakelists_dir = os.path.join(src_root) + success = cmake_configure(cmake_generator, build_root, cmakelists_dir, build_type, args) + if not success: + return False + + # Make + success = make_build(build_root, build_type) + + if success: + bin_dir = os.path.join(root, 'bin') + mkdir_p(bin_dir) + exe_paths = [os.path.join(build_root, 'Release', 'ninja'), os.path.join(build_root, 'ninja')] + for e in exe_paths: + for s in ['.exe', '']: + ninja = e + s + if os.path.isfile(ninja): + dst = os.path.join(bin_dir, 'ninja' + s) + shutil.copyfile(ninja, dst) + os.chmod(dst, os.stat(dst).st_mode | stat.S_IEXEC) + + return success + + +def build_ccache(tool): + debug_print('build_ccache(' + str(tool) + ')') + root = os.path.normpath(tool.installation_path()) + src_root = os.path.join(root, 'src') + success = git_clone_checkout_and_pull(tool.download_url(), src_root, tool.git_branch) + if not success: + return False + + build_dir = llvm_build_dir(tool) + build_root = os.path.join(root, build_dir) + + build_type = decide_cmake_build_type(tool) + + # Configure + cmake_generator, args = get_generator_and_config_args(tool) + args += ['-DZSTD_FROM_INTERNET=ON'] + + cmakelists_dir = os.path.join(src_root) + success = cmake_configure(cmake_generator, build_root, cmakelists_dir, build_type, args) + if not success: + return False + + # Make + success = make_build(build_root, build_type) + + if success: + bin_dir = os.path.join(root, 'bin') + mkdir_p(bin_dir) + exe_paths = [os.path.join(build_root, 'Release', 'ccache'), os.path.join(build_root, 'ccache')] + for e in exe_paths: + for s in ['.exe', '']: + ccache = e + s + if os.path.isfile(ccache): + dst = os.path.join(bin_dir, 'ccache' + s) + shutil.copyfile(ccache, dst) + os.chmod(dst, os.stat(dst).st_mode | stat.S_IEXEC) + + cache_dir = os.path.join(root, 'cache') + open(os.path.join(root, 'emcc_ccache.conf'), 'w').write('''# Set maximum cache size to 10 GB: +max_size = 10G +cache_dir = %s +''' % cache_dir) + mkdir_p(cache_dir) + + return success + + +# Finds the newest installed version of a given tool +def find_latest_installed_tool(name): + for t in reversed(tools): + if t.id == name and t.is_installed(): + return t + + +# npm install in Emscripten root directory +def emscripten_npm_install(tool, directory): + node_tool = find_latest_installed_tool('node') + if not node_tool: + npm_fallback = which('npm') + if not npm_fallback: + errlog('Failed to find npm command!') + errlog('Running "npm ci" in installed Emscripten root directory ' + tool.installation_path() + ' is required!') + errlog('Please install node.js first!') + return False + node_path = os.path.dirname(npm_fallback) + else: + node_path = os.path.join(node_tool.installation_path(), 'bin') + + npm = os.path.join(node_path, 'npm' + ('.cmd' if WINDOWS else '')) + env = os.environ.copy() + env["PATH"] = node_path + os.pathsep + env["PATH"] + print('Running post-install step: npm ci ...') + try: + subprocess.check_output( + [npm, 'ci', '--production'], + cwd=directory, stderr=subprocess.STDOUT, env=env, + universal_newlines=True) + except subprocess.CalledProcessError as e: + errlog('Error running %s:\n%s' % (e.cmd, e.output)) + return False + + print('Done running: npm ci') + + if os.path.isfile(os.path.join(directory, 'bootstrap.py')): + try: + subprocess.check_output([sys.executable, os.path.join(directory, 'bootstrap.py')], + cwd=directory, stderr=subprocess.STDOUT, env=env, + universal_newlines=True) + except subprocess.CalledProcessError as e: + errlog('Error running %s:\n%s' % (e.cmd, e.output)) + return False + + print('Done running: Emscripten bootstrap') + return True + + +# Binaryen build scripts: +def binaryen_build_root(tool): + build_root = tool.installation_path().strip() + if build_root.endswith('/') or build_root.endswith('\\'): + build_root = build_root[:-1] + generator_prefix = cmake_generator_prefix() + build_root = build_root + generator_prefix + '_' + str(tool.bitness) + 'bit_binaryen' + return build_root + + +def uninstall_binaryen(tool): + debug_print('uninstall_binaryen(' + str(tool) + ')') + build_root = binaryen_build_root(tool) + print("Deleting path '" + build_root + "'") + remove_tree(build_root) + + +def is_binaryen_installed(tool): + build_root = binaryen_build_root(tool) + return os.path.exists(build_root) + + +def build_binaryen_tool(tool): + debug_print('build_binaryen_tool(' + str(tool) + ')') + src_root = tool.installation_path() + build_root = binaryen_build_root(tool) + build_type = decide_cmake_build_type(tool) + + # Configure + cmake_generator, args = get_generator_and_config_args(tool) + args += ['-DENABLE_WERROR=0'] # -Werror is not useful for end users + args += ['-DBUILD_TESTS=0'] # We don't want to build or run tests + + if 'Visual Studio' in CMAKE_GENERATOR: + if BUILD_FOR_TESTING: + args += ['-DRUN_STATIC_ANALYZER=1'] + + success = cmake_configure(cmake_generator, build_root, src_root, build_type, args) + if not success: + return False + + # Make + success = make_build(build_root, build_type) + + # Deploy scripts needed from source repository to build directory + remove_tree(os.path.join(build_root, 'scripts')) + shutil.copytree(os.path.join(src_root, 'scripts'), os.path.join(build_root, 'scripts')) + remove_tree(os.path.join(build_root, 'src', 'js')) + shutil.copytree(os.path.join(src_root, 'src', 'js'), os.path.join(build_root, 'src', 'js')) + + return success + + +def download_and_extract(archive, dest_dir, filename_prefix='', clobber=True): + debug_print('download_and_extract(archive=' + archive + ', dest_dir=' + dest_dir + ')') + + url = urljoin(emsdk_packages_url, archive) + + def try_download(url, silent=False): + return download_file(url, download_dir, not KEEP_DOWNLOADS, + filename_prefix, silent=silent) + + # Special hack for the wasm-binaries we transitioned from `.bzip2` to + # `.xz`, but we can't tell from the version/url which one to use, so + # try one and then fall back to the other. + success = False + if 'wasm-binaries' in archive and os.path.splitext(archive)[1] == '.xz': + success = try_download(url, silent=True) + if not success: + alt_url = url.replace('.tar.xz', '.tbz2') + success = try_download(alt_url, silent=True) + if success: + url = alt_url + + if not success: + success = try_download(url) + + if not success: + return False + + # Remove the old directory, since we have some SDKs that install into the + # same directory. If we didn't do this contents of the previous install + # could remain. + if clobber: + remove_tree(dest_dir) + + download_target = get_download_target(url, download_dir, filename_prefix) + if archive.endswith('.zip'): + return unzip(download_target, dest_dir) + else: + return untargz(download_target, dest_dir) + + +def to_native_path(p): + if WINDOWS and not MSYS: + return to_unix_path(p).replace('/', '\\') + else: + return to_unix_path(p) + + +# Finds and returns a list of the directories that need to be added to PATH for +# the given set of tools. +def get_required_path(active_tools): + path_add = [to_native_path(EMSDK_PATH)] + for tool in active_tools: + if hasattr(tool, 'activated_path'): + path = to_native_path(tool.expand_vars(tool.activated_path)) + # If the tool has an activated_path_skip attribute then we don't add + # the tools path to the users path if a program by that name is found + # in the existing PATH. This allows us to, for example, add our version + # node to the users PATH if, and only if, they don't already have a + # another version of node in their PATH. + if hasattr(tool, 'activated_path_skip'): + current_path = which(tool.activated_path_skip) + # We found an executable by this name in the current PATH, but we + # ignore our own version for this purpose. + if current_path and os.path.dirname(current_path) != path: + continue + path_add.append(path) + return path_add + + +# Returns the absolute path to the file '.emscripten' for the current user on +# this system. +EM_CONFIG_PATH = os.path.join(EMSDK_PATH, ".emscripten") +EM_CONFIG_DICT = {} + + +def parse_key_value(line): + if not line: + return ('', '') + eq = line.find('=') + if eq != -1: + key = line[0:eq].strip() + value = line[eq + 1:].strip() + return (key, value) + else: + return (key, '') + + +def load_em_config(): + EM_CONFIG_DICT.clear() + lines = [] + try: + lines = open(EM_CONFIG_PATH, "r").read().split('\n') + except Exception: + pass + for line in lines: + try: + key, value = parse_key_value(line) + if value != '': + EM_CONFIG_DICT[key] = value + except Exception: + pass + + +def find_emscripten_root(active_tools): + """Find the currently active emscripten root. + + If there is more than one tool that defines EMSCRIPTEN_ROOT (this + should not happen under normal circumstances), assume the last one takes + precedence. + """ + root = None + for tool in active_tools: + config = tool.activated_config() + if 'EMSCRIPTEN_ROOT' in config: + root = config['EMSCRIPTEN_ROOT'] + return root + + +# returns a tuple (string,string) of config files paths that need to used +# to activate emsdk env depending on $SHELL, defaults to bash. +def get_emsdk_shell_env_configs(): + default_emsdk_env = sdk_path('emsdk_env.sh') + default_shell_config_file = '$HOME/.bash_profile' + shell = os.getenv('SHELL', '') + if 'zsh' in shell: + return (default_emsdk_env, '$HOME/.zprofile') + elif 'csh' in shell: + return (sdk_path('emsdk_env.csh'), '$HOME/.cshrc') + elif 'fish' in shell: + return (sdk_path('emsdk_env.fish'), '$HOME/.config/fish/config.fish') + else: + return (default_emsdk_env, default_shell_config_file) + + +def generate_em_config(active_tools, permanently_activate, system): + cfg = 'import os\n' + cfg += "emsdk_path = os.path.dirname(os.getenv('EM_CONFIG')).replace('\\\\', '/')\n" + + # Different tools may provide the same activated configs; the latest to be + # activated is the relevant one. + activated_config = OrderedDict() + for tool in active_tools: + for name, value in tool.activated_config().items(): + activated_config[name] = value + + if 'NODE_JS' not in activated_config: + node_fallback = which('nodejs') + if not node_fallback: + node_fallback = 'node' + activated_config['NODE_JS'] = node_fallback + + for name, value in activated_config.items(): + cfg += name + " = '" + value + "'\n" + + emroot = find_emscripten_root(active_tools) + if emroot: + version = parse_emscripten_version(emroot) + # Older emscripten versions of emscripten depend on certain config + # keys that are no longer used. + # See https://github.com/emscripten-core/emscripten/pull/9469 + if version < [1, 38, 46]: + cfg += 'COMPILER_ENGINE = NODE_JS\n' + # See https://github.com/emscripten-core/emscripten/pull/9542 + if version < [1, 38, 48]: + cfg += 'JS_ENGINES = [NODE_JS]\n' + + cfg = cfg.replace("'" + EMSDK_PATH, "emsdk_path + '") + + if os.path.exists(EM_CONFIG_PATH): + backup_path = EM_CONFIG_PATH + ".old" + move_with_overwrite(EM_CONFIG_PATH, backup_path) + + with open(EM_CONFIG_PATH, "w") as text_file: + text_file.write(cfg) + + # Clear old emscripten content. + rmfile(os.path.join(EMSDK_PATH, ".emscripten_sanity")) + + path_add = get_required_path(active_tools) + + # Give some recommended next step, depending on the platform + if WINDOWS: + if not permanently_activate and not system: + print('Next steps:') + print('- Consider running `emsdk activate` with --permanent or --system') + print(' to have emsdk settings available on startup.') + else: + print('Next steps:') + print('- To conveniently access emsdk tools from the command line,') + print(' consider adding the following directories to your PATH:') + for p in path_add: + print(' ' + p) + print('- This can be done for the current shell by running:') + emsdk_env, shell_config_file = get_emsdk_shell_env_configs() + print(' source "%s"' % emsdk_env) + print('- Configure emsdk in your shell startup scripts by running:') + print(' echo \'source "%s"\' >> %s' % (emsdk_env, shell_config_file)) + + +def find_msbuild_dir(): + program_files = os.getenv('ProgramFiles', 'C:/Program Files') + program_files_x86 = os.getenv('ProgramFiles(x86)', 'C:/Program Files (x86)') + MSBUILDX86_DIR = os.path.join(program_files_x86, "MSBuild/Microsoft.Cpp/v4.0/Platforms") + MSBUILD_DIR = os.path.join(program_files, "MSBuild/Microsoft.Cpp/v4.0/Platforms") + if os.path.exists(MSBUILDX86_DIR): + return MSBUILDX86_DIR + if os.path.exists(MSBUILD_DIR): + return MSBUILD_DIR + # No MSbuild installed. + return '' + + +class Tool(object): + def __init__(self, data): + # Convert the dictionary representation of the tool in 'data' to members of + # this class for convenience. + for key, value in data.items(): + # Python2 compat, convert unicode to str + if sys.version_info < (3,) and isinstance(value, unicode): # noqa + value = value.encode('Latin-1') + setattr(self, key, value) + + # Cache the name ID of this Tool (these are read very often) + self.name = self.id + if self.version: + self.name += '-' + self.version + if hasattr(self, 'bitness'): + self.name += '-' + str(self.bitness) + 'bit' + + def __str__(self): + return self.name + + def __repr__(self): + return self.name + + def expand_vars(self, str): + if WINDOWS and '%MSBuildPlatformsDir%' in str: + str = str.replace('%MSBuildPlatformsDir%', find_msbuild_dir()) + if '%cmake_build_type_on_win%' in str: + str = str.replace('%cmake_build_type_on_win%', (decide_cmake_build_type(self) + '/') if WINDOWS else '') + if '%installation_dir%' in str: + str = str.replace('%installation_dir%', sdk_path(self.installation_dir())) + if '%generator_prefix%' in str: + str = str.replace('%generator_prefix%', cmake_generator_prefix()) + str = str.replace('%.exe%', '.exe' if WINDOWS else '') + if '%llvm_build_bin_dir%' in str: + str = str.replace('%llvm_build_bin_dir%', llvm_build_bin_dir(self)) + + return str + + # Return true if this tool requires building from source, and false if this is a precompiled tool. + def needs_compilation(self): + if hasattr(self, 'cmake_build_type'): + return True + + if hasattr(self, 'uses'): + for tool_name in self.uses: + tool = find_tool(tool_name) + if not tool: + debug_print('Tool ' + str(self) + ' depends on ' + tool_name + ' which does not exist!') + continue + if tool.needs_compilation(): + return True + + return False + + # Specifies the target path where this tool will be installed to. This could + # either be a directory or a filename (e.g. in case of node.js) + def installation_path(self): + if hasattr(self, 'install_path'): + pth = self.expand_vars(self.install_path) + return sdk_path(pth) + p = self.version + if hasattr(self, 'bitness') and (not hasattr(self, 'append_bitness') or self.append_bitness): + p += '_' + str(self.bitness) + 'bit' + return sdk_path(os.path.join(self.id, p)) + + # Specifies the target directory this tool will be installed to. + def installation_dir(self): + dir = self.installation_path() + if path_points_to_directory(dir): + return dir + else: + return os.path.dirname(dir) + + # Returns the configuration item that needs to be added to .emscripten to make + # this Tool active for the current user. + def activated_config(self): + if not hasattr(self, 'activated_cfg'): + return {} + config = OrderedDict() + expanded = to_unix_path(self.expand_vars(self.activated_cfg)) + for specific_cfg in expanded.split(';'): + name, value = specific_cfg.split('=') + config[name] = value.strip("'") + return config + + def activated_environment(self): + if hasattr(self, 'activated_env'): + return self.expand_vars(self.activated_env).split(';') + else: + return [] + + def compatible_with_this_arch(self): + if hasattr(self, 'arch'): + if self.arch != ARCH: + return False + return True + + def compatible_with_this_os(self): + if hasattr(self, 'os'): + if self.os == 'all': + return True + if self.compatible_with_this_arch() and ((WINDOWS and 'win' in self.os) or (LINUX and ('linux' in self.os or 'unix' in self.os)) or (MACOS and ('macos' in self.os or 'unix' in self.os))): + return True + else: + return False + else: + if not hasattr(self, 'macos_url') and not hasattr(self, 'windows_url') and not hasattr(self, 'unix_url') and not hasattr(self, 'linux_url'): + return True + + if MACOS and hasattr(self, 'macos_url') and self.compatible_with_this_arch(): + return True + + if LINUX and hasattr(self, 'linux_url') and self.compatible_with_this_arch(): + return True + + if WINDOWS and hasattr(self, 'windows_url') and self.compatible_with_this_arch(): + return True + + if UNIX and hasattr(self, 'unix_url'): + return True + + return hasattr(self, 'url') + + # the "version file" is a file inside install dirs that indicates the + # version installed there. this helps disambiguate when there is more than + # one version that may be installed to the same directory (which is used + # to avoid accumulating builds over time in some cases, with new builds + # overwriting the old) + def get_version_file_path(self): + return os.path.join(self.installation_path(), '.emsdk_version') + + def is_installed_version(self): + version_file_path = self.get_version_file_path() + if os.path.isfile(version_file_path): + with open(version_file_path, 'r') as version_file: + return version_file.read().strip() == self.name + return False + + def update_installed_version(self): + with open(self.get_version_file_path(), 'w') as version_file: + version_file.write(self.name + '\n') + return None + + def is_installed(self, skip_version_check=False): + # If this tool/sdk depends on other tools, require that all dependencies are + # installed for this tool to count as being installed. + if hasattr(self, 'uses'): + for tool_name in self.uses: + tool = find_tool(tool_name) + if tool is None: + errlog("Manifest error: No tool by name '" + tool_name + "' found! This may indicate an internal SDK error!") + return False + if not tool.is_installed(): + return False + + if self.download_url() is None: + # This tool does not contain downloadable elements, so it is installed by default. + return True + + content_exists = is_nonempty_directory(self.installation_path()) + + # For e.g. fastcomp clang from git repo, the activated PATH is the + # directory where the compiler is built to, and installation_path is + # the directory where the source tree exists. To distinguish between + # multiple packages sharing the same source (clang-main-32bit, + # clang-main-64bit, clang-main-32bit and clang-main-64bit each + # share the same git repo), require that in addition to the installation + # directory, each item in the activated PATH must exist. + if hasattr(self, 'activated_path') and not os.path.exists(self.expand_vars(self.activated_path)): + content_exists = False + + if hasattr(self, 'custom_is_installed_script'): + if self.custom_is_installed_script == 'is_binaryen_installed': + return is_binaryen_installed(self) + else: + raise Exception('Unknown custom_is_installed_script directive "' + self.custom_is_installed_script + '"!') + + return content_exists and (skip_version_check or self.is_installed_version()) + + def is_active(self): + if not self.is_installed(): + return False + + # All dependencies of this tool must be active as well. + deps = self.dependencies() + for tool in deps: + if not tool.is_active(): + return False + + activated_cfg = self.activated_config() + if not activated_cfg: + return len(deps) > 0 + + for key, value in activated_cfg.items(): + if key not in EM_CONFIG_DICT: + debug_print(str(self) + ' is not active, because key="' + key + '" does not exist in .emscripten') + return False + + # all paths are stored dynamically relative to the emsdk root, so + # normalize those first. + config_value = EM_CONFIG_DICT[key].replace("emsdk_path + '", "'" + EMSDK_PATH) + config_value = config_value.strip("'") + if config_value != value: + debug_print(str(self) + ' is not active, because key="' + key + '" has value "' + config_value + '" but should have value "' + value + '"') + return False + return True + + # Returns true if the system environment variables requires by this tool are currently active. + def is_env_active(self): + envs = self.activated_environment() + for env in envs: + key, value = parse_key_value(env) + if key not in os.environ or to_unix_path(os.environ[key]) != to_unix_path(value): + debug_print(str(self) + ' is not active, because environment variable key="' + key + '" has value "' + str(os.getenv(key)) + '" but should have value "' + value + '"') + return False + + if hasattr(self, 'activated_path'): + path = to_unix_path(self.expand_vars(self.activated_path)) + for p in path: + path_items = os.environ['PATH'].replace('\\', '/').split(ENVPATH_SEPARATOR) + if not normalized_contains(path_items, p): + debug_print(str(self) + ' is not active, because environment variable PATH item "' + p + '" is not present (PATH=' + os.environ['PATH'] + ')') + return False + return True + + # If this tool can be installed on this system, this function returns True. + # Otherwise, this function returns a string that describes the reason why this + # tool is not available. + def can_be_installed(self): + if hasattr(self, 'bitness'): + if self.bitness == 64 and not is_os_64bit(): + return "this tool is only provided for 64-bit OSes" + return True + + def download_url(self): + if WINDOWS and hasattr(self, 'windows_url'): + return self.windows_url + elif MACOS and hasattr(self, 'macos_url'): + return self.macos_url + elif LINUX and hasattr(self, 'linux_url'): + return self.linux_url + elif UNIX and hasattr(self, 'unix_url'): + return self.unix_url + elif hasattr(self, 'url'): + return self.url + else: + return None + + def install(self): + """Returns True if the Tool was installed of False if was skipped due to + already being installed. + """ + if self.can_be_installed() is not True: + exit_with_error("The tool '" + str(self) + "' is not available due to the reason: " + self.can_be_installed()) + + if self.id == 'sdk': + return self.install_sdk() + else: + return self.install_tool() + + def install_sdk(self): + """Returns True if any SDK component was installed of False all componented + were already installed. + """ + print("Installing SDK '" + str(self) + "'..") + installed = False + + for tool_name in self.uses: + tool = find_tool(tool_name) + if tool is None: + exit_with_error("manifest error: No tool by name '" + tool_name + "' found! This may indicate an internal SDK error!") + installed |= tool.install() + + if not installed: + print("All SDK components already installed: '" + str(self) + "'.") + return False + + if getattr(self, 'custom_install_script', None) == 'emscripten_npm_install': + # upstream tools have hardcoded paths that are not stored in emsdk_manifest.json registry + install_path = 'upstream' + emscripten_dir = os.path.join(EMSDK_PATH, install_path, 'emscripten') + # Older versions of the sdk did not include the node_modules directory + # and require `npm ci` to be run post-install + if not os.path.exists(os.path.join(emscripten_dir, 'node_modules')): + if not emscripten_npm_install(self, emscripten_dir): + exit_with_error('post-install step failed: emscripten_npm_install') + + print("Done installing SDK '" + str(self) + "'.") + return True + + def install_tool(self): + """Returns True if the SDK was installed of False if was skipped due to + already being installed. + """ + # Avoid doing a redundant reinstall of the tool, if it has already been installed. + # However all tools that are sourced directly from git branches do need to be + # installed every time when requested, since the install step is then used to git + # pull the tool to a newer version. + if self.is_installed() and not hasattr(self, 'git_branch'): + print("Skipped installing " + self.name + ", already installed.") + return False + + print("Installing tool '" + str(self) + "'..") + url = self.download_url() + + if hasattr(self, 'custom_install_script') and self.custom_install_script == 'build_llvm': + success = build_llvm(self) + elif hasattr(self, 'custom_install_script') and self.custom_install_script == 'build_ninja': + success = build_ninja(self) + elif hasattr(self, 'custom_install_script') and self.custom_install_script == 'build_ccache': + success = build_ccache(self) + elif hasattr(self, 'git_branch'): + success = git_clone_checkout_and_pull(url, self.installation_path(), self.git_branch) + elif url.endswith(ARCHIVE_SUFFIXES): + success = download_and_extract(url, self.installation_path(), + filename_prefix=getattr(self, 'download_prefix', '')) + else: + assert False, 'unhandled url type: ' + url + + if not success: + exit_with_error("installation failed!") + + if hasattr(self, 'custom_install_script'): + if self.custom_install_script == 'emscripten_npm_install': + success = emscripten_npm_install(self, self.installation_path()) + elif self.custom_install_script in ('build_llvm', 'build_ninja', 'build_ccache'): + # 'build_llvm' is a special one that does the download on its + # own, others do the download manually. + pass + elif self.custom_install_script == 'build_binaryen': + success = build_binaryen_tool(self) + else: + raise Exception('Unknown custom_install_script command "' + self.custom_install_script + '"!') + + if not success: + exit_with_error("installation failed!") + + # Install an emscripten-version.txt file if told to, and if there is one. + # (If this is not an actual release, but some other build, then we do not + # write anything.) + if hasattr(self, 'emscripten_releases_hash'): + emscripten_version_file_path = os.path.join(to_native_path(self.expand_vars(self.activated_path)), 'emscripten-version.txt') + version = get_emscripten_release_version(self.emscripten_releases_hash) + if version: + with open(emscripten_version_file_path, 'w') as f: + f.write('"%s"\n' % version) + + print("Done installing tool '" + str(self) + "'.") + + # Sanity check that the installation succeeded, and if so, remove unneeded + # leftover installation files. + if not self.is_installed(skip_version_check=True): + exit_with_error("installation of '" + str(self) + "' failed, but no error was detected. Either something went wrong with the installation, or this may indicate an internal emsdk error.") + + self.cleanup_temp_install_files() + self.update_installed_version() + return True + + def cleanup_temp_install_files(self): + if KEEP_DOWNLOADS: + return + url = self.download_url() + if url.endswith(ARCHIVE_SUFFIXES): + download_target = get_download_target(url, download_dir, getattr(self, 'download_prefix', '')) + debug_print("Deleting temporary download: " + download_target) + rmfile(download_target) + + def uninstall(self): + if not self.is_installed(): + print("Tool '" + str(self) + "' was not installed. No need to uninstall.") + return + print("Uninstalling tool '" + str(self) + "'..") + if hasattr(self, 'custom_uninstall_script'): + if self.custom_uninstall_script == 'uninstall_binaryen': + uninstall_binaryen(self) + else: + raise Exception('Unknown custom_uninstall_script directive "' + self.custom_uninstall_script + '"!') + print("Deleting path '" + self.installation_path() + "'") + remove_tree(self.installation_path()) + print("Done uninstalling '" + str(self) + "'.") + + def dependencies(self): + if not hasattr(self, 'uses'): + return [] + deps = [] + + for tool_name in self.uses: + tool = find_tool(tool_name) + if tool: + deps += [tool] + return deps + + def recursive_dependencies(self): + if not hasattr(self, 'uses'): + return [] + deps = [] + for tool_name in self.uses: + tool = find_tool(tool_name) + if tool: + deps += [tool] + deps += tool.recursive_dependencies() + return deps + + +# A global registry of all known Emscripten SDK tools available in the SDK manifest. +tools = [] +tools_map = {} + + +def add_tool(tool): + tool.is_sdk = False + tools.append(tool) + if find_tool(str(tool)): + raise Exception('Duplicate tool ' + str(tool) + '! Existing:\n{' + ', '.join("%s: %s" % item for item in vars(find_tool(str(tool))).items()) + '}, New:\n{' + ', '.join("%s: %s" % item for item in vars(tool).items()) + '}') + tools_map[str(tool)] = tool + + +# A global registry of all known SDK toolsets. +sdks = [] +sdks_map = {} + + +def add_sdk(sdk): + sdk.is_sdk = True + sdks.append(sdk) + if find_sdk(str(sdk)): + raise Exception('Duplicate sdk ' + str(sdk) + '! Existing:\n{' + ', '.join("%s: %s" % item for item in vars(find_sdk(str(sdk))).items()) + '}, New:\n{' + ', '.join("%s: %s" % item for item in vars(sdk).items()) + '}') + sdks_map[str(sdk)] = sdk + + +# N.B. In both tools and sdks list above, we take the convention that the newest +# items are at the back of the list (ascending chronological order) + +def find_tool(name): + return tools_map.get(name) + + +def find_sdk(name): + return sdks_map.get(name) + + +def is_os_64bit(): + return ARCH.endswith('64') + + +def find_latest_version(): + return resolve_sdk_aliases('latest') + + +def find_latest_hash(): + version = find_latest_version() + releases_info = load_releases_info() + return releases_info['releases'][version] + + +def resolve_sdk_aliases(name, verbose=False): + releases_info = load_releases_info() + while name in releases_info['aliases']: + if verbose: + print("Resolving SDK alias '%s' to '%s'" % (name, releases_info['aliases'][name])) + name = releases_info['aliases'][name] + return name + + +def find_latest_sdk(): + return 'sdk-releases-%s-64bit' % (find_latest_hash()) + + +def find_tot_sdk(): + debug_print('Fetching emscripten-releases repository...') + global extra_release_tag + extra_release_tag = get_emscripten_releases_tot() + return 'sdk-releases-%s-64bit' % (extra_release_tag) + + +def parse_emscripten_version(emscripten_root): + version_file = os.path.join(emscripten_root, 'emscripten-version.txt') + with open(version_file) as f: + version = f.read().strip() + version = version.strip('"').split('-')[0].split('.') + return [int(v) for v in version] + + +# Given a git hash in emscripten-releases, find the emscripten +# version for it. There may not be one if this is not the hash of +# a release, in which case we return None. +def get_emscripten_release_version(emscripten_releases_hash): + releases_info = load_releases_info() + for key, value in dict(releases_info['releases']).items(): + if value == emscripten_releases_hash: + return key.split('-')[0] + return None + + +# Get the tip-of-tree build identifier. +def get_emscripten_releases_tot(): + git_clone_checkout_and_pull(emscripten_releases_repo, sdk_path('releases'), 'main') + recent_releases = git_recent_commits(sdk_path('releases')) + # The recent releases are the latest hashes in the git repo. There + # may not be a build for the most recent ones yet; find the last + # that does. + arch = '' + if ARCH == 'arm64': + arch = '-arm64' + + def make_url(ext): + return emscripten_releases_download_url_template % ( + os_name(), + release, + arch, + ext, + ) + + for release in recent_releases: + make_url('tar.xz' if not WINDOWS else 'zip') + try: + urlopen(make_url('tar.xz' if not WINDOWS else 'zip')) + except Exception: + if not WINDOWS: + # Try the old `.tbz2` name + # TODO:remove this once tot builds are all using xz + try: + urlopen(make_url('tbz2')) + except Exception: + continue + else: + continue + return release + exit_with_error('failed to find build of any recent emsdk revision') + + +def get_release_hash(arg, releases_info): + return releases_info.get(arg, None) or releases_info.get('sdk-' + arg + '-64bit') + + +def version_key(ver): + return tuple(map(int, re.split('[._-]', ver)[:3])) + + +# A sort function that is compatible with both Python 2 and Python 3 using a +# custom comparison function. +def python_2_3_sorted(arr, cmp): + if sys.version_info >= (3,): + return sorted(arr, key=functools.cmp_to_key(cmp)) + else: + return sorted(arr, cmp=cmp) + + +def is_emsdk_sourced_from_github(): + return os.path.exists(os.path.join(EMSDK_PATH, '.git')) + + +def update_emsdk(): + if is_emsdk_sourced_from_github(): + errlog('You seem to have bootstrapped Emscripten SDK by cloning from GitHub. In this case, use "git pull" instead of "emsdk update" to update emsdk. (Not doing that automatically in case you have local changes)') + sys.exit(1) + if not download_and_extract(emsdk_zip_download_url, EMSDK_PATH, clobber=False): + sys.exit(1) + + +# Lists all legacy (pre-emscripten-releases) tagged versions directly in the Git +# repositories. These we can pull and compile from source. +def load_legacy_emscripten_tags(): + return open(sdk_path('legacy-emscripten-tags.txt'), 'r').read().split('\n') + + +def load_legacy_binaryen_tags(): + return open(sdk_path('legacy-binaryen-tags.txt'), 'r').read().split('\n') + + +def remove_prefix(s, prefix): + if s.startswith(prefix): + return s[len(prefix):] + else: + return s + + +def remove_suffix(s, suffix): + if s.endswith(suffix): + return s[:len(s) - len(suffix)] + else: + return s + + +# filename should be one of: 'llvm-precompiled-tags-32bit.txt', 'llvm-precompiled-tags-64bit.txt' +def load_file_index_list(filename): + items = open(sdk_path(filename)).read().splitlines() + items = [remove_suffix(remove_suffix(remove_prefix(x, 'emscripten-llvm-e'), '.tar.gz'), '.zip').strip() for x in items] + items = [x for x in items if 'latest' not in x and len(x) > 0] + + # Sort versions from oldest to newest (the default sort would be + # lexicographic, i.e. '1.37.1 < 1.37.10 < 1.37.2') + return sorted(items, key=version_key) + + +# Load the json info for emscripten-releases. +def load_releases_info(): + if not hasattr(load_releases_info, 'cached_info'): + try: + text = open(sdk_path('emscripten-releases-tags.json'), 'r').read() + load_releases_info.cached_info = json.loads(text) + except Exception as e: + print('Error parsing emscripten-releases-tags.json!') + exit_with_error(str(e)) + + return load_releases_info.cached_info + + +def get_installed_sdk_version(): + version_file = sdk_path(os.path.join('upstream', '.emsdk_version')) + if not os.path.exists(version_file): + return None + with open(version_file) as f: + version = f.read() + return version.split('-')[1] + + +# Get a list of tags for emscripten-releases. +def load_releases_tags(): + tags = [] + info = load_releases_info() + + for version, sha in sorted(info['releases'].items(), key=lambda x: version_key(x[0])): + tags.append(sha) + + if extra_release_tag: + tags.append(extra_release_tag) + + # Explicitly add the currently installed SDK version. This could be a custom + # version (installed explicitly) so it might not be part of the main list + # loaded above. + installed = get_installed_sdk_version() + if installed and installed not in tags: + tags.append(installed) + + return tags + + +def load_releases_versions(): + info = load_releases_info() + versions = list(info['releases'].keys()) + return versions + + +def is_string(s): + if sys.version_info[0] >= 3: + return isinstance(s, str) + return isinstance(s, basestring) # noqa + + +def load_sdk_manifest(): + try: + manifest = json.loads(open(sdk_path("emsdk_manifest.json"), "r").read()) + except Exception as e: + print('Error parsing emsdk_manifest.json!') + print(str(e)) + return + + emscripten_tags = load_legacy_emscripten_tags() + llvm_precompiled_tags_32bit = [] + llvm_precompiled_tags_64bit = load_file_index_list('llvm-tags-64bit.txt') + llvm_precompiled_tags = llvm_precompiled_tags_32bit + llvm_precompiled_tags_64bit + binaryen_tags = load_legacy_binaryen_tags() + releases_tags = load_releases_tags() + + def dependencies_exist(sdk): + for tool_name in sdk.uses: + tool = find_tool(tool_name) + if not tool: + debug_print('missing dependency: ' + tool_name) + return False + return True + + def cmp_version(ver, cmp_operand, reference): + if cmp_operand == '<=': + return version_key(ver) <= version_key(reference) + if cmp_operand == '<': + return version_key(ver) < version_key(reference) + if cmp_operand == '>=': + return version_key(ver) >= version_key(reference) + if cmp_operand == '>': + return version_key(ver) > version_key(reference) + if cmp_operand == '==': + return version_key(ver) == version_key(reference) + if cmp_operand == '!=': + return version_key(ver) != version_key(reference) + raise Exception('Invalid cmp_operand "' + cmp_operand + '"!') + + def passes_filters(param, ver, filters): + for v in filters: + if v[0] == param and not cmp_version(ver, v[1], v[2]): + return False + return True + + # A 'category parameter' is a %foo%-encoded identifier that specifies + # a class of tools instead of just one tool, e.g. %tag% + def expand_category_param(param, category_list, t, is_sdk): + for i, ver in enumerate(category_list): + if not ver.strip(): + continue + t2 = copy.copy(t) + found_param = False + for p, v in vars(t2).items(): + if is_string(v) and param in v: + t2.__dict__[p] = v.replace(param, ver) + found_param = True + if not found_param: + continue + t2.is_old = i < len(category_list) - 2 + if hasattr(t2, 'uses'): + t2.uses = [x.replace(param, ver) for x in t2.uses] + + # Filter out expanded tools by version requirements, such as ["tag", "<=", "1.37.22"] + if hasattr(t2, 'version_filter'): + passes = passes_filters(param, ver, t2.version_filter) + if not passes: + continue + + if is_sdk: + if dependencies_exist(t2): + if not find_sdk(t2.name): + add_sdk(t2) + else: + debug_print('SDK ' + str(t2) + ' already existed in manifest, not adding twice') + else: + if not find_tool(t2.name): + add_tool(t2) + else: + debug_print('Tool ' + str(t2) + ' already existed in manifest, not adding twice') + + for tool in manifest['tools']: + t = Tool(tool) + if t.compatible_with_this_os(): + if not hasattr(t, 'is_old'): + t.is_old = False + + # Expand the metapackages that refer to tags + if '%tag%' in t.version: + expand_category_param('%tag%', emscripten_tags, t, is_sdk=False) + elif '%precompiled_tag%' in t.version: + expand_category_param('%precompiled_tag%', llvm_precompiled_tags, t, is_sdk=False) + elif '%precompiled_tag32%' in t.version: + expand_category_param('%precompiled_tag32%', llvm_precompiled_tags_32bit, t, is_sdk=False) + elif '%precompiled_tag64%' in t.version: + expand_category_param('%precompiled_tag64%', llvm_precompiled_tags_64bit, t, is_sdk=False) + elif '%binaryen_tag%' in t.version: + expand_category_param('%binaryen_tag%', binaryen_tags, t, is_sdk=False) + elif '%releases-tag%' in t.version: + expand_category_param('%releases-tag%', releases_tags, t, is_sdk=False) + else: + add_tool(t) + + for sdk_str in manifest['sdks']: + sdk_str['id'] = 'sdk' + sdk = Tool(sdk_str) + if sdk.compatible_with_this_os(): + if not hasattr(sdk, 'is_old'): + sdk.is_old = False + + if '%tag%' in sdk.version: + expand_category_param('%tag%', emscripten_tags, sdk, is_sdk=True) + elif '%precompiled_tag%' in sdk.version: + expand_category_param('%precompiled_tag%', llvm_precompiled_tags, sdk, is_sdk=True) + elif '%precompiled_tag32%' in sdk.version: + expand_category_param('%precompiled_tag32%', llvm_precompiled_tags_32bit, sdk, is_sdk=True) + elif '%precompiled_tag64%' in sdk.version: + expand_category_param('%precompiled_tag64%', llvm_precompiled_tags_64bit, sdk, is_sdk=True) + elif '%releases-tag%' in sdk.version: + expand_category_param('%releases-tag%', releases_tags, sdk, is_sdk=True) + else: + add_sdk(sdk) + + +# Tests if the two given tools can be active at the same time. +# Currently only a simple check for name for same tool with different versions, +# possibly adds more logic in the future. +def can_simultaneously_activate(tool1, tool2): + return tool1.id != tool2.id + + +# Expands dependencies for each tool, and removes ones that don't exist. +def process_tool_list(tools_to_activate): + i = 0 + # Gather dependencies for each tool + while i < len(tools_to_activate): + tool = tools_to_activate[i] + deps = tool.recursive_dependencies() + tools_to_activate = tools_to_activate[:i] + deps + tools_to_activate[i:] + i += len(deps) + 1 + + for tool in tools_to_activate: + if not tool.is_installed(): + exit_with_error("error: tool is not installed and therefore cannot be activated: '%s'" % tool) + + # Remove conflicting tools + i = 0 + while i < len(tools_to_activate): + j = 0 + while j < i: + secondary_tool = tools_to_activate[j] + primary_tool = tools_to_activate[i] + if not can_simultaneously_activate(primary_tool, secondary_tool): + tools_to_activate.pop(j) + j -= 1 + i -= 1 + j += 1 + i += 1 + return tools_to_activate + + +def write_set_env_script(env_string): + assert CMD or POWERSHELL + open(EMSDK_SET_ENV, 'w').write(env_string) + + +# Reconfigure .emscripten to choose the currently activated toolset, set PATH +# and other environment variables. +# Returns the full list of deduced tools that are now active. +def set_active_tools(tools_to_activate, permanently_activate, system): + tools_to_activate = process_tool_list(tools_to_activate) + + if tools_to_activate: + tools = [x for x in tools_to_activate if not x.is_sdk] + print('Setting the following tools as active:\n ' + '\n '.join(map(lambda x: str(x), tools))) + print('') + + generate_em_config(tools_to_activate, permanently_activate, system) + + # Construct a .bat or .ps1 script that will be invoked to set env. vars and PATH + # We only do this on cmd or powershell since emsdk.bat/ps1 is able to modify the + # calling shell environment. On other shell `source emsdk_env.sh` is + # required. + if CMD or POWERSHELL: + # always set local environment variables since permanently activating will only set the registry settings and + # will not affect the current session + env_vars_to_add = get_env_vars_to_add(tools_to_activate, system, user=permanently_activate) + env_string = construct_env_with_vars(env_vars_to_add) + write_set_env_script(env_string) + + if WINDOWS and permanently_activate: + win_set_environment_variables(env_vars_to_add, system, user=permanently_activate) + + return tools_to_activate + + +def currently_active_sdk(): + for sdk in reversed(sdks): + if sdk.is_active(): + return sdk + return None + + +def currently_active_tools(): + active_tools = [] + for tool in tools: + if tool.is_active(): + active_tools += [tool] + return active_tools + + +# http://stackoverflow.com/questions/480214/how-do-you-remove-duplicates-from-a-list-in-python-whilst-preserving-order +def unique_items(seq): + seen = set() + seen_add = seen.add + return [x for x in seq if x not in seen and not seen_add(x)] + + +# Tests if a path is contained in the given list, but with separators normalized. +def normalized_contains(lst, elem): + elem = to_unix_path(elem) + for e in lst: + if elem == to_unix_path(e): + return True + return False + + +def to_msys_path(p): + p = to_unix_path(p) + new_path = re.sub(r'([a-zA-Z]):/(.*)', r'/\1/\2', p) + if len(new_path) > 3 and new_path[0] == '/' and new_path[2] == '/': + new_path = new_path[0] + new_path[1].lower() + new_path[2:] + return new_path + + +# Looks at the current PATH and adds and removes entries so that the PATH reflects +# the set of given active tools. +def adjusted_path(tools_to_activate, system=False, user=False): + # These directories should be added to PATH + path_add = get_required_path(tools_to_activate) + # These already exist. + if WINDOWS and not MSYS: + existing_path = win_get_environment_variable('PATH', system=system, user=user, fallback=True).split(ENVPATH_SEPARATOR) + else: + existing_path = os.environ['PATH'].split(ENVPATH_SEPARATOR) + + existing_emsdk_tools = [] + existing_nonemsdk_path = [] + for entry in existing_path: + if to_unix_path(entry).startswith(EMSDK_PATH): + existing_emsdk_tools.append(entry) + else: + existing_nonemsdk_path.append(entry) + + new_emsdk_tools = [] + kept_emsdk_tools = [] + for entry in path_add: + if not normalized_contains(existing_emsdk_tools, entry): + new_emsdk_tools.append(entry) + else: + kept_emsdk_tools.append(entry) + + whole_path = unique_items(new_emsdk_tools + kept_emsdk_tools + existing_nonemsdk_path) + + if MSYS: + # XXX Hack: If running native Windows Python in MSYS prompt where PATH + # entries look like "/c/Windows/System32", os.environ['PATH'] + # in Python will transform to show them as "C:\\Windows\\System32", so need + # to reconvert path delimiter back to forward slashes. + whole_path = [to_msys_path(p) for p in whole_path] + new_emsdk_tools = [to_msys_path(p) for p in new_emsdk_tools] + + separator = ':' if MSYS else ENVPATH_SEPARATOR + return (separator.join(whole_path), new_emsdk_tools) + + +def get_env_vars_to_add(tools_to_activate, system, user): + env_vars_to_add = [] + + newpath, added_path = adjusted_path(tools_to_activate, system, user) + + # Don't bother setting the path if there are no changes. + if os.environ['PATH'] != newpath: + env_vars_to_add += [('PATH', newpath)] + + if added_path: + info('Adding directories to PATH:') + for item in added_path: + info('PATH += ' + item) + info('') + + # A core variable EMSDK points to the root of Emscripten SDK directory. + env_vars_to_add += [('EMSDK', EMSDK_PATH)] + + for tool in tools_to_activate: + for env in tool.activated_environment(): + key, value = parse_key_value(env) + value = to_native_path(tool.expand_vars(value)) + env_vars_to_add += [(key, value)] + + emroot = find_emscripten_root(tools_to_activate) + if emroot: + # For older emscripten versions that don't use an embedded cache by + # default we need to export EM_CACHE. + # + # Sadly, we can't put this in the config file since those older versions + # also didn't read the `CACHE` key from the config file: + # + # History: + # - 'CACHE' config started being honored in 1.39.16 + # https://github.com/emscripten-core/emscripten/pull/11091 + # - Default to embedded cache also started in 1.39.16 + # https://github.com/emscripten-core/emscripten/pull/11126 + # - Emscripten supports automatically locating the embedded + # config in 1.39.13: + # https://github.com/emscripten-core/emscripten/pull/10935 + # + # Since setting EM_CACHE in the environment effects the entire machine + # we want to avoid this except when installing these older emscripten + # versions that really need it. + version = parse_emscripten_version(emroot) + if version < [1, 39, 16]: + em_cache_dir = os.path.join(emroot, 'cache') + env_vars_to_add += [('EM_CACHE', em_cache_dir)] + if version < [1, 39, 13]: + env_vars_to_add += [('EM_CONFIG', os.path.normpath(EM_CONFIG_PATH))] + + return env_vars_to_add + + +def construct_env(tools_to_activate, system, user): + info('Setting up EMSDK environment (suppress these messages with EMSDK_QUIET=1)') + return construct_env_with_vars(get_env_vars_to_add(tools_to_activate, system, user)) + + +def unset_env(key): + if POWERSHELL: + return 'Remove-Item env:%s\n' % key + if CMD: + return 'set %s=\n' % key + if CSH: + return 'unsetenv %s;\n' % key + if FISH: + return 'set -e %s;\n' % key + if BASH: + return 'unset %s;\n' % key + assert False + + +def construct_env_with_vars(env_vars_to_add): + env_string = '' + if env_vars_to_add: + info('Setting environment variables:') + + for key, value in env_vars_to_add: + # Don't set env vars which are already set to the correct value. + if key in os.environ and to_unix_path(os.environ[key]) == to_unix_path(value): + continue + info(key + ' = ' + value) + if POWERSHELL: + env_string += '$env:' + key + '="' + value + '"\n' + elif CMD: + env_string += 'SET ' + key + '=' + value + '\n' + elif CSH: + env_string += 'setenv ' + key + ' "' + value + '";\n' + elif FISH: + env_string += 'set -gx ' + key + ' "' + value + '";\n' + elif BASH: + env_string += 'export ' + key + '="' + value + '";\n' + else: + assert False + + if 'EMSDK_PYTHON' in env_vars_to_add: + # When using our bundled python we never want the user's + # PYTHONHOME or PYTHONPATH + # See https://github.com/emscripten-core/emsdk/issues/598 + env_string += unset_env('PYTHONHOME') + env_string += unset_env('PYTHONPATH') + + # Remove any environment variables that might have been set by old or + # inactive tools/sdks. For example, we set EM_CACHE for older versions + # of the SDK but we want to remove that from the current environment + # if no such tool is active. + # Ignore certain keys that are inputs to emsdk itself. + ignore_keys = set(['EMSDK_POWERSHELL', 'EMSDK_CSH', 'EMSDK_CMD', 'EMSDK_BASH', 'EMSDK_FISH', + 'EMSDK_NUM_CORES', 'EMSDK_NOTTY', 'EMSDK_KEEP_DOWNLOADS']) + env_keys_to_add = set(pair[0] for pair in env_vars_to_add) + for key in os.environ: + if key.startswith('EMSDK_') or key in ('EM_CACHE', 'EM_CONFIG'): + if key not in env_keys_to_add and key not in ignore_keys: + info('Clearing existing environment variable: %s' % key) + env_string += unset_env(key) + + return env_string + + +def error_on_missing_tool(name): + if name.endswith('-64bit') and not is_os_64bit(): + exit_with_error("'%s' is only provided for 64-bit OSes" % name) + else: + exit_with_error("tool or SDK not found: '%s'" % name) + + +def expand_sdk_name(name, activating): + if 'upstream-master' in name: + errlog('upstream-master SDK has been renamed main') + name = name.replace('upstream-master', 'main') + if 'fastcomp' in name: + exit_with_error('the fastcomp backend is no longer supported. Please use an older version of emsdk (for example 3.1.29) if you want to install the old fastcomp-based SDK') + if name in ('tot', 'sdk-tot', 'tot-upstream'): + if activating: + # When we are activating a tot release, assume that the currently + # installed SDK, if any, is the tot release we want to activate. + # Without this `install tot && activate tot` will race with the builders + # that are producing new builds. + installed = get_installed_sdk_version() + if installed: + debug_print('activating currently installed SDK; not updating tot version') + return 'sdk-releases-%s-64bit' % installed + return find_tot_sdk() + + if '-upstream' in name: + name = name.replace('-upstream', '') + + name = resolve_sdk_aliases(name, verbose=True) + + # check if it's a release handled by an emscripten-releases version, + # and if so use that by using the right hash. we support a few notations, + # x.y.z + # sdk-x.y.z-64bit + # TODO: support short notation for old builds too? + fullname = name + version = fullname.replace('sdk-', '').replace('releases-', '').replace('-64bit', '').replace('tag-', '') + sdk = 'sdk-' if not name.startswith('releases-') else '' + releases_info = load_releases_info()['releases'] + release_hash = get_release_hash(version, releases_info) + if release_hash: + # Known release hash + full_name = '%sreleases-%s-64bit' % (sdk, release_hash) + print("Resolving SDK version '%s' to '%s'" % (version, full_name)) + return full_name + + if len(version) == 40: + global extra_release_tag + extra_release_tag = version + return '%sreleases-%s-64bit' % (sdk, version) + + return name + + +def main(args): + if not args: + errlog("Missing command; Type 'emsdk help' to get a list of commands.") + return 1 + + debug_print('emsdk.py running under `%s`' % sys.executable) + cmd = args.pop(0) + + if cmd in ('help', '--help', '-h'): + print(' emsdk: Available commands:') + + print(''' + emsdk list [--old] [--uses] - Lists all available SDKs and tools and their + current installation status. With the --old + parameter, also historical versions are + shown. If --uses is passed, displays the + composition of different SDK packages and + dependencies. + + emsdk update - Updates emsdk to the newest version. If you have + bootstrapped emsdk via cloning directly from + GitHub, call "git pull" instead to update emsdk. + + emsdk install [options] ... + - Downloads and installs given tools or SDKs. + Options can contain: + + -j: Specifies the number of cores to use when + building the tool. Default: use one less + than the # of detected cores. + + --build=: Controls what kind of build of LLVM to + perform. Pass either 'Debug', 'Release', + 'MinSizeRel' or 'RelWithDebInfo'. Default: + 'Release'. + + --generator=: Specifies the CMake Generator to be used + during the build. Possible values are the + same as what your CMake supports and whether + the generator is valid depends on the tools + you have installed. Defaults to 'Unix Makefiles' + on *nix systems. If generator name is multiple + words, enclose with single or double quotes. + + --shallow: When installing tools from one of the git + development branches, this parameter can be + passed to perform a shallow git clone instead + of a full one. This reduces the amount of + network transfer that is needed. This option + should only be used when you are interested in + downloading one of the development branches, + but are not looking to develop Emscripten + yourself. Default: disabled, i.e. do a full + clone. + + --build-tests: If enabled, LLVM is built with internal tests + included. Pass this to enable running test + other.test_llvm_lit in the Emscripten test + suite. Default: disabled. + --enable-assertions: If specified, LLVM is built with assert() + checks enabled. Useful for development + purposes. Default: Enabled + --disable-assertions: Forces assertions off during the build. + + --vs2019/--vs2022: If building from source, overrides to build + using the specified compiler. When installing + precompiled packages, this has no effect. + Note: The same compiler specifier must be + passed to the emsdk activate command to + activate the desired version. + + Notes on building from source: + + To pass custom CMake directives when configuring + LLVM build, specify the environment variable + LLVM_CMAKE_ARGS="param1=value1,param2=value2" + in the environment where the build is invoked. + See README.md for details. + + --override-repository: Specifies the git URL to use for a given Tool. E.g. + --override-repository emscripten-main@https://github.com//emscripten/tree/ + + + emsdk uninstall - Removes the given tool or SDK from disk.''') + + if WINDOWS: + print(''' + emsdk activate [--permanent] [--system] [--build=type] [--vs2019/--vs2022] + + - Activates the given tool or SDK in the + environment of the current shell. + + - If the `--permanent` option is passed, then the environment + variables are set permanently for the current user. + + - If the `--system` option is passed, the registration + is done for all users of the system. + This needs admin privileges + (uses Machine environment variables). + + - If a custom compiler version was used to override + the compiler to use, pass the same --vs2019/--vs2022 + parameter here to choose which version to activate. + + emcmdprompt.bat - Spawns a new command prompt window with the + Emscripten environment active.''') + else: + print(''' emsdk activate [--build=type] + + - Activates the given tool or SDK in the + environment of the current shell.''') + + print(''' + Both commands 'install' and 'activate' accept an optional parameter + '--build=type', which can be used to override what kind of installation + or activation to perform. Possible values for type are Debug, Release, + MinSizeRel or RelWithDebInfo. Note: When overriding a custom build type, + be sure to match the same --build= option to both 'install' and + 'activate' commands and the invocation of 'emsdk_env', or otherwise + these commands will default to operating on the default build type + which is RelWithDebInfo.''') + + print(''' + + Environment: + EMSDK_KEEP_DOWNLOADS=1 - if you want to keep the downloaded archives. + EMSDK_NOTTY=1 - override isatty() result (mainly to log progress). + EMSDK_NUM_CORES=n - limit parallelism to n cores. + EMSDK_VERBOSE=1 - very verbose output, useful for debugging.''') + return 0 + + # Extracts a boolean command line argument from args and returns True if it was present + def extract_bool_arg(name): + if name in args: + args.remove(name) + return True + return False + + def extract_string_arg(name): + for i in range(len(args)): + if args[i] == name: + value = args[i + 1] + del args[i:i + 2] + return value + + arg_old = extract_bool_arg('--old') + arg_uses = extract_bool_arg('--uses') + arg_permanent = extract_bool_arg('--permanent') + arg_global = extract_bool_arg('--global') + arg_system = extract_bool_arg('--system') + if arg_global: + print('--global is deprecated. Use `--system` to set the environment variables for all users') + arg_system = True + if arg_system: + arg_permanent = True + if extract_bool_arg('--embedded'): + errlog('embedded mode is now the only mode available') + if extract_bool_arg('--no-embedded'): + errlog('embedded mode is now the only mode available') + return 1 + + arg_notty = extract_bool_arg('--notty') + if arg_notty: + global TTY_OUTPUT + TTY_OUTPUT = False + + # Replace meta-packages with the real package names. + if cmd in ('update', 'install', 'activate'): + activating = cmd == 'activate' + args = [expand_sdk_name(a, activating=activating) for a in args] + + load_em_config() + load_sdk_manifest() + + # Apply any overrides to git branch names to clone from. + forked_url = extract_string_arg('--override-repository') + while forked_url: + tool_name, url_and_refspec = forked_url.split('@') + t = find_tool(tool_name) + if not t: + errlog('Failed to find tool ' + tool_name + '!') + return False + else: + t.url, t.git_branch = parse_github_url_and_refspec(url_and_refspec) + debug_print('Reading git repository URL "' + t.url + '" and git branch "' + t.git_branch + '" for Tool "' + tool_name + '".') + + forked_url = extract_string_arg('--override-repository') + + # Process global args + for i in range(len(args)): + if args[i].startswith('--generator='): + build_generator = re.match(r'''^--generator=['"]?([^'"]+)['"]?$''', args[i]) + if build_generator: + global CMAKE_GENERATOR + CMAKE_GENERATOR = build_generator.group(1) + args[i] = '' + else: + errlog("Cannot parse CMake generator string: " + args[i] + ". Try wrapping generator string with quotes") + return 1 + elif args[i].startswith('--build='): + build_type = re.match(r'^--build=(.+)$', args[i]) + if build_type: + global CMAKE_BUILD_TYPE_OVERRIDE + build_type = build_type.group(1) + build_types = ['Debug', 'MinSizeRel', 'RelWithDebInfo', 'Release'] + try: + build_type_index = [x.lower() for x in build_types].index(build_type.lower()) + CMAKE_BUILD_TYPE_OVERRIDE = build_types[build_type_index] + args[i] = '' + except Exception: + errlog('Unknown CMake build type "' + build_type + '" specified! Please specify one of ' + str(build_types)) + return 1 + else: + errlog("Invalid command line parameter " + args[i] + ' specified!') + return 1 + args = [x for x in args if x] + + if cmd == 'list': + print('') + + def installed_sdk_text(name): + sdk = find_sdk(name) + return 'INSTALLED' if sdk and sdk.is_installed() else '' + + if (LINUX or MACOS or WINDOWS) and (ARCH == 'x86' or ARCH == 'x86_64'): + print('The *recommended* precompiled SDK download is %s (%s).' % (find_latest_version(), find_latest_hash())) + print() + print('To install/activate it use:') + print(' latest') + print('') + print('This is equivalent to installing/activating:') + print(' %s %s' % (find_latest_version(), installed_sdk_text(find_latest_sdk()))) + print('') + else: + print('Warning: your platform does not have precompiled SDKs available.') + print('You may install components from source.') + print('') + + print('All recent (non-legacy) installable versions are:') + releases_versions = sorted(load_releases_versions(), key=version_key, reverse=True) + releases_info = load_releases_info()['releases'] + for ver in releases_versions: + print(' %s %s' % (ver, installed_sdk_text('sdk-releases-%s-64bit' % get_release_hash(ver, releases_info)))) + print() + + # Use array to work around the lack of being able to mutate from enclosing + # function. + has_partially_active_tools = [False] + + if sdks: + def find_sdks(needs_compilation): + s = [] + for sdk in sdks: + if sdk.is_old and not arg_old: + continue + if sdk.needs_compilation() == needs_compilation: + s += [sdk] + return s + + def print_sdks(s): + for sdk in s: + installed = '\tINSTALLED' if sdk.is_installed() else '' + active = '*' if sdk.is_active() else ' ' + print(' ' + active + ' {0: <25}'.format(str(sdk)) + installed) + if arg_uses: + for dep in sdk.uses: + print(' - {0: <25}'.format(dep)) + print('') + print('The additional following precompiled SDKs are also available for download:') + print_sdks(find_sdks(False)) + + print('The following SDKs can be compiled from source:') + print_sdks(find_sdks(True)) + + if tools: + def find_tools(needs_compilation): + t = [] + for tool in tools: + if tool.is_old and not arg_old: + continue + if tool.needs_compilation() != needs_compilation: + continue + t += [tool] + return t + + def print_tools(t): + for tool in t: + if tool.is_old and not arg_old: + continue + if tool.can_be_installed() is True: + installed = '\tINSTALLED' if tool.is_installed() else '' + else: + installed = '\tNot available: ' + tool.can_be_installed() + tool_is_active = tool.is_active() + tool_is_env_active = tool_is_active and tool.is_env_active() + if tool_is_env_active: + active = ' * ' + elif tool_is_active: + active = '(*)' + has_partially_active_tools[0] = has_partially_active_tools[0] or True + else: + active = ' ' + print(' ' + active + ' {0: <25}'.format(str(tool)) + installed) + print('') + + print('The following precompiled tool packages are available for download:') + print_tools(find_tools(needs_compilation=False)) + print('The following tools can be compiled from source:') + print_tools(find_tools(needs_compilation=True)) + else: + if is_emsdk_sourced_from_github(): + print("There are no tools available. Run 'git pull' to fetch the latest set of tools.") + else: + print("There are no tools available. Run 'emsdk update' to fetch the latest set of tools.") + print('') + + print('Items marked with * are activated for the current user.') + if has_partially_active_tools[0]: + env_cmd = 'emsdk_env.bat' if WINDOWS else 'source ./emsdk_env.sh' + print('Items marked with (*) are selected for use, but your current shell environment is not configured to use them. Type "' + env_cmd + '" to set up your current shell to use them' + (', or call "emsdk activate --permanent " to permanently activate them.' if WINDOWS else '.')) + if not arg_old: + print('') + print("To access the historical archived versions, type 'emsdk list --old'") + + print('') + if is_emsdk_sourced_from_github(): + print('Run "git pull" to pull in the latest list.') + else: + print('Run "./emsdk update" to pull in the latest list.') + + return 0 + elif cmd == 'construct_env': + # Clean up old temp file up front, in case of failure later before we get + # to write out the new one. + tools_to_activate = currently_active_tools() + tools_to_activate = process_tool_list(tools_to_activate) + env_string = construct_env(tools_to_activate, arg_system, arg_permanent) + if CMD or POWERSHELL: + write_set_env_script(env_string) + else: + sys.stdout.write(env_string) + return 0 + elif cmd == 'update': + update_emsdk() + if WINDOWS: + # Clean up litter after old emsdk update which may have left this temp + # file around. + rmfile(sdk_path(EMSDK_SET_ENV)) + return 0 + elif cmd == 'update-tags': + errlog('`update-tags` is not longer needed. To install the latest tot release just run `install tot`') + return 0 + elif cmd == 'activate': + if arg_permanent: + print('Registering active Emscripten environment permanently') + print('') + + tools_to_activate = currently_active_tools() + for arg in args: + tool = find_tool(arg) + if tool is None: + tool = find_sdk(arg) + if tool is None: + error_on_missing_tool(arg) + tools_to_activate += [tool] + if not tools_to_activate: + errlog('No tools/SDKs specified to activate! Usage:\n emsdk activate tool/sdk1 [tool/sdk2] [...]') + return 1 + active_tools = set_active_tools(tools_to_activate, permanently_activate=arg_permanent, system=arg_system) + if not active_tools: + errlog('No tools/SDKs found to activate! Usage:\n emsdk activate tool/sdk1 [tool/sdk2] [...]') + return 1 + if WINDOWS and not arg_permanent: + errlog('The changes made to environment variables only apply to the currently running shell instance. Use the \'emsdk_env.bat\' to re-enter this environment later, or if you\'d like to register this environment permanently, rerun this command with the option --permanent.') + return 0 + elif cmd == 'install': + global BUILD_FOR_TESTING, ENABLE_LLVM_ASSERTIONS, CPU_CORES, GIT_CLONE_SHALLOW + + # Process args + for i in range(len(args)): + if args[i].startswith('-j'): + multicore = re.match(r'^-j(\d+)$', args[i]) + if multicore: + CPU_CORES = int(multicore.group(1)) + args[i] = '' + else: + errlog("Invalid command line parameter " + args[i] + ' specified!') + return 1 + elif args[i] == '--shallow': + GIT_CLONE_SHALLOW = True + args[i] = '' + elif args[i] == '--build-tests': + BUILD_FOR_TESTING = True + args[i] = '' + elif args[i] == '--enable-assertions': + ENABLE_LLVM_ASSERTIONS = 'ON' + args[i] = '' + elif args[i] == '--disable-assertions': + ENABLE_LLVM_ASSERTIONS = 'OFF' + args[i] = '' + args = [x for x in args if x] + if not args: + errlog("Missing parameter. Type 'emsdk install ' to install a tool or an SDK. Type 'emsdk list' to obtain a list of available tools. Type 'emsdk install latest' to automatically install the newest version of the SDK.") + return 1 + + if LINUX and ARCH == 'arm64' and args != ['latest']: + errlog('WARNING: arm64-linux binaries are not available for all releases.') + errlog('See https://github.com/emscripten-core/emsdk/issues/547') + + for t in args: + tool = find_tool(t) + if tool is None: + tool = find_sdk(t) + if tool is None: + error_on_missing_tool(t) + tool.install() + return 0 + elif cmd == 'uninstall': + if not args: + errlog("Syntax error. Call 'emsdk uninstall '. Call 'emsdk list' to obtain a list of available tools.") + return 1 + tool = find_tool(args[0]) + if tool is None: + errlog("Error: Tool by name '" + args[0] + "' was not found.") + return 1 + tool.uninstall() + return 0 + + errlog("Unknown command '" + cmd + "' given! Type 'emsdk help' to get a list of commands.") + return 1 + + +if __name__ == '__main__': + try: + sys.exit(main(sys.argv[1:])) + except KeyboardInterrupt: + exit_with_error('aborted by user, exiting') + sys.exit(1) diff --git a/emsdk-cache/emsdk-main/emsdk_env.bat b/emsdk-cache/emsdk-main/emsdk_env.bat new file mode 100644 index 000000000..c793321c9 --- /dev/null +++ b/emsdk-cache/emsdk-main/emsdk_env.bat @@ -0,0 +1 @@ +@call "%~dp0emsdk" construct_env diff --git a/emsdk-cache/emsdk-main/emsdk_env.csh b/emsdk-cache/emsdk-main/emsdk_env.csh new file mode 100644 index 000000000..187d4c543 --- /dev/null +++ b/emsdk-cache/emsdk-main/emsdk_env.csh @@ -0,0 +1,30 @@ +# This script is sourced by the user and uses +# their shell. Try not to use tcshisms. + +# Do not execute this script without sourcing, +# because it won't have any effect then. +# That is, always run this script with +# +# source ./emsdk_env.csh +# +# instead of just plainly running with +# +# ./emsdk_env.csh +# +# which won't have any effect. +set SRC=($_) +if ("$SRC" == "") then + set SRC="$0" +else + set SRC="$SRC[1]" +endif +set CURDIR=`pwd` +setenv DIR `dirname "$SRC"` +unset SRC + +setenv EMSDK_CSH 1 + +eval `$DIR/emsdk construct_env` +unsetenv DIR + +unsetenv EMSDK_CSH diff --git a/emsdk-cache/emsdk-main/emsdk_env.fish b/emsdk-cache/emsdk-main/emsdk_env.fish new file mode 100644 index 000000000..fbd3a0618 --- /dev/null +++ b/emsdk-cache/emsdk-main/emsdk_env.fish @@ -0,0 +1,14 @@ +#In your Fish configuration, add this line: +#alias emsdk_setup ". /path/to/emsdk/emsdk_env.fish" +#Now, when you want to use the SDK, run this alias first to set up +#your environment. + +set -gx EMSDK_FISH 1 + +set -l script (status -f) +set -l dir (dirname $script) + +eval ($dir/emsdk construct_env) + +set -e -l script +set -e -l dir diff --git a/emsdk-cache/emsdk-main/emsdk_env.ps1 b/emsdk-cache/emsdk-main/emsdk_env.ps1 new file mode 100644 index 000000000..ab5fc4dc4 --- /dev/null +++ b/emsdk-cache/emsdk-main/emsdk_env.ps1 @@ -0,0 +1,2 @@ +$ScriptDirectory = Split-Path -parent $PSCommandPath +& "$ScriptDirectory/emsdk.ps1" construct_env diff --git a/emsdk-cache/emsdk-main/emsdk_env.sh b/emsdk-cache/emsdk-main/emsdk_env.sh new file mode 100644 index 000000000..75229e28a --- /dev/null +++ b/emsdk-cache/emsdk-main/emsdk_env.sh @@ -0,0 +1,73 @@ +# This script is sourced by the user and uses +# their shell. +# +# This script tries to find its location but +# this does not work in every shell. +# +# It is known to work in bash, zsh and ksh +# +# Do not execute this script without sourcing, +# because it won't have any effect then. +# That is, always run this script with +# +# . /path/to/emsdk_env.sh +# +# or +# +# source /path/to/emsdk_env.sh +# +# instead of just plainly running with +# +# ./emsdk_env.sh +# +# which won't have any effect. + +CURRENT_SCRIPT= +DIR="." + +# use shell specific method to get the path +# to the current file being source'd. +# +# To add a shell, add another conditional below, +# then add tests to scripts/test_source_env.sh + +if [ -n "${BASH_SOURCE-}" ]; then + CURRENT_SCRIPT="$BASH_SOURCE" +elif [ -n "${ZSH_VERSION-}" ]; then + CURRENT_SCRIPT="${(%):-%x}" +elif [ -n "${KSH_VERSION-}" ]; then + CURRENT_SCRIPT=${.sh.file} +fi + +if [ -n "${CURRENT_SCRIPT-}" ]; then + DIR=$(dirname "$CURRENT_SCRIPT") + if [ -h "$CURRENT_SCRIPT" ]; then + # Now work out actual DIR since this is part of a symlink. + # Since we can't be sure that readlink or realpath + # are available, use tools more likely to be installed. + # (This will still fail if sed is not available.) + SYMDIR=$(dirname "$(ls -l "$CURRENT_SCRIPT" | sed -n "s/.*-> //p")") + if [ -z "$SYMDIR" ]; then + SYMDIR="." + fi + FULLDIR="$DIR/$SYMDIR" + DIR=$(cd "$FULLDIR" > /dev/null 2>&1; /bin/pwd) + unset SYMDIR + unset FULLDIR + fi +fi +unset CURRENT_SCRIPT + +if [ ! -f "$DIR/emsdk.py" ]; then + echo "Error: unable to determine 'emsdk' directory. Perhaps you are using a shell or" 1>&2 + echo " environment that this script does not support." 1>&2 + echo 1>&2 + echo "A possible solution is to source this script while in the 'emsdk' directory." 1>&2 + echo 1>&2 + unset DIR + return +fi + +# Force emsdk to use bash syntax so that this works in windows + bash too +eval `EMSDK_BASH=1 "$DIR/emsdk" construct_env` +unset DIR diff --git a/emsdk-cache/emsdk-main/emsdk_manifest.json b/emsdk-cache/emsdk-main/emsdk_manifest.json new file mode 100644 index 000000000..1d05304c2 --- /dev/null +++ b/emsdk-cache/emsdk-main/emsdk_manifest.json @@ -0,0 +1,493 @@ +{ + "tools": [ + { + "id": "llvm-git", + "version": "main", + "bitness": 32, + "install_path": "llvm/git", + "git_branch": "main", + "url": "https://github.com/llvm/llvm-project.git", + "custom_install_script": "build_llvm", + "only_supports_wasm": true, + "activated_path": "%installation_dir%/%llvm_build_bin_dir%", + "activated_cfg": "LLVM_ROOT='%installation_dir%/%llvm_build_bin_dir%'", + "activated_env": "LLVM_ROOT=%installation_dir%/%llvm_build_bin_dir%;EMCC_WASM_BACKEND=1", + "cmake_build_type": "Release" + }, + { + "id": "llvm-git", + "version": "main", + "bitness": 64, + "install_path": "llvm/git", + "git_branch": "main", + "url": "https://github.com/llvm/llvm-project.git", + "custom_install_script": "build_llvm", + "only_supports_wasm": true, + "activated_path": "%installation_dir%/%llvm_build_bin_dir%", + "activated_cfg": "LLVM_ROOT='%installation_dir%/%llvm_build_bin_dir%'", + "activated_env": "LLVM_ROOT=%installation_dir%/%llvm_build_bin_dir%;EMCC_WASM_BACKEND=1", + "cmake_build_type": "Release" + }, + + { + "id": "releases", + "version": "%releases-tag%", + "bitness": 64, + "arch": "x86_64", + "linux_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/%releases-tag%/wasm-binaries.tar.xz", + "macos_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/%releases-tag%/wasm-binaries.tar.xz", + "windows_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/win/%releases-tag%/wasm-binaries.zip", + "download_prefix": "%releases-tag%-", + "install_path": "upstream", + "activated_path": "%installation_dir%/emscripten", + "activated_cfg": "LLVM_ROOT='%installation_dir%/bin';BINARYEN_ROOT='%installation_dir%';EMSCRIPTEN_ROOT='%installation_dir%/emscripten'", + "emscripten_releases_hash": "%releases-tag%" + }, + { + "id": "releases", + "version": "%releases-tag%", + "bitness": 64, + "arch": "arm64", + "macos_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/%releases-tag%/wasm-binaries-arm64.tar.xz", + "linux_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/%releases-tag%/wasm-binaries-arm64.tar.xz", + "download_prefix": "%releases-tag%-", + "install_path": "upstream", + "activated_path": "%installation_dir%/emscripten", + "activated_cfg": "LLVM_ROOT='%installation_dir%/bin';BINARYEN_ROOT='%installation_dir%';EMSCRIPTEN_ROOT='%installation_dir%/emscripten'", + "emscripten_releases_hash": "%releases-tag%" + }, + + { + "id": "node", + "version": "18.20.3", + "bitness": 32, + "arch": "x86", + "windows_url": "node-v18.20.3-win-x86.zip", + "activated_path": "%installation_dir%/bin", + "activated_path_skip": "node", + "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", + "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" + }, + { + "id": "node", + "version": "18.20.3", + "arch": "arm", + "bitness": 32, + "linux_url": "node-v18.20.3-linux-armv7l.tar.xz", + "activated_path": "%installation_dir%/bin", + "activated_path_skip": "node", + "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", + "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" + }, + { + "id": "node", + "version": "18.20.3", + "bitness": 64, + "arch": "x86_64", + "macos_url": "node-v18.20.3-darwin-x64.tar.gz", + "windows_url": "node-v18.20.3-win-x64.zip", + "linux_url": "node-v18.20.3-linux-x64.tar.xz", + "activated_path": "%installation_dir%/bin", + "activated_path_skip": "node", + "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", + "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" + }, + { + "id": "node", + "version": "18.20.3", + "arch": "arm64", + "bitness": 64, + "macos_url": "node-v18.20.3-darwin-arm64.tar.gz", + "linux_url": "node-v18.20.3-linux-arm64.tar.xz", + "activated_path": "%installation_dir%/bin", + "activated_path_skip": "node", + "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", + "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" + }, + + + { + "id": "node", + "version": "20.18.0", + "bitness": 32, + "arch": "x86", + "windows_url": "node-v20.18.0-win-x86.zip", + "activated_path": "%installation_dir%/bin", + "activated_path_skip": "node", + "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", + "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" + }, + { + "id": "node", + "version": "20.18.0", + "arch": "arm", + "bitness": 32, + "linux_url": "node-v20.18.0-linux-armv7l.tar.xz", + "activated_path": "%installation_dir%/bin", + "activated_path_skip": "node", + "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", + "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" + }, + { + "id": "node", + "version": "20.18.0", + "bitness": 64, + "arch": "x86_64", + "macos_url": "node-v20.18.0-darwin-x64.tar.gz", + "windows_url": "node-v20.18.0-win-x64.zip", + "linux_url": "node-v20.18.0-linux-x64.tar.xz", + "activated_path": "%installation_dir%/bin", + "activated_path_skip": "node", + "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", + "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" + }, + { + "id": "node", + "version": "20.18.0", + "arch": "arm64", + "bitness": 64, + "windows_url": "node-v20.18.0-win-arm64.zip", + "macos_url": "node-v20.18.0-darwin-arm64.tar.gz", + "linux_url": "node-v20.18.0-linux-arm64.tar.xz", + "activated_path": "%installation_dir%/bin", + "activated_path_skip": "node", + "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", + "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" + }, + + + { + "id": "node", + "version": "22.16.0", + "bitness": 32, + "arch": "x86", + "windows_url": "node-v22.16.0-win-x86.zip", + "activated_path": "%installation_dir%/bin", + "activated_path_skip": "node", + "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", + "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" + }, + { + "id": "node", + "version": "22.16.0", + "arch": "arm", + "bitness": 32, + "linux_url": "node-v22.16.0-linux-armv7l.tar.xz", + "activated_path": "%installation_dir%/bin", + "activated_path_skip": "node", + "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", + "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" + }, + { + "id": "node", + "version": "22.16.0", + "bitness": 64, + "arch": "x86_64", + "windows_url": "node-v22.16.0-win-x64.zip", + "macos_url": "node-v22.16.0-darwin-x64.tar.gz", + "linux_url": "node-v22.16.0-linux-x64.tar.xz", + "activated_path": "%installation_dir%/bin", + "activated_path_skip": "node", + "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", + "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" + }, + { + "id": "node", + "version": "22.16.0", + "arch": "arm64", + "bitness": 64, + "windows_url": "node-v22.16.0-win-arm64.zip", + "macos_url": "node-v22.16.0-darwin-arm64.tar.gz", + "linux_url": "node-v22.16.0-linux-arm64.tar.xz", + "activated_path": "%installation_dir%/bin", + "activated_path_skip": "node", + "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", + "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" + }, + + + { + "id": "python", + "version": "3.9.2-nuget", + "bitness": 64, + "arch": "x86_64", + "windows_url": "python-3.9.2-4-amd64+pywin32.zip", + "activated_cfg": "PYTHON='%installation_dir%/python.exe'", + "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe" + }, + { + "id": "python", + "version": "3.9.2", + "bitness": 64, + "arch": "x86_64", + "windows_url": "python-3.9.2-1-embed-amd64+pywin32.zip", + "activated_cfg": "PYTHON='%installation_dir%/python.exe'", + "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe" + }, + { + "id": "python", + "version": "3.9.2", + "bitness": 64, + "arch": "x86_64", + "macos_url": "python-3.9.2-3-macos-x86_64.tar.gz", + "activated_cfg": "PYTHON='%installation_dir%/bin/python3'", + "activated_env": "EMSDK_PYTHON=%installation_dir%/bin/python3;SSL_CERT_FILE=%installation_dir%/lib/python3.9/site-packages/certifi/cacert.pem" + }, + { + "id": "python", + "version": "3.9.2", + "bitness": 64, + "arch": "arm64", + "macos_url": "python-3.9.2-1-macos-arm64.tar.gz", + "activated_cfg": "PYTHON='%installation_dir%/bin/python3'", + "activated_env": "EMSDK_PYTHON=%installation_dir%/bin/python3;SSL_CERT_FILE=%installation_dir%/lib/python3.9/site-packages/certifi/cacert.pem" + }, + + { + "id": "python", + "version": "3.13.3", + "bitness": 64, + "arch": "x86_64", + "windows_url": "python-3.13.3-0-win-amd64.zip", + "activated_cfg": "PYTHON='%installation_dir%/python.exe'", + "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe" + }, + { + "id": "python", + "version": "3.13.3", + "bitness": 64, + "arch": "arm64", + "windows_url": "python-3.13.3-0-win-arm64.zip", + "activated_cfg": "PYTHON='%installation_dir%/python.exe'", + "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe" + }, + { + "id": "python", + "version": "3.13.3", + "bitness": 64, + "arch": "x86_64", + "macos_url": "python-3.13.3-0-macos-x86_64.tar.gz", + "activated_cfg": "PYTHON='%installation_dir%/bin/python3'", + "activated_env": "EMSDK_PYTHON=%installation_dir%/bin/python3;SSL_CERT_FILE=%installation_dir%/lib/python3.13/site-packages/certifi/cacert.pem" + }, + { + "id": "python", + "version": "3.13.3", + "bitness": 64, + "arch": "arm64", + "macos_url": "python-3.13.3-0-macos-arm64.tar.gz", + "activated_cfg": "PYTHON='%installation_dir%/bin/python3'", + "activated_env": "EMSDK_PYTHON=%installation_dir%/bin/python3;SSL_CERT_FILE=%installation_dir%/lib/python3.13/site-packages/certifi/cacert.pem" + }, + + { + "id": "emscripten", + "version": "tag-%tag%", + "bitness": 32, + "append_bitness": false, + "windows_url": "https://github.com/emscripten-core/emscripten/archive/%tag%.zip", + "unix_url": "https://github.com/emscripten-core/emscripten/archive/%tag%.tar.gz", + "download_prefix": "emscripten-e", + "activated_cfg": "EMSCRIPTEN_ROOT='%installation_dir%'", + "activated_path": "%installation_dir%", + "activated_env": "EMSCRIPTEN=%installation_dir%", + "custom_install_script": "emscripten_npm_install" + }, + { + "id": "emscripten", + "version": "tag-%tag%", + "bitness": 64, + "append_bitness": false, + "windows_url": "https://github.com/emscripten-core/emscripten/archive/%tag%.zip", + "unix_url": "https://github.com/emscripten-core/emscripten/archive/%tag%.tar.gz", + "activated_cfg": "EMSCRIPTEN_ROOT='%installation_dir%'", + "activated_path": "%installation_dir%", + "activated_env": "EMSCRIPTEN=%installation_dir%", + "custom_install_script": "emscripten_npm_install" + }, + { + "id": "emscripten", + "version": "%precompiled_tag%", + "windows_url": "https://github.com/emscripten-core/emscripten/archive/%precompiled_tag%.zip", + "unix_url": "https://github.com/emscripten-core/emscripten/archive/%precompiled_tag%.tar.gz", + "activated_cfg": "EMSCRIPTEN_ROOT='%installation_dir%'", + "activated_path": "%installation_dir%", + "activated_env": "EMSCRIPTEN=%installation_dir%" + }, + { + "id": "binaryen", + "version": "tag-%binaryen_tag%", + "bitness": 32, + "append_bitness": false, + "windows_url": "https://github.com/WebAssembly/binaryen/archive/%binaryen_tag%.zip", + "unix_url": "https://github.com/WebAssembly/binaryen/archive/%binaryen_tag%.tar.gz", + "download_prefix": "binaryen-e", + "activated_cfg": "BINARYEN_ROOT='%installation_dir%%generator_prefix%_64bit_binaryen'", + "activated_path": "%installation_dir%%generator_prefix%_64bit_binaryen/bin", + "activated_env": "BINARYEN_ROOT=%installation_dir%%generator_prefix%_64bit_binaryen", + "cmake_build_type": "Release", + "custom_install_script": "build_binaryen", + "custom_is_installed_script": "is_binaryen_installed", + "custom_uninstall_script": "uninstall_binaryen" + }, + { + "id": "binaryen", + "version": "tag-%binaryen_tag%", + "bitness": 64, + "append_bitness": false, + "windows_url": "https://github.com/WebAssembly/binaryen/archive/%binaryen_tag%.zip", + "unix_url": "https://github.com/WebAssembly/binaryen/archive/%binaryen_tag%.tar.gz", + "download_prefix": "binaryen-e", + "activated_cfg": "BINARYEN_ROOT='%installation_dir%%generator_prefix%_64bit_binaryen'", + "activated_path": "%installation_dir%%generator_prefix%_64bit_binaryen/bin", + "activated_env": "BINARYEN_ROOT=%installation_dir%%generator_prefix%_64bit_binaryen", + "cmake_build_type": "Release", + "custom_install_script": "build_binaryen", + "custom_is_installed_script": "is_binaryen_installed", + "custom_uninstall_script": "uninstall_binaryen" + }, + { + "id": "emscripten", + "version": "main", + "bitness": 32, + "append_bitness": false, + "url": "https://github.com/emscripten-core/emscripten.git", + "git_branch": "main", + "activated_cfg": "EMSCRIPTEN_ROOT='%installation_dir%'", + "activated_path": "%installation_dir%", + "activated_env": "EMSCRIPTEN=%installation_dir%", + "cmake_build_type": "Release", + "custom_install_script": "emscripten_npm_install" + }, + { + "id": "emscripten", + "version": "main", + "bitness": 64, + "append_bitness": false, + "url": "https://github.com/emscripten-core/emscripten.git", + "git_branch": "main", + "activated_cfg": "EMSCRIPTEN_ROOT='%installation_dir%'", + "activated_path": "%installation_dir%", + "activated_env": "EMSCRIPTEN=%installation_dir%", + "cmake_build_type": "Release", + "custom_install_script": "emscripten_npm_install" + }, + { + "id": "binaryen", + "version": "main", + "bitness": 32, + "append_bitness": false, + "url": "https://github.com/WebAssembly/binaryen.git", + "git_branch": "main", + "activated_cfg": "BINARYEN_ROOT='%installation_dir%%generator_prefix%_32bit_binaryen'", + "activated_path": "%installation_dir%%generator_prefix%_32bit_binaryen/bin", + "activated_env": "BINARYEN_ROOT=%installation_dir%%generator_prefix%_32bit_binaryen", + "cmake_build_type": "Release", + "custom_install_script": "build_binaryen", + "custom_is_installed_script": "is_binaryen_installed", + "custom_uninstall_script": "uninstall_binaryen" + }, + { + "id": "binaryen", + "version": "main", + "bitness": 64, + "append_bitness": false, + "url": "https://github.com/WebAssembly/binaryen.git", + "git_branch": "main", + "activated_cfg": "BINARYEN_ROOT='%installation_dir%%generator_prefix%_64bit_binaryen'", + "activated_path": "%installation_dir%%generator_prefix%_64bit_binaryen/bin", + "activated_env": "BINARYEN_ROOT=%installation_dir%%generator_prefix%_64bit_binaryen", + "cmake_build_type": "Release", + "custom_install_script": "build_binaryen", + "custom_is_installed_script": "is_binaryen_installed", + "custom_uninstall_script": "uninstall_binaryen" + }, + { + "id": "mingw", + "version": "7.1.0", + "bitness": 64, + "windows_url": "mingw_7.1.0_64bit.zip", + "activated_cfg": "MINGW_ROOT='%installation_dir%'", + "activated_path": "%installation_dir%/bin" + }, + { + "id": "ninja", + "version": "git-release", + "bitness": 64, + "url": "https://github.com/ninja-build/ninja.git", + "git_branch": "release", + "activated_cfg": "NINJA=%installation_dir%/bin", + "activated_path": "%installation_dir%/bin", + "cmake_build_type": "Release", + "custom_install_script": "build_ninja" + }, + { + "id": "ccache", + "version": "git-emscripten", + "bitness": 64, + "url": "https://github.com/juj/ccache.git", + "git_branch": "emscripten", + "activated_path": "%installation_dir%/bin", + "activated_env": "_EMCC_CCACHE=1;CCACHE_CONFIGPATH=%installation_dir%/emcc_ccache.conf", + "cmake_build_type": "Release", + "custom_install_script": "build_ccache" + } + ], + + "sdks": [ + { + "version": "main", + "bitness": 64, + "uses": ["python-3.13.3-64bit", "llvm-git-main-64bit", "node-22.16.0-64bit", "emscripten-main-64bit", "binaryen-main-64bit"], + "os": "win" + }, + { + "version": "main", + "bitness": 64, + "uses": ["python-3.13.3-64bit", "llvm-git-main-64bit", "node-22.16.0-64bit", "emscripten-main-64bit", "binaryen-main-64bit"], + "os": "macos" + }, + { + "version": "main", + "bitness": 64, + "uses": ["llvm-git-main-64bit", "node-22.16.0-64bit", "emscripten-main-64bit", "binaryen-main-64bit"], + "os": "linux" + }, + { + "version": "main", + "bitness": 32, + "uses": ["llvm-git-main-32bit", "emscripten-main-32bit", "binaryen-main-32bit"], + "os": "linux" + }, + { + "version": "releases-%releases-tag%", + "bitness": 64, + "uses": ["node-22.16.0-64bit", "releases-%releases-tag%-64bit"], + "os": "linux", + "custom_install_script": "emscripten_npm_install" + }, + { + "version": "releases-%releases-tag%", + "bitness": 64, + "uses": ["node-22.16.0-64bit", "python-3.13.3-64bit", "releases-%releases-tag%-64bit"], + "os": "macos", + "arch": "x86_64", + "custom_install_script": "emscripten_npm_install" + }, + { + "version": "releases-%releases-tag%", + "bitness": 64, + "uses": ["node-22.16.0-64bit", "python-3.13.3-64bit", "releases-%releases-tag%-64bit"], + "os": "macos", + "arch": "arm64", + "custom_install_script": "emscripten_npm_install" + }, + { + "version": "releases-%releases-tag%", + "bitness": 64, + "uses": ["node-22.16.0-64bit", "python-3.13.3-64bit", "releases-%releases-tag%-64bit"], + "os": "win", + "custom_install_script": "emscripten_npm_install" + } + ] +} diff --git a/emsdk-cache/emsdk-main/legacy-binaryen-tags.txt b/emsdk-cache/emsdk-main/legacy-binaryen-tags.txt new file mode 100644 index 000000000..06d436c1a --- /dev/null +++ b/emsdk-cache/emsdk-main/legacy-binaryen-tags.txt @@ -0,0 +1,86 @@ +1.36.2 +1.36.3 +1.36.4 +1.36.5 +1.36.6 +1.36.7 +1.36.8 +1.36.9 +1.36.10 +1.36.11 +1.36.12 +1.36.13 +1.36.14 +1.37.0 +1.37.1 +1.37.2 +1.37.3 +1.37.4 +1.37.5 +1.37.6 +1.37.7 +1.37.8 +1.37.9 +1.37.10 +1.37.11 +1.37.12 +1.37.13 +1.37.14 +1.37.15 +1.37.16 +1.37.17 +1.37.18 +1.37.19 +1.37.20 +1.37.21 +1.37.22 +1.37.23 +1.37.24 +1.37.25 +1.37.26 +1.37.27 +1.37.28 +1.37.29 +1.37.30 +1.37.31 +1.37.32 +1.37.33 +1.37.34 +1.37.35 +1.37.36 +1.37.37 +1.37.38 +1.37.39 +1.37.40 +1.38.0 +1.38.1 +1.38.2 +1.38.3 +1.38.4 +1.38.5 +1.38.6 +1.38.7 +1.38.8 +1.38.9 +1.38.10 +1.38.11 +1.38.12 +1.38.13 +1.38.14 +1.38.15 +1.38.16 +1.38.17 +1.38.18 +1.38.19 +1.38.20 +1.38.21 +1.38.22 +1.38.23 +1.38.24 +1.38.25 +1.38.26 +1.38.27 +1.38.28 +1.38.29 +1.38.30 +1.38.31 \ No newline at end of file diff --git a/emsdk-cache/emsdk-main/legacy-emscripten-tags.txt b/emsdk-cache/emsdk-main/legacy-emscripten-tags.txt new file mode 100644 index 000000000..20069291a --- /dev/null +++ b/emsdk-cache/emsdk-main/legacy-emscripten-tags.txt @@ -0,0 +1,159 @@ +1.28.2 +1.28.3 +1.29.0 +1.29.1 +1.29.2 +1.29.3 +1.29.4 +1.29.5 +1.29.6 +1.29.7 +1.29.8 +1.29.9 +1.29.10 +1.29.11 +1.29.12 +1.30.0 +1.30.1 +1.30.2 +1.30.3 +1.30.4 +1.30.5 +1.30.6 +1.31.0 +1.31.1 +1.31.2 +1.31.3 +1.32.0 +1.32.1 +1.32.2 +1.32.3 +1.32.4 +1.33.0 +1.33.1 +1.33.2 +1.34.0 +1.34.1 +1.34.2 +1.34.3 +1.34.4 +1.34.5 +1.34.6 +1.34.7 +1.34.8 +1.34.9 +1.34.10 +1.34.11 +1.34.12 +1.35.0 +1.35.1 +1.35.2 +1.35.3 +1.35.4 +1.35.5 +1.35.6 +1.35.7 +1.35.8 +1.35.9 +1.35.10 +1.35.11 +1.35.12 +1.35.13 +1.35.14 +1.35.15 +1.35.16 +1.35.17 +1.35.18 +1.35.19 +1.35.20 +1.35.21 +1.35.22 +1.35.23 +1.36.0 +1.36.1 +1.36.2 +1.36.3 +1.36.4 +1.36.5 +1.36.6 +1.36.7 +1.36.8 +1.36.9 +1.36.10 +1.36.11 +1.36.12 +1.36.13 +1.36.14 +1.37.0 +1.37.1 +1.37.2 +1.37.3 +1.37.4 +1.37.5 +1.37.6 +1.37.7 +1.37.8 +1.37.9 +1.37.10 +1.37.11 +1.37.12 +1.37.13 +1.37.14 +1.37.15 +1.37.16 +1.37.17 +1.37.18 +1.37.19 +1.37.20 +1.37.21 +1.37.22 +1.37.23 +1.37.24 +1.37.25 +1.37.26 +1.37.27 +1.37.28 +1.37.29 +1.37.30 +1.37.31 +1.37.32 +1.37.33 +1.37.34 +1.37.35 +1.37.36 +1.37.37 +1.37.38 +1.37.39 +1.37.40 +1.38.0 +1.38.1 +1.38.2 +1.38.3 +1.38.4 +1.38.5 +1.38.6 +1.38.7 +1.38.8 +1.38.9 +1.38.10 +1.38.11 +1.38.12 +1.38.13 +1.38.14 +1.38.15 +1.38.16 +1.38.17 +1.38.18 +1.38.19 +1.38.20 +1.38.21 +1.38.22 +1.38.23 +1.38.24 +1.38.25 +1.38.26 +1.38.27 +1.38.28 +1.38.29 +1.38.30 +1.38.31 \ No newline at end of file diff --git a/emsdk-cache/emsdk-main/llvm-tags-64bit.txt b/emsdk-cache/emsdk-main/llvm-tags-64bit.txt new file mode 100644 index 000000000..7920f38fd --- /dev/null +++ b/emsdk-cache/emsdk-main/llvm-tags-64bit.txt @@ -0,0 +1,75 @@ +emscripten-llvm-e1.38.9.tar.gz +emscripten-llvm-e1.38.8.tar.gz +emscripten-llvm-e1.38.7.tar.gz +emscripten-llvm-e1.38.6.tar.gz +emscripten-llvm-e1.38.5.tar.gz +emscripten-llvm-e1.38.4.tar.gz +emscripten-llvm-e1.38.31.tar.gz +emscripten-llvm-e1.38.30.tar.gz +emscripten-llvm-e1.38.3.tar.gz +emscripten-llvm-e1.38.29.tar.gz +emscripten-llvm-e1.38.28.tar.gz +emscripten-llvm-e1.38.27.tar.gz +emscripten-llvm-e1.38.26.tar.gz +emscripten-llvm-e1.38.25.tar.gz +emscripten-llvm-e1.38.24.tar.gz +emscripten-llvm-e1.38.23.tar.gz +emscripten-llvm-e1.38.22.tar.gz +emscripten-llvm-e1.38.21.tar.gz +emscripten-llvm-e1.38.20.tar.gz +emscripten-llvm-e1.38.2.tar.gz +emscripten-llvm-e1.38.19.tar.gz +emscripten-llvm-e1.38.18.tar.gz +emscripten-llvm-e1.38.17.tar.gz +emscripten-llvm-e1.38.16.tar.gz +emscripten-llvm-e1.38.15.tar.gz +emscripten-llvm-e1.38.14.tar.gz +emscripten-llvm-e1.38.13.tar.gz +emscripten-llvm-e1.38.12.tar.gz +emscripten-llvm-e1.38.11.tar.gz +emscripten-llvm-e1.38.10.tar.gz +emscripten-llvm-e1.38.1.tar.gz +emscripten-llvm-e1.38.0.tar.gz +emscripten-llvm-e1.37.9.tar.gz +emscripten-llvm-e1.37.8.tar.gz +emscripten-llvm-e1.37.7.tar.gz +emscripten-llvm-e1.37.6.tar.gz +emscripten-llvm-e1.37.5.tar.gz +emscripten-llvm-e1.37.40.tar.gz +emscripten-llvm-e1.37.4.tar.gz +emscripten-llvm-e1.37.39.tar.gz +emscripten-llvm-e1.37.38.tar.gz +emscripten-llvm-e1.37.37.tar.gz +emscripten-llvm-e1.37.36.tar.gz +emscripten-llvm-e1.37.35.tar.gz +emscripten-llvm-e1.37.34.tar.gz +emscripten-llvm-e1.37.33.tar.gz +emscripten-llvm-e1.37.32.tar.gz +emscripten-llvm-e1.37.31.tar.gz +emscripten-llvm-e1.37.30.tar.gz +emscripten-llvm-e1.37.3.tar.gz +emscripten-llvm-e1.37.29.tar.gz +emscripten-llvm-e1.37.28.tar.gz +emscripten-llvm-e1.37.27.tar.gz +emscripten-llvm-e1.37.26.tar.gz +emscripten-llvm-e1.37.25.tar.gz +emscripten-llvm-e1.37.24.tar.gz +emscripten-llvm-e1.37.23.tar.gz +emscripten-llvm-e1.37.22.tar.gz +emscripten-llvm-e1.37.21.tar.gz +emscripten-llvm-e1.37.20.tar.gz +emscripten-llvm-e1.37.2.tar.gz +emscripten-llvm-e1.37.19.tar.gz +emscripten-llvm-e1.37.18.tar.gz +emscripten-llvm-e1.37.17.tar.gz +emscripten-llvm-e1.37.16.tar.gz +emscripten-llvm-e1.37.15.tar.gz +emscripten-llvm-e1.37.14.tar.gz +emscripten-llvm-e1.37.13.tar.gz +emscripten-llvm-e1.37.12.tar.gz +emscripten-llvm-e1.37.11.tar.gz +emscripten-llvm-e1.37.10.tar.gz +emscripten-llvm-e1.37.1.tar.gz +emscripten-llvm-e1.37.0.tar.gz +emscripten-llvm-e1.36.14.tar.gz +emscripten-llvm-e1.36.13.tar.gz diff --git a/emsdk-cache/emsdk-main/scripts/create_release.py b/emsdk-cache/emsdk-main/scripts/create_release.py new file mode 100644 index 000000000..425f7d723 --- /dev/null +++ b/emsdk-cache/emsdk-main/scripts/create_release.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 + +import argparse +import json +import os +import re +import subprocess +import sys +from collections import OrderedDict + +script_dir = os.path.dirname(os.path.abspath(__file__)) +root_dir = os.path.dirname(script_dir) +sys.path.append(root_dir) + +import emsdk # noqa + + +def version_key(version_string): + parts = re.split('[.-]', version_string) + key = [[int(part) for part in parts[:3]], -len(parts), parts[3:]] + return key + + +def main(): + if subprocess.check_output(['git', 'status', '--porcelain'], cwd=root_dir).strip(): + print('tree is not clean') + sys.exit(1) + + parser = argparse.ArgumentParser() + parser.add_argument('-r', '--release-hash') + parser.add_argument('-a', '--asserts-hash') + parser.add_argument('-v', '--new-version') + parser.add_argument('--gh-action', action='store_true') + options = parser.parse_args() + + release_info = emsdk.load_releases_info() + if options.new_version: + new_version = options.new_version + else: + new_version = version_key(release_info['aliases']['latest'])[0] + new_version[-1] += 1 + new_version = '.'.join(str(part) for part in new_version) + + asserts_hash = None + if options.release_hash: + new_hash = options.release_hash + asserts_hash = options.asserts_hash + else: + new_hash = emsdk.get_emscripten_releases_tot() + + print('Creating new release: %s -> %s' % (new_version, new_hash)) + release_info['releases'][new_version] = new_hash + if asserts_hash: + asserts_name = new_version + '-asserts' + release_info['releases'][asserts_name] = asserts_hash + + releases = [(k, v) for k, v in release_info['releases'].items()] + releases.sort(key=lambda pair: version_key(pair[0])) + + release_info['releases'] = OrderedDict(reversed(releases)) + release_info['aliases']['latest'] = new_version + + with open(os.path.join(root_dir, 'emscripten-releases-tags.json'), 'w') as f: + f.write(json.dumps(release_info, indent=2)) + f.write('\n') + + subprocess.check_call( + [sys.executable, os.path.join(script_dir, 'update_bazel_workspace.py')], + cwd=root_dir) + + branch_name = 'version_' + new_version + + if options.gh_action: # For GitHub Actions workflows + with open(os.environ['GITHUB_ENV'], 'a') as f: + f.write(f'RELEASE_VERSION={new_version}') + else: # Local use + # Create a new git branch + subprocess.check_call(['git', 'checkout', '-b', branch_name, 'origin/main'], cwd=root_dir) + + # Create auto-generated changes to the new git branch + subprocess.check_call(['git', 'add', '-u', '.'], cwd=root_dir) + subprocess.check_call(['git', 'commit', '-m', new_version], cwd=root_dir) + print('New release created in branch: `%s`' % branch_name) + + # Push new branch to origin + subprocess.check_call(['git', 'push', 'origin', branch_name], cwd=root_dir) + + return 0 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/emsdk-cache/emsdk-main/scripts/get_emscripten_revision_info.py b/emsdk-cache/emsdk-main/scripts/get_emscripten_revision_info.py new file mode 100644 index 000000000..d0ad76eab --- /dev/null +++ b/emsdk-cache/emsdk-main/scripts/get_emscripten_revision_info.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 + +import json +import os +import subprocess +import sys + +EMSCRIPTEN_RELEASES_GIT = 'https://chromium.googlesource.com/emscripten-releases' +TAGFILE = 'emscripten-releases-tags.json' + + +def get_latest_hash(tagfile): + with open(tagfile) as f: + versions = json.load(f) + latest = versions['aliases']['latest'] + return versions['releases'][latest] + + +def get_latest_emscripten(tagfile): + latest = get_latest_hash(tagfile) + if not os.path.isdir('emscripten-releases'): + subprocess.run(['git', 'clone', EMSCRIPTEN_RELEASES_GIT, '--depth', + '100'], check=True) + # This will fail if the 'latest' revision is not within the most recent + # 100 commits; but that shouldn't happen because this script is intended + # to be run right after a release is added. + info = subprocess.run(['emscripten-releases/src/release-info.py', + 'emscripten-releases', latest], + stdout=subprocess.PIPE, check=True, text=True).stdout + for line in info.split('\n'): + tokens = line.split() + if len(tokens) and tokens[0] == 'emscripten': + return tokens[2] + + +if __name__ == '__main__': + emscripten_hash = get_latest_emscripten(TAGFILE) + print('Emscripten revision ' + emscripten_hash) + if 'GITHUB_ENV' in os.environ: + with open(os.environ['GITHUB_ENV'], 'a') as f: + f.write(f'EMSCRIPTEN_HASH={emscripten_hash}') + sys.exit(0) + print('Not a GitHub Action') + sys.exit(1) diff --git a/emsdk-cache/emsdk-main/scripts/get_release_info.py b/emsdk-cache/emsdk-main/scripts/get_release_info.py new file mode 100644 index 000000000..016a0aec7 --- /dev/null +++ b/emsdk-cache/emsdk-main/scripts/get_release_info.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 + +import json +import sys + + +def get_latest(tagfile): + with open(tagfile) as f: + versions = json.load(f) + print(versions['aliases']['latest']) + return 0 + + +def get_hash(tagfile, version): + with open(tagfile) as f: + versions = json.load(f) + print(versions['releases'][version]) + return 0 + + +if __name__ == '__main__': + if sys.argv[2] == 'latest': + sys.exit(get_latest(sys.argv[1])) + if sys.argv[2] == 'hash': + sys.exit(get_hash(sys.argv[1], sys.argv[3])) diff --git a/emsdk-cache/emsdk-main/scripts/update_bazel_workspace.py b/emsdk-cache/emsdk-main/scripts/update_bazel_workspace.py new file mode 100644 index 000000000..637c35511 --- /dev/null +++ b/emsdk-cache/emsdk-main/scripts/update_bazel_workspace.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python3 +# This script will update emsdk/bazel/revisions.bzl to the latest version of +# emscripten. It reads emsdk/emscripten-releases-tags.json to get the latest +# version number. Then, it downloads the prebuilts for that version and computes +# the sha256sum for the archive. It then puts all this information into the +# emsdk/bazel/revisions.bzl file. + +import hashlib +import json +import os +import re +import requests +import sys + +STORAGE_URL = 'https://storage.googleapis.com/webassembly/emscripten-releases-builds' + +EMSDK_ROOT = os.path.dirname(os.path.dirname(__file__)) +RELEASES_TAGS_FILE = EMSDK_ROOT + '/emscripten-releases-tags.json' +BAZEL_REVISIONS_FILE = EMSDK_ROOT + '/bazel/revisions.bzl' +BAZEL_MODULE_FILE = EMSDK_ROOT + '/bazel/MODULE.bazel' + + +def get_latest_info(): + with open(RELEASES_TAGS_FILE) as f: + info = json.load(f) + latest = info['aliases']['latest'] + return latest, info['releases'][latest] + + +def get_sha(platform, archive_fmt, latest_hash, arch_suffix=''): + r = requests.get(f'{STORAGE_URL}/{platform}/{latest_hash}/wasm-binaries{arch_suffix}.{archive_fmt}') + r.raise_for_status() + print(f'Fetching {r.url}') + h = hashlib.new('sha256') + for chunk in r.iter_content(chunk_size=1024): + h.update(chunk) + return h.hexdigest() + + +def revisions_item(version, latest_hash): + return f'''\ + "{version}": struct( + hash = "{latest_hash}", + sha_linux = "{get_sha('linux', 'tar.xz', latest_hash)}", + sha_linux_arm64 = "{get_sha('linux', 'tar.xz', latest_hash, '-arm64')}", + sha_mac = "{get_sha('mac', 'tar.xz', latest_hash)}", + sha_mac_arm64 = "{get_sha('mac', 'tar.xz', latest_hash, '-arm64')}", + sha_win = "{get_sha('win', 'zip', latest_hash)}", + ), +''' + + +def insert_revision(item): + with open(BAZEL_REVISIONS_FILE, 'r') as f: + lines = f.readlines() + + lines.insert(lines.index('EMSCRIPTEN_TAGS = {\n') + 1, item) + + with open(BAZEL_REVISIONS_FILE, 'w') as f: + f.write(''.join(lines)) + + +def update_module_version(version): + with open(BAZEL_MODULE_FILE, 'r') as f: + content = f.read() + + pattern = r'(module\(\s*name = "emsdk",\s*version = )"\d+.\d+.\d+",\n\)' + # Verify that the pattern exists in the input since re.sub will + # will succeed either way. + assert re.search(pattern, content) + content = re.sub(pattern, fr'\1"{version}",\n)', content) + + with open(BAZEL_MODULE_FILE, 'w') as f: + f.write(content) + + +def main(argv): + version, latest_hash = get_latest_info() + update_module_version(version) + item = revisions_item(version, latest_hash) + print('inserting item:') + print(item) + insert_revision(item) + + +if __name__ == '__main__': + sys.exit(main(sys.argv)) diff --git a/emsdk-cache/emsdk-main/scripts/update_node.py b/emsdk-cache/emsdk-main/scripts/update_node.py new file mode 100644 index 000000000..722b6ff5c --- /dev/null +++ b/emsdk-cache/emsdk-main/scripts/update_node.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 +# Copyright 2020 The Emscripten Authors. All rights reserved. +# Emscripten is available under two separate licenses, the MIT license and the +# University of Illinois/NCSA Open Source License. Both these licenses can be +# found in the LICENSE file. + +"""Updates the node binaries that we cache store at +http://storage.google.com/webassembly. + +For the windows version we also alter the directory layout to add the 'bin' +directory. +""" + +import urllib.request +import subprocess +import sys +import os +import shutil +from zip import unzip_cmd, zip_cmd + +version = '22.16.0' +base = f'https://nodejs.org/dist/v{version}/' +upload_base = 'gs://webassembly/emscripten-releases-builds/deps/' + +suffixes = [ + '-win-x86.zip', + '-win-x64.zip', + '-win-arm64.zip', + '-darwin-x64.tar.gz', + '-darwin-arm64.tar.gz', + '-linux-x64.tar.xz', + '-linux-arm64.tar.xz', + '-linux-armv7l.tar.xz', +] + +for suffix in suffixes: + filename = 'node-v%s%s' % (version, suffix) + download_url = base + filename + print('Downloading: ' + download_url) + urllib.request.urlretrieve(download_url, filename) + + if '-win-' in suffix: + subprocess.check_call(unzip_cmd() + [filename]) + dirname = os.path.splitext(os.path.basename(filename))[0] + shutil.move(dirname, 'bin') + os.mkdir(dirname) + shutil.move('bin', dirname) + os.remove(filename) + subprocess.check_call(zip_cmd() + [filename, dirname]) + shutil.rmtree(dirname) + + if '--upload' in sys.argv: + upload_url = upload_base + filename + print('Uploading: ' + upload_url) + cmd = ['gsutil', 'cp', '-n', filename, upload_url] + print(' '.join(cmd)) + subprocess.check_call(cmd) + os.remove(filename) diff --git a/emsdk-cache/emsdk-main/scripts/update_python.py b/emsdk-cache/emsdk-main/scripts/update_python.py new file mode 100644 index 000000000..98273f1e2 --- /dev/null +++ b/emsdk-cache/emsdk-main/scripts/update_python.py @@ -0,0 +1,184 @@ +#!/usr/bin/env python3 +# Copyright 2020 The Emscripten Authors. All rights reserved. +# Emscripten is available under two separate licenses, the MIT license and the +# University of Illinois/NCSA Open Source License. Both these licenses can be +# found in the LICENSE file. + +"""Updates the python binaries that we cache store at +http://storage.google.com/webassembly. + +We only supply binaries for windows and macOS, but we do it very different ways for those two OSes. +On Linux, we depend on the system version of python. + +Windows recipe: + 1. Download precompiled version of python from NuGet package manager, + either the package "python" for AMD64, or "pythonarm64" for ARM64. + 2. Set up pip and install pywin32 and psutil via pip for emrun to work. + 3. Re-zip and upload to storage.google.com + +macOS recipe: + 1. Clone cpython + 2. Use homebrew to install and configure openssl (for static linking!) + 3. Build cpython from source and use `make install` to create archive. +""" + +import glob +import multiprocessing +import os +import platform +import urllib.request +import shutil +import subprocess +import sys +from subprocess import check_call +from zip import unzip_cmd, zip_cmd + +version = '3.13.3' +major_minor_version = '.'.join(version.split('.')[:2]) # e.g. '3.9.2' -> '3.9' +# This is not part of official Python version, but a repackaging number appended by emsdk +# when a version of Python needs to be redownloaded. +revision = '0' + +PSUTIL = 'psutil==7.0.0' + +upload_base = 'gs://webassembly/emscripten-releases-builds/deps/' + + +# Detects whether current python interpreter architecture is ARM64 or AMD64 +# If running AMD64 python on an ARM64 Windows, this still intentionally returns AMD64 +def find_python_arch(): + import sysconfig + arch = sysconfig.get_platform().lower() + if 'amd64' in arch: + return 'amd64' + if 'arm64' in arch: + return 'arm64' + raise f'Unknown Python sysconfig platform "{arch}" (neither AMD64 or ARM64)' + + +def make_python_patch(): + python_arch = find_python_arch() + package_name = 'pythonarm64' if python_arch == 'arm64' else 'python' + download_url = f'https://www.nuget.org/api/v2/package/{package_name}/{version}' + filename = f'python-{version}-win-{python_arch}.zip' + out_filename = f'python-{version}-{revision}-win-{python_arch}.zip' + + if not os.path.exists(filename): + print(f'Downloading python: {download_url} to {filename}') + urllib.request.urlretrieve(download_url, filename) + + os.mkdir('python-nuget') + check_call(unzip_cmd() + [os.path.abspath(filename)], cwd='python-nuget') + os.remove(filename) + + src_dir = os.path.join('python-nuget', 'tools') + python_exe = os.path.join(src_dir, 'python.exe') + check_call([python_exe, '-m', 'ensurepip', '--upgrade']) + check_call([python_exe, '-m', 'pip', 'install', 'pywin32==310', '--no-warn-script-location']) + check_call([python_exe, '-m', 'pip', 'install', PSUTIL]) + + check_call(zip_cmd() + [os.path.join('..', '..', out_filename), '.'], cwd=src_dir) + print('Created: %s' % out_filename) + + # cleanup if everything went fine + shutil.rmtree('python-nuget') + + if '--upload' in sys.argv: + upload_url = upload_base + out_filename + print('Uploading: ' + upload_url) + cmd = ['gsutil', 'cp', '-n', out_filename, upload_url] + print(' '.join(cmd)) + check_call(cmd) + + +def build_python(): + if sys.platform.startswith('darwin'): + # Take some rather drastic steps to link openssl and liblzma statically + # and avoid linking libintl completely. + osname = 'macos' + check_call(['brew', 'install', 'openssl', 'xz', 'pkg-config']) + if platform.machine() == 'x86_64': + prefix = '/usr/local' + min_macos_version = '11.0' + elif platform.machine() == 'arm64': + prefix = '/opt/homebrew' + min_macos_version = '11.0' + + # Append '-x86_64' or '-arm64' depending on current arch. (TODO: Do + # this for Linux too, move this below?) + osname += '-' + platform.machine() + + for f in [os.path.join(prefix, 'lib', 'libintl.dylib'), + os.path.join(prefix, 'include', 'libintl.h'), + os.path.join(prefix, 'opt', 'xz', 'lib', 'liblzma.dylib'), + os.path.join(prefix, 'opt', 'openssl', 'lib', 'libssl.dylib'), + os.path.join(prefix, 'opt', 'openssl', 'lib', 'libcrypto.dylib')]: + if os.path.exists(f): + os.remove(f) + os.environ['PKG_CONFIG_PATH'] = os.path.join(prefix, 'opt', 'openssl', 'lib', 'pkgconfig') + else: + osname = 'linux' + + src_dir = 'cpython' + if os.path.exists(src_dir): + check_call(['git', 'fetch'], cwd=src_dir) + else: + check_call(['git', 'clone', 'https://github.com/python/cpython']) + check_call(['git', 'checkout', 'v' + version], cwd=src_dir) + + env = os.environ + if sys.platform.startswith('darwin'): + # Specify the min OS version we want the build to work on + min_macos_version_line = '-mmacosx-version-min=' + min_macos_version + build_flags = min_macos_version_line + ' -Werror=partial-availability' + # Build against latest SDK, but issue an error if using any API that would not work on the min OS version + env = env.copy() + env['MACOSX_DEPLOYMENT_TARGET'] = min_macos_version + configure_args = ['CFLAGS=' + build_flags, 'CXXFLAGS=' + build_flags, 'LDFLAGS=' + min_macos_version_line] + else: + configure_args = [] + check_call(['./configure'] + configure_args, cwd=src_dir, env=env) + check_call(['make', '-j', str(multiprocessing.cpu_count())], cwd=src_dir, env=env) + check_call(['make', 'install', 'DESTDIR=install'], cwd=src_dir, env=env) + + install_dir = os.path.join(src_dir, 'install') + + # Install requests module. This is needed in particular on macOS to ensure + # SSL certificates are available (certifi in installed and used by requests). + pybin = os.path.join(src_dir, 'install', 'usr', 'local', 'bin', 'python3') + pip = os.path.join(src_dir, 'install', 'usr', 'local', 'bin', 'pip3') + check_call([pybin, '-m', 'ensurepip', '--upgrade']) + check_call([pybin, pip, 'install', 'requests==2.32.3']) + + # Install psutil module. This is needed by emrun to track when browser + # process quits. + check_call([pybin, pip, 'install', PSUTIL]) + + dirname = 'python-%s-%s' % (version, revision) + if os.path.isdir(dirname): + print('Erasing old build directory ' + dirname) + shutil.rmtree(dirname) + os.rename(os.path.join(install_dir, 'usr', 'local'), dirname) + tarball = 'python-%s-%s-%s.tar.gz' % (version, revision, osname) + shutil.rmtree(os.path.join(dirname, 'lib', 'python' + major_minor_version, 'test')) + shutil.rmtree(os.path.join(dirname, 'include')) + for lib in glob.glob(os.path.join(dirname, 'lib', 'lib*.a')): + os.remove(lib) + check_call(['tar', 'zcvf', tarball, dirname]) + + print('Created: %s' % tarball) + if '--upload' in sys.argv: + print('Uploading: ' + upload_base + tarball) + check_call(['gsutil', 'cp', '-n', tarball, upload_base + tarball]) + + +def main(): + if sys.platform.startswith('win') or '--win32' in sys.argv: + make_python_patch() + else: + build_python() + return 0 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/emsdk-cache/emsdk-main/scripts/zip.py b/emsdk-cache/emsdk-main/scripts/zip.py new file mode 100644 index 000000000..1b52a81e5 --- /dev/null +++ b/emsdk-cache/emsdk-main/scripts/zip.py @@ -0,0 +1,19 @@ +import os + + +def unzip_cmd(): + # Use 7-Zip if available (https://www.7-zip.org/) + sevenzip = os.path.join(os.getenv('ProgramFiles', ''), '7-Zip', '7z.exe') + if os.path.isfile(sevenzip): + return [sevenzip, 'x'] + # Fall back to 'unzip' tool + return ['unzip', '-q'] + + +def zip_cmd(): + # Use 7-Zip if available (https://www.7-zip.org/) + sevenzip = os.path.join(os.getenv('ProgramFiles', ''), '7-Zip', '7z.exe') + if os.path.isfile(sevenzip): + return [sevenzip, 'a', '-mx9'] + # Fall back to 'zip' tool + return ['zip', '-rq'] diff --git a/emsdk-cache/emsdk-main/test/test.bat b/emsdk-cache/emsdk-main/test/test.bat new file mode 100644 index 000000000..c39bb3c19 --- /dev/null +++ b/emsdk-cache/emsdk-main/test/test.bat @@ -0,0 +1,7 @@ +:: equivalent of test.sh as windows bat file +set PATH=%PATH%;%PYTHON_BIN% +CALL emsdk install latest +CALL emsdk activate latest +CALL emsdk_env.bat +CALL python -c "import sys; print(sys.executable)" +CALL emcc.bat -v diff --git a/emsdk-cache/emsdk-main/test/test.py b/emsdk-cache/emsdk-main/test/test.py new file mode 100644 index 000000000..e835ebf26 --- /dev/null +++ b/emsdk-cache/emsdk-main/test/test.py @@ -0,0 +1,279 @@ +#!/usr/bin/env python3 +import json +import os +import platform +import shutil +import subprocess +import sys +import tempfile +import unittest + +WINDOWS = sys.platform.startswith('win') +MACOS = sys.platform == 'darwin' +MACOS_ARM64 = MACOS and platform.machine() == 'arm64' + +emconfig = os.path.abspath('.emscripten') +assert os.path.exists(emconfig) + +upstream_emcc = os.path.join('upstream', 'emscripten', 'emcc') +emsdk = './emsdk' +if WINDOWS: + upstream_emcc += '.bat' + emsdk = 'emsdk.bat' +else: + emsdk = './emsdk' + +# Utilities + + +def listify(x): + if type(x) in {list, tuple}: + return x + return [x] + + +def check_call(cmd, **args): + if type(cmd) is not list: + cmd = cmd.split() + print('running: %s' % cmd) + args['universal_newlines'] = True + subprocess.check_call(cmd, **args) + + +def checked_call_with_output(cmd, expected=None, unexpected=None, stderr=None, env=None): + cmd = cmd.split(' ') + print('running: %s' % cmd) + try: + stdout = subprocess.check_output(cmd, stderr=stderr, universal_newlines=True, env=env) + except subprocess.CalledProcessError as e: + print(e.stderr) + print(e.stdout) + raise e + + if expected: + for x in listify(expected): + assert x in stdout, 'expected output missing: ' + stdout + '\n[[[' + x + ']]]' + if unexpected: + for x in listify(unexpected): + assert x not in stdout, 'unexpected output present: ' + stdout + '\n[[[' + x + ']]]' + + +def failing_call_with_output(cmd, expected, env=None): + proc = subprocess.Popen(cmd.split(' '), stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, env=env) + stdout, stderr = proc.communicate() + if WINDOWS: + print('warning: skipping part of failing_call_with_output() due to error codes not being propagated (see #592)') + else: + assert proc.returncode, 'call must have failed: ' + str([stdout, '\n========\n', stderr]) + assert expected in stdout or expected in stderr, 'call did not have the expected output: %s: %s' % (expected, str([stdout, '\n========\n', stderr])) + + +def hack_emsdk(marker, replacement): + with open('emsdk.py') as f: + src = f.read() + assert marker in src + src = src.replace(marker, replacement) + name = '__test_emsdk' + with open(name, 'w') as f: + f.write(src) + return name + + +# Set up + +TAGS = json.loads(open('emscripten-releases-tags.json').read()) + +# Tests + + +def do_lib_building(emcc): + cache_building_messages = ['generating system library: '] + + def do_build(args, is_expected=None): + unexpected = None + expected = None + if is_expected is True: + expected = cache_building_messages + elif is_expected is False: + unexpected = cache_building_messages + checked_call_with_output(emcc + ' hello_world.c' + args, + expected=expected, + unexpected=unexpected, + stderr=subprocess.STDOUT) + + # The emsdk ships all system libraries so we don't expect to see any + # cache population unless we explicly --clear-cache. + do_build('', is_expected=False) + check_call(emcc + ' --clear-cache') + do_build(' -O2', is_expected=True) + # Do another build at -O0. In nwers SDK versions this generates + # different libs, but not in older ones so don't assert here. + do_build('') + # Now verify that libs are *not* build + do_build(' -s WASM=0', is_expected=False) + do_build(' -O2 -s WASM=0', is_expected=False) + + +def run_emsdk(cmd): + if type(cmd) is not list: + cmd = cmd.split() + check_call([emsdk] + cmd) + + +class Emsdk(unittest.TestCase): + @classmethod + def setUpClass(cls): + with open('hello_world.c', 'w') as f: + f.write('''\ +#include + +int main() { + printf("Hello, world!\\n"); + return 0; +} +''') + + def setUp(self): + run_emsdk('install latest') + run_emsdk('activate latest') + + def test_unknown_arch(self): + env = os.environ.copy() + env['EMSDK_ARCH'] = 'mips' + failing_call_with_output(emsdk + ' install latest', + expected='unknown machine architecture: mips', + env=env) + + def test_wrong_bitness(self): + env = os.environ.copy() + env['EMSDK_ARCH'] = 'x86' + failing_call_with_output(emsdk + ' install sdk-latest-64bit', + expected='is only provided for 64-bit OSe', + env=env) + + def test_already_installed(self): + # Test we don't re-download unnecessarily + checked_call_with_output(emsdk + ' install latest', expected='already installed', unexpected='Downloading:') + + def test_list(self): + # Test we report installed tools properly. The latest version should be + # installed, but not some random old one. + checked_call_with_output(emsdk + ' list', expected=TAGS['aliases']['latest'] + ' INSTALLED', unexpected='1.39.15 INSTALLED:') + + def test_config_contents(self): + print('test .emscripten contents') + with open(emconfig) as f: + config = f.read() + assert 'upstream' in config + + def test_lib_building(self): + print('building proper system libraries') + do_lib_building(upstream_emcc) + + def test_redownload(self): + print('go back to using upstream') + run_emsdk('activate latest') + + # Test the normal tools like node don't re-download on re-install + print('another install must re-download') + checked_call_with_output(emsdk + ' uninstall node-22.16.0-64bit') + checked_call_with_output(emsdk + ' install node-22.16.0-64bit', expected='Downloading:', unexpected='already installed') + checked_call_with_output(emsdk + ' install node-22.16.0-64bit', unexpected='Downloading:', expected='already installed') + + def test_tot_upstream(self): + print('test update-tags') + run_emsdk('update-tags') + print('test tot-upstream') + run_emsdk('install tot-upstream') + with open(emconfig) as f: + config = f.read() + run_emsdk('activate tot-upstream') + with open(emconfig + '.old') as f: + old_config = f.read() + self.assertEqual(config, old_config) + # TODO; test on latest as well + check_call(upstream_emcc + ' hello_world.c') + + def test_closure(self): + # Specifically test with `--closure` so we know that node_modules is working + check_call(upstream_emcc + ' hello_world.c --closure=1') + + def test_specific_version(self): + if MACOS_ARM64: + self.skipTest('Old sdk versions do not have ARM64 binaries') + print('test specific release (new, short name)') + run_emsdk('install 1.38.33') + print('another install, but no need for re-download') + checked_call_with_output(emsdk + ' install 1.38.33', expected='Skipped', unexpected='Downloading:') + run_emsdk('activate 1.38.33') + + def test_specific_version_full(self): + if MACOS_ARM64: + self.skipTest('Old sdk versions do not have ARM64 binaries') + print('test specific release (new, full name)') + run_emsdk('install sdk-1.38.33-64bit') + run_emsdk('activate sdk-1.38.33-64bit') + print('test specific release (new, tag name)') + run_emsdk('install sdk-tag-1.38.33-64bit') + run_emsdk('activate sdk-tag-1.38.33-64bit') + + def test_binaryen_from_source(self): + if MACOS: + self.skipTest("https://github.com/WebAssembly/binaryen/issues/4299") + print('test binaryen source build') + run_emsdk(['install', '--build=Release', '--generator=Unix Makefiles', 'binaryen-main-64bit']) + + def test_no_32bit(self): + print('test 32-bit error') + emsdk_hacked = hack_emsdk('not is_os_64bit()', 'True') + failing_call_with_output('%s %s install latest' % (sys.executable, emsdk_hacked), + 'this tool is only provided for 64-bit OSes') + os.remove(emsdk_hacked) + + def test_update_no_git(self): + print('test non-git update') + + temp_dir = tempfile.mkdtemp() + for filename in os.listdir('.'): + if not filename.startswith('.') and not os.path.isdir(filename): + shutil.copy2(filename, os.path.join(temp_dir, filename)) + + olddir = os.getcwd() + try: + os.chdir(temp_dir) + run_emsdk('update') + + print('second time') + run_emsdk('update') + finally: + os.chdir(olddir) + + def test_install_arbitrary(self): + # Test that its possible to install arbrary emscripten-releases SDKs + run_emsdk('install 1b7f7bc6002a3ca73647f41fc10e1fac7f06f804') + + # Check that its not re-downloaded + checked_call_with_output(emsdk + ' install 1b7f7bc6002a3ca73647f41fc10e1fac7f06f804', expected='Skipped', unexpected='Downloading:') + + def test_install_tool(self): + # Test that its possible to install emscripten as tool instead of SDK + checked_call_with_output(emsdk + ' install releases-77b065ace39e6ab21446e13f92897f956c80476a', unexpected='Installing SDK') + + def test_activate_missing(self): + run_emsdk('install latest') + failing_call_with_output(emsdk + ' activate 2.0.1', expected="error: tool is not installed and therefore cannot be activated: 'releases-13e29bd55185e3c12802bc090b4507901856b2ba-64bit'") + + def test_keep_downloads(self): + env = os.environ.copy() + env['EMSDK_KEEP_DOWNLOADS'] = '1' + # With EMSDK_KEEP_DOWNLOADS the downloading should happen on the first + # install of 2.0.28, and again when we install 2.0.29, but not on the + # second install of 2.0.28 because the zip should already be local. + shutil.rmtree('downloads') + checked_call_with_output(emsdk + ' install 3.1.54', expected='Downloading:', env=env) + checked_call_with_output(emsdk + ' install 3.1.55', expected='Downloading:', env=env) + checked_call_with_output(emsdk + ' install 3.1.54', expected='already downloaded, skipping', unexpected='Downloading:', env=env) + + +if __name__ == '__main__': + unittest.main(verbosity=2) diff --git a/emsdk-cache/emsdk-main/test/test.sh b/emsdk-cache/emsdk-main/test/test.sh new file mode 100644 index 000000000..5033fd961 --- /dev/null +++ b/emsdk-cache/emsdk-main/test/test.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +echo "test the standard workflow (as close as possible to how a user would do it, in the shell)" +echo "machine: $(uname -m)" +echo "kernel: $(uname -s)" + +set -x +set -e + +# Test that arbitrary (non-released) versions can be installed and +# activated. +# This test cannot run on linux-arm64 because only certain binaries +# get uploaded for this architecture. +if [[ !($(uname -s) == "Linux" && $(uname -m) == "aarch64") ]]; then + ./emsdk install sdk-upstream-1b7f7bc6002a3ca73647f41fc10e1fac7f06f804 + ./emsdk activate sdk-upstream-1b7f7bc6002a3ca73647f41fc10e1fac7f06f804 + source ./emsdk_env.sh + which emcc + emcc -v +fi + +# Install an older version of the SDK that requires EM_CACHE to be +# set in the environment, so that we can test it is later removed +# This test only runs on x64 because we didn't build arm binaries +# when this older version of the SDK was built. +if [[ $(uname -m) == "x86_64" ]]; then + ./emsdk install sdk-1.39.15 + ./emsdk activate sdk-1.39.15 + source ./emsdk_env.sh + which emcc + emcc -v + test -n "$EM_CACHE" +fi + +# Install the latest version of the SDK which is the expected precondition +# of test.py. +./emsdk install latest +./emsdk activate latest +source ./emsdk_env.sh --build=Release +# Test that EM_CACHE was unset +test -z "$EM_CACHE" + +# On mac and windows python3 should be in the path and point to the +# bundled version. +which python3 +which emcc +emcc -v diff --git a/emsdk-cache/emsdk-main/test/test_activation.ps1 b/emsdk-cache/emsdk-main/test/test_activation.ps1 new file mode 100644 index 000000000..31a2c8eb8 --- /dev/null +++ b/emsdk-cache/emsdk-main/test/test_activation.ps1 @@ -0,0 +1,88 @@ +# This test installs emsdk and activates the latest toolchain using `--system` or `--permanent` flags, +# and checks if the environment variables and PATH are correctly updated. Set $env:SYSTEM_FLAG and $env:PERMANENT_FLAG to test each. +# If no flag is provided the process/shell values are tested. See the CI file for an example. + +refreshenv + +$repo_root = [System.IO.Path]::GetDirectoryName((resolve-path "$PSScriptRoot")) + +$PATH_USER_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "User") +$PATH_MACHINE_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "Machine") +$PATH_Process_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "Process") + + +try { + + & "$repo_root/emsdk.ps1" install latest + + & "$repo_root/emsdk.ps1" activate latest $env:PERMANENT_FLAG $env:SYSTEM_FLAG + + if ($env:SYSTEM_FLAG) { + $env_type = "Machine" + } + elseif ($env:PERMANENT_FLAG) { + $env_type = "User" + } else { + $env_type = "Process" + } + + $EMSDK = [System.Environment]::GetEnvironmentVariable("EMSDK", $env_type) + $EMSDK_NODE = [System.Environment]::GetEnvironmentVariable("EMSDK_NODE", $env_type) + $EMSDK_PYTHON = [System.Environment]::GetEnvironmentVariable("EMSDK_PYTHON", $env_type) + $PATH = [System.Environment]::GetEnvironmentVariable("PATH", $env_type) + + if (!$EMSDK) { + throw "EMSDK is not set for the user" + } + if (!$EMSDK_NODE) { + throw "EMSDK_NODE is not set for the user" + } + if (!$EMSDK_PYTHON) { + throw "EMSDK_PYTHON is not set for the user" + } + + + $path_split = $PATH.Split(';') + + $EMSDK_Path = $path_split | Where-Object { $_ -like "$repo_root*" } + if (!$EMSDK_Path) { + throw "No path is added!" + } + + $EMSDK_UPSTREAM_Path = $path_split | Where-Object { $_ -like "$repo_root\upstream\emscripten*" } + if (!$EMSDK_UPSTREAM_Path) { + throw "$repo_root\\upstream\emscripten is not added to path." + } + + +} +finally { + # Recover pre-split PATH + refreshenv + + [Environment]::SetEnvironmentVariable("Path", $PATH_USER_BEFORE, "User") + try { + [Environment]::SetEnvironmentVariable("Path", $PATH_MACHINE_BEFORE, "Machine") + } + catch {} + + [Environment]::SetEnvironmentVariable("Path", $PATH_Process_BEFORE, "Process") + + # Recover pre activation env variables + [Environment]::SetEnvironmentVariable("EMSDK", $null, "User") + [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "User") + [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "User") + + try { + [Environment]::SetEnvironmentVariable("EMSDK", $null, "Machine") + [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "Machine") + [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "Machine") + } catch {} + + + [Environment]::SetEnvironmentVariable("EMSDK", $null, "Process") + [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "Process") + [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "Process") + + refreshenv +} diff --git a/emsdk-cache/emsdk-main/test/test_bazel.ps1 b/emsdk-cache/emsdk-main/test/test_bazel.ps1 new file mode 100644 index 000000000..5c20a1525 --- /dev/null +++ b/emsdk-cache/emsdk-main/test/test_bazel.ps1 @@ -0,0 +1,30 @@ +$ErrorActionPreference = 'Stop' + +Set-Location bazel + +bazel build //hello-world:hello-world-wasm +if (-not $?) { Exit $LastExitCode } + +bazel build //hello-world:hello-world-wasm-simd +if (-not $?) { Exit $LastExitCode } + +Set-Location test_external + +bazel build //:hello-world-wasm +if (-not $?) { Exit $LastExitCode } + +bazel build //long_command_line:long_command_line_wasm +if (-not $?) { Exit $LastExitCode } + +bazel build //:hello-embind-wasm --compilation_mode dbg # debug +if (-not $?) { Exit $LastExitCode } + +# Test use of the closure compiler +bazel build //:hello-embind-wasm --compilation_mode opt # release +if (-not $?) { Exit $LastExitCode } + +Set-Location ..\test_secondary_lto_cache + +bazel build //:hello-world-wasm +if (-not $?) { Exit $LastExitCode } + diff --git a/emsdk-cache/emsdk-main/test/test_bazel.sh b/emsdk-cache/emsdk-main/test/test_bazel.sh new file mode 100644 index 000000000..682866fd5 --- /dev/null +++ b/emsdk-cache/emsdk-main/test/test_bazel.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +echo "test bazel" + +set -x +set -e + +# Get the latest version number from emscripten-releases-tag.json. +VER=$(scripts/get_release_info.py emscripten-releases-tags.json latest) + +# Based on the latest version number, get the commit hash for that version. +HASH=$(scripts/get_release_info.py emscripten-releases-tags.json hash ${VER}) + +FAILMSG="!!! scripts/update_bazel_workspace.py needs to be run !!!" + +# Ensure the WORKSPACE file is up to date with the latest version. +grep ${VER} bazel/revisions.bzl || (echo ${FAILMSG} && false) +grep ${HASH} bazel/revisions.bzl || (echo ${FAILMSG} && false) +grep ${VER} bazel/MODULE.bazel || (echo ${FAILMSG} && false) + +cd bazel +bazel build //hello-world:hello-world-wasm +bazel build //hello-world:hello-world-wasm-simd + +cd test_external +bazel build //:hello-world-wasm +bazel build //long_command_line:long_command_line_wasm +bazel build //:hello-embind-wasm --compilation_mode dbg # debug + +# Test use of the closure compiler +bazel build //:hello-embind-wasm --compilation_mode opt # release +# This function should not be minified if the externs file is loaded correctly. +grep "customJSFunctionToTestClosure" bazel-bin/hello-embind-wasm/hello-embind.js + +cd ../test_secondary_lto_cache +bazel build //:hello-world-wasm diff --git a/emsdk-cache/emsdk-main/test/test_bazel_mac.sh b/emsdk-cache/emsdk-main/test/test_bazel_mac.sh new file mode 100644 index 000000000..e27c657da --- /dev/null +++ b/emsdk-cache/emsdk-main/test/test_bazel_mac.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +echo "test bazel" + +set -x +set -e + +# Get the latest version number from emscripten-releases-tag.json. +VER=$(scripts/get_release_info.py emscripten-releases-tags.json latest) + +# Based on the latest version number, get the commit hash for that version. +HASH=$(scripts/get_release_info.py emscripten-releases-tags.json hash ${VER}) + +FAILMSG="!!! scripts/update_bazel_workspace.py needs to be run !!!" + +# Ensure the WORKSPACE file is up to date with the latest version. +grep ${VER} bazel/revisions.bzl || (echo ${FAILMSG} && false) +grep ${HASH} bazel/revisions.bzl || (echo ${FAILMSG} && false) +grep ${VER} bazel/MODULE.bazel || (echo ${FAILMSG} && false) + +cd bazel +bazel build //hello-world:hello-world-wasm +bazel build //hello-world:hello-world-wasm-simd + +cd test_external +bazel build //long_command_line:long_command_line_wasm +bazel build //:hello-world-wasm + +cd ../test_secondary_lto_cache +bazel build //:hello-world-wasm + diff --git a/emsdk-cache/emsdk-main/test/test_node_path.sh b/emsdk-cache/emsdk-main/test/test_node_path.sh new file mode 100644 index 000000000..582152b4b --- /dev/null +++ b/emsdk-cache/emsdk-main/test/test_node_path.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +echo "Test that node is added to that PATH if, and only if, it is not one already present". + +if [ -n "$EMSDK" ]; then + echo "EMSDK is already defined in this shell. Run tests in a shell without sourcing emsdk_env.sh first" + exit 1 +fi + +DIR=$(dirname "$BASH_SOURCE") +cd $DIR/.. + +./emsdk install latest +./emsdk activate latest + +if which node; then + echo "Test should be run without node in the path" + exit 1 +fi + +# Run emsdk_env.sh and confirm that node was added to the PATH +. emsdk_env.sh + +if ! which node; then + echo "node not found in path after emsdk_env.sh" + exit 1 +fi + +# Run emsdk_env.sh again and confirm that node is still in the PATH +. emsdk_env.sh + +if ! which node; then + echo "node not found in path after emsdk_env.sh" + exit 1 +fi diff --git a/emsdk-cache/emsdk-main/test/test_path_preservation.ps1 b/emsdk-cache/emsdk-main/test/test_path_preservation.ps1 new file mode 100644 index 000000000..0391b63a3 --- /dev/null +++ b/emsdk-cache/emsdk-main/test/test_path_preservation.ps1 @@ -0,0 +1,142 @@ +# This test installs emsdk and activates the latest toolchain using `--system` or `--permanent` flags, +# and checks if parts of PATH are lost or overwritten. Set $env:SYSTEM_FLAG and $env:PERMANENT_FLAG to test each. +# If no flag is provided the process/shell values are tested. See the CI file for an example. + +refreshenv + +$repo_root = [System.IO.Path]::GetDirectoryName((resolve-path "$PSScriptRoot")) + +$PATH_USER_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "User") +$PATH_MACHINE_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "Machine") +$PATH_Process_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "Process") + +try { + + + & "$repo_root/emsdk.ps1" install latest + + $esc = '--%' + & "$repo_root/emsdk.ps1" activate latest $esc $env:PERMANENT_FLAG $env:SYSTEM_FLAG + + $PATH_USER = [System.Environment]::GetEnvironmentVariable("PATH", "User") + $PATH_MACHINE = [System.Environment]::GetEnvironmentVariable("PATH", "Machine") + $PATH_Process = [System.Environment]::GetEnvironmentVariable("PATH", "Process") + + if ($env:SYSTEM_FLAG) { + echo "--system test............................." + $path_before_arr = $PATH_MACHINE_BEFORE.Split(';') + $path_arr = $PATH_MACHINE.Split(';') + } + elseif ($env:PERMANENT_FLAG) { + echo "--permanent test.........................." + $path_before_arr = $PATH_USER_BEFORE.Split(';') + $path_arr = $PATH_USER.Split(';') + } else { + echo "no flag test (shell/process).............." + $path_before_arr = $PATH_Process_BEFORE.Split(';') + $path_arr = $PATH_Process.Split(';') + } + + + $EMSDK_Path = $path_arr | Where-Object { $_ -like "$repo_root*" } + $EMSDK_NODE_Path = $path_arr | Where-Object { $_ -like "$repo_root\node*" } + $EMSDK_PYTHON_Path = $path_arr | Where-Object { $_ -like "$repo_root\python*" } + $EMSDK_JAVA_Path = $path_arr | Where-Object { $_ -like "$repo_root\java*" } + $EMSDK_UPSTREAM_Path = $path_arr | Where-Object { $_ -like "$repo_root\upstream\emscripten*" } + + $number_of_items = $path_arr.count + [System.Collections.ArrayList]$rest_of_path = @() + Foreach ($item in $path_arr) { + if ( + ($item -like "$repo_root*") -or + ($item -like "$repo_root\node*") -or + ($item -like "$repo_root\python*") -or + ($item -like "$repo_root\java*") -or + ($item -like "$repo_root\upstream\emscripten*") + ) { + echo "$item is on the PATH" + } + else { + $rest_of_path.add($item) | Out-Null + } + } + + # compare the PATHs before activation and after activation + if (Compare-Object -ReferenceObject $path_before_arr -DifferenceObject $rest_of_path ) { + echo "Old path is ............................." + echo $path_before_arr + echo "Current rest of path is ................." + echo $rest_of_path + throw "some parts of PATH are removed" + } + + # Compare the other untouched PATH + if ($env:SYSTEM_FLAG) { + if (Compare-Object -ReferenceObject $PATH_USER_BEFORE.Split(';') -DifferenceObject $PATH_USER.Split(';') ) { + echo "Old user path is ...................." + echo $PATH_USER_BEFORE + echo "Current user path is ................" + echo $PATH_USER + throw "User PATH are changed while --system had been provided" + } + } + elseif ($env:PERMANENT_FLAG) { + if (Compare-Object -ReferenceObject $PATH_MACHINE_BEFORE.Split(';') -DifferenceObject $PATH_MACHINE.Split(';') ) { + echo "Old machine path is.................." + echo $PATH_MACHINE_BEFORE + echo "Current machine path is.............." + echo $PATH_MACHINE + throw "MACHINE PATH are changed while --system was not provided" + } + } else { + if ( + (Compare-Object -ReferenceObject $PATH_MACHINE_BEFORE.Split(';') -DifferenceObject $PATH_MACHINE.Split(';')) -or + (Compare-Object -ReferenceObject $PATH_MACHINE_BEFORE.Split(';') -DifferenceObject $PATH_MACHINE.Split(';')) + ) { + echo "Old machine path is.................." + echo $PATH_MACHINE_BEFORE + echo "Current machine path is.............." + echo $PATH_MACHINE + echo "Old user path is ...................." + echo $PATH_USER_BEFORE + echo "Current user path is ................" + echo $PATH_USER + throw "MACHINE/USER PATH are changed while no flag was provided" + } + } + + + + +} +finally { + # Recover pre-split PATH + refreshenv + + [Environment]::SetEnvironmentVariable("Path", $PATH_USER_BEFORE, "User") + try { + [Environment]::SetEnvironmentVariable("Path", $PATH_MACHINE_BEFORE, "Machine") + } + catch {} + + [Environment]::SetEnvironmentVariable("Path", $PATH_Process_BEFORE, "Process") + + # Recover pre activation env variables + [Environment]::SetEnvironmentVariable("EMSDK", $null, "User") + [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "User") + [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "User") + + try { + [Environment]::SetEnvironmentVariable("EMSDK", $null, "Machine") + [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "Machine") + [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "Machine") + } catch {} + + + [Environment]::SetEnvironmentVariable("EMSDK", $null, "Process") + [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "Process") + [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "Process") + + refreshenv + +} diff --git a/emsdk-cache/emsdk-main/test/test_source_env.sh b/emsdk-cache/emsdk-main/test/test_source_env.sh new file mode 100644 index 000000000..71a3e4070 --- /dev/null +++ b/emsdk-cache/emsdk-main/test/test_source_env.sh @@ -0,0 +1,132 @@ +#!/usr/bin/env bash + +echo "Test ability to source emsdk_env.sh in different shells" + +if [ -n "$EMSDK" ]; then + echo "EMSDK is already defined in this shell. Run tests in a shell without sourcing emsdk_env.sh first" + exit 1 +fi + +DIR=$(dirname "$BASH_SOURCE") + +# setup a symlink relative to the current dir +REL_LINK_DIR="$DIR/tmp" +if [ -d "$REL_LINK_DIR" ]; then + rm -rf "$REL_LINK_DIR" +fi +echo "Creating links in $REL_LINK_DIR" +mkdir -p "$REL_LINK_DIR" +(cd $DIR/.. && ln -s `pwd` "$REL_LINK_DIR/emsdk") +(cd $DIR/.. && ln -s `pwd`/emsdk_env.sh "$REL_LINK_DIR") + +# setup a symlink in an absolute directory +ABS_LINK_DIR="/tmp/emsdk_env_test" +if [ -d "$ABS_LINK_DIR" ]; then + rm -rf "$ABS_LINK_DIR" +fi +echo "Creating links in $ABS_LINK_DIR" +mkdir -p "$ABS_LINK_DIR" +(cd $DIR/.. && ln -s `pwd` "$ABS_LINK_DIR/emsdk") +(cd $DIR/.. && ln -s `pwd`/emsdk_env.sh "$ABS_LINK_DIR") + +PATH1="$DIR/../emsdk_env.sh" +PATH2="$REL_LINK_DIR/emsdk/emsdk_env.sh" +PATH3="$REL_LINK_DIR/emsdk_env.sh" +PATH4="$ABS_LINK_DIR/emsdk/emsdk_env.sh" +PATH5="$ABS_LINK_DIR/emsdk_env.sh" + +assert_emcc() { + current=$1 + cmd=$2 + value=$3 + if [ -z "$value" ] || [ "$value" == "false" ]; then + echo "FAILED: $current" + echo " unable to get EMSDK in $current using '$cmd'" + else + echo "SUCCESS: $current testing $cmd" + echo " -> EMSDK = $value" + fi +} + +test_bash() { + value=$(bash --rcfile <(echo $1)) + assert_emcc bash "$1" "$value" +} + +test_zsh() { + value=$(zsh -d -c "$1") + assert_emcc zsh "$1" "$value" +} + +test_ksh() { + value=$(ksh -c "$1") + assert_emcc ksh "$1" "$value" +} + +it_tests_direct_path() { + TEST_SCRIPT=". ${PATH1}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' + test_bash "$TEST_SCRIPT" + test_zsh "$TEST_SCRIPT" + test_ksh "$TEST_SCRIPT" + TEST_SCRIPT="source ${PATH1}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' + test_bash "$TEST_SCRIPT" + test_zsh "$TEST_SCRIPT" + test_ksh "$TEST_SCRIPT" +} + +it_tests_via_relative_dir_symlink() { + TEST_SCRIPT=". ${PATH2}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' + test_bash "$TEST_SCRIPT" + test_zsh "$TEST_SCRIPT" + test_ksh "$TEST_SCRIPT" + TEST_SCRIPT="source ${PATH2}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' + test_bash "$TEST_SCRIPT" + test_zsh "$TEST_SCRIPT" + test_ksh "$TEST_SCRIPT" +} + +it_tests_via_relative_file_symlink() { + TEST_SCRIPT=". ${PATH3}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' + test_bash "$TEST_SCRIPT" + test_zsh "$TEST_SCRIPT" + test_ksh "$TEST_SCRIPT" + TEST_SCRIPT="source ${PATH3}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' + test_bash "$TEST_SCRIPT" + test_zsh "$TEST_SCRIPT" + test_ksh "$TEST_SCRIPT" +} + +it_tests_via_absolute_dir_symlink() { + TEST_SCRIPT=". ${PATH4}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' + test_bash "$TEST_SCRIPT" + test_zsh "$TEST_SCRIPT" + test_ksh "$TEST_SCRIPT" + TEST_SCRIPT="source ${PATH4}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' + test_bash "$TEST_SCRIPT" + test_zsh "$TEST_SCRIPT" + test_ksh "$TEST_SCRIPT" +} + +it_tests_via_absolute_file_symlink() { + TEST_SCRIPT=". ${PATH5}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' + test_bash "$TEST_SCRIPT" + test_zsh "$TEST_SCRIPT" + test_ksh "$TEST_SCRIPT" + TEST_SCRIPT="source ${PATH5}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' + test_bash "$TEST_SCRIPT" + test_zsh "$TEST_SCRIPT" + test_ksh "$TEST_SCRIPT" +} + +run_bash_tests() { + it_tests_direct_path + it_tests_via_relative_dir_symlink + it_tests_via_relative_file_symlink + it_tests_via_absolute_dir_symlink + it_tests_via_absolute_file_symlink +} + +run_bash_tests + +rm -rf $REL_LINK_DIR +rm -rf $ABS_LINK_DIR diff --git a/raylib.com b/raylib.com new file mode 160000 index 000000000..2649354ff --- /dev/null +++ b/raylib.com @@ -0,0 +1 @@ +Subproject commit 2649354ff12dc2b67dccbb4a8aa3c5c61214eb39 From df1244688ee8c5af14353c62a6720b7c04bdf20f Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 11:17:59 +0200 Subject: [PATCH 251/328] Revert "Update examples collection" This reverts commit 87d3066428664d8a4983585296d0303862155dff. --- emsdk-cache/emsdk-main/.circleci/config.yml | 354 -- emsdk-cache/emsdk-main/.dockerignore | 21 - emsdk-cache/emsdk-main/.flake8 | 24 - emsdk-cache/emsdk-main/.github/stale.yml | 18 - .../.github/workflows/create-release.yml | 40 - .../.github/workflows/tag-release.yml | 78 - emsdk-cache/emsdk-main/.gitignore | 35 - emsdk-cache/emsdk-main/LICENSE | 27 - emsdk-cache/emsdk-main/README.md | 245 -- emsdk-cache/emsdk-main/SECURITY.md | 16 - emsdk-cache/emsdk-main/bazel/.bazelrc | 1 - emsdk-cache/emsdk-main/bazel/.gitignore | 1 - emsdk-cache/emsdk-main/bazel/MODULE.bazel | 79 - .../emsdk-main/bazel/MODULE.bazel.lock | 3696 ---------------- emsdk-cache/emsdk-main/bazel/README.md | 90 - emsdk-cache/emsdk-main/bazel/bazelrc | 2 - .../bazel/emscripten_build_file.bzl | 93 - .../emsdk-main/bazel/emscripten_cache.bzl | 113 - .../emsdk-main/bazel/emscripten_deps.bzl | 99 - .../bazel/emscripten_toolchain/BUILD.bazel | 43 - .../bazel/emscripten_toolchain/default_config | 16 - .../bazel/emscripten_toolchain/emar.bat | 5 - .../bazel/emscripten_toolchain/emar.sh | 5 - .../bazel/emscripten_toolchain/emcc.bat | 5 - .../bazel/emscripten_toolchain/emcc.sh | 5 - .../bazel/emscripten_toolchain/emcc_link.bat | 5 - .../bazel/emscripten_toolchain/emcc_link.sh | 5 - .../bazel/emscripten_toolchain/env.bat | 6 - .../bazel/emscripten_toolchain/env.sh | 5 - .../emscripten_toolchain/link_wrapper.py | 167 - .../bazel/emscripten_toolchain/toolchain.bzl | 1158 ----- .../bazel/emscripten_toolchain/wasm_binary.py | 56 - .../emscripten_toolchain/wasm_cc_binary.bzl | 231 - .../bazel/emscripten_toolchain/wasm_rules.bzl | 6 - .../bazel/hello-world/hello-world-simd.cc | 10 - .../bazel/hello-world/hello-world.cc | 6 - .../bazel/remote_emscripten_repository.bzl | 148 - emsdk-cache/emsdk-main/bazel/revisions.bzl | 805 ---- .../emsdk-main/bazel/test_external/.bazelrc | 1 - .../emsdk-main/bazel/test_external/.gitignore | 4 - .../bazel/test_external/MODULE.bazel | 6 - .../bazel/test_external/MODULE.bazel.lock | 3696 ---------------- .../test_external/hello-embind-externs.js | 2 - .../test_external/hello-embind-interface.js | 3 - .../bazel/test_external/hello-embind.cc | 16 - .../bazel/test_external/hello-world.cc | 6 - .../long_command_line/BUILD.bazel | 61 - .../include/long_command_line_file01.hh | 3 - .../include/long_command_line_file02.hh | 3 - .../include/long_command_line_file03.hh | 3 - .../include/long_command_line_file04.hh | 3 - .../include/long_command_line_file05.hh | 3 - .../include/long_command_line_file06.hh | 3 - .../include/long_command_line_file07.hh | 3 - .../include/long_command_line_file08.hh | 3 - .../include/long_command_line_file09.hh | 3 - .../include/long_command_line_file10.hh | 3 - .../include/long_command_line_file11.hh | 3 - .../include/long_command_line_file12.hh | 3 - .../include/long_command_line_file13.hh | 3 - .../include/long_command_line_file14.hh | 3 - .../include/long_command_line_file15.hh | 3 - .../include/long_command_line_file16.hh | 3 - .../include/long_command_line_file17.hh | 3 - .../include/long_command_line_file18.hh | 3 - .../include/long_command_line_file19.hh | 3 - .../include/long_command_line_file20.hh | 3 - .../long_command_line/long_command_line.cc | 43 - .../long_command_line_file01.cc | 5 - .../long_command_line_file02.cc | 5 - .../long_command_line_file03.cc | 5 - .../long_command_line_file04.cc | 5 - .../long_command_line_file05.cc | 5 - .../long_command_line_file06.cc | 5 - .../long_command_line_file07.cc | 5 - .../long_command_line_file08.cc | 5 - .../long_command_line_file09.cc | 5 - .../long_command_line_file10.cc | 5 - .../long_command_line_file11.cc | 5 - .../long_command_line_file12.cc | 5 - .../long_command_line_file13.cc | 5 - .../long_command_line_file14.cc | 5 - .../long_command_line_file15.cc | 5 - .../long_command_line_file16.cc | 5 - .../long_command_line_file17.cc | 5 - .../long_command_line_file18.cc | 5 - .../long_command_line_file19.cc | 5 - .../long_command_line_file20.cc | 5 - .../bazel/test_secondary_lto_cache/.bazelrc | 1 - .../bazel/test_secondary_lto_cache/.gitignore | 4 - .../test_secondary_lto_cache/MODULE.bazel | 26 - .../MODULE.bazel.lock | 3710 ----------------- .../test_secondary_lto_cache/hello-world.cc | 6 - emsdk-cache/emsdk-main/docker/Dockerfile | 131 - emsdk-cache/emsdk-main/docker/Makefile | 31 - emsdk-cache/emsdk-main/docker/README.md | 125 - emsdk-cache/emsdk-main/docker/entrypoint.sh | 7 - .../emsdk-main/docker/test_dockerimage.sh | 29 - emsdk-cache/emsdk-main/emcmdprompt.bat | 1 - .../emsdk-main/emscripten-releases-tags.json | 279 -- emsdk-cache/emsdk-main/emsdk.bat | 46 - emsdk-cache/emsdk-main/emsdk.ps1 | 36 - emsdk-cache/emsdk-main/emsdk.py | 3083 -------------- emsdk-cache/emsdk-main/emsdk_env.bat | 1 - emsdk-cache/emsdk-main/emsdk_env.csh | 30 - emsdk-cache/emsdk-main/emsdk_env.fish | 14 - emsdk-cache/emsdk-main/emsdk_env.ps1 | 2 - emsdk-cache/emsdk-main/emsdk_env.sh | 73 - emsdk-cache/emsdk-main/emsdk_manifest.json | 493 --- .../emsdk-main/legacy-binaryen-tags.txt | 86 - .../emsdk-main/legacy-emscripten-tags.txt | 159 - emsdk-cache/emsdk-main/llvm-tags-64bit.txt | 75 - .../emsdk-main/scripts/create_release.py | 92 - .../scripts/get_emscripten_revision_info.py | 44 - .../emsdk-main/scripts/get_release_info.py | 25 - .../scripts/update_bazel_workspace.py | 87 - emsdk-cache/emsdk-main/scripts/update_node.py | 58 - .../emsdk-main/scripts/update_python.py | 184 - emsdk-cache/emsdk-main/scripts/zip.py | 19 - emsdk-cache/emsdk-main/test/test.bat | 7 - emsdk-cache/emsdk-main/test/test.py | 279 -- emsdk-cache/emsdk-main/test/test.sh | 47 - .../emsdk-main/test/test_activation.ps1 | 88 - emsdk-cache/emsdk-main/test/test_bazel.ps1 | 30 - emsdk-cache/emsdk-main/test/test_bazel.sh | 36 - emsdk-cache/emsdk-main/test/test_bazel_mac.sh | 31 - emsdk-cache/emsdk-main/test/test_node_path.sh | 35 - .../test/test_path_preservation.ps1 | 142 - .../emsdk-main/test/test_source_env.sh | 132 - raylib.com | 1 - 130 files changed, 21502 deletions(-) delete mode 100644 emsdk-cache/emsdk-main/.circleci/config.yml delete mode 100644 emsdk-cache/emsdk-main/.dockerignore delete mode 100644 emsdk-cache/emsdk-main/.flake8 delete mode 100644 emsdk-cache/emsdk-main/.github/stale.yml delete mode 100644 emsdk-cache/emsdk-main/.github/workflows/create-release.yml delete mode 100644 emsdk-cache/emsdk-main/.github/workflows/tag-release.yml delete mode 100644 emsdk-cache/emsdk-main/.gitignore delete mode 100644 emsdk-cache/emsdk-main/LICENSE delete mode 100644 emsdk-cache/emsdk-main/README.md delete mode 100644 emsdk-cache/emsdk-main/SECURITY.md delete mode 100644 emsdk-cache/emsdk-main/bazel/.bazelrc delete mode 100644 emsdk-cache/emsdk-main/bazel/.gitignore delete mode 100644 emsdk-cache/emsdk-main/bazel/MODULE.bazel delete mode 100644 emsdk-cache/emsdk-main/bazel/MODULE.bazel.lock delete mode 100644 emsdk-cache/emsdk-main/bazel/README.md delete mode 100644 emsdk-cache/emsdk-main/bazel/bazelrc delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_build_file.bzl delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_cache.bzl delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_deps.bzl delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/BUILD.bazel delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/default_config delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emar.bat delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emar.sh delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc.bat delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc.sh delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc_link.bat delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc_link.sh delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/env.bat delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/env.sh delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/link_wrapper.py delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/toolchain.bzl delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_binary.py delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_cc_binary.bzl delete mode 100644 emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_rules.bzl delete mode 100644 emsdk-cache/emsdk-main/bazel/hello-world/hello-world-simd.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/hello-world/hello-world.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/remote_emscripten_repository.bzl delete mode 100644 emsdk-cache/emsdk-main/bazel/revisions.bzl delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/.bazelrc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/.gitignore delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/MODULE.bazel delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/MODULE.bazel.lock delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/hello-embind-externs.js delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/hello-embind-interface.js delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/hello-embind.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/hello-world.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/BUILD.bazel delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file01.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file02.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file03.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file04.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file05.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file06.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file07.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file08.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file09.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file10.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file11.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file12.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file13.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file14.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file15.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file16.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file17.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file18.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file19.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file20.hh delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file01.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file02.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file03.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file04.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file05.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file06.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file07.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file08.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file09.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file10.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file11.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file12.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file13.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file14.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file15.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file16.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file17.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file18.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file19.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file20.cc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/.bazelrc delete mode 100644 emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/.gitignore delete mode 100644 emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/MODULE.bazel delete mode 100644 emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/MODULE.bazel.lock delete mode 100644 emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/hello-world.cc delete mode 100644 emsdk-cache/emsdk-main/docker/Dockerfile delete mode 100644 emsdk-cache/emsdk-main/docker/Makefile delete mode 100644 emsdk-cache/emsdk-main/docker/README.md delete mode 100644 emsdk-cache/emsdk-main/docker/entrypoint.sh delete mode 100644 emsdk-cache/emsdk-main/docker/test_dockerimage.sh delete mode 100644 emsdk-cache/emsdk-main/emcmdprompt.bat delete mode 100644 emsdk-cache/emsdk-main/emscripten-releases-tags.json delete mode 100644 emsdk-cache/emsdk-main/emsdk.bat delete mode 100644 emsdk-cache/emsdk-main/emsdk.ps1 delete mode 100644 emsdk-cache/emsdk-main/emsdk.py delete mode 100644 emsdk-cache/emsdk-main/emsdk_env.bat delete mode 100644 emsdk-cache/emsdk-main/emsdk_env.csh delete mode 100644 emsdk-cache/emsdk-main/emsdk_env.fish delete mode 100644 emsdk-cache/emsdk-main/emsdk_env.ps1 delete mode 100644 emsdk-cache/emsdk-main/emsdk_env.sh delete mode 100644 emsdk-cache/emsdk-main/emsdk_manifest.json delete mode 100644 emsdk-cache/emsdk-main/legacy-binaryen-tags.txt delete mode 100644 emsdk-cache/emsdk-main/legacy-emscripten-tags.txt delete mode 100644 emsdk-cache/emsdk-main/llvm-tags-64bit.txt delete mode 100644 emsdk-cache/emsdk-main/scripts/create_release.py delete mode 100644 emsdk-cache/emsdk-main/scripts/get_emscripten_revision_info.py delete mode 100644 emsdk-cache/emsdk-main/scripts/get_release_info.py delete mode 100644 emsdk-cache/emsdk-main/scripts/update_bazel_workspace.py delete mode 100644 emsdk-cache/emsdk-main/scripts/update_node.py delete mode 100644 emsdk-cache/emsdk-main/scripts/update_python.py delete mode 100644 emsdk-cache/emsdk-main/scripts/zip.py delete mode 100644 emsdk-cache/emsdk-main/test/test.bat delete mode 100644 emsdk-cache/emsdk-main/test/test.py delete mode 100644 emsdk-cache/emsdk-main/test/test.sh delete mode 100644 emsdk-cache/emsdk-main/test/test_activation.ps1 delete mode 100644 emsdk-cache/emsdk-main/test/test_bazel.ps1 delete mode 100644 emsdk-cache/emsdk-main/test/test_bazel.sh delete mode 100644 emsdk-cache/emsdk-main/test/test_bazel_mac.sh delete mode 100644 emsdk-cache/emsdk-main/test/test_node_path.sh delete mode 100644 emsdk-cache/emsdk-main/test/test_path_preservation.ps1 delete mode 100644 emsdk-cache/emsdk-main/test/test_source_env.sh delete mode 160000 raylib.com diff --git a/emsdk-cache/emsdk-main/.circleci/config.yml b/emsdk-cache/emsdk-main/.circleci/config.yml deleted file mode 100644 index aebb7895e..000000000 --- a/emsdk-cache/emsdk-main/.circleci/config.yml +++ /dev/null @@ -1,354 +0,0 @@ -version: 2.1 - -orbs: - win: circleci/windows@5.0 - -executors: - ubuntu: - docker: - - image: buildpack-deps:focal - mac_arm64: - environment: - EMSDK_NOTTY: "1" - # Without this, any `brew install` command will result in self-update of - # brew itself which takes more than 4 minutes. - HOMEBREW_NO_AUTO_UPDATE: "1" - macos: - xcode: "13.4.1" - resource_class: macos.m1.medium.gen1 - linux_arm64: - machine: - image: ubuntu-2004:2023.07.1 - resource_class: arm.medium - -commands: - setup-macos: - steps: - - checkout - - run: - name: Install CMake - command: brew install cmake - test-macos: - steps: - - run: - name: test.sh - command: test/test.sh - - run: - name: test.py - command: | - source emsdk_env.sh - test/test.py - test-bazel-linux: - steps: - - checkout - - run: - name: install bazelisk - command: | - wget https://github.com/bazelbuild/bazelisk/releases/download/v1.25.0/bazelisk-linux-amd64 - chmod +x bazelisk-linux-amd64 - mv bazelisk-linux-amd64 /usr/local/bin/bazel - - run: test/test_bazel.sh - test-bazel-mac: - steps: - - checkout - - run: - name: install bazelisk - command: | - brew install bazelisk - - run: test/test_bazel_mac.sh - test-bazel-windows: - steps: - - checkout - - run: - name: Download Bazelisk - shell: powershell.exe - command: | - $ProgressPreference = "SilentlyContinue" - Invoke-WebRequest -Uri https://github.com/bazelbuild/bazelisk/releases/download/v1.10.1/bazelisk-windows-amd64.exe -OutFile ( New-Item -Path "temp\bazel\bazel.exe" -Force ) - - run: - name: Run Tests - shell: powershell.exe - command: | - $env:Path += ";C:\Python27amd64;$pwd\temp\bazel" - .\test\test_bazel.ps1 - -jobs: - flake8: - executor: ubuntu - steps: - - checkout - - run: - name: install pip - command: | - apt-get update -q - apt-get install -q -y python3-pip - - run: python3 -m pip install --upgrade pip - - run: python3 -m pip install flake8==7.1.1 - - run: python3 -m flake8 --show-source --statistics --extend-exclude=./scripts - - test-linux: - executor: ubuntu - environment: - EMSDK_NOTTY: "1" - # This is needed because the old gcc-7 that is installed on debian/bionic - # generates warnings about unused variables when doing C++17 - # destructuring: - # https://github.com/WebAssembly/binaryen/issues/4353 - CXXFLAGS: "-Wno-unused-variable" - # I don't know why circleci VMs pretent to have 36 cores but its a lie. - EMSDK_NUM_CORES: "4" - steps: - - checkout - - run: - name: Install debian packages - command: apt-get update -q && apt-get install -q -y cmake build-essential openjdk-8-jre-headless ksh zsh - - run: test/test_node_path.sh - - run: test/test.sh - - run: test/test_source_env.sh - - run: - name: test.py - command: | - source emsdk_env.sh - test/test.py - test-linux-arm64: - executor: linux_arm64 - steps: - - checkout - - run: - name: Install debian packages - command: sudo apt-get update -q && sudo apt-get install -q cmake build-essential openjdk-8-jre-headless - - run: test/test.sh - test-mac-arm64: - executor: mac_arm64 - steps: - - setup-macos - - test-macos - test-windows: - executor: - name: win/server-2019 - shell: bash.exe - environment: - # We need python installed before we can test anytyhing. - # There seems to be undocument copy of python installed here. Hopefully - # if this disappears there will be another way of getting a re-installed - # version. - PYTHON_BIN: "C:\\Python27amd64" - PYTHONUNBUFFERED: "1" - EMSDK_NOTTY: "1" - steps: - - checkout - - run: - name: Add python to bash path - command: echo "export PATH=\"$PATH:/c/python27amd64/\"" >> $BASH_ENV - - run: - name: Install latest - shell: cmd.exe - command: test\test.bat - - run: - name: test.py - command: | - source emsdk_env.sh - python test/test.py - - - run: - name: flagless (process/shell) test - shell: powershell.exe - command: | - test/test_activation.ps1 - - - run: - name: --permanent test - shell: powershell.exe - command: | - $env:PERMANENT_FLAG="--permanent" - test/test_activation.ps1 - - - run: - name: --system test - shell: powershell.exe - command: | - $env:SYSTEM_FLAG="--system" - test/test_activation.ps1 - - - run: - name: Process/Shell PATH preservation test - shell: powershell.exe - command: | - test/test_path_preservation.ps1 - - - run: - name: User PATH preservation test - shell: powershell.exe - command: | - $env:PERMANENT_FLAG="--permanent" - test/test_path_preservation.ps1 - - - run: - name: System PATH preservation test - shell: powershell.exe - command: | - $env:SYSTEM_FLAG="--system" - test/test_path_preservation.ps1 - - build-docker-image-x64: - executor: ubuntu - steps: - - checkout - - run: - name: install docker - command: | - apt-get update -q - apt-get install -q -y ca-certificates curl gnupg lsb-release - mkdir -p /etc/apt/keyrings - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg - echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null - apt-get update -q - apt-get install -q -y docker-ce docker-ce-cli containerd.io docker-compose-plugin - - setup_remote_docker - # Build the `latest` version of EMSDK as docker image - - run: - name: build - command: make -C ./docker version=latest build - - run: - name: test - command: make -C ./docker version=latest test - - publish-docker-image-x64: - executor: ubuntu - steps: - - checkout - - run: - name: install docker - command: | - apt-get update -q - apt-get install -q -y ca-certificates curl gnupg lsb-release - mkdir -p /etc/apt/keyrings - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg - echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null - apt-get update -q - apt-get install -q -y docker-ce docker-ce-cli containerd.io docker-compose-plugin - - setup_remote_docker - - run: - name: build - command: make -C ./docker version=${CIRCLE_TAG} build - - run: - name: test - command: make -C ./docker version=${CIRCLE_TAG} test - - run: - name: push image - command: | - docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" - make -C ./docker version=${CIRCLE_TAG} alias=latest push - - publish-docker-image-arm64: - executor: linux_arm64 - steps: - - checkout - - run: - name: build - command: make -C ./docker version=${CIRCLE_TAG} build - - run: - name: test - command: make -C ./docker version=${CIRCLE_TAG} test - - run: - name: push image - command: | - docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" - make -C ./docker version=${CIRCLE_TAG} alias=${CIRCLE_TAG}-arm64 only_alias=true push - - test-bazel7-linux: - executor: ubuntu - environment: - USE_BAZEL_VERSION: "7.x" - steps: - - test-bazel-linux - - test-bazel-latest-linux: - executor: ubuntu - steps: - - test-bazel-linux - - test-bazel7-mac-arm64: - executor: mac_arm64 - environment: - USE_BAZEL_VERSION: "7.x" - steps: - - test-bazel-mac - - test-bazel-latest-mac-arm64: - executor: mac_arm64 - steps: - - test-bazel-mac - - test-bazel7-windows: - executor: - name: win/server-2019 - shell: powershell.exe -ExecutionPolicy Bypass - environment: - PYTHONUNBUFFERED: "1" - EMSDK_NOTTY: "1" - # For some reason version resolution with "7.x" does not work on Windows, - # so we have to specify a full version. - USE_BAZEL_VERSION: "7.6.1" - steps: - - test-bazel-windows - - test-bazel-latest-windows: - executor: - name: win/server-2019 - shell: powershell.exe -ExecutionPolicy Bypass - environment: - PYTHONUNBUFFERED: "1" - EMSDK_NOTTY: "1" - steps: - - test-bazel-windows - -workflows: - flake8: - jobs: - - flake8 - test-linux: - jobs: - - test-linux - test-linux-arm64: - jobs: - - test-linux-arm64 - test-mac-arm64: - jobs: - - test-mac-arm64 - test-windows: - jobs: - - test-windows - build-docker-image: - jobs: - - build-docker-image-x64 - - publish-docker-image-x64: - filters: - branches: - ignore: /.*/ - tags: - only: /.*/ - - publish-docker-image-arm64: - filters: - branches: - ignore: /.*/ - tags: - only: /.*/ - test-bazel7-linux: - jobs: - - test-bazel7-linux - test-bazel-latest-linux: - jobs: - - test-bazel-latest-linux - test-bazel7-mac-arm64: - jobs: - - test-bazel7-mac-arm64 - test-bazel-latest-mac-arm64: - jobs: - - test-bazel-latest-mac-arm64 - test-bazel7-windows: - jobs: - - test-bazel7-windows - test-bazel-latest-windows: - jobs: - - test-bazel-latest-windows diff --git a/emsdk-cache/emsdk-main/.dockerignore b/emsdk-cache/emsdk-main/.dockerignore deleted file mode 100644 index cf12f58fd..000000000 --- a/emsdk-cache/emsdk-main/.dockerignore +++ /dev/null @@ -1,21 +0,0 @@ -# Ignore everything -* - -# Allow the entrypoint/test script inside the Docker container -!/docker/entrypoint.sh -!/docker/test_dockerimage.sh - -# Allow license file -!LICENSE - -# Allow necessary build files in top-level directory -!emscripten-releases-tags.json -!emsdk -!emsdk.py -!emsdk_env.sh -!emsdk_manifest.json - -# Allow files required to install legacy versions -!legacy-binaryen-tags.txt -!legacy-emscripten-tags.txt -!llvm-tags-64bit.txt diff --git a/emsdk-cache/emsdk-main/.flake8 b/emsdk-cache/emsdk-main/.flake8 deleted file mode 100644 index ec94dda99..000000000 --- a/emsdk-cache/emsdk-main/.flake8 +++ /dev/null @@ -1,24 +0,0 @@ -[flake8] -extend-exclude = - ./.*, - ./binaryen, - ./clang, - ./crunch, - ./downloads, - ./emscripten, - ./fastcomp-clang, - ./fastcomp, - ./git, - ./gnu, - ./llvm, - ./node, - ./python, - ./releases, - ./temp, - ./upstream, - -# E111: Indentation is not a multiple of four -# E114: Indentation is not a multiple of four (comment) -extend-ignore = E111, E114 - -max-line-length = 326 diff --git a/emsdk-cache/emsdk-main/.github/stale.yml b/emsdk-cache/emsdk-main/.github/stale.yml deleted file mode 100644 index 1807a00f7..000000000 --- a/emsdk-cache/emsdk-main/.github/stale.yml +++ /dev/null @@ -1,18 +0,0 @@ -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 365 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 30 -# Issues with these labels will never be considered stale -exemptLabels: - - pinned - - security -# Label to use when marking an issue as stale -staleLabel: wontfix -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because there has been no - activity in the past year. It will be closed automatically if no further - activity occurs in the next 30 days. Feel free to re-open at any time if this - issue is still relevant. -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: false diff --git a/emsdk-cache/emsdk-main/.github/workflows/create-release.yml b/emsdk-cache/emsdk-main/.github/workflows/create-release.yml deleted file mode 100644 index 265a3619d..000000000 --- a/emsdk-cache/emsdk-main/.github/workflows/create-release.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: Create Release PR - -on: - workflow_dispatch: - inputs: - lto-sha: - required: true - type: string - nonlto-sha: - required: true - type: string - -jobs: - create-release-pr: - runs-on: ubuntu-latest - steps: - - name: Checkout repo - uses: actions/checkout@v4 - - name: Run create_release.py - run: python3 scripts/create_release.py -r ${{ inputs.lto-sha }} -a ${{ inputs.nonlto-sha }} --gh-action - - name: Create PR - id: cpr - uses: peter-evans/create-pull-request@v6 - with: - token: ${{ secrets.EMSCRIPTEN_BOT_TOKEN }} - title: Release ${{ env.RELEASE_VERSION }} - commit-message: | - Release ${{ env.RELEASE_VERSION }} - team-reviewers: release-reviewers - labels: release - body: | - With emscripten-releases revisions: - https://chromium.googlesource.com/emscripten-releases/+/${{ inputs.lto-sha }} (LTO) - https://chromium.googlesource.com/emscripten-releases/+/${{ inputs.nonlto-sha }} (asserts) - branch: release_${{ env.RELEASE_VERSION }} - delete-branch: true - - name: Enable auto-merge - run: gh pr merge --squash --auto "${{ steps.cpr.outputs.pull-request-number }}" - env: - GH_TOKEN: ${{ secrets.EMSCRIPTEN_BOT_TOKEN }} diff --git a/emsdk-cache/emsdk-main/.github/workflows/tag-release.yml b/emsdk-cache/emsdk-main/.github/workflows/tag-release.yml deleted file mode 100644 index 1475e879d..000000000 --- a/emsdk-cache/emsdk-main/.github/workflows/tag-release.yml +++ /dev/null @@ -1,78 +0,0 @@ -# When a release commit created by create-release.yml is landed, create the -# corresponding tag. -name: Create release tag - -on: - push: - paths: - - emscripten-releases-tags.json - - .github/workflows/tag-release.yml - branches: - - main - workflow_dispatch: - -jobs: - tag-release: - # Only activate for commits created by the create-release.yml workflow. - # The assumption is that when manual changes happen, we want to handle - # tagging manually too. - name: Check for release commit and create tag - # The author is emscripten-bot when triggered from Chromium CI, and github-actions when manually triggered. - if: ${{ github.event.head_commit.author.username == 'github-actions[bot]' || github.event.head_commit.author.username == 'emscripten-bot' }} - runs-on: ubuntu-latest - outputs: - is_release: ${{ steps.create-tag.outputs.result }} - steps: - - name: Match message and create tag - id: create-tag - uses: actions/github-script@v7 - with: - github-token: ${{ secrets.EMSCRIPTEN_BOT_TOKEN }} - # A commit with the message of the form 'Release X.Y.Z' is expected - # to have been created by create_release.py and update the latest - # release in emscripten-releases-tags.json - script: | - const message = `${{ github.event.head_commit.message }}` - const regex = /Release ([0-9]+.[0-9]+.[0-9]+)/; - const match = message.match(regex); - let is_release = false; - if (match) { - const release = match[1]; - console.log(`Matched release ${release}`); - await github.rest.git.createRef({ - owner: context.repo.owner, - repo: context.repo.repo, - ref: `refs/tags/${release}`, - sha: context.sha - }); - is_release = true; - } else { - console.log(`Commit message: '${message}' did not match pattern`); - } - return is_release; - - dispatch-emscripten-tag: - name: Dispatch workflow to tag emscripten repo - runs-on: ubuntu-latest - needs: tag-release - if: ${{ needs.tag-release.outputs.is_release == 'true' }} - steps: - - name: Checkout repo - uses: actions/checkout@v4 - - name: Find emscripten revision - # get_emscripten_revision_info.py sets env.EMSCRIPTEN_HASH to the - # emscripten hash associated with the latest release in - # emscripten-releases-tags.json - run: python3 scripts/get_emscripten_revision_info.py - - name: Dispatch emscripten workflow - uses: actions/github-script@v7 - with: - github-token: ${{ secrets.EMSCRIPTEN_BOT_TOKEN }} - script: | - await github.rest.actions.createWorkflowDispatch({ - owner: context.repo.owner, - repo: 'emscripten', - workflow_id: 'tag-release.yml', - ref: 'main', - inputs: { 'release-sha': '${{ env.EMSCRIPTEN_HASH }}' } - }); diff --git a/emsdk-cache/emsdk-main/.gitignore b/emsdk-cache/emsdk-main/.gitignore deleted file mode 100644 index d181c30d5..000000000 --- a/emsdk-cache/emsdk-main/.gitignore +++ /dev/null @@ -1,35 +0,0 @@ -*.pyc -__pycache__ - -# Support for --embedded configs -/.emscripten -/.emscripten.old -/.emscripten_cache -/.emscripten_cache__last_clear -/.emscripten_sanity -/.emscripten_sanity_wasm - -# Tags files that get generated at runtime -/emscripten-releases-tot.txt - -# File that get download/extracted by emsdk itself -/ccache -/gnu -/upstream -/fastcomp -/fastcomp-clang/ -/llvm -/ninja -/releases -/clang -/emscripten -/git -/node -/python -/temp -/downloads -/crunch -/java -/mingw -/spidermonkey -/binaryen diff --git a/emsdk-cache/emsdk-main/LICENSE b/emsdk-cache/emsdk-main/LICENSE deleted file mode 100644 index 1b8cf86be..000000000 --- a/emsdk-cache/emsdk-main/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2018 Emscripten authors (see AUTHORS in Emscripten) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - ----------------------------------------------------------------------------- - -This is the MIT/Expat Licence. For more information see: - -1. http://www.opensource.org/licenses/mit-license.php - -2. http://en.wikipedia.org/wiki/MIT_License diff --git a/emsdk-cache/emsdk-main/README.md b/emsdk-cache/emsdk-main/README.md deleted file mode 100644 index 1eb318270..000000000 --- a/emsdk-cache/emsdk-main/README.md +++ /dev/null @@ -1,245 +0,0 @@ -Emscripten SDK -============== - -[![CircleCI](https://circleci.com/gh/emscripten-core/emsdk/tree/main.svg?style=svg)](https://circleci.com/gh/emscripten-core/emsdk/tree/main) - -The Emscripten toolchain is distributed as a standalone Emscripten SDK. The SDK -provides all the required tools, such as Clang, Python and Node.js along with an -update mechanism that enables migrating to newer Emscripten versions as they are -released. - -You can also set up Emscripten from source, without the pre-built SDK, see -"Installing from Source" below. - -## Downloads / How do I get the latest Emscripten build? - -To get started with Emscripten development, see the [Emscripten website -documentation](https://emscripten.org/docs/getting_started/downloads.html). - -That explains how to use the emsdk to get the latest binary builds (without -compiling from source). Basically, that amounts to - -``` -git pull -./emsdk install latest -./emsdk activate latest -``` - -## SDK Concepts - -The Emscripten SDK is effectively a small package manager for tools that are -used in conjunction with Emscripten. The following glossary highlights the -important concepts to help understanding the internals of the SDK: - -* **Tool**: The basic unit of software bundled in the SDK. A Tool has a name and - a version. For example, 'clang-3.2-32bit' is a Tool that contains the 32-bit - version of the Clang v3.2 compiler. -* **SDK**: A set of tools. For example, 'sdk-1.5.6-32bit' is an SDK consisting - of the tools `clang-3.2-32bit`, `node-0.10.17-32bit`, `python-2.7.5.1-32bit` - and `emscripten-1.5.6`. -* **Active Tool/SDK**: Emscripten SDK stores compiler configuration in a file - called `.emscripten` within the emsdk directory. This file points to paths - for Emscripten, Python, Clang and so on. If the configuration file points to a - Tool in a specific directory, then that tool is denoted as being - **active**. This mechanism allows switching between different installed - tools and SDKs. -* **emsdk**: This is the name of the manager script that Emscripten SDK is - accessed through. Most operations are of the form `emsdk `. - -## System Requirements - -Using the emsdk pre-compiled packages requires only the minimal set of -dependencies lists below. When building from source a wider set of tools -include git, cmake, and a host compiler are required. See: -https://emscripten.org/docs/building_from_source/toolchain_what_is_needed.html. - -### Mac OS X - -- For Intel-based Macs, macOS 10.13 or newer. For ARM64 M1 based Macs, macOS - 11.0 or newer. -- `java`: For running closure compiler (optional). After installing emscripten - via emsdk, typing 'emcc --help' should pop up a OS X dialog "Java is not - installed. To open java, you need a Java SE 6 runtime. Would you like to - install one now?" that will automatically download a Java runtime to the - system. - -### Linux - -- `python`: Version 3.8 or above. -- `java`: For running closure compiler (optional) - -The emsdk pre-compiled binaries are built against Ubuntu/Focal 20.04 LTS and -therefore depend on system libraries compatible with versions of `glibc` and -`libstdc++` present in that release. If your linux distribution is very old -you may not be able to use the pre-compiled binaries packages. - -### Windows - -- `java`: For running closure compiler (optional) - -## Uninstalling the Emscripten SDK - -To remove the Emscripten SDK, simply delete the emsdk directory. - -## SDK Maintenance - -The following tasks are common with the Emscripten SDK: - -### How do I work the emsdk utility? - -Run `emsdk help` or just `emsdk` to get information about all available commands. - -### How do I check the installation status and version of the SDK and tools? - -To get a list of all currently installed tools and SDK versions, and all -available tools, run `emsdk list`. -* A line will be printed for each tool/SDK that is available for installation. -* The text `INSTALLED` will be shown for each tool that has already been - installed. -* If a tool/SDK is currently active, a star * will be shown next to it. -* If a tool/SDK is currently active, but the terminal your are calling emsdk - from does not have `PATH` and environment set up to utilize that tool, a star - in parentheses (\*) will be shown next to it. Run `emsdk_env.bat` (Windows) or - `source ./emsdk_env.sh` (Linux and OS X) to set up the environment for the - calling terminal. - -### How do I install a tool/SDK version? - -Run the command `emsdk install ` to download and install a new -tool or an SDK version. - -### How do I remove a tool or an SDK? - -Run the command `emsdk uninstall ` to delete the given tool or -SDK from the local hard drive completely. - -### How do I check for updates to the Emscripten SDK? - -`emsdk update` will fetch package information for all the new tools and -SDK versions. After that, run `emsdk install ` to install a new -version. - -### How do I install an old Emscripten compiler version? - -Emsdk contains a history of old compiler versions that you can use to maintain -your migration path. Type `emsdk list --old` to get a list of archived tool and -SDK versions, and `emsdk install ` to install it. - -### I want to build from source! - -Some Emsdk Tool and SDK targets refer to packages that are precompiled, and -no compilation is needed when installing them. Other Emsdk Tools and SDK -targets come "from source", meaning that they will fetch the source repositories -using git, and compile the package on demand. - -When you run `emsdk list`, it will group the Tools and SDKs under these two -categories. - -To obtain and build latest wasm SDK from source, run - -``` -emsdk install sdk-main-64bit -emsdk activate sdk-main-64bit -``` - -You can use this target for example to bootstrap developing patches to LLVM, -Binaryen or Emscripten. (After initial installation, use `git remote add` -in the cloned tree to add your own fork to push changes as patches) - -If you only intend to contribute to Emscripten repository, and not to LLVM -or Binaryen, you can also use precompiled versions of them, and only git -clone the Emscripten repository. For more details, see - -https://emscripten.org/docs/contributing/developers_guide.html?highlight=developer#setting-up - -### When working on git branches compiled from source, how do I update to a newer compiler version? - -Unlike tags and precompiled versions, a few of the SDK packages are based on -"moving" git branches and compiled from source (e.g. sdk-main, -sdk-main, emscripten-main, binaryen-main). Because of that, the -compiled versions will eventually go out of date as new commits are introduced -to the development branches. To update an old compiled installation of one of -this branches, simply reissue the "emsdk install" command on that tool/SDK. This -will `git pull` the latest changes to the branch and issue an incremental -recompilation of the target in question. This way you can keep calling `emsdk -install` to keep an Emscripten installation up to date with a given git branch. - -Note though that if the previously compiled branch is very old, sometimes CMake -gets confused and is unable to properly rebuild a project. This has happened in -the past e.g. when LLVM migrated to requiring a newer CMake version. In cases of -any odd compilation errors, it is advised to try deleting the intermediate build -directory to clear the build (e.g. "emsdk/clang/fastcomp/build_xxx/") before -reissuing `emsdk install`. - -### How do I change the currently active SDK version? - -You can toggle between different tools and SDK versions by running `emsdk -activate `. Activating a tool will set up `~/.emscripten` to -point to that particular tool. On Windows, you can pass the option `--permanent` to -the `activate` command to register the environment permanently for the current user. Use `--system` to do this for all users. - -### How do I track the latest Emscripten development with the SDK? - -A common and supported use case of the Emscripten SDK is to enable the workflow -where you directly interact with the github repositories. This allows you to -obtain new features and latest fixes immediately as they are pushed to the -github repository, without having to wait for release to be tagged. You do not -need a github account or a fork of Emscripten to do this. To switch to using the -latest git development branch `main`, run the following: - - emsdk install git-1.9.4 # Install git. Skip if the system already has it. - emsdk install sdk-main-64bit # Clone+pull the latest emscripten-core/emscripten/main. - emsdk activate sdk-main-64bit # Set the main SDK as the currently active one. - -### How do I use my own Emscripten github fork with the SDK? - -It is also possible to use your own fork of the Emscripten repository via the -SDK. This is achieved with standard git machinery, so if you are already -acquainted with working on multiple remotes in a git clone, these steps should -be familiar to you. This is useful in the case when you want to make your own -modifications to the Emscripten toolchain, but still keep using the SDK -environment and tools. To set up your own fork as the currently active -Emscripten toolchain, first install the `sdk-main` SDK like shown in the -previous section, and then run the following commands in the emsdk directory: - - cd emscripten/main - # Add a git remote link to your own repository. - git remote add myremote https://github.com/mygituseraccount/emscripten.git - # Obtain the changes in your link. - git fetch myremote - # Switch the emscripten-main tool to use your fork. - git checkout -b mymain --track myremote/main - -In this way you can utilize the Emscripten SDK tools while using your own git -fork. You can switch back and forth between remotes via the `git checkout` -command as usual. - -### How do I use Emscripten SDK with a custom version of python, java, node.js or some other tool? - -The provided Emscripten SDK targets are metapackages that refer to a specific -set of tools that have been tested to work together. For example, -`sdk-1.35.0-64bit` is an alias to the individual packages `clang-e1.35.0-64bit`, -`node-4.1.1-64bit`, `python-2.7.5.3-64bit` and `emscripten-1.35.0`. This means -that if you install this version of the SDK, both python and node.js will be -installed inside emsdk as well. If you want to use your own/system python or -node.js instead, you can opt to install emsdk by specifying the individual set -of packages that you want to use. For example, `emsdk install -clang-e1.35.0-64bit emscripten-1.35.0` will only install the Emscripten -LLVM/Clang compiler and the Emscripten frontend without supplying python and -node.js. - -### My installation fails with "fatal error: ld terminated with signal 9 [Killed]"? - -This may happen if the system runs out of memory. If you are attempting to build -one of the packages from source and are running in a virtual OS or may have -relatively little RAM and disk space available, then the build might fail. Try -feeding your computer more memory. Another thing to try is to force emsdk -install to build in a singlethreaded mode, which will require less RAM -simultaneously. To do this, pass the `-j1` flag to the `emsdk install` command. - -### How do I run Emscripten on 32-bit systems or non-x86-64 systems? - -Emscripten SDK releases are no longer packaged or maintained for 32-bit systems. -If you want to run Emscripten on a 32-bit system, you can try manually building -the compiler. Follow the steps in the above section "Building an Emscripten tag -or branch from source" to get started. diff --git a/emsdk-cache/emsdk-main/SECURITY.md b/emsdk-cache/emsdk-main/SECURITY.md deleted file mode 100644 index 461772867..000000000 --- a/emsdk-cache/emsdk-main/SECURITY.md +++ /dev/null @@ -1,16 +0,0 @@ -# Security Policy - -If you have discovered a security vulnerability in this project, please report it -privately. **Do not disclose it as a public issue.** This gives us time to work with you -to fix the issue before public exposure, reducing the chance that the exploit will be -used before a patch is released. - -Please submit the report as a [security bug on the Chromium tracker](https://bugs.chromium.org/p/chromium/issues/entry?template=Security%20Bug). - -Please provide the following information in your report: - -- A description of the vulnerability and its impact -- How to reproduce the issue -- Make it clear that it's an Emscripten SDK bug. - -We ask that you give us 90 days to work on a fix before public exposure. diff --git a/emsdk-cache/emsdk-main/bazel/.bazelrc b/emsdk-cache/emsdk-main/bazel/.bazelrc deleted file mode 100644 index fbd75a7ea..000000000 --- a/emsdk-cache/emsdk-main/bazel/.bazelrc +++ /dev/null @@ -1 +0,0 @@ -build --incompatible_enable_cc_toolchain_resolution diff --git a/emsdk-cache/emsdk-main/bazel/.gitignore b/emsdk-cache/emsdk-main/bazel/.gitignore deleted file mode 100644 index a6ef824c1..000000000 --- a/emsdk-cache/emsdk-main/bazel/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/bazel-* diff --git a/emsdk-cache/emsdk-main/bazel/MODULE.bazel b/emsdk-cache/emsdk-main/bazel/MODULE.bazel deleted file mode 100644 index c35e86e1f..000000000 --- a/emsdk-cache/emsdk-main/bazel/MODULE.bazel +++ /dev/null @@ -1,79 +0,0 @@ -module( - name = "emsdk", - version = "4.0.13", -) - -bazel_dep(name = "platforms", version = "0.0.11") -bazel_dep(name = "bazel_skylib", version = "1.7.1") -bazel_dep(name = "aspect_rules_js", version = "1.42.0") -bazel_dep(name = "rules_nodejs", version = "6.3.2") -bazel_dep(name = "rules_cc", version = "0.1.1") -bazel_dep(name = "rules_python", version = "1.3.0") - -python = use_extension("@rules_python//python/extensions:python.bzl", "python") -python.toolchain( - python_version = "3.13", -) - -node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node") -node.toolchain(node_version = "20.18.0") -use_repo(node, "nodejs") - -emscripten_deps = use_extension( - "//:emscripten_deps.bzl", - "emscripten_deps", -) -use_repo(emscripten_deps, "emscripten_bin_linux") -use_repo(emscripten_deps, "emscripten_bin_linux_arm64") -use_repo(emscripten_deps, "emscripten_bin_mac") -use_repo(emscripten_deps, "emscripten_bin_mac_arm64") -use_repo(emscripten_deps, "emscripten_bin_win") - -npm = use_extension( - "@aspect_rules_js//npm:extensions.bzl", - "npm", -) -npm.npm_translate_lock( - name = "emscripten_npm_linux", - data = ["@emscripten_bin_linux//:emscripten/package.json"], - npm_package_lock = "@emscripten_bin_linux//:emscripten/package-lock.json", -) -npm.npm_translate_lock( - name = "emscripten_npm_linux_arm64", - data = ["@emscripten_bin_linux_arm64//:emscripten/package.json"], - npm_package_lock = "@emscripten_bin_linux_arm64//:emscripten/package-lock.json", -) -npm.npm_translate_lock( - name = "emscripten_npm_mac", - data = ["@emscripten_bin_mac//:emscripten/package.json"], - npm_package_lock = "@emscripten_bin_mac//:emscripten/package-lock.json", -) -npm.npm_translate_lock( - name = "emscripten_npm_mac_arm64", - data = ["@emscripten_bin_mac_arm64//:emscripten/package.json"], - npm_package_lock = "@emscripten_bin_mac_arm64//:emscripten/package-lock.json", -) -npm.npm_translate_lock( - name = "emscripten_npm_win", - data = ["@emscripten_bin_win//:emscripten/package.json"], - npm_package_lock = "@emscripten_bin_win//:emscripten/package-lock.json", -) -use_repo( - npm, - "emscripten_npm_linux", - "emscripten_npm_linux_arm64", - "emscripten_npm_mac", - "emscripten_npm_mac_arm64", - "emscripten_npm_win", -) - -emscripten_cache = use_extension("//:emscripten_cache.bzl", "emscripten_cache") -use_repo(emscripten_cache, "emscripten_cache") - -register_toolchains( - "//emscripten_toolchain:cc-toolchain-wasm-emscripten_linux", - "//emscripten_toolchain:cc-toolchain-wasm-emscripten_linux_arm64", - "//emscripten_toolchain:cc-toolchain-wasm-emscripten_mac", - "//emscripten_toolchain:cc-toolchain-wasm-emscripten_mac_arm64", - "//emscripten_toolchain:cc-toolchain-wasm-emscripten_win", -) diff --git a/emsdk-cache/emsdk-main/bazel/MODULE.bazel.lock b/emsdk-cache/emsdk-main/bazel/MODULE.bazel.lock deleted file mode 100644 index 69ca244b7..000000000 --- a/emsdk-cache/emsdk-main/bazel/MODULE.bazel.lock +++ /dev/null @@ -1,3696 +0,0 @@ -{ - "lockFileVersion": 18, - "registryFileHashes": { - "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", - "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", - "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", - "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", - "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", - "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/source.json": "9be551b8d4e3ef76875c0d744b5d6a504a27e3ae67bc6b28f46415fd2d2957da", - "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/MODULE.bazel": "e4529e12d8cd5b828e2b5960d07d3ec032541740d419d7d5b859cabbf5b056f9", - "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/source.json": "80cb66069ad626e0921555cd2bf278286fd7763fae2450e564e351792e8303f4", - "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/MODULE.bazel": "f19e6b4a16f77f8cf3728eac1f60dbfd8e043517fd4f4dbf17a75a6c50936d62", - "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/source.json": "abbb3eac3b6af76b8ce230a9a901c6d08d93f4f5ffd55314bf630827dddee57e", - "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", - "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", - "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", - "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", - "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", - "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", - "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", - "https://bcr.bazel.build/modules/bazel_features/1.21.0/source.json": "3e8379efaaef53ce35b7b8ba419df829315a880cb0a030e5bb45c96d6d5ecb5f", - "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", - "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", - "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", - "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", - "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", - "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", - "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", - "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", - "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", - "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", - "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", - "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953", - "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", - "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", - "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", - "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", - "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", - "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/source.json": "41e9e129f80d8c8bf103a7acc337b76e54fad1214ac0a7084bf24f4cd924b8b4", - "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", - "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", - "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", - "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", - "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", - "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", - "https://bcr.bazel.build/modules/platforms/0.0.11/source.json": "f7e188b79ebedebfe75e9e1d098b8845226c7992b307e28e1496f23112e8fc29", - "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", - "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", - "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", - "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", - "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", - "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", - "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", - "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", - "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", - "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", - "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", - "https://bcr.bazel.build/modules/protobuf/29.0/source.json": "b857f93c796750eef95f0d61ee378f3420d00ee1dd38627b27193aa482f4f981", - "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", - "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", - "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/source.json": "be4789e951dd5301282729fe3d4938995dc4c1a81c2ff150afc9f1b0504c6022", - "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", - "https://bcr.bazel.build/modules/re2/2023-09-01/source.json": "e044ce89c2883cd957a2969a43e79f7752f9656f6b20050b62f90ede21ec6eb4", - "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", - "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", - "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", - "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", - "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", - "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", - "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", - "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", - "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", - "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", - "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", - "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", - "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", - "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", - "https://bcr.bazel.build/modules/rules_cc/0.1.1/source.json": "d61627377bd7dd1da4652063e368d9366fc9a73920bfa396798ad92172cf645c", - "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", - "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", - "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", - "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", - "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", - "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", - "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", - "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", - "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", - "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", - "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", - "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", - "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", - "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", - "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", - "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", - "https://bcr.bazel.build/modules/rules_java/8.6.1/source.json": "f18d9ad3c4c54945bf422ad584fa6c5ca5b3116ff55a5b1bc77e5c1210be5960", - "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", - "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", - "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", - "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", - "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", - "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", - "https://bcr.bazel.build/modules/rules_jvm_external/6.3/source.json": "6f5f5a5a4419ae4e37c35a5bb0a6ae657ed40b7abc5a5189111b47fcebe43197", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", - "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", - "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", - "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", - "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", - "https://bcr.bazel.build/modules/rules_nodejs/5.8.2/MODULE.bazel": "6bc03c8f37f69401b888023bf511cb6ee4781433b0cb56236b2e55a21e3a026a", - "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/MODULE.bazel": "42e8d5254b6135f890fecca7c8d7f95a7d27a45f8275b276f66ec337767530ef", - "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/source.json": "80e0a68eb81772f1631f8b69014884eebc2474b3b3025fd19a5240ae4f76f9c9", - "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", - "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", - "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a", - "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", - "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", - "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", - "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", - "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", - "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", - "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", - "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", - "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", - "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", - "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", - "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", - "https://bcr.bazel.build/modules/rules_python/1.3.0/MODULE.bazel": "8361d57eafb67c09b75bf4bbe6be360e1b8f4f18118ab48037f2bd50aa2ccb13", - "https://bcr.bazel.build/modules/rules_python/1.3.0/source.json": "25932f917cd279c7baefa6cb1d3fa8750a7a29de522024449b19af6eab51f4a0", - "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", - "https://bcr.bazel.build/modules/rules_shell/0.2.0/source.json": "7f27af3c28037d9701487c4744b5448d26537cc66cdef0d8df7ae85411f8de95", - "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", - "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", - "https://bcr.bazel.build/modules/stardoc/0.5.4/MODULE.bazel": "6569966df04610b8520957cb8e97cf2e9faac2c0309657c537ab51c16c18a2a4", - "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", - "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", - "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", - "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", - "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", - "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", - "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d", - "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" - }, - "selectedYankedVersions": {}, - "moduleExtensions": { - "//:emscripten_cache.bzl%emscripten_cache": { - "general": { - "bzlTransitiveDigest": "uqDvXmpTNqW4+ie/Fk+xC3TrFrKvL+9hNtoP51Kt2oo=", - "usagesDigest": "hMVKvInxunfDgmxewLpCIKhgZsrX3FDbi457LYnniZ8=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "emscripten_cache": { - "repoRuleId": "@@//:emscripten_cache.bzl%_emscripten_cache_repository", - "attributes": { - "configuration": [], - "targets": [] - } - } - }, - "recordedRepoMappingEntries": [] - } - }, - "//:emscripten_deps.bzl%emscripten_deps": { - "general": { - "bzlTransitiveDigest": "h0wQ3PSRx/Q9n+izTifYO8L728OTd9B5YbLOWcobVYE=", - "usagesDigest": "/x8y7Sw52S7o089fbMUUat1GlyVBrfKFc31+LteokYI=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "emscripten_bin_linux": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "27fc220a9ad98d323cad73531ff563e9838c9e1205f51ee2a5632bb4266a35d2", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" - } - }, - "emscripten_bin_linux_arm64": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "2d03f8eb3f81dd94821658eefbb442a92b0b7601f4cfb08590590fd7bc467ef8", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" - } - }, - "emscripten_bin_mac": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "c06048915595726fc2e2da6a8db3134581a6287645fb818802a9734ff9785e77", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" - } - }, - "emscripten_bin_mac_arm64": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "35d743453d0f91857b09f00d721037bb46753aaeae373bd7f64746338db11770", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" - } - }, - "emscripten_bin_win": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/clang++.exe\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/llvm-ar.exe\",\n \"bin/llvm-dwarfdump.exe\",\n \"bin/llvm-nm.exe\",\n \"bin/llvm-objcopy.exe\",\n \"bin/wasm-ctor-eval.exe\",\n \"bin/wasm-emscripten-finalize.exe\",\n \"bin/wasm-ld.exe\",\n \"bin/wasm-metadce.exe\",\n \"bin/wasm-opt.exe\",\n \"bin/wasm-split.exe\",\n \"bin/wasm2js.exe\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar.exe\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "3b576e825b26426bb72854ed98752df3fcb58cc3ab1dc116566e328b79a8abb3", - "strip_prefix": "install", - "type": "zip", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/win/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.zip" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "", - "bazel_tools", - "bazel_tools" - ], - [ - "bazel_tools", - "rules_cc", - "rules_cc+" - ] - ] - } - }, - "@@aspect_bazel_lib+//lib:extensions.bzl%toolchains": { - "general": { - "bzlTransitiveDigest": "nrCBrZBQH3Dq30TXMpPMV6lWpEDozX0S0kCia4Lrpj0=", - "usagesDigest": "1c7PNX163TGNqWzfejRnWpH/hiT4/GRG0kYxuez0Uz0=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "copy_directory_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "copy_directory_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "copy_directory_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "copy_directory_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "copy_directory_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "copy_directory_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "copy_directory_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_toolchains_repo", - "attributes": { - "user_repository_name": "copy_directory" - } - }, - "copy_to_directory_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "copy_to_directory_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "copy_to_directory_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "copy_to_directory_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "copy_to_directory_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "copy_to_directory_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "copy_to_directory_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_toolchains_repo", - "attributes": { - "user_repository_name": "copy_to_directory" - } - }, - "jq_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "1.6" - } - }, - "jq_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "1.6" - } - }, - "jq_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "1.6" - } - }, - "jq_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "1.6" - } - }, - "jq": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_host_alias_repo", - "attributes": {} - }, - "jq_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_toolchains_repo", - "attributes": { - "user_repository_name": "jq" - } - }, - "yq_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "4.25.2" - } - }, - "yq_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "4.25.2" - } - }, - "yq_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "4.25.2" - } - }, - "yq_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_arm64", - "version": "4.25.2" - } - }, - "yq_linux_s390x": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_s390x", - "version": "4.25.2" - } - }, - "yq_linux_ppc64le": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_ppc64le", - "version": "4.25.2" - } - }, - "yq_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "4.25.2" - } - }, - "yq": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_host_alias_repo", - "attributes": {} - }, - "yq_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_toolchains_repo", - "attributes": { - "user_repository_name": "yq" - } - }, - "coreutils_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "0.0.16" - } - }, - "coreutils_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "0.0.16" - } - }, - "coreutils_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "0.0.16" - } - }, - "coreutils_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "linux_arm64", - "version": "0.0.16" - } - }, - "coreutils_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "0.0.16" - } - }, - "coreutils_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_toolchains_repo", - "attributes": { - "user_repository_name": "coreutils" - } - }, - "bsd_tar_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "bsd_tar_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "bsd_tar_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "bsd_tar_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "bsd_tar_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "bsd_tar_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%tar_toolchains_repo", - "attributes": { - "user_repository_name": "bsd_tar" - } - }, - "expand_template_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "expand_template_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "expand_template_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "expand_template_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "expand_template_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "expand_template_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "expand_template_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_toolchains_repo", - "attributes": { - "user_repository_name": "expand_template" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "aspect_bazel_lib+", - "aspect_bazel_lib", - "aspect_bazel_lib+" - ], - [ - "aspect_bazel_lib+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_bazel_lib+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { - "general": { - "bzlTransitiveDigest": "poAa/2uyrVSr9Hel1HD6GfFwqId27yXfePnG+3Dmt90=", - "usagesDigest": "yxkJioaKxOYkZAdkGoq2Cm79s4pW36Xwx7a8awQOU2E=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "pnpm": { - "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", - "attributes": { - "package": "pnpm", - "version": "8.6.7", - "root_package": "", - "link_workspace": "", - "link_packages": {}, - "integrity": "sha512-vRIWpD/L4phf9Bk2o/O2TDR8fFoJnpYrp2TKqTIZF/qZ2/rgL3qKXzHofHgbXsinwMoSEigz28sqk3pQ+yMEQQ==", - "url": "", - "commit": "", - "patch_args": [ - "-p0" - ], - "patches": [], - "custom_postinstall": "", - "npm_auth": "", - "npm_auth_basic": "", - "npm_auth_username": "", - "npm_auth_password": "", - "lifecycle_hooks": [], - "extra_build_content": "load(\"@aspect_rules_js//js:defs.bzl\", \"js_binary\")\njs_binary(name = \"pnpm\", data = glob([\"package/**\"]), entry_point = \"package/dist/pnpm.cjs\", visibility = [\"//visibility:public\"])", - "generate_bzl_library_targets": false, - "extract_full_archive": true - } - }, - "pnpm__links": { - "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", - "attributes": { - "package": "pnpm", - "version": "8.6.7", - "dev": false, - "root_package": "", - "link_packages": {}, - "deps": {}, - "transitive_closure": {}, - "lifecycle_build_target": false, - "lifecycle_hooks_env": [], - "lifecycle_hooks_execution_requirements": [ - "no-sandbox" - ], - "lifecycle_hooks_use_default_shell_env": false, - "bins": {}, - "package_visibility": [ - "//visibility:public" - ], - "replace_package": "" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "aspect_bazel_lib+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_bazel_lib+", - "bazel_tools", - "bazel_tools" - ], - [ - "aspect_rules_js+", - "aspect_bazel_lib", - "aspect_bazel_lib+" - ], - [ - "aspect_rules_js+", - "bazel_features", - "bazel_features+" - ], - [ - "aspect_rules_js+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_rules_js+", - "bazel_tools", - "bazel_tools" - ], - [ - "bazel_features+", - "bazel_features_globals", - "bazel_features++version_extension+bazel_features_globals" - ], - [ - "bazel_features+", - "bazel_features_version", - "bazel_features++version_extension+bazel_features_version" - ], - [ - "bazel_features+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@pybind11_bazel+//:python_configure.bzl%extension": { - "general": { - "bzlTransitiveDigest": "d4N/SZrl3ONcmzE98rcV0Fsro0iUbjNQFTIiLiGuH+k=", - "usagesDigest": "fycyB39YnXIJkfWCIXLUKJMZzANcuLy9ZE73hRucjFk=", - "recordedFileInputs": { - "@@pybind11_bazel+//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e" - }, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "local_config_python": { - "repoRuleId": "@@pybind11_bazel+//:python_configure.bzl%python_configure", - "attributes": {} - }, - "pybind11": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file": "@@pybind11_bazel+//:pybind11.BUILD", - "strip_prefix": "pybind11-2.11.1", - "urls": [ - "https://github.com/pybind/pybind11/archive/v2.11.1.zip" - ] - } - } - }, - "recordedRepoMappingEntries": [ - [ - "pybind11_bazel+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_fuzzing+//fuzzing/private:extensions.bzl%non_module_dependencies": { - "general": { - "bzlTransitiveDigest": "mGiTB79hRNjmeDTQdzkpCHyzXhErMbufeAmySBt7s5s=", - "usagesDigest": "wy6ISK6UOcBEjj/mvJ/S3WeXoO67X+1llb9yPyFtPgc=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "platforms": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz", - "https://github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz" - ], - "sha256": "8150406605389ececb6da07cbcb509d5637a3ab9a24bc69b1101531367d89d74" - } - }, - "rules_python": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8", - "strip_prefix": "rules_python-0.28.0", - "url": "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz" - } - }, - "bazel_skylib": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", - "urls": [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz", - "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" - ] - } - }, - "com_google_absl": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.1.zip" - ], - "strip_prefix": "abseil-cpp-20240116.1", - "integrity": "sha256-7capMWOvWyoYbUaHF/b+I2U6XLMaHmky8KugWvfXYuk=" - } - }, - "rules_fuzzing_oss_fuzz": { - "repoRuleId": "@@rules_fuzzing+//fuzzing/private/oss_fuzz:repository.bzl%oss_fuzz_repository", - "attributes": {} - }, - "honggfuzz": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file": "@@rules_fuzzing+//:honggfuzz.BUILD", - "sha256": "6b18ba13bc1f36b7b950c72d80f19ea67fbadc0ac0bb297ec89ad91f2eaa423e", - "url": "https://github.com/google/honggfuzz/archive/2.5.zip", - "strip_prefix": "honggfuzz-2.5" - } - }, - "rules_fuzzing_jazzer": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", - "attributes": { - "sha256": "ee6feb569d88962d59cb59e8a31eb9d007c82683f3ebc64955fd5b96f277eec2", - "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer/0.20.1/jazzer-0.20.1.jar" - } - }, - "rules_fuzzing_jazzer_api": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", - "attributes": { - "sha256": "f5a60242bc408f7fa20fccf10d6c5c5ea1fcb3c6f44642fec5af88373ae7aa1b", - "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer-api/0.20.1/jazzer-api-0.20.1.jar" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_fuzzing+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_java+//java:rules_java_deps.bzl%compatibility_proxy": { - "general": { - "bzlTransitiveDigest": "84xJEZ1jnXXwo8BXMprvBm++rRt4jsTu9liBxz0ivps=", - "usagesDigest": "jTQDdLDxsS43zuRmg1faAjIEPWdLAbDAowI1pInQSoo=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "compatibility_proxy": { - "repoRuleId": "@@rules_java+//java:rules_java_deps.bzl%_compatibility_proxy_repo_rule", - "attributes": {} - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_java+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { - "general": { - "bzlTransitiveDigest": "sFhcgPbDQehmbD1EOXzX4H1q/CD5df8zwG4kp4jbvr8=", - "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "com_github_jetbrains_kotlin_git": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", - "attributes": { - "urls": [ - "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" - ], - "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" - } - }, - "com_github_jetbrains_kotlin": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", - "attributes": { - "git_repository_name": "com_github_jetbrains_kotlin_git", - "compiler_version": "1.9.23" - } - }, - "com_github_google_ksp": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", - "attributes": { - "urls": [ - "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" - ], - "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", - "strip_version": "1.9.23-1.0.20" - } - }, - "com_github_pinterest_ktlint": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", - "attributes": { - "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", - "urls": [ - "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" - ], - "executable": true - } - }, - "rules_android": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", - "strip_prefix": "rules_android-0.1.1", - "urls": [ - "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" - ] - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_kotlin+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_nodejs+//nodejs:extensions.bzl%node": { - "general": { - "bzlTransitiveDigest": "rphcryfYrOY/P3emfTskC/GY5YuHcwMl2B2ncjaM8lY=", - "usagesDigest": "02fIHVSGNmq3/4pf3KaxTES2ZYYjuW75/2q5dmj9+p0=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "nodejs_linux_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_amd64" - } - }, - "nodejs_linux_arm64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_arm64" - } - }, - "nodejs_linux_s390x": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_s390x" - } - }, - "nodejs_linux_ppc64le": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_ppc64le" - } - }, - "nodejs_darwin_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "darwin_amd64" - } - }, - "nodejs_darwin_arm64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "darwin_arm64" - } - }, - "nodejs_windows_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "windows_amd64" - } - }, - "nodejs": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", - "attributes": { - "user_node_repository_name": "nodejs" - } - }, - "nodejs_host": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", - "attributes": { - "user_node_repository_name": "nodejs" - } - }, - "nodejs_toolchains": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl%nodejs_toolchains_repo", - "attributes": { - "user_node_repository_name": "nodejs" - } - } - }, - "recordedRepoMappingEntries": [] - } - }, - "@@rules_python+//python/extensions:pip.bzl%pip": { - "general": { - "bzlTransitiveDigest": "Y1+Nq7F10jItATWoJUqrIUjUtsCs4cqQw9XXIyl9S3A=", - "usagesDigest": "F5jSeup4ZspeKK83+fXZFbblRp0MSGdobyZdSKc8xP8=", - "recordedFileInputs": { - "@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", - "@@rules_fuzzing+//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", - "@@rules_python+//tools/publish/requirements_darwin.txt": "095d4a4f3d639dce831cd493367631cd51b53665292ab20194bac2c0c6458fa8", - "@@rules_python+//tools/publish/requirements_linux.txt": "d576e0d8542df61396a9b38deeaa183c24135ed5e8e73bb9622f298f2671811e", - "@@rules_python+//tools/publish/requirements_windows.txt": "d18538a3982beab378fd5687f4db33162ee1ece69801f9a451661b1b64286b76" - }, - "recordedDirentsInputs": {}, - "envVariables": { - "RULES_PYTHON_REPO_DEBUG": null, - "RULES_PYTHON_REPO_DEBUG_VERBOSITY": null - }, - "generatedRepoSpecs": { - "pip_deps_310_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "pip_deps_310", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_310_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "pip_deps_310", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_311_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "pip_deps_311", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_311_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "pip_deps_311", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_312_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "pip_deps_312", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_312_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "pip_deps_312", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_38_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "pip_deps_38", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_38_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "pip_deps_38", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_39_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "pip_deps_39", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_39_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "pip_deps_39", - "requirement": "setuptools<=70.3.0" - } - }, - "rules_fuzzing_py_deps_310_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "rules_fuzzing_py_deps_310", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_310_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "rules_fuzzing_py_deps_310", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_311_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_fuzzing_py_deps_311", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_311_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_fuzzing_py_deps_311", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_312_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "rules_fuzzing_py_deps_312", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_312_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "rules_fuzzing_py_deps_312", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_38_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "rules_fuzzing_py_deps_38", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_38_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "rules_fuzzing_py_deps_38", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_39_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "rules_fuzzing_py_deps_39", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_39_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "rules_fuzzing_py_deps_39", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "backports.tarfile-1.2.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "backports-tarfile==1.2.0", - "sha256": "77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", - "urls": [ - "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "backports_tarfile-1.2.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "backports-tarfile==1.2.0", - "sha256": "d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", - "urls": [ - "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_certifi_py3_none_any_922820b5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "certifi-2024.8.30-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "certifi==2024.8.30", - "sha256": "922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", - "urls": [ - "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_certifi_sdist_bec941d2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "certifi-2024.8.30.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "certifi==2024.8.30", - "sha256": "bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", - "urls": [ - "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", - "urls": [ - "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", - "urls": [ - "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", - "urls": [ - "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", - "urls": [ - "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", - "urls": [ - "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_sdist_1c39c601": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "cffi-1.17.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", - "urls": [ - "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", - "urls": [ - "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", - "urls": [ - "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", - "urls": [ - "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", - "urls": [ - "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", - "urls": [ - "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", - "urls": [ - "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", - "urls": [ - "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", - "urls": [ - "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", - "urls": [ - "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", - "urls": [ - "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", - "urls": [ - "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_sdist_223217c3": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "charset_normalizer-3.4.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", - "urls": [ - "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", - "urls": [ - "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", - "urls": [ - "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", - "urls": [ - "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", - "urls": [ - "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", - "urls": [ - "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", - "urls": [ - "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_sdist_315b9001": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "cryptography-43.0.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", - "urls": [ - "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "docutils-0.21.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "docutils==0.21.2", - "sha256": "dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", - "urls": [ - "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_docutils_sdist_3a6b1873": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "docutils-0.21.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "docutils==0.21.2", - "sha256": "3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", - "urls": [ - "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_idna_py3_none_any_946d195a": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "idna-3.10-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "idna==3.10", - "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", - "urls": [ - "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_idna_sdist_12f65c9b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "idna-3.10.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "idna==3.10", - "sha256": "12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", - "urls": [ - "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "importlib_metadata-8.5.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "importlib-metadata==8.5.0", - "sha256": "45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", - "urls": [ - "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_importlib_metadata_sdist_71522656": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "importlib_metadata-8.5.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "importlib-metadata==8.5.0", - "sha256": "71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", - "urls": [ - "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.classes-3.4.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-classes==3.4.0", - "sha256": "f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", - "urls": [ - "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco.classes-3.4.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-classes==3.4.0", - "sha256": "47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", - "urls": [ - "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.context-6.0.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-context==6.0.1", - "sha256": "f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", - "urls": [ - "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco_context-6.0.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-context==6.0.1", - "sha256": "9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", - "urls": [ - "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.functools-4.1.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-functools==4.1.0", - "sha256": "ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649", - "urls": [ - "https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco_functools-4.1.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-functools==4.1.0", - "sha256": "70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d", - "urls": [ - "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "jeepney-0.8.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jeepney==0.8.0", - "sha256": "c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", - "urls": [ - "https://files.pythonhosted.org/packages/ae/72/2a1e2290f1ab1e06f71f3d0f1646c9e4634e70e1d37491535e19266e8dc9/jeepney-0.8.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jeepney_sdist_5efe48d2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jeepney-0.8.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jeepney==0.8.0", - "sha256": "5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", - "urls": [ - "https://files.pythonhosted.org/packages/d6/f4/154cf374c2daf2020e05c3c6a03c91348d59b23c5366e968feb198306fdf/jeepney-0.8.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_keyring_py3_none_any_5426f817": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "keyring-25.4.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "keyring==25.4.1", - "sha256": "5426f817cf7f6f007ba5ec722b1bcad95a75b27d780343772ad76b17cb47b0bf", - "urls": [ - "https://files.pythonhosted.org/packages/83/25/e6d59e5f0a0508d0dca8bb98c7f7fd3772fc943ac3f53d5ab18a218d32c0/keyring-25.4.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_keyring_sdist_b07ebc55": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "keyring-25.4.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "keyring==25.4.1", - "sha256": "b07ebc55f3e8ed86ac81dd31ef14e81ace9dd9c3d4b5d77a6e9a2016d0d71a1b", - "urls": [ - "https://files.pythonhosted.org/packages/a5/1c/2bdbcfd5d59dc6274ffb175bc29aa07ecbfab196830e0cfbde7bd861a2ea/keyring-25.4.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "markdown_it_py-3.0.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "markdown-it-py==3.0.0", - "sha256": "355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", - "urls": [ - "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "markdown-it-py-3.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "markdown-it-py==3.0.0", - "sha256": "e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", - "urls": [ - "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_mdurl_py3_none_any_84008a41": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "mdurl-0.1.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "mdurl==0.1.2", - "sha256": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", - "urls": [ - "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_mdurl_sdist_bb413d29": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "mdurl-0.1.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "mdurl==0.1.2", - "sha256": "bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", - "urls": [ - "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "more_itertools-10.5.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "more-itertools==10.5.0", - "sha256": "037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", - "urls": [ - "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_more_itertools_sdist_5482bfef": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "more-itertools-10.5.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "more-itertools==10.5.0", - "sha256": "5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", - "urls": [ - "https://files.pythonhosted.org/packages/51/78/65922308c4248e0eb08ebcbe67c95d48615cc6f27854b6f2e57143e9178f/more-itertools-10.5.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86", - "urls": [ - "https://files.pythonhosted.org/packages/b3/89/1daff5d9ba5a95a157c092c7c5f39b8dd2b1ddb4559966f808d31cfb67e0/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811", - "urls": [ - "https://files.pythonhosted.org/packages/2c/b6/42fc3c69cabf86b6b81e4c051a9b6e249c5ba9f8155590222c2622961f58/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200", - "urls": [ - "https://files.pythonhosted.org/packages/45/b9/833f385403abaf0023c6547389ec7a7acf141ddd9d1f21573723a6eab39a/nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164", - "urls": [ - "https://files.pythonhosted.org/packages/05/2b/85977d9e11713b5747595ee61f381bc820749daf83f07b90b6c9964cf932/nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189", - "urls": [ - "https://files.pythonhosted.org/packages/72/f2/5c894d5265ab80a97c68ca36f25c8f6f0308abac649aaf152b74e7e854a8/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b", - "urls": [ - "https://files.pythonhosted.org/packages/c2/a8/3bb02d0c60a03ad3a112b76c46971e9480efa98a8946677b5a59f60130ca/nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307", - "urls": [ - "https://files.pythonhosted.org/packages/1b/63/6ab90d0e5225ab9780f6c9fb52254fa36b52bb7c188df9201d05b647e5e1/nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe", - "urls": [ - "https://files.pythonhosted.org/packages/a3/da/0c4e282bc3cff4a0adf37005fa1fb42257673fbc1bbf7d1ff639ec3d255a/nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a", - "urls": [ - "https://files.pythonhosted.org/packages/de/81/c291231463d21da5f8bba82c8167a6d6893cc5419b0639801ee5d3aeb8a9/nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204", - "urls": [ - "https://files.pythonhosted.org/packages/eb/61/73a007c74c37895fdf66e0edcd881f5eaa17a348ff02f4bb4bc906d61085/nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-win_amd64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844", - "urls": [ - "https://files.pythonhosted.org/packages/26/8d/53c5b19c4999bdc6ba95f246f4ef35ca83d7d7423e5e38be43ad66544e5d/nh3-0.2.18-cp37-abi3-win_amd64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_sdist_94a16692": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "nh3-0.2.18.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4", - "urls": [ - "https://files.pythonhosted.org/packages/62/73/10df50b42ddb547a907deeb2f3c9823022580a7a47281e8eae8e003a9639/nh3-0.2.18.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "pkginfo-1.10.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pkginfo==1.10.0", - "sha256": "889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097", - "urls": [ - "https://files.pythonhosted.org/packages/56/09/054aea9b7534a15ad38a363a2bd974c20646ab1582a387a95b8df1bfea1c/pkginfo-1.10.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pkginfo_sdist_5df73835": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pkginfo-1.10.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pkginfo==1.10.0", - "sha256": "5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297", - "urls": [ - "https://files.pythonhosted.org/packages/2f/72/347ec5be4adc85c182ed2823d8d1c7b51e13b9a6b0c1aae59582eca652df/pkginfo-1.10.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "pycparser-2.22-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pycparser==2.22", - "sha256": "c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", - "urls": [ - "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pycparser_sdist_491c8be9": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pycparser-2.22.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pycparser==2.22", - "sha256": "491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", - "urls": [ - "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "pygments-2.18.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pygments==2.18.0", - "sha256": "b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", - "urls": [ - "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pygments_sdist_786ff802": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pygments-2.18.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pygments==2.18.0", - "sha256": "786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", - "urls": [ - "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_windows_x86_64" - ], - "filename": "pywin32_ctypes-0.2.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pywin32-ctypes==0.2.3", - "sha256": "8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", - "urls": [ - "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pywin32-ctypes-0.2.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pywin32-ctypes==0.2.3", - "sha256": "d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", - "urls": [ - "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "readme_renderer-44.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "readme-renderer==44.0", - "sha256": "2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", - "urls": [ - "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_readme_renderer_sdist_8712034e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "readme_renderer-44.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "readme-renderer==44.0", - "sha256": "8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", - "urls": [ - "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_requests_py3_none_any_70761cfe": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "requests-2.32.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests==2.32.3", - "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", - "urls": [ - "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_requests_sdist_55365417": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "requests-2.32.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests==2.32.3", - "sha256": "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", - "urls": [ - "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "requests_toolbelt-1.0.0-py2.py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests-toolbelt==1.0.0", - "sha256": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", - "urls": [ - "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "requests-toolbelt-1.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests-toolbelt==1.0.0", - "sha256": "7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", - "urls": [ - "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "rfc3986-2.0.0-py2.py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rfc3986==2.0.0", - "sha256": "50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", - "urls": [ - "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_rfc3986_sdist_97aacf9d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "rfc3986-2.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rfc3986==2.0.0", - "sha256": "97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", - "urls": [ - "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_rich_py3_none_any_6049d5e6": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "rich-13.9.4-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rich==13.9.4", - "sha256": "6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", - "urls": [ - "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_rich_sdist_43959497": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "rich-13.9.4.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rich==13.9.4", - "sha256": "439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", - "urls": [ - "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "SecretStorage-3.3.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "secretstorage==3.3.3", - "sha256": "f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", - "urls": [ - "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_secretstorage_sdist_2403533e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "SecretStorage-3.3.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "secretstorage==3.3.3", - "sha256": "2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", - "urls": [ - "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_twine_py3_none_any_215dbe7b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "twine-5.1.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "twine==5.1.1", - "sha256": "215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997", - "urls": [ - "https://files.pythonhosted.org/packages/5d/ec/00f9d5fd040ae29867355e559a94e9a8429225a0284a3f5f091a3878bfc0/twine-5.1.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_twine_sdist_9aa08251": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "twine-5.1.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "twine==5.1.1", - "sha256": "9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db", - "urls": [ - "https://files.pythonhosted.org/packages/77/68/bd982e5e949ef8334e6f7dcf76ae40922a8750aa2e347291ae1477a4782b/twine-5.1.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "urllib3-2.2.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "urllib3==2.2.3", - "sha256": "ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", - "urls": [ - "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_urllib3_sdist_e7d814a8": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "urllib3-2.2.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "urllib3==2.2.3", - "sha256": "e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", - "urls": [ - "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_zipp_py3_none_any_a817ac80": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "zipp-3.20.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "zipp==3.20.2", - "sha256": "a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", - "urls": [ - "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_zipp_sdist_bc9eb26f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "zipp-3.20.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "zipp==3.20.2", - "sha256": "bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", - "urls": [ - "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz" - ] - } - }, - "pip_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "pip_deps", - "extra_hub_aliases": {}, - "whl_map": { - "numpy": "{\"pip_deps_310_numpy\":[{\"version\":\"3.10\"}],\"pip_deps_311_numpy\":[{\"version\":\"3.11\"}],\"pip_deps_312_numpy\":[{\"version\":\"3.12\"}],\"pip_deps_38_numpy\":[{\"version\":\"3.8\"}],\"pip_deps_39_numpy\":[{\"version\":\"3.9\"}]}", - "setuptools": "{\"pip_deps_310_setuptools\":[{\"version\":\"3.10\"}],\"pip_deps_311_setuptools\":[{\"version\":\"3.11\"}],\"pip_deps_312_setuptools\":[{\"version\":\"3.12\"}],\"pip_deps_38_setuptools\":[{\"version\":\"3.8\"}],\"pip_deps_39_setuptools\":[{\"version\":\"3.9\"}]}" - }, - "packages": [ - "numpy", - "setuptools" - ], - "groups": {} - } - }, - "rules_fuzzing_py_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "rules_fuzzing_py_deps", - "extra_hub_aliases": {}, - "whl_map": { - "absl_py": "{\"rules_fuzzing_py_deps_310_absl_py\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_absl_py\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_absl_py\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_absl_py\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_absl_py\":[{\"version\":\"3.9\"}]}", - "six": "{\"rules_fuzzing_py_deps_310_six\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_six\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_six\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_six\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_six\":[{\"version\":\"3.9\"}]}" - }, - "packages": [ - "absl_py", - "six" - ], - "groups": {} - } - }, - "rules_python_publish_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "rules_python_publish_deps", - "extra_hub_aliases": {}, - "whl_map": { - "backports_tarfile": "{\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\":[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\":[{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"version\":\"3.11\"}]}", - "certifi": "{\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\":[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_certifi_sdist_bec941d2\":[{\"filename\":\"certifi-2024.8.30.tar.gz\",\"version\":\"3.11\"}]}", - "cffi": "{\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_sdist_1c39c601\":[{\"filename\":\"cffi-1.17.1.tar.gz\",\"version\":\"3.11\"}]}", - "charset_normalizer": "{\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\":[{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\":[{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", - "cryptography": "{\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_sdist_315b9001\":[{\"filename\":\"cryptography-43.0.3.tar.gz\",\"version\":\"3.11\"}]}", - "docutils": "{\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\":[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\":[{\"filename\":\"docutils-0.21.2.tar.gz\",\"version\":\"3.11\"}]}", - "idna": "{\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\":[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_idna_sdist_12f65c9b\":[{\"filename\":\"idna-3.10.tar.gz\",\"version\":\"3.11\"}]}", - "importlib_metadata": "{\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\":[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\":[{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_classes": "{\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\":[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\":[{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_context": "{\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\":[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\":[{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_functools": "{\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\":[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\":[{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"version\":\"3.11\"}]}", - "jeepney": "{\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\":[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\":[{\"filename\":\"jeepney-0.8.0.tar.gz\",\"version\":\"3.11\"}]}", - "keyring": "{\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\":[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\":[{\"filename\":\"keyring-25.4.1.tar.gz\",\"version\":\"3.11\"}]}", - "markdown_it_py": "{\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\":[{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\":[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "mdurl": "{\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\":[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\":[{\"filename\":\"mdurl-0.1.2.tar.gz\",\"version\":\"3.11\"}]}", - "more_itertools": "{\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\":[{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\":[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"version\":\"3.11\"}]}", - "nh3": "{\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_sdist_94a16692\":[{\"filename\":\"nh3-0.2.18.tar.gz\",\"version\":\"3.11\"}]}", - "pkginfo": "{\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\":[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\":[{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"version\":\"3.11\"}]}", - "pycparser": "{\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\":[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\":[{\"filename\":\"pycparser-2.22.tar.gz\",\"version\":\"3.11\"}]}", - "pygments": "{\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\":[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pygments_sdist_786ff802\":[{\"filename\":\"pygments-2.18.0.tar.gz\",\"version\":\"3.11\"}]}", - "pywin32_ctypes": "{\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\":[{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\":[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"version\":\"3.11\"}]}", - "readme_renderer": "{\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\":[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\":[{\"filename\":\"readme_renderer-44.0.tar.gz\",\"version\":\"3.11\"}]}", - "requests": "{\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\":[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_sdist_55365417\":[{\"filename\":\"requests-2.32.3.tar.gz\",\"version\":\"3.11\"}]}", - "requests_toolbelt": "{\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\":[{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\":[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "rfc3986": "{\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\":[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\":[{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "rich": "{\"rules_python_publish_deps_311_rich_py3_none_any_6049d5e6\":[{\"filename\":\"rich-13.9.4-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rich_sdist_43959497\":[{\"filename\":\"rich-13.9.4.tar.gz\",\"version\":\"3.11\"}]}", - "secretstorage": "{\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\":[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\":[{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"version\":\"3.11\"}]}", - "twine": "{\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\":[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_twine_sdist_9aa08251\":[{\"filename\":\"twine-5.1.1.tar.gz\",\"version\":\"3.11\"}]}", - "urllib3": "{\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\":[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\":[{\"filename\":\"urllib3-2.2.3.tar.gz\",\"version\":\"3.11\"}]}", - "zipp": "{\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\":[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\":[{\"filename\":\"zipp-3.20.2.tar.gz\",\"version\":\"3.11\"}]}" - }, - "packages": [ - "backports_tarfile", - "certifi", - "charset_normalizer", - "docutils", - "idna", - "importlib_metadata", - "jaraco_classes", - "jaraco_context", - "jaraco_functools", - "keyring", - "markdown_it_py", - "mdurl", - "more_itertools", - "nh3", - "pkginfo", - "pygments", - "readme_renderer", - "requests", - "requests_toolbelt", - "rfc3986", - "rich", - "twine", - "urllib3", - "zipp" - ], - "groups": {} - } - } - }, - "moduleExtensionMetadata": { - "useAllRepos": "NO", - "reproducible": false - }, - "recordedRepoMappingEntries": [ - [ - "bazel_features+", - "bazel_features_globals", - "bazel_features++version_extension+bazel_features_globals" - ], - [ - "bazel_features+", - "bazel_features_version", - "bazel_features++version_extension+bazel_features_version" - ], - [ - "rules_python+", - "bazel_features", - "bazel_features+" - ], - [ - "rules_python+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "rules_python+", - "bazel_tools", - "bazel_tools" - ], - [ - "rules_python+", - "pypi__build", - "rules_python++internal_deps+pypi__build" - ], - [ - "rules_python+", - "pypi__click", - "rules_python++internal_deps+pypi__click" - ], - [ - "rules_python+", - "pypi__colorama", - "rules_python++internal_deps+pypi__colorama" - ], - [ - "rules_python+", - "pypi__importlib_metadata", - "rules_python++internal_deps+pypi__importlib_metadata" - ], - [ - "rules_python+", - "pypi__installer", - "rules_python++internal_deps+pypi__installer" - ], - [ - "rules_python+", - "pypi__more_itertools", - "rules_python++internal_deps+pypi__more_itertools" - ], - [ - "rules_python+", - "pypi__packaging", - "rules_python++internal_deps+pypi__packaging" - ], - [ - "rules_python+", - "pypi__pep517", - "rules_python++internal_deps+pypi__pep517" - ], - [ - "rules_python+", - "pypi__pip", - "rules_python++internal_deps+pypi__pip" - ], - [ - "rules_python+", - "pypi__pip_tools", - "rules_python++internal_deps+pypi__pip_tools" - ], - [ - "rules_python+", - "pypi__pyproject_hooks", - "rules_python++internal_deps+pypi__pyproject_hooks" - ], - [ - "rules_python+", - "pypi__setuptools", - "rules_python++internal_deps+pypi__setuptools" - ], - [ - "rules_python+", - "pypi__tomli", - "rules_python++internal_deps+pypi__tomli" - ], - [ - "rules_python+", - "pypi__wheel", - "rules_python++internal_deps+pypi__wheel" - ], - [ - "rules_python+", - "pypi__zipp", - "rules_python++internal_deps+pypi__zipp" - ], - [ - "rules_python+", - "pythons_hub", - "rules_python++python+pythons_hub" - ], - [ - "rules_python++python+pythons_hub", - "python_3_10_host", - "rules_python++python+python_3_10_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_11_host", - "rules_python++python+python_3_11_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_12_host", - "rules_python++python+python_3_12_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_13_host", - "rules_python++python+python_3_13_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_8_host", - "rules_python++python+python_3_8_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_9_host", - "rules_python++python+python_3_9_host" - ] - ] - } - }, - "@@rules_python+//python/uv:uv.bzl%uv": { - "general": { - "bzlTransitiveDigest": "Xpqjnjzy6zZ90Es9Wa888ZLHhn7IsNGbph/e6qoxzw8=", - "usagesDigest": "vJ5RHUxAnV24M5swNGiAnkdxMx3Hp/iOLmNANTC5Xc8=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "uv": { - "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", - "attributes": { - "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'", - "toolchain_names": [ - "none" - ], - "toolchain_implementations": { - "none": "'@@rules_python+//python:none'" - }, - "toolchain_compatible_with": { - "none": [ - "@platforms//:incompatible" - ] - }, - "toolchain_target_settings": {} - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_python+", - "platforms", - "platforms" - ] - ] - } - } - } -} diff --git a/emsdk-cache/emsdk-main/bazel/README.md b/emsdk-cache/emsdk-main/bazel/README.md deleted file mode 100644 index b53e6ece4..000000000 --- a/emsdk-cache/emsdk-main/bazel/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# Bazel Emscripten toolchain - -## Setup Instructions - -Support for depending on emsdk with a WORKSPACE file was removed and last available in [emsdk version 4.0.6](https://github.com/emscripten-core/emsdk/tree/24fc909c0da13ef641d5ae75e89b5a97f25e37aa). Now we only support inclusion as a bzlmod module. - -In your `MODULE.bazel` file, put: -```starlark -emsdk_version = "4.0.6" -bazel_dep(name = "emsdk", version = emsdk_version) -git_override( - module_name = "emsdk", - remote = "https://github.com/emscripten-core/emsdk.git", - strip_prefix = "bazel", - tag = emsdk_version, -) -``` - -You can use a different version of this SDK by changing it in your `MODULE.bazel` file. The Emscripten version is by default the same as the SDK version, but you can use a different one as well by adding to your `MODULE.bazel`: - -``` -emscripten_deps = use_extension( - "@emsdk//:emscripten_deps.bzl", - "emscripten_deps", -) -emscripten_deps.config(version = "4.0.1") -``` - -## Building - -Put the following line into your `.bazelrc`: - -``` -build --incompatible_enable_cc_toolchain_resolution -``` - -Then write a new rule wrapping your `cc_binary`. - -```starlark -load("@rules_cc//cc:defs.bzl", "cc_binary") -load("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary") - -cc_binary( - name = "hello-world", - srcs = ["hello-world.cc"], -) - -wasm_cc_binary( - name = "hello-world-wasm", - cc_target = ":hello-world", -) -``` - -Now you can run `bazel build :hello-world-wasm`. The result of this build will -be the individual files produced by emscripten. Note that some of these files -may be empty. This is because bazel has no concept of optional outputs for -rules. - -`wasm_cc_binary` uses transition to use emscripten toolchain on `cc_target` -and all of its dependencies, and does not require amending `.bazelrc`. This -is the preferred way, since it also unpacks the resulting tarball. - -The Emscripten cache shipped by default does not include LTO, 64-bit or PIC -builds of the system libraries and ports. If you wish to use these features you -will need to declare the cache in your `MODULE.bazel` as follows. Note -that the configuration consists of the same flags that can be passed to -embuilder. If `targets` is not set, all system libraries and ports will be -built, i.e., the `ALL` option to embuilder. - -```starlark -emscripten_cache = use_extension( - "@emsdk//:emscripten_cache.bzl", - "emscripten_cache", -) -emscripten_cache.configuration(flags = ["--lto"]) -emscripten_cache.targets(targets = [ - "crtbegin", - "libprintf_long_double-debug", - "libstubs-debug", - "libnoexit", - "libc-debug", - "libdlmalloc", - "libcompiler_rt", - "libc++-noexcept", - "libc++abi-debug-noexcept", - "libsockets" -]) -``` - -See `test_external/` for an example using [embind](https://emscripten.org/docs/porting/connecting_cpp_and_javascript/embind.html). diff --git a/emsdk-cache/emsdk-main/bazel/bazelrc b/emsdk-cache/emsdk-main/bazel/bazelrc deleted file mode 100644 index d1c8aef22..000000000 --- a/emsdk-cache/emsdk-main/bazel/bazelrc +++ /dev/null @@ -1,2 +0,0 @@ -build:wasm --incompatible_enable_cc_toolchain_resolution -build:wasm --platforms=@emsdk//:platform_wasm diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_build_file.bzl b/emsdk-cache/emsdk-main/bazel/emscripten_build_file.bzl deleted file mode 100644 index 0d7aff28c..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_build_file.bzl +++ /dev/null @@ -1,93 +0,0 @@ -"""A templated build file for emscripten repositories""" - -EMSCRIPTEN_BUILD_FILE_CONTENT_TEMPLATE = """ -package(default_visibility = ['//visibility:public']) - -filegroup( - name = "all", - srcs = glob(["**"]), -) - -filegroup( - name = "includes", - srcs = glob([ - "emscripten/cache/sysroot/include/c++/v1/**", - "emscripten/cache/sysroot/include/compat/**", - "emscripten/cache/sysroot/include/**", - "lib/clang/**/include/**", - ]), -) - -filegroup( - name = "emcc_common", - srcs = [ - "emscripten/emcc.py", - "emscripten/embuilder.py", - "emscripten/emscripten-version.txt", - "emscripten/cache/sysroot_install.stamp", - "emscripten/src/settings.js", - "emscripten/src/settings_internal.js", - ] + glob( - include = [ - "emscripten/third_party/**", - "emscripten/tools/**", - ], - exclude = [ - "**/__pycache__/**", - ], - ), -) - -filegroup( - name = "compiler_files", - srcs = [ - "bin/clang{bin_extension}", - "bin/clang++{bin_extension}", - ":emcc_common", - ":includes", - ], -) - -filegroup( - name = "linker_files", - srcs = [ - "bin/clang{bin_extension}", - "bin/llvm-ar{bin_extension}", - "bin/llvm-dwarfdump{bin_extension}", - "bin/llvm-nm{bin_extension}", - "bin/llvm-objcopy{bin_extension}", - "bin/wasm-ctor-eval{bin_extension}", - "bin/wasm-emscripten-finalize{bin_extension}", - "bin/wasm-ld{bin_extension}", - "bin/wasm-metadce{bin_extension}", - "bin/wasm-opt{bin_extension}", - "bin/wasm-split{bin_extension}", - "bin/wasm2js{bin_extension}", - ":emcc_common", - ] + glob( - include = [ - "emscripten/cache/sysroot/lib/**", - "emscripten/node_modules/**", - "emscripten/src/**", - ], - ), -) - -filegroup( - name = "ar_files", - srcs = [ - "bin/llvm-ar{bin_extension}", - "emscripten/emar.py", - "emscripten/emscripten-version.txt", - "emscripten/src/settings.js", - "emscripten/src/settings_internal.js", - ] + glob( - include = [ - "emscripten/tools/**", - ], - exclude = [ - "**/__pycache__/**", - ], - ), -) -""" diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_cache.bzl b/emsdk-cache/emsdk-main/bazel/emscripten_cache.bzl deleted file mode 100644 index 945c19c01..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_cache.bzl +++ /dev/null @@ -1,113 +0,0 @@ -BUILD_FILE_CONTENT_TEMPLATE = """ -package(default_visibility = ['//visibility:public']) -exports_files(['emscripten_config']) -""" - -EMBUILDER_CONFIG_TEMPLATE = """ -CACHE = '{cache}' -BINARYEN_ROOT = '{binaryen_root}' -LLVM_ROOT = '{llvm_root}' -""" - -def get_root_and_script_ext(repository_ctx): - if repository_ctx.os.name.startswith("linux"): - if "amd64" in repository_ctx.os.arch or "x86_64" in repository_ctx.os.arch: - return (repository_ctx.path(Label("@emscripten_bin_linux//:BUILD.bazel")).dirname, "") - elif "aarch64" in repository_ctx.os.arch: - return (repository_ctx.path(Label("@emscripten_bin_linux_arm64//:BUILD.bazel")).dirname, "") - else: - fail("Unsupported architecture for Linux") - elif repository_ctx.os.name.startswith("mac"): - if "amd64" in repository_ctx.os.arch or "x86_64" in repository_ctx.os.arch: - return (repository_ctx.path(Label("@emscripten_bin_mac//:BUILD.bazel")).dirname, "") - elif "aarch64" in repository_ctx.os.arch: - return (repository_ctx.path(Label("@emscripten_bin_mac_arm64//:BUILD.bazel")).dirname, "") - else: - fail("Unsupported architecture for MacOS") - elif repository_ctx.os.name.startswith("windows"): - return (repository_ctx.path(Label("@emscripten_bin_win//:BUILD.bazel")).dirname, ".bat") - else: - fail("Unsupported operating system") - -def _emscripten_cache_repository_impl(repository_ctx): - # Read the default emscripten configuration file - default_config = repository_ctx.read( - repository_ctx.path( - Label("@emsdk//emscripten_toolchain:default_config"), - ), - ) - - if repository_ctx.attr.targets or repository_ctx.attr.configuration: - root, script_ext = get_root_and_script_ext(repository_ctx) - llvm_root = root.get_child("bin") - cache = repository_ctx.path("cache") - - # Create configuration file - embuilder_config_content = EMBUILDER_CONFIG_TEMPLATE.format( - cache = cache, - binaryen_root = root, - llvm_root = llvm_root, - ) - repository_ctx.file("embuilder_config", embuilder_config_content) - embuilder_config_path = repository_ctx.path("embuilder_config") - embuilder_path = "{}{}".format(root.get_child("emscripten").get_child("embuilder"), script_ext) - - # Prepare the command line - if repository_ctx.attr.targets: - targets = repository_ctx.attr.targets - else: - # If no targets are requested, build everything - targets = ["ALL"] - flags = ["--em-config", embuilder_config_path] + repository_ctx.attr.configuration - embuilder_args = [embuilder_path] + flags + ["build"] + targets - - # Run embuilder - repository_ctx.report_progress("Building secondary cache") - result = repository_ctx.execute( - embuilder_args, - quiet = True, - environment = { - "EM_IGNORE_SANITY": "1", - "EM_NODE_JS": "empty", - }, - ) - if result.return_code != 0: - fail("Embuilder exited with a non-zero return code") - - # Override Emscripten's cache with the secondary cache - default_config += "CACHE = '{}'\n".format(cache) - - # Create the configuration file for the toolchain and export - repository_ctx.file("emscripten_config", default_config) - repository_ctx.file("BUILD.bazel", BUILD_FILE_CONTENT_TEMPLATE) - -_emscripten_cache_repository = repository_rule( - implementation = _emscripten_cache_repository_impl, - attrs = { - "configuration": attr.string_list(), - "targets": attr.string_list(), - }, -) - -def _emscripten_cache_impl(ctx): - all_configuration = [] - all_targets = [] - for mod in ctx.modules: - for configuration in mod.tags.configuration: - all_configuration += configuration.flags - for targets in mod.tags.targets: - all_targets += targets.targets - - _emscripten_cache_repository( - name = "emscripten_cache", - configuration = all_configuration, - targets = all_targets, - ) - -emscripten_cache = module_extension( - tag_classes = { - "configuration": tag_class(attrs = {"flags": attr.string_list()}), - "targets": tag_class(attrs = {"targets": attr.string_list()}), - }, - implementation = _emscripten_cache_impl, -) diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_deps.bzl b/emsdk-cache/emsdk-main/bazel/emscripten_deps.bzl deleted file mode 100644 index 79dca5279..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_deps.bzl +++ /dev/null @@ -1,99 +0,0 @@ -load(":remote_emscripten_repository.bzl", "remote_emscripten_repository") -load(":revisions.bzl", "EMSCRIPTEN_TAGS") - -def _parse_version(v): - return [int(u) for u in v.split(".")] - -def _empty_repository_impl(ctx): - ctx.file("MODULE.bazel", """module(name = "{}")""".format(ctx.name)) - ctx.file("BUILD.bazel", "") - -_empty_repository = repository_rule( - implementation = _empty_repository_impl, -) - -def emscripten_repo_name(name): - return "emscripten_bin_{}".format(name) - -def _emscripten_deps_impl(ctx): - version = None - - for mod in ctx.modules: - for config in mod.tags.config: - if config.version and version != None: - fail("More than one emscripten version specified!") - version = config.version - if version == None: - version = "latest" - - if version == "latest": - version = reversed(sorted(EMSCRIPTEN_TAGS.keys(), key = _parse_version))[0] - - revision = EMSCRIPTEN_TAGS[version] - - emscripten_url = "https://storage.googleapis.com/webassembly/emscripten-releases-builds/{}/{}/wasm-binaries{}.{}" - - remote_emscripten_repository( - name = emscripten_repo_name("linux"), - bin_extension = "", - sha256 = revision.sha_linux, - strip_prefix = "install", - type = "tar.xz", - url = emscripten_url.format("linux", revision.hash, "", "tar.xz"), - ) - - # Not all versions have a linux/arm64 release: https://github.com/emscripten-core/emsdk/issues/547 - if hasattr(revision, "sha_linux_arm64"): - remote_emscripten_repository( - name = emscripten_repo_name("linux_arm64"), - bin_extension = "", - sha256 = revision.sha_linux_arm64, - strip_prefix = "install", - type = "tar.xz", - url = emscripten_url.format("linux", revision.hash, "-arm64", "tar.xz"), - ) - else: - _empty_repository( - name = emscripten_repo_name("linux_arm64"), - ) - - remote_emscripten_repository( - name = emscripten_repo_name("mac"), - bin_extension = "", - sha256 = revision.sha_mac, - strip_prefix = "install", - type = "tar.xz", - url = emscripten_url.format("mac", revision.hash, "", "tar.xz"), - ) - - remote_emscripten_repository( - name = emscripten_repo_name("mac_arm64"), - bin_extension = "", - sha256 = revision.sha_mac_arm64, - strip_prefix = "install", - type = "tar.xz", - url = emscripten_url.format("mac", revision.hash, "-arm64", "tar.xz"), - ) - - remote_emscripten_repository( - name = emscripten_repo_name("win"), - bin_extension = ".exe", - sha256 = revision.sha_win, - strip_prefix = "install", - type = "zip", - url = emscripten_url.format("win", revision.hash, "", "zip"), - ) - -emscripten_deps = module_extension( - tag_classes = { - "config": tag_class( - attrs = { - "version": attr.string( - doc = "Version to use. 'latest' to use latest.", - values = ["latest"] + EMSCRIPTEN_TAGS.keys(), - ), - }, - ), - }, - implementation = _emscripten_deps_impl, -) diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/BUILD.bazel b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/BUILD.bazel deleted file mode 100644 index ebbc2e996..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/BUILD.bazel +++ /dev/null @@ -1,43 +0,0 @@ -load("//:emscripten_deps.bzl", "emscripten_repo_name") -load("//:remote_emscripten_repository.bzl", "create_toolchains", "emscripten_toolchain_name") -load("@rules_python//python:py_binary.bzl", "py_binary") - -package(default_visibility = ["//visibility:public"]) - -# dlmalloc.bc is implicitly added by the emscripten toolchain -cc_library(name = "malloc") - -create_toolchains( - name = emscripten_toolchain_name("linux"), - repo_name = emscripten_repo_name("linux"), - exec_compatible_with = [ "@platforms//os:linux", "@platforms//cpu:x86_64"], -) - -create_toolchains( - name = emscripten_toolchain_name("linux_arm64"), - repo_name = emscripten_repo_name("linux_arm64"), - exec_compatible_with = ["@platforms//os:linux", "@platforms//cpu:arm64"], -) - -create_toolchains( - name = emscripten_toolchain_name("mac"), - repo_name = emscripten_repo_name("mac"), - exec_compatible_with = ["@platforms//os:macos", "@platforms//cpu:x86_64"], -) - -create_toolchains( - name = emscripten_toolchain_name("mac_arm64"), - repo_name = emscripten_repo_name("mac_arm64"), - exec_compatible_with = ["@platforms//os:macos", "@platforms//cpu:arm64"], -) - -create_toolchains( - name = emscripten_toolchain_name("win"), - repo_name = emscripten_repo_name("win"), - exec_compatible_with = ["@platforms//os:windows", "@platforms//cpu:x86_64"], -) - -py_binary( - name = "wasm_binary", - srcs = ["wasm_binary.py"], -) diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/default_config b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/default_config deleted file mode 100644 index 8107fe4a2..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/default_config +++ /dev/null @@ -1,16 +0,0 @@ -import os -import platform - -ROOT_DIR = os.environ["ROOT_DIR"] -EMSCRIPTEN_ROOT = os.environ["EMSCRIPTEN"] -BINARYEN_ROOT = os.path.join(ROOT_DIR, os.environ["EM_BIN_PATH"]) -LLVM_ROOT = os.path.join(BINARYEN_ROOT, "bin") -NODE_JS = os.path.join(ROOT_DIR, os.environ["NODE_JS_PATH"]) -FROZEN_CACHE = True - -# This works around an issue with Bazel RBE where the symlinks in node_modules/.bin -# are uploaded as the linked files, which means the cli.js cannot load its -# dependencies from the expected locations. -# See https://github.com/emscripten-core/emscripten/pull/16640 for more -CLOSURE_COMPILER = [NODE_JS, os.path.join(EMSCRIPTEN_ROOT, "node_modules", - "google-closure-compiler", "cli.js")] diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emar.bat b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emar.bat deleted file mode 100644 index c8068089f..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emar.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF - -call %~dp0\env.bat - -py -3 %EMSCRIPTEN%\emar.py %* diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emar.sh b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emar.sh deleted file mode 100644 index b4ead6ef9..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emar.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -source $(dirname $0)/env.sh - -exec python3 $EMSCRIPTEN/emar.py "$@" diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc.bat b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc.bat deleted file mode 100644 index 4088bc4ae..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF - -call %~dp0\env.bat - -py -3 %EMSCRIPTEN%\emcc.py %* diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc.sh b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc.sh deleted file mode 100644 index 5fdaf9c29..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -source $(dirname $0)/env.sh - -exec python3 $EMSCRIPTEN/emcc.py "$@" diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc_link.bat b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc_link.bat deleted file mode 100644 index f49cb0d58..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc_link.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF - -call %~dp0\env.bat - -py -3 %~dp0\link_wrapper.py %* diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc_link.sh b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc_link.sh deleted file mode 100644 index 44f32353b..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/emcc_link.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -source $(dirname $0)/env.sh - -exec python3 $(dirname $0)/link_wrapper.py "$@" diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/env.bat b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/env.bat deleted file mode 100644 index c791ff771..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/env.bat +++ /dev/null @@ -1,6 +0,0 @@ -@ECHO OFF - -set ROOT_DIR=%EXT_BUILD_ROOT% -if "%ROOT_DIR%"=="" set ROOT_DIR=%CD% -set EMSCRIPTEN=%ROOT_DIR%\%EM_BIN_PATH%\emscripten -set EM_CONFIG=%ROOT_DIR%\%EM_CONFIG_PATH% diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/env.sh b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/env.sh deleted file mode 100644 index b2a6bd60b..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/env.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -export ROOT_DIR=${EXT_BUILD_ROOT:-$(pwd -P)} -export EMSCRIPTEN=$ROOT_DIR/$EM_BIN_PATH/emscripten -export EM_CONFIG=$ROOT_DIR/$EM_CONFIG_PATH diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/link_wrapper.py b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/link_wrapper.py deleted file mode 100644 index 6a6fe2f87..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/link_wrapper.py +++ /dev/null @@ -1,167 +0,0 @@ -#!/usr/bin/env python -"""wrapper around emcc link step. - -This wrapper currently serves the following purposes. - -1. When building with --config=wasm the final output is multiple files, usually - at least one .js and one .wasm file. Since the cc_binary link step only - allows a single output, we must tar up the outputs into a single file. - -2. Add quotes around arguments that need them in the response file to work - around a bazel quirk. - -3. Ensure the external_debug_info section of the wasm points at the correct - bazel path. -""" - -from __future__ import print_function - -import argparse -import os -import subprocess -import sys - -# Only argument should be @path/to/parameter/file -assert sys.argv[1][0] == '@', sys.argv -param_filename = sys.argv[1][1:] -param_file_args = [line.strip() for line in open(param_filename, 'r').readlines()] - -# Re-write response file if needed. -if any(' ' in a for a in param_file_args): - new_param_filename = param_filename + '.modified' - with open(new_param_filename, 'w') as f: - for param in param_file_args: - if ' ' in param: - f.write('"%s"' % param) - else: - f.write(param) - f.write('\n') - sys.argv[1] = '@' + new_param_filename - -emcc_py = os.path.join(os.environ['EMSCRIPTEN'], 'emcc.py') -rtn = subprocess.call([sys.executable, emcc_py] + sys.argv[1:]) -if rtn != 0: - sys.exit(1) - -# Parse the arguments that we gave to the linker to determine what the output -# file is named and what the output format is. -parser = argparse.ArgumentParser(add_help=False) -parser.add_argument('-o') -parser.add_argument('--oformat') -options = parser.parse_known_args(param_file_args)[0] -output_file = options.o -oformat = options.oformat -outdir = os.path.normpath(os.path.dirname(output_file)) -base_name = os.path.basename(output_file) - -# The output file name is the name of the build rule that was built. -# Add an appropriate file extension based on --oformat. -if oformat is not None: - base_name_split = os.path.splitext(base_name) - - # If the output name has no extension, give it the appropriate extension. - if not base_name_split[1]: - os.replace(output_file, output_file + '.' + oformat) - - # If the output name does have an extension and it matches the output format, - # change the base_name so it doesn't have an extension. - elif base_name_split[1] == '.' + oformat: - base_name = base_name_split[0] - - # If the output name does have an extension and it does not match the output - # format, change the base_name so it doesn't have an extension and rename - # the output_file so it has the proper extension. - # Note that if you do something like name your build rule "foo.js" and pass - # "--oformat=html", emscripten will write to the same file for both the js and - # html output, overwriting the js output entirely with the html. - # Please don't do that. - else: - base_name = base_name_split[0] - os.replace(output_file, os.path.join(outdir, base_name + '.' + oformat)) - -files = [] -extensions = [ - '.js', - '.wasm', - '.wasm.map', - '.js.mem', - '.fetch.js', - '.worker.js', - '.data', - '.js.symbols', - '.wasm.debug.wasm', - '.html', - '.aw.js' -] - -for ext in extensions: - filename = base_name + ext - if os.path.exists(os.path.join(outdir, filename)): - files.append(filename) - -wasm_base = os.path.join(outdir, base_name + '.wasm') -if os.path.exists(wasm_base + '.debug.wasm') and os.path.exists(wasm_base): - # If we have a .wasm.debug.wasm file and a .wasm file, we need to rewrite the - # section in the .wasm file that refers to it. The path that's in there - # is the blaze output path; we want it to be just the filename. - - llvm_objcopy = os.path.join( - os.environ['EM_BIN_PATH'], 'bin/llvm-objcopy') - # First, check to make sure the .wasm file has the header that needs to be - # rewritten. - rtn = subprocess.call([ - llvm_objcopy, - '--dump-section=external_debug_info=/dev/null', - wasm_base], stdout=subprocess.PIPE, stderr=subprocess.PIPE) - if rtn == 0: - # If llvm-objcopy did not return an error, the external_debug_info section - # must exist, so we're good to continue. - - # Next we need to convert length of the filename to LEB128. - # Start by converting the length of the filename to a bit string. - bit_string = '{0:b}'.format(len(base_name + '.wasm.debug.wasm')) - - # Pad the bit string with 0s so that its length is a multiple of 7. - while len(bit_string) % 7 != 0: - bit_string = '0' + bit_string - - # Break up our bit string into chunks of 7. - # We do this backwards because the final format is little-endian. - final_bytes = bytearray() - for i in reversed(range(0, len(bit_string), 7)): - binary_part = bit_string[i:i + 7] - if i != 0: - # Every chunk except the last one needs to be prepended with '1'. - # The length of each chunk is 7, so that one has an implicit '0'. - binary_part = '1' + binary_part - final_bytes.append(int(binary_part, 2)) - # Finally, add the actual filename. - final_bytes.extend((base_name + '.wasm.debug.wasm').encode()) - - # Write our length + filename bytes to a temp file. - with open(base_name + '_debugsection.tmp', 'wb+') as f: - f.write(final_bytes) - f.close() - - # First delete the old section. - subprocess.check_call([ - llvm_objcopy, - wasm_base, - '--remove-section=external_debug_info']) - # Rewrite section with the new size and filename from the temp file. - subprocess.check_call([ - llvm_objcopy, - wasm_base, - '--add-section=external_debug_info=' + base_name + '_debugsection.tmp']) - -# Make sure we have at least one output file. -if not len(files): - print('emcc.py did not appear to output any known files!') - sys.exit(1) - -# cc_binary must output exactly one file; put all the output files in a tarball. -cmd = ['tar', 'cf', base_name + '.tar'] + files -subprocess.check_call(cmd, cwd=outdir) -os.replace(os.path.join(outdir, base_name + '.tar'), output_file) - -sys.exit(0) diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/toolchain.bzl b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/toolchain.bzl deleted file mode 100644 index 1f2692cdf..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/toolchain.bzl +++ /dev/null @@ -1,1158 +0,0 @@ -"""This module encapsulates logic to create emscripten_cc_toolchain_config rule.""" - -load( - "@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl", - "action_config", - "env_entry", - "env_set", - "feature", - "feature_set", - "flag_group", - "tool", - "tool_path", - "variable_with_value", - "with_feature_set", - _flag_set = "flag_set", -) -load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES") - -def flag_set(flags = None, features = None, not_features = None, **kwargs): - """Extension to flag_set which allows for a "simple" form. - - The simple form allows specifying flags as a simple list instead of a flag_group - if enable_if or expand_if semantics are not required. - - Similarly, the simple form allows passing features/not_features if they are a simple - list of semantically "and" features. - (i.e. "asan" and "dbg", rather than "asan" or "dbg") - - Args: - flags: list, set of flags - features: list, set of features required to be enabled. - not_features: list, set of features required to not be enabled. - **kwargs: The rest of the args for flag_set. - - Returns: - flag_set - """ - if flags: - if kwargs.get("flag_groups"): - fail("Cannot set flags and flag_groups") - else: - kwargs["flag_groups"] = [flag_group(flags = flags)] - - if features or not_features: - if kwargs.get("with_features"): - fail("Cannot set features/not_feature and with_features") - kwargs["with_features"] = [with_feature_set( - features = features or [], - not_features = not_features or [], - )] - return _flag_set(**kwargs) - -CROSSTOOL_DEFAULT_WARNINGS = [ - "-Wall", -] - -def _impl(ctx): - target_cpu = ctx.attr.cpu - toolchain_identifier = "emscripten-" + target_cpu - target_system_name = target_cpu + "-unknown-emscripten" - - host_system_name = "i686-unknown-linux-gnu" - - target_libc = "musl/js" - - abi_version = "emscripten_syscalls" - - compiler = "emscripten" - abi_libc_version = "default" - - cc_target_os = "emscripten" - - emscripten_dir = ctx.attr.emscripten_binaries.label.workspace_root - - nodejs_path = ctx.file.nodejs_bin.path - - builtin_sysroot = emscripten_dir + "/emscripten/cache/sysroot" - - emcc_script = "emcc.%s" % ctx.attr.script_extension - emcc_link_script = "emcc_link.%s" % ctx.attr.script_extension - emar_script = "emar.%s" % ctx.attr.script_extension - - ################################################################ - # Tools - ################################################################ - clang_tool = tool(path = emcc_script) - clif_match_tool = tool(path = "dummy_clif_matcher") - link_tool = tool(path = emcc_link_script) - archive_tool = tool(path = emar_script) - strip_tool = tool(path = "NOT_USED_STRIP_TOOL") - - #### Legacy tool paths (much of this is redundant with action_configs, but - #### these are still used for some things) - tool_paths = [ - tool_path(name = "ar", path = emar_script), - tool_path(name = "cpp", path = "/bin/false"), - tool_path(name = "gcc", path = emcc_script), - tool_path(name = "gcov", path = "/bin/false"), - tool_path(name = "ld", path = emcc_link_script), - tool_path(name = "nm", path = "NOT_USED"), - tool_path(name = "objdump", path = "/bin/false"), - tool_path(name = "strip", path = "NOT_USED"), - ] - - ################################################################ - # Action Configs - ################################################################ - - cpp_compile_action = action_config( - action_name = ACTION_NAMES.cpp_compile, - tools = [clang_tool], - ) - - cpp_module_compile_action = action_config( - action_name = ACTION_NAMES.cpp_module_compile, - tools = [clang_tool], - ) - - cpp_module_codegen_action = action_config( - action_name = ACTION_NAMES.cpp_module_codegen, - tools = [clang_tool], - ) - - clif_match_action = action_config( - action_name = ACTION_NAMES.clif_match, - tools = [clif_match_tool], - ) - - cpp_link_dynamic_library_action = action_config( - action_name = ACTION_NAMES.cpp_link_dynamic_library, - tools = [link_tool], - ) - - strip_action = action_config( - action_name = ACTION_NAMES.strip, - tools = [strip_tool], - ) - - preprocess_assemble_action = action_config( - action_name = ACTION_NAMES.preprocess_assemble, - tools = [clang_tool], - ) - - cpp_header_parsing_action = action_config( - action_name = ACTION_NAMES.cpp_header_parsing, - tools = [clang_tool], - ) - - cpp_link_static_library_action = action_config( - action_name = ACTION_NAMES.cpp_link_static_library, - enabled = True, - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = ["rcsD", "%{output_execpath}"], - expand_if_available = "output_execpath", - ), - ], - ), - flag_set( - flag_groups = [ - flag_group( - iterate_over = "libraries_to_link", - flag_groups = [ - flag_group( - flags = ["%{libraries_to_link.name}"], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "object_file", - ), - ), - flag_group( - flags = ["%{libraries_to_link.object_files}"], - iterate_over = "libraries_to_link.object_files", - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "object_file_group", - ), - ), - ], - expand_if_available = "libraries_to_link", - ), - ], - ), - flag_set( - flag_groups = [ - flag_group( - flags = ["@%{linker_param_file}"], - expand_if_available = "linker_param_file", - ), - ], - ), - ], - tools = [archive_tool], - ) - - c_compile_action = action_config( - action_name = ACTION_NAMES.c_compile, - tools = [clang_tool], - ) - - linkstamp_compile_action = action_config( - action_name = ACTION_NAMES.linkstamp_compile, - tools = [clang_tool], - ) - - assemble_action = action_config( - action_name = ACTION_NAMES.assemble, - tools = [clang_tool], - ) - - cpp_link_executable_action = action_config( - action_name = ACTION_NAMES.cpp_link_executable, - tools = [link_tool], - ) - - cpp_link_nodeps_dynamic_library_action = action_config( - action_name = ACTION_NAMES.cpp_link_nodeps_dynamic_library, - tools = [link_tool], - ) - - action_configs = [ - strip_action, - c_compile_action, - cpp_compile_action, - linkstamp_compile_action, - assemble_action, - preprocess_assemble_action, - cpp_header_parsing_action, - cpp_module_compile_action, - cpp_module_codegen_action, - cpp_link_executable_action, - cpp_link_dynamic_library_action, - cpp_link_nodeps_dynamic_library_action, - cpp_link_static_library_action, - clif_match_action, - ] - - all_compile_actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.clif_match, - ACTION_NAMES.lto_backend, - ] - - all_cpp_compile_actions = [ - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.clif_match, - ] - - preprocessor_compile_actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.clif_match, - ] - - all_link_actions = [ - ACTION_NAMES.cpp_link_executable, - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ] - - ################################################################ - # Features - ################################################################ - - features = [ - # This set of magic "feature"s are important configuration information for blaze. - feature(name = "no_legacy_features", enabled = True), - feature( - name = "has_configured_linker_path", - enabled = True, - ), - - # Blaze requests this feature by default, but we don't care. - feature(name = "dependency_file"), - - # Blaze requests this feature by default, but we don't care. - feature(name = "random_seed"), - - # Formerly "needsPic" attribute - feature(name = "supports_pic", enabled = False), - - # Blaze requests this feature by default. - # Blaze also tests if this feature is supported, before setting the "pic" build-variable. - feature(name = "pic"), - - # Blaze requests this feature by default. - # Blaze also tests if this feature is supported before setting preprocessor_defines - # (...but why?) - feature(name = "preprocessor_defines"), - - # Blaze requests this feature by default. - # Blaze also tests if this feature is supported before setting includes. (...but why?) - feature(name = "include_paths"), - - # Blaze tests if this feature is enabled in order to create implicit - # "nodeps" .so outputs from cc_library rules. - feature(name = "supports_dynamic_linker", enabled = False), - - # Blaze requests this feature when linking a cc_binary which is - # "dynamic" aka linked against nodeps-dynamic-library cc_library - # outputs. - feature(name = "dynamic_linking_mode"), - - #### Configuration features - feature( - name = "crosstool_cpu", - enabled = True, - implies = ["crosstool_cpu_" + target_cpu], - ), - feature( - name = "crosstool_cpu_asmjs", - provides = ["variant:crosstool_cpu"], - ), - feature( - name = "crosstool_cpu_wasm", - provides = ["variant:crosstool_cpu"], - ), - - # These 3 features will be automatically enabled by blaze in the - # corresponding build mode. - feature( - name = "opt", - provides = ["variant:crosstool_build_mode"], - ), - feature( - name = "dbg", - provides = ["variant:crosstool_build_mode"], - ), - feature( - name = "fastbuild", - provides = ["variant:crosstool_build_mode"], - ), - - # Feature to prevent 'command line too long' issues - feature( - name = "archive_param_file", - enabled = True, - ), - feature( - name = "compiler_param_file", - enabled = True, - ), - - #### User-settable features - - # Set if enabling exceptions. - feature(name = "exceptions"), - - # Set if enabling wasm_exceptions. - feature(name = "wasm_exceptions"), - - # This feature overrides the default optimization to prefer execution speed - # over binary size (like clang -O3). - feature( - name = "optimized_for_speed", - provides = ["variant:crosstool_optimization_mode"], - ), - - # This feature overrides the default optimization to prefer binary size over - # execution speed (like clang -Oz). - feature( - name = "optimized_for_size", - provides = ["variant:crosstool_optimization_mode"], - ), - - # Convenience aliases / alt-spellings. - feature( - name = "optimize_for_speed", - implies = ["optimized_for_speed"], - ), - feature( - name = "optimize_for_size", - implies = ["optimized_for_size"], - ), - - # This feature allows easier use of profiling tools by preserving mangled - # C++ names. This does everything profiling_funcs does and more. - feature(name = "profiling"), - - # This feature emits only enough debug info for function names to appear - # in profiles. - feature(name = "profiling_funcs"), - - # This feature allows source maps to be generated. - feature( - name = "source_maps", - implies = ["full_debug_info"], - ), - feature( - name = "dwarf_debug_info", - implies = ["profiling"], - ), - - # Turns on full debug info (-g4). - feature(name = "full_debug_info"), - - # Enables the use of "Emscripten" Pthread implementation. - # https://kripken.github.io/emscripten-site/docs/porting/pthreads.html - # https://github.com/kripken/emscripten/wiki/Pthreads-with-WebAssembly - feature(name = "use_pthreads"), - - # If enabled, the runtime will exit when main() completes. - feature(name = "exit_runtime"), - - # Primarily for toolchain maintainers: - feature(name = "emcc_debug"), - feature(name = "emcc_debug_link"), - feature( - name = "llvm_backend", - requires = [feature_set(features = ["crosstool_cpu_wasm"])], - enabled = True, - ), - - # Remove once flag is flipped. - # See https://github.com/bazelbuild/bazel/issues/7687 - feature( - name = "do_not_split_linking_cmdline", - ), - - # Adds simd support, only available with the llvm backend. - feature( - name = "wasm_simd", - requires = [feature_set(features = ["llvm_backend"])], - ), - # Adds relaxed-simd support, only available with the llvm backend. - feature( - name = "wasm_relaxed_simd", - requires = [feature_set(features = ["llvm_backend"])], - ), - feature( - name = "precise_long_double_printf", - enabled = True, - ), - feature( - name = "wasm_warnings_as_errors", - enabled = False, - ), - - # ASan and UBSan. See also: - # https://emscripten.org/docs/debugging/Sanitizers.html - feature(name = "wasm_asan"), - feature(name = "wasm_ubsan"), - feature( - name = "output_format_js", - enabled = True, - ), - feature( - name = "wasm_standalone", - ), - ] - - crosstool_default_flag_sets = [ - # Compile, Link, and CC_FLAGS make variable - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.clif_match, - ACTION_NAMES.cpp_link_executable, - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ], - flag_groups = [ - flag_group( - flags = ["--sysroot=%{sysroot}"], - expand_if_available = "sysroot", - ), - ], - ), - # Compile + Link - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.clif_match, - ACTION_NAMES.cpp_link_executable, - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ], - # This forces color diagnostics even on Forge (where we don't have an - # attached terminal). - flags = [ - "-fdiagnostics-color", - ], - ), - # C++ compiles (and implicitly link) - flag_set( - actions = all_cpp_compile_actions, - flags = [ - "-fno-exceptions", - ], - not_features = ["exceptions", "wasm_exceptions"], - ), - flag_set( - actions = all_cpp_compile_actions, - flags = [ - "-fexceptions", - ], - features = ["exceptions"], - ), - flag_set( - actions = all_cpp_compile_actions + - all_link_actions, - flags = [ - "-fwasm-exceptions", - ], - features = ["wasm_exceptions"], - ), - # All compiles (and implicitly link) - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = [ - "-fno-strict-aliasing", - "-funsigned-char", - "-no-canonical-prefixes", - ], - ), - # Language Features - flag_set( - actions = all_cpp_compile_actions, - flags = ["-std=gnu++17", "-nostdinc", "-nostdinc++"], - ), - - # Emscripten-specific settings: - flag_set( - actions = all_compile_actions + all_link_actions, - flags = ["-s", "WASM=0"], - features = ["crosstool_cpu_asmjs"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = ["-s", "USE_PTHREADS=1"], - features = ["use_pthreads"], - ), - flag_set( - actions = all_link_actions, - flags = ["-s", "EXIT_RUNTIME=1"], - features = ["exit_runtime"], - ), - flag_set( - actions = all_compile_actions + all_link_actions, - flags = ["-pthread"], - features = ["llvm_backend", "use_pthreads"], - ), - flag_set( - actions = all_compile_actions + all_link_actions, - flags = ["-msimd128"], - features = ["wasm_simd"], - ), - flag_set( - actions = all_compile_actions + all_link_actions, - flags = ["-msimd128", "-mrelaxed-simd"], - features = ["wasm_relaxed_simd"], - ), - flag_set( - actions = all_link_actions, - flags = ["-s", "PRINTF_LONG_DOUBLE=1"], - features = ["precise_long_double_printf"], - ), - flag_set( - actions = all_link_actions, - flags = ["--oformat=js"], - features = ["output_format_js"], - ), - - # Opt - flag_set( - actions = preprocessor_compile_actions, - flags = ["-DNDEBUG"], - features = ["opt"], - ), - flag_set( - actions = all_compile_actions, - flags = ["-fomit-frame-pointer"], - features = ["opt"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = ["-O2"], - features = ["opt"], - ), - - # Users can override opt-level with semantic names... - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = ["-Oz"], - features = ["optimized_for_size", "opt"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = ["-O3"], - features = ["optimized_for_speed", "opt"], - ), - - # Fastbuild - flag_set( - actions = all_compile_actions, - flags = ["-fomit-frame-pointer"], - features = ["fastbuild"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = ["-O0"], - features = ["fastbuild"], - ), - - # Dbg - flag_set( - actions = all_compile_actions, - flags = ["-fno-omit-frame-pointer"], - features = ["dbg"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = ["-g", "-O0"], - features = ["dbg"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = [ - "-g", - "-fsanitize=address", - "-O1", - "-DADDRESS_SANITIZER=1", - "-fno-omit-frame-pointer", - ], - features = ["wasm_asan"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = [ - "-g4", - "-fsanitize=undefined", - "-O1", - "-DUNDEFINED_BEHAVIOR_SANITIZER=1", - "-fno-omit-frame-pointer", - "-fno-sanitize=vptr", - ], - features = ["wasm_ubsan"], - ), - - # Profiling provides full debug info and a special --profiling flag - # to control name mangling - flag_set( - actions = all_link_actions, - flags = ["--profiling"], - features = ["profiling"], - ), - flag_set( - actions = all_link_actions, - flags = ["--profiling_funcs"], - features = ["profiling_funcs"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = ["-g4"], - features = ["full_debug_info"], - ), - flag_set( - actions = all_link_actions, - flags = ["-gseparate-dwarf"], - features = ["dwarf_debug_info"], - ), - flag_set( - actions = all_compile_actions + - all_link_actions, - flags = ["-fdebug-compilation-dir=."], - features = ["dwarf_debug_info"], - ), - # Generic warning flag list - flag_set( - actions = all_compile_actions, - flags = CROSSTOOL_DEFAULT_WARNINGS, - ), - - # Defines and Includes and Paths and such - flag_set( - actions = all_compile_actions, - flag_groups = [ - flag_group(flags = ["-fPIC"], expand_if_available = "pic"), - ], - ), - flag_set( - actions = preprocessor_compile_actions, - flag_groups = [ - flag_group( - flags = ["-D%{preprocessor_defines}"], - iterate_over = "preprocessor_defines", - ), - ], - ), - flag_set( - actions = preprocessor_compile_actions, - flag_groups = [ - flag_group( - flags = ["-include", "%{includes}"], - iterate_over = "includes", - expand_if_available = "includes", - ), - ], - ), - flag_set( - actions = preprocessor_compile_actions, - flag_groups = [ - flag_group( - flags = ["-iquote", "%{quote_include_paths}"], - iterate_over = "quote_include_paths", - ), - flag_group( - flags = ["-I%{include_paths}"], - iterate_over = "include_paths", - ), - flag_group( - flags = ["-isystem", "%{system_include_paths}"], - iterate_over = "system_include_paths", - ), - ], - ), - - ## Linking options (not libs -- those go last) - - # Generic link options - flag_set( - actions = [ - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ], - flags = ["-shared"], - ), - - # Linker search paths and objects: - flag_set( - actions = all_link_actions, - flag_groups = [ - flag_group( - iterate_over = "runtime_library_search_directories", - flag_groups = [ - flag_group( - flags = [ - "-Wl,-rpath,$EXEC_ORIGIN/%{runtime_library_search_directories}", - ], - expand_if_true = "is_cc_test", - ), - flag_group( - flags = [ - "-Wl,-rpath,$ORIGIN/%{runtime_library_search_directories}", - ], - expand_if_false = "is_cc_test", - ), - ], - expand_if_available = "runtime_library_search_directories", - ), - ], - ), - flag_set( - actions = all_link_actions, - flag_groups = [ - flag_group( - flags = ["-L%{library_search_directories}"], - iterate_over = "library_search_directories", - expand_if_available = "library_search_directories", - ), - ], - ), - flag_set( - actions = all_link_actions, - flag_groups = [ - flag_group( - # This is actually a list of object files from the linkstamp steps - flags = ["%{linkstamp_paths}"], - iterate_over = "linkstamp_paths", - expand_if_available = "linkstamp_paths", - ), - ], - ), - flag_set( - actions = all_link_actions, - flag_groups = [ - flag_group( - flags = ["@%{thinlto_param_file}"], - expand_if_available = "libraries_to_link", - expand_if_true = "thinlto_param_file", - ), - flag_group( - iterate_over = "libraries_to_link", - flag_groups = [ - flag_group( - flags = ["-Wl,--start-lib"], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "object_file_group", - ), - ), - flag_group( - flags = ["-Wl,-whole-archive"], - expand_if_true = "libraries_to_link.is_whole_archive", - ), - flag_group( - flags = ["%{libraries_to_link.object_files}"], - iterate_over = "libraries_to_link.object_files", - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "object_file_group", - ), - ), - flag_group( - flags = ["%{libraries_to_link.name}"], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "object_file", - ), - ), - flag_group( - flags = ["%{libraries_to_link.name}"], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "interface_library", - ), - ), - flag_group( - flags = ["%{libraries_to_link.name}"], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "static_library", - ), - ), - flag_group( - flags = ["-l%{libraries_to_link.name}"], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "dynamic_library", - ), - ), - flag_group( - flags = ["-l:%{libraries_to_link.name}"], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "versioned_dynamic_library", - ), - ), - flag_group( - flags = ["-Wl,-no-whole-archive"], - expand_if_true = "libraries_to_link.is_whole_archive", - ), - flag_group( - flags = ["-Wl,--end-lib"], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "object_file_group", - ), - ), - ], - expand_if_available = "libraries_to_link", - ), - ], - ), - - # Configure the header parsing and preprocessing. - flag_set( - actions = [ACTION_NAMES.cpp_header_parsing], - flags = ["-xc++-header", "-fsyntax-only"], - features = ["parse_headers"], - ), - - # Note: user compile flags should be nearly last -- you probably - # don't want to put any more features after this! - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.clif_match, - ], - flag_groups = [ - flag_group( - flags = ["%{user_compile_flags}"], - iterate_over = "user_compile_flags", - expand_if_available = "user_compile_flags", - ), - ], - ), - flag_set( - actions = all_link_actions, - flag_groups = [ - flag_group( - flags = ["%{user_link_flags}"], - iterate_over = "user_link_flags", - expand_if_available = "user_link_flags", - ), - ], - ), - ## Options which need to go late -- after all the user options -- go here. - flag_set( - # One might hope that these options would only be needed for C++ - # compiles. But, sadly, users compile ".c" files with custom - # copts=["-x", "c++"], and expect that to be able to find C++ stdlib - # headers. It might be worth pondering how blaze could support this sort - # of use-case better. - actions = preprocessor_compile_actions + - [ACTION_NAMES.cc_flags_make_variable], - flags = [ - "-iwithsysroot" + "/include/c++/v1", - "-iwithsysroot" + "/include/compat", - "-iwithsysroot" + "/include", - "-isystem", - emscripten_dir + "/lib/clang/22/include", - ], - ), - # Inputs and outputs - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.clif_match, - ], - flag_groups = [ - flag_group( - flags = ["-MD", "-MF", "%{dependency_file}"], - expand_if_available = "dependency_file", - ), - ], - ), - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.clif_match, - ], - flag_groups = [ - flag_group( - flags = ["-c", "%{source_file}"], - expand_if_available = "source_file", - ), - ], - ), - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.clif_match, - ], - flag_groups = [ - flag_group( - flags = ["-S"], - expand_if_available = "output_assembly_file", - ), - flag_group( - flags = ["-E"], - expand_if_available = "output_preprocess_file", - ), - flag_group( - flags = ["-o", "%{output_file}"], - expand_if_available = "output_file", - ), - ], - ), - flag_set( - actions = all_link_actions, - flag_groups = [ - flag_group( - flags = ["-o", "%{output_execpath}"], - expand_if_available = "output_execpath", - ), - ], - ), - # And finally, the params file! - flag_set( - actions = all_link_actions, - flag_groups = [ - flag_group( - flags = ["@%{linker_param_file}"], - expand_if_available = "linker_param_file", - ), - ], - ), - flag_set( - actions = all_compile_actions, - flags = [ - "-Wno-builtin-macro-redefined", - # Genrules may not escape quotes enough for these, so - # don't put them into $(CC_FLAGS): - '-D__DATE__="redacted"', - '-D__TIMESTAMP__="redacted"', - '-D__TIME__="redacted"', - ], - ), - flag_set( - actions = all_compile_actions, - flags = ["-Werror"], - features = ["wasm_warnings_as_errors"], - ), - flag_set( - actions = all_link_actions, - flags = ["-sSTANDALONE_WASM"], - features = ["wasm_standalone"], - ), - ] - - crosstool_default_env_sets = [ - # Globals - env_set( - actions = all_compile_actions + - all_link_actions + - [ACTION_NAMES.cpp_link_static_library], - env_entries = [ - env_entry( - key = "EM_BIN_PATH", - value = emscripten_dir, - ), - env_entry( - key = "EM_CONFIG_PATH", - value = ctx.file.em_config.path, - ), - env_entry( - key = "NODE_JS_PATH", - value = nodejs_path, - ), - ], - ), - # Use llvm backend. Off by default, enabled via --features=llvm_backend - env_set( - actions = all_compile_actions + - all_link_actions + - [ACTION_NAMES.cpp_link_static_library], - env_entries = [env_entry(key = "EMCC_WASM_BACKEND", value = "1")], - with_features = [with_feature_set(features = ["llvm_backend"])], - ), - # Debug compile and link. Off by default, enabled via --features=emcc_debug - env_set( - actions = all_compile_actions, - env_entries = [env_entry(key = "EMCC_DEBUG", value = "1")], - with_features = [with_feature_set(features = ["emcc_debug"])], - ), - - # Debug only link step. Off by default, enabled via --features=emcc_debug_link - env_set( - actions = all_link_actions, - env_entries = [env_entry(key = "EMCC_DEBUG", value = "1")], - with_features = [ - with_feature_set(features = ["emcc_debug"]), - with_feature_set(features = ["emcc_debug_link"]), - ], - ), - ] - - crosstool_default_flags_feature = feature( - name = "crosstool_default_flags", - enabled = True, - flag_sets = crosstool_default_flag_sets, - env_sets = crosstool_default_env_sets, - ) - - features.append(crosstool_default_flags_feature) - - cxx_builtin_include_directories = [ - emscripten_dir + "/emscripten/cache/sysroot/include/c++/v1", - emscripten_dir + "/emscripten/cache/sysroot/include/compat", - emscripten_dir + "/emscripten/cache/sysroot/include", - emscripten_dir + "/lib/clang/21/include", - ] - - artifact_name_patterns = [] - - make_variables = [] - - return cc_common.create_cc_toolchain_config_info( - ctx = ctx, - features = features, - action_configs = action_configs, - artifact_name_patterns = artifact_name_patterns, - cxx_builtin_include_directories = cxx_builtin_include_directories, - toolchain_identifier = toolchain_identifier, - host_system_name = host_system_name, - target_system_name = target_system_name, - target_cpu = target_cpu, - target_libc = target_libc, - compiler = compiler, - abi_version = abi_version, - abi_libc_version = abi_libc_version, - tool_paths = tool_paths, - make_variables = make_variables, - builtin_sysroot = builtin_sysroot, - cc_target_os = cc_target_os, - ) - -emscripten_cc_toolchain_config_rule = rule( - implementation = _impl, - attrs = { - "cpu": attr.string(mandatory = True, values = ["asmjs", "wasm"]), - "em_config": attr.label(mandatory = True, allow_single_file = True), - "emscripten_binaries": attr.label(mandatory = True, cfg = "exec"), - "nodejs_bin": attr.label(mandatory = True, allow_single_file = True), - "script_extension": attr.string(mandatory = True, values = ["sh", "bat"]), - }, - provides = [CcToolchainConfigInfo], -) diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_binary.py b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_binary.py deleted file mode 100644 index d7d614237..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_binary.py +++ /dev/null @@ -1,56 +0,0 @@ -"""Unpackages a bazel emscripten archive for use in a bazel BUILD rule. - -This script will take a tar archive containing the output of the emscripten -toolchain. This file contains any output files produced by a wasm_cc_binary or a -cc_binary built with --config=wasm. The files are extracted into the given -output paths. - -The contents of the archive are expected to match the given outputs extnames. - -This script and its accompanying Bazel rule should allow you to extract a -WebAssembly binary into a larger web application. -""" - -import argparse -import os -import tarfile - - -def ensure(f): - if not os.path.exists(f): - with open(f, 'w'): - pass - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('--archive', help='The archive to extract from.') - parser.add_argument('--outputs', help='Comma separated list of files that should be extracted from the archive. Only the extname has to match a file in the archive.') - parser.add_argument('--allow_empty_outputs', help='If an output listed in --outputs does not exist, create it anyways.', action='store_true') - args = parser.parse_args() - - args.archive = os.path.normpath(args.archive) - args.outputs = args.outputs.split(",") - - tar = tarfile.open(args.archive) - - for member in tar.getmembers(): - extname = '.' + member.name.split('.', 1)[1] - for idx, output in enumerate(args.outputs): - if output.endswith(extname): - member_file = tar.extractfile(member) - with open(output, "wb") as output_file: - output_file.write(member_file.read()) - args.outputs.pop(idx) - break - - for output in args.outputs: - extname = '.' + output.split('.', 1)[1] - if args.allow_empty_outputs: - ensure(output) - else: - print("[ERROR] Archive does not contain file with extname: %s" % extname) - - -if __name__ == '__main__': - main() diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_cc_binary.bzl b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_cc_binary.bzl deleted file mode 100644 index 3cc601485..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_cc_binary.bzl +++ /dev/null @@ -1,231 +0,0 @@ -"""wasm_cc_binary rule for compiling C++ targets to WebAssembly. -""" - -def _wasm_transition_impl(settings, attr): - _ignore = (settings, attr) - - features = list(settings["//command_line_option:features"]) - linkopts = list(settings["//command_line_option:linkopt"]) - - if attr.threads == "emscripten": - # threads enabled - features.append("use_pthreads") - elif attr.threads == "off": - # threads disabled - features.append("-use_pthreads") - - if attr.exit_runtime == True: - features.append("exit_runtime") - - if attr.backend == "llvm": - features.append("llvm_backend") - elif attr.backend == "emscripten": - features.append("-llvm_backend") - - if attr.simd: - features.append("wasm_simd") - - platform = "@emsdk//:platform_wasm" - if attr.standalone: - platform = "@emsdk//:platform_wasi" - features.append("wasm_standalone") - - return { - "//command_line_option:compiler": "emscripten", - "//command_line_option:cpu": "wasm", - "//command_line_option:features": features, - "//command_line_option:dynamic_mode": "off", - "//command_line_option:linkopt": linkopts, - "//command_line_option:platforms": [platform], - # This is hardcoded to an empty cc_library because the malloc library - # is implicitly added by the emscripten toolchain - "//command_line_option:custom_malloc": "@emsdk//emscripten_toolchain:malloc", - } - -_wasm_transition = transition( - implementation = _wasm_transition_impl, - inputs = [ - "//command_line_option:features", - "//command_line_option:linkopt", - ], - outputs = [ - "//command_line_option:compiler", - "//command_line_option:cpu", - "//command_line_option:features", - "//command_line_option:dynamic_mode", - "//command_line_option:linkopt", - "//command_line_option:platforms", - "//command_line_option:custom_malloc", - ], -) - -_ALLOW_OUTPUT_EXTNAMES = [ - ".js", - ".wasm", - ".wasm.map", - ".worker.js", - ".js.mem", - ".data", - ".fetch.js", - ".js.symbols", - ".wasm.debug.wasm", - ".html", - ".aw.js", -] - -_WASM_BINARY_COMMON_ATTRS = { - "backend": attr.string( - default = "_default", - values = ["_default", "emscripten", "llvm"], - ), - "cc_target": attr.label( - cfg = _wasm_transition, - mandatory = True, - ), - "exit_runtime": attr.bool( - default = False, - ), - "threads": attr.string( - default = "_default", - values = ["_default", "emscripten", "off"], - ), - "simd": attr.bool( - default = False, - ), - "standalone": attr.bool( - default = False, - ), - "_allowlist_function_transition": attr.label( - default = "@bazel_tools//tools/allowlists/function_transition_allowlist", - ), - "_wasm_binary_extractor": attr.label( - executable = True, - allow_files = True, - cfg = "exec", - default = Label("@emsdk//emscripten_toolchain:wasm_binary"), - ), -} - -def _wasm_cc_binary_impl(ctx): - args = ctx.actions.args() - cc_target = ctx.attr.cc_target[0] - - for output in ctx.outputs.outputs: - valid_extname = False - for allowed_extname in _ALLOW_OUTPUT_EXTNAMES: - if output.path.endswith(allowed_extname): - valid_extname = True - break - if not valid_extname: - fail("Invalid output '{}'. Allowed extnames: {}".format(output.basename, ", ".join(_ALLOW_OUTPUT_EXTNAMES))) - - args.add_all("--archive", ctx.files.cc_target) - args.add_joined("--outputs", ctx.outputs.outputs, join_with = ",") - - ctx.actions.run( - inputs = ctx.files.cc_target, - outputs = ctx.outputs.outputs, - arguments = [args], - executable = ctx.executable._wasm_binary_extractor, - ) - - return [ - DefaultInfo( - files = depset(ctx.outputs.outputs), - # This is needed since rules like web_test usually have a data - # dependency on this target. - data_runfiles = ctx.runfiles(transitive_files = depset(ctx.outputs.outputs)), - ), - OutputGroupInfo(_wasm_tar = cc_target.files), - ] - -def _wasm_cc_binary_legacy_impl(ctx): - cc_target = ctx.attr.cc_target[0] - outputs = [ - ctx.outputs.loader, - ctx.outputs.wasm, - ctx.outputs.map, - ctx.outputs.mem, - ctx.outputs.fetch, - ctx.outputs.worker, - ctx.outputs.data, - ctx.outputs.symbols, - ctx.outputs.dwarf, - ctx.outputs.html, - ctx.outputs.audio_worklet, - ] - - args = ctx.actions.args() - args.add("--allow_empty_outputs") - args.add_all("--archive", ctx.files.cc_target) - args.add_joined("--outputs", outputs, join_with = ",") - - ctx.actions.run( - inputs = ctx.files.cc_target, - outputs = outputs, - arguments = [args], - executable = ctx.executable._wasm_binary_extractor, - ) - - return [ - DefaultInfo( - executable = ctx.outputs.wasm, - files = depset(outputs), - # This is needed since rules like web_test usually have a data - # dependency on this target. - data_runfiles = ctx.runfiles(transitive_files = depset(outputs)), - ), - OutputGroupInfo(_wasm_tar = cc_target.files), - ] - -_wasm_cc_binary = rule( - implementation = _wasm_cc_binary_impl, - attrs = dict( - _WASM_BINARY_COMMON_ATTRS, - outputs = attr.output_list( - allow_empty = False, - mandatory = True, - ), - ), -) - -def _wasm_binary_legacy_outputs(name, cc_target): - basename = cc_target.name - basename = basename.split(".")[0] - outputs = { - "loader": "{}/{}.js".format(name, basename), - "wasm": "{}/{}.wasm".format(name, basename), - "map": "{}/{}.wasm.map".format(name, basename), - "mem": "{}/{}.js.mem".format(name, basename), - "fetch": "{}/{}.fetch.js".format(name, basename), - "worker": "{}/{}.worker.js".format(name, basename), - "data": "{}/{}.data".format(name, basename), - "symbols": "{}/{}.js.symbols".format(name, basename), - "dwarf": "{}/{}.wasm.debug.wasm".format(name, basename), - "html": "{}/{}.html".format(name, basename), - "audio_worklet": "{}/{}.aw.js".format(name, basename) - } - - return outputs - -_wasm_cc_binary_legacy = rule( - implementation = _wasm_cc_binary_legacy_impl, - attrs = _WASM_BINARY_COMMON_ATTRS, - outputs = _wasm_binary_legacy_outputs, -) - -# Wraps a C++ Blaze target, extracting the appropriate files. -# -# This rule will transition to the emscripten toolchain in order -# to build the the cc_target as a WebAssembly binary. -# -# Args: -# name: The name of the rule. -# cc_target: The cc_binary or cc_library to extract files from. -def wasm_cc_binary(outputs = None, **kwargs): - # for backwards compatibility if no outputs are set the deprecated - # implementation is used. - if not outputs: - _wasm_cc_binary_legacy(**kwargs) - else: - _wasm_cc_binary(outputs = outputs, **kwargs) diff --git a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_rules.bzl b/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_rules.bzl deleted file mode 100644 index f8dce22ee..000000000 --- a/emsdk-cache/emsdk-main/bazel/emscripten_toolchain/wasm_rules.bzl +++ /dev/null @@ -1,6 +0,0 @@ -"""Rules related to C++ and WebAssembly. -""" - -load(":wasm_cc_binary.bzl", _wasm_cc_binary = "wasm_cc_binary") - -wasm_cc_binary = _wasm_cc_binary diff --git a/emsdk-cache/emsdk-main/bazel/hello-world/hello-world-simd.cc b/emsdk-cache/emsdk-main/bazel/hello-world/hello-world-simd.cc deleted file mode 100644 index 649adab20..000000000 --- a/emsdk-cache/emsdk-main/bazel/hello-world/hello-world-simd.cc +++ /dev/null @@ -1,10 +0,0 @@ -#include - -void multiply_arrays(int* out, int* in_a, int* in_b, int size) { - for (int i = 0; i < size; i += 4) { - v128_t a = wasm_v128_load(&in_a[i]); - v128_t b = wasm_v128_load(&in_b[i]); - v128_t prod = wasm_i32x4_mul(a, b); - wasm_v128_store(&out[i], prod); - } -} diff --git a/emsdk-cache/emsdk-main/bazel/hello-world/hello-world.cc b/emsdk-cache/emsdk-main/bazel/hello-world/hello-world.cc deleted file mode 100644 index ee72c5317..000000000 --- a/emsdk-cache/emsdk-main/bazel/hello-world/hello-world.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include - -int main(int argc, char** argv) { - std::cout << "hello world!" << std::endl; - return 0; -} diff --git a/emsdk-cache/emsdk-main/bazel/remote_emscripten_repository.bzl b/emsdk-cache/emsdk-main/bazel/remote_emscripten_repository.bzl deleted file mode 100644 index 819a04808..000000000 --- a/emsdk-cache/emsdk-main/bazel/remote_emscripten_repository.bzl +++ /dev/null @@ -1,148 +0,0 @@ -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -load(":emscripten_build_file.bzl", "EMSCRIPTEN_BUILD_FILE_CONTENT_TEMPLATE") -load(":revisions.bzl", "EMSCRIPTEN_TAGS") -load("//emscripten_toolchain:toolchain.bzl", "emscripten_cc_toolchain_config_rule") - -def remote_emscripten_repository( - name, - bin_extension, - **kwargs, -): - """Imports an Emscripten from an http archive - - Args: - name: A unique name for this Emscripten repository. - bin_extension: Extension for the binaries in this Emscripten repository - **kwargs: Args for http_archive. Refer to http_archive documentation for more info. - """ - http_archive( - name = name, - build_file_content = EMSCRIPTEN_BUILD_FILE_CONTENT_TEMPLATE.format(bin_extension = bin_extension), - **kwargs - ) - -def emscripten_toolchain_name(name): - return "emscripten_{}".format(name) - -def _get_name_and_target(name): - return name, ":" + name - -def create_toolchains(name, repo_name, exec_compatible_with): - """Creates toolchain definition for an Emscripten - - Register the toolchains defined by this macro via - `register_toolchains("//:cc-toolchain-wasm-")` - - Args: - name: A unique name for this Emscripten toolchain - repo_name: The name of the Emscripten repository for this toolchain - exec_compatible_with: Execute platform constraints for the Emscripten toolchain associated - with this repository. - **kwargs: Args for http_archive. Refer to http_archive documentation for more info. - """ - common_files_name, common_files_target = _get_name_and_target("common_files_" + name) - compiler_files_name, compiler_files_target = _get_name_and_target("compiler_files_" + name) - linker_files_name, linker_files_target = _get_name_and_target("linker_files_" + name) - ar_files_name, ar_files_target = _get_name_and_target("ar_files_" + name) - all_files_name, all_files_target = _get_name_and_target("all_files_" + name) - cc_wasm_name, cc_wasm_target = _get_name_and_target("cc-compiler-wasm-" + name) - - wasm_name = "wasm-" + name - - # These are file groups defined by the build_file_content on the Emscripten http_archive - remote_repo = "@{}//".format(repo_name) - repo_compiler_files_target = remote_repo + ":compiler_files" - repo_linker_files_target = remote_repo + ":linker_files" - repo_ar_files_target = remote_repo + ":ar_files" - - native.filegroup( - name = common_files_name, - srcs = [ - "@emscripten_cache//:emscripten_config", - "@emsdk//emscripten_toolchain:env.sh", - "@emsdk//emscripten_toolchain:env.bat", - "@nodejs//:node_files", - ], - ) - - native.filegroup( - name = compiler_files_name, - srcs = [ - "@emsdk//emscripten_toolchain:emcc.sh", - "@emsdk//emscripten_toolchain:emcc.bat", - repo_compiler_files_target, - common_files_target, - ], - ) - - native.filegroup( - name = linker_files_name, - srcs = [ - "@emsdk//emscripten_toolchain:emcc_link.sh", - "@emsdk//emscripten_toolchain:emcc_link.bat", - "link_wrapper.py", - repo_linker_files_target, - common_files_target, - ], - ) - - native.filegroup( - name = ar_files_name, - srcs = [ - "@emsdk//emscripten_toolchain:emar.sh", - "@emsdk//emscripten_toolchain:emar.bat", - repo_ar_files_target, - common_files_target, - ], - ) - - native.filegroup( - name = all_files_name, - srcs = [ - ar_files_target, - compiler_files_target, - linker_files_target, - ], - ) - - emscripten_cc_toolchain_config_rule( - name = wasm_name, - cpu = "wasm", - em_config = "@emscripten_cache//:emscripten_config", - emscripten_binaries = repo_compiler_files_target, - nodejs_bin = "@nodejs//:node", - script_extension = select({ - "@bazel_tools//src/conditions:host_windows": "bat", - "//conditions:default": "sh", - }), - ) - - native.cc_toolchain( - name = cc_wasm_name, - all_files = all_files_target, - ar_files = ar_files_target, - as_files = ":empty", - compiler_files = compiler_files_target, - dwp_files = ":empty", - linker_files = linker_files_target, - objcopy_files = ":empty", - strip_files = ":empty", - toolchain_config = wasm_name, - toolchain_identifier = "emscripten-wasm-" + name, - ) - - native.toolchain( - name = "cc-toolchain-wasm-" + name, - target_compatible_with = ["@platforms//cpu:wasm32"], - exec_compatible_with = exec_compatible_with, - toolchain = cc_wasm_target, - toolchain_type = "@bazel_tools//tools/cpp:toolchain_type", - ) - - native.cc_toolchain_suite( - name = "everything-" + name, - toolchains = { - "wasm": cc_wasm_target, - "wasm|emscripten": cc_wasm_target, - }, - ) diff --git a/emsdk-cache/emsdk-main/bazel/revisions.bzl b/emsdk-cache/emsdk-main/bazel/revisions.bzl deleted file mode 100644 index 4f6ca9648..000000000 --- a/emsdk-cache/emsdk-main/bazel/revisions.bzl +++ /dev/null @@ -1,805 +0,0 @@ -# This file is automatically updated by emsdk/scripts/update_bazel_workspace.py -# DO NOT MODIFY - -EMSCRIPTEN_TAGS = { - "4.0.13": struct( - hash = "32b8ae819674cb42b8ac2191afeb9571e33ad5e2", - sha_linux = "2ad887035e3e5cac78abcaeca3b3881897f03b9919d008cbc0ef41d7641247c9", - sha_linux_arm64 = "675156bd626c7b19d4f2271ea8ffa77a235d9b0a031116632e53b374cf23754c", - sha_mac = "657cbd01e84f0a33cb7a1379baecd18a7d96883222a3a99b43919d8bb2374f55", - sha_mac_arm64 = "12ac26e298ef973207eba9332e28da375ec2ba1d32e68e0d8b32de3c886a2e39", - sha_win = "a363d6e92dcaf0024d378f1faabb61a139d9152a796f66a475a48e33e90f6adb", - ), - "4.0.12": struct( - hash = "209b886304498eff50dd835850dc5715803401ed", - sha_linux = "1c303712707a91b88f743b0ad6dd1544c289e614844396698a2510a66c5608f1", - sha_linux_arm64 = "2c503d031d2ad2b13c6e4fe09f104fe50c5d1319feaa2b3d19d4e4608435fbb8", - sha_mac = "c85830f151ec8eebec6bb2344e3eed942bc7b5dc91b146326635f9f71af459f2", - sha_mac_arm64 = "853dff1a8451b54ff7cdd95f923851dd9b58ab36873b7b600d16243a5fb6d907", - sha_win = "7b7e58fbd35a78ddf9a2a4a3f6215857bf2342942c429cdf540a2251540cb845", - ), - "4.0.11": struct( - hash = "7033fec38817ec01909b044ea0193ddd5057255c", - sha_linux = "f38e70b53be587e7c757f375b3452e259c70130d4b40db3213c95b7ae321f5d7", - sha_linux_arm64 = "42020e4db200ac366a3e91ac2fccc04ee0ffc090cd2d5986c892b27f39172bb9", - sha_mac = "4169811f9682f54ae5c9d0662d0a4dd4318abab5d3d0473fa54007f515a8cdea", - sha_mac_arm64 = "09554371e3941306d047d67618532e5366ba6c9b5bda1a504a917bfbabc5d414", - sha_win = "bd2094ca9bde5df25020a46ece7f56b622d1d22214fbd12950b01b952dd40084", - ), - "4.0.10": struct( - hash = "8103ffedfb0c42d231c6af6859a5a1a832260b43", - sha_linux = "0183f887b56c3f8d4b45826cb49856a3324afb66236ad3c13944c0fd2550cbbc", - sha_linux_arm64 = "0679f459118d80163d0712b0abda00cbc97a90cddf1dcefa9efb1bf89f67baed", - sha_mac = "02f3179f703b4d196a679897b430c1eeeb1d5f9aeba9b435b04ba3f526f7e8e0", - sha_mac_arm64 = "c744ffe06ffed55cd8dae42862b7646f15550c7decd47a48d09a474af83732b0", - sha_win = "1a66825e85fda039f57d39c98ae2bdb96a18e53745159e9599f69679be18439f", - ), - "4.0.9": struct( - hash = "cb2a69bce627bd2247624c71fc12907cb8785d2f", - sha_linux = "c6fd245138e6bbdd8349963cb4045c557d657e4be0ea44155375633c689c8be9", - sha_linux_arm64 = "872d7f5870f1bfc523a446ca66ab1b47009a96be33c398dbbb12a56597e46ab5", - sha_mac = "7efb0a6ddcb915aeca9f8685db909ae7799452894876fc1223a78d5c3288ff2d", - sha_mac_arm64 = "b97f3cda61211dd83b31ef9ea92e83d416a9422192cf3ee484fffe11e5d6e5b9", - sha_win = "e6e409ae564c041691f2fecd690431a9935401f8ab6afe284b222546887e84c5", - ), - "4.0.8": struct( - hash = "56f86607aeb458086e72f23188789be2ee0e971a", - sha_linux = "7b50b2b40f80d4531ae29a0a5b902eca41552e04815f59880a122ac81e8f269d", - sha_linux_arm64 = "d6e3ab0cdec2e6983235322f600f248d313bfce4a6a69ef16cdfdc330ff748b8", - sha_mac = "e1b2e6d4797338ed884f9d8a8419f93fc42cfcdea5e8a8b29fe13c6fd3fe7f7a", - sha_mac_arm64 = "115b207304d5471b77fc7649904111f3bb5ed7998ad192cba6cfc5fd0b2d78cb", - sha_win = "9ca65cb49287f448216c2eac12dacff9808ae827d5de267aaf2bd65f6d4f233e", - ), - "4.0.7": struct( - hash = "ef4e9cedeac3332e4738087567552063f4f250d3", - sha_linux = "60079078b1ecc4e96ab01c4189aceeff9049a1bb2544123295e9841b91a9410d", - sha_linux_arm64 = "caa10ae2d2b01eb290957e96636f0a6861e7305c8d991c762379542208415793", - sha_mac = "d588cc31b7db0d876f1d45f4d0c656d5e205d049c0bb27209cad04cfebe19309", - sha_mac_arm64 = "c0153cc053d8961e094447c3e706cb8f379c263bee64202fd78251fe018fb014", - sha_win = "7974b6e11164c2c94ddb252c9728d21de321094421f5d0856702e65c06751e54", - ), - "4.0.6": struct( - hash = "14767574a5c37ff9526a253a65ddbe0811cb3667", - sha_linux = "27fc220a9ad98d323cad73531ff563e9838c9e1205f51ee2a5632bb4266a35d2", - sha_linux_arm64 = "2d03f8eb3f81dd94821658eefbb442a92b0b7601f4cfb08590590fd7bc467ef8", - sha_mac = "c06048915595726fc2e2da6a8db3134581a6287645fb818802a9734ff9785e77", - sha_mac_arm64 = "35d743453d0f91857b09f00d721037bb46753aaeae373bd7f64746338db11770", - sha_win = "3b576e825b26426bb72854ed98752df3fcb58cc3ab1dc116566e328b79a8abb3", - ), - "4.0.5": struct( - hash = "d7f8ff5e2ca3539c33fae81e98f7c56ef9fa1239", - sha_linux = "fdd4d9d6b37e845039b207baaef60cd98fb594ea13a3e6d622c2dcd8f2a48ac6", - sha_linux_arm64 = "0007aec32eee609b91f35c32481ec060ea7dac7151e36344bbcae419907f9240", - sha_mac = "f4e5a6c57ad9de59bff73463972213a299af2bb419dafbdd3959947fa801a342", - sha_mac_arm64 = "b8b93190fa17afe32a5eaa7120b807767b1c9d6e1d4ae6b9a2c6adb231758683", - sha_win = "3b8ed9e298a6d58fee841f5c3f1d3e7b2dff104cc7df314cd329f4c05d470be0", - ), - "4.0.4": struct( - hash = "ea71afcf5a172125179a07ff1731de6e81c92222", - sha_linux = "f05dab4a6a13a5fe6972e95e918d1483e687faf468e1a653deaa8d7956a97a3a", - sha_linux_arm64 = "95a421f304a7209c6f259754ad15aea5bbbbb1838139b51837aeb2c184fa4a89", - sha_mac = "d8b44aae37224ae76572ad84b60a2adaa126826332864fb689944d5130705d8d", - sha_mac_arm64 = "ade1c1a0c2e5893c6f74079beeae8b7e2a0c3f3b7ae88891064104fd985dfc2b", - sha_win = "342cf9dfb83e95bf678d07e460e093ea61a609d34b4603d9be06d4f31784409d", - ), - "4.0.3": struct( - hash = "de2109f0e5e7278d470da11de526aed16c527722", - sha_linux = "6480f51d0c24130424c696bf83e9774f42246a0109c8d48b59f4520fdfadb928", - sha_linux_arm64 = "76b1511d550b4f47276b93581ae5122063acbca7c960703637657388cf178636", - sha_mac = "f40851b816b31b3ca3214ebf61cc152625a05c24f43e2b13c2ad9b9e5dca73c0", - sha_mac_arm64 = "6d8ac5ad1f59f71de0927eb2c595dab2f21d9946ca293434359a6db2ab06a138", - sha_win = "3702e4a518057520d4ad9e7cd63a01a829770d090551e00f19f417f55b0170d3", - ), - "4.0.2": struct( - hash = "cc8eba40de8235f9c33d92463018f87b3edaa09e", - sha_linux = "3c0e3940240709388c24a4262680c18bb1d5979f2337abe53db00fb039606c44", - sha_linux_arm64 = "21ed0c31c1fc972e3509fcb140e0323061b5f2b173fe56d1f8961df2a37e4c11", - sha_mac = "e1bd96ec790968adf583d348158375b76ee0287e348954c3393c82565475b07b", - sha_mac_arm64 = "e5bf9a5efabc114b42636abcea07a1e02d3a9406cd399a29ccbc730586dce465", - sha_win = "78010f8e2f7bb6868bb20e3fc32e24d45e6fca749c388c2d25bea9845512338d", - ), - "4.0.1": struct( - hash = "5ff495a591978fdf8a16f2d172be3616f3150d1e", - sha_linux = "7b2b64b1bc15555696f78cbcb54c8d75832222d1578270ff5f56a8024c9a0dbc", - sha_linux_arm64 = "5c046a22b933de14be6b2522b75796afffe3940a19422eee483b7f3f1a226d66", - sha_mac = "d089eba9c3cad675bbd7d3318aec166ebe5ba984a6c5291136c09c68324d9818", - sha_mac_arm64 = "c8359b334bad71719e8d29e796ca7b63891e0305987b2572eb5a2f020e34f773", - sha_win = "9cf861339327f3657281c5c8c18aa723323acffe3b3d1c3807b9d4576d097e0e", - ), - "4.0.0": struct( - hash = "3ebc04a3dab24522a5bf8ced3ce3caea816558f6", - sha_linux = "6836988f0b7ee6ce3df5192dd4375b9eee55be78847ce31cf1d2abfb00f1e991", - sha_linux_arm64 = "d4e6e04b7e2fa1bdffc9c07ab4e0a3f66bde75adb06ebf9cc66a341907b17db4", - sha_mac = "4123e9ff6a699dac303c4fe22529ae0d618c118fcd8267df590363b0fc98c91d", - sha_mac_arm64 = "4b5fb7cc4f5f8526aaa41c8560a00ad6782b97cd3894d856beb635f05a825613", - sha_win = "6b1e5aee4b4a4274712566c845888bdf4eced09a5aaa64c1796cda57cd2854c4", - ), - "3.1.74": struct( - hash = "c2655005234810c7c42e02a18e4696554abe0352", - sha_linux = "a987bb4cded4f29437e8589accac204ce3c134feaaaf251bb97d0fdf450dce65", - sha_linux_arm64 = "c7fcc532eb7ee1dc7df0eacb49128ded12e4d55a973b8a2a5215da8bb6c4027c", - sha_mac = "04f848f40bd19220a43abde2dd1012d95bf1f89c618c0f631b83d18357e2bb65", - sha_mac_arm64 = "fc71758a5bfb02b8a5c2dd21d6bfc34aa3c64698f6105e204a1f4d11f6d67603", - sha_win = "603b0515e0367ee2718b2f360ef0194663d23a91236910d5f4a90ac4d745a4f2", - ), - "3.1.73": struct( - hash = "b363a836e75a245c548b7a6a021822d8c9e4c6df", - sha_linux = "4f3bc91cffec9096c3d3ccb11c222e1c2cb7734a0ff9a92d192e171849e68f28", - sha_linux_arm64 = "e6fb8a32889d4e4a3ac3e45d8012641369251ddd1255ada132ff6c70ab62b932", - sha_mac = "8d52ec080834f49996534de26772800dee048ec9bf148bb508be95887e267735", - sha_mac_arm64 = "58e6c984c5a1fb71e0871f0c3bb9e32d41e7553260c6eeb38800a4612623a99d", - sha_win = "d76003fad2146ad1f2289e8b251fbc359406ced0857f141a41f15149c2138302", - ), - "3.1.72": struct( - hash = "7a360458327cd24c2a7aab428bdbcb5bca8810e4", - sha_linux = "be094d6dd27c27a64116e9c0165d6cade5d329f5137e56696773e98e1df83fa7", - sha_linux_arm64 = "5dba64454809d72d53c432f3c91830d69d413ebd9dcd0ce18df5a79a3af235a6", - sha_mac = "52f713c118717814d2371912ab9019a3605b7d6acc627f3842e6aa7d3ffff7bf", - sha_mac_arm64 = "644593539684f59c635c7eae2e743f5e4e27b1d665f9c71c23dcefd4c2448b3c", - sha_win = "c72623fb68f109d8f122036f25b9fc75353bd1ce28995d9920277d4be4a1d99c", - ), - "3.1.71": struct( - hash = "7ee0f9488f152e9e9cf0d4d243970e03742f1a5c", - sha_linux = "43f87aa84a73697b905d2a13c89d016af8ec66bed792f37dd5a0059529abee12", - sha_linux_arm64 = "d25f5e57b2e7557df39cd9dec3b0283fb086f66c800af3d9a3f70f36c5fc6b14", - sha_mac = "8dac015c03c4f2e594d8bca25fe35d1e4d808aea81705121e852aff0464c4a9d", - sha_mac_arm64 = "a7797c3d210eda29f88eede261fc8f0aabf22c7b05214916b5b50a1271e9f0b8", - sha_win = "dfe77eaf22278ca975519f0497c8b336c86e52461c478060418fe67b39b6e87c", - ), - "3.1.70": struct( - hash = "6fa6145af41e835f3d13edf7d308c08e4573357a", - sha_linux = "c29b4a2c6addd5aafa613768d34273a23d8fcd1753c685ff61099506710cd8d7", - sha_linux_arm64 = "b13386975023a06f19057daef3896d480229b144d1e97f8764ed2f3e0fcb7d37", - sha_mac = "bc0edcaaaa19daeda9164d38d36c5f7d7b4b4e1eb7695ad58e776336c571fcc4", - sha_mac_arm64 = "e470d5eeb570850d66a79bd4c06064b9b3a1e90c7c2101e1a444ebcd6466fe5a", - sha_win = "f0118d71fd67583ddcfd39af2ed8bec3d18152fb6aadee085ebec5bcaf4ac4f5", - ), - "3.1.69": struct( - hash = "8fe01288bc35668c13316324336ea00195dfb814", - sha_linux = "24a786666e6f48ed3c3944b44df5cf146c45cf4faece4cb2686312a3d052a00c", - sha_linux_arm64 = "48e670501d215ac5b6b2680c900c517d9028dbc4de43be5dd6f25211a3640f2b", - sha_mac = "8503fe87dd2f30abff2550e9d6eb8aadeaf30fd3c6972d635b31e67f82e155f7", - sha_mac_arm64 = "995c7b3c84458edf6b8945e81405320c64a25dfe79eaa427fc1fe9a680f56b4f", - sha_win = "3839e0a581ae7b19156f004762a8221585e9a0d6237e468b13a878d1947636c5", - ), - "3.1.68": struct( - hash = "b52d8c9150dc7d4c8e4a7a08c7a9b4006c9abe49", - sha_linux = "1f2bcb47d85eb31d90fa797b3513221adc50f0656bb37f0962a40fd0f49fcf6a", - sha_linux_arm64 = "de346e7a489aa27a442215945d154d58a0d35c608b6150b2992af0e70c04e1c5", - sha_mac = "b180711544d783121370d2c894703f99d370a864ab147730f82fd59b88fa3481", - sha_mac_arm64 = "5e9b6242b56edc8cb404cbaf6c8bd7eb1f0f168b55b580bd92652f98c5d286f4", - sha_win = "824d37e8a0845f44e4c1111e8365640eea28944f1bdbd1e9e3fea0279b68baea", - ), - "3.1.67": struct( - hash = "4ae62984ea36ef0e5bfcbd0ed9b62f04bee6426a", - sha_linux = "535b64822916c80124363a5c7a5bd0cafd703f166d5155c0ad0e464e4a879091", - sha_linux_arm64 = "04c5f959702d8c1e5c000752b562271c224dee593e81144280840fed06e36cd9", - sha_mac = "692b8fdc79a47332ba9881966c72517eedf15b2da7bed37a535dfec55e6bbd9c", - sha_mac_arm64 = "ac26753f59fa9c8e92be9c91666014ad9400c91fbd37064105d1b5fcae503985", - sha_win = "8c6af8046ed47386018e42d18b53f57fad0926306dd4315d7f09dfae844b3dd3", - ), - "3.1.66": struct( - hash = "243eae09cf5c20c4fde51a620b92f483255c8214", - sha_linux = "b10eac37c978b28da2f1f34cdd8a7759c0ed5e5a2d8eb4f4e6790209de33dbf7", - sha_linux_arm64 = "9c78a470f74c24fc1fde2c8d86583ed98847b6cbdd87cd0b36ff2d6b4799d950", - sha_mac = "64fd0603ccbf949967cb0dfd8f1b0b25e018abf8bfe813b53596c4fc78751027", - sha_mac_arm64 = "fd6250f25101957f56086d292263379880c4b3329819a021008b2058f92ef67b", - sha_win = "b24f65a1a1111d8ace6ba47b55e07681cd0620f7bf711d1018ee262c9501defc", - ), - "3.1.65": struct( - hash = "fdcf56c75a1d27fdff6525a7e03423595485ca19", - sha_linux = "b2b7de13d37c4c5126e6c6a077e6019ebacc78ef1fb1b35b9035f03975f5ffaa", - sha_linux_arm64 = "f838af6495408f3c0a14d233171b4919b62e445c62805a22dea1875cb709a116", - sha_mac = "cc50b829a21a041979e0941cfd2047d30a06e3c4a8fd9f662ecdc12a0ab40535", - sha_mac_arm64 = "db4430db6a085d6ed5284917e632541dad3ce0a9464659fb674055247ad059d0", - sha_win = "e72ae4ec3231d9a492eadbf77ff28c13efd90307a69df04234792e67a001d05e", - ), - "3.1.64": struct( - hash = "fd61bacaf40131f74987e649a135f1dd559aff60", - sha_linux = "c39de24beca60fd580f6dff0eca0e275016042a30234588b19eda82397e299f3", - sha_linux_arm64 = "61b412135630a60c5517278dc83930e06f80fa286fcc2bb6366c4f620c86e4e0", - sha_mac = "2644772be398c8095621b3d0fe9ff2d122b18b7b0963c0eb702639d94dfb8e90", - sha_mac_arm64 = "47449057c345a09aa8750be1a357c364ffea9f8a066066cb341a7a2a14bac96a", - sha_win = "eb5b59afb420915daab4c383e5f73d456cc14776dce02fdc852c46522cda5531", - ), - "3.1.63": struct( - hash = "aeb36a44b29e8ca9f4c7efbb4735b69003ac2bb9", - sha_linux = "2a38ac1ea2fe3b7169879f0f666ea278f344cbb5db6e34421b9554939559109c", - sha_linux_arm64 = "f1dd5fe4cd22e89b1f5bfd216f1245f9f40f6ea76651a7f66e925a68ff6f18b8", - sha_mac = "7e192b84aecfade22817b5b38f0c69d1f795a9b990308188d39ed1d218692cd3", - sha_mac_arm64 = "751ef26a3682f5f23dfdc1c2f80cd0604a32cad61e6373c823de774722ecb9af", - sha_win = "947f8e867e781750d374d659644897f2345a133ad3d0f9ade23afcb81eeaddd3", - ), - "3.1.62": struct( - hash = "d52176ac8e07c47c1773bb2776ebd91e3886c3af", - sha_linux = "fd303a2b2a85c4b3ab8aa29595d70c5fde9df71c5254d56ed19d54e9ee98e881", - sha_linux_arm64 = "233c0df77644472cd322b45b2d7cf709e6c338799b46f6ec5d5f39ca4dbe8aef", - sha_mac = "d9cfef7ba8f44bf21be715244d0d5f909f1ccc2a481a301b3c01d12d1babc049", - sha_mac_arm64 = "de5484d60c858aaa8b93ba6485924adffe734cf4f8296765c089900cf9ce0701", - sha_win = "7455680bf9c19a26fe4868111ac01401023b0f92e862d3cabadf7950b87707fd", - ), - "3.1.61": struct( - hash = "28e4a74b579b4157bda5fc34f23c7d3905a8bd6c", - sha_linux = "e3e20e09219fd47a0019bb3252e17db4a00ded39b39b41634bc73f840a8ff2be", - sha_linux_arm64 = "a6b858601ca09fb7bb6ddf1a5ffb1a4130454c936ad046d45fef183037828c46", - sha_mac = "1fe69a3c42fb2857b80c8e77bfab780cb212ed7cf81ae57c0c4d235504df5269", - sha_mac_arm64 = "4ba702eea409e2d4bfabc73a68919217d3993e7585d95734e3e40a3c9ce1bd21", - sha_win = "bbafba849ff072a61dd34a8ffc0c85eed20a417854a3ca751b092e3565a92581", - ), - "3.1.60": struct( - hash = "87709b5747de5b1993fe314285528bf4b65c23e1", - sha_linux = "ff5eb062165920c7cb69935d396f13e9f8ca5b13f2d7f3af2759bcacb5e877e2", - sha_linux_arm64 = "2c291942df4868d3f65b31dd964bda9736bfddcd6a7886158963f797d1b45cf5", - sha_mac = "45586fab1bad65a4293ea8939dafb5ec711ba92ae7b4d1edbaae3b4486f398b5", - sha_mac_arm64 = "8dc27416a378ad07285d380f68717cfe0db1ea6252fdb1ad012af95e4d3f342e", - sha_win = "f3147ef2d4ca48ea2624039969fd0529d0bacb63bf49ee4809c681902768b973", - ), - "3.1.59": struct( - hash = "e20ee09a8a740544c4bc6de5d4ba5f81f74b74d6", - sha_linux = "ae59d1946cb92e1651cbb904fe824b3f07b39f42fa25f582116b5aaa226fa239", - sha_linux_arm64 = "25b918d6d5ee2af7ef6b28e089dc21d2dc419dca76c8079bb638cb20459eb9e5", - sha_mac = "af175bd559cb80459749e504da314af0163291f195461bf4d376d6980c4c60c3", - sha_mac_arm64 = "e17553bca5d00b30c920595e785281627e973f9e7e14c5dc0a73c355ccafe113", - sha_win = "bb54256fc3b7824cb75d5474f887d9bf8e1e63c15b351bdfbed898aa293ee4ab", - ), - "3.1.58": struct( - hash = "a4d4afb626c5010f6ccda4638b8d77579a63782e", - sha_linux = "b188249ecb939dadc679aaf2d3d9afd0fe19ab942f91b7bc926b4f252915dd1a", - sha_linux_arm64 = "4aedc8ca641b40d9bd82d85b1dc3458fe1afc9a132da06a09384a5f89c058969", - sha_mac = "2092aa4bef3b9f88d3f343b042a417ba617d4e04454656d8f2e101ba53f854e8", - sha_mac_arm64 = "7a9a15845257629b7602d15bdf7633a8e10472b0fa9b3d9ee7149938aa2f2039", - sha_win = "9fe76b6189566d56f0cf9aecbd23a006778530aa87184a900f5662e39ce7272a", - ), - "3.1.57": struct( - hash = "523b29e1b99a61069a2fa9f9d3cc9be1c4c53d4d", - sha_linux = "5bc444132258d4404d396f2044a4a334064ad0f1022555cad5ec72804a98ba5a", - sha_linux_arm64 = "f0022413afcc1610deff10921b3f5938bf4d01eba46ce96655f2295bdd84bd6a", - sha_mac = "31ddccb68c86f0a45332982938c49505158860ed4f7e8ccef72a48382e0e3c96", - sha_mac_arm64 = "cc5fdb65b339464f99b9c731cc63c233ec9577268886a856fa49f227ca2a56d1", - sha_win = "b53555420bb9b6e31c153e4c59427000ec692be17ae900f659a9b774d1ecebed", - ), - "3.1.56": struct( - hash = "9d106be887796484c4aaffc9dc45f48a8810f336", - sha_linux = "52338cca556002251e5e7d738adb1870d14331ddf463e613af02028b64e05a82", - sha_mac = "fc5cca6a9db571ecb2974bf0d4e12f1bc6068726271464586cf7e8723004b4c6", - sha_mac_arm64 = "aed728d09d801c4a33210505874ce066269292e7809a7d6a6414146be01545f1", - sha_win = "cd5fbe94fb0bcf01badc10eace48eddbca22b34f31229e3d70c68ade7bcdd571", - ), - "3.1.55": struct( - hash = "f5557e3b7166d05bddb5977e363ec48cd06e9d32", - sha_linux = "2a1cccc2f6db801219eb966d00af78a026af7822055064092387e7eba18e75ad", - sha_mac = "f1f8f4ebd086d0cd8bd54c41c6a0e86bbb26d7b8020484fef3dba67cd9e6906c", - sha_mac_arm64 = "7533b7a1beaa692a4f1e57b91c456b13e6bcc367dc9a414cb066350e8a2058c7", - sha_win = "204984cbb755f9aa09c21b49129d908f59617a60d5aebd8742097a9a2c196abb", - ), - "3.1.54": struct( - hash = "aa1588cd28c250a60457b5ed342557c762f416e3", - sha_linux = "5c8db804abe1ac7ddaa99a6997683cf9fa9004de655b32b5b612d59a94bd59d0", - sha_mac = "e6d2b8c6983767c7ced83d40b87081a221f05bab08d0fa4f0c6de652547c8a9f", - sha_mac_arm64 = "83764751ee5c7b42529e1df168695d4a51a23c9c165f3f90693baa9bd9256efa", - sha_win = "c0a1c9f3e1dfc9bb2e600501aea999f53b34a16f82da387317fdcae7e9c2a79b", - ), - "3.1.53": struct( - hash = "e5523d57a0e0dcf80f3b101bbc23613fcc3101aa", - sha_linux = "1025c0c738fbaedf3f8fcffee23bef71c8d04a95b30ea8a69a47231fb35d1c8b", - sha_mac = "318dc0cc51a237040bc1cb0a9e7d6c214196c8a100b50d0e298cf3ea7c365dbe", - sha_mac_arm64 = "e346ef588f7cfe1e41623de2257a11ecf8381fbd3bde63a8773b3a663411ea12", - sha_win = "af7f7175ab0b3c1e9121c713764e8ac1d970b6dbee8a84602b4a69cc5ec5940d", - ), - "3.1.52": struct( - hash = "ce2097fb81953331e65543c20b437475f218127c", - sha_linux = "1c0cd572067c6348cea5e347b9ef7c5460493ca3f0d84bb991689731d0e140ef", - sha_mac = "5d9c801f9cfe81337d65969e174e0b3ef4cf2b47eb548ff4695abe3a2e69ba70", - sha_mac_arm64 = "7ce8fef7542437c85412143cb59b13b8804bb06243a106d2d342c7d9132edc8e", - sha_win = "82ed01d965f5c2765191c67da5baecd2d3ce3f82a8cf30fc47fcd56d47826cf6", - ), - "3.1.51": struct( - hash = "4f416d92fbff66ce79901cfc8263768f1b25dd3e", - sha_linux = "09af08eb562cccf85770e4b8e368acb5accb1759fe3bc436b8fad80c27f90c79", - sha_mac = "b12201caf9ff2b981349edebd2d2c022ff000c74241ef96305b831abbd4f9450", - sha_mac_arm64 = "65fbee020cf965f9216607bad56215795529cbe8cef318fadcb33141dd6b5e82", - sha_win = "65c2d005a6be80723fa795ea724d4db9960601cf7d59d880f2882ecd45c8ad2b", - ), - "3.1.50": struct( - hash = "2ce4170cef5ce46f337f9fd907b614a8db772c7d", - sha_linux = "8822050b999286694cd4ffc7d959a8ea3137e3a910121d78b5377439ede9b598", - sha_mac = "39ce2f689be348b558df9c2c988b03472d43f8ac0827624397f7c0bb56a1e893", - sha_mac_arm64 = "5a9fa8de121db400bb46e716d861283b938ad87257d7c48f99dd5557100bd3ea", - sha_win = "29096f5596d93dbf620a9547fd1ecec8f54f3f52d49b13f09959d852310220db", - ), - "3.1.49": struct( - hash = "bd0a2e230466dadb36efc71aa7271f17c6c35420", - sha_linux = "18f452f8bdcd13e0d3a65c569180d1b83579775eadb8069cb32bca1f2e751751", - sha_mac = "c5275eab15e42abb3a42bbe1cfe38ee1b852febc78f65f5605b8972a7bee672f", - sha_mac_arm64 = "10a722e2c7dcc97236f70f2d68b23a7975800ebf27ec4fdf76deddf483b1c6d6", - sha_win = "4361fc18faaf70a2dc342c219b13c39a8196e9a48e6897d08c7b0dca6ba6525d", - ), - "3.1.48": struct( - hash = "694434b6d47c5f6eff2c8fbd9eeb016c977ae9dc", - sha_linux = "689fffcb60f93a60a7bb52cc205ead43ab31f252753cfef39ae2074f6a442634", - sha_mac = "8ac2a3f32b4cba0d84ca5a1fe1db883dbfc2731432833ab5a7e6967c5f4ab7dc", - sha_mac_arm64 = "10dd40f94fe5c5f8c4efc838d1623cafe98c629d4c7872ad8c15cd7b0836f281", - sha_win = "9276435ea7c402c18572a4301d6a26426eac73414b0ed5cb3e721044a50f651d", - ), - "3.1.47": struct( - hash = "39ade279e75e6d17dd6b7eb9fba2006e61fe966b", - sha_linux = "bdc50abe5c7d4b4f14acea4ec36b270e86770cea2da4b0c393b80a692dc7eb7a", - sha_mac = "6a3a116707037d75a967a7d971894d8ace74a2a230aa50ba55e88e7cd7b94953", - sha_mac_arm64 = "b13d228e6a1c89c13a1500fff07dcf093fb01fa621d458496d4a6d7f05cfd600", - sha_win = "66a6c4f0cda4ace14a86d3e59d20685d35211854d21670632b0566ac73638245", - ), - "3.1.46": struct( - hash = "21644188d5c473e92f1d7df2f9f60c758a78a486", - sha_linux = "75cbf14629b06e417b597d3f897ad7d881c53762380aca2f0dd85f1b15891511", - sha_mac = "06f45608381203d501141be632cab960aa105626c3a0f7a48657b79728103880", - sha_mac_arm64 = "c2a85b509a91663b390f77d51fba775421d42456211466fd3757f9dede7af9e4", - sha_win = "1ed3a3f36dee5d373ebea213fc723b3eeb7d6ba4c43da6a951ea0d76f265f234", - ), - "3.1.45": struct( - hash = "2b7c5fb8ffeac3315deb1f82ab7bf8da544f84a1", - sha_linux = "1c0576765f8b34603eead6f2bd4bc77bf68ea2f0a39ed4c144514103e85bc7d9", - sha_mac = "87f63ebb2f9807435016b238bbf46ccb94c919ec0786b46463cd788634391b0c", - sha_mac_arm64 = "29e698772c0e00c21ce120dd1db1586f5c65507168babff148c2e628add6e72a", - sha_win = "891d49f8828f715ef621d55fe202de4929bbdc89b69101fd33963571458a7f47", - ), - "3.1.44": struct( - hash = "b90507fcf011da61bacfca613569d882f7749552", - sha_linux = "5ffa2bab560a9cda6db6ee041a635d10e1ef26c8fc63675d682917b8d3d53263", - sha_mac = "291b2653f7576f8354f0267047e47a5ddef11223c89d5be399d04618f13b3832", - sha_mac_arm64 = "ad1625821b49ccbbe733596223fdf99fd786470d679f2c9dfabd4a1a7b929282", - sha_win = "8b61f60ef169b1c20207361067c40192c83b96cdbdb2f4cff21dfb20b9ee528d", - ), - "3.1.43": struct( - hash = "bf3c159888633d232c0507f4c76cc156a43c32dc", - sha_linux = "147a67a3454783b8c351780ec0111329d1e6fbb1d2fcdfe1c035e1c0997e0701", - sha_mac = "d84896c6d1ba0fbd9a5e5c5830b3ac4a02da5e683e9d8c7172f4c3ffdfaa0392", - sha_mac_arm64 = "d684f0bfc655f61e76cec29fdaad1668f3d21a229fdd908267f400691468328d", - sha_win = "a335f5f5b070cf354f1ca8e0afb23c06ae5f9ffb2c501124da7fcaea09a7db6d", - ), - "3.1.42": struct( - hash = "9d73bf4bd5b5c9ce6e51be0ed5ce6599fcb28e9e", - sha_linux = "aaa076e64dd511b0d874c348f8dab80a2f9ade0887ba74845fd02c40bbf9e68f", - sha_mac = "4715002394c5d444243c77ca231883eb999cf3313c4869cf0ae288d911f80f89", - sha_mac_arm64 = "84dede714edd81362ed2a2f79b91b1bd9cd544f219f937582e616d73bf0ea7f9", - sha_win = "4c704f4a4927aa537c2815a72915b7591c163ae8f0dbaedc167e810dd2a4a83d", - ), - "3.1.41": struct( - hash = "eb71265ef0ab905620015adbfedacf88c5dbf021", - sha_linux = "493ec8bd3f3ea3d6d616de01d6dac9c2af696978c6c44d453757ab2f8a666656", - sha_mac = "bb088e7b8f83b6bae02a0992eae61351e4e97bd033f8c8937cdaea0cb961ac9e", - sha_mac_arm64 = "aaba2de03a6dcc0db90e61e5e405a52aa47124e5ef21953d052ca015ce5ee773", - sha_win = "c7afbf2dfb6040990bd40bd72c726ada36e3e6f1985c4b62db7296465dd0778f", - ), - "3.1.40": struct( - hash = "c3122846bb040798aab975f61008c37eb19476de", - sha_linux = "5501e750c92f5a54b27ee101f6816e7416f154cb4181b73fd0be3faae947016c", - sha_mac = "052d6236ce49eaf3aa02b3c4d367b5ed4fb78209c1f1e64d48beb79e9c0b7131", - sha_mac_arm64 = "c8af68f904367938bac255f5e64ed271021b289bb135dc77ab3b58b87e1ea5b2", - sha_win = "3ec21ca18b56f7d3953da2e0d468154fcaaf30b5ac663d9ad00c41540923a099", - ), - "3.1.39": struct( - hash = "1b56b171b627af0841cf8d4d8c0160c6cb6d855f", - sha_linux = "7ec6e15a2da2701243f89af7744403ee011211e59e4f0a6fd8ced544e72e917d", - sha_mac = "dad7d270207aaffb8b8ef584cf0579bbad144879ea6f00ec9a8080adf22130dc", - sha_mac_arm64 = "c5e474ca661348d0339c785e25ad81845d49dab19d5e3e84eef2393e623e0bac", - sha_win = "a04f898b9d54dd2dc95fb697a92a1b65d07102a4cc36a02dea44c448fad83472", - ), - "3.1.38": struct( - hash = "03ecb526947f6a3702a0d083083799fe410d3893", - sha_linux = "e2812859fa32b6019f688dd66f2fa48efbfb5594da9a43b876fd4fe4ca474c20", - sha_mac = "a88c4b9eeb5dedb0d9af3b6b84bd45c486de567fbeba1675edb2d7d196e0013b", - sha_mac_arm64 = "0e5d1519ccc1163c13ee93d85f70ef6a520464f59ca3795c47cc7c44ab0f5f49", - sha_win = "bcdea031961a4f3c23008d53e083770d19751dd2a2aa71cacdea8462d09548be", - ), - "3.1.37": struct( - hash = "7c905cfc1ca6699f6ccb288ae174902cfbdcf0a2", - sha_linux = "9ff44ef69d3f389adcacbb9b95331da72cffdf6e9431c8beb6ebf7aedb77499c", - sha_mac = "accfe90322b6449933c3d8e1346024e2e2e3bef7b101942294f995b2c8e1b60f", - sha_mac_arm64 = "a0461e234c08bd7ddd7a86b49b52ccc853ebe4ce0fb5b4314e9de0193c32514a", - sha_win = "e026ea2570e747d0640829c62abddcdc14a4acffe31180110971750b80042d7a", - ), - "3.1.36": struct( - hash = "adedc0750c4a89b65bee866edab24298cb8d6677", - sha_linux = "55d3cc557a83716f7a7fe121a07dbd59ed4b5d425051e22c902570e3e0ea6c4c", - sha_mac = "6643fcef0f928cd730b894f0c2c3343eeef870576e43e56428a7a8247c7bc921", - sha_mac_arm64 = "2e8d9103cd0ba7a2b143927196a630b091b981006c908d7d36995a210a04d73b", - sha_win = "69a197f6fc153d9f98ced539564683cb13ff0ef144d3d4fbddf643e33b5f860c", - ), - "3.1.35": struct( - hash = "671550b5bdceee7bdb21493714f9a815aa5149a9", - sha_linux = "9d4b5dcb719d39e59b646ecf7c409db20c5cb6b9575f5362ffb49a9e66290819", - sha_mac = "01ea06c1f4a6c980bfdc812f9599a8ef424a975c89d5c288c9e6f2fa5e5ef5ad", - sha_mac_arm64 = "f6480ee21c80fe062e0f9d8555f8bdef621601634b9bd1e5ad07b90777ff5e4b", - sha_win = "cd26088365433ce1263a11898406c2f9284e55c2c7f23b26170c2a172c52f0b1", - ), - "3.1.34": struct( - hash = "2fdd6b9e5b67d5b62f84d0501a876513ff118ef1", - sha_linux = "dd3713f077072dcdb811f934d6685187daa47c424039e31cba83633c8d1681b1", - sha_mac = "3824609ee9b7c9919e29b19775d495a16778adb981867901f4bc503fe2f65d7d", - sha_mac_arm64 = "72728637171df46e7cd22f90537dd6faf1d4809ed1befc504ff96768c82f0e0f", - sha_win = "7538d1a1e0d586bd0723f595557551b05d724a5803132949a6fafb8b056af995", - ), - "3.1.33": struct( - hash = "49b960bd03b3a9da478a08541ce6eafe792a58a8", - sha_linux = "eab02b3f4b7c076974452ba602f908a36adf597afa15b16095b441f191ede1bb", - sha_linux_arm64 = "5e15af6affcf37c9ce6c304b4aeccb87a2758e1ef029dbc996f9d77d7444378e", - sha_mac = "b8dad3cddb19c1daf9dae99020bd17b903ae9649cfc58e433ea4951e758804de", - sha_mac_arm64 = "fbf03d06c7503f091191e440b8ea577d65b3261167cdb47359d053f12888974b", - sha_win = "031f951668eaeea39bd9363abb3f514efc3401506374984fa9b1d7ba3130a62f", - ), - "3.1.32": struct( - hash = "29ad1037cd6b99e5d8a1bd75bc188c1e9a6fda8d", - sha_linux = "25fa252e9fc674d1bcef35b3a10dd85024aa93c843b8067f8d917e5151968ffc", - sha_mac = "7881714e7738eb183b5a421bb2b907e96359e791ad0a622be6e7f5690a16b9d6", - sha_mac_arm64 = "04eede7352aca4b6fc1c111a8b31d00e8aa40547c3cd062ff9be4ffe1ed98d95", - sha_win = "22c3429eb1e6051bda46e9c02c14eca1ae3749ba8c411fbd5a3b51e3b9623161", - ), - "3.1.31": struct( - hash = "1eec24930cb2f56f6d9cd10ffcb031e27ea4157a", - sha_linux = "5952523c0c58cfc7c8839c1d3fe42ff34af5d8721231306ee432063dfacf96ca", - sha_mac = "13482cf3cb29f423f2037b9dc2b9e4ff72d0a49fcd471bbaa9b76d9f86f31d82", - sha_mac_arm64 = "654a35af16be5eeb2082e68fb36190fe76de28fa2da75ac0d2197482a203f39a", - sha_win = "493c29f5a505ccd9687036ee4c580d190b1c32b286be0e751a78e68997cec8b2", - ), - "3.1.30": struct( - hash = "dc1fdcfd3f5b9d29cb1ebdf15e6e845bef9b0cc1", - sha_linux = "151d7afdfb728e1e55ed1d100e4d3fbd20925fd65f3c3b9e093061a2c89dcac7", - sha_mac = "f0cdbc676c58bce7a65572418fb1521665ed522d7d05ae90f0764b77801982bb", - sha_mac_arm64 = "fca4eaf8ff528bb9308e5e8d0cf2709713b99fc19d55c6578a6c8f3e66182f55", - sha_win = "3001101622d98b2af3e5209154f60bbe341d32f6178307c6c723e84b5fe08bdc", - ), - "3.1.29": struct( - hash = "d949f1b99a477d4b0b54d95413df3688afa69d0a", - sha_linux = "d3f274446924c27082603170fab60ba78a2fb51360e5578fab4d9b5adab0fa9a", - sha_mac = "ed224c296efd22437f298f0fe0852613b0b1d48810b1b6d87b6b7e6beb589fe2", - sha_mac_arm64 = "af9bb86a7996bbbb36820e93dbc7f537ac23070e8730439b1e49792c4fc008e9", - sha_win = "6203f80273565a2ee6734bd33ad7bc6940ef709cbd593e70d6489e96c02ced25", - ), - "3.1.28": struct( - hash = "30b9e46ddcea66e91530559379089002d8b692cf", - sha_linux = "c23426d8b6d94cea702542c39e3bcef9439425dd4bd03bcc172e291dbbe5ed0d", - sha_mac = "4cfb918fe3233a2b31e5734e85b2a365e634f4e8a83c4390e8595cb98ae6bd8c", - sha_mac_arm64 = "a47f1f09bc7bbd4952cf54445d4fbfae53623ecbfecee0506a637665c7b4ea4c", - sha_win = "4388d230871d5b1e15c2fd0db21a792ab2836f23d860475fe183c03c5db75c8c", - ), - "3.1.27": struct( - hash = "48ce0b44015d0182fc8c27aa9fbc0a4474b55982", - sha_linux = "4dc872260c8f42a8e20c8612b2255adbd466fec54cfbe37b46eca4eb34a2b03f", - sha_mac = "40c3326147b162b8357efdc72476faaa6686338cff3e176680e361c2511453e8", - sha_mac_arm64 = "7b87610de966b84353c8c1ded8e12c034b5b913c093210ebd3b26320e2ac2990", - sha_win = "39bbfcb09ba7feb214518a67b1ff6d38bae065b416b4483834e4fdaef2316f8c", - ), - "3.1.26": struct( - hash = "4f68bb2a505c727bcf58195cf4da20592a6e92c8", - sha_linux = "82d24d5619c814ae99ef7243de428600c02e96dfc49c36e44753b1fce626766e", - sha_mac = "7b645979d8901f3153507561bbec10ecfeb197dca5914228715a74b760cf7eec", - sha_mac_arm64 = "d9c647fd70588bae71303a6c923df8a44ffe63e168b375d35bf6ceda21258fa1", - sha_win = "1ad49d69634ce2d1fe04614c18060a903c102e1dbc9dfdef3a03e52c189b4c92", - ), - "3.1.25": struct( - hash = "ff6babb041d0f31575cc16d15ef82c6222ca99b8", - sha_linux = "c5ae6b4525845ea36bde89cbf4e1d03de87a2658862d76c6a53bbf8de7c67ff5", - sha_mac = "d2581aaa7207f0d9dd9949247f0706bda8561e805d67aec166ed4f3b39c3a3fa", - sha_mac_arm64 = "dbcb76036a09248c2a839872c27b87b6d4ccc81e57add4e2a6f5e560a2c530fc", - sha_win = "3a86d98d934456a74ed06388c1487d95a0d5a3f31777636453f22e61d57d7fb1", - ), - "3.1.24": struct( - hash = "54217a0950bb1dafe8808cc6207d378e323f9d74", - sha_linux = "20e8e5bd745e3ad69c03bb877091d2fbb0c7db1eab309de8f185e9821aea40f4", - sha_mac = "cfb897a980dd51fceb02ff143ad0fd8e5d299db640c5646d1547d522194545f2", - sha_mac_arm64 = "e87b0727343051312f82a6653cad4682a518dd9cb6575844c0cd6505d520fab6", - sha_win = "a0ea07f9014a912f13176fdbbc1ee7ab08104d45e7ca7e1c237505579b63d530", - ), - "3.1.23": struct( - hash = "bfd5e63a44ba4c8568cd8ac87c27b35e40732bf4", - sha_linux = "3b8d9e163d6afc8569deca0ba1d4042f80da7a31e23cee006c3faa9cbf2fbc31", - sha_mac = "fd1c79475e47fd2f06ee9ba189e68309e443c2d3c56fd28163d1cd6f77047075", - sha_mac_arm64 = "66e57ee0962ec31056674b5681f91bd62f85b0bf1238a8d5b160660c0bf47292", - sha_win = "7c30b281abcc0ffb9e7575197f1ac0598a94c6cec36547b81554a97b792a9e75", - ), - "3.1.22": struct( - hash = "990cee04a21caafc75955d736fb45791a7f2aeee", - sha_linux = "a310ed9f16c97a91c72564ca5f85c412cb99429d8001825663fda1b28c00346e", - sha_mac = "b19afaf414178781c4c91ee711ec4d9063b9736719e45ca2e8b45c2258df16be", - sha_mac_arm64 = "7c8212abf77f0307b6ff848bf9c6212f870506df6d074349f76401f30f9fcefe", - sha_win = "2c0cfe267d47f390d7e35a83545b1d5043e4a7fb77b838ee19b0fce65035f55d", - ), - "3.1.21": struct( - hash = "a16a8bca2466eb144f7c93fa899c0272c8815dc3", - sha_linux = "7045ddb3b37a2cc63cb1cf976019a6a3b7f8dbdc71254db0eee5b0452f94e9e7", - sha_linux_arm64 = "2852c8b108ec748d52d31dab3f4854bc6022df008019daff1c7e31ac00363b3f", - sha_mac = "2a8d3d3ad721fec81ca1a4a581e4183b6e732e9905beb874531851846a05a367", - sha_mac_arm64 = "cf788a7bdc38bb40d01f94b2d46acafb0e2f02d8ee3b3d69541c114e467ee37f", - sha_win = "81518bba13f41717ffe6990b6d4a5af635d0c9d0f71a8d3bc0980cd0bc8f5f66", - ), - "3.1.20": struct( - hash = "d92c8639f406582d70a5dde27855f74ecf602f45", - sha_linux = "3b606d133489aac8cdfff4f99ff14a35563b1fafe658aa23f83694f77ed9467a", - sha_mac = "cc9ea1696bdb3f28778bac1cf4587a34e90830e1c64976cd205fd73e77566cd8", - sha_mac_arm64 = "b976410bf4fa1af9896be1c736634bfb56b2ef0f3386cd3cf39616ce47445cc0", - sha_win = "1e6806ee240ab838ae7eee618c57efc793195c62e4d167136507efcfa66d6c6d", - ), - "3.1.19": struct( - hash = "4c3772879a04140298c3abde90962d5567b5e2fc", - sha_linux = "18d4a5bb93371fe1d4586db9804f673fff0c510d98713ec25b6bda1a8457230d", - sha_mac = "6adb721340cb93b7a3efafbfd1d283842a39bb6f1390630b0806c8af26b66840", - sha_mac_arm64 = "429c9e3a79d32380f3dfee52b1001963edaa2e3035fce9f52ca87b08e1a2f26e", - sha_win = "0368eefb28f42799ce897020d0d10a4a27e1b69b650575d94deb268e402a3632", - ), - "3.1.18": struct( - hash = "49d45744895c7d7e28acd94a385d7ee361653b4a", - sha_linux = "6ef373c4ff3cdf33d7beecea47d4eaee7795693f8ca9469f33785cb9c54f40bb", - sha_mac = "ad0e645abdb6d3f0b6c6ad0ee70761010a712949c9b0b193aefc78ecbc3f1710", - sha_mac_arm64 = "68d0a1ec3e83e0415e24133c59e64206b83686712434c8c2e6792547cf654b1c", - sha_win = "96829a228f7c08fabd37833f7361614785aa39aa865beef06890ee8ede58dc66", - ), - "3.1.17": struct( - hash = "d27fef2070c86a218965da8b8b5df8b4425aa3bb", - sha_linux = "562b3ba75ce77a917317bc697febb38194e85cfe07f4fec308c3b29c621f8f13", - sha_mac = "8a2bee8ea434049e40663a6d78d1c3584e5c32196fd85d6a10f3192d2e3aba4e", - sha_mac_arm64 = "5f60d3f351d06d862e853a294642d24243d6cb197e34c2f2602d80555c2eb014", - sha_win = "90b2ade825e07bb05831090dd64b5f5b01a4169a84a3ddec85fcd60be3b246a5", - ), - "3.1.16": struct( - hash = "fb1baf00423818052359cf9126e94bc71c39feb5", - sha_linux = "bdce7e58833069a98d7e0b4fd9d6fea7394770ec10339cc95ed9fe52ba39f3a7", - sha_mac = "d05f4e997324d7f7d8561436677687d296893d6414f53930184fab272e4c6158", - sha_mac_arm64 = "36ab8da30698558a567c5c1c0e130b59f08cf4b29c9c5242f4ea60b449ecff17", - sha_win = "e1324c22c914ab7f62fe6d38a550de25b2232a723c80393fa8884a260c07766d", - ), - "3.1.15": struct( - hash = "568a46a9fb7e1f1686a6f7216b3dc976f28d2a79", - sha_linux = "737db513047d12e95a12f4fbe05314f3af79ac955d1ea43fc83626337e307edc", - sha_mac = "f8993371a1ff713203023f0283054a31df5342ca287debc4e16d04d97e069aee", - sha_mac_arm64 = "c61a8efa8543a6c44e394a0685e7d4facb4c7dbb210c4c32d311b0002c4dec99", - sha_win = "235592467a0be6a537e03fb587aaee230aa2c889f2785cb9754eb44bfbf747ed", - ), - "3.1.14": struct( - hash = "ade9d780ff17c88d81aa13860361743e3c1e1396", - sha_linux = "e2c43068fb1985592db42183a13f85bbd9518b3747746e0003d70c7d770a0b2f", - sha_mac = "567e9548f3fa7c1aa717821af4aaa7849a0f7217cb55eb7f66a06c898808fd96", - sha_mac_arm64 = "df8319aba8bc0d0c40ebec3c8f45e507c2a51a57df24826d4cab6f6cd75017ac", - sha_win = "6bfec6bf6a01e483a57e91f7223340a425f6ff711cbd32a08ed78002810d7882", - ), - "3.1.13": struct( - hash = "bc44364b561cfde15c243a54e3b96ea12d7ea284", - sha_linux = "290f04300465cbb7c8e920f9986128b3f287b14b93627b0c6d069d534860c1b4", - sha_mac = "72b209a3e5800be155cf5b29bdaceb18aefceeba68f35ac719a483bd27d85705", - sha_mac_arm64 = "2bf90ed73454f58b810e09a776a34ddf7395f9ee45580f3a8fea53f74ba7ede2", - sha_win = "07fd730289c26f72ae4037fd25f608f6b9d36f1950677229b6c7d392957db3d2", - ), - "3.1.12": struct( - hash = "a8c3b314d61e2bb98581d522f858132b2fc21488", - sha_linux = "ac8ae46b2fe2fbef07077cdeefc8288d2a73e3189958f32b36f2d17d868275d0", - sha_mac = "c33afddd7c8f7a5293cb427ef26eb65f51fa3121d0577568824174227aa37ef3", - sha_mac_arm64 = "253feff779385d2499764cd988175446e21db8cbb9952746e96969c2a763924c", - sha_win = "04015fb6a1b4ad4d7c16587a7eeaabf19c5b35097f3e28efa029c0c67547067c", - ), - "3.1.11": struct( - hash = "8c3a799341c01148692c52fda73bbba5e89c5727", - sha_linux = "ba52cfd784362530866c9d554ddc62cfa3f0690f44007c0b3b36e189bb579d5e", - sha_mac = "c46548425e0bf4acd3c4275aff6a463c90ff1faf283ae7f5237d8c17bf84d779", - sha_mac_arm64 = "c5ae40c468955ed02b86c54061278d2b4075b1230612bae5910f836aa9c200b3", - sha_win = "74481a1998236fd9d296f367584934d5ab8bbf174446ceb647f714031671de98", - ), - "3.1.10": struct( - hash = "8bd05c7221b4ce34d4bedec40b672d94e681a765", - sha_linux = "f5a937383b5c9fa15071a31d679a2ddd5c03bc8952cbbd5bfbf7c0a86c2dae5a", - sha_mac = "e73491f2787cbda75e718c3947916b57259164eddd9b2db16b9c876d3deb16a9", - sha_mac_arm64 = "d7485ce3b13f183484af5163d7bec79ece9a1fdc5845f8152e36270e6f90cfd9", - sha_win = "dd75061405bc902ecd983bd3e4cfd6931a866e1c9de602c4458280cbeb271720", - ), - "3.1.9": struct( - hash = "edabe25af34554d19c046078f853999b074259ca", - sha_linux = "89fa75c981e47ad19942b8236d2604b2666dfd516a08626aaa1bfb0d657c87bf", - sha_mac = "6c7f59dd84d1484f1dfa041d71cc79fc97db8d15834b6220e5868bd9bd373a24", - sha_mac_arm64 = "13a258de0daaa3c09a53e21a67414cbf5fa5706f955767fe791a059ed5eb90bf", - sha_win = "0857b03919b948558f9a57d15cf2b220852cc070359c386da0e6e4831c7ac5e0", - ), - "3.1.8": struct( - hash = "8c9e0a76ebed2c5e88a718d43e8b62452def3771", - sha_linux = "6b170777eb523e62972ad458e533b1853cd0c4e02f6f2cf4cd68e109499ccd9b", - sha_mac = "ede01fe160c3b8443f53f94dbad530e0e7e8197a1b874c7bb9038b187279080c", - sha_mac_arm64 = "9ecc8678f948875e7f64defeababc0320f98e103547f395c390c01d76e5a1d64", - sha_win = "039d27d4ae43b50d0858dbc4dcf412f572351e98e1056d7fdcdf2aab1740557e", - ), - "3.1.7": struct( - hash = "d0e637fe48197587d981f79e8114757731d0c2a9", - sha_linux = "d941738a3c755d6d530bab66d38325515b9dbaa588d2db2b8a63b2a8a1961e52", - sha_mac = "597aacdb25d422094427014d3a97e8b91ec80df2255a66e0986414bf71aaf37d", - sha_mac_arm64 = "a0b2db0269c55e854d1007a59f95b8e5f14d32309e76f985ea9afe481b2bd6e6", - sha_win = "cb44339db27b694862efb37539d41eaff7253c93c0882cf7d9aaf4afeaa82912", - ), - "3.1.6": struct( - hash = "8791c3e936141cbc2dd72d76290ea9b2726d39f3", - sha_linux = "f43dfe707dff18fa7a08dbfe2fa3f8d46afb65ccba9bbe554465d83d5d80e388", - sha_mac = "13a01080ff042560b9a9b1b2c9fc5f8c154710bc41db8bbd907a9e53c286afd0", - sha_mac_arm64 = "7ae97e85593b037c345b539e7f8b8952b82c001be982219060c83f0834bb6827", - sha_win = "e7005c0a5439e532cb64f34ba90405792288a1ed8845cdafcedd3de5af6fd3f2", - ), - "3.1.5": struct( - hash = "2dee36c7163f7394ab9341854ef5281501dd97d0", - sha_linux = "6641703b7da1805aa5a8488d231ae7fedfe27f1a5a33e7d05a2ee5902ab84180", - sha_mac = "9dba57f09702a7eed53f3f71cdd8a4ed1202ca5a5f4449249c2d98a285b26f75", - sha_mac_arm64 = "0093b4d47c9eb9c8bab5b3048c68855255b5e5a8bfd78f4183424009489327e6", - sha_win = "849edc42b494f670df4763dbc8ebbb5464ac28787482668c3f6e27588a77cb3a", - ), - "3.1.4": struct( - hash = "39e60dda6945cfcd6487725bdb1361ae7975173f", - sha_linux = "4a57c0d60eeb4e021de61c8497f0b595a0a9db0235f1640a528de752409f4fcf", - sha_mac = "f28a9a4f42f67de1d5c4d8a288f29e5082bbf4fcb172e0c6e248695163372478", - sha_mac_arm64 = "be35043edad7a7022f7b174e8efc90e2db54ba4fd71288760bea4db082835f56", - sha_win = "d97ff247bdfc7e839610cbcd87d30a65018f964d183d5b852b6021d43c5d199a", - ), - "3.1.3": struct( - hash = "2ddc66235392b37e5b33477fd86cbe01a14b8aa2", - sha_linux = "8b840819eb88f9178c11bad25859ce448a0559e485823a863a6add21380636ca", - sha_mac = "0cb3f9bfbcc744233eae9d20036155738409405eacf8a3d4f9beefc5919d809a", - sha_mac_arm64 = "ee2772f380419df17d154e00388a16bcddc78c7af035c16a2ee534d6ecf099aa", - sha_win = "c0549e1dbaa581ae66934c38beebd4250cd450cc2778e9a602cd9431bc81bc37", - ), - "3.1.2": struct( - hash = "6626e25d6d866cf283147ca68d54ac9326fe399f", - sha_linux = "4fb53364a2ba1de8978445aa26b2204bfd215b41da5d7df04f231040b197010a", - sha_mac = "a8e347accb1ff402d96a128912ac8cda1731611c9f89095fee0ad39a6a18bbc3", - sha_mac_arm64 = "4374f5c852d0403b0a3b0e9dc8a3856a340e9d82ecf0f20aa8b36c6179d31fc8", - sha_win = "e96f6ab8252fefa42f461676311d4c4e2d96fdc2e876ece07d9d7a49ef31aef0", - ), - "3.1.1": struct( - hash = "5ee64de9809592480da01372880ea11debd6c740", - sha_linux = "ba94c5ecabacbedc89665a742c37c4c132c739aea46aa66fd744cb72b260c870", - sha_mac = "8b5f8cec55af0e6816a08d8d1e8b873f96d0e0504fdd6e8deb2fc024957d1aa7", - sha_win = "6cbe976aff6155cf1c48707f0520b5aa6a7770860e9b1964bfca3e5923ce7225", - ), - "3.1.0": struct( - hash = "562e3a0af169e6dea5e6dbecac2255d67c2c8b94", - sha_linux = "0714344e32e244e6d44d9ea75937633ab1338e417a232fb66d6dcd7d4b704e8c", - sha_mac = "f6c1cad729ed799e1df09eacf5aa80cce9861d69ec6d9581c17e4ba8d9b064ce", - sha_win = "756c41cbcab4ae6077cca30834d16151392b8c19ab186c13d42d7d05d6d727cc", - ), - "3.0.1": struct( - hash = "91b7a67a486d2430e73423a38d950d8a550826ed", - sha_linux = "25fd430268596229c4ac38e188d7c2b31f75c2ec8172b1351d763e37c830c6af", - sha_mac = "52ec2204115b727cc4de38b5eeae147eead12b299b98e5a88653d12958cae4d4", - sha_win = "0e072736b471c9a07cdf534ba4da46b3b6545b63c8a6cbb0ef7d544251e15092", - ), - "3.0.0": struct( - hash = "7fbe748230f2ce99abbf975d9ad997699efb3153", - sha_linux = "10646b64daea15354f14f89f7e79937f420b77f31bda7c4b174de2474835950f", - sha_mac = "ebb17bc91c6a72ca06d17337d27aa1a2be4c9af4c68644c221712123f663b8ab", - sha_win = "0d4f2ff5d88a8eef5ed769ee4ffc5d5574143911d2e0079325cdc5206c9e9bb1", - ), - "2.0.34": struct( - hash = "d8fc1b92dbc0ce8d740a7adb937c5137ba4755e0", - sha_linux = "a6304e3a52c172eb178c6f9817d74aa3ee411e97ef00bcae0884377799c49954", - sha_mac = "975ae11000100362baf19d161fec04d82e1f7c9fb7d43c43864ddd65a47f1780", - sha_win = "8167a44bb895a0fdc153836bed91bf387be57f2dc1b8f103bf70e68923b61d39", - ), - "2.0.33": struct( - hash = "cef8850d57278271766fb2163eebcb07354018e7", - sha_linux = "958a0f4b1533e877c1a5ed3c13cb8baabc80e791d45858c2c94ac62325ada953", - sha_mac = "8ecb248653d44c3748e23c089cb9f0e3d4eee7cda13fdec27ec0113b896e34c4", - sha_mac_arm64 = "1ec6f3d7afa5e10f3af996e26d9c3a66f02ae49e48e512a4b5d6b7165c61290f", - sha_win = "6b6b2831f8b338488f787b4a8c34700277bf3988358dbb54426f017155603ac9", - ), - "2.0.32": struct( - hash = "74646397e3c5010824ad60d1de86c6bcbe334dff", - sha_linux = "236b3954e71d3bb30d347c655b9f47f2a091aa2e61046e1912c8da90152f4ca1", - sha_mac = "6a03267574534948e3b041e5d3e31bd757751ef17912eb6e90b96a47da03afb6", - sha_win = "2f8fbf0db097d67d0c364946faceec27c569c5c2d7b22068eef8db55645aba36", - ), - "2.0.31": struct( - hash = "597724ca3f6cd6e84bea73f1f519a3953b5c273d", - sha_linux = "ef70c7733aa0df41cb4c812f5a89bf6b2ed13ca8aa252872396c0be271156d9e", - sha_mac = "77e57c3e98758488ef676f8f58a85faa0bd65a1d326a91771ad83d7cb0e373ca", - sha_win = "541605b740afccd08a39f5ae815978f699f350d621a1b2dfba0763970b56aee4", - ), - "2.0.30": struct( - hash = "c69458f1bbf3ef5b8da4e934de210659cc9bca04", - sha_linux = "ee1c8270096a728966ae38af548047d1f64c18318e06ba75952e657136f02537", - sha_mac = "574a5819308eba6c8be6a780e26dff415a0e7178d3f44162dd8dca87eb40d4a7", - sha_win = "242d244f4f5f5af08e6e6ac9c143aebf1b7bb2a23fd2992350731e59acfee07c", - ), - "2.0.29": struct( - hash = "c2369dc425725fff86ba90a9007a4603ddf7941b", - sha_linux = "7df4a8f3e25820becadfa7f1fe0d78e764102ec3ee50c474ca1634ed90d48890", - sha_mac = "d998521ba95882a27792f0113ea2c972fbb891c240649f4c994f0260c0e1a213", - sha_win = "c64aa3f2af6503f6711b2322986a45784e00d7c7fe13ec3f5c4f740472d065a0", - ), - "2.0.28": struct( - hash = "866055ea639d64dfedc625d28ec981e47ce37168", - sha_linux = "7dca7704eb14e367bb67e9abc9eaf59e75f59b74e32422e04556de10897a9a86", - sha_mac = "370f76493e3805e2538290b698a381f04b6d78a77771e48fc0099cf89dad985f", - sha_win = "e913c50ea5f196d36971f7cf5b1cf9a9ca27ce0818aba56be3a66e31e95c0e5b", - ), - "2.0.27": struct( - hash = "1ac46e3b84955231ab4a4f4cbe0c7ac28c86b8cc", - sha_linux = "3e124e278de168cf22e03b93b2f14a65a86777e428cdaab7e5e1c2289eb41605", - sha_mac = "388262b9e1042ef9a3a1945d5a23dcd634c8042a225e8fdf80bcc2c1cb7e05cc", - sha_win = "762276a332432e717afb988310d21ae10e36facc1e05bfd77042a364fb43cc3c", - ), - "2.0.26": struct( - hash = "823d37b15d1ab61bc9ac0665ceef6951d3703842", - sha_linux = "996e16d368a99dd4dd12126acbcb8bea9a607b5257cc7b747c4afc2f036fd8cf", - sha_mac = "8b2d7e84cc449531e88034beb31da89a0b61ccaeaa1584ffb6da7842c6348fdc", - sha_win = "095e772764d7f8c0f8228bda4b8500ae43aac2303567da5cdc9f8623f70a5743", - ), - "2.0.25": struct( - hash = "f6f001b08fbb67935379cf13d17fd9bfdbaff791", - sha_linux = "06d8e2f3d4f4b35a57de9c15e62a559c941cfba1dd7ec02353d815904d912c3b", - sha_mac = "6541bf3a648aae7df84de424ff392dd1513ab5450203c84f72a6a03e321a301b", - sha_win = "267fbfa809ec0eb911c1962b1b9768675cb82228e694a5f9ef570232ee71db76", - ), - "2.0.24": struct( - hash = "6ab7fc5622a67e6111d07c4ba61c8d3c8fc33ed2", - sha_linux = "e5daa0e87f3afd2197e7975297cb0cd4c245edccb964ca5f1f32ee7d985bf440", - sha_mac = "e4b7f2a7b71d6ac4610ee7b14743570e0dfba3668dc6b4f984cbe7a135888527", - sha_win = "db2aad422a3ca2295be6101b0151eeee55dcea29ba1f31b4594c02ba46591cbe", - ), - "2.0.23": struct( - hash = "77b065ace39e6ab21446e13f92897f956c80476a", - sha_linux = "7713a9a5572d839aea9eaa84a7c4779d11c6c8818ee64a0f443b62081fae6d47", - sha_mac = "b793087462d581e25c8c267fca9d30519619e3272480862a56cc316a32c7afab", - sha_win = "b8885cbb41a39e4734861462e05ee58c7ff7562016a842bcee2603f229940e8b", - ), - "2.0.22": struct( - hash = "6465a9acb820207acf7da44661a7de52d0a1ae3c", - sha_linux = "c079781124e763c53c9fc73781fcee40296ce3314276836bc694f07bd331a859", - sha_mac = "ab95574dfc685b0300e37bea36aba413045bbfa2ab06b93eceb881670489eec1", - sha_win = "ba142e7e380596cba763e3a414de6511bcb86de48e4b48cf393b1ea449a24aaa", - ), - "2.0.21": struct( - hash = "72f4ec97fbc7ec16c15ae68a75b0a257b2835160", - sha_linux = "741264f33f96ba4b785ed0b133861ebdfefbaefab76ddcfe7bde6522829d6f70", - sha_mac = "b07c0d65ee7e2799170c6f3b2aacebfe070c2e4975088bcd1b3a4140fecd8418", - sha_win = "dc3cbf47aa4be52a92526f1790a013734ecbd407f7f36286ed0283c96355999a", - ), - "2.0.20": struct( - hash = "e0c15cd14170f407a9eb27fcbad22931dc67feb7", - sha_linux = "a196504fd1095836ca3961208338ff9e292be7729ea529bc19800aa7c966d34a", - sha_mac = "6cdbf17ed61486b38ea79d3f31d74483e7388d1e7468518dccba3f24e0ddd4c4", - sha_win = "4d22a32c219dbe18c55b635d014b9eaf7da60536171b7af37d9a8099fd33794b", - ), - "2.0.19": struct( - hash = "9b9ff2dabfb4a7fbacbc004c0bead12a60f9d05c", - sha_linux = "bd7c2a38ac88d219a1ab5003ddbf8fdc66a6ba55bc69f99077346edf2753b4ea", - sha_mac = "6cc44029c9052855a55938eb6496b5659da4b1ce9cb34502b740af5993a94f93", - sha_win = "a1fa8b1c387b9307f9b87c43dc83c0ff1bc04b9f29fbe4f39aff2dd946ca4b70", - ), - "2.0.18": struct( - hash = "c2ac7520fad29a7937ed60ab6a95b08eb374c7ba", - sha_linux = "e9f777de592f606b10104b2efe5179a7a8f44e3a9dffa1e3aaf73e05eb8893d7", - sha_mac = "86b1dd62e424e3788bf132292a694a25ca9b0875d06f50d0f5d424593697452c", - sha_win = "49ce07bda6be070251db44a08fcc05cae21ffdbd7522423a0c79bde635e87e28", - ), - "2.0.17": struct( - hash = "f5c45e60392b82f603e3a8039c62db294fab02d2", - sha_linux = "b40a4874057e4cace600f8ee9787dcbe236e3dc5b2fff5c2ecb0e867e426f99c", - sha_mac = "081f61abf7d5ac0ec31aaffc5550013d4093ea4ea39520b7a32b7448d2a6ee70", - sha_win = "45d06e597e6a1185a76200bd0481495e7298800a4805045d9cdbcce6311c91b2", - ), - "2.0.16": struct( - hash = "80d9674f2fafa6b9346d735c42d5c52b8cc8aa8e", - sha_linux = "e527638b224d9a30dc7e5fa4b9bd2eb2ab76ad306739ba8cacf5a5e333933a2a", - sha_mac = "061020eb0e3ee0611dc5a0008ccc7778168a4f838d49ca41c0aad8c52c1a01c9", - sha_win = "99364ed0388f928e0594f790662bf3a30c2894b0eff81797e1b64f62128561cb", - ), - "2.0.15": struct( - hash = "89202930a98fe7f9ed59b574469a9471b0bda7dd", - sha_linux = "7ff49fc63adf29970f6e7af1df445d7f554bdbbb2606db1cb5d3567ce69df1db", - sha_mac = "e35cced1514ad0da40584f8dd6f76aabf847ce0fa82c6dc8dd9442fb74ed6d0d", - sha_win = "31d5f8107c87833cea57edc57613bba4b36b16152772f744c5ad204594b4e666", - ), - "2.0.14": struct( - hash = "fc5562126762ab26c4757147a3b4c24e85a7289e", - sha_linux = "e466cd47ddd4bf0acd645412fdf08eda6d232484e48e5a2643e08062a7a4cf56", - sha_mac = "1c554c08459b7025638ca4eddba0d35babe8c26b202a70a74e9442d577896211", - sha_win = "428bc6094671937af96f26d803871fc5cd83d4d2b1c1df45fa6873a9bc5cac51", - ), - "2.0.13": struct( - hash = "ce0e4a4d1cab395ee5082a60ebb4f3891a94b256", - sha_linux = "8986ed886e111c661099c5147126b8a379a4040aab6a1f572fe01f0f9b99a343", - sha_mac = "88c91332c8c76fed14ebf0edc9a08f586012f54f04ad61e5b1b6d02bf96bdeab", - sha_win = "9fb3b945b7bd56e34d17ec04de4cce475f26c49d161aee9d9c0b8b1434591f88", - ), -} diff --git a/emsdk-cache/emsdk-main/bazel/test_external/.bazelrc b/emsdk-cache/emsdk-main/bazel/test_external/.bazelrc deleted file mode 100644 index fbd75a7ea..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/.bazelrc +++ /dev/null @@ -1 +0,0 @@ -build --incompatible_enable_cc_toolchain_resolution diff --git a/emsdk-cache/emsdk-main/bazel/test_external/.gitignore b/emsdk-cache/emsdk-main/bazel/test_external/.gitignore deleted file mode 100644 index 3e67f7873..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -bazel-bin -bazel-out -bazel-test_external -bazel-testlogs \ No newline at end of file diff --git a/emsdk-cache/emsdk-main/bazel/test_external/MODULE.bazel b/emsdk-cache/emsdk-main/bazel/test_external/MODULE.bazel deleted file mode 100644 index 78fdaeb7d..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/MODULE.bazel +++ /dev/null @@ -1,6 +0,0 @@ -bazel_dep(name = "rules_cc", version = "0.1.1") -bazel_dep(name = "emsdk") -local_path_override( - module_name = "emsdk", - path = "..", -) diff --git a/emsdk-cache/emsdk-main/bazel/test_external/MODULE.bazel.lock b/emsdk-cache/emsdk-main/bazel/test_external/MODULE.bazel.lock deleted file mode 100644 index f3742587c..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/MODULE.bazel.lock +++ /dev/null @@ -1,3696 +0,0 @@ -{ - "lockFileVersion": 18, - "registryFileHashes": { - "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", - "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", - "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", - "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", - "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", - "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/source.json": "9be551b8d4e3ef76875c0d744b5d6a504a27e3ae67bc6b28f46415fd2d2957da", - "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/MODULE.bazel": "e4529e12d8cd5b828e2b5960d07d3ec032541740d419d7d5b859cabbf5b056f9", - "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/source.json": "80cb66069ad626e0921555cd2bf278286fd7763fae2450e564e351792e8303f4", - "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/MODULE.bazel": "f19e6b4a16f77f8cf3728eac1f60dbfd8e043517fd4f4dbf17a75a6c50936d62", - "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/source.json": "abbb3eac3b6af76b8ce230a9a901c6d08d93f4f5ffd55314bf630827dddee57e", - "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", - "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", - "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", - "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", - "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", - "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", - "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", - "https://bcr.bazel.build/modules/bazel_features/1.21.0/source.json": "3e8379efaaef53ce35b7b8ba419df829315a880cb0a030e5bb45c96d6d5ecb5f", - "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", - "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", - "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", - "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", - "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", - "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", - "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", - "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", - "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", - "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", - "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", - "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953", - "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", - "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", - "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", - "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", - "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", - "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/source.json": "41e9e129f80d8c8bf103a7acc337b76e54fad1214ac0a7084bf24f4cd924b8b4", - "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", - "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", - "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", - "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", - "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", - "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", - "https://bcr.bazel.build/modules/platforms/0.0.11/source.json": "f7e188b79ebedebfe75e9e1d098b8845226c7992b307e28e1496f23112e8fc29", - "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", - "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", - "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", - "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", - "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", - "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", - "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", - "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", - "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", - "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", - "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", - "https://bcr.bazel.build/modules/protobuf/29.0/source.json": "b857f93c796750eef95f0d61ee378f3420d00ee1dd38627b27193aa482f4f981", - "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", - "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", - "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/source.json": "be4789e951dd5301282729fe3d4938995dc4c1a81c2ff150afc9f1b0504c6022", - "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", - "https://bcr.bazel.build/modules/re2/2023-09-01/source.json": "e044ce89c2883cd957a2969a43e79f7752f9656f6b20050b62f90ede21ec6eb4", - "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", - "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", - "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", - "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", - "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", - "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", - "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", - "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", - "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", - "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", - "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", - "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", - "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", - "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", - "https://bcr.bazel.build/modules/rules_cc/0.1.1/source.json": "d61627377bd7dd1da4652063e368d9366fc9a73920bfa396798ad92172cf645c", - "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", - "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", - "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", - "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", - "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", - "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", - "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", - "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", - "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", - "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", - "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", - "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", - "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", - "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", - "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", - "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", - "https://bcr.bazel.build/modules/rules_java/8.6.1/source.json": "f18d9ad3c4c54945bf422ad584fa6c5ca5b3116ff55a5b1bc77e5c1210be5960", - "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", - "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", - "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", - "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", - "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", - "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", - "https://bcr.bazel.build/modules/rules_jvm_external/6.3/source.json": "6f5f5a5a4419ae4e37c35a5bb0a6ae657ed40b7abc5a5189111b47fcebe43197", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", - "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", - "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", - "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", - "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", - "https://bcr.bazel.build/modules/rules_nodejs/5.8.2/MODULE.bazel": "6bc03c8f37f69401b888023bf511cb6ee4781433b0cb56236b2e55a21e3a026a", - "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/MODULE.bazel": "42e8d5254b6135f890fecca7c8d7f95a7d27a45f8275b276f66ec337767530ef", - "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/source.json": "80e0a68eb81772f1631f8b69014884eebc2474b3b3025fd19a5240ae4f76f9c9", - "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", - "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", - "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a", - "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", - "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", - "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", - "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", - "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", - "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", - "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", - "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", - "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", - "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", - "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", - "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", - "https://bcr.bazel.build/modules/rules_python/1.3.0/MODULE.bazel": "8361d57eafb67c09b75bf4bbe6be360e1b8f4f18118ab48037f2bd50aa2ccb13", - "https://bcr.bazel.build/modules/rules_python/1.3.0/source.json": "25932f917cd279c7baefa6cb1d3fa8750a7a29de522024449b19af6eab51f4a0", - "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", - "https://bcr.bazel.build/modules/rules_shell/0.2.0/source.json": "7f27af3c28037d9701487c4744b5448d26537cc66cdef0d8df7ae85411f8de95", - "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", - "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", - "https://bcr.bazel.build/modules/stardoc/0.5.4/MODULE.bazel": "6569966df04610b8520957cb8e97cf2e9faac2c0309657c537ab51c16c18a2a4", - "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", - "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", - "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", - "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", - "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", - "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", - "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d", - "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" - }, - "selectedYankedVersions": {}, - "moduleExtensions": { - "@@aspect_bazel_lib+//lib:extensions.bzl%toolchains": { - "general": { - "bzlTransitiveDigest": "nrCBrZBQH3Dq30TXMpPMV6lWpEDozX0S0kCia4Lrpj0=", - "usagesDigest": "1c7PNX163TGNqWzfejRnWpH/hiT4/GRG0kYxuez0Uz0=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "copy_directory_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "copy_directory_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "copy_directory_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "copy_directory_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "copy_directory_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "copy_directory_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "copy_directory_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_toolchains_repo", - "attributes": { - "user_repository_name": "copy_directory" - } - }, - "copy_to_directory_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "copy_to_directory_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "copy_to_directory_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "copy_to_directory_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "copy_to_directory_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "copy_to_directory_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "copy_to_directory_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_toolchains_repo", - "attributes": { - "user_repository_name": "copy_to_directory" - } - }, - "jq_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "1.6" - } - }, - "jq_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "1.6" - } - }, - "jq_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "1.6" - } - }, - "jq_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "1.6" - } - }, - "jq": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_host_alias_repo", - "attributes": {} - }, - "jq_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_toolchains_repo", - "attributes": { - "user_repository_name": "jq" - } - }, - "yq_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "4.25.2" - } - }, - "yq_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "4.25.2" - } - }, - "yq_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "4.25.2" - } - }, - "yq_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_arm64", - "version": "4.25.2" - } - }, - "yq_linux_s390x": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_s390x", - "version": "4.25.2" - } - }, - "yq_linux_ppc64le": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_ppc64le", - "version": "4.25.2" - } - }, - "yq_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "4.25.2" - } - }, - "yq": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_host_alias_repo", - "attributes": {} - }, - "yq_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_toolchains_repo", - "attributes": { - "user_repository_name": "yq" - } - }, - "coreutils_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "0.0.16" - } - }, - "coreutils_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "0.0.16" - } - }, - "coreutils_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "0.0.16" - } - }, - "coreutils_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "linux_arm64", - "version": "0.0.16" - } - }, - "coreutils_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "0.0.16" - } - }, - "coreutils_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_toolchains_repo", - "attributes": { - "user_repository_name": "coreutils" - } - }, - "bsd_tar_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "bsd_tar_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "bsd_tar_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "bsd_tar_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "bsd_tar_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "bsd_tar_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%tar_toolchains_repo", - "attributes": { - "user_repository_name": "bsd_tar" - } - }, - "expand_template_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "expand_template_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "expand_template_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "expand_template_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "expand_template_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "expand_template_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "expand_template_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_toolchains_repo", - "attributes": { - "user_repository_name": "expand_template" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "aspect_bazel_lib+", - "aspect_bazel_lib", - "aspect_bazel_lib+" - ], - [ - "aspect_bazel_lib+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_bazel_lib+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { - "general": { - "bzlTransitiveDigest": "poAa/2uyrVSr9Hel1HD6GfFwqId27yXfePnG+3Dmt90=", - "usagesDigest": "yxkJioaKxOYkZAdkGoq2Cm79s4pW36Xwx7a8awQOU2E=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "pnpm": { - "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", - "attributes": { - "package": "pnpm", - "version": "8.6.7", - "root_package": "", - "link_workspace": "", - "link_packages": {}, - "integrity": "sha512-vRIWpD/L4phf9Bk2o/O2TDR8fFoJnpYrp2TKqTIZF/qZ2/rgL3qKXzHofHgbXsinwMoSEigz28sqk3pQ+yMEQQ==", - "url": "", - "commit": "", - "patch_args": [ - "-p0" - ], - "patches": [], - "custom_postinstall": "", - "npm_auth": "", - "npm_auth_basic": "", - "npm_auth_username": "", - "npm_auth_password": "", - "lifecycle_hooks": [], - "extra_build_content": "load(\"@aspect_rules_js//js:defs.bzl\", \"js_binary\")\njs_binary(name = \"pnpm\", data = glob([\"package/**\"]), entry_point = \"package/dist/pnpm.cjs\", visibility = [\"//visibility:public\"])", - "generate_bzl_library_targets": false, - "extract_full_archive": true - } - }, - "pnpm__links": { - "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", - "attributes": { - "package": "pnpm", - "version": "8.6.7", - "dev": false, - "root_package": "", - "link_packages": {}, - "deps": {}, - "transitive_closure": {}, - "lifecycle_build_target": false, - "lifecycle_hooks_env": [], - "lifecycle_hooks_execution_requirements": [ - "no-sandbox" - ], - "lifecycle_hooks_use_default_shell_env": false, - "bins": {}, - "package_visibility": [ - "//visibility:public" - ], - "replace_package": "" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "aspect_bazel_lib+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_bazel_lib+", - "bazel_tools", - "bazel_tools" - ], - [ - "aspect_rules_js+", - "aspect_bazel_lib", - "aspect_bazel_lib+" - ], - [ - "aspect_rules_js+", - "bazel_features", - "bazel_features+" - ], - [ - "aspect_rules_js+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_rules_js+", - "bazel_tools", - "bazel_tools" - ], - [ - "bazel_features+", - "bazel_features_globals", - "bazel_features++version_extension+bazel_features_globals" - ], - [ - "bazel_features+", - "bazel_features_version", - "bazel_features++version_extension+bazel_features_version" - ], - [ - "bazel_features+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@emsdk+//:emscripten_cache.bzl%emscripten_cache": { - "general": { - "bzlTransitiveDigest": "uqDvXmpTNqW4+ie/Fk+xC3TrFrKvL+9hNtoP51Kt2oo=", - "usagesDigest": "d45w3mu98tmYO95D//utIzVG+p8OPeGUpN0TgQMnLHA=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "emscripten_cache": { - "repoRuleId": "@@emsdk+//:emscripten_cache.bzl%_emscripten_cache_repository", - "attributes": { - "configuration": [], - "targets": [] - } - } - }, - "recordedRepoMappingEntries": [] - } - }, - "@@emsdk+//:emscripten_deps.bzl%emscripten_deps": { - "general": { - "bzlTransitiveDigest": "h0wQ3PSRx/Q9n+izTifYO8L728OTd9B5YbLOWcobVYE=", - "usagesDigest": "eqaMlu1tts7n29bG5zUl3DtA/9ARE+6aHrSK4X7kNno=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "emscripten_bin_linux": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "27fc220a9ad98d323cad73531ff563e9838c9e1205f51ee2a5632bb4266a35d2", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" - } - }, - "emscripten_bin_linux_arm64": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "2d03f8eb3f81dd94821658eefbb442a92b0b7601f4cfb08590590fd7bc467ef8", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" - } - }, - "emscripten_bin_mac": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "c06048915595726fc2e2da6a8db3134581a6287645fb818802a9734ff9785e77", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" - } - }, - "emscripten_bin_mac_arm64": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "35d743453d0f91857b09f00d721037bb46753aaeae373bd7f64746338db11770", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" - } - }, - "emscripten_bin_win": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/clang++.exe\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/llvm-ar.exe\",\n \"bin/llvm-dwarfdump.exe\",\n \"bin/llvm-nm.exe\",\n \"bin/llvm-objcopy.exe\",\n \"bin/wasm-ctor-eval.exe\",\n \"bin/wasm-emscripten-finalize.exe\",\n \"bin/wasm-ld.exe\",\n \"bin/wasm-metadce.exe\",\n \"bin/wasm-opt.exe\",\n \"bin/wasm-split.exe\",\n \"bin/wasm2js.exe\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar.exe\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "3b576e825b26426bb72854ed98752df3fcb58cc3ab1dc116566e328b79a8abb3", - "strip_prefix": "install", - "type": "zip", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/win/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.zip" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "bazel_tools", - "rules_cc", - "rules_cc+" - ], - [ - "emsdk+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@pybind11_bazel+//:python_configure.bzl%extension": { - "general": { - "bzlTransitiveDigest": "d4N/SZrl3ONcmzE98rcV0Fsro0iUbjNQFTIiLiGuH+k=", - "usagesDigest": "fycyB39YnXIJkfWCIXLUKJMZzANcuLy9ZE73hRucjFk=", - "recordedFileInputs": { - "@@pybind11_bazel+//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e" - }, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "local_config_python": { - "repoRuleId": "@@pybind11_bazel+//:python_configure.bzl%python_configure", - "attributes": {} - }, - "pybind11": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file": "@@pybind11_bazel+//:pybind11.BUILD", - "strip_prefix": "pybind11-2.11.1", - "urls": [ - "https://github.com/pybind/pybind11/archive/v2.11.1.zip" - ] - } - } - }, - "recordedRepoMappingEntries": [ - [ - "pybind11_bazel+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_fuzzing+//fuzzing/private:extensions.bzl%non_module_dependencies": { - "general": { - "bzlTransitiveDigest": "mGiTB79hRNjmeDTQdzkpCHyzXhErMbufeAmySBt7s5s=", - "usagesDigest": "wy6ISK6UOcBEjj/mvJ/S3WeXoO67X+1llb9yPyFtPgc=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "platforms": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz", - "https://github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz" - ], - "sha256": "8150406605389ececb6da07cbcb509d5637a3ab9a24bc69b1101531367d89d74" - } - }, - "rules_python": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8", - "strip_prefix": "rules_python-0.28.0", - "url": "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz" - } - }, - "bazel_skylib": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", - "urls": [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz", - "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" - ] - } - }, - "com_google_absl": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.1.zip" - ], - "strip_prefix": "abseil-cpp-20240116.1", - "integrity": "sha256-7capMWOvWyoYbUaHF/b+I2U6XLMaHmky8KugWvfXYuk=" - } - }, - "rules_fuzzing_oss_fuzz": { - "repoRuleId": "@@rules_fuzzing+//fuzzing/private/oss_fuzz:repository.bzl%oss_fuzz_repository", - "attributes": {} - }, - "honggfuzz": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file": "@@rules_fuzzing+//:honggfuzz.BUILD", - "sha256": "6b18ba13bc1f36b7b950c72d80f19ea67fbadc0ac0bb297ec89ad91f2eaa423e", - "url": "https://github.com/google/honggfuzz/archive/2.5.zip", - "strip_prefix": "honggfuzz-2.5" - } - }, - "rules_fuzzing_jazzer": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", - "attributes": { - "sha256": "ee6feb569d88962d59cb59e8a31eb9d007c82683f3ebc64955fd5b96f277eec2", - "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer/0.20.1/jazzer-0.20.1.jar" - } - }, - "rules_fuzzing_jazzer_api": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", - "attributes": { - "sha256": "f5a60242bc408f7fa20fccf10d6c5c5ea1fcb3c6f44642fec5af88373ae7aa1b", - "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer-api/0.20.1/jazzer-api-0.20.1.jar" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_fuzzing+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_java+//java:rules_java_deps.bzl%compatibility_proxy": { - "general": { - "bzlTransitiveDigest": "84xJEZ1jnXXwo8BXMprvBm++rRt4jsTu9liBxz0ivps=", - "usagesDigest": "jTQDdLDxsS43zuRmg1faAjIEPWdLAbDAowI1pInQSoo=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "compatibility_proxy": { - "repoRuleId": "@@rules_java+//java:rules_java_deps.bzl%_compatibility_proxy_repo_rule", - "attributes": {} - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_java+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { - "general": { - "bzlTransitiveDigest": "sFhcgPbDQehmbD1EOXzX4H1q/CD5df8zwG4kp4jbvr8=", - "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "com_github_jetbrains_kotlin_git": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", - "attributes": { - "urls": [ - "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" - ], - "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" - } - }, - "com_github_jetbrains_kotlin": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", - "attributes": { - "git_repository_name": "com_github_jetbrains_kotlin_git", - "compiler_version": "1.9.23" - } - }, - "com_github_google_ksp": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", - "attributes": { - "urls": [ - "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" - ], - "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", - "strip_version": "1.9.23-1.0.20" - } - }, - "com_github_pinterest_ktlint": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", - "attributes": { - "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", - "urls": [ - "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" - ], - "executable": true - } - }, - "rules_android": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", - "strip_prefix": "rules_android-0.1.1", - "urls": [ - "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" - ] - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_kotlin+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_nodejs+//nodejs:extensions.bzl%node": { - "general": { - "bzlTransitiveDigest": "rphcryfYrOY/P3emfTskC/GY5YuHcwMl2B2ncjaM8lY=", - "usagesDigest": "m7d0VXcsX/qS6DKMUBtdgjQzP2eMRHqsE4wv7dzr71I=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "nodejs_linux_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_amd64" - } - }, - "nodejs_linux_arm64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_arm64" - } - }, - "nodejs_linux_s390x": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_s390x" - } - }, - "nodejs_linux_ppc64le": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_ppc64le" - } - }, - "nodejs_darwin_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "darwin_amd64" - } - }, - "nodejs_darwin_arm64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "darwin_arm64" - } - }, - "nodejs_windows_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "windows_amd64" - } - }, - "nodejs": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", - "attributes": { - "user_node_repository_name": "nodejs" - } - }, - "nodejs_host": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", - "attributes": { - "user_node_repository_name": "nodejs" - } - }, - "nodejs_toolchains": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl%nodejs_toolchains_repo", - "attributes": { - "user_node_repository_name": "nodejs" - } - } - }, - "recordedRepoMappingEntries": [] - } - }, - "@@rules_python+//python/extensions:pip.bzl%pip": { - "general": { - "bzlTransitiveDigest": "Jbed6zJUJ6E78XRyOlnG1ryhBDvVeikdntPW1D40S/E=", - "usagesDigest": "fztm9ST3ki9E77tct2ZwJe0w38LvfMY8mRYp+YHxXQE=", - "recordedFileInputs": { - "@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", - "@@rules_fuzzing+//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", - "@@rules_python+//tools/publish/requirements_darwin.txt": "095d4a4f3d639dce831cd493367631cd51b53665292ab20194bac2c0c6458fa8", - "@@rules_python+//tools/publish/requirements_linux.txt": "d576e0d8542df61396a9b38deeaa183c24135ed5e8e73bb9622f298f2671811e", - "@@rules_python+//tools/publish/requirements_windows.txt": "d18538a3982beab378fd5687f4db33162ee1ece69801f9a451661b1b64286b76" - }, - "recordedDirentsInputs": {}, - "envVariables": { - "RULES_PYTHON_REPO_DEBUG": null, - "RULES_PYTHON_REPO_DEBUG_VERBOSITY": null - }, - "generatedRepoSpecs": { - "pip_deps_310_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "pip_deps_310", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_310_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "pip_deps_310", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_311_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "pip_deps_311", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_311_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "pip_deps_311", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_312_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "pip_deps_312", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_312_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "pip_deps_312", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_38_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "pip_deps_38", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_38_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "pip_deps_38", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_39_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "pip_deps_39", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_39_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "pip_deps_39", - "requirement": "setuptools<=70.3.0" - } - }, - "rules_fuzzing_py_deps_310_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "rules_fuzzing_py_deps_310", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_310_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "rules_fuzzing_py_deps_310", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_311_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_fuzzing_py_deps_311", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_311_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_fuzzing_py_deps_311", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_312_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "rules_fuzzing_py_deps_312", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_312_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "rules_fuzzing_py_deps_312", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_38_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "rules_fuzzing_py_deps_38", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_38_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "rules_fuzzing_py_deps_38", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_39_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "rules_fuzzing_py_deps_39", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_39_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "rules_fuzzing_py_deps_39", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "backports.tarfile-1.2.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "backports-tarfile==1.2.0", - "sha256": "77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", - "urls": [ - "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "backports_tarfile-1.2.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "backports-tarfile==1.2.0", - "sha256": "d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", - "urls": [ - "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_certifi_py3_none_any_922820b5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "certifi-2024.8.30-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "certifi==2024.8.30", - "sha256": "922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", - "urls": [ - "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_certifi_sdist_bec941d2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "certifi-2024.8.30.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "certifi==2024.8.30", - "sha256": "bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", - "urls": [ - "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", - "urls": [ - "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", - "urls": [ - "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", - "urls": [ - "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", - "urls": [ - "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", - "urls": [ - "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_sdist_1c39c601": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "cffi-1.17.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", - "urls": [ - "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", - "urls": [ - "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", - "urls": [ - "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", - "urls": [ - "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", - "urls": [ - "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", - "urls": [ - "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", - "urls": [ - "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", - "urls": [ - "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", - "urls": [ - "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", - "urls": [ - "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", - "urls": [ - "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", - "urls": [ - "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_sdist_223217c3": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "charset_normalizer-3.4.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", - "urls": [ - "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", - "urls": [ - "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", - "urls": [ - "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", - "urls": [ - "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", - "urls": [ - "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", - "urls": [ - "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", - "urls": [ - "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_sdist_315b9001": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "cryptography-43.0.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", - "urls": [ - "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "docutils-0.21.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "docutils==0.21.2", - "sha256": "dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", - "urls": [ - "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_docutils_sdist_3a6b1873": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "docutils-0.21.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "docutils==0.21.2", - "sha256": "3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", - "urls": [ - "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_idna_py3_none_any_946d195a": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "idna-3.10-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "idna==3.10", - "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", - "urls": [ - "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_idna_sdist_12f65c9b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "idna-3.10.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "idna==3.10", - "sha256": "12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", - "urls": [ - "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "importlib_metadata-8.5.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "importlib-metadata==8.5.0", - "sha256": "45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", - "urls": [ - "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_importlib_metadata_sdist_71522656": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "importlib_metadata-8.5.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "importlib-metadata==8.5.0", - "sha256": "71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", - "urls": [ - "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.classes-3.4.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-classes==3.4.0", - "sha256": "f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", - "urls": [ - "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco.classes-3.4.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-classes==3.4.0", - "sha256": "47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", - "urls": [ - "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.context-6.0.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-context==6.0.1", - "sha256": "f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", - "urls": [ - "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco_context-6.0.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-context==6.0.1", - "sha256": "9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", - "urls": [ - "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.functools-4.1.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-functools==4.1.0", - "sha256": "ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649", - "urls": [ - "https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco_functools-4.1.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-functools==4.1.0", - "sha256": "70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d", - "urls": [ - "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "jeepney-0.8.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jeepney==0.8.0", - "sha256": "c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", - "urls": [ - "https://files.pythonhosted.org/packages/ae/72/2a1e2290f1ab1e06f71f3d0f1646c9e4634e70e1d37491535e19266e8dc9/jeepney-0.8.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jeepney_sdist_5efe48d2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jeepney-0.8.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jeepney==0.8.0", - "sha256": "5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", - "urls": [ - "https://files.pythonhosted.org/packages/d6/f4/154cf374c2daf2020e05c3c6a03c91348d59b23c5366e968feb198306fdf/jeepney-0.8.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_keyring_py3_none_any_5426f817": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "keyring-25.4.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "keyring==25.4.1", - "sha256": "5426f817cf7f6f007ba5ec722b1bcad95a75b27d780343772ad76b17cb47b0bf", - "urls": [ - "https://files.pythonhosted.org/packages/83/25/e6d59e5f0a0508d0dca8bb98c7f7fd3772fc943ac3f53d5ab18a218d32c0/keyring-25.4.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_keyring_sdist_b07ebc55": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "keyring-25.4.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "keyring==25.4.1", - "sha256": "b07ebc55f3e8ed86ac81dd31ef14e81ace9dd9c3d4b5d77a6e9a2016d0d71a1b", - "urls": [ - "https://files.pythonhosted.org/packages/a5/1c/2bdbcfd5d59dc6274ffb175bc29aa07ecbfab196830e0cfbde7bd861a2ea/keyring-25.4.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "markdown_it_py-3.0.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "markdown-it-py==3.0.0", - "sha256": "355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", - "urls": [ - "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "markdown-it-py-3.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "markdown-it-py==3.0.0", - "sha256": "e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", - "urls": [ - "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_mdurl_py3_none_any_84008a41": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "mdurl-0.1.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "mdurl==0.1.2", - "sha256": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", - "urls": [ - "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_mdurl_sdist_bb413d29": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "mdurl-0.1.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "mdurl==0.1.2", - "sha256": "bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", - "urls": [ - "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "more_itertools-10.5.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "more-itertools==10.5.0", - "sha256": "037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", - "urls": [ - "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_more_itertools_sdist_5482bfef": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "more-itertools-10.5.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "more-itertools==10.5.0", - "sha256": "5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", - "urls": [ - "https://files.pythonhosted.org/packages/51/78/65922308c4248e0eb08ebcbe67c95d48615cc6f27854b6f2e57143e9178f/more-itertools-10.5.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86", - "urls": [ - "https://files.pythonhosted.org/packages/b3/89/1daff5d9ba5a95a157c092c7c5f39b8dd2b1ddb4559966f808d31cfb67e0/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811", - "urls": [ - "https://files.pythonhosted.org/packages/2c/b6/42fc3c69cabf86b6b81e4c051a9b6e249c5ba9f8155590222c2622961f58/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200", - "urls": [ - "https://files.pythonhosted.org/packages/45/b9/833f385403abaf0023c6547389ec7a7acf141ddd9d1f21573723a6eab39a/nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164", - "urls": [ - "https://files.pythonhosted.org/packages/05/2b/85977d9e11713b5747595ee61f381bc820749daf83f07b90b6c9964cf932/nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189", - "urls": [ - "https://files.pythonhosted.org/packages/72/f2/5c894d5265ab80a97c68ca36f25c8f6f0308abac649aaf152b74e7e854a8/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b", - "urls": [ - "https://files.pythonhosted.org/packages/c2/a8/3bb02d0c60a03ad3a112b76c46971e9480efa98a8946677b5a59f60130ca/nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307", - "urls": [ - "https://files.pythonhosted.org/packages/1b/63/6ab90d0e5225ab9780f6c9fb52254fa36b52bb7c188df9201d05b647e5e1/nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe", - "urls": [ - "https://files.pythonhosted.org/packages/a3/da/0c4e282bc3cff4a0adf37005fa1fb42257673fbc1bbf7d1ff639ec3d255a/nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a", - "urls": [ - "https://files.pythonhosted.org/packages/de/81/c291231463d21da5f8bba82c8167a6d6893cc5419b0639801ee5d3aeb8a9/nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204", - "urls": [ - "https://files.pythonhosted.org/packages/eb/61/73a007c74c37895fdf66e0edcd881f5eaa17a348ff02f4bb4bc906d61085/nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-win_amd64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844", - "urls": [ - "https://files.pythonhosted.org/packages/26/8d/53c5b19c4999bdc6ba95f246f4ef35ca83d7d7423e5e38be43ad66544e5d/nh3-0.2.18-cp37-abi3-win_amd64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_sdist_94a16692": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "nh3-0.2.18.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4", - "urls": [ - "https://files.pythonhosted.org/packages/62/73/10df50b42ddb547a907deeb2f3c9823022580a7a47281e8eae8e003a9639/nh3-0.2.18.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "pkginfo-1.10.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pkginfo==1.10.0", - "sha256": "889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097", - "urls": [ - "https://files.pythonhosted.org/packages/56/09/054aea9b7534a15ad38a363a2bd974c20646ab1582a387a95b8df1bfea1c/pkginfo-1.10.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pkginfo_sdist_5df73835": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pkginfo-1.10.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pkginfo==1.10.0", - "sha256": "5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297", - "urls": [ - "https://files.pythonhosted.org/packages/2f/72/347ec5be4adc85c182ed2823d8d1c7b51e13b9a6b0c1aae59582eca652df/pkginfo-1.10.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "pycparser-2.22-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pycparser==2.22", - "sha256": "c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", - "urls": [ - "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pycparser_sdist_491c8be9": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pycparser-2.22.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pycparser==2.22", - "sha256": "491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", - "urls": [ - "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "pygments-2.18.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pygments==2.18.0", - "sha256": "b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", - "urls": [ - "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pygments_sdist_786ff802": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pygments-2.18.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pygments==2.18.0", - "sha256": "786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", - "urls": [ - "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_windows_x86_64" - ], - "filename": "pywin32_ctypes-0.2.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pywin32-ctypes==0.2.3", - "sha256": "8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", - "urls": [ - "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pywin32-ctypes-0.2.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pywin32-ctypes==0.2.3", - "sha256": "d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", - "urls": [ - "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "readme_renderer-44.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "readme-renderer==44.0", - "sha256": "2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", - "urls": [ - "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_readme_renderer_sdist_8712034e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "readme_renderer-44.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "readme-renderer==44.0", - "sha256": "8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", - "urls": [ - "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_requests_py3_none_any_70761cfe": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "requests-2.32.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests==2.32.3", - "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", - "urls": [ - "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_requests_sdist_55365417": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "requests-2.32.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests==2.32.3", - "sha256": "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", - "urls": [ - "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "requests_toolbelt-1.0.0-py2.py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests-toolbelt==1.0.0", - "sha256": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", - "urls": [ - "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "requests-toolbelt-1.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests-toolbelt==1.0.0", - "sha256": "7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", - "urls": [ - "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "rfc3986-2.0.0-py2.py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rfc3986==2.0.0", - "sha256": "50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", - "urls": [ - "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_rfc3986_sdist_97aacf9d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "rfc3986-2.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rfc3986==2.0.0", - "sha256": "97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", - "urls": [ - "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_rich_py3_none_any_6049d5e6": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "rich-13.9.4-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rich==13.9.4", - "sha256": "6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", - "urls": [ - "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_rich_sdist_43959497": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "rich-13.9.4.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rich==13.9.4", - "sha256": "439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", - "urls": [ - "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "SecretStorage-3.3.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "secretstorage==3.3.3", - "sha256": "f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", - "urls": [ - "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_secretstorage_sdist_2403533e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "SecretStorage-3.3.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "secretstorage==3.3.3", - "sha256": "2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", - "urls": [ - "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_twine_py3_none_any_215dbe7b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "twine-5.1.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "twine==5.1.1", - "sha256": "215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997", - "urls": [ - "https://files.pythonhosted.org/packages/5d/ec/00f9d5fd040ae29867355e559a94e9a8429225a0284a3f5f091a3878bfc0/twine-5.1.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_twine_sdist_9aa08251": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "twine-5.1.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "twine==5.1.1", - "sha256": "9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db", - "urls": [ - "https://files.pythonhosted.org/packages/77/68/bd982e5e949ef8334e6f7dcf76ae40922a8750aa2e347291ae1477a4782b/twine-5.1.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "urllib3-2.2.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "urllib3==2.2.3", - "sha256": "ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", - "urls": [ - "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_urllib3_sdist_e7d814a8": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "urllib3-2.2.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "urllib3==2.2.3", - "sha256": "e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", - "urls": [ - "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_zipp_py3_none_any_a817ac80": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "zipp-3.20.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "zipp==3.20.2", - "sha256": "a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", - "urls": [ - "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_zipp_sdist_bc9eb26f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "zipp-3.20.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "zipp==3.20.2", - "sha256": "bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", - "urls": [ - "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz" - ] - } - }, - "pip_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "pip_deps", - "extra_hub_aliases": {}, - "whl_map": { - "numpy": "{\"pip_deps_310_numpy\":[{\"version\":\"3.10\"}],\"pip_deps_311_numpy\":[{\"version\":\"3.11\"}],\"pip_deps_312_numpy\":[{\"version\":\"3.12\"}],\"pip_deps_38_numpy\":[{\"version\":\"3.8\"}],\"pip_deps_39_numpy\":[{\"version\":\"3.9\"}]}", - "setuptools": "{\"pip_deps_310_setuptools\":[{\"version\":\"3.10\"}],\"pip_deps_311_setuptools\":[{\"version\":\"3.11\"}],\"pip_deps_312_setuptools\":[{\"version\":\"3.12\"}],\"pip_deps_38_setuptools\":[{\"version\":\"3.8\"}],\"pip_deps_39_setuptools\":[{\"version\":\"3.9\"}]}" - }, - "packages": [ - "numpy", - "setuptools" - ], - "groups": {} - } - }, - "rules_fuzzing_py_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "rules_fuzzing_py_deps", - "extra_hub_aliases": {}, - "whl_map": { - "absl_py": "{\"rules_fuzzing_py_deps_310_absl_py\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_absl_py\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_absl_py\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_absl_py\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_absl_py\":[{\"version\":\"3.9\"}]}", - "six": "{\"rules_fuzzing_py_deps_310_six\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_six\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_six\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_six\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_six\":[{\"version\":\"3.9\"}]}" - }, - "packages": [ - "absl_py", - "six" - ], - "groups": {} - } - }, - "rules_python_publish_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "rules_python_publish_deps", - "extra_hub_aliases": {}, - "whl_map": { - "backports_tarfile": "{\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\":[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\":[{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"version\":\"3.11\"}]}", - "certifi": "{\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\":[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_certifi_sdist_bec941d2\":[{\"filename\":\"certifi-2024.8.30.tar.gz\",\"version\":\"3.11\"}]}", - "cffi": "{\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_sdist_1c39c601\":[{\"filename\":\"cffi-1.17.1.tar.gz\",\"version\":\"3.11\"}]}", - "charset_normalizer": "{\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\":[{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\":[{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", - "cryptography": "{\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_sdist_315b9001\":[{\"filename\":\"cryptography-43.0.3.tar.gz\",\"version\":\"3.11\"}]}", - "docutils": "{\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\":[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\":[{\"filename\":\"docutils-0.21.2.tar.gz\",\"version\":\"3.11\"}]}", - "idna": "{\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\":[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_idna_sdist_12f65c9b\":[{\"filename\":\"idna-3.10.tar.gz\",\"version\":\"3.11\"}]}", - "importlib_metadata": "{\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\":[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\":[{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_classes": "{\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\":[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\":[{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_context": "{\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\":[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\":[{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_functools": "{\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\":[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\":[{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"version\":\"3.11\"}]}", - "jeepney": "{\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\":[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\":[{\"filename\":\"jeepney-0.8.0.tar.gz\",\"version\":\"3.11\"}]}", - "keyring": "{\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\":[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\":[{\"filename\":\"keyring-25.4.1.tar.gz\",\"version\":\"3.11\"}]}", - "markdown_it_py": "{\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\":[{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\":[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "mdurl": "{\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\":[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\":[{\"filename\":\"mdurl-0.1.2.tar.gz\",\"version\":\"3.11\"}]}", - "more_itertools": "{\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\":[{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\":[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"version\":\"3.11\"}]}", - "nh3": "{\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_sdist_94a16692\":[{\"filename\":\"nh3-0.2.18.tar.gz\",\"version\":\"3.11\"}]}", - "pkginfo": "{\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\":[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\":[{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"version\":\"3.11\"}]}", - "pycparser": "{\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\":[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\":[{\"filename\":\"pycparser-2.22.tar.gz\",\"version\":\"3.11\"}]}", - "pygments": "{\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\":[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pygments_sdist_786ff802\":[{\"filename\":\"pygments-2.18.0.tar.gz\",\"version\":\"3.11\"}]}", - "pywin32_ctypes": "{\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\":[{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\":[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"version\":\"3.11\"}]}", - "readme_renderer": "{\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\":[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\":[{\"filename\":\"readme_renderer-44.0.tar.gz\",\"version\":\"3.11\"}]}", - "requests": "{\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\":[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_sdist_55365417\":[{\"filename\":\"requests-2.32.3.tar.gz\",\"version\":\"3.11\"}]}", - "requests_toolbelt": "{\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\":[{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\":[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "rfc3986": "{\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\":[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\":[{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "rich": "{\"rules_python_publish_deps_311_rich_py3_none_any_6049d5e6\":[{\"filename\":\"rich-13.9.4-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rich_sdist_43959497\":[{\"filename\":\"rich-13.9.4.tar.gz\",\"version\":\"3.11\"}]}", - "secretstorage": "{\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\":[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\":[{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"version\":\"3.11\"}]}", - "twine": "{\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\":[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_twine_sdist_9aa08251\":[{\"filename\":\"twine-5.1.1.tar.gz\",\"version\":\"3.11\"}]}", - "urllib3": "{\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\":[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\":[{\"filename\":\"urllib3-2.2.3.tar.gz\",\"version\":\"3.11\"}]}", - "zipp": "{\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\":[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\":[{\"filename\":\"zipp-3.20.2.tar.gz\",\"version\":\"3.11\"}]}" - }, - "packages": [ - "backports_tarfile", - "certifi", - "charset_normalizer", - "docutils", - "idna", - "importlib_metadata", - "jaraco_classes", - "jaraco_context", - "jaraco_functools", - "keyring", - "markdown_it_py", - "mdurl", - "more_itertools", - "nh3", - "pkginfo", - "pygments", - "readme_renderer", - "requests", - "requests_toolbelt", - "rfc3986", - "rich", - "twine", - "urllib3", - "zipp" - ], - "groups": {} - } - } - }, - "moduleExtensionMetadata": { - "useAllRepos": "NO", - "reproducible": false - }, - "recordedRepoMappingEntries": [ - [ - "bazel_features+", - "bazel_features_globals", - "bazel_features++version_extension+bazel_features_globals" - ], - [ - "bazel_features+", - "bazel_features_version", - "bazel_features++version_extension+bazel_features_version" - ], - [ - "rules_python+", - "bazel_features", - "bazel_features+" - ], - [ - "rules_python+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "rules_python+", - "bazel_tools", - "bazel_tools" - ], - [ - "rules_python+", - "pypi__build", - "rules_python++internal_deps+pypi__build" - ], - [ - "rules_python+", - "pypi__click", - "rules_python++internal_deps+pypi__click" - ], - [ - "rules_python+", - "pypi__colorama", - "rules_python++internal_deps+pypi__colorama" - ], - [ - "rules_python+", - "pypi__importlib_metadata", - "rules_python++internal_deps+pypi__importlib_metadata" - ], - [ - "rules_python+", - "pypi__installer", - "rules_python++internal_deps+pypi__installer" - ], - [ - "rules_python+", - "pypi__more_itertools", - "rules_python++internal_deps+pypi__more_itertools" - ], - [ - "rules_python+", - "pypi__packaging", - "rules_python++internal_deps+pypi__packaging" - ], - [ - "rules_python+", - "pypi__pep517", - "rules_python++internal_deps+pypi__pep517" - ], - [ - "rules_python+", - "pypi__pip", - "rules_python++internal_deps+pypi__pip" - ], - [ - "rules_python+", - "pypi__pip_tools", - "rules_python++internal_deps+pypi__pip_tools" - ], - [ - "rules_python+", - "pypi__pyproject_hooks", - "rules_python++internal_deps+pypi__pyproject_hooks" - ], - [ - "rules_python+", - "pypi__setuptools", - "rules_python++internal_deps+pypi__setuptools" - ], - [ - "rules_python+", - "pypi__tomli", - "rules_python++internal_deps+pypi__tomli" - ], - [ - "rules_python+", - "pypi__wheel", - "rules_python++internal_deps+pypi__wheel" - ], - [ - "rules_python+", - "pypi__zipp", - "rules_python++internal_deps+pypi__zipp" - ], - [ - "rules_python+", - "pythons_hub", - "rules_python++python+pythons_hub" - ], - [ - "rules_python++python+pythons_hub", - "python_3_10_host", - "rules_python++python+python_3_10_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_11_host", - "rules_python++python+python_3_11_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_12_host", - "rules_python++python+python_3_12_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_13_host", - "rules_python++python+python_3_13_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_8_host", - "rules_python++python+python_3_8_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_9_host", - "rules_python++python+python_3_9_host" - ] - ] - } - }, - "@@rules_python+//python/uv:uv.bzl%uv": { - "general": { - "bzlTransitiveDigest": "Xpqjnjzy6zZ90Es9Wa888ZLHhn7IsNGbph/e6qoxzw8=", - "usagesDigest": "vJ5RHUxAnV24M5swNGiAnkdxMx3Hp/iOLmNANTC5Xc8=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "uv": { - "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", - "attributes": { - "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'", - "toolchain_names": [ - "none" - ], - "toolchain_implementations": { - "none": "'@@rules_python+//python:none'" - }, - "toolchain_compatible_with": { - "none": [ - "@platforms//:incompatible" - ] - }, - "toolchain_target_settings": {} - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_python+", - "platforms", - "platforms" - ] - ] - } - } - } -} diff --git a/emsdk-cache/emsdk-main/bazel/test_external/hello-embind-externs.js b/emsdk-cache/emsdk-main/bazel/test_external/hello-embind-externs.js deleted file mode 100644 index 864d22089..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/hello-embind-externs.js +++ /dev/null @@ -1,2 +0,0 @@ -// This file prevents customJSFunctionToTestClosure from being minified by the Closure compiler. -Module.customJSFunctionToTestClosure = function() {} \ No newline at end of file diff --git a/emsdk-cache/emsdk-main/bazel/test_external/hello-embind-interface.js b/emsdk-cache/emsdk-main/bazel/test_external/hello-embind-interface.js deleted file mode 100644 index ddc4d2f3d..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/hello-embind-interface.js +++ /dev/null @@ -1,3 +0,0 @@ -Module.customJSFunctionToTestClosure = function(firstParam, secondParam) { - console.log("This function adds two numbers to get", firstParam + secondParam); -} \ No newline at end of file diff --git a/emsdk-cache/emsdk-main/bazel/test_external/hello-embind.cc b/emsdk-cache/emsdk-main/bazel/test_external/hello-embind.cc deleted file mode 100644 index d5bff5f08..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/hello-embind.cc +++ /dev/null @@ -1,16 +0,0 @@ -#include - -using namespace emscripten; - -class HelloClass { - public: - static std::string SayHello(const std::string &name) { - return "Yo! " + name; - }; -}; - -EMSCRIPTEN_BINDINGS(Hello) { - emscripten::class_("HelloClass") - .constructor<>() - .class_function("SayHello", &HelloClass::SayHello); -} diff --git a/emsdk-cache/emsdk-main/bazel/test_external/hello-world.cc b/emsdk-cache/emsdk-main/bazel/test_external/hello-world.cc deleted file mode 100644 index ee72c5317..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/hello-world.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include - -int main(int argc, char** argv) { - std::cout << "hello world!" << std::endl; - return 0; -} diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/BUILD.bazel b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/BUILD.bazel deleted file mode 100644 index 4ffe24760..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/BUILD.bazel +++ /dev/null @@ -1,61 +0,0 @@ -load("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary") - -_TEST_TARGETS = [ - "long_command_line_file01", - "long_command_line_file02", - "long_command_line_file03", - "long_command_line_file04", - "long_command_line_file05", - "long_command_line_file06", - "long_command_line_file07", - "long_command_line_file08", - "long_command_line_file09", - "long_command_line_file10", - "long_command_line_file11", - "long_command_line_file12", - "long_command_line_file13", - "long_command_line_file14", - "long_command_line_file15", - "long_command_line_file16", - "long_command_line_file17", - "long_command_line_file18", - "long_command_line_file19", - "long_command_line_file20", -] - -_TEST_TARGET_SUFFIXES = [ - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", -] - -[cc_library( - name = "{}_{}".format(target, suffix), - hdrs = ["include/{}.hh".format(target)], - # stripping include prefix to create more flags passed to emcc - strip_include_prefix = "include", - srcs = ["{}.cc".format(target)], -) for target in _TEST_TARGETS for suffix in _TEST_TARGET_SUFFIXES] - -cc_binary( - name = "long_command_line", - linkshared = True, - srcs = ["long_command_line.cc"], - deps = [":{}_{}".format(target, suffix) for target in _TEST_TARGETS for suffix in _TEST_TARGET_SUFFIXES], -) - -wasm_cc_binary( - name = "long_command_line_wasm", - cc_target = ":long_command_line", - outputs = [ - "long_command_line.js", - "long_command_line.wasm", - ], -) diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file01.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file01.hh deleted file mode 100644 index 8dd06bad8..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file01.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f1(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file02.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file02.hh deleted file mode 100644 index 7a3a0ff11..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file02.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f2(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file03.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file03.hh deleted file mode 100644 index 16880553f..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file03.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f3(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file04.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file04.hh deleted file mode 100644 index 45ef1fca9..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file04.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f4(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file05.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file05.hh deleted file mode 100644 index 707ad5028..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file05.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f5(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file06.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file06.hh deleted file mode 100644 index 5d9145006..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file06.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f6(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file07.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file07.hh deleted file mode 100644 index b0bf81186..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file07.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f7(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file08.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file08.hh deleted file mode 100644 index 994b7ea7c..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file08.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f8(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file09.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file09.hh deleted file mode 100644 index 90c19583c..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file09.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f9(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file10.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file10.hh deleted file mode 100644 index 6a4388182..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file10.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f10(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file11.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file11.hh deleted file mode 100644 index 878c9396b..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file11.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f11(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file12.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file12.hh deleted file mode 100644 index b5e0bc3e9..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file12.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f12(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file13.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file13.hh deleted file mode 100644 index 634dcef13..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file13.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f13(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file14.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file14.hh deleted file mode 100644 index 8fa966621..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file14.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f14(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file15.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file15.hh deleted file mode 100644 index 1f7b7706a..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file15.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f15(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file16.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file16.hh deleted file mode 100644 index c9fa2fcef..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file16.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f16(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file17.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file17.hh deleted file mode 100644 index b959207b7..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file17.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f17(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file18.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file18.hh deleted file mode 100644 index af0bacf55..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file18.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f18(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file19.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file19.hh deleted file mode 100644 index 0ac9b4b02..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file19.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f19(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file20.hh b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file20.hh deleted file mode 100644 index 0f10c733b..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/include/long_command_line_file20.hh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void f20(); diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line.cc deleted file mode 100644 index 1ae13abec..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line.cc +++ /dev/null @@ -1,43 +0,0 @@ -#include "long_command_line_file01.hh" -#include "long_command_line_file02.hh" -#include "long_command_line_file03.hh" -#include "long_command_line_file04.hh" -#include "long_command_line_file05.hh" -#include "long_command_line_file06.hh" -#include "long_command_line_file07.hh" -#include "long_command_line_file08.hh" -#include "long_command_line_file09.hh" -#include "long_command_line_file10.hh" -#include "long_command_line_file11.hh" -#include "long_command_line_file12.hh" -#include "long_command_line_file13.hh" -#include "long_command_line_file14.hh" -#include "long_command_line_file15.hh" -#include "long_command_line_file16.hh" -#include "long_command_line_file17.hh" -#include "long_command_line_file18.hh" -#include "long_command_line_file19.hh" -#include "long_command_line_file20.hh" - -int main() { - f1(); - f2(); - f3(); - f4(); - f5(); - f6(); - f7(); - f8(); - f9(); - f10(); - f11(); - f12(); - f13(); - f14(); - f15(); - f16(); - f17(); - f18(); - f19(); - f20(); -} diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file01.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file01.cc deleted file mode 100644 index 3bf8d4aa0..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file01.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file01.hh" - -#include - -void f1() { std::cout << "hello from f1()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file02.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file02.cc deleted file mode 100644 index b8ac8141c..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file02.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file02.hh" - -#include - -void f2() { std::cout << "hello from f2()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file03.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file03.cc deleted file mode 100644 index 294e77741..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file03.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file03.hh" - -#include - -void f3() { std::cout << "hello from f3()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file04.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file04.cc deleted file mode 100644 index c0d537d1b..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file04.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file04.hh" - -#include - -void f4() { std::cout << "hello from f4()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file05.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file05.cc deleted file mode 100644 index 310e3e04c..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file05.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file05.hh" - -#include - -void f5() { std::cout << "hello from f5()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file06.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file06.cc deleted file mode 100644 index 2c218fdcc..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file06.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file06.hh" - -#include - -void f6() { std::cout << "hello from f6()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file07.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file07.cc deleted file mode 100644 index c78dc400c..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file07.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file07.hh" - -#include - -void f7() { std::cout << "hello from f7()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file08.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file08.cc deleted file mode 100644 index 1c2e10f88..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file08.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file08.hh" - -#include - -void f8() { std::cout << "hello from f8()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file09.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file09.cc deleted file mode 100644 index 6c0028dc3..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file09.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file09.hh" - -#include - -void f9() { std::cout << "hello from f9()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file10.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file10.cc deleted file mode 100644 index 9f0be9cf4..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file10.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file10.hh" - -#include - -void f10() { std::cout << "hello from f10()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file11.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file11.cc deleted file mode 100644 index 2ef8f96e2..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file11.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file11.hh" - -#include - -void f11() { std::cout << "hello from f11()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file12.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file12.cc deleted file mode 100644 index 76349962b..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file12.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file12.hh" - -#include - -void f12() { std::cout << "hello from f12()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file13.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file13.cc deleted file mode 100644 index bca66d0cd..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file13.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file13.hh" - -#include - -void f13() { std::cout << "hello from f13()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file14.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file14.cc deleted file mode 100644 index 543179f6c..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file14.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file14.hh" - -#include - -void f14() { std::cout << "hello from f14()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file15.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file15.cc deleted file mode 100644 index 28767ef84..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file15.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file15.hh" - -#include - -void f15() { std::cout << "hello from f15()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file16.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file16.cc deleted file mode 100644 index ca7ff99b6..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file16.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file16.hh" - -#include - -void f16() { std::cout << "hello from f16()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file17.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file17.cc deleted file mode 100644 index 2230d36fa..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file17.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file17.hh" - -#include - -void f17() { std::cout << "hello from f17()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file18.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file18.cc deleted file mode 100644 index 822cd1484..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file18.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file18.hh" - -#include - -void f18() { std::cout << "hello from f18()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file19.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file19.cc deleted file mode 100644 index b8640642f..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file19.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file19.hh" - -#include - -void f19() { std::cout << "hello from f19()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file20.cc b/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file20.cc deleted file mode 100644 index 0562be6dd..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_external/long_command_line/long_command_line_file20.cc +++ /dev/null @@ -1,5 +0,0 @@ -#include "long_command_line_file20.hh" - -#include - -void f20() { std::cout << "hello from f20()\n"; } diff --git a/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/.bazelrc b/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/.bazelrc deleted file mode 100644 index fbd75a7ea..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/.bazelrc +++ /dev/null @@ -1 +0,0 @@ -build --incompatible_enable_cc_toolchain_resolution diff --git a/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/.gitignore b/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/.gitignore deleted file mode 100644 index 9d50f0bb1..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -bazel-bin -bazel-out -bazel-test_secondary_lto_cache -bazel-testlogs \ No newline at end of file diff --git a/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/MODULE.bazel b/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/MODULE.bazel deleted file mode 100644 index 0f5d9dc6c..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/MODULE.bazel +++ /dev/null @@ -1,26 +0,0 @@ -bazel_dep(name = "rules_cc", version = "0.1.1") -bazel_dep(name = "emsdk") -local_path_override( - module_name = "emsdk", - path = "..", -) - -emscripten_cache = use_extension( - "@emsdk//:emscripten_cache.bzl", - "emscripten_cache", -) -emscripten_cache.configuration(flags = ["--lto"]) -emscripten_cache.targets(targets = [ - "crtbegin", - "libprintf_long_double-debug", - "libstubs-debug", - "libnoexit", - "libc-debug", - "libdlmalloc", - "libcompiler_rt", - "libc++-noexcept", - "libc++-debug-noexcept", - "libc++abi-debug-noexcept", - "libsockets", - "libdlmalloc-debug", -]) diff --git a/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/MODULE.bazel.lock b/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/MODULE.bazel.lock deleted file mode 100644 index a340fd7b8..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/MODULE.bazel.lock +++ /dev/null @@ -1,3710 +0,0 @@ -{ - "lockFileVersion": 18, - "registryFileHashes": { - "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", - "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", - "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", - "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", - "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", - "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/source.json": "9be551b8d4e3ef76875c0d744b5d6a504a27e3ae67bc6b28f46415fd2d2957da", - "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/MODULE.bazel": "e4529e12d8cd5b828e2b5960d07d3ec032541740d419d7d5b859cabbf5b056f9", - "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.3/source.json": "80cb66069ad626e0921555cd2bf278286fd7763fae2450e564e351792e8303f4", - "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/MODULE.bazel": "f19e6b4a16f77f8cf3728eac1f60dbfd8e043517fd4f4dbf17a75a6c50936d62", - "https://bcr.bazel.build/modules/aspect_rules_js/1.42.0/source.json": "abbb3eac3b6af76b8ce230a9a901c6d08d93f4f5ffd55314bf630827dddee57e", - "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", - "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", - "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", - "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", - "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", - "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", - "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", - "https://bcr.bazel.build/modules/bazel_features/1.21.0/source.json": "3e8379efaaef53ce35b7b8ba419df829315a880cb0a030e5bb45c96d6d5ecb5f", - "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", - "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", - "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", - "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", - "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", - "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", - "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", - "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", - "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", - "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", - "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", - "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953", - "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", - "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", - "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", - "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", - "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", - "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/source.json": "41e9e129f80d8c8bf103a7acc337b76e54fad1214ac0a7084bf24f4cd924b8b4", - "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", - "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", - "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", - "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", - "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", - "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", - "https://bcr.bazel.build/modules/platforms/0.0.11/source.json": "f7e188b79ebedebfe75e9e1d098b8845226c7992b307e28e1496f23112e8fc29", - "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", - "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", - "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", - "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", - "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", - "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", - "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", - "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", - "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", - "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", - "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", - "https://bcr.bazel.build/modules/protobuf/29.0/source.json": "b857f93c796750eef95f0d61ee378f3420d00ee1dd38627b27193aa482f4f981", - "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", - "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", - "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/source.json": "be4789e951dd5301282729fe3d4938995dc4c1a81c2ff150afc9f1b0504c6022", - "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", - "https://bcr.bazel.build/modules/re2/2023-09-01/source.json": "e044ce89c2883cd957a2969a43e79f7752f9656f6b20050b62f90ede21ec6eb4", - "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", - "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", - "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", - "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", - "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", - "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", - "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", - "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", - "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", - "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", - "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", - "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", - "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", - "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", - "https://bcr.bazel.build/modules/rules_cc/0.1.1/source.json": "d61627377bd7dd1da4652063e368d9366fc9a73920bfa396798ad92172cf645c", - "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", - "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", - "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", - "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", - "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", - "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", - "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", - "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", - "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", - "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", - "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", - "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", - "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", - "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", - "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", - "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", - "https://bcr.bazel.build/modules/rules_java/8.6.1/source.json": "f18d9ad3c4c54945bf422ad584fa6c5ca5b3116ff55a5b1bc77e5c1210be5960", - "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", - "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", - "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", - "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", - "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", - "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", - "https://bcr.bazel.build/modules/rules_jvm_external/6.3/source.json": "6f5f5a5a4419ae4e37c35a5bb0a6ae657ed40b7abc5a5189111b47fcebe43197", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", - "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", - "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", - "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", - "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", - "https://bcr.bazel.build/modules/rules_nodejs/5.8.2/MODULE.bazel": "6bc03c8f37f69401b888023bf511cb6ee4781433b0cb56236b2e55a21e3a026a", - "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/MODULE.bazel": "42e8d5254b6135f890fecca7c8d7f95a7d27a45f8275b276f66ec337767530ef", - "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/source.json": "80e0a68eb81772f1631f8b69014884eebc2474b3b3025fd19a5240ae4f76f9c9", - "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", - "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", - "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a", - "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", - "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", - "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", - "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", - "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", - "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", - "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", - "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", - "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", - "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", - "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", - "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", - "https://bcr.bazel.build/modules/rules_python/1.3.0/MODULE.bazel": "8361d57eafb67c09b75bf4bbe6be360e1b8f4f18118ab48037f2bd50aa2ccb13", - "https://bcr.bazel.build/modules/rules_python/1.3.0/source.json": "25932f917cd279c7baefa6cb1d3fa8750a7a29de522024449b19af6eab51f4a0", - "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", - "https://bcr.bazel.build/modules/rules_shell/0.2.0/source.json": "7f27af3c28037d9701487c4744b5448d26537cc66cdef0d8df7ae85411f8de95", - "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", - "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", - "https://bcr.bazel.build/modules/stardoc/0.5.4/MODULE.bazel": "6569966df04610b8520957cb8e97cf2e9faac2c0309657c537ab51c16c18a2a4", - "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", - "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", - "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", - "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", - "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", - "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", - "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d", - "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" - }, - "selectedYankedVersions": {}, - "moduleExtensions": { - "@@aspect_bazel_lib+//lib:extensions.bzl%toolchains": { - "general": { - "bzlTransitiveDigest": "nrCBrZBQH3Dq30TXMpPMV6lWpEDozX0S0kCia4Lrpj0=", - "usagesDigest": "1c7PNX163TGNqWzfejRnWpH/hiT4/GRG0kYxuez0Uz0=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "copy_directory_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "copy_directory_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "copy_directory_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "copy_directory_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "copy_directory_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "copy_directory_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "copy_directory_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_directory_toolchain.bzl%copy_directory_toolchains_repo", - "attributes": { - "user_repository_name": "copy_directory" - } - }, - "copy_to_directory_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "copy_to_directory_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "copy_to_directory_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "copy_to_directory_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "copy_to_directory_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "copy_to_directory_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "copy_to_directory_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_toolchains_repo", - "attributes": { - "user_repository_name": "copy_to_directory" - } - }, - "jq_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "1.6" - } - }, - "jq_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "1.6" - } - }, - "jq_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "1.6" - } - }, - "jq_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "1.6" - } - }, - "jq": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_host_alias_repo", - "attributes": {} - }, - "jq_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_toolchains_repo", - "attributes": { - "user_repository_name": "jq" - } - }, - "yq_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "4.25.2" - } - }, - "yq_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "4.25.2" - } - }, - "yq_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "4.25.2" - } - }, - "yq_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_arm64", - "version": "4.25.2" - } - }, - "yq_linux_s390x": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_s390x", - "version": "4.25.2" - } - }, - "yq_linux_ppc64le": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "linux_ppc64le", - "version": "4.25.2" - } - }, - "yq_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "4.25.2" - } - }, - "yq": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_host_alias_repo", - "attributes": {} - }, - "yq_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_toolchains_repo", - "attributes": { - "user_repository_name": "yq" - } - }, - "coreutils_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "darwin_amd64", - "version": "0.0.16" - } - }, - "coreutils_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "darwin_arm64", - "version": "0.0.16" - } - }, - "coreutils_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "linux_amd64", - "version": "0.0.16" - } - }, - "coreutils_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "linux_arm64", - "version": "0.0.16" - } - }, - "coreutils_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", - "attributes": { - "platform": "windows_amd64", - "version": "0.0.16" - } - }, - "coreutils_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_toolchains_repo", - "attributes": { - "user_repository_name": "coreutils" - } - }, - "bsd_tar_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "bsd_tar_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "bsd_tar_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "bsd_tar_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "bsd_tar_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "bsd_tar_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%tar_toolchains_repo", - "attributes": { - "user_repository_name": "bsd_tar" - } - }, - "expand_template_darwin_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "expand_template_darwin_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "expand_template_freebsd_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "freebsd_amd64" - } - }, - "expand_template_linux_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "expand_template_linux_arm64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "expand_template_windows_amd64": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_platform_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "expand_template_toolchains": { - "repoRuleId": "@@aspect_bazel_lib+//lib/private:expand_template_toolchain.bzl%expand_template_toolchains_repo", - "attributes": { - "user_repository_name": "expand_template" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "aspect_bazel_lib+", - "aspect_bazel_lib", - "aspect_bazel_lib+" - ], - [ - "aspect_bazel_lib+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_bazel_lib+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { - "general": { - "bzlTransitiveDigest": "poAa/2uyrVSr9Hel1HD6GfFwqId27yXfePnG+3Dmt90=", - "usagesDigest": "yxkJioaKxOYkZAdkGoq2Cm79s4pW36Xwx7a8awQOU2E=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "pnpm": { - "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", - "attributes": { - "package": "pnpm", - "version": "8.6.7", - "root_package": "", - "link_workspace": "", - "link_packages": {}, - "integrity": "sha512-vRIWpD/L4phf9Bk2o/O2TDR8fFoJnpYrp2TKqTIZF/qZ2/rgL3qKXzHofHgbXsinwMoSEigz28sqk3pQ+yMEQQ==", - "url": "", - "commit": "", - "patch_args": [ - "-p0" - ], - "patches": [], - "custom_postinstall": "", - "npm_auth": "", - "npm_auth_basic": "", - "npm_auth_username": "", - "npm_auth_password": "", - "lifecycle_hooks": [], - "extra_build_content": "load(\"@aspect_rules_js//js:defs.bzl\", \"js_binary\")\njs_binary(name = \"pnpm\", data = glob([\"package/**\"]), entry_point = \"package/dist/pnpm.cjs\", visibility = [\"//visibility:public\"])", - "generate_bzl_library_targets": false, - "extract_full_archive": true - } - }, - "pnpm__links": { - "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", - "attributes": { - "package": "pnpm", - "version": "8.6.7", - "dev": false, - "root_package": "", - "link_packages": {}, - "deps": {}, - "transitive_closure": {}, - "lifecycle_build_target": false, - "lifecycle_hooks_env": [], - "lifecycle_hooks_execution_requirements": [ - "no-sandbox" - ], - "lifecycle_hooks_use_default_shell_env": false, - "bins": {}, - "package_visibility": [ - "//visibility:public" - ], - "replace_package": "" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "aspect_bazel_lib+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_bazel_lib+", - "bazel_tools", - "bazel_tools" - ], - [ - "aspect_rules_js+", - "aspect_bazel_lib", - "aspect_bazel_lib+" - ], - [ - "aspect_rules_js+", - "bazel_features", - "bazel_features+" - ], - [ - "aspect_rules_js+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "aspect_rules_js+", - "bazel_tools", - "bazel_tools" - ], - [ - "bazel_features+", - "bazel_features_globals", - "bazel_features++version_extension+bazel_features_globals" - ], - [ - "bazel_features+", - "bazel_features_version", - "bazel_features++version_extension+bazel_features_version" - ], - [ - "bazel_features+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@emsdk+//:emscripten_cache.bzl%emscripten_cache": { - "general": { - "bzlTransitiveDigest": "uqDvXmpTNqW4+ie/Fk+xC3TrFrKvL+9hNtoP51Kt2oo=", - "usagesDigest": "Es3QEMexQ1KNtrNtX+vNCqjkgkmUNeW2FQd1xCVcWs8=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "emscripten_cache": { - "repoRuleId": "@@emsdk+//:emscripten_cache.bzl%_emscripten_cache_repository", - "attributes": { - "configuration": [ - "--lto" - ], - "targets": [ - "crtbegin", - "libprintf_long_double-debug", - "libstubs-debug", - "libnoexit", - "libc-debug", - "libdlmalloc", - "libcompiler_rt", - "libc++-noexcept", - "libc++abi-debug-noexcept", - "libsockets", - "libdlmalloc-debug" - ] - } - } - }, - "recordedRepoMappingEntries": [] - } - }, - "@@emsdk+//:emscripten_deps.bzl%emscripten_deps": { - "general": { - "bzlTransitiveDigest": "h0wQ3PSRx/Q9n+izTifYO8L728OTd9B5YbLOWcobVYE=", - "usagesDigest": "eqaMlu1tts7n29bG5zUl3DtA/9ARE+6aHrSK4X7kNno=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "emscripten_bin_linux": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "27fc220a9ad98d323cad73531ff563e9838c9e1205f51ee2a5632bb4266a35d2", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" - } - }, - "emscripten_bin_linux_arm64": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "2d03f8eb3f81dd94821658eefbb442a92b0b7601f4cfb08590590fd7bc467ef8", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" - } - }, - "emscripten_bin_mac": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "c06048915595726fc2e2da6a8db3134581a6287645fb818802a9734ff9785e77", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.tar.xz" - } - }, - "emscripten_bin_mac_arm64": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang\",\n \"bin/clang++\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang\",\n \"bin/llvm-ar\",\n \"bin/llvm-dwarfdump\",\n \"bin/llvm-nm\",\n \"bin/llvm-objcopy\",\n \"bin/wasm-ctor-eval\",\n \"bin/wasm-emscripten-finalize\",\n \"bin/wasm-ld\",\n \"bin/wasm-metadce\",\n \"bin/wasm-opt\",\n \"bin/wasm-split\",\n \"bin/wasm2js\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "35d743453d0f91857b09f00d721037bb46753aaeae373bd7f64746338db11770", - "strip_prefix": "install", - "type": "tar.xz", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries-arm64.tar.xz" - } - }, - "emscripten_bin_win": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file_content": "\npackage(default_visibility = ['//visibility:public'])\n\nfilegroup(\n name = \"all\",\n srcs = glob([\"**\"]),\n)\n\nfilegroup(\n name = \"includes\",\n srcs = glob([\n \"emscripten/cache/sysroot/include/c++/v1/**\",\n \"emscripten/cache/sysroot/include/compat/**\",\n \"emscripten/cache/sysroot/include/**\",\n \"lib/clang/**/include/**\",\n ]),\n)\n\nfilegroup(\n name = \"emcc_common\",\n srcs = [\n \"emscripten/emcc.py\",\n \"emscripten/embuilder.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/cache/sysroot_install.stamp\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/third_party/**\",\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"compiler_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/clang++.exe\",\n \":emcc_common\",\n \":includes\",\n ],\n)\n\nfilegroup(\n name = \"linker_files\",\n srcs = [\n \"bin/clang.exe\",\n \"bin/llvm-ar.exe\",\n \"bin/llvm-dwarfdump.exe\",\n \"bin/llvm-nm.exe\",\n \"bin/llvm-objcopy.exe\",\n \"bin/wasm-ctor-eval.exe\",\n \"bin/wasm-emscripten-finalize.exe\",\n \"bin/wasm-ld.exe\",\n \"bin/wasm-metadce.exe\",\n \"bin/wasm-opt.exe\",\n \"bin/wasm-split.exe\",\n \"bin/wasm2js.exe\",\n \":emcc_common\",\n ] + glob(\n include = [\n \"emscripten/cache/sysroot/lib/**\",\n \"emscripten/node_modules/**\",\n \"emscripten/src/**\",\n ],\n ),\n)\n\nfilegroup(\n name = \"ar_files\",\n srcs = [\n \"bin/llvm-ar.exe\",\n \"emscripten/emar.py\",\n \"emscripten/emscripten-version.txt\",\n \"emscripten/src/settings.js\",\n \"emscripten/src/settings_internal.js\",\n ] + glob(\n include = [\n \"emscripten/tools/**\",\n ],\n exclude = [\n \"**/__pycache__/**\",\n ],\n ),\n)\n", - "sha256": "3b576e825b26426bb72854ed98752df3fcb58cc3ab1dc116566e328b79a8abb3", - "strip_prefix": "install", - "type": "zip", - "url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/win/14767574a5c37ff9526a253a65ddbe0811cb3667/wasm-binaries.zip" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "bazel_tools", - "rules_cc", - "rules_cc+" - ], - [ - "emsdk+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@pybind11_bazel+//:python_configure.bzl%extension": { - "general": { - "bzlTransitiveDigest": "d4N/SZrl3ONcmzE98rcV0Fsro0iUbjNQFTIiLiGuH+k=", - "usagesDigest": "fycyB39YnXIJkfWCIXLUKJMZzANcuLy9ZE73hRucjFk=", - "recordedFileInputs": { - "@@pybind11_bazel+//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e" - }, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "local_config_python": { - "repoRuleId": "@@pybind11_bazel+//:python_configure.bzl%python_configure", - "attributes": {} - }, - "pybind11": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file": "@@pybind11_bazel+//:pybind11.BUILD", - "strip_prefix": "pybind11-2.11.1", - "urls": [ - "https://github.com/pybind/pybind11/archive/v2.11.1.zip" - ] - } - } - }, - "recordedRepoMappingEntries": [ - [ - "pybind11_bazel+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_fuzzing+//fuzzing/private:extensions.bzl%non_module_dependencies": { - "general": { - "bzlTransitiveDigest": "mGiTB79hRNjmeDTQdzkpCHyzXhErMbufeAmySBt7s5s=", - "usagesDigest": "wy6ISK6UOcBEjj/mvJ/S3WeXoO67X+1llb9yPyFtPgc=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "platforms": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz", - "https://github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz" - ], - "sha256": "8150406605389ececb6da07cbcb509d5637a3ab9a24bc69b1101531367d89d74" - } - }, - "rules_python": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8", - "strip_prefix": "rules_python-0.28.0", - "url": "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz" - } - }, - "bazel_skylib": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", - "urls": [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz", - "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" - ] - } - }, - "com_google_absl": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "urls": [ - "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.1.zip" - ], - "strip_prefix": "abseil-cpp-20240116.1", - "integrity": "sha256-7capMWOvWyoYbUaHF/b+I2U6XLMaHmky8KugWvfXYuk=" - } - }, - "rules_fuzzing_oss_fuzz": { - "repoRuleId": "@@rules_fuzzing+//fuzzing/private/oss_fuzz:repository.bzl%oss_fuzz_repository", - "attributes": {} - }, - "honggfuzz": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "build_file": "@@rules_fuzzing+//:honggfuzz.BUILD", - "sha256": "6b18ba13bc1f36b7b950c72d80f19ea67fbadc0ac0bb297ec89ad91f2eaa423e", - "url": "https://github.com/google/honggfuzz/archive/2.5.zip", - "strip_prefix": "honggfuzz-2.5" - } - }, - "rules_fuzzing_jazzer": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", - "attributes": { - "sha256": "ee6feb569d88962d59cb59e8a31eb9d007c82683f3ebc64955fd5b96f277eec2", - "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer/0.20.1/jazzer-0.20.1.jar" - } - }, - "rules_fuzzing_jazzer_api": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", - "attributes": { - "sha256": "f5a60242bc408f7fa20fccf10d6c5c5ea1fcb3c6f44642fec5af88373ae7aa1b", - "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer-api/0.20.1/jazzer-api-0.20.1.jar" - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_fuzzing+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_java+//java:rules_java_deps.bzl%compatibility_proxy": { - "general": { - "bzlTransitiveDigest": "84xJEZ1jnXXwo8BXMprvBm++rRt4jsTu9liBxz0ivps=", - "usagesDigest": "jTQDdLDxsS43zuRmg1faAjIEPWdLAbDAowI1pInQSoo=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "compatibility_proxy": { - "repoRuleId": "@@rules_java+//java:rules_java_deps.bzl%_compatibility_proxy_repo_rule", - "attributes": {} - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_java+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { - "general": { - "bzlTransitiveDigest": "sFhcgPbDQehmbD1EOXzX4H1q/CD5df8zwG4kp4jbvr8=", - "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "com_github_jetbrains_kotlin_git": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", - "attributes": { - "urls": [ - "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" - ], - "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" - } - }, - "com_github_jetbrains_kotlin": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", - "attributes": { - "git_repository_name": "com_github_jetbrains_kotlin_git", - "compiler_version": "1.9.23" - } - }, - "com_github_google_ksp": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", - "attributes": { - "urls": [ - "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" - ], - "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", - "strip_version": "1.9.23-1.0.20" - } - }, - "com_github_pinterest_ktlint": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", - "attributes": { - "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", - "urls": [ - "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" - ], - "executable": true - } - }, - "rules_android": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", - "strip_prefix": "rules_android-0.1.1", - "urls": [ - "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" - ] - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_kotlin+", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_nodejs+//nodejs:extensions.bzl%node": { - "general": { - "bzlTransitiveDigest": "rphcryfYrOY/P3emfTskC/GY5YuHcwMl2B2ncjaM8lY=", - "usagesDigest": "m7d0VXcsX/qS6DKMUBtdgjQzP2eMRHqsE4wv7dzr71I=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "nodejs_linux_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_amd64" - } - }, - "nodejs_linux_arm64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_arm64" - } - }, - "nodejs_linux_s390x": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_s390x" - } - }, - "nodejs_linux_ppc64le": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "linux_ppc64le" - } - }, - "nodejs_darwin_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "darwin_amd64" - } - }, - "nodejs_darwin_arm64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "darwin_arm64" - } - }, - "nodejs_windows_amd64": { - "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", - "attributes": { - "node_download_auth": {}, - "node_repositories": {}, - "node_urls": [ - "https://nodejs.org/dist/v{version}/{filename}" - ], - "node_version": "20.18.0", - "include_headers": false, - "platform": "windows_amd64" - } - }, - "nodejs": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", - "attributes": { - "user_node_repository_name": "nodejs" - } - }, - "nodejs_host": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", - "attributes": { - "user_node_repository_name": "nodejs" - } - }, - "nodejs_toolchains": { - "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl%nodejs_toolchains_repo", - "attributes": { - "user_node_repository_name": "nodejs" - } - } - }, - "recordedRepoMappingEntries": [] - } - }, - "@@rules_python+//python/extensions:pip.bzl%pip": { - "general": { - "bzlTransitiveDigest": "Jbed6zJUJ6E78XRyOlnG1ryhBDvVeikdntPW1D40S/E=", - "usagesDigest": "fztm9ST3ki9E77tct2ZwJe0w38LvfMY8mRYp+YHxXQE=", - "recordedFileInputs": { - "@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", - "@@rules_fuzzing+//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", - "@@rules_python+//tools/publish/requirements_darwin.txt": "095d4a4f3d639dce831cd493367631cd51b53665292ab20194bac2c0c6458fa8", - "@@rules_python+//tools/publish/requirements_linux.txt": "d576e0d8542df61396a9b38deeaa183c24135ed5e8e73bb9622f298f2671811e", - "@@rules_python+//tools/publish/requirements_windows.txt": "d18538a3982beab378fd5687f4db33162ee1ece69801f9a451661b1b64286b76" - }, - "recordedDirentsInputs": {}, - "envVariables": { - "RULES_PYTHON_REPO_DEBUG": null, - "RULES_PYTHON_REPO_DEBUG_VERBOSITY": null - }, - "generatedRepoSpecs": { - "pip_deps_310_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "pip_deps_310", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_310_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "pip_deps_310", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_311_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "pip_deps_311", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_311_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "pip_deps_311", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_312_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "pip_deps_312", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_312_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "pip_deps_312", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_38_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "pip_deps_38", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_38_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "pip_deps_38", - "requirement": "setuptools<=70.3.0" - } - }, - "pip_deps_39_numpy": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "pip_deps_39", - "requirement": "numpy<=1.26.1" - } - }, - "pip_deps_39_setuptools": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "pip_deps_39", - "requirement": "setuptools<=70.3.0" - } - }, - "rules_fuzzing_py_deps_310_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "rules_fuzzing_py_deps_310", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_310_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", - "repo": "rules_fuzzing_py_deps_310", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_311_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_fuzzing_py_deps_311", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_311_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_fuzzing_py_deps_311", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_312_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "rules_fuzzing_py_deps_312", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_312_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", - "repo": "rules_fuzzing_py_deps_312", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_38_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "rules_fuzzing_py_deps_38", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_38_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", - "repo": "rules_fuzzing_py_deps_38", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_fuzzing_py_deps_39_absl_py": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "rules_fuzzing_py_deps_39", - "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" - } - }, - "rules_fuzzing_py_deps_39_six": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", - "extra_pip_args": [ - "--require-hashes" - ], - "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", - "repo": "rules_fuzzing_py_deps_39", - "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - } - }, - "rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "backports.tarfile-1.2.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "backports-tarfile==1.2.0", - "sha256": "77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", - "urls": [ - "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "backports_tarfile-1.2.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "backports-tarfile==1.2.0", - "sha256": "d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", - "urls": [ - "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_certifi_py3_none_any_922820b5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "certifi-2024.8.30-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "certifi==2024.8.30", - "sha256": "922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", - "urls": [ - "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_certifi_sdist_bec941d2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "certifi-2024.8.30.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "certifi==2024.8.30", - "sha256": "bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", - "urls": [ - "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", - "urls": [ - "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", - "urls": [ - "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", - "urls": [ - "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", - "urls": [ - "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", - "urls": [ - "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cffi_sdist_1c39c601": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "cffi-1.17.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cffi==1.17.1", - "sha256": "1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", - "urls": [ - "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", - "urls": [ - "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", - "urls": [ - "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", - "urls": [ - "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", - "urls": [ - "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", - "urls": [ - "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", - "urls": [ - "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", - "urls": [ - "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", - "urls": [ - "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", - "urls": [ - "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", - "urls": [ - "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "charset_normalizer-3.4.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", - "urls": [ - "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_charset_normalizer_sdist_223217c3": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "charset_normalizer-3.4.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "charset-normalizer==3.4.0", - "sha256": "223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", - "urls": [ - "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", - "urls": [ - "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", - "urls": [ - "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", - "urls": [ - "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", - "urls": [ - "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", - "urls": [ - "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", - "urls": [ - "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_cryptography_sdist_315b9001": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "cryptography-43.0.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "cryptography==43.0.3", - "sha256": "315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", - "urls": [ - "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "docutils-0.21.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "docutils==0.21.2", - "sha256": "dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", - "urls": [ - "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_docutils_sdist_3a6b1873": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "docutils-0.21.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "docutils==0.21.2", - "sha256": "3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", - "urls": [ - "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_idna_py3_none_any_946d195a": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "idna-3.10-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "idna==3.10", - "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", - "urls": [ - "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_idna_sdist_12f65c9b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "idna-3.10.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "idna==3.10", - "sha256": "12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", - "urls": [ - "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "importlib_metadata-8.5.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "importlib-metadata==8.5.0", - "sha256": "45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", - "urls": [ - "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_importlib_metadata_sdist_71522656": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "importlib_metadata-8.5.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "importlib-metadata==8.5.0", - "sha256": "71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", - "urls": [ - "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.classes-3.4.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-classes==3.4.0", - "sha256": "f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", - "urls": [ - "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco.classes-3.4.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-classes==3.4.0", - "sha256": "47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", - "urls": [ - "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.context-6.0.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-context==6.0.1", - "sha256": "f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", - "urls": [ - "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco_context-6.0.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-context==6.0.1", - "sha256": "9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", - "urls": [ - "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "jaraco.functools-4.1.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-functools==4.1.0", - "sha256": "ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649", - "urls": [ - "https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jaraco_functools-4.1.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jaraco-functools==4.1.0", - "sha256": "70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d", - "urls": [ - "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "jeepney-0.8.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jeepney==0.8.0", - "sha256": "c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", - "urls": [ - "https://files.pythonhosted.org/packages/ae/72/2a1e2290f1ab1e06f71f3d0f1646c9e4634e70e1d37491535e19266e8dc9/jeepney-0.8.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_jeepney_sdist_5efe48d2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "jeepney-0.8.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "jeepney==0.8.0", - "sha256": "5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", - "urls": [ - "https://files.pythonhosted.org/packages/d6/f4/154cf374c2daf2020e05c3c6a03c91348d59b23c5366e968feb198306fdf/jeepney-0.8.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_keyring_py3_none_any_5426f817": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "keyring-25.4.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "keyring==25.4.1", - "sha256": "5426f817cf7f6f007ba5ec722b1bcad95a75b27d780343772ad76b17cb47b0bf", - "urls": [ - "https://files.pythonhosted.org/packages/83/25/e6d59e5f0a0508d0dca8bb98c7f7fd3772fc943ac3f53d5ab18a218d32c0/keyring-25.4.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_keyring_sdist_b07ebc55": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "keyring-25.4.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "keyring==25.4.1", - "sha256": "b07ebc55f3e8ed86ac81dd31ef14e81ace9dd9c3d4b5d77a6e9a2016d0d71a1b", - "urls": [ - "https://files.pythonhosted.org/packages/a5/1c/2bdbcfd5d59dc6274ffb175bc29aa07ecbfab196830e0cfbde7bd861a2ea/keyring-25.4.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "markdown_it_py-3.0.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "markdown-it-py==3.0.0", - "sha256": "355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", - "urls": [ - "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "markdown-it-py-3.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "markdown-it-py==3.0.0", - "sha256": "e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", - "urls": [ - "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_mdurl_py3_none_any_84008a41": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "mdurl-0.1.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "mdurl==0.1.2", - "sha256": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", - "urls": [ - "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_mdurl_sdist_bb413d29": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "mdurl-0.1.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "mdurl==0.1.2", - "sha256": "bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", - "urls": [ - "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "more_itertools-10.5.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "more-itertools==10.5.0", - "sha256": "037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", - "urls": [ - "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_more_itertools_sdist_5482bfef": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "more-itertools-10.5.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "more-itertools==10.5.0", - "sha256": "5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", - "urls": [ - "https://files.pythonhosted.org/packages/51/78/65922308c4248e0eb08ebcbe67c95d48615cc6f27854b6f2e57143e9178f/more-itertools-10.5.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86", - "urls": [ - "https://files.pythonhosted.org/packages/b3/89/1daff5d9ba5a95a157c092c7c5f39b8dd2b1ddb4559966f808d31cfb67e0/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811", - "urls": [ - "https://files.pythonhosted.org/packages/2c/b6/42fc3c69cabf86b6b81e4c051a9b6e249c5ba9f8155590222c2622961f58/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200", - "urls": [ - "https://files.pythonhosted.org/packages/45/b9/833f385403abaf0023c6547389ec7a7acf141ddd9d1f21573723a6eab39a/nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164", - "urls": [ - "https://files.pythonhosted.org/packages/05/2b/85977d9e11713b5747595ee61f381bc820749daf83f07b90b6c9964cf932/nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189", - "urls": [ - "https://files.pythonhosted.org/packages/72/f2/5c894d5265ab80a97c68ca36f25c8f6f0308abac649aaf152b74e7e854a8/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b", - "urls": [ - "https://files.pythonhosted.org/packages/c2/a8/3bb02d0c60a03ad3a112b76c46971e9480efa98a8946677b5a59f60130ca/nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307", - "urls": [ - "https://files.pythonhosted.org/packages/1b/63/6ab90d0e5225ab9780f6c9fb52254fa36b52bb7c188df9201d05b647e5e1/nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe", - "urls": [ - "https://files.pythonhosted.org/packages/a3/da/0c4e282bc3cff4a0adf37005fa1fb42257673fbc1bbf7d1ff639ec3d255a/nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a", - "urls": [ - "https://files.pythonhosted.org/packages/de/81/c291231463d21da5f8bba82c8167a6d6893cc5419b0639801ee5d3aeb8a9/nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204", - "urls": [ - "https://files.pythonhosted.org/packages/eb/61/73a007c74c37895fdf66e0edcd881f5eaa17a348ff02f4bb4bc906d61085/nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "nh3-0.2.18-cp37-abi3-win_amd64.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844", - "urls": [ - "https://files.pythonhosted.org/packages/26/8d/53c5b19c4999bdc6ba95f246f4ef35ca83d7d7423e5e38be43ad66544e5d/nh3-0.2.18-cp37-abi3-win_amd64.whl" - ] - } - }, - "rules_python_publish_deps_311_nh3_sdist_94a16692": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "nh3-0.2.18.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "nh3==0.2.18", - "sha256": "94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4", - "urls": [ - "https://files.pythonhosted.org/packages/62/73/10df50b42ddb547a907deeb2f3c9823022580a7a47281e8eae8e003a9639/nh3-0.2.18.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "pkginfo-1.10.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pkginfo==1.10.0", - "sha256": "889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097", - "urls": [ - "https://files.pythonhosted.org/packages/56/09/054aea9b7534a15ad38a363a2bd974c20646ab1582a387a95b8df1bfea1c/pkginfo-1.10.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pkginfo_sdist_5df73835": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pkginfo-1.10.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pkginfo==1.10.0", - "sha256": "5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297", - "urls": [ - "https://files.pythonhosted.org/packages/2f/72/347ec5be4adc85c182ed2823d8d1c7b51e13b9a6b0c1aae59582eca652df/pkginfo-1.10.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "pycparser-2.22-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pycparser==2.22", - "sha256": "c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", - "urls": [ - "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pycparser_sdist_491c8be9": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pycparser-2.22.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pycparser==2.22", - "sha256": "491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", - "urls": [ - "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "pygments-2.18.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pygments==2.18.0", - "sha256": "b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", - "urls": [ - "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pygments_sdist_786ff802": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pygments-2.18.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pygments==2.18.0", - "sha256": "786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", - "urls": [ - "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_windows_x86_64" - ], - "filename": "pywin32_ctypes-0.2.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pywin32-ctypes==0.2.3", - "sha256": "8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", - "urls": [ - "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "pywin32-ctypes-0.2.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "pywin32-ctypes==0.2.3", - "sha256": "d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", - "urls": [ - "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "readme_renderer-44.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "readme-renderer==44.0", - "sha256": "2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", - "urls": [ - "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_readme_renderer_sdist_8712034e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "readme_renderer-44.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "readme-renderer==44.0", - "sha256": "8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", - "urls": [ - "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_requests_py3_none_any_70761cfe": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "requests-2.32.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests==2.32.3", - "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", - "urls": [ - "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_requests_sdist_55365417": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "requests-2.32.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests==2.32.3", - "sha256": "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", - "urls": [ - "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "requests_toolbelt-1.0.0-py2.py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests-toolbelt==1.0.0", - "sha256": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", - "urls": [ - "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "requests-toolbelt-1.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "requests-toolbelt==1.0.0", - "sha256": "7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", - "urls": [ - "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "rfc3986-2.0.0-py2.py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rfc3986==2.0.0", - "sha256": "50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", - "urls": [ - "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_rfc3986_sdist_97aacf9d": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "rfc3986-2.0.0.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rfc3986==2.0.0", - "sha256": "97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", - "urls": [ - "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_rich_py3_none_any_6049d5e6": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "rich-13.9.4-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rich==13.9.4", - "sha256": "6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", - "urls": [ - "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_rich_sdist_43959497": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "rich-13.9.4.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "rich==13.9.4", - "sha256": "439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", - "urls": [ - "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "filename": "SecretStorage-3.3.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "secretstorage==3.3.3", - "sha256": "f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", - "urls": [ - "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_secretstorage_sdist_2403533e": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "SecretStorage-3.3.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "secretstorage==3.3.3", - "sha256": "2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", - "urls": [ - "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_twine_py3_none_any_215dbe7b": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "twine-5.1.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "twine==5.1.1", - "sha256": "215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997", - "urls": [ - "https://files.pythonhosted.org/packages/5d/ec/00f9d5fd040ae29867355e559a94e9a8429225a0284a3f5f091a3878bfc0/twine-5.1.1-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_twine_sdist_9aa08251": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "twine-5.1.1.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "twine==5.1.1", - "sha256": "9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db", - "urls": [ - "https://files.pythonhosted.org/packages/77/68/bd982e5e949ef8334e6f7dcf76ae40922a8750aa2e347291ae1477a4782b/twine-5.1.1.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "urllib3-2.2.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "urllib3==2.2.3", - "sha256": "ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", - "urls": [ - "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_urllib3_sdist_e7d814a8": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "urllib3-2.2.3.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "urllib3==2.2.3", - "sha256": "e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", - "urls": [ - "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz" - ] - } - }, - "rules_python_publish_deps_311_zipp_py3_none_any_a817ac80": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "filename": "zipp-3.20.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "zipp==3.20.2", - "sha256": "a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", - "urls": [ - "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl" - ] - } - }, - "rules_python_publish_deps_311_zipp_sdist_bc9eb26f": { - "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", - "attributes": { - "dep_template": "@rules_python_publish_deps//{name}:{target}", - "experimental_target_platforms": [ - "cp311_linux_aarch64", - "cp311_linux_arm", - "cp311_linux_ppc", - "cp311_linux_s390x", - "cp311_linux_x86_64", - "cp311_osx_aarch64", - "cp311_osx_x86_64", - "cp311_windows_x86_64" - ], - "extra_pip_args": [ - "--index-url", - "https://pypi.org/simple" - ], - "filename": "zipp-3.20.2.tar.gz", - "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", - "repo": "rules_python_publish_deps_311", - "requirement": "zipp==3.20.2", - "sha256": "bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", - "urls": [ - "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz" - ] - } - }, - "pip_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "pip_deps", - "extra_hub_aliases": {}, - "whl_map": { - "numpy": "{\"pip_deps_310_numpy\":[{\"version\":\"3.10\"}],\"pip_deps_311_numpy\":[{\"version\":\"3.11\"}],\"pip_deps_312_numpy\":[{\"version\":\"3.12\"}],\"pip_deps_38_numpy\":[{\"version\":\"3.8\"}],\"pip_deps_39_numpy\":[{\"version\":\"3.9\"}]}", - "setuptools": "{\"pip_deps_310_setuptools\":[{\"version\":\"3.10\"}],\"pip_deps_311_setuptools\":[{\"version\":\"3.11\"}],\"pip_deps_312_setuptools\":[{\"version\":\"3.12\"}],\"pip_deps_38_setuptools\":[{\"version\":\"3.8\"}],\"pip_deps_39_setuptools\":[{\"version\":\"3.9\"}]}" - }, - "packages": [ - "numpy", - "setuptools" - ], - "groups": {} - } - }, - "rules_fuzzing_py_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "rules_fuzzing_py_deps", - "extra_hub_aliases": {}, - "whl_map": { - "absl_py": "{\"rules_fuzzing_py_deps_310_absl_py\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_absl_py\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_absl_py\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_absl_py\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_absl_py\":[{\"version\":\"3.9\"}]}", - "six": "{\"rules_fuzzing_py_deps_310_six\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_six\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_six\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_six\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_six\":[{\"version\":\"3.9\"}]}" - }, - "packages": [ - "absl_py", - "six" - ], - "groups": {} - } - }, - "rules_python_publish_deps": { - "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", - "attributes": { - "repo_name": "rules_python_publish_deps", - "extra_hub_aliases": {}, - "whl_map": { - "backports_tarfile": "{\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\":[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\":[{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"version\":\"3.11\"}]}", - "certifi": "{\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\":[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_certifi_sdist_bec941d2\":[{\"filename\":\"certifi-2024.8.30.tar.gz\",\"version\":\"3.11\"}]}", - "cffi": "{\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_sdist_1c39c601\":[{\"filename\":\"cffi-1.17.1.tar.gz\",\"version\":\"3.11\"}]}", - "charset_normalizer": "{\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\":[{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\":[{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", - "cryptography": "{\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_sdist_315b9001\":[{\"filename\":\"cryptography-43.0.3.tar.gz\",\"version\":\"3.11\"}]}", - "docutils": "{\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\":[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\":[{\"filename\":\"docutils-0.21.2.tar.gz\",\"version\":\"3.11\"}]}", - "idna": "{\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\":[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_idna_sdist_12f65c9b\":[{\"filename\":\"idna-3.10.tar.gz\",\"version\":\"3.11\"}]}", - "importlib_metadata": "{\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\":[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\":[{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_classes": "{\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\":[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\":[{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_context": "{\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\":[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\":[{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"version\":\"3.11\"}]}", - "jaraco_functools": "{\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\":[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\":[{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"version\":\"3.11\"}]}", - "jeepney": "{\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\":[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\":[{\"filename\":\"jeepney-0.8.0.tar.gz\",\"version\":\"3.11\"}]}", - "keyring": "{\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\":[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\":[{\"filename\":\"keyring-25.4.1.tar.gz\",\"version\":\"3.11\"}]}", - "markdown_it_py": "{\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\":[{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\":[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "mdurl": "{\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\":[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\":[{\"filename\":\"mdurl-0.1.2.tar.gz\",\"version\":\"3.11\"}]}", - "more_itertools": "{\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\":[{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\":[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"version\":\"3.11\"}]}", - "nh3": "{\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_sdist_94a16692\":[{\"filename\":\"nh3-0.2.18.tar.gz\",\"version\":\"3.11\"}]}", - "pkginfo": "{\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\":[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\":[{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"version\":\"3.11\"}]}", - "pycparser": "{\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\":[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\":[{\"filename\":\"pycparser-2.22.tar.gz\",\"version\":\"3.11\"}]}", - "pygments": "{\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\":[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pygments_sdist_786ff802\":[{\"filename\":\"pygments-2.18.0.tar.gz\",\"version\":\"3.11\"}]}", - "pywin32_ctypes": "{\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\":[{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\":[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"version\":\"3.11\"}]}", - "readme_renderer": "{\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\":[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\":[{\"filename\":\"readme_renderer-44.0.tar.gz\",\"version\":\"3.11\"}]}", - "requests": "{\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\":[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_sdist_55365417\":[{\"filename\":\"requests-2.32.3.tar.gz\",\"version\":\"3.11\"}]}", - "requests_toolbelt": "{\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\":[{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\":[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "rfc3986": "{\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\":[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\":[{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"version\":\"3.11\"}]}", - "rich": "{\"rules_python_publish_deps_311_rich_py3_none_any_6049d5e6\":[{\"filename\":\"rich-13.9.4-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rich_sdist_43959497\":[{\"filename\":\"rich-13.9.4.tar.gz\",\"version\":\"3.11\"}]}", - "secretstorage": "{\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\":[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\":[{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"version\":\"3.11\"}]}", - "twine": "{\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\":[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_twine_sdist_9aa08251\":[{\"filename\":\"twine-5.1.1.tar.gz\",\"version\":\"3.11\"}]}", - "urllib3": "{\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\":[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\":[{\"filename\":\"urllib3-2.2.3.tar.gz\",\"version\":\"3.11\"}]}", - "zipp": "{\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\":[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\":[{\"filename\":\"zipp-3.20.2.tar.gz\",\"version\":\"3.11\"}]}" - }, - "packages": [ - "backports_tarfile", - "certifi", - "charset_normalizer", - "docutils", - "idna", - "importlib_metadata", - "jaraco_classes", - "jaraco_context", - "jaraco_functools", - "keyring", - "markdown_it_py", - "mdurl", - "more_itertools", - "nh3", - "pkginfo", - "pygments", - "readme_renderer", - "requests", - "requests_toolbelt", - "rfc3986", - "rich", - "twine", - "urllib3", - "zipp" - ], - "groups": {} - } - } - }, - "moduleExtensionMetadata": { - "useAllRepos": "NO", - "reproducible": false - }, - "recordedRepoMappingEntries": [ - [ - "bazel_features+", - "bazel_features_globals", - "bazel_features++version_extension+bazel_features_globals" - ], - [ - "bazel_features+", - "bazel_features_version", - "bazel_features++version_extension+bazel_features_version" - ], - [ - "rules_python+", - "bazel_features", - "bazel_features+" - ], - [ - "rules_python+", - "bazel_skylib", - "bazel_skylib+" - ], - [ - "rules_python+", - "bazel_tools", - "bazel_tools" - ], - [ - "rules_python+", - "pypi__build", - "rules_python++internal_deps+pypi__build" - ], - [ - "rules_python+", - "pypi__click", - "rules_python++internal_deps+pypi__click" - ], - [ - "rules_python+", - "pypi__colorama", - "rules_python++internal_deps+pypi__colorama" - ], - [ - "rules_python+", - "pypi__importlib_metadata", - "rules_python++internal_deps+pypi__importlib_metadata" - ], - [ - "rules_python+", - "pypi__installer", - "rules_python++internal_deps+pypi__installer" - ], - [ - "rules_python+", - "pypi__more_itertools", - "rules_python++internal_deps+pypi__more_itertools" - ], - [ - "rules_python+", - "pypi__packaging", - "rules_python++internal_deps+pypi__packaging" - ], - [ - "rules_python+", - "pypi__pep517", - "rules_python++internal_deps+pypi__pep517" - ], - [ - "rules_python+", - "pypi__pip", - "rules_python++internal_deps+pypi__pip" - ], - [ - "rules_python+", - "pypi__pip_tools", - "rules_python++internal_deps+pypi__pip_tools" - ], - [ - "rules_python+", - "pypi__pyproject_hooks", - "rules_python++internal_deps+pypi__pyproject_hooks" - ], - [ - "rules_python+", - "pypi__setuptools", - "rules_python++internal_deps+pypi__setuptools" - ], - [ - "rules_python+", - "pypi__tomli", - "rules_python++internal_deps+pypi__tomli" - ], - [ - "rules_python+", - "pypi__wheel", - "rules_python++internal_deps+pypi__wheel" - ], - [ - "rules_python+", - "pypi__zipp", - "rules_python++internal_deps+pypi__zipp" - ], - [ - "rules_python+", - "pythons_hub", - "rules_python++python+pythons_hub" - ], - [ - "rules_python++python+pythons_hub", - "python_3_10_host", - "rules_python++python+python_3_10_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_11_host", - "rules_python++python+python_3_11_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_12_host", - "rules_python++python+python_3_12_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_13_host", - "rules_python++python+python_3_13_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_8_host", - "rules_python++python+python_3_8_host" - ], - [ - "rules_python++python+pythons_hub", - "python_3_9_host", - "rules_python++python+python_3_9_host" - ] - ] - } - }, - "@@rules_python+//python/uv:uv.bzl%uv": { - "general": { - "bzlTransitiveDigest": "Xpqjnjzy6zZ90Es9Wa888ZLHhn7IsNGbph/e6qoxzw8=", - "usagesDigest": "vJ5RHUxAnV24M5swNGiAnkdxMx3Hp/iOLmNANTC5Xc8=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "uv": { - "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", - "attributes": { - "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'", - "toolchain_names": [ - "none" - ], - "toolchain_implementations": { - "none": "'@@rules_python+//python:none'" - }, - "toolchain_compatible_with": { - "none": [ - "@platforms//:incompatible" - ] - }, - "toolchain_target_settings": {} - } - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_python+", - "platforms", - "platforms" - ] - ] - } - } - } -} diff --git a/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/hello-world.cc b/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/hello-world.cc deleted file mode 100644 index ee72c5317..000000000 --- a/emsdk-cache/emsdk-main/bazel/test_secondary_lto_cache/hello-world.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include - -int main(int argc, char** argv) { - std::cout << "hello world!" << std::endl; - return 0; -} diff --git a/emsdk-cache/emsdk-main/docker/Dockerfile b/emsdk-cache/emsdk-main/docker/Dockerfile deleted file mode 100644 index 2c63a4a11..000000000 --- a/emsdk-cache/emsdk-main/docker/Dockerfile +++ /dev/null @@ -1,131 +0,0 @@ -FROM ubuntu:jammy AS stage_build - -ARG EMSCRIPTEN_VERSION=tot -ENV EMSDK /emsdk - -# ------------------------------------------------------------------------------ - -RUN echo "## Start building" \ - && echo "## Update and install packages" \ - && apt-get -qq -y update \ - && apt-get -qq install -y --no-install-recommends \ - binutils \ - build-essential \ - ca-certificates \ - file \ - git \ - python3 \ - python3-pip \ - && echo "## Done" - -# Copy the contents of this repository to the container -COPY . ${EMSDK} - -RUN echo "## Install Emscripten" \ - && cd ${EMSDK} \ - && ./emsdk install ${EMSCRIPTEN_VERSION} \ - && echo "## Done" - -# This generates configuration that contains all valid paths according to installed SDK -# TODO(sbc): We should be able to use just emcc -v here but it doesn't -# currently create the sanity file. -RUN cd ${EMSDK} \ - && echo "## Generate standard configuration" \ - && ./emsdk activate ${EMSCRIPTEN_VERSION} \ - && chmod 777 ${EMSDK}/upstream/emscripten \ - && chmod -R 777 ${EMSDK}/upstream/emscripten/cache \ - && echo "int main() { return 0; }" > hello.c \ - && ${EMSDK}/upstream/emscripten/emcc -c hello.c \ - && cat ${EMSDK}/upstream/emscripten/cache/sanity.txt \ - && echo "## Done" - -# Cleanup Emscripten installation and strip some symbols -RUN echo "## Aggressive optimization: Remove debug symbols" \ - && cd ${EMSDK} && . ./emsdk_env.sh \ - # Remove debugging symbols from embedded node (extra 7MB) - && strip -s `which node` \ - # Tests consume ~80MB disc space - && rm -fr ${EMSDK}/upstream/emscripten/tests \ - # strip out symbols from clang (~extra 50MB disc space) - && find ${EMSDK}/upstream/bin -type f -exec strip -s {} + || true \ - && echo "## Done" - -# ------------------------------------------------------------------------------ -# -------------------------------- STAGE DEPLOY -------------------------------- -# ------------------------------------------------------------------------------ - -FROM ubuntu:jammy AS stage_deploy - -COPY --from=stage_build /emsdk /emsdk - -# These fallback environment variables are intended for situations where the -# entrypoint is not utilized (as in a derived image) or overridden (e.g. when -# using `--entrypoint /bin/bash` in CLI). -# This corresponds to the env variables set during: `source ./emsdk_env.sh` -ENV EMSDK=/emsdk \ - PATH="/emsdk:/emsdk/upstream/emscripten:/emsdk/node/22.16.0_64bit/bin:${PATH}" - -# ------------------------------------------------------------------------------ -# Create a 'standard` 1000:1000 user -# Thanks to that this image can be executed as non-root user and created files -# will not require root access level on host machine Please note that this -# solution even if widely spread (i.e. Node.js uses it) is far from perfect as -# user 1000:1000 might not exist on host machine, and in this case running any -# docker image will cause other random problems (mostly due `$HOME` pointing to -# `/`) -RUN echo "## Create emscripten user (1000:1000)" \ - && groupadd --gid 1000 emscripten \ - && useradd --uid 1000 --gid emscripten --shell /bin/bash --create-home emscripten \ - && echo "## Done" - -# ------------------------------------------------------------------------------ - -RUN echo "## Update and install packages" \ - && apt-get -qq -y update \ - # Somewhere in here apt sets up tzdata which asks for your time zone and blocks - # waiting for the answer which you can't give as docker build doesn't read from - # the terminal. The env vars set here avoid the interactive prompt and set the TZ. - && DEBIAN_FRONTEND="noninteractive" TZ="America/San_Francisco" apt-get -qq install -y --no-install-recommends \ - sudo \ - libxml2 \ - ca-certificates \ - python3 \ - python3-pip \ - wget \ - curl \ - zip \ - unzip \ - git \ - git-lfs \ - ssh-client \ - build-essential \ - make \ - ant \ - libidn12 \ - cmake \ - openjdk-11-jre-headless \ - # Standard Cleanup on Debian images - && apt-get -y clean \ - && apt-get -y autoclean \ - && apt-get -y autoremove \ - && rm -rf /var/lib/apt/lists/* \ - && rm -rf /var/cache/debconf/*-old \ - && rm -rf /usr/share/doc/* \ - && rm -rf /usr/share/man/?? \ - && rm -rf /usr/share/man/??_* \ - && echo "## Done" - -# ------------------------------------------------------------------------------ -# Use commonly used /src as working directory -WORKDIR /src - -ENTRYPOINT ["/emsdk/docker/entrypoint.sh"] - -LABEL maintainer="kontakt@trzeci.eu" \ - org.label-schema.name="emscripten" \ - org.label-schema.description="The official container with Emscripten SDK" \ - org.label-schema.url="https://emscripten.org" \ - org.label-schema.vcs-url="https://github.com/emscripten-core/emsdk" \ - org.label-schema.docker.dockerfile="/docker/Dockerfile" - -# ------------------------------------------------------------------------------ diff --git a/emsdk-cache/emsdk-main/docker/Makefile b/emsdk-cache/emsdk-main/docker/Makefile deleted file mode 100644 index 749ecfe94..000000000 --- a/emsdk-cache/emsdk-main/docker/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# A Makefile to build, test, tag and publish the Emscripten SDK Docker container. - -# Emscripten version to build: Should match the version that has been already released. -# i.e.: 1.39.18 -version = -alias = -only_alias = - -image_name ?= emscripten/emsdk - -.TEST: -ifndef version - $(error argument 'version' is not set. Please call `make version=SOME_VERSION ...`) -endif - -build: Dockerfile .TEST - cd .. && docker build --progress=plain --network host --build-arg=EMSCRIPTEN_VERSION=${version} -t ${image_name}:${version} -f docker/$< . - -test: test_dockerimage.sh .TEST - # test as non-root - # test fallback env variables by overriding the entrypoint - docker run --rm -u `id -u`:`id -g` -w /emsdk/docker --net=host --entrypoint /bin/bash ${image_name}:${version} $< - -push: .TEST -ifndef only_alias - docker push ${image_name}:${version} -endif -ifdef alias - docker tag ${image_name}:${version} ${image_name}:${alias} - docker push ${image_name}:${alias} -endif diff --git a/emsdk-cache/emsdk-main/docker/README.md b/emsdk-cache/emsdk-main/docker/README.md deleted file mode 100644 index 62e6c022a..000000000 --- a/emsdk-cache/emsdk-main/docker/README.md +++ /dev/null @@ -1,125 +0,0 @@ -# Dockerfile for EMSDK - -This Dockerfile builds a self-contained version of Emscripten SDK that enables Emscripten to be used without any -other installation on the host system. - -It is published at https://hub.docker.com/r/emscripten/emsdk. - -### Usage - -Simple usage of this container to compile a hello-world -```bash -# create helloworld.cpp -cat << EOF > helloworld.cpp -#include -int main() { - std::cout << "Hello World!" << std::endl; - return 0; -} -EOF -``` - -```bash -# compile with docker image -docker run \ - --rm \ - -v "$(pwd):$(pwd)" \ - -u $(id -u):$(id -g) \ - emscripten/emsdk \ - emcc helloworld.cpp -o helloworld.js - -# execute on host machine -node helloworld.js -``` - -Teardown of compilation command: - -|part|description| -|---|---| -|`docker run`| A standard command to run a command in a container| -|`--rm`|remove a container after execution (optimization)| -|`-v "$(pwd):$(pwd)"`|Mounting current folder from the host system into mirrored path on the container
    TIP: This helps to investigate possible problem as we preserve exactly the same paths like in host. In such case modern editors (like Sublime, Atom, VS Code) let us to CTRL+Click on a problematic file | -|`-u $(id -u):$(id -g)`| Run the container as a non-root user with the same UID and GID as local user. Hence all files produced by this are accessible to non-root users| -|`emscripten/emsdk`|Get the latest tag of this container| -|`emcc helloworld.cpp -o helloworld.js`|Execute `emcc` command with following arguments inside container, effectively compile our source code| - - - -### Building Dockerfile - -This image has following optional arguments - -| arg | default value | description | -| --- | --- | --- | -| `EMSCRIPTEN_VERSION` | `tot`
    (special case, tip-of-tree) | One of released version of Emscripten. For example `2.0.0`
    Minimal supported version is **1.39.0** | - -**Building** - -This step will build Dockerfile as given tag on local machine -```bash -# using docker -docker build \ - --network host \ - --build-arg=EMSCRIPTEN_VERSION=1.39.17 \ - -t emscripten/emsdk:1.39.17 \ - -f docker/Dockerfile \ - . -``` -```bash -# using predefined make target -make version=1.39.17 build test -``` - -**Tagging** - -In case of using `docker build` command directly, given `--tag` should match version of released Emscripten (you can see list of non-legacy versions by executing `emsdk list`). - -**Pushing** - -This step will take local image and push to default docker registry. You need to make sure that you logged in docker cli (`docker login`) and you have rights to push to that registry. - -```bash -# using docker -docker push emscripten/emsdk:1.39.17 -``` -```bash -# using predefined make target -make version=1.39.17 push -``` - -In case of pushing the most recent version, this version should be also tagged as `latest` and pushed. -```bash -# using docker cli -docker tag emscripten/emsdk:1.39.17 emscripten/emsdk:latest -docker push emscripten/emsdk:latest - -```bash -# using make -make version=1.39.17 alias=latest push -``` - -### Extending - -If your project uses packages that this image doesn't provide you might want to: -* Contribute to this repo: Maybe your dependency is either non-intrusive or could be useful for other people -* Create custom image that bases on this image - -1. create own Dockerfile that holds: - ```dockerfile - # Point at any base image that you find suitable to extend. - FROM emscripten/emsdk:1.39.17 - - # Install required tools that are useful for your project i.e. ninja-build - RUN apt update && apt install -y ninja-build - ``` - -2. build it - ```bash - docker build -t extended_emscripten . - ``` - -3. test - ```bash - docker run --rm extended_emscripten ninja --version - # 1.10.0 - ``` diff --git a/emsdk-cache/emsdk-main/docker/entrypoint.sh b/emsdk-cache/emsdk-main/docker/entrypoint.sh deleted file mode 100644 index ceadfc438..000000000 --- a/emsdk-cache/emsdk-main/docker/entrypoint.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -set -e - -# Set-up PATH and other environment variables -EMSDK_QUIET=1 source /emsdk/emsdk_env.sh - -exec "$@" diff --git a/emsdk-cache/emsdk-main/docker/test_dockerimage.sh b/emsdk-cache/emsdk-main/docker/test_dockerimage.sh deleted file mode 100644 index 09648206b..000000000 --- a/emsdk-cache/emsdk-main/docker/test_dockerimage.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash -set -ex - -if [ $EUID -eq 0 ]; then - sudo -u nobody `which emcc` --version -fi - -which emsdk -node --version -npm --version -python3 --version -pip3 --version -em++ --version -emcc --version -java -version -cmake --version - -exit_code=0 - -# test emcc compilation -echo 'int main() { return 0; }' | emcc -o /tmp/main.js -xc - -node /tmp/main.js || exit_code=$? -if [ $exit_code -ne 0 ]; then - echo "Node exited with non-zero exit code: $exit_code" - exit $exit_code -fi - -# test embuilder -embuilder build zlib --force diff --git a/emsdk-cache/emsdk-main/emcmdprompt.bat b/emsdk-cache/emsdk-main/emcmdprompt.bat deleted file mode 100644 index 89803aef7..000000000 --- a/emsdk-cache/emsdk-main/emcmdprompt.bat +++ /dev/null @@ -1 +0,0 @@ -@cmd /k call emsdk_env.bat \ No newline at end of file diff --git a/emsdk-cache/emsdk-main/emscripten-releases-tags.json b/emsdk-cache/emsdk-main/emscripten-releases-tags.json deleted file mode 100644 index de1e5f4bd..000000000 --- a/emsdk-cache/emsdk-main/emscripten-releases-tags.json +++ /dev/null @@ -1,279 +0,0 @@ -{ - "aliases": { - "latest": "4.0.13", - "latest-sdk": "latest", - "latest-arm64-linux": "latest", - "latest-64bit": "latest", - "sdk-latest-64bit": "latest", - "latest-upstream": "latest", - "latest-clang-upstream": "latest", - "latest-releases-upstream": "latest" - }, - "releases": { - "4.0.13": "32b8ae819674cb42b8ac2191afeb9571e33ad5e2", - "4.0.13-asserts": "17d4746128fd81d192c1685da52332c5221799bb", - "4.0.12": "209b886304498eff50dd835850dc5715803401ed", - "4.0.12-asserts": "a9e9ee083503b842a14d31db764e31d65afb8910", - "4.0.11": "7033fec38817ec01909b044ea0193ddd5057255c", - "4.0.11-asserts": "0eacb0d6", - "4.0.10": "8103ffedfb0c42d231c6af6859a5a1a832260b43", - "4.0.10-asserts": "ccf48a673362f11ddb6c3656405bb6a03b344052", - "4.0.9": "cb2a69bce627bd2247624c71fc12907cb8785d2f", - "4.0.9-asserts": "27f1e0801c6ec5ea4d9a9e1d573eb1fead3525f1", - "4.0.8": "56f86607aeb458086e72f23188789be2ee0e971a", - "4.0.8-asserts": "ab275365d4057cf92d698ef99744d66cd8c7cba9", - "4.0.7": "ef4e9cedeac3332e4738087567552063f4f250d3", - "4.0.7-asserts": "4bef8973dc12f5f38022f323d67c16237bbd2962", - "4.0.6": "14767574a5c37ff9526a253a65ddbe0811cb3667", - "4.0.6-asserts": "4050eaf1fd8e1c191198ec4ba8c346c4f3da0dc8", - "4.0.5": "d7f8ff5e2ca3539c33fae81e98f7c56ef9fa1239", - "4.0.5-asserts": "71269375282224b2e662bbe009e2e3ebc40db67f", - "4.0.4": "ea71afcf5a172125179a07ff1731de6e81c92222", - "4.0.4-asserts": "5121692126f7c96d86a13dc8462e758813e30123", - "4.0.3": "de2109f0e5e7278d470da11de526aed16c527722", - "4.0.3-asserts": "bae6703fb819bd84fb4dfb5e87b41cf93b6d3f2b", - "4.0.2": "cc8eba40de8235f9c33d92463018f87b3edaa09e", - "4.0.2-asserts": "dc575ac9a214463b2b3503c11a1a31db665b4414", - "4.0.1": "5ff495a591978fdf8a16f2d172be3616f3150d1e", - "4.0.1-asserts": "c2e46b78d3dde701187d685f8c175f17425bee68", - "4.0.0": "3ebc04a3dab24522a5bf8ced3ce3caea816558f6", - "4.0.0-asserts": "912ac2d711bb343205f314564ed287d883a7d888", - "3.1.74": "c2655005234810c7c42e02a18e4696554abe0352", - "3.1.74-asserts": "88e95307accc1f4b247b86b7a0c0e6beaf07f844", - "3.1.73": "b363a836e75a245c548b7a6a021822d8c9e4c6df", - "3.1.73-asserts": "86f3e54628089634c6b73039955388296e920291", - "3.1.72": "7a360458327cd24c2a7aab428bdbcb5bca8810e4", - "3.1.72-asserts": "92d39398c0016e73821548a4cd9df3df1358f6d9", - "3.1.71": "7ee0f9488f152e9e9cf0d4d243970e03742f1a5c", - "3.1.71-asserts": "15b142643065fe241138c6785cb8e384504f76e8", - "3.1.70": "6fa6145af41e835f3d13edf7d308c08e4573357a", - "3.1.70-asserts": "11444ec05e2cc64ef42c4f33c6e3a2a7534694f2", - "3.1.69": "8fe01288bc35668c13316324336ea00195dfb814", - "3.1.69-asserts": "cf6f9d1b4026ec7aec33aceb68077c704b52b068", - "3.1.68": "b52d8c9150dc7d4c8e4a7a08c7a9b4006c9abe49", - "3.1.68-asserts": "1565c9e5a4547215a1b63013607bf7a1cbb3d9d3", - "3.1.67": "4ae62984ea36ef0e5bfcbd0ed9b62f04bee6426a", - "3.1.67-asserts": "7cfc00962efe07f2e2ff3383f59519dc5bea4f82", - "3.1.66": "243eae09cf5c20c4fde51a620b92f483255c8214", - "3.1.66-asserts": "c5d25114210455d19cb9232171824292005a5080", - "3.1.65": "fdcf56c75a1d27fdff6525a7e03423595485ca19", - "3.1.65-asserts": "3231fb47481b2248c31002cdd7324a9155135ce0", - "3.1.64": "fd61bacaf40131f74987e649a135f1dd559aff60", - "3.1.64-asserts": "42c1d51ceb8e41e70ce1d8dc1bc534c0f609c196", - "3.1.63": "aeb36a44b29e8ca9f4c7efbb4735b69003ac2bb9", - "3.1.63-asserts": "b0275806047b42f2f88998c5c8159aec90e195ab", - "3.1.62": "d52176ac8e07c47c1773bb2776ebd91e3886c3af", - "3.1.62-asserts": "9d9e7deac8b91fbdd8804045595e807f9d774a53", - "3.1.61": "28e4a74b579b4157bda5fc34f23c7d3905a8bd6c", - "3.1.61-asserts": "7fc912687ba2077b3aeae472b51c238b3d201c46", - "3.1.60": "87709b5747de5b1993fe314285528bf4b65c23e1", - "3.1.60-asserts": "e2388e8a528890b8f3ff7b9ab4f52dbe2aeb38b9", - "3.1.59": "e20ee09a8a740544c4bc6de5d4ba5f81f74b74d6", - "3.1.59-asserts": "10ae1e83ccce9f4a363bb2e3090ba8fc32d25851", - "3.1.58": "a4d4afb626c5010f6ccda4638b8d77579a63782e", - "3.1.58-asserts": "5bc1c7108d4d91db316b24a75593a37c1117c266", - "3.1.57": "523b29e1b99a61069a2fa9f9d3cc9be1c4c53d4d", - "3.1.57-asserts": "10b736eeeac0dae3fd5bc29c6b3e32f7f7adf941", - "3.1.56": "9d106be887796484c4aaffc9dc45f48a8810f336", - "3.1.56-asserts": "2b9c4b912b611dc51f9019e11371e3cdd36fa64e", - "3.1.55": "f5557e3b7166d05bddb5977e363ec48cd06e9d32", - "3.1.55-asserts": "eb23cc30563325fd6dc97fcf85ddf26489ab9110", - "3.1.54": "aa1588cd28c250a60457b5ed342557c762f416e3", - "3.1.54-asserts": "d525f56cb765ed6884a0c443dbb906b63b148915", - "3.1.53": "e5523d57a0e0dcf80f3b101bbc23613fcc3101aa", - "3.1.53-asserts": "152cef4e00fc17776576bcc57f53badd21b92509", - "3.1.52": "ce2097fb81953331e65543c20b437475f218127c", - "3.1.52-asserts": "49e9a37dd6d1d65aa92472d8908cb8b88092dfaf", - "3.1.51": "4f416d92fbff66ce79901cfc8263768f1b25dd3e", - "3.1.51-asserts": "9035c99beb760aa0ea381bdf11abf440d88bb451", - "3.1.50": "2ce4170cef5ce46f337f9fd907b614a8db772c7d", - "3.1.50-asserts": "0a6fe6ef5880bf5b035d396f3875fda9b7c4bb60", - "3.1.49": "bd0a2e230466dadb36efc71aa7271f17c6c35420", - "3.1.49-asserts": "4ea035c5bbd6168dae34c970b5f56d7aa4dcf952", - "3.1.48": "694434b6d47c5f6eff2c8fbd9eeb016c977ae9dc", - "3.1.48-asserts": "6e2b8a97c6db82089c3a405bc88ea9fb125deb16", - "3.1.47": "39ade279e75e6d17dd6b7eb9fba2006e61fe966b", - "3.1.47-asserts": "dc49d84ed226a5a30a5117cefc07c781f6c0d16e", - "3.1.46": "21644188d5c473e92f1d7df2f9f60c758a78a486", - "3.1.46-asserts": "3e09b252d0d5a8e045d2ca92c606bfb9874bddf8", - "3.1.45": "2b7c5fb8ffeac3315deb1f82ab7bf8da544f84a1", - "3.1.45-asserts": "2aec03dfd8ce68c95316116dafbe30e273f32a81", - "3.1.44": "b90507fcf011da61bacfca613569d882f7749552", - "3.1.44-asserts": "06d00b0c62e435b743aa37c67b4ab76bc8568c79", - "3.1.43": "bf3c159888633d232c0507f4c76cc156a43c32dc", - "3.1.43-asserts": "3ec53a819a5958665d6bb0ac895c99546921b6ef", - "3.1.42": "9d73bf4bd5b5c9ce6e51be0ed5ce6599fcb28e9e", - "3.1.42-asserts": "7a622e0b66ee095aea9766375a2774b68c8bd8ef", - "3.1.41": "eb71265ef0ab905620015adbfedacf88c5dbf021", - "3.1.41-asserts": "064607aeccaffd93175bb40c072271c0393d71a5", - "3.1.40": "c3122846bb040798aab975f61008c37eb19476de", - "3.1.40-asserts": "5b5daaaabaf7292736454e4f8a73fa79bd455af4", - "3.1.39": "1b56b171b627af0841cf8d4d8c0160c6cb6d855f", - "3.1.39-asserts": "5e237cc9d9f6020af9ba908692361aa71744af1d", - "3.1.38": "03ecb526947f6a3702a0d083083799fe410d3893", - "3.1.38-asserts": "f771c7a0b55bc5d89ecceedfe9521c2c04aa43ae", - "3.1.37": "7c905cfc1ca6699f6ccb288ae174902cfbdcf0a2", - "3.1.37-asserts": "323607efbcdf84886dab55a18d758fe4c7d71d1e", - "3.1.36": "adedc0750c4a89b65bee866edab24298cb8d6677", - "3.1.36-asserts": "fdd2824226a8b001df5697146b88be98920fc215", - "3.1.35": "671550b5bdceee7bdb21493714f9a815aa5149a9", - "3.1.35-asserts": "42481a713ae805eda34f6e3e7170384c426b1d73", - "3.1.34": "2fdd6b9e5b67d5b62f84d0501a876513ff118ef1", - "3.1.34-asserts": "385382932c18a1312fff88000c4f83c2b9d1bb44", - "3.1.33": "49b960bd03b3a9da478a08541ce6eafe792a58a8", - "3.1.33-asserts": "e3ca2c6756b75cf6c6daa40276de0f25218e04a7", - "3.1.32": "29ad1037cd6b99e5d8a1bd75bc188c1e9a6fda8d", - "3.1.32-asserts": "2811c849256ec5b62b4ec32fb8369e5f3c9a54b1", - "3.1.31": "1eec24930cb2f56f6d9cd10ffcb031e27ea4157a", - "3.1.31-asserts": "48488847a38bb9cfb36e7397bea21ab2bb062680", - "3.1.30": "dc1fdcfd3f5b9d29cb1ebdf15e6e845bef9b0cc1", - "3.1.30-asserts": "21cca44e843267533c3d0b258b46c37bd142a2d7", - "3.1.29": "d949f1b99a477d4b0b54d95413df3688afa69d0a", - "3.1.29-asserts": "9d1e32e66e4b5921efc1a45cdc68e8c522c42c32", - "3.1.28": "30b9e46ddcea66e91530559379089002d8b692cf", - "3.1.28-asserts": "19871a9ea4914d63749b8d4d170e27a8854cb565", - "3.1.27": "48ce0b44015d0182fc8c27aa9fbc0a4474b55982", - "3.1.27-asserts": "630810e5a312f57d17efbe384ed7e4299f796bc1", - "3.1.26": "4f68bb2a505c727bcf58195cf4da20592a6e92c8", - "3.1.26-asserts": "4e2ffe94b04dbadfbca1687ab458d306b3414d13", - "3.1.25": "ff6babb041d0f31575cc16d15ef82c6222ca99b8", - "3.1.25-asserts": "6b19d6a8c30d7b83ba2193625fc12cce9ae0206b", - "3.1.24": "54217a0950bb1dafe8808cc6207d378e323f9d74", - "3.1.24-asserts": "4c20c7393ca208c740c16a97dbf305ba52fea2bb", - "3.1.23": "bfd5e63a44ba4c8568cd8ac87c27b35e40732bf4", - "3.1.23-asserts": "77d2c744fe37fe0e22a51329fa23bab4b8ffa656", - "3.1.22": "990cee04a21caafc75955d736fb45791a7f2aeee", - "3.1.22-asserts": "d94fe69a037e93562d0bbe9d0372ce23f4ab1089", - "3.1.21": "a16a8bca2466eb144f7c93fa899c0272c8815dc3", - "3.1.21-asserts": "c7a387161b029621eb4d3dd57363b1393b4c50b2", - "3.1.20": "d92c8639f406582d70a5dde27855f74ecf602f45", - "3.1.20-asserts": "db0fd1cb7316675317d527b6ed4f4cc7005df9ec", - "3.1.19": "4c3772879a04140298c3abde90962d5567b5e2fc", - "3.1.19-asserts": "83c2ba526ec47139d29e1417ac23d15b37ead98a", - "3.1.18": "49d45744895c7d7e28acd94a385d7ee361653b4a", - "3.1.18-asserts": "cb7fa1dce4b04e35b78ec43499a7759f24c1e64d", - "3.1.17": "d27fef2070c86a218965da8b8b5df8b4425aa3bb", - "3.1.17-asserts": "19aab28a81be09863e86aba8ee4e20feaee31f6b", - "3.1.16": "fb1baf00423818052359cf9126e94bc71c39feb5", - "3.1.16-asserts": "61848bee5b330db5ad5f827352d453b5557757fa", - "3.1.15": "568a46a9fb7e1f1686a6f7216b3dc976f28d2a79", - "3.1.15-asserts": "a8a770a0a23d2279270bd28004c8c60b02d91fbb", - "3.1.14": "ade9d780ff17c88d81aa13860361743e3c1e1396", - "3.1.14-asserts": "b55548282b553fc0b922b82d97b80f256bf01d20", - "3.1.13": "bc44364b561cfde15c243a54e3b96ea12d7ea284", - "3.1.13-asserts": "6b8f75967b5d37fa898d217b560d571694eb5b13", - "3.1.12": "a8c3b314d61e2bb98581d522f858132b2fc21488", - "3.1.12-asserts": "0ec1936aa3cb809d96abfebcc5356cd0cb15f6b8", - "3.1.11": "8c3a799341c01148692c52fda73bbba5e89c5727", - "3.1.11-asserts": "4d27b98351e021e9b7d2681a84cbab5a0ddc7a88", - "3.1.10": "8bd05c7221b4ce34d4bedec40b672d94e681a765", - "3.1.10-asserts": "d9b20effb2d660936fb5be525744e941fd900bc6", - "3.1.9": "edabe25af34554d19c046078f853999b074259ca", - "3.1.9-asserts": "c751721b1dfa47c03ede0f0da89be453c79b34ef", - "3.1.8": "8c9e0a76ebed2c5e88a718d43e8b62452def3771", - "3.1.8-asserts": "d33ae3c8d16f04b004b76c1d7c1989d637aa36e0", - "3.1.7": "d0e637fe48197587d981f79e8114757731d0c2a9", - "3.1.7-asserts": "88f0cab4e7db846e171cbbbbf20cc1a51b8c779f", - "3.1.6": "8791c3e936141cbc2dd72d76290ea9b2726d39f3", - "3.1.6-asserts": "84fa976d87a29ea1734601b042f3c6809ecb89f0", - "3.1.5": "2dee36c7163f7394ab9341854ef5281501dd97d0", - "3.1.5-asserts": "e9b96739e70faf11bbb2f63addcef59f2b2c7b48", - "3.1.4": "39e60dda6945cfcd6487725bdb1361ae7975173f", - "3.1.4-asserts": "05edbd634e300fc79ce0f635251bd5bef375328b", - "3.1.3": "2ddc66235392b37e5b33477fd86cbe01a14b8aa2", - "3.1.3-asserts": "66aaf7da980346898a84e3e1b70477286e225eec", - "3.1.2": "6626e25d6d866cf283147ca68d54ac9326fe399f", - "3.1.2-asserts": "b5cb3731eeaf127ae73d5e24b56cf5f0cdbf16a6", - "3.1.1": "5ee64de9809592480da01372880ea11debd6c740", - "3.1.1-asserts": "9455ce6306d97c0b3854e88e1e2f66d4b8565daf", - "3.1.0": "562e3a0af169e6dea5e6dbecac2255d67c2c8b94", - "3.1.0-asserts": "1de2db691103282dad6b2037018db6ece54f57c6", - "3.0.1": "91b7a67a486d2430e73423a38d950d8a550826ed", - "3.0.1-asserts": "2a84a08e92ce8748015dfc3eee40ee35a853fed0", - "3.0.0": "7fbe748230f2ce99abbf975d9ad997699efb3153", - "3.0.0-asserts": "f1d65c26f502220e278d31e7621e99b673e28093", - "2.0.34": "d8fc1b92dbc0ce8d740a7adb937c5137ba4755e0", - "2.0.33": "cef8850d57278271766fb2163eebcb07354018e7", - "2.0.32": "74646397e3c5010824ad60d1de86c6bcbe334dff", - "2.0.31": "597724ca3f6cd6e84bea73f1f519a3953b5c273d", - "2.0.31-asserts": "c1065389ccf4a81e3c1af080316afd444788bc46", - "2.0.30": "c69458f1bbf3ef5b8da4e934de210659cc9bca04", - "2.0.30-asserts": "e13a2d74c5fa5f175ae7cffd4197fe7f78bea304", - "2.0.29": "c2369dc425725fff86ba90a9007a4603ddf7941b", - "2.0.29-lto": "439b7bd7da11e99065c84a60766e427b03be4206", - "2.0.28": "866055ea639d64dfedc625d28ec981e47ce37168", - "2.0.28-lto": "ac6ac36f7a02cec857bc1e543e55c686c5bd1256", - "2.0.27": "1ac46e3b84955231ab4a4f4cbe0c7ac28c86b8cc", - "2.0.27-lto": "79509f70be89d66b8441383de94b3e5a91dedc68", - "2.0.26": "823d37b15d1ab61bc9ac0665ceef6951d3703842", - "2.0.26-lto": "b92ba43f3ac92ab6f1ce6136a8c5969b68ba6968", - "2.0.25": "f6f001b08fbb67935379cf13d17fd9bfdbaff791", - "2.0.24": "6ab7fc5622a67e6111d07c4ba61c8d3c8fc33ed2", - "2.0.23": "77b065ace39e6ab21446e13f92897f956c80476a", - "2.0.23-lto": "3f6dbb899f61fab52e4574beb4f7c8382658aa20", - "2.0.22": "6465a9acb820207acf7da44661a7de52d0a1ae3c", - "2.0.21": "72f4ec97fbc7ec16c15ae68a75b0a257b2835160", - "2.0.20": "e0c15cd14170f407a9eb27fcbad22931dc67feb7", - "2.0.20-lto": "d1b26cd17e51c5c705eea69b9545975e3705c058", - "2.0.19": "9b9ff2dabfb4a7fbacbc004c0bead12a60f9d05c", - "2.0.19-lto": "4487f6c5107e7882ae2bad6d26c34ffdceb713f0", - "2.0.18": "c2ac7520fad29a7937ed60ab6a95b08eb374c7ba", - "2.0.17": "f5c45e60392b82f603e3a8039c62db294fab02d2", - "2.0.16": "80d9674f2fafa6b9346d735c42d5c52b8cc8aa8e", - "2.0.15": "89202930a98fe7f9ed59b574469a9471b0bda7dd", - "2.0.14": "fc5562126762ab26c4757147a3b4c24e85a7289e", - "2.0.13": "ce0e4a4d1cab395ee5082a60ebb4f3891a94b256", - "2.0.12": "dcf819a7821f8db0c8f15ac336fea8960ec204f5", - "2.0.11": "4764c5c323a474f7ba28ae991b0c9024fccca43c", - "2.0.10": "37fc7647c754ac9a28ad588c143b82286de0ef71", - "2.0.9": "d8e430f9a9b6e87502f826c39e7684852f59624f", - "2.0.8": "e4ed6c79f4db8b175d9bbe55869b697aba9bcf2a", - "2.0.7": "d7a29d82b320e471203b69d43aaf03b560eedc54", - "2.0.6": "4ba921c8c8fe2e8cae071ca9889d5c27f5debd87", - "2.0.5": "461f0f118d8d8e6cfd84e077f3eb010c17a39032", - "2.0.4": "eefeb3e623af023844ac477d70d1fd8a668f5110", - "2.0.3": "7a7f38ca19da152d4cd6da4776921a0f1e3f3e3f", - "2.0.2": "ede25d889a0abe63360d4c5d420087c8753b8bbe", - "2.0.1": "13e29bd55185e3c12802bc090b4507901856b2ba", - "2.0.0": "5974288502aab433d45f53511e961aaca4079d86", - "1.40.1": "536568644fd67d53778f6111fdd5f64ad3f4c539", - "1.40.0": "edf24e7233e0def312a08cc8dcec63a461155da1", - "1.39.20": "e7e39da9c81faecd9ecf44065cee864d76e4e34d", - "1.39.19": "665121d026cafc46c29b30d6d4c45ed73eedbb7e", - "1.39.18": "1914a1543f08cd8e41f44c2bb05f7a90d1920275", - "1.39.17": "9bc968c0e49b1c795ecddb87391b265911e2adcb", - "1.39.16": "ae5001fac3849895a873e422a2a80afc90f3b798", - "1.39.15": "3880c744c068986d4ee781a61f7b2e820043e11f", - "1.39.14": "574ad04affb82cc36a32dd89b2a87bea4fb30eba", - "1.39.13": "7b3cd38017f7c582cfa3ac24a9f12aa6a8dca51f", - "1.39.12": "e13b86d4dbd9a986525ef27d4ad8157949b9bc3a", - "1.39.11": "6584e2d88570ee55914db92a3bad84f99e5bdd82", - "1.39.10": "65d33d604d3fa0ebe03548378b898fc6608e9cb8", - "1.39.9": "122396dfad60e1b2a83ccefa74a1425a2e05b5cb", - "1.39.8": "9e60f34accb4627d7358223862a7e74291886ab6", - "1.39.7": "9a89fff28cc6f75e17976fce1904b280e4beb25d", - "1.39.6": "967836071d96d9b7894e492382f5fcb96423fc07", - "1.39.5": "b3ddcab6efd749d3ed937fb452ace4e39a825842", - "1.39.4": "8bb7b0bbbca74cc58741416cc955011f22ff5ccb", - "1.39.3": "b024b71038d1291ed7ec23ecd553bf2c0c8d6da6", - "1.39.2": "c630da9163a64e08de3dd948be0a0f7a175d285b", - "1.39.1": "40f3caabcef7b52bdde63d3883462414d7a25bec", - "1.39.0": "d57bfdd6d43181501bbd3fab502d57c9073ceb49", - "1.38.48": "1290d9deb93d67c4649999a8f2c8d9167d38dc04", - "1.38.47": "bc367c257409d676e71c5511383228b7aabf1689", - "1.38.46": "c89919d252f7cea00d944bdf3bd630cd3c7e7388", - "1.38.45": "f3030d9fffcc9e1287cb6b8e72982e94ece31d71", - "1.38.44": "e5fd171371c3dcb8806a337f2dfa9b70f598f456", - "1.38.43": "737d4a07be76c15124adf3c6ef2c218123f7a67f", - "1.38.42": "05f8c01394ddd0838d3cb484ba8ca97a3efc1ac9", - "1.38.41": "5c6785a63993ae7a4d5362b32b0be9c85138fb96", - "1.38.40": "7b4b328af02eafbc857b8ca1e3d9b12dddc56ef7", - "1.38.39": "f42b12c45fd3f4c20de1321402fbc28f8fd21df1", - "1.38.38": "80bff2784f8500c1305ca69ba1d9fc84df0e401c", - "1.38.37": "0ca6c49e30bc09c3ccefc867df4196a4b4183441", - "1.38.36": "d46be49c2aab975333423122239892bd46f52bba", - "1.38.35": "98f49919f25e06fa557cbcb1321d4c10e60c87ca", - "1.38.34": "048cf9424790cc525a7ea6da340820aae226f3b9", - "1.38.33": "3b8cff670e9233a6623563add831647e8689a86b" - } -} diff --git a/emsdk-cache/emsdk-main/emsdk.bat b/emsdk-cache/emsdk-main/emsdk.bat deleted file mode 100644 index ba697c288..000000000 --- a/emsdk-cache/emsdk-main/emsdk.bat +++ /dev/null @@ -1,46 +0,0 @@ -@echo off - -:: Find python from an explicit location relative to the Emscripten SDK. - -setlocal - -:: When using our bundled python we never want the users -:: PYTHONHOME or PYTHONPATH -:: https://github.com/emscripten-core/emsdk/issues/598 - -if exist "%~dp0python\3.13.3_64bit\python.exe" ( - set EMSDK_PY="%~dp0python\3.13.3_64bit\python.exe" - set PYTHONHOME= - set PYTHONPATH= - goto end -) - -if exist "%~dp0python\3.9.2_64bit\python.exe" ( - set EMSDK_PY="%~dp0python\3.9.2_64bit\python.exe" - set PYTHONHOME= - set PYTHONPATH= - goto end -) - -if exist "%~dp0python\3.9.2-nuget_64bit\python.exe" ( - set EMSDK_PY="%~dp0python\3.9.2-nuget_64bit\python.exe" - set PYTHONHOME= - set PYTHONPATH= - goto end -) - -:: As a last resort, access from PATH. -set EMSDK_PY=python - -:end -call %EMSDK_PY% "%~dp0\emsdk.py" %* - -endlocal - -:: python is not able to set environment variables to the parent calling -:: process, so therefore have it craft a .bat file, which we invoke after -:: finishing python execution, to set up the environment variables -if exist "%~dp0\emsdk_set_env.bat" ( - call "%~dp0\emsdk_set_env.bat" > nul - del /F /Q "%~dp0\emsdk_set_env.bat" -) diff --git a/emsdk-cache/emsdk-main/emsdk.ps1 b/emsdk-cache/emsdk-main/emsdk.ps1 deleted file mode 100644 index 81b798a2c..000000000 --- a/emsdk-cache/emsdk-main/emsdk.ps1 +++ /dev/null @@ -1,36 +0,0 @@ -$ScriptDirectory = Split-Path -parent $PSCommandPath - -$PythonLocations = $( - "python\3.13.3-0_64bit\python.exe", - "python\3.9.2-1_64bit\python.exe", - "python\3.9.2-nuget_64bit\python.exe" -) - -# Find python from an explicit location relative to the Emscripten SDK. -foreach ($Location in $PythonLocations) { - $FullLocation = Join-Path $ScriptDirectory $Location - if (Test-Path $FullLocation) { - $EMSDK_PY = $FullLocation - break - } -} - -# As a last resort, access from PATH. -if (-Not $EMSDK_PY) { - $EMSDK_PY = "python" -} - -# Tell EMSDK to create environment variable setter as a .ps1 file -$env:EMSDK_POWERSHELL = 1 - -& $EMSDK_PY "$ScriptDirectory/emsdk.py" $args - -# python is not able to set environment variables to the parent calling process, so -# therefore have it craft a .ps1 file, which we invoke after finishing python execution, -# to set up the environment variables -if (Test-Path $ScriptDirectory/emsdk_set_env.ps1) { - & $ScriptDirectory/emsdk_set_env.ps1 - Remove-Item $ScriptDirectory/emsdk_set_env.ps1 -} - -Remove-Item Env:\EMSDK_POWERSHELL diff --git a/emsdk-cache/emsdk-main/emsdk.py b/emsdk-cache/emsdk-main/emsdk.py deleted file mode 100644 index 22c08386d..000000000 --- a/emsdk-cache/emsdk-main/emsdk.py +++ /dev/null @@ -1,3083 +0,0 @@ -#!/usr/bin/env python -# Copyright 2019 The Emscripten Authors. All rights reserved. -# Emscripten is available under two separate licenses, the MIT license and the -# University of Illinois/NCSA Open Source License. Both these licenses can be -# found in the LICENSE file. - -from __future__ import print_function - -import copy -from collections import OrderedDict -import errno -import json -import multiprocessing -import os -import os.path -import platform -import re -import shutil -import stat -import subprocess -import sys -import sysconfig -import zipfile -if os.name == 'nt': - try: - import winreg - except ImportError: - # old python 2 name - import _winreg as winreg - import ctypes.wintypes - -if sys.version_info >= (3,): - from urllib.parse import urljoin - from urllib.request import urlopen - import functools -else: - from urlparse import urljoin - from urllib2 import urlopen - - -emsdk_packages_url = 'https://storage.googleapis.com/webassembly/emscripten-releases-builds/deps/' - -emscripten_releases_repo = 'https://chromium.googlesource.com/emscripten-releases' - -emscripten_releases_download_url_template = "https://storage.googleapis.com/webassembly/emscripten-releases-builds/%s/%s/wasm-binaries%s.%s" - -# This was previously `master.zip` but we are transitioning to `main` and -# `HEAD.zip` works for both cases. In future we could switch this to -# `main.zip` perhaps. -emsdk_zip_download_url = 'https://github.com/emscripten-core/emsdk/archive/HEAD.zip' - -download_dir = 'downloads/' - -extra_release_tag = None - -# Enable this to do very verbose printing about the different steps that are -# being run. Useful for debugging. -VERBOSE = int(os.getenv('EMSDK_VERBOSE', '0')) -QUIET = int(os.getenv('EMSDK_QUIET', '0')) -TTY_OUTPUT = not os.getenv('EMSDK_NOTTY', not sys.stdout.isatty()) - - -def info(msg): - if not QUIET: - print(msg, file=sys.stderr) - - -def errlog(msg): - print(msg, file=sys.stderr) - - -def exit_with_error(msg): - errlog('error: %s' % msg) - sys.exit(1) - - -WINDOWS = False -MINGW = False -MSYS = False -MACOS = False -LINUX = False - -if 'EMSDK_OS' in os.environ: - EMSDK_OS = os.environ['EMSDK_OS'] - if EMSDK_OS == 'windows': - WINDOWS = True - elif EMSDK_OS == 'linux': - LINUX = True - elif EMSDK_OS == 'macos': - MACOS = True - else: - assert False, 'EMSDK_OS must be one of: windows, linux, macos' -else: - if os.name == 'nt' or ('windows' in os.getenv('SYSTEMROOT', '').lower()) or ('windows' in os.getenv('COMSPEC', '').lower()): - WINDOWS = True - - if os.getenv('MSYSTEM'): - MSYS = True - # Some functions like os.path.normpath() exhibit different behavior between - # different versions of Python, so we need to distinguish between the MinGW - # and MSYS versions of Python - if sysconfig.get_platform() == 'mingw': - MINGW = True - if os.getenv('MSYSTEM') != 'MSYS' and os.getenv('MSYSTEM') != 'MINGW64': - # https://stackoverflow.com/questions/37460073/msys-vs-mingw-internal-environment-variables - errlog('Warning: MSYSTEM environment variable is present, and is set to "' + os.getenv('MSYSTEM') + '". This shell has not been tested with emsdk and may not work.') - - if platform.mac_ver()[0] != '': - MACOS = True - - if not MACOS and (platform.system() == 'Linux'): - LINUX = True - -UNIX = (MACOS or LINUX) - - -# Pick which shell of 4 shells to use -POWERSHELL = bool(os.getenv('EMSDK_POWERSHELL')) -CSH = bool(os.getenv('EMSDK_CSH')) -CMD = bool(os.getenv('EMSDK_CMD')) -BASH = bool(os.getenv('EMSDK_BASH')) -FISH = bool(os.getenv('EMSDK_FISH')) - -if WINDOWS and BASH: - MSYS = True - -if not CSH and not POWERSHELL and not BASH and not CMD and not FISH: - # Fall back to default of `cmd` on windows and `bash` otherwise - if WINDOWS and not MSYS: - CMD = True - else: - BASH = True - -if WINDOWS: - ENVPATH_SEPARATOR = ';' -else: - ENVPATH_SEPARATOR = ':' - -# platform.machine() may return AMD64 on windows, so standardize the case. -machine = os.getenv('EMSDK_ARCH', platform.machine().lower()) -if machine.startswith('x64') or machine.startswith('amd64') or machine.startswith('x86_64'): - ARCH = 'x86_64' -elif machine.endswith('86'): - ARCH = 'x86' -elif machine.startswith('aarch64') or machine.lower().startswith('arm64'): - ARCH = 'arm64' -elif machine.startswith('arm'): - ARCH = 'arm' -else: - exit_with_error('unknown machine architecture: ' + machine) - - -# Don't saturate all cores to not steal the whole system, but be aggressive. -CPU_CORES = int(os.getenv('EMSDK_NUM_CORES', max(multiprocessing.cpu_count() - 1, 1))) - -CMAKE_BUILD_TYPE_OVERRIDE = None - -# If true, perform a --shallow clone of git. -GIT_CLONE_SHALLOW = False - -# If true, LLVM backend is built with tests enabled, and Binaryen is built with -# Visual Studio static analyzer enabled. -BUILD_FOR_TESTING = False - -# If 'auto', assertions are decided by the build type -# (Release&MinSizeRel=disabled, Debug&RelWithDebInfo=enabled) -# Other valid values are 'ON' and 'OFF' -ENABLE_LLVM_ASSERTIONS = 'auto' - -# If true, keeps the downloaded archive files. -KEEP_DOWNLOADS = bool(os.getenv('EMSDK_KEEP_DOWNLOADS')) - - -def os_name(): - if WINDOWS: - return 'win' - elif LINUX: - return 'linux' - elif MACOS: - return 'mac' - else: - raise Exception('unknown OS') - - -def debug_print(msg): - if VERBOSE: - errlog(msg) - - -def to_unix_path(p): - return p.replace('\\', '/') - - -EMSDK_PATH = to_unix_path(os.path.dirname(os.path.realpath(__file__))) - -EMSDK_SET_ENV = "" -if POWERSHELL: - EMSDK_SET_ENV = os.path.join(EMSDK_PATH, 'emsdk_set_env.ps1') -else: - EMSDK_SET_ENV = os.path.join(EMSDK_PATH, 'emsdk_set_env.bat') - - -# Parses https://github.com/emscripten-core/emscripten/tree/d6aced8 to a pair (https://github.com/emscripten-core/emscripten, d6aced8) -def parse_github_url_and_refspec(url): - if not url: - return ('', '') - - if url.endswith(('/tree/', '/tree', '/commit/', '/commit')): - raise Exception('Malformed git URL and refspec ' + url + '!') - - if '/tree/' in url: - if url.endswith('/'): - raise Exception('Malformed git URL and refspec ' + url + '!') - return url.split('/tree/') - elif '/commit/' in url: - if url.endswith('/'): - raise Exception('Malformed git URL and refspec ' + url + '!') - return url.split('/commit/') - else: - return (url, 'main') # Assume the default branch is main in the absence of a refspec - - -ARCHIVE_SUFFIXES = ('zip', '.tar', '.gz', '.xz', '.tbz2', '.bz2') - - -# Finds the given executable 'program' in PATH. Operates like the Unix tool 'which'. -def which(program): - def is_exe(fpath): - return os.path.isfile(fpath) and (WINDOWS or os.access(fpath, os.X_OK)) - - fpath, fname = os.path.split(program) - if fpath: - if is_exe(program): - return program - else: - for path in os.environ["PATH"].split(os.pathsep): - path = path.strip('"') - exe_file = os.path.join(path, program) - if is_exe(exe_file): - return exe_file - - if WINDOWS and '.' not in fname: - if is_exe(exe_file + '.exe'): - return exe_file + '.exe' - if is_exe(exe_file + '.cmd'): - return exe_file + '.cmd' - if is_exe(exe_file + '.bat'): - return exe_file + '.bat' - - return None - - -def vswhere(version): - try: - program_files = os.getenv('ProgramFiles(x86)') - if not program_files: - program_files = os.environ['ProgramFiles'] - vswhere_path = os.path.join(program_files, 'Microsoft Visual Studio', 'Installer', 'vswhere.exe') - # Source: https://learn.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2022 - tools_arch = 'ARM64' if ARCH == 'arm64' else 'x86.x64' - # The "-products *" allows detection of Build Tools, the "-prerelease" allows detection of Preview version - # of Visual Studio and Build Tools. - output = json.loads(subprocess.check_output([vswhere_path, '-latest', '-products', '*', '-prerelease', '-version', '[%s.0,%s.0)' % (version, version + 1), '-requires', 'Microsoft.VisualStudio.Component.VC.Tools.' + tools_arch, '-property', 'installationPath', '-format', 'json'])) - return str(output[0]['installationPath']) - except Exception: - return '' - - -def vs_filewhere(installation_path, platform, file): - try: - vcvarsall = os.path.join(installation_path, 'VC\\Auxiliary\\Build\\vcvarsall.bat') - env = subprocess.check_output('cmd /c "%s" %s & where %s' % (vcvarsall, platform, file)) - paths = [path[:-len(file)] for path in env.split('\r\n') if path.endswith(file)] - return paths[0] - except Exception: - return '' - - -CMAKE_GENERATOR = 'Unix Makefiles' -if WINDOWS: - # Detect which CMake generator to use when building on Windows - if '--mingw' in sys.argv: - CMAKE_GENERATOR = 'MinGW Makefiles' - elif '--vs2022' in sys.argv: - CMAKE_GENERATOR = 'Visual Studio 17' - elif '--vs2019' in sys.argv: - CMAKE_GENERATOR = 'Visual Studio 16' - elif len(vswhere(17)) > 0: - CMAKE_GENERATOR = 'Visual Studio 17' - elif len(vswhere(16)) > 0: - CMAKE_GENERATOR = 'Visual Studio 16' - elif which('mingw32-make') is not None and which('g++') is not None: - CMAKE_GENERATOR = 'MinGW Makefiles' - else: - # No detected generator - CMAKE_GENERATOR = '' - - -sys.argv = [a for a in sys.argv if a not in ('--mingw', '--vs2019', '--vs2022')] - - -# Computes a suitable path prefix to use when building with a given generator. -def cmake_generator_prefix(): - if CMAKE_GENERATOR == 'Visual Studio 17': - return '_vs2022' - if CMAKE_GENERATOR == 'Visual Studio 16': - return '_vs2019' - elif CMAKE_GENERATOR == 'MinGW Makefiles': - return '_mingw' - # Unix Makefiles do not specify a path prefix for backwards path compatibility - return '' - - -# Removes a directory tree even if it was readonly, and doesn't throw exception -# on failure. -def remove_tree(d): - debug_print('remove_tree(' + str(d) + ')') - if not os.path.exists(d): - return - try: - def remove_readonly_and_try_again(func, path, exc_info): - if not (os.stat(path).st_mode & stat.S_IWRITE): - os.chmod(path, stat.S_IWRITE) - func(path) - else: - raise - shutil.rmtree(d, onerror=remove_readonly_and_try_again) - except Exception as e: - debug_print('remove_tree threw an exception, ignoring: ' + str(e)) - - -def win_set_environment_variable_direct(key, value, system=True): - folder = None - try: - if system: - # Read globally from ALL USERS section. - folder = winreg.OpenKeyEx(winreg.HKEY_LOCAL_MACHINE, 'SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment', 0, winreg.KEY_ALL_ACCESS) - else: - # Register locally from CURRENT USER section. - folder = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, 'Environment', 0, winreg.KEY_ALL_ACCESS) - winreg.SetValueEx(folder, key, 0, winreg.REG_EXPAND_SZ, value) - debug_print('Set key=' + key + ' with value ' + value + ' in registry.') - return True - except Exception as e: - # 'Access is denied.' - if e.args[3] == 5: - exit_with_error('failed to set the environment variable \'' + key + '\'! Setting environment variables permanently requires administrator access. Please rerun this command with administrative privileges. This can be done for example by holding down the Ctrl and Shift keys while opening a command prompt in start menu.') - errlog('Failed to write environment variable ' + key + ':') - errlog(str(e)) - return False - finally: - if folder is not None: - folder.Close() - - -def win_get_environment_variable(key, system=True, user=True, fallback=True): - if (not system and not user and fallback): - # if no --system or --permanent flag is provided use shell's value - return os.environ[key] - try: - folder = None - try: - if system: - # Read globally from ALL USERS section. - folder = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, 'SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment') - else: - # Register locally from CURRENT USER section. - folder = winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'Environment') - value = str(winreg.QueryValueEx(folder, key)[0]) - except Exception: - # If reading registry fails for some reason - read via os.environ. This has the drawback - # that expansion items such as %PROGRAMFILES% will have been expanded, so - # need to be precise not to set these back to system registry, or - # expansion items would be lost. - if fallback: - return os.environ[key] - return None - finally: - if folder is not None: - folder.Close() - - except Exception as e: - # this catch is if both the registry key threw an exception and the key is not in os.environ - if e.args[0] != 2: - # 'The system cannot find the file specified.' - errlog('Failed to read environment variable ' + key + ':') - errlog(str(e)) - return None - return value - - -def win_set_environment_variable(key, value, system, user): - debug_print('set ' + str(key) + '=' + str(value) + ', in system=' + str(system)) - previous_value = win_get_environment_variable(key, system=system, user=user) - if previous_value == value: - debug_print(' no need to set, since same value already exists.') - # No need to elevate UAC for nothing to set the same value, skip. - return False - - if not value: - try: - if system: - cmd = ['REG', 'DELETE', 'SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment', '/V', key, '/f'] - else: - cmd = ['REG', 'DELETE', 'HKCU\\Environment', '/V', key, '/f'] - debug_print(str(cmd)) - value = subprocess.call(cmd, stdout=subprocess.PIPE) - except Exception: - return False - return True - - try: - if win_set_environment_variable_direct(key, value, system): - return True - # Escape % signs so that we don't expand references to environment variables. - value = value.replace('%', '^%') - if len(value) >= 1024: - exit_with_error('the new environment variable ' + key + ' is more than 1024 characters long! A value this long cannot be set via command line: please add the environment variable specified above to system environment manually via Control Panel.') - cmd = ['SETX', key, value] - debug_print(str(cmd)) - retcode = subprocess.call(cmd, stdout=subprocess.PIPE) - if retcode != 0: - errlog('ERROR! Failed to set environment variable ' + key + '=' + value + '. You may need to set it manually.') - else: - return True - except Exception as e: - errlog('ERROR! Failed to set environment variable ' + key + '=' + value + ':') - errlog(str(e)) - errlog('You may need to set it manually.') - - return False - - -def win_set_environment_variables(env_vars_to_add, system, user): - if not env_vars_to_add: - return - - changed = False - - for key, value in env_vars_to_add: - if win_set_environment_variable(key, value, system, user): - if not changed: - changed = True - print('Setting global environment variables:') - - print(key + ' = ' + value) - - if not changed: - print('Global environment variables up to date') - return - - # if changes were made then we need to notify other processes - try: - HWND_BROADCAST = ctypes.wintypes.HWND(0xFFFF) # win32con.HWND_BROADCAST == 65535 - WM_SETTINGCHANGE = 0x001A # win32con.WM_SETTINGCHANGE == 26 - SMTO_BLOCK = 0x0001 # win32con.SMTO_BLOCK == 1 - ctypes.windll.user32.SendMessageTimeoutA( - HWND_BROADCAST, # hWnd: notify everyone - WM_SETTINGCHANGE, # Msg: registry changed - 0, # wParam: Must be 0 when setting changed is sent by users - 'Environment', # lParam: Specifically environment variables changed - SMTO_BLOCK, # fuFlags: Wait for message to be sent or timeout - 100) # uTimeout: 100ms - except Exception as e: - errlog('SendMessageTimeout failed with error: ' + str(e)) - - -def win_delete_environment_variable(key, system=True, user=True): - debug_print('win_delete_environment_variable(key=' + key + ', system=' + str(system) + ')') - return win_set_environment_variable(key, None, system, user) - - -# Returns the absolute pathname to the given path inside the Emscripten SDK. -def sdk_path(path): - if os.path.isabs(path): - return path - - return to_unix_path(os.path.join(EMSDK_PATH, path)) - - -# Removes a single file, suppressing exceptions on failure. -def rmfile(filename): - debug_print('rmfile(' + filename + ')') - if os.path.lexists(filename): - os.remove(filename) - - -# http://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python -def mkdir_p(path): - debug_print('mkdir_p(' + path + ')') - try: - os.makedirs(path) - except OSError as exc: # Python >2.5 - if exc.errno != errno.EEXIST or not os.path.isdir(path): - raise - - -def is_nonempty_directory(path): - if not os.path.isdir(path): - return False - return len(os.listdir(path)) != 0 - - -def run(cmd, cwd=None, quiet=False): - debug_print('run(cmd=' + str(cmd) + ', cwd=' + str(cwd) + ')') - process = subprocess.Popen(cmd, cwd=cwd, env=os.environ.copy()) - process.communicate() - if process.returncode != 0 and not quiet: - errlog(str(cmd) + ' failed with error code ' + str(process.returncode) + '!') - return process.returncode - - -# http://pythonicprose.blogspot.fi/2009/10/python-extract-targz-archive.html -def untargz(source_filename, dest_dir): - print("Unpacking '" + source_filename + "' to '" + dest_dir + "'") - mkdir_p(dest_dir) - returncode = run(['tar', '-xvf' if VERBOSE else '-xf', sdk_path(source_filename), '--strip', '1'], cwd=dest_dir) - # tfile = tarfile.open(source_filename, 'r:gz') - # tfile.extractall(dest_dir) - return returncode == 0 - - -# On Windows, it is not possible to reference path names that are longer than -# ~260 characters, unless the path is referenced via a "\\?\" prefix. -# See https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath and http://stackoverflow.com/questions/3555527/python-win32-filename-length-workaround -# In that mode, forward slashes cannot be used as delimiters. -def fix_potentially_long_windows_pathname(pathname): - if not WINDOWS or MSYS: - return pathname - # Test if emsdk calls fix_potentially_long_windows_pathname() with long - # relative paths (which is problematic) - if not os.path.isabs(pathname) and len(pathname) > 200: - errlog('Warning: Seeing a relative path "' + pathname + '" which is dangerously long for being referenced as a short Windows path name. Refactor emsdk to be able to handle this!') - if pathname.startswith('\\\\?\\'): - return pathname - pathname = os.path.normpath(pathname.replace('/', '\\')) - if MINGW: - # MinGW versions of Python return normalized paths with backslashes - # converted to forward slashes, so we must use forward slashes in our - # prefix - return '//?/' + pathname - return '\\\\?\\' + pathname - - -# On windows, rename/move will fail if the destination exists, and there is no -# race-free way to do it. This method removes the destination if it exists, so -# the move always works -def move_with_overwrite(src, dest): - if os.path.exists(dest): - os.remove(dest) - os.rename(src, dest) - - -# http://stackoverflow.com/questions/12886768/simple-way-to-unzip-file-in-python-on-all-oses -def unzip(source_filename, dest_dir): - print("Unpacking '" + source_filename + "' to '" + dest_dir + "'") - mkdir_p(dest_dir) - common_subdir = None - try: - with zipfile.ZipFile(source_filename) as zf: - # Implement '--strip 1' behavior to unzipping by testing if all the files - # in the zip reside in a common subdirectory, and if so, we move the - # output tree at the end of uncompression step. - for member in zf.infolist(): - words = member.filename.split('/') - if len(words) > 1: # If there is a directory component? - if common_subdir is None: - common_subdir = words[0] - elif common_subdir != words[0]: - common_subdir = None - break - else: - common_subdir = None - break - - unzip_to_dir = dest_dir - if common_subdir: - unzip_to_dir = os.path.join(os.path.dirname(dest_dir), 'unzip_temp') - - # Now do the actual decompress. - for member in zf.infolist(): - zf.extract(member, fix_potentially_long_windows_pathname(unzip_to_dir)) - dst_filename = os.path.join(unzip_to_dir, member.filename) - - # See: https://stackoverflow.com/questions/42326428/zipfile-in-python-file-permission - unix_attributes = member.external_attr >> 16 - if unix_attributes: - os.chmod(dst_filename, unix_attributes) - - # Move the extracted file to its final location without the base - # directory name, if we are stripping that away. - if common_subdir: - if not member.filename.startswith(common_subdir): - raise Exception('Unexpected filename "' + member.filename + '"!') - stripped_filename = '.' + member.filename[len(common_subdir):] - final_dst_filename = os.path.join(dest_dir, stripped_filename) - # Check if a directory - if stripped_filename.endswith('/'): - d = fix_potentially_long_windows_pathname(final_dst_filename) - if not os.path.isdir(d): - os.mkdir(d) - else: - parent_dir = os.path.dirname(fix_potentially_long_windows_pathname(final_dst_filename)) - if parent_dir and not os.path.exists(parent_dir): - os.makedirs(parent_dir) - move_with_overwrite(fix_potentially_long_windows_pathname(dst_filename), fix_potentially_long_windows_pathname(final_dst_filename)) - - if common_subdir: - remove_tree(unzip_to_dir) - except zipfile.BadZipfile as e: - errlog("Unzipping file '" + source_filename + "' failed due to reason: " + str(e) + "! Removing the corrupted zip file.") - rmfile(source_filename) - return False - except Exception as e: - errlog("Unzipping file '" + source_filename + "' failed due to reason: " + str(e)) - return False - - return True - - -# This function interprets whether the given string looks like a path to a -# directory instead of a file, without looking at the actual filesystem. -# 'a/b/c' points to directory, so does 'a/b/c/', but 'a/b/c.x' is parsed as a -# filename -def path_points_to_directory(path): - if path == '.': - return True - last_slash = max(path.rfind('/'), path.rfind('\\')) - last_dot = path.rfind('.') - no_suffix = last_dot < last_slash or last_dot == -1 - if no_suffix: - return True - suffix = path[last_dot:] - # Very simple logic for the only file suffixes used by emsdk downloader. Other - # suffixes, like 'clang-3.2' are treated as dirs. - if suffix in ('.exe', '.zip', '.txt'): - return False - else: - return True - - -def get_content_length(download): - try: - meta = download.info() - if hasattr(meta, "getheaders") and hasattr(meta.getheaders, "Content-Length"): - return int(meta.getheaders("Content-Length")[0]) - elif hasattr(download, "getheader") and download.getheader('Content-Length'): - return int(download.getheader('Content-Length')) - elif hasattr(meta, "getheader") and meta.getheader('Content-Length'): - return int(meta.getheader('Content-Length')) - except Exception: - pass - - return 0 - - -def get_download_target(url, dstpath, filename_prefix=''): - file_name = filename_prefix + url.split('/')[-1] - if path_points_to_directory(dstpath): - file_name = os.path.join(dstpath, file_name) - else: - file_name = dstpath - - # Treat all relative destination paths as relative to the SDK root directory, - # not the current working directory. - file_name = sdk_path(file_name) - - return file_name - - -def download_with_curl(url, file_name): - print("Downloading: %s from %s" % (file_name, url)) - if not which('curl'): - exit_with_error('curl not found in PATH') - # -#: show progress bar - # -L: Follow HTTP 3XX redirections - # -f: Fail on HTTP errors - subprocess.check_call(['curl', '-#', '-f', '-L', '-o', file_name, url]) - - -def download_with_urllib(url, file_name): - u = urlopen(url) - file_size = get_content_length(u) - if file_size > 0: - print("Downloading: %s from %s, %s Bytes" % (file_name, url, file_size)) - else: - print("Downloading: %s from %s" % (file_name, url)) - - file_size_dl = 0 - # Draw a progress bar 80 chars wide (in non-TTY mode) - progress_max = 80 - 4 - progress_shown = 0 - block_sz = 256 * 1024 - if not TTY_OUTPUT: - print(' [', end='') - - with open(file_name, 'wb') as f: - while True: - buffer = u.read(block_sz) - if not buffer: - break - - file_size_dl += len(buffer) - f.write(buffer) - if file_size: - percent = file_size_dl * 100.0 / file_size - if TTY_OUTPUT: - status = r" %10d [%3.02f%%]" % (file_size_dl, percent) - print(status, end='\r') - else: - while progress_shown < progress_max * percent / 100: - print('-', end='') - sys.stdout.flush() - progress_shown += 1 - - if not TTY_OUTPUT: - print(']') - sys.stdout.flush() - - debug_print('finished downloading (%d bytes)' % file_size_dl) - - -# On success, returns the filename on the disk pointing to the destination file that was produced -# On failure, returns None. -def download_file(url, dstpath, download_even_if_exists=False, - filename_prefix='', silent=False): - debug_print('download_file(url=' + url + ', dstpath=' + dstpath + ')') - file_name = get_download_target(url, dstpath, filename_prefix) - - if os.path.exists(file_name) and not download_even_if_exists: - print("File '" + file_name + "' already downloaded, skipping.") - return file_name - - mkdir_p(os.path.dirname(file_name)) - - try: - # Use curl on macOS to avoid CERTIFICATE_VERIFY_FAILED issue with - # python's urllib: - # https://stackoverflow.com/questions/40684543/how-to-make-python-use-ca-certificates-from-mac-os-truststore - # Unlike on linux or windows, curl is always available on macOS systems. - if MACOS: - download_with_curl(url, file_name) - else: - download_with_urllib(url, file_name) - except Exception as e: - errlog("Error: Downloading URL '" + url + "': " + str(e)) - return None - except KeyboardInterrupt: - rmfile(file_name) - raise - - return file_name - - -def run_get_output(cmd, cwd=None): - debug_print('run_get_output(cmd=' + str(cmd) + ', cwd=' + str(cwd) + ')') - process = subprocess.Popen(cmd, cwd=cwd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, env=os.environ.copy(), universal_newlines=True) - stdout, stderr = process.communicate() - return (process.returncode, stdout, stderr) - - -cached_git_executable = None - - -# must_succeed: If false, the search is performed silently without printing out -# errors if not found. Empty string is returned if git is not found. -# If true, the search is required to succeed, and the execution -# will terminate with sys.exit(1) if not found. -def GIT(must_succeed=True): - global cached_git_executable - if cached_git_executable is not None: - return cached_git_executable - # The order in the following is important, and specifies the preferred order - # of using the git tools. Primarily use git from emsdk if installed. If not, - # use system git. - gits = ['git/1.9.4/bin/git.exe', which('git')] - for git in gits: - try: - ret, stdout, stderr = run_get_output([git, '--version']) - if ret == 0: - cached_git_executable = git - return git - except Exception: - pass - if must_succeed: - if WINDOWS: - msg = "git executable was not found. Please install it by typing 'emsdk install git-1.9.4', or alternatively by installing it manually from http://git-scm.com/downloads . If you install git manually, remember to add it to PATH" - elif MACOS: - msg = "git executable was not found. Please install git for this operation! This can be done from http://git-scm.com/ , or by installing XCode and then the XCode Command Line Tools (see http://stackoverflow.com/questions/9329243/xcode-4-4-command-line-tools )" - elif LINUX: - msg = "git executable was not found. Please install git for this operation! This can be probably be done using your package manager, see http://git-scm.com/book/en/Getting-Started-Installing-Git" - else: - msg = "git executable was not found. Please install git for this operation!" - exit_with_error(msg) - # Not found - return '' - - -def git_repo_version(repo_path): - returncode, stdout, stderr = run_get_output([GIT(), 'log', '-n', '1', '--pretty="%aD %H"'], cwd=repo_path) - if returncode == 0: - return stdout.strip() - else: - return "" - - -def git_recent_commits(repo_path, n=20): - returncode, stdout, stderr = run_get_output([GIT(), 'log', '-n', str(n), '--pretty="%H"'], cwd=repo_path) - if returncode == 0: - return stdout.strip().replace('\r', '').replace('"', '').split('\n') - else: - return [] - - -def git_clone(url, dstpath, branch): - debug_print('git_clone(url=' + url + ', dstpath=' + dstpath + ')') - if os.path.isdir(os.path.join(dstpath, '.git')): - debug_print("Repository '" + url + "' already cloned to directory '" + dstpath + "', skipping.") - return True - mkdir_p(dstpath) - git_clone_args = ['--recurse-submodules', '--branch', branch] # Do not check out a branch (installer will issue a checkout command right after) - if GIT_CLONE_SHALLOW: - git_clone_args += ['--depth', '1'] - print('Cloning from ' + url + '...') - return run([GIT(), 'clone'] + git_clone_args + [url, dstpath]) == 0 - - -def git_pull(repo_path, branch_or_tag): - debug_print('git_pull(repo_path=' + repo_path + ', branch/tag=' + branch_or_tag + ')') - ret = run([GIT(), 'fetch', '--quiet', 'origin'], repo_path) - if ret != 0: - return False - try: - print("Fetching latest changes to the branch/tag '" + branch_or_tag + "' for '" + repo_path + "'...") - ret = run([GIT(), 'fetch', '--quiet', 'origin'], repo_path) - if ret != 0: - return False - # this line assumes that the user has not gone and manually messed with the - # repo and added new remotes to ambiguate the checkout. - ret = run([GIT(), 'checkout', '--recurse-submodules', '--quiet', branch_or_tag], repo_path) - if ret != 0: - return False - # Test if branch_or_tag is a branch, or if it is a tag that needs to be updated - target_is_tag = run([GIT(), 'symbolic-ref', '-q', 'HEAD'], repo_path, quiet=True) - if not target_is_tag: - # update branch to latest (not needed for tags) - # this line assumes that the user has not gone and made local changes to the repo - ret = run([GIT(), 'merge', '--ff-only', 'origin/' + branch_or_tag], repo_path) - if ret != 0: - return False - run([GIT(), 'submodule', 'update', '--init'], repo_path, quiet=True) - except Exception: - errlog('git operation failed!') - return False - print("Successfully updated and checked out branch/tag '" + branch_or_tag + "' on repository '" + repo_path + "'") - print("Current repository version: " + git_repo_version(repo_path)) - return True - - -def git_clone_checkout_and_pull(url, dstpath, branch): - debug_print('git_clone_checkout_and_pull(url=' + url + ', dstpath=' + dstpath + ', branch=' + branch + ')') - - # If the repository has already been cloned before, issue a pull operation. Otherwise do a new clone. - if os.path.isdir(os.path.join(dstpath, '.git')): - return git_pull(dstpath, branch) - else: - return git_clone(url, dstpath, branch) - - -# Each tool can have its own build type, or it can be overridden on the command -# line. -def decide_cmake_build_type(tool): - if CMAKE_BUILD_TYPE_OVERRIDE: - return CMAKE_BUILD_TYPE_OVERRIDE - else: - return tool.cmake_build_type - - -# The root directory of the build. -def llvm_build_dir(tool): - generator_suffix = cmake_generator_prefix() - bitness_suffix = '_32' if tool.bitness == 32 else '_64' - - if hasattr(tool, 'git_branch'): - build_dir = 'build_' + tool.git_branch.replace(os.sep, '-') + generator_suffix + bitness_suffix - else: - build_dir = 'build_' + tool.version + generator_suffix + bitness_suffix - return build_dir - - -def exe_suffix(filename): - if WINDOWS and not filename.endswith('.exe'): - filename += '.exe' - return filename - - -# The directory where the binaries are produced. (relative to the installation -# root directory of the tool) -def llvm_build_bin_dir(tool): - build_dir = llvm_build_dir(tool) - if WINDOWS and 'Visual Studio' in CMAKE_GENERATOR: - old_llvm_bin_dir = os.path.join(build_dir, 'bin', decide_cmake_build_type(tool)) - - new_llvm_bin_dir = None - default_cmake_build_type = decide_cmake_build_type(tool) - cmake_build_types = [default_cmake_build_type, 'Release', 'RelWithDebInfo', 'MinSizeRel', 'Debug'] - for build_type in cmake_build_types: - d = os.path.join(build_dir, build_type, 'bin') - if os.path.isfile(os.path.join(tool.installation_path(), d, exe_suffix('clang'))): - new_llvm_bin_dir = d - break - - if new_llvm_bin_dir and os.path.exists(os.path.join(tool.installation_path(), new_llvm_bin_dir)): - return new_llvm_bin_dir - elif os.path.exists(os.path.join(tool.installation_path(), old_llvm_bin_dir)): - return old_llvm_bin_dir - return os.path.join(build_dir, default_cmake_build_type, 'bin') - else: - return os.path.join(build_dir, 'bin') - - -def build_env(generator): - build_env = os.environ.copy() - - # To work around a build issue with older Mac OS X builds, add -stdlib=libc++ to all builds. - # See https://groups.google.com/forum/#!topic/emscripten-discuss/5Or6QIzkqf0 - if MACOS: - build_env['CXXFLAGS'] = ((build_env['CXXFLAGS'] + ' ') if hasattr(build_env, 'CXXFLAGS') else '') + '-stdlib=libc++' - if WINDOWS: - # MSBuild.exe has an internal mechanism to avoid N^2 oversubscription of threads in its two-tier build model, see - # https://devblogs.microsoft.com/cppblog/improved-parallelism-in-msbuild/ - build_env['UseMultiToolTask'] = 'true' - build_env['EnforceProcessCountAcrossBuilds'] = 'true' - return build_env - - -def make_build(build_root, build_type): - debug_print('make_build(build_root=' + build_root + ', build_type=' + build_type + ')') - if CPU_CORES > 1: - print('Performing a parallel build with ' + str(CPU_CORES) + ' cores.') - else: - print('Performing a singlethreaded build.') - - make = ['cmake', '--build', '.', '--config', build_type] - if 'Visual Studio' in CMAKE_GENERATOR: - # Visual Studio historically has had a two-tier problem in its build system design. A single MSBuild.exe instance only governs - # the build of a single project (.exe/.lib/.dll) in a solution. Passing the -j parameter above will only enable multiple MSBuild.exe - # instances to be spawned to build multiple projects in parallel, but each MSBuild.exe is still singlethreaded. - # To enable each MSBuild.exe instance to also compile several .cpp files in parallel inside a single project, pass the extra - # MSBuild.exe specific "Multi-ToolTask" (MTT) setting /p:CL_MPCount. This enables each MSBuild.exe to parallelize builds wide. - # This requires CMake 3.12 or newer. - make += ['-j', str(CPU_CORES), '--', '/p:CL_MPCount=' + str(CPU_CORES)] - else: - # Pass -j to native make, CMake might not support -j option. - make += ['--', '-j', str(CPU_CORES)] - - # Build - try: - print('Running build: ' + str(make)) - ret = subprocess.check_call(make, cwd=build_root, env=build_env(CMAKE_GENERATOR)) - if ret != 0: - errlog('Build failed with exit code ' + ret + '!') - errlog('Working directory: ' + build_root) - return False - except Exception as e: - errlog('Build failed due to exception!') - errlog('Working directory: ' + build_root) - errlog(str(e)) - return False - - return True - - -def cmake_configure(generator, build_root, src_root, build_type, extra_cmake_args=[]): - debug_print('cmake_configure(generator=' + str(generator) + ', build_root=' + str(build_root) + ', src_root=' + str(src_root) + ', build_type=' + str(build_type) + ', extra_cmake_args=' + str(extra_cmake_args) + ')') - # Configure - if not os.path.isdir(build_root): - # Create build output directory if it doesn't yet exist. - os.mkdir(build_root) - try: - if generator: - generator = ['-G', generator] - else: - generator = [] - - cmdline = ['cmake'] + generator + ['-DCMAKE_BUILD_TYPE=' + build_type, '-DPYTHON_EXECUTABLE=' + sys.executable] - # Target macOS 11.0 Big Sur at minimum, to support older Mac devices. - # See https://en.wikipedia.org/wiki/MacOS#Hardware_compatibility for min-spec details. - cmdline += ['-DCMAKE_OSX_DEPLOYMENT_TARGET=11.0'] - cmdline += extra_cmake_args + [src_root] - - print('Running CMake: ' + str(cmdline)) - - # Specify the deployment target also as an env. var, since some Xcode versions - # read this instead of the CMake field. - os.environ['MACOSX_DEPLOYMENT_TARGET'] = '11.0' - - def quote_parens(x): - if ' ' in x: - return '"' + x.replace('"', '\\"') + '"' - else: - return x - - # Create a file 'recmake.bat/sh' in the build root that user can call to - # manually recmake the build tree with the previous build params - open(os.path.join(build_root, 'recmake.' + ('bat' if WINDOWS else 'sh')), 'w').write(' '.join(map(quote_parens, cmdline))) - ret = subprocess.check_call(cmdline, cwd=build_root, env=build_env(CMAKE_GENERATOR)) - if ret != 0: - errlog('CMake invocation failed with exit code ' + ret + '!') - errlog('Working directory: ' + build_root) - return False - except OSError as e: - if e.errno == errno.ENOENT: - errlog(str(e)) - errlog('Could not run CMake, perhaps it has not been installed?') - if WINDOWS: - errlog('Installing this package requires CMake. Get it from http://www.cmake.org/') - elif LINUX: - errlog('Installing this package requires CMake. Get it via your system package manager (e.g. sudo apt-get install cmake), or from http://www.cmake.org/') - elif MACOS: - errlog('Installing this package requires CMake. Get it via a macOS package manager (Homebrew: "brew install cmake", or MacPorts: "sudo port install cmake"), or from http://www.cmake.org/') - return False - raise - except Exception as e: - errlog('CMake invocation failed due to exception!') - errlog('Working directory: ' + build_root) - errlog(str(e)) - return False - - return True - - -def xcode_sdk_version(): - try: - output = subprocess.check_output(['xcrun', '--show-sdk-version']) - if sys.version_info >= (3,): - output = output.decode('utf8') - return output.strip().split('.') - except Exception: - return subprocess.checkplatform.mac_ver()[0].split('.') - - -def cmake_target_platform(tool): - # Source: https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2017%202022.html#platform-selection - if hasattr(tool, 'arch'): - if tool.arch == 'arm64': - return 'ARM64' - elif tool.arch == 'x86_64': - return 'x64' - elif tool.arch == 'x86': - return 'Win32' - if ARCH == 'arm64': - return 'ARM64' - else: - return 'x64' if tool.bitness == 64 else 'Win32' - - -def cmake_host_platform(): - # Source: https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2017%202022.html#toolset-selection - arch_to_cmake_host_platform = { - 'arm64': 'ARM64', - 'arm': 'ARM', - 'x86_64': 'x64', - 'x86': 'x86' - } - return arch_to_cmake_host_platform[ARCH] - - -def get_generator_and_config_args(tool): - args = [] - cmake_generator = CMAKE_GENERATOR - if 'Visual Studio 16' in CMAKE_GENERATOR or 'Visual Studio 17' in CMAKE_GENERATOR: # VS2019 or VS2022 - # With Visual Studio 16 2019, CMake changed the way they specify target arch. - # Instead of appending it into the CMake generator line, it is specified - # with a -A arch parameter. - args += ['-A', cmake_target_platform(tool)] - args += ['-Thost=' + cmake_host_platform()] - elif 'Visual Studio' in CMAKE_GENERATOR and tool.bitness == 64: - cmake_generator += ' Win64' - args += ['-Thost=x64'] - return (cmake_generator, args) - - -def build_llvm(tool): - debug_print('build_llvm(' + str(tool) + ')') - llvm_root = tool.installation_path() - llvm_src_root = os.path.join(llvm_root, 'src') - success = git_clone_checkout_and_pull(tool.download_url(), llvm_src_root, tool.git_branch) - if not success: - return False - - build_dir = llvm_build_dir(tool) - build_root = os.path.join(llvm_root, build_dir) - - build_type = decide_cmake_build_type(tool) - - # Configure - tests_arg = 'ON' if BUILD_FOR_TESTING else 'OFF' - - enable_assertions = ENABLE_LLVM_ASSERTIONS.lower() == 'on' or (ENABLE_LLVM_ASSERTIONS == 'auto' and build_type.lower() != 'release' and build_type.lower() != 'minsizerel') - - if ARCH == 'x86' or ARCH == 'x86_64': - targets_to_build = 'WebAssembly;X86' - elif ARCH == 'arm': - targets_to_build = 'WebAssembly;ARM' - elif ARCH == 'arm64': - targets_to_build = 'WebAssembly;AArch64' - else: - targets_to_build = 'WebAssembly' - cmake_generator, args = get_generator_and_config_args(tool) - args += ['-DLLVM_TARGETS_TO_BUILD=' + targets_to_build, - '-DLLVM_INCLUDE_EXAMPLES=OFF', - '-DLLVM_INCLUDE_TESTS=' + tests_arg, - '-DCLANG_INCLUDE_TESTS=' + tests_arg, - '-DLLVM_ENABLE_ASSERTIONS=' + ('ON' if enable_assertions else 'OFF'), - # Disable optional LLVM dependencies, these can cause unwanted .so dependencies - # that prevent distributing the generated compiler for end users. - '-DLLVM_ENABLE_LIBXML2=OFF', '-DLLVM_ENABLE_TERMINFO=OFF', '-DLLDB_ENABLE_LIBEDIT=OFF', - '-DLLVM_ENABLE_LIBEDIT=OFF', '-DLLVM_ENABLE_LIBPFM=OFF'] - # LLVM build system bug: compiler-rt does not build on Windows. It insists on performing a CMake install step that writes to C:\Program Files. Attempting - # to reroute that to build_root directory then fails on an error - # file INSTALL cannot find - # "C:/code/emsdk/llvm/git/build_master_vs2017_64/$(Configuration)/lib/clang/10.0.0/lib/windows/clang_rt.ubsan_standalone-x86_64.lib". - # (there instead of $(Configuration), one would need ${CMAKE_BUILD_TYPE} ?) - # It looks like compiler-rt is not compatible to build on Windows? - args += ['-DLLVM_ENABLE_PROJECTS=clang;lld'] - # To enable widest possible chance of success for building, let the code - # compile through with older toolchains that are about to be deprecated by - # upstream LLVM. - args += ['-DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON'] - - if os.getenv('LLVM_CMAKE_ARGS'): - extra_args = os.environ['LLVM_CMAKE_ARGS'].split(',') - print('Passing the following extra arguments to LLVM CMake configuration: ' + str(extra_args)) - args += extra_args - - cmakelists_dir = os.path.join(llvm_src_root, 'llvm') - success = cmake_configure(cmake_generator, build_root, cmakelists_dir, build_type, args) - if not success: - return False - - # Make - success = make_build(build_root, build_type) - return success - - -def build_ninja(tool): - debug_print('build_ninja(' + str(tool) + ')') - root = os.path.normpath(tool.installation_path()) - src_root = os.path.join(root, 'src') - success = git_clone_checkout_and_pull(tool.download_url(), src_root, tool.git_branch) - if not success: - return False - - build_dir = llvm_build_dir(tool) - build_root = os.path.join(root, build_dir) - - build_type = decide_cmake_build_type(tool) - - # Configure - cmake_generator, args = get_generator_and_config_args(tool) - - cmakelists_dir = os.path.join(src_root) - success = cmake_configure(cmake_generator, build_root, cmakelists_dir, build_type, args) - if not success: - return False - - # Make - success = make_build(build_root, build_type) - - if success: - bin_dir = os.path.join(root, 'bin') - mkdir_p(bin_dir) - exe_paths = [os.path.join(build_root, 'Release', 'ninja'), os.path.join(build_root, 'ninja')] - for e in exe_paths: - for s in ['.exe', '']: - ninja = e + s - if os.path.isfile(ninja): - dst = os.path.join(bin_dir, 'ninja' + s) - shutil.copyfile(ninja, dst) - os.chmod(dst, os.stat(dst).st_mode | stat.S_IEXEC) - - return success - - -def build_ccache(tool): - debug_print('build_ccache(' + str(tool) + ')') - root = os.path.normpath(tool.installation_path()) - src_root = os.path.join(root, 'src') - success = git_clone_checkout_and_pull(tool.download_url(), src_root, tool.git_branch) - if not success: - return False - - build_dir = llvm_build_dir(tool) - build_root = os.path.join(root, build_dir) - - build_type = decide_cmake_build_type(tool) - - # Configure - cmake_generator, args = get_generator_and_config_args(tool) - args += ['-DZSTD_FROM_INTERNET=ON'] - - cmakelists_dir = os.path.join(src_root) - success = cmake_configure(cmake_generator, build_root, cmakelists_dir, build_type, args) - if not success: - return False - - # Make - success = make_build(build_root, build_type) - - if success: - bin_dir = os.path.join(root, 'bin') - mkdir_p(bin_dir) - exe_paths = [os.path.join(build_root, 'Release', 'ccache'), os.path.join(build_root, 'ccache')] - for e in exe_paths: - for s in ['.exe', '']: - ccache = e + s - if os.path.isfile(ccache): - dst = os.path.join(bin_dir, 'ccache' + s) - shutil.copyfile(ccache, dst) - os.chmod(dst, os.stat(dst).st_mode | stat.S_IEXEC) - - cache_dir = os.path.join(root, 'cache') - open(os.path.join(root, 'emcc_ccache.conf'), 'w').write('''# Set maximum cache size to 10 GB: -max_size = 10G -cache_dir = %s -''' % cache_dir) - mkdir_p(cache_dir) - - return success - - -# Finds the newest installed version of a given tool -def find_latest_installed_tool(name): - for t in reversed(tools): - if t.id == name and t.is_installed(): - return t - - -# npm install in Emscripten root directory -def emscripten_npm_install(tool, directory): - node_tool = find_latest_installed_tool('node') - if not node_tool: - npm_fallback = which('npm') - if not npm_fallback: - errlog('Failed to find npm command!') - errlog('Running "npm ci" in installed Emscripten root directory ' + tool.installation_path() + ' is required!') - errlog('Please install node.js first!') - return False - node_path = os.path.dirname(npm_fallback) - else: - node_path = os.path.join(node_tool.installation_path(), 'bin') - - npm = os.path.join(node_path, 'npm' + ('.cmd' if WINDOWS else '')) - env = os.environ.copy() - env["PATH"] = node_path + os.pathsep + env["PATH"] - print('Running post-install step: npm ci ...') - try: - subprocess.check_output( - [npm, 'ci', '--production'], - cwd=directory, stderr=subprocess.STDOUT, env=env, - universal_newlines=True) - except subprocess.CalledProcessError as e: - errlog('Error running %s:\n%s' % (e.cmd, e.output)) - return False - - print('Done running: npm ci') - - if os.path.isfile(os.path.join(directory, 'bootstrap.py')): - try: - subprocess.check_output([sys.executable, os.path.join(directory, 'bootstrap.py')], - cwd=directory, stderr=subprocess.STDOUT, env=env, - universal_newlines=True) - except subprocess.CalledProcessError as e: - errlog('Error running %s:\n%s' % (e.cmd, e.output)) - return False - - print('Done running: Emscripten bootstrap') - return True - - -# Binaryen build scripts: -def binaryen_build_root(tool): - build_root = tool.installation_path().strip() - if build_root.endswith('/') or build_root.endswith('\\'): - build_root = build_root[:-1] - generator_prefix = cmake_generator_prefix() - build_root = build_root + generator_prefix + '_' + str(tool.bitness) + 'bit_binaryen' - return build_root - - -def uninstall_binaryen(tool): - debug_print('uninstall_binaryen(' + str(tool) + ')') - build_root = binaryen_build_root(tool) - print("Deleting path '" + build_root + "'") - remove_tree(build_root) - - -def is_binaryen_installed(tool): - build_root = binaryen_build_root(tool) - return os.path.exists(build_root) - - -def build_binaryen_tool(tool): - debug_print('build_binaryen_tool(' + str(tool) + ')') - src_root = tool.installation_path() - build_root = binaryen_build_root(tool) - build_type = decide_cmake_build_type(tool) - - # Configure - cmake_generator, args = get_generator_and_config_args(tool) - args += ['-DENABLE_WERROR=0'] # -Werror is not useful for end users - args += ['-DBUILD_TESTS=0'] # We don't want to build or run tests - - if 'Visual Studio' in CMAKE_GENERATOR: - if BUILD_FOR_TESTING: - args += ['-DRUN_STATIC_ANALYZER=1'] - - success = cmake_configure(cmake_generator, build_root, src_root, build_type, args) - if not success: - return False - - # Make - success = make_build(build_root, build_type) - - # Deploy scripts needed from source repository to build directory - remove_tree(os.path.join(build_root, 'scripts')) - shutil.copytree(os.path.join(src_root, 'scripts'), os.path.join(build_root, 'scripts')) - remove_tree(os.path.join(build_root, 'src', 'js')) - shutil.copytree(os.path.join(src_root, 'src', 'js'), os.path.join(build_root, 'src', 'js')) - - return success - - -def download_and_extract(archive, dest_dir, filename_prefix='', clobber=True): - debug_print('download_and_extract(archive=' + archive + ', dest_dir=' + dest_dir + ')') - - url = urljoin(emsdk_packages_url, archive) - - def try_download(url, silent=False): - return download_file(url, download_dir, not KEEP_DOWNLOADS, - filename_prefix, silent=silent) - - # Special hack for the wasm-binaries we transitioned from `.bzip2` to - # `.xz`, but we can't tell from the version/url which one to use, so - # try one and then fall back to the other. - success = False - if 'wasm-binaries' in archive and os.path.splitext(archive)[1] == '.xz': - success = try_download(url, silent=True) - if not success: - alt_url = url.replace('.tar.xz', '.tbz2') - success = try_download(alt_url, silent=True) - if success: - url = alt_url - - if not success: - success = try_download(url) - - if not success: - return False - - # Remove the old directory, since we have some SDKs that install into the - # same directory. If we didn't do this contents of the previous install - # could remain. - if clobber: - remove_tree(dest_dir) - - download_target = get_download_target(url, download_dir, filename_prefix) - if archive.endswith('.zip'): - return unzip(download_target, dest_dir) - else: - return untargz(download_target, dest_dir) - - -def to_native_path(p): - if WINDOWS and not MSYS: - return to_unix_path(p).replace('/', '\\') - else: - return to_unix_path(p) - - -# Finds and returns a list of the directories that need to be added to PATH for -# the given set of tools. -def get_required_path(active_tools): - path_add = [to_native_path(EMSDK_PATH)] - for tool in active_tools: - if hasattr(tool, 'activated_path'): - path = to_native_path(tool.expand_vars(tool.activated_path)) - # If the tool has an activated_path_skip attribute then we don't add - # the tools path to the users path if a program by that name is found - # in the existing PATH. This allows us to, for example, add our version - # node to the users PATH if, and only if, they don't already have a - # another version of node in their PATH. - if hasattr(tool, 'activated_path_skip'): - current_path = which(tool.activated_path_skip) - # We found an executable by this name in the current PATH, but we - # ignore our own version for this purpose. - if current_path and os.path.dirname(current_path) != path: - continue - path_add.append(path) - return path_add - - -# Returns the absolute path to the file '.emscripten' for the current user on -# this system. -EM_CONFIG_PATH = os.path.join(EMSDK_PATH, ".emscripten") -EM_CONFIG_DICT = {} - - -def parse_key_value(line): - if not line: - return ('', '') - eq = line.find('=') - if eq != -1: - key = line[0:eq].strip() - value = line[eq + 1:].strip() - return (key, value) - else: - return (key, '') - - -def load_em_config(): - EM_CONFIG_DICT.clear() - lines = [] - try: - lines = open(EM_CONFIG_PATH, "r").read().split('\n') - except Exception: - pass - for line in lines: - try: - key, value = parse_key_value(line) - if value != '': - EM_CONFIG_DICT[key] = value - except Exception: - pass - - -def find_emscripten_root(active_tools): - """Find the currently active emscripten root. - - If there is more than one tool that defines EMSCRIPTEN_ROOT (this - should not happen under normal circumstances), assume the last one takes - precedence. - """ - root = None - for tool in active_tools: - config = tool.activated_config() - if 'EMSCRIPTEN_ROOT' in config: - root = config['EMSCRIPTEN_ROOT'] - return root - - -# returns a tuple (string,string) of config files paths that need to used -# to activate emsdk env depending on $SHELL, defaults to bash. -def get_emsdk_shell_env_configs(): - default_emsdk_env = sdk_path('emsdk_env.sh') - default_shell_config_file = '$HOME/.bash_profile' - shell = os.getenv('SHELL', '') - if 'zsh' in shell: - return (default_emsdk_env, '$HOME/.zprofile') - elif 'csh' in shell: - return (sdk_path('emsdk_env.csh'), '$HOME/.cshrc') - elif 'fish' in shell: - return (sdk_path('emsdk_env.fish'), '$HOME/.config/fish/config.fish') - else: - return (default_emsdk_env, default_shell_config_file) - - -def generate_em_config(active_tools, permanently_activate, system): - cfg = 'import os\n' - cfg += "emsdk_path = os.path.dirname(os.getenv('EM_CONFIG')).replace('\\\\', '/')\n" - - # Different tools may provide the same activated configs; the latest to be - # activated is the relevant one. - activated_config = OrderedDict() - for tool in active_tools: - for name, value in tool.activated_config().items(): - activated_config[name] = value - - if 'NODE_JS' not in activated_config: - node_fallback = which('nodejs') - if not node_fallback: - node_fallback = 'node' - activated_config['NODE_JS'] = node_fallback - - for name, value in activated_config.items(): - cfg += name + " = '" + value + "'\n" - - emroot = find_emscripten_root(active_tools) - if emroot: - version = parse_emscripten_version(emroot) - # Older emscripten versions of emscripten depend on certain config - # keys that are no longer used. - # See https://github.com/emscripten-core/emscripten/pull/9469 - if version < [1, 38, 46]: - cfg += 'COMPILER_ENGINE = NODE_JS\n' - # See https://github.com/emscripten-core/emscripten/pull/9542 - if version < [1, 38, 48]: - cfg += 'JS_ENGINES = [NODE_JS]\n' - - cfg = cfg.replace("'" + EMSDK_PATH, "emsdk_path + '") - - if os.path.exists(EM_CONFIG_PATH): - backup_path = EM_CONFIG_PATH + ".old" - move_with_overwrite(EM_CONFIG_PATH, backup_path) - - with open(EM_CONFIG_PATH, "w") as text_file: - text_file.write(cfg) - - # Clear old emscripten content. - rmfile(os.path.join(EMSDK_PATH, ".emscripten_sanity")) - - path_add = get_required_path(active_tools) - - # Give some recommended next step, depending on the platform - if WINDOWS: - if not permanently_activate and not system: - print('Next steps:') - print('- Consider running `emsdk activate` with --permanent or --system') - print(' to have emsdk settings available on startup.') - else: - print('Next steps:') - print('- To conveniently access emsdk tools from the command line,') - print(' consider adding the following directories to your PATH:') - for p in path_add: - print(' ' + p) - print('- This can be done for the current shell by running:') - emsdk_env, shell_config_file = get_emsdk_shell_env_configs() - print(' source "%s"' % emsdk_env) - print('- Configure emsdk in your shell startup scripts by running:') - print(' echo \'source "%s"\' >> %s' % (emsdk_env, shell_config_file)) - - -def find_msbuild_dir(): - program_files = os.getenv('ProgramFiles', 'C:/Program Files') - program_files_x86 = os.getenv('ProgramFiles(x86)', 'C:/Program Files (x86)') - MSBUILDX86_DIR = os.path.join(program_files_x86, "MSBuild/Microsoft.Cpp/v4.0/Platforms") - MSBUILD_DIR = os.path.join(program_files, "MSBuild/Microsoft.Cpp/v4.0/Platforms") - if os.path.exists(MSBUILDX86_DIR): - return MSBUILDX86_DIR - if os.path.exists(MSBUILD_DIR): - return MSBUILD_DIR - # No MSbuild installed. - return '' - - -class Tool(object): - def __init__(self, data): - # Convert the dictionary representation of the tool in 'data' to members of - # this class for convenience. - for key, value in data.items(): - # Python2 compat, convert unicode to str - if sys.version_info < (3,) and isinstance(value, unicode): # noqa - value = value.encode('Latin-1') - setattr(self, key, value) - - # Cache the name ID of this Tool (these are read very often) - self.name = self.id - if self.version: - self.name += '-' + self.version - if hasattr(self, 'bitness'): - self.name += '-' + str(self.bitness) + 'bit' - - def __str__(self): - return self.name - - def __repr__(self): - return self.name - - def expand_vars(self, str): - if WINDOWS and '%MSBuildPlatformsDir%' in str: - str = str.replace('%MSBuildPlatformsDir%', find_msbuild_dir()) - if '%cmake_build_type_on_win%' in str: - str = str.replace('%cmake_build_type_on_win%', (decide_cmake_build_type(self) + '/') if WINDOWS else '') - if '%installation_dir%' in str: - str = str.replace('%installation_dir%', sdk_path(self.installation_dir())) - if '%generator_prefix%' in str: - str = str.replace('%generator_prefix%', cmake_generator_prefix()) - str = str.replace('%.exe%', '.exe' if WINDOWS else '') - if '%llvm_build_bin_dir%' in str: - str = str.replace('%llvm_build_bin_dir%', llvm_build_bin_dir(self)) - - return str - - # Return true if this tool requires building from source, and false if this is a precompiled tool. - def needs_compilation(self): - if hasattr(self, 'cmake_build_type'): - return True - - if hasattr(self, 'uses'): - for tool_name in self.uses: - tool = find_tool(tool_name) - if not tool: - debug_print('Tool ' + str(self) + ' depends on ' + tool_name + ' which does not exist!') - continue - if tool.needs_compilation(): - return True - - return False - - # Specifies the target path where this tool will be installed to. This could - # either be a directory or a filename (e.g. in case of node.js) - def installation_path(self): - if hasattr(self, 'install_path'): - pth = self.expand_vars(self.install_path) - return sdk_path(pth) - p = self.version - if hasattr(self, 'bitness') and (not hasattr(self, 'append_bitness') or self.append_bitness): - p += '_' + str(self.bitness) + 'bit' - return sdk_path(os.path.join(self.id, p)) - - # Specifies the target directory this tool will be installed to. - def installation_dir(self): - dir = self.installation_path() - if path_points_to_directory(dir): - return dir - else: - return os.path.dirname(dir) - - # Returns the configuration item that needs to be added to .emscripten to make - # this Tool active for the current user. - def activated_config(self): - if not hasattr(self, 'activated_cfg'): - return {} - config = OrderedDict() - expanded = to_unix_path(self.expand_vars(self.activated_cfg)) - for specific_cfg in expanded.split(';'): - name, value = specific_cfg.split('=') - config[name] = value.strip("'") - return config - - def activated_environment(self): - if hasattr(self, 'activated_env'): - return self.expand_vars(self.activated_env).split(';') - else: - return [] - - def compatible_with_this_arch(self): - if hasattr(self, 'arch'): - if self.arch != ARCH: - return False - return True - - def compatible_with_this_os(self): - if hasattr(self, 'os'): - if self.os == 'all': - return True - if self.compatible_with_this_arch() and ((WINDOWS and 'win' in self.os) or (LINUX and ('linux' in self.os or 'unix' in self.os)) or (MACOS and ('macos' in self.os or 'unix' in self.os))): - return True - else: - return False - else: - if not hasattr(self, 'macos_url') and not hasattr(self, 'windows_url') and not hasattr(self, 'unix_url') and not hasattr(self, 'linux_url'): - return True - - if MACOS and hasattr(self, 'macos_url') and self.compatible_with_this_arch(): - return True - - if LINUX and hasattr(self, 'linux_url') and self.compatible_with_this_arch(): - return True - - if WINDOWS and hasattr(self, 'windows_url') and self.compatible_with_this_arch(): - return True - - if UNIX and hasattr(self, 'unix_url'): - return True - - return hasattr(self, 'url') - - # the "version file" is a file inside install dirs that indicates the - # version installed there. this helps disambiguate when there is more than - # one version that may be installed to the same directory (which is used - # to avoid accumulating builds over time in some cases, with new builds - # overwriting the old) - def get_version_file_path(self): - return os.path.join(self.installation_path(), '.emsdk_version') - - def is_installed_version(self): - version_file_path = self.get_version_file_path() - if os.path.isfile(version_file_path): - with open(version_file_path, 'r') as version_file: - return version_file.read().strip() == self.name - return False - - def update_installed_version(self): - with open(self.get_version_file_path(), 'w') as version_file: - version_file.write(self.name + '\n') - return None - - def is_installed(self, skip_version_check=False): - # If this tool/sdk depends on other tools, require that all dependencies are - # installed for this tool to count as being installed. - if hasattr(self, 'uses'): - for tool_name in self.uses: - tool = find_tool(tool_name) - if tool is None: - errlog("Manifest error: No tool by name '" + tool_name + "' found! This may indicate an internal SDK error!") - return False - if not tool.is_installed(): - return False - - if self.download_url() is None: - # This tool does not contain downloadable elements, so it is installed by default. - return True - - content_exists = is_nonempty_directory(self.installation_path()) - - # For e.g. fastcomp clang from git repo, the activated PATH is the - # directory where the compiler is built to, and installation_path is - # the directory where the source tree exists. To distinguish between - # multiple packages sharing the same source (clang-main-32bit, - # clang-main-64bit, clang-main-32bit and clang-main-64bit each - # share the same git repo), require that in addition to the installation - # directory, each item in the activated PATH must exist. - if hasattr(self, 'activated_path') and not os.path.exists(self.expand_vars(self.activated_path)): - content_exists = False - - if hasattr(self, 'custom_is_installed_script'): - if self.custom_is_installed_script == 'is_binaryen_installed': - return is_binaryen_installed(self) - else: - raise Exception('Unknown custom_is_installed_script directive "' + self.custom_is_installed_script + '"!') - - return content_exists and (skip_version_check or self.is_installed_version()) - - def is_active(self): - if not self.is_installed(): - return False - - # All dependencies of this tool must be active as well. - deps = self.dependencies() - for tool in deps: - if not tool.is_active(): - return False - - activated_cfg = self.activated_config() - if not activated_cfg: - return len(deps) > 0 - - for key, value in activated_cfg.items(): - if key not in EM_CONFIG_DICT: - debug_print(str(self) + ' is not active, because key="' + key + '" does not exist in .emscripten') - return False - - # all paths are stored dynamically relative to the emsdk root, so - # normalize those first. - config_value = EM_CONFIG_DICT[key].replace("emsdk_path + '", "'" + EMSDK_PATH) - config_value = config_value.strip("'") - if config_value != value: - debug_print(str(self) + ' is not active, because key="' + key + '" has value "' + config_value + '" but should have value "' + value + '"') - return False - return True - - # Returns true if the system environment variables requires by this tool are currently active. - def is_env_active(self): - envs = self.activated_environment() - for env in envs: - key, value = parse_key_value(env) - if key not in os.environ or to_unix_path(os.environ[key]) != to_unix_path(value): - debug_print(str(self) + ' is not active, because environment variable key="' + key + '" has value "' + str(os.getenv(key)) + '" but should have value "' + value + '"') - return False - - if hasattr(self, 'activated_path'): - path = to_unix_path(self.expand_vars(self.activated_path)) - for p in path: - path_items = os.environ['PATH'].replace('\\', '/').split(ENVPATH_SEPARATOR) - if not normalized_contains(path_items, p): - debug_print(str(self) + ' is not active, because environment variable PATH item "' + p + '" is not present (PATH=' + os.environ['PATH'] + ')') - return False - return True - - # If this tool can be installed on this system, this function returns True. - # Otherwise, this function returns a string that describes the reason why this - # tool is not available. - def can_be_installed(self): - if hasattr(self, 'bitness'): - if self.bitness == 64 and not is_os_64bit(): - return "this tool is only provided for 64-bit OSes" - return True - - def download_url(self): - if WINDOWS and hasattr(self, 'windows_url'): - return self.windows_url - elif MACOS and hasattr(self, 'macos_url'): - return self.macos_url - elif LINUX and hasattr(self, 'linux_url'): - return self.linux_url - elif UNIX and hasattr(self, 'unix_url'): - return self.unix_url - elif hasattr(self, 'url'): - return self.url - else: - return None - - def install(self): - """Returns True if the Tool was installed of False if was skipped due to - already being installed. - """ - if self.can_be_installed() is not True: - exit_with_error("The tool '" + str(self) + "' is not available due to the reason: " + self.can_be_installed()) - - if self.id == 'sdk': - return self.install_sdk() - else: - return self.install_tool() - - def install_sdk(self): - """Returns True if any SDK component was installed of False all componented - were already installed. - """ - print("Installing SDK '" + str(self) + "'..") - installed = False - - for tool_name in self.uses: - tool = find_tool(tool_name) - if tool is None: - exit_with_error("manifest error: No tool by name '" + tool_name + "' found! This may indicate an internal SDK error!") - installed |= tool.install() - - if not installed: - print("All SDK components already installed: '" + str(self) + "'.") - return False - - if getattr(self, 'custom_install_script', None) == 'emscripten_npm_install': - # upstream tools have hardcoded paths that are not stored in emsdk_manifest.json registry - install_path = 'upstream' - emscripten_dir = os.path.join(EMSDK_PATH, install_path, 'emscripten') - # Older versions of the sdk did not include the node_modules directory - # and require `npm ci` to be run post-install - if not os.path.exists(os.path.join(emscripten_dir, 'node_modules')): - if not emscripten_npm_install(self, emscripten_dir): - exit_with_error('post-install step failed: emscripten_npm_install') - - print("Done installing SDK '" + str(self) + "'.") - return True - - def install_tool(self): - """Returns True if the SDK was installed of False if was skipped due to - already being installed. - """ - # Avoid doing a redundant reinstall of the tool, if it has already been installed. - # However all tools that are sourced directly from git branches do need to be - # installed every time when requested, since the install step is then used to git - # pull the tool to a newer version. - if self.is_installed() and not hasattr(self, 'git_branch'): - print("Skipped installing " + self.name + ", already installed.") - return False - - print("Installing tool '" + str(self) + "'..") - url = self.download_url() - - if hasattr(self, 'custom_install_script') and self.custom_install_script == 'build_llvm': - success = build_llvm(self) - elif hasattr(self, 'custom_install_script') and self.custom_install_script == 'build_ninja': - success = build_ninja(self) - elif hasattr(self, 'custom_install_script') and self.custom_install_script == 'build_ccache': - success = build_ccache(self) - elif hasattr(self, 'git_branch'): - success = git_clone_checkout_and_pull(url, self.installation_path(), self.git_branch) - elif url.endswith(ARCHIVE_SUFFIXES): - success = download_and_extract(url, self.installation_path(), - filename_prefix=getattr(self, 'download_prefix', '')) - else: - assert False, 'unhandled url type: ' + url - - if not success: - exit_with_error("installation failed!") - - if hasattr(self, 'custom_install_script'): - if self.custom_install_script == 'emscripten_npm_install': - success = emscripten_npm_install(self, self.installation_path()) - elif self.custom_install_script in ('build_llvm', 'build_ninja', 'build_ccache'): - # 'build_llvm' is a special one that does the download on its - # own, others do the download manually. - pass - elif self.custom_install_script == 'build_binaryen': - success = build_binaryen_tool(self) - else: - raise Exception('Unknown custom_install_script command "' + self.custom_install_script + '"!') - - if not success: - exit_with_error("installation failed!") - - # Install an emscripten-version.txt file if told to, and if there is one. - # (If this is not an actual release, but some other build, then we do not - # write anything.) - if hasattr(self, 'emscripten_releases_hash'): - emscripten_version_file_path = os.path.join(to_native_path(self.expand_vars(self.activated_path)), 'emscripten-version.txt') - version = get_emscripten_release_version(self.emscripten_releases_hash) - if version: - with open(emscripten_version_file_path, 'w') as f: - f.write('"%s"\n' % version) - - print("Done installing tool '" + str(self) + "'.") - - # Sanity check that the installation succeeded, and if so, remove unneeded - # leftover installation files. - if not self.is_installed(skip_version_check=True): - exit_with_error("installation of '" + str(self) + "' failed, but no error was detected. Either something went wrong with the installation, or this may indicate an internal emsdk error.") - - self.cleanup_temp_install_files() - self.update_installed_version() - return True - - def cleanup_temp_install_files(self): - if KEEP_DOWNLOADS: - return - url = self.download_url() - if url.endswith(ARCHIVE_SUFFIXES): - download_target = get_download_target(url, download_dir, getattr(self, 'download_prefix', '')) - debug_print("Deleting temporary download: " + download_target) - rmfile(download_target) - - def uninstall(self): - if not self.is_installed(): - print("Tool '" + str(self) + "' was not installed. No need to uninstall.") - return - print("Uninstalling tool '" + str(self) + "'..") - if hasattr(self, 'custom_uninstall_script'): - if self.custom_uninstall_script == 'uninstall_binaryen': - uninstall_binaryen(self) - else: - raise Exception('Unknown custom_uninstall_script directive "' + self.custom_uninstall_script + '"!') - print("Deleting path '" + self.installation_path() + "'") - remove_tree(self.installation_path()) - print("Done uninstalling '" + str(self) + "'.") - - def dependencies(self): - if not hasattr(self, 'uses'): - return [] - deps = [] - - for tool_name in self.uses: - tool = find_tool(tool_name) - if tool: - deps += [tool] - return deps - - def recursive_dependencies(self): - if not hasattr(self, 'uses'): - return [] - deps = [] - for tool_name in self.uses: - tool = find_tool(tool_name) - if tool: - deps += [tool] - deps += tool.recursive_dependencies() - return deps - - -# A global registry of all known Emscripten SDK tools available in the SDK manifest. -tools = [] -tools_map = {} - - -def add_tool(tool): - tool.is_sdk = False - tools.append(tool) - if find_tool(str(tool)): - raise Exception('Duplicate tool ' + str(tool) + '! Existing:\n{' + ', '.join("%s: %s" % item for item in vars(find_tool(str(tool))).items()) + '}, New:\n{' + ', '.join("%s: %s" % item for item in vars(tool).items()) + '}') - tools_map[str(tool)] = tool - - -# A global registry of all known SDK toolsets. -sdks = [] -sdks_map = {} - - -def add_sdk(sdk): - sdk.is_sdk = True - sdks.append(sdk) - if find_sdk(str(sdk)): - raise Exception('Duplicate sdk ' + str(sdk) + '! Existing:\n{' + ', '.join("%s: %s" % item for item in vars(find_sdk(str(sdk))).items()) + '}, New:\n{' + ', '.join("%s: %s" % item for item in vars(sdk).items()) + '}') - sdks_map[str(sdk)] = sdk - - -# N.B. In both tools and sdks list above, we take the convention that the newest -# items are at the back of the list (ascending chronological order) - -def find_tool(name): - return tools_map.get(name) - - -def find_sdk(name): - return sdks_map.get(name) - - -def is_os_64bit(): - return ARCH.endswith('64') - - -def find_latest_version(): - return resolve_sdk_aliases('latest') - - -def find_latest_hash(): - version = find_latest_version() - releases_info = load_releases_info() - return releases_info['releases'][version] - - -def resolve_sdk_aliases(name, verbose=False): - releases_info = load_releases_info() - while name in releases_info['aliases']: - if verbose: - print("Resolving SDK alias '%s' to '%s'" % (name, releases_info['aliases'][name])) - name = releases_info['aliases'][name] - return name - - -def find_latest_sdk(): - return 'sdk-releases-%s-64bit' % (find_latest_hash()) - - -def find_tot_sdk(): - debug_print('Fetching emscripten-releases repository...') - global extra_release_tag - extra_release_tag = get_emscripten_releases_tot() - return 'sdk-releases-%s-64bit' % (extra_release_tag) - - -def parse_emscripten_version(emscripten_root): - version_file = os.path.join(emscripten_root, 'emscripten-version.txt') - with open(version_file) as f: - version = f.read().strip() - version = version.strip('"').split('-')[0].split('.') - return [int(v) for v in version] - - -# Given a git hash in emscripten-releases, find the emscripten -# version for it. There may not be one if this is not the hash of -# a release, in which case we return None. -def get_emscripten_release_version(emscripten_releases_hash): - releases_info = load_releases_info() - for key, value in dict(releases_info['releases']).items(): - if value == emscripten_releases_hash: - return key.split('-')[0] - return None - - -# Get the tip-of-tree build identifier. -def get_emscripten_releases_tot(): - git_clone_checkout_and_pull(emscripten_releases_repo, sdk_path('releases'), 'main') - recent_releases = git_recent_commits(sdk_path('releases')) - # The recent releases are the latest hashes in the git repo. There - # may not be a build for the most recent ones yet; find the last - # that does. - arch = '' - if ARCH == 'arm64': - arch = '-arm64' - - def make_url(ext): - return emscripten_releases_download_url_template % ( - os_name(), - release, - arch, - ext, - ) - - for release in recent_releases: - make_url('tar.xz' if not WINDOWS else 'zip') - try: - urlopen(make_url('tar.xz' if not WINDOWS else 'zip')) - except Exception: - if not WINDOWS: - # Try the old `.tbz2` name - # TODO:remove this once tot builds are all using xz - try: - urlopen(make_url('tbz2')) - except Exception: - continue - else: - continue - return release - exit_with_error('failed to find build of any recent emsdk revision') - - -def get_release_hash(arg, releases_info): - return releases_info.get(arg, None) or releases_info.get('sdk-' + arg + '-64bit') - - -def version_key(ver): - return tuple(map(int, re.split('[._-]', ver)[:3])) - - -# A sort function that is compatible with both Python 2 and Python 3 using a -# custom comparison function. -def python_2_3_sorted(arr, cmp): - if sys.version_info >= (3,): - return sorted(arr, key=functools.cmp_to_key(cmp)) - else: - return sorted(arr, cmp=cmp) - - -def is_emsdk_sourced_from_github(): - return os.path.exists(os.path.join(EMSDK_PATH, '.git')) - - -def update_emsdk(): - if is_emsdk_sourced_from_github(): - errlog('You seem to have bootstrapped Emscripten SDK by cloning from GitHub. In this case, use "git pull" instead of "emsdk update" to update emsdk. (Not doing that automatically in case you have local changes)') - sys.exit(1) - if not download_and_extract(emsdk_zip_download_url, EMSDK_PATH, clobber=False): - sys.exit(1) - - -# Lists all legacy (pre-emscripten-releases) tagged versions directly in the Git -# repositories. These we can pull and compile from source. -def load_legacy_emscripten_tags(): - return open(sdk_path('legacy-emscripten-tags.txt'), 'r').read().split('\n') - - -def load_legacy_binaryen_tags(): - return open(sdk_path('legacy-binaryen-tags.txt'), 'r').read().split('\n') - - -def remove_prefix(s, prefix): - if s.startswith(prefix): - return s[len(prefix):] - else: - return s - - -def remove_suffix(s, suffix): - if s.endswith(suffix): - return s[:len(s) - len(suffix)] - else: - return s - - -# filename should be one of: 'llvm-precompiled-tags-32bit.txt', 'llvm-precompiled-tags-64bit.txt' -def load_file_index_list(filename): - items = open(sdk_path(filename)).read().splitlines() - items = [remove_suffix(remove_suffix(remove_prefix(x, 'emscripten-llvm-e'), '.tar.gz'), '.zip').strip() for x in items] - items = [x for x in items if 'latest' not in x and len(x) > 0] - - # Sort versions from oldest to newest (the default sort would be - # lexicographic, i.e. '1.37.1 < 1.37.10 < 1.37.2') - return sorted(items, key=version_key) - - -# Load the json info for emscripten-releases. -def load_releases_info(): - if not hasattr(load_releases_info, 'cached_info'): - try: - text = open(sdk_path('emscripten-releases-tags.json'), 'r').read() - load_releases_info.cached_info = json.loads(text) - except Exception as e: - print('Error parsing emscripten-releases-tags.json!') - exit_with_error(str(e)) - - return load_releases_info.cached_info - - -def get_installed_sdk_version(): - version_file = sdk_path(os.path.join('upstream', '.emsdk_version')) - if not os.path.exists(version_file): - return None - with open(version_file) as f: - version = f.read() - return version.split('-')[1] - - -# Get a list of tags for emscripten-releases. -def load_releases_tags(): - tags = [] - info = load_releases_info() - - for version, sha in sorted(info['releases'].items(), key=lambda x: version_key(x[0])): - tags.append(sha) - - if extra_release_tag: - tags.append(extra_release_tag) - - # Explicitly add the currently installed SDK version. This could be a custom - # version (installed explicitly) so it might not be part of the main list - # loaded above. - installed = get_installed_sdk_version() - if installed and installed not in tags: - tags.append(installed) - - return tags - - -def load_releases_versions(): - info = load_releases_info() - versions = list(info['releases'].keys()) - return versions - - -def is_string(s): - if sys.version_info[0] >= 3: - return isinstance(s, str) - return isinstance(s, basestring) # noqa - - -def load_sdk_manifest(): - try: - manifest = json.loads(open(sdk_path("emsdk_manifest.json"), "r").read()) - except Exception as e: - print('Error parsing emsdk_manifest.json!') - print(str(e)) - return - - emscripten_tags = load_legacy_emscripten_tags() - llvm_precompiled_tags_32bit = [] - llvm_precompiled_tags_64bit = load_file_index_list('llvm-tags-64bit.txt') - llvm_precompiled_tags = llvm_precompiled_tags_32bit + llvm_precompiled_tags_64bit - binaryen_tags = load_legacy_binaryen_tags() - releases_tags = load_releases_tags() - - def dependencies_exist(sdk): - for tool_name in sdk.uses: - tool = find_tool(tool_name) - if not tool: - debug_print('missing dependency: ' + tool_name) - return False - return True - - def cmp_version(ver, cmp_operand, reference): - if cmp_operand == '<=': - return version_key(ver) <= version_key(reference) - if cmp_operand == '<': - return version_key(ver) < version_key(reference) - if cmp_operand == '>=': - return version_key(ver) >= version_key(reference) - if cmp_operand == '>': - return version_key(ver) > version_key(reference) - if cmp_operand == '==': - return version_key(ver) == version_key(reference) - if cmp_operand == '!=': - return version_key(ver) != version_key(reference) - raise Exception('Invalid cmp_operand "' + cmp_operand + '"!') - - def passes_filters(param, ver, filters): - for v in filters: - if v[0] == param and not cmp_version(ver, v[1], v[2]): - return False - return True - - # A 'category parameter' is a %foo%-encoded identifier that specifies - # a class of tools instead of just one tool, e.g. %tag% - def expand_category_param(param, category_list, t, is_sdk): - for i, ver in enumerate(category_list): - if not ver.strip(): - continue - t2 = copy.copy(t) - found_param = False - for p, v in vars(t2).items(): - if is_string(v) and param in v: - t2.__dict__[p] = v.replace(param, ver) - found_param = True - if not found_param: - continue - t2.is_old = i < len(category_list) - 2 - if hasattr(t2, 'uses'): - t2.uses = [x.replace(param, ver) for x in t2.uses] - - # Filter out expanded tools by version requirements, such as ["tag", "<=", "1.37.22"] - if hasattr(t2, 'version_filter'): - passes = passes_filters(param, ver, t2.version_filter) - if not passes: - continue - - if is_sdk: - if dependencies_exist(t2): - if not find_sdk(t2.name): - add_sdk(t2) - else: - debug_print('SDK ' + str(t2) + ' already existed in manifest, not adding twice') - else: - if not find_tool(t2.name): - add_tool(t2) - else: - debug_print('Tool ' + str(t2) + ' already existed in manifest, not adding twice') - - for tool in manifest['tools']: - t = Tool(tool) - if t.compatible_with_this_os(): - if not hasattr(t, 'is_old'): - t.is_old = False - - # Expand the metapackages that refer to tags - if '%tag%' in t.version: - expand_category_param('%tag%', emscripten_tags, t, is_sdk=False) - elif '%precompiled_tag%' in t.version: - expand_category_param('%precompiled_tag%', llvm_precompiled_tags, t, is_sdk=False) - elif '%precompiled_tag32%' in t.version: - expand_category_param('%precompiled_tag32%', llvm_precompiled_tags_32bit, t, is_sdk=False) - elif '%precompiled_tag64%' in t.version: - expand_category_param('%precompiled_tag64%', llvm_precompiled_tags_64bit, t, is_sdk=False) - elif '%binaryen_tag%' in t.version: - expand_category_param('%binaryen_tag%', binaryen_tags, t, is_sdk=False) - elif '%releases-tag%' in t.version: - expand_category_param('%releases-tag%', releases_tags, t, is_sdk=False) - else: - add_tool(t) - - for sdk_str in manifest['sdks']: - sdk_str['id'] = 'sdk' - sdk = Tool(sdk_str) - if sdk.compatible_with_this_os(): - if not hasattr(sdk, 'is_old'): - sdk.is_old = False - - if '%tag%' in sdk.version: - expand_category_param('%tag%', emscripten_tags, sdk, is_sdk=True) - elif '%precompiled_tag%' in sdk.version: - expand_category_param('%precompiled_tag%', llvm_precompiled_tags, sdk, is_sdk=True) - elif '%precompiled_tag32%' in sdk.version: - expand_category_param('%precompiled_tag32%', llvm_precompiled_tags_32bit, sdk, is_sdk=True) - elif '%precompiled_tag64%' in sdk.version: - expand_category_param('%precompiled_tag64%', llvm_precompiled_tags_64bit, sdk, is_sdk=True) - elif '%releases-tag%' in sdk.version: - expand_category_param('%releases-tag%', releases_tags, sdk, is_sdk=True) - else: - add_sdk(sdk) - - -# Tests if the two given tools can be active at the same time. -# Currently only a simple check for name for same tool with different versions, -# possibly adds more logic in the future. -def can_simultaneously_activate(tool1, tool2): - return tool1.id != tool2.id - - -# Expands dependencies for each tool, and removes ones that don't exist. -def process_tool_list(tools_to_activate): - i = 0 - # Gather dependencies for each tool - while i < len(tools_to_activate): - tool = tools_to_activate[i] - deps = tool.recursive_dependencies() - tools_to_activate = tools_to_activate[:i] + deps + tools_to_activate[i:] - i += len(deps) + 1 - - for tool in tools_to_activate: - if not tool.is_installed(): - exit_with_error("error: tool is not installed and therefore cannot be activated: '%s'" % tool) - - # Remove conflicting tools - i = 0 - while i < len(tools_to_activate): - j = 0 - while j < i: - secondary_tool = tools_to_activate[j] - primary_tool = tools_to_activate[i] - if not can_simultaneously_activate(primary_tool, secondary_tool): - tools_to_activate.pop(j) - j -= 1 - i -= 1 - j += 1 - i += 1 - return tools_to_activate - - -def write_set_env_script(env_string): - assert CMD or POWERSHELL - open(EMSDK_SET_ENV, 'w').write(env_string) - - -# Reconfigure .emscripten to choose the currently activated toolset, set PATH -# and other environment variables. -# Returns the full list of deduced tools that are now active. -def set_active_tools(tools_to_activate, permanently_activate, system): - tools_to_activate = process_tool_list(tools_to_activate) - - if tools_to_activate: - tools = [x for x in tools_to_activate if not x.is_sdk] - print('Setting the following tools as active:\n ' + '\n '.join(map(lambda x: str(x), tools))) - print('') - - generate_em_config(tools_to_activate, permanently_activate, system) - - # Construct a .bat or .ps1 script that will be invoked to set env. vars and PATH - # We only do this on cmd or powershell since emsdk.bat/ps1 is able to modify the - # calling shell environment. On other shell `source emsdk_env.sh` is - # required. - if CMD or POWERSHELL: - # always set local environment variables since permanently activating will only set the registry settings and - # will not affect the current session - env_vars_to_add = get_env_vars_to_add(tools_to_activate, system, user=permanently_activate) - env_string = construct_env_with_vars(env_vars_to_add) - write_set_env_script(env_string) - - if WINDOWS and permanently_activate: - win_set_environment_variables(env_vars_to_add, system, user=permanently_activate) - - return tools_to_activate - - -def currently_active_sdk(): - for sdk in reversed(sdks): - if sdk.is_active(): - return sdk - return None - - -def currently_active_tools(): - active_tools = [] - for tool in tools: - if tool.is_active(): - active_tools += [tool] - return active_tools - - -# http://stackoverflow.com/questions/480214/how-do-you-remove-duplicates-from-a-list-in-python-whilst-preserving-order -def unique_items(seq): - seen = set() - seen_add = seen.add - return [x for x in seq if x not in seen and not seen_add(x)] - - -# Tests if a path is contained in the given list, but with separators normalized. -def normalized_contains(lst, elem): - elem = to_unix_path(elem) - for e in lst: - if elem == to_unix_path(e): - return True - return False - - -def to_msys_path(p): - p = to_unix_path(p) - new_path = re.sub(r'([a-zA-Z]):/(.*)', r'/\1/\2', p) - if len(new_path) > 3 and new_path[0] == '/' and new_path[2] == '/': - new_path = new_path[0] + new_path[1].lower() + new_path[2:] - return new_path - - -# Looks at the current PATH and adds and removes entries so that the PATH reflects -# the set of given active tools. -def adjusted_path(tools_to_activate, system=False, user=False): - # These directories should be added to PATH - path_add = get_required_path(tools_to_activate) - # These already exist. - if WINDOWS and not MSYS: - existing_path = win_get_environment_variable('PATH', system=system, user=user, fallback=True).split(ENVPATH_SEPARATOR) - else: - existing_path = os.environ['PATH'].split(ENVPATH_SEPARATOR) - - existing_emsdk_tools = [] - existing_nonemsdk_path = [] - for entry in existing_path: - if to_unix_path(entry).startswith(EMSDK_PATH): - existing_emsdk_tools.append(entry) - else: - existing_nonemsdk_path.append(entry) - - new_emsdk_tools = [] - kept_emsdk_tools = [] - for entry in path_add: - if not normalized_contains(existing_emsdk_tools, entry): - new_emsdk_tools.append(entry) - else: - kept_emsdk_tools.append(entry) - - whole_path = unique_items(new_emsdk_tools + kept_emsdk_tools + existing_nonemsdk_path) - - if MSYS: - # XXX Hack: If running native Windows Python in MSYS prompt where PATH - # entries look like "/c/Windows/System32", os.environ['PATH'] - # in Python will transform to show them as "C:\\Windows\\System32", so need - # to reconvert path delimiter back to forward slashes. - whole_path = [to_msys_path(p) for p in whole_path] - new_emsdk_tools = [to_msys_path(p) for p in new_emsdk_tools] - - separator = ':' if MSYS else ENVPATH_SEPARATOR - return (separator.join(whole_path), new_emsdk_tools) - - -def get_env_vars_to_add(tools_to_activate, system, user): - env_vars_to_add = [] - - newpath, added_path = adjusted_path(tools_to_activate, system, user) - - # Don't bother setting the path if there are no changes. - if os.environ['PATH'] != newpath: - env_vars_to_add += [('PATH', newpath)] - - if added_path: - info('Adding directories to PATH:') - for item in added_path: - info('PATH += ' + item) - info('') - - # A core variable EMSDK points to the root of Emscripten SDK directory. - env_vars_to_add += [('EMSDK', EMSDK_PATH)] - - for tool in tools_to_activate: - for env in tool.activated_environment(): - key, value = parse_key_value(env) - value = to_native_path(tool.expand_vars(value)) - env_vars_to_add += [(key, value)] - - emroot = find_emscripten_root(tools_to_activate) - if emroot: - # For older emscripten versions that don't use an embedded cache by - # default we need to export EM_CACHE. - # - # Sadly, we can't put this in the config file since those older versions - # also didn't read the `CACHE` key from the config file: - # - # History: - # - 'CACHE' config started being honored in 1.39.16 - # https://github.com/emscripten-core/emscripten/pull/11091 - # - Default to embedded cache also started in 1.39.16 - # https://github.com/emscripten-core/emscripten/pull/11126 - # - Emscripten supports automatically locating the embedded - # config in 1.39.13: - # https://github.com/emscripten-core/emscripten/pull/10935 - # - # Since setting EM_CACHE in the environment effects the entire machine - # we want to avoid this except when installing these older emscripten - # versions that really need it. - version = parse_emscripten_version(emroot) - if version < [1, 39, 16]: - em_cache_dir = os.path.join(emroot, 'cache') - env_vars_to_add += [('EM_CACHE', em_cache_dir)] - if version < [1, 39, 13]: - env_vars_to_add += [('EM_CONFIG', os.path.normpath(EM_CONFIG_PATH))] - - return env_vars_to_add - - -def construct_env(tools_to_activate, system, user): - info('Setting up EMSDK environment (suppress these messages with EMSDK_QUIET=1)') - return construct_env_with_vars(get_env_vars_to_add(tools_to_activate, system, user)) - - -def unset_env(key): - if POWERSHELL: - return 'Remove-Item env:%s\n' % key - if CMD: - return 'set %s=\n' % key - if CSH: - return 'unsetenv %s;\n' % key - if FISH: - return 'set -e %s;\n' % key - if BASH: - return 'unset %s;\n' % key - assert False - - -def construct_env_with_vars(env_vars_to_add): - env_string = '' - if env_vars_to_add: - info('Setting environment variables:') - - for key, value in env_vars_to_add: - # Don't set env vars which are already set to the correct value. - if key in os.environ and to_unix_path(os.environ[key]) == to_unix_path(value): - continue - info(key + ' = ' + value) - if POWERSHELL: - env_string += '$env:' + key + '="' + value + '"\n' - elif CMD: - env_string += 'SET ' + key + '=' + value + '\n' - elif CSH: - env_string += 'setenv ' + key + ' "' + value + '";\n' - elif FISH: - env_string += 'set -gx ' + key + ' "' + value + '";\n' - elif BASH: - env_string += 'export ' + key + '="' + value + '";\n' - else: - assert False - - if 'EMSDK_PYTHON' in env_vars_to_add: - # When using our bundled python we never want the user's - # PYTHONHOME or PYTHONPATH - # See https://github.com/emscripten-core/emsdk/issues/598 - env_string += unset_env('PYTHONHOME') - env_string += unset_env('PYTHONPATH') - - # Remove any environment variables that might have been set by old or - # inactive tools/sdks. For example, we set EM_CACHE for older versions - # of the SDK but we want to remove that from the current environment - # if no such tool is active. - # Ignore certain keys that are inputs to emsdk itself. - ignore_keys = set(['EMSDK_POWERSHELL', 'EMSDK_CSH', 'EMSDK_CMD', 'EMSDK_BASH', 'EMSDK_FISH', - 'EMSDK_NUM_CORES', 'EMSDK_NOTTY', 'EMSDK_KEEP_DOWNLOADS']) - env_keys_to_add = set(pair[0] for pair in env_vars_to_add) - for key in os.environ: - if key.startswith('EMSDK_') or key in ('EM_CACHE', 'EM_CONFIG'): - if key not in env_keys_to_add and key not in ignore_keys: - info('Clearing existing environment variable: %s' % key) - env_string += unset_env(key) - - return env_string - - -def error_on_missing_tool(name): - if name.endswith('-64bit') and not is_os_64bit(): - exit_with_error("'%s' is only provided for 64-bit OSes" % name) - else: - exit_with_error("tool or SDK not found: '%s'" % name) - - -def expand_sdk_name(name, activating): - if 'upstream-master' in name: - errlog('upstream-master SDK has been renamed main') - name = name.replace('upstream-master', 'main') - if 'fastcomp' in name: - exit_with_error('the fastcomp backend is no longer supported. Please use an older version of emsdk (for example 3.1.29) if you want to install the old fastcomp-based SDK') - if name in ('tot', 'sdk-tot', 'tot-upstream'): - if activating: - # When we are activating a tot release, assume that the currently - # installed SDK, if any, is the tot release we want to activate. - # Without this `install tot && activate tot` will race with the builders - # that are producing new builds. - installed = get_installed_sdk_version() - if installed: - debug_print('activating currently installed SDK; not updating tot version') - return 'sdk-releases-%s-64bit' % installed - return find_tot_sdk() - - if '-upstream' in name: - name = name.replace('-upstream', '') - - name = resolve_sdk_aliases(name, verbose=True) - - # check if it's a release handled by an emscripten-releases version, - # and if so use that by using the right hash. we support a few notations, - # x.y.z - # sdk-x.y.z-64bit - # TODO: support short notation for old builds too? - fullname = name - version = fullname.replace('sdk-', '').replace('releases-', '').replace('-64bit', '').replace('tag-', '') - sdk = 'sdk-' if not name.startswith('releases-') else '' - releases_info = load_releases_info()['releases'] - release_hash = get_release_hash(version, releases_info) - if release_hash: - # Known release hash - full_name = '%sreleases-%s-64bit' % (sdk, release_hash) - print("Resolving SDK version '%s' to '%s'" % (version, full_name)) - return full_name - - if len(version) == 40: - global extra_release_tag - extra_release_tag = version - return '%sreleases-%s-64bit' % (sdk, version) - - return name - - -def main(args): - if not args: - errlog("Missing command; Type 'emsdk help' to get a list of commands.") - return 1 - - debug_print('emsdk.py running under `%s`' % sys.executable) - cmd = args.pop(0) - - if cmd in ('help', '--help', '-h'): - print(' emsdk: Available commands:') - - print(''' - emsdk list [--old] [--uses] - Lists all available SDKs and tools and their - current installation status. With the --old - parameter, also historical versions are - shown. If --uses is passed, displays the - composition of different SDK packages and - dependencies. - - emsdk update - Updates emsdk to the newest version. If you have - bootstrapped emsdk via cloning directly from - GitHub, call "git pull" instead to update emsdk. - - emsdk install [options] ... - - Downloads and installs given tools or SDKs. - Options can contain: - - -j: Specifies the number of cores to use when - building the tool. Default: use one less - than the # of detected cores. - - --build=: Controls what kind of build of LLVM to - perform. Pass either 'Debug', 'Release', - 'MinSizeRel' or 'RelWithDebInfo'. Default: - 'Release'. - - --generator=: Specifies the CMake Generator to be used - during the build. Possible values are the - same as what your CMake supports and whether - the generator is valid depends on the tools - you have installed. Defaults to 'Unix Makefiles' - on *nix systems. If generator name is multiple - words, enclose with single or double quotes. - - --shallow: When installing tools from one of the git - development branches, this parameter can be - passed to perform a shallow git clone instead - of a full one. This reduces the amount of - network transfer that is needed. This option - should only be used when you are interested in - downloading one of the development branches, - but are not looking to develop Emscripten - yourself. Default: disabled, i.e. do a full - clone. - - --build-tests: If enabled, LLVM is built with internal tests - included. Pass this to enable running test - other.test_llvm_lit in the Emscripten test - suite. Default: disabled. - --enable-assertions: If specified, LLVM is built with assert() - checks enabled. Useful for development - purposes. Default: Enabled - --disable-assertions: Forces assertions off during the build. - - --vs2019/--vs2022: If building from source, overrides to build - using the specified compiler. When installing - precompiled packages, this has no effect. - Note: The same compiler specifier must be - passed to the emsdk activate command to - activate the desired version. - - Notes on building from source: - - To pass custom CMake directives when configuring - LLVM build, specify the environment variable - LLVM_CMAKE_ARGS="param1=value1,param2=value2" - in the environment where the build is invoked. - See README.md for details. - - --override-repository: Specifies the git URL to use for a given Tool. E.g. - --override-repository emscripten-main@https://github.com//emscripten/tree/ - - - emsdk uninstall - Removes the given tool or SDK from disk.''') - - if WINDOWS: - print(''' - emsdk activate [--permanent] [--system] [--build=type] [--vs2019/--vs2022] - - - Activates the given tool or SDK in the - environment of the current shell. - - - If the `--permanent` option is passed, then the environment - variables are set permanently for the current user. - - - If the `--system` option is passed, the registration - is done for all users of the system. - This needs admin privileges - (uses Machine environment variables). - - - If a custom compiler version was used to override - the compiler to use, pass the same --vs2019/--vs2022 - parameter here to choose which version to activate. - - emcmdprompt.bat - Spawns a new command prompt window with the - Emscripten environment active.''') - else: - print(''' emsdk activate [--build=type] - - - Activates the given tool or SDK in the - environment of the current shell.''') - - print(''' - Both commands 'install' and 'activate' accept an optional parameter - '--build=type', which can be used to override what kind of installation - or activation to perform. Possible values for type are Debug, Release, - MinSizeRel or RelWithDebInfo. Note: When overriding a custom build type, - be sure to match the same --build= option to both 'install' and - 'activate' commands and the invocation of 'emsdk_env', or otherwise - these commands will default to operating on the default build type - which is RelWithDebInfo.''') - - print(''' - - Environment: - EMSDK_KEEP_DOWNLOADS=1 - if you want to keep the downloaded archives. - EMSDK_NOTTY=1 - override isatty() result (mainly to log progress). - EMSDK_NUM_CORES=n - limit parallelism to n cores. - EMSDK_VERBOSE=1 - very verbose output, useful for debugging.''') - return 0 - - # Extracts a boolean command line argument from args and returns True if it was present - def extract_bool_arg(name): - if name in args: - args.remove(name) - return True - return False - - def extract_string_arg(name): - for i in range(len(args)): - if args[i] == name: - value = args[i + 1] - del args[i:i + 2] - return value - - arg_old = extract_bool_arg('--old') - arg_uses = extract_bool_arg('--uses') - arg_permanent = extract_bool_arg('--permanent') - arg_global = extract_bool_arg('--global') - arg_system = extract_bool_arg('--system') - if arg_global: - print('--global is deprecated. Use `--system` to set the environment variables for all users') - arg_system = True - if arg_system: - arg_permanent = True - if extract_bool_arg('--embedded'): - errlog('embedded mode is now the only mode available') - if extract_bool_arg('--no-embedded'): - errlog('embedded mode is now the only mode available') - return 1 - - arg_notty = extract_bool_arg('--notty') - if arg_notty: - global TTY_OUTPUT - TTY_OUTPUT = False - - # Replace meta-packages with the real package names. - if cmd in ('update', 'install', 'activate'): - activating = cmd == 'activate' - args = [expand_sdk_name(a, activating=activating) for a in args] - - load_em_config() - load_sdk_manifest() - - # Apply any overrides to git branch names to clone from. - forked_url = extract_string_arg('--override-repository') - while forked_url: - tool_name, url_and_refspec = forked_url.split('@') - t = find_tool(tool_name) - if not t: - errlog('Failed to find tool ' + tool_name + '!') - return False - else: - t.url, t.git_branch = parse_github_url_and_refspec(url_and_refspec) - debug_print('Reading git repository URL "' + t.url + '" and git branch "' + t.git_branch + '" for Tool "' + tool_name + '".') - - forked_url = extract_string_arg('--override-repository') - - # Process global args - for i in range(len(args)): - if args[i].startswith('--generator='): - build_generator = re.match(r'''^--generator=['"]?([^'"]+)['"]?$''', args[i]) - if build_generator: - global CMAKE_GENERATOR - CMAKE_GENERATOR = build_generator.group(1) - args[i] = '' - else: - errlog("Cannot parse CMake generator string: " + args[i] + ". Try wrapping generator string with quotes") - return 1 - elif args[i].startswith('--build='): - build_type = re.match(r'^--build=(.+)$', args[i]) - if build_type: - global CMAKE_BUILD_TYPE_OVERRIDE - build_type = build_type.group(1) - build_types = ['Debug', 'MinSizeRel', 'RelWithDebInfo', 'Release'] - try: - build_type_index = [x.lower() for x in build_types].index(build_type.lower()) - CMAKE_BUILD_TYPE_OVERRIDE = build_types[build_type_index] - args[i] = '' - except Exception: - errlog('Unknown CMake build type "' + build_type + '" specified! Please specify one of ' + str(build_types)) - return 1 - else: - errlog("Invalid command line parameter " + args[i] + ' specified!') - return 1 - args = [x for x in args if x] - - if cmd == 'list': - print('') - - def installed_sdk_text(name): - sdk = find_sdk(name) - return 'INSTALLED' if sdk and sdk.is_installed() else '' - - if (LINUX or MACOS or WINDOWS) and (ARCH == 'x86' or ARCH == 'x86_64'): - print('The *recommended* precompiled SDK download is %s (%s).' % (find_latest_version(), find_latest_hash())) - print() - print('To install/activate it use:') - print(' latest') - print('') - print('This is equivalent to installing/activating:') - print(' %s %s' % (find_latest_version(), installed_sdk_text(find_latest_sdk()))) - print('') - else: - print('Warning: your platform does not have precompiled SDKs available.') - print('You may install components from source.') - print('') - - print('All recent (non-legacy) installable versions are:') - releases_versions = sorted(load_releases_versions(), key=version_key, reverse=True) - releases_info = load_releases_info()['releases'] - for ver in releases_versions: - print(' %s %s' % (ver, installed_sdk_text('sdk-releases-%s-64bit' % get_release_hash(ver, releases_info)))) - print() - - # Use array to work around the lack of being able to mutate from enclosing - # function. - has_partially_active_tools = [False] - - if sdks: - def find_sdks(needs_compilation): - s = [] - for sdk in sdks: - if sdk.is_old and not arg_old: - continue - if sdk.needs_compilation() == needs_compilation: - s += [sdk] - return s - - def print_sdks(s): - for sdk in s: - installed = '\tINSTALLED' if sdk.is_installed() else '' - active = '*' if sdk.is_active() else ' ' - print(' ' + active + ' {0: <25}'.format(str(sdk)) + installed) - if arg_uses: - for dep in sdk.uses: - print(' - {0: <25}'.format(dep)) - print('') - print('The additional following precompiled SDKs are also available for download:') - print_sdks(find_sdks(False)) - - print('The following SDKs can be compiled from source:') - print_sdks(find_sdks(True)) - - if tools: - def find_tools(needs_compilation): - t = [] - for tool in tools: - if tool.is_old and not arg_old: - continue - if tool.needs_compilation() != needs_compilation: - continue - t += [tool] - return t - - def print_tools(t): - for tool in t: - if tool.is_old and not arg_old: - continue - if tool.can_be_installed() is True: - installed = '\tINSTALLED' if tool.is_installed() else '' - else: - installed = '\tNot available: ' + tool.can_be_installed() - tool_is_active = tool.is_active() - tool_is_env_active = tool_is_active and tool.is_env_active() - if tool_is_env_active: - active = ' * ' - elif tool_is_active: - active = '(*)' - has_partially_active_tools[0] = has_partially_active_tools[0] or True - else: - active = ' ' - print(' ' + active + ' {0: <25}'.format(str(tool)) + installed) - print('') - - print('The following precompiled tool packages are available for download:') - print_tools(find_tools(needs_compilation=False)) - print('The following tools can be compiled from source:') - print_tools(find_tools(needs_compilation=True)) - else: - if is_emsdk_sourced_from_github(): - print("There are no tools available. Run 'git pull' to fetch the latest set of tools.") - else: - print("There are no tools available. Run 'emsdk update' to fetch the latest set of tools.") - print('') - - print('Items marked with * are activated for the current user.') - if has_partially_active_tools[0]: - env_cmd = 'emsdk_env.bat' if WINDOWS else 'source ./emsdk_env.sh' - print('Items marked with (*) are selected for use, but your current shell environment is not configured to use them. Type "' + env_cmd + '" to set up your current shell to use them' + (', or call "emsdk activate --permanent " to permanently activate them.' if WINDOWS else '.')) - if not arg_old: - print('') - print("To access the historical archived versions, type 'emsdk list --old'") - - print('') - if is_emsdk_sourced_from_github(): - print('Run "git pull" to pull in the latest list.') - else: - print('Run "./emsdk update" to pull in the latest list.') - - return 0 - elif cmd == 'construct_env': - # Clean up old temp file up front, in case of failure later before we get - # to write out the new one. - tools_to_activate = currently_active_tools() - tools_to_activate = process_tool_list(tools_to_activate) - env_string = construct_env(tools_to_activate, arg_system, arg_permanent) - if CMD or POWERSHELL: - write_set_env_script(env_string) - else: - sys.stdout.write(env_string) - return 0 - elif cmd == 'update': - update_emsdk() - if WINDOWS: - # Clean up litter after old emsdk update which may have left this temp - # file around. - rmfile(sdk_path(EMSDK_SET_ENV)) - return 0 - elif cmd == 'update-tags': - errlog('`update-tags` is not longer needed. To install the latest tot release just run `install tot`') - return 0 - elif cmd == 'activate': - if arg_permanent: - print('Registering active Emscripten environment permanently') - print('') - - tools_to_activate = currently_active_tools() - for arg in args: - tool = find_tool(arg) - if tool is None: - tool = find_sdk(arg) - if tool is None: - error_on_missing_tool(arg) - tools_to_activate += [tool] - if not tools_to_activate: - errlog('No tools/SDKs specified to activate! Usage:\n emsdk activate tool/sdk1 [tool/sdk2] [...]') - return 1 - active_tools = set_active_tools(tools_to_activate, permanently_activate=arg_permanent, system=arg_system) - if not active_tools: - errlog('No tools/SDKs found to activate! Usage:\n emsdk activate tool/sdk1 [tool/sdk2] [...]') - return 1 - if WINDOWS and not arg_permanent: - errlog('The changes made to environment variables only apply to the currently running shell instance. Use the \'emsdk_env.bat\' to re-enter this environment later, or if you\'d like to register this environment permanently, rerun this command with the option --permanent.') - return 0 - elif cmd == 'install': - global BUILD_FOR_TESTING, ENABLE_LLVM_ASSERTIONS, CPU_CORES, GIT_CLONE_SHALLOW - - # Process args - for i in range(len(args)): - if args[i].startswith('-j'): - multicore = re.match(r'^-j(\d+)$', args[i]) - if multicore: - CPU_CORES = int(multicore.group(1)) - args[i] = '' - else: - errlog("Invalid command line parameter " + args[i] + ' specified!') - return 1 - elif args[i] == '--shallow': - GIT_CLONE_SHALLOW = True - args[i] = '' - elif args[i] == '--build-tests': - BUILD_FOR_TESTING = True - args[i] = '' - elif args[i] == '--enable-assertions': - ENABLE_LLVM_ASSERTIONS = 'ON' - args[i] = '' - elif args[i] == '--disable-assertions': - ENABLE_LLVM_ASSERTIONS = 'OFF' - args[i] = '' - args = [x for x in args if x] - if not args: - errlog("Missing parameter. Type 'emsdk install ' to install a tool or an SDK. Type 'emsdk list' to obtain a list of available tools. Type 'emsdk install latest' to automatically install the newest version of the SDK.") - return 1 - - if LINUX and ARCH == 'arm64' and args != ['latest']: - errlog('WARNING: arm64-linux binaries are not available for all releases.') - errlog('See https://github.com/emscripten-core/emsdk/issues/547') - - for t in args: - tool = find_tool(t) - if tool is None: - tool = find_sdk(t) - if tool is None: - error_on_missing_tool(t) - tool.install() - return 0 - elif cmd == 'uninstall': - if not args: - errlog("Syntax error. Call 'emsdk uninstall '. Call 'emsdk list' to obtain a list of available tools.") - return 1 - tool = find_tool(args[0]) - if tool is None: - errlog("Error: Tool by name '" + args[0] + "' was not found.") - return 1 - tool.uninstall() - return 0 - - errlog("Unknown command '" + cmd + "' given! Type 'emsdk help' to get a list of commands.") - return 1 - - -if __name__ == '__main__': - try: - sys.exit(main(sys.argv[1:])) - except KeyboardInterrupt: - exit_with_error('aborted by user, exiting') - sys.exit(1) diff --git a/emsdk-cache/emsdk-main/emsdk_env.bat b/emsdk-cache/emsdk-main/emsdk_env.bat deleted file mode 100644 index c793321c9..000000000 --- a/emsdk-cache/emsdk-main/emsdk_env.bat +++ /dev/null @@ -1 +0,0 @@ -@call "%~dp0emsdk" construct_env diff --git a/emsdk-cache/emsdk-main/emsdk_env.csh b/emsdk-cache/emsdk-main/emsdk_env.csh deleted file mode 100644 index 187d4c543..000000000 --- a/emsdk-cache/emsdk-main/emsdk_env.csh +++ /dev/null @@ -1,30 +0,0 @@ -# This script is sourced by the user and uses -# their shell. Try not to use tcshisms. - -# Do not execute this script without sourcing, -# because it won't have any effect then. -# That is, always run this script with -# -# source ./emsdk_env.csh -# -# instead of just plainly running with -# -# ./emsdk_env.csh -# -# which won't have any effect. -set SRC=($_) -if ("$SRC" == "") then - set SRC="$0" -else - set SRC="$SRC[1]" -endif -set CURDIR=`pwd` -setenv DIR `dirname "$SRC"` -unset SRC - -setenv EMSDK_CSH 1 - -eval `$DIR/emsdk construct_env` -unsetenv DIR - -unsetenv EMSDK_CSH diff --git a/emsdk-cache/emsdk-main/emsdk_env.fish b/emsdk-cache/emsdk-main/emsdk_env.fish deleted file mode 100644 index fbd3a0618..000000000 --- a/emsdk-cache/emsdk-main/emsdk_env.fish +++ /dev/null @@ -1,14 +0,0 @@ -#In your Fish configuration, add this line: -#alias emsdk_setup ". /path/to/emsdk/emsdk_env.fish" -#Now, when you want to use the SDK, run this alias first to set up -#your environment. - -set -gx EMSDK_FISH 1 - -set -l script (status -f) -set -l dir (dirname $script) - -eval ($dir/emsdk construct_env) - -set -e -l script -set -e -l dir diff --git a/emsdk-cache/emsdk-main/emsdk_env.ps1 b/emsdk-cache/emsdk-main/emsdk_env.ps1 deleted file mode 100644 index ab5fc4dc4..000000000 --- a/emsdk-cache/emsdk-main/emsdk_env.ps1 +++ /dev/null @@ -1,2 +0,0 @@ -$ScriptDirectory = Split-Path -parent $PSCommandPath -& "$ScriptDirectory/emsdk.ps1" construct_env diff --git a/emsdk-cache/emsdk-main/emsdk_env.sh b/emsdk-cache/emsdk-main/emsdk_env.sh deleted file mode 100644 index 75229e28a..000000000 --- a/emsdk-cache/emsdk-main/emsdk_env.sh +++ /dev/null @@ -1,73 +0,0 @@ -# This script is sourced by the user and uses -# their shell. -# -# This script tries to find its location but -# this does not work in every shell. -# -# It is known to work in bash, zsh and ksh -# -# Do not execute this script without sourcing, -# because it won't have any effect then. -# That is, always run this script with -# -# . /path/to/emsdk_env.sh -# -# or -# -# source /path/to/emsdk_env.sh -# -# instead of just plainly running with -# -# ./emsdk_env.sh -# -# which won't have any effect. - -CURRENT_SCRIPT= -DIR="." - -# use shell specific method to get the path -# to the current file being source'd. -# -# To add a shell, add another conditional below, -# then add tests to scripts/test_source_env.sh - -if [ -n "${BASH_SOURCE-}" ]; then - CURRENT_SCRIPT="$BASH_SOURCE" -elif [ -n "${ZSH_VERSION-}" ]; then - CURRENT_SCRIPT="${(%):-%x}" -elif [ -n "${KSH_VERSION-}" ]; then - CURRENT_SCRIPT=${.sh.file} -fi - -if [ -n "${CURRENT_SCRIPT-}" ]; then - DIR=$(dirname "$CURRENT_SCRIPT") - if [ -h "$CURRENT_SCRIPT" ]; then - # Now work out actual DIR since this is part of a symlink. - # Since we can't be sure that readlink or realpath - # are available, use tools more likely to be installed. - # (This will still fail if sed is not available.) - SYMDIR=$(dirname "$(ls -l "$CURRENT_SCRIPT" | sed -n "s/.*-> //p")") - if [ -z "$SYMDIR" ]; then - SYMDIR="." - fi - FULLDIR="$DIR/$SYMDIR" - DIR=$(cd "$FULLDIR" > /dev/null 2>&1; /bin/pwd) - unset SYMDIR - unset FULLDIR - fi -fi -unset CURRENT_SCRIPT - -if [ ! -f "$DIR/emsdk.py" ]; then - echo "Error: unable to determine 'emsdk' directory. Perhaps you are using a shell or" 1>&2 - echo " environment that this script does not support." 1>&2 - echo 1>&2 - echo "A possible solution is to source this script while in the 'emsdk' directory." 1>&2 - echo 1>&2 - unset DIR - return -fi - -# Force emsdk to use bash syntax so that this works in windows + bash too -eval `EMSDK_BASH=1 "$DIR/emsdk" construct_env` -unset DIR diff --git a/emsdk-cache/emsdk-main/emsdk_manifest.json b/emsdk-cache/emsdk-main/emsdk_manifest.json deleted file mode 100644 index 1d05304c2..000000000 --- a/emsdk-cache/emsdk-main/emsdk_manifest.json +++ /dev/null @@ -1,493 +0,0 @@ -{ - "tools": [ - { - "id": "llvm-git", - "version": "main", - "bitness": 32, - "install_path": "llvm/git", - "git_branch": "main", - "url": "https://github.com/llvm/llvm-project.git", - "custom_install_script": "build_llvm", - "only_supports_wasm": true, - "activated_path": "%installation_dir%/%llvm_build_bin_dir%", - "activated_cfg": "LLVM_ROOT='%installation_dir%/%llvm_build_bin_dir%'", - "activated_env": "LLVM_ROOT=%installation_dir%/%llvm_build_bin_dir%;EMCC_WASM_BACKEND=1", - "cmake_build_type": "Release" - }, - { - "id": "llvm-git", - "version": "main", - "bitness": 64, - "install_path": "llvm/git", - "git_branch": "main", - "url": "https://github.com/llvm/llvm-project.git", - "custom_install_script": "build_llvm", - "only_supports_wasm": true, - "activated_path": "%installation_dir%/%llvm_build_bin_dir%", - "activated_cfg": "LLVM_ROOT='%installation_dir%/%llvm_build_bin_dir%'", - "activated_env": "LLVM_ROOT=%installation_dir%/%llvm_build_bin_dir%;EMCC_WASM_BACKEND=1", - "cmake_build_type": "Release" - }, - - { - "id": "releases", - "version": "%releases-tag%", - "bitness": 64, - "arch": "x86_64", - "linux_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/%releases-tag%/wasm-binaries.tar.xz", - "macos_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/%releases-tag%/wasm-binaries.tar.xz", - "windows_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/win/%releases-tag%/wasm-binaries.zip", - "download_prefix": "%releases-tag%-", - "install_path": "upstream", - "activated_path": "%installation_dir%/emscripten", - "activated_cfg": "LLVM_ROOT='%installation_dir%/bin';BINARYEN_ROOT='%installation_dir%';EMSCRIPTEN_ROOT='%installation_dir%/emscripten'", - "emscripten_releases_hash": "%releases-tag%" - }, - { - "id": "releases", - "version": "%releases-tag%", - "bitness": 64, - "arch": "arm64", - "macos_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/%releases-tag%/wasm-binaries-arm64.tar.xz", - "linux_url": "https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/%releases-tag%/wasm-binaries-arm64.tar.xz", - "download_prefix": "%releases-tag%-", - "install_path": "upstream", - "activated_path": "%installation_dir%/emscripten", - "activated_cfg": "LLVM_ROOT='%installation_dir%/bin';BINARYEN_ROOT='%installation_dir%';EMSCRIPTEN_ROOT='%installation_dir%/emscripten'", - "emscripten_releases_hash": "%releases-tag%" - }, - - { - "id": "node", - "version": "18.20.3", - "bitness": 32, - "arch": "x86", - "windows_url": "node-v18.20.3-win-x86.zip", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - { - "id": "node", - "version": "18.20.3", - "arch": "arm", - "bitness": 32, - "linux_url": "node-v18.20.3-linux-armv7l.tar.xz", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - { - "id": "node", - "version": "18.20.3", - "bitness": 64, - "arch": "x86_64", - "macos_url": "node-v18.20.3-darwin-x64.tar.gz", - "windows_url": "node-v18.20.3-win-x64.zip", - "linux_url": "node-v18.20.3-linux-x64.tar.xz", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - { - "id": "node", - "version": "18.20.3", - "arch": "arm64", - "bitness": 64, - "macos_url": "node-v18.20.3-darwin-arm64.tar.gz", - "linux_url": "node-v18.20.3-linux-arm64.tar.xz", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - - - { - "id": "node", - "version": "20.18.0", - "bitness": 32, - "arch": "x86", - "windows_url": "node-v20.18.0-win-x86.zip", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - { - "id": "node", - "version": "20.18.0", - "arch": "arm", - "bitness": 32, - "linux_url": "node-v20.18.0-linux-armv7l.tar.xz", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - { - "id": "node", - "version": "20.18.0", - "bitness": 64, - "arch": "x86_64", - "macos_url": "node-v20.18.0-darwin-x64.tar.gz", - "windows_url": "node-v20.18.0-win-x64.zip", - "linux_url": "node-v20.18.0-linux-x64.tar.xz", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - { - "id": "node", - "version": "20.18.0", - "arch": "arm64", - "bitness": 64, - "windows_url": "node-v20.18.0-win-arm64.zip", - "macos_url": "node-v20.18.0-darwin-arm64.tar.gz", - "linux_url": "node-v20.18.0-linux-arm64.tar.xz", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - - - { - "id": "node", - "version": "22.16.0", - "bitness": 32, - "arch": "x86", - "windows_url": "node-v22.16.0-win-x86.zip", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - { - "id": "node", - "version": "22.16.0", - "arch": "arm", - "bitness": 32, - "linux_url": "node-v22.16.0-linux-armv7l.tar.xz", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - { - "id": "node", - "version": "22.16.0", - "bitness": 64, - "arch": "x86_64", - "windows_url": "node-v22.16.0-win-x64.zip", - "macos_url": "node-v22.16.0-darwin-x64.tar.gz", - "linux_url": "node-v22.16.0-linux-x64.tar.xz", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - { - "id": "node", - "version": "22.16.0", - "arch": "arm64", - "bitness": 64, - "windows_url": "node-v22.16.0-win-arm64.zip", - "macos_url": "node-v22.16.0-darwin-arm64.tar.gz", - "linux_url": "node-v22.16.0-linux-arm64.tar.xz", - "activated_path": "%installation_dir%/bin", - "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" - }, - - - { - "id": "python", - "version": "3.9.2-nuget", - "bitness": 64, - "arch": "x86_64", - "windows_url": "python-3.9.2-4-amd64+pywin32.zip", - "activated_cfg": "PYTHON='%installation_dir%/python.exe'", - "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe" - }, - { - "id": "python", - "version": "3.9.2", - "bitness": 64, - "arch": "x86_64", - "windows_url": "python-3.9.2-1-embed-amd64+pywin32.zip", - "activated_cfg": "PYTHON='%installation_dir%/python.exe'", - "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe" - }, - { - "id": "python", - "version": "3.9.2", - "bitness": 64, - "arch": "x86_64", - "macos_url": "python-3.9.2-3-macos-x86_64.tar.gz", - "activated_cfg": "PYTHON='%installation_dir%/bin/python3'", - "activated_env": "EMSDK_PYTHON=%installation_dir%/bin/python3;SSL_CERT_FILE=%installation_dir%/lib/python3.9/site-packages/certifi/cacert.pem" - }, - { - "id": "python", - "version": "3.9.2", - "bitness": 64, - "arch": "arm64", - "macos_url": "python-3.9.2-1-macos-arm64.tar.gz", - "activated_cfg": "PYTHON='%installation_dir%/bin/python3'", - "activated_env": "EMSDK_PYTHON=%installation_dir%/bin/python3;SSL_CERT_FILE=%installation_dir%/lib/python3.9/site-packages/certifi/cacert.pem" - }, - - { - "id": "python", - "version": "3.13.3", - "bitness": 64, - "arch": "x86_64", - "windows_url": "python-3.13.3-0-win-amd64.zip", - "activated_cfg": "PYTHON='%installation_dir%/python.exe'", - "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe" - }, - { - "id": "python", - "version": "3.13.3", - "bitness": 64, - "arch": "arm64", - "windows_url": "python-3.13.3-0-win-arm64.zip", - "activated_cfg": "PYTHON='%installation_dir%/python.exe'", - "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe" - }, - { - "id": "python", - "version": "3.13.3", - "bitness": 64, - "arch": "x86_64", - "macos_url": "python-3.13.3-0-macos-x86_64.tar.gz", - "activated_cfg": "PYTHON='%installation_dir%/bin/python3'", - "activated_env": "EMSDK_PYTHON=%installation_dir%/bin/python3;SSL_CERT_FILE=%installation_dir%/lib/python3.13/site-packages/certifi/cacert.pem" - }, - { - "id": "python", - "version": "3.13.3", - "bitness": 64, - "arch": "arm64", - "macos_url": "python-3.13.3-0-macos-arm64.tar.gz", - "activated_cfg": "PYTHON='%installation_dir%/bin/python3'", - "activated_env": "EMSDK_PYTHON=%installation_dir%/bin/python3;SSL_CERT_FILE=%installation_dir%/lib/python3.13/site-packages/certifi/cacert.pem" - }, - - { - "id": "emscripten", - "version": "tag-%tag%", - "bitness": 32, - "append_bitness": false, - "windows_url": "https://github.com/emscripten-core/emscripten/archive/%tag%.zip", - "unix_url": "https://github.com/emscripten-core/emscripten/archive/%tag%.tar.gz", - "download_prefix": "emscripten-e", - "activated_cfg": "EMSCRIPTEN_ROOT='%installation_dir%'", - "activated_path": "%installation_dir%", - "activated_env": "EMSCRIPTEN=%installation_dir%", - "custom_install_script": "emscripten_npm_install" - }, - { - "id": "emscripten", - "version": "tag-%tag%", - "bitness": 64, - "append_bitness": false, - "windows_url": "https://github.com/emscripten-core/emscripten/archive/%tag%.zip", - "unix_url": "https://github.com/emscripten-core/emscripten/archive/%tag%.tar.gz", - "activated_cfg": "EMSCRIPTEN_ROOT='%installation_dir%'", - "activated_path": "%installation_dir%", - "activated_env": "EMSCRIPTEN=%installation_dir%", - "custom_install_script": "emscripten_npm_install" - }, - { - "id": "emscripten", - "version": "%precompiled_tag%", - "windows_url": "https://github.com/emscripten-core/emscripten/archive/%precompiled_tag%.zip", - "unix_url": "https://github.com/emscripten-core/emscripten/archive/%precompiled_tag%.tar.gz", - "activated_cfg": "EMSCRIPTEN_ROOT='%installation_dir%'", - "activated_path": "%installation_dir%", - "activated_env": "EMSCRIPTEN=%installation_dir%" - }, - { - "id": "binaryen", - "version": "tag-%binaryen_tag%", - "bitness": 32, - "append_bitness": false, - "windows_url": "https://github.com/WebAssembly/binaryen/archive/%binaryen_tag%.zip", - "unix_url": "https://github.com/WebAssembly/binaryen/archive/%binaryen_tag%.tar.gz", - "download_prefix": "binaryen-e", - "activated_cfg": "BINARYEN_ROOT='%installation_dir%%generator_prefix%_64bit_binaryen'", - "activated_path": "%installation_dir%%generator_prefix%_64bit_binaryen/bin", - "activated_env": "BINARYEN_ROOT=%installation_dir%%generator_prefix%_64bit_binaryen", - "cmake_build_type": "Release", - "custom_install_script": "build_binaryen", - "custom_is_installed_script": "is_binaryen_installed", - "custom_uninstall_script": "uninstall_binaryen" - }, - { - "id": "binaryen", - "version": "tag-%binaryen_tag%", - "bitness": 64, - "append_bitness": false, - "windows_url": "https://github.com/WebAssembly/binaryen/archive/%binaryen_tag%.zip", - "unix_url": "https://github.com/WebAssembly/binaryen/archive/%binaryen_tag%.tar.gz", - "download_prefix": "binaryen-e", - "activated_cfg": "BINARYEN_ROOT='%installation_dir%%generator_prefix%_64bit_binaryen'", - "activated_path": "%installation_dir%%generator_prefix%_64bit_binaryen/bin", - "activated_env": "BINARYEN_ROOT=%installation_dir%%generator_prefix%_64bit_binaryen", - "cmake_build_type": "Release", - "custom_install_script": "build_binaryen", - "custom_is_installed_script": "is_binaryen_installed", - "custom_uninstall_script": "uninstall_binaryen" - }, - { - "id": "emscripten", - "version": "main", - "bitness": 32, - "append_bitness": false, - "url": "https://github.com/emscripten-core/emscripten.git", - "git_branch": "main", - "activated_cfg": "EMSCRIPTEN_ROOT='%installation_dir%'", - "activated_path": "%installation_dir%", - "activated_env": "EMSCRIPTEN=%installation_dir%", - "cmake_build_type": "Release", - "custom_install_script": "emscripten_npm_install" - }, - { - "id": "emscripten", - "version": "main", - "bitness": 64, - "append_bitness": false, - "url": "https://github.com/emscripten-core/emscripten.git", - "git_branch": "main", - "activated_cfg": "EMSCRIPTEN_ROOT='%installation_dir%'", - "activated_path": "%installation_dir%", - "activated_env": "EMSCRIPTEN=%installation_dir%", - "cmake_build_type": "Release", - "custom_install_script": "emscripten_npm_install" - }, - { - "id": "binaryen", - "version": "main", - "bitness": 32, - "append_bitness": false, - "url": "https://github.com/WebAssembly/binaryen.git", - "git_branch": "main", - "activated_cfg": "BINARYEN_ROOT='%installation_dir%%generator_prefix%_32bit_binaryen'", - "activated_path": "%installation_dir%%generator_prefix%_32bit_binaryen/bin", - "activated_env": "BINARYEN_ROOT=%installation_dir%%generator_prefix%_32bit_binaryen", - "cmake_build_type": "Release", - "custom_install_script": "build_binaryen", - "custom_is_installed_script": "is_binaryen_installed", - "custom_uninstall_script": "uninstall_binaryen" - }, - { - "id": "binaryen", - "version": "main", - "bitness": 64, - "append_bitness": false, - "url": "https://github.com/WebAssembly/binaryen.git", - "git_branch": "main", - "activated_cfg": "BINARYEN_ROOT='%installation_dir%%generator_prefix%_64bit_binaryen'", - "activated_path": "%installation_dir%%generator_prefix%_64bit_binaryen/bin", - "activated_env": "BINARYEN_ROOT=%installation_dir%%generator_prefix%_64bit_binaryen", - "cmake_build_type": "Release", - "custom_install_script": "build_binaryen", - "custom_is_installed_script": "is_binaryen_installed", - "custom_uninstall_script": "uninstall_binaryen" - }, - { - "id": "mingw", - "version": "7.1.0", - "bitness": 64, - "windows_url": "mingw_7.1.0_64bit.zip", - "activated_cfg": "MINGW_ROOT='%installation_dir%'", - "activated_path": "%installation_dir%/bin" - }, - { - "id": "ninja", - "version": "git-release", - "bitness": 64, - "url": "https://github.com/ninja-build/ninja.git", - "git_branch": "release", - "activated_cfg": "NINJA=%installation_dir%/bin", - "activated_path": "%installation_dir%/bin", - "cmake_build_type": "Release", - "custom_install_script": "build_ninja" - }, - { - "id": "ccache", - "version": "git-emscripten", - "bitness": 64, - "url": "https://github.com/juj/ccache.git", - "git_branch": "emscripten", - "activated_path": "%installation_dir%/bin", - "activated_env": "_EMCC_CCACHE=1;CCACHE_CONFIGPATH=%installation_dir%/emcc_ccache.conf", - "cmake_build_type": "Release", - "custom_install_script": "build_ccache" - } - ], - - "sdks": [ - { - "version": "main", - "bitness": 64, - "uses": ["python-3.13.3-64bit", "llvm-git-main-64bit", "node-22.16.0-64bit", "emscripten-main-64bit", "binaryen-main-64bit"], - "os": "win" - }, - { - "version": "main", - "bitness": 64, - "uses": ["python-3.13.3-64bit", "llvm-git-main-64bit", "node-22.16.0-64bit", "emscripten-main-64bit", "binaryen-main-64bit"], - "os": "macos" - }, - { - "version": "main", - "bitness": 64, - "uses": ["llvm-git-main-64bit", "node-22.16.0-64bit", "emscripten-main-64bit", "binaryen-main-64bit"], - "os": "linux" - }, - { - "version": "main", - "bitness": 32, - "uses": ["llvm-git-main-32bit", "emscripten-main-32bit", "binaryen-main-32bit"], - "os": "linux" - }, - { - "version": "releases-%releases-tag%", - "bitness": 64, - "uses": ["node-22.16.0-64bit", "releases-%releases-tag%-64bit"], - "os": "linux", - "custom_install_script": "emscripten_npm_install" - }, - { - "version": "releases-%releases-tag%", - "bitness": 64, - "uses": ["node-22.16.0-64bit", "python-3.13.3-64bit", "releases-%releases-tag%-64bit"], - "os": "macos", - "arch": "x86_64", - "custom_install_script": "emscripten_npm_install" - }, - { - "version": "releases-%releases-tag%", - "bitness": 64, - "uses": ["node-22.16.0-64bit", "python-3.13.3-64bit", "releases-%releases-tag%-64bit"], - "os": "macos", - "arch": "arm64", - "custom_install_script": "emscripten_npm_install" - }, - { - "version": "releases-%releases-tag%", - "bitness": 64, - "uses": ["node-22.16.0-64bit", "python-3.13.3-64bit", "releases-%releases-tag%-64bit"], - "os": "win", - "custom_install_script": "emscripten_npm_install" - } - ] -} diff --git a/emsdk-cache/emsdk-main/legacy-binaryen-tags.txt b/emsdk-cache/emsdk-main/legacy-binaryen-tags.txt deleted file mode 100644 index 06d436c1a..000000000 --- a/emsdk-cache/emsdk-main/legacy-binaryen-tags.txt +++ /dev/null @@ -1,86 +0,0 @@ -1.36.2 -1.36.3 -1.36.4 -1.36.5 -1.36.6 -1.36.7 -1.36.8 -1.36.9 -1.36.10 -1.36.11 -1.36.12 -1.36.13 -1.36.14 -1.37.0 -1.37.1 -1.37.2 -1.37.3 -1.37.4 -1.37.5 -1.37.6 -1.37.7 -1.37.8 -1.37.9 -1.37.10 -1.37.11 -1.37.12 -1.37.13 -1.37.14 -1.37.15 -1.37.16 -1.37.17 -1.37.18 -1.37.19 -1.37.20 -1.37.21 -1.37.22 -1.37.23 -1.37.24 -1.37.25 -1.37.26 -1.37.27 -1.37.28 -1.37.29 -1.37.30 -1.37.31 -1.37.32 -1.37.33 -1.37.34 -1.37.35 -1.37.36 -1.37.37 -1.37.38 -1.37.39 -1.37.40 -1.38.0 -1.38.1 -1.38.2 -1.38.3 -1.38.4 -1.38.5 -1.38.6 -1.38.7 -1.38.8 -1.38.9 -1.38.10 -1.38.11 -1.38.12 -1.38.13 -1.38.14 -1.38.15 -1.38.16 -1.38.17 -1.38.18 -1.38.19 -1.38.20 -1.38.21 -1.38.22 -1.38.23 -1.38.24 -1.38.25 -1.38.26 -1.38.27 -1.38.28 -1.38.29 -1.38.30 -1.38.31 \ No newline at end of file diff --git a/emsdk-cache/emsdk-main/legacy-emscripten-tags.txt b/emsdk-cache/emsdk-main/legacy-emscripten-tags.txt deleted file mode 100644 index 20069291a..000000000 --- a/emsdk-cache/emsdk-main/legacy-emscripten-tags.txt +++ /dev/null @@ -1,159 +0,0 @@ -1.28.2 -1.28.3 -1.29.0 -1.29.1 -1.29.2 -1.29.3 -1.29.4 -1.29.5 -1.29.6 -1.29.7 -1.29.8 -1.29.9 -1.29.10 -1.29.11 -1.29.12 -1.30.0 -1.30.1 -1.30.2 -1.30.3 -1.30.4 -1.30.5 -1.30.6 -1.31.0 -1.31.1 -1.31.2 -1.31.3 -1.32.0 -1.32.1 -1.32.2 -1.32.3 -1.32.4 -1.33.0 -1.33.1 -1.33.2 -1.34.0 -1.34.1 -1.34.2 -1.34.3 -1.34.4 -1.34.5 -1.34.6 -1.34.7 -1.34.8 -1.34.9 -1.34.10 -1.34.11 -1.34.12 -1.35.0 -1.35.1 -1.35.2 -1.35.3 -1.35.4 -1.35.5 -1.35.6 -1.35.7 -1.35.8 -1.35.9 -1.35.10 -1.35.11 -1.35.12 -1.35.13 -1.35.14 -1.35.15 -1.35.16 -1.35.17 -1.35.18 -1.35.19 -1.35.20 -1.35.21 -1.35.22 -1.35.23 -1.36.0 -1.36.1 -1.36.2 -1.36.3 -1.36.4 -1.36.5 -1.36.6 -1.36.7 -1.36.8 -1.36.9 -1.36.10 -1.36.11 -1.36.12 -1.36.13 -1.36.14 -1.37.0 -1.37.1 -1.37.2 -1.37.3 -1.37.4 -1.37.5 -1.37.6 -1.37.7 -1.37.8 -1.37.9 -1.37.10 -1.37.11 -1.37.12 -1.37.13 -1.37.14 -1.37.15 -1.37.16 -1.37.17 -1.37.18 -1.37.19 -1.37.20 -1.37.21 -1.37.22 -1.37.23 -1.37.24 -1.37.25 -1.37.26 -1.37.27 -1.37.28 -1.37.29 -1.37.30 -1.37.31 -1.37.32 -1.37.33 -1.37.34 -1.37.35 -1.37.36 -1.37.37 -1.37.38 -1.37.39 -1.37.40 -1.38.0 -1.38.1 -1.38.2 -1.38.3 -1.38.4 -1.38.5 -1.38.6 -1.38.7 -1.38.8 -1.38.9 -1.38.10 -1.38.11 -1.38.12 -1.38.13 -1.38.14 -1.38.15 -1.38.16 -1.38.17 -1.38.18 -1.38.19 -1.38.20 -1.38.21 -1.38.22 -1.38.23 -1.38.24 -1.38.25 -1.38.26 -1.38.27 -1.38.28 -1.38.29 -1.38.30 -1.38.31 \ No newline at end of file diff --git a/emsdk-cache/emsdk-main/llvm-tags-64bit.txt b/emsdk-cache/emsdk-main/llvm-tags-64bit.txt deleted file mode 100644 index 7920f38fd..000000000 --- a/emsdk-cache/emsdk-main/llvm-tags-64bit.txt +++ /dev/null @@ -1,75 +0,0 @@ -emscripten-llvm-e1.38.9.tar.gz -emscripten-llvm-e1.38.8.tar.gz -emscripten-llvm-e1.38.7.tar.gz -emscripten-llvm-e1.38.6.tar.gz -emscripten-llvm-e1.38.5.tar.gz -emscripten-llvm-e1.38.4.tar.gz -emscripten-llvm-e1.38.31.tar.gz -emscripten-llvm-e1.38.30.tar.gz -emscripten-llvm-e1.38.3.tar.gz -emscripten-llvm-e1.38.29.tar.gz -emscripten-llvm-e1.38.28.tar.gz -emscripten-llvm-e1.38.27.tar.gz -emscripten-llvm-e1.38.26.tar.gz -emscripten-llvm-e1.38.25.tar.gz -emscripten-llvm-e1.38.24.tar.gz -emscripten-llvm-e1.38.23.tar.gz -emscripten-llvm-e1.38.22.tar.gz -emscripten-llvm-e1.38.21.tar.gz -emscripten-llvm-e1.38.20.tar.gz -emscripten-llvm-e1.38.2.tar.gz -emscripten-llvm-e1.38.19.tar.gz -emscripten-llvm-e1.38.18.tar.gz -emscripten-llvm-e1.38.17.tar.gz -emscripten-llvm-e1.38.16.tar.gz -emscripten-llvm-e1.38.15.tar.gz -emscripten-llvm-e1.38.14.tar.gz -emscripten-llvm-e1.38.13.tar.gz -emscripten-llvm-e1.38.12.tar.gz -emscripten-llvm-e1.38.11.tar.gz -emscripten-llvm-e1.38.10.tar.gz -emscripten-llvm-e1.38.1.tar.gz -emscripten-llvm-e1.38.0.tar.gz -emscripten-llvm-e1.37.9.tar.gz -emscripten-llvm-e1.37.8.tar.gz -emscripten-llvm-e1.37.7.tar.gz -emscripten-llvm-e1.37.6.tar.gz -emscripten-llvm-e1.37.5.tar.gz -emscripten-llvm-e1.37.40.tar.gz -emscripten-llvm-e1.37.4.tar.gz -emscripten-llvm-e1.37.39.tar.gz -emscripten-llvm-e1.37.38.tar.gz -emscripten-llvm-e1.37.37.tar.gz -emscripten-llvm-e1.37.36.tar.gz -emscripten-llvm-e1.37.35.tar.gz -emscripten-llvm-e1.37.34.tar.gz -emscripten-llvm-e1.37.33.tar.gz -emscripten-llvm-e1.37.32.tar.gz -emscripten-llvm-e1.37.31.tar.gz -emscripten-llvm-e1.37.30.tar.gz -emscripten-llvm-e1.37.3.tar.gz -emscripten-llvm-e1.37.29.tar.gz -emscripten-llvm-e1.37.28.tar.gz -emscripten-llvm-e1.37.27.tar.gz -emscripten-llvm-e1.37.26.tar.gz -emscripten-llvm-e1.37.25.tar.gz -emscripten-llvm-e1.37.24.tar.gz -emscripten-llvm-e1.37.23.tar.gz -emscripten-llvm-e1.37.22.tar.gz -emscripten-llvm-e1.37.21.tar.gz -emscripten-llvm-e1.37.20.tar.gz -emscripten-llvm-e1.37.2.tar.gz -emscripten-llvm-e1.37.19.tar.gz -emscripten-llvm-e1.37.18.tar.gz -emscripten-llvm-e1.37.17.tar.gz -emscripten-llvm-e1.37.16.tar.gz -emscripten-llvm-e1.37.15.tar.gz -emscripten-llvm-e1.37.14.tar.gz -emscripten-llvm-e1.37.13.tar.gz -emscripten-llvm-e1.37.12.tar.gz -emscripten-llvm-e1.37.11.tar.gz -emscripten-llvm-e1.37.10.tar.gz -emscripten-llvm-e1.37.1.tar.gz -emscripten-llvm-e1.37.0.tar.gz -emscripten-llvm-e1.36.14.tar.gz -emscripten-llvm-e1.36.13.tar.gz diff --git a/emsdk-cache/emsdk-main/scripts/create_release.py b/emsdk-cache/emsdk-main/scripts/create_release.py deleted file mode 100644 index 425f7d723..000000000 --- a/emsdk-cache/emsdk-main/scripts/create_release.py +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python3 - -import argparse -import json -import os -import re -import subprocess -import sys -from collections import OrderedDict - -script_dir = os.path.dirname(os.path.abspath(__file__)) -root_dir = os.path.dirname(script_dir) -sys.path.append(root_dir) - -import emsdk # noqa - - -def version_key(version_string): - parts = re.split('[.-]', version_string) - key = [[int(part) for part in parts[:3]], -len(parts), parts[3:]] - return key - - -def main(): - if subprocess.check_output(['git', 'status', '--porcelain'], cwd=root_dir).strip(): - print('tree is not clean') - sys.exit(1) - - parser = argparse.ArgumentParser() - parser.add_argument('-r', '--release-hash') - parser.add_argument('-a', '--asserts-hash') - parser.add_argument('-v', '--new-version') - parser.add_argument('--gh-action', action='store_true') - options = parser.parse_args() - - release_info = emsdk.load_releases_info() - if options.new_version: - new_version = options.new_version - else: - new_version = version_key(release_info['aliases']['latest'])[0] - new_version[-1] += 1 - new_version = '.'.join(str(part) for part in new_version) - - asserts_hash = None - if options.release_hash: - new_hash = options.release_hash - asserts_hash = options.asserts_hash - else: - new_hash = emsdk.get_emscripten_releases_tot() - - print('Creating new release: %s -> %s' % (new_version, new_hash)) - release_info['releases'][new_version] = new_hash - if asserts_hash: - asserts_name = new_version + '-asserts' - release_info['releases'][asserts_name] = asserts_hash - - releases = [(k, v) for k, v in release_info['releases'].items()] - releases.sort(key=lambda pair: version_key(pair[0])) - - release_info['releases'] = OrderedDict(reversed(releases)) - release_info['aliases']['latest'] = new_version - - with open(os.path.join(root_dir, 'emscripten-releases-tags.json'), 'w') as f: - f.write(json.dumps(release_info, indent=2)) - f.write('\n') - - subprocess.check_call( - [sys.executable, os.path.join(script_dir, 'update_bazel_workspace.py')], - cwd=root_dir) - - branch_name = 'version_' + new_version - - if options.gh_action: # For GitHub Actions workflows - with open(os.environ['GITHUB_ENV'], 'a') as f: - f.write(f'RELEASE_VERSION={new_version}') - else: # Local use - # Create a new git branch - subprocess.check_call(['git', 'checkout', '-b', branch_name, 'origin/main'], cwd=root_dir) - - # Create auto-generated changes to the new git branch - subprocess.check_call(['git', 'add', '-u', '.'], cwd=root_dir) - subprocess.check_call(['git', 'commit', '-m', new_version], cwd=root_dir) - print('New release created in branch: `%s`' % branch_name) - - # Push new branch to origin - subprocess.check_call(['git', 'push', 'origin', branch_name], cwd=root_dir) - - return 0 - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/emsdk-cache/emsdk-main/scripts/get_emscripten_revision_info.py b/emsdk-cache/emsdk-main/scripts/get_emscripten_revision_info.py deleted file mode 100644 index d0ad76eab..000000000 --- a/emsdk-cache/emsdk-main/scripts/get_emscripten_revision_info.py +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env python3 - -import json -import os -import subprocess -import sys - -EMSCRIPTEN_RELEASES_GIT = 'https://chromium.googlesource.com/emscripten-releases' -TAGFILE = 'emscripten-releases-tags.json' - - -def get_latest_hash(tagfile): - with open(tagfile) as f: - versions = json.load(f) - latest = versions['aliases']['latest'] - return versions['releases'][latest] - - -def get_latest_emscripten(tagfile): - latest = get_latest_hash(tagfile) - if not os.path.isdir('emscripten-releases'): - subprocess.run(['git', 'clone', EMSCRIPTEN_RELEASES_GIT, '--depth', - '100'], check=True) - # This will fail if the 'latest' revision is not within the most recent - # 100 commits; but that shouldn't happen because this script is intended - # to be run right after a release is added. - info = subprocess.run(['emscripten-releases/src/release-info.py', - 'emscripten-releases', latest], - stdout=subprocess.PIPE, check=True, text=True).stdout - for line in info.split('\n'): - tokens = line.split() - if len(tokens) and tokens[0] == 'emscripten': - return tokens[2] - - -if __name__ == '__main__': - emscripten_hash = get_latest_emscripten(TAGFILE) - print('Emscripten revision ' + emscripten_hash) - if 'GITHUB_ENV' in os.environ: - with open(os.environ['GITHUB_ENV'], 'a') as f: - f.write(f'EMSCRIPTEN_HASH={emscripten_hash}') - sys.exit(0) - print('Not a GitHub Action') - sys.exit(1) diff --git a/emsdk-cache/emsdk-main/scripts/get_release_info.py b/emsdk-cache/emsdk-main/scripts/get_release_info.py deleted file mode 100644 index 016a0aec7..000000000 --- a/emsdk-cache/emsdk-main/scripts/get_release_info.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python3 - -import json -import sys - - -def get_latest(tagfile): - with open(tagfile) as f: - versions = json.load(f) - print(versions['aliases']['latest']) - return 0 - - -def get_hash(tagfile, version): - with open(tagfile) as f: - versions = json.load(f) - print(versions['releases'][version]) - return 0 - - -if __name__ == '__main__': - if sys.argv[2] == 'latest': - sys.exit(get_latest(sys.argv[1])) - if sys.argv[2] == 'hash': - sys.exit(get_hash(sys.argv[1], sys.argv[3])) diff --git a/emsdk-cache/emsdk-main/scripts/update_bazel_workspace.py b/emsdk-cache/emsdk-main/scripts/update_bazel_workspace.py deleted file mode 100644 index 637c35511..000000000 --- a/emsdk-cache/emsdk-main/scripts/update_bazel_workspace.py +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env python3 -# This script will update emsdk/bazel/revisions.bzl to the latest version of -# emscripten. It reads emsdk/emscripten-releases-tags.json to get the latest -# version number. Then, it downloads the prebuilts for that version and computes -# the sha256sum for the archive. It then puts all this information into the -# emsdk/bazel/revisions.bzl file. - -import hashlib -import json -import os -import re -import requests -import sys - -STORAGE_URL = 'https://storage.googleapis.com/webassembly/emscripten-releases-builds' - -EMSDK_ROOT = os.path.dirname(os.path.dirname(__file__)) -RELEASES_TAGS_FILE = EMSDK_ROOT + '/emscripten-releases-tags.json' -BAZEL_REVISIONS_FILE = EMSDK_ROOT + '/bazel/revisions.bzl' -BAZEL_MODULE_FILE = EMSDK_ROOT + '/bazel/MODULE.bazel' - - -def get_latest_info(): - with open(RELEASES_TAGS_FILE) as f: - info = json.load(f) - latest = info['aliases']['latest'] - return latest, info['releases'][latest] - - -def get_sha(platform, archive_fmt, latest_hash, arch_suffix=''): - r = requests.get(f'{STORAGE_URL}/{platform}/{latest_hash}/wasm-binaries{arch_suffix}.{archive_fmt}') - r.raise_for_status() - print(f'Fetching {r.url}') - h = hashlib.new('sha256') - for chunk in r.iter_content(chunk_size=1024): - h.update(chunk) - return h.hexdigest() - - -def revisions_item(version, latest_hash): - return f'''\ - "{version}": struct( - hash = "{latest_hash}", - sha_linux = "{get_sha('linux', 'tar.xz', latest_hash)}", - sha_linux_arm64 = "{get_sha('linux', 'tar.xz', latest_hash, '-arm64')}", - sha_mac = "{get_sha('mac', 'tar.xz', latest_hash)}", - sha_mac_arm64 = "{get_sha('mac', 'tar.xz', latest_hash, '-arm64')}", - sha_win = "{get_sha('win', 'zip', latest_hash)}", - ), -''' - - -def insert_revision(item): - with open(BAZEL_REVISIONS_FILE, 'r') as f: - lines = f.readlines() - - lines.insert(lines.index('EMSCRIPTEN_TAGS = {\n') + 1, item) - - with open(BAZEL_REVISIONS_FILE, 'w') as f: - f.write(''.join(lines)) - - -def update_module_version(version): - with open(BAZEL_MODULE_FILE, 'r') as f: - content = f.read() - - pattern = r'(module\(\s*name = "emsdk",\s*version = )"\d+.\d+.\d+",\n\)' - # Verify that the pattern exists in the input since re.sub will - # will succeed either way. - assert re.search(pattern, content) - content = re.sub(pattern, fr'\1"{version}",\n)', content) - - with open(BAZEL_MODULE_FILE, 'w') as f: - f.write(content) - - -def main(argv): - version, latest_hash = get_latest_info() - update_module_version(version) - item = revisions_item(version, latest_hash) - print('inserting item:') - print(item) - insert_revision(item) - - -if __name__ == '__main__': - sys.exit(main(sys.argv)) diff --git a/emsdk-cache/emsdk-main/scripts/update_node.py b/emsdk-cache/emsdk-main/scripts/update_node.py deleted file mode 100644 index 722b6ff5c..000000000 --- a/emsdk-cache/emsdk-main/scripts/update_node.py +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env python3 -# Copyright 2020 The Emscripten Authors. All rights reserved. -# Emscripten is available under two separate licenses, the MIT license and the -# University of Illinois/NCSA Open Source License. Both these licenses can be -# found in the LICENSE file. - -"""Updates the node binaries that we cache store at -http://storage.google.com/webassembly. - -For the windows version we also alter the directory layout to add the 'bin' -directory. -""" - -import urllib.request -import subprocess -import sys -import os -import shutil -from zip import unzip_cmd, zip_cmd - -version = '22.16.0' -base = f'https://nodejs.org/dist/v{version}/' -upload_base = 'gs://webassembly/emscripten-releases-builds/deps/' - -suffixes = [ - '-win-x86.zip', - '-win-x64.zip', - '-win-arm64.zip', - '-darwin-x64.tar.gz', - '-darwin-arm64.tar.gz', - '-linux-x64.tar.xz', - '-linux-arm64.tar.xz', - '-linux-armv7l.tar.xz', -] - -for suffix in suffixes: - filename = 'node-v%s%s' % (version, suffix) - download_url = base + filename - print('Downloading: ' + download_url) - urllib.request.urlretrieve(download_url, filename) - - if '-win-' in suffix: - subprocess.check_call(unzip_cmd() + [filename]) - dirname = os.path.splitext(os.path.basename(filename))[0] - shutil.move(dirname, 'bin') - os.mkdir(dirname) - shutil.move('bin', dirname) - os.remove(filename) - subprocess.check_call(zip_cmd() + [filename, dirname]) - shutil.rmtree(dirname) - - if '--upload' in sys.argv: - upload_url = upload_base + filename - print('Uploading: ' + upload_url) - cmd = ['gsutil', 'cp', '-n', filename, upload_url] - print(' '.join(cmd)) - subprocess.check_call(cmd) - os.remove(filename) diff --git a/emsdk-cache/emsdk-main/scripts/update_python.py b/emsdk-cache/emsdk-main/scripts/update_python.py deleted file mode 100644 index 98273f1e2..000000000 --- a/emsdk-cache/emsdk-main/scripts/update_python.py +++ /dev/null @@ -1,184 +0,0 @@ -#!/usr/bin/env python3 -# Copyright 2020 The Emscripten Authors. All rights reserved. -# Emscripten is available under two separate licenses, the MIT license and the -# University of Illinois/NCSA Open Source License. Both these licenses can be -# found in the LICENSE file. - -"""Updates the python binaries that we cache store at -http://storage.google.com/webassembly. - -We only supply binaries for windows and macOS, but we do it very different ways for those two OSes. -On Linux, we depend on the system version of python. - -Windows recipe: - 1. Download precompiled version of python from NuGet package manager, - either the package "python" for AMD64, or "pythonarm64" for ARM64. - 2. Set up pip and install pywin32 and psutil via pip for emrun to work. - 3. Re-zip and upload to storage.google.com - -macOS recipe: - 1. Clone cpython - 2. Use homebrew to install and configure openssl (for static linking!) - 3. Build cpython from source and use `make install` to create archive. -""" - -import glob -import multiprocessing -import os -import platform -import urllib.request -import shutil -import subprocess -import sys -from subprocess import check_call -from zip import unzip_cmd, zip_cmd - -version = '3.13.3' -major_minor_version = '.'.join(version.split('.')[:2]) # e.g. '3.9.2' -> '3.9' -# This is not part of official Python version, but a repackaging number appended by emsdk -# when a version of Python needs to be redownloaded. -revision = '0' - -PSUTIL = 'psutil==7.0.0' - -upload_base = 'gs://webassembly/emscripten-releases-builds/deps/' - - -# Detects whether current python interpreter architecture is ARM64 or AMD64 -# If running AMD64 python on an ARM64 Windows, this still intentionally returns AMD64 -def find_python_arch(): - import sysconfig - arch = sysconfig.get_platform().lower() - if 'amd64' in arch: - return 'amd64' - if 'arm64' in arch: - return 'arm64' - raise f'Unknown Python sysconfig platform "{arch}" (neither AMD64 or ARM64)' - - -def make_python_patch(): - python_arch = find_python_arch() - package_name = 'pythonarm64' if python_arch == 'arm64' else 'python' - download_url = f'https://www.nuget.org/api/v2/package/{package_name}/{version}' - filename = f'python-{version}-win-{python_arch}.zip' - out_filename = f'python-{version}-{revision}-win-{python_arch}.zip' - - if not os.path.exists(filename): - print(f'Downloading python: {download_url} to {filename}') - urllib.request.urlretrieve(download_url, filename) - - os.mkdir('python-nuget') - check_call(unzip_cmd() + [os.path.abspath(filename)], cwd='python-nuget') - os.remove(filename) - - src_dir = os.path.join('python-nuget', 'tools') - python_exe = os.path.join(src_dir, 'python.exe') - check_call([python_exe, '-m', 'ensurepip', '--upgrade']) - check_call([python_exe, '-m', 'pip', 'install', 'pywin32==310', '--no-warn-script-location']) - check_call([python_exe, '-m', 'pip', 'install', PSUTIL]) - - check_call(zip_cmd() + [os.path.join('..', '..', out_filename), '.'], cwd=src_dir) - print('Created: %s' % out_filename) - - # cleanup if everything went fine - shutil.rmtree('python-nuget') - - if '--upload' in sys.argv: - upload_url = upload_base + out_filename - print('Uploading: ' + upload_url) - cmd = ['gsutil', 'cp', '-n', out_filename, upload_url] - print(' '.join(cmd)) - check_call(cmd) - - -def build_python(): - if sys.platform.startswith('darwin'): - # Take some rather drastic steps to link openssl and liblzma statically - # and avoid linking libintl completely. - osname = 'macos' - check_call(['brew', 'install', 'openssl', 'xz', 'pkg-config']) - if platform.machine() == 'x86_64': - prefix = '/usr/local' - min_macos_version = '11.0' - elif platform.machine() == 'arm64': - prefix = '/opt/homebrew' - min_macos_version = '11.0' - - # Append '-x86_64' or '-arm64' depending on current arch. (TODO: Do - # this for Linux too, move this below?) - osname += '-' + platform.machine() - - for f in [os.path.join(prefix, 'lib', 'libintl.dylib'), - os.path.join(prefix, 'include', 'libintl.h'), - os.path.join(prefix, 'opt', 'xz', 'lib', 'liblzma.dylib'), - os.path.join(prefix, 'opt', 'openssl', 'lib', 'libssl.dylib'), - os.path.join(prefix, 'opt', 'openssl', 'lib', 'libcrypto.dylib')]: - if os.path.exists(f): - os.remove(f) - os.environ['PKG_CONFIG_PATH'] = os.path.join(prefix, 'opt', 'openssl', 'lib', 'pkgconfig') - else: - osname = 'linux' - - src_dir = 'cpython' - if os.path.exists(src_dir): - check_call(['git', 'fetch'], cwd=src_dir) - else: - check_call(['git', 'clone', 'https://github.com/python/cpython']) - check_call(['git', 'checkout', 'v' + version], cwd=src_dir) - - env = os.environ - if sys.platform.startswith('darwin'): - # Specify the min OS version we want the build to work on - min_macos_version_line = '-mmacosx-version-min=' + min_macos_version - build_flags = min_macos_version_line + ' -Werror=partial-availability' - # Build against latest SDK, but issue an error if using any API that would not work on the min OS version - env = env.copy() - env['MACOSX_DEPLOYMENT_TARGET'] = min_macos_version - configure_args = ['CFLAGS=' + build_flags, 'CXXFLAGS=' + build_flags, 'LDFLAGS=' + min_macos_version_line] - else: - configure_args = [] - check_call(['./configure'] + configure_args, cwd=src_dir, env=env) - check_call(['make', '-j', str(multiprocessing.cpu_count())], cwd=src_dir, env=env) - check_call(['make', 'install', 'DESTDIR=install'], cwd=src_dir, env=env) - - install_dir = os.path.join(src_dir, 'install') - - # Install requests module. This is needed in particular on macOS to ensure - # SSL certificates are available (certifi in installed and used by requests). - pybin = os.path.join(src_dir, 'install', 'usr', 'local', 'bin', 'python3') - pip = os.path.join(src_dir, 'install', 'usr', 'local', 'bin', 'pip3') - check_call([pybin, '-m', 'ensurepip', '--upgrade']) - check_call([pybin, pip, 'install', 'requests==2.32.3']) - - # Install psutil module. This is needed by emrun to track when browser - # process quits. - check_call([pybin, pip, 'install', PSUTIL]) - - dirname = 'python-%s-%s' % (version, revision) - if os.path.isdir(dirname): - print('Erasing old build directory ' + dirname) - shutil.rmtree(dirname) - os.rename(os.path.join(install_dir, 'usr', 'local'), dirname) - tarball = 'python-%s-%s-%s.tar.gz' % (version, revision, osname) - shutil.rmtree(os.path.join(dirname, 'lib', 'python' + major_minor_version, 'test')) - shutil.rmtree(os.path.join(dirname, 'include')) - for lib in glob.glob(os.path.join(dirname, 'lib', 'lib*.a')): - os.remove(lib) - check_call(['tar', 'zcvf', tarball, dirname]) - - print('Created: %s' % tarball) - if '--upload' in sys.argv: - print('Uploading: ' + upload_base + tarball) - check_call(['gsutil', 'cp', '-n', tarball, upload_base + tarball]) - - -def main(): - if sys.platform.startswith('win') or '--win32' in sys.argv: - make_python_patch() - else: - build_python() - return 0 - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/emsdk-cache/emsdk-main/scripts/zip.py b/emsdk-cache/emsdk-main/scripts/zip.py deleted file mode 100644 index 1b52a81e5..000000000 --- a/emsdk-cache/emsdk-main/scripts/zip.py +++ /dev/null @@ -1,19 +0,0 @@ -import os - - -def unzip_cmd(): - # Use 7-Zip if available (https://www.7-zip.org/) - sevenzip = os.path.join(os.getenv('ProgramFiles', ''), '7-Zip', '7z.exe') - if os.path.isfile(sevenzip): - return [sevenzip, 'x'] - # Fall back to 'unzip' tool - return ['unzip', '-q'] - - -def zip_cmd(): - # Use 7-Zip if available (https://www.7-zip.org/) - sevenzip = os.path.join(os.getenv('ProgramFiles', ''), '7-Zip', '7z.exe') - if os.path.isfile(sevenzip): - return [sevenzip, 'a', '-mx9'] - # Fall back to 'zip' tool - return ['zip', '-rq'] diff --git a/emsdk-cache/emsdk-main/test/test.bat b/emsdk-cache/emsdk-main/test/test.bat deleted file mode 100644 index c39bb3c19..000000000 --- a/emsdk-cache/emsdk-main/test/test.bat +++ /dev/null @@ -1,7 +0,0 @@ -:: equivalent of test.sh as windows bat file -set PATH=%PATH%;%PYTHON_BIN% -CALL emsdk install latest -CALL emsdk activate latest -CALL emsdk_env.bat -CALL python -c "import sys; print(sys.executable)" -CALL emcc.bat -v diff --git a/emsdk-cache/emsdk-main/test/test.py b/emsdk-cache/emsdk-main/test/test.py deleted file mode 100644 index e835ebf26..000000000 --- a/emsdk-cache/emsdk-main/test/test.py +++ /dev/null @@ -1,279 +0,0 @@ -#!/usr/bin/env python3 -import json -import os -import platform -import shutil -import subprocess -import sys -import tempfile -import unittest - -WINDOWS = sys.platform.startswith('win') -MACOS = sys.platform == 'darwin' -MACOS_ARM64 = MACOS and platform.machine() == 'arm64' - -emconfig = os.path.abspath('.emscripten') -assert os.path.exists(emconfig) - -upstream_emcc = os.path.join('upstream', 'emscripten', 'emcc') -emsdk = './emsdk' -if WINDOWS: - upstream_emcc += '.bat' - emsdk = 'emsdk.bat' -else: - emsdk = './emsdk' - -# Utilities - - -def listify(x): - if type(x) in {list, tuple}: - return x - return [x] - - -def check_call(cmd, **args): - if type(cmd) is not list: - cmd = cmd.split() - print('running: %s' % cmd) - args['universal_newlines'] = True - subprocess.check_call(cmd, **args) - - -def checked_call_with_output(cmd, expected=None, unexpected=None, stderr=None, env=None): - cmd = cmd.split(' ') - print('running: %s' % cmd) - try: - stdout = subprocess.check_output(cmd, stderr=stderr, universal_newlines=True, env=env) - except subprocess.CalledProcessError as e: - print(e.stderr) - print(e.stdout) - raise e - - if expected: - for x in listify(expected): - assert x in stdout, 'expected output missing: ' + stdout + '\n[[[' + x + ']]]' - if unexpected: - for x in listify(unexpected): - assert x not in stdout, 'unexpected output present: ' + stdout + '\n[[[' + x + ']]]' - - -def failing_call_with_output(cmd, expected, env=None): - proc = subprocess.Popen(cmd.split(' '), stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, env=env) - stdout, stderr = proc.communicate() - if WINDOWS: - print('warning: skipping part of failing_call_with_output() due to error codes not being propagated (see #592)') - else: - assert proc.returncode, 'call must have failed: ' + str([stdout, '\n========\n', stderr]) - assert expected in stdout or expected in stderr, 'call did not have the expected output: %s: %s' % (expected, str([stdout, '\n========\n', stderr])) - - -def hack_emsdk(marker, replacement): - with open('emsdk.py') as f: - src = f.read() - assert marker in src - src = src.replace(marker, replacement) - name = '__test_emsdk' - with open(name, 'w') as f: - f.write(src) - return name - - -# Set up - -TAGS = json.loads(open('emscripten-releases-tags.json').read()) - -# Tests - - -def do_lib_building(emcc): - cache_building_messages = ['generating system library: '] - - def do_build(args, is_expected=None): - unexpected = None - expected = None - if is_expected is True: - expected = cache_building_messages - elif is_expected is False: - unexpected = cache_building_messages - checked_call_with_output(emcc + ' hello_world.c' + args, - expected=expected, - unexpected=unexpected, - stderr=subprocess.STDOUT) - - # The emsdk ships all system libraries so we don't expect to see any - # cache population unless we explicly --clear-cache. - do_build('', is_expected=False) - check_call(emcc + ' --clear-cache') - do_build(' -O2', is_expected=True) - # Do another build at -O0. In nwers SDK versions this generates - # different libs, but not in older ones so don't assert here. - do_build('') - # Now verify that libs are *not* build - do_build(' -s WASM=0', is_expected=False) - do_build(' -O2 -s WASM=0', is_expected=False) - - -def run_emsdk(cmd): - if type(cmd) is not list: - cmd = cmd.split() - check_call([emsdk] + cmd) - - -class Emsdk(unittest.TestCase): - @classmethod - def setUpClass(cls): - with open('hello_world.c', 'w') as f: - f.write('''\ -#include - -int main() { - printf("Hello, world!\\n"); - return 0; -} -''') - - def setUp(self): - run_emsdk('install latest') - run_emsdk('activate latest') - - def test_unknown_arch(self): - env = os.environ.copy() - env['EMSDK_ARCH'] = 'mips' - failing_call_with_output(emsdk + ' install latest', - expected='unknown machine architecture: mips', - env=env) - - def test_wrong_bitness(self): - env = os.environ.copy() - env['EMSDK_ARCH'] = 'x86' - failing_call_with_output(emsdk + ' install sdk-latest-64bit', - expected='is only provided for 64-bit OSe', - env=env) - - def test_already_installed(self): - # Test we don't re-download unnecessarily - checked_call_with_output(emsdk + ' install latest', expected='already installed', unexpected='Downloading:') - - def test_list(self): - # Test we report installed tools properly. The latest version should be - # installed, but not some random old one. - checked_call_with_output(emsdk + ' list', expected=TAGS['aliases']['latest'] + ' INSTALLED', unexpected='1.39.15 INSTALLED:') - - def test_config_contents(self): - print('test .emscripten contents') - with open(emconfig) as f: - config = f.read() - assert 'upstream' in config - - def test_lib_building(self): - print('building proper system libraries') - do_lib_building(upstream_emcc) - - def test_redownload(self): - print('go back to using upstream') - run_emsdk('activate latest') - - # Test the normal tools like node don't re-download on re-install - print('another install must re-download') - checked_call_with_output(emsdk + ' uninstall node-22.16.0-64bit') - checked_call_with_output(emsdk + ' install node-22.16.0-64bit', expected='Downloading:', unexpected='already installed') - checked_call_with_output(emsdk + ' install node-22.16.0-64bit', unexpected='Downloading:', expected='already installed') - - def test_tot_upstream(self): - print('test update-tags') - run_emsdk('update-tags') - print('test tot-upstream') - run_emsdk('install tot-upstream') - with open(emconfig) as f: - config = f.read() - run_emsdk('activate tot-upstream') - with open(emconfig + '.old') as f: - old_config = f.read() - self.assertEqual(config, old_config) - # TODO; test on latest as well - check_call(upstream_emcc + ' hello_world.c') - - def test_closure(self): - # Specifically test with `--closure` so we know that node_modules is working - check_call(upstream_emcc + ' hello_world.c --closure=1') - - def test_specific_version(self): - if MACOS_ARM64: - self.skipTest('Old sdk versions do not have ARM64 binaries') - print('test specific release (new, short name)') - run_emsdk('install 1.38.33') - print('another install, but no need for re-download') - checked_call_with_output(emsdk + ' install 1.38.33', expected='Skipped', unexpected='Downloading:') - run_emsdk('activate 1.38.33') - - def test_specific_version_full(self): - if MACOS_ARM64: - self.skipTest('Old sdk versions do not have ARM64 binaries') - print('test specific release (new, full name)') - run_emsdk('install sdk-1.38.33-64bit') - run_emsdk('activate sdk-1.38.33-64bit') - print('test specific release (new, tag name)') - run_emsdk('install sdk-tag-1.38.33-64bit') - run_emsdk('activate sdk-tag-1.38.33-64bit') - - def test_binaryen_from_source(self): - if MACOS: - self.skipTest("https://github.com/WebAssembly/binaryen/issues/4299") - print('test binaryen source build') - run_emsdk(['install', '--build=Release', '--generator=Unix Makefiles', 'binaryen-main-64bit']) - - def test_no_32bit(self): - print('test 32-bit error') - emsdk_hacked = hack_emsdk('not is_os_64bit()', 'True') - failing_call_with_output('%s %s install latest' % (sys.executable, emsdk_hacked), - 'this tool is only provided for 64-bit OSes') - os.remove(emsdk_hacked) - - def test_update_no_git(self): - print('test non-git update') - - temp_dir = tempfile.mkdtemp() - for filename in os.listdir('.'): - if not filename.startswith('.') and not os.path.isdir(filename): - shutil.copy2(filename, os.path.join(temp_dir, filename)) - - olddir = os.getcwd() - try: - os.chdir(temp_dir) - run_emsdk('update') - - print('second time') - run_emsdk('update') - finally: - os.chdir(olddir) - - def test_install_arbitrary(self): - # Test that its possible to install arbrary emscripten-releases SDKs - run_emsdk('install 1b7f7bc6002a3ca73647f41fc10e1fac7f06f804') - - # Check that its not re-downloaded - checked_call_with_output(emsdk + ' install 1b7f7bc6002a3ca73647f41fc10e1fac7f06f804', expected='Skipped', unexpected='Downloading:') - - def test_install_tool(self): - # Test that its possible to install emscripten as tool instead of SDK - checked_call_with_output(emsdk + ' install releases-77b065ace39e6ab21446e13f92897f956c80476a', unexpected='Installing SDK') - - def test_activate_missing(self): - run_emsdk('install latest') - failing_call_with_output(emsdk + ' activate 2.0.1', expected="error: tool is not installed and therefore cannot be activated: 'releases-13e29bd55185e3c12802bc090b4507901856b2ba-64bit'") - - def test_keep_downloads(self): - env = os.environ.copy() - env['EMSDK_KEEP_DOWNLOADS'] = '1' - # With EMSDK_KEEP_DOWNLOADS the downloading should happen on the first - # install of 2.0.28, and again when we install 2.0.29, but not on the - # second install of 2.0.28 because the zip should already be local. - shutil.rmtree('downloads') - checked_call_with_output(emsdk + ' install 3.1.54', expected='Downloading:', env=env) - checked_call_with_output(emsdk + ' install 3.1.55', expected='Downloading:', env=env) - checked_call_with_output(emsdk + ' install 3.1.54', expected='already downloaded, skipping', unexpected='Downloading:', env=env) - - -if __name__ == '__main__': - unittest.main(verbosity=2) diff --git a/emsdk-cache/emsdk-main/test/test.sh b/emsdk-cache/emsdk-main/test/test.sh deleted file mode 100644 index 5033fd961..000000000 --- a/emsdk-cache/emsdk-main/test/test.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env bash - -echo "test the standard workflow (as close as possible to how a user would do it, in the shell)" -echo "machine: $(uname -m)" -echo "kernel: $(uname -s)" - -set -x -set -e - -# Test that arbitrary (non-released) versions can be installed and -# activated. -# This test cannot run on linux-arm64 because only certain binaries -# get uploaded for this architecture. -if [[ !($(uname -s) == "Linux" && $(uname -m) == "aarch64") ]]; then - ./emsdk install sdk-upstream-1b7f7bc6002a3ca73647f41fc10e1fac7f06f804 - ./emsdk activate sdk-upstream-1b7f7bc6002a3ca73647f41fc10e1fac7f06f804 - source ./emsdk_env.sh - which emcc - emcc -v -fi - -# Install an older version of the SDK that requires EM_CACHE to be -# set in the environment, so that we can test it is later removed -# This test only runs on x64 because we didn't build arm binaries -# when this older version of the SDK was built. -if [[ $(uname -m) == "x86_64" ]]; then - ./emsdk install sdk-1.39.15 - ./emsdk activate sdk-1.39.15 - source ./emsdk_env.sh - which emcc - emcc -v - test -n "$EM_CACHE" -fi - -# Install the latest version of the SDK which is the expected precondition -# of test.py. -./emsdk install latest -./emsdk activate latest -source ./emsdk_env.sh --build=Release -# Test that EM_CACHE was unset -test -z "$EM_CACHE" - -# On mac and windows python3 should be in the path and point to the -# bundled version. -which python3 -which emcc -emcc -v diff --git a/emsdk-cache/emsdk-main/test/test_activation.ps1 b/emsdk-cache/emsdk-main/test/test_activation.ps1 deleted file mode 100644 index 31a2c8eb8..000000000 --- a/emsdk-cache/emsdk-main/test/test_activation.ps1 +++ /dev/null @@ -1,88 +0,0 @@ -# This test installs emsdk and activates the latest toolchain using `--system` or `--permanent` flags, -# and checks if the environment variables and PATH are correctly updated. Set $env:SYSTEM_FLAG and $env:PERMANENT_FLAG to test each. -# If no flag is provided the process/shell values are tested. See the CI file for an example. - -refreshenv - -$repo_root = [System.IO.Path]::GetDirectoryName((resolve-path "$PSScriptRoot")) - -$PATH_USER_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "User") -$PATH_MACHINE_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "Machine") -$PATH_Process_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "Process") - - -try { - - & "$repo_root/emsdk.ps1" install latest - - & "$repo_root/emsdk.ps1" activate latest $env:PERMANENT_FLAG $env:SYSTEM_FLAG - - if ($env:SYSTEM_FLAG) { - $env_type = "Machine" - } - elseif ($env:PERMANENT_FLAG) { - $env_type = "User" - } else { - $env_type = "Process" - } - - $EMSDK = [System.Environment]::GetEnvironmentVariable("EMSDK", $env_type) - $EMSDK_NODE = [System.Environment]::GetEnvironmentVariable("EMSDK_NODE", $env_type) - $EMSDK_PYTHON = [System.Environment]::GetEnvironmentVariable("EMSDK_PYTHON", $env_type) - $PATH = [System.Environment]::GetEnvironmentVariable("PATH", $env_type) - - if (!$EMSDK) { - throw "EMSDK is not set for the user" - } - if (!$EMSDK_NODE) { - throw "EMSDK_NODE is not set for the user" - } - if (!$EMSDK_PYTHON) { - throw "EMSDK_PYTHON is not set for the user" - } - - - $path_split = $PATH.Split(';') - - $EMSDK_Path = $path_split | Where-Object { $_ -like "$repo_root*" } - if (!$EMSDK_Path) { - throw "No path is added!" - } - - $EMSDK_UPSTREAM_Path = $path_split | Where-Object { $_ -like "$repo_root\upstream\emscripten*" } - if (!$EMSDK_UPSTREAM_Path) { - throw "$repo_root\\upstream\emscripten is not added to path." - } - - -} -finally { - # Recover pre-split PATH - refreshenv - - [Environment]::SetEnvironmentVariable("Path", $PATH_USER_BEFORE, "User") - try { - [Environment]::SetEnvironmentVariable("Path", $PATH_MACHINE_BEFORE, "Machine") - } - catch {} - - [Environment]::SetEnvironmentVariable("Path", $PATH_Process_BEFORE, "Process") - - # Recover pre activation env variables - [Environment]::SetEnvironmentVariable("EMSDK", $null, "User") - [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "User") - [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "User") - - try { - [Environment]::SetEnvironmentVariable("EMSDK", $null, "Machine") - [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "Machine") - [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "Machine") - } catch {} - - - [Environment]::SetEnvironmentVariable("EMSDK", $null, "Process") - [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "Process") - [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "Process") - - refreshenv -} diff --git a/emsdk-cache/emsdk-main/test/test_bazel.ps1 b/emsdk-cache/emsdk-main/test/test_bazel.ps1 deleted file mode 100644 index 5c20a1525..000000000 --- a/emsdk-cache/emsdk-main/test/test_bazel.ps1 +++ /dev/null @@ -1,30 +0,0 @@ -$ErrorActionPreference = 'Stop' - -Set-Location bazel - -bazel build //hello-world:hello-world-wasm -if (-not $?) { Exit $LastExitCode } - -bazel build //hello-world:hello-world-wasm-simd -if (-not $?) { Exit $LastExitCode } - -Set-Location test_external - -bazel build //:hello-world-wasm -if (-not $?) { Exit $LastExitCode } - -bazel build //long_command_line:long_command_line_wasm -if (-not $?) { Exit $LastExitCode } - -bazel build //:hello-embind-wasm --compilation_mode dbg # debug -if (-not $?) { Exit $LastExitCode } - -# Test use of the closure compiler -bazel build //:hello-embind-wasm --compilation_mode opt # release -if (-not $?) { Exit $LastExitCode } - -Set-Location ..\test_secondary_lto_cache - -bazel build //:hello-world-wasm -if (-not $?) { Exit $LastExitCode } - diff --git a/emsdk-cache/emsdk-main/test/test_bazel.sh b/emsdk-cache/emsdk-main/test/test_bazel.sh deleted file mode 100644 index 682866fd5..000000000 --- a/emsdk-cache/emsdk-main/test/test_bazel.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env bash - -echo "test bazel" - -set -x -set -e - -# Get the latest version number from emscripten-releases-tag.json. -VER=$(scripts/get_release_info.py emscripten-releases-tags.json latest) - -# Based on the latest version number, get the commit hash for that version. -HASH=$(scripts/get_release_info.py emscripten-releases-tags.json hash ${VER}) - -FAILMSG="!!! scripts/update_bazel_workspace.py needs to be run !!!" - -# Ensure the WORKSPACE file is up to date with the latest version. -grep ${VER} bazel/revisions.bzl || (echo ${FAILMSG} && false) -grep ${HASH} bazel/revisions.bzl || (echo ${FAILMSG} && false) -grep ${VER} bazel/MODULE.bazel || (echo ${FAILMSG} && false) - -cd bazel -bazel build //hello-world:hello-world-wasm -bazel build //hello-world:hello-world-wasm-simd - -cd test_external -bazel build //:hello-world-wasm -bazel build //long_command_line:long_command_line_wasm -bazel build //:hello-embind-wasm --compilation_mode dbg # debug - -# Test use of the closure compiler -bazel build //:hello-embind-wasm --compilation_mode opt # release -# This function should not be minified if the externs file is loaded correctly. -grep "customJSFunctionToTestClosure" bazel-bin/hello-embind-wasm/hello-embind.js - -cd ../test_secondary_lto_cache -bazel build //:hello-world-wasm diff --git a/emsdk-cache/emsdk-main/test/test_bazel_mac.sh b/emsdk-cache/emsdk-main/test/test_bazel_mac.sh deleted file mode 100644 index e27c657da..000000000 --- a/emsdk-cache/emsdk-main/test/test_bazel_mac.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env bash - -echo "test bazel" - -set -x -set -e - -# Get the latest version number from emscripten-releases-tag.json. -VER=$(scripts/get_release_info.py emscripten-releases-tags.json latest) - -# Based on the latest version number, get the commit hash for that version. -HASH=$(scripts/get_release_info.py emscripten-releases-tags.json hash ${VER}) - -FAILMSG="!!! scripts/update_bazel_workspace.py needs to be run !!!" - -# Ensure the WORKSPACE file is up to date with the latest version. -grep ${VER} bazel/revisions.bzl || (echo ${FAILMSG} && false) -grep ${HASH} bazel/revisions.bzl || (echo ${FAILMSG} && false) -grep ${VER} bazel/MODULE.bazel || (echo ${FAILMSG} && false) - -cd bazel -bazel build //hello-world:hello-world-wasm -bazel build //hello-world:hello-world-wasm-simd - -cd test_external -bazel build //long_command_line:long_command_line_wasm -bazel build //:hello-world-wasm - -cd ../test_secondary_lto_cache -bazel build //:hello-world-wasm - diff --git a/emsdk-cache/emsdk-main/test/test_node_path.sh b/emsdk-cache/emsdk-main/test/test_node_path.sh deleted file mode 100644 index 582152b4b..000000000 --- a/emsdk-cache/emsdk-main/test/test_node_path.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env bash - -echo "Test that node is added to that PATH if, and only if, it is not one already present". - -if [ -n "$EMSDK" ]; then - echo "EMSDK is already defined in this shell. Run tests in a shell without sourcing emsdk_env.sh first" - exit 1 -fi - -DIR=$(dirname "$BASH_SOURCE") -cd $DIR/.. - -./emsdk install latest -./emsdk activate latest - -if which node; then - echo "Test should be run without node in the path" - exit 1 -fi - -# Run emsdk_env.sh and confirm that node was added to the PATH -. emsdk_env.sh - -if ! which node; then - echo "node not found in path after emsdk_env.sh" - exit 1 -fi - -# Run emsdk_env.sh again and confirm that node is still in the PATH -. emsdk_env.sh - -if ! which node; then - echo "node not found in path after emsdk_env.sh" - exit 1 -fi diff --git a/emsdk-cache/emsdk-main/test/test_path_preservation.ps1 b/emsdk-cache/emsdk-main/test/test_path_preservation.ps1 deleted file mode 100644 index 0391b63a3..000000000 --- a/emsdk-cache/emsdk-main/test/test_path_preservation.ps1 +++ /dev/null @@ -1,142 +0,0 @@ -# This test installs emsdk and activates the latest toolchain using `--system` or `--permanent` flags, -# and checks if parts of PATH are lost or overwritten. Set $env:SYSTEM_FLAG and $env:PERMANENT_FLAG to test each. -# If no flag is provided the process/shell values are tested. See the CI file for an example. - -refreshenv - -$repo_root = [System.IO.Path]::GetDirectoryName((resolve-path "$PSScriptRoot")) - -$PATH_USER_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "User") -$PATH_MACHINE_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "Machine") -$PATH_Process_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "Process") - -try { - - - & "$repo_root/emsdk.ps1" install latest - - $esc = '--%' - & "$repo_root/emsdk.ps1" activate latest $esc $env:PERMANENT_FLAG $env:SYSTEM_FLAG - - $PATH_USER = [System.Environment]::GetEnvironmentVariable("PATH", "User") - $PATH_MACHINE = [System.Environment]::GetEnvironmentVariable("PATH", "Machine") - $PATH_Process = [System.Environment]::GetEnvironmentVariable("PATH", "Process") - - if ($env:SYSTEM_FLAG) { - echo "--system test............................." - $path_before_arr = $PATH_MACHINE_BEFORE.Split(';') - $path_arr = $PATH_MACHINE.Split(';') - } - elseif ($env:PERMANENT_FLAG) { - echo "--permanent test.........................." - $path_before_arr = $PATH_USER_BEFORE.Split(';') - $path_arr = $PATH_USER.Split(';') - } else { - echo "no flag test (shell/process).............." - $path_before_arr = $PATH_Process_BEFORE.Split(';') - $path_arr = $PATH_Process.Split(';') - } - - - $EMSDK_Path = $path_arr | Where-Object { $_ -like "$repo_root*" } - $EMSDK_NODE_Path = $path_arr | Where-Object { $_ -like "$repo_root\node*" } - $EMSDK_PYTHON_Path = $path_arr | Where-Object { $_ -like "$repo_root\python*" } - $EMSDK_JAVA_Path = $path_arr | Where-Object { $_ -like "$repo_root\java*" } - $EMSDK_UPSTREAM_Path = $path_arr | Where-Object { $_ -like "$repo_root\upstream\emscripten*" } - - $number_of_items = $path_arr.count - [System.Collections.ArrayList]$rest_of_path = @() - Foreach ($item in $path_arr) { - if ( - ($item -like "$repo_root*") -or - ($item -like "$repo_root\node*") -or - ($item -like "$repo_root\python*") -or - ($item -like "$repo_root\java*") -or - ($item -like "$repo_root\upstream\emscripten*") - ) { - echo "$item is on the PATH" - } - else { - $rest_of_path.add($item) | Out-Null - } - } - - # compare the PATHs before activation and after activation - if (Compare-Object -ReferenceObject $path_before_arr -DifferenceObject $rest_of_path ) { - echo "Old path is ............................." - echo $path_before_arr - echo "Current rest of path is ................." - echo $rest_of_path - throw "some parts of PATH are removed" - } - - # Compare the other untouched PATH - if ($env:SYSTEM_FLAG) { - if (Compare-Object -ReferenceObject $PATH_USER_BEFORE.Split(';') -DifferenceObject $PATH_USER.Split(';') ) { - echo "Old user path is ...................." - echo $PATH_USER_BEFORE - echo "Current user path is ................" - echo $PATH_USER - throw "User PATH are changed while --system had been provided" - } - } - elseif ($env:PERMANENT_FLAG) { - if (Compare-Object -ReferenceObject $PATH_MACHINE_BEFORE.Split(';') -DifferenceObject $PATH_MACHINE.Split(';') ) { - echo "Old machine path is.................." - echo $PATH_MACHINE_BEFORE - echo "Current machine path is.............." - echo $PATH_MACHINE - throw "MACHINE PATH are changed while --system was not provided" - } - } else { - if ( - (Compare-Object -ReferenceObject $PATH_MACHINE_BEFORE.Split(';') -DifferenceObject $PATH_MACHINE.Split(';')) -or - (Compare-Object -ReferenceObject $PATH_MACHINE_BEFORE.Split(';') -DifferenceObject $PATH_MACHINE.Split(';')) - ) { - echo "Old machine path is.................." - echo $PATH_MACHINE_BEFORE - echo "Current machine path is.............." - echo $PATH_MACHINE - echo "Old user path is ...................." - echo $PATH_USER_BEFORE - echo "Current user path is ................" - echo $PATH_USER - throw "MACHINE/USER PATH are changed while no flag was provided" - } - } - - - - -} -finally { - # Recover pre-split PATH - refreshenv - - [Environment]::SetEnvironmentVariable("Path", $PATH_USER_BEFORE, "User") - try { - [Environment]::SetEnvironmentVariable("Path", $PATH_MACHINE_BEFORE, "Machine") - } - catch {} - - [Environment]::SetEnvironmentVariable("Path", $PATH_Process_BEFORE, "Process") - - # Recover pre activation env variables - [Environment]::SetEnvironmentVariable("EMSDK", $null, "User") - [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "User") - [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "User") - - try { - [Environment]::SetEnvironmentVariable("EMSDK", $null, "Machine") - [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "Machine") - [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "Machine") - } catch {} - - - [Environment]::SetEnvironmentVariable("EMSDK", $null, "Process") - [Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "Process") - [Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "Process") - - refreshenv - -} diff --git a/emsdk-cache/emsdk-main/test/test_source_env.sh b/emsdk-cache/emsdk-main/test/test_source_env.sh deleted file mode 100644 index 71a3e4070..000000000 --- a/emsdk-cache/emsdk-main/test/test_source_env.sh +++ /dev/null @@ -1,132 +0,0 @@ -#!/usr/bin/env bash - -echo "Test ability to source emsdk_env.sh in different shells" - -if [ -n "$EMSDK" ]; then - echo "EMSDK is already defined in this shell. Run tests in a shell without sourcing emsdk_env.sh first" - exit 1 -fi - -DIR=$(dirname "$BASH_SOURCE") - -# setup a symlink relative to the current dir -REL_LINK_DIR="$DIR/tmp" -if [ -d "$REL_LINK_DIR" ]; then - rm -rf "$REL_LINK_DIR" -fi -echo "Creating links in $REL_LINK_DIR" -mkdir -p "$REL_LINK_DIR" -(cd $DIR/.. && ln -s `pwd` "$REL_LINK_DIR/emsdk") -(cd $DIR/.. && ln -s `pwd`/emsdk_env.sh "$REL_LINK_DIR") - -# setup a symlink in an absolute directory -ABS_LINK_DIR="/tmp/emsdk_env_test" -if [ -d "$ABS_LINK_DIR" ]; then - rm -rf "$ABS_LINK_DIR" -fi -echo "Creating links in $ABS_LINK_DIR" -mkdir -p "$ABS_LINK_DIR" -(cd $DIR/.. && ln -s `pwd` "$ABS_LINK_DIR/emsdk") -(cd $DIR/.. && ln -s `pwd`/emsdk_env.sh "$ABS_LINK_DIR") - -PATH1="$DIR/../emsdk_env.sh" -PATH2="$REL_LINK_DIR/emsdk/emsdk_env.sh" -PATH3="$REL_LINK_DIR/emsdk_env.sh" -PATH4="$ABS_LINK_DIR/emsdk/emsdk_env.sh" -PATH5="$ABS_LINK_DIR/emsdk_env.sh" - -assert_emcc() { - current=$1 - cmd=$2 - value=$3 - if [ -z "$value" ] || [ "$value" == "false" ]; then - echo "FAILED: $current" - echo " unable to get EMSDK in $current using '$cmd'" - else - echo "SUCCESS: $current testing $cmd" - echo " -> EMSDK = $value" - fi -} - -test_bash() { - value=$(bash --rcfile <(echo $1)) - assert_emcc bash "$1" "$value" -} - -test_zsh() { - value=$(zsh -d -c "$1") - assert_emcc zsh "$1" "$value" -} - -test_ksh() { - value=$(ksh -c "$1") - assert_emcc ksh "$1" "$value" -} - -it_tests_direct_path() { - TEST_SCRIPT=". ${PATH1}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" - TEST_SCRIPT="source ${PATH1}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" -} - -it_tests_via_relative_dir_symlink() { - TEST_SCRIPT=". ${PATH2}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" - TEST_SCRIPT="source ${PATH2}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" -} - -it_tests_via_relative_file_symlink() { - TEST_SCRIPT=". ${PATH3}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" - TEST_SCRIPT="source ${PATH3}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" -} - -it_tests_via_absolute_dir_symlink() { - TEST_SCRIPT=". ${PATH4}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" - TEST_SCRIPT="source ${PATH4}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" -} - -it_tests_via_absolute_file_symlink() { - TEST_SCRIPT=". ${PATH5}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" - TEST_SCRIPT="source ${PATH5}"' >/dev/null 2>&1; if [ -n "$EMSDK" ]; then echo "$EMSDK"; else echo false; fi ; exit' - test_bash "$TEST_SCRIPT" - test_zsh "$TEST_SCRIPT" - test_ksh "$TEST_SCRIPT" -} - -run_bash_tests() { - it_tests_direct_path - it_tests_via_relative_dir_symlink - it_tests_via_relative_file_symlink - it_tests_via_absolute_dir_symlink - it_tests_via_absolute_file_symlink -} - -run_bash_tests - -rm -rf $REL_LINK_DIR -rm -rf $ABS_LINK_DIR diff --git a/raylib.com b/raylib.com deleted file mode 160000 index 2649354ff..000000000 --- a/raylib.com +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2649354ff12dc2b67dccbb4a8aa3c5c61214eb39 From e38e7a8141b002306a791736dfd1f220838851c7 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 11:18:38 +0200 Subject: [PATCH 252/328] Update examples_update.yml --- .github/workflows/examples_update.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/examples_update.yml b/.github/workflows/examples_update.yml index ef677133f..e913787c5 100644 --- a/.github/workflows/examples_update.yml +++ b/.github/workflows/examples_update.yml @@ -55,18 +55,18 @@ jobs: - name: Commit changes to raylib repo run: | - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add -A - git commit -m "Update examples collection" - git push + #git config user.name "github-actions[bot]" + #git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + #git add -A + #git commit -m "Update examples collection" + #git push - name: Push changes to raylib.com repo env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - git config --global user.name "github-actions[bot]" - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add examples - git commit -m "Update web examples" - git push origin + #git config --global user.name "github-actions[bot]" + #git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + #git add examples + #git commit -m "Update web examples" + #git push origin From f0471aaddb99b7d87109ca2a264f60a8e2db7424 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 11:20:19 +0200 Subject: [PATCH 253/328] Update examples_update.yml --- .github/workflows/examples_update.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/examples_update.yml b/.github/workflows/examples_update.yml index e913787c5..6e88beb88 100644 --- a/.github/workflows/examples_update.yml +++ b/.github/workflows/examples_update.yml @@ -25,6 +25,9 @@ jobs: version: 'latest' actions-cache-folder: 'emsdk-cache' + - name: Setup MSBuild + uses: microsoft/setup-msbuild@v2 + - name: Clone raylib.com repo to update files env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 915c02adf3b1d66eb97b0810b13ae545126a4c12 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 11:20:38 +0200 Subject: [PATCH 254/328] Update examples_update.yml --- .github/workflows/examples_update.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/examples_update.yml b/.github/workflows/examples_update.yml index 6e88beb88..4f0bf7d22 100644 --- a/.github/workflows/examples_update.yml +++ b/.github/workflows/examples_update.yml @@ -5,11 +5,9 @@ on: push: paths: - 'examples/**' - - '.github/workflows/examples_update.yml' pull_request: paths: - 'examples/**' - - '.github/workflows/examples_update.yml' jobs: build: From df886a8abba19c2498a72971fd1b09dfafa17490 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 11:38:29 +0200 Subject: [PATCH 255/328] REXM: Added VS2022 project for GitHub Actions building --- .gitignore | 3 +- tools/rexm/VS2022/raylib/raylib.vcxproj | 340 ++++++++++++++++++++++ tools/rexm/VS2022/rexm.sln | 61 ++++ tools/rexm/VS2022/rexm/rexm.vcxproj | 366 ++++++++++++++++++++++++ 4 files changed, 769 insertions(+), 1 deletion(-) create mode 100644 tools/rexm/VS2022/raylib/raylib.vcxproj create mode 100644 tools/rexm/VS2022/rexm.sln create mode 100644 tools/rexm/VS2022/rexm/rexm.vcxproj diff --git a/.gitignore b/.gitignore index 3a9197be3..0d686cd1d 100644 --- a/.gitignore +++ b/.gitignore @@ -113,5 +113,6 @@ docgen_tmp/ # Tools stuff tools/parser/raylib_parser -tools/rexm/VS2022 +tools/rexm/rexm.exe tools/rexm/rexm + diff --git a/tools/rexm/VS2022/raylib/raylib.vcxproj b/tools/rexm/VS2022/raylib/raylib.vcxproj new file mode 100644 index 000000000..df2831b33 --- /dev/null +++ b/tools/rexm/VS2022/raylib/raylib.vcxproj @@ -0,0 +1,340 @@ + + + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {E89D61AC-55DE-4482-AFD4-DF7242EBC859} + Win32Proj + raylib + 10.0 + $(ProjectDir)..\..\..\..\src + + + + StaticLibrary + true + $(DefaultPlatformToolset) + Unicode + + + StaticLibrary + true + $(DefaultPlatformToolset) + Unicode + + + DynamicLibrary + true + $(DefaultPlatformToolset) + Unicode + + + DynamicLibrary + true + $(DefaultPlatformToolset) + Unicode + + + StaticLibrary + false + $(DefaultPlatformToolset) + Unicode + + + StaticLibrary + false + $(DefaultPlatformToolset) + Unicode + + + DynamicLibrary + false + $(DefaultPlatformToolset) + Unicode + + + DynamicLibrary + false + $(DefaultPlatformToolset) + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + + + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + + + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP + CompileAsC + $(RaylibSrcPath)\external\glfw\include + + + Windows + + + %(AdditionalLibraryDirectories) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP + CompileAsC + $(RaylibSrcPath)\external\glfw\include + + + Windows + + + %(AdditionalLibraryDirectories) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP;BUILD_LIBTYPE_SHARED + CompileAsC + $(RaylibSrcPath)\external\glfw\include + MultiThreadedDebug + + + Windows + kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + %(AdditionalLibraryDirectories) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP;BUILD_LIBTYPE_SHARED + CompileAsC + $(RaylibSrcPath)\external\glfw\include + MultiThreadedDebug + + + Windows + kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + %(AdditionalLibraryDirectories) + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP + $(RaylibSrcPath)\external\glfw\include + CompileAsC + MultiThreaded + + + Windows + true + true + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP + $(RaylibSrcPath)\external\glfw\include + CompileAsC + + MultiThreaded + + + Windows + true + true + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP;BUILD_LIBTYPE_SHARED + $(RaylibSrcPath)\external\glfw\include + CompileAsC + MultiThreaded + + + Windows + true + true + kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions);GRAPHICS_API_OPENGL_33;PLATFORM_DESKTOP;BUILD_LIBTYPE_SHARED + $(RaylibSrcPath)\external\glfw\include + CompileAsC + MultiThreaded + + + + Windows + true + true + kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tools/rexm/VS2022/rexm.sln b/tools/rexm/VS2022/rexm.sln new file mode 100644 index 000000000..5939d2b47 --- /dev/null +++ b/tools/rexm/VS2022/rexm.sln @@ -0,0 +1,61 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31912.275 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rexm", "rexm\rexm.vcxproj", "{0981CA98-E4A5-4DF1-987F-A41D09131EFC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raylib", "raylib\raylib.vcxproj", "{E89D61AC-55DE-4482-AFD4-DF7242EBC859}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug.DLL|x64 = Debug.DLL|x64 + Debug.DLL|x86 = Debug.DLL|x86 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release.DLL|x64 = Release.DLL|x64 + Release.DLL|x86 = Release.DLL|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.ActiveCfg = Debug|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.Build.0 = Debug|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.ActiveCfg = Debug|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.Build.0 = Debug|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.ActiveCfg = Release|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.Build.0 = Release|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.ActiveCfg = Release|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.Build.0 = Release|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.ActiveCfg = Debug|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.Build.0 = Debug|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.ActiveCfg = Debug|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.Build.0 = Debug|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.ActiveCfg = Release|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} + EndGlobalSection +EndGlobal diff --git a/tools/rexm/VS2022/rexm/rexm.vcxproj b/tools/rexm/VS2022/rexm/rexm.vcxproj new file mode 100644 index 000000000..42c353436 --- /dev/null +++ b/tools/rexm/VS2022/rexm/rexm.vcxproj @@ -0,0 +1,366 @@ + + + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} + Win32Proj + rexm + rexm + 10.0 + $(ProjectDir)..\..\..\..\src + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\external;$(RaylibSrcPath);%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\external;$(RaylibSrcPath);%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\external;$(RaylibSrcPath);%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\external;$(RaylibSrcPath);%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + $(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\external;$(RaylibSrcPath);%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + $(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\external;$(RaylibSrcPath);%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + $(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\external;$(RaylibSrcPath);%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + $(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\external;$(RaylibSrcPath);%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + + + + + + + + + + + + \ No newline at end of file From e3d714ae41286c5aedb42ee01e8a5274c1b8af94 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 11:45:19 +0200 Subject: [PATCH 256/328] Update GitHub Actions names --- .github/workflows/android.yml | 2 +- .github/workflows/cmake.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/linux.yml | 2 +- .github/workflows/macos.yml | 2 +- .github/workflows/windows.yml | 2 +- .github/workflows/windows_examples.yml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index a3d2f9a5a..80520d0b2 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -1,4 +1,4 @@ -name: Android +name: Build raylib - Android on: workflow_dispatch: diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 58ca7d5f4..0158fb510 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -1,4 +1,4 @@ -name: CMakeBuilds +name: Build raylib CMake - Windows+Linux on: workflow_dispatch: diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 5ad51a4d6..98d32a499 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -3,7 +3,7 @@ # # You may wish to alter this file to override the set of languages analyzed, # or to provide custom queries or build logic. -name: "CodeQL" +name: Analyze raylib with CodeQL on: workflow_dispatch: diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index d31acc854..a76345b90 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -1,4 +1,4 @@ -name: Linux +name: Build raylib - Linux on: workflow_dispatch: diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 8b9f59d2c..965efe249 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -1,4 +1,4 @@ -name: macOS +name: Build raylib - macOS on: workflow_dispatch: diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 876338de1..9e87b5870 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -1,4 +1,4 @@ -name: Windows +name: Build raylib - Windows on: workflow_dispatch: diff --git a/.github/workflows/windows_examples.yml b/.github/workflows/windows_examples.yml index 6171d6dd9..6530931e6 100644 --- a/.github/workflows/windows_examples.yml +++ b/.github/workflows/windows_examples.yml @@ -1,4 +1,4 @@ -name: Windows Examples +name: Build raylib examples - Windows on: workflow_dispatch: From 4492707e0e4b037348cf433668ca6f7776289ffe Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 11:50:38 +0200 Subject: [PATCH 257/328] Update webassembly.yml --- .github/workflows/webassembly.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/webassembly.yml b/.github/workflows/webassembly.yml index c3a392215..32ae94215 100644 --- a/.github/workflows/webassembly.yml +++ b/.github/workflows/webassembly.yml @@ -1,4 +1,4 @@ -name: WebAssembly +name: Build raylib - WebAssembly on: workflow_dispatch: From f1796ff1437913f1700a30516f8a03959066fb77 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 11:50:41 +0200 Subject: [PATCH 258/328] Update examples_update.yml --- .github/workflows/examples_update.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/examples_update.yml b/.github/workflows/examples_update.yml index 4f0bf7d22..897ee943c 100644 --- a/.github/workflows/examples_update.yml +++ b/.github/workflows/examples_update.yml @@ -40,16 +40,13 @@ jobs: cd tools/rexm/VS2022 msbuild.exe rexm.sln /target:rexm /property:Configuration=Release /property:Platform=x64 cd ../../.. - # Set required environment properties to be used by rexm set REXM_EXAMPLES_BASE_PATH="examples" set REXM_EXAMPLES_WEB_PATH="../raylib.com/examples" set REXM_EXAMPLES_TEMPLATE_FILE_PATH="examples/examples_template.c" set REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH="examples/examples_template.png" set REXM_EXAMPLES_COLLECTION_FILE_PATH="examples/examples_list.txt" set REXM_EXAMPLES_VS2022_SLN_FILE="projects/VS2022/raylib.sln" - # Set emsdk path for Makefile.Web examples building set EMSDK_PATH="D:/a/raylib/raylib/emsdk-cache/emsdk-main" - # Run rexm to update required files .\tools\rexm\VS2022\build\rexm\bin\x64\Release\rexm.exe update cd ../.. shell: cmd From 8562841c63da926d3e09afe40b7a28cfa5b1143e Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 11:51:57 +0200 Subject: [PATCH 259/328] Update linux_examples.yml --- .github/workflows/linux_examples.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linux_examples.yml b/.github/workflows/linux_examples.yml index d7f3be2ea..5f029e73f 100644 --- a/.github/workflows/linux_examples.yml +++ b/.github/workflows/linux_examples.yml @@ -1,4 +1,4 @@ -name: Linux Examples +name: Build raylib examples - Linux on: workflow_dispatch: From 44207b293e4eaaac19ecf83758f9282a234e680c Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 11:54:32 +0200 Subject: [PATCH 260/328] RENAMED: GitHub Actions files, clearer naming --- .github/workflows/{codeql.yml => analize_codeql.yml} | 0 .github/workflows/{android.yml => build_android.yml} | 0 .github/workflows/{cmake.yml => build_cmake.yml} | 0 .../workflows/{linux_examples.yml => build_examples_linux.yml} | 0 .../{windows_examples.yml => build_examples_windows.yml} | 0 .github/workflows/{linux.yml => build_linux.yml} | 0 .github/workflows/{macos.yml => build_macos.yml} | 0 .github/workflows/{webassembly.yml => build_webassembly.yml} | 0 .github/workflows/{windows.yml => build_windows.yml} | 0 .github/workflows/{api_parse.yml => parse_api.yml} | 0 .github/workflows/{examples_update.yml => update_examples.yml} | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{codeql.yml => analize_codeql.yml} (100%) rename .github/workflows/{android.yml => build_android.yml} (100%) rename .github/workflows/{cmake.yml => build_cmake.yml} (100%) rename .github/workflows/{linux_examples.yml => build_examples_linux.yml} (100%) rename .github/workflows/{windows_examples.yml => build_examples_windows.yml} (100%) rename .github/workflows/{linux.yml => build_linux.yml} (100%) rename .github/workflows/{macos.yml => build_macos.yml} (100%) rename .github/workflows/{webassembly.yml => build_webassembly.yml} (100%) rename .github/workflows/{windows.yml => build_windows.yml} (100%) rename .github/workflows/{api_parse.yml => parse_api.yml} (100%) rename .github/workflows/{examples_update.yml => update_examples.yml} (100%) diff --git a/.github/workflows/codeql.yml b/.github/workflows/analize_codeql.yml similarity index 100% rename from .github/workflows/codeql.yml rename to .github/workflows/analize_codeql.yml diff --git a/.github/workflows/android.yml b/.github/workflows/build_android.yml similarity index 100% rename from .github/workflows/android.yml rename to .github/workflows/build_android.yml diff --git a/.github/workflows/cmake.yml b/.github/workflows/build_cmake.yml similarity index 100% rename from .github/workflows/cmake.yml rename to .github/workflows/build_cmake.yml diff --git a/.github/workflows/linux_examples.yml b/.github/workflows/build_examples_linux.yml similarity index 100% rename from .github/workflows/linux_examples.yml rename to .github/workflows/build_examples_linux.yml diff --git a/.github/workflows/windows_examples.yml b/.github/workflows/build_examples_windows.yml similarity index 100% rename from .github/workflows/windows_examples.yml rename to .github/workflows/build_examples_windows.yml diff --git a/.github/workflows/linux.yml b/.github/workflows/build_linux.yml similarity index 100% rename from .github/workflows/linux.yml rename to .github/workflows/build_linux.yml diff --git a/.github/workflows/macos.yml b/.github/workflows/build_macos.yml similarity index 100% rename from .github/workflows/macos.yml rename to .github/workflows/build_macos.yml diff --git a/.github/workflows/webassembly.yml b/.github/workflows/build_webassembly.yml similarity index 100% rename from .github/workflows/webassembly.yml rename to .github/workflows/build_webassembly.yml diff --git a/.github/workflows/windows.yml b/.github/workflows/build_windows.yml similarity index 100% rename from .github/workflows/windows.yml rename to .github/workflows/build_windows.yml diff --git a/.github/workflows/api_parse.yml b/.github/workflows/parse_api.yml similarity index 100% rename from .github/workflows/api_parse.yml rename to .github/workflows/parse_api.yml diff --git a/.github/workflows/examples_update.yml b/.github/workflows/update_examples.yml similarity index 100% rename from .github/workflows/examples_update.yml rename to .github/workflows/update_examples.yml From 01c68d7e7529827ae34555b0710ea5a3e4fc937e Mon Sep 17 00:00:00 2001 From: Johnny Cena Date: Tue, 19 Aug 2025 12:30:07 +0200 Subject: [PATCH 261/328] fix typo in workflow name --- .github/workflows/{analize_codeql.yml => analyze_codeql.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{analize_codeql.yml => analyze_codeql.yml} (100%) diff --git a/.github/workflows/analize_codeql.yml b/.github/workflows/analyze_codeql.yml similarity index 100% rename from .github/workflows/analize_codeql.yml rename to .github/workflows/analyze_codeql.yml From 25d00130a8880ef736bc8e7aa22dbf5cd1fbdc4a Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 13:17:50 +0200 Subject: [PATCH 262/328] REVIEWED: example: `text_unicode_ranges` --- examples/text/text_unicode_font.c | 127 ------------------- examples/text/text_unicode_ranges.c | 183 ++++++++++++++++++++++++++++ 2 files changed, 183 insertions(+), 127 deletions(-) delete mode 100644 examples/text/text_unicode_font.c create mode 100644 examples/text/text_unicode_ranges.c diff --git a/examples/text/text_unicode_font.c b/examples/text/text_unicode_font.c deleted file mode 100644 index 316d8c874..000000000 --- a/examples/text/text_unicode_font.c +++ /dev/null @@ -1,127 +0,0 @@ -#include -#include - -#define SCREEN_WIDTH 800 -#define SCREEN_HEIGHT 450 - -typedef struct { - int* data; - int count; - int capacity; -} CodepointsArray; - -static void AddRange(CodepointsArray* array, int start, int stop) { - int rangeSize = stop - start + 1; - - if (array->count + rangeSize > array->capacity) { - array->capacity = array->count + rangeSize + 1024; - array->data = (int*)MemRealloc(array->data, array->capacity * sizeof(int)); - if (!array->data) { - TraceLog(LOG_ERROR, "FONTUTIL: Memory allocation failed"); - exit(1); - } - } - - for (int i = start; i <= stop; i++) { - array->data[array->count++] = i; - } -} - -Font LoadUnicodeFont(const char* fileName, int fontSize, int textureFilter) { - CodepointsArray cp = {0}; - cp.capacity = 2048; - cp.data = (int*)MemAlloc(cp.capacity * sizeof(int)); - - if (!cp.data) { - TraceLog(LOG_ERROR, "FONTUTIL: Initial allocation failed"); - return GetFontDefault(); - } - - // Basic ASCII - AddRange(&cp, 32, 126); - - // European Languages - AddRange(&cp, 0xC0, 0x17F); - AddRange(&cp, 0x180, 0x24F); - AddRange(&cp, 0x1E00, 0x1EFF); - AddRange(&cp, 0x2C60, 0x2C7F); - - // Greek - AddRange(&cp, 0x370, 0x3FF); - AddRange(&cp, 0x1F00, 0x1FFF); - - // Cyrillic - AddRange(&cp, 0x400, 0x4FF); - AddRange(&cp, 0x500, 0x52F); - AddRange(&cp, 0x2DE0, 0x2DFF); - AddRange(&cp, 0xA640, 0xA69F); - - // CJK - AddRange(&cp, 0x4E00, 0x9FFF); - AddRange(&cp, 0x3400, 0x4DBF); - AddRange(&cp, 0x3000, 0x303F); - AddRange(&cp, 0x3040, 0x309F); - AddRange(&cp, 0x30A0, 0x30FF); - AddRange(&cp, 0x31F0, 0x31FF); - AddRange(&cp, 0xFF00, 0xFFEF); - AddRange(&cp, 0xAC00, 0xD7AF); - AddRange(&cp, 0x1100, 0x11FF); - - // Other - AddRange(&cp, 0x900, 0x97F); // Devanagari - AddRange(&cp, 0x600, 0x6FF); // Arabic - AddRange(&cp, 0x5D0, 0x5EA); // Hebrew - - Font font = {0}; - - if (FileExists(fileName)) { - font = LoadFontEx(fileName, fontSize, cp.data, cp.count); - } - - if (font.texture.id == 0) { - font = GetFontDefault(); - TraceLog(LOG_WARNING, "FONTUTIL: Using default font"); - } - - SetTextureFilter(font.texture, textureFilter); - MemFree(cp.data); - - return font; -} - -/** - * Main entry point - */ -int main(void) -{ - // Initialize window - InitWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "Unicode Font Example"); - SetTargetFPS(60); - - // Load font with Unicode support - Font myFont = LoadUnicodeFont("resources/NotoSansTC-Regular.ttf", 36, TEXTURE_FILTER_BILINEAR); - - // Main render loop - while (!WindowShouldClose()) - { - BeginDrawing(); - ClearBackground(RAYWHITE); - - // Render test strings in different languages - DrawTextEx(myFont, "English: Hello World!", (Vector2){50, 50}, 36, 1, DARKGRAY); - DrawTextEx(myFont, "Русский: Привет мир!", (Vector2){50, 100}, 36, 0, DARKGRAY); - DrawTextEx(myFont, "中文: 你好世界!", (Vector2){50, 150}, 36, 1, DARKGRAY); - DrawTextEx(myFont, "日本語: こんにちは世界!", (Vector2){50, 200}, 36, 1, DARKGRAY); - - // Display font attribution - DrawText("Font: Noto Sans TC. License: SIL Open Font License 1.1", - 10, SCREEN_HEIGHT - 20, 10, GRAY); - EndDrawing(); - } - - // Cleanup resources - UnloadFont(myFont); - CloseWindow(); - - return 0; -} diff --git a/examples/text/text_unicode_ranges.c b/examples/text/text_unicode_ranges.c new file mode 100644 index 000000000..d3cb4b5e5 --- /dev/null +++ b/examples/text/text_unicode_ranges.c @@ -0,0 +1,183 @@ +/******************************************************************************************* +* +* raylib [text] example - unicode ranges +* +* Example complexity rating: [★★★★] 4/4 +* +* Example originally created with raylib 2.5, last time updated with raylib 4.0 +* +* Example contributed by Vlad Adrian (@demizdor) 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) 2019-2025 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5) +* +********************************************************************************************/ + +#include "raylib.h" + +#include + +typedef struct { + int* data; + int count; + int capacity; +} CodepointsArray; + +//-------------------------------------------------------------------------------------- +// Module functions declaration +//-------------------------------------------------------------------------------------- +static void AddRange(CodepointsArray* array, int start, int stop); +static Font LoadUnicodeFont(const char* fileName, int fontSize); + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [text] example - unicode ranges"); + + // Load font with Unicode support + Font fontUni = LoadUnicodeFont("resources/NotoSansTC-Regular.ttf", 32); + SetTextureFilter(fontUni.texture, TEXTURE_FILTER_BILINEAR); + + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + //-------------------------------------------------------------------------------------- + + // Main loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + //... + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + // Render test strings in different languages + DrawTextEx(fontUni, "English: Hello World!", (Vector2){ 50, 50 }, 32, 1, DARKGRAY); // English + DrawTextEx(fontUni, "Español: Hola mundo!", (Vector2){ 50, 100 }, 32, 1, DARKGRAY); // Spanish + DrawTextEx(fontUni, "Ελληνικά: Γειά σου κόσμε!", (Vector2){ 50, 150 }, 32, 1, DARKGRAY); // Greek + DrawTextEx(fontUni, "Русский: Привет мир!", (Vector2){ 50, 200 }, 32, 0, DARKGRAY); // Russian + DrawTextEx(fontUni, "中文: 你好世界!", (Vector2){ 50, 250 }, 32, 1, DARKGRAY); // Chinese + DrawTextEx(fontUni, "日本語: こんにちは世界!", (Vector2){ 50, 300 }, 32, 1, DARKGRAY); // Japanese + DrawTextEx(fontUni, "देवनागरी: होला मुंडो!", (Vector2){ 50, 350 }, 32, 1, DARKGRAY); // Devanagari + + DrawRectangle(400, 16, 380, 400, BLACK); + DrawTexturePro(fontUni.texture, (Rectangle){ 0, 0, fontUni.texture.width, fontUni.texture.height }, + (Rectangle){ 400, 16, 380, 400 }, (Vector2){ 0, 0 }, 0.0f, WHITE); + + // Display font attribution + DrawText("Font: Noto Sans TC. License: SIL Open Font License 1.1", screenWidth - 300, screenHeight - 20, 10, GRAY); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + UnloadFont(fontUni); // Unload font resource + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} + +//-------------------------------------------------------------------------------------- +// Module functions definition +//-------------------------------------------------------------------------------------- +static void AddRange(CodepointsArray* array, int start, int stop) +{ + int rangeSize = stop - start + 1; + + if ((array->count + rangeSize) > array->capacity) + { + array->capacity = array->count + rangeSize + 1024; + array->data = (int *)MemRealloc(array->data, array->capacity*sizeof(int)); + + if (!array->data) + { + TraceLog(LOG_ERROR, "FONTUTIL: Memory allocation failed"); + exit(1); + } + } + + for (int i = start; i <= stop; i++) array->data[array->count++] = i; +} + +Font LoadUnicodeFont(const char *fileName, int fontSize) +{ + CodepointsArray cp = { 0 }; + cp.capacity = 2048; + cp.data = (int *)MemAlloc(cp.capacity*sizeof(int)); + + if (!cp.data) + { + TraceLog(LOG_ERROR, "FONTUTIL: Initial allocation failed"); + return GetFontDefault(); + } + + // Unicode range: Basic ASCII + AddRange(&cp, 32, 126); + + // Unicode range: European Languages + AddRange(&cp, 0xC0, 0x17F); + AddRange(&cp, 0x180, 0x24F); + AddRange(&cp, 0x1E00, 0x1EFF); + AddRange(&cp, 0x2C60, 0x2C7F); + + // Unicode range: Greek + AddRange(&cp, 0x370, 0x3FF); + AddRange(&cp, 0x1F00, 0x1FFF); + + // Unicode range: Cyrillic + AddRange(&cp, 0x400, 0x4FF); + AddRange(&cp, 0x500, 0x52F); + AddRange(&cp, 0x2DE0, 0x2DFF); + AddRange(&cp, 0xA640, 0xA69F); + + // Unicode range: CJK + AddRange(&cp, 0x4E00, 0x9FFF); + AddRange(&cp, 0x3400, 0x4DBF); + AddRange(&cp, 0x3000, 0x303F); + AddRange(&cp, 0x3040, 0x309F); + AddRange(&cp, 0x30A0, 0x30FF); + AddRange(&cp, 0x31F0, 0x31FF); + AddRange(&cp, 0xFF00, 0xFFEF); + AddRange(&cp, 0xAC00, 0xD7AF); + AddRange(&cp, 0x1100, 0x11FF); + + // Unicode range: Other + // WARNING: Not available on provided font + AddRange(&cp, 0x900, 0x97F); // Devanagari + AddRange(&cp, 0x600, 0x6FF); // Arabic + AddRange(&cp, 0x5D0, 0x5EA); // Hebrew + + Font font = {0}; + + if (FileExists(fileName)) + { + font = LoadFontEx(fileName, fontSize, cp.data, cp.count); + } + + if (font.texture.id == 0) + { + font = GetFontDefault(); + TraceLog(LOG_WARNING, "FONTUTIL: Using default font"); + } + + MemFree(cp.data); + + return font; +} From 8ba4ff21430b64b1799834a5a8f5a902fff38d87 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 13:22:04 +0200 Subject: [PATCH 263/328] Renamed directory for sprite fonts --- .../resources/{fonts => sprite_fonts}/alagard.png | Bin .../{fonts => sprite_fonts}/alpha_beta.png | Bin .../{fonts => sprite_fonts}/jupiter_crash.png | Bin .../resources/{fonts => sprite_fonts}/mecha.png | Bin .../{fonts => sprite_fonts}/pixantiqua.png | Bin .../resources/{fonts => sprite_fonts}/pixelplay.png | Bin .../resources/{fonts => sprite_fonts}/romulus.png | Bin .../resources/{fonts => sprite_fonts}/setback.png | Bin 8 files changed, 0 insertions(+), 0 deletions(-) rename examples/text/resources/{fonts => sprite_fonts}/alagard.png (100%) rename examples/text/resources/{fonts => sprite_fonts}/alpha_beta.png (100%) rename examples/text/resources/{fonts => sprite_fonts}/jupiter_crash.png (100%) rename examples/text/resources/{fonts => sprite_fonts}/mecha.png (100%) rename examples/text/resources/{fonts => sprite_fonts}/pixantiqua.png (100%) rename examples/text/resources/{fonts => sprite_fonts}/pixelplay.png (100%) rename examples/text/resources/{fonts => sprite_fonts}/romulus.png (100%) rename examples/text/resources/{fonts => sprite_fonts}/setback.png (100%) diff --git a/examples/text/resources/fonts/alagard.png b/examples/text/resources/sprite_fonts/alagard.png similarity index 100% rename from examples/text/resources/fonts/alagard.png rename to examples/text/resources/sprite_fonts/alagard.png diff --git a/examples/text/resources/fonts/alpha_beta.png b/examples/text/resources/sprite_fonts/alpha_beta.png similarity index 100% rename from examples/text/resources/fonts/alpha_beta.png rename to examples/text/resources/sprite_fonts/alpha_beta.png diff --git a/examples/text/resources/fonts/jupiter_crash.png b/examples/text/resources/sprite_fonts/jupiter_crash.png similarity index 100% rename from examples/text/resources/fonts/jupiter_crash.png rename to examples/text/resources/sprite_fonts/jupiter_crash.png diff --git a/examples/text/resources/fonts/mecha.png b/examples/text/resources/sprite_fonts/mecha.png similarity index 100% rename from examples/text/resources/fonts/mecha.png rename to examples/text/resources/sprite_fonts/mecha.png diff --git a/examples/text/resources/fonts/pixantiqua.png b/examples/text/resources/sprite_fonts/pixantiqua.png similarity index 100% rename from examples/text/resources/fonts/pixantiqua.png rename to examples/text/resources/sprite_fonts/pixantiqua.png diff --git a/examples/text/resources/fonts/pixelplay.png b/examples/text/resources/sprite_fonts/pixelplay.png similarity index 100% rename from examples/text/resources/fonts/pixelplay.png rename to examples/text/resources/sprite_fonts/pixelplay.png diff --git a/examples/text/resources/fonts/romulus.png b/examples/text/resources/sprite_fonts/romulus.png similarity index 100% rename from examples/text/resources/fonts/romulus.png rename to examples/text/resources/sprite_fonts/romulus.png diff --git a/examples/text/resources/fonts/setback.png b/examples/text/resources/sprite_fonts/setback.png similarity index 100% rename from examples/text/resources/fonts/setback.png rename to examples/text/resources/sprite_fonts/setback.png From 0658abc64c06c1877a053fe87540a7e1defe99f7 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 19 Aug 2025 13:22:15 +0200 Subject: [PATCH 264/328] Update text_raylib_fonts.c --- examples/text/text_raylib_fonts.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/examples/text/text_raylib_fonts.c b/examples/text/text_raylib_fonts.c index 7248be128..99937549d 100644 --- a/examples/text/text_raylib_fonts.c +++ b/examples/text/text_raylib_fonts.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - raylib fonts loading +* raylib [text] example - sprite fonts loading * * Example complexity rating: [★☆☆☆] 1/4 * @@ -30,19 +30,19 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [text] example - raylib fonts"); + InitWindow(screenWidth, screenHeight, "raylib [text] example - sprite fonts"); // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) Font fonts[MAX_FONTS] = { 0 }; - fonts[0] = LoadFont("resources/fonts/alagard.png"); - fonts[1] = LoadFont("resources/fonts/pixelplay.png"); - fonts[2] = LoadFont("resources/fonts/mecha.png"); - fonts[3] = LoadFont("resources/fonts/setback.png"); - fonts[4] = LoadFont("resources/fonts/romulus.png"); - fonts[5] = LoadFont("resources/fonts/pixantiqua.png"); - fonts[6] = LoadFont("resources/fonts/alpha_beta.png"); - fonts[7] = LoadFont("resources/fonts/jupiter_crash.png"); + fonts[0] = LoadFont("resources/sprite_fonts/alagard.png"); + fonts[1] = LoadFont("resources/sprite_fonts/pixelplay.png"); + fonts[2] = LoadFont("resources/sprite_fonts/mecha.png"); + fonts[3] = LoadFont("resources/sprite_fonts/setback.png"); + fonts[4] = LoadFont("resources/sprite_fonts/romulus.png"); + fonts[5] = LoadFont("resources/sprite_fonts/pixantiqua.png"); + fonts[6] = LoadFont("resources/sprite_fonts/alpha_beta.png"); + fonts[7] = LoadFont("resources/sprite_fonts/jupiter_crash.png"); const char *messages[MAX_FONTS] = { "ALAGARD FONT designed by Hewett Tsoi", "PIXELPLAY FONT designed by Aleksander Shevchuk", @@ -87,8 +87,8 @@ int main(void) ClearBackground(RAYWHITE); - DrawText("free fonts included with raylib", 250, 20, 20, DARKGRAY); - DrawLine(220, 50, 590, 50, DARKGRAY); + DrawText("free sprite fonts included with raylib", 220, 20, 20, DARKGRAY); + DrawLine(220, 50, 600, 50, DARKGRAY); for (int i = 0; i < MAX_FONTS; i++) { From 572230c8adfca8b2ee8550a8746a11d8717be00b Mon Sep 17 00:00:00 2001 From: Jeffery Myers Date: Tue, 19 Aug 2025 08:16:20 -0700 Subject: [PATCH 265/328] Initialize sound alias properties as if it was a new sound --- src/raudio.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/raudio.c b/src/raudio.c index 76fee2333..e21bf578c 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -982,9 +982,13 @@ Sound LoadSoundAlias(Sound source) } audioBuffer->sizeInFrames = source.stream.buffer->sizeInFrames; - audioBuffer->volume = source.stream.buffer->volume; audioBuffer->data = source.stream.buffer->data; + // initalize the buffer as if it was new + audioBuffer->volume = 1.0f; + audioBuffer->pitch = 1.0f; + audioBuffer->pan = 0.5f; + sound.frameCount = source.frameCount; sound.stream.sampleRate = AUDIO.System.device.sampleRate; sound.stream.sampleSize = 32; From 15baf176b2e1f6441efb5bef525bf65aaf47a41d Mon Sep 17 00:00:00 2001 From: Jeffery Myers Date: Tue, 19 Aug 2025 10:39:38 -0700 Subject: [PATCH 266/328] Add a utility header to external that undefines the parts of windows that conflict with raylib, allowing raylib functions to run unimpeded --- src/external/fix_win32_compatibility.h | 63 ++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/external/fix_win32_compatibility.h diff --git a/src/external/fix_win32_compatibility.h b/src/external/fix_win32_compatibility.h new file mode 100644 index 000000000..fb0f606fb --- /dev/null +++ b/src/external/fix_win32_compatibility.h @@ -0,0 +1,63 @@ +/********************************************************************************************** +* +* fix_win32_compatibility.h Utility to help include windows.h with raylib projects +* +* Useage: #include "fix_win32_compatibility.h" any library that uses windows.h +* order is critical, this must be done before raylib +* +* LICENSE: MIT +* +* Copyright (c) 2025 Jeffery Myers +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +* +**********************************************************************************************/ + +#pragma once + +// move the windows functions to new names +// note that you can't call these functions or structures from your code, but you should not neeed to +#define CloseWindow CloseWindowWin32 +#define Rectangle RectangleWin32 +#define ShowCursor ShowCursorWin32 +#define LoadImageA LoadImageAWin32 +#define LoadImageW LoadImageWin32 +#define DrawTextA DrawTextAWin32 +#define DrawTextW DrawTextWin32 +#define DrawTextExA DrawTextExAWin32 +#define DrawTextExW DrawTextExWin32 +#define PlaySoundA PlaySoundAWin32\ +// include windows +#define WIN32_LEAN_AND_MEAN +#include + +// remove all our redfintions so that raylib can define them properly +#undef CloseWindow +#undef Rectangle +#undef ShowCursor +#undef LoadImage +#undef LoadImageA +#undef LoadImageW +#undef DrawText +#undef DrawTextA +#undef DrawTextW +#undef DrawTextEx +#undef DrawTextExA +#undef DrawTextExW +#undef PlaySoundA From cb05945e764982357092a40a83c454c2037f303a Mon Sep 17 00:00:00 2001 From: Johnny Cena Date: Wed, 20 Aug 2025 11:17:44 +0200 Subject: [PATCH 267/328] add missing shaders --- .../shaders/glsl100/voxel_lighting.fs | 65 +++++++++++++++++++ .../shaders/glsl100/voxel_lighting.vs | 28 ++++++++ .../shaders/glsl120/voxel_lighting.fs | 61 +++++++++++++++++ .../shaders/glsl120/voxel_lighting.vs | 23 +++++++ 4 files changed, 177 insertions(+) create mode 100644 examples/models/resources/shaders/glsl100/voxel_lighting.fs create mode 100644 examples/models/resources/shaders/glsl100/voxel_lighting.vs create mode 100644 examples/models/resources/shaders/glsl120/voxel_lighting.fs create mode 100644 examples/models/resources/shaders/glsl120/voxel_lighting.vs diff --git a/examples/models/resources/shaders/glsl100/voxel_lighting.fs b/examples/models/resources/shaders/glsl100/voxel_lighting.fs new file mode 100644 index 000000000..ba02ad21e --- /dev/null +++ b/examples/models/resources/shaders/glsl100/voxel_lighting.fs @@ -0,0 +1,65 @@ +#ifdef GL_ES +precision mediump float; +#endif + +// Input from vertex shader +varying vec3 fragPosition; +varying vec4 fragColor; +varying vec3 fragNormal; + +// Uniforms +uniform vec4 colDiffuse; +uniform vec4 ambient; +uniform vec3 viewPos; + +#define MAX_LIGHTS 4 +#define LIGHT_DIRECTIONAL 0 +#define LIGHT_POINT 1 + +struct Light { + int enabled; + int type; + vec3 position; + vec3 target; + vec4 color; +}; + +uniform Light lights[MAX_LIGHTS]; + +void main() +{ + vec3 lightDot = vec3(0.0); + vec3 normal = normalize(fragNormal); + vec3 viewD = normalize(viewPos - fragPosition); + vec3 specular = vec3(0.0); + + for (int i = 0; i < MAX_LIGHTS; i++) + { + if (lights[i].enabled == 1) + { + vec3 light = vec3(0.0); + + if (lights[i].type == LIGHT_DIRECTIONAL) + light = -normalize(lights[i].target - lights[i].position); + + if (lights[i].type == LIGHT_POINT) + light = normalize(lights[i].position - fragPosition); + + float NdotL = max(dot(normal, light), 0.0); + lightDot += lights[i].color.rgb * NdotL; + + if (NdotL > 0.0) + { + float specCo = pow(max(0.0, dot(viewD, reflect(-light, normal))), 16.0); + specular += specCo; + } + } + } + + vec4 finalColor = (fragColor * ((colDiffuse + vec4(specular, 1.0)) * vec4(lightDot, 1.0))); + finalColor += fragColor * (ambient / 10.0) * colDiffuse; + + finalColor = pow(finalColor, vec4(1.0/2.2)); // gamma correction + + gl_FragColor = finalColor; +} diff --git a/examples/models/resources/shaders/glsl100/voxel_lighting.vs b/examples/models/resources/shaders/glsl100/voxel_lighting.vs new file mode 100644 index 000000000..e8951eb75 --- /dev/null +++ b/examples/models/resources/shaders/glsl100/voxel_lighting.vs @@ -0,0 +1,28 @@ +#ifdef GL_ES +precision mediump float; +#endif + +// Input vertex attributes +attribute vec3 vertexPosition; +attribute vec3 vertexNormal; +attribute vec4 vertexColor; +// attribute vec2 vertexTexCoord; + +// Input uniform values +uniform mat4 mvp; +uniform mat4 matModel; +uniform mat4 matNormal; + +// Output to fragment shader +varying vec3 fragPosition; +varying vec4 fragColor; +varying vec3 fragNormal; + +void main() +{ + fragPosition = vec3(matModel * vec4(vertexPosition, 1.0)); + fragColor = vertexColor; + fragNormal = normalize(vec3(matNormal * vec4(vertexNormal, 1.0))); + + gl_Position = mvp * vec4(vertexPosition, 1.0); +} diff --git a/examples/models/resources/shaders/glsl120/voxel_lighting.fs b/examples/models/resources/shaders/glsl120/voxel_lighting.fs new file mode 100644 index 000000000..dab171950 --- /dev/null +++ b/examples/models/resources/shaders/glsl120/voxel_lighting.fs @@ -0,0 +1,61 @@ +// Input from vertex shader +varying vec3 fragPosition; +varying vec4 fragColor; +varying vec3 fragNormal; + +// Uniforms +uniform vec4 colDiffuse; +uniform vec4 ambient; +uniform vec3 viewPos; + +#define MAX_LIGHTS 4 +#define LIGHT_DIRECTIONAL 0 +#define LIGHT_POINT 1 + +struct Light { + int enabled; + int type; + vec3 position; + vec3 target; + vec4 color; +}; + +uniform Light lights[MAX_LIGHTS]; + +void main() +{ + vec3 lightDot = vec3(0.0); + vec3 normal = normalize(fragNormal); + vec3 viewD = normalize(viewPos - fragPosition); + vec3 specular = vec3(0.0); + + for (int i = 0; i < MAX_LIGHTS; i++) + { + if (lights[i].enabled == 1) + { + vec3 light = vec3(0.0); + + if (lights[i].type == LIGHT_DIRECTIONAL) + light = -normalize(lights[i].target - lights[i].position); + + if (lights[i].type == LIGHT_POINT) + light = normalize(lights[i].position - fragPosition); + + float NdotL = max(dot(normal, light), 0.0); + lightDot += lights[i].color.rgb * NdotL; + + if (NdotL > 0.0) + { + float specCo = pow(max(0.0, dot(viewD, reflect(-light, normal))), 16.0); + specular += specCo; + } + } + } + + vec4 finalColor = (fragColor * ((colDiffuse + vec4(specular, 1.0)) * vec4(lightDot, 1.0))); + finalColor += fragColor * (ambient / 10.0) * colDiffuse; + + finalColor = pow(finalColor, vec4(1.0/2.2)); // gamma correction + + gl_FragColor = finalColor; +} diff --git a/examples/models/resources/shaders/glsl120/voxel_lighting.vs b/examples/models/resources/shaders/glsl120/voxel_lighting.vs new file mode 100644 index 000000000..2a5930fd9 --- /dev/null +++ b/examples/models/resources/shaders/glsl120/voxel_lighting.vs @@ -0,0 +1,23 @@ +// Input vertex attributes +attribute vec3 vertexPosition; +attribute vec3 vertexNormal; +attribute vec4 vertexColor; + +// Uniforms +uniform mat4 mvp; +uniform mat4 matModel; +uniform mat4 matNormal; + +// Output to fragment shader +varying vec3 fragPosition; +varying vec4 fragColor; +varying vec3 fragNormal; + +void main() +{ + fragPosition = vec3(matModel * vec4(vertexPosition, 1.0)); + fragColor = vertexColor; + fragNormal = normalize(vec3(matNormal * vec4(vertexNormal, 1.0))); + + gl_Position = mvp * vec4(vertexPosition, 1.0); +} From df200b942c2a9fa3f33583f2d42c4291cde3f740 Mon Sep 17 00:00:00 2001 From: Johnny Cena Date: Wed, 20 Aug 2025 12:16:57 +0200 Subject: [PATCH 268/328] add versions to new shaders --- examples/models/resources/shaders/glsl100/voxel_lighting.fs | 1 + examples/models/resources/shaders/glsl100/voxel_lighting.vs | 1 + examples/models/resources/shaders/glsl120/voxel_lighting.fs | 1 + examples/models/resources/shaders/glsl120/voxel_lighting.vs | 1 + 4 files changed, 4 insertions(+) diff --git a/examples/models/resources/shaders/glsl100/voxel_lighting.fs b/examples/models/resources/shaders/glsl100/voxel_lighting.fs index ba02ad21e..b9a57cfc9 100644 --- a/examples/models/resources/shaders/glsl100/voxel_lighting.fs +++ b/examples/models/resources/shaders/glsl100/voxel_lighting.fs @@ -1,3 +1,4 @@ +#version 100 #ifdef GL_ES precision mediump float; #endif diff --git a/examples/models/resources/shaders/glsl100/voxel_lighting.vs b/examples/models/resources/shaders/glsl100/voxel_lighting.vs index e8951eb75..165365528 100644 --- a/examples/models/resources/shaders/glsl100/voxel_lighting.vs +++ b/examples/models/resources/shaders/glsl100/voxel_lighting.vs @@ -1,3 +1,4 @@ +#version 100 #ifdef GL_ES precision mediump float; #endif diff --git a/examples/models/resources/shaders/glsl120/voxel_lighting.fs b/examples/models/resources/shaders/glsl120/voxel_lighting.fs index dab171950..eb01f96bb 100644 --- a/examples/models/resources/shaders/glsl120/voxel_lighting.fs +++ b/examples/models/resources/shaders/glsl120/voxel_lighting.fs @@ -1,3 +1,4 @@ +#version 120 // Input from vertex shader varying vec3 fragPosition; varying vec4 fragColor; diff --git a/examples/models/resources/shaders/glsl120/voxel_lighting.vs b/examples/models/resources/shaders/glsl120/voxel_lighting.vs index 2a5930fd9..75163c7f8 100644 --- a/examples/models/resources/shaders/glsl120/voxel_lighting.vs +++ b/examples/models/resources/shaders/glsl120/voxel_lighting.vs @@ -1,3 +1,4 @@ +#version 120 // Input vertex attributes attribute vec3 vertexPosition; attribute vec3 vertexNormal; From a99649b455a9fb05c825776cf02a75302fbe4dac Mon Sep 17 00:00:00 2001 From: Johnny Cena Date: Wed, 20 Aug 2025 12:18:51 +0200 Subject: [PATCH 269/328] remove unneeded checks --- examples/models/resources/shaders/glsl100/voxel_lighting.fs | 3 +-- examples/models/resources/shaders/glsl100/voxel_lighting.vs | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/examples/models/resources/shaders/glsl100/voxel_lighting.fs b/examples/models/resources/shaders/glsl100/voxel_lighting.fs index b9a57cfc9..f23d9292d 100644 --- a/examples/models/resources/shaders/glsl100/voxel_lighting.fs +++ b/examples/models/resources/shaders/glsl100/voxel_lighting.fs @@ -1,7 +1,6 @@ #version 100 -#ifdef GL_ES + precision mediump float; -#endif // Input from vertex shader varying vec3 fragPosition; diff --git a/examples/models/resources/shaders/glsl100/voxel_lighting.vs b/examples/models/resources/shaders/glsl100/voxel_lighting.vs index 165365528..12f53ed32 100644 --- a/examples/models/resources/shaders/glsl100/voxel_lighting.vs +++ b/examples/models/resources/shaders/glsl100/voxel_lighting.vs @@ -1,7 +1,6 @@ #version 100 -#ifdef GL_ES + precision mediump float; -#endif // Input vertex attributes attribute vec3 vertexPosition; From 99cb82a82ce9973d45e61ad24ad9899e6f1d0d38 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 20 Aug 2025 16:39:45 +0200 Subject: [PATCH 270/328] REVIEWED: [rmodels] `LoadGLFT()`, avoid loading attributes already loaded, issue a warning. FIX: #4996 --- src/rmodels.c | 377 ++++++++++++++++++++++++++------------------------ 1 file changed, 197 insertions(+), 180 deletions(-) diff --git a/src/rmodels.c b/src/rmodels.c index c1a32058a..ebd3b92d1 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -5488,14 +5488,16 @@ static Model LoadGLTF(const char *fileName) // Other possible materials not supported by raylib pipeline: // has_clearcoat, has_transmission, has_volume, has_ior, has specular, has_sheen } + //---------------------------------------------------------------------------------------------------- - // Visit each node in the hierarchy and process any mesh linked from it - // Each primitive within a glTF node becomes a Raylib Mesh - // The local-to-world transform of each node is used to transform the - // points/normals/tangents of the created Mesh(es) - // Any glTF mesh linked from more than one Node (i.e. instancing) - // is turned into multiple Mesh's, as each Node will have its own transform applied - // NOTE: The code below disregards the scenes defined in the file, all nodes are used + // Load meshes data + // + // NOTE: Visit each node in the hierarchy and process any mesh linked from it + // - Each primitive within a glTF node becomes a raylib Mesh + // - The local-to-world transform of each node is used to transform the points/normals/tangents of the created Mesh(es) + // - Any glTF mesh linked from more than one Node (i.e. instancing) is turned into multiple Mesh's, as each Node will have its own transform applied + // + // WARNING: The code below disregards the scenes defined in the file, all nodes are used //---------------------------------------------------------------------------------------------------- int meshIndex = 0; for (unsigned int i = 0; i < data->nodes_count; i++) @@ -5503,8 +5505,7 @@ static Model LoadGLTF(const char *fileName) cgltf_node *node = &(data->nodes[i]); cgltf_mesh *mesh = node->mesh; - if (!mesh) - continue; + if (!mesh) continue; cgltf_float worldTransform[16]; cgltf_node_transform_world(node, worldTransform); @@ -5535,75 +5536,87 @@ static Model LoadGLTF(const char *fileName) cgltf_accessor *attribute = mesh->primitives[p].attributes[j].data; // WARNING: SPECS: POSITION accessor MUST have its min and max properties defined - - if ((attribute->type == cgltf_type_vec3) && (attribute->component_type == cgltf_component_type_r_32f)) + + if (model.meshes[meshIndex].vertices != NULL) TRACELOG(LOG_WARNING, "MODEL: [%s] Vertices attribute data already loaded", fileName); + else { - // Init raylib mesh vertices to copy glTF attribute data - model.meshes[meshIndex].vertexCount = (int)attribute->count; - model.meshes[meshIndex].vertices = (float *)RL_MALLOC(attribute->count*3*sizeof(float)); - - // Load 3 components of float data type into mesh.vertices - LOAD_ATTRIBUTE(attribute, 3, float, model.meshes[meshIndex].vertices) - - // Transform the vertices - float *vertices = model.meshes[meshIndex].vertices; - for (unsigned int k = 0; k < attribute->count; k++) + if ((attribute->type == cgltf_type_vec3) && (attribute->component_type == cgltf_component_type_r_32f)) { - Vector3 vt = Vector3Transform((Vector3){ vertices[3*k], vertices[3*k+1], vertices[3*k+2] }, worldMatrix); - vertices[3*k] = vt.x; - vertices[3*k+1] = vt.y; - vertices[3*k+2] = vt.z; + // Init raylib mesh vertices to copy glTF attribute data + model.meshes[meshIndex].vertexCount = (int)attribute->count; + model.meshes[meshIndex].vertices = (float *)RL_MALLOC(attribute->count*3*sizeof(float)); + + // Load 3 components of float data type into mesh.vertices + LOAD_ATTRIBUTE(attribute, 3, float, model.meshes[meshIndex].vertices) + + // Transform the vertices + float *vertices = model.meshes[meshIndex].vertices; + for (unsigned int k = 0; k < attribute->count; k++) + { + Vector3 vt = Vector3Transform((Vector3){ vertices[3*k], vertices[3*k+1], vertices[3*k+2] }, worldMatrix); + vertices[3*k] = vt.x; + vertices[3*k+1] = vt.y; + vertices[3*k+2] = vt.z; + } } + else TRACELOG(LOG_WARNING, "MODEL: [%s] Vertices attribute data format not supported, use vec3 float", fileName); } - else TRACELOG(LOG_WARNING, "MODEL: [%s] Vertices attribute data format not supported, use vec3 float", fileName); } else if (mesh->primitives[p].attributes[j].type == cgltf_attribute_type_normal) // NORMAL, vec3, float { cgltf_accessor *attribute = mesh->primitives[p].attributes[j].data; - if ((attribute->type == cgltf_type_vec3) && (attribute->component_type == cgltf_component_type_r_32f)) + if (model.meshes[meshIndex].normals != NULL) TRACELOG(LOG_WARNING, "MODEL: [%s] Normals attribute data already loaded", fileName); + else { - // Init raylib mesh normals to copy glTF attribute data - model.meshes[meshIndex].normals = (float *)RL_MALLOC(attribute->count*3*sizeof(float)); - - // Load 3 components of float data type into mesh.normals - LOAD_ATTRIBUTE(attribute, 3, float, model.meshes[meshIndex].normals) - - // Transform the normals - float *normals = model.meshes[meshIndex].normals; - for (unsigned int k = 0; k < attribute->count; k++) + if ((attribute->type == cgltf_type_vec3) && (attribute->component_type == cgltf_component_type_r_32f)) { - Vector3 nt = Vector3Transform((Vector3){ normals[3*k], normals[3*k+1], normals[3*k+2] }, worldMatrixNormals); - normals[3*k] = nt.x; - normals[3*k+1] = nt.y; - normals[3*k+2] = nt.z; + // Init raylib mesh normals to copy glTF attribute data + model.meshes[meshIndex].normals = (float *)RL_MALLOC(attribute->count*3*sizeof(float)); + + // Load 3 components of float data type into mesh.normals + LOAD_ATTRIBUTE(attribute, 3, float, model.meshes[meshIndex].normals) + + // Transform the normals + float *normals = model.meshes[meshIndex].normals; + for (unsigned int k = 0; k < attribute->count; k++) + { + Vector3 nt = Vector3Transform((Vector3){ normals[3*k], normals[3*k+1], normals[3*k+2] }, worldMatrixNormals); + normals[3*k] = nt.x; + normals[3*k+1] = nt.y; + normals[3*k+2] = nt.z; + } } + else TRACELOG(LOG_WARNING, "MODEL: [%s] Normals attribute data format not supported, use vec3 float", fileName); } - else TRACELOG(LOG_WARNING, "MODEL: [%s] Normal attribute data format not supported, use vec3 float", fileName); } else if (mesh->primitives[p].attributes[j].type == cgltf_attribute_type_tangent) // TANGENT, vec4, float, w is tangent basis sign { cgltf_accessor *attribute = mesh->primitives[p].attributes[j].data; - if ((attribute->type == cgltf_type_vec4) && (attribute->component_type == cgltf_component_type_r_32f)) + if (model.meshes[meshIndex].tangents != NULL) TRACELOG(LOG_WARNING, "MODEL: [%s] Tangents attribute data already loaded", fileName); + else { - // Init raylib mesh tangent to copy glTF attribute data - model.meshes[meshIndex].tangents = (float *)RL_MALLOC(attribute->count*4*sizeof(float)); - - // Load 4 components of float data type into mesh.tangents - LOAD_ATTRIBUTE(attribute, 4, float, model.meshes[meshIndex].tangents) - - // Transform the tangents - float *tangents = model.meshes[meshIndex].tangents; - for (unsigned int k = 0; k < attribute->count; k++) + if ((attribute->type == cgltf_type_vec4) && (attribute->component_type == cgltf_component_type_r_32f)) { - Vector3 tt = Vector3Transform((Vector3){ tangents[4*k], tangents[4*k+1], tangents[4*k+2] }, worldMatrix); - tangents[4*k] = tt.x; - tangents[4*k+1] = tt.y; - tangents[4*k+2] = tt.z; + // Init raylib mesh tangent to copy glTF attribute data + model.meshes[meshIndex].tangents = (float *)RL_MALLOC(attribute->count*4*sizeof(float)); + + // Load 4 components of float data type into mesh.tangents + LOAD_ATTRIBUTE(attribute, 4, float, model.meshes[meshIndex].tangents) + + // Transform the tangents + float *tangents = model.meshes[meshIndex].tangents; + for (unsigned int k = 0; k < attribute->count; k++) + { + Vector3 tt = Vector3Transform((Vector3){ tangents[4*k], tangents[4*k+1], tangents[4*k+2] }, worldMatrix); + tangents[4*k] = tt.x; + tangents[4*k+1] = tt.y; + tangents[4*k+2] = tt.z; + } } + else TRACELOG(LOG_WARNING, "MODEL: [%s] Tangents attribute data format not supported, use vec4 float", fileName); } - else TRACELOG(LOG_WARNING, "MODEL: [%s] Tangent attribute data format not supported, use vec4 float", fileName); } else if (mesh->primitives[p].attributes[j].type == cgltf_attribute_type_texcoord) // TEXCOORD_n, vec2, float/u8n/u16n { @@ -5669,114 +5682,118 @@ static Model LoadGLTF(const char *fileName) // WARNING: SPECS: All components of each COLOR_n accessor element MUST be clamped to [0.0, 1.0] range - if (attribute->type == cgltf_type_vec3) // RGB + if (model.meshes[meshIndex].colors != NULL) TRACELOG(LOG_WARNING, "MODEL: [%s] Colors attribute data already loaded", fileName); + else { - if (attribute->component_type == cgltf_component_type_r_8u) + if (attribute->type == cgltf_type_vec3) // RGB { - // Init raylib mesh color to copy glTF attribute data - model.meshes[meshIndex].colors = (unsigned char *)RL_MALLOC(attribute->count*4*sizeof(unsigned char)); - - // Load data into a temp buffer to be converted to raylib data type - unsigned char *temp = (unsigned char *)RL_MALLOC(attribute->count*3*sizeof(unsigned char)); - LOAD_ATTRIBUTE(attribute, 3, unsigned char, temp); - - // Convert data to raylib color data type (4 bytes) - for (unsigned int c = 0, k = 0; c < (attribute->count*4 - 3); c += 4, k += 3) + if (attribute->component_type == cgltf_component_type_r_8u) { - model.meshes[meshIndex].colors[c] = temp[k]; - model.meshes[meshIndex].colors[c + 1] = temp[k + 1]; - model.meshes[meshIndex].colors[c + 2] = temp[k + 2]; - model.meshes[meshIndex].colors[c + 3] = 255; - } + // Init raylib mesh color to copy glTF attribute data + model.meshes[meshIndex].colors = (unsigned char *)RL_MALLOC(attribute->count*4*sizeof(unsigned char)); - RL_FREE(temp); + // Load data into a temp buffer to be converted to raylib data type + unsigned char *temp = (unsigned char *)RL_MALLOC(attribute->count*3*sizeof(unsigned char)); + LOAD_ATTRIBUTE(attribute, 3, unsigned char, temp); + + // Convert data to raylib color data type (4 bytes) + for (unsigned int c = 0, k = 0; c < (attribute->count*4 - 3); c += 4, k += 3) + { + model.meshes[meshIndex].colors[c] = temp[k]; + model.meshes[meshIndex].colors[c + 1] = temp[k + 1]; + model.meshes[meshIndex].colors[c + 2] = temp[k + 2]; + model.meshes[meshIndex].colors[c + 3] = 255; + } + + RL_FREE(temp); + } + else if (attribute->component_type == cgltf_component_type_r_16u) + { + // Init raylib mesh color to copy glTF attribute data + model.meshes[meshIndex].colors = (unsigned char *)RL_MALLOC(attribute->count*4*sizeof(unsigned char)); + + // Load data into a temp buffer to be converted to raylib data type + unsigned short *temp = (unsigned short *)RL_MALLOC(attribute->count*3*sizeof(unsigned short)); + LOAD_ATTRIBUTE(attribute, 3, unsigned short, temp); + + // Convert data to raylib color data type (4 bytes) + for (unsigned int c = 0, k = 0; c < (attribute->count*4 - 3); c += 4, k += 3) + { + model.meshes[meshIndex].colors[c] = (unsigned char)(((float)temp[k]/65535.0f)*255.0f); + model.meshes[meshIndex].colors[c + 1] = (unsigned char)(((float)temp[k + 1]/65535.0f)*255.0f); + model.meshes[meshIndex].colors[c + 2] = (unsigned char)(((float)temp[k + 2]/65535.0f)*255.0f); + model.meshes[meshIndex].colors[c + 3] = 255; + } + + RL_FREE(temp); + } + else if (attribute->component_type == cgltf_component_type_r_32f) + { + // Init raylib mesh color to copy glTF attribute data + model.meshes[meshIndex].colors = (unsigned char *)RL_MALLOC(attribute->count*4*sizeof(unsigned char)); + + // Load data into a temp buffer to be converted to raylib data type + float *temp = (float *)RL_MALLOC(attribute->count*3*sizeof(float)); + LOAD_ATTRIBUTE(attribute, 3, float, temp); + + // Convert data to raylib color data type (4 bytes) + for (unsigned int c = 0, k = 0; c < (attribute->count*4 - 3); c += 4, k += 3) + { + model.meshes[meshIndex].colors[c] = (unsigned char)(temp[k]*255.0f); + model.meshes[meshIndex].colors[c + 1] = (unsigned char)(temp[k + 1]*255.0f); + model.meshes[meshIndex].colors[c + 2] = (unsigned char)(temp[k + 2]*255.0f); + model.meshes[meshIndex].colors[c + 3] = 255; + } + + RL_FREE(temp); + } + else TRACELOG(LOG_WARNING, "MODEL: [%s] Color attribute data format not supported", fileName); } - else if (attribute->component_type == cgltf_component_type_r_16u) + else if (attribute->type == cgltf_type_vec4) // RGBA { - // Init raylib mesh color to copy glTF attribute data - model.meshes[meshIndex].colors = (unsigned char *)RL_MALLOC(attribute->count*4*sizeof(unsigned char)); - - // Load data into a temp buffer to be converted to raylib data type - unsigned short *temp = (unsigned short *)RL_MALLOC(attribute->count*3*sizeof(unsigned short)); - LOAD_ATTRIBUTE(attribute, 3, unsigned short, temp); - - // Convert data to raylib color data type (4 bytes) - for (unsigned int c = 0, k = 0; c < (attribute->count*4 - 3); c += 4, k += 3) + if (attribute->component_type == cgltf_component_type_r_8u) { - model.meshes[meshIndex].colors[c] = (unsigned char)(((float)temp[k]/65535.0f)*255.0f); - model.meshes[meshIndex].colors[c + 1] = (unsigned char)(((float)temp[k + 1]/65535.0f)*255.0f); - model.meshes[meshIndex].colors[c + 2] = (unsigned char)(((float)temp[k + 2]/65535.0f)*255.0f); - model.meshes[meshIndex].colors[c + 3] = 255; + // Init raylib mesh color to copy glTF attribute data + model.meshes[meshIndex].colors = (unsigned char *)RL_MALLOC(attribute->count*4*sizeof(unsigned char)); + + // Load 4 components of unsigned char data type into mesh.colors + LOAD_ATTRIBUTE(attribute, 4, unsigned char, model.meshes[meshIndex].colors) } - - RL_FREE(temp); - } - else if (attribute->component_type == cgltf_component_type_r_32f) - { - // Init raylib mesh color to copy glTF attribute data - model.meshes[meshIndex].colors = (unsigned char *)RL_MALLOC(attribute->count*4*sizeof(unsigned char)); - - // Load data into a temp buffer to be converted to raylib data type - float *temp = (float *)RL_MALLOC(attribute->count*3*sizeof(float)); - LOAD_ATTRIBUTE(attribute, 3, float, temp); - - // Convert data to raylib color data type (4 bytes) - for (unsigned int c = 0, k = 0; c < (attribute->count*4 - 3); c += 4, k += 3) + else if (attribute->component_type == cgltf_component_type_r_16u) { - model.meshes[meshIndex].colors[c] = (unsigned char)(temp[k]*255.0f); - model.meshes[meshIndex].colors[c + 1] = (unsigned char)(temp[k + 1]*255.0f); - model.meshes[meshIndex].colors[c + 2] = (unsigned char)(temp[k + 2]*255.0f); - model.meshes[meshIndex].colors[c + 3] = 255; - } + // Init raylib mesh color to copy glTF attribute data + model.meshes[meshIndex].colors = (unsigned char *)RL_MALLOC(attribute->count*4*sizeof(unsigned char)); - RL_FREE(temp); + // Load data into a temp buffer to be converted to raylib data type + unsigned short *temp = (unsigned short *)RL_MALLOC(attribute->count*4*sizeof(unsigned short)); + LOAD_ATTRIBUTE(attribute, 4, unsigned short, temp); + + // Convert data to raylib color data type (4 bytes) + for (unsigned int c = 0; c < attribute->count*4; c++) model.meshes[meshIndex].colors[c] = (unsigned char)(((float)temp[c]/65535.0f)*255.0f); + + RL_FREE(temp); + } + else if (attribute->component_type == cgltf_component_type_r_32f) + { + // Init raylib mesh color to copy glTF attribute data + model.meshes[meshIndex].colors = (unsigned char *)RL_MALLOC(attribute->count*4*sizeof(unsigned char)); + + // Load data into a temp buffer to be converted to raylib data type + float *temp = (float *)RL_MALLOC(attribute->count*4*sizeof(float)); + LOAD_ATTRIBUTE(attribute, 4, float, temp); + + // Convert data to raylib color data type (4 bytes), we expect the color data normalized + for (unsigned int c = 0; c < attribute->count*4; c++) model.meshes[meshIndex].colors[c] = (unsigned char)(temp[c]*255.0f); + + RL_FREE(temp); + } + else TRACELOG(LOG_WARNING, "MODEL: [%s] Color attribute data format not supported", fileName); } else TRACELOG(LOG_WARNING, "MODEL: [%s] Color attribute data format not supported", fileName); } - else if (attribute->type == cgltf_type_vec4) // RGBA - { - if (attribute->component_type == cgltf_component_type_r_8u) - { - // Init raylib mesh color to copy glTF attribute data - model.meshes[meshIndex].colors = (unsigned char *)RL_MALLOC(attribute->count*4*sizeof(unsigned char)); - - // Load 4 components of unsigned char data type into mesh.colors - LOAD_ATTRIBUTE(attribute, 4, unsigned char, model.meshes[meshIndex].colors) - } - else if (attribute->component_type == cgltf_component_type_r_16u) - { - // Init raylib mesh color to copy glTF attribute data - model.meshes[meshIndex].colors = (unsigned char *)RL_MALLOC(attribute->count*4*sizeof(unsigned char)); - - // Load data into a temp buffer to be converted to raylib data type - unsigned short *temp = (unsigned short *)RL_MALLOC(attribute->count*4*sizeof(unsigned short)); - LOAD_ATTRIBUTE(attribute, 4, unsigned short, temp); - - // Convert data to raylib color data type (4 bytes) - for (unsigned int c = 0; c < attribute->count*4; c++) model.meshes[meshIndex].colors[c] = (unsigned char)(((float)temp[c]/65535.0f)*255.0f); - - RL_FREE(temp); - } - else if (attribute->component_type == cgltf_component_type_r_32f) - { - // Init raylib mesh color to copy glTF attribute data - model.meshes[meshIndex].colors = (unsigned char *)RL_MALLOC(attribute->count*4*sizeof(unsigned char)); - - // Load data into a temp buffer to be converted to raylib data type - float *temp = (float *)RL_MALLOC(attribute->count*4*sizeof(float)); - LOAD_ATTRIBUTE(attribute, 4, float, temp); - - // Convert data to raylib color data type (4 bytes), we expect the color data normalized - for (unsigned int c = 0; c < attribute->count*4; c++) model.meshes[meshIndex].colors[c] = (unsigned char)(temp[c]*255.0f); - - RL_FREE(temp); - } - else TRACELOG(LOG_WARNING, "MODEL: [%s] Color attribute data format not supported", fileName); - } - else TRACELOG(LOG_WARNING, "MODEL: [%s] Color attribute data format not supported", fileName); } - // NOTE: Attributes related to animations are processed separately + // NOTE: Attributes related to animations data are processed after mesh data loading } // Load primitive indices data (if provided) @@ -5786,32 +5803,33 @@ static Model LoadGLTF(const char *fileName) model.meshes[meshIndex].triangleCount = (int)attribute->count/3; - if (attribute->component_type == cgltf_component_type_r_16u) - { - // Init raylib mesh indices to copy glTF attribute data - model.meshes[meshIndex].indices = (unsigned short *)RL_MALLOC(attribute->count*sizeof(unsigned short)); - - // Load unsigned short data type into mesh.indices - LOAD_ATTRIBUTE(attribute, 1, unsigned short, model.meshes[meshIndex].indices) - } - else if (attribute->component_type == cgltf_component_type_r_8u) - { - // Init raylib mesh indices to copy glTF attribute data - model.meshes[meshIndex].indices = (unsigned short *)RL_MALLOC(attribute->count*sizeof(unsigned short)); - LOAD_ATTRIBUTE_CAST(attribute, 1, unsigned char, model.meshes[meshIndex].indices, unsigned short) - - } - else if (attribute->component_type == cgltf_component_type_r_32u) - { - // Init raylib mesh indices to copy glTF attribute data - model.meshes[meshIndex].indices = (unsigned short *)RL_MALLOC(attribute->count*sizeof(unsigned short)); - LOAD_ATTRIBUTE_CAST(attribute, 1, unsigned int, model.meshes[meshIndex].indices, unsigned short); - - TRACELOG(LOG_WARNING, "MODEL: [%s] Indices data converted from u32 to u16, possible loss of data", fileName); - } + if (model.meshes[meshIndex].indices != NULL) TRACELOG(LOG_WARNING, "MODEL: [%s] Indices attribute data already loaded", fileName); else { - TRACELOG(LOG_WARNING, "MODEL: [%s] Indices data format not supported, use u16", fileName); + if (attribute->component_type == cgltf_component_type_r_16u) + { + // Init raylib mesh indices to copy glTF attribute data + model.meshes[meshIndex].indices = (unsigned short *)RL_MALLOC(attribute->count*sizeof(unsigned short)); + + // Load unsigned short data type into mesh.indices + LOAD_ATTRIBUTE(attribute, 1, unsigned short, model.meshes[meshIndex].indices) + } + else if (attribute->component_type == cgltf_component_type_r_8u) + { + // Init raylib mesh indices to copy glTF attribute data + model.meshes[meshIndex].indices = (unsigned short *)RL_MALLOC(attribute->count*sizeof(unsigned short)); + LOAD_ATTRIBUTE_CAST(attribute, 1, unsigned char, model.meshes[meshIndex].indices, unsigned short) + + } + else if (attribute->component_type == cgltf_component_type_r_32u) + { + // Init raylib mesh indices to copy glTF attribute data + model.meshes[meshIndex].indices = (unsigned short *)RL_MALLOC(attribute->count*sizeof(unsigned short)); + LOAD_ATTRIBUTE_CAST(attribute, 1, unsigned int, model.meshes[meshIndex].indices, unsigned short); + + TRACELOG(LOG_WARNING, "MODEL: [%s] Indices data converted from u32 to u16, possible loss of data", fileName); + } + else TRACELOG(LOG_WARNING, "MODEL: [%s] Indices data format not supported, use u16", fileName); } } else model.meshes[meshIndex].triangleCount = model.meshes[meshIndex].vertexCount/3; // Unindexed mesh @@ -5834,8 +5852,9 @@ static Model LoadGLTF(const char *fileName) meshIndex++; // Move to next mesh } } + //---------------------------------------------------------------------------------------------------- - // Load glTF meshes animation data + // Load animation data // REF: https://www.khronos.org/registry/glTF/specs/2.0/glTF-2.0.html#skins // REF: https://www.khronos.org/registry/glTF/specs/2.0/glTF-2.0.html#skinned-mesh-attributes // @@ -5863,10 +5882,8 @@ static Model LoadGLTF(const char *fileName) }; MatrixDecompose(worldMatrix, &(model.bindPose[i].translation), &(model.bindPose[i].rotation), &(model.bindPose[i].scale)); } - } - if (data->skins_count > 1) - { - TRACELOG(LOG_WARNING, "MODEL: [%s] can only load one skin (armature) per model, but gltf skins_count == %i", fileName, data->skins_count); + + if (data->skins_count > 1) TRACELOG(LOG_WARNING, "MODEL: [%s] can only load one skin (armature) per model, but gltf skins_count == %i", fileName, data->skins_count); } meshIndex = 0; @@ -5875,8 +5892,7 @@ static Model LoadGLTF(const char *fileName) cgltf_node *node = &(data->nodes[i]); cgltf_mesh *mesh = node->mesh; - if (!mesh) - continue; + if (!mesh) continue; for (unsigned int p = 0; p < mesh->primitives_count; p++) { @@ -6039,6 +6055,7 @@ static Model LoadGLTF(const char *fileName) meshIndex++; // Move to next mesh } } + //---------------------------------------------------------------------------------------------------- // Free all cgltf loaded data cgltf_free(data); From 238163c6cadb150605247b8c6f22b00458e16cdc Mon Sep 17 00:00:00 2001 From: Maicon Santana Date: Thu, 21 Aug 2025 11:31:40 +0100 Subject: [PATCH 271/328] swap local variable `isCursorHidden` to use new method `IsCursorHidden()` --- examples/core/core_input_mouse.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/examples/core/core_input_mouse.c b/examples/core/core_input_mouse.c index 58c1c4035..55f00b809 100644 --- a/examples/core/core_input_mouse.c +++ b/examples/core/core_input_mouse.c @@ -29,7 +29,6 @@ int main(void) Vector2 ballPosition = { -100.0f, -100.0f }; Color ballColor = DARKBLUE; - int isCursorHidden = 0; SetTargetFPS(60); // Set our game to run at 60 frames-per-second //--------------------------------------------------------------------------------------- @@ -41,15 +40,13 @@ int main(void) //---------------------------------------------------------------------------------- if (IsKeyPressed(KEY_H)) { - if (isCursorHidden == 0) + if (IsCursorHidden()) { - HideCursor(); - isCursorHidden = 1; + ShowCursor(); } else { - ShowCursor(); - isCursorHidden = 0; + HideCursor(); } } @@ -75,7 +72,7 @@ int main(void) DrawText("move ball with mouse and click mouse button to change color", 10, 10, 20, DARKGRAY); DrawText("Press 'H' to toggle cursor visibility", 10, 30, 20, DARKGRAY); - if (isCursorHidden == 1) DrawText("CURSOR HIDDEN", 20, 60, 20, RED); + if (!IsCursorHidden()) DrawText("CURSOR HIDDEN", 20, 60, 20, RED); else DrawText("CURSOR VISIBLE", 20, 60, 20, LIME); EndDrawing(); From 2deae294c691c0037a3b7da66506dd04ed39bb53 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 21 Aug 2025 13:02:19 +0200 Subject: [PATCH 272/328] [raudio] Properly close FLAC in UnloadMusicStream Fix raysan5/raylib#5131. --- src/raudio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/raudio.c b/src/raudio.c index e21bf578c..e9d76fa99 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -1767,7 +1767,7 @@ void UnloadMusicStream(Music music) else if (music.ctxType == MUSIC_AUDIO_QOA) qoaplay_close((qoaplay_desc *)music.ctxData); #endif #if defined(SUPPORT_FILEFORMAT_FLAC) - else if (music.ctxType == MUSIC_AUDIO_FLAC) drflac_free((drflac *)music.ctxData, NULL); + else if (music.ctxType == MUSIC_AUDIO_FLAC) { drflac_close((drflac *)music.ctxData); drflac_free((drflac *)music.ctxData, NULL); } #endif #if defined(SUPPORT_FILEFORMAT_XM) else if (music.ctxType == MUSIC_MODULE_XM) jar_xm_free_context((jar_xm_context_t *)music.ctxData); From 5d9c8c365e29e27901c4800a58af42f6bcfd2c14 Mon Sep 17 00:00:00 2001 From: alexander-nichols Date: Thu, 21 Aug 2025 17:42:07 +0100 Subject: [PATCH 273/328] [build] Fixed VS2022 broken build Fixed bad references to shaders_normalmap in the project raylib\projects\VS2022\examples\shaders_normal_map.vcxproj Changed GUID for shaders_normal_map as it coincided with that for core_3d_fps_controller {6B1A933E-71B8-4C1F-9E79-02D98830E671} --- .../examples/shaders_normal_map.vcxproj | 8 +-- projects/VS2022/raylib.sln | 52 +++++++++---------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/projects/VS2022/examples/shaders_normal_map.vcxproj b/projects/VS2022/examples/shaders_normal_map.vcxproj index 5af02f256..a3e8e9981 100644 --- a/projects/VS2022/examples/shaders_normal_map.vcxproj +++ b/projects/VS2022/examples/shaders_normal_map.vcxproj @@ -51,11 +51,11 @@ - {6B1A933E-71B8-4C1F-9E79-02D98830E671} + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3} Win32Proj - shaders_normalmap + shaders_normal_map 10.0 - shaders_normalmap + shaders_normal_map @@ -553,7 +553,7 @@ - + diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 3d95eb44a..65d48a2dc 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -335,7 +335,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_virtual_controls EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_fps_controller", "examples\core_3d_fps_controller.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_normal_map", "examples\shaders_normal_map.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_normal_map", "examples\shaders_normal_map.vcxproj", "{6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -4109,30 +4109,30 @@ Global {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|ARM64.Build.0 = Debug|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x64.ActiveCfg = Debug|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x64.Build.0 = Debug|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x86.ActiveCfg = Debug|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x86.Build.0 = Debug|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|ARM64.ActiveCfg = Release|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|ARM64.Build.0 = Release|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x64.ActiveCfg = Release|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x64.Build.0 = Release|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x86.ActiveCfg = Release|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -4301,8 +4301,8 @@ Global {C54703BF-D68A-480D-BE27-49B62E45D582} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {9CD8BCAD-F212-4BCC-BA98-899743CE3279} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} {0981CA28-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} From 4e71e91a4aa6296b235cdbeb7f6700a0f4096059 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 21 Aug 2025 19:30:44 +0200 Subject: [PATCH 274/328] REXM: Replace example name on project file --- tools/rexm/rexm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 64a253934..1732ec4c9 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -599,7 +599,8 @@ int main(int argc, char *argv[]) exName + strlen(exCategory) + 1, exRename + strlen(exRecategory) + 1); // Skip category // Edit: Rename example project and solution - rename(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), + FileTextReplace(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), exName, exRename); + FileRename(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exRename)); FileTextReplace(TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath), exName, exRename); } From ce8bcb332b729f22a011d638c036126b227e7fc1 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 21 Aug 2025 19:37:59 +0200 Subject: [PATCH 275/328] Using internal defined `File*()` functions --- tools/rexm/rexm.c | 47 ++++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 1732ec4c9..92f938f55 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -583,9 +583,9 @@ int main(int argc, char *argv[]) TextFormat("%s;%s", exRecategory, exRename)); // Edit: Rename example code and screenshot files .c and .png - rename(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName), + FileRename(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName), TextFormat("%s/%s/%s.c", exBasePath, exCategory, exRename)); - rename(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName), + FileRename(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName), TextFormat("%s/%s/%s.png", exBasePath, exCategory, exRename)); // NOTE: Example resource files do not need to be changed... @@ -617,21 +617,21 @@ int main(int argc, char *argv[]) // Edit: Rename example code file (copy and remove) FileCopy(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName), TextFormat("%s/%s/%s.c", exBasePath, exCategory, exRename)); - remove(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + FileRemove(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); // Edit: Rename example screenshot file (copy and remove) FileCopy(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName), TextFormat("%s/%s/%s.png", exBasePath, exCategory, exRename)); - remove(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); + FileRemove(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); // Edit: Update required files: Makefile, Makefile.Web, README.md, examples.js UpdateRequiredFiles(); } // Remove old web compilation - remove(TextFormat("%s/%s/%s.html", exWebPath, exCategory, exName)); - remove(TextFormat("%s/%s/%s.data", exWebPath, exCategory, exName)); - remove(TextFormat("%s/%s/%s.wasm", exWebPath, exCategory, exName)); - remove(TextFormat("%s/%s/%s.js", exWebPath, exCategory, exName)); + FileRemove(TextFormat("%s/%s/%s.html", exWebPath, exCategory, exName)); + FileRemove(TextFormat("%s/%s/%s.data", exWebPath, exCategory, exName)); + FileRemove(TextFormat("%s/%s/%s.wasm", exWebPath, exCategory, exName)); + FileRemove(TextFormat("%s/%s/%s.js", exWebPath, exCategory, exName)); // Recompile example (on raylib side) // NOTE: Tools requirements: emscripten, w64devkit @@ -693,11 +693,11 @@ int main(int argc, char *argv[]) for (int v = 0; v < 3; v++) { char *resPathUpdated = TextReplace(resPaths[r], "glsl%i", TextFormat("glsl%i", glslVer[v])); - remove(TextFormat("%s/%s/%s", exBasePath, exCategory, resPathUpdated)); + FileRemove(TextFormat("%s/%s/%s", exBasePath, exCategory, resPathUpdated)); RL_FREE(resPathUpdated); } } - else remove(TextFormat("%s/%s/%s", exBasePath, exCategory, resPaths[r])); + else FileRemove(TextFormat("%s/%s/%s", exBasePath, exCategory, resPaths[r])); } } @@ -707,14 +707,14 @@ int main(int argc, char *argv[]) // Remove: raylib/examples//_example_name.c // Remove: raylib/examples//_example_name.png - remove(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); - remove(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); + FileRemove(TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + FileRemove(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); // Edit: Update required files: Makefile, Makefile.Web, README.md, examples.js UpdateRequiredFiles(); // Remove: raylib/projects/VS2022/examples/_example_name.vcxproj - remove(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName)); + FileRemove(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName)); // Edit: raylib/projects/VS2022/raylib.sln --> Remove example project //--------------------------------------------------------------------------- @@ -727,10 +727,10 @@ int main(int argc, char *argv[]) // Remove: raylib.com/examples//_example_name.data // Remove: raylib.com/examples//_example_name.wasm // Remove: raylib.com/examples//_example_name.js - remove(TextFormat("%s/%s/%s.html", exWebPath, exCategory, exName)); - remove(TextFormat("%s/%s/%s.data", exWebPath, exCategory, exName)); - remove(TextFormat("%s/%s/%s.wasm", exWebPath, exCategory, exName)); - remove(TextFormat("%s/%s/%s.js", exWebPath, exCategory, exName)); + FileRemove(TextFormat("%s/%s/%s.html", exWebPath, exCategory, exName)); + FileRemove(TextFormat("%s/%s/%s.data", exWebPath, exCategory, exName)); + FileRemove(TextFormat("%s/%s/%s.wasm", exWebPath, exCategory, exName)); + FileRemove(TextFormat("%s/%s/%s.js", exWebPath, exCategory, exName)); } break; case OP_VALIDATE: // Validate: report and actions @@ -1621,7 +1621,11 @@ static int FileRename(const char *fileName, const char *fileRename) { int result = 0; - if (FileExists(fileName)) rename(fileName, TextFormat("%s/%s", GetDirectoryPath(fileName), fileRename)); + if (FileExists(fileName)) + { + result = rename(fileName, TextFormat("%s/%s", GetDirectoryPath(fileName), fileRename)); + } + else result = -1; return result; } @@ -1631,7 +1635,11 @@ static int FileRemove(const char *fileName) { int result = 0; - if (FileExists(fileName)) remove(fileName); + if (FileExists(fileName)) + { + result = remove(fileName); + } + else result = -1; return result; } @@ -1647,6 +1655,7 @@ static int FileMove(const char *srcPath, const char *dstPath) FileCopy(srcPath, dstPath); remove(srcPath); } + else result = -1; return result; } From 8b0cbb6f47c07ed2329e2602d5564cb059bb0c27 Mon Sep 17 00:00:00 2001 From: feive7 Date: Thu, 21 Aug 2025 11:10:13 -0700 Subject: [PATCH 276/328] Clamp camera pitch --- examples/core/core_3d_fps_controller.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/core/core_3d_fps_controller.c b/examples/core/core_3d_fps_controller.c index 68fec1af9..cd425a629 100644 --- a/examples/core/core_3d_fps_controller.c +++ b/examples/core/core_3d_fps_controller.c @@ -261,7 +261,9 @@ static void UpdateCameraAngle(Camera *camera) Vector3 right = Vector3Normalize(Vector3CrossProduct(yaw, up)); // Rotate view vector around right axis - Vector3 pitch = Vector3RotateByAxisAngle(yaw, right, -lookRotation.y - lean.y); + float pitchAngle = -player.body.lookRotation.y - player.lean.y; + pitchAngle = Clamp(pitchAngle, -PI / 2 + 0.0001f, PI / 2 - 0.0001f); // Clamp angle so it doesn't go past straight up or straight down + Vector3 pitch = Vector3RotateByAxisAngle(yaw, right, pitchAngle); // Head animation // Rotate up direction around forward axis From 566eb34ff899e6a5010ab18443c4ed2f3a5add57 Mon Sep 17 00:00:00 2001 From: Marcel Ochs Date: Thu, 21 Aug 2025 03:00:49 +0200 Subject: [PATCH 277/328] Update build.zig --- build.zig | 78 +++++++++++++++++++++++++++------------------------ build.zig.zon | 2 +- 2 files changed, 43 insertions(+), 37 deletions(-) diff --git a/build.zig b/build.zig index 409c57ab5..1546e41fb 100644 --- a/build.zig +++ b/build.zig @@ -2,7 +2,7 @@ const std = @import("std"); const builtin = @import("builtin"); /// Minimum supported version of Zig -const min_ver = "0.13.0"; +const min_ver = "0.15.1"; const emccOutputDir = "zig-out" ++ std.fs.path.sep_str ++ "htmlout" ++ std.fs.path.sep_str; const emccOutputFile = "index.html"; @@ -100,25 +100,31 @@ const config_h_flags = outer: { }; fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, options: Options) !*std.Build.Step.Compile { - var raylib_flags_arr = std.ArrayList([]const u8).init(b.allocator); - defer raylib_flags_arr.deinit(); + var raylib_flags_arr: std.ArrayList([]const u8) = .empty; + defer raylib_flags_arr.deinit(b.allocator); - try raylib_flags_arr.appendSlice(&[_][]const u8{ - "-std=gnu99", - "-D_GNU_SOURCE", - "-DGL_SILENCE_DEPRECATION=199309L", - "-fno-sanitize=undefined", // https://github.com/raysan5/raylib/issues/3674 - }); + try raylib_flags_arr.appendSlice( + b.allocator, + &[_][]const u8{ + "-std=gnu99", + "-D_GNU_SOURCE", + "-DGL_SILENCE_DEPRECATION=199309L", + "-fno-sanitize=undefined", // https://github.com/raysan5/raylib/issues/3674 + }, + ); if (options.shared) { - try raylib_flags_arr.appendSlice(&[_][]const u8{ - "-fPIC", - "-DBUILD_LIBTYPE_SHARED", - }); + try raylib_flags_arr.appendSlice( + b.allocator, + &[_][]const u8{ + "-fPIC", + "-DBUILD_LIBTYPE_SHARED", + }, + ); } // Sets a flag indiciating the use of a custom `config.h` - try raylib_flags_arr.append("-DEXTERNAL_CONFIG_FLAGS"); + try raylib_flags_arr.append(b.allocator, "-DEXTERNAL_CONFIG_FLAGS"); if (options.config.len > 0) { // Splits a space-separated list of config flags into multiple flags // @@ -128,7 +134,7 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std. // Apply config flags supplied by the user while (config_iter.next()) |config_flag| - try raylib_flags_arr.append(config_flag); + try raylib_flags_arr.append(b.allocator, config_flag); // Apply all relevant configs from `src/config.h` *except* the user-specified ones // @@ -146,11 +152,11 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std. } // Otherwise, append default value from config.h to compile flags - try raylib_flags_arr.append(flag); + try raylib_flags_arr.append(b.allocator, flag); } } else { // Set default config if no custome config got set - try raylib_flags_arr.appendSlice(&config_h_flags); + try raylib_flags_arr.appendSlice(b.allocator, &config_h_flags); } const raylib = b.addLibrary(.{ @@ -168,28 +174,28 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std. raylib.addIncludePath(b.path("src/external/glfw/include")); } - var c_source_files = try std.ArrayList([]const u8).initCapacity(b.allocator, 2); + var c_source_files: std.ArrayList([]const u8) = try .initCapacity(b.allocator, 2); c_source_files.appendSliceAssumeCapacity(&.{ "src/rcore.c", "src/utils.c" }); if (options.rshapes) { - try c_source_files.append("src/rshapes.c"); - try raylib_flags_arr.append("-DSUPPORT_MODULE_RSHAPES"); + try c_source_files.append(b.allocator, "src/rshapes.c"); + try raylib_flags_arr.append(b.allocator, "-DSUPPORT_MODULE_RSHAPES"); } if (options.rtextures) { - try c_source_files.append("src/rtextures.c"); - try raylib_flags_arr.append("-DSUPPORT_MODULE_RTEXTURES"); + try c_source_files.append(b.allocator, "src/rtextures.c"); + try raylib_flags_arr.append(b.allocator, "-DSUPPORT_MODULE_RTEXTURES"); } if (options.rtext) { - try c_source_files.append("src/rtext.c"); - try raylib_flags_arr.append("-DSUPPORT_MODULE_RTEXT"); + try c_source_files.append(b.allocator, "src/rtext.c"); + try raylib_flags_arr.append(b.allocator, "-DSUPPORT_MODULE_RTEXT"); } if (options.rmodels) { - try c_source_files.append("src/rmodels.c"); - try raylib_flags_arr.append("-DSUPPORT_MODULE_RMODELS"); + try c_source_files.append(b.allocator, "src/rmodels.c"); + try raylib_flags_arr.append(b.allocator, "-DSUPPORT_MODULE_RMODELS"); } if (options.raudio) { - try c_source_files.append("src/raudio.c"); - try raylib_flags_arr.append("-DSUPPORT_MODULE_RAUDIO"); + try c_source_files.append(b.allocator, "src/raudio.c"); + try raylib_flags_arr.append(b.allocator, "-DSUPPORT_MODULE_RAUDIO"); } if (options.opengl_version != .auto) { @@ -200,7 +206,7 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std. switch (target.result.os.tag) { .windows => { switch (options.platform) { - .glfw => try c_source_files.append("src/rglfw.c"), + .glfw => try c_source_files.append(b.allocator, "src/rglfw.c"), .rgfw, .sdl, .drm, .android => {}, } @@ -261,14 +267,14 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std. raylib.addSystemIncludePath(.{ .cwd_relative = androidAsmPath }); raylib.addSystemIncludePath(.{ .cwd_relative = androidGluePath }); - var libcData = std.ArrayList(u8).init(b.allocator); - const writer = libcData.writer(); + var libcData: std.ArrayList(u8) = .empty; + var aw: std.Io.Writer.Allocating = .fromArrayList(b.allocator, &libcData); try (std.zig.LibCInstallation{ .include_dir = androidIncludePath, .sys_include_dir = androidIncludePath, .crt_dir = androidApiSpecificPath, - }).render(writer); - const libcFile = b.addWriteFiles().add("android-libc.txt", try libcData.toOwnedSlice()); + }).render(&aw.writer); + const libcFile = b.addWriteFiles().add("android-libc.txt", try libcData.toOwnedSlice(b.allocator)); raylib.setLibCFile(libcFile); if (options.opengl_version == .auto) { @@ -279,7 +285,7 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std. setDesktopPlatform(raylib, .android); } else { - try c_source_files.append("src/rglfw.c"); + try c_source_files.append(b.allocator, "src/rglfw.c"); if (options.linux_display_backend == .X11 or options.linux_display_backend == .Both) { raylib.root_module.addCMacro("_GLFW_X11", ""); @@ -320,7 +326,7 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std. } }, .freebsd, .openbsd, .netbsd, .dragonfly => { - try c_source_files.append("rglfw.c"); + try c_source_files.append(b.allocator, "rglfw.c"); raylib.linkSystemLibrary("GL"); raylib.linkSystemLibrary("rt"); raylib.linkSystemLibrary("dl"); @@ -343,7 +349,7 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std. } // On macos rglfw.c include Objective-C files. - try raylib_flags_arr.append("-ObjC"); + try raylib_flags_arr.append(b.allocator, "-ObjC"); raylib.root_module.addCSourceFile(.{ .file = b.path("src/rglfw.c"), .flags = raylib_flags_arr.items, diff --git a/build.zig.zon b/build.zig.zon index 571550860..7037008ed 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -1,7 +1,7 @@ .{ .name = .raylib, .version = "5.5.0", - .minimum_zig_version = "0.14.0", + .minimum_zig_version = "0.15.1", .fingerprint = 0x13035e5cb8bc1ac2, // Changing this has security and trust implications. From 500494f79127276509db3073b652c19fecb7b6c9 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 23 Aug 2025 00:02:19 +0200 Subject: [PATCH 278/328] Update core_3d_fps_controller.c --- examples/core/core_3d_fps_controller.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/examples/core/core_3d_fps_controller.c b/examples/core/core_3d_fps_controller.c index cd425a629..4d8962654 100644 --- a/examples/core/core_3d_fps_controller.c +++ b/examples/core/core_3d_fps_controller.c @@ -106,9 +106,9 @@ int main(void) { // Update //---------------------------------------------------------------------------------- - Vector2 mouse_delta = GetMouseDelta(); - lookRotation.x -= mouse_delta.x*sensitivity.x; - lookRotation.y += mouse_delta.y*sensitivity.y; + Vector2 mouseDelta = GetMouseDelta(); + lookRotation.x -= mouseDelta.x*sensitivity.x; + lookRotation.y += mouseDelta.y*sensitivity.y; char sideway = (IsKeyDown(KEY_D) - IsKeyDown(KEY_A)); char forward = (IsKeyDown(KEY_W) - IsKeyDown(KEY_S)); @@ -261,7 +261,8 @@ static void UpdateCameraAngle(Camera *camera) Vector3 right = Vector3Normalize(Vector3CrossProduct(yaw, up)); // Rotate view vector around right axis - float pitchAngle = -player.body.lookRotation.y - player.lean.y; + float pitchAngle = -lookRotation.y - + lean.y; pitchAngle = Clamp(pitchAngle, -PI / 2 + 0.0001f, PI / 2 - 0.0001f); // Clamp angle so it doesn't go past straight up or straight down Vector3 pitch = Vector3RotateByAxisAngle(yaw, right, pitchAngle); From a7aeb2f2b5582b68abf6ac627e919dc7c371db3c Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 23 Aug 2025 01:59:24 +0200 Subject: [PATCH 279/328] REXM: Add example build option --- tools/rexm/rexm.c | 86 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 66 insertions(+), 20 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 92f938f55..35f5b3dfd 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -112,6 +112,7 @@ typedef enum { OP_REMOVE = 4, // Remove existing example OP_VALIDATE = 5, // Validate examples, using [examples_list.txt] as main source by default OP_UPDATE = 6, // Validate and update required examples (as far as possible) + OP_BUILD = 7, // Build example for desktop and web, copy web output } rlExampleOperation; static const char *exCategories[REXM_MAX_EXAMPLE_CATEGORIES] = { "core", "shapes", "textures", "text", "models", "shaders", "audio", "others" }; @@ -356,6 +357,29 @@ int main(int argc, char *argv[]) opCode = OP_UPDATE; } + else if (strcmp(argv[1], "build") == 0) + { + // Build example for PLATFORM_DESKTOP and PLATFORM_WEB + // NOTE: Build outputs to default directory, usually where the .c file is located, + // to avoid issues with copying resources (at least on Desktop) + // Web build files (.html, .wasm, .js, .data) are copied to raylib.com/examples repo + // Check for valid upcoming argument + if (argc == 2) LOG("WARNING: No example name provided to build\n"); + else if (argc > 3) LOG("WARNING: Too many arguments provided\n"); + else + { + // Verify example exists in collection to be removed + char *exColInfo = LoadFileText(exCollectionFilePath); + if (TextFindIndex(exColInfo, argv[2]) != -1) // Example in the collection + { + strcpy(exName, argv[2]); // Register example name for removal + strncpy(exCategory, exName, TextFindIndex(exName, "_")); + opCode = OP_BUILD; + } + else LOG("WARNING: REMOVE: Example not available in the collection\n"); + UnloadFileText(exColInfo); + } + } } switch (opCode) @@ -540,25 +564,11 @@ int main(int argc, char *argv[]) // Compile to: raylib.com/examples//_example_name.wasm // Compile to: raylib.com/examples//_example_name.js //------------------------------------------------------------------------------------------------ - // TODO: Avoid platform-specific .BAT file - /* - SET RAYLIB_PATH=C:\GitHub\raylib - SET COMPILER_PATH=C:\raylib\w64devkit\bin - ENV_SET PATH=$(COMPILER_PATH) - SET MAKE=mingw32-make - $(MAKE) -f Makefile.Web shaders/shaders_deferred_render PLATFORM=$(PLATFORM) -B - - //int putenv(char *string); // putenv takes a string of the form NAME=VALUE - //int setenv(const char *envname, const char *envval, int overwrite); - //int unsetenv(const char *name); //unset variable - putenv("RAYLIB_DIR=C:\\GitHub\\raylib"); - putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin"); - setenv("RAYLIB_DIR", "C:\\GitHub\\raylib", 1); - unsetenv("RAYLIB_DIR"); - getenv("RAYLIB_DIR"); + //putenv("RAYLIB_DIR=C:\\GitHub\\raylib"); + //putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin"); + // WARNING: EMSDK_PATH must be set to proper location when calling from GitHub Actions system(TextFormat("make -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exCategory, exName)); - */ - system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exCategory, exName)); + //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exCategory, exName)); // Copy results to web side FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), @@ -634,8 +644,9 @@ int main(int argc, char *argv[]) FileRemove(TextFormat("%s/%s/%s.js", exWebPath, exCategory, exName)); // Recompile example (on raylib side) - // NOTE: Tools requirements: emscripten, w64devkit - system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exRecategory, exRename)); + // WARNING: EMSDK_PATH must be set to proper location when calling from GitHub Actions + system(TextFormat("%s/make -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exRecategory, exRename)); + //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exRecategory, exRename)); // Copy results to web side FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exRecategory, exRename), @@ -1133,6 +1144,41 @@ int main(int argc, char *argv[]) //------------------------------------------------------------------------------------------------ } break; + case OP_BUILD: + { + // Build: raylib.com/examples//_example_name.html + // Build: raylib.com/examples//_example_name.data + // Build: raylib.com/examples//_example_name.wasm + // Build: raylib.com/examples//_example_name.js + if (strcmp(exCategory, "others") != 0) // Skipping "others" category + { + // Build example for PLATFORM_DESKTOP + putenv("RAYLIB_DIR=C:\\GitHub\\raylib"); + putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin"); + putenv("MAKE=mingw32-make"); + + ChangeDirectory(exBasePath); + system(TextFormat("%s %s/%s PLATFORM=PLATFORM_DESKTOP -B", getenv("MAKE"), exCategory, exName)); + + // Build example for PLATFORM_WEB + system(TextFormat("%s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", getenv("MAKE"), exCategory, exName)); + //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); + + // Update generated .html metadata + UpdateWebMetadata(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + + // Copy results to web side + FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.html", exWebPath, exCategory, exName)); + FileCopy(TextFormat("%s/%s/%s.data", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.data", exWebPath, exCategory, exName)); + FileCopy(TextFormat("%s/%s/%s.wasm", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.wasm", exWebPath, exCategory, exName)); + FileCopy(TextFormat("%s/%s/%s.js", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.js", exWebPath, exCategory, exName)); + } + } break; default: // Help { // Supported commands: From 11bf3996cf76f0d51f1f8077d7a257e7e9d2a3fe Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 23 Aug 2025 02:00:21 +0200 Subject: [PATCH 280/328] REDM: Add web metadata validation and update --- tools/rexm/rexm.c | 150 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 127 insertions(+), 23 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 35f5b3dfd..32e8aeefb 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -99,8 +99,9 @@ typedef enum { VALID_NOT_IN_JS = 1 << 9, // Not listed in examples.js VALID_INCONSISTENT_INFO = 1 << 10, // Inconsistent info between collection and example header (stars, author...) VALID_MISSING_WEB_OUTPUT = 1 << 11, // Missing .html/.data/.wasm/.js - VALID_INVALID_CATEGORY = 1 << 12, // Not a recognized category - VALID_UNKNOWN_ERROR = 1 << 13 // Unknown failure case (fallback) + VALID_MISSING_WEB_METADATA = 1 << 12, // Missing .html example metadata + VALID_INVALID_CATEGORY = 1 << 13, // Not a recognized category + VALID_UNKNOWN_ERROR = 1 << 14 // Unknown failure case (fallback) } rlExampleValidationStatus; // Example management operations @@ -174,7 +175,10 @@ static int AddVSProjectToSolution(const char *projFile, const char *slnFile, con // Generate unique UUID v4 string // Output format: {9A2F48CC-0DA8-47C0-884E-02E37F9BE6C1} -const char *GenerateUUIDv4(void); +static const char *GenerateUUIDv4(void); + +// Update generated Web example .html file metadata +static void UpdateWebMetadata(const char *exHtmlPath, const char *exFilePath); //------------------------------------------------------------------------------------ // Program main entry point @@ -570,6 +574,10 @@ int main(int argc, char *argv[]) system(TextFormat("make -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exCategory, exName)); //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exCategory, exName)); + // Update generated .html metadata + UpdateWebMetadata(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + // Copy results to web side FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), TextFormat("%s/%s/%s.html", exWebPath, exCategory, exName)); @@ -648,6 +656,10 @@ int main(int argc, char *argv[]) system(TextFormat("%s/make -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exRecategory, exRename)); //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exRecategory, exRename)); + // Update generated .html metadata + UpdateWebMetadata(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + // Copy results to web side FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exRecategory, exRename), TextFormat("%s/%s/%s.html", exWebPath, exRecategory, exRename)); @@ -774,10 +786,10 @@ int main(int argc, char *argv[]) char *exListUpdated = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); bool listUpdated = false; - int exListLen = strlen(exList); + int exListLen = (int)strlen(exList); strcpy(exListUpdated, exList); - for (int i = 0; i < list.count; i++) + for (unsigned int i = 0; i < list.count; i++) { if ((strcmp("examples_template", GetFileNameWithoutExt(list.paths[i])) != 0) && // HACK: Skip "examples_template" (TextFindIndex(exList, GetFileNameWithoutExt(list.paths[i])) == -1)) @@ -908,6 +920,23 @@ int main(int argc, char *argv[]) exInfo->status |= VALID_MISSING_WEB_OUTPUT; } + // Validate: raylib.com/examples//_example_name.html -> Metadata + if (FileExists(TextFormat("%s/%s/%s.html", exWebPath, exInfo->category, exInfo->name))) + { + char *exHtmlText = LoadFileText(TextFormat("%s/%s/%s.html", exWebPath, exInfo->category, exInfo->name)); + + if ((TextFindIndex(exHtmlText, "raylib web game") > -1) || // title + (TextFindIndex(exHtmlText, "New raylib web videogame, developed using raylib videogames library") > -1) || // description + (TextFindIndex(exHtmlText, "https://www.raylib.com/common/raylib_logo.png") > -1) || // image + (TextFindIndex(exHtmlText, "https://www.raylib.com/games.html") > -1) || // url + (TextFindIndex(exHtmlText, "https://github.com/raysan5/raylib") > -1)) // source code button + { + exInfo->status |= VALID_MISSING_WEB_METADATA; + } + + UnloadFileText(exHtmlText); + } + // NOTE: Additional validation elements // Validate: Example naming conventions: /_example_name, valid category if ((TextFindIndex(exInfo->name, exInfo->category) == -1) || @@ -986,9 +1015,14 @@ int main(int argc, char *argv[]) // Review: Add/Remove: raylib.com/examples//_example_name.js // Solves: VALID_MISSING_WEB_OUTPUT if ((strcmp(exInfo->category, "others") != 0) && // Skipping "others" category - exInfo->status & VALID_MISSING_WEB_OUTPUT) + ((exInfo->status & VALID_MISSING_WEB_OUTPUT) || (exInfo->status & VALID_MISSING_WEB_METADATA))) { - system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); + system(TextFormat("%s/make -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exInfo->category, exInfo->name)); + //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); + + // Update generated .html metadata + UpdateWebMetadata(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), + TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); // Copy results to web side FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exInfo->category, exInfo->name), @@ -1033,14 +1067,15 @@ int main(int argc, char *argv[]) [RDME] VALID_NOT_IN_README // Not listed in README.md [JS] VALID_NOT_IN_JS // Not listed in examples.js [WOUT] VALID_MISSING_WEB_OUTPUT // Missing .html/.data/.wasm/.js + [WMETA] VALID_MISSING_WEB_METADATA // Missing .html example metadata [INFO] VALID_INCONSISTENT_INFO // Inconsistent info between collection and example header (stars, author...) [CAT] VALID_INVALID_CATEGORY // Not a recognized category - | [EXAMPLE NAME] | [C] |[CAT]|[INFO]|[PNG]|[WPNG]|[RES]|[MK] |[MKWEB]|[VCX]|[SOL]|[RDME]|[JS] |[WOUT]| - |:-----------------------------|:---:|:---:|:----:|:---:|:----:|:---:|:---:|:-----:|:---:|:---:|:----:|:---:|:----:| - | core_basic_window | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | - | shapes_colors_palette | ✘ | ✔ | ✘ | ✔ | ✘ | ✔ | ✔ | ✘ | ✔ | ✔ | ✔ | ✔ | ✔ | - | text_format_text | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✔ | ✘ | ✔ | ✔ | ✔ | + | [EXAMPLE NAME] | [C] |[CAT]|[INFO]|[PNG]|[WPNG]|[RES]|[MK] |[MKWEB]|[VCX]|[SOL]|[RDME]|[JS] |[WOUT]|[WMETA]| + |:-----------------------------|:---:|:---:|:----:|:---:|:----:|:---:|:---:|:-----:|:---:|:---:|:----:|:---:|:----:|:-----:| + | core_basic_window | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | + | shapes_colors_palette | ✘ | ✔ | ✘ | ✔ | ✘ | ✔ | ✔ | ✘ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | + | text_format_text | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✔ | ✘ | ✔ | ✔ | ✔ | ✔ | */ char *report = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); @@ -1061,14 +1096,15 @@ int main(int argc, char *argv[]) repIndex += sprintf(report + repIndex, " - [SOL] : Project not included in solution file\n"); repIndex += sprintf(report + repIndex, " - [RDME] : Not listed in README.md\n"); repIndex += sprintf(report + repIndex, " - [JS] : Not listed in Web (examples.js)\n"); - repIndex += sprintf(report + repIndex, " - [WOUT] : Missing Web build (.html/.data/.wasm/.js)\n```\n"); + repIndex += sprintf(report + repIndex, " - [WOUT] : Missing Web build (.html/.data/.wasm/.js)\n"); + repIndex += sprintf(report + repIndex, " - [WMETA] : Missing Web .html example metadata\n```\n"); - repIndex += sprintf(report + repIndex, "| **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]|\n"); - repIndex += sprintf(report + repIndex, "|:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:|\n"); + repIndex += sprintf(report + repIndex, "| **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]|[WMETA]|\n"); + repIndex += sprintf(report + repIndex, "|:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:|:-----:|\n"); for (int i = 0; i < exCollectionCount; i++) { - repIndex += sprintf(report + repIndex, "| %-32s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s |\n", + repIndex += sprintf(report + repIndex, "| %-32s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s |\n", exCollection[i].name, (exCollection[i].status & VALID_MISSING_C)? "❌" : "✔", (exCollection[i].status & VALID_INVALID_CATEGORY)? "❌" : "✔", @@ -1082,7 +1118,8 @@ int main(int argc, char *argv[]) (exCollection[i].status & VALID_NOT_IN_VCXSOL)? "❌" : "✔", (exCollection[i].status & VALID_NOT_IN_README)? "❌" : "✔", (exCollection[i].status & VALID_NOT_IN_JS)? "❌" : "✔", - (exCollection[i].status & VALID_MISSING_WEB_OUTPUT)? "❌" : "✔"); + (exCollection[i].status & VALID_MISSING_WEB_OUTPUT)? "❌" : "✔", + (exCollection[i].status & VALID_MISSING_WEB_METADATA)? "❌" : "✔"); } SaveFileText(TextFormat("%s/../tools/rexm/%s", exBasePath, "examples_report.md"), report); @@ -1109,16 +1146,17 @@ int main(int argc, char *argv[]) repIndex += sprintf(reportIssues + repIndex, " - [SOL] : Project not included in solution file\n"); repIndex += sprintf(reportIssues + repIndex, " - [RDME] : Not listed in README.md\n"); repIndex += sprintf(reportIssues + repIndex, " - [JS] : Not listed in Web (examples.js)\n"); - repIndex += sprintf(reportIssues + repIndex, " - [WOUT] : Missing Web build (.html/.data/.wasm/.js)\n```\n"); + repIndex += sprintf(reportIssues + repIndex, " - [WOUT] : Missing Web build (.html/.data/.wasm/.js)\n"); + repIndex += sprintf(reportIssues + repIndex, " - [WMETA] : Missing Web .html example metadata\n```\n"); - repIndex += sprintf(reportIssues + repIndex, "| **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]|\n"); - repIndex += sprintf(reportIssues + repIndex, "|:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:|\n"); + repIndex += sprintf(reportIssues + repIndex, "| **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]|[WMETA]|\n"); + repIndex += sprintf(reportIssues + repIndex, "|:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:|:-----:|\n"); for (int i = 0; i < exCollectionCount; i++) { if (exCollection[i].status > 0) { - repIndex += sprintf(reportIssues + repIndex, "| %-32s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s |\n", + repIndex += sprintf(reportIssues + repIndex, "| %-32s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s |\n", exCollection[i].name, (exCollection[i].status & VALID_MISSING_C)? "❌" : "✔", (exCollection[i].status & VALID_INVALID_CATEGORY)? "❌" : "✔", @@ -1132,7 +1170,8 @@ int main(int argc, char *argv[]) (exCollection[i].status & VALID_NOT_IN_VCXSOL)? "❌" : "✔", (exCollection[i].status & VALID_NOT_IN_README)? "❌" : "✔", (exCollection[i].status & VALID_NOT_IN_JS)? "❌" : "✔", - (exCollection[i].status & VALID_MISSING_WEB_OUTPUT)? "❌" : "✔"); + (exCollection[i].status & VALID_MISSING_WEB_OUTPUT)? "❌" : "✔", + (exCollection[i].status & VALID_MISSING_WEB_METADATA)? "❌" : "✔"); } } @@ -2097,7 +2136,7 @@ static int AddVSProjectToSolution(const char *projFile, const char *slnFile, con // Generate unique UUID v4 string // Output format: {9A2F48CC-0DA8-47C0-884E-02E37F9BE6C1} -const char *GenerateUUIDv4(void) +static const char *GenerateUUIDv4(void) { static char uuid[38] = { 0 }; memset(uuid, 0, 38); @@ -2120,3 +2159,68 @@ const char *GenerateUUIDv4(void) return uuid; } + +// Update generated Web example .html file metadata +static void UpdateWebMetadata(const char *exHtmlPath, const char *exFilePath) +{ + if (FileExists(exHtmlPath) && IsFileExtension(exHtmlPath, ".html")) + { + char *fileText = LoadFileText(exHtmlPath); + char *fileTextUpdated[6] = { 0 }; // Pointers to multiple updated text versions + + char *exText = NULL; // Example code file, required to get description + char **lines = NULL; // Pointers to example code lines + int lineCount = 0; // Example code line count + int lineLength = 0; // Description line length + + char exName[64] = { 0 }; // Example name: fileName without extension + char exCategory[16] = { 0 }; // Example category: core, shapes, text, textures, models, audio, shaders + char exDescription[256] = { 0 }; // Example description: example text line #3 + char exTitle[64] = { 0 }; // Example title: fileName without extension, replacing underscores by spaces + + memset(exName, 0, 64); + memset(exTitle, 0, 64); + memset(exDescription, 0, 256); + memset(exCategory, 0, 16); + lineLength = 0; + + // Get example name: replace underscore by spaces + strcpy(exName, GetFileNameWithoutExt(exHtmlPath)); + strcpy(exTitle, exName); + for (int i = 0; (i < 256) && (exTitle[i] != '\0'); i++) { if (exTitle[i] == '_') exTitle[i] = ' '; } + + // Get example category from exName: copy until first underscore + for (int i = 0; (exName[i] != '_'); i++) exCategory[i] = exName[i]; + + // Get example description: copy line #3 from example file + exText = LoadFileText(exFilePath); + lines = LoadTextLines(exText, &lineCount); + for (int i = 0; (lines[2][i] != '\n') && (lines[2][i] != '\r'); i++) lineLength++; + strncpy(exDescription, lines[2] + 4, lineLength - 4); + UnloadFileText(exText); + + // Update example.html required text + fileTextUpdated[0] = TextReplace(fileText, "raylib web game", exTitle); + fileTextUpdated[1] = TextReplace(fileTextUpdated[0], "New raylib web videogame, developed using raylib videogames library", exDescription); + fileTextUpdated[2] = TextReplace(fileTextUpdated[1], "https://www.raylib.com/common/raylib_logo.png", + TextFormat("https://raw.githubusercontent.com/raysan5/raylib/master/examples/%s/%s.png", exCategory, exName)); + fileTextUpdated[3] = TextReplace(fileTextUpdated[2], "https://www.raylib.com/games.html", + TextFormat("https://www.raylib.com/examples/%s/%s.html", exCategory, exName)); + fileTextUpdated[4] = TextReplace(fileTextUpdated[3], "raylib - example", TextFormat("raylib - %s", exName)); // og:site_name + fileTextUpdated[5] = TextReplace(fileTextUpdated[4], "https://github.com/raysan5/raylib", + TextFormat("https://github.com/raysan5/raylib/blob/master/examples/%s/%s.c", exCategory, exName)); + + SaveFileText(exHtmlPath, fileTextUpdated[5]); + + //LOG("INFO: [%s] Updated successfully\n",files.paths[i]); + //LOG(" - Name / Title: %s / %s\n", exName, exTitle); + //LOG(" - Description: %s\n", exDescription); + //LOG(" - URL: %s\n", TextFormat("https://www.raylib.com/examples/%s/%s.html", exCategory, exName)); + //LOG(" - URL Source: %s\n", TextFormat("https://github.com/raysan5/raylib/blob/master/examples/%s/%s.c", exCategory, exName)); + + for (int i = 0; i < 6; i++) { MemFree(fileTextUpdated[i]); fileTextUpdated[i] = NULL; } + + UnloadTextLines(lines); + UnloadFileText(fileText); + } +} From c6d7694286451fb011c8128efed88e45934c4fc0 Mon Sep 17 00:00:00 2001 From: Maicon Santana Date: Sat, 23 Aug 2025 10:17:11 +0100 Subject: [PATCH 281/328] set glsl100 back to 100 --- examples/shaders/resources/shaders/glsl100/julia_set.fs | 4 +++- examples/shaders/resources/shaders/glsl100/mask.fs | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/examples/shaders/resources/shaders/glsl100/julia_set.fs b/examples/shaders/resources/shaders/glsl100/julia_set.fs index 84d2d204a..a6f397926 100644 --- a/examples/shaders/resources/shaders/glsl100/julia_set.fs +++ b/examples/shaders/resources/shaders/glsl100/julia_set.fs @@ -1,4 +1,6 @@ -#version 120 +#version 100 + +precision mediump float; // Input vertex attributes (from vertex shader) varying vec2 fragTexCoord; diff --git a/examples/shaders/resources/shaders/glsl100/mask.fs b/examples/shaders/resources/shaders/glsl100/mask.fs index 8203a7008..2136ec1d3 100644 --- a/examples/shaders/resources/shaders/glsl100/mask.fs +++ b/examples/shaders/resources/shaders/glsl100/mask.fs @@ -1,4 +1,6 @@ -#version 120 +#version 100 + +precision mediump float; // Input vertex attributes (from vertex shader) varying vec2 fragTexCoord; From 3c9c66e72b86680848827d10d438766239ad82e7 Mon Sep 17 00:00:00 2001 From: Siltnamis Date: Sat, 23 Aug 2025 13:10:27 +0300 Subject: [PATCH 282/328] use RL_MALLOC in stb_truetype --- src/rtext.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/rtext.c b/src/rtext.c index 50ea6c883..78423c522 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -93,6 +93,9 @@ #pragma GCC diagnostic ignored "-Wunused-function" #endif + #define STBTT_malloc(x,u) ((void)(u),RL_MALLOC(x)) + #define STBTT_free(x,u) ((void)(u),RL_FREE(x)) + #define STBTT_STATIC #define STB_TRUETYPE_IMPLEMENTATION #include "external/stb_truetype.h" // Required for: ttf font data reading From 69021939e61dff62be84f3db261ed1ef8d6246cd Mon Sep 17 00:00:00 2001 From: Maicon Santana Date: Sat, 23 Aug 2025 13:06:56 +0100 Subject: [PATCH 283/328] fix write_depth.fs glsl120 --- examples/shaders/resources/shaders/glsl120/write_depth.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/shaders/resources/shaders/glsl120/write_depth.fs b/examples/shaders/resources/shaders/glsl120/write_depth.fs index 0d0e19da7..a2bc38516 100644 --- a/examples/shaders/resources/shaders/glsl120/write_depth.fs +++ b/examples/shaders/resources/shaders/glsl120/write_depth.fs @@ -1,4 +1,4 @@ -#version 100 +#version 120 #extension GL_EXT_frag_depth : enable From d320a029c89a0aead01442055ca22dd12f62605a Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 23 Aug 2025 21:44:28 +0200 Subject: [PATCH 284/328] REXM: Reviewed building, using default examples `Makefile`/`Makefile.Web` --- tools/rexm/rexm.c | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 32e8aeefb..aefd6c479 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -575,8 +575,9 @@ int main(int argc, char *argv[]) //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exCategory, exName)); // Update generated .html metadata - UpdateWebMetadata(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), - TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + char exHtmlPath[512] = { 0 }; + strcpy(exHtmlPath, TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName)); // WARNING: Cache path for saving + UpdateWebMetadata(exHtmlPath, TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); // Copy results to web side FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), @@ -657,8 +658,9 @@ int main(int argc, char *argv[]) //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exRecategory, exRename)); // Update generated .html metadata - UpdateWebMetadata(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), - TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + char exHtmlPath[512] = { 0 }; + strcpy(exHtmlPath, TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName)); // WARNING: Cache path for saving + UpdateWebMetadata(exHtmlPath, TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); // Copy results to web side FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exRecategory, exRename), @@ -1021,8 +1023,9 @@ int main(int argc, char *argv[]) //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); // Update generated .html metadata - UpdateWebMetadata(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), - TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + char exHtmlPath[512] = { 0 }; + strcpy(exHtmlPath, TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName)); // WARNING: Cache path for saving + UpdateWebMetadata(exHtmlPath, TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); // Copy results to web side FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exInfo->category, exInfo->name), @@ -1192,20 +1195,20 @@ int main(int argc, char *argv[]) if (strcmp(exCategory, "others") != 0) // Skipping "others" category { // Build example for PLATFORM_DESKTOP - putenv("RAYLIB_DIR=C:\\GitHub\\raylib"); - putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin"); - putenv("MAKE=mingw32-make"); - + //putenv(TextFormat("RAYLIB_DIR=%s\\..", exBasePath)); + //putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin"); + //putenv("MAKE=mingw32-make"); ChangeDirectory(exBasePath); - system(TextFormat("%s %s/%s PLATFORM=PLATFORM_DESKTOP -B", getenv("MAKE"), exCategory, exName)); + system(TextFormat("make %s/%s PLATFORM=PLATFORM_DESKTOP -B", exCategory, exName)); // Build example for PLATFORM_WEB - system(TextFormat("%s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", getenv("MAKE"), exCategory, exName)); + system(TextFormat("make -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exCategory, exName)); //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); // Update generated .html metadata - UpdateWebMetadata(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), - TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + char exHtmlPath[512] = { 0 }; + strcpy(exHtmlPath, TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName)); // WARNING: Cache path for saving + UpdateWebMetadata(exHtmlPath, TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); // Copy results to web side FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName), @@ -2171,7 +2174,6 @@ static void UpdateWebMetadata(const char *exHtmlPath, const char *exFilePath) char *exText = NULL; // Example code file, required to get description char **lines = NULL; // Pointers to example code lines int lineCount = 0; // Example code line count - int lineLength = 0; // Description line length char exName[64] = { 0 }; // Example name: fileName without extension char exCategory[16] = { 0 }; // Example category: core, shapes, text, textures, models, audio, shaders @@ -2182,7 +2184,6 @@ static void UpdateWebMetadata(const char *exHtmlPath, const char *exFilePath) memset(exTitle, 0, 64); memset(exDescription, 0, 256); memset(exCategory, 0, 16); - lineLength = 0; // Get example name: replace underscore by spaces strcpy(exName, GetFileNameWithoutExt(exHtmlPath)); @@ -2195,8 +2196,9 @@ static void UpdateWebMetadata(const char *exHtmlPath, const char *exFilePath) // Get example description: copy line #3 from example file exText = LoadFileText(exFilePath); lines = LoadTextLines(exText, &lineCount); - for (int i = 0; (lines[2][i] != '\n') && (lines[2][i] != '\r'); i++) lineLength++; + int lineLength = (int)strlen(lines[2]); strncpy(exDescription, lines[2] + 4, lineLength - 4); + UnloadTextLines(lines); UnloadFileText(exText); // Update example.html required text @@ -2220,7 +2222,6 @@ static void UpdateWebMetadata(const char *exHtmlPath, const char *exFilePath) for (int i = 0; i < 6; i++) { MemFree(fileTextUpdated[i]); fileTextUpdated[i] = NULL; } - UnloadTextLines(lines); UnloadFileText(fileText); } } From 41211b0c8cf8f6c28e5bcea0024a71922958363c Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 23 Aug 2025 21:45:50 +0200 Subject: [PATCH 285/328] Update update_examples.yml --- .github/workflows/update_examples.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update_examples.yml b/.github/workflows/update_examples.yml index 897ee943c..0d02fc9c7 100644 --- a/.github/workflows/update_examples.yml +++ b/.github/workflows/update_examples.yml @@ -46,8 +46,8 @@ jobs: set REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH="examples/examples_template.png" set REXM_EXAMPLES_COLLECTION_FILE_PATH="examples/examples_list.txt" set REXM_EXAMPLES_VS2022_SLN_FILE="projects/VS2022/raylib.sln" - set EMSDK_PATH="D:/a/raylib/raylib/emsdk-cache/emsdk-main" - .\tools\rexm\VS2022\build\rexm\bin\x64\Release\rexm.exe update + #set EMSDK_PATH="D:/a/raylib/raylib/emsdk-cache/emsdk-main" + .\tools\rexm\VS2022\build\rexm\bin\x64\Release\rexm.exe build core_basic_window cd ../.. shell: cmd From e9f655d00200c5fe55b446af1b86b16a3d995dbb Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 23 Aug 2025 21:54:09 +0200 Subject: [PATCH 286/328] Update update_examples.yml --- .github/workflows/update_examples.yml | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/.github/workflows/update_examples.yml b/.github/workflows/update_examples.yml index 0d02fc9c7..2b7c592ba 100644 --- a/.github/workflows/update_examples.yml +++ b/.github/workflows/update_examples.yml @@ -39,15 +39,14 @@ jobs: run: | cd tools/rexm/VS2022 msbuild.exe rexm.sln /target:rexm /property:Configuration=Release /property:Platform=x64 - cd ../../.. - set REXM_EXAMPLES_BASE_PATH="examples" - set REXM_EXAMPLES_WEB_PATH="../raylib.com/examples" - set REXM_EXAMPLES_TEMPLATE_FILE_PATH="examples/examples_template.c" - set REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH="examples/examples_template.png" - set REXM_EXAMPLES_COLLECTION_FILE_PATH="examples/examples_list.txt" - set REXM_EXAMPLES_VS2022_SLN_FILE="projects/VS2022/raylib.sln" - #set EMSDK_PATH="D:/a/raylib/raylib/emsdk-cache/emsdk-main" - .\tools\rexm\VS2022\build\rexm\bin\x64\Release\rexm.exe build core_basic_window + cd ${{ github.workspace }}/tools/rexm/VS2022/build/rexm/bin/x64/Release + set REXM_EXAMPLES_BASE_PATH="${{ github.workspace }}/examples" + set REXM_EXAMPLES_WEB_PATH="${{ github.workspace }}/../raylib.com/examples" + set REXM_EXAMPLES_TEMPLATE_FILE_PATH="${{ github.workspace }}/examples/examples_template.c" + set REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH="${{ github.workspace }}/examples/examples_template.png" + set REXM_EXAMPLES_COLLECTION_FILE_PATH="${{ github.workspace }}/examples/examples_list.txt" + set REXM_EXAMPLES_VS2022_SLN_FILE="${{ github.workspace }}/projects/VS2022/raylib.sln" + rexm.exe build core_basic_window cd ../.. shell: cmd From c95630b7d0653cafd817f9a189e0ff7b5d60d396 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 23 Aug 2025 22:00:06 +0200 Subject: [PATCH 287/328] Update update_examples.yml --- .github/workflows/update_examples.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/update_examples.yml b/.github/workflows/update_examples.yml index 2b7c592ba..4d12cffbe 100644 --- a/.github/workflows/update_examples.yml +++ b/.github/workflows/update_examples.yml @@ -39,13 +39,13 @@ jobs: run: | cd tools/rexm/VS2022 msbuild.exe rexm.sln /target:rexm /property:Configuration=Release /property:Platform=x64 - cd ${{ github.workspace }}/tools/rexm/VS2022/build/rexm/bin/x64/Release - set REXM_EXAMPLES_BASE_PATH="${{ github.workspace }}/examples" - set REXM_EXAMPLES_WEB_PATH="${{ github.workspace }}/../raylib.com/examples" - set REXM_EXAMPLES_TEMPLATE_FILE_PATH="${{ github.workspace }}/examples/examples_template.c" - set REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH="${{ github.workspace }}/examples/examples_template.png" - set REXM_EXAMPLES_COLLECTION_FILE_PATH="${{ github.workspace }}/examples/examples_list.txt" - set REXM_EXAMPLES_VS2022_SLN_FILE="${{ github.workspace }}/projects/VS2022/raylib.sln" + cd ${{ github.workspace }}\tools\rexm\VS2022\build\rexm\bin\x64\Release + set REXM_EXAMPLES_BASE_PATH="${{ github.workspace }}\examples" + set REXM_EXAMPLES_WEB_PATH="${{ github.workspace }}\..\raylib.com\examples" + set REXM_EXAMPLES_TEMPLATE_FILE_PATH="${{ github.workspace }}\examples\examples_template.c" + set REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH="${{ github.workspace }}\examples\examples_template.png" + set REXM_EXAMPLES_COLLECTION_FILE_PATH="${{ github.workspace }}\examples\examples_list.txt" + set REXM_EXAMPLES_VS2022_SLN_FILE="${{ github.workspace }}\projects\VS2022\raylib.sln" rexm.exe build core_basic_window cd ../.. shell: cmd From 6c4f220e89b9c33552076901de8d0bb909f71563 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 23 Aug 2025 22:07:39 +0200 Subject: [PATCH 288/328] Update update_examples.yml --- .github/workflows/update_examples.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/update_examples.yml b/.github/workflows/update_examples.yml index 4d12cffbe..3f1e337af 100644 --- a/.github/workflows/update_examples.yml +++ b/.github/workflows/update_examples.yml @@ -46,6 +46,7 @@ jobs: set REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH="${{ github.workspace }}\examples\examples_template.png" set REXM_EXAMPLES_COLLECTION_FILE_PATH="${{ github.workspace }}\examples\examples_list.txt" set REXM_EXAMPLES_VS2022_SLN_FILE="${{ github.workspace }}\projects\VS2022\raylib.sln" + dir rexm.exe build core_basic_window cd ../.. shell: cmd From d0e6f60ef353bc1a1ec66fd6b0f8c9daf19cdf4d Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 23 Aug 2025 22:13:18 +0200 Subject: [PATCH 289/328] Update update_examples.yml --- .github/workflows/update_examples.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/update_examples.yml b/.github/workflows/update_examples.yml index 3f1e337af..7f63c583a 100644 --- a/.github/workflows/update_examples.yml +++ b/.github/workflows/update_examples.yml @@ -40,12 +40,12 @@ jobs: cd tools/rexm/VS2022 msbuild.exe rexm.sln /target:rexm /property:Configuration=Release /property:Platform=x64 cd ${{ github.workspace }}\tools\rexm\VS2022\build\rexm\bin\x64\Release - set REXM_EXAMPLES_BASE_PATH="${{ github.workspace }}\examples" - set REXM_EXAMPLES_WEB_PATH="${{ github.workspace }}\..\raylib.com\examples" - set REXM_EXAMPLES_TEMPLATE_FILE_PATH="${{ github.workspace }}\examples\examples_template.c" - set REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH="${{ github.workspace }}\examples\examples_template.png" - set REXM_EXAMPLES_COLLECTION_FILE_PATH="${{ github.workspace }}\examples\examples_list.txt" - set REXM_EXAMPLES_VS2022_SLN_FILE="${{ github.workspace }}\projects\VS2022\raylib.sln" + set REXM_EXAMPLES_BASE_PATH=${{ github.workspace }}\examples + set REXM_EXAMPLES_WEB_PATH=${{ github.workspace }}\..\raylib.com\examples + set REXM_EXAMPLES_TEMPLATE_FILE_PATH=${{ github.workspace }}\examples\examples_template.c + set REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH=${{ github.workspace }}\examples\examples_template.png + set REXM_EXAMPLES_COLLECTION_FILE_PATH=${{ github.workspace }}\examples\examples_list.txt + set REXM_EXAMPLES_VS2022_SLN_FILE=${{ github.workspace }}\projects\VS2022\raylib.sln dir rexm.exe build core_basic_window cd ../.. From 785965fcef6f4a07535f504ae62fd535897e9637 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 23 Aug 2025 22:18:17 +0200 Subject: [PATCH 290/328] Update update_examples.yml --- .github/workflows/update_examples.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/update_examples.yml b/.github/workflows/update_examples.yml index 7f63c583a..a929b7630 100644 --- a/.github/workflows/update_examples.yml +++ b/.github/workflows/update_examples.yml @@ -46,6 +46,7 @@ jobs: set REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH=${{ github.workspace }}\examples\examples_template.png set REXM_EXAMPLES_COLLECTION_FILE_PATH=${{ github.workspace }}\examples\examples_list.txt set REXM_EXAMPLES_VS2022_SLN_FILE=${{ github.workspace }}\projects\VS2022\raylib.sln + set EMSDK_PATH=${{ github.workspace }}/emsdk-cache/emsdk-main dir rexm.exe build core_basic_window cd ../.. From f60333d9b24a053974cc1c3d15a50241d6e0d0bf Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 23 Aug 2025 22:19:51 +0200 Subject: [PATCH 291/328] Update update_examples.yml --- .github/workflows/update_examples.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/update_examples.yml b/.github/workflows/update_examples.yml index a929b7630..8fb16a2be 100644 --- a/.github/workflows/update_examples.yml +++ b/.github/workflows/update_examples.yml @@ -49,7 +49,8 @@ jobs: set EMSDK_PATH=${{ github.workspace }}/emsdk-cache/emsdk-main dir rexm.exe build core_basic_window - cd ../.. + cd ${{ github.workspace }}\.. + dir shell: cmd - name: Commit changes to raylib repo From 0e5837fb866b84ab9272ba5f98fa72b270026e3f Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 24 Aug 2025 10:53:19 +0200 Subject: [PATCH 292/328] REXM: Fixed some issues, improved `make` call defining base path --- tools/rexm/rexm.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index aefd6c479..9ef504f45 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -374,8 +374,10 @@ int main(int argc, char *argv[]) { // Verify example exists in collection to be removed char *exColInfo = LoadFileText(exCollectionFilePath); - if (TextFindIndex(exColInfo, argv[2]) != -1) // Example in the collection + if ((TextFindIndex(exColInfo, argv[2]) != -1) && // Example in the collection + (TextFindIndex(exName, "_") != -1)) // Valid example name { + strcpy(exName, argv[2]); // Register example name for removal strncpy(exCategory, exName, TextFindIndex(exName, "_")); opCode = OP_BUILD; @@ -571,7 +573,7 @@ int main(int argc, char *argv[]) //putenv("RAYLIB_DIR=C:\\GitHub\\raylib"); //putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin"); // WARNING: EMSDK_PATH must be set to proper location when calling from GitHub Actions - system(TextFormat("make -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exCategory, exName)); + system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exCategory, exName)); //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exCategory, exName)); // Update generated .html metadata @@ -654,7 +656,7 @@ int main(int argc, char *argv[]) // Recompile example (on raylib side) // WARNING: EMSDK_PATH must be set to proper location when calling from GitHub Actions - system(TextFormat("%s/make -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exRecategory, exRename)); + system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exRecategory, exRename)); //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exRecategory, exRename)); // Update generated .html metadata @@ -927,11 +929,11 @@ int main(int argc, char *argv[]) { char *exHtmlText = LoadFileText(TextFormat("%s/%s/%s.html", exWebPath, exInfo->category, exInfo->name)); - if ((TextFindIndex(exHtmlText, "raylib web game") > -1) || // title + if ((TextFindIndex(exHtmlText, "raylib web game") > -1) || // title (TextFindIndex(exHtmlText, "New raylib web videogame, developed using raylib videogames library") > -1) || // description (TextFindIndex(exHtmlText, "https://www.raylib.com/common/raylib_logo.png") > -1) || // image (TextFindIndex(exHtmlText, "https://www.raylib.com/games.html") > -1) || // url - (TextFindIndex(exHtmlText, "https://github.com/raysan5/raylib") > -1)) // source code button + (TextFindIndex(exHtmlText, "https://github.com/raysan5/raylib';") > -1)) // source code button { exInfo->status |= VALID_MISSING_WEB_METADATA; } @@ -1019,17 +1021,17 @@ int main(int argc, char *argv[]) if ((strcmp(exInfo->category, "others") != 0) && // Skipping "others" category ((exInfo->status & VALID_MISSING_WEB_OUTPUT) || (exInfo->status & VALID_MISSING_WEB_METADATA))) { - system(TextFormat("%s/make -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exInfo->category, exInfo->name)); + // Build example for PLATFORM_WEB + system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exInfo->category, exInfo->name)); //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); // Update generated .html metadata char exHtmlPath[512] = { 0 }; - strcpy(exHtmlPath, TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName)); // WARNING: Cache path for saving - UpdateWebMetadata(exHtmlPath, TextFormat("%s/%s/%s.c", exBasePath, exCategory, exName)); + strcpy(exHtmlPath, TextFormat("%s/%s/%s.html", exBasePath, exInfo->category, exInfo->name)); // WARNING: Cache path for saving + UpdateWebMetadata(exHtmlPath, TextFormat("%s/%s/%s.c", exBasePath, exInfo->category, exInfo->name)); // Copy results to web side - FileCopy(TextFormat("%s/%s/%s.html", exBasePath, exInfo->category, exInfo->name), - TextFormat("%s/%s/%s.html", exWebPath, exInfo->category, exInfo->name)); + FileCopy(exHtmlPath, TextFormat("%s/%s/%s.html", exWebPath, exInfo->category, exInfo->name)); FileCopy(TextFormat("%s/%s/%s.data", exBasePath, exInfo->category, exInfo->name), TextFormat("%s/%s/%s.data", exWebPath, exInfo->category, exInfo->name)); FileCopy(TextFormat("%s/%s/%s.wasm", exBasePath, exInfo->category, exInfo->name), @@ -1038,6 +1040,7 @@ int main(int argc, char *argv[]) TextFormat("%s/%s/%s.js", exWebPath, exInfo->category, exInfo->name)); exInfo->status &= ~VALID_MISSING_WEB_OUTPUT; + exInfo->status &= ~VALID_MISSING_WEB_METADATA; } } } @@ -1198,11 +1201,11 @@ int main(int argc, char *argv[]) //putenv(TextFormat("RAYLIB_DIR=%s\\..", exBasePath)); //putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin"); //putenv("MAKE=mingw32-make"); - ChangeDirectory(exBasePath); - system(TextFormat("make %s/%s PLATFORM=PLATFORM_DESKTOP -B", exCategory, exName)); + //ChangeDirectory(exBasePath); + system(TextFormat("make -C %s %s/%s PLATFORM=PLATFORM_DESKTOP -B", exBasePath, exCategory, exName)); // Build example for PLATFORM_WEB - system(TextFormat("make -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exCategory, exName)); + system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exCategory, exName)); //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); // Update generated .html metadata @@ -1752,7 +1755,7 @@ static int FileMove(const char *srcPath, const char *dstPath) static char **LoadTextLines(const char *text, int *count) { #define MAX_TEXT_LINES 512 - #define MAX_TEXT_LINE_LEN 256 + #define MAX_TEXT_LINE_LEN 512 char **lines = (char **)RL_CALLOC(MAX_TEXT_LINES, sizeof(char *)); for (int i = 0; i < MAX_TEXT_LINES; i++) lines[i] = (char *)RL_CALLOC(MAX_TEXT_LINE_LEN, 1); @@ -1761,7 +1764,7 @@ static char **LoadTextLines(const char *text, int *count) for (int i = 0, len = 0; (i < textSize) && (k < MAX_TEXT_LINES); i++) { - if (text[i] == '\n') + if ((text[i] == '\n') || (len == (MAX_TEXT_LINE_LEN - 1))) { strncpy(lines[k], &text[i - len], len); len = 0; @@ -2171,10 +2174,6 @@ static void UpdateWebMetadata(const char *exHtmlPath, const char *exFilePath) char *fileText = LoadFileText(exHtmlPath); char *fileTextUpdated[6] = { 0 }; // Pointers to multiple updated text versions - char *exText = NULL; // Example code file, required to get description - char **lines = NULL; // Pointers to example code lines - int lineCount = 0; // Example code line count - char exName[64] = { 0 }; // Example name: fileName without extension char exCategory[16] = { 0 }; // Example category: core, shapes, text, textures, models, audio, shaders char exDescription[256] = { 0 }; // Example description: example text line #3 @@ -2194,8 +2193,9 @@ static void UpdateWebMetadata(const char *exHtmlPath, const char *exFilePath) for (int i = 0; (exName[i] != '_'); i++) exCategory[i] = exName[i]; // Get example description: copy line #3 from example file - exText = LoadFileText(exFilePath); - lines = LoadTextLines(exText, &lineCount); + char *exText = LoadFileText(exFilePath); + int lineCount = 0; + char **lines = LoadTextLines(exText, &lineCount); int lineLength = (int)strlen(lines[2]); strncpy(exDescription, lines[2] + 4, lineLength - 4); UnloadTextLines(lines); From 4d0c3affaac9bc70a2e06f5bdecc561ced5a0ed8 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 24 Aug 2025 10:53:47 +0200 Subject: [PATCH 293/328] REXM: Update examples and lists --- examples/Makefile | 1 + examples/Makefile.Web | 21 +- examples/README.md | 5 +- examples/examples_list.txt | 1 + examples/shapes/shapes_digital_clock.c | 2 +- .../examples/text_unicode_ranges.vcxproj | 569 ++++++++++++++++++ projects/VS2022/raylib.sln | 27 + tools/rexm/examples_report.md | 328 +++++----- tools/rexm/examples_report_issues.md | 47 +- 9 files changed, 807 insertions(+), 194 deletions(-) create mode 100644 projects/VS2022/examples/text_unicode_ranges.vcxproj diff --git a/examples/Makefile b/examples/Makefile index c50a01798..ab3a30818 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -599,6 +599,7 @@ TEXT = \ text/text_raylib_fonts \ text/text_rectangle_bounds \ text/text_unicode \ + text/text_unicode_ranges \ text/text_writing_anim MODELS = \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index e834ab71b..45061459b 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -599,6 +599,7 @@ TEXT = \ text/text_raylib_fonts \ text/text_rectangle_bounds \ text/text_unicode \ + text/text_unicode_ranges \ text/text_writing_anim MODELS = \ @@ -999,14 +1000,14 @@ text/text_input_box: text/text_input_box.c text/text_raylib_fonts: text/text_raylib_fonts.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ - --preload-file text/resources/fonts/alagard.png@resources/fonts/alagard.png \ - --preload-file text/resources/fonts/pixelplay.png@resources/fonts/pixelplay.png \ - --preload-file text/resources/fonts/mecha.png@resources/fonts/mecha.png \ - --preload-file text/resources/fonts/setback.png@resources/fonts/setback.png \ - --preload-file text/resources/fonts/romulus.png@resources/fonts/romulus.png \ - --preload-file text/resources/fonts/pixantiqua.png@resources/fonts/pixantiqua.png \ - --preload-file text/resources/fonts/alpha_beta.png@resources/fonts/alpha_beta.png \ - --preload-file text/resources/fonts/jupiter_crash.png@resources/fonts/jupiter_crash.png + --preload-file text/resources/sprite_fonts/alagard.png@resources/sprite_fonts/alagard.png \ + --preload-file text/resources/sprite_fonts/pixelplay.png@resources/sprite_fonts/pixelplay.png \ + --preload-file text/resources/sprite_fonts/mecha.png@resources/sprite_fonts/mecha.png \ + --preload-file text/resources/sprite_fonts/setback.png@resources/sprite_fonts/setback.png \ + --preload-file text/resources/sprite_fonts/romulus.png@resources/sprite_fonts/romulus.png \ + --preload-file text/resources/sprite_fonts/pixantiqua.png@resources/sprite_fonts/pixantiqua.png \ + --preload-file text/resources/sprite_fonts/alpha_beta.png@resources/sprite_fonts/alpha_beta.png \ + --preload-file text/resources/sprite_fonts/jupiter_crash.png@resources/sprite_fonts/jupiter_crash.png text/text_rectangle_bounds: text/text_rectangle_bounds.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) @@ -1017,6 +1018,10 @@ text/text_unicode: text/text_unicode.c --preload-file text/resources/noto_cjk.fnt@resources/noto_cjk.fnt \ --preload-file text/resources/symbola.fnt@resources/symbola.fnt +text/text_unicode_ranges: text/text_unicode_ranges.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ + --preload-file text/resources/NotoSansTC-Regular.ttf@resources/NotoSansTC-Regular.ttf + text/text_writing_anim: text/text_writing_anim.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) diff --git a/examples/README.md b/examples/README.md index 391f9e422..30d45a001 100644 --- a/examples/README.md +++ b/examples/README.md @@ -16,7 +16,7 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 161] +## EXAMPLES COLLECTION [TOTAL: 162] ### category: core [37] @@ -122,7 +122,7 @@ Examples using raylib textures functionality, including image/textures loading/g | [textures_image_rotate](textures/textures_image_rotate.c) | textures_image_rotate | ⭐⭐☆☆ | 1.0 | 1.0 | [Ramon Santamaria](https://github.com/raysan5) | | [textures_textured_curve](textures/textures_textured_curve.c) | textures_textured_curve | ⭐⭐⭐☆ | 4.5 | 4.5 | [Jeffery Myers](https://github.com/JeffM2501) | -### category: text [12] +### category: text [13] Examples using raylib text functionality, including sprite fonts loading/generation and text drawing, provided by raylib [text](../src/rtext.c) module. @@ -140,6 +140,7 @@ Examples using raylib text functionality, including sprite fonts loading/generat | [text_unicode](text/text_unicode.c) | text_unicode | ⭐⭐⭐⭐️ | 2.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | | [text_draw_3d](text/text_draw_3d.c) | text_draw_3d | ⭐⭐⭐⭐️ | 3.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | | [text_codepoints_loading](text/text_codepoints_loading.c) | text_codepoints_loading | ⭐⭐⭐☆ | 4.2 | 4.2 | [Ramon Santamaria](https://github.com/raysan5) | +| [text_unicode_ranges](text/text_unicode_ranges.c) | text_unicode_ranges | ⭐⭐⭐⭐️ | 2.5 | 4.0 | [Vlad Adrian](https://github.com/demizdor) | ### category: models [23] diff --git a/examples/examples_list.txt b/examples/examples_list.txt index ba329f995..b91cf1040 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -168,3 +168,4 @@ others;easings_testbed;⭐️⭐️⭐️☆;2.5;3.0;"Juan Miguel López";@flash others;raylib_opengl_interop;⭐️⭐️⭐️⭐️;3.8;4.0;"Stephan Soller";@arkanis others;embedded_files_loading;⭐️⭐️☆☆;3.0;3.5;"Kristian Holmgren";@defutura others;raymath_vector_angle;⭐️⭐️☆☆;1.0;4.6;"Ramon Santamaria";@raysan5 +text;text_unicode_ranges;⭐⭐⭐⭐️;2.5;4.0;"Vlad Adrian";@demizdor diff --git a/examples/shapes/shapes_digital_clock.c b/examples/shapes/shapes_digital_clock.c index ffa1ff5dc..830752858 100644 --- a/examples/shapes/shapes_digital_clock.c +++ b/examples/shapes/shapes_digital_clock.c @@ -182,4 +182,4 @@ static void DrawClock(Clock clock, Vector2 centerPosition) DrawRectanglePro((Rectangle){ centerPosition.x, centerPosition.y, clock.hour.length, clock.hour.thickness }, (Vector2){ 0.0f, clock.hour.thickness/2.0f }, clock.hour.angle, clock.hour.color); } -} \ No newline at end of file +} diff --git a/projects/VS2022/examples/text_unicode_ranges.vcxproj b/projects/VS2022/examples/text_unicode_ranges.vcxproj new file mode 100644 index 000000000..c9ddd9a1c --- /dev/null +++ b/projects/VS2022/examples/text_unicode_ranges.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {6B1A933E-71B8-4C1F-9E79-02D98830E671} + Win32Proj + text_unicode_ranges + 10.0 + text_unicode_ranges + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\text + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\text + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\text + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\text + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\text + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\text + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\text + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\text + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\text + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\text + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\text + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\text + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 65d48a2dc..a5429a106 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -337,6 +337,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_fps_controller", "e EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_normal_map", "examples\shaders_normal_map.vcxproj", "{6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_unicode_ranges", "examples\text_unicode_ranges.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -4133,6 +4135,30 @@ Global {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x64.Build.0 = Release|x64 {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x86.ActiveCfg = Release|Win32 {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x86.Build.0 = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -4303,6 +4329,7 @@ Global {0981CA28-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} diff --git a/tools/rexm/examples_report.md b/tools/rexm/examples_report.md index 156ee3659..6d552e33d 100644 --- a/tools/rexm/examples_report.md +++ b/tools/rexm/examples_report.md @@ -16,167 +16,169 @@ Example elements validated: - [RDME] : Not listed in README.md - [JS] : Not listed in Web (examples.js) - [WOUT] : Missing Web build (.html/.data/.wasm/.js) + - [WMETA] : Missing Web .html example metadata ``` -| **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]| -|:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:| -| core_basic_window | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_input_keys | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_input_mouse | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_input_mouse_wheel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_input_gamepad | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_input_multitouch | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_input_gestures | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_input_virtual_controls | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_2d_camera | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_2d_camera_mouse_zoom | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_2d_camera_platformer | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_2d_camera_split_screen | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_3d_camera_mode | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_3d_camera_free | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_3d_camera_first_person | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_3d_camera_split_screen | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_3d_fps_controller | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_3d_picking | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_world_screen | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_custom_logging | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_window_flags | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_window_letterbox | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_window_should_close | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_drop_files | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_random_values | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_storage_values | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_vr_simulator | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_loading_thread | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_scissor_test | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_basic_screen_manager | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_custom_frame_control | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_smooth_pixelperfect | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_random_sequence | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_basic_window_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | -| core_input_gestures_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | -| core_automation_events | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_high_dpi | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_basic_shapes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_bouncing_ball | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_colors_palette | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_logo_raylib | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_logo_raylib_anim | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_rectangle_scaling | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_lines_bezier | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_collision_area | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_following_eyes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_easings_ball_anim | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_easings_box_anim | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_easings_rectangle_array | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_draw_ring | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_draw_circle_sector | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_draw_rectangle_rounded | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_top_down_lights | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_rectangle_advanced | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_splines_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_digital_clock | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_double_pendulum | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_logo_raylib | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_srcrec_dstrec | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_image_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_image_generation | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_image_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_image_processing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_image_text | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_to_image | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_raw_data | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_particles_blending | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_npatch_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_background_scrolling | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_sprite_anim | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_sprite_button | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_sprite_explosion | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_bunnymark | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_mouse_painting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_blend_modes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_draw_tiled | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_polygon | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_fog_of_war | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_gif_player | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_image_kernel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_image_channel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_image_rotate | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_textured_curve | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| text_raylib_fonts | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| text_font_spritefont | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| text_font_filters | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| text_font_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| text_font_sdf | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| text_format_text | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| text_input_box | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| text_writing_anim | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| text_rectangle_bounds | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| text_unicode | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| text_draw_3d | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| text_codepoints_loading | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_animation | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_billboard | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_box_collisions | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_cubicmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_first_person_maze | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_geometric_shapes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_mesh_generation | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_mesh_picking | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_loading_gltf | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_loading_vox | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_loading_m3d | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_orthographic_projection | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_point_rendering | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_rlgl_solar_system | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_yaw_pitch_roll | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_waving_cubes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_heightmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_skybox | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_draw_cube_texture | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_gpu_skinning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_bone_socket | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_tesseract_view | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_basic_lighting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_model_shader | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_shapes_textures | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_custom_uniform | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_postprocessing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_palette_switch | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_raymarching | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_texture_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_texture_outline | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_texture_waves | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_julia_set | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_eratosthenes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_fog | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_simple_mask | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_hot_reloading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_mesh_instancing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_multi_sample2d | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_normal_map | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_spotlight | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_deferred_render | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_hybrid_render | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_texture_tiling | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_shadowmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_vertex_displacement | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_write_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_basic_pbr | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_lightmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_rounded_rectangle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_view_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| audio_module_playing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| audio_music_stream | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| audio_raw_stream | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| audio_sound_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| audio_mixed_processor | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| audio_stream_effects | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| audio_sound_multi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| rlgl_standalone | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| rlgl_compute_shader | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| easings_testbed | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| raylib_opengl_interop | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | -| embedded_files_loading | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| raymath_vector_angle | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | +| **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]|[WMETA]| +|:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:|:-----:| +| core_basic_window | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_input_keys | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_input_mouse | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_input_mouse_wheel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_input_gamepad | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_input_multitouch | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_input_gestures | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_input_virtual_controls | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_2d_camera | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_2d_camera_mouse_zoom | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_2d_camera_platformer | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_2d_camera_split_screen | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_3d_camera_mode | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_3d_camera_free | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_3d_camera_first_person | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_3d_camera_split_screen | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_3d_fps_controller | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_3d_picking | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_world_screen | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_custom_logging | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_window_flags | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_window_letterbox | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_window_should_close | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_drop_files | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_random_values | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_storage_values | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_vr_simulator | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_loading_thread | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_scissor_test | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_basic_screen_manager | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_custom_frame_control | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_smooth_pixelperfect | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_random_sequence | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_basic_window_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | ✔ | +| core_input_gestures_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | +| core_automation_events | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_high_dpi | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_basic_shapes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_bouncing_ball | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_colors_palette | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_logo_raylib | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_logo_raylib_anim | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_rectangle_scaling | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_lines_bezier | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_collision_area | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_following_eyes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_easings_ball_anim | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_easings_box_anim | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_easings_rectangle_array | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_draw_ring | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_draw_circle_sector | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_draw_rectangle_rounded | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_top_down_lights | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_rectangle_advanced | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_splines_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_digital_clock | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| shapes_double_pendulum | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| textures_logo_raylib | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_srcrec_dstrec | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_image_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_image_generation | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_image_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_image_processing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_image_text | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_to_image | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_raw_data | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_particles_blending | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_npatch_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_background_scrolling | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_sprite_anim | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_sprite_button | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_sprite_explosion | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_bunnymark | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_mouse_painting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| textures_blend_modes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_draw_tiled | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_polygon | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_fog_of_war | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_gif_player | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_image_kernel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_image_channel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_image_rotate | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| textures_textured_curve | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_raylib_fonts | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_font_spritefont | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_font_filters | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_font_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_font_sdf | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_format_text | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_input_box | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_writing_anim | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_rectangle_bounds | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_unicode | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_draw_3d | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_codepoints_loading | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_animation | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_billboard | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_box_collisions | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_cubicmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_first_person_maze | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_geometric_shapes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_mesh_generation | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_mesh_picking | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_loading_gltf | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_loading_vox | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_loading_m3d | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_orthographic_projection | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_point_rendering | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_rlgl_solar_system | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_yaw_pitch_roll | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_waving_cubes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_heightmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_skybox | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_draw_cube_texture | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_gpu_skinning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_bone_socket | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_tesseract_view | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_basic_lighting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_model_shader | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_shapes_textures | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_custom_uniform | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_postprocessing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_palette_switch | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_raymarching | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_texture_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_texture_outline | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_texture_waves | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_julia_set | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_eratosthenes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_fog | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_simple_mask | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_hot_reloading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_mesh_instancing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_multi_sample2d | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_normal_map | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| shaders_spotlight | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_deferred_render | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_hybrid_render | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_texture_tiling | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_shadowmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_vertex_displacement | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_write_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_basic_pbr | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_lightmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_rounded_rectangle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| shaders_view_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| audio_module_playing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| audio_music_stream | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| audio_raw_stream | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| audio_sound_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| audio_mixed_processor | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| audio_stream_effects | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| audio_sound_multi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| rlgl_standalone | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| rlgl_compute_shader | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| easings_testbed | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| raylib_opengl_interop | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | +| embedded_files_loading | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| raymath_vector_angle | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | +| text_unicode_ranges | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | diff --git a/tools/rexm/examples_report_issues.md b/tools/rexm/examples_report_issues.md index ab1347711..0c91b9c71 100644 --- a/tools/rexm/examples_report_issues.md +++ b/tools/rexm/examples_report_issues.md @@ -16,24 +16,31 @@ Example elements validated: - [RDME] : Not listed in README.md - [JS] : Not listed in Web (examples.js) - [WOUT] : Missing Web build (.html/.data/.wasm/.js) + - [WMETA] : Missing Web .html example metadata ``` -| **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]| -|:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:| -| core_input_virtual_controls | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_basic_window_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | -| core_input_gestures_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | -| core_high_dpi | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_digital_clock | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| text_font_sdf | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| text_draw_3d | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| text_codepoints_loading | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_loading_vox | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| models_loading_m3d | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_texture_outline | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| audio_music_stream | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| rlgl_standalone | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| rlgl_compute_shader | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| easings_testbed | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| raylib_opengl_interop | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | -| embedded_files_loading | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| raymath_vector_angle | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | +| **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]|[WMETA]| +|:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:|:-----:| +| core_input_virtual_controls | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_basic_window_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | ✔ | +| core_input_gestures_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | +| core_high_dpi | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_digital_clock | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| shapes_double_pendulum | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| textures_mouse_painting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| text_font_sdf | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_draw_3d | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| text_codepoints_loading | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_loading_m3d | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_texture_outline | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_normal_map | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| shaders_rounded_rectangle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| shaders_view_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| audio_music_stream | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| rlgl_standalone | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| rlgl_compute_shader | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| easings_testbed | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| raylib_opengl_interop | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | +| embedded_files_loading | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| raymath_vector_angle | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | +| text_unicode_ranges | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | From 52980c947d79fb0621250b0fcb435981ba36e8de Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 24 Aug 2025 11:07:55 +0200 Subject: [PATCH 294/328] REVIEWED: [rtext] Provide more detailed info on glyphs failing to pack #5141 --- src/rtext.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rtext.c b/src/rtext.c index 78423c522..08efa79bf 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -850,7 +850,7 @@ Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyp { for (int j = i + 1; j < glyphCount; j++) { - TRACELOG(LOG_WARNING, "FONT: Failed to package character (%i)", j); + TRACELOG(LOG_WARNING, "FONT: Failed to package character (0x%02x)", glyphs[j].value); // Make sure remaining recs contain valid data recs[j].x = 0; recs[j].y = 0; @@ -918,7 +918,7 @@ Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyp } } } - else TRACELOG(LOG_WARNING, "FONT: Failed to package character (%i)", i); + else TRACELOG(LOG_WARNING, "FONT: Failed to package character (0x%02x)", glyphs[i].value); } RL_FREE(rects); From 04a3ab0ca77d1517732b49b3c1c3627f09db1065 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 24 Aug 2025 11:23:15 +0200 Subject: [PATCH 295/328] REVIEW: Added warning in case of no [rcore] backend defined --- src/rcore.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/rcore.c b/src/rcore.c index 8ae4ee43c..2927b4952 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -564,6 +564,7 @@ const char *TextFormat(const char *text, ...); // Formatting of text with variab #else // TODO: Include your custom platform backend! // i.e software rendering backend or console backend! + #pragma message ("WARNING: No [rcore] platform defined") #endif //---------------------------------------------------------------------------------- From e796b00eb0919bf1c68803f68a63a97c119cddec Mon Sep 17 00:00:00 2001 From: JohnnyCena123 Date: Sun, 24 Aug 2025 11:56:49 +0200 Subject: [PATCH 296/328] [workflows] (almost) rewrite update_examples.yml workflow (#5130) * debug print the working directory * trigger it on any branch (temporarily) * nope, wrong fix * dummy commit to trigger the workflow * lets see if this works * trigger the workflow when updating it * nice typo * add missing dollar signs * debug list the contents of the repository * dir/s instead of ls * remove this, no longer needed * backslashes maybe? windows... * this should be a forward slash * remove no longer needed spam * debug check if examples dir exists * LOG is disabled apparently * ... * temporarily disable this step to save time * ubuntu maybe * bash * install deps * link libc * link libm * now to test the rest * emsdk is back * add missing shaders * Update examples collection * add indentation * remove emsdk cache * ignore emsdk cache * Update examples collection * fix errors with the find command * remove emsdk cache now * i forgot to actually add it to gitignore * fix error with git not finding anything to commit * global config instead of repo specific * clone raylib.com repo under the same owner as the raylib repo owner * add proper access token * reorganize it all * remove non-existent example * clone raylib.com before running rexm * no extra slash * Update examples collection * copy updated examples to the right place * remove unnecessary debug line from rexm.c * Update examples collection * Update examples collection * use hardcoded absolute path to make * add debug line * semicolon * fix wrong handling of make path * fix wrong cwd * rebuild raylib for web after installing it * cleanuo * conditionally push to repos, never on PR * build rexm with make for consistency * remove workflow run results * add back the examples report files * pause automatic commits * revert makefile changes * readd removed vs2022 project file --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/workflows/update_examples.yml | 86 ++++++++++++++------------- .gitignore | 3 + 2 files changed, 48 insertions(+), 41 deletions(-) diff --git a/.github/workflows/update_examples.yml b/.github/workflows/update_examples.yml index 8fb16a2be..6908f0796 100644 --- a/.github/workflows/update_examples.yml +++ b/.github/workflows/update_examples.yml @@ -4,14 +4,18 @@ on: workflow_dispatch: push: paths: + - '.github/workflows/update_examples.yml' - 'examples/**' + - 'tools/rexm/**' pull_request: paths: + - '.github/workflows/update_examples.yml' - 'examples/**' + - 'tools/rexm/**' jobs: build: - runs-on: windows-latest + runs-on: ubuntu-latest steps: - name: Checkout @@ -22,51 +26,51 @@ jobs: with: version: 'latest' actions-cache-folder: 'emsdk-cache' - - - name: Setup MSBuild - uses: microsoft/setup-msbuild@v2 - - - name: Clone raylib.com repo to update files - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Clone raylib.com repo run: | - git clone https://x-access-token:${GITHUB_TOKEN}@github.com/raysan5/raylib.com.git - shell: cmd - - - name: Build and run rexm tool (VS2022 solution) + git clone https://x-access-token:${{ secrets.RAYLIB_DOT_COM_REPO_TOKEN }}@github.com/$GITHUB_REPOSITORY_OWNER/raylib.com.git + shell: bash + + - name: Build and run rexm tool (GNU Makefile) # rexm should update all required files in raylib and even raylib.com repo, # but not sure if it can do that from an Action, maybe it requires manual copy run: | - cd tools/rexm/VS2022 - msbuild.exe rexm.sln /target:rexm /property:Configuration=Release /property:Platform=x64 - cd ${{ github.workspace }}\tools\rexm\VS2022\build\rexm\bin\x64\Release - set REXM_EXAMPLES_BASE_PATH=${{ github.workspace }}\examples - set REXM_EXAMPLES_WEB_PATH=${{ github.workspace }}\..\raylib.com\examples - set REXM_EXAMPLES_TEMPLATE_FILE_PATH=${{ github.workspace }}\examples\examples_template.c - set REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH=${{ github.workspace }}\examples\examples_template.png - set REXM_EXAMPLES_COLLECTION_FILE_PATH=${{ github.workspace }}\examples\examples_list.txt - set REXM_EXAMPLES_VS2022_SLN_FILE=${{ github.workspace }}\projects\VS2022\raylib.sln - set EMSDK_PATH=${{ github.workspace }}/emsdk-cache/emsdk-main - dir - rexm.exe build core_basic_window - cd ${{ github.workspace }}\.. - dir - shell: cmd - - - name: Commit changes to raylib repo - run: | - #git config user.name "github-actions[bot]" - #git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - #git add -A - #git commit -m "Update examples collection" - #git push + sudo apt-get update && sudo apt-get install -y libopengl0 libglu1-mesa libx11-dev libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libgl1-mesa-dev libglu1-mesa-dev + cd "${{ github.workspace }}/src" + make + sudo make install + make clean + make PLATFORM=PLATFORM_WEB + cd ../tools/rexm/ + make + export REXM_EXAMPLES_BASE_PATH="${{ github.workspace }}/examples" + export REXM_EXAMPLES_WEB_PATH="${{ github.workspace }}/raylib.com/examples" + export REXM_EXAMPLES_TEMPLATE_FILE_PATH="${{ github.workspace }}/examples/examples_template.c" + export REXM_EXAMPLES_TEMPLATE_SCREENSHOT_PATH="${{ github.workspace }}/examples/examples_template.png" + export REXM_EXAMPLES_COLLECTION_FILE_PATH="${{ github.workspace }}/examples/examples_list.txt" + export REXM_EXAMPLES_VS2022_SLN_FILE="${{ github.workspace }}/projects/VS2022/raylib.sln" + export EMSDK_PATH="${{ github.workspace }}/emsdk-cache/emsdk-main" + ./rexm update + shell: bash - - name: Push changes to raylib.com repo + - name: Commit changes to raylib repo + if: github.event_name == 'push' && false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - #git config --global user.name "github-actions[bot]" - #git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - #git add examples - #git commit -m "Update web examples" - #git push origin + git config --global user.name "github-actions[bot]" + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add -A + git commit -m "Update examples collection" || echo "git exited with code 1, nothing changed" + git push + shell: bash + + - name: Push changes to raylib.com repo + if: github.event_name == 'push' && false + run: | + cd raylib.com + git add -A + git commit -m "Update web examples" || echo "git exited with code 1, nothing changed" + git push origin + shell: bash diff --git a/.gitignore b/.gitignore index 0d686cd1d..ac4f016e4 100644 --- a/.gitignore +++ b/.gitignore @@ -116,3 +116,6 @@ tools/parser/raylib_parser tools/rexm/rexm.exe tools/rexm/rexm +# CI +emsdk-cache/ +raylib.com/ From c9564c0de873f9f8e7dd50e9fc49ffbe4b04b6ae Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 24 Aug 2025 12:01:46 +0200 Subject: [PATCH 297/328] Update update_examples.yml --- .github/workflows/update_examples.yml | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/.github/workflows/update_examples.yml b/.github/workflows/update_examples.yml index 6908f0796..7feba7d89 100644 --- a/.github/workflows/update_examples.yml +++ b/.github/workflows/update_examples.yml @@ -4,14 +4,10 @@ on: workflow_dispatch: push: paths: - - '.github/workflows/update_examples.yml' - 'examples/**' - - 'tools/rexm/**' pull_request: paths: - - '.github/workflows/update_examples.yml' - 'examples/**' - - 'tools/rexm/**' jobs: build: @@ -27,18 +23,18 @@ jobs: version: 'latest' actions-cache-folder: 'emsdk-cache' - - name: Clone raylib.com repo + - name: Clone raylib.com repo to update files run: | - git clone https://x-access-token:${{ secrets.RAYLIB_DOT_COM_REPO_TOKEN }}@github.com/$GITHUB_REPOSITORY_OWNER/raylib.com.git + git clone https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/raysan5/raylib.com.git shell: bash - - name: Build and run rexm tool (GNU Makefile) - # rexm should update all required files in raylib and even raylib.com repo, - # but not sure if it can do that from an Action, maybe it requires manual copy + - name: Build and run rexm tool (requires GNU Makefile) + # "rexm update" validates and updates all required examples in raylib and even raylib.com repos, + # note that it calls examples/Makefile.Web internally, so it requires [make] tool available run: | sudo apt-get update && sudo apt-get install -y libopengl0 libglu1-mesa libx11-dev libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libgl1-mesa-dev libglu1-mesa-dev cd "${{ github.workspace }}/src" - make + make PLATFORM=PLATFORM_DESKTOP sudo make install make clean make PLATFORM=PLATFORM_WEB @@ -54,7 +50,7 @@ jobs: ./rexm update shell: bash - - name: Commit changes to raylib repo + - name: Commit changes to raylib repo (DISABLED) if: github.event_name == 'push' && false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -66,7 +62,7 @@ jobs: git push shell: bash - - name: Push changes to raylib.com repo + - name: Push changes to raylib.com repo (DISABLED) if: github.event_name == 'push' && false run: | cd raylib.com From 2e95cdb2b5165134798cb602e08e9bfa5c8a9205 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 24 Aug 2025 12:01:58 +0200 Subject: [PATCH 298/328] Minor comment tweaks --- tools/rexm/rexm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 9ef504f45..e10adc5c2 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -833,7 +833,7 @@ int main(int argc, char *argv[]) int exCollectionCount = 0; rlExampleInfo *exCollection = LoadExamplesData(exCollectionFilePath, "ALL", false, &exCollectionCount); - // TODO: Validate: Duplicate entries in collection list? + // TODO: Validate: Check duplicate entries in collection list? // Set status information for all examples, using "status" field in the struct for (int i = 0; i < exCollectionCount; i++) @@ -1974,7 +1974,7 @@ static char **ScanExampleResources(const char *filePath, int *resPathCount) strncpy(buffer, start, len); buffer[len] = '\0'; - // TODO: Make sure buffer is a path (and not a Tracelog() text) + // TODO: Make sure buffer is a path (and not a TraceLog() string) // Check for known extensions for (int i = 0; i < extCount; i++) From 79497e1c88aabbdeaa77e051e2b3abecc53fa0d9 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 24 Aug 2025 12:02:24 +0200 Subject: [PATCH 299/328] REXM: Updated reports --- tools/rexm/examples_report.md | 14 +++++++------- tools/rexm/examples_report_issues.md | 8 +------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/tools/rexm/examples_report.md b/tools/rexm/examples_report.md index 6d552e33d..1c08d9270 100644 --- a/tools/rexm/examples_report.md +++ b/tools/rexm/examples_report.md @@ -75,8 +75,8 @@ Example elements validated: | shapes_top_down_lights | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_rectangle_advanced | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_splines_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_digital_clock | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | -| shapes_double_pendulum | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| shapes_digital_clock | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_double_pendulum | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_logo_raylib | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_srcrec_dstrec | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_image_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -93,7 +93,7 @@ Example elements validated: | textures_sprite_button | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_sprite_explosion | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_bunnymark | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| textures_mouse_painting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| textures_mouse_painting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_blend_modes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_draw_tiled | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_polygon | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -155,7 +155,7 @@ Example elements validated: | shaders_hot_reloading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_mesh_instancing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_multi_sample2d | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_normal_map | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| shaders_normal_map | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_spotlight | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_deferred_render | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_hybrid_render | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -165,8 +165,8 @@ Example elements validated: | shaders_write_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_basic_pbr | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_lightmap | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_rounded_rectangle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | -| shaders_view_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| shaders_rounded_rectangle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_view_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_module_playing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_music_stream | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_raw_stream | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -174,7 +174,7 @@ Example elements validated: | audio_mixed_processor | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_stream_effects | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_sound_multi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | rlgl_standalone | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | rlgl_compute_shader | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | easings_testbed | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | diff --git a/tools/rexm/examples_report_issues.md b/tools/rexm/examples_report_issues.md index 0c91b9c71..12e8c656e 100644 --- a/tools/rexm/examples_report_issues.md +++ b/tools/rexm/examples_report_issues.md @@ -24,19 +24,13 @@ Example elements validated: | core_basic_window_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ❌ | ✔ | | core_input_gestures_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | | core_high_dpi | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shapes_digital_clock | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | -| shapes_double_pendulum | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | -| textures_mouse_painting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | +| shapes_digital_clock | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | text_font_sdf | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | text_draw_3d | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | text_codepoints_loading | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_loading_m3d | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_texture_outline | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| shaders_normal_map | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | -| shaders_rounded_rectangle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | -| shaders_view_depth | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | | audio_music_stream | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | | rlgl_standalone | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | rlgl_compute_shader | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | easings_testbed | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | From 99c4d4b59783c32031121b52d39d7b84c9202050 Mon Sep 17 00:00:00 2001 From: annaymone Date: Sun, 24 Aug 2025 22:55:13 +0000 Subject: [PATCH 300/328] Add pub to compileRaylib (#5143) This is necessary to allow for using the function in dependent `build.zig`s. --- build.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.zig b/build.zig index 1546e41fb..f82ccc531 100644 --- a/build.zig +++ b/build.zig @@ -99,7 +99,7 @@ const config_h_flags = outer: { break :outer flags[0..i].*; }; -fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, options: Options) !*std.Build.Step.Compile { +pub fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, options: Options) !*std.Build.Step.Compile { var raylib_flags_arr: std.ArrayList([]const u8) = .empty; defer raylib_flags_arr.deinit(b.allocator); From f9af011965f44d75faea358635292520402ca375 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 25 Aug 2025 20:56:05 +0200 Subject: [PATCH 301/328] Update core_window_letterbox.c --- examples/core/core_window_letterbox.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/core/core_window_letterbox.c b/examples/core/core_window_letterbox.c index a46e9eec6..6cc171874 100644 --- a/examples/core/core_window_letterbox.c +++ b/examples/core/core_window_letterbox.c @@ -27,12 +27,12 @@ //------------------------------------------------------------------------------------ int main(void) { - const int windowWidth = 800; - const int windowHeight = 450; + const int screenWidth = 800; + const int screenHeight = 450; // Enable config flags for resizable window and vertical synchro SetConfigFlags(FLAG_WINDOW_RESIZABLE | FLAG_VSYNC_HINT); - InitWindow(windowWidth, windowHeight, "raylib [core] example - window scale letterbox"); + InitWindow(screenWidth, screenHeight, "raylib [core] example - window scale letterbox"); SetWindowMinSize(320, 240); int gameScreenWidth = 640; From 8b68d548c98b4c1bfaf13008d6b56af3c0a4c659 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 25 Aug 2025 20:57:18 +0200 Subject: [PATCH 302/328] Reviewing some examples titles --- examples/text/text_codepoints_loading.c | 2 +- examples/text/text_font_filters.c | 2 +- examples/text/text_font_loading.c | 2 +- examples/text/text_font_sdf.c | 2 +- examples/text/text_format_text.c | 2 +- examples/text/text_input_box.c | 2 +- examples/text/text_raylib_fonts.c | 2 +- examples/text/text_rectangle_bounds.c | 11 ++++++++--- examples/textures/textures_draw_tiled.c | 4 ++-- 9 files changed, 17 insertions(+), 12 deletions(-) diff --git a/examples/text/text_codepoints_loading.c b/examples/text/text_codepoints_loading.c index 28d15c33f..2c33a8da5 100644 --- a/examples/text/text_codepoints_loading.c +++ b/examples/text/text_codepoints_loading.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - text codepoints loading +* raylib [text] example - codepoints loading * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/text/text_font_filters.c b/examples/text/text_font_filters.c index f75ae26b2..efd074c54 100644 --- a/examples/text/text_font_filters.c +++ b/examples/text/text_font_filters.c @@ -29,7 +29,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [text] example - font filters"); + InitWindow(screenWidth, screenHeight, "raylib [text] example - font texture filters"); const char msg[50] = "Loaded Font"; diff --git a/examples/text/text_font_loading.c b/examples/text/text_font_loading.c index a7f8c60f4..f1582348b 100644 --- a/examples/text/text_font_loading.c +++ b/examples/text/text_font_loading.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - Font loading +* raylib [text] example - font loading * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/text/text_font_sdf.c b/examples/text/text_font_sdf.c index fd3b2f776..5a24c1013 100644 --- a/examples/text/text_font_sdf.c +++ b/examples/text/text_font_sdf.c @@ -33,7 +33,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [text] example - SDF fonts"); + InitWindow(screenWidth, screenHeight, "raylib [text] example - font SDF loading"); // NOTE: Textures/Fonts MUST be loaded after Window initialization (OpenGL context is required) diff --git a/examples/text/text_format_text.c b/examples/text/text_format_text.c index a5c2a2331..740811b11 100644 --- a/examples/text/text_format_text.c +++ b/examples/text/text_format_text.c @@ -25,7 +25,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [text] example - text formatting"); + InitWindow(screenWidth, screenHeight, "raylib [text] example - text formating"); int score = 100020; int hiscore = 200450; diff --git a/examples/text/text_input_box.c b/examples/text/text_input_box.c index 77c04d55a..af98bb17a 100644 --- a/examples/text/text_input_box.c +++ b/examples/text/text_input_box.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - text input box +* raylib [text] example - input box * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/text/text_raylib_fonts.c b/examples/text/text_raylib_fonts.c index 99937549d..23db709cd 100644 --- a/examples/text/text_raylib_fonts.c +++ b/examples/text/text_raylib_fonts.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - sprite fonts loading +* raylib [text] example - sprite fonts * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/text/text_rectangle_bounds.c b/examples/text/text_rectangle_bounds.c index 75ac65b49..66fe53234 100644 --- a/examples/text/text_rectangle_bounds.c +++ b/examples/text/text_rectangle_bounds.c @@ -17,8 +17,13 @@ #include "raylib.h" -static void DrawTextBoxed(Font font, const char *text, Rectangle rec, float fontSize, float spacing, bool wordWrap, Color tint); // Draw text using font inside rectangle limits -static void DrawTextBoxedSelectable(Font font, const char *text, Rectangle rec, float fontSize, float spacing, bool wordWrap, Color tint, int selectStart, int selectLength, Color selectTint, Color selectBackTint); // Draw text using font inside rectangle limits with support for text selection +//---------------------------------------------------------------------------------- +// Module functions declaration +//---------------------------------------------------------------------------------- +// Draw text using font inside rectangle limits +static void DrawTextBoxed(Font font, const char *text, Rectangle rec, float fontSize, float spacing, bool wordWrap, Color tint); +// Draw text using font inside rectangle limits with support for text selection +static void DrawTextBoxedSelectable(Font font, const char *text, Rectangle rec, float fontSize, float spacing, bool wordWrap, Color tint, int selectStart, int selectLength, Color selectTint, Color selectBackTint); //------------------------------------------------------------------------------------ // Program main entry point @@ -30,7 +35,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [text] example - draw text inside a rectangle"); + InitWindow(screenWidth, screenHeight, "raylib [text] example - rectangle bounds"); const char text[] = "Text cannot escape\tthis container\t...word wrap also works when active so here's \ a long text for testing.\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod \ diff --git a/examples/textures/textures_draw_tiled.c b/examples/textures/textures_draw_tiled.c index c6bf3f835..fec8b4427 100644 --- a/examples/textures/textures_draw_tiled.c +++ b/examples/textures/textures_draw_tiled.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - draw texture tiled +* raylib [textures] example - texture tiled drawing * * Example complexity rating: [★★★☆] 3/4 * @@ -36,7 +36,7 @@ int main(void) const int screenHeight = 450; SetConfigFlags(FLAG_WINDOW_RESIZABLE); // Make the window resizable - InitWindow(screenWidth, screenHeight, "raylib [textures] example - draw texture tiled"); + InitWindow(screenWidth, screenHeight, "raylib [textures] example - textures tiled drawing"); // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) Texture texPattern = LoadTexture("resources/patterns.png"); From 47db1da9eaff3dff8447b12d4e6f0cfe79d9d052 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 25 Aug 2025 20:58:09 +0200 Subject: [PATCH 303/328] REXM: RENAMED: example: `core_3d_fps_controller` to `core_3d_camera_fps` --- examples/Makefile | 2 +- examples/Makefile.Web | 4 ++-- examples/README.md | 2 +- examples/examples_list.txt | 2 +- projects/VS2022/examples/core_3d_fps_controller.vcxproj | 6 +++--- projects/VS2022/raylib.sln | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/examples/Makefile b/examples/Makefile index ab3a30818..25baa9bbe 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -507,7 +507,7 @@ CORE = \ core/core_3d_camera_free \ core/core_3d_camera_mode \ core/core_3d_camera_split_screen \ - core/core_3d_fps_controller \ + core/core_3d_camera_fps \ core/core_3d_picking \ core/core_automation_events \ core/core_basic_screen_manager \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 45061459b..74b94dd6f 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -507,7 +507,7 @@ CORE = \ core/core_3d_camera_free \ core/core_3d_camera_mode \ core/core_3d_camera_split_screen \ - core/core_3d_fps_controller \ + core/core_3d_camera_fps \ core/core_3d_picking \ core/core_automation_events \ core/core_basic_screen_manager \ @@ -704,7 +704,7 @@ core/core_3d_camera_mode: core/core_3d_camera_mode.c core/core_3d_camera_split_screen: core/core_3d_camera_split_screen.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -core/core_3d_fps_controller: core/core_3d_fps_controller.c +core/core_3d_camera_fps: core/core_3d_camera_fps.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) core/core_3d_picking: core/core_3d_picking.c diff --git a/examples/README.md b/examples/README.md index 30d45a001..b391732e9 100644 --- a/examples/README.md +++ b/examples/README.md @@ -40,7 +40,7 @@ Examples using raylib[core](../src/rcore.c) platform functionality like window c | [core_3d_camera_free](core/core_3d_camera_free.c) | core_3d_camera_free | ⭐☆☆☆ | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | | [core_3d_camera_first_person](core/core_3d_camera_first_person.c) | core_3d_camera_first_person | ⭐⭐☆☆ | 1.3 | 1.3 | [Ramon Santamaria](https://github.com/raysan5) | | [core_3d_camera_split_screen](core/core_3d_camera_split_screen.c) | core_3d_camera_split_screen | ⭐⭐⭐☆ | 3.7 | 4.0 | [Jeffery Myers](https://github.com/JeffM2501) | -| [core_3d_fps_controller](core/core_3d_fps_controller.c) | core_3d_fps_controller | ⭐⭐⭐☆ | 5.5 | 5.5 | [Agnis Aldins](https://github.com/nezvers) | +| [core_3d_camera_fps](core/core_3d_camera_fps.c) | core_3d_camera_fps | ⭐⭐⭐☆ | 5.5 | 5.5 | [Agnis Aldins](https://github.com/nezvers) | | [core_3d_picking](core/core_3d_picking.c) | core_3d_picking | ⭐⭐☆☆ | 1.3 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | | [core_world_screen](core/core_world_screen.c) | core_world_screen | ⭐⭐☆☆ | 1.3 | 1.4 | [Ramon Santamaria](https://github.com/raysan5) | | [core_custom_logging](core/core_custom_logging.c) | core_custom_logging | ⭐⭐⭐☆ | 2.5 | 2.5 | [Pablo Marcos Oltra](https://github.com/pamarcos) | diff --git a/examples/examples_list.txt b/examples/examples_list.txt index b91cf1040..a980ff4a4 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -23,7 +23,7 @@ core;core_3d_camera_mode;⭐️☆☆☆;1.0;1.0;"Ramon Santamaria";@raysan5 core;core_3d_camera_free;⭐️☆☆☆;1.3;1.3;"Ramon Santamaria";@raysan5 core;core_3d_camera_first_person;⭐️⭐️☆☆;1.3;1.3;"Ramon Santamaria";@raysan5 core;core_3d_camera_split_screen;⭐️⭐️⭐️☆;3.7;4.0;"Jeffery Myers";@JeffM2501 -core;core_3d_fps_controller;⭐️⭐️⭐️☆;5.5;5.5;"Agnis Aldins";@nezvers +core;core_3d_camera_fps;⭐️⭐️⭐️☆;5.5;5.5;"Agnis Aldins";@nezvers core;core_3d_picking;⭐️⭐️☆☆;1.3;4.0;"Ramon Santamaria";@raysan5 core;core_world_screen;⭐️⭐️☆☆;1.3;1.4;"Ramon Santamaria";@raysan5 core;core_custom_logging;⭐️⭐️⭐️☆;2.5;2.5;"Pablo Marcos Oltra";@pamarcos diff --git a/projects/VS2022/examples/core_3d_fps_controller.vcxproj b/projects/VS2022/examples/core_3d_fps_controller.vcxproj index c0b8561a4..5708555d5 100644 --- a/projects/VS2022/examples/core_3d_fps_controller.vcxproj +++ b/projects/VS2022/examples/core_3d_fps_controller.vcxproj @@ -53,9 +53,9 @@ {6B1A933E-71B8-4C1F-9E79-02D98830E671} Win32Proj - core_3d_fps_controller + core_3d_camera_fps 10.0 - core_3d_fps_controller + core_3d_camera_fps @@ -553,7 +553,7 @@ - + diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index a5429a106..21d7c63b6 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -333,7 +333,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_positioning", " EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_virtual_controls", "examples\core_input_virtual_controls.vcxproj", "{0981CA28-E4A5-4DF1-987F-A41D09131EFC}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_fps_controller", "examples\core_3d_fps_controller.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_fps", "examples\core_3d_camera_fps.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_normal_map", "examples\shaders_normal_map.vcxproj", "{6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}" EndProject From 60ac8f2a868da85562f2bf872bdb9715df56b9ba Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 25 Aug 2025 21:11:37 +0200 Subject: [PATCH 304/328] Renamed example --- ...ore_3d_fps_controller.c => core_3d_camera_fps.c} | 0 ...3d_fps_controller.png => core_3d_camera_fps.png} | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename examples/core/{core_3d_fps_controller.c => core_3d_camera_fps.c} (100%) rename examples/core/{core_3d_fps_controller.png => core_3d_camera_fps.png} (100%) diff --git a/examples/core/core_3d_fps_controller.c b/examples/core/core_3d_camera_fps.c similarity index 100% rename from examples/core/core_3d_fps_controller.c rename to examples/core/core_3d_camera_fps.c diff --git a/examples/core/core_3d_fps_controller.png b/examples/core/core_3d_camera_fps.png similarity index 100% rename from examples/core/core_3d_fps_controller.png rename to examples/core/core_3d_camera_fps.png From 63432518571423df10013248050088c32a8b1b46 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 25 Aug 2025 21:13:44 +0200 Subject: [PATCH 305/328] Update rexm.c --- tools/rexm/rexm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index e10adc5c2..5e31f50d3 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -1714,7 +1714,7 @@ static int FileRename(const char *fileName, const char *fileRename) if (FileExists(fileName)) { - result = rename(fileName, TextFormat("%s/%s", GetDirectoryPath(fileName), fileRename)); + result = rename(fileName, fileRename); } else result = -1; From 3b16a72302bdb4a9f0738b2c6ddc0d7d9fbd401f Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 25 Aug 2025 21:23:30 +0200 Subject: [PATCH 306/328] REXM: Allow building web examples locally on Windows platform --- tools/rexm/rexm.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 5e31f50d3..33bc6bdfa 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -656,9 +656,12 @@ int main(int argc, char *argv[]) // Recompile example (on raylib side) // WARNING: EMSDK_PATH must be set to proper location when calling from GitHub Actions - system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exRecategory, exRename)); - //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exRecategory, exRename)); - +#if defined(_WIN32) + putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin"); + system(TextFormat("mingw32-make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exRecategory, exRename)); +#else + system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exRecategory, exRename)); +#endif // Update generated .html metadata char exHtmlPath[512] = { 0 }; strcpy(exHtmlPath, TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName)); // WARNING: Cache path for saving From a67b49498fcb2585e22395e0a1656d21dc59008b Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 26 Aug 2025 00:24:01 +0200 Subject: [PATCH 307/328] Update rexm.c --- tools/rexm/rexm.c | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 33bc6bdfa..46c0f7d4f 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -570,12 +570,15 @@ int main(int argc, char *argv[]) // Compile to: raylib.com/examples//_example_name.wasm // Compile to: raylib.com/examples//_example_name.js //------------------------------------------------------------------------------------------------ + // WARNING 1: EMSDK_PATH must be set to proper location when calling from GitHub Actions + // WARNING 2: raylib.a and raylib.web.a must be available when compiling locally +#if defined(_WIN32) //putenv("RAYLIB_DIR=C:\\GitHub\\raylib"); - //putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin"); - // WARNING: EMSDK_PATH must be set to proper location when calling from GitHub Actions - system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exCategory, exName)); - //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exCategory, exName)); - + putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin"); + system(TextFormat("mingw32-make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exCategory, exName)); +#else + system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exCategory, exName)); +#endif // Update generated .html metadata char exHtmlPath[512] = { 0 }; strcpy(exHtmlPath, TextFormat("%s/%s/%s.html", exBasePath, exCategory, exName)); // WARNING: Cache path for saving @@ -1025,8 +1028,12 @@ int main(int argc, char *argv[]) ((exInfo->status & VALID_MISSING_WEB_OUTPUT) || (exInfo->status & VALID_MISSING_WEB_METADATA))) { // Build example for PLATFORM_WEB - system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exInfo->category, exInfo->name)); - //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); + #if defined(_WIN32) + putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin"); + system(TextFormat("mingw32-make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exInfo->category, exInfo->name)); + #else + system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exInfo->category, exInfo->name)); + #endif // Update generated .html metadata char exHtmlPath[512] = { 0 }; @@ -1201,15 +1208,23 @@ int main(int argc, char *argv[]) if (strcmp(exCategory, "others") != 0) // Skipping "others" category { // Build example for PLATFORM_DESKTOP + #if defined(_WIN32) //putenv(TextFormat("RAYLIB_DIR=%s\\..", exBasePath)); - //putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin"); + putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin"); //putenv("MAKE=mingw32-make"); //ChangeDirectory(exBasePath); + system(TextFormat("mingw32-make -C %s %s/%s PLATFORM=PLATFORM_DESKTOP -B", exBasePath, exCategory, exName)); + #else system(TextFormat("make -C %s %s/%s PLATFORM=PLATFORM_DESKTOP -B", exBasePath, exCategory, exName)); + #endif // Build example for PLATFORM_WEB - system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exCategory, exName)); - //system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exInfo->category, exInfo->name)); + #if defined(_WIN32) + putenv("PATH=%PATH%;C:\\raylib\\w64devkit\\bin"); + system(TextFormat("mingw32-make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exCategory, exName)); + #else + system(TextFormat("make -C %s -f Makefile.Web %s/%s PLATFORM=PLATFORM_WEB -B", exBasePath, exCategory, exName)); + #endif // Update generated .html metadata char exHtmlPath[512] = { 0 }; From a72b4b177bdebad43ed536666b3e4f6eadb431c8 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 26 Aug 2025 00:32:24 +0200 Subject: [PATCH 308/328] Updated examples short description --- examples/audio/audio_module_playing.c | 2 +- examples/audio/audio_music_stream.c | 2 +- examples/audio/audio_raw_stream.c | 2 +- examples/audio/audio_sound_loading.c | 2 +- examples/audio/audio_sound_positioning.c | 4 ++-- examples/audio/audio_stream_effects.c | 2 +- examples/core/core_2d_camera.c | 2 +- examples/core/core_2d_camera_platformer.c | 2 +- examples/core/core_3d_camera_free.c | 2 +- examples/core/core_3d_camera_mode.c | 2 +- examples/core/core_3d_camera_split_screen.c | 2 +- examples/core/core_3d_picking.c | 2 +- examples/core/core_basic_screen_manager.c | 2 +- examples/core/core_basic_window.c | 2 +- examples/core/core_basic_window_web.c | 2 +- examples/core/core_custom_logging.c | 2 +- examples/core/core_drop_files.c | 2 +- examples/core/core_high_dpi.c | 2 +- examples/core/core_input_gamepad.c | 2 +- examples/core/core_input_gestures.c | 2 +- examples/core/core_input_gestures_web.c | 2 +- examples/core/core_input_keys.c | 2 +- examples/core/core_input_mouse.c | 2 +- examples/core/core_input_mouse_wheel.c | 2 +- examples/core/core_input_multitouch.c | 2 +- examples/core/core_random_values.c | 2 +- examples/core/core_scissor_test.c | 2 +- examples/core/core_smooth_pixelperfect.c | 2 +- examples/core/core_storage_values.c | 2 +- examples/core/core_vr_simulator.c | 2 +- examples/core/core_window_letterbox.c | 2 +- examples/core/core_window_should_close.c | 2 +- examples/core/core_world_screen.c | 2 +- examples/models/models_animation.c | 2 +- examples/models/models_billboard.c | 2 +- examples/models/models_bone_socket.c | 2 +- examples/models/models_box_collisions.c | 2 +- examples/models/models_cubicmap.c | 2 +- examples/models/models_draw_cube_texture.c | 2 +- examples/models/models_geometric_shapes.c | 2 +- examples/models/models_gpu_skinning.c | 2 +- examples/models/models_heightmap.c | 2 +- examples/models/models_loading.c | 2 +- examples/models/models_loading_gltf.c | 2 +- examples/models/models_loading_m3d.c | 2 +- examples/models/models_loading_vox.c | 2 +- examples/models/models_mesh_generation.c | 2 +- examples/models/models_mesh_picking.c | 2 +- examples/models/models_orthographic_projection.c | 2 +- examples/models/models_point_rendering.c | 2 +- examples/models/models_skybox.c | 2 +- examples/models/models_tesseract_view.c | 2 +- examples/models/models_waving_cubes.c | 2 +- examples/models/models_yaw_pitch_roll.c | 2 +- examples/others/easings_testbed.c | 2 +- examples/others/embedded_files_loading.c | 2 +- examples/others/raylib_opengl_interop.c | 2 +- examples/others/raymath_vector_angle.c | 2 +- examples/others/rlgl_compute_shader.c | 2 +- examples/shaders/shaders_basic_pbr.c | 2 +- examples/shaders/shaders_custom_uniform.c | 2 +- examples/shaders/shaders_deferred_render.c | 2 +- examples/shaders/shaders_hybrid_render.c | 2 +- examples/shaders/shaders_julia_set.c | 2 +- examples/shaders/shaders_mesh_instancing.c | 2 +- examples/shaders/shaders_model_shader.c | 2 +- examples/shaders/shaders_normal_map.c | 2 +- examples/shaders/shaders_palette_switch.c | 2 +- examples/shaders/shaders_postprocessing.c | 2 +- examples/shaders/shaders_raymarching.c | 2 +- examples/shaders/shaders_shadowmap.c | 2 +- examples/shaders/shaders_shapes_textures.c | 2 +- examples/shaders/shaders_simple_mask.c | 2 +- examples/shaders/shaders_spotlight.c | 2 +- examples/shaders/shaders_texture_drawing.c | 2 +- examples/shaders/shaders_texture_waves.c | 2 +- examples/shaders/shaders_vertex_displacement.c | 2 +- examples/shaders/shaders_write_depth.c | 2 +- examples/shapes/shapes_basic_shapes.c | 2 +- examples/shapes/shapes_colors_palette.c | 2 +- examples/shapes/shapes_digital_clock.c | 2 +- examples/shapes/shapes_double_pendulum.c | 2 +- examples/shapes/shapes_draw_circle_sector.c | 2 +- examples/shapes/shapes_draw_rectangle_rounded.c | 2 +- examples/shapes/shapes_draw_ring.c | 2 +- examples/shapes/shapes_lines_bezier.c | 2 +- examples/shapes/shapes_logo_raylib.c | 2 +- examples/shapes/shapes_rectangle_advanced.c | 2 +- examples/shapes/shapes_rectangle_scaling.c | 2 +- examples/text/text_draw_3d.c | 2 +- examples/text/text_format_text.c | 4 ++-- examples/text/text_unicode.c | 2 +- examples/textures/textures_draw_tiled.c | 2 +- examples/textures/textures_image_channel.c | 2 +- examples/textures/textures_image_drawing.c | 2 +- examples/textures/textures_image_kernel.c | 2 +- examples/textures/textures_image_loading.c | 2 +- examples/textures/textures_image_processing.c | 2 +- examples/textures/textures_image_text.c | 2 +- examples/textures/textures_polygon.c | 2 +- examples/textures/textures_raw_data.c | 2 +- examples/textures/textures_textured_curve.c | 2 +- 102 files changed, 104 insertions(+), 104 deletions(-) diff --git a/examples/audio/audio_module_playing.c b/examples/audio/audio_module_playing.c index 0d6c48981..2d0834e2b 100644 --- a/examples/audio/audio_module_playing.c +++ b/examples/audio/audio_module_playing.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [audio] example - Module playing (streaming) +* raylib [audio] example - module playing (streaming) * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/audio/audio_music_stream.c b/examples/audio/audio_music_stream.c index b6efb3d2e..c0028a033 100644 --- a/examples/audio/audio_music_stream.c +++ b/examples/audio/audio_music_stream.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [audio] example - Music playing (streaming) +* raylib [audio] example - music playing (streaming) * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/audio/audio_raw_stream.c b/examples/audio/audio_raw_stream.c index 84c8963e3..01a125f4c 100644 --- a/examples/audio/audio_raw_stream.c +++ b/examples/audio/audio_raw_stream.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [audio] example - Raw audio streaming +* raylib [audio] example - raw audio streaming * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/audio/audio_sound_loading.c b/examples/audio/audio_sound_loading.c index 45028839b..5fb356264 100644 --- a/examples/audio/audio_sound_loading.c +++ b/examples/audio/audio_sound_loading.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [audio] example - Sound loading and playing +* raylib [audio] example - sound loading and playing * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/audio/audio_sound_positioning.c b/examples/audio/audio_sound_positioning.c index 4102a97f6..5bef2d671 100644 --- a/examples/audio/audio_sound_positioning.c +++ b/examples/audio/audio_sound_positioning.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [audio] example - spatialized 3D sound +* raylib [audio] example - 3d sound positioning * * Example complexity rating: [★★☆☆] 2/4 * @@ -32,7 +32,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [audio] example - spatialized 3D sound"); + InitWindow(screenWidth, screenHeight, "raylib [audio] example - 3d sound positioning"); InitAudioDevice(); diff --git a/examples/audio/audio_stream_effects.c b/examples/audio/audio_stream_effects.c index 435e7b878..29186e20e 100644 --- a/examples/audio/audio_stream_effects.c +++ b/examples/audio/audio_stream_effects.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [audio] example - Music stream processing effects +* raylib [audio] example - stream effects * * Example complexity rating: [★★★★] 4/4 * diff --git a/examples/core/core_2d_camera.c b/examples/core/core_2d_camera.c index 07766e0fb..b752a9640 100644 --- a/examples/core/core_2d_camera.c +++ b/examples/core/core_2d_camera.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - 2D Camera system +* raylib [core] example - 2d camera * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/core/core_2d_camera_platformer.c b/examples/core/core_2d_camera_platformer.c index d4d46e295..41d9b993d 100644 --- a/examples/core/core_2d_camera_platformer.c +++ b/examples/core/core_2d_camera_platformer.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - 2D Camera platformer +* raylib [core] example - 2d camera platformer * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/core/core_3d_camera_free.c b/examples/core/core_3d_camera_free.c index b490575db..dde6a6c7d 100644 --- a/examples/core/core_3d_camera_free.c +++ b/examples/core/core_3d_camera_free.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Initialize 3d camera free +* raylib [core] example - 3d camera free * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/core/core_3d_camera_mode.c b/examples/core/core_3d_camera_mode.c index 372fd5923..e265b7eb0 100644 --- a/examples/core/core_3d_camera_mode.c +++ b/examples/core/core_3d_camera_mode.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Initialize 3d camera mode +* raylib [core] example - 3d camera mode * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/core/core_3d_camera_split_screen.c b/examples/core/core_3d_camera_split_screen.c index b0cb0a18d..7f3d9de42 100644 --- a/examples/core/core_3d_camera_split_screen.c +++ b/examples/core/core_3d_camera_split_screen.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - 3d cmaera split screen +* raylib [core] example - 3d camera split screen * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/core/core_3d_picking.c b/examples/core/core_3d_picking.c index 8a6fbd156..f62c9331b 100644 --- a/examples/core/core_3d_picking.c +++ b/examples/core/core_3d_picking.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Picking in 3d mode +* raylib [core] example - 3d picking * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/core/core_basic_screen_manager.c b/examples/core/core_basic_screen_manager.c index 67de31159..c2d37818f 100644 --- a/examples/core/core_basic_screen_manager.c +++ b/examples/core/core_basic_screen_manager.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] examples - basic screen manager +* raylib [core] example - basic screen manager * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/core/core_basic_window.c b/examples/core/core_basic_window.c index b3f20367a..73d75683a 100644 --- a/examples/core/core_basic_window.c +++ b/examples/core/core_basic_window.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Basic window +* raylib [core] example - basic window * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/core/core_basic_window_web.c b/examples/core/core_basic_window_web.c index e8607432b..c4aa18177 100644 --- a/examples/core/core_basic_window_web.c +++ b/examples/core/core_basic_window_web.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Basic window (adapted for HTML5 platform) +* raylib [core] example - basic window * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/core/core_custom_logging.c b/examples/core/core_custom_logging.c index d27c9fd6b..5ea2a4762 100644 --- a/examples/core/core_custom_logging.c +++ b/examples/core/core_custom_logging.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Custom logging +* raylib [core] example - custom logging * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/core/core_drop_files.c b/examples/core/core_drop_files.c index 4aafbb8c9..0dc9ea929 100644 --- a/examples/core/core_drop_files.c +++ b/examples/core/core_drop_files.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Windows drop files +* raylib [core] example - drop files * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/core/core_high_dpi.c b/examples/core/core_high_dpi.c index 05661f50e..ccb4814d8 100644 --- a/examples/core/core_high_dpi.c +++ b/examples/core/core_high_dpi.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - HighDPI +* raylib [core] example - high dpi * * Example complexity rating: [★☆☆☆] e/4 * diff --git a/examples/core/core_input_gamepad.c b/examples/core/core_input_gamepad.c index 1ab6b55ae..aae6e4b55 100644 --- a/examples/core/core_input_gamepad.c +++ b/examples/core/core_input_gamepad.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Gamepad input +* raylib [core] example - gamepad input * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/core/core_input_gestures.c b/examples/core/core_input_gestures.c index b491da393..fd7250658 100644 --- a/examples/core/core_input_gestures.c +++ b/examples/core/core_input_gestures.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Input Gestures Detection +* raylib [core] example - input gestures * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/core/core_input_gestures_web.c b/examples/core/core_input_gestures_web.c index 613aff0ab..743639ea0 100644 --- a/examples/core/core_input_gestures_web.c +++ b/examples/core/core_input_gestures_web.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Input Gestures for Web +* raylib [core] example - input gestures web * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/core/core_input_keys.c b/examples/core/core_input_keys.c index 670df1ef4..6ab099c4e 100644 --- a/examples/core/core_input_keys.c +++ b/examples/core/core_input_keys.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Keyboard input +* raylib [core] example - keyboard input * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/core/core_input_mouse.c b/examples/core/core_input_mouse.c index 55f00b809..d892b4e9b 100644 --- a/examples/core/core_input_mouse.c +++ b/examples/core/core_input_mouse.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Mouse input +* raylib [core] example - mouse input * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/core/core_input_mouse_wheel.c b/examples/core/core_input_mouse_wheel.c index 242eeafa6..b5d0a0e21 100644 --- a/examples/core/core_input_mouse_wheel.c +++ b/examples/core/core_input_mouse_wheel.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] examples - Mouse wheel input +* raylib [core] example - input mouse wheel * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/core/core_input_multitouch.c b/examples/core/core_input_multitouch.c index 136c603cc..01dd90fae 100644 --- a/examples/core/core_input_multitouch.c +++ b/examples/core/core_input_multitouch.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Input multitouch +* raylib [core] example - input multitouch * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/core/core_random_values.c b/examples/core/core_random_values.c index 16b89e700..911de2949 100644 --- a/examples/core/core_random_values.c +++ b/examples/core/core_random_values.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Generate random values +* raylib [core] example - generate random values * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/core/core_scissor_test.c b/examples/core/core_scissor_test.c index 49e90c794..3166fad86 100644 --- a/examples/core/core_scissor_test.c +++ b/examples/core/core_scissor_test.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Scissor test +* raylib [core] example - scissor test * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/core/core_smooth_pixelperfect.c b/examples/core/core_smooth_pixelperfect.c index 697b2ff09..9570ce482 100644 --- a/examples/core/core_smooth_pixelperfect.c +++ b/examples/core/core_smooth_pixelperfect.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Smooth Pixel-perfect camera +* raylib [core] example - smooth pixel-perfect camera * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/core/core_storage_values.c b/examples/core/core_storage_values.c index 747b94d5b..c74c7ce93 100644 --- a/examples/core/core_storage_values.c +++ b/examples/core/core_storage_values.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Storage save/load values +* raylib [core] example - storage save/load values * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/core/core_vr_simulator.c b/examples/core/core_vr_simulator.c index 34b556e99..635bda123 100644 --- a/examples/core/core_vr_simulator.c +++ b/examples/core/core_vr_simulator.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - VR Simulator (Oculus Rift CV1 parameters) +* raylib [core] example - vr simulator * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/core/core_window_letterbox.c b/examples/core/core_window_letterbox.c index 6cc171874..4bbf12cfe 100644 --- a/examples/core/core_window_letterbox.c +++ b/examples/core/core_window_letterbox.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - window scale letterbox (and virtual mouse) +* raylib [core] example - window scale letterbox * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/core/core_window_should_close.c b/examples/core/core_window_should_close.c index 274891ef3..bb7daf3ee 100644 --- a/examples/core/core_window_should_close.c +++ b/examples/core/core_window_should_close.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Window should close +* raylib [core] example - window should close * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/core/core_world_screen.c b/examples/core/core_world_screen.c index 6e065ca34..6df76db08 100644 --- a/examples/core/core_world_screen.c +++ b/examples/core/core_world_screen.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - World to screen +* raylib [core] example - core world screen * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/models/models_animation.c b/examples/models/models_animation.c index 2d98cb5ed..1f456e5ea 100644 --- a/examples/models/models_animation.c +++ b/examples/models/models_animation.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - Load 3d model with animations and play them +* raylib [models] example - model animation * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/models/models_billboard.c b/examples/models/models_billboard.c index 82610a4df..8dbf26cf7 100644 --- a/examples/models/models_billboard.c +++ b/examples/models/models_billboard.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - Drawing billboards +* raylib [models] example - billboard render * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/models/models_bone_socket.c b/examples/models/models_bone_socket.c index cdad46738..8348aa50d 100644 --- a/examples/models/models_bone_socket.c +++ b/examples/models/models_bone_socket.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Using bones as socket for calculating the positioning of something +* raylib [models] example - bone socket * * Example complexity rating: [★★★★] 4/4 * diff --git a/examples/models/models_box_collisions.c b/examples/models/models_box_collisions.c index 00e7e541c..b4b1afacc 100644 --- a/examples/models/models_box_collisions.c +++ b/examples/models/models_box_collisions.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - Detect basic 3d collisions (box vs sphere vs box) +* raylib [models] example - box collisions * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/models/models_cubicmap.c b/examples/models/models_cubicmap.c index 980215b2e..e44f01575 100644 --- a/examples/models/models_cubicmap.c +++ b/examples/models/models_cubicmap.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - Cubicmap loading and drawing +* raylib [models] example - cubicmap loading and drawing * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/models/models_draw_cube_texture.c b/examples/models/models_draw_cube_texture.c index 650f80aee..bc55b4c15 100644 --- a/examples/models/models_draw_cube_texture.c +++ b/examples/models/models_draw_cube_texture.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - Draw textured cube +* raylib [models] example - draw cube texture * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/models/models_geometric_shapes.c b/examples/models/models_geometric_shapes.c index 8cce4fcb0..baaf458b1 100644 --- a/examples/models/models_geometric_shapes.c +++ b/examples/models/models_geometric_shapes.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - Draw some basic geometric shapes (cube, sphere, cylinder...) +* raylib [models] example - geometric shapes * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/models/models_gpu_skinning.c b/examples/models/models_gpu_skinning.c index d1b8c097a..daf4f886a 100644 --- a/examples/models/models_gpu_skinning.c +++ b/examples/models/models_gpu_skinning.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [core] example - Doing skinning on the gpu using a vertex shader +* raylib [models] example - gpu skinning * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/models/models_heightmap.c b/examples/models/models_heightmap.c index e24c01c9a..94af07f0c 100644 --- a/examples/models/models_heightmap.c +++ b/examples/models/models_heightmap.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - Heightmap loading and drawing +* raylib [models] example - heightmap terrain * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/models/models_loading.c b/examples/models/models_loading.c index 82ae40dc4..356043579 100644 --- a/examples/models/models_loading.c +++ b/examples/models/models_loading.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - Models loading +* raylib [models] example - models loading * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/models/models_loading_gltf.c b/examples/models/models_loading_gltf.c index e3a5b5bcb..a827ec154 100644 --- a/examples/models/models_loading_gltf.c +++ b/examples/models/models_loading_gltf.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - loading gltf with animations +* raylib [models] example - loading gltf animations * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/models/models_loading_m3d.c b/examples/models/models_loading_m3d.c index 871bb54dd..649146f9a 100644 --- a/examples/models/models_loading_m3d.c +++ b/examples/models/models_loading_m3d.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - Load models M3D +* raylib [models] example - model loading m3d * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/models/models_loading_vox.c b/examples/models/models_loading_vox.c index f8917ecf2..8ac93945e 100644 --- a/examples/models/models_loading_vox.c +++ b/examples/models/models_loading_vox.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - Load models vox (MagicaVoxel) +* raylib [models] example - magicavoxel loading * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/models/models_mesh_generation.c b/examples/models/models_mesh_generation.c index 828c9809d..36112e73b 100644 --- a/examples/models/models_mesh_generation.c +++ b/examples/models/models_mesh_generation.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - procedural mesh generation +* raylib [models] example - mesh generation * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/models/models_mesh_picking.c b/examples/models/models_mesh_picking.c index 660017ac9..628f3de3a 100644 --- a/examples/models/models_mesh_picking.c +++ b/examples/models/models_mesh_picking.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - Mesh picking in 3d mode, ground plane, triangle, mesh +* raylib [models] example - mesh picking * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/models/models_orthographic_projection.c b/examples/models/models_orthographic_projection.c index 8392f7a7d..d13188fcd 100644 --- a/examples/models/models_orthographic_projection.c +++ b/examples/models/models_orthographic_projection.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - Show the difference between perspective and orthographic projection +* raylib [models] example - orthographic projection * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/models/models_point_rendering.c b/examples/models/models_point_rendering.c index bbe335bb2..4a42a83fb 100644 --- a/examples/models/models_point_rendering.c +++ b/examples/models/models_point_rendering.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib example - point rendering +* raylib [models] example - point rendering * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/models/models_skybox.c b/examples/models/models_skybox.c index a5304a93d..f721f4305 100644 --- a/examples/models/models_skybox.c +++ b/examples/models/models_skybox.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - Skybox loading and drawing +* raylib [models] example - skybox rendering * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/models/models_tesseract_view.c b/examples/models/models_tesseract_view.c index 661d078b4..d23e34141 100644 --- a/examples/models/models_tesseract_view.c +++ b/examples/models/models_tesseract_view.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - Tesseract view +* raylib [models] example - tesseract view * * NOTE: This example only works on platforms that support drag & drop (Windows, Linux, OSX, Html5?) * diff --git a/examples/models/models_waving_cubes.c b/examples/models/models_waving_cubes.c index 455d85e18..51febf39d 100644 --- a/examples/models/models_waving_cubes.c +++ b/examples/models/models_waving_cubes.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - Waving cubes +* raylib [models] example - waving cubes * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/models/models_yaw_pitch_roll.c b/examples/models/models_yaw_pitch_roll.c index 2c674824e..954c99ded 100644 --- a/examples/models/models_yaw_pitch_roll.c +++ b/examples/models/models_yaw_pitch_roll.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [models] example - Plane rotations (yaw, pitch, roll) +* raylib [models] example - plane rotations (yaw, pitch, roll) * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/others/easings_testbed.c b/examples/others/easings_testbed.c index 31daeecee..fb3175711 100644 --- a/examples/others/easings_testbed.c +++ b/examples/others/easings_testbed.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [easings] example - Easings Testbed +* raylib [easings] example - easings testbed * * Example originally created with raylib 2.5, last time updated with raylib 2.5 * diff --git a/examples/others/embedded_files_loading.c b/examples/others/embedded_files_loading.c index 8a66b4394..10a094f84 100644 --- a/examples/others/embedded_files_loading.c +++ b/examples/others/embedded_files_loading.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [others] example - Embedded files loading (Wave and Image) +* raylib [others] example - embedded files loading * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/others/raylib_opengl_interop.c b/examples/others/raylib_opengl_interop.c index 4dc534d12..df13ba216 100644 --- a/examples/others/raylib_opengl_interop.c +++ b/examples/others/raylib_opengl_interop.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - OpenGL point particle system +* raylib [others] example - OpenGL interoperatibility * * Example complexity rating: [★★★★] 4/4 * diff --git a/examples/others/raymath_vector_angle.c b/examples/others/raymath_vector_angle.c index 1d49cec66..d98b158ed 100644 --- a/examples/others/raymath_vector_angle.c +++ b/examples/others/raymath_vector_angle.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shapes] example - Vector Angle +* raylib [math] example - vector angle * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/others/rlgl_compute_shader.c b/examples/others/rlgl_compute_shader.c index 07a10b1d5..81b2e7db9 100644 --- a/examples/others/rlgl_compute_shader.c +++ b/examples/others/rlgl_compute_shader.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [rlgl] example - compute shader - Conway's Game of Life +* raylib [rlgl] example - compute shader - game of life * * NOTE: This example requires raylib OpenGL 4.3 versions for compute shaders support, * shaders used in this example are #version 430 (OpenGL 4.3) diff --git a/examples/shaders/shaders_basic_pbr.c b/examples/shaders/shaders_basic_pbr.c index 39db430ab..1844a43bc 100644 --- a/examples/shaders/shaders_basic_pbr.c +++ b/examples/shaders/shaders_basic_pbr.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Basic PBR +* raylib [shaders] example - basic pbr * * Example complexity rating: [★★★★] 4/4 * diff --git a/examples/shaders/shaders_custom_uniform.c b/examples/shaders/shaders_custom_uniform.c index d6738cf57..f599a4a0f 100644 --- a/examples/shaders/shaders_custom_uniform.c +++ b/examples/shaders/shaders_custom_uniform.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Postprocessing with custom uniform variable +* raylib [shaders] example - custom uniform variable * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/shaders/shaders_deferred_render.c b/examples/shaders/shaders_deferred_render.c index 96c118c61..c0bdd9f98 100644 --- a/examples/shaders/shaders_deferred_render.c +++ b/examples/shaders/shaders_deferred_render.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - deferred rendering +* raylib [shaders] example - deferred render * * Example complexity rating: [★★★★] 4/4 * diff --git a/examples/shaders/shaders_hybrid_render.c b/examples/shaders/shaders_hybrid_render.c index 5d4f8aba1..d3c3a910b 100644 --- a/examples/shaders/shaders_hybrid_render.c +++ b/examples/shaders/shaders_hybrid_render.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - hybrid rendering +* raylib [shaders] example - write depth buffer * * Example complexity rating: [★★★★] 4/4 * diff --git a/examples/shaders/shaders_julia_set.c b/examples/shaders/shaders_julia_set.c index da5564321..a9c5f5944 100644 --- a/examples/shaders/shaders_julia_set.c +++ b/examples/shaders/shaders_julia_set.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Julia sets +* raylib [shaders] example - julia sets * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/shaders/shaders_mesh_instancing.c b/examples/shaders/shaders_mesh_instancing.c index 6142a825e..c3c7a9d16 100644 --- a/examples/shaders/shaders_mesh_instancing.c +++ b/examples/shaders/shaders_mesh_instancing.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Mesh instancing +* raylib [shaders] example - mesh instancing * * Example complexity rating: [★★★★] 4/4 * diff --git a/examples/shaders/shaders_model_shader.c b/examples/shaders/shaders_model_shader.c index 42cfff4aa..37d69f974 100644 --- a/examples/shaders/shaders_model_shader.c +++ b/examples/shaders/shaders_model_shader.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Model shader +* raylib [shaders] example - model shader * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/shaders/shaders_normal_map.c b/examples/shaders/shaders_normal_map.c index 656c8597e..3a8180fef 100644 --- a/examples/shaders/shaders_normal_map.c +++ b/examples/shaders/shaders_normal_map.c @@ -1,6 +1,6 @@ /******************************************************************************************* * - * raylib [shaders] example - normalmap + * raylib [shaders] example - normal map * * Example complexity rating: [★★★★] 4/4 * diff --git a/examples/shaders/shaders_palette_switch.c b/examples/shaders/shaders_palette_switch.c index df35db447..1384c7332 100644 --- a/examples/shaders/shaders_palette_switch.c +++ b/examples/shaders/shaders_palette_switch.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Color palette switch +* raylib [shaders] example - color palette switch * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/shaders/shaders_postprocessing.c b/examples/shaders/shaders_postprocessing.c index fade145ff..abfa92fe3 100644 --- a/examples/shaders/shaders_postprocessing.c +++ b/examples/shaders/shaders_postprocessing.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Apply a postprocessing shader to a scene +* raylib [shaders] example - postprocessing shader * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/shaders/shaders_raymarching.c b/examples/shaders/shaders_raymarching.c index cc1badb9f..744181680 100644 --- a/examples/shaders/shaders_raymarching.c +++ b/examples/shaders/shaders_raymarching.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Raymarching shapes generation +* raylib [shaders] example - raymarching shapes * * Example complexity rating: [★★★★] 4/4 * diff --git a/examples/shaders/shaders_shadowmap.c b/examples/shaders/shaders_shadowmap.c index 9c7111a8b..5e452198a 100644 --- a/examples/shaders/shaders_shadowmap.c +++ b/examples/shaders/shaders_shadowmap.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Shadowmap +* raylib [shaders] example - shadowmap * * Example complexity rating: [★★★★] 4/4 * diff --git a/examples/shaders/shaders_shapes_textures.c b/examples/shaders/shaders_shapes_textures.c index b0f7752ac..080cfabbd 100644 --- a/examples/shaders/shaders_shapes_textures.c +++ b/examples/shaders/shaders_shapes_textures.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Apply a shader to some shape or texture +* raylib [shaders] example - shapes and texture shaders * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/shaders/shaders_simple_mask.c b/examples/shaders/shaders_simple_mask.c index 2e6e83a61..df8310a9d 100644 --- a/examples/shaders/shaders_simple_mask.c +++ b/examples/shaders/shaders_simple_mask.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Simple shader mask +* raylib [shaders] example - simple shader mask * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/shaders/shaders_spotlight.c b/examples/shaders/shaders_spotlight.c index a0ee7a421..def3a6c0c 100644 --- a/examples/shaders/shaders_spotlight.c +++ b/examples/shaders/shaders_spotlight.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Simple shader mask +* raylib [shaders] example - shader spotlight * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/shaders/shaders_texture_drawing.c b/examples/shaders/shaders_texture_drawing.c index 2cfe7e64d..dc51f333a 100644 --- a/examples/shaders/shaders_texture_drawing.c +++ b/examples/shaders/shaders_texture_drawing.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Texture drawing +* raylib [shaders] example - texture drawing * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/shaders/shaders_texture_waves.c b/examples/shaders/shaders_texture_waves.c index c957635c4..22e6334cb 100644 --- a/examples/shaders/shaders_texture_waves.c +++ b/examples/shaders/shaders_texture_waves.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Texture Waves +* raylib [shaders] example - texture waves * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/shaders/shaders_vertex_displacement.c b/examples/shaders/shaders_vertex_displacement.c index 1a163f9b7..3eff34e00 100644 --- a/examples/shaders/shaders_vertex_displacement.c +++ b/examples/shaders/shaders_vertex_displacement.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - Vertex displacement +* raylib [shaders] example - vertex displacement * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/shaders/shaders_write_depth.c b/examples/shaders/shaders_write_depth.c index 7a0e01968..54e504a48 100644 --- a/examples/shaders/shaders_write_depth.c +++ b/examples/shaders/shaders_write_depth.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shaders] example - depth buffer writing +* raylib [shaders] example - write depth buffer * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/shapes/shapes_basic_shapes.c b/examples/shapes/shapes_basic_shapes.c index 0302a2ef5..d0801ab0b 100644 --- a/examples/shapes/shapes_basic_shapes.c +++ b/examples/shapes/shapes_basic_shapes.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shapes] example - Draw basic shapes 2d (rectangle, circle, line...) +* raylib [shapes] example - basic shapes drawing * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/shapes/shapes_colors_palette.c b/examples/shapes/shapes_colors_palette.c index 81d008ff0..9fbcf3063 100644 --- a/examples/shapes/shapes_colors_palette.c +++ b/examples/shapes/shapes_colors_palette.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shapes] example - Colors palette +* raylib [shapes] example - colors palette * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/shapes/shapes_digital_clock.c b/examples/shapes/shapes_digital_clock.c index 830752858..671e1ab14 100644 --- a/examples/shapes/shapes_digital_clock.c +++ b/examples/shapes/shapes_digital_clock.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shapes] example - fancy clock using basic shapes +* raylib [shapes] example - digital clock * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/shapes/shapes_double_pendulum.c b/examples/shapes/shapes_double_pendulum.c index 8cf0c5c68..b5194917f 100644 --- a/examples/shapes/shapes_double_pendulum.c +++ b/examples/shapes/shapes_double_pendulum.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shapes] example - Double Pendulum +* raylib [shapes] example - double pendulum * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/shapes/shapes_draw_circle_sector.c b/examples/shapes/shapes_draw_circle_sector.c index 1485c464e..4bc7ffa6c 100644 --- a/examples/shapes/shapes_draw_circle_sector.c +++ b/examples/shapes/shapes_draw_circle_sector.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shapes] example - draw circle sector (with gui options) +* raylib [shapes] example - draw circle sector * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/shapes/shapes_draw_rectangle_rounded.c b/examples/shapes/shapes_draw_rectangle_rounded.c index 614ed54b1..ebefe055f 100644 --- a/examples/shapes/shapes_draw_rectangle_rounded.c +++ b/examples/shapes/shapes_draw_rectangle_rounded.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shapes] example - draw rectangle rounded (with gui options) +* raylib [shapes] example - draw rectangle rounded * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/shapes/shapes_draw_ring.c b/examples/shapes/shapes_draw_ring.c index f7a18bdec..c3a13729d 100644 --- a/examples/shapes/shapes_draw_ring.c +++ b/examples/shapes/shapes_draw_ring.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shapes] example - draw ring (with gui options) +* raylib [shapes] example - draw ring * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/shapes/shapes_lines_bezier.c b/examples/shapes/shapes_lines_bezier.c index 3e8f68a7f..1e0600edf 100644 --- a/examples/shapes/shapes_lines_bezier.c +++ b/examples/shapes/shapes_lines_bezier.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shapes] example - Cubic-bezier lines +* raylib [shapes] example - cubic-bezier lines * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/shapes/shapes_logo_raylib.c b/examples/shapes/shapes_logo_raylib.c index f2974ddb4..48db5d78f 100644 --- a/examples/shapes/shapes_logo_raylib.c +++ b/examples/shapes/shapes_logo_raylib.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shapes] example - draw raylib logo using basic shapes +* raylib [shapes] example - raylib logo using shapes * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/shapes/shapes_rectangle_advanced.c b/examples/shapes/shapes_rectangle_advanced.c index a3f8adf84..4f04c2854 100644 --- a/examples/shapes/shapes_rectangle_advanced.c +++ b/examples/shapes/shapes_rectangle_advanced.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shapes] example - advanced rectangle drawing +* raylib [shapes] example - rectangle avanced * * Example complexity rating: [★★★★] 4/4 * diff --git a/examples/shapes/shapes_rectangle_scaling.c b/examples/shapes/shapes_rectangle_scaling.c index 7426e54d5..5ee03d7aa 100644 --- a/examples/shapes/shapes_rectangle_scaling.c +++ b/examples/shapes/shapes_rectangle_scaling.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [shapes] example - rectangle scaling by mouse +* raylib [shapes] example - rectangle scaling mouse * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/text/text_draw_3d.c b/examples/text/text_draw_3d.c index d87fb2b86..7d534f529 100644 --- a/examples/text/text_draw_3d.c +++ b/examples/text/text_draw_3d.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - drawing 3d text +* raylib [text] example - 3d text drawing * * Example complexity rating: [★★★★] 4/4 * diff --git a/examples/text/text_format_text.c b/examples/text/text_format_text.c index 740811b11..2eadf05c2 100644 --- a/examples/text/text_format_text.c +++ b/examples/text/text_format_text.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - text formating +* raylib [text] example - text formatting * * Example complexity rating: [★☆☆☆] 1/4 * @@ -25,7 +25,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [text] example - text formating"); + InitWindow(screenWidth, screenHeight, "raylib [text] example - text formatting"); int score = 100020; int hiscore = 200450; diff --git a/examples/text/text_unicode.c b/examples/text/text_unicode.c index fbf579772..a93803056 100644 --- a/examples/text/text_unicode.c +++ b/examples/text/text_unicode.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - unicode text drawing +* raylib [text] example - unicode emojis * * Example complexity rating: [★★★★] 4/4 * diff --git a/examples/textures/textures_draw_tiled.c b/examples/textures/textures_draw_tiled.c index fec8b4427..e3262be01 100644 --- a/examples/textures/textures_draw_tiled.c +++ b/examples/textures/textures_draw_tiled.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - texture tiled drawing +* raylib [textures] example - textures tiled drawing * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/textures/textures_image_channel.c b/examples/textures/textures_image_channel.c index b11fb5cd6..400029aa6 100644 --- a/examples/textures/textures_image_channel.c +++ b/examples/textures/textures_image_channel.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - extract image channel +* raylib [textures] example - extract channel from image * * NOTE: Images are loaded in CPU memory (RAM); textures are loaded in GPU memory (VRAM) * diff --git a/examples/textures/textures_image_drawing.c b/examples/textures/textures_image_drawing.c index cc2340d82..ea41b7baf 100644 --- a/examples/textures/textures_image_drawing.c +++ b/examples/textures/textures_image_drawing.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - image loading and drawing +* raylib [textures] example - image drawing * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/textures/textures_image_kernel.c b/examples/textures/textures_image_kernel.c index cfd05092a..99285e15e 100644 --- a/examples/textures/textures_image_kernel.c +++ b/examples/textures/textures_image_kernel.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - image kernel convolution +* raylib [textures] example - image convolution * * Example complexity rating: [★★★★] 4/4 * diff --git a/examples/textures/textures_image_loading.c b/examples/textures/textures_image_loading.c index 9ed864db5..f48aafe93 100644 --- a/examples/textures/textures_image_loading.c +++ b/examples/textures/textures_image_loading.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - image loading and texture creation +* raylib [textures] example - image loading * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/textures/textures_image_processing.c b/examples/textures/textures_image_processing.c index 8531d1dba..474974f97 100644 --- a/examples/textures/textures_image_processing.c +++ b/examples/textures/textures_image_processing.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - Image processing +* raylib [textures] example - image processing * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/textures/textures_image_text.c b/examples/textures/textures_image_text.c index 6c8720315..0c521c636 100644 --- a/examples/textures/textures_image_text.c +++ b/examples/textures/textures_image_text.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - image text drawing using TTF generated font +* raylib [textures] example - image text drawing * * Example complexity rating: [★★☆☆] 2/4 * diff --git a/examples/textures/textures_polygon.c b/examples/textures/textures_polygon.c index 414b91350..6a9e357d8 100644 --- a/examples/textures/textures_polygon.c +++ b/examples/textures/textures_polygon.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - draw textured polygon +* raylib [textures] example - textured polygon * * Example complexity rating: [★☆☆☆] 1/4 * diff --git a/examples/textures/textures_raw_data.c b/examples/textures/textures_raw_data.c index 76be8593a..922ba575f 100644 --- a/examples/textures/textures_raw_data.c +++ b/examples/textures/textures_raw_data.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - load textures from raw data +* raylib [textures] example - texture from raw data * * Example complexity rating: [★★★☆] 3/4 * diff --git a/examples/textures/textures_textured_curve.c b/examples/textures/textures_textured_curve.c index 0102e8d5c..3d2cfe470 100644 --- a/examples/textures/textures_textured_curve.c +++ b/examples/textures/textures_textured_curve.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [textures] example - draw texture along segmented curve +* raylib [textures] example - textured curve * * Example complexity rating: [★★★☆] 3/4 * From 42abcb9492f0933dc939d2c6bfb480f62f64f6d1 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 26 Aug 2025 00:36:32 +0200 Subject: [PATCH 309/328] Updated examples init window title --- examples/audio/audio_mixed_processor.c | 2 +- examples/core/core_2d_camera_platformer.c | 2 +- examples/core/core_high_dpi.c | 2 +- examples/models/models_billboard.c | 2 +- examples/models/models_cubicmap.c | 2 +- examples/models/models_gpu_skinning.c | 2 +- examples/models/models_heightmap.c | 2 +- examples/models/models_loading_m3d.c | 2 +- examples/models/models_orthographic_projection.c | 2 +- examples/models/models_skybox.c | 2 +- examples/others/raylib_opengl_interop.c | 2 +- examples/text/text_draw_3d.c | 2 +- examples/text/text_unicode.c | 4 ++-- examples/text/text_writing_anim.c | 2 +- examples/textures/textures_image_text.c | 2 +- examples/textures/textures_sprite_anim.c | 2 +- examples/textures/textures_srcrec_dstrec.c | 2 +- examples/textures/textures_textured_curve.c | 2 +- 18 files changed, 19 insertions(+), 19 deletions(-) diff --git a/examples/audio/audio_mixed_processor.c b/examples/audio/audio_mixed_processor.c index e761993ff..973c6e26b 100644 --- a/examples/audio/audio_mixed_processor.c +++ b/examples/audio/audio_mixed_processor.c @@ -55,7 +55,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [audio] example - processing mixed output"); + InitWindow(screenWidth, screenHeight, "raylib [audio] example - mixed audio processing"); InitAudioDevice(); // Initialize audio device diff --git a/examples/core/core_2d_camera_platformer.c b/examples/core/core_2d_camera_platformer.c index 41d9b993d..b7e8553a3 100644 --- a/examples/core/core_2d_camera_platformer.c +++ b/examples/core/core_2d_camera_platformer.c @@ -54,7 +54,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [core] example - 2d camera"); + InitWindow(screenWidth, screenHeight, "raylib [core] example - 2d camera platformer"); Player player = { 0 }; player.position = (Vector2){ 400, 280 }; diff --git a/examples/core/core_high_dpi.c b/examples/core/core_high_dpi.c index ccb4814d8..23ae235a5 100644 --- a/examples/core/core_high_dpi.c +++ b/examples/core/core_high_dpi.c @@ -29,7 +29,7 @@ int main(void) const int screenHeight = 450; SetConfigFlags(FLAG_WINDOW_HIGHDPI | FLAG_WINDOW_RESIZABLE); - InitWindow(screenWidth, screenHeight, "raylib [core] example - highdpi"); + InitWindow(screenWidth, screenHeight, "raylib [core] example - high dpi"); SetWindowMinSize(450, 450); int logicalGridDescY = 120; diff --git a/examples/models/models_billboard.c b/examples/models/models_billboard.c index 8dbf26cf7..40266c277 100644 --- a/examples/models/models_billboard.c +++ b/examples/models/models_billboard.c @@ -26,7 +26,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [models] example - drawing billboards"); + InitWindow(screenWidth, screenHeight, "raylib [models] example - billboard render"); // Define the camera to look into our 3d world Camera camera = { 0 }; diff --git a/examples/models/models_cubicmap.c b/examples/models/models_cubicmap.c index e44f01575..fe6c6604f 100644 --- a/examples/models/models_cubicmap.c +++ b/examples/models/models_cubicmap.c @@ -25,7 +25,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [models] example - cubesmap loading and drawing"); + InitWindow(screenWidth, screenHeight, "raylib [models] example - cubicmap loading and drawing"); // Define the camera to look into our 3d world Camera camera = { 0 }; diff --git a/examples/models/models_gpu_skinning.c b/examples/models/models_gpu_skinning.c index daf4f886a..ac989aa60 100644 --- a/examples/models/models_gpu_skinning.c +++ b/examples/models/models_gpu_skinning.c @@ -37,7 +37,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [models] example - GPU skinning"); + InitWindow(screenWidth, screenHeight, "raylib [models] example - gpu skinning"); // Define the camera to look into our 3d world Camera camera = { 0 }; diff --git a/examples/models/models_heightmap.c b/examples/models/models_heightmap.c index 94af07f0c..a11f133af 100644 --- a/examples/models/models_heightmap.c +++ b/examples/models/models_heightmap.c @@ -25,7 +25,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [models] example - heightmap loading and drawing"); + InitWindow(screenWidth, screenHeight, "raylib [models] example - heightmap terrain"); // Define our custom camera to look into our 3d world Camera camera = { 0 }; diff --git a/examples/models/models_loading_m3d.c b/examples/models/models_loading_m3d.c index 649146f9a..9851e3cbf 100644 --- a/examples/models/models_loading_m3d.c +++ b/examples/models/models_loading_m3d.c @@ -31,7 +31,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [models] example - M3D model loading"); + InitWindow(screenWidth, screenHeight, "raylib [models] example - model loading m3d"); // Define the camera to look into our 3d world Camera camera = { 0 }; diff --git a/examples/models/models_orthographic_projection.c b/examples/models/models_orthographic_projection.c index d13188fcd..d0873724d 100644 --- a/examples/models/models_orthographic_projection.c +++ b/examples/models/models_orthographic_projection.c @@ -30,7 +30,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [models] example - geometric shapes"); + InitWindow(screenWidth, screenHeight, "raylib [models] example - orthographic projection"); // Define the camera to look into our 3d world Camera camera = { { 0.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, FOVY_PERSPECTIVE, CAMERA_PERSPECTIVE }; diff --git a/examples/models/models_skybox.c b/examples/models/models_skybox.c index f721f4305..6cd0259f7 100644 --- a/examples/models/models_skybox.c +++ b/examples/models/models_skybox.c @@ -37,7 +37,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [models] example - skybox loading and drawing"); + InitWindow(screenWidth, screenHeight, "raylib [models] example - skybox rendering"); // Define the camera to look into our 3d world Camera camera = { 0 }; diff --git a/examples/others/raylib_opengl_interop.c b/examples/others/raylib_opengl_interop.c index df13ba216..7ca4c28b6 100644 --- a/examples/others/raylib_opengl_interop.c +++ b/examples/others/raylib_opengl_interop.c @@ -71,7 +71,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [shaders] example - point particles"); + InitWindow(screenWidth, screenHeight, "raylib [others] example - OpenGL interoperatibility"); Shader shader = LoadShader(TextFormat("resources/shaders/glsl%i/point_particle.vs", GLSL_VERSION), TextFormat("resources/shaders/glsl%i/point_particle.fs", GLSL_VERSION)); diff --git a/examples/text/text_draw_3d.c b/examples/text/text_draw_3d.c index 7d534f529..532596c88 100644 --- a/examples/text/text_draw_3d.c +++ b/examples/text/text_draw_3d.c @@ -87,7 +87,7 @@ int main(void) const int screenHeight = 450; SetConfigFlags(FLAG_MSAA_4X_HINT|FLAG_VSYNC_HINT); - InitWindow(screenWidth, screenHeight, "raylib [text] example - draw 2D text in 3D"); + InitWindow(screenWidth, screenHeight, "raylib [text] example - 3d text drawing"); bool spin = true; // Spin the camera? bool multicolor = false; // Multicolor mode diff --git a/examples/text/text_unicode.c b/examples/text/text_unicode.c index a93803056..0a9df7b41 100644 --- a/examples/text/text_unicode.c +++ b/examples/text/text_unicode.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [text] example - unicode emojis +* raylib [text] example - unicode emojis emojis * * Example complexity rating: [★★★★] 4/4 * @@ -163,7 +163,7 @@ int main(void) const int screenHeight = 450; SetConfigFlags(FLAG_MSAA_4X_HINT | FLAG_VSYNC_HINT); - InitWindow(screenWidth, screenHeight, "raylib [text] example - unicode"); + InitWindow(screenWidth, screenHeight, "raylib [text] example - unicode emojis"); // Load the font resources // NOTE: fontAsian is for asian languages, diff --git a/examples/text/text_writing_anim.c b/examples/text/text_writing_anim.c index 5d5b8ea7d..e52f96a03 100644 --- a/examples/text/text_writing_anim.c +++ b/examples/text/text_writing_anim.c @@ -25,7 +25,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [text] example - text writing anim"); + InitWindow(screenWidth, screenHeight, "raylib [text] example - text writing animation"); const char message[128] = "This sample illustrates a text writing\nanimation effect! Check it out! ;)"; diff --git a/examples/textures/textures_image_text.c b/examples/textures/textures_image_text.c index 0c521c636..354e15fad 100644 --- a/examples/textures/textures_image_text.c +++ b/examples/textures/textures_image_text.c @@ -25,7 +25,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [texture] example - image text drawing"); + InitWindow(screenWidth, screenHeight, "raylib [textures] example - image text drawing"); Image parrots = LoadImage("resources/parrots.png"); // Load image in CPU memory (RAM) diff --git a/examples/textures/textures_sprite_anim.c b/examples/textures/textures_sprite_anim.c index 032b1f621..a4e610d65 100644 --- a/examples/textures/textures_sprite_anim.c +++ b/examples/textures/textures_sprite_anim.c @@ -28,7 +28,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [texture] example - sprite anim"); + InitWindow(screenWidth, screenHeight, "raylib [textures] example - sprite animation"); // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) Texture2D scarfy = LoadTexture("resources/scarfy.png"); // Texture loading diff --git a/examples/textures/textures_srcrec_dstrec.c b/examples/textures/textures_srcrec_dstrec.c index 6c5ba1b36..437587a79 100644 --- a/examples/textures/textures_srcrec_dstrec.c +++ b/examples/textures/textures_srcrec_dstrec.c @@ -25,7 +25,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [textures] examples - texture source and destination rectangles"); + InitWindow(screenWidth, screenHeight, "raylib [textures] example - texture source and destination rectangles"); // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) diff --git a/examples/textures/textures_textured_curve.c b/examples/textures/textures_textured_curve.c index 3d2cfe470..245aee3c7 100644 --- a/examples/textures/textures_textured_curve.c +++ b/examples/textures/textures_textured_curve.c @@ -57,7 +57,7 @@ int main() const int screenHeight = 450; SetConfigFlags(FLAG_VSYNC_HINT | FLAG_MSAA_4X_HINT); - InitWindow(screenWidth, screenHeight, "raylib [textures] examples - textured curve"); + InitWindow(screenWidth, screenHeight, "raylib [textures] example - textured curve"); // Load the road texture texRoad = LoadTexture("resources/road.png"); From ed3b5b2649fc9573d3f3afd3e41477a999a0211a Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 26 Aug 2025 09:23:18 +0200 Subject: [PATCH 310/328] Update rexm.c --- tools/rexm/rexm.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 46c0f7d4f..6e171287a 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -7,6 +7,7 @@ * - add * - rename * - remove +* - build * - validate * - update * @@ -1261,20 +1262,25 @@ int main(int argc, char *argv[]) printf("////////////////////////////////////////////////////////////////////////////////////////////\n\n"); printf("USAGE:\n\n"); - printf(" > rexm help|create|add|rename|remove []\n"); + printf(" > rexm []\n"); - printf("\nOPTIONS:\n\n"); + printf("\COMMANDS:\n\n"); printf(" help : Provides command-line usage information\n"); printf(" create : Creates an empty example, from internal template\n"); printf(" add : Add existing example, category extracted from name\n"); printf(" Supported categories: core, shapes, textures, text, models\n"); printf(" rename : Rename an existing example\n"); - printf(" remove : Remove an existing example\n\n"); + printf(" remove : Remove an existing example\n"); + printf(" build : Build example for Desktop and Web platforms\n"); + printf(" validate : Validate examples collection, generates report\n"); + printf(" update : Validate and update examples collection, generates report\n\n"); printf("\nEXAMPLES:\n\n"); printf(" > rexm add shapes_custom_stars\n"); printf(" Add and updates new example provided \n\n"); printf(" > rexm rename core_basic_window core_cool_window\n"); printf(" Renames and updates example to \n\n"); + printf(" > rexm update\n"); + printf(" Validates all examples in collection and updates missing elements\n\n"); } break; } From d2f6c4924c36a8441d35ed944efd5c772f56d698 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 26 Aug 2025 10:17:33 +0200 Subject: [PATCH 311/328] ADDED: [rtext] `LoadTextLines()`/`UnloadTextLines()` --- src/raylib.h | 3 ++- src/rtext.c | 34 ++++++++++++++++++++++++++++++++++ tools/rexm/rexm.c | 38 -------------------------------------- 3 files changed, 36 insertions(+), 39 deletions(-) diff --git a/src/raylib.h b/src/raylib.h index c9fdab553..e58469856 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -1506,6 +1506,8 @@ RLAPI const char *CodepointToUTF8(int codepoint, int *utf8Size); // Text strings management functions (no UTF-8 strings, only byte chars) // WARNING 1: Most of these functions use internal static buffers, it's recommended to store returned data on user-side for re-use // WARNING 2: Some strings allocate memory internally for the returned strings, those strings must be free by user using MemFree() +RLAPI char **LoadTextLines(const char *text, int *count); // Load text as separate lines ('\n') +RLAPI void UnloadTextLines(char **text); // Unload text lines RLAPI int TextCopy(char *dst, const char *src); // Copy one string to another, returns bytes copied RLAPI bool TextIsEqual(const char *text1, const char *text2); // Check if two text string are equal RLAPI unsigned int TextLength(const char *text); // Get text length, checks for '\0' ending @@ -1522,7 +1524,6 @@ RLAPI char *TextToLower(const char *text); RLAPI char *TextToPascal(const char *text); // Get Pascal case notation version of provided string RLAPI char *TextToSnake(const char *text); // Get Snake case notation version of provided string RLAPI char *TextToCamel(const char *text); // Get Camel case notation version of provided string - RLAPI int TextToInteger(const char *text); // Get integer value from text RLAPI float TextToFloat(const char *text); // Get float value from text diff --git a/src/rtext.c b/src/rtext.c index 08efa79bf..f54c71aef 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -1415,6 +1415,40 @@ Rectangle GetGlyphAtlasRec(Font font, int codepoint) //---------------------------------------------------------------------------------- // Text strings management functions //---------------------------------------------------------------------------------- +// Load text as separate lines ('\n') +// WARNING: There is a limit set for number of lines and line-size +char **LoadTextLines(const char *text, int *count) +{ + #define MAX_TEXTLINES_COUNT 512 + #define MAX_TEXTLINES_LINE_LEN 512 + + char **lines = (char **)RL_CALLOC(MAX_TEXTLINES_COUNT, sizeof(char *)); + for (int i = 0; i < MAX_TEXTLINES_COUNT; i++) lines[i] = (char *)RL_CALLOC(MAX_TEXTLINES_LINE_LEN, 1); + int textSize = (int)strlen(text); + int k = 0; + + for (int i = 0, len = 0; (i < textSize) && (k < MAX_TEXTLINES_COUNT); i++) + { + if ((text[i] == '\n') || (len == (MAX_TEXTLINES_LINE_LEN - 1))) + { + strncpy(lines[k], &text[i - len], len); + len = 0; + k++; + } + else len++; + } + + *count += k; + return lines; +} + +// Unload text lines +void UnloadTextLines(char **lines) +{ + for (int i = 0; i < MAX_TEXTLINES_COUNT; i++) RL_FREE(lines[i]); + RL_FREE(lines); +} + // Get text length in bytes, check for \0 character unsigned int TextLength(const char *text) { diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 6e171287a..9ab4950c8 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -148,11 +148,6 @@ static int UpdateRequiredFiles(void); static rlExampleInfo *LoadExamplesData(const char *fileName, const char *category, bool sort, int *exCount); static void UnloadExamplesData(rlExampleInfo *exInfo); -// Get text lines (by line-breaks '\n') -// WARNING: It does not copy text data, just returns line pointers -static char **LoadTextLines(const char *text, int *count); -static void UnloadTextLines(char **text); - // Load example info from file header static rlExampleInfo *LoadExampleInfo(const char *exFileName); static void UnloadExampleInfo(rlExampleInfo *exInfo); @@ -1775,39 +1770,6 @@ static int FileMove(const char *srcPath, const char *dstPath) return result; } -// Load text lines -static char **LoadTextLines(const char *text, int *count) -{ - #define MAX_TEXT_LINES 512 - #define MAX_TEXT_LINE_LEN 512 - - char **lines = (char **)RL_CALLOC(MAX_TEXT_LINES, sizeof(char *)); - for (int i = 0; i < MAX_TEXT_LINES; i++) lines[i] = (char *)RL_CALLOC(MAX_TEXT_LINE_LEN, 1); - int textSize = (int)strlen(text); - int k = 0; - - for (int i = 0, len = 0; (i < textSize) && (k < MAX_TEXT_LINES); i++) - { - if ((text[i] == '\n') || (len == (MAX_TEXT_LINE_LEN - 1))) - { - strncpy(lines[k], &text[i - len], len); - len = 0; - k++; - } - else len++; - } - - *count += k; - return lines; -} - -// Unload text lines -static void UnloadTextLines(char **lines) -{ - for (int i = 0; i < MAX_TEXT_LINES; i++) RL_FREE(lines[i]); - RL_FREE(lines); -} - // Get example info from example file header // NOTE: Expecting the example to follow raylib_example_template.c rlExampleInfo *LoadExampleInfo(const char *exFileName) From 71037033137e692f1a39003e06f570fa2744dce3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 26 Aug 2025 08:17:48 +0000 Subject: [PATCH 312/328] Update raylib_api.* by CI --- tools/parser/output/raylib_api.json | 26 +++ tools/parser/output/raylib_api.lua | 17 ++ tools/parser/output/raylib_api.txt | 333 ++++++++++++++-------------- tools/parser/output/raylib_api.xml | 9 +- 4 files changed, 223 insertions(+), 162 deletions(-) diff --git a/tools/parser/output/raylib_api.json b/tools/parser/output/raylib_api.json index e0c732e5b..714e02907 100644 --- a/tools/parser/output/raylib_api.json +++ b/tools/parser/output/raylib_api.json @@ -9605,6 +9605,32 @@ } ] }, + { + "name": "LoadTextLines", + "description": "Load text as separate lines ('\\n')", + "returnType": "char **", + "params": [ + { + "type": "const char *", + "name": "text" + }, + { + "type": "int *", + "name": "count" + } + ] + }, + { + "name": "UnloadTextLines", + "description": "Unload text lines", + "returnType": "void", + "params": [ + { + "type": "char **", + "name": "text" + } + ] + }, { "name": "TextCopy", "description": "Copy one string to another, returns bytes copied", diff --git a/tools/parser/output/raylib_api.lua b/tools/parser/output/raylib_api.lua index e62609b33..c66bad1a7 100644 --- a/tools/parser/output/raylib_api.lua +++ b/tools/parser/output/raylib_api.lua @@ -6845,6 +6845,23 @@ return { {type = "int *", name = "utf8Size"} } }, + { + name = "LoadTextLines", + description = "Load text as separate lines ('\\n')", + returnType = "char **", + params = { + {type = "const char *", name = "text"}, + {type = "int *", name = "count"} + } + }, + { + name = "UnloadTextLines", + description = "Unload text lines", + returnType = "void", + params = { + {type = "char **", name = "text"} + } + }, { name = "TextCopy", description = "Copy one string to another, returns bytes copied", diff --git a/tools/parser/output/raylib_api.txt b/tools/parser/output/raylib_api.txt index 4bc67acd1..765c077e5 100644 --- a/tools/parser/output/raylib_api.txt +++ b/tools/parser/output/raylib_api.txt @@ -993,7 +993,7 @@ Callback 006: AudioCallback() (2 input parameters) Param[1]: bufferData (type: void *) Param[2]: frames (type: unsigned int) -Functions found: 584 +Functions found: 586 Function 001: InitWindow() (3 input parameters) Name: InitWindow @@ -3674,126 +3674,137 @@ Function 424: CodepointToUTF8() (2 input parameters) Description: Encode one codepoint into UTF-8 byte array (array length returned as parameter) Param[1]: codepoint (type: int) Param[2]: utf8Size (type: int *) -Function 425: TextCopy() (2 input parameters) +Function 425: LoadTextLines() (2 input parameters) + Name: LoadTextLines + Return type: char ** + Description: Load text as separate lines ('\n') + Param[1]: text (type: const char *) + Param[2]: count (type: int *) +Function 426: UnloadTextLines() (1 input parameters) + Name: UnloadTextLines + Return type: void + Description: Unload text lines + Param[1]: text (type: char **) +Function 427: TextCopy() (2 input parameters) Name: TextCopy Return type: int Description: Copy one string to another, returns bytes copied Param[1]: dst (type: char *) Param[2]: src (type: const char *) -Function 426: TextIsEqual() (2 input parameters) +Function 428: TextIsEqual() (2 input parameters) Name: TextIsEqual Return type: bool Description: Check if two text string are equal Param[1]: text1 (type: const char *) Param[2]: text2 (type: const char *) -Function 427: TextLength() (1 input parameters) +Function 429: TextLength() (1 input parameters) Name: TextLength Return type: unsigned int Description: Get text length, checks for '\0' ending Param[1]: text (type: const char *) -Function 428: TextFormat() (2 input parameters) +Function 430: TextFormat() (2 input parameters) Name: TextFormat Return type: const char * Description: Text formatting with variables (sprintf() style) Param[1]: text (type: const char *) Param[2]: args (type: ...) -Function 429: TextSubtext() (3 input parameters) +Function 431: TextSubtext() (3 input parameters) Name: TextSubtext Return type: const char * Description: Get a piece of a text string Param[1]: text (type: const char *) Param[2]: position (type: int) Param[3]: length (type: int) -Function 430: TextReplace() (3 input parameters) +Function 432: TextReplace() (3 input parameters) Name: TextReplace Return type: char * Description: Replace text string (WARNING: memory must be freed!) Param[1]: text (type: const char *) Param[2]: replace (type: const char *) Param[3]: by (type: const char *) -Function 431: TextInsert() (3 input parameters) +Function 433: TextInsert() (3 input parameters) Name: TextInsert Return type: char * Description: Insert text in a position (WARNING: memory must be freed!) Param[1]: text (type: const char *) Param[2]: insert (type: const char *) Param[3]: position (type: int) -Function 432: TextJoin() (3 input parameters) +Function 434: TextJoin() (3 input parameters) Name: TextJoin Return type: char * Description: Join text strings with delimiter Param[1]: textList (type: char **) Param[2]: count (type: int) Param[3]: delimiter (type: const char *) -Function 433: TextSplit() (3 input parameters) +Function 435: TextSplit() (3 input parameters) Name: TextSplit Return type: char ** Description: Split text into multiple strings, using MAX_TEXTSPLIT_COUNT static strings Param[1]: text (type: const char *) Param[2]: delimiter (type: char) Param[3]: count (type: int *) -Function 434: TextAppend() (3 input parameters) +Function 436: TextAppend() (3 input parameters) Name: TextAppend Return type: void Description: Append text at specific position and move cursor! Param[1]: text (type: char *) Param[2]: append (type: const char *) Param[3]: position (type: int *) -Function 435: TextFindIndex() (2 input parameters) +Function 437: TextFindIndex() (2 input parameters) Name: TextFindIndex Return type: int Description: Find first text occurrence within a string, -1 if not found Param[1]: text (type: const char *) Param[2]: find (type: const char *) -Function 436: TextToUpper() (1 input parameters) +Function 438: TextToUpper() (1 input parameters) Name: TextToUpper Return type: char * Description: Get upper case version of provided string Param[1]: text (type: const char *) -Function 437: TextToLower() (1 input parameters) +Function 439: TextToLower() (1 input parameters) Name: TextToLower Return type: char * Description: Get lower case version of provided string Param[1]: text (type: const char *) -Function 438: TextToPascal() (1 input parameters) +Function 440: TextToPascal() (1 input parameters) Name: TextToPascal Return type: char * Description: Get Pascal case notation version of provided string Param[1]: text (type: const char *) -Function 439: TextToSnake() (1 input parameters) +Function 441: TextToSnake() (1 input parameters) Name: TextToSnake Return type: char * Description: Get Snake case notation version of provided string Param[1]: text (type: const char *) -Function 440: TextToCamel() (1 input parameters) +Function 442: TextToCamel() (1 input parameters) Name: TextToCamel Return type: char * Description: Get Camel case notation version of provided string Param[1]: text (type: const char *) -Function 441: TextToInteger() (1 input parameters) +Function 443: TextToInteger() (1 input parameters) Name: TextToInteger Return type: int Description: Get integer value from text Param[1]: text (type: const char *) -Function 442: TextToFloat() (1 input parameters) +Function 444: TextToFloat() (1 input parameters) Name: TextToFloat Return type: float Description: Get float value from text Param[1]: text (type: const char *) -Function 443: DrawLine3D() (3 input parameters) +Function 445: DrawLine3D() (3 input parameters) Name: DrawLine3D Return type: void Description: Draw a line in 3D world space Param[1]: startPos (type: Vector3) Param[2]: endPos (type: Vector3) Param[3]: color (type: Color) -Function 444: DrawPoint3D() (2 input parameters) +Function 446: DrawPoint3D() (2 input parameters) Name: DrawPoint3D Return type: void Description: Draw a point in 3D space, actually a small line Param[1]: position (type: Vector3) Param[2]: color (type: Color) -Function 445: DrawCircle3D() (5 input parameters) +Function 447: DrawCircle3D() (5 input parameters) Name: DrawCircle3D Return type: void Description: Draw a circle in 3D world space @@ -3802,7 +3813,7 @@ Function 445: DrawCircle3D() (5 input parameters) Param[3]: rotationAxis (type: Vector3) Param[4]: rotationAngle (type: float) Param[5]: color (type: Color) -Function 446: DrawTriangle3D() (4 input parameters) +Function 448: DrawTriangle3D() (4 input parameters) Name: DrawTriangle3D Return type: void Description: Draw a color-filled triangle (vertex in counter-clockwise order!) @@ -3810,14 +3821,14 @@ Function 446: DrawTriangle3D() (4 input parameters) Param[2]: v2 (type: Vector3) Param[3]: v3 (type: Vector3) Param[4]: color (type: Color) -Function 447: DrawTriangleStrip3D() (3 input parameters) +Function 449: DrawTriangleStrip3D() (3 input parameters) Name: DrawTriangleStrip3D Return type: void Description: Draw a triangle strip defined by points Param[1]: points (type: const Vector3 *) Param[2]: pointCount (type: int) Param[3]: color (type: Color) -Function 448: DrawCube() (5 input parameters) +Function 450: DrawCube() (5 input parameters) Name: DrawCube Return type: void Description: Draw cube @@ -3826,14 +3837,14 @@ Function 448: DrawCube() (5 input parameters) Param[3]: height (type: float) Param[4]: length (type: float) Param[5]: color (type: Color) -Function 449: DrawCubeV() (3 input parameters) +Function 451: DrawCubeV() (3 input parameters) Name: DrawCubeV Return type: void Description: Draw cube (Vector version) Param[1]: position (type: Vector3) Param[2]: size (type: Vector3) Param[3]: color (type: Color) -Function 450: DrawCubeWires() (5 input parameters) +Function 452: DrawCubeWires() (5 input parameters) Name: DrawCubeWires Return type: void Description: Draw cube wires @@ -3842,21 +3853,21 @@ Function 450: DrawCubeWires() (5 input parameters) Param[3]: height (type: float) Param[4]: length (type: float) Param[5]: color (type: Color) -Function 451: DrawCubeWiresV() (3 input parameters) +Function 453: DrawCubeWiresV() (3 input parameters) Name: DrawCubeWiresV Return type: void Description: Draw cube wires (Vector version) Param[1]: position (type: Vector3) Param[2]: size (type: Vector3) Param[3]: color (type: Color) -Function 452: DrawSphere() (3 input parameters) +Function 454: DrawSphere() (3 input parameters) Name: DrawSphere Return type: void Description: Draw sphere Param[1]: centerPos (type: Vector3) Param[2]: radius (type: float) Param[3]: color (type: Color) -Function 453: DrawSphereEx() (5 input parameters) +Function 455: DrawSphereEx() (5 input parameters) Name: DrawSphereEx Return type: void Description: Draw sphere with extended parameters @@ -3865,7 +3876,7 @@ Function 453: DrawSphereEx() (5 input parameters) Param[3]: rings (type: int) Param[4]: slices (type: int) Param[5]: color (type: Color) -Function 454: DrawSphereWires() (5 input parameters) +Function 456: DrawSphereWires() (5 input parameters) Name: DrawSphereWires Return type: void Description: Draw sphere wires @@ -3874,7 +3885,7 @@ Function 454: DrawSphereWires() (5 input parameters) Param[3]: rings (type: int) Param[4]: slices (type: int) Param[5]: color (type: Color) -Function 455: DrawCylinder() (6 input parameters) +Function 457: DrawCylinder() (6 input parameters) Name: DrawCylinder Return type: void Description: Draw a cylinder/cone @@ -3884,7 +3895,7 @@ Function 455: DrawCylinder() (6 input parameters) Param[4]: height (type: float) Param[5]: slices (type: int) Param[6]: color (type: Color) -Function 456: DrawCylinderEx() (6 input parameters) +Function 458: DrawCylinderEx() (6 input parameters) Name: DrawCylinderEx Return type: void Description: Draw a cylinder with base at startPos and top at endPos @@ -3894,7 +3905,7 @@ Function 456: DrawCylinderEx() (6 input parameters) Param[4]: endRadius (type: float) Param[5]: sides (type: int) Param[6]: color (type: Color) -Function 457: DrawCylinderWires() (6 input parameters) +Function 459: DrawCylinderWires() (6 input parameters) Name: DrawCylinderWires Return type: void Description: Draw a cylinder/cone wires @@ -3904,7 +3915,7 @@ Function 457: DrawCylinderWires() (6 input parameters) Param[4]: height (type: float) Param[5]: slices (type: int) Param[6]: color (type: Color) -Function 458: DrawCylinderWiresEx() (6 input parameters) +Function 460: DrawCylinderWiresEx() (6 input parameters) Name: DrawCylinderWiresEx Return type: void Description: Draw a cylinder wires with base at startPos and top at endPos @@ -3914,7 +3925,7 @@ Function 458: DrawCylinderWiresEx() (6 input parameters) Param[4]: endRadius (type: float) Param[5]: sides (type: int) Param[6]: color (type: Color) -Function 459: DrawCapsule() (6 input parameters) +Function 461: DrawCapsule() (6 input parameters) Name: DrawCapsule Return type: void Description: Draw a capsule with the center of its sphere caps at startPos and endPos @@ -3924,7 +3935,7 @@ Function 459: DrawCapsule() (6 input parameters) Param[4]: slices (type: int) Param[5]: rings (type: int) Param[6]: color (type: Color) -Function 460: DrawCapsuleWires() (6 input parameters) +Function 462: DrawCapsuleWires() (6 input parameters) Name: DrawCapsuleWires Return type: void Description: Draw capsule wireframe with the center of its sphere caps at startPos and endPos @@ -3934,51 +3945,51 @@ Function 460: DrawCapsuleWires() (6 input parameters) Param[4]: slices (type: int) Param[5]: rings (type: int) Param[6]: color (type: Color) -Function 461: DrawPlane() (3 input parameters) +Function 463: DrawPlane() (3 input parameters) Name: DrawPlane Return type: void Description: Draw a plane XZ Param[1]: centerPos (type: Vector3) Param[2]: size (type: Vector2) Param[3]: color (type: Color) -Function 462: DrawRay() (2 input parameters) +Function 464: DrawRay() (2 input parameters) Name: DrawRay Return type: void Description: Draw a ray line Param[1]: ray (type: Ray) Param[2]: color (type: Color) -Function 463: DrawGrid() (2 input parameters) +Function 465: DrawGrid() (2 input parameters) Name: DrawGrid Return type: void Description: Draw a grid (centered at (0, 0, 0)) Param[1]: slices (type: int) Param[2]: spacing (type: float) -Function 464: LoadModel() (1 input parameters) +Function 466: LoadModel() (1 input parameters) Name: LoadModel Return type: Model Description: Load model from files (meshes and materials) Param[1]: fileName (type: const char *) -Function 465: LoadModelFromMesh() (1 input parameters) +Function 467: LoadModelFromMesh() (1 input parameters) Name: LoadModelFromMesh Return type: Model Description: Load model from generated mesh (default material) Param[1]: mesh (type: Mesh) -Function 466: IsModelValid() (1 input parameters) +Function 468: IsModelValid() (1 input parameters) Name: IsModelValid Return type: bool Description: Check if a model is valid (loaded in GPU, VAO/VBOs) Param[1]: model (type: Model) -Function 467: UnloadModel() (1 input parameters) +Function 469: UnloadModel() (1 input parameters) Name: UnloadModel Return type: void Description: Unload model (including meshes) from memory (RAM and/or VRAM) Param[1]: model (type: Model) -Function 468: GetModelBoundingBox() (1 input parameters) +Function 470: GetModelBoundingBox() (1 input parameters) Name: GetModelBoundingBox Return type: BoundingBox Description: Compute model bounding box limits (considers all meshes) Param[1]: model (type: Model) -Function 469: DrawModel() (4 input parameters) +Function 471: DrawModel() (4 input parameters) Name: DrawModel Return type: void Description: Draw a model (with texture if set) @@ -3986,7 +3997,7 @@ Function 469: DrawModel() (4 input parameters) Param[2]: position (type: Vector3) Param[3]: scale (type: float) Param[4]: tint (type: Color) -Function 470: DrawModelEx() (6 input parameters) +Function 472: DrawModelEx() (6 input parameters) Name: DrawModelEx Return type: void Description: Draw a model with extended parameters @@ -3996,7 +4007,7 @@ Function 470: DrawModelEx() (6 input parameters) Param[4]: rotationAngle (type: float) Param[5]: scale (type: Vector3) Param[6]: tint (type: Color) -Function 471: DrawModelWires() (4 input parameters) +Function 473: DrawModelWires() (4 input parameters) Name: DrawModelWires Return type: void Description: Draw a model wires (with texture if set) @@ -4004,7 +4015,7 @@ Function 471: DrawModelWires() (4 input parameters) Param[2]: position (type: Vector3) Param[3]: scale (type: float) Param[4]: tint (type: Color) -Function 472: DrawModelWiresEx() (6 input parameters) +Function 474: DrawModelWiresEx() (6 input parameters) Name: DrawModelWiresEx Return type: void Description: Draw a model wires (with texture if set) with extended parameters @@ -4014,7 +4025,7 @@ Function 472: DrawModelWiresEx() (6 input parameters) Param[4]: rotationAngle (type: float) Param[5]: scale (type: Vector3) Param[6]: tint (type: Color) -Function 473: DrawModelPoints() (4 input parameters) +Function 475: DrawModelPoints() (4 input parameters) Name: DrawModelPoints Return type: void Description: Draw a model as points @@ -4022,7 +4033,7 @@ Function 473: DrawModelPoints() (4 input parameters) Param[2]: position (type: Vector3) Param[3]: scale (type: float) Param[4]: tint (type: Color) -Function 474: DrawModelPointsEx() (6 input parameters) +Function 476: DrawModelPointsEx() (6 input parameters) Name: DrawModelPointsEx Return type: void Description: Draw a model as points with extended parameters @@ -4032,13 +4043,13 @@ Function 474: DrawModelPointsEx() (6 input parameters) Param[4]: rotationAngle (type: float) Param[5]: scale (type: Vector3) Param[6]: tint (type: Color) -Function 475: DrawBoundingBox() (2 input parameters) +Function 477: DrawBoundingBox() (2 input parameters) Name: DrawBoundingBox Return type: void Description: Draw bounding box (wires) Param[1]: box (type: BoundingBox) Param[2]: color (type: Color) -Function 476: DrawBillboard() (5 input parameters) +Function 478: DrawBillboard() (5 input parameters) Name: DrawBillboard Return type: void Description: Draw a billboard texture @@ -4047,7 +4058,7 @@ Function 476: DrawBillboard() (5 input parameters) Param[3]: position (type: Vector3) Param[4]: scale (type: float) Param[5]: tint (type: Color) -Function 477: DrawBillboardRec() (6 input parameters) +Function 479: DrawBillboardRec() (6 input parameters) Name: DrawBillboardRec Return type: void Description: Draw a billboard texture defined by source @@ -4057,7 +4068,7 @@ Function 477: DrawBillboardRec() (6 input parameters) Param[4]: position (type: Vector3) Param[5]: size (type: Vector2) Param[6]: tint (type: Color) -Function 478: DrawBillboardPro() (9 input parameters) +Function 480: DrawBillboardPro() (9 input parameters) Name: DrawBillboardPro Return type: void Description: Draw a billboard texture defined by source and rotation @@ -4070,13 +4081,13 @@ Function 478: DrawBillboardPro() (9 input parameters) Param[7]: origin (type: Vector2) Param[8]: rotation (type: float) Param[9]: tint (type: Color) -Function 479: UploadMesh() (2 input parameters) +Function 481: UploadMesh() (2 input parameters) Name: UploadMesh Return type: void Description: Upload mesh vertex data in GPU and provide VAO/VBO ids Param[1]: mesh (type: Mesh *) Param[2]: dynamic (type: bool) -Function 480: UpdateMeshBuffer() (5 input parameters) +Function 482: UpdateMeshBuffer() (5 input parameters) Name: UpdateMeshBuffer Return type: void Description: Update mesh vertex data in GPU for a specific buffer index @@ -4085,19 +4096,19 @@ Function 480: UpdateMeshBuffer() (5 input parameters) Param[3]: data (type: const void *) Param[4]: dataSize (type: int) Param[5]: offset (type: int) -Function 481: UnloadMesh() (1 input parameters) +Function 483: UnloadMesh() (1 input parameters) Name: UnloadMesh Return type: void Description: Unload mesh data from CPU and GPU Param[1]: mesh (type: Mesh) -Function 482: DrawMesh() (3 input parameters) +Function 484: DrawMesh() (3 input parameters) Name: DrawMesh Return type: void Description: Draw a 3d mesh with material and transform Param[1]: mesh (type: Mesh) Param[2]: material (type: Material) Param[3]: transform (type: Matrix) -Function 483: DrawMeshInstanced() (4 input parameters) +Function 485: DrawMeshInstanced() (4 input parameters) Name: DrawMeshInstanced Return type: void Description: Draw multiple mesh instances with material and different transforms @@ -4105,35 +4116,35 @@ Function 483: DrawMeshInstanced() (4 input parameters) Param[2]: material (type: Material) Param[3]: transforms (type: const Matrix *) Param[4]: instances (type: int) -Function 484: GetMeshBoundingBox() (1 input parameters) +Function 486: GetMeshBoundingBox() (1 input parameters) Name: GetMeshBoundingBox Return type: BoundingBox Description: Compute mesh bounding box limits Param[1]: mesh (type: Mesh) -Function 485: GenMeshTangents() (1 input parameters) +Function 487: GenMeshTangents() (1 input parameters) Name: GenMeshTangents Return type: void Description: Compute mesh tangents Param[1]: mesh (type: Mesh *) -Function 486: ExportMesh() (2 input parameters) +Function 488: ExportMesh() (2 input parameters) Name: ExportMesh Return type: bool Description: Export mesh data to file, returns true on success Param[1]: mesh (type: Mesh) Param[2]: fileName (type: const char *) -Function 487: ExportMeshAsCode() (2 input parameters) +Function 489: ExportMeshAsCode() (2 input parameters) Name: ExportMeshAsCode Return type: bool Description: Export mesh as code file (.h) defining multiple arrays of vertex attributes Param[1]: mesh (type: Mesh) Param[2]: fileName (type: const char *) -Function 488: GenMeshPoly() (2 input parameters) +Function 490: GenMeshPoly() (2 input parameters) Name: GenMeshPoly Return type: Mesh Description: Generate polygonal mesh Param[1]: sides (type: int) Param[2]: radius (type: float) -Function 489: GenMeshPlane() (4 input parameters) +Function 491: GenMeshPlane() (4 input parameters) Name: GenMeshPlane Return type: Mesh Description: Generate plane mesh (with subdivisions) @@ -4141,42 +4152,42 @@ Function 489: GenMeshPlane() (4 input parameters) Param[2]: length (type: float) Param[3]: resX (type: int) Param[4]: resZ (type: int) -Function 490: GenMeshCube() (3 input parameters) +Function 492: GenMeshCube() (3 input parameters) Name: GenMeshCube Return type: Mesh Description: Generate cuboid mesh Param[1]: width (type: float) Param[2]: height (type: float) Param[3]: length (type: float) -Function 491: GenMeshSphere() (3 input parameters) +Function 493: GenMeshSphere() (3 input parameters) Name: GenMeshSphere Return type: Mesh Description: Generate sphere mesh (standard sphere) Param[1]: radius (type: float) Param[2]: rings (type: int) Param[3]: slices (type: int) -Function 492: GenMeshHemiSphere() (3 input parameters) +Function 494: GenMeshHemiSphere() (3 input parameters) Name: GenMeshHemiSphere Return type: Mesh Description: Generate half-sphere mesh (no bottom cap) Param[1]: radius (type: float) Param[2]: rings (type: int) Param[3]: slices (type: int) -Function 493: GenMeshCylinder() (3 input parameters) +Function 495: GenMeshCylinder() (3 input parameters) Name: GenMeshCylinder Return type: Mesh Description: Generate cylinder mesh Param[1]: radius (type: float) Param[2]: height (type: float) Param[3]: slices (type: int) -Function 494: GenMeshCone() (3 input parameters) +Function 496: GenMeshCone() (3 input parameters) Name: GenMeshCone Return type: Mesh Description: Generate cone/pyramid mesh Param[1]: radius (type: float) Param[2]: height (type: float) Param[3]: slices (type: int) -Function 495: GenMeshTorus() (4 input parameters) +Function 497: GenMeshTorus() (4 input parameters) Name: GenMeshTorus Return type: Mesh Description: Generate torus mesh @@ -4184,7 +4195,7 @@ Function 495: GenMeshTorus() (4 input parameters) Param[2]: size (type: float) Param[3]: radSeg (type: int) Param[4]: sides (type: int) -Function 496: GenMeshKnot() (4 input parameters) +Function 498: GenMeshKnot() (4 input parameters) Name: GenMeshKnot Return type: Mesh Description: Generate trefoil knot mesh @@ -4192,91 +4203,91 @@ Function 496: GenMeshKnot() (4 input parameters) Param[2]: size (type: float) Param[3]: radSeg (type: int) Param[4]: sides (type: int) -Function 497: GenMeshHeightmap() (2 input parameters) +Function 499: GenMeshHeightmap() (2 input parameters) Name: GenMeshHeightmap Return type: Mesh Description: Generate heightmap mesh from image data Param[1]: heightmap (type: Image) Param[2]: size (type: Vector3) -Function 498: GenMeshCubicmap() (2 input parameters) +Function 500: GenMeshCubicmap() (2 input parameters) Name: GenMeshCubicmap Return type: Mesh Description: Generate cubes-based map mesh from image data Param[1]: cubicmap (type: Image) Param[2]: cubeSize (type: Vector3) -Function 499: LoadMaterials() (2 input parameters) +Function 501: LoadMaterials() (2 input parameters) Name: LoadMaterials Return type: Material * Description: Load materials from model file Param[1]: fileName (type: const char *) Param[2]: materialCount (type: int *) -Function 500: LoadMaterialDefault() (0 input parameters) +Function 502: LoadMaterialDefault() (0 input parameters) Name: LoadMaterialDefault Return type: Material Description: Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps) No input parameters -Function 501: IsMaterialValid() (1 input parameters) +Function 503: IsMaterialValid() (1 input parameters) Name: IsMaterialValid Return type: bool Description: Check if a material is valid (shader assigned, map textures loaded in GPU) Param[1]: material (type: Material) -Function 502: UnloadMaterial() (1 input parameters) +Function 504: UnloadMaterial() (1 input parameters) Name: UnloadMaterial Return type: void Description: Unload material from GPU memory (VRAM) Param[1]: material (type: Material) -Function 503: SetMaterialTexture() (3 input parameters) +Function 505: SetMaterialTexture() (3 input parameters) Name: SetMaterialTexture Return type: void Description: Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...) Param[1]: material (type: Material *) Param[2]: mapType (type: int) Param[3]: texture (type: Texture2D) -Function 504: SetModelMeshMaterial() (3 input parameters) +Function 506: SetModelMeshMaterial() (3 input parameters) Name: SetModelMeshMaterial Return type: void Description: Set material for a mesh Param[1]: model (type: Model *) Param[2]: meshId (type: int) Param[3]: materialId (type: int) -Function 505: LoadModelAnimations() (2 input parameters) +Function 507: LoadModelAnimations() (2 input parameters) Name: LoadModelAnimations Return type: ModelAnimation * Description: Load model animations from file Param[1]: fileName (type: const char *) Param[2]: animCount (type: int *) -Function 506: UpdateModelAnimation() (3 input parameters) +Function 508: UpdateModelAnimation() (3 input parameters) Name: UpdateModelAnimation Return type: void Description: Update model animation pose (CPU) Param[1]: model (type: Model) Param[2]: anim (type: ModelAnimation) Param[3]: frame (type: int) -Function 507: UpdateModelAnimationBones() (3 input parameters) +Function 509: UpdateModelAnimationBones() (3 input parameters) Name: UpdateModelAnimationBones Return type: void Description: Update model animation mesh bone matrices (GPU skinning) Param[1]: model (type: Model) Param[2]: anim (type: ModelAnimation) Param[3]: frame (type: int) -Function 508: UnloadModelAnimation() (1 input parameters) +Function 510: UnloadModelAnimation() (1 input parameters) Name: UnloadModelAnimation Return type: void Description: Unload animation data Param[1]: anim (type: ModelAnimation) -Function 509: UnloadModelAnimations() (2 input parameters) +Function 511: UnloadModelAnimations() (2 input parameters) Name: UnloadModelAnimations Return type: void Description: Unload animation array data Param[1]: animations (type: ModelAnimation *) Param[2]: animCount (type: int) -Function 510: IsModelAnimationValid() (2 input parameters) +Function 512: IsModelAnimationValid() (2 input parameters) Name: IsModelAnimationValid Return type: bool Description: Check model animation skeleton match Param[1]: model (type: Model) Param[2]: anim (type: ModelAnimation) -Function 511: CheckCollisionSpheres() (4 input parameters) +Function 513: CheckCollisionSpheres() (4 input parameters) Name: CheckCollisionSpheres Return type: bool Description: Check collision between two spheres @@ -4284,40 +4295,40 @@ Function 511: CheckCollisionSpheres() (4 input parameters) Param[2]: radius1 (type: float) Param[3]: center2 (type: Vector3) Param[4]: radius2 (type: float) -Function 512: CheckCollisionBoxes() (2 input parameters) +Function 514: CheckCollisionBoxes() (2 input parameters) Name: CheckCollisionBoxes Return type: bool Description: Check collision between two bounding boxes Param[1]: box1 (type: BoundingBox) Param[2]: box2 (type: BoundingBox) -Function 513: CheckCollisionBoxSphere() (3 input parameters) +Function 515: CheckCollisionBoxSphere() (3 input parameters) Name: CheckCollisionBoxSphere Return type: bool Description: Check collision between box and sphere Param[1]: box (type: BoundingBox) Param[2]: center (type: Vector3) Param[3]: radius (type: float) -Function 514: GetRayCollisionSphere() (3 input parameters) +Function 516: GetRayCollisionSphere() (3 input parameters) Name: GetRayCollisionSphere Return type: RayCollision Description: Get collision info between ray and sphere Param[1]: ray (type: Ray) Param[2]: center (type: Vector3) Param[3]: radius (type: float) -Function 515: GetRayCollisionBox() (2 input parameters) +Function 517: GetRayCollisionBox() (2 input parameters) Name: GetRayCollisionBox Return type: RayCollision Description: Get collision info between ray and box Param[1]: ray (type: Ray) Param[2]: box (type: BoundingBox) -Function 516: GetRayCollisionMesh() (3 input parameters) +Function 518: GetRayCollisionMesh() (3 input parameters) Name: GetRayCollisionMesh Return type: RayCollision Description: Get collision info between ray and mesh Param[1]: ray (type: Ray) Param[2]: mesh (type: Mesh) Param[3]: transform (type: Matrix) -Function 517: GetRayCollisionTriangle() (4 input parameters) +Function 519: GetRayCollisionTriangle() (4 input parameters) Name: GetRayCollisionTriangle Return type: RayCollision Description: Get collision info between ray and triangle @@ -4325,7 +4336,7 @@ Function 517: GetRayCollisionTriangle() (4 input parameters) Param[2]: p1 (type: Vector3) Param[3]: p2 (type: Vector3) Param[4]: p3 (type: Vector3) -Function 518: GetRayCollisionQuad() (5 input parameters) +Function 520: GetRayCollisionQuad() (5 input parameters) Name: GetRayCollisionQuad Return type: RayCollision Description: Get collision info between ray and quad @@ -4334,158 +4345,158 @@ Function 518: GetRayCollisionQuad() (5 input parameters) Param[3]: p2 (type: Vector3) Param[4]: p3 (type: Vector3) Param[5]: p4 (type: Vector3) -Function 519: InitAudioDevice() (0 input parameters) +Function 521: InitAudioDevice() (0 input parameters) Name: InitAudioDevice Return type: void Description: Initialize audio device and context No input parameters -Function 520: CloseAudioDevice() (0 input parameters) +Function 522: CloseAudioDevice() (0 input parameters) Name: CloseAudioDevice Return type: void Description: Close the audio device and context No input parameters -Function 521: IsAudioDeviceReady() (0 input parameters) +Function 523: IsAudioDeviceReady() (0 input parameters) Name: IsAudioDeviceReady Return type: bool Description: Check if audio device has been initialized successfully No input parameters -Function 522: SetMasterVolume() (1 input parameters) +Function 524: SetMasterVolume() (1 input parameters) Name: SetMasterVolume Return type: void Description: Set master volume (listener) Param[1]: volume (type: float) -Function 523: GetMasterVolume() (0 input parameters) +Function 525: GetMasterVolume() (0 input parameters) Name: GetMasterVolume Return type: float Description: Get master volume (listener) No input parameters -Function 524: LoadWave() (1 input parameters) +Function 526: LoadWave() (1 input parameters) Name: LoadWave Return type: Wave Description: Load wave data from file Param[1]: fileName (type: const char *) -Function 525: LoadWaveFromMemory() (3 input parameters) +Function 527: LoadWaveFromMemory() (3 input parameters) Name: LoadWaveFromMemory Return type: Wave Description: Load wave from memory buffer, fileType refers to extension: i.e. '.wav' Param[1]: fileType (type: const char *) Param[2]: fileData (type: const unsigned char *) Param[3]: dataSize (type: int) -Function 526: IsWaveValid() (1 input parameters) +Function 528: IsWaveValid() (1 input parameters) Name: IsWaveValid Return type: bool Description: Checks if wave data is valid (data loaded and parameters) Param[1]: wave (type: Wave) -Function 527: LoadSound() (1 input parameters) +Function 529: LoadSound() (1 input parameters) Name: LoadSound Return type: Sound Description: Load sound from file Param[1]: fileName (type: const char *) -Function 528: LoadSoundFromWave() (1 input parameters) +Function 530: LoadSoundFromWave() (1 input parameters) Name: LoadSoundFromWave Return type: Sound Description: Load sound from wave data Param[1]: wave (type: Wave) -Function 529: LoadSoundAlias() (1 input parameters) +Function 531: LoadSoundAlias() (1 input parameters) Name: LoadSoundAlias Return type: Sound Description: Create a new sound that shares the same sample data as the source sound, does not own the sound data Param[1]: source (type: Sound) -Function 530: IsSoundValid() (1 input parameters) +Function 532: IsSoundValid() (1 input parameters) Name: IsSoundValid Return type: bool Description: Checks if a sound is valid (data loaded and buffers initialized) Param[1]: sound (type: Sound) -Function 531: UpdateSound() (3 input parameters) +Function 533: UpdateSound() (3 input parameters) Name: UpdateSound Return type: void Description: Update sound buffer with new data (data and frame count should fit in sound) Param[1]: sound (type: Sound) Param[2]: data (type: const void *) Param[3]: sampleCount (type: int) -Function 532: UnloadWave() (1 input parameters) +Function 534: UnloadWave() (1 input parameters) Name: UnloadWave Return type: void Description: Unload wave data Param[1]: wave (type: Wave) -Function 533: UnloadSound() (1 input parameters) +Function 535: UnloadSound() (1 input parameters) Name: UnloadSound Return type: void Description: Unload sound Param[1]: sound (type: Sound) -Function 534: UnloadSoundAlias() (1 input parameters) +Function 536: UnloadSoundAlias() (1 input parameters) Name: UnloadSoundAlias Return type: void Description: Unload a sound alias (does not deallocate sample data) Param[1]: alias (type: Sound) -Function 535: ExportWave() (2 input parameters) +Function 537: ExportWave() (2 input parameters) Name: ExportWave Return type: bool Description: Export wave data to file, returns true on success Param[1]: wave (type: Wave) Param[2]: fileName (type: const char *) -Function 536: ExportWaveAsCode() (2 input parameters) +Function 538: ExportWaveAsCode() (2 input parameters) Name: ExportWaveAsCode Return type: bool Description: Export wave sample data to code (.h), returns true on success Param[1]: wave (type: Wave) Param[2]: fileName (type: const char *) -Function 537: PlaySound() (1 input parameters) +Function 539: PlaySound() (1 input parameters) Name: PlaySound Return type: void Description: Play a sound Param[1]: sound (type: Sound) -Function 538: StopSound() (1 input parameters) +Function 540: StopSound() (1 input parameters) Name: StopSound Return type: void Description: Stop playing a sound Param[1]: sound (type: Sound) -Function 539: PauseSound() (1 input parameters) +Function 541: PauseSound() (1 input parameters) Name: PauseSound Return type: void Description: Pause a sound Param[1]: sound (type: Sound) -Function 540: ResumeSound() (1 input parameters) +Function 542: ResumeSound() (1 input parameters) Name: ResumeSound Return type: void Description: Resume a paused sound Param[1]: sound (type: Sound) -Function 541: IsSoundPlaying() (1 input parameters) +Function 543: IsSoundPlaying() (1 input parameters) Name: IsSoundPlaying Return type: bool Description: Check if a sound is currently playing Param[1]: sound (type: Sound) -Function 542: SetSoundVolume() (2 input parameters) +Function 544: SetSoundVolume() (2 input parameters) Name: SetSoundVolume Return type: void Description: Set volume for a sound (1.0 is max level) Param[1]: sound (type: Sound) Param[2]: volume (type: float) -Function 543: SetSoundPitch() (2 input parameters) +Function 545: SetSoundPitch() (2 input parameters) Name: SetSoundPitch Return type: void Description: Set pitch for a sound (1.0 is base level) Param[1]: sound (type: Sound) Param[2]: pitch (type: float) -Function 544: SetSoundPan() (2 input parameters) +Function 546: SetSoundPan() (2 input parameters) Name: SetSoundPan Return type: void Description: Set pan for a sound (0.5 is center) Param[1]: sound (type: Sound) Param[2]: pan (type: float) -Function 545: WaveCopy() (1 input parameters) +Function 547: WaveCopy() (1 input parameters) Name: WaveCopy Return type: Wave Description: Copy a wave to a new wave Param[1]: wave (type: Wave) -Function 546: WaveCrop() (3 input parameters) +Function 548: WaveCrop() (3 input parameters) Name: WaveCrop Return type: void Description: Crop a wave to defined frames range Param[1]: wave (type: Wave *) Param[2]: initFrame (type: int) Param[3]: finalFrame (type: int) -Function 547: WaveFormat() (4 input parameters) +Function 549: WaveFormat() (4 input parameters) Name: WaveFormat Return type: void Description: Convert wave data to desired format @@ -4493,203 +4504,203 @@ Function 547: WaveFormat() (4 input parameters) Param[2]: sampleRate (type: int) Param[3]: sampleSize (type: int) Param[4]: channels (type: int) -Function 548: LoadWaveSamples() (1 input parameters) +Function 550: LoadWaveSamples() (1 input parameters) Name: LoadWaveSamples Return type: float * Description: Load samples data from wave as a 32bit float data array Param[1]: wave (type: Wave) -Function 549: UnloadWaveSamples() (1 input parameters) +Function 551: UnloadWaveSamples() (1 input parameters) Name: UnloadWaveSamples Return type: void Description: Unload samples data loaded with LoadWaveSamples() Param[1]: samples (type: float *) -Function 550: LoadMusicStream() (1 input parameters) +Function 552: LoadMusicStream() (1 input parameters) Name: LoadMusicStream Return type: Music Description: Load music stream from file Param[1]: fileName (type: const char *) -Function 551: LoadMusicStreamFromMemory() (3 input parameters) +Function 553: LoadMusicStreamFromMemory() (3 input parameters) Name: LoadMusicStreamFromMemory Return type: Music Description: Load music stream from data Param[1]: fileType (type: const char *) Param[2]: data (type: const unsigned char *) Param[3]: dataSize (type: int) -Function 552: IsMusicValid() (1 input parameters) +Function 554: IsMusicValid() (1 input parameters) Name: IsMusicValid Return type: bool Description: Checks if a music stream is valid (context and buffers initialized) Param[1]: music (type: Music) -Function 553: UnloadMusicStream() (1 input parameters) +Function 555: UnloadMusicStream() (1 input parameters) Name: UnloadMusicStream Return type: void Description: Unload music stream Param[1]: music (type: Music) -Function 554: PlayMusicStream() (1 input parameters) +Function 556: PlayMusicStream() (1 input parameters) Name: PlayMusicStream Return type: void Description: Start music playing Param[1]: music (type: Music) -Function 555: IsMusicStreamPlaying() (1 input parameters) +Function 557: IsMusicStreamPlaying() (1 input parameters) Name: IsMusicStreamPlaying Return type: bool Description: Check if music is playing Param[1]: music (type: Music) -Function 556: UpdateMusicStream() (1 input parameters) +Function 558: UpdateMusicStream() (1 input parameters) Name: UpdateMusicStream Return type: void Description: Updates buffers for music streaming Param[1]: music (type: Music) -Function 557: StopMusicStream() (1 input parameters) +Function 559: StopMusicStream() (1 input parameters) Name: StopMusicStream Return type: void Description: Stop music playing Param[1]: music (type: Music) -Function 558: PauseMusicStream() (1 input parameters) +Function 560: PauseMusicStream() (1 input parameters) Name: PauseMusicStream Return type: void Description: Pause music playing Param[1]: music (type: Music) -Function 559: ResumeMusicStream() (1 input parameters) +Function 561: ResumeMusicStream() (1 input parameters) Name: ResumeMusicStream Return type: void Description: Resume playing paused music Param[1]: music (type: Music) -Function 560: SeekMusicStream() (2 input parameters) +Function 562: SeekMusicStream() (2 input parameters) Name: SeekMusicStream Return type: void Description: Seek music to a position (in seconds) Param[1]: music (type: Music) Param[2]: position (type: float) -Function 561: SetMusicVolume() (2 input parameters) +Function 563: SetMusicVolume() (2 input parameters) Name: SetMusicVolume Return type: void Description: Set volume for music (1.0 is max level) Param[1]: music (type: Music) Param[2]: volume (type: float) -Function 562: SetMusicPitch() (2 input parameters) +Function 564: SetMusicPitch() (2 input parameters) Name: SetMusicPitch Return type: void Description: Set pitch for a music (1.0 is base level) Param[1]: music (type: Music) Param[2]: pitch (type: float) -Function 563: SetMusicPan() (2 input parameters) +Function 565: SetMusicPan() (2 input parameters) Name: SetMusicPan Return type: void Description: Set pan for a music (0.5 is center) Param[1]: music (type: Music) Param[2]: pan (type: float) -Function 564: GetMusicTimeLength() (1 input parameters) +Function 566: GetMusicTimeLength() (1 input parameters) Name: GetMusicTimeLength Return type: float Description: Get music time length (in seconds) Param[1]: music (type: Music) -Function 565: GetMusicTimePlayed() (1 input parameters) +Function 567: GetMusicTimePlayed() (1 input parameters) Name: GetMusicTimePlayed Return type: float Description: Get current music time played (in seconds) Param[1]: music (type: Music) -Function 566: LoadAudioStream() (3 input parameters) +Function 568: LoadAudioStream() (3 input parameters) Name: LoadAudioStream Return type: AudioStream Description: Load audio stream (to stream raw audio pcm data) Param[1]: sampleRate (type: unsigned int) Param[2]: sampleSize (type: unsigned int) Param[3]: channels (type: unsigned int) -Function 567: IsAudioStreamValid() (1 input parameters) +Function 569: IsAudioStreamValid() (1 input parameters) Name: IsAudioStreamValid Return type: bool Description: Checks if an audio stream is valid (buffers initialized) Param[1]: stream (type: AudioStream) -Function 568: UnloadAudioStream() (1 input parameters) +Function 570: UnloadAudioStream() (1 input parameters) Name: UnloadAudioStream Return type: void Description: Unload audio stream and free memory Param[1]: stream (type: AudioStream) -Function 569: UpdateAudioStream() (3 input parameters) +Function 571: UpdateAudioStream() (3 input parameters) Name: UpdateAudioStream Return type: void Description: Update audio stream buffers with data Param[1]: stream (type: AudioStream) Param[2]: data (type: const void *) Param[3]: frameCount (type: int) -Function 570: IsAudioStreamProcessed() (1 input parameters) +Function 572: IsAudioStreamProcessed() (1 input parameters) Name: IsAudioStreamProcessed Return type: bool Description: Check if any audio stream buffers requires refill Param[1]: stream (type: AudioStream) -Function 571: PlayAudioStream() (1 input parameters) +Function 573: PlayAudioStream() (1 input parameters) Name: PlayAudioStream Return type: void Description: Play audio stream Param[1]: stream (type: AudioStream) -Function 572: PauseAudioStream() (1 input parameters) +Function 574: PauseAudioStream() (1 input parameters) Name: PauseAudioStream Return type: void Description: Pause audio stream Param[1]: stream (type: AudioStream) -Function 573: ResumeAudioStream() (1 input parameters) +Function 575: ResumeAudioStream() (1 input parameters) Name: ResumeAudioStream Return type: void Description: Resume audio stream Param[1]: stream (type: AudioStream) -Function 574: IsAudioStreamPlaying() (1 input parameters) +Function 576: IsAudioStreamPlaying() (1 input parameters) Name: IsAudioStreamPlaying Return type: bool Description: Check if audio stream is playing Param[1]: stream (type: AudioStream) -Function 575: StopAudioStream() (1 input parameters) +Function 577: StopAudioStream() (1 input parameters) Name: StopAudioStream Return type: void Description: Stop audio stream Param[1]: stream (type: AudioStream) -Function 576: SetAudioStreamVolume() (2 input parameters) +Function 578: SetAudioStreamVolume() (2 input parameters) Name: SetAudioStreamVolume Return type: void Description: Set volume for audio stream (1.0 is max level) Param[1]: stream (type: AudioStream) Param[2]: volume (type: float) -Function 577: SetAudioStreamPitch() (2 input parameters) +Function 579: SetAudioStreamPitch() (2 input parameters) Name: SetAudioStreamPitch Return type: void Description: Set pitch for audio stream (1.0 is base level) Param[1]: stream (type: AudioStream) Param[2]: pitch (type: float) -Function 578: SetAudioStreamPan() (2 input parameters) +Function 580: SetAudioStreamPan() (2 input parameters) Name: SetAudioStreamPan Return type: void Description: Set pan for audio stream (0.5 is centered) Param[1]: stream (type: AudioStream) Param[2]: pan (type: float) -Function 579: SetAudioStreamBufferSizeDefault() (1 input parameters) +Function 581: SetAudioStreamBufferSizeDefault() (1 input parameters) Name: SetAudioStreamBufferSizeDefault Return type: void Description: Default size for new audio streams Param[1]: size (type: int) -Function 580: SetAudioStreamCallback() (2 input parameters) +Function 582: SetAudioStreamCallback() (2 input parameters) Name: SetAudioStreamCallback Return type: void Description: Audio thread callback to request new data Param[1]: stream (type: AudioStream) Param[2]: callback (type: AudioCallback) -Function 581: AttachAudioStreamProcessor() (2 input parameters) +Function 583: AttachAudioStreamProcessor() (2 input parameters) Name: AttachAudioStreamProcessor Return type: void Description: Attach audio stream processor to stream, receives frames x 2 samples as 'float' (stereo) Param[1]: stream (type: AudioStream) Param[2]: processor (type: AudioCallback) -Function 582: DetachAudioStreamProcessor() (2 input parameters) +Function 584: DetachAudioStreamProcessor() (2 input parameters) Name: DetachAudioStreamProcessor Return type: void Description: Detach audio stream processor from stream Param[1]: stream (type: AudioStream) Param[2]: processor (type: AudioCallback) -Function 583: AttachAudioMixedProcessor() (1 input parameters) +Function 585: AttachAudioMixedProcessor() (1 input parameters) Name: AttachAudioMixedProcessor Return type: void Description: Attach audio stream processor to the entire audio pipeline, receives frames x 2 samples as 'float' (stereo) Param[1]: processor (type: AudioCallback) -Function 584: DetachAudioMixedProcessor() (1 input parameters) +Function 586: DetachAudioMixedProcessor() (1 input parameters) Name: DetachAudioMixedProcessor Return type: void Description: Detach audio stream processor from the entire audio pipeline diff --git a/tools/parser/output/raylib_api.xml b/tools/parser/output/raylib_api.xml index f6fd1e2a1..fb409158f 100644 --- a/tools/parser/output/raylib_api.xml +++ b/tools/parser/output/raylib_api.xml @@ -679,7 +679,7 @@ - + @@ -2435,6 +2435,13 @@ + + + + + + + From 4a4997c615949e4be2d81e037a9b540a83f13feb Mon Sep 17 00:00:00 2001 From: JohnnyCena123 Date: Thu, 28 Aug 2025 22:28:56 +0200 Subject: [PATCH 313/328] fix unnecessary warnings in some files (#5152) --- examples/core/core_random_sequence.c | 3 +-- examples/models/models_mesh_picking.c | 3 ++- examples/models/models_point_rendering.c | 6 +++--- src/rlgl.h | 1 + 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/examples/core/core_random_sequence.c b/examples/core/core_random_sequence.c index b92eaba88..be63e2f9b 100644 --- a/examples/core/core_random_sequence.c +++ b/examples/core/core_random_sequence.c @@ -175,7 +175,6 @@ static void DrawTextCenterKeyHelp(const char *key, const char *text, int posX, i int spaceSize = MeasureText(" ", fontSize); int pressSize = MeasureText("Press", fontSize); int keySize = MeasureText(key, fontSize); - int textSize = MeasureText(text, fontSize); int textSizeCurrent = 0; DrawText("Press", posX, posY, fontSize, color); @@ -184,4 +183,4 @@ static void DrawTextCenterKeyHelp(const char *key, const char *text, int posX, i DrawRectangle(posX + textSizeCurrent, posY + fontSize, keySize, 3, RED); textSizeCurrent += keySize + 2*spaceSize; DrawText(text, posX + textSizeCurrent, posY, fontSize, color); -} \ No newline at end of file +} diff --git a/examples/models/models_mesh_picking.c b/examples/models/models_mesh_picking.c index 628f3de3a..44f976a63 100644 --- a/examples/models/models_mesh_picking.c +++ b/examples/models/models_mesh_picking.c @@ -18,6 +18,7 @@ #include "raylib.h" #include "raymath.h" +#undef FLT_MAX #define FLT_MAX 340282346638528859811704183484516925440.0f // Maximum value of a float, from bit pattern 01111111011111111111111111111111 //------------------------------------------------------------------------------------ @@ -245,4 +246,4 @@ int main(void) //-------------------------------------------------------------------------------------- return 0; -} \ No newline at end of file +} diff --git a/examples/models/models_point_rendering.c b/examples/models/models_point_rendering.c index 4a42a83fb..5408002f5 100644 --- a/examples/models/models_point_rendering.c +++ b/examples/models/models_point_rendering.c @@ -161,9 +161,9 @@ static Mesh GenMeshPoints(int numPoints) // https://en.wikipedia.org/wiki/Spherical_coordinate_system for (int i = 0; i < numPoints; i++) { - float theta = ((float)PI*rand())/RAND_MAX; - float phi = (2.0f*PI*rand())/RAND_MAX; - float r = (10.0f*rand())/RAND_MAX; + float theta = ((float)PI*rand())/((float)RAND_MAX); + float phi = (2.0f*PI*rand())/((float)RAND_MAX); + float r = (10.0f*rand())/((float)RAND_MAX); mesh.vertices[i*3 + 0] = r*sinf(theta)*cosf(phi); mesh.vertices[i*3 + 1] = r*sinf(theta)*sinf(phi); diff --git a/src/rlgl.h b/src/rlgl.h index 17c854f10..324d8aac5 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -3243,6 +3243,7 @@ unsigned int rlLoadTexture(const void *data, int width, int height, int format, int mipWidth = width; int mipHeight = height; int mipOffset = 0; // Mipmap data offset, only used for tracelog + (void)mipOffset; // Used to avoid gcc warnings about unused variable // NOTE: Added pointer math separately from function to avoid UBSAN complaining unsigned char *dataPtr = NULL; From 481daf24232c6dc6acb81d655710ca3ec90d8fcf Mon Sep 17 00:00:00 2001 From: JohnnyCena123 Date: Thu, 28 Aug 2025 22:30:25 +0200 Subject: [PATCH 314/328] remove extra backslash in fix_win32_compatibility.h (#5148) --- src/external/fix_win32_compatibility.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/external/fix_win32_compatibility.h b/src/external/fix_win32_compatibility.h index fb0f606fb..e10376696 100644 --- a/src/external/fix_win32_compatibility.h +++ b/src/external/fix_win32_compatibility.h @@ -42,7 +42,7 @@ #define DrawTextW DrawTextWin32 #define DrawTextExA DrawTextExAWin32 #define DrawTextExW DrawTextExWin32 -#define PlaySoundA PlaySoundAWin32\ +#define PlaySoundA PlaySoundAWin32 // include windows #define WIN32_LEAN_AND_MEAN #include From 03617e0bdd5464ca3e1afb95d1c87bc252f3d279 Mon Sep 17 00:00:00 2001 From: "Artem V. Ageev" Date: Thu, 28 Aug 2025 23:31:39 +0300 Subject: [PATCH 315/328] Add raylib-ada to BINDINGS.md (#5150) --- BINDINGS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/BINDINGS.md b/BINDINGS.md index 9d0fd5c5c..7770f41c2 100644 --- a/BINDINGS.md +++ b/BINDINGS.md @@ -7,6 +7,7 @@ Some people ported raylib to other languages in the form of bindings or wrappers | Name | raylib Version | Language | License | | :--------------------------------------------------------------------------------------- | :--------------: | :------------------------------------------------------------------: | :------------------: | | [raylib](https://github.com/raysan5/raylib) | **5.5** | [C/C++](https://en.wikipedia.org/wiki/C_(programming_language)) | Zlib | +| [raylib-ada](https://github.com/Fabien-Chouteau/raylib-ada) | **5.5** | [Ada](https://en.wikipedia.org/wiki/Ada_(programming_language)) | MIT | | [raylib-beef](https://github.com/Starpelly/raylib-beef) | **5.5** | [Beef](https://www.beeflang.org) | MIT | | [raybit](https://github.com/Alex-Velez/raybit) | **5.0** | [Brainfuck](https://en.wikipedia.org/wiki/Brainfuck) | MIT | | [raylib-c3](https://github.com/c3lang/vendor/tree/main/libraries/raylib55.c3l) | **5.5** | [C3](https://c3-lang.org) | MIT | From 507c85900f0f3998b6c2fc659709dfb96ca05d5c Mon Sep 17 00:00:00 2001 From: Hamza RAHAL <77698738+hmz-rhl@users.noreply.github.com> Date: Thu, 28 Aug 2025 22:32:41 +0200 Subject: [PATCH 316/328] fix: [digital_clock] minute hand doesn't appear (#5151) --- examples/shapes/shapes_digital_clock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/shapes/shapes_digital_clock.c b/examples/shapes/shapes_digital_clock.c index 671e1ab14..b3dfa6f54 100644 --- a/examples/shapes/shapes_digital_clock.c +++ b/examples/shapes/shapes_digital_clock.c @@ -164,7 +164,7 @@ static void DrawClock(Clock clock, Vector2 centerPosition) DrawText(TextFormat("%i", clock.second.value), centerPosition.x + (clock.second.length - 10)*cosf(clock.second.angle*(float)(PI/180)) - DIGIT_SIZE/2, centerPosition.y + clock.second.length*sinf(clock.second.angle*(float)(PI/180)) - DIGIT_SIZE/2, DIGIT_SIZE, GRAY); - DrawText(TextFormat("%i", clock.minute.value), clock.minute.origin.x + clock.minute.length*cosf(clock.minute.angle*(float)(PI/180)) - DIGIT_SIZE/2, centerPosition.y + clock.minute.length*sinf(clock.minute.angle*(float)(PI/180)) - DIGIT_SIZE/2, DIGIT_SIZE, RED); + DrawText(TextFormat("%i", clock.minute.value), centerPosition.x + clock.minute.length*cosf(clock.minute.angle*(float)(PI/180)) - DIGIT_SIZE/2, centerPosition.y + clock.minute.length*sinf(clock.minute.angle*(float)(PI/180)) - DIGIT_SIZE/2, DIGIT_SIZE, RED); DrawText(TextFormat("%i", clock.hour.value), centerPosition.x + clock.hour.length*cosf(clock.hour.angle*(float)(PI/180)) - DIGIT_SIZE/2, centerPosition.y + clock.hour.length*sinf(clock.hour.angle*(float)(PI/180)) - DIGIT_SIZE/2, DIGIT_SIZE, GOLD); } From 0e73e0ea640d969762bc961106df9538817595e4 Mon Sep 17 00:00:00 2001 From: JohnnyCena123 Date: Fri, 29 Aug 2025 15:53:16 +0300 Subject: [PATCH 317/328] reviewed ALL non-external files to follow raylib's convention of no spaces around / or * (#5153) --- examples/audio/audio_mixed_processor.c | 12 +++---- examples/audio/audio_raw_stream.c | 4 +-- examples/audio/audio_stream_effects.c | 8 ++--- examples/core/core_2d_camera_platformer.c | 2 +- examples/core/core_3d_camera_first_person.c | 4 +-- examples/core/core_3d_camera_fps.c | 2 +- examples/core/core_3d_camera_split_screen.c | 2 +- examples/core/core_3d_picking.c | 2 +- examples/core/core_high_dpi.c | 2 +- examples/core/core_window_flags.c | 2 +- examples/core/core_world_screen.c | 4 +-- examples/models/models_loading_vox.c | 14 ++++---- examples/models/models_tesseract_view.c | 8 ++--- .../shaders/glsl100/voxel_lighting.fs | 6 ++-- .../shaders/glsl100/voxel_lighting.vs | 6 ++-- .../shaders/glsl120/voxel_lighting.fs | 6 ++-- .../shaders/glsl120/voxel_lighting.vs | 6 ++-- examples/others/rlgl_standalone.c | 2 +- examples/shaders/shaders_normal_map.c | 36 +++++++++---------- examples/shaders/shaders_shadowmap.c | 8 ++--- examples/shaders/shaders_spotlight.c | 8 ++--- examples/shapes/shapes_digital_clock.c | 2 +- examples/shapes/shapes_double_pendulum.c | 28 +++++++-------- examples/shapes/shapes_draw_circle_sector.c | 4 +-- examples/shapes/shapes_rectangle_advanced.c | 4 +-- examples/shapes/shapes_top_down_lights.c | 6 ++-- examples/text/text_unicode.c | 2 +- examples/textures/textures_blend_modes.c | 8 ++--- examples/textures/textures_image_channel.c | 8 ++--- projects/4coder/main.c | 6 ++-- src/external/rl_gputex.h | 14 ++++---- src/platforms/rcore_desktop_rgfw.c | 12 +++---- src/platforms/rcore_desktop_sdl.c | 4 +-- src/rmodels.c | 2 +- 34 files changed, 122 insertions(+), 122 deletions(-) diff --git a/examples/audio/audio_mixed_processor.c b/examples/audio/audio_mixed_processor.c index 973c6e26b..be6a3c8f9 100644 --- a/examples/audio/audio_mixed_processor.c +++ b/examples/audio/audio_mixed_processor.c @@ -30,13 +30,13 @@ void ProcessAudio(void *buffer, unsigned int frames) for (unsigned int frame = 0; frame < frames; frame++) { - float *left = &samples[frame * 2 + 0], *right = &samples[frame * 2 + 1]; + float *left = &samples[frame*2 + 0], *right = &samples[frame*2 + 1]; - *left = powf(fabsf(*left), exponent) * ( (*left < 0.0f)? -1.0f : 1.0f ); - *right = powf(fabsf(*right), exponent) * ( (*right < 0.0f)? -1.0f : 1.0f ); + *left = powf(fabsf(*left), exponent)*( (*left < 0.0f)? -1.0f : 1.0f ); + *right = powf(fabsf(*right), exponent)*( (*right < 0.0f)? -1.0f : 1.0f ); - average += fabsf(*left) / frames; // accumulating average volume - average += fabsf(*right) / frames; + average += fabsf(*left)/frames; // accumulating average volume + average += fabsf(*right)/frames; } // Moving history to the left @@ -99,7 +99,7 @@ int main(void) DrawRectangle(199, 199, 402, 34, LIGHTGRAY); for (int i = 0; i < 400; i++) { - DrawLine(201 + i, 232 - (int)(averageVolume[i] * 32), 201 + i, 232, MAROON); + DrawLine(201 + i, 232 - (int)(averageVolume[i]*32), 201 + i, 232, MAROON); } DrawRectangleLines(199, 199, 402, 34, GRAY); diff --git a/examples/audio/audio_raw_stream.c b/examples/audio/audio_raw_stream.c index 01a125f4c..95505c3f6 100644 --- a/examples/audio/audio_raw_stream.c +++ b/examples/audio/audio_raw_stream.c @@ -115,7 +115,7 @@ int main(void) float fp = (float)(mousePosition.y); frequency = 40.0f + (float)(fp); - float pan = (float)(mousePosition.x) / (float)screenWidth; + float pan = (float)(mousePosition.x)/(float)screenWidth; SetAudioStreamPan(stream, pan); } @@ -141,7 +141,7 @@ int main(void) } // Scale read cursor's position to minimize transition artifacts - //readCursor = (int)(readCursor * ((float)waveLength / (float)oldWavelength)); + //readCursor = (int)(readCursor*((float)waveLength/(float)oldWavelength)); oldFrequency = frequency; } diff --git a/examples/audio/audio_stream_effects.c b/examples/audio/audio_stream_effects.c index 29186e20e..b848c8c31 100644 --- a/examples/audio/audio_stream_effects.c +++ b/examples/audio/audio_stream_effects.c @@ -148,8 +148,8 @@ int main(void) static void AudioProcessEffectLPF(void *buffer, unsigned int frames) { static float low[2] = { 0.0f, 0.0f }; - static const float cutoff = 70.0f / 44100.0f; // 70 Hz lowpass filter - const float k = cutoff / (cutoff + 0.1591549431f); // RC filter formula + static const float cutoff = 70.0f/44100.0f; // 70 Hz lowpass filter + const float k = cutoff/(cutoff + 0.1591549431f); // RC filter formula // Converts the buffer data before using it float *bufferData = (float *)buffer; @@ -158,8 +158,8 @@ static void AudioProcessEffectLPF(void *buffer, unsigned int frames) const float l = bufferData[i]; const float r = bufferData[i + 1]; - low[0] += k * (l - low[0]); - low[1] += k * (r - low[1]); + low[0] += k*(l - low[0]); + low[1] += k*(r - low[1]); bufferData[i] = low[0]; bufferData[i + 1] = low[1]; } diff --git a/examples/core/core_2d_camera_platformer.c b/examples/core/core_2d_camera_platformer.c index b7e8553a3..9a6ec9ade 100644 --- a/examples/core/core_2d_camera_platformer.c +++ b/examples/core/core_2d_camera_platformer.c @@ -294,7 +294,7 @@ void UpdateCameraPlayerBoundsPush(Camera2D *camera, Player *player, EnvItem *env Vector2 bboxWorldMin = GetScreenToWorld2D((Vector2){ (1 - bbox.x)*0.5f*width, (1 - bbox.y)*0.5f*height }, *camera); Vector2 bboxWorldMax = GetScreenToWorld2D((Vector2){ (1 + bbox.x)*0.5f*width, (1 + bbox.y)*0.5f*height }, *camera); - camera->offset = (Vector2){ (1 - bbox.x)*0.5f * width, (1 - bbox.y)*0.5f*height }; + camera->offset = (Vector2){ (1 - bbox.x)*0.5f*width, (1 - bbox.y)*0.5f*height }; if (player->position.x < bboxWorldMin.x) camera->target.x = player->position.x; if (player->position.y < bboxWorldMin.y) camera->target.y = player->position.y; diff --git a/examples/core/core_3d_camera_first_person.c b/examples/core/core_3d_camera_first_person.c index 42e85d0d8..8f4dc70fb 100644 --- a/examples/core/core_3d_camera_first_person.c +++ b/examples/core/core_3d_camera_first_person.c @@ -100,8 +100,8 @@ int main(void) camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; camera.projection = CAMERA_ORTHOGRAPHIC; camera.fovy = 20.0f; // near plane width in CAMERA_ORTHOGRAPHIC - CameraYaw(&camera, -135 * DEG2RAD, true); - CameraPitch(&camera, -45 * DEG2RAD, true, true, false); + CameraYaw(&camera, -135*DEG2RAD, true); + CameraPitch(&camera, -45*DEG2RAD, true, true, false); } else if (camera.projection == CAMERA_ORTHOGRAPHIC) { diff --git a/examples/core/core_3d_camera_fps.c b/examples/core/core_3d_camera_fps.c index 4d8962654..a3f1d5716 100644 --- a/examples/core/core_3d_camera_fps.c +++ b/examples/core/core_3d_camera_fps.c @@ -263,7 +263,7 @@ static void UpdateCameraAngle(Camera *camera) // Rotate view vector around right axis float pitchAngle = -lookRotation.y - lean.y; - pitchAngle = Clamp(pitchAngle, -PI / 2 + 0.0001f, PI / 2 - 0.0001f); // Clamp angle so it doesn't go past straight up or straight down + pitchAngle = Clamp(pitchAngle, -PI/2 + 0.0001f, PI/2 - 0.0001f); // Clamp angle so it doesn't go past straight up or straight down Vector3 pitch = Vector3RotateByAxisAngle(yaw, right, pitchAngle); // Head animation diff --git a/examples/core/core_3d_camera_split_screen.c b/examples/core/core_3d_camera_split_screen.c index 7f3d9de42..75e6959ed 100644 --- a/examples/core/core_3d_camera_split_screen.c +++ b/examples/core/core_3d_camera_split_screen.c @@ -47,7 +47,7 @@ int main(void) cameraPlayer2.position.x = -3.0f; cameraPlayer2.position.y = 3.0f; - RenderTexture screenPlayer2 = LoadRenderTexture(screenWidth / 2, screenHeight); + RenderTexture screenPlayer2 = LoadRenderTexture(screenWidth/2, screenHeight); // Build a flipped rectangle the size of the split view to use for drawing later Rectangle splitScreenRect = { 0.0f, 0.0f, (float)screenPlayer1.texture.width, (float)-screenPlayer1.texture.height }; diff --git a/examples/core/core_3d_picking.c b/examples/core/core_3d_picking.c index f62c9331b..9caca82ae 100644 --- a/examples/core/core_3d_picking.c +++ b/examples/core/core_3d_picking.c @@ -101,7 +101,7 @@ int main(void) DrawText("Try clicking on the box with your mouse!", 240, 10, 20, DARKGRAY); - if (collision.hit) DrawText("BOX SELECTED", (screenWidth - MeasureText("BOX SELECTED", 30)) / 2, (int)(screenHeight * 0.1f), 30, GREEN); + if (collision.hit) DrawText("BOX SELECTED", (screenWidth - MeasureText("BOX SELECTED", 30))/2, (int)(screenHeight*0.1f), 30, GREEN); DrawText("Right click mouse to toggle camera controls", 10, 430, 10, GRAY); diff --git a/examples/core/core_high_dpi.c b/examples/core/core_high_dpi.c index 23ae235a5..8de5fa261 100644 --- a/examples/core/core_high_dpi.c +++ b/examples/core/core_high_dpi.c @@ -91,7 +91,7 @@ int main(void) int x = (int)(((float)i)/dpiScale.x); if (odd) DrawRectangle(x, pixelGridTop, (int)cellSizePx, pixelGridBottom - pixelGridTop, CLITERAL(Color){ 0, 121, 241, 100 }); - DrawLine(x, pixelGridTop, (int)(((float)i) / dpiScale.x), pixelGridLabelY - 10, GRAY); + DrawLine(x, pixelGridTop, (int)(((float)i)/dpiScale.x), pixelGridLabelY - 10, GRAY); if ((x - lastTextX) >= minTextSpace) { diff --git a/examples/core/core_window_flags.c b/examples/core/core_window_flags.c index fb4058a9f..048d2d245 100644 --- a/examples/core/core_window_flags.c +++ b/examples/core/core_window_flags.c @@ -46,7 +46,7 @@ int main(void) //SetConfigFlags(FLAG_VSYNC_HINT | FLAG_MSAA_4X_HINT | FLAG_WINDOW_HIGHDPI); InitWindow(screenWidth, screenHeight, "raylib [core] example - window flags"); - Vector2 ballPosition = { GetScreenWidth() / 2.0f, GetScreenHeight() / 2.0f }; + Vector2 ballPosition = { GetScreenWidth()/2.0f, GetScreenHeight()/2.0f }; Vector2 ballSpeed = { 5.0f, 4.0f }; float ballRadius = 20; diff --git a/examples/core/core_world_screen.c b/examples/core/core_world_screen.c index 6df76db08..0d7d9242c 100644 --- a/examples/core/core_world_screen.c +++ b/examples/core/core_world_screen.c @@ -69,7 +69,7 @@ int main(void) EndMode3D(); - DrawText("Enemy: 100 / 100", (int)cubeScreenPosition.x - MeasureText("Enemy: 100/100", 20)/2, (int)cubeScreenPosition.y, 20, BLACK); + DrawText("Enemy: 100/100", (int)cubeScreenPosition.x - MeasureText("Enemy: 100/100", 20)/2, (int)cubeScreenPosition.y, 20, BLACK); DrawText(TextFormat("Cube position in screen space coordinates: [%i, %i]", (int)cubeScreenPosition.x, (int)cubeScreenPosition.y), 10, 10, 20, LIME); DrawText("Text 2d should be always on top of the cube", 10, 40, 20, GRAY); @@ -84,4 +84,4 @@ int main(void) //-------------------------------------------------------------------------------------- return 0; -} \ No newline at end of file +} diff --git a/examples/models/models_loading_vox.c b/examples/models/models_loading_vox.c index 8ac93945e..cf54a1c25 100644 --- a/examples/models/models_loading_vox.c +++ b/examples/models/models_loading_vox.c @@ -127,8 +127,8 @@ int main(void) if (IsMouseButtonDown(MOUSE_BUTTON_MIDDLE)) { const Vector2 mouseDelta = GetMouseDelta(); - camerarot.x = mouseDelta.x * 0.05f; - camerarot.y = mouseDelta.y * 0.05f; + camerarot.x = mouseDelta.x*0.05f; + camerarot.y = mouseDelta.y*0.05f; } else { @@ -138,14 +138,14 @@ int main(void) UpdateCameraPro(&camera, (Vector3) { - (IsKeyDown(KEY_W) || IsKeyDown(KEY_UP)) * 0.1f - // Move forward-backward - (IsKeyDown(KEY_S) || IsKeyDown(KEY_DOWN)) * 0.1f, - (IsKeyDown(KEY_D) || IsKeyDown(KEY_RIGHT)) * 0.1f - // Move right-left - (IsKeyDown(KEY_A) || IsKeyDown(KEY_LEFT)) * 0.1f, + (IsKeyDown(KEY_W) || IsKeyDown(KEY_UP))*0.1f - // Move forward-backward + (IsKeyDown(KEY_S) || IsKeyDown(KEY_DOWN))*0.1f, + (IsKeyDown(KEY_D) || IsKeyDown(KEY_RIGHT))*0.1f - // Move right-left + (IsKeyDown(KEY_A) || IsKeyDown(KEY_LEFT))*0.1f, 0.0f // Move up-down }, camerarot, - GetMouseWheelMove() * -2.0f); // Move to target (zoom) + GetMouseWheelMove()*-2.0f); // Move to target (zoom) // Cycle between models on mouse click if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) currentModel = (currentModel + 1) % MAX_VOX_FILES; diff --git a/examples/models/models_tesseract_view.c b/examples/models/models_tesseract_view.c index d23e34141..97a02ca8e 100644 --- a/examples/models/models_tesseract_view.c +++ b/examples/models/models_tesseract_view.c @@ -79,9 +79,9 @@ int main(void) // Projection from XYZW to XYZ from perspective point (0, 0, 0, 3) // NOTE: Trace a ray from (0, 0, 0, 3) > p and continue until W = 0 float c = 3.0f/(3.0f - p.w); - p.x = c * p.x; - p.y = c * p.y; - p.z = c * p.z; + p.x = c*p.x; + p.y = c*p.y; + p.z = c*p.z; // Split XYZ coordinate and W values later for drawing transformed[i] = (Vector3){ p.x, p.y, p.z }; @@ -125,4 +125,4 @@ int main(void) //-------------------------------------------------------------------------------------- return 0; -} \ No newline at end of file +} diff --git a/examples/models/resources/shaders/glsl100/voxel_lighting.fs b/examples/models/resources/shaders/glsl100/voxel_lighting.fs index f23d9292d..315651cb9 100644 --- a/examples/models/resources/shaders/glsl100/voxel_lighting.fs +++ b/examples/models/resources/shaders/glsl100/voxel_lighting.fs @@ -46,7 +46,7 @@ void main() light = normalize(lights[i].position - fragPosition); float NdotL = max(dot(normal, light), 0.0); - lightDot += lights[i].color.rgb * NdotL; + lightDot += lights[i].color.rgb*NdotL; if (NdotL > 0.0) { @@ -56,8 +56,8 @@ void main() } } - vec4 finalColor = (fragColor * ((colDiffuse + vec4(specular, 1.0)) * vec4(lightDot, 1.0))); - finalColor += fragColor * (ambient / 10.0) * colDiffuse; + vec4 finalColor = (fragColor*((colDiffuse + vec4(specular, 1.0))*vec4(lightDot, 1.0))); + finalColor += fragColor*(ambient/10.0)*colDiffuse; finalColor = pow(finalColor, vec4(1.0/2.2)); // gamma correction diff --git a/examples/models/resources/shaders/glsl100/voxel_lighting.vs b/examples/models/resources/shaders/glsl100/voxel_lighting.vs index 12f53ed32..e5cffc879 100644 --- a/examples/models/resources/shaders/glsl100/voxel_lighting.vs +++ b/examples/models/resources/shaders/glsl100/voxel_lighting.vs @@ -20,9 +20,9 @@ varying vec3 fragNormal; void main() { - fragPosition = vec3(matModel * vec4(vertexPosition, 1.0)); + fragPosition = vec3(matModel*vec4(vertexPosition, 1.0)); fragColor = vertexColor; - fragNormal = normalize(vec3(matNormal * vec4(vertexNormal, 1.0))); + fragNormal = normalize(vec3(matNormal*vec4(vertexNormal, 1.0))); - gl_Position = mvp * vec4(vertexPosition, 1.0); + gl_Position = mvp*vec4(vertexPosition, 1.0); } diff --git a/examples/models/resources/shaders/glsl120/voxel_lighting.fs b/examples/models/resources/shaders/glsl120/voxel_lighting.fs index eb01f96bb..f4178a44e 100644 --- a/examples/models/resources/shaders/glsl120/voxel_lighting.fs +++ b/examples/models/resources/shaders/glsl120/voxel_lighting.fs @@ -43,7 +43,7 @@ void main() light = normalize(lights[i].position - fragPosition); float NdotL = max(dot(normal, light), 0.0); - lightDot += lights[i].color.rgb * NdotL; + lightDot += lights[i].color.rgb*NdotL; if (NdotL > 0.0) { @@ -53,8 +53,8 @@ void main() } } - vec4 finalColor = (fragColor * ((colDiffuse + vec4(specular, 1.0)) * vec4(lightDot, 1.0))); - finalColor += fragColor * (ambient / 10.0) * colDiffuse; + vec4 finalColor = (fragColor*((colDiffuse + vec4(specular, 1.0))*vec4(lightDot, 1.0))); + finalColor += fragColor*(ambient/10.0)*colDiffuse; finalColor = pow(finalColor, vec4(1.0/2.2)); // gamma correction diff --git a/examples/models/resources/shaders/glsl120/voxel_lighting.vs b/examples/models/resources/shaders/glsl120/voxel_lighting.vs index 75163c7f8..9cd6f8892 100644 --- a/examples/models/resources/shaders/glsl120/voxel_lighting.vs +++ b/examples/models/resources/shaders/glsl120/voxel_lighting.vs @@ -16,9 +16,9 @@ varying vec3 fragNormal; void main() { - fragPosition = vec3(matModel * vec4(vertexPosition, 1.0)); + fragPosition = vec3(matModel*vec4(vertexPosition, 1.0)); fragColor = vertexColor; - fragNormal = normalize(vec3(matNormal * vec4(vertexNormal, 1.0))); + fragNormal = normalize(vec3(matNormal*vec4(vertexNormal, 1.0))); - gl_Position = mvp * vec4(vertexPosition, 1.0); + gl_Position = mvp*vec4(vertexPosition, 1.0); } diff --git a/examples/others/rlgl_standalone.c b/examples/others/rlgl_standalone.c index 631699a5d..eddb63a0f 100644 --- a/examples/others/rlgl_standalone.c +++ b/examples/others/rlgl_standalone.c @@ -297,7 +297,7 @@ static void DrawRectangleV(Vector2 position, Vector2 size, Color color) // Draw a grid centered at (0, 0, 0) static void DrawGrid(int slices, float spacing) { - int halfSlices = slices / 2; + int halfSlices = slices/2; rlBegin(RL_LINES); for (int i = -halfSlices; i <= halfSlices; i++) diff --git a/examples/shaders/shaders_normal_map.c b/examples/shaders/shaders_normal_map.c index 3a8180fef..16806201b 100644 --- a/examples/shaders/shaders_normal_map.c +++ b/examples/shaders/shaders_normal_map.c @@ -1,22 +1,22 @@ /******************************************************************************************* - * - * raylib [shaders] example - normal map - * - * Example complexity rating: [★★★★] 4/4 - * - * NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, - * OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version - * - * Example originally created with raylib 5.6, last time updated with raylib 5.6 - * - * Example contributed by Jeremy Montgomery (@Sir_Irk) 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-2025 Jeremy Montgomery (@Sir_Irk) and Ramon Santamaria (@raysan5) - *k - ********************************************************************************************/ +* +* raylib [shaders] example - normal map +* +* Example complexity rating: [★★★★] 4/4 +* +* NOTE: This example requires raylib OpenGL 3.3 or ES2 versions for shaders support, +* OpenGL 1.1 does not support shaders, recompile raylib to OpenGL 3.3 version +* +* Example originally created with raylib 5.6, last time updated with raylib 5.6 +* +* Example contributed by Jeremy Montgomery (@Sir_Irk) 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-2025 Jeremy Montgomery (@Sir_Irk) and Ramon Santamaria (@raysan5) +* +********************************************************************************************/ #include diff --git a/examples/shaders/shaders_shadowmap.c b/examples/shaders/shaders_shadowmap.c index 5e452198a..2c6abf66d 100644 --- a/examples/shaders/shaders_shadowmap.c +++ b/examples/shaders/shaders_shadowmap.c @@ -115,22 +115,22 @@ int main(void) if (IsKeyDown(KEY_LEFT)) { if (lightDir.x < 0.6f) - lightDir.x += cameraSpeed * 60.0f * dt; + lightDir.x += cameraSpeed*60.0f*dt; } if (IsKeyDown(KEY_RIGHT)) { if (lightDir.x > -0.6f) - lightDir.x -= cameraSpeed * 60.0f * dt; + lightDir.x -= cameraSpeed*60.0f*dt; } if (IsKeyDown(KEY_UP)) { if (lightDir.z < 0.6f) - lightDir.z += cameraSpeed * 60.0f * dt; + lightDir.z += cameraSpeed*60.0f*dt; } if (IsKeyDown(KEY_DOWN)) { if (lightDir.z > -0.6f) - lightDir.z -= cameraSpeed * 60.0f * dt; + lightDir.z -= cameraSpeed*60.0f*dt; } lightDir = Vector3Normalize(lightDir); lightCam.position = Vector3Scale(lightDir, -15.0f); diff --git a/examples/shaders/shaders_spotlight.c b/examples/shaders/shaders_spotlight.c index def3a6c0c..1ab7664b5 100644 --- a/examples/shaders/shaders_spotlight.c +++ b/examples/shaders/shaders_spotlight.c @@ -130,12 +130,12 @@ int main(void) while ((fabs(spots[i].speed.x) + fabs(spots[i].speed.y)) < 2) { - spots[i].speed.x = GetRandomValue(-400, 40) / 10.0f; - spots[i].speed.y = GetRandomValue(-400, 40) / 10.0f; + spots[i].speed.x = GetRandomValue(-400, 40)/10.0f; + spots[i].speed.y = GetRandomValue(-400, 40)/10.0f; } - spots[i].inner = 28.0f * (i + 1); - spots[i].radius = 48.0f * (i + 1); + spots[i].inner = 28.0f*(i + 1); + spots[i].radius = 48.0f*(i + 1); SetShaderValue(shdrSpot, spots[i].positionLoc, &spots[i].position.x, SHADER_UNIFORM_VEC2); SetShaderValue(shdrSpot, spots[i].innerLoc, &spots[i].inner, SHADER_UNIFORM_FLOAT); diff --git a/examples/shapes/shapes_digital_clock.c b/examples/shapes/shapes_digital_clock.c index b3dfa6f54..5f13dd2a8 100644 --- a/examples/shapes/shapes_digital_clock.c +++ b/examples/shapes/shapes_digital_clock.c @@ -133,7 +133,7 @@ int main(void) static void UpdateClock(Clock *clock) { time_t rawtime; - struct tm * timeinfo; + struct tm *timeinfo; time(&rawtime); timeinfo = localtime(&rawtime); diff --git a/examples/shapes/shapes_double_pendulum.c b/examples/shapes/shapes_double_pendulum.c index b5194917f..e2817f24b 100644 --- a/examples/shapes/shapes_double_pendulum.c +++ b/examples/shapes/shapes_double_pendulum.c @@ -46,8 +46,8 @@ int main(void) InitWindow(screenWidth, screenHeight, "raylib [shapes] example - double pendulum"); // Simulation Paramters - float l1 = 15, m1 = 0.2, theta1 = DEG2RAD * 170, w1 = 0; - float l2 = 15, m2 = 0.1, theta2 = DEG2RAD * 0, w2 = 0; + float l1 = 15, m1 = 0.2, theta1 = DEG2RAD*170, w1 = 0; + float l2 = 15, m2 = 0.1, theta2 = DEG2RAD*0, w2 = 0; float lengthScaler = 0.1; float totalM = m1 + m2; @@ -56,8 +56,8 @@ int main(void) previousPosition.y += (screenHeight/2 - 100); // Scale length - float L1 = l1 * lengthScaler; - float L2 = l2 * lengthScaler; + float L1 = l1*lengthScaler; + float L2 = l2*lengthScaler; // Draw parameters int lineThick = 20, trailThick = 2; @@ -76,26 +76,26 @@ int main(void) // Update //---------------------------------------------------------------------------------- float dt = GetFrameTime(); - float step = dt / SIMULATION_STEPS, step2 = step * step; + float step = dt/SIMULATION_STEPS, step2 = step*step; // Update Physics - larger steps = better approximation for (int i = 0; i < SIMULATION_STEPS; ++i) { float delta = theta1 - theta2; float sinD = sinf(delta), cosD = cosf(delta), cos2D = cosf(2*delta); - float ww1 = w1 * w1, ww2 = w2 * w2; + float ww1 = w1*w1, ww2 = w2*w2; // Calculate a1 float a1 = (-G*(2*m1 + m2)*sinf(theta1) - m2*G*sinf(theta1 - 2*theta2) - 2*sinD*m2*(ww2*L2 + ww1*L1*cosD)) - / (L1*(2*m1 + m2 - m2*cos2D)); + /(L1*(2*m1 + m2 - m2*cos2D)); // Calculate a2 float a2 = (2*sinD*(ww1*L1*totalM + G*totalM*cosf(theta1) + ww2*L2*m2*cosD)) - / (L2*(2*m1 + m2 - m2*cos2D)); + /(L2*(2*m1 + m2 - m2*cos2D)); // Update thetas theta1 += w1*step + 0.5f*a1*step2; @@ -118,7 +118,7 @@ int main(void) // Draw trail DrawCircleV(previousPosition, trailThick, RED); - DrawLineEx(previousPosition, currentPosition, trailThick * 2, RED); + DrawLineEx(previousPosition, currentPosition, trailThick*2, RED); EndTextureMode(); // Update previous position @@ -135,12 +135,12 @@ int main(void) DrawTextureRec(target.texture, (Rectangle){ 0, 0, target.texture.width, -target.texture.height }, (Vector2){ 0, 0 }, WHITE); // Draw double pendulum - DrawRectanglePro((Rectangle){ screenWidth/2, screenHeight/2 - 100, 10 * l1, lineThick }, - (Vector2){0, lineThick * 0.5}, 90 - RAD2DEG * theta1, RAYWHITE); + DrawRectanglePro((Rectangle){ screenWidth/2, screenHeight/2 - 100, 10*l1, lineThick }, + (Vector2){0, lineThick*0.5}, 90 - RAD2DEG*theta1, RAYWHITE); Vector2 endpoint1 = CalculatePendulumEndPoint(l1, theta1); - DrawRectanglePro((Rectangle){ screenWidth/2 + endpoint1.x, screenHeight/2 - 100 + endpoint1.y, 10 * l2, lineThick }, - (Vector2){0, lineThick * 0.5}, 90 - RAD2DEG * theta2, RAYWHITE); + DrawRectanglePro((Rectangle){ screenWidth/2 + endpoint1.x, screenHeight/2 - 100 + endpoint1.y, 10*l2, lineThick }, + (Vector2){0, lineThick*0.5}, 90 - RAD2DEG*theta2, RAYWHITE); EndDrawing(); //---------------------------------------------------------------------------------- @@ -159,7 +159,7 @@ int main(void) // Calculate Pendulum End Point static Vector2 CalculatePendulumEndPoint(float l, float theta) { - return (Vector2){ 10 * l * sin(theta), 10 * l * cos(theta) }; + return (Vector2){ 10*l*sin(theta), 10*l*cos(theta) }; } // Calculate Double Pendulum End Point diff --git a/examples/shapes/shapes_draw_circle_sector.c b/examples/shapes/shapes_draw_circle_sector.c index 4bc7ffa6c..becd35228 100644 --- a/examples/shapes/shapes_draw_circle_sector.c +++ b/examples/shapes/shapes_draw_circle_sector.c @@ -72,7 +72,7 @@ int main(void) GuiSliderBar((Rectangle){ 600, 170, 120, 20}, "Segments", TextFormat("%.2f", segments), &segments, 0, 100); //------------------------------------------------------------------------------ - minSegments = truncf(ceilf((endAngle - startAngle) / 90)); + minSegments = truncf(ceilf((endAngle - startAngle)/90)); DrawText(TextFormat("MODE: %s", (segments >= minSegments)? "MANUAL" : "AUTO"), 600, 200, 10, (segments >= minSegments)? MAROON : DARKGRAY); DrawFPS(10, 10); @@ -87,4 +87,4 @@ int main(void) //-------------------------------------------------------------------------------------- return 0; -} \ No newline at end of file +} diff --git a/examples/shapes/shapes_rectangle_advanced.c b/examples/shapes/shapes_rectangle_advanced.c index 4f04c2854..c4fc648b3 100644 --- a/examples/shapes/shapes_rectangle_advanced.c +++ b/examples/shapes/shapes_rectangle_advanced.c @@ -46,8 +46,8 @@ int main(void) //---------------------------------------------------------------------------------- float width = GetScreenWidth()/2.0f, height = GetScreenHeight()/6.0f; Rectangle rec = { - GetScreenWidth() / 2.0f - width/2, - GetScreenHeight() / 2.0f - 5*(height/2), + GetScreenWidth()/2.0f - width/2, + GetScreenHeight()/2.0f - 5*(height/2), width, height }; //-------------------------------------------------------------------------------------- diff --git a/examples/shapes/shapes_top_down_lights.c b/examples/shapes/shapes_top_down_lights.c index 3c62b602a..2371d1e29 100644 --- a/examples/shapes/shapes_top_down_lights.c +++ b/examples/shapes/shapes_top_down_lights.c @@ -129,8 +129,8 @@ void SetupLight(int slot, float x, float y, float radius) lights[slot].mask = LoadRenderTexture(GetScreenWidth(), GetScreenHeight()); lights[slot].outerRadius = radius; - lights[slot].bounds.width = radius * 2; - lights[slot].bounds.height = radius * 2; + lights[slot].bounds.width = radius*2; + lights[slot].bounds.height = radius*2; MoveLight(slot, x, y); @@ -355,4 +355,4 @@ int main(void) //-------------------------------------------------------------------------------------- return 0; -} \ No newline at end of file +} diff --git a/examples/text/text_unicode.c b/examples/text/text_unicode.c index 0a9df7b41..54bdd4f86 100644 --- a/examples/text/text_unicode.c +++ b/examples/text/text_unicode.c @@ -248,7 +248,7 @@ int main(void) if (sz.x > 300) { sz.y *= sz.x/300; sz.x = 300; } else if (sz.x < 160) sz.x = 160; - Rectangle msgRect = { selectedPos.x - 38.8f, selectedPos.y, 2 * horizontalPadding + sz.x, 2 * verticalPadding + sz.y }; + Rectangle msgRect = { selectedPos.x - 38.8f, selectedPos.y, 2*horizontalPadding + sz.x, 2*verticalPadding + sz.y }; msgRect.y -= msgRect.height; // Coordinates for the chat bubble triangle diff --git a/examples/textures/textures_blend_modes.c b/examples/textures/textures_blend_modes.c index 555cdd7b5..f5b7477d4 100644 --- a/examples/textures/textures_blend_modes.c +++ b/examples/textures/textures_blend_modes.c @@ -78,10 +78,10 @@ int main(void) switch (blendMode) { - case BLEND_ALPHA: DrawText("Current: BLEND_ALPHA", (screenWidth / 2) - 60, 370, 10, GRAY); break; - case BLEND_ADDITIVE: DrawText("Current: BLEND_ADDITIVE", (screenWidth / 2) - 60, 370, 10, GRAY); break; - case BLEND_MULTIPLIED: DrawText("Current: BLEND_MULTIPLIED", (screenWidth / 2) - 60, 370, 10, GRAY); break; - case BLEND_ADD_COLORS: DrawText("Current: BLEND_ADD_COLORS", (screenWidth / 2) - 60, 370, 10, GRAY); break; + case BLEND_ALPHA: DrawText("Current: BLEND_ALPHA", (screenWidth/2) - 60, 370, 10, GRAY); break; + case BLEND_ADDITIVE: DrawText("Current: BLEND_ADDITIVE", (screenWidth/2) - 60, 370, 10, GRAY); break; + case BLEND_MULTIPLIED: DrawText("Current: BLEND_MULTIPLIED", (screenWidth/2) - 60, 370, 10, GRAY); break; + case BLEND_ADD_COLORS: DrawText("Current: BLEND_ADD_COLORS", (screenWidth/2) - 60, 370, 10, GRAY); break; default: break; } diff --git a/examples/textures/textures_image_channel.c b/examples/textures/textures_image_channel.c index 400029aa6..56e544142 100644 --- a/examples/textures/textures_image_channel.c +++ b/examples/textures/textures_image_channel.c @@ -64,10 +64,10 @@ int main(void) Rectangle fudesumiRec = {0, 0, fudesumiImage.width, fudesumiImage.height}; Rectangle fudesumiPos = {50, 10, fudesumiImage.width*0.8f, fudesumiImage.height*0.8f}; - Rectangle redPos = { 410, 10, fudesumiPos.width / 2, fudesumiPos.height / 2 }; - Rectangle greenPos = { 600, 10, fudesumiPos.width / 2, fudesumiPos.height / 2 }; - Rectangle bluePos = { 410, 230, fudesumiPos.width / 2, fudesumiPos.height / 2 }; - Rectangle alphaPos = { 600, 230, fudesumiPos.width / 2, fudesumiPos.height / 2 }; + Rectangle redPos = { 410, 10, fudesumiPos.width/2, fudesumiPos.height/2 }; + Rectangle greenPos = { 600, 10, fudesumiPos.width/2, fudesumiPos.height/2 }; + Rectangle bluePos = { 410, 230, fudesumiPos.width/2, fudesumiPos.height/2 }; + Rectangle alphaPos = { 600, 230, fudesumiPos.width/2, fudesumiPos.height/2 }; SetTargetFPS(60); // Set our game to run at 60 frames-per-second //-------------------------------------------------------------------------------------- diff --git a/projects/4coder/main.c b/projects/4coder/main.c index 4abae398f..062d1d7db 100644 --- a/projects/4coder/main.c +++ b/projects/4coder/main.c @@ -18,8 +18,8 @@ int main() { SetTargetFPS(60); while (!WindowShouldClose()) { - cam.position.x = sin(GetTime()) * 10.0f; - cam.position.z = cos(GetTime()) * 10.0f; + cam.position.x = sin(GetTime())*10.0f; + cam.position.z = cos(GetTime())*10.0f; BeginDrawing(); ClearBackground(RAYWHITE); @@ -35,4 +35,4 @@ int main() { CloseWindow(); return 0; -} \ No newline at end of file +} diff --git a/src/external/rl_gputex.h b/src/external/rl_gputex.h index 306f09808..29500f3cf 100644 --- a/src/external/rl_gputex.h +++ b/src/external/rl_gputex.h @@ -288,7 +288,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ if (header->ddspf.flags == 0x40) // No alpha channel { int data_size = image_pixel_size*sizeof(unsigned short); - if (header->mipmap_count > 1) data_size = data_size + data_size / 3; + if (header->mipmap_count > 1) data_size = data_size + data_size/3; image_data = RL_GPUTEX_MALLOC(data_size); RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); @@ -300,7 +300,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ if (header->ddspf.a_bit_mask == 0x8000) // 1bit alpha { int data_size = image_pixel_size*sizeof(unsigned short); - if (header->mipmap_count > 1) data_size = data_size + data_size / 3; + if (header->mipmap_count > 1) data_size = data_size + data_size/3; image_data = RL_GPUTEX_MALLOC(data_size); RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); @@ -320,7 +320,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ else if (header->ddspf.a_bit_mask == 0xf000) // 4bit alpha { int data_size = image_pixel_size*sizeof(unsigned short); - if (header->mipmap_count > 1) data_size = data_size + data_size / 3; + if (header->mipmap_count > 1) data_size = data_size + data_size/3; image_data = RL_GPUTEX_MALLOC(data_size); RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); @@ -342,7 +342,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ else if ((header->ddspf.flags == 0x40) && (header->ddspf.rgb_bit_count == 24)) // DDS_RGB, no compressed { int data_size = image_pixel_size*3*sizeof(unsigned char); - if (header->mipmap_count > 1) data_size = data_size + data_size / 3; + if (header->mipmap_count > 1) data_size = data_size + data_size/3; image_data = RL_GPUTEX_MALLOC(data_size); RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); @@ -352,7 +352,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ else if ((header->ddspf.flags == 0x41) && (header->ddspf.rgb_bit_count == 32)) // DDS_RGBA, no compressed { int data_size = image_pixel_size*4*sizeof(unsigned char); - if (header->mipmap_count > 1) data_size = data_size + data_size / 3; + if (header->mipmap_count > 1) data_size = data_size + data_size/3; image_data = RL_GPUTEX_MALLOC(data_size); RL_GPUTEX_MEMCPY(image_data, file_data_ptr, data_size); @@ -376,7 +376,7 @@ void *rl_load_dds_from_memory(const unsigned char *file_data, unsigned int file_ int data_size = 0; // Calculate data size, including all mipmaps - if (header->mipmap_count > 1) data_size = header->pitch_or_linear_size + header->pitch_or_linear_size / 3; + if (header->mipmap_count > 1) data_size = header->pitch_or_linear_size + header->pitch_or_linear_size/3; else data_size = header->pitch_or_linear_size; image_data = RL_GPUTEX_MALLOC(data_size*sizeof(unsigned char)); @@ -1547,4 +1547,4 @@ typedef enum VkFormat { // Provided by VK_KHR_maintenance5 VK_FORMAT_A8_UNORM_KHR = VK_FORMAT_A8_UNORM, } VkFormat; -*/ \ No newline at end of file +*/ diff --git a/src/platforms/rcore_desktop_rgfw.c b/src/platforms/rcore_desktop_rgfw.c index a1694af4a..da1bded6d 100644 --- a/src/platforms/rcore_desktop_rgfw.c +++ b/src/platforms/rcore_desktop_rgfw.c @@ -1041,8 +1041,8 @@ void PollInputEvents(void) // if we are doing automatic DPI scaling, then the "screen" size is divided by the window scale if (IsWindowState(FLAG_WINDOW_HIGHDPI)) { - CORE.Window.screen.width = (int)(platform.window->r.w / GetWindowScaleDPI().x); - CORE.Window.screen.height = (int)(platform.window->r.h / GetWindowScaleDPI().y); + CORE.Window.screen.width = (int)(platform.window->r.w/GetWindowScaleDPI().x); + CORE.Window.screen.height = (int)(platform.window->r.h/GetWindowScaleDPI().y); } else { @@ -1207,13 +1207,13 @@ void PollInputEvents(void) { case 0: { - CORE.Input.Gamepad.axisState[event->gamepad][GAMEPAD_AXIS_LEFT_X] = event->axis[0].x / 100.0f; - CORE.Input.Gamepad.axisState[event->gamepad][GAMEPAD_AXIS_LEFT_Y] = event->axis[0].y / 100.0f; + CORE.Input.Gamepad.axisState[event->gamepad][GAMEPAD_AXIS_LEFT_X] = event->axis[0].x/100.0f; + CORE.Input.Gamepad.axisState[event->gamepad][GAMEPAD_AXIS_LEFT_Y] = event->axis[0].y/100.0f; } break; case 1: { - CORE.Input.Gamepad.axisState[event->gamepad][GAMEPAD_AXIS_RIGHT_X] = event->axis[1].x / 100.0f; - CORE.Input.Gamepad.axisState[event->gamepad][GAMEPAD_AXIS_RIGHT_Y] = event->axis[1].y / 100.0f; + CORE.Input.Gamepad.axisState[event->gamepad][GAMEPAD_AXIS_RIGHT_X] = event->axis[1].x/100.0f; + CORE.Input.Gamepad.axisState[event->gamepad][GAMEPAD_AXIS_RIGHT_Y] = event->axis[1].y/100.0f; } break; case 2: axis = GAMEPAD_AXIS_LEFT_TRIGGER; case 3: diff --git a/src/platforms/rcore_desktop_sdl.c b/src/platforms/rcore_desktop_sdl.c index a2603b6e8..c9b346fcf 100644 --- a/src/platforms/rcore_desktop_sdl.c +++ b/src/platforms/rcore_desktop_sdl.c @@ -1485,8 +1485,8 @@ void PollInputEvents(void) // if we are doing automatic DPI scaling, then the "screen" size is divided by the window scale if (IsWindowState(FLAG_WINDOW_HIGHDPI)) { - CORE.Window.screen.width = (int)(width / GetWindowScaleDPI().x); - CORE.Window.screen.height = (int)(height / GetWindowScaleDPI().y); + CORE.Window.screen.width = (int)(width/GetWindowScaleDPI().x); + CORE.Window.screen.height = (int)(height/GetWindowScaleDPI().y); } else { diff --git a/src/rmodels.c b/src/rmodels.c index ebd3b92d1..ff71b79d6 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -3722,7 +3722,7 @@ void GenMeshTangents(Mesh *mesh) } // Gram-Schmidt orthogonalization to make tangent orthogonal to normal - // T_prime = T - N * dot(N, T) + // T_prime = T - N*dot(N, T) Vector3 orthogonalized = Vector3Subtract(tangent, Vector3Scale(normal, Vector3DotProduct(normal, tangent))); // Handle cases where orthogonalized vector is too small From f0e49787cd18d98b5acd70d8a347d70a42c7c7c6 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 29 Aug 2025 21:32:21 +0200 Subject: [PATCH 318/328] minor tweak --- src/platforms/rcore_desktop_glfw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index 49cb6fff4..9d1f64771 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -24,7 +24,7 @@ * Custom flag for rcore on target platform -not used- * * DEPENDENCIES: -* - rglfw: Manage graphic device, OpenGL context and inputs (Windows, Linux, OSX, FreeBSD...) +* - rglfw: Manage graphic device, OpenGL context and inputs (Windows, Linux, OSX/macOS, FreeBSD...) * - gestures: Gestures system for touch-ready devices (or simulated from mouse inputs) * * From 0d29d8d4b18c5cf3a3f1320b1a6c8870e0f1b0c3 Mon Sep 17 00:00:00 2001 From: HaxSam Date: Sun, 31 Aug 2025 11:32:19 +0200 Subject: [PATCH 319/328] [build.zig]: a concrete approach to build for web with zig-build (#5157) --- build.zig | 568 ++++++++++++++++++++++++-------------------------- build.zig.zon | 7 +- 2 files changed, 272 insertions(+), 303 deletions(-) diff --git a/build.zig b/build.zig index f82ccc531..8bbc8073f 100644 --- a/build.zig +++ b/build.zig @@ -14,6 +14,72 @@ comptime { @compileError("Raylib requires zig version " ++ min_ver); } +pub const emsdk = struct { + const zemscripten = @import("zemscripten"); + + pub fn shell(b: *std.Build) std.Build.LazyPath { + return b.dependency("raylib", .{}).path("src/shell.html"); + } + + pub const FlagsOptions = struct { + optimize: std.builtin.OptimizeMode, + asyncify: bool = true, + }; + + pub fn emccDefaultFlags(allocator: std.mem.Allocator, options: FlagsOptions) zemscripten.EmccFlags { + var emcc_flags = zemscripten.emccDefaultFlags(allocator, .{ + .optimize = options.optimize, + .fsanitize = true, + }); + + if (options.asyncify) + emcc_flags.put("-sASYNCIFY", {}) catch unreachable; + + return emcc_flags; + } + + pub const SettingsOptions = struct { + optimize: std.builtin.OptimizeMode, + es3: bool = true, + emsdk_allocator: zemscripten.EmsdkAllocator = .emmalloc, + }; + + pub fn emccDefaultSettings(allocator: std.mem.Allocator, options: SettingsOptions) zemscripten.EmccSettings { + var emcc_settings = zemscripten.emccDefaultSettings(allocator, .{ + .optimize = options.optimize, + .emsdk_allocator = options.emsdk_allocator, + }); + + if (options.es3) + emcc_settings.put("FULL_ES3", "1") catch unreachable; + emcc_settings.put("USE_GLFW", "3") catch unreachable; + emcc_settings.put("EXPORTED_RUNTIME_METHODS", "['requestFullscreen']") catch unreachable; + + return emcc_settings; + } + + pub fn emccStep(b: *std.Build, raylib: *std.Build.Step.Compile, wasm: *std.Build.Step.Compile, options: zemscripten.StepOptions) *std.Build.Step { + const activate_emsdk_step = zemscripten.activateEmsdkStep(b); + + const emsdk_dep = b.dependency("emsdk", .{}); + raylib.root_module.addIncludePath(emsdk_dep.path("upstream/emscripten/cache/sysroot/include")); + wasm.root_module.addIncludePath(emsdk_dep.path("upstream/emscripten/cache/sysroot/include")); + + const emcc_step = zemscripten.emccStep(b, wasm, options); + emcc_step.dependOn(activate_emsdk_step); + + return emcc_step; + } + + pub fn emrunStep( + b: *std.Build, + html_path: []const u8, + extra_args: []const []const u8, + ) *std.Build.Step { + return zemscripten.emrunStep(b, html_path, extra_args); + } +}; + fn setDesktopPlatform(raylib: *std.Build.Step.Compile, platform: PlatformBackend) void { switch (platform) { .glfw => raylib.root_module.addCMacro("PLATFORM_DESKTOP_GLFW", ""), @@ -24,50 +90,6 @@ fn setDesktopPlatform(raylib: *std.Build.Step.Compile, platform: PlatformBackend } } -fn createEmsdkStep(b: *std.Build, emsdk: *std.Build.Dependency) *std.Build.Step.Run { - if (builtin.os.tag == .windows) { - return b.addSystemCommand(&.{emsdk.path("emsdk.bat").getPath(b)}); - } else { - return b.addSystemCommand(&.{emsdk.path("emsdk").getPath(b)}); - } -} - -fn emSdkSetupStep(b: *std.Build, emsdk: *std.Build.Dependency) !?*std.Build.Step.Run { - const dot_emsc_path = emsdk.path(".emscripten").getPath(b); - const dot_emsc_exists = !std.meta.isError(std.fs.accessAbsolute(dot_emsc_path, .{})); - - if (!dot_emsc_exists) { - const emsdk_install = createEmsdkStep(b, emsdk); - emsdk_install.addArgs(&.{ "install", "latest" }); - const emsdk_activate = createEmsdkStep(b, emsdk); - emsdk_activate.addArgs(&.{ "activate", "latest" }); - emsdk_activate.step.dependOn(&emsdk_install.step); - return emsdk_activate; - } else { - return null; - } -} - -// Adapted from Not-Nik/raylib-zig -fn emscriptenRunStep(b: *std.Build, emsdk: *std.Build.Dependency, examplePath: []const u8) !*std.Build.Step.Run { - const dot_emsc_path = emsdk.path("upstream/emscripten/cache/sysroot/include").getPath(b); - // If compiling on windows , use emrun.bat. - const emrunExe = switch (builtin.os.tag) { - .windows => "emrun.bat", - else => "emrun", - }; - var emrun_run_arg = try b.allocator.alloc(u8, dot_emsc_path.len + emrunExe.len + 1); - defer b.allocator.free(emrun_run_arg); - - if (b.sysroot == null) { - emrun_run_arg = try std.fmt.bufPrint(emrun_run_arg, "{s}" ++ std.fs.path.sep_str ++ "{s}", .{ emsdk.path("upstream/emscripten").getPath(b), emrunExe }); - } else { - emrun_run_arg = try std.fmt.bufPrint(emrun_run_arg, "{s}" ++ std.fs.path.sep_str ++ "{s}", .{ dot_emsc_path, emrunExe }); - } - const run_cmd = b.addSystemCommand(&.{ emrun_run_arg, examplePath }); - return run_cmd; -} - /// A list of all flags from `src/config.h` that one may override const config_h_flags = outer: { // Set this value higher if compile errors happen as `src/config.h` gets larger @@ -99,10 +121,20 @@ const config_h_flags = outer: { break :outer flags[0..i].*; }; -pub fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, options: Options) !*std.Build.Step.Compile { +fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, options: Options) !*std.Build.Step.Compile { var raylib_flags_arr: std.ArrayList([]const u8) = .empty; defer raylib_flags_arr.deinit(b.allocator); + const raylib = b.addLibrary(.{ + .name = "raylib", + .linkage = options.linkage, + .root_module = b.createModule(.{ + .optimize = optimize, + .target = target, + .link_libc = true, + }), + }); + try raylib_flags_arr.appendSlice( b.allocator, &[_][]const u8{ @@ -113,7 +145,7 @@ pub fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: }, ); - if (options.shared) { + if (options.linkage == .dynamic) { try raylib_flags_arr.appendSlice( b.allocator, &[_][]const u8{ @@ -159,16 +191,6 @@ pub fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: try raylib_flags_arr.appendSlice(b.allocator, &config_h_flags); } - const raylib = b.addLibrary(.{ - .name = "raylib", - .linkage = if (options.shared) .dynamic else .static, - .root_module = b.createModule(.{ - .target = target, - .optimize = optimize, - }), - }); - raylib.linkLibC(); - // No GLFW required on PLATFORM_DRM if (options.platform != .drm) { raylib.addIncludePath(b.path("src/external/glfw/include")); @@ -210,22 +232,22 @@ pub fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: .rgfw, .sdl, .drm, .android => {}, } - raylib.linkSystemLibrary("winmm"); - raylib.linkSystemLibrary("gdi32"); - raylib.linkSystemLibrary("opengl32"); + raylib.root_module.linkSystemLibrary("winmm", .{}); + raylib.root_module.linkSystemLibrary("gdi32", .{}); + raylib.root_module.linkSystemLibrary("opengl32", .{}); setDesktopPlatform(raylib, options.platform); }, .linux => { if (options.platform == .drm) { if (options.opengl_version == .auto) { - raylib.linkSystemLibrary("GLESv2"); + raylib.root_module.linkSystemLibrary("GLESv2", .{}); raylib.root_module.addCMacro("GRAPHICS_API_OPENGL_ES2", ""); } - raylib.linkSystemLibrary("EGL"); - raylib.linkSystemLibrary("gbm"); - raylib.linkSystemLibrary2("libdrm", .{ .use_pkg_config = .force }); + raylib.root_module.linkSystemLibrary("EGL", .{}); + raylib.root_module.linkSystemLibrary("gbm", .{}); + raylib.root_module.linkSystemLibrary("libdrm", .{ .use_pkg_config = .force }); raylib.root_module.addCMacro("PLATFORM_DRM", ""); raylib.root_module.addCMacro("EGL_NO_X11", ""); @@ -260,12 +282,12 @@ pub fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: const androidAsmPath = try std.fs.path.join(b.allocator, &.{ androidIncludePath, "/asm-generic" }); const androidGluePath = try std.fs.path.join(b.allocator, &.{ androidNdkPathString, "/sources/android/native_app_glue/" }); - raylib.addLibraryPath(.{ .cwd_relative = androidLibPath }); + raylib.root_module.addLibraryPath(.{ .cwd_relative = androidLibPath }); raylib.root_module.addLibraryPath(.{ .cwd_relative = androidApiSpecificPath }); - raylib.addSystemIncludePath(.{ .cwd_relative = androidIncludePath }); - raylib.addSystemIncludePath(.{ .cwd_relative = androidArchIncludePath }); - raylib.addSystemIncludePath(.{ .cwd_relative = androidAsmPath }); - raylib.addSystemIncludePath(.{ .cwd_relative = androidGluePath }); + raylib.root_module.addSystemIncludePath(.{ .cwd_relative = androidIncludePath }); + raylib.root_module.addSystemIncludePath(.{ .cwd_relative = androidArchIncludePath }); + raylib.root_module.addSystemIncludePath(.{ .cwd_relative = androidAsmPath }); + raylib.root_module.addSystemIncludePath(.{ .cwd_relative = androidGluePath }); var libcData: std.ArrayList(u8) = .empty; var aw: std.Io.Writer.Allocating = .fromArrayList(b.allocator, &libcData); @@ -289,15 +311,15 @@ pub fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: if (options.linux_display_backend == .X11 or options.linux_display_backend == .Both) { raylib.root_module.addCMacro("_GLFW_X11", ""); - raylib.linkSystemLibrary("GLX"); - raylib.linkSystemLibrary("X11"); - raylib.linkSystemLibrary("Xcursor"); - raylib.linkSystemLibrary("Xext"); - raylib.linkSystemLibrary("Xfixes"); - raylib.linkSystemLibrary("Xi"); - raylib.linkSystemLibrary("Xinerama"); - raylib.linkSystemLibrary("Xrandr"); - raylib.linkSystemLibrary("Xrender"); + raylib.root_module.linkSystemLibrary("GLX", .{}); + raylib.root_module.linkSystemLibrary("X11", .{}); + raylib.root_module.linkSystemLibrary("Xcursor", .{}); + raylib.root_module.linkSystemLibrary("Xext", .{}); + raylib.root_module.linkSystemLibrary("Xfixes", .{}); + raylib.root_module.linkSystemLibrary("Xi", .{}); + raylib.root_module.linkSystemLibrary("Xinerama", .{}); + raylib.root_module.linkSystemLibrary("Xrandr", .{}); + raylib.root_module.linkSystemLibrary("Xrender", .{}); } if (options.linux_display_backend == .Wayland or options.linux_display_backend == .Both) { @@ -309,9 +331,9 @@ pub fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: @panic("`wayland-scanner` not found"); }; raylib.root_module.addCMacro("_GLFW_WAYLAND", ""); - raylib.linkSystemLibrary("EGL"); - raylib.linkSystemLibrary("wayland-client"); - raylib.linkSystemLibrary("xkbcommon"); + raylib.root_module.linkSystemLibrary("EGL", .{}); + raylib.root_module.linkSystemLibrary("wayland-client", .{}); + raylib.root_module.linkSystemLibrary("xkbcommon", .{}); waylandGenerate(b, raylib, "wayland.xml", "wayland-client-protocol"); waylandGenerate(b, raylib, "xdg-shell.xml", "xdg-shell-client-protocol"); waylandGenerate(b, raylib, "xdg-decoration-unstable-v1.xml", "xdg-decoration-unstable-v1-client-protocol"); @@ -327,25 +349,25 @@ pub fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: }, .freebsd, .openbsd, .netbsd, .dragonfly => { try c_source_files.append(b.allocator, "rglfw.c"); - raylib.linkSystemLibrary("GL"); - raylib.linkSystemLibrary("rt"); - raylib.linkSystemLibrary("dl"); - raylib.linkSystemLibrary("m"); - raylib.linkSystemLibrary("X11"); - raylib.linkSystemLibrary("Xrandr"); - raylib.linkSystemLibrary("Xinerama"); - raylib.linkSystemLibrary("Xi"); - raylib.linkSystemLibrary("Xxf86vm"); - raylib.linkSystemLibrary("Xcursor"); + raylib.root_module.linkSystemLibrary("GL", .{}); + raylib.root_module.linkSystemLibrary("rt", .{}); + raylib.root_module.linkSystemLibrary("dl", .{}); + raylib.root_module.linkSystemLibrary("m", .{}); + raylib.root_module.linkSystemLibrary("X11", .{}); + raylib.root_module.linkSystemLibrary("Xrandr", .{}); + raylib.root_module.linkSystemLibrary("Xinerama", .{}); + raylib.root_module.linkSystemLibrary("Xi", .{}); + raylib.root_module.linkSystemLibrary("Xxf86vm", .{}); + raylib.root_module.linkSystemLibrary("Xcursor", .{}); setDesktopPlatform(raylib, options.platform); }, .macos => { // Include xcode_frameworks for cross compilation if (b.lazyDependency("xcode_frameworks", .{})) |dep| { - raylib.addSystemFrameworkPath(dep.path("Frameworks")); - raylib.addSystemIncludePath(dep.path("include")); - raylib.addLibraryPath(dep.path("lib")); + raylib.root_module.addSystemFrameworkPath(dep.path("Frameworks")); + raylib.root_module.addSystemIncludePath(dep.path("include")); + raylib.root_module.addLibraryPath(dep.path("lib")); } // On macos rglfw.c include Objective-C files. @@ -355,26 +377,18 @@ pub fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: .flags = raylib_flags_arr.items, }); _ = raylib_flags_arr.pop(); - raylib.linkFramework("Foundation"); - raylib.linkFramework("CoreServices"); - raylib.linkFramework("CoreGraphics"); - raylib.linkFramework("AppKit"); - raylib.linkFramework("IOKit"); + raylib.root_module.linkFramework("Foundation", .{}); + raylib.root_module.linkFramework("CoreServices", .{}); + raylib.root_module.linkFramework("CoreGraphics", .{}); + raylib.root_module.linkFramework("AppKit", .{}); + raylib.root_module.linkFramework("IOKit", .{}); setDesktopPlatform(raylib, options.platform); }, .emscripten => { - if (b.lazyDependency("emsdk", .{})) |dep| { - if (try emSdkSetupStep(b, dep)) |emSdkStep| { - raylib.step.dependOn(&emSdkStep.step); - } - - raylib.addIncludePath(dep.path("upstream/emscripten/cache/sysroot/include")); - } - raylib.root_module.addCMacro("PLATFORM_WEB", ""); if (options.opengl_version == .auto) { - raylib.root_module.addCMacro("GRAPHICS_API_OPENGL_ES2", ""); + raylib.root_module.addCMacro("GRAPHICS_API_OPENGL_ES3", ""); } }, else => { @@ -396,9 +410,9 @@ pub fn addRaygui(b: *std.Build, raylib: *std.Build.Step.Compile, raygui_dep: *st raylib.step.dependOn(&gen_step.step); const raygui_c_path = gen_step.add("raygui.c", "#define RAYGUI_IMPLEMENTATION\n#include \"raygui.h\"\n"); - raylib.addCSourceFile(.{ .file = raygui_c_path }); - raylib.addIncludePath(raygui_dep.path("src")); - raylib.addIncludePath(raylib_dep.path("src")); + raylib.root_module.addCSourceFile(.{ .file = raygui_c_path }); + raylib.root_module.addIncludePath(raygui_dep.path("src")); + raylib.root_module.addIncludePath(raylib_dep.path("src")); raylib.installHeader(raygui_dep.path("src/raygui.h"), "raygui.h"); } @@ -410,7 +424,7 @@ pub const Options = struct { rtext: bool = true, rtextures: bool = true, platform: PlatformBackend = .glfw, - shared: bool = false, + linkage: std.builtin.LinkMode = .static, linux_display_backend: LinuxDisplayBackend = .Both, opengl_version: OpenglVersion = .auto, android_ndk: []const u8 = "", @@ -428,7 +442,7 @@ pub const Options = struct { .rtext = b.option(bool, "rtext", "Compile with text support") orelse defaults.rtext, .rtextures = b.option(bool, "rtextures", "Compile with textures support") orelse defaults.rtextures, .rshapes = b.option(bool, "rshapes", "Compile with shapes support") orelse defaults.rshapes, - .shared = b.option(bool, "shared", "Compile as shared library") orelse defaults.shared, + .linkage = b.option(std.builtin.LinkMode, "linkage", "Compile as shared or static library") orelse defaults.linkage, .linux_display_backend = b.option(LinuxDisplayBackend, "linux_display_backend", "Linux display backend to use") orelse defaults.linux_display_backend, .opengl_version = b.option(OpenglVersion, "opengl_version", "OpenGL version to use") orelse defaults.opengl_version, .config = b.option([]const u8, "config", "Compile with custom define macros overriding config.h") orelse &.{}, @@ -475,14 +489,7 @@ pub const PlatformBackend = enum { }; pub fn build(b: *std.Build) !void { - // Standard target options allows the person running `zig build` to choose - // what target to build for. Here we do not override the defaults, which - // means any target is allowed, and the default is native. Other options - // for restricting supported target set are available. const target = b.standardTargetOptions(.{}); - // Standard optimization options allow the person running `zig build` to select - // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall. Here we do not - // set a preferred release mode, allowing the user to decide how to optimize. const optimize = b.standardOptimizeOption(.{}); const lib = try compileRaylib(b, target, optimize, Options.getOptions(b)); @@ -505,6 +512,145 @@ pub fn build(b: *std.Build) !void { examples.dependOn(try addExamples("textures", b, target, optimize, lib)); } +fn addExamples( + comptime module: []const u8, + b: *std.Build, + target: std.Build.ResolvedTarget, + optimize: std.builtin.OptimizeMode, + raylib: *std.Build.Step.Compile, +) !*std.Build.Step { + const all = b.step(module, "All " ++ module ++ " examples"); + const module_subpath = b.pathJoin(&.{ "examples", module }); + var dir = try std.fs.cwd().openDir(b.pathFromRoot(module_subpath), .{ .iterate = true }); + defer dir.close(); + + var iter = dir.iterate(); + while (try iter.next()) |entry| { + if (entry.kind != .file) continue; + const extension_idx = std.mem.lastIndexOf(u8, entry.name, ".c") orelse continue; + const name = entry.name[0..extension_idx]; + const path = b.pathJoin(&.{ module_subpath, entry.name }); + + // zig's mingw headers do not include pthread.h + if (std.mem.eql(u8, "core_loading_thread", name) and target.result.os.tag == .windows) continue; + + const exe_mod = b.createModule(.{ + .target = target, + .optimize = optimize, + }); + exe_mod.addCSourceFile(.{ .file = b.path(path), .flags = &.{} }); + exe_mod.linkLibrary(raylib); + + const run_step = b.step(name, name); + + if (target.result.os.tag == .emscripten) { + const wasm = b.addLibrary(.{ + .name = name, + .linkage = .static, + .root_module = exe_mod, + }); + + if (std.mem.eql(u8, name, "rlgl_standalone")) { + //TODO: Make rlgl_standalone example work + continue; + } + if (std.mem.eql(u8, name, "raylib_opengl_interop")) { + //TODO: Make raylib_opengl_interop example work + continue; + } + + const emcc_flags = emsdk.emccDefaultFlags(b.allocator, .{ .optimize = optimize }); + const emcc_settings = emsdk.emccDefaultSettings(b.allocator, .{ .optimize = optimize }); + + const install_dir: std.Build.InstallDir = .{ .custom = "htmlout" }; + const emcc_step = emsdk.emccStep(b, raylib, wasm, .{ + .optimize = optimize, + .flags = emcc_flags, + .settings = emcc_settings, + .shell_file_path = b.path("src/shell.html"), + .embed_paths = &.{ + .{ + .src_path = b.pathJoin(&.{ module_subpath, "resources" }), + .virtual_path = "resources", + }, + }, + .install_dir = install_dir, + }); + + const html_filename = try std.fmt.allocPrint(b.allocator, "{s}.html", .{wasm.name}); + const emrun_step = emsdk.emrunStep( + b, + b.getInstallPath(install_dir, html_filename), + &.{"--no_browser"}, + ); + emrun_step.dependOn(emcc_step); + + run_step.dependOn(emrun_step); + all.dependOn(emcc_step); + } else { + // special examples that test using these external dependencies directly + // alongside raylib + if (std.mem.eql(u8, name, "rlgl_standalone")) { + exe_mod.addIncludePath(b.path("src")); + exe_mod.addIncludePath(b.path("src/external/glfw/include")); + if (!hasCSource(raylib.root_module, "rglfw.c")) { + exe_mod.addCSourceFile(.{ .file = b.path("src/rglfw.c"), .flags = &.{} }); + } + } + if (std.mem.eql(u8, name, "raylib_opengl_interop")) { + exe_mod.addIncludePath(b.path("src/external")); + } + + switch (target.result.os.tag) { + .windows => { + exe_mod.linkSystemLibrary("winmm", .{}); + exe_mod.linkSystemLibrary("gdi32", .{}); + exe_mod.linkSystemLibrary("opengl32", .{}); + + exe_mod.addCMacro("PLATFORM_DESKTOP", ""); + }, + .linux => { + exe_mod.linkSystemLibrary("GL", .{}); + exe_mod.linkSystemLibrary("rt", .{}); + exe_mod.linkSystemLibrary("dl", .{}); + exe_mod.linkSystemLibrary("m", .{}); + exe_mod.linkSystemLibrary("X11", .{}); + + exe_mod.addCMacro("PLATFORM_DESKTOP", ""); + }, + .macos => { + exe_mod.linkFramework("Foundation", .{}); + exe_mod.linkFramework("Cocoa", .{}); + exe_mod.linkFramework("OpenGL", .{}); + exe_mod.linkFramework("CoreAudio", .{}); + exe_mod.linkFramework("CoreVideo", .{}); + exe_mod.linkFramework("IOKit", .{}); + + exe_mod.addCMacro("PLATFORM_DESKTOP", ""); + }, + else => { + @panic("Unsupported OS"); + }, + } + + const exe = b.addExecutable(.{ + .name = name, + .root_module = exe_mod, + }); + + const install_cmd = b.addInstallArtifact(exe, .{}); + + const run_cmd = b.addRunArtifact(exe); + run_cmd.cwd = b.path(module_subpath); + run_cmd.step.dependOn(&install_cmd.step); + + run_step.dependOn(&run_cmd.step); + all.dependOn(&install_cmd.step); + } + } + return all; +} + fn waylandGenerate( b: *std.Build, raylib: *std.Build.Step.Compile, @@ -518,196 +664,16 @@ fn waylandGenerate( const client_step = b.addSystemCommand(&.{ "wayland-scanner", "client-header" }); client_step.addFileArg(b.path(protocolDir)); - raylib.addIncludePath(client_step.addOutputFileArg(clientHeader).dirname()); + raylib.root_module.addIncludePath(client_step.addOutputFileArg(clientHeader).dirname()); const private_step = b.addSystemCommand(&.{ "wayland-scanner", "private-code" }); private_step.addFileArg(b.path(protocolDir)); - raylib.addIncludePath(private_step.addOutputFileArg(privateCode).dirname()); + raylib.root_module.addIncludePath(private_step.addOutputFileArg(privateCode).dirname()); raylib.step.dependOn(&client_step.step); raylib.step.dependOn(&private_step.step); } -fn addExamples( - comptime module: []const u8, - b: *std.Build, - target: std.Build.ResolvedTarget, - optimize: std.builtin.OptimizeMode, - raylib: *std.Build.Step.Compile, -) !*std.Build.Step { - const all = b.step(module, "All " ++ module ++ " examples"); - const module_subpath = b.pathJoin(&.{ "examples", module }); - const module_resources = b.pathJoin(&.{ module_subpath, "resources@resources" }); - var dir = try std.fs.cwd().openDir(b.pathFromRoot(module_subpath), .{ .iterate = true }); - defer if (comptime builtin.zig_version.minor >= 12) dir.close(); - - var iter = dir.iterate(); - while (try iter.next()) |entry| { - if (entry.kind != .file) continue; - const extension_idx = std.mem.lastIndexOf(u8, entry.name, ".c") orelse continue; - const name = entry.name[0..extension_idx]; - const path = b.pathJoin(&.{ module_subpath, entry.name }); - - // zig's mingw headers do not include pthread.h - if (std.mem.eql(u8, "core_loading_thread", name) and target.result.os.tag == .windows) continue; - - if (target.result.os.tag == .emscripten) { - const exe_lib = b.addLibrary(.{ - .name = name, - .linkage = .static, - .root_module = b.createModule(.{ - .target = target, - .optimize = optimize, - }), - }); - exe_lib.addCSourceFile(.{ - .file = b.path(path), - .flags = &.{}, - }); - exe_lib.linkLibC(); - - if (std.mem.eql(u8, name, "rlgl_standalone")) { - //TODO: Make rlgl_standalone example work - continue; - } - if (std.mem.eql(u8, name, "raylib_opengl_interop")) { - //TODO: Make raylib_opengl_interop example work - continue; - } - - exe_lib.linkLibrary(raylib); - - // Include emscripten for cross compilation - if (b.lazyDependency("emsdk", .{})) |emsdk_dep| { - if (try emSdkSetupStep(b, emsdk_dep)) |emSdkStep| { - exe_lib.step.dependOn(&emSdkStep.step); - } - - exe_lib.addIncludePath(emsdk_dep.path("upstream/emscripten/cache/sysroot/include")); - - // Create the output directory because emcc can't do it. - const emccOutputDirExample = b.pathJoin(&.{ emccOutputDir, name, std.fs.path.sep_str }); - const mkdir_command = switch (builtin.os.tag) { - .windows => b.addSystemCommand(&.{ "cmd.exe", "/c", "if", "not", "exist", emccOutputDirExample, "mkdir", emccOutputDirExample }), - else => b.addSystemCommand(&.{ "mkdir", "-p", emccOutputDirExample }), - }; - - const emcc_exe = switch (builtin.os.tag) { - .windows => "emcc.bat", - else => "emcc", - }; - - const emcc_exe_path = b.pathJoin(&.{ emsdk_dep.path("upstream/emscripten").getPath(b), emcc_exe }); - const emcc_command = b.addSystemCommand(&[_][]const u8{emcc_exe_path}); - emcc_command.step.dependOn(&mkdir_command.step); - const emccOutputDirExampleWithFile = b.pathJoin(&.{ emccOutputDir, name, std.fs.path.sep_str, emccOutputFile }); - emcc_command.addArgs(&[_][]const u8{ - "-o", - emccOutputDirExampleWithFile, - "-sFULL-ES3=1", - "-sUSE_GLFW=3", - "-sSTACK_OVERFLOW_CHECK=1", - "-sEXPORTED_RUNTIME_METHODS=['requestFullscreen']", - "-sASYNCIFY", - "-O0", - "--emrun", - "--preload-file", - module_resources, - "--shell-file", - b.path("src/shell.html").getPath(b), - }); - - const link_items: []const *std.Build.Step.Compile = &.{ - raylib, - exe_lib, - }; - for (link_items) |item| { - emcc_command.addFileArg(item.getEmittedBin()); - emcc_command.step.dependOn(&item.step); - } - - const run_step = try emscriptenRunStep(b, emsdk_dep, emccOutputDirExampleWithFile); - run_step.step.dependOn(&emcc_command.step); - run_step.addArg("--no_browser"); - const run_option = b.step(name, name); - - run_option.dependOn(&run_step.step); - - all.dependOn(&emcc_command.step); - } - } else { - const exe = b.addExecutable(.{ - .name = name, - .root_module = b.createModule(.{ - .target = target, - .optimize = optimize, - }), - }); - exe.addCSourceFile(.{ .file = b.path(path), .flags = &.{} }); - exe.linkLibC(); - - // special examples that test using these external dependencies directly - // alongside raylib - if (std.mem.eql(u8, name, "rlgl_standalone")) { - exe.addIncludePath(b.path("src")); - exe.addIncludePath(b.path("src/external/glfw/include")); - if (!hasCSource(raylib.root_module, "rglfw.c")) { - exe.addCSourceFile(.{ .file = b.path("src/rglfw.c"), .flags = &.{} }); - } - } - if (std.mem.eql(u8, name, "raylib_opengl_interop")) { - exe.addIncludePath(b.path("src/external")); - } - - exe.linkLibrary(raylib); - - switch (target.result.os.tag) { - .windows => { - exe.linkSystemLibrary("winmm"); - exe.linkSystemLibrary("gdi32"); - exe.linkSystemLibrary("opengl32"); - - exe.root_module.addCMacro("PLATFORM_DESKTOP", ""); - }, - .linux => { - exe.linkSystemLibrary("GL"); - exe.linkSystemLibrary("rt"); - exe.linkSystemLibrary("dl"); - exe.linkSystemLibrary("m"); - exe.linkSystemLibrary("X11"); - - exe.root_module.addCMacro("PLATFORM_DESKTOP", ""); - }, - .macos => { - exe.linkFramework("Foundation"); - exe.linkFramework("Cocoa"); - exe.linkFramework("OpenGL"); - exe.linkFramework("CoreAudio"); - exe.linkFramework("CoreVideo"); - exe.linkFramework("IOKit"); - - exe.root_module.addCMacro("PLATFORM_DESKTOP", ""); - }, - else => { - @panic("Unsupported OS"); - }, - } - - const install_cmd = b.addInstallArtifact(exe, .{}); - - const run_cmd = b.addRunArtifact(exe); - run_cmd.cwd = b.path(module_subpath); - run_cmd.step.dependOn(&install_cmd.step); - - const run_step = b.step(name, name); - run_step.dependOn(&run_cmd.step); - - all.dependOn(&install_cmd.step); - } - } - return all; -} - fn hasCSource(module: *std.Build.Module, name: []const u8) bool { for (module.link_objects.items) |o| switch (o) { .c_source_file => |c| if (switch (c.file) { diff --git a/build.zig.zon b/build.zig.zon index 7037008ed..dbbde3aad 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -1,6 +1,6 @@ .{ .name = .raylib, - .version = "5.5.0", + .version = "5.6.0-dev", .minimum_zig_version = "0.15.1", .fingerprint = 0x13035e5cb8bc1ac2, // Changing this has security and trust implications. @@ -14,7 +14,10 @@ .emsdk = .{ .url = "git+https://github.com/emscripten-core/emsdk#4.0.9", .hash = "N-V-__8AAJl1DwBezhYo_VE6f53mPVm00R-Fk28NPW7P14EQ", - .lazy = true, + }, + .zemscripten = .{ + .url = "git+https://github.com/zig-gamedev/zemscripten#3fa4b778852226c7346bdcc3c1486e875a9a6d02", + .hash = "zemscripten-0.2.0-dev-sRlDqApRAACspTbAZnuNKWIzfWzSYgYkb2nWAXZ-tqqt", }, }, From d9cb0782997c7b11eda542627ab29640afb0f904 Mon Sep 17 00:00:00 2001 From: maiphi <39464783+maiphi@users.noreply.github.com> Date: Sun, 31 Aug 2025 11:34:05 +0200 Subject: [PATCH 320/328] FindNearestConnectorMode: prefer mode with smallest number of unused pixels (#5158) Co-authored-by: Philipp Maierhoefer --- src/platforms/rcore_drm.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/platforms/rcore_drm.c b/src/platforms/rcore_drm.c index 2354bb3d2..a2151ea38 100644 --- a/src/platforms/rcore_drm.c +++ b/src/platforms/rcore_drm.c @@ -53,6 +53,7 @@ #include // POSIX terminal control definitions - tcgetattr(), tcsetattr() #include // POSIX threads management (inputs reading) #include // POSIX directory browsing +#include // INT_MAX #include // Required for: ioctl() - UNIX System call for device-specific input/output operations #include // Linux: KDSKBMODE, K_MEDIUMRAM constants definition @@ -2150,6 +2151,8 @@ static int FindNearestConnectorMode(const drmModeConnector *connector, uint widt if (NULL == connector) return -1; int nearestIndex = -1; + int minUnusedPixels = INT_MAX; + int minFpsDiff = INT_MAX; for (int i = 0; i < platform.connector->count_modes; i++) { const drmModeModeInfo *const mode = &platform.connector->modes[i]; @@ -2169,21 +2172,17 @@ static int FindNearestConnectorMode(const drmModeConnector *connector, uint widt continue; } - if (nearestIndex < 0) + const int unusedPixels = (mode->hdisplay - width) * (mode->vdisplay - height); + const int fpsDiff = mode->vrefresh - fps; + + if ((unusedPixels < minUnusedPixels) || + ((unusedPixels == minUnusedPixels) && (abs(fpsDiff) < abs(minFpsDiff))) || + ((unusedPixels == minUnusedPixels) && (abs(fpsDiff) == abs(minFpsDiff)) && (fpsDiff > 0))) { nearestIndex = i; - continue; + minUnusedPixels = unusedPixels; + minFpsDiff = fpsDiff; } - - const int widthDiff = abs(mode->hdisplay - width); - const int heightDiff = abs(mode->vdisplay - height); - const int fpsDiff = abs(mode->vrefresh - fps); - - const int nearestWidthDiff = abs(platform.connector->modes[nearestIndex].hdisplay - width); - const int nearestHeightDiff = abs(platform.connector->modes[nearestIndex].vdisplay - height); - const int nearestFpsDiff = abs(platform.connector->modes[nearestIndex].vrefresh - fps); - - if ((widthDiff < nearestWidthDiff) || (heightDiff < nearestHeightDiff) || (fpsDiff < nearestFpsDiff)) nearestIndex = i; } return nearestIndex; From fce888c0c0dab12c21f70143155757b8f2b90f51 Mon Sep 17 00:00:00 2001 From: wileyanderssen Date: Sun, 31 Aug 2025 12:34:39 +0300 Subject: [PATCH 321/328] changed function params formatting (#5160) --- src/rtextures.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rtextures.c b/src/rtextures.c index 81d615c38..624cf574a 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -1713,7 +1713,7 @@ Image ImageFromChannel(Image image, int selectedChannel) } // Resize and image to new size using Nearest-Neighbor scaling algorithm -void ImageResizeNN(Image *image,int newWidth,int newHeight) +void ImageResizeNN(Image *image, int newWidth, int newHeight) { // Security check to avoid program crash if ((image->data == NULL) || (image->width == 0) || (image->height == 0)) return; From ecedf40da6c8e686830d8e06e52d6edcdf903478 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 31 Aug 2025 11:39:14 +0200 Subject: [PATCH 322/328] REVIEW: `const` for codepoints arrays passed to function #5159 --- src/raylib.h | 6 +++--- src/rtext.c | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/raylib.h b/src/raylib.h index e58469856..aac95b408 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -1466,11 +1466,11 @@ RLAPI int GetPixelDataSize(int width, int height, int format); // G // Font loading/unloading functions RLAPI Font GetFontDefault(void); // Get the default Font RLAPI Font LoadFont(const char *fileName); // Load font from file into GPU memory (VRAM) -RLAPI Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character set, font size is provided in pixels height +RLAPI Font LoadFontEx(const char *fileName, int fontSize, const int *codepoints, int codepointCount); // Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character set, font size is provided in pixels height RLAPI Font LoadFontFromImage(Image image, Color key, int firstChar); // Load font from Image (XNA style) -RLAPI Font LoadFontFromMemory(const char *fileType, const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount); // Load font from memory buffer, fileType refers to extension: i.e. '.ttf' +RLAPI Font LoadFontFromMemory(const char *fileType, const unsigned char *fileData, int dataSize, int fontSize, const int *codepoints, int codepointCount); // Load font from memory buffer, fileType refers to extension: i.e. '.ttf' RLAPI bool IsFontValid(Font font); // Check if a font is valid (font data loaded, WARNING: GPU texture not checked) -RLAPI GlyphInfo *LoadFontData(const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount, int type); // Load font data for further use +RLAPI GlyphInfo *LoadFontData(const unsigned char *fileData, int dataSize, int fontSize, const int *codepoints, int codepointCount, int type); // Load font data for further use RLAPI Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyphCount, int fontSize, int padding, int packMethod); // Generate image font atlas using chars info RLAPI void UnloadFontData(GlyphInfo *glyphs, int glyphCount); // Unload font chars info data (RAM) RLAPI void UnloadFont(Font font); // Unload font from GPU memory (VRAM) diff --git a/src/rtext.c b/src/rtext.c index f54c71aef..faec099ee 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -147,7 +147,7 @@ static int textLineSpacing = 2; // Text vertical line spacing in static Font LoadBMFont(const char *fileName); // Load a BMFont file (AngelCode font file) #endif #if defined(SUPPORT_FILEFORMAT_BDF) -static GlyphInfo *LoadFontDataBDF(const unsigned char *fileData, int dataSize, int *codepoints, int codepointCount, int *outFontSize); +static GlyphInfo *LoadFontDataBDF(const unsigned char *fileData, int dataSize, const int *codepoints, int codepointCount, int *outFontSize); #endif #if defined(SUPPORT_DEFAULT_FONT) @@ -404,7 +404,7 @@ Font LoadFont(const char *fileName) // Load Font from TTF or BDF font file with generation parameters // NOTE: You can pass an array with desired characters, those characters should be available in the font // if array is NULL, default char set is selected 32..126 -Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount) +Font LoadFontEx(const char *fileName, int fontSize, const int *codepoints, int codepointCount) { Font font = { 0 }; @@ -549,7 +549,7 @@ Font LoadFontFromImage(Image image, Color key, int firstChar) } // Load font from memory buffer, fileType refers to extension: i.e. ".ttf" -Font LoadFontFromMemory(const char *fileType, const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount) +Font LoadFontFromMemory(const char *fileType, const unsigned char *fileData, int dataSize, int fontSize, const int *codepoints, int codepointCount) { Font font = { 0 }; @@ -620,7 +620,7 @@ bool IsFontValid(Font font) // Load font data for further use // NOTE: Requires TTF font memory data and can generate SDF data -GlyphInfo *LoadFontData(const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount, int type) +GlyphInfo *LoadFontData(const unsigned char *fileData, int dataSize, int fontSize, const int *codepoints, int codepointCount, int type) { // NOTE: Using some SDF generation default values, // trades off precision with ability to handle *smaller* sizes @@ -2392,7 +2392,7 @@ static unsigned char HexToInt(char hex) // Load font data for further use // NOTE: Requires BDF font memory data -static GlyphInfo *LoadFontDataBDF(const unsigned char *fileData, int dataSize, int *codepoints, int codepointCount, int *outFontSize) +static GlyphInfo *LoadFontDataBDF(const unsigned char *fileData, int dataSize, const int *codepoints, int codepointCount, int *outFontSize) { #define MAX_BUFFER_SIZE 256 From f2adb0272d62d97d99544421c58cee9845bf624c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 31 Aug 2025 09:39:29 +0000 Subject: [PATCH 323/328] Update raylib_api.* by CI --- tools/parser/output/raylib_api.json | 6 +++--- tools/parser/output/raylib_api.lua | 6 +++--- tools/parser/output/raylib_api.txt | 6 +++--- tools/parser/output/raylib_api.xml | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tools/parser/output/raylib_api.json b/tools/parser/output/raylib_api.json index 714e02907..2f1e3eea0 100644 --- a/tools/parser/output/raylib_api.json +++ b/tools/parser/output/raylib_api.json @@ -9041,7 +9041,7 @@ "name": "fontSize" }, { - "type": "int *", + "type": "const int *", "name": "codepoints" }, { @@ -9091,7 +9091,7 @@ "name": "fontSize" }, { - "type": "int *", + "type": "const int *", "name": "codepoints" }, { @@ -9129,7 +9129,7 @@ "name": "fontSize" }, { - "type": "int *", + "type": "const int *", "name": "codepoints" }, { diff --git a/tools/parser/output/raylib_api.lua b/tools/parser/output/raylib_api.lua index c66bad1a7..5e7dede38 100644 --- a/tools/parser/output/raylib_api.lua +++ b/tools/parser/output/raylib_api.lua @@ -6550,7 +6550,7 @@ return { params = { {type = "const char *", name = "fileName"}, {type = "int", name = "fontSize"}, - {type = "int *", name = "codepoints"}, + {type = "const int *", name = "codepoints"}, {type = "int", name = "codepointCount"} } }, @@ -6573,7 +6573,7 @@ return { {type = "const unsigned char *", name = "fileData"}, {type = "int", name = "dataSize"}, {type = "int", name = "fontSize"}, - {type = "int *", name = "codepoints"}, + {type = "const int *", name = "codepoints"}, {type = "int", name = "codepointCount"} } }, @@ -6593,7 +6593,7 @@ return { {type = "const unsigned char *", name = "fileData"}, {type = "int", name = "dataSize"}, {type = "int", name = "fontSize"}, - {type = "int *", name = "codepoints"}, + {type = "const int *", name = "codepoints"}, {type = "int", name = "codepointCount"}, {type = "int", name = "type"} } diff --git a/tools/parser/output/raylib_api.txt b/tools/parser/output/raylib_api.txt index 765c077e5..a8bd72579 100644 --- a/tools/parser/output/raylib_api.txt +++ b/tools/parser/output/raylib_api.txt @@ -3468,7 +3468,7 @@ Function 395: LoadFontEx() (4 input parameters) Description: Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character set, font size is provided in pixels height Param[1]: fileName (type: const char *) Param[2]: fontSize (type: int) - Param[3]: codepoints (type: int *) + Param[3]: codepoints (type: const int *) Param[4]: codepointCount (type: int) Function 396: LoadFontFromImage() (3 input parameters) Name: LoadFontFromImage @@ -3485,7 +3485,7 @@ Function 397: LoadFontFromMemory() (6 input parameters) Param[2]: fileData (type: const unsigned char *) Param[3]: dataSize (type: int) Param[4]: fontSize (type: int) - Param[5]: codepoints (type: int *) + Param[5]: codepoints (type: const int *) Param[6]: codepointCount (type: int) Function 398: IsFontValid() (1 input parameters) Name: IsFontValid @@ -3499,7 +3499,7 @@ Function 399: LoadFontData() (6 input parameters) Param[1]: fileData (type: const unsigned char *) Param[2]: dataSize (type: int) Param[3]: fontSize (type: int) - Param[4]: codepoints (type: int *) + Param[4]: codepoints (type: const int *) Param[5]: codepointCount (type: int) Param[6]: type (type: int) Function 400: GenImageFontAtlas() (6 input parameters) diff --git a/tools/parser/output/raylib_api.xml b/tools/parser/output/raylib_api.xml index fb409158f..22eac0628 100644 --- a/tools/parser/output/raylib_api.xml +++ b/tools/parser/output/raylib_api.xml @@ -2286,7 +2286,7 @@ - + @@ -2299,7 +2299,7 @@ - + @@ -2309,7 +2309,7 @@ - + From edce3d41b2311067e45f32a597c80c3fe0b47968 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 31 Aug 2025 12:11:03 +0200 Subject: [PATCH 324/328] REVERT: Making codepoints const, variable is used to generate list in case it was NULL --- src/raylib.h | 2 +- src/rtext.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/raylib.h b/src/raylib.h index aac95b408..c45168763 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -1470,7 +1470,7 @@ RLAPI Font LoadFontEx(const char *fileName, int fontSize, const int *codepoints, RLAPI Font LoadFontFromImage(Image image, Color key, int firstChar); // Load font from Image (XNA style) RLAPI Font LoadFontFromMemory(const char *fileType, const unsigned char *fileData, int dataSize, int fontSize, const int *codepoints, int codepointCount); // Load font from memory buffer, fileType refers to extension: i.e. '.ttf' RLAPI bool IsFontValid(Font font); // Check if a font is valid (font data loaded, WARNING: GPU texture not checked) -RLAPI GlyphInfo *LoadFontData(const unsigned char *fileData, int dataSize, int fontSize, const int *codepoints, int codepointCount, int type); // Load font data for further use +RLAPI GlyphInfo *LoadFontData(const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount, int type); // Load font data for further use RLAPI Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyphCount, int fontSize, int padding, int packMethod); // Generate image font atlas using chars info RLAPI void UnloadFontData(GlyphInfo *glyphs, int glyphCount); // Unload font chars info data (RAM) RLAPI void UnloadFont(Font font); // Unload font from GPU memory (VRAM) diff --git a/src/rtext.c b/src/rtext.c index faec099ee..db143b098 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -147,7 +147,7 @@ static int textLineSpacing = 2; // Text vertical line spacing in static Font LoadBMFont(const char *fileName); // Load a BMFont file (AngelCode font file) #endif #if defined(SUPPORT_FILEFORMAT_BDF) -static GlyphInfo *LoadFontDataBDF(const unsigned char *fileData, int dataSize, const int *codepoints, int codepointCount, int *outFontSize); +static GlyphInfo *LoadFontDataBDF(const unsigned char *fileData, int dataSize, int *codepoints, int codepointCount, int *outFontSize); #endif #if defined(SUPPORT_DEFAULT_FONT) @@ -620,7 +620,7 @@ bool IsFontValid(Font font) // Load font data for further use // NOTE: Requires TTF font memory data and can generate SDF data -GlyphInfo *LoadFontData(const unsigned char *fileData, int dataSize, int fontSize, const int *codepoints, int codepointCount, int type) +GlyphInfo *LoadFontData(const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount, int type) { // NOTE: Using some SDF generation default values, // trades off precision with ability to handle *smaller* sizes @@ -2392,7 +2392,7 @@ static unsigned char HexToInt(char hex) // Load font data for further use // NOTE: Requires BDF font memory data -static GlyphInfo *LoadFontDataBDF(const unsigned char *fileData, int dataSize, const int *codepoints, int codepointCount, int *outFontSize) +static GlyphInfo *LoadFontDataBDF(const unsigned char *fileData, int dataSize, int *codepoints, int codepointCount, int *outFontSize) { #define MAX_BUFFER_SIZE 256 From d7f82aa7aefd21eaaa353e3092a0d9727852523b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 31 Aug 2025 10:11:18 +0000 Subject: [PATCH 325/328] Update raylib_api.* by CI --- tools/parser/output/raylib_api.json | 2 +- tools/parser/output/raylib_api.lua | 2 +- tools/parser/output/raylib_api.txt | 2 +- tools/parser/output/raylib_api.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/parser/output/raylib_api.json b/tools/parser/output/raylib_api.json index 2f1e3eea0..3617d6392 100644 --- a/tools/parser/output/raylib_api.json +++ b/tools/parser/output/raylib_api.json @@ -9129,7 +9129,7 @@ "name": "fontSize" }, { - "type": "const int *", + "type": "int *", "name": "codepoints" }, { diff --git a/tools/parser/output/raylib_api.lua b/tools/parser/output/raylib_api.lua index 5e7dede38..00abc0c77 100644 --- a/tools/parser/output/raylib_api.lua +++ b/tools/parser/output/raylib_api.lua @@ -6593,7 +6593,7 @@ return { {type = "const unsigned char *", name = "fileData"}, {type = "int", name = "dataSize"}, {type = "int", name = "fontSize"}, - {type = "const int *", name = "codepoints"}, + {type = "int *", name = "codepoints"}, {type = "int", name = "codepointCount"}, {type = "int", name = "type"} } diff --git a/tools/parser/output/raylib_api.txt b/tools/parser/output/raylib_api.txt index a8bd72579..12af97c08 100644 --- a/tools/parser/output/raylib_api.txt +++ b/tools/parser/output/raylib_api.txt @@ -3499,7 +3499,7 @@ Function 399: LoadFontData() (6 input parameters) Param[1]: fileData (type: const unsigned char *) Param[2]: dataSize (type: int) Param[3]: fontSize (type: int) - Param[4]: codepoints (type: const int *) + Param[4]: codepoints (type: int *) Param[5]: codepointCount (type: int) Param[6]: type (type: int) Function 400: GenImageFontAtlas() (6 input parameters) diff --git a/tools/parser/output/raylib_api.xml b/tools/parser/output/raylib_api.xml index 22eac0628..0a053abc6 100644 --- a/tools/parser/output/raylib_api.xml +++ b/tools/parser/output/raylib_api.xml @@ -2309,7 +2309,7 @@ - + From ecf032fe4f08cef4157aa805ff6ffe2b032c11c8 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 31 Aug 2025 12:11:48 +0200 Subject: [PATCH 326/328] REVIEW: Avoid warning on `fgets()` return value --- src/rcore.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/rcore.c b/src/rcore.c index 2927b4952..b2ce0c635 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -2999,8 +2999,9 @@ AutomationEventList LoadAutomationEventList(const char *fileName) char buffer[256] = { 0 }; char eventDesc[64] = { 0 }; - fgets(buffer, 256, raeFile); - + char *result = fgets(buffer, 256, raeFile); + if (result != buffer) TRACELOG(LOG_WARNING, "AUTOMATION: [%s] Issue reading line to buffer", fileName); + while (!feof(raeFile)) { switch (buffer[0]) @@ -3016,7 +3017,8 @@ AutomationEventList LoadAutomationEventList(const char *fileName) default: break; } - fgets(buffer, 256, raeFile); + result = fgets(buffer, 256, raeFile); + if (result != buffer) TRACELOG(LOG_WARNING, "AUTOMATION: [%s] Issue reading line to buffer", fileName); } if (counter != list.count) From f61c2c504d56e6d18b05d024490bd4bdd0fb2448 Mon Sep 17 00:00:00 2001 From: Jonathan Marler Date: Sun, 31 Aug 2025 04:13:21 -0600 Subject: [PATCH 327/328] [rcore][win32] Adding native win32 backend (#4869) * win32 backend * [rcore][win32] use SwapBuffers instead of wglSwapLayerBuffers I don't understand OpenGL well enough to know the difference between SwapBuffers and wglSwapLayerBuffers but the former seems to double my FPS (from 2000 to about 4000 in core_vr_simulator). * [rcore][win32] stop lying to the OS about when our window is updated Instead of calling BeginPaint/EndPaint in WM_PAINT which signals to the OS that our window content is updated, now when we encounter the WM_PAINT message instead we return back to the raylib application which will trigger it to render a new frame. We've replaced the call to BeginPaint and EndPaint with a call to ValidateRect in SwapBuffers, which, means we're now correctly telling the OS when our window content is actually up-to-date. Note that this doesn't fix the window content not being updated during a window resize/move beacuse thos have their own message loop which doesn't return early when it's time to paint. * [rcore][win32] fallback to finding functions from opengl32.dll * [rcore][win32] fixes from review/for gcc * [rcore][win32] incorporate style conventions * [rcore][win32] workaround unused function error SetupFramebuffer * [rcore][win32] re-enable sanitize flags check for MSAA_4X * [rcore][win32] more style changes and remove old DPI cases Added some more missing spaces after conditional statements. Also made unsupported MSAA_4X an assert instead of an abort and also removed dpi-aware cases for older OS's. More changes would be needed to support those OS versions, namely, removing the dependency on shcore. * [rcore][win32] fixes for compling with w64devkit without -DUNICODE * Update build.zig * Update build.zig --------- Co-authored-by: Ray --- src/Makefile | 7 + src/platforms/rcore_desktop_win32.c | 2183 +++++++++++++++++++++++++++ src/rcore.c | 4 + 3 files changed, 2194 insertions(+) create mode 100644 src/platforms/rcore_desktop_win32.c diff --git a/src/Makefile b/src/Makefile index 9a06be576..f2bdd811e 100644 --- a/src/Makefile +++ b/src/Makefile @@ -342,6 +342,10 @@ ifeq ($(PLATFORM_OS), LINUX) CFLAGS += -fPIC endif +ifeq ($(PLATFORM_OS),WINDOWS) + CFLAGS += -DUNICODE +endif + ifeq ($(RAYLIB_BUILD_MODE),DEBUG) CFLAGS += -g -D_DEBUG endif @@ -628,6 +632,9 @@ ifeq ($(TARGET_PLATFORM),PLATFORM_DRM) LDLIBS += -latomic endif endif +ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_WIN32) + LDLIBS = -lgdi32 -lwinmm -lopengl32 -lshcore +endif ifeq ($(TARGET_PLATFORM),PLATFORM_ANDROID) LDLIBS = -llog -landroid -lEGL -lGLESv2 -lOpenSLES -lc -lm endif diff --git a/src/platforms/rcore_desktop_win32.c b/src/platforms/rcore_desktop_win32.c new file mode 100644 index 000000000..a79fa692e --- /dev/null +++ b/src/platforms/rcore_desktop_win32.c @@ -0,0 +1,2183 @@ +/********************************************************************************************** +* +* rcore_desktop_win32 - Functions to manage window, graphics device and inputs +* +* PLATFORM: DESKTOP: WIN32 +* - Windows (Win32, Win64) +* +* LIMITATIONS: +* - currently in initial development stage, alot is missing +* - unsure how to support MOUSE_BUTTON_FORWARD/MOUSE_BUTTON_BACK +* +* POSSIBLE IMPROVEMENTS: +* +* ADDITIONAL NOTES: +* +* CONFIGURATION: +* #define RCORE_PLATFORM_CUSTOM_FLAG +* Custom flag for rcore on target platform -not used- +* +* DEPENDENCIES: +* - the win32 API, i.e. windows.h +* +* LICENSE: zlib/libpng +* +* Copyright (c) 2013-2025 Ramon Santamaria (@raysan5) and contributors +* +* 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. +* +**********************************************************************************************/ + +// move windows.h functions to new names to avoid redefining the same functions as raylib +#define CloseWindow CloseWindowWin32 +#define Rectangle RectangleWin32 +#define ShowCursor ShowCursorWin32 +#define LoadImageA LoadImageAWin32 +#define LoadImageW LoadImageWin32 +#define DrawTextA DrawTextAWin32 +#define DrawTextW DrawTextWin32 +#define DrawTextExA DrawTextExAWin32 +#define DrawTextExW DrawTextExWin32 + +#define WIN32_LEAN_AND_MEAN +#include + +#undef CloseWindow +#undef Rectangle +#undef ShowCursor +#undef LoadImage +#undef LoadImageA +#undef LoadImageW +#undef DrawText +#undef DrawTextA +#undef DrawTextW +#undef DrawTextEx +#undef DrawTextExA +#undef DrawTextExW + +#include +#include +#include + +#include +#include + +// -------------------------------------------------------------------------------- +// This part of the file contains pure functions that never access global state. +// This distinction helps keep the backend maintainable as the inputs and outputs +// of every function called in this section can be fully derived from the +// call-site alone. +// -------------------------------------------------------------------------------- + +// Prevent any code in this part of the file from accessing the global CORE state +#define CORE DONT_USE_CORE_HERE + +static size_t AToWLen(const char *a) +{ + int sizeNeeded = MultiByteToWideChar(CP_UTF8, 0, a, -1, NULL, 0); + if (sizeNeeded < 0) + { + TRACELOG(LOG_ERROR, "failed to calculate wide length, result=%d, error=%u", sizeNeeded, GetLastError()); + abort(); + } + + return sizeNeeded; +} +static void AToWCopy(wchar_t *outPtr, size_t outLen, const char *a) +{ + int size = MultiByteToWideChar(CP_UTF8, 0, a, -1, outPtr, outLen); + if (size != outLen) + { + TRACELOG(LOG_ERROR, "expected to convert %zu utf8 chars to wide but converted %zu", outLen, size); + abort(); + } +} +#define A_TO_W_ALLOCA(outWstr, inAnsi) do { \ + size_t len = AToWLen(inAnsi); \ + outWstr = (WCHAR*)alloca(sizeof(WCHAR)*(len + 1)); \ + AToWCopy(outWstr, len, inAnsi); \ + outWstr[len] = 0; \ +} while (0) + +static void LogFail(const char *what, DWORD error) +{ + TRACELOG(LOG_ERROR, "%s failed, error=%lu", what, error); +} +static void LogFailHr(const char *what, HRESULT hr) +{ + TRACELOG(LOG_ERROR, "%s failed, hresult=0x%lx", what, (DWORD)hr); +} + +#define STYLE_FLAGS_RESIZABLE WS_THICKFRAME + +#define STYLE_FLAGS_UNDECORATED_OFF (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX) +#define STYLE_FLAGS_UNDECORATED_ON WS_POPUP + +static bool ResizableFromStyle(DWORD style) +{ + return 0 != (style & STYLE_FLAGS_RESIZABLE); +} +static bool DecoratedFromStyle(DWORD style) +{ + if (style & STYLE_FLAGS_UNDECORATED_ON) + { + if (style & STYLE_FLAGS_UNDECORATED_OFF) + { + TRACELOG(LOG_ERROR, "style 0x%x has both undecorated on/off flags", style); + abort(); + } + + return false; // not decorated + } + + DWORD masked = (style & STYLE_FLAGS_UNDECORATED_OFF); + if (STYLE_FLAGS_UNDECORATED_OFF != masked) + { + TRACELOG(LOG_ERROR, "style 0x%x is missing these flags 0x%x", masked, masked ^ STYLE_FLAGS_UNDECORATED_OFF); + abort(); + } + + return true; // decorated +} +static bool HiddenFromStyle(DWORD style) +{ + return 0 == (style & WS_VISIBLE); +} + +typedef enum { MIZED_NONE, MIZED_MIN, MIZED_MAX } Mized; +Mized MizedFromStyle(DWORD style) +{ + // minimized takes precedence over maximized + if (style & WS_MINIMIZE) return MIZED_MIN; + if (style & WS_MAXIMIZE) return MIZED_MAX; + return MIZED_NONE; +} +Mized MizedFromFlags(unsigned flags) +{ + // minimized takes precedence over maximized + if (flags & FLAG_WINDOW_MINIMIZED) return MIZED_MIN; + if (flags & FLAG_WINDOW_MAXIMIZED) return MIZED_MAX; + return MIZED_NONE; +} + +static DWORD MakeWindowStyle(unsigned flags) +{ + DWORD style = + // we don't need this since we don't have any child windows, but I guess + // it improves efficiency, plus, windows adds this flag automatically anyway + // so it keeps our flags in sync with the OS. + WS_CLIPSIBLINGS + ; + style |= (flags & FLAG_WINDOW_HIDDEN)? 0 : WS_VISIBLE; + style |= (flags & FLAG_WINDOW_RESIZABLE)? STYLE_FLAGS_RESIZABLE : 0; + style |= (flags & FLAG_WINDOW_UNDECORATED)? STYLE_FLAGS_UNDECORATED_ON : STYLE_FLAGS_UNDECORATED_OFF; + + switch (MizedFromFlags(flags)) + { + case MIZED_NONE: break; + case MIZED_MIN: style |= WS_MINIMIZE; break; + case MIZED_MAX: style |= WS_MAXIMIZE; break; + default: abort(); + } + + // sanity checks, maybe remove later + if (ResizableFromStyle(style) != !!(flags & FLAG_WINDOW_RESIZABLE)) abort(); + if (DecoratedFromStyle(style) != !(flags & FLAG_WINDOW_UNDECORATED)) abort(); + if (HiddenFromStyle(style) != !!(flags & FLAG_WINDOW_HIDDEN)) abort(); + if (MizedFromStyle(style) != MizedFromFlags(flags)) abort(); + + return style; +} + +static bool IsMinimized2(HWND hwnd) +{ + bool isIconic = IsIconic(hwnd); + bool styleMinimized = !!(WS_MINIMIZE & GetWindowLongPtrW(hwnd, GWL_STYLE)); + if (isIconic != styleMinimized) + { + TRACELOG(LOG_ERROR, "IsIconic(%d) != WS_MINIMIZED(%d)", isIconic, styleMinimized); + abort(); + } + + return isIconic; +} + +#define STYLE_MASK_ALL 0xffffffff +#define STYLE_MASK_READONLY (WS_MINIMIZE | WS_MAXIMIZE) +#define STYLE_MASK_WRITABLE (~STYLE_MASK_READONLY) + +// Enforces that the actual window/platform state is in sync with raylib's flags +static void CheckFlags( + const char *context, + HWND hwnd, + DWORD flags, + DWORD expectedStyle, + DWORD styleCheckMask +) { + //TRACELOG(LOG_INFO, "Verifying Flags 0x%x Style 0x%x Mask 0x%x", flags, expectedStyle & styleCheckMask, styleCheckMask); + + { + DWORD styleFromFlags = MakeWindowStyle(flags); + if ((styleFromFlags & styleCheckMask) != (expectedStyle & styleCheckMask)) + { + TRACELOG( + LOG_ERROR, + "%s: window flags (0x%x) produced style 0x%x which != expected 0x%x (diff=0x%x, mask=0x%x)", + context, + flags, + styleFromFlags & styleCheckMask, + expectedStyle & styleCheckMask, + (styleFromFlags & styleCheckMask) ^ (expectedStyle & styleCheckMask), + styleCheckMask + ); + abort(); + } + } + + SetLastError(0); + LONG actualStyle = GetWindowLongPtrW(hwnd, GWL_STYLE); + if ((actualStyle & styleCheckMask) != (expectedStyle & styleCheckMask)) + { + TRACELOG( + LOG_ERROR, + "%s: expected style 0x%x but got 0x%x (diff=0x%x, mask=0x%x, lasterror=%lu)", + context, + expectedStyle & styleCheckMask, + actualStyle & styleCheckMask, + (expectedStyle & styleCheckMask) ^ (actualStyle & styleCheckMask), + styleCheckMask, + GetLastError() + ); + abort(); + } + + if (styleCheckMask & WS_MINIMIZE) + { + bool isIconic = IsIconic(hwnd); + bool styleMinimized = !!(WS_MINIMIZE & actualStyle); + if (isIconic != styleMinimized) { + TRACELOG(LOG_ERROR, "IsIconic(%d) != WS_MINIMIZED(%d)", isIconic, styleMinimized); + abort(); + } + } + + if (styleCheckMask & WS_MAXIMIZE) + { + WINDOWPLACEMENT placement; + placement.length = sizeof(placement); + if (!GetWindowPlacement(hwnd, &placement)) { + LogFail("GetWindowPlacement", GetLastError()); + abort(); + } + bool placementMaximized = (placement.showCmd == SW_SHOWMAXIMIZED); + bool styleMaximized = WS_MAXIMIZE & actualStyle; + if (placementMaximized != styleMaximized) + { + TRACELOG( + LOG_ERROR, + "maximized state desync, placement maximized=%d (showCmd=%lu) style maximized=%d", + placementMaximized, + placement.showCmd, + styleMaximized + ); + abort(); + } + } +} + +static float PtFromPx(float dpiScale, bool highdpiEnabled, int pt) +{ + return highdpiEnabled? (((float)pt)/dpiScale) : pt; +} +static int PxFromPt(float dpiScale, bool highdpiEnabled, float pt) +{ + return highdpiEnabled? roundf(pt*dpiScale) : roundf(pt); +} +static SIZE PxFromPt2(float dpiScale, bool highdpiEnabled, Vector2 screenSize) +{ + return (SIZE){ + PxFromPt(dpiScale, highdpiEnabled, screenSize.x), + PxFromPt(dpiScale, highdpiEnabled, screenSize.y), + }; +} + +static SIZE GetClientSize(HWND hwnd) +{ + RECT rect; + if (0 == GetClientRect(hwnd, &rect)) + { + LogFail("GetClientRect", GetLastError()); + abort(); + } + + if (rect.left != 0) abort(); // never happens AFAIK + if (rect.top != 0) abort(); // never happens AFAIK + return (SIZE){ rect.right, rect.bottom }; +} + +static UINT GetWindowDpi(HWND hwnd) +{ + UINT dpi = GetDpiForWindow(hwnd); + if (dpi == 0) + { + LogFail("GetWindowDpi", GetLastError()); + abort(); + } + + return dpi; +} + +static float ScaleFromDpi(UINT dpi) +{ + return ((float)dpi)/96.0f; +} + +#define WINDOW_STYLE_EX 0 + +static SIZE CalcWindowSize(UINT dpi, SIZE clientSize, DWORD style) +{ + RECT rect = { 0, 0, clientSize.cx, clientSize.cy }; + if (!AdjustWindowRectExForDpi(&rect, style, 0, WINDOW_STYLE_EX, dpi)) + { + LogFail("AdjustWindowRect", GetLastError()); + abort(); + } + + return (SIZE){ rect.right - rect.left, rect.bottom - rect.top }; +} + +typedef enum { + UPDATE_WINDOW_FIRST, + UPDATE_WINDOW_NORMAL, +} UpdateWindowKind; + +// returns true if the window size was updated, false otherwise +static bool UpdateWindowSize( + UpdateWindowKind kind, + HWND hwnd, + Vector2 appScreenSize, + unsigned flags +) { + if (flags & FLAG_WINDOW_MINIMIZED) return false; + + if (flags & FLAG_WINDOW_MAXIMIZED) + { + CheckFlags("UpdateWindowSize(maximized)", hwnd, flags, MakeWindowStyle(flags), STYLE_MASK_ALL); + return false; + } + + if (flags & FLAG_BORDERLESS_WINDOWED_MODE) + { + HMONITOR monitor = MonitorFromWindow(hwnd, MONITOR_DEFAULTTOPRIMARY); + MONITORINFO info; + info.cbSize = sizeof(info); + if (!GetMonitorInfoW(monitor, &info)) + { + LogFail("GetMonitorInfo", GetLastError()); + abort(); + } + + RECT windowRect; + if (!GetWindowRect(hwnd, &windowRect)) + { + LogFail("GetWindowRect", GetLastError()); + abort(); + } + + if ( + (windowRect.left == info.rcMonitor.left) && + (windowRect.top == info.rcMonitor.top) && + ((windowRect.right - windowRect.left) == (info.rcMonitor.right - info.rcMonitor.left)) && + ((windowRect.bottom - windowRect.top) == (info.rcMonitor.bottom - info.rcMonitor.top)) + ) return false; + + if (!SetWindowPos( + hwnd, + HWND_TOP, + info.rcMonitor.left, info.rcMonitor.top, + info.rcMonitor.right - info.rcMonitor.left, + info.rcMonitor.bottom - info.rcMonitor.top, + SWP_NOOWNERZORDER + )) { + LogFail("SetWindowPos", GetLastError()); + abort(); + } + + return true; + } + + UINT dpi = GetWindowDpi(hwnd); + float dpiScale = ScaleFromDpi(dpi); + bool dpiScaling = flags & FLAG_WINDOW_HIGHDPI; + SIZE desired = PxFromPt2(dpiScale, dpiScaling, appScreenSize); + SIZE actual = GetClientSize(hwnd); + if (actual.cx == desired.cx || actual.cy == desired.cy) + return false; + + TRACELOG( + LOG_INFO, + "restoring client size from %dx%d to %dx%d (dpi=%lu dpiScaling=%d app=%fx%f)", + actual.cx, actual.cy, + desired.cx, desired.cy, + dpi, dpiScaling, + appScreenSize.x, appScreenSize.y + ); + SIZE windowSize = CalcWindowSize(dpi, desired, MakeWindowStyle(flags)); + POINT windowPos = (POINT){ 0, 0 }; + UINT swpFlags = SWP_NOZORDER | SWP_FRAMECHANGED; + if (kind == UPDATE_WINDOW_FIRST) + { + HMONITOR monitor = MonitorFromWindow(hwnd, MONITOR_DEFAULTTOPRIMARY); + if (!monitor) + { + LogFail("MonitorFromWindow", GetLastError()); + abort(); + } + + MONITORINFO info; + info.cbSize = sizeof(info); + if (!GetMonitorInfoW(monitor, &info)) + { + LogFail("GetMonitorInfo", GetLastError()); + abort(); + } + + LONG monitorWidth = info.rcMonitor.right - info.rcMonitor.left; + LONG monitorHeight = info.rcMonitor.bottom - info.rcMonitor.top; + windowPos = (POINT){ + MAX(0, (monitorWidth - windowSize.cx)/2), + MAX(0, (monitorHeight - windowSize.cy)/2), + }; + } else { + swpFlags |= SWP_NOMOVE; + } + + if (!SetWindowPos( + hwnd, NULL, + windowPos.x, windowPos.y, + windowSize.cx, windowSize.cy, + swpFlags + )) { + LogFail("SetWindowPos", GetLastError()); + abort(); + } + + return true; +} + +#define CLASS_NAME L"RaylibWindow" + +static void CreateWindowAlloca(const char *title, DWORD style) +{ + WCHAR *titleWide; + A_TO_W_ALLOCA(titleWide, title); + CreateWindowExW( + WINDOW_STYLE_EX, + CLASS_NAME, + titleWide, + style, + 0, 0, + 0, 0, + NULL, + NULL, + GetModuleHandleW(NULL), + NULL + ); +} + +static BOOL IsWindows10Version1703OrGreaterWin32(void) +{ + HMODULE ntdll = LoadLibraryW(L"ntdll.dll"); + DWORD (*Verify)( + RTL_OSVERSIONINFOEXW*, ULONG, ULONGLONG + ) = (DWORD (*)( + RTL_OSVERSIONINFOEXW*, ULONG, ULONGLONG + ))GetProcAddress(ntdll, "RtlVerifyVersionInfo"); + if (!Verify) + { + LogFail("GetProcAddress 'RtlVerifyVersionInfo'", GetLastError()); + return 0; + } + + RTL_OSVERSIONINFOEXW osvi = { 0 }; + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); + osvi.dwMajorVersion = 10; + osvi.dwMinorVersion = 0; + osvi.dwBuildNumber = 15063; // Build 15063 corresponds to Windows 10 version 1703 (Creators Update) + DWORDLONG cond = 0; + VER_SET_CONDITION(cond, VER_MAJORVERSION, VER_GREATER_EQUAL); + VER_SET_CONDITION(cond, VER_MINORVERSION, VER_GREATER_EQUAL); + VER_SET_CONDITION(cond, VER_BUILDNUMBER, VER_GREATER_EQUAL); + return 0 == (*Verify)(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_BUILDNUMBER, cond); +} + +static void *FindProc(const char *name) +{ + { + void *proc = wglGetProcAddress(name); + if (proc) return proc; + } + + static HMODULE opengl = NULL; + if (!opengl) + { + opengl = LoadLibraryW(L"opengl32"); + } + if (opengl) + { + void *proc = GetProcAddress(opengl, name); + if (proc) return proc; + } + + return NULL; +} +static void *WglGetProcAddress(const char *name) +{ + void *result = FindProc(name); + if (result) + { + //TRACELOG(LOG_DEBUG, "GetProcAddress '%s' > %p", name, result); + } + else + { + TRACELOG(LOG_ERROR, "GetProcAddress '%s' > %p failed, error=%u", name, result, GetLastError()); + } + + return result; +} + +static KeyboardKey KeyFromWparam(WPARAM wparam) +{ + switch (wparam) + { + /* case VK_LBUTTON: return KEY_; */ + /* case VK_RBUTTON: return KEY_; */ + /* case VK_CANCEL: return KEY_; */ + /* case VK_MBUTTON: return KEY_; */ + /* case VK_XBUTTON1: return KEY_; */ + /* case VK_XBUTTON2: return KEY_; */ + /* case VK_BACK: return KEY_; */ + /* case VK_TAB: return KEY_; */ + /* case VK_CLEAR: return KEY_; */ + case VK_RETURN: return KEY_ENTER; + /* case VK_SHIFT: return KEY_; */ + /* case VK_CONTROL: return KEY_; */ + /* case VK_MENU: return KEY_; */ + /* case VK_PAUSE: return KEY_; */ + /* case VK_CAPITAL: return KEY_; */ + /* case VK_KANA: return KEY_; */ + /* case VK_HANGUL: return KEY_; */ + /* case VK_IME_ON: return KEY_; */ + /* case VK_JUNJA: return KEY_; */ + /* case VK_FINAL: return KEY_; */ + /* case VK_HANJA: return KEY_; */ + /* case VK_KANJI: return KEY_; */ + /* case VK_IME_OFF: return KEY_; */ + case VK_ESCAPE: return KEY_ESCAPE; + /* case VK_CONVERT: return KEY_; */ + /* case VK_NONCONVERT: return KEY_; */ + /* case VK_ACCEPT: return KEY_; */ + /* case VK_MODECHANGE: return KEY_; */ + case VK_SPACE: return KEY_SPACE; + /* case VK_PRIOR: return KEY_; */ + /* case VK_NEXT: return KEY_; */ + /* case VK_END: return KEY_; */ + /* case VK_HOME: return KEY_; */ + case VK_LEFT: return KEY_LEFT; + case VK_UP: return KEY_UP; + case VK_RIGHT: return KEY_RIGHT; + case VK_DOWN: return KEY_DOWN; + /* case VK_SELECT: return KEY_; */ + /* case VK_PRINT: return KEY_; */ + /* case VK_EXECUTE: return KEY_; */ + /* case VK_SNAPSHOT: return KEY_; */ + /* case VK_INSERT: return KEY_; */ + /* case VK_DELETE: return KEY_; */ + /* case VK_HELP: return KEY_; */ + case '0': return KEY_ZERO; + case '1': return KEY_ONE; + case '2': return KEY_TWO; + case '3': return KEY_THREE; + case '4': return KEY_FOUR; + case '5': return KEY_FIVE; + case '6': return KEY_SIX; + case '7': return KEY_SEVEN; + case '8': return KEY_EIGHT; + case '9': return KEY_NINE; + /* case 0x3A-40: return KEY_; */ + case 'A': return KEY_A; + case 'B': return KEY_B; + case 'C': return KEY_C; + case 'D': return KEY_D; + case 'E': return KEY_E; + case 'F': return KEY_F; + case 'G': return KEY_G; + case 'H': return KEY_H; + case 'I': return KEY_I; + case 'J': return KEY_J; + case 'K': return KEY_K; + case 'L': return KEY_L; + case 'M': return KEY_M; + case 'N': return KEY_N; + case 'O': return KEY_O; + case 'P': return KEY_P; + case 'Q': return KEY_Q; + case 'R': return KEY_R; + case 'S': return KEY_S; + case 'T': return KEY_T; + case 'U': return KEY_U; + case 'V': return KEY_V; + case 'W': return KEY_W; + case 'X': return KEY_X; + case 'Y': return KEY_Y; + case 'Z': return KEY_Z; + /* case VK_LWIN: return KEY_; */ + /* case VK_RWIN: return KEY_; */ + /* case VK_APPS: return KEY_; */ + /* case VK_SLEEP: return KEY_; */ + /* case VK_NUMPAD0: return KEY_; */ + /* case VK_NUMPAD1: return KEY_; */ + /* case VK_NUMPAD2: return KEY_; */ + /* case VK_NUMPAD3: return KEY_; */ + /* case VK_NUMPAD4: return KEY_; */ + /* case VK_NUMPAD5: return KEY_; */ + /* case VK_NUMPAD6: return KEY_; */ + /* case VK_NUMPAD7: return KEY_; */ + /* case VK_NUMPAD8: return KEY_; */ + /* case VK_NUMPAD9: return KEY_; */ + /* case VK_MULTIPLY: return KEY_; */ + /* case VK_ADD: return KEY_; */ + /* case VK_SEPARATOR: return KEY_; */ + /* case VK_SUBTRACT: return KEY_; */ + /* case VK_DECIMAL: return KEY_; */ + /* case VK_DIVIDE: return KEY_; */ + /* case VK_F1: return KEY_; */ + /* case VK_F2: return KEY_; */ + /* case VK_F3: return KEY_; */ + /* case VK_F4: return KEY_; */ + /* case VK_F5: return KEY_; */ + /* case VK_F6: return KEY_; */ + /* case VK_F7: return KEY_; */ + /* case VK_F8: return KEY_; */ + /* case VK_F9: return KEY_; */ + /* case VK_F10: return KEY_; */ + /* case VK_F11: return KEY_; */ + /* case VK_F12: return KEY_; */ + /* case VK_F13: return KEY_; */ + /* case VK_F14: return KEY_; */ + /* case VK_F15: return KEY_; */ + /* case VK_F16: return KEY_; */ + /* case VK_F17: return KEY_; */ + /* case VK_F18: return KEY_; */ + /* case VK_F19: return KEY_; */ + /* case VK_F20: return KEY_; */ + /* case VK_F21: return KEY_; */ + /* case VK_F22: return KEY_; */ + /* case VK_F23: return KEY_; */ + /* case VK_F24: return KEY_; */ + /* case VK_NUMLOCK: return KEY_; */ + /* case VK_SCROLL: return KEY_; */ + /* case VK_LSHIFT: return KEY_; */ + /* case VK_RSHIFT: return KEY_; */ + /* case VK_LCONTROL: return KEY_; */ + /* case VK_RCONTROL: return KEY_; */ + /* case VK_LMENU: return KEY_; */ + /* case VK_RMENU: return KEY_; */ + /* case VK_BROWSER_BACK: return KEY_; */ + /* case VK_BROWSER_FORWARD: return KEY_; */ + /* case VK_BROWSER_REFRESH: return KEY_; */ + /* case VK_BROWSER_STOP: return KEY_; */ + /* case VK_BROWSER_SEARCH: return KEY_; */ + /* case VK_BROWSER_FAVORITES: return KEY_; */ + /* case VK_BROWSER_HOME: return KEY_; */ + /* case VK_VOLUME_MUTE: return KEY_; */ + /* case VK_VOLUME_DOWN: return KEY_; */ + /* case VK_VOLUME_UP: return KEY_; */ + /* case VK_MEDIA_NEXT_TRACK: return KEY_; */ + /* case VK_MEDIA_PREV_TRACK: return KEY_; */ + /* case VK_MEDIA_STOP: return KEY_; */ + /* case VK_MEDIA_PLAY_PAUSE: return KEY_; */ + /* case VK_LAUNCH_MAIL: return KEY_; */ + /* case VK_LAUNCH_MEDIA_SELECT: return KEY_; */ + /* case VK_LAUNCH_APP1: return KEY_; */ + /* case VK_LAUNCH_APP2: return KEY_; */ + /* case VK_OEM_1: return KEY_; */ + /* case VK_OEM_PLUS: return KEY_; */ + /* case VK_OEM_COMMA: return KEY_; */ + /* case VK_OEM_MINUS: return KEY_; */ + /* case VK_OEM_PERIOD: return KEY_; */ + /* case VK_OEM_2: return KEY_; */ + /* case VK_OEM_3: return KEY_; */ + /* case VK_OEM_4: return KEY_; */ + /* case VK_OEM_5: return KEY_; */ + /* case VK_OEM_6: return KEY_; */ + /* case VK_OEM_7: return KEY_; */ + /* case VK_OEM_8: return KEY_; */ + /* case VK_OEM_102: return KEY_; */ + /* case VK_PROCESSKEY: return KEY_; */ + /* case VK_PACKET: return KEY_; */ + /* case VK_ATTN: return KEY_; */ + /* case VK_CRSEL: return KEY_; */ + /* case VK_EXSEL: return KEY_; */ + /* case VK_EREOF: return KEY_; */ + /* case VK_PLAY: return KEY_; */ + /* case VK_ZOOM: return KEY_; */ + /* case VK_NONAME: return KEY_; */ + /* case VK_PA1: return KEY_; */ + /* case VK_OEM_CLEAR: return KEY_; */ + default: return KEY_NULL; + } +} + +static LPCWSTR GetCursorName(int cursor) +{ + switch (cursor) + { + case MOUSE_CURSOR_DEFAULT : return (LPCWSTR)IDC_ARROW; + case MOUSE_CURSOR_ARROW : return (LPCWSTR)IDC_ARROW; + case MOUSE_CURSOR_IBEAM : return (LPCWSTR)IDC_IBEAM; + case MOUSE_CURSOR_CROSSHAIR : return (LPCWSTR)IDC_CROSS; + case MOUSE_CURSOR_POINTING_HAND: return (LPCWSTR)IDC_HAND; + case MOUSE_CURSOR_RESIZE_EW : return (LPCWSTR)IDC_SIZEWE; + case MOUSE_CURSOR_RESIZE_NS : return (LPCWSTR)IDC_SIZENS; + case MOUSE_CURSOR_RESIZE_NWSE : return (LPCWSTR)IDC_SIZENWSE; + case MOUSE_CURSOR_RESIZE_NESW : return (LPCWSTR)IDC_SIZENESW; + case MOUSE_CURSOR_RESIZE_ALL : return (LPCWSTR)IDC_SIZEALL; + case MOUSE_CURSOR_NOT_ALLOWED : return (LPCWSTR)IDC_NO; + default: abort(); + } +} + + +static BOOL CALLBACK CountMonitorsProc(HMONITOR handle, HDC _, LPRECT rect, LPARAM lparam) +{ + int *count = (int*)lparam; + *count += 1; + // always return TRUE to continue the loop, otherwise, the caller + // can't distinguish between stopping the loop and an error + return TRUE; +} + +typedef struct { + HMONITOR needle; + int index; + int matchIndex; + RECT rect; +} FindMonitorContext; + +static BOOL CALLBACK FindMonitorProc(HMONITOR handle, HDC _, LPRECT rect, LPARAM lparam) +{ + FindMonitorContext *c = (FindMonitorContext*)lparam; + if (handle == c->needle) + { + c->matchIndex = c->index; + c->rect = *rect; + } + + c->index += 1; + // always return TRUE to continue the loop, otherwise, the caller + // can't distinguish between stopping the loop and an error + return TRUE; +} + +typedef struct { + DWORD set; + DWORD clear; +} FlagsOp; + +static void GetStyleChangeFlagOps( + DWORD coreWindowFlags, + STYLESTRUCT *ss, + FlagsOp *deferredFlags +) { + { + bool resizable = (coreWindowFlags & FLAG_WINDOW_RESIZABLE); + bool resizableOld = ResizableFromStyle(ss->styleOld); + bool resizableNew = ResizableFromStyle(ss->styleNew); + if (resizable != resizableOld) + { + TRACELOG(LOG_ERROR, "expected resizable %u but got %u", resizable, resizableOld); + abort(); + } + + if (resizableOld != resizableNew) + { + //TRACELOG(LOG_INFO, "resizable = %u", resizableNew); + if (resizableNew) + { + deferredFlags->set |= FLAG_WINDOW_RESIZABLE; + } + else + { + deferredFlags->clear |= FLAG_WINDOW_RESIZABLE; + } + } + } + + { + bool decorated = (0 == (coreWindowFlags & FLAG_WINDOW_UNDECORATED)); + bool decoratedOld = DecoratedFromStyle(ss->styleOld); + bool decoratedNew = DecoratedFromStyle(ss->styleNew); + if (decorated != decoratedOld) + { + TRACELOG(LOG_ERROR, "expected decorated %u but got %u", decorated, decoratedOld); + abort(); + } + + if (decoratedOld != decoratedNew) + { + //TRACELOG(LOG_INFO, "decorated = %u", decoratedNew); + if (decoratedNew) + { + deferredFlags->clear |= FLAG_WINDOW_UNDECORATED; + } + else + { + deferredFlags->set |= FLAG_WINDOW_UNDECORATED; + } + } + } + + { + bool hidden = (coreWindowFlags & FLAG_WINDOW_HIDDEN); + bool hiddenOld = HiddenFromStyle(ss->styleOld); + bool hiddenNew = HiddenFromStyle(ss->styleNew); + if (hidden != hiddenOld) + { + TRACELOG(LOG_ERROR, "expected hidden %u but got %u", hidden, hiddenOld); + abort(); + } + + if (hiddenOld != hiddenNew) + { + TRACELOG(LOG_INFO, "hidden = %u", hiddenNew); + if (hiddenNew) + { + deferredFlags->set |= FLAG_WINDOW_HIDDEN; + } + else + { + deferredFlags->clear |= FLAG_WINDOW_HIDDEN; + } + } + } +} + +// call when the window is rezised, returns true if the new window size +// should update the desired app size +static bool AdoptWindowResize(unsigned flags) +{ + if (flags & FLAG_WINDOW_MINIMIZED) return false; + if (flags & FLAG_WINDOW_MAXIMIZED) return false; + if (flags & FLAG_FULLSCREEN_MODE) return false; + if (flags & FLAG_BORDERLESS_WINDOWED_MODE) return false; + if (!(flags & FLAG_WINDOW_RESIZABLE)) return false; + return true; +} + +// -------------------------------------------------------------------------------- +// Here's the end of the "pure function section", the rest of the file can access +// global state. +// -------------------------------------------------------------------------------- + +// unlock the ability to use CORE in the rest of the file +#undef CORE + +// The last screen size requested by the app, the backend must keep the client area +// this size (after DPI scaling is applied) when the window isn't fullscreen/maximized/minimized. +static Vector2 globalAppScreenSize = (Vector2){0, 0}; +static unsigned globalDesiredFlags = 0; +static HWND globalHwnd = NULL; +static HDC globalHdc = NULL; +static HGLRC globalGlContext = NULL; +static LARGE_INTEGER globalTimerFrequency; +static bool globalCursorEnabled = true; + +static void HandleKey(WPARAM wparam, LPARAM lparam, char state) +{ + KeyboardKey key = KeyFromWparam(wparam); + // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + /* BYTE scancode = lparam >> 16; */ + /* TRACELOG(LOG_INFO, "KEY key=%d vk=%lu scan=%u = %u", key, wparam, scancode, state); */ + if (key != KEY_NULL) + { + /* TRACELOG(LOG_INFO, "KEY[%d] = %d (old=%d)\n", key, state, CORE.Input.Keyboard.currentKeyState[key]); */ + CORE.Input.Keyboard.currentKeyState[key] = state; + if (key == KEY_ESCAPE && state == 1) + { + CORE.Window.shouldClose = 1; + } + } + else + { + TRACELOG(LOG_WARNING, "unknown (or currently unhandled) virtual keycode %d (0x%x)", wparam, wparam); + } + + // TODO: add it to the queue as well? +} +static void HandleMouseButton(int button, char state) +{ + CORE.Input.Mouse.currentButtonState[button] = state; + CORE.Input.Touch.currentTouchState[button] = state; +} + +static void HandleRawInput(LPARAM lparam) +{ + RAWINPUT input; + + { + UINT inputSize = sizeof(input); + UINT size = GetRawInputData((HRAWINPUT)lparam, RID_INPUT, &input, &inputSize, sizeof(RAWINPUTHEADER)); + if (size == (UINT)-1) { + LogFail("GetRawInputData", GetLastError()); + abort(); + } + if (size != inputSize) abort(); // bug? + } + + if (input.header.dwType != RIM_TYPEMOUSE) + { + TRACELOG(LOG_ERROR, "Unexpected WM_INPUT type %lu", input.header.dwType); + abort(); + } + + if (input.data.mouse.usFlags & MOUSE_MOVE_ABSOLUTE) + { + TRACELOG(LOG_ERROR, "TODO: handle absolute mouse inputs!"); + abort(); + } + + if (input.data.mouse.usFlags & MOUSE_VIRTUAL_DESKTOP) + { + TRACELOG(LOG_ERROR, "TODO: handle virtual desktop mouse inputs!"); + abort(); + } + + // bit of a trick, we keep the mouse position at 0,0 and instead move + // the previous position so we can still get a proper mouse delta + CORE.Input.Mouse.previousPosition.x -= input.data.mouse.lLastX; + CORE.Input.Mouse.previousPosition.y -= input.data.mouse.lLastY; + if (CORE.Input.Mouse.currentPosition.x != 0) abort(); + if (CORE.Input.Mouse.currentPosition.y != 0) abort(); +} + +static void HandleWindowResize(HWND hwnd, Vector2 *appScreenSizeRef) +{ + if (CORE.Window.flags & FLAG_WINDOW_MINIMIZED) + return; + + SIZE clientSize = GetClientSize(hwnd); + + // TODO: not sure if this function is doing what we need, leaving this disabled + // call to workaround unused function error + if (0) SetupFramebuffer(0, 0); + + TRACELOG(LOG_DEBUG, "NewClientSize %lux%lu", clientSize.cx, clientSize.cy); + /* CORE.Window.currentFbo.width = clientSize.cx; */ + /* CORE.Window.currentFbo.height = clientSize.cy; */ + /* glViewport(0, 0, clientSize.cx, clientSize.cy); */ + SetupViewport(clientSize.cx, clientSize.cy); + CORE.Window.resizedLastFrame = true; + float dpiScale = ScaleFromDpi(GetWindowDpi(hwnd)); + bool highdpi = !!(CORE.Window.flags & FLAG_WINDOW_HIGHDPI); + Vector2 screenSize = (Vector2){ + PtFromPx(dpiScale, highdpi, clientSize.cx), + PtFromPx(dpiScale, highdpi, clientSize.cy), + }; + CORE.Window.screen.width = roundf(screenSize.x); + CORE.Window.screen.height = roundf(screenSize.y); + if (AdoptWindowResize(CORE.Window.flags)) + { + TRACELOG( + LOG_DEBUG, + "updating app size to %fx%f from window resize", + screenSize.x, screenSize.y + ); + *appScreenSizeRef = screenSize; + } + + CORE.Window.screenScale = MatrixScale( + (float)CORE.Window.render.width/CORE.Window.screen.width, + (float)CORE.Window.render.height/CORE.Window.screen.height, + 1.0f + ); +} + +static void UpdateWindowStyle(HWND hwnd, unsigned desiredFlags) +{ + { + DWORD current = STYLE_MASK_WRITABLE & MakeWindowStyle(CORE.Window.flags); + DWORD desired = STYLE_MASK_WRITABLE & MakeWindowStyle(desiredFlags); + if (current != desired) + { + SetLastError(0); + DWORD previous = STYLE_MASK_WRITABLE & SetWindowLongPtrW(hwnd, GWL_STYLE, desired); + if (previous != current) + { + TRACELOG( + LOG_ERROR, + "SetWindowLong returned writable flags 0x%x but expected 0x%x (diff=0x%x, error=%lu)", + previous, + current, + previous ^ current, + GetLastError() + ); + abort(); + } + + CheckFlags("UpdateWindowStyle", hwnd, desiredFlags, desired, STYLE_MASK_WRITABLE); + } + } + + Mized currentMized = MizedFromStyle(MakeWindowStyle(CORE.Window.flags)); + Mized desiredMized = MizedFromStyle(MakeWindowStyle(desiredFlags)); + if (currentMized != desiredMized) + { + switch (desiredMized) + { + case MIZED_NONE: ShowWindow(hwnd, SW_RESTORE); break; + case MIZED_MIN: ShowWindow(hwnd, SW_MINIMIZE); break; + case MIZED_MAX: ShowWindow(hwnd, SW_MAXIMIZE); break; + } + } +} + +typedef enum { + SANITIZE_FLAGS_FIRST, + SANITIZE_FLAGS_NORMAL, +} SanitizeFlagsKind; + +static unsigned SanitizeFlags(SanitizeFlagsKind kind, unsigned flags) +{ + if ((flags & FLAG_WINDOW_MAXIMIZED) && (flags & FLAG_BORDERLESS_WINDOWED_MODE)) + { + TRACELOG(LOG_INFO, "borderless windows mode is overriding maximized"); + flags &= ~FLAG_WINDOW_MAXIMIZED; + } + + switch (kind) + { + case SANITIZE_FLAGS_FIRST: break; + case SANITIZE_FLAGS_NORMAL: + if ((flags & FLAG_MSAA_4X_HINT) && (!(CORE.Window.flags & FLAG_MSAA_4X_HINT))) + { + TRACELOG(LOG_WARNING, "WINDOW: MSAA can only be configured before window initialization"); + flags &= ~FLAG_MSAA_4X_HINT; + } + break; + } + + return flags; +} + +#define FLAG_MASK_OPTIONAL (FLAG_VSYNC_HINT) +#define FLAG_MASK_REQUIRED ~(FLAG_MASK_OPTIONAL) + +// flags that have no operations to perform during an update +#define FLAG_MASK_NO_UPDATE (FLAG_WINDOW_HIGHDPI | FLAG_MSAA_4X_HINT) + + +// All window state changes from raylib flags go through this function. It performs +// whatever operations are needed to update the window state to match the desired flags. +// In most cases this function should not update CORE.Window.flags directly, instead, +// the window itself should update CORE.Window.flags in response to actual state changes. +// This means that CORE.Window.flags should always represent the actual state of the +// window. This function will continue to perform these update operations so long as +// the state continues to change. +// +// This design takes care of many odd corner cases. For example, if you want to restore +// a window that was previously maximized AND minimized and you want to remove both these +// flags, you actually need to call ShowWindow with SW_RESTORE twice. Another example is +// if you have a maximized window, if the undecorated flag is modified then we'd need to +// update the window style, but updating the style would mean the window size would change +// causing the window to lose its Maximized state which would mean we'd need to update the +// window size and then update the window style a second time to restore that maximized +// state. This implementation is able to handle any/all of these special situations with a +// retry loop that continues until we either reach the desired state or the state stops +// changing. +static void UpdateFlags(HWND hwnd, unsigned desiredFlags, Vector2 appScreenSize) +{ + // flags that just apply immediately without needing any operations + CORE.Window.flags |= (desiredFlags & FLAG_MASK_NO_UPDATE); + + { + int vsync = (CORE.Window.flags & FLAG_VSYNC_HINT)? 1 : 0; + PFNWGLSWAPINTERVALEXTPROC f = (PFNWGLSWAPINTERVALEXTPROC)wglGetProcAddress("wglSwapIntervalEXT"); + if (f) + { + (*f)(vsync); + if (vsync) + { + CORE.Window.flags |= FLAG_VSYNC_HINT; + } + else + { + CORE.Window.flags &= ~FLAG_VSYNC_HINT; + } + } + } + + DWORD previousStyle; + for (unsigned attempt = 1; ; attempt++) + { + CheckFlags("UpdateFlags", hwnd, CORE.Window.flags, MakeWindowStyle(CORE.Window.flags), STYLE_MASK_ALL); + + bool windowSizeUpdated = false; + if (MakeWindowStyle(CORE.Window.flags) == MakeWindowStyle(desiredFlags)) + { + windowSizeUpdated = UpdateWindowSize(UPDATE_WINDOW_NORMAL, hwnd, appScreenSize, desiredFlags); + if ((FLAG_MASK_REQUIRED & desiredFlags) == (FLAG_MASK_REQUIRED & CORE.Window.flags)) + break; + } + + if ( + (attempt > 1) && + (previousStyle == MakeWindowStyle(CORE.Window.flags)) && + !windowSizeUpdated + ) { + TRACELOG( + LOG_ERROR, + // TODO: print more information + "UpdateFlags failed after %u attempt(s) wanted 0x%x but is 0x%x (diff=0x%x)", + attempt, + desiredFlags, + CORE.Window.flags, + desiredFlags ^ CORE.Window.flags + ); + abort(); + } + + previousStyle = MakeWindowStyle(CORE.Window.flags); + UpdateWindowStyle(hwnd, desiredFlags); + } +} + +bool WindowShouldClose(void) +{ + return CORE.Window.shouldClose; +} + +void ToggleFullscreen(void) +{ + TRACELOG(LOG_WARNING, "ToggleFullscreen not implemented"); + assert(0); // crash debug builds only +} + +void ToggleBorderlessWindowed(void) +{ + if (CORE.Window.flags & FLAG_BORDERLESS_WINDOWED_MODE) + { + ClearWindowState(FLAG_BORDERLESS_WINDOWED_MODE); + } + else + { + SetWindowState(FLAG_BORDERLESS_WINDOWED_MODE); + } +} + +void MaximizeWindow(void) +{ + SetWindowState(FLAG_WINDOW_MAXIMIZED); +} + +void MinimizeWindow(void) +{ + SetWindowState(FLAG_WINDOW_MINIMIZED); +} + +// Restore window from being minimized/maximized +void RestoreWindow(void) +{ + if ((CORE.Window.flags & FLAG_WINDOW_MAXIMIZED) && + (CORE.Window.flags & FLAG_WINDOW_MINIMIZED) + ) { + ClearWindowState(FLAG_WINDOW_MINIMIZED); + } + else + { + ClearWindowState(FLAG_WINDOW_MINIMIZED|FLAG_WINDOW_MAXIMIZED); + } +} + +// Set window configuration state using flags +void SetWindowState(unsigned int flags) +{ + globalDesiredFlags = SanitizeFlags(SANITIZE_FLAGS_NORMAL, CORE.Window.flags | flags); + UpdateFlags(globalHwnd, globalDesiredFlags, globalAppScreenSize); +} + +// Clear window configuration state flags +void ClearWindowState(unsigned int flags) +{ + globalDesiredFlags = SanitizeFlags(SANITIZE_FLAGS_NORMAL, CORE.Window.flags & ~flags); + UpdateFlags(globalHwnd, globalDesiredFlags, globalAppScreenSize); +} + +// Set icon for window +void SetWindowIcon(Image image) +{ + TRACELOG(LOG_WARNING, "SetWindowIcon not implemented"); + assert(0); // crash debug builds only +} + +// Set icon for window +void SetWindowIcons(Image *images, int count) +{ + TRACELOG(LOG_WARNING, "SetWindowIcons not implemented"); + assert(0); // crash debug builds only +} + +void SetWindowTitle(const char *title) +{ + CORE.Window.title = title; + WCHAR *titlew; + A_TO_W_ALLOCA(titlew, CORE.Window.title); + if (!SetWindowTextW(globalHwnd, titlew)) + { + LogFail("SetWindowText", GetLastError()); + abort(); + } +} + +// Set window position on screen (windowed mode) +void SetWindowPosition(int x, int y) +{ + TRACELOG(LOG_WARNING, "SetWindowPosition not implemented"); + assert(0); // crash debug builds only +} + +// Set monitor for the current window +void SetWindowMonitor(int monitor) +{ + TRACELOG(LOG_WARNING, "SetWindowMonitor not implemented"); + assert(0); // crash debug builds only +} + +// Set window minimum dimensions (FLAG_WINDOW_RESIZABLE) +void SetWindowMinSize(int width, int height) +{ + TRACELOG(LOG_WARNING, "SetWindowMinSize not implemented"); + assert(0); // crash debug builds only + CORE.Window.screenMin.width = width; + CORE.Window.screenMin.height = height; +} + +// Set window maximum dimensions (FLAG_WINDOW_RESIZABLE) +void SetWindowMaxSize(int width, int height) +{ + TRACELOG(LOG_WARNING, "SetWindowMaxSize not implemented"); + assert(0); // crash debug builds only + CORE.Window.screenMax.width = width; + CORE.Window.screenMax.height = height; +} + +// Set window dimensions +void SetWindowSize(int width, int height) +{ + TRACELOG(LOG_WARNING, "SetWindowSize not implemented"); + assert(0); // crash debug builds only +} + +// Set window opacity, value opacity is between 0.0 and 1.0 +void SetWindowOpacity(float opacity) +{ + TRACELOG(LOG_WARNING, "SetWindowOpacity not implemented"); + assert(0); // crash debug builds only +} + +void SetWindowFocused(void) +{ + TRACELOG(LOG_WARNING, "SetWindowFocused not implemented"); + assert(0); // crash debug builds only +} + +// Get native window handle +void *GetWindowHandle(void) +{ + return globalHwnd; +} + +int GetMonitorCount(void) +{ + int count = 0; + if (!EnumDisplayMonitors(NULL, NULL, CountMonitorsProc, (LPARAM)&count)) + { + LogFail("EnumDisplayMonitors", GetLastError()); + abort(); + } + + return count; +} + +// Get current monitor where window is placed +int GetCurrentMonitor(void) +{ + HMONITOR monitor = MonitorFromWindow(globalHwnd, MONITOR_DEFAULTTOPRIMARY); + if (!monitor) + { + LogFail("MonitorFromWindow", GetLastError()); + abort(); + } + + FindMonitorContext context; + context.needle = monitor; + context.index = 0; + context.matchIndex = -1; + if (!EnumDisplayMonitors(NULL, NULL, FindMonitorProc, (LPARAM)&context)) + { + LogFail("EnumDisplayMonitors", GetLastError()); + abort(); + } + + return context.matchIndex; +} + +// Get selected monitor position +Vector2 GetMonitorPosition(int monitor) +{ + TRACELOG(LOG_WARNING, "GetMonitorPosition not implemented"); + assert(0); // crash debug builds only + return (Vector2){ 0, 0 }; +} + +// Get selected monitor width (currently used by monitor) +int GetMonitorWidth(int monitor) +{ + TRACELOG(LOG_WARNING, "GetMonitorWidth not implemented"); + assert(0); // crash debug builds only + return 0; +} + +// Get selected monitor height (currently used by monitor) +int GetMonitorHeight(int monitor) +{ + TRACELOG(LOG_WARNING, "GetMonitorHeight not implemented"); + assert(0); // crash debug builds only + return 0; +} + +// Get selected monitor physical width in millimetres +int GetMonitorPhysicalWidth(int monitor) +{ + TRACELOG(LOG_WARNING, "GetMonitorPhysicalWidth not implemented"); + assert(0); // crash debug builds only + return 0; +} + +// Get selected monitor physical height in millimetres +int GetMonitorPhysicalHeight(int monitor) +{ + TRACELOG(LOG_WARNING, "GetMonitorPhysicalHeight not implemented"); + assert(0); // crash debug builds only + return 0; +} + +// Get selected monitor refresh rate +int GetMonitorRefreshRate(int monitor) +{ + TRACELOG(LOG_WARNING, "GetMonitorRefreshRate not implemented"); + assert(0); // crash debug builds only + return 0; +} + +// Get the human-readable, UTF-8 encoded name of the selected monitor +const char *GetMonitorName(int monitor) +{ + TRACELOG(LOG_WARNING, "GetMonitorName not implemented"); + assert(0); // crash debug builds only + return 0; +} + +// Get window position XY on monitor +Vector2 GetWindowPosition(void) +{ + TRACELOG(LOG_WARNING, "GetWindowPosition not implemented"); + assert(0); // crash debug builds only + return (Vector2){ 0, 0 }; +} + +// Get window scale DPI factor for current monitor +Vector2 GetWindowScaleDPI(void) +{ + float scale = ScaleFromDpi(GetWindowDpi(globalHwnd)); + return (Vector2){ scale, scale }; +} + +void SetClipboardText(const char *text) +{ + TRACELOG(LOG_WARNING, "SetClipboardText not implemented"); + assert(0); // crash debug builds only +} + +const char *GetClipboardText(void) +{ + TRACELOG(LOG_WARNING, "GetClipboardText not implemented"); + assert(0); // crash debug builds only + return NULL; +} + +Image GetClipboardImage(void) +{ + TRACELOG(LOG_WARNING, "GetClipboardText not implemented"); + assert(0); // crash debug builds only + Image image = { 0 }; + return image; +} + +// Show mouse cursor +void ShowCursor(void) +{ + CORE.Input.Mouse.cursorHidden = false; + SetCursor(LoadCursorW(NULL, (LPCWSTR)IDC_ARROW)); +} + +// Hides mouse cursor +void HideCursor(void) +{ + // NOTE: we use SetCursor instead of ShowCursor because it makes it easy + // to only hide the cursor while it's inside the client area. + CORE.Input.Mouse.cursorHidden = true; + SetCursor(NULL); +} + +// Enables cursor (unlock cursor) +void EnableCursor(void) +{ + if (globalCursorEnabled) + { + TRACELOG(LOG_INFO, "EnableCursor: already enabled"); + } + else + { + if (!ClipCursor(NULL)) + { + LogFail("ClipCursor", GetLastError()); + abort(); + } + + { + RAWINPUTDEVICE rid; + rid.usUsagePage = 0x01; // HID_USAGE_PAGE_GENERIC + rid.usUsage = 0x02; // HID_USAGE_GENERIC_MOUSE + rid.dwFlags = RIDEV_REMOVE; // Add to this window even in background + rid.hwndTarget = NULL; + if (!RegisterRawInputDevices(&rid, 1, sizeof(rid))) { + LogFail("RegisterRawInputDevices", GetLastError()); + abort(); + } + } + + ShowCursor(); + globalCursorEnabled = true; + TRACELOG(LOG_INFO, "EnableCursor: enabled"); + } +} + +// Disables cursor (lock cursor) +void DisableCursor(void) +{ + if (globalCursorEnabled) + { + + { + RAWINPUTDEVICE rid; + rid.usUsagePage = 0x01; // HID_USAGE_PAGE_GENERIC + rid.usUsage = 0x02; // HID_USAGE_GENERIC_MOUSE + rid.dwFlags = RIDEV_INPUTSINK; // Add to this window even in background + rid.hwndTarget = globalHwnd; + if (!RegisterRawInputDevices(&rid, 1, sizeof(rid))) { + LogFail("RegisterRawInputDevices", GetLastError()); + abort(); + } + } + + RECT clientRect; + if (!GetClientRect(globalHwnd, &clientRect)) + { + LogFail("GetClientRect", GetLastError()); + abort(); + } + + POINT topleft = { clientRect.left, clientRect.top }; + if (!ClientToScreen(globalHwnd, &topleft)) + { + LogFail("ClientToScreen", GetLastError()); + abort(); + } + + LONG width = clientRect.right - clientRect.left; + LONG height = clientRect.bottom - clientRect.top; + + TRACELOG(LOG_INFO, "ClipCursor client %d,%d %d,%d (topleft %d,%d)", + clientRect.left, + clientRect.top, + clientRect.right, + clientRect.bottom, + topleft.x, + topleft.y + ); + LONG centerX = topleft.x + width/2; + LONG centerY = topleft.y + height/2; + RECT clipRect = { centerX, centerY, centerX + 1, centerY + 1 }; + if (!ClipCursor(&clipRect)) + { + LogFail("ClipCursor", GetLastError()); + abort(); + } + + CORE.Input.Mouse.previousPosition = (Vector2){ 0, 0 }; + CORE.Input.Mouse.currentPosition = (Vector2){ 0, 0 }; + HideCursor(); + + globalCursorEnabled = false; + TRACELOG(LOG_INFO, "DisableCursor: disabled"); + } + else + { + TRACELOG(LOG_INFO, "DisableCursor: already disabled"); + } +} + +void SwapScreenBuffer(void) +{ + if (!globalHdc) abort(); + if (!SwapBuffers(globalHdc)) + { + LogFail("SwapBuffers", GetLastError()); + abort(); + } + + if (!ValidateRect(globalHwnd, NULL)) + { + LogFail("ValidateRect", GetLastError()); + abort(); + } +} + +double GetTime(void) +{ + LARGE_INTEGER now; + QueryPerformanceCounter(&now); + return (double)(now.QuadPart - CORE.Time.base)/(double)globalTimerFrequency.QuadPart; +} + +// Open URL with default system browser (if available) +// NOTE: This function is only safe to use if you control the URL given. +// A user could craft a malicious string performing another action. +// Only call this function yourself not with user input or make sure to check the string yourself. +// Ref: https://github.com/raysan5/raylib/issues/686 +void OpenURL(const char *url) +{ + // Security check to (partially) avoid malicious code on target platform + if (strchr(url, '\'') != NULL) TRACELOG(LOG_WARNING, "SYSTEM: Provided URL could be potentially malicious, avoid [\'] character"); + else + { + TRACELOG(LOG_WARNING, "OpenURL not implemented"); + assert(0); // crash debug builds only + } +} + +//---------------------------------------------------------------------------------- +// Module Functions Definition: Inputs +//---------------------------------------------------------------------------------- + +int SetGamepadMappings(const char *mappings) +{ + TRACELOG(LOG_WARNING, "SetGamepadMappings not implemented"); + assert(0); // crash debug builds only + return -1; +} + +void SetGamepadVibration(int gamepad, float leftMotor, float rightMotor, float duration) +{ + TRACELOG(LOG_WARNING, "SetGamepadVibration not implemented"); + assert(0); // crash debug builds only +} + +void SetMousePosition(int x, int y) +{ + if (globalCursorEnabled) + { + CORE.Input.Mouse.currentPosition = (Vector2){ (float)x, (float)y }; + CORE.Input.Mouse.previousPosition = CORE.Input.Mouse.currentPosition; + TRACELOG(LOG_WARNING, "SetMousePosition not implemented"); + assert(0); // crash debug builds only + } + else + { + TRACELOG(LOG_ERROR, "Possible? Should we allow this?"); + abort(); + } +} + +void SetMouseCursor(int cursor) +{ + LPCWSTR cursorName = GetCursorName(cursor); + HCURSOR hcursor = LoadCursorW(NULL, cursorName); + if (!hcursor) + { + TRACELOG(LOG_ERROR, "LoadCursor %d (win32 %d) failed, error=%lu", cursor, (size_t)cursorName, GetLastError()); + abort(); + } + + SetCursor(hcursor); + CORE.Input.Mouse.cursorHidden = false; +} + +const char *GetKeyName(int key) +{ + TRACELOG(LOG_WARNING, "GetKeyName not implemented"); + assert(0); // crash debug builds only + return NULL; +} + +// Register all input events +void PollInputEvents(void) +{ + // Reset keys/chars pressed registered + CORE.Input.Keyboard.keyPressedQueueCount = 0; + CORE.Input.Keyboard.charPressedQueueCount = 0; + + // Reset key repeats + for (int i = 0; i < MAX_KEYBOARD_KEYS; i++) CORE.Input.Keyboard.keyRepeatInFrame[i] = 0; + + // Reset last gamepad button/axis registered state + CORE.Input.Gamepad.lastButtonPressed = 0; // GAMEPAD_BUTTON_UNKNOWN + //CORE.Input.Gamepad.axisCount = 0; + + // Register previous touch states + for (int i = 0; i < MAX_TOUCH_POINTS; i++) CORE.Input.Touch.previousTouchState[i] = CORE.Input.Touch.currentTouchState[i]; + + // Reset touch positions + // TODO: It resets on target platform the mouse position and not filled again until a move-event, + // so, if mouse is not moved it returns a (0, 0) position... this behaviour should be reviewed! + //for (int i = 0; i < MAX_TOUCH_POINTS; i++) CORE.Input.Touch.position[i] = (Vector2){ 0, 0 }; + + memcpy( + CORE.Input.Keyboard.previousKeyState, + CORE.Input.Keyboard.currentKeyState, + sizeof(CORE.Input.Keyboard.previousKeyState) + ); + memset(CORE.Input.Keyboard.keyRepeatInFrame, 0, sizeof(CORE.Input.Keyboard.keyRepeatInFrame)); + + // Register previous mouse wheel state + CORE.Input.Mouse.previousWheelMove = CORE.Input.Mouse.currentWheelMove; + CORE.Input.Mouse.currentWheelMove = (Vector2){ 0.0f, 0.0f }; + + // Register previous mouse position + CORE.Input.Mouse.previousPosition = CORE.Input.Mouse.currentPosition; + + MSG msg; + while (PeekMessageW(&msg, NULL, 0, 0, PM_REMOVE)) + { + if (msg.message == WM_PAINT) + return; + TranslateMessage(&msg); + DispatchMessageW(&msg); + } +} + +//---------------------------------------------------------------------------------- +// Module Internal Functions Definition +//---------------------------------------------------------------------------------- + +#define WM_APP_UPDATE_WINDOW_SIZE (WM_APP + 1) + +static LRESULT WndProc2(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam, FlagsOp *deferredFlags) +{ + switch (msg) + { + case WM_CREATE: + { + globalHdc = GetDC(hwnd); + if (!globalHdc) + { + LogFail("GetDC", GetLastError()); + return -1; + } + + if (CORE.Window.flags & FLAG_MSAA_4X_HINT) + { + TRACELOG(LOG_ERROR, "TODO: implement FLAG_MSAA_4X_HINT"); + assert(0); + } + + PIXELFORMATDESCRIPTOR pixelFormatDesc = {0}; + pixelFormatDesc.nSize = sizeof(PIXELFORMATDESCRIPTOR); + pixelFormatDesc.nVersion = 1; + pixelFormatDesc.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL; + pixelFormatDesc.iPixelType = PFD_TYPE_RGBA; + pixelFormatDesc.cColorBits = 32; + pixelFormatDesc.cAlphaBits = 8; + pixelFormatDesc.cDepthBits = 24; + + int pixelFormat = ChoosePixelFormat(globalHdc, &pixelFormatDesc); + if (!pixelFormat) + { + LogFail("ChoosePixelFormat", GetLastError()); + return -1; + } + + if (!SetPixelFormat(globalHdc, pixelFormat, &pixelFormatDesc)) + { + LogFail("SetPixelFormat", GetLastError()); + return -1; + } + + globalGlContext = wglCreateContext(globalHdc); + if (!globalGlContext) + { + LogFail("wglCreateContext", GetLastError()); + return -1; + } + + if (!wglMakeCurrent(globalHdc, globalGlContext)) + { + LogFail("wglMakeCurrent", GetLastError()); + return -1; + } + + rlLoadExtensions(WglGetProcAddress); + + globalHwnd = hwnd; + + } return 0; + case WM_DESTROY: + wglMakeCurrent(globalHdc, NULL); + if (globalGlContext) + { + if (!wglDeleteContext(globalGlContext)) abort(); + globalGlContext = NULL; + } + + if (globalHdc) + { + if (!ReleaseDC(hwnd, globalHdc)) abort(); + globalHdc = NULL; + } + + return 0; + case WM_CLOSE: + CORE.Window.shouldClose = true; + return 0; + case WM_KILLFOCUS: + memset(CORE.Input.Keyboard.previousKeyState, 0, sizeof(CORE.Input.Keyboard.previousKeyState)); + memset(CORE.Input.Keyboard.currentKeyState, 0, sizeof(CORE.Input.Keyboard.currentKeyState)); + return 0; + case WM_SIZING: + if (CORE.Window.flags & FLAG_WINDOW_RESIZABLE) { + // TODO: enforce min/max size + TRACELOG(LOG_WARNING, "TODO: enforce min/max size!"); + } else { + TRACELOG(LOG_WARNING, "non-resizable window is being resized"); + // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + abort(); // TODO + } + return TRUE; + case WM_STYLECHANGING: + if (wparam == GWL_STYLE) + { + STYLESTRUCT *ss = (STYLESTRUCT*)lparam; + GetStyleChangeFlagOps(CORE.Window.flags, ss, deferredFlags); + + UINT dpi = GetWindowDpi(hwnd); + SIZE clientSize = GetClientSize(hwnd); + SIZE oldSize = CalcWindowSize(dpi, clientSize, ss->styleOld); + SIZE newSize = CalcWindowSize(dpi, clientSize, ss->styleNew); + if (oldSize.cx != newSize.cx || oldSize.cy != newSize.cy) { + TRACELOG( + LOG_INFO, + "resize from style change: %dx%d to %dx%d", + oldSize.cx, oldSize.cy, + newSize.cx, newSize.cy + ); + if (CORE.Window.flags & FLAG_WINDOW_MAXIMIZED) { + // looks like windows will automatically "unminimize" a window + // if a style changes modifies it's size + TRACELOG(LOG_INFO, "style change modifed window size, removing maximized flag"); + deferredFlags->clear |= FLAG_WINDOW_MAXIMIZED; + } + } + } + return 0; + case WM_WINDOWPOSCHANGING: + { + WINDOWPOS *pos = (WINDOWPOS*)lparam; + if (pos->flags & SWP_SHOWWINDOW) + { + if (pos->flags & SWP_HIDEWINDOW) abort(); + deferredFlags->clear |= FLAG_WINDOW_HIDDEN; + } + else if (pos->flags & SWP_HIDEWINDOW) + { + deferredFlags->set |= FLAG_WINDOW_HIDDEN; + } + + Mized mized = MIZED_NONE; + if (IsMinimized2(hwnd)) + { + mized = MIZED_MIN; + } + else + { + WINDOWPLACEMENT placement; + placement.length = sizeof(placement); + if (!GetWindowPlacement(hwnd, &placement)) + { + LogFail("GetWindowPlacement", GetLastError()); + abort(); + } + + if (placement.showCmd == SW_SHOWMAXIMIZED) { + mized = MIZED_MAX; + } + } + + // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + /* TRACELOG(LOG_INFO, "window pos=%d,%d size=%dx%d", pos->x, pos->y, pos->cx, pos->cy); */ + + switch (mized) + { + case MIZED_NONE: + { + deferredFlags->clear |= ( + FLAG_WINDOW_MINIMIZED | + FLAG_WINDOW_MAXIMIZED + ); + HMONITOR monitor = MonitorFromWindow(hwnd, MONITOR_DEFAULTTOPRIMARY); + MONITORINFO info; + info.cbSize = sizeof(info); + if (!GetMonitorInfoW(monitor, &info)) + { + LogFail("GetMonitorInfo", GetLastError()); + abort(); + } + + if ( + (pos->x == info.rcMonitor.left) && + (pos->y == info.rcMonitor.top) && + (pos->cx == (info.rcMonitor.right - info.rcMonitor.left)) && + (pos->cy == (info.rcMonitor.bottom - info.rcMonitor.top)) + ) { + deferredFlags->set |= FLAG_BORDERLESS_WINDOWED_MODE; + } + else + { + deferredFlags->clear |= FLAG_BORDERLESS_WINDOWED_MODE; + } + + } break; + case MIZED_MIN: + // !!! NOTE !!! Do not update the maximized/borderless + // flags because when hwnd is minimized it temporarily overrides + // the maximized state/flag which gets restored on SW_RESTORE + deferredFlags->set |= FLAG_WINDOW_MINIMIZED; + break; + case MIZED_MAX: + deferredFlags->clear |= FLAG_WINDOW_MINIMIZED; + deferredFlags->set |= FLAG_WINDOW_MAXIMIZED; + break; + } + + return 0; + } + case WM_SIZE: + // don't trust the docs, they say you won't get this message if you don't call DefWindowProc + // in response to WM_WINDOWPOSCHANGED but looks like when a window is created you'll get this + // message without getting WM_WINDOWPOSCHANGED. + HandleWindowResize(hwnd, &globalAppScreenSize); + return 0; + case WM_WINDOWPOSCHANGED: { + WINDOWPOS *pos = (WINDOWPOS*)lparam; + if (!(pos->flags & SWP_NOSIZE)) + { + HandleWindowResize(hwnd, &globalAppScreenSize); + } + + return 0; + } + case WM_GETDPISCALEDSIZE: + { + SIZE *inoutSize = (SIZE*)lparam; + UINT newDpi = wparam; + + // for any of these other cases, we might want to post a window + // resize event after the dpi changes? + if (CORE.Window.flags & FLAG_WINDOW_MINIMIZED) return TRUE; + if (CORE.Window.flags & FLAG_WINDOW_MAXIMIZED) return TRUE; + if (CORE.Window.flags & FLAG_BORDERLESS_WINDOWED_MODE) return TRUE; + + float dpiScale = ScaleFromDpi(newDpi); + bool dpiScaling = CORE.Window.flags & FLAG_WINDOW_HIGHDPI; + SIZE desired = PxFromPt2(dpiScale, dpiScaling, globalAppScreenSize); + inoutSize->cx = desired.cx; + inoutSize->cy = desired.cy; + } return TRUE; + case WM_DPICHANGED: + { + RECT *suggestedRect = (RECT*)lparam; + // Never set the window size to anything other than the suggested rect here. + // Doing so can cause a window to stutter between monitors when transitioning + // between them. + if (!SetWindowPos( + hwnd, + NULL, + suggestedRect->left, + suggestedRect->top, + suggestedRect->right - suggestedRect->left, + suggestedRect->bottom - suggestedRect->top, + SWP_NOZORDER | SWP_NOACTIVATE + )) { + LogFail("SetWindowPos", GetLastError()); + abort(); + } + + } return 0; + case WM_SETCURSOR: + if (LOWORD(lparam) == HTCLIENT) + { + SetCursor(CORE.Input.Mouse.cursorHidden? NULL : LoadCursorW(NULL, (LPCWSTR)IDC_ARROW)); + return 0; + } + + return DefWindowProc(hwnd, msg, wparam, lparam); + case WM_INPUT: + if (globalCursorEnabled) + { + TRACELOG(LOG_ERROR, "Unexpected raw mouse input"); // impossible right? + abort(); + } + + HandleRawInput(lparam); + return 0; + case WM_MOUSEMOVE: + if (globalCursorEnabled) + { + CORE.Input.Mouse.currentPosition.x = (float)GET_X_LPARAM(lparam); + CORE.Input.Mouse.currentPosition.y = (float)GET_Y_LPARAM(lparam); + CORE.Input.Touch.position[0] = CORE.Input.Mouse.currentPosition; + } + + return 0; + case WM_KEYDOWN: HandleKey(wparam, lparam, 1); return 0; + case WM_KEYUP: HandleKey(wparam, lparam, 0); return 0; + case WM_LBUTTONDOWN: HandleMouseButton(MOUSE_BUTTON_LEFT, 1); return 0; + case WM_LBUTTONUP : HandleMouseButton(MOUSE_BUTTON_LEFT, 0); return 0; + case WM_RBUTTONDOWN: HandleMouseButton(MOUSE_BUTTON_RIGHT, 1); return 0; + case WM_RBUTTONUP : HandleMouseButton(MOUSE_BUTTON_RIGHT, 0); return 0; + case WM_MBUTTONDOWN: HandleMouseButton(MOUSE_BUTTON_MIDDLE, 1); return 0; + case WM_MBUTTONUP : HandleMouseButton(MOUSE_BUTTON_MIDDLE, 0); return 0; + case WM_XBUTTONDOWN: switch (HIWORD(wparam)) + { + case XBUTTON1: HandleMouseButton(MOUSE_BUTTON_SIDE, 1); return 0; + case XBUTTON2: HandleMouseButton(MOUSE_BUTTON_EXTRA, 1); return 0; + default: + TRACELOG(LOG_WARNING, "TODO: handle ex mouse button DOWN wparam=%u", HIWORD(wparam)); + return 0; + } + case WM_XBUTTONUP: switch (HIWORD(wparam)) + { + case XBUTTON1: HandleMouseButton(MOUSE_BUTTON_SIDE, 0); return 0; + case XBUTTON2: HandleMouseButton(MOUSE_BUTTON_EXTRA, 0); return 0; + default: + TRACELOG(LOG_WARNING, "TODO: handle ex mouse button UP wparam=%u", HIWORD(wparam)); + return 0; + } + case WM_MOUSEWHEEL: + CORE.Input.Mouse.currentWheelMove.y = ((float)GET_WHEEL_DELTA_WPARAM(wparam))/WHEEL_DELTA; + return 0; + case WM_MOUSEHWHEEL: + CORE.Input.Mouse.currentWheelMove.x = ((float)GET_WHEEL_DELTA_WPARAM(wparam))/WHEEL_DELTA; + return 0; + case WM_APP_UPDATE_WINDOW_SIZE: + UpdateWindowSize(UPDATE_WINDOW_NORMAL, hwnd, globalAppScreenSize, CORE.Window.flags); + return 0; + default: + return DefWindowProcW(hwnd, msg, wparam, lparam); + } +} + +static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) +{ + // sanity check, should we remove this? + DWORD mask = STYLE_MASK_ALL; + if (globalHwnd == hwnd) + { + if (msg == WM_WINDOWPOSCHANGING) { + mask &= ~(WS_MINIMIZE | WS_MAXIMIZE); + } + CheckFlags("WndProc", hwnd, CORE.Window.flags, MakeWindowStyle(CORE.Window.flags), mask); + } + + FlagsOp flagsOp; + flagsOp.set = 0; + flagsOp.clear = 0; + LRESULT result = WndProc2(hwnd, msg, wparam, lparam, &flagsOp); + + // sanity check, should we remove this? + if (globalHwnd == hwnd) + { + CheckFlags("After WndProc", hwnd, CORE.Window.flags, MakeWindowStyle(CORE.Window.flags), mask); + } + + // Operations to execute after the above check + if (flagsOp.set & flagsOp.clear) + { + TRACELOG(LOG_ERROR, "the flags 0x%x were both set and cleared!", flagsOp.set & flagsOp.clear); + abort(); + } + + { + DWORD save = CORE.Window.flags; + CORE.Window.flags |= flagsOp.set; + CORE.Window.flags &= ~flagsOp.clear; + if (save != CORE.Window.flags) + { + TRACELOG( + LOG_DEBUG, + "DeferredFlags: 0x%x > 0x%x (diff 0x%x)", + save, + CORE.Window.flags, + save ^ CORE.Window.flags + ); + } + } + + return result; +} + + +int InitPlatform(void) +{ + globalDesiredFlags = SanitizeFlags(SANITIZE_FLAGS_FIRST, CORE.Window.flags); + // from this point CORE.Window.flags should always reflect the actual state of the window + CORE.Window.flags = FLAG_WINDOW_HIDDEN | (globalDesiredFlags & FLAG_MASK_NO_UPDATE); + + globalAppScreenSize = (Vector2){ CORE.Window.screen.width, CORE.Window.screen.height }; + + if (IsWindows10Version1703OrGreaterWin32()) + { + TRACELOG(LOG_INFO, "DpiAware: >=Win10Creators"); + if (!SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2)) { + LogFail("SetProcessDpiAwarenessContext", GetLastError()); + abort(); + } + } + else + { + TRACELOG(LOG_INFO, "DpiAware: Display size: %i x %i", CORE.Window.display.width, CORE.Window.display.height); + TRACELOG(LOG_INFO, " > Screen size: %i x %i", CORE.Window.screen.width, CORE.Window.screen.height); + TRACELOG(LOG_INFO, " > Render size: %i x %i", CORE.Window.render.width, CORE.Window.render.height); + TRACELOG(LOG_INFO, " > Viewport offsets: %i, %i", CORE.Window.renderOffset.x, CORE.Window.renderOffset.y); + + CORE.Storage.basePath = GetWorkingDirectory(); + + QueryPerformanceFrequency(&globalTimerFrequency); + + { + LARGE_INTEGER time; + QueryPerformanceCounter(&time); + CORE.Time.base = time.QuadPart; + } + InitTimer(); + + TRACELOG(LOG_INFO, "PLATFORM: DESKTOP: WIN32: Initialized successfully"); + return 0; +} + +void ClosePlatform(void) +{ + if (globalHwnd) + { + if (0 == DestroyWindow(globalHwnd)) + { + LogFail("DestroyWindow", GetLastError()); + abort(); + } + + globalHwnd = NULL; + } +} diff --git a/src/rcore.c b/src/rcore.c index b2ce0c635..4360a23ee 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -555,6 +555,8 @@ const char *TextFormat(const char *text, ...); // Formatting of text with variab #include "platforms/rcore_desktop_sdl.c" #elif (defined(PLATFORM_DESKTOP_RGFW) || defined(PLATFORM_WEB_RGFW)) #include "platforms/rcore_desktop_rgfw.c" +#elif defined(PLATFORM_DESKTOP_WIN32) + #include "platforms/rcore_desktop_win32.c" #elif defined(PLATFORM_WEB) #include "platforms/rcore_web.c" #elif defined(PLATFORM_DRM) @@ -625,6 +627,8 @@ void InitWindow(int width, int height, const char *title) TRACELOG(LOG_INFO, "Platform backend: DESKTOP (SDL)"); #elif defined(PLATFORM_DESKTOP_RGFW) TRACELOG(LOG_INFO, "Platform backend: DESKTOP (RGFW)"); +#elif defined(PLATFORM_DESKTOP_WIN32) + TRACELOG(LOG_INFO, "Platform backend: DESKTOP (WIN32)"); #elif defined(PLATFORM_WEB_RGFW) TRACELOG(LOG_INFO, "Platform backend: WEB (RGFW) (HTML5)"); #elif defined(PLATFORM_WEB) From 82d65e110a2caba862b31a3f1c11ca7a8ba60e3b Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 31 Aug 2025 12:22:50 +0200 Subject: [PATCH 328/328] Update build status badges --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 41ef85bc5..faf6c41f8 100644 --- a/README.md +++ b/README.md @@ -24,14 +24,14 @@ Ready to learn? Jump to [code examples!](https://www.raylib.com/examples.html) [![Youtube Subscribers](https://img.shields.io/youtube/channel/subscribers/UC8WIBkhYb5sBNqXO1mZ7WSQ?style=flat&label=Youtube&logo=youtube)](https://www.youtube.com/c/raylib) [![Twitch Status](https://img.shields.io/twitch/status/raysan5?style=flat&label=Twitch&logo=twitch)](https://www.twitch.tv/raysan5) -[![Windows](https://github.com/raysan5/raylib/workflows/Windows/badge.svg)](https://github.com/raysan5/raylib/actions?query=workflow%3AWindows) -[![Linux](https://github.com/raysan5/raylib/workflows/Linux/badge.svg)](https://github.com/raysan5/raylib/actions?query=workflow%3ALinux) -[![macOS](https://github.com/raysan5/raylib/workflows/macOS/badge.svg)](https://github.com/raysan5/raylib/actions?query=workflow%3AmacOS) -[![WebAssembly](https://github.com/raysan5/raylib/workflows/WebAssembly/badge.svg)](https://github.com/raysan5/raylib/actions?query=workflow%3AWebAssembly) +[![Build Windows](https://github.com/raysan5/raylib/actions/workflows/build_windows.yml/badge.svg)](https://github.com/raysan5/raylib/actions/workflows/build_windows.yml) +[![Build Linux](https://github.com/raysan5/raylib/actions/workflows/build_linux.yml/badge.svg)](https://github.com/raysan5/raylib/actions/workflows/build_linux.yml) +[![Build macOS](https://github.com/raysan5/raylib/actions/workflows/build_macos.yml/badge.svg)](https://github.com/raysan5/raylib/actions/workflows/build_macos.yml) +[![Build WebAssembly](https://github.com/raysan5/raylib/actions/workflows/build_webassembly.yml/badge.svg)](https://github.com/raysan5/raylib/actions/workflows/build_webassembly.yml) -[![CMakeBuilds](https://github.com/raysan5/raylib/workflows/CMakeBuilds/badge.svg)](https://github.com/raysan5/raylib/actions?query=workflow%3ACMakeBuilds) -[![Windows Examples](https://github.com/raysan5/raylib/actions/workflows/windows_examples.yml/badge.svg)](https://github.com/raysan5/raylib/actions/workflows/windows_examples.yml) -[![Linux Examples](https://github.com/raysan5/raylib/actions/workflows/linux_examples.yml/badge.svg)](https://github.com/raysan5/raylib/actions/workflows/linux_examples.yml) +[![Build CMake](https://github.com/raysan5/raylib/actions/workflows/build_cmake.yml/badge.svg)](https://github.com/raysan5/raylib/actions/workflows/build_cmake.yml) +[![Build examples Windows](https://github.com/raysan5/raylib/actions/workflows/build_examples_windows.yml/badge.svg)](https://github.com/raysan5/raylib/actions/workflows/build_examples_windows.yml) +[![Build examples Linux](https://github.com/raysan5/raylib/actions/workflows/build_examples_linux.yml/badge.svg)](https://github.com/raysan5/raylib/actions/workflows/build_examples_linux.yml) features --------

    vA4MU4ErfF;T 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 T*!=Z$!H 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