@sparkjsdev/spark 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -241,13 +241,13 @@ var vo = /* @__PURE__ */ Lt($t, 9, 1), bo = /* @__PURE__ */ Lt(Ms, 5, 1), De = f
241
241
  O = g, h = null;
242
242
  break;
243
243
  } else {
244
- var Z = _ - 254;
244
+ var j = _ - 254;
245
245
  if (_ > 264) {
246
246
  var M = _ - 257, P = ws[M];
247
- Z = YA(t, g, (1 << P) - 1) + Ds[M], g += P;
247
+ j = YA(t, g, (1 << P) - 1) + Ds[M], g += P;
248
248
  }
249
- var j = B[Me(t, g) & H], G = j >> 4;
250
- j || yA(3), g += j & 15;
249
+ var Z = B[Me(t, g) & H], G = Z >> 4;
250
+ Z || yA(3), g += Z & 15;
251
251
  var L = Mo[G];
252
252
  if (G > 3) {
253
253
  var P = ms[G];
@@ -258,7 +258,7 @@ var vo = /* @__PURE__ */ Lt($t, 9, 1), bo = /* @__PURE__ */ Lt(Ms, 5, 1), De = f
258
258
  break;
259
259
  }
260
260
  a && c(I + 131072);
261
- var fA = I + Z;
261
+ var fA = I + j;
262
262
  if (I < L) {
263
263
  var cA = i - L, pA = Math.min(L, fA);
264
264
  for (cA + I < 0 && yA(3); I < pA; ++I)
@@ -463,7 +463,7 @@ async function Ns(t) {
463
463
  const { instance: e, module: s } = await Ko(await t, A);
464
464
  return Vo(e, s);
465
465
  }
466
- const TA = -12, UA = 9, Po = Math.exp(TA), Xo = Math.exp(UA), Ts = -30, It = Math.exp(Ts), Xe = 11, We = 11, Us = 11, Wo = Xe + We, X = 1 << Xe, qA = 1 << We, Gs = 1 << Us, Oe = 1, Oo = X - 1, Zo = qA - 1, jo = Gs - 1, Ag = !0, Mh = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
466
+ const TA = -12, UA = 9, Po = Math.exp(TA), Xo = Math.exp(UA), Ts = -30, It = Math.exp(Ts), Xe = 11, We = 11, Us = 11, Wo = Xe + We, X = 1 << Xe, qA = 1 << We, Gs = 1 << Us, Oe = 1, Oo = X - 1, jo = qA - 1, Zo = Gs - 1, Ag = !0, Mh = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
467
467
  __proto__: null,
468
468
  LN_SCALE_MAX: UA,
469
469
  LN_SCALE_MIN: TA,
@@ -473,10 +473,10 @@ const TA = -12, UA = 9, Po = Math.exp(TA), Xo = Math.exp(UA), Ts = -30, It = Mat
473
473
  SCALE_ZERO: It,
474
474
  SPLAT_TEX_DEPTH: Gs,
475
475
  SPLAT_TEX_DEPTH_BITS: Us,
476
- SPLAT_TEX_DEPTH_MASK: jo,
476
+ SPLAT_TEX_DEPTH_MASK: Zo,
477
477
  SPLAT_TEX_HEIGHT: qA,
478
478
  SPLAT_TEX_HEIGHT_BITS: We,
479
- SPLAT_TEX_HEIGHT_MASK: Zo,
479
+ SPLAT_TEX_HEIGHT_MASK: jo,
480
480
  SPLAT_TEX_LAYER_BITS: Wo,
481
481
  SPLAT_TEX_MIN_HEIGHT: Oe,
482
482
  SPLAT_TEX_WIDTH: X,
@@ -867,7 +867,7 @@ class V {
867
867
  this.update && s.updaters.push(this.update);
868
868
  for (const c of i) {
869
869
  const l = e[c];
870
- l && (s.uniforms[l] || n.push(`${Ze(l, this.outTypes[c])};`));
870
+ l && (s.uniforms[l] || n.push(`${je(l, this.outTypes[c])};`));
871
871
  }
872
872
  return a != null && a.length && (n.push("{"), n.push(...a.map((c) => s.indent + c)), n.push("}")), n;
873
873
  }
@@ -998,7 +998,7 @@ function Xt({
998
998
  generate: r
999
999
  });
1000
1000
  }
1001
- function Ze(t, A, e) {
1001
+ function je(t, A, e) {
1002
1002
  const s = typeof A == "string" ? A : A.type;
1003
1003
  if (!s)
1004
1004
  throw new Error(`Invalid DynoType: ${String(A)}`);
@@ -1100,12 +1100,12 @@ const AA = { type: "Gsplat" }, Wt = { type: "PackedSplats" }, rg = (t) => new Ks
1100
1100
  r: I,
1101
1101
  g: h,
1102
1102
  b: B
1103
- }), Ge = (t) => new Zs({ gsplat: t }), je = (t, {
1103
+ }), Ge = (t) => new js({ gsplat: t }), Ze = (t, {
1104
1104
  scale: A,
1105
1105
  rotate: e,
1106
1106
  translate: s,
1107
1107
  recolor: n
1108
- }) => new js({ gsplat: t, scale: A, rotate: e, translate: s, recolor: n }), vA = uA(`
1108
+ }) => new Zs({ gsplat: t, scale: A, rotate: e, translate: s, recolor: n }), vA = uA(`
1109
1109
  struct Gsplat {
1110
1110
  vec3 center;
1111
1111
  uint flags;
@@ -1391,14 +1391,14 @@ const Os = uA(`
1391
1391
  return quatVec(quaternion, normal);
1392
1392
  }
1393
1393
  `);
1394
- class Zs extends v {
1394
+ class js extends v {
1395
1395
  constructor({ gsplat: A }) {
1396
1396
  super({ a: A, outKey: "normal", outTypeFunc: () => "vec3" }), this.globals = () => [vA, Os], this.statements = ({ inputs: e, outputs: s }) => [
1397
1397
  `${s.normal} = gsplatNormal(${e.a}.scales, ${e.a}.quaternion);`
1398
1398
  ];
1399
1399
  }
1400
1400
  }
1401
- class js extends V {
1401
+ class Zs extends V {
1402
1402
  constructor({
1403
1403
  gsplat: A,
1404
1404
  scale: e,
@@ -1504,7 +1504,7 @@ class k extends V {
1504
1504
  },
1505
1505
  generate: ({ inputs: a, outputs: o }) => {
1506
1506
  const c = (r == null ? void 0 : r({ inputs: a, outputs: o })) ?? [], l = {}, g = o[A];
1507
- return g && (c.push(`uniform ${Ze(g, e, s)};`), l[g] = this.uniform), { globals: c, uniforms: l };
1507
+ return g && (c.push(`uniform ${je(g, e, s)};`), l[g] = this.uniform), { globals: c, uniforms: l };
1508
1508
  }
1509
1509
  }), this.type = e, this.count = s, this.value = n, this.uniform = { value: n }, this.outKey = A;
1510
1510
  }
@@ -1951,10 +1951,10 @@ function bA(t) {
1951
1951
  function ne(t) {
1952
1952
  return Math.max(-127, Math.min(127, Math.round(t * 127)));
1953
1953
  }
1954
- function Zg(t) {
1954
+ function jg(t) {
1955
1955
  return t / 255;
1956
1956
  }
1957
- function jg(t) {
1957
+ function Zg(t) {
1958
1958
  return t / 127;
1959
1959
  }
1960
1960
  class Ac {
@@ -2284,12 +2284,12 @@ function Mc(t, A) {
2284
2284
  const e = t & 255, s = t >>> 8 & 255, n = t >>> 16 & 255, i = e / 255, r = s / 255, a = n / 255, o = i * (2 * Math.PI) - Math.PI, c = r * (2 * Math.PI) - Math.PI, l = a * (2 * Math.PI) - Math.PI, g = Math.cos(o * 0.5), I = Math.sin(o * 0.5), h = Math.cos(c * 0.5), B = Math.sin(c * 0.5), C = Math.cos(l * 0.5), Q = Math.sin(l * 0.5);
2285
2285
  return A.w = g * h * C + I * B * Q, A.x = I * h * C - g * B * Q, A.y = g * B * C + I * h * Q, A.z = g * h * Q - I * B * C, A.normalize(), A;
2286
2286
  }
2287
- function jt(t, A, e, s) {
2287
+ function Zt(t, A, e, s) {
2288
2288
  const n = Math.max(-127, Math.min(127, t * 127)), i = Math.max(-127, Math.min(127, A * 127)), r = Math.max(-127, Math.min(127, e * 127)), a = Math.max(-127, Math.min(127, s * 127));
2289
2289
  return n & 255 | (i & 255) << 8 | (r & 255) << 16 | (a & 255) << 24;
2290
2290
  }
2291
2291
  function vc(t, A, e, s) {
2292
- const n = (s == null ? void 0 : s.sh1Min) ?? -1, i = (s == null ? void 0 : s.sh1Max) ?? 1, r = 0.5 * (n + i), a = 63 / (i - n), o = A * 2;
2292
+ const n = (s == null ? void 0 : s.sh1Min) ?? -1, i = (s == null ? void 0 : s.sh1Max) ?? 1, r = 0.5 * (n + i), a = 126 / (i - n), o = A * 2;
2293
2293
  for (let c = 0; c < 9; ++c) {
2294
2294
  const l = (e[c] - r) * a, g = Math.round(Math.max(-63, Math.min(63, l))) & 127, I = c * 7, h = I + 7, B = Math.floor(I / 32), C = I - B * 32, Q = g << C & 4294967295;
2295
2295
  if (t[o + B] |= Q, h > B * 32 + 32) {
@@ -2299,23 +2299,23 @@ function vc(t, A, e, s) {
2299
2299
  }
2300
2300
  }
2301
2301
  function bc(t, A, e, s) {
2302
- const n = (s == null ? void 0 : s.sh2Min) ?? -1, i = (s == null ? void 0 : s.sh2Max) ?? 1, r = 0.5 * (n + i), a = 0.5 / (i - n);
2303
- t[A * 4 + 0] = jt(
2302
+ const n = (s == null ? void 0 : s.sh2Min) ?? -1, i = (s == null ? void 0 : s.sh2Max) ?? 1, r = 0.5 * (n + i), a = 2 / (i - n);
2303
+ t[A * 4 + 0] = Zt(
2304
2304
  (e[0] - r) * a,
2305
2305
  (e[1] - r) * a,
2306
2306
  (e[2] - r) * a,
2307
2307
  (e[3] - r) * a
2308
- ), t[A * 4 + 1] = jt(
2308
+ ), t[A * 4 + 1] = Zt(
2309
2309
  (e[4] - r) * a,
2310
2310
  (e[5] - r) * a,
2311
2311
  (e[6] - r) * a,
2312
2312
  (e[7] - r) * a
2313
- ), t[A * 4 + 2] = jt(
2313
+ ), t[A * 4 + 2] = Zt(
2314
2314
  (e[8] - r) * a,
2315
2315
  (e[9] - r) * a,
2316
2316
  (e[10] - r) * a,
2317
2317
  (e[11] - r) * a
2318
- ), t[A * 4 + 3] = jt(
2318
+ ), t[A * 4 + 3] = Zt(
2319
2319
  (e[12] - r) * a,
2320
2320
  (e[13] - r) * a,
2321
2321
  (e[14] - r) * a,
@@ -2323,7 +2323,7 @@ function bc(t, A, e, s) {
2323
2323
  );
2324
2324
  }
2325
2325
  function Fc(t, A, e, s) {
2326
- const n = (s == null ? void 0 : s.sh3Min) ?? -1, i = (s == null ? void 0 : s.sh3Max) ?? 1, r = 0.5 * (n + i), a = 31 / (i - n), o = A * 4;
2326
+ const n = (s == null ? void 0 : s.sh3Min) ?? -1, i = (s == null ? void 0 : s.sh3Max) ?? 1, r = 0.5 * (n + i), a = 62 / (i - n), o = A * 4;
2327
2327
  for (let c = 0; c < 21; ++c) {
2328
2328
  const l = (e[c] - r) * a, g = Math.round(Math.max(-31, Math.min(31, l))) & 63, I = c * 6, h = I + 6, B = Math.floor(I / 32), C = I - B * 32, Q = g << C & 4294967295;
2329
2329
  if (t[o + B] |= Q, h > B * 32 + 32) {
@@ -2388,8 +2388,8 @@ const vh = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2388
2388
  FreeList: Ln,
2389
2389
  GunzipReader: Xn,
2390
2390
  IDENT_VERTEX_SHADER: zn,
2391
- Sint8ToFloat: jg,
2392
- Uint8ToFloat: Zg,
2391
+ Sint8ToFloat: Zg,
2392
+ Uint8ToFloat: jg,
2393
2393
  averagePositions: qn,
2394
2394
  averageQuaternions: Hn,
2395
2395
  cloneClock: _n,
@@ -2715,10 +2715,10 @@ function Wc(t) {
2715
2715
  function Oc(t) {
2716
2716
  return t;
2717
2717
  }
2718
- function Zc(t) {
2718
+ function jc(t) {
2719
2719
  return t;
2720
2720
  }
2721
- function jc(t) {
2721
+ function Zc(t) {
2722
2722
  return t;
2723
2723
  }
2724
2724
  function Wn(t, A, e = "min") {
@@ -2766,7 +2766,7 @@ function On(t, A = "isNan") {
2766
2766
  function il(t) {
2767
2767
  return On(t, "isInf");
2768
2768
  }
2769
- const CA = (t, A) => new ti({ a: t, b: A }), Et = (t, A) => new ei({ a: t, b: A }), iA = (t, A) => new si({ a: t, b: A }), ie = (t, A) => new ni({ a: t, b: A }), Je = (t, A) => new ii({ a: t, b: A }), Zn = (t, A) => new ri({ a: t, b: A }), rl = (t) => new ai({ a: t }).outputs, is = (t) => new oi({ a: t }), al = (t) => new gi({ a: t }), ol = (t) => new ci({ a: t }), gl = (t) => new li({ a: t }), cl = (t) => new Ii({ a: t }), ll = (t) => new ui({ a: t }), Il = (t) => new hi({ a: t }), re = (t) => new Ci({ a: t }), ul = (t, A) => new Bi({ a: t, b: A }), hl = (t) => new Qi({ a: t }), Cl = (t) => new Ei({ a: t }), Bl = (t) => new fi({ a: t }), Ql = (t) => new pi({ a: t }), El = (t) => new di({ a: t }), fl = (t) => new yi({ a: t }), pl = (t) => new wi({ a: t }), dl = (t, A) => new mi({ a: t, b: A }), jn = (t, A) => new xi({ a: t, b: A }), yl = (t, A, e) => new Si({ a: t, min: A, max: e }), Ai = (t, A, e) => new Di({ a: t, b: A, t: e }), wl = (t, A) => new Mi({ edge: t, x: A }), ml = (t, A, e) => new vi({ edge0: t, edge1: A, x: e }), xl = (t) => new bi({ a: t }), Sl = (t) => new Fi({ a: t });
2769
+ const CA = (t, A) => new ti({ a: t, b: A }), Et = (t, A) => new ei({ a: t, b: A }), iA = (t, A) => new si({ a: t, b: A }), ie = (t, A) => new ni({ a: t, b: A }), Je = (t, A) => new ii({ a: t, b: A }), jn = (t, A) => new ri({ a: t, b: A }), rl = (t) => new ai({ a: t }).outputs, is = (t) => new oi({ a: t }), al = (t) => new gi({ a: t }), ol = (t) => new ci({ a: t }), gl = (t) => new li({ a: t }), cl = (t) => new Ii({ a: t }), ll = (t) => new ui({ a: t }), Il = (t) => new hi({ a: t }), re = (t) => new Ci({ a: t }), ul = (t, A) => new Bi({ a: t, b: A }), hl = (t) => new Qi({ a: t }), Cl = (t) => new Ei({ a: t }), Bl = (t) => new fi({ a: t }), Ql = (t) => new pi({ a: t }), El = (t) => new di({ a: t }), fl = (t) => new yi({ a: t }), pl = (t) => new wi({ a: t }), dl = (t, A) => new mi({ a: t, b: A }), Zn = (t, A) => new xi({ a: t, b: A }), yl = (t, A, e) => new Si({ a: t, min: A, max: e }), Ai = (t, A, e) => new Di({ a: t, b: A, t: e }), wl = (t, A) => new Mi({ edge: t, x: A }), ml = (t, A, e) => new vi({ edge0: t, edge1: A, x: e }), xl = (t) => new bi({ a: t }), Sl = (t) => new Fi({ a: t });
2770
2770
  class ti extends tA {
2771
2771
  constructor({ a: A, b: e }) {
2772
2772
  super({ a: A, b: e, outKey: "sum", outTypeFunc: ns }), this.statements = ({ inputs: s, outputs: n }) => [`${n.sum} = ${s.a} + ${s.b};`];
@@ -2878,12 +2878,12 @@ class di extends v {
2878
2878
  }
2879
2879
  class yi extends v {
2880
2880
  constructor({ a: A }) {
2881
- super({ a: A, outKey: "sqrt", outTypeFunc: Zc }), this.statements = ({ inputs: e, outputs: s }) => [`${s.sqrt} = sqrt(${e.a});`];
2881
+ super({ a: A, outKey: "sqrt", outTypeFunc: jc }), this.statements = ({ inputs: e, outputs: s }) => [`${s.sqrt} = sqrt(${e.a});`];
2882
2882
  }
2883
2883
  }
2884
2884
  class wi extends v {
2885
2885
  constructor({ a: A }) {
2886
- super({ a: A, outKey: "inversesqrt", outTypeFunc: jc }), this.statements = ({ inputs: e, outputs: s }) => [`${s.inversesqrt} = inversesqrt(${e.a});`];
2886
+ super({ a: A, outKey: "inversesqrt", outTypeFunc: Zc }), this.statements = ({ inputs: e, outputs: s }) => [`${s.inversesqrt} = inversesqrt(${e.a});`];
2887
2887
  }
2888
2888
  }
2889
2889
  class mi extends tA {
@@ -3115,7 +3115,7 @@ class Vi extends v {
3115
3115
  };
3116
3116
  }
3117
3117
  }
3118
- const _l = (t) => new Ar({ value: t }), zl = (t) => new tr({ value: t }), ql = (t) => new er({ value: t }), Pi = (t) => new sr({ value: t }), Hl = (t) => new nr({ value: t }), Kl = (t) => new ir({ value: t }), $l = (t) => new rr({ value: t }), Vl = (t) => new ar({ value: t }), Pl = (t) => new or({ value: t }), Xl = (t) => new gr({ value: t }), Wl = (t) => new cr({ value: t }), Ol = (t) => new lr({ value: t }), Zl = (t) => new Ir({ value: t }), Xi = (t) => new ur({ value: t }), Bt = (t) => new hr({ value: t }), Wi = (t) => new Cr({ value: t }), jl = (t) => new Br({ value: t }), AI = (t) => new Qr({ value: t }), tI = (t) => new Er({ value: t }), Oi = (t) => new fr({ value: t }), Zi = (t) => new pr({ value: t }), eI = (t) => new dr({ value: t }), sI = (t) => new yr({ value: t }), nI = (t) => new wr({ value: t }), iI = (t) => new mr({ value: t }), rI = (t) => new xr({ value: t }), aI = (t) => new Sr({ value: t }), ji = (t) => new Dr({ value: t }), oI = (t) => new Mr({ value: t }), Le = (t) => new vr({ value: t });
3118
+ const _l = (t) => new Ar({ value: t }), zl = (t) => new tr({ value: t }), ql = (t) => new er({ value: t }), Pi = (t) => new sr({ value: t }), Hl = (t) => new nr({ value: t }), Kl = (t) => new ir({ value: t }), $l = (t) => new rr({ value: t }), Vl = (t) => new ar({ value: t }), Pl = (t) => new or({ value: t }), Xl = (t) => new gr({ value: t }), Wl = (t) => new cr({ value: t }), Ol = (t) => new lr({ value: t }), jl = (t) => new Ir({ value: t }), Xi = (t) => new ur({ value: t }), Bt = (t) => new hr({ value: t }), Wi = (t) => new Cr({ value: t }), Zl = (t) => new Br({ value: t }), AI = (t) => new Qr({ value: t }), tI = (t) => new Er({ value: t }), Oi = (t) => new fr({ value: t }), ji = (t) => new pr({ value: t }), eI = (t) => new dr({ value: t }), sI = (t) => new yr({ value: t }), nI = (t) => new wr({ value: t }), iI = (t) => new mr({ value: t }), rI = (t) => new xr({ value: t }), aI = (t) => new Sr({ value: t }), Zi = (t) => new Dr({ value: t }), oI = (t) => new Mr({ value: t }), Le = (t) => new vr({ value: t });
3119
3119
  class gA extends v {
3120
3120
  constructor({
3121
3121
  value: A,
@@ -3673,7 +3673,7 @@ class Wr extends v {
3673
3673
  ];
3674
3674
  }
3675
3675
  }
3676
- const MI = (t, A, e) => new sa({ index: t, from: A, to: e }), vI = (t) => new Tt({ value: t }), bI = (t) => new kA({ state: t }), FI = (t) => new NA({ state: t }), Or = (t) => new na({ value: t }), Zr = (t) => new ia({ value: t }), jr = (t) => new ra({ value: t }), Aa = (t) => new aa({ value: t }), kI = (t) => new oa({ value: t }), NI = (t) => new ga({ value: t }), ta = (t) => new ca({ value: t }), _e = (t) => new la({ value: t }), ea = (t, A, e) => new Ia({ z: t, zNear: A, zFar: e }).outputs.depth;
3676
+ const MI = (t, A, e) => new sa({ index: t, from: A, to: e }), vI = (t) => new Tt({ value: t }), bI = (t) => new kA({ state: t }), FI = (t) => new NA({ state: t }), Or = (t) => new na({ value: t }), jr = (t) => new ia({ value: t }), Zr = (t) => new ra({ value: t }), Aa = (t) => new aa({ value: t }), kI = (t) => new oa({ value: t }), NI = (t) => new ga({ value: t }), ta = (t) => new ca({ value: t }), _e = (t) => new la({ value: t }), ea = (t, A, e) => new Ia({ z: t, zNear: A, zFar: e }).outputs.depth;
3677
3677
  class sa extends V {
3678
3678
  constructor({
3679
3679
  from: A,
@@ -3893,7 +3893,7 @@ class ga extends $A {
3893
3893
  construct: ({ value: e }) => {
3894
3894
  if (!e)
3895
3895
  throw new Error("value is required");
3896
- const s = Zr(e);
3896
+ const s = jr(e);
3897
3897
  return { hash: iA(Xi(s), J("float", 1 / 2 ** 32)) };
3898
3898
  }
3899
3899
  });
@@ -3911,7 +3911,7 @@ class ca extends $A {
3911
3911
  construct: ({ value: e }) => {
3912
3912
  if (!e)
3913
3913
  throw new Error("value is required");
3914
- const s = jr(e);
3914
+ const s = Zr(e);
3915
3915
  return { hash: iA(Bt(s), J("float", 1 / 2 ** 32)) };
3916
3916
  }
3917
3917
  });
@@ -4196,7 +4196,7 @@ function ya(t) {
4196
4196
  throw new Error(`Invalid texture type: ${t}`);
4197
4197
  }
4198
4198
  }
4199
- const KI = (t) => new wa({ degrees: t }), $I = (t) => new ma({ radians: t }), ze = (t) => new xa({ radians: t }), VI = (t) => new Sa({ radians: t }), PI = (t) => new Da({ radians: t }), XI = (t) => new Ma({ sin: t }), WI = (t) => new va({ cos: t }), OI = (t) => new ba({ tan: t }), ZI = (t, A) => new Fa({ y: t, x: A }), jI = (t) => new ka({ x: t }), Au = (t) => new Na({ x: t }), tu = (t) => new Ta({ x: t }), eu = (t) => new Ua({ x: t }), su = (t) => new Ga({ x: t }), nu = (t) => new Ra({ x: t });
4199
+ const KI = (t) => new wa({ degrees: t }), $I = (t) => new ma({ radians: t }), ze = (t) => new xa({ radians: t }), VI = (t) => new Sa({ radians: t }), PI = (t) => new Da({ radians: t }), XI = (t) => new Ma({ sin: t }), WI = (t) => new va({ cos: t }), OI = (t) => new ba({ tan: t }), jI = (t, A) => new Fa({ y: t, x: A }), ZI = (t) => new ka({ x: t }), Au = (t) => new Na({ x: t }), tu = (t) => new Ta({ x: t }), eu = (t) => new Ua({ x: t }), su = (t) => new Ga({ x: t }), nu = (t) => new Ra({ x: t });
4200
4200
  class wa extends v {
4201
4201
  constructor({ degrees: A }) {
4202
4202
  super({ a: A, outTypeFunc: (e) => e, outKey: "radians" }), this.statements = ({ inputs: e, outputs: s }) => [
@@ -4407,7 +4407,7 @@ const bh = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4407
4407
  GreaterThan: Ji,
4408
4408
  GreaterThanEqual: Li,
4409
4409
  Gsplat: AA,
4410
- GsplatNormal: Zs,
4410
+ GsplatNormal: js,
4411
4411
  Hash: na,
4412
4412
  Hash2: ia,
4413
4413
  Hash3: ra,
@@ -4484,7 +4484,7 @@ const bh = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4484
4484
  Texture: fa,
4485
4485
  TextureSize: Ea,
4486
4486
  TransformDir: Ba,
4487
- TransformGsplat: js,
4487
+ TransformGsplat: Zs,
4488
4488
  TransformPosition: Ca,
4489
4489
  TransformQuaternion: Qa,
4490
4490
  Transpose: Kr,
@@ -4516,7 +4516,7 @@ const bh = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4516
4516
  asin: XI,
4517
4517
  asinh: eu,
4518
4518
  atan: OI,
4519
- atan2: ZI,
4519
+ atan2: jI,
4520
4520
  atanh: nu,
4521
4521
  bool: _l,
4522
4522
  bvec2: Hl,
@@ -4547,7 +4547,7 @@ const bh = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4547
4547
  dynoBvec3: Bg,
4548
4548
  dynoBvec4: fg,
4549
4549
  dynoConst: J,
4550
- dynoDeclare: Ze,
4550
+ dynoDeclare: je,
4551
4551
  dynoFloat: _A,
4552
4552
  dynoFor: RI,
4553
4553
  dynoIf: UI,
@@ -4598,15 +4598,15 @@ const bh = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4598
4598
  faceforward: II,
4599
4599
  float: Pi,
4600
4600
  floatBitsToInt: Oi,
4601
- floatBitsToUint: Zi,
4601
+ floatBitsToUint: ji,
4602
4602
  floor: gl,
4603
4603
  fract: re,
4604
4604
  greaterThan: Nl,
4605
4605
  greaterThanEqual: ki,
4606
4606
  gsplatNormal: Ge,
4607
4607
  hash: Or,
4608
- hash2: Zr,
4609
- hash3: jr,
4608
+ hash2: jr,
4609
+ hash3: Zr,
4610
4610
  hash4: Aa,
4611
4611
  hashFloat: kI,
4612
4612
  hashVec2: NI,
@@ -4644,13 +4644,13 @@ const bh = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4644
4644
  literalZero: Yt,
4645
4645
  log: Bl,
4646
4646
  log2: Ql,
4647
- mat2: jl,
4647
+ mat2: Zl,
4648
4648
  mat3: AI,
4649
4649
  mat4: tI,
4650
- max: jn,
4650
+ max: Zn,
4651
4651
  min: dl,
4652
4652
  mix: Ai,
4653
- mod: Zn,
4653
+ mod: jn,
4654
4654
  modf: rl,
4655
4655
  mul: iA,
4656
4656
  neg: is,
@@ -4666,7 +4666,7 @@ const bh = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4666
4666
  outer: EI,
4667
4667
  outputPackedSplat: An,
4668
4668
  outputRgba8: ag,
4669
- packHalf2x16: ji,
4669
+ packHalf2x16: Zi,
4670
4670
  packSnorm2x16: nI,
4671
4671
  packUnorm2x16: rI,
4672
4672
  pcgHash: FI,
@@ -4687,7 +4687,7 @@ const bh = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4687
4687
  select: rs,
4688
4688
  sign: ol,
4689
4689
  sin: ze,
4690
- sinh: jI,
4690
+ sinh: ZI,
4691
4691
  smoothstep: ml,
4692
4692
  split: Qt,
4693
4693
  splitGsplat: ut,
@@ -4702,7 +4702,7 @@ const bh = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4702
4702
  texture: zI,
4703
4703
  textureSize: _I,
4704
4704
  transformDir: ha,
4705
- transformGsplat: je,
4705
+ transformGsplat: Ze,
4706
4706
  transformPos: ua,
4707
4707
  transformQuat: TI,
4708
4708
  transpose: fI,
@@ -4719,7 +4719,7 @@ const bh = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4719
4719
  unpackUnorm2x16: aI,
4720
4720
  uvec2: Wl,
4721
4721
  uvec3: Ol,
4722
- uvec4: Zl,
4722
+ uvec4: jl,
4723
4723
  valType: $,
4724
4724
  vec2: Xi,
4725
4725
  vec3: Bt,
@@ -5583,7 +5583,7 @@ class xt {
5583
5583
  }
5584
5584
  // Apply the transform to a Gsplat in a dyno program.
5585
5585
  applyGsplat(A) {
5586
- return je(A, {
5586
+ return Ze(A, {
5587
5587
  scale: this.scale,
5588
5588
  rotate: this.rotate,
5589
5589
  translate: this.translate
@@ -5708,6 +5708,35 @@ const st = class st extends Kt {
5708
5708
  dispose() {
5709
5709
  this.packedSplats.dispose();
5710
5710
  }
5711
+ // Returns axis-aligned bounding box of the SplatMesh. If centers_only is true,
5712
+ // only the centers of the splats are used to compute the bounding box.
5713
+ // IMPORTANT: This should only be called after the SplatMesh is initialized.
5714
+ getBoundingBox(A = !0) {
5715
+ if (!this.initialized)
5716
+ throw new Error(
5717
+ "Cannot get bounding box before SplatMesh is initialized"
5718
+ );
5719
+ const e = new u.Vector3(
5720
+ Number.POSITIVE_INFINITY,
5721
+ Number.POSITIVE_INFINITY,
5722
+ Number.POSITIVE_INFINITY
5723
+ ), s = new u.Vector3(
5724
+ Number.NEGATIVE_INFINITY,
5725
+ Number.NEGATIVE_INFINITY,
5726
+ Number.NEGATIVE_INFINITY
5727
+ ), n = new u.Vector3(), i = [-1, 1];
5728
+ return this.packedSplats.forEachSplat(
5729
+ (a, o, c, l, g, I) => {
5730
+ if (A)
5731
+ e.min(o), s.max(o);
5732
+ else
5733
+ for (const h of i)
5734
+ for (const B of i)
5735
+ for (const C of i)
5736
+ n.set(h * c.x, B * c.y, C * c.z), n.applyQuaternion(l), n.add(o), e.min(n), s.max(n);
5737
+ }
5738
+ ), new u.Box3(e, s);
5739
+ }
5711
5740
  constructGenerator(A) {
5712
5741
  const { transform: e, viewToObject: s, recolor: n } = A, i = MA(
5713
5742
  { index: "int" },
@@ -6249,9 +6278,9 @@ const St = class St {
6249
6278
  max_z: H,
6250
6279
  min_scale_x: O,
6251
6280
  min_scale_y: _,
6252
- min_scale_z: Z,
6281
+ min_scale_z: j,
6253
6282
  max_scale_x: P,
6254
- max_scale_y: j,
6283
+ max_scale_y: Z,
6255
6284
  max_scale_z: G,
6256
6285
  min_r: fA,
6257
6286
  min_g: cA,
@@ -6269,9 +6298,9 @@ const St = class St {
6269
6298
  max_z: H,
6270
6299
  min_scale_x: O,
6271
6300
  min_scale_y: _,
6272
- min_scale_z: Z,
6301
+ min_scale_z: j,
6273
6302
  max_scale_x: P,
6274
- max_scale_y: j,
6303
+ max_scale_y: Z,
6275
6304
  max_scale_z: G,
6276
6305
  min_r: fA,
6277
6306
  min_g: cA,
@@ -6312,17 +6341,17 @@ const St = class St {
6312
6341
  max_scale_z: H,
6313
6342
  min_r: O,
6314
6343
  min_g: _,
6315
- min_b: Z,
6344
+ min_b: j,
6316
6345
  max_r: P,
6317
- max_g: j,
6346
+ max_g: Z,
6318
6347
  max_b: G
6319
- } = m, { packed_position: fA, packed_rotation: cA, packed_scale: pA, packed_color: dA } = y, xA = (fA >>> 21 & 2047) / 2047 * (U - N) + N, hA = (fA >>> 11 & 1023) / 1023 * (F - M) + M, RA = (fA & 2047) / 2047 * (b - S) + S, SA = ((cA >>> 20 & 1023) / 1023 - 0.5) * D, OA = ((cA >>> 10 & 1023) / 1023 - 0.5) * D, ZA = ((cA & 1023) / 1023 - 0.5) * D, Y = Math.sqrt(Math.max(0, 1 - SA * SA - OA * OA - ZA * ZA)), EA = cA >>> 30, VA = EA === 0 ? SA : EA === 1 ? Y : OA, Ut = EA <= 1 ? OA : EA === 2 ? Y : ZA, Zt = EA <= 2 ? ZA : Y, DA = EA === 0 ? Y : SA, z = Math.exp(
6348
+ } = m, { packed_position: fA, packed_rotation: cA, packed_scale: pA, packed_color: dA } = y, xA = (fA >>> 21 & 2047) / 2047 * (U - N) + N, hA = (fA >>> 11 & 1023) / 1023 * (F - M) + M, RA = (fA & 2047) / 2047 * (b - S) + S, SA = ((cA >>> 20 & 1023) / 1023 - 0.5) * D, OA = ((cA >>> 10 & 1023) / 1023 - 0.5) * D, jA = ((cA & 1023) / 1023 - 0.5) * D, Y = Math.sqrt(Math.max(0, 1 - SA * SA - OA * OA - jA * jA)), EA = cA >>> 30, VA = EA === 0 ? SA : EA === 1 ? Y : OA, Ut = EA <= 1 ? OA : EA === 2 ? Y : jA, jt = EA <= 2 ? jA : Y, DA = EA === 0 ? Y : SA, z = Math.exp(
6320
6349
  (pA >>> 21 & 2047) / 2047 * (L - T) + T
6321
6350
  ), PA = Math.exp(
6322
6351
  (pA >>> 11 & 1023) / 1023 * (eA - R) + R
6323
6352
  ), de = Math.exp(
6324
6353
  (pA & 2047) / 2047 * (H - W) + W
6325
- ), ye = (dA >>> 24 & 255) / 255 * ((P ?? 1) - (O ?? 0)) + (O ?? 0), we = (dA >>> 16 & 255) / 255 * ((j ?? 1) - (_ ?? 0)) + (_ ?? 0), me = (dA >>> 8 & 255) / 255 * ((G ?? 1) - (Z ?? 0)) + (Z ?? 0), xe = (dA & 255) / 255;
6354
+ ), ye = (dA >>> 24 & 255) / 255 * ((P ?? 1) - (O ?? 0)) + (O ?? 0), we = (dA >>> 16 & 255) / 255 * ((Z ?? 1) - (_ ?? 0)) + (_ ?? 0), me = (dA >>> 8 & 255) / 255 * ((G ?? 1) - (j ?? 0)) + (j ?? 0), xe = (dA & 255) / 255;
6326
6355
  A(
6327
6356
  x,
6328
6357
  xA,
@@ -6333,7 +6362,7 @@ const St = class St {
6333
6362
  de,
6334
6363
  VA,
6335
6364
  Ut,
6336
- Zt,
6365
+ jt,
6337
6366
  DA,
6338
6367
  xe,
6339
6368
  ye,
@@ -6371,11 +6400,11 @@ const St = class St {
6371
6400
  } = E.properties;
6372
6401
  if (!f || !p || !d)
6373
6402
  throw new Error("Missing PLY properties: x, y, z");
6374
- const eA = w && D && x, H = y && m && N && M, O = L != null ? ee[L.type] : 1, _ = T != null ? ee[T.type] : 1, Z = R != null ? ee[R.type] : 1, P = W != null ? ee[W.type] : 1;
6375
- return i = Bs(E.properties), I(), (j, G) => {
6376
- const fA = eA ? Math.exp(G.scale_0) : St.defaultPointScale, cA = eA ? Math.exp(G.scale_1) : St.defaultPointScale, pA = eA ? Math.exp(G.scale_2) : St.defaultPointScale, dA = H ? G.rot_1 : 0, xA = H ? G.rot_2 : 0, hA = H ? G.rot_3 : 0, RA = H ? G.rot_0 : 1, SA = S != null ? 1 / (1 + Math.exp(-G.opacity)) : L != null ? G.alpha / O : 1, OA = U != null ? G.f_dc_0 * Ae + 0.5 : T != null ? G.red / _ : 1, ZA = F != null ? G.f_dc_1 * Ae + 0.5 : R != null ? G.green / Z : 1, Y = b != null ? G.f_dc_2 * Ae + 0.5 : W != null ? G.blue / P : 1;
6403
+ const eA = w && D && x, H = y && m && N && M, O = L != null ? ee[L.type] : 1, _ = T != null ? ee[T.type] : 1, j = R != null ? ee[R.type] : 1, P = W != null ? ee[W.type] : 1;
6404
+ return i = Bs(E.properties), I(), (Z, G) => {
6405
+ const fA = eA ? Math.exp(G.scale_0) : St.defaultPointScale, cA = eA ? Math.exp(G.scale_1) : St.defaultPointScale, pA = eA ? Math.exp(G.scale_2) : St.defaultPointScale, dA = H ? G.rot_1 : 0, xA = H ? G.rot_2 : 0, hA = H ? G.rot_3 : 0, RA = H ? G.rot_0 : 1, SA = S != null ? 1 / (1 + Math.exp(-G.opacity)) : L != null ? G.alpha / O : 1, OA = U != null ? G.f_dc_0 * Ae + 0.5 : T != null ? G.red / _ : 1, jA = F != null ? G.f_dc_1 * Ae + 0.5 : R != null ? G.green / j : 1, Y = b != null ? G.f_dc_2 * Ae + 0.5 : W != null ? G.blue / P : 1;
6377
6406
  if (A(
6378
- j,
6407
+ Z,
6379
6408
  G.x,
6380
6409
  G.y,
6381
6410
  G.z,
@@ -6388,7 +6417,7 @@ const St = class St {
6388
6417
  RA,
6389
6418
  SA,
6390
6419
  OA,
6391
- ZA,
6420
+ jA,
6392
6421
  Y
6393
6422
  ), e && c) {
6394
6423
  if (c)
@@ -6400,7 +6429,7 @@ const St = class St {
6400
6429
  if (g)
6401
6430
  for (const [EA, VA] of o.entries())
6402
6431
  g[EA] = G[VA];
6403
- e(j, c, l, g);
6432
+ e(Z, c, l, g);
6404
6433
  }
6405
6434
  };
6406
6435
  };
@@ -6550,7 +6579,7 @@ function Bs(t) {
6550
6579
  throw new Error(`Unsupported number of SH coefficients: ${A}`);
6551
6580
  return e;
6552
6581
  }
6553
- const qa = '(function(){"use strict";let xA;const ss=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&ss.decode();let jA=null;function Vs(){return(jA===null||jA.byteLength===0)&&(jA=new Uint8Array(xA.memory.buffer)),jA}function js(e,A){return e=e>>>0,ss.decode(Vs().subarray(e,e+A))}function Os(e,A,t){return xA.sort_splats(e,A,t)>>>0}function $s(e,A,t){return xA.sort32_splats(e,A,t)>>>0}async function Ae(e,A){if(typeof Response=="function"&&e instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(e,A)}catch(s){if(e.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n",s);else throw s}const t=await e.arrayBuffer();return await WebAssembly.instantiate(t,A)}else{const t=await WebAssembly.instantiate(e,A);return t instanceof WebAssembly.Instance?{instance:t,module:e}:t}}function te(){const e={};return e.wbg={},e.wbg.__wbg_buffer_609cc3eee51ed158=function(A){return A.buffer},e.wbg.__wbg_length_3b4f022188ae8db6=function(A){return A.length},e.wbg.__wbg_length_6ca527665d89694d=function(A){return A.length},e.wbg.__wbg_length_8cfd2c6409af88ad=function(A){return A.length},e.wbg.__wbg_new_9fee97a409b32b68=function(A){return new Uint16Array(A)},e.wbg.__wbg_new_e3b321dcfef89fc7=function(A){return new Uint32Array(A)},e.wbg.__wbg_newwithbyteoffsetandlength_e6b7e69acd4c7354=function(A,t,s){return new Float32Array(A,t>>>0,s>>>0)},e.wbg.__wbg_newwithbyteoffsetandlength_f1dead44d1fc7212=function(A,t,s){return new Uint32Array(A,t>>>0,s>>>0)},e.wbg.__wbg_newwithlength_5a5efe313cfd59f1=function(A){return new Float32Array(A>>>0)},e.wbg.__wbg_set_10bad9bee0e9c58b=function(A,t,s){A.set(t,s>>>0)},e.wbg.__wbg_set_d23661d19148b229=function(A,t,s){A.set(t,s>>>0)},e.wbg.__wbg_set_f4f1f0daa30696fc=function(A,t,s){A.set(t,s>>>0)},e.wbg.__wbg_subarray_3aaeec89bb2544f0=function(A,t,s){return A.subarray(t>>>0,s>>>0)},e.wbg.__wbg_subarray_769e1e0f81bb259b=function(A,t,s){return A.subarray(t>>>0,s>>>0)},e.wbg.__wbindgen_init_externref_table=function(){const A=xA.__wbindgen_export_0,t=A.grow(4);A.set(0,void 0),A.set(t+0,void 0),A.set(t+1,null),A.set(t+2,!0),A.set(t+3,!1)},e.wbg.__wbindgen_memory=function(){return xA.memory},e.wbg.__wbindgen_throw=function(A,t){throw new Error(js(A,t))},e}function se(e,A){return xA=e.exports,es.__wbindgen_wasm_module=A,jA=null,xA.__wbindgen_start(),xA}async function es(e){if(xA!==void 0)return xA;typeof e<"u"&&(Object.getPrototypeOf(e)===Object.prototype?{module_or_path:e}=e:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof e>"u"&&(e=new URL("data:application/wasm;base64,AGFzbQEAAAABzAEeYAJ/fwF/YAJ/fwBgA39/fwF/YAF/AX9gA39/fwBgAX8AYAV/f39/fwBgA29/fwFvYAV/f39/fwF/YAFvAW9gA29vfwBgAW8Bf2AAAX9gBH9/f38AYAAAYAR/f39/AX9gA39vbwF/YAF/AW9gAAFvYAF9AX1gBn9/f39/fwBgDX19fX19fX19f29/fX0Bb2AGf39/f39/AX9gBX9/fH9/AGAEf3x/fwBgBX9/fX9/AGAEf31/fwBgBX9/fn9/AGAEf35/fwBgAn19AX0C8gQRA3diZx1fX3diZ19idWZmZXJfNjA5Y2MzZWVlNTFlZDE1OAAJA3diZxpfX3diZ19uZXdfOWZlZTk3YTQwOWIzMmI2OAAJA3diZxpfX3diZ19zZXRfZjRmMWYwZGFhMzA2OTZmYwAKA3diZx1fX3diZ19sZW5ndGhfOGNmZDJjNjQwOWFmODhhZAALA3diZzFfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF9mMWRlYWQ0NGQxZmM3MjEyAAcDd2JnGl9fd2JnX25ld19lM2IzMjFkY2ZlZjg5ZmM3AAkDd2JnGl9fd2JnX3NldF9kMjM2NjFkMTkxNDhiMjI5AAoDd2JnHV9fd2JnX2xlbmd0aF82Y2E1Mjc2NjVkODk2OTRkAAsDd2JnMV9fd2JnX25ld3dpdGhieXRlb2Zmc2V0YW5kbGVuZ3RoX2U2YjdlNjlhY2Q0YzczNTQABwN3YmcaX193Ymdfc2V0XzEwYmFkOWJlZTBlOWM1OGIACgN3YmcdX193YmdfbGVuZ3RoXzNiNGYwMjIxODhhZThkYjYACwN3YmcfX193Ymdfc3ViYXJyYXlfNzY5ZTFlMGY4MWJiMjU5YgAHA3diZx9fX3diZ19zdWJhcnJheV8zYWFlZWM4OWJiMjU0NGYwAAcDd2JnJF9fd2JnX25ld3dpdGhsZW5ndGhfNWE1ZWZlMzEzY2ZkNTlmMQARA3diZxBfX3diaW5kZ2VuX3Rocm93AAEDd2JnEV9fd2JpbmRnZW5fbWVtb3J5ABIDd2JnH19fd2JpbmRnZW5faW5pdF9leHRlcm5yZWZfdGFibGUADgNhYAMAAQIIBQQCEwEMAAEBAgAAAQwBBAYFBQQAAQYFFAENBAAGBQQEAQQOAgECAQAIBAAVARYG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ACIDKAIEQXhxRgRAIAMhAgwBCyABQRkgAkEBdmtBACACQR9HG3QhBQNAIAMgBUEddkEEcWpBEGoiBCgCACICRQ0CIAVBAXQhBSACIQMgAigCBEF4cSABRw0ACwsgAigCCCIBIAA2AgwgAiAANgIIIABBADYCGCAAIAI2AgwgACABNgIIDwsgBCAANgIAIAAgAzYCGCAAIAA2AgwgACAANgIIC/MCAQR/IwBBMGsiACQAAkACQEGQksAAKAIARQRAQaiSwAAoAgAhAUGoksAAQQA2AgAgAUUNASAAQRhqIAERBQAgAEEQaiICIABBJGopAgA3AwAgACAAKQIcNwMIIAAoAhghAUGQksAAKAIAIgMNAgJAIANFDQBBlJLAACgCACICRQ0AQZiSwAAoAgAgAkECdBBlC0GUksAAIAE2AgBBkJLAAEEBNgIAQZiSwAAgACkDCDcCAEGgksAAIABBEGopAwA3AgALIABBMGokAEGUksAADwsgAEEANgIoIABBATYCHCAAQaCHwAA2AhggAEIENwIgIABBGGpBiIjAABBDAAsgAEEoaiACKQMANwIAIAAgACkDCDcCICAAIAE2AhwgAEEBNgIYAkAgAEEYaiIBKAIARQ0AIAEoAgQiAkUNACABKAIIIAJBAnQQZQsgAEEANgIoIABBATYCHCAAQaiIwAA2AhggAEIENwIgIAFBsIjAABBDAAuoAgIDfwF+IwBBQGoiAiQAIAEoAgBBgICAgHhGBEAgASgCDCEDIAJBJGoiBEEANgIAIAJCgICAgBA3AhwgAkEwaiADKAIAIgNBCGopAgA3AwAgAkE4aiADQRBqKQIANwMAIAIgAykCADcDKCACQRxqQcCIwAAgAkEoahAYGiACQRhqIAQoAgAiAzYCACACIAIpAhwiBTcDECABQQhqIAM2AgAgASAFNwIACyABKQIAIQUgAUKAgICAEDcCACACQQhqIgMgAUEIaiIBKAIANgIAIAFBADYCAEGxk8AALQAAGiACIAU3AwBBDEEEEF0iAUUEQEEEQQwQbQALIAEgAikDADcCACABQQhqIAMoAgA2AgAgAEHgisAANgIEIAAgATYCACACQUBrJAAL0gECBH8BfiMAQSBrIgMkACABIAEgAmoiAksEQEEAQQAQUgALQQggACgCACIEQQF0IgEgAiABIAJLGyICIAJBCEkb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QQRqrUKAgICA4ACENwMoIAEgAa1CgICAgOAAhDcDICABIAFBIGo2AhAgAUEIakHIj8AAEEMAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQfyNwAA2AgggA0ICNwIUIANCgICAgOAAIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhBDAAtpAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0H4kcAANgIIIANCAjcCFCADQoCAgIDgACIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQQwALZgAjAEEwayIAJABBsJPAAC0AAARAIABBAjYCDCAAQbCKwAA2AgggAEIBNwIUIAAgATYCLCAAIABBLGqtQoCAgIDgAIQ3AyAgACAAQSBqNgIQIABBCGpB0IrAABBDAAsgAEEwaiQAC5QBAgN/AW8jAEEgayIDJAAgAyAAKAIAEHAiBDYCACADIAI2AgQgAiAERwRAIANBADYCCCADIANBBGogA0EIahBAAAsQWyIEEFMiBSUBEAUhBhAbIgIgBiYBIAVBhAFPBEAgBRAtCyACIAAoAgAgAUECdhBkIAJBhAFPBEAgAhAtCyAEQYQBTwRAIAQQLQsgA0EgaiQAC08BAX8jAEEwayIAJAAgAEEBNgIMIABBwI3AADYCCCAAQgE3AhQgACAAQS9qrUKAgICAoAWENwMgIAAgAEEgajYCECAAQQhqQcSBwAAQQwALQQEBfyACIAAoAgAgACgCCCIDa0sEQCAAIAMgAhAlIAAoAgghAwsgACgCBCADaiABIAIQHxogACACIANqNgIIQQALTQECf0Gxk8AALQAAGiABKAIEIQIgASgCACEDQQhBBBBdIgFFBEBBBEEIEG0ACyABIAI2AgQgASADNgIAIABB8IrAADYCBCAAIAE2AgALQQEBfyACIAAoAgAgACgCCCIDa0sEQCAAIAMgAhApIAAoAgghAwsgACgCBCADaiABIAIQHxogACACIANqNgIIQQALQQEBfyMAQSBrIgIkACACQQA2AhAgAkEBNgIEIAJCBDcCCCACQS42AhwgAiAANgIYIAIgAkEYajYCACACIAEQQwALswIBA38gACgCACECIAEoAhwiAEEQcUUEQCAAQSBxRQRAIAIgARBnDwtBACEAIwBBgAFrIgQkACACKAIAIQIDQCAAIARqQf8AaiACQQ9xIgNBMHIgA0E3aiADQQpJGzoAACAAQQFrIQAgAkEQSSACQQR2IQJFDQALIABBgAFqIgJBgQFPBEAgAhA0AAsgAUHYj8AAQQIgACAEakGAAWpBACAAaxAVIARBgAFqJAAPC0EAIQAjAEGAAWsiBCQAIAIoAgAhAgNAIAAgBGpB/wBqIAJBD3EiA0EwciADQdcAaiADQQpJGzoAACAAQQFrIQAgAkEQSSACQQR2IQJFDQALIABBgAFqIgJBgQFPBEAgAhA0AAsgAUHYj8AAQQIgACAEakGAAWpBACAAaxAVIARBgAFqJAALOAACQCACQYCAxABGDQAgACACIAEoAhARAABFDQBBAQ8LIANFBEBBAA8LIAAgAyAEIAEoAgwRAgAL0AIBAX8jAEEQayIDJAAgAyABNgIMIAMgADYCCCMAQfAAayIAJAAgAEG0hsAANgIMIAAgA0EIajYCCCAAQbSGwAA2AhQgACADQQxqNgIQIABBjI7AADYCGCAAQQI2AhwCQCACKAIARQRAIABBAzYCXCAAQciOwAA2AlggAEIDNwJkIAAgAEEQaq1CgICAgLAFhDcDSCAAIABBCGqtQoCAgICwBYQ3A0AMAQsgAEEwaiACQRBqKQIANwMAIABBKGogAkEIaikCADcDACAAIAIpAgA3AyAgAEEENgJcIABB/I7AADYCWCAAQgQ3AmQgACAAQRBqrUKAgICAsAWENwNQIAAgAEEIaq1CgICAgLAFhDcDSCAAIABBIGqtQoCAgIDQBYQ3A0ALIAAgAEEYaq1CgICAgMAFhDcDOCAAIABBOGo2AmAgAEHYAGpBpIbAABBDAAuyAQECfyMAQRBrIgAkACABKAIUQYCKwABBCyABKAIYKAIMEQIAIQMgAEEIaiICQQA6AAUgAiADOgAEIAIgATYCACACIgEtAAQhAiABLQAFBEAgAQJ/QQEgAkEBcQ0AGiABKAIAIgEtABxBBHFFBEAgASgCFEGxj8AAQQIgASgCGCgCDBECAAwBCyABKAIUQbCPwABBASABKAIYKAIMEQIACyICOgAECyACQQFxIABBEGokAAvrEgIYfxB9EBsiDiAJJgEjAEGAAWsiDSQAIA0gDjYCLCANIAg2AiggDSAHOAIkIA0gBjgCICANIAU4AhwgDSAEOAIYIA0gAzgCFCANIAI4AhAgDSABOAIMIA0gADgCCCANIApBAEc6ADMgDSALOAI0IA0gDDgCOCANQQA2AkQgDUKAgICAwAA3AjwgDSANQThqNgJ8IA0gDUE0ajYCeCANIA1BJGo2AnQgDSANQSBqNgJwIA0gDUEcajYCbCANIA1BGGo2AmggDSANQRRqNgJkIA0gDUEQajYCYCANIA1BDGo2AlwgDSANQQhqNgJYIA0gDUE8ajYCVCANIA1BM2o2AlAgDSANQSxqNgJMIA0gDUEoajYCSCANQcgAaiIYIQgjAEEgayIQJAACQEEAQYiAwAAoAgARAwAiEwRAIBMoAgBFBEAgCCgCNCEZIAgoAjAhGiAIKAIsIRsgCCgCKCEcIAgoAiQhHSAIKAIgIR4gCCgCHCEfIAgoAhghICAIKAIUISEgCCgCECEiIAgoAgwhESAIKAIIISMgCCgCBCEkIAgoAgAhFiATQX82AgAgEyAWKAIAIggEfyATQQxqKAIAIRcgE0EIaigCACEKQQAhDgNAIBAgJCAOQQJ0IA5BgIAEIAggDmsiCCAIQYCABE8bIghqIhRBAnQQZjYCDAJAAkAgFyAIQQJ0Ig5PBEAgEEEMaiAKIA4QOCAZKgIAIQAgGioCACEDIBsqAgAhLyAcKgIAITAgHSoCACEEIB4qAgAhBSAfKgIAIQYgICoCACExICEqAgAhMiAiKgIAITMgIy0AAA0BIAAgA5NDAAB+Q5UhACAGIAaUIAUgBZSSIAQgBJSSIQsgCiEIA0AgDkEEIA5BBEkiDxshEgJAIAgtAAOzQwAAf0OVQ83MzD1dDQAgEEEQaiAIIBIQFwJ9AkAgD0UEQCAQKgIYIQEgECoCFCECIBAqAhAhB0MAAAAAIQxDAAAAACElIAgoAgwiD0H/AXEEQCADIAAgD0EBa0H/AXGzlJIQGSElCyAPQQh2IhVB/wFxBEAgAyAAIBVBAWtB/wFxs5SSEBkhDAsgMSABkyEBIDIgApMhAiAzIAeTIQcgD0EQdiIPQf8BcQ0BQwAAAAAMAgtBAyASQZSCwAAQNQALIAMgACAPQQFrQf8BcbOUkhAZCyEpIAYgB5QgBSAClJIgBCABlJIiJiAmlCALIAcgB5QgAiAClJIgASABlJIgJSAMkiApkkMAAEBAlSIBIAGUk5STIgFDAAAAAF0NACAmjCABkZMgC5UiASAwYEUgASAvX0VyDQAgESgCCCIPIBEoAgBGBEAgERAnCyARKAIEIA9BAnRqIAE4AgAgESAPQQFqNgIICyAIIBJBAnRqIQggDiASayIODQALDAILIA4gF0GIg8AAEDYACyAAIAOTQwAAfkOVISwgCiEIA0AgDkEEIA5BBEkiDxshEgJAIAgtAAOzQwAAf0OVQ83MzD1dDQAgEEEQaiAIIBIQFwJ9AkAgD0UEQCAQKgIYIQAgECoCFCEBIBAqAhAhAkMAAAAAIQdDAAAAACELIAgoAgwiD0H/AXEEQCADICwgD0EBa0H/AXGzlJIQGSELCyAPQQh2IhVB/wFxBEAgAyAsIBVBAWtB/wFxs5SSEBkhBwsgMSAAkyEnIDIgAZMhLSAzIAKTIS4gD0EQdiIVQf8BcQ0BQwAAAAAMAgtBAyASQZSCwAAQNQALIAMgLCAVQQFrQf8BcbOUkhAZCyEMIAQgCCgCCCIVQRh1skMAAP5ClSIAIAUgD0EYdbJDAAD+QpUiAZQgBCAAlJMiKJQgFUEQdsCyQwAA/kKVIgIgBCAClCAGIAGUkyIqlJMgBiAAlCAFIAKUkyIrQwAAgD8gAiAClJMgACAAlJMgASABlJNDAAAAABBQkSIllJIiJiAmkpIhJiAFIAIgK5QgASAolJMgKiAllJIiKSApkpIhKSAGIAEgKpQgACArlJMgKCAllJIiKCAokpIhKCAnIAAgLSABlCAnIACUkyIqlCACICcgApQgLiABlJMiK5STIC4gAJQgLSAClJMiNCAllJIiJyAnkpIhJyAtIAIgNJQgASAqlJMgKyAllJIiAiACkpIhAiAuIAEgK5QgACA0lJMgKiAllJIiACAAkpIhAAJAIAwgCyAHEFAgDBBQQwrXIzyUIgFdRQRAIAEgB15FBEAgASALXkUEQEMAAIA/IAyVIgwgJ5QiASAMICaUIgyUQwAAgD8gC5UiCyAAlCIAIAsgKJQiC5RDAACAPyAHlSIHIAKUIgIgByAplCIHlJKSIiUgJZQgDCAMlCALIAuUIAcgB5SSkiIHIAEgAZQgACAAlCACIAKUkpJDAACAv5KUkyIAQwAAAABdDQQgJYwgAJGTIAeVIQAMAwsgKItDvTeGNV0NAyACICkgAIwgKJUiAJSSIAeVIgEgAZQgJyAmIACUkiAMlSIBIAGUkkMAAIA/XkUNAgwDCyApi0O9N4Y1XQ0CIAAgKCACjCAplSIAlJIgC5UiASABlCAnICYgAJSSIAyVIgEgAZSSQwAAgD9eDQIMAQsgJotDvTeGNV0NASAAICggJ4wgJpUiAJSSIAuVIgEgAZQgAiApIACUkiAHlSIBIAGUkkMAAIA/Xg0BCyAAIDBgRSAAIC9fRXINACARKAIIIg8gESgCAEYEQCARECcLIBEoAgQgD0ECdGogADgCACARIA9BAWo2AggLIAggEkECdGohCCAOIBJrIg4NAAsLIBAoAgwiCEGEAU8EQCAIEC0LIBYoAgAiCCAUIg5LDQALIBMoAgBBAWoFQQALNgIAIBBBIGokAAwCCxA5AAtBnIDAAEHGACAQQR9qQYyAwABBtIHAABAzAAsgDSgCRBANIQkQGyIIIAkmASANIAg2AkggDSgCQCERIA0oAkQhDiMAQSBrIgokACAYKAIAIhMlARAKIRQgCiAONgIEIAogFDYCAAJAIA4gFEYEQBBbIhQQUyIQJQEgESAOEAghCRAbIg4gCSYBIBRBhAFPBEAgFBAtCyAQQYQBTwRAIBAQLQsgEyUBIA4lAUEAEAkgDkGEAU8EQCAOEC0LIApBIGokAAwBCyAKQQA2AgggCiAKQQRqIApBCGoQQAALIA0oAjwiCgRAIA0oAkAgCkECdBBlCyANKAIsIgpBhAFPBEAgChAtCyANQYABaiQAIAglASAIEC0L+gECAn8BfiMAQRBrIgIkACACQQE7AQwgAiABNgIIIAIgADYCBCMAQRBrIgEkACACQQRqIgApAgAhBCABIAA2AgwgASAENwIEIwBBEGsiACQAIAFBBGoiASgCACICKAIMIQMCQAJAAkACQCACKAIEDgIAAQILIAMNAUEBIQJBACEDDAILIAMNACACKAIAIgIoAgQhAyACKAIAIQIMAQsgAEGAgICAeDYCACAAIAE2AgwgAEGci8AAIAEoAgQgASgCCCIALQAIIAAtAAkQLAALIAAgAzYCBCAAIAI2AgAgAEGAi8AAIAEoAgQgASgCCCIALQAIIAAtAAkQLAALJAAgAEUEQEHEhsAAQTIQaAALIAAgAiADIAQgBSABKAIQEQgACyIAIABFBEBBxIbAAEEyEGgACyAAIAIgAyAEIAEoAhARDQALIgAgAEUEQEHEhsAAQTIQaAALIAAgAiADIAQgASgCEBEPAAsiACAARQRAQcSGwABBMhBoAAsgACACIAMgBCABKAIQERgACyIAIABFBEBBxIbAAEEyEGgACyAAIAIgAyAEIAEoAhARGgALIgAgAEUEQEHEhsAAQTIQaAALIAAgAiADIAQgASgCEBEcAAslAQF/IAAoAgAiAUGAgICAeHJBgICAgHhHBEAgACgCBCABEGULCyAAIABFBEBBxIbAAEEyEGgACyAAIAIgAyABKAIQEQQACx4AIABFBEBBxIbAAEEyEGgACyAAIAIgASgCEBEAAAuvDwEPfxAbIgMgASYBEBsiBCACJgEjAEEgayIKJAAgCiAENgIIIAogAzYCBCAKIAA2AgAgCiAKQQRqIgAoAgAQbzYCDCAKIApBCGo2AhwgCiAKNgIYIAogADYCFCAKIApBDGo2AhAgCkEQaiEAIwBB0ABrIgckAAJAAkACQAJAQQBBgIDAACgCABEDACINBEAgDSgCAEUEQCAAKAIMIREgDUF/NgIAIAAoAgQgACgCCCEOIAAoAgAoAgAiBiANQQRqIgQoAggiA0sEQCAGIAMiAGsiCSAEKAIAIABrSwRAIAQgACAJQQJBAhAmIAQoAgghAAsgBCgCBCIMIABBAXRqIQUgCUECTwRAIAUgA0F/cyAGakEBdBAqGiAAIAZqQQF0IANBAXRrIAxqQQJrIQUgACAJakEBayEACyAFQQA7AQAgBCAAQQFqNgIICyAEKAIUIgMgBkkEQCAGIAMiAGsiCSAEKAIMIABrSwRAIARBDGogACAJQQRBBBAmIAQoAhQhAAsgBCgCECIMIABBAnRqIQUgCUECTwRAIAUgA0F/cyAGakECdBAqGiAAIAZqQQJ0IANBAnRrIAxqQQRrIQUgACAJakEBayEACyAFQQA2AgAgBCAAQQFqNgIUCyAEKAIgIgNBgPgBTQRAQYH4ASADIgBrIgUgBCgCGCAAa0sEQCAEQRhqIAAgBUEEQQQQJiAEKAIgIQALIAQoAhwiBiAAQQJ0IglqIQUgA0GA+AFHBH8gBUGA4AcgA0ECdCIFaxAqGiAAIANrQYD4AWohACAJIAVrIAZqQYDgB2oFIAULQQA2AgAgBCAAQQFqNgIgCygCACUBQQAgDigCACIJEAshARAbIgAgASYBIAcgADYCACAJIA0oAgwiAEsNAiANKAIIIQgjAEEgayIAJAAgACAHKAIAEG8iAzYCACAAIAk2AgQgAyAJRwRAIABBADYCCCAAIABBBGogAEEIahBAAAsQWyIFEFMiBiUBEAEhARAbIgMgASYBIAZBhAFPBEAgBhAtCyADJQEgBygCACUBIAhBAXYQAiADQYQBTwRAIAMQLQsgBUGEAU8EQCAFEC0LIABBIGokACAHQQRqIRBBACEAQQAhBSMAQTBrIgYkAAJAAkACQAJAIAkgBCgCCCIDTQRAIAQoAgQhAyAEQQA2AiAgBCgCGEGA+AFNBEAgBEEYakEAQYH4AUEEQQQQJiAEKAIgIQALIAQoAhwiDiAAQQJ0Ig9qQYDgBxAqIAQgAEGB+AFqIgw2AiBBgOAHakEANgIAAkAgCQRAIAlBAXQhCCADIQADQCAALwEAIgtBgPgBSQRAIAsgDE8NAyAOIAtBAnRqIgsgCygCAEEBajYCAAsgAEECaiEAIAhBAmsiCA0ACwsgBkEANgIEAkAgDEECSQ0AIA4gDEECdGpBCGsiACgCACEFIABBADYCACAGIAU2AgQgACAORg0AIA9B+N8HaiILQQJ2QQFqQQNxIggEQCAIQQJ0IQgDQCAAQQRrIgAoAgAhDyAAIAU2AgAgBiAFIA9qIgU2AgQgCEEEayIIDQALCyALQQxJDQAgAEEQayEAA0AgAEEMaiIIKAIAIQsgCCAFNgIAIAYgBSALaiIFNgIEIABBCGoiCCgCACELIAggBTYCACAGIAUgC2oiBTYCBCAAQQRqIggoAgAhCyAIIAU2AgAgBiAFIAtqIgU2AgQgACgCACEIIAAgBTYCACAGIAUgCGoiBTYCBCAAIA5GIABBEGshAEUNAAsLAkAgCQRAIAlBAXQhCCAEKAIQIQ8gBCgCFCEJQQAhAANAIAMvAQAiBEGA+AFJBEAgBCAMTw0DIAkgDiAEQQJ0aiIEKAIAIgtNBEAgCyAJQZiEwAAQNQALIA8gC0ECdGogADYCACAEIAQoAgBBAWo2AgALIANBAmohAyAAQQFqIQAgCEECayIIDQALCyAMRQ0FIA4oAgAgBUcNAyAQQYCAgIB4NgIAIBAgBTYCBAwECyAEIAxBiITAABA1AAsgCyAMQaiEwAAQNQALIAkgA0G4g8AAEDYACyAGQQI2AgwgBkH4g8AANgIIIAZCAjcCFCAGIA6tQoCAgIDgAIQ3AyggBiAGQQRqrUKAgICA4ACENwMgIAYgBkEgajYCECAQIAZBCGoQHQsgBkEwaiQADAELQQBBAEHIg8AAEDUACyAHKAIEQYCAgIB4Rw0DIAcoAggiAEUNBSAAIA0oAhgiA0sNBCANKAIUIQQgByARQQAgABBmIgM2AiggB0EoaiAEIAAQMSADQYQBSQ0FIAMQLQwFCxA5AAtBnIDAAEHGACAHQc8AakGMgMAAQbSBwAAQMwALIAkgAEHAgsAAEDYACyAHQRhqIAdBDGooAgA2AgAgByAHKQIENwMQIAdBATYCLCAHQeCCwAA2AiggB0IBNwI0IAcgB0EQaq1CgICAgMAAhDcDQCAHIAdBQGs2AjAgB0EcaiAHQShqEC8gBygCICAHKAIkEGgACyAAIANB0ILAABA2AAsgBygCACIDQYQBTwRAIAMQLQsgDSANKAIAQQFqNgIAIAdB0ABqJAAgCigCCCIDQYQBTwRAIAMQLQsgCigCBCIDQYQBTwRAIAMQLQsgCkEgaiQAIAALmA8BE38QGyIEIAEmARAbIg8gAiYBIwBBIGsiCiQAIAogDzYCCCAKIAQ2AgQgCiAANgIAIAogCkEEaiIAKAIAEHA2AgwgCiAKQQhqNgIcIAogCjYCGCAKIAA2AhQgCiAKQQxqNgIQIApBEGohACMAQdAAayIIJAACQAJAAkACQEEAQYSAwAAoAgARAwAiEARAIBAoAgBFBEAgACgCDCEUIBBBfzYCACAAKAIEIQQgACgCCCEPIBBBBGoiCSAAKAIAKAIAIgAQEyAIIARBACAPKAIAIgwQZjYCACAMIBAoAgwiBEsNAiAIIBAoAgggDBA4IwBBMGsiDSQAIAkgABATAkACQCAMIAkoAggiAE0EQCAJKAIEIQ8gCSgCHCEEIAkoAiAiDgRAIAQgDkECdBAqGgsgCSgCKCESIAkoAiwiEQRAIBIgEUECdBAqGgsgDARAIAxBAnQhBSAPIQADQAJAIAAoAgAiA0GAgID8B08NACAOIANBf3MiC0H//wNxIgNLBEAgBCADQQJ0aiIDIAMoAgBBAWo2AgAgESALQRB2IgNLBEAgEiADQQJ0aiIDIAMoAgBBAWo2AgAMAgsgAyARQbiFwAAQNQALIAMgDkGohcAAEDUACyAAQQRqIQAgBUEEayIFDQALCyAORQRAQQAhBQwDCyAOQQFrQf////8DcSIAQQFqIgVBB3EhAyAAQQdJBEBBACEFIAQhAAwCCyAFQfj///8HcSELQQAhBSAEIQADQCAAKAIAIQYgACAFNgIAIAAoAgQhByAAIAUgBmoiBTYCBCAAKAIIIQYgACAFIAdqIgU2AgggACgCDCEHIAAgBSAGaiIFNgIMIAAoAhAhBiAAIAUgB2oiBTYCECAAKAIUIQcgACAFIAZqIgU2AhQgACgCGCEGIAAgBSAHaiIFNgIYIAAoAhwhByAAIAUgBmoiBTYCHCAAQSBqIQAgBSAHaiEFIAtBCGsiCw0ACwwBCyAMIABBuITAABA2AAsgA0UNAANAIAAoAgAhCyAAIAU2AgAgAEEEaiEAIAUgC2ohBSADQQFrIgMNAAsLIA0gBTYCBCAMBEAgDEECdCELIAkoAjQhFSAJKAI4IQZBACEDIA8hAANAAkAgACgCACIHQYCAgPwHTw0AAkAgDiAHQX9zQf//A3EiB0sEQCAEIAdBAnRqIgcoAgAiEyAGTw0BIBUgE0ECdGogAzYCACAHIAcoAgBBAWo2AgAMAgsgByAOQYiFwAAQNQALIBMgBkGYhcAAEDUACyAAQQRqIQAgA0EBaiEDIAtBBGsiCw0ACwsgCEEEaiEOAkAgEUUNACARQQFrQf////8DcSIEQQFqIgZBB3EhC0EAIQMgEiEAIARBB08EQCAGQfj///8HcSEEA0AgACgCACEGIAAgAzYCACAAKAIEIQcgACADIAZqIgM2AgQgACgCCCEGIAAgAyAHaiIDNgIIIAAoAgwhByAAIAMgBmoiAzYCDCAAKAIQIQYgACADIAdqIgM2AhAgACgCFCEHIAAgAyAGaiIDNgIUIAAoAhghBiAAIAMgB2oiAzYCGCAAKAIcIQcgACADIAZqIgM2AhwgAEEgaiEAIAMgB2ohAyAEQQhrIgQNAAsLIAtFDQADQCAAKAIAIQQgACADNgIAIABBBGohACADIARqIQMgC0EBayILDQALCwJAIAVFDQAgCSgCNCEDIAkoAjhBAnQhACAJKAIQIRMgCSgCFCELIAUhBAJAAkADQCAARQ0DIAMoAgAiCSAMTw0CIBEgDyAJQQJ0aigCAEF/c0EQdiIGSwRAIBIgBkECdGoiBigCACIHIAtPDQIgA0EEaiEDIBMgB0ECdGogCTYCACAGIAYoAgBBAWo2AgAgAEEEayEAIARBAWsiBA0BDAQLCyAGIBFB6ITAABA1AAsgByALQfiEwAAQNQALIAkgDEHYhMAAEDUACwJAIBFB//8DSwRAAkAgBSASKAL8/w9GBEAgDkGAgICAeDYCACAOIAU2AgQMAQsgDUECNgIMIA1B+IPAADYCCCANQgI3AhQgDSASQfz/D2qtQoCAgIDgAIQ3AyggDSANQQRqrUKAgICA4ACENwMgIA0gDUEgajYCECAOIA1BCGoQHQsgDUEwaiQADAELQf//AyARQciEwAAQNQALIAgoAgRBgICAgHhHDQMgCCgCCCIARQ0FIAAgECgCGCIESw0EIBAoAhQhDyAIIBRBACAAEGYiBDYCKCAIQShqIA8gABAxIARBhAFJDQUgBBAtDAULEDkAC0GcgMAAQcYAIAhBzwBqQYyAwABBtIHAABAzAAsgDCAEQeiCwAAQNgALIAhBGGogCEEMaigCADYCACAIIAgpAgQ3AxAgCEEBNgIsIAhB4ILAADYCKCAIQgE3AjQgCCAIQRBqrUKAgICAwACENwNAIAggCEFAazYCMCAIQRxqIAhBKGoQLyAIKAIgIAgoAiQQaAALIAAgBEH4gsAAEDYACyAIKAIAIgRBhAFPBEAgBBAtCyAQIBAoAgBBAWo2AgAgCEHQAGokACAKKAIIIgRBhAFPBEAgBBAtCyAKKAIEIgRBhAFPBEAgBBAtCyAKQSBqJAAgAAsXAQF/IAAoAgAiAQRAIAAoAgQgARBlCwsUACABIAEgACAAIAFdGyAAIABcGwscACAAQQA2AhAgAEIANwIIIABCgICAgMAANwIAC0QAIABFBEAjAEEgayIAJAAgAEEANgIYIABBATYCDCAAQeyLwAA2AgggAEIENwIQIABBCGpBiIzAABBDAAsgACABEG0ACxYBAW8gACUBEAAhARAbIgAgASYBIAALzgYBBn8CfwJAAkACQAJAAkAgAEEEayIFKAIAIgZBeHEiBEEEQQggBkEDcSIHGyABak8EQCAHQQAgAUEnaiIJIARJGw0BAkACQCACQQlPBEAgAiADEBwiCA0BQQAMCQsgA0HM/3tLDQFBECADQQtqQXhxIANBC0kbIQECQCAHRQRAIAFBgAJJIAQgAUEEcklyIAQgAWtBgYAIT3INAQwJCyAAQQhrIgIgBGohBwJAAkACQAJAIAEgBEsEQCAHQfyWwAAoAgBGDQQgB0H4lsAAKAIARg0CIAcoAgQiBkECcQ0FIAZBeHEiBiAEaiIEIAFJDQUgByAGEB4gBCABayIDQRBJDQEgBSABIAUoAgBBAXFyQQJyNgIAIAEgAmoiASADQQNyNgIEIAIgBGoiAiACKAIEQQFyNgIEIAEgAxAaDA0LIAQgAWsiA0EPSw0CDAwLIAUgBCAFKAIAQQFxckECcjYCACACIARqIgEgASgCBEEBcjYCBAwLC0HwlsAAKAIAIARqIgQgAUkNAgJAIAQgAWsiA0EPTQRAIAUgBkEBcSAEckECcjYCACACIARqIgEgASgCBEEBcjYCBEEAIQNBACEBDAELIAUgASAGQQFxckECcjYCACABIAJqIgEgA0EBcjYCBCACIARqIgIgAzYCACACIAIoAgRBfnE2AgQLQfiWwAAgATYCAEHwlsAAIAM2AgAMCgsgBSABIAZBAXFyQQJyNgIAIAEgAmoiASADQQNyNgIEIAcgBygCBEEBcjYCBCABIAMQGgwJC0H0lsAAKAIAIARqIgQgAUsNBwsgAxARIgFFDQEgASAAQXxBeCAFKAIAIgFBA3EbIAFBeHFqIgEgAyABIANJGxAfIAAQFgwICyAIIAAgASADIAEgA0kbEB8aIAUoAgAiAkF4cSIDIAFBBEEIIAJBA3EiAhtqSQ0DIAJBACADIAlLGw0EIAAQFgsgCAwGC0GBicAAQbCJwAAQPQALQcCJwABB8InAABA9AAtBgYnAAEGwicAAED0AC0HAicAAQfCJwAAQPQALIAUgASAGQQFxckECcjYCACABIAJqIgIgBCABayIBQQFyNgIEQfSWwAAgATYCAEH8lsAAIAI2AgAgAAwBCyAACwsZACABKAIUQaCNwABBDiABKAIYKAIMEQIACxYAIAAoAhQgASACIAAoAhgoAgwRAgALhwIBA39BnJPAACgCAEUEQAJAAkACQAJAIABFDQAgACgCACAAQQA2AgBBAXFFDQAgACgCECECIAAoAgwhASAAKAIIIQMgACgCBCEADAELQQAhAEGxk8AALQAAGkGAgBAhAkGAgBAhAwJAQYCAwAAQESIBRQ0AIAFBBGstAABBA3FFDQAgAUGAgMAAECoaCyABRQ0BC0Gsk8AAIAI2AgBBoJPAACAANgIAQaiTwAAoAgAhAkGok8AAIAE2AgBBpJPAACgCACEAQaSTwAAgAzYCAEGck8AAKAIAQZyTwABBATYCAEUgAEVyRQRAIAIgAEECdBBlCwwBC0EEQYCAwAAQUgALC0Ggk8AAC/ICAQl/QaySwAAoAgBFBEACfwJAIABFDQAgACgCACAAQQA2AgBBAXFFDQAgACgCKCEBIAAoAiQhByAAKAIgIQIgACgCHCEDIAAoAhghCCAAKAIUIQQgACgCECEFIAAoAgwhCSAAKAIIIQYgACgCBAwBC0ECIQlBBCEHQQAhAUEEIQhBAAshAEHUksAAIAE2AgBByJLAACADNgIAQbySwAAgBTYCAEGwksAAIAA2AgBB0JLAACgCACEFQdCSwAAgBzYCAEHMksAAKAIAIQBBzJLAACACNgIAQcSSwAAoAgAhAUHEksAAIAg2AgBBwJLAACgCACECQcCSwAAgBDYCAEG4ksAAKAIAIQRBuJLAACAJNgIAQbSSwAAoAgAhA0G0ksAAIAY2AgBBrJLAACgCACEGQaySwABBATYCAAJAIAZFDQAgAwRAIAQgA0EBdBBlCyACBEAgASACQQJ0EGULIABFDQAgBSAAQQJ0EGULC0GwksAAC8QEARF/QdiSwAAoAgBFBEACQCAABEAgACgCQCEBIAAoAjwhAiAAKAI4IQMgACgCNCEEIAAoAjAhBSAAKAIsIQYgACgCKCEHIAAoAiQhCCAAKAIgIQkgACgCHCEKIAAoAhghCyAAKAIUIQwgACgCECENIAAoAgwhDiAAKAIIIQ8gACgCBCEQIAAoAgAgAEEANgIAQQFxDQELQQQhAkEAIQFBACEDQQAhBEEEIQVBACEGQQAhB0EEIQhBACEJQQAhCkEEIQtBACEMQQAhDUEEIQ5BACEPQQAhEAtBmJPAACABNgIAQYyTwAAgBDYCAEGAk8AAIAc2AgBB9JLAACAKNgIAQeiSwAAgDTYCAEHcksAAIBA2AgBBlJPAACgCACEHQZSTwAAgAjYCAEGQk8AAKAIAIQBBkJPAACADNgIAQYiTwAAoAgAhCkGIk8AAIAU2AgBBhJPAACgCACEBQYSTwAAgBjYCAEH8ksAAKAIAIQVB/JLAACAINgIAQfiSwAAoAgAhAkH4ksAAIAk2AgBB8JLAACgCACEGQfCSwAAgCzYCAEHsksAAKAIAIQNB7JLAACAMNgIAQeSSwAAoAgAhCEHkksAAIA42AgBB4JLAACgCACEEQeCSwAAgDzYCAEHYksAAKAIAIQlB2JLAAEEBNgIAAkAgCUUNACAEBEAgCCAEQQJ0EGULIAMEQCAGIANBAnQQZQsgAgRAIAUgAkECdBBlCyABBEAgCiABQQJ0EGULIABFDQAgByAAQQJ0EGULC0HcksAACxQAIAAoAgAgASAAKAIEKAIMEQAACxQCAW8BfxAPIQAQGyIBIAAmASABCxAAIAEgACgCBCAAKAIIEBQLGQACfyABQQlPBEAgASAAEBwMAQsgABARCwsiACAAQu26rbbNhdT14wA3AwggAEL4gpm9le7Gxbl/NwMACyAAIABC2KGkg7Hi0d18NwMIIABCldfdmMOXiowLNwMACxMAIABB8IrAADYCBCAAIAE2AgALEAAgASAAKAIAIAAoAgQQVgsQACABIAAoAgAgACgCBBAUCxAAIAEoAhQgASgCGCAAEBgLDgAgACUBIAElASACEAYLWwECfwJAAkAgAEEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgAWpPBEAgAkEAIAMgAUEnaksbDQEgABAWDAILQYGJwABBsInAABA9AAtBwInAAEHwicAAED0ACwsdAQFvIAAoAgAlASABIAIQDCEDEBsiACADJgEgAAvCAgEGfyAAKAIAIQIjAEEQayIEJABBCiEDAkAgAkGQzgBJBEAgAiEADAELA0AgBEEGaiADaiIGQQRrIAIgAkGQzgBuIgBBkM4AbGsiB0H//wNxQeQAbiIFQQF0QdqPwABqLwAAOwAAIAZBAmsgByAFQeQAbGtB//8DcUEBdEHaj8AAai8AADsAACADQQRrIQMgAkH/wdcvSyAAIQINAAsLAkAgAEHjAE0EQCAAIQIMAQsgA0ECayIDIARBBmpqIAAgAEH//wNxQeQAbiICQeQAbGtB//8DcUEBdEHaj8AAai8AADsAAAsCQCACQQpPBEAgA0ECayIDIARBBmpqIAJBAXRB2o/AAGovAAA7AAAMAQsgA0EBayIDIARBBmpqIAJBMHI6AAALIAFBAUEAIARBBmogA2pBCiADaxAVIARBEGokAAsJACAAIAEQDgALDQAgAEHAiMAAIAEQGAsMACAAIAEpAgA3AwALDQAgAEHAi8AAIAEQGAsNACABQbiLwABBBRBWCxkAIAAgAUG8k8AAKAIAIgBBFSAAGxEBAAALCQAgAEEANgIACwgAIAAlARADCwgAIAAlARAHCwueEgQAQYCAwAALCQEAAAACAAAAAwBBlIDAAAuBDAEAAAAFAAAAY2Fubm90IGFjY2VzcyBhIFRocmVhZCBMb2NhbCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBhZnRlciBkZXN0cnVjdGlvbi9ydXN0Yy85MGIzNWE2MjM5YzNkOGJkYWJjNTMwYTZhMDgxNmY3ZmY4OWEwYWFmL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMAAABiABAATwAAAAQBAAAaAAAAYgAQAE8AAAD4AQAAJgAAAHNwYXJrLWludGVybmFsLXJzL3NyYy9yYXljYXN0LnJz1AAQACAAAAB+AAAAHAAAANQAEAAgAAAAgAAAABwAAADUABAAIAAAAIUAAAAgAAAAc3BhcmstaW50ZXJuYWwtcnMvc3JjL2xpYi5ycyQBEAAcAAAAHQAAADMAAAAkARAAHAAAACgAAAAtAAAAAQAAAAAAAAAkARAAHAAAADoAAAAzAAAAJAEQABwAAABFAAAALQAAACQBEAAcAAAAXgAAACgAAABzcGFyay1pbnRlcm5hbC1ycy9zcmMvc29ydC5ycwAAAJgBEAAdAAAAGwAAAB0AAACYARAAHQAAADkAAAAPAAAARXhwZWN0ZWQgIGFjdGl2ZSBzcGxhdHMgYnV0IGdvdCDYARAACQAAAOEBEAAXAAAAmAEQAB0AAAAzAAAAHQAAAJgBEAAdAAAAMwAAABUAAACYARAAHQAAACQAAAAUAAAAmAEQAB0AAAB0AAAAGQAAAJgBEAAdAAAApwAAABMAAACYARAAHQAAAJ8AAAATAAAAmAEQAB0AAACiAAAAHQAAAJgBEAAdAAAAogAAABEAAACYARAAHQAAAJAAAAAgAAAAmAEQAB0AAACQAAAAFAAAAJgBEAAdAAAAfAAAABgAAACYARAAHQAAAH0AAAAYAAAAL1VzZXJzL2RtYXJjb3MvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9qcy1zeXMtMC4zLjc3L3NyYy9saWIucnPIAhAAXAAAAPsYAAABAAAAAAAAAAQAAAAEAAAAEwAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkTGF6eSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkdgMQACoAAAAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL29uY2VfY2VsbC0xLjIxLjMvc3JjL2xpYi5ycwCoAxAAXwAAAAgDAAAZAAAAcmVlbnRyYW50IGluaXQAABgEEAAOAAAAqAMQAF8AAAB6AgAADQAAABYAAAAMAAAABAAAABcAAAAYAAAAGQAAAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjYvc3JjL2RsbWFsbG9jLnJzYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSArIG1pbl9vdmVyaGVhZABYBBAAKQAAAKgEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAWAQQACkAAACuBAAADQAAAEFjY2Vzc0Vycm9ybWVtb3J5IGFsbG9jYXRpb24gb2YgIGJ5dGVzIGZhaWxlZAAAAAsFEAAVAAAAIAUQAA0AAABzdGQvc3JjL2FsbG9jLnJzQAUQABAAAABjAQAACQAAABYAAAAMAAAABAAAABoAAAAAAAAACAAAAAQAAAAbAAAAAAAAAAgAAAAEAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAQAAAABAAAACEAAAAiAAAAIwAAACQAAABFcnJvcgAAACUAAAAMAAAABAAAACYAAAAnAAAAKAAAAGNhcGFjaXR5IG92ZXJmbG93AAAA2AUQABEAAABhbGxvYy9zcmMvcmF3X3ZlYy5yc/QFEAAUAAAAGAAAAAUAQaCMwAAL8AUBAAAAKQAAAGEgZm9ybWF0dGluZyB0cmFpdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB3aGVuIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBkaWQgbm90YWxsb2Mvc3JjL2ZtdC5ycwAAfgYQABAAAAB+AgAADgAAAEJvcnJvd011dEVycm9yYWxyZWFkeSBib3Jyb3dlZDogrgYQABIAAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAAyAYQACAAAADoBhAAEgAAAD09IT1tYXRjaGVzYXNzZXJ0aW9uIGBsZWZ0ICByaWdodGAgZmFpbGVkCiAgbGVmdDogCiByaWdodDogABcHEAAQAAAAJwcQABcAAAA+BxAACQAAACByaWdodGAgZmFpbGVkOiAKICBsZWZ0OiAAAAAXBxAAEAAAAGAHEAAQAAAAcAcQAAkAAAA+BxAACQAAADogAAABAAAAAAAAAJwHEAACAAAAfSB9Y29yZS9zcmMvZm10L251bS5ycwAAswcQABMAAABmAAAAFwAAADB4MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTlyYW5nZSBzdGFydCBpbmRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggAACiCBAAEgAAALQIEAAiAAAAcmFuZ2UgZW5kIGluZGV4IOgIEAAQAAAAtAgQACIAAAAAAAA/AAAAvwBBqJLAAAsBFABwCXByb2R1Y2VycwIIbGFuZ3VhZ2UBBFJ1c3QADHByb2Nlc3NlZC1ieQMFcnVzdGMdMS44My4wICg5MGIzNWE2MjMgMjAyNC0xMS0yNikGd2FscnVzBjAuMjMuMwx3YXNtLWJpbmRnZW4HMC4yLjEwMABJD3RhcmdldF9mZWF0dXJlcwQrD211dGFibGUtZ2xvYmFscysIc2lnbi1leHQrD3JlZmVyZW5jZS10eXBlcysKbXVsdGl2YWx1ZQ==",self.location.href));const A=te();(typeof e=="string"||typeof Request=="function"&&e instanceof Request||typeof URL=="function"&&e instanceof URL)&&(e=fetch(e));const{instance:t,module:s}=await Ae(await e,A);return se(t,s)}var is={},ee=function(e,A,t,s,i){var n=new Worker(is[A]||(is[A]=URL.createObjectURL(new Blob([e+\';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})\'],{type:"text/javascript"}))));return n.onmessage=function(g){var r=g.data,I=r.$e$;if(I){var o=new Error(I[0]);o.code=I[1],o.stack=I[2],i(o,null)}else i(null,r)},n.postMessage(t,s),n},V=Uint8Array,JA=Uint16Array,ns=Int32Array,Ft=new V([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),St=new V([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),gs=new V([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),rs=function(e,A){for(var t=new JA(31),s=0;s<31;++s)t[s]=A+=1<<e[s-1];for(var i=new ns(t[30]),s=1;s<30;++s)for(var n=t[s];n<t[s+1];++n)i[n]=n-t[s]<<5|s;return{b:t,r:i}},Is=rs(Ft,2),dt=Is.b,ie=Is.r;dt[28]=258,ie[258]=28;for(var ne=rs(St,0),os=ne.b,gt=new JA(32768),X=0;X<32768;++X){var SA=(X&43690)>>1|(X&21845)<<1;SA=(SA&52428)>>2|(SA&13107)<<2,SA=(SA&61680)>>4|(SA&3855)<<4,gt[X]=((SA&65280)>>8|(SA&255)<<8)>>1}for(var HA=function(e,A,t){for(var s=e.length,i=0,n=new JA(A);i<s;++i)e[i]&&++n[e[i]-1];var g=new JA(A);for(i=1;i<A;++i)g[i]=g[i-1]+n[i-1]<<1;var r;if(t){r=new JA(1<<A);var I=15-A;for(i=0;i<s;++i)if(e[i])for(var o=i<<4|e[i],a=A-e[i],C=g[e[i]-1]++<<a,Q=C|(1<<a)-1;C<=Q;++C)r[gt[C]>>I]=o}else for(r=new JA(s),i=0;i<s;++i)e[i]&&(r[i]=gt[g[e[i]-1]++]>>15-e[i]);return r},OA=new V(288),X=0;X<144;++X)OA[X]=8;for(var X=144;X<256;++X)OA[X]=9;for(var X=256;X<280;++X)OA[X]=7;for(var X=280;X<288;++X)OA[X]=8;for(var as=new V(32),X=0;X<32;++X)as[X]=5;var Cs=HA(OA,9,1),Bs=HA(as,5,1),rt=function(e){for(var A=e[0],t=1;t<e.length;++t)e[t]>A&&(A=e[t]);return A},BA=function(e,A,t){var s=A/8|0;return(e[s]|e[s+1]<<8)>>(A&7)&t},It=function(e,A){var t=A/8|0;return(e[t]|e[t+1]<<8|e[t+2]<<16)>>(A&7)},Nt=function(e){return(e+7)/8|0},dA=function(e,A,t){return(A==null||A<0)&&(A=0),(t==null||t>e.length)&&(t=e.length),new V(e.subarray(A,t))},Qs=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],j=function(e,A,t){var s=new Error(A||Qs[e]);if(s.code=e,Error.captureStackTrace&&Error.captureStackTrace(s,j),!t)throw s;return s},kt=function(e,A,t,s){var i=e.length,n=s?s.length:0;if(!i||A.f&&!A.l)return t||new V(0);var g=!t,r=g||A.i!=2,I=A.i;g&&(t=new V(i*3));var o=function(gA){var oA=t.length;if(gA>oA){var aA=new V(Math.max(oA*2,gA));aA.set(t),t=aA}},a=A.f||0,C=A.p||0,Q=A.b||0,B=A.l,h=A.d,l=A.m,c=A.n,E=i*8;do{if(!B){a=BA(e,C,1);var u=BA(e,C+1,3);if(C+=3,u)if(u==1)B=Cs,h=Bs,l=9,c=5;else if(u==2){var S=BA(e,C,31)+257,b=BA(e,C+10,15)+4,x=S+BA(e,C+5,31)+1;C+=14;for(var m=new V(x),G=new V(19),p=0;p<b;++p)G[gs[p]]=BA(e,C+p*3,7);C+=b*3;for(var w=rt(G),M=(1<<w)-1,z=HA(G,w,1),p=0;p<x;){var Y=z[BA(e,C,M)];C+=Y&15;var y=Y>>4;if(y<16)m[p++]=y;else{var N=0,q=0;for(y==16?(q=3+BA(e,C,3),C+=2,N=m[p-1]):y==17?(q=3+BA(e,C,7),C+=3):y==18&&(q=11+BA(e,C,127),C+=7);q--;)m[p++]=N}}var T=m.subarray(0,S),v=m.subarray(S);l=rt(T),c=rt(v),B=HA(T,l,1),h=HA(v,c,1)}else j(1);else{var y=Nt(C)+4,f=e[y-4]|e[y-3]<<8,D=y+f;if(D>i){I&&j(0);break}r&&o(Q+f),t.set(e.subarray(y,D),Q),A.b=Q+=f,A.p=C=D*8,A.f=a;continue}if(C>E){I&&j(0);break}}r&&o(Q+131072);for(var P=(1<<l)-1,Z=(1<<c)-1,W=C;;W=C){var N=B[It(e,C)&P],L=N>>4;if(C+=N&15,C>E){I&&j(0);break}if(N||j(2),L<256)t[Q++]=L;else if(L==256){W=C,B=null;break}else{var K=L-254;if(L>264){var p=L-257,J=Ft[p];K=BA(e,C,(1<<J)-1)+dt[p],C+=J}var R=h[It(e,C)&Z],F=R>>4;R||j(3),C+=R&15;var v=os[F];if(F>3){var J=St[F];v+=It(e,C)&(1<<J)-1,C+=J}if(C>E){I&&j(0);break}r&&o(Q+131072);var eA=Q+K;if(Q<v){var iA=n-v,IA=Math.min(v,eA);for(iA+Q<0&&j(3);Q<IA;++Q)t[Q]=s[iA+Q]}for(;Q<eA;++Q)t[Q]=t[Q-v]}}A.l=B,A.p=W,A.b=Q,A.f=a,B&&(a=1,A.m=l,A.d=h,A.n=c)}while(!a);return Q!=t.length&&g?dA(t,0,Q):t.subarray(0,Q)},ge=new V(0),re=function(e,A){var t={};for(var s in e)t[s]=e[s];for(var s in A)t[s]=A[s];return t},hs=function(e,A,t){for(var s=e(),i=e.toString(),n=i.slice(i.indexOf("[")+1,i.lastIndexOf("]")).replace(/\\s+/g,"").split(","),g=0;g<s.length;++g){var r=s[g],I=n[g];if(typeof r=="function"){A+=";"+I+"=";var o=r.toString();if(r.prototype)if(o.indexOf("[native code]")!=-1){var a=o.indexOf(" ",8)+1;A+=o.slice(a,o.indexOf("(",a))}else{A+=o;for(var C in r.prototype)A+=";"+I+".prototype."+C+"="+r.prototype[C].toString()}else A+=o}else t[I]=r}return A},ot=[],Ie=function(e){var A=[];for(var t in e)e[t].buffer&&A.push((e[t]=new e[t].constructor(e[t])).buffer);return A},oe=function(e,A,t,s){if(!ot[t]){for(var i="",n={},g=e.length-1,r=0;r<g;++r)i=hs(e[r],i,n);ot[t]={c:hs(e[g],i,n),e:n}}var I=re({},ot[t].e);return ee(ot[t].c+";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage="+A.toString()+"}",t,I,Ie(I),s)},ae=function(){return[V,JA,ns,Ft,St,gs,dt,os,Cs,Bs,gt,Qs,HA,rt,BA,It,Nt,dA,j,kt,at,Es,cs]},Es=function(e){return postMessage(e,[e.buffer])},cs=function(e){return e&&{out:e.size&&new V(e.size),dictionary:e.dictionary}},Ce=function(e,A,t,s,i,n){var g=oe(t,s,i,function(r,I){g.terminate(),n(r,I)});return g.postMessage([e,A],A.consume?[e.buffer]:[]),function(){g.terminate()}},lA=function(e,A){return e[A]|e[A+1]<<8},tA=function(e,A){return(e[A]|e[A+1]<<8|e[A+2]<<16|e[A+3]<<24)>>>0},Gt=function(e,A){return tA(e,A)+tA(e,A+4)*4294967296},Be=function(e){(e[0]!=31||e[1]!=139||e[2]!=8)&&j(6,"invalid gzip data");var A=e[3],t=10;A&4&&(t+=(e[10]|e[11]<<8)+2);for(var s=(A>>3&1)+(A>>4&1);s>0;s-=!e[t++]);return t+(A&2)},Ut=function(){function e(A,t){typeof A=="function"&&(t=A,A={}),this.ondata=t;var s=A&&A.dictionary&&A.dictionary.subarray(-32768);this.s={i:0,b:s?s.length:0},this.o=new V(32768),this.p=new V(0),s&&this.o.set(s)}return e.prototype.e=function(A){if(this.ondata||j(5),this.d&&j(4),!this.p.length)this.p=A;else if(A.length){var t=new V(this.p.length+A.length);t.set(this.p),t.set(A,this.p.length),this.p=t}},e.prototype.c=function(A){this.s.i=+(this.d=A||!1);var t=this.s.b,s=kt(this.p,this.s,this.o);this.ondata(dA(s,t,this.s.b),this.d),this.o=dA(s,this.s.b-32768),this.s.b=this.o.length,this.p=dA(this.p,this.s.p/8|0),this.s.p&=7},e.prototype.push=function(A,t){this.e(A),this.c(t)},e}();function Qe(e,A,t){return t||(t=A,A={}),typeof t!="function"&&j(7),Ce(e,A,[ae],function(s){return Es(at(s.data[0],cs(s.data[1])))},1,t)}function at(e,A){return kt(e,{i:2},A&&A.out,A&&A.dictionary)}var ls=function(){function e(A,t){this.v=1,this.r=0,Ut.call(this,A,t)}return e.prototype.push=function(A,t){if(Ut.prototype.e.call(this,A),this.r+=A.length,this.v){var s=this.p.subarray(this.v-1),i=s.length>3?Be(s):4;if(i>s.length){if(!t)return}else this.v>1&&this.onmember&&this.onmember(this.r-s.length);this.p=s.subarray(i),this.v=0}Ut.prototype.c.call(this,t),this.s.f&&!this.s.l&&!t&&(this.v=Nt(this.s.p)+9,this.s={i:0},this.o=new V(0),this.push(new V(0),t))},e}(),Yt=typeof TextDecoder<"u"&&new TextDecoder;try{Yt.decode(ge,{stream:!0})}catch{}var he=function(e){for(var A="",t=0;;){var s=e[t++],i=(s>127)+(s>223)+(s>239);if(t+i>e.length)return{s:A,r:dA(e,t-1)};i?i==3?(s=((s&15)<<18|(e[t++]&63)<<12|(e[t++]&63)<<6|e[t++]&63)-65536,A+=String.fromCharCode(55296|s>>10,56320|s&1023)):i&1?A+=String.fromCharCode((s&31)<<6|e[t++]&63):A+=String.fromCharCode((s&15)<<12|(e[t++]&63)<<6|e[t++]&63):A+=String.fromCharCode(s)}};function Ee(e,A){if(A){for(var t="",s=0;s<e.length;s+=16384)t+=String.fromCharCode.apply(null,e.subarray(s,s+16384));return t}else{if(Yt)return Yt.decode(e);var i=he(e),n=i.s,t=i.r;return t.length&&j(8),n}}var us=function(e,A){return A+30+lA(e,A+26)+lA(e,A+28)},ys=function(e,A,t){var s=lA(e,A+28),i=Ee(e.subarray(A+46,A+46+s),!(lA(e,A+8)&2048)),n=A+46+s,g=tA(e,A+20),r=t&&g==4294967295?ce(e,n):[g,tA(e,A+24),tA(e,A+42)],I=r[0],o=r[1],a=r[2];return[lA(e,A+10),I,o,i,n+lA(e,A+30)+lA(e,A+32),a]},ce=function(e,A){for(;lA(e,A)!=1;A+=4+lA(e,A+2));return[Gt(e,A+12),Gt(e,A+4),Gt(e,A+20)]},fs=typeof queueMicrotask=="function"?queueMicrotask:typeof setTimeout=="function"?setTimeout:function(e){e()};function le(e,A,t){t||(t=A,A={}),typeof t!="function"&&j(7);var s=[],i=function(){for(var c=0;c<s.length;++c)s[c]()},n={},g=function(c,E){fs(function(){t(c,E)})};fs(function(){g=t});for(var r=e.length-22;tA(e,r)!=101010256;--r)if(!r||e.length-r>65558)return g(j(13,0,1),null),i;var I=lA(e,r+8);if(I){var o=I,a=tA(e,r+16),C=a==4294967295||o==65535;if(C){var Q=tA(e,r-12);C=tA(e,Q)==101075792,C&&(o=I=tA(e,Q+32),a=tA(e,Q+48))}for(var B=A&&A.filter,h=function(c){var E=ys(e,a,C),u=E[0],y=E[1],f=E[2],D=E[3],S=E[4],b=E[5],x=us(e,b);a=S;var m=function(p,w){p?(i(),g(p,null)):(w&&(n[D]=w),--I||g(null,n))};if(!B||B({name:D,size:y,originalSize:f,compression:u}))if(!u)m(null,dA(e,x,x+y));else if(u==8){var G=e.subarray(x,x+y);if(f<524288||y>.8*f)try{m(null,at(G,{out:new V(f)}))}catch(p){m(p,null)}else s.push(Qe(G,{size:f},m))}else m(j(14,"unknown compression type "+u,1),null);else m(null,null)},l=0;l<o;++l)h(l)}else g(null,{});return i}function ue(e,A){for(var t={},s=e.length-22;tA(e,s)!=101010256;--s)(!s||e.length-s>65558)&&j(13);var i=lA(e,s+8);if(!i)return{};var n=tA(e,s+16),g=n==4294967295||i==65535;if(g){var r=tA(e,s-12);g=tA(e,r)==101075792,g&&(i=tA(e,r+32),n=tA(e,r+48))}for(var I=A&&A.filter,o=0;o<i;++o){var a=ys(e,n,g),C=a[0],Q=a[1],B=a[2],h=a[3],l=a[4],c=a[5],E=us(e,c);n=l,(!I||I({name:h,size:Q,originalSize:B,compression:C}))&&(C?C==8?t[h]=at(e.subarray(E,E+Q),{out:new V(B)}):j(14,"unknown compression type "+C):t[h]=dA(e,E,E+Q))}return t}/**\n * @license\n * Copyright 2010-2024 Three.js Authors\n * SPDX-License-Identifier: MIT\n */const ws="172",ye="",uA="srgb",ms="srgb-linear",xs="linear",Rt="srgb";function rA(e,A,t){return Math.max(A,Math.min(t,e))}function fe(e,A){return(e%A+A)%A}function bt(e,A,t){return(1-t)*e+t*A}class $A{constructor(A,t,s,i,n,g,r,I,o){$A.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],A!==void 0&&this.set(A,t,s,i,n,g,r,I,o)}set(A,t,s,i,n,g,r,I,o){const a=this.elements;return a[0]=A,a[1]=i,a[2]=r,a[3]=t,a[4]=n,a[5]=I,a[6]=s,a[7]=g,a[8]=o,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(A){const t=this.elements,s=A.elements;return t[0]=s[0],t[1]=s[1],t[2]=s[2],t[3]=s[3],t[4]=s[4],t[5]=s[5],t[6]=s[6],t[7]=s[7],t[8]=s[8],this}extractBasis(A,t,s){return A.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),s.setFromMatrix3Column(this,2),this}setFromMatrix4(A){const t=A.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,t){const s=A.elements,i=t.elements,n=this.elements,g=s[0],r=s[3],I=s[6],o=s[1],a=s[4],C=s[7],Q=s[2],B=s[5],h=s[8],l=i[0],c=i[3],E=i[6],u=i[1],y=i[4],f=i[7],D=i[2],S=i[5],b=i[8];return n[0]=g*l+r*u+I*D,n[3]=g*c+r*y+I*S,n[6]=g*E+r*f+I*b,n[1]=o*l+a*u+C*D,n[4]=o*c+a*y+C*S,n[7]=o*E+a*f+C*b,n[2]=Q*l+B*u+h*D,n[5]=Q*c+B*y+h*S,n[8]=Q*E+B*f+h*b,this}multiplyScalar(A){const t=this.elements;return t[0]*=A,t[3]*=A,t[6]*=A,t[1]*=A,t[4]*=A,t[7]*=A,t[2]*=A,t[5]*=A,t[8]*=A,this}determinant(){const A=this.elements,t=A[0],s=A[1],i=A[2],n=A[3],g=A[4],r=A[5],I=A[6],o=A[7],a=A[8];return t*g*a-t*r*o-s*n*a+s*r*I+i*n*o-i*g*I}invert(){const A=this.elements,t=A[0],s=A[1],i=A[2],n=A[3],g=A[4],r=A[5],I=A[6],o=A[7],a=A[8],C=a*g-r*o,Q=r*I-a*n,B=o*n-g*I,h=t*C+s*Q+i*B;if(h===0)return this.set(0,0,0,0,0,0,0,0,0);const l=1/h;return A[0]=C*l,A[1]=(i*o-a*s)*l,A[2]=(r*s-i*g)*l,A[3]=Q*l,A[4]=(a*t-i*I)*l,A[5]=(i*n-r*t)*l,A[6]=B*l,A[7]=(s*I-o*t)*l,A[8]=(g*t-s*n)*l,this}transpose(){let A;const t=this.elements;return A=t[1],t[1]=t[3],t[3]=A,A=t[2],t[2]=t[6],t[6]=A,A=t[5],t[5]=t[7],t[7]=A,this}getNormalMatrix(A){return this.setFromMatrix4(A).invert().transpose()}transposeIntoArray(A){const t=this.elements;return A[0]=t[0],A[1]=t[3],A[2]=t[6],A[3]=t[1],A[4]=t[4],A[5]=t[7],A[6]=t[2],A[7]=t[5],A[8]=t[8],this}setUvTransform(A,t,s,i,n,g,r){const I=Math.cos(n),o=Math.sin(n);return this.set(s*I,s*o,-s*(I*g+o*r)+g+A,-i*o,i*I,-i*(-o*g+I*r)+r+t,0,0,1),this}scale(A,t){return this.premultiply(Jt.makeScale(A,t)),this}rotate(A){return this.premultiply(Jt.makeRotation(-A)),this}translate(A,t){return this.premultiply(Jt.makeTranslation(A,t)),this}makeTranslation(A,t){return A.isVector2?this.set(1,0,A.x,0,1,A.y,0,0,1):this.set(1,0,A,0,1,t,0,0,1),this}makeRotation(A){const t=Math.cos(A),s=Math.sin(A);return this.set(t,-s,0,s,t,0,0,0,1),this}makeScale(A,t){return this.set(A,0,0,0,t,0,0,0,1),this}equals(A){const t=this.elements,s=A.elements;for(let i=0;i<9;i++)if(t[i]!==s[i])return!1;return!0}fromArray(A,t=0){for(let s=0;s<9;s++)this.elements[s]=A[s+t];return this}toArray(A=[],t=0){const s=this.elements;return A[t]=s[0],A[t+1]=s[1],A[t+2]=s[2],A[t+3]=s[3],A[t+4]=s[4],A[t+5]=s[5],A[t+6]=s[6],A[t+7]=s[7],A[t+8]=s[8],A}clone(){return new this.constructor().fromArray(this.elements)}}const Jt=new $A,Ds=new $A().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),ps=new $A().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function we(){const e={enabled:!0,workingColorSpace:ms,spaces:{},convert:function(i,n,g){return this.enabled===!1||n===g||!n||!g||(this.spaces[n].transfer===Rt&&(i.r=qA(i.r),i.g=qA(i.g),i.b=qA(i.b)),this.spaces[n].primaries!==this.spaces[g].primaries&&(i.applyMatrix3(this.spaces[n].toXYZ),i.applyMatrix3(this.spaces[g].fromXYZ)),this.spaces[g].transfer===Rt&&(i.r=vA(i.r),i.g=vA(i.g),i.b=vA(i.b))),i},fromWorkingColorSpace:function(i,n){return this.convert(i,this.workingColorSpace,n)},toWorkingColorSpace:function(i,n){return this.convert(i,n,this.workingColorSpace)},getPrimaries:function(i){return this.spaces[i].primaries},getTransfer:function(i){return i===ye?xs:this.spaces[i].transfer},getLuminanceCoefficients:function(i,n=this.workingColorSpace){return i.fromArray(this.spaces[n].luminanceCoefficients)},define:function(i){Object.assign(this.spaces,i)},_getMatrix:function(i,n,g){return i.copy(this.spaces[n].toXYZ).multiply(this.spaces[g].fromXYZ)},_getDrawingBufferColorSpace:function(i){return this.spaces[i].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(i=this.workingColorSpace){return this.spaces[i].workingColorSpaceConfig.unpackColorSpace}},A=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],s=[.3127,.329];return e.define({[ms]:{primaries:A,whitePoint:s,transfer:xs,toXYZ:Ds,fromXYZ:ps,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:uA},outputColorSpaceConfig:{drawingBufferColorSpace:uA}},[uA]:{primaries:A,whitePoint:s,transfer:Rt,toXYZ:Ds,fromXYZ:ps,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:uA}}}),e}const yA=we();function qA(e){return e<.04045?e*.0773993808:Math.pow(e*.9478672986+.0521327014,2.4)}function vA(e){return e<.0031308?e*12.92:1.055*Math.pow(e,.41666)-.055}class NA{constructor(A=0,t=0,s=0,i=1){this.isQuaternion=!0,this._x=A,this._y=t,this._z=s,this._w=i}static slerpFlat(A,t,s,i,n,g,r){let I=s[i+0],o=s[i+1],a=s[i+2],C=s[i+3];const Q=n[g+0],B=n[g+1],h=n[g+2],l=n[g+3];if(r===0){A[t+0]=I,A[t+1]=o,A[t+2]=a,A[t+3]=C;return}if(r===1){A[t+0]=Q,A[t+1]=B,A[t+2]=h,A[t+3]=l;return}if(C!==l||I!==Q||o!==B||a!==h){let c=1-r;const E=I*Q+o*B+a*h+C*l,u=E>=0?1:-1,y=1-E*E;if(y>Number.EPSILON){const D=Math.sqrt(y),S=Math.atan2(D,E*u);c=Math.sin(c*S)/D,r=Math.sin(r*S)/D}const f=r*u;if(I=I*c+Q*f,o=o*c+B*f,a=a*c+h*f,C=C*c+l*f,c===1-r){const D=1/Math.sqrt(I*I+o*o+a*a+C*C);I*=D,o*=D,a*=D,C*=D}}A[t]=I,A[t+1]=o,A[t+2]=a,A[t+3]=C}static multiplyQuaternionsFlat(A,t,s,i,n,g){const r=s[i],I=s[i+1],o=s[i+2],a=s[i+3],C=n[g],Q=n[g+1],B=n[g+2],h=n[g+3];return A[t]=r*h+a*C+I*B-o*Q,A[t+1]=I*h+a*Q+o*C-r*B,A[t+2]=o*h+a*B+r*Q-I*C,A[t+3]=a*h-r*C-I*Q-o*B,A}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get w(){return this._w}set w(A){this._w=A,this._onChangeCallback()}set(A,t,s,i){return this._x=A,this._y=t,this._z=s,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(A){return this._x=A.x,this._y=A.y,this._z=A.z,this._w=A.w,this._onChangeCallback(),this}setFromEuler(A,t=!0){const s=A._x,i=A._y,n=A._z,g=A._order,r=Math.cos,I=Math.sin,o=r(s/2),a=r(i/2),C=r(n/2),Q=I(s/2),B=I(i/2),h=I(n/2);switch(g){case"XYZ":this._x=Q*a*C+o*B*h,this._y=o*B*C-Q*a*h,this._z=o*a*h+Q*B*C,this._w=o*a*C-Q*B*h;break;case"YXZ":this._x=Q*a*C+o*B*h,this._y=o*B*C-Q*a*h,this._z=o*a*h-Q*B*C,this._w=o*a*C+Q*B*h;break;case"ZXY":this._x=Q*a*C-o*B*h,this._y=o*B*C+Q*a*h,this._z=o*a*h+Q*B*C,this._w=o*a*C-Q*B*h;break;case"ZYX":this._x=Q*a*C-o*B*h,this._y=o*B*C+Q*a*h,this._z=o*a*h-Q*B*C,this._w=o*a*C+Q*B*h;break;case"YZX":this._x=Q*a*C+o*B*h,this._y=o*B*C+Q*a*h,this._z=o*a*h-Q*B*C,this._w=o*a*C-Q*B*h;break;case"XZY":this._x=Q*a*C-o*B*h,this._y=o*B*C-Q*a*h,this._z=o*a*h+Q*B*C,this._w=o*a*C+Q*B*h;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+g)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(A,t){const s=t/2,i=Math.sin(s);return this._x=A.x*i,this._y=A.y*i,this._z=A.z*i,this._w=Math.cos(s),this._onChangeCallback(),this}setFromRotationMatrix(A){const t=A.elements,s=t[0],i=t[4],n=t[8],g=t[1],r=t[5],I=t[9],o=t[2],a=t[6],C=t[10],Q=s+r+C;if(Q>0){const B=.5/Math.sqrt(Q+1);this._w=.25/B,this._x=(a-I)*B,this._y=(n-o)*B,this._z=(g-i)*B}else if(s>r&&s>C){const B=2*Math.sqrt(1+s-r-C);this._w=(a-I)/B,this._x=.25*B,this._y=(i+g)/B,this._z=(n+o)/B}else if(r>C){const B=2*Math.sqrt(1+r-s-C);this._w=(n-o)/B,this._x=(i+g)/B,this._y=.25*B,this._z=(I+a)/B}else{const B=2*Math.sqrt(1+C-s-r);this._w=(g-i)/B,this._x=(n+o)/B,this._y=(I+a)/B,this._z=.25*B}return this._onChangeCallback(),this}setFromUnitVectors(A,t){let s=A.dot(t)+1;return s<Number.EPSILON?(s=0,Math.abs(A.x)>Math.abs(A.z)?(this._x=-A.y,this._y=A.x,this._z=0,this._w=s):(this._x=0,this._y=-A.z,this._z=A.y,this._w=s)):(this._x=A.y*t.z-A.z*t.y,this._y=A.z*t.x-A.x*t.z,this._z=A.x*t.y-A.y*t.x,this._w=s),this.normalize()}angleTo(A){return 2*Math.acos(Math.abs(rA(this.dot(A),-1,1)))}rotateTowards(A,t){const s=this.angleTo(A);if(s===0)return this;const i=Math.min(1,t/s);return this.slerp(A,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(A){return this._x*A._x+this._y*A._y+this._z*A._z+this._w*A._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let A=this.length();return A===0?(this._x=0,this._y=0,this._z=0,this._w=1):(A=1/A,this._x=this._x*A,this._y=this._y*A,this._z=this._z*A,this._w=this._w*A),this._onChangeCallback(),this}multiply(A){return this.multiplyQuaternions(this,A)}premultiply(A){return this.multiplyQuaternions(A,this)}multiplyQuaternions(A,t){const s=A._x,i=A._y,n=A._z,g=A._w,r=t._x,I=t._y,o=t._z,a=t._w;return this._x=s*a+g*r+i*o-n*I,this._y=i*a+g*I+n*r-s*o,this._z=n*a+g*o+s*I-i*r,this._w=g*a-s*r-i*I-n*o,this._onChangeCallback(),this}slerp(A,t){if(t===0)return this;if(t===1)return this.copy(A);const s=this._x,i=this._y,n=this._z,g=this._w;let r=g*A._w+s*A._x+i*A._y+n*A._z;if(r<0?(this._w=-A._w,this._x=-A._x,this._y=-A._y,this._z=-A._z,r=-r):this.copy(A),r>=1)return this._w=g,this._x=s,this._y=i,this._z=n,this;const I=1-r*r;if(I<=Number.EPSILON){const B=1-t;return this._w=B*g+t*this._w,this._x=B*s+t*this._x,this._y=B*i+t*this._y,this._z=B*n+t*this._z,this.normalize(),this}const o=Math.sqrt(I),a=Math.atan2(o,r),C=Math.sin((1-t)*a)/o,Q=Math.sin(t*a)/o;return this._w=g*C+this._w*Q,this._x=s*C+this._x*Q,this._y=i*C+this._y*Q,this._z=n*C+this._z*Q,this._onChangeCallback(),this}slerpQuaternions(A,t,s){return this.copy(A).slerp(t,s)}random(){const A=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),s=Math.random(),i=Math.sqrt(1-s),n=Math.sqrt(s);return this.set(i*Math.sin(A),i*Math.cos(A),n*Math.sin(t),n*Math.cos(t))}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._w===this._w}fromArray(A,t=0){return this._x=A[t],this._y=A[t+1],this._z=A[t+2],this._w=A[t+3],this._onChangeCallback(),this}toArray(A=[],t=0){return A[t]=this._x,A[t+1]=this._y,A[t+2]=this._z,A[t+3]=this._w,A}fromBufferAttribute(A,t){return this._x=A.getX(t),this._y=A.getY(t),this._z=A.getZ(t),this._w=A.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class d{constructor(A=0,t=0,s=0){d.prototype.isVector3=!0,this.x=A,this.y=t,this.z=s}set(A,t,s){return s===void 0&&(s=this.z),this.x=A,this.y=t,this.z=s,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setComponent(A,t){switch(A){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this}addVectors(A,t){return this.x=A.x+t.x,this.y=A.y+t.y,this.z=A.z+t.z,this}addScaledVector(A,t){return this.x+=A.x*t,this.y+=A.y*t,this.z+=A.z*t,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this}subVectors(A,t){return this.x=A.x-t.x,this.y=A.y-t.y,this.z=A.z-t.z,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this}multiplyVectors(A,t){return this.x=A.x*t.x,this.y=A.y*t.y,this.z=A.z*t.z,this}applyEuler(A){return this.applyQuaternion(Ms.setFromEuler(A))}applyAxisAngle(A,t){return this.applyQuaternion(Ms.setFromAxisAngle(A,t))}applyMatrix3(A){const t=this.x,s=this.y,i=this.z,n=A.elements;return this.x=n[0]*t+n[3]*s+n[6]*i,this.y=n[1]*t+n[4]*s+n[7]*i,this.z=n[2]*t+n[5]*s+n[8]*i,this}applyNormalMatrix(A){return this.applyMatrix3(A).normalize()}applyMatrix4(A){const t=this.x,s=this.y,i=this.z,n=A.elements,g=1/(n[3]*t+n[7]*s+n[11]*i+n[15]);return this.x=(n[0]*t+n[4]*s+n[8]*i+n[12])*g,this.y=(n[1]*t+n[5]*s+n[9]*i+n[13])*g,this.z=(n[2]*t+n[6]*s+n[10]*i+n[14])*g,this}applyQuaternion(A){const t=this.x,s=this.y,i=this.z,n=A.x,g=A.y,r=A.z,I=A.w,o=2*(g*i-r*s),a=2*(r*t-n*i),C=2*(n*s-g*t);return this.x=t+I*o+g*C-r*a,this.y=s+I*a+r*o-n*C,this.z=i+I*C+n*a-g*o,this}project(A){return this.applyMatrix4(A.matrixWorldInverse).applyMatrix4(A.projectionMatrix)}unproject(A){return this.applyMatrix4(A.projectionMatrixInverse).applyMatrix4(A.matrixWorld)}transformDirection(A){const t=this.x,s=this.y,i=this.z,n=A.elements;return this.x=n[0]*t+n[4]*s+n[8]*i,this.y=n[1]*t+n[5]*s+n[9]*i,this.z=n[2]*t+n[6]*s+n[10]*i,this.normalize()}divide(A){return this.x/=A.x,this.y/=A.y,this.z/=A.z,this}divideScalar(A){return this.multiplyScalar(1/A)}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this}clamp(A,t){return this.x=rA(this.x,A.x,t.x),this.y=rA(this.y,A.y,t.y),this.z=rA(this.z,A.z,t.z),this}clampScalar(A,t){return this.x=rA(this.x,A,t),this.y=rA(this.y,A,t),this.z=rA(this.z,A,t),this}clampLength(A,t){const s=this.length();return this.divideScalar(s||1).multiplyScalar(rA(s,A,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,t){return this.x+=(A.x-this.x)*t,this.y+=(A.y-this.y)*t,this.z+=(A.z-this.z)*t,this}lerpVectors(A,t,s){return this.x=A.x+(t.x-A.x)*s,this.y=A.y+(t.y-A.y)*s,this.z=A.z+(t.z-A.z)*s,this}cross(A){return this.crossVectors(this,A)}crossVectors(A,t){const s=A.x,i=A.y,n=A.z,g=t.x,r=t.y,I=t.z;return this.x=i*I-n*r,this.y=n*g-s*I,this.z=s*r-i*g,this}projectOnVector(A){const t=A.lengthSq();if(t===0)return this.set(0,0,0);const s=A.dot(this)/t;return this.copy(A).multiplyScalar(s)}projectOnPlane(A){return _t.copy(this).projectOnVector(A),this.sub(_t)}reflect(A){return this.sub(_t.copy(A).multiplyScalar(2*this.dot(A)))}angleTo(A){const t=Math.sqrt(this.lengthSq()*A.lengthSq());if(t===0)return Math.PI/2;const s=this.dot(A)/t;return Math.acos(rA(s,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const t=this.x-A.x,s=this.y-A.y,i=this.z-A.z;return t*t+s*s+i*i}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)+Math.abs(this.z-A.z)}setFromSpherical(A){return this.setFromSphericalCoords(A.radius,A.phi,A.theta)}setFromSphericalCoords(A,t,s){const i=Math.sin(t)*A;return this.x=i*Math.sin(s),this.y=Math.cos(t)*A,this.z=i*Math.cos(s),this}setFromCylindrical(A){return this.setFromCylindricalCoords(A.radius,A.theta,A.y)}setFromCylindricalCoords(A,t,s){return this.x=A*Math.sin(t),this.y=s,this.z=A*Math.cos(t),this}setFromMatrixPosition(A){const t=A.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(A){const t=this.setFromMatrixColumn(A,0).length(),s=this.setFromMatrixColumn(A,1).length(),i=this.setFromMatrixColumn(A,2).length();return this.x=t,this.y=s,this.z=i,this}setFromMatrixColumn(A,t){return this.fromArray(A.elements,t*4)}setFromMatrix3Column(A,t){return this.fromArray(A.elements,t*3)}setFromEuler(A){return this.x=A._x,this.y=A._y,this.z=A._z,this}setFromColor(A){return this.x=A.r,this.y=A.g,this.z=A.b,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z}fromArray(A,t=0){return this.x=A[t],this.y=A[t+1],this.z=A[t+2],this}toArray(A=[],t=0){return A[t]=this.x,A[t+1]=this.y,A[t+2]=this.z,A}fromBufferAttribute(A,t){return this.x=A.getX(t),this.y=A.getY(t),this.z=A.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const A=Math.random()*Math.PI*2,t=Math.random()*2-1,s=Math.sqrt(1-t*t);return this.x=s*Math.cos(A),this.y=t,this.z=s*Math.sin(A),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const _t=new d,Ms=new NA;class Fs{constructor(A=new d(1/0,1/0,1/0),t=new d(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=A,this.max=t}set(A,t){return this.min.copy(A),this.max.copy(t),this}setFromArray(A){this.makeEmpty();for(let t=0,s=A.length;t<s;t+=3)this.expandByPoint(fA.fromArray(A,t));return this}setFromBufferAttribute(A){this.makeEmpty();for(let t=0,s=A.count;t<s;t++)this.expandByPoint(fA.fromBufferAttribute(A,t));return this}setFromPoints(A){this.makeEmpty();for(let t=0,s=A.length;t<s;t++)this.expandByPoint(A[t]);return this}setFromCenterAndSize(A,t){const s=fA.copy(t).multiplyScalar(.5);return this.min.copy(A).sub(s),this.max.copy(A).add(s),this}setFromObject(A,t=!1){return this.makeEmpty(),this.expandByObject(A,t)}clone(){return new this.constructor().copy(this)}copy(A){return this.min.copy(A.min),this.max.copy(A.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(A){return this.isEmpty()?A.set(0,0,0):A.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(A){return this.isEmpty()?A.set(0,0,0):A.subVectors(this.max,this.min)}expandByPoint(A){return this.min.min(A),this.max.max(A),this}expandByVector(A){return this.min.sub(A),this.max.add(A),this}expandByScalar(A){return this.min.addScalar(-A),this.max.addScalar(A),this}expandByObject(A,t=!1){A.updateWorldMatrix(!1,!1);const s=A.geometry;if(s!==void 0){const n=s.getAttribute("position");if(t===!0&&n!==void 0&&A.isInstancedMesh!==!0)for(let g=0,r=n.count;g<r;g++)A.isMesh===!0?A.getVertexPosition(g,fA):fA.fromBufferAttribute(n,g),fA.applyMatrix4(A.matrixWorld),this.expandByPoint(fA);else A.boundingBox!==void 0?(A.boundingBox===null&&A.computeBoundingBox(),Ct.copy(A.boundingBox)):(s.boundingBox===null&&s.computeBoundingBox(),Ct.copy(s.boundingBox)),Ct.applyMatrix4(A.matrixWorld),this.union(Ct)}const i=A.children;for(let n=0,g=i.length;n<g;n++)this.expandByObject(i[n],t);return this}containsPoint(A){return A.x>=this.min.x&&A.x<=this.max.x&&A.y>=this.min.y&&A.y<=this.max.y&&A.z>=this.min.z&&A.z<=this.max.z}containsBox(A){return this.min.x<=A.min.x&&A.max.x<=this.max.x&&this.min.y<=A.min.y&&A.max.y<=this.max.y&&this.min.z<=A.min.z&&A.max.z<=this.max.z}getParameter(A,t){return t.set((A.x-this.min.x)/(this.max.x-this.min.x),(A.y-this.min.y)/(this.max.y-this.min.y),(A.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(A){return A.max.x>=this.min.x&&A.min.x<=this.max.x&&A.max.y>=this.min.y&&A.min.y<=this.max.y&&A.max.z>=this.min.z&&A.min.z<=this.max.z}intersectsSphere(A){return this.clampPoint(A.center,fA),fA.distanceToSquared(A.center)<=A.radius*A.radius}intersectsPlane(A){let t,s;return A.normal.x>0?(t=A.normal.x*this.min.x,s=A.normal.x*this.max.x):(t=A.normal.x*this.max.x,s=A.normal.x*this.min.x),A.normal.y>0?(t+=A.normal.y*this.min.y,s+=A.normal.y*this.max.y):(t+=A.normal.y*this.max.y,s+=A.normal.y*this.min.y),A.normal.z>0?(t+=A.normal.z*this.min.z,s+=A.normal.z*this.max.z):(t+=A.normal.z*this.max.z,s+=A.normal.z*this.min.z),t<=-A.constant&&s>=-A.constant}intersectsTriangle(A){if(this.isEmpty())return!1;this.getCenter(At),Bt.subVectors(this.max,At),KA.subVectors(A.a,At),TA.subVectors(A.b,At),ZA.subVectors(A.c,At),kA.subVectors(TA,KA),GA.subVectors(ZA,TA),_A.subVectors(KA,ZA);let t=[0,-kA.z,kA.y,0,-GA.z,GA.y,0,-_A.z,_A.y,kA.z,0,-kA.x,GA.z,0,-GA.x,_A.z,0,-_A.x,-kA.y,kA.x,0,-GA.y,GA.x,0,-_A.y,_A.x,0];return!zt(t,KA,TA,ZA,Bt)||(t=[1,0,0,0,1,0,0,0,1],!zt(t,KA,TA,ZA,Bt))?!1:(Qt.crossVectors(kA,GA),t=[Qt.x,Qt.y,Qt.z],zt(t,KA,TA,ZA,Bt))}clampPoint(A,t){return t.copy(A).clamp(this.min,this.max)}distanceToPoint(A){return this.clampPoint(A,fA).distanceTo(A)}getBoundingSphere(A){return this.isEmpty()?A.makeEmpty():(this.getCenter(A.center),A.radius=this.getSize(fA).length()*.5),A}intersect(A){return this.min.max(A.min),this.max.min(A.max),this.isEmpty()&&this.makeEmpty(),this}union(A){return this.min.min(A.min),this.max.max(A.max),this}applyMatrix4(A){return this.isEmpty()?this:(MA[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(A),MA[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(A),MA[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(A),MA[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(A),MA[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(A),MA[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(A),MA[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(A),MA[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(A),this.setFromPoints(MA),this)}translate(A){return this.min.add(A),this.max.add(A),this}equals(A){return A.min.equals(this.min)&&A.max.equals(this.max)}}const MA=[new d,new d,new d,new d,new d,new d,new d,new d],fA=new d,Ct=new Fs,KA=new d,TA=new d,ZA=new d,kA=new d,GA=new d,_A=new d,At=new d,Bt=new d,Qt=new d,zA=new d;function zt(e,A,t,s,i){for(let n=0,g=e.length-3;n<=g;n+=3){zA.fromArray(e,n);const r=i.x*Math.abs(zA.x)+i.y*Math.abs(zA.y)+i.z*Math.abs(zA.z),I=A.dot(zA),o=t.dot(zA),a=s.dot(zA);if(Math.max(-Math.max(I,o,a),Math.min(I,o,a))>r)return!1}return!0}const Ss={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},UA={h:0,s:0,l:0},ht={h:0,s:0,l:0};function Lt(e,A,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?e+(A-e)*6*t:t<1/2?A:t<2/3?e+(A-e)*6*(2/3-t):e}class Ht{constructor(A,t,s){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(A,t,s)}set(A,t,s){if(t===void 0&&s===void 0){const i=A;i&&i.isColor?this.copy(i):typeof i=="number"?this.setHex(i):typeof i=="string"&&this.setStyle(i)}else this.setRGB(A,t,s);return this}setScalar(A){return this.r=A,this.g=A,this.b=A,this}setHex(A,t=uA){return A=Math.floor(A),this.r=(A>>16&255)/255,this.g=(A>>8&255)/255,this.b=(A&255)/255,yA.toWorkingColorSpace(this,t),this}setRGB(A,t,s,i=yA.workingColorSpace){return this.r=A,this.g=t,this.b=s,yA.toWorkingColorSpace(this,i),this}setHSL(A,t,s,i=yA.workingColorSpace){if(A=fe(A,1),t=rA(t,0,1),s=rA(s,0,1),t===0)this.r=this.g=this.b=s;else{const n=s<=.5?s*(1+t):s+t-s*t,g=2*s-n;this.r=Lt(g,n,A+1/3),this.g=Lt(g,n,A),this.b=Lt(g,n,A-1/3)}return yA.toWorkingColorSpace(this,i),this}setStyle(A,t=uA){function s(n){n!==void 0&&parseFloat(n)<1&&console.warn("THREE.Color: Alpha component of "+A+" will be ignored.")}let i;if(i=/^(\\w+)\\(([^\\)]*)\\)/.exec(A)){let n;const g=i[1],r=i[2];switch(g){case"rgb":case"rgba":if(n=/^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(r))return s(n[4]),this.setRGB(Math.min(255,parseInt(n[1],10))/255,Math.min(255,parseInt(n[2],10))/255,Math.min(255,parseInt(n[3],10))/255,t);if(n=/^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(r))return s(n[4]),this.setRGB(Math.min(100,parseInt(n[1],10))/100,Math.min(100,parseInt(n[2],10))/100,Math.min(100,parseInt(n[3],10))/100,t);break;case"hsl":case"hsla":if(n=/^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(r))return s(n[4]),this.setHSL(parseFloat(n[1])/360,parseFloat(n[2])/100,parseFloat(n[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+A)}}else if(i=/^\\#([A-Fa-f\\d]+)$/.exec(A)){const n=i[1],g=n.length;if(g===3)return this.setRGB(parseInt(n.charAt(0),16)/15,parseInt(n.charAt(1),16)/15,parseInt(n.charAt(2),16)/15,t);if(g===6)return this.setHex(parseInt(n,16),t);console.warn("THREE.Color: Invalid hex color "+A)}else if(A&&A.length>0)return this.setColorName(A,t);return this}setColorName(A,t=uA){const s=Ss[A.toLowerCase()];return s!==void 0?this.setHex(s,t):console.warn("THREE.Color: Unknown color "+A),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(A){return this.r=A.r,this.g=A.g,this.b=A.b,this}copySRGBToLinear(A){return this.r=qA(A.r),this.g=qA(A.g),this.b=qA(A.b),this}copyLinearToSRGB(A){return this.r=vA(A.r),this.g=vA(A.g),this.b=vA(A.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(A=uA){return yA.fromWorkingColorSpace(sA.copy(this),A),Math.round(rA(sA.r*255,0,255))*65536+Math.round(rA(sA.g*255,0,255))*256+Math.round(rA(sA.b*255,0,255))}getHexString(A=uA){return("000000"+this.getHex(A).toString(16)).slice(-6)}getHSL(A,t=yA.workingColorSpace){yA.fromWorkingColorSpace(sA.copy(this),t);const s=sA.r,i=sA.g,n=sA.b,g=Math.max(s,i,n),r=Math.min(s,i,n);let I,o;const a=(r+g)/2;if(r===g)I=0,o=0;else{const C=g-r;switch(o=a<=.5?C/(g+r):C/(2-g-r),g){case s:I=(i-n)/C+(i<n?6:0);break;case i:I=(n-s)/C+2;break;case n:I=(s-i)/C+4;break}I/=6}return A.h=I,A.s=o,A.l=a,A}getRGB(A,t=yA.workingColorSpace){return yA.fromWorkingColorSpace(sA.copy(this),t),A.r=sA.r,A.g=sA.g,A.b=sA.b,A}getStyle(A=uA){yA.fromWorkingColorSpace(sA.copy(this),A);const t=sA.r,s=sA.g,i=sA.b;return A!==uA?`color(${A} ${t.toFixed(3)} ${s.toFixed(3)} ${i.toFixed(3)})`:`rgb(${Math.round(t*255)},${Math.round(s*255)},${Math.round(i*255)})`}offsetHSL(A,t,s){return this.getHSL(UA),this.setHSL(UA.h+A,UA.s+t,UA.l+s)}add(A){return this.r+=A.r,this.g+=A.g,this.b+=A.b,this}addColors(A,t){return this.r=A.r+t.r,this.g=A.g+t.g,this.b=A.b+t.b,this}addScalar(A){return this.r+=A,this.g+=A,this.b+=A,this}sub(A){return this.r=Math.max(0,this.r-A.r),this.g=Math.max(0,this.g-A.g),this.b=Math.max(0,this.b-A.b),this}multiply(A){return this.r*=A.r,this.g*=A.g,this.b*=A.b,this}multiplyScalar(A){return this.r*=A,this.g*=A,this.b*=A,this}lerp(A,t){return this.r+=(A.r-this.r)*t,this.g+=(A.g-this.g)*t,this.b+=(A.b-this.b)*t,this}lerpColors(A,t,s){return this.r=A.r+(t.r-A.r)*s,this.g=A.g+(t.g-A.g)*s,this.b=A.b+(t.b-A.b)*s,this}lerpHSL(A,t){this.getHSL(UA),A.getHSL(ht);const s=bt(UA.h,ht.h,t),i=bt(UA.s,ht.s,t),n=bt(UA.l,ht.l,t);return this.setHSL(s,i,n),this}setFromVector3(A){return this.r=A.x,this.g=A.y,this.b=A.z,this}applyMatrix3(A){const t=this.r,s=this.g,i=this.b,n=A.elements;return this.r=n[0]*t+n[3]*s+n[6]*i,this.g=n[1]*t+n[4]*s+n[7]*i,this.b=n[2]*t+n[5]*s+n[8]*i,this}equals(A){return A.r===this.r&&A.g===this.g&&A.b===this.b}fromArray(A,t=0){return this.r=A[t],this.g=A[t+1],this.b=A[t+2],this}toArray(A=[],t=0){return A[t]=this.r,A[t+1]=this.g,A[t+2]=this.b,A}fromBufferAttribute(A,t){return this.r=A.getX(t),this.g=A.getY(t),this.b=A.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const sA=new Ht;Ht.NAMES=Ss,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:ws}})),typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=ws);const ds=-12,Ns=9,XA=Math.exp(-30),me=11,xe=11,ks=1<<me,Gs=1<<xe,Us=1;function De(e){var n;let A=!1;const t=e.split(`\n`).map(g=>{const r=g.trimEnd();return A?r:r.length>0?(A=!0,r):null}).filter(g=>g!=null);for(;t.length>0&&t[t.length-1].length===0;)t.pop();if(t.length===0)return[];const s=(n=t[0].match(/^\\s*/))==null?void 0:n[0];if(!s)return t;const i=new RegExp(`^${s}`);return t.map(g=>g.replace(i,""))}function pe(e){return De(e).join(`\n`)}const qt=new Float32Array(1),Ys=new Uint32Array(qt.buffer);function WA(e){qt[0]=e;const A=Ys[0],t=A>>31&1,s=A>>23&255,i=A&8388607,n=t<<15;if(s===255)return i!==0?n|32767:n|31744;const g=s-127+15;if(g>=31)return n|31744;if(g<=0){if(g<-10)return n;const I=(i|8388608)>>1-g+13;return n|I}const r=i>>13;return n|g<<10|r}function O(e){const A=e>>15&1,t=e>>10&31,s=e&1023;let i;if(t===0)if(s===0)i=A<<31;else{let n=s,g=-14;for(;(n&1024)===0;)n<<=1,g--;n&=1023;const r=g+127,I=n<<13;i=A<<31|r<<23|I}else if(t===31)s===0?i=A<<31|2139095040:i=A<<31|2143289344;else{const n=t-15+127,g=s<<13;i=A<<31|n<<23|g}return Ys[0]=i,qt[0]}function QA(e){return Math.max(0,Math.min(255,Math.round(e*255)))}function Me(e){const A=[],t=new Set;function s(i){i&&typeof i=="object"&&!t.has(i)&&(t.add(i),i instanceof ArrayBuffer?A.push(i):ArrayBuffer.isView(i)?A.push(i.buffer):Array.isArray(i)?i.forEach(s):Object.values(i).forEach(s))}return s(e),A}function vt(e,A,t,s,i,n,g,r,I,o,a,C,Q,B,h,l,c){const E=(c==null?void 0:c.rgbMin)??0,y=((c==null?void 0:c.rgbMax)??1)-E,f=QA((B-E)/y),D=QA((h-E)/y),S=QA((l-E)/y),b=QA(Q),x=_s(new NA(I,o,a,C)),m=x&255,G=x>>>8&255,p=x>>>16&255,w=(c==null?void 0:c.lnScaleMin)??ds,z=254/(((c==null?void 0:c.lnScaleMax)??Ns)-w),Y=n<XA?0:Math.min(255,Math.max(1,Math.round((Math.log(n)-w)*z)+1)),N=g<XA?0:Math.min(255,Math.max(1,Math.round((Math.log(g)-w)*z)+1)),q=r<XA?0:Math.min(255,Math.max(1,Math.round((Math.log(r)-w)*z)+1)),T=WA(t),v=WA(s),P=WA(i),Z=A*4;e[Z]=f|D<<8|S<<16|b<<24,e[Z+1]=T|v<<16,e[Z+2]=P|m<<16|G<<24,e[Z+3]=Y|N<<8|q<<16|p<<24}function Rs(e,A,t,s,i){const n=WA(t),g=WA(s),r=WA(i),I=A*4;e[I+1]=n|g<<16,e[I+2]=r|e[I+2]&4294901760}function bs(e,A,t,s,i,n){const g=(n==null?void 0:n.lnScaleMin)??ds,I=254/(((n==null?void 0:n.lnScaleMax)??Ns)-g),o=t<XA?0:Math.min(255,Math.max(1,Math.round((Math.log(t)-g)*I)+1)),a=s<XA?0:Math.min(255,Math.max(1,Math.round((Math.log(s)-g)*I)+1)),C=i<XA?0:Math.min(255,Math.max(1,Math.round((Math.log(i)-g)*I)+1)),Q=A*4;e[Q+3]=o|a<<8|C<<16|e[Q+3]&4278190080}function Js(e,A,t,s,i,n){const g=_s(new NA(t,s,i,n)),r=g&255,I=g>>>8&255,o=g>>>16&255,a=A*4;e[a+2]=e[a+2]&65535|r<<16|I<<24,e[a+3]=e[a+3]&16777215|o<<24}function Fe(e,A,t,s,i,n,g){const r=(g==null?void 0:g.rgbMin)??0,o=((g==null?void 0:g.rgbMax)??1)-r,a=QA((t-r)/o),C=QA((s-r)/o),Q=QA((i-r)/o),B=QA(n),h=A*4;e[h]=a|C<<8|Q<<16|B<<24}function Se(e,A,t,s,i,n){const g=(n==null?void 0:n.rgbMin)??0,I=((n==null?void 0:n.rgbMax)??1)-g,o=QA((t-g)/I),a=QA((s-g)/I),C=QA((i-g)/I),Q=A*4;e[Q]=o|a<<8|C<<16|e[Q]&4278190080}function de(e,A,t){const s=QA(t),i=A*4;e[i]=e[i]&16777215|s<<24}new d,new d,new Ht;function Ne(e){const A=ks,t=Math.max(Us,Math.min(Gs,Math.ceil(e/A))),s=Math.ceil(e/(A*t)),i=A*t*s;return{width:A,height:t,depth:s,maxSplats:i}}function Et(e){const A=ks,t=Math.max(Us,Math.min(Gs,Math.ceil(e/A))),s=Math.ceil(e/(A*t));return A*t*s}pe(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);function _s(e){const A=e.clone().normalize();A.w<0&&A.set(-A.x,-A.y,-A.z,-A.w);const t=2*Math.acos(A.w),s=Math.sqrt(A.x*A.x+A.y*A.y+A.z*A.z),i=s<1e-6?new d(1,0,0):new d(A.x,A.y,A.z).divideScalar(s),n=Math.abs(i.x)+Math.abs(i.y)+Math.abs(i.z);let g=i.x/n,r=i.y/n;if(i.z<0){const B=g;g=(1-Math.abs(r))*(g>=0?1:-1),r=(1-Math.abs(B))*(r>=0?1:-1)}const I=g*.5+.5,o=r*.5+.5,a=Math.round(I*255),C=Math.round(o*255);return Math.round(t*(255/Math.PI))<<16|C<<8|a}function ct(e,A,t,s){const i=Math.max(-127,Math.min(127,e*127)),n=Math.max(-127,Math.min(127,A*127)),g=Math.max(-127,Math.min(127,t*127)),r=Math.max(-127,Math.min(127,s*127));return i&255|(n&255)<<8|(g&255)<<16|(r&255)<<24}function lt(e,A,t,s){const i=(s==null?void 0:s.sh1Min)??-1,n=(s==null?void 0:s.sh1Max)??1,g=.5*(i+n),r=63/(n-i),I=A*2;for(let o=0;o<9;++o){const a=(t[o]-g)*r,C=Math.round(Math.max(-63,Math.min(63,a)))&127,Q=o*7,B=Q+7,h=Math.floor(Q/32),l=Q-h*32,c=C<<l&4294967295;if(e[I+h]|=c,B>h*32+32){const E=C>>>32-l&4294967295;e[I+h+1]|=E}}}function ut(e,A,t,s){const i=(s==null?void 0:s.sh2Min)??-1,n=(s==null?void 0:s.sh2Max)??1,g=.5*(i+n),r=.5/(n-i);e[A*4+0]=ct((t[0]-g)*r,(t[1]-g)*r,(t[2]-g)*r,(t[3]-g)*r),e[A*4+1]=ct((t[4]-g)*r,(t[5]-g)*r,(t[6]-g)*r,(t[7]-g)*r),e[A*4+2]=ct((t[8]-g)*r,(t[9]-g)*r,(t[10]-g)*r,(t[11]-g)*r),e[A*4+3]=ct((t[12]-g)*r,(t[13]-g)*r,(t[14]-g)*r,0)}function yt(e,A,t,s){const i=(s==null?void 0:s.sh3Min)??-1,n=(s==null?void 0:s.sh3Max)??1,g=.5*(i+n),r=31/(n-i),I=A*4;for(let o=0;o<21;++o){const a=(t[o]-g)*r,C=Math.round(Math.max(-31,Math.min(31,a)))&63,Q=o*6,B=Q+6,h=Math.floor(Q/32),l=Q-h*32,c=C<<l&4294967295;if(e[I+h]|=c,B>h*32+32){const E=C>>>32-l&4294967295;e[I+h+1]|=E}}}function ke(e,A){const t=[];let s=0,i=null;const n=new ls((I,o)=>{if(t.push(I),s+=I.length,o||s>=A){const a=new Uint8Array(s);let C=0;for(const Q of t)a.set(Q,C),C+=Q.length;i=a.slice(0,A)}}),g=1024;let r=0;for(;i==null&&r<e.length;){const I=e.slice(r,r+g);n.push(I,!1),r+=g}if(i==null&&(n.push(new Uint8Array,!0),i==null))throw new Error("Failed to decompress partial gzip");return i}class Ge{constructor({fileBytes:A,chunkBytes:t=64*1024}){this.fileBytes=A,this.chunkBytes=t,this.offset=0,this.chunks=[],this.totalBytes=0,this.gunzip=new ls((s,i)=>{this.chunks.push(s),this.totalBytes+=s.length})}read(A){for(;this.totalBytes<A&&this.offset<this.fileBytes.length;){const n=Math.min(this.offset+this.chunkBytes,this.fileBytes.length);this.gunzip.push(this.fileBytes.subarray(this.offset,n),!1),this.offset=n}if(this.totalBytes<A&&this.offset>=this.fileBytes.length&&this.gunzip.push(new Uint8Array(0),!0),this.totalBytes<A)throw new Error(`Unexpected EOF: needed ${A}, got ${this.totalBytes}`);const t=new Uint8Array(this.totalBytes);let s=0;for(const n of this.chunks)t.set(n,s),s+=n.length;const i=t.subarray(0,A);return this.chunks=[t.subarray(A)],this.totalBytes-=A,i}}function zs(e,A,t){const s=Math.floor(e.length/32);if(s*32!==e.length)throw new Error("Invalid .splat file size");A(s);const i=new Float32Array(e.buffer);for(let n=0;n<s;++n){const g=n*32,r=n*8,I=i[r+0],o=i[r+1],a=i[r+2],C=i[r+3],Q=i[r+4],B=i[r+5],h=e[g+24]/255,l=e[g+25]/255,c=e[g+26]/255,E=e[g+27]/255,u=(e[g+28]-128)/128,y=(e[g+29]-128)/128,f=(e[g+30]-128)/128,D=(e[g+31]-128)/128;t(n,I,o,a,C,Q,B,y,f,D,u,E,h,l,c)}}function Ue(e,A){let t=0,s=0,i=new Uint32Array(0);return zs(e,n=>{t=n,s=Et(t),i=new Uint32Array(s*4)},(n,g,r,I,o,a,C,Q,B,h,l,c,E,u,y)=>{vt(i,n,g,r,I,o,a,C,Q,B,h,l,c,E,u,y,A)}),{packedArray:i,numSplats:t}}const ft={0:{bytesPerCenter:12,bytesPerScale:12,bytesPerRotation:16,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:4,scaleOffsetBytes:12,rotationOffsetBytes:24,colorOffsetBytes:40,sphericalHarmonicsOffsetBytes:44,scaleRange:1},1:{bytesPerCenter:6,bytesPerScale:6,bytesPerRotation:8,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:2,scaleOffsetBytes:6,rotationOffsetBytes:12,colorOffsetBytes:20,sphericalHarmonicsOffsetBytes:24,scaleRange:32767},2:{bytesPerCenter:6,bytesPerScale:6,bytesPerRotation:8,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:1,scaleOffsetBytes:6,rotationOffsetBytes:12,colorOffsetBytes:20,sphericalHarmonicsOffsetBytes:24,scaleRange:32767}},Ls={0:0,1:9,2:24,3:45};function Ye(e,A,t,s){var l;let g=0;const r=new DataView(e.buffer,g,4096);g+=4096;const I=r.getUint8(0),o=r.getUint8(1);if(I!==0||o<1)throw new Error(`Unsupported .ksplat version: ${I}.${o}`);const a=r.getUint32(4,!0);r.getUint32(16,!0);const C=r.getUint16(20,!0);if(C<0||C>2)throw new Error(`Invalid .ksplat compression level: ${C}`);const Q=r.getFloat32(36,!0)||-1.5,B=r.getFloat32(40,!0)||1.5;let h=4096+a*1024;for(let c=0;c<a;++c){let E=function(nA,U){if(C===0)return k.getFloat32(nA+J+U*4,!0);if(C===1)return O(k.getUint16(nA+J+U*2,!0));const cA=k.getUint8(nA+J+U)/255;return Q+cA*(B-Q)};const u=new DataView(e.buffer,g,1024);g+=1024;const y=u.getUint32(0,!0),f=u.getUint32(4,!0),D=u.getUint32(8,!0),S=u.getUint32(12,!0),b=u.getFloat32(16,!0),x=u.getUint16(20,!0),m=(u.getUint32(24,!0)||((l=ft[C])==null?void 0:l.scaleRange))??1,G=u.getUint32(32,!0),p=G*D,w=u.getUint32(36,!0),M=w*4,z=x*S+M,Y=u.getUint16(40,!0),N=Ls[Y],{bytesPerCenter:q,bytesPerScale:T,bytesPerRotation:v,bytesPerColor:P,bytesPerSphericalHarmonicsComponent:Z,scaleOffsetBytes:W,rotationOffsetBytes:L,colorOffsetBytes:K,sphericalHarmonicsOffsetBytes:J}=ft[C],R=q+T+v+P+N*Z,F=R*f,eA=F+z,iA=[0,3,6,1,4,7,2,5,8],IA=[9,14,19,10,15,20,11,16,21,12,17,22,13,18,23],gA=[24,31,38,25,32,39,26,33,40,27,34,41,28,35,42,29,36,43,30,37,44],oA=Y>=1?new Float32Array(3*3):void 0,aA=Y>=2?new Float32Array(5*3):void 0,FA=Y>=3?new Float32Array(7*3):void 0,CA=b/2/m,hA=h+M,EA=h+z,k=new DataView(e.buffer,EA,F),$=new Float32Array(e.buffer,hA,S*3),wA=new Uint32Array(e.buffer,h,w);let H=G,RA=p;for(let nA=0;nA<y;++nA){const U=nA*R;let cA;if(nA<p)cA=Math.floor(nA/D);else{const pA=wA[H-G];nA>=RA+pA&&(H+=1,RA+=pA),cA=H}const AA=C===0?k.getFloat32(U+0,!0):(k.getUint16(U+0,!0)-m)*CA+$[3*cA+0],_=C===0?k.getFloat32(U+4,!0):(k.getUint16(U+2,!0)-m)*CA+$[3*cA+1],mA=C===0?k.getFloat32(U+8,!0):(k.getUint16(U+4,!0)-m)*CA+$[3*cA+2],et=C===0?k.getFloat32(U+W+0,!0):O(k.getUint16(U+W+0,!0)),it=C===0?k.getFloat32(U+W+4,!0):O(k.getUint16(U+W+2,!0)),Xt=C===0?k.getFloat32(U+W+8,!0):O(k.getUint16(U+W+4,!0)),Wt=C===0?k.getFloat32(U+L+0,!0):O(k.getUint16(U+L+0,!0)),Pt=C===0?k.getFloat32(U+L+4,!0):O(k.getUint16(U+L+2,!0)),Vt=C===0?k.getFloat32(U+L+8,!0):O(k.getUint16(U+L+4,!0)),jt=C===0?k.getFloat32(U+L+12,!0):O(k.getUint16(U+L+6,!0)),Ot=k.getUint8(U+K+0)/255,$t=k.getUint8(U+K+1)/255,As=k.getUint8(U+K+2)/255,ts=k.getUint8(U+K+3)/255;if(t(nA,AA,_,mA,et,it,Xt,Pt,Vt,jt,Wt,ts,Ot,$t,As),Y>=1&&oA){for(const[pA,LA]of iA.entries())oA[pA]=E(U,LA);if(aA)for(const[pA,LA]of IA.entries())aA[pA]=E(U,LA);if(FA)for(const[pA,LA]of gA.entries())FA[pA]=E(U,LA);s==null||s(nA,oA,aA,FA)}}h+=eA}}function Re(e,A){var u;let i=0;const n=new DataView(e.buffer,i,4096);i+=4096;const g=n.getUint8(0),r=n.getUint8(1);if(g!==0||r<1)throw new Error(`Unsupported .ksplat version: ${g}.${r}`);const I=n.getUint32(4,!0),o=n.getUint32(16,!0),a=n.getUint16(20,!0);if(a<0||a>2)throw new Error(`Invalid .ksplat compression level: ${a}`);const C=n.getFloat32(36,!0)||-1.5,Q=n.getFloat32(40,!0)||1.5,B=o,h=Et(B),l=new Uint32Array(h*4),c={};let E=4096+I*1024;for(let y=0;y<I;++y){let f=function(AA,_){if(a===0)return H.getFloat32(AA+eA+_*4,!0);if(a===1)return O(H.getUint16(AA+eA+_*2,!0));const mA=H.getUint8(AA+eA+_)/255;return C+mA*(Q-C)};const D=new DataView(e.buffer,i,1024);i+=1024;const S=D.getUint32(0,!0),b=D.getUint32(4,!0),x=D.getUint32(8,!0),m=D.getUint32(12,!0),G=D.getFloat32(16,!0),p=D.getUint16(20,!0),w=(D.getUint32(24,!0)||((u=ft[a])==null?void 0:u.scaleRange))??1,M=D.getUint32(32,!0),z=M*x,Y=D.getUint32(36,!0),N=Y*4,q=p*m+N,T=D.getUint16(40,!0),v=Ls[T],{bytesPerCenter:P,bytesPerScale:Z,bytesPerRotation:W,bytesPerColor:L,bytesPerSphericalHarmonicsComponent:K,scaleOffsetBytes:J,rotationOffsetBytes:R,colorOffsetBytes:F,sphericalHarmonicsOffsetBytes:eA}=ft[a],iA=P+Z+W+L+v*K,IA=iA*b,gA=IA+q,oA=[0,3,6,1,4,7,2,5,8],aA=[9,14,19,10,15,20,11,16,21,12,17,22,13,18,23],FA=[24,31,38,25,32,39,26,33,40,27,34,41,28,35,42,29,36,43,30,37,44],CA=T>=1?new Float32Array(3*3):void 0,hA=T>=2?new Float32Array(5*3):void 0,EA=T>=3?new Float32Array(7*3):void 0,k=G/2/w,$=E+N,wA=E+q,H=new DataView(e.buffer,wA,IA),RA=new Float32Array(e.buffer,$,m*3),nA=new Uint32Array(e.buffer,E,Y);let U=M,cA=z;for(let AA=0;AA<S;++AA){const _=AA*iA;let mA;if(AA<z)mA=Math.floor(AA/x);else{const bA=nA[U-M];AA>=cA+bA&&(U+=1,cA+=bA),mA=U}const et=a===0?H.getFloat32(_+0,!0):(H.getUint16(_+0,!0)-w)*k+RA[3*mA+0],it=a===0?H.getFloat32(_+4,!0):(H.getUint16(_+2,!0)-w)*k+RA[3*mA+1],Xt=a===0?H.getFloat32(_+8,!0):(H.getUint16(_+4,!0)-w)*k+RA[3*mA+2],Wt=a===0?H.getFloat32(_+J+0,!0):O(H.getUint16(_+J+0,!0)),Pt=a===0?H.getFloat32(_+J+4,!0):O(H.getUint16(_+J+2,!0)),Vt=a===0?H.getFloat32(_+J+8,!0):O(H.getUint16(_+J+4,!0)),jt=a===0?H.getFloat32(_+R+0,!0):O(H.getUint16(_+R+0,!0)),Ot=a===0?H.getFloat32(_+R+4,!0):O(H.getUint16(_+R+2,!0)),$t=a===0?H.getFloat32(_+R+8,!0):O(H.getUint16(_+R+4,!0)),As=a===0?H.getFloat32(_+R+12,!0):O(H.getUint16(_+R+6,!0)),ts=H.getUint8(_+F+0)/255,pA=H.getUint8(_+F+1)/255,LA=H.getUint8(_+F+2)/255,Oe=H.getUint8(_+F+3)/255;if(vt(l,AA,et,it,Xt,Wt,Pt,Vt,Ot,$t,As,jt,Oe,ts,pA,LA,A),T>=1){if(CA){c.sh1||(c.sh1=new Uint32Array(B*2));for(const[bA,nt]of oA.entries())CA[bA]=f(_,nt);lt(c.sh1,AA,CA,A)}if(hA){c.sh2||(c.sh2=new Uint32Array(B*4));for(const[bA,nt]of aA.entries())hA[bA]=f(_,nt);ut(c.sh2,AA,hA,A)}if(EA){c.sh3||(c.sh3=new Uint32Array(B*4));for(const[bA,nt]of FA.entries())EA[bA]=f(_,nt);yt(c.sh3,AA,EA,A)}}}E+=gA}return{packedArray:l,numSplats:B,extra:c}}const VA=class VA{constructor({fileBytes:A}){this.header="",this.littleEndian=!0,this.elements={},this.comments=[],this.data=null,this.numSplats=0,this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A}async parseHeader(){const t=new ReadableStream({start:g=>{g.enqueue(this.fileBytes.slice(0,65536)),g.close()}}).pipeThrough(new TextDecoderStream).getReader();this.header="";const s=`end_header\n`;for(;;){const{value:g,done:r}=await t.read();if(r)throw new Error("Failed to read header");this.header+=g;const I=this.header.indexOf(s);if(I>=0){this.header=this.header.slice(0,I+s.length);break}}const i=new TextEncoder().encode(this.header).length;this.data=new DataView(this.fileBytes.buffer,i),this.elements={};let n=null;this.comments=[],this.header.trim().split(`\n`).forEach((g,r)=>{const I=g.trim();if(r===0){if(I!=="ply")throw new Error("Invalid PLY header");return}if(I.length===0)return;const o=I.split(" ");switch(o[0]){case"format":if(o[1]==="binary_little_endian")this.littleEndian=!0;else if(o[1]==="binary_big_endian")this.littleEndian=!1;else throw new Error(`Unsupported PLY format: ${o[1]}`);if(o[2]!=="1.0")throw new Error(`Unsupported PLY version: ${o[2]}`);break;case"end_header":break;case"comment":this.comments.push(I.slice(8));break;case"element":{const a=o[1];n={name:a,count:Number.parseInt(o[2]),properties:{}},this.elements[a]=n;break}case"property":if(n==null)throw new Error("Property must be inside an element");o[1]==="list"?n.properties[o[4]]={isList:!0,type:o[3],countType:o[2]}:n.properties[o[2]]={isList:!1,type:o[1]};break}}),this.elements.vertex&&(this.numSplats=this.elements.vertex.count)}parseData(A){let t=0;const s=this.data;if(s==null)throw new Error("No data to parse");for(const i in this.elements){const n=this.elements[i],{count:g,properties:r}=n,I={},o=[];for(const[C,Q]of Object.entries(r))Q.isList?(I[C]=[],o.push(()=>{const B=I[C];B.length=xt[Q.countType](s,t,this.littleEndian),t+=PA[Q.countType];for(let h=0;h<B.length;h++)B[h]=xt[Q.type](s,t,this.littleEndian),t+=PA[Q.type]})):(I[C]=0,o.push(()=>{I[C]=xt[Q.type](s,t,this.littleEndian),t+=PA[Q.type]}));const a=A(n)??(()=>{});for(let C=0;C<g;C++){for(const Q of o)Q();a(C,I)}}}parseSplats(A,t){if(this.elements.vertex==null)throw new Error("No vertex element found");let s=!1;const i=[];let n=0,g=[],r=[],I=[],o,a,C;function Q(){const E=Je[n];g=new Array(3).fill(null).flatMap((u,y)=>[0,1,2].map((f,D)=>`f_rest_${y+D*E/3}`)),r=new Array(5).fill(null).flatMap((u,y)=>[0,1,2].map((f,D)=>`f_rest_${3+y+D*E/3}`)),I=new Array(7).fill(null).flatMap((u,y)=>[0,1,2].map((f,D)=>`f_rest_${8+y+D*E/3}`)),o=n>=1?new Float32Array(3*3):void 0,a=n>=2?new Float32Array(5*3):void 0,C=n>=3?new Float32Array(7*3):void 0}function B(E,u){if(!o)throw new Error("Missing sh1");for(const[y,f]of g.entries())o[y]=u[f]*8/255-4;if(a)for(const[y,f]of r.entries())a[y]=u[f]*8/255-4;if(C)for(const[y,f]of I.entries())C[y]=u[f]*8/255-4;t==null||t(E,o,a,C)}function h(E){const{min_x:u,min_y:y,min_z:f,max_x:D,max_y:S,max_z:b,min_scale_x:x,min_scale_y:m,min_scale_z:G,max_scale_x:p,max_scale_y:w,max_scale_z:M}=E.properties;if(!u||!y||!f||!D||!S||!b||!x||!m||!G||!p||!w||!M)throw new Error("Missing PLY chunk properties");return s=!0,(z,Y)=>{const{min_x:N,min_y:q,min_z:T,max_x:v,max_y:P,max_z:Z,min_scale_x:W,min_scale_y:L,min_scale_z:K,max_scale_x:J,max_scale_y:R,max_scale_z:F,min_r:eA,min_g:iA,min_b:IA,max_r:gA,max_g:oA,max_b:aA}=Y;i.push({min_x:N,min_y:q,min_z:T,max_x:v,max_y:P,max_z:Z,min_scale_x:W,min_scale_y:L,min_scale_z:K,max_scale_x:J,max_scale_y:R,max_scale_z:F,min_r:eA,min_g:iA,min_b:IA,max_r:gA,max_g:oA,max_b:aA})}}function l(E){if(t&&E.name==="sh")return n=qs(E.properties),Q(),B;if(E.name!=="vertex")return null;const{packed_position:u,packed_rotation:y,packed_scale:f,packed_color:D}=E.properties;if(!u||!y||!f||!D)throw new Error("Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color");const S=Math.sqrt(2);return(b,x)=>{const m=i[b>>>8];if(m==null)throw new Error("Missing PLY chunk");const{min_x:G,min_y:p,min_z:w,max_x:M,max_y:z,max_z:Y,min_scale_x:N,min_scale_y:q,min_scale_z:T,max_scale_x:v,max_scale_y:P,max_scale_z:Z,min_r:W,min_g:L,min_b:K,max_r:J,max_g:R,max_b:F}=m,{packed_position:eA,packed_rotation:iA,packed_scale:IA,packed_color:gA}=x,oA=(eA>>>21&2047)/2047*(M-G)+G,aA=(eA>>>11&1023)/1023*(z-p)+p,FA=(eA&2047)/2047*(Y-w)+w,CA=((iA>>>20&1023)/1023-.5)*S,hA=((iA>>>10&1023)/1023-.5)*S,EA=((iA&1023)/1023-.5)*S,k=Math.sqrt(Math.max(0,1-CA*CA-hA*hA-EA*EA)),$=iA>>>30,wA=$===0?CA:$===1?k:hA,H=$<=1?hA:$===2?k:EA,RA=$<=2?EA:k,nA=$===0?k:CA,U=Math.exp((IA>>>21&2047)/2047*(v-N)+N),cA=Math.exp((IA>>>11&1023)/1023*(P-q)+q),AA=Math.exp((IA&2047)/2047*(Z-T)+T),_=(gA>>>24&255)/255*((J??1)-(W??0))+(W??0),mA=(gA>>>16&255)/255*((R??1)-(L??0))+(L??0),et=(gA>>>8&255)/255*((F??1)-(K??0))+(K??0),it=(gA&255)/255;A(b,oA,aA,FA,U,cA,AA,wA,H,RA,nA,it,_,mA,et)}}const c=E=>{if(E.name==="chunk")return h(E);if(s)return l(E);if(E.name!=="vertex")return null;const{x:u,y,z:f,scale_0:D,scale_1:S,scale_2:b,rot_0:x,rot_1:m,rot_2:G,rot_3:p,opacity:w,f_dc_0:M,f_dc_1:z,f_dc_2:Y,red:N,green:q,blue:T,alpha:v}=E.properties;if(!u||!y||!f)throw new Error("Missing PLY properties: x, y, z");const P=D&&S&&b,Z=x&&m&&G&&p,W=v!=null?Dt[v.type]:1,L=N!=null?Dt[N.type]:1,K=q!=null?Dt[q.type]:1,J=T!=null?Dt[T.type]:1;return n=qs(E.properties),Q(),(R,F)=>{const eA=P?Math.exp(F.scale_0):VA.defaultPointScale,iA=P?Math.exp(F.scale_1):VA.defaultPointScale,IA=P?Math.exp(F.scale_2):VA.defaultPointScale,gA=Z?F.rot_1:0,oA=Z?F.rot_2:0,aA=Z?F.rot_3:0,FA=Z?F.rot_0:1,CA=w!=null?1/(1+Math.exp(-F.opacity)):v!=null?F.alpha/W:1,hA=M!=null?F.f_dc_0*mt+.5:N!=null?F.red/L:1,EA=z!=null?F.f_dc_1*mt+.5:q!=null?F.green/K:1,k=Y!=null?F.f_dc_2*mt+.5:T!=null?F.blue/J:1;if(A(R,F.x,F.y,F.z,eA,iA,IA,gA,oA,aA,FA,CA,hA,EA,k),t&&o){if(o)for(const[$,wA]of g.entries())o[$]=F[wA];if(a)for(const[$,wA]of r.entries())a[$]=F[wA];if(C)for(const[$,wA]of I.entries())C[$]=F[wA];t(R,o,a,C)}}};this.parseData(c)}injectRgba(A){let t=0;const s=this.data;if(s==null)throw new Error("No parsed data");if(A.length!==this.numSplats*4)throw new Error("Invalid RGBA array length");for(const i in this.elements){const n=this.elements[i],{count:g,properties:r}=n,I=[];let o=0;const a=i==="vertex";if(a){for(const C of["opacity","f_dc_0","f_dc_1","f_dc_2"])if(!r[C]||r[C].type!=="float")throw new Error(`Can\'t injectRgba due to property: ${C}`)}for(const[C,Q]of Object.entries(r))if(Q.isList)I.push(()=>{const B=xt[Q.countType](s,t,this.littleEndian);t+=PA[Q.countType],t+=B*PA[Q.type]});else{if(a)if(C==="f_dc_0"||C==="f_dc_1"||C==="f_dc_2"){const B=Number.parseInt(C.slice(5));I.push(()=>{const h=(A[o+B]/255-.5)/mt;Hs[Q.type](s,t,this.littleEndian,h)})}else C==="opacity"&&I.push(()=>{const B=Math.max(-100,Math.min(100,-Math.log(1/(A[o+3]/255)-1)));Hs[Q.type](s,t,this.littleEndian,B)});I.push(()=>{t+=PA[Q.type]})}for(let C=0;C<g;C++){for(const Q of I)Q();a&&(o+=4)}}}};VA.defaultPointScale=.001;let wt=VA;const mt=.28209479177387814,xt={char:(e,A,t)=>e.getInt8(A),uchar:(e,A,t)=>e.getUint8(A),short:(e,A,t)=>e.getInt16(A,t),ushort:(e,A,t)=>e.getUint16(A,t),int:(e,A,t)=>e.getInt32(A,t),uint:(e,A,t)=>e.getUint32(A,t),float:(e,A,t)=>e.getFloat32(A,t),double:(e,A,t)=>e.getFloat64(A,t)},Hs={char:(e,A,t,s)=>{e.setInt8(A,s)},uchar:(e,A,t,s)=>{e.setUint8(A,s)},short:(e,A,t,s)=>{e.setInt16(A,s,t)},ushort:(e,A,t,s)=>{e.setUint16(A,s,t)},int:(e,A,t,s)=>{e.setInt32(A,s,t)},uint:(e,A,t,s)=>{e.setUint32(A,s,t)},float:(e,A,t,s)=>{e.setFloat32(A,s,t)},double:(e,A,t,s)=>{e.setFloat64(A,s,t)}},PA={char:1,uchar:1,short:2,ushort:2,int:4,uint:4,float:4,double:8},Dt={char:127,uchar:255,short:32767,ushort:65535,int:2147483647,uint:4294967295,float:1,double:1},be={0:0,9:1,24:2,45:3},Je={0:0,1:9,2:24,3:45};function qs(e){let A=0;for(;e[`f_rest_${A}`];)A+=1;const t=be[A];if(t==null)throw new Error(`Unsupported number of SH coefficients: ${A}`);return t}var tt=(e=>(e.PLY="ply",e.SPZ="spz",e.SPLAT="splat",e.KSPLAT="ksplat",e.PCSOGS="pcsogs",e.PCSOGSZIP="pcsogszip",e))(tt||{});function _e(e){const A=new DataView(e.buffer);if((A.getUint32(0,!0)&16777215)===7957616)return"ply";if((A.getUint32(0,!0)&16777215)===559903){const t=ke(e,4);return new DataView(t.buffer).getUint32(0,!0)===1347635022?"spz":void 0}if(A.getUint32(0,!0)===67324752)return vs(e)?"pcsogszip":void 0}function ze(e){const A=e.split(/[?#]/,1)[0],t=Math.max(A.lastIndexOf("/"),A.lastIndexOf("\\\\")),s=A.slice(t+1),i=s.lastIndexOf(".");return i<=0||i===s.length-1?"":s.slice(i+1).toLowerCase()}function Le(e){const A=ze(e);if(A==="ply")return"ply";if(A==="spz")return"spz";if(A==="splat")return"splat";if(A==="ksplat")return"ksplat"}function He(e){try{let A;if(typeof e=="string")A=e;else{const s=e instanceof ArrayBuffer?new Uint8Array(e):e;if(s.length>65536)return;A=new TextDecoder().decode(s)}const t=JSON.parse(A);if(!t||typeof t!="object"||Array.isArray(t))return;for(const s of["means","scales","quats","sh0"])if(!t[s]||typeof t[s]!="object"||Array.isArray(t[s])||!t[s].shape||!t[s].files||s!=="quats"&&(!t[s].mins||!t[s].maxs))return;return t}catch{return}}function vs(e){try{const A=e instanceof ArrayBuffer?new Uint8Array(e):e;let t=null;const s=ue(A,{filter:({name:n})=>n.split(/[\\\\/]/).pop()==="meta.json"?(t=n,!0):!1});if(!t)return;const i=He(s[t]);return i?{name:t,json:i}:void 0}catch{return}}class qe{constructor({maxSplats:A=1}={}){this.numSplats=0,this.maxSplats=Ne(A).maxSplats,this.centers=new Float32Array(this.maxSplats*3),this.scales=new Float32Array(this.maxSplats*3),this.quaternions=new Float32Array(this.maxSplats*4),this.opacities=new Float32Array(this.maxSplats),this.colors=new Float32Array(this.maxSplats*3)}pushSplat(){const A=this.numSplats;return this.ensureIndex(A),this.numSplats+=1,A}unpushSplat(A){if(A===this.numSplats-1)this.numSplats-=1;else throw new Error("Cannot unpush splat from non-last position")}ensureCapacity(A){if(A>this.maxSplats){const t=Math.max(A,this.maxSplats*2),s=new Float32Array(t*3),i=new Float32Array(t*3),n=new Float32Array(t*4),g=new Float32Array(t),r=new Float32Array(t*3);if(s.set(this.centers),i.set(this.scales),n.set(this.quaternions),g.set(this.opacities),r.set(this.colors),this.centers=s,this.scales=i,this.quaternions=n,this.opacities=g,this.colors=r,this.sh1){const I=new Float32Array(t*9);I.set(this.sh1),this.sh1=I}if(this.sh2){const I=new Float32Array(t*15);I.set(this.sh2),this.sh2=I}if(this.sh3){const I=new Float32Array(t*21);I.set(this.sh3),this.sh3=I}this.maxSplats=t}}ensureIndex(A){this.ensureCapacity(A+1)}setCenter(A,t,s,i){this.centers[A*3]=t,this.centers[A*3+1]=s,this.centers[A*3+2]=i}setScale(A,t,s,i){this.scales[A*3]=t,this.scales[A*3+1]=s,this.scales[A*3+2]=i}setQuaternion(A,t,s,i,n){this.quaternions[A*4]=t,this.quaternions[A*4+1]=s,this.quaternions[A*4+2]=i,this.quaternions[A*4+3]=n}setOpacity(A,t){this.opacities[A]=t}setColor(A,t,s,i){this.colors[A*3]=t,this.colors[A*3+1]=s,this.colors[A*3+2]=i}setSh1(A,t){this.sh1||(this.sh1=new Float32Array(this.maxSplats*9));for(let s=0;s<9;++s)this.sh1[A*9+s]=t[s]}setSh2(A,t){this.sh2||(this.sh2=new Float32Array(this.maxSplats*15));for(let s=0;s<15;++s)this.sh2[A*15+s]=t[s]}setSh3(A,t){this.sh3||(this.sh3=new Float32Array(this.maxSplats*21));for(let s=0;s<21;++s)this.sh3[A*21+s]=t[s]}}async function Ks(e,A,t){if(e.quats.encoding!=="quaternion_packed")throw new Error("Unsupported quaternion encoding");const s=e.means.shape[0],i=Et(s),n=new Uint32Array(i*4),g={},r=Promise.all([st(A[e.means.files[0]]),st(A[e.means.files[1]])]).then(Q=>{for(let B=0;B<s;++B){const h=B*4,l=(Q[0][h+0]+(Q[1][h+0]<<8))/65535,c=(Q[0][h+1]+(Q[1][h+1]<<8))/65535,E=(Q[0][h+2]+(Q[1][h+2]<<8))/65535;let u=e.means.mins[0]+(e.means.maxs[0]-e.means.mins[0])*l,y=e.means.mins[1]+(e.means.maxs[1]-e.means.mins[1])*c,f=e.means.mins[2]+(e.means.maxs[2]-e.means.mins[2])*E;u=Math.sign(u)*(Math.exp(Math.abs(u))-1),y=Math.sign(y)*(Math.exp(Math.abs(y))-1),f=Math.sign(f)*(Math.exp(Math.abs(f))-1),Rs(n,B,u,y,f)}}),I=st(A[e.scales.files[0]]).then(Q=>{for(let B=0;B<s;++B){const h=B*4,l=Q[h+0]/255,c=Q[h+1]/255,E=Q[h+2]/255,u=e.scales.mins[0]+(e.scales.maxs[0]-e.scales.mins[0])*l,y=e.scales.mins[1]+(e.scales.maxs[1]-e.scales.mins[1])*c,f=e.scales.mins[2]+(e.scales.maxs[2]-e.scales.mins[2])*E;bs(n,B,Math.exp(u),Math.exp(y),Math.exp(f),t)}}),o=st(A[e.quats.files[0]]).then(Q=>{const B=Math.sqrt(2);for(let h=0;h<s;++h){const l=h*4,c=(Q[l+0]/255-.5)*B,E=(Q[l+1]/255-.5)*B,u=(Q[l+2]/255-.5)*B,y=Math.sqrt(Math.max(0,1-c*c-E*E-u*u)),f=Q[l+3]-252,D=f===0?c:f===1?y:E,S=f<=1?E:f===2?y:u,b=f<=2?u:y;Js(n,h,D,S,b,f===0?y:c)}}),a=st(A[e.sh0.files[0]]).then(Q=>{const B=.28209479177387814;for(let h=0;h<s;++h){const l=h*4,c=Q[l+0]/255,E=Q[l+1]/255,u=Q[l+2]/255,y=Q[l+3]/255,f=e.sh0.mins[0]+(e.sh0.maxs[0]-e.sh0.mins[0])*c,D=e.sh0.mins[1]+(e.sh0.maxs[1]-e.sh0.mins[1])*E,S=e.sh0.mins[2]+(e.sh0.maxs[2]-e.sh0.mins[2])*u,b=e.sh0.mins[3]+(e.sh0.maxs[3]-e.sh0.mins[3])*y,x=B*f+.5,m=B*D+.5,G=B*S+.5,p=1/(1+Math.exp(-b));Fe(n,h,x,m,G,p,t)}}),C=[r,I,o,a];if(e.shN){const Q=e.shN.shape[1]>=45,B=e.shN.shape[1]>=24,h=e.shN.shape[1]>=9;h&&(g.sh1=new Uint32Array(s*2)),B&&(g.sh2=new Uint32Array(s*4)),Q&&(g.sh3=new Uint32Array(s*4));const l=new Float32Array(9),c=new Float32Array(15),E=new Float32Array(21),u=e.shN,y=Promise.all([Kt(A[e.shN.files[0]]),Kt(A[e.shN.files[1]])]).then(([f,D])=>{for(let S=0;S<s;++S){const b=S*4,x=D.rgba[b+0]+(D.rgba[b+1]<<8),m=(x&63)*15,p=(x>>>6)*f.width+m;for(let w=0;w<3;++w){if(h)for(let M=0;M<3;++M)l[M*3+w]=u.mins+(u.maxs-u.mins)*f.rgba[(p+M)*4+w]/255;if(B)for(let M=0;M<5;++M)c[M*3+w]=u.mins+(u.maxs-u.mins)*f.rgba[(p+3+M)*4+w]/255;if(Q)for(let M=0;M<7;++M)E[M*3+w]=u.mins+(u.maxs-u.mins)*f.rgba[(p+8+M)*4+w]/255}h&&lt(g.sh1,S,l,t),B&&ut(g.sh2,S,c,t),Q&&yt(g.sh3,S,E,t)}});C.push(y)}return await Promise.all(C),{packedArray:n,numSplats:s,extra:g}}let pt=null;async function Kt(e){if(!pt&&(pt=new OffscreenCanvas(1,1).getContext("webgl2"),!pt))throw new Error("Failed to create WebGL2 context");const A=new Blob([e]),t=await createImageBitmap(A,{premultiplyAlpha:"none"}),s=pt,i=s.createTexture();s.bindTexture(s.TEXTURE_2D,i),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,!0),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,t),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.NEAREST),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.NEAREST);const n=s.createFramebuffer();s.bindFramebuffer(s.FRAMEBUFFER,n),s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,i,0);const g=new Uint8Array(t.width*t.height*4);return s.readPixels(0,0,t.width,t.height,s.RGBA,s.UNSIGNED_BYTE,g),s.deleteTexture(i),s.deleteFramebuffer(n),{rgba:g,width:t.width,height:t.height}}async function st(e){const{rgba:A}=await Kt(e);return A}async function ve(e,A){var Q;const t=vs(e);if(!t)throw new Error("Invalid PC SOGS zip file");const{name:s,json:i}=t,n=s.lastIndexOf("/"),g=s.lastIndexOf("\\\\"),r=s.slice(0,Math.max(n,g)+1),I=new Map,o=[...i.means.files,...i.scales.files,...i.quats.files,...i.sh0.files,...((Q=i.shN)==null?void 0:Q.files)??[]];for(const B of o)I.set(r+B,B);const a=await new Promise((B,h)=>{le(e,{filter:({name:l})=>I.has(l)},(l,c)=>{l?h(l):B(c)})}),C={};for(const[B,h]of I.entries())C[h]=a[B];return await Ks(i,C,A)}class Ts{constructor({fileBytes:A}){this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A,this.reader=new Ge({fileBytes:this.fileBytes});const t=new DataView(this.reader.read(16).buffer);if(t.getUint32(0,!0)!==1347635022)throw new Error("Invalid SPZ file");if(this.version=t.getUint32(4,!0),this.version<1||this.version>2)throw new Error(`Unsupported SPZ version: ${this.version}`);this.numSplats=t.getUint32(8,!0),this.shDegree=t.getUint8(12),this.fractionalBits=t.getUint8(13),this.flags=t.getUint8(14),this.flagAntiAlias=(this.flags&1)!==0,this.reserved=t.getUint8(15),this.parsed=!1}parseSplats(A,t,s,i,n,g){if(this.parsed)throw new Error("SPZ file already parsed");if(this.parsed=!0,this.version===1){const r=this.reader.read(this.numSplats*3*2),I=new Uint16Array(r.buffer);for(let o=0;o<this.numSplats;o++){const a=o*3,C=O(I[a]),Q=O(I[a+1]),B=O(I[a+2]);A==null||A(o,C,Q,B)}}else if(this.version===2){const r=1<<this.fractionalBits,I=this.reader.read(this.numSplats*3*3);for(let o=0;o<this.numSplats;o++){const a=o*9,C=((I[a+2]<<24|I[a+1]<<16|I[a]<<8)>>8)/r,Q=((I[a+5]<<24|I[a+4]<<16|I[a+3]<<8)>>8)/r,B=((I[a+8]<<24|I[a+7]<<16|I[a+6]<<8)>>8)/r;A==null||A(o,C,Q,B)}}else throw new Error("Unreachable");{const r=this.reader.read(this.numSplats);for(let I=0;I<this.numSplats;I++)t==null||t(I,r[I]/255)}{const r=this.reader.read(this.numSplats*3),I=Xs/.15;for(let o=0;o<this.numSplats;o++){const a=o*3,C=(r[a]/255-.5)*I+.5,Q=(r[a+1]/255-.5)*I+.5,B=(r[a+2]/255-.5)*I+.5;s==null||s(o,C,Q,B)}}{const r=this.reader.read(this.numSplats*3);for(let I=0;I<this.numSplats;I++){const o=I*3,a=Math.exp(r[o]/16-10),C=Math.exp(r[o+1]/16-10),Q=Math.exp(r[o+2]/16-10);i==null||i(I,a,C,Q)}}{const r=this.reader.read(this.numSplats*3);for(let I=0;I<this.numSplats;I++){const o=I*3,a=r[o]/127.5-1,C=r[o+1]/127.5-1,Q=r[o+2]/127.5-1,B=Math.sqrt(Math.max(0,1-a*a-C*C-Q*Q));n==null||n(I,a,C,Q,B)}}if(g&&this.shDegree>=1){const r=new Float32Array(9),I=this.shDegree>=2?new Float32Array(5*3):void 0,o=this.shDegree>=3?new Float32Array(7*3):void 0,a=this.reader.read(this.numSplats*Zs[this.shDegree]*3);let C=0;for(let Q=0;Q<this.numSplats;Q++){for(let B=0;B<9;++B)r[B]=(a[C+B]-128)/128;if(C+=9,I){for(let B=0;B<15;++B)I[B]=(a[C+B]-128)/128;C+=15}if(o){for(let B=0;B<21;++B)o[B]=(a[C+B]-128)/128;C+=21}g==null||g(Q,r,I,o)}}}}const Zs={1:3,2:8,3:15},Xs=.28209479177387814,Ke=1347635022,Te=2,Ze=1;class YA{constructor({numSplats:A,shDegree:t,fractionalBits:s=12,flagAntiAlias:i=!0}){this.clippedCount=0;const n=19+(t>=1?9:0)+(t>=2?15:0)+(t>=3?21:0),g=16+A*n;this.buffer=new ArrayBuffer(g),this.view=new DataView(this.buffer),this.view.setUint32(0,Ke,!0),this.view.setUint32(4,Te,!0),this.view.setUint32(8,A,!0),this.view.setUint8(12,t),this.view.setUint8(13,s),this.view.setUint8(14,i?Ze:0),this.view.setUint8(15,0),this.numSplats=A,this.shDegree=t,this.fractionalBits=s,this.fraction=1<<s,this.flagAntiAlias=i}setCenter(A,t,s,i){const n=Math.round(t*this.fraction),g=Math.max(-8388607,Math.min(8388607,n)),r=Math.round(s*this.fraction),I=Math.max(-8388607,Math.min(8388607,r)),o=Math.round(i*this.fraction),a=Math.max(-8388607,Math.min(8388607,o));(n!==g||r!==I||o!==a)&&(this.clippedCount+=1);const B=16+A*9;this.view.setUint8(B,g&255),this.view.setUint8(B+1,g>>8&255),this.view.setUint8(B+2,g>>16&255),this.view.setUint8(B+3,I&255),this.view.setUint8(B+4,I>>8&255),this.view.setUint8(B+5,I>>16&255),this.view.setUint8(B+6,a&255),this.view.setUint8(B+7,a>>8&255),this.view.setUint8(B+8,a>>16&255)}setAlpha(A,t){const s=16+this.numSplats*9+A;this.view.setUint8(s,Math.max(0,Math.min(255,Math.round(t*255))))}static scaleRgb(A){const t=((A-.5)/(Xs/.15)+.5)*255;return Math.max(0,Math.min(255,Math.round(t)))}setRgb(A,t,s,i){const n=16+this.numSplats*10+A*3;this.view.setUint8(n,YA.scaleRgb(t)),this.view.setUint8(n+1,YA.scaleRgb(s)),this.view.setUint8(n+2,YA.scaleRgb(i))}setScale(A,t,s,i){const n=16+this.numSplats*13+A*3;this.view.setUint8(n,Math.max(0,Math.min(255,Math.round((Math.log(t)+10)*16)))),this.view.setUint8(n+1,Math.max(0,Math.min(255,Math.round((Math.log(s)+10)*16)))),this.view.setUint8(n+2,Math.max(0,Math.min(255,Math.round((Math.log(i)+10)*16))))}setQuat(A,t,s,i,n){const g=16+this.numSplats*16+A*3,r=n<0;this.view.setUint8(g,Math.max(0,Math.min(255,Math.round(((r?-t:t)+1)*127.5)))),this.view.setUint8(g+1,Math.max(0,Math.min(255,Math.round(((r?-s:s)+1)*127.5)))),this.view.setUint8(g+2,Math.max(0,Math.min(255,Math.round(((r?-i:i)+1)*127.5))))}static quantizeSh(A,t){const s=Math.round(A*128)+128,i=1<<8-t,n=Math.floor((s+i/2)/i)*i;return Math.max(0,Math.min(255,n))}setSh(A,t,s,i){const n=Zs[this.shDegree]||0,g=16+this.numSplats*19+A*n*3;for(let r=0;r<9;++r)this.view.setUint8(g+r,YA.quantizeSh(t[r],5));if(s){const r=g+9;for(let I=0;I<15;++I)this.view.setUint8(r+I,YA.quantizeSh(s[I],4));if(i){const I=r+15;for(let o=0;o<21;++o)this.view.setUint8(I+o,YA.quantizeSh(i[o],4))}}}async finalize(){const A=new Uint8Array(this.buffer),s=new ReadableStream({async start(g){g.enqueue(A),g.close()}}).pipeThrough(new CompressionStream("gzip")),n=await new Response(s).arrayBuffer();return console.log("Compressed",A.length,"bytes to",n.byteLength,"bytes"),new Uint8Array(n)}}async function Xe(e){var a,C,Q;const A=new qe,{inputs:t,clipXyz:s,maxSh:i,fractionalBits:n=12,opacityThreshold:g}=e;for(const B of t){let h=function(x){return x.multiplyScalar(y),x.applyQuaternion(f),x.add(D),x},l=function(x){return x.multiplyScalar(y),x},c=function(x){return x.premultiply(f),x},E=function(x){return!S||S.containsPoint(x)},u=function(x){return g!==void 0?x>=g:!0};const y=((a=B.transform)==null?void 0:a.scale)??1,f=new NA().fromArray(((C=B.transform)==null?void 0:C.quaternion)??[0,0,0,1]),D=new d().fromArray(((Q=B.transform)==null?void 0:Q.translate)??[0,0,0]),S=s?new Fs(new d().fromArray(s.min),new d().fromArray(s.max)):void 0;let b=B.fileType;switch(b||(b=_e(B.fileBytes),!b&&B.pathOrUrl&&(b=Le(B.pathOrUrl))),b){case tt.PLY:{const x=new wt({fileBytes:B.fileBytes});await x.parseHeader();let m=null;x.parseSplats((G,p,w,M,z,Y,N,q,T,v,P,Z,W,L,K)=>{const J=h(new d(p,w,M));if(E(J)&&u(Z)){m=A.pushSplat(),A.setCenter(m,J.x,J.y,J.z);const R=l(new d(z,Y,N));A.setScale(m,R.x,R.y,R.z);const F=c(new NA(q,T,v,P));A.setQuaternion(m,F.x,F.y,F.z,F.w),A.setOpacity(m,Z),A.setColor(m,W,L,K)}else m=null},(G,p,w,M)=>{p&&m!==null&&A.setSh1(m,p),w&&m!==null&&A.setSh2(m,w),M&&m!==null&&A.setSh3(m,M)});break}case tt.SPZ:{const x=new Ts({fileBytes:B.fileBytes}),m=new Int32Array(x.numSplats);m.fill(-1);const G=new Float32Array(x.numSplats*3),p=new d;x.parseSplats((w,M,z,Y)=>{const N=h(new d(M,z,Y));G[w*3]=N.x,G[w*3+1]=N.y,G[w*3+2]=N.z},(w,M)=>{p.fromArray(G,w*3),E(p)&&u(M)&&(m[w]=A.pushSplat(),A.setCenter(m[w],p.x,p.y,p.z),A.setOpacity(m[w],M))},(w,M,z,Y)=>{m[w]>=0&&A.setColor(m[w],M,z,Y)},(w,M,z,Y)=>{if(m[w]>=0){const N=l(new d(M,z,Y));A.setScale(m[w],N.x,N.y,N.z)}},(w,M,z,Y,N)=>{if(m[w]>=0){const q=c(new NA(M,z,Y,N));A.setQuaternion(m[w],q.x,q.y,q.z,q.w)}},(w,M,z,Y)=>{m[w]>=0&&(A.setSh1(m[w],M),z&&A.setSh2(m[w],z),Y&&A.setSh3(m[w],Y))});break}case tt.SPLAT:zs(B.fileBytes,x=>{},(x,m,G,p,w,M,z,Y,N,q,T,v,P,Z,W)=>{const L=h(new d(m,G,p));if(E(L)&&u(v)){const K=A.pushSplat();A.setCenter(K,L.x,L.y,L.z);const J=l(new d(w,M,z));A.setScale(K,J.x,J.y,J.z);const R=c(new NA(Y,N,q,T));A.setQuaternion(K,R.x,R.y,R.z,R.w),A.setOpacity(K,v),A.setColor(K,P,Z,W)}});break;case tt.KSPLAT:{let x=null;Ye(B.fileBytes,m=>{},(m,G,p,w,M,z,Y,N,q,T,v,P,Z,W,L)=>{const K=h(new d(G,p,w));if(E(K)&&u(P)){x=A.pushSplat(),A.setCenter(x,K.x,K.y,K.z);const J=l(new d(M,z,Y));A.setScale(x,J.x,J.y,J.z);const R=c(new NA(N,q,T,v));A.setQuaternion(x,R.x,R.y,R.z,R.w),A.setOpacity(x,P),A.setColor(x,Z,W,L)}else x=null},(m,G,p,w)=>{x!==null&&(A.setSh1(x,G),p&&A.setSh2(x,p),w&&A.setSh3(x,w))});break}default:throw new Error(`transcodeSpz not implemented for ${b}`)}}const r=Math.min(i??3,A.sh3?3:A.sh2?2:A.sh1?1:0),I=new YA({numSplats:A.numSplats,shDegree:r,fractionalBits:n,flagAntiAlias:!0});for(let B=0;B<A.numSplats;++B){const h=B*3,l=B*4;I.setCenter(B,A.centers[h],A.centers[h+1],A.centers[h+2]),I.setScale(B,A.scales[h],A.scales[h+1],A.scales[h+2]),I.setQuat(B,A.quaternions[l],A.quaternions[l+1],A.quaternions[l+2],A.quaternions[l+3]),I.setAlpha(B,A.opacities[B]),I.setRgb(B,A.colors[h],A.colors[h+1],A.colors[h+2]),A.sh1&&r>=1&&I.setSh(B,A.sh1.slice(B*9,(B+1)*9),r>=2&&A.sh2?A.sh2.slice(B*15,(B+1)*15):void 0,r>=3&&A.sh3?A.sh3.slice(B*21,(B+1)*21):void 0)}return{fileBytes:await I.finalize(),clippedCount:I.clippedCount}}async function Ws(e){const{name:A,args:t,id:s}=e.data;let i,n;try{switch(A){case"unpackPly":{const{packedArray:g,fileBytes:r,splatEncoding:I}=t,o=await We({packedArray:g,fileBytes:r,splatEncoding:I});i={id:s,numSplats:o.numSplats,packedArray:o.packedArray,extra:o.extra};break}case"decodeSpz":{const{fileBytes:g,splatEncoding:r}=t,I=Pe(g,r);i={id:s,numSplats:I.numSplats,packedArray:I.packedArray,extra:I.extra};break}case"decodeAntiSplat":{const{fileBytes:g,splatEncoding:r}=t,I=Ue(g,r);i={id:s,numSplats:I.numSplats,packedArray:I.packedArray};break}case"decodeKsplat":{const{fileBytes:g,splatEncoding:r}=t,I=Re(g,r);i={id:s,numSplats:I.numSplats,packedArray:I.packedArray,extra:I.extra};break}case"decodePcSogs":{const{fileBytes:g,extraFiles:r,splatEncoding:I}=t,o=JSON.parse(new TextDecoder().decode(g)),a=await Ks(o,r,I);i={id:s,numSplats:a.numSplats,packedArray:a.packedArray,extra:a.extra};break}case"decodePcSogsZip":{const{fileBytes:g,splatEncoding:r}=t,I=await ve(g,r);i={id:s,numSplats:I.numSplats,packedArray:I.packedArray,extra:I.extra};break}case"sortSplats":{const{totalSplats:g,readback:r,ordering:I}=t;i={id:s,readback:r,...Ve({totalSplats:g,readback:r,ordering:I})};break}case"sortDoubleSplats":{const{numSplats:g,readback:r,ordering:I}=t;i={id:s,readback:r,ordering:I,activeSplats:Os(g,r,I)};break}case"sort32Splats":{const{numSplats:g,readback:r,ordering:I}=t;i={id:s,readback:r,ordering:I,activeSplats:$s(g,r,I)};break}case"transcodeSpz":{const g=t,r=await Xe(g);i={id:s,fileBytes:r,input:g};break}default:throw new Error(`Unknown name: ${A}`)}}catch(g){n=g,console.error(n)}self.postMessage({id:s,result:i,error:n},{transfer:Me(i)})}async function We({packedArray:e,fileBytes:A,splatEncoding:t}){const s=new wt({fileBytes:A});await s.parseHeader();const i=s.numSplats,n={};return s.parseSplats((g,r,I,o,a,C,Q,B,h,l,c,E,u,y,f)=>{vt(e,g,r,I,o,a,C,Q,B,h,l,c,E,u,y,f,t)},(g,r,I,o)=>{r&&(n.sh1||(n.sh1=new Uint32Array(i*2)),lt(n.sh1,g,r,t)),I&&(n.sh2||(n.sh2=new Uint32Array(i*4)),ut(n.sh2,g,I,t)),o&&(n.sh3||(n.sh3=new Uint32Array(i*4)),yt(n.sh3,g,o,t))}),{packedArray:e,numSplats:i,extra:n}}function Pe(e,A){const t=new Ts({fileBytes:e}),s=t.numSplats,i=Et(s),n=new Uint32Array(i*4),g={};return t.parseSplats((r,I,o,a)=>{Rs(n,r,I,o,a)},(r,I)=>{de(n,r,I)},(r,I,o,a)=>{Se(n,r,I,o,a,A)},(r,I,o,a)=>{bs(n,r,I,o,a,A)},(r,I,o,a,C)=>{Js(n,r,I,o,a,C)},(r,I,o,a)=>{I&&(g.sh1||(g.sh1=new Uint32Array(s*2)),lt(g.sh1,r,I,A)),o&&(g.sh2||(g.sh2=new Uint32Array(s*4)),ut(g.sh2,r,o,A)),a&&(g.sh3||(g.sh3=new Uint32Array(s*4)),yt(g.sh3,r,a,A))}),{packedArray:n,numSplats:s,extra:g}}const Tt=31744,Mt=Tt+1;let DA=null;function Ve({totalSplats:e,readback:A,ordering:t}){DA||(DA=new Uint32Array(Mt)),DA.fill(0);const s=A.map(I=>new Uint32Array(I.buffer)),i=s[0].length,n=Math.ceil(e/i);let g=0;for(let I=0;I<n;++I){const o=s[I],a=Math.min(o.length,e-g);for(let C=0;C<a;++C){const Q=o[C]&32767;Q<Tt&&(DA[Q]+=1)}g+=a}let r=0;for(let I=0;I<Mt;++I){const o=r+DA[I];DA[I]=r,r=o}g=0;for(let I=0;I<n;++I){const o=s[I],a=Math.min(o.length,e-g);for(let C=0;C<a;++C){const Q=o[C]&32767;Q<Tt&&(t[DA[Q]]=g+C,DA[Q]+=1)}g+=a}if(DA[Mt-1]!==r)throw new Error(`Expected ${r} active splats but got ${DA[Mt-1]}`);return{activeSplats:r,ordering:t}}const Zt=[];function Ps(e){Zt.push(e)}async function je(){self.addEventListener("message",Ps),await es(),self.removeEventListener("message",Ps),self.addEventListener("message",Ws);for(const e of Zt)Ws(e);Zt.length=0}je().catch(console.error)})();\n//# sourceMappingURL=worker-BeZ_BG0A.js.map\n', Qs = typeof self < "u" && self.Blob && new Blob([qa], { type: "text/javascript;charset=utf-8" });
6582
+ const qa = '(function(){"use strict";let xA;const ss=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&ss.decode();let jA=null;function Vs(){return(jA===null||jA.byteLength===0)&&(jA=new Uint8Array(xA.memory.buffer)),jA}function js(e,A){return e=e>>>0,ss.decode(Vs().subarray(e,e+A))}function Os(e,A,t){return xA.sort_splats(e,A,t)>>>0}function $s(e,A,t){return xA.sort32_splats(e,A,t)>>>0}async function Ae(e,A){if(typeof Response=="function"&&e instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(e,A)}catch(s){if(e.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n",s);else throw s}const t=await e.arrayBuffer();return await WebAssembly.instantiate(t,A)}else{const t=await WebAssembly.instantiate(e,A);return t instanceof WebAssembly.Instance?{instance:t,module:e}:t}}function te(){const e={};return e.wbg={},e.wbg.__wbg_buffer_609cc3eee51ed158=function(A){return A.buffer},e.wbg.__wbg_length_3b4f022188ae8db6=function(A){return A.length},e.wbg.__wbg_length_6ca527665d89694d=function(A){return A.length},e.wbg.__wbg_length_8cfd2c6409af88ad=function(A){return A.length},e.wbg.__wbg_new_9fee97a409b32b68=function(A){return new Uint16Array(A)},e.wbg.__wbg_new_e3b321dcfef89fc7=function(A){return new Uint32Array(A)},e.wbg.__wbg_newwithbyteoffsetandlength_e6b7e69acd4c7354=function(A,t,s){return new Float32Array(A,t>>>0,s>>>0)},e.wbg.__wbg_newwithbyteoffsetandlength_f1dead44d1fc7212=function(A,t,s){return new Uint32Array(A,t>>>0,s>>>0)},e.wbg.__wbg_newwithlength_5a5efe313cfd59f1=function(A){return new Float32Array(A>>>0)},e.wbg.__wbg_set_10bad9bee0e9c58b=function(A,t,s){A.set(t,s>>>0)},e.wbg.__wbg_set_d23661d19148b229=function(A,t,s){A.set(t,s>>>0)},e.wbg.__wbg_set_f4f1f0daa30696fc=function(A,t,s){A.set(t,s>>>0)},e.wbg.__wbg_subarray_3aaeec89bb2544f0=function(A,t,s){return A.subarray(t>>>0,s>>>0)},e.wbg.__wbg_subarray_769e1e0f81bb259b=function(A,t,s){return A.subarray(t>>>0,s>>>0)},e.wbg.__wbindgen_init_externref_table=function(){const A=xA.__wbindgen_export_0,t=A.grow(4);A.set(0,void 0),A.set(t+0,void 0),A.set(t+1,null),A.set(t+2,!0),A.set(t+3,!1)},e.wbg.__wbindgen_memory=function(){return xA.memory},e.wbg.__wbindgen_throw=function(A,t){throw new Error(js(A,t))},e}function se(e,A){return xA=e.exports,es.__wbindgen_wasm_module=A,jA=null,xA.__wbindgen_start(),xA}async function es(e){if(xA!==void 0)return xA;typeof e<"u"&&(Object.getPrototypeOf(e)===Object.prototype?{module_or_path:e}=e:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof e>"u"&&(e=new URL("data:application/wasm;base64,AGFzbQEAAAABzAEeYAJ/fwF/YAJ/fwBgA39/fwF/YAF/AX9gA39/fwBgAX8AYAV/f39/fwBgA29/fwFvYAV/f39/fwF/YAFvAW9gA29vfwBgAW8Bf2AAAX9gBH9/f38AYAAAYAR/f39/AX9gA39vbwF/YAF/AW9gAAFvYAF9AX1gBn9/f39/fwBgDX19fX19fX19f29/fX0Bb2AGf39/f39/AX9gBX9/fH9/AGAEf3x/fwBgBX9/fX9/AGAEf31/fwBgBX9/fn9/AGAEf35/fwBgAn19AX0C8gQRA3diZx1fX3diZ19idWZmZXJfNjA5Y2MzZWVlNTFlZDE1OAAJA3diZxpfX3diZ19uZXdfOWZlZTk3YTQwOWIzMmI2OAAJA3diZxpfX3diZ19zZXRfZjRmMWYwZGFhMzA2OTZmYwAKA3diZx1fX3diZ19sZW5ndGhfOGNmZDJjNjQwOWFmODhhZAALA3diZzFfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF9mMWRlYWQ0NGQxZmM3MjEyAAcDd2JnGl9fd2JnX25ld19lM2IzMjFkY2ZlZjg5ZmM3AAkDd2JnGl9fd2JnX3NldF9kMjM2NjFkMTkxNDhiMjI5AAoDd2JnHV9fd2JnX2xlbmd0aF82Y2E1Mjc2NjVkODk2OTRkAAsDd2JnMV9fd2JnX25ld3dpdGhieXRlb2Zmc2V0YW5kbGVuZ3RoX2U2YjdlNjlhY2Q0YzczNTQABwN3YmcaX193Ymdfc2V0XzEwYmFkOWJlZTBlOWM1OGIACgN3YmcdX193YmdfbGVuZ3RoXzNiNGYwMjIxODhhZThkYjYACwN3YmcfX193Ymdfc3ViYXJyYXlfNzY5ZTFlMGY4MWJiMjU5YgAHA3diZx9fX3diZ19zdWJhcnJheV8zYWFlZWM4OWJiMjU0NGYwAAcDd2JnJF9fd2JnX25ld3dpdGhsZW5ndGhfNWE1ZWZlMzEzY2ZkNTlmMQARA3diZxBfX3diaW5kZ2VuX3Rocm93AAEDd2JnEV9fd2JpbmRnZW5fbWVtb3J5ABIDd2JnH19fd2JpbmRnZW5faW5pdF9leHRlcm5yZWZfdGFibGUADgNhYAMAAQIIBQQCEwEMAAEBAgAAAQwBBAYFBQQAAQYFFAENBAAGBQQEAQQOAgECAQAIBAAVARYG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ACIDKAIEQXhxRgRAIAMhAgwBCyABQRkgAkEBdmtBACACQR9HG3QhBQNAIAMgBUEddkEEcWpBEGoiBCgCACICRQ0CIAVBAXQhBSACIQMgAigCBEF4cSABRw0ACwsgAigCCCIBIAA2AgwgAiAANgIIIABBADYCGCAAIAI2AgwgACABNgIIDwsgBCAANgIAIAAgAzYCGCAAIAA2AgwgACAANgIIC/MCAQR/IwBBMGsiACQAAkACQEGQksAAKAIARQRAQaiSwAAoAgAhAUGoksAAQQA2AgAgAUUNASAAQRhqIAERBQAgAEEQaiICIABBJGopAgA3AwAgACAAKQIcNwMIIAAoAhghAUGQksAAKAIAIgMNAgJAIANFDQBBlJLAACgCACICRQ0AQZiSwAAoAgAgAkECdBBlC0GUksAAIAE2AgBBkJLAAEEBNgIAQZiSwAAgACkDCDcCAEGgksAAIABBEGopAwA3AgALIABBMGokAEGUksAADwsgAEEANgIoIABBATYCHCAAQaCHwAA2AhggAEIENwIgIABBGGpBiIjAABBDAAsgAEEoaiACKQMANwIAIAAgACkDCDcCICAAIAE2AhwgAEEBNgIYAkAgAEEYaiIBKAIARQ0AIAEoAgQiAkUNACABKAIIIAJBAnQQZQsgAEEANgIoIABBATYCHCAAQaiIwAA2AhggAEIENwIgIAFBsIjAABBDAAuoAgIDfwF+IwBBQGoiAiQAIAEoAgBBgICAgHhGBEAgASgCDCEDIAJBJGoiBEEANgIAIAJCgICAgBA3AhwgAkEwaiADKAIAIgNBCGopAgA3AwAgAkE4aiADQRBqKQIANwMAIAIgAykCADcDKCACQRxqQcCIwAAgAkEoahAYGiACQRhqIAQoAgAiAzYCACACIAIpAhwiBTcDECABQQhqIAM2AgAgASAFNwIACyABKQIAIQUgAUKAgICAEDcCACACQQhqIgMgAUEIaiIBKAIANgIAIAFBADYCAEGxk8AALQAAGiACIAU3AwBBDEEEEF0iAUUEQEEEQQwQbQALIAEgAikDADcCACABQQhqIAMoAgA2AgAgAEHgisAANgIEIAAgATYCACACQUBrJAAL0gECBH8BfiMAQSBrIgMkACABIAEgAmoiAksEQEEAQQAQUgALQQggACgCACIEQQF0IgEgAiABIAJLGyICIAJBCEkb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QQRqrUKAgICA4ACENwMoIAEgAa1CgICAgOAAhDcDICABIAFBIGo2AhAgAUEIakHIj8AAEEMAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQfyNwAA2AgggA0ICNwIUIANCgICAgOAAIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhBDAAtpAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0H4kcAANgIIIANCAjcCFCADQoCAgIDgACIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQQwALZgAjAEEwayIAJABBsJPAAC0AAARAIABBAjYCDCAAQbCKwAA2AgggAEIBNwIUIAAgATYCLCAAIABBLGqtQoCAgIDgAIQ3AyAgACAAQSBqNgIQIABBCGpB0IrAABBDAAsgAEEwaiQAC5QBAgN/AW8jAEEgayIDJAAgAyAAKAIAEHAiBDYCACADIAI2AgQgAiAERwRAIANBADYCCCADIANBBGogA0EIahBAAAsQWyIEEFMiBSUBEAUhBhAbIgIgBiYBIAVBhAFPBEAgBRAtCyACIAAoAgAgAUECdhBkIAJBhAFPBEAgAhAtCyAEQYQBTwRAIAQQLQsgA0EgaiQAC08BAX8jAEEwayIAJAAgAEEBNgIMIABBwI3AADYCCCAAQgE3AhQgACAAQS9qrUKAgICAoAWENwMgIAAgAEEgajYCECAAQQhqQcSBwAAQQwALQQEBfyACIAAoAgAgACgCCCIDa0sEQCAAIAMgAhAlIAAoAgghAwsgACgCBCADaiABIAIQHxogACACIANqNgIIQQALTQECf0Gxk8AALQAAGiABKAIEIQIgASgCACEDQQhBBBBdIgFFBEBBBEEIEG0ACyABIAI2AgQgASADNgIAIABB8IrAADYCBCAAIAE2AgALQQEBfyACIAAoAgAgACgCCCIDa0sEQCAAIAMgAhApIAAoAgghAwsgACgCBCADaiABIAIQHxogACACIANqNgIIQQALQQEBfyMAQSBrIgIkACACQQA2AhAgAkEBNgIEIAJCBDcCCCACQS42AhwgAiAANgIYIAIgAkEYajYCACACIAEQQwALswIBA38gACgCACECIAEoAhwiAEEQcUUE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ZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkTGF6eSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkdgMQACoAAAAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL29uY2VfY2VsbC0xLjIxLjMvc3JjL2xpYi5ycwCoAxAAXwAAAAgDAAAZAAAAcmVlbnRyYW50IGluaXQAABgEEAAOAAAAqAMQAF8AAAB6AgAADQAAABYAAAAMAAAABAAAABcAAAAYAAAAGQAAAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjYvc3JjL2RsbWFsbG9jLnJzYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSArIG1pbl9vdmVyaGVhZABYBBAAKQAAAKgEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAWAQQACkAAACuBAAADQAAAEFjY2Vzc0Vycm9ybWVtb3J5IGFsbG9jYXRpb24gb2YgIGJ5dGVzIGZhaWxlZAAAAAsFEAAVAAAAIAUQAA0AAABzdGQvc3JjL2FsbG9jLnJzQAUQABAAAABjAQAACQAAABYAAAAMAAAABAAAABoAAAAAAAAACAAAAAQAAAAbAAAAAAAAAAgAAAAEAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAQAAAABAAAACEAAAAiAAAAIwAAACQAAABFcnJvcgAAACUAAAAMAAAABAAAACYAAAAnAAAAKAAAAGNhcGFjaXR5IG92ZXJmbG93AAAA2AUQABEAAABhbGxvYy9zcmMvcmF3X3ZlYy5yc/QFEAAUAAAAGAAAAAUAQaCMwAAL8AUBAAAAKQAAAGEgZm9ybWF0dGluZyB0cmFpdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB3aGVuIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBkaWQgbm90YWxsb2Mvc3JjL2ZtdC5ycwAAfgYQABAAAAB+AgAADgAAAEJvcnJvd011dEVycm9yYWxyZWFkeSBib3Jyb3dlZDogrgYQABIAAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAAyAYQACAAAADoBhAAEgAAAD09IT1tYXRjaGVzYXNzZXJ0aW9uIGBsZWZ0ICByaWdodGAgZmFpbGVkCiAgbGVmdDogCiByaWdodDogABcHEAAQAAAAJwcQABcAAAA+BxAACQAAACByaWdodGAgZmFpbGVkOiAKICBsZWZ0OiAAAAAXBxAAEAAAAGAHEAAQAAAAcAcQAAkAAAA+BxAACQAAADogAAABAAAAAAAAAJwHEAACAAAAfSB9Y29yZS9zcmMvZm10L251bS5ycwAAswcQABMAAABmAAAAFwAAADB4MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTlyYW5nZSBzdGFydCBpbmRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggAACiCBAAEgAAALQIEAAiAAAAcmFuZ2UgZW5kIGluZGV4IOgIEAAQAAAAtAgQACIAAAAAAAA/AAAAvwBBqJLAAAsBFABwCXByb2R1Y2VycwIIbGFuZ3VhZ2UBBFJ1c3QADHByb2Nlc3NlZC1ieQMFcnVzdGMdMS44My4wICg5MGIzNWE2MjMgMjAyNC0xMS0yNikGd2FscnVzBjAuMjMuMwx3YXNtLWJpbmRnZW4HMC4yLjEwMABJD3RhcmdldF9mZWF0dXJlcwQrD211dGFibGUtZ2xvYmFscysIc2lnbi1leHQrD3JlZmVyZW5jZS10eXBlcysKbXVsdGl2YWx1ZQ==",self.location.href));const A=te();(typeof e=="string"||typeof Request=="function"&&e instanceof Request||typeof URL=="function"&&e instanceof URL)&&(e=fetch(e));const{instance:t,module:s}=await Ae(await e,A);return se(t,s)}var is={},ee=function(e,A,t,s,i){var n=new Worker(is[A]||(is[A]=URL.createObjectURL(new Blob([e+\';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})\'],{type:"text/javascript"}))));return n.onmessage=function(g){var r=g.data,I=r.$e$;if(I){var o=new Error(I[0]);o.code=I[1],o.stack=I[2],i(o,null)}else i(null,r)},n.postMessage(t,s),n},V=Uint8Array,JA=Uint16Array,ns=Int32Array,Ft=new V([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),St=new V([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),gs=new V([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),rs=function(e,A){for(var t=new JA(31),s=0;s<31;++s)t[s]=A+=1<<e[s-1];for(var i=new ns(t[30]),s=1;s<30;++s)for(var n=t[s];n<t[s+1];++n)i[n]=n-t[s]<<5|s;return{b:t,r:i}},Is=rs(Ft,2),dt=Is.b,ie=Is.r;dt[28]=258,ie[258]=28;for(var ne=rs(St,0),os=ne.b,gt=new JA(32768),X=0;X<32768;++X){var SA=(X&43690)>>1|(X&21845)<<1;SA=(SA&52428)>>2|(SA&13107)<<2,SA=(SA&61680)>>4|(SA&3855)<<4,gt[X]=((SA&65280)>>8|(SA&255)<<8)>>1}for(var HA=function(e,A,t){for(var s=e.length,i=0,n=new JA(A);i<s;++i)e[i]&&++n[e[i]-1];var g=new JA(A);for(i=1;i<A;++i)g[i]=g[i-1]+n[i-1]<<1;var r;if(t){r=new JA(1<<A);var I=15-A;for(i=0;i<s;++i)if(e[i])for(var o=i<<4|e[i],a=A-e[i],C=g[e[i]-1]++<<a,Q=C|(1<<a)-1;C<=Q;++C)r[gt[C]>>I]=o}else for(r=new JA(s),i=0;i<s;++i)e[i]&&(r[i]=gt[g[e[i]-1]++]>>15-e[i]);return r},OA=new V(288),X=0;X<144;++X)OA[X]=8;for(var X=144;X<256;++X)OA[X]=9;for(var X=256;X<280;++X)OA[X]=7;for(var X=280;X<288;++X)OA[X]=8;for(var as=new V(32),X=0;X<32;++X)as[X]=5;var Cs=HA(OA,9,1),Bs=HA(as,5,1),rt=function(e){for(var A=e[0],t=1;t<e.length;++t)e[t]>A&&(A=e[t]);return A},BA=function(e,A,t){var s=A/8|0;return(e[s]|e[s+1]<<8)>>(A&7)&t},It=function(e,A){var t=A/8|0;return(e[t]|e[t+1]<<8|e[t+2]<<16)>>(A&7)},Nt=function(e){return(e+7)/8|0},dA=function(e,A,t){return(A==null||A<0)&&(A=0),(t==null||t>e.length)&&(t=e.length),new V(e.subarray(A,t))},Qs=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],j=function(e,A,t){var s=new Error(A||Qs[e]);if(s.code=e,Error.captureStackTrace&&Error.captureStackTrace(s,j),!t)throw s;return s},kt=function(e,A,t,s){var i=e.length,n=s?s.length:0;if(!i||A.f&&!A.l)return t||new V(0);var g=!t,r=g||A.i!=2,I=A.i;g&&(t=new V(i*3));var o=function(gA){var oA=t.length;if(gA>oA){var aA=new V(Math.max(oA*2,gA));aA.set(t),t=aA}},a=A.f||0,C=A.p||0,Q=A.b||0,B=A.l,h=A.d,l=A.m,c=A.n,E=i*8;do{if(!B){a=BA(e,C,1);var u=BA(e,C+1,3);if(C+=3,u)if(u==1)B=Cs,h=Bs,l=9,c=5;else if(u==2){var S=BA(e,C,31)+257,b=BA(e,C+10,15)+4,x=S+BA(e,C+5,31)+1;C+=14;for(var m=new V(x),G=new V(19),p=0;p<b;++p)G[gs[p]]=BA(e,C+p*3,7);C+=b*3;for(var w=rt(G),M=(1<<w)-1,z=HA(G,w,1),p=0;p<x;){var Y=z[BA(e,C,M)];C+=Y&15;var y=Y>>4;if(y<16)m[p++]=y;else{var N=0,q=0;for(y==16?(q=3+BA(e,C,3),C+=2,N=m[p-1]):y==17?(q=3+BA(e,C,7),C+=3):y==18&&(q=11+BA(e,C,127),C+=7);q--;)m[p++]=N}}var T=m.subarray(0,S),v=m.subarray(S);l=rt(T),c=rt(v),B=HA(T,l,1),h=HA(v,c,1)}else j(1);else{var y=Nt(C)+4,f=e[y-4]|e[y-3]<<8,D=y+f;if(D>i){I&&j(0);break}r&&o(Q+f),t.set(e.subarray(y,D),Q),A.b=Q+=f,A.p=C=D*8,A.f=a;continue}if(C>E){I&&j(0);break}}r&&o(Q+131072);for(var P=(1<<l)-1,Z=(1<<c)-1,W=C;;W=C){var N=B[It(e,C)&P],L=N>>4;if(C+=N&15,C>E){I&&j(0);break}if(N||j(2),L<256)t[Q++]=L;else if(L==256){W=C,B=null;break}else{var K=L-254;if(L>264){var p=L-257,J=Ft[p];K=BA(e,C,(1<<J)-1)+dt[p],C+=J}var R=h[It(e,C)&Z],F=R>>4;R||j(3),C+=R&15;var v=os[F];if(F>3){var J=St[F];v+=It(e,C)&(1<<J)-1,C+=J}if(C>E){I&&j(0);break}r&&o(Q+131072);var eA=Q+K;if(Q<v){var iA=n-v,IA=Math.min(v,eA);for(iA+Q<0&&j(3);Q<IA;++Q)t[Q]=s[iA+Q]}for(;Q<eA;++Q)t[Q]=t[Q-v]}}A.l=B,A.p=W,A.b=Q,A.f=a,B&&(a=1,A.m=l,A.d=h,A.n=c)}while(!a);return Q!=t.length&&g?dA(t,0,Q):t.subarray(0,Q)},ge=new V(0),re=function(e,A){var t={};for(var s in e)t[s]=e[s];for(var s in A)t[s]=A[s];return t},hs=function(e,A,t){for(var s=e(),i=e.toString(),n=i.slice(i.indexOf("[")+1,i.lastIndexOf("]")).replace(/\\s+/g,"").split(","),g=0;g<s.length;++g){var r=s[g],I=n[g];if(typeof r=="function"){A+=";"+I+"=";var o=r.toString();if(r.prototype)if(o.indexOf("[native code]")!=-1){var a=o.indexOf(" ",8)+1;A+=o.slice(a,o.indexOf("(",a))}else{A+=o;for(var C in r.prototype)A+=";"+I+".prototype."+C+"="+r.prototype[C].toString()}else A+=o}else t[I]=r}return A},ot=[],Ie=function(e){var A=[];for(var t in e)e[t].buffer&&A.push((e[t]=new e[t].constructor(e[t])).buffer);return A},oe=function(e,A,t,s){if(!ot[t]){for(var i="",n={},g=e.length-1,r=0;r<g;++r)i=hs(e[r],i,n);ot[t]={c:hs(e[g],i,n),e:n}}var I=re({},ot[t].e);return ee(ot[t].c+";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage="+A.toString()+"}",t,I,Ie(I),s)},ae=function(){return[V,JA,ns,Ft,St,gs,dt,os,Cs,Bs,gt,Qs,HA,rt,BA,It,Nt,dA,j,kt,at,Es,cs]},Es=function(e){return postMessage(e,[e.buffer])},cs=function(e){return e&&{out:e.size&&new V(e.size),dictionary:e.dictionary}},Ce=function(e,A,t,s,i,n){var g=oe(t,s,i,function(r,I){g.terminate(),n(r,I)});return g.postMessage([e,A],A.consume?[e.buffer]:[]),function(){g.terminate()}},lA=function(e,A){return e[A]|e[A+1]<<8},tA=function(e,A){return(e[A]|e[A+1]<<8|e[A+2]<<16|e[A+3]<<24)>>>0},Gt=function(e,A){return tA(e,A)+tA(e,A+4)*4294967296},Be=function(e){(e[0]!=31||e[1]!=139||e[2]!=8)&&j(6,"invalid gzip data");var A=e[3],t=10;A&4&&(t+=(e[10]|e[11]<<8)+2);for(var s=(A>>3&1)+(A>>4&1);s>0;s-=!e[t++]);return t+(A&2)},Ut=function(){function e(A,t){typeof A=="function"&&(t=A,A={}),this.ondata=t;var s=A&&A.dictionary&&A.dictionary.subarray(-32768);this.s={i:0,b:s?s.length:0},this.o=new V(32768),this.p=new V(0),s&&this.o.set(s)}return e.prototype.e=function(A){if(this.ondata||j(5),this.d&&j(4),!this.p.length)this.p=A;else if(A.length){var t=new V(this.p.length+A.length);t.set(this.p),t.set(A,this.p.length),this.p=t}},e.prototype.c=function(A){this.s.i=+(this.d=A||!1);var t=this.s.b,s=kt(this.p,this.s,this.o);this.ondata(dA(s,t,this.s.b),this.d),this.o=dA(s,this.s.b-32768),this.s.b=this.o.length,this.p=dA(this.p,this.s.p/8|0),this.s.p&=7},e.prototype.push=function(A,t){this.e(A),this.c(t)},e}();function Qe(e,A,t){return t||(t=A,A={}),typeof t!="function"&&j(7),Ce(e,A,[ae],function(s){return Es(at(s.data[0],cs(s.data[1])))},1,t)}function at(e,A){return kt(e,{i:2},A&&A.out,A&&A.dictionary)}var ls=function(){function e(A,t){this.v=1,this.r=0,Ut.call(this,A,t)}return e.prototype.push=function(A,t){if(Ut.prototype.e.call(this,A),this.r+=A.length,this.v){var s=this.p.subarray(this.v-1),i=s.length>3?Be(s):4;if(i>s.length){if(!t)return}else this.v>1&&this.onmember&&this.onmember(this.r-s.length);this.p=s.subarray(i),this.v=0}Ut.prototype.c.call(this,t),this.s.f&&!this.s.l&&!t&&(this.v=Nt(this.s.p)+9,this.s={i:0},this.o=new V(0),this.push(new V(0),t))},e}(),Yt=typeof TextDecoder<"u"&&new TextDecoder;try{Yt.decode(ge,{stream:!0})}catch{}var he=function(e){for(var A="",t=0;;){var s=e[t++],i=(s>127)+(s>223)+(s>239);if(t+i>e.length)return{s:A,r:dA(e,t-1)};i?i==3?(s=((s&15)<<18|(e[t++]&63)<<12|(e[t++]&63)<<6|e[t++]&63)-65536,A+=String.fromCharCode(55296|s>>10,56320|s&1023)):i&1?A+=String.fromCharCode((s&31)<<6|e[t++]&63):A+=String.fromCharCode((s&15)<<12|(e[t++]&63)<<6|e[t++]&63):A+=String.fromCharCode(s)}};function Ee(e,A){if(A){for(var t="",s=0;s<e.length;s+=16384)t+=String.fromCharCode.apply(null,e.subarray(s,s+16384));return t}else{if(Yt)return Yt.decode(e);var i=he(e),n=i.s,t=i.r;return t.length&&j(8),n}}var us=function(e,A){return A+30+lA(e,A+26)+lA(e,A+28)},ys=function(e,A,t){var s=lA(e,A+28),i=Ee(e.subarray(A+46,A+46+s),!(lA(e,A+8)&2048)),n=A+46+s,g=tA(e,A+20),r=t&&g==4294967295?ce(e,n):[g,tA(e,A+24),tA(e,A+42)],I=r[0],o=r[1],a=r[2];return[lA(e,A+10),I,o,i,n+lA(e,A+30)+lA(e,A+32),a]},ce=function(e,A){for(;lA(e,A)!=1;A+=4+lA(e,A+2));return[Gt(e,A+12),Gt(e,A+4),Gt(e,A+20)]},fs=typeof queueMicrotask=="function"?queueMicrotask:typeof setTimeout=="function"?setTimeout:function(e){e()};function le(e,A,t){t||(t=A,A={}),typeof t!="function"&&j(7);var s=[],i=function(){for(var c=0;c<s.length;++c)s[c]()},n={},g=function(c,E){fs(function(){t(c,E)})};fs(function(){g=t});for(var r=e.length-22;tA(e,r)!=101010256;--r)if(!r||e.length-r>65558)return g(j(13,0,1),null),i;var I=lA(e,r+8);if(I){var o=I,a=tA(e,r+16),C=a==4294967295||o==65535;if(C){var Q=tA(e,r-12);C=tA(e,Q)==101075792,C&&(o=I=tA(e,Q+32),a=tA(e,Q+48))}for(var B=A&&A.filter,h=function(c){var E=ys(e,a,C),u=E[0],y=E[1],f=E[2],D=E[3],S=E[4],b=E[5],x=us(e,b);a=S;var m=function(p,w){p?(i(),g(p,null)):(w&&(n[D]=w),--I||g(null,n))};if(!B||B({name:D,size:y,originalSize:f,compression:u}))if(!u)m(null,dA(e,x,x+y));else if(u==8){var G=e.subarray(x,x+y);if(f<524288||y>.8*f)try{m(null,at(G,{out:new V(f)}))}catch(p){m(p,null)}else s.push(Qe(G,{size:f},m))}else m(j(14,"unknown compression type "+u,1),null);else m(null,null)},l=0;l<o;++l)h(l)}else g(null,{});return i}function ue(e,A){for(var t={},s=e.length-22;tA(e,s)!=101010256;--s)(!s||e.length-s>65558)&&j(13);var i=lA(e,s+8);if(!i)return{};var n=tA(e,s+16),g=n==4294967295||i==65535;if(g){var r=tA(e,s-12);g=tA(e,r)==101075792,g&&(i=tA(e,r+32),n=tA(e,r+48))}for(var I=A&&A.filter,o=0;o<i;++o){var a=ys(e,n,g),C=a[0],Q=a[1],B=a[2],h=a[3],l=a[4],c=a[5],E=us(e,c);n=l,(!I||I({name:h,size:Q,originalSize:B,compression:C}))&&(C?C==8?t[h]=at(e.subarray(E,E+Q),{out:new V(B)}):j(14,"unknown compression type "+C):t[h]=dA(e,E,E+Q))}return t}/**\n * @license\n * Copyright 2010-2024 Three.js Authors\n * SPDX-License-Identifier: MIT\n */const ws="172",ye="",uA="srgb",ms="srgb-linear",xs="linear",Rt="srgb";function rA(e,A,t){return Math.max(A,Math.min(t,e))}function fe(e,A){return(e%A+A)%A}function bt(e,A,t){return(1-t)*e+t*A}class $A{constructor(A,t,s,i,n,g,r,I,o){$A.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],A!==void 0&&this.set(A,t,s,i,n,g,r,I,o)}set(A,t,s,i,n,g,r,I,o){const a=this.elements;return a[0]=A,a[1]=i,a[2]=r,a[3]=t,a[4]=n,a[5]=I,a[6]=s,a[7]=g,a[8]=o,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(A){const t=this.elements,s=A.elements;return t[0]=s[0],t[1]=s[1],t[2]=s[2],t[3]=s[3],t[4]=s[4],t[5]=s[5],t[6]=s[6],t[7]=s[7],t[8]=s[8],this}extractBasis(A,t,s){return A.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),s.setFromMatrix3Column(this,2),this}setFromMatrix4(A){const t=A.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,t){const s=A.elements,i=t.elements,n=this.elements,g=s[0],r=s[3],I=s[6],o=s[1],a=s[4],C=s[7],Q=s[2],B=s[5],h=s[8],l=i[0],c=i[3],E=i[6],u=i[1],y=i[4],f=i[7],D=i[2],S=i[5],b=i[8];return n[0]=g*l+r*u+I*D,n[3]=g*c+r*y+I*S,n[6]=g*E+r*f+I*b,n[1]=o*l+a*u+C*D,n[4]=o*c+a*y+C*S,n[7]=o*E+a*f+C*b,n[2]=Q*l+B*u+h*D,n[5]=Q*c+B*y+h*S,n[8]=Q*E+B*f+h*b,this}multiplyScalar(A){const t=this.elements;return t[0]*=A,t[3]*=A,t[6]*=A,t[1]*=A,t[4]*=A,t[7]*=A,t[2]*=A,t[5]*=A,t[8]*=A,this}determinant(){const A=this.elements,t=A[0],s=A[1],i=A[2],n=A[3],g=A[4],r=A[5],I=A[6],o=A[7],a=A[8];return t*g*a-t*r*o-s*n*a+s*r*I+i*n*o-i*g*I}invert(){const A=this.elements,t=A[0],s=A[1],i=A[2],n=A[3],g=A[4],r=A[5],I=A[6],o=A[7],a=A[8],C=a*g-r*o,Q=r*I-a*n,B=o*n-g*I,h=t*C+s*Q+i*B;if(h===0)return this.set(0,0,0,0,0,0,0,0,0);const l=1/h;return A[0]=C*l,A[1]=(i*o-a*s)*l,A[2]=(r*s-i*g)*l,A[3]=Q*l,A[4]=(a*t-i*I)*l,A[5]=(i*n-r*t)*l,A[6]=B*l,A[7]=(s*I-o*t)*l,A[8]=(g*t-s*n)*l,this}transpose(){let A;const t=this.elements;return A=t[1],t[1]=t[3],t[3]=A,A=t[2],t[2]=t[6],t[6]=A,A=t[5],t[5]=t[7],t[7]=A,this}getNormalMatrix(A){return this.setFromMatrix4(A).invert().transpose()}transposeIntoArray(A){const t=this.elements;return A[0]=t[0],A[1]=t[3],A[2]=t[6],A[3]=t[1],A[4]=t[4],A[5]=t[7],A[6]=t[2],A[7]=t[5],A[8]=t[8],this}setUvTransform(A,t,s,i,n,g,r){const I=Math.cos(n),o=Math.sin(n);return this.set(s*I,s*o,-s*(I*g+o*r)+g+A,-i*o,i*I,-i*(-o*g+I*r)+r+t,0,0,1),this}scale(A,t){return this.premultiply(Jt.makeScale(A,t)),this}rotate(A){return this.premultiply(Jt.makeRotation(-A)),this}translate(A,t){return this.premultiply(Jt.makeTranslation(A,t)),this}makeTranslation(A,t){return A.isVector2?this.set(1,0,A.x,0,1,A.y,0,0,1):this.set(1,0,A,0,1,t,0,0,1),this}makeRotation(A){const t=Math.cos(A),s=Math.sin(A);return this.set(t,-s,0,s,t,0,0,0,1),this}makeScale(A,t){return this.set(A,0,0,0,t,0,0,0,1),this}equals(A){const t=this.elements,s=A.elements;for(let i=0;i<9;i++)if(t[i]!==s[i])return!1;return!0}fromArray(A,t=0){for(let s=0;s<9;s++)this.elements[s]=A[s+t];return this}toArray(A=[],t=0){const s=this.elements;return A[t]=s[0],A[t+1]=s[1],A[t+2]=s[2],A[t+3]=s[3],A[t+4]=s[4],A[t+5]=s[5],A[t+6]=s[6],A[t+7]=s[7],A[t+8]=s[8],A}clone(){return new this.constructor().fromArray(this.elements)}}const Jt=new $A,Ds=new $A().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),ps=new $A().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function we(){const e={enabled:!0,workingColorSpace:ms,spaces:{},convert:function(i,n,g){return this.enabled===!1||n===g||!n||!g||(this.spaces[n].transfer===Rt&&(i.r=qA(i.r),i.g=qA(i.g),i.b=qA(i.b)),this.spaces[n].primaries!==this.spaces[g].primaries&&(i.applyMatrix3(this.spaces[n].toXYZ),i.applyMatrix3(this.spaces[g].fromXYZ)),this.spaces[g].transfer===Rt&&(i.r=vA(i.r),i.g=vA(i.g),i.b=vA(i.b))),i},fromWorkingColorSpace:function(i,n){return this.convert(i,this.workingColorSpace,n)},toWorkingColorSpace:function(i,n){return this.convert(i,n,this.workingColorSpace)},getPrimaries:function(i){return this.spaces[i].primaries},getTransfer:function(i){return i===ye?xs:this.spaces[i].transfer},getLuminanceCoefficients:function(i,n=this.workingColorSpace){return i.fromArray(this.spaces[n].luminanceCoefficients)},define:function(i){Object.assign(this.spaces,i)},_getMatrix:function(i,n,g){return i.copy(this.spaces[n].toXYZ).multiply(this.spaces[g].fromXYZ)},_getDrawingBufferColorSpace:function(i){return this.spaces[i].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(i=this.workingColorSpace){return this.spaces[i].workingColorSpaceConfig.unpackColorSpace}},A=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],s=[.3127,.329];return e.define({[ms]:{primaries:A,whitePoint:s,transfer:xs,toXYZ:Ds,fromXYZ:ps,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:uA},outputColorSpaceConfig:{drawingBufferColorSpace:uA}},[uA]:{primaries:A,whitePoint:s,transfer:Rt,toXYZ:Ds,fromXYZ:ps,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:uA}}}),e}const yA=we();function qA(e){return e<.04045?e*.0773993808:Math.pow(e*.9478672986+.0521327014,2.4)}function vA(e){return e<.0031308?e*12.92:1.055*Math.pow(e,.41666)-.055}class NA{constructor(A=0,t=0,s=0,i=1){this.isQuaternion=!0,this._x=A,this._y=t,this._z=s,this._w=i}static slerpFlat(A,t,s,i,n,g,r){let I=s[i+0],o=s[i+1],a=s[i+2],C=s[i+3];const Q=n[g+0],B=n[g+1],h=n[g+2],l=n[g+3];if(r===0){A[t+0]=I,A[t+1]=o,A[t+2]=a,A[t+3]=C;return}if(r===1){A[t+0]=Q,A[t+1]=B,A[t+2]=h,A[t+3]=l;return}if(C!==l||I!==Q||o!==B||a!==h){let c=1-r;const E=I*Q+o*B+a*h+C*l,u=E>=0?1:-1,y=1-E*E;if(y>Number.EPSILON){const D=Math.sqrt(y),S=Math.atan2(D,E*u);c=Math.sin(c*S)/D,r=Math.sin(r*S)/D}const f=r*u;if(I=I*c+Q*f,o=o*c+B*f,a=a*c+h*f,C=C*c+l*f,c===1-r){const D=1/Math.sqrt(I*I+o*o+a*a+C*C);I*=D,o*=D,a*=D,C*=D}}A[t]=I,A[t+1]=o,A[t+2]=a,A[t+3]=C}static multiplyQuaternionsFlat(A,t,s,i,n,g){const r=s[i],I=s[i+1],o=s[i+2],a=s[i+3],C=n[g],Q=n[g+1],B=n[g+2],h=n[g+3];return A[t]=r*h+a*C+I*B-o*Q,A[t+1]=I*h+a*Q+o*C-r*B,A[t+2]=o*h+a*B+r*Q-I*C,A[t+3]=a*h-r*C-I*Q-o*B,A}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get w(){return this._w}set w(A){this._w=A,this._onChangeCallback()}set(A,t,s,i){return this._x=A,this._y=t,this._z=s,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(A){return this._x=A.x,this._y=A.y,this._z=A.z,this._w=A.w,this._onChangeCallback(),this}setFromEuler(A,t=!0){const s=A._x,i=A._y,n=A._z,g=A._order,r=Math.cos,I=Math.sin,o=r(s/2),a=r(i/2),C=r(n/2),Q=I(s/2),B=I(i/2),h=I(n/2);switch(g){case"XYZ":this._x=Q*a*C+o*B*h,this._y=o*B*C-Q*a*h,this._z=o*a*h+Q*B*C,this._w=o*a*C-Q*B*h;break;case"YXZ":this._x=Q*a*C+o*B*h,this._y=o*B*C-Q*a*h,this._z=o*a*h-Q*B*C,this._w=o*a*C+Q*B*h;break;case"ZXY":this._x=Q*a*C-o*B*h,this._y=o*B*C+Q*a*h,this._z=o*a*h+Q*B*C,this._w=o*a*C-Q*B*h;break;case"ZYX":this._x=Q*a*C-o*B*h,this._y=o*B*C+Q*a*h,this._z=o*a*h-Q*B*C,this._w=o*a*C+Q*B*h;break;case"YZX":this._x=Q*a*C+o*B*h,this._y=o*B*C+Q*a*h,this._z=o*a*h-Q*B*C,this._w=o*a*C-Q*B*h;break;case"XZY":this._x=Q*a*C-o*B*h,this._y=o*B*C-Q*a*h,this._z=o*a*h+Q*B*C,this._w=o*a*C+Q*B*h;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+g)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(A,t){const s=t/2,i=Math.sin(s);return this._x=A.x*i,this._y=A.y*i,this._z=A.z*i,this._w=Math.cos(s),this._onChangeCallback(),this}setFromRotationMatrix(A){const t=A.elements,s=t[0],i=t[4],n=t[8],g=t[1],r=t[5],I=t[9],o=t[2],a=t[6],C=t[10],Q=s+r+C;if(Q>0){const B=.5/Math.sqrt(Q+1);this._w=.25/B,this._x=(a-I)*B,this._y=(n-o)*B,this._z=(g-i)*B}else if(s>r&&s>C){const B=2*Math.sqrt(1+s-r-C);this._w=(a-I)/B,this._x=.25*B,this._y=(i+g)/B,this._z=(n+o)/B}else if(r>C){const B=2*Math.sqrt(1+r-s-C);this._w=(n-o)/B,this._x=(i+g)/B,this._y=.25*B,this._z=(I+a)/B}else{const B=2*Math.sqrt(1+C-s-r);this._w=(g-i)/B,this._x=(n+o)/B,this._y=(I+a)/B,this._z=.25*B}return this._onChangeCallback(),this}setFromUnitVectors(A,t){let s=A.dot(t)+1;return s<Number.EPSILON?(s=0,Math.abs(A.x)>Math.abs(A.z)?(this._x=-A.y,this._y=A.x,this._z=0,this._w=s):(this._x=0,this._y=-A.z,this._z=A.y,this._w=s)):(this._x=A.y*t.z-A.z*t.y,this._y=A.z*t.x-A.x*t.z,this._z=A.x*t.y-A.y*t.x,this._w=s),this.normalize()}angleTo(A){return 2*Math.acos(Math.abs(rA(this.dot(A),-1,1)))}rotateTowards(A,t){const s=this.angleTo(A);if(s===0)return this;const i=Math.min(1,t/s);return this.slerp(A,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(A){return this._x*A._x+this._y*A._y+this._z*A._z+this._w*A._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let A=this.length();return A===0?(this._x=0,this._y=0,this._z=0,this._w=1):(A=1/A,this._x=this._x*A,this._y=this._y*A,this._z=this._z*A,this._w=this._w*A),this._onChangeCallback(),this}multiply(A){return this.multiplyQuaternions(this,A)}premultiply(A){return this.multiplyQuaternions(A,this)}multiplyQuaternions(A,t){const s=A._x,i=A._y,n=A._z,g=A._w,r=t._x,I=t._y,o=t._z,a=t._w;return this._x=s*a+g*r+i*o-n*I,this._y=i*a+g*I+n*r-s*o,this._z=n*a+g*o+s*I-i*r,this._w=g*a-s*r-i*I-n*o,this._onChangeCallback(),this}slerp(A,t){if(t===0)return this;if(t===1)return this.copy(A);const s=this._x,i=this._y,n=this._z,g=this._w;let r=g*A._w+s*A._x+i*A._y+n*A._z;if(r<0?(this._w=-A._w,this._x=-A._x,this._y=-A._y,this._z=-A._z,r=-r):this.copy(A),r>=1)return this._w=g,this._x=s,this._y=i,this._z=n,this;const I=1-r*r;if(I<=Number.EPSILON){const B=1-t;return this._w=B*g+t*this._w,this._x=B*s+t*this._x,this._y=B*i+t*this._y,this._z=B*n+t*this._z,this.normalize(),this}const o=Math.sqrt(I),a=Math.atan2(o,r),C=Math.sin((1-t)*a)/o,Q=Math.sin(t*a)/o;return this._w=g*C+this._w*Q,this._x=s*C+this._x*Q,this._y=i*C+this._y*Q,this._z=n*C+this._z*Q,this._onChangeCallback(),this}slerpQuaternions(A,t,s){return this.copy(A).slerp(t,s)}random(){const A=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),s=Math.random(),i=Math.sqrt(1-s),n=Math.sqrt(s);return this.set(i*Math.sin(A),i*Math.cos(A),n*Math.sin(t),n*Math.cos(t))}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._w===this._w}fromArray(A,t=0){return this._x=A[t],this._y=A[t+1],this._z=A[t+2],this._w=A[t+3],this._onChangeCallback(),this}toArray(A=[],t=0){return A[t]=this._x,A[t+1]=this._y,A[t+2]=this._z,A[t+3]=this._w,A}fromBufferAttribute(A,t){return this._x=A.getX(t),this._y=A.getY(t),this._z=A.getZ(t),this._w=A.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class d{constructor(A=0,t=0,s=0){d.prototype.isVector3=!0,this.x=A,this.y=t,this.z=s}set(A,t,s){return s===void 0&&(s=this.z),this.x=A,this.y=t,this.z=s,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setComponent(A,t){switch(A){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this}addVectors(A,t){return this.x=A.x+t.x,this.y=A.y+t.y,this.z=A.z+t.z,this}addScaledVector(A,t){return this.x+=A.x*t,this.y+=A.y*t,this.z+=A.z*t,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this}subVectors(A,t){return this.x=A.x-t.x,this.y=A.y-t.y,this.z=A.z-t.z,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this}multiplyVectors(A,t){return this.x=A.x*t.x,this.y=A.y*t.y,this.z=A.z*t.z,this}applyEuler(A){return this.applyQuaternion(Ms.setFromEuler(A))}applyAxisAngle(A,t){return this.applyQuaternion(Ms.setFromAxisAngle(A,t))}applyMatrix3(A){const t=this.x,s=this.y,i=this.z,n=A.elements;return this.x=n[0]*t+n[3]*s+n[6]*i,this.y=n[1]*t+n[4]*s+n[7]*i,this.z=n[2]*t+n[5]*s+n[8]*i,this}applyNormalMatrix(A){return this.applyMatrix3(A).normalize()}applyMatrix4(A){const t=this.x,s=this.y,i=this.z,n=A.elements,g=1/(n[3]*t+n[7]*s+n[11]*i+n[15]);return this.x=(n[0]*t+n[4]*s+n[8]*i+n[12])*g,this.y=(n[1]*t+n[5]*s+n[9]*i+n[13])*g,this.z=(n[2]*t+n[6]*s+n[10]*i+n[14])*g,this}applyQuaternion(A){const t=this.x,s=this.y,i=this.z,n=A.x,g=A.y,r=A.z,I=A.w,o=2*(g*i-r*s),a=2*(r*t-n*i),C=2*(n*s-g*t);return this.x=t+I*o+g*C-r*a,this.y=s+I*a+r*o-n*C,this.z=i+I*C+n*a-g*o,this}project(A){return this.applyMatrix4(A.matrixWorldInverse).applyMatrix4(A.projectionMatrix)}unproject(A){return this.applyMatrix4(A.projectionMatrixInverse).applyMatrix4(A.matrixWorld)}transformDirection(A){const t=this.x,s=this.y,i=this.z,n=A.elements;return this.x=n[0]*t+n[4]*s+n[8]*i,this.y=n[1]*t+n[5]*s+n[9]*i,this.z=n[2]*t+n[6]*s+n[10]*i,this.normalize()}divide(A){return this.x/=A.x,this.y/=A.y,this.z/=A.z,this}divideScalar(A){return this.multiplyScalar(1/A)}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this}clamp(A,t){return this.x=rA(this.x,A.x,t.x),this.y=rA(this.y,A.y,t.y),this.z=rA(this.z,A.z,t.z),this}clampScalar(A,t){return this.x=rA(this.x,A,t),this.y=rA(this.y,A,t),this.z=rA(this.z,A,t),this}clampLength(A,t){const s=this.length();return this.divideScalar(s||1).multiplyScalar(rA(s,A,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,t){return this.x+=(A.x-this.x)*t,this.y+=(A.y-this.y)*t,this.z+=(A.z-this.z)*t,this}lerpVectors(A,t,s){return this.x=A.x+(t.x-A.x)*s,this.y=A.y+(t.y-A.y)*s,this.z=A.z+(t.z-A.z)*s,this}cross(A){return this.crossVectors(this,A)}crossVectors(A,t){const s=A.x,i=A.y,n=A.z,g=t.x,r=t.y,I=t.z;return this.x=i*I-n*r,this.y=n*g-s*I,this.z=s*r-i*g,this}projectOnVector(A){const t=A.lengthSq();if(t===0)return this.set(0,0,0);const s=A.dot(this)/t;return this.copy(A).multiplyScalar(s)}projectOnPlane(A){return _t.copy(this).projectOnVector(A),this.sub(_t)}reflect(A){return this.sub(_t.copy(A).multiplyScalar(2*this.dot(A)))}angleTo(A){const t=Math.sqrt(this.lengthSq()*A.lengthSq());if(t===0)return Math.PI/2;const s=this.dot(A)/t;return Math.acos(rA(s,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const t=this.x-A.x,s=this.y-A.y,i=this.z-A.z;return t*t+s*s+i*i}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)+Math.abs(this.z-A.z)}setFromSpherical(A){return this.setFromSphericalCoords(A.radius,A.phi,A.theta)}setFromSphericalCoords(A,t,s){const i=Math.sin(t)*A;return this.x=i*Math.sin(s),this.y=Math.cos(t)*A,this.z=i*Math.cos(s),this}setFromCylindrical(A){return this.setFromCylindricalCoords(A.radius,A.theta,A.y)}setFromCylindricalCoords(A,t,s){return this.x=A*Math.sin(t),this.y=s,this.z=A*Math.cos(t),this}setFromMatrixPosition(A){const t=A.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(A){const t=this.setFromMatrixColumn(A,0).length(),s=this.setFromMatrixColumn(A,1).length(),i=this.setFromMatrixColumn(A,2).length();return this.x=t,this.y=s,this.z=i,this}setFromMatrixColumn(A,t){return this.fromArray(A.elements,t*4)}setFromMatrix3Column(A,t){return this.fromArray(A.elements,t*3)}setFromEuler(A){return this.x=A._x,this.y=A._y,this.z=A._z,this}setFromColor(A){return this.x=A.r,this.y=A.g,this.z=A.b,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z}fromArray(A,t=0){return this.x=A[t],this.y=A[t+1],this.z=A[t+2],this}toArray(A=[],t=0){return A[t]=this.x,A[t+1]=this.y,A[t+2]=this.z,A}fromBufferAttribute(A,t){return this.x=A.getX(t),this.y=A.getY(t),this.z=A.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const A=Math.random()*Math.PI*2,t=Math.random()*2-1,s=Math.sqrt(1-t*t);return this.x=s*Math.cos(A),this.y=t,this.z=s*Math.sin(A),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const _t=new d,Ms=new NA;class Fs{constructor(A=new d(1/0,1/0,1/0),t=new d(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=A,this.max=t}set(A,t){return this.min.copy(A),this.max.copy(t),this}setFromArray(A){this.makeEmpty();for(let t=0,s=A.length;t<s;t+=3)this.expandByPoint(fA.fromArray(A,t));return this}setFromBufferAttribute(A){this.makeEmpty();for(let t=0,s=A.count;t<s;t++)this.expandByPoint(fA.fromBufferAttribute(A,t));return this}setFromPoints(A){this.makeEmpty();for(let t=0,s=A.length;t<s;t++)this.expandByPoint(A[t]);return this}setFromCenterAndSize(A,t){const s=fA.copy(t).multiplyScalar(.5);return this.min.copy(A).sub(s),this.max.copy(A).add(s),this}setFromObject(A,t=!1){return this.makeEmpty(),this.expandByObject(A,t)}clone(){return new this.constructor().copy(this)}copy(A){return this.min.copy(A.min),this.max.copy(A.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(A){return this.isEmpty()?A.set(0,0,0):A.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(A){return this.isEmpty()?A.set(0,0,0):A.subVectors(this.max,this.min)}expandByPoint(A){return this.min.min(A),this.max.max(A),this}expandByVector(A){return this.min.sub(A),this.max.add(A),this}expandByScalar(A){return this.min.addScalar(-A),this.max.addScalar(A),this}expandByObject(A,t=!1){A.updateWorldMatrix(!1,!1);const s=A.geometry;if(s!==void 0){const n=s.getAttribute("position");if(t===!0&&n!==void 0&&A.isInstancedMesh!==!0)for(let g=0,r=n.count;g<r;g++)A.isMesh===!0?A.getVertexPosition(g,fA):fA.fromBufferAttribute(n,g),fA.applyMatrix4(A.matrixWorld),this.expandByPoint(fA);else A.boundingBox!==void 0?(A.boundingBox===null&&A.computeBoundingBox(),Ct.copy(A.boundingBox)):(s.boundingBox===null&&s.computeBoundingBox(),Ct.copy(s.boundingBox)),Ct.applyMatrix4(A.matrixWorld),this.union(Ct)}const i=A.children;for(let n=0,g=i.length;n<g;n++)this.expandByObject(i[n],t);return this}containsPoint(A){return A.x>=this.min.x&&A.x<=this.max.x&&A.y>=this.min.y&&A.y<=this.max.y&&A.z>=this.min.z&&A.z<=this.max.z}containsBox(A){return this.min.x<=A.min.x&&A.max.x<=this.max.x&&this.min.y<=A.min.y&&A.max.y<=this.max.y&&this.min.z<=A.min.z&&A.max.z<=this.max.z}getParameter(A,t){return t.set((A.x-this.min.x)/(this.max.x-this.min.x),(A.y-this.min.y)/(this.max.y-this.min.y),(A.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(A){return A.max.x>=this.min.x&&A.min.x<=this.max.x&&A.max.y>=this.min.y&&A.min.y<=this.max.y&&A.max.z>=this.min.z&&A.min.z<=this.max.z}intersectsSphere(A){return this.clampPoint(A.center,fA),fA.distanceToSquared(A.center)<=A.radius*A.radius}intersectsPlane(A){let t,s;return A.normal.x>0?(t=A.normal.x*this.min.x,s=A.normal.x*this.max.x):(t=A.normal.x*this.max.x,s=A.normal.x*this.min.x),A.normal.y>0?(t+=A.normal.y*this.min.y,s+=A.normal.y*this.max.y):(t+=A.normal.y*this.max.y,s+=A.normal.y*this.min.y),A.normal.z>0?(t+=A.normal.z*this.min.z,s+=A.normal.z*this.max.z):(t+=A.normal.z*this.max.z,s+=A.normal.z*this.min.z),t<=-A.constant&&s>=-A.constant}intersectsTriangle(A){if(this.isEmpty())return!1;this.getCenter(At),Bt.subVectors(this.max,At),KA.subVectors(A.a,At),TA.subVectors(A.b,At),ZA.subVectors(A.c,At),kA.subVectors(TA,KA),GA.subVectors(ZA,TA),_A.subVectors(KA,ZA);let t=[0,-kA.z,kA.y,0,-GA.z,GA.y,0,-_A.z,_A.y,kA.z,0,-kA.x,GA.z,0,-GA.x,_A.z,0,-_A.x,-kA.y,kA.x,0,-GA.y,GA.x,0,-_A.y,_A.x,0];return!zt(t,KA,TA,ZA,Bt)||(t=[1,0,0,0,1,0,0,0,1],!zt(t,KA,TA,ZA,Bt))?!1:(Qt.crossVectors(kA,GA),t=[Qt.x,Qt.y,Qt.z],zt(t,KA,TA,ZA,Bt))}clampPoint(A,t){return t.copy(A).clamp(this.min,this.max)}distanceToPoint(A){return this.clampPoint(A,fA).distanceTo(A)}getBoundingSphere(A){return this.isEmpty()?A.makeEmpty():(this.getCenter(A.center),A.radius=this.getSize(fA).length()*.5),A}intersect(A){return this.min.max(A.min),this.max.min(A.max),this.isEmpty()&&this.makeEmpty(),this}union(A){return this.min.min(A.min),this.max.max(A.max),this}applyMatrix4(A){return this.isEmpty()?this:(MA[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(A),MA[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(A),MA[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(A),MA[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(A),MA[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(A),MA[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(A),MA[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(A),MA[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(A),this.setFromPoints(MA),this)}translate(A){return this.min.add(A),this.max.add(A),this}equals(A){return A.min.equals(this.min)&&A.max.equals(this.max)}}const MA=[new d,new d,new d,new d,new d,new d,new d,new d],fA=new d,Ct=new Fs,KA=new d,TA=new d,ZA=new d,kA=new d,GA=new d,_A=new d,At=new d,Bt=new d,Qt=new d,zA=new d;function zt(e,A,t,s,i){for(let n=0,g=e.length-3;n<=g;n+=3){zA.fromArray(e,n);const r=i.x*Math.abs(zA.x)+i.y*Math.abs(zA.y)+i.z*Math.abs(zA.z),I=A.dot(zA),o=t.dot(zA),a=s.dot(zA);if(Math.max(-Math.max(I,o,a),Math.min(I,o,a))>r)return!1}return!0}const Ss={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},UA={h:0,s:0,l:0},ht={h:0,s:0,l:0};function Lt(e,A,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?e+(A-e)*6*t:t<1/2?A:t<2/3?e+(A-e)*6*(2/3-t):e}class Ht{constructor(A,t,s){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(A,t,s)}set(A,t,s){if(t===void 0&&s===void 0){const i=A;i&&i.isColor?this.copy(i):typeof i=="number"?this.setHex(i):typeof i=="string"&&this.setStyle(i)}else this.setRGB(A,t,s);return this}setScalar(A){return this.r=A,this.g=A,this.b=A,this}setHex(A,t=uA){return A=Math.floor(A),this.r=(A>>16&255)/255,this.g=(A>>8&255)/255,this.b=(A&255)/255,yA.toWorkingColorSpace(this,t),this}setRGB(A,t,s,i=yA.workingColorSpace){return this.r=A,this.g=t,this.b=s,yA.toWorkingColorSpace(this,i),this}setHSL(A,t,s,i=yA.workingColorSpace){if(A=fe(A,1),t=rA(t,0,1),s=rA(s,0,1),t===0)this.r=this.g=this.b=s;else{const n=s<=.5?s*(1+t):s+t-s*t,g=2*s-n;this.r=Lt(g,n,A+1/3),this.g=Lt(g,n,A),this.b=Lt(g,n,A-1/3)}return yA.toWorkingColorSpace(this,i),this}setStyle(A,t=uA){function s(n){n!==void 0&&parseFloat(n)<1&&console.warn("THREE.Color: Alpha component of "+A+" will be ignored.")}let i;if(i=/^(\\w+)\\(([^\\)]*)\\)/.exec(A)){let n;const g=i[1],r=i[2];switch(g){case"rgb":case"rgba":if(n=/^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(r))return s(n[4]),this.setRGB(Math.min(255,parseInt(n[1],10))/255,Math.min(255,parseInt(n[2],10))/255,Math.min(255,parseInt(n[3],10))/255,t);if(n=/^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(r))return s(n[4]),this.setRGB(Math.min(100,parseInt(n[1],10))/100,Math.min(100,parseInt(n[2],10))/100,Math.min(100,parseInt(n[3],10))/100,t);break;case"hsl":case"hsla":if(n=/^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(r))return s(n[4]),this.setHSL(parseFloat(n[1])/360,parseFloat(n[2])/100,parseFloat(n[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+A)}}else if(i=/^\\#([A-Fa-f\\d]+)$/.exec(A)){const n=i[1],g=n.length;if(g===3)return this.setRGB(parseInt(n.charAt(0),16)/15,parseInt(n.charAt(1),16)/15,parseInt(n.charAt(2),16)/15,t);if(g===6)return this.setHex(parseInt(n,16),t);console.warn("THREE.Color: Invalid hex color "+A)}else if(A&&A.length>0)return this.setColorName(A,t);return this}setColorName(A,t=uA){const s=Ss[A.toLowerCase()];return s!==void 0?this.setHex(s,t):console.warn("THREE.Color: Unknown color "+A),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(A){return this.r=A.r,this.g=A.g,this.b=A.b,this}copySRGBToLinear(A){return this.r=qA(A.r),this.g=qA(A.g),this.b=qA(A.b),this}copyLinearToSRGB(A){return this.r=vA(A.r),this.g=vA(A.g),this.b=vA(A.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(A=uA){return yA.fromWorkingColorSpace(sA.copy(this),A),Math.round(rA(sA.r*255,0,255))*65536+Math.round(rA(sA.g*255,0,255))*256+Math.round(rA(sA.b*255,0,255))}getHexString(A=uA){return("000000"+this.getHex(A).toString(16)).slice(-6)}getHSL(A,t=yA.workingColorSpace){yA.fromWorkingColorSpace(sA.copy(this),t);const s=sA.r,i=sA.g,n=sA.b,g=Math.max(s,i,n),r=Math.min(s,i,n);let I,o;const a=(r+g)/2;if(r===g)I=0,o=0;else{const C=g-r;switch(o=a<=.5?C/(g+r):C/(2-g-r),g){case s:I=(i-n)/C+(i<n?6:0);break;case i:I=(n-s)/C+2;break;case n:I=(s-i)/C+4;break}I/=6}return A.h=I,A.s=o,A.l=a,A}getRGB(A,t=yA.workingColorSpace){return yA.fromWorkingColorSpace(sA.copy(this),t),A.r=sA.r,A.g=sA.g,A.b=sA.b,A}getStyle(A=uA){yA.fromWorkingColorSpace(sA.copy(this),A);const t=sA.r,s=sA.g,i=sA.b;return A!==uA?`color(${A} ${t.toFixed(3)} ${s.toFixed(3)} ${i.toFixed(3)})`:`rgb(${Math.round(t*255)},${Math.round(s*255)},${Math.round(i*255)})`}offsetHSL(A,t,s){return this.getHSL(UA),this.setHSL(UA.h+A,UA.s+t,UA.l+s)}add(A){return this.r+=A.r,this.g+=A.g,this.b+=A.b,this}addColors(A,t){return this.r=A.r+t.r,this.g=A.g+t.g,this.b=A.b+t.b,this}addScalar(A){return this.r+=A,this.g+=A,this.b+=A,this}sub(A){return this.r=Math.max(0,this.r-A.r),this.g=Math.max(0,this.g-A.g),this.b=Math.max(0,this.b-A.b),this}multiply(A){return this.r*=A.r,this.g*=A.g,this.b*=A.b,this}multiplyScalar(A){return this.r*=A,this.g*=A,this.b*=A,this}lerp(A,t){return this.r+=(A.r-this.r)*t,this.g+=(A.g-this.g)*t,this.b+=(A.b-this.b)*t,this}lerpColors(A,t,s){return this.r=A.r+(t.r-A.r)*s,this.g=A.g+(t.g-A.g)*s,this.b=A.b+(t.b-A.b)*s,this}lerpHSL(A,t){this.getHSL(UA),A.getHSL(ht);const s=bt(UA.h,ht.h,t),i=bt(UA.s,ht.s,t),n=bt(UA.l,ht.l,t);return this.setHSL(s,i,n),this}setFromVector3(A){return this.r=A.x,this.g=A.y,this.b=A.z,this}applyMatrix3(A){const t=this.r,s=this.g,i=this.b,n=A.elements;return this.r=n[0]*t+n[3]*s+n[6]*i,this.g=n[1]*t+n[4]*s+n[7]*i,this.b=n[2]*t+n[5]*s+n[8]*i,this}equals(A){return A.r===this.r&&A.g===this.g&&A.b===this.b}fromArray(A,t=0){return this.r=A[t],this.g=A[t+1],this.b=A[t+2],this}toArray(A=[],t=0){return A[t]=this.r,A[t+1]=this.g,A[t+2]=this.b,A}fromBufferAttribute(A,t){return this.r=A.getX(t),this.g=A.getY(t),this.b=A.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const sA=new Ht;Ht.NAMES=Ss,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:ws}})),typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=ws);const ds=-12,Ns=9,XA=Math.exp(-30),me=11,xe=11,ks=1<<me,Gs=1<<xe,Us=1;function De(e){var n;let A=!1;const t=e.split(`\n`).map(g=>{const r=g.trimEnd();return A?r:r.length>0?(A=!0,r):null}).filter(g=>g!=null);for(;t.length>0&&t[t.length-1].length===0;)t.pop();if(t.length===0)return[];const s=(n=t[0].match(/^\\s*/))==null?void 0:n[0];if(!s)return t;const i=new RegExp(`^${s}`);return t.map(g=>g.replace(i,""))}function pe(e){return De(e).join(`\n`)}const qt=new Float32Array(1),Ys=new Uint32Array(qt.buffer);function WA(e){qt[0]=e;const A=Ys[0],t=A>>31&1,s=A>>23&255,i=A&8388607,n=t<<15;if(s===255)return i!==0?n|32767:n|31744;const g=s-127+15;if(g>=31)return n|31744;if(g<=0){if(g<-10)return n;const I=(i|8388608)>>1-g+13;return n|I}const r=i>>13;return n|g<<10|r}function O(e){const A=e>>15&1,t=e>>10&31,s=e&1023;let i;if(t===0)if(s===0)i=A<<31;else{let n=s,g=-14;for(;(n&1024)===0;)n<<=1,g--;n&=1023;const r=g+127,I=n<<13;i=A<<31|r<<23|I}else if(t===31)s===0?i=A<<31|2139095040:i=A<<31|2143289344;else{const n=t-15+127,g=s<<13;i=A<<31|n<<23|g}return Ys[0]=i,qt[0]}function QA(e){return Math.max(0,Math.min(255,Math.round(e*255)))}function Me(e){const A=[],t=new Set;function s(i){i&&typeof i=="object"&&!t.has(i)&&(t.add(i),i instanceof ArrayBuffer?A.push(i):ArrayBuffer.isView(i)?A.push(i.buffer):Array.isArray(i)?i.forEach(s):Object.values(i).forEach(s))}return s(e),A}function vt(e,A,t,s,i,n,g,r,I,o,a,C,Q,B,h,l,c){const E=(c==null?void 0:c.rgbMin)??0,y=((c==null?void 0:c.rgbMax)??1)-E,f=QA((B-E)/y),D=QA((h-E)/y),S=QA((l-E)/y),b=QA(Q),x=_s(new NA(I,o,a,C)),m=x&255,G=x>>>8&255,p=x>>>16&255,w=(c==null?void 0:c.lnScaleMin)??ds,z=254/(((c==null?void 0:c.lnScaleMax)??Ns)-w),Y=n<XA?0:Math.min(255,Math.max(1,Math.round((Math.log(n)-w)*z)+1)),N=g<XA?0:Math.min(255,Math.max(1,Math.round((Math.log(g)-w)*z)+1)),q=r<XA?0:Math.min(255,Math.max(1,Math.round((Math.log(r)-w)*z)+1)),T=WA(t),v=WA(s),P=WA(i),Z=A*4;e[Z]=f|D<<8|S<<16|b<<24,e[Z+1]=T|v<<16,e[Z+2]=P|m<<16|G<<24,e[Z+3]=Y|N<<8|q<<16|p<<24}function Rs(e,A,t,s,i){const n=WA(t),g=WA(s),r=WA(i),I=A*4;e[I+1]=n|g<<16,e[I+2]=r|e[I+2]&4294901760}function bs(e,A,t,s,i,n){const g=(n==null?void 0:n.lnScaleMin)??ds,I=254/(((n==null?void 0:n.lnScaleMax)??Ns)-g),o=t<XA?0:Math.min(255,Math.max(1,Math.round((Math.log(t)-g)*I)+1)),a=s<XA?0:Math.min(255,Math.max(1,Math.round((Math.log(s)-g)*I)+1)),C=i<XA?0:Math.min(255,Math.max(1,Math.round((Math.log(i)-g)*I)+1)),Q=A*4;e[Q+3]=o|a<<8|C<<16|e[Q+3]&4278190080}function Js(e,A,t,s,i,n){const g=_s(new NA(t,s,i,n)),r=g&255,I=g>>>8&255,o=g>>>16&255,a=A*4;e[a+2]=e[a+2]&65535|r<<16|I<<24,e[a+3]=e[a+3]&16777215|o<<24}function Fe(e,A,t,s,i,n,g){const r=(g==null?void 0:g.rgbMin)??0,o=((g==null?void 0:g.rgbMax)??1)-r,a=QA((t-r)/o),C=QA((s-r)/o),Q=QA((i-r)/o),B=QA(n),h=A*4;e[h]=a|C<<8|Q<<16|B<<24}function Se(e,A,t,s,i,n){const g=(n==null?void 0:n.rgbMin)??0,I=((n==null?void 0:n.rgbMax)??1)-g,o=QA((t-g)/I),a=QA((s-g)/I),C=QA((i-g)/I),Q=A*4;e[Q]=o|a<<8|C<<16|e[Q]&4278190080}function de(e,A,t){const s=QA(t),i=A*4;e[i]=e[i]&16777215|s<<24}new d,new d,new Ht;function Ne(e){const A=ks,t=Math.max(Us,Math.min(Gs,Math.ceil(e/A))),s=Math.ceil(e/(A*t)),i=A*t*s;return{width:A,height:t,depth:s,maxSplats:i}}function Et(e){const A=ks,t=Math.max(Us,Math.min(Gs,Math.ceil(e/A))),s=Math.ceil(e/(A*t));return A*t*s}pe(`\n precision highp float;\n\n in vec3 position;\n\n void main() {\n gl_Position = vec4(position.xy, 0.0, 1.0);\n }\n`);function _s(e){const A=e.clone().normalize();A.w<0&&A.set(-A.x,-A.y,-A.z,-A.w);const t=2*Math.acos(A.w),s=Math.sqrt(A.x*A.x+A.y*A.y+A.z*A.z),i=s<1e-6?new d(1,0,0):new d(A.x,A.y,A.z).divideScalar(s),n=Math.abs(i.x)+Math.abs(i.y)+Math.abs(i.z);let g=i.x/n,r=i.y/n;if(i.z<0){const B=g;g=(1-Math.abs(r))*(g>=0?1:-1),r=(1-Math.abs(B))*(r>=0?1:-1)}const I=g*.5+.5,o=r*.5+.5,a=Math.round(I*255),C=Math.round(o*255);return Math.round(t*(255/Math.PI))<<16|C<<8|a}function ct(e,A,t,s){const i=Math.max(-127,Math.min(127,e*127)),n=Math.max(-127,Math.min(127,A*127)),g=Math.max(-127,Math.min(127,t*127)),r=Math.max(-127,Math.min(127,s*127));return i&255|(n&255)<<8|(g&255)<<16|(r&255)<<24}function lt(e,A,t,s){const i=(s==null?void 0:s.sh1Min)??-1,n=(s==null?void 0:s.sh1Max)??1,g=.5*(i+n),r=126/(n-i),I=A*2;for(let o=0;o<9;++o){const a=(t[o]-g)*r,C=Math.round(Math.max(-63,Math.min(63,a)))&127,Q=o*7,B=Q+7,h=Math.floor(Q/32),l=Q-h*32,c=C<<l&4294967295;if(e[I+h]|=c,B>h*32+32){const E=C>>>32-l&4294967295;e[I+h+1]|=E}}}function ut(e,A,t,s){const i=(s==null?void 0:s.sh2Min)??-1,n=(s==null?void 0:s.sh2Max)??1,g=.5*(i+n),r=2/(n-i);e[A*4+0]=ct((t[0]-g)*r,(t[1]-g)*r,(t[2]-g)*r,(t[3]-g)*r),e[A*4+1]=ct((t[4]-g)*r,(t[5]-g)*r,(t[6]-g)*r,(t[7]-g)*r),e[A*4+2]=ct((t[8]-g)*r,(t[9]-g)*r,(t[10]-g)*r,(t[11]-g)*r),e[A*4+3]=ct((t[12]-g)*r,(t[13]-g)*r,(t[14]-g)*r,0)}function yt(e,A,t,s){const i=(s==null?void 0:s.sh3Min)??-1,n=(s==null?void 0:s.sh3Max)??1,g=.5*(i+n),r=62/(n-i),I=A*4;for(let o=0;o<21;++o){const a=(t[o]-g)*r,C=Math.round(Math.max(-31,Math.min(31,a)))&63,Q=o*6,B=Q+6,h=Math.floor(Q/32),l=Q-h*32,c=C<<l&4294967295;if(e[I+h]|=c,B>h*32+32){const E=C>>>32-l&4294967295;e[I+h+1]|=E}}}function ke(e,A){const t=[];let s=0,i=null;const n=new ls((I,o)=>{if(t.push(I),s+=I.length,o||s>=A){const a=new Uint8Array(s);let C=0;for(const Q of t)a.set(Q,C),C+=Q.length;i=a.slice(0,A)}}),g=1024;let r=0;for(;i==null&&r<e.length;){const I=e.slice(r,r+g);n.push(I,!1),r+=g}if(i==null&&(n.push(new Uint8Array,!0),i==null))throw new Error("Failed to decompress partial gzip");return i}class Ge{constructor({fileBytes:A,chunkBytes:t=64*1024}){this.fileBytes=A,this.chunkBytes=t,this.offset=0,this.chunks=[],this.totalBytes=0,this.gunzip=new ls((s,i)=>{this.chunks.push(s),this.totalBytes+=s.length})}read(A){for(;this.totalBytes<A&&this.offset<this.fileBytes.length;){const n=Math.min(this.offset+this.chunkBytes,this.fileBytes.length);this.gunzip.push(this.fileBytes.subarray(this.offset,n),!1),this.offset=n}if(this.totalBytes<A&&this.offset>=this.fileBytes.length&&this.gunzip.push(new Uint8Array(0),!0),this.totalBytes<A)throw new Error(`Unexpected EOF: needed ${A}, got ${this.totalBytes}`);const t=new Uint8Array(this.totalBytes);let s=0;for(const n of this.chunks)t.set(n,s),s+=n.length;const i=t.subarray(0,A);return this.chunks=[t.subarray(A)],this.totalBytes-=A,i}}function zs(e,A,t){const s=Math.floor(e.length/32);if(s*32!==e.length)throw new Error("Invalid .splat file size");A(s);const i=new Float32Array(e.buffer);for(let n=0;n<s;++n){const g=n*32,r=n*8,I=i[r+0],o=i[r+1],a=i[r+2],C=i[r+3],Q=i[r+4],B=i[r+5],h=e[g+24]/255,l=e[g+25]/255,c=e[g+26]/255,E=e[g+27]/255,u=(e[g+28]-128)/128,y=(e[g+29]-128)/128,f=(e[g+30]-128)/128,D=(e[g+31]-128)/128;t(n,I,o,a,C,Q,B,y,f,D,u,E,h,l,c)}}function Ue(e,A){let t=0,s=0,i=new Uint32Array(0);return zs(e,n=>{t=n,s=Et(t),i=new Uint32Array(s*4)},(n,g,r,I,o,a,C,Q,B,h,l,c,E,u,y)=>{vt(i,n,g,r,I,o,a,C,Q,B,h,l,c,E,u,y,A)}),{packedArray:i,numSplats:t}}const ft={0:{bytesPerCenter:12,bytesPerScale:12,bytesPerRotation:16,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:4,scaleOffsetBytes:12,rotationOffsetBytes:24,colorOffsetBytes:40,sphericalHarmonicsOffsetBytes:44,scaleRange:1},1:{bytesPerCenter:6,bytesPerScale:6,bytesPerRotation:8,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:2,scaleOffsetBytes:6,rotationOffsetBytes:12,colorOffsetBytes:20,sphericalHarmonicsOffsetBytes:24,scaleRange:32767},2:{bytesPerCenter:6,bytesPerScale:6,bytesPerRotation:8,bytesPerColor:4,bytesPerSphericalHarmonicsComponent:1,scaleOffsetBytes:6,rotationOffsetBytes:12,colorOffsetBytes:20,sphericalHarmonicsOffsetBytes:24,scaleRange:32767}},Ls={0:0,1:9,2:24,3:45};function Ye(e,A,t,s){var l;let g=0;const r=new DataView(e.buffer,g,4096);g+=4096;const I=r.getUint8(0),o=r.getUint8(1);if(I!==0||o<1)throw new Error(`Unsupported .ksplat version: ${I}.${o}`);const a=r.getUint32(4,!0);r.getUint32(16,!0);const C=r.getUint16(20,!0);if(C<0||C>2)throw new Error(`Invalid .ksplat compression level: ${C}`);const Q=r.getFloat32(36,!0)||-1.5,B=r.getFloat32(40,!0)||1.5;let h=4096+a*1024;for(let c=0;c<a;++c){let E=function(nA,U){if(C===0)return k.getFloat32(nA+J+U*4,!0);if(C===1)return O(k.getUint16(nA+J+U*2,!0));const cA=k.getUint8(nA+J+U)/255;return Q+cA*(B-Q)};const u=new DataView(e.buffer,g,1024);g+=1024;const y=u.getUint32(0,!0),f=u.getUint32(4,!0),D=u.getUint32(8,!0),S=u.getUint32(12,!0),b=u.getFloat32(16,!0),x=u.getUint16(20,!0),m=(u.getUint32(24,!0)||((l=ft[C])==null?void 0:l.scaleRange))??1,G=u.getUint32(32,!0),p=G*D,w=u.getUint32(36,!0),M=w*4,z=x*S+M,Y=u.getUint16(40,!0),N=Ls[Y],{bytesPerCenter:q,bytesPerScale:T,bytesPerRotation:v,bytesPerColor:P,bytesPerSphericalHarmonicsComponent:Z,scaleOffsetBytes:W,rotationOffsetBytes:L,colorOffsetBytes:K,sphericalHarmonicsOffsetBytes:J}=ft[C],R=q+T+v+P+N*Z,F=R*f,eA=F+z,iA=[0,3,6,1,4,7,2,5,8],IA=[9,14,19,10,15,20,11,16,21,12,17,22,13,18,23],gA=[24,31,38,25,32,39,26,33,40,27,34,41,28,35,42,29,36,43,30,37,44],oA=Y>=1?new Float32Array(3*3):void 0,aA=Y>=2?new Float32Array(5*3):void 0,FA=Y>=3?new Float32Array(7*3):void 0,CA=b/2/m,hA=h+M,EA=h+z,k=new DataView(e.buffer,EA,F),$=new Float32Array(e.buffer,hA,S*3),wA=new Uint32Array(e.buffer,h,w);let H=G,RA=p;for(let nA=0;nA<y;++nA){const U=nA*R;let cA;if(nA<p)cA=Math.floor(nA/D);else{const pA=wA[H-G];nA>=RA+pA&&(H+=1,RA+=pA),cA=H}const AA=C===0?k.getFloat32(U+0,!0):(k.getUint16(U+0,!0)-m)*CA+$[3*cA+0],_=C===0?k.getFloat32(U+4,!0):(k.getUint16(U+2,!0)-m)*CA+$[3*cA+1],mA=C===0?k.getFloat32(U+8,!0):(k.getUint16(U+4,!0)-m)*CA+$[3*cA+2],et=C===0?k.getFloat32(U+W+0,!0):O(k.getUint16(U+W+0,!0)),it=C===0?k.getFloat32(U+W+4,!0):O(k.getUint16(U+W+2,!0)),Xt=C===0?k.getFloat32(U+W+8,!0):O(k.getUint16(U+W+4,!0)),Wt=C===0?k.getFloat32(U+L+0,!0):O(k.getUint16(U+L+0,!0)),Pt=C===0?k.getFloat32(U+L+4,!0):O(k.getUint16(U+L+2,!0)),Vt=C===0?k.getFloat32(U+L+8,!0):O(k.getUint16(U+L+4,!0)),jt=C===0?k.getFloat32(U+L+12,!0):O(k.getUint16(U+L+6,!0)),Ot=k.getUint8(U+K+0)/255,$t=k.getUint8(U+K+1)/255,As=k.getUint8(U+K+2)/255,ts=k.getUint8(U+K+3)/255;if(t(nA,AA,_,mA,et,it,Xt,Pt,Vt,jt,Wt,ts,Ot,$t,As),Y>=1&&oA){for(const[pA,LA]of iA.entries())oA[pA]=E(U,LA);if(aA)for(const[pA,LA]of IA.entries())aA[pA]=E(U,LA);if(FA)for(const[pA,LA]of gA.entries())FA[pA]=E(U,LA);s==null||s(nA,oA,aA,FA)}}h+=eA}}function Re(e,A){var u;let i=0;const n=new DataView(e.buffer,i,4096);i+=4096;const g=n.getUint8(0),r=n.getUint8(1);if(g!==0||r<1)throw new Error(`Unsupported .ksplat version: ${g}.${r}`);const I=n.getUint32(4,!0),o=n.getUint32(16,!0),a=n.getUint16(20,!0);if(a<0||a>2)throw new Error(`Invalid .ksplat compression level: ${a}`);const C=n.getFloat32(36,!0)||-1.5,Q=n.getFloat32(40,!0)||1.5,B=o,h=Et(B),l=new Uint32Array(h*4),c={};let E=4096+I*1024;for(let y=0;y<I;++y){let f=function(AA,_){if(a===0)return H.getFloat32(AA+eA+_*4,!0);if(a===1)return O(H.getUint16(AA+eA+_*2,!0));const mA=H.getUint8(AA+eA+_)/255;return C+mA*(Q-C)};const D=new DataView(e.buffer,i,1024);i+=1024;const S=D.getUint32(0,!0),b=D.getUint32(4,!0),x=D.getUint32(8,!0),m=D.getUint32(12,!0),G=D.getFloat32(16,!0),p=D.getUint16(20,!0),w=(D.getUint32(24,!0)||((u=ft[a])==null?void 0:u.scaleRange))??1,M=D.getUint32(32,!0),z=M*x,Y=D.getUint32(36,!0),N=Y*4,q=p*m+N,T=D.getUint16(40,!0),v=Ls[T],{bytesPerCenter:P,bytesPerScale:Z,bytesPerRotation:W,bytesPerColor:L,bytesPerSphericalHarmonicsComponent:K,scaleOffsetBytes:J,rotationOffsetBytes:R,colorOffsetBytes:F,sphericalHarmonicsOffsetBytes:eA}=ft[a],iA=P+Z+W+L+v*K,IA=iA*b,gA=IA+q,oA=[0,3,6,1,4,7,2,5,8],aA=[9,14,19,10,15,20,11,16,21,12,17,22,13,18,23],FA=[24,31,38,25,32,39,26,33,40,27,34,41,28,35,42,29,36,43,30,37,44],CA=T>=1?new Float32Array(3*3):void 0,hA=T>=2?new Float32Array(5*3):void 0,EA=T>=3?new Float32Array(7*3):void 0,k=G/2/w,$=E+N,wA=E+q,H=new DataView(e.buffer,wA,IA),RA=new Float32Array(e.buffer,$,m*3),nA=new Uint32Array(e.buffer,E,Y);let U=M,cA=z;for(let AA=0;AA<S;++AA){const _=AA*iA;let mA;if(AA<z)mA=Math.floor(AA/x);else{const bA=nA[U-M];AA>=cA+bA&&(U+=1,cA+=bA),mA=U}const et=a===0?H.getFloat32(_+0,!0):(H.getUint16(_+0,!0)-w)*k+RA[3*mA+0],it=a===0?H.getFloat32(_+4,!0):(H.getUint16(_+2,!0)-w)*k+RA[3*mA+1],Xt=a===0?H.getFloat32(_+8,!0):(H.getUint16(_+4,!0)-w)*k+RA[3*mA+2],Wt=a===0?H.getFloat32(_+J+0,!0):O(H.getUint16(_+J+0,!0)),Pt=a===0?H.getFloat32(_+J+4,!0):O(H.getUint16(_+J+2,!0)),Vt=a===0?H.getFloat32(_+J+8,!0):O(H.getUint16(_+J+4,!0)),jt=a===0?H.getFloat32(_+R+0,!0):O(H.getUint16(_+R+0,!0)),Ot=a===0?H.getFloat32(_+R+4,!0):O(H.getUint16(_+R+2,!0)),$t=a===0?H.getFloat32(_+R+8,!0):O(H.getUint16(_+R+4,!0)),As=a===0?H.getFloat32(_+R+12,!0):O(H.getUint16(_+R+6,!0)),ts=H.getUint8(_+F+0)/255,pA=H.getUint8(_+F+1)/255,LA=H.getUint8(_+F+2)/255,Oe=H.getUint8(_+F+3)/255;if(vt(l,AA,et,it,Xt,Wt,Pt,Vt,Ot,$t,As,jt,Oe,ts,pA,LA,A),T>=1){if(CA){c.sh1||(c.sh1=new Uint32Array(B*2));for(const[bA,nt]of oA.entries())CA[bA]=f(_,nt);lt(c.sh1,AA,CA,A)}if(hA){c.sh2||(c.sh2=new Uint32Array(B*4));for(const[bA,nt]of aA.entries())hA[bA]=f(_,nt);ut(c.sh2,AA,hA,A)}if(EA){c.sh3||(c.sh3=new Uint32Array(B*4));for(const[bA,nt]of FA.entries())EA[bA]=f(_,nt);yt(c.sh3,AA,EA,A)}}}E+=gA}return{packedArray:l,numSplats:B,extra:c}}const VA=class VA{constructor({fileBytes:A}){this.header="",this.littleEndian=!0,this.elements={},this.comments=[],this.data=null,this.numSplats=0,this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A}async parseHeader(){const t=new ReadableStream({start:g=>{g.enqueue(this.fileBytes.slice(0,65536)),g.close()}}).pipeThrough(new TextDecoderStream).getReader();this.header="";const s=`end_header\n`;for(;;){const{value:g,done:r}=await t.read();if(r)throw new Error("Failed to read header");this.header+=g;const I=this.header.indexOf(s);if(I>=0){this.header=this.header.slice(0,I+s.length);break}}const i=new TextEncoder().encode(this.header).length;this.data=new DataView(this.fileBytes.buffer,i),this.elements={};let n=null;this.comments=[],this.header.trim().split(`\n`).forEach((g,r)=>{const I=g.trim();if(r===0){if(I!=="ply")throw new Error("Invalid PLY header");return}if(I.length===0)return;const o=I.split(" ");switch(o[0]){case"format":if(o[1]==="binary_little_endian")this.littleEndian=!0;else if(o[1]==="binary_big_endian")this.littleEndian=!1;else throw new Error(`Unsupported PLY format: ${o[1]}`);if(o[2]!=="1.0")throw new Error(`Unsupported PLY version: ${o[2]}`);break;case"end_header":break;case"comment":this.comments.push(I.slice(8));break;case"element":{const a=o[1];n={name:a,count:Number.parseInt(o[2]),properties:{}},this.elements[a]=n;break}case"property":if(n==null)throw new Error("Property must be inside an element");o[1]==="list"?n.properties[o[4]]={isList:!0,type:o[3],countType:o[2]}:n.properties[o[2]]={isList:!1,type:o[1]};break}}),this.elements.vertex&&(this.numSplats=this.elements.vertex.count)}parseData(A){let t=0;const s=this.data;if(s==null)throw new Error("No data to parse");for(const i in this.elements){const n=this.elements[i],{count:g,properties:r}=n,I={},o=[];for(const[C,Q]of Object.entries(r))Q.isList?(I[C]=[],o.push(()=>{const B=I[C];B.length=xt[Q.countType](s,t,this.littleEndian),t+=PA[Q.countType];for(let h=0;h<B.length;h++)B[h]=xt[Q.type](s,t,this.littleEndian),t+=PA[Q.type]})):(I[C]=0,o.push(()=>{I[C]=xt[Q.type](s,t,this.littleEndian),t+=PA[Q.type]}));const a=A(n)??(()=>{});for(let C=0;C<g;C++){for(const Q of o)Q();a(C,I)}}}parseSplats(A,t){if(this.elements.vertex==null)throw new Error("No vertex element found");let s=!1;const i=[];let n=0,g=[],r=[],I=[],o,a,C;function Q(){const E=Je[n];g=new Array(3).fill(null).flatMap((u,y)=>[0,1,2].map((f,D)=>`f_rest_${y+D*E/3}`)),r=new Array(5).fill(null).flatMap((u,y)=>[0,1,2].map((f,D)=>`f_rest_${3+y+D*E/3}`)),I=new Array(7).fill(null).flatMap((u,y)=>[0,1,2].map((f,D)=>`f_rest_${8+y+D*E/3}`)),o=n>=1?new Float32Array(3*3):void 0,a=n>=2?new Float32Array(5*3):void 0,C=n>=3?new Float32Array(7*3):void 0}function B(E,u){if(!o)throw new Error("Missing sh1");for(const[y,f]of g.entries())o[y]=u[f]*8/255-4;if(a)for(const[y,f]of r.entries())a[y]=u[f]*8/255-4;if(C)for(const[y,f]of I.entries())C[y]=u[f]*8/255-4;t==null||t(E,o,a,C)}function h(E){const{min_x:u,min_y:y,min_z:f,max_x:D,max_y:S,max_z:b,min_scale_x:x,min_scale_y:m,min_scale_z:G,max_scale_x:p,max_scale_y:w,max_scale_z:M}=E.properties;if(!u||!y||!f||!D||!S||!b||!x||!m||!G||!p||!w||!M)throw new Error("Missing PLY chunk properties");return s=!0,(z,Y)=>{const{min_x:N,min_y:q,min_z:T,max_x:v,max_y:P,max_z:Z,min_scale_x:W,min_scale_y:L,min_scale_z:K,max_scale_x:J,max_scale_y:R,max_scale_z:F,min_r:eA,min_g:iA,min_b:IA,max_r:gA,max_g:oA,max_b:aA}=Y;i.push({min_x:N,min_y:q,min_z:T,max_x:v,max_y:P,max_z:Z,min_scale_x:W,min_scale_y:L,min_scale_z:K,max_scale_x:J,max_scale_y:R,max_scale_z:F,min_r:eA,min_g:iA,min_b:IA,max_r:gA,max_g:oA,max_b:aA})}}function l(E){if(t&&E.name==="sh")return n=qs(E.properties),Q(),B;if(E.name!=="vertex")return null;const{packed_position:u,packed_rotation:y,packed_scale:f,packed_color:D}=E.properties;if(!u||!y||!f||!D)throw new Error("Missing PLY properties: packed_position, packed_rotation, packed_scale, packed_color");const S=Math.sqrt(2);return(b,x)=>{const m=i[b>>>8];if(m==null)throw new Error("Missing PLY chunk");const{min_x:G,min_y:p,min_z:w,max_x:M,max_y:z,max_z:Y,min_scale_x:N,min_scale_y:q,min_scale_z:T,max_scale_x:v,max_scale_y:P,max_scale_z:Z,min_r:W,min_g:L,min_b:K,max_r:J,max_g:R,max_b:F}=m,{packed_position:eA,packed_rotation:iA,packed_scale:IA,packed_color:gA}=x,oA=(eA>>>21&2047)/2047*(M-G)+G,aA=(eA>>>11&1023)/1023*(z-p)+p,FA=(eA&2047)/2047*(Y-w)+w,CA=((iA>>>20&1023)/1023-.5)*S,hA=((iA>>>10&1023)/1023-.5)*S,EA=((iA&1023)/1023-.5)*S,k=Math.sqrt(Math.max(0,1-CA*CA-hA*hA-EA*EA)),$=iA>>>30,wA=$===0?CA:$===1?k:hA,H=$<=1?hA:$===2?k:EA,RA=$<=2?EA:k,nA=$===0?k:CA,U=Math.exp((IA>>>21&2047)/2047*(v-N)+N),cA=Math.exp((IA>>>11&1023)/1023*(P-q)+q),AA=Math.exp((IA&2047)/2047*(Z-T)+T),_=(gA>>>24&255)/255*((J??1)-(W??0))+(W??0),mA=(gA>>>16&255)/255*((R??1)-(L??0))+(L??0),et=(gA>>>8&255)/255*((F??1)-(K??0))+(K??0),it=(gA&255)/255;A(b,oA,aA,FA,U,cA,AA,wA,H,RA,nA,it,_,mA,et)}}const c=E=>{if(E.name==="chunk")return h(E);if(s)return l(E);if(E.name!=="vertex")return null;const{x:u,y,z:f,scale_0:D,scale_1:S,scale_2:b,rot_0:x,rot_1:m,rot_2:G,rot_3:p,opacity:w,f_dc_0:M,f_dc_1:z,f_dc_2:Y,red:N,green:q,blue:T,alpha:v}=E.properties;if(!u||!y||!f)throw new Error("Missing PLY properties: x, y, z");const P=D&&S&&b,Z=x&&m&&G&&p,W=v!=null?Dt[v.type]:1,L=N!=null?Dt[N.type]:1,K=q!=null?Dt[q.type]:1,J=T!=null?Dt[T.type]:1;return n=qs(E.properties),Q(),(R,F)=>{const eA=P?Math.exp(F.scale_0):VA.defaultPointScale,iA=P?Math.exp(F.scale_1):VA.defaultPointScale,IA=P?Math.exp(F.scale_2):VA.defaultPointScale,gA=Z?F.rot_1:0,oA=Z?F.rot_2:0,aA=Z?F.rot_3:0,FA=Z?F.rot_0:1,CA=w!=null?1/(1+Math.exp(-F.opacity)):v!=null?F.alpha/W:1,hA=M!=null?F.f_dc_0*mt+.5:N!=null?F.red/L:1,EA=z!=null?F.f_dc_1*mt+.5:q!=null?F.green/K:1,k=Y!=null?F.f_dc_2*mt+.5:T!=null?F.blue/J:1;if(A(R,F.x,F.y,F.z,eA,iA,IA,gA,oA,aA,FA,CA,hA,EA,k),t&&o){if(o)for(const[$,wA]of g.entries())o[$]=F[wA];if(a)for(const[$,wA]of r.entries())a[$]=F[wA];if(C)for(const[$,wA]of I.entries())C[$]=F[wA];t(R,o,a,C)}}};this.parseData(c)}injectRgba(A){let t=0;const s=this.data;if(s==null)throw new Error("No parsed data");if(A.length!==this.numSplats*4)throw new Error("Invalid RGBA array length");for(const i in this.elements){const n=this.elements[i],{count:g,properties:r}=n,I=[];let o=0;const a=i==="vertex";if(a){for(const C of["opacity","f_dc_0","f_dc_1","f_dc_2"])if(!r[C]||r[C].type!=="float")throw new Error(`Can\'t injectRgba due to property: ${C}`)}for(const[C,Q]of Object.entries(r))if(Q.isList)I.push(()=>{const B=xt[Q.countType](s,t,this.littleEndian);t+=PA[Q.countType],t+=B*PA[Q.type]});else{if(a)if(C==="f_dc_0"||C==="f_dc_1"||C==="f_dc_2"){const B=Number.parseInt(C.slice(5));I.push(()=>{const h=(A[o+B]/255-.5)/mt;Hs[Q.type](s,t,this.littleEndian,h)})}else C==="opacity"&&I.push(()=>{const B=Math.max(-100,Math.min(100,-Math.log(1/(A[o+3]/255)-1)));Hs[Q.type](s,t,this.littleEndian,B)});I.push(()=>{t+=PA[Q.type]})}for(let C=0;C<g;C++){for(const Q of I)Q();a&&(o+=4)}}}};VA.defaultPointScale=.001;let wt=VA;const mt=.28209479177387814,xt={char:(e,A,t)=>e.getInt8(A),uchar:(e,A,t)=>e.getUint8(A),short:(e,A,t)=>e.getInt16(A,t),ushort:(e,A,t)=>e.getUint16(A,t),int:(e,A,t)=>e.getInt32(A,t),uint:(e,A,t)=>e.getUint32(A,t),float:(e,A,t)=>e.getFloat32(A,t),double:(e,A,t)=>e.getFloat64(A,t)},Hs={char:(e,A,t,s)=>{e.setInt8(A,s)},uchar:(e,A,t,s)=>{e.setUint8(A,s)},short:(e,A,t,s)=>{e.setInt16(A,s,t)},ushort:(e,A,t,s)=>{e.setUint16(A,s,t)},int:(e,A,t,s)=>{e.setInt32(A,s,t)},uint:(e,A,t,s)=>{e.setUint32(A,s,t)},float:(e,A,t,s)=>{e.setFloat32(A,s,t)},double:(e,A,t,s)=>{e.setFloat64(A,s,t)}},PA={char:1,uchar:1,short:2,ushort:2,int:4,uint:4,float:4,double:8},Dt={char:127,uchar:255,short:32767,ushort:65535,int:2147483647,uint:4294967295,float:1,double:1},be={0:0,9:1,24:2,45:3},Je={0:0,1:9,2:24,3:45};function qs(e){let A=0;for(;e[`f_rest_${A}`];)A+=1;const t=be[A];if(t==null)throw new Error(`Unsupported number of SH coefficients: ${A}`);return t}var tt=(e=>(e.PLY="ply",e.SPZ="spz",e.SPLAT="splat",e.KSPLAT="ksplat",e.PCSOGS="pcsogs",e.PCSOGSZIP="pcsogszip",e))(tt||{});function _e(e){const A=new DataView(e.buffer);if((A.getUint32(0,!0)&16777215)===7957616)return"ply";if((A.getUint32(0,!0)&16777215)===559903){const t=ke(e,4);return new DataView(t.buffer).getUint32(0,!0)===1347635022?"spz":void 0}if(A.getUint32(0,!0)===67324752)return vs(e)?"pcsogszip":void 0}function ze(e){const A=e.split(/[?#]/,1)[0],t=Math.max(A.lastIndexOf("/"),A.lastIndexOf("\\\\")),s=A.slice(t+1),i=s.lastIndexOf(".");return i<=0||i===s.length-1?"":s.slice(i+1).toLowerCase()}function Le(e){const A=ze(e);if(A==="ply")return"ply";if(A==="spz")return"spz";if(A==="splat")return"splat";if(A==="ksplat")return"ksplat"}function He(e){try{let A;if(typeof e=="string")A=e;else{const s=e instanceof ArrayBuffer?new Uint8Array(e):e;if(s.length>65536)return;A=new TextDecoder().decode(s)}const t=JSON.parse(A);if(!t||typeof t!="object"||Array.isArray(t))return;for(const s of["means","scales","quats","sh0"])if(!t[s]||typeof t[s]!="object"||Array.isArray(t[s])||!t[s].shape||!t[s].files||s!=="quats"&&(!t[s].mins||!t[s].maxs))return;return t}catch{return}}function vs(e){try{const A=e instanceof ArrayBuffer?new Uint8Array(e):e;let t=null;const s=ue(A,{filter:({name:n})=>n.split(/[\\\\/]/).pop()==="meta.json"?(t=n,!0):!1});if(!t)return;const i=He(s[t]);return i?{name:t,json:i}:void 0}catch{return}}class qe{constructor({maxSplats:A=1}={}){this.numSplats=0,this.maxSplats=Ne(A).maxSplats,this.centers=new Float32Array(this.maxSplats*3),this.scales=new Float32Array(this.maxSplats*3),this.quaternions=new Float32Array(this.maxSplats*4),this.opacities=new Float32Array(this.maxSplats),this.colors=new Float32Array(this.maxSplats*3)}pushSplat(){const A=this.numSplats;return this.ensureIndex(A),this.numSplats+=1,A}unpushSplat(A){if(A===this.numSplats-1)this.numSplats-=1;else throw new Error("Cannot unpush splat from non-last position")}ensureCapacity(A){if(A>this.maxSplats){const t=Math.max(A,this.maxSplats*2),s=new Float32Array(t*3),i=new Float32Array(t*3),n=new Float32Array(t*4),g=new Float32Array(t),r=new Float32Array(t*3);if(s.set(this.centers),i.set(this.scales),n.set(this.quaternions),g.set(this.opacities),r.set(this.colors),this.centers=s,this.scales=i,this.quaternions=n,this.opacities=g,this.colors=r,this.sh1){const I=new Float32Array(t*9);I.set(this.sh1),this.sh1=I}if(this.sh2){const I=new Float32Array(t*15);I.set(this.sh2),this.sh2=I}if(this.sh3){const I=new Float32Array(t*21);I.set(this.sh3),this.sh3=I}this.maxSplats=t}}ensureIndex(A){this.ensureCapacity(A+1)}setCenter(A,t,s,i){this.centers[A*3]=t,this.centers[A*3+1]=s,this.centers[A*3+2]=i}setScale(A,t,s,i){this.scales[A*3]=t,this.scales[A*3+1]=s,this.scales[A*3+2]=i}setQuaternion(A,t,s,i,n){this.quaternions[A*4]=t,this.quaternions[A*4+1]=s,this.quaternions[A*4+2]=i,this.quaternions[A*4+3]=n}setOpacity(A,t){this.opacities[A]=t}setColor(A,t,s,i){this.colors[A*3]=t,this.colors[A*3+1]=s,this.colors[A*3+2]=i}setSh1(A,t){this.sh1||(this.sh1=new Float32Array(this.maxSplats*9));for(let s=0;s<9;++s)this.sh1[A*9+s]=t[s]}setSh2(A,t){this.sh2||(this.sh2=new Float32Array(this.maxSplats*15));for(let s=0;s<15;++s)this.sh2[A*15+s]=t[s]}setSh3(A,t){this.sh3||(this.sh3=new Float32Array(this.maxSplats*21));for(let s=0;s<21;++s)this.sh3[A*21+s]=t[s]}}async function Ks(e,A,t){if(e.quats.encoding!=="quaternion_packed")throw new Error("Unsupported quaternion encoding");const s=e.means.shape[0],i=Et(s),n=new Uint32Array(i*4),g={},r=Promise.all([st(A[e.means.files[0]]),st(A[e.means.files[1]])]).then(Q=>{for(let B=0;B<s;++B){const h=B*4,l=(Q[0][h+0]+(Q[1][h+0]<<8))/65535,c=(Q[0][h+1]+(Q[1][h+1]<<8))/65535,E=(Q[0][h+2]+(Q[1][h+2]<<8))/65535;let u=e.means.mins[0]+(e.means.maxs[0]-e.means.mins[0])*l,y=e.means.mins[1]+(e.means.maxs[1]-e.means.mins[1])*c,f=e.means.mins[2]+(e.means.maxs[2]-e.means.mins[2])*E;u=Math.sign(u)*(Math.exp(Math.abs(u))-1),y=Math.sign(y)*(Math.exp(Math.abs(y))-1),f=Math.sign(f)*(Math.exp(Math.abs(f))-1),Rs(n,B,u,y,f)}}),I=st(A[e.scales.files[0]]).then(Q=>{for(let B=0;B<s;++B){const h=B*4,l=Q[h+0]/255,c=Q[h+1]/255,E=Q[h+2]/255,u=e.scales.mins[0]+(e.scales.maxs[0]-e.scales.mins[0])*l,y=e.scales.mins[1]+(e.scales.maxs[1]-e.scales.mins[1])*c,f=e.scales.mins[2]+(e.scales.maxs[2]-e.scales.mins[2])*E;bs(n,B,Math.exp(u),Math.exp(y),Math.exp(f),t)}}),o=st(A[e.quats.files[0]]).then(Q=>{const B=Math.sqrt(2);for(let h=0;h<s;++h){const l=h*4,c=(Q[l+0]/255-.5)*B,E=(Q[l+1]/255-.5)*B,u=(Q[l+2]/255-.5)*B,y=Math.sqrt(Math.max(0,1-c*c-E*E-u*u)),f=Q[l+3]-252,D=f===0?c:f===1?y:E,S=f<=1?E:f===2?y:u,b=f<=2?u:y;Js(n,h,D,S,b,f===0?y:c)}}),a=st(A[e.sh0.files[0]]).then(Q=>{const B=.28209479177387814;for(let h=0;h<s;++h){const l=h*4,c=Q[l+0]/255,E=Q[l+1]/255,u=Q[l+2]/255,y=Q[l+3]/255,f=e.sh0.mins[0]+(e.sh0.maxs[0]-e.sh0.mins[0])*c,D=e.sh0.mins[1]+(e.sh0.maxs[1]-e.sh0.mins[1])*E,S=e.sh0.mins[2]+(e.sh0.maxs[2]-e.sh0.mins[2])*u,b=e.sh0.mins[3]+(e.sh0.maxs[3]-e.sh0.mins[3])*y,x=B*f+.5,m=B*D+.5,G=B*S+.5,p=1/(1+Math.exp(-b));Fe(n,h,x,m,G,p,t)}}),C=[r,I,o,a];if(e.shN){const Q=e.shN.shape[1]>=45,B=e.shN.shape[1]>=24,h=e.shN.shape[1]>=9;h&&(g.sh1=new Uint32Array(s*2)),B&&(g.sh2=new Uint32Array(s*4)),Q&&(g.sh3=new Uint32Array(s*4));const l=new Float32Array(9),c=new Float32Array(15),E=new Float32Array(21),u=e.shN,y=Promise.all([Kt(A[e.shN.files[0]]),Kt(A[e.shN.files[1]])]).then(([f,D])=>{for(let S=0;S<s;++S){const b=S*4,x=D.rgba[b+0]+(D.rgba[b+1]<<8),m=(x&63)*15,p=(x>>>6)*f.width+m;for(let w=0;w<3;++w){if(h)for(let M=0;M<3;++M)l[M*3+w]=u.mins+(u.maxs-u.mins)*f.rgba[(p+M)*4+w]/255;if(B)for(let M=0;M<5;++M)c[M*3+w]=u.mins+(u.maxs-u.mins)*f.rgba[(p+3+M)*4+w]/255;if(Q)for(let M=0;M<7;++M)E[M*3+w]=u.mins+(u.maxs-u.mins)*f.rgba[(p+8+M)*4+w]/255}h&&lt(g.sh1,S,l,t),B&&ut(g.sh2,S,c,t),Q&&yt(g.sh3,S,E,t)}});C.push(y)}return await Promise.all(C),{packedArray:n,numSplats:s,extra:g}}let pt=null;async function Kt(e){if(!pt&&(pt=new OffscreenCanvas(1,1).getContext("webgl2"),!pt))throw new Error("Failed to create WebGL2 context");const A=new Blob([e]),t=await createImageBitmap(A,{premultiplyAlpha:"none"}),s=pt,i=s.createTexture();s.bindTexture(s.TEXTURE_2D,i),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,!0),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,t),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.NEAREST),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.NEAREST);const n=s.createFramebuffer();s.bindFramebuffer(s.FRAMEBUFFER,n),s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,i,0);const g=new Uint8Array(t.width*t.height*4);return s.readPixels(0,0,t.width,t.height,s.RGBA,s.UNSIGNED_BYTE,g),s.deleteTexture(i),s.deleteFramebuffer(n),{rgba:g,width:t.width,height:t.height}}async function st(e){const{rgba:A}=await Kt(e);return A}async function ve(e,A){var Q;const t=vs(e);if(!t)throw new Error("Invalid PC SOGS zip file");const{name:s,json:i}=t,n=s.lastIndexOf("/"),g=s.lastIndexOf("\\\\"),r=s.slice(0,Math.max(n,g)+1),I=new Map,o=[...i.means.files,...i.scales.files,...i.quats.files,...i.sh0.files,...((Q=i.shN)==null?void 0:Q.files)??[]];for(const B of o)I.set(r+B,B);const a=await new Promise((B,h)=>{le(e,{filter:({name:l})=>I.has(l)},(l,c)=>{l?h(l):B(c)})}),C={};for(const[B,h]of I.entries())C[h]=a[B];return await Ks(i,C,A)}class Ts{constructor({fileBytes:A}){this.fileBytes=A instanceof ArrayBuffer?new Uint8Array(A):A,this.reader=new Ge({fileBytes:this.fileBytes});const t=new DataView(this.reader.read(16).buffer);if(t.getUint32(0,!0)!==1347635022)throw new Error("Invalid SPZ file");if(this.version=t.getUint32(4,!0),this.version<1||this.version>2)throw new Error(`Unsupported SPZ version: ${this.version}`);this.numSplats=t.getUint32(8,!0),this.shDegree=t.getUint8(12),this.fractionalBits=t.getUint8(13),this.flags=t.getUint8(14),this.flagAntiAlias=(this.flags&1)!==0,this.reserved=t.getUint8(15),this.parsed=!1}parseSplats(A,t,s,i,n,g){if(this.parsed)throw new Error("SPZ file already parsed");if(this.parsed=!0,this.version===1){const r=this.reader.read(this.numSplats*3*2),I=new Uint16Array(r.buffer);for(let o=0;o<this.numSplats;o++){const a=o*3,C=O(I[a]),Q=O(I[a+1]),B=O(I[a+2]);A==null||A(o,C,Q,B)}}else if(this.version===2){const r=1<<this.fractionalBits,I=this.reader.read(this.numSplats*3*3);for(let o=0;o<this.numSplats;o++){const a=o*9,C=((I[a+2]<<24|I[a+1]<<16|I[a]<<8)>>8)/r,Q=((I[a+5]<<24|I[a+4]<<16|I[a+3]<<8)>>8)/r,B=((I[a+8]<<24|I[a+7]<<16|I[a+6]<<8)>>8)/r;A==null||A(o,C,Q,B)}}else throw new Error("Unreachable");{const r=this.reader.read(this.numSplats);for(let I=0;I<this.numSplats;I++)t==null||t(I,r[I]/255)}{const r=this.reader.read(this.numSplats*3),I=Xs/.15;for(let o=0;o<this.numSplats;o++){const a=o*3,C=(r[a]/255-.5)*I+.5,Q=(r[a+1]/255-.5)*I+.5,B=(r[a+2]/255-.5)*I+.5;s==null||s(o,C,Q,B)}}{const r=this.reader.read(this.numSplats*3);for(let I=0;I<this.numSplats;I++){const o=I*3,a=Math.exp(r[o]/16-10),C=Math.exp(r[o+1]/16-10),Q=Math.exp(r[o+2]/16-10);i==null||i(I,a,C,Q)}}{const r=this.reader.read(this.numSplats*3);for(let I=0;I<this.numSplats;I++){const o=I*3,a=r[o]/127.5-1,C=r[o+1]/127.5-1,Q=r[o+2]/127.5-1,B=Math.sqrt(Math.max(0,1-a*a-C*C-Q*Q));n==null||n(I,a,C,Q,B)}}if(g&&this.shDegree>=1){const r=new Float32Array(9),I=this.shDegree>=2?new Float32Array(5*3):void 0,o=this.shDegree>=3?new Float32Array(7*3):void 0,a=this.reader.read(this.numSplats*Zs[this.shDegree]*3);let C=0;for(let Q=0;Q<this.numSplats;Q++){for(let B=0;B<9;++B)r[B]=(a[C+B]-128)/128;if(C+=9,I){for(let B=0;B<15;++B)I[B]=(a[C+B]-128)/128;C+=15}if(o){for(let B=0;B<21;++B)o[B]=(a[C+B]-128)/128;C+=21}g==null||g(Q,r,I,o)}}}}const Zs={1:3,2:8,3:15},Xs=.28209479177387814,Ke=1347635022,Te=2,Ze=1;class YA{constructor({numSplats:A,shDegree:t,fractionalBits:s=12,flagAntiAlias:i=!0}){this.clippedCount=0;const n=19+(t>=1?9:0)+(t>=2?15:0)+(t>=3?21:0),g=16+A*n;this.buffer=new ArrayBuffer(g),this.view=new DataView(this.buffer),this.view.setUint32(0,Ke,!0),this.view.setUint32(4,Te,!0),this.view.setUint32(8,A,!0),this.view.setUint8(12,t),this.view.setUint8(13,s),this.view.setUint8(14,i?Ze:0),this.view.setUint8(15,0),this.numSplats=A,this.shDegree=t,this.fractionalBits=s,this.fraction=1<<s,this.flagAntiAlias=i}setCenter(A,t,s,i){const n=Math.round(t*this.fraction),g=Math.max(-8388607,Math.min(8388607,n)),r=Math.round(s*this.fraction),I=Math.max(-8388607,Math.min(8388607,r)),o=Math.round(i*this.fraction),a=Math.max(-8388607,Math.min(8388607,o));(n!==g||r!==I||o!==a)&&(this.clippedCount+=1);const B=16+A*9;this.view.setUint8(B,g&255),this.view.setUint8(B+1,g>>8&255),this.view.setUint8(B+2,g>>16&255),this.view.setUint8(B+3,I&255),this.view.setUint8(B+4,I>>8&255),this.view.setUint8(B+5,I>>16&255),this.view.setUint8(B+6,a&255),this.view.setUint8(B+7,a>>8&255),this.view.setUint8(B+8,a>>16&255)}setAlpha(A,t){const s=16+this.numSplats*9+A;this.view.setUint8(s,Math.max(0,Math.min(255,Math.round(t*255))))}static scaleRgb(A){const t=((A-.5)/(Xs/.15)+.5)*255;return Math.max(0,Math.min(255,Math.round(t)))}setRgb(A,t,s,i){const n=16+this.numSplats*10+A*3;this.view.setUint8(n,YA.scaleRgb(t)),this.view.setUint8(n+1,YA.scaleRgb(s)),this.view.setUint8(n+2,YA.scaleRgb(i))}setScale(A,t,s,i){const n=16+this.numSplats*13+A*3;this.view.setUint8(n,Math.max(0,Math.min(255,Math.round((Math.log(t)+10)*16)))),this.view.setUint8(n+1,Math.max(0,Math.min(255,Math.round((Math.log(s)+10)*16)))),this.view.setUint8(n+2,Math.max(0,Math.min(255,Math.round((Math.log(i)+10)*16))))}setQuat(A,t,s,i,n){const g=16+this.numSplats*16+A*3,r=n<0;this.view.setUint8(g,Math.max(0,Math.min(255,Math.round(((r?-t:t)+1)*127.5)))),this.view.setUint8(g+1,Math.max(0,Math.min(255,Math.round(((r?-s:s)+1)*127.5)))),this.view.setUint8(g+2,Math.max(0,Math.min(255,Math.round(((r?-i:i)+1)*127.5))))}static quantizeSh(A,t){const s=Math.round(A*128)+128,i=1<<8-t,n=Math.floor((s+i/2)/i)*i;return Math.max(0,Math.min(255,n))}setSh(A,t,s,i){const n=Zs[this.shDegree]||0,g=16+this.numSplats*19+A*n*3;for(let r=0;r<9;++r)this.view.setUint8(g+r,YA.quantizeSh(t[r],5));if(s){const r=g+9;for(let I=0;I<15;++I)this.view.setUint8(r+I,YA.quantizeSh(s[I],4));if(i){const I=r+15;for(let o=0;o<21;++o)this.view.setUint8(I+o,YA.quantizeSh(i[o],4))}}}async finalize(){const A=new Uint8Array(this.buffer),s=new ReadableStream({async start(g){g.enqueue(A),g.close()}}).pipeThrough(new CompressionStream("gzip")),n=await new Response(s).arrayBuffer();return console.log("Compressed",A.length,"bytes to",n.byteLength,"bytes"),new Uint8Array(n)}}async function Xe(e){var a,C,Q;const A=new qe,{inputs:t,clipXyz:s,maxSh:i,fractionalBits:n=12,opacityThreshold:g}=e;for(const B of t){let h=function(x){return x.multiplyScalar(y),x.applyQuaternion(f),x.add(D),x},l=function(x){return x.multiplyScalar(y),x},c=function(x){return x.premultiply(f),x},E=function(x){return!S||S.containsPoint(x)},u=function(x){return g!==void 0?x>=g:!0};const y=((a=B.transform)==null?void 0:a.scale)??1,f=new NA().fromArray(((C=B.transform)==null?void 0:C.quaternion)??[0,0,0,1]),D=new d().fromArray(((Q=B.transform)==null?void 0:Q.translate)??[0,0,0]),S=s?new Fs(new d().fromArray(s.min),new d().fromArray(s.max)):void 0;let b=B.fileType;switch(b||(b=_e(B.fileBytes),!b&&B.pathOrUrl&&(b=Le(B.pathOrUrl))),b){case tt.PLY:{const x=new wt({fileBytes:B.fileBytes});await x.parseHeader();let m=null;x.parseSplats((G,p,w,M,z,Y,N,q,T,v,P,Z,W,L,K)=>{const J=h(new d(p,w,M));if(E(J)&&u(Z)){m=A.pushSplat(),A.setCenter(m,J.x,J.y,J.z);const R=l(new d(z,Y,N));A.setScale(m,R.x,R.y,R.z);const F=c(new NA(q,T,v,P));A.setQuaternion(m,F.x,F.y,F.z,F.w),A.setOpacity(m,Z),A.setColor(m,W,L,K)}else m=null},(G,p,w,M)=>{p&&m!==null&&A.setSh1(m,p),w&&m!==null&&A.setSh2(m,w),M&&m!==null&&A.setSh3(m,M)});break}case tt.SPZ:{const x=new Ts({fileBytes:B.fileBytes}),m=new Int32Array(x.numSplats);m.fill(-1);const G=new Float32Array(x.numSplats*3),p=new d;x.parseSplats((w,M,z,Y)=>{const N=h(new d(M,z,Y));G[w*3]=N.x,G[w*3+1]=N.y,G[w*3+2]=N.z},(w,M)=>{p.fromArray(G,w*3),E(p)&&u(M)&&(m[w]=A.pushSplat(),A.setCenter(m[w],p.x,p.y,p.z),A.setOpacity(m[w],M))},(w,M,z,Y)=>{m[w]>=0&&A.setColor(m[w],M,z,Y)},(w,M,z,Y)=>{if(m[w]>=0){const N=l(new d(M,z,Y));A.setScale(m[w],N.x,N.y,N.z)}},(w,M,z,Y,N)=>{if(m[w]>=0){const q=c(new NA(M,z,Y,N));A.setQuaternion(m[w],q.x,q.y,q.z,q.w)}},(w,M,z,Y)=>{m[w]>=0&&(A.setSh1(m[w],M),z&&A.setSh2(m[w],z),Y&&A.setSh3(m[w],Y))});break}case tt.SPLAT:zs(B.fileBytes,x=>{},(x,m,G,p,w,M,z,Y,N,q,T,v,P,Z,W)=>{const L=h(new d(m,G,p));if(E(L)&&u(v)){const K=A.pushSplat();A.setCenter(K,L.x,L.y,L.z);const J=l(new d(w,M,z));A.setScale(K,J.x,J.y,J.z);const R=c(new NA(Y,N,q,T));A.setQuaternion(K,R.x,R.y,R.z,R.w),A.setOpacity(K,v),A.setColor(K,P,Z,W)}});break;case tt.KSPLAT:{let x=null;Ye(B.fileBytes,m=>{},(m,G,p,w,M,z,Y,N,q,T,v,P,Z,W,L)=>{const K=h(new d(G,p,w));if(E(K)&&u(P)){x=A.pushSplat(),A.setCenter(x,K.x,K.y,K.z);const J=l(new d(M,z,Y));A.setScale(x,J.x,J.y,J.z);const R=c(new NA(N,q,T,v));A.setQuaternion(x,R.x,R.y,R.z,R.w),A.setOpacity(x,P),A.setColor(x,Z,W,L)}else x=null},(m,G,p,w)=>{x!==null&&(A.setSh1(x,G),p&&A.setSh2(x,p),w&&A.setSh3(x,w))});break}default:throw new Error(`transcodeSpz not implemented for ${b}`)}}const r=Math.min(i??3,A.sh3?3:A.sh2?2:A.sh1?1:0),I=new YA({numSplats:A.numSplats,shDegree:r,fractionalBits:n,flagAntiAlias:!0});for(let B=0;B<A.numSplats;++B){const h=B*3,l=B*4;I.setCenter(B,A.centers[h],A.centers[h+1],A.centers[h+2]),I.setScale(B,A.scales[h],A.scales[h+1],A.scales[h+2]),I.setQuat(B,A.quaternions[l],A.quaternions[l+1],A.quaternions[l+2],A.quaternions[l+3]),I.setAlpha(B,A.opacities[B]),I.setRgb(B,A.colors[h],A.colors[h+1],A.colors[h+2]),A.sh1&&r>=1&&I.setSh(B,A.sh1.slice(B*9,(B+1)*9),r>=2&&A.sh2?A.sh2.slice(B*15,(B+1)*15):void 0,r>=3&&A.sh3?A.sh3.slice(B*21,(B+1)*21):void 0)}return{fileBytes:await I.finalize(),clippedCount:I.clippedCount}}async function Ws(e){const{name:A,args:t,id:s}=e.data;let i,n;try{switch(A){case"unpackPly":{const{packedArray:g,fileBytes:r,splatEncoding:I}=t,o=await We({packedArray:g,fileBytes:r,splatEncoding:I});i={id:s,numSplats:o.numSplats,packedArray:o.packedArray,extra:o.extra};break}case"decodeSpz":{const{fileBytes:g,splatEncoding:r}=t,I=Pe(g,r);i={id:s,numSplats:I.numSplats,packedArray:I.packedArray,extra:I.extra};break}case"decodeAntiSplat":{const{fileBytes:g,splatEncoding:r}=t,I=Ue(g,r);i={id:s,numSplats:I.numSplats,packedArray:I.packedArray};break}case"decodeKsplat":{const{fileBytes:g,splatEncoding:r}=t,I=Re(g,r);i={id:s,numSplats:I.numSplats,packedArray:I.packedArray,extra:I.extra};break}case"decodePcSogs":{const{fileBytes:g,extraFiles:r,splatEncoding:I}=t,o=JSON.parse(new TextDecoder().decode(g)),a=await Ks(o,r,I);i={id:s,numSplats:a.numSplats,packedArray:a.packedArray,extra:a.extra};break}case"decodePcSogsZip":{const{fileBytes:g,splatEncoding:r}=t,I=await ve(g,r);i={id:s,numSplats:I.numSplats,packedArray:I.packedArray,extra:I.extra};break}case"sortSplats":{const{totalSplats:g,readback:r,ordering:I}=t;i={id:s,readback:r,...Ve({totalSplats:g,readback:r,ordering:I})};break}case"sortDoubleSplats":{const{numSplats:g,readback:r,ordering:I}=t;i={id:s,readback:r,ordering:I,activeSplats:Os(g,r,I)};break}case"sort32Splats":{const{numSplats:g,readback:r,ordering:I}=t;i={id:s,readback:r,ordering:I,activeSplats:$s(g,r,I)};break}case"transcodeSpz":{const g=t,r=await Xe(g);i={id:s,fileBytes:r,input:g};break}default:throw new Error(`Unknown name: ${A}`)}}catch(g){n=g,console.error(n)}self.postMessage({id:s,result:i,error:n},{transfer:Me(i)})}async function We({packedArray:e,fileBytes:A,splatEncoding:t}){const s=new wt({fileBytes:A});await s.parseHeader();const i=s.numSplats,n={};return s.parseSplats((g,r,I,o,a,C,Q,B,h,l,c,E,u,y,f)=>{vt(e,g,r,I,o,a,C,Q,B,h,l,c,E,u,y,f,t)},(g,r,I,o)=>{r&&(n.sh1||(n.sh1=new Uint32Array(i*2)),lt(n.sh1,g,r,t)),I&&(n.sh2||(n.sh2=new Uint32Array(i*4)),ut(n.sh2,g,I,t)),o&&(n.sh3||(n.sh3=new Uint32Array(i*4)),yt(n.sh3,g,o,t))}),{packedArray:e,numSplats:i,extra:n}}function Pe(e,A){const t=new Ts({fileBytes:e}),s=t.numSplats,i=Et(s),n=new Uint32Array(i*4),g={};return t.parseSplats((r,I,o,a)=>{Rs(n,r,I,o,a)},(r,I)=>{de(n,r,I)},(r,I,o,a)=>{Se(n,r,I,o,a,A)},(r,I,o,a)=>{bs(n,r,I,o,a,A)},(r,I,o,a,C)=>{Js(n,r,I,o,a,C)},(r,I,o,a)=>{I&&(g.sh1||(g.sh1=new Uint32Array(s*2)),lt(g.sh1,r,I,A)),o&&(g.sh2||(g.sh2=new Uint32Array(s*4)),ut(g.sh2,r,o,A)),a&&(g.sh3||(g.sh3=new Uint32Array(s*4)),yt(g.sh3,r,a,A))}),{packedArray:n,numSplats:s,extra:g}}const Tt=31744,Mt=Tt+1;let DA=null;function Ve({totalSplats:e,readback:A,ordering:t}){DA||(DA=new Uint32Array(Mt)),DA.fill(0);const s=A.map(I=>new Uint32Array(I.buffer)),i=s[0].length,n=Math.ceil(e/i);let g=0;for(let I=0;I<n;++I){const o=s[I],a=Math.min(o.length,e-g);for(let C=0;C<a;++C){const Q=o[C]&32767;Q<Tt&&(DA[Q]+=1)}g+=a}let r=0;for(let I=0;I<Mt;++I){const o=r+DA[I];DA[I]=r,r=o}g=0;for(let I=0;I<n;++I){const o=s[I],a=Math.min(o.length,e-g);for(let C=0;C<a;++C){const Q=o[C]&32767;Q<Tt&&(t[DA[Q]]=g+C,DA[Q]+=1)}g+=a}if(DA[Mt-1]!==r)throw new Error(`Expected ${r} active splats but got ${DA[Mt-1]}`);return{activeSplats:r,ordering:t}}const Zt=[];function Ps(e){Zt.push(e)}async function je(){self.addEventListener("message",Ps),await es(),self.removeEventListener("message",Ps),self.addEventListener("message",Ws);for(const e of Zt)Ws(e);Zt.length=0}je().catch(console.error)})();\n//# sourceMappingURL=worker-DXCsnY0K.js.map\n', Qs = typeof self < "u" && self.Blob && new Blob([qa], { type: "text/javascript;charset=utf-8" });
6554
6583
  function wu(t) {
6555
6584
  let A;
6556
6585
  try {
@@ -7427,7 +7456,7 @@ const ku = new Float32Array([
7427
7456
  }
7428
7457
  )), this.encodeLinear = !0;
7429
7458
  }
7430
- this.onTextureUpdated = A.onTextureUpdated, this.sortRadial = A.sortRadial ?? !0, this.sortDistance = A.sortDistance, this.sortCoorient = A.sortCoorient, this.depthBias = A.depthBias, this.sort360 = A.sort360, this.sort32 = A.sort32, this.orderingFreelist = new Ln({
7459
+ this.onTextureUpdated = A.onTextureUpdated, this.sortRadial = A.sortRadial ?? !0, this.sortDistance = A.sortDistance, this.sortCoorient = A.sortCoorient, this.depthBias = A.depthBias, this.sort360 = A.sort360, this.sort32 = A.sort32, this.stochastic = A.stochastic ?? !1, this.orderingFreelist = new Ln({
7431
7460
  allocate: (e) => new Uint32Array(e),
7432
7461
  valid: (e, s) => e.length === s
7433
7462
  }), this.autoUpdate = !1, this.setAutoUpdate(A.autoUpdate ?? !1);
@@ -7607,7 +7636,11 @@ const ku = new Float32Array([
7607
7636
  this.sortingCheck = !0, A = A ?? this.spark.active;
7608
7637
  const { numSplats: n, maxSplats: i } = A.splats;
7609
7638
  let r = 0, a = this.orderingFreelist.alloc(i);
7610
- if (n > 0) {
7639
+ if (this.stochastic) {
7640
+ r = n;
7641
+ for (let o = 0; o < n; ++o)
7642
+ a[o] = o;
7643
+ } else if (n > 0) {
7611
7644
  const {
7612
7645
  reader: o,
7613
7646
  doubleSortReader: c,
@@ -7696,7 +7729,7 @@ const ku = new Float32Array([
7696
7729
  x: B,
7697
7730
  y: Q
7698
7731
  });
7699
- return { rgba8: Le(ji(E)) };
7732
+ return { rgba8: Le(Zi(E)) };
7700
7733
  }
7701
7734
  ), c = MA(
7702
7735
  { index: "int" },
@@ -7711,7 +7744,7 @@ const ku = new Float32Array([
7711
7744
  sortDepthBias: n,
7712
7745
  sort360: i
7713
7746
  }, I = vt(r, l), h = Fe({ gsplat: I, ...g });
7714
- return { rgba8: Le(Zi(h)) };
7747
+ return { rgba8: Le(ji(h)) };
7715
7748
  }
7716
7749
  );
7717
7750
  nt.dynos = {
@@ -8105,8 +8138,11 @@ precision highp int;
8105
8138
  uniform float near;
8106
8139
  uniform float far;
8107
8140
  uniform bool encodeLinear;
8141
+ uniform float time;
8142
+ uniform bool debugFlag;
8108
8143
  uniform float maxStdDev;
8109
8144
  uniform float minAlpha;
8145
+ uniform bool stochastic;
8110
8146
  uniform bool disableFalloff;
8111
8147
  uniform float falloff;
8112
8148
 
@@ -8123,6 +8159,7 @@ out vec4 fragColor;
8123
8159
  in vec4 vRgba;
8124
8160
  in vec2 vSplatUv;
8125
8161
  in vec3 vNdc;
8162
+ flat in uint vSplatIndex;
8126
8163
 
8127
8164
  void main() {
8128
8165
  vec4 rgba = vRgba;
@@ -8165,12 +8202,28 @@ void main() {
8165
8202
  if (encodeLinear) {
8166
8203
  rgba.rgb = srgbToLinear(rgba.rgb);
8167
8204
  }
8168
-
8169
- #ifdef PREMULTIPLIED_ALPHA
8170
- fragColor = vec4(rgba.rgb * rgba.a, rgba.a);
8171
- #else
8172
- fragColor = rgba;
8173
- #endif
8205
+
8206
+ if (stochastic) {
8207
+ const bool STEADY = false;
8208
+ uint uTime = STEADY ? 0u : floatBitsToUint(time);
8209
+ uvec2 coord = uvec2(gl_FragCoord.xy);
8210
+ uint state = uTime + 0x9e3779b9u * coord.x + 0x85ebca6bu * coord.y + 0xc2b2ae35u * uint(vSplatIndex);
8211
+ state = state * 747796405u + 2891336453u;
8212
+ uint hash = ((state >> ((state >> 28u) + 4u)) ^ state) * 277803737u;
8213
+ hash = (hash >> 22u) ^ hash;
8214
+ float rand = float(hash) / 4294967296.0;
8215
+ if (rand < rgba.a) {
8216
+ fragColor = vec4(rgba.rgb, 1.0);
8217
+ } else {
8218
+ discard;
8219
+ }
8220
+ } else {
8221
+ #ifdef PREMULTIPLIED_ALPHA
8222
+ fragColor = vec4(rgba.rgb * rgba.a, rgba.a);
8223
+ #else
8224
+ fragColor = rgba;
8225
+ #endif
8226
+ }
8174
8227
  }`, Ru = `precision highp float;
8175
8228
  precision highp int;
8176
8229
  precision highp usampler2DArray;
@@ -8182,6 +8235,7 @@ attribute uint splatIndex;
8182
8235
  out vec4 vRgba;
8183
8236
  out vec2 vSplatUv;
8184
8237
  out vec3 vNdc;
8238
+ flat out uint vSplatIndex;
8185
8239
 
8186
8240
  uniform vec2 renderSize;
8187
8241
  uniform uint numSplats;
@@ -8193,6 +8247,7 @@ uniform float time;
8193
8247
  uniform float deltaTime;
8194
8248
  uniform bool debugFlag;
8195
8249
  uniform float minAlpha;
8250
+ uniform bool stochastic;
8196
8251
  uniform bool enable2DGS;
8197
8252
  uniform float blurAmount;
8198
8253
  uniform float preBlurAmount;
@@ -8211,16 +8266,25 @@ void main() {
8211
8266
  if (uint(gl_InstanceID) >= numSplats) {
8212
8267
  return;
8213
8268
  }
8214
- if (splatIndex == 0xffffffffu) {
8215
-
8216
- return;
8217
- }
8218
8269
 
8219
- ivec3 texCoord = ivec3(
8220
- splatIndex & SPLAT_TEX_WIDTH_MASK,
8221
- (splatIndex >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,
8222
- splatIndex >> SPLAT_TEX_LAYER_BITS
8223
- );
8270
+ ivec3 texCoord;
8271
+ if (stochastic) {
8272
+ texCoord = ivec3(
8273
+ uint(gl_InstanceID) & SPLAT_TEX_WIDTH_MASK,
8274
+ (uint(gl_InstanceID) >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,
8275
+ (uint(gl_InstanceID) >> SPLAT_TEX_LAYER_BITS)
8276
+ );
8277
+ } else {
8278
+ if (splatIndex == 0xffffffffu) {
8279
+
8280
+ return;
8281
+ }
8282
+ texCoord = ivec3(
8283
+ splatIndex & SPLAT_TEX_WIDTH_MASK,
8284
+ (splatIndex >> SPLAT_TEX_WIDTH_BITS) & SPLAT_TEX_HEIGHT_MASK,
8285
+ splatIndex >> SPLAT_TEX_LAYER_BITS
8286
+ );
8287
+ }
8224
8288
  uvec4 packed = texelFetch(packedSplats, texCoord, 0);
8225
8289
 
8226
8290
  vec3 center, scales;
@@ -8258,6 +8322,9 @@ void main() {
8258
8322
  }
8259
8323
 
8260
8324
 
8325
+ vSplatIndex = splatIndex;
8326
+
8327
+
8261
8328
  vec4 viewQuaternion = quatQuat(renderToViewQuat, quaternion);
8262
8329
 
8263
8330
  if (enable2DGS && any(zeroScales)) {
@@ -8402,14 +8469,14 @@ const oA = class oA extends u.Mesh {
8402
8469
  depthWrite: !1,
8403
8470
  side: u.DoubleSide
8404
8471
  });
8405
- super(ps, i), this.splatTexture = null, this.autoViewpoints = [], this.rotateToAccumulator = new Nt({ value: new u.Quaternion() }), this.translateToAccumulator = new bt({ value: new u.Vector3() }), this.lastFrame = -1, this.lastUpdateTime = null, this.defaultCameras = [], this.pendingUpdate = null, this.envViewpoint = null, this.frustumCulled = !1, this.renderer = A.renderer, this.material = i, this.uniforms = e;
8472
+ super(ps, i), this.splatTexture = null, this.autoViewpoints = [], this.rotateToAccumulator = new Nt({ value: new u.Quaternion() }), this.translateToAccumulator = new bt({ value: new u.Vector3() }), this.lastFrame = -1, this.lastUpdateTime = null, this.defaultCameras = [], this.lastStochastic = null, this.pendingUpdate = null, this.envViewpoint = null, this.frustumCulled = !1, this.renderer = A.renderer, this.material = i, this.uniforms = e;
8406
8473
  const r = MA(
8407
8474
  { gsplat: AA },
8408
8475
  { gsplat: AA },
8409
8476
  ({ gsplat: a }) => {
8410
8477
  if (!a)
8411
8478
  throw new Error("gsplat not defined");
8412
- return a = je(a, {
8479
+ return a = Ze(a, {
8413
8480
  rotate: this.rotateToAccumulator,
8414
8481
  translate: this.translateToAccumulator
8415
8482
  }), { gsplat: a };
@@ -8443,6 +8510,8 @@ const oA = class oA extends u.Mesh {
8443
8510
  maxPixelRadius: { value: 512 },
8444
8511
  // Minimum alpha value for splat rendering
8445
8512
  minAlpha: { value: 0.00196078431372549 },
8513
+ // Enable stochastic splat rendering
8514
+ stochastic: { value: !1 },
8446
8515
  // Enable interpreting 0-thickness Gsplats as 2DGS
8447
8516
  enable2DGS: { value: !1 },
8448
8517
  // Add to projected 2D splat covariance diagonal (thickens and brightens)
@@ -8523,7 +8592,7 @@ const oA = class oA extends u.Mesh {
8523
8592
  }
8524
8593
  this.autoUpdate && this.update({ scene: e, viewToWorld: this.defaultView.viewToWorld });
8525
8594
  }
8526
- if (a && (this.material.premultipliedAlpha !== this.premultipliedAlpha && (this.material.premultipliedAlpha = this.premultipliedAlpha, this.material.needsUpdate = !0), this.uniforms.time.value = n, this.uniforms.deltaTime.value = i, this.uniforms.debugFlag.value = performance.now() / 1e3 % 2 < 1), o.target)
8595
+ if (a && (this.material.premultipliedAlpha !== this.premultipliedAlpha && (this.material.premultipliedAlpha = this.premultipliedAlpha, this.material.needsUpdate = !0), this.uniforms.time.value = n, this.uniforms.deltaTime.value = i, this.uniforms.debugFlag.value = performance.now() / 1e3 % 2 < 1, o.display && o.stochastic && (this.geometry.instanceCount = this.uniforms.numSplats.value)), o.target)
8527
8596
  this.uniforms.renderSize.value.set(
8528
8597
  o.target.width,
8529
8598
  o.target.height
@@ -8538,7 +8607,7 @@ const oA = class oA extends u.Mesh {
8538
8607
  }
8539
8608
  }
8540
8609
  const c = s;
8541
- if (this.uniforms.near.value = c.near, this.uniforms.far.value = c.far, this.uniforms.encodeLinear.value = o.encodeLinear, this.uniforms.maxStdDev.value = this.maxStdDev, this.uniforms.maxPixelRadius.value = this.maxPixelRadius, this.uniforms.minAlpha.value = this.minAlpha, this.uniforms.enable2DGS.value = this.enable2DGS, this.uniforms.preBlurAmount.value = this.preBlurAmount, this.uniforms.blurAmount.value = this.blurAmount, this.uniforms.focalDistance.value = this.focalDistance, this.uniforms.apertureAngle.value = this.apertureAngle, this.uniforms.falloff.value = this.falloff, this.uniforms.clipXY.value = this.clipXY, this.uniforms.focalAdjustment.value = this.focalAdjustment, this.splatTexture) {
8610
+ if (this.uniforms.near.value = c.near, this.uniforms.far.value = c.far, this.uniforms.encodeLinear.value = o.encodeLinear, this.uniforms.maxStdDev.value = this.maxStdDev, this.uniforms.maxPixelRadius.value = this.maxPixelRadius, this.uniforms.minAlpha.value = this.minAlpha, this.uniforms.stochastic.value = o.stochastic, this.uniforms.enable2DGS.value = this.enable2DGS, this.uniforms.preBlurAmount.value = this.preBlurAmount, this.uniforms.blurAmount.value = this.blurAmount, this.uniforms.focalDistance.value = this.focalDistance, this.uniforms.apertureAngle.value = this.apertureAngle, this.uniforms.falloff.value = this.falloff, this.uniforms.clipXY.value = this.clipXY, this.uniforms.focalAdjustment.value = this.focalAdjustment, this.lastStochastic !== !o.stochastic && (this.lastStochastic = !o.stochastic, this.material.transparent = !o.stochastic, this.material.depthWrite = o.stochastic, this.material.needsUpdate = !0), this.splatTexture) {
8542
8611
  const { enable: C, texture: Q, multiply: E, add: f, near: p, far: d, mid: w } = this.splatTexture;
8543
8612
  C && Q ? (this.uniforms.splatTexEnable.value = !0, this.uniforms.splatTexture.value = Q, E ? this.uniforms.splatTexMul.value.fromArray(E.elements) : this.uniforms.splatTexMul.value.set(
8544
8613
  0.5 / this.maxStdDev,
@@ -8568,7 +8637,7 @@ const oA = class oA extends u.Mesh {
8568
8637
  ((s = r.splats.splatEncoding) == null ? void 0 : s.rgbMax) ?? 1,
8569
8638
  ((n = r.splats.splatEncoding) == null ? void 0 : n.lnScaleMin) ?? TA,
8570
8639
  ((i = r.splats.splatEncoding) == null ? void 0 : i.lnScaleMax) ?? UA
8571
- ), this.geometry = a;
8640
+ ), this.geometry = a, this.material.transparent = !this.viewpoint.stochastic, this.material.depthWrite = this.viewpoint.stochastic, this.material.needsUpdate = !0;
8572
8641
  } else
8573
8642
  this.uniforms.numSplats.value = 0, this.uniforms.packedSplats.value = KA.getEmpty(), this.geometry = ps;
8574
8643
  }
@@ -8908,9 +8977,9 @@ function Hu(t, A, e, s) {
8908
8977
  bytesPerSphericalHarmonicsComponent: H,
8909
8978
  scaleOffsetBytes: O,
8910
8979
  rotationOffsetBytes: _,
8911
- colorOffsetBytes: Z,
8980
+ colorOffsetBytes: j,
8912
8981
  sphericalHarmonicsOffsetBytes: P
8913
- } = ds[g], j = R + W + L + eA + T * H, G = j * d, fA = G + F, cA = [0, 3, 6, 1, 4, 7, 2, 5, 8], pA = [
8982
+ } = ds[g], Z = R + W + L + eA + T * H, G = Z * d, fA = G + F, cA = [0, 3, 6, 1, 4, 7, 2, 5, 8], pA = [
8914
8983
  9,
8915
8984
  14,
8916
8985
  19,
@@ -8948,9 +9017,9 @@ function Hu(t, A, e, s) {
8948
9017
  30,
8949
9018
  37,
8950
9019
  44
8951
- ], xA = b >= 1 ? new Float32Array(3 * 3) : void 0, hA = b >= 2 ? new Float32Array(5 * 3) : void 0, RA = b >= 3 ? new Float32Array(7 * 3) : void 0, SA = x / 2 / m, OA = B + U, ZA = B + F, Y = new DataView(
9020
+ ], xA = b >= 1 ? new Float32Array(3 * 3) : void 0, hA = b >= 2 ? new Float32Array(5 * 3) : void 0, RA = b >= 3 ? new Float32Array(7 * 3) : void 0, SA = x / 2 / m, OA = B + U, jA = B + F, Y = new DataView(
8952
9021
  t.buffer,
8953
- ZA,
9022
+ jA,
8954
9023
  G
8955
9024
  ), EA = new Float32Array(
8956
9025
  t.buffer,
@@ -8961,15 +9030,15 @@ function Hu(t, A, e, s) {
8961
9030
  B,
8962
9031
  S
8963
9032
  );
8964
- let Ut = N, Zt = M;
9033
+ let Ut = N, jt = M;
8965
9034
  for (let DA = 0; DA < p; ++DA) {
8966
- const z = DA * j;
9035
+ const z = DA * Z;
8967
9036
  let PA;
8968
9037
  if (DA < M)
8969
9038
  PA = Math.floor(DA / w);
8970
9039
  else {
8971
- const jA = VA[Ut - N];
8972
- DA >= Zt + jA && (Ut += 1, Zt += jA), PA = Ut;
9040
+ const ZA = VA[Ut - N];
9041
+ DA >= jt + ZA && (Ut += 1, jt += ZA), PA = Ut;
8973
9042
  }
8974
9043
  const de = g === 0 ? Y.getFloat32(z + 0, !0) : (Y.getUint16(z + 0, !0) - m) * SA + EA[3 * PA + 0], ye = g === 0 ? Y.getFloat32(z + 4, !0) : (Y.getUint16(z + 2, !0) - m) * SA + EA[3 * PA + 1], we = g === 0 ? Y.getFloat32(z + 8, !0) : (Y.getUint16(z + 4, !0) - m) * SA + EA[3 * PA + 2], me = g === 0 ? Y.getFloat32(z + O + 0, !0) : wA(Y.getUint16(z + O + 0, !0)), xe = g === 0 ? Y.getFloat32(z + O + 4, !0) : wA(Y.getUint16(z + O + 2, !0)), ro = g === 0 ? Y.getFloat32(z + O + 8, !0) : wA(Y.getUint16(z + O + 4, !0)), ao = g === 0 ? Y.getFloat32(z + _ + 0, !0) : wA(
8975
9044
  Y.getUint16(z + _ + 0, !0)
@@ -8979,7 +9048,7 @@ function Hu(t, A, e, s) {
8979
9048
  Y.getUint16(z + _ + 4, !0)
8980
9049
  ), co = g === 0 ? Y.getFloat32(z + _ + 12, !0) : wA(
8981
9050
  Y.getUint16(z + _ + 6, !0)
8982
- ), lo = Y.getUint8(z + Z + 0) / 255, Io = Y.getUint8(z + Z + 1) / 255, uo = Y.getUint8(z + Z + 2) / 255, ho = Y.getUint8(z + Z + 3) / 255;
9051
+ ), lo = Y.getUint8(z + j + 0) / 255, Io = Y.getUint8(z + j + 1) / 255, uo = Y.getUint8(z + j + 2) / 255, ho = Y.getUint8(z + j + 3) / 255;
8983
9052
  if (e(
8984
9053
  DA,
8985
9054
  de,
@@ -8997,14 +9066,14 @@ function Hu(t, A, e, s) {
8997
9066
  Io,
8998
9067
  uo
8999
9068
  ), b >= 1 && xA) {
9000
- for (const [jA, Gt] of cA.entries())
9001
- xA[jA] = E(z, Gt);
9069
+ for (const [ZA, Gt] of cA.entries())
9070
+ xA[ZA] = E(z, Gt);
9002
9071
  if (hA)
9003
- for (const [jA, Gt] of pA.entries())
9004
- hA[jA] = E(z, Gt);
9072
+ for (const [ZA, Gt] of pA.entries())
9073
+ hA[ZA] = E(z, Gt);
9005
9074
  if (RA)
9006
- for (const [jA, Gt] of dA.entries())
9007
- RA[jA] = E(z, Gt);
9075
+ for (const [ZA, Gt] of dA.entries())
9076
+ RA[ZA] = E(z, Gt);
9008
9077
  s == null || s(DA, xA, hA, RA);
9009
9078
  }
9010
9079
  }
@@ -9044,7 +9113,7 @@ class Ku {
9044
9113
  e == null || e(o, a[o] / 255);
9045
9114
  }
9046
9115
  {
9047
- const a = this.reader.read(this.numSplats * 3), o = ja / 0.15;
9116
+ const a = this.reader.read(this.numSplats * 3), o = Za / 0.15;
9048
9117
  for (let c = 0; c < this.numSplats; c++) {
9049
9118
  const l = c * 3, g = (a[l] / 255 - 0.5) * o + 0.5, I = (a[l + 1] / 255 - 0.5) * o + 0.5, h = (a[l + 2] / 255 - 0.5) * o + 0.5;
9050
9119
  s == null || s(c, g, I, h);
@@ -9068,7 +9137,7 @@ class Ku {
9068
9137
  }
9069
9138
  if (r && this.shDegree >= 1) {
9070
9139
  const a = new Float32Array(9), o = this.shDegree >= 2 ? new Float32Array(5 * 3) : void 0, c = this.shDegree >= 3 ? new Float32Array(7 * 3) : void 0, l = this.reader.read(
9071
- this.numSplats * Za[this.shDegree] * 3
9140
+ this.numSplats * ja[this.shDegree] * 3
9072
9141
  );
9073
9142
  let g = 0;
9074
9143
  for (let I = 0; I < this.numSplats; I++) {
@@ -9089,7 +9158,7 @@ class Ku {
9089
9158
  }
9090
9159
  }
9091
9160
  }
9092
- const Za = { 1: 3, 2: 8, 3: 15 }, ja = 0.28209479177387814, $u = 1347635022, Vu = 2, Pu = 1;
9161
+ const ja = { 1: 3, 2: 8, 3: 15 }, Za = 0.28209479177387814, $u = 1347635022, Vu = 2, Pu = 1;
9093
9162
  class et {
9094
9163
  constructor({
9095
9164
  numSplats: A,
@@ -9115,7 +9184,7 @@ class et {
9115
9184
  );
9116
9185
  }
9117
9186
  static scaleRgb(A) {
9118
- const e = ((A - 0.5) / (ja / 0.15) + 0.5) * 255;
9187
+ const e = ((A - 0.5) / (Za / 0.15) + 0.5) * 255;
9119
9188
  return Math.max(0, Math.min(255, Math.round(e)));
9120
9189
  }
9121
9190
  setRgb(A, e, s, n) {
@@ -9162,7 +9231,7 @@ class et {
9162
9231
  return Math.max(0, Math.min(255, i));
9163
9232
  }
9164
9233
  setSh(A, e, s, n) {
9165
- const i = Za[this.shDegree] || 0, r = 16 + this.numSplats * 19 + A * i * 3;
9234
+ const i = ja[this.shDegree] || 0, r = 16 + this.numSplats * 19 + A * i * 3;
9166
9235
  for (let a = 0; a < 9; ++a)
9167
9236
  this.view.setUint8(r + a, et.quantizeSh(e[a], 5));
9168
9237
  if (s) {
@@ -9227,14 +9296,14 @@ async function kh(t) {
9227
9296
  await y.parseHeader();
9228
9297
  let m = null;
9229
9298
  y.parseSplats(
9230
- (N, M, S, U, F, b, T, R, W, L, eA, H, O, _, Z) => {
9299
+ (N, M, S, U, F, b, T, R, W, L, eA, H, O, _, j) => {
9231
9300
  const P = B(new u.Vector3(M, S, U));
9232
9301
  if (E(P) && f(H)) {
9233
9302
  m = A.pushSplat(), A.setCenter(m, P.x, P.y, P.z);
9234
- const j = C(
9303
+ const Z = C(
9235
9304
  new u.Vector3(F, b, T)
9236
9305
  );
9237
- A.setScale(m, j.x, j.y, j.z);
9306
+ A.setScale(m, Z.x, Z.y, Z.z);
9238
9307
  const G = Q(
9239
9308
  new u.Quaternion(R, W, L, eA)
9240
9309
  );
@@ -9244,7 +9313,7 @@ async function kh(t) {
9244
9313
  G.y,
9245
9314
  G.z,
9246
9315
  G.w
9247
- ), A.setOpacity(m, H), A.setColor(m, O, _, Z);
9316
+ ), A.setOpacity(m, H), A.setColor(m, O, _, j);
9248
9317
  } else
9249
9318
  m = null;
9250
9319
  },
@@ -9305,22 +9374,22 @@ async function kh(t) {
9305
9374
  (y, m, N, M, S, U, F, b, T, R, W, L, eA, H, O) => {
9306
9375
  const _ = B(new u.Vector3(m, N, M));
9307
9376
  if (E(_) && f(L)) {
9308
- const Z = A.pushSplat();
9309
- A.setCenter(Z, _.x, _.y, _.z);
9377
+ const j = A.pushSplat();
9378
+ A.setCenter(j, _.x, _.y, _.z);
9310
9379
  const P = C(
9311
9380
  new u.Vector3(S, U, F)
9312
9381
  );
9313
- A.setScale(Z, P.x, P.y, P.z);
9314
- const j = Q(
9382
+ A.setScale(j, P.x, P.y, P.z);
9383
+ const Z = Q(
9315
9384
  new u.Quaternion(b, T, R, W)
9316
9385
  );
9317
9386
  A.setQuaternion(
9318
- Z,
9319
- j.x,
9320
- j.y,
9321
- j.z,
9322
- j.w
9323
- ), A.setOpacity(Z, L), A.setColor(Z, eA, H, O);
9387
+ j,
9388
+ Z.x,
9389
+ Z.y,
9390
+ Z.z,
9391
+ Z.w
9392
+ ), A.setOpacity(j, L), A.setColor(j, eA, H, O);
9324
9393
  }
9325
9394
  }
9326
9395
  );
@@ -9332,22 +9401,22 @@ async function kh(t) {
9332
9401
  (m) => {
9333
9402
  },
9334
9403
  (m, N, M, S, U, F, b, T, R, W, L, eA, H, O, _) => {
9335
- const Z = B(new u.Vector3(N, M, S));
9336
- if (E(Z) && f(eA)) {
9337
- y = A.pushSplat(), A.setCenter(y, Z.x, Z.y, Z.z);
9404
+ const j = B(new u.Vector3(N, M, S));
9405
+ if (E(j) && f(eA)) {
9406
+ y = A.pushSplat(), A.setCenter(y, j.x, j.y, j.z);
9338
9407
  const P = C(
9339
9408
  new u.Vector3(U, F, b)
9340
9409
  );
9341
9410
  A.setScale(y, P.x, P.y, P.z);
9342
- const j = Q(
9411
+ const Z = Q(
9343
9412
  new u.Quaternion(T, R, W, L)
9344
9413
  );
9345
9414
  A.setQuaternion(
9346
9415
  y,
9347
- j.x,
9348
- j.y,
9349
- j.z,
9350
- j.w
9416
+ Z.x,
9417
+ Z.y,
9418
+ Z.z,
9419
+ Z.w
9351
9420
  ), A.setOpacity(y, eA), A.setColor(y, H, O, _);
9352
9421
  } else
9353
9422
  y = null;
@@ -9848,7 +9917,7 @@ function Ou({
9848
9917
  }), l = new xt();
9849
9918
  return c;
9850
9919
  }
9851
- const Zu = {
9920
+ const ju = {
9852
9921
  box: new u.Box3(
9853
9922
  new u.Vector3(-1, -1, -1),
9854
9923
  new u.Vector3(1, 1, 1)
@@ -9863,7 +9932,7 @@ const Zu = {
9863
9932
  minScale: 1e-3,
9864
9933
  maxScale: 5e-3,
9865
9934
  anisoScale: new u.Vector3(1, 1, 1)
9866
- }, ju = {
9935
+ }, Zu = {
9867
9936
  box: new u.Box3(
9868
9937
  new u.Vector3(-2, -1, -2),
9869
9938
  new u.Vector3(2, 5, 2)
@@ -9932,7 +10001,7 @@ function Ah({
9932
10001
  const L = _e(W), eA = Qt(L).outputs.w;
9933
10002
  let H = Bt(L), O = re(iA(eA, J("float", 100)));
9934
10003
  O = ze(iA(ae("float", "PI"), O)), O = CA(Q, iA(O, Et(E, Q)));
9935
- const _ = iA(O, f), Z = re(iA(eA, J("float", 10))), P = re(eA), j = Ai(x, y, P), G = iA(j, Z), fA = _e(
10004
+ const _ = iA(O, f), j = re(iA(eA, J("float", 10))), P = re(eA), Z = Ai(x, y, P), G = iA(Z, j), fA = _e(
9936
10005
  HA({
9937
10006
  vectorType: "ivec2",
9938
10007
  x: W,
@@ -9941,7 +10010,7 @@ function Ah({
9941
10010
  );
9942
10011
  let cA = Bt(fA), pA = iA(Qt(fA).outputs.w, D);
9943
10012
  pA = CA(N, pA), H = CA(H, M);
9944
- const dA = Zn(
10013
+ const dA = jn(
9945
10014
  H,
9946
10015
  J("vec3", new u.Vector3(1, 1, 1))
9947
10016
  );
@@ -9949,7 +10018,7 @@ function Ah({
9949
10018
  const xA = J("vec4", new u.Quaternion(0, 0, 0, 1));
9950
10019
  cA = ze(CA(Bt(pA), cA)), cA = iA(cA, w);
9951
10020
  let hA = CA(H, cA), RA = Qt(hA).outputs.y;
9952
- RA = jn(F, RA), hA = HA({ vector: hA, y: RA });
10021
+ RA = Zn(F, RA), hA = HA({ vector: hA, y: RA });
9953
10022
  let SA = rt({
9954
10023
  flags: ae("uint", "GSPLAT_FLAG_ACTIVE"),
9955
10024
  index: W,
@@ -9990,8 +10059,8 @@ function Ah({
9990
10059
  }
9991
10060
  const Jh = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
9992
10061
  __proto__: null,
9993
- DEFAULT_RAIN: ju,
9994
- DEFAULT_SNOW: Zu,
10062
+ DEFAULT_RAIN: Zu,
10063
+ DEFAULT_SNOW: ju,
9995
10064
  snowBox: Ah,
9996
10065
  staticBox: Ou
9997
10066
  }, Symbol.toStringTag, { value: "Module" }));
@@ -10662,7 +10731,7 @@ export {
10662
10731
  Ie as PlyReader,
10663
10732
  Sh as PointerControls,
10664
10733
  ce as Readback,
10665
- jg as Sint8ToFloat,
10734
+ Zg as Sint8ToFloat,
10666
10735
  Vh as SparkControls,
10667
10736
  Ce as SparkRenderer,
10668
10737
  he as SparkViewpoint,
@@ -10681,7 +10750,7 @@ export {
10681
10750
  xt as SplatTransformer,
10682
10751
  Ku as SpzReader,
10683
10752
  et as SpzWriter,
10684
- Zg as Uint8ToFloat,
10753
+ jg as Uint8ToFloat,
10685
10754
  Ve as VRButton,
10686
10755
  Kh as XrHands,
10687
10756
  Uh as constructAxes,