From 7b7eebd3056226319005b637d32b995dce202d7e Mon Sep 17 00:00:00 2001 From: Untold Engine Date: Fri, 21 Aug 2026 16:11:53 -0700 Subject: [PATCH 01/11] [Bugfix] Scale the covariance matrix uniformly [Patch] Fix Gaussian splat falloff clamp desync and reduce overdraw [Patch] Reduce covariance and color to half3 precision --- Sources/CShaderTypes/ShaderTypes.h | 37 +++-- Sources/UntoldEngine/Shaders/Gaussians.metal | 145 ++++++++++++++---- .../Systems/RegistrationSystem.swift | 12 +- .../UntoldEngineKernels-ios.air | Bin 167200 -> 167792 bytes .../UntoldEngineKernels-ios.metallib | Bin 554839 -> 556471 bytes .../UntoldEngineKernels-iossim.metallib | Bin 557431 -> 559079 bytes .../UntoldEngineKernels-tvos.air | Bin 167216 -> 167808 bytes .../UntoldEngineKernels-tvos.metallib | Bin 555191 -> 556839 bytes .../UntoldEngineKernels-tvossim.air | Bin 167232 -> 167824 bytes .../UntoldEngineKernels-tvossim.metallib | Bin 557735 -> 559367 bytes .../UntoldEngineKernels-xros.air | Bin 167216 -> 167808 bytes .../UntoldEngineKernels-xros.metallib | Bin 555223 -> 556871 bytes .../UntoldEngineKernels-xrossim.air | Bin 167232 -> 167824 bytes .../UntoldEngineKernels-xrossim.metallib | Bin 557767 -> 559399 bytes .../UntoldEngineKernels.metallib | Bin 553159 -> 554807 bytes .../DeviceRadixSortTest.swift | 10 +- 16 files changed, 146 insertions(+), 58 deletions(-) diff --git a/Sources/CShaderTypes/ShaderTypes.h b/Sources/CShaderTypes/ShaderTypes.h index 3411912a..731456b6 100644 --- a/Sources/CShaderTypes/ShaderTypes.h +++ b/Sources/CShaderTypes/ShaderTypes.h @@ -486,20 +486,26 @@ typedef struct{ float opacity; }GaussianSplat; +// position stays full float precision (fed directly into world/view/clip-space matrix math, +// where half-precision error would visibly drift); covariance and color/opacity are +// half-precision, matching the density another native Metal/simd Gaussian-splat renderer +// (MetalSplatter) uses for the same fields. simd_half3/simd_half4 pack tightly (8 bytes each, +// no padding between them) unlike simd_float3 (16-byte-aligned even for a 3-component vector), +// so this is 48 bytes total per splat vs. the previous 128 — not just "half the bytes" of the +// 3 vector fields, but a ~2.7x reduction overall once the float3 alignment padding that also +// disappears is accounted for. colorAndOpacity folds opacity into color's 4th component +// (again matching MetalSplatter) since a lone scalar field here would otherwise force the +// same kind of alignment padding this change is trying to eliminate. typedef struct{ simd_float3 position; - float opacity; - simd_float3 color; - float _pad0; - simd_float3 covA; - float _pad1; - simd_float3 covB; - float _pad2; + simd_half3 covA; + simd_half3 covB; + simd_half4 colorAndOpacity; // .xyz = SH0 base color, .w = opacity }EncodedGaussianSplat; // Higher-order SH coefficients are stored in a separate packed half buffer. // Layout per splat: R[1...n], G[1...n], B[1...n]. The DC coefficient remains -// represented by EncodedGaussianSplat.color. +// represented by EncodedGaussianSplat.colorAndOpacity.xyz. typedef struct{ uint degree; uint coefficientsPerChannel; @@ -507,17 +513,26 @@ typedef struct{ uint _pad0; }GaussianSHMetadata; -// Per-splat conic/radius/color, computed once per splat per frame by the gaussianPreprocess +// Per-splat conic/axes/color, computed once per splat per frame by the gaussianPreprocess // compute kernel instead of redundantly 4x per splat (once per instanced quad vertex) in the // draw vertex shader — see gaussianPreprocess in Gaussians.metal. Indexed by the same // original splat index as EncodedGaussianSplat. +// +// axis1/axis2 are the projected covariance ellipse's two (orthogonal) kGaussianQuadSigma-sigma +// semi-axis vectors in screen pixels — i.e. eigenvectors of the 2D covariance scaled by +// kGaussianQuadSigma*sqrt(eigenvalue) — used to build a tight, rotated quad instead of an +// axis-aligned bounding box. An axis-aligned box has +// to cover a rotated ellipse's full extent along screen X/Y, which for an anisotropic splat +// (the common case — Gaussians are oriented however the surface they came from sits) can be +// several times larger in area than the ellipse itself, costing that many more rasterized/ +// shaded fragments regardless of how cheap the per-fragment TBDR blend itself is. typedef struct{ simd_float3 conic; float _pad0; simd_float3 color; float _pad1; - simd_float2 radius; - simd_float2 _pad2; + simd_float2 axis1; + simd_float2 axis2; }GaussianPrecomputedSplat; typedef enum{ diff --git a/Sources/UntoldEngine/Shaders/Gaussians.metal b/Sources/UntoldEngine/Shaders/Gaussians.metal index da919d01..30dc717d 100644 --- a/Sources/UntoldEngine/Shaders/Gaussians.metal +++ b/Sources/UntoldEngine/Shaders/Gaussians.metal @@ -41,6 +41,16 @@ constant float GAUSSIAN_SH_C3[7] = { // cost per splat. constant float kGaussianMaxScreenRadius = 128.0f; +// How many standard deviations out the rendered quad extends along each principal axis. +// fragmentGaussianTBDRShader discards any fragment whose alpha falls below 1/255 (any dimmer +// than that rounds to nothing in 8-bit output anyway) — so the quad edge needs alpha = +// opacity*exp(-0.5*k^2) to already be under that bar for a fully-opaque splat, i.e. k > +// sqrt(2*ln(255)) ≈ 3.33, or the geometric edge itself becomes a faint but visible boundary +// (most noticeable on large, high-opacity, texturally-flat splats — e.g. sky/cloud splats — +// where there's nothing else nearby to mask a subtle discontinuity). 3.5 clears that with a +// small margin; going further trades quad area (~k^2) for diminishing returns. +constant float kGaussianQuadSigma = 3.5f; + // Hard ceiling on how many splats may blend into a single pixel. [[raster_order_group(0)]] // forces every fragment touching a given pixel to execute serially (a correct ordered // read-modify-write into the imageblock), so per-pixel overdraw isn't just extra work — it's @@ -208,9 +218,18 @@ float3 computeCov2D(float4 splatCenter, return float3(cov[0][0], cov[0][1], cov[1][1]); } -// Compute inverse covariance and a per-axis screen-space half-extent (~3σ) in pixels +// Compute inverse covariance (conic) and the two orthogonal kGaussianQuadSigma-sigma semi-axis +// vectors (in screen pixels) of the projected covariance ellipse, via eigen-decomposition of +// the symmetric 2×2 [[a,b],[b,c]] matrix. axis1/axis2 point along the ellipse's true principal directions — +// used to build a tight, rotated quad instead of an axis-aligned bounding box, which for an +// anisotropic, non-axis-aligned splat (the common case: Gaussians are oriented however the +// surface they came from sits) can be several times larger in area than the ellipse itself, +// costing that many more rasterized/shaded fragments regardless of how cheap the per-fragment +// TBDR blend itself is. Eigenvector formula matches the standard closed-form solution for a +// symmetric 2×2 matrix (as used by e.g. MetalSplatter's decomposeCovariance). float3 computeInverseCovarianceConic(float3 cov2D, - thread float2 &radius, + thread float2 &axis1, + thread float2 &axis2, thread bool &valid) { float a = cov2D.x; @@ -218,12 +237,71 @@ float3 computeInverseCovarianceConic(float3 cov2D, float c = cov2D.z; float det = a * c - b * b; - if (det == 0.0f) { + // cov2D is provably PSD (built from a congruence transform of a PSD 3D covariance, plus a + // positive diagonal dilation), so its determinant is mathematically always >= 0 — a + // negative reading can only come from float round-off on a near-singular matrix. Guarding + // <= 0 (not just == 0) catches that case before it flips the sign of detInv/conic, which + // would otherwise invert the falloff (alpha growing instead of decaying away from center). + if (det <= 0.0f) { valid = false; - radius = float2(0.0f); + axis1 = float2(0.0f); + axis2 = float2(0.0f); return float3(0.0f); } + float trace = a + c; + float mean = 0.5f * trace; + // Discriminant of the characteristic polynomial — mathematically always >= 0 for a real + // symmetric matrix; the max() guards only against float round-off near-singular matrices. + // The 0.1 floor (matching the reference implementation) keeps the eigenvector computation + // below numerically stable when the ellipse is nearly circular (b~0, a~c). + float dist = max(0.1f, sqrt(max(mean * mean - det, 0.0f))); + float lambda1 = mean + dist; + float lambda2 = max(mean - dist, 0.0f); + + float2 eigenvector1; + if (b == 0.0f) { + eigenvector1 = (a > c) ? float2(1.0f, 0.0f) : float2(0.0f, 1.0f); + } else { + eigenvector1 = normalize(float2(b, c - (mean - dist))); + } + // The second eigenvector of a symmetric 2x2 matrix is always orthogonal to the first. + float2 eigenvector2 = float2(eigenvector1.y, -eigenvector1.x); + + float radius1 = kGaussianQuadSigma * sqrt(lambda1); + float radius2 = kGaussianQuadSigma * sqrt(lambda2); + + // A splat whose true kGaussianQuadSigma-sigma extent along either principal axis exceeds + // kGaussianMaxScreenRadius (very close to the camera — radius grows ~1/distance) needs + // its rendered quad clamped down for overdraw reasons, but the falloff must be clamped + // along with it, or the (smaller) quad sits within the Gaussian's near-flat peak and + // never reaches the part of the curve that actually decays — visually a hard-edged, + // nearly-opaque block instead of a soft blob. + // + // Each axis is clamped independently (not by a single shared ratio) so an elongated + // splat's short axis isn't shrunk just because its long axis needed clamping — matching + // how the previous axis-aligned implementation clamped x and y separately. The clamped + // covariance is then reconstructed from the (independently-scaled) eigenvalues and the + // unchanged eigenvector directions — M = R·diag(λ1,λ2)·Rᵀ — so conic, radius, and the + // falloff all agree on the same (possibly non-uniformly-shrunk) ellipse. det(M) = λ1·λ2 + // regardless of rotation, since R is orthogonal (det(R)·det(Rᵀ) = 1). + float clampedRadius1 = min(radius1, kGaussianMaxScreenRadius); + float clampedRadius2 = min(radius2, kGaussianMaxScreenRadius); + if (clampedRadius1 < radius1 || clampedRadius2 < radius2) { + float scale1 = clampedRadius1 / radius1; + float scale2 = clampedRadius2 / radius2; + float clampedLambda1 = lambda1 * scale1 * scale1; + float clampedLambda2 = lambda2 * scale2 * scale2; + + a = clampedLambda1 * eigenvector1.x * eigenvector1.x + clampedLambda2 * eigenvector2.x * eigenvector2.x; + b = clampedLambda1 * eigenvector1.x * eigenvector1.y + clampedLambda2 * eigenvector2.x * eigenvector2.y; + c = clampedLambda1 * eigenvector1.y * eigenvector1.y + clampedLambda2 * eigenvector2.y * eigenvector2.y; + det = clampedLambda1 * clampedLambda2; + + radius1 = clampedRadius1; + radius2 = clampedRadius2; + } + float detInv = 1.0f / det; float3 conic = float3( @@ -232,23 +310,14 @@ float3 computeInverseCovarianceConic(float3 cov2D, a * detInv ); - // Tight axis-aligned half-extent covering ~3σ along each screen axis independently. - // This is the *exact* per-axis extent of the ellipse {d : dᵀ·conic·d <= 9} — it depends - // only on cov2D's diagonal (a, c), not its off-diagonal correlation term (b), regardless - // of how the ellipse is rotated. That makes it strictly tighter than (or equal to) the - // previous square sized by the larger eigenvalue: an anisotropic splat (e.g. a thin, - // flat-surface splat) no longer forces both screen axes out to the size of its longest - // axis, so fewer wasted fragments get rasterized, shaded, and discarded. - radius = float2( - min(ceil(3.0f * sqrt(a)), kGaussianMaxScreenRadius), - min(ceil(3.0f * sqrt(c)), kGaussianMaxScreenRadius) - ); + axis1 = eigenvector1 * radius1; + axis2 = eigenvector2 * radius2; valid = true; return conic; } -// Computes conic/radius/color once per visible splat per frame — the same quantities the +// Computes conic/axes/color once per visible splat per frame — the same quantities the // draw vertex shader used to recompute redundantly on every one of its 4 instanced quad // vertices. Writes into a buffer indexed by original splat index; the vertex shader then // just reads by index instead of redoing the Jacobian/covariance math and SH evaluation 4x. @@ -274,7 +343,8 @@ kernel void gaussianPreprocess( GaussianPrecomputedSplat out; out.conic = float3(0.0f); - out.radius = float2(0.0f); + out.axis1 = float2(0.0f); + out.axis2 = float2(0.0f); out.color = float3(0.0f); float3 centerLocal = splat.position; @@ -288,9 +358,9 @@ kernel void gaussianPreprocess( } float3x3 cov3D = float3x3( - splat.covA.x, splat.covA.y, splat.covA.z, - splat.covA.y, splat.covB.x, splat.covB.y, - splat.covA.z, splat.covB.y, splat.covB.z + float(splat.covA.x), float(splat.covA.y), float(splat.covA.z), + float(splat.covA.y), float(splat.covB.x), float(splat.covB.y), + float(splat.covA.z), float(splat.covB.y), float(splat.covB.z) ); float3 cov2D = computeCov2D(float4(centerLocal, 1.0), @@ -299,19 +369,21 @@ kernel void gaussianPreprocess( uniforms.projectionMatrix, viewport); - float2 radius = float2(0.0f); + float2 axis1 = float2(0.0f); + float2 axis2 = float2(0.0f); bool valid = true; - float3 conic = computeInverseCovarianceConic(cov2D, radius, valid); + float3 conic = computeInverseCovarianceConic(cov2D, axis1, axis2, valid); - if (!valid || radius.x <= 0.0f || radius.y <= 0.0f) { + if (!valid || (axis1.x == 0.0f && axis1.y == 0.0f) || (axis2.x == 0.0f && axis2.y == 0.0f)) { precomputed[splatIndex] = out; return; } out.conic = conic; - out.radius = radius; + out.axis1 = axis1; + out.axis2 = axis2; out.color = gaussianSRGBToLinear(evaluateGaussianSphericalHarmonics( - splat.color, + float3(splat.colorAndOpacity.xyz), shCoefficients, shMetadata, splatIndex, @@ -392,10 +464,11 @@ vertex GaussianOutData vertexGaussianTBDRShader( const EncodedGaussianSplat splat = splats[splatIndex]; const GaussianPrecomputedSplat precomputed = precomputedSplats[splatIndex]; - // radius <= 0 means gaussianPreprocess found this splat invalid this frame (behind the - // camera, or a degenerate covariance) — same condition the old inline computation + // Zero axis vectors mean gaussianPreprocess found this splat invalid this frame (behind + // the camera, or a degenerate covariance) — same condition the old inline computation // guarded against. - if (precomputed.radius.x <= 0.0f || precomputed.radius.y <= 0.0f) { + if ((precomputed.axis1.x == 0.0f && precomputed.axis1.y == 0.0f) || + (precomputed.axis2.x == 0.0f && precomputed.axis2.y == 0.0f)) { return out; } @@ -418,11 +491,16 @@ vertex GaussianOutData vertexGaussianTBDRShader( out.conic = precomputed.conic; - float2 ndcOffset = quad * precomputed.radius * 2.0f / viewport; + // Tight, rotated quad along the ellipse's true principal axes (see + // computeInverseCovarianceConic) instead of an axis-aligned bounding box — avoids + // rasterizing/shading several times more fragments than necessary for anisotropic, + // non-axis-aligned splats. + float2 pixelOffset = quad.x * precomputed.axis1 + quad.y * precomputed.axis2; + float2 ndcOffset = pixelOffset * 2.0f / viewport; out.position = centerClip; out.position.xy += ndcOffset * centerClip.w; out.color = precomputed.color; - out.alpha = splat.opacity; + out.alpha = float(splat.colorAndOpacity.w); out.valid = true; return out; @@ -452,9 +530,10 @@ fragment GaussianTBDRFragmentStore fragmentGaussianTBDRShader( } // Evaluate the Gaussian falloff before touching the opaque-depth texture: this is pure - // ALU (no memory fetch), and most of a splat's rasterized area — out near the 3σ quad - // edge — has negligible alpha. Rejecting those tail fragments here means they never pay - // for the depth-texture read at all, on top of never reaching the blend math below. + // ALU (no memory fetch), and most of a splat's rasterized area — out near the quad edge + // (kGaussianQuadSigma sigma out) — has negligible alpha. Rejecting those tail fragments + // here means they never pay for the depth-texture read at all, on top of never reaching + // the blend math below. const float projYSign = 1.0f; float2 d = calcScreenSpaceDelta(in.position.xy, in.coordxy, projYSign); float power = calcPowerFromConic(in.conic, d); diff --git a/Sources/UntoldEngine/Systems/RegistrationSystem.swift b/Sources/UntoldEngine/Systems/RegistrationSystem.swift index dbcfbbaf..3fd52d29 100644 --- a/Sources/UntoldEngine/Systems/RegistrationSystem.swift +++ b/Sources/UntoldEngine/Systems/RegistrationSystem.swift @@ -3552,13 +3552,11 @@ private func encodeGaussianSplatForTBDR(_ splat: GaussianSplat) -> EncodedGaussi return EncodedGaussianSplat( position: simd_float3(splat.center.x, splat.center.y, splat.center.z), - opacity: splat.opacity, - color: simd_float3(splat.color.x, splat.color.y, splat.color.z), - _pad0: 0.0, - covA: simd_float3(covariance[0, 0], covariance[0, 1], covariance[0, 2]), - _pad1: 0.0, - covB: simd_float3(covariance[1, 1], covariance[1, 2], covariance[2, 2]), - _pad2: 0.0 + covA: simd_half3(Float16(covariance[0, 0]), Float16(covariance[0, 1]), Float16(covariance[0, 2])), + covB: simd_half3(Float16(covariance[1, 1]), Float16(covariance[1, 2]), Float16(covariance[2, 2])), + colorAndOpacity: simd_half4( + Float16(splat.color.x), Float16(splat.color.y), Float16(splat.color.z), Float16(splat.opacity) + ) ) } diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-ios.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-ios.air index 8a065de111d55d8c5c796346501e3ea45eb63d70..01743a54c565242aa482dd9ae317a6c61da21445 100644 GIT binary patch delta 55028 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 Z9-G@+^isacN!JnuGvG1&ziU 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ⅅ2d5^J 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 AEdT%j diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-ios.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-ios.metallib index a9e51512e429d6e968fdc228154a4854ef2a8220..0f5c0af67d4fb6a84d4a520962168613ac968f9e 100644 GIT binary patch delta 15174 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 A^#A|> delta 14132 zcmbWd3se)=_CG$4WD+I;COij-FyR>>=m3h~wVD88eAU3UEh^RU(4s{RNR_r~UOWXg z7;4bk8W1a5Zf{Vl_G;TCfKsJxw6>*Q+eS)Td#`O{OIzA&@pondw)d{}UF*O8EN0H$ z`|Pv#IcLsf@AH{+?mv=`zmo(kTd_17h7iaHf(+ph7kXlQYrs52KC`!A7e{);Ae;4G z^E+2|U)P7<-oExn`E&P@&LqbtReaj@!2bD$L(6jix{41$;pTD9+Jxo&bIE_d_LnOc ztglu-8GF)L`0LKi@b*K{i{r)ef4+tby~c~{5gLpzlr%39 z66Rq4QbZ*Ltkm4;UxsK%mZXU?#1zXay+%|ZHku`w8J#EEgxKe@?BO)r{Jy9HaVsCP zYXd3}=rM-%_Iy1;6|@@s}q*joN&B=I^5V=FfglhJR^( z{1fgcb#snBYR(UjMOA*@M*G6G2pw-GA{tP2I%+QVOE5bkN>M5Y1q&*{{HXXzlvv@V zKLj+T_BLa>QZ%gyRabd=@6=+Jfe+AN^Dom1P|YsX+?tqZekQUAHSP8)F)R2%0^j_5 zq#Ct%0cSCZ=BB7p)O3n*EHM+*22||?&Op0kR2iyrdE3QEcA@GYz4Qgi4wUxiumjGI zu0`$BIc8CW#QbaYIs{Uh)iHYz_eM}8nZsgBQCAIzwbmV5hC(e~Iy0^eRUhH7y&H@x zLOtib*5<`Oi|U5FG@ceu0@_0pXP z5z3N>(*n#%iDif@iDkPJ!86WgNjhl@VqFEuX2f*qp>APv8ET_3b`spl8&IeXV+S}n zVV3d<%+Gux#n0R-%SAOuy_Mg~wxib9y|ganc~sSpv13h`UWRIJdg*h3rtV?vSQpL! zOJ!oJEpEO%V-u>G#$z4nQUWcOeY_C!cDevnXLyD4;sY%0CwReTJhcEdE%OSur9Ox1 zs=YLxR)bOvJl5-LX~63NuUwX{N2ymCT4KJI{uJtdgU3GWvYDl*XMo2(uYb>6hpKOQ z>FQbQQ0O}z+e>Z+SX3~d?G@;Nc~8bus9M7Er~PKH>qhQ|nd5Szk^5Y;&r2KORhH^U zII;8mzT(RjT%Dp;PQvXlnMXEeA-Q3~TV08rweS2A?g(pyInqVhy84|V>cxu`LAi>c z{?tYtr;pF+;9N0RxMSfEbE`Wh&gG6-CW>47)<3Dbz|?{?vc9stgt#sGif>mFk^oG^ zFD4|odC}<@&NV7Kc>nF-bw&E(dd~j%EBoVpnx!ws@LNRr`9YidrzukD{jW3z#6Pe= zU#)DsbL0{qbZH05Bx$=F^taK|yP8R%XSb@peMnDt%1=C%IhC4zXYm38*lGMuJfc$U>mID?9 zGw`=U*N^Gd&Iv9At)u`S46d}ub}~$~)YRe=zwi<#2g!q^NrnJvZI$#05+rRz!eFTt zNw(_{U#VM%_)F~uL@f2_kp!u+Kw7_FisP383PiOEg7e^Wv~k)J7k=(qD%^>{7c8bb zy!hF+ZNN$M^}=CnlS&*Eu@Ku`o7<)jT9{98^K+lbO}%84Uoq0nMymgM=6h~hP%FcK zu2{f1SJ@1kVCnjbEydMaG{vPGs-G?0Qn96Kt){q)F5R+C!4Ro{$YzK%b8%aidHLN_ zX6)OKXXb^l^90cbLK4HTAg~yIewu+ujNxAcMJnLZ4MY~;K%t1?uL61tEJgd^NNsC| zf!Gwo7tJ;h&&2RsL9sK2kI;Ptu9ptcEe1KBE<8rpI)yoj#4B{43a?8XqT39`j97D+ z5mViacu~?2Ax#%{=#1PlfxF=9-dPvSar+`~5yk+;IZJiYcs=HXg@cv*PR2*lTY5qzZdV z!?HT;vFHAnX9y?+_A+bBV+jgIIa=p*GD+ z4>~EwPkOLw+E^{{uNEAoc-N&%fAngocqM9J?>uYo{GaS?p|I_=aRsjR4>KVv{?r3? z6C622bvSddE~vvP%`K4Dba`44@}iy`bqE(vzXNySM{PW{omb-GrIY_~^O#P1ct{v^oNp& zuG^ti4!lbdzDp4vtryI+R5qgFvTgd%=NzHCV6jsnz9b3G$heSUnRzO0_CNBGs=+wf zviAmFTe^Arx9@Ihvx+UE&0G?0u(%r0kihrgY1bt$*k)!~UQf$9mv%NE*=bRSa)J?c zlsW%Zr@7%?h~K7J@{vM>Xo(Z{@u4@(uilHpuL$kskp3(J)t$b1?@?H5<0yN`Rff3i zk^y&sOcIb>Z&5e37N*)cOHBQ{CGmxwv5yPW90BpYCG9>3GMj?YWj4;@9&)20uApQ< z9VqJvh%jh}>G8g0J^l3^QJRvt3}IGlU~;ddyves|*$vLJq1vVWoTV3QmsF4%B;oOr z993XMz>DQRhuVD(Y8!ppYkVxj#BhIoSNtkN{QB(p5+r_&6Icm(6j)Tq`hi8x%w9=v z)1mUFgQli-U6V!A+ z(({t;e)R!~Tx*yJ`aJTEUVInkF8*e@2-_*=Rl9gW(sia{Wo!^~@B8KXSci^RW6QU; zDeC)9sQCR+M&$l~{@Sfi98*N?U^Mjy(}3pXXz0O2&=wosN#Uh(eE}90-IF6Bv@*o= z{c;7*=E09!F-BeDz5*E+-{*zZzb`Z&8JmnS`g}jt;1c!g!C*dTgmZ*ay{E&%CY`RFe zkW=rDIxQR|S|r3B`e99~+4U2><{G(~uSSIH!~A0GylG%C)zE`1tcqWQ9C?P&mNiiK zzb5OcD9<;8+I}c8n~>c80T+0$whDL_gktppRcOa>u7X;jDPEJ#gW2YF_V`HOR}E&ms4kQh33h z{%e7a%PX=@=@Rz7EZ_S2MJm2_XNLxgaonRtay|d?avQs zTv?GdDj970LPne!PIKi@A*=Ul`BfuIL2ioWUOYDl+3RD8`W+LW-tx;07}l9%b7J5Z z&B~mo;Y>^0-{9Dw2)I24s#DZbY>H9Oq!_s6!45cttQDpWQhmZ`u|o`#!su8hjigE) zhu*QgbP|o^YtT$3`~jS1p`XX745VS-%mr=qubYiQkM=9yDgWD>d6af{*^O3uA5R?u9!(Z)COb5A>ei{ofJeb|^T2Qvsk6jHw;e+3Lvfc6IGTqZbo zz663dh|PgO3?g&TpCU6J193@}n!AE(+im6G9pWp;Auir2&x5X5b$Abi;xnx}6rXE_ z1h~d(=i!H~LA&*yLc`<0Rxb&i``3rOmk@ZTnOYk=lc(`)1mgdS%cHs1f`f{aG|{q`1K-v{ zuM7j%;Ey(##4-HB*#;98!(WtUFiB(h?|^~^T)M%O3Al8F9FF1p%ruyCWB5&=SPHmV z2Ga__fuaa-83t1s;6PCUxY>O+9vn49kLlgKbfK2M>k#%u5mvg-!{dSweqRr3L9o_p zKn(ATqBZUsh@~rcdgNU$-a+jRUU=5h4*8z! z$1qFS5cRENE4B;zRuNTpJ#y(T`LBvP?1}IpcWX9C55jvCNnJ={HylyRvS;+kRwVJf zBjO^<+F@A>l2}nmqwDbZ!_FW#csostp0~c#cLTp6T~VcZ*C8}T%{4`hDdK-}jPlx| zR+MY5EpP}`vbieRpM@Vfg!Qsv;Q8ZeLz??=B+&a(A33CJ$;oO*=X4q8^q_xX5}nL5 zeb-<+6FAMH(r99tYfq88?qWAqsN*KPk+~MtcQ7eyty^iWTV<$Wyl#YFOdCK3eqAmC;*Q zhVy)G!c1_C?gOhOkh4I>WXT|Tg@V8vu+b`%ekkW62$Jn0;o~RxFsyaXAMD!=$4(SS zJ}#8p^B=R75KY?dhTuNsed8lNq;e$cyW#;=zyqCsgrR1bwi_4S>8rmz?a}P0453sX z@S9BnHTf=BWa?Ko<|-@r*(Evo0kLpEj3gkUen+Oy&SCm|?Gn($8k-U1l}mah1lxq8 zY{}IsE67JjV#kX6tp5Lz2SylLhgEHyMY>vLEr^U!p4Qsr3oojW zE=FSWvSYK68(pcl2x$p@l_22M4Z_)+7P2g`upFjt-rvlNKK9L$nvrES0f|k)D}rMKes&!Z13vnATK((MY>J?NMxJC28;Mw4!uNPE*C-&*!M7DLf#Y;N4zjx zC4?7?ll8X#1E^2YNR1CC{;YV3E@0tODy{d+a{N%{Mx?hX%|_2&mRF007uL=yHM zl2?>mO%2Yfyum36Tmr%4f#jm6w2nD{<{D|mU2p+ba6u`e*RQnO0 zS^YWJ!uuNWJ$FV3YqubtM0V@x@?p20g=UUBZe|{|9;z4BtM@|r_3-QsyQRfHyqTu~ zSuebJKVdCC!fh{z=44ZxY`HKx$U!3_sUy{__$>xQa(T4}yUo-G!Dj7mxaH;joB(Yu znX9hNLTEBqQ>)-4fX$*oQL7}mWNte$#O`HzUb8vob{*WV%gx;Tg)n-BlQK|Jr|t+F zRw((R0A%KdT)y9rs=!p+`^eI72t?8tT|r0$LX>0ZJU;?}759)Lf8dBnMXBlZNWtwD4_8I%c&s5)Q%PfRnEf`eSVh|Yg83{M_*>-Mypa`C?;(}wkt*B#Tof`{dWh#Ze- zdm2(o_>Gh=1uX(SV1i#@yPRxvW}0$Ww)-g39hyk#{#Sh9S(u|c^56U8Pg8rh!j=!} zVUZS~D-_W8ZkA0t$qTX1$XN^CU2p*16>U6$BJw}$d^oMPuK{9yLD*(61?MCkHaS5v zu!I;*a0kJ7Wy+Wsg*-V~sPaAVpFu zk40V&gJ23U-q@~WWBYZ0MX#ioSL1&+-Bte+(D80NPFv+Do@uqCxXlXj@EumW&lM?% z=pFRpPWNuZM9X9l59jfxoh-zDHso!E3Bq z;Pby?{r|NGAEB}A%=(`eT^S9+&Q=U~=KlZOhg*F2!p~S5_QKg%RdLydXSP~iEJI@~ z+B+)RU88N(L?JrMW(W*OWd z?(YQ!i2HsS1~-WNdqDx>zTa$vyBcty*a0}Qg~}`jtr{JCLps?0KP_i&YUbwFV(G%; zgcWSollUi@ZDAkS!}lN#kQThEvVpW9iR@v-3zHe~2qQLKbPDxpePDA93DSw?Bs(G- zBItC^yFz_BN~7U+XR;l6>`gWSf|1M#67HgO?YcH{&LcelMn`W*%}({ z*9!dm1t*9_C)_8T$JtFj!AqB)^vF*F-L^k;t7zj5fq&R}nX4y}KH=El%OpM@EhF?xORz zj2Y+aa+NKdMMHFd_9JcmLOlcGI2X0_3DHDrf95SIBo5d7FE~Ip>d8hp+zN-E*GK&6 ze*y0~^~#X4^j(q}XBFWUj*u=#$Zy3Fy8y-mKm!F&Z0TLe4U;AEwr29GmAq#PdE3ex z{wpcE_1{U6VY@def+CruC^U%oZ2N!bM2iu~ta`Oidl>xa1#%X%Ns$7);G;v3YZbCU zh4p^~IkplzUA&#ty9%)B9do4duJHhWMO+)ZXeZ61S=f&=WT4r$+^hXrm zDK_5t$sz7@jyc4}5kMJZ8TJ&zc7j_@lyWD1*~MENrJ@l!57HW_Mr|qQtHY;%o1F&% zAQUiv%li5v%P0*F5(em~7&{8bwqQe03-HrFclhfyL&lxo4FKY^LgPO#cYgcEPT9?u z8Dh_@i_fq6?DGr9zx@48hA1??cW5ggoAdO067o(@R)d=UNd4Krlb-+T&DTyn#SjtI zz$!MRa3Lu!!*tb5gk}-}=pGG0|2S9E28&^B?JTL$#~FUu!7282sSP%41Fa}TXSGv3 zj_{?#M>^kl{?jfjuy$6BG1#!YyMOoXgdHVuj|e8G|OreI^?ces}ms9qKDdiWcK&>V}aFhzo z$Pd(1GDIdIS{Wk3aC+Ee9a!GJV5MoGuyH}5ZUEaL-iS=!Xb_J&;{mZ55Qc;+@N`Y5 z*jH_PS+lXi)`ysYC4U6oXb7Byg|MvhE|= zE4zKpcl%VC1TO;OJRq8V;g#$ZFzM%fEl7%>Iy65U?#mI12Y8W^4TCTH#`WW+DxLNz{PE$s zZRI=_tK9N2qr4Af$uA|Az~WIwq*8AqnnR$Kr=qCM&;Am?QJ#)r>G%pWd0z1Ly@9( zgZ4RyPn8w)!`H?pLxPO|kgYYA}0i{g~ zI!gJGhxOxMq+)+=S;}8$_bcV^Fa?0I%&)h<*+)8~22p0fa@_+GndM)~KdSO)1`6Dj z@`oO=61oSPT(#eB?NAz#<2rpi>Tx)w-nY>nid&yTmA336VFclr5hQ=V-c-&#&+J!L zQ(E0hLsw|u;`4^(DynUbFa;KDRp?d9xM(mrg0EfvcYsI#w4v-dYf&+(F@9lQaL+d z(AcI5?bhc}V5yx_hn`@lOb(b;mEhUl@EY(ub0AQ4-WB?H{iBT1MNjA{hGLaGf=)%m zIA=ub)pD!C&*~qiCJKW`_GL58zS4#NgAsTwVm+-9Bo{1Gkfn4)oS(A25sJ8|UpT3x z#?IW1Xy=aX3kYYQqkmerV^b|}4*PV$V~dUN{%gum(aH98>Zi&FA|e*-lk<=mbx z7WFJ-kkLGm`#JE~9TM=Az7&l$O5FQ$DM06_qsuc#=3k~b327zZ8y^5vMVJ;ThN4F1 zKjb?DT1YXwDB9o?oO`L4<&lnqEhNc`YT*-0$r}w|nN0GI6Py?=#uFLTx1-jXlJq-= zQiJp@Ljfcj+^QP(OI1nKb-xi{AN?YLZ6yWcm#fh|oR7(DeN3MSZVH-6{Ztd{i>H`7-JE-Tua7(N~ zsbC2AwBKHNu6@x#`$D=z!w%}&Pm8H&vaxaeC>8DAr*CWo8*_kUf{l5?bbX_6VNf*F zkz5I9{MzZ_W#1Ve2XCe|2{^4VM7_y4&4I@%%FXxPF90;x&Q~9xuIa!wBpZZFW|Q6= zlR~`CY|>YWpVr$34royy*GRdbKLza4C83v#sA{lF-~ErwuaJ)Bl*@q^2Z}=np9H&f zcZ%Ny`FAB(^SN6phq+autNl`Hn){}kE(}-gaI6+@)8866P%1Q>%e;%c0UAbdCe`*n z!vAcUrnU@fBBV>`cio6a*GJsR=A$!0q~SSjb1%+E_Qn0%-a2o;4lXHV=A z=_tNIP3I9KZ*}h~N~gR`uCUnl78RC5VP6dGO13eCFlq&1(}Y{=-afot3R`glhu`*)z!ba zf-H=VyHwm~4@k`Si@**jeX54(8}Q%aUv~#uo~nkUwLSe*4(0cw=7c&q`dT_ARC6SiCnkM0{o#v) zna4}*`uY2FKy1X~ncu`;iIxE>$LgP4dD|809pRJ_kH3DEc#hYycE^-d&B>~~?KMp` zKQukgn2rh2&A;SW);RyVL#&&RE5=Jrf#4^W4pgiK4{&CF$T|OGFgvl+rzSQ_WV+N; z%L?HcQ^Gtt^qjwteQ0k_J~VAA39nJpP4hRx<42ddYsX7l_JljZzfG=ObPRB;j;t1rvEv$9!R)?v0MU@sw`6uupG{GI$ZHQu-ug&aV{ht z3DYvmVeXWb6C&5;cj~;oeq>6RM@OCu@tXeS57W<0n)aVPl($dkkQwtijp1KQCdU22 zjl7=&aupEJjaxWUkl5VEb{yU?&SyqmJ27R$w9pg%u{IoIr6QlnMNI0ohd0pd11pGq zxFll?%#y5d?|ao0HL}l9!jaQ;-5qU~U%-?&2M*yDFrrKcsa!&?zIIXof({`=v* z-u0-S5~?|`R;4>x^R^eJe2VNiSdL$S<@g?an3;oa&RsAEE%@IK9~u;}bD)_Tu5~dz zBQ(J~2U~$q%l<}?`tyemc_-oKAFjS;=AZ`5!Lj|xBm3Y-8Pl(EV$%nSyZD8}-ThwE zJElzQme|rPNnX?1DIuwU>u|T%^5Xc15AMO#?7pqNK4WCxtWNy)zHBB>`7vN@h{}=A zh}(K$e;PX8=U2Hm>MVPX0kl-zl#(Ml(|^E$7nNMKap~T5d?OTpR#;Bh`wzf= zNc(WwumTEPjm_h$ORmascxgr03W=^M1(k7tvb2Fw{x_p6iDZ<=a)5GuE2C@*V3apU z1Ld6Mj568GC~pw~<&No$^4$emM*9Os+ZE1eua5!ReKm}>av!7pJ)>PbpV6*WGRlEI zKv@;TC~u2pOt&-2Iy0lZEdVI%mov(T7cM;F>C@?3U`w%-8)q@S3fEdT`(T)PPp`mdeeu@nwWaGeR9GZ`;e=T}nZxn3TS z8^(Izb7MWo=O+<+DEsl{xcA(j(lS~NtTYv()8e*r8q=uri~gGHWBz`YA)P?^s{OT) z?|)?Wwg7;~!-TGkP*|=Nq6si;`Lz&@)rxnpA5*qRbZMgV7Uz91b9sy~TJEHrloT=i z-=9$+n5^GG=y7lw&`u5X<`%45Sse!3q!D}-{4}oSs0o;liE7nEF({B?Qg5plaRgxS z%x4k{C?kG|83&Ve?$Ao~M^rlxq`?v!x9`B+B&$sR^L`e}?!GnbfXFqNEzWAx&Cm zNXACaQDW|K1ipG;1su!4ceu5do^5EB5#RmW`f8KD9k!$RXoazN~ya_<^ z;K z_XgA7*FRx9*ssX!cgm_eHG*DR@Tqu+dObU=9nQ2l!>q6}`3$V=f~R-uW%8p`t5b+& zwjpKs^~51{Bbp?Cg*xUGHq7%F=ikp!HufurXjk?;Q~y2K-UR>Gfx9M)qYDf7e*++H z%)hi9$uia7wWL0U#-#*QlDsPE6kx8b+w<;g@5b%v8QQbCO+Bs3XNh@hZ?gHtCC_h- zh*LLM9Aii*a#Lcdd=3o>+Frw}QBEGi+xwbuOPem%3zk0v7VXptf*7!Rb6cPrP*|J_ zTcDZ%Z*^4JyMW&l1C@%v_tR1lfU`?QeY9{Z@liT&D;)xJE-6O6NAplP21^j$%{@|4~UU? zO>{~*l5o8w#}ydCe;H~%;%V|7TGF4p3Y;9YE_l?PyK0d0Xx9MtMI6usrwFf?pg#uy zH>tq5gz=XS2n9pT0z@%G%wha$CF4!Nv91m{uD63h%!NbdUju>jo3LxX9YO>b?$>ks zeDxT1T9`}Ra&35`ekMO#k65cW%8dZJB^DpYW=WUok&fz(YGYrJlpG|p)dGOc93Q_- zI&D~=NDruLfExG7jB?JCVR!9WTmTPujQBk#2`SKagi85~8+OkfuY0VpZmpF9_;4S2 zp232*ci%Bq*3>;=LvcgepvI~YTM4iMGe-cdw8tWa~GrFm7GP6*;6w&j_JaXN8mm>~K&vxf@wTFe8hmaZI%i)L?K!rE5XQ-`=P;<*LL#<&bEAK4rSB^1mJn(cAx|yNI z_0!wXY~Zi}pxA!nr8ZFDUQ8PUm>y@07K^OL5rE&JqFeKB)$S$990r>$TQ3?)ZOc)I zeC`9{%@HkDA!SDXC6=41{7cmC)%Mi09B(MPN{Ak)hyNEM+-1s0!GL%W71Y&I8#BV79f)-z-1cKtg`@7mtLN*&^rc=XJ)PhywjryK}138JqlNj34dm#%~ zQ=5Cg)ZphcZz7e=DGiVH4|IeKuByngK`DN3$iFJN+QBWa9OR}g1X$J#d2`Nm(;LH8 zEec&oLlL#L_e;5PO79v5P`WDp5OCm+oXH$T4gzE?k;66)UA=c3-!)}BHxZxS)VE`YXR`NhZMH{GERMaG(MT-)_2W_=^@d%0~ zHfZS9)}XY-E_H)X+S)cDQBkpruG`YCZ6mdocHJ%Zvn|_I{Lj4++ui^7`+fOw@0@ey z%$YMYcjnBTGyGzX|F$(=uy|>a5{3{c2!fiTAQtp((>}pmWH7&{~hrjFDCzGlw<#ay&kaz+3yk}do^K%_4ZLhC4J(9 z-OFaLj{4J$EA?Mw{iGS{{B_EY?PprQAKkU^PY3RI4+M1a%j~Oy#K_<*rnE7gV}CVh z3*vf~K^O5jb{S^_LOu`Bc>4#O3PiJ)$vH-n_C?$>MBYK8j1B_avHm_BV*iR;g6NMw zDqoAZd<=LfoV1Vdw1{(vK`BtaHn;*Ayv3k%#iSh$S&cwWF&~DVeZ}MdOw%9UMejva^ zf6EV32>XLr4Qh0O$`U5qo8!t+{fBhL5<5w4Ks6tO%0Rg{s0vhbBTz0u@*-+`7=YiG z>_qj^7}FEQ@%1P*8?*DHCH8;CuS1MW?V5zWh;auWpV{#%VE&2$(s?QngL}~su5cy0QVra>yLR$Q-OMOai$ae zsT)xFVVr5;qYm3outV%e(?jh0((=*4o?u%?@s4J$GqoaRi zGsE@wY3oqqtpL1r`Z`oT&Stb^%_u`%e1g#uC}7_^;~8`?lfh4f%$$A{xgKdxQpF?x z!?HKOwh=CKTz?Txin~q76)dBoUM_;$VNrp|T5QzTdqf3POD>Yn7uZ8@Mug1UBDQ8( zU6_}^It7 zgqAdM*1v6Edo%pylRU$93W=bS=n~_3{7>`e`Km)7PAhUDOkLtZ#Sb51>gXw z%P0wts){3l6@!d`3PEzfQ=rX8DF_D`Op}ZpQOUo|^|+iV1USJjT-IrBDhxIzh#lr%D}yt=BoMzOi#Nximw!`A2QSKD&!GyZYhG01{h_K|;lYJi~Rai%el%q*8A z5Y?l5DfLAHd836=UnY=qAh|*y-+<)L1j5=&ZS@dHIAFO(Ak#r|oj{g>3FH(=ZV<>{_fmwL=Z(XhGB3$7O9x~veWUDb-VwR2kLQ&NI}I|gjDt_6>BSsC zH@4IC#J6NB=YZ_KX|l7A=Zoib89CY508f#v@((}*@{YdAPGs3@=E+X;wxjgB;T`Z+ zzIlb}=tDb{()(TJ-D*}-}37n6q@_aaD)i&B_b- z+UNo5VjoSu2mbk%w-j%&zlt5u3?Xq_t44qF@D|PLMrWV2%yz5h^n2$Fs-75_BbYr9-$SrZWrsYn0KkMChPtH73Y}PyWEg~i%a*JARA^d2YJ=n^J^qN#c14 z=%W4oACov&cVn!t&EaT~6I;+N(jiF;b?2xssa6ne-Zdl}@fIEQHA>Iq#>g}lqlH8203pyahhG? zzXVwp-e*TP{+VY#^^=6VXrAWM0i;55n05*_z*Ej)Jm7{Y=7)hfXzXX-RU2@x^gfv53#^RY&M+zDPk*&-oF zWRG*E+WkMv)?62DCdv@r`pA$3H#-J2W-IhC7q20^!emx$K*Nkr-YI zPVb4(W$J8V34yOI!!~9{JXo>d`KSF<@nnnrvFyo7$ZKPW%tw0NO0Z2l5zR?jze$ibW%LmlQaahXrr8%@IEFsbm$*~GdJv(YJdEoK#%Jnc;U;W zQ+tTjUZN14-^YuWdc?4Z7cc9RA(>KBw%u;}cPz(`>uu)wZ0jpscK=_(9nTtIPHz5K z;ZylR_8(>x-pp@l;}PaWt0=#{UV$acf~d6MWy^S~1Cfnds)~}c+H=hsj)wH`alREg z@yWlZV}^d@cV^vclq?f!<%|^$*lRx3qi{--VMrc9KmyRltk`y8B)`bk5|ljuJf`9l zKpdIV&FPX`C;yj$wgA(Cq`J)r53JQloK$Zvk>a197o21y_keB28xVBn`E2+V1l|Jd za{^Y!u97>RMB!*5nSWP(UX@04&LK|Z5W})n3Q5SBxry)xup^HJXa3*z*b$^dCp$bW z_~!CAFVN!y0W<6tClG&|VRlmqL{XO6ElnT>Kq3QJw%MHnuxzs)P9S*G%>UY=E-m9i#FiPWHY|_Fv-E2K9dQ)yvCgGoo2B@1J75)Nr(-d1Fh%I_S{tv}6 z+z~n8Z$PHh_eDD4DNd#IpdxAvrqM3Nly;@G8;2`kq41Z z_Vcy{bY^8Fqmz0a znWs?^@FU#yMF<vj75%w-)Q@AB>L^Y>dG_Hud zr9B4;ewBqrBin~$-KxUt-bO`C{^8geyo5}_PcF$&Q!uOWz9sJ-npZ`PX;rY`p(}KJ zFf{c zQRR(#8#`kEc@r41pNyeXd$e6mJL{T*J$Y49xi0R0N8A{ET?TBBnzlg{qHE8*LCSQt z#pDT|g}Ntq(u-s%p*dh2X(5AzvLjEj!ohsOx5!OT{kpWY){n1;iv4YK4dJCRZaAt) znDfSy4cpl@PF%oRaxu|*jJI|W7n19EimT_z`nhg7`7pEojcAp077x1{r_#7JJU9qt z;L7vR9_W5%p*s#m?x#Z!`Id4*;TjFC3P&>gji23Ybn^x@?|FD1Q@t8L&+K-FXZVq- z7bw3Xk{4|tO>*c2R*%!;1%X*kujHa;OQP-Np&Fj2P@HT!=sSQ0l?(*JgC{HDPhztrzzCc|HhfOO(jHbGfoNlyXWKVj&7; zEplw3)A8kUG!geG*;sb5s@cDx|6v%caOWOw;0wGoT`P6!nKfL0yjb#dw8dwgUU^2?-0DTqRG2OQ90z?ck8< z5LeEThhzCRd=Nhz50wnbOIdPG^u4ctrKP}?blrK-IAk-5hc9l31Y)@5iOlMi#~L^PpJ-l30jVpq+d-Vng&e6oV^cqQQZolQp@bKs%Wd~iB5F(plVjHcMcTY{v=cg=U6DYd76BNOe2Fjp@Rx7 zNhzYJ=yn+e+VL?sZ&ShM;Cc}O8mB(5feIyrl?tYy1z?f{gKsyiT`scr<=FC9vuwpN2Pud*<~kunBftXoUHO;lSxR zaHvky6eg|EK$sE84g4rrHD#L32LXpIIIS}@InucFd08_|(o@ICkc=4b=t_yWAA)gU zrYV|+&}^F}ulzTg{D=bm-D%$d1&K;doqrRTLp-_^T@(_?I+d+Cl_)0SJgR}9*}f^f z_up(K_I{p`SuP$o;8egrI%|h9&_%u#FM@ZX1);0tw-HyPX)PLwxBih{ZW92OFC=jht?X z3-&h587cMktD zIFZHKDYL+K{@;bt|Ig!)(_$iD((Y>LELu`5oL8*5yqx!E71$2Jdte*vMc&3?r4qzZLc?hKt z2kfF2D!&|X?E{3RG$9fYo&kgoKxhMm*P~jfx+E`nV1 zw!hNvhR?v8c3E8ML$4sI`GVAz7-gPsgJ7mgaGrP3~o?$LTUL*DJ??CS(h{;FR0#YZlSqrf-u4s;Y$@bVPk$v72o zSwKJap+7N|KB650{)$t5=qZL~ctiwF4C-H?d=K=mK=~f`IVGFDRy+Vb=tCa_%D?SC zs!U;jB_5Dp0bPYe4=Pem_NBQLF+K(zf^%pT?9k-z0#V1IcNtMdlAepmr<|DBozKZE zLg4b~M}*vNa>3iKi%5!r8}rk5bQkpZrKxvP+;?Q$U3&IuihDx-FHbrUch3`NRe_d^ zjmivPUz%GX9iSS#Xakyh$K>OLEvWh$v_FOOm2^O3Lni~*$NoOvqPcg_ynB|s`)Hxn zSJ+m+U_dt5_ryUT51uk0JE&aP=H*!?cjbe}39;Ht&AK-7(=Ap|_L{ z?I0`6kvaz##*tO7hO=Gx8nCDIvr3KDjs2|m{jAhMEJnXo&feHb-LJWceuaCdsZm5M)D075iWhQwb!u5P#35+@69Q-`G-)~|b^fy@dW$*JXC6N1-OQGH*j zip0u;&D20?5;Qj{cwB3P6FDM;T(nTVnG;}s90X{`REO!FrPYrl*RraYBy zo||x&ss=2({&{ZB(6?)7VDI$aU1^`c{El1t5_oy=?GKI}f9A`-PkDg`<~Ll0N(P`7d_XZ|P9HL7kn1quy}b)o z+@oiNZLknDL#f-h+mz;u zPhQSjCyB`F(aE?y?akrd6;{^bZqcAJZKLj-EkdUaOT|x-dtNQg>~1LagCgm^_>>vE z)E>b%E{SMQaL}smhLxSHl?NMEw6RuH5!VblRbRxjnGqXJ5zlBN)+r*QkyAr9*SVD~ z^Hw^~t!SUO!gdaSQ@qujw6#xMs!JI#CDqY@${i8?@+lGbR3Z0d4)=tVdwfXNX32H= z8a3%N603l~eG!#gBGwm2RP<;^(EZY;V9T13dAU`#ONx|IWy;6esddVf(!&NC+6g2M z)1qf!6+IH|p5Mvc6I_%#f-M^H<=#2Bq#a!}S`X^LkB9;DfQQzjB;>YRa9b0S))5AP zXyjx-d(g@W?cuaOok|@MEjV4er$@c#qj>(4T7@y zOB46?6=C5EI%Q#6;EW|>@_~P45ZB2rlT!GqqJlRQtETW1JhLECTz7arHiwW}TX=J> z@-1=LdvcR=s}JIM)6{C|gW`H+YP)6XNrbigTHHD5StQ5kO;tOk7M^7pTZ#>T6?bm( zfC0(1d1D#sg+`j%s({BI6oWHfr)t)Hn6*2r-))5BoTN1`0v`KiKA-!6Kjfb>aPZ{d z`^FOZMuS0kiVXRc3Oy<}9p+_Wm3odyJ)GAs>xQRjsOE>1>MDNJ=t&r_OB-&@hsH%> ze=AH^QLmcaUY}ZougpKV5Dg`;^g>JYHA!pXE-f=JwYwydNlL z?3=1_GsRkv9F3EP)NRTfjUFFvy&$sY3E;7Ey)h5R##$w9o>?uDQPTp@mWLwb+mLd? zK!zIVCIfxSiMBZ{k{09%x}~60t3>v*Q3;KE`JPF$&`T0w@;(K0fqdE3PZ`UJ%L^+=cV>NKQWoJCtDZ=ECi8+O zl(TXm^M>l>h|Vw}=&q1o-GULWX)H9W1&z7zR9> zNmxhxhAXN`MOLG+8J{&>GA<&9^BP^JSjrp*Zmn01*Ya}sosEu_ufPe0c5G9NWIzR8 zP78Q-`qs8chS16uNw*5TT>0R2%K~1#-pYZ@?s?auYk3M?)T7tteZ~u7m96vqqgPqt z*O?c{#O}bWfAFuY4H~2Mq1dvzawM~#^qq4xB2OHLQ<9G|e@3DRX zxMyuIjh4%e4=GgOrsYPxpV{x^^#GCG1=YMPSwq!8Cic$VXbbPSG3tz|fEu^(PB^39 zrJ)=Q^s1WsjwiYfd?+etd`L8$cL9p_Q}Gs_sj8km%S6wDhhlV-)zS>U|I>!zSc1iT zvXz;`t>Kb!DG+hN75(iXD50o!vDXAjP?kvJg%_McE6^*de*O!7fi*7#1|!-HKX;ZL z%M9T|${XpNztb6E&0DyEVkGsu@V_hKMgq!|6GXd)iUabUm@cbP-c8^?8DKCPDtCNy z?4g)USqO05%BcNWL5;!Id+Jc6@ZQ)Rt7(go5*Zao+ZV{HD%U;To*U!-&=d-*0SHlEoi8|v5R%i~Rk zBEw8AM7`RC^(qQtITpa4MKmgK_kfdZmAU7d@p6U`i>n`bT5q1qlgwBj2pK8MkpX z6+YVRq;_F9^K?!_VkXd9fq#?LyWmy-e3?!!qCMmi{9D0E0#A=0m!2fX$_L|z^B(8i z5u60tUyW}t6wMbZjd8292QC`?v?fLc&_td>2{M2tGNJra-ZnwJpH?^yWN1?21+^YK7 zo*AkU!K=j8Cil4mZ7 zq?g{8kLoU)SgBiXu*{QIy_8Yf{B;I-cF0g;Rk#EfR#SC7-^eTzd=j>2p?HVMf9`-c z)Vx3EpNMBq`uq&x3tL86*FfRb()+`HZs*j~;t$mK&v_;luC2;_vBR~;GS&9sP>oe} z_mL`86EZF2J^A;#%ZgASu)}0Me?T$UyniU``h1sQRpY;jl?L6SeQ}CKh1O|GZ}Eu03~>yD$c>lZA`&t5c0~qJ z%QGxdv%w06;v%OBtm0UmtdVN-i2BrcGFWj`;iDc(rFjj=-{NPV2J*`ww*IQP5Py9H zy%~aVa9~?L&a5*{zM+-Vw2sgTnh1_9dn#my0*$OY9Ez0?QjwL1V2fbdyl<|iagz@P~!<(!}uGNm6xam(0| zaA3<%16wzQj)l&=ZeC*bq@h}@m-9zz{I}N-=NMq=v;Z4WuQCci>6`)Y8|I>bmWdN} z9#oAA*j$`ZuPFYJdKP}Y?+ql-F9!@0E!SYlCQstHNbhgGr4AWxH7x)pNHrJJ024Ig zU09ZLi^Yi1Pl)m6Vb5$CdDP03i5f+UC1p8*R#JN&x6&UbDjIGr1zRKbOv!j5yA}cq z{moXz606~%*jt1>4=NeVUvXn@OF-9K6P2izU>#fH17izMeO!sB?8e+cC8NJpVw^-* zvJx7v45O{KzX5bk_dE*NJb2Z;b64s&Go7QDJ|V?7&ldfbAuLd%CgE}Kbf3S11$yUi zzjcm_?i?%2-};R_$F5MYR#TyQSul-cL-_DDu?Z zSQ*e;-x}x~1Na7vv5$Jk8+>A40+>)5A$<7!bJo0ZFL>b(NnoOZMfOK4XzTkC9QRDr zEQJ1U>&GV)l*ht*%AOT5Uzcd#Z~YEfd5mTyiI3aYLg4nXa+fLZnDRxdArJpr0<7uJ z{CoYBN*^b!`7kq?5!3Zp%zeJ?;{GO>sWB$#(L~ZzzBSv^mqgga={3E4JP`5g@$9GcfjXb%X?2yKR~Hmsds7) z3#Kx?)BjkEU*H^gV|QQ#3==hKuwQEq_c6`usF-M;$n(*o5%~H~_x6mH@9k2K9Ra5S zvG*)CD;vzRMHg=z>kMdAk?ho{nH5X*A*QVz)-kf+XMU44aO2pcY4*zF78$eYuXP19 zegZo$Z}Km)sIA=0$NP+4M_nfzYp^z_tN8uC10K$L-DMYRde1t-;!Hlxs{|qH18|7> z4?|f)3U$~jd@iw3cUjI+EUt=N3WC<@Xc`8XrA;*R-)Uw^EX{mR1(+N6(abgh&Ad4t zFsq)VnMHeO=4w7*?#Q5-@60pM+<&3D2cu~2^$CF6TSs#jw$j``(A?TQn!CP`W)2Gi z%<2T1d3z!)x}9b=+G*zP0>Er~l4d@*kY-*^Gs{wG<`C$Ik8;SA}PBjLXvM9zzHt|*b=h-p*~+W z8655?%;SPP_9`K;!@Qw{ytwZ)=}v>q^Wkw(Avh5OYa#?&%fLqRF8(&Dnb>-+ALMwf z9&J5UI(8x2We(S9jCrw2aBd2i_p_c<>tDrLBD0>cBD*OkIh zdZ%z7!M9N3U=VXL44iM;Rk;`#%q+E}f1Y0)jrmrC?~92ytils3!S^ZX_8m|JE!TnD zHlBr5kvk=&U^-02(wWWW77Bvsa79)K9dx|PE%b{_gfpBL0j&d3kXn!m&^9LsuQ1U` zi$k8vPT{wJ!U;4F_|bPN1P<{B>}bc=-=XOS;O3D&B2T1rjEhKwpjm)UPl}0jg1#8g zwBVUYX*wi>pkshWi=Rj*_}zd;$D1b73HlX4GemX3i`n{U&_h+=*YHK%WH>+#b>1(RX*VWcmRc+stQMF-bd4igOru!A8elw&5{TvvSL;H|e)+UAJKK_H{M2>r~a-wKYImIe<2AD9_)X zy>@*`{`Rc3>z~S8TcWeW*TNm|ZpEdJ!?W3mj;JnpR@2j6@R_H(kd}9l8Ji9Gpjj<)sur`xr}ZviZuCqyXOk$Qez_hB{&$+YjU!ngTu*j5 z{oKCE~e^l*Lhe zvve2t!P~VB>NmkmO`&0z$Kke2da}mpxUee z7oQ6#mllKR9;IWy4v$1T;B#zz=O)I&=z#DF71SfglZiqxbMJ zaBl-#=mq$H$KOD-t&^eyZXIsUF$g76|LZc*|90EA7YUZ)KL#!o^_Z#$Kw@ zO&|pT`zwL02g#=d(g>2z2;@zW{Ea})gX9YWxeb!92n5HodEMkmIw(efSQ*4cL9EP; z@IkE1r3SGwG)`biwKJ7r`xI-nFT1 ziWm^6yKhcC2uHb;Q3K|v0p$7ur_Ay+BcXu%CpA|?a(ZcfH@!Q`IR)W|$q=CL7t%X@ zY1ftWIoXAOQiHoPA;~|>dA#~f_QDnTTq9&jgu|<+Q}iO6oOb~ zPw0cuP)Z_5PzbVlr=6imTV8(F2X-{p9A9h#K>@)oM8 zM%Gj-Z`!JE+V&rJpo}s9c?YVp$c)6);;NU=pDG7U((@nWV<&sp*RgarIXKzCQsf=Yt#Y<$Q44znt%t@oLGi|G}$e z5ioXMaeLzOue(%9k}^bw%01xzue%gjGH^#>YjD_~eSiY3r5Am&`OU1Do4p8f<>u-~8H;%w1p9cCHcTxsl`-4b;k?Iinp3uez!FgFwbAC+hk~FWykM&;$6`b*6-JL<&FB0twSQBK>ncTB;%^PF<&7g0C-g)C0}wRhlWnGCS`bC0RA?4J#cAs`TF0I?b!=TCHu2YAcBdP^xT)WzMFOp+3pD3z0Q z#%K}&AGddq(`#flk+hFnuQRgXrO#hjt z^V>0e6r2an0tZxw5gCcE z#3JD#m8RAB1o5*7U{UaOmAX~_1Y!6Ipm-EqneW^u=MhnW6_Ua3e8?`BxGO}J5;aR6 z4lhHVlBn0UZ^{Wm+cyzB?P-au@v}xZwLTg-LKDg@MiIRcT@@lB_NdZqJwr9rycOd0 zri14Ws3s2%%ec3|{pq5f2=*#!Q_nYg&Y7GcWW%0x_R?q1p7TT$uByuIMAAb}%Rkp$ zhH-d>Sa0%yl04*ijvr|TUh7D#VvCz40B+{#ME|gnn+TlSdeU|do>W*?mHRzK?Ljka zy}-?^lt-}3s4d{icY`r4q*p$yyIdR!1lE`aSm2+m;Be#}!tsy?iyarL(6Ocqn^5pz S;9-FW2M_zqg-wJj?Ee80fi|%K delta 14048 zcmbWd3se)=7B@bxOu{6i^6HZ0}wFZ>?{AEN0Gc z@3YU|=bSm2efFO7_0HH|46#9rmMqMLAq4V+pr%NO2R*NE4VsOpXZIFw!DM}hZyug8 zPrdZ$^_QPc-g7YE-I`C&(@CE!So_$Qr@#5$+Oa7Auge4w9cdZEo}#CP4*!*RJ@|rq zYIWM;B?$*pJ9~wd+TN=ne^0$s^xo9QU5O!s;WKMss{I>oZwPlC{Y;acm`2+J#e zHHcy*M=lT%7KT`j*wzCw)^d)hM7)h$%~6uHED)9=?!7F@^&tqieu5wYmd}O72-Gv) zem$aimxKF5Ny{x!8NyuUNE)$2eCNADa!&8 zX$cLiK*&Hq$}F9Mm53sWgA7@TXp%UgqhvK=%j6(CqqD_p5l0S3?#m!7ABn3GXyHTh zsi10vDPc)p*H98s)L2&b77eorbg7KxJm+a;N7ri5p$ofX(D*Q;p-5`M}TZWpqrpbw$xD-2y=@Q zU`_ENN)g>}56Nv2rKk-@xdp?{oj8)Fo37XH?|8EM-DTe%Sh!__<5>EEo+X0~qi-KA zH0?Nj_ni<+QDi*o2=X=B8L36=DHbxS3H44#EoA{<)}p{7nu~%3m1KET@+9gh@!{(L zlPi7A*shdLDn&KV`)J?P;#S_LXsG3vNyVtyh+0~clP%9hm!j^SJ|T7mKS&Z-evek8 zdawK1#YwlI^shdAM!E@wLNRW@MX~j$ zeJW-VM@cQe#;!!jM=k2O?Fd-|iWEykd<9BsF-}`|d?l*h<-^$tm8j<+#`SI>p%gX0 z=hHSj@dZ@zu@4g&LDrMAc_Efx5{pshtA|X>b4jaE^_Y+L4W|lG`B^$rD2raU8Bs-Z za9>7{B_+8Mp))wLJNa3JoX2mCLWw?FmlkY&x}6_pd7ddo$s8YZc4Cm#bc`QrA<~Oc_2WL~#`G6a&1N4a zGU`yq%;&5g&8S3e`+a-9wRQC~|dtTp7U5S#P`S6Bm zD^d3^e6E+gtWs1V6mY!+9k6WAdKy)ya`f?l>C+A)f=Ek3UMvFPmgZO2z{{-pd071H zfUg7!B~PcUS5R;}OchY38AyJF=w?@PXZ`!XL^>l(FeaOqt83gGrk+1f8IrFI=}$N5 zus#9SfnBo98jgp!S32sl^B5}gPcmF{*1g95gP>nV1<>avVD}h5zN`r8*pp29f zmT!*7VOQwfP>XvwbY-c&tP$IlcxhLn-!|DRae@|cQBla+{z=MoX4mVcpu`7O=&Pls zTl+5vK>rp~1*EAAlV)sf(hny-i;1sP2@JF#WxImhuvbqD=JSyy^j?I@SJjtcv61;Q z1S+B+=#%5_*Peo{zX!tn9H$eK$KBmjhum7*?ez@zw>4sd92 zK@clbG;{$1J^-}fST>|_$-DH+Fv&L3aV!N-bl4-EiPD@dAPFi6s<Wvi;!m2Ft3DXUn$ z;f0EI)$3}X(v(#)73(%CS&$AuE(RRkZa=v;^_wRxi~>9C^p9l5T=hL z^s+&w#h@TEMF*LBmnbipe4Xi25e>l9s+&8nn@ZW&P2;2I5hP0lJ>OXJTn#tVkBZV(=z`B!BN z|Lv1d@ypdf-)T$z#kQXKdA$M(FOj>^x28; zY=M~qn_YO34>jSEi#7lAzc0$V&I<>HE3>``|FJx(YdE~tNpvYAw2@?y zzEL0kqBDF8EO99%7o?$CS!c4WQ;%g#|637KJCGn>^x^rV3!k0*{ReB?Y!YkDb36)e zvg)>@VZk55ldei%wojd5eLG{usf?3F$Yv`!2@6HkF_w-yLjh~2DMm^VvL!*(CxFgb zntn_mE{Pmfkp3hBH5@x&?a%oU%qgCD9T9WR-7MT0DN)t;u z;~y7gID-;<%iH~SXE%qUi|p9^9%_vtp}73KI#}Kj6lKs3F=Ks;dionXVl?FmS)v)O z!KuB{s%HP@Mc1%JgY^shv4v;r7gSRkBr={Kf>fKU>)^I=M^XOZ8$!(Z7|C_~P ze6xbT!Oahmtu&Vv#)lwxepp5O3)u;MDG3Puig6OyULhNtfYQV z29UfM3q80Wvd&I)(nN(qUyMh@_T))PtsL?Guvp2rdx=9foE4XPEX7}fCeLk|`HNJ$!awawSY>*-St1qSH%qbVqOi3^K@rfEIBBAx42=c9vGxSTR2m1f z9S^SM0rWs~UXuCMp;{7NEO|sf*1x+?P&abRuRrOeWWFPK?qYg&@0WGRYuPU%cbe1q zq2B&0!KTI4Gmhz!cD$z8RDQV(pJ-SSkTW6I6obvGxrZTP%LASe^p8;BO@C4{N{;py zg_)LC&lr^sG=Cu{PYh+a^XRbUJG6q@kwRg9n)ON=F9hCoeDc^&u>WU{a3Q-YLcq1p z5}y|b@3$1@Jp*T3E8l|SL!#jJIH*BcPjmZ*Mt0voSl`q#`qXil?yAb{u&aiq7IGu$w?VLKNjrsLiW5}cZh3{9rd9DB#(_pjU zw-CXKi!QZQ?Ja9jK1VBfS0ze@$C&H_qagqIvHwiNv{eY_rdbaQK_;E_v5?0UoD25( zTQTsrwkny=-39{@;A}(wz;5j_w}OttAy zVwMdO5*nL>PwcaWY}I>9437g{y%cmR@^k*H2)x;%cq)D>U*lZ^*xRm_4B=~4l8~sm z_}0<8>0n!&sTP@pIURF=V92`Erh18RDooe#$hGI#YJex^vv+;)okVn`d)=jHQ& zi@v9awZIu`HNZ#r#n7EB|9u(fj9;ROF5ryE;AHckow1_Jt9aebZ@tF1$W)!GrQum< zq}e4iyDn@u#F%rxewD>Pcd(d`A7+RydxJg&DA`bMCk`lxe^7R|YA&8xxY?`da`X3S zukj;iEbLHh&wUKHMhw#5JJ;h|pzoD2l~_2CoxxdhqUsx^3Ezc_oiid;Zq(M=Qo3i~j4>70f7l0HE$}~z;3z}ukg5%vr>ifl2i`AcOrMw~`pq3U zwYSX8*V>x>;d#}v`AB?0ZhS6sttI-f3_5k6UfSV4{S31LEGvz%qb?8)`tmI%HqCJDoP#K$9?ul78G|Mb2NwAQ= zi=Oi0A?A!mTUCX?6{Dt24=C5w?b47*xM6Iklua2@bs#_a~M7KHZuvnnQm<5U|g$RN` z9K$*aMRQyN`SMV$2%axV)!X}bqkg3$b$(dlNy!3T(AwZ#NO;RNN;o6#lPO{ zFA6p-s-Dq_B<JRr4w+~=HDdV(%4pc&s5zJ`V%6xhlLAYzxXag;C>GpG8 zgjUQ8LZ+_H7XWzfne_vXD4fhlbtQU=A+9g6*8 zgDy7{Gh`_aL>Oq>RT9Kf8v?LyUFKYfSdTeF9JGN1z6?0AVNqBIb zeTve-VW>5G3139mVm^ET{sI+Ir|P%iPr%wbL>H1pn;|)r3|+^QB6U2PXCsi7%bYCw&DEDM}Cp5!Ln# zR45ggXnz`-2YSFplELi?%H+y6=PzydQ)W6f(Xw5y`@z%r&hF^%b|pfmuH5DuVCw-B zEY{xmbHE#~E=-s=iDctb9Z&=AnCS3;`db|rwPG9#$UMg%_DUTLAX%0IDs-5Mq%H`jAA#Ci-{vQ4(aIXCy4^DJD2*##BiENt#CG0kcPi(R|{4U9W z3-4g&cY3xOJ`wAXI|tSL$av&V$ccX_~dyV2>g}By&#TPMbz1} z7V^8$`2U|kdW6Aqvm1Y!cWE>PKUsa=JL~@;m_C)d6HbDyPnh9cytb@z^>gd3NvqK~ z>vc1%)I!jzLf^D71`lxRYe;^a;KK}q2YB{JGYuZ#**^q@0#H*8p29eR1jqr;9x%<| z0iJyaD1c`V$TE0^bZ@#D(c3KT~nUt2hE=+y0QPWsKK^ff1*XYpnDk&pWQK2{pqnR{-gE zy^41^X^>1f1mVxo_(lfh36DU+bsGK=8)5h2bs(hxNHhOEj{H<~EoD}vmvE`S zb=?j8ES2rli!}ZcV;lwPgR{se!5KQojzZB4_Gum`J856?-vTPsE01{zyQ1tki`Nc& z2s^{qf(!*DT<`vX*7u?Myp+58Ho{U^_qO*OLg@??*u^zwo49zt#U;A@$f$AlZ8T@y zU1N?ezpw?HH^}toKGN1N(z9t8*SwZK5t?l4&%P;xB$1l`4eu$Fo-)CaHaPOMKI%{Z zbNDZ+mxfhlZjnwosf?_4hIKi^ek+UG0{s$77WhttJej{fo4=uu|6B=wV^!0C z?Rswh_pZnAyl>Y7MYFq}@DTnB?f<>$nU6pg&l`Q(ec+7~jLqkEJxcHb86AY&%aA!L zy#Eu(xt`qY=5MAyP=d(yt}}ywg%9XUlKS|0n;Cwud_l~hQnvLfKYl0FG7VEQpU?uA z#CYu|r=-ty*C{cM0A!43$zv?p32u2Yg`1g+ZvOlj6@xGZkk&w(v=!J_`;PxMy#NB4 zOF+Cid(GQdFiWjM~^+tf~XBZ zD?X@nBWZ5KWYtuJVLd%`2fWq)cB*hUEP=K4(_}_JSL8k?R_5EsIg?MenAg)!IiY4 z{JbJ;HXNMVc+A_}UXtG4uy_D8k#8zbd|XsD91Qkth0SeLlfQFub)kDiKB(=K50uOM zW91Hz2nmY{I+49?KO;Ow33~-X`w-cFz7b3Na3txHL4F}u?n30;Ci4q>nO#*b$r9Cw z!@sb@QB8Yw+xF7@ckImoyaIrO1^WPSv*1+#hDh7_#!>kem;4V^gUdl}o+vSNFBLCY4m?65Qp`=;?X3{q@Fhfv2|3i@ExSxGs$yWz#)edHmdG6!GF^|J(js7M_IAMDlEwtyBilRv8ln}*7jpi!eX*M8P zPHS~b4PD`V^G_QVtLU~BqBK~zUa40VCd7it5q|9syag-$AT5{Gxz=iOf~N)US+ ztlh7`aoVB2)h*H%bWMxYlM8O6XlaYIJrCS&8^FzL1h=j}a2rFO98CA*BT?%`%G&Vp z+h1A-FG%vtx6b=+#>Md`(=U?on|-$dck`Sl)jHDyNnc6Tne+j&jkiLrGO^3xqx5~e zU!sg6rFNN@hqnN_o0k-A6v4~yu_XIwXf)^^(5nmYNguF@Y(V9$hG#?>%$%yhbZiq0 z8rxOj-TDF=EVX0m@WU+1#=xwqgfH|))`91l2Z5^7?(nztkFr8%z2V1L#0hzYoyw>& zY((pm@~9$D>K~`?mxPY&%w?N>rHlL<%kXK$ds?F?9$2PelhP4&dP4UaDC(?!?zoT| zKQSED&Kubo6v;iuz>IF^+Is#>?&*TZ78^(Dz(bRYe$(sgbb!$pQz!uT4fK5(Hk>07 z_snI}odsggi{P<4rQj)jDZXoxdUod10OzS=tFlLOF49<1MmhK@2ePDMT#J-JF(Ww- z>CT`QO2RFQHux}hC;g%#+PSBNqBvGPe0U*stqClXaoTwpi__wKu|Yi?v(lWR-#nNe zqHh@tqR`M*)lfjXN~&)7jRb-6Dt^RE%$mvCREd(A)RShPK(T7lg!f*y%-)IYLf<&aKr+X$leprGIm`Xw;ja$86` z7{VRx_m^I5pSQ;`mnqk9gSzt5d^(mgnZ^##v7ViJlLWHc-f+V86O9~Oj`;tT5X6q#~RIp?^ah??s;AY30sFiy_>$G10hE)aF=WpzAY|| ze4CBJmr0({+t2UTqJHj?Dq(*b2*ah}7fb04APnF7x9qQwj%{fdgU_BX3mKU4jp>1(f$a6!rx3sy=@VP7K7kj_F)zCR*$2*E!<(KaW z8=jJ^*SpW}MkPSweFWZ~#@B|_)r|5wf#CgpNGx*X#+&KCBLn=rK+rtCPYxC=H@5L8A(kPra@N-$Q)?W+<2bM%^GXG15poL+-}DYufTrE{=7Vk-4B@nQ(1Cj`u*)< z9W5}ZnF4a;-R>@ZcB>O^9kszSu+z~Q{hQ}^^=EfsGrIC;boI}# zrb=QHE|m2-f|82@qVU~?ezil)HF$nYUn88TE|-9jLFXdhoi5-J`#^4~1)&BrBue)i zO3|n;RK|K%HQ4T7)(D*Ai|r!ic2O-(O}-}ie)?rb;xy@fi;%jhH82-FSRFG!&Qj~( zNRUCwweu?kxe+Z=(MmM}US&(1F~CQC5^;Bp$*6JzlQpo!F=ssue09=r074|TDs}5c zE6l|6l-U`%Ip{aqrVfh0vM;K!I?bY)H+lY*_JaLbu|U?IkHa6POY||GP}2k2_;-AZ z=4I_H1^&$4dFlq8VO}Nak@QKhcQyaSS>?*G3FQTD;)!%lxkma>`7xa{{yw$Dqg|~D z;_4g|bs9oHOCs_0W^jV3#)dVk9X?}C%F9{8E2fw%h4 z(EUFDw>`nu@QrY+wx^%YqXYh}IjjigY$;;L`=JTYFO)tI#A@VKq!KWt&R zWvs%X&)Jm+d?TL7z7u~XTh7yYw!qYyVRyK1gcC}CG zZ9+?p*n8odan)H9%mRDl^kARre@v_g3a(}~mxE2!409gP9LaV%Quz|l+*K5HDl8F+ z(6Y;6)`XVBV)w=O8+^TfWP(}1M4t-tss7~;)h~{#4xBz%uv6!h8;dYgo6JE*xbW6?OQ!2U`Jkme?o_Ot~d7Y+DM$^iv7kHF{Rh;Tg`9}tT_JR zl8iI3OS0Ot^9^&%$WCV+t9mo02C8rJx9(fl=Eo_CoKWJOt4Vw!+NXKa1e4Nl-?z@E z+4WF!CH5CqwFxZFXW_V!oywg096UYtK6SSV{6Zatwj{9mXfeG%Ja<30!s{#(OJh6M zQTw2bV|G7eiXHC{^HFvwlr4TZe=4i!1+dbuU83_GiJNOPGg7$WElC(39+?EcwQq-S zJ*p>|YV3{LOc$r#{_=!Pv4a51@e8mVKZN(ObI^_526NCtyt!}hfRLL5&BSnR^O-5( zNxnH)513l+9YN_&@7wE}gd2aD`kI}CIxq(ZccqT(gdb&9AI0J`2guvRnSI^;KGmBh zRO=SlGps2-)!GRrrGIx{w@>r@#D@>=!Nlyor@cC5WaqR_Vt8jRyHELd(A_~gPcbE7 z{h3`E+x+?bcGS3>F^~pmZGpcS*%M+jI-|Zwy%P-q`Oz%p85lTEMsv;fzyWs$& zeJEo{2?a05XA9KjmlXuOusULiRM(t_$}u1;Yhs1JV}+&Btnl4DAl%r>3Y&vi;b&uk zaNc58nA*k)uM-2|j>)X>?KxUj`eRnw9mz_siUZPpb*yyZPFDH{R=O;Qm98&jg@gTo zuquuf-WboSZfAvc7FKv;5D?ZcW`+07XN4bUg_%@VcuN8+{0=KzVr7NLSm9aDr&ww8 zLWuoT3PCmWpFak?L1dfnar~9wgT!M11)*)-tY2l*2=^@Zx~Oylpz%y4!~+@2I6$+1 zLE{&TC+b;DSj}&M@L{5wE!ot!Al~O3Le#md#y)?oz}Vcny^0<61_!s*ufGMH?- zb`(B!?I@ys(|Y_RUOaMy$9--owB~ODn*5$bCnc=MOd0g)d4J9Kv-~j4kV&Ef)vkKT z|37j^TM$UB!=$c~R9cIkM3Z3H`ofcFyjHS_`+V|zRF@{UV1B{JQy0gHVihjhMavMw z|M|lS1XGQxNj(A1@Hy!7z4^r}mu`rF?XoC=3Vw!AV`>r>;Np5USq2KEjMCd1#Ta{H zfc-FH1!dHaabsYjPDQRjQA{g@bbzM-7x+UPmkhlO!!&^G2Mh>O>-uqhXAk%uxs(nE z^#A1dGYTN0L-D7qzK7^k6SH(Zu`+$Gtm(&Oh29`DgN**4)A@*8=FlTCGL0ca)_@sO z@sX2pyh8|l*=l|aj>m{i9<6oZOK41VM`2;elMT6(c;KAe%2|T0S%Tx)0s~cYjqJ+= zi=<;EdJKskKN$CaI1^_DpW~A)>hGTo*tmM-^O|+F8~#Y-tH4+KVDN(ge~dv5&cc;O zw9q9V2@JgLbjcNgApsO03k-8Waa~|oxt&%!1cv7TH6$>+42l~9!`q;^DKK0I#b*M; zPoPi(RSh6tp8&G-pMV5@NhQ-~Bb+INjNRY{S@@$2I0k1-CEsHDJX+#B$j+ZO++q0| z2g|2>0iS3FiFt5z?g%M74!+i(aLEV%_*x$l7&7l;5&oER_l6JDDynkcry~5Ia`y>9 zNUqKMOoacWRMQPk5uSj%sX|~~8u;&t6JVK&;~*=~2zxYmm4jHVC53B9p*ym$8f5`3Z9IMSXQbvrN8VTc?6UlNNa4SGIsr470!d7NoCUGkgCXa`5$f~O3*yK|HO)kGS#Q&G;D`ehm6uj}e)L@2T*Oq;Qp&>%Way&2?Xu z)Zh|*CTBJ5k^B04jqUH-pK=}SS7!ISQT_QZY4XGrqCJ(AjXo})>`k+hHG}~*;xtCXH>MtB*+_|&O{dZtTGyGo% z=bEkCd+(PvP9r17@(+%srGT2Kweua!;Y%L^N}e{l4JgzY_p+n;SyPpb7>U|HXr zYI$YBOY5T&)J<0LH)uF~!*ZuTJmmR0eqG`CA-Ww$MeEvh@xDy?b6}}XoDX2%;rT7l zH7FuMh0jsl2S4YS$`1g&Jr1f6gHNRuVvx(O5ce^n_2eg+{Pj#2j9pNU`VQBja2%8g zg|M0DmN`HZn*)yrd3O+~?FNLvz$U!~c!eK;V^cufH}W2{JC?1{0*-e|O9J4zVt~-S z?YJtPbv0}hr?;M7i{8=hp{dK5Q=KR%IG#Jy+*XqA?SB+xr8|-~vRUcby=+!`toc=t zl}1Z$gF|)#Re7H#sO(Nq6mB86S%;XG^Cf5d8+A!pr20?^@hIK%PxonH$0;DFso zLe`QgaB!74IK4G21AufEOa-7QI9=NsmIY9+6x!yGExuR3_-;S`O+tBW8aSrs2B+#` z(^dg6lBkJIt3r~lmgl*HqXe%(+xB~#{RbEH=Pv_i|7>#}_2e%bz#i>7kAIN>B*8hr ztL5m=LBLEpP%dTdWdfjN!88EMSTK{dtCfy51H-xoV7So%1~Cf`%eex)<~I>n{5wPl zA=;(q_4(^@{J1Eeyy;&3MB`LJt{$;%Sfen4ye&EZ5I#+|P>*zMSfe)fg~+G@DpxH8 ziJ3!V7b%w=?-T0*+5l3j3Oit|!VU_;m(a#RLJzykNW?bd2uR+c;+wN?*6*OGJT@^~ zxk@~k-j=5h`#Nx@KK%9{{59f1Z91vUQJVumWHOV@b^bfxE;HcnM<21-0Z*^EPubD2 zkLQapRC(`C_^9$;dUk&dI_F-xY#_$S1E(wvFObd3Mmo58DN=5WcLYK?NSPzB%$Dy6 zbYvm_psMpInfNYh+pf#PZ;<$W{CDVXoE`riKqwe?Xyc%r@T_`$Q0^jVnxDH;6wCXc7$@Ye;2=d;s~-dg0+AEhqsShRR!hdX#^K9%Y!tXh xY{IU|R`XxrP~>faCF*mDHD^6KW_9opepA*46kHg%c;Ldp#Xps`LC_og{{h?U#V`N> diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvos.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvos.air index 5c27a6a2f8c32abfda2b4244d3ca91b52109f825..54f5ac4c71911abab1ca75dbf0d968814b9c5491 100644 GIT binary patch delta 54907 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

U4Fi&}YCh)z1&r_cNG?$*IJpWnX zla}Kt&u2J3M|Bi`qY7@2zT_#-{}1rV8}O9pALa_;DbH^LK6wG2^88D{CojNLJ6{J) z$z|XvpP?K0Bm!^-vfNo5w!<+n5R7dRqg>i<@q~-?*r+1%Ja=!db5uE z!QVIu*Q6pm<@uijpFEhSJii_Iq=k6O^X~$mEWJGC`95Lxa(JraZ-l`O(q}y7`N>=c zp7Q+3z$XvpDbLpepENa3dH!-PJx@8lj$+^j8KpesGi>KF@RaB80X|s)dCKz}floFe zp7Q)Fz$Z&PPkH`t!0!Y54`u)1?0X4pO=KhGDW4$<_+)nQl;@8DKH0Q*%JY{3pS&1P zc|HSt($Xx2=Q{=+h8v-9%~L+ZVc?TD<0;QS3w$yrc*^syaSz}r&%XzJ(h@u+d>z>g z{NaCcgQt9kXyB8k<|)q~3w$!Tc*^s&Tza1J{Iy(qp7Q)xBcT0BLGXj6{Ehu^O)A7w zp5F|7GU#~9^S=Q;**kd3^Sgi_1$>_Jd>Qmtf8fg^$Ju}IH%7q?@&KN){K2qr0N)q* yJmvXX;FA?pd!%Y1-Gs!?dO#}*wkXn5{oIL4 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 diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvos.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvos.metallib index 0a15f88ca79f38412386b1c563d5bf52ae3a59a3..d8439ba6ce5f6903c2ddde8ee0e9c6eb34b3d9ec 100644 GIT binary patch delta 15159 zcma)j3tUr2_V9h>=8^=s2?4|VhG%%`1=NDIk_Rd%YM|CdMNI-Kx~KuHrPVes9zn4N zgNANx4N5Dv)CHe(tKEcvV#O}H?v}Q;jrb_-x-Ir^TehqC&Ak!Z-S7YVeIGwFbIzGF zXU@#rnK^ULc;=q;$b?k1Xla2Gh7iaPf-GSW2TC+Fi{>EY?CzphFxgUL&6`_Ov<#ntoH&OLU2QSP%V2*?|1AIH`thMAJz>waZl(fqGF>DYEt z)=lTft6sPsbO^~zo7tglPWCYy?XPemQTb`e?iNh3f1k>;|CzH1bzSt~-@!b)8ZSp( zfB!A+Z~q2giR!~OHuUd}B=)#GgWUX*A5p1Tf_6ZU(A#J+_v!jOH8P|3z$+SC2i zt^DI&Vc@~1YV(HDqY2Vm#%tZVZRd>T2Q$)rx(w0wm3|S3Je#d;Oyk*K_p3z6jV!uQ zz_Zi54Tz=&pfUDyyfVbOi!C`ulJpOvlIy#P}2oGJ`osxCybTSoA;!&;A!-1=6+T3A#p9fefu=P@mT8 zkg@e_A=CF4gDMedD?nv-vA7JOjcf_i*+b$IMBT)qjK;FyRfwjQMGpp7BKmd)oE(N( zAsR&gC$^9W6!~di0ey`CE05vrHJ=imVs%C6Iz0h51*jB zLQ7D}4`sgH?+9pZoNZ21nX;A08pt0B_dt-Dd zs(+tpSZXJ!4XFGgXbjYQiz-9uPki-arLUmsUwrTf(j6!jg0USgjHyLkGcda_Tx$PU z%vuCmV%Nm(M!c0EOSXr`m7+rijFr|ASB64%ADk6mhU(wOSnUSlOHjz=lQt*eMb!CM zAI!@T*>5JSLydQS#h*`HhuX${xUVPWh{n&}mMpQGWG^G?C>A^bY9=R@A!G)Nb|h^^ zy!k9hCvQQ#S^(}shAuzhElvTNW#Mf9y(t?|&FeVZx5s1Uxbq_(U_Y7`U~f*%MTg$; z6@H)k0!p6q!N#=hsOu8Wb~ABm89H{u2cH3O*Er60bN;jvbch2M&Ep;A!n92&6z{{0 zX+e&QHg1Uh1-b|wd&WnclOS>=o#6)CdFe$c^_-8mE&U~w+TnwF88zt8t6a9#V;N;A z^`?)WnrTA4#~D~^zmmBgb-KCiG?z^;MY}F@*{S-+^tC8;-3M=-u@)Wrk;`hynOTC; zegvx}P{6)>=6aM)V(}9JPd(p(xI*pmsu*O9WA}SwBV6LheHo6AzC*|r9HXLEE`eKN z$vla*(5S6-OXg8c*+{NXWMAS937A_MVa>31VIBf&!!A1_F2ZqWM5N52&m^RY(2dwd z!uWy@Kd0(~(u*?Q{JQZ?9jOrAAzT{LB*KM+mNfC!y<fZ2?}<;4dKEtt;FQSg*zb# zDwIIb3Cj&J$MAzc25<<%vRF~U_%OMhA2+I~sbt{~_t{pHW4*`ve z9X5m$GBepMlGRqp4kBWi6$yo9tw?egk}7iecp~Z$qN6!r51X3!CmywjZd$5sK&*@4hJrI3XW6r1{IT z+!NpLT?yO2&?MU*{KHRLuB}*?S-NGL0{oN=GQD(5#g;0?=CUPvZRv)sFWR*&+4gmJ zk8{>lY|(DDOaA%EObAMtV0!}5X1O$$*fO@8QePyHx0)#RB?9RO*<}K`4YI!w2xm97 z)lDG5yB)IYXrw{?8G)Pv?AHn8Z@VeNCGbRJPTE8A%(6kcsdtQ*^$I*PaXamy zd3X{-F605Sv6Ugm9idguLHdCy$=NIDi{W(`d70RtK#{5P4nl+Sw%#Ns^4uHdB&YfL zqfA=&9!QmMU#8l6(Ke+)mRlq%813ptUf{j)v&k)pO720Dt!_z=ImKy~*c3?&st7%c z05tRfoXVhZSRW&GAD*dh8>>~M$lFL>^L?&;R>ga+HAEYk!GUSWONwPutHU3rjAk^54HY#NAWZ8H^O&p zqb+4Dx$IXm;C?|xTZ;HKP@7VAOL2tzRn(wn7>V9mG4`Wduy9r<`t(W5(=OHQ0nh9q z)iZ;1dvErzM_`V=-un&gYJ@LTMlk;zUryshN;qzO<-o3uUe4-PP6|lDzhN|G2y+OR zazazz=adX^RtmLoz^SkRHm7HMIydAQu-}Trp+zSbKafbYM zF+w)Q3p@mL(f*Hn@x03dS2?u%Gy*lB2>W3%Y;a;ZosuFX{ugb(QzW|)m{Pw_-e@RJ z@4^-s`*ya)t7GDp38tDvG2OZvzZOYjFk0Zm@;fCuBz}Rep9+#`Md9X`hv`vI!GXSd zX>|EW+)TlY!l1-%X@?cFgZ!R-->$P?1*_lTb7gUvenESQo!k zr|J>`Db~goW1~agxL?BvIoVgAo1lw{*8n!35Nukvw7IbrG{*2W?o$Kn8tN-7?U8o$ zY4%Iy2J_V5HBnwT;ug$V^i7cv-%fF>y13%$Yi-)RI5BeX`=UbJpy6)oDjaH2)O(Jq ziN0tH^5BD|9dOcJchnAs)AU*f;Jgq6J(?Q4#l~|&yi&R1Sv)kRQza!0smR#(MGEe* zA>La~oMD%GKY}a^9&khJ|01y8zAxo3oGZI)o;qNTR1evOKV}G~1|Ks9d_BfL1f__*zm= zMUQ zUG_JBk{Vw1PwNiRrR!`FQUYI7f^AF>`F)`%6uOcmO)zWG7)>MG8ZVzt;b1P}z;9&$ z)zRolu)RK9MZ$|CvQ49X`#pqyWWX;s@pQxjW6=D?)U58?HOPUiD&$II8aLS6*BoSB zT#w~7N4wG8jv%|*AR_mRo=yVgH{Ioj@U6W?uVtGj<`i$>l21piz~8k zNjn-#Q_17Q8AB>>(8^a0#KsXBzc1C{ew`Bx`#H9!z!4|@`136oF0;p}Vqv?Tc;ol* z(+=@DEIxl81ndDVDJ9lH^}>3sSR>KO>V;O_t56|^J+)z{O#8#Rd3sz2!3*}1PVGTX zYmq{7zF80>b4S1uK@8nXBk3|zrrqBCOBBzG>uu)wT&pjtl?GLTjQWcb()0%D8@HC`bhzqUI3H;xQ znBn+ukLnmrUhrHA$(*c4FyP>D#_}pi*@}D!vT>N>Rs?<-QLW-oVS%m5FJb<9OvRfA z@o1-u*CDqi{nw#u0cQo0;xZ!wus0*oGQGJ-hJSWmbdo)}yMgiW)(LCL>j+$FSAUp5 z%Qph)yRH@w-8D`f~fPt(8V4!*#z-BrgK1VDvK$-HkG5KL9x4E7B*J!mt zy?n|{G??ckdEs21f#kh0pGm*?9g}KEJTvd5F?pMl`&v8qvuOoy%T3C7{1eF_b;GT~ zw?j8fQDvg2g6;BuDxSj~p@ZH!B)PUX)Cng$m9hhhuyL3{I~2*SN?9iy-hm_=0DjV) zY*flBHq+<~USQ|}q@DYcEx*Ru=-J8>%a(4@yWN7JsM$kNql$!Y+$Xu$qL!}J_qzpT z%4{;_x3r6H!Mv0~(DIbXLH(E_60m*hjvO?OBU!bcESoC3)ssC)Tb0wCo{O;SH;0*! za|PQnz*!B>Gb5+C3z_P2bpH<;nzBq^_d8=Dj4`zVD7)CV1cs{Ju*! z%6-|`5NydARn6{{OemsnY5O73FLYoyvTc~|ROMas)GH!$4@J!s#HNdW?2-;Q_;d0e zSaR;8ITggXRt1Y5bp=ig1%~45jeR+HRXJmx`nIU=Zh%wlM`Pf$Zf!@yj+#b)cTR;&u8V%q7CjDM zqroAhW)2|=(Y2;uCuyB+5qUyjq3+9_%r03>X!aXNn@B$~eRv5cm|G#oE9ItVe_2{w z?ZwwYh2EAqhT!5z7aUd~&U$M}-8OEO6Blt7UyQRJ6Ra7+#pGIn;>vllc8*I*c2R*N(91%YMHY~_+hOPp=*aFxKF7m;8( z(6=A;D;iPzmBpWqSV)Vw3#qj3+vPhQSsJ9VG3~;$1ATB%UO`3nAzea1t6ZnMlpZ|2 z(uIk@rk$d1Je)v+Q=vy;6E!TLQrNo!R7pV)3fjsDz{!|e=r3Hy!E!Xhkt2Xd9aI>M zok{eEo3j{vg^q=pM3f<^-1{H5I*Fj( zB9-LU)Mg{JB-dK2sFg|Pk!A(9K$0s#2HTSk)n4TK&IFac)d;s5b8};w2dLh7K@5Ss z!s=jw;`522cA+$DP_?Mf#i*eoNlez_q0Au?+-A&6u1$-KGZX9+Cz?+q)~5g2kmLuFL9wMr3_+_(;flgZa& z3Fi7&t0CJ6Tqp*&Kr1fn0C!RXoNVP1ZI4BZNfGu+2qqx>r`YjF;14cFU1I3WxmREg z>PVQ!4M<-Mjk)m=p>eGReaLV?t%#TFiiSjT_~kA|&LM^tZJY@ez++nRI_?K zv!U?TB~TumWufHe>GGMhhKAaq0}3rkDZ;4mR+<9+_!wNSDSxwnt%LxbQ=ivBc~Zhk z`BP9nSStSD3l3_PORT+Fw%p~deyW?ZgOGBwFhA(IMd$vT?OI$0N+Qvem% zHj>}iHW^Kj7@oV+iSgPZJ~{$%c!%V`+Iic^>xB5g=z+Mr9Zr|uM^5q1HhRG!FK@b2 zHjs&^DNZ5HSxRu0={XX$1TPC;IK+d_6lTDO5r=Up9LM49pe?Xn@vS)V|8g#5HJQj) zwJ+DT7c4Fm&n?tkS|<353Ob=*lLtHG6>y3}zZVbw|MxYVS+)yKgdI_v;3FK(qcSu)HA zWMdygjyul!Fglc}gTRMzm3M;X|JH|b*_=9vJa-Y4nxFq0lh%C-QpSgIxfi{Rq~wZH z3dXy>Koa?H{A>U|j4xAf^`-(J#x3R4LEyuHSyT}^+M6~Ad>HPjOeq{T#zRSef8gQ9aScBzls=?Uj{>kgbyiFPWGmD zDI)t=bQsQJP++pj-v^?OL+`Vq3Z&f^kxzJ$Q9E9wEn?sU89>DRPBQysqX^MYB{x5eL5O?1lZB>DuM;Mh;`+8Gd3fUl4=Rxbxl)I)r zUQm9;P0;^D-dD0gjSWo#u8@7bf`xPLqB-|1ISUvNgcVsnCy_&GMFlv#ZKlfZ1Ljf%11|?SO(OMM<=m}~?k(J~)Q{oFtBT0Kn<77RM}8>{o;mY_nU3klGoJcW zAyPBIn3Vm;3N}yu=jBZ;RFtFn-`pvPt-(R+xgkM!Oi|xT_W|dM<5WiWnT*qgW;^3C zF?;|vogi!>Yjn;Adq$ZI-Z==_j$k{Tg3+0X{A{*WP1LCe?odjpSgH7f1t3ISc|gpi zKVJSYoWW}UoNoU6f$A^A{V8|3OW-10#i~Ke%is0S9{zeY1MHsB z^K$BEZ+?E^&_CY?z?a3I502b^cy9ZOFTY}d-7`izvl}$d6L%uarjP$nP2i>ecg`I< zzW&R9ByVSc`E^&IqCuz$A5;vR(}vAc$+Z|4g6`1}bo5NkUN{0aU|akXh}Gc*yC#9aPb$e>j^gyDx?)$~PE%@MOu{n3T4_i|w~pp_w>AcQmRmWC zIweEO)Q!4+TZm2@l!BikcfDSm-dR`d1y$1eViIQxQo2RAyQGp`{(dVv>sGXLRvf5X z-oja4L0mQHRJ|d;PY>B>3R$lWS*r*MM@|jfy82f%&0XQ_U*0-*xvd|6J7TLjers<; zu`Y4Y6ko#tDpyGO-cu6(sXYG4EdB`@|M)Q7V#)66tJkE>jH>_wn?uSgL)I0Blyz%I z(S5Q8f6MC8x!D!Aj}(c;%EXVg(`uB7#fJ(Z4%7BBD6$ff0CP=Tl*lMCsnPMJuIwM zrnFk7okTc0uSWOF&LUYxPm0&Ev5`qro6PMF#vr1s;`~4hb@_ zay?I?9?2P?JK&UZ!3%_mt6{Fi}(TpY=|v<_y#>c;KsM?471@vDKQ8ERBDN_zL)wGHV7LN)afwFx zrt!dxCN$?Hc3eqKNCe)T0ZqW8F;N!JG=7sb=G<{VW6j|)eQ8mxYLZ$lOPmXcTYFNZ zwnq|W^ORCzUa_-)1PG!GkqB;W;g0W-Q1b|Long?unS^!3uef3hsmQ1|HsZ5pNGBx3 zNKSp%DULFWh4<8|CaMKl!uEQ{hYmQ_(28wpk`Ags;CsEbQmpfl6I;<(v=I6 zTNaS?c*+OUJLg^vuNEkDVULr|&BhB6DqH*c$4N=t&GZXoT&FJ?82TG$gT`om6k%Ca zKAJv2diytM)K+GG|B^n+xe#R$z=k!QINk*C`<$Nv?q1Wwprvx-BMKF{7`b5|qz^a+ z-9TjLye)zZx~^g{9eeLyxJ7W>7_5@2OWI)7)uJEsiKn=x~ zF79ey4ayQ~ys+IVwgSDvYUgkFimW*SFqqL!_{Fo_D0T`TQJzre{2k5^YtDiV6f0?< z3;%~Adeo;(DM7SqsAwSHiRm)x<(&lnqX7o9p>oAEMjebyrvrd1m!|e*_|^Mc@2dlm zy!+#Kt)@yNB{3?Fw&v3n^7acak*+5s7x5DKaz~}HFz{1QG;lRv!QaW~nE#TK`&NS# zY(8%xVDp(TRBu-gNR+MwkI-brCerKa;Q@WFJjP@wFg%6L$QaCsm?!^1AuT0L2Y{bi zCK|sW>2<{d?wx@93-ay&eMwJ&B~|)ER7VC_Qt?G#N!k2%^nC=DRBIksQtE_za0*yb zL($BVdTn5S2eYIMU`Z)52F9XdM6t1Wz0j<=5xsFN1wPv7q+Z5u7Qn zlmEJRKCRPB7>~IW|5|jCz|&$TWG9L7(xI4KM$M1 zj&^@vi{%13WIK8bF^Y1dAR#_akFk(z=!f*beF)`u8G)Ty5GP5=G>is z&KgI)0nImww>@q?%x~EU<=;O2wD_s2R=g@~WdNP@(_@8nMdObZ8fYJXtWaydb_#b5 z^)h?S(Nf?x$l7#yj7=8?C4iw7A2l79?H-|)_=(|%^Pux#n8N9D?5l!H!3T5 z#R_q*w$s$`+%FGnir@Nb4+G2tHCgK@#8G-jby7-T^9*Ub>7!Y3nhmOW7=wZf=iXpC;Ikm^Q8t|24ia!f9agA8o(vdLna>z-P2M!|?u zggg^GNm0ram)DOU~rb724~$cIv)7cHS=PtI~CPp zJ-m0RiC>dp-Z8+^ZUJXNt;#3@wX+62Z>RE)feQzPY zaoKN}?70R@FuCIm{}8NiV%Yl7f*v#lSS;J|&&V<5ojpqrb67vDj*O6yYhrUIL8_G}#Q!46K}q!iUg>|SNnW4)i5Y*FH_xxT`uw|^su3%2zKf}@M!)77OcUwC#sh~Ux-c|B@3Hx

L=QDZku>N-<2e(~YsMrQrmh`wsv*NAq>lSUM8FpX@4$8R<{8^;fC9Bc$F z@w|Ix32SpiCT7<2sT45luiw9Td7#5L>(5Qr?#s8O9Ep8A>G4j3Z^>GOogZB$e6zmt z*VentVAgxUtXD&cUX2v}J30eT#CS!{!MAq$X23An zq6Yh=>QFD+y|%K+?n&H#emny=|9F4bcZC=P4Fd zgf0a^>@+kL1I)4phWQ^1vowlfzOMqz_00^kO~f#7jseW7B@DA<7sI?o2$MUdb;At$jLH0w)w;yqy)+I=YYty(>0g|*QCP0 z>;K5ujX_KfL8ZhpNt3kXssu^6VE{M00C1L&wU6|3o z)1)gEHqVDABzfRQ3{DdJgIlH(eG;V?uNG*@2f!SFcp<mj9MwUr0=nSqY!-NmiP$?xSYG8iQ=-6Jy-&JY(*qaNa&G0k26px>`77Ftu^}<#RQXaW$asghdPz8dnIAH%%hWX+$xR$8PC7c-AmDuo#%e zJ}@>g8-dcruNE91>hVx2nt#^l2A%4H3j<(yF#VcR9LQJ-4-mYPngElSjbY$^)2hnG zz+`5qr2})l5#d;$3VdH|0AwW|R}Q{UQD@(Nh2JtAczxquP!YOAS`3!MG%SrZE-NYD zGsuhpCI)$#pXZdAhy%fnfK%L1*s?!^n<#7ojA4vS@W;Hb5IHobxZw`&Z8XgQTspGH zF+a$svH~XymV*K& zcs!Z2bTC4dfX?)+(qX%UPKnwCKoQ!qj*0!Q*FIley+ONKUA0zUwWV}zb+zN+RXogb zDuyH7zXLWpR$s%Tre>FJ*`$Ad>)QOy+tyZ9uT^c?rmX^%N&&QaLuu}|%r)zZa<^ry zS@&%Enj)R!^E+smW7FHP!13s7l;gAcFUrO#_6Yv)1qXE?GHdL03d z=3FKY9S`ErW(9b~Jdf(qVlXq9Ola2u^6($n(C(SHpGEJZhEx=y0FeYg@DUlM!P_>; z+2!Gj%}JQ&xuY8=U*`gz|BkVNh*~?v1l8JHykihbr2N+_qW|sbZV%!w!+&625}h!W z975oJ2l+k9#MQ>ku;bneG=54jh^)0dd9zz2o@<)xpFSHsqi8^O!Do6(&_wwE@6pgf zF%u}G|CeZ4tfPN5Sflj_`2N5jZ8oOG601S1OEX9ye+Sve1o9Keh6p5NH>J5sATxJU zneMKNRo+;=gPcl(10tCMxJ_>?g zE<^}|UtMYt{6bSDvE2;4A(f$LFm&5cufUW6;%6t+{7mvv$~9%0qp%qbaqRvYyjD9` zjYb&$M;`d2Ch%ut;J;{eDSxd7Kjr1EH{!=^_z5R|0(#HX2LfBCrL);#Kl3ehp_7)FRJLao4gg>z1?>q66&}CCDH?!tc7pTd7p^N{4n!nA+JG&vhA?;vHW8Ni~02^q{<38G6k$wG~e3Vcs^SoHXUMo2GWaY4TUVJ7B@p zX)TIK5P5rGPB{RFbt%IJ&0&McwR|US`5h}^9{-POzJ}!WF#2wKe~fnu!Vi%FK;JK9 zcY9N>Dd+Pt^Zuv?Z(#zC>G5(eZ&N-g+CT+tl=Ia|d2fSAY`_ty&D_Gvl-zXk$mBc_ zeC!T5TSi!5u1Y261am+I( zg8_VCLD)Rjx&b>sl-mSdgF@rg_*^yfC?UG`GQju6LZw3RkiAq0p6!j4Ei5@ z3mpPu=M{G*-}kzTl_W_cG%9z4C%&#?420ha^Z5K;0py=pUb1#QCy1NGc1?hs$I}2*&36$OxNEPlKx4Y6QedlDf6>#)HO2e^0)VQ&1u4jY-w$RL-Dq;^3&?o5PL% zXfZ?AXkrpRib*Itl)6rt@R6ATW@2-?O+$@udK=#urd_oKE&cVdz=b5t6l`n@p$**% zb7QM)S8GS(DJKB0!fUWWPFnPBRS0?T_lvtxf(V+Cgko3Z!-=_y<6oyQf z2CeOO8yU{mSkC(_r#W#Oh!p{~-WY3qbJ!2^!{=>PWm$}frOfEot6U~`s!E7Gwd1qb zwf^R3oN|NgTF80%)a#H4->^){~5F<>Y!&Rq5Ev z$#O+Rl{BQ!WOm*^N^+`N>y}eo1J9f>KzFz!K^($xkoT;-VP#KUj*|jWn+xHiF!1b` zs*Q$&JD)4(f;Z-cY=IzhoGk#sn1j4xTZ5k9E@cY}qpS#1gDKd#qKEqe&HWu)pos23 z@O{A7EO2)57*h^7wk?A5vXh7bM0G&y0EAz3ygxEw8{h!{>WDHTPZxbhIz>i&M5&y- zGe(mHxUD@yydEQK7cy>ZNtcr^sd+5wV(J)zA7CVbmS3>?wLp#4Y|HL68;WmXTsoGi zEhxT;fjHAzQG6o4&c1VEP5TFcXv*qSqyGhXTi zt|0z+sS{+}@luTu#59HiLAd5=He4fiH}@?WwVKjd)BJRZI|6+g`+a4iG^EB|{Dl4! zLl?GU_!uzp&jO!PhJpTR2w0K+bMB+Odw>YyC8pWNoGX2Dn(Q;!U^lnf<%|H3;zk1t zMK?eXD(`XcU67Lof#`<|Uiguso{C$ovq?u+>jZ64TVud~a`W41+7F(dgbK^zXd*Ne zUx9_f!z#@l<1@rh5`cxl*Hr2~@@ELcj{wEP;PPB&vs^%g0al2HUAd55E_Ibj%B5r4mw_p6eIMri&m@I<os>aH`U2K2~Bbe9SPfxs%$AjjdF1qZ|LoO!bx6~YZ?HlW}K%&rX_ P@Wa86d*sXpBJlqJ6oeKr delta 14071 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 PxNvas&n9REaKQfqh0Mpi diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvossim.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvossim.air index 272c8e6652b3201bf8f755e2a63bab2747de5bd3..109085a5bb3dda5a4569fbd842c32cca57ba40ce 100644 GIT binary patch delta 54906 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 delta 55155 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%0D41Cuij&WuBb91IO=#je*mb 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 KH=6}?$o~U3*3cmU diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xros.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xros.air index 30199897b9b941e5936fe8305e2645a9135534a6..9d7cf2d4478ea4495bebad94c0be80749c5247de 100644 GIT binary patch delta 54907 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

U4Fi&}YCh)z1&r_cNG?$*IJpWnX zla}Kt&u2J3M|Bi`qY7@2zT_#-{}1rV8}O9pALa_;DbH^LK6wG2^88D{CojNLJ6{J) z$z|XvpP?K0Bm!^-vfNo5w!<+n5R7dRqg>i<@q~-?*r+1%Ja=!db5uE z!QVIu*Q6pm<@uijpFEhSJii_Iq=k6O^X~$mEWJGC`95Lxa(JraZ-l`O(q}y7`N>=c zp7Q+3z$XvpDbLpepENa3dH!-PJx@8lj$+^j8KpesGi>KF@RaB80X|s)dCKz}floFe zp7Q)Fz$Z&PPkH`t!0!Y54`u)1?0X4pO=KhGDW4$<_+)nQl;@8DKH0Q*%JY{3pS&1P zc|HSt($Xx2=Q{=+h8v-9%~L+ZVc?TD<0;QS3w$yrc*^syaSz}r&%XzJ(h@u+d>z>g z{NaCcgQt9kXyB8k<|)q~3w$!Tc*^s&Tza1J{Iy(qp7Q)xBcT0BLGXj6{Ehu^O)A7w zp5F|7GU#~9^S=Q;**kd3^Sgi_1$>_Jd>Qmtf8fg^$Ju}IH%7q?@&KN){K2qr0N)q* yJmvXX;FA?pd!%Y1-Gs!?dO#}*wkXn5{oIL4 z_c&{IIJ@4{c5%Vrj|co^7TPDK*W za*B)Mv9!5-^bY^w1#4L9Kqq{Mz@L`0s%Ra%ZVrB6`9z-7fyxqM1Lbt1J9{?uXx-fN z0h^YO+0aY$Vz{(5dN^9x=9`Sk>7C;eKg`R+*s+E#DM5>UnnXU2lf9dC%)5KNoBX`% zL~gByF4y;VEpPCy7J1h-biI%)>AF_rU7qYy?dR|EgZg9!#96)iIs<8F_e(RV5uakA1gc>a?Uxrb<8Vfvyn2wUsn{h*E;(uPD(_GqpN1AM6 zF1>(t@XZfB_GPYHpDW=6U_^(RL5Y+(v&-emC3q*v1hvBide#zl&QfvCQbkU>I%oMx z#}x$*s}(t`*^aA=99ISBB&Fx9Qs<KX=xLZ=Bkj0ibXD%$NC=)n?lFKIo}) zu*aC#4nt^5Dwsn&=4B1#5B24;upyy8CeF*&XelnC>Kl3YhnShIcTfZ0jIfGvU^u!|=l*j#+|6^2vg7Hr5IwrL6Z z1U=XR4;Cn~@pCBSn+D2*f6njel&J)HCw?7A&!sL~;F#630Rbv^511^E{w}?I7#DwW zh3&L*D@@8189Y;|!R5H0j21sAb%9|FD2hdF?w6}zT&UBQ(cI&?49UQ&Y^MShIsLEg z{`gA-oV=JN3t(KkH^XV9@Tq6)>4{0hxVzHbRiJx3I{G0<}9!=y13kTh3+ja>WjEx|WwK zq{-=i(F}h^CAXY~BE=XshGmuT#dD>aOK7pIV%klP=C#r8KZO z%5w>>tVe!bujsl~%e?OjeXB)2_mmcbgARYc*hm}bNbE&FLGRtp@6a18%yzl zXmKIA>s`#Jv7u|zUhfMspL-%7L|f;r-|OADmkB6aVdfw#cQtq#-Emp4@|vp$vyMl6 zEyG-d&caT#Sfyy3KP{|u15L^9*~4l1%Dw0T)>S#Uhi?bDD2WcZMRxk=SowKYUW#a$8mx*%k01u_w&4HEq5L~+JH9gi;Yu?2F~*1x;6jLO8tMh0q45fH|McX ztOs^ei4W$w8eOOpv9VYam#*M4HA-B-rDGgt4OWOHDvt*SxpD=a#dthklz};4$9gLj z0$*C5Y%WiEdtwN4=zhGj)I-{np37zC!csp9$5k0NsE2#qrt2o1PNZr*u)$cM`u`_u zm(-~XE+BonX*t*dEMDllfII2|0)YGW6&5{5x71pKd}_qGc&A!NFU3u(6;s}d<@-5k z(qL>MRzNX0N@+=eBz=Mj3D=d30Sc*elblIQqiIiw=H;X5zS6$fNL(S2M%8IcO&myj zU~7Q`hgKbNKf+mkSE#*!CwZysOvL(wlSx6mQp#ftaOEy&Lujyg49!pJ`vC?LtdPlA zXo8=_HH3+k-1#O}gr1+oo;st>f9U*76?Tgt&W&Ah$8hMO|*00 z;6^{JkVQ*W5E_lB$0nSc#g%3Vq*=`Mt7upc8j3uF76`AHxKT49NXeOu)$j7$z=WRlQ_r=i8Q2ZYT@xOb? zo2de-L|B!@>#{sdcF1K*u>9Njb;qSnVVVtRwHvk*U2uzkbuHeKD+LPx3Zg zlEx=`5mlNX3+|<4<6nT>fUz zFbu~qArFrXTvC+ra3Mh^3 zCS3sllf(<8ex2_6+`R+`yZ){u`m+=LV#nKn3A3J@SCl=#A;aDZtB>E z)TN#n)(CR3P5oj`5)UW?95X3uq*gI}U?%=ztakP#YwhQJ;(R2*$An9$vY68Q)fuVH=<45~myNY4y?burScdD}&hPAX~ zYwx#UADFfsTRnerQ;u8iF3JDrxDIFohZq9E>Ir0x~WM1eNyu zdhk9zM&SZ7+ctmo9mBzJ1HvS|g z`7Zc(?iJ!A1|LY`=V7#V{2hM#DSzKN`Cs$=h`-0g=BAJN%gWCEM1I#}l=r`Km+bbB z-p%|-WM6lXO>m$~zlAMYMR9AO|Bb^Rk*fCXkhV~Y8QPiGwLteDYt3NjP=Nsm#KPKF1Xwi6_ z!j;&Y`z^PC+n?xoV~4}zKN8Fj)m0~Zek7R3vkE(O{m2~;@x$*pe8k^d&vjQYo8ly7 znCqQCv5-oGBG}H)))#L+)a4_>U)`>nJy3|Xwu`Vcy>y9=bScuL)mpz>9pL#G!&}5Nlc7M8G;m}3k5rnr9qsBXn~#1a#fxr0;GzA%JX1b-l740$V|Plyy^ZS6L+(s%D7M>>Y0 zj&(zw+5*0O`tgPa>H;6YhCbMDC`nu}^OukJ)6-4KTqDKk5EyO2@>S?YJC2Bk0as3}>OB46zmd zKw>*lGjpjg7aIxyAqhi??XT@gEr?4AKaz0kfz+4 zSq(FXo2UQ+g!I=PgHY5QM&d&kgmaoQc(D`#v`si=VqmZ=}UrZ_HoxQ4|EmhfporW=B~8}W%1 z%Dyr`i3fdO@Njwm;aL&RH-bmL5U@%F`WGV$Zh35*&AoD;cj@KC&L#09YZ)8Ideim> z*YNsR_4TOOEEPQubK1*`$0sE&9iVXUwn;9ydcD6(rnkoy2C-#OO8SCfTRf_l1k+L{ z?#X0t4DaQ-)bY}_JQ+KQ`4wwVXUBENxd|ol)fYAgiaZ?851x26b<(z3lL}@{tNUuw ze_ka|m_6q>eJYhc*8=x#3$d6;xIRP!E8av;7#Wk$nJ(7=t5cqFGJB-O{e@@b%h?i zFC>6|>1ZA|uq-@7(OON9zK;OM0AL8uV7VQHxtW*g(f+*wS_;rcn6?!FDF|>H08IcW z1i(H3v}v6K=z-7S657E9o}bC%R#t|>CAODS9yjlNZO~f<;oCAQw2#`j^HG=#CkTw9cBBl`FR{(JN zuyZ{i2?szG00IH96#yv+a4CUpk6UyBE)r?{a6lOhC<_7QK7_Iw0HFXl34r?ua2WtR08}C__yEuY zKmdT7hzkU$0YHBMG$I@ba0LK^0MLqXAi&i;?k@U>JZ@n;Tmr@LD6RXmXL?@i6-6YUaW2Mqg%R`2;}?EKZDckHevZI$=~Vy+Ht=KihK_uoXGscw zV_Y&0sx>xWagVsdxb$>T?bGHf{t-7A!=4UGgxhk#O~yTA!Bykjoo~>!{u#Rd@kV{s zxN^o@bT3v%HSnXxu=T>tqi22R78`YTS@LP+>22(-SJ|0YqlpAhJ@@&jS=-$zBhixp z;t`){D4ClN;2%fF&3fW`(+oe$C(f4a63Gd^uz8%Qxg@g7Pmw9&s8m+ehTjTxjJRh- zx)TJ`>!glRHUId8v~!&ooZq&f<~N4iSkze=vbU>b^W>ktno=4;Jr()g_$aiGtcRl> zO-@NfC|o=RU-2q7N6yz2iz|%F_aVeB-!DkEolkKAk%8X|7E2CQoDxolGV8@nz#C zHBg^lA>kq;0*^^`5e0A8gz_ouSVTI#~L3!uW-Vu z?YAvzaF1BYi`f$Cwl(r>Nt39=k)QY=HR{3sg^$p6$*<@t(~(+P!=ny~O8d@XFzXGu z>jTqMu)(nF5x#=8Jb7j0cjqHn&(M>N?3OF=dEv+m)+ZKsUj4)E)yHo$D&Fn-@|zlQ zsVF#fb!~1rBYOThD--)1^Mm!=;t6YNc$IEzF5PCx+q9}R%H#V6OSVjYHEYH{Su@`J zFyq~;>HNU6FNJ4IB3*94j?C7x&oLoXuTWe?G723@b>Rn=y%d&}L~gh_k{|f@OX1&W zdLloudEBIj)K{duW*+TEJVX|v5RC&#o*OsmEcKd6!n&t zu_|dEFXsM~_YY_M>yY9XloBvBh0l0dF{4}Gip0S!-DdC^uc-!p2_2b&*{56_oJgiphe$@)MD6CqYX*rVp6saFgqx z&BMs~%^;+ea)G9n;0OLPE45#CDz|frf8UhAz7^c)h;6BSMgT%BZy-);nndGV`1C{P zQ~7}pUJ4(8sC)!gzXXiE^ju@zrW&3iag)F74kN}%rvl9su#jddoDTiAvWBN72Qkj@ zM7gPOfaK6uv*&J`J^!cK3;I$8QJuihmnEMKAPjuMP?8xF;L2C)jG0%Bv7?MFSB!1C z{>6#LywS0aO%;(3UOG04N$(z@VLi*c>RS-wk_9vWG(?y2qa;#Se*D>SBG5T_>YbhI zbkC5b|5aO5!AN?VG{NjIlF038>qMk)%>2W4OOb>TDD?np_EsO2wjJi+}Uv{YXN+ zGu;p&MTIjWv|Jj62#H<$(7@Ooo5fKEe$;A2w``mUj0e%(wGMa52f9ycODh-`-kO4h zUaYwq8JbqBtzbxUcIqbWy5zb0*7n^syrRUNf81eQFrsM*gY>M%I}9r0)b{UdxP=qe z)(9Vtf)Hj3NbN%y&p1Ky3gpdrzI{)PqWKE-$(5(zES2S-4Grmbp+SOTgDEtW)O;=y zGTF!#i?VhU<=*&@og;e&A`P+mdv*x0={|Z@pSEI!dqmqN$=>upG=b5dzvnv}Fi%_6`a$ zP18B;MBlWNeJj#qj!j78d%WO9Jt*PvX+I;Uc*Ar4N1}FfxuJ-L9W;)L+FDNHJODU@ z8+Nh{{v?UZ)#Ml z*xolJGbL`21YHM*zOOY_Flfd3UZ=nNoe|^Ou;VnjG80iJW1+h7N)&R;Hce~HOE*44 zlfCG#z7^`2(gTb5-lp9%(q}`NJ^GyK{f0l_AC(1a z={2h)Tq)BC#lEY#j>hlbbs)v)So^Xz>tFPKT z_0snGOM9nQAF8iDwd=CvoVWgbJ)^?y{Z4%iudc(gz+y)S3e4?zRO|&0)_}W<|3N0EXQ+ZfHJ&yyRT~Kj{;M!k`2=j+mrwcAQ1v?NxvQz% zwMu6h5Qbu=%u@V;h9sm57oBH}eU>!Ah)N!WpM{E2DE`hf+>J@UJr$yI7r>gxR88b% zPr<6N7)n~xwnek%d_5=U>v;#i<}+4hrls{ms&a_3NI`m)ExigsX}Vce7Jo3Sssxz% zdz{21274(qnsjyM)b8KU{lSp?G;r!`xKO=knXC5zq5)N4vCJ7H;w)?FZUWbUX~5>Q z+(0{||CzuEF#9-CMx_~Sa!ZLw*@f?oqGZsDWpOLM>Q|wOE1kXK^O4R7@_3fi`4crr z!sIxT$4b?T#r-O@ais@V@Pkj=Vz%@G)LCFI=6JE!tTiMkiCxuO11tjPpV$j<$OaDA z++MNvpA~$@x0z{bQqal1%|}^-De7( z{bBN(kzml4vfOOY3DfmbE$7S+JDc)-{`&6wziN2K4o7$2BZXqL*rugu0vx1J_Ni8b zP+CAJt0Aj`P%JJ+3R42ogur5N)P-U4lb^W!3&(_cqyj&2`BV;Bha0S6$C!s3A=&P_ zU^ZT;=-V5wJa#a0*0;!KBvx-_&eyBa=Dhws_5I)He45XH-(16!x*x5%XBUvB2o_la zQhU)eBR?;CC2;pS(YL|w-+^mMEVZW1w~*)^qAa4fc+q@4S2lW<%xcwSf!rio2KZZ1 z7jpcgE(A;tLdlam_ntINfBM(Gr_b*(VuBkcKdVtgrD08gCncyMFo)aA^999W^602{ z7)1A$iW8iKG`+e7>Ivv9Q4oB<;RpW>LGTR= z50nM-7wFYeh_B~NOZi^>;8xK6Thr3Y^9*N5ptPv75;B9H43oP<28B)vtxZ^{SLZ_V z6`v%@ro!6PlWq$36CnHZH3N|Kd_wgYiW0;W!RfGyu6di@C^jAN`V;k>Pl&b_*EenW z;ym|fd80?S5PSnY9=7$S9}k_OR9D zv4c;-D!n2f7Pv_uzM&NZpca62_*=5enV})s(Nr+>sA4F%xN7E$E>Vwe4F7A44?l5v z(xf9as5Vf!`?5Q6L;%sSD6YiE+$!;!$ogXQbh1@yR3pA(9UqaoU-Eo7sw%WT8nQBY z(m^tU9J}&)4}gtSpFcO>nqkx=hMbODr5D~BGwZbbO%v~T_OMH@gA88yFxTkSd1N0{ z=?L||ahGh3UU+G&)i#w4dm!*bA0O_^{8rC(M2I^Mu*d~9POr#AS({u=xl6WQWZVoL-?^8l zmGtmCAJ*Z$P_Om=n(-oIY_IVUTFi;dk}v-alg}IhzMsf`VouZ&Yo`8VEJWVGq3vq6 zm@fR4B>S>>vi%h0R)JzhkIt>?h4d?$-bm^xuZmQ+Xue+9Fc#DuOJY&V#9X3@JS>PG z=g*%>9*=C#eFGY9&CD$$S2jutt7{V7Z_W6kMHavNG?-*4zJKfz0gL&ZJ%(`vEjg|rGny>V0LVfEQ$#MCdW=R7e@LE3}vtJP%$Kv{97xA zrPrWM`#EV+6Ls@7(r&rzT>LFGszZB9{+vQdq?n26pK0rz^NFK_G?at$eHNL zE*5JuL@q>cc9~fE87c7Cm13@3#~}EOv&%DZCJ;Z7H0iOq?wR?dJMkFlB{z;Q0e>n% zd_nh${Hdk8S!HqKeE9LFlHjDw99hjLWgP+6Psjny2SV)}5N+`&O=d#%x;t?cxn@}$ z)t8@Gnl$Mo4FVh@@~%5^5FXObovs4|mWjNQ@EM_GwJF2)z~8Y-u=$S2mM z-FA^Ny!R6-lrd!JJP{_pKjIw*+>p%&Xs7LZl+a+(P7G-07l_#JQP|a7tGvLdc79?l zTTg|_DUwm|FjBJ+vKQ*Pgl1cs-_L1fK}!STmUf%7w0q9d9tW3(++N!IpQXGm%lfkG z#ZtM*l^Dow7Hj1qHzJDNCdRTwY$Ao7m&~isjwl_PO}6gxP}F`&YW3t91eBKMEKin} zE;p*GP(?ezD6y0cX1Klzn#t|S>Df33l-H1%HjfRhxvi(|2vsATYo4_-oz4E zo!9Z`rDUEh4}xT-kjY(U&IjhxsU}fs09j8PP$5s&RkqRt%4zTd^Er|ww-<#`p>F;u z8}CYd#ctc(l~}=+=y{5cM;m}1;tx7&Qj2E(%)N;m$iNZDr+cnqI27;Q=|g!(Lgk-QFGW@f3J9E?LDw@_)l9ANUgR3{ zlEdaD)PW6mVF?mZnfVmR>MT&PBM}7?``IT`com9KrH|Tef3QR#4!2izLP5KdCm@L2 ztifV#xLLz3Rj8lz3MG!St5SFybPV~x22L+@Y-A~L-`D0{G8e{X%eNH9gTiB=Fb-NT z>qY#G^j{46Pid!r=5~{Pn)N>}h&(nq!)}HxXh)S^0D8BK(yPWIdRO%&qm<0Wg-$#2 zHbGi57G2r_K)t5m()P^Jk2dHa7ncVm?9{W`fC#vR7`eoVoAu}{s&SMg%3wOVI?aoT zj(VduJ*?F+oSrpS^fnz^wUje1y={!?V{&L?IfMSLv7%4urKJS3zh2wAar>@e#+kpc zQQ5uVdf6q0v(eJOPZ6YpaiMD4QqGz?2~=!Lr}iiAOW1j-!i}N<#3S~uROv?1K=Aq} zw2dLan&Td|y$=DWur50VOTsJQ^~YyW!TB5|l6V5HTYBTj=~Qx;cE@vEEoTs5 zeU_Q_ynQSQ=+0+Ips{)hE43YuUW1k7%ZPSe)%A`wyU4Z-N^f(`XIFYdH%+$j$onm! zNPU6fh`RXW-+w{;!#1SyDp;dSw{6lfL`P~8$>Sz-Nrm1*NyvH-UPHkqJlNy6d5TQ0 zaXc@tlX;?ICiz+}Iu&@h<0zb;yxMW>J*V_}YAs-s4|5D3TaucRR0Lc&*9gwe7po5u*j) zkY4*}i*5wL^VIWdZyY&4lSk#nghe$}L^1a0h54gronn~}60gnV61~U_KkPwwQwdp- zHx!lfJoO1w)~2y~zJ@Bdgpll8IvS06J&okJFdW|Tb&8ET`?7o8)0ureO;u9p57!H- z(OEtS$=uGG!YfDcC+bH#foZm1aPYdinsFW#t;M3l$P64HN3}Wq6uEsAl$7ZBXv1N_ zk#M=>cvLZzS2ud{*%6-gGo?z=C?e9cWhSJP(R|O=nLNbKC)n-SF~4=Ru|oxR%>0|f za9V9?HG_DjsXjr}9MLD;B`YagY_^9jXVwq>{tVES;8nHs+X@Ko(Vf&4l#g}OWY@Yg)N;=f1$!XG;90#6|Ob2u+4H&tF!M;sIU5)SW9-eJfVt0}z`O7#-4 z#_dSx+3RK1jEmEWHJ+`r3@Y6WLhYG3n^#c_Y~{{IY<+5i_pj$&Mv5ViK5cfuJgw(~ zj8S)N??3miZ@r8PPLzhgn3R8kgOc_nDH@*Io2(rknOgwM>#$`2hAPBhssAmhzqrC& z=fKg1En0B|O_n;Rz4##0p&$uov4c&mrTI)w*_%8OkwCH`kCclpGYIx^li_F-vlDm7 z<`D-y)w2~lWb=t5o|@UUJ7j4P!9EC-I{1!%K)zxG7Z`OwDKmM&zMct3_2OpNBk*c5 zvzigTfH(n`*9MkX0zYTSAMJo%+<;UT2NA!b_NOprzpI3wc=q#e&w$3~47`|>BL3I~P8AnQ{GX5;|&YC-tJ?V3Xugw8Sc2vjdf0Mn}Q)97!}oOfhK|1@{!P#vIXK@S02`mbg6-(g-Qu!`Ev;ykr_N z$8CuvaQ{Pg0U%%UHyYNs%KSx-LGpkWk;HGA{RZvoEd> z@Tq6n9Bhwh4ey!SN1ibSOUIXtQ@o8^)Yjr5WPS*aczfHcsLg0e9j8f!~Xw$4`Q8IJEz=1VvN72eQiO_$*obSd3b3>-FJ zmN1C-EeQ6jUR^qewNI8y1aK5{6Zgs15#2fJxr%*I=?$xysfO=bquEF|vKz0!XKZ-> zC8#@4`On$Kc!qL4UQKoboWeXd94i&$1N1_O-B6*K4)IRS<)W7-WhF%;OJIB8-;xGP z1~Z*+jD%O6sKIWq9H*PX`@8Uk@T&&cGijBXsBA44gz{r_`(zu4J{;{_)_&;TfKx7f zvmnwUJF>;)gtHbqf(T@lPGhwM#RvGsh55ykrAPW394x96SwKSOKg}mjmuww*Bb=WI zzqo0z{1&GdCl|Pb7g#-Sl*JlTiJL!cWb1wx$;NzV6D@>oqrL zi+Ac4N(cex=3Mc9T|UvD(>PbXU$z+hFgQY~+eq*SJ)pvgvj1|7{GEp)CJ&Myd7kW*wIO#lIMHqO0^Y9xz(a#1V z`;m>L%N4-@eoWt}l*&lSz!EpU zxgC%N6(pdRvPpMGFNBv+f4G}N`OLYTTwSkx=F^SBJw+(_?A<9lTopUkf87AggZAG)Pz5_?g3>9vc|0i zPHK}zy#a9x#|?Z4KRT@NZJj3^$7dYi6wF88UtBwgC)8+&eK+9y)jajMZ#j)gdx-v$ zTL*Os+vjV>9pJQVJw$vl>#%I}_W3O^lzw-JNQU9W?elpP4saAOoCU*4+vlfGDB`Hc z?;+;BIw+f5!z-LGKCByM`j(A`UpUQ|9tK)G#VC^Xu>*hP)Os8y`pr75o4kF#7I2-s z#gHE%4seQZF(jM+LX3XPX##Er+&YMl0{lR|7|1P{byzf|hNlJm_>`L3T?ij=Flz67 z10X4b8R;+sC|4m4rqm>=Hy$DcuMUc))@TaRs&Ynhs1wUCtU&Ltyc`VC1j8EGu0gUj=PmX%N0%C z|D=~nT}rjxHL@;ilRKAUZp+2a2gJ^5%&S!BxLoS8)UV4*S(jp=;{mPna)V2w)=SfX zhQ(5%QA#WqI!a)+`J;9FMdSJuYm(Y7XYFg%y~Hg;iGjvp>}-? zAIwdYOkyx}dF-jp9tg;d4!J<9PCmn!HN!xGoA^5U7ZTIBmev)Z=t0(u7Akq~(7P6& zZg7}xbQn-8n_+~Z>O*0cPL15S-hgBbcj2;UBvzFN2B%v)Z zY#gN}hHJBX{zY3rE-S0c-d#tOHpxPB@!p1vPy?kmiDG_T_Cf>Ys+6)oOTc2d!h9=g z`d|1UKw6dI16*n{e6)yaXp`&<66XlGLELBf7_z)9K-i2Vp-DEsHq*zL)rXw%h0$RU z`IsD1Lz?gn>P&W>d|(lEkd`{2HWQ(fQWA=Yt}v}s2E=@tNO{0bdKvB|#+^ZTYa6=2 zXC--s8}2?w66mrT+n%vdvthn5YrZC9zJ@YbBF%uoR87V}X~tAA4WmN{K*{?V8cJ`t zDaxKvls#2LnJCRbGOwc!s-uRK(t?YKDT?g*pf7TNUuZHG0xD!Z88fum07MJn5eWyh z3p5T>5JHFGDr9}ZRaroHMwJB73#kGqn%V;vlUHB`p)gR;Qw0&MamcMBz#66$QQ>}y z(P0V<71;}=lzCDToq;l_W!*xMe~Z)N7HV+1cMdUEYWaZi1LUBiTJ5No606mY=z}@0 zmX1?PFlT@+#hpVb&Klggl-os(Ilso7L;ZbL;$CnMADAk@(KI#IJ2az9xO;&*udc57 z?$o>Ysvg%>Pu16zUwJfi*azp6(IZX{-EeaF<&&dAzS9T>bU7P7;7oYgm@4T{E7QvE zj`-!#k;;+Hm5HI}lNOwxSbTnJ^LdFl^uo;0i_01M@{#%rdHU++E3Nvg@ju=in{aDF zuk8p4|Fov$r|^Df#?+~QE3c`)+3Q}@lY1``9?kCk=Y>U23|F4Ey0(rQ{c85Hf8u#+ zos=OLFz)gc6_}emiXjXWo)>qbe#w{{radq1Lj8(SAC`Mj>LXvnXbTfx;s#0NN#)lY zr~X#mSYKT?bo=UX_GNJ|c`4&XIIG4GA-}^|%NJgienEZ5c+EFn6%L_#GQSpJH-riD zU1;5fdv^`j>#BdbXK1>9ul~_c&))>%8|no4R`l>u`CUU@b>lCOn#!B19}N}N3s&C1 zM#=j#8wCY7q@&~mnPZd3q?V*D8x|0A0PxkwHOhzPgi}MKOvSgQK zkw;u2L*AVTQSKb^%`&fU+8f+MFjIB<=Ygk>pXgH}_~}HSpEW<77?UxGspMR5Wg2tB zQp5$Z^o%UYE}7En#-(8f*QbV!PxFSrzkABy=1Ky~=VDj@kv%MvJJER2Gp{P#I$xK| z%cVCAPDwYdS5)KF#as2i2*ZiTzDfu(_rO~Vx-8Ons;=69lgpeGKf^p#WF;us7iU8HH*#5XGSzb)uw@EsxB z81NyOe&0&IP^3(_?c?9g-+Q7%qaAb|jX6|g+{9)Fb;uAm_|B0k^KbXWWy;dqi*T*7 zd)*KU{;hIRT{GUKoN{NUXIz6s0SZ7QXO8?E(nYO=~c(3%Y-z1U0**f|S%WXgW`^mY}3|6ib)D1M9 zO;o+z^A%MssrR_MNvg$%U+uOwWycU01giY3Y%l~5|7UnLtExJi( zdzeSQ#yE~XUTwwEm>!Uvo@d3Fs2u%A=PvxEn?=$uSs&;`9Eiz6O`%-#$577vE$8tI zGS-Juhx?mw+{#%Tr&L-0$56aV8E|i1Z{w(Et*&4$HWqT}4{TI0f1T9^+VFeIyY~*d zRjjk$e-EYNKWvF6_bV%-^VI$#fpxR;4dT1D&4#*<_45OnSV-d*L z>`gJg!NzyGvbHhMEoQyF@r5X<5BK6+rurTX{K8%igS%ujs44PmInIh$pKLgz4JM8zeK>5d?>m)5v zx?Ir`2*bpi65nzQ5!~^4M={IUUW`RFo21)@NiPKF{%e`Ng!s|lCbyQJ6e7cJ%UB4l zod|d#7rkS8umZ!YSOpa2!=|WSr~GN`diy0UA$Yc&^?^+{49=EnAlV*?&S4-D*?2@J)0!q^yeu+EE)& zw#kF-0YDyYj!nC=g3x7*XenWF8^-~e!|ZI3rz~&&hIy`|RYmCrs zo+vp7eqgI{;{%q$jt#N9b?zK(0N!&JQoSXR6tA<%RWoYiC%kjQnZKY_b0=7J?dN(=@Y!c)kKC)shad!x*U5l36iHC_y@5Q4Gf zl6gF*YvsD*j%z?6rb4MswkvQ=t)oS?V3$tE9VZsZjHyxr+``FRPZi3PH(I*k66Kqg z(IDMn&$E2Bx!bI1>uX4n6?KHwyd4MVl~11gF$dkZcM`7`OYvpOjW7E3`_|ri+lKKj z3LRx@AoPFL;s_z!R+`9*>?2B{vh77TZ&4A7&%v}0VcGC|K6~HA4=KNR`3JK&USM@+ zow9ptI?huTv>} z=+a|_^bcW|S#&$k{GjY(To*@0C!qQ;xJa*h%il=dj2O1xsWWd!y2E~_0-iNVQu7wn zd&jsdAW^B4*lX@@nt`m%QeE9t{%hn=@C{0@H{IQ$?8PG;rX2GoR5ehFyDK-n;ov7r z4!=2q59se1#*%lSRs=?~LfalN#s(Fn($`5x6P}dKbDacoA(W}EWSQ!=RP4FYD~vbN zpQbAxd_}9=_|B_;PQmeF+v3@ckK{_YLcBnqH-w&7E7R<*j4UT>kA( z-KA`J#|f(Qoa<@D$DN(gkSp#^`?p{gZ=={YRipH4>mTH|FnqohCg0ob)qh^&ZYhYb17%hT+t-Exv!OX+9Fu&-2$!M=3gj%-gm}@%82*j ztk~`a-K0a!d*37wD_6Yl(dn(AF1#(e_MmQ?sB1twgU_9rPriuH75UZH=5v4nsy0e5A+~1Fo z-WJDT$8_1E>GGA#dl7Z4sx(bPlu`+H=kVc4NfK+gQo(AEr_y#v4-XmO*hF z+kRVoc{A->j(01E`--z*zz+3jxqLdcaJsx#jz{af^x8D(%{0x!Qef3}HB+&g`IGl_ zU|w_#AA3x$; zAreawiRK95(=eb>7y~q9$M7w%kNrp$u4|ZzHL$-Ih=w6e+KBd@12m{JsDVGvrr_Cl zr}`^TGDno^MeyCU{wVp~I9!F(aJ6IXv({11q*ql%G~9Q7bDT7q0zP$dIN2ZGZI08p zvqNpky?DKZ#`b6&oXt{PU}tD;g&*c0&C6D-w0L72CpTW2?-zO~%;LO-_&SN>*^bgisOXG+wma#19(s^f&a1^uT?Re z@ov)<-R=0tchlHfnK8hdX6vF0W#89{cvUT@bv|MYQhAEFh|J=}&bw&Ada_jrAsg8= zYIl6DIMLBg*43&_&N!QYa~&(sFHmC*gN3@?v_f9C#%R|Mt#U6Yw>1o_Rd=27Ov%`g zInudO7r>ZaY$BTQBkiF~*4vitkM}Hf7bhzIWk(wVQt9P`ti|a(bqG@E%?caVGWWs? zc6oS^O~=OJ8duw>ZMe?0&Q%0CH#0`!jm0h!_?0bvKlFTZ@ z|FV@dDPM7E8dk)o2ubwNZzrf%~zf_tBT8TzfSP4P2j&eSjKv^%>11i z^=GPz!^9IO*sMin4m<{P;8BC|M5qE31v?zWDX{6(&ak8dRlhJRJ3uswZqb;7i#?maV*P$(72uAC@u3 z8aOtfFCi@43gO&K;TO5^f7M&UtRkjhs$G56S2f2I_jlc8-)tyUDo=cg zL}6I_!;lW^iqUy_S;U ztUg24*9-T->r~^t@K96Bep;2|g?~wkwZRMT-Cu0qtM@nc>hg|7cD?#QORt`1C$}h7 zoHw58%8j(baK{o=sWWza~RrIcSz~~kB)n_9V z=Uhkp8z|0~)wVCrse7cbe`|yAJ#8(|yF;7I;9J7T>X63{4F=?fzGl-*?YKbYelP8r3BzYS3`HYU35`t0`NF<1qc4U8A8Ys z3PM;>Ng*Z`!;>Ri`%TmFG9mAt76`Tc5R&eI|WCdr& zlS5W;X8ey)1y=wS++HBO8C7r>A$CD|wUMmg9z_V7EV0W%qmv!&A5rWw(;x%0nMPbZ z+QTaj_ciQcs6Wssx{V!2dvizO@f?whD!6SZJU)&PHh&2;Dq|r&jyZ;>z&hM@dY&)uy!^75%4}eIKf6E$H?Ir!1|dUr6>U$bH!EPSkV6Gfq>@`n@RqMb9Bi z@_o~(tC^1?6t}t4-@5R&-lDow|w%fge@wdy8&Mr_0TCeTCvM zewYZGdn!5pmNto6a+g<{RtvuGD()%svOkl{6Hd$;~?d&CTA zrq5NK3C6hr)MZX7cxS@1HQ8fnvL(+=>@*(ooHI0YJeJ#Us`tUTr~B3|J7^vwxmE)` z(?J#71Mf~Drm4pCz&p7FO`GksV{Nt8ZRr-(k{-C=i$JC0D%+`p>=Fd423F%GZVcD8 zMJj@*7>e7@xMQlzDo5CIlty*G2Oi{#@$JH$Ox3w3p6*(hV0VP0QElys4|i4cvzw<= zHTQ(yZGU$({&e^{)$kBJ*Wt{*ht)x<+adUutTMhVdmh9g)8Y5mwW_F4d03m7=oc0c2h%D;!bTQlBO@fW@UFOZR1>aU{@HlFA|!1!@p4@JKV;fo%`Sde3&g>T1ri+ zxztQImzuR7m6{MWQIETV^b`oCP-=o(tx)Cg@WIqG?v1KTJbWRZuj&_uM-6b{_s9@s zi``#a9L5MY_OuK1h?u2-Urt!=HkDR9_(do*F7Z6uL=8$74 z=6Qe)#YIk;YF!krpg7!Bc@4(9<11A$gYn*YvTEsIyj#3U#%6y{rXApT+xffMw;a1b zyfr!8!xqXo=Ek*5mIP%U7Qoxmq|ybSx&qY5LOf%t&EhSmI@(VxzEgP_@eQ;Z&`t3y zB0+nA!ylA>blE78$n6AEK?eM1Dt8e+yrae|d1JEEhZIZHmQu@9i$!=i{!+D1gijk} z+F${h!AB&Ub8e4~<|Jt!%I2c2nIZurm3t}ebDL5`TWq08bs`#HV`mE@bER)_Y1^@t z$rhSwvJKPZ%u1`OvW2iO7}{@>d}`V?W_pVB+Hw@yg8+hw%G!b}3*&W_+zrVEm2;yp z)sHc_f44EdcuaxAtV)CFyil{DjYX*r4MwjSEa%O;5>%}*cmU5{9G8>rDugYz_#alcSwnDBM8R#aBI^<8UI+(hXn=A}9D{_N;bp=i zg)<2`6XFCa$IM7qs8$ZcMR6@V;rLhz1rqh9liTPZOKs!UAKQ)PNZSqtNDXXI$wiD= zEQ_{#m3H@}{p(=yw&6Gjm#MslLyTdmVus^_ktW%x$@5R}J=2M04@HIP^n)}r^U-52 z_@3*xOa)|N@3G>;I^8k+Ix5&*Mn?2+ix7T@_$1ecs@NlN@6g!N!Vym!(P2;1`ZJAJ zCem1R$1FZYNX^6Yh`bI`F8#i52Ofu)!-~4E5|6+q*q!(MpBinu^B$YgS`V6$Y*mbr zkXq!bkt5+0K(3lK68CitvTx|>R9i;kKM3p%8AM{T;vNdQ=@gn2iTOZCjYLA8(tccK zgsQX&crUz6^)vzZ#&s%}QTWexW`>)Sk|jfH%w|?(HnUo@nKfIJQnco_cr;iCB#*q+ zOsi3$>Krn+&Rm_7C+f%)!HDdqp;NHh;p9BBs7Jj5GFfD7ukPMFu8HgW z8=pG~Az*-js38FjiwfcrP!LxVK*g=%jTY6_*Ni zYXT~?Qj1F~T5IE4>esetwO_Q>{?47uO~x+I^ZdTQ=dT~H)|)wV@7$TYp5=Ycwd1K7 zC=xhP#ZfU|Nn>$fQ3VJHF;q1^03%i>^l;@YIOAq;WU6ZH46%} z!JC~UBSW0j!Und6-L7di_Xya-deS#0KP&8l!Bg|NT&^&;{JnIGWQrte3gpy~ zWx~aXhKw?Nbos@>+cXkYdszdXSii!RqtHN6&(SS}_8jG{8vdo{{&Oh1{IdO3$%zT! zphEn>!EZ32|9A5eZt=T1Yd?r$kJNRrmq3Gqfkb{Yp#gM{8T*IvyvT82DiHJp*?3{1 zUYf1n?>G*^9nVx0*`Pb&xuWtg4Z_PV8|iaNaRU*;J|B%fjF}&4P$}Cfbh-?Q$E0;Z z|B`QlK3w}}pyU*9JgfG1;w@uPPo%;Z$DnS#Mn&7T0rqy1WF=&w_O-P3`s@Ia?$I*N z=dS9ZwrRa5%PY9gShOUF8^Kt-Q=Qpl?SBQo<9p_9;jo zTPcgLB0J$9YVC87bj}dAxcM@Ju7E{F2H5*SwX%|0*+kh~>wTOz4rNGhRP{NIPmMzx zOxiIWQtepC@X=l+2tpT)E3Eq+@5nU! z7WzHyVf%0#*t9^HcvUh6riSio?Ig))SebQS!|WIhlTi1yjr_O|Kb+9~mXiRQCyP)0 zW!UnT0DJUQT^2kmg9r$d`2r2P#@WV?%qJ>-9FGnnSQoZVK<&aCGIW3{c;HqTSyPW) zO6}*F0ZsVY1f=P0Iet5}zlW;t<_JygCY=soj^?U9#`*w}ak%<~%Hc71KfrM>qc*}54lQp>?xyHLTSpD#)?rLg z`1u_nb8e1!ZYe-#Jau$zxh5^ys0S6I+s+=-a%16Oj|7{6y(XgJ=pG(D5sjJEc+q%P z2R)h_vI@AGF4dqRDW6)&!seow1e?p|EX6L+oG7M)cBXu4Cb8aikr1s}lzYSX=GNM4I0 zx}nAevx@#xS=#hM9!I6LQvbG>mnC2RXQ0J3=PaQYuIREqFr5-Jv zaZ*7q*<^X$6l-|1SH9iW4ko9-cWS+t_^c7l?)GrxXyYYCf3`$QV8Y zv;|sX>6}(FTdK|2?e9LhUrJ-XIP)=9gYmO@ZEE_9ZF~ zg8Imc$7Ug2`#vx1(CPKZLh6~sQw0U+3y%e>Fa9VCg`=p7x-2l^`6E9skM(LRUXX*L z1JJSCsqP83%YgUfppan0G3n3s{)eRXo<}{z4LK+@saafW<4|3V(ciEI6um!`2M`bt z?LlkmXB*RCj8o8R6Ye|(X`(H)Qqk0S7F3d!{%B4Su59^-&B(=5e!sztU!Q^&_PYDw zSk_mr%?Gg4SjIisYOXgAbp~}dI|$&K`(~pJ zY^9c7(x0IZ^bx>bp5WH0+Y?@fLSJP2zRx<|wFdaqt!Xi8Lyf-=~lj2r0 z5GN~o*>6~a9dDU|;6TC17u0B<&p=&UT}n5G7nCIX5-=N`cN|vCL~SGOkyYjqWEpcI zN(QN$(w#d9zwE)n;Nde-XJo~TXQI$f_72Z%~&%F=>v8{M>u8h#uJPBfm#^PnuWHsmSw_g&)DN9*~|N<6`^sk5zN7w z*(kKH{)Nw2E&c9ogJM)p$LMmKd+E5%L7vdS%mPzgyfnq5rF7u=v(cc|C4-eR)qtDp z3kVBEziuP0pN-nJH@q$P&PGo>tzqq8P&+l^&qiBta4xW^3vo&=bk{XJGZ%#^@2@04 zDmQHGeY`mrMW$^WV)RW1r1elvF-B3fL*=Q@_C=V@4POL6BA`{*q%aWx-i@)dvZdtJ z&JF{y_z@^~a*?XX!Jv91%MdYvd9kf!qeR`Ni$z_ufq)rvZzTut;Mb5Iad_2hXad*~ zjc4<`?!zd*t0gOq(HrgM8=b5)_rXYsrE^d(-_L&Sb2Gli8vElzJZKKWzI#VJ-TPH& z_0zp0aN`^lA!SmY9m4*vqcoFiv+wV>;G+?it@kc6A3W_*`C)&*gK3AlC*$Rsg_xSsz|=%nCL{i7E^3cD;g$e2YdJ5tb@mNka|)QE5)gsg z|DeNf&4WqU1AjUXWtgmqNaZQ(>@LF9&Fvq4__@=IwS4{l`m74ddCrzPOTP8W2YuP|HNcm~(i7qsYFY@3fXusanE(ZjD2@?c=RIpNNDCm+bV(gd ztotE#5gZKhJTxLs-=A5Y(!`6YCI`r=Wy|~?C4h>5GO)t;6WkK2OIZSv3(WxR^-{l|6Ur|G zGwoJ<_?iDL!(Bn$VmK*0A^-1HfHe^KaWg1ngqINN_{&Qm`iNShdijU9ghv0%6NI-U z#xqid<1bYR-)VBIfp}5;#g`C0LJN-oq3>^Xa2~x9AP%;@bK{ub0h_(RGvzFAiHF<_ zSaNlaIl!N+Ed(fmMS<7lqZX|97kEoP>V(?kGx;b9mEb?~5f|V+)<*;y%*5*!fl??H zf4B(sVf~KbyNggesivP#J@#3QUXp4?`!wQ-i_s`pZuTvP&F(n%S%MZwT6S|_ZV5_& zJ@d#C6bp>v%_V3mI)l@f!b07ES1v^v=mx&J6b(j)F`Tg3-2{SE(`Dufhn0HQ-^(k{P)#WkrM_g$092{s8bscb!CrOQAp$qc_wbOf#$#e-2Y z9wyi?J10q&_}xn|xwSH|BBbW+cgWgLhM9An&K#FPmsoJ6V0RZvf?bM?Nf1~mCeug@ z{tQYWe#(gog4W^1g2G57HI4>B)>S1bY4_NW`6>b8^N%Gjxr?uw(I{!@CZ-406~L_c6oVW*0hFrW6`)0u=Am{x!2+}5IbLspS&@#9 zSl0e>r)4EPOx)(tS=%k#=|xvenZ%gKP3OqE2zfIrAmd$mg$aQtI|D|wAp^cNX-uMi91Qr96}w=-o4f5=hDWYIUHJiDkc`dkQ3!r# z1-dPa`WH|JuUcAxvF8`{-gB$6h~+bL`f1Qb9g}^0D0?@oq>{@M;u?rq=)d-=$WUQm z?`Q^7n6gi75gD&dTUvptv#tAK@&0c$(T?%TF=CZ+$Y3j4>X)d4t!TE5=*pVa*Jc~3 zT8&qKX+Xu0*y9g1SdjO_4$`D{&d%Ep8-++8mn;7*p`rfKZ2NxmN!b$~dB@*6-RL0l! z;@g;V<$yruU+1rtL7TfQRpsHZG`!F@qEB}jF&#z5e|#IEGNEliv-sDyAzPgL(;wi~ zC1?zY4bBoY4?V%7SE6{OWM6YZHxIXH!<$wDB%(=-05jmvR{|u$IaI_=+3=uM0Eys$ zVRg%4X1skBniWuePQ1JI!>ZLN6R;7tzlgwZtVUx&seE=dGEn41&>A2;!!y<(i+|%b z5n9QKpR7Uc{k38QlO1I+sEm zHdv-ecEQeedcHN6+XxEiXp6Adtqc*=oEu$cJpSP(*zZv+(X$$;y?PsDByWeQV8)gXkfwTsQmq zm-$)CfZ^3fJO+G-wlsB`WXd#Pc-N*A-R{CDSO;xam=ED;x{en?|AKW>Zb1K$m{P>JHs==OksDom7>|T23;ft@ z=2c+4Ck6?K2f^6*e;4Ow;(>Ah8=%|&b(~vQ(v>{U%><24hT(1((2aLhpg=d?Re=EA z04>CODgg3<$GH(t1&VX~onYw%oSU8~V5tc|(_KeyuUZk7uCz6b7FtC`Fa^^=9d%?# zk~**oqYWC5Vb~$q@U;}Ji%(+!kfh^ZFldh?LD;(tb?(azC}e9J?K{Zg*QQ`YHSB&41vv+^2e`*Xl$ z-*H-)S9rT2KD-Sr7MYw4LUTF=2mnWIv)ld&Cjsn>fRM~8A*>JKzCA7mxbPiR(j@~L zWk-{zk&L8~nmyNfrAD`Yz8Lq~j$TTFCK8Yod=m*s3erS^8Cnu`Bxq4|e1N(m`05#Y5 z`~hFH0qd;Af7*~rU0FQ*k~G|BO$(_iQM=K|z(;Qaux6vC8OQBFX-J0`?m%6}dq%{0 zDS+QxsN0ZT#<5^iXtNjW3yg*Qwy5APs6_M|p#QBh$49WoB*@1l2r$O@deRJ=BLfP? zx==#+=?*kyxM#A`u4O0|tWT_T5ifVafG2X-B+z8=a+lKOzeadUL^xc&Q-PR|_q>bx zwY=`@5)5Y}QhJWYWzN1ygd)ZtTA^FvDuMMVRNBnQGao zK!v@t0m5<+M$MS@r`m`;;-$`yQj$M9{OVR#$bxZIbtvHv*I#!U(Ohu~=fe_2}m{w_2{BpH}t zQ6^vk0-GWDW4(YsuH53nAKw=6$4%2t8wscX$srza?zVUf>?bh80>}<{cNd$z8^Ckm zXG5@fc7bPR7eh8+Nlk#BbLRs?H{>%A-rAjyfb86?YZKwxcg($P8zFi7-bMWf840y9 zWBl&=j+Gou`Pv3Hr$~(rf|+TGO8qht%J%pfK=q>_VmGkXAgF@bmwfsdvi21i6w^Wq zBCz~@^cm?17bxNENHTN^j6Y5ZxzNFVtZi=OPvg9@(9%{O@X`UsZ8}7(0&hZrB zP@|GM-32Z{|2w0vFmZVP2WX236J{3HI;}7vJj=t2Yn@i?PUV5u;PJZw+IkG1-i;E0 z1An#~sk(6`;I5-|goGBfhO={tuZiLMnslx%Zli(I%vTr=$coEPuXE|8tvx&9)DO|d zfk`bpgwSo`0yEq{o34lHmL7ox6WA&4Ye~OFWz-BB>GxY&FON~yiNiiZiCtam=1@cE zL$&r-m>O2-3SrSK4kKM8V4Tu#ket~35&A@=*+D{!z<$nqw%Uc&pW-_%3CNsA0hzN< zP?sJP)TL0Is7q}N$H|}Y>_9zX2U=B~r1(ke-vv&)3FOI2kl+B8eas_l32;#!gXlx# zWsxi^pi*HbL=nlF7h&B}CG0X=v8T#D= zBR4kUSNDRpFcRnQ1?|S(id}m__c21hDPDd?Sv1ML(_he!tphns*!M3O$JcS5D{lN5 zqbfDYp5^J&@o^US4ww!At$k?OV97$C3x=@z!QKyQ^kH_B+cItWk59vnFl#o@7s{(V zbjc#0>!@wsV($lo^2Kxu4%&}~u=);o(tflYy@|iuk9vXOyiGaMPLOPOtQ6I}y;p$; zvr^T;W9l^K76e+V01~6PEnQZyrIvMV-nv@Nn`C%Sw?zc1$7RzUJs`=3t>vKqG~*lP zs0)jFVdVj6wniL#0L2BGzm0Zu_C&zh<-o5UK-s3a;0CYHcAe?$NXRxmlgbOs#iO5P zw>cy&lbvE1viM9~N2YOu3yW_ioRfft*+@92$&ypB9;A-GKZ_v#VFNVzDG3z+Wmskc z526TIW-P=}F(px-1|nZRVZ2?S8GjvNo=mPA@f*#Bz&Ay7$SsFy-xM>fvN zTa(LKbIYgZt;`+|?ghihL~5_mb^!Hl?#-kti~*#z^45UFnOJn(`Vcml@*<*FicAze z=aA?*qaDAcNpc0r?Ma^80l{R7c3_+UAQ-Vtw;$9tA>^!>4<_7c7E7j z`MVzOPPhc_I8h2LI$R2wK`XfE6VxrJ0T9mypY$9z;@N_aeuA!nvK${lS6?=KBvsXl zqps*Wq75jd7Ptvw+Hd_FdG`x8X0!lHGY!51zQF)ISpS9%B3Zaivj>BW<>E|eJ3d>1 z^aEUigaGP{qYGY%z#w?dcOg34FDgj(lV`Zu<0(XXbD`&^YQ1Ov9j?2(5}9SFzf%HE zj@>>*qhmds6=47f${v{ZmQ5{kMoFcN>`^s*dfL84tJ zuWh%Ymj{uSGd3M>I|?Sz5%`m%s5Yo6%B~F-;nO5>c>OVyg?`5mjv@7ES7W&Z`k|#{ z*MJU>DNCIsi2|u>z#Fx*Ip7@LEB9aIX9Z_h1#wC%pQ`5}N!4l)Y;!}d@{lAWu~JMd z8f|srNykyr|G?S#=5aJeB#F>QrILtM7{LF(b9O#!M-yW_g9(w40I=c(a~ZtbEmC54guBH5vLHVdxvGQKEWOR0iE2)=z3$@7{H^ z#kjN@?a>&63f&JpL5G^`-~eL>c;uGU)Jjl3`BJaZ!dGQ3f0Sfn<0i zs6murmMDV~cRP(#CT`VZw-J4&vJ=GOal5cWWEl@gYG;tQ=<4vh!`%jR^`#*>o<|rV z)`0sFj*l-HI78s`V1J21U5sRWWGaf(vB#$BLh+f?XkVz;KIx}!jqszCJ%Es)kznev z^$hA9dV0Uq>B+%Z@9j#{HMYqElXgyLFRjR9Oo~tuQI8F^fM?U=oLbberKG|quY9HGHZuort3~gG z7Q9|?(#@kR4xa-&3dINJ;qjk?n7I19XcKDmI_`!r2Fz>TX6vDA00v4x2Bu5C?`4U% z8xutX}uz;gs!`{6botq_PxrH9PiX_Na)=VD6w?VD;0f@eS~f8k`532 z>QP-e3cP=Yc_gWjeE~>_t|i;`{XJt}w_P;$Tl?OXSjGUdQCQV)DF)&ZXHibq7Jv=KE6YC@;^)ER9Oh22N_ z1+#SnQRBj2OZb1{x^Q5o1Wo4-qMj6-sxpWtUM=qedA8IS7#hJh(I3mf(cx)={uwYg zwsa#X8p2Js(BdVWcfGy{} zj=+Qlf|%BG$!z`#C2HiQoI9SwVn=_`Fj$O7euX{^HAgx;aGn$O5$?%r@Lzyi*TZyp z5NY;6-cINvMLCw>NhC*B2Scda$aA7xoa0^mKFM*u18VEZq3s}g#)tUldep{*-pTyR zvx+R*Ag5D%kh&3qp-}wJ%<_(NMOXGtSKa=%y9|4JobfzjUxa(!4pJW<5(YfdjS-*f z?6y}`MjnjpaPd>6vcvJxYFv08))y4(=<0dRj83B0ypLbH03R|p)|}+YVHfB46>lav zZp0dTdvfSvMbCJOuag`jyQ03H95!)|aNOY{iqx1-N_YE5hCfegftqvbeLeAEwwm#j zi%8o&s--cIOa853Xi4(h2IjenBT;22p354K&Q(dCs}8dwq8(R2!6Om&g>TnTDT7(_x2+eKUqay| zLc_a#j^fLgAO^=NI32gyigUh3<3;XV4uLY*7>B0Woa-19Ad0}va< zb=Biu-=H*2!2ou)XK7H1mIgg8`vwgQU9It{a>v_h^lB~2QMUOqieX#zz_FK+w*7q1 zFfL7;8*~j~nK`}9fVET&(q-$9gYv?0Z7`21xw zQnM&%jT;4dzQr8T?wW!7HK17kcRd4XZqFTfVFMZvx}y{7;u$7Q9Yq7_F23A=GBlTl zG_~;5yL*VI-c+1&1;s|K`qVuKYQB5q+h$F;G&jCT%boH}lV)6c1x3WX8H;2)MM%-B z^+Rm|)q#d|2pD&k82}yw4~Q;v{w;j%3hEdF{FaL=K3hs$EL>3)$ol!F^Hwm{T}5H+ zvFeHuSJ4cFzNo1D7M6N+0XKh#rsF=}!8&}k0)9s#T=6aP!_nWPCFmyJ^*!9!h_jr) zo_E2EoT#zmg$T5QMN*03S+QTqNV!}u;TLHsS)_{+K{RcMKMpWCTyg`Ic#6i{{C`n2 z=@uH$*V&fD1N|ya>zL?n@jat74j9*2T83!{^|?aPFiZga-UwkWH^qCy&`#-d7=L;T zl+_RM^IPCLb`-a{jXIG*f3VLnJm@wW=yeOuQBK7hZo@a$V*fj+i+3YnRIP)T;gmZl zwv8*RORBxGraj}3+e52nu!-~?CIPF|pW7AW6|<}1O`qcI16cL!~W zF$QS^A>^nfu&{mLov|k(yXFKUogDV5pspt__Q?s>ev5q?JG#@0{*D`3O?@C zGx$}H{eDDyQ8hmLBkBfyfA2^1CLqI>-$S=UuMOqWv;b5y_uh3%TOC;D4!nB4)6I(I z{{_qs7{_e)QLul!2YgzZI0skVN54iKe~FZyuNcU5r&FWmqlV$`sj+J~zWfv5xw9&y zKcm-C^u0Y@EFB(yy*b=(*U78#x6PNvPb@N7pUpaJY`J0bYa!=S9`5NJo5#XYBFr-!RIm(9}ve z38tcR6TpIGJCdJ{PJWCFAE0p}<0W#7$wH_h{P+Qyg*IX1LzqpPkrk$g=vSm}wFFiy zA(Hmkxo^3bvdm3*%_B4nO~qFpq0y}OG~D$uOr$0}@G*Lf92I?kLxHTiRcl{Q>F}N6 z($kv(?Qj6U-;73wgzPjb!kf0oNe$yN|;yo}k~*IPCKjb<%LIm{3mHs7bGd zOfy{A(?v2XeaRy59*A=;n~js-na$tdWN>c#N!RRc*q~96YmIJfEWFNEP?ef{nvOv<_iO{-*fap zBs5av(Em{LOBBa0%`e}z=}ifhfRW>&Zh`|au@iz1V7P=C6RUUk6M!lJ0@+{hBPAza$i6HeZ+Pg)&l4u{yOl6Yy3Tt-9n|q_02UxvMv93Od*f{09Gg!pBZ7DF7*JUX_S;CJvJ~vPWdtlO z&~y0MYC`_y9>vw2ycNXToES%9K~336 z#sVkUfQ^FYg|h5U!3r>I`aigVgW-ser<3pU`{vP@(L_b4clmwu_VgXZtOT8Xn~#%8 z>? zEEx7A;lwWDx-6l0Awrc)E91({%SueO-|46H7UBZpt?Bt&C6@p-BPbU_ncc5i&32}9T z!I;O#T`0e!BPP}yR{$D|CjAj!E@!8Nd*nW9N+Px(9vb4(iDHQln;8Xl2+Y+1(uXds zW3Mt|HgqW-B~cD+@?mrO{VyK)0@lQjNh8KdHU*56Y;3(bhbmJ>pdpVjbmFR}%0bk@Y;{Swq__D!miXO(SH8yba z>}+P5&xSxrYI{)HKJ9?(eA&MKOmaCfZ>LL0MZey9dFej?G z?c~kWlZbWSpok(`*lE1U+Rj_KtJ^}U+>mB%M`Gr#_a-*$qGaC8y`~@-tPnSNGk552 zC__Sh)#B?d*cqZBN~M#(PWM_tLibE}m%cDox`a59Dj^CCKabr@s~+ZYHd%q`G=^bJ z7X!hX0LD32Oo$0&`h$lz@!zLUxz4W!I@kC&bJiQnw|^^-X1G@}oL)0+ubPo*VWdrKp6i$hgCb5Usc)rfuIXt7gn~-OY^vnA z8%0{bTI1#$dZ^zu9Et`sW_O(y64c&roYRX`!fIdIv_$MkiD*3Em2M zD+}i1*#YcZQf+_Wn&nD1OeUKLXaF0IRkDd{r(DH>fS4Bp(vmLJtx26L>r=5r$!ev< zojaH%F_3&(u@li!Jhc@&86Co>Td_G1(I}=hJIVBDv@!mWv_`*j#Vqs@DlpHglA*X^ zWEK=@jqpwx{5$RC;GL>llXn7}K6yX2^aprXr#1=l7`+{z0*<4<{2XYatSNaA2G`K4 zU_N|uxsnu#E+$2)d-FwZhLa-o0i;M#sfjPMD~*)7(Sa}1FOZZ`t>(*2FfC-OZXzcMUo=Q2);;5AM$3G()l8T_##QWVQJLPgb#UUWKdo-Cl(^sn`=DbsXjM{(V3CD_l-1Qn&#iD2q(ZM8!X8 z=Wt~R8`g7L{43*zNG%G3m0V{elbkg+AJ zf6g#PGC6(*<(dR}fv!f`_2#>M<|~dKj6K?&_(t*n4I~@m(yMF2`_`%0Q%+?`vcIKyCmimOmu4sW2M8YzD~>sZ0m=4K3Uf#*iD#dX zUJb1dYF^RaxjxNAM84F#9p{NStTehMzmUDP7SsV+(xsfK3E2qB8)~>Plt{0HT3Xpe zfkAZBINTHz@xy`cCoa1Hj{j(i&2`xlGYl+x7MIH5ByiKiCC#yLR@N+?gSx{q;HZm zsOya&5QT_zMAA<;#C{so|I+tzduFOqn&VfXt&1yMU0Db*^!ME#0s-}J4><}KsQ`(F z3+Q!n0eEP*C>%kur8dJwJp=ttI;6ShK;yYydrT4hRa4J_^>5EVw}iilQt|fnsw|ya zFI~gb;Uiks7%(#V@#y5=VcX$Pf_NRztwK?FcsSciv}Mv+^lx!c{x>+8|1)U`LeY3+ z7+{!1(vs05#QcL(-v(Z|`Kz?_&j(SGQ!8DER{pO*I1GWtn25{C@xOYMDBivhlkB&k z)4rDy8tnD1lRoFZ0q1^_BR!K^jsF1PI1qxA2mT279zKeko1rCe91^8dfA;&FM4W0?WI`e=*7GQ}G( z(%)Z>e(6TPM=9N&a;)+TZS~wc$k*I#%E{nNlXn`uo;I)kOzy?!S6n9f*AHNxFIyYY z`k|#q`p)2JW`|L^GC2q}|98Twmm32b^lQi3m_mqDVnv;d`jvlbtMgALr!jzhEYz1HSM;|jIas}n z{;NP?tW2$cpnjg!>QN5x%lSK)-jgKhIeS>uYAqSB_Jb0vo0DX3N^AKOI*+ z1cIGp7!5y8^y`9Jv`;a6tr%0lKnu0FQywFbo3RrP9?JT$-&CJJYAt+B;D#uSv~ z4KJ?blHYeE!L|oV{_smFyVn4>Kg`%)etZ2>EeZKPvQv)y%rG0Ax}svUTdEYdU-t&Z z2aP1E?4HJ{$XNi?C%sM)7?mS0+ha=&y15?0Q|HLP9id&|`kkJ18&13lGJLF(KChLU z;3$=d=SjoCWm^Bd2zsjZlb!QcCd*1;`-RF1`f+DfRY`?sRczOiv#ON-a8Oi1uUa@Q zs%zb86`KtIr1Y)_TDME5LoLIjevGeCM&-x3{;{_7IaU`Z{d|(}PgB}Ma0WNrY{UO! zQG{h)@-oRvNEG@N1G`xij!Y*x2!?b{XzGN#W@x&tUXzV>*c>D;=lu?syHAr#GMob9 zwT{W~-2C%!q}UgX8l2209Y3R$j4nJAnrd%zAg-2aG2g770UckfZLy$~{92#N!07xW zugxCwAno%cDRcp6YO&;jx{>6vw^$agfnTm%pE2sg<`F_J#(!s)W(FL@HkP=*lb-W` ze+N(CpE%W~{?t5@=su^HtB;z83Z-naeGUx?0m5gRrq!G@PtZP(-eHD4lKWF@QC}LE zZ!@)oU6XXWcD4oO!>Ft(Z>K7O&JEZ7VJ?L1aMletvsVW?7LzU27>xE6>tSk;Q;XV~ zzk^;+C+-hAX~%-1NZ3qMxCqa#xkg!tmWo4wlVgjhecqaESXvinIzEW$?I~faFElI@ zm$)e^;Y>C!tBVVEtf>o9Nm>*qRf%A_u%xM@KJF1l4Py)vMQxCvN{m0 z41ON>U0$R^cQ#LJsF~dq__+2hm@f_M*~WaoELQLu4*UlG-%6 zakDl&?to3Zgv1%JtrWl;TmlOcwU_$m>6<{(D|tSE=1ot5`Tm~s3E0vpCj%dN&y6* zq>b+zZdl*ZjJ>l3Sl^w-74Ld5#odBCXsA~z@0TXv`y8*f8*o%sQ!A5y4xsQqqc0^S z4NTOh1DcRaKj5w-HH~nm8~v2T6+3F)-dwI6yvJsgM!agtnIb6!Z@8M(!S~dmks56j zd_(rG%*#&I6(;-&9^Z+b+=q|F5d%TBAQs25t9*nF^Q$Dn27Ky1h*je~0kk@mU%jII zZ{3u7r@uz&&@IrGYpjzulS)qo|W-<6~EUObURX@2MX@6BHW zppm-!2)DuA=SQRrgT0jXWwaqtpkYJaG6*fAyw)`H`&sE0Bg8PZEjTXgp;}tNwir?~ zJHx_ufe1E0N=&LRVA)z#id6&i`-A2hRaLzVRLAgZL8?_&-Pxj-F5BZU`ENb!VoH8y z`rgg%Vs|kmwUP%jRv%Him=ehkvS^+ud1~)_Goovgizx||&E-;Hdkl60yONgG?|xO+ z-}pO{9N8P>PNtOHc?tFZExTKanJ_Y`hh>XAcQSYM&ybjUyyUvoB-_Cm+QY(Z2`yn| zZ<2i$7T%HGyEsFXYXh)4%`tG|99e^bLwQA6dUb~11Q&S3hLiioX`xCuCocEbr>-4V3z>~VNp{9oFyfltyM-*v!zgye& zrtncaQhCi+{HWaZ`4frB>Gj7Bx`=y+T1V=@AMQ`i&O$vViWe1XYk2Oa0r=iH%HZ9v4UTaFr-pr|@k>oLRDN-qW ztdtGu{DjGkEMMzLEHnqL?$2D6&&aX)W!Vaqf%-IdwlXlwHboc6^kth=_Ec50k9Rw? zG|E}(7*u#gwoJ!eDY7f4Y1o{y*W`-qBjLJLK+w5P;^+bs2%=^yFH-=6Iry=OV*7h- zgvCbUI$*_n^zPYtLI~5mRd2XYRT^jBM-On3h>Q#~VA(AeoXWbvl2d<~xdJMOII_A@ zdJmDa*te}V`l(uXc($ik#r!^%79850o!fftqPie?jDp+g1E>Z8a9mQ0cXnq# z5UcqKDicrW!QM=Pc7gR_=tyGLA?Gylf#)Ii*l7}V{y2bT?PLoe=QOk)JU=NJ)sJ8!21N&E~E5Sb*h~g9$rj3~y(FY(@mNE_;&-BTQGIM%Jr@+rC^1;IS55u7q1b^97vc(I2w8YhiI=}WJV+zjMxsAv6X0v70 zZ4XJS{PBS}K-chNg+Jk@GgkItBYCUl1)S7}ea#C_v)VcWf7FK^CidzPtjspSdZibv zSN{i*>xs)JPVUPtfmmC|`m*tg&s(KVTDQp1*#5&dQ}L6&?97N3aXwc?2)_P4R~boP zG1T!XF6_sqwsR}>!IjnJzc|?HI@M%O#GXbI@@o#5_v5;ENX za#i?b*i7$DJ8dH|R~H=0ZXo%=NvH`PXoi_|JE6fwVo>l=A6{??auh+tBtMfcjdKC2 zfrlQ|K&~A8J;f!pp6C^hB0ZGk3xcAM=oDTk2)?mU5MJmc9~a|=f?8S-7A(G?Nn9m3 zeT%CEZ=>Tvzzhc;ch>!`h$u*EK|z8DFq&6;{H-AI$RidGBWP6qUeG{1_+V|v^V8Te zv;!*!upNm(c>tS&e#8G6z=k0c-ZX$s4y+&I^!?bqUfGcv-x_SO1KGFX5QfTuYml5v5{#NxEDGU_ zdoWV{wl;*zepm*69Uq2pQx3k3GK=^Uz41P3D1KedEx)rHH5ac}a~!hnLGbb4tGNQSsT`%N zxGoxQ1$uG_%}_ZrHC!=zY&wEURK|}r+)DH#c)_SLe$jAiQEe4!R5@3Na_iC2vq&D& zR2vGRGv2L3(IFXEL%EIU#yON3qJJLBZAK64QGQ5yOc+;&&R;~kL-Z5ExNT_H71S6~ zz9o#?j()m=1tr>OW3v|D4m-;O(mo;)|9 zT8*{29d`oNnb}5-zH2o18Cq>&<)OO4(VPQaDrBQW%O^#1)o52Sn;zPT6@TuaRvlJ0pzyE{3~|?!Lp8gxQ;8xGQM; zc6N7|vU4ZyTXgANuouAJRIo3EdoxUsWMgwaToVb_)Slswi5UjJL9k>p;eYZ+(#}B0 z59KeJ639mu&vzjW34tFiU37N_a@o0J$8c5?XzB{TA65BEk{#IUnbCn)Wi=u@N3FxHnX-er6!=e58CWQ7s(q}ZK^hBWmO(}f{&`HHKrSw;UPMVsgls-$yPg8+z zVwS-TG6-o(3#6^j*S(XiDi7Kqo6BO)32X(8=aRQ%b)F^biL6-}S@O_mW6g zOVE@SPy?Opur#IgM4*#dLsLp04Ro@Z(Uj8jflfY*PoaMIpj!twNEgtQ7I+Wn?SM{G zNfKBYHy3fDBH^b*b#{b6(eJS@Rc6&Y3zhw`+xA4Vx@s8Rq{1>G3Bz diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xros.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xros.metallib index ca764a5f350579383fe75dba1f2fa8c84d121480..e29c2e2eddcb7db5b526330a6adc53e1cf7f259e 100644 GIT binary patch delta 15157 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 N_;F94eu|)i{|{3e9ohf@ delta 14058 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 Q;(`kU7w=r6hA#>He?QmDY5)KL diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xrossim.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xrossim.air index 462faa198e39bc3e59aae9b03c5b4cfeb6c92718..ee818032fc2321c6c0fe411632c4cf60addab60d 100644 GIT binary patch delta 54906 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 delta 55155 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%0D41Cuij&WuBb91IO=#je*mb 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 KTepQ!2>%baq8wZR delta 14060 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 delta 14038 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�_bQ9LTI9U0^@ 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 Date: Thu, 20 Aug 2026 07:14:00 -0700 Subject: [PATCH 02/11] [Improvement] Quantisized SH --- Sources/CShaderTypes/ShaderTypes.h | 4 +- Sources/Sandbox/GameScene.swift | 4 ++ Sources/UntoldEngine/Shaders/Gaussians.metal | 21 +++++--- .../Systems/RegistrationSystem.swift | 25 +++++++--- .../UntoldEngineKernels-ios.air | Bin 167792 -> 168384 bytes .../UntoldEngineKernels-ios.metallib | Bin 556471 -> 558215 bytes .../UntoldEngineKernels-iossim.metallib | Bin 559079 -> 560839 bytes .../UntoldEngineKernels-tvos.air | Bin 167808 -> 168384 bytes .../UntoldEngineKernels-tvos.metallib | Bin 556839 -> 558599 bytes .../UntoldEngineKernels-tvossim.air | Bin 167824 -> 168416 bytes .../UntoldEngineKernels-tvossim.metallib | Bin 559367 -> 561127 bytes .../UntoldEngineKernels-xros.air | Bin 167808 -> 168384 bytes .../UntoldEngineKernels-xros.metallib | Bin 556871 -> 558631 bytes .../UntoldEngineKernels-xrossim.air | Bin 167824 -> 168416 bytes .../UntoldEngineKernels-xrossim.metallib | Bin 559399 -> 561159 bytes .../UntoldEngineKernels.metallib | Bin 554807 -> 556567 bytes .../GaussianRenderingTest.swift | 22 +++++--- Tests/UntoldEngineTests/PLYReaderTest.swift | 47 ++++++++++++------ 18 files changed, 85 insertions(+), 38 deletions(-) diff --git a/Sources/CShaderTypes/ShaderTypes.h b/Sources/CShaderTypes/ShaderTypes.h index 731456b6..15019bac 100644 --- a/Sources/CShaderTypes/ShaderTypes.h +++ b/Sources/CShaderTypes/ShaderTypes.h @@ -503,7 +503,9 @@ typedef struct{ simd_half4 colorAndOpacity; // .xyz = SH0 base color, .w = opacity }EncodedGaussianSplat; -// Higher-order SH coefficients are stored in a separate packed half buffer. +// Higher-order SH coefficients are stored in a separate packed byte buffer, +// quantized to a fixed [-1, 1] range: byte = round(clamp(x,-1,1)*127)+128, +// dequantized on read as (byte-128)/128 — see loadGaussianSHCoefficient. // Layout per splat: R[1...n], G[1...n], B[1...n]. The DC coefficient remains // represented by EncodedGaussianSplat.colorAndOpacity.xyz. typedef struct{ diff --git a/Sources/Sandbox/GameScene.swift b/Sources/Sandbox/GameScene.swift index a4457fa2..4dc239c8 100644 --- a/Sources/Sandbox/GameScene.swift +++ b/Sources/Sandbox/GameScene.swift @@ -22,6 +22,10 @@ setupDefaultSceneObjects() setSceneReady(false) + let splat = createEntity() + setEntityGaussian(entityId: splat, filename: "/Users/haroldserrano/Downloads/Pooltable", withExtension: "ply") + rotateBy(entityId: splat, angle: 180, axis: simd_float3(1.0,0.0,0.0)) + setSceneReady(true) // Make sure to convert your usdz files to .untold format as explained in docs/API/UsingTheExporter // Uncomment to render a simple mesh. diff --git a/Sources/UntoldEngine/Shaders/Gaussians.metal b/Sources/UntoldEngine/Shaders/Gaussians.metal index 30dc717d..8a5e8449 100644 --- a/Sources/UntoldEngine/Shaders/Gaussians.metal +++ b/Sources/UntoldEngine/Shaders/Gaussians.metal @@ -64,8 +64,15 @@ constant uchar kGaussianMaxBlendedSplatsPerPixel = 64; inline uint unpackIndex(uint64_t packed) { return (uint)(packed & 0xffffffffu); } inline uint unpackDepthKey(uint64_t packed) { return (uint)(packed >> 32); } +// Dequantizes a byte packed by quantizeGaussianSHCoefficient (Swift) back +// into the fixed [-1, 1] range. +inline float dequantizeGaussianSHCoefficient(uchar packed) +{ + return (float(packed) - 128.0f) / 128.0f; +} + float3 loadGaussianSHCoefficient( - const device half *coefficients, + const device uchar *coefficients, constant GaussianSHMetadata &metadata, uint splatIndex, uint coefficientIndex) @@ -74,15 +81,15 @@ float3 loadGaussianSHCoefficient( uint splatBase = splatIndex * metadata.higherOrderCoefficientsPerSplat; uint offset = coefficientIndex - 1; return float3( - coefficients[splatBase + offset], - coefficients[splatBase + perChannel + offset], - coefficients[splatBase + 2 * perChannel + offset] + dequantizeGaussianSHCoefficient(coefficients[splatBase + offset]), + dequantizeGaussianSHCoefficient(coefficients[splatBase + perChannel + offset]), + dequantizeGaussianSHCoefficient(coefficients[splatBase + 2 * perChannel + offset]) ); } float3 evaluateGaussianSphericalHarmonics( float3 baseColor, - const device half *coefficients, + const device uchar *coefficients, constant GaussianSHMetadata &metadata, uint splatIndex, float3 direction) @@ -144,7 +151,7 @@ float3 gaussianSRGBToLinear(float3 color) // Diagnostic entry point for validating the packed GPU SH contract against // the exact evaluator used by the Gaussian vertex shader. kernel void gaussianSphericalHarmonicsDiagnostic( - const device half *coefficients [[buffer(0)]], + const device uchar *coefficients [[buffer(0)]], constant GaussianSHMetadata &metadata [[buffer(1)]], constant float4 &baseColor [[buffer(2)]], constant float4 &direction [[buffer(3)]], @@ -328,7 +335,7 @@ kernel void gaussianPreprocess( const device uint *visibleIndices [[buffer(gaussianPreprocessVisibleIndicesIndex)]], const device uint *visibleCount [[buffer(gaussianPreprocessVisibleCountIndex)]], constant float2 &viewport [[buffer(gaussianPreprocessViewportIndex)]], - const device half *shCoefficients [[buffer(gaussianPreprocessSHIndex)]], + const device uchar *shCoefficients [[buffer(gaussianPreprocessSHIndex)]], constant GaussianSHMetadata &shMetadata [[buffer(gaussianPreprocessSHMetadataIndex)]], constant float3 &localCameraPosition [[buffer(gaussianPreprocessLocalCameraIndex)]], device GaussianPrecomputedSplat *precomputed [[buffer(gaussianPreprocessOutputIndex)]], diff --git a/Sources/UntoldEngine/Systems/RegistrationSystem.swift b/Sources/UntoldEngine/Systems/RegistrationSystem.swift index 3fd52d29..47d2cce8 100644 --- a/Sources/UntoldEngine/Systems/RegistrationSystem.swift +++ b/Sources/UntoldEngine/Systems/RegistrationSystem.swift @@ -3321,7 +3321,7 @@ private func buildGaussianLoadResult(filename: String, withExtension: String) -> if let packedSphericalHarmonics, !packedSphericalHarmonics.coefficients.isEmpty { sphericalHarmonicsBuffer = renderInfo.device.makeBuffer( bytes: packedSphericalHarmonics.coefficients, - length: packedSphericalHarmonics.coefficients.count * MemoryLayout.stride, + length: packedSphericalHarmonics.coefficients.count * MemoryLayout.stride, options: .storageModeShared ) guard sphericalHarmonicsBuffer != nil else { @@ -3488,12 +3488,25 @@ public func setEntityGaussianStreamable( } struct PackedGaussianSphericalHarmonics { - let coefficients: [Float16] + let coefficients: [UInt8] let metadata: GaussianSHMetadata } +/// Quantizes a higher-order SH coefficient into the GPU's fixed [-1, 1] byte +/// contract. Mirrors `loadGaussianSHCoefficient`'s dequantization in +/// Gaussians.metal: `(byte - 128) / 128`. Values outside [-1, 1] are clamped +/// rather than rejected — real trained assets occasionally have rare +/// higher-order outliers (e.g. strong specular splats), and clamping only +/// caps the affected highlight rather than discarding the whole asset. +func quantizeGaussianSHCoefficient(_ value: Float) -> UInt8 { + let clamped = min(max(value, -1), 1) + return UInt8(clamping: Int(clamped * 127) + 128) +} + /// Packs higher-order SH coefficients to the GPU contract while leaving DC /// color in `EncodedGaussianSplat`. Input and output are both channel-major. +/// Higher-order coefficients are quantized to one byte each; see +/// `quantizeGaussianSHCoefficient`. func packGaussianSphericalHarmonics( _ sphericalHarmonics: GaussianSphericalHarmonics, splatCount: Int @@ -3511,7 +3524,7 @@ func packGaussianSphericalHarmonics( } let outputPerSplat = higherOrderPerChannel * 3 - var packed: [Float16] = [] + var packed: [UInt8] = [] packed.reserveCapacity(splatCount * outputPerSplat) for splatIndex in 0 ..< splatCount { @@ -3519,11 +3532,11 @@ func packGaussianSphericalHarmonics( for channel in 0 ..< 3 { let channelBase = splatBase + channel * coefficientsPerChannel for coefficient in 1 ..< coefficientsPerChannel { - let value = Float16(sphericalHarmonics.coefficients[channelBase + coefficient]) + let value = sphericalHarmonics.coefficients[channelBase + coefficient] guard value.isFinite else { - throw PLYError.invalidData("Spherical-harmonic coefficient cannot be represented as Float16") + throw PLYError.invalidData("Spherical-harmonic coefficient is not finite") } - packed.append(value) + packed.append(quantizeGaussianSHCoefficient(value)) } } } diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-ios.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-ios.air index 01743a54c565242aa482dd9ae317a6c61da21445..0b315c531eef9b06fe113577593fc21002815bd7 100644 GIT binary patch delta 59006 zcma$&3tUY3_xH|Bx2a}oN;FNW=^;@vHI+xUW)wn_=Xxzuc^C57UF7uqU*lqj!H+ZiE8M!(-W$KPHFygyI;Ksx5f9K6_S=_n$r>NCjipMARuo9^0!fUo zTtKm5co%IF+1iEA2$0gU2P97uX-B5?5#gu8vN1v$9A3L{Ko&cFQ+-I56?YbEIGt8K z>nF8_QYe2ad0IApm-m>0Z&@l|8+=!&H*Le3q8xVZ0{o{{(|8gqDocP3mC^roV$T;- zkJK(a@3Upq-Gu{$En_4vhmS!k+dUI88NJu2gb#~yF?LL?OOoF*k4B-#(?s`1E%V-9 z_eL-GTA@R$-sQ&L-enKmFALpkAN0PE*n7Ruy)4n=vX|AjOdq6iT-F(iYx3Jo9%tkG*f_Y|&nNKPJx9Xqj~W z*hKSMBJo(MFw50TO``|%TZIK~g|$5eY7Hw_ic#EZ3S0%4ma>*{Q($C&QK8L3TD>(* zIxU-C!1}rEM-Xz(#%wXi2O}Jl{1PY&=9kIVsH_#Ma3}FpmDN;w=5qFi6`~C*oxuxCZ}y!quP*`wqd!y^+f*-YuMInVy#!JHheALFgb1q zXv>$EE#TwxZ#YjVYdDI{A4)w|n5|OPv?fgI@5JUxX>@jsdZ)(SEyHK}yma~s*Tng` zqXN0AyzqNsZWV(C@}spDZdjkS0_S0bUsp7fDu zq{3-8V|v<^u|*PE(aFRNFZW#5g%p~2w@ozat!FC5IDCK6I6@0l=7HoPaLjNUgFCt@X=`O%aF zU%{o`FhzHKR^UNjfq?xWBUppkuvX5GmF%Qd4!Ie4F}J@BOD@)6i5WdEU{qg0^-eG8 zG$-y8MhUs3^Fa+fSmMO}Cr)LXxIq5smkE8OX-=_R{Kj)SzFcJgT$Rvg4*(>m`PL~3 zMNaX9ZF~iPx%%K+V3L&QKP)*F8!?y*yU1IR%N#Za^iigINjPrPvfcKGm7u;1VWX>$ z^c6Wh_OnU8X|oZmiRqn|;Z^r4Kx)(YnJmy{Q-7O`9`O{Lgm0%2q^3W{@*TIv(0kN} ziiKfi8H1~$aP9E+n{1qy&5MFX``^ZIgFXAICs1rytgHjiOEl>?ArHjg4#j{8M26Hq+7(QFBQGKEqpn8KE@3UR`*Sj58F zgyV2ub__RNnDH4MK4-9F*xAAiFAST&#;~C!2kh5HIJf!?`0(-LM=^E}<5_7OBvF{J zs^pygIDB~a44Q@_rz9*%yFDE1C2^MYr)P7SDkgm<-2}gvWC?%!pcf$e7=`_W8SoZs z2`xb(ikhqF9X5av*+0F+GV9tnk9@1hyJiY!!+6g+YV}kHrU5CHCo<%?<1>cHIgO#QI?i zuxcTTCgjlE-s}%DO6E2x8Aa641&U%8PjP=7lbweAea%AZO38-sg%B33S79W#+t@oD zl0`0bHCBjC77A#KFs4G#k4yP2Rxy;{j~2bb#a5w@@O2>GR&GLj_ayn1E7Xq3RLKyz z!o6=JwedWru=ek7+g59yq7V+92c-Y8N!GYf5b6ZQ(0;xQ`Id7AgaqeV2}qUMd^d-I zR3jjX+W!s#ooi*Y#nxe-&hP#6NZw6a6HxlA929}068}Ha5pP`7juvCZ zxX4yQYt<6nvnFv)?={( zD?qX!%!s6(R261ZB#EpQs7GRfZuz&3GFnL0ID>VGWz5_ZBL@W(Js9a^foCdr_I~Uj zla}f(IEimG?agdQ{wjOGC8@lCh&q5#qxth6qLH=Wo~GIe7r0?5Mpm+l!i}utYkS|{ z%dFVzaYNd>(W`e|qKAZ;y+mx@Jr{PSE$t9wA+yI)^CK1Gd5irLuKjDdeUrf9iQfJd zmdaaUB1w5GlI?RtydBFRYM7OOO+($AvaqFn~+aL$OTe#?^GRz_}22PffVsgT;E$!9qld zvf&;Sfvpg;T7=oT<-cTO6X_KHSn9M|Rlz7sKAa^Gax~>c!!RQ^_b@p~PNRZHlr(}| zwIo4&Bie*c#oV}-W+HP!I^6;1TIm_-nC%Vho=SZYp<@X-0=I%UENminl}nd%nQ~_C zHw@&XCMSOU86CnBpPtT*m5HbnPoq?j(V(PiGz7VRIEMAe60rRkF^O?(`^170n=j~8 z(a0I})a$(xLWOB|iRmwT`Qk2bc($V8L^joHS3*T5*JY*9rANVOZca$;hJ3bN0gL)u zsoj}^9Gl^@89n5|T$^>(b`#iki*|9FGCkv1-=+`rqi>oW$9p@xWz&QN+3$+wB6l%` zvp0CJ_MXPMR^%Y?@_Sz9@IeqdQWomR`0+ZC%Jbso*=QHVu@k7hj@t+q$FU|;d->50 z1q)-Dw+px@h?F?`tmHB|=P2&hBfYkORe2#p6z<13f!p1s?F-Mqcd}|PWaz{F=%rq9 z?6hcsALFDKqepsO0k@F|jH7=gPA-$Wl}Q9Q!|(&lM1d-Hmmj@E>((Rp9*Za(blQf# z)No;0?9CB&CwY4{%oc(7B1*d3gJ5og@3 zYYl@Q`o#&Juo7{(#~Qd?ot!T5coHm3*z&qSpdSg#5s5cFB>QYeETKPp;L#lHCD~#V zz4Q!G@_piVTzov73TlBLR-DFu(ZTf0B?N^Wa|$JAE^upD5t9_nbP4gIIxpU*YUNVlo=`jfgU@Gu`9(*UNWHOb@m+4d@RrIRxx zViD!5*kOBZH$EI%j$r}-B0eq+6G)fOUH~?OrXeglNB0a|j_>|nF!8c(-437%qny^k8x#Si|L8Te93GSS*Y? zcs%*fhE;?B^95Lkcor*Otm+|dd*}Eg&cZ-W5)uIt@$3&pS24N-RtrcNGMTwz!J_UQ zosQbqouesFJh$~WaYU{KhMvCJav`-FLnA(H$VUu`VNwT2$3OZErE)PRfWa<-BQW^y zxK7`7=P!+w^9g^8vSYhT?BHiHoD+CAiS_r+ziYvt7y|}3x;QSJBEf3A=>M2c$YI-V zg8AThtcIXN=3$|ODdW5+a4aw)gqH)i9$6y68oMCO^DEOZyCIw{?y;aH;!~^p&3n?oZu~u+<2YtnH~zv(Vr7H6869P2#RE4k_Qq`OVlo~r-4wdE8{vaz zKP7zYsdvr6?u5VIdcdU{;Xc1-zv)gmDKTS4&u)T|2Coo*qT}c6y)&%38ULZ&xI>g~ zf|)aNS9Lezx;4~C@kKZOF8|<|vZ@<@BW`9-87jb9s1P+Ir1X*3)o^yM#k&z+mzVl8 z2qp?9b%bBrUmXL#lwgJ~#-$y!?MHhS_7Ns>NsK7^I*$svjZ;*f003WxABetIkLiB{ z?RKCo0f^WbR1NM=W?9oEFzPhJDMx(fVG#nX)il*Ov%UARx!q^>tnyJdVR%cI=sV+^ zhW)*{*juxvNkt#rBKn0&(?kIs<9@{8Eo0gpZNCO)AO>~%{oSY)Pd?dDuejs)af-gn zhUR6Begj;ZH)Q1U1MhAbaEStAhg)qA^1Elia4rfj9U(`&@8aA5PcAkbAOd(`bcBIB z7dC>}Q3&l2d;bAF#;ucJ^e$ZH&EIy+frWX&Cb?)aI?DRrkNfFgoFejtVTagXe?Pis zRCg|8Lxp15Tbx41<<6f68&y15)2ENT-kUdk?xqNR2~2-_KHPSvL!xP|~z6je;*wd?E3%DvD@Ie_oO)3BY4` zS+7TDKk&a<&;45NUIk5tTM5=L7A=>v?QVo_Dok~Ejai=1E_*#}$Gqt~GN<3p{6hKq z3(xuUZh!g39rAa3m?OKyAhqdHVzvDhAs)FAauE38rOO*G(}#boyh=}0cu z_e@B-ycMAJ2yhet`jB*%!_P1`;|hJacMw2J0onl5@&S;90H*-Z2!KKW>;pi%#@2`K z`vNY3j&|_;bS}4|A`mVy19G{!#Q7kY-=tW#Cnb;ZlT7#HCfU^KF0H6UefdJc;m*>26jY|tJ zU9Y(Moxivcrtd@3FT?aeSbqWl^$2hU06YLxAPRf{=l~E3fEq*r0jdBn7yu0j2LfCL zz%T%`A{+>CEtk88J~o$I7z-C)5j@JM0&L;%s5X~dS~*tn<@ZAd?O~+ka*K1}qG6=w za&;AOX^mR~jlwFpTS;KJPxmmxje z0QcQoE?q-UXThzEp3Z~Yd3t&p+%D78u{jSRscW;009Dg2Y{~tPzL}B0(=jEwE$?kB&Jg|2=W6!)&ry+A?fc!*Bk^uF#t|n zrc?9?a0mcu08{{g3-+if2EYjb)Br$)0EYok8j`90d>tpwt7Xa$#3cHFBI^S*PK8+mqR;%^G=4)&gF?A&X^ ziE*wvZd?4ky$%f#=!p-}$R{3_EX)J&$?@}E+qas)XZgh0l08Bh!52KABz%4|!sT{E zk|Z*j7rE(np_Xy6xk!7QV7i^qGGbFs-A*~bBekm6l3TYK)Hd~wB~>Ct|GgaXu^FY? zXPyqD-ip}%WhB~4=CgQWW>Ol$V&@wAC9nKg#A0=^u$)-JE3ck$=GII;qq$_}xv=Po zkq(n1&zA7=__CUa?U|;u_TH_xhl zo{a~+&D9zLXHW@#?72zPA5z=mNx0U4z!Q?K`Of;Dv+KiVH-wdAQN>dfFZT8n7vEm9 z_l{ZePGPHg(Z?ekPDGq7X%v=N^AjG)A|LHv(ul6hAE2vLNQ(Vi9(7*i_C8T^P#tXY z!t5k&6l`*=XXtvKtRZ6iqX;><{mpE{Rrq~r&GgqLoY=AU@aNy0y2FTWFTC?jm8ewc z-#2h=b#@t}Z1MRHCiYq9`RlkRZhu?F({1_o`W*)KeWi<{c%MLge8#_-bJ~8K^X~kd z_dVzEeb2rUoV^)gcT=x5+si)dae+E{!8Ih3z&NTM-}l@r!MU3en`+|tzRz9>o}uXp z{DkL|rvFWSPl{)*x)1R;G6}hG5(w`1Nz>0#?-~UvY|a%n2QH{qX&G|EWVzS?dwt!Z zlSRB}%IuF;NnUg9+ze1^eiPHR}X+&Fkk4%Eg$J2|K} z4nB~B7UO{Hi`KA)lL)-Y0goK8mvZgIS3E;Ycrx{j@Nn6U2!|R_5|8Nt26@@&ENJsE z+SoP>X{9VwT}|+P^_j^-eoFQZPx76bu<1N~RZ7@d~Q9c;(z>l-pc#Sy#nV$&q5BZI4Y|Q^hMH2j#Yx zTofA%hl&qvpTGE*`Kh<(FAb+oj_e6$y)yBv4^hu2>Ps@BeeA)g_>qr#40-4i`G{}d zP(8eUQslz~`yk)QN6Geo^T7Ul!q#Ao;`~l_5wibu`*A~cf@ksI-e8%Zx;Hp}j>++T z2r)^hQMlipznUcUsLWu9Z)?{MEv+`>kB_l_`Y__rE9<5fM0ahqeIu~3-}*VS+MYEe zuZmkc*_vvg`_i5{OeZ?Ag%g-kt=2NK-c^(zC-R2r(lk5wRJne4_wIKO?lP!$XQzK( zCCVpf>B<>m?e|r@it61j?t)c6yThn?KKXW=;CIq-T~l+kZO9qtR_ALO)Yb3r{7}WK zl>Z>TXZAqSfVr^My{4_2;}vs|Y;Gh32BX7u7~vm`ZOte!fQ_31gBS%YiIy=UCFfqz z))@!Di{#(#yvLw2k>*r}t0*i4PUN4|GRC|cmhcW)%49cPn#5)Eqk_#p?mD=&mJ!Wt zyK}ILS8G%(xiGCdx-I`&S?DTW`2>eIX%1kE2A-^Cu{s=L*OZAV^Bcr`iN=BxfoS(vH40cZW zH9T7A@Muz`9Y0#0!uLO0;;>)t(5~h&`;ms<6y1+RnQXg+CrgTamu4#ldUiKe!`*bS z*T}-*BrgZS75tx-I2=N2W0(QRP2M#{2cWeR9-_4`Bi^;xl1nvcY4)|q473ylBbc01 z{ETz-^{%7uIi;DqORIPd@*{bFfX)$-)ty< z>A;ND2`Xot+WE(+Dqf@f$X;@3v_D!(hQG_tTftS%K6JPe73vjS&P{px%ThigqA;Z? zyxh3^o7oi%>(5%_+XCbGPJH)Pb;KiZ{?R&K=^wvo|9}Y4fj}I}B{BFd<1>aiFMAb^ z?B-DfI%6}Rb%f(_qk*Gcr!UPsTg7XYAGvFRV$*07hAhAk>Ab8hoa&YGG;7)G@bZ@E z)4wbO>eVE54_#Vy`Ez6xeS?9`$DpK}stPgi3H}xsr*PssAHBWo!<%K?K~%GiT!l#8 zsWXVlojTFUORq(qFzV|FFWN#OWsDp{lZCkQ-y@fTSOq5E)uqO;UyC~=**{q3J@P&F zI-b-))fk;BcS008LO-b6qsyK6{&Q;_z@0Wn1%9kPQNft#I%R4zI#7@!RYxROM_h3Y z4GNAPnt#oZ@37zLAw;cLPP_-hA>SD2*yAY-%PVPbbH}&E@bTz#lOn|lP750%#1LG3 zwvI$&L65}^DAt4>BZs0MspN3bb#f@_v6LJRc|i_UJ<`ZwgySf*R?}kzIsD8q5)Jh| zR-$1Kk#H1{kDFFAp*jDWYxa3YzU!3Ru0ms8u=7fe)>WJb@g@1X{5<25A>Rrm6$K+! z_Tu|~HMtkcNRoOnXXxa06Q(0UY?>arC|H&;3LV#7?IUl7PLNY~ByZNyHqNE(doF$F ze)-2emk+yNIazl_J4<(|PFKZ~OsKqG$B6cL!uhRA)f69vH1a_$ZjavYL?$NZs33Zj zm`Iy*rOkm+*Ne}iXtkr+oW|%QlJyY~NK%7kHONN0@i1I_90Yl?pi^`Fwe>tR9>Y;vI6ryjeO`J8%g( z05Sl+3qQ6V9roa(h)MHdUkyyYpZuvMd>Jfr9=ZKi1WHShBehiRU>!ajv9YxDp6MdUlQqe0NGmT&+LP znD`D!=dsZQ&C*#DENdX8(=DNzspGznpO@!A9$J9@AxdIm^2D=s+#HnHHjtUH4`E7d zOI-NA$A4P-&sSe9RDQMi*RN6sm1{hK?bXvJUDK}gwp0je$fAVAF|Z0-qo^4`9#^@;?)} z9cI5n%0T(Jg7Um*0MUHQR zWx(R&uf^7D_YNw@#+>$BYx0UuF&Mp~o2Uy-UST#kQzAWXk&b)HGT|}hJITNxN?yh0 zwBKydP3IZe#RvX4y><4Jo%f&Yz0ZjDe=_4~6)K8yP!dTNMV&}Up^RL62nl6hVM_5J z@*pz?QSdR7Fd?px>&!L{#GfIXejP9FV$`Y&NP%F~rpm=^M+bsstr6S%bfh!c*Vx(D z;ILh6Hr}pP85nQu8|17fyE<#}1;$3Sw^R53(avtVbie8PeKDgP_V>&pBAppQh2>Bw zo$Ii2G9Zbo<-i>okh+P!_0tST#2? znHvcS_Q7D;+$e}8a>%|cVoB9voeBj!kLQoRfBwv)`SthBRXq8&Bk%7s#x!>xfG9ud z2)CspUvc>Uk8e6aaEFuZ$aS#>WYXM9g-n?Yg2#eoHy{W?L1ZYe=j5g8RHb0m;C&y| zx{=XteE;8XIshN!DOdwb4XxBx)6!ppWl2%*F_1Z0S_Sbl0}jx7qeHBOrAcsrzBew_ zUtnBjzot5m6dTE&3YHCr!#8gNtlj5UwN$6dhqXyHK=#atayNdRuuZk4ZQj(p+%OvpuU{8>H&A)qA$V@#a}f?T?0dL?JoM*gy`YtBc8Du5|$Ubj=BJn12zS zg}vU1O^LzXcRBbwlxsh}zULz2h5>~llbTJzB}2;?--eFwZ-Y?}!LfI#98m?2&hI^C zhq>6^*`6aM>*~hqg%=sq(E?r*xnS!UeB^LjILFCU zpe1-LN(ES+C&*!8Fck`?Ns&*FdE9-U=fKcz`xY2<7JE#Y8Ync?8y|9nfhZq%b-nr` zV@w;WgM{l0@hEqwy~vn6U`mH=?);F0thPDu-|PB|j1>t8^H#n|E~s$I_e2>_k0;h7 zYwz%AR6c1u7m>W|-Am>$)t)I0VwCZG(2hJiDRM!JC!dFEu>BtYY<=;U;f!OTGxWuKFb=j4)_$&Vd?3?(Dy1gYPq^Fe5+%`vK54eAa;>YhiU*-0moRAj$q zV`#sS=&7W6Zd4&e;|sC_$(6Hpq{Z!_lX&qIo#4g9d0JM?NVFrdVylQt@Iv7*E{-kt z=BIkQtgj!mzTxxrkH22us9gW_*Y!FT}UT<*!dz}dBT{} z^V7AELZ289DfCTmKFy!4OKY>ij%?LOz~_(&iE5O> zL(GpYoea&dQ^u3R)cooJxWI^x&`eFA*L{g2NJXWiUI8xH;xSqdxnQoLFL4Y#(T$4s z-ZV;(tT6srDYRy+4+gQa{buT^Ru+5o|OfnqEuY1D?=Se2${wz%b1VZ-K?oJ zC3TjO)b3_&B_pGFZ=yU)$|1yj#>2vt6t=|~WlXl=0RAM|hTJ5h_`pmzVkuk4lPiv# zP2@%2h=8Ulf$UvU|$(~y(8JWcg+&qbOYy-$XE&lYI4O+&;=1-;FTFFQ+ z&P?K!OX5%aZA5*(jw(MiG6dE2eIm`-t|@`4+9LkXbT2|txA#uW6?vO?CMYO;}8LHhgeNXmSnV><(gvC8rje% zGXjjA>TZRixLR_76j49oNA?-mzB>Liv8n6!lS3@hQU~TvX!by9hb%*k!kZtt*-xsP z_DV)p@qyieL%0R=;c{$+k(pFb@;|AtU6`{gcRaCK3+eDnKjt1CDLB@(H(ia?8~Y@uc+t@G zQW>9BL!YX-Nn9Re>?^gDF-Aj=YoO7g4P}h%cTMF3D=w`dn1gki_V`^zmke|DY*g

2MpAjZrLT?y7jCa9*G(^TxD1U0*EFwwxyPZn*~4j~%Zg~_VT+My7!n|(Lq z5d@znex&eQ91`g|n1EdO%I?rrA?5H!19IK&sGwR;k06>smYPY$TH`L&s0BB+Mh&~< zR_+=GXkQejyy_ZDCiUerK(4Q0VWr~8U06uIZ!kN8*jOj^$or0b!ShLpvmZ(o@cy%A zGc}h#D&a1AwFGG~gpn?RlFud7CI6| zj`v+Uj(OkfxLYT{ww%c{$=nW!De21}4C?fD&7CXQCLB%px$c=O*(MxA^mi?utJx+T z3r6s|FeS*f%Yjnf*TQL+U2ioyZ8IEKVhe7@hps2RmQV=eh!9sDuXa*#)m$Ex7d;{J z;loJX4?4m2@$(Kl8V?A?-ML&M1)cDcF+KVl-yW0~Tri-Fe}DaO$h}hp{SA=smJmN~ z8;^#f{%^_Q&mrio1yqGT{ilhW=MHu?Wl2Rh3NNE`6r^NocNnF_3H=8uz)19-16Eip zIC!J@GGheF(~I##$PBC?TxZ+fj&L1M7$rRRQ0S2m+4abykX=y&`0PQh4RcirZ9MUr zt6?sjCga6nuI+QpZ&A8pw_vABIgZ$YrkQC2&8B``N_E9$MppBg%ka*lSeH;Ym$gGW zjYxKt&x43OKFl?L9?$fC2T|!*B!*Q9&680%S|oz^K4cbOEaV691;0%~jmmxL@D7c1 zQh1+wSZC~!nJa43>=F+?``n~}E1b|@&}M%%ZFYgHYMy+DbOw>)ss=7Jz{QE~T!>K- zlTuy%pIpcS__4oz(tAs(Zh)P()xl1g#X7;6d6-f-i&z2n(mH7zvC>rsEk?5Ua>v3Y-Q62a7CmkNcm{?enl*!iB^>*WCF$ zad`{yC7+M@`qaQ5-6*(%%!6!db=pDIDIL7@vVtbXEK7HIbVGFoC7f_}AkipZfP<12 za$<}kh|I1U%^e}!`0jgu5aizwCF{-kzqu7tRBnor#>%)ujsKYQ9Q1P6{C?y(0Vf>_ zl5O_JGSwWdgylhG;RJ_`@wLGf#z^*Aqur(xVGweri1vQ**(SYF2Dal}dZj>7iw zR;XVHQd#b2DsrL~@DBAXdV`JBQ~SK@8*K4^8h9xwM~Fk+(!AynD!liEuSRt7Va*lP z)J!lMq@~osCeh(}u0y(Hjt7zA3QC;;{qJ4kuV?7X5ScI8yzVC6GdfYmb<>WoEFnr= z8|JHaYnKvdTwCYscWajsM_nZgc;(!QVXheq$T(w+t`KL)Z2duXHSh>w2EDd;9p7t# zsc0V>Dt^*0bL`;IHu4-Xp9;g^7$N0*_(mPbmpn$g#qGCb70~6)3FJRuzUOpM zAX-6Jp@zPK!`15eEkq2^NRe4;%f-sx5c$$0rv;(w?r!(CJ8@C*Af2$ z!}-9lp)12?gkI#=Rp9Mn=er4#eqNa`a0(Wt?ZY<`;(nZ>h3b8f>5aKHR|EHiHj|Z_-WlESV_t^51Ev3* z!rW$b)=Mvw)c~hh$A$(|u@=7V0I?e~G-Jkjb|DwN-8omHj=LE`9$*j6*{iX=5odbi z_7J}JV(h=0;N>oS!MRC7*fVLBx#-&zWuZa*=m-1oTq2lLxsbOX$~WLt0Czb=TGF37 z&*w8{JAw$*A)S`XKZKQw>eW*{dUxPwDF z@TNwG`s2`LFy)Y@#%u+E-%m#E4;1t}zm1Wn)2Zv`OLhyF65*V>g_8Zk&BRbn(?ZRD zd^PxCe~7VLp#L!J5qza1*?tw5?4D};l4~L!-Sk@;5TS`CA#R)r5asoY8ZH(j@Pu=kbjL4QwNN|U0SDO=>X54I$m|&4}>^8ti0uC z?GFUp(+DxAwuTX1MC?WPvT+Y;7_xDXoQptP;Xh7N0VlOJ@zTW*8YT_1ItX7S^lV=w zn#5-maa4=ZJ?h2J(s5O4qVN^m-!IZk5_6hrejtXv{#h8mcX9QkB96iNAQ6>$5TCYp zF>7iOC%dQkAdw8?>3bI^z__62L1F<6XY5@ppL&o}bn6EqrRPC>W)-h^vE-m|yz!1t zgKse{RviRdyn?GF>nnyH<<#aMB!*-j6wchcSP!_)++t9Ri6YL4TMWmih)*%61(=C= z{j(I9kpnX)fSPz|=0PpsuLS(knN`(=2p@1T{=j1F^CC_KOj!Xl;;VSoh=W;G2}Sk? ziSV8WwX>?!#c1;DpYieU7pVbXBW!LJi183k-bLsRVoi)dV*P;_X2jD7cmN;wuJd^5 zVvU%TWPH{3L&TS1pC94W-kNo4aoXoAAAxwcjC%pHABMmh1ZE+ybQYS+=Y=D%4uK^I zESyb(Lrcw~KgekUd3^cfLFpF<03m#vlT)-<4N5}y1k+gbIrRS!08KcBmckpX6u}X= z%NsWX_dmiu4*-ROoQ7Kr*(u^6kTl-)w-~ub{xUyTft+Sb0sCqzU|TlsK~FH5*zogU zGA%W;euM{LF4Fj_DF=zQXm*1$%;r&(0W1blBlvOzZzAEcM1%*Qjj#+_DPgOm(8f0X zT7E`AoTI`ymRA`5&tD^wt`o$av&}R*i2cWhu8WOp|6^J=RIuv5Xrtxgt{6M^)XA3R z1Svbs{o-=>i#gp0{C|gTrP6M{V$(RSRAN`E>8qBytWWG!iaD$j+5RN5Rbg(W0_#;0 zyA@t8tEDc*0_&eNwyX4Z4H`G~12im_5DgMy6~M{)=&ErzC$K*U*f2Lh)eg%){ngkm zRN1$v?Arxm>s2rSj3gH0R1%AAvBtJR)2sD?3s7pRcR@p-r@4-EG(_)ed`M;HEWK4g zHQrlJ9U`X!q<1AHNF^OuBpX^wO;uBRODGE*-iS=U?HY$wKu_eL5?Hs09DvYquHA8g zwfGHir*{D;`heN40x0}yY>%t#pTaNZpiU%F=v|(=YO;m`c7s(m5UZ8VF=WosQ{Y2v zt?V=7u$tBzfC!#Br-e#>whF4oXX~wI8?1&@OXnD1C?zMO4=_`VW@}(7`M|gst}2>| zfDr=27DS`_ufaJLP-}>tjkHw#=6DS;Mw8Y52`!aeb*47!yISJ6Mrj~?*I1t(sHX&x z7#7!NEzwi1NhqlrVzyXAzzr63pr${;hXK;cbPw2*I^9Eqs0KDlKO>Qjg%4=2=^pw_ zH!~2nHLg**xH`kbkU5Z?@R`AC82OYOQUe%vGq{@ww*}>`f8YYYtH~>T;O?^~fp%-Lo#{)|n-&`~7pv13t0_^E zboe|=ojz2OJ_{_vU==_D;qx3dB?y2;S#yfAW~nLDBabdBKq*b^UqsB5XDtSW zk^B2hoxTKcA@fO}qsamwS_zLxIN(iHTg^lmt^6yI_4!w30^vFESxpJ31R$E(57v@b zL>@5cDd?%3@K;-9*Aie2GmEJ3d8WZ?rWnTZtR)i4A_<93PZ`#dvjpVdVzaD;>YwJm zfmkRp|AO%YtDozET6l)5zE_e4y}iP%FY;{G|2 z5O8v$%~-|CV*!f&0p)I)jMOW?UjFB75{tYygwgT-G8~{uZ7|x zkH0$7bT9sS%jV{ofv=|>eY5@=jq1kG@urpQnbe_-R-U0;;7pyum=P>Fujxhog7Iyz z=pyDJTf=AyuDyu)Qk9JPA+db|$6cLwIPU7<+$H%>`pS+o?u8Uw5e=l?U?lO2s<^|b zuNifG%{5h&jK!Q5s=BTkMGa=whE|IEp@mI{nL&AnoBm;L4tiF#WNH51anwP~`=PPq z!=Pg3=EHH%Q#J?X9!Xv5OpBKdW;TQt+?2%2hBBK%OK);}hKK(au7t+Vpwkm5!TDsOTRs6&Ui{KEUS7fd9~x&dnD4mMz3EA0lgX26vj_qHAttNCz5iHZPn0ASx-%h*n;n zJ?vVxG||b6-s{71qK~3qO$FYjcwXafFRAP#j%O>_w^At7&5F!hA@(dkA+Hmm;{2^i zxJco8JHV=Oj65J+G5Yr6p41QYgdr84GHUxM217v?s#~`34T{R!sXg_cW2KvYKKRq? zJD4aGDn{S&@b2U7KFzAZ0-8f(juaZUu-Sf&>7oao3nYr1JN4Y$xJKbqJA#6* zQ!K7+!W$Kz-`(w6J8B|pHSNI`3gv@84e*#Hr&ZY9%fTBI+wTp=;Xg0k8;jQ{IDhPh z&%gXJ-nHT41g=*`6p>>{7Dzs3YmK7VO1xKi)b)o|qwD6qRZz(y&f(=dSvzlSZ(UsB=*bo$YKM zjpFEHRUIfA(tHxrasgo|DThS~KKP)EqIJc=m8@BRW#dVt@)E=OE4B(HpR+#DiBTXl zGkLjU^`9g0#fsnmWaFiZTKHV4@VvhWc9wJBGYGz1(u)3fzL~J~kZk%xM9N4B^VW74 zK|6k5ar=HGDU#0>sed^-l;>DVqn{%8FSb~n{bdK=i&Wmi(2lLkHi_1WX9k#~u*1A(2tIuf!KOTVeFK=4rFS@)(38Qi{kJDU;FToKIV;& z;#4dCdeF1CY%}{t=Oza`Nwl4#K?=uuJ}@|_3n#GV_6p1d|FEY*9mXQ| z!~bQqwB^_bom)&(=o)+-qBmOFY=GipgTg@-mFm?oFO93%`zUOHd|Zd&YlL^5Q9!vU zpe+kdO4tMOSo%RXq9dkigbM0oA=mm|;YACHsyuNb!-DT>#oWgMc8)=(w*{0&Kgh-8 zid~Ptph?CXG8FF~2hnI>Gv6u({Ovon+NYvZpHbc-ZuUp_Xy=LxoxsG2q67ezvx+TZ z(Y)ijU^?#Bp{E9c-_*_^EmZvcw~vEtm*w756?gy65w}EYvxUncf)H;@Jj={PaO)R6 zL@ZlNg%r^`b=E#wa=}0Qqj~mn;;?sz{1&wIrx58D8^;1@T?D}kxac0;kL4Ru$ts{I z9yCTeo%E)$>nxYFD1x7GAkfD>VdHxg^PUXC?YO&ng zBE_?(x%P!l7W*$yZ1`uW-GhArr?y2nU!`Mh3f(`8j4B+`G;nGoy~B3);9KZyIO;Cy zX-7JN(k;$xX8`hO3p#ZqEeKr67%m~qZe%?qW3+`m@f7EpzKJ>8qeIYXdibA(!v!B! zGE!Koi)JO3dz?3`1-Gv6A>vvC9RY10FG*5JCK9^gignLiAs8v2`G~W}SWpo3*Sbf0 z(EbI_Zq)V@If4*Or=igPXK%tHDE;W9Docxz+op?kAA;Ax6!&u4+6Pd@KQ#FRE(epaVw zcs@0>)gGGF3{1+iz8-P5JmNPh_JU{pkM#k_XF}l*#C%b|Wdh40q^J~2n`f{OfT*1N z!a1gjI%(nFYK6YpQ!H}okmCZ458i(s*J6EfPN!CcyN&we653^*OIrM_h)lz^V2046 z6Ugg($z2Ab>y+9GZvwYp#{B>mum$%AlQW;y6zgRQNsDWEMb0tnZ$UN2WUN-Y$M@T6 z>rOG&*&MT;Rv zj1qQgpv6O*79*g42)@FiTX^&bMSx)}E?0bQ_^dzGAh~AH1;a&h&0W?eaWG)mew$vr zU1?VPZ3=iD*$OpRao^w$nc_PGhk|cXxU}_kh_n=vWVB*jTc9#rf;%ZTwQ=whB|o(t z!dZh|gIO|1YPs)lR$%)>#zaNpJ2!ig>t?rLUYs{gTNZUyquBV)ZSaPIW5u1*=KB>S zPs`CvCR`~yN^KaSFFb<>8>d%l=W`cUXm~j+n%&32)IEwn-*NnET^G7`;N#9ue~>Ne zOZ!+bkGEOWIaRIb-9FgQYe~rB4w&o*n=GI76Rh^+9r)<)&jsOFQOL ze^H!k?}fin+-eW&%l&k>c30)Hdda8q9-zJnbD!cuGKw~snYWS=Ew+DFnqgbschCTI$) zT_HyjGSPVGY(e9Y1&!62oisKKKs5g4a1F4BRbD`&^bV#45-;q4#Kp4&{Tz^3fk-?L z6SM>ajlyW4vGpjv5B9Mi>0paG45vU)x=4;U+-n-8c47yDgPZcc;*DY&+qoesizUCnPSzUY2}yXK2ih zmE?H^9tbu$tfROP&!Jh=7k!iitZ)V1pwwF7TzieDWyPv&w!$Omq{%hdw<$vid=AUf z>h7n~^}p^V@GM-wzNMGk5sjVTT*z^6;iUH4yl=9M3Pv(wV!`4xO^W)*X&Wan?N>8@ zaULf;sKr61_5H?#4F)@$7?XK`uvRXh<2;YwN+KRO1+8Sk{q(*7@_uStfDh(;bsB{$ zSDvKfGl`0}J=faQ%3e13C`)E=#EfzY{2^t$T1mIX`}oNFTI>b?j>gtV4L~I&pDgY_Dro0pB8K=T>c3FsDCu4>&YWvPnyYjLf zJ|B-!1~c&Rz9wZ|H!JIVv$7_el!eL4Kz+*1418Fxisw!7N1Cp>S3GaL{2cBvrA=3# zH!1ZD+^gr`$&rtfBUiE>uQc70BmYiT_G04WEu#~D-x!^^%Z$-UZHi9S-J%l@qLUDX zBNUw~AvzV@;m)R_==6e&P7thq{f&tiQ^cmgB((?}`QV5TXH#i&ATad+2dzty=)pk? zkmG*CWPJ;cI}IFq`B6L_Ika78FewsR1QUCUU{Yw|=-DWkAV){|dk#c|+c?~}5KV5Q zXi|9xyRLl40ueVTlN@nAK{LRKnXBCGh>vl%aG6d~gww!H==Dn63GWd=b+tGh~`U6u}z81oaTW z3Q&;rI*L2Nev^B_zU~6iEfhhl>JO^lYjx`0A*kXj?BiToCt=Ik=fy!w?cmTdfS=|f1f=tF56P)LQ2ifQ5O~_?)2atYw zlB-O0!P)q5Wu^JJ%LX(9_mYKvF27kw$!5hht?;u-hGYqat^l*AMs(RtCXJIq# zxh4TB!`XO{HL6hdMKmZ=*!T$A?>!6*z_bVd!J^!17%ds;X<3r}Y*B8?yOo=&{$0z>>i!qq%l%m&psJCl zD`gx!%wH5>89|SLI@PS=N^UgE?l;K@bX?iN@x(q+rPOn9A#ZPFv);Y|_F78Duex;G zOO!xecx@S`3#Uc%{$Mf62t1hlQ(rTQ>GFHZ32t~GohF&DpR9< zMq?LBp-N$CdxNp{BaN*@6e0A8E1^{gvidL(0;j+)*JU3|Fvb7+c27Uk!y{A z14sGFYHR2Wb(A4;>JJhSqp6QvDE*$cp6Bk^F4cRMFftu;*@4I{s>4&1U-ibP;`fwQ zz43+rPutE$?c(nZF8|B6*LvWCnWRg#U!6u{(XHE*zkA>_A}l@UFJo-hm|}C486Ld@_49;n_fDk0$(2QTC{U?C}5)-ioqE>$5~GWRIK4?6EOS@YEa_%`|#i&_0X; zqlpF?@J%#E#iBjD;c)+jJ&g1Q8tOaPDYQ2y6noDSl_){ofnsk{nBe*6K%*iCf^Xtc zdI+z-+ChABtcak3-Os7;a7!M-J%Kpy3@sSPOjF1DaC!>5ymmz$Y}GPVyskRW4K zq*9uRyV_``QCPWs+(EBD^uhD3KE8^2SE3y3hmRA}R+Gg+MGAIQ3o34a)E-+kmGO$B zNns5QAlAYe%lfWo^jV^X(^9oji;mfm3&{GQY_@DIvoWmTj$pQoDLqTLZR{8#!+6bs zlUb_1BbhB*!-Qi7l@WW@cT}^fYmG%lx%!~=U}y0MP~K( zqzcJusOqSvmMgRTaUZJOZMw49AMYPeU1^hq_aa))Z0BLAR^A8v_88wHq)L@e{qZ#W!f_VOCACuCA0J~cA7n94t8DC#hu}Xe-2(7F z#P%bxr$Ta+BLnb6I5vv{a6hZl`yO5PQ{D`~KWClcOS2Y16f<`Fzp7Ra4a7&_g-S^v zK2r>bp2>2_)XBi%wt+>X)QLKW>IYoqqUTWO0#7zWXnQ%VeH?cm zH?FT+YQL-XCQ5sIA*2ZBZ}h2VoGY3}s1IsQXuU)2*D>W#v^f_p2ef?w@1yKI$rPDv z4z&!_`2Es_St5s+M7ftBCQ&9~lYhT+ro9&^y`zvn+)>EapbUsCf-z-6FWlR5 zzdJ(UuX3U|^D-jYQNVRa1sF7Ml_4RxSZuK^;S=NGA%e()+79~vv8^s`2aCksa$E7M zQ-#*S6Siq8vV}6#X8+m8<2(I`yh8ur;9aba-PlE_ z1N<$U7Gu4wj7DSZTa2#b8lR#aE0=}hsd$01E)?H_tCXo>cm&jpMd7(o#M6{#2E#LM_48a%S z%a!|wz|1D)V{}VU_8W?if_2M>;$Co548_CXCXB#)D61nN0j5XbgN=Z1EZ}998c|jZ zGh14Vg{3K948t2NH6k?~=cWTw5CDHo$-mIZK0sw5*-2?+aiktI)nOTVx%V{`WmGYPHJJ9|>j z66>H$gMyT277p4CSUY*LW}!2(+(Ja<df&x)-fq&h-qepbt82 z3gFa;{qB!~_@oMr1Wq+s%_*jBpN?Z_u-YwgbE3@$cxvoqN~mX)DMASTuaw^l!F=>e zjS!C*Y7~u%OmxO3no^T~n@zcdWfWhCgklVWjAU+AN_TO@8sk@^rB$68j;C2#mDbc= zG>5Ow_M*|MTB@?3jmV^#m9EVa8Hbi)BA*(i#_gPp9fg|A9NMlfiPctcHzgKSEF7*Z zipG8VOz^~`3#{f<=#A1)Z)#^zE(iLfH$~=`0R`ifEig66QY2RrEt08ioyXfnCpg|3 zQzT8Fh#^o}5QB5cS5^Crud0;gF?jlz|CgC`ZL%7JxXjqb=nUe@EhBJOe6aGs2;8lw zwTq2Y8Nv4N+Ksw90*~xt+=nS*FGp5yZoOhtj2#ZBU_S}jO8H20fM~E(<=K(=T+4jF zyRB>fJKyh6iE`E`((2Za!biIrS(6*{`mKmHGVlH`c0yy#>@-=jlNgKlp*)IKX2;?a zEGHEKpzFLK*U0st`Vv6$Tgd#QZgFv6CkU>9qj!&J+);w zyhAX$u#LlbiwD?u%IeX$JIngs3CnK|h?M`=-IvETb##BeaUIUT8NYU#a9zPI`avX!#r-q#kww~Xu)O7awZ8IW}{v=A4 zhCD^Fe_<+R7+b7?Ga@H2x4*Sfa<0FhIGJOKSUm_yJ7#RXwR^aojcNoCSmJUtUpY zBK^y1_**Y7<6txv9m78jMgbshI1fQzwCXc{-U<>>9Y1fY_<38;&)X*3e%rh1x@jm( zH`r!ni{-XiN={NB8Cm#~6l;nhbNjVyL^C=Sj?9pcAqOyWt|M!J%wD!SUSK5EfnCNz zCcQ&8i@iEluDl0&G6;%37Y2$R-g=;L#Zc4^>F}3B(R7ezYDl8d>!l3V?hoPj2+<>xjt8QQcuY>KsK{Zm;d!!*}lBkGC^**roKb_4q zgS1~qhE*?D!0Ez!YF<$;Q<_`(VTK`eiYR>wd5K+m;`Kd(uRb3P-*L?a)O!}&dg+L5LpD6M*Zx}eJ}%>Sc%J0Y=#K|^*WS? zRT>QJP^gy_FCbD2MV(^DeheA=4zNfA$f;I`zaN2&^gHwMTVTub(hPA;&;+ag_7I(7 zjkVQoR*XlYZb*qQjYM6Nhew)K?&cs-ssgeI_T2Oin#t~`^nw_ZWEk!8Q29jFwA!9! zJnl9MMbM&ev2GL^?#Ya%WfwG{_g1h5QTLR3d}Y9+O`l5vu`#>Y5!H0tdM;869ql=x&; zwOTe`cK2k;F>D@<*6LLw!==pbK?-Kr2P$f3oR%6ewUF9)PK=V?ccGamFR^MAWcXx{ z;z>f|RoybvKJ7M%f9H4QEnO==9s}mq=BvQ@M!^=N`39EPNZ3p?-!SA4Fk60OCVzl& z@f&Iq$c)FqLxk|o`s<)0SppK}OFxtMEFC%jO=1hws~^nB7q_=jT7w7)K zL1!s*nlC$~XsRtOKwfZK+M5>fj0qGp&&~n$nQB1I{ASZT8qVcL#-~;aEdjFMC!^7fV1yS{Lzj$lH7}MOWvTxB4rk#fH{!{tb6}1Gq*r z?(+sp)KhT?-Y7sM6>;gjjs)E{4U8$vkWd*V#YUH&GuJSM=#1T#74Fp_dI)%(P)R8Z z6D?_P97K5rU#{?-b8l#if#en7Af(ei~179leJ2y6acD65 z2@f5I+R<<*n=uZh%xb=>JFkXGlk2+z#KTV2pp~nfT2%JaIgl-&RbZIrVBY>s9rpQU~+H`q|-!;}MvX z3mzS-jahHgcq8ZEy)MMoYt4Wkk_-Y>K<$t+umsr#Do=-fC!$onXspXs8>)B`qC z0b^i#-_&--ev?k+X19VG4SOB&C7%P}M;J0=bV1C5S&{{e$M+^36=&07qkZDfnIWo{ ztjK$-TMbmxfV?)oU#JJ_7R)Msw`xsOt5O!+G!eB$SFmIfoZ0hm)FkBBy(Ir^$r9W4 zaZxw1Fj+E5dSQw&xY;S+YzhJv!pr_D=fy5%jy!1TB&4K8lkmn#s4wjPci< z)Pc-5FhcBT5#hg+0km3`Q;8|?3)xad?X1eF3S!RdB#IJ0h7r{T=Yf_=MUVjFiswmh z!-&=q1Eq(gl`eEJEu%SM3#{O}Q%H#GE3+<#r3s%R!OT z(9wo8+hX3SJzCd0#d_K8-f9bgreuKO7LZZeqvFSPZU@D6_Vx5+-l6Ik)YTZPC~s6R?^3(YP@^_#{wm^1LzsPM7t@rBta zsDpNs)Oj*`ZmWK#F^$Av>7XMQ77~c?v;zeJKySG=lpKnXTGDgy&4M(k0Eo04Q>noVtgkT`3}~) zI2|#zsnWO}*0l+@dt+$b4tUlfNv4B@ofqvR8E)^Lnd)fNN#$X5*f96wK5rroVsP=B zXe?O$b?5V(et~85P(|3H&beR@J1&GRJ_1O=hB>HzYC`Y zwKI0hLo3}rbL5N1@UA?-BGfyAfEj#04-G+=aok)q+V_R0xZ0y2g&-Rs^orU6nY9_}me}ugk{OCY-F8}hr4!8A0lhnnES8s=w_L+RwwV*fHj}s7a`uRcKZ*r{9K8^dp z*c!^S*X1aKOq+4*lua&5?2131hcflXM5MGYM{B$T3U_vV;P!QvCPo!*%Co%ca7 zY>VgGcBefnE{XHqy9a~okX?qT|N3ijiU2Xwn+D%-lqlwa)WV!D>^xsqU~Ffb+294> zX!cU!E%T8-oHwiHqrUpxUauTF@jU=23ya&-J*^iAL4B-UgeBsfTsb7z9T4G^zaakB zeDZWKlenfGNGAmD%&q8>@9PJf+6lj$ZyJX{Oa6DJBcBD~yZvHyrvl>X<}e zoqGt*XhQ)(7=0l-N(9RfjU{j%goA6RwEhGR6{VZ0CzAo z+!z~c1u!YG7e4_oDf7-~*$c4hWTr$HzXzuqDHJ~eHiV|HT`MLTddWviTl}8RtnA%P z6dHO~qoG_Xf0j^pT{Q`gG>;Q(x(rTFM|2c?25O>ViM%PH>N*@%1)ZBg4oBU8&d|tf z`U;No89?dr+AH+jJ1qb8j@KHY6{-Lm;>3SyC3OA2HG;s=K-J<{1AGSeomq|w$^WSe z4O9V#`~P}}$*$4_<=NK%+&wDaPqw#pdC&dvd-+H?(D@v2v2-H%TZe#tBvMUqBPmS< z&IQK(PUFhL#b#k!2@dH1ONPzRl=5VabGqfL(|iV2din}m^O0YhQc|HSsqiUwS_tN= zI^1U=N_2M~<>G*O&cZ7e!j7GWKU|1XLghz)bb2HIiAr|UbSJ*{W>a#)q5yj4@TMM>lC`78@QG?=>_|%Lck9EMa~pa5mDm! zf}|hN!Cw{bpPPJJW&XyRbc52u;XjxFKx$4%q;U9m>n>fuD@yB!-?FSZfVLk17@#}- zhP?cJxncvThd#_Zl*?4*RzApDMvXSypDGehGjww5(j}myzbXoyMc3d2h!Vo|7%fH7GO|qRRCbv*;H0H!**~pMGrvBY`1M)J zug_Y3eNN-or=C|F-Q?D%_7`q_s=(?>)~C5!bkTcoip&abB5EaWak4nL%%=&p*FoK| zSpG<#U{eJWAULznBIz>;X0KIPggoMdsLuhZ!c)4HIDXibTl(~ytd85A*6)XH0H7I^lh zYu^GK)>_Wjl*8hcl$Ks-FN?cnDYW@@gvG@WfDdpq{k+E4;P(nq z8n08o!5&fI1atmxKa~n5<|#7gr8g)Kn3($s8noXDNhwUv@@{0#zev!$0;omN$=Cy^ zH_Z9_-ek_Nl`Gc4oUhE=lFOK2&R3E-A39Z(KGo3abTY3JO|B zD+&m-Vf^&dpu9XL*>`Xc__30=1|1(Hq#=o`c0$of0j14`wU1wJqq* zn*55O_#`NvKK*nZDZb?3JRFn#ICUE%{K3Yt>`yD zFwN|P9mhd|n=5TjsIP0DUAND2T%vygDn8>r*f4A=T4EHh3~qwfT-}FGNM8Cif{pwi zT2l-QM84{TLdHW;4E33fL#nm(SOYEu4JH zq$S31{Kj$=p%CqDF6?5LQB8QwazIWsIf7BO`1EopZ5`+!!~Xv&I(OcO{FRYB(2y=dMJf+M5&6fZeB*CsUeE<)xV-bn5ep3E=g~ z!BO!2m3HuzTN$k2S9nSpGPpHvRoV3eR{Td9>fol@=0G#!$W?HlU5fj!0z-xp&sl|f zp#}J}RVY$-%x(aoHKk9LCIk1n%cyu`$K8VKzHAu z_Csyz2u~ck2BoOdtH6cl)y06Kz2L$FY5LxV0VFM|DqUIi3fy6qu0bOlP3wXU`+p6k zm8}KF@7CK9Kx@To-bX(F{{d(_lfmNwwC|942fUsDXj%6w0YJ;TUl9PU9-xJ+`;`Eo zCGJ-Ofc7N;>GA+t4bid-pqDI%chow7bl3R6{1D!8SODq5D=v^Z$i9O31;D>-6-AAJ z6o+9{;OMp?_!sB|{{n2msH1Pj6ltE{$snhYSHq;WdO;&sDe}akjVJ~*D(a2MyF+75 zW!p#qgoAgnu2QR!Il&vox$^EC1BbO|9WGvn<-}m~M$}gV!SR~inz8HyG{I4V6xzeQ zH5!oGqc(xFBoMWlisrP@#aP|0zv&UEC}w*a$F(>`3=r2z=)qEXh5czSFdgQ)UtmcItenD$eqr!fk752ie~3M zn(fAb-15L`(2Qrz;J9)t3Wv_Uz7-93^u-c7SH)x9OafqGD|>*qd5WqWk*KXaMQy%V zSpOfiyi+E0QALxz%XFm6n(e>y*63^&oD!U{4Gl?xo`S(3o~3M0@$e?nQ#>w16!zmc z8@6{Ro|y3EmD;*bSVv5JbQ_xJI8%gWp!=_n`F{oO`BB{-RZmb;zAj~Vi**VXx-vw? zBTz)gp34{EjV2W1UH$8$KI&YJxS9evB?=DW=59aWdJ_tXR|VBcBQtatJXNB$%kvsb zL2kxttX>RvdSL;vAt z6)0zj1DZ{k2pRz?ni5^KkUd4#ai_?MpyFXqkqXXt7-obdm`Lm_z6yv8-nAX|^lB)d zps1Flt7M>ls32yVC87Aw?I=Z_y+jk5bgxuKm0mRKaOw`^-v!;NEg8~qDo?a-jU}c! zTfFOSBcd+*DsT2nD9jdxR4zvwJ7n29<|SUf10~CwNBAQrm$I&;o=SXa2MQLMyG7vN zcOW%cbh|lU;miy;eI~DmzPZnVrwm@Cx1^4}RjZl-mIg+0g{apOp||Sep0fRfyrG}I zkX0y15ydjLvpcdKoT=Ro9bD;3I@oPA>EI^`nx`ym2DS^leJ9FsJmw(aT?CUuaBRfa zLf4J+wW!_9`C2^UeJ!3&JDo?4Er$=XJ~lSI2QN!6wgG10Ai_!Mm4K_A%bizF@dtoH zg1`OKPhSr>U0XijYmkpUDA@85{H^T>@*6pVR4lx19V*)V;wrOiWI}z%QSzS#j1nCk z{*4ukmtp=S{-wWUt$bv{?oZ_fpv@`+4Fab?$OljZ>|fMKV4D7gTG=$;LM-|SnaN00 zaW2)v$h_s9Bg>&Hc~nk~=OG&^hamzVhsp^U0h_SL0Te>iF~qfi1+&%98&8C~T1hGB zZpvd+H+UV;`Tb5O`~o-yQ1TJe6vO>VA~8t2HJ#cqvw3*W1F1nZUO@QNKok>Ofh#cn zR`m@k8Nam)ZE6M37jRtv#YtMT#ec)TkuKq_@;k9^Hz)&k;zherU$>(NvQ-5T!-G9T z?7B)9{fff6Hf`a-Oe)I4cm9b3Kb$HGO)n!IW{1-st;h6qFZNTq-s;976jW9WQj$hKA zOd1~km~ofn#P59qhcqMJ_X#R=Wcmd*U(eP~2LkNs77w|5#6#}#dF}QwUb_v&iFVui z&S>ciR&=T-qElP?gn;xm{`aw7PXJVAI47?qi`KT3$jVf}MyZ42aetzfaL^d2$ddG@ zVI_wV{ROKiu$|pu50!%djFG21C=ht07WX2Xj-rq7Cev$gvSIeg1dR6xBUUkmlB`X7 z5Ufo)rnbV+K32Vy7F*1rc)=dfEbTdL+5>v0p_=#Oq-PYx6Kw*`70sv%aBAhnn=868 z7a035X3QC#GA+rRZJ!2XVhy&fJ;Q)A_M-QEMen#=(YCMa?+jvLdk_nGBXuR{dH14r zzM_RLw^3l;BIn=wwpWveKvEk1hy`GkSD@9>n*<9(3$jFyCFq__Z$K_0g7j1A>jbP#O;?TqOl z@&=gD=LgZSR_+@~htOcByWpf9idP&$vs>{7-ci9M2sN+4$cgF7CfBGOG}pk6R0MOY zu|-2+pHkdUSg!m}I6x$d;WPt3`OH*iS37*xe%NY%+nfbrBZm*ayK0Yvi$^`UcxYWR zas+H7V>nI@TUNi=8JQtsixr>x9L)lKPnR!H4)DKqUx3nR7q0pOz|9u??H4EzI^~Zq zz-1^8cRq|#yJ|lXD{CF2f~h0WTI5@6GY28(p5D65HUQhP<2EV|BX7?Gp1Mj$GTMe~ z4kJzfR;ct?fi0Kvf|b*J4wBwsVPU3RI?Q$unL-Zc9PDtX_^uu&%?==a)mB}3w)7+=iU-sx#}rP9CIRCJ zA-VG+di0fflT&l^);mcCO>=%>L|-pjCkx(atMG@O-&!MpS#W3TKUF$WrTy*Zw~LaC zyHr7DZl4sn>9GC?@*S2DW)4>9!)i64GBBr}aC_&J+2jJwtwZ%oLK`J+Iz`~!f?D6w zzbjF&SX?I$IHl|Hm}=Wq@prbUw^VBKPcmv3-a>IRRV~$$B85WJ4gYuqSmhBMd=z=9 zlG^(uJ0(ebTii7j?k{v*xHcPC+mJ>hkD?BqO<`u0w*xj;6pL3L1)qc@eDEkrMlbO% zM*#)KO#&n9>@jc+*|R~w?zk~$q9`3s@qOODFq;8E^25sVg>uD05T1#HcI8wJ3ze+) z16@q6?@bmesUv2%am6Ey_wXCXP}2WHK#|+W&70XD3L$pU*%3qEH--#M~Kq3>R2k%EVy-P2|n zm`4ELOu_+pw~|~M6Y4Xs3D9&Run_CYFb;uEyyPsbTU;OFQOE(+Lph{6TMH#1&*MEJ z*EgPvEED2_^s7cO>fvGFTFuA7o!GS6wyUd3;#_0eRGbQMCRc)-W}Bdb=!hZ zSA&Axf**3fq^FSDU*}n5!;oBVlVFFnHkk2c^wbWf8*h8_+X)Oa(=Fvs(lLxvoO z3?_UZGU(s-tar#T%OQgz+S2}lXPC&>z%-t`>k#mdS@DMr%ra9E1p)MIfgyH7C^kNh z;2OyePiKc;hqezEfGhp{t_{fHs_+EZ&rBV}0$PsNOnpJsQ9Tc=SF^v4*sAPEe2NC_ACmCDtxQ(xQ%Hq3Z4V%fBYFSdLuru73EvSJYaVspT zaaPsZgzohoB15=FA?tDU6Ko1iI@I^l(+dCtdvu0cAb!*NdeaAgg8GR5P05s7oBUGm z2ZHKF9Vn{v2+)agtvP@ZtIeUh7pCPF$xq1q721U|O}{*&e1E}e(66XgqeiLQ!Pvy6 zSkPTPh^5+F3KDB2y#RD(?jeDviVP#A4tUqTc;I(_R^v6nktxdb=@+D zabobT^XMT6LDd(KCLpPO;F0%}T!udwnfc+!0aM>5+nTU%;-IgQst*XxyhWjcSOIuH z;Y{NDUdM(dIKRdfgjYUZfE$*A*W9ZFO$!LJrVIu&Wx+#sF2Y4$gMson-uE>smOlUi zlZ3XqI|5SN`yv`K-GLMT8y5vV59??BuO6|2j#>o=Io2cAY-5=GPX&H;5h?XaTYpy= zvSnRk4#sR&4wf?7V%1sUpzVHCx`wgEgj!_jKTivKi*lNtDVe60TWEnD_WPA4)FH=W{07O99j*b( zb-chgNseKiQ4f0#lVgrx9C8(f`WGA*?{*6fZb@o`nse%09piIh-BsYGVYuKb3V6d9 zhc2EJwI~nK4&Y&P9FlYmZc%z$SD(o9y0*K<{3n05-_KA z5Mg4vhO(GF^|Eg%0Os?tUj}{)ajFXY(6jAaP2s@RH0!LJIw&P^60Mp3TO*MH=s(2) z^uPaG)Foi0zspHmDAGnJABW-_@vCo9N4jlS9B~~5rRe9|7f3#TtA z=sJq?U+7t8!<%1jGsi)w$;8R^C^}@jeWqr2tAL=8Ehq*suRju$J0GH?xE{r(R79ap z_PN;<;V^q2dR{vjqm75vD;pfsQt*kX4aEKJ>CoaQP=Wuo0Znb}E#5uA-r_Xe>jsJr zTk)lBX_kEd)U{n%usAoaSjC*ObAV>N>IMq-(yxm~k{xz)fSz%|+!!=eowShtU zF8tbsJKhBl$rU{DE(!#_Pkr1mfF0wayQugdDj0f?t>E2zYz6ztuU+`Yy?>~n>wVP6 z#~MgNwO@)=S;pB0_S4~b^?jt0zzXf1atMEZAEo;}Ve`4iiJjwXo5UAvt19XU_G&;; zB=3Qgqd2Vr^>w-*-|Jx-E^mO?XS?u&1{5N4zFCW1AD~Xo#1+BVUypk|K+)~EG6Dza zKv|^bfRm3KG4lXve2qh&mvw-fK28Qn3stW?q&v`j1^6&F=HMF-(3{YK{T`xD9d({6 zh}9in@F=PgnzTPE!V|=#cNGe=FlP!9C*!RTAt)euy+-1RuRKH>pnGTjfO<^=j2m2j z2e?j34FAzVG%qUHJI5nEQ#N1m)sE<|LObVpAhi_42G7o1#!T<|3J7J-{m^)mNTv!< zdv%ajLrBvL!B5NgmUR$UXZ5Bo1Q!j&l16kR>S=sxjtd1}($YqJa)w!E4iNuUxB9PJ zmmt01{?~;|@ad;s!C!UQxZ}?#0o}rreg;(UJ-p~=GzPxz%FpNnc$WJJbqNI+lqU&?r_>&`4|AN| zQ=lMm4nF<}v7-COtz>JoBn2$N32BKD=?g;iVgN&R5ksx=M9SAPLmMD~Wq z(7Y{p?qgUkyYQyRs5AUJ`xwoK3VZ&F;v!#s+Q|_9*Ebu2PGDT(YaHSdqSr zvF`=qC(w=Wn5C06rIonlWj&Y&@|!Rf55CT;CX*Q=Ns_0KOoML6@T{!-~$Ypeg>1lf|H)1 zVeo6kGc*rc_SZ9jm>F=NKcTrv_}xEIArN2uiH63t^>MW~H+Y9bbKAN~d_6tKdNsKF zdg#4r`@v~(Gqity1!V~I(967=YRvs$BMd@z@3&*k;QhAxgzpYeuQhFp6>CRlO2Kr% zyM2OX!RW9QBeCK{d(0? zE*CV>hEH5qLKq44(c9!3{^7vFR1+3Egn}6>JDYu=Fp~4fqy|Ey8{OLQ!l$n?gRI&EmgM zhR>EEZ)&us!p_e%LXaImFYv!a8Z}3@y>E(>idd7}IH-e5yOyIx&Fk?qHL?|wNErYRB5$%+$cD@yS}h&CD2%w8SQBJbT#!RHLd@qPdIbW1 ziE>1%Ao$llMEil(6I(<;f>Daz5b8NHFs7*q=~hHUps&0t4S#BQ9bEY+DplEuj{u12Io1`i38G~8~ZkShD!Pm1xKOXt7nV5A+K)QuRTdXWD=0DY4DN;@esJ* zMDlk1pj$DP3Q=2^_THn`0Wi`HoH&-eo`lF~ULj=M8IFNr;$g+g*hBmB3N&I*H< z@KXJLGA%e8M)F3ek~d?B!cODGF7)JH|5J^xfh*Hl^LlUA1XW8jjjpnN*x!}*6`?y% zaW_{wMP9%4D`|OB2m~69RySk4EA8Le-0hcPUR`5vnX{&-&u1zu6MUyongve9PdcvB zfzodBWNMnrS`SegaR_e?$F;6>kAYNbrAMaGoFO9b_&uIQL1l}!OC?N^_>7Yi$gSyW z>Yx~|wc>GCA+y%_RLkApfYGi#DSj@Y(uZn{22-@U5f5!c2ar|5VK5**8gvH-%=9G~ zolez01o~uUVNeqZbWAJT39-Uu(^yE9nMF}m2STY_-)0s?Rp(3~QN^h&imI$I42;2d zSrk>kZYV;c=w5)i2mi8F6m=LY!T5#i%GN$1;is{ znT3r_X9BY*B-?|)D=c=7qp{g=*_dE&0L#gTxJhidC7~88%W^bO%XWJ$B8uv!n1>MH zLphlTfC9fM3c;WVc0sfMF=^@DVvPq25uArqi^LFxQckPsCDnM4obFCb{=lVjx@&0V zw(q2o6f-{4>NL|dp#bUM2{ow-=32&?DK|aro zDh;$Kdf)TNq^KWVWg*ztjSg|ZSXsmk0>;XB6Rez0H86g{&e05`$n!VZWOn=_MIVFB zuEdv&I_EUxdt0RfV4Ip7#qR7V-eR$ETK6!BQ!LXfi~!S>vRF9hj^uU0dg6BnBMJYq zRTPyBsh3zAqkz;I{x8X zf{K;v$luz~>ydfADPKylRg~=-X;s;d8#@mABZ+%+4qPx5Q0?{Vbg&$ji++JyQ702) zuvrw!F6N7s}z*So{G+6rW}YZB=G_(1H9mHil`1l^U698mgeB>rLm zU64CC#ucm7&<`5%4=}SyAlyy{2uxi$wH|g~c+CFGR#DUsG)3vX#2M_@b_BBUwX7$+ zK_z|dtGoHB`zkg(TlM!zrMA3$&Z{SC72{nMu}f2$mDB8dF4ifuW$0Scxuz0~uAa(vhtT*iXRy<$8U@1q5P80` z^jSK$T{^*%CM$*nx2n^vOsp)Tn{&t|Z8b*mE=C*CVvtQyJAafnZWdR2=`vEgz4Gn= zi-60TEKy|g1&UkdPE|`t-TGw3yw;VMZ-fqn%GH3PsA0rM^8Cf@WDX8!J^gm~XDppz z`W+?HFGJy`B-(dL%NXYd#7+M8t@GFQXSB(X{{hMWxx!le9MQg%o-C8V);XIXXA0!} zg{@iRKE_!=HWs&{_oS`XQ(6>~{6V!SuNheVO)qPw^@e89&@@)MD`odqkB3Jl16)$& zX-&PA=N23yIVdag&~@i4WCerPpMGHYfE(WYm92-j*;8lqv98v>0mGX% zM0{*sNCB6z>a~n2FP)+tWE{^q+05o z-wtk(xd9~}g5{sulm-{z1wpgw0xjP`vmSed zjPVZ^>AAJir}f+FhA`UY@U{*i(5yc^tY1Ipo0Z+Sb;c&hxDqmUA{jF@p=12{X0>-| z)vam0kR*YIrBX_oWhv*I<=#zSR(gp6L3)_DG^krhOT8ETNBK0p`Mv^17A{n*jIUK3 zE8V!|y;m}Jz{H8ID;|-GB-5bcjmx3p`V3>rpF!Nnio3VYcoj0vfs9ooqe{DV%X{p= z0{>|aYc;Y%T%45kF3mZ*2zF$b6vD_Vi=Yd;9D{3mjiEp_hZnqrE_{=Y>KB?PVtY^v z(U%-I#|xPZ`WQN9C+V04p0_UjA>{^EJGxayed8m@`6=Yw!*-!Mx?d>Qh2jaVKOnv@ zk{p5$s9QlkpkOcGg`smQR{;O;y1QEYDOd~^l3Mn7R@JG}>Y}Xk798l#P2X!BT7Bfj z04Jrf4ct1c?+o9giMGfmY*TSL8(zy9=%lQKoMw`d5&u4K0j*{Ck2>6%1?=$FX}ZAn z@fEwW8{0@eXbx41t*bxZ-ud3@7sI*$ckaTZzUZT9$smqfb)7B#@;I^nv1iXw4hmOl> z$E04oa0AA330dzmymntzr5O{K%vY!N<(f4pqE)jl4s=p7Zm`RDhqqDPEIlS%yY5c28}qqf%fzAF<7FCAVWVry7<+qNUoyDZLKSs(^l666MNQZ9Ux0qZrFe817%$;m%AYd&4BE<)HYCrsTmyLuS3)X1uQN zGsnpqKQK?WK1-z(tCUnBDl8x#gM&b913^_k10>ZO;7MaHm2?y^OUm=rM_XN#nVlOj!VY>~|_EuF~Sh=bUsy~&n&n~m$& zxS5m@{mhn`5kbnBQ!Lx?xps8EZ&6LQP6y%5VEfbA?`h3$_X8fMq+^|nR_<+B@fbk1 zO8SW7$y88q{=0tWbst1HW(t4~a0!qUkaJ|B>>uGCfM@kC$b>5_vx8lVKpIedU0M+5 z6C4I`gS(xl#f=|5Kn%f~L|?~>-4k*(Sz2T>MZcrPO}=zH)QF{ibaW@qpgu5Ii2q*7 zD^O~P4>hkqF+xwV@!zq|kB%GwKFvidA79XdPjll6NWrHWI^cp9e40yFKIWoSY87P( z(n1oY^4|88`LZJiqL0Lr2w&_Eug>tp1XdM%#gG2TV|s6KX)u5a82)Bf?cwGAbP3(1 zpiEpZNYryBYP%JArY3YWQ-E6XrS|YqfRs-Sq+=DPuge_$^m8y1NGGeO_0DdRIDnVY zrcC825=2;tFjp6v20#+wmlgjQNIwgbf~S{}of6!sj(8yF`YvJPn>Dr3;+7yfZd`hE z5!@?%K7dUd&v9u3q{R2T=o07q4JqsUUF1&U#*$v~?8WxVUA9*|d*#S&J=W_kd3JYQ z^j*ACMVCmlsZY~Vo3S#OZXG(9SA6_i=-~g056k~fe-81V?ON^K*B$led3Lq-Kg37! z{O7PRaCIi=&q?f-*ERJ->DWqt&Id!%rA;1@@AL_pc(?6t$+RBJ#+bnG1#VzsJ#2VK z8c@18s4kL_mB3E9h#Rbf4dBAlw@2?(duhXt^mdK+7{C3nC4^p& zqE5_iE*VuvKyOqD-T1CtWpNFS1JK*uOzN+_!C`M`(@CVY0IBH?)`!tG9w&>XiZn-u zmBV8?(AN>&<2F`D&~2ml9bOO)z`HB=dr1Z8*}lV5#664U(x-WAC}nI$ElqB%{mE$+ z&WoVO>VNe+)6jFtG|=s3?4({y5Pe{-xj_JV%e^%xW=F1TR&R#3Wq6RbO$!N1j)%5I z4F_%BSylDo=6+>1O-R_Yb=b2gep2>;{5gU}w`6G>FX=BuiG;J(;z zEU5F3T^g_WQ$2;c>jrZ`Lv0mlRm(yD_)8QWC?i{ICL3b4oWkv*=?oI{=lFd*C7Pa$ zoN!GvJ)qSl3W2JKKga8vs9nAL`X&k%Ik}kgc!gzOtm1wOQD}6+PtNO(-Eohx*Vb@8 zA}%27V`B^*6$o=WG4fO)-Dbdv*?9&-r^reZkdiX$3u!vz#NqlFx(b0&ZcS&}7qEPv zcBUKjs_Ozit-!lc@Vic4A2LC3-*+AX(?z%%YsK64tFbJ5g{!gBqOJ%I*z*`N?JD-6 z1E3gBBiA7Fm#_p(Bepqyb7lier;%%}dVy_@y~&P?Y@W>CWXD5SgI!_HbHKQ9G*T}rHkQ=n{AT=G!-Q+^<7G4&=ff9#O4Y*uQ$2%#qcc78@jG7+kXtuUA z3f?xX5f-i@?G#J<((^)bMl3z97u?>dtR=gwfa7DrwUX|)^3t0;AjqXo0da9i3{%Oy z{c+!vA`cRjw<-;Q?rlgsxl{OVEIkrX*okp;v1{)HReC}aL`84FXX5C=&WGoxR2fpd zv0pqrr(Nx;g%>=f9c9c87l5Skn#Iyuye*#Y1-BvHj;90BDg0MFozcp^#@_Zjsw;gj z4R`=p#|93A{hhsen7z#mwB4u4Rc2r*_|Qx`pWHk=9(oJGaM0{<5DM$EWS)&%6sS8s zlt90ouv0PQ|syr*j(iSQ|-8#l-|%`}tHpGr|(C;u<5nwP^) zp_XbygrgF>BivpJAI)2GJji#G5DGZ48yyclHme&w-4PA>-=gg6H$1W~8TK00^jvke zZRkX|h1!Q5D%wrOfApZ$C=!SFq?1D0#Jb#cfXnxCxk-t7IC?j{z)Vj%EzoA98yL&q zSJL0eU2kz80vq7FJ?SN_R>JpSX+HdBFM1a0%`XLZz}QQ;VYJ94+)lz$C>55%XnrY7 zwk?G`!j{a~S3^&6tX}&gF=VgO(1A{D?T*M?9l5<%s-=SoJa=vMeFDxqsU`5-!^v9U zuzK-A_7Y0gCkVI=3FArPzrn4OPrx&%5(2&f56_p6mi-Bi)R}NC04(r$+UZK-GxW~E$yUfO0zdAjfSE^ka-|Ow>P;jV8yo(twbypBY7)dG9UugJ z1EKPFyHJ@cg}5S)CDnpZ3DRh>4(?}Q3pR4W+gcTbP%Kao8g!fu5Z9`pMkx4*E2wW( z64rs^D;Xm9@{ZrdX4u(mZPk+CbQd7@oR)Y{u>$jd6(la`q^-<97AzoP;wZ}1ezO+N zPp4O-3M}nIM}P%h-G}ZS^lS>XY^-FmqR~g9T+l`&JF*O7x$_Q4+3oarO&_|aSILdK z0an+~Y@FGQ{P5jAbcm1kh?r=#dv^iUuFY%d2=?tuYXQ_Zt}h)0NpW8~hTKqis4pEW zF1f)B!aw!}J0|B^*vLgPWG{B(BN-Cj9m-wJ!d~pgOK0R_HzE2Md$AiAw6Mcm1Gg~v z5Mgi?EZpY8hX{K}ZULEbgN+cTC05Rw^AhO=7Pf(h`v72-y|%F)SN5a%E6}Wt7gf1r z&}K*1JAtd%KwjX6XM;O8Wzha;8J6{@!`+&zO#)8K{b)1R^asd;4(Ii!187kYF7HqK z5;HCfRRdN|QFB!kbqCToH$_O1=eIMmE^jRM`F3Xh+>eWu6|**0d{XT9)vVezpB1-X zH@oq-FN=fr&X$H8D-OOoJF@rj;!q|x<791d2TSgZ?Ozv1{G40*W{ij`>2`Ep>5hz&N)iz3BUC26ILGp2l5(x+H0X0v}^<{K7HX!A< zrM}E$(?*o^Y_l&j#rgrtn)Zn=Gwtjql<)JUFEeAyX0);Rye~8B;uchO=Ati?yK*b4 zfB2m*Gw1SF)V$%jFO#=t8&W#A@zXQ&s!b@Vo4+5k;7kR|Y8UOtymM+h%HNgj$K-#u z18s~L?8hv6uoG3)O!8xvto{hqPoL$-EM2!7HBVpR$1v#lCrGK(-SmTtORD#w45cp8 zAL3r_I*4W{%>(_J613wBRI1eM_GgwOd<4}h)j#<&tI#tGYE+u_O9L2i#5#whzI8_f zm^G;GJc{&He;vTAN2@QQEML|00A>R+)uDV}V?cXmBl`Oa+U=_v)SlUjuGFJOUt@WD zW*gdk14;d?o7yuK=!@@Aq@VFvdu9jv@_Urwm-$zF=0o(y9W=v_kp?omP|-tF>c?yj zWIjgc^*^HBe$2T*=2LX`5vuj0ZUi!)q3ge(MnCGOKxQBM@iCJ6GtUE={ivu3Mfy|j zLCir^{2R*f&+`jnK1WY}Lo@vIIt4L@QNi!1)St-@V!lM5ze2nHHFtuTqi9zPs`bzN zIf(fRyB#nquRAhV(Z>JK8SNE6cVxanr~X6FXm9?zBXb?CsEDOY+f)8g%nejs zLGNy#IV6ht4mIxt13&zmDx;`iKr?uX);H(FZ(==PhKCKN{bOT5ZI3!Y;J1(p^bdjF9_T_U&`$y# zicvx;&>sT5KhT9#pm%{vVu22+p8Z33po0gV@IXif`aGZq0bNK1`Wm1sfi9#1{bQiR z7DEZCK(7XRDA0xU@4xlj7e9mt&{>p_3I*B(0*VCaLMqS$f!-GALMqVXf!+@2LMqS) z@N^*+=-GOBK!z%tPlX4I;I{|Rg;b!g1UhMukP7tw@cD&Qpzq`J3#mXq33LLD(F=bF z53axiG6X^@&>MhG;59-j(EkQHbRK0(;Q^Tp0We}-PCD|S2RtAz z7E+SnIJ%GubR|z0Qi0wP z=%hhHD$rAaP8vi~J^4d;kO2g5_${OYeLT=fPY9_%&jmV}j6y2V^+5Llx{wO=_km76 zOh|#QXD7u+@PJGrAr%T#107f%C8PrV63|IQg;b#52Rd1PLMqT-0G;%NkP38JF!Vop zAPeSF;Xxq$CSN9`0zH$73g<>P8uqt z0{scl3F{S7fi4T->Jd_&uBTM+fQ*@t3I)3H1%y62OskfgjAqc1D!NfNCo;Wpp(fcqyqg{ zpp!jCNCmnW#w8NyLi%?WJYly*cn}T`V)#@jFdTl97YHd!j{!*#=lMbgA(@5fzJ#${?oVVt@Gj-mA&eJ+ii;wI4 TcITN%hc#uiT12p??7#m5*Q$^K delta 57843 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�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

    {_JSa8`Omviqx;ez zZsnZ{)aqUy#Br#64^pX^<{+*BZL^?s71JY_TaAo|(Hxb2VlY>Po)|tw#VY&0U~Ub% zcMR338h#Dt)}n?g)U48%gm9&(>I{+x=6?~wtw$f#qo}}!??Sju=;yO2E71BhgnJ7; zYCuZ^HPIcwgU;n|P(`41Vh3&;+Itx_2Wqx<;NC;OT}JXCuA&3C9hF@{Q9+t7J8(PE z#%m}&sKwI|%Ds=y+0mRJwRb4@0lIbz6$hz54COvV@Be}-g4B(n+#a;^4yp?>Ukl~- zp@Vl(bCCJhQ0@S#{uRlC)qjU_2hp__6cua^>Bt>IcEF|uE2BDcpP>5tXil)QUq|i; z`u+hb4py)1$Q?zcPf$g${dPz0I5PfiKy|^&KRa@tp$kT~IoR4GiaUumnpk;=WoQ&< zLswR@Q6ZY?QCv0JTg0Y^$(dM;maftd(6!!&sQp#3@C?|I1 z&YjzFg&rEdhf3g|SX^gTc)H&)P)(oX?B0_ZgS`)`Br#m(@7=xAw36L^J! z4j1S&q;xgV+X9`2lpYWC_CTj0r4JYBG^F%g1H2$zl`Dqy#d3J|1v(8WeJ#*Qg=k3W zW-&euDgB@rpN5oP19T6Z zISi5>B3%p({GcN*2Eq$cFb!#fOrR6JIt?j(su-V!l>QRXNz2iY(m9b%LxFB!nDy|2 z^d${xg55wTUqC}j|5VI~hLm0lbn*c-r1Z-`Cm%pVO20+o8{h^1148O4n&1@B39^HRlztxQq@pyW^dEsvrXLL{{V~u< zOVE(gy~CjW$qVl=A*3(V@JzmphLqk*q|=bn2Lrtg#HS&pj|MtvVH#5UG@$b>Y7l?W z7casy-=tzl=|*@aUra+v-wbq801YX92hhENPD4t!i1BG?pf5gy7o z(ie#FX-MfD(A&ZO!w5f|v*0Z;0S#$_4}nfrKpIkd4baIZL_1J9(XX-MgV zfldY&4JlnO#-|~rzb?k7A*F8?>6;^={Yi%O#Q}IhDnvs{uLC+6bTp*&?}1MC4jNK= z3(%v0PD4spL4S1yIt~BU!W(|~gBPTLfnvxf=mrZ1Jo^BhhLo-cI$28fN5bZ@wMhP= o2ehJOQ{Iu5`D}Oy`0QR-%y!0!#cUEvI|9Fv>`3uCRwMcU07#X+O#lD@ diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-ios.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-ios.metallib index 0f5c0af67d4fb6a84d4a520962168613ac968f9e..297057b2a8123d47ee97dba10e92706a7568b77b 100644 GIT binary patch delta 10092 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 delta 8429 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 JBM$le{{aDaF%bX& delta 8418 zcmcI|dt6ji*Z;Y3W|$fA4A%n;c!ohhZVnd_?GF$xR7er((xoJR~49$U0TnDqCW12yu)#g}r1 zXV&#REU?^*PSX+1L0O{LUM%}9JI*}6@ZqIGOe?c}D%2*;dUwm>2bM>@dF4|5*O`B4 z2lwAi{;jRM_2;1%=e@c6KS%m~V6W1)EKo)a%(UGWvNmIy$o5KLHQ`*xiw{afHl^rE zf_WaqINQ6TN=#P)huO*zl{P5K< z#&$!ZBOHUg$ie*D36;dacf6PN9R4}4P-M7Gk1jfC=Z5L*cSHRz_;>evdx@hcBNt^y*< z$svrixg`-cByRs(xwYaw7H`zNYw(;hKD8E z7RZ*9r7L~of5F(e?!MXbm~ztlqEGgvjkbUPEg5F}D`pXiZ6R&jr%bUu9a~PScKblT z;v(Ba);y_#)Sp9+1!-)ccxzqpmE=I1Z=5^1 zk}N$!@zM27E+?_`K5Kai&ymhAePdB(uzmOJfKc0C35!U_&2gpe>BQCKz=%)wEoTkk znrQ1tW^JaV7YSE9KWxtowk1!gB&@l-*fnJXVJzi`%H)lNbqx%+64uYgv1KU`ULMUS z!JG0Vsp_Qp1&$@mUN%7xWILP|WZRxvNDdtHJ-n6rEXnoy#>TXNkls&deyxe=l_d9* zZ`=*zp;4M&>zt|Oq;i6QH;l@4Vd{EPpX!s1X(9GGuL{C#&ng#@#@Rk)UP7>a&D(-7 zn9zRAqRcwdv0K13 z3UcUQ0={0qWIs+Czw?csn)W!U8WHeO2IQ2JPN|TO5(2Po%Xxwv$lzs5(Dd%0>3Bmj zQ7p4f*2ED_v~8|tt?k5P@oQbtI2*tg3e7VJrK{xSxOr_aFpl^@JSr!bW!UeD;5gWd10!Xs$I)gjKM#4wD4roybaa{nUn6oOEJ$Uws|j?@;vA90DI zj7We6INI1tn>x497`6m75>REvwuMGYOROz{33JXl`@5p%rq-%iP*Fqs{v17d=h`7Zj&zJ~I)fRq6|(SCU@ z!FDgw;~BUC`3j-bsVE;Y(6U!!H(r{CnN)Q_o*6CMY9e=Hdol=yQvYXPR+OqLTT5w= z$bWF>{k1CgX6;loI3IN-FMR#S|E{?FCmL)#a`o#^e;fH`R@$vwXmCF2sn6Rr%7G=d zL2lI(mu66wWAyJU9{V!u*3-LY{VswLiQR@G&9+Nw@Uw>cWlarXWcn3z>Jhf)YWQm1 z`wnrpN}RHJ`RRtGWf?=Bv_a2iEFylB}{ild3;gQ_7S}T?tmn#x=Uk^X7PVp|Dcjo$or0btHEXX`##D+$F{BtAE)#jZ0sA9Pg?g@v`=(Y+X(DA-{a}sElq4@LbnL2M@?v0nQmT5w>>TPO^v44$=RhNA= zeMDSA&6s)S_S6=skrVFFDvR{3zo)IPpg5s<7?kw~UcCM-iwn)1kglNQzi$0`dJ(hx z&k2SK>d@!~1YI{pmTC9S?oHmZr7&# z*hhc*>pBeHlR|K)a8Y*SQ+S%8V?`Q?sUP*<6UaxYqJrmr~Mt5qDl-esy|-9T3M}&zLvk48FaH| zC0!xxVcW2gTFGLEz#=j2qW4Okb_ouG^@sty{3*c>^-Hn!vxG^)IMPxpS)md=%UY4D z)UPVi3cmQvvwT2B&v>3Gl{>g5iR7aU89vDy)-=jlzA(@Z{jRC}Q?37LzuGGPVm-1$ zEgQGv6g`%~t5%GwFfm(ltyLW`VyAz{BEP$#<{FJ=E>oF%K`&B2Ad~T-P*0EJhs1VT zQfb{Mz+(xKxzFX5S)>Llx!aQpp=h+?pNwv9WKDp#)s)thPv6BxdM2E71g}zlsABP> zp5&(d`?pi(6oCB1L1wNpZM~d^3;IKU*c!}7xWn)9N9L_ww;4yFl{Sxsrlm&phh4q} z$2m9ypAQzFt5r7V)3Ra3jGdO@3T^PU{0r8JriY*+cL#zaf}Z4!c>P9(CaRanX8P85 z%ke)Wa3l5OAOj!B-f-Lw0p|_r#67 z2j|wYFs&i(mF>ko59h``FcIAoc@OIBaSww5;9(zl_=;KpIjNIFPS#0X=Q)il+)$mR zi{f+gh2KWC^ve04>Un35ZAP%*}btosR@ZpLXR?TpQF$#qo zg+C7w@2`&T4*!ieqHOg?9OeE;d$}*-KmFc{nAq-cU&MLi5w{6^IT_XWR2lXQ+5Sv+ zwy~=^_FC(x9&YaZ`urf%@W&a$Manpf#J#ca!k*1r_}~iS$AYuYam0NQMWfAhwQ$_< z(1krTiK@M3`*^kGW_SDuTjgzi-8uSk)5 zHQ(!aZ=3wySbSUiMkUH)eP-a;yH;dXpxs}Fjob)V#*MIdAVrJV=w7pM&4x9R}YE$(mk~ZSr}@ANQb4L>`u6Be{w-aU)$(wczG0 zVtC&I>S}8t+WPB)T^~T16AU$3naO;aAM;PH4!-iiPfflu?;20W;hHRuuga6h5@}#f zucI<=z=yBPT+NX6rg{2w$a>e{2Zt}7;lUsH!H#*}^oT@0>$>Is^+=5$9uDNQ-eezl z^gYUY9lXj1cBEWu#TTHgAEibiCpWje)85r9MmgzNNr(*mcYr)iCDa~X#d|AC@NYo; zTzi)Z_KIgkK0fC zHs(La4KZ2WDX=jO`vmH$@udt(U}si@8%I-383XR&Pq@%)1ud*>Hu^|sZwhJaPjzRM zdIpzj*BP~gFFVyLbj;E~Teg`y-H@h{dOf?{q8iNfj>pyfhYuCtpIRO9Re4(BJeE)*5xB`eK7)u1Oj+bsRE&& ziASc}5ZY)%=x2ffZF&fy+vg$lqX?}`LEuf35%_HcF0&)>Fao<*BCxf@X~zwC=%il- zxkJ7K;p32`S&*Y(a_0>kdJ@`2`_MOnMCm6mR6s*lJZg5?w18-PqX93OrUQ8{G}Mp6 zg~9*q*I*nB&EF%v5GI}l-2`Z7?VJ&h2vj2&x$_U)t}^2Fc%i-gEj-nJ#}p7@SKcKl z`%40Hy1j8OH33)hXZ_h?d$S2&i&xloo>1T_J8Q<@#94cv8DCc_v|g0pCSz$4!xYaB zeOO4Pe%`orwU8q2WNM5B9c^;Lq%y81@nmL?LU<6PrS)2-Lr6dzcJYuyTJvYwjA7Vnt&!g&4rTFTV5Nutl~$i4lV{KJbd=XllH+ z_+;XI8HPhmzXc>TUQEyt3Q14gZM1mG)LEo{TfyXRP=a1Wy>cciV6&Zom@qed|)1 znb`{AGb({XxINp<%vT7d)6C3bkf2)*QjVE;97Wss^B!iCe#%yS??XL1V* zLTP}rEnHy*ptghJ5u}I&#S@_D0L4yF{4=VBtE*C)z3;ju21_#ay0XV5DoE*9p7uCI zS(2lwvmS{hCG<^Yk5_b_SL0$(8+(yD{t0CTE986-JOn};!#7$>MlB~^vF;>o~}CL5^diPKO}#&W1&M-hWw1m@6%jq4PI=3d>Qu+{^5P(#i$r%!zv^u; zbsT$}H&r4(c9Hl(6chWxb4p97_#w8B2o)b;=Dy~<2q}p9<0k{;AhpkvTKWPfenTmK zQ7<^fiBG8hcBg^4JMKwM8d$l^SdiZ9Np-1{`niT4vVlywY3db)%&oc(>rWJYo7Ath zl2e|l8rtQNJeYTr%)evF{|{N*)LXo>er~^Vz%#48SAr+^E87d^?d*|QrgRm~fD+b& z5F^nf^U_;|5AN*QMYuZf3)M3JpZ(a^0U`E(%%wvoF;&invt9HGU}xTdGGo))zJPbU zKuM_>{ZlHzQ+89mAS(4EJmwR1%;%<81Vj+lM!R+=86NV3DfVaiE@$=(`^n51-I=Ernr(LGHq~n%Xv3o) zzL7(y&dz8m6*iRi{lFE-LkrX|TR;#ttO<(y@OWvP#Tq{)^arjpNfdB*8`hsuxr!0h zNJ04iV0?581)6=pzB~7?0I|e%>jdE;5OYC_uxr*%*F``!WGda%>PVp zyba&7zxE`Mnzui+ph0Wcs4AB)X>fYLp*AUWv_XY-EB^+*L zxgzvWvcEg%RXmKqFWciga7W_Wp%naZvx9q)x|+Yr5s!$gn*KiX^xRjxbCj#}tQ-__ z`bYaO9e5;u(;m=?mqe+i)*g>j(C2Zp7NhU%NUl__(#n7XYE|9qI`J~xz`%#k&omR@ z;}d$=bUbO>HSVFnQ2bsIc0P(yJ6!)iNT!ctrjL`%z#?)r_5-^>9a^Y6VrpD`_g-Du zfp1&Upa^{w5z7p>zpx*lf^W1R+>a{^x*krDyf7$w^UGb$HQ2q(7pevXp@rx5njwK! z`JtXtzb9EWM0cswm6GXHCq|!;G%|4h;8W``rM0-(|A#&D`ZjgCuvW656!@W=q*;e) zxK&QoDK~RF-K?jSPB4zjG+{$-PNUsx0Q=Qm!6~p`jtTUaWySPAZ;)4m2oW7;!9L2U zGflYyCsWXMO!VtmJhuGdpl8)&WL@V(YLPIBZITec@Tg73$G8!TWJUC_d-1Or|MXG+ zQ>DP2Uf!)nmek?nmehun^7nc3c*MBUl*%)&u;GFB* zT7HIGHaS&D@kJT$_t~x)3KocIKD?5+ zvG6R?`rZSCFE6|OE7wv9CPX;&-q!C*gRZrj=EBielSgSY`j{Jro_XcD-v#hy^nNov z`P38DH^x?(==aE~7nJAvR>=V;99yL~WbE|I3Z~0PiUqY8oPMvis?qtnr-XVQoD38$ zxsuo73-vp{56uFqqdHD!@GWcVxD$8zl{}x5q5DpZ5o5GtO-QbMg!MK+a*oXAqAe19 z*`4<<)od#n+<1 z*HAx0;MSt`SC%#j`Q-Ha&1lwAx2tP>dlH}J_sF{It}OM%tq1x!mKWlred*@nH4k^Z}K6yMTM?SbD^i_S?eeX`h22Tfg4Xw3U zB2<7&R-b_i>?=q)lrZG0fZmTbCgW$z+kF+t1wuJi0WSSeg0BK!-FMb5h6-GVH+}cK zqmUfft+kRf!S(%|#+h=nrZaddpPasND+X_{qyNAbUj+<)k6P+(O()P|^x3QQFOPM< zH&%h`Z{FEDT(PaIV0a&ccI#PcW){3=4_>@-biXg6%7n4yYtB)++G{{#!4&?)eN+8c zj`F+Jpc(>F>ff$eXuB@KMov)YRgK;UEu~H3jPd`8r^m=<-07v>wMOmf|00`B%|JH$ zdVy@NUIk=x+A$!Tjs!$DKkG$g^JPRfOG6OZT)PU$rg}b4HoKY;*#vY_BSQaz&_Ff; zeMbXmAe(@;1|#%_H~<6L1Tec5fj3G43}h3)H)kX8rwBX{g}|#700y!N;Nn&UzJt2ZzFJ-9f5}t z7|14ottF))Jp0gb7`7iqA=F&{2k1~3S0>@V?Nmtz-k_6m36)7|%pmLw-ozWzZqu(Z zS_QqC|4n@LfXLnC)}dd`FGM@dVOp&*KehnQGroViXYGU&&j^wVx*7NtcWjDX?Zk7Y zHb%CP4escs(Iyi=y)kkp*`Stz>^JA=VFU`gk@vH)`=Ap~#1)st#a`AVbc8{K7>1~E zE%ZQE9f%gAX0cm~fEu>|Gg5$vE<|~Q?NuKLqV1aFc%?xH@_cBh_fzAe2m{UE`>C-D zbch=Jd%yk?=%S(dd%yk$=rW-Bd%yiihzI?24!waN_$MTfJ@EH_{R5y!j{Ut~Up$8Q z_kR5n&?9o{?|FSHhE;Y1wf;_51kZnU;ZC?ikj5` diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvos.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvos.air index 54f5ac4c71911abab1ca75dbf0d968814b9c5491..204a39749522457928a1b0b3e6adb5ea0c1c2355 100644 GIT binary patch delta 59305 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μq1@w4CnWxQ-kd`J8;M2qGt3nahFmMr#$>a zPkKqSIerst%7^FnqGustlCvYkUIPxpL#_dL5hi(&Fv&;plYFv$lIIY1WWhlidWv)P z+MkHYdX0t-ma1zxKcFJf=RWF3Zp$&l!t zBnli{f%!YQ4OKwcH{j;E@=>zCz@s_??#NsMR=Y-svv2}3JpOuxb`qch9!@(`K^%$} z9++%{{33AZehg@LbURymKfcaPLb9rF?3MZQaK zIt4w!@ARgFkRE@~o9^jTc&)a-&HXbw&$S?b{6lX#w3YU#nCP%mI>FWGc0~M99Mp%_ z0(x&!A37S66@BRTXu#?-GbXmxdFuHlmc<+fSt_kCL6e_~cm*=Geo zrL!B*(SkO6XG`Ob7ld4yt&bXZq9DwWo&HTtLEBT=GxmR75cwdxh^{MWSNdl8@7D|3 zpPW+{`mmtmt+$%)xEHGb&QWgnD~vlfH}P_t!uaBOGqR!!yB?ocbRfO3+w!-|ecmig z`tzNd%j*k!{<)~(k53Adzg#Ts@>!ww$Hh^;m4&Ix-%Vd|q_FpqcV~!yD(w5=(jxtp z7D}dHsR5OT2Pl~VtMX8dI9kaJI$=aj`Qw#L#@#}s{Bx<28J52SCBD5&$&5I=0*(3T zGbJ|ZA%C--b%=jm3P+jj?e$2$f>rm6%*?x@f`Z}b% zU*yM3E?bWhC7b=2DfJuBn1%XJ{g`QIH=^8#BYw<`Et}B#b?5w;Sr<2>%I_}tG1fV{<&nzu1M@{dn@Mjow@>8T#>T|C9GkNIrUX-rP zi3(trq4EQ0hO%}*08@x|9709PjPd{mV&@!1HA>CT0n94&mlZWAYnKKxtI@)(B(SR;Abug zVzwgv=4(jm-?%Y|DMNr`kMcJk4`Q~Xqc>5yzwYlK<|FjvHk#pYk_Iz7(X#uf$ltUn znE3>q{|S}*o6ZI^yU^JOsK#G$EtvTX)%}VZ{1rb3Gkej`50Ny$^fZ{+hn6*>r~rj$ z8|DBie1y^i82>iR=je||Xhr~|@6d)hjPm|KMFFPVHp~%p=mjbd$hh5xIflw#qM88a zmp057=s80-1gP6ZF(=W{JX#v4>Ji0Qkujf+3N(+6Vye*P0y;g=mK(*KL4Os~GXibb zqL^y5rGzdDH2)pNe1(>+q00kJGutue(7APVO(3(O9rHEZ#I=!b2+aAc9di-=wvmUQtKk6|OCc2s>;O9X z0wERX2l^1^N)6lO7gQfj%DSY>(>sKZFO_ z@SE*YJ{9OBANgV-73l8+oxDIu1-cpN9zYjTfxd^&FQj_m!7+G1S|p?b{T$HAi-lC6 z-v&BqsE`Wu-+@k8uaF9KStwVJkn(grrGf`!%!E`Z(3LMBqyl{a(8-I1RG?1;I_U`^ z73j11{6Z?wmjb;N>^~Iuhhr6#vJb$)j8BCEpYjz6sX+e%=!7#0sX(s-I@z3rRG>Ek zov?g1CF@^!;09Y0=?Nhf=qjMYPD%->K<@!`vTB4>ppOMQ+02Agpf3eFS(ZXd=z79> zOW^@|v5*P{b^#rD5hbJo{VdSQmkFsrzXNnKSA|g;b!w0dz9ygjAp};PVTqKwr)0UmXtpPYMbTKH(n-sX(s+I%%ko3iKO5 zCzDY~1^RD5Cwq#J3Uo1yOBB$B^wk)6!fuQ3AOaq==To7;F!)VgAfzn4J;;YZCti?3 zD$o}Iov_#ihaXL+tC4hp8!$FeY1v`ROgc0W-(5yeI-FWSBMH7ZpKgf~52qE=T}1x} DNM7-* delta 58078 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 I!Lfh;2Q`EVnE(I) diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvos.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvos.metallib index d8439ba6ce5f6903c2ddde8ee0e9c6eb34b3d9ec..ae16404ba360947b1b8d8838b4366c7a08d57313 100644 GIT binary patch delta 10099 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 delta 8380 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 EANp*FwEzGB diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvossim.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvossim.air index 109085a5bb3dda5a4569fbd842c32cca57ba40ce..4b72311b61a227f4b0f3003e60cf263bd9d79530 100644 GIT binary patch delta 59287 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 Y=^PFR0S5^O1&1FTbn{Q=B%wF|56$u`nE(I) delta 8378 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 EKX-JKpa1{> diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xros.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xros.air index 9d7cf2d4478ea4495bebad94c0be80749c5247de..a929bf77e7adeda8359f4cfdecc69811792c0236 100644 GIT binary patch delta 59305 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μq1@w4CnWxQ-kd`J8;M2qGt3nahFmMr#$>a zPkKqSIerst%7^FnqGustlCvYkUIPxpL#_dL5hi(&Fv&;plYFv$lIIY1WWhlidWv)P z+MkHYdX0t-ma1zxKcFJf=RWF3Zp$&l!t zBnli{f%!YQ4OKwcH{j;E@=>zCz@s_??#NsMR=Y-svv2}3JpOuxb`qch9!@(`K^%$} z9++%{{33AZehg@LbURymKfcaPLb9rF?3MZQaK zIt4w!@ARgFkRE@~o9^jTc&)a-&HXbw&$S?b{6lX#w3YU#nCP%mI>FWGc0~M99Mp%_ z0(x&!A37S66@BRTXu#?-GbXmxdFuHlmc<+fSt_kCL6e_~cm*=Geo zrL!B*(SkO6XG`Ob7ld4yt&bXZq9DwWo&HTtLEBT=GxmR75cwdxh^{MWSNdl8@7D|3 zpPW+{`mmtmt+$%)xEHGb&QWgnD~vlfH}P_t!uaBOGqR!!yB?ocbRfO3+w!-|ecmig z`tzNd%j*k!{<)~(k53Adzg#Ts@>!ww$Hh^;m4&Ix-%Vd|q_FpqcV~!yD(w5=(jxtp z7D}dHsR5OT2Pl~VtMX8dI9kaJI$=aj`Qw#L#@#}s{Bx<28J52SCBD5&$&5I=0*(3T zGbJ|ZA%C--b%=jm3P+jj?e$2$f>rm6%*?x@f`Z}b% zU*yM3E?bWhC7b=2DfJuBn1%XJ{g`QIH=^8#BYw<`Et}B#b?5w;Sr<2>%I_}tG1fV{<&nzu1M@{dn@Mjow@>8T#>T|C9GkNIrUX-rP zi3(trq4EQ0hO%}*08@x|9709PjPd{mV&@!1HA>CT0n94&mlZWAYnKKxtI@)(B(SR;Abug zVzwgv=4(jm-?%Y|DMNr`kMcJk4`Q~Xqc>5yzwYlK<|FjvHk#pYk_Iz7(X#uf$ltUn znE3>q{|S}*o6ZI^yU^JOsK#G$EtvTX)%}VZ{1rb3Gkej`50Ny$^fZ{+hn6*>r~rj$ z8|DBie1y^i82>iR=je||Xhr~|@6d)hjPm|KMFFPVHp~%p=mjbd$hh5xIflw#qM88a zmp057=s80-1gP6ZF(=W{JX#v4>Ji0Qkujf+3N(+6Vye*P0y;g=mK(*KL4Os~GXibb zqL^y5rGzdDH2)pNe1(>+q00kJGutue(7APVO(3(O9rHEZ#I=!b2+aAc9di-=wvmUQtKk6|OCc2s>;O9X z0wERX2l^1^N)6lO7gQfj%DSY>(>sKZFO_ z@SE*YJ{9OBANgV-73l8+oxDIu1-cpN9zYjTfxd^&FQj_m!7+G1S|p?b{T$HAi-lC6 z-v&BqsE`Wu-+@k8uaF9KStwVJkn(grrGf`!%!E`Z(3LMBqyl{a(8-I1RG?1;I_U`^ z73j11{6Z?wmjb;N>^~Iuhhr6#vJb$)j8BCEpYjz6sX+e%=!7#0sX(s-I@z3rRG>Ek zov?g1CF@^!;09Y0=?Nhf=qjMYPD%->K<@!`vTB4>ppOMQ+02Agpf3eFS(ZXd=z79> zOW^@|v5*P{b^#rD5hbJo{VdSQmkFsrzXNnKSA|g;b!w0dz9ygjAp};PVTqKwr)0UmXtpPYMbTKH(n-sX(s+I%%ko3iKO5 zCzDY~1^RD5Cwq#J3Uo1yOBB$B^wk)6!fuQ3AOaq==To7;F!)VgAfzn4J;;YZCti?3 zD$o}Iov_#ihaXL+tC4hp8!$FeY1v`ROgc0W-(5yeI-FWSBMH7ZpKgf~52qE=T}1x} DNM7-* delta 58078 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 I!Lfh;2Q`EVnE(I) diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xros.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xros.metallib index e29c2e2eddcb7db5b526330a6adc53e1cf7f259e..f523d0627921594c0b8d04e4810972d17ed9d65d 100644 GIT binary patch delta 10071 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 delta 8373 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

    79c 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 D||88Ed9*Vr3V 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 delta 26730 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 OcSXiuC$LwJ{J#JwpK!$h diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvossim.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvossim.metallib index 589be393542a664cc31924529a4fd43655b28eb0..dbdf9f3f134691f6c991085605c6332909d18785 100644 GIT binary patch delta 3188 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 diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xros.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xros.air index a929bf77e7adeda8359f4cfdecc69811792c0236..faf45f4f0ede76620e1f326eab1d4c6a1970a1e5 100644 GIT binary patch delta 26787 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≶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 AH~;_u delta 3078 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

    79c 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 D||88Ed9*Vr3V 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 delta 26730 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 OcSXiuC$LwJ{J#JwpK!$h diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xrossim.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xrossim.metallib index de2887fddd84e184897cdf9b01753d1ff30b5332..3d1b20a8ae9858aa5c208630fdc0538702c86ba0 100644 GIT binary patch delta 3188 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 delta 3102 zcmYjQ3s4hh9^c(B*Vu}UC_c*S0@+M-e?5?($~z!$CBY{DZ% zq=sAS;`oZ5*V;S9P*HGNXA&OjRqRD;d(^Af)LPH!Ic;pMr8idY%cj%2%zpX*{=ffw zzx@v$Pqe!dmCII?7NQ7-gdxbj7(|K?-O79{P};xz3r!kzXLk9p?|$*QdFp?i2+yqk z#uRaM@w5EzM`HPn`JY7ISXT7XY7#;C@|X*lJCCPh?I5ri@aq(5yf@Yid@BKuPEX@s zjC&RMYeM)Fi0Q3>_sXOBKAPq$;wwNyTS)&-NAZi4xUlj|FrEJ?emQV;1HL;WgWo=* z0{D-FoW4aVekzURf0DT8+;m;rk^SXj%`%zD6l3X8$GKQUE+xfhB{(!K$V zghVX-zIHdzCxviXVk-y~N_b_gmj5}i8Z%b#rlc;+Xn|rTuSqroQ^-#7&sjmU&mmy5$MDkyy)&TDD|Mcx?HJBUckIz)|p+V{}SG1^F z)AwL5od^%Zz?m6U7^fH2QyH7FhH??IGq+$|1B9KJ^Yh<)%QLHhuNW7{_h+sL`ak31 zn7_U%K_w>?{JU8SzFSuWd>2E;?{qr>GakZR)-K?`jf+#J&4TajQ3wx093TjB$|bWa z06U!!69+Hq%Itc;%?asTR+Mn?9YV$LWS0ZyvJkl_HB!)gL`>(Y?B&2;6(VU9J@bhJ#qk-^i^6z8i#i%T;sC0Qn~&-qgS6R0HS35Z?A& zH8A0%*rjxC1@LJ|u}jzh-!-=u1m=r+i(;N#F%N|Y8&u2#V>-+q&8HX=u`^Qs-6I>& zr9#i7Bt>vkfg5w@V=PjjD@iTY)4+U8J@ZwCdHxjC-8~ z1qgzasS!jNjH59#$}ifO#k;x~KH(lEyjTl%8W;s&+QKDG$Vs<%>9eV+DGO4H27o^T z33G9aCb)D+P30qzdUOv=wG^h3KpExKt2>7CoM8nyTH`s_o2{teUkIearS(9WdJRF~ z;)#9;!kS9jUX7*U5+fWW;SVp_M5q5}HBUc?5fmE$jgmsb29P2B{&M61cCNqT1cr_Y zY&S@jQo92-ROo5}GlY5dAVw0N{X7`73RovP=-&*IF+tG?(k$&5D&}QvTvigfR=tlg zjg#1?P<%vUPoVITn5v60-6XNOT}+*a#EPNz35nG}@plqyhvG95dmD;>kl1A??vU7h zD83*u9M6@XrU!=QEt%w5b_9`u%yHI(DP_5Gw{dh>4s`0I{vdDH1^JvH@AM7JtvMqe z>YP!QOJB>pRhT7|odhc3yGD>=`9UA?qbcGiF5+hvtdLck@biAEmc#p;_&FDT4mo2T z#dD44^|JG(Wdp42ydU4vAcKiEBg7C?X`+d3xktgUzEGGCf9k|9y6^$yy0wVNZ9eaY zk;G27?0utb2S>aos;_xu7mc#l-NYrgC1~F5mkk(YFDH!a`wKOe!kBSe%s6&ysf%rSMa)nvJ8P7gXlf|f zZ~espbsoV_&jFPw67F6*L za@^KK<*L7OQS{7`zpx|y5x)c?7;R)yL1eD{f-54WaTn51>1m9+^8b%RSht#-7IzVi z_XVHyUTnS--xFy6z-O=bQCr+trcnUBQ$GbN7 zaPduHFYsIYGxrywpL|P?E15@6 z4_hqoYm1T;>uC7VCBsv+54nYCQjGXwV{m;ETCYR>tt7;(ETAQ3rHvuY$`Mw+m5%xW z-@>X;$>oCk7K% z0I@M0Qw130p2xbh z4oEj`*<34>QP>RL->wwC-3|;wLl+szyAS5T1r<7X0LF5!^>?S$+Y-}Wt{ihm&G$xT z;zzGK4wPp2AtgNk;!Vz2g|?2p?I>NlQ1WhZA+CN`osZmOS<#?C69e z9FzxnlPNLv!^G686S|th)DLYzFjumu-|BN5^*fGCu%6b^p0RdR?!i*$$~PQWvHb-W zo1-_qv-gzaybA)^Aqa-T4yMZvJ00&$&<{uP!nEBd(wZv)h{`TgWtT;5%#O+_Q_ayv zRrh&-K$;twlaCgx7eJ=14^YR_qB{lg7K z2yV6P(@tw-+!p^w5hjk6+=)qOU_mHlsDc*cUX>5FX`=ThT8I7OnQs_O6&uavQC=E^wYfEqrZR9Va;x3$|tW}Pb-J%S{8Z@=|bQj`E`&GmmroR8{25K;G0$bmiMXdN>Y`s@ivS!o#lUSDG zg8p{pH55lz#Wh$*VWb>;FVBxTIbp+{Wn?L;Aaw*UBPb!Y1puRB$gqr(=Dj@HaUcCs=lY jNuK?f;Qe({;T10yZg1TU;E}*1g$IX+7;N25=1%)BJR?T# diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels.metallib index d7b90eb3585cfb05e0fc72816b545ac9befc7845..94f8c32093dd8f012ec2018fd6e9312ec7c6b8e5 100644 GIT binary patch delta 3144 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 vM%9I~C@9!u8ME6_GVBG0$0nlX7 Date: Thu, 20 Aug 2026 11:38:33 -0700 Subject: [PATCH 05/11] [Patch] Implemented spatial bucketing for progressive Gaussian tier generation --- .../Systems/RegistrationSystem.swift | 121 +++++++++++++++++- .../GaussianProgressiveLODTest.swift | 51 ++++++++ 2 files changed, 169 insertions(+), 3 deletions(-) diff --git a/Sources/UntoldEngine/Systems/RegistrationSystem.swift b/Sources/UntoldEngine/Systems/RegistrationSystem.swift index cdb5237c..a965ac52 100644 --- a/Sources/UntoldEngine/Systems/RegistrationSystem.swift +++ b/Sources/UntoldEngine/Systems/RegistrationSystem.swift @@ -3721,6 +3721,123 @@ private func gaussianImportanceScore(_ splat: GaussianSplat) -> Float { return splat.opacity * majorAxis * majorAxis } +private struct GaussianSpatialBucketKey: Hashable { + let x: Int + let y: Int + let z: Int +} + +private func spatiallyInterleavedGaussianRanking(_ splats: [GaussianSplat]) -> [Int] { + guard splats.count > 1 else { return Array(splats.indices) } + + var minBounds = simd_float3(Float.greatestFiniteMagnitude, Float.greatestFiniteMagnitude, Float.greatestFiniteMagnitude) + var maxBounds = simd_float3(-Float.greatestFiniteMagnitude, -Float.greatestFiniteMagnitude, -Float.greatestFiniteMagnitude) + for splat in splats { + let center = simd_float3(splat.center.x, splat.center.y, splat.center.z) + minBounds = simd_min(minBounds, center) + maxBounds = simd_max(maxBounds, center) + } + + let extent = maxBounds - minBounds + let occupiedAxisCount = [extent.x, extent.y, extent.z].filter { $0 > 0.0001 }.count + guard occupiedAxisCount > 0 else { + return splats.indices.sorted { + gaussianImportanceScore(splats[$0]) > gaussianImportanceScore(splats[$1]) + } + } + + let targetCellCount = max(8, min(512, splats.count / 24)) + let cellsPerAxis = max(1, Int(ceil(pow(Double(targetCellCount), 1.0 / Double(occupiedAxisCount))))) + let safeExtent = simd_float3( + max(extent.x, 0.0001), + max(extent.y, 0.0001), + max(extent.z, 0.0001) + ) + + var buckets: [GaussianSpatialBucketKey: [Int]] = [:] + for index in splats.indices { + let center = simd_float3(splats[index].center.x, splats[index].center.y, splats[index].center.z) + let normalized = (center - minBounds) / safeExtent + let maxCellIndex = cellsPerAxis - 1 + let cellX = min(maxCellIndex, max(0, Int(normalized.x * Float(cellsPerAxis)))) + let cellY = min(maxCellIndex, max(0, Int(normalized.y * Float(cellsPerAxis)))) + let cellZ = min(maxCellIndex, max(0, Int(normalized.z * Float(cellsPerAxis)))) + let key = GaussianSpatialBucketKey(x: cellX, y: cellY, z: cellZ) + buckets[key, default: []].append(index) + } + + let sortedBuckets = buckets.mapValues { indices in + indices.sorted { + gaussianImportanceScore(splats[$0]) > gaussianImportanceScore(splats[$1]) + } + } + + let bucketCenters = sortedBuckets.mapValues { indices in + var center = simd_float3.zero + for index in indices { + center += simd_float3(splats[index].center.x, splats[index].center.y, splats[index].center.z) + } + return center / Float(max(1, indices.count)) + } + + var remainingBuckets = Array(sortedBuckets.keys) + var bucketOrder: [GaussianSpatialBucketKey] = [] + if let first = remainingBuckets.max(by: { lhs, rhs in + guard let lhsIndex = sortedBuckets[lhs]?.first, + let rhsIndex = sortedBuckets[rhs]?.first + else { return false } + return gaussianImportanceScore(splats[lhsIndex]) < gaussianImportanceScore(splats[rhsIndex]) + }) { + bucketOrder.append(first) + remainingBuckets.removeAll { $0 == first } + } + + while !remainingBuckets.isEmpty { + let next = remainingBuckets.max { lhs, rhs in + let lhsDistance = nearestSelectedBucketDistanceSquared(lhs, centers: bucketCenters, selected: bucketOrder) + let rhsDistance = nearestSelectedBucketDistanceSquared(rhs, centers: bucketCenters, selected: bucketOrder) + if lhsDistance == rhsDistance { + let lhsIndex = sortedBuckets[lhs]?.first ?? 0 + let rhsIndex = sortedBuckets[rhs]?.first ?? 0 + return gaussianImportanceScore(splats[lhsIndex]) < gaussianImportanceScore(splats[rhsIndex]) + } + return lhsDistance < rhsDistance + }! + bucketOrder.append(next) + remainingBuckets.removeAll { $0 == next } + } + + var ranking: [Int] = [] + ranking.reserveCapacity(splats.count) + var depth = 0 + while ranking.count < splats.count { + var appendedThisRound = false + for key in bucketOrder { + guard let indices = sortedBuckets[key], depth < indices.count else { continue } + ranking.append(indices[depth]) + appendedThisRound = true + } + guard appendedThisRound else { break } + depth += 1 + } + + return ranking +} + +private func nearestSelectedBucketDistanceSquared( + _ key: GaussianSpatialBucketKey, + centers: [GaussianSpatialBucketKey: simd_float3], + selected: [GaussianSpatialBucketKey] +) -> Float { + guard let center = centers[key], !selected.isEmpty else { return Float.greatestFiniteMagnitude } + var best = Float.greatestFiniteMagnitude + for selectedKey in selected { + guard let selectedCenter = centers[selectedKey] else { continue } + best = min(best, simd_distance_squared(center, selectedCenter)) + } + return best +} + private func subsetSphericalHarmonics( _ sh: GaussianSphericalHarmonics, keeping indices: [Int] @@ -3772,9 +3889,7 @@ public func bakeGaussianSplatProgressiveTiers( throw UntoldGSError.sizeMismatch("source .ply contains no splats") } - let rankedIndices = asset.splats.indices.sorted { lhs, rhs in - gaussianImportanceScore(asset.splats[lhs]) > gaussianImportanceScore(asset.splats[rhs]) - } + let rankedIndices = spatiallyInterleavedGaussianRanking(asset.splats) let baseWithoutExtension = outputBaseURL.deletingPathExtension() let baseName = baseWithoutExtension.lastPathComponent diff --git a/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift b/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift index 0e67a7f3..286cf2c0 100644 --- a/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift +++ b/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift @@ -85,6 +85,57 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { XCTAssertGreaterThan(tiers[1].splatCount, tiers[2].splatCount) } + func testBakeProgressiveTiersPreservesSpatialCoverageInCoarseTier() throws { + let ply = FileManager.default.temporaryDirectory + .appendingPathComponent("GaussianSpatialCoverage-\(UUID().uuidString)") + .appendingPathExtension("ply") + let output = FileManager.default.temporaryDirectory + .appendingPathComponent("GaussianSpatialCoverage-\(UUID().uuidString)") + .appendingPathExtension("untoldgs") + + let lines = [ + "ply", + "format ascii 1.0", + "element vertex 8", + "property float x", + "property float y", + "property float z", + "property float scale_0", + "property float scale_1", + "property float scale_2", + "property float f_dc_0", + "property float f_dc_1", + "property float f_dc_2", + "property float opacity", + "property float rot_0", + "property float rot_1", + "property float rot_2", + "property float rot_3", + "end_header", + "0 0 0 0 0 0 0 0 0 5 1 0 0 0", + "0 1 0 0 0 0 0 0 0 5 1 0 0 0", + "0 2 0 0 0 0 0 0 0 5 1 0 0 0", + "0 3 0 0 0 0 0 0 0 5 1 0 0 0", + "0 4 0 0 0 0 0 0 0 5 1 0 0 0", + "0 5 0 0 0 0 0 0 0 5 1 0 0 0", + "10 0 0 -4 -4 -4 0 0 0 -4 1 0 0 0", + "10 1 0 -4 -4 -4 0 0 0 -4 1 0 0 0", + ] + try lines.joined(separator: "\n").write(to: ply, atomically: true, encoding: .utf8) + + let urls = try bakeGaussianSplatProgressiveTiers( + plyURL: ply, + outputBaseURL: output, + lodFractions: [1.0, 0.25] + ) + let coarse = try UntoldGSFormat.read(from: urls[1]) + XCTAssertEqual(coarse.splatCount, 2) + + let xs = coarse.encodedSplats.map { $0.position.x } + XCTAssertTrue(xs.contains { $0 < 1 }, "Coarse tier should keep coverage from the dense left cluster") + XCTAssertTrue(xs.contains { $0 > 9 }, "Coarse tier should keep coverage from the sparse right cluster") + } + func testProgressiveStreamingLoadsCoarsestFirstThenRefinesOnDemand() async throws { _ = makeContainingTile() let base = try bakeProgressiveBase(levelCount: 3) From 0538c78948766c36ddc64e2c99c4810d5553bd8e Mon Sep 17 00:00:00 2001 From: Untold Engine Date: Thu, 20 Aug 2026 11:55:10 -0700 Subject: [PATCH 06/11] [Patch] Implemented new API for gaussian system --- Sources/Sandbox/GameScene.swift | 35 +++- .../Systems/RegistrationSystem.swift | 57 +++++++ .../GaussianProgressiveLODTest.swift | 18 ++- .../GaussianStreamingTest.swift | 28 ++-- docs/API/UsingGaussianSystem.md | 153 +++++++++++++++--- 5 files changed, 245 insertions(+), 46 deletions(-) diff --git a/Sources/Sandbox/GameScene.swift b/Sources/Sandbox/GameScene.swift index 4dc239c8..c52e558e 100644 --- a/Sources/Sandbox/GameScene.swift +++ b/Sources/Sandbox/GameScene.swift @@ -22,10 +22,7 @@ setupDefaultSceneObjects() setSceneReady(false) - let splat = createEntity() - setEntityGaussian(entityId: splat, filename: "/Users/haroldserrano/Downloads/Pooltable", withExtension: "ply") - rotateBy(entityId: splat, angle: 180, axis: simd_float3(1.0,0.0,0.0)) - setSceneReady(true) + // Make sure to convert your usdz files to .untold format as explained in docs/API/UsingTheExporter // Uncomment to render a simple mesh. @@ -39,18 +36,39 @@ setSceneReady(success) } */ - /* + let sceneRoot = createEntity() setEntityStreamScene( entityId: sceneRoot, - url: URL(fileURLWithPath: "/path/to/local/json") + url: URL(fileURLWithPath: "/Users/haroldserrano/Desktop/UntoldEngineStudio/StreamingAssets/Dungeon/dungeon.json") ) { success in if success { - loadSceneAuthored(url: URL(fileURLWithPath: "/path/to/local/json")) + loadSceneAuthored(url: URL(fileURLWithPath: "/Users/haroldserrano/Desktop/UntoldEngineStudio/StreamingAssets/Dungeon/dungeon.json")) } + + + let splat = createEntity() + + setEntityGaussianStreaming( + entityId: splat, + source: .progressive( + baseFilename: "/Users/haroldserrano/Downloads/Pooltable", + levelCount: 4, + maxDistances: [5, 15, 25, .greatestFiniteMagnitude] + ), + options: GaussianStreamingOptions( + streamingRadius: 100, + unloadRadius: 140, + boundingBoxHalfExtent: simd_float3(2, 1, 3) + ) + ) + + rotateBy(entityId: splat, angle: 180, axis: simd_float3(1.0,0.0,0.0)) + setSceneReady(true) + setSceneReady(success) } - */ + // Uncomment to render a streamed scene } @@ -61,6 +79,7 @@ InputSystem.shared.registerKeyboardEvents() InputSystem.shared.registerMouseEvents() bypassPostProcessing = false + setSpatialDebug(.lodLevels(false)) } private func setupDefaultSceneObjects() { diff --git a/Sources/UntoldEngine/Systems/RegistrationSystem.swift b/Sources/UntoldEngine/Systems/RegistrationSystem.swift index a965ac52..2f3632cf 100644 --- a/Sources/UntoldEngine/Systems/RegistrationSystem.swift +++ b/Sources/UntoldEngine/Systems/RegistrationSystem.swift @@ -3602,6 +3602,63 @@ public func setEntityGaussianAsync( return true } +public enum GaussianStreamingSource { + case single(filename: String, withExtension: String) + case progressive(baseFilename: String, withExtension: String = "untoldgs", levelCount: Int, maxDistances: [Float]) +} + +public struct GaussianStreamingOptions { + public var streamingRadius: Float + public var unloadRadius: Float + public var boundingBoxHalfExtent: simd_float3 + public var priority: Int + + public init( + streamingRadius: Float = 100.0, + unloadRadius: Float = 150.0, + boundingBoxHalfExtent: simd_float3, + priority: Int = 0 + ) { + self.streamingRadius = streamingRadius + self.unloadRadius = unloadRadius + self.boundingBoxHalfExtent = boundingBoxHalfExtent + self.priority = priority + } +} + +/// Registers a distance-streamed Gaussian splat entity, either as one whole asset or as a +/// progressive multi-tier asset. Prefer this API for new call sites. +public func setEntityGaussianStreaming( + entityId: EntityID, + source: GaussianStreamingSource, + options: GaussianStreamingOptions +) { + switch source { + case let .single(filename, ext): + setEntityGaussianStreamable( + entityId: entityId, + filename: filename, + withExtension: ext, + streamingRadius: options.streamingRadius, + unloadRadius: options.unloadRadius, + boundingBoxHalfExtent: options.boundingBoxHalfExtent, + priority: options.priority + ) + case let .progressive(baseFilename, ext, levelCount, maxDistances): + setEntityGaussianProgressiveStreamable( + entityId: entityId, + baseFilename: baseFilename, + withExtension: ext, + levelCount: levelCount, + maxDistances: maxDistances, + streamingRadius: options.streamingRadius, + unloadRadius: options.unloadRadius, + boundingBoxHalfExtent: options.boundingBoxHalfExtent, + priority: options.priority + ) + } +} + /// Registers `entityId` as a distance-streamed Gaussian-splat prop, so /// `GeometryStreamingSystem` loads/unloads it based on camera distance the same way it /// does the surrounding tile geometry — rather than loading it immediately the way diff --git a/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift b/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift index 286cf2c0..10aa4fd7 100644 --- a/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift +++ b/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift @@ -142,14 +142,18 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { let entity = createEntity() translateTo(entityId: entity, position: .zero) - setEntityGaussianProgressiveStreamable( + setEntityGaussianStreaming( entityId: entity, - baseFilename: base, - levelCount: 3, - maxDistances: [20, 50, .greatestFiniteMagnitude], - streamingRadius: 200, - unloadRadius: 300, - boundingBoxHalfExtent: simd_float3(1, 1, 1) + source: .progressive( + baseFilename: base, + levelCount: 3, + maxDistances: [20, 50, .greatestFiniteMagnitude] + ), + options: GaussianStreamingOptions( + streamingRadius: 200, + unloadRadius: 300, + boundingBoxHalfExtent: simd_float3(1, 1, 1) + ) ) GeometryStreamingSystem.shared.update(cameraPosition: .zero, deltaTime: 0.1) diff --git a/Tests/UntoldEngineRenderTests/GaussianStreamingTest.swift b/Tests/UntoldEngineRenderTests/GaussianStreamingTest.swift index a8669330..c26b1866 100644 --- a/Tests/UntoldEngineRenderTests/GaussianStreamingTest.swift +++ b/Tests/UntoldEngineRenderTests/GaussianStreamingTest.swift @@ -148,10 +148,10 @@ final class GaussianStreamingTest: BaseRenderSetup { XCTAssertEqual(component.assetKind, .mesh, "❌ Default assetKind should be .mesh so existing mesh streaming call sites are unaffected") } - // MARK: - setEntityGaussianStreamable / findTileEntity + // MARK: - setEntityGaussianStreaming / findTileEntity /// End-to-end check of the consolidated API: given a positioned entity and a tile - /// whose bounds contain that position, `setEntityGaussianStreamable` should parent it + /// whose bounds contain that position, `setEntityGaussianStreaming` should parent it /// under that tile, register it with the octree, and configure it as a real gaussian /// streaming candidate — equivalent to `makeUnloadedGaussianEntity`'s manual assembly, /// but via the one public call callers are meant to use. @@ -168,13 +168,14 @@ final class GaussianStreamingTest: BaseRenderSetup { let entity = createEntity() translateTo(entityId: entity, position: .zero) - setEntityGaussianStreamable( + setEntityGaussianStreaming( entityId: entity, - filename: "test_gaussians", - withExtension: "ply", - streamingRadius: 10.0, - unloadRadius: 20.0, - boundingBoxHalfExtent: simd_float3(1, 1, 1) + source: .single(filename: "test_gaussians", withExtension: "ply"), + options: GaussianStreamingOptions( + streamingRadius: 10.0, + unloadRadius: 20.0, + boundingBoxHalfExtent: simd_float3(1, 1, 1) + ) ) XCTAssertEqual( @@ -201,15 +202,16 @@ final class GaussianStreamingTest: BaseRenderSetup { /// If no tile contains the entity's position, the entity should be left as a plain, /// non-streaming entity rather than crashing or silently half-configuring it. - func testSetEntityGaussianStreamable_noContainingTileLeavesEntityNonStreaming() { + func testSetEntityGaussianStreaming_noContainingTileLeavesEntityNonStreaming() { let entity = createEntity() translateTo(entityId: entity, position: simd_float3(1000, 1000, 1000)) // no tile out here - setEntityGaussianStreamable( + setEntityGaussianStreaming( entityId: entity, - filename: "test_gaussians", - withExtension: "ply", - boundingBoxHalfExtent: simd_float3(1, 1, 1) + source: .single(filename: "test_gaussians", withExtension: "ply"), + options: GaussianStreamingOptions( + boundingBoxHalfExtent: simd_float3(1, 1, 1) + ) ) XCTAssertNil( diff --git a/docs/API/UsingGaussianSystem.md b/docs/API/UsingGaussianSystem.md index 29f14ea9..62937c46 100644 --- a/docs/API/UsingGaussianSystem.md +++ b/docs/API/UsingGaussianSystem.md @@ -50,15 +50,51 @@ scattered across a large tile-streamed scene (chairs, tables, decor inside a str building). Loading every one of those up front defeats the point of streaming, and the engine has no way to unload them again on its own. -For that case, use `setEntityGaussianStreamable` instead. It registers the entity with +For that case, use `setEntityGaussianStreaming` instead. It registers the entity with `GeometryStreamingSystem`, which loads and unloads it automatically based on camera -distance — the same way it already handles the surrounding streamed tile geometry. +distance — the same way it already handles the surrounding streamed tile geometry. It can +stream either one whole Gaussian file or a progressive `.untoldgs` tier set. + +### API overview + +```swift +setEntityGaussianStreaming( + entityId: EntityID, + source: GaussianStreamingSource, + options: GaussianStreamingOptions +) +``` + +`GaussianStreamingSource` selects what kind of Gaussian asset the streaming system should +load: + +```swift +.single(filename: String, withExtension: String) + +.progressive( + baseFilename: String, + withExtension: String = "untoldgs", + levelCount: Int, + maxDistances: [Float] +) +``` + +`GaussianStreamingOptions` controls the entity's streaming behavior: + +```swift +GaussianStreamingOptions( + streamingRadius: Float = 100.0, + unloadRadius: Float = 150.0, + boundingBoxHalfExtent: simd_float3, + priority: Int = 0 +) +``` ### Prerequisites This only makes sense in a scene that is already using tile-based streaming — i.e. one loaded with `setEntityStreamScene` (see [Using the Geometry Streaming System](UsingGeometryStreamingSystem.md)). -`setEntityGaussianStreamable` attaches the splat to whichever tile stub's bounds contain +`setEntityGaussianStreaming` attaches the splat to whichever tile stub's bounds contain the entity's position, so it needs those tile stubs to already exist. Call it **after** `setEntityStreamScene`'s completion handler has fired — tile stubs are guaranteed to be registered by then. @@ -66,7 +102,7 @@ registered by then. ### Step 1: Create and position the entity Position and orient the entity *before* registering it for streaming — the position at the -time you call `setEntityGaussianStreamable` is what determines which tile it gets attached +time you call `setEntityGaussianStreaming` is what determines which tile it gets attached to. ```swift @@ -78,21 +114,23 @@ rotateTo(entityId: streamSplat, angle: 180.0, axis: simd_float3(1.0, 0.0, 0.0)) ### Step 2: Register it for streaming ```swift -setEntityGaussianStreamable( +setEntityGaussianStreaming( entityId: streamSplat, - filename: "chair", - withExtension: "ply", - streamingRadius: 30.0, - unloadRadius: 45.0, - boundingBoxHalfExtent: simd_float3(0.5, 0.8, 0.5) + source: .single(filename: "chair", withExtension: "ply"), + options: GaussianStreamingOptions( + streamingRadius: 30.0, + unloadRadius: 45.0, + boundingBoxHalfExtent: simd_float3(0.5, 0.8, 0.5) + ) ) ``` Parameters: - `entityId`: The entity created and positioned in Step 1. -- `filename` / `withExtension`: Same as `setEntityGaussian` — the `.ply` file to stream in - once the camera is in range. +- `source`: Use `.single(filename:withExtension:)` for a whole `.ply`/`.untoldgs` asset, or + `.progressive(baseFilename:levelCount:maxDistances:)` for progressive tiers named + `_lod0.untoldgs`, `_lod1.untoldgs`, etc. - `streamingRadius`: Distance from the camera at which the splat starts loading. - `unloadRadius`: Distance beyond which the splat unloads. Should be larger than `streamingRadius` to avoid load/unload thrashing at the boundary. @@ -105,11 +143,92 @@ Parameters: - `priority`: Optional. Higher-priority entities load first when multiple candidates are in range at once. Defaults to `0`. -> Note: If no tile is found containing the entity's position, `setEntityGaussianStreamable` +> Note: If no tile is found containing the entity's position, `setEntityGaussianStreaming` > logs a warning and leaves the entity as a plain, non-streaming entity (no `StreamingComponent` > is attached) — it will not crash, but it also will not load. Double-check the position > against the streamed scene's tile bounds if this happens. +### Progressive Gaussian splat streaming + +Use `.progressive(...)` when the Gaussian asset has been baked into multiple `.untoldgs` +tiers. The engine loads the coarsest tier first, then swaps in finer resident tiers as the +camera gets closer. + +Progressive tier filenames must follow this pattern: + +```text +_lod0.untoldgs +_lod1.untoldgs +_lod2.untoldgs +... +``` + +For example, if `baseFilename` is `"chair"` and `levelCount` is `4`, the engine expects: + +```text +chair_lod0.untoldgs +chair_lod1.untoldgs +chair_lod2.untoldgs +chair_lod3.untoldgs +``` + +`lod0` is the finest/full-resolution tier. Higher LOD numbers are progressively coarser. + +You can generate these files from a `.ply` source with the exporter: + +```bash +untoldengine export --input "chair.ply" --output "chair.untoldgs" --lod-levels 4 +``` + +The exporter writes the progressive tier files next to the requested output path using the +`_lodN.untoldgs` suffix. + +```swift +setEntityGaussianStreaming( + entityId: streamSplat, + source: .progressive( + baseFilename: "chair", + levelCount: 4, + maxDistances: [5.0, 15.0, 25.0, .greatestFiniteMagnitude] + ), + options: GaussianStreamingOptions( + streamingRadius: 30.0, + unloadRadius: 45.0, + boundingBoxHalfExtent: simd_float3(0.5, 0.8, 0.5) + ) +) +``` + +`maxDistances` must have one entry per LOD. Each value is the farthest camera distance at +which that LOD is allowed to be selected: + +```swift +maxDistances: [5.0, 15.0, 25.0, .greatestFiniteMagnitude] +``` + +With the distances above: + +- `lod0` can be used inside `5.0` units. +- `lod1` can be used from `5.0` to `15.0` units. +- `lod2` can be used from `15.0` to `25.0` units. +- `lod3` is used beyond `25.0` units, or while finer tiers are still loading. + +The system always falls back to the best tier already resident in memory. That means the +entity can become visible quickly with the coarsest tier, then refine toward `lod0` when +closer tiers finish loading. + +### Debugging progressive LOD + +Gaussian progressive LODs participate in the same LOD debug visualization used by mesh +LODs: + +```swift +setSpatialDebug(.lodLevels(true)) +``` + +When enabled, the renderer tints Gaussian splats by their currently selected progressive +LOD. This is useful for confirming that the engine is switching tiers as the camera moves. + ### Which function should I use? - **`setEntityGaussian`** — load immediately, stays resident. Use for a small number of @@ -117,8 +236,6 @@ Parameters: - **`setEntityGaussianAsync`** — same immediate/resident behavior, but the parse and GPU upload happen off the main thread. Use for a one-off splat load where you don't want a frame hitch, but still don't need distance-based unloading. -- **`setEntityGaussianStreamable`** — registers the entity with `GeometryStreamingSystem` - instead of loading anything itself. Use for splat props inside a large, tile-streamed - scene, where you want the same load-when-near/unload-when-far behavior the rest of the - scene already gets. - +- **`setEntityGaussianStreaming`** — registers the entity with `GeometryStreamingSystem` + instead of loading everything immediately. Use `.single(...)` for a whole-file streamed + prop, or `.progressive(...)` for coarse-to-fine Gaussian tiers. From ff2d99b7ef250ff88841c0051df38ba29ffbf84e Mon Sep 17 00:00:00 2001 From: Untold Engine Date: Thu, 20 Aug 2026 12:13:46 -0700 Subject: [PATCH 07/11] [Patch] Progressive Gaussian loading is now tile-independent --- .../Systems/RegistrationSystem.swift | 127 +++++++++++++---- .../GaussianProgressiveLODTest.swift | 39 ++++++ docs/API/UsingGaussianSystem.md | 129 +++++++++++------- 3 files changed, 219 insertions(+), 76 deletions(-) diff --git a/Sources/UntoldEngine/Systems/RegistrationSystem.swift b/Sources/UntoldEngine/Systems/RegistrationSystem.swift index 2f3632cf..62031a40 100644 --- a/Sources/UntoldEngine/Systems/RegistrationSystem.swift +++ b/Sources/UntoldEngine/Systems/RegistrationSystem.swift @@ -3560,6 +3560,13 @@ func copyGaussianLoadResult(_ result: GaussianLoadResult, to gaussianComponent: gaussianComponent.spaceUniform = result.spaceUniform } +public enum GaussianSource { + case single(filename: String, withExtension: String) + case progressive(baseFilename: String, withExtension: String = "untoldgs", levelCount: Int, maxDistances: [Float]) +} + +public typealias GaussianStreamingSource = GaussianSource + public func setEntityGaussian(entityId: EntityID, filename: String, withExtension: String) { guard let result = buildGaussianLoadResult(filename: filename, withExtension: withExtension) else { return @@ -3570,6 +3577,25 @@ public func setEntityGaussian(entityId: EntityID, filename: String, withExtensio } } +/// Registers a Gaussian splat entity that is always present, either as one whole asset or +/// as a progressive multi-tier `.untoldgs` asset. Progressive entities do not require a +/// streamed tile scene: the coarsest tier is loaded immediately, then `GaussianLODSystem` +/// requests finer tiers based on camera distance. +public func setEntityGaussian(entityId: EntityID, source: GaussianSource) { + switch source { + case let .single(filename, ext): + setEntityGaussian(entityId: entityId, filename: filename, withExtension: ext) + case let .progressive(baseFilename, ext, levelCount, maxDistances): + setEntityGaussianProgressive( + entityId: entityId, + baseFilename: baseFilename, + withExtension: ext, + levelCount: levelCount, + maxDistances: maxDistances + ) + } +} + /// Asynchronously reads and encodes a `.ply` Gaussian splat asset and attaches it to /// `entityId` without blocking the main thread. Parsing, per-splat encoding, and spherical- /// harmonics packing all run before the world-mutation gate is acquired; only the final @@ -3602,11 +3628,6 @@ public func setEntityGaussianAsync( return true } -public enum GaussianStreamingSource { - case single(filename: String, withExtension: String) - case progressive(baseFilename: String, withExtension: String = "untoldgs", levelCount: Int, maxDistances: [Float]) -} - public struct GaussianStreamingOptions { public var streamingRadius: Float public var unloadRadius: Float @@ -3630,7 +3651,7 @@ public struct GaussianStreamingOptions { /// progressive multi-tier asset. Prefer this API for new call sites. public func setEntityGaussianStreaming( entityId: EntityID, - source: GaussianStreamingSource, + source: GaussianSource, options: GaussianStreamingOptions ) { switch source { @@ -3659,6 +3680,32 @@ public func setEntityGaussianStreaming( } } +/// Registers a tile-independent progressive Gaussian splat entity. +/// +/// The expected files are `_lod0.untoldgs`, `_lod1.untoldgs`, +/// etc. LOD0 is full detail; the highest index is the coarsest tier and is loaded +/// immediately so the entity can become visible before finer tiers finish loading. +public func setEntityGaussianProgressive( + entityId: EntityID, + baseFilename: String, + withExtension ext: String = "untoldgs", + levelCount: Int, + maxDistances: [Float] +) { + guard configureEntityGaussianProgressiveLOD( + entityId: entityId, + baseFilename: baseFilename, + withExtension: ext, + levelCount: levelCount, + maxDistances: maxDistances, + errorPrefix: "setEntityGaussianProgressive" + ) else { return } + + Task { + _ = await GeometryStreamingSystem.shared.loadInitialGaussianProgressiveTier(entityId: entityId) + } +} + /// Registers `entityId` as a distance-streamed Gaussian-splat prop, so /// `GeometryStreamingSystem` loads/unloads it based on camera distance the same way it /// does the surrounding tile geometry — rather than loading it immediately the way @@ -3725,14 +3772,6 @@ public func setEntityGaussianProgressiveStreamable( boundingBoxHalfExtent: simd_float3, priority: Int = 0 ) { - guard levelCount > 0 else { - handleError(.assetDataMissing, "setEntityGaussianProgressiveStreamable: levelCount must be at least 1, got \(levelCount)") - return - } - guard maxDistances.count == levelCount else { - handleError(.assetDataMissing, "setEntityGaussianProgressiveStreamable: maxDistances must have \(levelCount) entries, got \(maxDistances.count)") - return - } guard let local = scene.get(component: LocalTransformComponent.self, for: entityId) else { handleError(.noLocalTransformComponent, entityId) return @@ -3742,35 +3781,65 @@ public func setEntityGaussianProgressiveStreamable( return } + local.boundingBox = (min: -boundingBoxHalfExtent, max: boundingBoxHalfExtent) + setParent(childId: entityId, parentId: tileEntity) + OctreeSystem.shared.registerEntity(entityId) + + guard configureEntityGaussianProgressiveLOD( + entityId: entityId, + baseFilename: baseFilename, + withExtension: ext, + levelCount: levelCount, + maxDistances: maxDistances, + errorPrefix: "setEntityGaussianProgressiveStreamable" + ) else { return } + + if let streaming = scene.assign(to: entityId, component: StreamingComponent.self) { + streaming.assetKind = .gaussianSplat + streaming.assetFilename = baseFilename + streaming.assetExtension = ext + streaming.streamingRadius = streamingRadius + streaming.unloadRadius = unloadRadius + streaming.priority = priority + } +} + +@discardableResult +private func configureEntityGaussianProgressiveLOD( + entityId: EntityID, + baseFilename: String, + withExtension ext: String, + levelCount: Int, + maxDistances: [Float], + errorPrefix: String +) -> Bool { + guard levelCount > 0 else { + handleError(.assetDataMissing, "\(errorPrefix): levelCount must be at least 1, got \(levelCount)") + return false + } + guard maxDistances.count == levelCount else { + handleError(.assetDataMissing, "\(errorPrefix): maxDistances must have \(levelCount) entries, got \(maxDistances.count)") + return false + } + var levels: [GaussianLODLevel] = [] for index in 0 ..< levelCount { let filename = levelCount == 1 ? baseFilename : "\(baseFilename)_lod\(index)" guard let url = LoadingSystem.shared.resourceURL(forResource: filename, withExtension: ext, subResource: nil) else { handleError(.filenameNotFound, filename) - return + return false } levels.append(GaussianLODLevel(maxDistance: maxDistances[index], url: url)) } - local.boundingBox = (min: -boundingBoxHalfExtent, max: boundingBoxHalfExtent) - setParent(childId: entityId, parentId: tileEntity) - OctreeSystem.shared.registerEntity(entityId) - guard let lodComponent = scene.assign(to: entityId, component: GaussianLODComponent.self) else { - return + return false } lodComponent.lodLevels = levels lodComponent.currentLOD = -1 lodComponent.desiredLOD = levelCount - 1 - - if let streaming = scene.assign(to: entityId, component: StreamingComponent.self) { - streaming.assetKind = .gaussianSplat - streaming.assetFilename = baseFilename - streaming.assetExtension = ext - streaming.streamingRadius = streamingRadius - streaming.unloadRadius = unloadRadius - streaming.priority = priority - } + lodComponent.isUsingFallback = false + return true } private func gaussianImportanceScore(_ splat: GaussianSplat) -> Float { diff --git a/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift b/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift index 10aa4fd7..8e5ceb35 100644 --- a/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift +++ b/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift @@ -181,4 +181,43 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { XCTAssertEqual(lod.currentLOD, 0) XCTAssertEqual(scene.get(component: GaussianComponent.self, for: entity)?.splatCount, lod.lodLevels[0].buffers?.splatCount) } + + func testProgressiveGaussianDoesNotRequireTileStreaming() async throws { + let base = try bakeProgressiveBase(levelCount: 3) + + let entity = createEntity() + translateTo(entityId: entity, position: .zero) + setEntityGaussian( + entityId: entity, + source: .progressive( + baseFilename: base, + levelCount: 3, + maxDistances: [20, 50, .greatestFiniteMagnitude] + ) + ) + + let lod = try XCTUnwrap(scene.get(component: GaussianLODComponent.self, for: entity)) + XCTAssertNil(scene.get(component: StreamingComponent.self, for: entity)) + + for _ in 0 ..< 20 where lod.currentLOD != 2 { + try await Task.sleep(nanoseconds: 10_000_000) + } + + XCTAssertEqual(lod.currentLOD, 2) + XCTAssertEqual(lod.lodLevels[2].residencyState, .resident) + XCTAssertEqual(scene.get(component: GaussianComponent.self, for: entity)?.splatCount, lod.lodLevels[2].buffers?.splatCount) + + let camera = createEntity() + scene.assign(to: camera, component: CameraComponent.self)?.localPosition = .zero + _ = scene.assign(to: camera, component: LocalTransformComponent.self) + CameraSystem.shared.activeCamera = camera + + GaussianLODSystem.shared.update(deltaTime: 0.1) + await lod.lodLevels[0].loadTask?.value + GaussianLODSystem.shared.update(deltaTime: 0.1) + + XCTAssertEqual(lod.lodLevels[0].residencyState, .resident) + XCTAssertEqual(lod.currentLOD, 0) + XCTAssertEqual(scene.get(component: GaussianComponent.self, for: entity)?.splatCount, lod.lodLevels[0].buffers?.splatCount) + } } diff --git a/docs/API/UsingGaussianSystem.md b/docs/API/UsingGaussianSystem.md index 62937c46..e81c1a15 100644 --- a/docs/API/UsingGaussianSystem.md +++ b/docs/API/UsingGaussianSystem.md @@ -22,6 +22,15 @@ To display a Gaussian Splat model, load its .ply file and link it to the entity setEntityGaussian(entityId: myEntity, filename: "splat", withExtension: "ply") ``` +You can also use the source-based API: + +```swift +setEntityGaussian( + entityId: myEntity, + source: .single(filename: "splat", withExtension: "ply") +) +``` + Parameters: - entityId: The ID of the entity created earlier. @@ -32,6 +41,72 @@ Parameters: --- +## Progressive Gaussian Splats + +Progressive Gaussian loading is available without a tile-streamed scene. Use it when you +want a Gaussian to appear quickly at a coarse tier, then refine toward full resolution as +the camera gets closer. + +Progressive assets use `.untoldgs` tier files: + +```text +_lod0.untoldgs +_lod1.untoldgs +_lod2.untoldgs +... +``` + +`lod0` is the finest/full-resolution tier. Higher LOD numbers are progressively coarser. +The engine loads the coarsest tier first, then `GaussianLODSystem` requests finer tiers +based on camera distance. + +Generate tiers from a `.ply` source with the exporter: + +```bash +untoldengine export --input "chair.ply" --output "chair.untoldgs" --lod-levels 4 +``` + +Then register the entity with a progressive source: + +```swift +let chair = createEntity() +translateTo(entityId: chair, position: simd_float3(0.0, 0.0, -3.0)) + +setEntityGaussian( + entityId: chair, + source: .progressive( + baseFilename: "chair", + levelCount: 4, + maxDistances: [5.0, 15.0, 25.0, .greatestFiniteMagnitude] + ) +) +``` + +`maxDistances` must have one entry per LOD. Each value is the farthest camera distance at +which that LOD is allowed to be selected: + +- `lod0` can be used inside `5.0` units. +- `lod1` can be used from `5.0` to `15.0` units. +- `lod2` can be used from `15.0` to `25.0` units. +- `lod3` is used beyond `25.0` units, or while finer tiers are still loading. + +The system always falls back to the best tier already resident in memory, so the entity can +become visible quickly with the coarsest tier and refine toward `lod0`. + +### Debugging progressive LOD + +Gaussian progressive LODs participate in the same LOD debug visualization used by mesh +LODs: + +```swift +setSpatialDebug(.lodLevels(true)) +``` + +When enabled, the renderer tints Gaussian splats by their currently selected progressive +LOD. This is useful for confirming that the engine is switching tiers as the camera moves. + +--- + ### Running the Gaussian System Once everything is set up: @@ -60,13 +135,12 @@ stream either one whole Gaussian file or a progressive `.untoldgs` tier set. ```swift setEntityGaussianStreaming( entityId: EntityID, - source: GaussianStreamingSource, + source: GaussianSource, options: GaussianStreamingOptions ) ``` -`GaussianStreamingSource` selects what kind of Gaussian asset the streaming system should -load: +`GaussianSource` selects what kind of Gaussian asset the streaming system should load: ```swift .single(filename: String, withExtension: String) @@ -150,9 +224,8 @@ Parameters: ### Progressive Gaussian splat streaming -Use `.progressive(...)` when the Gaussian asset has been baked into multiple `.untoldgs` -tiers. The engine loads the coarsest tier first, then swaps in finer resident tiers as the -camera gets closer. +Use `.progressive(...)` with `setEntityGaussianStreaming` when you want tile-driven +load/unload behavior plus the same coarse-to-fine refinement described above. Progressive tier filenames must follow this pattern: @@ -172,17 +245,6 @@ chair_lod2.untoldgs chair_lod3.untoldgs ``` -`lod0` is the finest/full-resolution tier. Higher LOD numbers are progressively coarser. - -You can generate these files from a `.ply` source with the exporter: - -```bash -untoldengine export --input "chair.ply" --output "chair.untoldgs" --lod-levels 4 -``` - -The exporter writes the progressive tier files next to the requested output path using the -`_lodN.untoldgs` suffix. - ```swift setEntityGaussianStreaming( entityId: streamSplat, @@ -199,36 +261,6 @@ setEntityGaussianStreaming( ) ``` -`maxDistances` must have one entry per LOD. Each value is the farthest camera distance at -which that LOD is allowed to be selected: - -```swift -maxDistances: [5.0, 15.0, 25.0, .greatestFiniteMagnitude] -``` - -With the distances above: - -- `lod0` can be used inside `5.0` units. -- `lod1` can be used from `5.0` to `15.0` units. -- `lod2` can be used from `15.0` to `25.0` units. -- `lod3` is used beyond `25.0` units, or while finer tiers are still loading. - -The system always falls back to the best tier already resident in memory. That means the -entity can become visible quickly with the coarsest tier, then refine toward `lod0` when -closer tiers finish loading. - -### Debugging progressive LOD - -Gaussian progressive LODs participate in the same LOD debug visualization used by mesh -LODs: - -```swift -setSpatialDebug(.lodLevels(true)) -``` - -When enabled, the renderer tints Gaussian splats by their currently selected progressive -LOD. This is useful for confirming that the engine is switching tiers as the camera moves. - ### Which function should I use? - **`setEntityGaussian`** — load immediately, stays resident. Use for a small number of @@ -236,6 +268,9 @@ LOD. This is useful for confirming that the engine is switching tiers as the cam - **`setEntityGaussianAsync`** — same immediate/resident behavior, but the parse and GPU upload happen off the main thread. Use for a one-off splat load where you don't want a frame hitch, but still don't need distance-based unloading. +- **`setEntityGaussian(entityId:source:)`** — load an always-present Gaussian from either + `.single(...)` or `.progressive(...)`. Use this when you want progressive refinement + without tile-based scene streaming. - **`setEntityGaussianStreaming`** — registers the entity with `GeometryStreamingSystem` instead of loading everything immediately. Use `.single(...)` for a whole-file streamed prop, or `.progressive(...)` for coarse-to-fine Gaussian tiers. From ce60f6b96a69e5ada4870975cc66d4ccc4845b90 Mon Sep 17 00:00:00 2001 From: Untold Engine Date: Thu, 20 Aug 2026 21:33:21 -0700 Subject: [PATCH 08/11] [Patch] Fix Gaussian LOD memory leak, stale-task race, and code-review findings --- Sources/UntoldEngine/ECS/Components.swift | 69 ++++-- .../Systems/GaussianLODSystem.swift | 44 ++-- ...tryStreamingSystem+GaussianStreaming.swift | 227 ++++++++---------- Sources/UntoldEngine/Systems/LODSystem.swift | 136 +++++++---- .../Systems/RegistrationSystem.swift | 72 ++++-- .../GaussianProgressiveLODTest.swift | 34 +++ 6 files changed, 334 insertions(+), 248 deletions(-) diff --git a/Sources/UntoldEngine/ECS/Components.swift b/Sources/UntoldEngine/ECS/Components.swift index eb9e9b4e..beb86d31 100644 --- a/Sources/UntoldEngine/ECS/Components.swift +++ b/Sources/UntoldEngine/ECS/Components.swift @@ -412,6 +412,23 @@ public enum LODResidencyState { case loading // Mesh is being loaded } +/// Shared by `LODLevel` and `GaussianLODLevel` so `isLODLevelResident`/`findFallbackLODLevel` +/// (`LODSystem.swift`) can implement residency/fallback selection once for both mesh and +/// Gaussian LOD instead of each component re-declaring the same algorithm. +protocol LODResidencyLevel { + var residencyState: LODResidencyState { get } + /// Whether this level actually has a usable payload — `residencyState` alone isn't + /// trusted, mirroring the double-check both components already made before this was shared. + var isPopulated: Bool { get } +} + +/// Shared by `LODLevel` and `GaussianLODLevel` so `selectLODIndex` (`LODSystem.swift`) can pick +/// a distance-based tier once for both mesh and Gaussian LOD instead of each system +/// re-declaring the same threshold/hysteresis algorithm. +protocol LODDistanceLevel { + var maxDistance: Float { get } +} + public struct LODLevel { public var mesh: [Mesh] // Meshes for this lod public var maxDistance: Float // Switch to next LOD beyond this @@ -431,6 +448,12 @@ public struct LODLevel { } } +extension LODLevel: LODResidencyLevel { + var isPopulated: Bool { !mesh.isEmpty } +} + +extension LODLevel: LODDistanceLevel {} + public class LODComponent: Component { public var lodLevels: [LODLevel] = [] // Sorted by distance (LOD0 first) public var currentLOD: Int = 0 // Active LOD index (what's actually rendering) @@ -451,26 +474,12 @@ public class LODComponent: Component { /// Check if the desired LOD level has a resident mesh public func isLODResident(_ lodIndex: Int) -> Bool { - guard lodIndex >= 0, lodIndex < lodLevels.count else { return false } - let level = lodLevels[lodIndex] - return level.residencyState == .resident && !level.mesh.isEmpty + isLODLevelResident(lodLevels, lodIndex) } /// Find the best available fallback LOD (coarser than desired) public func findFallbackLOD(from desiredIndex: Int) -> Int? { - // Try coarser LODs first (higher index = lower detail) - for i in (desiredIndex + 1) ..< lodLevels.count { - if isLODResident(i) { - return i - } - } - // Then try finer LODs (lower index = higher detail) - for i in (0 ..< desiredIndex).reversed() { - if isLODResident(i) { - return i - } - } - return nil + findFallbackLODLevel(lodLevels, from: desiredIndex) } } @@ -491,6 +500,12 @@ public struct GaussianLODLevel { } } +extension GaussianLODLevel: LODResidencyLevel { + var isPopulated: Bool { buffers != nil } +} + +extension GaussianLODLevel: LODDistanceLevel {} + /// Runtime state for a progressively streamed Gaussian splat prop. /// The renderer still consumes a normal `GaussianComponent`; this component owns the /// per-tier residency and `GaussianLODSystem` copies the selected tier onto the live @@ -505,19 +520,23 @@ public class GaussianLODComponent: Component { public required init() {} public func isLODResident(_ lodIndex: Int) -> Bool { - guard lodIndex >= 0, lodIndex < lodLevels.count else { return false } - let level = lodLevels[lodIndex] - return level.residencyState == .resident && level.buffers != nil + isLODLevelResident(lodLevels, lodIndex) } public func findFallbackLOD(from desiredIndex: Int) -> Int? { - for i in (desiredIndex + 1) ..< lodLevels.count { - if isLODResident(i) { return i } - } - for i in (0 ..< desiredIndex).reversed() { - if isLODResident(i) { return i } + findFallbackLODLevel(lodLevels, from: desiredIndex) + } + + /// Cancels in-flight loads and drops residency for every tier. Does not touch + /// currentLOD/desiredLOD — callers decide those based on whether this is a + /// stream-out (reset to coarsest) or full teardown (component removed right after). + func releaseAllLevelResources() { + for index in lodLevels.indices { + lodLevels[index].loadTask?.cancel() + lodLevels[index].loadTask = nil + lodLevels[index].buffers = nil + lodLevels[index].residencyState = .notResident } - return nil } } diff --git a/Sources/UntoldEngine/Systems/GaussianLODSystem.swift b/Sources/UntoldEngine/Systems/GaussianLODSystem.swift index 5a532efa..032b723d 100644 --- a/Sources/UntoldEngine/Systems/GaussianLODSystem.swift +++ b/Sources/UntoldEngine/Systems/GaussianLODSystem.swift @@ -61,7 +61,7 @@ public class GaussianLODSystem: @unchecked Sendable { else { return } let desiredLOD = selectDesiredLOD( - distance: calculateDistance(entityId: entityId, cameraPosition: cameraPosition), + distance: entityDistanceToCamera(entityId: entityId, cameraPosition: cameraPosition), lodComponent: lodComponent ) lodComponent.desiredLOD = desiredLOD @@ -84,29 +84,20 @@ public class GaussianLODSystem: @unchecked Sendable { applyLOD(entityId: entityId, newLOD: actualLOD) } - private func calculateDistance(entityId: EntityID, cameraPosition: simd_float3) -> Float { - guard let worldTransform = scene.get(component: WorldTransformComponent.self, for: entityId), - let localTransform = scene.get(component: LocalTransformComponent.self, for: entityId) - else { return 0 } - - let localCenter = (localTransform.boundingBox.min + localTransform.boundingBox.max) * 0.5 - let worldCenter = worldTransform.space * simd_float4(localCenter, 1) - return simd_distance(cameraPosition, simd_float3(worldCenter.x, worldCenter.y, worldCenter.z)) - } - private func selectDesiredLOD(distance: Float, lodComponent: GaussianLODComponent) -> Int { - if let forced = lodComponent.forcedLOD, forced >= 0 { - return min(forced, lodComponent.lodLevels.count - 1) - } - - let adjustedDistance = distance * LODConfig.shared.lodBias - for (index, level) in lodComponent.lodLevels.enumerated() { - guard level.maxDistance > 0 else { continue } - if adjustedDistance <= level.maxDistance { - return index - } - } - return lodComponent.lodLevels.count - 1 + // lodComponent.desiredLOD still holds the previous frame's decision here — the caller + // overwrites it with this call's result right after — so passing it as currentLOD + // gives selectLODIndex the hysteresis reference point it needs, same as the mesh + // LODSystem.updateEntityLOD -> selectLODLevel call. + selectLODIndex( + levels: lodComponent.lodLevels, + distance: distance, + currentLOD: lodComponent.desiredLOD, + forcedLOD: lodComponent.forcedLOD, + lodBias: LODConfig.shared.lodBias, + hysteresis: LODConfig.shared.hysteresis, + globalDistances: LODConfig.shared.lodDistances + ) } private func applyLOD(entityId: EntityID, newLOD: Int) { @@ -121,7 +112,12 @@ public class GaussianLODSystem: @unchecked Sendable { } withWorldMutationGate { - guard let destination = scene.assign(to: entityId, component: GaussianComponent.self) else { + // Reuse the entity's existing GaussianComponent if it already has one — scene.assign + // unconditionally re-initializes the component slot, which would drop the previous + // instance (and every Metal buffer it retained) without releasing it. + guard let destination = scene.get(component: GaussianComponent.self, for: entityId) + ?? scene.assign(to: entityId, component: GaussianComponent.self) + else { return } diff --git a/Sources/UntoldEngine/Systems/GeometryStreamingSystem+GaussianStreaming.swift b/Sources/UntoldEngine/Systems/GeometryStreamingSystem+GaussianStreaming.swift index a79d408c..a1952009 100644 --- a/Sources/UntoldEngine/Systems/GeometryStreamingSystem+GaussianStreaming.swift +++ b/Sources/UntoldEngine/Systems/GeometryStreamingSystem+GaussianStreaming.swift @@ -35,50 +35,39 @@ extension GeometryStreamingSystem { let filename = streaming.assetFilename let ext = streaming.assetExtension + dispatchGaussianLoad(entityId: entityId, streaming: streaming, isNearBand: isNearBand) { + await setEntityGaussianAsync(entityId: entityId, filename: filename, withExtension: ext) + } + } + + /// Loads only the coarsest tier for a progressive Gaussian prop. Finer tiers are pulled + /// later by `GaussianLODSystem` as the camera moves close enough to need them. + func loadGaussianProgressiveStreamingEntity(entityId: EntityID, streaming: StreamingComponent, isNearBand: Bool) { + dispatchGaussianLoad(entityId: entityId, streaming: streaming, isNearBand: isNearBand) { + await self.loadInitialGaussianProgressiveTier(entityId: entityId) + } + } + + /// Runs `loader`, then applies its result through the shared completion path (state + /// transition, residency event, monitor bookkeeping, active/near-band load release) and + /// records load-time instrumentation — shared by both the plain and progressive Gaussian + /// load entry points above, which previously duplicated this whole body and had already + /// drifted (the progressive path was missing this timing instrumentation). + private func dispatchGaussianLoad( + entityId: EntityID, + streaming: StreamingComponent, + isNearBand: Bool, + loader: @escaping @Sendable () async -> Bool + ) { let task = Task { let asyncLoadStart = CFAbsoluteTimeGetCurrent() - let success = await setEntityGaussianAsync(entityId: entityId, filename: filename, withExtension: ext) + let success = await loader() let asyncLoadMs = (CFAbsoluteTimeGetCurrent() - asyncLoadStart) * 1000.0 var applyMs: Double = 0 withWorldMutationGate { let applyStart = CFAbsoluteTimeGetCurrent() - - // Guard against the cooperative-cancellation race, same as loadMesh's mesh path: - // unloadGaussian may have freed this entity while the load was in flight. - guard scene.exists(entityId) else { - releaseActiveLoad(entityId: entityId) - if isNearBand { releaseNearBandLoad(entityId: entityId) } - return - } - - guard let s = scene.get(component: StreamingComponent.self, for: entityId), - s.state == .loading - else { - releaseActiveLoad(entityId: entityId) - if isNearBand { releaseNearBandLoad(entityId: entityId) } - return - } - - if success { - s.state = .loaded - s.lastVisibleFrame = currentFrame - - let event = AssetResidencyChangedEvent( - entityId: entityId, - assetURL: URL(fileURLWithPath: ""), - meshName: s.assetFilename, - isResident: true - ) - SystemEventBus.shared.queueResidencyChange(event) - markLoadedStreamingEntity(entityId) - SystemIntegrationMonitor.shared.recordStreamingLoad() - } else { - s.state = .unloaded - handleError(.meshStreamingFailed, entityId) - } - releaseActiveLoad(entityId: entityId) - if isNearBand { releaseNearBandLoad(entityId: entityId) } + completeGaussianStreamingLoad(entityId: entityId, isNearBand: isNearBand, success: success) applyMs = (CFAbsoluteTimeGetCurrent() - applyStart) * 1000.0 } recordLoadCompletion(success: success, asyncLoadMs: asyncLoadMs, applyMs: applyMs, wasLODReload: false) @@ -87,50 +76,48 @@ extension GeometryStreamingSystem { streaming.loadTask = task } - /// Loads only the coarsest tier for a progressive Gaussian prop. Finer tiers are pulled - /// later by `GaussianLODSystem` as the camera moves close enough to need them. - func loadGaussianProgressiveStreamingEntity(entityId: EntityID, streaming: StreamingComponent, isNearBand: Bool) { - let task = Task { - let success = await loadInitialGaussianProgressiveTier(entityId: entityId) + /// Applies a completed Gaussian load's result to `StreamingComponent`/event bus/monitor. + /// Must be called from within `withWorldMutationGate`. + private func completeGaussianStreamingLoad( + entityId: EntityID, + isNearBand: Bool, + success: Bool + ) { + // Guard against the cooperative-cancellation race, same as loadMesh's mesh path: + // unloadGaussian may have freed this entity while the load was in flight. + guard scene.exists(entityId) else { + releaseActiveLoad(entityId: entityId) + if isNearBand { releaseNearBandLoad(entityId: entityId) } + return + } - withWorldMutationGate { - guard scene.exists(entityId) else { - releaseActiveLoad(entityId: entityId) - if isNearBand { releaseNearBandLoad(entityId: entityId) } - return - } - guard let s = scene.get(component: StreamingComponent.self, for: entityId), - s.state == .loading - else { - releaseActiveLoad(entityId: entityId) - if isNearBand { releaseNearBandLoad(entityId: entityId) } - return - } + guard let s = scene.get(component: StreamingComponent.self, for: entityId), + s.state == .loading + else { + releaseActiveLoad(entityId: entityId) + if isNearBand { releaseNearBandLoad(entityId: entityId) } + return + } - if success { - s.state = .loaded - s.lastVisibleFrame = currentFrame - SystemEventBus.shared.queueResidencyChange( - AssetResidencyChangedEvent( - entityId: entityId, - assetURL: URL(fileURLWithPath: ""), - meshName: s.assetFilename, - isResident: true - ) - ) - markLoadedStreamingEntity(entityId) - SystemIntegrationMonitor.shared.recordStreamingLoad() - } else { - s.state = .unloaded - handleError(.meshStreamingFailed, entityId) - } + if success { + s.state = .loaded + s.lastVisibleFrame = currentFrame - releaseActiveLoad(entityId: entityId) - if isNearBand { releaseNearBandLoad(entityId: entityId) } - } + let event = AssetResidencyChangedEvent( + entityId: entityId, + assetURL: URL(fileURLWithPath: ""), + meshName: s.assetFilename, + isResident: true + ) + SystemEventBus.shared.queueResidencyChange(event) + markLoadedStreamingEntity(entityId) + SystemIntegrationMonitor.shared.recordStreamingLoad() + } else { + s.state = .unloaded + handleError(.meshStreamingFailed, entityId) } - - streaming.loadTask = task + releaseActiveLoad(entityId: entityId) + if isNearBand { releaseNearBandLoad(entityId: entityId) } } func loadInitialGaussianProgressiveTier(entityId: EntityID) async -> Bool { @@ -138,7 +125,13 @@ extension GeometryStreamingSystem { guard let lod = scene.get(component: GaussianLODComponent.self, for: entityId), !lod.lodLevels.isEmpty else { return nil } - return lod.lodLevels.count - 1 + let index = lod.lodLevels.count - 1 + // Mark the slot .loading synchronously, same as requestGaussianLODLevelLoad does for + // on-demand tiers — loadGaussianLODLevel's completion only commits while this still + // reads .loading, so unloadGaussianProgressive resetting it to .notResident in the + // meantime turns a stale completion into a safe no-op instead of resurrecting state. + lod.lodLevels[index].residencyState = .loading + return index } guard let coarsestIndex else { return false } return await loadGaussianLODLevel(entityId: entityId, lodIndex: coarsestIndex, makeCurrent: true) @@ -178,7 +171,8 @@ extension GeometryStreamingSystem { withWorldMutationGate { if let lod = scene.get(component: GaussianLODComponent.self, for: entityId), lodIndex >= 0, - lodIndex < lod.lodLevels.count + lodIndex < lod.lodLevels.count, + lod.lodLevels[lodIndex].residencyState == .loading { lod.lodLevels[lodIndex].residencyState = .notResident lod.lodLevels[lodIndex].loadTask = nil @@ -187,19 +181,30 @@ extension GeometryStreamingSystem { return false } - withWorldMutationGate { + return withWorldMutationGate { + // residencyState == .loading confirms this is still the authoritative load for the + // slot: unloadGaussianProgressive/removeEntityGaussianLOD reset it to .notResident on + // teardown, and Task.cancel() is only cooperative (never observed mid-await here), so + // without this re-check a cancelled-but-still-running load could resurrect buffers/ + // residency on an entity the streaming system already considers unloaded. guard scene.exists(entityId), let lod = scene.get(component: GaussianLODComponent.self, for: entityId), lodIndex >= 0, - lodIndex < lod.lodLevels.count - else { return } + lodIndex < lod.lodLevels.count, + lod.lodLevels[lodIndex].residencyState == .loading + else { return false } lod.lodLevels[lodIndex].buffers = built.component lod.lodLevels[lodIndex].residencyState = .resident lod.lodLevels[lodIndex].loadTask = nil if makeCurrent { - if let live = scene.assign(to: entityId, component: GaussianComponent.self) { + // Reuse the entity's existing GaussianComponent if it already has one — scene.assign + // unconditionally re-initializes the component slot, which would drop the previous + // instance (and every Metal buffer it retained) without releasing it. + if let live = scene.get(component: GaussianComponent.self, for: entityId) + ?? scene.assign(to: entityId, component: GaussianComponent.self) + { copyGaussianComponentBuffers(from: built.component, to: live) lod.currentLOD = lodIndex } @@ -211,9 +216,8 @@ extension GeometryStreamingSystem { totalBytes += gaussianComponentEstimatedBytes(buffers) } MemoryBudgetManager.shared.registerMesh(entityId: entityId, meshSizeBytes: totalBytes) + return true } - - return true } /// Tears down a streamed Gaussian-splat entity's GPU resources and removes it from the @@ -221,11 +225,6 @@ extension GeometryStreamingSystem { /// but skips the mesh-only bits (RenderComponent, LODComponent, MeshResourceManager, /// BatchingSystem static-batch retirement) that don't apply to splats. func unloadGaussian(entityId: EntityID) { - if scene.get(component: GaussianLODComponent.self, for: entityId) != nil { - unloadGaussianProgressive(entityId: entityId) - return - } - guard let streaming = scene.get(component: StreamingComponent.self, for: entityId), streaming.state == .loaded else { return } @@ -239,6 +238,15 @@ extension GeometryStreamingSystem { streaming.loadTask?.cancel() streaming.loadTask = nil + // No-op for a plain (non-progressive) splat entity, since it has no + // GaussianLODComponent — folds the progressive-only per-tier teardown in here + // instead of a separate unloadGaussianProgressive sibling function. + if let lod = scene.get(component: GaussianLODComponent.self, for: entityId) { + lod.releaseAllLevelResources() + lod.currentLOD = -1 + lod.desiredLOD = max(0, lod.lodLevels.count - 1) + } + removeEntityGaussian(entityId: entityId) // removeEntityGaussian already unregisters from MemoryBudgetManager, but the call @@ -262,45 +270,6 @@ extension GeometryStreamingSystem { let unloadMs = (CFAbsoluteTimeGetCurrent() - unloadStart) * 1000.0 updateLastUnloadDuration(unloadMs) } - - func unloadGaussianProgressive(entityId: EntityID) { - guard let streaming = scene.get(component: StreamingComponent.self, for: entityId), - streaming.state == .loaded - else { return } - - firstRangeTimestamps.removeValue(forKey: entityId) - - withWorldMutationGate { - streaming.state = .unloading - streaming.loadTask?.cancel() - streaming.loadTask = nil - - if let lod = scene.get(component: GaussianLODComponent.self, for: entityId) { - for index in lod.lodLevels.indices { - lod.lodLevels[index].loadTask?.cancel() - lod.lodLevels[index].loadTask = nil - lod.lodLevels[index].buffers = nil - lod.lodLevels[index].residencyState = .notResident - } - lod.currentLOD = -1 - lod.desiredLOD = max(0, lod.lodLevels.count - 1) - } - - removeEntityGaussian(entityId: entityId) - MemoryBudgetManager.shared.unregisterMesh(entityId: entityId) - unmarkLoadedStreamingEntity(entityId) - streaming.state = .unloaded - SystemEventBus.shared.queueResidencyChange( - AssetResidencyChangedEvent( - entityId: entityId, - assetURL: URL(fileURLWithPath: ""), - meshName: streaming.assetFilename, - isResident: false - ) - ) - SystemIntegrationMonitor.shared.recordStreamingUnload() - } - } } private func gaussianComponentEstimatedBytes(_ component: GaussianComponent) -> Int { diff --git a/Sources/UntoldEngine/Systems/LODSystem.swift b/Sources/UntoldEngine/Systems/LODSystem.swift index 1591a73f..906dd42c 100644 --- a/Sources/UntoldEngine/Systems/LODSystem.swift +++ b/Sources/UntoldEngine/Systems/LODSystem.swift @@ -115,7 +115,7 @@ public class LODSystem: @unchecked Sendable { } // Calculate distance - let distance = calculateDistance(entityId: entityId, cameraPosition: cameraPosition) + let distance = entityDistanceToCamera(entityId: entityId, cameraPosition: cameraPosition) // Select desired LOD level based on distance let desiredLOD = selectLODLevel( @@ -161,58 +161,16 @@ public class LODSystem: @unchecked Sendable { return lodComponent.currentLOD } - private func calculateDistance(entityId: EntityID, cameraPosition: simd_float3) -> Float { - guard let worldTransform = scene.get(component: WorldTransformComponent.self, for: entityId), - let localTransform = scene.get(component: LocalTransformComponent.self, for: entityId) - else { return 0.0 } - - // Get entity center from AABB - let boundingBox = localTransform.boundingBox - let localCenter = (boundingBox.min + boundingBox.max) * 0.5 - - // Transform to world space - let worldCenter = worldTransform.space * simd_float4(localCenter, 1.0) - - // Calculate distance from camera to entity center - return simd_distance(cameraPosition, simd_float3(worldCenter.x, worldCenter.y, worldCenter.z)) - } - private func selectLODLevel(distance: Float, lodComponent: LODComponent, currentLOD: Int) -> Int { - // Check for forced LOD override - if let forced = lodComponent.forcedLOD, forced >= 0 { - return min(forced, lodComponent.lodLevels.count - 1) - } - - // Apply LOD bias - let adjustedDistance = distance * LODConfig.shared.lodBias - let globalDistances = LODConfig.shared.lodDistances - - // Find appropriate LOD level. - // Per-level maxDistance takes priority; fall back to LODConfig.lodDistances[index] - // when maxDistance is 0 (unset). This lets users configure distances either - // per-level at registration time OR globally via LODConfig. - for (index, lodLevel) in lodComponent.lodLevels.enumerated() { - let baseThreshold: Float - if lodLevel.maxDistance > 0 { - baseThreshold = lodLevel.maxDistance - } else if index < globalDistances.count { - baseThreshold = globalDistances[index] - } else { - continue // No threshold available for this level — skip - } - - // Apply hysteresis when switching to higher detail (prevents flickering) - let threshold = index < currentLOD - ? baseThreshold - LODConfig.shared.hysteresis - : baseThreshold - - if adjustedDistance <= threshold { - return index - } - } - - // Beyond all thresholds, use lowest LOD - return lodComponent.lodLevels.count - 1 + selectLODIndex( + levels: lodComponent.lodLevels, + distance: distance, + currentLOD: currentLOD, + forcedLOD: lodComponent.forcedLOD, + lodBias: LODConfig.shared.lodBias, + hysteresis: LODConfig.shared.hysteresis, + globalDistances: LODConfig.shared.lodDistances + ) } private func applyLOD(entityId: EntityID, newLOD: Int, deltaTime _: Float) { @@ -304,3 +262,77 @@ func shouldDeferLODSelectionDuringTransition( ) -> Bool { fadeTransitionsEnabled && previousLOD != nil } + +/// Shared by `LODComponent` and `GaussianLODComponent` — see `LODResidencyLevel`. +func isLODLevelResident(_ levels: [T], _ index: Int) -> Bool { + guard index >= 0, index < levels.count else { return false } + let level = levels[index] + return level.residencyState == .resident && level.isPopulated +} + +/// Shared by `LODComponent` and `GaussianLODComponent` — see `LODResidencyLevel`. Prefers a +/// coarser resident level (higher index, lower detail) over a finer one, since showing +/// something-but-coarser while the desired level streams in beats swapping to a different +/// detail level entirely. +func findFallbackLODLevel(_ levels: [T], from desiredIndex: Int) -> Int? { + for i in (desiredIndex + 1) ..< levels.count where isLODLevelResident(levels, i) { + return i + } + for i in (0 ..< desiredIndex).reversed() where isLODLevelResident(levels, i) { + return i + } + return nil +} + +/// Shared by `LODSystem` and `GaussianLODSystem` — distance from the camera to an entity's +/// local-space bounding-box center, in world space. +func entityDistanceToCamera(entityId: EntityID, cameraPosition: simd_float3) -> Float { + guard let worldTransform = scene.get(component: WorldTransformComponent.self, for: entityId), + let localTransform = scene.get(component: LocalTransformComponent.self, for: entityId) + else { return 0.0 } + + let boundingBox = localTransform.boundingBox + let localCenter = (boundingBox.min + boundingBox.max) * 0.5 + let worldCenter = worldTransform.space * simd_float4(localCenter, 1.0) + return simd_distance(cameraPosition, simd_float3(worldCenter.x, worldCenter.y, worldCenter.z)) +} + +/// Shared by `LODSystem.selectLODLevel` and `GaussianLODSystem.selectDesiredLOD` — walks +/// `levels` in distance order and returns the first whose threshold isn't yet exceeded by +/// `distance * lodBias`. Applies `hysteresis` when a candidate level would mean switching to +/// higher detail (lower index) than `currentLOD`, so a distance oscillating right at a +/// threshold doesn't flip the selection every re-evaluation. Falls back to +/// `globalDistances[index]` when a level's own `maxDistance` is unset (0). +func selectLODIndex( + levels: [T], + distance: Float, + currentLOD: Int, + forcedLOD: Int?, + lodBias: Float, + hysteresis: Float, + globalDistances: [Float] +) -> Int { + if let forced = forcedLOD, forced >= 0 { + return min(forced, levels.count - 1) + } + + let adjustedDistance = distance * lodBias + + for (index, level) in levels.enumerated() { + let baseThreshold: Float + if level.maxDistance > 0 { + baseThreshold = level.maxDistance + } else if index < globalDistances.count { + baseThreshold = globalDistances[index] + } else { + continue + } + + let threshold = index < currentLOD ? baseThreshold - hysteresis : baseThreshold + if adjustedDistance <= threshold { + return index + } + } + + return levels.count - 1 +} diff --git a/Sources/UntoldEngine/Systems/RegistrationSystem.swift b/Sources/UntoldEngine/Systems/RegistrationSystem.swift index 62031a40..bcd5311f 100644 --- a/Sources/UntoldEngine/Systems/RegistrationSystem.swift +++ b/Sources/UntoldEngine/Systems/RegistrationSystem.swift @@ -3288,19 +3288,36 @@ public enum UntoldGSFormat { let versionValue = readUInt32(data, at: 4) guard versionValue == version else { throw UntoldGSError.unsupportedVersion(versionValue) } - let splatCount = Int(readUInt64(data, at: 8)) + let splatCountRaw = readUInt64(data, at: 8) let shDegree = readUInt32(data, at: 16) let shCoefficientsPerChannel = readUInt32(data, at: 20) let shHigherOrderPerSplat = readUInt32(data, at: 24) - let encodedByteCount = Int(readUInt64(data, at: 32)) - let shByteCount = Int(readUInt64(data, at: 40)) + let encodedByteCountRaw = readUInt64(data, at: 32) + let shByteCountRaw = readUInt64(data, at: 40) + + // Validate every header-declared count against the actual file size using + // overflow-checked UInt64 arithmetic before converting anything to Int — a corrupt or + // malicious header can declare values that overflow a plain multiply/add or don't fit + // Int, and an unchecked Int(...) conversion would trap the process instead of throwing + // a catchable UntoldGSError. + let stride = UInt64(MemoryLayout.stride) + let (expectedEncodedBytes, splatByteOverflow) = splatCountRaw.multipliedReportingOverflow(by: stride) + guard !splatByteOverflow, encodedByteCountRaw == expectedEncodedBytes else { + throw UntoldGSError.sizeMismatch("encoded splat bytes \(encodedByteCountRaw), expected \(expectedEncodedBytes)") + } - let expectedEncodedBytes = splatCount * MemoryLayout.stride - guard encodedByteCount == expectedEncodedBytes else { - throw UntoldGSError.sizeMismatch("encoded splat bytes \(encodedByteCount), expected \(expectedEncodedBytes)") + let (headerPlusEncoded, headerOverflow) = UInt64(headerByteCount).addingReportingOverflow(encodedByteCountRaw) + let (totalExpectedBytes, totalOverflow) = headerPlusEncoded.addingReportingOverflow(shByteCountRaw) + guard !headerOverflow, !totalOverflow, UInt64(data.count) == totalExpectedBytes else { + throw UntoldGSError.sizeMismatch("file has \(data.count) bytes, expected \(totalExpectedBytes)") } - guard data.count == headerByteCount + encodedByteCount + shByteCount else { - throw UntoldGSError.sizeMismatch("file has \(data.count) bytes, expected \(headerByteCount + encodedByteCount + shByteCount)") + + // Both counts are now provably <= data.count (a valid Int), so these conversions + // cannot trap. + guard let encodedByteCount = Int(exactly: encodedByteCountRaw), + let shByteCount = Int(exactly: shByteCountRaw) + else { + throw UntoldGSError.sizeMismatch("header-declared byte counts do not fit in memory") } let encodedStart = headerByteCount @@ -3496,9 +3513,20 @@ private func buildGaussianLoadResult(filename: String, withExtension: String) -> func buildGaussianLoadResultFromPLY(url: URL, sourceDescription: String) throws -> GaussianLoadResult? { let asset = try PLYReader.readGaussianAsset(from: url) let encodedSplats = asset.splats.map(encodeGaussianSplatForTBDR) - let packedSphericalHarmonics = try asset.sphericalHarmonics.map { - try packGaussianSphericalHarmonics($0, splatCount: asset.splats.count) + + // Reported here, distinctly from a raw PLY-parse failure (which propagates to the + // caller's catch instead), so a debugger sees "failed to pack SH" rather than a generic + // "failed to read" message when the file parses fine but has bad SH data (e.g. NaN). + let packedSphericalHarmonics: PackedGaussianSphericalHarmonics? + do { + packedSphericalHarmonics = try asset.sphericalHarmonics.map { + try packGaussianSphericalHarmonics($0, splatCount: asset.splats.count) + } + } catch { + handleError(.assetDataMissing, "Failed to pack spherical harmonics from \(sourceDescription): \(error.localizedDescription)") + return nil } + return buildGaussianLoadResult( encodedSplats: encodedSplats, packedSphericalHarmonics: packedSphericalHarmonics, @@ -3701,8 +3729,21 @@ public func setEntityGaussianProgressive( errorPrefix: "setEntityGaussianProgressive" ) else { return } - Task { - _ = await GeometryStreamingSystem.shared.loadInitialGaussianProgressiveTier(entityId: entityId) + // Store the load on the coarsest tier's loadTask, mirroring requestGaussianLODLevelLoad's + // pattern, so removeEntityGaussianLOD can cancel it if entityId is destroyed while this is + // still in flight. The assignment happens inside the same gate that spawns the Task: since + // the Task's own body needs this same lock to touch scene state, it can't run ahead and + // clear loadTask before this closure finishes assigning it. + withWorldMutationGate { + guard let lod = scene.get(component: GaussianLODComponent.self, for: entityId), + !lod.lodLevels.isEmpty + else { return } + + let coarsestIndex = lod.lodLevels.count - 1 + let task = Task { + _ = await GeometryStreamingSystem.shared.loadInitialGaussianProgressiveTier(entityId: entityId) + } + lod.lodLevels[coarsestIndex].loadTask = task } } @@ -4285,12 +4326,7 @@ func removeEntityLOD(entityId: EntityID) { func removeEntityGaussianLOD(entityId: EntityID) { if let lodComponent = scene.get(component: GaussianLODComponent.self, for: entityId) { - for index in lodComponent.lodLevels.indices { - lodComponent.lodLevels[index].loadTask?.cancel() - lodComponent.lodLevels[index].loadTask = nil - lodComponent.lodLevels[index].buffers = nil - lodComponent.lodLevels[index].residencyState = .notResident - } + lodComponent.releaseAllLevelResources() lodComponent.lodLevels.removeAll() scene.remove(component: GaussianLODComponent.self, from: entityId) } diff --git a/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift b/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift index 8e5ceb35..edc71a76 100644 --- a/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift +++ b/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift @@ -220,4 +220,38 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { XCTAssertEqual(lod.currentLOD, 0) XCTAssertEqual(scene.get(component: GaussianComponent.self, for: entity)?.splatCount, lod.lodLevels[0].buffers?.splatCount) } + + // MARK: - UntoldGSFormat corrupt-header handling + + func testReadThrowsInsteadOfTrappingOnOverflowingHeaderCounts() throws { + // Hand-crafted 48-byte header (magic "UTGS", version 1) declaring a splatCount of + // UInt64.max, which overflows when multiplied by EncodedGaussianSplat's stride to + // compute the expected encoded-splat byte count. Before the overflow-checked rewrite, + // the unchecked `Int(UInt64)`/`*` in UntoldGSFormat.read would trap the process on a + // file like this instead of throwing a catchable error. + var bytes: [UInt8] = [] + bytes += [0x55, 0x54, 0x47, 0x53] // magic "UTGS", little-endian + bytes += [1, 0, 0, 0] // version = 1 + bytes += [UInt8](repeating: 0xFF, count: 8) // splatCount = UInt64.max + bytes += [0, 0, 0, 0] // shDegree + bytes += [0, 0, 0, 0] // shCoefficientsPerChannel + bytes += [0, 0, 0, 0] // shHigherOrderCoefficientsPerSplat + bytes += [0, 0, 0, 0] // padding + bytes += [UInt8](repeating: 0, count: 8) // encodedByteCount + bytes += [UInt8](repeating: 0, count: 8) // shByteCount + XCTAssertEqual(bytes.count, 48) + + let url = FileManager.default.temporaryDirectory + .appendingPathComponent("UntoldGSFormat-overflow-\(UUID().uuidString)") + .appendingPathExtension("untoldgs") + try Data(bytes).write(to: url) + defer { try? FileManager.default.removeItem(at: url) } + + XCTAssertThrowsError(try UntoldGSFormat.read(from: url)) { error in + guard case UntoldGSError.sizeMismatch = error else { + XCTFail("Expected .sizeMismatch, got \(error)") + return + } + } + } } From 79cbe791f3d238e03d2be77ce49ff53800db1a39 Mon Sep 17 00:00:00 2001 From: Untold Engine Date: Fri, 21 Aug 2026 15:42:18 -0700 Subject: [PATCH 09/11] [Feature] Overdraw-aware Gaussian LOD selection --- Sources/UntoldEngine/ECS/Components.swift | 35 ++ .../Systems/GaussianLODSystem.swift | 174 +++++++- ...tryStreamingSystem+GaussianStreaming.swift | 15 + Sources/UntoldEngine/Systems/LODConfig.swift | 17 + .../Systems/RegistrationSystem.swift | 193 +++++++- .../GaussianProgressiveLODTest.swift | 418 +++++++++++++++++- .../UntoldEngineCLI/ExportCommand.swift | 16 +- 7 files changed, 822 insertions(+), 46 deletions(-) diff --git a/Sources/UntoldEngine/ECS/Components.swift b/Sources/UntoldEngine/ECS/Components.swift index beb86d31..95a979e3 100644 --- a/Sources/UntoldEngine/ECS/Components.swift +++ b/Sources/UntoldEngine/ECS/Components.swift @@ -493,6 +493,13 @@ public struct GaussianLODLevel { public var url: URL? public var residencyState: LODResidencyState = .unknown var loadTask: Task? + /// Bake-time mean of this tier's kept splats' squared major-axis extent — see + /// `estimatedGaussianOverdraw`. Baked into the `.untoldgs` file itself + /// (`UntoldGSFormat`/`bakeGaussianSplatProgressiveTiers`) and populated automatically by + /// `loadGaussianLODLevel` once this tier's file is actually read. `nil` only before that — + /// i.e. this tier hasn't loaded yet — in which case `clampGaussianLODForOverdraw` falls + /// back to distance-only LOD selection for it. + public var meanSquaredSplatExtent: Float? public init(maxDistance: Float, url: URL? = nil) { self.maxDistance = maxDistance @@ -517,6 +524,34 @@ public class GaussianLODComponent: Component { public var forcedLOD: Int? public var isUsingFallback: Bool = false + /// The LOD index pure distance+hysteresis selection last landed on, before the + /// overdraw-aware clamp is applied — see `GaussianLODSystem.selectDesiredLOD`. Kept + /// separate from `desiredLOD` (the final, possibly overdraw-forced-coarser target used for + /// residency/streaming/`applyLOD`) so an overdraw-forced tier doesn't retroactively bias + /// the hysteresis anchor `selectLODIndex` uses next frame — otherwise a frame where overdraw + /// forces LOD 3 would make LOD 3 "the tier we're logically at" for the *next* frame's + /// distance-only hysteresis math too, even though distance alone would have picked LOD 1. + var distanceSelectedLOD: Int = 0 + + /// Distance to camera the last time this entity's LOD was fully re-evaluated — see + /// `GaussianLODSystem.update`'s per-entity fast path, which forces a refresh when this + /// entity (not just the camera) has moved enough to plausibly cross a LOD threshold, + /// independent of the camera-movement/frame-interval throttle. `nil` forces an evaluation + /// the first time this entity is seen. + var lastEvaluatedDistance: Float? + + /// `true` when the caller explicitly supplied a `boundingBoxHalfExtent` (always the case + /// for the streaming path, optional for the non-streaming path). When `false`, + /// `loadGaussianLODLevel` auto-populates `LocalTransformComponent.boundingBox` from the + /// first (coarsest) tier's real splat data once it loads, instead of leaving the entity on + /// its default placeholder box forever. + var hasExplicitBoundingBox: Bool = false + + /// Last state GaussianLODSystem's diagnostic log reported for this entity — used only to + /// dedup consecutive identical log lines (log on change, not every evaluation). + var lastLoggedDesiredLOD: Int = -2 + var lastLoggedActualLOD: Int = -2 + public required init() {} public func isLODResident(_ lodIndex: Int) -> Bool { diff --git a/Sources/UntoldEngine/Systems/GaussianLODSystem.swift b/Sources/UntoldEngine/Systems/GaussianLODSystem.swift index 032b723d..14241bbd 100644 --- a/Sources/UntoldEngine/Systems/GaussianLODSystem.swift +++ b/Sources/UntoldEngine/Systems/GaussianLODSystem.swift @@ -34,36 +34,85 @@ public class GaussianLODSystem: @unchecked Sendable { else { return } let cameraPosition = SceneRootTransform.shared.effectiveCameraPosition(cameraComponent.localPosition) - guard lodShouldRunThisFrame( + + // This global check only catches camera movement — it decides whether to force *every* + // entity to re-evaluate this frame (the frame-interval throttle still applies per-entity + // below either way). An entity that itself moved (e.g. a splat prop being dragged while + // the camera stays put) is caught by updateEntityLOD's own per-entity displacement check, + // not by this one. + let forceFullReevaluation = lodShouldRunThisFrame( frameCounter: frameCounter, hasRunOnce: hasRunOnce, interval: LODConfig.shared.lodUpdateFrameInterval, cameraPosition: cameraPosition, lastCameraPosition: lastCameraPosition, displacementThreshold: LODConfig.shared.minimumCameraDisplacementForLODUpdate - ) else { return } + ) - hasRunOnce = true - lastCameraPosition = cameraPosition + // Only advance on a qualifying frame — lodShouldRunThisFrame's cumulative-displacement + // fast path needs lastCameraPosition to still reflect the last qualifying frame, not + // every frame, or slow continuous camera motion below the per-frame threshold could + // never accumulate enough to trip it. Mirrors the mesh LODSystem.update()'s guarded form. + if forceFullReevaluation { + hasRunOnce = true + lastCameraPosition = cameraPosition + } let lodId = getComponentId(for: GaussianLODComponent.self) let transformId = getComponentId(for: WorldTransformComponent.self) let entities = queryEntitiesWithComponentIds([lodId, transformId], in: scene) for entityId in entities { - updateEntityLOD(entityId: entityId, cameraPosition: cameraPosition) + updateEntityLOD(entityId: entityId, cameraPosition: cameraPosition, forceFullReevaluation: forceFullReevaluation) } } - private func updateEntityLOD(entityId: EntityID, cameraPosition: simd_float3) { + private func updateEntityLOD(entityId: EntityID, cameraPosition: simd_float3, forceFullReevaluation: Bool) { guard let lodComponent = scene.get(component: GaussianLODComponent.self, for: entityId), !lodComponent.lodLevels.isEmpty else { return } - let desiredLOD = selectDesiredLOD( - distance: entityDistanceToCamera(entityId: entityId, cameraPosition: cameraPosition), - lodComponent: lodComponent - ) + let distance = entityDistanceToCamera(entityId: entityId, cameraPosition: cameraPosition) + + // Cheap per-entity fast path: even when the global camera-driven throttle above says + // "skip this frame," still refresh if this specific entity's distance to the camera has + // moved enough to plausibly cross a LOD threshold — otherwise dragging a prop while the + // camera stays still could go unnoticed for up to lodUpdateFrameInterval frames, or + // (if the drag ends before a throttled frame lands) not be picked up at all until + // something else nudges the throttle. + let entityMoved: Bool + if let lastEvaluatedDistance = lodComponent.lastEvaluatedDistance { + entityMoved = abs(distance - lastEvaluatedDistance) > LODConfig.shared.minimumEntityDisplacementForLODUpdate + } else { + entityMoved = true + } + + guard forceFullReevaluation || entityMoved else { return } + lodComponent.lastEvaluatedDistance = distance + + let distanceSelectedLOD = selectDesiredLOD(distance: distance, lodComponent: lodComponent) + lodComponent.distanceSelectedLOD = distanceSelectedLOD + + var desiredLOD = distanceSelectedLOD + + if let localTransform = scene.get(component: LocalTransformComponent.self, for: entityId) { + let halfExtent = (localTransform.boundingBox.max - localTransform.boundingBox.min) * 0.5 + let boundingRadius = simd_length(halfExtent) + let tanHalfFovY = renderInfo.perspectiveSpace[1][1] > 0 ? 1.0 / renderInfo.perspectiveSpace[1][1] : 0 + let fovY = 2 * atan(tanHalfFovY) + let viewportHeight = renderInfo.viewPort?.y ?? 0 + + desiredLOD = clampGaussianLODForOverdraw( + desiredLOD: desiredLOD, + lodComponent: lodComponent, + distance: distance, + fovY: fovY, + viewportHeight: viewportHeight, + boundingRadius: boundingRadius, + budget: LODConfig.shared.gaussianOverdrawBudget + ) + } + lodComponent.desiredLOD = desiredLOD if !lodComponent.isLODResident(desiredLOD) { @@ -81,18 +130,40 @@ public class GaussianLODSystem: @unchecked Sendable { return } + if Logger.isEnabled(category: .gaussian), + desiredLOD != lodComponent.lastLoggedDesiredLOD || actualLOD != lodComponent.lastLoggedActualLOD + { + lodComponent.lastLoggedDesiredLOD = desiredLOD + lodComponent.lastLoggedActualLOD = actualLOD + Logger.log( + message: String( + format: "[Gaussian][LOD] entity=%llu distance=%.2f desiredLOD=%d actualLOD=%d currentLOD=%d fallback=%@ residency=%@", + entityId, + distance, + desiredLOD, + actualLOD, + lodComponent.currentLOD, + lodComponent.isUsingFallback ? "true" : "false", + lodComponent.lodLevels.map { "\($0.residencyState)" }.joined(separator: ",") + ), + category: LogCategory.gaussian.rawValue + ) + } + applyLOD(entityId: entityId, newLOD: actualLOD) } private func selectDesiredLOD(distance: Float, lodComponent: GaussianLODComponent) -> Int { - // lodComponent.desiredLOD still holds the previous frame's decision here — the caller - // overwrites it with this call's result right after — so passing it as currentLOD - // gives selectLODIndex the hysteresis reference point it needs, same as the mesh - // LODSystem.updateEntityLOD -> selectLODLevel call. + // lodComponent.distanceSelectedLOD still holds the previous frame's pure distance-based + // decision here — the caller overwrites it with this call's result right after — so + // passing it as currentLOD gives selectLODIndex the hysteresis reference point it + // needs, same as the mesh LODSystem.updateEntityLOD -> selectLODLevel call. Deliberately + // NOT lodComponent.desiredLOD: that field can hold an overdraw-forced-coarser value the + // hysteresis math was never designed to anchor on — see distanceSelectedLOD's doc comment. selectLODIndex( levels: lodComponent.lodLevels, distance: distance, - currentLOD: lodComponent.desiredLOD, + currentLOD: lodComponent.distanceSelectedLOD, forcedLOD: lodComponent.forcedLOD, lodBias: LODConfig.shared.lodBias, hysteresis: LODConfig.shared.hysteresis, @@ -128,6 +199,79 @@ public class GaussianLODSystem: @unchecked Sendable { } } +/// Estimated mean overdraw (blended fragments per pixel) across a Gaussian entity's screen +/// footprint, for one candidate LOD tier. Mirrors the perspective size-at-distance factor +/// `computeCov2D` (`Gaussians.metal`) derives from the projection matrix +/// (`focalY = viewport.y * projectionMatrix[1][1] * 0.5`), reused here CPU-side to turn a +/// tier's bake-time `meanSquaredSplatExtent` (see `GaussianLODTier`) into an estimate of how +/// many splats overlap per pixel — the actual GPU cost driver behind the engine's serial +/// per-pixel TBDR blend (`kGaussianMaxBlendedSplatsPerPixel`), which pure distance-based LOD +/// selection has no visibility into. +func estimatedGaussianOverdraw( + splatCount: Int, + meanSquaredSplatExtent: Float, + distance: Float, + fovY: Float, + viewportHeight: Float, + boundingRadius: Float +) -> Float { + guard splatCount > 0, distance > 0, boundingRadius > 0, viewportHeight > 0 else { return 0 } + let tanHalfFovY = tan(fovY * 0.5) + guard tanHalfFovY > 0 else { return 0 } + + let projectionScaleFactor = viewportHeight / (2 * tanHalfFovY * distance) + let projectedAreaPerSplat = projectionScaleFactor * projectionScaleFactor * meanSquaredSplatExtent + let footprintRadius = boundingRadius * projectionScaleFactor + let objectScreenFootprintArea = Float.pi * footprintRadius * footprintRadius + + guard objectScreenFootprintArea > 0 else { return 0 } + return (Float(splatCount) * projectedAreaPerSplat) / objectScreenFootprintArea +} + +/// Walks from `desiredLOD` (the distance/hysteresis-based choice from `selectDesiredLOD`) +/// toward coarser tiers (higher index, never finer) while `estimatedGaussianOverdraw` for the +/// candidate exceeds `budget`, using each candidate's bake-time `meanSquaredSplatExtent` and +/// its currently-known resident `splatCount`. Bails out and returns `desiredLOD` unchanged the +/// moment a candidate is missing either value — an un-baked `meanSquaredSplatExtent` or a +/// not-yet-resident tier (unknown splat count) — so entities without bake-time stats, or a +/// tier this walk reaches before it has ever loaded, fall back to pure distance-based +/// selection exactly as before this feature existed. +func clampGaussianLODForOverdraw( + desiredLOD: Int, + lodComponent: GaussianLODComponent, + distance: Float, + fovY: Float, + viewportHeight: Float, + boundingRadius: Float, + budget: Float +) -> Int { + guard desiredLOD >= 0, desiredLOD < lodComponent.lodLevels.count else { return desiredLOD } + + var candidate = desiredLOD + while candidate < lodComponent.lodLevels.count { + let level = lodComponent.lodLevels[candidate] + guard let meanSquaredSplatExtent = level.meanSquaredSplatExtent, + let splatCount = level.buffers?.splatCount + else { + return desiredLOD + } + + let overdraw = estimatedGaussianOverdraw( + splatCount: Int(splatCount), + meanSquaredSplatExtent: meanSquaredSplatExtent, + distance: distance, + fovY: fovY, + viewportHeight: viewportHeight, + boundingRadius: boundingRadius + ) + if overdraw <= budget { + return candidate + } + candidate += 1 + } + return lodComponent.lodLevels.count - 1 +} + func copyGaussianComponentBuffers(from source: GaussianComponent, to destination: GaussianComponent) { destination.splatCount = source.splatCount destination.visibleSplatCountForRendering = source.splatCount diff --git a/Sources/UntoldEngine/Systems/GeometryStreamingSystem+GaussianStreaming.swift b/Sources/UntoldEngine/Systems/GeometryStreamingSystem+GaussianStreaming.swift index a1952009..92523896 100644 --- a/Sources/UntoldEngine/Systems/GeometryStreamingSystem+GaussianStreaming.swift +++ b/Sources/UntoldEngine/Systems/GeometryStreamingSystem+GaussianStreaming.swift @@ -197,8 +197,23 @@ extension GeometryStreamingSystem { lod.lodLevels[lodIndex].buffers = built.component lod.lodLevels[lodIndex].residencyState = .resident lod.lodLevels[lodIndex].loadTask = nil + // Baked into the .untoldgs file itself (see UntoldGSFormat) — no caller-supplied + // value needed, and it can't drift out of sync with the tier it describes. + lod.lodLevels[lodIndex].meanSquaredSplatExtent = built.meanSquaredSplatExtent if makeCurrent { + // The entity's very first tier to ever load — if the caller didn't supply a + // real box up front (setEntityGaussianProgressive's boundingBoxHalfExtent is + // optional; setEntityGaussianProgressiveStreamable's is required and already + // marks hasExplicitBoundingBox, so this never overwrites it), auto-populate one + // from this tier's actual splat data instead of leaving the entity on its + // default placeholder box forever. + if !lod.hasExplicitBoundingBox, + let local = scene.get(component: LocalTransformComponent.self, for: entityId) + { + local.boundingBox = built.boundingBox + } + // Reuse the entity's existing GaussianComponent if it already has one — scene.assign // unconditionally re-initializes the component slot, which would drop the previous // instance (and every Metal buffer it retained) without releasing it. diff --git a/Sources/UntoldEngine/Systems/LODConfig.swift b/Sources/UntoldEngine/Systems/LODConfig.swift index 6ec151fe..ede66199 100644 --- a/Sources/UntoldEngine/Systems/LODConfig.swift +++ b/Sources/UntoldEngine/Systems/LODConfig.swift @@ -65,4 +65,21 @@ public struct LODConfig { /// Camera must move at least this many world units since the last LOD update /// before a new update is forced ahead of the frame-interval throttle. public var minimumCameraDisplacementForLODUpdate: Float = 0.5 + + /// An entity's distance-to-camera must change by at least this many world units since its + /// own last LOD evaluation before a refresh is forced ahead of the frame-interval throttle + /// — mirrors `minimumCameraDisplacementForLODUpdate` but for the target moving instead of + /// the camera (e.g. dragging a Gaussian splat prop while the camera stays put, which the + /// camera-only fast path can't see). + public var minimumEntityDisplacementForLODUpdate: Float = 0.5 + + /// Ceiling on `estimatedGaussianOverdraw` (mean blended fragments per pixel across a + /// Gaussian entity's screen footprint) before `GaussianLODSystem` forces a coarser tier + /// than pure distance-based selection would pick. This is a starting guess, not a derived + /// constant — the engine's serial TBDR blend caps at `kGaussianMaxBlendedSplatsPerPixel` + /// (64) per pixel, but sustained GPU frame-time overrun (the actual failure mode this + /// guards against) was observed well below that cap. Tune on-device by watching GPU frame + /// time while varying this value; only takes effect for LOD levels with a non-nil + /// `GaussianLODLevel.meanSquaredSplatExtent` supplied. + public var gaussianOverdrawBudget: Float = 12.0 } diff --git a/Sources/UntoldEngine/Systems/RegistrationSystem.swift b/Sources/UntoldEngine/Systems/RegistrationSystem.swift index bcd5311f..c37648d8 100644 --- a/Sources/UntoldEngine/Systems/RegistrationSystem.swift +++ b/Sources/UntoldEngine/Systems/RegistrationSystem.swift @@ -3220,6 +3220,9 @@ struct GaussianLoadResult { let spaceUniform: [MTLBuffer?] /// Sum of all GPU buffer bytes above, for `MemoryBudgetManager` registration. let estimatedGPUBytes: Int + /// Local-space bounding box computed from the actual loaded splat positions, for + /// `LocalTransformComponent.boundingBox` — see `computeGaussianSplatBoundingBox`. + let boundingBox: (min: simd_float3, max: simd_float3) } public enum UntoldGSError: Error, CustomStringConvertible { @@ -3242,6 +3245,11 @@ public struct UntoldGSAsset { public let encodedSplats: [EncodedGaussianSplat] public let shCoefficients: [UInt8] public let shMetadata: GaussianSHMetadata? + /// Mean of this tier's splats' squared major-axis extent, baked in by + /// `bakeGaussianSplatProgressiveTiers` — see `estimatedGaussianOverdraw`. 0 for files + /// baked before this field existed (indistinguishable from a real 0, but a real 0 can only + /// happen for a tier with no splats, which never gets written). + public let meanSquaredSplatExtent: Float public var splatCount: Int { encodedSplats.count } } @@ -3254,6 +3262,7 @@ public enum UntoldGSFormat { public static func write( encodedSplats: [EncodedGaussianSplat], sphericalHarmonics: PackedGaussianSphericalHarmonics?, + meanSquaredSplatExtent: Float = 0, to url: URL ) throws { var data = Data() @@ -3263,7 +3272,7 @@ public enum UntoldGSFormat { appendUInt32(sphericalHarmonics?.metadata.degree ?? 0, to: &data) appendUInt32(sphericalHarmonics?.metadata.coefficientsPerChannel ?? 0, to: &data) appendUInt32(sphericalHarmonics?.metadata.higherOrderCoefficientsPerSplat ?? 0, to: &data) - appendUInt32(0, to: &data) + appendFloat(meanSquaredSplatExtent, to: &data) appendUInt64(UInt64(encodedSplats.count * MemoryLayout.stride), to: &data) appendUInt64(UInt64(sphericalHarmonics?.coefficients.count ?? 0), to: &data) @@ -3292,6 +3301,7 @@ public enum UntoldGSFormat { let shDegree = readUInt32(data, at: 16) let shCoefficientsPerChannel = readUInt32(data, at: 20) let shHigherOrderPerSplat = readUInt32(data, at: 24) + let meanSquaredSplatExtent = readFloat(data, at: 28) let encodedByteCountRaw = readUInt64(data, at: 32) let shByteCountRaw = readUInt64(data, at: 40) @@ -3340,7 +3350,8 @@ public enum UntoldGSFormat { return UntoldGSAsset( encodedSplats: encodedSplats, shCoefficients: shCoefficients, - shMetadata: shMetadata + shMetadata: shMetadata, + meanSquaredSplatExtent: meanSquaredSplatExtent ) } @@ -3349,6 +3360,14 @@ public enum UntoldGSFormat { withUnsafeBytes(of: &littleEndian) { data.append(contentsOf: $0) } } + private static func appendFloat(_ value: Float, to data: inout Data) { + appendUInt32(value.bitPattern, to: &data) + } + + private static func readFloat(_ data: Data, at offset: Int) -> Float { + Float(bitPattern: readUInt32(data, at: offset)) + } + private static func appendUInt64(_ value: UInt64, to data: inout Data) { var littleEndian = value.littleEndian withUnsafeBytes(of: &littleEndian) { data.append(contentsOf: $0) } @@ -3372,6 +3391,7 @@ public enum UntoldGSFormat { func buildGaussianLoadResult( encodedSplats: [EncodedGaussianSplat], packedSphericalHarmonics: PackedGaussianSphericalHarmonics?, + meanSquaredSplatExtent: Float = 0, sourceDescription: String ) -> GaussianLoadResult? { guard encodedSplats.count <= Int(maxNumOfGaussians) else { @@ -3490,10 +3510,52 @@ func buildGaussianLoadResult( sphericalHarmonicsBuffer: sphericalHarmonicsBuffer, sphericalHarmonicsMetadata: packedSphericalHarmonics?.metadata, spaceUniform: spaceUniform, - estimatedGPUBytes: estimatedGPUBytes + estimatedGPUBytes: estimatedGPUBytes, + // Splat centers alone under-size the true silhouette wherever a large-scale splat sits + // near the edge — pad uniformly by an approximate per-splat radius derived from the + // tier's mean squared extent (sqrt of the mean of major-axis², i.e. an RMS radius), + // since only splat centers/positions (not per-splat scale) are available post-encode. + boundingBox: computeGaussianSplatPositionBoundingBox( + encodedSplats.map(\.position), + padding: meanSquaredSplatExtent > 0 ? sqrt(meanSquaredSplatExtent) : 0 + ) ) } +/// Min/max bounding box over a set of local-space splat positions, expanded by `padding` in +/// every direction (see call site doc for why: splat centers alone under-size the true +/// silhouette). Mirrors `Mesh.computeMeshBoundingBox`'s shape/purpose for the mesh path. +func computeGaussianSplatPositionBoundingBox(_ positions: [simd_float3], padding: Float = 0) -> (min: simd_float3, max: simd_float3) { + guard !positions.isEmpty else { return (min: .zero, max: .zero) } + var boundsMin = simd_float3(repeating: .infinity) + var boundsMax = simd_float3(repeating: -.infinity) + for position in positions { + boundsMin = simd_min(boundsMin, position) + boundsMax = simd_max(boundsMax, position) + } + let paddingVector = simd_float3(repeating: padding) + return (min: boundsMin - paddingVector, max: boundsMax + paddingVector) +} + +/// Min/max bounding box over a set of source `GaussianSplat`s (bake-time, pre-encode form), +/// expanded per-splat by its own major-axis extent (`gaussianMajorAxis`) rather than just its +/// center — a splat whose center sits near the silhouette boundary but has a large individual +/// scale visually extends past a centers-only box. Used for the asset-level box in +/// `bakeGaussianSplatProgressiveTiers`, where the position hasn't been encoded into +/// `EncodedGaussianSplat` yet and real per-splat scale is still available. +func computeGaussianSplatBoundingBox(_ splats: [GaussianSplat]) -> (min: simd_float3, max: simd_float3) { + guard !splats.isEmpty else { return (min: .zero, max: .zero) } + var boundsMin = simd_float3(repeating: .infinity) + var boundsMax = simd_float3(repeating: -.infinity) + for splat in splats { + let center = simd_float3(splat.center.x, splat.center.y, splat.center.z) + let radius = simd_float3(repeating: gaussianMajorAxis(splat)) + boundsMin = simd_min(boundsMin, center - radius) + boundsMax = simd_max(boundsMax, center + radius) + } + return (min: boundsMin, max: boundsMax) +} + /// Reads a `.ply` Gaussian splat asset from disk and builds its GPU buffers. /// Returns `nil` on any failure, calling `handleError` internally — callers just guard-return. private func buildGaussianLoadResult(filename: String, withExtension: String) -> GaussianLoadResult? { @@ -3530,11 +3592,17 @@ func buildGaussianLoadResultFromPLY(url: URL, sourceDescription: String) throws return buildGaussianLoadResult( encodedSplats: encodedSplats, packedSphericalHarmonics: packedSphericalHarmonics, + meanSquaredSplatExtent: meanSquaredSplatExtent(asset.splats, keeping: Array(asset.splats.indices)), sourceDescription: sourceDescription ) } -func buildGaussianComponentFromUntoldGS(url: URL) -> (component: GaussianComponent, estimatedGPUBytes: Int)? { +func buildGaussianComponentFromUntoldGS(url: URL) -> ( + component: GaussianComponent, + estimatedGPUBytes: Int, + meanSquaredSplatExtent: Float, + boundingBox: (min: simd_float3, max: simd_float3) +)? { let asset: UntoldGSAsset do { asset = try UntoldGSFormat.read(from: url) @@ -3550,6 +3618,7 @@ func buildGaussianComponentFromUntoldGS(url: URL) -> (component: GaussianCompone guard let result = buildGaussianLoadResult( encodedSplats: asset.encodedSplats, packedSphericalHarmonics: packedSphericalHarmonics, + meanSquaredSplatExtent: asset.meanSquaredSplatExtent, sourceDescription: url.lastPathComponent ) else { return nil @@ -3557,7 +3626,7 @@ func buildGaussianComponentFromUntoldGS(url: URL) -> (component: GaussianCompone let component = GaussianComponent() copyGaussianLoadResult(result, to: component) - return (component, result.estimatedGPUBytes) + return (component, result.estimatedGPUBytes, asset.meanSquaredSplatExtent, result.boundingBox) } /// Registers `GaussianComponent` on `entityId` from a built `GaussianLoadResult` and records @@ -3573,6 +3642,10 @@ private func applyGaussianLoadResult(_ result: GaussianLoadResult, to entityId: copyGaussianLoadResult(result, to: gaussianComponent) MemoryBudgetManager.shared.registerMesh(entityId: entityId, meshSizeBytes: result.estimatedGPUBytes) + + if let localTransform = scene.get(component: LocalTransformComponent.self, for: entityId) { + localTransform.boundingBox = result.boundingBox + } } func copyGaussianLoadResult(_ result: GaussianLoadResult, to gaussianComponent: GaussianComponent) { @@ -3590,7 +3663,19 @@ func copyGaussianLoadResult(_ result: GaussianLoadResult, to gaussianComponent: public enum GaussianSource { case single(filename: String, withExtension: String) - case progressive(baseFilename: String, withExtension: String = "untoldgs", levelCount: Int, maxDistances: [Float]) + /// `boundingBoxHalfExtent` is only used by `setEntityGaussian(source:)` (the non-streaming + /// path, which can also auto-compute a box on its own); `setEntityGaussianStreaming(source: + /// options:)` ignores it since streaming always requires a real box up front via + /// `GaussianStreamingOptions`. Overdraw-aware LOD stats (`meanSquaredSplatExtent`) are + /// baked directly into each `.untoldgs` tier by `bakeGaussianSplatProgressiveTiers` and + /// read automatically when a tier loads — nothing to pass here. + case progressive( + baseFilename: String, + withExtension: String = "untoldgs", + levelCount: Int, + maxDistances: [Float], + boundingBoxHalfExtent: simd_float3? = nil + ) } public typealias GaussianStreamingSource = GaussianSource @@ -3613,13 +3698,14 @@ public func setEntityGaussian(entityId: EntityID, source: GaussianSource) { switch source { case let .single(filename, ext): setEntityGaussian(entityId: entityId, filename: filename, withExtension: ext) - case let .progressive(baseFilename, ext, levelCount, maxDistances): + case let .progressive(baseFilename, ext, levelCount, maxDistances, boundingBoxHalfExtent): setEntityGaussianProgressive( entityId: entityId, baseFilename: baseFilename, withExtension: ext, levelCount: levelCount, - maxDistances: maxDistances + maxDistances: maxDistances, + boundingBoxHalfExtent: boundingBoxHalfExtent ) } } @@ -3693,7 +3779,7 @@ public func setEntityGaussianStreaming( boundingBoxHalfExtent: options.boundingBoxHalfExtent, priority: options.priority ) - case let .progressive(baseFilename, ext, levelCount, maxDistances): + case let .progressive(baseFilename, ext, levelCount, maxDistances, _): setEntityGaussianProgressiveStreamable( entityId: entityId, baseFilename: baseFilename, @@ -3718,7 +3804,8 @@ public func setEntityGaussianProgressive( baseFilename: String, withExtension ext: String = "untoldgs", levelCount: Int, - maxDistances: [Float] + maxDistances: [Float], + boundingBoxHalfExtent: simd_float3? = nil ) { guard configureEntityGaussianProgressiveLOD( entityId: entityId, @@ -3729,6 +3816,11 @@ public func setEntityGaussianProgressive( errorPrefix: "setEntityGaussianProgressive" ) else { return } + if let boundingBoxHalfExtent, let local = scene.get(component: LocalTransformComponent.self, for: entityId) { + local.boundingBox = (min: -boundingBoxHalfExtent, max: boundingBoxHalfExtent) + scene.get(component: GaussianLODComponent.self, for: entityId)?.hasExplicitBoundingBox = true + } + // Store the load on the coarsest tier's loadTask, mirroring requestGaussianLODLevelLoad's // pattern, so removeEntityGaussianLOD can cancel it if entityId is destroyed while this is // still in flight. The assignment happens inside the same gate that spawns the Task: since @@ -3835,6 +3927,10 @@ public func setEntityGaussianProgressiveStreamable( errorPrefix: "setEntityGaussianProgressiveStreamable" ) else { return } + // boundingBoxHalfExtent is required (non-optional) here and already applied above — mark + // it explicit so loadGaussianLODLevel never overwrites it with an auto-computed one. + scene.get(component: GaussianLODComponent.self, for: entityId)?.hasExplicitBoundingBox = true + if let streaming = scene.assign(to: entityId, component: StreamingComponent.self) { streaming.assetKind = .gaussianSplat streaming.assetFilename = baseFilename @@ -3870,6 +3966,8 @@ private func configureEntityGaussianProgressiveLOD( handleError(.filenameNotFound, filename) return false } + // meanSquaredSplatExtent is populated automatically by loadGaussianLODLevel when this + // tier's .untoldgs file is actually read — it's baked into the file, not caller-supplied. levels.append(GaussianLODLevel(maxDistance: maxDistances[index], url: url)) } @@ -3883,8 +3981,15 @@ private func configureEntityGaussianProgressiveLOD( return true } +/// Largest per-axis scale magnitude of a splat, used both as the size term in +/// `gaussianImportanceScore` and, aggregated across a tier, as +/// `GaussianLODTier.meanSquaredSplatExtent` for overdraw estimation. +func gaussianMajorAxis(_ splat: GaussianSplat) -> Float { + max(abs(splat.scale.x), max(abs(splat.scale.y), abs(splat.scale.z))) +} + private func gaussianImportanceScore(_ splat: GaussianSplat) -> Float { - let majorAxis = max(abs(splat.scale.x), max(abs(splat.scale.y), abs(splat.scale.z))) + let majorAxis = gaussianMajorAxis(splat) return splat.opacity * majorAxis * majorAxis } @@ -4023,37 +4128,73 @@ private func subsetSphericalHarmonics( ) } +/// One baked `.untoldgs` tier plus the bake-time statistic needed for overdraw estimation — +/// see `estimatedGaussianOverdraw`. +public struct GaussianLODTier { + public let url: URL + public let meanSquaredSplatExtent: Float +} + +/// Result of `bakeGaussianSplatProgressiveTiers`: the baked tiers plus a single asset-level +/// bounding box (from the full, unsubsetted source splats) shared by all tiers so it stays +/// stable across LOD switches. +public struct GaussianProgressiveBakeResult { + public let tiers: [GaussianLODTier] + public let boundingBoxMin: simd_float3 + public let boundingBoxMax: simd_float3 +} + +private func meanSquaredSplatExtent(_ splats: [GaussianSplat], keeping indices: [Int]) -> Float { + guard !indices.isEmpty else { return 0 } + let sumOfSquares = indices.reduce(Float(0)) { partial, index in + let majorAxis = gaussianMajorAxis(splats[index]) + return partial + majorAxis * majorAxis + } + return sumOfSquares / Float(indices.count) +} + /// Bakes progressive `.untoldgs` Gaussian tiers from a source `.ply`. /// /// `lodFractions` are ordered finest to coarsest. With `[1.0, 0.5, 0.25]`, output files are /// `_lod0.untoldgs`, `_lod1.untoldgs`, and `_lod2.untoldgs`. +/// +/// Throws `UntoldGSError.sizeMismatch` if `plyURL` contains no splats, regardless of +/// `lodFractions` — including the single-tier (`[1.0]`) case, which needs the same guard since +/// it now also computes an asset-level bounding box that's meaningless for zero splats. public func bakeGaussianSplatProgressiveTiers( plyURL: URL, outputBaseURL: URL, lodFractions: [Float] -) throws -> [URL] { +) throws -> GaussianProgressiveBakeResult { guard !lodFractions.isEmpty else { throw UntoldGSError.sizeMismatch("lodFractions must contain at least one entry") } + let asset = try PLYReader.readGaussianAsset(from: plyURL) + guard !asset.splats.isEmpty else { + throw UntoldGSError.sizeMismatch("source .ply contains no splats") + } + let assetBoundingBox = computeGaussianSplatBoundingBox(asset.splats) + if lodFractions == [1.0] { let resultURL = outputBaseURL - let asset = try PLYReader.readGaussianAsset(from: plyURL) + let allIndices = Array(asset.splats.indices) let encodedSplats = asset.splats.map(encodeGaussianSplatForTBDR) let packedSphericalHarmonics = try asset.sphericalHarmonics.map { try packGaussianSphericalHarmonics($0, splatCount: asset.splats.count) } + let tierExtent = meanSquaredSplatExtent(asset.splats, keeping: allIndices) try UntoldGSFormat.write( encodedSplats: encodedSplats, sphericalHarmonics: packedSphericalHarmonics, + meanSquaredSplatExtent: tierExtent, to: resultURL ) - return [resultURL] - } - - let asset = try PLYReader.readGaussianAsset(from: plyURL) - guard !asset.splats.isEmpty else { - throw UntoldGSError.sizeMismatch("source .ply contains no splats") + return GaussianProgressiveBakeResult( + tiers: [GaussianLODTier(url: resultURL, meanSquaredSplatExtent: tierExtent)], + boundingBoxMin: assetBoundingBox.min, + boundingBoxMax: assetBoundingBox.max + ) } let rankedIndices = spatiallyInterleavedGaussianRanking(asset.splats) @@ -4062,7 +4203,7 @@ public func bakeGaussianSplatProgressiveTiers( let baseName = baseWithoutExtension.lastPathComponent let baseDirectory = baseWithoutExtension.deletingLastPathComponent() - var outputURLs: [URL] = [] + var tiers: [GaussianLODTier] = [] for (tierIndex, fraction) in lodFractions.enumerated() { let clampedFraction = min(max(fraction, 0), 1) let keepCount = max(1, Int((Float(asset.splats.count) * clampedFraction).rounded(.up))) @@ -4077,21 +4218,27 @@ public func bakeGaussianSplatProgressiveTiers( let tierURL = baseDirectory .appendingPathComponent("\(baseName)_lod\(tierIndex)") .appendingPathExtension("untoldgs") + let tierExtent = meanSquaredSplatExtent(asset.splats, keeping: keptIndices) try UntoldGSFormat.write( encodedSplats: encodedSplats, sphericalHarmonics: packedSphericalHarmonics, + meanSquaredSplatExtent: tierExtent, to: tierURL ) - outputURLs.append(tierURL) + tiers.append(GaussianLODTier(url: tierURL, meanSquaredSplatExtent: tierExtent)) } - return outputURLs + return GaussianProgressiveBakeResult( + tiers: tiers, + boundingBoxMin: assetBoundingBox.min, + boundingBoxMax: assetBoundingBox.max + ) } public func bakeGaussianSplatProgressiveTiers( plyURL: URL, outputBaseURL: URL, levelCount: Int -) throws -> [URL] { +) throws -> GaussianProgressiveBakeResult { guard levelCount > 0 else { throw UntoldGSError.sizeMismatch("levelCount must be at least 1, got \(levelCount)") } diff --git a/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift b/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift index edc71a76..32e773de 100644 --- a/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift +++ b/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift @@ -8,6 +8,7 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. +import CShaderTypes import simd @testable import UntoldEngine import XCTest @@ -15,10 +16,18 @@ import XCTest @MainActor final class GaussianProgressiveLODTest: BaseRenderSetup { private var savedLODUpdateFrameInterval = 1 + private var savedMinimumEntityDisplacementForLODUpdate: Float = 0.5 + private var savedMinimumCameraDisplacementForLODUpdate: Float = 0.5 + private var savedGaussianOverdrawBudget: Float = 12.0 + private var savedHysteresis: Float = 5.0 override func setUp() async throws { try await super.setUp() savedLODUpdateFrameInterval = LODConfig.shared.lodUpdateFrameInterval + savedMinimumEntityDisplacementForLODUpdate = LODConfig.shared.minimumEntityDisplacementForLODUpdate + savedMinimumCameraDisplacementForLODUpdate = LODConfig.shared.minimumCameraDisplacementForLODUpdate + savedGaussianOverdrawBudget = LODConfig.shared.gaussianOverdrawBudget + savedHysteresis = LODConfig.shared.hysteresis LODConfig.shared.lodUpdateFrameInterval = 1 GeometryStreamingSystem.shared.reset() GeometryStreamingSystem.shared.enabled = true @@ -35,6 +44,10 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { GeometryStreamingSystem.shared.updateInterval = 0.1 GeometryStreamingSystem.shared.enableFrustumGate = true LODConfig.shared.lodUpdateFrameInterval = savedLODUpdateFrameInterval + LODConfig.shared.minimumEntityDisplacementForLODUpdate = savedMinimumEntityDisplacementForLODUpdate + LODConfig.shared.minimumCameraDisplacementForLODUpdate = savedMinimumCameraDisplacementForLODUpdate + LODConfig.shared.gaussianOverdrawBudget = savedGaussianOverdrawBudget + LODConfig.shared.hysteresis = savedHysteresis MemoryBudgetManager.shared.clear() GaussianLODSystem.shared.reset() try await super.tearDown() @@ -73,13 +86,13 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { let output = FileManager.default.temporaryDirectory .appendingPathComponent("GaussianProgressiveBake-\(UUID().uuidString)") .appendingPathExtension("untoldgs") - let urls = try bakeGaussianSplatProgressiveTiers( + let bakeResult = try bakeGaussianSplatProgressiveTiers( plyURL: try testPLYURL(), outputBaseURL: output, levelCount: 3 ) - let tiers = try urls.map { try UntoldGSFormat.read(from: $0) } + let tiers = try bakeResult.tiers.map { try UntoldGSFormat.read(from: $0.url) } XCTAssertEqual(tiers.count, 3) XCTAssertGreaterThan(tiers[0].splatCount, tiers[1].splatCount) XCTAssertGreaterThan(tiers[1].splatCount, tiers[2].splatCount) @@ -123,12 +136,12 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { ] try lines.joined(separator: "\n").write(to: ply, atomically: true, encoding: .utf8) - let urls = try bakeGaussianSplatProgressiveTiers( + let bakeResult = try bakeGaussianSplatProgressiveTiers( plyURL: ply, outputBaseURL: output, lodFractions: [1.0, 0.25] ) - let coarse = try UntoldGSFormat.read(from: urls[1]) + let coarse = try UntoldGSFormat.read(from: bakeResult.tiers[1].url) XCTAssertEqual(coarse.splatCount, 2) let xs = coarse.encodedSplats.map { $0.position.x } @@ -221,6 +234,401 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { XCTAssertEqual(scene.get(component: GaussianComponent.self, for: entity)?.splatCount, lod.lodLevels[0].buffers?.splatCount) } + func testBakeProgressiveTiersReturnsAssetLevelBoundingBox() throws { + let asset = try PLYReader.readGaussianAsset(from: try testPLYURL()) + let expected = computeGaussianSplatBoundingBox(asset.splats) + + let output = FileManager.default.temporaryDirectory + .appendingPathComponent("GaussianBakeBoundingBox-\(UUID().uuidString)") + .appendingPathExtension("untoldgs") + let bakeResult = try bakeGaussianSplatProgressiveTiers( + plyURL: try testPLYURL(), + outputBaseURL: output, + levelCount: 3 + ) + + // The box must reflect the full source asset, not just the coarsest (most-subsetted) tier. + XCTAssertEqual(bakeResult.boundingBoxMin, expected.min) + XCTAssertEqual(bakeResult.boundingBoxMax, expected.max) + } + + func testSetEntityGaussianAutoComputesBoundingBox() throws { + // setEntityGaussian's auto-computed box goes through buildGaussianLoadResult, which + // only has post-encode splat positions (no per-splat scale) -- it pads a centers-only + // box by an RMS radius derived from the mean squared extent, rather than the exact + // per-splat expansion computeGaussianSplatBoundingBox(_ splats:) does at bake time. + let asset = try PLYReader.readGaussianAsset(from: try testPLYURL()) + let allIndices = Array(asset.splats.indices) + let positions = asset.splats.map { simd_float3($0.center.x, $0.center.y, $0.center.z) } + let extentSum = allIndices.reduce(Float(0)) { partial, index in + let majorAxis = gaussianMajorAxis(asset.splats[index]) + return partial + majorAxis * majorAxis + } + let meanSquaredExtent = extentSum / Float(allIndices.count) + let expected = computeGaussianSplatPositionBoundingBox(positions, padding: sqrt(meanSquaredExtent)) + + let entity = createEntity() + setEntityGaussian(entityId: entity, filename: "test_gaussians", withExtension: "ply") + + let boundingBox = try XCTUnwrap(scene.get(component: LocalTransformComponent.self, for: entity)?.boundingBox) + XCTAssertNotEqual(boundingBox.min, boundingBox.max, "Bounding box should not collapse to a single point") + XCTAssertEqual(boundingBox.min, expected.min) + XCTAssertEqual(boundingBox.max, expected.max) + } + + func testMeanSquaredSplatExtentRoundTripsThroughUntoldGSFile() throws { + let output = FileManager.default.temporaryDirectory + .appendingPathComponent("GaussianMeanSquaredExtentRoundTrip-\(UUID().uuidString)") + .appendingPathExtension("untoldgs") + let bakeResult = try bakeGaussianSplatProgressiveTiers( + plyURL: try testPLYURL(), + outputBaseURL: output, + levelCount: 3 + ) + + for tier in bakeResult.tiers { + let readBack = try UntoldGSFormat.read(from: tier.url) + XCTAssertGreaterThan(tier.meanSquaredSplatExtent, 0, "bake-time stat should be a real, non-degenerate value for a real asset") + XCTAssertEqual(readBack.meanSquaredSplatExtent, tier.meanSquaredSplatExtent, "the value baked into the file must match what bakeGaussianSplatProgressiveTiers reported") + } + } + + func testProgressiveTierAutoPopulatesMeanSquaredSplatExtentOnLoad() async throws { + let base = try bakeProgressiveBase(levelCount: 3) + + let entity = createEntity() + translateTo(entityId: entity, position: .zero) + setEntityGaussianProgressive( + entityId: entity, + baseFilename: base, + levelCount: 3, + maxDistances: [20, 50, .greatestFiniteMagnitude] + ) + + let lod = try XCTUnwrap(scene.get(component: GaussianLODComponent.self, for: entity)) + + // Nothing was passed by the caller -- before the coarsest tier's async load completes, + // its stat is unknown. + XCTAssertNil(lod.lodLevels[2].meanSquaredSplatExtent) + + for _ in 0 ..< 20 where lod.currentLOD != 2 { + try await Task.sleep(nanoseconds: 10_000_000) + } + + // Auto-populated from the .untoldgs file itself once it's actually read -- no caller + // input required. + let loadedExtent = try XCTUnwrap(lod.lodLevels[2].meanSquaredSplatExtent) + XCTAssertGreaterThan(loadedExtent, 0) + } + + // MARK: - Overdraw-aware LOD clamping + + func testEstimatedGaussianOverdrawMatchesHandComputedFormula() { + // distance=10, fovY=90deg (tanHalfFovY=1), viewportHeight=1000 -> + // projectionScaleFactor = 1000 / (2 * 1 * 10) = 50 + let overdraw = estimatedGaussianOverdraw( + splatCount: 100, + meanSquaredSplatExtent: 0.04, + distance: 10, + fovY: .pi / 2, + viewportHeight: 1000, + boundingRadius: 2 + ) + // projectedAreaPerSplat = 50^2 * 0.04 = 100 + // footprintRadius = 2 * 50 = 100 -> area = pi * 100^2 = pi * 10000 + // overdraw = (100 * 100) / (pi * 10000) = 10000 / (pi * 10000) = 1/pi + XCTAssertEqual(overdraw, 1 / Float.pi, accuracy: 0.0001) + } + + func testEstimatedGaussianOverdrawIsZeroForDegenerateInputs() { + XCTAssertEqual(estimatedGaussianOverdraw(splatCount: 0, meanSquaredSplatExtent: 1, distance: 10, fovY: 1, viewportHeight: 1000, boundingRadius: 1), 0) + XCTAssertEqual(estimatedGaussianOverdraw(splatCount: 100, meanSquaredSplatExtent: 1, distance: 0, fovY: 1, viewportHeight: 1000, boundingRadius: 1), 0) + XCTAssertEqual(estimatedGaussianOverdraw(splatCount: 100, meanSquaredSplatExtent: 1, distance: 10, fovY: 1, viewportHeight: 1000, boundingRadius: 0), 0) + } + + func testClampGaussianLODForOverdrawWalksToCoarserTierWhenOverBudget() { + let lodComponent = GaussianLODComponent() + var level0 = GaussianLODLevel(maxDistance: 20) + level0.meanSquaredSplatExtent = 1.0 + level0.buffers = GaussianComponent() + level0.buffers?.splatCount = 1_000_000 // deliberately huge -> massive overdraw at any sane distance + + var level1 = GaussianLODLevel(maxDistance: 50) + level1.meanSquaredSplatExtent = 0.0001 + level1.buffers = GaussianComponent() + level1.buffers?.splatCount = 10 // tiny -> comfortably under budget + + lodComponent.lodLevels = [level0, level1] + + let clamped = clampGaussianLODForOverdraw( + desiredLOD: 0, + lodComponent: lodComponent, + distance: 10, + fovY: .pi / 2, + viewportHeight: 1000, + boundingRadius: 2, + budget: 12.0 + ) + XCTAssertEqual(clamped, 1) + } + + func testClampGaussianLODForOverdrawIsNoOpWithoutBakedStats() { + let lodComponent = GaussianLODComponent() + var level0 = GaussianLODLevel(maxDistance: 20) + level0.buffers = GaussianComponent() + level0.buffers?.splatCount = 1_000_000 // huge, but no meanSquaredSplatExtent supplied + + lodComponent.lodLevels = [level0] + + let clamped = clampGaussianLODForOverdraw( + desiredLOD: 0, + lodComponent: lodComponent, + distance: 10, + fovY: .pi / 2, + viewportHeight: 1000, + boundingRadius: 2, + budget: 12.0 + ) + XCTAssertEqual(clamped, 0, "Without a baked meanSquaredSplatExtent, selection must fall back to the distance-based choice unchanged") + } + + func testClampGaussianLODForOverdrawStopsAtCoarsestTierWhenStillOverBudget() { + let lodComponent = GaussianLODComponent() + var level0 = GaussianLODLevel(maxDistance: 20) + level0.meanSquaredSplatExtent = 1.0 + level0.buffers = GaussianComponent() + level0.buffers?.splatCount = 1_000_000 + + var level1 = GaussianLODLevel(maxDistance: 50) + level1.meanSquaredSplatExtent = 1.0 + level1.buffers = GaussianComponent() + level1.buffers?.splatCount = 1_000_000 // still huge -> still over budget + + lodComponent.lodLevels = [level0, level1] + + let clamped = clampGaussianLODForOverdraw( + desiredLOD: 0, + lodComponent: lodComponent, + distance: 10, + fovY: .pi / 2, + viewportHeight: 1000, + boundingRadius: 2, + budget: 12.0 + ) + XCTAssertEqual(clamped, 1, "Should clamp to the coarsest available tier even if it's still over budget") + } + + func testDraggingEntityForcesLODRefreshEvenWhenCameraIsStationary() async throws { + LODConfig.shared.lodUpdateFrameInterval = 4 // matches the real production default + + let base = try bakeProgressiveBase(levelCount: 3) + + let entity = createEntity() + translateTo(entityId: entity, position: simd_float3(0, 0, 5)) + setEntityGaussianProgressive( + entityId: entity, + baseFilename: base, + levelCount: 3, + maxDistances: [10, 50, .greatestFiniteMagnitude] + ) + + let camera = createEntity() + scene.assign(to: camera, component: CameraComponent.self)?.localPosition = .zero + _ = scene.assign(to: camera, component: LocalTransformComponent.self) + CameraSystem.shared.activeCamera = camera + + let lod = try XCTUnwrap(scene.get(component: GaussianLODComponent.self, for: entity)) + + // The non-streaming progressive path always loads the coarsest tier first, + // independent of distance (see setEntityGaussianProgressive) -- wait that out. + for _ in 0 ..< 20 where lod.currentLOD != 2 { + try await Task.sleep(nanoseconds: 10_000_000) + } + XCTAssertEqual(lod.currentLOD, 2) + + // Drive it to LOD0 (distance 5, within maxDistances[0] = 10). This requires an actual + // tier load, so a handful of update() calls (crossing the interval) plus an await is + // expected here -- this part isn't what's under test. + for _ in 0 ..< 5 { GaussianLODSystem.shared.update(deltaTime: 0.1) } + await lod.lodLevels[0].loadTask?.value + for _ in 0 ..< 5 { GaussianLODSystem.shared.update(deltaTime: 0.1) } + XCTAssertEqual(lod.currentLOD, 0) + + // "Drag" the entity back out to distance 60 in one move. LOD2 (coarsest) is already + // resident from the very first load, so applying it needs no further async load -- + // just a single post-drag update() call. That call lands on frameCounter 11 (11 % 4 != + // 0, so the interval hasn't elapsed) with the camera stationary, so only the per-entity + // fast path can catch this. Without it, this would silently do nothing until the + // interval happened to elapse or the entity was dragged again. + translateTo(entityId: entity, position: simd_float3(0, 0, 60)) + GaussianLODSystem.shared.update(deltaTime: 0.1) + + XCTAssertEqual(lod.currentLOD, 2, "A single post-drag update should pick up the entity's own displacement without waiting on the camera-driven throttle") + } + + func testCameraDriftAccumulatesAcrossThrottledFramesInsteadOfResettingEachFrame() { + // Disable the per-entity fast path so only the camera-driven cumulative-displacement + // fast path can possibly catch this, and set the interval high enough that it can't + // fire on its own within the handful of update() calls below. + LODConfig.shared.minimumEntityDisplacementForLODUpdate = 1000 + LODConfig.shared.minimumCameraDisplacementForLODUpdate = 1.0 + LODConfig.shared.lodUpdateFrameInterval = 1000 + // Not testing hysteresis here -- the default (5.0) is larger than this test's near-tier + // threshold (3), which would make switching back to LOD0 mathematically impossible + // (3 - 5 = -2, an unreachable distance) and has nothing to do with what's under test. + LODConfig.shared.hysteresis = 0 + + let entity = createEntity() + translateTo(entityId: entity, position: simd_float3(0, 0, 5)) + scene.get(component: LocalTransformComponent.self, for: entity)?.boundingBox = ( + min: simd_float3(-0.1, -0.1, -0.1), max: simd_float3(0.1, 0.1, 0.1) + ) + + let lod = scene.assign(to: entity, component: GaussianLODComponent.self)! + var near = GaussianLODLevel(maxDistance: 3) + near.buffers = GaussianComponent() + near.residencyState = .resident + var far = GaussianLODLevel(maxDistance: .greatestFiniteMagnitude) + far.buffers = GaussianComponent() + far.residencyState = .resident + lod.lodLevels = [near, far] + lod.currentLOD = 1 + lod.desiredLOD = 1 + lod.distanceSelectedLOD = 1 + + let camera = createEntity() + scene.assign(to: camera, component: CameraComponent.self)?.localPosition = .zero + _ = scene.assign(to: camera, component: LocalTransformComponent.self) + CameraSystem.shared.activeCamera = camera + + // Entity sits at distance 5 (over the "near" tier's threshold of 3) -- move the camera + // toward it in many small steps (0.6 each), each individually under the 1.0 + // displacement threshold, ending well past distance 3 (final camera z = 6.0, so final + // distance = 1.0). Only the cumulative fast path can possibly catch any of this (the + // per-entity path is disabled above and the interval, 1000, never elapses in 10 calls). + // If lastCameraPosition were being reset every frame instead of only on qualifying + // frames, this fast path could never fire at all and lod.currentLOD would still be 1 + // after every one of these calls, regardless of how far the camera cumulatively moved. + for step in 1 ... 10 { + let cameraComponent = scene.get(component: CameraComponent.self, for: camera) + cameraComponent?.localPosition = simd_float3(0, 0, Float(step) * 0.6) + GaussianLODSystem.shared.update(deltaTime: 0.1) + } + + XCTAssertEqual(lod.currentLOD, 0, "Cumulative camera displacement across throttled-out frames should still trip the fast path") + } + + func testProgressiveEntityWithoutExplicitBoundingBoxGetsAutoPopulatedFromLoadedTier() async throws { + // The auto-populated box comes from the coarsest tier (a spatially-interleaved subset + // of splats, loaded first) rather than the full asset, so it won't match the full + // asset's box exactly -- just check it's in the same ballpark rather than requiring + // precise equality. + let asset = try PLYReader.readGaussianAsset(from: try testPLYURL()) + let trueBox = computeGaussianSplatBoundingBox(asset.splats) + let trueExtent = simd_length(trueBox.max - trueBox.min) + + let base = try bakeProgressiveBase(levelCount: 3) + let entity = createEntity() + translateTo(entityId: entity, position: .zero) + // Deliberately omit boundingBoxHalfExtent. + setEntityGaussianProgressive(entityId: entity, baseFilename: base, levelCount: 3, maxDistances: [20, 50, .greatestFiniteMagnitude]) + + let lod = try XCTUnwrap(scene.get(component: GaussianLODComponent.self, for: entity)) + for _ in 0 ..< 20 where lod.currentLOD != 2 { + try await Task.sleep(nanoseconds: 10_000_000) + } + + let boundingBox = try XCTUnwrap(scene.get(component: LocalTransformComponent.self, for: entity)?.boundingBox) + XCTAssertNotEqual(boundingBox.min, simd_float3(-1, -1, -1), "Should not still be the default placeholder box") + XCTAssertNotEqual(boundingBox.min, boundingBox.max, "Should not be degenerate") + + let gotExtent = simd_length(boundingBox.max - boundingBox.min) + XCTAssertGreaterThan(gotExtent, trueExtent * 0.5, "Auto-populated box should be a reasonable approximation of the true asset extent") + XCTAssertLessThan(gotExtent, trueExtent * 2.0, "Auto-populated box should be a reasonable approximation of the true asset extent") + } + + func testOverdrawClampDoesNotContaminateDistanceHysteresisAnchor() { + LODConfig.shared.gaussianOverdrawBudget = 0.001 // force the clamp to walk to the coarsest tier + + let entity = createEntity() + translateTo(entityId: entity, position: simd_float3(0, 0, 1)) + scene.get(component: LocalTransformComponent.self, for: entity)?.boundingBox = ( + min: simd_float3(-1, -1, -1), max: simd_float3(1, 1, 1) + ) + + let lod = scene.assign(to: entity, component: GaussianLODComponent.self)! + var level0 = GaussianLODLevel(maxDistance: 10) + level0.meanSquaredSplatExtent = 1.0 + level0.buffers = GaussianComponent() + level0.buffers?.splatCount = 100 + + var level1 = GaussianLODLevel(maxDistance: 50) + level1.meanSquaredSplatExtent = 0.0001 + level1.buffers = GaussianComponent() + level1.buffers?.splatCount = 1 + + lod.lodLevels = [level0, level1] + // Stale anchor simulating "last frame we were logically at LOD 1" -- pure distance (1 + // unit, well under level0's threshold of 10) should move this back to LOD 0. + lod.desiredLOD = 1 + lod.distanceSelectedLOD = 1 + + let camera = createEntity() + scene.assign(to: camera, component: CameraComponent.self)?.localPosition = .zero + _ = scene.assign(to: camera, component: LocalTransformComponent.self) + CameraSystem.shared.activeCamera = camera + + GaussianLODSystem.shared.update(deltaTime: 0.1) + + XCTAssertEqual(lod.desiredLOD, 1, "The tiny overdraw budget should force the actually-applied target to the coarser tier") + XCTAssertEqual(lod.distanceSelectedLOD, 0, "distanceSelectedLOD must track the pure distance pick, uncontaminated by the overdraw-forced value") + } + + func testBakeProgressiveTiersThrowsOnEmptyPLYRegardlessOfLodFractions() throws { + let ply = FileManager.default.temporaryDirectory + .appendingPathComponent("GaussianEmptyPLY-\(UUID().uuidString)") + .appendingPathExtension("ply") + let lines = [ + "ply", "format ascii 1.0", "element vertex 0", + "property float x", "property float y", "property float z", + "property float scale_0", "property float scale_1", "property float scale_2", + "property float f_dc_0", "property float f_dc_1", "property float f_dc_2", + "property float opacity", + "property float rot_0", "property float rot_1", "property float rot_2", "property float rot_3", + "end_header", + ] + // Trailing newline required: PLYReader's header scan finds "end_header" by looking for + // the newline that terminates it, so a file ending right after that line with none + // would never be recognized. + try (lines.joined(separator: "\n") + "\n").write(to: ply, atomically: true, encoding: .utf8) + + let output = FileManager.default.temporaryDirectory + .appendingPathComponent("GaussianEmptyPLYBake-\(UUID().uuidString)") + .appendingPathExtension("untoldgs") + + XCTAssertThrowsError(try bakeGaussianSplatProgressiveTiers(plyURL: ply, outputBaseURL: output, lodFractions: [1.0])) { error in + guard case UntoldGSError.sizeMismatch = error else { + XCTFail("Expected .sizeMismatch, got \(error)") + return + } + } + } + + func testComputeGaussianSplatBoundingBoxExpandsBySplatScaleNotJustCenter() { + // A single splat sitting exactly at the origin with a large scale should produce a box + // reflecting its true extent, not a degenerate single point. + let splat = GaussianSplat( + center: simd_float4(0, 0, 0, 1), + scale: simd_float4(2, 0.5, 0.5, 1), + color: simd_float4(1, 1, 1, 1), + quat: simd_float4(0, 0, 0, 1), + opacity: 1 + ) + let box = computeGaussianSplatBoundingBox([splat]) + XCTAssertEqual(box.min, simd_float3(-2, -2, -2)) + XCTAssertEqual(box.max, simd_float3(2, 2, 2)) + } + // MARK: - UntoldGSFormat corrupt-header handling func testReadThrowsInsteadOfTrappingOnOverflowingHeaderCounts() throws { @@ -236,7 +644,7 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { bytes += [0, 0, 0, 0] // shDegree bytes += [0, 0, 0, 0] // shCoefficientsPerChannel bytes += [0, 0, 0, 0] // shHigherOrderCoefficientsPerSplat - bytes += [0, 0, 0, 0] // padding + bytes += [0, 0, 0, 0] // meanSquaredSplatExtent (0.0 as Float bit pattern) bytes += [UInt8](repeating: 0, count: 8) // encodedByteCount bytes += [UInt8](repeating: 0, count: 8) // shByteCount XCTAssertEqual(bytes.count, 48) diff --git a/Tools/UntoldEngineCLI/Sources/UntoldEngineCLI/ExportCommand.swift b/Tools/UntoldEngineCLI/Sources/UntoldEngineCLI/ExportCommand.swift index 38a18a5d..0f8a91eb 100644 --- a/Tools/UntoldEngineCLI/Sources/UntoldEngineCLI/ExportCommand.swift +++ b/Tools/UntoldEngineCLI/Sources/UntoldEngineCLI/ExportCommand.swift @@ -172,14 +172,24 @@ struct ExportCommand: ParsableCommand { private func runGaussianSplatExport(inputURL: URL, outputURL: URL) throws { printInfo("Exporting Gaussian splats \(inputURL.path)") - let tierURLs = try bakeGaussianSplatProgressiveTiers( + let bakeResult = try bakeGaussianSplatProgressiveTiers( plyURL: inputURL, outputBaseURL: outputURL, levelCount: lodLevels ) - for tierURL in tierURLs { - printSuccess("Exported: \(tierURL.path)") + // meanSquaredSplatExtent is baked into each .untoldgs file and read automatically when + // the engine loads it — printed here only as a diagnostic (e.g. to compare density + // across source captures), not something to copy anywhere. + for tier in bakeResult.tiers { + printSuccess("Exported: \(tier.url.path) (meanSquaredSplatExtent: \(tier.meanSquaredSplatExtent))") } + + // boundingBoxHalfExtent is NOT baked into the files (the engine can auto-compute it for + // non-streaming loads instead) — pass this into setEntityGaussianProgressive/ + // setEntityGaussianStreaming's boundingBoxHalfExtent if you want it set explicitly, e.g. + // for the streaming path, which requires a real box before any tier is ever read. + let halfExtent = (bakeResult.boundingBoxMax - bakeResult.boundingBoxMin) * 0.5 + printInfo("boundingBoxHalfExtent: (\(halfExtent.x), \(halfExtent.y), \(halfExtent.z))") } private func optimizeTextures(outputURL: URL) throws { From ca3ee6c48280fa2249267e344bd1ab2add76c878 Mon Sep 17 00:00:00 2001 From: Untold Engine Date: Fri, 21 Aug 2026 15:42:43 -0700 Subject: [PATCH 10/11] [Chores] Lint the files --- Sources/Sandbox/GameScene.swift | 65 +++++++++---------- Sources/UntoldEngine/ECS/Components.swift | 8 ++- ...tryStreamingSystem+GaussianStreaming.swift | 20 ++++-- Sources/UntoldEngine/Systems/LODSystem.swift | 8 +-- .../Systems/RegistrationSystem.swift | 5 +- .../GaussianProgressiveLODTest.swift | 32 +++++---- 6 files changed, 77 insertions(+), 61 deletions(-) diff --git a/Sources/Sandbox/GameScene.swift b/Sources/Sandbox/GameScene.swift index c52e558e..24e856d9 100644 --- a/Sources/Sandbox/GameScene.swift +++ b/Sources/Sandbox/GameScene.swift @@ -22,7 +22,6 @@ setupDefaultSceneObjects() setSceneReady(false) - // Make sure to convert your usdz files to .untold format as explained in docs/API/UsingTheExporter // Uncomment to render a simple mesh. @@ -36,39 +35,37 @@ setSceneReady(success) } */ - - let sceneRoot = createEntity() - setEntityStreamScene( - entityId: sceneRoot, - url: URL(fileURLWithPath: "/Users/haroldserrano/Desktop/UntoldEngineStudio/StreamingAssets/Dungeon/dungeon.json") - ) { success in - if success { - loadSceneAuthored(url: URL(fileURLWithPath: "/Users/haroldserrano/Desktop/UntoldEngineStudio/StreamingAssets/Dungeon/dungeon.json")) - } - - - let splat = createEntity() - - setEntityGaussianStreaming( - entityId: splat, - source: .progressive( - baseFilename: "/Users/haroldserrano/Downloads/Pooltable", - levelCount: 4, - maxDistances: [5, 15, 25, .greatestFiniteMagnitude] - ), - options: GaussianStreamingOptions( - streamingRadius: 100, - unloadRadius: 140, - boundingBoxHalfExtent: simd_float3(2, 1, 3) - ) - ) - - rotateBy(entityId: splat, angle: 180, axis: simd_float3(1.0,0.0,0.0)) - setSceneReady(true) - - setSceneReady(success) - } - + + let sceneRoot = createEntity() + setEntityStreamScene( + entityId: sceneRoot, + url: URL(fileURLWithPath: "/Users/haroldserrano/Desktop/UntoldEngineStudio/StreamingAssets/Dungeon/dungeon.json") + ) { success in + if success { + loadSceneAuthored(url: URL(fileURLWithPath: "/Users/haroldserrano/Desktop/UntoldEngineStudio/StreamingAssets/Dungeon/dungeon.json")) + } + + let splat = createEntity() + + setEntityGaussianStreaming( + entityId: splat, + source: .progressive( + baseFilename: "/Users/haroldserrano/Downloads/Pooltable", + levelCount: 4, + maxDistances: [5, 15, 25, .greatestFiniteMagnitude] + ), + options: GaussianStreamingOptions( + streamingRadius: 100, + unloadRadius: 140, + boundingBoxHalfExtent: simd_float3(2, 1, 3) + ) + ) + + rotateBy(entityId: splat, angle: 180, axis: simd_float3(1.0, 0.0, 0.0)) + setSceneReady(true) + + setSceneReady(success) + } // Uncomment to render a streamed scene } diff --git a/Sources/UntoldEngine/ECS/Components.swift b/Sources/UntoldEngine/ECS/Components.swift index 95a979e3..da93ba37 100644 --- a/Sources/UntoldEngine/ECS/Components.swift +++ b/Sources/UntoldEngine/ECS/Components.swift @@ -449,7 +449,9 @@ public struct LODLevel { } extension LODLevel: LODResidencyLevel { - var isPopulated: Bool { !mesh.isEmpty } + var isPopulated: Bool { + !mesh.isEmpty + } } extension LODLevel: LODDistanceLevel {} @@ -508,7 +510,9 @@ public struct GaussianLODLevel { } extension GaussianLODLevel: LODResidencyLevel { - var isPopulated: Bool { buffers != nil } + var isPopulated: Bool { + buffers != nil + } } extension GaussianLODLevel: LODDistanceLevel {} diff --git a/Sources/UntoldEngine/Systems/GeometryStreamingSystem+GaussianStreaming.swift b/Sources/UntoldEngine/Systems/GeometryStreamingSystem+GaussianStreaming.swift index 92523896..bafcccb1 100644 --- a/Sources/UntoldEngine/Systems/GeometryStreamingSystem+GaussianStreaming.swift +++ b/Sources/UntoldEngine/Systems/GeometryStreamingSystem+GaussianStreaming.swift @@ -291,10 +291,20 @@ private func gaussianComponentEstimatedBytes(_ component: GaussianComponent) -> var total = 0 total += component.encodedSplatData?.length ?? 0 total += component.sphericalHarmonicsData?.length ?? 0 - for buffer in component.gaussianSortedIndices { total += buffer?.length ?? 0 } - for buffer in component.gaussianVisibleIndices { total += buffer?.length ?? 0 } - for buffer in component.gaussianVisibleCount { total += buffer?.length ?? 0 } - for buffer in component.gaussianPrecomputedData { total += buffer?.length ?? 0 } - for buffer in component.spaceUniform { total += buffer?.length ?? 0 } + for buffer in component.gaussianSortedIndices { + total += buffer?.length ?? 0 + } + for buffer in component.gaussianVisibleIndices { + total += buffer?.length ?? 0 + } + for buffer in component.gaussianVisibleCount { + total += buffer?.length ?? 0 + } + for buffer in component.gaussianPrecomputedData { + total += buffer?.length ?? 0 + } + for buffer in component.spaceUniform { + total += buffer?.length ?? 0 + } return total } diff --git a/Sources/UntoldEngine/Systems/LODSystem.swift b/Sources/UntoldEngine/Systems/LODSystem.swift index 906dd42c..65066e0c 100644 --- a/Sources/UntoldEngine/Systems/LODSystem.swift +++ b/Sources/UntoldEngine/Systems/LODSystem.swift @@ -264,7 +264,7 @@ func shouldDeferLODSelectionDuringTransition( } /// Shared by `LODComponent` and `GaussianLODComponent` — see `LODResidencyLevel`. -func isLODLevelResident(_ levels: [T], _ index: Int) -> Bool { +func isLODLevelResident(_ levels: [some LODResidencyLevel], _ index: Int) -> Bool { guard index >= 0, index < levels.count else { return false } let level = levels[index] return level.residencyState == .resident && level.isPopulated @@ -274,7 +274,7 @@ func isLODLevelResident(_ levels: [T], _ index: Int) -> Bo /// coarser resident level (higher index, lower detail) over a finer one, since showing /// something-but-coarser while the desired level streams in beats swapping to a different /// detail level entirely. -func findFallbackLODLevel(_ levels: [T], from desiredIndex: Int) -> Int? { +func findFallbackLODLevel(_ levels: [some LODResidencyLevel], from desiredIndex: Int) -> Int? { for i in (desiredIndex + 1) ..< levels.count where isLODLevelResident(levels, i) { return i } @@ -303,8 +303,8 @@ func entityDistanceToCamera(entityId: EntityID, cameraPosition: simd_float3) -> /// higher detail (lower index) than `currentLOD`, so a distance oscillating right at a /// threshold doesn't flip the selection every re-evaluation. Falls back to /// `globalDistances[index]` when a level's own `maxDistance` is unset (0). -func selectLODIndex( - levels: [T], +func selectLODIndex( + levels: [some LODDistanceLevel], distance: Float, currentLOD: Int, forcedLOD: Int?, diff --git a/Sources/UntoldEngine/Systems/RegistrationSystem.swift b/Sources/UntoldEngine/Systems/RegistrationSystem.swift index c37648d8..675c7500 100644 --- a/Sources/UntoldEngine/Systems/RegistrationSystem.swift +++ b/Sources/UntoldEngine/Systems/RegistrationSystem.swift @@ -3251,7 +3251,9 @@ public struct UntoldGSAsset { /// happen for a tier with no splats, which never gets written). public let meanSquaredSplatExtent: Float - public var splatCount: Int { encodedSplats.count } + public var splatCount: Int { + encodedSplats.count + } } public enum UntoldGSFormat { @@ -3405,7 +3407,6 @@ func buildGaussianLoadResult( return nil } - var gaussianSortedIndices: [MTLBuffer] = [] var gaussianVisibleIndices: [MTLBuffer] = [] var gaussianVisibleCount: [MTLBuffer] = [] diff --git a/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift b/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift index 32e773de..bc5ee987 100644 --- a/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift +++ b/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift @@ -75,7 +75,7 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { .appendingPathComponent("GaussianProgressiveLODTest-\(UUID().uuidString)") .appendingPathExtension("untoldgs") _ = try bakeGaussianSplatProgressiveTiers( - plyURL: try testPLYURL(), + plyURL: testPLYURL(), outputBaseURL: output, levelCount: levelCount ) @@ -87,7 +87,7 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { .appendingPathComponent("GaussianProgressiveBake-\(UUID().uuidString)") .appendingPathExtension("untoldgs") let bakeResult = try bakeGaussianSplatProgressiveTiers( - plyURL: try testPLYURL(), + plyURL: testPLYURL(), outputBaseURL: output, levelCount: 3 ) @@ -144,7 +144,7 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { let coarse = try UntoldGSFormat.read(from: bakeResult.tiers[1].url) XCTAssertEqual(coarse.splatCount, 2) - let xs = coarse.encodedSplats.map { $0.position.x } + let xs = coarse.encodedSplats.map(\.position.x) XCTAssertTrue(xs.contains { $0 < 1 }, "Coarse tier should keep coverage from the dense left cluster") XCTAssertTrue(xs.contains { $0 > 9 }, "Coarse tier should keep coverage from the sparse right cluster") } @@ -235,14 +235,14 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { } func testBakeProgressiveTiersReturnsAssetLevelBoundingBox() throws { - let asset = try PLYReader.readGaussianAsset(from: try testPLYURL()) + let asset = try PLYReader.readGaussianAsset(from: testPLYURL()) let expected = computeGaussianSplatBoundingBox(asset.splats) let output = FileManager.default.temporaryDirectory .appendingPathComponent("GaussianBakeBoundingBox-\(UUID().uuidString)") .appendingPathExtension("untoldgs") let bakeResult = try bakeGaussianSplatProgressiveTiers( - plyURL: try testPLYURL(), + plyURL: testPLYURL(), outputBaseURL: output, levelCount: 3 ) @@ -257,7 +257,7 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { // only has post-encode splat positions (no per-splat scale) -- it pads a centers-only // box by an RMS radius derived from the mean squared extent, rather than the exact // per-splat expansion computeGaussianSplatBoundingBox(_ splats:) does at bake time. - let asset = try PLYReader.readGaussianAsset(from: try testPLYURL()) + let asset = try PLYReader.readGaussianAsset(from: testPLYURL()) let allIndices = Array(asset.splats.indices) let positions = asset.splats.map { simd_float3($0.center.x, $0.center.y, $0.center.z) } let extentSum = allIndices.reduce(Float(0)) { partial, index in @@ -281,7 +281,7 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { .appendingPathComponent("GaussianMeanSquaredExtentRoundTrip-\(UUID().uuidString)") .appendingPathExtension("untoldgs") let bakeResult = try bakeGaussianSplatProgressiveTiers( - plyURL: try testPLYURL(), + plyURL: testPLYURL(), outputBaseURL: output, levelCount: 3 ) @@ -449,9 +449,13 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { // Drive it to LOD0 (distance 5, within maxDistances[0] = 10). This requires an actual // tier load, so a handful of update() calls (crossing the interval) plus an await is // expected here -- this part isn't what's under test. - for _ in 0 ..< 5 { GaussianLODSystem.shared.update(deltaTime: 0.1) } + for _ in 0 ..< 5 { + GaussianLODSystem.shared.update(deltaTime: 0.1) + } await lod.lodLevels[0].loadTask?.value - for _ in 0 ..< 5 { GaussianLODSystem.shared.update(deltaTime: 0.1) } + for _ in 0 ..< 5 { + GaussianLODSystem.shared.update(deltaTime: 0.1) + } XCTAssertEqual(lod.currentLOD, 0) // "Drag" the entity back out to distance 60 in one move. LOD2 (coarsest) is already @@ -466,7 +470,7 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { XCTAssertEqual(lod.currentLOD, 2, "A single post-drag update should pick up the entity's own displacement without waiting on the camera-driven throttle") } - func testCameraDriftAccumulatesAcrossThrottledFramesInsteadOfResettingEachFrame() { + func testCameraDriftAccumulatesAcrossThrottledFramesInsteadOfResettingEachFrame() throws { // Disable the per-entity fast path so only the camera-driven cumulative-displacement // fast path can possibly catch this, and set the interval high enough that it can't // fire on its own within the handful of update() calls below. @@ -484,7 +488,7 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { min: simd_float3(-0.1, -0.1, -0.1), max: simd_float3(0.1, 0.1, 0.1) ) - let lod = scene.assign(to: entity, component: GaussianLODComponent.self)! + let lod = try XCTUnwrap(scene.assign(to: entity, component: GaussianLODComponent.self)) var near = GaussianLODLevel(maxDistance: 3) near.buffers = GaussianComponent() near.residencyState = .resident @@ -523,7 +527,7 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { // of splats, loaded first) rather than the full asset, so it won't match the full // asset's box exactly -- just check it's in the same ballpark rather than requiring // precise equality. - let asset = try PLYReader.readGaussianAsset(from: try testPLYURL()) + let asset = try PLYReader.readGaussianAsset(from: testPLYURL()) let trueBox = computeGaussianSplatBoundingBox(asset.splats) let trueExtent = simd_length(trueBox.max - trueBox.min) @@ -547,7 +551,7 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { XCTAssertLessThan(gotExtent, trueExtent * 2.0, "Auto-populated box should be a reasonable approximation of the true asset extent") } - func testOverdrawClampDoesNotContaminateDistanceHysteresisAnchor() { + func testOverdrawClampDoesNotContaminateDistanceHysteresisAnchor() throws { LODConfig.shared.gaussianOverdrawBudget = 0.001 // force the clamp to walk to the coarsest tier let entity = createEntity() @@ -556,7 +560,7 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { min: simd_float3(-1, -1, -1), max: simd_float3(1, 1, 1) ) - let lod = scene.assign(to: entity, component: GaussianLODComponent.self)! + let lod = try XCTUnwrap(scene.assign(to: entity, component: GaussianLODComponent.self)) var level0 = GaussianLODLevel(maxDistance: 10) level0.meanSquaredSplatExtent = 1.0 level0.buffers = GaussianComponent() From 4754168bb8b8528b1e53df9610cf6370e18cb70b Mon Sep 17 00:00:00 2001 From: Untold Engine Date: Sat, 22 Aug 2026 07:44:35 -0700 Subject: [PATCH 11/11] [Chores] Cleaned up API --- Sources/Sandbox/GameScene.swift | 31 --- .../Systems/RegistrationSystem.swift | 225 ++++++++++++++---- .../GaussianProgressiveLODTest.swift | 102 ++++++-- .../GaussianStreamingTest.swift | 142 +++++++++++ docs/API/UsingGaussianSystem.md | 210 ++++++++++++---- 5 files changed, 572 insertions(+), 138 deletions(-) diff --git a/Sources/Sandbox/GameScene.swift b/Sources/Sandbox/GameScene.swift index 24e856d9..bfc49e90 100644 --- a/Sources/Sandbox/GameScene.swift +++ b/Sources/Sandbox/GameScene.swift @@ -36,37 +36,6 @@ } */ - let sceneRoot = createEntity() - setEntityStreamScene( - entityId: sceneRoot, - url: URL(fileURLWithPath: "/Users/haroldserrano/Desktop/UntoldEngineStudio/StreamingAssets/Dungeon/dungeon.json") - ) { success in - if success { - loadSceneAuthored(url: URL(fileURLWithPath: "/Users/haroldserrano/Desktop/UntoldEngineStudio/StreamingAssets/Dungeon/dungeon.json")) - } - - let splat = createEntity() - - setEntityGaussianStreaming( - entityId: splat, - source: .progressive( - baseFilename: "/Users/haroldserrano/Downloads/Pooltable", - levelCount: 4, - maxDistances: [5, 15, 25, .greatestFiniteMagnitude] - ), - options: GaussianStreamingOptions( - streamingRadius: 100, - unloadRadius: 140, - boundingBoxHalfExtent: simd_float3(2, 1, 3) - ) - ) - - rotateBy(entityId: splat, angle: 180, axis: simd_float3(1.0, 0.0, 0.0)) - setSceneReady(true) - - setSceneReady(success) - } - // Uncomment to render a streamed scene } diff --git a/Sources/UntoldEngine/Systems/RegistrationSystem.swift b/Sources/UntoldEngine/Systems/RegistrationSystem.swift index 675c7500..93530c74 100644 --- a/Sources/UntoldEngine/Systems/RegistrationSystem.swift +++ b/Sources/UntoldEngine/Systems/RegistrationSystem.swift @@ -3250,6 +3250,13 @@ public struct UntoldGSAsset { /// baked before this field existed (indistinguishable from a real 0, but a real 0 can only /// happen for a tier with no splats, which never gets written). public let meanSquaredSplatExtent: Float + /// Asset-level local-space bounding box (shared by every tier of the same bake, not + /// per-tier — see `bakeGaussianSplatProgressiveTiers`), baked in at version 2. Lets any + /// registration path — including streaming, which needs a real box before it can decide + /// whether to load anything — read a real box via `UntoldGSFormat.readHeader` without a + /// caller-supplied value. + public let boundingBoxMin: simd_float3 + public let boundingBoxMax: simd_float3 public var splatCount: Int { encodedSplats.count @@ -3258,13 +3265,19 @@ public struct UntoldGSAsset { public enum UntoldGSFormat { private static let magic: UInt32 = 0x5347_5455 // "UTGS" - private static let version: UInt32 = 1 - private static let headerByteCount = 48 + // v2 appended boundingBoxMin/boundingBoxMax (24 bytes) after the v1 header — every v1 field + // offset is unchanged. No dual-version reader: .untoldgs is a regeneratable cache of the + // source .ply, not hand-authored data, so a version bump just means "re-bake," the same way + // an EncodedGaussianSplat layout change already does. + private static let version: UInt32 = 2 + private static let headerByteCount = 72 public static func write( encodedSplats: [EncodedGaussianSplat], sphericalHarmonics: PackedGaussianSphericalHarmonics?, meanSquaredSplatExtent: Float = 0, + boundingBoxMin: simd_float3, + boundingBoxMax: simd_float3, to url: URL ) throws { var data = Data() @@ -3277,6 +3290,12 @@ public enum UntoldGSFormat { appendFloat(meanSquaredSplatExtent, to: &data) appendUInt64(UInt64(encodedSplats.count * MemoryLayout.stride), to: &data) appendUInt64(UInt64(sphericalHarmonics?.coefficients.count ?? 0), to: &data) + appendFloat(boundingBoxMin.x, to: &data) + appendFloat(boundingBoxMin.y, to: &data) + appendFloat(boundingBoxMin.z, to: &data) + appendFloat(boundingBoxMax.x, to: &data) + appendFloat(boundingBoxMax.y, to: &data) + appendFloat(boundingBoxMax.z, to: &data) encodedSplats.withUnsafeBytes { data.append(contentsOf: $0) } if let sphericalHarmonics { @@ -3290,14 +3309,43 @@ public enum UntoldGSFormat { try data.write(to: url, options: .atomic) } - public static func read(from url: URL) throws -> UntoldGSAsset { - let data = try Data(contentsOf: url) - guard data.count >= headerByteCount else { throw UntoldGSError.truncated } - + /// Check just enough to identify the version before checking the full v2 header length — an + /// old, valid-but-shorter v1 file (48 bytes) must report .unsupportedVersion (a clear + /// "re-bake me" signal), not .truncated, which would otherwise fire first purely because + /// it's shorter than the current header size. Shared by read() and readHeader() so both + /// report the same error for the same malformed input. + private static func validateMagicAndVersion(_ data: Data) throws { + guard data.count >= 8 else { throw UntoldGSError.truncated } let magicValue = readUInt32(data, at: 0) guard magicValue == magic else { throw UntoldGSError.badMagic } let versionValue = readUInt32(data, at: 4) guard versionValue == version else { throw UntoldGSError.unsupportedVersion(versionValue) } + } + + /// Reads only `boundingBoxMin`/`boundingBoxMax` from the fixed-size header via a bounded + /// `FileHandle` read — not `Data(contentsOf:)`, which would pull the entire (potentially + /// multi-megabyte) splat/SH payload into memory just to look at 24 header bytes. Lets + /// registration paths (including streaming, which needs a real box before it can decide + /// whether to load anything) get one synchronously without a caller-supplied value. + public static func readHeader(from url: URL) throws -> (boundingBoxMin: simd_float3, boundingBoxMax: simd_float3) { + guard let fileHandle = FileHandle(forReadingAtPath: url.path) else { + throw UntoldGSError.truncated + } + defer { try? fileHandle.close() } + + let data = try (fileHandle.read(upToCount: headerByteCount)) ?? Data() + try validateMagicAndVersion(data) + guard data.count >= headerByteCount else { throw UntoldGSError.truncated } + + let boundingBoxMin = simd_float3(readFloat(data, at: 48), readFloat(data, at: 52), readFloat(data, at: 56)) + let boundingBoxMax = simd_float3(readFloat(data, at: 60), readFloat(data, at: 64), readFloat(data, at: 68)) + return (boundingBoxMin, boundingBoxMax) + } + + public static func read(from url: URL) throws -> UntoldGSAsset { + let data = try Data(contentsOf: url) + try validateMagicAndVersion(data) + guard data.count >= headerByteCount else { throw UntoldGSError.truncated } let splatCountRaw = readUInt64(data, at: 8) let shDegree = readUInt32(data, at: 16) @@ -3306,6 +3354,8 @@ public enum UntoldGSFormat { let meanSquaredSplatExtent = readFloat(data, at: 28) let encodedByteCountRaw = readUInt64(data, at: 32) let shByteCountRaw = readUInt64(data, at: 40) + let boundingBoxMin = simd_float3(readFloat(data, at: 48), readFloat(data, at: 52), readFloat(data, at: 56)) + let boundingBoxMax = simd_float3(readFloat(data, at: 60), readFloat(data, at: 64), readFloat(data, at: 68)) // Validate every header-declared count against the actual file size using // overflow-checked UInt64 arithmetic before converting anything to Int — a corrupt or @@ -3353,7 +3403,9 @@ public enum UntoldGSFormat { encodedSplats: encodedSplats, shCoefficients: shCoefficients, shMetadata: shMetadata, - meanSquaredSplatExtent: meanSquaredSplatExtent + meanSquaredSplatExtent: meanSquaredSplatExtent, + boundingBoxMin: boundingBoxMin, + boundingBoxMax: boundingBoxMax ) } @@ -3664,18 +3716,19 @@ func copyGaussianLoadResult(_ result: GaussianLoadResult, to gaussianComponent: public enum GaussianSource { case single(filename: String, withExtension: String) - /// `boundingBoxHalfExtent` is only used by `setEntityGaussian(source:)` (the non-streaming - /// path, which can also auto-compute a box on its own); `setEntityGaussianStreaming(source: - /// options:)` ignores it since streaming always requires a real box up front via - /// `GaussianStreamingOptions`. Overdraw-aware LOD stats (`meanSquaredSplatExtent`) are - /// baked directly into each `.untoldgs` tier by `bakeGaussianSplatProgressiveTiers` and - /// read automatically when a tier loads — nothing to pass here. + /// No `boundingBoxHalfExtent` here: both `setEntityGaussian(source:)` and + /// `setEntityGaussianStreaming(source:options:)` can read a real box baked into the + /// `.untoldgs` header itself (see `UntoldGSFormat.readHeader`) — an explicit override, when + /// one is genuinely needed, is a parameter on the underlying registration path instead + /// (`GaussianStreamingOptions.boundingBoxHalfExtent` for streaming). Overdraw-aware LOD + /// stats (`meanSquaredSplatExtent`) are baked directly into each `.untoldgs` tier by + /// `bakeGaussianSplatProgressiveTiers` and read automatically when a tier loads — nothing to + /// pass here either. case progressive( baseFilename: String, withExtension: String = "untoldgs", levelCount: Int, - maxDistances: [Float], - boundingBoxHalfExtent: simd_float3? = nil + maxDistances: [Float] ) } @@ -3699,14 +3752,13 @@ public func setEntityGaussian(entityId: EntityID, source: GaussianSource) { switch source { case let .single(filename, ext): setEntityGaussian(entityId: entityId, filename: filename, withExtension: ext) - case let .progressive(baseFilename, ext, levelCount, maxDistances, boundingBoxHalfExtent): + case let .progressive(baseFilename, ext, levelCount, maxDistances): setEntityGaussianProgressive( entityId: entityId, baseFilename: baseFilename, withExtension: ext, levelCount: levelCount, - maxDistances: maxDistances, - boundingBoxHalfExtent: boundingBoxHalfExtent + maxDistances: maxDistances ) } } @@ -3746,13 +3798,17 @@ public func setEntityGaussianAsync( public struct GaussianStreamingOptions { public var streamingRadius: Float public var unloadRadius: Float - public var boundingBoxHalfExtent: simd_float3 + /// Explicit override for the entity's local-space bounding box. Optional: `.untoldgs` + /// sources (single-file or progressive) can read a real box baked into the file itself — + /// see `UntoldGSFormat.readHeader` — so this is only required for a raw `.ply` `.single` + /// source, which has no baked box to fall back to. + public var boundingBoxHalfExtent: simd_float3? public var priority: Int public init( streamingRadius: Float = 100.0, unloadRadius: Float = 150.0, - boundingBoxHalfExtent: simd_float3, + boundingBoxHalfExtent: simd_float3? = nil, priority: Int = 0 ) { self.streamingRadius = streamingRadius @@ -3780,7 +3836,7 @@ public func setEntityGaussianStreaming( boundingBoxHalfExtent: options.boundingBoxHalfExtent, priority: options.priority ) - case let .progressive(baseFilename, ext, levelCount, maxDistances, _): + case let .progressive(baseFilename, ext, levelCount, maxDistances): setEntityGaussianProgressiveStreamable( entityId: entityId, baseFilename: baseFilename, @@ -3795,18 +3851,19 @@ public func setEntityGaussianStreaming( } } -/// Registers a tile-independent progressive Gaussian splat entity. +/// Registers a tile-independent progressive Gaussian splat entity. Not part of the public API +/// — reached only through `setEntityGaussian(entityId:source:)`'s `.progressive` case, which is +/// the entry point callers should use. /// /// The expected files are `_lod0.untoldgs`, `_lod1.untoldgs`, /// etc. LOD0 is full detail; the highest index is the coarsest tier and is loaded /// immediately so the entity can become visible before finer tiers finish loading. -public func setEntityGaussianProgressive( +func setEntityGaussianProgressive( entityId: EntityID, baseFilename: String, withExtension ext: String = "untoldgs", levelCount: Int, - maxDistances: [Float], - boundingBoxHalfExtent: simd_float3? = nil + maxDistances: [Float] ) { guard configureEntityGaussianProgressiveLOD( entityId: entityId, @@ -3817,8 +3874,17 @@ public func setEntityGaussianProgressive( errorPrefix: "setEntityGaussianProgressive" ) else { return } - if let boundingBoxHalfExtent, let local = scene.get(component: LocalTransformComponent.self, for: entityId) { - local.boundingBox = (min: -boundingBoxHalfExtent, max: boundingBoxHalfExtent) + // Read the box baked into the coarsest tier's header (cheap, synchronous) so the entity has + // a real box from frame 1 instead of waiting on the async coarsest-tier load below to + // populate one via GeometryStreamingSystem+GaussianStreaming.swift's hasExplicitBoundingBox + // fallback. If unavailable (e.g. a pre-v2 .untoldgs file), that fallback still applies + // unchanged. No caller-supplied override here — GaussianSource.progressive has no + // boundingBoxHalfExtent of its own to forward (see its doc comment). + let coarsestTierURL = gaussianProgressiveTierURL(baseFilename: baseFilename, withExtension: ext, levelCount: levelCount, tierIndex: levelCount - 1) + if let box = resolveGaussianBoundingBox(override: nil, untoldgsURL: coarsestTierURL), + let local = scene.get(component: LocalTransformComponent.self, for: entityId) + { + local.boundingBox = box scene.get(component: GaussianLODComponent.self, for: entityId)?.hasExplicitBoundingBox = true } @@ -3850,18 +3916,25 @@ public func setEntityGaussianProgressive( /// which tile it belongs to, via `findTileEntity(containing:)`. If no tile is found there, /// this logs a warning and leaves `entityId` as a plain, non-streaming entity. /// -/// `boundingBoxHalfExtent` has no default on purpose: `GeometryStreamingSystem`'s frustum -/// gate needs a real local-space volume on the entity before it ever loads (the splat's -/// true extent isn't known until the asset is parsed). A zero-size placeholder collapses -/// the gate to a single exact point, making re-streaming unreliable once the camera moves -/// away and back — pick a box roughly matching the prop's real-world size. -public func setEntityGaussianStreamable( +/// `boundingBoxHalfExtent` is optional: a `.untoldgs` source has a real box baked into its +/// header (see `UntoldGSFormat.readHeader`), read synchronously here since +/// `GeometryStreamingSystem`'s frustum gate needs a real local-space volume on the entity +/// before it ever loads. A raw `.ply` source has no baked box, so an explicit value is still +/// required there — omitting it leaves the entity non-streaming rather than registering a +/// zero-size placeholder, which would collapse the gate to a single exact point and make +/// re-streaming unreliable once the camera moves away and back. +/// +/// Not part of the public API — reached only through +/// `setEntityGaussianStreaming(entityId:source:options:)`'s `.single` case, which forwards +/// `GaussianStreamingOptions.boundingBoxHalfExtent` here; that's the entry point callers should +/// use. +func setEntityGaussianStreamable( entityId: EntityID, filename: String, withExtension ext: String, streamingRadius: Float = 100.0, unloadRadius: Float = 150.0, - boundingBoxHalfExtent: simd_float3, + boundingBoxHalfExtent: simd_float3? = nil, priority: Int = 0 ) { guard let local = scene.get(component: LocalTransformComponent.self, for: entityId) else { @@ -3874,7 +3947,14 @@ public func setEntityGaussianStreamable( return } - local.boundingBox = (min: -boundingBoxHalfExtent, max: boundingBoxHalfExtent) + let untoldgsURL = ext.lowercased() == "untoldgs" + ? LoadingSystem.shared.resourceURL(forResource: filename, withExtension: ext, subResource: nil) + : nil + guard let box = resolveGaussianBoundingBox(override: boundingBoxHalfExtent, untoldgsURL: untoldgsURL) else { + Logger.logWarning(message: "[RegistrationSystem] setEntityGaussianStreamable: no boundingBoxHalfExtent supplied and no baked box available for '\(filename).\(ext)' — entity left non-streaming. A raw .ply source requires an explicit boundingBoxHalfExtent.") + return + } + local.boundingBox = box setParent(childId: entityId, parentId: tileEntity) OctreeSystem.shared.registerEntity(entityId) @@ -3895,7 +3975,12 @@ public func setEntityGaussianStreamable( /// etc. LOD0 is full detail; the highest index is the coarsest tier and is loaded first /// when the prop enters streaming range. Finer tiers are requested later by /// `GaussianLODSystem` based on camera distance. -public func setEntityGaussianProgressiveStreamable( +/// +/// Not part of the public API — reached only through +/// `setEntityGaussianStreaming(entityId:source:options:)`'s `.progressive` case, which forwards +/// `GaussianStreamingOptions.boundingBoxHalfExtent` here; that's the entry point callers should +/// use. +func setEntityGaussianProgressiveStreamable( entityId: EntityID, baseFilename: String, withExtension ext: String = "untoldgs", @@ -3903,7 +3988,7 @@ public func setEntityGaussianProgressiveStreamable( maxDistances: [Float], streamingRadius: Float = 100.0, unloadRadius: Float = 150.0, - boundingBoxHalfExtent: simd_float3, + boundingBoxHalfExtent: simd_float3? = nil, priority: Int = 0 ) { guard let local = scene.get(component: LocalTransformComponent.self, for: entityId) else { @@ -3915,10 +4000,9 @@ public func setEntityGaussianProgressiveStreamable( return } - local.boundingBox = (min: -boundingBoxHalfExtent, max: boundingBoxHalfExtent) - setParent(childId: entityId, parentId: tileEntity) - OctreeSystem.shared.registerEntity(entityId) - + // Resolve LOD levels (and validate levelCount/maxDistances/tier files) before touching + // parent/octree/box state, so a validation failure here leaves the entity exactly as it + // was before this call — no half-registered state to clean up. guard configureEntityGaussianProgressiveLOD( entityId: entityId, baseFilename: baseFilename, @@ -3928,10 +4012,24 @@ public func setEntityGaussianProgressiveStreamable( errorPrefix: "setEntityGaussianProgressiveStreamable" ) else { return } - // boundingBoxHalfExtent is required (non-optional) here and already applied above — mark - // it explicit so loadGaussianLODLevel never overwrites it with an auto-computed one. + // configureEntityGaussianProgressiveLOD already confirmed every tier's file exists (it + // resolves and validates each URL, including the coarsest), so this is a header-parse + // concern only, not a file-lookup one. + let coarsestTierURL = scene.get(component: GaussianLODComponent.self, for: entityId)?.lodLevels.last?.url + guard let box = resolveGaussianBoundingBox(override: boundingBoxHalfExtent, untoldgsURL: coarsestTierURL) else { + Logger.logWarning(message: "[RegistrationSystem] setEntityGaussianProgressiveStreamable: no boundingBoxHalfExtent supplied and no baked box available for '\(baseFilename)' — entity left non-streaming.") + removeEntityGaussianLOD(entityId: entityId) + return + } + local.boundingBox = box + // boundingBoxHalfExtent may come from either an explicit override or the baked header — + // mark it explicit either way so loadGaussianLODLevel never overwrites it with a redundant + // auto-computed one once the first tier actually loads. scene.get(component: GaussianLODComponent.self, for: entityId)?.hasExplicitBoundingBox = true + setParent(childId: entityId, parentId: tileEntity) + OctreeSystem.shared.registerEntity(entityId) + if let streaming = scene.assign(to: entityId, component: StreamingComponent.self) { streaming.assetKind = .gaussianSplat streaming.assetFilename = baseFilename @@ -3942,6 +4040,39 @@ public func setEntityGaussianProgressiveStreamable( } } +/// Resolves the on-disk URL for one progressive tier, given the same `_lod` +/// naming `configureEntityGaussianProgressiveLOD` uses (or just `baseFilename` when +/// `levelCount == 1`, matching `bakeGaussianSplatProgressiveTiers`'s single-tier output). +/// Factored out so callers can resolve a specific tier's URL (typically the coarsest, for a +/// bounding-box header read) without going through full LOD-component setup first. +private func gaussianProgressiveTierURL( + baseFilename: String, + withExtension ext: String, + levelCount: Int, + tierIndex: Int +) -> URL? { + let filename = levelCount == 1 ? baseFilename : "\(baseFilename)_lod\(tierIndex)" + return LoadingSystem.shared.resourceURL(forResource: filename, withExtension: ext, subResource: nil) +} + +/// Resolves a local-space bounding box for Gaussian entity registration: an explicit +/// caller-supplied `override` always wins; otherwise, if `untoldgsURL` points at a real, +/// header-readable `.untoldgs` file, reads its baked box (see `UntoldGSFormat.readHeader`) — +/// cheap enough to call synchronously at registration time. Returns `nil` when neither is +/// available (e.g. a raw `.ply` source with no override) — callers decide how to handle that. +private func resolveGaussianBoundingBox( + override: simd_float3?, + untoldgsURL: URL? +) -> (min: simd_float3, max: simd_float3)? { + if let override { + return (min: -override, max: override) + } + guard let untoldgsURL, let header = try? UntoldGSFormat.readHeader(from: untoldgsURL) else { + return nil + } + return (min: header.boundingBoxMin, max: header.boundingBoxMax) +} + @discardableResult private func configureEntityGaussianProgressiveLOD( entityId: EntityID, @@ -3962,8 +4093,8 @@ private func configureEntityGaussianProgressiveLOD( var levels: [GaussianLODLevel] = [] for index in 0 ..< levelCount { - let filename = levelCount == 1 ? baseFilename : "\(baseFilename)_lod\(index)" - guard let url = LoadingSystem.shared.resourceURL(forResource: filename, withExtension: ext, subResource: nil) else { + guard let url = gaussianProgressiveTierURL(baseFilename: baseFilename, withExtension: ext, levelCount: levelCount, tierIndex: index) else { + let filename = levelCount == 1 ? baseFilename : "\(baseFilename)_lod\(index)" handleError(.filenameNotFound, filename) return false } @@ -4189,6 +4320,8 @@ public func bakeGaussianSplatProgressiveTiers( encodedSplats: encodedSplats, sphericalHarmonics: packedSphericalHarmonics, meanSquaredSplatExtent: tierExtent, + boundingBoxMin: assetBoundingBox.min, + boundingBoxMax: assetBoundingBox.max, to: resultURL ) return GaussianProgressiveBakeResult( @@ -4224,6 +4357,8 @@ public func bakeGaussianSplatProgressiveTiers( encodedSplats: encodedSplats, sphericalHarmonics: packedSphericalHarmonics, meanSquaredSplatExtent: tierExtent, + boundingBoxMin: assetBoundingBox.min, + boundingBoxMax: assetBoundingBox.max, to: tierURL ) tiers.append(GaussianLODTier(url: tierURL, meanSquaredSplatExtent: tierExtent)) diff --git a/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift b/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift index bc5ee987..d557ecd7 100644 --- a/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift +++ b/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift @@ -522,14 +522,14 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { XCTAssertEqual(lod.currentLOD, 0, "Cumulative camera displacement across throttled-out frames should still trip the fast path") } - func testProgressiveEntityWithoutExplicitBoundingBoxGetsAutoPopulatedFromLoadedTier() async throws { - // The auto-populated box comes from the coarsest tier (a spatially-interleaved subset - // of splats, loaded first) rather than the full asset, so it won't match the full - // asset's box exactly -- just check it's in the same ballpark rather than requiring - // precise equality. + func testProgressiveEntityWithoutExplicitBoundingBoxAutoResolvesFromBakedHeaderImmediately() throws { + // Since M2, the box comes from the coarsest tier's baked v2 header (see + // UntoldGSFormat.readHeader) synchronously at registration time -- it's the exact + // asset-level box every tier's header carries (see bakeGaussianSplatProgressiveTiers), + // not an approximation derived from whichever tier happens to load first, and it's + // available immediately, with no need to wait for the coarsest tier's async load. let asset = try PLYReader.readGaussianAsset(from: testPLYURL()) let trueBox = computeGaussianSplatBoundingBox(asset.splats) - let trueExtent = simd_length(trueBox.max - trueBox.min) let base = try bakeProgressiveBase(levelCount: 3) let entity = createEntity() @@ -537,18 +537,10 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { // Deliberately omit boundingBoxHalfExtent. setEntityGaussianProgressive(entityId: entity, baseFilename: base, levelCount: 3, maxDistances: [20, 50, .greatestFiniteMagnitude]) - let lod = try XCTUnwrap(scene.get(component: GaussianLODComponent.self, for: entity)) - for _ in 0 ..< 20 where lod.currentLOD != 2 { - try await Task.sleep(nanoseconds: 10_000_000) - } - let boundingBox = try XCTUnwrap(scene.get(component: LocalTransformComponent.self, for: entity)?.boundingBox) - XCTAssertNotEqual(boundingBox.min, simd_float3(-1, -1, -1), "Should not still be the default placeholder box") - XCTAssertNotEqual(boundingBox.min, boundingBox.max, "Should not be degenerate") - - let gotExtent = simd_length(boundingBox.max - boundingBox.min) - XCTAssertGreaterThan(gotExtent, trueExtent * 0.5, "Auto-populated box should be a reasonable approximation of the true asset extent") - XCTAssertLessThan(gotExtent, trueExtent * 2.0, "Auto-populated box should be a reasonable approximation of the true asset extent") + XCTAssertEqual(boundingBox.min, trueBox.min) + XCTAssertEqual(boundingBox.max, trueBox.max) + XCTAssertEqual(scene.get(component: GaussianLODComponent.self, for: entity)?.hasExplicitBoundingBox, true, "Should be marked explicit so the async coarsest-tier load never overwrites it with a redundant auto-computed box") } func testOverdrawClampDoesNotContaminateDistanceHysteresisAnchor() throws { @@ -636,14 +628,16 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { // MARK: - UntoldGSFormat corrupt-header handling func testReadThrowsInsteadOfTrappingOnOverflowingHeaderCounts() throws { - // Hand-crafted 48-byte header (magic "UTGS", version 1) declaring a splatCount of + // Hand-crafted 72-byte v2 header (magic "UTGS", version 2) declaring a splatCount of // UInt64.max, which overflows when multiplied by EncodedGaussianSplat's stride to // compute the expected encoded-splat byte count. Before the overflow-checked rewrite, // the unchecked `Int(UInt64)`/`*` in UntoldGSFormat.read would trap the process on a - // file like this instead of throwing a catchable error. + // file like this instead of throwing a catchable error. Must be a well-formed v2 header + // (real version, real byte count) so this test actually exercises the overflow guard in + // .sizeMismatch, not just the unrelated .unsupportedVersion check. var bytes: [UInt8] = [] bytes += [0x55, 0x54, 0x47, 0x53] // magic "UTGS", little-endian - bytes += [1, 0, 0, 0] // version = 1 + bytes += [2, 0, 0, 0] // version = 2 bytes += [UInt8](repeating: 0xFF, count: 8) // splatCount = UInt64.max bytes += [0, 0, 0, 0] // shDegree bytes += [0, 0, 0, 0] // shCoefficientsPerChannel @@ -651,7 +645,8 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { bytes += [0, 0, 0, 0] // meanSquaredSplatExtent (0.0 as Float bit pattern) bytes += [UInt8](repeating: 0, count: 8) // encodedByteCount bytes += [UInt8](repeating: 0, count: 8) // shByteCount - XCTAssertEqual(bytes.count, 48) + bytes += [UInt8](repeating: 0, count: 24) // boundingBoxMin/boundingBoxMax (6 floats) + XCTAssertEqual(bytes.count, 72) let url = FileManager.default.temporaryDirectory .appendingPathComponent("UntoldGSFormat-overflow-\(UUID().uuidString)") @@ -666,4 +661,69 @@ final class GaussianProgressiveLODTest: BaseRenderSetup { } } } + + func testReadRejectsV1HeaderAsUnsupportedVersion() throws { + // A well-formed pre-bounding-box v1 file (48-byte header, no boundingBoxMin/Max) must + // fail loudly with .unsupportedVersion rather than silently misreading 24 bytes of + // splat/SH payload as a bounding box. .untoldgs is a regeneratable cache of the source + // .ply — the fix for a file like this is re-running `untoldengine export`, not a + // best-effort read. + var bytes: [UInt8] = [] + bytes += [0x55, 0x54, 0x47, 0x53] // magic "UTGS", little-endian + bytes += [1, 0, 0, 0] // version = 1 + bytes += [UInt8](repeating: 0, count: 8) // splatCount = 0 + bytes += [0, 0, 0, 0] // shDegree + bytes += [0, 0, 0, 0] // shCoefficientsPerChannel + bytes += [0, 0, 0, 0] // shHigherOrderCoefficientsPerSplat + bytes += [0, 0, 0, 0] // meanSquaredSplatExtent + bytes += [UInt8](repeating: 0, count: 8) // encodedByteCount = 0 + bytes += [UInt8](repeating: 0, count: 8) // shByteCount = 0 + XCTAssertEqual(bytes.count, 48) + + let url = FileManager.default.temporaryDirectory + .appendingPathComponent("UntoldGSFormat-v1-\(UUID().uuidString)") + .appendingPathExtension("untoldgs") + try Data(bytes).write(to: url) + defer { try? FileManager.default.removeItem(at: url) } + + XCTAssertThrowsError(try UntoldGSFormat.read(from: url)) { error in + guard case let UntoldGSError.unsupportedVersion(version) = error else { + XCTFail("Expected .unsupportedVersion, got \(error)") + return + } + XCTAssertEqual(version, 1) + } + } + + func testWriteBakesBoundingBoxIntoHeaderAtExpectedOffsets() throws { + let output = FileManager.default.temporaryDirectory + .appendingPathComponent("UntoldGSFormat-boxheader-\(UUID().uuidString)") + .appendingPathExtension("untoldgs") + let bakeResult = try bakeGaussianSplatProgressiveTiers( + plyURL: testPLYURL(), + outputBaseURL: output, + lodFractions: [1.0] + ) + let tierURL = try XCTUnwrap(bakeResult.tiers.first?.url) + + // Read the raw bytes independently of UntoldGSFormat.read to guard the actual on-disk + // contract (version + fixed offsets), not just whatever read() happens to decode. + let data = try Data(contentsOf: tierURL) + let versionBits = data[4 ..< 8].withUnsafeBytes { $0.loadUnaligned(fromByteOffset: 0, as: UInt32.self) } + XCTAssertEqual(UInt32(littleEndian: versionBits), 2) + + func readFloat(at offset: Int) -> Float { + let bits = data[offset ..< offset + 4].withUnsafeBytes { $0.loadUnaligned(fromByteOffset: 0, as: UInt32.self) } + return Float(bitPattern: UInt32(littleEndian: bits)) + } + let boundingBoxMin = simd_float3(readFloat(at: 48), readFloat(at: 52), readFloat(at: 56)) + let boundingBoxMax = simd_float3(readFloat(at: 60), readFloat(at: 64), readFloat(at: 68)) + XCTAssertEqual(boundingBoxMin, bakeResult.boundingBoxMin) + XCTAssertEqual(boundingBoxMax, bakeResult.boundingBoxMax) + + // Round-trip through the public read() API should agree with the raw bytes. + let readBack = try UntoldGSFormat.read(from: tierURL) + XCTAssertEqual(readBack.boundingBoxMin, bakeResult.boundingBoxMin) + XCTAssertEqual(readBack.boundingBoxMax, bakeResult.boundingBoxMax) + } } diff --git a/Tests/UntoldEngineRenderTests/GaussianStreamingTest.swift b/Tests/UntoldEngineRenderTests/GaussianStreamingTest.swift index c26b1866..ed216056 100644 --- a/Tests/UntoldEngineRenderTests/GaussianStreamingTest.swift +++ b/Tests/UntoldEngineRenderTests/GaussianStreamingTest.swift @@ -220,6 +220,148 @@ final class GaussianStreamingTest: BaseRenderSetup { ) } + /// Creates a tile at the origin with bounds large enough to contain any entity position + /// this file's streaming-registration tests use, and registers it in the octree. + @discardableResult + private func makeContainingTileAtOrigin() -> EntityID { + let tileRoot = createEntity() + if let tileComp = scene.assign(to: tileRoot, component: TileComponent.self) { + tileComp.state = .parsed + } + if let tileLocal = scene.get(component: LocalTransformComponent.self, for: tileRoot) { + tileLocal.boundingBox = (min: simd_float3(-10, -10, -10), max: simd_float3(10, 10, 10)) + } + OctreeSystem.shared.registerEntity(tileRoot) + return tileRoot + } + + // MARK: - Auto-resolved bounding box (baked .untoldgs header) + + /// `.untoldgs` sources have a real box baked into their v2 header (see + /// `UntoldGSFormat.readHeader`) -- `setEntityGaussianStreamable` should read it + /// synchronously at registration time when no explicit override is supplied, rather than + /// leaving the entity with a degenerate placeholder box. + func testSetEntityGaussianStreamable_autoResolvesBoundingBoxFromBakedUntoldgsHeader() throws { + makeContainingTileAtOrigin() + + let plyURL = try XCTUnwrap(LoadingSystem.shared.resourceURL(forResource: "test_gaussians", withExtension: "ply", subResource: nil)) + let asset = try PLYReader.readGaussianAsset(from: plyURL) + let trueBox = computeGaussianSplatBoundingBox(asset.splats) + + let output = FileManager.default.temporaryDirectory + .appendingPathComponent("GaussianStreamingTest-\(UUID().uuidString)") + .appendingPathExtension("untoldgs") + _ = try bakeGaussianSplatProgressiveTiers(plyURL: plyURL, outputBaseURL: output, lodFractions: [1.0]) + + let entity = createEntity() + translateTo(entityId: entity, position: .zero) + + // Deliberately omit boundingBoxHalfExtent. + setEntityGaussianStreamable( + entityId: entity, + filename: output.deletingPathExtension().path, + withExtension: "untoldgs" + ) + + let boundingBox = try XCTUnwrap(scene.get(component: LocalTransformComponent.self, for: entity)?.boundingBox) + XCTAssertEqual(boundingBox.min, trueBox.min) + XCTAssertEqual(boundingBox.max, trueBox.max) + XCTAssertNotNil(scene.get(component: StreamingComponent.self, for: entity), "❌ Entity should still register for streaming once the box resolves from the baked header") + } + + /// A raw `.ply` source has no baked header to fall back to, so omitting + /// `boundingBoxHalfExtent` there should still leave the entity non-streaming (with a + /// warning), not register a degenerate placeholder box. + func testSetEntityGaussianStreamable_rawPLYWithoutOverrideLeavesEntityNonStreaming() { + makeContainingTileAtOrigin() + + let entity = createEntity() + translateTo(entityId: entity, position: .zero) + + // Deliberately omit boundingBoxHalfExtent for a raw .ply source. + setEntityGaussianStreamable( + entityId: entity, + filename: "test_gaussians", + withExtension: "ply" + ) + + XCTAssertNil( + scene.get(component: StreamingComponent.self, for: entity), + "❌ Entity should not get a StreamingComponent when no override is given and the source has no baked box" + ) + } + + /// Same auto-resolve behavior as above, for the progressive-tier streaming entry point -- + /// the box should come from the coarsest tier's baked header and be marked explicit so it's + /// never overwritten by the (now effectively redundant) async-load fallback. + func testSetEntityGaussianProgressiveStreamable_autoResolvesBoundingBoxFromBakedHeader() throws { + makeContainingTileAtOrigin() + + let plyURL = try XCTUnwrap(LoadingSystem.shared.resourceURL(forResource: "test_gaussians", withExtension: "ply", subResource: nil)) + let asset = try PLYReader.readGaussianAsset(from: plyURL) + let trueBox = computeGaussianSplatBoundingBox(asset.splats) + + let output = FileManager.default.temporaryDirectory + .appendingPathComponent("GaussianStreamingTest-\(UUID().uuidString)") + .appendingPathExtension("untoldgs") + _ = try bakeGaussianSplatProgressiveTiers(plyURL: plyURL, outputBaseURL: output, levelCount: 3) + + let entity = createEntity() + translateTo(entityId: entity, position: .zero) + + // Deliberately omit boundingBoxHalfExtent. + setEntityGaussianProgressiveStreamable( + entityId: entity, + baseFilename: output.deletingPathExtension().path, + levelCount: 3, + maxDistances: [20, 50, .greatestFiniteMagnitude] + ) + + let boundingBox = try XCTUnwrap(scene.get(component: LocalTransformComponent.self, for: entity)?.boundingBox) + XCTAssertEqual(boundingBox.min, trueBox.min) + XCTAssertEqual(boundingBox.max, trueBox.max) + XCTAssertNotNil(scene.get(component: StreamingComponent.self, for: entity)) + XCTAssertEqual(scene.get(component: GaussianLODComponent.self, for: entity)?.hasExplicitBoundingBox, true) + } + + /// A pre-v2 (48-byte, no baked box) `.untoldgs` tier can't have its header read as a box, + /// so with no override supplied, registration should fail cleanly -- no `StreamingComponent`, + /// and no half-configured `GaussianLODComponent` left behind for `GaussianLODSystem` to keep + /// processing every frame on an entity that never actually streams. + func testSetEntityGaussianProgressiveStreamable_unreadableHeaderLeavesNoLeakedComponent() throws { + makeContainingTileAtOrigin() + + var bytes: [UInt8] = [] + bytes += [0x55, 0x54, 0x47, 0x53] // magic "UTGS" + bytes += [1, 0, 0, 0] // version = 1 (pre-box format) + bytes += [UInt8](repeating: 0, count: 8) // splatCount = 0 + bytes += [0, 0, 0, 0] // shDegree + bytes += [0, 0, 0, 0] // shCoefficientsPerChannel + bytes += [0, 0, 0, 0] // shHigherOrderCoefficientsPerSplat + bytes += [0, 0, 0, 0] // meanSquaredSplatExtent + bytes += [UInt8](repeating: 0, count: 8) // encodedByteCount = 0 + bytes += [UInt8](repeating: 0, count: 8) // shByteCount = 0 + + let output = FileManager.default.temporaryDirectory + .appendingPathComponent("GaussianStreamingTest-v1header-\(UUID().uuidString)") + .appendingPathExtension("untoldgs") + try Data(bytes).write(to: output) + defer { try? FileManager.default.removeItem(at: output) } + + let entity = createEntity() + translateTo(entityId: entity, position: .zero) + + setEntityGaussianProgressiveStreamable( + entityId: entity, + baseFilename: output.deletingPathExtension().path, + levelCount: 1, + maxDistances: [.greatestFiniteMagnitude] + ) + + XCTAssertNil(scene.get(component: StreamingComponent.self, for: entity), "❌ Should not register for streaming") + XCTAssertNil(scene.get(component: GaussianLODComponent.self, for: entity), "❌ Should not leave a half-configured GaussianLODComponent behind") + } + /// `findTileEntity` should return the tile whose bounds contain the query point, and /// `nil` when nothing does. func testFindTileEntity_returnsContainingTileOrNil() { diff --git a/docs/API/UsingGaussianSystem.md b/docs/API/UsingGaussianSystem.md index e81c1a15..3882cb0a 100644 --- a/docs/API/UsingGaussianSystem.md +++ b/docs/API/UsingGaussianSystem.md @@ -39,6 +39,54 @@ Parameters: > Note: The Gaussian System renders point cloud data stored in the .ply format. Ensure your Gaussian Splat file is properly formatted and contains the necessary attributes (position, color, opacity, scale, rotation). +Both forms load synchronously and keep the splat resident for the entity's lifetime, and both +compute the entity's `LocalTransformComponent.boundingBox` automatically from the loaded splat +positions — no bounding box parameter is needed for this path. + +--- + +### Step 3: Loading Without Blocking the Main Thread + +`setEntityGaussianAsync` does the same immediate/resident load as `setEntityGaussian`, but +parsing, per-splat encoding, and spherical-harmonics packing all run off the main thread — +only the final component registration touches the world. Use it for a one-off splat load +where you don't want a frame hitch but don't need distance-based streaming. + +```swift +Task { + let ok = await setEntityGaussianAsync( + entityId: myEntity, + filename: "splat", + withExtension: "ply" + ) + if !ok { + print("Failed to load splat") + } +} +``` + +`completion` is an optional alternative to checking the returned `Bool`: + +```swift +await setEntityGaussianAsync( + entityId: myEntity, + filename: "splat", + withExtension: "ply" +) { success in + print(success ? "Loaded" : "Failed to load splat") +} +``` + +--- + +### Running the Gaussian System + +Once everything is set up: + +1. Run the project. +2. Your Gaussian Splat model will appear in the game window. +3. If the model is not visible or appears incorrect, revisit the file path and format to ensure everything is loaded correctly. + --- ## Progressive Gaussian Splats @@ -58,7 +106,9 @@ Progressive assets use `.untoldgs` tier files: `lod0` is the finest/full-resolution tier. Higher LOD numbers are progressively coarser. The engine loads the coarsest tier first, then `GaussianLODSystem` requests finer tiers -based on camera distance. +based on camera distance (see [Overdraw-aware LOD selection](#overdraw-aware-lod-selection) +below for a second, distance-independent signal that can also hold an entity on a coarser +tier). Generate tiers from a `.ply` source with the exporter: @@ -66,7 +116,23 @@ Generate tiers from a `.ply` source with the exporter: untoldengine export --input "chair.ply" --output "chair.untoldgs" --lod-levels 4 ``` -Then register the entity with a progressive source: +The exporter prints a diagnostic `meanSquaredSplatExtent` per tier and a `boundingBoxHalfExtent` +line computed from the full source asset: + +```text +✅ Exported: chair_lod0.untoldgs (meanSquaredSplatExtent: 0.0021) +✅ Exported: chair_lod1.untoldgs (meanSquaredSplatExtent: 0.0087) +✅ Exported: chair_lod2.untoldgs (meanSquaredSplatExtent: 0.0341) +✅ Exported: chair_lod3.untoldgs (meanSquaredSplatExtent: 0.1250) +ℹ️ boundingBoxHalfExtent: (0.42, 0.55, 0.38) +``` + +Both values are baked directly into each tier's `.untoldgs` file (its header carries the +asset-level bounding box alongside `meanSquaredSplatExtent`) and read back automatically when +the engine loads it — nothing here needs to be copied into your code. The console lines are +diagnostics only (e.g. to sanity-check density/size across source captures). + +Then register the entity with the source-based API: ```swift let chair = createEntity() @@ -93,6 +159,28 @@ which that LOD is allowed to be selected: The system always falls back to the best tier already resident in memory, so the entity can become visible quickly with the coarsest tier and refine toward `lod0`. +There's no bounding-box parameter to pass here: the engine reads the box baked into the +coarsest tier's header synchronously at registration time, so the entity has a correct, +exact bounding box from frame one. + +### Overdraw-aware LOD selection + +Distance alone is a proxy for how expensive a Gaussian entity is to render — two assets at +the same distance can have very different overdraw depending on splat density. On top of the +distance/`maxDistances` selection above, `GaussianLODSystem` also estimates the entity's mean +overdraw (blended fragments per pixel across its screen footprint) each LOD update, using +`meanSquaredSplatExtent` values baked into each `.untoldgs` tier by the exporter. If a +distance-selected tier would exceed `LODConfig.shared.gaussianOverdrawBudget` (default `12.0`, +see `LODConfig.swift`), the system walks to a coarser tier instead — it never picks a finer +tier than distance already allows. + +This is fully automatic for any asset baked with the current exporter — there is nothing to +wire up. It only has an effect on tiers that carry a real `meanSquaredSplatExtent`; `.untoldgs` +files baked before this feature existed fall back to pure distance-based selection. + +Tune `LODConfig.shared.gaussianOverdrawBudget` on-device by watching GPU frame time while +varying it — the default is a starting guess, not a derived constant. + ### Debugging progressive LOD Gaussian progressive LODs participate in the same LOD debug visualization used by mesh @@ -103,17 +191,8 @@ setSpatialDebug(.lodLevels(true)) ``` When enabled, the renderer tints Gaussian splats by their currently selected progressive -LOD. This is useful for confirming that the engine is switching tiers as the camera moves. - ---- - -### Running the Gaussian System - -Once everything is set up: - -1. Run the project. -2. Your Gaussian Splat model will appear in the game window. -3. If the model is not visible or appears incorrect, revisit the file path and format to ensure everything is loaded correctly. +LOD. This is useful for confirming that the engine is switching tiers as the camera moves, +including tiers the overdraw budget forces early. --- @@ -125,8 +204,8 @@ scattered across a large tile-streamed scene (chairs, tables, decor inside a str building). Loading every one of those up front defeats the point of streaming, and the engine has no way to unload them again on its own. -For that case, use `setEntityGaussianStreaming` instead. It registers the entity with -`GeometryStreamingSystem`, which loads and unloads it automatically based on camera +For that case, register the entity with `GeometryStreamingSystem` instead, via +`setEntityGaussianStreaming`, which loads and unloads it automatically based on camera distance — the same way it already handles the surrounding streamed tile geometry. It can stream either one whole Gaussian file or a progressive `.untoldgs` tier set. @@ -159,7 +238,7 @@ setEntityGaussianStreaming( GaussianStreamingOptions( streamingRadius: Float = 100.0, unloadRadius: Float = 150.0, - boundingBoxHalfExtent: simd_float3, + boundingBoxHalfExtent: simd_float3? = nil, priority: Int = 0 ) ``` @@ -190,11 +269,10 @@ rotateTo(entityId: streamSplat, angle: 180.0, axis: simd_float3(1.0, 0.0, 0.0)) ```swift setEntityGaussianStreaming( entityId: streamSplat, - source: .single(filename: "chair", withExtension: "ply"), + source: .single(filename: "chair", withExtension: "untoldgs"), options: GaussianStreamingOptions( streamingRadius: 30.0, - unloadRadius: 45.0, - boundingBoxHalfExtent: simd_float3(0.5, 0.8, 0.5) + unloadRadius: 45.0 ) ) ``` @@ -208,12 +286,16 @@ Parameters: - `streamingRadius`: Distance from the camera at which the splat starts loading. - `unloadRadius`: Distance beyond which the splat unloads. Should be larger than `streamingRadius` to avoid load/unload thrashing at the boundary. -- `boundingBoxHalfExtent`: A local-space half-extent for the entity, roughly matching the - splat's real-world size. **This has no default and must be supplied.** Without a real - bounding box, the streaming system's frustum gate collapses to a zero-extent point at - the entity's exact position — the splat may load once but then fail to reliably - re-stream in after the camera moves away and back, because re-entry depends on the - camera looking at that exact point rather than anywhere near the prop. +- `boundingBoxHalfExtent`: Optional local-space half-extent for the entity, roughly matching + the splat's real-world size. `GeometryStreamingSystem`'s frustum gate needs a real + local-space volume on the entity *before* it ever loads, so a `.untoldgs` source's box is + read from its baked header synchronously at registration time when this is left `nil` — no + value needed for that case. **A raw `.ply` source has no baked header, so this must be + supplied explicitly there** — omitting it leaves the entity non-streaming (logged as a + warning) rather than registering a zero-size placeholder, which would collapse the frustum + gate to a single exact point and make re-streaming unreliable once the camera moves away + and back. When you do need one, the exporter's printed `boundingBoxHalfExtent` diagnostic + (see above) is a good starting value. - `priority`: Optional. Higher-priority entities load first when multiple candidates are in range at once. Defaults to `0`. @@ -225,7 +307,8 @@ Parameters: ### Progressive Gaussian splat streaming Use `.progressive(...)` with `setEntityGaussianStreaming` when you want tile-driven -load/unload behavior plus the same coarse-to-fine refinement described above. +load/unload behavior plus the same coarse-to-fine refinement (including the +[overdraw-aware LOD clamp](#overdraw-aware-lod-selection)) described above. Progressive tier filenames must follow this pattern: @@ -255,22 +338,67 @@ setEntityGaussianStreaming( ), options: GaussianStreamingOptions( streamingRadius: 30.0, - unloadRadius: 45.0, - boundingBoxHalfExtent: simd_float3(0.5, 0.8, 0.5) + unloadRadius: 45.0 ) ) ``` -### Which function should I use? - -- **`setEntityGaussian`** — load immediately, stays resident. Use for a small number of - splats that should always be visible (e.g. a single hero object, a standalone demo scene). -- **`setEntityGaussianAsync`** — same immediate/resident behavior, but the parse and GPU - upload happen off the main thread. Use for a one-off splat load where you don't want a - frame hitch, but still don't need distance-based unloading. -- **`setEntityGaussian(entityId:source:)`** — load an always-present Gaussian from either - `.single(...)` or `.progressive(...)`. Use this when you want progressive refinement - without tile-based scene streaming. -- **`setEntityGaussianStreaming`** — registers the entity with `GeometryStreamingSystem` - instead of loading everything immediately. Use `.single(...)` for a whole-file streamed - prop, or `.progressive(...)` for coarse-to-fine Gaussian tiers. +`.untoldgs` progressive tiers always have a baked header, so `boundingBoxHalfExtent` can be +omitted here the same way it can for `.single(...)` with a `.untoldgs` file. + +### Putting it together: stream scene + streaming splat + +`setEntityGaussianStreaming` needs the tile stubs `setEntityStreamScene` creates (see +[Prerequisites](#prerequisites) above), so the natural place to register streaming splat props +is inside the same completion handler that loads the streamed tile scene: + +```swift +let sceneRoot = createEntity() +setEntityStreamScene(entityId: sceneRoot, manifest: "dungeon", withExtension: "json") { success in + guard success else { + setSceneReady(false) + return + } + + let splat = createEntity() + translateTo(entityId: splat, position: simd_float3(2.0, 0.0, -4.0)) + rotateBy(entityId: splat, angle: 180.0, axis: simd_float3(1.0, 0.0, 0.0)) + + setEntityGaussianStreaming( + entityId: splat, + source: .progressive( + baseFilename: "pooltable", + levelCount: 4, + maxDistances: [15.0, 25.0, 35.0, .greatestFiniteMagnitude] + ), + options: GaussianStreamingOptions( + streamingRadius: 100.0, + unloadRadius: 140.0 + ) + ) + + setSceneReady(true) +} +``` + +`boundingBoxHalfExtent` is omitted from `GaussianStreamingOptions` here since `pooltable` is a +`.untoldgs` progressive asset — its box comes from the baked header automatically (see +[API overview](#api-overview) above). Guarding on `success` before registering the splat and +calling `setSceneReady` matters: without it, a failed scene load would still try to attach a +streaming prop to tile stubs that were never created, and would report the scene ready when it +isn't. + +--- + +## Which function should I use? + +| Function | Resident/Streamed | LOD | Use when | +|---|---|---|---| +| `setEntityGaussian(entityId:filename:withExtension:)` | Resident, loads immediately (blocks) | None | A small number of splats that should always be visible (a hero object, a standalone demo scene). | +| `setEntityGaussian(entityId:source:)` | Resident | None (`.single`) or progressive (`.progressive`) | Same as above, plus a single call site that can also take `.progressive(...)` for coarse-to-fine refinement without a tile-streamed scene. | +| `setEntityGaussianAsync` | Resident, loads off-thread | None | Same as `setEntityGaussian`, but avoids a frame hitch on a large `.ply`. | +| `setEntityGaussianStreaming(source:options:)` | Streamed via `GeometryStreamingSystem` | None (`.single`) or progressive (`.progressive`) | Props scattered across a tile-streamed scene that should load/unload with camera distance. | + +All progressive paths (`setEntityGaussian(source: .progressive(...))` and +`setEntityGaussianStreaming(source: .progressive(...), options:)`) share the same +[overdraw-aware LOD selection](#overdraw-aware-lod-selection) behavior automatically.

    Y5az-_v!xv^w6=d_vs7A@xI=tUk3D$Rr-2PpMoHjKo1w@>&M1I zy_6p4kd=U%ZUjBx^5qugNwnpEQTa$q;wkhivvnP>$?q)`Gz>HxGy*g~(8ylDw|Fs^ F{|AC8jamQz diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xrossim.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xrossim.air index ee818032fc2321c6c0fe411632c4cf60addab60d..6dddd06e039aba806cef4af5cae76d8475b86874 100644 GIT binary patch delta 59287 zcma%j3tUX;`}jFC(`l-ini8fdHC-eXrlxYq){LSMa$UD&Dwinavb$JoW}2iZhKb2# z*Pz`EVOH$MVrMFZi4bC2JCfblD8zRn{Ga#Cr78RSeEvS;oOz$~zR&x-&;5DMAm3-N zKWOjxK-1d+gFmkDw{qJyM<4v!wves3=x1%Fop^w*sQ-bi%eMHK?JQMNjG|D27fNFN z4$&$lf7hW{{MYGazNUNINR6uLwUKo`Vt6kchg}0om-#%?+X1Hr&~)5p-J3 z>>t${N|F4j#kuUdh4_!Frt>5=RF(i6CZqq)g}p#b zJyw@`!FTJbd#MA2tz#rFM~p!$JG_!G8NF9r;)g|f7(2GEce4L7&nBVg(pn$OkcXfEu!h_ptt{ea;J-= zHZ%q+TS$4gDJWu<7ETn;V^9}u5(gx`6iT-H(Ngapo%K7N$3C!Yj%Yu*{OJF2_QITCLt-+Qi zot{H4Wc}3s128#vQ;wM9ixJMr{)v=@3(93{RJMv$xQlq2%4QmU!*ce<6{3wRYuL7H;%!%}HhwMNI3-~x zNXw6xBjDo;Zn{n^Z#<4I7)JfMC`YBLZA+XS=)&eoX>@k1dY8t-JYA;>j ziJsaAxK5099!XnX!5rzjXhST2loywUjSN1@T9gf1;1JBcrQ=~ZjkS0IS0bUspYoMx zq{8X9VtYE2vqchG@u{RNZ;w3I#Wb3Dk6i@!ULH?Fi{0Z!huuz8Gwl52*uw>M3L4(5 zX1K%fMMNGqOXf^(&0o*2z_=2D)-4HhOdZ0XE)r6v?43AWHlin`oZc@FC*mbr_%W13 zKf&cbFhzG_cJN_8fq?xmD@23Yu~sgKm+Ycd4ZRh7DKF5DB^PV3q^uqnF{+=SW|y~g zx(oLSqm*3I`JfgaEOFufo1n5!S}1?~%f!CY43~H=e)BmUUoLWdu1f5?7XXqoeA~3d zVwdql?ED0Ox%uK-VUm;=Fgzt48##mvr^sKJ#~eNeVUwG$ z^c6Wh{X=0Llw9^)x?iR-2lq@+K_^PRWF(t9+7 ziG|_iSwpI$aqWnXTWp+{!;6MR2j7n04rlgLPo&tfSlNf3mufO`LLQ929fkoBXgk_$ za?^5dM;=&x(O&|Iy&o@+=QkNFaK1OgCn3{ix`5*8gJw(UQz(=w!Bn<{RfH4HB_bBi zCY(q3v17TJ!mQ8e@I8wi%gzyId1Kf_Hiiu=J>>Xpq-&e+fDa!(eiUQ(F`kXaNfM3u zsY=f~j>AXf%%o{3a!TToj5{N+UJ_SHAU%i6R59tZ=qC96WNY}_hrIyN$7t+F%z(Gr zN@$4+QS>}TpYQ>M$nl}Z@s+|cibF_-W>F(`ia{Q`dPhHKKnrYDOi4JFfVWchPMBR2 zRiTbgQmDoZw9$blNm2+$yA!;P8KRAA6y7}xo$~P6#_erz=OR2zvESR1EsSn3W5On5 z9hiYCpuELYW=v0F1uMKU2Z6oD4O_*c#mk8*B6T1k!sGEFREc9IW_J_2huyHjgR%bD zLaau}q6s-P_csRz8aZ=^G)nj>*nI_P!>Sx>B++A{E?%?JA6}{{mNBTJtZ>u(=vwM;B$`xwo6slyX zT;b8LiQ04lQ`iOs+PBx4rznKO=EK(i+NEfEQxNJz#jyT<4Efgc280CX*$7CH*?l*c zfkY!9H+B3S96Hy=bU=5-g8)xE9--QgIDsjG{rfqNNWqPARdJd6WW}HmE;WasD&+kG zsiH8BVs1o#CmvDs5G@e&q{YgKO2xL}Uas#0@=4lFQWH=DRZfcFxTOCd?ua)n>OhOJ z5?o|2p|xp=hAl~cr!!!OV*Y7HUjkFCez z1vY?WVYm@V11T!Zu2>RPCs2>Vg53-57E6oFSdcg{iV zFq4+51O) z6_(ChVcL@NRwO&%jp!dd#ShPerk$ysGw-p1pBr^=#z}&Q&juyBU;U4LU7k#mKZ#rm* zC`mTLlOnJeVm6B~2ls-PY-|#p5)e3i(Y9VqQAiS->b*O$as#*bN@4FFg=e_Ap>-Pz*bap( z>ThKZXA5)fM$BRKkcV*XzO8YX$aYw?o7=p>D}l8xbC5rM^PB|U+YzmsCnm~%S1cEK zh$)=?A^WxWHLi6cCxN&B^Kz#Tg0NAtFn`7mH;8neH!t5#yC{L3NbPmPPPjOMHHF&C zpLQff7|*;@$URA8CarYjXb%m^|i&>%wf5u7N;U4WkL>9h_Rd+E7`ot9(ng!MA6_g zcJ!r&i_79~jdVE0+pl4^3Vaq(GTk4Ba1;H;_1JWu&l08IC;f z!7Y^Z*&ZyoP(F-`V*&uN5;TsZJr0Z3?2(caFuK2J<0_|`pHE(c$1H%+dZ=TDi`N}j5& zvfim7BxmNl(na$IIf`>^zQQrR2VgVu%wH5gb(8IoGN>Dx00=w5A08fa_{8utb70&D zhL)LqciXyE!px@t{*PdfL++4eOsITFT3X(VXm_Or!K z{pVs>YL}^(|9$ZukUoc*T=;9;zVI{NHXyXi_B(#rxF8h6G{9vEIZ;Dn92)gMHnjl9 zQ~*HY!LUM!_l|bY`6`%M*=6Q5L*Yy@aC=RcsZL(EuL8r76pT92gIBcs(W7!V4Eq~S zBLFyti744q4zHU%4DfvhL(72z_ijz_$FSlq=XvtVSqm&%2ot&R*La>CQU2fKm`3ag zV+%hY-->JGV_1C`G9SDx)BrW>U}EQiQoUFS7?#n6%I(i$T--72Wfv+NzfI@CK0tjZ zl}~@)x+NXMYJf^{r-WV@@b7RIW@pXJx(>-Tj4lBJ1%SYK?se^c1B)+UAoiwBtL%wkde_{zG^Anm*)wLf;SK_^-OrcleKJPAT4%zMkz~lQ@{TD}h%&bSF?0 z|7B+Us_yia3;jN!?+0(6Px$wSwWx;Z#=qj6#069{|HN=O#K1YRs;M|dpQ-bHrgFtyWqdC1 zrk>eN2Uqu$ej?-MO$q0^o%pbLWWc#@GQO?zVLs@lgZAmp8<$D2I-`jq{v+i&J>X_j z_l@85`gG$Xn-h;v%)&D==I~!5f1J~eF*`bZ?*G+o<4qf!7f97P zbr12;(9omy-B_{CZP5tZZtC=JUcy&+SBe6~qe^acV@1z#zSEvyxW);HwwT$Zw0Tc$ zx|!MQ@DtxTvM}*`n8<~{M*XZGrLM&(`Y!5Z^H==NVFIk9i?^EOae6wCxE|J7TtUx5 z-@X50cx#uv8&(#r?8C)AbkV!hTMF=I46ktl$J9yY%dac9e=;>}>+BO$nkE`Hq9ZCX zh$oAmZQJ^l1Z(Qzeh)=u-h%^ugehD!kF>WJaRK!>g>*U=dz=5U>W4`4d0>AGL-AxL z@A6tW5E@$!w8PE+UQ71_y{(w%;Kjv80CxpwF&QMz6sA6+(j>^^S*YCPsW`e$g3-a# zc6zsS^A7BHVqxCE4lcmq{3z(2ObB}og7gD`h0O5Xqc27Yuq*&b&`grb)%;x#fXZz! zv`~5b8~>>t-Kq4sL1R9(rDMo1TW0p$Ex_cRILE-z=Y{WT1Eky0CgdLorBhG) zPvBs9B67{fKM)@e-1RF5A2PS+R``L-qj!51o)OMGpLBbzgym+q1T;jz5z z*Q0YD2Ha}kel7Q?h91N1MB5jOmdn`=H^Vj;rF*!=E>G-`y&k@E{*0X)X588Eh4S?m zUJK^m`SOdq@^brSweCd~u<#GMa zhGxp!0NQ{6#{r-Z&15^G}3ivU;2h$!z5-0=|n(sYFB!f~jX=Y8y{(1?gYfb#(806-hU zjsU*{fXj!2=m1A30IC4s2Y>U4G3@*06YLx zA}o9W=l~D~fLeqF0jdEo1OSZ)2LfCJz;FPxAsh&BJ&(JWJ~oeA6b~0a5j@JO25b@V zs4kCNRy9_U`~A?tdl_kY+>$)FXc*~vTwNtx+7gyPFR&UedE=JmaSN*9(v*_`Smpti z0>F~2X#ak6&zH#@U;5kaaN!<=%g`R~fLrnTKCU=DG*h#`nod!|Zh}2|Tx@A*CU*8R zor3iPz+M2X0Dukv0tEOD0AB&19sm*q_#Oaj0niKp4Fc=~zd(LBBzU(@-A7EOe|!5Ut!w7o z*Nb=?T1l{E8UpVJFr(r*?JU2dCNi@{$LqMJj^s0bkC9wwRJ6G2`4z2^gaLt_qW~<+ zL14c}{Fwd036FFvamgLV==R}>?QPdw!mlw#w+v5gX}jhVev5JW`S6}NyOX{5Iy>+B z2x6R@j@v$d{(h&%Nc6;)XyOx(N>lRzd}>16{MU|cCipo%ajtZ)P)6_t&nF9?--_&g zCo)+QmBNeKe5XjuxYSatJwY(tPih(QX{Ya`UD%mk-D}D1I}B>OdZ!|Ce;@JBGs||& zIulO49l7JnD0Geu&&Ct8k~0tr2e+^@QaD~Kh$ikg{cZ_na0T1sb~509A? z3tNSba3H*%ar609v@uNgs#gUqN`L$ z%3vLjIzMXhj=s@y5G0)X;+$k|G@N>@SJ--ao`ww&9U6}j6=Ul$uxmSX7w;~;G!GTQ5bHH|7uufih9kD1lf$G5bJO4^> z{#NAX+62DevsZ#=XnG<)@%iK#|4`qP?3$68rBFBfe$(0kpuQpu7mihS6C@erk)uQA-fsr zR0~4lF+D*$uNW-{9UexT+J_^dl!vKn2)>_wL(0$}Q+y(l{iY@RM^p$#4E`mB&*+O# z%N`OZ)lI_54t)BN$0>Zj$FBsBfmNPi7PAD519V);jKXSOVa-&rZ zNH8(>KTlgz%_}Ac750~VE50upCO)!b!Qx*Qq~BSvG=e%Mswb%V%A|9?L<65_D9wuT zbp)m2M?LN_^pS7WW4>c!&4`A{QI8TG2l_=lPI3H)2lmhtjs|NK7k06Wkv(KOjvJ;E zJR1+j4x0I?v4b1PHMs#_LQHPdBs}QIUrlcGxZGeE-`=4eR#syum=J6G^ikyFSGLWq zXy3Ipj!i(uLEGm@X?xa^v?^}zVryz(-Gz5MFr$6T?Ip|{l1!4S+nQGJ<#fBcNw+Mr`%~5{7xFOTY9dx z9U14mngT6@y88Xyebu}w`9A4=vjvh0%!Q-wHyzdNy_kb#^P<2}812oXgnux$w;)FW zI&N|lV&uIfTE@t<-227bW*!17lCRr!pFw3J$*Bz2kedje#6P8FjCnUa@g35XDek%q zN$)L>3%C5R`|!3pMhvt4?%`@)ol&sl!i<`j_JZr>VXJr*6P?~Im>< zW1^ZW%EQLH>*Q_M#8GF3QLPm&;Tg!4ykpt6Yn;Z`Rw2D?uJCB2Mh7Rv*e>BwAOBxI zGsZiubX3}@1!;W75ZAO{BVvS3k0(bt@MGj@{D5<%P6y>q9cmu4KdJc5G5txDDfUZv zvgD|D8TMk>&*7G8gu4#T8dWrcq~$P}Lcp_9rz2=>EHen1$-Cy5AhdSkBeeEqAGM%U(qwy?Gpo0`7)q7H>RmG*Gnr%;j04 z9>25f!<%K?!Bn%3Tmw(tDKqfNoifqM%dSVAG|KB3FUCqB<&0cIvlY7v-XoI&Uj-`P z)uhI-UyCiA3=EO^jCzl~9#6`kdW=q$H!&K8)DP;8m|7ho3n|p`pIVN;K>t62`&y3DavQwiH}<%elZPaGQF^O=!#$c3sWYx{33_ zzogudUtnA|6xg67qj2QPUVOi=ru0G?N^&peOr5-b;ta%y%`?Ilg~+nvP_*u$3G4I4}RLBU)=gUK6 z4Pb=e?~oDZ&(^6rfJ(>#kOJ^~^Wz&(um>AOM4E$r4G{T$%BPy}Wr)mm)Q;PcC`Uzx z)OHO%D~S9rbZQ{-=&bAQ_1C3e)a8o*tlRb{qr&sa%zM>bh)nH{WHf^`^gN$9U)mvD z2^&MYcAg4!cXCHuqrbqI^bT?7Z=(vDxw9rj)<|-vTRt^Q$9+G3e!deKv;h4hl*Gj5 zi|6RLxf3AEZ6xzzU&55-miFfRo%nI-zh8Zos{Cs4uV1APuF%Atx$_k%ss=L`q=r1H z0i05+SyU!_Fcb4FDXLGnP(6nf)zLrx(2BpP2bZ$#*yTSN+uNtyF_@3TLrL-2S_6p~ zz@~_00-q!g4`7fEvOg2J17^QN!a&Knm05lhQUN~cm!+#d|N5)1zveU67p1Kx1LWgK zaW_xLOeL#Uym1eQEJsiBtTGVQzc{8 zqeCIGw#XfQE$K|ob#~5m2)2vO%G1Lci>gN*f5S7R-?$k>F=cKX4;+BwaaA2i>1 zAZAp+`JP#Mq_ZQbupBC<^A;^99g?_44%CqjsT=D{{twoJDgoU{v0B^2~H3S zB11(3CqG@MDg&(s>-(VAjf!#S2mF4^3FsiBU@a^)v{BnkOMeNGB}c!XuwRHrI{waK-x?b(qP z?)-XTyJ~BD>bY%EO_QT`FRR+xQh42~BfEb)r0TTQd$&V)^D3bRq9MFQC5KrX$)R+0 z2|3KO4I-beIY|x+E}>Z1>z&w?7~Ff8i@!s;_TM-5USixdAXj7(v&p$+X&DpRQTSdL zf*K0Weahr$SFq@UK2vv^i|<_>xl*#uZn{x)i7^8$;5CyAwmm|rfODVXt;S_Wa>R>t z8k8|?U0V`2O8iI`rLKjy$J8$&$c`}vxbf4($@(#<%kWKDO9+)i<`)&7D8K0OVuM3I zP_%_iD^^L!*w5meAX9`Ny2mUNXZn$4?v2Nm3xwuZ}WwLXsFFKidzlh z9*D#}pG32ZP9&?y{>`Sa{-H6`NcG&LLWm|5<^+=~=jcd{+e;_$;%Pd;i%Ijftk_ZL zL}JA@5trbFK`<_fukhig`}AJlFnE3A=j;FedVP~}{nKC9H{V_V+*bTzu=tHq{O%v| zN83yxo$zHBh&cG!n{^q5PM<*%=U5G2 z4UV5RL-EE7t+)}@CW_iTG%O^v;-NUIO&9HTJ=+$^d>eCx#!&Lh{j z*%8TD3@Eku>ZY*Z&!(l&Q5Rg4riU`b@0@!DCm7RO|n}wEo#Y z>sxz^Uo8~3|0@3QKXE8qClbhnOoGoiSCA=%d*Z1nGn!2SZC*=1q8a5lg>frA`H8GQfDaSVy5EbbNHf+PM+ z%Ow}gGxQ^VMo)BcF<$({GgD^#N;9^D=DqJn{ED7r#ryj36VFZohrhwdmbd*-d*gg* zeVoh-_Wykfgc_5!n)8IbD#n$8uc@Hhq*p!_BBP9dj{!AgY6{ZHn%u>;>cK0MuC??= z4R~dT*Hp;!$fada*1%FzRy%H~j!T^QCC&G4+WAo{`Yv1{?zeG8|DRR_U0N~Ve=B&s zSB4H=IfUIPQpvQA#Bg?-NH5bm5h8Y05;t4RCg!mVl6V#Rv1b-!Yf(Kb3r0n$xJFlw zI*{Npja8O0A9J`>TV+b>tUam2t-2~kR>}S(dA5{8i2001MQLels~BZWwjlt2l59h6 zl2vkOmOHVOt>eiR$Id13Vs1vh6F5L64sr4nkIcx-6Il1k%WqFcyVZ&Z%S5jQK!{9$x-<7^VRf&B^<$DY7`)(PVll030FV=RSjAkY8g%&k?74JC)%y@+qw2H<_h z_%m-dY8jJSKIL{>6(h4`Lo%;IGX9MJCe-J%RQX|1p{TC!8)eRRO$k)>R`GwPyRj&P zA~UpZRfpuVDM9O2btHwN1nrY9ZhoOo0x8P2hWiY&0UY55^9x}Ix%-a zvj<8$q#0u5-u%hKep1zRR57wk4($mhO4&8ZiGY$C`DFJ1XboBNr;jy-z!1m@Et+r6 z*`h^HSNXF_`+ zwNJ_D_8c-csW0y?xXyk(zWrqG9sugpMY+54CJ2!#T5gMeWliN#%Snq4KfeIw zbBIpUF@AUPWy3r@8`XQuZdP3;Ge58t@G-N(R)Ths396~)G!?rjLCvWjLNu}qQbb#{ zLy0DKQHpAdb{Kf<7QZccB*Ev2A1nM9heo*#At2Yix+iQ^Xa&6CfLymbDyY^oBZ(H^ zrDk%8)_6)aYQc@IRl_N{RlA1++80G>ue$n@$^G~Y;OlExSfx024;GTI8_b3vHr7c! z^1nl`dp<334nnB{)_=~drsgsUN{NkRDd8DKw6mL1con<}XMWkLWoVC7C*DIZnjkF( zH`3)r6P#fRyK4hR>}F}eZ0^!EY)@$gY}C(Qr(oN=D)T|evmr${yEz~nYO_xYR@686 zFAIjgfw9CgS}^36rnU++4*tu8nb0_Z2Eiwd1LzyTG5@P?5TAt7FJt7i^hxw!C+w+E z*+D&kat8CR;x(bNuu;f!yzkO+%>Q1;-8K=98@}-Q<$$c|0mFW@6N%M^UC+!^N%_k1BBw zq6YEVgWVeEsTA7r#Aj}Xc@Rw|h{N4F=9%B3bj5B(PM2~VkpoRL(*asc{kpW8$}5cQ zma|vjokxi-v3?$Fr*t}z;wGOD9(h8zTfuyu>HQAc#j;2Ys}ftLpmMZW1n+&wEWSj@ z58?}cn~WNj2QuLu8fm2Pa`mXr*dsGn)TY^`o_zNC$w5~+VZWfm{%ShxLO0cX`A+Ff zBF#+=RA_*TlijHhqar4)rshAXkOlGMfBU5OmR8dUCvC5XlQK(mg0u56rEoT}0`#SA z@;G9pn+{rxWHhvI5O{DRl)7RkK9l&;t!{pX5}!k?achF(>*4s#^Ler5!9bcQlr%W^W~|7)TaQ5NwRE4X!dqvCkRxMqRidV>iB7OdN76 zUZCEMrx8cp$`-Wl#?!%rai=PTaF2gHSqL3YFoE$G6;h)W+zezM*NNJ$9RaPCUtyG| z6DL9QvZjn9PQfo0c1*BA{X*c%a(`2i6Qh84sOQidY$Tq#=Uv}mi~m!>%Sb+gAL^Fo zwS-dPy(j!oqKge{uA-)9qER8Oxehvsg6DY)cgY+NJjGR%Is^LOyZB$Pu$Q4SKeBn< zjlE}eqO2RH6JK3Il({u7Q0>t!CC<9FEzs}LE+dY+Nfz=dxRb)&vKEql#^_za&yd;r z!d|RW9W2 z)2<`hAebcXlYUG54+t&*f(=~>HY4;Vf4%~57dzigko)IX=|s(>M(61mvh~C}w^op* z2&CDz5XB})53H6TikX*T#rWUB27pu4Z-|d>l2iz1NdBojs_{1gMjbWDzd*;Rd5-)@ z7pIvL3ieO7dXX=&yn9NkX#xWvHME;keisUbwb?0Kg4kXiW8*s%`Ise;;$3WMy9!^= z>qI#djsk^-tBmaT9SBsVQ)w3R4&b>&Uru3a#sPd2A@0v9PE{X(OmEEXc^bGUwwtun z^v>v}Kl2LY9Vq?h6y>#`STDUoRs)<89UB@c}j)0ySfNI!uUCI@W-!+W?HWZO3Oo?#1WGZ*HgU$c~G@8xYn3Z$wwKtsN5DOU5OeBk88OAgesnJ%_pp{B8~50?7^D^P!(6zfF6?=jSO~+J`xncn9p)6@-bbYMJdDq( z=9Mg#92QP6-tp=1E2hP&!>|{x@ES?_iebk&bp?lsp&JehXYF6C2V7@wGpHp*G3VrM zhVxTIrR2p~cwe#hgl*vI1s| zujbVt3T9U)7CRm$B6=Ry&aPIMpvkX)!Y906qy~IVaJW^##v?d+7oj__H7OFYbssU@ zh^Gng06y+L*9p?a8ZpVq@zpzy5MPFWevDIhd-mzY8K19w4D8)H?gj9EI09=Bn1#U7 z*=R1G7lFV!1ePGMa1IF$D>JkHFsB*#@#PPPrC%HZgz(!=PVr(j2npR2O=HpL(EmdK zG~qN_3U9E|1jpbmZ`uOX{{ZJa1Unq&G~Q;&P7{Y=OXFRCn~`UvZ^P#*;L{u_U|($m zWXr}q>S1Cnn%(FMvw74M0E>au2)-P_n@PAV3E{!# zAS{DdO4uqXw6RSe>+cANb5uCT`U=DU^J7HPb%MBaws{ZBX8-Y}>tf^D|CrVd6|DNN zz0q=USB#c3b&_R0LCVhXxU}5kQf{{m{(pz=WzudRv1y!9CUGd!^ixZFuTSb#hB>Vg z+5afAS7GjD0^3y*hZWwvS4(@B2yB1U*ssz%G-}+{57DqhLNrQ_f!G~6Dn60-7s=@onsYB&dfb^-N3{*)670ZUzQPb6wJ`&18r#B+gr$ghk3icB@ zsRXvIA}84B1lQq&z*hVQsMGfbDEflguL3B1H1;P{j!)r(IjNIK6#Cvz-89+50K35^ z2R5sd%{6S8tEa%1_&V8V#$gSu4*(H-!`xOX`Q2t<4L(P2Gsj>vv_?AD07EG`8GV77 zVl-O=Q^^O$#c);8OdA*>FlKoY~^y6h!-%5@1PT|>+fYY4c(0t;&T6MQ%zt;+O-GpRE@HE7r1 zCh2D+(y{Oboi)=_zro!Mgkz0sk}j^v@-%E1L{9k3U^AS2N)D+(P55S27Q0S1te84n zLmgU^g|JB|URT5&Y$`*Yv`?ZqED$E{$D{%W@ioF`Q zFXQ$G$Q#T)*vE4w^vDeuhsah_V$(9UCGI>79Xqr;aPskmZQ20c>|i$ zmlpV)j7>Wkf8=Dszb6xePEE2Kt62GSkm6uah5H6Z`qf{r{ClqH$ocV%3zHHqOv}44 zQ+Htw<6?5c#RYj6zskE*nXaoU(dn9XFY~Sos%ytDxjp^p?d=Fhh{7QhB2GN%5HIc zMnwD;p@hcI;4>2`!g ziU+rPjn+Fp*Kc{AHxm9`QYJS?>{p(OVZKE6=q&DZ!zH)8s!+=+Z4NJo{xCW@!-z#* zku&^yjx@=|o8Ifga-y%|v)am__Q4bZHP2bXr8juZ;Bk2H5A-^bNvb+Yz;hJAx6>%p zEs9;YLmgTELSE-SihH*w<08d?J3%&0W8^`ZiZAXg?n(VXPaIn5C8Ku4F&GNEP~Ezf zZ&1|VN$;um8Y|u6`yqhdV4h1OM0q->>{J!L9MqM6P#MG?8ma5lBAfXpJ1&M!Z*q)(66>FY4!s zW$gtM+F4Eq;osb)exbKeD5q|wX*+p3&_x##EKFsD(ij_r-XDC4jigv?hgMcy%x8NT z53#7#M;hKKl)P1cb#58rBI;aJOJ}>9MhS*EjxJth!O@uEo0O4f!Il=Y#^reQ0NTS$%Llqs73 z9EDdY_zxDr*}r?>H4uJ;(&h;2)=60o{ZZ%Un2*+?CLQ<##nT5-B-1`uNd9tms>row zP=AH$FSb~n^QGk^i&Q?sFbg+in??6Kxe@G=(7C6kYFg)>dLLmY3uSp3mpT{mTxK77 zlHtaXtYl1o6Zij zZVyAkJL0zISyYeZqxGOV*IeMnBy!ndovJIR=31MTze4K*Jme4;iMDezSkbqE z4>Zqc=Gvr#QlJ*59^~2`?dV87F&%y@Vp(^^wPNG$cKN~!T zl*O~Gu=xT9dgfgO4tz14*06PNU#rD6Ia!_J;VMEN^>QDQ?ACdzx_Eu3%o7#Kj}~z7 zZ|Pc(3g^lT?D7NCF~DVZV)crKN7J3#ylHF?;Ir9?rHZkQZn#`AzcF}1``|kmt&)y0 z!DWrg*!pU~0$*&NHdQm73jYJk2VCPJdk%gwFC632GYz&nj71>JwbtPHhn)w@Q0N=| zoMJXvYif|9$76+)DmvZUGB1OxIQ2MufP9=q-8I5{uE^0`63~`~Bq#0#Z!P_x8)AZ!C-~RD+lI^xWd%EJ;Ke^)8C~b~#Ik*zyZK+qec@y0BMGq0n-dZljv`*1=jFwys z$oXiVy_`7eW8vSz)<6o8X?1Wch}MM>yr4@SG5uM7p;fFxisE%s)PPeyGKP{8 zLSutLEM#R_g%6R-UMnd?xrkb=`LalX|C{Gn$KLU~EZOid{r%n0rZWZ?j1kLMtDX#|{gCq##3){(Lsb`||VtL~L2pm1p$|!}Doj zZI009W?)jD?TyHD6_LMDu@^k!e-jXd>?sVxR)5j3bt22k>!=i&Ei=W3fEBL&0I@3i zl$GhLhvCFN!$CKcT=;!pt8l|3mfVUwk&A_c3pKuY;C!ScW`99;4*Agmziy zl2(5kVuRs&2tzFN?1b|AUG|W%nk90ibQ>SZ}+`rBUk1h@-9L z8ZHG_2tciJ$lPONpUT{yZP$UIj9Flvbg$pK8e6kEfCk(BY&*SBYDkd~U`%$VWU)x9 zc+}b#7c1;uOaSiAc+nrMN%mrvmnLVYC7yl-vAd#gypaM!_P0_8}x&q{+0l zd;E}M+$#>QRiwTO!ZQ>Fuf_wZk6y(wOX9;U&Oxgf+?Ij!6vb^}PSict=$9(~ZR-oG zonO1LrF&>A8L=#TwjS}r7Wh%40`=A^M!Y^x-FUCIl=@}^jtdpJ|J&BLF;3Visa8*I zMy!DTA>=BHZe{cz6w!vU5VAHKK8vFoB-ahP5V%OLd&t@)P6iA+XxEFkJHzInT_MjB z=&5<>^&T-UatO1kDeQF(TjwGrH7Am_3a54s1>dX)YVYS1WzA2?Xhl+cuyTw9cTwzX z=inzx&$J)GhYoQIVac4S6@DXF!5xnnll%))=(&;!gd1gBs$G~&0NJ@CnVmbW5V>t} z58);F(6r^z*EEXn-?PXp%kIwAezFx7lgWu2gH#_Q5%UtR&FqiThnk$@PHTR9;Nk=$~{au*G>hLcW1K;<; z1&WdHLs_x?3j0b%na;j7Or+TOzJJdTVRfM$BcLU|Q`jdnn)wUkHLGKh;==o(c%9X%MqyyToslMD{ZUc-D4UbTmb zpC#Pkdt-RcT~Q3{xHda!4s{JvA701OrKywTcdduU z+Y;7oec@ef|6S45Z8R~*<28r-hLb*Yw|;``;2dh@9NB=4t{saqYSScjY3j#iKo;VLH{7qcLEq$^0F7`8QEVYF<199hw zoO8r1$0+)Tupv*w1(wT;gtV4Za?<&Za|= z^!qv?ud4O5)>DK*(vU1FCi8_7`@OUP9a#wlk){1&YCk+xl!$z;DWNO5qTFYXv-!2T ztUPZ&wZ%ggX}_Zt@v_whtDOJR9uJ+xN&)E>_gPYPNnNtHMN#*7kj)8cVQX^*AS zft`89&w*twqD1*e_6WUi3cY-|B}rbS3PLijt?0yh)}^R|T^{P+DR#pcwPWX~V~p0Z z&QShF}Om8`#4n(ir4|D-4bnfL^2mxMnsx+Ly0 zqf1hoTvAOpm&5~?Bt$+4xuhy^NriX0bEwEAy&zo@c&J~mGw~9N*yN3*R^Fljtnbkr zDs3)!qaI+D^=T44SY;uy)^C`sbzrU2!HSn3$1{-?J9K)GVxg4>akTOvMON0GgFFbb zZiK(*AhdBihx-;>$Q|TDs_tSplupk00d!XN6>Rn6%IW{Y?dR}#6sm5Ha^f6RXqnH8WG96UTg6lCpRk3n{-W|dTNV^|KqNk*a)!vSI!`((AUje`rF z_eZtp9UI}SWu&{S&s2_b$35};%K7eiFr92LoR0aR+~tl>F>>~WJ3erT$hxgC#MoAl z^(eM#D-1KY74ocD7p45%15b(NMp|IFZE5L#sERzOZnSfjc1Tv7r9#zcpV8PwQt*&0 zZ68po{-jcsij*HbaA3KT-3Rxb@U?YP+XzJh*B1WmPXiV_?1QKNe=2Ma>Q#Sl=>2~w>=sXa2$Qsvj%(9t zEV^yG@|Gt)Gt$}|{xbSsjmiIJ40fl0SEaw?fYEzHGAQF7N4X(o4FFp?mA|HX;T=>* z_C7A#k}<24D|~T*qrM;A$~P&YxQsI;h~OP|fdg8Oyha;``x?B)PVgqOIn*NXCblR+ ztVxs9f|n^q-e)aSzSfi=3XkKHz$=jnq8Uymh^F~uf@s3CkxURx_@AN#Q3VO&A=r2u zN)T<&5%G{9ZXpxIrf|Viv*$DK(bH=0qsa4__8{H6X^*&gbcQz^?*HHnqkLcw^&b2vQ@ceVwqcRq}YtnIi1)QV8AMNoCQ;rhg6ld6@E=^Jo=ay^+ zepJk%HX`r3*lLfNzMXq`yPNk=&hCp3vLRiOQr;K$0S8;!7ca2+_$vBcsWQPIA19`* zCe!}PH0-z*WZVczJGN>X;}u7f#u^qxtc5_z`mSfpIii)*TD?h&V(F-bWaeK!N4A#P z6kd2&Fh|Ceo+I2hS%ye6UUMM)O4WBIb7X6n5I#_WuwQ*wHHW&^SUyy!4@(b+5{pkI zO}~vzrJlUcJDb)DKiXKr9uYymr};60aRh#eBcJ9@S<8%YeZ#3u;~kftC0;1U^uvF` z^~#t1@BtKkw$eKQPjg(cp=L*NrDQeKYt+-rmAeCQU#i@FhEfxN2l`T1+9l(?2)DK* z*A+?T7&*P?REUxGP%83RPIr{d{xW*95LvJ)O=tD~I&Q{i%(_7s{mmxGTHS z|BD57yVqaQIIYNZcV#4wVsHuo!4PGBe>~tbKZWg@&c=xJGI+O#tj5dS7_MWhL*^0#{{xf$&w0a(pm8 z5-(B~1mm+%5@6C(GA%N2xb2|7C@rGSrTRhIVvEuueVU{ZbTI?z=sKnxrA3LLyVB$M zcFTzee92}qNAWy)cj23AgbMr)d+4Qd1S#+bR(c|eohP}+VD z>j1~Y*PZL!oQ;)`(XVdcQv@G= z?K=n$z(2QguI7wRW2(31rsP)NExF|y>+RK~If37WzFcU@2y~-jU9!fpq z(x|-0!_z5+`O3HuJZh)|zkjAMTjUg*B=;7?Cdnjh^q(C=*5VB^w-n|_Eroe4%4See zt2`fq`&k_{Sm_#yb6t>6c^R4FEZ};eN(*|s%2A=XSZsAF;S*!X5P>^ET?GCAajGs| z1gn(Y`c&grrweUECT`bM<_Kk|ga4DS=Xd&%`9%RCA-h?Y!#jGeNvE+BoG$SALbh#E znRkW_uW&vqQ&g!Ef@hE^llkB}v`YBtfG-}S92kZV2(a!=jPd`dDx z7KW$eh04}2d@HU}O2Y9-C>qbA+Xtl~9N&XCD+?lUCEltG9*hsi`zsfrn@;)TV0;9m z^w7lTf&b+U!B0W9S~CQm36;#Dcr;$395)nS1nI)BLt$pK@-4b0DnA>B$HBS{!*Fl7 z{WJ^@hue)vJX+}yi4QS;@1abM#8ZvmZ+DSW-Egz+!Mg$!(@EV^+I)sLS_?^Pit8#% zTsO9Q)O&hT&k-#gef6gOb7WsLUoN;HILPGB{SOb)=2!?fXMPfpG&Ceh*Nh*uCWSY#5B2}y(r9dh_E&04>s@C_83 z`^unbydS<=IXN01h$ksCqw&7+Mq!yeSQ4$6<6-5&Oy0t_w`#G;g*t~OdT@J#I{b0?MXRDd<#_>)So;vd(e5n1jrbhjiP0R z6_YB+sMgBCDl=Hw?wL`TY(};KG9+VQ>GMYpkvqBPqZx;9>o zfk0;La&!v>wB<;R5N1Tr96&N?v2MMTI-t7W*zUw2;~ z*VOU#ow*4iU;<%L!fIFq1kr$kxRL-W?zn5+g1B$Rr7c=(ZU_Qy7%g>NYfxKlwTerX zs?|iaP_>HHR$Quasim#8Xl;v2?R)0lJ4x`@KF{+$pZBlV&+peE=g!QXJIk3f=X}o@ zGGMVnEudzBT7cmZftjzA-^1wy#bv!ws}ZKl$lEL0xvCpBf{}q=?jGI)T^@)wi;CG7 zA4Rfu6%1^(NU__P?zHH-UpwdudC+5J9~6X)IKB_CPbD7G2X*Mfck)h7OAgDO*K4;n z-{nhIP0~2QD`QHu>w&*63l98lAAt&_UjSG{-&M)+fqp2wo9WU5@8sHVEpjU> zKYk&mrynCKP7(d>W0JN?SIP(U>VD1AtX3~Sua%!tw;@k&TV;-?*rz{A>EOC%Vc7Tu z+uFR1x2JH!CTK7%WY{=+!+&z;+Wsg39m6mCqY#jcf(M{Ot_y|A2ULiw6&6aRuu$rR zh0@@V57H~ISO&uU2C+c?w!*P2$O#aHJDYF<fhaIAb@NSY(SvCrMLGP4!?`VloZIyHtAS|B zq`W9qsZ4r0ZF1m>NUc$3kb6FE>CjrR{R&1Eue9)oTuv_0``kB}l zKd8>AMXP+o;%FGb!Bf&2*aYYDt;OrJQNLv4-x5`w(FHQ1k3n8MrX z8me*7AQT0IlQsyY>iJP85-A*}jDiNa_geK(ar#hG?s#z_Ik&U`VdlvUwh_)VwPfrK z3MHJM{3qoV&SXnwR(z0Uikv9UoCrCC2~XuuPJx4U`(cf^oNU$(MpbTR@2BPqxMncw z;W{zsZcQf!mG0~RWnwHiFro5_eXRKSsBrs?+8s7-F9%DRLuzzrlB(wHHGVGrJ*bwb zB#ueJlqkEGTnEZ{{Ul!Mw1Ogl%o`$B0kf)`k-ZnDM*}B5+KQ|&TcBQ-^1utifjQH9 zNpT|)z~D|CvR5)Ah{)9n_DW$+JQ{+`ac|Cx)Txv$xahejcP#bk-EA0et7wx=hxW|3fV|4?}6`ExX z?mG;{Fye3V{9$OYFFTx(pChJhC2z{^Qitn?q0#;M!M9!!eF=j+mm#nK9dSW>&{3}>U$mx8|Noc4}%OJ?^Zre zuD_&TV%e+PA`Nc)mf~fHijPKsvAFS)XqU9w%E zIDj#&{mKe^J2g1jxcO+*Kj^0)hcTWqwJH{HG!ZX3tFNdWwB~T0Tr?VWncjFwe^vt% zV`ktokW>?@K&eicAM$a~wQFnRQ&gVKD>hDcGaLaSbpEU(g3 zE88ADfai`u^O{QtSgB59pvW4J@Dmn!ZG+cu8?S=GVvo~8NJeHOji%W1(i zoA$WEWj+O<6CEsbys^#v>C*YE&vzERD9NFWM|*MYI26#np-*13Lz=$&`O}Nus$AXB zB#*69QmNhG=4Q$#`!v6EE8F93mqxkoaX6GxG)#RdZVNFG8`*=yAB`CMS=dhqmqZUUI!$#&Z-~d z`dk!}+UVMf`o5ZKy_aqySYv*u@FrM8I^^bz6J?pO$|z310e78&fgQT?HXWMoSw3M~t(q9~mv_ z0rNFnJ_!N34WFHa21qiVng`<0$*4o7bhIKpd0jlOR&&6wYCd$rKs1rY486u`wfnei zUineZ3CrU5CLTzckpvRpbS%&R1P|H@j4Knu$=&7?)%+b0ad$8-*qm4Lf zCL9dj#DizTu-?E6W};B#gQWz#>430)h(DZ(A~VbS=smLlG~Sn$50#%RS2^EjITLDe z0IdN!4M6=B>7oemVQ6h-q>D(?&JxD{1T>+ukgCIe-&!Qic9D+r;#)`uyNsSD9wn%K z0H^BM4fo+uvyc|Cc*86-3Lpmhvw3d6z@oUXCM-pE>bcmpe(-=J+2U;}NqF_S`-2+3pJ=RnK-0#Er92ghZ77;s6eN9c38ec+n`)8=QFv^!pQsQD;OvCwmvX-oPyqTSiavR&DVQ`4&&_ULv>Cw!WdPsEuDV%7p* z>yfimH_2YN1J+-ApNO*hKCPWYX^nnE4+vHYa9!71Bc0$fqU*pQ??E40@Q<&faFy*x zb5_eXwvZYWy4x0X?ljel&#+ohyi$#ee3Z0q7#`IR~uC&+z6s zAi(^EKb?cx1!|JW#JXW3mgh{cJX0R1$A8U1t-8l;lT`WWvNSIfztc;nD*JWZZVQx+ zwdRDRw;EccD6uF!EzMHRrkypXDv*!Tt=28%OwQ1W6Y5x5okes6>*t~rzq$S`CfxQk zrh{2K84*XQA2j%*xhPbelhOfyITvLc%qd9ae6_v33ubsm`}&h1RsAI=92>Mbs>s~|8Ngbns|LECw9qdCAaiNV#u z)%>Q$74uLq(&KaUP*1~7zZWjc;T=F)3vA||rE^AikX?G%+tJnF-l<|hxHmx8MZr`u zt^W8)e>P=xz@1g;PDpI=cXjCS>#`0HeTj5n$gxn->I!rqR-GfsMfwc0DB$xJ?_}@CH)*ab}_JoLLBr zLe`Ot(u^bDM2lTdj_7CJE@XK_unTqOO%C~+c|EW7Ja2NCFoicc?B`F8rmLe8?Ep?C zR_ez9PG#R5E`J7QrR*;8Meo3QLk7i9fW@NWE6?)rrtXU2vX?(eq=2*NKWC^H6oba&LIzM- zyz&YI{|?)KyyKNd=x7yS!W{Qct%Nc7w?+`88z@R#Yk<$-ztiBVzx=PN&_We(`u>l1 zSezPAKs#-I|MpSEK8v-$xdKh=U1#7_;Pe{XY>=x~76OLJgg56Sd2{zOz{oNQ!?zCr z{YI>YAX@P8d=!w`3f2zyyP?bD)$Wvh6<`Pn;C%1{5=&T1)%oKz@IHZT^Pkt{KoGPm54*bP#uV2emhVg}CvG2wm0pT_ac$!-LfkV3a~vFY{l=bpRiuN%c{stIRG*N_;BfBMSvH^7r>4{mzF}LvA8p+actdaIHAU%r z3gueRcPEJ@lT8V3?b?O34pzrO)hEL%zp-as6%B%_HQv5( zbX)dz>Vy>S#FVNx?i?umQA)+*)=i2zsTa z1%)XN1&3yU?ty!rlBs(g zX7n1~y_QG$6_=Ep3za9`uoXDmPNI^MTz0@b*X_Lqzt4gVv=V>CB2}Dwn(MsRwpy2) zYSMQH2Zs)NvD_0hS@|mU{ ziThDHO!~Y2WYVuuDBp!iUy-+ICToF7UqL2)kU$W#NOnPIxsKq#E3BW?hq%TOrt6QN!2EYpyOVI6q!a~`{nwo>P zwjt=?`DI3ewHPzyG^iVoN%tO@0EXsq;<{0ZH$YLTd$3zY=86_}rKe!9)^v%Nz5^3h zw7EH`w;F;9q4;a`~|lV&_t7gY+B*LuxSxMUB=zLx)ahD zK@VntYVEkRF$ff(POH03T0UOyT$uLy5|)?C_)PDq~z z)q{!tA6iocYecc~g!C`2HIA3TPD1psd}|oc>_4_fc$v^Qpgex1HC|0V{W0EHg5uz;3kUvKhTVu8N&t%`{_N?y zqY5TaJjv{(C`KvX(^vrBdsIxe;18AplB>ZL>8it5mqKZKUl&=rO z8S&m_Xu5aRdDqRf8;)HL-XNRsYs)z-*S#|lc*$~DlvaFwImmfC@Sn@U>L%d6B38hY z7dU?fGI`Z+c7b2ovByf(%1iAE$+Y6GE8#@C7>`{E76uhASc$r$`PjA+rHMtapTXi% z)DHfr!^x$>Ut4RJNWQ*-zK7`>}r16U z-L`}NP`I){!Aua1g;T(2UjZN`80i1sB6kfO)c3!E?*2bV?zSa^$su`&pr@Q!n2Qj&MzSd3POxL`)8qk^6~D&TK0sQw5CU^{~pEU zSSF}VcKl*J@&$J2y#e(O5G?|&daGEmJnT`mR$(&MvyuaH*(I<2jySwPdwk zep}_@3_2MUwbXkR^~0r`;4q}b=Qp8ghN<7!c`(=6LHkmfKD8NCiZAico6%rbpa<<-wE(KKP^`gb?)2_(J5{^F zV4Jv|I()qFyYHi=3E9v^&k($NX;*f_Rw)6lCIKPw~eV z)YiZ1*9Sc`GqsW`5r`gfaFVum`~g3(fGn@Z-sPx82)b2S-2bv9++#&Ei7G{1rWe7N zzXv8EdvGJxm7`3g!A0dLVT5ybT$BI;nD<%;+-?~L_Mm`+U>g#d$loRvJOyo#b_4W| zS*qIwds?#WwPXS8om5NuVr`^%!EhcCh&{KW+yO3KLdRE2v8G+(3m0%_!CL+-I1bb{ z+*we``xnDNOT&rK%|Wby$l{}0Q8&MPrDK&<(oD4+^aJI@QnDx#H`|7~#OEy1MyB2= zk&8;sTlL+y`DB}|mI&hYCdLQm+M7A1f3Fu);+o-P!`kb@-+)f0A@XDM{M=TRf zcgKq*Aj?)K1h6v%RL%D?lX?sV)>K3M6i0!tVf^iytD;WWv;%E$-B6GKMAZK`Jn!GY zZKO*C>-hEovr=0n7TF)1&dX4nZEZ5lpc&)r=G)KD%8X4cQtGM{My>P!-n0{?dL7-L zqc%do4-QVh8{gT9Vy3bkUxb5EWSlZMSLPPDB0OZ01G~VMfd8e^78p{{q6>dqK{r=q zvF8%YbZqcExo)4dxZ-pve+Xhb#`vn|$@|)+^W;k!ziF=Sk5FKT6XKR{ zX`}LLTg)dI{#+SaK%aN{t=zp=l6&5qfNdT~Q>5HfEhqv{;Nu^m);&}Gq66t(_qC|M z*96MOvrHX)3Pv##9lyoh7ObPz_(;VcnVp>206R|j7`5zSdgS9XENh9n!{FSt>Wi$3 zcvFB7#P0%qbs@h6sh_|CH^YPywt(VLGSLK-WY%qx6R-XlPH1La^)V`N9bTiui?pc^ z1Vu^R5a4qU1o&LOpzA&+=(?de(RJJ394>pt$x?MhmTJzNpcr%Wf1c?L1n*>pL-HE3 z&>hQy%+UFh4|CGpay#v z|FRc#0+dHg1yYX^Z?P?PX~33F1x}pT$!MoFT|cwH$8-{4Wb%8GcM3MvFuY`n2C4RYrs&$_oF0Ws3zhYpP8cV z2@Ex#oN0K}nU{u0jRyWfQkk&~1jfi#%f>3a)+o$tpo;iG4b$_?Gug746_fIoZXE$0 zXZ^@xiw;)DfEIn`9qm<7Z#W89v;ZjE=%QohC$N=P6cN>4WQt2Y2VCl@Sh;ls*etkz zIckxpIsR@xY7qtA!-Kng+P(#ne4!Hq3R&dDA#2s=bP#RrUMUVZfHt+*)J3S06+R+-`%HcO-uQAezyH1qf~p7Ap0;0yQW0Du>{sc2Q6R z*HIIgtkw}yg?lREf5NI1e!{^aMFOW7_$g!-Wq06!je`lW(Rs)Uy=fika2dJ1a<_}i zNFBJ0=sdD=9WEoL;pv@-~T0RWs;Z&)A* zlmlU~AA)4LW6J)WBq$C`&$Yx63LIfc0D$&B(Pj0X zt!q!~RI_CR5C|tsxQce&<#kyXVli&D=AobN7s{97f8Q)v%WM( zc2Xp64=_@mMVu0k2R0Hxpv8GHU3<#?$+@|4^Q}~qwlTke;K%jy@O6#~f9UqDJqB0@ zf4cs&vtC@`e7p6H!cIl)Dj_ouQxkjXr>x6W7Nl4;vYM7lIytecxx=#XCr3~~r-6n= zk@Zq9y)x{!u_mzO?+O$yk<=sH&D_v^~)-0p;D>s zi2pi*IyOII6bB#dMF48$B7pk{PP4s_!o(SXryfPEd>f*yYJV4utT+*GISMWcskr(m zu-4}o9YaAw_;Kg8O?_9By%~h>*6VV|i8JB&-s6pPGguHZKd2~OpinLV!J7DhS4`4! zaK@@2(7MbFyvD&9^~BsZx@d^`4xW7srT#A>lsrC$hPa+y>HJU&>%2l(=l{P&D7kJ$ zuf@5n3nPi41Dl3Fo6Uv8Agp$@CvmH1Nu-be1PUCq!A|rN-?X9Yu6&aA->ZC*dLlYq za+ZJ{1hB>={(yfIDWyKSF8eY?jT7O7m{A7t;BexLXXBjjdJxY=9z!0 z-Y2%K{!FZc&yTJ`ZGr|zfzN<|bsN{P%CWtxi*b1sY7SiRa1{X4HsPyPpij5qXZ){_ zQ%Do6_bqgwL@qWP_1>%@Mg3%LS&fezC~%c!GPl> z4NzyF!dzaGCo;%GT!>mcs0QYh7SF3eF@EC19(ff@T^@^O<4EJ`V(P&~B{KD3 z&kIk^0WR#p7ozzRgZq_+^?!nHig~1BOYIFoX?MdwucHYQ*ZPF$#WU@>02-^w6?HDi zm|3VeArDsS7Ra@|^2~~T##NxUQLjSvGOq)PDGiCB2>U)!6lyc3)JVGn3eDP83U9mI z^Xh}M@U~6W@HY4BnvIR{vI2P7C}xJGK!e{qg9f2e{KFa8Xa->KvnZl%$rf#Q=StUX zaarjtJnxH5Ljm3G80(&R{8@m4*s+BaZRX?Ib0U?X>X$rs>CJ|6Hd9l(#AW1I+;A4% z2a)Q^Iiv-bw6G)ZrFsnherWawL;Fm6gKX!gtQHT5W-+jOes#!Xk8^s9SZ?)Do)K+Y zL(DJm&kz1Tx-=Xlb-_YWPRt5|%X2ny?62iQE}UKM3DU9<3&9J^z*p}@vi2oN&Xz0| zRCeJ5nC%Pky05_6`4m@ug^Cp4gCt90a@`&RDIR_v4VmJ?@&AoegRY758UI&DU8)3E z!@-bq)U`U8vhY)hl@}l!6HMm|C^T5Mnso%KT4?L;GMg9ToD0Bpci^`!0Q1;^@de)0K(5}BOGi^=QSTk*TTYo6lru~dOz1jy5x8p&n7u?qIDq- z!|vx5t~s{iLnOz=XcXqmp^kQ`<0JgC76lm4`y($n`Rjr;GRnky1=T|!IEomYRuMDD z<(DA@sP6)w97 zp@{PEo{L;ZoxjM*>c3nBF1rc)d<|R{#oO9CKOsBLpDAgXyRS!c!nR69D~}TuFf15*Bs$Eh`FGON{bq zwe5Gae)XON0ZohBakI-vqk**~7)rP(l|lfY0c0&%Ij5_$MzWTQk4tNgOJVu_r*vbz zjKY<0w%pp~2!FOD@vrft%V?4G6x`<8XvXutLBpFEXN7}>NDv(VTmNXuwLM~UPt zJttjk_6NXpDfF}!LR(DHifmS2gZx_;X?y&)sBLgT4`zmwMJZialos#&7F<9F;M3ot zb|K4yJx)4;n%29uaLKq1E3cr|O!E%7%N5iz+Az<#EQ~30d~ZPDSi8Fsc6(JX%>?Z+ zP`4Xz?8fXBh|;zLzjp;C23PiG0qx9VoqDxf(c2+Om`(Wh6(R<#twTw{3w&2Nz~dL2 z&2|xLvT^@96d$qGITLd_mM2NkOVkE%u0IkV3n3cHhB}zx<#8y%Irkc3TxREe{6ihQ za0ixNg@#@3)6mS>u$_IJ4a>lTucG*qEHbo z|8B!wf2_TRLYbpgc>Fam>TSYXu0iz8Jly^|8V|qr-at|K@O7j_*Ko~s2&|ch2i~Ah zI^gQ-NP+!tqS3hTcbshX`gdpoNLqi~L^1g3cgPFhy@96U*KcwU-@Qp6CS&)TP%`xv z$QO6;!CR;myzAO6R3@&zRfgx-0Wh9`m)b#?-+>Rj1wb-HT#H$sn0bE9Ukt3E8`fQa~M4mvjsu$avjtRP+xO=icEeUVewG_%!*o z1OIa8|DxioyQoK3dl-pOe<4wA8||0~y9Ni_U=8P}MWU9_8a@u8NaPKFmqA$d_mbRU z8K-wSh`+oGwz9|A>mKY(M{vwN6eooz`@0;)BkrM|Zg<;vzn_7(-UA%{4*c{UiV(YB ztHEL4qXc*2j$rO>z=OX>@d11p$`o3OY%*)e$%pm0?0cjQG!J~bq7__Pa zeTYFwUayt<;`{f}S{Rmhen8zxFtE=rVe1blAmj6G@t;Sw&GkVV8Eo~wZQ;g10D)%v z&r?F+e*TBnpF~krf^w{ttO~-Zo(q3cx@SczN!7@7(Yf%#zBs5JU5$IvJ}uWnL@p|5 zCOJ9PDz}D6{;FN|*NqF1p7Z|e+y(g3Q!n7JS{(W#_;u~TJAXuKW@;5a^CM~plk3@! zC=aMJenM*KygFR^6Jp`F_s`&gl83wfjFLlc^kp;EFHLe|=k2G|RX*z+HwRpdyMs%A zhIo%QeE(;(9`dsfpi(QYc!2!9lAMkM#+2Fk>j$8%h4??epykk~YkxuQB909p70;9R z6t$;Izxw04{*I+@>5qT-1ss8Lu>V77QBtcvuw zNCN-SL!39QTAu480=E<;Jot>nvW4{anzaq6wV&BAPkwA${IT}mij*fqGAbLqem&f^ z0S!jd^0a3|(tgKfkI=AoE>ao|o8TJ2vV*5YnYn~@YG724q2u1ed5=+uSQ|VDuX+sP z>;PQ*nA7%k`3+@(a9j8r*fs{>L%*R#khFh-1_m{M8#V;tI6Q35ddE&N@;$ui2`~y1 zKKTSi2Tz*F$cLuCNStbIX?jm-kPl~^uNMD~QpGQ&lX3Uofs-`g;lIPEnQ+nX(AOq> z;CG0tWXHe$4oCqLZt({MKeFL|e}K4d!teiq=0Zb!{sgp{36J^{T9=BK|A`8K=+%e@ zCN*#2>1|yuZZbo}rFOch-QjY!_IOTjPJ) zPtrAQKO^a}t?@_6a@FeP+;Y85h!FAk$bMY?42@O%a<@DDZ=UkurS1=l2xR7C2(gG z;k#v_%0S%f1;8C|PK3}z)a{nVZ@)kt8SO@V@CE7y^*nw7+r$7I@)zm|T!}*%;n)5` zaa=T<0wEgCs=rWHi%kP&X?3Tf&dxD6QMUi`7i#HK3tW7K(;Mtf9~}A;@QM~Z<|W$a zs!Ostb+t`GkNpqLZbpaMjYA`3Jx;a)2%N)mbI=?fsRN;b!@ndLUfxD+V4c8oGpL#* z1n&DEUM7G+4PHZ>Oa2j%&b`S|BUd2_bO8_{@+N16T*M2a+|t8~qKL1FJy~AK$5!Mb z%6uBYEJNLD;}0q2NveI8W+r)cn|g*wyy23Lj@w)|>GpstmoXeJSP&;ka%B>y3_rz+ zZz5)rmuZ2A-4;rtQQ<)h(;vc?ZDE*LVt5yTK{|5od>*8J0d~?A0CN)z@5Lkz5;*P? z@J~K5ybFP2hJu|)Knq0@JCT4QT1PyQ1bQwPLs`hb*r~SvK5vN#fEL8|9uKymPQ*4O z80GJggRp@9)_N23P^p2yCJ3q%&k-|CV@(MY~bptFEiwoVEl!(ly=AI3{k<#7+A>YnbGbA06 zUq{_nz9jN8SF}IA;m!mrF2^J@8&rwfh2R>&Vu_3)J5dK26WI~IS5U54vj_~}eHa9> z5DU{Ea3x%ruZr(A1npzugGQQyvwp{=GA1{|h5Zti!d!3=(upy2*jaPXv6T1IbHNJwg%p^b=CY`fI)i7+mr+hDN=g9<$(XA)A zuP4(bzHam9veMKDv1n_&rm=Lq#6L>2GfO{4ZLL6aBw|h9JP?(6VA(HtpC{uVQ1rO< zNZIhURFpYTYc^TpHTA1z%ix8estYITxGery5DJqJB56a1@c0V|u?8K&qcj5vrYE7Q z1%XQ0IoQ-V0yxvjw?hna`D6}4W#v#;RbfzSW?*A12fM0uCm5=tG!AyPq96)v#kV=w zRme^#L!$Sd!w;J=Q(R}X?qB#rouJ}!@(11+5nuQ=32UK*z=zzzcQEK|Soj5GW1#Ea z=Hwn)hb5Pb9`+irk9-Jt#KlRXwb(iKp@mwuI%@$FOGo8gga94N%Q*lUc%&=40^?ZWcYc|F5HO~QswvJbhu)oNNbqyRhVF5 zO%C(Iiu3sr)foFKTPrwmWLd|4;P=)bzBZ$r@k|BXpb+Q1zM>a+bFpbsJvp27)=GmV zfX$FWqemC1HP8=Q$qz8aNod{#69mStm{bQlEIj7^<)}rX9~hCy;3vs~;QAs_YxqC? zTF&|1q?Wz%)g9sDIpx|vR{nibr7JC+{h}Gy8BwYgJ~!?zT7H%5p_f3+nRctOV^6qz z46YGU=}Mk&eYVo4@Pl`%Zh=es-;ZQcu2?J-v$V@H96h1w$!^(xVsWly$KTb@d$m|0 zJtsPsXuk043%J3|d)Jfak1G0{Xi5H92~8Anms-K}76nV^0Sd5!v>S%P){!;M_Y=Q z*47rL-%&FCvXowM&EqPY^yLWmdx)R>p-uDG_GWdRApiFy|EEfO%~Qk#iVS3#gf-3C z06Dur&R@8iwcaD#m9SD^p}Zq&vYs;Hko0%Z@?JJ^dYkU{gfdg3cao$Y0=3BRtQrH4 zET+cXJYRd-jXbaL2jO=TC$}yX)iULOqqKi3hbtzp~Tco7VHgo4>s2@HYDD%`NP! zbg#kiW(<%Vn;QWzPBP0XU&*M3n+yXW;}~v|*-sn37xTk=yIs={u=Hbff0Ja(fYc z&b=Pib}=nvd`1IoFs?jOoPwnLAm=HPQ;lYi8KC8tz~acJOW>MBbx+!uYYygS=?SAQ z8t!~WjoZdGENRTO5^6(`?i>tfMPk@n0iW`tRNk%WN7nT>u(k#8l|PWLJnU0{&L|af zc5j-qu|I2j8#4aNb%(y?TLHp&zHHk5T(~svPiX&*V$yz{fehzDSpI1Z8F0y8OK4VY znC&_=>!DA?h~RLsfnO^cxdWRcW;6IH~O-6QrhnuR-qcK+>!;S2s0vK6UA#`E8V{lusITEPWXybF}!dXmQ zugE+x*MmBUpX9nZp37#@N6<0bNyp6hy>a1p89%VP;Y~6c>K{PPU66A(*M*w+UXgqk zO2#(*fc8C+^dNjd?K1KK#yvt8M$WES2K>YC_A1>juq-Sfwe0q-tW{^!#@Xl2-`|;^ zzL#4y`N;DjZYpy#xO~~r7QROtZ&QrjqULkndnIR>o2mkGT1iG$^4r|`jE-B`wYVt@ z*ygX-wu9~Cb8cnVHjC$95{ItZwzgnJlEm=P zH)%xt&wMB5Ols0M^|gap-Irt;wK}6Bsr$UgbJO|msEuyYaRa)# zsY(>Elv3au)a`W%-yIkF&HhTp?ry4`kkLXivXVLT9t-_u-RRnHhQ!X{&GqVz_Ep9k zJWEtS$K?jFY3I*fh4EZO*85byotM-Z=9ESAG#NelX7!6{(ya4+-Bhd>?DC!AZK960 zu4B&&%^LGc#{O<93uI(TMpm-dFi#`q$FpLyYr7IVr#07$y1;lo;F?wE15r4p*rxFQ3n?vZQD+j2$T;bI%cuCxy{K$)3bnK!{L7Y+|$9O|!;D|4?GDHEQ_m1z&UDv+U9 zbFW#)6}c0|nQvmaBH13qQgx~iS7ZcNT7-9%wRm~E?c}5}!}~}~a-I0AM2UCuOzlV=a#*9^)U`C3jFB&6Q(+B8 zIzo{ZkFCccK}>uCZ*A`zPGiiM2+Eae;%hA^SIp3LT#R`bjqc%fgsWn#t)o4J1Y!J%*qS*{V|{3NQu9)kbCj(1iZ7bXmi;Tgm6XG*o^Cs6JMQo*b2SMyrno0;;bZUY)VIu;e>ou5bUz~4qw8-z~cp9Lhk;f^b~C-xW4FZ2B$M&ThP4oAu-N| zb8&BYCqu9Hup6Zc1!{;5M5w6B8~9$SS)p7Fn*GnRch1OLF_SgJi|dw57;6$DXY^|4 z|A5Bt?zFf(>k2i2gnPLig?Lg1KA_ax*gh%L!I6vPnzJ9x1wS2KcWztyosR~*N)18Z zdMxH+am?&Ae0#Q|x{DE~k4UR)q%w$>Q5w*?E;+SliZ%;A@l@98J+?$XSkJbegj1I( z%w-U)r{mn6GuhpV&|cBI>5ldmuk-)e(cYTvddCZLqI>W!z!T$`oUUG6w8hp#6%7z= z@faUN5sf1;6dNz8_kzn~uTh}VKXze^@=wh~(QPjnbFFBzSf^eJsz(UD8YU;ZYBm=i zwN!-Tv>=f^V>kQ=@p&-7`se?p)tqM(0u|8#16U)?{!Jg1QGUb3*ji`4v2 z8iGbofAU^;+-7@>yE2D&8SwxyA8&8N#D&2ePKiBLz%=V~Vn&|HlmJ0Kfs~q6SHLh? zCk{Vo!&IVRT@Zx0Zcx^IxjA#G-7R`6RTR319KW{1&t^i2u!AwhO4Ga%4(GZISf6#hMt z849TDK1ocGJUv;RnVbrN%nnw1OA`N~?$*=-(x zW)rsgk{W!VJ=0x%@774MQZ~^hw~iE#|6_9fqe-t9g^@peWbH-U&?)TGfyruOZ{w~d zp4Nf6lMXxstYv)%!Pd`Rk<8u22Ac8HJzQwDxFa*g6(#wf^6je^P;w3&&I>5jsmxt80p1{())L7ZAfgF) z%5@?k&@=duAE)Pl0f<~FnMFEMxN@;S^koho&?SSoh6{mSh-)~F&eDm@W4IXiKAzN> z=?*}k?VXtj_qkPJ2P7xGuq_dVH}Nb}cVQx%0|WZ(Ye4*nbb#~eF-Xqen>MlwGu92R zr`|LWAL+vM?c*|3ND#7Ky{6`Wa50<+Ow)K^S0)No;Q3vd;SeGBY*!{I%5>?fcbA%n z7DX+qIAf7tp3os&RJ6c%<(JJP$9XN#-EUPMFbR8fV>BohckafdMl?(GxaI2lI3{@>VMkV+pk*eyRnf?T( zyC(iFLFAp(5t#1b{yN~b2FU{MN=(jU2$&2B?@7YI!5x^7!EdMn;=Tbl&sPkW{|PSD z*>FkbBCy&uK%j-=km1Q!%XH%b74UHK=?dae^yYyHcE~RVkM1Xcc1O2n%I+uESx8Ja zE(%&x|Lr36c!*WnhsJ#aLGm}JAURV8AxB(GYN#Ly5@?YgZc^Y1*7GskniPa6El>~| zbexM5*QB797JR@LG&Cs*0ghZ>$r4#tZ~-r}!XD>ntB%B|I|m`?bi}`k6O#Xe#KX7``A4{ zaqwI#3c|nlU?N)Rj!1|OJG~v;jqU)%AHfMd86AN4Uhm1oL9(GI(}rA;Skse9loVfO z`{BQOg4L4uGOXug7jpN=39$whbe3|$HXrHAx;=v zJPUWN2yw#hlZ!c~Ugg4s>4;6U`m9uTj$q0~_+%ndH{l))y%^ylNxSRqR-svp^`Bi- zg)I@>@+cD8>-8~AO1Ht6b`w|?s8^*9_ky}5Slye6_G+xMPz0Cv(MCM9H`C6b-~7AQ zw6x7-i~J;9Q?!?JGj(9z#4SCn`a>v^y$XirCRbrc0yE%nZsc=BbJQZyEl88Rlo5r# z*QbsQUtiSX`m}u8M@6a+r>}eTaZ%98={2`MDGFUTqh5EUsO5nfvbo2K!s})jV%Hom zid-@?%lFHoR$t7V`uMA&n1-1p>2*b|*Uj3QbiJre)$FbxWoPvg3}fMU9`%3}p2;*CJK)(m-~?2kTI3&rN~s#P8Rmk%tT) z2eOmTZ$SBzKMQ21mTyGszC9brPQSDXRkpYg$j&rxMs+DS0@>N$Zbpswp9Zpd`?es} zh-N|T+!_l?Ee;N1=btS{Bd5d%v2T9473KfgDTvMAzYVQ>tA7x?@TcvlGGJ;DyQu6# zRCjoK5W9HYPSkjKSrE%2h-9Hs87i&?vGCD*QI@JAHke(4b{{}fRmy(BY%$t-2$iVJ zJA>J!Xwwl?qhfywW>=!;HdL=t8ba7r=$A7{7N|ZJ!mdW&oJFyL>{lUd87e!EMh50R z4Pn=!4{A|=`544wtvRjbBauvyfG#f+Na&+`MiVd<8%CEi^T#Ru;zYKuhnVlAzj+VeCh!_D8fcsP;@4y9=FvfNFxW zuZFRopc}uS`k?He!q~m&;X@<~u6-KD?n6r(P;79vcT4sFTK))S1zUq!vY(;`RHG2td zexJz-)&Ja@{RVycJ~K5`DT@O~i&f=JNoaO(9D5bjlruX+Ed%1%>*%lTfCzwpljI^% zIKUr##bu58@SB+1m$VXb_rVgqEpccc3IB(GDcm1zfRZ1=Q%WIY6#Tg#(m+W4c(UU; z`Pt_1zW&TMrC|{K{RH3_B>fxyk%B#-9zFb~DW!h^bOQdNDW#tTI(Z*WDg8dsdjp-O zl->?1Nd!8i2JR2~Ko1Xm;Q>u4eJ;=m{GXzQX-mCdKJ(kflkxE z|2FVnd>Gw!}13cjVfRsM?10Iksped!ht9d$2DP1MdX-es>fleAkQ%dgwbkZP_8pt2?K^74F z;WteweGJe^PtcUoX9Ar}Mw(K(0q8A&PE$&M59s8>XbN-#Hz_`Z2V@e_loqH0Ixs>J zO)32X&`CpSO6hljPL>}{Dg7DHNl(y}(&gdM|Kx!@oKNY4F!)WrjHZ;HD9~w2>6t)p z2Ki}9=>vgIdYGn^J_hJqj~awO=!2Q?o9j{`rF4>yd@)Ta{av7w7toZ_EkO4II!!5k zkC30H2KwMAJRmKiDW#tUI(acoDg74ENkeH$>5qX!f=?y?9ET2os`lk;(U~3{hK~qXs108l!5ltz*E6~ZRp(&-0 z0y^2uXiDjeflihsO$psVSZ^6TATOpVEwBsdz>7pQrSvmECtpTWO1}eiGFNCy>3<0I z)0EN`QPBUSE8q_AsBA+8Aj_vgEAaG+Ze!@eKm*URktfJMe?If{?%k1=Ef3XcsYHYpdCXOdgI2jVMdXqRGi$U5Pcuutmr3L{ZXCXdOLTb}a-hc0{UA`F z+a7H+0+c!ubx>9agy5h`zqT5V{&RJ8b zHw;Vu%8)V<(@AM@;RKDDp-i2L;S2|6SOVRIZo!5?O_v-W4kN|aPZGPMPK}rv?Drup z7vm0AZWY<>*lOogC-<)1<$YG}eMi&ng50}Y-mOXGG+FL8$=CI4veyN9w+mtbdSAWQ z?M|{=z1aJ4vRC~sSmHHS*A3Q|>$*wL?(&M?^)ZeImk+>C1a}@ z`NPKzwo{#^PRp5O{CX2j1 zTM;Q_GD!|LBy@lMed3#$$|Mmc$2iw9Is2`ipC-d-OmY%1h2&_7V5#f2#prgBCTVb& zA+B92*?nEd6m;cPbC=0PnCqd#v3os02SQ6^ql6V0gCp9vRgTe|H8<8_G+QDq(Pcs? zGgXE=lQ&m(S((X?<(7=e2&|FK6qaKyNpokCa9Vw&FhD7yZQAb3M8nyAg&8os{wF_+ z<2Y1G8vD{NvFLEaZWiGX8ZXNcjz~``j1_V3Wec>JopRpHcx(-WdCZ@sm4Ciz?U2n3 zCewchpWu@CG-eScv9XC%#aXR>KU+l|=+gaIXq zwDCLb#_xK<+I>eFSrot-1^gD>>gG#2>JN2uEy{KQ0Oz~9*=+j><#s*fjH;;A0OJ^# z#3AIfa@iWDZ8iwtMeZT_Fc6f8JNPd$HjJA}f8`uc%K7yJQv)PZso8sHtzqa#0&Mn4 zF=HKn@b}X0eEirf&cl>3-Q}6(!%1A4<#bWB&2L10t4~^>-$rIKs9K-Gq4}JjTY8X_ za-=+ejObF^gRfgU`0wFBpPUgng2ZX%{LRbUCh@hHsylz0Er$4uFhPe74BJ?`&v98)muCN7A3lEkD8+7Ld>gG3)=#DPO;h=geiTa1 z>4G_k>_ta(pF7}_u(4PXNoIx1BI|9xXoVFYvBS8;Ugm>Iv3QYcP_OB#w;_)Llt(!- z8`4H|+gNr63&nb36F3|(PvqJ3zw~?($bW) zOakl1z?}>5U-2Rb8Y21`~GxOiHS>lMA# z(b$_K!Q=75EE)4E##2crlC(t|RFlGk?RxidMRzm`6&~*6*tE+X5gLObL`jv-XF6>G zsk%GlAG)Ast!i072>q4LU9~+fL)9R7X4{8BEmd8L4q%f$%U__SbPxeU72PWpao_Iu z(_F-T8Fi$iCK<`kOi-i>7m$vzaX8S81v51yTQoy;Z;Usmf}3-eW|EXh%+sDx;V~qe z%O=_+PO6mQK2EuKS~%iRk`3Oa02iR$*dr>?Zn9uz4$00z1UbJ;=9vge$MR`L;QV-% zBu4dLOv;yTy4H;5;*;oFSIn+n!Dh@c^H)a%MOc)Qx*LN9XlQRG^xfv&e*%^B$;kZd z0ouS;!^Xy8t(a0~51Tlqn>ML53CTGLUsfWYorg_|3_4)qn1PV>#GDOMThIKPCJZRW zw=0xI*NC)3@$sHHHT`6B=mDN+_ZaMFvl1nVx?#&o@U3|W?1R~9(0s#LG;)$1mhUsc zWs%q)W>hxJHK7uuh&mDHnG-jtfF5Ot8&Fm;5c5?2DYZ~90?HI}^I_>&yys7M+HQH= zx!3Ks$m_9hw;G5$5M}ThNxk_HkL{Ai>Ie3q%?0Ek-b>NNRwqGmB(T6zDOx*rYrosae!ksX_&p|rWYKvASj;R zuSTOBhACq?NJ+|xy#pCC*DTEbD&`g$R42d+IE*AEQBorAzaAr3kTP%-tJusXCTtGl zB$C2#xMgExQLAoiq=l=@+lf3ky=Iz^nN6?oritve9t_;I06#2FTaUwbl;7b$_r(gZ z9byhC=8>NH|8kLan$4HBlmotI7Kb5L5;`Iv+Qb#4G}v(PbvIJr8k zX4NLHLq11wT)Xx}{%X6dsVo7KoGb{>UfGhNdSlr>2%`cqLstU1+!RIr_8NvdBQz5!~SxqdYPj-^#gj zHXG|3$UNqoz?~l_3S=GiWx3Gq=95o}&;;fpX=?cf&vKdQS_FQGoh;JCZwq7|zT)Y^ z`jbOc_Wj*1{;O7EQT(+b4oCRAs`45|erdFgp7#Z0Qb3}M{hwSX#+pF#nAn?68*()q zCcNZ31#Oeno?XmhhJSgOFE$`7HNybQC8=3T@5ci1B&Rp|qS~Rb9FAD|#znTY z^B3NY0^gkVc8agGLrbG2KjG4~w^=A0VVH=IM-}X|-*Uu*NsVO^+PCqulWZLRw4M-M zn6-BsLq%tP9YDu15r8-eTF2pDMUr{j<87Nt`(8+M9M z5;tIV@T9+HlBOBbEV~-t7umrl2gtw$Bid<;MmeyN$kO#{cuVd^AX7~=>iv*V6E^QepM8(?x2j7`!= z&?-kvkva{ZhGDZiOuh2tg`9<9&tWDBzoz524l3CIh;}&s$kA2bhGCc%xGbY4Y8kA3 zBmU(oHsP2C07yI-mM`<|`qq0!3CyhQFmrNq{uC*2dvS-UT%WFbU^tS3Nhe(R1w{`Y zT=2lKI-o`ba14{sR*o-TIwcDB8wA5Pg68a4pAd*)g&pX5@v4gsST+kLlJIMyXG`=? zKj4^F>J8&Ie%kyotVxJrcRHYX|80IbV6zk^wiA@*!%4s}NGzkbz+az*5>Sp_XQRC(gm_teJVIRdxwu$^bzTY+#~$`SSQ#7()ci zAt@LrNARQ=-h7Nk!pUtYPB`du)dRzoFsF?@kMFLpXUVX5fSGBQO5$x^4%zSo&j_ca|Rgf2^fI}ZGDgL?Tp{k4>_OU_p>zq+fMiu-HF*&ig(0sbBoVd9wzOG zp#8_r2uk8NXT>kP8+P5fYT&C zFf?;U68~^r)#2byjIkeHIoXqh+`(EReOC`o>qK$z;lTrb!)clh8&259bm`l1LutX9 z#O!UbV{3;UAFiJAO&gA86h90OINnLdo7eh%B4hi64d;7zkg+5_;^(S`oenMtn=t(l zos@Qz@tNSOwd_thxU{SM6B$2WlW?*V#YM^?g(o}7ctW*b;$NL~a70FzpTCx2H6{~9 z{71^A>vi>M=Y!w6eR}ZzwMoCwEW$G}rl@hqPg6TFrt5n@UVW#7FRbV?XF?~&bay>l zb)>V5FQ|0ix=4?Nh3&WR#0srP+F;vG>hvr(;aj{TM#0LVp;vJlR8dyiG~-&;b%&0^ zFBp+NUD%Dp-gc0EL7t?L&X8(jU^NqdF$_HQn%_3CzL8g+%ix zO?Der_6JTgb~t-QUHr`fBCNH8UmMY_r{ZR372W$hr)w0N34)PPdm^7M@;;UVbOWs2 zzuc(y|NAM18=L^x<~M%*p79G1^q~Vm2i7P3MrTl7r;VNwts6qV>rBtXn2j%ho{z92 zC?@(rrs?WEc~ia=RnkH8bp(69@ALB1wQ# zSQgz)2yX6-rOl6aJOj)mt!D;%CF+gKWf<9E&z7{XhcL4{%ryN(qL@D^@rQ7XrU|eB zF~|;V4h-J}w!8^QH~nZC@fn<;JArnX(uP*Lb@7ihpMaxJZyiqm^Hg3`-)=JH^SdX$ zfA@hsu&nW389*PvG$jDWBET^K`~v_D05$@kRcr6h z40r)=pzeB>=dJ02cw!2LM`hf)D_D00;qKKqnwTH30eoz=-xh zfJ*>~0zf0$0|74Qk~^3qbIF2ucngSuTe51{EfQ|keRM;S+#08{~h-va)uJ@o{8$GlcfqkO^ ztjI;+fLdYPuF!-BdQQn7tko?8l`YMeoFgu=RyPb(HZ))Ii@3(JYZ%CZkLBUlSwFNC ztZ$k9#ar~gqZz&Ld|SM}Ws%Q2^jTtvu1$>|!op{QY;xZy#R zdtFqDGCEZhz4ng+9m}@4Q1>gr_B^a(<)oi<%Q*i>#+A?J-uim_)-v}FhBlgj>Ba!CFC$(t-iYoYtn zYDt+ms7L4$Lryu1mVUksiQTq&L3*;xZCN$naCzyCo2y*VE+`+om7tPShinP>RO^Sq+5z#WJ3Fips65l(v@QK2yn-cbXsY4DyJ z7)^tZ)Bua6*7$~_HKb|aPYp!Wfcq8cAid}lUdmT!C-;q1+>dgq1tIa--k^~7CSyUw z!{|cGKqQs&@Dc+d47j&Bb->Y7|Dh?}XQuRstVoLOcQ#eX3Pf8g?h%Je>c!(6gv{dC zsltG|SE4##m3MfXCBlxq^knwd{A&IVPQGv6Ef(FrdLjs>z<>m!us^b8aW%h~8qgi8 zC#pv586Yj*J2U<4%(-0c|1t`j=e z8e<=%Mn6b$>=Pbcm+JTrAN0Q~kOpg1=eKf;k^W~nCJxYxUW@|s2F?7`yutAE%!cnz zNU4MB#d{oui>QMh(pp;AwY2I6oZz(Nj~;CMHe9 z3Rl&wt=vijocq#|Jy0(xTh9wkHL4V!eVxJ7bqVKrZG z_;JN;iv>~&OaiHU&7@lV6}zuuVKg`flfktq;h(Illw$xLH#-I?a#%7QYejkL1JfdT*c{fn`4r$7GPkmxD$-i74zK~xr#_3I_6X;?yUxB3`iUi*^BD%h!JbaX=UfFy}8ht_> z-B{rqk%?T%JC1FO)@kJRDx{ZBE4*syF`)@@wsZOP*Z<2$#tG67f0lmq+jJqTe?WR! zWSrQkE;ZUg7^g`W2AwK(+M{%8E#b3!Qi}gHt|zr+s{LHPVt(|yOnWJu=WtCE>!}A? zqYGjwT#CRHf}WQ;{espGW``g%dG|Cf1g#zO0Ij7(ziYIomTJ+`+{@9~Xen|=F!_A( zi^&IDZXc9?QMUTevTA<4;lPGJL1s@Yx=~vwY=uE5N}U$N_EIpZQXmkpd5>*f-_Ts~ z(up0f7wNYh+v)jxHUFvMz+P%;To77Hxj*}cCNPy#51cN>g!>9A_~}p1ekEiLJe>Y4 zvcg3DwVXbKutmZcx4&1fcV(oDA4qIS{n1HX}M$!f8PquvhCb9w> zdi?CyaJrE?-CLh&pf@0;=pg_!{{bOg(^N_UPq4Sp1eLSUwWRLrkHmc6zI2O@z{App zcA0@sZkLH(dE#>PVUxTL@Z+omQqDTx{M3qF*WV+P0$&9x-_fMja9>N?I2kNZgbjU< zwXCCLP(4DgQI3g0A@oB@Yg~o1FlfegCordVF`*v~hbvhdJtk~vKmi3Ak})dP7ZiJ#pMYME2;*+RjzLtEbJ0@IyG9Fq;-G!KG(>J{Y~mR-vx8Q%5hK=q9-bypY#N5bbw~Zko2(b*c^%xa7IHWC#?sNJl&2kobjO0y=tc%B4qlE`i}(Iq>2R zc#$SLga^u0z7kZtjCzl~paks3o&tut=AE>O4mluof1W_`5{wZ19WuhaDSC};bPUP? zkOBzZh4Bwium>AONLqru0g!w@{!>l(MxY27y7^%gN=uO;HD7|)d?N2leF-3WX#3^& zUNtLr*5paM-P(MYMfZ8O?N&7jk?Fl770n>=JS`+nm$r%*z`>B7ou&ic?c9+XjAvLI z-y!b&V^Tp2cNPm2O%!)JB~)MNN%`m*8=R=11>4u6BxZ1)bgG`rLy2uu$HcbOT^LY$ z^sA>UzfJr3+w^na&h1-a7UzlI!fBf)3Ik$`Tr+kaN!BLh#yD4TiOG5 z&>T)*)>lyu>SXrWd9(GJ9iT4207_kWW~rIg#iY|xL-tuDH7j+Inmxz&0tKM><~xo1 zlHGkPI3tcnE-_ohr#qOeq7$nN%vNDhICCPMn5HLBS|>c_d?ytUM9HhvlJ;8^`so=~ zRq=k$(R)7I_RPv7oftxgacAomgM|KUfc{1gvjyG!>a`H6y|fSpR_Hyc9V+vlShN{hP=C(QMIbesn57 z8WQXxfns3{_!0wTUsk@PdX8R$9NyIDkN$f8VroOnUk%m#O;-=d|7NX$sAlqn~8NT9e6P7n&B=8F5gybQhO1ZXu_--i#(%BiOw+l&!Ymx{FwI`@Ek3z2LG7@0rY{%AQr&VR0yE&O-qeu zS@s^U=>bEfrelu@6k{RyZrA{8cY9WUrPt)c+SFP&_Qa41PvISTOTp!q*(Y~JKT3_> z_OUOZWI2n z6x+92SL>*pz5YtUIo4LRfd72ERuz5d zy7waieFX&B5vBk)YNj-$aRh2Cd>`H*p!2BwqQV>H7cMW(IBWonE>UU4LM0XZIlNLT z6=)QXM5zGB=Lj_{5YST*-j5G?dwke1nssL5Qb2IL)O*5~P_en*_^?_Yit>S1R}AM^ zYp6O%ysUK{${lLXu{QOZ(59QWKCDJs+YtKi72`S9d}l)n$}?pW5_6L)~hVxJy9Xy^*+QQrp~O5-BBAzh+H% z&#<_elzOfyKpTzDucAb(n`)pmZbv+|FP^R!y&gN`3}^gMM3GdrSwa$ma0tf5@fCi; z4F4X>9}HXmaMtpFRxN+@^YSO>mOuMvd4s$3leYlDxwkL#MC*qvyO7r6$_zAuKiF1OKF76e4JRRqB0;+&qeP)@{pdFV} z924QA^n}x()=MdldAX)^$I8+lbhPyM)|OsTFcLW=Zi}@;Vt)xK)h37k#U1*Qk(;~5 zC3&DVqdv=$Q&qF{@~?jEwffAatGQ4%8{$3nCDq%S_e-={Vh5r(_k;vfh*?A!x7g?1 zkssfkoYs2Y=l$IuKfL(+qg=vQ;A|p-TLTO*jtu7Bk?`p=MsB_lZJ<)0QG_(bKsDqR zhyNp>e=~CPk!V!E!r_rpv(T1=OCLc-J96`oXp3`Iq85U4L^7YgcO=*#2X%2?bh5#R zv75V(G??yek*1I%!8$K44Q~=45?71_Cx_P5NmFF#&d8i_zcBiZkr2O>6vIXxm8O7i zhh%nHxU?BU+bERHnt5rC+toSXwa3PwOa|o>P&Fi-YeaN0?2nX3YpJ^;^4IsA`?+Ow<_e)@@_^H04=?>=k3w8yIXJ%64b za&CUFf9CVu7lid)5Uy6p9f>Gzqr{+)I}tHlSu$s(oJ*u~mB~pf zqP|pHRT{nkLS8gzm?b+ir_Yc$qB`_gawE)->;H`B1wAV$@(-gzo$5^mov_5VkA^!{ zRQ_)XZT-TaGM&%WCyQ3;Sc?A7CU=7>U)mN6KN_^AEVkJk5|E6j_}f1WrPLA8mek5B z`+$`C)A-I4l8`EX#l4d(TP3f5n5=>GD*8XW?G5K4^vp$MJwgxa58w?IdZXZ&s84BT zuh%C5&99S5 zqr)K~rK&6o(U!(+K9$tGZ%b;-Zr3G{N@`A9(n(9gn{ytelV9{Ce&X&(k*yI26Gh;* z3a=g5pTe(z1EjCpN~E?Ez>Bo6F<90VUpsIt#oR4cb}DXWQ!Lt?B3Xln0{Kr5ryuG_ zzA(@#>-lI=0|TYI}bqC$ZdsoEz|FDQ62X6Rqc6}ydRtb zCUKPNT~+r2W1H)$k{V2z!_lZu2t)OEG~G?y3!` zN$ceOiGR47ROLGP0OAR^B$Z!*jefvAoXVF%R+6?muvWDql@A@?6T{7%R zE%Rd(i|436&l>A70cyb%Q^IDd z1;H_eDTL`yA~)j0iS8cx(=#{XBZ!_Jh0{wm;v zPMSJMhetdJ7IL4z3ckn-F9}n~Rq|0plt<%qqe?d#bXM9tU4>5qn*e+|@1E6;j!9q5 zO(_Z;5uk$z$bv^)l;{4HNG#S%S}*+qd0f>6mdz+4#UpoyXp8uBIHq;FN)A_1-8jTM zt3^_@3Tqi<1MW1(zAh@oBxYWCX&BU`UEy5+;CxF@5E4WnvgMPm7ccyYK=C5#$gjoX z)DR$cL5P{yE#k?<9FO7|+AZQQ0E_p41zfGMkeYF4@BdFM%EAh6GR)!6d{xZO)P5{xil*{?|@ku|3l`_$BDt} zI?Mck9y>YO=H&X096J%Fz@rZW5Bx)fCzh>pImc7x>y$a z;HvT>JPbQ=;eJS7u|BhTMxz>^P3-c>naSUVr%3@Xa)wHrM&b2|3XbiacZ?DY>V8`3 z!H$dQ5jRyJTiMUp-t6B|!f6As11ZzzqY0Bfjr=A25tUuRqjGZ-#r&vT`q&)$E&0DC zxf@{ilF;2~cUPeKz0G+}o~gBDVIM>~)VpaA{oAn}`xN{RG)16^hnmWX$Muq&E674X zZ!V@0g&xv^nVN07IYhC?;hDy5x^$w%qjDy{f-^SKqiQB!0Z&A0qbU=ZKFGrys`g)P zyue!7aN+`d!C;@BG|Wue4w@H#Yq|uk8(YRxNleSAz**)ZXF&KP{{Q-p!3-(?KNURh zIF-16lIFeYEfk#|Cx$A~%7zK{3H0p<8|eIW<~r!4sT*zPy2Vq#0!W?TJ2E=@U$K85 zs?C0y-if{Xi>#I0lO~Ewj5C$nzM1 zqZm1c9w1G)c3NV>Scz6NT?89A1!?&#Y_~WERs_KcxQg1ivJTQ!csV;Jp4Ve9M%jQL z=@4e5fkM+0Ps*2Ao_NA@d*DB`ygv=ZeT1Smr`#6#s?X~)Ph6(#dW5H5A{%`gcxnW< z*L)pxHt)1va_2Gv$@HudONjv9rrDC+y46GwuRuCmvs<@@2<7Sd1)CCyUOYXvb+lPa zbMS^-ydgB`T7e$&4oLrtA5?+M~UHkAVXOnw$ zxkNZ%S_qg%0H)w+ks?|7WvxYzsIR_QV(UTb%Tw_9!0b!gzjGmywtss{8gE`v<>8sNVHpbt`@UU7qh{j*RveH zB93{~&&=F|uOs^N>Svei!PgUmc-dfwC18im(%Jk9_(Dl)be+id0rgdnj9Ao+oO?e| z7+x1AjMxLUi98L}CN&8QghKAAYkeFph4&XKI6ukrLE}PasC01ks(Tf@_F#C)RaBSk z5h5RaQ?unx|eL>`a@V)$MOD=e z`Ecdvt6BJ6J*TFc6?eB)nwB{Z9;fkSbI^4bR-{X;=I6{I(Umlg9|d14*)(d!9DYUS zxTvm0kdY_87+(l%?|Wn1F3`kQypZS{QK2jn7olsTi-vdSIx9VC09;)Qi9t3+_-Of@ zl5rYd{rDmxdUKI(^xiqxXZv{B6N-ow7)mGYog;$rCK%6z@#lNz$Y59i!#PKabd%+C zw4d$f9lpV$|3d8JHD5Pfvv05}iils(Srv~c)I$sDzvvS8&(VzA$18)yUvDnLr&RMR z=O~NhUsQAUIs%?HMPfik3&=bLWCm=8JA0*b8sRuC>{kr?pSZ!wdyMwm$7{M?M9hOJ zQ})i`Pu$0Ayv~Z-4>PK6u+BU#fEl}ah8rx0Cup*U*95c<1nfucos%?C$SUI%P}kq! z3T*ZIjSlRT&oRKZuusJS*axmx6JL)nloEpwCmUVAJUK@)apCJC-IrHx{6Z`mGVvf! z-*{*I=oPRGz~U(gJf8x0g}HqC0tCjX*^3dlo&v|IqRgy60<7N;djgkk6cLLeDzF2( zB4VKV`mOmY{m%RWCTP%7pz|2<5M9qdF9z&?0XmC_#Yc+dQ{ii6=_PQa=_-b?hDC{A zb3pz(h#ycI)D?LAa6%z5fAd73YW!4_>MZUGszcFB3>q@A2yOsfCF2(EEt2Y{qUi(B zbiLL>?_S_L0uQ9Xk~?T0 z^Yvf5|9`DA?JSf2Z|qE@{9o{c2_)flZXUe;-$(u@B}PK}m67<*msf8it#_kchH=HT ze4E}{dbj+np82#OEz#S6cQa;9sj``BvLNzH>28n2K(u#k>!!)MqL?P7XSdzH{aN@)E{Y?d|Kz)8p9 zFc`vlnG0n^iP(0b$Z@`}`y!qFLXmB)$gx%g5Zhm64zrC8k2Q{OFwbINltZhsLJjgkaB8znkm-Yr)(wF0D#;2hR1AQZmY!kSqIty< zqGXpN?7kfLgTvk!-Iw2UFM|)H^BakiX&5fH1t7c@-E(ghQJ>`w3uW$$>=|B@QAK#=MXwcWFOm;G1#_FoO#e=T z9{SqyOVZmH?$i%Wrcd$zZDD%fCCB?Nd+^(~(*8dPqkh|d{KS*vSH_+EqjXSXl+H*f zgsd9AtU}|c7{n3@xMw6?=@VHgg0eFbcf~Z;Z9&dCnYZG5R@S1j%B8uG@9={^5`apGe=(yy4wTT?9m||vH-POPD47FxdHulv$O^jsphi;QI6|C@<@&gY3pz4*?hXLm-aHeB@x$*Br!TO!Zl z=P>WZq-2`5P%3f;Ue1vxJNq)-KFlKmR5z|x;;&WPu6a4Oo@+lyCskEmOQ%)jsRY-< z9I-$#zkNg1yzAreB-NSgAvU!mWFfJt*VpHCRlH{=^{@0%&|8PGSSqHtq;b8lQMK?! z25wN@yWt|nbC`HQ7fFsTM`yxg0}SCtcK6x zTmA4mswKBZ!r^CcZHLb(w?}&z&y68{vtx+W&8Z^U$M&;ZRTpjt!z$g~iK>J@**)S~ zprg!j+5>+JH~ULt8&1lKH4I%l=X$ARe{!YTs#eyo%l)rQE6qC>*!{%=g z%O-L@FbVcBV3Fl`nJVDUP+r=`Gx%9K=R=vz{q;Ehq5Yi0s_Z*M@k-UjJ83{{#9g1> zO^ywXj_^lumN~ZlvzZUtPjB?mwJAia?yf59ZZyTE*;2)7Yfc0?>jhkV8Y_%(P9gSf zJJGg(an3hwl%*;C#NlnsiCZhV-Oij4=Y)0?PE>u?j)K8Y+|JRs+{|;-A_7!*1JOry z;4dC`)+@j9Tt>Xjz4c!@w;erDx~7I_}kWlKVQ#th7H;b36AJ7XwtI?{WL@U=C@=PU)xfQn)n1%ErN5$^G^6c2%(Le;EGCvW<>LKb7X5 zXN*24yPfYGe|h9NjmEZ5~sLs}9zR$ziuO=d8G-^udX2D-5+N&chG~y!WxJkl*6& zIDGm_}q-QQ8>H=s-Cca?UHRCnq4Rijz-M<^2=w zeAth{y<@$^sJiVaew_RPPUbsk8$2%<-P|wOB$^?Fk7|tQLf`2XDcpkQVAaqa4>ERDa(p- zy~M;`s}?;@GfDR0<369>T&Yhi)B{%e)_R&d4~>4iv9<<+=ip&zRLNNpXJY0#>Yy zXs1s$+)B+z)to2aPd(w%CXP%)REjKC^kD%joufHt5p{+48H@06+j}k&(iYAUF?RD) zWCc{FprDP;YgCKwF_4no_c!x>?|n(=(!Smn>Bg?qr6WpH#`W!w?xHw zHU;FJ{H!OzD63ubtVX4L_E~u2rRR;8SeTq|tBX2O8udFJd%-vTm3#;?pKuIY^yU5a zV>niRWQU6Pd@{EX*yGv*Hde+Qv9ffHD)+gMG{(7&ce6_T@!%Px)%wEK?UKN^n`A~3 zy06=p7z1sH6`->$v3EO=>~Y>p0jz1~$~->;cl?_C08(F%2Z5TIgL5*?_A6CrgGZ!x z^(AP!U3RU_UJu+(5{5yCKDjol&JN%`{TR2k8pVHAi}-#2u}m#cO)j0SeSXy^&% z;o10w&xxEZd0f(zWqb>Pw4#Qvib_?g&5ge7sQcDdQqedcpRbC1(bsXQwMsXuzJI}U ziYv4>pFOIA7v1~fg~)XWF+K=Z!dC%p04a-?))g`qumrWyfrx-M# zX!4COLvV>I^yMhP^!t~?*oE=oZ42e9%P%wGAD|Px3U{jL;JW6j6tB96$+y9g^lprL zII>x8eWZ9hI+A10H6jk#0y3u4RJUK9qMy5EDBa$)0>^Qc@0$&d#$n=iK^axrH*WZQ z)y+2}Aw%{5cTjKzG-aFh0(fh^*8J<$%@EIF z4P$h<=TpkUyX5-j;(go5(XCNc{M*B6kTpMB<5eyHhN|7a!<{{|#ad4VOU^xvBL#AX z49^n%N=nBz|AKS)9s-V{3%w#BmJ{0gfR&_TzxC`l$zz?TfS=&U(3Qtr(#*)}PpFu& zGnBsl?6!*d%t~pck-wV5aQH~t<{v6+m%ITduep}V!ov_EM z-|gsMwcSx1v0Ld+JI-lMg|8Q6wd2vGlD~`S!PyzEwW6#skh_jKG_G;|=fqETL)*%M zeyY3g!Z@)#^1I81nlW1+K1t=%+Ow-Dq9&|07Aw+i5qF~{v5&G|b7XT=U$*v#q)6S` z7kLf)15K*yt)G9!Sj@g3F-f3LClBiG7IW((lsB=jKV!Y-Ri!KYh7jMgYayiuY4!QqBz- z_lB|LCU)$m?F~pCZ0+ zjAn`=`ZY#~UPjc+S0WCX&v@W!b;d7NXDnLLe#WX^=!~~K@*U8y&=<}y+{A9d5icCz zh*hVEDs;qrbVO5x=#2o*D2RhIbO-UPK*t^=3&-Vb<#M3!B|4)qUDkx?UIk|;rqK)3 zjyNvBU;ie;@$q=qnsv{h&7>E@wRXe->T0xC@1x-wTLx4b4Xu~dNp#%DuYQ;;mIe;& z93%sin$O*?A6DYb4Q+Qh#Us=k=(xL}(I=L_Qn{$zYi7sG@_a-02`pAypvz%c)e!;e zTXbB7Usum%;G|=Tk9EeV&Ky_)~fVZ2D9$BL>qi1E+TIj^KVK< zj&a?~^LoY0=((a1J?B}&>p2L+>KUhwGTSDl}Ek@C-Mh!BF3B8BlXWt_)IW0M-DC|D#5fHa@4~(_=w3?M%B)WNCp@Z zvpxdD#GB5?E^2SBfyId zJ4rB45?`zvh`iY22vI#av3%qx#~j3Cf%sH6AadOjHfISi#fXT!o-Q*0vqb;U#Qd^Nup-rEX3xkpakm|QN|i?Yun zoXAz;TwjuKgYK7a(0uT9Wt0Wop{WIKc*YPb{>sg&run*^zpgC)P?mBF)qtDa=#j#V zWaglM)CvCSE$jL`r|8i}wZt74P!*1PvpeoTQM``R zp2a-Pk;zG@L&h3;?ZBpZIkbEhu;MbIqOs&V+2_N~k&M~x$rU|+iq2y9^N0ww6BqY$ z%(t$4Wa=0$K2IuZuV%+tSF?{@BqfwrGxtGtKUmdi#^JJ|KGwC|Pgd2etW!0s>{QKa zgU>|~OnXh?Z-oB9dDUuGNJTMC~J?1N(;ixy>N_XV^NOId! zVVT54nebd1N!Vhb`bX9!#Y(z&F~WT<}i1 z%n0tJ5V@J}*&ItQIPV~y1@4E+1ubwY7c|eOazXPxtEgPiy#HgA3zk7HsDpzypj_}A zxHw4E)=|0O^9WI+#l>09=xTNLe&piJXHb6Je8#YNL_-UYdTfsTqmbjDIP2gR1uE^tO|x~v}PmaPST_)nt` z27U~iV|B)4|MoL{JuPRboBZ)U1m$_6)xEND4?FE78Yj2A7YKM{0KUoQ!-JT&d(^c7 zc%n4hl2LV@Jb<;SN{yiH41}X}60XwEC%q2sGwn$eL zMx-A}mfRpGC=TD|SEU0l66bQ`BgtFFpCVbs@J$cRXP#N#vm;$wc*bs$BzPfu59^~Y&vR&NX z4H2uS1mWHs`h^pfBirMgM!hBo4|Hq{v+{^y^{F5{(@~RX)j-my2lm8AILi83&6BG) z^~A&QpVa4i;@yb}2ja`ZR;XY0#FHTejt|BIZI11}cfn094aO&Ojtk{0(;x<#TO3+- zT`)cb*Qi57@Gqngv&^bWr9kg^WGkpJN`X?R(X){mq7>+9x~vh@F%zljGByX5EJ+}; zLkID4P+x^T==GZjQ8TFZbYxPe23IG zD&pK}f+?+{OmA>xzYh^2QDn{7-0~L(aoVrCEy-@Qjd09;&Zdma)^wRHqhv34)t+he zO2EmkKVvtKvxnyu=t=f~eJ|ZNpR~&jZHo3h&YTos-gExbA)s;QZT-U6EoXD2P+t_x zgKdLg--kJQnhA;r)98%pU}bX|`*~g_eEZiRE2B`x)b~WdXv$~)UlWc{wXzrP)x}f` znVjniAx-rDx0Ai_Abg^ghqWYd#;;5Tw#J;x)_2Nf!Ox-sdog88;CvyM1;bm+hMWT$ zxu%}4dSD+sjDF17sGipc&!Fu{RR7%vkEX2+Q~U67E=o+=>h1$=b@z1yr)pO9!BE`a zLY$0`CpaS?az84yi-`0>RTcDS)qnAEsniO8`6E+=kb&1g4T8r1fq#bvfmJSUjsK`c z8Dd+(n2p-X9I*oR+kf)+-f0|?R}dr+Y=eJ|(@dtL`i=nahSSw=1>gzf>fK?GC(_kt z!|+}~*6oFnel{lkFm)J)-yuzR5wU7dA)bM6Qs)Tq^|(^a4acK!y?Q*lyjLs3@$GoM zIy3@TL&U9&zz5<%YCIAyRqE(SJQi|tc_hwhrY-Wi40TFXIaj?~(=NNsA=lx^=?agun+tF2yxPopnpH_bewJSaaw zEGzYe3S0r9=M?cTuO>a|Ab!#m$GOPYW*(G-uZ1XJit<*|sBjN18Kw=i_+)CHmfB8t zl6V8IAH)r50nIcIZHHVpOtV(jLHG*VnOo|LL3j`RJN1)6@bG$!niq|CA8L}5*&`)0 z_VK)|Jd)Y^ZQbE}fF_slurX^qdma2=ARAENNv_2 z$JOp4aPcqIBSfG%T6Km9kLqvYPZ^cJj7&CX96i_hn^FX8Up*Uf#^mZ)spKuSQG^F} zP_KSsi+a^stJe%Mo@vc4+*}7)+*ErX(4<~X)hi{ymdZBiuhg1`)=Z=Bns_K{pA4Bt zyH;G98?UP**Cyvz&W=@&kH!7Fi+%98e481TCT)pBD~EO=GzdKlvb6qpu+=+YYAEG?Sou0jGxSrP>DUZ4`D%0D zq1{)jqXy$pYj?X_NIXg25ior9m28YVo#{B!LL0ft&Ca=;;0AT*I;mF-#-sgBw3+?) zJY*7{?8`8-ZDyKdN|o7{ z)ti0U+nI659%(42d>T=RnmcT8XP#@?hUQ*RP-8^dO;E_T_Vg|-B&IN|hkREOhvXGx z-UVtJ*af^8%4f}+Qc>0tebk}xc=r(cb==7@u-$O$w@WM*ZRa%F>PGW+_0o9!|8)1} zVND(1|9Ivmgn$9UqJ~YvB0CyT5Zp)v6~zVDV%-9$wTdk+ZLL*vLlm&0qE&~wv~g*r zb;G3<9h>V}>Sc6dkDlWj~*z{PqCIdL44F8&e`eyQNZ05w)Fx7cM zb5t4E=*M06yPqY zGIhCYC33iyk*BQqml4QcEE?R5Wh2of$6k4MsMtAX=h5Fu>SiDPHdO#=VInGN;kae$ zGu-lex%Bf9ev%Y2Im&zD>m!jYO0)BN#dteU6rU#Yta4zkn!xX?COf>qZkZ@hu`#Kq z<2m~>?w<)9RE!tEOEe0v<%170QBq&WSp}`jPpPOfF|UW8wWct}>AuM-jB&Ft#;*%w{Jw3y z9@2Q#JQju~tgEHV-E1S8oULF#Wr5X_p9i37A@cx6uwyhL0-X(qXo$xh$;e5M#3Lh} zizn?gCMU3(US&oZ*^Zx;pQ}V0JjLR0I8J4~klMz^*=Jcj zjvtFgC2F5aluZT){6tm+a(~TH3C)gF*A+M$mfMe63Vd`d3WMF^)v+jfCg1Peu2+|7 z5G1c7wrVDdb0->WW{O+LNxK_tB-ng*6`TzkN$+oTD}xP&&+LM-e0DP&L^6!VS>nCq zwBS#8AAbt*9k2cT>VM9(+AM^fO22F`-GFuD&``&bK$liJ66g-P?Z1qKWyf+GuWDu( zKb;bMXTEixg@~p9n!;W4z9YYqxq8LT5=>`IG*eAHRDlP^lN#cTBRaL zu2yG>?*+vt^Lp2>RAXEdHNmQ4XqdbpqPCyZi@d}ntMB}}5lNot~2ISicUM)MI5f@BE zQ%Cb1-gH&e3@6d?!nyGuKh+aZKJBQ+;+N2jv43}vtMkz$&-d2hB zBxpq$vkOI=KbIi&78j-<+FK%;1Q9+wplDBQ`&zfU@vz}tssEv+ZkoiZsBBQJimt#4 zGzpfbj4P%Y#)+^9K~2byHuwR3GSTe;{Ln$?7|(*a4&ktES78&d0=B46{Pz0HDh}3ytn=xKjg!%Cq;KrMD8b_=2f3x(X|epcqOHEffV|LC3pk~g!v4B457?7Y5Nz5R@aAQYs_tzGz(=!@ zGQ#+Y(qhAMIJbEnHx954kN`$)fE^RFQThnq%SK5f+j=7?kHRlS3F(43Mf<~!%-GTl zsVJkksLW;1iyPTObl$Gb>gnAgz6Fq;P-zJVk1Gx=#S5n(-_UUH()3iF21=r666Z+o z&8tS(1tS`Ka0(jj*Lr&r<0?}rBLRF8@`O{JigtmP!162hc^(bWLoZ!W!+6Q}eG@j9 zaWx>WtDIfMz~U>P0gLa}9Qj@lMmrtTR=Ecv_uBt zj)Vhg3RtOwdjOaDSpHB^l3zJHV+~1S9F@`GM>wrWl%o=f{9&i;Eg2cB5aEl@qiC-z zeW)nUO`|GJl-H>1M7>V!!LC!$;;tOFr-?JvvP@l|%!TnHI&@;wRK%co?VU6Av72pD zaO8a7yCJ?wYX+8``u}-`v6MbmZUNP$j9-Y;$rlE|op? zH1ZSN7|@81PDi0Jb8*i4;O>QL-&wLHIf3d(N7%;F&x)7Z7Ltpatuv5+RPi#GQU_ks zbE)%dt(WDYN5VU_7ExZUD4v6SR2paC^ciTFUs~_x5ujn0h=+E>YXD>I1T3TnIlqCd&- z6{H8tp2UA&AT_8js9h{nV|1wtmP@|JqZdHV$Z8$ZcKN~Fcz^H2<9`3yqeCx;8HH|b*Ou`(-8nZ+qG^Jbwj67gT99{8hKsBe1FRJZg*Qw-@+ z+Kd2BuYcbT>s5ss(sXLG+3M-A@Vy#lAI~}*Hydd|r2O)1q;~%ytdkz);A|A`e?47x zOL<+T+Ym3w^N1BW>L=cC>>f^?1533EKQ{*j`8xgOGG|w}x!UfF zkk4HmofFC1C*TcpP?#%>w9HG+=!~=$e=-M7eH@~~8{eOUGW$xWxs6Y3iXz`NXeau6 zZMn%@m{4EV)x#BZs&wMFw1spMRxf-3^_tw6p$jf7Np&S)R>~j>LWi)^GyqY4Qwh+p zoi{-D#enXMzOD?dHjE|AoJaQ$_q&r}-K8XlWD1}&;6GnLv9WA8^3(YP@HkT=Um~wo zxy%9qx-FORcm3?cON2+yMSdXvo;w#kj~?Ngxk#fnLswg+@WoS$27#7_d>zkte}d3k zG6EQ{NW@(yr}5pa@e~?l*o)`|ebE$X5O%*CXYyKgr6^}IEWk@#zu#u?ciYZ2PGeW^ zPK~1ub!?oqlJB=^<>T`rA}dX{I=2)+oB+@4Lhe*y*CZI$%NEPWS^WSD*OH?vc^YfL zvGY(;w^bt)QsvMa8w$x@m^M}!UOEp2^+elb&beS6VrvgJT8T-eGX4Vo;pQv&><|uEh7| zBMpdH6Y|j%KoaOK6gaiPoV=wXY**)OIly%wVY_z#rhpIRquxH3f0UWC(-fd;2A4q1 z33Y5t>ka&SKEkdQ9*--&3@|>f@W5pYP>7^0_3u6S;{_;9{~^CC%W_-hI#K)%b49mL zlh_!Q<+eO}lDKl@71e?9iHewUZs+IKs16${q4TK5BvJhci>cp3F_zw8J>F2EaJMq|(y_=lI#WZ%EMBsHFf0k9feP{|$o zw*!wZK)r!QtSA6Zk%hMupq_)H_CRE9h8mU*opi2ZRKL9zU)dmYPQZ|!6N}tROm40w z=j1YDMSX20@>DoAiUU5+nK&!AiIp{(M9Xk{0ZQ^-=+iB?+0`%vblQoC7##hq!rFx> zP`ogy56)SLvh-{cQrc%|V;=`F@Vq{))d4l5C1(?C8%*(cKF8Dmf>>xZxoi`$N$SBbTY zkv}?)r!Ph`d=!(>sp`0rRA~{JZGE8+tiRze7o(^Yf(<=DP)l141h4e5{509NzE@VP znL!T3acLt6xX8C51Y|cC3jE;AH&yx#VUV3g>;!;QvIMETIla+fPHzNSBcgrI!l##@ zm5#?=?XSGz$oz_+IO@+UEZCjAM7j1NudtZ)0}M6+lm(#U_QCG@~EIS92R3VD`@b)G4L|IU$)g3|v}7AD97L=@KyXolXDkD- zSss3K8Jdl1aoaLjlfJ?6Z=fu64Hv$FMxaXE@CNDwXGN>xn#lK>E_0Khkqq-!^#qOe z$2GIWEkuCiOC%4G{;DXDJp7=lzhce0CYl10hhTzDDXy2+gEHH_zwA{(lG`-?y2Wx7 zeFcZcJsyS6ySZbxG7O@r_X^DUY%R#EvRA7n8`I{9XU#FjIrZ)x5bLjsgRHBA%~!0t zYoZq+YqiH$L_7aR^4uiNJUD|kt&%`?C~zq&+@sMz08VFYSB1uZkGbsVq_^&A|pvZ#G35`U2OXRKMW%%?;6!BKi zb}#&3CF&Ztsv%IGaNSa9voi?`NpM&NUv^yLYjKhu^@=(^O7ogd>pM%e`b&A1tlDnP zP(0Xi{67i9>-5MM?ZNx>s4wck*TG62rQ@f1G>BPu1`lRYDpT)|^(>koHlA67udrwm zs=_e_GzBfhs}1NivG#`t_^APgeh2PX2t!|k^9s>Cre!t$vJj0$!*P%irIXPvx+Zdg zA!cxbQ61v13WcFpOGdTonkWkBM+m6Yxn7zC< zH@lT>hEZKvP?66bfKgpZMzwLac<*du+_{thUf`P2LHy`oW6qoR#YT0STh{Fsv6g`7hDmR|Z2()5J$DXQfa49)LRkUusjN0U6}z zdZ~)5jjb?PH;BlXuT3FHC575RVSHJgYNH3CG#FlR)p@osXmehlTp4VBrfnQPokuTN zimb3^{by~2!i2T~IrlTQaqsl$f8svHC>qY%Gm23pQ{s*teD8-%9|+RnQsjHGB=4=V83) zxR?&a<~3mVQI7Ag;c#5m&%JQqn`lyCWfB@$QLC&T&{kWJW{S|MFDRyieJYQa!5iMR z1Hn!~bkvR&Ymw32y3+xYX~w(OqMq(bN0_DwUtWt;XgU6KEvQKp*sl}~MvL&2Qj{uI zyoSN!;?*!#s z4QPN$0`6w2+AjvA9|CJ22qlNCt|UyaT9sMV4n{c9WoUwjQzQbn83jC^r zoI*Or$?Ek~%2#Rh#D}+{*lxO^g^p#qu8a>NIXDK`WT}ieL1aHDA>kS+lgGw_&6L=qu)qd1S*9qNU(i0^ zo$UZ%u+^xW#%a&-v>hNn{0AF%pz)4|TeNXC0{5w;pog8EAtYHugGs@zovcZ1hFdsh zCt4Gi0Zp{4&E90$q{-Ut&vQ5GY~U(q+`JQwNrsjZP*hw?2`DPkQUdBj9QNClt-JdZ zYfbp_O0AVQ*2FKogJw966#I1J1sL{^`M*aH_PbLvT`lr;DQzy&DL5G67?pr;F`l{S zwhX7gi(-9@zuy_E&euq4M6dyghLdz-zgu|KyC}p@8Pq6?%+NJ>sl;8^6ttFrXp9&s zYJWVA&F`Xa;@0ht@U?eQI*9jrm{8nv_F;2L0+3+dbisG8c@n6yx>tc(OJpR!jY@b6 z@*mAn7$jvG}6{k59T=@Y>0Q8P~I2^jzBwJN0*%eF_Jg91K)N2 zz&8^_HQa$u!P^tV2#^}c2;gk>fLM+v>_UUQt?Q>NYNY8ZImiok5q-@HZ@gz08sMf~ zt_e-PQ6d+WTr_9lUw0w@-r65)i^sIo7Kq>4Xo;=Kk?eb=42drJDw~EU7UqaUD%YU$ zp4l)~wt$+ib^BwSxErOoJ(}Q;oLox#l6*|~jom0%+}JN1zq=c$$t2@}SQoM~;GmeY z8QLa|HxV>?lh%?swpP8W03_3_bQ6)5B|&R7B|PBT3Hd-feJtOlAW0OfxyFv-8aPXP z3L3c5l{B#XWYWOxiJHf}9wJAD$Lv9Qj^`CEfHDa{M+B`(EH(=I@fI76+j)zPHo;=! z;hb}D=shE?I>wpo*ia$DrWm&90_GP^6#V8NPB})fY$VX&Mqww``xr4m6F3@pFis_1F0KqE<_W7N%|LR<#T)s@!`G5OnQO`?_3y1#;ssE zxgMIbh6nG|c~#lKJ1p6`@!*|+39xu-kD~EJazgACIAC1UqG@Dz_L(#T03PdOldlQl znhQsqtbPH!tS04@XtptJmUtG3YwF^p&tv6x$J~-8zaQHqn%>C5S9F+mgf4RfJe!OfS zicpvJ`#Ttv9y1jFc`_&8(%^vEHV8#Wv7#YfVet(p>^6W`rD=aC!I$=-?i0)Ug?p(M z%QLOg#q!l{V0g&O?k>Jz6V3gmbvAq@o#)woj|);4DOS~$7&!Udr{bX3G+_me-Ifr{ zex3}yPLtq)6;Rbr@#G2=HB9Xt?n@W5udJiob19$B5cl;goWjhqJsStUUQXcvp>7Y- zQ|!otCVZ{}1q~J7^YomQv0Bx4eBM^oC00p{BBr_uY(7&P@X$~72&QWp3=e_F7YCAI zBY-J0n#qEIqdtK1Ru-Q60V;H4^A?*0XlDZl3eU0%K)t&HQ15j?PW_1>r-r^Ja%$0Q zlV$&Kd!aV67wTGlmV(U7{_}*cht3Xef+H{3)tu>kFxSACFvCgLg$NiN4*yvkkgE_T zX&4bjaA$toF&tJ+8JOji33LZp04WG2F<+2P+%Qyt@E3vft5ZofO93(j`*?;Dm6k$D zW+yWWW+xL{zsndHuU^SWEM|YK+7CjaiW8&ug9vGC@|FbIc}39-+ZN_4)uaYElv040 z=D7ye{-k^EyiS>xY|gO{gURtm+hU#}#t#ml6(fwVxO}AzY#iYX8^J)>2vS&w_%)ZN zU4dn}K!26U#30*59Ae?8P^u*FbXc%Jg=tCgp^2VzVp%lO{ zo;`$AQ;hFe);Lt)-IPMRblDtk*Vk+E3q6h10CJPJv@9>&UeEB`5q16cO=MudU<&c{ zo19DcC?3h>IQcM$jJ0^pVH6i-Np?~mAl`8f47Gw<3Vj6{Ac|9H85P(FI%D2Z3;yvi z>glQdF47Wfci^_yfV)-#4nc%dD^apu?bGCRcJKLEOJc6BLjt~JUYpR7+x?iNTv{s< z5zabwJz-Mqyg8PE>>LI7+h($JoFz^NZkINpeI7CTg0+34n}S$lJr7KD+)s1 z-bW^BM!|7;DLJz6C^>gE**xm`7YUmUwXkmt?ddwhZT(wr3Xtgq#Eg3|uV6<$YXYcK z!J6vlz`|@4nUYcds%Q|5=ikV_Cdz@6Ze=%s-c2n!Q}!5^&&nbq%nMC&$mf_tK9%dL zpCiCx@|U9$iMrxfj)2`C*ar_8a2#(uf_$C8&6#x!K70i2=vMB&U?932CNC@nQv=vY z2^QrbNf<{l^c=XiiZO|P{ zkJfXfMS>;w;)StxyDB5P5qY}mMXoEY&MO4QzQWdMyFLOFCLR9vBb53)`cR^*cl1=I zia?u?Z@o>ygPaHY=(4&H2O5H@Ik>z4FJ2p7F@cjO8_wVec)D_oWO)ZK{upV7^XEGO z5Fbx@c!{tNb6U)!;d{Q$jB_g)XFI3NA_s7m1M|*SIp3bq*;s<>=&TdSAiX!>>>mTH z`05EXKFwkON_JYr4UUPPXo>L@n85-b57=PO%`L7`jpww=mtwStV${BT?LVO zgq_%Z297z2e8&w7GY2d5Vf7l26PQ!ay1!a$Ho1Vjv$uYEXseUEPSK;;Q14svv=RkN zB#m7HYIOtein{hyJk1dgk;zQmlgqTPUq=Zqs-DzHS1A;l-gwJN)UWF@gV_K0aDuJd zB?3?#Zxn@_Pl5sesI8|^Pp`XSW|a@X`E2eg)VSX%Fo00wnWs>S{*Pd<6eH{hOpJV$ zIE)iGiMm0vPu;*`0OEc37{k1DU3A>K=T$-L4upM~A$dzJ2QxRrrx3OTV2ubi#n zz?e0DAbH96{gwk`>WG?cYSDx;9@frr4?hlT381pmDB}OZXUUtV(FDh%FC9S|fmfIX zUh)4opCyaWqUR$WW{!n8+JU9Uht1;LWDo{D)s@)a!?~rCL`h`^arHm=RWtg|k;&4A zdzQ&k!$!L?(CRV{N=+OT_;lL(+)ZrCvQi8@+3^rfi-Cu_6AM4yq|b?*c6da5C=ZF} za#3>-cL3q`@r>Bq@_D3<>HT3rvFfa_EV`0!n9;hywm(ogC%AN5CT3*P&Fy(=yL&Y} zwi=Lh<#=H=QiU3Bv-LeDYW)u&|GiqjGlc8vz6J*;dV*IJOnQ%3Bej33*D4F;jF-Cf zwL@!LD)G~56z4z3%j6JYfI|co9$o_x7I>X;h>+_Lp$u<;2>K;nO%4%Wbci5|u>>}F zg^7KQY-@G1&CB6%zm7G3+Hfu}ilV{qpMd?|s|8PYcFgB)FK36RW4lM&FfD$KBlGwy zyZ{gMVitHMvgKjGqiazBsLpWqR}11m9sacz#Rr@_C^>0E zPCa1u0~~<50dBy_=TL0G>cbMNJx28bhZwDxB{7Dcl>BUuQFzE9#wuJ-VmJYq)gEI= zl|u{@R-8u~FViU2(gSd6wk0e9=blHQ-EzYY^QynRD^>^GMZeNw_&gq@U&d zu0nsEX$!J>%`m^fTwYxu(#r!Jh$?*hJdB=X+@%ghcpE=}K1a7;%k}aF$U%)OF97ni zH@v}UcG--HVrU119>I5cp_GO*?wlB7uo-L@%%7#akR z30scU4WPCB6HjeGMQ$yyS0z5QtZ5M9yA5c<|Aw7{%!soS|F4F;RKCr^;gd7uZLo1p z;gQ=8we%#Snr*}+EQ;DdlM(p^3XB(RWNp5tmhBqsFd&zP&25!~wM907$o&8vO4XSj z7h%%Bk9%JP)uaw*U4+s9K3;SYsRI^Y;2(BWZ?Tno)<1h%Nds~dqWmg5f^fi2#Pw)C>sT@&q4_h0eDM)>}m7(=o>Mx|qn z`*`prh;b=K+ut5T72}Y{U$}_G(Dp(D?J>$6W2o@OODNP|`>CYDJv8`9au?K|*XU~Z zinl|H`sRq6g z@A(R;d%=7X6d{~*Nx>P<7&4!lIP0$q1~Q+9pOu!Jm3H2MaHoLmuTii9j*OcIob1yL zNzQAD<7vF+YqT6ZG?#d^m*Os$(d14lRpD%)5_Wd~qY3qn%P894sYG&tt`wKL{AowK zx0rGBWzL1nqsyq5f9_CbzMan~9QaH!)?9%hFbYqW$GT&Q{@1tPu_a@+Yjn3MIae-+_q! zjU(H-*lV_Tq`hWh{L57o6E^asZC2HN-{#sK&b#>uMJl$|K6xMElqM7$Z8F9n=^h72 z{kIL7CJ%y#23NipL_@)v?H*A@EdCm=YC;h{u(z!cY~qRGAm>^NpKU@(%&BAeQ4=Wb z%5lGI;6+o1FI+=2;VI@@)EB?;9dg6@-=bwe|M^==55x1n131RJ*U?;j^E+*S2zDlj@D*0v|D2j;t&4Ic$H`Zh^}ZB|8}#Ak1yXcBk#fK&MQ8)%r*jnKhA z^}+pbf-klA@y44dL_GZ4TKw@%6z5Fr2+Bs7@Gmz}Om{vFf!kN63E1CjzY((!oZPiQN&aMxRC@BqN4ov9%ncSI8SPX}(mM8Q6Jp6OZg#fmd; z#hmf(mFJ1nGFaW2UVOwXpT!DrfOn<_ufGK<`?fKMN_$FbvWJKog4r(k=q+?D`j61m zJQoqv^+^{=^<1;u98lZQF!rCOFCnb|68^!*ts=h~@JBzx_<0{|T9Jx*@fgl+1yg`# zyr~rxguO40_^r}CJ-M+k`S_5Sj`MI@0jTfd0+?oksmZsOarkY-Li&BTp#gOG%589S z(}cVH0{fk29R3S<3^m}Dzo56_o$^=II~2f7UIyr5rS`PFi$m+liygb@A$M?En{T&nw?qm+!K?RU1@HbHQzmJFg zhI+x%E5D(|kmK#&P(mbgFwPim_-1RcTUg__2`vW6^HYoTWkcp)(0PxayTJG25Z8lo zH8V1H;k3IbHVV4u^s!FeqfyDBkHD-%0WYeE7g`9dg}D4Kit^6VFP5KvE9P{cZ$ygf z0CClwi+4|4zKg~q>BiK*(o!Gb*fun&x8rG9kSIF3o9ycfl;fQ;%s~m;r-s8l2U*AI+uuBcN588}Tc+7pY9D)n?(OADN%V1FuE{>V>;@h^> zBD*W@`vj1hCe`0qsH6+K*|1^pJxLsK{x%pV%1qqFq~k7Lqw?CU3~Ws z7#(8V;{i0a7-v2J=SgN<`~dO*@!A9E`jfcj0U8HSNq?e6P>m1%1X!3D-}@8lrpBQU zQ6UiDe@N=q)zw}%-#w0X^LPYyC}te-2=e^^k9h=jgO7cL`uTe_dhP+iSKGVs67A$H z8OZ;w{Q3v#fm4sb$kL2|eFSwgV`V$kO^qkELmp=QMmyAPB0ka%>#&LUb83}(&0OF+ zNBhhEIPtuUl^@M6@VJd1wxfOt&4plAI{+r!rkLBiNm$sciiD>(#hfCuQKN&Y3A52k zh~S3!FzcP>3PZDurh z8taFcNTLL{^0*x>IXXV^Q#}POXDO)K1toYf@paTbpTp)XB}#C?JIqAUhZM{cO7u4Z z$fulG00|(UJYok#+L( z5{Y_>@T(GLtfRMbbeDK5zan9xCD6v@SnR~i`M23ak08`Fj~%qeE21XL{vs-9qP!3< zd0{DiygXkds&P9vu*?!`?5lwNa}jaV`(X6T<>@2J zHkm>Hp@=V^tt`=*LQ*8MdJ)^|p*XR)yCI`g88!%TN(DGT$|Q}H{8cur%_~$oVl1TI zyJ5ZrRIUBAaFYtn&~15(WK2VXkMxzMQP*QFyTn~x0(~ZJ0`yLh>Z^!EW}7lzvkY`u zI=n;5kR_-=%7pfVrV&Ib<_x0me+T+2PjFx918@-H^$SpHY68-^$-De8`e(G`aAzhj z#BmW84s=9i&%qaYWe?u(%w&f_A;RYV2pJl@&LO27vJ}(~;;>6NLdN7edg&(YiMvIC z=GX}k=_X3&H0VP()logewz|p>{n1T3R+Axd^-|VIYZY>HtO10NJeI2s-;^-}+!}X& zB3qvv0&YrU)DLis3*+CbvEQ9>-hJb*o3m%BFJvh!(|u=&G)tVM_oLS7K$@1DE1Ki7 z$y1z0){e(gyu^hW=-xKC(le{foFOK~-p8N1Fu@Ffs+wIGU(|yCc3}d@bRY-`fF|XT zZ{{JDz65O(SJRDvn5-P2X@(WVQCfKzQMJtBz)fZj4^`6xQsw)$b9ksmX98|2O6BlS zrG*ngq1(*ip#mx(3Gu4i1cMCza#SMG2?)Iy@-?OmAu zOwj|}SI+bet$6o4S)_=amSuH%(KOxAyz0uEKx#5{565V!{2jg>cCd2_PWs&?u(NezKV0y&WLI2Suq8)ls zU}W-KuKyy%F5n2M*q8J=Z^z^NgDMinftv5d{#-9!=TL20kGbMi#Mljb68>^jA`x*K;4RT|w)7JCEz!96pq^RcSr+bAD$$CA%}dvok#9w4#X;@H zwVSx_4mqJJ7$Wi&DW*FIyGAx@XQ@RO>^P#4iqfxYs~FcM3ST)3rvlydbnn+j z^KmU*BK1P#0CYmDfij3+jj2VdWcUt^q!mWyX3ccKJNi^W#jBWCIG3srg{y2gI9Yp3 zGPuh2bf_$6O>R`l`kLpOmD=oY`#tHBCrRml>RxZ|%E(PR^{|2sf5gqnlc;3+!gipp zdT+(eAC(ABVKQl+B>3*yU-}JGY<=ja&y(zXS{JJ1((Q(H?5C>Vo>VK*%1uumuk+mT zB(%rKCXMq(izvBH?Tl7TJE7$YS-RR*hG$jvBso{cs^>`=dTyvF zEwMT^DA&5S&-82JtFUT@tqMDaup!RQ0(qg0tTZG~^HcNXeq}3HC;6FuPYvLNdPP%p zicVbusE77ET^A5u4`iPfq{SUChW1trWB0=~P8;^?x&O(32d(g*wm-R_E?JTTo=r+> z22P7U?#x$qrLEW7Q27oj#AZDge(V_LLOoADvE6?Bpa;?6`_VBOG?1zuPTBS`*( zC9gyNtu-U3CF?6?d;!~RId!CoqKn;y0(RQSO2e3G$wC3u4h5u=0!o~$8x|IL-`KDO z^qIs^UD-mUGY#qL7^57G-hA#i@p^tLE`|GX`TkBDBRRE5ACkk!B3P{9tc(03ksO};M^Cr+xd)=*Vzh~Cb_?;zmWf28`FP}d+^dMhAyDg`*d6MYGi-ZCq zH_&p8o@I3horD4g+4C>!A>?1m{jAYT!TVQ^k{H3Ax42-|!_& zsIw^O1;5`IZrp2AZP~PVZvNt}a^H?aNNZ$`HigSNQ` zuWuI$7-q|3bmK{B3#@Mn!Bj|QUX6yn!;>jGt~0ib-iB6(_8Fx$-+hL7QU^` zZ`m8Q$wm5B`<`xW>P6YMlGG2+?|@Pcik?(>YuiKN%De!$`O>0j3y( zI}~ubx>rQ>aiM@2ww$b9t1i9wrcl648+lk|?}%ujfQ=3X)C+xb^YDYU?Ro1ehP3Zd zkQO>4S=_f?(U|$!^+S~&Tnp(}VOzSEOw;g)UP2RXvyqkPi|dDk7J4<@-a;wla@KMu zYig!Wz9jq8zOvO-uu12|eZ|w;Cg>85N$NCfR?kBpqC&&GYAK2z1q%_Zt}LvsS={P+ zKyQVOMol-eyaHI7EVX`;Utrm_s3hUz4pxHVx;i@mLkWbcaJk zasU$($7|&>gQ>Ub65(i8M{FsDqgfd-nIqn+aajNpITCCe+045QTCi$}w9c5i^#z6>Hc#ol$Lj`q5_xKhQW zsAmt!X@eb-4ccgVJ4;zhT$NHUROZk$&^gnmM(i8RJPcA0)dPn|BUdiO8Hwd#zVC9* zwNYCa1MU^VButgGvmWj2g#a#W`J4}}5E2_u_DkLd6hh7hl=UF)DM_m^gSl3*a;?G) z&U3T1*kCJpXEnxH@#zqzSQ?-DN1xP3I3twl?4OicD?H=j|Np6I4qVRK1!kQ^b0)jQ z4376Uff)>81a49`5lNbZ^Aq9N2DkBnXpVSkcvc8VL>iq$b4K1K+br}dk&os2(t7| zF?-eC+OU&DT>E%V+jQby7_%8g*UfJ)p43P{Euvzkb*Y=m;u@L&pqAz=QQ+a=u;;bu z#K%&A%ybhU4rl5-%|$Xrnj_l%L~#Uj6)|VN$GRw{Ys`idOTqzI^VQA4G7zM5AkGaZ zW=RGWxyc?BY!oTuGwK;~8RngzO0g-5nWDevcfMuN@;M+P$k;3DKSTVsx$YVP+^q4@ z)Xk54t6jYv>XzY2>NY1ND5Ve7Eqc7@nB+56%^U5*OKqx~u)?wEgEdZ0w?heXW_B!h z3+MFo7Yp7>ve>b4m0h~KW=q7~JoP@=l8$(tr{3--_D*3D)6I8%WcJ>+4Yx~%$lCVY zOlN}{GtoFmGON6~IT?`sD`5pZVzllNY_K?BTZ=t|xK zKR;#i-nq8yE`_Xy>^_s$6AP*CQ9mRmk4n;vflsW>upF`gXr6fO*fWgq?=5Z$u#xxa zx9E62TLsk>y|vp`-QseeySD1q?_J90F9)E1PPh|a0A^#EoPp~(&ubq{bh{6p*FNF> zscB~re`=yDn!{lIG<*uk4y(SLrg)^D)n;{vF`yCc6l+y$Si>O_u^z0&PC5z}8dfP=2%Rf?Y6d*1l zZy$mE8!!d#&IspTI53%#z#^)>r-J@*dL z>w40no2dQfB9;uhONY@7kjABvn^lD?BLe0S$-l5Tb53mckgInFgXBMes2q3)$|=7P zIBzSDRtt6|Rv;X@X6pLqh!x1=L`?@6(q1MGQ16jjeem)GCZ4~WpabrdSq%R`AXP+9Nj5WFBGNYY8&Kq!I@qjQqGLdWZ&oj~@UIgT_Qx%ZU2VF|G6=g9R+Af9~BOd6ludpZqTi`;w4 zaNR*DoC!k%{-7UIne8C0{%^w2XMyDe<}BD$i#BIxMIHe+lZto{%4<@W#pkkb4+Y=G z|KKCZ%#>;W9BuYgCe#&!kXQdJGW z0Ff5p07J*g`OA`)3}U7`!Tq!49{8IS~!L>ccsKMgFRv8RSv-f0eSm;dh6F!K20UU2Gs`i1!)-FfJ{iLFkaAP(Ux0ndX$%MKD~!28U_I3wu4D4J7_u{PpO+Y(XS)YXn?O(jPYbNL& z+vc3J5?g`Sj^(yPeB+rZ@oaw9VJ*!5JBdvu;*iNeTp+bMI%KjGu`|Ifp(}Oz1RKhS z_6=pe3|tU6rqt05CDA#U!8nsk_<(od)F~l&ZGePOp|hNms7?t@G+{fRP~RyfI5Kf8 zvXbn1d5cjCcO`(WuCV?78*Yv=@pj_eX8Au7J_bW@QdcW1hyR&SOI$^XM6Se~S+IAg z7{+Ws8*%b*CIY2l-Ed||(1Tf`)l;Ooiq>vY<&rL9`Ki_5{nxt+u#G8io&g4Sj*(GYx`!NijL(poZ@ zcuC#0j!f)30u(2_t(l1TX2#t^C3rIYU&9>n;Ba$YM->sm(_tE9Oe1- zzHIK(a+G}Q17CL5*=;C$a+NPTr(!!=Dn0AV&i#8kDu4BwFFWtxPE_^rbze6Bmz}8T zo7=wZOO@}S_M)f0Y{6O+Qa)1p>DfiQccJ8nC_i?|d%ID#bBZ7P>YhDlDNglcmzM5D z<=v>Bj&6slLM+Wpye=t?zeRaWXt1K16y?gEnenm-F* zH=@H0DAHH;T>!fo-MxsieHBjw*sbVkBZ5|l4rI&G4_~7SU&Zr*>`rv#8fx`rcLcKU zqQ}>e%&)N`klls0Tt|_9?B{{(9#sAV%J9>4>A}8-E?d!DzXJCj>^^k!7Ao;8_@D>- z0s2t?3##xdXzIc4M-{)JdcU?Gdawu4$9GYyU)%3J*u$v)cO>&Kc-n(Kf^N2@{Zy2v2*BXsFLn(MC{5X7E9);~~*f5FNi_9WW;532B2{}#laMnz9iy}$0S zAode<&A_z!D|$z=XHmJ4kp+lG>LXbTYF@=e2Cy?D*&1}Dn8^q*uZRSLp$BW3xdD}* zMY45h+d8Hspy0Pi_A^vi##998rbMw9Q2iFBJ|JsN6#E4__BPWRpxGJ4eu?h9&By{p zhoaa^=*~7KGO+DT6#F&Wx|7KWZ2LBfy@INDGIIk>zellGQHd#@DG9W?MzhzD#l%zu zss~52-=T+lK;Z{}vq6#R?<^8|i8ou9!ZXqTEyRYgjDLI#oG)|%B$7z943w5(5WWMU zFNEHN2!HfF`5klOi?Pfeg?>EzegKME5ppyb5bC)>M_vqu7o=bs(gayRC)#-$Qu=fu zJ`E}TWuTLmqamfU0-c6DT`v-CgcqbQX-E^i4|MVcG^F&8g^XxO>2*LSA3#G&zXo*j z0W_raTO__7UT{Akq%Ydx1^EIRQo4(Zr_+$q{RBDKBKX-MfafKFP1hLrvi(8*w=A*CCDPOP4XDA4ty5O_iQ zjD|EpijaVYls+2hq+l9Sx(?{1C1^WU3M3kP8CY%#!f;8vr0fEM_tvt~MB5d-qpsJ?(wSWlAt4sm zTz$NRw_n~{#U7}vc7c?NYVFY;9-~^!ik__2Crc`X@8`@)F8}=Y^_o5B^O^UY^ZC3# zXU@*N;k8|HI~wAGXU>_Chhqfhk6|^Dm>(vw)CW%@JTuNeK2Mswdtk|Y^7*`97pwo5 zFzsZ>{op-M&-=qL=cP9?Z$CYM=O>*r3!ZpJin(H}|B~vH2Q(l4uqM>CLw9e^uIbZ` zHZ9wo_5Mz6>&|oMk52n!@6&&J!MbegeE(=dKgoJWs0(VVW3SvlEq zf-!*^XMIOjO6YfsXU;KdRwC78BemFo%N%?FpRCmbJ%-B-gHYmdS} z*uNG{7A{>MP)fLe6wOJ|j1>=DKrp=zu4AlKfhB~Vu{y(5*69ky8WvPSSfas9wjK#8 zB^=3Omt#r^Pqqj;$CMGQR_y+gDzi>ft|D|ZMe{(W%=)RajIhl6+k7^-jBqVRrZ?&( z1hY;&iE@8FWG$iD24=D~G_;fuUJ}osWRHXv6ZSo#i6Tx8TR^yvh~}$dYYFCc)E%T@ z{4hPizAv7XK>+U#TTSS$dM{0sS#{xS2+NmX))1~Apc!f1tSTX}-$ekL$}ggr)JaLJ zQxR@O_D-;cP_K>1Q%07OcGhdxMe>Awtd)t{L3$>WRzqNt)frVnx}GGhcvzBkR`deW zy~NwU4t-|*!(oeu7n8>AUfW9>ZF~PeWSI5d@W;u9deT}ya-?zc(++{Rztd(JxlkDd(8C-XqEhX7o-s{w{+en>+67zXG_C->o z_V#DTRgj)M%BqZtwf+&en9vnl_3Bze$3rv98WCSY>T4-+v=i}=af7!%HldW{E>dE2 z?FkUw$KKH z5@U+i!xtMc{NGq~*4^zu}R^ zq@I?FQTmN3CS4IyF-i!)T03Sb=@}>5<$*a(fjRi`QABf$H6cHam?yEGJh%c+wBGu2 zByZ7HuzS@Q*>P;-k%|u___SS2gCXC#SHSlQ1&UTq5y!MB92{X##6`ETElL&1$f&7P zA_`TCEKZSMo1rR9rYlFNRrusWPVtWpJ*Rk*#7A)oHC#+&bSQRoF4|C z*(wa9a14v;Rrd}wxfkL7G>-)a5egE+GzdUp5m^4Ii}pAcx)=sf_+(<0bNJYq8cYfX zA-YO2#mPlSPYM_VCPHFZJ7(!*bsK)fFjh`s3h-o(*c%$5oMEZ)Pb|7jQ;*&Uc}%;y+IEMLzAtutPHMeA?L zD8$Tc6~Cc|X0jqVg8Q8LRsZS>89~3l8IC$70jpzn{`33a&o6rcb#gxU{Ji{m{+C00 z?%hM3l7R6mKZ#ZKoEf)6-_ZD7wAneg{Q1{U-`;octq%{$P!GSuVOaj2b@(NoDzEt%TKDA3^xY~+MKnOgkAcOos}N`iHH8=JkOJ=PYnqXv`BOtD&)Z$NRyPJnXQjld z1RYgcqZC+aOE-s#BHeNnFQE*}zwS-1QQqq5x%{5!o?>>YoD)B3+FOgTH^Is5`Ms7e zp;)PzRn;gfn$u5xt=FWYFomf8DW9doKoc(DK1BRKIXr*#>+xzv>@s*)_^=dW@nGlW(%e z)^DG0FQ4DAef|mPY!4vQy3E7NRL1UMD-5lIyh$U+4yryB0=^Q=21O3F7NZ*#Ma+gp zn(`bMDXYxrVqCbYBQrXWTVxE4l@9Bl{f9R4nA2Eb9NC}o5f|;OGR>|)^$eA@M3;wL z?T5JO=RnvvyBDtDIsoZ#Pi6FU| zdqtpLG+s^X^5d0gH0o*J(Fy`_`Y?=EVTRG-@sWC0^#Dsobl{`9mIR998hyvDpFpY3 z5WOXK8H{U}IL8)8)ZpT%M&D6OgK)YLM(seOvd+<6w3eQKm)B@^2xhiMr4pBHK|iCn z%iVR(w5owtx8ua6!F$(+awVlY=GR+d z83r}9glLx?nBrYQeO}lD)GA8V1}G+6TtOSx{(+$yYPee8m@g^ymT=&Ep%}Br4@!6x z==)u}peong5+mfww7n%pGz1fl^Q#q^)Vj5iwvg9xR2AnK-^|Vz3ECBq*-4bc^U8`V z)qaGC%JD^A1ymWJ&Wri$qHH0Ixcq+gU4CsbIQ=Hxuew!i2TYcan6MEHxb z{VES~Unm4p8T!U#C7j_qj3#E8H4pMgxV=a)7E~S_OAXJ-e~v-tADDXt%YzN zi4#}9`av|U0qP4$dhR2AD1P%wZB_2?ZSX};RQ8XhpnUE)?LnwsdS2qvm>0#m7-sqA zczl{*+6RL!L4%G7?)~7t#EW|DA&T!;z7Med09!52%_c345zALG+uvu0+ns{bn}~i@ zXEiFH_7Ex`Z2-RHYvQ1&Rp7Nxtal*TX^}7o3?>p5Tl_HSe&v_b1^g_;d{K_s0~ z(Op2@29zD4So~7-L5+AD=Oy~?@E=num%O(`lP=z$_srVFekl!G{@D{ddyj6rwzIdy z1DoqMWkqf<`lYxyUBhR=5_`L*kkt-+8hp;dBGc zBfJdrIA#hHY+2rDZup`u0_p^y8W4)be~j+%Mzba9Va@oMt9_Kp5!hRTO%RLLh@$C% zXx4{JxLMcKBJZxtLqAEcg*1Q4<_qKBS-rk~r6o>(}t4xP!Z2^(}j5sNORPcCf$1g0=_24*pHJFpz4>a5IY_09<(pfpxk`n=%?NF=A@rXJtSv?0OEVC7KLUHQ5cozS0)L6XJ^K;( zObCEYn-JJD3qudu7`B$hFcR9#KqjsN`$IC85cb+;rQ#9zS5{+hlJa{v7Y_&epf=vt zkcvmyN?ycg#OlGG3I}Qj;Df`CYkgF|d>nqn%+_US8BXc)M#1@IzR2yHOAI|aQu zF10P#ibvYww&F`{)m!mY+x2g0B|g@6ek=ZD;8%`tF~U#)j?ETdm_rq|aog|}_+snD zMl~+j+PC4a$dhRuGFxaj4UcS^dAv% zjFdVthG`(`$C>pqJ)@P<%9o%~Rw}EOF(w(UtkSCtRh7!hM^%MP9L$V0WeNCCQr=-w zFnShj6gP{->!(~FwkHC^A!G4P7{jJGEGx3(voS&sE(Q(^vk0+IuF774Q4TOzIN%%4 zA9bg*6O#%!hG|5XhNzr#UnyB5VENz^uf!27r~2mKFdmQy#|IzA8B{Mpyi}kRC-uko zkt{}o4Ohd*U-kHJ(?TU0@vR$03w(3O)`cq+-WPPygA!Pr`S|c52?%Yp=|~vVXda7& z0}Ni-RS#a-ZL*i}sdPoube9Zk(q`dD30q$co``E~>RNmh9@;dk7XLTleGzXOX~C5^ zUzzKThch!%)zZy6iCTI!+sw>XOJ_e~X6AtfjRCANW@fosIvjAT)KX=Rnc1k8)Q<&GeR=4c^ln$=hdR`rZVOhFHR^F(2@&cUIFL(oe8~zF3mgQMf8a^_CAqPuxk{!KgcWEx`hW001J-G2u?5rXDKckgOW1x1*qg}mf&x>R=sT0?7%F= zsKa0cw_3c`=&Qls8joYfWe!`r6(3HpwDnI|H_`dw|wvan;QBZ8$UJJPxdmX1$#;j zyFYePP9afR*mT5(8}Web`j#0~*vw;Gh@s$#rkH*BIzoBPxthTjNkOS$3z1TDt?9^q zJdD8a*qRUG4M}C56#Qg$1G|;#&Rx_Hp8+z0mi{iYdFp<55$Fmkq$|YIJvROj{BZna z+jj_`5vfaGe<4myU&hUPjQ(xcs8V=6jAo^@Ue`2m2%n4dov=HBVj~JRBVoS@J!!g- zTziv!%s&+OE5a^EQrZTG3J1X@I#3i|8ge4NI?OJG>_+N!^f{8_84IKH*@YnAhdfjd%Kyli|jT-T63z!NW9LLb{JRlICej? z!W7kq`_+TkQb8cGMe9l@Bic-(bWB8R06tQ1rnbgXYI=t#d#n)Ti*WQa`08?&d~8FxCJ^_lgf$~BE(1Ll^ofT$j6e?RFuZn# z21V-}J|x<JolbAgh^t6O2byu%u`eGX# zOrb)drkpLg9hx*k@n5_z&wtc?p)C%IQZu7 z=&n4)k_f5Vv9QPQ&XtE>&td@4$3Qgi=E^G{;;Fl168GHRvVCDnO3j{BB!-jCz4BR2nW|sK)EFb}-gr(he zeXbx7W*!4?{tRjh$g%AO^NJ^R(Bf3LhD_ynlu&#IGfk1hOzqYB>{;_FRk) zHG8hO(}1hkG~!F(>ei9$w4}?V$khd3uJ|STIGjESWF13_$*sxUh@@d&vNouF$#P64 z6pP5djH&>Ut1p@lc)4On4B=`_u-*~{?~bcQu6k+UO0A;Ybz7X_@GiCnysaxm>DqC5 zbJqev%8O*VhfF2RAQYd#RAYl+s^(g@ATZlYmb=K8D||ntx+H;Dq!HrF&u?p=!^Im9 z2VutN#_Nf9xF-Que~DbVg9f>hY?JbeTYNs;H8<4udTpg+V&1J4tuw_H;Eo%T)sdmn zOs*)+pu47U$W(I@91W9Us$oi0mc8|-1EeD3lY)I$CkxWYBk<~f4T&5)YkC=JA6szH zA#2)C!CqHBo2rV*iR6T@RyBcA-Zvq{|OUU^TlbtQ)$~Nl|=^f#VD9clVp0m zxQ?};o%X~lfA6$B+G=s>8S^rzNfe@G2 z;b(_%bu-Z+ECjB$h+MUYqb0^k9Wg5>FKCPT?dU=v>{*PzyOZs!mqLn%7ZCd+N~K*1 zrRSdFXVKykNedaWL_qgQ0HtAf4J?ss(>+<=r+DwlvP9oBG#d%UGjw0ZvIy~>-1p`) zChzLa8nSvXfa;S4_vFXoJ=vo``xm+=c_IBKpL?Yt)7b^GU&=RGN$Fci^b1q*hQIGG zOz%OAJdg8=wnDg9N)z4tzX+$qpw|xx+6eNho> zw_^(xf#MHrTf@tQXJ5itdKwj?AVL(FlXGf1S(eU+$3oC-s;WV=X>S9~X2~MZY*NmH zW}{C)n$4Lu9z+}SD@e1k2P4hqsYRgKIHw`aW^OgoYyjQ71EB{14Vn!CUn>AGXf^=W z4MX7n#sL^K8vrNQB5y`UIezpAaGthfI+hXaA!S_&?Uiuj-7?jx27Vr z&L7ZB3PP_-Ktnepw8e(Nemta=SJf?7`t0 zS{cdUBkkIz$WwR{uI`ji(M6d2e?bZmhAjpy;dy95?`a0jLe!b|+L&Bv5`K8k9Wp$i z(<>1mEXLUEr}34%9=bE(K<%KWbQbz(#K9K%r65MNf)6n=*be%ygD(J%!FJGp6MRu{ z47P**```nC5QCN%JLm)wv(g|wc;^4R9lQWZ8^}M{4*GTAM-vaWgZ>2%@PqB3e>M2w zzc8@Dc3>a~GE2pa@ TLBc`7;RgrZ^y@iE_Kp7oUj?Y8Cx5)?}` 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 diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels.metallib index 46d48609d634f5d9b249991ab3ecfe0dd00c23ba..d7b90eb3585cfb05e0fc72816b545ac9befc7845 100644 GIT binary patch delta 10162 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 delta 8401 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 diff --git a/Tests/UntoldEngineRenderTests/GaussianRenderingTest.swift b/Tests/UntoldEngineRenderTests/GaussianRenderingTest.swift index 337f1799..a621b750 100644 --- a/Tests/UntoldEngineRenderTests/GaussianRenderingTest.swift +++ b/Tests/UntoldEngineRenderTests/GaussianRenderingTest.swift @@ -245,7 +245,7 @@ final class GaussianRenderingTest: BaseRenderSetup { return } component.sphericalHarmonicsData = renderInfo.device.makeBuffer( - length: MemoryLayout.stride, + length: MemoryLayout.stride, options: .storageModeShared ) component.sphericalHarmonicsMetadata = GaussianSHMetadata( @@ -261,6 +261,8 @@ final class GaussianRenderingTest: BaseRenderSetup { } func testPackedSphericalHarmonicsRoundTripsThroughMetalBuffer() throws { + // Coefficients 0.125...1.5 span in-range and clamped values so the + // round trip exercises both regimes. let sphericalHarmonics = GaussianSphericalHarmonics( degree: 1, coefficientsPerChannel: 4, @@ -269,15 +271,15 @@ final class GaussianRenderingTest: BaseRenderSetup { let packed = try packGaussianSphericalHarmonics(sphericalHarmonics, splatCount: 1) guard let buffer = renderInfo.device.makeBuffer( bytes: packed.coefficients, - length: packed.coefficients.count * MemoryLayout.stride, + length: packed.coefficients.count * MemoryLayout.stride, options: .storageModeShared ) else { XCTFail("Expected SH buffer allocation") return } - XCTAssertEqual(buffer.length, 9 * MemoryLayout.stride) - let pointer = buffer.contents().bindMemory(to: Float16.self, capacity: 9) + XCTAssertEqual(buffer.length, 9 * MemoryLayout.stride) + let pointer = buffer.contents().bindMemory(to: UInt8.self, capacity: 9) let roundTripped = (0 ..< 9).map { pointer[$0] } XCTAssertEqual(roundTripped, packed.coefficients) } @@ -299,16 +301,20 @@ final class GaussianRenderingTest: BaseRenderSetup { let packed = try packGaussianSphericalHarmonics(sphericalHarmonics, splatCount: 1) let baseColor = simd_float4(0.35, 0.5, 0.65, 1) let direction = simd_float4(0.25, -0.5, 0.75, 0) + // Dequantize the same way loadGaussianSHCoefficient does on the GPU, + // so the CPU and GPU sides evaluate the same quantized inputs and can + // be compared without any tolerance for the quantization step itself. + let dequantized = packed.coefficients.map { (Float($0) - 128) / 128 } let cpuResult = evaluateGaussianSphericalHarmonics( baseColor: simd_float3(baseColor.x, baseColor.y, baseColor.z), - higherOrderCoefficients: packed.coefficients.map(Float.init), + higherOrderCoefficients: dequantized, degree: 3, direction: simd_float3(direction.x, direction.y, direction.z) ) guard let coefficients = renderInfo.device.makeBuffer( bytes: packed.coefficients, - length: packed.coefficients.count * MemoryLayout.stride, + length: packed.coefficients.count * MemoryLayout.stride, options: .storageModeShared ), let output = renderInfo.device.makeBuffer( length: 2 * MemoryLayout.stride, @@ -371,11 +377,11 @@ final class GaussianRenderingTest: BaseRenderSetup { XCTAssertEqual(metadata.degree, 3) XCTAssertEqual(metadata.coefficientsPerChannel, 16) XCTAssertEqual(metadata.higherOrderCoefficientsPerSplat, 45) - XCTAssertEqual(coefficientBuffer.length, splatCount * 45 * MemoryLayout.stride) + XCTAssertEqual(coefficientBuffer.length, splatCount * 45 * MemoryLayout.stride) XCTAssertEqual(splatBuffer.length, splatCount * MemoryLayout.stride) let coefficients = coefficientBuffer.contents().bindMemory( - to: Float16.self, + to: UInt8.self, capacity: splatCount * 45 ) let sampledValues = [0, splatCount * 45 / 2, splatCount * 45 - 1].map { coefficients[$0] } diff --git a/Tests/UntoldEngineTests/PLYReaderTest.swift b/Tests/UntoldEngineTests/PLYReaderTest.swift index f4302068..5335e402 100644 --- a/Tests/UntoldEngineTests/PLYReaderTest.swift +++ b/Tests/UntoldEngineTests/PLYReaderTest.swift @@ -341,12 +341,13 @@ final class PLYReaderTest: XCTestCase { for splatIndex in sampleIndices { let sourceBase = splatIndex * 48 let packedBase = splatIndex * 45 - let higherOrder = packed.coefficients[packedBase ..< packedBase + 45].map(Float.init) + let higherOrder = packed.coefficients[packedBase ..< packedBase + 45].map { (Float($0) - 128) / 128 } for channel in 0 ..< 3 { for coefficient in 0 ..< 15 { + let sourceValue = sphericalHarmonics.coefficients[sourceBase + channel * 16 + coefficient + 1] XCTAssertEqual( - higherOrder[channel * 15 + coefficient], - Float(Float16(sphericalHarmonics.coefficients[sourceBase + channel * 16 + coefficient + 1])) + packed.coefficients[packedBase + channel * 15 + coefficient], + quantizeGaussianSHCoefficient(sourceValue) ) } } @@ -365,7 +366,7 @@ final class PLYReaderTest: XCTestCase { print("Gaussian diagnostic: splats=\(asset.splats.count), degree=\(sphericalHarmonics.degree), " + "sourceCoefficients=\(sphericalHarmonics.coefficients.count), " - + "packedCoefficients=\(packed.coefficients.count), packedBytes=\(packed.coefficients.count * MemoryLayout.stride)") + + "packedCoefficients=\(packed.coefficients.count), packedBytes=\(packed.coefficients.count * MemoryLayout.stride)") } func test_readGaussianAsset_binaryAndASCIIHaveIdenticalSphericalHarmonics() throws { @@ -428,10 +429,12 @@ final class PLYReaderTest: XCTestCase { } func test_packGaussianSphericalHarmonics_preservesHigherOrderChannelMajorLayout() throws { - XCTAssertEqual(MemoryLayout.stride, 2) + XCTAssertEqual(MemoryLayout.stride, 1) - let first = (0 ..< 12).map { Float($0) } - let second = (100 ..< 112).map { Float($0) } + // Coefficient 0 of each channel (the DC term, dropped by packing) is + // set to an out-of-range value so an off-by-one would be obvious. + let first: [Float] = [999, 0.1, 0.2, 0.3, 999, 0.4, 0.5, 0.6, 999, 0.7, 0.8, 0.9] + let second: [Float] = [999, -0.1, -0.2, -0.3, 999, -0.4, -0.5, -0.6, 999, -0.7, -0.8, -0.9] let sphericalHarmonics = GaussianSphericalHarmonics( degree: 1, coefficientsPerChannel: 4, @@ -440,9 +443,9 @@ final class PLYReaderTest: XCTestCase { let packed = try packGaussianSphericalHarmonics(sphericalHarmonics, splatCount: 2) let expected = [ - 1, 2, 3, 5, 6, 7, 9, 10, 11, - 101, 102, 103, 105, 106, 107, 109, 110, 111, - ].map(Float16.init) + 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, + -0.1, -0.2, -0.3, -0.4, -0.5, -0.6, -0.7, -0.8, -0.9, + ].map(quantizeGaussianSHCoefficient) XCTAssertEqual(packed.coefficients, expected) XCTAssertEqual(packed.metadata.degree, 1) @@ -465,7 +468,7 @@ final class PLYReaderTest: XCTestCase { XCTAssertEqual(packed.metadata.higherOrderCoefficientsPerSplat, 0) } - func test_packGaussianSphericalHarmonics_rejectsInvalidCountAndFloat16Overflow() { + func test_packGaussianSphericalHarmonics_rejectsInvalidCountAndNonFiniteCoefficients() { let invalidCount = GaussianSphericalHarmonics( degree: 1, coefficientsPerChannel: 4, @@ -473,14 +476,26 @@ final class PLYReaderTest: XCTestCase { ) XCTAssertThrowsError(try packGaussianSphericalHarmonics(invalidCount, splatCount: 1)) - var overflowCoefficients = [Float](repeating: 0, count: 12) - overflowCoefficients[1] = Float.greatestFiniteMagnitude - let overflow = GaussianSphericalHarmonics( + // Out-of-[-1,1] magnitudes are clamped, not rejected — only a + // non-finite coefficient (NaN) can't be meaningfully quantized. + var outOfRangeCoefficients = [Float](repeating: 0, count: 12) + outOfRangeCoefficients[1] = Float.greatestFiniteMagnitude + let outOfRange = GaussianSphericalHarmonics( degree: 1, coefficientsPerChannel: 4, - coefficients: overflowCoefficients + coefficients: outOfRangeCoefficients ) - XCTAssertThrowsError(try packGaussianSphericalHarmonics(overflow, splatCount: 1)) + let packed = try? packGaussianSphericalHarmonics(outOfRange, splatCount: 1) + XCTAssertEqual(packed?.coefficients.first, 255, "Extreme positive values should clamp to the top of the byte range") + + var nanCoefficients = [Float](repeating: 0, count: 12) + nanCoefficients[1] = .nan + let nan = GaussianSphericalHarmonics( + degree: 1, + coefficientsPerChannel: 4, + coefficients: nanCoefficients + ) + XCTAssertThrowsError(try packGaussianSphericalHarmonics(nan, splatCount: 1)) } // MARK: - Test Error Handling From a0eb369e0519ff26dbaa4a2aa2608b1ebeb3b9e7 Mon Sep 17 00:00:00 2001 From: Untold Engine Date: Thu, 20 Aug 2026 11:26:59 -0700 Subject: [PATCH 03/11] [Feature] Progressive loading for splats --- Sources/UntoldEngine/ECS/Components.swift | 47 ++ .../UntoldEngine/Renderer/UntoldEngine.swift | 1 + .../Systems/GaussianLODSystem.swift | 146 ++++++ ...tryStreamingSystem+GaussianStreaming.swift | 190 ++++++++ .../Systems/RegistrationSystem.swift | 431 ++++++++++++++++-- .../GaussianProgressiveLODTest.swift | 129 ++++++ .../UntoldEngineCLI/ExportCommand.swift | 42 +- 7 files changed, 942 insertions(+), 44 deletions(-) create mode 100644 Sources/UntoldEngine/Systems/GaussianLODSystem.swift create mode 100644 Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift diff --git a/Sources/UntoldEngine/ECS/Components.swift b/Sources/UntoldEngine/ECS/Components.swift index a35deaff..eb9e9b4e 100644 --- a/Sources/UntoldEngine/ECS/Components.swift +++ b/Sources/UntoldEngine/ECS/Components.swift @@ -474,6 +474,53 @@ public class LODComponent: Component { } } +// MARK: - Progressive Gaussian LOD Component + +/// One pre-baked quality tier for a progressive Gaussian splat asset. +/// LOD0 is expected to be the full-resolution tier; later indices are progressively coarser. +public struct GaussianLODLevel { + public var buffers: GaussianComponent? + public var maxDistance: Float + public var url: URL? + public var residencyState: LODResidencyState = .unknown + var loadTask: Task? + + public init(maxDistance: Float, url: URL? = nil) { + self.maxDistance = maxDistance + self.url = url + } +} + +/// Runtime state for a progressively streamed Gaussian splat prop. +/// The renderer still consumes a normal `GaussianComponent`; this component owns the +/// per-tier residency and `GaussianLODSystem` copies the selected tier onto the live +/// `GaussianComponent`. +public class GaussianLODComponent: Component { + public var lodLevels: [GaussianLODLevel] = [] + public var currentLOD: Int = -1 + public var desiredLOD: Int = 0 + public var forcedLOD: Int? + public var isUsingFallback: Bool = false + + public required init() {} + + public func isLODResident(_ lodIndex: Int) -> Bool { + guard lodIndex >= 0, lodIndex < lodLevels.count else { return false } + let level = lodLevels[lodIndex] + return level.residencyState == .resident && level.buffers != nil + } + + public func findFallbackLOD(from desiredIndex: Int) -> Int? { + for i in (desiredIndex + 1) ..< lodLevels.count { + if isLODResident(i) { return i } + } + for i in (0 ..< desiredIndex).reversed() { + if isLODResident(i) { return i } + } + return nil + } +} + // MARK: Tile LOD Tag Component /// Lightweight tag placed on the render-descendant mesh entities spawned by diff --git a/Sources/UntoldEngine/Renderer/UntoldEngine.swift b/Sources/UntoldEngine/Renderer/UntoldEngine.swift index 3a93d12e..6d810337 100644 --- a/Sources/UntoldEngine/Renderer/UntoldEngine.swift +++ b/Sources/UntoldEngine/Renderer/UntoldEngine.swift @@ -594,6 +594,7 @@ public class UntoldRenderer: NSObject, MTKViewDelegate { // 3. LOD selection (decides which representation is active, checks residency) LODSystem.shared.update(deltaTime: fixedStep) + GaussianLODSystem.shared.update(deltaTime: fixedStep) // 4. Flush events (residency and LOD change events are processed) SystemEventBus.shared.flushEvents() diff --git a/Sources/UntoldEngine/Systems/GaussianLODSystem.swift b/Sources/UntoldEngine/Systems/GaussianLODSystem.swift new file mode 100644 index 00000000..5a532efa --- /dev/null +++ b/Sources/UntoldEngine/Systems/GaussianLODSystem.swift @@ -0,0 +1,146 @@ +// +// GaussianLODSystem.swift +// UntoldEngine +// +// Copyright (C) Untold Engine Studios +// +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +import Foundation +import simd + +/// Distance-driven tier selection for progressively streamed Gaussian splats. +public class GaussianLODSystem: @unchecked Sendable { + public static let shared = GaussianLODSystem() + private init() {} + + private var frameCounter = 0 + private var lastCameraPosition: simd_float3 = .zero + private var hasRunOnce = false + + public func reset() { + frameCounter = 0 + lastCameraPosition = .zero + hasRunOnce = false + } + + public func update(deltaTime _: Float) { + frameCounter &+= 1 + + guard let camera = CameraSystem.shared.activeCamera, + let cameraComponent = scene.get(component: CameraComponent.self, for: camera) + else { return } + + let cameraPosition = SceneRootTransform.shared.effectiveCameraPosition(cameraComponent.localPosition) + guard lodShouldRunThisFrame( + frameCounter: frameCounter, + hasRunOnce: hasRunOnce, + interval: LODConfig.shared.lodUpdateFrameInterval, + cameraPosition: cameraPosition, + lastCameraPosition: lastCameraPosition, + displacementThreshold: LODConfig.shared.minimumCameraDisplacementForLODUpdate + ) else { return } + + hasRunOnce = true + lastCameraPosition = cameraPosition + + let lodId = getComponentId(for: GaussianLODComponent.self) + let transformId = getComponentId(for: WorldTransformComponent.self) + let entities = queryEntitiesWithComponentIds([lodId, transformId], in: scene) + + for entityId in entities { + updateEntityLOD(entityId: entityId, cameraPosition: cameraPosition) + } + } + + private func updateEntityLOD(entityId: EntityID, cameraPosition: simd_float3) { + guard let lodComponent = scene.get(component: GaussianLODComponent.self, for: entityId), + !lodComponent.lodLevels.isEmpty + else { return } + + let desiredLOD = selectDesiredLOD( + distance: calculateDistance(entityId: entityId, cameraPosition: cameraPosition), + lodComponent: lodComponent + ) + lodComponent.desiredLOD = desiredLOD + + if !lodComponent.isLODResident(desiredLOD) { + GeometryStreamingSystem.shared.requestGaussianLODLevelLoad(entityId: entityId, lodIndex: desiredLOD) + } + + let actualLOD: Int + if lodComponent.isLODResident(desiredLOD) { + lodComponent.isUsingFallback = false + actualLOD = desiredLOD + } else if let fallback = lodComponent.findFallbackLOD(from: desiredLOD) { + lodComponent.isUsingFallback = true + actualLOD = fallback + } else { + return + } + + applyLOD(entityId: entityId, newLOD: actualLOD) + } + + private func calculateDistance(entityId: EntityID, cameraPosition: simd_float3) -> Float { + guard let worldTransform = scene.get(component: WorldTransformComponent.self, for: entityId), + let localTransform = scene.get(component: LocalTransformComponent.self, for: entityId) + else { return 0 } + + let localCenter = (localTransform.boundingBox.min + localTransform.boundingBox.max) * 0.5 + let worldCenter = worldTransform.space * simd_float4(localCenter, 1) + return simd_distance(cameraPosition, simd_float3(worldCenter.x, worldCenter.y, worldCenter.z)) + } + + private func selectDesiredLOD(distance: Float, lodComponent: GaussianLODComponent) -> Int { + if let forced = lodComponent.forcedLOD, forced >= 0 { + return min(forced, lodComponent.lodLevels.count - 1) + } + + let adjustedDistance = distance * LODConfig.shared.lodBias + for (index, level) in lodComponent.lodLevels.enumerated() { + guard level.maxDistance > 0 else { continue } + if adjustedDistance <= level.maxDistance { + return index + } + } + return lodComponent.lodLevels.count - 1 + } + + private func applyLOD(entityId: EntityID, newLOD: Int) { + guard let lodComponent = scene.get(component: GaussianLODComponent.self, for: entityId), + newLOD >= 0, + newLOD < lodComponent.lodLevels.count, + let source = lodComponent.lodLevels[newLOD].buffers + else { return } + + if newLOD == lodComponent.currentLOD, scene.get(component: GaussianComponent.self, for: entityId) != nil { + return + } + + withWorldMutationGate { + guard let destination = scene.assign(to: entityId, component: GaussianComponent.self) else { + return + } + + copyGaussianComponentBuffers(from: source, to: destination) + lodComponent.currentLOD = newLOD + SystemIntegrationMonitor.shared.recordLODSwitch() + } + } +} + +func copyGaussianComponentBuffers(from source: GaussianComponent, to destination: GaussianComponent) { + destination.splatCount = source.splatCount + destination.visibleSplatCountForRendering = source.splatCount + destination.gaussianSortedIndices = source.gaussianSortedIndices + destination.gaussianVisibleIndices = source.gaussianVisibleIndices + destination.gaussianVisibleCount = source.gaussianVisibleCount + destination.encodedSplatData = source.encodedSplatData + destination.gaussianPrecomputedData = source.gaussianPrecomputedData + destination.sphericalHarmonicsData = source.sphericalHarmonicsData + destination.sphericalHarmonicsMetadata = source.sphericalHarmonicsMetadata + destination.spaceUniform = source.spaceUniform +} diff --git a/Sources/UntoldEngine/Systems/GeometryStreamingSystem+GaussianStreaming.swift b/Sources/UntoldEngine/Systems/GeometryStreamingSystem+GaussianStreaming.swift index f8ecd50d..a79d408c 100644 --- a/Sources/UntoldEngine/Systems/GeometryStreamingSystem+GaussianStreaming.swift +++ b/Sources/UntoldEngine/Systems/GeometryStreamingSystem+GaussianStreaming.swift @@ -27,6 +27,11 @@ extension GeometryStreamingSystem { /// incrementing it here would inflate the numerator past a denominator it never grew, /// corrupting the tile's `visualState` completion fraction. func loadGaussianStreamingEntity(entityId: EntityID, streaming: StreamingComponent, isNearBand: Bool) { + if scene.get(component: GaussianLODComponent.self, for: entityId) != nil { + loadGaussianProgressiveStreamingEntity(entityId: entityId, streaming: streaming, isNearBand: isNearBand) + return + } + let filename = streaming.assetFilename let ext = streaming.assetExtension @@ -82,11 +87,145 @@ extension GeometryStreamingSystem { streaming.loadTask = task } + /// Loads only the coarsest tier for a progressive Gaussian prop. Finer tiers are pulled + /// later by `GaussianLODSystem` as the camera moves close enough to need them. + func loadGaussianProgressiveStreamingEntity(entityId: EntityID, streaming: StreamingComponent, isNearBand: Bool) { + let task = Task { + let success = await loadInitialGaussianProgressiveTier(entityId: entityId) + + withWorldMutationGate { + guard scene.exists(entityId) else { + releaseActiveLoad(entityId: entityId) + if isNearBand { releaseNearBandLoad(entityId: entityId) } + return + } + guard let s = scene.get(component: StreamingComponent.self, for: entityId), + s.state == .loading + else { + releaseActiveLoad(entityId: entityId) + if isNearBand { releaseNearBandLoad(entityId: entityId) } + return + } + + if success { + s.state = .loaded + s.lastVisibleFrame = currentFrame + SystemEventBus.shared.queueResidencyChange( + AssetResidencyChangedEvent( + entityId: entityId, + assetURL: URL(fileURLWithPath: ""), + meshName: s.assetFilename, + isResident: true + ) + ) + markLoadedStreamingEntity(entityId) + SystemIntegrationMonitor.shared.recordStreamingLoad() + } else { + s.state = .unloaded + handleError(.meshStreamingFailed, entityId) + } + + releaseActiveLoad(entityId: entityId) + if isNearBand { releaseNearBandLoad(entityId: entityId) } + } + } + + streaming.loadTask = task + } + + func loadInitialGaussianProgressiveTier(entityId: EntityID) async -> Bool { + let coarsestIndex: Int? = withWorldMutationGate { + guard let lod = scene.get(component: GaussianLODComponent.self, for: entityId), + !lod.lodLevels.isEmpty + else { return nil } + return lod.lodLevels.count - 1 + } + guard let coarsestIndex else { return false } + return await loadGaussianLODLevel(entityId: entityId, lodIndex: coarsestIndex, makeCurrent: true) + } + + public func requestGaussianLODLevelLoad(entityId: EntityID, lodIndex: Int) { + withWorldMutationGate { + guard scene.exists(entityId), + let lod = scene.get(component: GaussianLODComponent.self, for: entityId), + lodIndex >= 0, + lodIndex < lod.lodLevels.count + else { return } + + guard lod.lodLevels[lodIndex].residencyState != .resident, + lod.lodLevels[lodIndex].residencyState != .loading + else { return } + + lod.lodLevels[lodIndex].residencyState = .loading + let task = Task { [weak self] in + _ = await self?.loadGaussianLODLevel(entityId: entityId, lodIndex: lodIndex, makeCurrent: false) + } + lod.lodLevels[lodIndex].loadTask = task + } + } + + @discardableResult + func loadGaussianLODLevel(entityId: EntityID, lodIndex: Int, makeCurrent: Bool) async -> Bool { + let url: URL? = withWorldMutationGate { + guard scene.exists(entityId), + let lod = scene.get(component: GaussianLODComponent.self, for: entityId), + lodIndex >= 0, + lodIndex < lod.lodLevels.count + else { return nil } + return lod.lodLevels[lodIndex].url + } + guard let url, let built = buildGaussianComponentFromUntoldGS(url: url) else { + withWorldMutationGate { + if let lod = scene.get(component: GaussianLODComponent.self, for: entityId), + lodIndex >= 0, + lodIndex < lod.lodLevels.count + { + lod.lodLevels[lodIndex].residencyState = .notResident + lod.lodLevels[lodIndex].loadTask = nil + } + } + return false + } + + withWorldMutationGate { + guard scene.exists(entityId), + let lod = scene.get(component: GaussianLODComponent.self, for: entityId), + lodIndex >= 0, + lodIndex < lod.lodLevels.count + else { return } + + lod.lodLevels[lodIndex].buffers = built.component + lod.lodLevels[lodIndex].residencyState = .resident + lod.lodLevels[lodIndex].loadTask = nil + + if makeCurrent { + if let live = scene.assign(to: entityId, component: GaussianComponent.self) { + copyGaussianComponentBuffers(from: built.component, to: live) + lod.currentLOD = lodIndex + } + } + + var totalBytes = 0 + for level in lod.lodLevels { + guard let buffers = level.buffers else { continue } + totalBytes += gaussianComponentEstimatedBytes(buffers) + } + MemoryBudgetManager.shared.registerMesh(entityId: entityId, meshSizeBytes: totalBytes) + } + + return true + } + /// Tears down a streamed Gaussian-splat entity's GPU resources and removes it from the /// shared memory budget. Mirrors `unloadMesh` (`GeometryStreamingSystem+MeshStreaming.swift`) /// but skips the mesh-only bits (RenderComponent, LODComponent, MeshResourceManager, /// BatchingSystem static-batch retirement) that don't apply to splats. func unloadGaussian(entityId: EntityID) { + if scene.get(component: GaussianLODComponent.self, for: entityId) != nil { + unloadGaussianProgressive(entityId: entityId) + return + } + guard let streaming = scene.get(component: StreamingComponent.self, for: entityId), streaming.state == .loaded else { return } @@ -123,4 +262,55 @@ extension GeometryStreamingSystem { let unloadMs = (CFAbsoluteTimeGetCurrent() - unloadStart) * 1000.0 updateLastUnloadDuration(unloadMs) } + + func unloadGaussianProgressive(entityId: EntityID) { + guard let streaming = scene.get(component: StreamingComponent.self, for: entityId), + streaming.state == .loaded + else { return } + + firstRangeTimestamps.removeValue(forKey: entityId) + + withWorldMutationGate { + streaming.state = .unloading + streaming.loadTask?.cancel() + streaming.loadTask = nil + + if let lod = scene.get(component: GaussianLODComponent.self, for: entityId) { + for index in lod.lodLevels.indices { + lod.lodLevels[index].loadTask?.cancel() + lod.lodLevels[index].loadTask = nil + lod.lodLevels[index].buffers = nil + lod.lodLevels[index].residencyState = .notResident + } + lod.currentLOD = -1 + lod.desiredLOD = max(0, lod.lodLevels.count - 1) + } + + removeEntityGaussian(entityId: entityId) + MemoryBudgetManager.shared.unregisterMesh(entityId: entityId) + unmarkLoadedStreamingEntity(entityId) + streaming.state = .unloaded + SystemEventBus.shared.queueResidencyChange( + AssetResidencyChangedEvent( + entityId: entityId, + assetURL: URL(fileURLWithPath: ""), + meshName: streaming.assetFilename, + isResident: false + ) + ) + SystemIntegrationMonitor.shared.recordStreamingUnload() + } + } +} + +private func gaussianComponentEstimatedBytes(_ component: GaussianComponent) -> Int { + var total = 0 + total += component.encodedSplatData?.length ?? 0 + total += component.sphericalHarmonicsData?.length ?? 0 + for buffer in component.gaussianSortedIndices { total += buffer?.length ?? 0 } + for buffer in component.gaussianVisibleIndices { total += buffer?.length ?? 0 } + for buffer in component.gaussianVisibleCount { total += buffer?.length ?? 0 } + for buffer in component.gaussianPrecomputedData { total += buffer?.length ?? 0 } + for buffer in component.spaceUniform { total += buffer?.length ?? 0 } + return total } diff --git a/Sources/UntoldEngine/Systems/RegistrationSystem.swift b/Sources/UntoldEngine/Systems/RegistrationSystem.swift index 47d2cce8..cdb5237c 100644 --- a/Sources/UntoldEngine/Systems/RegistrationSystem.swift +++ b/Sources/UntoldEngine/Systems/RegistrationSystem.swift @@ -174,6 +174,10 @@ private func registerComponentCleanupHandlers() { removeEntityLOD(entityId: entityId) } + ComponentRegistry.register(componentType: GaussianLODComponent.self, handlerId: "gaussianLOD", priority: 30) { entityId in + removeEntityGaussianLOD(entityId: entityId) + } + ComponentRegistry.register(componentType: GaussianComponent.self, handlerId: "gaussian", priority: 30) { entityId in removeEntityGaussian(entityId: entityId) } @@ -3198,7 +3202,7 @@ public func loadRawMesh( /// Built Metal resources for a parsed Gaussian splat asset, ready to attach to an entity. /// Shared by `setEntityGaussian` (synchronous) and `setEntityGaussianAsync` (off-thread) so /// there is a single implementation of the PLY-parse/buffer-build/SH-pack pipeline. -private struct GaussianLoadResult { +struct GaussianLoadResult { let splatCount: UInt // One buffer per in-flight frame slot (see the comment on GaussianComponent's matching // fields) — written fresh every frame by the cull/depth-key/radix-sort passes, so a @@ -3218,36 +3222,153 @@ private struct GaussianLoadResult { let estimatedGPUBytes: Int } -/// Reads a `.ply` Gaussian splat asset from disk and builds its GPU buffers. -/// Returns `nil` on any failure, calling `handleError` internally — callers just guard-return. -private func buildGaussianLoadResult(filename: String, withExtension: String) -> GaussianLoadResult? { - guard let url = LoadingSystem.shared.resourceURL(forResource: filename, withExtension: withExtension, subResource: nil) else { - handleError(.filenameNotFound, filename) - return nil +public enum UntoldGSError: Error, CustomStringConvertible { + case badMagic + case unsupportedVersion(UInt32) + case truncated + case sizeMismatch(String) + + public var description: String { + switch self { + case .badMagic: "Not an Untold Gaussian splat file" + case let .unsupportedVersion(version): "Unsupported Untold Gaussian splat version \(version)" + case .truncated: "Untold Gaussian splat file is truncated" + case let .sizeMismatch(reason): "Untold Gaussian splat size mismatch: \(reason)" + } } +} - // Attempt to read Gaussian splats, handling errors internally - let asset: GaussianSplatAsset - do { - asset = try PLYReader.readGaussianAsset(from: url) - } catch { - handleError(.assetDataMissing, "Failed to read Gaussian splats from \(filename): \(error.localizedDescription)") - return nil +public struct UntoldGSAsset { + public let encodedSplats: [EncodedGaussianSplat] + public let shCoefficients: [UInt8] + public let shMetadata: GaussianSHMetadata? + + public var splatCount: Int { encodedSplats.count } +} + +public enum UntoldGSFormat { + private static let magic: UInt32 = 0x5347_5455 // "UTGS" + private static let version: UInt32 = 1 + private static let headerByteCount = 48 + + public static func write( + encodedSplats: [EncodedGaussianSplat], + sphericalHarmonics: PackedGaussianSphericalHarmonics?, + to url: URL + ) throws { + var data = Data() + appendUInt32(magic, to: &data) + appendUInt32(version, to: &data) + appendUInt64(UInt64(encodedSplats.count), to: &data) + appendUInt32(sphericalHarmonics?.metadata.degree ?? 0, to: &data) + appendUInt32(sphericalHarmonics?.metadata.coefficientsPerChannel ?? 0, to: &data) + appendUInt32(sphericalHarmonics?.metadata.higherOrderCoefficientsPerSplat ?? 0, to: &data) + appendUInt32(0, to: &data) + appendUInt64(UInt64(encodedSplats.count * MemoryLayout.stride), to: &data) + appendUInt64(UInt64(sphericalHarmonics?.coefficients.count ?? 0), to: &data) + + encodedSplats.withUnsafeBytes { data.append(contentsOf: $0) } + if let sphericalHarmonics { + data.append(contentsOf: sphericalHarmonics.coefficients) + } + + try FileManager.default.createDirectory( + at: url.deletingLastPathComponent(), + withIntermediateDirectories: true + ) + try data.write(to: url, options: .atomic) } - let splats = asset.splats - // Check if we exceed the buffer capacity - guard splats.count <= Int(maxNumOfGaussians) else { - handleError(.bufferAllocationFailed, "Too many Gaussian splats: \(splats.count) exceeds maximum \(maxNumOfGaussians)") + public static func read(from url: URL) throws -> UntoldGSAsset { + let data = try Data(contentsOf: url) + guard data.count >= headerByteCount else { throw UntoldGSError.truncated } + + let magicValue = readUInt32(data, at: 0) + guard magicValue == magic else { throw UntoldGSError.badMagic } + let versionValue = readUInt32(data, at: 4) + guard versionValue == version else { throw UntoldGSError.unsupportedVersion(versionValue) } + + let splatCount = Int(readUInt64(data, at: 8)) + let shDegree = readUInt32(data, at: 16) + let shCoefficientsPerChannel = readUInt32(data, at: 20) + let shHigherOrderPerSplat = readUInt32(data, at: 24) + let encodedByteCount = Int(readUInt64(data, at: 32)) + let shByteCount = Int(readUInt64(data, at: 40)) + + let expectedEncodedBytes = splatCount * MemoryLayout.stride + guard encodedByteCount == expectedEncodedBytes else { + throw UntoldGSError.sizeMismatch("encoded splat bytes \(encodedByteCount), expected \(expectedEncodedBytes)") + } + guard data.count == headerByteCount + encodedByteCount + shByteCount else { + throw UntoldGSError.sizeMismatch("file has \(data.count) bytes, expected \(headerByteCount + encodedByteCount + shByteCount)") + } + + let encodedStart = headerByteCount + let encodedEnd = encodedStart + encodedByteCount + let encodedSplats = data[encodedStart ..< encodedEnd].withUnsafeBytes { rawBuffer in + Array(rawBuffer.bindMemory(to: EncodedGaussianSplat.self)) + } + + let shStart = encodedEnd + let shCoefficients = shByteCount > 0 ? Array(data[shStart ..< shStart + shByteCount]) : [] + let shMetadata: GaussianSHMetadata? = shByteCount > 0 + ? GaussianSHMetadata( + degree: shDegree, + coefficientsPerChannel: shCoefficientsPerChannel, + higherOrderCoefficientsPerSplat: shHigherOrderPerSplat, + _pad0: 0 + ) + : nil + + return UntoldGSAsset( + encodedSplats: encodedSplats, + shCoefficients: shCoefficients, + shMetadata: shMetadata + ) + } + + private static func appendUInt32(_ value: UInt32, to data: inout Data) { + var littleEndian = value.littleEndian + withUnsafeBytes(of: &littleEndian) { data.append(contentsOf: $0) } + } + + private static func appendUInt64(_ value: UInt64, to data: inout Data) { + var littleEndian = value.littleEndian + withUnsafeBytes(of: &littleEndian) { data.append(contentsOf: $0) } + } + + private static func readUInt32(_ data: Data, at offset: Int) -> UInt32 { + data.withUnsafeBytes { rawBuffer in + UInt32(littleEndian: rawBuffer.loadUnaligned(fromByteOffset: offset, as: UInt32.self)) + } + } + + private static func readUInt64(_ data: Data, at offset: Int) -> UInt64 { + data.withUnsafeBytes { rawBuffer in + UInt64(littleEndian: rawBuffer.loadUnaligned(fromByteOffset: offset, as: UInt64.self)) + } + } +} + +/// Builds GPU buffers from already-encoded Gaussian splat data. +/// Returns `nil` on any failure, calling `handleError` internally — callers just guard-return. +func buildGaussianLoadResult( + encodedSplats: [EncodedGaussianSplat], + packedSphericalHarmonics: PackedGaussianSphericalHarmonics?, + sourceDescription: String +) -> GaussianLoadResult? { + guard encodedSplats.count <= Int(maxNumOfGaussians) else { + handleError(.bufferAllocationFailed, "Too many Gaussian splats: \(encodedSplats.count) exceeds maximum \(maxNumOfGaussians)") return nil } - let splatCount = UInt(splats.count) + let splatCount = UInt(encodedSplats.count) guard splatCount > 0 else { - handleError(.assetDataMissing, "Gaussian splat file contains no vertices: \(filename)") + handleError(.assetDataMissing, "Gaussian splat file contains no vertices: \(sourceDescription)") return nil } + var gaussianSortedIndices: [MTLBuffer] = [] var gaussianVisibleIndices: [MTLBuffer] = [] var gaussianVisibleCount: [MTLBuffer] = [] @@ -3286,13 +3407,8 @@ private func buildGaussianLoadResult(filename: String, withExtension: String) -> return nil } - let encodedPointer = encodedSplatBuffer.contents().bindMemory( - to: EncodedGaussianSplat.self, - capacity: splats.count - ) - - for (index, splat) in splats.enumerated() { - encodedPointer[index] = encodeGaussianSplatForTBDR(splat) + encodedSplats.withUnsafeBytes { bytes in + encodedSplatBuffer.contents().copyMemory(from: bytes.baseAddress!, byteCount: bytes.count) } var gaussianPrecomputedData: [MTLBuffer] = [] @@ -3307,16 +3423,6 @@ private func buildGaussianLoadResult(filename: String, withExtension: String) -> gaussianPrecomputedData.append(precomputedSlot) } - let packedSphericalHarmonics: PackedGaussianSphericalHarmonics? - do { - packedSphericalHarmonics = try asset.sphericalHarmonics.map { - try packGaussianSphericalHarmonics($0, splatCount: splats.count) - } - } catch { - handleError(.assetDataMissing, "Failed to pack spherical harmonics from \(filename): \(error.localizedDescription)") - return nil - } - let sphericalHarmonicsBuffer: MTLBuffer? if let packedSphericalHarmonics, !packedSphericalHarmonics.coefficients.isEmpty { sphericalHarmonicsBuffer = renderInfo.device.makeBuffer( @@ -3371,6 +3477,61 @@ private func buildGaussianLoadResult(filename: String, withExtension: String) -> ) } +/// Reads a `.ply` Gaussian splat asset from disk and builds its GPU buffers. +/// Returns `nil` on any failure, calling `handleError` internally — callers just guard-return. +private func buildGaussianLoadResult(filename: String, withExtension: String) -> GaussianLoadResult? { + guard let url = LoadingSystem.shared.resourceURL(forResource: filename, withExtension: withExtension, subResource: nil) else { + handleError(.filenameNotFound, filename) + return nil + } + + do { + return try buildGaussianLoadResultFromPLY(url: url, sourceDescription: filename) + } catch { + handleError(.assetDataMissing, "Failed to read Gaussian splats from \(filename): \(error.localizedDescription)") + return nil + } +} + +func buildGaussianLoadResultFromPLY(url: URL, sourceDescription: String) throws -> GaussianLoadResult? { + let asset = try PLYReader.readGaussianAsset(from: url) + let encodedSplats = asset.splats.map(encodeGaussianSplatForTBDR) + let packedSphericalHarmonics = try asset.sphericalHarmonics.map { + try packGaussianSphericalHarmonics($0, splatCount: asset.splats.count) + } + return buildGaussianLoadResult( + encodedSplats: encodedSplats, + packedSphericalHarmonics: packedSphericalHarmonics, + sourceDescription: sourceDescription + ) +} + +func buildGaussianComponentFromUntoldGS(url: URL) -> (component: GaussianComponent, estimatedGPUBytes: Int)? { + let asset: UntoldGSAsset + do { + asset = try UntoldGSFormat.read(from: url) + } catch { + handleError(.assetDataMissing, "Failed to read .untoldgs Gaussian tier from \(url.lastPathComponent): \(error)") + return nil + } + + let packedSphericalHarmonics = asset.shMetadata.map { + PackedGaussianSphericalHarmonics(coefficients: asset.shCoefficients, metadata: $0) + } + + guard let result = buildGaussianLoadResult( + encodedSplats: asset.encodedSplats, + packedSphericalHarmonics: packedSphericalHarmonics, + sourceDescription: url.lastPathComponent + ) else { + return nil + } + + let component = GaussianComponent() + copyGaussianLoadResult(result, to: component) + return (component, result.estimatedGPUBytes) +} + /// Registers `GaussianComponent` on `entityId` from a built `GaussianLoadResult` and records /// its GPU footprint with `MemoryBudgetManager`. Must be called from within a world-mutation /// gate (`withWorldMutationGate`). @@ -3382,6 +3543,11 @@ private func applyGaussianLoadResult(_ result: GaussianLoadResult, to entityId: return } + copyGaussianLoadResult(result, to: gaussianComponent) + MemoryBudgetManager.shared.registerMesh(entityId: entityId, meshSizeBytes: result.estimatedGPUBytes) +} + +func copyGaussianLoadResult(_ result: GaussianLoadResult, to gaussianComponent: GaussianComponent) { gaussianComponent.splatCount = result.splatCount gaussianComponent.visibleSplatCountForRendering = result.splatCount gaussianComponent.gaussianSortedIndices = result.gaussianSortedIndices.map { $0 as MTLBuffer? } @@ -3392,8 +3558,6 @@ private func applyGaussianLoadResult(_ result: GaussianLoadResult, to entityId: gaussianComponent.sphericalHarmonicsData = result.sphericalHarmonicsBuffer gaussianComponent.sphericalHarmonicsMetadata = result.sphericalHarmonicsMetadata gaussianComponent.spaceUniform = result.spaceUniform - - MemoryBudgetManager.shared.registerMesh(entityId: entityId, meshSizeBytes: result.estimatedGPUBytes) } public func setEntityGaussian(entityId: EntityID, filename: String, withExtension: String) { @@ -3487,9 +3651,179 @@ public func setEntityGaussianStreamable( } } -struct PackedGaussianSphericalHarmonics { - let coefficients: [UInt8] - let metadata: GaussianSHMetadata +/// Registers `entityId` as a distance-streamed progressive Gaussian splat prop. +/// +/// The expected files are `_lod0.untoldgs`, `_lod1.untoldgs`, +/// etc. LOD0 is full detail; the highest index is the coarsest tier and is loaded first +/// when the prop enters streaming range. Finer tiers are requested later by +/// `GaussianLODSystem` based on camera distance. +public func setEntityGaussianProgressiveStreamable( + entityId: EntityID, + baseFilename: String, + withExtension ext: String = "untoldgs", + levelCount: Int, + maxDistances: [Float], + streamingRadius: Float = 100.0, + unloadRadius: Float = 150.0, + boundingBoxHalfExtent: simd_float3, + priority: Int = 0 +) { + guard levelCount > 0 else { + handleError(.assetDataMissing, "setEntityGaussianProgressiveStreamable: levelCount must be at least 1, got \(levelCount)") + return + } + guard maxDistances.count == levelCount else { + handleError(.assetDataMissing, "setEntityGaussianProgressiveStreamable: maxDistances must have \(levelCount) entries, got \(maxDistances.count)") + return + } + guard let local = scene.get(component: LocalTransformComponent.self, for: entityId) else { + handleError(.noLocalTransformComponent, entityId) + return + } + guard let tileEntity = findTileEntity(containing: local.position) else { + Logger.logWarning(message: "[RegistrationSystem] setEntityGaussianProgressiveStreamable: no tile found containing position \(local.position) for entity \(entityId) — entity left non-streaming.") + return + } + + var levels: [GaussianLODLevel] = [] + for index in 0 ..< levelCount { + let filename = levelCount == 1 ? baseFilename : "\(baseFilename)_lod\(index)" + guard let url = LoadingSystem.shared.resourceURL(forResource: filename, withExtension: ext, subResource: nil) else { + handleError(.filenameNotFound, filename) + return + } + levels.append(GaussianLODLevel(maxDistance: maxDistances[index], url: url)) + } + + local.boundingBox = (min: -boundingBoxHalfExtent, max: boundingBoxHalfExtent) + setParent(childId: entityId, parentId: tileEntity) + OctreeSystem.shared.registerEntity(entityId) + + guard let lodComponent = scene.assign(to: entityId, component: GaussianLODComponent.self) else { + return + } + lodComponent.lodLevels = levels + lodComponent.currentLOD = -1 + lodComponent.desiredLOD = levelCount - 1 + + if let streaming = scene.assign(to: entityId, component: StreamingComponent.self) { + streaming.assetKind = .gaussianSplat + streaming.assetFilename = baseFilename + streaming.assetExtension = ext + streaming.streamingRadius = streamingRadius + streaming.unloadRadius = unloadRadius + streaming.priority = priority + } +} + +private func gaussianImportanceScore(_ splat: GaussianSplat) -> Float { + let majorAxis = max(abs(splat.scale.x), max(abs(splat.scale.y), abs(splat.scale.z))) + return splat.opacity * majorAxis * majorAxis +} + +private func subsetSphericalHarmonics( + _ sh: GaussianSphericalHarmonics, + keeping indices: [Int] +) -> GaussianSphericalHarmonics { + let perSplat = sh.coefficientsPerSplat + var subset: [Float] = [] + subset.reserveCapacity(indices.count * perSplat) + for index in indices { + let base = index * perSplat + subset.append(contentsOf: sh.coefficients[base ..< base + perSplat]) + } + return GaussianSphericalHarmonics( + degree: sh.degree, + coefficientsPerChannel: sh.coefficientsPerChannel, + coefficients: subset + ) +} + +/// Bakes progressive `.untoldgs` Gaussian tiers from a source `.ply`. +/// +/// `lodFractions` are ordered finest to coarsest. With `[1.0, 0.5, 0.25]`, output files are +/// `_lod0.untoldgs`, `_lod1.untoldgs`, and `_lod2.untoldgs`. +public func bakeGaussianSplatProgressiveTiers( + plyURL: URL, + outputBaseURL: URL, + lodFractions: [Float] +) throws -> [URL] { + guard !lodFractions.isEmpty else { + throw UntoldGSError.sizeMismatch("lodFractions must contain at least one entry") + } + + if lodFractions == [1.0] { + let resultURL = outputBaseURL + let asset = try PLYReader.readGaussianAsset(from: plyURL) + let encodedSplats = asset.splats.map(encodeGaussianSplatForTBDR) + let packedSphericalHarmonics = try asset.sphericalHarmonics.map { + try packGaussianSphericalHarmonics($0, splatCount: asset.splats.count) + } + try UntoldGSFormat.write( + encodedSplats: encodedSplats, + sphericalHarmonics: packedSphericalHarmonics, + to: resultURL + ) + return [resultURL] + } + + let asset = try PLYReader.readGaussianAsset(from: plyURL) + guard !asset.splats.isEmpty else { + throw UntoldGSError.sizeMismatch("source .ply contains no splats") + } + + let rankedIndices = asset.splats.indices.sorted { lhs, rhs in + gaussianImportanceScore(asset.splats[lhs]) > gaussianImportanceScore(asset.splats[rhs]) + } + + let baseWithoutExtension = outputBaseURL.deletingPathExtension() + let baseName = baseWithoutExtension.lastPathComponent + let baseDirectory = baseWithoutExtension.deletingLastPathComponent() + + var outputURLs: [URL] = [] + for (tierIndex, fraction) in lodFractions.enumerated() { + let clampedFraction = min(max(fraction, 0), 1) + let keepCount = max(1, Int((Float(asset.splats.count) * clampedFraction).rounded(.up))) + let keptIndices = Array(rankedIndices.prefix(keepCount)) + let encodedSplats = keptIndices.map { encodeGaussianSplatForTBDR(asset.splats[$0]) } + let packedSphericalHarmonics = try asset.sphericalHarmonics.map { sh in + try packGaussianSphericalHarmonics( + subsetSphericalHarmonics(sh, keeping: keptIndices), + splatCount: keptIndices.count + ) + } + let tierURL = baseDirectory + .appendingPathComponent("\(baseName)_lod\(tierIndex)") + .appendingPathExtension("untoldgs") + try UntoldGSFormat.write( + encodedSplats: encodedSplats, + sphericalHarmonics: packedSphericalHarmonics, + to: tierURL + ) + outputURLs.append(tierURL) + } + return outputURLs +} + +public func bakeGaussianSplatProgressiveTiers( + plyURL: URL, + outputBaseURL: URL, + levelCount: Int +) throws -> [URL] { + guard levelCount > 0 else { + throw UntoldGSError.sizeMismatch("levelCount must be at least 1, got \(levelCount)") + } + let fractions = (0 ..< levelCount).map { Float(1.0) / Float(1 << $0) } + return try bakeGaussianSplatProgressiveTiers( + plyURL: plyURL, + outputBaseURL: outputBaseURL, + lodFractions: fractions + ) +} + +public struct PackedGaussianSphericalHarmonics { + public let coefficients: [UInt8] + public let metadata: GaussianSHMetadata } /// Quantizes a higher-order SH coefficient into the GPU's fixed [-1, 1] byte @@ -3708,6 +4042,19 @@ func removeEntityLOD(entityId: EntityID) { } } +func removeEntityGaussianLOD(entityId: EntityID) { + if let lodComponent = scene.get(component: GaussianLODComponent.self, for: entityId) { + for index in lodComponent.lodLevels.indices { + lodComponent.lodLevels[index].loadTask?.cancel() + lodComponent.lodLevels[index].loadTask = nil + lodComponent.lodLevels[index].buffers = nil + lodComponent.lodLevels[index].residencyState = .notResident + } + lodComponent.lodLevels.removeAll() + scene.remove(component: GaussianLODComponent.self, from: entityId) + } +} + func removeEntityGaussian(entityId: EntityID) { if let gaussianComponent = scene.get(component: GaussianComponent.self, for: entityId) { // Release Metal buffers diff --git a/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift b/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift new file mode 100644 index 00000000..0e67a7f3 --- /dev/null +++ b/Tests/UntoldEngineRenderTests/GaussianProgressiveLODTest.swift @@ -0,0 +1,129 @@ +// +// GaussianProgressiveLODTest.swift +// UntoldEngine +// +// Copyright (C) Untold Engine Studios +// +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +import simd +@testable import UntoldEngine +import XCTest + +@MainActor +final class GaussianProgressiveLODTest: BaseRenderSetup { + private var savedLODUpdateFrameInterval = 1 + + override func setUp() async throws { + try await super.setUp() + savedLODUpdateFrameInterval = LODConfig.shared.lodUpdateFrameInterval + LODConfig.shared.lodUpdateFrameInterval = 1 + GeometryStreamingSystem.shared.reset() + GeometryStreamingSystem.shared.enabled = true + GeometryStreamingSystem.shared.updateInterval = 0 + GeometryStreamingSystem.shared.enableFrustumGate = false + GeometryStreamingSystem.shared.maxQueryRadius = 500 + MemoryBudgetManager.shared.clear() + GaussianLODSystem.shared.reset() + } + + override func tearDown() async throws { + GeometryStreamingSystem.shared.reset() + GeometryStreamingSystem.shared.enabled = false + GeometryStreamingSystem.shared.updateInterval = 0.1 + GeometryStreamingSystem.shared.enableFrustumGate = true + LODConfig.shared.lodUpdateFrameInterval = savedLODUpdateFrameInterval + MemoryBudgetManager.shared.clear() + GaussianLODSystem.shared.reset() + try await super.tearDown() + } + + private func testPLYURL() throws -> URL { + try XCTUnwrap( + LoadingSystem.shared.resourceURL(forResource: "test_gaussians", withExtension: "ply", subResource: nil) + ) + } + + private func makeContainingTile() -> EntityID { + let tile = createEntity() + scene.assign(to: tile, component: TileComponent.self)?.state = .parsed + scene.get(component: LocalTransformComponent.self, for: tile)?.boundingBox = ( + min: simd_float3(-500, -500, -500), + max: simd_float3(500, 500, 500) + ) + OctreeSystem.shared.registerEntity(tile) + return tile + } + + private func bakeProgressiveBase(levelCount: Int) throws -> String { + let output = FileManager.default.temporaryDirectory + .appendingPathComponent("GaussianProgressiveLODTest-\(UUID().uuidString)") + .appendingPathExtension("untoldgs") + _ = try bakeGaussianSplatProgressiveTiers( + plyURL: try testPLYURL(), + outputBaseURL: output, + levelCount: levelCount + ) + return output.deletingPathExtension().path + } + + func testBakeProgressiveTiersWritesNestedCounts() throws { + let output = FileManager.default.temporaryDirectory + .appendingPathComponent("GaussianProgressiveBake-\(UUID().uuidString)") + .appendingPathExtension("untoldgs") + let urls = try bakeGaussianSplatProgressiveTiers( + plyURL: try testPLYURL(), + outputBaseURL: output, + levelCount: 3 + ) + + let tiers = try urls.map { try UntoldGSFormat.read(from: $0) } + XCTAssertEqual(tiers.count, 3) + XCTAssertGreaterThan(tiers[0].splatCount, tiers[1].splatCount) + XCTAssertGreaterThan(tiers[1].splatCount, tiers[2].splatCount) + } + + func testProgressiveStreamingLoadsCoarsestFirstThenRefinesOnDemand() async throws { + _ = makeContainingTile() + let base = try bakeProgressiveBase(levelCount: 3) + + let entity = createEntity() + translateTo(entityId: entity, position: .zero) + setEntityGaussianProgressiveStreamable( + entityId: entity, + baseFilename: base, + levelCount: 3, + maxDistances: [20, 50, .greatestFiniteMagnitude], + streamingRadius: 200, + unloadRadius: 300, + boundingBoxHalfExtent: simd_float3(1, 1, 1) + ) + + GeometryStreamingSystem.shared.update(cameraPosition: .zero, deltaTime: 0.1) + await scene.get(component: StreamingComponent.self, for: entity)?.loadTask?.value + + let lod = try XCTUnwrap(scene.get(component: GaussianLODComponent.self, for: entity)) + XCTAssertEqual(lod.currentLOD, 2) + XCTAssertEqual(lod.lodLevels[2].residencyState, .resident) + XCTAssertEqual(lod.lodLevels[1].residencyState, .unknown) + XCTAssertEqual(lod.lodLevels[0].residencyState, .unknown) + + let coarseCount = try XCTUnwrap(lod.lodLevels[2].buffers?.splatCount) + XCTAssertEqual(scene.get(component: GaussianComponent.self, for: entity)?.splatCount, coarseCount) + + let camera = createEntity() + scene.assign(to: camera, component: CameraComponent.self)?.localPosition = .zero + _ = scene.assign(to: camera, component: LocalTransformComponent.self) + CameraSystem.shared.activeCamera = camera + + GaussianLODSystem.shared.update(deltaTime: 0.1) + await lod.lodLevels[0].loadTask?.value + GaussianLODSystem.shared.update(deltaTime: 0.1) + + XCTAssertEqual(lod.lodLevels[0].residencyState, .resident) + XCTAssertEqual(lod.currentLOD, 0) + XCTAssertEqual(scene.get(component: GaussianComponent.self, for: entity)?.splatCount, lod.lodLevels[0].buffers?.splatCount) + } +} diff --git a/Tools/UntoldEngineCLI/Sources/UntoldEngineCLI/ExportCommand.swift b/Tools/UntoldEngineCLI/Sources/UntoldEngineCLI/ExportCommand.swift index b99b3d6a..38a18a5d 100644 --- a/Tools/UntoldEngineCLI/Sources/UntoldEngineCLI/ExportCommand.swift +++ b/Tools/UntoldEngineCLI/Sources/UntoldEngineCLI/ExportCommand.swift @@ -10,6 +10,7 @@ import ArgumentParser import Foundation +import UntoldEngine struct ExportCommand: ParsableCommand { static let configuration = CommandConfiguration( @@ -24,16 +25,20 @@ struct ExportCommand: ParsableCommand { references — equivalent to running --compress-geometry followed by `untoldengine texbake --dir` and `untoldengine texbake --patch-refs`. + Gaussian `.ply` inputs skip Blender and export directly to `.untoldgs`. + Example: untoldengine export --input model.usdz --output model.untold --convert-orientation --optimize untoldengine export --input model.blend --output model.untold --convert-orientation --optimize + untoldengine export --input splats.ply --output splats.untoldgs + untoldengine export --input splats.ply --output splats.untoldgs --lod-levels 4 """ ) - @Option(name: .long, help: "Source .usd, .usda, .usdc, .usdz, or .blend asset") + @Option(name: .long, help: "Source .usd, .usda, .usdc, .usdz, .blend, or Gaussian .ply asset") var input: String - @Option(name: .long, help: "Destination .untold file") + @Option(name: .long, help: "Destination .untold or .untoldgs file") var output: String @Option(name: .long, help: "Override the Blender executable path") @@ -81,6 +86,9 @@ struct ExportCommand: ParsableCommand { /// Keep in sync with MAX_BAKE_RESOLUTION in scripts/untoldexplorer.py. static let maxBakeResolution = 8192 + @Option(name: .customLong("lod-levels"), help: "Gaussian .ply export only: number of progressive .untoldgs tiers to generate. Default 1 writes --output directly; values greater than 1 write _lod0.untoldgs, _lod1.untoldgs, ...") + var lodLevels: Int = 1 + func run() throws { let inputURL = resolvePath(input).standardizedFileURL let outputURL = resolvePath(output).standardizedFileURL @@ -96,6 +104,17 @@ struct ExportCommand: ParsableCommand { printInfo("--bake-resolution \(bakeResolution) is very high; clamping to \(clampedBakeResolution).") } + if inputURL.pathExtension.lowercased() == "ply" { + guard outputURL.pathExtension.lowercased() == "untoldgs" else { + throw ExportError.unsupportedPLYExportOutput(outputURL.pathExtension) + } + guard lodLevels > 0 else { + throw ExportError.invalidLODLevels(lodLevels) + } + try runGaussianSplatExport(inputURL: inputURL, outputURL: outputURL) + return + } + let blenderURL = try resolveBlender() let exporterURL = try resolveExporter() @@ -151,6 +170,18 @@ struct ExportCommand: ParsableCommand { } } + private func runGaussianSplatExport(inputURL: URL, outputURL: URL) throws { + printInfo("Exporting Gaussian splats \(inputURL.path)") + let tierURLs = try bakeGaussianSplatProgressiveTiers( + plyURL: inputURL, + outputBaseURL: outputURL, + levelCount: lodLevels + ) + for tierURL in tierURLs { + printSuccess("Exported: \(tierURL.path)") + } + } + private func optimizeTextures(outputURL: URL) throws { let texturesDir = outputURL.deletingLastPathComponent().appendingPathComponent("Textures") guard validateDirectory(texturesDir) else { @@ -199,6 +230,8 @@ enum ExportError: LocalizedError { case exportFailed(Int32) case optimizeFailed(Int32) case invalidBakeResolution(Int) + case unsupportedPLYExportOutput(String) + case invalidLODLevels(Int) var errorDescription: String? { switch self { @@ -212,6 +245,11 @@ enum ExportError: LocalizedError { return "Texture optimization (texbake) failed with exit status \(status)" case let .invalidBakeResolution(value): return "--bake-resolution must be a positive integer, got \(value)" + case let .unsupportedPLYExportOutput(pathExtension): + let suffix = pathExtension.isEmpty ? "" : ".\(pathExtension)" + return "Gaussian .ply export supports only .untoldgs output, got \(suffix)" + case let .invalidLODLevels(value): + return "--lod-levels must be a positive integer, got \(value)" } } } From ba6e6c4fdbc015bca0384c5fd7304c072bb3f812 Mon Sep 17 00:00:00 2001 From: Untold Engine Date: Thu, 20 Aug 2026 11:27:25 -0700 Subject: [PATCH 04/11] [Patch] Added lod debug for splats --- Sources/CShaderTypes/ShaderTypes.h | 1 + .../UntoldEngine/Renderer/RenderPasses.swift | 13 +++++++++++++ Sources/UntoldEngine/Shaders/Gaussians.metal | 3 ++- .../UntoldEngineKernels-ios.air | Bin 168384 -> 168496 bytes .../UntoldEngineKernels-ios.metallib | Bin 558215 -> 558407 bytes .../UntoldEngineKernels-iossim.metallib | Bin 560839 -> 561031 bytes .../UntoldEngineKernels-tvos.air | Bin 168384 -> 168496 bytes .../UntoldEngineKernels-tvos.metallib | Bin 558599 -> 558791 bytes .../UntoldEngineKernels-tvossim.air | Bin 168416 -> 168528 bytes .../UntoldEngineKernels-tvossim.metallib | Bin 561127 -> 561303 bytes .../UntoldEngineKernels-xros.air | Bin 168384 -> 168496 bytes .../UntoldEngineKernels-xros.metallib | Bin 558631 -> 558823 bytes .../UntoldEngineKernels-xrossim.air | Bin 168416 -> 168528 bytes .../UntoldEngineKernels-xrossim.metallib | Bin 561159 -> 561335 bytes .../UntoldEngineKernels.metallib | Bin 556567 -> 556759 bytes 15 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Sources/CShaderTypes/ShaderTypes.h b/Sources/CShaderTypes/ShaderTypes.h index 15019bac..40d13823 100644 --- a/Sources/CShaderTypes/ShaderTypes.h +++ b/Sources/CShaderTypes/ShaderTypes.h @@ -557,6 +557,7 @@ typedef enum{ gaussianTBDRRenderViewPortIndex, gaussianTBDRRenderReverseZIndex, gaussianTBDRRenderPrecomputedIndex, + gaussianTBDRRenderDebugColorIndex, }GaussianTBDRRenderBufferIndices; typedef enum{ diff --git a/Sources/UntoldEngine/Renderer/RenderPasses.swift b/Sources/UntoldEngine/Renderer/RenderPasses.swift index aa17f747..626101fb 100644 --- a/Sources/UntoldEngine/Renderer/RenderPasses.swift +++ b/Sources/UntoldEngine/Renderer/RenderPasses.swift @@ -4540,6 +4540,19 @@ public enum RenderPasses { index: Int(gaussianTBDRRenderPrecomputedIndex.rawValue) ) + var gaussianLODDebugColor = simd_float4(0, 0, 0, 0) + if SpatialDebugVisualization.shared.colorRenderablesByLOD, + let gaussianLOD = scene.get(component: GaussianLODComponent.self, for: entityId) + { + let color = lodDebugColor(for: gaussianLOD.currentLOD) + gaussianLODDebugColor = simd_float4(color.x, color.y, color.z, 1.0) + } + renderEncoder.setVertexBytes( + &gaussianLODDebugColor, + length: MemoryLayout.stride, + index: Int(gaussianTBDRRenderDebugColorIndex.rawValue) + ) + renderEncoder.drawPrimitivesTracked(type: .triangleStrip, vertexStart: 0, vertexCount: 4, diff --git a/Sources/UntoldEngine/Shaders/Gaussians.metal b/Sources/UntoldEngine/Shaders/Gaussians.metal index 8a5e8449..ea83e2eb 100644 --- a/Sources/UntoldEngine/Shaders/Gaussians.metal +++ b/Sources/UntoldEngine/Shaders/Gaussians.metal @@ -456,6 +456,7 @@ vertex GaussianOutData vertexGaussianTBDRShader( constant Uniforms &uniforms [[buffer(gaussianTBDRRenderUniformIndex)]], constant float2 &viewport [[buffer(gaussianTBDRRenderViewPortIndex)]], const device GaussianPrecomputedSplat *precomputedSplats [[buffer(gaussianTBDRRenderPrecomputedIndex)]], + constant float4 &debugColor [[buffer(gaussianTBDRRenderDebugColorIndex)]], uint vid [[vertex_id]], uint iid [[instance_id]]) { @@ -506,7 +507,7 @@ vertex GaussianOutData vertexGaussianTBDRShader( float2 ndcOffset = pixelOffset * 2.0f / viewport; out.position = centerClip; out.position.xy += ndcOffset * centerClip.w; - out.color = precomputed.color; + out.color = debugColor.w > 0.0f ? debugColor.xyz : precomputed.color; out.alpha = float(splat.colorAndOpacity.w); out.valid = true; diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-ios.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-ios.air index 0b315c531eef9b06fe113577593fc21002815bd7..7c86ab89af2254e1550663997fe9a30f21b30f62 100644 GIT binary patch delta 26816 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 Q@@JH{w`|HJ_QH|>2e#0)ApigX delta 26495 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 diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-iossim.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-iossim.metallib index 70360fc30f3d862a0ae32679a3d5bbc3ee079ff9..76233700b519ceb9a5d46cb1c9782b2e35ddc406 100644 GIT binary patch delta 3151 zcmYjR2~-nz8lRc}WM)WW7_JcR2^h{q6KD~wLJmN@+Q_y(YOy;&@T4^&9#z{+66L74 z#y75^Zd>EgR$sNk%Au~iO$aDYX*c?)WmhecRqJ-$HgsJ}yB7DKq|ev9eEELA-}nEn zIdbW}^p->E(Mw)jtVaVW?xz@u?l z{PW2xKwxDUe*rPG5%3;yJpTzz^VKQUfZG-3-zkNBaTMXaI|kzTA5toTYaihE<>c_2 zQmcXgz3`!LQ6c{%i{gJyWdU;*Hp|H2+tTU)eKFWr&eO~qfLw>oVBQCe2_SdEc^UGz zfSSZZjsGOy0qBe{UYfoWxb-+6l_ckXOs~h7YM#y5gE1E9a`}Ymb%5D}hpHW)ZUSak z7#Ar_AaDi`O*f>d2CmP-)rvFU0LI&4EX|rEfLRh2i!-C0tIv^fyiijK z%%-roS+fmryTe$RzZGcTCqrF7$v1({Q(;|MUf#(=&Czaf=My zu75pK510pG-1KZc@C&HWl!C%)U`(JwQ^EoGJ%y`)d3K1~C9_&2vruSQpJWzLD6tM1 zuP~%zHw1j!du!2!&hA~f!uiiSaCMGur?w*l0eozW;idQk^~Vy>q1GhIXl)R(I7{m& zB5FTN*HFz-tqn5WP;*qX7(tMwG6Xr&7cc=024r@x^FpQ|SBN(v$2zSQG#AVFmdnq~ zn|cRzzB&&O&IhXjovEINa4=H~4SqoLi=%@m%0Ng#LlBl5Ago7j@!x(ebIw@_`Ts?8wFf*>E#XsEo}=1^r&zm>H!reR8d9lFmc{UhjnlwP`rFEF! z>CP>X(#3T_4mPBmH7)zSk%0W<>?GNI7a#IVX+)sWWl|P*@%sBOjR~ zCmoSLsewsU&l0@>;VOn^ITatO?Xi-2BiX|ecS75oau7YiRm!gA46_c9t3AP-=ognO zPh$Ip(RssMz+S?YR__U~LUtiIV_{O-U6?+L^dWD&3XfAwXrT2reI+$EZ{B>cKq z;T>(_Lr>E8`m|oSX-(2ew=m$GFaViqXYyrF^5b( z$6kvQK8-PWxsrwtWhS)Jc4P!eP#B3a>x0_B ze~w%0Up`PDe50JFo4{u0r)7d-r+G0UaGw4E#9^8o=ekXRu>|l%CuQ4gS<7n&{V{WI zN9Q#k^0zswG@RfC_rTk7<<|7fW#U>-On#TVs%@HmVf*0X23e&|xw6)4l-6rvl5Fpf z8e7Y%xWN}D2b!(Qq1wzsb%8EsjV|WdebU0EF>5viK@!$AYJ6Dw%dwiwwdtxtF{_nY z3c6~{qP~u{Y1bC}N|*ca=PwK{f#41VyPh8@UH+hS$+5v^e^z1aJh`+6l@@nd--$R_ zAv)-8>+5VgSh4#L$J@F`*#$ zBoO6Ih6;qk+`os@jGfl0bn34!9W!b1A6KGn&gY} zxL}51KY8?NU|jk=n(Dh93Rnz2@?%b?n6isOb|*&glmDQ(CyZSq{Djj@pDM!rB}0x5 zOvwgXOC;#z4<{Iszu&UWClK25hv?(j43;6rONP|l`WY-jjPErduo9tsfD!M9D;e@d zf9BAvV5PB-(o z$V}9n4p%32S*CZ#c%yWSs42~m`sBc(#q)8?e;N2p*owI_0{J{T7O2p@$lUZm1rjwk zU))X2#YS7$H0zu6BMoH5*kr3e!>XSgQv32JDSw7-FW#UHGVFMSE7Num7aq>^YDKy{ z(!)y6&2V=ZgGT+in&4;_x6EUs2sK`g{UOwwcpfUSsDo|ZnoYWJfNR0xuE?Xb2^?whrfmb0PFD|#x5RG;(1Kn7jeth>#c!uNWBw1Ksc6Rl delta 3090 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 diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvos.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvos.air index 204a39749522457928a1b0b3e6adb5ea0c1c2355..bc9fb16e0b908d337d897e6bf8b89897089c8700 100644 GIT binary patch delta 26787 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≶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 Ap8x;= delta 3080 zcmYjQ3se(l7M__unHeTSn1EnFkO>eT5_Eu8acv3_uJZ;ZOc!*oEOYA7LJfjjSh38IA`6V?E3FA%yj zGKB5(D}bRlRP-N|5@yp#;o*EE;7`M0$r(atq6rwh!NDqlVK)NS4~N0Nx7cdH{58~< zta=S_s6-t6p=u{U5<<8nsSUWEkO+!-D&eQ38Z7XfU`+19ysgkJ5MonIz}+qp)lQ^T zgTR3h&Qn(d!%2y_-6eGe2wV)Q<)^+3`0F7|o&R_de7<-o#&N|>d8OMcl{L!|?mCW@A_p-gsw`rxI*D3Yq_pbVw94hI zyHbJz1VKua2;w|H6ONfs;nAinf$d_2g4>j{uL`v2Svg>Lg-e=|<8I%|N3*lDW@HsQ z2?7yFn2XP!;L{;BTYyAr(O03=N+>0PKFXn0b`0h@!gM(*!x{GVZK%_+6yQ#I4Pa6= z0AXPb0}VmEyefJ}y%r%M#zaQRdUURPn*{dnanALy9wnU(H6TO!-NneW*cnU3F$^7X zvJXLul-fCIMV(h(1M{8sIuIub&wc`&@9x3&py#?9b4BN@5S7^OIOi7i+vqVvD=jIxmSWhtU@#Rtw!8=fxDVT-t3I9;AUrnd}Mjc1@7a3GxpAAZ^JR z@=|9EvRvkJ=6GS2v+@XtaTe4AwfTE(#1F=ZANh!%I8Z99G2;CJY6Fk=Iq)+s{0wr^ zGK}XM`n9rtkGB{@finx!G)hiu2_nQ+}3_K z>?B&;vJVZi9XxSb3}5!jE*NCLa}yuC&B64}fb6V6_I%=))>9ZeZduriW)2L-y3owC zmV)D!g(uJ~?Q85qAANOEk1k=%8ardnJcP!%3**MDabwu{N*8B)K~z{SJ7tg=8EPQ7 zZ~cWysvp6RF><)?jr4B@HRFXVsNCXH2D}!L_ch{m0jho_6S&P8O3jNHdOu& za@5*GI~@ppuKaugfrIubLhry=8?A!(klI`e<*Rw+vn`mb6Z<7^IQ#T*MRx16IkyUn3XC z?MJL^$E*&6+#{Kon|j}tnz69tU}AJGf=qD;vK20twBnMZB(*@Tm39#lnZNL6Nxh*N}`Kl3j)KXt$ zCVu!*=l-(n`$f+T4Da@(HQ!P%mSlJ;wVg-!&hVj?ymZxOf!VaX%4mmncPcYvM&?l|!xLdh7`}X)KF`KuwrbwjsP|fY8offYWassR zmEqPWUE1`I&9T>wEzOIabE?BrBvJ1lc@anr7k0TBkqpz8lc*9+PT1B zV-bQ|%zIUHnz(pHhc1x#r*K^YeTLq}>{Tg0hFlNiOk_s_y+X2qnI7GycM(GxeYWJ) z1zKHvvnpoTVs+hrmytI2?kZ;q%4*KJ#GUXZxR?&}5$aj3eciyW0vDTZqeti6Ln+I& z$-tYB?0&9}SRasi}ASQH)Couet z>4+TK<))OYZtc?}k8JeC^s^Y=ZJxf(@UyJGiaN#nk{{(s0yp0&j4!TA{8}|Po&1E= zyQuTLMcFaS4*9789#wV}$WbVzbh~8A)}N*RsF}p@LqR1txuqkl2kG1@PWELv0N%jD zX|{zu0Iv@s>7rhMZwey&qC>!pZwSIZzw8^nmVsk{W~OjiAO<3vrp>mDozqdUP&#c2 z@CCSR+T?MQ$&e-Pvqy%KzqeWd&dz*BG!%>D=)9iD$5P*ad3@9eWY!54f!tmT+tvjg=J-CkEb zM7qD(MU-eqW}2pmsZlLsrX#-_4WP5Sb~a^wl|yxJeHDFl{=oe z=d{gzEIb$A$T&vOxy2Qm zm;RGw_ke|tfr;jhLTwCD!8UpBw(jCJ@&WCws>>x2P_WrDCUrLc3XR6zBb}eg(0J!( YJHUPWXbXTQfhL89LnGc9Z6PE63orjcJpcdz diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvossim.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvossim.air index 4b72311b61a227f4b0f3003e60cf263bd9d79530..33f2676fbfe4407d9fb5363241018e5f79b30d83 100644 GIT binary patch delta 26786 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