@jdultra/threedtiles 13.0.12 → 13.0.14
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.
- package/dist/entry.d.ts +1 -0
- package/dist/splats/SplatsMesh.d.ts +3 -1
- package/dist/threedtiles.cjs.js +63 -39
- package/dist/threedtiles.cjs.js.map +1 -1
- package/dist/threedtiles.es.js +898 -866
- package/dist/threedtiles.es.js.map +1 -1
- package/dist/threedtiles.umd.js +63 -39
- package/dist/threedtiles.umd.js.map +1 -1
- package/dist/tileset/OGC3DTile.d.ts +2 -0
- package/package.json +3 -3
package/dist/threedtiles.es.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
var Wt = Object.defineProperty;
|
|
2
2
|
var Xt = (o, e, a) => e in o ? Wt(o, e, { enumerable: !0, configurable: !0, writable: !0, value: a }) : o[e] = a;
|
|
3
3
|
var ge = (o, e, a) => Xt(o, typeof e != "symbol" ? e + "" : e, a);
|
|
4
|
-
import * as
|
|
5
|
-
import { Matrix3 as
|
|
6
|
-
class
|
|
4
|
+
import * as E from "three";
|
|
5
|
+
import { Matrix3 as Ra, Vector3 as S, Box3 as Sa, Matrix4 as je, Ray as Zt, BufferGeometry as va, BufferAttribute as le, TrianglesDrawMode as $t, TriangleFanDrawMode as Qa, TriangleStripDrawMode as It, Loader as Fa, LoaderUtils as Pe, FileLoader as Be, Color as he, LinearSRGBColorSpace as K, SpotLight as eA, PointLight as aA, DirectionalLight as tA, MeshBasicMaterial as Le, SRGBColorSpace as re, MeshPhysicalMaterial as ee, Vector2 as pt, Quaternion as Ct, InstancedMesh as AA, InstancedBufferAttribute as ya, Object3D as Bt, TextureLoader as iA, ImageBitmapLoader as sA, InterleavedBuffer as rA, InterleavedBufferAttribute as nA, LinearFilter as Ce, LinearMipmapLinearFilter as $e, RepeatWrapping as wa, NearestFilter as M, PointsMaterial as oA, Material as aa, LineBasicMaterial as cA, MeshStandardMaterial as Ua, DoubleSide as dA, PropertyBinding as bA, SkinnedMesh as lA, Mesh as xa, LineSegments as hA, Line as gA, LineLoop as fA, Points as uA, Group as ta, PerspectiveCamera as IA, MathUtils as pA, OrthographicCamera as mt, Skeleton as CA, AnimationClip as BA, Bone as mA, InterpolateLinear as Et, ColorManagement as ka, NearestMipmapNearestFilter as EA, LinearMipmapNearestFilter as QA, NearestMipmapLinearFilter as yA, ClampToEdgeWrapping as wA, MirroredRepeatWrapping as xA, InterpolateDiscrete as kA, FrontSide as Ze, Texture as Na, VectorKeyframeTrack as Pa, NumberKeyframeTrack as _a, QuaternionKeyframeTrack as Ha, Sphere as DA, Interpolant as jA, CompressedCubeTexture as MA, CompressedArrayTexture as RA, CompressedTexture as qa, RGBAFormat as $, RGBA_ASTC_4x4_Format as Qt, RGB_BPTC_UNSIGNED_Format as SA, RGBA_BPTC_Format as vA, RGBA_ETC2_EAC_Format as FA, RGBA_PVRTC_4BPPV1_Format as TA, RGBA_S3TC_DXT5_Format as LA, RGB_ETC1_Format as GA, RGB_ETC2_Format as UA, RGB_PVRTC_4BPPV1_Format as NA, RGBA_S3TC_DXT1_Format as PA, UnsignedByteType as X, HalfFloatType as xe, FloatType as v, DataTexture as Ge, Data3DTexture as _A, NoColorSpace as HA, RGFormat as Ue, RedFormat as Ne, RGBA_ASTC_6x6_Format as Oa, WebGL3DRenderTarget as ne, ShaderMaterial as Aa, InstancedBufferGeometry as Ja, DynamicDrawUsage as Ka, Scene as qA, PlaneGeometry as OA } from "three";
|
|
6
|
+
class $i {
|
|
7
7
|
constructor() {
|
|
8
|
-
this.cullMap = [], this.cullMaterial = new
|
|
8
|
+
this.cullMap = [], this.cullMaterial = new E.MeshBasicMaterial({ vertexColors: !0 }), this.cullMaterial.side = E.FrontSide, this.cullTarget = this._createCullTarget(), this.cullPixels = new Uint8Array(4 * this.cullTarget.width * this.cullTarget.height);
|
|
9
9
|
}
|
|
10
10
|
setSide(e) {
|
|
11
11
|
this.cullMaterial.side = e;
|
|
12
12
|
}
|
|
13
13
|
_createCullTarget() {
|
|
14
|
-
const e = new
|
|
15
|
-
return e.texture.format =
|
|
14
|
+
const e = new E.WebGLRenderTarget(Math.floor(0.05 * window.innerWidth), Math.floor(0.05 * window.innerHeight));
|
|
15
|
+
return e.texture.format = E.RGBAFormat, e.texture.colorSpace = E.LinearSRGBColorSpace, e.texture.minFilter = E.NearestFilter, e.texture.magFilter = E.NearestFilter, e.texture.generateMipmaps = !1, e.stencilBuffer = !1, e.depthBuffer = !0, e.depthTexture = new E.DepthTexture(), e.depthTexture.format = E.DepthFormat, e.depthTexture.type = E.UnsignedShortType, e;
|
|
16
16
|
}
|
|
17
17
|
update(e, a, t) {
|
|
18
18
|
let A = a.getRenderTarget(), i = e.overrideMaterial;
|
|
19
19
|
e.overrideMaterial = this.cullMaterial, a.setRenderTarget(this.cullTarget), a.render(e, t), e.overrideMaterial = i, a.setRenderTarget(A), a.readRenderTargetPixels(this.cullTarget, 0, 0, this.cullTarget.width, this.cullTarget.height, this.cullPixels), this.cullMap = [];
|
|
20
20
|
for (let s = 0; s < this.cullPixels.length; s += 4) {
|
|
21
|
-
const r =
|
|
21
|
+
const r = E.MathUtils.clamp(this.cullPixels[s], 0, 255) << 16 ^ E.MathUtils.clamp(this.cullPixels[s + 1], 0, 255) << 8 ^ E.MathUtils.clamp(this.cullPixels[s + 2], 0, 255);
|
|
22
22
|
this.cullMap[r] = !0;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -26,10 +26,10 @@ class Zi {
|
|
|
26
26
|
return this.cullMap[e];
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
const J = new
|
|
29
|
+
const J = new Ra(), G = new S(), za = new S(), Va = new Sa(), Ke = new je(), Ya = new je(), Wa = new Zt();
|
|
30
30
|
class se {
|
|
31
31
|
constructor(e) {
|
|
32
|
-
this.center = new S(e[0], e[1], e[2]), this.e1 = new S(e[3], e[4], e[5]), this.e2 = new S(e[6], e[7], e[8]), this.e3 = new S(e[9], e[10], e[11]), this.halfSize = new S(this.e1.length(), this.e2.length(), this.e3.length()), this.e1.normalize(), this.e2.normalize(), this.e3.normalize(), this.rotationMatrix = new
|
|
32
|
+
this.center = new S(e[0], e[1], e[2]), this.e1 = new S(e[3], e[4], e[5]), this.e2 = new S(e[6], e[7], e[8]), this.e3 = new S(e[9], e[10], e[11]), this.halfSize = new S(this.e1.length(), this.e2.length(), this.e3.length()), this.e1.normalize(), this.e2.normalize(), this.e3.normalize(), this.rotationMatrix = new Ra(), this.rotationMatrix.set(this.e1.x, this.e1.y, this.e1.z, this.e2.x, this.e2.y, this.e2.z, this.e3.x, this.e3.y, this.e3.z);
|
|
33
33
|
}
|
|
34
34
|
copy(e) {
|
|
35
35
|
this.center.copy(e.center), this.rotationMatrix.copy(e.rotationMatrix), this.halfSize.copy(e.halfSize);
|
|
@@ -159,14 +159,14 @@ class yt {
|
|
|
159
159
|
return Array.from(this.keys()).map((a) => ({ key: a, value: this.get(a) }));
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
|
-
const
|
|
162
|
+
const JA = new TextDecoder();
|
|
163
163
|
class wt {
|
|
164
164
|
constructor(e, a, t, A) {
|
|
165
165
|
this.buffer = e, this.binOffset = a + t, this.binLength = A;
|
|
166
166
|
let i = null;
|
|
167
167
|
if (t !== 0) try {
|
|
168
168
|
const s = new Uint8Array(e, a, t);
|
|
169
|
-
i = JSON.parse(
|
|
169
|
+
i = JSON.parse(JA.decode(s));
|
|
170
170
|
} catch {
|
|
171
171
|
i = {};
|
|
172
172
|
}
|
|
@@ -183,10 +183,10 @@ class wt {
|
|
|
183
183
|
if (s instanceof Object) {
|
|
184
184
|
if (Array.isArray(s)) return s;
|
|
185
185
|
{
|
|
186
|
-
const { buffer: r, binOffset: c, binLength: n } = this,
|
|
186
|
+
const { buffer: r, binOffset: c, binLength: n } = this, b = s.byteOffset || 0, d = s.type || A, l = s.componentType || t;
|
|
187
187
|
if ("type" in s && A && s.type !== A) throw new Error("FeatureTable: Specified type does not match expected type.");
|
|
188
188
|
let g, h;
|
|
189
|
-
switch (
|
|
189
|
+
switch (d) {
|
|
190
190
|
case "SCALAR":
|
|
191
191
|
g = 1;
|
|
192
192
|
break;
|
|
@@ -202,7 +202,7 @@ class wt {
|
|
|
202
202
|
default:
|
|
203
203
|
throw new Error(`FeatureTable : Feature type not provided for "${e}".`);
|
|
204
204
|
}
|
|
205
|
-
const f = c +
|
|
205
|
+
const f = c + b, I = a * g;
|
|
206
206
|
switch (l) {
|
|
207
207
|
case "BYTE":
|
|
208
208
|
h = new Int8Array(r, f, I);
|
|
@@ -238,7 +238,7 @@ class wt {
|
|
|
238
238
|
return s;
|
|
239
239
|
}
|
|
240
240
|
}
|
|
241
|
-
class
|
|
241
|
+
class KA extends wt {
|
|
242
242
|
constructor(e, a, t, A, i) {
|
|
243
243
|
super(e, t, A, i), this.batchSize = a;
|
|
244
244
|
}
|
|
@@ -249,31 +249,31 @@ class zA extends wt {
|
|
|
249
249
|
function Xa(o) {
|
|
250
250
|
let e, a, t, A = -1, i = 0;
|
|
251
251
|
for (let n = 0; n < o.length; ++n) {
|
|
252
|
-
const
|
|
253
|
-
if (e === void 0 && (e =
|
|
254
|
-
if (a === void 0 && (a =
|
|
255
|
-
if (t === void 0 && (t =
|
|
256
|
-
if (A === -1 && (A =
|
|
257
|
-
i +=
|
|
252
|
+
const b = o[n];
|
|
253
|
+
if (e === void 0 && (e = b.array.constructor), e !== b.array.constructor) return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."), null;
|
|
254
|
+
if (a === void 0 && (a = b.itemSize), a !== b.itemSize) return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."), null;
|
|
255
|
+
if (t === void 0 && (t = b.normalized), t !== b.normalized) return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."), null;
|
|
256
|
+
if (A === -1 && (A = b.gpuType), A !== b.gpuType) return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."), null;
|
|
257
|
+
i += b.count * a;
|
|
258
258
|
}
|
|
259
259
|
const s = new e(i), r = new le(s, a, t);
|
|
260
260
|
let c = 0;
|
|
261
261
|
for (let n = 0; n < o.length; ++n) {
|
|
262
|
-
const
|
|
263
|
-
if (
|
|
264
|
-
const
|
|
265
|
-
for (let l = 0, g =
|
|
266
|
-
const f =
|
|
267
|
-
r.setComponent(l +
|
|
262
|
+
const b = o[n];
|
|
263
|
+
if (b.isInterleavedBufferAttribute) {
|
|
264
|
+
const d = c / a;
|
|
265
|
+
for (let l = 0, g = b.count; l < g; l++) for (let h = 0; h < a; h++) {
|
|
266
|
+
const f = b.getComponent(l, h);
|
|
267
|
+
r.setComponent(l + d, h, f);
|
|
268
268
|
}
|
|
269
|
-
} else s.set(
|
|
270
|
-
c +=
|
|
269
|
+
} else s.set(b.array, c);
|
|
270
|
+
c += b.count * a;
|
|
271
271
|
}
|
|
272
272
|
return A !== void 0 && (r.gpuType = A), r;
|
|
273
273
|
}
|
|
274
274
|
function Za(o, e) {
|
|
275
275
|
if (e === $t) return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."), o;
|
|
276
|
-
if (e ===
|
|
276
|
+
if (e === Qa || e === It) {
|
|
277
277
|
let a = o.getIndex();
|
|
278
278
|
if (a === null) {
|
|
279
279
|
const s = [], r = o.getAttribute("position");
|
|
@@ -282,7 +282,7 @@ function Za(o, e) {
|
|
|
282
282
|
o.setIndex(s), a = o.getIndex();
|
|
283
283
|
}
|
|
284
284
|
const t = a.count - 2, A = [];
|
|
285
|
-
if (e ===
|
|
285
|
+
if (e === Qa) for (let s = 1; s <= t; s++) A.push(a.getX(0)), A.push(a.getX(s)), A.push(a.getX(s + 1));
|
|
286
286
|
else for (let s = 0; s < t; s++) s % 2 == 0 ? (A.push(a.getX(s)), A.push(a.getX(s + 1)), A.push(a.getX(s + 2))) : (A.push(a.getX(s + 2)), A.push(a.getX(s + 1)), A.push(a.getX(s)));
|
|
287
287
|
A.length / 3 !== t && console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");
|
|
288
288
|
const i = o.clone();
|
|
@@ -297,42 +297,42 @@ class xt {
|
|
|
297
297
|
this.gltfLoader.hasDracoLoader && !this.gltfLoader.dracoLoader || this.gltfLoader.hasKTX2Loader && !this.gltfLoader.ktx2Loader || (clearInterval(a), e());
|
|
298
298
|
}, 10);
|
|
299
299
|
}));
|
|
300
|
-
this.gltfLoader = e, this.tempMatrix = new
|
|
300
|
+
this.gltfLoader = e, this.tempMatrix = new E.Matrix4(), this.zUpToYUpMatrix = new E.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1);
|
|
301
301
|
}
|
|
302
302
|
parseB3DM(e, a, t, A) {
|
|
303
303
|
const i = this, s = new DataView(e), r = String.fromCharCode(s.getUint8(0)) + String.fromCharCode(s.getUint8(1)) + String.fromCharCode(s.getUint8(2)) + String.fromCharCode(s.getUint8(3));
|
|
304
304
|
console.assert(r === "b3dm");
|
|
305
305
|
const c = s.getUint32(8, !0);
|
|
306
306
|
console.assert(c === e.byteLength);
|
|
307
|
-
const n = s.getUint32(12, !0),
|
|
308
|
-
new
|
|
309
|
-
const f = h +
|
|
310
|
-
return new Promise(async (u,
|
|
311
|
-
await this.checkLoaderInitialized(), this.gltfLoader.parse(I, null, (
|
|
312
|
-
const
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
}), u(
|
|
316
|
-
}, (
|
|
317
|
-
console.error(
|
|
307
|
+
const n = s.getUint32(12, !0), b = s.getUint32(16, !0), d = s.getUint32(20, !0), l = s.getUint32(24, !0), g = new wt(e, 28, n, b), h = 28 + n + b;
|
|
308
|
+
new KA(e, g.getData("BATCH_LENGTH"), h, d, l);
|
|
309
|
+
const f = h + d + l, I = new Uint8Array(e, f, c - f).slice().buffer;
|
|
310
|
+
return new Promise(async (u, p) => {
|
|
311
|
+
await this.checkLoaderInitialized(), this.gltfLoader.parse(I, null, (B) => {
|
|
312
|
+
const C = g.getData("RTC_CENTER");
|
|
313
|
+
C ? (this.tempMatrix.makeTranslation(C[0], C[1], C[2]), B.scene.applyMatrix4(this.tempMatrix)) : B.userData.gltfExtensions && B.userData.gltfExtensions.CESIUM_RTC && (this.tempMatrix.makeTranslation(B.userData.gltfExtensions.CESIUM_RTC.center[0], B.userData.gltfExtensions.CESIUM_RTC.center[1], B.userData.gltfExtensions.CESIUM_RTC.center[2]), B.scene.applyMatrix4(this.tempMatrix)), t && B.scene.applyMatrix4(i.zUpToYUpMatrix), B.scene.asset = B.asset, B.scene.traverse((w) => {
|
|
314
|
+
w.isMesh && (A && w.applyMatrix4(i.zUpToYUpMatrix), a && a(w));
|
|
315
|
+
}), u(B.scene);
|
|
316
|
+
}, (B) => {
|
|
317
|
+
console.error(B);
|
|
318
318
|
});
|
|
319
319
|
});
|
|
320
320
|
}
|
|
321
321
|
parseB3DMInstanced(e, a, t, A, i) {
|
|
322
322
|
return this.parseB3DM(e, a, A, i).then((s) => {
|
|
323
323
|
let r, c = [], n = [];
|
|
324
|
-
s.updateWorldMatrix(!1, !0), s.traverse((
|
|
325
|
-
|
|
324
|
+
s.updateWorldMatrix(!1, !0), s.traverse((d) => {
|
|
325
|
+
d.isMesh && (d.geometry.applyMatrix4(d.matrixWorld), c.push(d.geometry), n.push(d.material));
|
|
326
326
|
});
|
|
327
|
-
let
|
|
327
|
+
let b = function(d) {
|
|
328
328
|
let l = /* @__PURE__ */ new Set();
|
|
329
|
-
return
|
|
329
|
+
return d.forEach((h) => {
|
|
330
330
|
for (let f in h.attributes) l.add(f);
|
|
331
|
-
}),
|
|
331
|
+
}), d.forEach((h) => {
|
|
332
332
|
l.forEach((f) => {
|
|
333
333
|
if (!h.attributes[f]) {
|
|
334
|
-
const I = function(
|
|
335
|
-
switch (
|
|
334
|
+
const I = function(p) {
|
|
335
|
+
switch (p) {
|
|
336
336
|
case "position":
|
|
337
337
|
case "normal":
|
|
338
338
|
case "color":
|
|
@@ -341,92 +341,92 @@ class xt {
|
|
|
341
341
|
case "uv2":
|
|
342
342
|
return 2;
|
|
343
343
|
default:
|
|
344
|
-
throw new Error(`Unknown attribute ${
|
|
344
|
+
throw new Error(`Unknown attribute ${p}`);
|
|
345
345
|
}
|
|
346
346
|
}(f), u = new Float32Array(I * h.getAttribute("position").count).fill(0);
|
|
347
|
-
h.setAttribute(f, new
|
|
347
|
+
h.setAttribute(f, new E.BufferAttribute(u, I));
|
|
348
348
|
}
|
|
349
349
|
});
|
|
350
350
|
}), function(h, f = !1) {
|
|
351
|
-
const I = h[0].index !== null, u = new Set(Object.keys(h[0].attributes)),
|
|
352
|
-
let
|
|
353
|
-
for (let
|
|
354
|
-
const Q = h[
|
|
351
|
+
const I = h[0].index !== null, u = new Set(Object.keys(h[0].attributes)), p = new Set(Object.keys(h[0].morphAttributes)), B = {}, C = {}, w = h[0].morphTargetsRelative, x = new va();
|
|
352
|
+
let y = 0;
|
|
353
|
+
for (let m = 0; m < h.length; ++m) {
|
|
354
|
+
const Q = h[m];
|
|
355
355
|
let k = 0;
|
|
356
|
-
if (I !== (Q.index !== null)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " +
|
|
356
|
+
if (I !== (Q.index !== null)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + ". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."), null;
|
|
357
357
|
for (const D in Q.attributes) {
|
|
358
|
-
if (!u.has(D)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " +
|
|
359
|
-
|
|
358
|
+
if (!u.has(D)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + '. All geometries must have compatible attributes; make sure "' + D + '" attribute exists among all geometries, or in none of them.'), null;
|
|
359
|
+
B[D] === void 0 && (B[D] = []), B[D].push(Q.attributes[D]), k++;
|
|
360
360
|
}
|
|
361
|
-
if (k !== u.size) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " +
|
|
362
|
-
if (
|
|
361
|
+
if (k !== u.size) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + ". Make sure all geometries have the same number of attributes."), null;
|
|
362
|
+
if (w !== Q.morphTargetsRelative) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + ". .morphTargetsRelative must be consistent throughout all geometries."), null;
|
|
363
363
|
for (const D in Q.morphAttributes) {
|
|
364
|
-
if (!
|
|
365
|
-
|
|
364
|
+
if (!p.has(D)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + ". .morphAttributes must be consistent throughout all geometries."), null;
|
|
365
|
+
C[D] === void 0 && (C[D] = []), C[D].push(Q.morphAttributes[D]);
|
|
366
366
|
}
|
|
367
367
|
if (f) {
|
|
368
368
|
let D;
|
|
369
369
|
if (I) D = Q.index.count;
|
|
370
370
|
else {
|
|
371
|
-
if (Q.attributes.position === void 0) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " +
|
|
371
|
+
if (Q.attributes.position === void 0) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + ". The geometry must have either an index or a position attribute"), null;
|
|
372
372
|
D = Q.attributes.position.count;
|
|
373
373
|
}
|
|
374
|
-
x.addGroup(
|
|
374
|
+
x.addGroup(y, D, m), y += D;
|
|
375
375
|
}
|
|
376
376
|
}
|
|
377
377
|
if (I) {
|
|
378
|
-
let
|
|
378
|
+
let m = 0;
|
|
379
379
|
const Q = [];
|
|
380
380
|
for (let k = 0; k < h.length; ++k) {
|
|
381
381
|
const D = h[k].index;
|
|
382
|
-
for (let
|
|
383
|
-
|
|
382
|
+
for (let F = 0; F < D.count; ++F) Q.push(D.getX(F) + m);
|
|
383
|
+
m += h[k].attributes.position.count;
|
|
384
384
|
}
|
|
385
385
|
x.setIndex(Q);
|
|
386
386
|
}
|
|
387
|
-
for (const
|
|
388
|
-
const Q = Xa(
|
|
389
|
-
if (!Q) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the " +
|
|
390
|
-
x.setAttribute(
|
|
387
|
+
for (const m in B) {
|
|
388
|
+
const Q = Xa(B[m]);
|
|
389
|
+
if (!Q) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the " + m + " attribute."), null;
|
|
390
|
+
x.setAttribute(m, Q);
|
|
391
391
|
}
|
|
392
|
-
for (const
|
|
393
|
-
const Q =
|
|
392
|
+
for (const m in C) {
|
|
393
|
+
const Q = C[m][0].length;
|
|
394
394
|
if (Q === 0) break;
|
|
395
|
-
x.morphAttributes = x.morphAttributes || {}, x.morphAttributes[
|
|
395
|
+
x.morphAttributes = x.morphAttributes || {}, x.morphAttributes[m] = [];
|
|
396
396
|
for (let k = 0; k < Q; ++k) {
|
|
397
397
|
const D = [];
|
|
398
|
-
for (let _ = 0; _ <
|
|
399
|
-
const
|
|
400
|
-
if (!
|
|
401
|
-
x.morphAttributes[
|
|
398
|
+
for (let _ = 0; _ < C[m].length; ++_) D.push(C[m][_][k]);
|
|
399
|
+
const F = Xa(D);
|
|
400
|
+
if (!F) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the " + m + " morphAttribute."), null;
|
|
401
|
+
x.morphAttributes[m].push(F);
|
|
402
402
|
}
|
|
403
403
|
}
|
|
404
404
|
return x;
|
|
405
|
-
}(
|
|
405
|
+
}(d, !0);
|
|
406
406
|
}(c);
|
|
407
|
-
return r = new
|
|
407
|
+
return r = new E.InstancedMesh(b, n, t), r.baseMatrix = new E.Matrix4().identity(), r;
|
|
408
408
|
});
|
|
409
409
|
}
|
|
410
410
|
}
|
|
411
|
-
var
|
|
412
|
-
function
|
|
413
|
-
if (!
|
|
414
|
-
return
|
|
411
|
+
var ia, zA = new Uint8Array(16);
|
|
412
|
+
function VA() {
|
|
413
|
+
if (!ia && !(ia = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto < "u" && typeof msCrypto.getRandomValues == "function" && msCrypto.getRandomValues.bind(msCrypto))) throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
414
|
+
return ia(zA);
|
|
415
415
|
}
|
|
416
|
-
const
|
|
417
|
-
for (var T = [],
|
|
418
|
-
function
|
|
416
|
+
const YA = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
|
|
417
|
+
for (var T = [], sa = 0; sa < 256; ++sa) T.push((sa + 256).toString(16).substr(1));
|
|
418
|
+
function WA(o) {
|
|
419
419
|
var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, a = (T[o[e + 0]] + T[o[e + 1]] + T[o[e + 2]] + T[o[e + 3]] + "-" + T[o[e + 4]] + T[o[e + 5]] + "-" + T[o[e + 6]] + T[o[e + 7]] + "-" + T[o[e + 8]] + T[o[e + 9]] + "-" + T[o[e + 10]] + T[o[e + 11]] + T[o[e + 12]] + T[o[e + 13]] + T[o[e + 14]] + T[o[e + 15]]).toLowerCase();
|
|
420
420
|
if (!function(t) {
|
|
421
|
-
return typeof t == "string" &&
|
|
421
|
+
return typeof t == "string" && YA.test(t);
|
|
422
422
|
}(a)) throw TypeError("Stringified UUID is invalid");
|
|
423
423
|
return a;
|
|
424
424
|
}
|
|
425
425
|
function kt(o, e, a) {
|
|
426
|
-
var t = (o = o || {}).random || (o.rng ||
|
|
427
|
-
return t[6] = 15 & t[6] | 64, t[8] = 63 & t[8] | 128,
|
|
426
|
+
var t = (o = o || {}).random || (o.rng || VA)();
|
|
427
|
+
return t[6] = 15 & t[6] | 64, t[8] = 63 & t[8] | 128, WA(t);
|
|
428
428
|
}
|
|
429
|
-
class
|
|
429
|
+
class XA {
|
|
430
430
|
constructor(e, a) {
|
|
431
431
|
ge(this, "checkLoaderInitialized", async () => {
|
|
432
432
|
const e = this;
|
|
@@ -443,7 +443,7 @@ class ZA {
|
|
|
443
443
|
return new Promise(async (s, r) => {
|
|
444
444
|
await i.checkLoaderInitialized(), i.gltfLoader.parse(e, null, (c) => {
|
|
445
445
|
c.scene;
|
|
446
|
-
const n = c.scene.children[0],
|
|
446
|
+
const n = c.scene.children[0], b = n.geometry.attributes.position, d = n.geometry.attributes.color, l = n.geometry.attributes.cov_0, g = n.geometry.attributes.cov_1, h = A.addSplatsTile(b, d, l, g);
|
|
447
447
|
c.scene.traverse((f) => {
|
|
448
448
|
f.dispose && f.dispose();
|
|
449
449
|
}), s(h);
|
|
@@ -456,15 +456,17 @@ class ZA {
|
|
|
456
456
|
class Dt extends Fa {
|
|
457
457
|
constructor(e) {
|
|
458
458
|
super(e), this.dracoLoader = null, this.ktx2Loader = null, this.meshoptDecoder = null, this.pluginCallbacks = [], this.register(function(a) {
|
|
459
|
+
return new ti(a);
|
|
460
|
+
}), this.register(function(a) {
|
|
459
461
|
return new Ai(a);
|
|
460
462
|
}), this.register(function(a) {
|
|
461
|
-
return new
|
|
463
|
+
return new li(a);
|
|
462
464
|
}), this.register(function(a) {
|
|
463
465
|
return new hi(a);
|
|
464
466
|
}), this.register(function(a) {
|
|
465
467
|
return new gi(a);
|
|
466
468
|
}), this.register(function(a) {
|
|
467
|
-
return new
|
|
469
|
+
return new si(a);
|
|
468
470
|
}), this.register(function(a) {
|
|
469
471
|
return new ri(a);
|
|
470
472
|
}), this.register(function(a) {
|
|
@@ -472,21 +474,19 @@ class Dt extends Fa {
|
|
|
472
474
|
}), this.register(function(a) {
|
|
473
475
|
return new oi(a);
|
|
474
476
|
}), this.register(function(a) {
|
|
475
|
-
return new
|
|
476
|
-
}), this.register(function(a) {
|
|
477
|
-
return new ti(a);
|
|
478
|
-
}), this.register(function(a) {
|
|
479
|
-
return new di(a);
|
|
477
|
+
return new ai(a);
|
|
480
478
|
}), this.register(function(a) {
|
|
481
|
-
return new
|
|
479
|
+
return new ci(a);
|
|
482
480
|
}), this.register(function(a) {
|
|
483
|
-
return new
|
|
481
|
+
return new ii(a);
|
|
484
482
|
}), this.register(function(a) {
|
|
485
483
|
return new bi(a);
|
|
486
484
|
}), this.register(function(a) {
|
|
487
|
-
return new
|
|
485
|
+
return new di(a);
|
|
486
|
+
}), this.register(function(a) {
|
|
487
|
+
return new $A(a);
|
|
488
488
|
}), this.register(function(a) {
|
|
489
|
-
return new
|
|
489
|
+
return new fi(a);
|
|
490
490
|
}), this.register(function(a) {
|
|
491
491
|
return new ui(a);
|
|
492
492
|
});
|
|
@@ -496,20 +496,20 @@ class Dt extends Fa {
|
|
|
496
496
|
let s;
|
|
497
497
|
if (this.resourcePath !== "") s = this.resourcePath;
|
|
498
498
|
else if (this.path !== "") {
|
|
499
|
-
const n =
|
|
500
|
-
s =
|
|
501
|
-
} else s =
|
|
499
|
+
const n = Pe.extractUrlBase(e);
|
|
500
|
+
s = Pe.resolveURL(n, this.path);
|
|
501
|
+
} else s = Pe.extractUrlBase(e);
|
|
502
502
|
this.manager.itemStart(e);
|
|
503
503
|
const r = function(n) {
|
|
504
504
|
A ? A(n) : console.error(n), i.manager.itemError(e), i.manager.itemEnd(e);
|
|
505
505
|
}, c = new Be(this.manager);
|
|
506
506
|
c.setPath(this.path), c.setResponseType("arraybuffer"), c.setRequestHeader(this.requestHeader), c.setWithCredentials(this.withCredentials), c.load(e, function(n) {
|
|
507
507
|
try {
|
|
508
|
-
i.parse(n, s, function(
|
|
509
|
-
a(
|
|
508
|
+
i.parse(n, s, function(b) {
|
|
509
|
+
a(b), i.manager.itemEnd(e);
|
|
510
510
|
}, r);
|
|
511
|
-
} catch (
|
|
512
|
-
r(
|
|
511
|
+
} catch (b) {
|
|
512
|
+
r(b);
|
|
513
513
|
}
|
|
514
514
|
}, t, r);
|
|
515
515
|
}
|
|
@@ -535,37 +535,37 @@ class Dt extends Fa {
|
|
|
535
535
|
else if (e instanceof ArrayBuffer)
|
|
536
536
|
if (c.decode(new Uint8Array(e, 0, 4)) === jt) {
|
|
537
537
|
try {
|
|
538
|
-
s[j.KHR_BINARY_GLTF] = new
|
|
539
|
-
} catch (
|
|
540
|
-
return void (A && A(
|
|
538
|
+
s[j.KHR_BINARY_GLTF] = new Ci(e);
|
|
539
|
+
} catch (b) {
|
|
540
|
+
return void (A && A(b));
|
|
541
541
|
}
|
|
542
542
|
i = JSON.parse(s[j.KHR_BINARY_GLTF].content);
|
|
543
543
|
} else i = JSON.parse(c.decode(e));
|
|
544
544
|
else i = e;
|
|
545
545
|
if (i.asset === void 0 || i.asset.version[0] < 2) return void (A && A(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));
|
|
546
|
-
const n = new
|
|
546
|
+
const n = new Si(i, { path: a || this.resourcePath || "", crossOrigin: this.crossOrigin, requestHeader: this.requestHeader, manager: this.manager, ktx2Loader: this.ktx2Loader, meshoptDecoder: this.meshoptDecoder });
|
|
547
547
|
n.fileLoader.setRequestHeader(this.requestHeader);
|
|
548
|
-
for (let
|
|
549
|
-
const
|
|
550
|
-
|
|
548
|
+
for (let b = 0; b < this.pluginCallbacks.length; b++) {
|
|
549
|
+
const d = this.pluginCallbacks[b](n);
|
|
550
|
+
d.name || console.error("THREE.GLTFLoader: Invalid plugin found: missing name"), r[d.name] = d, s[d.name] = !0;
|
|
551
551
|
}
|
|
552
|
-
if (i.extensionsUsed) for (let
|
|
553
|
-
const
|
|
554
|
-
switch (
|
|
552
|
+
if (i.extensionsUsed) for (let b = 0; b < i.extensionsUsed.length; ++b) {
|
|
553
|
+
const d = i.extensionsUsed[b], l = i.extensionsRequired || [];
|
|
554
|
+
switch (d) {
|
|
555
555
|
case j.KHR_MATERIALS_UNLIT:
|
|
556
|
-
s[
|
|
556
|
+
s[d] = new ei();
|
|
557
557
|
break;
|
|
558
558
|
case j.KHR_DRACO_MESH_COMPRESSION:
|
|
559
|
-
s[
|
|
559
|
+
s[d] = new Bi(i, this.dracoLoader);
|
|
560
560
|
break;
|
|
561
561
|
case j.KHR_TEXTURE_TRANSFORM:
|
|
562
|
-
s[
|
|
562
|
+
s[d] = new mi();
|
|
563
563
|
break;
|
|
564
564
|
case j.KHR_MESH_QUANTIZATION:
|
|
565
|
-
s[
|
|
565
|
+
s[d] = new Ei();
|
|
566
566
|
break;
|
|
567
567
|
default:
|
|
568
|
-
l.indexOf(
|
|
568
|
+
l.indexOf(d) >= 0 && r[d] === void 0 && console.warn('THREE.GLTFLoader: Unknown extension "' + d + '".');
|
|
569
569
|
}
|
|
570
570
|
}
|
|
571
571
|
n.setExtensions(s), n.setPlugins(r), n.parse(t, A);
|
|
@@ -577,7 +577,7 @@ class Dt extends Fa {
|
|
|
577
577
|
});
|
|
578
578
|
}
|
|
579
579
|
}
|
|
580
|
-
function
|
|
580
|
+
function ZA() {
|
|
581
581
|
let o = {};
|
|
582
582
|
return { get: function(e) {
|
|
583
583
|
return o[e];
|
|
@@ -590,7 +590,7 @@ function $A() {
|
|
|
590
590
|
} };
|
|
591
591
|
}
|
|
592
592
|
const j = { KHR_BINARY_GLTF: "KHR_binary_glTF", KHR_DRACO_MESH_COMPRESSION: "KHR_draco_mesh_compression", KHR_LIGHTS_PUNCTUAL: "KHR_lights_punctual", KHR_MATERIALS_CLEARCOAT: "KHR_materials_clearcoat", KHR_MATERIALS_DISPERSION: "KHR_materials_dispersion", KHR_MATERIALS_IOR: "KHR_materials_ior", KHR_MATERIALS_SHEEN: "KHR_materials_sheen", KHR_MATERIALS_SPECULAR: "KHR_materials_specular", KHR_MATERIALS_TRANSMISSION: "KHR_materials_transmission", KHR_MATERIALS_IRIDESCENCE: "KHR_materials_iridescence", KHR_MATERIALS_ANISOTROPY: "KHR_materials_anisotropy", KHR_MATERIALS_UNLIT: "KHR_materials_unlit", KHR_MATERIALS_VOLUME: "KHR_materials_volume", KHR_TEXTURE_BASISU: "KHR_texture_basisu", KHR_TEXTURE_TRANSFORM: "KHR_texture_transform", KHR_MESH_QUANTIZATION: "KHR_mesh_quantization", KHR_MATERIALS_EMISSIVE_STRENGTH: "KHR_materials_emissive_strength", EXT_MATERIALS_BUMP: "EXT_materials_bump", EXT_TEXTURE_WEBP: "EXT_texture_webp", EXT_TEXTURE_AVIF: "EXT_texture_avif", EXT_MESHOPT_COMPRESSION: "EXT_meshopt_compression", EXT_MESH_GPU_INSTANCING: "EXT_mesh_gpu_instancing" };
|
|
593
|
-
class
|
|
593
|
+
class $A {
|
|
594
594
|
constructor(e) {
|
|
595
595
|
this.parser = e, this.name = j.KHR_LIGHTS_PUNCTUAL, this.cache = { refs: {}, uses: {} };
|
|
596
596
|
}
|
|
@@ -635,12 +635,12 @@ class ei {
|
|
|
635
635
|
});
|
|
636
636
|
}
|
|
637
637
|
}
|
|
638
|
-
class
|
|
638
|
+
class ei {
|
|
639
639
|
constructor() {
|
|
640
640
|
this.name = j.KHR_MATERIALS_UNLIT;
|
|
641
641
|
}
|
|
642
642
|
getMaterialType() {
|
|
643
|
-
return
|
|
643
|
+
return Le;
|
|
644
644
|
}
|
|
645
645
|
extendParams(e, a, t) {
|
|
646
646
|
const A = [];
|
|
@@ -656,7 +656,7 @@ class ai {
|
|
|
656
656
|
return Promise.all(A);
|
|
657
657
|
}
|
|
658
658
|
}
|
|
659
|
-
class
|
|
659
|
+
class ai {
|
|
660
660
|
constructor(e) {
|
|
661
661
|
this.parser = e, this.name = j.KHR_MATERIALS_EMISSIVE_STRENGTH;
|
|
662
662
|
}
|
|
@@ -667,7 +667,7 @@ class ti {
|
|
|
667
667
|
return A !== void 0 && (a.emissiveIntensity = A), Promise.resolve();
|
|
668
668
|
}
|
|
669
669
|
}
|
|
670
|
-
class
|
|
670
|
+
class ti {
|
|
671
671
|
constructor(e) {
|
|
672
672
|
this.parser = e, this.name = j.KHR_MATERIALS_CLEARCOAT;
|
|
673
673
|
}
|
|
@@ -681,12 +681,12 @@ class Ai {
|
|
|
681
681
|
const i = [], s = A.extensions[this.name];
|
|
682
682
|
if (s.clearcoatFactor !== void 0 && (a.clearcoat = s.clearcoatFactor), s.clearcoatTexture !== void 0 && i.push(t.assignTexture(a, "clearcoatMap", s.clearcoatTexture)), s.clearcoatRoughnessFactor !== void 0 && (a.clearcoatRoughness = s.clearcoatRoughnessFactor), s.clearcoatRoughnessTexture !== void 0 && i.push(t.assignTexture(a, "clearcoatRoughnessMap", s.clearcoatRoughnessTexture)), s.clearcoatNormalTexture !== void 0 && (i.push(t.assignTexture(a, "clearcoatNormalMap", s.clearcoatNormalTexture)), s.clearcoatNormalTexture.scale !== void 0)) {
|
|
683
683
|
const r = s.clearcoatNormalTexture.scale;
|
|
684
|
-
a.clearcoatNormalScale = new
|
|
684
|
+
a.clearcoatNormalScale = new pt(r, r);
|
|
685
685
|
}
|
|
686
686
|
return Promise.all(i);
|
|
687
687
|
}
|
|
688
688
|
}
|
|
689
|
-
class
|
|
689
|
+
class Ai {
|
|
690
690
|
constructor(e) {
|
|
691
691
|
this.parser = e, this.name = j.KHR_MATERIALS_DISPERSION;
|
|
692
692
|
}
|
|
@@ -701,7 +701,7 @@ class ii {
|
|
|
701
701
|
return a.dispersion = A.dispersion !== void 0 ? A.dispersion : 0, Promise.resolve();
|
|
702
702
|
}
|
|
703
703
|
}
|
|
704
|
-
class
|
|
704
|
+
class ii {
|
|
705
705
|
constructor(e) {
|
|
706
706
|
this.parser = e, this.name = j.KHR_MATERIALS_IRIDESCENCE;
|
|
707
707
|
}
|
|
@@ -716,7 +716,7 @@ class si {
|
|
|
716
716
|
return s.iridescenceFactor !== void 0 && (a.iridescence = s.iridescenceFactor), s.iridescenceTexture !== void 0 && i.push(t.assignTexture(a, "iridescenceMap", s.iridescenceTexture)), s.iridescenceIor !== void 0 && (a.iridescenceIOR = s.iridescenceIor), a.iridescenceThicknessRange === void 0 && (a.iridescenceThicknessRange = [100, 400]), s.iridescenceThicknessMinimum !== void 0 && (a.iridescenceThicknessRange[0] = s.iridescenceThicknessMinimum), s.iridescenceThicknessMaximum !== void 0 && (a.iridescenceThicknessRange[1] = s.iridescenceThicknessMaximum), s.iridescenceThicknessTexture !== void 0 && i.push(t.assignTexture(a, "iridescenceThicknessMap", s.iridescenceThicknessTexture)), Promise.all(i);
|
|
717
717
|
}
|
|
718
718
|
}
|
|
719
|
-
class
|
|
719
|
+
class si {
|
|
720
720
|
constructor(e) {
|
|
721
721
|
this.parser = e, this.name = j.KHR_MATERIALS_SHEEN;
|
|
722
722
|
}
|
|
@@ -737,7 +737,7 @@ class ri {
|
|
|
737
737
|
return s.sheenRoughnessFactor !== void 0 && (a.sheenRoughness = s.sheenRoughnessFactor), s.sheenColorTexture !== void 0 && i.push(t.assignTexture(a, "sheenColorMap", s.sheenColorTexture, re)), s.sheenRoughnessTexture !== void 0 && i.push(t.assignTexture(a, "sheenRoughnessMap", s.sheenRoughnessTexture)), Promise.all(i);
|
|
738
738
|
}
|
|
739
739
|
}
|
|
740
|
-
class
|
|
740
|
+
class ri {
|
|
741
741
|
constructor(e) {
|
|
742
742
|
this.parser = e, this.name = j.KHR_MATERIALS_TRANSMISSION;
|
|
743
743
|
}
|
|
@@ -752,7 +752,7 @@ class ni {
|
|
|
752
752
|
return s.transmissionFactor !== void 0 && (a.transmission = s.transmissionFactor), s.transmissionTexture !== void 0 && i.push(t.assignTexture(a, "transmissionMap", s.transmissionTexture)), Promise.all(i);
|
|
753
753
|
}
|
|
754
754
|
}
|
|
755
|
-
class
|
|
755
|
+
class ni {
|
|
756
756
|
constructor(e) {
|
|
757
757
|
this.parser = e, this.name = j.KHR_MATERIALS_VOLUME;
|
|
758
758
|
}
|
|
@@ -769,7 +769,7 @@ class oi {
|
|
|
769
769
|
return a.attenuationColor = new he().setRGB(r[0], r[1], r[2], K), Promise.all(i);
|
|
770
770
|
}
|
|
771
771
|
}
|
|
772
|
-
class
|
|
772
|
+
class oi {
|
|
773
773
|
constructor(e) {
|
|
774
774
|
this.parser = e, this.name = j.KHR_MATERIALS_IOR;
|
|
775
775
|
}
|
|
@@ -784,7 +784,7 @@ class ci {
|
|
|
784
784
|
return a.ior = A.ior !== void 0 ? A.ior : 1.5, Promise.resolve();
|
|
785
785
|
}
|
|
786
786
|
}
|
|
787
|
-
class
|
|
787
|
+
class ci {
|
|
788
788
|
constructor(e) {
|
|
789
789
|
this.parser = e, this.name = j.KHR_MATERIALS_SPECULAR;
|
|
790
790
|
}
|
|
@@ -801,7 +801,7 @@ class di {
|
|
|
801
801
|
return a.specularColor = new he().setRGB(r[0], r[1], r[2], K), s.specularColorTexture !== void 0 && i.push(t.assignTexture(a, "specularColorMap", s.specularColorTexture, re)), Promise.all(i);
|
|
802
802
|
}
|
|
803
803
|
}
|
|
804
|
-
class
|
|
804
|
+
class di {
|
|
805
805
|
constructor(e) {
|
|
806
806
|
this.parser = e, this.name = j.EXT_MATERIALS_BUMP;
|
|
807
807
|
}
|
|
@@ -816,7 +816,7 @@ class bi {
|
|
|
816
816
|
return a.bumpScale = s.bumpFactor !== void 0 ? s.bumpFactor : 1, s.bumpTexture !== void 0 && i.push(t.assignTexture(a, "bumpMap", s.bumpTexture)), Promise.all(i);
|
|
817
817
|
}
|
|
818
818
|
}
|
|
819
|
-
class
|
|
819
|
+
class bi {
|
|
820
820
|
constructor(e) {
|
|
821
821
|
this.parser = e, this.name = j.KHR_MATERIALS_ANISOTROPY;
|
|
822
822
|
}
|
|
@@ -831,7 +831,7 @@ class li {
|
|
|
831
831
|
return s.anisotropyStrength !== void 0 && (a.anisotropy = s.anisotropyStrength), s.anisotropyRotation !== void 0 && (a.anisotropyRotation = s.anisotropyRotation), s.anisotropyTexture !== void 0 && i.push(t.assignTexture(a, "anisotropyMap", s.anisotropyTexture)), Promise.all(i);
|
|
832
832
|
}
|
|
833
833
|
}
|
|
834
|
-
class
|
|
834
|
+
class li {
|
|
835
835
|
constructor(e) {
|
|
836
836
|
this.parser = e, this.name = j.KHR_TEXTURE_BASISU;
|
|
837
837
|
}
|
|
@@ -846,7 +846,7 @@ class hi {
|
|
|
846
846
|
return a.loadTextureImage(e, i.source, s);
|
|
847
847
|
}
|
|
848
848
|
}
|
|
849
|
-
class
|
|
849
|
+
class hi {
|
|
850
850
|
constructor(e) {
|
|
851
851
|
this.parser = e, this.name = j.EXT_TEXTURE_WEBP, this.isSupported = null;
|
|
852
852
|
}
|
|
@@ -874,7 +874,7 @@ class gi {
|
|
|
874
874
|
})), this.isSupported;
|
|
875
875
|
}
|
|
876
876
|
}
|
|
877
|
-
class
|
|
877
|
+
class gi {
|
|
878
878
|
constructor(e) {
|
|
879
879
|
this.parser = e, this.name = j.EXT_TEXTURE_AVIF, this.isSupported = null;
|
|
880
880
|
}
|
|
@@ -902,7 +902,7 @@ class fi {
|
|
|
902
902
|
})), this.isSupported;
|
|
903
903
|
}
|
|
904
904
|
}
|
|
905
|
-
class
|
|
905
|
+
class fi {
|
|
906
906
|
constructor(e) {
|
|
907
907
|
this.name = j.EXT_MESHOPT_COMPRESSION, this.parser = e;
|
|
908
908
|
}
|
|
@@ -915,12 +915,12 @@ class Ii {
|
|
|
915
915
|
return null;
|
|
916
916
|
}
|
|
917
917
|
return i.then(function(r) {
|
|
918
|
-
const c = A.byteOffset || 0, n = A.byteLength || 0,
|
|
919
|
-
return s.decodeGltfBufferAsync ? s.decodeGltfBufferAsync(
|
|
918
|
+
const c = A.byteOffset || 0, n = A.byteLength || 0, b = A.count, d = A.byteStride, l = new Uint8Array(r, c, n);
|
|
919
|
+
return s.decodeGltfBufferAsync ? s.decodeGltfBufferAsync(b, d, l, A.mode, A.filter).then(function(g) {
|
|
920
920
|
return g.buffer;
|
|
921
921
|
}) : s.ready.then(function() {
|
|
922
|
-
const g = new ArrayBuffer(
|
|
923
|
-
return s.decodeGltfBuffer(new Uint8Array(g),
|
|
922
|
+
const g = new ArrayBuffer(b * d);
|
|
923
|
+
return s.decodeGltfBuffer(new Uint8Array(g), b, d, l, A.mode, A.filter), g;
|
|
924
924
|
});
|
|
925
925
|
});
|
|
926
926
|
}
|
|
@@ -939,22 +939,22 @@ class ui {
|
|
|
939
939
|
const i = t.extensions[this.name].attributes, s = [], r = {};
|
|
940
940
|
for (const c in i) s.push(this.parser.getDependency("accessor", i[c]).then((n) => (r[c] = n, r[c])));
|
|
941
941
|
return s.length < 1 ? null : (s.push(this.parser.createNodeMesh(e)), Promise.all(s).then((c) => {
|
|
942
|
-
const n = c.pop(),
|
|
943
|
-
for (const g of
|
|
944
|
-
const h = new
|
|
945
|
-
for (let
|
|
946
|
-
for (const
|
|
947
|
-
const
|
|
948
|
-
|
|
949
|
-
} else
|
|
950
|
-
|
|
942
|
+
const n = c.pop(), b = n.isGroup ? n.children : [n], d = c[0].count, l = [];
|
|
943
|
+
for (const g of b) {
|
|
944
|
+
const h = new je(), f = new S(), I = new Ct(), u = new S(1, 1, 1), p = new AA(g.geometry, g.material, d);
|
|
945
|
+
for (let B = 0; B < d; B++) r.TRANSLATION && f.fromBufferAttribute(r.TRANSLATION, B), r.ROTATION && I.fromBufferAttribute(r.ROTATION, B), r.SCALE && u.fromBufferAttribute(r.SCALE, B), p.setMatrixAt(B, h.compose(f, I, u));
|
|
946
|
+
for (const B in r) if (B === "_COLOR_0") {
|
|
947
|
+
const C = r[B];
|
|
948
|
+
p.instanceColor = new ya(C.array, C.itemSize, C.normalized);
|
|
949
|
+
} else B !== "TRANSLATION" && B !== "ROTATION" && B !== "SCALE" && g.geometry.setAttribute(B, r[B]);
|
|
950
|
+
Bt.prototype.copy.call(p, g), this.parser.assignFinalMaterial(p), l.push(p);
|
|
951
951
|
}
|
|
952
952
|
return n.isGroup ? (n.clear(), n.add(...l), n) : l[0];
|
|
953
953
|
}));
|
|
954
954
|
}
|
|
955
955
|
}
|
|
956
|
-
const jt = "glTF",
|
|
957
|
-
class
|
|
956
|
+
const jt = "glTF", Ii = 1313821514, pi = 5130562;
|
|
957
|
+
class Ci {
|
|
958
958
|
constructor(e) {
|
|
959
959
|
this.name = j.KHR_BINARY_GLTF, this.content = null, this.body = null;
|
|
960
960
|
const a = new DataView(e, 0, 12), t = new TextDecoder();
|
|
@@ -966,10 +966,10 @@ class pi {
|
|
|
966
966
|
const r = i.getUint32(s, !0);
|
|
967
967
|
s += 4;
|
|
968
968
|
const c = i.getUint32(s, !0);
|
|
969
|
-
if (s += 4, c ===
|
|
969
|
+
if (s += 4, c === Ii) {
|
|
970
970
|
const n = new Uint8Array(e, 12 + s, r);
|
|
971
971
|
this.content = t.decode(n);
|
|
972
|
-
} else if (c ===
|
|
972
|
+
} else if (c === pi) {
|
|
973
973
|
const n = 12 + s;
|
|
974
974
|
this.body = e.slice(n, n + r);
|
|
975
975
|
}
|
|
@@ -978,32 +978,32 @@ class pi {
|
|
|
978
978
|
if (this.content === null) throw new Error("THREE.GLTFLoader: JSON content not found.");
|
|
979
979
|
}
|
|
980
980
|
}
|
|
981
|
-
class
|
|
981
|
+
class Bi {
|
|
982
982
|
constructor(e, a) {
|
|
983
983
|
if (!a) throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");
|
|
984
984
|
this.name = j.KHR_DRACO_MESH_COMPRESSION, this.json = e, this.dracoLoader = a, this.dracoLoader.preload();
|
|
985
985
|
}
|
|
986
986
|
decodePrimitive(e, a) {
|
|
987
987
|
const t = this.json, A = this.dracoLoader, i = e.extensions[this.name].bufferView, s = e.extensions[this.name].attributes, r = {}, c = {}, n = {};
|
|
988
|
-
for (const
|
|
989
|
-
const
|
|
990
|
-
r[
|
|
988
|
+
for (const b in s) {
|
|
989
|
+
const d = Da[b] || b.toLowerCase();
|
|
990
|
+
r[d] = s[b];
|
|
991
991
|
}
|
|
992
|
-
for (const
|
|
993
|
-
const
|
|
994
|
-
if (s[
|
|
995
|
-
const l = t.accessors[e.attributes[
|
|
996
|
-
n[
|
|
992
|
+
for (const b in e.attributes) {
|
|
993
|
+
const d = Da[b] || b.toLowerCase();
|
|
994
|
+
if (s[b] !== void 0) {
|
|
995
|
+
const l = t.accessors[e.attributes[b]], g = ke[l.componentType];
|
|
996
|
+
n[d] = g.name, c[d] = l.normalized === !0;
|
|
997
997
|
}
|
|
998
998
|
}
|
|
999
|
-
return a.getDependency("bufferView", i).then(function(
|
|
1000
|
-
return new Promise(function(
|
|
1001
|
-
A.decodeDracoFile(
|
|
999
|
+
return a.getDependency("bufferView", i).then(function(b) {
|
|
1000
|
+
return new Promise(function(d, l) {
|
|
1001
|
+
A.decodeDracoFile(b, function(g) {
|
|
1002
1002
|
for (const h in g.attributes) {
|
|
1003
1003
|
const f = g.attributes[h], I = c[h];
|
|
1004
1004
|
I !== void 0 && (f.normalized = I);
|
|
1005
1005
|
}
|
|
1006
|
-
|
|
1006
|
+
d(g);
|
|
1007
1007
|
}, r, n, K, l);
|
|
1008
1008
|
});
|
|
1009
1009
|
});
|
|
@@ -1017,7 +1017,7 @@ class mi {
|
|
|
1017
1017
|
return (a.texCoord !== void 0 && a.texCoord !== e.channel || a.offset !== void 0 || a.rotation !== void 0 || a.scale !== void 0) && (e = e.clone(), a.texCoord !== void 0 && (e.channel = a.texCoord), a.offset !== void 0 && e.offset.fromArray(a.offset), a.rotation !== void 0 && (e.rotation = a.rotation), a.scale !== void 0 && e.repeat.fromArray(a.scale), e.needsUpdate = !0), e;
|
|
1018
1018
|
}
|
|
1019
1019
|
}
|
|
1020
|
-
class
|
|
1020
|
+
class Ei {
|
|
1021
1021
|
constructor() {
|
|
1022
1022
|
this.name = j.KHR_MESH_QUANTIZATION;
|
|
1023
1023
|
}
|
|
@@ -1032,29 +1032,29 @@ class Mt extends jA {
|
|
|
1032
1032
|
return a;
|
|
1033
1033
|
}
|
|
1034
1034
|
interpolate_(e, a, t, A) {
|
|
1035
|
-
const i = this.resultBuffer, s = this.sampleValues, r = this.valueSize, c = 2 * r, n = 3 * r,
|
|
1036
|
-
for (let
|
|
1037
|
-
const
|
|
1038
|
-
i[
|
|
1035
|
+
const i = this.resultBuffer, s = this.sampleValues, r = this.valueSize, c = 2 * r, n = 3 * r, b = A - a, d = (t - a) / b, l = d * d, g = l * d, h = e * n, f = h - n, I = -2 * g + 3 * l, u = g - l, p = 1 - I, B = u - l + d;
|
|
1036
|
+
for (let C = 0; C !== r; C++) {
|
|
1037
|
+
const w = s[f + C + r], x = s[f + C + c] * b, y = s[h + C + r], m = s[h + C] * b;
|
|
1038
|
+
i[C] = p * w + B * x + I * y + u * m;
|
|
1039
1039
|
}
|
|
1040
1040
|
return i;
|
|
1041
1041
|
}
|
|
1042
1042
|
}
|
|
1043
|
-
const
|
|
1044
|
-
class
|
|
1043
|
+
const Qi = new Ct();
|
|
1044
|
+
class yi extends Mt {
|
|
1045
1045
|
interpolate_(e, a, t, A) {
|
|
1046
1046
|
const i = super.interpolate_(e, a, t, A);
|
|
1047
|
-
return
|
|
1047
|
+
return Qi.fromArray(i).normalize().toArray(i), i;
|
|
1048
1048
|
}
|
|
1049
1049
|
}
|
|
1050
|
-
const H = { FLOAT: 5126, FLOAT_MAT3: 35675, FLOAT_MAT4: 35676, FLOAT_VEC2: 35664, FLOAT_VEC3: 35665, FLOAT_VEC4: 35666, LINEAR: 9729, REPEAT: 10497, SAMPLER_2D: 35678, POINTS: 0, LINES: 1, LINE_LOOP: 2, LINE_STRIP: 3, TRIANGLES: 4, TRIANGLE_STRIP: 5, TRIANGLE_FAN: 6, UNSIGNED_BYTE: 5121, UNSIGNED_SHORT: 5123 },
|
|
1050
|
+
const H = { FLOAT: 5126, FLOAT_MAT3: 35675, FLOAT_MAT4: 35676, FLOAT_VEC2: 35664, FLOAT_VEC3: 35665, FLOAT_VEC4: 35666, LINEAR: 9729, REPEAT: 10497, SAMPLER_2D: 35678, POINTS: 0, LINES: 1, LINE_LOOP: 2, LINE_STRIP: 3, TRIANGLES: 4, TRIANGLE_STRIP: 5, TRIANGLE_FAN: 6, UNSIGNED_BYTE: 5121, UNSIGNED_SHORT: 5123 }, ke = { 5120: Int8Array, 5121: Uint8Array, 5122: Int16Array, 5123: Uint16Array, 5125: Uint32Array, 5126: Float32Array }, $a = { 9728: M, 9729: Ce, 9984: EA, 9985: QA, 9986: yA, 9987: $e }, et = { 33071: wA, 33648: xA, 10497: wa }, ra = { SCALAR: 1, VEC2: 2, VEC3: 3, VEC4: 4, MAT2: 4, MAT3: 9, MAT4: 16 }, Da = { POSITION: "position", NORMAL: "normal", TANGENT: "tangent", TEXCOORD_0: "uv", TEXCOORD_1: "uv1", TEXCOORD_2: "uv2", TEXCOORD_3: "uv3", COLOR_0: "color", WEIGHTS_0: "skinWeight", JOINTS_0: "skinIndex" }, oe = { scale: "scale", translation: "position", rotation: "quaternion", weights: "morphTargetInfluences" }, wi = { CUBICSPLINE: void 0, LINEAR: Et, STEP: kA }, xi = "OPAQUE", ki = "MASK", Di = "BLEND";
|
|
1051
1051
|
function fe(o, e, a) {
|
|
1052
1052
|
for (const t in a.extensions) o[t] === void 0 && (e.userData.gltfExtensions = e.userData.gltfExtensions || {}, e.userData.gltfExtensions[t] = a.extensions[t]);
|
|
1053
1053
|
}
|
|
1054
1054
|
function ie(o, e) {
|
|
1055
1055
|
e.extras !== void 0 && (typeof e.extras == "object" ? Object.assign(o.userData, e.extras) : console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, " + e.extras));
|
|
1056
1056
|
}
|
|
1057
|
-
function
|
|
1057
|
+
function ji(o, e) {
|
|
1058
1058
|
if (o.updateMorphTargets(), e.weights !== void 0) for (let a = 0, t = e.weights.length; a < t; a++) o.morphTargetInfluences[a] = e.weights[a];
|
|
1059
1059
|
if (e.extras && Array.isArray(e.extras.targetNames)) {
|
|
1060
1060
|
const a = e.extras.targetNames;
|
|
@@ -1064,19 +1064,19 @@ function Mi(o, e) {
|
|
|
1064
1064
|
} else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.");
|
|
1065
1065
|
}
|
|
1066
1066
|
}
|
|
1067
|
-
function
|
|
1067
|
+
function Mi(o) {
|
|
1068
1068
|
let e;
|
|
1069
1069
|
const a = o.extensions && o.extensions[j.KHR_DRACO_MESH_COMPRESSION];
|
|
1070
|
-
if (e = a ? "draco:" + a.bufferView + ":" + a.indices + ":" +
|
|
1070
|
+
if (e = a ? "draco:" + a.bufferView + ":" + a.indices + ":" + na(a.attributes) : o.indices + ":" + na(o.attributes) + ":" + o.mode, o.targets !== void 0) for (let t = 0, A = o.targets.length; t < A; t++) e += ":" + na(o.targets[t]);
|
|
1071
1071
|
return e;
|
|
1072
1072
|
}
|
|
1073
|
-
function
|
|
1073
|
+
function na(o) {
|
|
1074
1074
|
let e = "";
|
|
1075
1075
|
const a = Object.keys(o).sort();
|
|
1076
1076
|
for (let t = 0, A = a.length; t < A; t++) e += a[t] + ":" + o[a[t]] + ";";
|
|
1077
1077
|
return e;
|
|
1078
1078
|
}
|
|
1079
|
-
function
|
|
1079
|
+
function ja(o) {
|
|
1080
1080
|
switch (o) {
|
|
1081
1081
|
case Int8Array:
|
|
1082
1082
|
return 1 / 127;
|
|
@@ -1090,10 +1090,10 @@ function Da(o) {
|
|
|
1090
1090
|
throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.");
|
|
1091
1091
|
}
|
|
1092
1092
|
}
|
|
1093
|
-
const
|
|
1094
|
-
class
|
|
1093
|
+
const Ri = new je();
|
|
1094
|
+
class Si {
|
|
1095
1095
|
constructor(e = {}, a = {}) {
|
|
1096
|
-
this.json = e, this.extensions = {}, this.plugins = {}, this.options = a, this.cache = new
|
|
1096
|
+
this.json = e, this.extensions = {}, this.plugins = {}, this.options = a, this.cache = new ZA(), this.associations = /* @__PURE__ */ new Map(), this.primitiveCache = {}, this.nodeCache = {}, this.meshCache = { refs: {}, uses: {} }, this.cameraCache = { refs: {}, uses: {} }, this.lightCache = { refs: {}, uses: {} }, this.sourceCache = {}, this.textureCache = {}, this.nodeNamesUsed = {};
|
|
1097
1097
|
let t = !1, A = -1, i = !1, s = -1;
|
|
1098
1098
|
if (typeof navigator < "u") {
|
|
1099
1099
|
const r = navigator.userAgent;
|
|
@@ -1146,7 +1146,7 @@ class Fi {
|
|
|
1146
1146
|
const A = t.clone(), i = (s, r) => {
|
|
1147
1147
|
const c = this.associations.get(s);
|
|
1148
1148
|
c != null && this.associations.set(r, c);
|
|
1149
|
-
for (const [n,
|
|
1149
|
+
for (const [n, b] of s.children.entries()) i(b, r.children[n]);
|
|
1150
1150
|
};
|
|
1151
1151
|
return i(t, A), A.name += "_instance_" + e.uses[a]++, A;
|
|
1152
1152
|
}
|
|
@@ -1244,7 +1244,7 @@ class Fi {
|
|
|
1244
1244
|
if (a.uri === void 0 && e === 0) return Promise.resolve(this.extensions[j.KHR_BINARY_GLTF].body);
|
|
1245
1245
|
const A = this.options;
|
|
1246
1246
|
return new Promise(function(i, s) {
|
|
1247
|
-
t.load(
|
|
1247
|
+
t.load(Pe.resolveURL(a.uri, A.path), i, void 0, function() {
|
|
1248
1248
|
s(new Error('THREE.GLTFLoader: Failed to load buffer "' + a.uri + '".'));
|
|
1249
1249
|
});
|
|
1250
1250
|
});
|
|
@@ -1259,24 +1259,24 @@ class Fi {
|
|
|
1259
1259
|
loadAccessor(e) {
|
|
1260
1260
|
const a = this, t = this.json, A = this.json.accessors[e];
|
|
1261
1261
|
if (A.bufferView === void 0 && A.sparse === void 0) {
|
|
1262
|
-
const s =
|
|
1262
|
+
const s = ra[A.type], r = ke[A.componentType], c = A.normalized === !0, n = new r(A.count * s);
|
|
1263
1263
|
return Promise.resolve(new le(n, s, c));
|
|
1264
1264
|
}
|
|
1265
1265
|
const i = [];
|
|
1266
1266
|
return A.bufferView !== void 0 ? i.push(this.getDependency("bufferView", A.bufferView)) : i.push(null), A.sparse !== void 0 && (i.push(this.getDependency("bufferView", A.sparse.indices.bufferView)), i.push(this.getDependency("bufferView", A.sparse.values.bufferView))), Promise.all(i).then(function(s) {
|
|
1267
|
-
const r = s[0], c =
|
|
1267
|
+
const r = s[0], c = ra[A.type], n = ke[A.componentType], b = n.BYTES_PER_ELEMENT, d = b * c, l = A.byteOffset || 0, g = A.bufferView !== void 0 ? t.bufferViews[A.bufferView].byteStride : void 0, h = A.normalized === !0;
|
|
1268
1268
|
let f, I;
|
|
1269
|
-
if (g && g !==
|
|
1270
|
-
const u = Math.floor(l / g),
|
|
1271
|
-
let
|
|
1272
|
-
|
|
1269
|
+
if (g && g !== d) {
|
|
1270
|
+
const u = Math.floor(l / g), p = "InterleavedBuffer:" + A.bufferView + ":" + A.componentType + ":" + u + ":" + A.count;
|
|
1271
|
+
let B = a.cache.get(p);
|
|
1272
|
+
B || (f = new n(r, u * g, A.count * g / b), B = new rA(f, g / b), a.cache.add(p, B)), I = new nA(B, c, l % g / b, h);
|
|
1273
1273
|
} else f = r === null ? new n(A.count * c) : new n(r, l, A.count * c), I = new le(f, c, h);
|
|
1274
1274
|
if (A.sparse !== void 0) {
|
|
1275
|
-
const u =
|
|
1275
|
+
const u = ra.SCALAR, p = ke[A.sparse.indices.componentType], B = A.sparse.indices.byteOffset || 0, C = A.sparse.values.byteOffset || 0, w = new p(s[1], B, A.sparse.count * u), x = new n(s[2], C, A.sparse.count * c);
|
|
1276
1276
|
r !== null && (I = new le(I.array.slice(), I.itemSize, I.normalized)), I.normalized = !1;
|
|
1277
|
-
for (let
|
|
1278
|
-
const Q = y
|
|
1279
|
-
if (I.setX(Q, x[
|
|
1277
|
+
for (let y = 0, m = w.length; y < m; y++) {
|
|
1278
|
+
const Q = w[y];
|
|
1279
|
+
if (I.setX(Q, x[y * c]), c >= 2 && I.setY(Q, x[y * c + 1]), c >= 3 && I.setZ(Q, x[y * c + 2]), c >= 4 && I.setW(Q, x[y * c + 3]), c >= 5) throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.");
|
|
1280
1280
|
}
|
|
1281
1281
|
I.normalized = h;
|
|
1282
1282
|
}
|
|
@@ -1295,10 +1295,10 @@ class Fi {
|
|
|
1295
1295
|
loadTextureImage(e, a, t) {
|
|
1296
1296
|
const A = this, i = this.json, s = i.textures[e], r = i.images[a], c = (r.uri || r.bufferView) + ":" + s.sampler;
|
|
1297
1297
|
if (this.textureCache[c]) return this.textureCache[c];
|
|
1298
|
-
const n = this.loadImageSource(a, t).then(function(
|
|
1299
|
-
|
|
1300
|
-
const
|
|
1301
|
-
return
|
|
1298
|
+
const n = this.loadImageSource(a, t).then(function(b) {
|
|
1299
|
+
b.flipY = !1, b.name = s.name || r.name || "", b.name === "" && typeof r.uri == "string" && r.uri.startsWith("data:image/") === !1 && (b.name = r.uri);
|
|
1300
|
+
const d = (i.samplers || {})[s.sampler] || {};
|
|
1301
|
+
return b.magFilter = $a[d.magFilter] || Ce, b.minFilter = $a[d.minFilter] || $e, b.wrapS = et[d.wrapS] || wa, b.wrapT = et[d.wrapT] || wa, b.generateMipmaps = !b.isCompressedTexture && b.minFilter !== M && b.minFilter !== Ce, A.associations.set(b, { textures: e }), b;
|
|
1302
1302
|
}).catch(function() {
|
|
1303
1303
|
return null;
|
|
1304
1304
|
});
|
|
@@ -1306,30 +1306,30 @@ class Fi {
|
|
|
1306
1306
|
}
|
|
1307
1307
|
loadImageSource(e, a) {
|
|
1308
1308
|
const t = this, A = this.json, i = this.options;
|
|
1309
|
-
if (this.sourceCache[e] !== void 0) return this.sourceCache[e].then((
|
|
1309
|
+
if (this.sourceCache[e] !== void 0) return this.sourceCache[e].then((d) => d.clone());
|
|
1310
1310
|
const s = A.images[e], r = self.URL || self.webkitURL;
|
|
1311
1311
|
let c = s.uri || "", n = !1;
|
|
1312
|
-
if (s.bufferView !== void 0) c = t.getDependency("bufferView", s.bufferView).then(function(
|
|
1312
|
+
if (s.bufferView !== void 0) c = t.getDependency("bufferView", s.bufferView).then(function(d) {
|
|
1313
1313
|
n = !0;
|
|
1314
|
-
const l = new Blob([
|
|
1314
|
+
const l = new Blob([d], { type: s.mimeType });
|
|
1315
1315
|
return c = r.createObjectURL(l), c;
|
|
1316
1316
|
});
|
|
1317
1317
|
else if (s.uri === void 0) throw new Error("THREE.GLTFLoader: Image " + e + " is missing URI and bufferView");
|
|
1318
|
-
const
|
|
1318
|
+
const b = Promise.resolve(c).then(function(d) {
|
|
1319
1319
|
return new Promise(function(l, g) {
|
|
1320
1320
|
let h = l;
|
|
1321
1321
|
a.isImageBitmapLoader === !0 && (h = function(f) {
|
|
1322
1322
|
const I = new Na(f);
|
|
1323
1323
|
I.needsUpdate = !0, l(I);
|
|
1324
|
-
}), a.load(
|
|
1324
|
+
}), a.load(Pe.resolveURL(d, i.path), h, void 0, g);
|
|
1325
1325
|
});
|
|
1326
|
-
}).then(function(
|
|
1326
|
+
}).then(function(d) {
|
|
1327
1327
|
var l;
|
|
1328
|
-
return n === !0 && r.revokeObjectURL(c), ie(
|
|
1329
|
-
}).catch(function(
|
|
1330
|
-
throw console.error("THREE.GLTFLoader: Couldn't load texture", c),
|
|
1328
|
+
return n === !0 && r.revokeObjectURL(c), ie(d, s), d.userData.mimeType = s.mimeType || ((l = s.uri).search(/\.jpe?g($|\?)/i) > 0 || l.search(/^data\:image\/jpeg/) === 0 ? "image/jpeg" : l.search(/\.webp($|\?)/i) > 0 || l.search(/^data\:image\/webp/) === 0 ? "image/webp" : l.search(/\.ktx2($|\?)/i) > 0 || l.search(/^data\:image\/ktx2/) === 0 ? "image/ktx2" : "image/png"), d;
|
|
1329
|
+
}).catch(function(d) {
|
|
1330
|
+
throw console.error("THREE.GLTFLoader: Couldn't load texture", c), d;
|
|
1331
1331
|
});
|
|
1332
|
-
return this.sourceCache[e] =
|
|
1332
|
+
return this.sourceCache[e] = b, b;
|
|
1333
1333
|
}
|
|
1334
1334
|
assignTexture(e, a, t, A) {
|
|
1335
1335
|
const i = this;
|
|
@@ -1352,11 +1352,11 @@ class Fi {
|
|
|
1352
1352
|
if (e.isPoints) {
|
|
1353
1353
|
const r = "PointsMaterial:" + t.uuid;
|
|
1354
1354
|
let c = this.cache.get(r);
|
|
1355
|
-
c || (c = new oA(),
|
|
1355
|
+
c || (c = new oA(), aa.prototype.copy.call(c, t), c.color.copy(t.color), c.map = t.map, c.sizeAttenuation = !1, this.cache.add(r, c)), t = c;
|
|
1356
1356
|
} else if (e.isLine) {
|
|
1357
1357
|
const r = "LineBasicMaterial:" + t.uuid;
|
|
1358
1358
|
let c = this.cache.get(r);
|
|
1359
|
-
c || (c = new cA(),
|
|
1359
|
+
c || (c = new cA(), aa.prototype.copy.call(c, t), c.color.copy(t.color), c.map = t.map, this.cache.add(r, c)), t = c;
|
|
1360
1360
|
}
|
|
1361
1361
|
if (A || i || s) {
|
|
1362
1362
|
let r = "ClonedMaterial:" + t.uuid + ":";
|
|
@@ -1374,33 +1374,33 @@ class Fi {
|
|
|
1374
1374
|
let s;
|
|
1375
1375
|
const r = {}, c = [];
|
|
1376
1376
|
if ((i.extensions || {})[j.KHR_MATERIALS_UNLIT]) {
|
|
1377
|
-
const
|
|
1378
|
-
s =
|
|
1377
|
+
const b = A[j.KHR_MATERIALS_UNLIT];
|
|
1378
|
+
s = b.getMaterialType(), c.push(b.extendParams(r, i, a));
|
|
1379
1379
|
} else {
|
|
1380
|
-
const
|
|
1381
|
-
if (r.color = new he(1, 1, 1), r.opacity = 1, Array.isArray(
|
|
1382
|
-
const
|
|
1383
|
-
r.color.setRGB(
|
|
1380
|
+
const b = i.pbrMetallicRoughness || {};
|
|
1381
|
+
if (r.color = new he(1, 1, 1), r.opacity = 1, Array.isArray(b.baseColorFactor)) {
|
|
1382
|
+
const d = b.baseColorFactor;
|
|
1383
|
+
r.color.setRGB(d[0], d[1], d[2], K), r.opacity = d[3];
|
|
1384
1384
|
}
|
|
1385
|
-
|
|
1386
|
-
return
|
|
1387
|
-
}), c.push(Promise.all(this._invokeAll(function(
|
|
1388
|
-
return
|
|
1385
|
+
b.baseColorTexture !== void 0 && c.push(a.assignTexture(r, "map", b.baseColorTexture, re)), r.metalness = b.metallicFactor !== void 0 ? b.metallicFactor : 1, r.roughness = b.roughnessFactor !== void 0 ? b.roughnessFactor : 1, b.metallicRoughnessTexture !== void 0 && (c.push(a.assignTexture(r, "metalnessMap", b.metallicRoughnessTexture)), c.push(a.assignTexture(r, "roughnessMap", b.metallicRoughnessTexture))), s = this._invokeOne(function(d) {
|
|
1386
|
+
return d.getMaterialType && d.getMaterialType(e);
|
|
1387
|
+
}), c.push(Promise.all(this._invokeAll(function(d) {
|
|
1388
|
+
return d.extendMaterialParams && d.extendMaterialParams(e, r);
|
|
1389
1389
|
})));
|
|
1390
1390
|
}
|
|
1391
1391
|
i.doubleSided === !0 && (r.side = dA);
|
|
1392
|
-
const n = i.alphaMode ||
|
|
1393
|
-
if (n ===
|
|
1394
|
-
const
|
|
1395
|
-
r.normalScale.set(
|
|
1392
|
+
const n = i.alphaMode || xi;
|
|
1393
|
+
if (n === Di ? (r.transparent = !0, r.depthWrite = !1) : (r.transparent = !1, n === ki && (r.alphaTest = i.alphaCutoff !== void 0 ? i.alphaCutoff : 0.5)), i.normalTexture !== void 0 && s !== Le && (c.push(a.assignTexture(r, "normalMap", i.normalTexture)), r.normalScale = new pt(1, 1), i.normalTexture.scale !== void 0)) {
|
|
1394
|
+
const b = i.normalTexture.scale;
|
|
1395
|
+
r.normalScale.set(b, b);
|
|
1396
1396
|
}
|
|
1397
|
-
if (i.occlusionTexture !== void 0 && s !==
|
|
1398
|
-
const
|
|
1399
|
-
r.emissive = new he().setRGB(
|
|
1397
|
+
if (i.occlusionTexture !== void 0 && s !== Le && (c.push(a.assignTexture(r, "aoMap", i.occlusionTexture)), i.occlusionTexture.strength !== void 0 && (r.aoMapIntensity = i.occlusionTexture.strength)), i.emissiveFactor !== void 0 && s !== Le) {
|
|
1398
|
+
const b = i.emissiveFactor;
|
|
1399
|
+
r.emissive = new he().setRGB(b[0], b[1], b[2], K);
|
|
1400
1400
|
}
|
|
1401
|
-
return i.emissiveTexture !== void 0 && s !==
|
|
1402
|
-
const
|
|
1403
|
-
return i.name && (
|
|
1401
|
+
return i.emissiveTexture !== void 0 && s !== Le && c.push(a.assignTexture(r, "emissiveMap", i.emissiveTexture, re)), Promise.all(c).then(function() {
|
|
1402
|
+
const b = new s(r);
|
|
1403
|
+
return i.name && (b.name = i.name), ie(b, i), a.associations.set(b, { materials: e }), i.extensions && fe(A, b, i), b;
|
|
1404
1404
|
});
|
|
1405
1405
|
}
|
|
1406
1406
|
createUniqueName(e) {
|
|
@@ -1416,41 +1416,41 @@ class Fi {
|
|
|
1416
1416
|
}
|
|
1417
1417
|
const s = [];
|
|
1418
1418
|
for (let r = 0, c = e.length; r < c; r++) {
|
|
1419
|
-
const n = e[r],
|
|
1420
|
-
if (
|
|
1419
|
+
const n = e[r], b = Mi(n), d = A[b];
|
|
1420
|
+
if (d) s.push(d.promise);
|
|
1421
1421
|
else {
|
|
1422
1422
|
let l;
|
|
1423
|
-
l = n.extensions && n.extensions[j.KHR_DRACO_MESH_COMPRESSION] ? i(n) : at(new
|
|
1423
|
+
l = n.extensions && n.extensions[j.KHR_DRACO_MESH_COMPRESSION] ? i(n) : at(new va(), n, a), A[b] = { primitive: n, promise: l }, s.push(l);
|
|
1424
1424
|
}
|
|
1425
1425
|
}
|
|
1426
1426
|
return Promise.all(s);
|
|
1427
1427
|
}
|
|
1428
1428
|
loadMesh(e) {
|
|
1429
1429
|
const a = this, t = this.json, A = this.extensions, i = t.meshes[e], s = i.primitives, r = [];
|
|
1430
|
-
for (let n = 0,
|
|
1431
|
-
const
|
|
1432
|
-
r.push(
|
|
1430
|
+
for (let n = 0, b = s.length; n < b; n++) {
|
|
1431
|
+
const d = s[n].material === void 0 ? ((c = this.cache).DefaultMaterial === void 0 && (c.DefaultMaterial = new Ua({ color: 16777215, emissive: 0, metalness: 1, roughness: 1, transparent: !1, depthTest: !0, side: Ze })), c.DefaultMaterial) : this.getDependency("material", s[n].material);
|
|
1432
|
+
r.push(d);
|
|
1433
1433
|
}
|
|
1434
1434
|
var c;
|
|
1435
1435
|
return r.push(a.loadGeometries(s)), Promise.all(r).then(function(n) {
|
|
1436
|
-
const
|
|
1437
|
-
for (let h = 0, f =
|
|
1438
|
-
const I =
|
|
1439
|
-
let
|
|
1440
|
-
const
|
|
1441
|
-
if (u.mode === H.TRIANGLES || u.mode === H.TRIANGLE_STRIP || u.mode === H.TRIANGLE_FAN || u.mode === void 0)
|
|
1442
|
-
else if (u.mode === H.LINES)
|
|
1443
|
-
else if (u.mode === H.LINE_STRIP)
|
|
1444
|
-
else if (u.mode === H.LINE_LOOP)
|
|
1436
|
+
const b = n.slice(0, n.length - 1), d = n[n.length - 1], l = [];
|
|
1437
|
+
for (let h = 0, f = d.length; h < f; h++) {
|
|
1438
|
+
const I = d[h], u = s[h];
|
|
1439
|
+
let p;
|
|
1440
|
+
const B = b[h];
|
|
1441
|
+
if (u.mode === H.TRIANGLES || u.mode === H.TRIANGLE_STRIP || u.mode === H.TRIANGLE_FAN || u.mode === void 0) p = i.isSkinnedMesh === !0 ? new lA(I, B) : new xa(I, B), p.isSkinnedMesh === !0 && p.normalizeSkinWeights(), u.mode === H.TRIANGLE_STRIP ? p.geometry = Za(p.geometry, It) : u.mode === H.TRIANGLE_FAN && (p.geometry = Za(p.geometry, Qa));
|
|
1442
|
+
else if (u.mode === H.LINES) p = new hA(I, B);
|
|
1443
|
+
else if (u.mode === H.LINE_STRIP) p = new gA(I, B);
|
|
1444
|
+
else if (u.mode === H.LINE_LOOP) p = new fA(I, B);
|
|
1445
1445
|
else {
|
|
1446
1446
|
if (u.mode !== H.POINTS) throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + u.mode);
|
|
1447
|
-
|
|
1447
|
+
p = new uA(I, B);
|
|
1448
1448
|
}
|
|
1449
|
-
Object.keys(
|
|
1449
|
+
Object.keys(p.geometry.morphAttributes).length > 0 && ji(p, i), p.name = a.createUniqueName(i.name || "mesh_" + e), ie(p, i), u.extensions && fe(A, p, u), a.assignFinalMaterial(p), l.push(p);
|
|
1450
1450
|
}
|
|
1451
1451
|
for (let h = 0, f = l.length; h < f; h++) a.associations.set(l[h], { meshes: e, primitives: h });
|
|
1452
1452
|
if (l.length === 1) return i.extensions && fe(A, l[0], i), l[0];
|
|
1453
|
-
const g = new
|
|
1453
|
+
const g = new ta();
|
|
1454
1454
|
i.extensions && fe(A, g, i), a.associations.set(g, { meshes: e });
|
|
1455
1455
|
for (let h = 0, f = l.length; h < f; h++) g.add(l[h]);
|
|
1456
1456
|
return g;
|
|
@@ -1459,7 +1459,7 @@ class Fi {
|
|
|
1459
1459
|
loadCamera(e) {
|
|
1460
1460
|
let a;
|
|
1461
1461
|
const t = this.json.cameras[e], A = t[t.type];
|
|
1462
|
-
if (A) return t.type === "perspective" ? a = new
|
|
1462
|
+
if (A) return t.type === "perspective" ? a = new IA(pA.radToDeg(A.yfov), A.aspectRatio || 1, A.znear || 1, A.zfar || 2e6) : t.type === "orthographic" && (a = new mt(-A.xmag, A.xmag, A.ymag, -A.ymag, A.znear, A.zfar)), t.name && (a.name = this.createUniqueName(t.name)), ie(a, t), Promise.resolve(a);
|
|
1463
1463
|
console.warn("THREE.GLTFLoader: Missing camera parameters.");
|
|
1464
1464
|
}
|
|
1465
1465
|
loadSkin(e) {
|
|
@@ -1467,33 +1467,33 @@ class Fi {
|
|
|
1467
1467
|
for (let A = 0, i = a.joints.length; A < i; A++) t.push(this._loadNodeShallow(a.joints[A]));
|
|
1468
1468
|
return a.inverseBindMatrices !== void 0 ? t.push(this.getDependency("accessor", a.inverseBindMatrices)) : t.push(null), Promise.all(t).then(function(A) {
|
|
1469
1469
|
const i = A.pop(), s = A, r = [], c = [];
|
|
1470
|
-
for (let n = 0,
|
|
1471
|
-
const
|
|
1472
|
-
if (
|
|
1473
|
-
r.push(
|
|
1474
|
-
const l = new
|
|
1470
|
+
for (let n = 0, b = s.length; n < b; n++) {
|
|
1471
|
+
const d = s[n];
|
|
1472
|
+
if (d) {
|
|
1473
|
+
r.push(d);
|
|
1474
|
+
const l = new je();
|
|
1475
1475
|
i !== null && l.fromArray(i.array, 16 * n), c.push(l);
|
|
1476
1476
|
} else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.', a.joints[n]);
|
|
1477
1477
|
}
|
|
1478
|
-
return new
|
|
1478
|
+
return new CA(r, c);
|
|
1479
1479
|
});
|
|
1480
1480
|
}
|
|
1481
1481
|
loadAnimation(e) {
|
|
1482
|
-
const a = this.json, t = this, A = a.animations[e], i = A.name ? A.name : "animation_" + e, s = [], r = [], c = [], n = [],
|
|
1483
|
-
for (let
|
|
1484
|
-
const g = A.channels[
|
|
1485
|
-
f.node !== void 0 && (s.push(this.getDependency("node", I)), r.push(this.getDependency("accessor", u)), c.push(this.getDependency("accessor",
|
|
1482
|
+
const a = this.json, t = this, A = a.animations[e], i = A.name ? A.name : "animation_" + e, s = [], r = [], c = [], n = [], b = [];
|
|
1483
|
+
for (let d = 0, l = A.channels.length; d < l; d++) {
|
|
1484
|
+
const g = A.channels[d], h = A.samplers[g.sampler], f = g.target, I = f.node, u = A.parameters !== void 0 ? A.parameters[h.input] : h.input, p = A.parameters !== void 0 ? A.parameters[h.output] : h.output;
|
|
1485
|
+
f.node !== void 0 && (s.push(this.getDependency("node", I)), r.push(this.getDependency("accessor", u)), c.push(this.getDependency("accessor", p)), n.push(h), b.push(f));
|
|
1486
1486
|
}
|
|
1487
|
-
return Promise.all([Promise.all(s), Promise.all(r), Promise.all(c), Promise.all(n), Promise.all(
|
|
1488
|
-
const l =
|
|
1489
|
-
for (let
|
|
1490
|
-
const
|
|
1491
|
-
if (
|
|
1492
|
-
|
|
1493
|
-
const Q = t._createAnimationTracks(
|
|
1487
|
+
return Promise.all([Promise.all(s), Promise.all(r), Promise.all(c), Promise.all(n), Promise.all(b)]).then(function(d) {
|
|
1488
|
+
const l = d[0], g = d[1], h = d[2], f = d[3], I = d[4], u = [];
|
|
1489
|
+
for (let p = 0, B = l.length; p < B; p++) {
|
|
1490
|
+
const C = l[p], w = g[p], x = h[p], y = f[p], m = I[p];
|
|
1491
|
+
if (C === void 0) continue;
|
|
1492
|
+
C.updateMatrix && C.updateMatrix();
|
|
1493
|
+
const Q = t._createAnimationTracks(C, w, x, y, m);
|
|
1494
1494
|
if (Q) for (let k = 0; k < Q.length; k++) u.push(Q[k]);
|
|
1495
1495
|
}
|
|
1496
|
-
return new
|
|
1496
|
+
return new BA(i, void 0, u);
|
|
1497
1497
|
});
|
|
1498
1498
|
}
|
|
1499
1499
|
createNodeMesh(e) {
|
|
@@ -1510,11 +1510,11 @@ class Fi {
|
|
|
1510
1510
|
for (let c = 0, n = s.length; c < n; c++) i.push(a.getDependency("node", s[c]));
|
|
1511
1511
|
const r = t.skin === void 0 ? Promise.resolve(null) : a.getDependency("skin", t.skin);
|
|
1512
1512
|
return Promise.all([A, Promise.all(i), r]).then(function(c) {
|
|
1513
|
-
const n = c[0],
|
|
1514
|
-
|
|
1515
|
-
l.isSkinnedMesh && l.bind(
|
|
1513
|
+
const n = c[0], b = c[1], d = c[2];
|
|
1514
|
+
d !== null && n.traverse(function(l) {
|
|
1515
|
+
l.isSkinnedMesh && l.bind(d, Ri);
|
|
1516
1516
|
});
|
|
1517
|
-
for (let l = 0, g =
|
|
1517
|
+
for (let l = 0, g = b.length; l < g; l++) n.add(b[l]);
|
|
1518
1518
|
return n;
|
|
1519
1519
|
});
|
|
1520
1520
|
}
|
|
@@ -1531,29 +1531,29 @@ class Fi {
|
|
|
1531
1531
|
}).forEach(function(n) {
|
|
1532
1532
|
r.push(n);
|
|
1533
1533
|
}), this.nodeCache[e] = Promise.all(r).then(function(n) {
|
|
1534
|
-
let
|
|
1535
|
-
if (
|
|
1536
|
-
if (i.name && (
|
|
1537
|
-
const
|
|
1538
|
-
|
|
1539
|
-
} else i.translation !== void 0 &&
|
|
1540
|
-
return A.associations.has(
|
|
1534
|
+
let b;
|
|
1535
|
+
if (b = i.isBone === !0 ? new mA() : n.length > 1 ? new ta() : n.length === 1 ? n[0] : new Bt(), b !== n[0]) for (let d = 0, l = n.length; d < l; d++) b.add(n[d]);
|
|
1536
|
+
if (i.name && (b.userData.name = i.name, b.name = s), ie(b, i), i.extensions && fe(t, b, i), i.matrix !== void 0) {
|
|
1537
|
+
const d = new je();
|
|
1538
|
+
d.fromArray(i.matrix), b.applyMatrix4(d);
|
|
1539
|
+
} else i.translation !== void 0 && b.position.fromArray(i.translation), i.rotation !== void 0 && b.quaternion.fromArray(i.rotation), i.scale !== void 0 && b.scale.fromArray(i.scale);
|
|
1540
|
+
return A.associations.has(b) || A.associations.set(b, {}), A.associations.get(b).nodes = e, b;
|
|
1541
1541
|
}), this.nodeCache[e];
|
|
1542
1542
|
}
|
|
1543
1543
|
loadScene(e) {
|
|
1544
|
-
const a = this.extensions, t = this.json.scenes[e], A = this, i = new
|
|
1544
|
+
const a = this.extensions, t = this.json.scenes[e], A = this, i = new ta();
|
|
1545
1545
|
t.name && (i.name = A.createUniqueName(t.name)), ie(i, t), t.extensions && fe(a, i, t);
|
|
1546
1546
|
const s = t.nodes || [], r = [];
|
|
1547
1547
|
for (let c = 0, n = s.length; c < n; c++) r.push(A.getDependency("node", s[c]));
|
|
1548
1548
|
return Promise.all(r).then(function(c) {
|
|
1549
|
-
for (let n = 0,
|
|
1549
|
+
for (let n = 0, b = c.length; n < b; n++) i.add(c[n]);
|
|
1550
1550
|
return A.associations = ((n) => {
|
|
1551
|
-
const
|
|
1552
|
-
for (const [
|
|
1553
|
-
return n.traverse((
|
|
1554
|
-
const l = A.associations.get(
|
|
1555
|
-
l != null &&
|
|
1556
|
-
}),
|
|
1551
|
+
const b = /* @__PURE__ */ new Map();
|
|
1552
|
+
for (const [d, l] of A.associations) (d instanceof aa || d instanceof Na) && b.set(d, l);
|
|
1553
|
+
return n.traverse((d) => {
|
|
1554
|
+
const l = A.associations.get(d);
|
|
1555
|
+
l != null && b.set(d, l);
|
|
1556
|
+
}), b;
|
|
1557
1557
|
})(i), i;
|
|
1558
1558
|
});
|
|
1559
1559
|
}
|
|
@@ -1576,9 +1576,9 @@ class Fi {
|
|
|
1576
1576
|
default:
|
|
1577
1577
|
t.itemSize === 1 ? n = _a : n = Pa;
|
|
1578
1578
|
}
|
|
1579
|
-
const
|
|
1579
|
+
const b = A.interpolation !== void 0 ? wi[A.interpolation] : Et, d = this._getArrayFromAccessor(t);
|
|
1580
1580
|
for (let l = 0, g = c.length; l < g; l++) {
|
|
1581
|
-
const h = new n(c[l] + "." + oe[i.path], a.array,
|
|
1581
|
+
const h = new n(c[l] + "." + oe[i.path], a.array, d, b);
|
|
1582
1582
|
A.interpolation === "CUBICSPLINE" && this._createCubicSplineTrackInterpolant(h), s.push(h);
|
|
1583
1583
|
}
|
|
1584
1584
|
return s;
|
|
@@ -1586,7 +1586,7 @@ class Fi {
|
|
|
1586
1586
|
_getArrayFromAccessor(e) {
|
|
1587
1587
|
let a = e.array;
|
|
1588
1588
|
if (e.normalized) {
|
|
1589
|
-
const t =
|
|
1589
|
+
const t = ja(a.constructor), A = new Float32Array(a.length);
|
|
1590
1590
|
for (let i = 0, s = a.length; i < s; i++) A[i] = a[i] * t;
|
|
1591
1591
|
a = A;
|
|
1592
1592
|
}
|
|
@@ -1594,7 +1594,7 @@ class Fi {
|
|
|
1594
1594
|
}
|
|
1595
1595
|
_createCubicSplineTrackInterpolant(e) {
|
|
1596
1596
|
e.createInterpolant = function(a) {
|
|
1597
|
-
return new (this instanceof Ha ?
|
|
1597
|
+
return new (this instanceof Ha ? yi : Mt)(this.times, this.values, this.getValueSize() / 3, a);
|
|
1598
1598
|
}, e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = !0;
|
|
1599
1599
|
}
|
|
1600
1600
|
}
|
|
@@ -1606,7 +1606,7 @@ function at(o, e, a) {
|
|
|
1606
1606
|
});
|
|
1607
1607
|
}
|
|
1608
1608
|
for (const s in t) {
|
|
1609
|
-
const r =
|
|
1609
|
+
const r = Da[s] || s.toLowerCase();
|
|
1610
1610
|
r in o.attributes || A.push(i(t[s], r));
|
|
1611
1611
|
}
|
|
1612
1612
|
if (e.indices !== void 0 && !o.index) {
|
|
@@ -1615,70 +1615,70 @@ function at(o, e, a) {
|
|
|
1615
1615
|
});
|
|
1616
1616
|
A.push(s);
|
|
1617
1617
|
}
|
|
1618
|
-
return
|
|
1619
|
-
const n = r.attributes,
|
|
1618
|
+
return ka.workingColorSpace !== K && "COLOR_0" in t && console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${ka.workingColorSpace}" not supported.`), ie(o, e), function(s, r, c) {
|
|
1619
|
+
const n = r.attributes, b = new Sa();
|
|
1620
1620
|
if (n.POSITION === void 0) return;
|
|
1621
1621
|
{
|
|
1622
1622
|
const g = c.json.accessors[n.POSITION], h = g.min, f = g.max;
|
|
1623
1623
|
if (h === void 0 || f === void 0) return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");
|
|
1624
|
-
if (
|
|
1625
|
-
const I =
|
|
1626
|
-
|
|
1624
|
+
if (b.set(new S(h[0], h[1], h[2]), new S(f[0], f[1], f[2])), g.normalized) {
|
|
1625
|
+
const I = ja(ke[g.componentType]);
|
|
1626
|
+
b.min.multiplyScalar(I), b.max.multiplyScalar(I);
|
|
1627
1627
|
}
|
|
1628
1628
|
}
|
|
1629
|
-
const
|
|
1630
|
-
if (
|
|
1629
|
+
const d = r.targets;
|
|
1630
|
+
if (d !== void 0) {
|
|
1631
1631
|
const g = new S(), h = new S();
|
|
1632
|
-
for (let f = 0, I =
|
|
1633
|
-
const u =
|
|
1632
|
+
for (let f = 0, I = d.length; f < I; f++) {
|
|
1633
|
+
const u = d[f];
|
|
1634
1634
|
if (u.POSITION !== void 0) {
|
|
1635
|
-
const
|
|
1636
|
-
if (
|
|
1637
|
-
if (h.setX(Math.max(Math.abs(
|
|
1638
|
-
const
|
|
1639
|
-
h.multiplyScalar(
|
|
1635
|
+
const p = c.json.accessors[u.POSITION], B = p.min, C = p.max;
|
|
1636
|
+
if (B !== void 0 && C !== void 0) {
|
|
1637
|
+
if (h.setX(Math.max(Math.abs(B[0]), Math.abs(C[0]))), h.setY(Math.max(Math.abs(B[1]), Math.abs(C[1]))), h.setZ(Math.max(Math.abs(B[2]), Math.abs(C[2]))), p.normalized) {
|
|
1638
|
+
const w = ja(ke[p.componentType]);
|
|
1639
|
+
h.multiplyScalar(w);
|
|
1640
1640
|
}
|
|
1641
1641
|
g.max(h);
|
|
1642
1642
|
} else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");
|
|
1643
1643
|
}
|
|
1644
1644
|
}
|
|
1645
|
-
|
|
1645
|
+
b.expandByVector(g);
|
|
1646
1646
|
}
|
|
1647
|
-
s.boundingBox =
|
|
1647
|
+
s.boundingBox = b;
|
|
1648
1648
|
const l = new DA();
|
|
1649
|
-
|
|
1649
|
+
b.getCenter(l.center), l.radius = b.min.distanceTo(b.max) / 2, s.boundingSphere = l;
|
|
1650
1650
|
}(o, e, a), Promise.all(A).then(function() {
|
|
1651
1651
|
return e.targets !== void 0 ? function(s, r, c) {
|
|
1652
|
-
let n = !1,
|
|
1652
|
+
let n = !1, b = !1, d = !1;
|
|
1653
1653
|
for (let f = 0, I = r.length; f < I; f++) {
|
|
1654
1654
|
const u = r[f];
|
|
1655
|
-
if (u.POSITION !== void 0 && (n = !0), u.NORMAL !== void 0 && (
|
|
1655
|
+
if (u.POSITION !== void 0 && (n = !0), u.NORMAL !== void 0 && (b = !0), u.COLOR_0 !== void 0 && (d = !0), n && b && d) break;
|
|
1656
1656
|
}
|
|
1657
|
-
if (!n && !
|
|
1657
|
+
if (!n && !b && !d) return Promise.resolve(s);
|
|
1658
1658
|
const l = [], g = [], h = [];
|
|
1659
1659
|
for (let f = 0, I = r.length; f < I; f++) {
|
|
1660
1660
|
const u = r[f];
|
|
1661
1661
|
if (n) {
|
|
1662
|
-
const
|
|
1663
|
-
l.push(
|
|
1664
|
-
}
|
|
1665
|
-
if (d) {
|
|
1666
|
-
const C = u.NORMAL !== void 0 ? c.getDependency("accessor", u.NORMAL) : s.attributes.normal;
|
|
1667
|
-
g.push(C);
|
|
1662
|
+
const p = u.POSITION !== void 0 ? c.getDependency("accessor", u.POSITION) : s.attributes.position;
|
|
1663
|
+
l.push(p);
|
|
1668
1664
|
}
|
|
1669
1665
|
if (b) {
|
|
1670
|
-
const
|
|
1671
|
-
|
|
1666
|
+
const p = u.NORMAL !== void 0 ? c.getDependency("accessor", u.NORMAL) : s.attributes.normal;
|
|
1667
|
+
g.push(p);
|
|
1668
|
+
}
|
|
1669
|
+
if (d) {
|
|
1670
|
+
const p = u.COLOR_0 !== void 0 ? c.getDependency("accessor", u.COLOR_0) : s.attributes.color;
|
|
1671
|
+
h.push(p);
|
|
1672
1672
|
}
|
|
1673
1673
|
}
|
|
1674
1674
|
return Promise.all([Promise.all(l), Promise.all(g), Promise.all(h)]).then(function(f) {
|
|
1675
|
-
const I = f[0], u = f[1],
|
|
1676
|
-
return n && (s.morphAttributes.position = I),
|
|
1675
|
+
const I = f[0], u = f[1], p = f[2];
|
|
1676
|
+
return n && (s.morphAttributes.position = I), b && (s.morphAttributes.normal = u), d && (s.morphAttributes.color = p), s.morphTargetsRelative = !0, s;
|
|
1677
1677
|
});
|
|
1678
1678
|
}(o, e.targets, a) : o;
|
|
1679
1679
|
});
|
|
1680
1680
|
}
|
|
1681
|
-
const
|
|
1681
|
+
const oa = /* @__PURE__ */ new WeakMap();
|
|
1682
1682
|
class Rt extends Fa {
|
|
1683
1683
|
constructor(e) {
|
|
1684
1684
|
super(e), this.decoderPath = "", this.decoderConfig = {}, this.decoderBinary = null, this.decoderPending = null, this.workerLimit = 4, this.workerPool = [], this.workerNextTaskID = 1, this.workerSourceURL = "", this.defaultAttributeIDs = { position: "POSITION", normal: "NORMAL", color: "COLOR", uv: "TEX_COORD" }, this.defaultAttributeTypes = { position: "Float32Array", normal: "Float32Array", color: "Float32Array", uv: "Float32Array" };
|
|
@@ -1709,21 +1709,21 @@ class Rt extends Fa {
|
|
|
1709
1709
|
}
|
|
1710
1710
|
decodeGeometry(e, a) {
|
|
1711
1711
|
const t = JSON.stringify(a);
|
|
1712
|
-
if (
|
|
1713
|
-
const c =
|
|
1712
|
+
if (oa.has(e)) {
|
|
1713
|
+
const c = oa.get(e);
|
|
1714
1714
|
if (c.key === t) return c.promise;
|
|
1715
1715
|
if (e.byteLength === 0) throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.");
|
|
1716
1716
|
}
|
|
1717
1717
|
let A;
|
|
1718
|
-
const i = this.workerNextTaskID++, s = e.byteLength, r = this._getWorker(i, s).then((c) => (A = c, new Promise((n,
|
|
1719
|
-
A._callbacks[i] = { resolve: n, reject:
|
|
1718
|
+
const i = this.workerNextTaskID++, s = e.byteLength, r = this._getWorker(i, s).then((c) => (A = c, new Promise((n, b) => {
|
|
1719
|
+
A._callbacks[i] = { resolve: n, reject: b }, A.postMessage({ type: "decode", id: i, taskConfig: a, buffer: e }, [e]);
|
|
1720
1720
|
}))).then((c) => this._createGeometry(c.geometry));
|
|
1721
1721
|
return r.catch(() => !0).then(() => {
|
|
1722
1722
|
A && i && this._releaseTask(A, i);
|
|
1723
|
-
}),
|
|
1723
|
+
}), oa.set(e, { key: t, promise: r }), r;
|
|
1724
1724
|
}
|
|
1725
1725
|
_createGeometry(e) {
|
|
1726
|
-
const a = new
|
|
1726
|
+
const a = new va();
|
|
1727
1727
|
e.index && a.setIndex(new le(e.index.array, 1));
|
|
1728
1728
|
for (let t = 0; t < e.attributes.length; t++) {
|
|
1729
1729
|
const A = e.attributes[t], i = A.name, s = A.array, r = A.itemSize, c = new le(s, r);
|
|
@@ -1734,7 +1734,7 @@ class Rt extends Fa {
|
|
|
1734
1734
|
_assignVertexColorSpace(e, a) {
|
|
1735
1735
|
if (a !== re) return;
|
|
1736
1736
|
const t = new he();
|
|
1737
|
-
for (let A = 0, i = e.count; A < i; A++) t.fromBufferAttribute(e, A),
|
|
1737
|
+
for (let A = 0, i = e.count; A < i; A++) t.fromBufferAttribute(e, A), ka.toWorkingColorSpace(t, re), e.setXYZ(A, t.r, t.g, t.b);
|
|
1738
1738
|
}
|
|
1739
1739
|
_loadLibrary(e, a) {
|
|
1740
1740
|
const t = new Be(this.manager);
|
|
@@ -1794,7 +1794,7 @@ class Rt extends Fa {
|
|
|
1794
1794
|
function vi() {
|
|
1795
1795
|
let o, e;
|
|
1796
1796
|
function a(t, A, i, s, r, c) {
|
|
1797
|
-
const n = c.num_components(),
|
|
1797
|
+
const n = c.num_components(), b = i.num_points() * n, d = b * r.BYTES_PER_ELEMENT, l = function(f, I) {
|
|
1798
1798
|
switch (I) {
|
|
1799
1799
|
case Float32Array:
|
|
1800
1800
|
return f.DT_FLOAT32;
|
|
@@ -1811,9 +1811,9 @@ function vi() {
|
|
|
1811
1811
|
case Uint32Array:
|
|
1812
1812
|
return f.DT_UINT32;
|
|
1813
1813
|
}
|
|
1814
|
-
}(t, r), g = t._malloc(
|
|
1815
|
-
A.GetAttributeDataArrayForAllPoints(i, c, l,
|
|
1816
|
-
const h = new r(t.HEAPF32.buffer, g,
|
|
1814
|
+
}(t, r), g = t._malloc(d);
|
|
1815
|
+
A.GetAttributeDataArrayForAllPoints(i, c, l, d, g);
|
|
1816
|
+
const h = new r(t.HEAPF32.buffer, g, b).slice();
|
|
1817
1817
|
return t._free(g), { name: s, array: h, itemSize: n };
|
|
1818
1818
|
}
|
|
1819
1819
|
onmessage = function(t) {
|
|
@@ -1831,38 +1831,38 @@ function vi() {
|
|
|
1831
1831
|
e.then((r) => {
|
|
1832
1832
|
const c = r.draco, n = new c.Decoder();
|
|
1833
1833
|
try {
|
|
1834
|
-
const
|
|
1834
|
+
const b = function(l, g, h, f) {
|
|
1835
1835
|
const I = f.attributeIDs, u = f.attributeTypes;
|
|
1836
|
-
let
|
|
1837
|
-
const
|
|
1838
|
-
if (
|
|
1836
|
+
let p, B;
|
|
1837
|
+
const C = g.GetEncodedGeometryType(h);
|
|
1838
|
+
if (C === l.TRIANGULAR_MESH) p = new l.Mesh(), B = g.DecodeArrayToMesh(h, h.byteLength, p);
|
|
1839
1839
|
else {
|
|
1840
|
-
if (
|
|
1841
|
-
|
|
1840
|
+
if (C !== l.POINT_CLOUD) throw new Error("THREE.DRACOLoader: Unexpected geometry type.");
|
|
1841
|
+
p = new l.PointCloud(), B = g.DecodeArrayToPointCloud(h, h.byteLength, p);
|
|
1842
1842
|
}
|
|
1843
|
-
if (!
|
|
1844
|
-
const
|
|
1843
|
+
if (!B.ok() || p.ptr === 0) throw new Error("THREE.DRACOLoader: Decoding failed: " + B.error_msg());
|
|
1844
|
+
const w = { index: null, attributes: [] };
|
|
1845
1845
|
for (const x in I) {
|
|
1846
|
-
const
|
|
1847
|
-
let
|
|
1848
|
-
if (f.useUniqueIDs) Q = I[x],
|
|
1846
|
+
const y = self[u[x]];
|
|
1847
|
+
let m, Q;
|
|
1848
|
+
if (f.useUniqueIDs) Q = I[x], m = g.GetAttributeByUniqueId(p, Q);
|
|
1849
1849
|
else {
|
|
1850
|
-
if (Q = g.GetAttributeId(
|
|
1851
|
-
|
|
1850
|
+
if (Q = g.GetAttributeId(p, l[I[x]]), Q === -1) continue;
|
|
1851
|
+
m = g.GetAttribute(p, Q);
|
|
1852
1852
|
}
|
|
1853
|
-
const k = a(l, g,
|
|
1854
|
-
x === "color" && (k.vertexColorSpace = f.vertexColorSpace),
|
|
1853
|
+
const k = a(l, g, p, x, y, m);
|
|
1854
|
+
x === "color" && (k.vertexColorSpace = f.vertexColorSpace), w.attributes.push(k);
|
|
1855
1855
|
}
|
|
1856
|
-
return
|
|
1857
|
-
const Q =
|
|
1858
|
-
|
|
1859
|
-
const _ = new Uint32Array(x.HEAPF32.buffer,
|
|
1860
|
-
return x._free(
|
|
1861
|
-
}(l, g,
|
|
1862
|
-
}(c, n, new Int8Array(i), s),
|
|
1863
|
-
|
|
1864
|
-
} catch (
|
|
1865
|
-
console.error(
|
|
1856
|
+
return C === l.TRIANGULAR_MESH && (w.index = function(x, y, m) {
|
|
1857
|
+
const Q = m.num_faces(), k = 3 * Q, D = 4 * k, F = x._malloc(D);
|
|
1858
|
+
y.GetTrianglesUInt32Array(m, D, F);
|
|
1859
|
+
const _ = new Uint32Array(x.HEAPF32.buffer, F, k).slice();
|
|
1860
|
+
return x._free(F), { array: _, itemSize: 1 };
|
|
1861
|
+
}(l, g, p)), l.destroy(p), w;
|
|
1862
|
+
}(c, n, new Int8Array(i), s), d = b.attributes.map((l) => l.array.buffer);
|
|
1863
|
+
b.index && d.push(b.index.array.buffer), self.postMessage({ type: "decode", id: A.id, geometry: b }, d);
|
|
1864
|
+
} catch (b) {
|
|
1865
|
+
console.error(b), self.postMessage({ type: "error", id: A.id, error: b.message });
|
|
1866
1866
|
} finally {
|
|
1867
1867
|
c.destroy(n);
|
|
1868
1868
|
}
|
|
@@ -1870,7 +1870,7 @@ function vi() {
|
|
|
1870
1870
|
}
|
|
1871
1871
|
};
|
|
1872
1872
|
}
|
|
1873
|
-
class
|
|
1873
|
+
class Fi {
|
|
1874
1874
|
constructor(e = 4) {
|
|
1875
1875
|
this.pool = e, this.queue = [], this.workers = [], this.workersResolve = [], this.workerStatus = 0;
|
|
1876
1876
|
}
|
|
@@ -1907,8 +1907,8 @@ class Ti {
|
|
|
1907
1907
|
this.workers.forEach((e) => e.terminate()), this.workersResolve.length = 0, this.workers.length = 0, this.queue.length = 0, this.workerStatus = 0;
|
|
1908
1908
|
}
|
|
1909
1909
|
}
|
|
1910
|
-
const St = 9,
|
|
1911
|
-
class
|
|
1910
|
+
const St = 9, vt = 15, Ft = 16, Tt = 22, Lt = 37, Gt = 43, Ut = 76, Nt = 83, Pt = 97, _t = 100, Ht = 103, qt = 109, Ot = 165, Jt = 166, Ta = 1000066e3;
|
|
1911
|
+
class Ti {
|
|
1912
1912
|
constructor() {
|
|
1913
1913
|
this.vkFormat = 0, this.typeSize = 1, this.pixelWidth = 0, this.pixelHeight = 0, this.pixelDepth = 0, this.layerCount = 0, this.faceCount = 1, this.supercompressionScheme = 0, this.levels = [], this.dataFormatDescriptor = [{ vendorId: 0, descriptorType: 0, descriptorBlockSize: 0, versionNumber: 2, colorModel: 0, colorPrimaries: 1, transferFunction: 2, flags: 0, texelBlockDimension: [0, 0, 0, 0], bytesPlane: [0, 0, 0, 0, 0, 0, 0, 0], samples: [] }], this.keyValue = {}, this.globalData = null;
|
|
1914
1914
|
}
|
|
@@ -1956,30 +1956,30 @@ const U = [171, 75, 84, 88, 32, 50, 48, 187, 13, 10, 26, 10];
|
|
|
1956
1956
|
function tt(o) {
|
|
1957
1957
|
return new TextDecoder().decode(o);
|
|
1958
1958
|
}
|
|
1959
|
-
let
|
|
1960
|
-
const
|
|
1961
|
-
|
|
1959
|
+
let ca, Ae, Ma;
|
|
1960
|
+
const da = { env: { emscripten_notify_memory_growth: function(o) {
|
|
1961
|
+
Ma = new Uint8Array(Ae.exports.memory.buffer);
|
|
1962
1962
|
} } };
|
|
1963
|
-
class
|
|
1963
|
+
class Li {
|
|
1964
1964
|
init() {
|
|
1965
|
-
return
|
|
1965
|
+
return ca || (ca = typeof fetch < "u" ? fetch("data:application/wasm;base64," + At).then((e) => e.arrayBuffer()).then((e) => WebAssembly.instantiate(e, da)).then(this._init) : WebAssembly.instantiate(Buffer.from(At, "base64"), da).then(this._init), ca);
|
|
1966
1966
|
}
|
|
1967
1967
|
_init(e) {
|
|
1968
|
-
Ae = e.instance,
|
|
1968
|
+
Ae = e.instance, da.env.emscripten_notify_memory_growth(0);
|
|
1969
1969
|
}
|
|
1970
1970
|
decode(e, a = 0) {
|
|
1971
1971
|
if (!Ae) throw new Error("ZSTDDecoder: Await .init() before decoding.");
|
|
1972
1972
|
const t = e.byteLength, A = Ae.exports.malloc(t);
|
|
1973
|
-
|
|
1974
|
-
const i = Ae.exports.malloc(a), s = Ae.exports.ZSTD_decompress(i, a, A, t), r =
|
|
1973
|
+
Ma.set(e, A), a = a || Number(Ae.exports.ZSTD_findDecompressedSize(A, t));
|
|
1974
|
+
const i = Ae.exports.malloc(a), s = Ae.exports.ZSTD_decompress(i, a, A, t), r = Ma.slice(i, i + s);
|
|
1975
1975
|
return Ae.exports.free(A), Ae.exports.free(i), r;
|
|
1976
1976
|
}
|
|
1977
1977
|
}
|
|
1978
|
-
const At = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY0AAQMyIFEAMiBg0AIANBHzYCfCADIANB/ABqIANB+ABqIAQgBCAFaiAGGyIEIAEgAmoiAiAEaxAVIgUQAw0AIAMoAnwiBkEfSw0AIAMoAngiB0EJTw0AIABBiCBqIAMgBkGAC0GADCAHEBggA0E0NgJ8IAMgA0H8AGogA0H4AGogBCAFaiIEIAIgBGsQFSIFEAMNACADKAJ8IgZBNEsNACADKAJ4IgdBCk8NACAAQZAwaiADIAZBgA1B4A4gBxAYIANBIzYCfCADIANB/ABqIANB+ABqIAQgBWoiBCACIARrEBUiBRADDQAgAygCfCIGQSNLDQAgAygCeCIHQQpPDQAgACADIAZBwBBB0BEgBxAYIAQgBWoiBEEMaiIFIAJLDQAgAiAFayEFQQAhAgNAIAJBA0cEQCAEKAAAIgZBf2ogBU8NAiAAIAJBAnRqQZzQAWogBjYCACACQQFqIQIgBEEEaiEEDAELCyAEIAFrIQgLIANBgAFqJAAgCAtGAQN/IABBCGohAyAAKAIEIQJBACEAA0AgACACdkUEQCABIAMgAEEDdGotAAJBFktqIQEgAEEBaiEADAELCyABQQggAmt0C4YDAQV/Qbh/IQcCQCADRQ0AIAItAAAiBEUEQCABQQA2AgBBAUG4fyADQQFGGw8LAn8gAkEBaiIFIARBGHRBGHUiBkF/Sg0AGiAGQX9GBEAgA0EDSA0CIAUvAABBgP4BaiEEIAJBA2oMAQsgA0ECSA0BIAItAAEgBEEIdHJBgIB+aiEEIAJBAmoLIQUgASAENgIAIAVBAWoiASACIANqIgNLDQBBbCEHIABBEGogACAFLQAAIgVBBnZBI0EJIAEgAyABa0HAEEHQEUHwEiAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBmCBqIABBCGogBUEEdkEDcUEfQQggASABIAZqIAgbIgEgAyABa0GAC0GADEGAFyAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBoDBqIABBBGogBUECdkEDcUE0QQkgASABIAZqIAgbIgEgAyABa0GADUHgDkGQGSAAKAKM4QEgACgCnOIBIAQQHyIAEAMNACAAIAFqIAJrIQcLIAcLrQMBCn8jAEGABGsiCCQAAn9BUiACQf8BSw0AGkFUIANBDEsNABogAkEBaiELIABBBGohCUGAgAQgA0F/anRBEHUhCkEAIQJBASEEQQEgA3QiB0F/aiIMIQUDQCACIAtGRQRAAkAgASACQQF0Ig1qLwEAIgZB//8DRgRAIAkgBUECdGogAjoAAiAFQX9qIQVBASEGDAELIARBACAKIAZBEHRBEHVKGyEECyAIIA1qIAY7AQAgAkEBaiECDAELCyAAIAQ7AQIgACADOwEAIAdBA3YgB0EBdmpBA2ohBkEAIQRBACECA0AgBCALRkUEQCABIARBAXRqLgEAIQpBACEAA0AgACAKTkUEQCAJIAJBAnRqIAQ6AAIDQCACIAZqIAxxIgIgBUsNAAsgAEEBaiEADAELCyAEQQFqIQQMAQsLQX8gAg0AGkEAIQIDfyACIAdGBH9BAAUgCCAJIAJBAnRqIgAtAAJBAXRqIgEgAS8BACIBQQFqOwEAIAAgAyABEBRrIgU6AAMgACABIAVB/wFxdCAHazsBACACQQFqIQIMAQsLCyEFIAhBgARqJAAgBQvjBgEIf0FsIQcCQCACQQNJDQACQAJAAkACQCABLQAAIgNBA3EiCUEBaw4DAwEAAgsgACgCiOEBDQBBYg8LIAJBBUkNAkEDIQYgASgAACEFAn8CQAJAIANBAnZBA3EiCEF+aiIEQQFNBEAgBEEBaw0BDAILIAVBDnZB/wdxIQQgBUEEdkH/B3EhAyAIRQwCCyAFQRJ2IQRBBCEGIAVBBHZB//8AcSEDQQAMAQsgBUEEdkH//w9xIgNBgIAISw0DIAEtAARBCnQgBUEWdnIhBEEFIQZBAAshBSAEIAZqIgogAksNAgJAIANBgQZJDQAgACgCnOIBRQ0AQQAhAgNAIAJBg4ABSw0BIAJBQGshAgwAAAsACwJ/IAlBA0YEQCABIAZqIQEgAEHw4gFqIQIgACgCDCEGIAUEQCACIAMgASAEIAYQXwwCCyACIAMgASAEIAYQXQwBCyAAQbjQAWohAiABIAZqIQEgAEHw4gFqIQYgAEGo0ABqIQggBQRAIAggBiADIAEgBCACEF4MAQsgCCAGIAMgASAEIAIQXAsQAw0CIAAgAzYCgOIBIABBATYCiOEBIAAgAEHw4gFqNgLw4QEgCUECRgRAIAAgAEGo0ABqNgIMCyAAIANqIgBBiOMBakIANwAAIABBgOMBakIANwAAIABB+OIBakIANwAAIABB8OIBakIANwAAIAoPCwJ/AkACQAJAIANBAnZBA3FBf2oiBEECSw0AIARBAWsOAgACAQtBASEEIANBA3YMAgtBAiEEIAEvAABBBHYMAQtBAyEEIAEQIUEEdgsiAyAEaiIFQSBqIAJLBEAgBSACSw0CIABB8OIBaiABIARqIAMQCyEBIAAgAzYCgOIBIAAgATYC8OEBIAEgA2oiAEIANwAYIABCADcAECAAQgA3AAggAEIANwAAIAUPCyAAIAM2AoDiASAAIAEgBGo2AvDhASAFDwsCfwJAAkACQCADQQJ2QQNxQX9qIgRBAksNACAEQQFrDgIAAgELQQEhByADQQN2DAILQQIhByABLwAAQQR2DAELIAJBBEkgARAhIgJBj4CAAUtyDQFBAyEHIAJBBHYLIQIgAEHw4gFqIAEgB2otAAAgAkEgahAQIQEgACACNgKA4gEgACABNgLw4QEgB0EBaiEHCyAHC0sAIABC+erQ0OfJoeThADcDICAAQgA3AxggAELP1tO+0ser2UI3AxAgAELW64Lu6v2J9eAANwMIIABCADcDACAAQShqQQBBKBAQGgviAgICfwV+IABBKGoiASAAKAJIaiECAn4gACkDACIDQiBaBEAgACkDECIEQgeJIAApAwgiBUIBiXwgACkDGCIGQgyJfCAAKQMgIgdCEol8IAUQGSAEEBkgBhAZIAcQGQwBCyAAKQMYQsXP2bLx5brqJ3wLIAN8IQMDQCABQQhqIgAgAk0EQEIAIAEpAAAQCSADhUIbiUKHla+vmLbem55/fkLj3MqV/M7y9YV/fCEDIAAhAQwBCwsCQCABQQRqIgAgAksEQCABIQAMAQsgASgAAK1Ch5Wvr5i23puef34gA4VCF4lCz9bTvtLHq9lCfkL5893xmfaZqxZ8IQMLA0AgACACSQRAIAAxAABCxc/ZsvHluuonfiADhUILiUKHla+vmLbem55/fiEDIABBAWohAAwBCwsgA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC+8CAgJ/BH4gACAAKQMAIAKtfDcDAAJAAkAgACgCSCIDIAJqIgRBH00EQCABRQ0BIAAgA2pBKGogASACECAgACgCSCACaiEEDAELIAEgAmohAgJ/IAMEQCAAQShqIgQgA2ogAUEgIANrECAgACAAKQMIIAQpAAAQCTcDCCAAIAApAxAgACkAMBAJNwMQIAAgACkDGCAAKQA4EAk3AxggACAAKQMgIABBQGspAAAQCTcDICAAKAJIIQMgAEEANgJIIAEgA2tBIGohAQsgAUEgaiACTQsEQCACQWBqIQMgACkDICEFIAApAxghBiAAKQMQIQcgACkDCCEIA0AgCCABKQAAEAkhCCAHIAEpAAgQCSEHIAYgASkAEBAJIQYgBSABKQAYEAkhBSABQSBqIgEgA00NAAsgACAFNwMgIAAgBjcDGCAAIAc3AxAgACAINwMICyABIAJPDQEgAEEoaiABIAIgAWsiBBAgCyAAIAQ2AkgLCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQEBogAwVBun8LCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQCxogAwVBun8LC6gCAQZ/IwBBEGsiByQAIABB2OABaikDAEKAgIAQViEIQbh/IQUCQCAEQf//B0sNACAAIAMgBBBCIgUQAyIGDQAgACgCnOIBIQkgACAHQQxqIAMgAyAFaiAGGyIKIARBACAFIAYbayIGEEAiAxADBEAgAyEFDAELIAcoAgwhBCABRQRAQbp/IQUgBEEASg0BCyAGIANrIQUgAyAKaiEDAkAgCQRAIABBADYCnOIBDAELAkACQAJAIARBBUgNACAAQdjgAWopAwBCgICACFgNAAwBCyAAQQA2ApziAQwBCyAAKAIIED8hBiAAQQA2ApziASAGQRRPDQELIAAgASACIAMgBSAEIAgQOSEFDAELIAAgASACIAMgBSAEIAgQOiEFCyAHQRBqJAAgBQtnACAAQdDgAWogASACIAAoAuzhARAuIgEQAwRAIAEPC0G4fyECAkAgAQ0AIABB7OABaigCACIBBEBBYCECIAAoApjiASABRw0BC0EAIQIgAEHw4AFqKAIARQ0AIABBkOEBahBDCyACCycBAX8QVyIERQRAQUAPCyAEIAAgASACIAMgBBBLEE8hACAEEFYgAAs/AQF/AkACQAJAIAAoAqDiAUEBaiIBQQJLDQAgAUEBaw4CAAECCyAAEDBBAA8LIABBADYCoOIBCyAAKAKU4gELvAMCB38BfiMAQRBrIgkkAEG4fyEGAkAgBCgCACIIQQVBCSAAKALs4QEiBRtJDQAgAygCACIHQQFBBSAFGyAFEC8iBRADBEAgBSEGDAELIAggBUEDakkNACAAIAcgBRBJIgYQAw0AIAEgAmohCiAAQZDhAWohCyAIIAVrIQIgBSAHaiEHIAEhBQNAIAcgAiAJECwiBhADDQEgAkF9aiICIAZJBEBBuH8hBgwCCyAJKAIAIghBAksEQEFsIQYMAgsgB0EDaiEHAn8CQAJAAkAgCEEBaw4CAgABCyAAIAUgCiAFayAHIAYQSAwCCyAFIAogBWsgByAGEEcMAQsgBSAKIAVrIActAAAgCSgCCBBGCyIIEAMEQCAIIQYMAgsgACgC8OABBEAgCyAFIAgQRQsgAiAGayECIAYgB2ohByAFIAhqIQUgCSgCBEUNAAsgACkD0OABIgxCf1IEQEFsIQYgDCAFIAFrrFINAQsgACgC8OABBEBBaiEGIAJBBEkNASALEEQhDCAHKAAAIAynRw0BIAdBBGohByACQXxqIQILIAMgBzYCACAEIAI2AgAgBSABayEGCyAJQRBqJAAgBgsuACAAECsCf0EAQQAQAw0AGiABRSACRXJFBEBBYiAAIAEgAhA9EAMNARoLQQALCzcAIAEEQCAAIAAoAsTgASABKAIEIAEoAghqRzYCnOIBCyAAECtBABADIAFFckUEQCAAIAEQWwsL0QIBB38jAEEQayIGJAAgBiAENgIIIAYgAzYCDCAFBEAgBSgCBCEKIAUoAgghCQsgASEIAkACQANAIAAoAuzhARAWIQsCQANAIAQgC0kNASADKAAAQXBxQdDUtMIBRgRAIAMgBBAiIgcQAw0EIAQgB2shBCADIAdqIQMMAQsLIAYgAzYCDCAGIAQ2AggCQCAFBEAgACAFEE5BACEHQQAQA0UNAQwFCyAAIAogCRBNIgcQAw0ECyAAIAgQUCAMQQFHQQAgACAIIAIgBkEMaiAGQQhqEEwiByIDa0EAIAMQAxtBCkdyRQRAQbh/IQcMBAsgBxADDQMgAiAHayECIAcgCGohCEEBIQwgBigCDCEDIAYoAgghBAwBCwsgBiADNgIMIAYgBDYCCEG4fyEHIAQNASAIIAFrIQcMAQsgBiADNgIMIAYgBDYCCAsgBkEQaiQAIAcLRgECfyABIAAoArjgASICRwRAIAAgAjYCxOABIAAgATYCuOABIAAoArzgASEDIAAgATYCvOABIAAgASADIAJrajYCwOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", da = /* @__PURE__ */ new WeakMap();
|
|
1979
|
-
let
|
|
1978
|
+
const At = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEEdCAAbiECCyAAQQh2IgEgAkEYbCIAQYwIaigCAGwgAEGICGooAgBqIgJBA3YgAmogAEGACGooAgAgAEGECGooAgAgAWxqSQs3ACAAIAMgBCAFQYAQEDMiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQMgVBuH8LC78DAQN/IwBBIGsiBSQAIAVBCGogAiADEAYiAhADRQRAIAAgAWoiB0F9aiEGIAUgBBAOIARBBGohAiAFLQACIQMDQEEAIAAgBkkgBUEIahAEGwRAIAAgAiAFQQhqIAMQAkECdGoiBC8BADsAACAFQQhqIAQtAAIQASAAIAQtAANqIgQgAiAFQQhqIAMQAkECdGoiAC8BADsAACAFQQhqIAAtAAIQASAEIAAtAANqIQAMAQUgB0F+aiEEA0AgBUEIahAEIAAgBEtyRQRAIAAgAiAFQQhqIAMQAkECdGoiBi8BADsAACAFQQhqIAYtAAIQASAAIAYtAANqIQAMAQsLA0AgACAES0UEQCAAIAIgBUEIaiADEAJBAnRqIgYvAQA7AAAgBUEIaiAGLQACEAEgACAGLQADaiEADAELCwJAIAAgB08NACAAIAIgBUEIaiADEAIiA0ECdGoiAC0AADoAACAALQADQQFGBEAgBUEIaiAALQACEAEMAQsgBSgCDEEfSw0AIAVBCGogAiADQQJ0ai0AAhABIAUoAgxBIUkNACAFQSA2AgwLIAFBbCAFQQhqEAobIQILCwsgBUEgaiQAIAILkgIBBH8jAEFAaiIJJAAgCSADQTQQCyEDAkAgBEECSA0AIAMgBEECdGooAgAhCSADQTxqIAgQIyADQQE6AD8gAyACOgA+QQAhBCADKAI8IQoDQCAEIAlGDQEgACAEQQJ0aiAKNgEAIARBAWohBAwAAAsAC0EAIQkDQCAGIAlGRQRAIAMgBSAJQQF0aiIKLQABIgtBAnRqIgwoAgAhBCADQTxqIAotAABBCHQgCGpB//8DcRAjIANBAjoAPyADIAcgC2siCiACajoAPiAEQQEgASAKa3RqIQogAygCPCELA0AgACAEQQJ0aiALNgEAIARBAWoiBCAKSQ0ACyAMIAo2AgAgCUEBaiEJDAELCyADQUBrJAALowIBCX8jAEHQAGsiCSQAIAlBEGogBUE0EAsaIAcgBmshDyAHIAFrIRADQAJAIAMgCkcEQEEBIAEgByACIApBAXRqIgYtAAEiDGsiCGsiC3QhDSAGLQAAIQ4gCUEQaiAMQQJ0aiIMKAIAIQYgCyAPTwRAIAAgBkECdGogCyAIIAUgCEE0bGogCCAQaiIIQQEgCEEBShsiCCACIAQgCEECdGooAgAiCEEBdGogAyAIayAHIA4QYyAGIA1qIQgMAgsgCUEMaiAOECMgCUEBOgAPIAkgCDoADiAGIA1qIQggCSgCDCELA0AgBiAITw0CIAAgBkECdGogCzYBACAGQQFqIQYMAAALAAsgCUHQAGokAA8LIAwgCDYCACAKQQFqIQoMAAALAAs0ACAAIAMgBCAFEDYiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQNAVBuH8LCyMAIAA/AEEQdGtB//8DakEQdkAAQX9GBEBBAA8LQQAQAEEBCzsBAX8gAgRAA0AgACABIAJBgCAgAkGAIEkbIgMQCyEAIAFBgCBqIQEgAEGAIGohACACIANrIgINAAsLCwYAIAAQAwsLqBUJAEGICAsNAQAAAAEAAAACAAAAAgBBoAgLswYBAAAAAQAAAAIAAAACAAAAJgAAAIIAAAAhBQAASgAAAGcIAAAmAAAAwAEAAIAAAABJBQAASgAAAL4IAAApAAAALAIAAIAAAABJBQAASgAAAL4IAAAvAAAAygIAAIAAAACKBQAASgAAAIQJAAA1AAAAcwMAAIAAAACdBQAASgAAAKAJAAA9AAAAgQMAAIAAAADrBQAASwAAAD4KAABEAAAAngMAAIAAAABNBgAASwAAAKoKAABLAAAAswMAAIAAAADBBgAATQAAAB8NAABNAAAAUwQAAIAAAAAjCAAAUQAAAKYPAABUAAAAmQQAAIAAAABLCQAAVwAAALESAABYAAAA2gQAAIAAAABvCQAAXQAAACMUAABUAAAARQUAAIAAAABUCgAAagAAAIwUAABqAAAArwUAAIAAAAB2CQAAfAAAAE4QAAB8AAAA0gIAAIAAAABjBwAAkQAAAJAHAACSAAAAAAAAAAEAAAABAAAABQAAAA0AAAAdAAAAPQAAAH0AAAD9AAAA/QEAAP0DAAD9BwAA/Q8AAP0fAAD9PwAA/X8AAP3/AAD9/wEA/f8DAP3/BwD9/w8A/f8fAP3/PwD9/38A/f//AP3//wH9//8D/f//B/3//w/9//8f/f//P/3//38AAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACUAAAAnAAAAKQAAACsAAAAvAAAAMwAAADsAAABDAAAAUwAAAGMAAACDAAAAAwEAAAMCAAADBAAAAwgAAAMQAAADIAAAA0AAAAOAAAADAAEAQeAPC1EBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAQcQQC4sBAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABIAAAAUAAAAFgAAABgAAAAcAAAAIAAAACgAAAAwAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQBBkBIL5gQBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAAAEAAAAEAAAACAAAAAAAAAABAAEBBgAAAAAAAAQAAAAAEAAABAAAAAAgAAAFAQAAAAAAAAUDAAAAAAAABQQAAAAAAAAFBgAAAAAAAAUHAAAAAAAABQkAAAAAAAAFCgAAAAAAAAUMAAAAAAAABg4AAAAAAAEFEAAAAAAAAQUUAAAAAAABBRYAAAAAAAIFHAAAAAAAAwUgAAAAAAAEBTAAAAAgAAYFQAAAAAAABwWAAAAAAAAIBgABAAAAAAoGAAQAAAAADAYAEAAAIAAABAAAAAAAAAAEAQAAAAAAAAUCAAAAIAAABQQAAAAAAAAFBQAAACAAAAUHAAAAAAAABQgAAAAgAAAFCgAAAAAAAAULAAAAAAAABg0AAAAgAAEFEAAAAAAAAQUSAAAAIAABBRYAAAAAAAIFGAAAACAAAwUgAAAAAAADBSgAAAAAAAYEQAAAABAABgRAAAAAIAAHBYAAAAAAAAkGAAIAAAAACwYACAAAMAAABAAAAAAQAAAEAQAAACAAAAUCAAAAIAAABQMAAAAgAAAFBQAAACAAAAUGAAAAIAAABQgAAAAgAAAFCQAAACAAAAULAAAAIAAABQwAAAAAAAAGDwAAACAAAQUSAAAAIAABBRQAAAAgAAIFGAAAACAAAgUcAAAAIAADBSgAAAAgAAQFMAAAAAAAEAYAAAEAAAAPBgCAAAAAAA4GAEAAAAAADQYAIABBgBcLhwIBAAEBBQAAAAAAAAUAAAAAAAAGBD0AAAAAAAkF/QEAAAAADwX9fwAAAAAVBf3/HwAAAAMFBQAAAAAABwR9AAAAAAAMBf0PAAAAABIF/f8DAAAAFwX9/38AAAAFBR0AAAAAAAgE/QAAAAAADgX9PwAAAAAUBf3/DwAAAAIFAQAAABAABwR9AAAAAAALBf0HAAAAABEF/f8BAAAAFgX9/z8AAAAEBQ0AAAAQAAgE/QAAAAAADQX9HwAAAAATBf3/BwAAAAEFAQAAABAABgQ9AAAAAAAKBf0DAAAAABAF/f8AAAAAHAX9//8PAAAbBf3//wcAABoF/f//AwAAGQX9//8BAAAYBf3//wBBkBkLhgQBAAEBBgAAAAAAAAYDAAAAAAAABAQAAAAgAAAFBQAAAAAAAAUGAAAAAAAABQgAAAAAAAAFCQAAAAAAAAULAAAAAAAABg0AAAAAAAAGEAAAAAAAAAYTAAAAAAAABhYAAAAAAAAGGQAAAAAAAAYcAAAAAAAABh8AAAAAAAAGIgAAAAAAAQYlAAAAAAABBikAAAAAAAIGLwAAAAAAAwY7AAAAAAAEBlMAAAAAAAcGgwAAAAAACQYDAgAAEAAABAQAAAAAAAAEBQAAACAAAAUGAAAAAAAABQcAAAAgAAAFCQAAAAAAAAUKAAAAAAAABgwAAAAAAAAGDwAAAAAAAAYSAAAAAAAABhUAAAAAAAAGGAAAAAAAAAYbAAAAAAAABh4AAAAAAAAGIQAAAAAAAQYjAAAAAAABBicAAAAAAAIGKwAAAAAAAwYzAAAAAAAEBkMAAAAAAAUGYwAAAAAACAYDAQAAIAAABAQAAAAwAAAEBAAAABAAAAQFAAAAIAAABQcAAAAgAAAFCAAAACAAAAUKAAAAIAAABQsAAAAAAAAGDgAAAAAAAAYRAAAAAAAABhQAAAAAAAAGFwAAAAAAAAYaAAAAAAAABh0AAAAAAAAGIAAAAAAAEAYDAAEAAAAPBgOAAAAAAA4GA0AAAAAADQYDIAAAAAAMBgMQAAAAAAsGAwgAAAAACgYDBABBpB0L2QEBAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAD//wAA//8BAP//AwD//wcA//8PAP//HwD//z8A//9/AP///wD///8B////A////wf///8P////H////z////9/AAAAAAEAAAACAAAABAAAAAAAAAACAAAABAAAAAgAAAAAAAAAAQAAAAIAAAABAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAcAAAAIAAAACQAAAAoAAAALAEGgIAsDwBBQ", ba = /* @__PURE__ */ new WeakMap();
|
|
1979
|
+
let la, ha = 0;
|
|
1980
1980
|
class P extends Fa {
|
|
1981
1981
|
constructor(e) {
|
|
1982
|
-
super(e), this.transcoderPath = "", this.transcoderBinary = null, this.transcoderPending = null, this.workerPool = new
|
|
1982
|
+
super(e), this.transcoderPath = "", this.transcoderBinary = null, this.transcoderPending = null, this.workerPool = new Fi(), this.workerSourceURL = "", this.workerConfig = null, typeof MSC_TRANSCODER < "u" && console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.');
|
|
1983
1983
|
}
|
|
1984
1984
|
setTranscoderPath(e) {
|
|
1985
1985
|
return this.transcoderPath = e, this;
|
|
@@ -2004,10 +2004,10 @@ class P extends Fa {
|
|
|
2004
2004
|
const r = P.BasisWorker.toString(), c = ["/* constants */", "let _EngineFormat = " + JSON.stringify(P.EngineFormat), "let _EngineType = " + JSON.stringify(P.EngineType), "let _TranscoderFormat = " + JSON.stringify(P.TranscoderFormat), "let _BasisFormat = " + JSON.stringify(P.BasisFormat), "/* basis_transcoder.js */", i, "/* worker */", r.substring(r.indexOf("{") + 1, r.lastIndexOf("}"))].join(`
|
|
2005
2005
|
`);
|
|
2006
2006
|
this.workerSourceURL = URL.createObjectURL(new Blob([c])), this.transcoderBinary = s, this.workerPool.setWorkerCreator(() => {
|
|
2007
|
-
const n = new Worker(this.workerSourceURL),
|
|
2008
|
-
return n.postMessage({ type: "init", config: this.workerConfig, transcoderBinary:
|
|
2007
|
+
const n = new Worker(this.workerSourceURL), b = this.transcoderBinary.slice(0);
|
|
2008
|
+
return n.postMessage({ type: "init", config: this.workerConfig, transcoderBinary: b }, [b]), n;
|
|
2009
2009
|
});
|
|
2010
|
-
}),
|
|
2010
|
+
}), ha > 0 && console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."), ha++;
|
|
2011
2011
|
}
|
|
2012
2012
|
return this.transcoderPending;
|
|
2013
2013
|
}
|
|
@@ -2020,91 +2020,91 @@ class P extends Fa {
|
|
|
2020
2020
|
}
|
|
2021
2021
|
parse(e, a, t) {
|
|
2022
2022
|
if (this.workerConfig === null) throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");
|
|
2023
|
-
if (
|
|
2024
|
-
return
|
|
2023
|
+
if (ba.has(e))
|
|
2024
|
+
return ba.get(e).promise.then(a).catch(t);
|
|
2025
2025
|
this._createTexture(e).then((A) => a ? a(A) : null).catch(t);
|
|
2026
2026
|
}
|
|
2027
2027
|
_createTextureFrom(e, a) {
|
|
2028
|
-
const { type: t, error: A, data: { faces: i, width: s, height: r, format: c, type: n, dfdFlags:
|
|
2028
|
+
const { type: t, error: A, data: { faces: i, width: s, height: r, format: c, type: n, dfdFlags: b } } = e;
|
|
2029
2029
|
if (t === "error") return Promise.reject(A);
|
|
2030
|
-
let
|
|
2031
|
-
if (a.faceCount === 6)
|
|
2030
|
+
let d;
|
|
2031
|
+
if (a.faceCount === 6) d = new MA(i, c, n);
|
|
2032
2032
|
else {
|
|
2033
2033
|
const l = i[0].mipmaps;
|
|
2034
|
-
|
|
2034
|
+
d = a.layerCount > 1 ? new RA(l, s, r, a.layerCount, c, n) : new qa(l, s, r, c, n);
|
|
2035
2035
|
}
|
|
2036
|
-
return
|
|
2036
|
+
return d.minFilter = i[0].mipmaps.length === 1 ? Ce : $e, d.magFilter = Ce, d.generateMipmaps = !1, d.needsUpdate = !0, d.colorSpace = it(a), d.premultiplyAlpha = !!(1 & b), d;
|
|
2037
2037
|
}
|
|
2038
2038
|
async _createTexture(e, a = {}) {
|
|
2039
2039
|
const t = function(r) {
|
|
2040
2040
|
const c = new Uint8Array(r.buffer, r.byteOffset, U.length);
|
|
2041
2041
|
if (c[0] !== U[0] || c[1] !== U[1] || c[2] !== U[2] || c[3] !== U[3] || c[4] !== U[4] || c[5] !== U[5] || c[6] !== U[6] || c[7] !== U[7] || c[8] !== U[8] || c[9] !== U[9] || c[10] !== U[10] || c[11] !== U[11]) throw new Error("Missing KTX 2.0 identifier.");
|
|
2042
|
-
const n = new
|
|
2043
|
-
n.vkFormat =
|
|
2044
|
-
const l =
|
|
2045
|
-
n.supercompressionScheme =
|
|
2046
|
-
const g =
|
|
2047
|
-
for (let R = 0; R < l; R++) n.levels.push({ levelData: new Uint8Array(r.buffer, r.byteOffset +
|
|
2048
|
-
const
|
|
2042
|
+
const n = new Ti(), b = 17 * Uint32Array.BYTES_PER_ELEMENT, d = new Fe(r, U.length, b, !0);
|
|
2043
|
+
n.vkFormat = d._nextUint32(), n.typeSize = d._nextUint32(), n.pixelWidth = d._nextUint32(), n.pixelHeight = d._nextUint32(), n.pixelDepth = d._nextUint32(), n.layerCount = d._nextUint32(), n.faceCount = d._nextUint32();
|
|
2044
|
+
const l = d._nextUint32();
|
|
2045
|
+
n.supercompressionScheme = d._nextUint32();
|
|
2046
|
+
const g = d._nextUint32(), h = d._nextUint32(), f = d._nextUint32(), I = d._nextUint32(), u = d._nextUint64(), p = d._nextUint64(), B = new Fe(r, U.length + b, 3 * l * 8, !0);
|
|
2047
|
+
for (let R = 0; R < l; R++) n.levels.push({ levelData: new Uint8Array(r.buffer, r.byteOffset + B._nextUint64(), B._nextUint64()), uncompressedByteLength: B._nextUint64() });
|
|
2048
|
+
const C = new Fe(r, g, h, !0), w = { vendorId: C._skip(4)._nextUint16(), descriptorType: C._nextUint16(), versionNumber: C._nextUint16(), descriptorBlockSize: C._nextUint16(), colorModel: C._nextUint8(), colorPrimaries: C._nextUint8(), transferFunction: C._nextUint8(), flags: C._nextUint8(), texelBlockDimension: [C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8()], bytesPlane: [C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8()], samples: [] }, x = (w.descriptorBlockSize / 4 - 6) / 4;
|
|
2049
2049
|
for (let R = 0; R < x; R++) {
|
|
2050
|
-
const L = { bitOffset:
|
|
2051
|
-
64 & L.channelType ? (L.sampleLower =
|
|
2050
|
+
const L = { bitOffset: C._nextUint16(), bitLength: C._nextUint8(), channelType: C._nextUint8(), samplePosition: [C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8()], sampleLower: -1 / 0, sampleUpper: 1 / 0 };
|
|
2051
|
+
64 & L.channelType ? (L.sampleLower = C._nextInt32(), L.sampleUpper = C._nextInt32()) : (L.sampleLower = C._nextUint32(), L.sampleUpper = C._nextUint32()), w.samples[R] = L;
|
|
2052
2052
|
}
|
|
2053
|
-
n.dataFormatDescriptor.length = 0, n.dataFormatDescriptor.push(
|
|
2054
|
-
const
|
|
2055
|
-
for (;
|
|
2056
|
-
const R =
|
|
2057
|
-
if (n.keyValue[q] =
|
|
2053
|
+
n.dataFormatDescriptor.length = 0, n.dataFormatDescriptor.push(w);
|
|
2054
|
+
const y = new Fe(r, f, I, !0);
|
|
2055
|
+
for (; y._offset < I; ) {
|
|
2056
|
+
const R = y._nextUint32(), L = y._scan(R), q = tt(L);
|
|
2057
|
+
if (n.keyValue[q] = y._nextUint8Array(R - L.byteLength - 1), q.match(/^ktx/i)) {
|
|
2058
2058
|
const V = tt(n.keyValue[q]);
|
|
2059
2059
|
n.keyValue[q] = V.substring(0, V.lastIndexOf("\0"));
|
|
2060
2060
|
}
|
|
2061
|
-
|
|
2061
|
+
y._skip(R % 4 ? 4 - R % 4 : 0);
|
|
2062
2062
|
}
|
|
2063
|
-
if (
|
|
2064
|
-
const
|
|
2065
|
-
for (let R = 0; R < l; R++)
|
|
2066
|
-
const qe = u +
|
|
2067
|
-
return n.globalData = { endpointCount: Q, selectorCount: k, imageDescs:
|
|
2063
|
+
if (p <= 0) return n;
|
|
2064
|
+
const m = new Fe(r, u, p, !0), Q = m._nextUint16(), k = m._nextUint16(), D = m._nextUint32(), F = m._nextUint32(), _ = m._nextUint32(), ea = m._nextUint32(), Me = [];
|
|
2065
|
+
for (let R = 0; R < l; R++) Me.push({ imageFlags: m._nextUint32(), rgbSliceByteOffset: m._nextUint32(), rgbSliceByteLength: m._nextUint32(), alphaSliceByteOffset: m._nextUint32(), alphaSliceByteLength: m._nextUint32() });
|
|
2066
|
+
const qe = u + m._offset, Re = qe + D, Se = Re + F, ve = Se + _, Oe = new Uint8Array(r.buffer, r.byteOffset + qe, D), Je = new Uint8Array(r.buffer, r.byteOffset + Re, F), z = new Uint8Array(r.buffer, r.byteOffset + Se, _), me = new Uint8Array(r.buffer, r.byteOffset + ve, ea);
|
|
2067
|
+
return n.globalData = { endpointCount: Q, selectorCount: k, imageDescs: Me, endpointsData: Oe, selectorsData: Je, tablesData: z, extendedData: me }, n;
|
|
2068
2068
|
}(new Uint8Array(e)), A = t.vkFormat === Ta && t.dataFormatDescriptor[0].colorModel === 167;
|
|
2069
2069
|
if (!(t.vkFormat === 0 || A && !this.workerConfig.astcHDRSupported)) return async function(r) {
|
|
2070
2070
|
const { vkFormat: c } = r;
|
|
2071
|
-
if (
|
|
2071
|
+
if (ga[c] === void 0) throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");
|
|
2072
2072
|
let n;
|
|
2073
|
-
r.supercompressionScheme === 2 && (
|
|
2074
|
-
const g = new
|
|
2073
|
+
r.supercompressionScheme === 2 && (la || (la = new Promise(async (l) => {
|
|
2074
|
+
const g = new Li();
|
|
2075
2075
|
await g.init(), l(g);
|
|
2076
|
-
})), n = await
|
|
2077
|
-
const
|
|
2076
|
+
})), n = await la);
|
|
2077
|
+
const b = [];
|
|
2078
2078
|
for (let l = 0; l < r.levels.length; l++) {
|
|
2079
2079
|
const g = Math.max(1, r.pixelWidth >> l), h = Math.max(1, r.pixelHeight >> l), f = r.pixelDepth ? Math.max(1, r.pixelDepth >> l) : 0, I = r.levels[l];
|
|
2080
|
-
let u,
|
|
2080
|
+
let u, p;
|
|
2081
2081
|
if (r.supercompressionScheme === 0) u = I.levelData;
|
|
2082
2082
|
else {
|
|
2083
2083
|
if (r.supercompressionScheme !== 2) throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");
|
|
2084
2084
|
u = n.decode(I.levelData, I.uncompressedByteLength);
|
|
2085
2085
|
}
|
|
2086
|
-
|
|
2086
|
+
p = fa[c] === v ? new Float32Array(u.buffer, u.byteOffset, u.byteLength / Float32Array.BYTES_PER_ELEMENT) : fa[c] === xe ? new Uint16Array(u.buffer, u.byteOffset, u.byteLength / Uint16Array.BYTES_PER_ELEMENT) : u, b.push({ data: p, width: g, height: h, depth: f });
|
|
2087
2087
|
}
|
|
2088
|
-
let
|
|
2089
|
-
if (
|
|
2088
|
+
let d;
|
|
2089
|
+
if (Gi.has(ga[c])) d = r.pixelDepth === 0 ? new Ge(b[0].data, r.pixelWidth, r.pixelHeight) : new _A(b[0].data, r.pixelWidth, r.pixelHeight, r.pixelDepth);
|
|
2090
2090
|
else {
|
|
2091
2091
|
if (r.pixelDepth > 0) throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");
|
|
2092
|
-
|
|
2092
|
+
d = new qa(b, r.pixelWidth, r.pixelHeight), d.minFilter = b.length === 1 ? Ce : $e, d.magFilter = Ce;
|
|
2093
2093
|
}
|
|
2094
|
-
return
|
|
2094
|
+
return d.mipmaps = b, d.type = fa[c], d.format = ga[c], d.colorSpace = it(r), d.needsUpdate = !0, Promise.resolve(d);
|
|
2095
2095
|
}(t);
|
|
2096
2096
|
const i = a, s = this.init().then(() => this.workerPool.postMessage({ type: "transcode", buffer: e, taskConfig: i }, [e])).then((r) => this._createTextureFrom(r.data, t));
|
|
2097
|
-
return
|
|
2097
|
+
return ba.set(e, { promise: s }), s;
|
|
2098
2098
|
}
|
|
2099
2099
|
dispose() {
|
|
2100
|
-
return this.workerPool.dispose(), this.workerSourceURL && URL.revokeObjectURL(this.workerSourceURL),
|
|
2100
|
+
return this.workerPool.dispose(), this.workerSourceURL && URL.revokeObjectURL(this.workerSourceURL), ha--, this;
|
|
2101
2101
|
}
|
|
2102
2102
|
}
|
|
2103
|
-
P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.TranscoderFormat = { ETC1: 0, ETC2: 1, BC1: 2, BC3: 3, BC4: 4, BC5: 5, BC7_M6_OPAQUE_ONLY: 6, BC7_M5: 7, PVRTC1_4_RGB: 8, PVRTC1_4_RGBA: 9, ASTC_4x4: 10, ATC_RGB: 11, ATC_RGBA_INTERPOLATED_ALPHA: 12, RGBA32: 13, RGB565: 14, BGR565: 15, RGBA4444: 16, BC6H: 22, RGB_HALF: 24, RGBA_HALF: 25 }, P.EngineFormat = { RGBAFormat: $, RGBA_ASTC_4x4_Format: Qt, RGB_BPTC_UNSIGNED_Format: SA, RGBA_BPTC_Format:
|
|
2103
|
+
P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.TranscoderFormat = { ETC1: 0, ETC2: 1, BC1: 2, BC3: 3, BC4: 4, BC5: 5, BC7_M6_OPAQUE_ONLY: 6, BC7_M5: 7, PVRTC1_4_RGB: 8, PVRTC1_4_RGBA: 9, ASTC_4x4: 10, ATC_RGB: 11, ATC_RGBA_INTERPOLATED_ALPHA: 12, RGBA32: 13, RGB565: 14, BGR565: 15, RGBA4444: 16, BC6H: 22, RGB_HALF: 24, RGBA_HALF: 25 }, P.EngineFormat = { RGBAFormat: $, RGBA_ASTC_4x4_Format: Qt, RGB_BPTC_UNSIGNED_Format: SA, RGBA_BPTC_Format: vA, RGBA_ETC2_EAC_Format: FA, RGBA_PVRTC_4BPPV1_Format: TA, RGBA_S3TC_DXT5_Format: LA, RGB_ETC1_Format: GA, RGB_ETC2_Format: UA, RGB_PVRTC_4BPPV1_Format: NA, RGBA_S3TC_DXT1_Format: PA }, P.EngineType = { UnsignedByteType: X, HalfFloatType: xe, FloatType: v }, P.BasisWorker = function() {
|
|
2104
2104
|
let o, e, a;
|
|
2105
2105
|
const t = _EngineFormat, A = _EngineType, i = _TranscoderFormat, s = _BasisFormat;
|
|
2106
|
-
self.addEventListener("message", function(
|
|
2107
|
-
const l =
|
|
2106
|
+
self.addEventListener("message", function(d) {
|
|
2107
|
+
const l = d.data;
|
|
2108
2108
|
switch (l.type) {
|
|
2109
2109
|
case "init":
|
|
2110
2110
|
o = l.config, g = l.transcoderBinary, e = new Promise((h) => {
|
|
@@ -2116,52 +2116,52 @@ P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.TranscoderFormat = { ETC
|
|
|
2116
2116
|
case "transcode":
|
|
2117
2117
|
e.then(() => {
|
|
2118
2118
|
try {
|
|
2119
|
-
const { faces: h, buffers: f, width: I, height: u, hasAlpha:
|
|
2120
|
-
const
|
|
2121
|
-
function
|
|
2122
|
-
|
|
2119
|
+
const { faces: h, buffers: f, width: I, height: u, hasAlpha: p, format: B, type: C, dfdFlags: w } = function(x) {
|
|
2120
|
+
const y = new a.KTX2File(new Uint8Array(x));
|
|
2121
|
+
function m() {
|
|
2122
|
+
y.close(), y.delete();
|
|
2123
2123
|
}
|
|
2124
|
-
if (!
|
|
2124
|
+
if (!y.isValid()) throw m(), new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");
|
|
2125
2125
|
let Q;
|
|
2126
|
-
if (
|
|
2127
|
-
else if (
|
|
2126
|
+
if (y.isUASTC()) Q = s.UASTC;
|
|
2127
|
+
else if (y.isETC1S()) Q = s.ETC1S;
|
|
2128
2128
|
else {
|
|
2129
|
-
if (!
|
|
2129
|
+
if (!y.isHDR()) throw new Error("THREE.KTX2Loader: Unknown Basis encoding");
|
|
2130
2130
|
Q = s.UASTC_HDR;
|
|
2131
2131
|
}
|
|
2132
|
-
const k =
|
|
2132
|
+
const k = y.getWidth(), D = y.getHeight(), F = y.getLayers() || 1, _ = y.getLevels(), ea = y.getFaces(), Me = y.getHasAlpha(), qe = y.getDFDFlags(), { transcoderFormat: Re, engineFormat: Se, engineType: ve } = function(z, me, R, L) {
|
|
2133
2133
|
const q = c[z];
|
|
2134
2134
|
for (let V = 0; V < q.length; V++) {
|
|
2135
2135
|
const O = q[V];
|
|
2136
|
-
if (!(O.if && !o[O.if]) && O.basisFormat.includes(z) && !(L && O.transcoderFormat.length < 2) && !(O.needsPowerOfTwo && (!n(
|
|
2136
|
+
if (!(O.if && !o[O.if]) && O.basisFormat.includes(z) && !(L && O.transcoderFormat.length < 2) && !(O.needsPowerOfTwo && (!n(me) || !n(R))))
|
|
2137
2137
|
return { transcoderFormat: O.transcoderFormat[L ? 1 : 0], engineFormat: O.engineFormat[L ? 1 : 0], engineType: O.engineType[0] };
|
|
2138
2138
|
}
|
|
2139
2139
|
throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.");
|
|
2140
|
-
}(Q, k, D,
|
|
2141
|
-
if (!k || !D || !_) throw
|
|
2142
|
-
if (!
|
|
2140
|
+
}(Q, k, D, Me);
|
|
2141
|
+
if (!k || !D || !_) throw m(), new Error("THREE.KTX2Loader: Invalid texture");
|
|
2142
|
+
if (!y.startTranscoding()) throw m(), new Error("THREE.KTX2Loader: .startTranscoding failed");
|
|
2143
2143
|
const Oe = [], Je = [];
|
|
2144
|
-
for (let z = 0; z <
|
|
2145
|
-
const
|
|
2144
|
+
for (let z = 0; z < ea; z++) {
|
|
2145
|
+
const me = [];
|
|
2146
2146
|
for (let R = 0; R < _; R++) {
|
|
2147
2147
|
const L = [];
|
|
2148
2148
|
let q, V;
|
|
2149
|
-
for (let Ee = 0; Ee <
|
|
2150
|
-
const
|
|
2151
|
-
z !== 0 || R !== 0 || Ee !== 0 ||
|
|
2152
|
-
let
|
|
2153
|
-
const Yt =
|
|
2154
|
-
if (
|
|
2155
|
-
L.push(
|
|
2149
|
+
for (let Ee = 0; Ee < F; Ee++) {
|
|
2150
|
+
const Qe = y.getImageLevelInfo(R, Ee, z);
|
|
2151
|
+
z !== 0 || R !== 0 || Ee !== 0 || Qe.origWidth % 4 == 0 && Qe.origHeight % 4 == 0 || console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."), _ > 1 ? (q = Qe.origWidth, V = Qe.origHeight) : (q = Qe.width, V = Qe.height);
|
|
2152
|
+
let ye = new Uint8Array(y.getImageTranscodedSizeInBytes(R, Ee, 0, Re));
|
|
2153
|
+
const Yt = y.transcodeImage(ye, R, Ee, z, Re, 0, -1, -1);
|
|
2154
|
+
if (ve === A.HalfFloatType && (ye = new Uint16Array(ye.buffer, ye.byteOffset, ye.byteLength / Uint16Array.BYTES_PER_ELEMENT)), !Yt) throw m(), new Error("THREE.KTX2Loader: .transcodeImage failed.");
|
|
2155
|
+
L.push(ye);
|
|
2156
2156
|
}
|
|
2157
|
-
const O =
|
|
2158
|
-
|
|
2157
|
+
const O = b(L);
|
|
2158
|
+
me.push({ data: O, width: q, height: V }), Je.push(O.buffer);
|
|
2159
2159
|
}
|
|
2160
|
-
Oe.push({ mipmaps:
|
|
2160
|
+
Oe.push({ mipmaps: me, width: k, height: D, format: Se, type: ve });
|
|
2161
2161
|
}
|
|
2162
|
-
return
|
|
2162
|
+
return m(), { faces: Oe, buffers: Je, width: k, height: D, hasAlpha: Me, dfdFlags: qe, format: Se, type: ve };
|
|
2163
2163
|
}(l.buffer);
|
|
2164
|
-
self.postMessage({ type: "transcode", id: l.id, data: { faces: h, width: I, height: u, hasAlpha:
|
|
2164
|
+
self.postMessage({ type: "transcode", id: l.id, data: { faces: h, width: I, height: u, hasAlpha: p, format: B, type: C, dfdFlags: w } }, f);
|
|
2165
2165
|
} catch (h) {
|
|
2166
2166
|
console.error(h), self.postMessage({ type: "error", id: l.id, error: h.message });
|
|
2167
2167
|
}
|
|
@@ -2169,25 +2169,25 @@ P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.TranscoderFormat = { ETC
|
|
|
2169
2169
|
}
|
|
2170
2170
|
var g;
|
|
2171
2171
|
});
|
|
2172
|
-
const r = [{ if: "astcSupported", basisFormat: [s.UASTC], transcoderFormat: [i.ASTC_4x4, i.ASTC_4x4], engineFormat: [t.RGBA_ASTC_4x4_Format, t.RGBA_ASTC_4x4_Format], engineType: [A.UnsignedByteType], priorityETC1S: 1 / 0, priorityUASTC: 1, needsPowerOfTwo: !1 }, { if: "bptcSupported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.BC7_M5, i.BC7_M5], engineFormat: [t.RGBA_BPTC_Format, t.RGBA_BPTC_Format], engineType: [A.UnsignedByteType], priorityETC1S: 3, priorityUASTC: 2, needsPowerOfTwo: !1 }, { if: "dxtSupported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.BC1, i.BC3], engineFormat: [t.RGBA_S3TC_DXT1_Format, t.RGBA_S3TC_DXT5_Format], engineType: [A.UnsignedByteType], priorityETC1S: 4, priorityUASTC: 5, needsPowerOfTwo: !1 }, { if: "etc2Supported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.ETC1, i.ETC2], engineFormat: [t.RGB_ETC2_Format, t.RGBA_ETC2_EAC_Format], engineType: [A.UnsignedByteType], priorityETC1S: 1, priorityUASTC: 3, needsPowerOfTwo: !1 }, { if: "etc1Supported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.ETC1], engineFormat: [t.RGB_ETC1_Format], engineType: [A.UnsignedByteType], priorityETC1S: 2, priorityUASTC: 4, needsPowerOfTwo: !1 }, { if: "pvrtcSupported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.PVRTC1_4_RGB, i.PVRTC1_4_RGBA], engineFormat: [t.RGB_PVRTC_4BPPV1_Format, t.RGBA_PVRTC_4BPPV1_Format], engineType: [A.UnsignedByteType], priorityETC1S: 5, priorityUASTC: 6, needsPowerOfTwo: !0 }, { if: "bptcSupported", basisFormat: [s.UASTC_HDR], transcoderFormat: [i.BC6H], engineFormat: [t.RGB_BPTC_UNSIGNED_Format], engineType: [A.HalfFloatType], priorityHDR: 1, needsPowerOfTwo: !1 }, { basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.RGBA32, i.RGBA32], engineFormat: [t.RGBAFormat, t.RGBAFormat], engineType: [A.UnsignedByteType, A.UnsignedByteType], priorityETC1S: 100, priorityUASTC: 100, needsPowerOfTwo: !1 }, { basisFormat: [s.UASTC_HDR], transcoderFormat: [i.RGBA_HALF], engineFormat: [t.RGBAFormat], engineType: [A.HalfFloatType], priorityHDR: 100, needsPowerOfTwo: !1 }], c = { [s.ETC1S]: r.filter((
|
|
2173
|
-
function n(
|
|
2174
|
-
return
|
|
2172
|
+
const r = [{ if: "astcSupported", basisFormat: [s.UASTC], transcoderFormat: [i.ASTC_4x4, i.ASTC_4x4], engineFormat: [t.RGBA_ASTC_4x4_Format, t.RGBA_ASTC_4x4_Format], engineType: [A.UnsignedByteType], priorityETC1S: 1 / 0, priorityUASTC: 1, needsPowerOfTwo: !1 }, { if: "bptcSupported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.BC7_M5, i.BC7_M5], engineFormat: [t.RGBA_BPTC_Format, t.RGBA_BPTC_Format], engineType: [A.UnsignedByteType], priorityETC1S: 3, priorityUASTC: 2, needsPowerOfTwo: !1 }, { if: "dxtSupported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.BC1, i.BC3], engineFormat: [t.RGBA_S3TC_DXT1_Format, t.RGBA_S3TC_DXT5_Format], engineType: [A.UnsignedByteType], priorityETC1S: 4, priorityUASTC: 5, needsPowerOfTwo: !1 }, { if: "etc2Supported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.ETC1, i.ETC2], engineFormat: [t.RGB_ETC2_Format, t.RGBA_ETC2_EAC_Format], engineType: [A.UnsignedByteType], priorityETC1S: 1, priorityUASTC: 3, needsPowerOfTwo: !1 }, { if: "etc1Supported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.ETC1], engineFormat: [t.RGB_ETC1_Format], engineType: [A.UnsignedByteType], priorityETC1S: 2, priorityUASTC: 4, needsPowerOfTwo: !1 }, { if: "pvrtcSupported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.PVRTC1_4_RGB, i.PVRTC1_4_RGBA], engineFormat: [t.RGB_PVRTC_4BPPV1_Format, t.RGBA_PVRTC_4BPPV1_Format], engineType: [A.UnsignedByteType], priorityETC1S: 5, priorityUASTC: 6, needsPowerOfTwo: !0 }, { if: "bptcSupported", basisFormat: [s.UASTC_HDR], transcoderFormat: [i.BC6H], engineFormat: [t.RGB_BPTC_UNSIGNED_Format], engineType: [A.HalfFloatType], priorityHDR: 1, needsPowerOfTwo: !1 }, { basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.RGBA32, i.RGBA32], engineFormat: [t.RGBAFormat, t.RGBAFormat], engineType: [A.UnsignedByteType, A.UnsignedByteType], priorityETC1S: 100, priorityUASTC: 100, needsPowerOfTwo: !1 }, { basisFormat: [s.UASTC_HDR], transcoderFormat: [i.RGBA_HALF], engineFormat: [t.RGBAFormat], engineType: [A.HalfFloatType], priorityHDR: 100, needsPowerOfTwo: !1 }], c = { [s.ETC1S]: r.filter((d) => d.basisFormat.includes(s.ETC1S)).sort((d, l) => d.priorityUASTC - l.priorityUASTC), [s.UASTC]: r.filter((d) => d.basisFormat.includes(s.UASTC)).sort((d, l) => d.priorityUASTC - l.priorityUASTC), [s.UASTC_HDR]: r.filter((d) => d.basisFormat.includes(s.UASTC_HDR)).sort((d, l) => d.priorityHDR - l.priorityHDR) };
|
|
2173
|
+
function n(d) {
|
|
2174
|
+
return d <= 2 || !(d & d - 1) && d !== 0;
|
|
2175
2175
|
}
|
|
2176
|
-
function d
|
|
2177
|
-
if (
|
|
2176
|
+
function b(d) {
|
|
2177
|
+
if (d.length === 1) return d[0];
|
|
2178
2178
|
let l = 0;
|
|
2179
|
-
for (let f = 0; f <
|
|
2180
|
-
l +=
|
|
2179
|
+
for (let f = 0; f < d.length; f++)
|
|
2180
|
+
l += d[f].byteLength;
|
|
2181
2181
|
const g = new Uint8Array(l);
|
|
2182
2182
|
let h = 0;
|
|
2183
|
-
for (let f = 0; f <
|
|
2184
|
-
const I =
|
|
2183
|
+
for (let f = 0; f < d.length; f++) {
|
|
2184
|
+
const I = d[f];
|
|
2185
2185
|
g.set(I, h), h += I.byteLength;
|
|
2186
2186
|
}
|
|
2187
2187
|
return g;
|
|
2188
2188
|
}
|
|
2189
2189
|
};
|
|
2190
|
-
const
|
|
2190
|
+
const Gi = /* @__PURE__ */ new Set([$, Ue, Ne]), ga = { [qt]: $, [Pt]: $, [Lt]: $, [Gt]: $, [Ht]: Ue, [Nt]: Ue, [Ft]: Ue, [Tt]: Ue, [_t]: Ne, [Ut]: Ne, [vt]: Ne, [St]: Ne, [Ta]: Qt, [Jt]: Oa, [Ot]: Oa }, fa = { [qt]: v, [Pt]: xe, [Lt]: X, [Gt]: X, [Ht]: v, [Nt]: xe, [Ft]: X, [Tt]: X, [_t]: v, [Ut]: xe, [vt]: X, [St]: X, [Ta]: xe, [Jt]: X, [Ot]: X };
|
|
2191
2191
|
function it(o) {
|
|
2192
2192
|
const e = o.dataFormatDescriptor[0];
|
|
2193
2193
|
return e.colorPrimaries === 1 ? e.transferFunction === 2 ? re : K : e.colorPrimaries === 10 ? e.transferFunction === 2 ? "display-p3" : "display-p3-linear" : (e.colorPrimaries === 0 || console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`), HA);
|
|
@@ -2201,49 +2201,49 @@ async function st(o) {
|
|
|
2201
2201
|
}
|
|
2202
2202
|
if (e === "subtree")
|
|
2203
2203
|
return async function(t, A) {
|
|
2204
|
-
const i = new DataView(t), s = i.getBigUint64(8, !0), r = i.getBigUint64(16, !0), c = 24, n = c + Number(s),
|
|
2204
|
+
const i = new DataView(t), s = i.getBigUint64(8, !0), r = i.getBigUint64(16, !0), c = 24, n = c + Number(s), b = n + (8 - n % 8) % 8, d = b + Number(r), l = t.slice(c, n), g = new TextDecoder().decode(l).trim(), h = JSON.parse(g);
|
|
2205
2205
|
if (!h.buffers) throw new Error("subtree has no buffers");
|
|
2206
2206
|
const f = h.buffers.map(async (u) => {
|
|
2207
2207
|
if (u.uri) {
|
|
2208
|
-
const
|
|
2209
|
-
if (!
|
|
2210
|
-
return new Uint8Array(await
|
|
2208
|
+
const p = new URL(u.uri, A).href, B = await fetch(p);
|
|
2209
|
+
if (!B.ok) throw new Error(`Failed to fetch binary file ${p}: ${B.statusText}`);
|
|
2210
|
+
return new Uint8Array(await B.arrayBuffer());
|
|
2211
2211
|
}
|
|
2212
|
-
return new Uint8Array(t.slice(
|
|
2212
|
+
return new Uint8Array(t.slice(b, d));
|
|
2213
2213
|
}), I = await Promise.all(f);
|
|
2214
|
-
return /* @__PURE__ */ function(u,
|
|
2215
|
-
function
|
|
2216
|
-
if (!
|
|
2217
|
-
if (
|
|
2218
|
-
if (
|
|
2219
|
-
if (
|
|
2214
|
+
return /* @__PURE__ */ function(u, p) {
|
|
2215
|
+
function B(m, Q) {
|
|
2216
|
+
if (!m) throw new Error("incomplete json subtree");
|
|
2217
|
+
if (m.constant) {
|
|
2218
|
+
if (m.constant == 0) return !1;
|
|
2219
|
+
if (m.constant == 1) return !0;
|
|
2220
2220
|
}
|
|
2221
|
-
if (
|
|
2222
|
-
if (!u.bufferViews || !u.bufferViews[
|
|
2223
|
-
const k = u.bufferViews[
|
|
2224
|
-
return
|
|
2221
|
+
if (m.bitstream == null) throw new Error('json subtree "tileAvailability" does not specify a bitstream');
|
|
2222
|
+
if (!u.bufferViews || !u.bufferViews[m.bitstream]) throw new Error('json subtree "bufferViews" does not specify a bitstream');
|
|
2223
|
+
const k = u.bufferViews[m.bitstream];
|
|
2224
|
+
return C(p[k.buffer], k.byteOffset, Q);
|
|
2225
2225
|
}
|
|
2226
|
-
function
|
|
2226
|
+
function C(m, Q, k) {
|
|
2227
2227
|
const D = k % 8;
|
|
2228
|
-
return
|
|
2228
|
+
return m[Q + Math.floor(k / 8)] >> D & !0;
|
|
2229
2229
|
}
|
|
2230
|
-
function
|
|
2230
|
+
function w(m) {
|
|
2231
2231
|
let Q = 0;
|
|
2232
|
-
return Q =
|
|
2232
|
+
return Q = m.z == null ? ua(m.x, m.y, m.level) : pa(m.x, m.y, m.z, m.level), B(u.tileAvailability, Q);
|
|
2233
2233
|
}
|
|
2234
|
-
function x(
|
|
2234
|
+
function x(m) {
|
|
2235
2235
|
let Q = 0;
|
|
2236
|
-
Q =
|
|
2236
|
+
Q = m.z == null ? ua(m.x, m.y, m.level) : pa(m.x, m.y, m.z, m.level);
|
|
2237
2237
|
const k = [];
|
|
2238
2238
|
return u.contentAvailability.forEach((D) => {
|
|
2239
|
-
k.push(
|
|
2239
|
+
k.push(B(D, Q));
|
|
2240
2240
|
}), k;
|
|
2241
2241
|
}
|
|
2242
|
-
function
|
|
2242
|
+
function y(m) {
|
|
2243
2243
|
let Q = 0;
|
|
2244
|
-
return Q =
|
|
2244
|
+
return Q = m.z == null ? ua(m.x, m.y) : pa(m.x, m.y, m.z), B(u.childSubtreeAvailability, Q);
|
|
2245
2245
|
}
|
|
2246
|
-
return { isTileAvailable:
|
|
2246
|
+
return { isTileAvailable: w, isContentAvailable: x, isChildSubtreeAvailable: y };
|
|
2247
2247
|
}(h, I);
|
|
2248
2248
|
}(await a.arrayBuffer(), rt(o));
|
|
2249
2249
|
throw new Error(`Unsupported file extension: ${e}`);
|
|
@@ -2255,18 +2255,18 @@ function rt(o) {
|
|
|
2255
2255
|
function nt(o) {
|
|
2256
2256
|
return o = 1431655765 & ((o = 858993459 & ((o = 252645135 & ((o = 16711935 & ((o &= 65535) ^ o << 8)) ^ o << 4)) ^ o << 2)) ^ o << 1);
|
|
2257
2257
|
}
|
|
2258
|
-
function
|
|
2258
|
+
function ua(o, e, a) {
|
|
2259
2259
|
let t = 0;
|
|
2260
2260
|
return a && (t = (Math.pow(4, a) - 1) / 3), t + (nt(o) | nt(e) << 1);
|
|
2261
2261
|
}
|
|
2262
2262
|
function Ia(o) {
|
|
2263
2263
|
return o = 153391689 & ((o = 51130563 & ((o = 50393103 & ((o = 4278190335 & ((o &= 1023) ^ o << 16)) ^ o << 8)) ^ o << 4)) ^ o << 2);
|
|
2264
2264
|
}
|
|
2265
|
-
function
|
|
2265
|
+
function pa(o, e, a, t) {
|
|
2266
2266
|
let A = 0;
|
|
2267
2267
|
return t && (A = (Math.pow(8, t) - 1) / 7), A + (Ia(o) | Ia(e) << 1 | Ia(a) << 2);
|
|
2268
2268
|
}
|
|
2269
|
-
const
|
|
2269
|
+
const Te = /* @__PURE__ */ new Map();
|
|
2270
2270
|
async function La(o, e) {
|
|
2271
2271
|
if (!o.root || !o.root.implicitTiling) return o;
|
|
2272
2272
|
if (!o.root.content && !o.root.contents) throw new Error("implicit tiling requires a Template URI");
|
|
@@ -2285,46 +2285,46 @@ async function La(o, e) {
|
|
|
2285
2285
|
let s;
|
|
2286
2286
|
a && (s = t.replace("{level}", 0).replace("{x}", 0).replace("{y}", 0)), a || (s = t.replace("{level}", 0).replace("{x}", 0).replace("{y}", 0).replace("{z}", 0));
|
|
2287
2287
|
const r = { level: 0, x: 0, y: 0 }, c = { level: 0, x: 0, y: 0 };
|
|
2288
|
-
a || (r.z = 0, c.z = 0),
|
|
2289
|
-
const n =
|
|
2288
|
+
a || (r.z = 0, c.z = 0), Te.set(s, await st(i + s));
|
|
2289
|
+
const n = Te.get(s), b = [];
|
|
2290
2290
|
n.isContentAvailable(c) && A.forEach((g) => {
|
|
2291
2291
|
let h;
|
|
2292
|
-
a && (h = g.replace("{level}", r.level).replace("{x}", r.x).replace("{y}", r.y)), a || (h = g.replace("{level}", r.level).replace("{x}", r.x).replace("{y}", r.y).replace("{z}", r.z)),
|
|
2292
|
+
a && (h = g.replace("{level}", r.level).replace("{x}", r.x).replace("{y}", r.y)), a || (h = g.replace("{level}", r.level).replace("{x}", r.x).replace("{y}", r.y).replace("{z}", r.z)), b.push({ uri: h });
|
|
2293
2293
|
});
|
|
2294
|
-
const
|
|
2295
|
-
return { root:
|
|
2294
|
+
const d = { geometricError: o.root.geometricError, boundingVolume: o.root.boundingVolume, refine: o.root.refine, globalAddress: r, localAddress: c, subtree: n, contents: b, getChildren: async () => l(d) };
|
|
2295
|
+
return { root: d };
|
|
2296
2296
|
async function l(g) {
|
|
2297
2297
|
const h = [];
|
|
2298
2298
|
if (g.localAddress.level == o.root.implicitTiling.availableLevels - 1) return h;
|
|
2299
2299
|
if ((g.localAddress.level + 1) % o.root.implicitTiling.subtreeLevels == 0) {
|
|
2300
2300
|
const f = ze(g.localAddress), I = ze(g.globalAddress), u = ot(a, o.root.boundingVolume, I);
|
|
2301
|
-
for (let
|
|
2302
|
-
const
|
|
2303
|
-
g.subtree.isChildSubtreeAvailable(
|
|
2304
|
-
const
|
|
2301
|
+
for (let p = 0; p < f.length; p++) {
|
|
2302
|
+
const B = f[p], C = I[p];
|
|
2303
|
+
g.subtree.isChildSubtreeAvailable(B) && (a && t.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y), a || t.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y).replace("{z}", C.z)), Te.has(s) || Te.set(s, await st(i + s));
|
|
2304
|
+
const w = Te.get(s), x = { level: 0, x: 0, y: 0 };
|
|
2305
2305
|
a || (x.z = 0);
|
|
2306
|
-
const
|
|
2307
|
-
|
|
2306
|
+
const y = [];
|
|
2307
|
+
w.isContentAvailable(x) && A.forEach((Q) => {
|
|
2308
2308
|
let k;
|
|
2309
|
-
a && (k = Q.replace("{level}",
|
|
2309
|
+
a && (k = Q.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y)), a || (k = Q.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y).replace("{z}", C.z)), y.push({ uri: k });
|
|
2310
2310
|
});
|
|
2311
|
-
const
|
|
2312
|
-
h.push(
|
|
2311
|
+
const m = { geometricError: g.geometricError / 2, boundingVolume: u[p], refine: o.root.refine, globalAddress: C, localAddress: x, subtree: w, contents: y, getChildren: async () => l(m) };
|
|
2312
|
+
h.push(m);
|
|
2313
2313
|
}
|
|
2314
2314
|
} else {
|
|
2315
2315
|
const f = ze(g.localAddress), I = ze(g.globalAddress), u = ot(a, o.root.boundingVolume, I);
|
|
2316
|
-
for (let
|
|
2317
|
-
const
|
|
2318
|
-
if (!g.subtree.isTileAvailable(
|
|
2319
|
-
const
|
|
2320
|
-
for (let
|
|
2321
|
-
if (!x[
|
|
2322
|
-
const Q = A[
|
|
2316
|
+
for (let p = 0; p < f.length; p++) {
|
|
2317
|
+
const B = f[p], C = I[p];
|
|
2318
|
+
if (!g.subtree.isTileAvailable(B)) continue;
|
|
2319
|
+
const w = [], x = g.subtree.isContentAvailable(B);
|
|
2320
|
+
for (let m = 0; m < A.length; m++) {
|
|
2321
|
+
if (!x[m]) continue;
|
|
2322
|
+
const Q = A[m];
|
|
2323
2323
|
let k;
|
|
2324
|
-
a && (k = Q.replace("{level}",
|
|
2324
|
+
a && (k = Q.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y)), a || (k = Q.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y).replace("{z}", C.z)), w.push({ uri: k });
|
|
2325
2325
|
}
|
|
2326
|
-
const
|
|
2327
|
-
h.push(
|
|
2326
|
+
const y = { geometricError: g.geometricError / 2, boundingVolume: u[p], refine: o.root.refine, globalAddress: C, localAddress: B, subtree: g.subtree, contents: w, getChildren: async () => l(y) };
|
|
2327
|
+
h.push(y);
|
|
2328
2328
|
}
|
|
2329
2329
|
}
|
|
2330
2330
|
return h.length > 0 ? h : void 0;
|
|
@@ -2337,17 +2337,17 @@ function ze(o) {
|
|
|
2337
2337
|
}
|
|
2338
2338
|
function ot(o, e, a) {
|
|
2339
2339
|
const t = [];
|
|
2340
|
-
for (let A = 0; A < a.length; A++) t.push(
|
|
2340
|
+
for (let A = 0; A < a.length; A++) t.push(Ui(o, e, a[A]));
|
|
2341
2341
|
return t;
|
|
2342
2342
|
}
|
|
2343
|
-
function
|
|
2343
|
+
function Ui(o, e, a) {
|
|
2344
2344
|
if (e.region) return function(t, A, i) {
|
|
2345
|
-
const [s, r, c, n,
|
|
2346
|
-
return { region: [f, I, u,
|
|
2345
|
+
const [s, r, c, n, b, d] = A, l = (c - s) / 2 ** i.level, g = (n - r) / 2 ** i.level, h = t ? 0 : (d - b) / 2 ** i.level, f = s + l * i.x, I = r + g * i.y, u = f + l, p = I + g, B = t ? b : b + h * i.z, C = t ? d : B + h;
|
|
2346
|
+
return { region: [f, I, u, p, B, C] };
|
|
2347
2347
|
}(o, e.region, a);
|
|
2348
2348
|
if (e.box) return function(t, A, i) {
|
|
2349
|
-
const s = A.slice(0, 3), r = [A.slice(3, 6), A.slice(6, 9), A.slice(9, 12)], c = 1 / Math.pow(2, i.level), n = [c, c, t ? 1 : c],
|
|
2350
|
-
return { box: [
|
|
2349
|
+
const s = A.slice(0, 3), r = [A.slice(3, 6), A.slice(6, 9), A.slice(9, 12)], c = 1 / Math.pow(2, i.level), n = [c, c, t ? 1 : c], b = r.map((g, h) => g.map((f) => f * n[h])), d = [s[0] - r[0][0] - r[1][0] - r[2][0], s[1] - r[0][1] - r[1][1] - r[2][1], s[2] - r[0][2] - r[1][2] - r[2][2]];
|
|
2350
|
+
return { box: [d[0] + (2 * i.x + 1) * (b[0][0] + b[1][0] + b[2][0]), d[1] + (2 * i.y + 1) * (b[0][1] + b[1][1] + b[2][1]), t ? s[2] : d[2] + (2 * i.z + 1) * (b[0][2] + b[1][2] + b[2][2])].concat(...b) };
|
|
2351
2351
|
}(o, e.box, a);
|
|
2352
2352
|
throw new Error("Unsupported bounding volume type");
|
|
2353
2353
|
}
|
|
@@ -2355,13 +2355,13 @@ function Ni(o, e, a) {
|
|
|
2355
2355
|
var o, e = new Uint8Array([32, 0, 65, 2, 1, 106, 34, 33, 3, 128, 11, 4, 13, 64, 6, 253, 10, 7, 15, 116, 127, 5, 8, 12, 40, 16, 19, 54, 20, 9, 27, 255, 113, 17, 42, 67, 24, 23, 146, 148, 18, 14, 22, 45, 70, 69, 56, 114, 101, 21, 25, 63, 75, 136, 108, 28, 118, 29, 73, 115]);
|
|
2356
2356
|
if (typeof WebAssembly != "object") return { supported: !1 };
|
|
2357
2357
|
var a = WebAssembly.instantiate(function(n) {
|
|
2358
|
-
for (var
|
|
2359
|
-
var l = n.charCodeAt(
|
|
2360
|
-
d
|
|
2358
|
+
for (var b = new Uint8Array(n.length), d = 0; d < n.length; ++d) {
|
|
2359
|
+
var l = n.charCodeAt(d);
|
|
2360
|
+
b[d] = l > 96 ? l - 97 : l > 64 ? l - 39 : l + 4;
|
|
2361
2361
|
}
|
|
2362
2362
|
var g = 0;
|
|
2363
|
-
for (
|
|
2364
|
-
return
|
|
2363
|
+
for (d = 0; d < n.length; ++d) b[g++] = b[d] < 60 ? e[b[d]] : 64 * (b[d] - 60) + b[++d];
|
|
2364
|
+
return b.buffer.slice(0, g);
|
|
2365
2365
|
}("b9H79TebbbeJq9Geueu9Geub9Gbb9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiKLdilevlevlooroowwvwbDDbelve9Weiiviebeoweuec:W;kekr;RiOo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbe8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbdE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UbiY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbl8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbv8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UboE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbra9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbwL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbDK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbqL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbkE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbPa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbzK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbHl79IV9RbODwebcekdQXq:g9sLdbk;3keYu8Jjjjjbcjo9Rgv8Kjjjjbcbhodnalcefae0mbabcbRb:S:kjjbc:GeV86bbavcjdfcbcjdzNjjjb8AdnaiTmbavcjdfadalz:tjjjb8Akabaefhrabcefhwavalfcbcbcjdal9RalcFe0EzNjjjb8Aavavcjdfalz:tjjjbhDcj;abal9UhodndndndndnalTmbaoc;WFbGgecjdaecjd6Ehqcbhkdninakai9pmiaDcjlfcbcjdzNjjjb8Aaqaiak9Rakaqfai6Egxcsfgecl4cifcd4hmadakal2fhPdndndndndnaec9WGgsTmbcbhzcehHaPhOawhAxekdnaxTmbcbhAcehHaPhCinaDaAfRbbhXaDcjlfheaChoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkaraw9Ram6miawcbamzNjjjbgeTmiaCcefhCaeamfhwaAcefgAal6hHaAal9hmbxvkkaraw9Ram6mvawcbamzNjjjb8AceheinawgXamfhwalaegoSmldnaraw9Ram6mbaocefheawcbamzNjjjb8AaXmekkaoal6hHxekindnaxTmbaDazfRbbhXaDcjlfheaOhoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkkaraA9Ram6mearaAcbamzNjjjbgKamfgw9RcK6mdcbhYaDcjlfhAinaDcjlfaYfh8AcwhCczhLcehQindndnaQce9hmbcuhoa8ARbbmecbhodninaogecsSmeaecefhoaAaefcefRbbTmbkkcucbaecs6EhoxekaQcetc;:FFFeGhocuaQtcu7cFeGhXcbheinaoaXaAaefRbb9nfhoaecefgecz9hmbkkaoaLaoaL6geEhLaQaCaeEhCaQcetgQcw6mbkdndndndnaCcufPdiebkaKaYco4fgeaeRbbcdciaCclSEaYci4coGtV86bbaCcw9hmeawa8A8Pbb83bbawcwfa8Acwf8Pbb83bbawczfhwxdkaKaYco4fgeaeRbbceaYci4coGtV86bbkdncwaC9TgEmbinawcb86bbawcefhwxbkkcuaCtcu7h8Acbh3aAh5ina5heaEhQcbhoinaeRbbgLa8AcFeGgXaLaX6EaoaCtVhoaecefheaQcufgQmbkawao86bba5aEfh5awcefhwa3aEfg3cz6mbkcbheindnaAaefRbbgoaX6mbawao86bbawcefhwkaecefgecz9hmbkkdnaYczfgYas9pmbaAczfhAaraw9RcL0mekkaYas6meawTmeaOcefhOazcefgzal6hHawhAazalSmixbkkcbhwaHceGTmexikcbhwaHceGmdkaDaPaxcufal2falz:tjjjb8AaxakfhkawmbkcbhoxokcbhoxvkaiTmekcbhoaraw9Ralcaalca0E6mialc8F9nmexdkcbhoaecufca6mdkawcbcaal9RgezNjjjbaefhwkawaDcjdfalz:tjjjbalfab9Rhokavcjof8Kjjjjbaok9heeuaecaaeca0Eabcj;abae9Uc;WFbGgdcjdadcjd6Egdfcufad9Uae2adcl4cifcd4adV2fcefkmbcbabBd:S:kjjbk;rse3u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd:C:kjjbgrc;GeV86bbalc;abfcFecjezNjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgoydbhLaocwfydbhKaoclfydbhYcbh8Adndninalc;abfavcsGcitfgoydlhEdndndnaoydbgoaL9hmbaEaYSmekdnaoaY9hmbaEaK9hmba8Acefh8AxekaoaK9hmeaEaL9hmea8Acdfh8Aka8Ac870mdaXcufhvada8AciGcx2goc:y1jjbfydbaCfcdtfydbhEadaocN1jjbfydbaCfcdtfydbhKadaoc:q1jjbfydbaCfcdtfydbhLcbhodnindnalavcsGcdtfydbaE9hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaEaOSgvaYce9iaYaH9oVgoGh3dndndndndncbcsavEaYaoEgvcs9hmbarce9imbaEaEaAaEcefaASgvEgAcefSmecmcsavEhvkasava8Acdtc;WeGV86bbavcs9hmeaEaA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbkaEhAxdkcPhvasa8AcdtcPV86bbaEhAkavTmbavaH9imekalaXcdtfaEBdbaXcefcsGhXkaOa3fhOalc;abfaQcitfgvaKBdlavaEBdbalc;abfaQcefcsGgvcitfgoaEBdlaoaLBdbavcefhoxikavcufhva8Aclfg8Ac;ab9hmbkkdnadceaKaOScetaYaOSEcx2gvc:q1jjbfydbaCfcdtfydbgLTadavcN1jjbfydbaCfcdtfydbg8AceSGadavc:y1jjbfydbaCfcdtfydbgYcdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhKxdkcuhKaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydbaY9hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaLaOSg8Efh3dndnaKcm0mbaKcefhKxekcbcsa8Aa3SgvEhKa3avfh3kdndnaEcm0mbaEcefhExekcbcsaYa3SgvEhEa3avfh3kc9:cua8EEh8FaEaKcltVhocbhvdndndninavcj1jjbfRbbaocFeGSmeavcefgvcz9hmbxdkka5aLaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeao86bbaecefhekdna8EmbaLaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaLhAkdnaKcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmbaYaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaYhAkalaXcdtfaLBdbaXcefcsGhvdndnaKPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfaYBdbavcefcsGhvkalc;abfaQcitfgoaLBdlaoa8ABdbalc;abfaQcefcsGcitfgoa8ABdlaoaYBdbalc;abfaQcdfcsGcitfgoaYBdlaoaLBdbaQcifhoavhXa3hOkascefhsaocsGhQaCcifgCai6mbkkcbhvaeaP0mbcbhvinaeavfavcj1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd:C:kjjbk:ydewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb:C:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkcbhvaoar0mbaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:dvli99dui99ludnaeTmbcuadcetcuftcu7:Yhvdndncuaicuftcu7:YgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhralcxfIdbhqdndnakJbbbb9GTmbaxhkxekJbbjZar:l:tgkak:maxJbbbb9GEhkJbbjZax:l:tgxax:marJbbbb9GEhrkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEavNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohmxekcjjjj94hmkdndnakJbbj:;akJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;akJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;klld99eud99eudnaeTmbdndncuaicuftcu7:YgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicdfciGcdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk:Hvdxue998Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6mearcearce0EhwaohDinaDc:CuBdbaDclfhDawcufgwmbkaeTmiadcl6mdarcearce0EhqarcdthkalhxcbhminaohDaxhwaqhPinaDaDydbgsawydbgzcL4cFeGc:cufcbazEgzasaz9kEBdbawclfhwaDclfhDaPcufgPmbkaxakfhxamcefgmae9hmbkkaeTmdxekaeTmekavcb9hadcl6gqVhHarcearce0Ehkarcdthrceai9Rhmcbhdindndndnavce9hmbaqmdc:CuhwalhDakhPinawaDydbgscL4cFeGc:cufcbasEgsawas9kEhwaDclfhDaPcufgPmbxdkkc:CuhwaHmbaohDalhPakhsinaDaPydbgzcL4cFeGgxc8Aaxc8A9kEc:cufcbazEBdbaPclfhPaDclfhDascufgsmbkkaqmbcbhDakhsinawhPdnavceSmbaoaDfydbhPkdndnalaDfIdbgOcjjj;8iamaPfgPcLt9R::NJbbbZJbbb:;aOJbbbb9GEMgO:lJbbb9p9DTmbaO:Ohzxekcjjjj94hzkabaDfazcFFFrGaPcKtVBdbaDclfhDascufgsmbkkabarfhbalarfhladcefgdae9hmbkkaocjdf8KjjjjbkFkdCui998Jjjjjbc:Gd9Rgv8Kjjjjbavc:4efcbc;KbzNjjjb8AcbhodnadTmbcbhoaiTmbdnabae9hmbavcuadcdtgoadcFFFFi0Ecbyd:K:kjjbHjjjjbbgeBd:4eavceBd:ydaeabaoz:tjjjb8Akavc:OefcwfcbBdbav9cb83i:Oeavc:Oefaeadaiavc:4efz:njjjbcuaicdtgraicFFFFi0Egwcbyd:K:kjjbHjjjjbbhoavc:4efavyd:ydgDcdtfaoBdbavaDcefgqBd:ydaoavyd:Oegkarz:tjjjbhxavc:4efaqcdtfadci9Ugmcbyd:K:kjjbHjjjjbbgoBdbavaDcdfgrBd:ydaocbamzNjjjbhPavc:4efarcdtfawcbyd:K:kjjbHjjjjbbgsBdbavaDcifgqBd:ydaxhoashrinaralIdbalaoydbgwcwawcw6Ecdtfc;ebfIdbMUdbaoclfhoarclfhraicufgimbkavc:4efaqcdtfcuamcdtadcFFFF970Ecbyd:K:kjjbHjjjjbbgqBdbavaDclfBd:yddnadci6mbamceamce0EhiaehoaqhrinarasaoydbcdtfIdbasaoclfydbcdtfIdbMasaocwfydbcdtfIdbMUdbaocxfhoarclfhraicufgimbkkavc;qbfhzavhoavyd:SehHavyd:WehOcbhwcbhrcbhAcehCinaohXcihQaearci2gLcdtfgocwfydbhdaoydbhDabaAcx2fgiclfaoclfydbgKBdbaiaDBdbaicwfadBdbaParfce86bbazadBdwazaKBdlazaDBdbaqarcdtfcbBdbdnawTmbcihQaXhiinazaQcdtfaiydbgoBdbaQaoaD9haoaK9hGaoad9hGfhQaiclfhiawcufgwmbkkaAcefhAaxaDcdtfgoaoydbcufBdbaxaKcdtfgoaoydbcufBdbaxadcdtfgoaoydbcufBdbcbhwinaOaHaeawaLfcdtfydbcdtgifydbcdtfgKhoakaifgDydbgdhidnadTmbdninaoydbarSmeaoclfhoaicufgiTmdxbkkaoadcdtaKfc98fydbBdbaDaDydbcufBdbkawcefgwci9hmbkdndndnaQTmbcuhrJbbbbhYcbhDavyd:SehKavyd:WehLindndnakazaDcdtfydbcdtgofydbgimbaDcefhDxekaDcs0hwasaofgdIdbh8AadalcbaDcefgDawEcdtfIdbalaxaofydbgwcwawcw6Ecdtfc;ebfIdbMgEUdbaEa8A:thEaicdthiaLaKaofydbcdtfhoinaqaoydbgwcdtfgdaEadIdbMg8AUdba8AaYaYa8A9DgdEhYawaradEhraoclfhoaic98fgimbkkaDaQ9hmbkarcu9hmekaCam9pmeindnaPaCfRbbmbaChrxdkamaCcefgC9hmbxdkkaQczaQcz6EhwazhoaXhzarcu9hmekkavyd:ydhokaocdtavc:4effc98fhrdninaoTmearydbcbyd:G:kjjbH:bjjjbbarc98fhraocufhoxbkkavc:Gdf8Kjjjjbk;UlevucuaicdtgvaicFFFFi0Egocbyd:K:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavzNjjjb8Aadci9UhwdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbawceawce0EhDabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic:01jjbz:mjjjbkQbabaeadaic:C:jjjbz:mjjjbk9DeeuabcFeaicdtzNjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;:kivuo99lu8Jjjjjbcj;Hb9Rgl8Kjjjjbcbhvalc1;Gbfcbc;KbzNjjjb8AalcuadcdtadcFFFFi0Egocbyd:K:kjjbHjjjjbbgrBd19GalceBd;O9Galcwfcbyd:m:kjjbBdbalcb8Pd:e:kjjb83ibalc;W;Gbfcwfcbyd:y:kjjbBdbalcb8Pd:q:kjjb83i;W9Gaicd4hwdndnadmbJFFuFhDJFFuuhqJFFuuhkJFFuFhxJFFuuhmJFFuFhPxekawcdthsaehzincbhiinalaifgHazaifIdbgDaHIdbgxaxaD9EEUdbalc;W;GbfaifgHaDaHIdbgxaxaD9DEUdbaiclfgicx9hmbkazasfhzavcefgvad9hmbkalIdwhqalId;49GhDalIdlhkalId;09GhxalIdbhmalId;W9GhPkdndnadTmbJbbbbJbbjZaPam:tJbbbb:xgPaxak:tgxaxaP9DEgxaDaq:tgDaDax9DEgD:vaDJbbbb9BEhDawcdthsarhHadhzindndnaDaeIdbam:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcv2c;j:KM;jbGhvdndnaDaeclfIdbak:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcq2cM;j:KMeGavVhvdndnaDaecwfIdbaq:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaHavaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcC2c:KM;j:KdGVBdbaeasfheaHclfhHazcufgzmbkalcbcj;GbzNjjjbhiarhHadheinaiaHydbgzcFrGcx2fgvavydbcefBdbaiazcq4cFrGcx2fgvavydlcefBdlaiazcC4cFrGcx2fgzazydwcefBdwaHclfhHaecufgembxdkkalcbcj;GbzNjjjb8AkcbhHcbhzcbhecbhvinalaHfgiydbhsaiazBdbaicwfgwydbhOawavBdbaiclfgiydbhwaiaeBdbasazfhzaOavfhvawaefheaHcxfgHcj;Gb9hmbkcbhialaocbyd:K:kjjbHjjjjbbgzBd:m9GdnadTmbabhHinaHaiBdbaHclfhHadaicefgi9hmbkadTmbabhiadhHinalaraiydbgecdtfydbcFrGcx2fgvavydbgvcefBdbazavcdtfaeBdbaiclfhiaHcufgHmbkazhiadhHinalaraiydbgecdtfydbcq4cFrGcx2fgvavydlgvcefBdlabavcdtfaeBdbaiclfhiaHcufgHmbkabhiadhHinalaraiydbgecdtfydbcC4cFrGcx2fgvavydwgvcefBdwazavcdtfaeBdbaiclfhiaHcufgHmbkadTmbcbhiinabazydbcdtfaiBdbazclfhzadaicefgi9hmbkkclhidninaic98Smealc1;Gbfaifydbcbyd:G:kjjbH:bjjjbbaic98fhixbkkalcj;Hbf8Kjjjjbk9teiucbcbyd:O:kjjbgeabcifc98GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:O:kjjbgeabcrfc94GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:O:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:O:kjjbfgdBd:O:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:6ddbcjwk:Cdb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc:Cqkzebbbebbbdbbb8WWbb"), {}).then(function(n) {
|
|
2366
2366
|
(o = n.instance).exports.__wasm_call_ctors(), o.exports.meshopt_encodeVertexVersion(0), o.exports.meshopt_encodeIndexVersion(1);
|
|
2367
2367
|
});
|
|
@@ -2371,27 +2371,27 @@ function Ni(o, e, a) {
|
|
|
2371
2371
|
function A(n) {
|
|
2372
2372
|
return new Uint8Array(n.buffer, n.byteOffset, n.byteLength);
|
|
2373
2373
|
}
|
|
2374
|
-
function i(n,
|
|
2375
|
-
var h = o.exports.sbrk, f = h(
|
|
2376
|
-
u.set(A(
|
|
2377
|
-
var
|
|
2378
|
-
return
|
|
2374
|
+
function i(n, b, d, l, g) {
|
|
2375
|
+
var h = o.exports.sbrk, f = h(b), I = h(l * g), u = new Uint8Array(o.exports.memory.buffer);
|
|
2376
|
+
u.set(A(d), I);
|
|
2377
|
+
var p = n(f, b, I, l, g), B = new Uint8Array(p);
|
|
2378
|
+
return B.set(u.subarray(f, f + p)), h(f - h(0)), B;
|
|
2379
2379
|
}
|
|
2380
2380
|
function s(n) {
|
|
2381
|
-
for (var
|
|
2382
|
-
var l = n[
|
|
2383
|
-
return
|
|
2381
|
+
for (var b = 0, d = 0; d < n.length; ++d)
|
|
2382
|
+
var l = n[d];
|
|
2383
|
+
return b;
|
|
2384
2384
|
}
|
|
2385
|
-
function r(n,
|
|
2386
|
-
if (t(
|
|
2387
|
-
var
|
|
2388
|
-
return new Uint32Array(
|
|
2385
|
+
function r(n, b) {
|
|
2386
|
+
if (t(b == 2 || b == 4), b == 4) return new Uint32Array(n.buffer, n.byteOffset, n.byteLength / 4);
|
|
2387
|
+
var d = new Uint16Array(n.buffer, n.byteOffset, n.byteLength / 2);
|
|
2388
|
+
return new Uint32Array(d);
|
|
2389
2389
|
}
|
|
2390
|
-
function c(n,
|
|
2391
|
-
var I = o.exports.sbrk, u = I(
|
|
2392
|
-
|
|
2393
|
-
var
|
|
2394
|
-
return
|
|
2390
|
+
function c(n, b, d, l, g, h, f) {
|
|
2391
|
+
var I = o.exports.sbrk, u = I(d * l), p = I(d * h), B = new Uint8Array(o.exports.memory.buffer);
|
|
2392
|
+
B.set(A(b), p), n(u, d, l, g, p, f);
|
|
2393
|
+
var C = new Uint8Array(d * l);
|
|
2394
|
+
return C.set(B.subarray(u, u + d * l)), I(u - I(0)), C;
|
|
2395
2395
|
}
|
|
2396
2396
|
})();
|
|
2397
2397
|
var Kt = function() {
|
|
@@ -2409,14 +2409,14 @@ var Kt = function() {
|
|
|
2409
2409
|
for (f = 0; f < g.length; ++f) h[u++] = h[f] < 60 ? e[h[f]] : 64 * (h[f] - 60) + h[++f];
|
|
2410
2410
|
return h.buffer.slice(0, u);
|
|
2411
2411
|
}
|
|
2412
|
-
function s(g, h, f, I, u,
|
|
2413
|
-
var
|
|
2414
|
-
|
|
2415
|
-
var Q = h(x, I, u,
|
|
2416
|
-
if (Q == 0 &&
|
|
2412
|
+
function s(g, h, f, I, u, p, B) {
|
|
2413
|
+
var C = g.exports.sbrk, w = I + 3 & -4, x = C(w * u), y = C(p.length), m = new Uint8Array(g.exports.memory.buffer);
|
|
2414
|
+
m.set(p, y);
|
|
2415
|
+
var Q = h(x, I, u, y, p.length);
|
|
2416
|
+
if (Q == 0 && B && B(x, w, u), f.set(m.subarray(x, x + I * u)), C(x - C(0)), Q != 0) throw new Error("Malformed buffer data: " + Q);
|
|
2417
2417
|
}
|
|
2418
|
-
var r = { NONE: "", OCTAHEDRAL: "meshopt_decodeFilterOct", QUATERNION: "meshopt_decodeFilterQuat", EXPONENTIAL: "meshopt_decodeFilterExp" }, c = { ATTRIBUTES: "meshopt_decodeVertexBuffer", TRIANGLES: "meshopt_decodeIndexBuffer", INDICES: "meshopt_decodeIndexSequence" }, n = [],
|
|
2419
|
-
function
|
|
2418
|
+
var r = { NONE: "", OCTAHEDRAL: "meshopt_decodeFilterOct", QUATERNION: "meshopt_decodeFilterQuat", EXPONENTIAL: "meshopt_decodeFilterExp" }, c = { ATTRIBUTES: "meshopt_decodeVertexBuffer", TRIANGLES: "meshopt_decodeIndexBuffer", INDICES: "meshopt_decodeIndexSequence" }, n = [], b = 0;
|
|
2419
|
+
function d(g) {
|
|
2420
2420
|
var h = { object: new Worker(g), pending: 0, requests: {} };
|
|
2421
2421
|
return h.object.onmessage = function(f) {
|
|
2422
2422
|
var I = f.data;
|
|
@@ -2437,8 +2437,8 @@ var Kt = function() {
|
|
|
2437
2437
|
}
|
|
2438
2438
|
return { ready: A, supported: !0, useWorkers: function(g) {
|
|
2439
2439
|
(function(h) {
|
|
2440
|
-
for (var f = "self.ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(i(t)) + "]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = " + l.name + ";" + s.toString() + l.toString(), I = new Blob([f], { type: "text/javascript" }), u = URL.createObjectURL(I),
|
|
2441
|
-
for (
|
|
2440
|
+
for (var f = "self.ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(i(t)) + "]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = " + l.name + ";" + s.toString() + l.toString(), I = new Blob([f], { type: "text/javascript" }), u = URL.createObjectURL(I), p = n.length; p < h; ++p) n[p] = d(u);
|
|
2441
|
+
for (p = h; p < n.length; ++p) n[p].object.postMessage({});
|
|
2442
2442
|
n.length = h, URL.revokeObjectURL(u);
|
|
2443
2443
|
})(g);
|
|
2444
2444
|
}, decodeVertexBuffer: function(g, h, f, I, u) {
|
|
@@ -2447,18 +2447,18 @@ var Kt = function() {
|
|
|
2447
2447
|
s(a, a.exports.meshopt_decodeIndexBuffer, g, h, f, I);
|
|
2448
2448
|
}, decodeIndexSequence: function(g, h, f, I) {
|
|
2449
2449
|
s(a, a.exports.meshopt_decodeIndexSequence, g, h, f, I);
|
|
2450
|
-
}, decodeGltfBuffer: function(g, h, f, I, u,
|
|
2451
|
-
s(a, a.exports[c[u]], g, h, f, I, a.exports[r[
|
|
2450
|
+
}, decodeGltfBuffer: function(g, h, f, I, u, p) {
|
|
2451
|
+
s(a, a.exports[c[u]], g, h, f, I, a.exports[r[p]]);
|
|
2452
2452
|
}, decodeGltfBufferAsync: function(g, h, f, I, u) {
|
|
2453
|
-
return n.length > 0 ? function(
|
|
2454
|
-
for (var
|
|
2453
|
+
return n.length > 0 ? function(p, B, C, w, x) {
|
|
2454
|
+
for (var y = n[0], m = 1; m < n.length; ++m) n[m].pending < y.pending && (y = n[m]);
|
|
2455
2455
|
return new Promise(function(Q, k) {
|
|
2456
|
-
var D = new Uint8Array(
|
|
2457
|
-
|
|
2456
|
+
var D = new Uint8Array(C), F = ++b;
|
|
2457
|
+
y.pending += p, y.requests[F] = { resolve: Q, reject: k }, y.object.postMessage({ id: F, count: p, size: B, source: D, mode: w, filter: x }, [D.buffer]);
|
|
2458
2458
|
});
|
|
2459
2459
|
}(g, h, f, c[I], r[u]) : A.then(function() {
|
|
2460
|
-
var
|
|
2461
|
-
return s(a, a.exports[c[I]],
|
|
2460
|
+
var p = new Uint8Array(g * h);
|
|
2461
|
+
return s(a, a.exports[c[I]], p, g, h, f, a.exports[r[u]]), p;
|
|
2462
2462
|
});
|
|
2463
2463
|
} };
|
|
2464
2464
|
}();
|
|
@@ -2467,12 +2467,12 @@ var Kt = function() {
|
|
|
2467
2467
|
if (typeof WebAssembly != "object") return { supported: !1 };
|
|
2468
2468
|
var a = WebAssembly.instantiate(function(r) {
|
|
2469
2469
|
for (var c = new Uint8Array(r.length), n = 0; n < r.length; ++n) {
|
|
2470
|
-
var
|
|
2471
|
-
c[n] =
|
|
2470
|
+
var b = r.charCodeAt(n);
|
|
2471
|
+
c[n] = b > 96 ? b - 97 : b > 64 ? b - 39 : b + 4;
|
|
2472
2472
|
}
|
|
2473
|
-
var
|
|
2474
|
-
for (n = 0; n < r.length; ++n) c[
|
|
2475
|
-
return c.buffer.slice(0,
|
|
2473
|
+
var d = 0;
|
|
2474
|
+
for (n = 0; n < r.length; ++n) c[d++] = c[n] < 60 ? e[c[n]] : 64 * (c[n] - 60) + c[++n];
|
|
2475
|
+
return c.buffer.slice(0, d);
|
|
2476
2476
|
}("b9H79Tebbbe9Ek9Geueu9Geub9Gbb9GPuuuuuuuuuuu99uueu9Gvuuuuub9Gluuuub9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuizsdilvoirwDbqqbeqlve9Weiiviebeoweuec:G;jekr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bl8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bvQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7boX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbra9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbwl79IV9RbDDwebcekdxmq::9Usdbk;i6iKuY99Ou8Jjjjjbc;W;ab9RgP8KjjjjbaPcwfcbc;Kbz:ljjjb8AaPcualcefgscdtascFFFFi0Ecbyd1:jjjbHjjjjbbgzBdwaPceBd9OaPazBdbaPcuadcitadcFFFFe0Ecbyd1:jjjbHjjjjbbgHBdxaPcdBd9OaPaHBdlaPaeadalcbz:cjjjbaPcualcdtgOalcFFFFi0EgAcbyd1:jjjbHjjjjbbgCBdzaPciBd9OaPaAcbyd1:jjjbHjjjjbbgXBdCaPclBd9Oalcd4alfhQcehLinaLgscethLasaQ6mbkcbhKaPcuascdtgLascFFFFi0Ecbyd1:jjjbHjjjjbbgQBdKaPcvBd9OaQcFeaLz:ljjjbhYdnalTmbavcd4h8AascufhEinaiaKa8A2cdtfg3ydlgscH4as7c:F:b:DD2a3ydbgscH4as7c;D;O:B8J27a3ydwgscH4as7c:3F;N8N27hQcbhsdndninaYaQaEGgQcdtfg5ydbgLcuSmeaiaLa8A2cdtfa3cxz:ojjjbTmdascefgsaQfhQasaE9nmbxdkka5aKBdbaKhLkaCaKcdtfaLBdbaKcefgKal9hmbkcbhsaXhLinaLasBdbaLclfhLalascefgs9hmbkcbhsaChLaXhQindnasaLydbgESmbaQaXaEcdtfgEydbBdbaEasBdbkaLclfhLaQclfhQalascefgs9hmbkkcbh8EaYcbyd:m:jjjbH:bjjjbbaPclBd9OaPalcbyd1:jjjbHjjjjbbgEBdKaPcvBd9OaPaAcbyd1:jjjbHjjjjbbgsBd3aPcoBd9OaPaAcbyd1:jjjbHjjjjbbgLBdaaPcrBd9OascFeaOz:ljjjbh8FaLcFeaOz:ljjjbhadnalTmbaHcwfhhindnaza8EgQcefg8Ecdtfydbg3azaQcdtgsfydbgLSmba3aL9RhOaHaLcitfhgaaasfh8Ja8FasfhKcbh8Aindndnaga8Acitfydbg5aQ9hmbaKaQBdba8JaQBdbxekdnaza5cdtg8KfgsclfydbgLasydbgsSmbaHascitg3fydbaQSmeaLas9Rh8Lascu7aLfhYaha3fhLcbhsinaYasSmeascefhsaLydbh3aLcwfhLa3aQ9hmbkasa8L6mekaaa8KfgsaQa5asydbcuSEBdbaKa5aQaKydbcuSEBdbka8Acefg8AaO9hmbkka8Eal9hmbkaChLaXhQaah3a8Fh8AcbhsindndnasaLydbg59hmbdnasaQydbg59hmba8Aydbh5dna3ydbgYcu9hmba5cu9hmbaEasfcb86bbxikaEasfhKdnasaYSmbasa5SmbaKce86bbxikaKcl86bbxdkdnasaXa5cdtgYfydb9hmbdna3ydbgKcuSmbasaKSmba8AydbgOcuSmbasaOSmbaaaYfydbggcuSmbaga5Smba8FaYfydbgYcuSmbaYa5SmbdnaCaKcdtfydbaCaYcdtfydb9hmbaCaOcdtfydbaCagcdtfydb9hmbaEasfcd86bbxlkaEasfcl86bbxikaEasfcl86bbxdkaEasfcl86bbxekaEasfaEa5fRbb86bbkaLclfhLaQclfhQa3clfh3a8Aclfh8Aalascefgs9hmbkaxceGTmbaEhsalhLindnasRbbce9hmbascl86bbkascefhsaLcufgLmbkkcualcx2alc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8JaPcwfaPyd9Ogscdtfa8JBdbaPascefgOBd9Oa8Jaialavz:djjjbdndnaDmbcbhvxekcbh5aPcwfaOcdtfcuaDal2gLcdtaLcFFFFi0Ecbyd1:jjjbHjjjjbbgvBdbaPascdfgOBd9OalTmbarcd4cdthYaDcdthKavh8AinaohsawhLa8AhQaDh3inaQasIdbaLIdbNUdbasclfhsaLclfhLaQclfhQa3cufg3mbkaoaYfhoa8AaKfh8Aa5cefg5al9hmbkkaPcwfaOcdtfcualc8S2gsalc;D;O;f8U0EgQcbyd1:jjjbHjjjjbbgLBdbaPaOcefg3Bd9OaLcbasz:ljjjbh8EdndndnaDTmbaPcwfa3cdtfaQcbyd1:jjjbHjjjjbbgoBdbaPaOcdfgLBd9Oaocbasz:ljjjb8AaPcwfaLcdtfcuaDal2gscltgLascFFFFb0Ecbyd1:jjjbHjjjjbbgwBdbaPaOcifBd9OawcbaLz:ljjjb8AadmexdkcbhocbhwadTmekcbh8AaehLindna8JaLclfydbg5cx2fgsIdba8JaLydbgYcx2fgQIdbg8M:tg8Na8JaLcwfydbgKcx2fg3IdlaQIdlgy:tg8PNa3Idba8M:tgIasIdlay:tg8RN:tg8Sa8SNa8Ra3IdwaQIdwgR:tg8UNa8PasIdwaR:tg8RN:tg8Pa8PNa8RaINa8Ua8NN:tg8Na8NNMM:rgIJbbbb9ETmba8SaI:vh8Sa8NaI:vh8Na8PaI:vh8Pka8EaCaYcdtfydbc8S2fgsa8PaI:rgIa8PNNg8RasIdbMUdbasa8NaIa8NNg8VNg8UasIdlMUdlasa8SaIa8SNg8WNg8XasIdwMUdwasa8Va8PNg8VasIdxMUdxasa8Wa8PNg8YasIdzMUdzasa8Wa8NNg8WasIdCMUdCasa8PaIa8SaRNa8Pa8MNaya8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asa8Sa8MNg8SasIdaMUdaasa8MayNg8MasId8KMUd8KasaIasIdyMUdya8EaCa5cdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdya8EaCaKcdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdyaLcxfhLa8Acifg8Aad6mbkcbh5aehYincbhLinaEaeaLc:G1jjbfydba5fcdtfydbgQfRbbhsdndnaEaYaLfydbg3fRbbg8Ac99fcFeGcpe0mbasceSmbascd9hmekdna8AcufcFeGce0mba8Fa3cdtfydbaQ9hmekdnascufcFeGce0mbaaaQcdtfydba39hmekdna8Acv2asfc:W1jjbfRbbTmbaCaQcdtfydbaCa3cdtfydb0mekJbbacJbbjZasceSEhIa8AceShOa8JaeaLc:K1jjbfydba5fcdtfydbcx2fhsdna8JaQcx2fg8AIdwa8Ja3cx2fgKIdwgy:tg8Pa8PNa8AIdbaKIdbgR:tg8Na8NNa8AIdlaKIdlg8R:tg8Sa8SNMM:rg8MJbbbb9ETmba8Pa8M:vh8Pa8Sa8M:vh8Sa8Na8M:vh8NkJbbacaIaOEh8WdnasIdway:tgIa8PaIa8PNasIdbaR:tg8Xa8NNa8SasIdla8R:tg8VNMMg8UN:tgIaINa8Xa8Na8UN:tg8Pa8PNa8Va8Sa8UN:tg8Na8NNMM:rg8SJbbbb9ETmbaIa8S:vhIa8Na8S:vh8Na8Pa8S:vh8Pka8EaCa3cdtfydbc8S2fgsa8Pa8Wa8MNg8Sa8PNNg8UasIdbMUdbasa8Na8Sa8NNg8WNg8XasIdlMUdlasaIa8SaINg8MNg8VasIdwMUdwasa8Wa8PNg8WasIdxMUdxasa8Ma8PNg8YasIdzMUdzasa8Ma8NNg8ZasIdCMUdCasa8Pa8SaIayNa8PaRNa8Ra8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asaIa8MNgIasIdaMUdaasa8MayNg8MasId8KMUd8Kasa8SasIdyMUdya8EaCaQcdtfydbc8S2fgsa8UasIdbMUdbasa8XasIdlMUdlasa8VasIdwMUdwasa8WasIdxMUdxasa8YasIdzMUdzasa8ZasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asaIasIdaMUdaasa8MasId8KMUd8Kasa8SasIdyMUdykaLclfgLcx9hmbkaYcxfhYa5cifg5ad6mbkaDTmbcbhYinJbbbbhRa8JaeaYcdtfgsclfydbgKcx2fgLIdwa8JasydbgOcx2fgQIdwg8V:tg8Na8NNaLIdbaQIdbg8Y:tgIaINaLIdlaQIdlg8Z:tg8Sa8SNMMg8Wa8Jascwfydbggcx2fgsIdwa8V:tg8MNa8Na8Na8MNaIasIdba8Y:tgyNa8SasIdla8Z:tg8RNMMg8PN:tJbbbbJbbjZa8Wa8Ma8MNayayNa8Ra8RNMMg8XNa8Pa8PN:tg8U:va8UJbbbb9BEg8UNh80a8Xa8NNa8Ma8PN:ta8UNh81a8Wa8RNa8Sa8PN:ta8UNhBa8Xa8SNa8Ra8PN:ta8UNh83a8WayNaIa8PN:ta8UNhUa8XaINaya8PN:ta8UNh85aIa8RNaya8SN:tg8Pa8PNa8Sa8MNa8Ra8NN:tg8Pa8PNa8NayNa8MaIN:tg8Pa8PNMM:r:rh8PavaOaD2cdtfhLavagaD2cdtfhQavaKaD2cdtfh3a8V:mh86a8Z:mh87a8Y:mh88cbh8AaDh5Jbbbbh8RJbbbbh8UJbbbbh8WJbbbbh8XJbbbbh8VJbbbbh8YJbbbbh8ZJbbbbh89Jbbbbh8:inaPc;Wbfa8Afgscwfa8Pa81a3IdbaLIdbg8M:tg8SNa80aQIdba8M:tgyNMg8NNUdbasclfa8Pa83a8SNaBayNMgINUdbasa8Pa85a8SNaUayNMg8SNUdbascxfa8Pa86a8NNa87aINa8Ma88a8SNMMMg8MNUdba8Pa8NaINNa8XMh8Xa8Pa8Na8SNNa8VMh8Va8PaIa8SNNa8YMh8Ya8Pa8Ma8MNNaRMhRa8Pa8Na8MNNa8RMh8Ra8PaIa8MNNa8UMh8Ua8Pa8Sa8MNNa8WMh8Wa8Pa8Na8NNNa8ZMh8Za8PaIaINNa89Mh89a8Pa8Sa8SNNa8:Mh8:aLclfhLa3clfh3aQclfhQa8Aczfh8Aa5cufg5mbkaoaCaOcdtfydbgLc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCaKcdtfydbgKc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCagcdtfydbgOc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyawaLaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaKaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaOaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkaYcifgYad6mbkkdnabaeSmbabaeadcdtz:kjjjb8AkaPydbhZcbhsdnalTmbaZclfhsaZydbh3aEhLalh8AcbhQincbasydbg5a39RaLRbbcpeGEaQfhQaLcefhLasclfhsa5h3a8Acufg8AmbkaQce4hskcuadas9Rcifgrcx2arc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8LaPcwfaPyd9Ogscdtfa8LBdbaPascefgLBd9OaPcwfaLcdtfcuarcdtarcFFFFi0Ecbyd1:jjjbHjjjjbbgxBdbaPascdfgLBd9OaPcwfaLcdtfaAcbyd1:jjjbHjjjjbbgHBdbaPascifgLBd9OaPcwfaLcdtfalcbyd1:jjjbHjjjjbbgnBdbaPasclfBd9OJbbbbh8Ydnadaq9nmbdnarci6mbakakNh8VaDclthca8Lcwfh9cJbbbbh8YinaPabadghalaCz:cjjjbabhOcbhzcbhKincbhsindnaCaOasfydbgQcdtgYfydbg8AaCabasc;m1jjbfydbaKfcdtfydbgLcdtfydbg5SmbaEaLfRbbgecv2aEaQfRbbg3fc;G1jjbfRbbg8Ka3cv2aefggc;G1jjbfRbbgiVcFeGTmbdnagc:W1jjbfRbbTmba5a8A0mekdna3ae9hmba3cufcFeGce0mba8FaYfydbaL9hmeka8Lazcx2fg3aLaQaicFeGg8AEBdla3aQaLa8AEBdba3a8Aa8KGcb9hBdwazcefhzkasclfgscx9hmbkdnaKcifgKah9pmbaOcxfhOazcifar9nmekkdnazmbahhdxikcbheinJbbbbJbbjZa8EaCa8Laecx2fg3ydlg8Aa3ydbg5a3ydwgLEgKcdtfydbg8Kc8S2gifgsIdyg8P:va8PJbbbb9BEasIdwa8Ja5a8AaLEgYcx2fgLIdwg8SNasIdzaLIdbg8MNasIdaMg8Pa8PMMa8SNasIdlaLIdlgyNasIdCa8SNasId3Mg8Pa8PMMayNasIdba8MNasIdxayNasIdKMg8Pa8PMMa8MNasId8KMMM:lNh8WJbbbbJbbjZa8EaCa5cdtfydbgdc8S2gQfgsIdyg8P:va8PJbbbb9BEasIdwa8Ja8Acx2fgLIdwgINasIdzaLIdbgRNasIdaMg8Pa8PMMaINasIdlaLIdlg8RNasIdCaINasId3Mg8Pa8PMMa8RNasIdbaRNasIdxa8RNasIdKMg8Pa8PMMaRNasId8KMMM:lNh8Xa3cwfhOa3clfhgdnaDTmbaoaQfgQIdwaINaQIdzaRNaQIdaMg8Pa8PMMaINaQIdla8RNaQIdCaINaQId3Mg8Pa8PMMa8RNaQIdbaRNaQIdxa8RNaQIdKMg8Pa8PMMaRNaQId8KMMMh8Nava8AaD2cdtfhLawadaD2cltfhsaQIdyh8UaDhQinaLIdbg8PJbbb;aNascxfIdbaIascwfIdbNaRasIdbNa8RasclfIdbNMMMNa8Pa8PNa8UNa8NMMh8NaLclfhLasczfhsaQcufgQmbkaoaifgQIdwa8SNaQIdza8MNaQIdaMg8Pa8PMMa8SNaQIdlayNaQIdCa8SNaQId3Mg8Pa8PMMayNaQIdba8MNaQIdxayNaQIdKMg8Pa8PMMa8MNaQId8KMMMhIavaYaD2cdtfhLawa8KaD2cltfhsaQIdyhRaDhQinaLIdbg8PJbbb;aNascxfIdba8SascwfIdbNa8MasIdbNayasclfIdbNMMMNa8Pa8PNaRNaIMMhIaLclfhLasczfhsaQcufgQmbka8WaI:lMh8Wa8Xa8N:lMh8Xkaga8AaYa8Xa8W9FgsEBdba3a5aKasEBdbaOa8Xa8WasEUdbaecefgeaz9hmbkaPc;Wbfcbcj;abz:ljjjb8Aa9chsazhLinaPc;WbfasydbcO4c;8ZGfgQaQydbcefBdbascxfhsaLcufgLmbkcbhscbhLinaPc;WbfasfgQydbh3aQaLBdba3aLfhLasclfgscj;ab9hmbkcbhsa9chLinaPc;WbfaLydbcO4c;8ZGfgQaQydbgQcefBdbaxaQcdtfasBdbaLcxfhLazascefgs9hmbkahaq9RgQci9UhJdnalTmbcbhsaHhLinaLasBdbaLclfhLalascefgs9hmbkkcbh9eancbalz:ljjjbhTaQcO9UhSaJce4h9haPydlh9icbhicbhgdnina8Laxagcdtfydbcx2fgOIdwg8Na8V9EmeaiaJ9pmeJFFuuh8Pdna9haz9pmba8Laxa9hcdtfydbcx2fIdwJbb;aZNh8Pkdna8Na8P9ETmbaiaS0mdkdnaTaCaOydlg6cdtg9kfydbg3fg0RbbaTaCaOydbgKcdtg9mfydbg9nfg9oRbbVmbdnaZa9ncdtfgsclfydbgLasydbgsSmbaLas9Rh5a9iascitfhsa8Ja3cx2fgYcwfhdaYclfhAa8Ja9ncx2fg8Kcwfh9pa8Kclfh9qcbhLcehednindnaHasydbcdtfydbgQa3SmbaHasclfydbcdtfydbg8Aa3SmbaQa8ASmba8Ja8Acx2fg8AIdba8JaQcx2fgQIdbgI:tg8Pa9qIdbaQIdlg8S:tg8MNa8KIdbaI:tgya8AIdla8S:tg8NN:ta8PaAIdba8S:tgRNaYIdbaI:tg8Ra8NN:tNa8Na9pIdbaQIdwg8S:tg8UNa8Ma8AIdwa8S:tgIN:ta8NadIdba8S:tg8SNaRaIN:tNaIayNa8Ua8PN:taIa8RNa8Sa8PN:tNMMJbbbb9FmdkascwfhsaLcefgLa56hea5aL9hmbkkaeceGTmba9hcefh9hxeka8Ea3c8S2gQfgsa8Ea9nc8S2g8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdydnaDTmbaoaQfgsaoa8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdyaca9n2heaca32hYawhLaDh8AinaLaYfgsaLaefgQIdbasIdbMUdbasclfg5aQclfIdba5IdbMUdbascwfg5aQcwfIdba5IdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa8Acufg8AmbkkaOcwfhLdndndndnaEaKfgQRbbc9:fPdebdkaKhsinaHascdtgsfa3BdbaXasfydbgsaK9hmbxikkaXa9kfydbhsaXa9mfydbhKaHa9mfa6Bdbash6kaHaKcdtfa6Bdbka9oce86bba0ce86bbaLIdbg8Pa8Ya8Ya8P9DEh8Ya9ecefh9ececdaQRbbceSEaifhikagcefggaz9hmbkkdna9embahhdxikdnalTmbcbhLa8FhsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmba8Fa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkcbhLaahsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmbaaa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkkcbhdabhscbh8AindnaHasydbcdtfydbgLaHasclfydbcdtfydbgQSmbaLaHascwfydbcdtfydbg3SmbaQa3Smbabadcdtfg5aLBdba5clfaQBdba5cwfa3Bdbadcifhdkascxfhsa8Acifg8Aah6mbkadaq9nmdxbkkaPabadalaCz:cjjjbkdnamTmbama8Y:rUdbkaPyd9OgscdtaPcwffc98fhCdninasTmeaCydbcbyd:m:jjjbH:bjjjbbaCc98fhCascufhsxbkkaPc;W;abf8Kjjjjbadk;:ieouabydlhvabydbclfcbaicdtz:ljjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbarcearce0EhdinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfheadcufgdmbkkabydbcbBdbk:Zldouv998Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdnadTmbaicd4hvdnabTmbavcdthocbhraehwinabarcx2fgiaearav2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinalczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawaofhwarcefgrad9hmbxdkkavcdthrcbhwincbhiinalczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbkkdnabTmbadTmbJbbbbJbbjZalIdbalIdzgk:tJbbbb:xgqalIdlalIdCgx:tgmamaq9DEgqalIdwalIdKgm:tgPaPaq9DEgq:vaqJbbbb9BEhqinabaqabIdbak:tNUdbabclfgiaqaiIdbax:tNUdbabcwfgiaqaiIdbam:tNUdbabcxfhbadcufgdmbkkk8KbabaeadaialavcbcbcbcbaoarawaDz:bjjjbk8KbabaeadaialavaoarawaDaqakaxamz:bjjjbk;lOowud99wue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcwfcbc;Kbz:ljjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbgqBdwawceBd9Oaqaeadaiz:djjjbawcuadcdtadcFFFFi0Egkcbyd1:jjjbHjjjjbbgxBdxawcdBd9Oadcd4adfhmceheinaegicetheaiam6mbkcbhmawcuaicdtgPaicFFFFi0Ecbyd1:jjjbHjjjjbbgsBdzawciBd9Odndnar:Zgz:rJbbbZMgH:lJbbb9p9DTmbaH:Ohexekcjjjj94hekaicufhOc:bwhAcbhCcbhXadhQinaChLaeaAgKcufaeaK9iEamgDcefaeaD9kEhYdndnadTmbaYcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbh3cbh5indnaEaxa5cdtfydbgAcm4aA7c:v;t;h;Ev2gics4ai7aOGgmcdtfgCydbgecuSmbaeaASmbcehiinaEamaifaOGgmcdtfgCydbgecuSmeaicefhiaeaA9hmbkkaCaABdba3aecuSfh3a5cefg5ad9hmbxdkkascFeaPz:ljjjb8Acbh3kaDaYa3ar0giEhmaLa3aiEhCdna3arSmbaYaKaiEgAam9Rcd9imbdndnaXcl0mbdnaQ:ZgHaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa3:Zghaz:tNNNaHaz:taaNa8Aah:tNa8Aaz:ta8FNahaH:tNM:va8EMJbbbZMgH:lJbbb9p9DTmbaH:Ohexdkcjjjj94hexekamaAfcd9Theka3aQaiEhQaXcefgXcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd1:jjjbHjjjjbbg5BdCawclBd9OdndnadTmbamcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbhDcbh3inaxa3cdtgYfydbgAcm4aA7c:v;t;h;Ev2gics4ai7hecbhidndninaEaeaOGgmcdtfgCydbgecuSmednaxaecdtgCfydbaASmbaicefgiamfheaiaO9nmekka5aCfydbhixekaCa3BdbaDhiaDcefhDka5aYfaiBdba3cefg3ad9hmbkcuaDc32giaDc;j:KM;jb0EhexekascFeaPz:ljjjb8AcbhDcbhekawaecbyd1:jjjbHjjjjbbgeBdKawcvBd9Oaecbaiz:ljjjbhOavcd4hxdnadTmbaxcdth3a5hmalhAaqheadhEinaOamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaAc;81jjbalEgCIdbaiIdxMUdxaiaCIdlaiIdzMUdzaiaCIdwaiIdCMUdCaiaiIdKJbbjZMUdKamclfhmaAa3fhAaecxfheaEcufgEmbkkdnaDTmbaOcxfhiaDheinaictfgmamIdbJbbbbJbbjZaicxfIdbgH:vaHJbbbb9BEgHNUdbaic94fgmaHamIdbNUdbaic98fgmaHamIdbNUdbaiaHaiIdbNUdbaiclfgmaHamIdbNUdbaicwfgmaHamIdbNUdbaic3fhiaecufgembkkcbhAawcuaDcdtgYaDcFFFFi0Egicbyd1:jjjbHjjjjbbgeBd3awcoBd9Oawaicbyd1:jjjbHjjjjbbgEBdaaecFeaYz:ljjjbh3dnadTmbaoaoNh8Aaxcdthxalheina8Aaec;81jjbalEgmIdwaOa5ydbgCc32fgiIdC:tgHaHNamIdbaiIdx:tgHaHNamIdlaiIdz:tgHaHNMMNaqcwfIdbaiIdw:tgHaHNaqIdbaiIdb:tgHaHNaqclfIdbaiIdl:tgHaHNMMMhHdndna3aCcdtgifgmydbcuSmbaEaifIdbaH9ETmekamaABdbaEaifaHUdbka5clfh5aeaxfheaqcxfhqadaAcefgA9hmbkkaba3aYz:kjjjb8AcrhikaicdthiinaiTmeaic98fgiawcwffydbcbyd:m:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Qdidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgoaDIdbgrarao9EEUdbaladfgDaoaDIdbgrarao9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkavJbbbb:xgvaoaoav9DEgoararao9DEk9DeeuabcFeaicdtz:ljjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk6eiucbhidnadTmbdninabRbbglaeRbbgv9hmeaecefheabcefhbadcufgdmbxdkkalav9Rhikaikk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbebbbdbbbbbbbebbbeeebeebebbeeebebbbbbebebbbbbebbbdbbbbbbbbbbbbbbbeeeeebebbbbbebbbbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:G9Kbb"), {}).then(function(r) {
|
|
2477
2477
|
(o = r.instance).exports.__wasm_call_ctors();
|
|
2478
2478
|
});
|
|
@@ -2482,20 +2482,20 @@ var Kt = function() {
|
|
|
2482
2482
|
function A(r) {
|
|
2483
2483
|
return new Uint8Array(r.buffer, r.byteOffset, r.byteLength);
|
|
2484
2484
|
}
|
|
2485
|
-
function i(r, c, n,
|
|
2486
|
-
var f = o.exports.sbrk, I = f(4 * h), u = f(n *
|
|
2487
|
-
|
|
2488
|
-
var
|
|
2485
|
+
function i(r, c, n, b, d, l, g, h) {
|
|
2486
|
+
var f = o.exports.sbrk, I = f(4 * h), u = f(n * b), p = f(n * l), B = new Uint8Array(o.exports.memory.buffer);
|
|
2487
|
+
B.set(A(c), u), d && B.set(A(d), p);
|
|
2488
|
+
var C = r(I, u, n, b, p, l, g, h);
|
|
2489
2489
|
new Uint8Array(o.exports.memory.buffer);
|
|
2490
|
-
var
|
|
2491
|
-
return A(
|
|
2490
|
+
var w = new Uint32Array(C);
|
|
2491
|
+
return A(w).set(B.subarray(I, I + 4 * C)), f(I - f(0)), w;
|
|
2492
2492
|
}
|
|
2493
2493
|
var s = { LockBorder: 1 };
|
|
2494
2494
|
})();
|
|
2495
2495
|
let ae = 0;
|
|
2496
|
-
class
|
|
2496
|
+
class Ni {
|
|
2497
2497
|
constructor(e) {
|
|
2498
|
-
if (this.renderer = e.renderer, this.zUpToYUpMatrix = new
|
|
2498
|
+
if (this.renderer = e.renderer, this.zUpToYUpMatrix = new E.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1), this.maxCachedItems = 100, this.proxy = e.proxy, e && (this.meshCallback = e.meshCallback, this.pointsCallback = e.pointsCallback, e.maxCachedItems != null && (this.maxCachedItems = e.maxCachedItems)), this.gltfLoader = new Dt(), e && e.dracoLoader) this.gltfLoader.setDRACOLoader(e.dracoLoader), this.hasDracoLoader = !0;
|
|
2499
2499
|
else {
|
|
2500
2500
|
const a = new Rt();
|
|
2501
2501
|
a.setDecoderPath("https://storage.googleapis.com/ogc-3d-tiles/draco/"), this.gltfLoader.setDRACOLoader(a), this.gltfLoader.hasDracoLoader = !0;
|
|
@@ -2505,7 +2505,7 @@ class Pi {
|
|
|
2505
2505
|
const a = new P();
|
|
2506
2506
|
a.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer), this.gltfLoader.setKTX2Loader(a), this.gltfLoader.hasKTX2Loader = !0;
|
|
2507
2507
|
}
|
|
2508
|
-
this.gltfLoader.setMeshoptDecoder(Kt), this.hasMeshOptDecoder = !0, this.b3dmDecoder = new xt(this.gltfLoader), this.splatsDecoder = new
|
|
2508
|
+
this.gltfLoader.setMeshoptDecoder(Kt), this.hasMeshOptDecoder = !0, this.b3dmDecoder = new xt(this.gltfLoader), this.splatsDecoder = new XA(this.gltfLoader, this.renderer), this.cache = new yt(), this.register = {}, this.ready = [], this.downloads = [], this.nextReady = [], this.nextDownloads = [];
|
|
2509
2509
|
}
|
|
2510
2510
|
update() {
|
|
2511
2511
|
const e = this;
|
|
@@ -2566,7 +2566,7 @@ class Pi {
|
|
|
2566
2566
|
}
|
|
2567
2567
|
}
|
|
2568
2568
|
}
|
|
2569
|
-
get(e, a, t, A, i, s, r, c, n,
|
|
2569
|
+
get(e, a, t, A, i, s, r, c, n, b, d) {
|
|
2570
2570
|
const l = this, g = ct(t), h = new AbortController();
|
|
2571
2571
|
if (e.signal.addEventListener("abort", () => {
|
|
2572
2572
|
l.register[g] && Object.keys(l.register[g]).length != 0 || h.abort("user abort");
|
|
@@ -2579,20 +2579,20 @@ class Pi {
|
|
|
2579
2579
|
I = l.proxy ? () => fetch(l.proxy, { method: "POST", body: t, signal: h.signal }) : () => fetch(t, { signal: h.signal }), ae++, I().then((u) => {
|
|
2580
2580
|
if (!u.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${u.status} : ${u.statusText}`);
|
|
2581
2581
|
return u.arrayBuffer();
|
|
2582
|
-
}).then((u) => this.b3dmDecoder.parseB3DM(u, (
|
|
2583
|
-
l.meshCallback(
|
|
2582
|
+
}).then((u) => this.b3dmDecoder.parseB3DM(u, (p) => {
|
|
2583
|
+
l.meshCallback(p, b);
|
|
2584
2584
|
}, c, n)).then((u) => {
|
|
2585
2585
|
l.cache.put(g, u), l._checkSize(), this._meshReceived(l.cache, l.register, g, i, s, r, a);
|
|
2586
2586
|
}).catch((u) => {
|
|
2587
2587
|
}).finally(() => {
|
|
2588
2588
|
ae--;
|
|
2589
2589
|
});
|
|
2590
|
-
} : t.includes(".glb") || t.includes(".gltf") ? f =
|
|
2590
|
+
} : t.includes(".glb") || t.includes(".gltf") ? f = d ? () => {
|
|
2591
2591
|
var I;
|
|
2592
2592
|
I = l.proxy ? () => fetch(l.proxy, { method: "POST", body: t, signal: h.signal }) : () => fetch(t, { signal: h.signal }), ae++, I().then((u) => {
|
|
2593
2593
|
if (!u.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${u.status} : ${u.statusText}`);
|
|
2594
2594
|
return u.arrayBuffer();
|
|
2595
|
-
}).then((u) => this.splatsDecoder.parseSplats(u, c, n,
|
|
2595
|
+
}).then((u) => this.splatsDecoder.parseSplats(u, c, n, d)).then((u) => {
|
|
2596
2596
|
l.cache.put(g, u), l._checkSize(), l._meshReceived(l.cache, l.register, g, i, s, r, a);
|
|
2597
2597
|
}).catch((u) => {
|
|
2598
2598
|
}).finally(() => {
|
|
@@ -2604,16 +2604,16 @@ class Pi {
|
|
|
2604
2604
|
if (!u.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${u.status} : ${u.statusText}`);
|
|
2605
2605
|
return u.arrayBuffer();
|
|
2606
2606
|
}).then(async (u) => {
|
|
2607
|
-
await async function(
|
|
2608
|
-
return new Promise((
|
|
2609
|
-
const
|
|
2610
|
-
|
|
2607
|
+
await async function(p) {
|
|
2608
|
+
return new Promise((B) => {
|
|
2609
|
+
const C = setInterval(() => {
|
|
2610
|
+
p.hasDracoLoader && !p.dracoLoader || p.hasKTX2Loader && !p.ktx2Loader || (clearInterval(C), B());
|
|
2611
2611
|
}, 10);
|
|
2612
2612
|
});
|
|
2613
|
-
}(this.gltfLoader), this.gltfLoader.parse(u, null, (
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
}), l.cache.put(g,
|
|
2613
|
+
}(this.gltfLoader), this.gltfLoader.parse(u, null, (p) => {
|
|
2614
|
+
p.scene.asset = p.asset, c && p.scene.applyMatrix4(this.zUpToYUpMatrix), p.scene.traverse((B) => {
|
|
2615
|
+
B.isMesh && (n && B.applyMatrix4(this.zUpToYUpMatrix), l.meshCallback && l.meshCallback(B, b)), B.isPoints && l.pointsCallback && l.pointsCallback(B, b);
|
|
2616
|
+
}), l.cache.put(g, p.scene), l._checkSize(), l._meshReceived(l.cache, l.register, g, i, s, r, a);
|
|
2617
2617
|
});
|
|
2618
2618
|
}).catch((u) => {
|
|
2619
2619
|
u !== "user abort" && u.code;
|
|
@@ -2697,7 +2697,7 @@ function dt(o, e) {
|
|
|
2697
2697
|
}
|
|
2698
2698
|
return t;
|
|
2699
2699
|
}
|
|
2700
|
-
var
|
|
2700
|
+
var De = { resolve: function() {
|
|
2701
2701
|
for (var o, e = "", a = !1, t = arguments.length - 1; t >= -1 && !a; t--) {
|
|
2702
2702
|
var A;
|
|
2703
2703
|
t >= 0 ? A = arguments[t] : (o === void 0 && (o = process.cwd()), A = o), Y(A), A.length !== 0 && (e = A + "/" + e, a = A.charCodeAt(0) === 47);
|
|
@@ -2715,9 +2715,9 @@ var ke = { resolve: function() {
|
|
|
2715
2715
|
var a = arguments[e];
|
|
2716
2716
|
Y(a), a.length > 0 && (o === void 0 ? o = a : o += "/" + a);
|
|
2717
2717
|
}
|
|
2718
|
-
return o === void 0 ? "." :
|
|
2718
|
+
return o === void 0 ? "." : De.normalize(o);
|
|
2719
2719
|
}, relative: function(o, e) {
|
|
2720
|
-
if (Y(o), Y(e), o === e || (o =
|
|
2720
|
+
if (Y(o), Y(e), o === e || (o = De.resolve(o)) === (e = De.resolve(e))) return "";
|
|
2721
2721
|
for (var a = 1; a < o.length && o.charCodeAt(a) === 47; ++a) ;
|
|
2722
2722
|
for (var t = o.length, A = t - a, i = 1; i < e.length && e.charCodeAt(i) === 47; ++i) ;
|
|
2723
2723
|
for (var s = e.length - i, r = A < s ? A : s, c = -1, n = 0; n <= r; ++n) {
|
|
@@ -2728,13 +2728,13 @@ var ke = { resolve: function() {
|
|
|
2728
2728
|
} else A > r && (o.charCodeAt(a + n) === 47 ? c = n : n === 0 && (c = 0));
|
|
2729
2729
|
break;
|
|
2730
2730
|
}
|
|
2731
|
-
var
|
|
2732
|
-
if (
|
|
2733
|
-
|
|
2731
|
+
var b = o.charCodeAt(a + n);
|
|
2732
|
+
if (b !== e.charCodeAt(i + n)) break;
|
|
2733
|
+
b === 47 && (c = n);
|
|
2734
2734
|
}
|
|
2735
|
-
var
|
|
2736
|
-
for (n = a + c + 1; n <= t; ++n) n !== t && o.charCodeAt(n) !== 47 || (
|
|
2737
|
-
return
|
|
2735
|
+
var d = "";
|
|
2736
|
+
for (n = a + c + 1; n <= t; ++n) n !== t && o.charCodeAt(n) !== 47 || (d.length === 0 ? d += ".." : d += "/..");
|
|
2737
|
+
return d.length > 0 ? d + e.slice(i + c) : (i += c, e.charCodeAt(i) === 47 && ++i, e.slice(i));
|
|
2738
2738
|
}, _makeLong: function(o) {
|
|
2739
2739
|
return o;
|
|
2740
2740
|
}, dirname: function(o) {
|
|
@@ -2794,16 +2794,16 @@ var ke = { resolve: function() {
|
|
|
2794
2794
|
if (o.length === 0) return e;
|
|
2795
2795
|
var a, t = o.charCodeAt(0), A = t === 47;
|
|
2796
2796
|
A ? (e.root = "/", a = 1) : a = 0;
|
|
2797
|
-
for (var i = -1, s = 0, r = -1, c = !0, n = o.length - 1,
|
|
2797
|
+
for (var i = -1, s = 0, r = -1, c = !0, n = o.length - 1, b = 0; n >= a; --n) if ((t = o.charCodeAt(n)) !== 47) r === -1 && (c = !1, r = n + 1), t === 46 ? i === -1 ? i = n : b !== 1 && (b = 1) : i !== -1 && (b = -1);
|
|
2798
2798
|
else if (!c) {
|
|
2799
2799
|
s = n + 1;
|
|
2800
2800
|
break;
|
|
2801
2801
|
}
|
|
2802
|
-
return i === -1 || r === -1 ||
|
|
2802
|
+
return i === -1 || r === -1 || b === 0 || b === 1 && i === r - 1 && i === s + 1 ? r !== -1 && (e.base = e.name = s === 0 && A ? o.slice(1, r) : o.slice(s, r)) : (s === 0 && A ? (e.name = o.slice(1, i), e.base = o.slice(1, r)) : (e.name = o.slice(s, i), e.base = o.slice(s, r)), e.ext = o.slice(i, r)), s > 0 ? e.dir = o.slice(0, s - 1) : A && (e.dir = "/"), e;
|
|
2803
2803
|
}, sep: "/", delimiter: ":", win32: null, posix: null };
|
|
2804
|
-
|
|
2805
|
-
var bt, be =
|
|
2806
|
-
class
|
|
2804
|
+
De.posix = De;
|
|
2805
|
+
var bt, be = De;
|
|
2806
|
+
class Pi {
|
|
2807
2807
|
constructor(e) {
|
|
2808
2808
|
ge(this, "_toElementFn");
|
|
2809
2809
|
if (e) {
|
|
@@ -2861,7 +2861,7 @@ class _i {
|
|
|
2861
2861
|
* @copyright Copyright (c) 2022 Kirk Qi <qilinaus@gmail.com>
|
|
2862
2862
|
* @license MIT License
|
|
2863
2863
|
*/
|
|
2864
|
-
class
|
|
2864
|
+
class pe extends Pi {
|
|
2865
2865
|
constructor(a = [], t) {
|
|
2866
2866
|
super(t);
|
|
2867
2867
|
ge(this, "_elements", []);
|
|
@@ -2886,7 +2886,7 @@ class Ce extends _i {
|
|
|
2886
2886
|
return this.elements[this.size - 1] ?? void 0;
|
|
2887
2887
|
}
|
|
2888
2888
|
static heapify(a, t) {
|
|
2889
|
-
return new
|
|
2889
|
+
return new pe(a, t);
|
|
2890
2890
|
}
|
|
2891
2891
|
add(a) {
|
|
2892
2892
|
return this._elements.push(a), this._bubbleUp(this.elements.length - 1);
|
|
@@ -2926,10 +2926,10 @@ class Ce extends _i {
|
|
|
2926
2926
|
return [...this.elements];
|
|
2927
2927
|
}
|
|
2928
2928
|
clone() {
|
|
2929
|
-
return new
|
|
2929
|
+
return new pe(this, { comparator: this.comparator, toElementFn: this.toElementFn });
|
|
2930
2930
|
}
|
|
2931
2931
|
sort() {
|
|
2932
|
-
const a = [], t = new
|
|
2932
|
+
const a = [], t = new pe(this, { comparator: this.comparator });
|
|
2933
2933
|
for (; t.size !== 0; ) {
|
|
2934
2934
|
const A = t.poll();
|
|
2935
2935
|
A !== void 0 && a.push(A);
|
|
@@ -2942,13 +2942,13 @@ class Ce extends _i {
|
|
|
2942
2942
|
return a;
|
|
2943
2943
|
}
|
|
2944
2944
|
filter(a, t) {
|
|
2945
|
-
const A = new
|
|
2945
|
+
const A = new pe([], { toElementFn: this.toElementFn, comparator: this.comparator });
|
|
2946
2946
|
let i = 0;
|
|
2947
2947
|
for (const s of this) a.call(t, s, i, this) && A.add(s), i++;
|
|
2948
2948
|
return A;
|
|
2949
2949
|
}
|
|
2950
2950
|
map(a, t, A, i) {
|
|
2951
|
-
const s = new
|
|
2951
|
+
const s = new pe([], { comparator: t, toElementFn: A });
|
|
2952
2952
|
let r = 0;
|
|
2953
2953
|
for (const c of this) s.add(a.call(i, c, r, this)), r++;
|
|
2954
2954
|
return s;
|
|
@@ -2983,79 +2983,225 @@ class Ce extends _i {
|
|
|
2983
2983
|
(function(o) {
|
|
2984
2984
|
o[o.VISIT = 0] = "VISIT", o[o.PROCESS = 1] = "PROCESS";
|
|
2985
2985
|
})(bt || (bt = {}));
|
|
2986
|
-
class
|
|
2986
|
+
class _e extends pe {
|
|
2987
2987
|
constructor(e = [], a) {
|
|
2988
2988
|
super(e, a);
|
|
2989
2989
|
}
|
|
2990
2990
|
clone() {
|
|
2991
|
-
return new
|
|
2991
|
+
return new _e(this, { comparator: this.comparator, toElementFn: this.toElementFn });
|
|
2992
2992
|
}
|
|
2993
2993
|
filter(e, a) {
|
|
2994
|
-
const t = new
|
|
2994
|
+
const t = new _e([], { toElementFn: this.toElementFn, comparator: this.comparator });
|
|
2995
2995
|
let A = 0;
|
|
2996
2996
|
for (const i of this) e.call(a, i, A, this) && t.add(i), A++;
|
|
2997
2997
|
return t;
|
|
2998
2998
|
}
|
|
2999
2999
|
map(e, a, t, A) {
|
|
3000
|
-
const i = new
|
|
3000
|
+
const i = new _e([], { comparator: a, toElementFn: t });
|
|
3001
3001
|
let s = 0;
|
|
3002
3002
|
for (const r of this) i.add(e.call(A, r, s, this)), s++;
|
|
3003
3003
|
return i;
|
|
3004
3004
|
}
|
|
3005
3005
|
}
|
|
3006
|
-
class
|
|
3006
|
+
class He extends _e {
|
|
3007
3007
|
constructor(e = [], a) {
|
|
3008
3008
|
super(e, a);
|
|
3009
3009
|
}
|
|
3010
3010
|
clone() {
|
|
3011
|
-
return new
|
|
3011
|
+
return new He(this, { comparator: this.comparator, toElementFn: this.toElementFn });
|
|
3012
3012
|
}
|
|
3013
3013
|
filter(e, a) {
|
|
3014
|
-
const t = new
|
|
3014
|
+
const t = new He([], { toElementFn: this.toElementFn, comparator: this.comparator });
|
|
3015
3015
|
let A = 0;
|
|
3016
3016
|
for (const i of this) e.call(a, i, A, this) && t.add(i), A++;
|
|
3017
3017
|
return t;
|
|
3018
3018
|
}
|
|
3019
3019
|
map(e, a, t, A) {
|
|
3020
|
-
const i = new
|
|
3020
|
+
const i = new He([], { comparator: a, toElementFn: t });
|
|
3021
3021
|
let s = 0;
|
|
3022
3022
|
for (const r of this) i.add(e.call(A, r, s, this)), s++;
|
|
3023
3023
|
return i;
|
|
3024
3024
|
}
|
|
3025
3025
|
}
|
|
3026
|
-
new
|
|
3027
|
-
const Ve = new S(),
|
|
3026
|
+
new Sa(), new S(), new S(), new S(), new S();
|
|
3027
|
+
const Ve = new S(), _i = new S(), zt = new Ra();
|
|
3028
3028
|
zt.set(1, 0, 0, 0, 0, 1, 0, -1, 0);
|
|
3029
|
-
class
|
|
3030
|
-
constructor(e) {
|
|
3031
|
-
const
|
|
3032
|
-
let
|
|
3033
|
-
|
|
3034
|
-
const
|
|
3035
|
-
e.initRenderTarget(
|
|
3036
|
-
const
|
|
3037
|
-
|
|
3038
|
-
const
|
|
3039
|
-
|
|
3040
|
-
const
|
|
3041
|
-
|
|
3042
|
-
const
|
|
3029
|
+
class Hi extends xa {
|
|
3030
|
+
constructor(e, a) {
|
|
3031
|
+
const A = Math.min(Math.ceil(8) * 512, Math.pow(512, 2));
|
|
3032
|
+
let i = 1 * Math.pow(512, 2);
|
|
3033
|
+
i = Math.floor(i / A) * A;
|
|
3034
|
+
const s = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3035
|
+
e.initRenderTarget(s);
|
|
3036
|
+
const r = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3037
|
+
r.texture.type = v, e.initRenderTarget(r);
|
|
3038
|
+
const c = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3039
|
+
c.texture.type = v, e.initRenderTarget(c);
|
|
3040
|
+
const n = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3041
|
+
n.texture.type = v, e.initRenderTarget(n);
|
|
3042
|
+
const b = new Aa({ uniforms: { textureSize: { value: 512 }, numSlices: { value: 1 }, cov1Texture: { value: c.texture }, cov2Texture: { value: n.texture }, colorTexture: { value: s.texture }, positionTexture: { value: r.texture }, zUpToYUpMatrix3x3: { value: zt }, sizeMultiplier: { value: 1 }, cropRadius: { value: Number.MAX_VALUE }, cameraNear: { value: 0.01 }, cameraFar: { value: 10 }, computeLinearDepth: { value: !0 } }, vertexShader: qi(), fragmentShader: a || Oi(), transparent: !0, side: Ze, depthTest: !1, depthWrite: !1 }), d = new Ja(), l = new Float32Array([-0.5, 0.5, 0, 0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, -0.5, 0]);
|
|
3043
|
+
d.setIndex([0, 2, 1, 2, 3, 1]), d.setAttribute("position", new le(l, 3));
|
|
3044
|
+
const g = new Uint32Array(i), h = new ya(g, 1, !1);
|
|
3045
|
+
h.needsUpdate = !0, h.setUsage(Ka), d.setAttribute("order", h), d.instanceCount = 0, super(d, b), this.orderAttribute = h, this.textureSize = 512, this.numTextures = 1, this.batchSize = A, this.maxSplats = i, this.colorRenderTarget = s, this.positionRenderTarget = r, this.cov1RenderTarget = c, this.cov2RenderTarget = n, this.renderer = e, this.sortID = 0, this.freeAddresses = new He();
|
|
3046
|
+
for (let u = 0; u < this.maxSplats; u += A) this.freeAddresses.add(u);
|
|
3047
|
+
this.worker = new Worker(new URL("" + new URL("assets/PointsManager.worker-5fpGpVvf.js", import.meta.url).href, import.meta.url), { type: "module" }), this.sortListeners = [], this.worker.onmessage = (u) => {
|
|
3048
|
+
const p = new Uint32Array(u.data.order);
|
|
3049
|
+
if (p.length > this.orderAttribute.count) {
|
|
3050
|
+
const B = new Ja(), C = new Float32Array([-0.5, 0.5, 0, 0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, -0.5, 0]), w = [0, 2, 1, 2, 3, 1];
|
|
3051
|
+
B.setIndex(w), B.setAttribute("position", new le(C, 3));
|
|
3052
|
+
const x = new Uint32Array(this.maxSplats), y = new ya(x, 1, !1);
|
|
3053
|
+
y.needsUpdate = !0, y.setUsage(Ka), B.setAttribute("order", y), B.instanceCount = 0, this.geometry.dispose(), this.geometry = B, this.orderAttribute = y;
|
|
3054
|
+
}
|
|
3055
|
+
this.orderAttribute.clearUpdateRanges(), this.orderAttribute.set(p), this.orderAttribute.addUpdateRange(0, p.length), this.orderAttribute.needsUpdate = !0, this.geometry.instanceCount = u.data.count, this.geometry.needsUpdate = !0;
|
|
3056
|
+
for (let B = this.sortListeners.length - 1; B >= 0; B--)
|
|
3057
|
+
this.sortListeners[B](u.data.id) && this.sortListeners.splice(B, 1);
|
|
3058
|
+
}, this.cameraPosition = new S(0, 0, 0), this.rotateOnAxis(new S(1, 0, 0), 0.5 * Math.PI), this.frustumCulled = !1, this.copyMaterial2D = new Aa({ uniforms: { sourceTexture: {} }, vertexShader: lt(), fragmentShader: `
|
|
3059
|
+
precision highp float;
|
|
3060
|
+
|
|
3061
|
+
uniform sampler2D sourceTexture;
|
|
3062
|
+
|
|
3063
|
+
in vec2 vUv;
|
|
3064
|
+
|
|
3065
|
+
void main() {
|
|
3066
|
+
gl_FragColor = texture( sourceTexture, vUv );
|
|
3067
|
+
}`, transparent: !1, side: Ze, depthTest: !1, depthWrite: !1 }), this.copyMaterial3D = new Aa({ uniforms: { sourceTexture: {}, w: { value: 0 } }, vertexShader: lt(), fragmentShader: `
|
|
3068
|
+
precision highp float;
|
|
3069
|
+
|
|
3070
|
+
uniform sampler3D sourceTexture;
|
|
3071
|
+
uniform float w;
|
|
3072
|
+
|
|
3073
|
+
in vec2 vUv;
|
|
3074
|
+
|
|
3075
|
+
void main() {
|
|
3076
|
+
gl_FragColor = texture( sourceTexture, vec3(vUv, w) );
|
|
3077
|
+
}`, transparent: !1, side: Ze, depthTest: !1, depthWrite: !1 }), this.copyCamera = new mt(-0.5, 0.5, 0.5, -0.5, 0.1, 10), this.copyCamera.position.z = 1, this.copyScene = new qA();
|
|
3078
|
+
const f = new OA(1, 1);
|
|
3079
|
+
this.copyQuad = new xa(f, this.copyMaterial2D), this.copyScene.add(this.copyQuad), this.copyScene.matrixAutoUpdate = !1, this.copyQuad.matrixAutoUpdate = !1;
|
|
3080
|
+
const I = this;
|
|
3081
|
+
document.addEventListener("keyup", function(u) {
|
|
3082
|
+
u.key === "a" && (I.growTextures(), console.log(I.positionRenderTarget.depth));
|
|
3083
|
+
});
|
|
3084
|
+
}
|
|
3085
|
+
dispose() {
|
|
3086
|
+
this.material.dispose(), this.copyMaterial2D.dispose(), this.copyMaterial3D.dispose(), this.cov1RenderTarget.dispose(), this.cov2RenderTarget.dispose(), this.positionRenderTarget.dispose(), this.colorRenderTarget.dispose(), this.worker.terminate(), this.worker = null, this.geometry.dispose();
|
|
3087
|
+
}
|
|
3088
|
+
copyTex2D(e, a, t, A) {
|
|
3089
|
+
this.copyMaterial2D.uniforms.sourceTexture.value = e;
|
|
3090
|
+
const i = this.renderer.autoClear, s = this.renderer.getRenderTarget();
|
|
3091
|
+
this.renderer.autoClear = !1;
|
|
3092
|
+
const r = t[2] - t[0], c = t[3] - t[1];
|
|
3093
|
+
a.viewport.set(t[0], t[1], r, c), this.renderer.setRenderTarget(a, A), this.renderer.render(this.copyScene, this.copyCamera), this.renderer.setRenderTarget(s), this.renderer.autoClear = i;
|
|
3094
|
+
}
|
|
3095
|
+
copyTex3D(e, a, t) {
|
|
3096
|
+
this.copyMaterial3D.uniforms.sourceTexture.value = e;
|
|
3097
|
+
const A = this.renderer.autoClear, i = this.renderer.getRenderTarget();
|
|
3098
|
+
this.renderer.autoClear = !1, this.copyQuad.material = this.copyMaterial3D;
|
|
3099
|
+
for (let s = 0; s < t; s++) this.renderer.setRenderTarget(a, s), this.copyMaterial3D.uniforms.w.value = (s + 0.5) / t, this.renderer.render(this.copyScene, this.copyCamera);
|
|
3100
|
+
this.copyQuad.material = this.copyMaterial2D, this.renderer.setRenderTarget(i), this.renderer.autoClear = A;
|
|
3101
|
+
}
|
|
3102
|
+
setSplatsSizeMultiplier(e) {
|
|
3103
|
+
this.material.uniforms.sizeMultiplier.value = e;
|
|
3104
|
+
}
|
|
3105
|
+
setSplatsCropRadius(e) {
|
|
3106
|
+
this.material.uniforms.cropRadius.value = e;
|
|
3107
|
+
}
|
|
3108
|
+
sort(e) {
|
|
3109
|
+
!e && this.cameraPosition ? this.worker.postMessage({ method: "sort", xyz: [this.cameraPosition.x, this.cameraPosition.z, -this.cameraPosition.y], id: this.sortID++ }) : this.cameraPosition && e.equals(this.cameraPosition) || (this.cameraPosition.copy(e), this.worker.postMessage({ method: "sort", xyz: [this.cameraPosition.x, this.cameraPosition.z, -this.cameraPosition.y], id: this.sortID++ }));
|
|
3110
|
+
}
|
|
3111
|
+
raycast(e, a) {
|
|
3112
|
+
}
|
|
3113
|
+
addSplatsTile(e, a, t, A) {
|
|
3114
|
+
const i = this;
|
|
3115
|
+
e.count;
|
|
3116
|
+
const s = e.data ? e.data.array : e.array, r = e.data && e.data.isInterleavedBuffer ? e.data.stride : 3, c = e.data && e.data.isInterleavedBuffer ? e.offset : 0, n = Math.ceil(s.length / (this.batchSize * r)), b = [], d = [];
|
|
3117
|
+
let l = () => {
|
|
3118
|
+
};
|
|
3119
|
+
const g = new Float32Array(s.length / r * 3);
|
|
3120
|
+
for (let f = 0; f < s.length / 3; f++) g[3 * f] = s[f * r + c], g[3 * f + 1] = s[f * r + c + 1], g[3 * f + 2] = s[f * r + c + 2];
|
|
3121
|
+
l = (f, I, u) => {
|
|
3122
|
+
const p = u * u;
|
|
3123
|
+
for (let B = 0; B < g.length; B += 3) {
|
|
3124
|
+
Ve.set(g[B], -g[B + 2], g[B + 1]);
|
|
3125
|
+
const C = _i.copy(Ve).sub(f.origin).dot(f.direction);
|
|
3126
|
+
C > 0 && f.distanceSqToPoint(Ve) < p && I.push({ distance: C, point: Ve.clone(), type: "splat" });
|
|
3127
|
+
}
|
|
3128
|
+
}, n > this.freeAddresses.size && this.growTextures();
|
|
3129
|
+
for (let f = 0; f < n; f++) {
|
|
3130
|
+
const I = this.freeAddresses.poll();
|
|
3131
|
+
isNaN(I) && console.log("insuficient texture size to store splats info"), b.push(I), d.push(3 * I);
|
|
3132
|
+
const u = f * this.batchSize;
|
|
3133
|
+
this.addSplatsBatch(u, I, e, a, t, A);
|
|
3134
|
+
}
|
|
3135
|
+
i.worker.postMessage({ method: "addBatches", insertionIndexes: d, positions: s.buffer, offset: c, stride: r, batchSize: i.batchSize }, [s.buffer]);
|
|
3136
|
+
let h = !1;
|
|
3137
|
+
return { hide: () => {
|
|
3138
|
+
h == 1 && (h = !1, i.worker.postMessage({ method: "hideBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }));
|
|
3139
|
+
}, show: (f) => {
|
|
3140
|
+
h == 0 && (h = !0);
|
|
3141
|
+
const I = i.sortID;
|
|
3142
|
+
i.sortListeners.push((u) => u >= I && (f(), !0)), i.worker.postMessage({ method: "showBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ });
|
|
3143
|
+
}, remove: () => {
|
|
3144
|
+
l = void 0, i.worker.postMessage({ method: "removeBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }), b.forEach((f) => i.freeAddresses.add(f));
|
|
3145
|
+
}, sort: this.sort, raycast: l, isSplatsBatch: !0 };
|
|
3146
|
+
}
|
|
3147
|
+
addSplatsBatch(e, a, t, A, i, s) {
|
|
3148
|
+
const r = new Float32Array(4 * this.batchSize), c = new Uint8Array(4 * this.batchSize), n = new Float32Array(4 * this.batchSize), b = new Float32Array(4 * this.batchSize);
|
|
3149
|
+
for (let p = a; p < a + this.batchSize; p++) {
|
|
3150
|
+
const B = p - a, C = 4 * B, w = e + B;
|
|
3151
|
+
if (w >= t.count) break;
|
|
3152
|
+
r[C] = t.getX(w), r[C + 1] = t.getY(w), r[C + 2] = t.getZ(w), Math.floor(255 * A.getX(w)), Math.floor(255 * A.getY(w)), Math.floor(255 * A.getZ(w)), Math.floor(255 * A.getW(w)), c[C] = Math.floor(255 * A.getX(w)), c[C + 1] = Math.floor(255 * A.getY(w)), c[C + 2] = Math.floor(255 * A.getZ(w)), c[C + 3] = Math.floor(255 * A.getW(w)), n[C] = i.getX(w), n[C + 1] = i.getY(w), n[C + 2] = i.getZ(w), b[C] = s.getX(w), b[C + 1] = s.getY(w), b[C + 2] = s.getZ(w);
|
|
3153
|
+
}
|
|
3154
|
+
const d = Math.floor(a / Math.pow(this.textureSize, 2)), l = Math.ceil(this.batchSize / this.textureSize), g = [0, a / this.textureSize - d * this.textureSize, this.textureSize];
|
|
3155
|
+
g.push(g[1] + l);
|
|
3156
|
+
const h = new Ge(r, this.textureSize, l, $, v);
|
|
3157
|
+
h.generateMipmaps = !1, h.magFilter = M, h.minFilter = M, h.anisotropy = 0, h.needsUpdate = !0, this.renderer.initTexture(h), this.renderer.initRenderTarget(this.positionRenderTarget), this.copyTex2D(h, this.positionRenderTarget, g, d), h.dispose();
|
|
3158
|
+
const f = new Ge(c, this.textureSize, l, $, X);
|
|
3159
|
+
f.generateMipmaps = !1, f.magFilter = M, f.minFilter = M, f.anisotropy = 0, f.needsUpdate = !0, this.renderer.initTexture(f), this.copyTex2D(f, this.colorRenderTarget, g, d), f.dispose();
|
|
3160
|
+
const I = new Ge(n, this.textureSize, l, $, v);
|
|
3161
|
+
I.generateMipmaps = !1, I.magFilter = M, I.minFilter = M, I.anisotropy = 0, I.needsUpdate = !0, this.renderer.initTexture(I), this.copyTex2D(I, this.cov1RenderTarget, g, d), I.dispose();
|
|
3162
|
+
const u = new Ge(b, this.textureSize, l, $, v);
|
|
3163
|
+
u.generateMipmaps = !1, u.magFilter = M, u.minFilter = M, u.anisotropy = 0, u.needsUpdate = !0, this.renderer.initTexture(u), this.copyTex2D(u, this.cov2RenderTarget, g, d), u.dispose();
|
|
3164
|
+
}
|
|
3165
|
+
growTextures() {
|
|
3166
|
+
for (let s = this.maxSplats; s < this.maxSplats + this.textureSize * this.textureSize; s += this.batchSize) this.freeAddresses.add(s);
|
|
3167
|
+
this.maxSplats += this.textureSize * this.textureSize;
|
|
3168
|
+
const e = this.numTextures + 1, a = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3169
|
+
this.renderer.initRenderTarget(a), this.copyTex3D(this.colorRenderTarget.texture, a, this.numTextures), this.colorRenderTarget.dispose(), this.colorRenderTarget = a, this.material.uniforms.colorTexture.value = this.colorRenderTarget.texture;
|
|
3170
|
+
const t = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3171
|
+
t.texture.type = v, this.renderer.initRenderTarget(t), this.copyTex3D(this.positionRenderTarget.texture, t, this.numTextures), this.positionRenderTarget.dispose(), this.positionRenderTarget = t, this.material.uniforms.positionTexture.value = this.positionRenderTarget.texture;
|
|
3172
|
+
const A = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3173
|
+
A.texture.type = v, this.renderer.initRenderTarget(A), this.copyTex3D(this.cov1RenderTarget.texture, A, this.numTextures), this.cov1RenderTarget.dispose(), this.cov1RenderTarget = A, this.material.uniforms.cov1Texture.value = this.cov1RenderTarget.texture;
|
|
3174
|
+
const i = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3175
|
+
i.texture.type = v, this.renderer.initRenderTarget(i), this.copyTex3D(this.cov2RenderTarget.texture, i, this.numTextures), this.cov2RenderTarget.dispose(), this.cov2RenderTarget = i, this.material.uniforms.cov2Texture.value = this.cov2RenderTarget.texture, this.numTextures = e, this.material.uniforms.numSlices.value = this.numTextures;
|
|
3176
|
+
}
|
|
3177
|
+
}
|
|
3178
|
+
function qi() {
|
|
3179
|
+
return `
|
|
3043
3180
|
precision highp float;
|
|
3044
3181
|
precision highp int;
|
|
3045
3182
|
|
|
3183
|
+
#include <common>
|
|
3184
|
+
#include <packing>
|
|
3185
|
+
|
|
3046
3186
|
uniform float textureSize;
|
|
3047
3187
|
uniform float numSlices;
|
|
3048
3188
|
uniform float sizeMultiplier;
|
|
3049
3189
|
in uint order;
|
|
3050
3190
|
out vec4 color;
|
|
3051
3191
|
out vec2 vUv;
|
|
3052
|
-
out vec3
|
|
3192
|
+
out vec3 splatPositionWorld;
|
|
3193
|
+
out float splatDepth;
|
|
3194
|
+
//out float orthographicDepth;
|
|
3053
3195
|
out float splatCrop;
|
|
3054
3196
|
uniform sampler3D colorTexture;
|
|
3055
3197
|
uniform sampler3D positionTexture;
|
|
3056
3198
|
uniform sampler3D cov1Texture;
|
|
3057
3199
|
uniform sampler3D cov2Texture;
|
|
3058
3200
|
uniform mat3 zUpToYUpMatrix3x3;
|
|
3201
|
+
uniform float logDepthBufFC;
|
|
3202
|
+
//uniform float cameraNear;
|
|
3203
|
+
//uniform float cameraFar;
|
|
3204
|
+
//uniform bool computeLinearDepth;
|
|
3059
3205
|
|
|
3060
3206
|
|
|
3061
3207
|
void getVertexData(out vec3 position, out mat3 covariance) {
|
|
@@ -3113,7 +3259,7 @@ void modelTransform(in vec3 splatPosition, in mat3 covariance, inout vec3 vertex
|
|
|
3113
3259
|
right = normalize(cross(upReference, look));
|
|
3114
3260
|
}
|
|
3115
3261
|
|
|
3116
|
-
vec3 up = cross(look, right);
|
|
3262
|
+
vec3 up = cross(look, right);
|
|
3117
3263
|
|
|
3118
3264
|
// Construct the billboard rotation matrix
|
|
3119
3265
|
mat3 billboardRot = mat3(
|
|
@@ -3157,182 +3303,66 @@ vec3 up = cross(look, right);
|
|
|
3157
3303
|
vertexPosition = billboardRot * vertexPosition + splatPosition;
|
|
3158
3304
|
}
|
|
3159
3305
|
|
|
3306
|
+
|
|
3160
3307
|
void main() {
|
|
3161
3308
|
vUv = vec2(position);
|
|
3162
3309
|
|
|
3163
|
-
|
|
3310
|
+
splatPositionWorld = vec3(0.0);
|
|
3164
3311
|
mat3 covariance = mat3(0.0);
|
|
3165
|
-
getVertexData(
|
|
3166
|
-
splatCrop = sqrt(color.w); // discard more pixels when opacity is low
|
|
3167
|
-
|
|
3312
|
+
getVertexData(splatPositionWorld, covariance);
|
|
3313
|
+
splatCrop = 0.5*sqrt(color.w); // discard more pixels when opacity is low
|
|
3314
|
+
splatPositionWorld = (modelMatrix * vec4(splatPositionWorld, 1.0)).xyz;
|
|
3168
3315
|
|
|
3169
3316
|
|
|
3170
3317
|
vec3 outPosition = vec3(position)*sizeMultiplier;
|
|
3171
|
-
modelTransform(
|
|
3318
|
+
modelTransform(splatPositionWorld, covariance, outPosition);
|
|
3172
3319
|
|
|
3173
3320
|
gl_Position = projectionMatrix * viewMatrix * vec4(outPosition, 1.0);
|
|
3321
|
+
/* if(computeLinearDepth){
|
|
3322
|
+
orthographicDepth = viewZToOrthographicDepth( -gl_Position.w, cameraNear, cameraFar );
|
|
3323
|
+
} */
|
|
3324
|
+
|
|
3325
|
+
vec4 centerP = projectionMatrix * viewMatrix * vec4(splatPositionWorld, 1.0);
|
|
3326
|
+
#if defined( USE_LOGDEPTHBUF )
|
|
3327
|
+
float isPerspective = float( isPerspectiveMatrix( projectionMatrix ) );
|
|
3328
|
+
splatDepth = isPerspective == 0.0 ? centerP.z : log2( 1.0 + centerP.w ) * logDepthBufFC * 0.5;
|
|
3329
|
+
#else
|
|
3330
|
+
splatDepth = (centerP.z / centerP.w)* 0.5 + 0.5;
|
|
3331
|
+
#endif
|
|
3332
|
+
|
|
3174
3333
|
|
|
3175
3334
|
}
|
|
3176
|
-
|
|
3335
|
+
`;
|
|
3336
|
+
}
|
|
3337
|
+
function Oi() {
|
|
3338
|
+
return `
|
|
3177
3339
|
precision highp float;
|
|
3178
3340
|
|
|
3179
3341
|
in vec4 color;
|
|
3180
3342
|
in vec2 vUv;
|
|
3181
|
-
in vec3
|
|
3343
|
+
in vec3 splatPositionWorld;
|
|
3344
|
+
in float splatDepth;
|
|
3345
|
+
//in float orthographicDepth;
|
|
3182
3346
|
in float splatCrop;
|
|
3183
3347
|
uniform float textureSize;
|
|
3184
3348
|
uniform float cropRadius;
|
|
3185
3349
|
|
|
3186
3350
|
void main() {
|
|
3187
|
-
if(length(
|
|
3351
|
+
if(length(splatPositionWorld)>cropRadius) discard;
|
|
3188
3352
|
float l = length(vUv);
|
|
3189
3353
|
|
|
3190
3354
|
// Early discard for pixels outside the radius
|
|
3191
|
-
if (l >
|
|
3192
|
-
//gl_FragColor = vec4(color.xyz,1.0);
|
|
3193
|
-
//return;
|
|
3355
|
+
if (l > 0.5) {
|
|
3194
3356
|
discard;
|
|
3195
3357
|
};
|
|
3196
3358
|
vec2 p = vUv * 4.0;
|
|
3197
3359
|
float alpha = exp(-dot(p, p));
|
|
3198
3360
|
|
|
3199
3361
|
gl_FragColor = vec4(pow(color.xyz,vec3(1.0/2.2)), color.w * pow(alpha, 1.8));
|
|
3362
|
+
//gl_FragColor = vec4(splatDepth,0.0,0.0,1.0);
|
|
3363
|
+
//gl_FragDepth = splatDepth;
|
|
3200
3364
|
|
|
3201
|
-
}
|
|
3202
|
-
d.setIndex([0, 2, 1, 2, 3, 1]), d.setAttribute("position", new le(b, 3));
|
|
3203
|
-
const l = new Uint32Array(A), g = new Qa(l, 1, !1);
|
|
3204
|
-
g.needsUpdate = !0, g.setUsage(Ka), d.setAttribute("order", g), d.instanceCount = 0, super(d, n), this.orderAttribute = g, this.textureSize = 512, this.numTextures = 1, this.batchSize = t, this.maxSplats = A, this.colorRenderTarget = i, this.positionRenderTarget = s, this.cov1RenderTarget = r, this.cov2RenderTarget = c, this.renderer = e, this.sortID = 0, this.freeAddresses = new _e();
|
|
3205
|
-
for (let I = 0; I < this.maxSplats; I += t) this.freeAddresses.add(I);
|
|
3206
|
-
this.worker = new Worker(new URL("/assets/PointsManager.worker-5fpGpVvf.js", import.meta.url), { type: "module" }), this.sortListeners = [], this.worker.onmessage = (I) => {
|
|
3207
|
-
const u = new Uint32Array(I.data.order);
|
|
3208
|
-
if (u.length > this.orderAttribute.count) {
|
|
3209
|
-
const C = new Ja(), p = new Float32Array([-0.5, 0.5, 0, 0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, -0.5, 0]), B = [0, 2, 1, 2, 3, 1];
|
|
3210
|
-
C.setIndex(B), C.setAttribute("position", new le(p, 3));
|
|
3211
|
-
const y = new Uint32Array(this.maxSplats), x = new Qa(y, 1, !1);
|
|
3212
|
-
x.needsUpdate = !0, x.setUsage(Ka), C.setAttribute("order", x), C.instanceCount = 0, this.geometry.dispose(), this.geometry = C, this.orderAttribute = x;
|
|
3213
|
-
}
|
|
3214
|
-
this.orderAttribute.clearUpdateRanges(), this.orderAttribute.set(u), this.orderAttribute.addUpdateRange(0, u.length), this.orderAttribute.needsUpdate = !0, this.geometry.instanceCount = I.data.count, this.geometry.needsUpdate = !0;
|
|
3215
|
-
for (let C = this.sortListeners.length - 1; C >= 0; C--)
|
|
3216
|
-
this.sortListeners[C](I.data.id) && this.sortListeners.splice(C, 1);
|
|
3217
|
-
}, this.cameraPosition = new S(0, 0, 0), this.rotateOnAxis(new S(1, 0, 0), 0.5 * Math.PI), this.frustumCulled = !1, this.copyMaterial2D = new ta({ uniforms: { sourceTexture: {} }, vertexShader: lt(), fragmentShader: `
|
|
3218
|
-
precision highp float;
|
|
3219
|
-
|
|
3220
|
-
uniform sampler2D sourceTexture;
|
|
3221
|
-
|
|
3222
|
-
in vec2 vUv;
|
|
3223
|
-
|
|
3224
|
-
void main() {
|
|
3225
|
-
gl_FragColor = texture( sourceTexture, vUv );
|
|
3226
|
-
}`, transparent: !1, side: Ze, depthTest: !1, depthWrite: !1 }), this.copyMaterial3D = new ta({ uniforms: { sourceTexture: {}, w: { value: 0 } }, vertexShader: lt(), fragmentShader: `
|
|
3227
|
-
precision highp float;
|
|
3228
|
-
|
|
3229
|
-
uniform sampler3D sourceTexture;
|
|
3230
|
-
uniform float w;
|
|
3231
|
-
|
|
3232
|
-
in vec2 vUv;
|
|
3233
|
-
|
|
3234
|
-
void main() {
|
|
3235
|
-
gl_FragColor = texture( sourceTexture, vec3(vUv, w) );
|
|
3236
|
-
}`, transparent: !1, side: Ze, depthTest: !1, depthWrite: !1 }), this.copyCamera = new Et(-0.5, 0.5, 0.5, -0.5, 0.1, 10), this.copyCamera.position.z = 1, this.copyScene = new OA();
|
|
3237
|
-
const h = new JA(1, 1);
|
|
3238
|
-
this.copyQuad = new wa(h, this.copyMaterial2D), this.copyScene.add(this.copyQuad), this.copyScene.matrixAutoUpdate = !1, this.copyQuad.matrixAutoUpdate = !1;
|
|
3239
|
-
const f = this;
|
|
3240
|
-
document.addEventListener("keyup", function(I) {
|
|
3241
|
-
I.key === "a" && (f.growTextures(), console.log(f.positionRenderTarget.depth));
|
|
3242
|
-
});
|
|
3243
|
-
}
|
|
3244
|
-
dispose() {
|
|
3245
|
-
this.material.dispose(), this.copyMaterial2D.dispose(), this.copyMaterial3D.dispose(), this.cov1RenderTarget.dispose(), this.cov2RenderTarget.dispose(), this.positionRenderTarget.dispose(), this.colorRenderTarget.dispose(), this.worker.terminate(), this.worker = null, this.geometry.dispose();
|
|
3246
|
-
}
|
|
3247
|
-
copyTex2D(e, a, t, A) {
|
|
3248
|
-
this.copyMaterial2D.uniforms.sourceTexture.value = e;
|
|
3249
|
-
const i = this.renderer.autoClear, s = this.renderer.getRenderTarget();
|
|
3250
|
-
this.renderer.autoClear = !1;
|
|
3251
|
-
const r = t[2] - t[0], c = t[3] - t[1];
|
|
3252
|
-
a.viewport.set(t[0], t[1], r, c), this.renderer.setRenderTarget(a, A), this.renderer.render(this.copyScene, this.copyCamera), this.renderer.setRenderTarget(s), this.renderer.autoClear = i;
|
|
3253
|
-
}
|
|
3254
|
-
copyTex3D(e, a, t) {
|
|
3255
|
-
this.copyMaterial3D.uniforms.sourceTexture.value = e;
|
|
3256
|
-
const A = this.renderer.autoClear, i = this.renderer.getRenderTarget();
|
|
3257
|
-
this.renderer.autoClear = !1, this.copyQuad.material = this.copyMaterial3D;
|
|
3258
|
-
for (let s = 0; s < t; s++) this.renderer.setRenderTarget(a, s), this.copyMaterial3D.uniforms.w.value = (s + 0.5) / t, this.renderer.render(this.copyScene, this.copyCamera);
|
|
3259
|
-
this.copyQuad.material = this.copyMaterial2D, this.renderer.setRenderTarget(i), this.renderer.autoClear = A;
|
|
3260
|
-
}
|
|
3261
|
-
setSplatsSizeMultiplier(e) {
|
|
3262
|
-
this.material.uniforms.sizeMultiplier.value = e;
|
|
3263
|
-
}
|
|
3264
|
-
setSplatsCropRadius(e) {
|
|
3265
|
-
this.material.uniforms.cropRadius.value = e;
|
|
3266
|
-
}
|
|
3267
|
-
sort(e) {
|
|
3268
|
-
!e && this.cameraPosition ? this.worker.postMessage({ method: "sort", xyz: [this.cameraPosition.x, this.cameraPosition.z, -this.cameraPosition.y], id: this.sortID++ }) : this.cameraPosition && e.equals(this.cameraPosition) || (this.cameraPosition.copy(e), this.worker.postMessage({ method: "sort", xyz: [this.cameraPosition.x, this.cameraPosition.z, -this.cameraPosition.y], id: this.sortID++ }));
|
|
3269
|
-
}
|
|
3270
|
-
raycast(e, a) {
|
|
3271
|
-
}
|
|
3272
|
-
addSplatsTile(e, a, t, A) {
|
|
3273
|
-
const i = this;
|
|
3274
|
-
e.count;
|
|
3275
|
-
const s = e.data ? e.data.array : e.array, r = e.data && e.data.isInterleavedBuffer ? e.data.stride : 3, c = e.data && e.data.isInterleavedBuffer ? e.offset : 0, n = Math.ceil(s.length / (this.batchSize * r)), d = [], b = [];
|
|
3276
|
-
let l = () => {
|
|
3277
|
-
};
|
|
3278
|
-
const g = new Float32Array(s.length / r * 3);
|
|
3279
|
-
for (let f = 0; f < s.length / 3; f++) g[3 * f] = s[f * r + c], g[3 * f + 1] = s[f * r + c + 1], g[3 * f + 2] = s[f * r + c + 2];
|
|
3280
|
-
l = (f, I, u) => {
|
|
3281
|
-
const C = u * u;
|
|
3282
|
-
for (let p = 0; p < g.length; p += 3) {
|
|
3283
|
-
Ve.set(g[p], -g[p + 2], g[p + 1]);
|
|
3284
|
-
const B = Hi.copy(Ve).sub(f.origin).dot(f.direction);
|
|
3285
|
-
B > 0 && f.distanceSqToPoint(Ve) < C && I.push({ distance: B, point: Ve.clone(), type: "splat" });
|
|
3286
|
-
}
|
|
3287
|
-
}, n > this.freeAddresses.size && this.growTextures();
|
|
3288
|
-
for (let f = 0; f < n; f++) {
|
|
3289
|
-
const I = this.freeAddresses.poll();
|
|
3290
|
-
isNaN(I) && console.log("insuficient texture size to store splats info"), d.push(I), b.push(3 * I);
|
|
3291
|
-
const u = f * this.batchSize;
|
|
3292
|
-
this.addSplatsBatch(u, I, e, a, t, A);
|
|
3293
|
-
}
|
|
3294
|
-
i.worker.postMessage({ method: "addBatches", insertionIndexes: b, positions: s.buffer, offset: c, stride: r, batchSize: i.batchSize }, [s.buffer]);
|
|
3295
|
-
let h = !1;
|
|
3296
|
-
return { hide: () => {
|
|
3297
|
-
h == 1 && (h = !1, i.worker.postMessage({ method: "hideBatches", insertionIndexes: b, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }));
|
|
3298
|
-
}, show: (f) => {
|
|
3299
|
-
h == 0 && (h = !0);
|
|
3300
|
-
const I = i.sortID;
|
|
3301
|
-
i.sortListeners.push((u) => u >= I && (f(), !0)), i.worker.postMessage({ method: "showBatches", insertionIndexes: b, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ });
|
|
3302
|
-
}, remove: () => {
|
|
3303
|
-
l = void 0, i.worker.postMessage({ method: "removeBatches", insertionIndexes: b, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }), d.forEach((f) => i.freeAddresses.add(f));
|
|
3304
|
-
}, sort: this.sort, raycast: l, isSplatsBatch: !0 };
|
|
3305
|
-
}
|
|
3306
|
-
addSplatsBatch(e, a, t, A, i, s) {
|
|
3307
|
-
const r = new Float32Array(4 * this.batchSize), c = new Uint8Array(4 * this.batchSize), n = new Float32Array(4 * this.batchSize), d = new Float32Array(4 * this.batchSize);
|
|
3308
|
-
for (let C = a; C < a + this.batchSize; C++) {
|
|
3309
|
-
const p = C - a, B = 4 * p, y = e + p;
|
|
3310
|
-
if (y >= t.count) break;
|
|
3311
|
-
r[B] = t.getX(y), r[B + 1] = t.getY(y), r[B + 2] = t.getZ(y), Math.floor(255 * A.getX(y)), Math.floor(255 * A.getY(y)), Math.floor(255 * A.getZ(y)), Math.floor(255 * A.getW(y)), c[B] = Math.floor(255 * A.getX(y)), c[B + 1] = Math.floor(255 * A.getY(y)), c[B + 2] = Math.floor(255 * A.getZ(y)), c[B + 3] = Math.floor(255 * A.getW(y)), n[B] = i.getX(y), n[B + 1] = i.getY(y), n[B + 2] = i.getZ(y), d[B] = s.getX(y), d[B + 1] = s.getY(y), d[B + 2] = s.getZ(y);
|
|
3312
|
-
}
|
|
3313
|
-
const b = Math.floor(a / Math.pow(this.textureSize, 2)), l = Math.ceil(this.batchSize / this.textureSize), g = [0, a / this.textureSize - b * this.textureSize, this.textureSize];
|
|
3314
|
-
g.push(g[1] + l);
|
|
3315
|
-
const h = new Le(r, this.textureSize, l, $, F);
|
|
3316
|
-
h.generateMipmaps = !1, h.magFilter = M, h.minFilter = M, h.anisotropy = 0, h.needsUpdate = !0, this.renderer.initTexture(h), this.renderer.initRenderTarget(this.positionRenderTarget), this.copyTex2D(h, this.positionRenderTarget, g, b), h.dispose();
|
|
3317
|
-
const f = new Le(c, this.textureSize, l, $, X);
|
|
3318
|
-
f.generateMipmaps = !1, f.magFilter = M, f.minFilter = M, f.anisotropy = 0, f.needsUpdate = !0, this.renderer.initTexture(f), this.copyTex2D(f, this.colorRenderTarget, g, b), f.dispose();
|
|
3319
|
-
const I = new Le(n, this.textureSize, l, $, F);
|
|
3320
|
-
I.generateMipmaps = !1, I.magFilter = M, I.minFilter = M, I.anisotropy = 0, I.needsUpdate = !0, this.renderer.initTexture(I), this.copyTex2D(I, this.cov1RenderTarget, g, b), I.dispose();
|
|
3321
|
-
const u = new Le(d, this.textureSize, l, $, F);
|
|
3322
|
-
u.generateMipmaps = !1, u.magFilter = M, u.minFilter = M, u.anisotropy = 0, u.needsUpdate = !0, this.renderer.initTexture(u), this.copyTex2D(u, this.cov2RenderTarget, g, b), u.dispose();
|
|
3323
|
-
}
|
|
3324
|
-
growTextures() {
|
|
3325
|
-
for (let s = this.maxSplats; s < this.maxSplats + this.textureSize * this.textureSize; s += this.batchSize) this.freeAddresses.add(s);
|
|
3326
|
-
this.maxSplats += this.textureSize * this.textureSize;
|
|
3327
|
-
const e = this.numTextures + 1, a = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3328
|
-
this.renderer.initRenderTarget(a), this.copyTex3D(this.colorRenderTarget.texture, a, this.numTextures), this.colorRenderTarget.dispose(), this.colorRenderTarget = a, this.material.uniforms.colorTexture.value = this.colorRenderTarget.texture;
|
|
3329
|
-
const t = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: F, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3330
|
-
t.texture.type = F, this.renderer.initRenderTarget(t), this.copyTex3D(this.positionRenderTarget.texture, t, this.numTextures), this.positionRenderTarget.dispose(), this.positionRenderTarget = t, this.material.uniforms.positionTexture.value = this.positionRenderTarget.texture;
|
|
3331
|
-
const A = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: F, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3332
|
-
A.texture.type = F, this.renderer.initRenderTarget(A), this.copyTex3D(this.cov1RenderTarget.texture, A, this.numTextures), this.cov1RenderTarget.dispose(), this.cov1RenderTarget = A, this.material.uniforms.cov1Texture.value = this.cov1RenderTarget.texture;
|
|
3333
|
-
const i = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: F, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3334
|
-
i.texture.type = F, this.renderer.initRenderTarget(i), this.copyTex3D(this.cov2RenderTarget.texture, i, this.numTextures), this.cov2RenderTarget.dispose(), this.cov2RenderTarget = i, this.material.uniforms.cov2Texture.value = this.cov2RenderTarget.texture, this.numTextures = e, this.material.uniforms.numSlices.value = this.numTextures;
|
|
3335
|
-
}
|
|
3365
|
+
}`;
|
|
3336
3366
|
}
|
|
3337
3367
|
function lt() {
|
|
3338
3368
|
return `
|
|
@@ -3345,32 +3375,32 @@ void main() {
|
|
|
3345
3375
|
}`;
|
|
3346
3376
|
}
|
|
3347
3377
|
var W;
|
|
3348
|
-
const te = new
|
|
3349
|
-
new
|
|
3350
|
-
const ce = new
|
|
3351
|
-
new
|
|
3352
|
-
const Ca = new
|
|
3353
|
-
function
|
|
3378
|
+
const te = new E.Sphere(new E.Vector3(0, 0, 0), 1), ue = new se([0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1]);
|
|
3379
|
+
new E.Box3();
|
|
3380
|
+
const ce = new E.Vector3(0, 0, 0), we = new E.Vector3(0, 0, 0), Ji = new E.Vector3(0, 1, 0), Ye = new E.Ray(), We = new E.Matrix4();
|
|
3381
|
+
new E.Matrix4(), new E.Frustum();
|
|
3382
|
+
const Ca = new E.Vector3(), Xe = [], ht = new E.Quaternion(), Z = {};
|
|
3383
|
+
function Ki() {
|
|
3354
3384
|
var o = [];
|
|
3355
3385
|
for (let e in Z) Z.hasOwnProperty(e) && Z[e] > 0 && o.push(e);
|
|
3356
3386
|
return o;
|
|
3357
3387
|
}
|
|
3358
|
-
class Vt extends
|
|
3388
|
+
class Vt extends E.Object3D {
|
|
3359
3389
|
constructor(e) {
|
|
3360
3390
|
super();
|
|
3361
3391
|
const a = this;
|
|
3362
|
-
if (a.splatsMesh = e.splatsMesh, this.contentURL = [], e.domWidth && e.domHeight ? this.rendererSize = new
|
|
3392
|
+
if (a.splatsMesh = e.splatsMesh, this.contentURL = [], e.domWidth && e.domHeight ? this.rendererSize = new E.Vector2(e.domWidth, e.domHeight) : this.rendererSize = new E.Vector2(1e3, 1e3), this.loadingStrategy = e.loadingStrategy ? e.loadingStrategy.toUpperCase() : "INCREMENTAL", this.distanceBias = Math.max(1e-4, e.distanceBias ? e.distanceBias : 1), this.proxy = e.proxy, this.drawBoundingVolume = !!e.drawBoundingVolume && e.drawBoundingVolume, this.displayErrors = e.displayErrors, this.displayCopyright = e.displayCopyright, e.queryParams && (this.queryParams = { ...e.queryParams }), this.uuid = kt(), e.tileLoader) this.tileLoader = e.tileLoader;
|
|
3363
3393
|
else {
|
|
3364
3394
|
const i = {};
|
|
3365
3395
|
i.meshCallback = e.meshCallback ? e.meshCallback : (s, r) => {
|
|
3366
|
-
s.material.wireframe = !1, s.material.side =
|
|
3396
|
+
s.material.wireframe = !1, s.material.side = E.DoubleSide;
|
|
3367
3397
|
}, i.pointsCallback = e.pointsCallback ? e.pointsCallback : (s, r) => {
|
|
3368
3398
|
s.material.size = Math.pow(r, 0.33), s.material.sizeAttenuation = !0;
|
|
3369
|
-
}, i.proxy = this.proxy, i.renderer = e.renderer, i.dracoLoader = e.dracoLoader, i.ktx2Loader = e.ktx2Loader, this.tileLoader = new
|
|
3399
|
+
}, i.proxy = this.proxy, i.renderer = e.renderer, i.dracoLoader = e.dracoLoader, i.ktx2Loader = e.ktx2Loader, this.tileLoader = new Ni(i), this.update = (s) => {
|
|
3370
3400
|
this.update(s), this.tileLoader.update();
|
|
3371
3401
|
};
|
|
3372
3402
|
}
|
|
3373
|
-
if (this.displayCopyright = !!e.displayCopyright, this.geometricErrorMultiplier = e.geometricErrorMultiplier ? e.geometricErrorMultiplier : 1, this.splatsCropRadius = Number.MAX_VALUE, this.splatsSizeMultiplier = 1, this.renderer = e.renderer, this.meshCallback = e.meshCallback, this.loadOutsideView = e.loadOutsideView, this.cameraOnLoad = e.cameraOnLoad, this.parentTile = e.parentTile, this.occlusionCullingService = e.occlusionCullingService, this.static = e.static, this.occlusionCullingService && (this.color = new
|
|
3403
|
+
if (this.displayCopyright = !!e.displayCopyright, this.geometricErrorMultiplier = e.geometricErrorMultiplier ? e.geometricErrorMultiplier : 1, this.splatsCropRadius = Number.MAX_VALUE, this.splatsSizeMultiplier = 1, this.renderer = e.renderer, this.meshCallback = e.meshCallback, this.loadOutsideView = e.loadOutsideView, this.cameraOnLoad = e.cameraOnLoad, this.parentTile = e.parentTile, this.occlusionCullingService = e.occlusionCullingService, this.static = e.static, this.occlusionCullingService && (this.color = new E.Color(), this.color.setHex(16777215 * Math.random()), this.colorID = E.MathUtils.clamp(255 * a.color.r, 0, 255) << 16 ^ E.MathUtils.clamp(255 * a.color.g, 0, 255) << 8 ^ E.MathUtils.clamp(255 * a.color.b, 0, 255)), this.static && (this.matrixAutoUpdate = !1, this.matrixWorldAutoUpdate = !1), this.childrenTiles = [], this.meshContent = [], this.tileContent, this.refine, this.rootPath, this.geometricError, this.boundingVolume, this.json, this.materialVisibility = !1, this.level = e.level ? e.level : 0, this.hasMeshContent = 0, this.hasUnloadedJSONContent = 0, this.centerModel = e.centerModel, this.abortController = new AbortController(), this.onLoadCallback = e.onLoadCallback, e.json) a._setup(e);
|
|
3374
3404
|
else if (e.url) {
|
|
3375
3405
|
var t = e.url;
|
|
3376
3406
|
if (a.queryParams) {
|
|
@@ -3406,25 +3436,25 @@ class Vt extends m.Object3D {
|
|
|
3406
3436
|
}
|
|
3407
3437
|
async _setup(e) {
|
|
3408
3438
|
const a = this;
|
|
3409
|
-
if (e.json.extensionsRequired && e.json.extensionsRequired.includes("JDULTRA_gaussian_splats") && (a.splatsMesh = new
|
|
3410
|
-
let A = new
|
|
3439
|
+
if (e.json.extensionsRequired && e.json.extensionsRequired.includes("JDULTRA_gaussian_splats") && (a.splatsMesh = new Hi(a.tileLoader.renderer), this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius), this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier), a.add(a.splatsMesh)), e.json.root ? (a.json = e.json.root, a.json.refine || (a.json.refine = e.json.refine), a.json.geometricError || (a.json.geometricError = e.json.geometricError), a.json.transform || (a.json.transform = e.json.transform), a.json.boundingVolume || (a.json.boundingVolume = e.json.boundingVolume)) : a.json = e.json, a.json.children || (a.json.getChildren ? a.json.children = await a.json.getChildren() : a.json.children = []), a.rootPath = e.json.rootPath ? e.json.rootPath : e.rootPath, a.json.refine ? a.refine = a.json.refine : a.refine = e.parentRefine, a.json.geometricError ? a.geometricError = a.json.geometricError : a.geometricError = e.parentGeometricError, a.json.transform) {
|
|
3440
|
+
let A = new E.Matrix4();
|
|
3411
3441
|
A.elements = a.json.transform, a.applyMatrix4(A);
|
|
3412
3442
|
}
|
|
3413
3443
|
if (a.json.boundingVolume) if (a.json.boundingVolume.box) a.boundingVolume = new se(a.json.boundingVolume.box);
|
|
3414
3444
|
else if (a.json.boundingVolume.region) {
|
|
3415
3445
|
const A = a.json.boundingVolume.region;
|
|
3416
|
-
a._transformWGS84ToCartesian(A[0], A[1], A[4], ce), a._transformWGS84ToCartesian(A[2], A[3], A[5],
|
|
3446
|
+
a._transformWGS84ToCartesian(A[0], A[1], A[4], ce), a._transformWGS84ToCartesian(A[2], A[3], A[5], we), ce.lerp(we, 0.5), a.boundingVolume = new E.Sphere(new E.Vector3(ce.x, ce.y, ce.z), ce.distanceTo(we));
|
|
3417
3447
|
} else if (a.json.boundingVolume.sphere) {
|
|
3418
3448
|
const A = a.json.boundingVolume.sphere;
|
|
3419
|
-
a.boundingVolume = new
|
|
3449
|
+
a.boundingVolume = new E.Sphere(new E.Vector3(A[0], A[1], A[2]), A[3]);
|
|
3420
3450
|
} else a.boundingVolume = e.parentBoundingVolume;
|
|
3421
3451
|
else a.boundingVolume = e.parentBoundingVolume;
|
|
3422
3452
|
function t(A) {
|
|
3423
3453
|
A.uri && A.uri.includes("json") || A.url && A.url.includes("json") ? a.hasUnloadedJSONContent++ : a.hasMeshContent++;
|
|
3424
3454
|
}
|
|
3425
|
-
if (a.json.content ? (t(a.json.content), a.hasMeshContent == 0 && (a.level = Math.max(0, a.parentTile ? a.parentTile.level + 0.01 : 0)), a.loadingStrategy === "IMMEDIATE" ? a._load(!0, !1) : a._load()) : a.json.contents && (a.json.contents.forEach((A) => t(A)), a.hasMeshContent == 0 && (a.level = Math.max(0, a.parentTile ? a.parentTile.level + 0.01 : 0)), a.loadingStrategy === "IMMEDIATE" ? a._load(!0, !1) : a._load()), a.centerModel && (
|
|
3455
|
+
if (a.json.content ? (t(a.json.content), a.hasMeshContent == 0 && (a.level = Math.max(0, a.parentTile ? a.parentTile.level + 0.01 : 0)), a.loadingStrategy === "IMMEDIATE" ? a._load(!0, !1) : a._load()) : a.json.contents && (a.json.contents.forEach((A) => t(A)), a.hasMeshContent == 0 && (a.level = Math.max(0, a.parentTile ? a.parentTile.level + 0.01 : 0)), a.loadingStrategy === "IMMEDIATE" ? a._load(!0, !1) : a._load()), a.centerModel && (we.copy(a.boundingVolume.center), this.json.boundingVolume.region && (this._transformWGS84ToCartesian(0.5 * (this.json.boundingVolume.region[0] + this.json.boundingVolume.region[2]), 0.5 * (this.json.boundingVolume.region[1] + this.json.boundingVolume.region[3]), 0.5 * (this.json.boundingVolume.region[4] + this.json.boundingVolume.region[5]), ce), ht.setFromUnitVectors(ce.normalize(), Ji.normalize()), a.applyQuaternion(ht)), we.applyMatrix4(a.matrix), a.position.sub(we), a.updateMatrices()), e.onLoadCallback && a.onLoadCallback(a), a.isSetup = !0, a.level > 0 && a.drawBoundingVolume && (a.bbox && console.log("double setup"), this.boundingVolume.aabb)) {
|
|
3426
3456
|
let A = this.boundingVolume.aabb.clone();
|
|
3427
|
-
A.applyMatrix4(this.matrixWorld), a.bbox = new
|
|
3457
|
+
A.applyMatrix4(this.matrixWorld), a.bbox = new E.Box3Helper(A, new E.Color(Math.random(), Math.random(), Math.random())), a.add(a.bbox), a.bbox.material.visible = !1;
|
|
3428
3458
|
}
|
|
3429
3459
|
}
|
|
3430
3460
|
_assembleURL(e, a) {
|
|
@@ -3456,11 +3486,11 @@ class Vt extends m.Object3D {
|
|
|
3456
3486
|
async function A(i, s, r, c) {
|
|
3457
3487
|
let n;
|
|
3458
3488
|
i.uri ? n = i.uri : i.url && (n = i.url);
|
|
3459
|
-
const
|
|
3460
|
-
if (
|
|
3461
|
-
var
|
|
3462
|
-
for (let l in t.queryParams) t.queryParams.hasOwnProperty(l) && (
|
|
3463
|
-
n.includes("?") ? n +=
|
|
3489
|
+
const b = /^(?:http|https|ftp|tcp|udp):\/\/\S+/;
|
|
3490
|
+
if (b.test(t.rootPath) ? b.test(n) || (n = t._assembleURL(t.rootPath, n)) : be.isAbsolute(t.rootPath) && (n = t.rootPath + be.sep + n), n = t._extractQueryParams(n, t.queryParams), t.queryParams) {
|
|
3491
|
+
var d = "";
|
|
3492
|
+
for (let l in t.queryParams) t.queryParams.hasOwnProperty(l) && (d += "&" + l + "=" + t.queryParams[l]);
|
|
3493
|
+
n.includes("?") ? n += d : n += "?" + d.substring(1);
|
|
3464
3494
|
}
|
|
3465
3495
|
if (n) if (c && (n.includes(".b3dm") || n.includes(".glb") || n.includes(".gltf"))) {
|
|
3466
3496
|
t.contentURL.push(n);
|
|
@@ -3472,7 +3502,7 @@ class Vt extends m.Object3D {
|
|
|
3472
3502
|
if ((g.isMesh || g.isPoints) && g.layers.disable(0), g.isMesh && t.occlusionCullingService) {
|
|
3473
3503
|
const h = g.geometry.attributes.position, f = [];
|
|
3474
3504
|
for (let I = 0; I < h.count; I++) f.push(t.color.r, t.color.g, t.color.b);
|
|
3475
|
-
g.geometry.setAttribute("color", new
|
|
3505
|
+
g.geometry.setAttribute("color", new E.Float32BufferAttribute(f, 3));
|
|
3476
3506
|
}
|
|
3477
3507
|
}), t.add(l), t.updateMatrices()));
|
|
3478
3508
|
}, t.cameraOnLoad ? () => {
|
|
@@ -3524,7 +3554,7 @@ class Vt extends m.Object3D {
|
|
|
3524
3554
|
let t = !1;
|
|
3525
3555
|
if (this.boundingVolume instanceof se) t = this.boundingVolume.intersectsRay(Ye);
|
|
3526
3556
|
else {
|
|
3527
|
-
if (!(this.boundingVolume instanceof
|
|
3557
|
+
if (!(this.boundingVolume instanceof E.Sphere)) return !1;
|
|
3528
3558
|
t = ray.intersectsSphere(this.boundingVolume);
|
|
3529
3559
|
}
|
|
3530
3560
|
return t && this.materialVisibility && this.splatsReady && (Xe.length = 0, this.meshContent.forEach((A) => {
|
|
@@ -3536,8 +3566,8 @@ class Vt extends m.Object3D {
|
|
|
3536
3566
|
return super.raycast(e, a);
|
|
3537
3567
|
}
|
|
3538
3568
|
update(e) {
|
|
3539
|
-
const a = new
|
|
3540
|
-
a.setFromProjectionMatrix(new
|
|
3569
|
+
const a = new E.Frustum();
|
|
3570
|
+
a.setFromProjectionMatrix(new E.Matrix4().multiplyMatrices(e.projectionMatrix, e.matrixWorldInverse));
|
|
3541
3571
|
let t = [0], A = [0], i = [0], s = [0];
|
|
3542
3572
|
return this.refine == "REPLACE" ? this.loadingStrategy === "IMMEDIATE" ? (this._updateImmediate(e, a), this._statsImmediate(i, t, s, A)) : (this._update(e, a), this._stats(i, t, s, A)) : (this._update(e, a), this._stats(i, t, s, A)), t > 0 && (s[0] /= t[0]), this.splatsMesh && (Ca.copy(e.position), We.copy(this.matrixWorld).invert(), Ca.applyMatrix4(We), this.splatsMesh.sort(Ca)), { numTilesLoaded: t[0], numTilesRendered: A[0], maxLOD: i[0], percentageLoaded: s[0] };
|
|
3543
3573
|
}
|
|
@@ -3713,10 +3743,10 @@ class Vt extends m.Object3D {
|
|
|
3713
3743
|
_calculateUpdateMetric(e, a) {
|
|
3714
3744
|
let t = 0;
|
|
3715
3745
|
if (this.boundingVolume instanceof se) {
|
|
3716
|
-
if (
|
|
3717
|
-
t = Math.max(0,
|
|
3746
|
+
if (ue.copy(this.boundingVolume), ue.applyMatrix4(this.matrixWorld), !ue.inFrustum(a)) return -1;
|
|
3747
|
+
t = Math.max(0, ue.distanceToPoint(e.position) - e.near);
|
|
3718
3748
|
} else {
|
|
3719
|
-
if (!(this.boundingVolume instanceof
|
|
3749
|
+
if (!(this.boundingVolume instanceof E.Sphere)) return console.error("unsupported shape"), -1;
|
|
3720
3750
|
if (te.copy(this.boundingVolume), te.applyMatrix4(this.matrixWorld), !a.intersectsSphere(te)) return -1;
|
|
3721
3751
|
t = Math.max(0, e.position.distanceTo(te.center) - te.radius - e.near);
|
|
3722
3752
|
}
|
|
@@ -3741,7 +3771,7 @@ class Vt extends m.Object3D {
|
|
|
3741
3771
|
}), a;
|
|
3742
3772
|
}
|
|
3743
3773
|
_calculateDistanceToCamera(e) {
|
|
3744
|
-
return this.boundingVolume instanceof se ? (
|
|
3774
|
+
return this.boundingVolume instanceof se ? (ue.copy(this.boundingVolume), ue.applyMatrix4(this.matrixWorld), Math.max(0, ue.distanceToPoint(e.position))) : this.boundingVolume instanceof E.Sphere ? (te.copy(this.boundingVolume), te.applyMatrix4(this.matrixWorld), Math.max(0, e.position.distanceTo(te.center) - te.radius)) : (console.error("unsupported shape"), -1);
|
|
3745
3775
|
}
|
|
3746
3776
|
setGeometricErrorMultiplier(e) {
|
|
3747
3777
|
this.geometricErrorMultiplier = e, this.splatsReady = !0, this.childrenTiles.forEach((a) => a.setGeometricErrorMultiplier(e));
|
|
@@ -3750,8 +3780,8 @@ class Vt extends m.Object3D {
|
|
|
3750
3780
|
this.distanceBias = e, this.childrenTiles.forEach((a) => a.setDistanceBias(e));
|
|
3751
3781
|
}
|
|
3752
3782
|
_transformWGS84ToCartesian(e, a, t, A) {
|
|
3753
|
-
const i = 6378137 / Math.sqrt(1 - 0.006694384442042 * Math.pow(Math.sin(a), 2)), s = Math.cos(a), r = Math.cos(e), c = Math.sin(a), n = i + t,
|
|
3754
|
-
A.set(
|
|
3783
|
+
const i = 6378137 / Math.sqrt(1 - 0.006694384442042 * Math.pow(Math.sin(a), 2)), s = Math.cos(a), r = Math.cos(e), c = Math.sin(a), n = i + t, b = n * s * r, d = n * s * Math.sin(e), l = (0.993305615557957 * i + t) * c;
|
|
3784
|
+
A.set(b, d, l);
|
|
3755
3785
|
}
|
|
3756
3786
|
}
|
|
3757
3787
|
function gt(o) {
|
|
@@ -3762,14 +3792,14 @@ function gt(o) {
|
|
|
3762
3792
|
}
|
|
3763
3793
|
function Ba() {
|
|
3764
3794
|
W || ((W = document.createElement("div")).style.position = "fixed", W.style.bottom = "20px", W.style.left = "20px", W.style.color = "white", W.style.textShadow = "2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000", W.style.padding = "10px", W.style.backgroundColor = "rgba(0, 0, 0, 0.1)", document.body.appendChild(W));
|
|
3765
|
-
const o =
|
|
3795
|
+
const o = Ki();
|
|
3766
3796
|
let e = "";
|
|
3767
3797
|
o.forEach((a) => {
|
|
3768
3798
|
e += a + ", ";
|
|
3769
3799
|
}), e = e.slice(0, -2), W.textContent = e;
|
|
3770
3800
|
}
|
|
3771
|
-
const N = new
|
|
3772
|
-
class Ga extends
|
|
3801
|
+
const N = new E.Sphere(new E.Vector3(0, 0, 0), 1), de = new E.Vector3(0, 0, 0), ma = new E.Vector3(0, 0, 0), zi = new E.Vector3(0, 1, 0), Ea = new E.Vector2(), ft = new E.Quaternion(), ut = new E.Matrix4();
|
|
3802
|
+
class Ga extends E.Object3D {
|
|
3773
3803
|
constructor(e) {
|
|
3774
3804
|
super();
|
|
3775
3805
|
const a = this;
|
|
@@ -3791,22 +3821,22 @@ class Ga extends m.Object3D {
|
|
|
3791
3821
|
async setup(e) {
|
|
3792
3822
|
const a = this;
|
|
3793
3823
|
e.json.root ? (a.json = e.json.root, !a.json.children && a.json.getChildren && (a.json.children = await a.json.getChildren()), a.jsonChildren = a.json.children, a.json.refinement || (a.json.refinement = e.json.refinement), a.json.geometricError || (a.json.geometricError = e.json.geometricError), a.json.transform || (a.json.transform = e.json.transform), a.json.boundingVolume || (a.json.boundingVolume = e.json.boundingVolume)) : (a.json = e.json, !a.json.children && a.json.getChildren && (a.json.children = await a.json.getChildren(), a.jsonChildren = a.json.children)), a.rootPath = e.json.rootPath ? e.json.rootPath : e.rootPath, a.json.refinement ? a.refinement = a.json.refinement : a.refinement = e.parentRefinement, a.json.geometricError ? a.geometricError = a.json.geometricError : a.geometricError = e.parentGeometricError;
|
|
3794
|
-
let t = new
|
|
3824
|
+
let t = new E.Matrix4();
|
|
3795
3825
|
if (a.json.transform && !a.centerModel && (t.elements = a.json.transform), a.applyMatrix4(t), a.parentTile && a.parentTile.matrix && (a.matrix.premultiply(a.parentTile.matrix), a.matrix.decompose(a.position, a.quaternion, a.scale)), a.matrixWorldNeedsUpdate = !0, a.updateWorldMatrix(!0, !0), a.json.boundingVolume) if (a.json.boundingVolume.box) a.boundingVolume = new se(a.json.boundingVolume.box);
|
|
3796
3826
|
else if (a.json.boundingVolume.region) {
|
|
3797
3827
|
const i = a.json.boundingVolume.region;
|
|
3798
|
-
a.transformWGS84ToCartesian(i[0], i[1], i[4], de), a.transformWGS84ToCartesian(i[2], i[3], i[5],
|
|
3828
|
+
a.transformWGS84ToCartesian(i[0], i[1], i[4], de), a.transformWGS84ToCartesian(i[2], i[3], i[5], ma), de.lerp(ma, 0.5), a.boundingVolume = new E.Sphere(new E.Vector3(de.x, de.y, de.z), de.distanceTo(ma));
|
|
3799
3829
|
} else if (a.json.boundingVolume.sphere) {
|
|
3800
3830
|
const i = a.json.boundingVolume.sphere;
|
|
3801
|
-
a.boundingVolume = new
|
|
3831
|
+
a.boundingVolume = new E.Sphere(new E.Vector3(i[0], i[1], i[2]), i[3]);
|
|
3802
3832
|
} else a.boundingVolume = e.parentBoundingVolume;
|
|
3803
3833
|
else a.boundingVolume = e.parentBoundingVolume;
|
|
3804
3834
|
function A(i) {
|
|
3805
3835
|
i.uri && i.uri.includes("json") || i.url && i.url.includes("json") ? a.hasUnloadedJSONContent++ : a.hasMeshContent++;
|
|
3806
3836
|
}
|
|
3807
3837
|
if (a.json.content ? (A(a.json.content), a.load()) : a.json.contents && (a.json.contents.forEach((i) => A(i)), a.load()), a.centerModel) {
|
|
3808
|
-
const i = new
|
|
3809
|
-
a.boundingVolume instanceof se ? i.copy(a.boundingVolume.sphere) : a.boundingVolume instanceof
|
|
3838
|
+
const i = new E.Sphere();
|
|
3839
|
+
a.boundingVolume instanceof se ? i.copy(a.boundingVolume.sphere) : a.boundingVolume instanceof E.Sphere && i.copy(a.boundingVolume), this.json.boundingVolume.region && (a.transformWGS84ToCartesian(0.5 * (a.json.boundingVolume.region[0] + a.json.boundingVolume.region[2]), 0.5 * (a.json.boundingVolume.region[1] + a.json.boundingVolume.region[3]), 0.5 * (a.json.boundingVolume.region[4] + a.json.boundingVolume.region[5]), de), ft.setFromUnitVectors(de.normalize(), zi.normalize()), a.master.applyQuaternion(ft), a.master.updateWorldMatrix(!1, !1)), ut.makeTranslation(-i.center.x * a.scale.x, -i.center.y * a.scale.y, -i.center.z * a.scale.z), a.master.matrix.multiply(ut), a.master.matrix.decompose(a.master.position, a.master.quaternion, a.master.scale);
|
|
3810
3840
|
}
|
|
3811
3841
|
a.isSetup = !0, e.onLoadCallback && e.onLoadCallback(a);
|
|
3812
3842
|
}
|
|
@@ -3916,7 +3946,7 @@ class Ga extends m.Object3D {
|
|
|
3916
3946
|
if (this.boundingVolume instanceof se) {
|
|
3917
3947
|
if (N.copy(this.boundingVolume.sphere), N.applyMatrix4(this.matrixWorld), !a.intersectsSphere(N)) return -1;
|
|
3918
3948
|
} else {
|
|
3919
|
-
if (!(this.boundingVolume instanceof
|
|
3949
|
+
if (!(this.boundingVolume instanceof E.Sphere)) return console.error("unsupported shape"), -1;
|
|
3920
3950
|
if (N.copy(this.boundingVolume), N.applyMatrix4(this.matrixWorld), !a.intersectsSphere(N)) return -1;
|
|
3921
3951
|
}
|
|
3922
3952
|
let t = Math.max(0, e.position.distanceTo(N.center) - N.radius);
|
|
@@ -3941,19 +3971,19 @@ class Ga extends m.Object3D {
|
|
|
3941
3971
|
}), a;
|
|
3942
3972
|
}
|
|
3943
3973
|
calculateDistanceToCamera(e) {
|
|
3944
|
-
return this.boundingVolume instanceof se ? (N.copy(this.boundingVolume.sphere), N.applyMatrix4(this.matrixWorld)) : this.boundingVolume instanceof
|
|
3974
|
+
return this.boundingVolume instanceof se ? (N.copy(this.boundingVolume.sphere), N.applyMatrix4(this.matrixWorld)) : this.boundingVolume instanceof E.Sphere ? (N.copy(this.boundingVolume), N.applyMatrix4(this.matrixWorld)) : console.error("unsupported shape"), Math.max(0, e.position.distanceTo(N.center) - N.radius);
|
|
3945
3975
|
}
|
|
3946
3976
|
getWorldMatrix() {
|
|
3947
3977
|
return this.matrixWorld;
|
|
3948
3978
|
}
|
|
3949
3979
|
transformWGS84ToCartesian(e, a, t, A) {
|
|
3950
|
-
const i = 6378137 / Math.sqrt(1 - 0.006694384442042 * Math.pow(Math.sin(a), 2)), s = Math.cos(a), r = Math.cos(e), c = Math.sin(a), n = i + t,
|
|
3951
|
-
A.set(
|
|
3980
|
+
const i = 6378137 / Math.sqrt(1 - 0.006694384442042 * Math.pow(Math.sin(a), 2)), s = Math.cos(a), r = Math.cos(e), c = Math.sin(a), n = i + t, b = n * s * r, d = n * s * Math.sin(e), l = (0.993305615557957 * i + t) * c;
|
|
3981
|
+
A.set(b, d, l);
|
|
3952
3982
|
}
|
|
3953
3983
|
}
|
|
3954
|
-
class
|
|
3984
|
+
class es extends E.Object3D {
|
|
3955
3985
|
constructor(e) {
|
|
3956
|
-
super(), e.master = this, e.domWidth && e.domHeight ? this.rendererSize = new
|
|
3986
|
+
super(), e.master = this, e.domWidth && e.domHeight ? this.rendererSize = new E.Vector2(e.domWidth, e.domHeight) : this.rendererSize = new E.Vector2(1e3, 1e3), this.renderer = e.renderer, this.distanceBias = Math.max(1e-4, e.distanceBias ? e.distanceBias : 1), this.geometricErrorMultiplier = e.geometricErrorMultiplier ? e.geometricErrorMultiplier : 1, this.tileset = new Ga(e), e.static && (this.matrixAutoUpdate = !1), this.tileLoader = e.tileLoader;
|
|
3957
3987
|
}
|
|
3958
3988
|
_renderSize(e) {
|
|
3959
3989
|
this.renderer ? this.renderer.getDrawingBufferSize(e) : e.copy(this.rendererSize);
|
|
@@ -3964,18 +3994,18 @@ class $i extends m.Object3D {
|
|
|
3964
3994
|
update(e, a) {
|
|
3965
3995
|
if (a) this.tileset._update(e, a);
|
|
3966
3996
|
else {
|
|
3967
|
-
const t = new
|
|
3968
|
-
t.setFromProjectionMatrix(new
|
|
3997
|
+
const t = new E.Frustum();
|
|
3998
|
+
t.setFromProjectionMatrix(new E.Matrix4().multiplyMatrices(e.projectionMatrix, e.matrixWorldInverse)), this.tileset._update(e, t);
|
|
3969
3999
|
}
|
|
3970
4000
|
}
|
|
3971
4001
|
setGeometricErrorMultiplier(e) {
|
|
3972
4002
|
this.geometricErrorMultiplier = e || 1;
|
|
3973
4003
|
}
|
|
3974
4004
|
}
|
|
3975
|
-
class
|
|
4005
|
+
class Vi {
|
|
3976
4006
|
constructor(e) {
|
|
3977
4007
|
const a = this;
|
|
3978
|
-
a.scene = e, a.instancedTiles = [], a.instancedMesh, a.reuseableMatrix = new
|
|
4008
|
+
a.scene = e, a.instancedTiles = [], a.instancedMesh, a.reuseableMatrix = new E.Matrix4();
|
|
3979
4009
|
}
|
|
3980
4010
|
addInstance(e) {
|
|
3981
4011
|
const a = this;
|
|
@@ -3983,7 +4013,7 @@ class zi {
|
|
|
3983
4013
|
}
|
|
3984
4014
|
addToScene() {
|
|
3985
4015
|
const e = this;
|
|
3986
|
-
e.instancedMesh.setMatrixAt(0, new
|
|
4016
|
+
e.instancedMesh.setMatrixAt(0, new E.Matrix4()), e.instancedMesh.instanceMatrix.needsUpdate = !0, e.instancedMesh.count = 1, e.scene.add(e.instancedMesh), e.instancedMesh.onAfterRender = () => {
|
|
3987
4017
|
delete e.instancedMesh.onAfterRender, e.instancedMesh.displayedOnce = !0;
|
|
3988
4018
|
};
|
|
3989
4019
|
}
|
|
@@ -4013,7 +4043,7 @@ class zi {
|
|
|
4013
4043
|
}), e.instancedMesh.dispose(), !0);
|
|
4014
4044
|
}
|
|
4015
4045
|
}
|
|
4016
|
-
class
|
|
4046
|
+
class Yi {
|
|
4017
4047
|
constructor() {
|
|
4018
4048
|
const e = this;
|
|
4019
4049
|
e.count = 0, e.json, e.instancedTiles = [];
|
|
@@ -4037,10 +4067,10 @@ class Vi {
|
|
|
4037
4067
|
return !(!this.json || this.instancedTiles.length != 0);
|
|
4038
4068
|
}
|
|
4039
4069
|
}
|
|
4040
|
-
let
|
|
4041
|
-
class
|
|
4070
|
+
let Ie = 0;
|
|
4071
|
+
class as {
|
|
4042
4072
|
constructor(e, a) {
|
|
4043
|
-
if (this.zUpToYUpMatrix = new
|
|
4073
|
+
if (this.zUpToYUpMatrix = new E.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1), this.maxCachedItems = 100, this.maxInstances = 1, this.proxy = a.proxy, a && (this.meshCallback = a.meshCallback, this.pointsCallback = a.pointsCallback, a.maxCachedItems && (this.maxCachedItems = a.maxCachedItems), a.maxInstances && (this.maxInstances = a.maxInstances)), this.gltfLoader = new Dt(), a && a.dracoLoader) this.gltfLoader.setDRACOLoader(a.dracoLoader), this.hasDracoLoader = !0;
|
|
4044
4074
|
else {
|
|
4045
4075
|
const t = new Rt();
|
|
4046
4076
|
t.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.4.3/"), this.gltfLoader.setDRACOLoader(t), this.gltfLoader.hasDracoLoader = !0;
|
|
@@ -4056,14 +4086,14 @@ class es {
|
|
|
4056
4086
|
const e = this;
|
|
4057
4087
|
e._checkSize(), e.cache._data.forEach((a) => {
|
|
4058
4088
|
a.update();
|
|
4059
|
-
}),
|
|
4089
|
+
}), Ie < 8 && e._download(), e._loadBatch();
|
|
4060
4090
|
}
|
|
4061
4091
|
_download() {
|
|
4062
4092
|
const e = this;
|
|
4063
4093
|
if (e.nextDownloads.length != 0 || (e._getNextDownloads(), e.nextDownloads.length != 0)) for (; e.nextDownloads.length > 0; ) {
|
|
4064
4094
|
const t = e.nextDownloads.shift();
|
|
4065
4095
|
if (t) {
|
|
4066
|
-
if (t.path.includes(".b3dm") && (a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path),
|
|
4096
|
+
if (t.path.includes(".b3dm") && (a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path), Ie++, a().then((A) => {
|
|
4067
4097
|
if (!A.ok) throw console.error("could not load tile with path : " + t.path), new Error(`couldn't load "${t.path}". Request failed with status ${A.status} : ${A.statusText}`);
|
|
4068
4098
|
return A.arrayBuffer();
|
|
4069
4099
|
}).then((A) => this.b3dmDecoder.parseB3DMInstanced(A, (i) => {
|
|
@@ -4071,17 +4101,17 @@ class es {
|
|
|
4071
4101
|
}, e.maxInstances, t.sceneZupToYup, t.meshZupToYup)).then((A) => {
|
|
4072
4102
|
A.frustumCulled = !1, t.tile.setObject(A), e.ready.unshift(t);
|
|
4073
4103
|
}).catch((A) => console.error(A)).finally(() => {
|
|
4074
|
-
|
|
4075
|
-
})), t.path.includes(".glb") || t.path.includes(".gltf")) a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path),
|
|
4104
|
+
Ie--;
|
|
4105
|
+
})), t.path.includes(".glb") || t.path.includes(".gltf")) a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path), Ie++, a().then((A) => {
|
|
4076
4106
|
if (!A.ok) throw new Error("missing content");
|
|
4077
4107
|
return A.arrayBuffer();
|
|
4078
4108
|
}).then(async (A) => {
|
|
4079
|
-
await
|
|
4109
|
+
await Wi(this.gltfLoader), this.gltfLoader.parse(A, null, (i) => {
|
|
4080
4110
|
let s;
|
|
4081
4111
|
i.scene.asset = i.asset, t.sceneZupToYup && i.scene.applyMatrix4(this.zUpToYUpMatrix), i.scene.traverse((r) => {
|
|
4082
4112
|
r.geometricError = t.geometricError, r.isMesh && (t.meshZupToYup && r.applyMatrix4(this.zUpToYUpMatrix), e.meshCallback && e.meshCallback(r, r.geometricError)), r.isPoints && console.error("instanced point cloud is not supported");
|
|
4083
4113
|
}), i.scene.updateWorldMatrix(!1, !0), i.scene.traverse((r) => {
|
|
4084
|
-
r.isMesh && (s = new
|
|
4114
|
+
r.isMesh && (s = new E.InstancedMesh(r.geometry, r.material, e.maxInstances), s.baseMatrix = r.matrixWorld);
|
|
4085
4115
|
}), e.ready.unshift(t), s ? (s.frustumCulled = !1, t.tile.setObject(s)) : i.scene.traverse((r) => {
|
|
4086
4116
|
r.dispose && r.dispose(), r.material && r.material.dispose();
|
|
4087
4117
|
});
|
|
@@ -4089,17 +4119,17 @@ class es {
|
|
|
4089
4119
|
}, (A) => {
|
|
4090
4120
|
console.error("could not load tile : " + t.path);
|
|
4091
4121
|
}).finally(() => {
|
|
4092
|
-
|
|
4122
|
+
Ie--;
|
|
4093
4123
|
});
|
|
4094
4124
|
else if (t.path.includes(".json")) {
|
|
4095
4125
|
var a;
|
|
4096
|
-
a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path),
|
|
4126
|
+
a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path), Ie++, a().then((A) => {
|
|
4097
4127
|
if (!A.ok) throw console.error("could not load tile with path : " + t.path), new Error(`couldn't load "${t.path}". Request failed with status ${A.status} : ${A.statusText}`);
|
|
4098
4128
|
return A.json();
|
|
4099
4129
|
}).then((A) => La(A, t.path)).then((A) => {
|
|
4100
4130
|
t.tile.setObject(A, t.path), e.ready.unshift(t);
|
|
4101
4131
|
}).catch((A) => console.error(A)).finally(() => {
|
|
4102
|
-
|
|
4132
|
+
Ie--;
|
|
4103
4133
|
});
|
|
4104
4134
|
}
|
|
4105
4135
|
}
|
|
@@ -4124,30 +4154,30 @@ class es {
|
|
|
4124
4154
|
}
|
|
4125
4155
|
}
|
|
4126
4156
|
}
|
|
4127
|
-
get(e, a, t, A, i, s, r, c, n,
|
|
4128
|
-
const
|
|
4129
|
-
for (var f = h.split("/"), I = [], u = 0,
|
|
4130
|
-
var
|
|
4131
|
-
|
|
4157
|
+
get(e, a, t, A, i, s, r, c, n, b) {
|
|
4158
|
+
const d = this, l = function(h) {
|
|
4159
|
+
for (var f = h.split("/"), I = [], u = 0, p = 0; p < f.length; p++) {
|
|
4160
|
+
var B = f[p];
|
|
4161
|
+
B !== "." && B !== "" && B !== ".." ? I[u++] = B : B === ".." && u > 0 && u--;
|
|
4132
4162
|
}
|
|
4133
4163
|
if (u === 0) return "/";
|
|
4134
|
-
var
|
|
4135
|
-
for (
|
|
4136
|
-
return
|
|
4164
|
+
var C = "";
|
|
4165
|
+
for (p = 0; p < u; p++) C += "/" + I[p];
|
|
4166
|
+
return C;
|
|
4137
4167
|
}(a);
|
|
4138
4168
|
if (!(a.includes(".b3dm") || a.includes(".json") || a.includes(".glb") || a.includes(".gltf"))) return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");
|
|
4139
|
-
const g =
|
|
4169
|
+
const g = d.cache.get(l);
|
|
4140
4170
|
if (g) g.addInstance(A);
|
|
4141
4171
|
else if (a.includes(".b3dm") || a.includes(".glb") || a.includes(".gltf")) {
|
|
4142
|
-
const h = new
|
|
4143
|
-
h.addInstance(A),
|
|
4172
|
+
const h = new Vi(d.scene);
|
|
4173
|
+
h.addInstance(A), d.cache.put(l, h);
|
|
4144
4174
|
const f = new AbortController();
|
|
4145
4175
|
e.signal.addEventListener("abort", () => {
|
|
4146
4176
|
h.getCount() == 0 && f.abort();
|
|
4147
|
-
}), this.downloads.push({ abortController: f, tile: h, key: l, path: a, distanceFunction: i, getSiblings: s, level: r, uuid: t, sceneZupToYup: c, meshZupToYup: n, geometricError:
|
|
4177
|
+
}), this.downloads.push({ abortController: f, tile: h, key: l, path: a, distanceFunction: i, getSiblings: s, level: r, uuid: t, sceneZupToYup: c, meshZupToYup: n, geometricError: b, shouldDoDownload: () => !0 });
|
|
4148
4178
|
} else if (a.includes(".json")) {
|
|
4149
|
-
const h = new
|
|
4150
|
-
h.addInstance(A),
|
|
4179
|
+
const h = new Yi();
|
|
4180
|
+
h.addInstance(A), d.cache.put(l, h);
|
|
4151
4181
|
const f = new AbortController();
|
|
4152
4182
|
e.signal.addEventListener("abort", () => {
|
|
4153
4183
|
h.getCount() == 0 && f.abort();
|
|
@@ -4183,7 +4213,7 @@ class es {
|
|
|
4183
4213
|
}
|
|
4184
4214
|
}
|
|
4185
4215
|
}
|
|
4186
|
-
async function
|
|
4216
|
+
async function Wi(o) {
|
|
4187
4217
|
return new Promise((e) => {
|
|
4188
4218
|
const a = setInterval(() => {
|
|
4189
4219
|
o.hasDracoLoader && !o.dracoLoader || o.hasKTX2Loader && !o.ktx2Loader || (clearInterval(a), e());
|
|
@@ -4191,11 +4221,13 @@ async function Yi(o) {
|
|
|
4191
4221
|
});
|
|
4192
4222
|
}
|
|
4193
4223
|
export {
|
|
4194
|
-
|
|
4195
|
-
|
|
4224
|
+
es as InstancedOGC3DTile,
|
|
4225
|
+
as as InstancedTileLoader,
|
|
4196
4226
|
Vt as OGC3DTile,
|
|
4197
|
-
|
|
4198
|
-
|
|
4199
|
-
|
|
4227
|
+
$i as OcclusionCullingService,
|
|
4228
|
+
Ni as TileLoader,
|
|
4229
|
+
Ki as getOGC3DTilesCopyrightInfo,
|
|
4230
|
+
Oi as splatsFragmentShader,
|
|
4231
|
+
qi as splatsVertexShader
|
|
4200
4232
|
};
|
|
4201
4233
|
//# sourceMappingURL=threedtiles.es.js.map
|